diff -Nru binaryen-91/.appveyor.yml binaryen-99/.appveyor.yml --- binaryen-91/.appveyor.yml 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/.appveyor.yml 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ ---- - -skip_branch_with_pr: true -image: Visual Studio 2017 - -init: - - set PATH=C:\Python27\Scripts;%PATH% # while python's bin is already in PATH, but pip.exe in Scripts\ dir isn't - - set PATH=C:\msys64\mingw64\bin;C:\msys64\usr\bin;%PATH% - -environment: - DEGREE_OF_PARALLELISM: 3 - matrix: - - GENERATOR: MSYS Makefiles - CONFIG: Release - PARALLEL_FLAG: -j - - GENERATOR: Visual Studio 15 2017 - CONFIG: Release - PARALLEL_FLAG: "/m:" - DEPLOY: 1 - ARCH: x86 - - GENERATOR: Visual Studio 15 2017 Win64 - CONFIG: Debug - PARALLEL_FLAG: "/m:" - - GENERATOR: Visual Studio 15 2017 Win64 - CONFIG: Release - PARALLEL_FLAG: "/m:" - DEPLOY: 1 - ARCH: x86_64 - -install: - - pip install flake8==3.4.1 - -before_build: - # Check the style of a subset of Python code until the other code is updated. - - flake8 ./scripts/ - -build_script: - # Request `libcmt.lib` is used so our released artifacts don't dynamically - # link to `msvcrt.dll` - - cmake . -DCMAKE_BUILD_TYPE=%CONFIG% -G "%GENERATOR%" -DMSVC_USE_LIBCMT=YES - - cmake --build . --config %CONFIG% -- %PARALLEL_FLAG%%DEGREE_OF_PARALLELISM% - -test_script: - - ctest --output-on-failure --timeout 10 -j 5 -C Release - -before_deploy: - - ps: | - $NAME = "binaryen-${env:APPVEYOR_REPO_TAG_NAME}-${env:ARCH}-windows" - Move-Item -Path bin -Destination $NAME - 7z a -ttar "${NAME}.tar" "${NAME}" - 7z a "${NAME}.tar.gz" "${NAME}.tar" - Push-AppveyorArtifact "${NAME}.tar.gz" - -deploy: - artifact: /.*\.tar.gz/ - auth_token: - secure: zM0Bcjy1JXOBuu2C32lY0vCxREu7ah+bYFUpwmuryw82+HgCjvq7ZMutAk34Lv9d - description: '' - on: - appveyor_repo_tag: true - DEPLOY: 1 - provider: GitHub diff -Nru binaryen-91/auto_update_tests.py binaryen-99/auto_update_tests.py --- binaryen-91/auto_update_tests.py 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/auto_update_tests.py 2021-01-07 20:01:06.000000000 +0000 @@ -15,192 +15,38 @@ # limitations under the License. import os -import shutil import subprocess import sys from collections import OrderedDict +from scripts.test import binaryenjs from scripts.test import lld from scripts.test import shared from scripts.test import support from scripts.test import wasm2js - - -def update_asm_js_tests(): - print('[ processing and updating testcases... ]\n') - for asm in shared.get_tests(shared.options.binaryen_test, ['.asm.js']): - basename = os.path.basename(asm) - for precise in [0, 1, 2]: - for opts in [1, 0]: - cmd = shared.ASM2WASM + [asm] - if 'threads' in basename: - cmd += ['--enable-threads'] - wasm = asm.replace('.asm.js', '.fromasm') - if not precise: - cmd += ['--trap-mode=allow', '--ignore-implicit-traps'] - wasm += '.imprecise' - elif precise == 2: - cmd += ['--trap-mode=clamp'] - wasm += '.clamp' - if not opts: - wasm += '.no-opts' - if precise: - cmd += ['-O0'] # test that -O0 does nothing - else: - cmd += ['-O'] - if 'debugInfo' in basename: - cmd += ['-g'] - if 'noffi' in basename: - cmd += ['--no-legalize-javascript-ffi'] - if precise and opts: - # test mem init importing - open('a.mem', 'wb').write(bytes(basename, 'utf-8')) - cmd += ['--mem-init=a.mem'] - if basename[0] == 'e': - cmd += ['--mem-base=1024'] - if '4GB' in basename: - cmd += ['--mem-max=4294967296'] - if 'i64' in basename or 'wasm-only' in basename or 'noffi' in basename: - cmd += ['--wasm-only'] - print(' '.join(cmd)) - actual = support.run_command(cmd) - with open(os.path.join(shared.options.binaryen_test, wasm), 'w') as o: - o.write(actual) - if 'debugInfo' in basename: - cmd += ['--source-map', os.path.join(shared.options.binaryen_test, wasm + '.map'), '-o', 'a.wasm'] - support.run_command(cmd) - - -def update_wasm_opt_tests(): - print('\n[ checking wasm-opt -o notation... ]\n') - wast = os.path.join(shared.options.binaryen_test, 'hello_world.wat') - cmd = shared.WASM_OPT + [wast, '-o', 'a.wast', '-S'] - support.run_command(cmd) - open(wast, 'w').write(open('a.wast').read()) - - print('\n[ checking wasm-opt parsing & printing... ]\n') - for t in shared.get_tests(shared.get_test_dir('print'), ['.wast']): - print('..', os.path.basename(t)) - wasm = t.replace('.wast', '') - cmd = shared.WASM_OPT + [t, '--print', '-all'] - print(' ', ' '.join(cmd)) - actual = subprocess.check_output(cmd) - print(cmd, actual) - with open(wasm + '.txt', 'wb') as o: - o.write(actual) - cmd = shared.WASM_OPT + [t, '--print-minified', '-all'] - print(' ', ' '.join(cmd)) - actual = subprocess.check_output(cmd) - with open(wasm + '.minified.txt', 'wb') as o: - o.write(actual) - - print('\n[ checking wasm-opt passes... ]\n') - for t in shared.get_tests(shared.get_test_dir('passes'), ['.wast', '.wasm']): - print('..', os.path.basename(t)) - binary = t.endswith('.wasm') - base = os.path.basename(t).replace('.wast', '').replace('.wasm', '') - passname = base - passes_file = os.path.join(shared.get_test_dir('passes'), passname + '.passes') - if os.path.exists(passes_file): - passname = open(passes_file).read().strip() - opts = [('--' + p if not p.startswith('O') and p != 'g' else '-' + p) for p in passname.split('_')] - actual = '' - for module, asserts in support.split_wast(t): - assert len(asserts) == 0 - support.write_wast('split.wast', module) - cmd = shared.WASM_OPT + opts + ['split.wast'] - if 'noprint' not in t: - cmd.append('--print') - actual += support.run_command(cmd) - with open(os.path.join(shared.options.binaryen_test, 'passes', base + ('.bin' if binary else '') + '.txt'), 'w') as o: - o.write(actual) - if 'emit-js-wrapper' in t: - with open('a.js') as i: - with open(t + '.js', 'w') as o: - o.write(i.read()) - if 'emit-spec-wrapper' in t: - with open('a.wat') as i: - with open(t + '.wat', 'w') as o: - o.write(i.read()) - - print('\n[ checking wasm-opt testcases... ]\n') - for t in shared.get_tests(shared.options.binaryen_test, ['.wast']): - print('..', os.path.basename(t)) - f = t + '.from-wast' - cmd = shared.WASM_OPT + [t, '--print', '-all'] - actual = support.run_command(cmd) - actual = actual.replace('printing before:\n', '') - open(f, 'w').write(actual) - - print('\n[ checking wasm-opt debugInfo read-write... ]\n') - for t in shared.get_tests(shared.options.binaryen_test, ['.fromasm']): - if 'debugInfo' not in t: - continue - print('..', os.path.basename(t)) - f = t + '.read-written' - support.run_command(shared.WASM_AS + [t, '--source-map=a.map', '-o', 'a.wasm', '-g']) - support.run_command(shared.WASM_OPT + ['a.wasm', '--input-source-map=a.map', '-o', 'b.wasm', '--output-source-map=b.map', '-g']) - actual = support.run_command(shared.WASM_DIS + ['b.wasm', '--source-map=b.map']) - open(f, 'w').write(actual) - - -def update_bin_fmt_tests(): - print('\n[ checking binary format testcases... ]\n') - for wast in shared.get_tests(shared.options.binaryen_test, ['.wast']): - for debug_info in [0, 1]: - cmd = shared.WASM_AS + [wast, '-o', 'a.wasm', '-all'] - if debug_info: - cmd += ['-g'] - print(' '.join(cmd)) - if os.path.exists('a.wasm'): - os.unlink('a.wasm') - subprocess.check_call(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - assert os.path.exists('a.wasm') - - cmd = shared.WASM_DIS + ['a.wasm', '-o', 'a.wast'] - print(' '.join(cmd)) - if os.path.exists('a.wast'): - os.unlink('a.wast') - subprocess.check_call(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - assert os.path.exists('a.wast') - actual = open('a.wast').read() - binary_file = wast + '.fromBinary' - if not debug_info: - binary_file += '.noDebugInfo' - with open(binary_file, 'w') as o: - o.write(actual) +from scripts.test import wasm_opt def update_example_tests(): print('\n[ checking example testcases... ]\n') - for t in shared.get_tests(shared.get_test_dir('example')): - basename = os.path.basename(t) + for src in shared.get_tests(shared.get_test_dir('example')): + basename = os.path.basename(src) output_file = os.path.join(shared.options.binaryen_bin, 'example') libdir = os.path.join(shared.BINARYEN_INSTALL_DIR, 'lib') cmd = ['-I' + os.path.join(shared.options.binaryen_root, 'src'), '-g', '-pthread', '-o', output_file] - if t.endswith('.txt'): - # check if there is a trace in the file, if so, we should build it - out = subprocess.Popen([os.path.join(shared.options.binaryen_root, 'scripts', 'clean_c_api_trace.py'), t], stdout=subprocess.PIPE).communicate()[0] - if len(out) == 0: - print(' (no trace in ', basename, ')') - continue - print(' (will check trace in ', basename, ')') - src = 'trace.cpp' - with open(src, 'wb') as o: - o.write(out) - expected = t + '.txt' - else: - src = t - expected = os.path.splitext(t)[0] + '.txt' if not src.endswith(('.c', '.cpp')): continue + expected = os.path.splitext(src)[0] + '.txt' + # windows + gcc will need some work + if shared.skip_if_on_windows('gcc'): + return # build the C file separately extra = [os.environ.get('CC') or 'gcc', src, '-c', '-o', 'example.o', '-I' + os.path.join(shared.options.binaryen_root, 'src'), '-g', '-L' + libdir, '-pthread'] print('build: ', ' '.join(extra)) if src.endswith('.cpp'): - extra += ['-std=c++14'] + extra += ['-std=c++' + str(shared.cxx_standard)] print(os.getcwd()) subprocess.check_call(extra) # Link against the binaryen C library DSO, using rpath @@ -209,7 +55,7 @@ if os.environ.get('COMPILER_FLAGS'): for f in os.environ.get('COMPILER_FLAGS').split(' '): cmd.append(f) - cmd = [os.environ.get('CXX') or 'g++', '-std=c++14'] + cmd + cmd = [os.environ.get('CXX') or 'g++', '-std=c++' + str(shared.cxx_standard)] + cmd try: print('link: ', ' '.join(cmd)) subprocess.check_call(cmd) @@ -221,9 +67,6 @@ o.write(actual) finally: os.remove(output_file) - if sys.platform == 'darwin': - # Also removes debug directory produced on Mac OS - shutil.rmtree(output_file + '.dSYM') def update_wasm_dis_tests(): @@ -238,38 +81,6 @@ open(t + '.fromBinary', 'w').write(actual) -def update_binaryen_js_tests(): - if not (shared.MOZJS or shared.NODEJS): - print('no vm to run binaryen.js tests') - return - - if not os.path.exists(shared.BINARYEN_JS): - print('no binaryen.js build to test') - return - - print('\n[ checking binaryen.js testcases... ]\n') - node_has_wasm = shared.NODEJS and support.node_has_webassembly(shared.NODEJS) - for s in shared.get_tests(shared.get_test_dir('binaryen.js'), ['.js']): - basename = os.path.basename(s) - print(basename) - f = open('a.js', 'w') - f.write(open(shared.BINARYEN_JS).read()) - test_src = open(s).read() - f.write(support.js_test_wrap().replace('%TEST%', test_src)) - f.close() - if shared.MOZJS or node_has_wasm or 'WebAssembly.' not in test_src: - cmd = [shared.MOZJS or shared.NODEJS, 'a.js'] - if 'fatal' not in basename: - out = support.run_command(cmd, stderr=subprocess.STDOUT) - else: - # expect an error - the specific error code will depend on the vm - out = support.run_command(cmd, stderr=subprocess.STDOUT, expected_status=None) - with open(s + '.txt', 'w') as o: - o.write(out) - else: - print('Skipping ' + basename + ' because WebAssembly might not be supported') - - def update_ctor_eval_tests(): print('\n[ checking wasm-ctor-eval... ]\n') for t in shared.get_tests(shared.get_test_dir('ctor-eval'), ['.wast', '.wasm']): @@ -299,8 +110,6 @@ def update_reduce_tests(): - if not shared.has_shell_timeout(): - return print('\n[ checking wasm-reduce ]\n') for t in shared.get_tests(shared.get_test_dir('reduce'), ['.wast']): print('..', os.path.basename(t)) @@ -321,33 +130,41 @@ expected = os.path.join(shared.get_test_dir('spec'), 'expected-output', os.path.basename(t) + '.log') if os.path.isfile(expected): stdout = support.run_command(cmd, stderr=subprocess.PIPE) + # filter out binaryen interpreter logging that the spec suite + # doesn't expect + filtered = [line for line in stdout.splitlines() if not line.startswith('[trap')] + stdout = '\n'.join(filtered) + '\n' with open(expected, 'w') as o: o.write(stdout) TEST_SUITES = OrderedDict([ - ('wasm-opt', update_wasm_opt_tests), - ('asm2wasm', update_asm_js_tests), + ('wasm-opt', wasm_opt.update_wasm_opt_tests), ('wasm-dis', update_wasm_dis_tests), ('example', update_example_tests), ('ctor-eval', update_ctor_eval_tests), ('wasm-metadce', update_metadce_tests), ('wasm-reduce', update_reduce_tests), ('spec', update_spec_tests), - ('binaryenjs', update_binaryen_js_tests), ('lld', lld.update_lld_tests), ('wasm2js', wasm2js.update_wasm2js_tests), - ('binfmt', update_bin_fmt_tests), + ('binaryenjs', binaryenjs.update_binaryen_js_tests), ]) def main(): + all_suites = TEST_SUITES.keys() + skip_by_default = ['binaryenjs'] + if shared.options.list_suites: - for suite in TEST_SUITES.keys(): + for suite in all_suites: print(suite) return 0 - for test in shared.requested or TEST_SUITES.keys(): + if not shared.requested: + shared.requested = [s for s in all_suites if s not in skip_by_default] + + for test in shared.requested: TEST_SUITES[test]() print('\n[ success! ]') diff -Nru binaryen-91/CHANGELOG.md binaryen-99/CHANGELOG.md --- binaryen-91/CHANGELOG.md 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/CHANGELOG.md 2021-01-07 20:01:06.000000000 +0000 @@ -15,6 +15,96 @@ Current Trunk ------------- +- `RefFunc` C and JS API constructors (`BinaryenRefFunc` and `ref.func` + respectively) now take an extra `type` parameter, similar to `RefNull`. This + is necessary for typed function references support. +- JS API functions for atomic notify/wait instructions are renamed. + - `module.atomic.notify` -> `module.memory.atomic.notify` + - `module.i32.atomic.wait` -> `module.memory.atomic.wait32` + - `module.i64.atomic.wait` -> `module.memory.atomic.wait64` +- Remove old/broken SpollPointers pass. This pass: Spills values that might be + pointers to the C stack. This allows Boehm-style GC to see them properly. + This can be revived if needed from git history (#3261). +- Make `NUM_PARAMS` in `FuncCastEmulation` a runtime configuration option named + `max-func-params`. This defaults to the original value of 16. +- `BinaryenGetFunction`, `BinaryenGetGlobal` and `BinaryenGetEvent` now return + `NULL` instead of aborting when the respective element does not yet exist. + +v98 +--- + +- Add `--fast-math` mode. (#3155) +- Initial implementation of "Memory64" proposal (#3130) +- Lots of changes in support of GC proposal + +v97 +--- + +- Remove asm2wasm, which supported Emscripten's fastcomp backend, after fastcomp + was removed. +- The new feature flag `--enable-anyref` enables just the `anyref` type incl. + basic subtyping of `externref`, `funcref` and `exnref` (if enabled). +- Enabling the exception handling or anyref features without also enabling + reference types is a validation error now. +- The `Host` expression and its respective APIs have been refactored into + separate `MemorySize` and `MemoryGrow` expressions to align with other memory + instructions. + +v96 +--- + +- Fuzzing: Compare wasm2js to the interpreter (#3026) +- Fix CountLeadingZeroes on MSVC, which lead to bad optimizations (#3028) +- Asyncify verbose option (#3022) +- wasm2js: Add an "Export" scope for name resolution, avoids annoying + warnings (#2998) +- Extend the C- and JS-APIs (#2586) + +v95 +--- + +- Add Asyncify "add list" that adds to the list of functions to be instrumented. + Rename old lists to be clearer and more consistent with that, so now there is + "remove list" to remove, "add list" to add, and "only list" which if set means + that only those functions should be instrumented and nothing else. +- Renamed various ambiguous C-API functions for consistency: + - `BinaryenBlockGetChild` to `BinaryenBlockGetChildAt` + - `BinaryenSwitchGetName` to `BinaryenSwitchGetNameAt` + - `BinaryenCallGetOperand` to `BinaryenCallGetOperandAt` + - `BinaryenCallIndirectGetOperand` to `BinaryenCallIndirectGetOperandAt` + - `BinaryenHostGetOperand` to `BinaryenHostGetOperandAt` + - `BinaryenThrowGetOperand` to `BinaryenThrowGetOperandAt` + - `BinaryenTupleMakeGetOperand` to `BinaryenTupleMakeGetOperandAt` + +v94 +--- + +- The C-API's `BinaryenSetAPITracing` and the JS-API's `setAPITracing` have been + removed because this feature was not very useful anymore and had a significant + maintainance cost. +- wasm-emscripten-finalize will no longer generate `stackSave`, `stackAlloc`, + `stackRestore` function. It not expects them to be included in the input + file. + +v93 +--- + +- First release with binaries built with github actions. + + +v92 +--- + +- The `multivalue` feature has been added. It allows functions and control flow + structures to return tuples and for locals and globals to have tuple types. + Tuples are created with the new `tuple.make` pseudoinstruction and their + elements are retrieved with the new `tuple.extract` pseudoinstruction. +- The internal type interner has been rewritten to avoid taking locks in far + more situations. Depending on the workload, this may result in large speedups + and increased parallelism. +- Represent the `dylink` section in Binaryen IR, so we can read, write, and + update it. + v91 --- diff -Nru binaryen-91/check.py binaryen-99/check.py --- binaryen-91/check.py 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/check.py 2021-01-07 20:01:06.000000000 +0000 @@ -16,23 +16,17 @@ import glob import os -import shutil import subprocess import sys import unittest from collections import OrderedDict -from scripts.test import asm2wasm from scripts.test import binaryenjs from scripts.test import lld from scripts.test import shared from scripts.test import support from scripts.test import wasm2js - - -if shared.options.interpreter: - print('[ using wasm interpreter at "%s" ]' % shared.options.interpreter) - assert os.path.exists(shared.options.interpreter), 'interpreter not found' +from scripts.test import wasm_opt def get_changelog_version(): @@ -48,7 +42,7 @@ def run_help_tests(): print('[ checking --help is useful... ]\n') - not_executable_suffix = ['.txt', '.js', '.ilk', '.pdb', '.dll', '.wasm', '.manifest'] + not_executable_suffix = ['.txt', '.js', '.ilk', '.pdb', '.dll', '.wasm', '.manifest', 'binaryen-lit'] bin_files = [os.path.join(shared.options.binaryen_bin, f) for f in os.listdir(shared.options.binaryen_bin)] executables = [f for f in bin_files if os.path.isfile(f) and not any(f.endswith(s) for s in not_executable_suffix)] executables = sorted(executables) @@ -83,113 +77,6 @@ assert version == changelog_version -def run_wasm_opt_tests(): - print('\n[ checking wasm-opt -o notation... ]\n') - - for extra_args in [[], ['--no-validation']]: - wast = os.path.join(shared.options.binaryen_test, 'hello_world.wat') - shared.delete_from_orbit('a.wat') - out = 'a.wat' - cmd = shared.WASM_OPT + [wast, '-o', out, '-S'] + extra_args - support.run_command(cmd) - shared.fail_if_not_identical_to_file(open(out).read(), wast) - - print('\n[ checking wasm-opt binary reading/writing... ]\n') - - shutil.copyfile(os.path.join(shared.options.binaryen_test, 'hello_world.wat'), 'a.wat') - shared.delete_from_orbit('a.wasm') - shared.delete_from_orbit('b.wast') - support.run_command(shared.WASM_OPT + ['a.wat', '-o', 'a.wasm']) - assert open('a.wasm', 'rb').read()[0] == 0, 'we emit binary by default' - support.run_command(shared.WASM_OPT + ['a.wasm', '-o', 'b.wast', '-S']) - assert open('b.wast', 'rb').read()[0] != 0, 'we emit text with -S' - - print('\n[ checking wasm-opt passes... ]\n') - - for t in shared.get_tests(shared.get_test_dir('passes'), ['.wast', '.wasm']): - print('..', os.path.basename(t)) - binary = '.wasm' in t - base = os.path.basename(t).replace('.wast', '').replace('.wasm', '') - passname = base - passes_file = os.path.join(shared.get_test_dir('passes'), passname + '.passes') - if os.path.exists(passes_file): - passname = open(passes_file).read().strip() - opts = [('--' + p if not p.startswith('O') and p != 'g' else '-' + p) for p in passname.split('_')] - actual = '' - for module, asserts in support.split_wast(t): - assert len(asserts) == 0 - support.write_wast('split.wast', module) - cmd = shared.WASM_OPT + opts + ['split.wast'] - if 'noprint' not in t: - cmd.append('--print') - curr = support.run_command(cmd) - actual += curr - # also check debug mode output is valid - debugged = support.run_command(cmd + ['--debug'], stderr=subprocess.PIPE) - shared.fail_if_not_contained(actual, debugged) - - # also check pass-debug mode - def check(): - pass_debug = support.run_command(cmd) - shared.fail_if_not_identical(curr, pass_debug) - shared.with_pass_debug(check) - - expected_file = os.path.join(shared.get_test_dir('passes'), base + ('.bin' if binary else '') + '.txt') - shared.fail_if_not_identical_to_file(actual, expected_file) - - if 'emit-js-wrapper' in t: - with open('a.js') as actual: - shared.fail_if_not_identical_to_file(actual.read(), t + '.js') - if 'emit-spec-wrapper' in t: - with open('a.wat') as actual: - shared.fail_if_not_identical_to_file(actual.read(), t + '.wat') - - print('\n[ checking wasm-opt parsing & printing... ]\n') - - for t in shared.get_tests(shared.get_test_dir('print'), ['.wast']): - print('..', os.path.basename(t)) - wasm = os.path.basename(t).replace('.wast', '') - cmd = shared.WASM_OPT + [t, '--print', '-all'] - print(' ', ' '.join(cmd)) - actual, err = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True).communicate() - expected_file = os.path.join(shared.get_test_dir('print'), wasm + '.txt') - shared.fail_if_not_identical_to_file(actual, expected_file) - cmd = shared.WASM_OPT + [os.path.join(shared.get_test_dir('print'), t), '--print-minified', '-all'] - print(' ', ' '.join(cmd)) - actual, err = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True).communicate() - shared.fail_if_not_identical(actual.strip(), open(os.path.join(shared.get_test_dir('print'), wasm + '.minified.txt')).read().strip()) - - print('\n[ checking wasm-opt testcases... ]\n') - - for t in shared.get_tests(shared.options.binaryen_test, ['.wast']): - print('..', os.path.basename(t)) - f = t + '.from-wast' - cmd = shared.WASM_OPT + [t, '--print', '-all'] - actual = support.run_command(cmd) - actual = actual.replace('printing before:\n', '') - - shared.fail_if_not_identical_to_file(actual, f) - - # FIXME Remove this condition after nullref is implemented in V8 - if 'reference-types.wast' not in t: - shared.binary_format_check(t, wasm_as_args=['-g']) # test with debuginfo - shared.binary_format_check(t, wasm_as_args=[], binary_suffix='.fromBinary.noDebugInfo') # test without debuginfo - - shared.minify_check(t) - - print('\n[ checking wasm-opt debugInfo read-write... ]\n') - - for t in shared.get_tests(shared.options.binaryen_test, ['.fromasm']): - if 'debugInfo' not in t: - continue - print('..', os.path.basename(t)) - f = t + '.read-written' - support.run_command(shared.WASM_AS + [t, '--source-map=a.map', '-o', 'a.wasm', '-g']) - support.run_command(shared.WASM_OPT + ['a.wasm', '--input-source-map=a.map', '-o', 'b.wasm', '--output-source-map=b.map', '-g']) - actual = support.run_command(shared.WASM_DIS + ['b.wasm', '--source-map=b.map']) - shared.fail_if_not_identical_to_file(actual, f) - - def run_wasm_dis_tests(): print('\n[ checking wasm-dis on provided binaries... ]\n') @@ -209,8 +96,6 @@ shared.with_pass_debug(check) - shared.validate_binary(t) - def run_crash_tests(): print("\n[ checking we don't crash on tricky inputs... ]\n") @@ -275,7 +160,7 @@ print('..', os.path.basename(t)) # convert to wasm support.run_command(shared.WASM_AS + [t, '-o', 'a.wasm']) - support.run_command(shared.WASM_REDUCE + ['a.wasm', '--command=%s b.wasm --fuzz-exec -all' % shared.WASM_OPT[0], '-t', 'b.wasm', '-w', 'c.wasm', '--timeout=4']) + support.run_command(shared.WASM_REDUCE + ['a.wasm', '--command=%s b.wasm --fuzz-exec --detect-features ' % shared.WASM_OPT[0], '-t', 'b.wasm', '-w', 'c.wasm', '--timeout=4']) expected = t + '.txt' support.run_command(shared.WASM_DIS + ['c.wasm', '-o', 'a.wat']) with open('a.wat') as seen: @@ -285,25 +170,33 @@ # this is very slow in ThreadSanitizer, so avoid it there if 'fsanitize=thread' not in str(os.environ): print('\n[ checking wasm-reduce fuzz testcase ]\n') - - support.run_command(shared.WASM_OPT + [os.path.join(shared.options.binaryen_test, 'unreachable-import_wasm-only.asm.js'), '-ttf', '-Os', '-o', 'a.wasm', '-all']) + # TODO: re-enable multivalue once it is better optimized + support.run_command(shared.WASM_OPT + [os.path.join(shared.options.binaryen_test, 'signext.wast'), '-ttf', '-Os', '-o', 'a.wasm', '--detect-features', '--disable-multivalue']) before = os.stat('a.wasm').st_size - support.run_command(shared.WASM_REDUCE + ['a.wasm', '--command=%s b.wasm --fuzz-exec -all' % shared.WASM_OPT[0], '-t', 'b.wasm', '-w', 'c.wasm']) + support.run_command(shared.WASM_REDUCE + ['a.wasm', '--command=%s b.wasm --fuzz-exec --detect-features' % shared.WASM_OPT[0], '-t', 'b.wasm', '-w', 'c.wasm']) after = os.stat('c.wasm').st_size # This number is a custom threshold to check if we have shrunk the # output sufficiently - assert after < 0.75 * before, [before, after] + assert after < 0.85 * before, [before, after] def run_spec_tests(): print('\n[ checking wasm-shell spec testcases... ]\n') for wast in shared.options.spec_tests: - print('..', os.path.basename(wast)) + base = os.path.basename(wast) + print('..', base) + # windows has some failures that need to be investigated + if base == 'names.wast' and shared.skip_if_on_windows('spec: ' + base): + continue def run_spec_test(wast): cmd = shared.WASM_SHELL + [wast] - return support.run_command(cmd, stderr=subprocess.PIPE) + output = support.run_command(cmd, stderr=subprocess.PIPE) + # filter out binaryen interpreter logging that the spec suite + # doesn't expect + filtered = [line for line in output.splitlines() if not line.startswith('[trap')] + return '\n'.join(filtered) + '\n' def run_opt_test(wast): # check optimization validation @@ -319,13 +212,13 @@ if actual != expected: shared.fail(actual, expected) - expected = os.path.join(shared.get_test_dir('spec'), 'expected-output', os.path.basename(wast) + '.log') + expected = os.path.join(shared.get_test_dir('spec'), 'expected-output', base + '.log') # some spec tests should fail (actual process failure, not just assert_invalid) try: actual = run_spec_test(wast) except Exception as e: - if ('wasm-validator error' in str(e) or 'parse exception' in str(e)) and '.fail.' in os.path.basename(wast): + if ('wasm-validator error' in str(e) or 'parse exception' in str(e)) and '.fail.' in base: print('<< test failed as expected >>') continue # don't try all the binary format stuff TODO else: @@ -334,7 +227,7 @@ check_expected(actual, expected) # skip binary checks for tests that reuse previous modules by name, as that's a wast-only feature - if 'exports.wast' in os.path.basename(wast): # FIXME + if 'exports.wast' in base: # FIXME continue # check binary format. here we can verify execution of the final @@ -345,7 +238,7 @@ # FIXME Remove reference type tests from this list after nullref is # implemented in V8 - if os.path.basename(wast) not in ['comments.wast', 'ref_null.wast', 'ref_is_null.wast', 'ref_func.wast', 'old_select.wast']: + if base not in ['comments.wast', 'ref_null.wast', 'ref_is_null.wast', 'ref_func.wast', 'old_select.wast']: split_num = 0 actual = '' for module, asserts in support.split_wast(wast): @@ -359,7 +252,7 @@ open(result_wast, 'a').write('\n' + '\n'.join(asserts)) actual += run_spec_test(result_wast) # compare all the outputs to the expected output - check_expected(actual, os.path.join(shared.get_test_dir('spec'), 'expected-output', os.path.basename(wast) + '.log')) + check_expected(actual, os.path.join(shared.get_test_dir('spec'), 'expected-output', base + '.log')) else: # handle unsplittable wast files run_spec_test(wast) @@ -368,17 +261,17 @@ def run_validator_tests(): print('\n[ running validation tests... ]\n') # Ensure the tests validate by default - cmd = shared.WASM_AS + [os.path.join(shared.get_test_dir('validator'), 'invalid_export.wast')] + cmd = shared.WASM_AS + [os.path.join(shared.get_test_dir('validator'), 'invalid_export.wast'), '-o', 'a.wasm'] support.run_command(cmd) - cmd = shared.WASM_AS + [os.path.join(shared.get_test_dir('validator'), 'invalid_import.wast')] + cmd = shared.WASM_AS + [os.path.join(shared.get_test_dir('validator'), 'invalid_import.wast'), '-o', 'a.wasm'] support.run_command(cmd) - cmd = shared.WASM_AS + ['--validate=web', os.path.join(shared.get_test_dir('validator'), 'invalid_export.wast')] + cmd = shared.WASM_AS + ['--validate=web', os.path.join(shared.get_test_dir('validator'), 'invalid_export.wast'), '-o', 'a.wasm'] support.run_command(cmd, expected_status=1) - cmd = shared.WASM_AS + ['--validate=web', os.path.join(shared.get_test_dir('validator'), 'invalid_import.wast')] + cmd = shared.WASM_AS + ['--validate=web', os.path.join(shared.get_test_dir('validator'), 'invalid_import.wast'), '-o', 'a.wasm'] support.run_command(cmd, expected_status=1) - cmd = shared.WASM_AS + ['--validate=none', os.path.join(shared.get_test_dir('validator'), 'invalid_return.wast')] + cmd = shared.WASM_AS + ['--validate=none', os.path.join(shared.get_test_dir('validator'), 'invalid_return.wast'), '-o', 'a.wasm'] support.run_command(cmd) - cmd = shared.WASM_AS + [os.path.join(shared.get_test_dir('validator'), 'invalid_number.wast')] + cmd = shared.WASM_AS + [os.path.join(shared.get_test_dir('validator'), 'invalid_number.wast'), '-o', 'a.wasm'] support.run_command(cmd, expected_status=1) @@ -387,54 +280,40 @@ if not shared.NATIVECC or not shared.NATIVEXX: shared.fail_with_error('Native compiler (e.g. gcc/g++) was not found in PATH!') return + # windows + gcc will need some work + if shared.skip_if_on_windows('gcc'): + return for t in sorted(os.listdir(shared.get_test_dir('example'))): output_file = 'example' - cmd = ['-I' + os.path.join(shared.options.binaryen_root, 'src'), '-g', '-pthread', '-o', output_file] - if t.endswith('.txt'): - # check if there is a trace in the file, if so, we should build it - out = subprocess.check_output([os.path.join(shared.options.binaryen_root, 'scripts', 'clean_c_api_trace.py'), os.path.join(shared.get_test_dir('example'), t)]) - if len(out) == 0: - print(' (no trace in ', t, ')') - continue - print(' (will check trace in ', t, ')') - src = 'trace.cpp' - with open(src, 'wb') as o: - o.write(out) - expected = os.path.join(shared.get_test_dir('example'), t + '.txt') - else: - src = os.path.join(shared.get_test_dir('example'), t) - expected = os.path.join(shared.get_test_dir('example'), '.'.join(t.split('.')[:-1]) + '.txt') - if src.endswith(('.c', '.cpp')): - # build the C file separately - libpath = os.path.join(os.path.dirname(shared.options.binaryen_bin), 'lib') - extra = [shared.NATIVECC, src, '-c', '-o', 'example.o', - '-I' + os.path.join(shared.options.binaryen_root, 'src'), '-g', '-L' + libpath, '-pthread'] - if src.endswith('.cpp'): - extra += ['-std=c++14'] - if os.environ.get('COMPILER_FLAGS'): - for f in os.environ.get('COMPILER_FLAGS').split(' '): - extra.append(f) - print('build: ', ' '.join(extra)) - subprocess.check_call(extra) - # Link against the binaryen C library DSO, using an executable-relative rpath - cmd = ['example.o', '-L' + libpath, '-lbinaryen'] + cmd + ['-Wl,-rpath,' + libpath] - else: + cmd = ['-I' + os.path.join(shared.options.binaryen_root, 't'), '-g', '-pthread', '-o', output_file] + if not t.endswith(('.c', '.cpp')): continue + src = os.path.join(shared.get_test_dir('example'), t) + expected = os.path.join(shared.get_test_dir('example'), '.'.join(t.split('.')[:-1]) + '.txt') + # build the C file separately + libpath = shared.options.binaryen_lib + extra = [shared.NATIVECC, src, '-c', '-o', 'example.o', + '-I' + os.path.join(shared.options.binaryen_root, 'src'), '-g', '-L' + libpath, '-pthread'] + if src.endswith('.cpp'): + extra += ['-std=c++' + str(shared.cxx_standard)] + if os.environ.get('COMPILER_FLAGS'): + for f in os.environ.get('COMPILER_FLAGS').split(' '): + extra.append(f) + print('build: ', ' '.join(extra)) + subprocess.check_call(extra) + # Link against the binaryen C library DSO, using an executable-relative rpath + cmd = ['example.o', '-L' + libpath, '-lbinaryen'] + cmd + ['-Wl,-rpath,' + libpath] print(' ', t, src, expected) if os.environ.get('COMPILER_FLAGS'): for f in os.environ.get('COMPILER_FLAGS').split(' '): cmd.append(f) - cmd = [shared.NATIVEXX, '-std=c++14'] + cmd + cmd = [shared.NATIVEXX, '-std=c++' + str(shared.cxx_standard)] + cmd print('link: ', ' '.join(cmd)) subprocess.check_call(cmd) print('run...', output_file) actual = subprocess.check_output([os.path.abspath(output_file)]).decode('utf-8') os.remove(output_file) - if sys.platform == 'darwin': - # Also removes debug directory produced on Mac OS - shutil.rmtree(output_file + '.dSYM') - shared.fail_if_not_identical_to_file(actual, expected) @@ -449,11 +328,21 @@ raise Exception("unittest failed") +def run_lit(): + lit_script = os.path.join(shared.options.binaryen_bin, 'binaryen-lit') + lit_tests = os.path.join(shared.options.binaryen_root, 'test', 'lit') + # lit expects to be run as its own executable + cmd = [sys.executable, lit_script, lit_tests, '-vv'] + result = subprocess.run(cmd) + if result.returncode != 0: + shared.num_failures += 1 + if shared.options.abort_on_first_failure and shared.num_failures: + raise Exception("lit test failed") + + TEST_SUITES = OrderedDict([ ('help-messages', run_help_tests), - ('wasm-opt', run_wasm_opt_tests), - ('asm2wasm', asm2wasm.test_asm2wasm), - ('asm2wasm-binary', asm2wasm.test_asm2wasm_binary), + ('wasm-opt', wasm_opt.test_wasm_opt), ('wasm-dis', run_wasm_dis_tests), ('crash', run_crash_tests), ('dylink', run_dylink_tests), @@ -461,23 +350,36 @@ ('wasm-metadce', run_wasm_metadce_tests), ('wasm-reduce', run_wasm_reduce_tests), ('spec', run_spec_tests), - ('binaryenjs', binaryenjs.test_binaryen_js), ('lld', lld.test_wasm_emscripten_finalize), ('wasm2js', wasm2js.test_wasm2js), ('validator', run_validator_tests), ('gcc', run_gcc_tests), ('unit', run_unittest), + ('binaryenjs', binaryenjs.test_binaryen_js), + ('binaryenjs_wasm', binaryenjs.test_binaryen_wasm), + ('lit', run_lit), ]) # Run all the tests def main(): + all_suites = TEST_SUITES.keys() + skip_by_default = ['binaryenjs', 'binaryenjs_wasm'] + if shared.options.list_suites: - for suite in TEST_SUITES.keys(): + for suite in all_suites: print(suite) return 0 - for test in shared.requested or TEST_SUITES.keys(): + for r in shared.requested: + if r not in all_suites: + print('invalid test suite: %s (see --list-suites)\n' % r) + return 1 + + if not shared.requested: + shared.requested = [s for s in all_suites if s not in skip_by_default] + + for test in shared.requested: TEST_SUITES[test]() # Check/display the results diff -Nru binaryen-91/clang-format-diff.sh binaryen-99/clang-format-diff.sh --- binaryen-91/clang-format-diff.sh 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/clang-format-diff.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ -#!/bin/bash - -set -o errexit - -# When we are running on travis and *not* part of a pull request we don't -# have any upstream branch to compare against. -if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then - echo "Skipping since not running on travis PR" - exit 0 -fi - -if [ -n "$TRAVIS_BRANCH" ]; then - BRANCH=$TRAVIS_BRANCH -else - BRANCH=origin/master -fi - -MERGE_BASE=$(git merge-base $BRANCH HEAD) -FORMAT_MSG=$(git clang-format $MERGE_BASE -q --diff -- src/) -if [ -n "$FORMAT_MSG" -a "$FORMAT_MSG" != "no modified files to format" ] -then - echo "Please run git clang-format before committing, or apply this diff:" - echo - # Run git clang-format again, this time without capruting stdout. This way - # clang-format format the message nicely and add color. - git clang-format $MERGE_BASE -q --diff -- src/ - exit 1 -fi diff -Nru binaryen-91/clang-tidy-diff.sh binaryen-99/clang-tidy-diff.sh --- binaryen-91/clang-tidy-diff.sh 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/clang-tidy-diff.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ -#!/bin/bash - -set -o errexit - -# When we are running on travis and *not* part of a pull request we don't -# have any upstream branch to compare against. -if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then - echo "Skipping since not running on travis PR" - exit 0 -fi - -if [ -n "$TRAVIS_BRANCH" ]; then - BRANCH=$TRAVIS_BRANCH -else - BRANCH=origin/master -fi - -CLANG_DIR=$(dirname $(dirname $(which clang-tidy))) -CLANG_TIDY_DIFF=$CLANG_DIR/share/clang/clang-tidy-diff.py -TIDY_MSG=$(git diff -U0 $BRANCH... | $CLANG_TIDY_DIFF -quiet -p1 2> /dev/null) -if [ -n "$TIDY_MSG" -a "$TIDY_MSG" != "No relevant changes found." ] -then - echo "Please fix clang-tidy errors before committing" - echo - # Run clang-tidy once again to show the error - git diff -U0 $BRANCH... | $CLANG_TIDY_DIFF -quiet -p1 2> /dev/null - exit 1 -fi diff -Nru binaryen-91/CMakeLists.txt binaryen-99/CMakeLists.txt --- binaryen-91/CMakeLists.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/CMakeLists.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,11 @@ cmake_minimum_required(VERSION 3.1.3) -project(binaryen LANGUAGES C CXX VERSION 91) +project(binaryen LANGUAGES C CXX VERSION 98) include(GNUInstallDirs) +# The C++ standard whose features are required to build Binaryen. +# Keep in sync with scripts/test/shared.py cxx_standard +set(CXX_STANDARD 14) + if(NOT CMAKE_BUILD_TYPE) message(STATUS "No build type selected, default to Release") set(CMAKE_BUILD_TYPE "Release") @@ -69,9 +73,37 @@ ENDFOREACH(variable) endfunction() +function(binaryen_setup_rpath name) + if(CMAKE_INSTALL_RPATH) + return() + endif() + + if (APPLE) + set(_install_name_dir INSTALL_NAME_DIR "@rpath") + set(_install_rpath "@loader_path/../lib") + elseif(UNIX) + set(_install_rpath "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}") + if(${CMAKE_SYSTEM_NAME} MATCHES "(FreeBSD|DragonFly)") + set_property(TARGET ${name} APPEND_STRING PROPERTY + LINK_FLAGS " -Wl,-z,origin ") + endif() + else() + return() + endif() + + set_target_properties(${name} PROPERTIES + BUILD_WITH_INSTALL_RPATH On + INSTALL_RPATH "${_install_rpath}" + ${_install_name_dir}) +endfunction() + # Options option(BUILD_STATIC_LIB "Build as a static library" OFF) +if (MSVC) + # We don't have dllexport declarations set up for windows yet. + set(BUILD_STATIC_LIB ON) +endif() # For now, don't include full DWARF support in JS builds, for size. if (NOT EMSCRIPTEN) @@ -113,6 +145,8 @@ add_compile_flag("/wd4244") # 4722 warns that destructors never return, even with WASM_NORETURN. add_compile_flag("/wd4722") + # "destructor was implicitly defined as deleted" caused by LLVM headers. + add_compile_flag("/wd4624") add_compile_flag("/WX-") add_debug_compile_flag("/Od") add_nondebug_compile_flag("/O2") @@ -124,6 +158,9 @@ # Don't warn about using "strdup" as a reserved name. add_compile_flag("/D_CRT_NONSTDC_NO_DEPRECATE") + # multi-core build. + add_compile_flag("/MP") + if(BYN_ENABLE_ASSERTIONS) # On non-Debug builds cmake automatically defines NDEBUG, so we # explicitly undefine it: @@ -160,7 +197,7 @@ set(THREADS_PREFER_PTHREAD_FLAG ON) set(CMAKE_THREAD_PREFER_PTHREAD ON) find_package(Threads REQUIRED) - add_cxx_flag("-std=c++14") + add_cxx_flag("-std=c++${CXX_STANDARD}") if(NOT EMSCRIPTEN) if(CMAKE_SYSTEM_PROCESSOR MATCHES "^i.86$") # wasm doesn't allow for x87 floating point math @@ -177,6 +214,7 @@ add_compile_flag("-Wextra") add_compile_flag("-Wno-unused-parameter") add_compile_flag("-fno-omit-frame-pointer") + add_compile_flag("-fno-rtti") # TODO(https://github.com/WebAssembly/binaryen/pull/2314): Remove these two # flags once we resolve the issue. add_compile_flag("-Wno-implicit-int-float-conversion") @@ -184,6 +222,7 @@ add_compile_flag("-Wswitch") # we explicitly expect this in the code if(WIN32) add_compile_flag("-D_GNU_SOURCE") + add_compile_flag("-D__STDC_FORMAT_MACROS") add_link_flag("-Wl,--stack,8388608") elseif(NOT EMSCRIPTEN) add_compile_flag("-fPIC") @@ -213,22 +252,17 @@ add_link_flag("-s DISABLE_EXCEPTION_CATCHING=0") # make the tools immediately usable on Node.js add_link_flag("-s NODERAWFS") - # this can be moved into the fastcomp section once upstream ignores this flag, - # https://github.com/emscripten-core/emscripten/pull/9897 - add_compile_flag("-Wno-almost-asm") - # check for fastcomp by the clang version, which is stuck in fastcomp way - # back in the past - if(NOT ${CMAKE_CXX_COMPILER_VERSION} STREQUAL "6.0.1") - # in opt builds, LTO helps so much (>20%) it's worth slow compile times - add_nondebug_compile_flag("-s WASM_OBJECT_FILES=0") - endif() + # in opt builds, LTO helps so much (>20%) it's worth slow compile times + add_nondebug_compile_flag("-flto") endif() # clang doesn't print colored diagnostics when invoked from Ninja -if(UNIX AND - CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND - CMAKE_GENERATOR STREQUAL "Ninja") - add_compile_flag("-fcolor-diagnostics") +if(UNIX AND CMAKE_GENERATOR STREQUAL "Ninja") + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + add_compile_flag("-fdiagnostics-color=always") + elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + add_compile_flag("-fcolor-diagnostics") + endif() endif() # Static libraries @@ -244,6 +278,9 @@ add_subdirectory(src/wasm) add_subdirectory(third_party) +# Configure lit tests +add_subdirectory(test/lit) + # Object files set(binaryen_objs $ @@ -260,8 +297,10 @@ # Sources. +file(GLOB binaryen_HEADERS src/*.h) set(binaryen_SOURCES src/binaryen-c.cpp + ${binaryen_HEADERS} ) if(BUILD_STATIC_LIB) message(STATUS "Building libbinaryen as statically linked library.") @@ -271,99 +310,34 @@ message(STATUS "Building libbinaryen as shared library.") add_library(binaryen SHARED ${binaryen_SOURCES} ${binaryen_objs}) endif() -install(TARGETS binaryen DESTINATION ${CMAKE_INSTALL_LIBDIR}) +install(TARGETS binaryen + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(FILES src/binaryen-c.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -set(wasm-shell_SOURCES - src/tools/wasm-shell.cpp -) -add_executable(wasm-shell ${wasm-shell_SOURCES} ${binaryen_objs}) -target_link_libraries(wasm-shell ${CMAKE_THREAD_LIBS_INIT}) -set_property(TARGET wasm-shell PROPERTY CXX_STANDARD 14) -set_property(TARGET wasm-shell PROPERTY CXX_STANDARD_REQUIRED ON) -install(TARGETS wasm-shell DESTINATION ${CMAKE_INSTALL_BINDIR}) - -set(wasm-opt_SOURCES - src/tools/wasm-opt.cpp -) -add_executable(wasm-opt ${wasm-opt_SOURCES} ${binaryen_objs}) -target_link_libraries(wasm-opt ${CMAKE_THREAD_LIBS_INIT}) -set_property(TARGET wasm-opt PROPERTY CXX_STANDARD 14) -set_property(TARGET wasm-opt PROPERTY CXX_STANDARD_REQUIRED ON) -install(TARGETS wasm-opt DESTINATION ${CMAKE_INSTALL_BINDIR}) - -set(wasm-metadce_SOURCES - src/tools/wasm-metadce.cpp -) -add_executable(wasm-metadce ${wasm-metadce_SOURCES} ${binaryen_objs}) -target_link_libraries(wasm-metadce ${CMAKE_THREAD_LIBS_INIT}) -set_property(TARGET wasm-metadce PROPERTY CXX_STANDARD 14) -set_property(TARGET wasm-metadce PROPERTY CXX_STANDARD_REQUIRED ON) -install(TARGETS wasm-metadce DESTINATION bin) - -set(asm2wasm_SOURCES - src/tools/asm2wasm.cpp -) -add_executable(asm2wasm ${asm2wasm_SOURCES} ${binaryen_objs}) -target_link_libraries(asm2wasm ${CMAKE_THREAD_LIBS_INIT}) -set_property(TARGET asm2wasm PROPERTY CXX_STANDARD 14) -set_property(TARGET asm2wasm PROPERTY CXX_STANDARD_REQUIRED ON) -install(TARGETS asm2wasm DESTINATION ${CMAKE_INSTALL_BINDIR}) - -set(wasm2js_SOURCES - src/tools/wasm2js.cpp -) -add_executable(wasm2js ${wasm2js_SOURCES} ${binaryen_objs}) -target_link_libraries(wasm2js ${CMAKE_THREAD_LIBS_INIT}) -set_property(TARGET wasm2js PROPERTY CXX_STANDARD 14) -set_property(TARGET wasm2js PROPERTY CXX_STANDARD_REQUIRED ON) -install(TARGETS wasm2js DESTINATION ${CMAKE_INSTALL_BINDIR}) - -set(wasm-emscripten-finalize_SOURCES - src/tools/wasm-emscripten-finalize.cpp -) -add_executable(wasm-emscripten-finalize ${wasm-emscripten-finalize_SOURCES} ${binaryen_objs}) -target_link_libraries(wasm-emscripten-finalize ${CMAKE_THREAD_LIBS_INIT}) -set_property(TARGET wasm-emscripten-finalize PROPERTY CXX_STANDARD 14) -set_property(TARGET wasm-emscripten-finalize PROPERTY CXX_STANDARD_REQUIRED ON) -install(TARGETS wasm-emscripten-finalize DESTINATION ${CMAKE_INSTALL_BINDIR}) - -set(wasm_as_SOURCES - src/tools/wasm-as.cpp -) -add_executable(wasm-as ${wasm_as_SOURCES} ${binaryen_objs}) -target_link_libraries(wasm-as ${CMAKE_THREAD_LIBS_INIT}) -set_property(TARGET wasm-as PROPERTY CXX_STANDARD 14) -set_property(TARGET wasm-as PROPERTY CXX_STANDARD_REQUIRED ON) -install(TARGETS wasm-as DESTINATION ${CMAKE_INSTALL_BINDIR}) - -set(wasm_dis_SOURCES - src/tools/wasm-dis.cpp -) -add_executable(wasm-dis ${wasm_dis_SOURCES} ${binaryen_objs}) -target_link_libraries(wasm-dis ${CMAKE_THREAD_LIBS_INIT}) -set_property(TARGET wasm-dis PROPERTY CXX_STANDARD 14) -set_property(TARGET wasm-dis PROPERTY CXX_STANDARD_REQUIRED ON) -install(TARGETS wasm-dis DESTINATION ${CMAKE_INSTALL_BINDIR}) +function(binaryen_add_executable name sources) + add_executable(${name} ${sources}) + target_link_libraries(${name} ${CMAKE_THREAD_LIBS_INIT}) + target_link_libraries(${name} binaryen) + set_property(TARGET ${name} PROPERTY CXX_STANDARD ${CXX_STANDARD}) + set_property(TARGET ${name} PROPERTY CXX_STANDARD_REQUIRED ON) + binaryen_setup_rpath(${name}) + install(TARGETS ${name} DESTINATION ${CMAKE_INSTALL_BINDIR}) +endfunction() -set(wasm-ctor-eval_SOURCES - src/tools/wasm-ctor-eval.cpp -) -add_executable(wasm-ctor-eval ${wasm-ctor-eval_SOURCES} ${binaryen_objs}) -target_link_libraries(wasm-ctor-eval ${CMAKE_THREAD_LIBS_INIT}) -set_property(TARGET wasm-ctor-eval PROPERTY CXX_STANDARD 14) -set_property(TARGET wasm-ctor-eval PROPERTY CXX_STANDARD_REQUIRED ON) -install(TARGETS wasm-ctor-eval DESTINATION bin) +binaryen_add_executable(wasm-opt src/tools/wasm-opt.cpp) +binaryen_add_executable(wasm-shell src/tools/wasm-shell.cpp) +binaryen_add_executable(wasm-metadce src/tools/wasm-metadce.cpp) +binaryen_add_executable(wasm2js src/tools/wasm2js.cpp) +binaryen_add_executable(wasm-emscripten-finalize src/tools/wasm-emscripten-finalize.cpp) +binaryen_add_executable(wasm-as src/tools/wasm-as.cpp) +binaryen_add_executable(wasm-dis src/tools/wasm-dis.cpp) +binaryen_add_executable(wasm-ctor-eval src/tools/wasm-ctor-eval.cpp) +binaryen_add_executable(wasm-reduce src/tools/wasm-reduce.cpp) +binaryen_add_executable(wasm-split src/tools/wasm-split.cpp) -set(wasm-reduce_SOURCES - src/tools/wasm-reduce.cpp -) -add_executable(wasm-reduce ${wasm-reduce_SOURCES} ${binaryen_objs}) -target_link_libraries(wasm-reduce ${CMAKE_THREAD_LIBS_INIT}) -set_property(TARGET wasm-reduce PROPERTY CXX_STANDARD 14) -set_property(TARGET wasm-reduce PROPERTY CXX_STANDARD_REQUIRED ON) -install(TARGETS wasm-reduce DESTINATION ${CMAKE_INSTALL_BINDIR}) # binaryen.js # @@ -374,21 +348,24 @@ if(EMSCRIPTEN) set(binaryen_emscripten_SOURCES src/binaryen-c.cpp + ${binaryen_HEADERS} ) # binaryen.js WebAssembly variant add_executable(binaryen_wasm ${binaryen_emscripten_SOURCES}) target_link_libraries(binaryen_wasm wasm asmjs emscripten-optimizer passes ir cfg support wasm) - target_link_libraries(binaryen_wasm "-s MODULARIZE_INSTANCE=1") target_link_libraries(binaryen_wasm "-s NO_FILESYSTEM=0") target_link_libraries(binaryen_wasm "-s NODERAWFS=0") target_link_libraries(binaryen_wasm "-s EXPORT_NAME=binaryen") target_link_libraries(binaryen_wasm "--post-js ${CMAKE_CURRENT_SOURCE_DIR}/src/js/binaryen.js-post.js") + target_link_libraries(binaryen_wasm "--extern-pre-js ${CMAKE_CURRENT_SOURCE_DIR}/src/js/binaryen.js-extern-pre.js") + target_link_libraries(binaryen_wasm "--extern-post-js ${CMAKE_CURRENT_SOURCE_DIR}/src/js/binaryen.js-extern-post.js") target_link_libraries(binaryen_wasm optimized "--closure 1") - target_link_libraries(binaryen_wasm optimized "--llvm-lto 1") + target_link_libraries(binaryen_wasm optimized "--closure-args \"--language_in=ECMASCRIPT6 --language_out=ECMASCRIPT6\"") + target_link_libraries(binaryen_wasm optimized "-flto") target_link_libraries(binaryen_wasm debug "--profiling") - set_property(TARGET binaryen_wasm PROPERTY CXX_STANDARD 14) + set_property(TARGET binaryen_wasm PROPERTY CXX_STANDARD ${CXX_STANDARD}) set_property(TARGET binaryen_wasm PROPERTY CXX_STANDARD_REQUIRED ON) install(TARGETS binaryen_wasm DESTINATION ${CMAKE_INSTALL_BINDIR}) @@ -400,33 +377,22 @@ target_link_libraries(binaryen_js "-s WASM_ASYNC_COMPILATION=0") if(${CMAKE_CXX_COMPILER_VERSION} STREQUAL "6.0.1") # only valid with fastcomp and WASM=0 - target_link_libraries(binaryen_js "-s ELIMINATE_DUPLICATE_FUNCTIONS=1") + target_link_libraries(binaryen_js "-s ELIMINATE_DUPLICATE_FUNCTIONS=1") endif() - target_link_libraries(binaryen_js "-s MODULARIZE_INSTANCE=1") target_link_libraries(binaryen_js "-s NO_FILESYSTEM=0") target_link_libraries(binaryen_js "-s NODERAWFS=0") target_link_libraries(binaryen_js "-s EXPORT_NAME=binaryen") target_link_libraries(binaryen_js "--post-js ${CMAKE_CURRENT_SOURCE_DIR}/src/js/binaryen.js-post.js") + target_link_libraries(binaryen_js "--extern-pre-js ${CMAKE_CURRENT_SOURCE_DIR}/src/js/binaryen.js-extern-pre.js") + target_link_libraries(binaryen_js "--extern-post-js ${CMAKE_CURRENT_SOURCE_DIR}/src/js/binaryen.js-extern-post.js") target_link_libraries(binaryen_js optimized "--closure 1") - target_link_libraries(binaryen_js optimized "--llvm-lto 1") + target_link_libraries(binaryen_js optimized "--closure-args \"--language_in=ECMASCRIPT6 --language_out=ECMASCRIPT6\"") + target_link_libraries(binaryen_js optimized "-flto") target_link_libraries(binaryen_js debug "--profiling") target_link_libraries(binaryen_js debug "-s ASSERTIONS") - set_property(TARGET binaryen_js PROPERTY CXX_STANDARD 14) + set_property(TARGET binaryen_js PROPERTY CXX_STANDARD ${CXX_STANDARD}) set_property(TARGET binaryen_js PROPERTY CXX_STANDARD_REQUIRED ON) install(TARGETS binaryen_js DESTINATION ${CMAKE_INSTALL_BINDIR}) endif() -# Testing -# -# Currently just some very simple smoke tests. - -enable_testing() - -add_test(NAME opt-unit - COMMAND bin/wasm-opt test/unit.wat --flatten --ssa --metrics -O4 -Os --metrics) -add_test(NAME metrics-emcc - COMMAND bin/wasm-opt test/emcc_hello_world.fromasm --metrics) -add_test(NAME exec-unit - COMMAND bin/wasm-opt test/unit.wat --fuzz-exec) -add_test(NAME exec-hello - COMMAND bin/wasm-opt test/hello_world.wat --fuzz-exec) +configure_file(scripts/binaryen-lit.in ${CMAKE_BINARY_DIR}/bin/binaryen-lit @ONLY) diff -Nru binaryen-91/debian/changelog binaryen-99/debian/changelog --- binaryen-91/debian/changelog 2020-02-26 20:58:27.000000000 +0000 +++ binaryen-99/debian/changelog 2022-10-14 00:17:16.000000000 +0000 @@ -1,3 +1,72 @@ +binaryen (99-3~20.04.sav0) focal; urgency=medium + + * Backport to Focal + * debian/control: Set debhelper-compat (= 12) BD + + -- Rob Savoury Thu, 13 Oct 2022 17:17:16 -0700 + +binaryen (99-3) unstable; urgency=medium + + * Set the correct project version in CMakeLists.txt. (Closes: #981638) + + -- Markus Koschany Tue, 02 Feb 2021 14:54:30 +0100 + +binaryen (99-2) unstable; urgency=medium + + * Install missing wasm-delegations.h file. + + -- Markus Koschany Mon, 11 Jan 2021 23:07:17 +0100 + +binaryen (99-1) unstable; urgency=medium + + * New upstream version 99. + * Declare compliance with Debian Policy 4.5.1. + + -- Markus Koschany Sun, 10 Jan 2021 01:11:59 +0100 + +binaryen (98-1) unstable; urgency=medium + + * New upstream version 98. + + -- Markus Koschany Sat, 17 Oct 2020 15:17:51 +0200 + +binaryen (97-1) unstable; urgency=medium + + * New upstream version 97. + + -- Markus Koschany Sat, 19 Sep 2020 13:06:35 +0200 + +binaryen (96-1) unstable; urgency=medium + + * New upstream version 96. + + -- Markus Koschany Tue, 18 Aug 2020 01:12:47 +0200 + +binaryen (95-1) unstable; urgency=medium + + * New upstream version 95. + + -- Markus Koschany Fri, 24 Jul 2020 01:37:59 +0200 + +binaryen (94-1) unstable; urgency=medium + + * New upstream version 94. + * Switch to debhelper-compat = 13. + + -- Markus Koschany Mon, 15 Jun 2020 22:50:08 +0200 + +binaryen (93-1) unstable; urgency=medium + + * New upstream version 93. + + -- Markus Koschany Sun, 03 May 2020 23:07:01 +0200 + +binaryen (92-1) unstable; urgency=medium + + * New upstream version 92. + + -- Markus Koschany Mon, 27 Apr 2020 11:17:59 +0200 + binaryen (91-1) unstable; urgency=medium * New upstream version 91. diff -Nru binaryen-91/debian/control binaryen-99/debian/control --- binaryen-91/debian/control 2020-02-26 20:58:27.000000000 +0000 +++ binaryen-99/debian/control 2022-10-14 00:17:16.000000000 +0000 @@ -6,7 +6,7 @@ cmake, debhelper-compat (= 12), python3 -Standards-Version: 4.5.0 +Standards-Version: 4.5.1 Homepage: https://github.com/WebAssembly/binaryen Vcs-Git: https://salsa.debian.org/debian/binaryen.git Vcs-Browser: https://salsa.debian.org/debian/binaryen diff -Nru binaryen-91/debian/copyright binaryen-99/debian/copyright --- binaryen-91/debian/copyright 2020-02-26 20:58:27.000000000 +0000 +++ binaryen-99/debian/copyright 2021-02-02 13:54:30.000000000 +0000 @@ -3,7 +3,7 @@ Source: https://github.com/WebAssembly/binaryen Files: * -Copyright: 2015-2019, WebAssembly Community Group participants +Copyright: 2015-2020, WebAssembly Community Group participants License: Apache-2.0 Files: third_party/* @@ -27,7 +27,7 @@ Software. Files: debian/* -Copyright: 2018-2019, Markus Koschany +Copyright: 2018-2021, Markus Koschany License: Apache-2.0 License: Apache-2.0 diff -Nru binaryen-91/debian/patches/project-version.patch binaryen-99/debian/patches/project-version.patch --- binaryen-91/debian/patches/project-version.patch 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/debian/patches/project-version.patch 2021-02-02 13:54:30.000000000 +0000 @@ -0,0 +1,21 @@ +From: Markus Koschany +Date: Tue, 2 Feb 2021 14:53:17 +0100 +Subject: project version + +Bug-Debian: https://bugs.debian.org/981638 +Forwarded: no +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 775fade..da9d69e 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,5 +1,5 @@ + cmake_minimum_required(VERSION 3.1.3) +-project(binaryen LANGUAGES C CXX VERSION 98) ++project(binaryen LANGUAGES C CXX VERSION 99) + include(GNUInstallDirs) + + # The C++ standard whose features are required to build Binaryen. diff -Nru binaryen-91/debian/patches/series binaryen-99/debian/patches/series --- binaryen-91/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/debian/patches/series 2021-02-02 13:54:30.000000000 +0000 @@ -0,0 +1,2 @@ +wasm-delegations.patch +project-version.patch diff -Nru binaryen-91/debian/patches/wasm-delegations.patch binaryen-99/debian/patches/wasm-delegations.patch --- binaryen-91/debian/patches/wasm-delegations.patch 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/debian/patches/wasm-delegations.patch 2021-02-02 13:54:30.000000000 +0000 @@ -0,0 +1,24 @@ +From: Markus Koschany +Date: Mon, 11 Jan 2021 23:06:19 +0100 +Subject: wasm-delegations + +Install missing wasm-delegations.h file. + +Origin: https://github.com/WebAssembly/binaryen/commit/0a1972b56a5bae9874808673041d3a48d3c86153 +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 9a2744b..775fade 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -315,7 +315,7 @@ install(TARGETS binaryen + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + +-install(FILES src/binaryen-c.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) ++install(FILES src/binaryen-c.h src/wasm-delegations.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + + function(binaryen_add_executable name sources) + add_executable(${name} ${sources}) diff -Nru binaryen-91/.flake8 binaryen-99/.flake8 --- binaryen-91/.flake8 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/.flake8 2021-01-07 20:01:06.000000000 +0000 @@ -3,4 +3,4 @@ E501, # line too long E241, # space after comma (ignored for list in gen-s-parser.py) W504 # line break after binary operator -exclude = ./test/emscripten,./test/spec,./test/wasm-install +exclude = ./test/emscripten,./test/spec,./test/wasm-install,./test/lit diff -Nru binaryen-91/.gitattributes binaryen-99/.gitattributes --- binaryen-91/.gitattributes 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/.gitattributes 2021-01-07 20:01:06.000000000 +0000 @@ -1,2 +1,3 @@ +*.py text eol=lf *.sh text eol=lf test/binaryen.js/*.txt text eol=lf diff -Nru binaryen-91/.github/workflows/build_release.yml binaryen-99/.github/workflows/build_release.yml --- binaryen-91/.github/workflows/build_release.yml 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/.github/workflows/build_release.yml 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,159 @@ +name: Build Release + +# Trigger whenever a release is created +on: + release: + types: + - created + +jobs: + build: + name: build + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [macos-latest, windows-latest] + defaults: + run: + shell: bash + steps: + - uses: actions/setup-python@v1 + with: + python-version: '3.x' + - uses: actions/checkout@v1 + with: + submodules: true + + - name: install ninja (macos) + run: brew install ninja + if: matrix.os == 'macos-latest' + + - name: install ninja (win) + run: choco install ninja + if: matrix.os == 'windows-latest' + + - name: mkdir + run: mkdir -p out + + - name: cmake (macos) + run: cmake -S . -B out -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=out/install + if: matrix.os == 'macos-latest' + + - name: cmake (win) + # -G "Visual Studio 15 2017" + run: cmake -S . -B out -DCMAKE_INSTALL_PREFIX=out/install + if: matrix.os == 'windows-latest' + + - name: build + run: cmake --build out --config Release --target install + + - name: strip + run: find out/install/ -type f -perm -u=x -exec strip -x {} + + if: matrix.os != 'windows-latest' + + - name: archive + id: archive + run: | + OSNAME=$(echo ${{ matrix.os }} | sed 's/-latest//') + VERSION=${{ github.event.release.tag_name }} + PKGNAME="binaryen-$VERSION-x86_64-$OSNAME" + TARBALL=$PKGNAME.tar.gz + SHASUM=$PKGNAME.tar.gz.sha256 + mv out/install binaryen-$VERSION + tar -czf $TARBALL binaryen-$VERSION + echo "::set-output name=tarball::$TARBALL" + echo "::set-output name=shasum::$SHASUM" + + - name: upload tarball + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: ./${{ steps.archive.outputs.tarball }} + asset_name: ${{ steps.archive.outputs.tarball }} + asset_content_type: application/gzip + + # We do the shasum as a seprate step because this tool doesn't + # exist on windows. + - name: shasum + id: shasum + run: shasum -a 256 ${{ steps.archive.outputs.tarball }} > ${{ steps.archive.outputs.shasum }} + if: matrix.os != 'windows-latest' + + - name: upload shasum + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: ./${{ steps.archive.outputs.shasum }} + asset_name: ${{ steps.archive.outputs.shasum }} + asset_content_type: text/plain + if: matrix.os != 'windows-latest' + + # Build with gcc 6.3 and run tests on Alpine Linux (inside chroot). + # Note: Alpine uses musl libc. + build-alpine: + name: alpine + runs-on: ubuntu-latest + steps: + - uses: actions/setup-python@v1 + with: + python-version: '3.x' + - uses: actions/checkout@v1 + - name: start docker + run: | + docker run -w /src -dit --name alpine -v $PWD:/src node:lts-alpine + echo 'docker exec alpine "$@";' > ./alpine.sh + chmod +x ./alpine.sh + + - name: install packages + run: | + ./alpine.sh apk update + ./alpine.sh apk add build-base cmake git python3 clang ninja + + - name: cmake + run: | + ./alpine.sh cmake . -G Ninja -DCMAKE_CXX_FLAGS="-static" -DCMAKE_C_FLAGS="-static" -DCMAKE_BUILD_TYPE=Release -DBUILD_STATIC_LIB=ON -DCMAKE_INSTALL_PREFIX=install + + - name: build + run: | + ./alpine.sh ninja install + + - name: test + run: ./alpine.sh python3 ./check.py + + - name: archive + id: archive + run: | + VERSION=${{ github.event.release.tag_name }} + PKGNAME="binaryen-$VERSION-x86_64-linux" + TARBALL=$PKGNAME.tar.gz + SHASUM=$PKGNAME.tar.gz.sha256 + ./alpine.sh find install/ -type f -perm -u=x -exec strip {} + + mv install binaryen-$VERSION + tar -czf $TARBALL binaryen-$VERSION + shasum -a 256 $TARBALL > $SHASUM + echo "::set-output name=tarball::$TARBALL" + echo "::set-output name=shasum::$SHASUM" + + - name: upload tarball + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: ./${{ steps.archive.outputs.tarball }} + asset_name: ${{ steps.archive.outputs.tarball }} + asset_content_type: application/gzip + + - name: upload shasum + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: ./${{ steps.archive.outputs.shasum }} + asset_name: ${{ steps.archive.outputs.shasum }} + asset_content_type: text/plain diff -Nru binaryen-91/.github/workflows/ci.yml binaryen-99/.github/workflows/ci.yml --- binaryen-91/.github/workflows/ci.yml 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/.github/workflows/ci.yml 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,241 @@ +name: CI + +on: + # If we run CI on all branches then we end up doing duplicate work for + # branches which are also PRs. + push: + branches: + - master + - kripken/* + pull_request: + +jobs: + + lint: + name: lint + runs-on: ubuntu-latest + steps: + - uses: actions/setup-python@v1 + with: + python-version: '3.x' + - uses: actions/checkout@v1 + - name: install tools + run: | + sudo pip3 install -r requirements-dev.txt + sudo apt-get install clang-format clang-tidy + - name: update path + run: echo "PATH=$PATH:/usr/lib/llvm-8/bin" >> $GITHUB_ENV + - run: flake8 + - run: ./scripts/clang-format-diff.sh + - name: clang-tidy + run: | + # clang-tidy requires compile_commands.json generated by cmake + cmake . -DCMAKE_EXPORT_COMPILE_COMMANDS=ON + ./scripts/clang-tidy-diff.sh + - name: gen-s-parser + run: ./scripts/gen-s-parser.py | diff src/gen-s-parser.inc - + + build: + name: build + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + steps: + - uses: actions/setup-python@v1 + with: + python-version: '3.x' + - uses: actions/checkout@v1 + + - name: install Python dev dependencies + run: pip3 install -r requirements-dev.txt + + - name: install ninja (linux) + run: sudo apt-get install ninja-build + if: matrix.os == 'ubuntu-latest' + + - name: install ninja (macos) + run: brew install ninja + if: matrix.os == 'macos-latest' + + - name: install ninja (win) + run: choco install ninja + if: matrix.os == 'windows-latest' + + - name: mkdir + run: mkdir -p out + + - name: cmake (linux) + run: cmake -S . -B out -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=out/install + if: matrix.os == 'ubuntu-latest' + + - name: cmake (macos) + run: cmake -S . -B out -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=out/install + if: matrix.os == 'macos-latest' + + - name: cmake (win) + # -G "Visual Studio 15 2017" + run: cmake -S . -B out -DCMAKE_INSTALL_PREFIX=out/install + if: matrix.os == 'windows-latest' + + - name: build + run: cmake --build out --config Release + + - name: install + run: cmake --install out --config Release + + - name: strip + run: find out/install/ -type f -perm -u=x -exec strip -x {} + + if: matrix.os != 'windows-latest' + + - name: Upload artifacts + uses: actions/upload-artifact@v1 + with: + name: build-${{ matrix.os }} + path: out/install + + - name: test binaryen-lit + run: python out/bin/binaryen-lit test/lit/parse-error.wast + + - name: test + run: python check.py --binaryen-bin=out/bin + + build-clang: + name: clang + runs-on: ubuntu-latest + steps: + - uses: actions/setup-python@v1 + with: + python-version: '3.x' + - uses: actions/checkout@v1 + - name: install ninja + run: sudo apt-get install ninja-build + - name: install Python dev dependencies + run: pip3 install -r requirements-dev.txt + - name: cmake + run: | + mkdir -p out + cmake -S . -B out -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ + - name: build + run: cmake --build out + - name: test binaryen-lit + run: python out/bin/binaryen-lit test/lit/parse-error.wast + - name: test + run: python check.py --binaryen-bin=out/bin + + # TODO(sbc): Find a way to reduce the duplicate between these sanitizer jobs + build-asan: + name: asan + runs-on: ubuntu-latest + env: + ASAN_OPTIONS: "symbolize=1" + COMPILER_FLAGS: "-fsanitize=address" + steps: + - uses: actions/setup-python@v1 + with: + python-version: '3.x' + - uses: actions/checkout@v1 + - name: install ninja + run: sudo apt-get install ninja-build + - name: install Python dev dependencies + run: pip3 install -r requirements-dev.txt + - name: cmake + run: | + mkdir -p out + cmake -S . -B out -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_FLAGS="$COMPILER_FLAGS" -DCMAKE_CXX_FLAGS="$COMPILER_FLAGS" + - name: build + run: cmake --build out + - name: test + run: python check.py --binaryen-bin=out/bin + + # Duplicates build-asan. Please keep in sync + build-ubsan: + name: ubsan + runs-on: ubuntu-latest + env: + COMPILER_FLAGS: "-fsanitize=undefined -fno-sanitize-recover=all" + CC: "clang" + CXX: "clang++" + steps: + - uses: actions/setup-python@v1 + with: + python-version: '3.x' + - uses: actions/checkout@v1 + - name: install ninja + run: sudo apt-get install ninja-build + - name: install Python dev dependencies + run: pip3 install -r requirements-dev.txt + - name: cmake + run: | + mkdir -p out + cmake -S . -B out -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_FLAGS="$COMPILER_FLAGS" -DCMAKE_CXX_FLAGS="$COMPILER_FLAGS -fsanitize-blacklist=$PWD/ubsan.blacklist" + - name: build + run: cmake --build out + - name: test + run: python check.py --binaryen-bin=out/bin + + # Duplicates build-asan. Please keep in sync + build-tsan: + name: tsan + runs-on: ubuntu-latest + env: + COMPILER_FLAGS: "-fsanitize=thread" + LINKER_FLAGS: "-fsanitize=thread" + steps: + - uses: actions/setup-python@v1 + with: + python-version: '3.x' + - uses: actions/checkout@v1 + - name: install ninja + run: sudo apt-get install ninja-build + - name: install Python dev dependencies + run: pip3 install -r requirements-dev.txt + - name: cmake + run: | + mkdir -p out + cmake -S . -B out -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_FLAGS="$COMPILER_FLAGS" -DCMAKE_CXX_FLAGS="$COMPILER_FLAGS" -DCMAKE_EXE_LINKER_FLAGS="$LINKER_FLAGS" + - name: build + run: cmake --build out + - name: test + run: python check.py --binaryen-bin=out/bin + + # Build the .js outputs using emcc + build-emscripten: + name: emscripten + runs-on: ubuntu-latest + steps: + - uses: actions/setup-python@v1 + with: + python-version: '3.x' + - uses: actions/checkout@v1 + - name: install ninja + run: sudo apt-get install ninja-build + - name: emsdk install + run: | + mkdir $HOME/emsdk + git clone --depth 1 https://github.com/emscripten-core/emsdk.git $HOME/emsdk + $HOME/emsdk/emsdk update-tags + $HOME/emsdk/emsdk install tot + $HOME/emsdk/emsdk activate tot + - name: update path + run: echo "PATH=$PATH:$HOME/emsdk" >> $GITHUB_ENV + - name: emcc-tests + run: | + source $HOME/emsdk/emsdk_env.sh + ./scripts/emcc-tests.sh + + # Windows + gcc needs work before the tests will run, so just test the compile + build-mingw: + name: mingw + runs-on: windows-latest + steps: + - uses: actions/setup-python@v1 + with: + python-version: '3.x' + - uses: actions/checkout@v1 + - name: cmake + run: | + mkdir -p out + cmake -S . -B out -G "MSYS Makefiles" + - name: build + run: cmake --build out diff -Nru binaryen-91/.gitignore binaryen-99/.gitignore --- binaryen-91/.gitignore 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/.gitignore 2021-01-07 20:01:06.000000000 +0000 @@ -2,6 +2,8 @@ *.pyc *~ *.diff +TAGS +tags # autogenerated during the build /src/passes/WasmIntrinsics.cpp @@ -19,9 +21,11 @@ /.ninja_log /bin/ /lib/ -config.h +/config.h *.o *.obj +compile_commands.json +test/lit/lit.site.cfg.py # files related to bulding in-tree on windows /.vs/ diff -Nru binaryen-91/.gitmodules binaryen-99/.gitmodules --- binaryen-91/.gitmodules 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/.gitmodules 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -[submodule "test/spec"] - path = test/spec - url = https://github.com/WebAssembly/testsuite.git -[submodule "test/emscripten"] - path = test/emscripten - url = https://github.com/kripken/emscripten.git diff -Nru binaryen-91/README.md binaryen-99/README.md --- binaryen-91/README.md 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/README.md 2021-01-07 20:01:06.000000000 +0000 @@ -1,5 +1,4 @@ -[![Build Status](https://travis-ci.org/WebAssembly/binaryen.svg?branch=master)](https://travis-ci.org/WebAssembly/binaryen) -[![Windows CI](https://ci.appveyor.com/api/projects/status/nvm9tuwxnup9h5ar/branch/master?svg=true)](https://ci.appveyor.com/project/WebAssembly/binaryen/branch/master) +[![CI](https://github.com/WebAssembly/binaryen/workflows/CI/badge.svg?branch=master&event=push)](https://github.com/WebAssembly/binaryen/actions?query=workflow%3ACI) # Binaryen @@ -17,22 +16,20 @@ cores. Binaryen's IR also compiles down to WebAssembly extremely easily and quickly because it is essentially a subset of WebAssembly. - * **Effective**: Binaryen's optimizer has many [passes] that can improve code - very significantly (e.g. local coloring to coalesce local variables; dead - code elimination; precomputing expressions when possible at compile time; - etc.). These optimizations aim to make Binaryen powerful enough to be used as - a [compiler backend][backend] by itself. One specific area of focus is on - WebAssembly-specific optimizations (that general-purpose compilers might not - do), which you can think of as wasm [minification] , similar to minification - for JavaScript, CSS, etc., all of which are language-specific (an example of - such an optimization is block return value generation in `SimplifyLocals`). + * **Effective**: Binaryen's optimizer has many passes (see an overview later + down) that can improve code size and speed. These optimizations aim to make + Binaryen powerful enough to be used as a [compiler backend][backend] by + itself. One specific area of focus is on WebAssembly-specific optimizations + (that general-purpose compilers might not do), which you can think of as + wasm [minification], similar to minification for JavaScript, CSS, etc., all + of which are language-specific. -Compilers built using Binaryen include +Compilers using Binaryen include: - * [`asm2wasm`](https://github.com/WebAssembly/binaryen/blob/master/src/asm2wasm.h) which compiles asm.js to WebAssembly - * [`AssemblyScript`](https://github.com/AssemblyScript/assemblyscript) which compiles TypeScript to Binaryen IR + * [`AssemblyScript`](https://github.com/AssemblyScript/assemblyscript) which compiles a subset of TypeScript to WebAssembly * [`wasm2js`](https://github.com/WebAssembly/binaryen/blob/master/src/wasm2js.h) which compiles WebAssembly to JS * [`Asterius`](https://github.com/tweag/asterius) which compiles Haskell to WebAssembly + * [`Grain`](https://github.com/grain-lang/grain) which compiles Grain to WebAssembly Binaryen also provides a set of **toolchain utilities** that can @@ -69,9 +66,11 @@ it can read a wasm text file if it contains only s-expressions. * Binaryen uses Stack IR to optimize "stacky" code (that can't be represented in structured form). - * In rare cases stacky code must be represented in Binaryen IR as well, like - popping a value in an exception catch. To support that Binaryen IR has - `push` and `pop` instructions. + * When stacky code must be represented in Binaryen IR, such as with + multivalue instructions and blocks, it is represented with tuple types that + do not exist in the WebAssembly language. In addition to multivalue + instructions, locals and globals can also have tuple types in Binaryen IR + but not in WebAssembly. * Types and unreachable code * WebAssembly limits block/if/loop types to none and the concrete value types (i32, i64, f32, f64). Binaryen IR has an unreachable type, and it allows @@ -166,26 +165,120 @@ also run the spec test suite. * **wasm-emscripten-finalize**: Takes a wasm binary produced by llvm+lld and performs emscripten-specific passes over it. - * **asm2wasm**: An asm.js-to-WebAssembly compiler, using Emscripten's asm - optimizer infrastructure. This is used by Emscripten in Binaryen mode when it - uses Emscripten's fastcomp asm.js backend. * **wasm-ctor-eval**: A tool that can execute C++ global constructors ahead of time. Used by Emscripten. * **binaryen.js**: A standalone JavaScript library that exposes Binaryen methods for [creating and optimizing WASM modules](https://github.com/WebAssembly/binaryen/blob/master/test/binaryen.js/hello-world.js). For builds, see [binaryen.js on npm](https://www.npmjs.com/package/binaryen) (or download it directly from [github](https://raw.githubusercontent.com/AssemblyScript/binaryen.js/master/index.js), [rawgit](https://cdn.rawgit.com/AssemblyScript/binaryen.js/master/index.js), or [unpkg](https://unpkg.com/binaryen@latest/index.js)). Usage instructions for each are below. +## Binaryen Optimizations + +Binaryen contains +[a lot of optimization passes](https://github.com/WebAssembly/binaryen/tree/master/src/passes) +to make WebAssembly smaller and faster. You can run the Binaryen optimizer by +using ``wasm-opt``, but also they can be run while using other tools, like +``wasm2js`` and ``wasm-metadce``. + +* The default optimization pipeline is set up by functions like + [`addDefaultFunctionOptimizationPasses`](https://github.com/WebAssembly/binaryen/blob/369b8bdd3d9d49e4d9e0edf62e14881c14d9e352/src/passes/pass.cpp#L396). +* There are various + [pass options](https://github.com/WebAssembly/binaryen/blob/369b8bdd3d9d49e4d9e0edf62e14881c14d9e352/src/pass.h#L85) + that you can set, to adjust the optimization and shrink levels, whether to + ignore unlikely traps, inlining heuristics, fast-math, and so forth. See + ``wasm-opt --help`` for how to set them and other details. + +See each optimization pass for details of what it does, but here is a quick +overview of some of the relevant ones: + +* **CoalesceLocals** - Key “register allocation” pass. Does a live range + analysis and then reuses locals in order to minimize their number, as well as + to remove copies between them. +* **CodeFolding** - Avoids duplicate code by merging it (e.g. if two `if` arms + have some shared instructions at their end). +* **CodePushing** - “Pushes” code forward past branch operations, potentially + allowing the code to not be run if the branch is taken. +* **DeadArgumentElimination** - LTO pass to remove arguments to a function if it + is always called with the same constants. +* **DeadCodeElimination** +* **Directize** - Turn an indirect call into a normal call, when the table index + is constant. +* **DuplicateFunctionElimination** - LTO pass. +* **Inlining** - LTO pass. +* **LocalCSE** - Simple local common subexpression elimination. +* **LoopInvariantCodeMotion** +* **MemoryPacking** - Key "optimize data segments" pass that combines segments, + removes unneeded parts, etc. +* **MergeBlocks** - Merge a `block` to an outer one where possible, reducing + their number. +* **MergeLocals** - When two locals have the same value in part of their + overlap, pick in a way to help CoalesceLocals do better later (split off from + CoalesceLocals to keep the latter simple). +* **MinifyImportsAndExports** - Minifies them to “a”, “b”, etc. +* **OptimizeAddedConstants** - Optimize a load/store with an added constant into + a constant offset. +* **OptimizeInstructions** - Key peephole optimization pass with a constantly + increasing list of patterns. +* **PickLoadSigns** - Adjust whether a load is signed or unsigned in order to + avoid sign/unsign operations later. +* **Precompute** - Calculates constant expressions at compile time, using the + built-in interpreter (which is guaranteed to be able to handle any constant + expression). +* **ReReloop** - Transforms wasm structured control flow to a CFG and then goes + back to structured form using the Relooper algorithm, which may find more + optimal shapes. +* **RedundantSetElimination** - Removes a `local.set` of a value that is already + present in a local. (Overlaps with CoalesceLocals; this achieves the specific + operation just mentioned without all the other work CoalesceLocals does, and + therefore is useful in other places in the optimization pipeline.) +* **RemoveUnsedBrs** - Key “minor control flow optimizations” pass, including + jump threading and various transforms that can get rid of a `br` or `br_table` + (like turning a `block` with a `br` in the middle into an `if` when possible). +* **RemoveUnusedModuleElements** - “Global DCE”, an LTO pass that removes + imports, functions, globals, etc., when they are not used. +* **ReorderFunctions** - Put more-called functions first, potentially allowing + the LEB emitted to call them to be smaller (in a very large program). +* **ReorderLocals** - Put more-used locals first, potentially allowing the LEB + emitted to use them to be smaller (in a very large function). After the + sorting, it also removes locals not used at all. +* **SimplifyGlobals** - Optimizes globals in various ways, for example, + coalescing them, removing mutability from a global never modified, applying a + constant value from an immutable global, etc. +* **SimplifyLocals** - Key “`local.get/set/tee`” optimization pass, doing things + like replacing a set and a get with moving the set’s value to the get (and + creating a tee) where possible. Also creates `block/if/loop` return values + instead of using a local to pass the value. +* **Vacuum** - Key “remove silly unneeded code” pass, doing things like removing + an `if` arm that has no contents, a drop of a constant value with no side + effects, a `block` with a single child, etc. + +“LTO” in the above means an optimization is Link Time Optimization-like in that +it works across multiple functions, but in a sense Binaryen is always “LTO” as +it usually is run on the final linked wasm. + +Advanced optimization techniques in the Binaryen optimizer include +[SSAification](https://github.com/WebAssembly/binaryen/blob/master/src/passes/SSAify.cpp), +[Flat IR](https://github.com/WebAssembly/binaryen/blob/master/src/ir/flat.h), and +[Stack/Poppy IR](https://github.com/WebAssembly/binaryen/blob/master/src/ir/stack-utils.h). + +Binaryen also contains various passes that do other things than optimizations, +like +[legalization for JavaScript](https://github.com/WebAssembly/binaryen/blob/master/src/passes/LegalizeJSInterface.cpp), +[Asyncify](https://github.com/WebAssembly/binaryen/blob/master/src/passes/Asyncify.cpp), +etc. + ## Building ``` cmake . && make ``` -Note that you can also use `ninja` as your generator: `cmake -G Ninja . && ninja` -* A C++11 compiler is required. -* The JavaScript components can be built using `build-js.sh`, see notes inside. Normally this is not needed as builds are provided in this repo already. +A C++14 compiler is required. Note that you can also use `ninja` as your generator: `cmake -G Ninja . && ninja`. -If you also want to compile C/C++ to WebAssembly (and not just asm.js to WebAssembly), you'll need Emscripten. You'll need the `incoming` branch there (which you can get via [the SDK](http://kripken.github.io/emscripten-site/docs/getting_started/downloads.html)), for more details see [the wiki](https://github.com/kripken/emscripten/wiki/WebAssembly). +Binaryen.js can be built using Emscripten, which can be installed via [the SDK](http://kripken.github.io/emscripten-site/docs/getting_started/downloads.html)). + +``` +emcmake cmake . && emmake make binaryen_js +``` ### Visual C++ @@ -319,66 +412,13 @@ int/float conversions do not trap, and so forth. There may also be slight differences in corner cases of conversions, like non-trapping float to int. -### asm2wasm - -Run - -``` -bin/asm2wasm [input.asm.js file] -``` - -This will print out a WebAssembly module in s-expression format to the console. - -For example, try - -``` -$ bin/asm2wasm test/hello_world.asm.js -``` - -That input file contains - -```javascript -function () { - "use asm"; - function add(x, y) { - x = x | 0; - y = y | 0; - return x + y | 0; - } - return { add: add }; -} -``` - -You should see something like this: - -![example output](https://raw.github.com/WebAssembly/wasm-emscripten/master/media/example.png) - -By default you should see pretty colors as in that image. Set `COLORS=0` in the -env to disable colors if you prefer that. On Linux and Mac, you can set -`COLORS=1` in the env to force colors (useful when piping to `more`, for -example). For Windows, pretty colors are only available when `stdout/stderr` are -not redirected/piped. - -Pass `--debug` on the command line to see debug info, about asm.js functions as -they are parsed, etc. - -### C/C++ Source ⇒ asm2wasm ⇒ WebAssembly - -When using `emcc` with the `BINARYEN` option, it will use Binaryen to build to -WebAssembly. This lets you compile C and C++ to WebAssembly, with emscripten -using asm.js internally as a build step. Since emscripten's asm.js generation is -very stable, and asm2wasm is a fairly simple process, this method of compiling C -and C++ to WebAssembly is usable already. See the [emscripten -wiki](https://github.com/kripken/emscripten/wiki/WebAssembly) for more details -about how to use it. - ## Testing ``` ./check.py ``` -(or `python check.py`) will run `wasm-shell`, `wasm-opt`, `asm2wasm`, etc. on the testcases in `test/`, and verify their outputs. +(or `python check.py`) will run `wasm-shell`, `wasm-opt`, etc. on the testcases in `test/`, and verify their outputs. The `check.py` script supports some options: @@ -395,6 +435,24 @@ * We have tests from upstream in `tests/spec`, in git submodules. Running `./check.py` should update those. +### Setting up dependencies + +``` +./third_party/setup.py [mozjs|v8|wabt|all] +``` + +(or `python third_party/setup.py`) installs required dependencies like the SpiderMonkey JS shell, the V8 JS shell +and WABT in `third_party/`. Other scripts automatically pick these up when installed. + +### Fuzzing + +``` +./scripts/fuzz_opt.py [--binaryen-bin=build/bin] +``` + +(or `python scripts/fuzz_opt.py`) will run various fuzzing modes on random inputs with random passes until it finds +a possible bug. See [the wiki page](https://github.com/WebAssembly/binaryen/wiki/Fuzzing) for all the details. + ## Design Principles * **Interned strings for names**: It's very convenient to have names on nodes, @@ -431,7 +489,6 @@ [control flow graph]: https://github.com/WebAssembly/binaryen/wiki/Compiling-to-WebAssembly-with-Binaryen#cfg-api [JS_API]: https://github.com/WebAssembly/binaryen/wiki/binaryen.js-API [compile_to_wasm]: https://github.com/WebAssembly/binaryen/wiki/Compiling-to-WebAssembly-with-Binaryen#what-do-i-need-to-have-in-order-to-use-binaryen-to-compile-to-webassembly -[passes]: https://github.com/WebAssembly/binaryen/tree/master/src/passes [backend]: https://kripken.github.io/talks/binaryen.html#/9 [minification]: https://kripken.github.io/talks/binaryen.html#/2 [unreachable]: https://github.com/WebAssembly/binaryen/issues/903 diff -Nru binaryen-91/requirements-dev.txt binaryen-99/requirements-dev.txt --- binaryen-91/requirements-dev.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/requirements-dev.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,8 @@ +# These requirements are only needed for developers who want to run the test +# suite or flake8, not for end users. + +# Install with `pip3 install -r requirements-dev.txt` + +flake8==3.7.8 +filecheck==0.0.17 +lit==0.11.0.post1 diff -Nru binaryen-91/scripts/binaryen-lit.in binaryen-99/scripts/binaryen-lit.in --- binaryen-91/scripts/binaryen-lit.in 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/scripts/binaryen-lit.in 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,33 @@ +#!/usr/bin/env python3 +# +# Copyright 2020 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. + +import os +from lit.main import main + +# A simple wrapper around `lit` test running. Loosely based on +# llvm's llvm-lit script + +builtin_parameters = { + 'config_map': { + os.path.normcase(os.path.normpath('@CMAKE_SOURCE_DIR@/test/lit/lit.cfg.py')): + os.path.normcase(os.path.normpath('@CMAKE_BINARY_DIR@/test/lit/lit.site.cfg.py')) + } +} + +print(builtin_parameters) + +if __name__ == '__main__': + main(builtin_parameters) diff -Nru binaryen-91/scripts/clang-format-diff.sh binaryen-99/scripts/clang-format-diff.sh --- binaryen-91/scripts/clang-format-diff.sh 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/scripts/clang-format-diff.sh 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,28 @@ +#!/bin/bash + +set -o errexit + +# When we are running on travis and *not* part of a pull request we don't +# have any upstream branch to compare against. +if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then + echo "Skipping since not running on travis PR" + exit 0 +fi + +if [ -n "$TRAVIS_BRANCH" ]; then + BRANCH=$TRAVIS_BRANCH +else + BRANCH=origin/master +fi + +MERGE_BASE=$(git merge-base $BRANCH HEAD) +FORMAT_MSG=$(git clang-format $MERGE_BASE -q --diff -- src/) +if [ -n "$FORMAT_MSG" -a "$FORMAT_MSG" != "no modified files to format" ] +then + echo "Please run git clang-format before committing, or apply this diff:" + echo + # Run git clang-format again, this time without capruting stdout. This way + # clang-format format the message nicely and add color. + git clang-format $MERGE_BASE -q --diff -- src/ + exit 1 +fi diff -Nru binaryen-91/scripts/clang-tidy-diff.sh binaryen-99/scripts/clang-tidy-diff.sh --- binaryen-91/scripts/clang-tidy-diff.sh 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/scripts/clang-tidy-diff.sh 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,37 @@ +#!/bin/bash + +set -o errexit + +# When we are running on travis and *not* part of a pull request we don't +# have any upstream branch to compare against. +if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then + echo "Skipping since not running on travis PR" + exit 0 +fi + +if [ -n "$TRAVIS_BRANCH" ]; then + BRANCH=$TRAVIS_BRANCH +else + BRANCH=origin/master +fi + +CLANG_TIDY=$(which clang-tidy) +if [ ! -e "$CLANG_TIDY" ]; then + echo "Failed to find clang-tidy ($CLANG_TIDY)" + exit 1 +fi + +CLANG_DIR=$(dirname $(dirname $(readlink -f $CLANG_TIDY))) +CLANG_TIDY_DIFF=$CLANG_DIR/share/clang/clang-tidy-diff.py +if [ ! -e "$CLANG_TIDY_DIFF" ]; then + echo "Failed to find clang-tidy-diff.py ($CLANG_TIDY_DIFF)" + exit 1 +fi +TIDY_MSG=$(git diff -U0 $BRANCH... | $CLANG_TIDY_DIFF -quiet -p1 2> /dev/null) +if [ -n "$TIDY_MSG" -a "$TIDY_MSG" != "No relevant changes found." ]; then + echo "Please fix clang-tidy errors before committing" + echo + # Run clang-tidy once again to show the error + git diff -U0 $BRANCH... | $CLANG_TIDY_DIFF -quiet -p1 2> /dev/null + exit 1 +fi diff -Nru binaryen-91/scripts/clean_c_api_trace.py binaryen-99/scripts/clean_c_api_trace.py --- binaryen-91/scripts/clean_c_api_trace.py 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/scripts/clean_c_api_trace.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ -#!/usr/bin/env python3 -# -# 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. - -"""Cleans up output from the C api, makes a runnable C file -""" - -import sys - -trace = open(sys.argv[1]).read() - -start = trace.find('// beginning a Binaryen API trace') -end = trace.rfind('// ending a Binaryen API trace') -if start >= 0: - trace = trace[start:end] - - while 1: - start = trace.find('\n(') - if start < 0: - break - end = trace.find('\n)', start + 1) - assert end > 0 - trace = trace[:start] + trace[end + 2:] - - print(trace) diff -Nru binaryen-91/scripts/emcc-tests.sh binaryen-99/scripts/emcc-tests.sh --- binaryen-91/scripts/emcc-tests.sh 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/scripts/emcc-tests.sh 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +set -e + +mkdir -p emcc-build +echo "emcc-tests: build:wasm" +emcmake cmake -B emcc-build -DCMAKE_BUILD_TYPE=Release -G Ninja +ninja -C emcc-build binaryen_wasm +echo "emcc-tests: test:wasm" +./check.py --binaryen-bin=emcc-build/bin binaryenjs_wasm +echo "emcc-tests: done:wasm" + +echo "emcc-tests: build:js" +ninja -C emcc-build binaryen_js +echo "emcc-tests: test:js" +./check.py --binaryen-bin=emcc-build/bin binaryenjs +echo "emcc-tests: done:js" diff -Nru binaryen-91/scripts/fuzz_opt.py binaryen-99/scripts/fuzz_opt.py --- binaryen-91/scripts/fuzz_opt.py 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/scripts/fuzz_opt.py 2021-01-07 20:01:06.000000000 +0000 @@ -1,3 +1,5 @@ +#!/usr/bin/python3 + ''' Runs random passes and options on random inputs, using wasm-opt. @@ -13,87 +15,236 @@ script covers different options being passed) ''' +import contextlib import os import difflib +import math +import shutil import subprocess import random import re -import shutil import sys import time +import traceback from test import shared +from test import support -# parameters +assert sys.version_info.major == 3, 'requires Python 3!' -NANS = True +# parameters # feature options that are always passed to the tools. -# exceptions: https://github.com/WebAssembly/binaryen/issues/2195 -# simd: known issues with d8 -# atomics, bulk memory: doesn't work in wasm2js -# truncsat: https://github.com/WebAssembly/binaryen/issues/2198 +# * multivalue: https://github.com/WebAssembly/binaryen/issues/2770 CONSTANT_FEATURE_OPTS = ['--all-features'] -FUZZ_OPTS = [] +INPUT_SIZE_MIN = 1024 +INPUT_SIZE_MEAN = 40 * 1024 +INPUT_SIZE_MAX = 5 * INPUT_SIZE_MEAN -INPUT_SIZE_LIMIT = 150 * 1024 +PRINT_WATS = False # utilities - def in_binaryen(*args): return os.path.join(shared.options.binaryen_root, *args) def in_bin(tool): - return os.path.join(shared.options.binaryen_root, 'bin', tool) + return os.path.join(shared.options.binaryen_bin, tool) def random_size(): - return random.randint(1, INPUT_SIZE_LIMIT) - - -def run(cmd): - print(' '.join(cmd)) - return subprocess.check_output(cmd) + if random.random() < 0.25: + # sometimes do an exponential distribution, which prefers smaller sizes but may + # also get very high + ret = int(random.expovariate(1.0 / INPUT_SIZE_MEAN)) + # if the result is valid, use it, otherwise do the normal thing + # (don't clamp, which would give us a lot of values on the borders) + if ret >= INPUT_SIZE_MIN and ret <= INPUT_SIZE_MAX: + return ret + + # most of the time do a simple linear range around the mean + return random.randint(INPUT_SIZE_MIN, 2 * INPUT_SIZE_MEAN - INPUT_SIZE_MIN) + + +def run(cmd, stderr=None, silent=False): + if not silent: + print(' '.join(cmd)) + return subprocess.check_output(cmd, stderr=stderr, text=True) def run_unchecked(cmd): print(' '.join(cmd)) - return subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT).communicate()[0] + return subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True).communicate()[0] def randomize_pass_debug(): - if random.random() < 0.125: + if random.random() < 0.1: print('[pass-debug]') os.environ['BINARYEN_PASS_DEBUG'] = '1' else: os.environ['BINARYEN_PASS_DEBUG'] = '0' del os.environ['BINARYEN_PASS_DEBUG'] + print('randomized pass debug:', os.environ.get('BINARYEN_PASS_DEBUG', '')) + + +@contextlib.contextmanager +def no_pass_debug(): + old_env = os.environ.copy() + if os.environ.get('BINARYEN_PASS_DEBUG'): + del os.environ['BINARYEN_PASS_DEBUG'] + try: + yield + finally: + os.environ.update(old_env) def randomize_feature_opts(): global FEATURE_OPTS FEATURE_OPTS = CONSTANT_FEATURE_OPTS[:] - # half the time apply all the possible opts. this lets all test runners work at max - # capacity at least half the time, as otherwise if they need almost all the opts, the - # chance of getting them is exponentially small. - if random.random() < 0.5: + # 1/3 the time apply all the possible opts, 1/3 none of them, to maximize + # coverage both ways, and 1/3 pick each one randomly + if random.random() < 0.33333: FEATURE_OPTS += POSSIBLE_FEATURE_OPTS - else: + elif random.random() < 0.5: for possible in POSSIBLE_FEATURE_OPTS: if random.random() < 0.5: FEATURE_OPTS.append(possible) - print('feature opts:', ' '.join(FEATURE_OPTS)) + if possible in IMPLIED_FEATURE_OPTS: + FEATURE_OPTS.extend(IMPLIED_FEATURE_OPTS[possible]) + print('randomized feature opts:', ' '.join(FEATURE_OPTS)) + + +def randomize_fuzz_settings(): + # a list of the optimizations to run on the wasm + global FUZZ_OPTS + + # a boolean whether NaN values are allowed, or we de-NaN them + global NANS + + # a boolean whether out of bounds operations are allowed, or we bounds-enforce them + global OOB + + # a boolean whether we legalize the wasm for JS + global LEGALIZE + + FUZZ_OPTS = [] + if random.random() < 0.5: + NANS = True + else: + NANS = False + FUZZ_OPTS += ['--denan'] + if random.random() < 0.5: + OOB = True + else: + OOB = False + FUZZ_OPTS += ['--no-fuzz-oob'] + if random.random() < 0.5: + LEGALIZE = True + FUZZ_OPTS += ['--legalize-js-interface'] + else: + LEGALIZE = False + print('randomized settings (NaNs, OOB, legalize):', NANS, OOB, LEGALIZE) + + +IMPORTANT_INITIAL_CONTENTS = [ + os.path.join('passes', 'optimize-instructions_all-features.wast'), + os.path.join('passes', 'optimize-instructions_fuzz-exec.wast'), +] +IMPORTANT_INITIAL_CONTENTS = [os.path.join(shared.get_test_dir('.'), t) for t in IMPORTANT_INITIAL_CONTENTS] + + +def pick_initial_contents(): + # if we use an initial wasm file's contents as the basis for the + # fuzzing, then that filename, or None if we start entirely from scratch + global INITIAL_CONTENTS + + INITIAL_CONTENTS = None + # half the time don't use any initial contents + if random.random() < 0.5: + return + # some of the time use initial contents that are known to be especially + # important + if random.random() < 0.5: + test_name = random.choice(IMPORTANT_INITIAL_CONTENTS) + else: + test_name = random.choice(all_tests) + print('initial contents:', test_name) + assert os.path.exists(test_name) + # tests that check validation errors are not helpful for us + if '.fail.' in test_name: + print('initial contents is just a .fail test') + return + if os.path.basename(test_name) in [ + # contains too many segments to run in a wasm VM + 'limit-segments_disable-bulk-memory.wast', + # https://github.com/WebAssembly/binaryen/issues/3203 + 'simd.wast', + # corner cases of escaping of names is not interesting + 'names.wast', + # huge amount of locals that make it extremely slow + 'too_much_for_liveness.wasm' + ]: + print('initial contents is disallowed') + return + + if test_name.endswith('.wast'): + # this can contain multiple modules, pick one + split_parts = support.split_wast(test_name) + if len(split_parts) > 1: + index = random.randint(0, len(split_parts) - 1) + chosen = split_parts[index] + module, asserts = chosen + if not module: + # there is no module in this choice (just asserts), ignore it + print('initial contents has no module') + return + test_name = 'initial.wat' + with open(test_name, 'w') as f: + f.write(module) + print(' picked submodule %d from multi-module wast' % index) + + global FEATURE_OPTS + FEATURE_OPTS += [ + # has not been enabled in the fuzzer yet + '--disable-exception-handling', + # has not been fuzzed in general yet + '--disable-memory64', + # has not been fuzzed in general yet + '--disable-gc', + # DWARF is incompatible with multivalue atm; it's more important to + # fuzz multivalue since we aren't actually fuzzing DWARF here + '--strip-dwarf', + ] + + # the given wasm may not work with the chosen feature opts. for example, if + # we pick atomics.wast but want to run with --disable-atomics, then we'd + # error. test the wasm. + try: + run([in_bin('wasm-opt'), test_name] + FEATURE_OPTS, + stderr=subprocess.PIPE, + silent=True) + except Exception: + print('(initial contents not valid for features, ignoring)') + return + + INITIAL_CONTENTS = test_name # Test outputs we want to ignore are marked this way. IGNORE = '[binaryen-fuzzer-ignore]' +# Traps are reported as [trap REASON] +TRAP_PREFIX = '[trap ' + +# --fuzz-exec reports calls as [fuzz-exec] calling foo +FUZZ_EXEC_CALL_PREFIX = '[fuzz-exec] calling' + +# compare two strings, strictly def compare(x, y, context): if x != y and x != IGNORE and y != IGNORE: message = ''.join([a + '\n' for a in difflib.unified_diff(x.splitlines(), y.splitlines(), fromfile='expected', tofile='actual')]) @@ -103,6 +254,61 @@ )) +# numbers are "close enough" if they just differ in printing, as different +# vms may print at different precision levels and verbosity +def numbers_are_close_enough(x, y): + # handle nan comparisons like -nan:0x7ffff0 vs NaN, ignoring the bits + if 'nan' in x.lower() and 'nan' in y.lower(): + return True + # float() on the strings will handle many minor differences, like + # float('1.0') == float('1') , float('inf') == float('Infinity'), etc. + try: + return float(x) == float(y) + except Exception: + pass + # otherwise, try a full eval which can handle i64s too + try: + ex = eval(x) + ey = eval(y) + return ex == ey or float(ex) == float(ey) + except Exception as e: + print('failed to check if numbers are close enough:', e) + return False + + +# compare between vms, which may slightly change how numbers are printed +def compare_between_vms(x, y, context): + x_lines = x.splitlines() + y_lines = y.splitlines() + if len(x_lines) != len(y_lines): + return compare(x, y, context + ' (note: different number of lines between vms)') + + num_lines = len(x_lines) + for i in range(num_lines): + x_line = x_lines[i] + y_line = y_lines[i] + if x_line != y_line: + # this is different, but maybe it's a vm difference we can ignore + LEI_LOGGING = '[LoggingExternalInterface logging' + if x_line.startswith(LEI_LOGGING) and y_line.startswith(LEI_LOGGING): + x_val = x_line[len(LEI_LOGGING) + 1:-1] + y_val = y_line[len(LEI_LOGGING) + 1:-1] + if numbers_are_close_enough(x_val, y_val): + continue + NOTE_RESULT = '[fuzz-exec] note result' + if x_line.startswith(NOTE_RESULT) and y_line.startswith(NOTE_RESULT): + x_val = x_line.split(' ')[-1] + y_val = y_line.split(' ')[-1] + if numbers_are_close_enough(x_val, y_val): + continue + + # this failed to compare. print a custom diff of the relevant lines + MARGIN = 3 + start = max(i - MARGIN, 0) + end = min(i + MARGIN, num_lines) + return compare('\n'.join(x_lines[start:end]), '\n'.join(y_lines[start:end]), context) + + def fix_output(out): # large doubles may print slightly different on different VMs def fix_double(x): @@ -114,13 +320,23 @@ x = str(float(x)) return 'f64.const ' + x out = re.sub(r'f64\.const (-?[nanN:abcdefxIity\d+-.]+)', fix_double, out) - # mark traps from wasm-opt as exceptions, even though they didn't run in a vm - out = out.replace('[trap ', 'exception: [trap ') - - # exceptions may differ when optimizing, but an exception should occur. so ignore their types - # also js engines print them out slightly differently - return '\n'.join(map(lambda x: ' *exception*' if 'exception' in x else x, out.splitlines())) + out = out.replace(TRAP_PREFIX, 'exception: ' + TRAP_PREFIX) + lines = out.splitlines() + for i in range(len(lines)): + line = lines[i] + if 'Warning: unknown flag' in line or 'Try --help for options' in line: + # ignore some VM warnings that don't matter, like if a newer V8 has + # removed a flag that is no longer needed. but print the line so the + # developer can see it. + print(line) + lines[i] = None + elif 'exception' in line: + # exceptions may differ when optimizing, but an exception should + # occur, so ignore their types (also js engines print them out + # slightly differently) + lines[i] = ' *exception*' + return '\n'.join([line for line in lines if line is not None]) def fix_spec_output(out): @@ -136,9 +352,6 @@ # ignore some vm assertions, if bugs have already been filed known_issues = [ 'local count too large', # ignore this; can be caused by flatten, ssa, etc. passes - 'liftoff-assembler.cc, line 239\n', # https://bugs.chromium.org/p/v8/issues/detail?id=8631 - 'liftoff-assembler.cc, line 245\n', # https://bugs.chromium.org/p/v8/issues/detail?id=8631 - 'liftoff-register.h, line 86\n', # https://bugs.chromium.org/p/v8/issues/detail?id=8632 ] try: return run(cmd) @@ -163,21 +376,38 @@ del os.environ['BINARYEN_MAX_INTERPRETER_DEPTH'] -def run_d8(wasm): - return run_vm([shared.V8] + shared.V8_OPTS + [in_binaryen('scripts', 'fuzz_shell.js'), '--', wasm]) +V8_LIFTOFF_ARGS = ['--liftoff', '--no-wasm-tier-up'] + + +# default to running with liftoff enabled, because we need to pick either +# liftoff or turbofan for consistency (otherwise running the same command twice +# may have different results due to NaN nondeterminism), and liftoff is faster +# for small things +def run_d8_js(js, args=[], liftoff=True): + cmd = [shared.V8] + shared.V8_OPTS + if liftoff: + cmd += V8_LIFTOFF_ARGS + cmd += [js] + if args: + cmd += ['--'] + args + return run_vm(cmd) + + +def run_d8_wasm(wasm, liftoff=True): + return run_d8_js(in_binaryen('scripts', 'fuzz_shell.js'), [wasm], liftoff=liftoff) -# There are two types of test case handlers: -# * get_commands() users: these return a list of commands to run (for example, "run this wasm-opt -# command, then that one"). The calling code gets and runs those commands on the test wasm -# file, and has enough information and control to be able to perform auto-reduction of any -# bugs found. -# * Totally generic: These receive the input pattern, a wasm generated from it, and a wasm -# optimized from that, and can then do anything it wants with those. class TestCaseHandler: - # If the core handle_pair() method is not overridden, it calls handle_single() - # on each of the pair. That is useful if you just want the two wasms, and don't - # care about their relationship + # how frequent this handler will be run. 1 means always run it, 0.5 means half the + # time + frequency = 1 + + def __init__(self): + self.num_runs = 0 + + # If the core handle_pair() method is not overridden, it calls handle() on + # each of the items. That is useful if you just want the two wasms and don't + # care about their relationship. def handle_pair(self, input, before_wasm, after_wasm, opts): self.handle(before_wasm) self.handle(after_wasm) @@ -185,146 +415,383 @@ def can_run_on_feature_opts(self, feature_opts): return True + def increment_runs(self): + self.num_runs += 1 + + def count_runs(self): + return self.num_runs + + +# Fuzz the interpreter with --fuzz-exec. +class FuzzExec(TestCaseHandler): + frequency = 1 -# Run VMs and compare results -class CompareVMs(TestCaseHandler): def handle_pair(self, input, before_wasm, after_wasm, opts): - run([in_bin('wasm-opt'), before_wasm, '--emit-js-wrapper=a.js', '--emit-spec-wrapper=a.wat'] + FEATURE_OPTS) - run([in_bin('wasm-opt'), after_wasm, '--emit-js-wrapper=b.js', '--emit-spec-wrapper=b.wat'] + FEATURE_OPTS) - before = self.run_vms('a.js', before_wasm) - after = self.run_vms('b.js', after_wasm) - self.compare_vs(before, after) - - def run_vms(self, js, wasm): - results = [] - results.append(fix_output(run_bynterp(wasm, ['--fuzz-exec-before']))) - results.append(fix_output(run_vm([shared.V8, js] + shared.V8_OPTS + ['--', wasm]))) - - # append to add results from VMs - # results += [fix_output(run_vm([shared.V8, js] + shared.V8_OPTS + ['--', wasm]))] - # results += [fix_output(run_vm([os.path.expanduser('~/.jsvu/jsc'), js, '--', wasm]))] - # spec has no mechanism to not halt on a trap. so we just check until the first trap, basically - # run(['../spec/interpreter/wasm', wasm]) - # results += [fix_spec_output(run_unchecked(['../spec/interpreter/wasm', wasm, '-e', open(prefix + 'wat').read()]))] - - if len(results) == 0: - results = [0] - - # NaNs are a source of nondeterminism between VMs; don't compare them - if not NANS: - first = results[0] - for i in range(len(results)): - compare(first, results[i], 'CompareVMs at ' + str(i)) - - return results - - def compare_vs(self, before, after): - for i in range(len(before)): - compare(before[i], after[i], 'CompareVMs at ' + str(i)) - # with nans, we can only compare the binaryen interpreter to itself - if NANS: - break + run([in_bin('wasm-opt'), before_wasm] + opts + ['--fuzz-exec']) - def can_run_on_feature_opts(self, feature_opts): - return all([x in feature_opts for x in ['--disable-simd', '--disable-reference-types', '--disable-exception-handling']]) +class CompareVMs(TestCaseHandler): + frequency = 0.6 + + def __init__(self): + super(CompareVMs, self).__init__() -# Fuzz the interpreter with --fuzz-exec. This tests everything in a single command (no -# two separate binaries) so it's easy to reproduce. -class FuzzExec(TestCaseHandler): - def get_commands(self, wasm, opts, random_seed): - return [ - '%(MAX_INTERPRETER_ENV_VAR)s=%(MAX_INTERPRETER_DEPTH)d %(wasm_opt)s --fuzz-exec --fuzz-binary %(opts)s %(wasm)s' % { - 'MAX_INTERPRETER_ENV_VAR': MAX_INTERPRETER_ENV_VAR, - 'MAX_INTERPRETER_DEPTH': MAX_INTERPRETER_DEPTH, - 'wasm_opt': in_bin('wasm-opt'), - 'opts': ' '.join(opts), - 'wasm': wasm - } - ] + class BinaryenInterpreter: + name = 'binaryen interpreter' + + def run(self, wasm): + return run_bynterp(wasm, ['--fuzz-exec-before']) + + def can_run(self, wasm): + return True + + def can_compare_to_self(self): + return True + + def can_compare_to_others(self): + return True + + class D8: + name = 'd8' + + def run(self, wasm, extra_d8_flags=[]): + run([in_bin('wasm-opt'), wasm, '--emit-js-wrapper=' + wasm + '.js'] + FEATURE_OPTS) + return run_vm([shared.V8, wasm + '.js'] + shared.V8_OPTS + extra_d8_flags + ['--', wasm]) + + def can_run(self, wasm): + # INITIAL_CONTENT is disallowed because some initial spec testcases + # have names that require mangling, see + # https://github.com/WebAssembly/binaryen/pull/3216 + return not INITIAL_CONTENTS + def can_compare_to_self(self): + # With nans, VM differences can confuse us, so only very simple VMs + # can compare to themselves after opts in that case. + return not NANS + + def can_compare_to_others(self): + # If not legalized, the JS will fail immediately, so no point to + # compare to others. + return LEGALIZE and not NANS + + class D8Liftoff(D8): + name = 'd8_liftoff' + + def run(self, wasm): + return super(D8Liftoff, self).run(wasm, extra_d8_flags=V8_LIFTOFF_ARGS) + + class D8TurboFan(D8): + name = 'd8_turbofan' + + def run(self, wasm): + return super(D8TurboFan, self).run(wasm, extra_d8_flags=['--no-liftoff']) + + class Wasm2C: + name = 'wasm2c' + + def __init__(self): + # look for wabt in the path. if it's not here, don't run wasm2c + try: + wabt_bin = shared.which('wasm2c') + wabt_root = os.path.dirname(os.path.dirname(wabt_bin)) + self.wasm2c_dir = os.path.join(wabt_root, 'wasm2c') + if not os.path.isdir(self.wasm2c_dir): + print('wabt found, but not wasm2c support dir') + self.wasm2c_dir = None + except Exception as e: + print('warning: no wabt found:', e) + self.wasm2c_dir = None + + def can_run(self, wasm): + if self.wasm2c_dir is None: + return False + # if we legalize for JS, the ABI is not what C wants + if LEGALIZE: + return False + # relatively slow, so run it less frequently + if random.random() < 0.5: + return False + # wasm2c doesn't support most features + return all([x in FEATURE_OPTS for x in ['--disable-exception-handling', '--disable-simd', '--disable-threads', '--disable-bulk-memory', '--disable-nontrapping-float-to-int', '--disable-tail-call', '--disable-sign-ext', '--disable-reference-types', '--disable-multivalue', '--disable-gc']]) + + def run(self, wasm): + run([in_bin('wasm-opt'), wasm, '--emit-wasm2c-wrapper=main.c'] + FEATURE_OPTS) + run(['wasm2c', wasm, '-o', 'wasm.c']) + compile_cmd = ['clang', 'main.c', 'wasm.c', os.path.join(self.wasm2c_dir, 'wasm-rt-impl.c'), '-I' + self.wasm2c_dir, '-lm', '-Werror'] + run(compile_cmd) + return run_vm(['./a.out']) + + def can_compare_to_self(self): + # The binaryen optimizer changes NaNs in the ways that wasm + # expects, but that's not quite what C has + return not NANS + + def can_compare_to_others(self): + # C won't trap on OOB, and NaNs can differ from wasm VMs + return not OOB and not NANS + + class Wasm2C2Wasm(Wasm2C): + name = 'wasm2c2wasm' + + def __init__(self): + super(Wasm2C2Wasm, self).__init__() + + self.has_emcc = shared.which('emcc') is not None + + def run(self, wasm): + run([in_bin('wasm-opt'), wasm, '--emit-wasm2c-wrapper=main.c'] + FEATURE_OPTS) + run(['wasm2c', wasm, '-o', 'wasm.c']) + compile_cmd = ['emcc', 'main.c', 'wasm.c', + os.path.join(self.wasm2c_dir, 'wasm-rt-impl.c'), + '-I' + self.wasm2c_dir, + '-lm', + '-s', 'ALLOW_MEMORY_GROWTH'] + # disable the signal handler: emcc looks like unix, but wasm has + # no signals + compile_cmd += ['-DWASM_RT_MEMCHECK_SIGNAL_HANDLER=0'] + if random.random() < 0.5: + compile_cmd += ['-O' + str(random.randint(1, 3))] + elif random.random() < 0.5: + if random.random() < 0.5: + compile_cmd += ['-Os'] + else: + compile_cmd += ['-Oz'] + # avoid pass-debug on the emcc invocation itself (which runs + # binaryen to optimize the wasm), as the wasm here can be very + # large and it isn't what we are focused on testing here + with no_pass_debug(): + run(compile_cmd) + return run_d8_js('a.out.js') + + def can_run(self, wasm): + # quite slow (more steps), so run it less frequently + if random.random() < 0.8: + return False + # prefer not to run if the wasm is very large, as it can OOM + # the JS engine. + return super(Wasm2C2Wasm, self).can_run(wasm) and self.has_emcc and \ + os.path.getsize(wasm) <= INPUT_SIZE_MEAN + + def can_compare_to_others(self): + # NaNs can differ from wasm VMs + return not NANS + + self.vms = [BinaryenInterpreter(), D8(), D8Liftoff(), D8TurboFan(), + Wasm2C(), Wasm2C2Wasm()] -# As FuzzExec, but without a separate invocation. This can find internal bugs with generating -# the IR (which might be worked around by writing it and then reading it). -class FuzzExecImmediately(TestCaseHandler): def handle_pair(self, input, before_wasm, after_wasm, opts): - # fuzz binaryen interpreter itself. separate invocation so result is easily reduceable - run_bynterp(before_wasm, ['--fuzz-exec', '--fuzz-binary'] + opts) + before = self.run_vms(before_wasm) + after = self.run_vms(after_wasm) + self.compare_before_and_after(before, after) + + def run_vms(self, wasm): + # vm_results will map vms to their results + vm_results = {} + for vm in self.vms: + if vm.can_run(wasm): + print(f'[CompareVMs] running {vm.name}') + vm_results[vm] = fix_output(vm.run(wasm)) + + # compare between the vms on this specific input + + first_vm = None + for vm in vm_results.keys(): + if vm.can_compare_to_others(): + if first_vm is None: + first_vm = vm + else: + compare_between_vms(vm_results[first_vm], vm_results[vm], 'CompareVMs between VMs: ' + first_vm.name + ' and ' + vm.name) + + return vm_results + + def compare_before_and_after(self, before, after): + # compare each VM to itself on the before and after inputs + for vm in before.keys(): + if vm in after and vm.can_compare_to_self(): + compare(before[vm], after[vm], 'CompareVMs between before and after: ' + vm.name) + + def can_run_on_feature_opts(self, feature_opts): + return all([x in feature_opts for x in ['--disable-simd', '--disable-reference-types', '--disable-exception-handling', '--disable-multivalue', '--disable-gc']]) # Check for determinism - the same command must have the same output. -# Note that this doesn't use get_commands() intentionally, since we are testing -# for something that autoreduction won't help with anyhow (nondeterminism is very -# hard to reduce). class CheckDeterminism(TestCaseHandler): + # not that important + frequency = 0.1 + def handle_pair(self, input, before_wasm, after_wasm, opts): # check for determinism run([in_bin('wasm-opt'), before_wasm, '-o', 'b1.wasm'] + opts) run([in_bin('wasm-opt'), before_wasm, '-o', 'b2.wasm'] + opts) - assert open('b1.wasm').read() == open('b2.wasm').read(), 'output must be deterministic' + assert open('b1.wasm', 'rb').read() == open('b2.wasm', 'rb').read(), 'output must be deterministic' class Wasm2JS(TestCaseHandler): + frequency = 0.6 + def handle_pair(self, input, before_wasm, after_wasm, opts): - compare(self.run(before_wasm), self.run(after_wasm), 'Wasm2JS') + before_wasm_temp = before_wasm + '.temp.wasm' + after_wasm_temp = after_wasm + '.temp.wasm' + # legalize the before wasm, so that comparisons to the interpreter + # later make sense (if we don't do this, the wasm may have i64 exports). + # after applying other necessary fixes, we'll recreate the after wasm + # from scratch. + run([in_bin('wasm-opt'), before_wasm, '--legalize-js-interface', '-o', before_wasm_temp] + FEATURE_OPTS) + compare_before_to_after = random.random() < 0.5 + compare_to_interpreter = compare_before_to_after and random.random() < 0.5 + if compare_before_to_after: + # to compare the wasm before and after optimizations, we must + # remove operations that wasm2js does not support with full + # precision, such as i64-to-f32, as the optimizer can give different + # results. + simplification_passes = ['--stub-unsupported-js'] + if compare_to_interpreter: + # unexpectedly-unaligned loads/stores work fine in wasm in general but + # not in wasm2js, since typed arrays silently round down, effectively. + # if we want to compare to the interpreter, remove unaligned + # operations (by forcing alignment 1, then lowering those into aligned + # components, which means all loads and stores are of a single byte). + simplification_passes += ['--dealign', '--alignment-lowering'] + run([in_bin('wasm-opt'), before_wasm_temp, '-o', before_wasm_temp] + simplification_passes + FEATURE_OPTS) + # now that the before wasm is fixed up, generate a proper after wasm + run([in_bin('wasm-opt'), before_wasm_temp, '-o', after_wasm_temp] + opts + FEATURE_OPTS) + # always check for compiler crashes + before = self.run(before_wasm_temp) + after = self.run(after_wasm_temp) + if NANS: + # with NaNs we can't compare the output, as a reinterpret through + # memory might end up different in JS than wasm + return + # we also cannot compare if the wasm hits a trap, as wasm2js does not + # trap on many things wasm would, and in those cases it can do weird + # undefined things. in such a case, at least compare up until before + # the trap, which lets us compare at least some results in some cases. + # (this is why wasm2js is not in CompareVMs, which does full + # comparisons - we need to limit the comparison in a special way here) + interpreter = run([in_bin('wasm-opt'), before_wasm_temp, '--fuzz-exec-before']) + if TRAP_PREFIX in interpreter: + trap_index = interpreter.index(TRAP_PREFIX) + # we can't test this function, which the trap is in the middle of. + # erase everything from this function's output and onward, so we + # only compare the previous trap-free code + call_start = interpreter.rindex(FUZZ_EXEC_CALL_PREFIX, 0, trap_index) + call_end = interpreter.index('\n', call_start) + call_line = interpreter[call_start:call_end] + before = before[:before.index(call_line)] + after = after[:after.index(call_line)] + interpreter = interpreter[:interpreter.index(call_line)] + + def fix_output_for_js(x): + # start with the normal output fixes that all VMs need + x = fix_output(x) + + # check if a number is 0 or a subnormal, which is basically zero + def is_basically_zero(x): + # to check if something is a subnormal, compare it to the largest one + return x >= 0 and x <= 2.22507385850720088902e-308 + + def fix_number(x): + x = x.group(1) + try: + x = float(x) + # There appear to be some cases where JS VMs will print + # subnormals in full detail while other VMs do not, and vice + # versa. Ignore such really tiny numbers. + if is_basically_zero(x): + x = 0 + except ValueError: + # not a floating-point number, nothing to do + pass + return ' => ' + str(x) + + # logging notation is "function_name => result", look for that with + # a floating-point result that may need to be fixed up + return re.sub(r' => (-?[\d+-.e\-+]+)', fix_number, x) + + before = fix_output_for_js(before) + after = fix_output_for_js(after) + if compare_before_to_after: + compare_between_vms(before, after, 'Wasm2JS (before/after)') + if compare_to_interpreter: + interpreter = fix_output_for_js(interpreter) + compare_between_vms(before, interpreter, 'Wasm2JS (vs interpreter)') def run(self, wasm): - # TODO: wasm2js does not handle nans precisely, and does not - # handle oob loads etc. with traps, should we use - # FUZZ_OPTS += ['--no-fuzz-nans'] - # FUZZ_OPTS += ['--no-fuzz-oob'] - # ? wrapper = run([in_bin('wasm-opt'), wasm, '--emit-js-wrapper=/dev/stdout'] + FEATURE_OPTS) cmd = [in_bin('wasm2js'), wasm, '--emscripten'] - if random.random() < 0.5: - cmd += ['-O'] + # avoid optimizations if we have nans, as we don't handle them with + # full precision and optimizations can change things + # OOB accesses are also an issue with optimizations, that can turn the + # loaded "undefined" into either 0 (with an |0) or stay undefined + # in optimized code. + if not NANS and not OOB and random.random() < 0.5: + # when optimizing also enable deterministic mode, to avoid things + # like integer divide by zero causing false positives (1 / 0 is + # Infinity without a | 0 , and 0 with one, and the truthiness of + # those differs; we don't want to care about this because it + # would trap in wasm anyhow) + cmd += ['-O', '--deterministic'] main = run(cmd + FEATURE_OPTS) with open(os.path.join(shared.options.binaryen_root, 'scripts', 'wasm2js.js')) as f: glue = f.read() - with open('js.js', 'w') as f: + js_file = wasm + '.js' + with open(js_file, 'w') as f: f.write(glue) f.write(main) f.write(wrapper) - out = fix_output(run_vm([shared.NODEJS, 'js.js', 'a.wasm'])) - if 'exception' in out: - # exception, so ignoring - wasm2js does not have normal wasm trapping, so opts can eliminate a trap - out = IGNORE - return out + return run_vm([shared.NODEJS, js_file, 'a.wasm']) def can_run_on_feature_opts(self, feature_opts): - return all([x in feature_opts for x in ['--disable-exception-handling', '--disable-simd', '--disable-threads', '--disable-bulk-memory', '--disable-nontrapping-float-to-int', '--disable-tail-call', '--disable-sign-ext', '--disable-reference-types']]) + # TODO: properly handle memory growth. right now the wasm2js handler + # uses --emscripten which assumes the Memory is created before, and + # wasm2js.js just starts with a size of 1 and no limit. We should switch + # to non-emscripten mode or adding memory information, or check + # specifically for growth here + if INITIAL_CONTENTS: + return False + return all([x in feature_opts for x in ['--disable-exception-handling', '--disable-simd', '--disable-threads', '--disable-bulk-memory', '--disable-nontrapping-float-to-int', '--disable-tail-call', '--disable-sign-ext', '--disable-reference-types', '--disable-multivalue', '--disable-gc']]) class Asyncify(TestCaseHandler): + frequency = 0.6 + def handle_pair(self, input, before_wasm, after_wasm, opts): # we must legalize in order to run in JS - run([in_bin('wasm-opt'), before_wasm, '--legalize-js-interface', '-o', before_wasm] + FEATURE_OPTS) - run([in_bin('wasm-opt'), after_wasm, '--legalize-js-interface', '-o', after_wasm] + FEATURE_OPTS) - before = fix_output(run_d8(before_wasm)) - after = fix_output(run_d8(after_wasm)) - - # TODO: also something that actually does async sleeps in the code, say - # on the logging commands? - # --remove-unused-module-elements removes the asyncify intrinsics, which are not valid to call + run([in_bin('wasm-opt'), before_wasm, '--legalize-js-interface', '-o', 'async.' + before_wasm] + FEATURE_OPTS) + run([in_bin('wasm-opt'), after_wasm, '--legalize-js-interface', '-o', 'async.' + after_wasm] + FEATURE_OPTS) + before_wasm = 'async.' + before_wasm + after_wasm = 'async.' + after_wasm + before = fix_output(run_d8_wasm(before_wasm)) + after = fix_output(run_d8_wasm(after_wasm)) + + try: + compare(before, after, 'Asyncify (before/after)') + except Exception: + # if we failed to just compare the builds before asyncify even runs, + # then it may use NaNs or be sensitive to legalization; ignore it + print('ignoring due to pre-asyncify difference') + return def do_asyncify(wasm): - cmd = [in_bin('wasm-opt'), wasm, '--asyncify', '-o', 't.wasm'] - if random.random() < 0.5: - cmd += ['--optimize-level=%d' % random.randint(1, 3)] - if random.random() < 0.5: - cmd += ['--shrink-level=%d' % random.randint(1, 2)] + cmd = [in_bin('wasm-opt'), wasm, '--asyncify', '-o', 'async.t.wasm'] + # if we allow NaNs, running binaryen optimizations and then + # executing in d8 may lead to different results due to NaN + # nondeterminism between VMs. + if not NANS: + if random.random() < 0.5: + cmd += ['--optimize-level=%d' % random.randint(1, 3)] + if random.random() < 0.5: + cmd += ['--shrink-level=%d' % random.randint(1, 2)] cmd += FEATURE_OPTS run(cmd) - out = run_d8('t.wasm') - # emit some status logging from asyncify - print(out.splitlines()[-1]) + out = run_d8_wasm('async.t.wasm') # ignore the output from the new asyncify API calls - the ones with asserts will trap, too - for ignore in ['[fuzz-exec] calling $asyncify_start_unwind\nexception!\n', - '[fuzz-exec] calling $asyncify_start_unwind\n', - '[fuzz-exec] calling $asyncify_start_rewind\nexception!\n', - '[fuzz-exec] calling $asyncify_start_rewind\n', - '[fuzz-exec] calling $asyncify_stop_rewind\n', - '[fuzz-exec] calling $asyncify_stop_unwind\n']: + for ignore in ['[fuzz-exec] calling asyncify_start_unwind\nexception!\n', + '[fuzz-exec] calling asyncify_start_unwind\n', + '[fuzz-exec] calling asyncify_start_rewind\nexception!\n', + '[fuzz-exec] calling asyncify_start_rewind\n', + '[fuzz-exec] calling asyncify_stop_rewind\n', + '[fuzz-exec] calling asyncify_stop_unwind\n']: out = out.replace(ignore, '') out = '\n'.join([l for l in out.splitlines() if 'asyncify: ' not in l]) return fix_output(out) @@ -332,12 +799,20 @@ before_asyncify = do_asyncify(before_wasm) after_asyncify = do_asyncify(after_wasm) - compare(before, after, 'Asyncify (before/after)') compare(before, before_asyncify, 'Asyncify (before/before_asyncify)') compare(before, after_asyncify, 'Asyncify (before/after_asyncify)') def can_run_on_feature_opts(self, feature_opts): - return all([x in feature_opts for x in ['--disable-exception-handling', '--disable-simd', '--disable-tail-call', '--disable-reference-types']]) + return all([x in feature_opts for x in ['--disable-exception-handling', '--disable-simd', '--disable-tail-call', '--disable-reference-types', '--disable-multivalue', '--disable-gc']]) + + +# Check that the text format round-trips without error. +class RoundtripText(TestCaseHandler): + frequency = 0.05 + + def handle(self, wasm): + run([in_bin('wasm-dis'), wasm, '-o', 'a.wast']) + run([in_bin('wasm-opt'), 'a.wast'] + FEATURE_OPTS) # The global list of all test case handlers @@ -347,99 +822,92 @@ CheckDeterminism(), Wasm2JS(), Asyncify(), - FuzzExecImmediately(), + RoundtripText() ] +test_suffixes = ['*.wasm', '*.wast', '*.wat'] +core_tests = shared.get_tests(shared.get_test_dir('.'), test_suffixes) +passes_tests = shared.get_tests(shared.get_test_dir('passes'), test_suffixes) +spec_tests = shared.get_tests(shared.get_test_dir('spec'), test_suffixes) +wasm2js_tests = shared.get_tests(shared.get_test_dir('wasm2js'), test_suffixes) +lld_tests = shared.get_tests(shared.get_test_dir('lld'), test_suffixes) +unit_tests = shared.get_tests(shared.get_test_dir(os.path.join('unit', 'input')), test_suffixes) +all_tests = core_tests + passes_tests + spec_tests + wasm2js_tests + lld_tests + unit_tests + + # Do one test, given an input file for -ttf and some optimizations to run -def test_one(random_input, opts): +def test_one(random_input, given_wasm): randomize_pass_debug() randomize_feature_opts() + randomize_fuzz_settings() + pick_initial_contents() - run([in_bin('wasm-opt'), random_input, '-ttf', '-o', 'a.wasm'] + FUZZ_OPTS + FEATURE_OPTS) + opts = randomize_opt_flags() + print('randomized opts:', ' '.join(opts)) + print() + + if given_wasm: + # if given a wasm file we want to use it as is, but we also want to + # apply properties like not having any NaNs, which the original fuzz + # wasm had applied. that is, we need to preserve properties like not + # having nans through reduction. + run([in_bin('wasm-opt'), given_wasm, '-o', 'a.wasm'] + FUZZ_OPTS + FEATURE_OPTS) + else: + # emit the target features section so that reduction can work later, + # without needing to specify the features + generate_command = [in_bin('wasm-opt'), random_input, '-ttf', '-o', 'a.wasm', '--emit-target-features'] + FUZZ_OPTS + FEATURE_OPTS + if INITIAL_CONTENTS: + generate_command += ['--initial-fuzz=' + INITIAL_CONTENTS] + if PRINT_WATS: + printed = run(generate_command + ['--print']) + with open('a.printed.wast', 'w') as f: + f.write(printed) + else: + run(generate_command) wasm_size = os.stat('a.wasm').st_size bytes = wasm_size print('pre wasm size:', wasm_size) - # first, run all handlers that use get_commands(). those don't need the second wasm in the - # pair, since they all they do is return their commands, and expect us to run them, and - # those commands do the actual testing, by operating on the original input wasm file. by - # fuzzing the get_commands() ones first we can find bugs in creating the second wasm (that - # has the opts run on it) before we try to create it later down for the passes that - # expect to get it as one of their inputs. - for testcase_handler in testcase_handlers: - if testcase_handler.can_run_on_feature_opts(FEATURE_OPTS): - if hasattr(testcase_handler, 'get_commands'): - print('running testcase handler:', testcase_handler.__class__.__name__) - # if the testcase handler supports giving us a list of commands, then we can get those commands - # and use them to do useful things like automatic reduction. in this case we give it the input - # wasm plus opts and a random seed (if it needs any internal randomness; we want to have the same - # value there if we reduce). - random_seed = random.random() - - # gets commands from the handler, for a given set of optimizations. this is all the commands - # needed to run the testing that that handler wants to do. - def get_commands(opts): - return testcase_handler.get_commands(wasm='a.wasm', opts=opts + FUZZ_OPTS + FEATURE_OPTS, random_seed=random_seed) - - def write_commands_and_test(opts): - commands = get_commands(opts) - write_commands(commands, 't.sh') - subprocess.check_call(['bash', 't.sh']) - - try: - write_commands_and_test(opts) - except subprocess.CalledProcessError: - print('') - print('====================') - print('Found a problem! See "t.sh" for the commands, and "input.wasm" for the input. Auto-reducing to "reduced.wasm" and "tt.sh"...') - print('====================') - print('') - # first, reduce the fuzz opts: keep removing until we can't - while 1: - reduced = False - for i in range(len(opts)): - # some opts can't be removed, like --flatten --dfo requires flatten - if opts[i] == '--flatten': - if i != len(opts) - 1 and opts[i + 1] in ('--dfo', '--local-cse', '--rereloop'): - continue - shorter = opts[:i] + opts[i + 1:] - try: - write_commands_and_test(shorter) - except subprocess.CalledProcessError: - # great, the shorter one is good as well - opts = shorter - print('reduced opts to ' + ' '.join(opts)) - reduced = True - break - if not reduced: - break - # second, reduce the wasm - # copy a.wasm to a safe place as the reducer will use the commands on new inputs, and the commands work on a.wasm - shutil.copyfile('a.wasm', 'input.wasm') - # add a command to verify the input. this lets the reducer see that it is indeed working on the input correctly - commands = [in_bin('wasm-opt') + ' -all a.wasm'] + get_commands(opts) - write_commands(commands, 'tt.sh') - # reduce the input to something smaller with the same behavior on the script - subprocess.check_call([in_bin('wasm-reduce'), 'input.wasm', '--command=bash tt.sh', '-t', 'a.wasm', '-w', 'reduced.wasm']) - print('Finished reduction. See "tt.sh" and "reduced.wasm".') - sys.exit(1) - print('') - - # created a second wasm for handlers that want to look at pairs. - run([in_bin('wasm-opt'), 'a.wasm', '-o', 'b.wasm'] + opts + FUZZ_OPTS + FEATURE_OPTS) + # create a second wasm for handlers that want to look at pairs. + generate_command = [in_bin('wasm-opt'), 'a.wasm', '-o', 'b.wasm'] + opts + FUZZ_OPTS + FEATURE_OPTS + if PRINT_WATS: + printed = run(generate_command + ['--print']) + with open('b.printed.wast', 'w') as f: + f.write(printed) + else: + run(generate_command) wasm_size = os.stat('b.wasm').st_size bytes += wasm_size print('post wasm size:', wasm_size) - for testcase_handler in testcase_handlers: - if testcase_handler.can_run_on_feature_opts(FEATURE_OPTS): - if not hasattr(testcase_handler, 'get_commands'): - print('running testcase handler:', testcase_handler.__class__.__name__) - # let the testcase handler handle this testcase however it wants. in this case we give it - # the input and both wasms. - testcase_handler.handle_pair(input=random_input, before_wasm='a.wasm', after_wasm='b.wasm', opts=opts + FUZZ_OPTS + FEATURE_OPTS) - print('') + # first, find which handlers can even run here + relevant_handlers = [handler for handler in testcase_handlers if not hasattr(handler, 'get_commands') and handler.can_run_on_feature_opts(FEATURE_OPTS)] + if len(relevant_handlers) == 0: + return 0 + # filter by frequency + filtered_handlers = [handler for handler in relevant_handlers if random.random() < handler.frequency] + if len(filtered_handlers) == 0: + # pick at least one, to not waste the effort we put into making the wasm + filtered_handlers = [random.choice(relevant_handlers)] + # run only some of the pair handling handlers. if we ran them all all the + # time that would mean we have less variety in wasm files and passes run + # on them in the same amount of time. + NUM_PAIR_HANDLERS = 3 + used_handlers = set() + for i in range(NUM_PAIR_HANDLERS): + testcase_handler = random.choice(filtered_handlers) + if testcase_handler in used_handlers: + continue + used_handlers.add(testcase_handler) + assert testcase_handler.can_run_on_feature_opts(FEATURE_OPTS) + print('running testcase handler:', testcase_handler.__class__.__name__) + testcase_handler.increment_runs() + + # let the testcase handler handle this testcase however it wants. in this case we give it + # the input and both wasms. + testcase_handler.handle_pair(input=random_input, before_wasm='a.wasm', after_wasm='b.wasm', opts=opts + FEATURE_OPTS) + print('') return bytes @@ -506,17 +974,32 @@ ] -def get_multiple_opt_choices(): - ret = [] +def randomize_opt_flags(): + flag_groups = [] + has_flatten = False # core opts while 1: choice = random.choice(opt_choices) - if '--flatten' in ret and '--flatten' in choice: - print('avoiding multiple --flatten in a single command, due to exponential overhead') - else: - ret += choice - if len(ret) > 20 or random.random() < 0.3: + if '--flatten' in choice or '-O4' in choice: + if has_flatten: + print('avoiding multiple --flatten in a single command, due to exponential overhead') + continue + if '--disable-exception-handling' not in FEATURE_OPTS: + print('avoiding --flatten due to exception catching which does not support it yet') + continue + if INITIAL_CONTENTS and os.path.getsize(INITIAL_CONTENTS) > 2000: + print('avoiding --flatten due using a large amount of initial contents, which may blow up') + continue + else: + has_flatten = True + flag_groups.append(choice) + if len(flag_groups) > 20 or random.random() < 0.3: break + # maybe add an extra round trip + if random.random() < 0.5: + pos = random.randint(0, len(flag_groups)) + flag_groups = flag_groups[:pos] + [['--roundtrip']] + flag_groups[pos:] + ret = [flag for group in flag_groups for flag in group] # modifiers (if not already implied by a -O? option) if '-O' not in str(ret): if random.random() < 0.5: @@ -529,31 +1012,216 @@ # main -if not NANS: - FUZZ_OPTS += ['--no-fuzz-nans'] - # possible feature options that are sometimes passed to the tools. this # contains the list of all possible feature flags we can disable (after # we enable all before that in the constant options) -POSSIBLE_FEATURE_OPTS = run([in_bin('wasm-opt'), '--print-features', '-all', in_binaryen('test', 'hello_world.wat'), '-all']).replace('--enable', '--disable').strip().split('\n') +POSSIBLE_FEATURE_OPTS = run([in_bin('wasm-opt'), '--print-features', in_binaryen('test', 'hello_world.wat')] + CONSTANT_FEATURE_OPTS).replace('--enable', '--disable').strip().split('\n') print('POSSIBLE_FEATURE_OPTS:', POSSIBLE_FEATURE_OPTS) +# some features depend on other features, so if a required feature is +# disabled, its dependent features need to be disabled as well. +IMPLIED_FEATURE_OPTS = { + '--disable-reference-types': ['--disable-exception-handling', '--disable-gc'] +} + if __name__ == '__main__': - print('checking infinite random inputs') - random.seed(time.time() * os.getpid()) - temp = 'input.dat' + # if we are given a seed, run exactly that one testcase. otherwise, + # run new ones until we fail + # if we are given a seed, we can also be given a wasm file, which we use + # instead of the randomly generating one. this can be useful for + # reduction. + given_wasm = None + if len(shared.requested) >= 1: + given_seed = int(shared.requested[0]) + print('checking a single given seed', given_seed) + if len(shared.requested) >= 2: + given_wasm = shared.requested[1] + print('using given wasm file', given_wasm) + else: + given_seed = None + print('checking infinite random inputs') + seed = time.time() * os.getpid() + raw_input_data = 'input.dat' counter = 0 - bytes = 0 # wasm bytes tested + total_wasm_size = 0 + total_input_size = 0 + total_input_size_squares = 0 start_time = time.time() while True: counter += 1 - f = open(temp, 'w') - size = random_size() + if given_seed is not None: + seed = given_seed + given_seed_passed = True + else: + seed = random.randint(0, 1 << 64) + random.seed(seed) + input_size = random_size() + total_input_size += input_size + total_input_size_squares += input_size ** 2 print('') - print('ITERATION:', counter, 'size:', size, 'speed:', counter / (time.time() - start_time), 'iters/sec, ', bytes / (time.time() - start_time), 'bytes/sec\n') - for x in range(size): - f.write(chr(random.randint(0, 255))) - f.close() - opts = get_multiple_opt_choices() - print('opts:', ' '.join(opts)) - bytes += test_one('input.dat', opts) + mean = float(total_input_size) / counter + mean_of_squares = float(total_input_size_squares) / counter + stddev = math.sqrt(mean_of_squares - (mean ** 2)) + elapsed = max(0.000001, time.time() - start_time) + print('ITERATION:', counter, 'seed:', seed, 'size:', input_size, + '(mean:', str(mean) + ', stddev:', str(stddev) + ')', + 'speed:', counter / elapsed, + 'iters/sec, ', total_wasm_size / elapsed, + 'wasm_bytes/sec\n') + with open(raw_input_data, 'wb') as f: + f.write(bytes([random.randint(0, 255) for x in range(input_size)])) + assert os.path.getsize(raw_input_data) == input_size + # remove the generated wasm file, so that we can tell if the fuzzer + # fails to create one + if os.path.exists('a.wasm'): + os.remove('a.wasm') + # run an iteration of the fuzzer + try: + total_wasm_size += test_one(raw_input_data, given_wasm) + except KeyboardInterrupt: + print('(stopping by user request)') + break + except Exception as e: + # print the exception manually, so that we can show our message at + # the very end where it won't be missed + ex_type, ex, tb = sys.exc_info() + print('!') + print('-----------------------------------------') + print('Exception:') + traceback.print_tb(tb) + print('-----------------------------------------') + print('!') + for arg in e.args: + print(arg) + if given_seed is not None: + given_seed_passed = False + + # We want to generate a template reducer script only when there is + # no given wasm file. That we have a given wasm file means we are no + # longer working on the original test case but modified one, which + # is likely to be called within wasm-reduce script itself, so + # original.wasm and reduce.sh should not be overwritten. + if not given_wasm: + # We can't do this if a.wasm doesn't exist, which can be the + # case if we failed to even generate the wasm. + if not os.path.exists('a.wasm'): + print('''\ +================================================================================ +You found a bug in the fuzzer itself! It failed to generate a valid wasm file +from the random input. Please report it with + + seed: %(seed)d + +and the exact version of Binaryen you found it on, plus the exact Python +version (hopefully deterministic random numbers will be identical). + +You can run that testcase again with "fuzz_opt.py %(seed)d" + +(We can't automatically reduce this testcase since we can only run the reducer +on valid wasm files.) +================================================================================ + ''' % {'seed': seed}) + break + # show some useful info about filing a bug and reducing the + # testcase (to make reduction simple, save "original.wasm" on + # the side, so that we can autoreduce using the name "a.wasm" + # which we use internally) + original_wasm = os.path.abspath('original.wasm') + shutil.copyfile('a.wasm', original_wasm) + # write out a useful reduce.sh + with open('reduce.sh', 'w') as reduce_sh: + reduce_sh.write('''\ +# check the input is even a valid wasm file +%(wasm_opt)s --detect-features %(temp_wasm)s +echo "should be 0:" $? + +# run the command +./scripts/fuzz_opt.py --binaryen-bin %(bin)s %(seed)d %(temp_wasm)s > o 2> e +echo "should be 1:" $? + +# +# You may want to print out part of "o" or "e", if the output matters and not +# just the return code. For example, +# +# cat o | tail -n 10 +# +# would print out the last few lines of stdout, which might be useful if that +# mentions the specific error you want. Make sure that includes the right +# details (sometimes stderr matters too), and preferably no more (less details +# allow more reduction, but raise the risk of it reducing to something you don't +# quite want). +# +# To do a "dry run" of what the reducer will do, copy the original file to the +# test file that this script will run on, +# +# cp %(original_wasm)s %(temp_wasm)s +# +# and then run +# +# bash %(reduce_sh)s +# +# You may also need to add --timeout 5 or such if the testcase is a slow one. +# + ''' % {'wasm_opt': in_bin('wasm-opt'), + 'bin': shared.options.binaryen_bin, + 'seed': seed, + 'original_wasm': original_wasm, + 'temp_wasm': os.path.abspath('t.wasm'), + 'reduce_sh': os.path.abspath('reduce.sh')}) + + print('''\ +================================================================================ +You found a bug! Please report it with + + seed: %(seed)d + +and the exact version of Binaryen you found it on, plus the exact Python +version (hopefully deterministic random numbers will be identical). + +You can run that testcase again with "fuzz_opt.py %(seed)d" + +The initial wasm file used here is saved as %(original_wasm)s + +You can reduce the testcase by running this now: + +|||| +vvvv + + +%(wasm_reduce)s %(original_wasm)s '--command=bash %(reduce_sh)s' -t %(temp_wasm)s -w %(working_wasm)s + + +^^^^ +|||| + +Make sure to verify by eye that the output says + +should be 0: 0 +should be 1: 1 + +You can also read "%(reduce_sh)s" which has been filled out for you and includes +docs and suggestions. + +After reduction, the reduced file will be in %(working_wasm)s +================================================================================ + ''' % {'seed': seed, + 'original_wasm': original_wasm, + 'temp_wasm': os.path.abspath('t.wasm'), + 'working_wasm': os.path.abspath('w.wasm'), + 'wasm_reduce': in_bin('wasm-reduce'), + 'reduce_sh': os.path.abspath('reduce.sh')}) + break + if given_seed is not None: + break + + print('\nInvocations so far:') + for testcase_handler in testcase_handlers: + print(' ', testcase_handler.__class__.__name__ + ':', testcase_handler.count_runs()) + + if given_seed is not None: + if given_seed_passed: + print('(finished running seed %d without error)' % given_seed) + sys.exit(0) + else: + print('(finished running seed %d, see error above)' % given_seed) + sys.exit(1) diff -Nru binaryen-91/scripts/fuzz_shell.js binaryen-99/scripts/fuzz_shell.js --- binaryen-91/scripts/fuzz_shell.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/scripts/fuzz_shell.js 2021-01-07 20:01:06.000000000 +0000 @@ -55,10 +55,12 @@ if (typeof imports[module][i] === 'function') { (function(module, i) { ret[module][i] = function() { + refreshView(); if (!Asyncify.sleeping) { - // Sleep if asyncify support is present, and at a certain - // probability. - if (exports.asyncify_start_unwind && + // Sleep if asyncify support is present (which also requires + // that the memory be exported), and at a certain probability. + if (exports.asyncify_start_unwind && + view && detrand() < 0.5) { // We are called in order to start a sleep/unwind. console.log('asyncify: sleep in ' + i + '...'); @@ -178,8 +180,14 @@ // Handle the exports. var exports = instance.exports; exports = Asyncify.instrumentExports(exports); -if (exports.memory) { - var view = new Int32Array(exports.memory.buffer); + +var view; + +// Recreate the view. This is important both initially and after a growth. +function refreshView() { + if (exports.memory) { + view = new Int32Array(exports.memory.buffer); + } } // Run the wasm. @@ -196,7 +204,7 @@ Asyncify.check(); if (typeof exports[e] !== 'function') return; try { - console.log('[fuzz-exec] calling $' + e); + console.log('[fuzz-exec] calling ' + e); var result = exports[e](); if (typeof result !== 'undefined') { console.log('[fuzz-exec] note result: $' + e + ' => ' + result); diff -Nru binaryen-91/scripts/gen-s-parser.py binaryen-99/scripts/gen-s-parser.py --- binaryen-91/scripts/gen-s-parser.py 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/scripts/gen-s-parser.py 2021-01-07 20:01:06.000000000 +0000 @@ -43,16 +43,6 @@ ("data.drop", "makeDataDrop(s)"), ("memory.copy", "makeMemoryCopy(s)"), ("memory.fill", "makeMemoryFill(s)"), - ("push", "makePush(s)"), - ("i32.pop", "makePop(Type::i32)"), - ("i64.pop", "makePop(Type::i64)"), - ("f32.pop", "makePop(Type::f32)"), - ("f64.pop", "makePop(Type::f64)"), - ("v128.pop", "makePop(Type::v128)"), - ("funcref.pop", "makePop(Type::funcref)"), - ("anyref.pop", "makePop(Type::anyref)"), - ("nullref.pop", "makePop(Type::nullref)"), - ("exnref.pop", "makePop(Type::exnref)"), ("i32.load", "makeLoad(s, Type::i32, /*isAtomic=*/false)"), ("i64.load", "makeLoad(s, Type::i64, /*isAtomic=*/false)"), ("f32.load", "makeLoad(s, Type::f32, /*isAtomic=*/false)"), @@ -76,8 +66,8 @@ ("i64.store8", "makeStore(s, Type::i64, /*isAtomic=*/false)"), ("i64.store16", "makeStore(s, Type::i64, /*isAtomic=*/false)"), ("i64.store32", "makeStore(s, Type::i64, /*isAtomic=*/false)"), - ("memory.size", "makeHost(s, HostOp::MemorySize)"), - ("memory.grow", "makeHost(s, HostOp::MemoryGrow)"), + ("memory.size", "makeMemorySize(s)"), + ("memory.grow", "makeMemoryGrow(s)"), ("i32.const", "makeConst(s, Type::i32)"), ("i64.const", "makeConst(s, Type::i64)"), ("f32.const", "makeConst(s, Type::f32)"), @@ -211,9 +201,9 @@ ("i64.extend16_s", "makeUnary(s, UnaryOp::ExtendS16Int64)"), ("i64.extend32_s", "makeUnary(s, UnaryOp::ExtendS32Int64)"), # atomic instructions - ("atomic.notify", "makeAtomicNotify(s)"), - ("i32.atomic.wait", "makeAtomicWait(s, Type::i32)"), - ("i64.atomic.wait", "makeAtomicWait(s, Type::i64)"), + ("memory.atomic.notify", "makeAtomicNotify(s)"), + ("memory.atomic.wait32", "makeAtomicWait(s, Type::i32)"), + ("memory.atomic.wait64", "makeAtomicWait(s, Type::i64)"), ("atomic.fence", "makeAtomicFence(s)"), ("i32.atomic.load8_u", "makeLoad(s, Type::i32, /*isAtomic=*/true)"), ("i32.atomic.load16_u", "makeLoad(s, Type::i32, /*isAtomic=*/true)"), @@ -342,6 +332,7 @@ ("i32x4.le_u", "makeBinary(s, BinaryOp::LeUVecI32x4)"), ("i32x4.ge_s", "makeBinary(s, BinaryOp::GeSVecI32x4)"), ("i32x4.ge_u", "makeBinary(s, BinaryOp::GeUVecI32x4)"), + ("i64x2.eq", "makeBinary(s, BinaryOp::EqVecI64x2)"), ("f32x4.eq", "makeBinary(s, BinaryOp::EqVecF32x4)"), ("f32x4.ne", "makeBinary(s, BinaryOp::NeVecF32x4)"), ("f32x4.lt", "makeBinary(s, BinaryOp::LtVecF32x4)"), @@ -360,9 +351,24 @@ ("v128.xor", "makeBinary(s, BinaryOp::XorVec128)"), ("v128.andnot", "makeBinary(s, BinaryOp::AndNotVec128)"), ("v128.bitselect", "makeSIMDTernary(s, SIMDTernaryOp::Bitselect)"), + ("v8x16.signselect", "makeSIMDTernary(s, SIMDTernaryOp::SignSelectVec8x16)"), + ("v16x8.signselect", "makeSIMDTernary(s, SIMDTernaryOp::SignSelectVec16x8)"), + ("v32x4.signselect", "makeSIMDTernary(s, SIMDTernaryOp::SignSelectVec32x4)"), + ("v64x2.signselect", "makeSIMDTernary(s, SIMDTernaryOp::SignSelectVec64x2)"), + ("v128.load8_lane", "makeSIMDLoadStoreLane(s, LoadLaneVec8x16)"), + ("v128.load16_lane", "makeSIMDLoadStoreLane(s, LoadLaneVec16x8)"), + ("v128.load32_lane", "makeSIMDLoadStoreLane(s, LoadLaneVec32x4)"), + ("v128.load64_lane", "makeSIMDLoadStoreLane(s, LoadLaneVec64x2)"), + ("v128.store8_lane", "makeSIMDLoadStoreLane(s, StoreLaneVec8x16)"), + ("v128.store16_lane", "makeSIMDLoadStoreLane(s, StoreLaneVec16x8)"), + ("v128.store32_lane", "makeSIMDLoadStoreLane(s, StoreLaneVec32x4)"), + ("v128.store64_lane", "makeSIMDLoadStoreLane(s, StoreLaneVec64x2)"), + ("i8x16.popcnt", "makeUnary(s, UnaryOp::PopcntVecI8x16)"), + ("i8x16.abs", "makeUnary(s, UnaryOp::AbsVecI8x16)"), ("i8x16.neg", "makeUnary(s, UnaryOp::NegVecI8x16)"), ("i8x16.any_true", "makeUnary(s, UnaryOp::AnyTrueVecI8x16)"), ("i8x16.all_true", "makeUnary(s, UnaryOp::AllTrueVecI8x16)"), + ("i8x16.bitmask", "makeUnary(s, UnaryOp::BitmaskVecI8x16)"), ("i8x16.shl", "makeSIMDShift(s, SIMDShiftOp::ShlVecI8x16)"), ("i8x16.shr_s", "makeSIMDShift(s, SIMDShiftOp::ShrSVecI8x16)"), ("i8x16.shr_u", "makeSIMDShift(s, SIMDShiftOp::ShrUVecI8x16)"), @@ -378,9 +384,11 @@ ("i8x16.max_s", "makeBinary(s, BinaryOp::MaxSVecI8x16)"), ("i8x16.max_u", "makeBinary(s, BinaryOp::MaxUVecI8x16)"), ("i8x16.avgr_u", "makeBinary(s, BinaryOp::AvgrUVecI8x16)"), + ("i16x8.abs", "makeUnary(s, UnaryOp::AbsVecI16x8)"), ("i16x8.neg", "makeUnary(s, UnaryOp::NegVecI16x8)"), ("i16x8.any_true", "makeUnary(s, UnaryOp::AnyTrueVecI16x8)"), ("i16x8.all_true", "makeUnary(s, UnaryOp::AllTrueVecI16x8)"), + ("i16x8.bitmask", "makeUnary(s, UnaryOp::BitmaskVecI16x8)"), ("i16x8.shl", "makeSIMDShift(s, SIMDShiftOp::ShlVecI16x8)"), ("i16x8.shr_s", "makeSIMDShift(s, SIMDShiftOp::ShrSVecI16x8)"), ("i16x8.shr_u", "makeSIMDShift(s, SIMDShiftOp::ShrUVecI16x8)"), @@ -396,9 +404,16 @@ ("i16x8.max_s", "makeBinary(s, BinaryOp::MaxSVecI16x8)"), ("i16x8.max_u", "makeBinary(s, BinaryOp::MaxUVecI16x8)"), ("i16x8.avgr_u", "makeBinary(s, BinaryOp::AvgrUVecI16x8)"), + ("i16x8.q15mulr_sat_s", "makeBinary(s, BinaryOp::Q15MulrSatSVecI16x8)"), + ("i16x8.extmul_low_i8x16_s", "makeBinary(s, BinaryOp::ExtMulLowSVecI16x8)"), + ("i16x8.extmul_high_i8x16_s", "makeBinary(s, BinaryOp::ExtMulHighSVecI16x8)"), + ("i16x8.extmul_low_i8x16_u", "makeBinary(s, BinaryOp::ExtMulLowUVecI16x8)"), + ("i16x8.extmul_high_i8x16_u", "makeBinary(s, BinaryOp::ExtMulHighUVecI16x8)"), + ("i32x4.abs", "makeUnary(s, UnaryOp::AbsVecI32x4)"), ("i32x4.neg", "makeUnary(s, UnaryOp::NegVecI32x4)"), ("i32x4.any_true", "makeUnary(s, UnaryOp::AnyTrueVecI32x4)"), ("i32x4.all_true", "makeUnary(s, UnaryOp::AllTrueVecI32x4)"), + ("i32x4.bitmask", "makeUnary(s, UnaryOp::BitmaskVecI32x4)"), ("i32x4.shl", "makeSIMDShift(s, SIMDShiftOp::ShlVecI32x4)"), ("i32x4.shr_s", "makeSIMDShift(s, SIMDShiftOp::ShrSVecI32x4)"), ("i32x4.shr_u", "makeSIMDShift(s, SIMDShiftOp::ShrUVecI32x4)"), @@ -410,14 +425,22 @@ ("i32x4.max_s", "makeBinary(s, BinaryOp::MaxSVecI32x4)"), ("i32x4.max_u", "makeBinary(s, BinaryOp::MaxUVecI32x4)"), ("i32x4.dot_i16x8_s", "makeBinary(s, BinaryOp::DotSVecI16x8ToVecI32x4)"), + ("i32x4.extmul_low_i16x8_s", "makeBinary(s, BinaryOp::ExtMulLowSVecI32x4)"), + ("i32x4.extmul_high_i16x8_s", "makeBinary(s, BinaryOp::ExtMulHighSVecI32x4)"), + ("i32x4.extmul_low_i16x8_u", "makeBinary(s, BinaryOp::ExtMulLowUVecI32x4)"), + ("i32x4.extmul_high_i16x8_u", "makeBinary(s, BinaryOp::ExtMulHighUVecI32x4)"), ("i64x2.neg", "makeUnary(s, UnaryOp::NegVecI64x2)"), - ("i64x2.any_true", "makeUnary(s, UnaryOp::AnyTrueVecI64x2)"), - ("i64x2.all_true", "makeUnary(s, UnaryOp::AllTrueVecI64x2)"), + ("i64x2.bitmask", "makeUnary(s, UnaryOp::BitmaskVecI64x2)"), ("i64x2.shl", "makeSIMDShift(s, SIMDShiftOp::ShlVecI64x2)"), ("i64x2.shr_s", "makeSIMDShift(s, SIMDShiftOp::ShrSVecI64x2)"), ("i64x2.shr_u", "makeSIMDShift(s, SIMDShiftOp::ShrUVecI64x2)"), ("i64x2.add", "makeBinary(s, BinaryOp::AddVecI64x2)"), ("i64x2.sub", "makeBinary(s, BinaryOp::SubVecI64x2)"), + ("i64x2.mul", "makeBinary(s, BinaryOp::MulVecI64x2)"), + ("i64x2.extmul_low_i32x4_s", "makeBinary(s, BinaryOp::ExtMulLowSVecI64x2)"), + ("i64x2.extmul_high_i32x4_s", "makeBinary(s, BinaryOp::ExtMulHighSVecI64x2)"), + ("i64x2.extmul_low_i32x4_u", "makeBinary(s, BinaryOp::ExtMulLowUVecI64x2)"), + ("i64x2.extmul_high_i32x4_u", "makeBinary(s, BinaryOp::ExtMulHighUVecI64x2)"), ("f32x4.abs", "makeUnary(s, UnaryOp::AbsVecF32x4)"), ("f32x4.neg", "makeUnary(s, UnaryOp::NegVecF32x4)"), ("f32x4.sqrt", "makeUnary(s, UnaryOp::SqrtVecF32x4)"), @@ -429,6 +452,12 @@ ("f32x4.div", "makeBinary(s, BinaryOp::DivVecF32x4)"), ("f32x4.min", "makeBinary(s, BinaryOp::MinVecF32x4)"), ("f32x4.max", "makeBinary(s, BinaryOp::MaxVecF32x4)"), + ("f32x4.pmin", "makeBinary(s, BinaryOp::PMinVecF32x4)"), + ("f32x4.pmax", "makeBinary(s, BinaryOp::PMaxVecF32x4)"), + ("f32x4.ceil", "makeUnary(s, UnaryOp::CeilVecF32x4)"), + ("f32x4.floor", "makeUnary(s, UnaryOp::FloorVecF32x4)"), + ("f32x4.trunc", "makeUnary(s, UnaryOp::TruncVecF32x4)"), + ("f32x4.nearest", "makeUnary(s, UnaryOp::NearestVecF32x4)"), ("f64x2.abs", "makeUnary(s, UnaryOp::AbsVecF64x2)"), ("f64x2.neg", "makeUnary(s, UnaryOp::NegVecF64x2)"), ("f64x2.sqrt", "makeUnary(s, UnaryOp::SqrtVecF64x2)"), @@ -440,6 +469,12 @@ ("f64x2.div", "makeBinary(s, BinaryOp::DivVecF64x2)"), ("f64x2.min", "makeBinary(s, BinaryOp::MinVecF64x2)"), ("f64x2.max", "makeBinary(s, BinaryOp::MaxVecF64x2)"), + ("f64x2.pmin", "makeBinary(s, BinaryOp::PMinVecF64x2)"), + ("f64x2.pmax", "makeBinary(s, BinaryOp::PMaxVecF64x2)"), + ("f64x2.ceil", "makeUnary(s, UnaryOp::CeilVecF64x2)"), + ("f64x2.floor", "makeUnary(s, UnaryOp::FloorVecF64x2)"), + ("f64x2.trunc", "makeUnary(s, UnaryOp::TruncVecF64x2)"), + ("f64x2.nearest", "makeUnary(s, UnaryOp::NearestVecF64x2)"), ("i32x4.trunc_sat_f32x4_s", "makeUnary(s, UnaryOp::TruncSatSVecF32x4ToVecI32x4)"), ("i32x4.trunc_sat_f32x4_u", "makeUnary(s, UnaryOp::TruncSatUVecF32x4ToVecI32x4)"), ("i64x2.trunc_sat_f64x2_s", "makeUnary(s, UnaryOp::TruncSatSVecF64x2ToVecI64x2)"), @@ -458,6 +493,8 @@ ("i32x4.load16x4_u", "makeSIMDLoad(s, SIMDLoadOp::LoadExtUVec16x4ToVecI32x4)"), ("i64x2.load32x2_s", "makeSIMDLoad(s, SIMDLoadOp::LoadExtSVec32x2ToVecI64x2)"), ("i64x2.load32x2_u", "makeSIMDLoad(s, SIMDLoadOp::LoadExtUVec32x2ToVecI64x2)"), + ("v128.load32_zero", "makeSIMDLoad(s, SIMDLoadOp::Load32Zero)"), + ("v128.load64_zero", "makeSIMDLoad(s, SIMDLoadOp::Load64Zero)"), ("i8x16.narrow_i16x8_s", "makeBinary(s, BinaryOp::NarrowSVecI16x8ToVecI8x16)"), ("i8x16.narrow_i16x8_u", "makeBinary(s, BinaryOp::NarrowUVecI16x8ToVecI8x16)"), ("i16x8.narrow_i32x4_s", "makeBinary(s, BinaryOp::NarrowSVecI32x4ToVecI16x8)"), @@ -470,7 +507,18 @@ ("i32x4.widen_high_i16x8_s", "makeUnary(s, UnaryOp::WidenHighSVecI16x8ToVecI32x4)"), ("i32x4.widen_low_i16x8_u", "makeUnary(s, UnaryOp::WidenLowUVecI16x8ToVecI32x4)"), ("i32x4.widen_high_i16x8_u", "makeUnary(s, UnaryOp::WidenHighUVecI16x8ToVecI32x4)"), + ("i64x2.widen_low_i32x4_s", "makeUnary(s, UnaryOp::WidenLowSVecI32x4ToVecI64x2)"), + ("i64x2.widen_high_i32x4_s", "makeUnary(s, UnaryOp::WidenHighSVecI32x4ToVecI64x2)"), + ("i64x2.widen_low_i32x4_u", "makeUnary(s, UnaryOp::WidenLowUVecI32x4ToVecI64x2)"), + ("i64x2.widen_high_i32x4_u", "makeUnary(s, UnaryOp::WidenHighUVecI32x4ToVecI64x2)"), ("v8x16.swizzle", "makeBinary(s, BinaryOp::SwizzleVec8x16)"), + ("i16x8.extadd_pairwise_i8x16_s", "makeUnary(s, UnaryOp::ExtAddPairwiseSVecI8x16ToI16x8)"), + ("i16x8.extadd_pairwise_i8x16_u", "makeUnary(s, UnaryOp::ExtAddPairwiseUVecI8x16ToI16x8)"), + ("i32x4.extadd_pairwise_i16x8_s", "makeUnary(s, UnaryOp::ExtAddPairwiseSVecI16x8ToI32x4)"), + ("i32x4.extadd_pairwise_i16x8_u", "makeUnary(s, UnaryOp::ExtAddPairwiseUVecI16x8ToI32x4)"), + # prefetch instructions + ("prefetch.t", "makePrefetch(s, PrefetchOp::PrefetchTemporal)"), + ("prefetch.nt", "makePrefetch(s, PrefetchOp::PrefetchNontemporal)"), # reference types instructions # TODO Add table instructions ("ref.null", "makeRefNull(s)"), @@ -480,7 +528,37 @@ ("try", "makeTry(s)"), ("throw", "makeThrow(s)"), ("rethrow", "makeRethrow(s)"), - ("br_on_exn", "makeBrOnExn(s)") + ("br_on_exn", "makeBrOnExn(s)"), + # Multivalue pseudoinstructions + ("tuple.make", "makeTupleMake(s)"), + ("tuple.extract", "makeTupleExtract(s)"), + ("pop", "makePop(s)"), + # Typed function references instructions + ("call_ref", "makeCallRef(s, /*isReturn=*/false)"), + ("return_call_ref", "makeCallRef(s, /*isReturn=*/true)"), + # GC + ("ref.eq", "makeRefEq(s)"), + ("i31.new", "makeI31New(s)"), + ("i31.get_s", "makeI31Get(s, true)"), + ("i31.get_u", "makeI31Get(s, false)"), + ("ref.test", "makeRefTest(s)"), + ("ref.cast", "makeRefCast(s)"), + ("br_on_cast", "makeBrOnCast(s)"), + ("rtt.canon", "makeRttCanon(s)"), + ("rtt.sub", "makeRttSub(s)"), + ("struct.new_with_rtt", "makeStructNew(s, false)"), + ("struct.new_default_with_rtt", "makeStructNew(s, true)"), + ("struct.get", "makeStructGet(s)"), + ("struct.get_s", "makeStructGet(s, true)"), + ("struct.get_u", "makeStructGet(s, false)"), + ("struct.set", "makeStructSet(s)"), + ("array.new_with_rtt", "makeArrayNew(s, false)"), + ("array.new_default_with_rtt", "makeArrayNew(s, true)"), + ("array.get", "makeArrayGet(s)"), + ("array.get_s", "makeArrayGet(s, true)"), + ("array.get_u", "makeArrayGet(s, false)"), + ("array.set", "makeArraySet(s)"), + ("array.len", "makeArrayLen(s)") ] diff -Nru binaryen-91/scripts/not.py binaryen-99/scripts/not.py --- binaryen-91/scripts/not.py 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/scripts/not.py 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 + +# Copyright 2020 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. + +import sys +import subprocess + + +# Emulate the `not` tool from LLVM's test infrastructure for use with lit and +# FileCheck. It succeeds if the given subcommand fails and vice versa. +def main(): + cmd = sys.argv[1:] + result = subprocess.run(cmd) + sys.exit(0 if result.returncode != 0 else 1) + + +if __name__ == '__main__': + main() diff -Nru binaryen-91/scripts/process_optimize_instructions.py binaryen-99/scripts/process_optimize_instructions.py --- binaryen-91/scripts/process_optimize_instructions.py 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/scripts/process_optimize_instructions.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -#!/usr/bin/python - -import os - -root = os.path.dirname(os.path.dirname(__file__)) - -infile = os.path.join(root, 'src', 'passes', 'OptimizeInstructions.wast') -outfile = os.path.join(root, 'src', 'passes', - 'OptimizeInstructions.wast.processed') - -out = open(outfile, 'w') - -for line in open(infile): - out.write('"' + line.strip().replace('"', '\\"') + '\\n"\n') - -out.close() diff -Nru binaryen-91/scripts/spidermonkify.py binaryen-99/scripts/spidermonkify.py --- binaryen-91/scripts/spidermonkify.py 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/scripts/spidermonkify.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ -#!/usr/bin/env python3 -# -# 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. - -"""A bunch of hackish fixups for testing of SpiderMonkey support. We should -get rid of these ASAP. - -This is meant to be run using BINARYEN_SCRIPTS in emcc, and not standalone. -""" - -import subprocess -import sys - -import emscripten - -js_target = sys.argv[1] -wast_target = sys.argv[2] - -wasm_target = wast_target[:-5] + '.wasm' - -# convert to binary using spidermonkey -''' -using something like -mozjs -e 'os.file.writeTypedArrayToFile("moz.wasm", -new Uint8Array(wasmTextToBinary(os.file.readFile("a.out.wast"))))' -investigate with ->>> map(chr, map(ord, open('moz.wasm').read())) -or -python -c "print str(map(chr,map(ord, - open('a.out.wasm').read()))).replace(',', '\n')" -''' -subprocess.check_call( - emscripten.shared.SPIDERMONKEY_ENGINE + - ['-e', 'os.file.writeTypedArrayToFile("' + wasm_target + - '", new Uint8Array(wasmTextToBinary(os.file.readFile("' + - wast_target + '"))))']) diff -Nru binaryen-91/scripts/test/asm2wasm.py binaryen-99/scripts/test/asm2wasm.py --- binaryen-91/scripts/test/asm2wasm.py 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/scripts/test/asm2wasm.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,156 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright 2017 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. - -import os -import subprocess - -from scripts.test import shared -from scripts.test import support - - -def test_asm2wasm(): - print('[ checking asm2wasm testcases... ]\n') - - for asm in shared.get_tests(shared.options.binaryen_test, ['.asm.js']): - basename = os.path.basename(asm) - for precise in [0, 1, 2]: - for opts in [1, 0]: - cmd = shared.ASM2WASM + [asm] - if 'threads' in asm: - cmd += ['--enable-threads'] - wasm = asm.replace('.asm.js', '.fromasm') - if not precise: - cmd += ['--trap-mode=allow', '--ignore-implicit-traps'] - wasm += '.imprecise' - elif precise == 2: - cmd += ['--trap-mode=clamp'] - wasm += '.clamp' - if not opts: - wasm += '.no-opts' - if precise: - cmd += ['-O0'] # test that -O0 does nothing - else: - cmd += ['-O'] - if 'debugInfo' in basename: - cmd += ['-g'] - if 'noffi' in basename: - cmd += ['--no-legalize-javascript-ffi'] - if precise and opts: - # test mem init importing - open('a.mem', 'w').write(basename) - cmd += ['--mem-init=a.mem'] - if basename[0] == 'e': - cmd += ['--mem-base=1024'] - if '4GB' in basename: - cmd += ['--mem-max=4294967296'] - if 'i64' in basename or 'wasm-only' in basename or 'noffi' in basename: - cmd += ['--wasm-only'] - print('..', basename, os.path.basename(wasm)) - - def do_asm2wasm_test(): - actual = support.run_command(cmd) - - # verify output - if not os.path.exists(wasm): - shared.fail_with_error('output .wast file %s does not exist' % wasm) - shared.fail_if_not_identical_to_file(actual, wasm) - - shared.binary_format_check(wasm, verify_final_result=False) - - # test both normally and with pass debug (so each inter-pass state - # is validated) - old_pass_debug = os.environ.get('BINARYEN_PASS_DEBUG') - try: - os.environ['BINARYEN_PASS_DEBUG'] = '1' - print("With BINARYEN_PASS_DEBUG=1:") - do_asm2wasm_test() - del os.environ['BINARYEN_PASS_DEBUG'] - print("With BINARYEN_PASS_DEBUG disabled:") - do_asm2wasm_test() - finally: - if old_pass_debug is not None: - os.environ['BINARYEN_PASS_DEBUG'] = old_pass_debug - else: - if 'BINARYEN_PASS_DEBUG' in os.environ: - del os.environ['BINARYEN_PASS_DEBUG'] - - # verify in wasm - if shared.options.interpreter: - # remove imports, spec interpreter doesn't know what to do with them - subprocess.check_call(shared.WASM_OPT + ['--remove-imports', wasm], - stdout=open('ztemp.wast', 'w'), - stderr=subprocess.PIPE) - proc = subprocess.Popen([shared.options.interpreter, 'ztemp.wast'], - stderr=subprocess.PIPE) - out, err = proc.communicate() - if proc.returncode != 0: - try: # to parse the error - reported = err.split(':')[1] - start, end = reported.split('-') - start_line, start_col = map(int, start.split('.')) - lines = open('ztemp.wast').read().split('\n') - print() - print('=' * 80) - print(lines[start_line - 1]) - print((' ' * (start_col - 1)) + '^') - print((' ' * (start_col - 2)) + '/_\\') - print('=' * 80) - print(err) - except Exception: - # failed to pretty-print - shared.fail_with_error('wasm interpreter error: ' + err) - shared.fail_with_error('wasm interpreter error') - - # verify debug info - if 'debugInfo' in asm: - jsmap = 'a.wasm.map' - cmd += ['--source-map', jsmap, - '--source-map-url', 'http://example.org/' + jsmap, - '-o', 'a.wasm'] - support.run_command(cmd) - if not os.path.isfile(jsmap): - shared.fail_with_error('Debug info map not created: %s' % jsmap) - with open(jsmap, 'rb') as actual: - shared.fail_if_not_identical_to_file(actual.read(), wasm + '.map') - with open('a.wasm', 'rb') as binary: - url_section_name = bytes([16]) + bytes('sourceMappingURL', 'utf-8') - url = 'http://example.org/' + jsmap - assert len(url) < 256, 'name too long' - url_section_contents = bytes([len(url)]) + bytes(url, 'utf-8') - print(url_section_name) - binary_contents = binary.read() - if url_section_name not in binary_contents: - shared.fail_with_error('source map url section not found in binary') - url_section_index = binary_contents.index(url_section_name) - if url_section_contents not in binary_contents[url_section_index:]: - shared.fail_with_error('source map url not found in url section') - - -def test_asm2wasm_binary(): - print('\n[ checking asm2wasm binary reading/writing... ]\n') - - asmjs = os.path.join(shared.options.binaryen_test, 'hello_world.asm.js') - shared.delete_from_orbit('a.wasm') - shared.delete_from_orbit('b.wast') - support.run_command(shared.ASM2WASM + [asmjs, '-o', 'a.wasm']) - assert open('a.wasm', 'rb').read()[0] == 0, 'we emit binary by default' - support.run_command(shared.ASM2WASM + [asmjs, '-o', 'b.wast', '-S']) - assert open('b.wast', 'rb').read()[0] != 0, 'we emit text with -S' - - -if __name__ == '__main__': - test_asm2wasm() - test_asm2wasm_binary() diff -Nru binaryen-91/scripts/test/binaryenjs.py binaryen-99/scripts/test/binaryenjs.py --- binaryen-91/scripts/test/binaryenjs.py 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/scripts/test/binaryenjs.py 2021-01-07 20:01:06.000000000 +0000 @@ -1,5 +1,3 @@ -#!/usr/bin/env python3 -# # Copyright 2016 WebAssembly Community Group participants # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -16,7 +14,6 @@ import os import subprocess -import sys from . import shared from . import support @@ -24,14 +21,11 @@ def do_test_binaryen_js_with(which): if not (shared.MOZJS or shared.NODEJS): - print('no vm to run binaryen.js tests') - return + shared.fail_with_error('no vm to run binaryen.js tests') node_has_wasm = shared.NODEJS and support.node_has_webassembly(shared.NODEJS) - if not os.path.exists(which): - print('no ' + which + ' build to test') - return + shared.fail_with_error('no ' + which + ' build to test') print('\n[ checking binaryen.js testcases (' + which + ')... ]\n') @@ -72,23 +66,41 @@ print('Skipping ' + test_path + ' because WebAssembly might not be supported') -def test_binaryen_js(): - do_test_binaryen_js_with(shared.BINARYEN_JS) +def update_binaryen_js_tests(): + if not (shared.MOZJS or shared.NODEJS): + print('no vm to run binaryen.js tests') + return + if not os.path.exists(shared.BINARYEN_JS): + print('no binaryen.js build to test') + return -def test_binaryen_wasm(): - do_test_binaryen_js_with(shared.BINARYEN_WASM) + print('\n[ checking binaryen.js testcases... ]\n') + node_has_wasm = shared.NODEJS and support.node_has_webassembly(shared.NODEJS) + for s in shared.get_tests(shared.get_test_dir('binaryen.js'), ['.js']): + basename = os.path.basename(s) + print(basename) + f = open('a.js', 'w') + f.write(open(shared.BINARYEN_JS).read()) + test_src = open(s).read() + f.write(support.js_test_wrap().replace('%TEST%', test_src)) + f.close() + if shared.MOZJS or node_has_wasm or 'WebAssembly.' not in test_src: + cmd = [shared.MOZJS or shared.NODEJS, 'a.js'] + if 'fatal' not in basename: + out = support.run_command(cmd, stderr=subprocess.STDOUT) + else: + # expect an error - the specific error code will depend on the vm + out = support.run_command(cmd, stderr=subprocess.STDOUT, expected_status=None) + with open(s + '.txt', 'w') as o: + o.write(out) + else: + print('Skipping ' + basename + ' because WebAssembly might not be supported') -def test_binaryen_js_and_wasm(): - test_binaryen_js() - test_binaryen_wasm() +def test_binaryen_js(): + do_test_binaryen_js_with(shared.BINARYEN_JS) -if __name__ == "__main__": - if sys.argv[1] == "js": - test_binaryen_js() - elif sys.argv[1] == "wasm": - test_binaryen_wasm() - else: - test_binaryen_js_and_wasm() +def test_binaryen_wasm(): + do_test_binaryen_js_with(shared.BINARYEN_WASM) diff -Nru binaryen-91/scripts/test/env.js binaryen-99/scripts/test/env.js --- binaryen-91/scripts/test/env.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/scripts/test/env.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,5 +1,5 @@ - -export const FUNCTION_TABLE = []; +// This is the name by which the tests import the wasm table. +export const table = []; var tempRet0 = 0; diff -Nru binaryen-91/scripts/test/generate_lld_tests.py binaryen-99/scripts/test/generate_lld_tests.py --- binaryen-91/scripts/test/generate_lld_tests.py 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/scripts/test/generate_lld_tests.py 2021-01-07 20:01:06.000000000 +0000 @@ -34,7 +34,7 @@ print('\n[ building wat files from C sources... ]\n') lld_path = os.path.join(shared.options.binaryen_test, 'lld') - for src_file, ext in files_with_extensions(lld_path, ['.c', '.cpp']): + for src_file, ext in files_with_extensions(lld_path, ['.c', '.cpp', '.s']): print('..', src_file) obj_file = src_file.replace(ext, '.o') @@ -48,10 +48,10 @@ wasm_path = os.path.join(lld_path, wasm_file) wat_path = os.path.join(lld_path, wat_file) is_shared = 'shared' in src_file + is_64 = '64' in src_file compile_cmd = [ os.path.join(llvm_bin, 'clang'), src_path, '-o', obj_path, - '--target=wasm32-emscripten', '-mllvm', '-enable-emscripten-sjlj', '-c', '-nostdinc', @@ -67,7 +67,6 @@ obj_path, '-o', wasm_path, '--allow-undefined', '--export', '__wasm_call_ctors', - '--export', '__data_end', '--global-base=568', ] # We had a regression where this test only worked if debug names @@ -78,9 +77,16 @@ compile_cmd.append('-fPIC') compile_cmd.append('-fvisibility=default') link_cmd.append('-shared') + link_cmd.append('--experimental-pic') else: link_cmd.append('--entry=main') + if is_64: + compile_cmd.append('--target=wasm64-emscripten') + link_cmd.append('-mwasm64') + else: + compile_cmd.append('--target=wasm32-emscripten') + try: support.run_command(compile_cmd) support.run_command(link_cmd) diff -Nru binaryen-91/scripts/test/lld.py binaryen-99/scripts/test/lld.py --- binaryen-91/scripts/test/lld.py 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/scripts/test/lld.py 2021-01-07 20:01:06.000000000 +0000 @@ -1,4 +1,3 @@ -#!/usr/bin/env python3 # Copyright 2017 WebAssembly Community Group participants # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -13,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import json import os from . import shared from . import support @@ -29,50 +29,63 @@ return ret -def test_wasm_emscripten_finalize(): - print('\n[ checking wasm-emscripten-finalize testcases... ]\n') - - for wat_path in shared.get_tests(shared.get_test_dir('lld'), ['.wat']): - print('..', wat_path) - is_passive = '.passive.' in wat_path - mem_file = wat_path + '.mem' - extension_arg_map = { - '.out': [], - } - if not is_passive: - extension_arg_map.update({ - '.mem.out': ['--separate-data-segments', mem_file], - }) - for ext, ext_args in extension_arg_map.items(): - expected_file = wat_path + ext - if ext != '.out' and not os.path.exists(expected_file): +def run_test(input_path): + print('..', input_path) + is_passive = '.passive.' in input_path + mem_file = input_path + '.mem' + extension_arg_map = { + '.out': [], + } + if not is_passive: + extension_arg_map.update({ + '.mem.out': ['--separate-data-segments', mem_file], + }) + for ext, args in extension_arg_map.items(): + expected_file = input_path + ext + if not os.path.exists(expected_file): + if ext == '.out': + shared.fail_with_error('output ' + expected_file + + ' does not exist') + else: continue - cmd = shared.WASM_EMSCRIPTEN_FINALIZE + [wat_path, '-S'] + \ - ext_args - cmd += args_for_finalize(os.path.basename(wat_path)) - actual = support.run_command(cmd) + cmd = shared.WASM_EMSCRIPTEN_FINALIZE + args + if '64' in input_path: + cmd += ['--enable-memory64', '--bigint'] + cmd += [input_path, '-S'] + cmd += args_for_finalize(os.path.basename(input_path)) + actual = support.run_command(cmd) + + shared.fail_if_not_identical_to_file(actual, expected_file) + if ext == '.out': + start = actual.find('--BEGIN METADATA --\n') + end = actual.find('-- END METADATA --\n') + if start == -1 or end == -1: + shared.fail_with_error('json metadata tags not found') + the_json = actual[start + len('--BEGIN METADATA --\n'):end] + json.loads(the_json) + + if ext == '.mem.out': + with open(mem_file) as mf: + mem = mf.read() + shared.fail_if_not_identical_to_file(mem, input_path + '.mem.mem') + os.remove(mem_file) - if not os.path.exists(expected_file): - print(actual) - shared.fail_with_error('output ' + expected_file + - ' does not exist') - shared.fail_if_not_identical_to_file(actual, expected_file) - if ext == '.mem.out': - with open(mem_file) as mf: - mem = mf.read() - shared.fail_if_not_identical_to_file(mem, wat_path + - '.mem.mem') - os.remove(mem_file) + +def test_wasm_emscripten_finalize(): + print('\n[ checking wasm-emscripten-finalize testcases... ]\n') + + for input_path in shared.get_tests(shared.get_test_dir('lld'), ['.wat', '.wasm']): + run_test(input_path) def update_lld_tests(): print('\n[ updating wasm-emscripten-finalize testcases... ]\n') - for wat_path in shared.get_tests(shared.get_test_dir('lld'), ['.wat']): - print('..', wat_path) - is_passive = '.passive.' in wat_path - mem_file = wat_path + '.mem' + for input_path in shared.get_tests(shared.get_test_dir('lld'), ['.wat', '.wasm']): + print('..', input_path) + is_passive = '.passive.' in input_path + mem_file = input_path + '.mem' extension_arg_map = { '.out': [], } @@ -81,16 +94,15 @@ '.mem.out': ['--separate-data-segments', mem_file + '.mem'], }) for ext, ext_args in extension_arg_map.items(): - out_path = wat_path + ext + out_path = input_path + ext if ext != '.out' and not os.path.exists(out_path): continue - cmd = shared.WASM_EMSCRIPTEN_FINALIZE + [wat_path, '-S'] + \ - ext_args - cmd += args_for_finalize(os.path.basename(wat_path)) + cmd = shared.WASM_EMSCRIPTEN_FINALIZE + ext_args + if '64' in input_path: + cmd += ['--enable-memory64', '--bigint'] + cmd += [input_path, '-S'] + cmd += args_for_finalize(os.path.basename(input_path)) actual = support.run_command(cmd) + with open(out_path, 'w') as o: o.write(actual) - - -if __name__ == '__main__': - test_wasm_emscripten_finalize() diff -Nru binaryen-91/scripts/test/shared.py binaryen-99/scripts/test/shared.py --- binaryen-91/scripts/test/shared.py 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/scripts/test/shared.py 2021-01-07 20:01:06.000000000 +0000 @@ -16,12 +16,17 @@ import argparse import difflib +import fnmatch import glob import os import shutil import subprocess import sys +# The C++ standard whose features are required to build Binaryen. +# Keep in sync with CMakeLists.txt CXX_STANDARD +cxx_standard = 14 + def parse_args(args): usage_str = ("usage: 'python check.py [options]'\n\n" @@ -44,15 +49,17 @@ help=('If set, the whole test suite will run to completion independent of' ' earlier errors.')) parser.add_argument( - '--interpreter', dest='interpreter', default='', - help='Specifies the wasm interpreter executable to run tests on.') - parser.add_argument( '--binaryen-bin', dest='binaryen_bin', default='', - help=('Specifies a path to where the built Binaryen executables reside at.' - ' Default: bin/ of current directory (i.e. assume an in-tree build).' + help=('Specifies the path to the Binaryen executables in the CMake build' + ' directory. Default: bin/ of current directory (i.e. assume an' + ' in-tree build).' ' If not specified, the environment variable BINARYEN_ROOT= can also' ' be used to adjust this.')) parser.add_argument( + '--binaryen-lib', dest='binaryen_lib', default='', + help=('Specifies a path to where the built Binaryen shared library resides at.' + ' Default: ./lib relative to bin specified above.')) + parser.add_argument( '--binaryen-root', dest='binaryen_root', default='', help=('Specifies a path to the root of the Binaryen repository tree.' ' Default: the directory where this file check.py resides.')) @@ -81,6 +88,10 @@ parser.add_argument( '--list-suites', action='store_true', help='List the test suites that can be run.') + parser.add_argument( + '--filter', dest='test_name_filter', default='', + help=('Specifies a filter. Only tests whose paths contains this ' + 'substring will be run')) return parser.parse_args(args) @@ -114,10 +125,17 @@ options.binaryen_bin = os.path.normpath(os.path.abspath(options.binaryen_bin)) +if not options.binaryen_lib: + options.binaryen_lib = os.path.join(os.path.dirname(options.binaryen_bin), 'lib') + +options.binaryen_lib = os.path.normpath(os.path.abspath(options.binaryen_lib)) + +options.binaryen_build = os.path.dirname(options.binaryen_bin) + # ensure BINARYEN_ROOT is set up os.environ['BINARYEN_ROOT'] = os.path.dirname(options.binaryen_bin) -wasm_dis_filenames = ['wasm-dis', 'wasm-dis.exe'] +wasm_dis_filenames = ['wasm-dis', 'wasm-dis.exe', 'wasm-dis.js'] if not any(os.path.isfile(os.path.join(options.binaryen_bin, f)) for f in wasm_dis_filenames): warn('Binaryen not found (or has not been successfully built to bin/ ?') @@ -146,7 +164,13 @@ if is_exe(program): return program else: - for path in os.environ["PATH"].split(os.pathsep): + paths = [ + # Prefer tools installed using third_party/setup.py + os.path.join(options.binaryen_root, 'third_party', 'mozjs'), + os.path.join(options.binaryen_root, 'third_party', 'v8'), + os.path.join(options.binaryen_root, 'third_party', 'wabt', 'bin') + ] + os.environ['PATH'].split(os.pathsep) + for path in paths: path = path.strip('"') exe_file = os.path.join(path, program) if is_exe(exe_file): @@ -167,10 +191,9 @@ which('gcc') or which('clang')) NATIVEXX = (os.environ.get('CXX') or which('mingw32-g++') or which('g++') or which('clang++')) -NODEJS = os.getenv('NODE', which('nodejs') or which('node')) +NODEJS = os.getenv('NODE', which('node') or which('nodejs')) MOZJS = which('mozjs') or which('spidermonkey') V8 = which('v8') or which('d8') -EMCC = which('emcc') BINARYEN_INSTALL_DIR = os.path.dirname(options.binaryen_bin) WASM_OPT = [os.path.join(options.binaryen_bin, 'wasm-opt')] @@ -225,20 +248,16 @@ # Default options to pass to v8. These enable all features. +# See https://github.com/v8/v8/blob/master/src/wasm/wasm-feature-flags.h V8_OPTS = [ + '--wasm-staging', '--experimental-wasm-eh', - '--experimental-wasm-mv', - '--experimental-wasm-sat-f2i-conversions', - '--experimental-wasm-se', - '--experimental-wasm-threads', '--experimental-wasm-simd', - '--experimental-wasm-anyref', - '--experimental-wasm-bulk-memory', + '--experimental-wasm-reftypes', + '--experimental-wasm-compilation-hints', '--experimental-wasm-return-call' ] -has_vanilla_llvm = False - # external tools try: @@ -251,37 +270,6 @@ if NODEJS is None: warn('no node found (did not check proper js form)') -try: - if MOZJS is not None: - subprocess.check_call([MOZJS, '--version'], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE) -except (OSError, subprocess.CalledProcessError): - MOZJS = None -if MOZJS is None: - warn('no mozjs found (did not check native wasm support nor asm.js' - ' validation)') - -try: - if EMCC is not None: - subprocess.check_call([EMCC, '--version'], - stdout=subprocess.PIPE, - stderr=subprocess.PIPE) -except (OSError, subprocess.CalledProcessError): - EMCC = None -if EMCC is None: - warn('no emcc found (did not check non-vanilla emscripten/binaryen' - ' integration)') - -has_vanilla_emcc = False -try: - subprocess.check_call( - [os.path.join(options.binaryen_test, 'emscripten', 'emcc'), '--version'], - stdout=subprocess.PIPE, stderr=subprocess.PIPE) - has_vanilla_emcc = True -except (OSError, subprocess.CalledProcessError): - pass - # utilities @@ -387,16 +375,11 @@ tests += glob.glob(os.path.join(test_dir, '*')) for ext in extensions: tests += glob.glob(os.path.join(test_dir, '*' + ext)) + if options.test_name_filter: + tests = fnmatch.filter(tests, options.test_name_filter) return sorted(tests) -if not options.interpreter: - warn('no interpreter provided (did not test spec interpreter validation)') - -if not has_vanilla_emcc: - warn('no functional emcc submodule found') - - if not options.spec_tests: options.spec_tests = get_tests(get_test_dir('spec'), ['.wast']) else: @@ -404,13 +387,13 @@ # 11/27/2019: We updated the spec test suite to upstream spec repo. For some # files that started failing after this update, we added the new files to this -# blacklist and preserved old ones by renaming them to 'old_[FILENAME].wast' +# skip-list and preserved old ones by renaming them to 'old_[FILENAME].wast' # not to lose coverage. When the cause of the error is fixed or the unsupported # construct gets support so the new test passes, we can delete the # corresponding 'old_[FILENAME].wast' file. When you fix the new file and # delete the old file, make sure you rename the corresponding .wast.log file in # expected-output/ if any. -SPEC_TEST_BLACKLIST = [ +SPEC_TESTS_TO_SKIP = [ # Stacky code / notation 'block.wast', 'call.wast', @@ -465,21 +448,11 @@ 'unreached-invalid.wast' # 'assert_invalid' failure ] options.spec_tests = [t for t in options.spec_tests if os.path.basename(t) not - in SPEC_TEST_BLACKLIST] + in SPEC_TESTS_TO_SKIP] # check utilities - -def validate_binary(wasm): - if V8: - cmd = [V8] + V8_OPTS + [in_binaryen('scripts', 'validation_shell.js'), '--', wasm] - print(' ', ' '.join(cmd)) - subprocess.check_call(cmd, stdout=subprocess.PIPE) - else: - print('(skipping v8 binary validation)') - - def binary_format_check(wast, verify_final_result=True, wasm_as_args=['-g'], binary_suffix='.fromBinary', original_wast=None): # checks we can convert the wast to binary and back @@ -492,13 +465,6 @@ subprocess.check_call(cmd, stdout=subprocess.PIPE) assert os.path.exists('a.wasm') - # make sure it is a valid wasm, using a real wasm VM - if os.path.basename(original_wast or wast) not in [ - 'atomics.wast', # https://bugs.chromium.org/p/v8/issues/detail?id=9425 - 'simd.wast', # https://bugs.chromium.org/p/v8/issues/detail?id=8460 - ]: - validate_binary('a.wasm') - cmd = WASM_DIS + ['a.wasm', '-o', 'ab.wast'] print(' ', ' '.join(cmd)) if os.path.exists('ab.wast'): @@ -552,3 +518,13 @@ else: if 'BINARYEN_PASS_DEBUG' in os.environ: del os.environ['BINARYEN_PASS_DEBUG'] + + +# checks if we are on windows, and if so logs out that a test is being skipped, +# and returns True. This is a central location for all test skipping on +# windows, so that we can easily find which tests are skipped. +def skip_if_on_windows(name): + if get_platform() == 'windows': + print('skipping test "%s" on windows' % name) + return True + return False diff -Nru binaryen-91/scripts/test/spectest.js binaryen-99/scripts/test/spectest.js --- binaryen-91/scripts/test/spectest.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/scripts/test/spectest.js 2021-01-07 20:01:06.000000000 +0000 @@ -2,19 +2,19 @@ console.log(); } export function print_i32(arg) { - console.log(arg, ' : i32'); + console.log(arg, ': i32'); } export function print_f32(arg) { - console.log(arg, ' : f32'); + console.log(arg, ': f32'); } export function print_f64(arg) { - console.log(arg, ' : f64'); + console.log(arg, ': f64'); } export function print_i32_f32(arg0, arg1) { - console.log(arg0, ' : i32'); - console.log(arg1, ' : f32'); + console.log(arg0, ': i32'); + console.log(arg1, ': f32'); } export function print_f64_f64(arg0, arg1) { - console.log(arg0, ' : f64'); - console.log(arg1, ' : f64'); + console.log(arg0, ': f64'); + console.log(arg1, ': f64'); } diff -Nru binaryen-91/scripts/test/support.py binaryen-99/scripts/test/support.py --- binaryen-91/scripts/test/support.py 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/scripts/test/support.py 2021-01-07 20:01:06.000000000 +0000 @@ -146,6 +146,12 @@ elif chunk.startswith('(assert_invalid'): continue elif chunk.startswith(('(assert', '(invoke')): + # ret may be empty if there are some asserts before the first + # module. in that case these are asserts *without* a module, which + # are valid (they may check something that doesn't refer to a module + # in any way). + if not ret: + ret += [(None, [])] ret[-1][1].append(chunk) return ret @@ -169,7 +175,7 @@ "Can't redirect stderr if using expected_err" stderr = subprocess.PIPE print('executing: ', ' '.join(cmd)) - proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=stderr, universal_newlines=True) + proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=stderr, universal_newlines=True, encoding='UTF-8') out, err = proc.communicate() code = proc.returncode if expected_status is not None and code != expected_status: diff -Nru binaryen-91/scripts/test/wasm2js.py binaryen-99/scripts/test/wasm2js.py --- binaryen-91/scripts/test/wasm2js.py 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/scripts/test/wasm2js.py 2021-01-07 20:01:06.000000000 +0000 @@ -1,5 +1,3 @@ -#!/usr/bin/env python3 -# # Copyright 2016 WebAssembly Community Group participants # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -20,14 +18,33 @@ from scripts.test import support tests = shared.get_tests(shared.options.binaryen_test) +# memory64 is not supported in wasm2js yet (but may be with BigInt eventually). +tests = [t for t in tests if '64.wast' not in t] spec_tests = shared.options.spec_tests spec_tests = [t for t in spec_tests if '.fail' not in t] +spec_tests = [t for t in spec_tests if '64.wast' not in t] wasm2js_tests = shared.get_tests(shared.get_test_dir('wasm2js'), ['.wast']) assert_tests = ['wasm2js.wast.asserts'] # These tests exercise functionality not supported by wasm2js wasm2js_blacklist = ['empty_imported_table.wast'] +def check_for_stale_files(): + if shared.options.test_name_filter: + return + + # TODO(sbc): Generalize and apply other test suites + all_tests = [] + for t in tests + spec_tests + wasm2js_tests: + all_tests.append(os.path.basename(os.path.splitext(t)[0])) + + all_files = os.listdir(shared.get_test_dir('wasm2js')) + for f in all_files: + prefix = f.split('.')[0] + if prefix not in all_tests: + shared.fail_with_error('orphan test output: %s' % f) + + def test_wasm2js_output(): for opt in (0, 1): for t in tests + spec_tests + wasm2js_tests: @@ -45,7 +62,8 @@ print('..', os.path.basename(t)) - all_out = [] + all_js = [] + all_out = '' for module, asserts in support.split_wast(t): support.write_wast('split.wast', module, asserts) @@ -58,28 +76,30 @@ cmd += ['-O'] if 'emscripten' in t: cmd += ['--emscripten'] - out = support.run_command(cmd) - all_out.append(out) + if 'deterministic' in t: + cmd += ['--deterministic'] + js = support.run_command(cmd) + all_js.append(js) if not shared.NODEJS and not shared.MOZJS: print('No JS interpreters. Skipping spec tests.') continue - open('a.2asm.mjs', 'w').write(out) + open('a.2asm.mjs', 'w').write(js) cmd += ['--allow-asserts'] - out = support.run_command(cmd) + js = support.run_command(cmd) # also verify it passes pass-debug verifications shared.with_pass_debug(lambda: support.run_command(cmd)) - open('a.2asm.asserts.mjs', 'w').write(out) + open('a.2asm.asserts.mjs', 'w').write(js) # verify asm.js is valid js, note that we're using --experimental-modules # to enable ESM syntax and we're also passing a custom loader to handle the # `spectest` and `env` modules in our tests. if shared.NODEJS: loader = os.path.join(shared.options.binaryen_root, 'scripts', 'test', 'node-esm-loader.mjs') - node = [shared.NODEJS, '--experimental-modules', '--loader', loader] + node = [shared.NODEJS, '--experimental-modules', '--no-warnings', '--loader', loader] cmd = node[:] cmd.append('a.2asm.mjs') out = support.run_command(cmd) @@ -87,9 +107,15 @@ cmd = node[:] cmd.append('a.2asm.asserts.mjs') out = support.run_command(cmd, expected_err='', err_ignore='ExperimentalWarning') - shared.fail_if_not_identical(out, '') + all_out += out - shared.fail_if_not_identical_to_file(''.join(all_out), expected_file) + shared.fail_if_not_identical_to_file(''.join(all_js), expected_file) + expected_out = os.path.join(shared.get_test_dir('spec'), 'expected-output', os.path.basename(t) + '.log') + if os.path.exists(expected_out): + expected_out = open(expected_out).read() + else: + expected_out = '' + shared.fail_if_not_identical(all_out, expected_out) def test_asserts_output(): @@ -114,6 +140,9 @@ def test_wasm2js(): print('\n[ checking wasm2js testcases... ]\n') + check_for_stale_files() + if shared.skip_if_on_windows('wasm2js'): + return test_wasm2js_output() test_asserts_output() @@ -158,6 +187,8 @@ cmd += ['-O'] if 'emscripten' in wasm: cmd += ['--emscripten'] + if 'deterministic' in t: + cmd += ['--deterministic'] out = support.run_command(cmd) all_out.append(out) @@ -181,7 +212,3 @@ out = support.run_command(cmd) with open(traps_expected_file, 'w') as o: o.write(out) - - -if __name__ == "__main__": - test_wasm2js() diff -Nru binaryen-91/scripts/test/wasm_opt.py binaryen-99/scripts/test/wasm_opt.py --- binaryen-91/scripts/test/wasm_opt.py 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/scripts/test/wasm_opt.py 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,240 @@ +# 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. + +import os +import shutil +import subprocess + +from . import shared +from . import support + + +def test_wasm_opt(): + print('\n[ checking wasm-opt -o notation... ]\n') + + for extra_args in [[], ['--no-validation']]: + wast = os.path.join(shared.options.binaryen_test, 'hello_world.wat') + shared.delete_from_orbit('a.wat') + out = 'a.wat' + cmd = shared.WASM_OPT + [wast, '-o', out, '-S'] + extra_args + support.run_command(cmd) + shared.fail_if_not_identical_to_file(open(out).read(), wast) + + print('\n[ checking wasm-opt binary reading/writing... ]\n') + + shutil.copyfile(os.path.join(shared.options.binaryen_test, 'hello_world.wat'), 'a.wat') + shared.delete_from_orbit('a.wasm') + shared.delete_from_orbit('b.wast') + support.run_command(shared.WASM_OPT + ['a.wat', '-o', 'a.wasm']) + assert open('a.wasm', 'rb').read()[0] == 0, 'we emit binary by default' + support.run_command(shared.WASM_OPT + ['a.wasm', '-o', 'b.wast', '-S']) + assert open('b.wast', 'rb').read()[0] != 0, 'we emit text with -S' + + print('\n[ checking wasm-opt passes... ]\n') + + for t in shared.get_tests(shared.get_test_dir('passes'), ['.wast', '.wasm']): + print('..', os.path.basename(t)) + # windows has some failures that need to be investigated: + # * ttf tests have different outputs - order of execution of params? + # * dwarf tests print windows slashes instead of unix + if ('translate-to-fuzz' in t or 'dwarf' in t) and \ + shared.skip_if_on_windows('fuzz translation tests'): + continue + binary = '.wasm' in t + base = os.path.basename(t).replace('.wast', '').replace('.wasm', '') + passname = base + passes_file = os.path.join(shared.get_test_dir('passes'), passname + '.passes') + if os.path.exists(passes_file): + passname = open(passes_file).read().strip() + passes = [p for p in passname.split('_') if p != 'noprint'] + opts = [('--' + p if not p.startswith('O') and p != 'g' else '-' + p) for p in passes] + actual = '' + for module, asserts in support.split_wast(t): + assert len(asserts) == 0 + support.write_wast('split.wast', module) + cmd = shared.WASM_OPT + opts + ['split.wast'] + if 'noprint' not in t: + cmd.append('--print') + curr = support.run_command(cmd) + actual += curr + # also check debug mode output is valid + debugged = support.run_command(cmd + ['--debug'], stderr=subprocess.PIPE) + shared.fail_if_not_contained(actual, debugged) + + # also check pass-debug mode + def check(): + pass_debug = support.run_command(cmd) + shared.fail_if_not_identical(curr, pass_debug) + shared.with_pass_debug(check) + + expected_file = os.path.join(shared.get_test_dir('passes'), base + ('.bin' if binary else '') + '.txt') + shared.fail_if_not_identical_to_file(actual, expected_file) + + if 'emit-js-wrapper' in t: + with open('a.js') as actual: + shared.fail_if_not_identical_to_file(actual.read(), t + '.js') + if 'emit-spec-wrapper' in t: + with open('a.wat') as actual: + shared.fail_if_not_identical_to_file(actual.read(), t + '.wat') + + print('\n[ checking wasm-opt parsing & printing... ]\n') + + for t in shared.get_tests(shared.get_test_dir('print'), ['.wast']): + print('..', os.path.basename(t)) + wasm = os.path.basename(t).replace('.wast', '') + cmd = shared.WASM_OPT + [t, '--print', '-all'] + print(' ', ' '.join(cmd)) + actual, err = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True).communicate() + expected_file = os.path.join(shared.get_test_dir('print'), wasm + '.txt') + shared.fail_if_not_identical_to_file(actual, expected_file) + cmd = shared.WASM_OPT + [os.path.join(shared.get_test_dir('print'), t), '--print-minified', '-all'] + print(' ', ' '.join(cmd)) + actual, err = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True).communicate() + shared.fail_if_not_identical(actual.strip(), open(os.path.join(shared.get_test_dir('print'), wasm + '.minified.txt')).read().strip()) + + print('\n[ checking wasm-opt testcases... ]\n') + + for t in shared.get_tests(shared.options.binaryen_test, ['.wast']): + print('..', os.path.basename(t)) + f = t + '.from-wast' + cmd = shared.WASM_OPT + [t, '--print', '-all'] + actual = support.run_command(cmd) + actual = actual.replace('printing before:\n', '') + + shared.fail_if_not_identical_to_file(actual, f) + + # FIXME Remove this condition after nullref is implemented in V8 + if 'reference-types.wast' not in t: + shared.binary_format_check(t, wasm_as_args=['-g']) # test with debuginfo + shared.binary_format_check(t, wasm_as_args=[], binary_suffix='.fromBinary.noDebugInfo') # test without debuginfo + + shared.minify_check(t) + + print('\n[ checking wasm-opt debugInfo read-write... ]\n') + + for t in shared.get_tests(shared.options.binaryen_test, ['.fromasm']): + if 'debugInfo' not in t: + continue + print('..', os.path.basename(t)) + f = t + '.read-written' + support.run_command(shared.WASM_AS + [t, '--source-map=a.map', '-o', 'a.wasm', '-g']) + support.run_command(shared.WASM_OPT + ['a.wasm', '--input-source-map=a.map', '-o', 'b.wasm', '--output-source-map=b.map', '-g']) + actual = support.run_command(shared.WASM_DIS + ['b.wasm', '--source-map=b.map']) + shared.fail_if_not_identical_to_file(actual, f) + + +def update_wasm_opt_tests(): + print('\n[ checking wasm-opt -o notation... ]\n') + wast = os.path.join(shared.options.binaryen_test, 'hello_world.wat') + cmd = shared.WASM_OPT + [wast, '-o', 'a.wast', '-S'] + support.run_command(cmd) + open(wast, 'w').write(open('a.wast').read()) + + print('\n[ checking wasm-opt parsing & printing... ]\n') + for t in shared.get_tests(shared.get_test_dir('print'), ['.wast']): + print('..', os.path.basename(t)) + wasm = t.replace('.wast', '') + cmd = shared.WASM_OPT + [t, '--print', '-all'] + print(' ', ' '.join(cmd)) + actual = subprocess.check_output(cmd) + print(cmd, actual) + with open(wasm + '.txt', 'wb') as o: + o.write(actual) + cmd = shared.WASM_OPT + [t, '--print-minified', '-all'] + print(' ', ' '.join(cmd)) + actual = subprocess.check_output(cmd) + with open(wasm + '.minified.txt', 'wb') as o: + o.write(actual) + + print('\n[ checking wasm-opt passes... ]\n') + for t in shared.get_tests(shared.get_test_dir('passes'), ['.wast', '.wasm']): + print('..', os.path.basename(t)) + # windows has some failures that need to be investigated: + # * ttf tests have different outputs - order of execution of params? + # * dwarf tests print windows slashes instead of unix + if ('translate-to-fuzz' in t or 'dwarf' in t) and \ + shared.skip_if_on_windows('fuzz translation tests'): + continue + binary = t.endswith('.wasm') + base = os.path.basename(t).replace('.wast', '').replace('.wasm', '') + passname = base + passes_file = os.path.join(shared.get_test_dir('passes'), passname + '.passes') + if os.path.exists(passes_file): + passname = open(passes_file).read().strip() + passes = [p for p in passname.split('_') if p != 'noprint'] + opts = [('--' + p if not p.startswith('O') and p != 'g' else '-' + p) for p in passes] + actual = '' + for module, asserts in support.split_wast(t): + assert len(asserts) == 0 + support.write_wast('split.wast', module) + cmd = shared.WASM_OPT + opts + ['split.wast'] + if 'noprint' not in t: + cmd.append('--print') + actual += support.run_command(cmd) + with open(os.path.join(shared.options.binaryen_test, 'passes', base + ('.bin' if binary else '') + '.txt'), 'w') as o: + o.write(actual) + if 'emit-js-wrapper' in t: + with open('a.js') as i: + with open(t + '.js', 'w') as o: + o.write(i.read()) + if 'emit-spec-wrapper' in t: + with open('a.wat') as i: + with open(t + '.wat', 'w') as o: + o.write(i.read()) + + print('\n[ checking wasm-opt testcases... ]\n') + for t in shared.get_tests(shared.options.binaryen_test, ['.wast']): + print('..', os.path.basename(t)) + f = t + '.from-wast' + cmd = shared.WASM_OPT + [t, '--print', '-all'] + actual = support.run_command(cmd) + actual = actual.replace('printing before:\n', '') + open(f, 'w').write(actual) + + print('\n[ checking wasm-opt debugInfo read-write... ]\n') + for t in shared.get_tests(shared.options.binaryen_test, ['.fromasm']): + if 'debugInfo' not in t: + continue + print('..', os.path.basename(t)) + f = t + '.read-written' + support.run_command(shared.WASM_AS + [t, '--source-map=a.map', '-o', 'a.wasm', '-g']) + support.run_command(shared.WASM_OPT + ['a.wasm', '--input-source-map=a.map', '-o', 'b.wasm', '--output-source-map=b.map', '-g']) + actual = support.run_command(shared.WASM_DIS + ['b.wasm', '--source-map=b.map']) + open(f, 'w').write(actual) + + print('\n[ checking binary format testcases... ]\n') + for wast in shared.get_tests(shared.options.binaryen_test, ['.wast']): + for debug_info in [0, 1]: + cmd = shared.WASM_AS + [wast, '-o', 'a.wasm', '-all'] + if debug_info: + cmd += ['-g'] + print(' '.join(cmd)) + if os.path.exists('a.wasm'): + os.unlink('a.wasm') + subprocess.check_call(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + assert os.path.exists('a.wasm') + + cmd = shared.WASM_DIS + ['a.wasm', '-o', 'a.wast'] + print(' '.join(cmd)) + if os.path.exists('a.wast'): + os.unlink('a.wast') + subprocess.check_call(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + assert os.path.exists('a.wast') + actual = open('a.wast').read() + binary_file = wast + '.fromBinary' + if not debug_info: + binary_file += '.noDebugInfo' + with open(binary_file, 'w') as o: + print('writey', binary_file) + o.write(actual) diff -Nru binaryen-91/scripts/wasm2js.js binaryen-99/scripts/wasm2js.js --- binaryen-91/scripts/wasm2js.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/scripts/wasm2js.js 2021-01-07 20:01:06.000000000 +0000 @@ -6,12 +6,6 @@ Memory: function(opts) { return { buffer: new ArrayBuffer(opts['initial'] * 64 * 1024), - grow: function(amount) { - var oldBuffer = this.buffer; - var ret = __growWasmMemory(amount); - assert(this.buffer !== oldBuffer); // the call should have updated us - return ret; - } }; }, @@ -72,7 +66,7 @@ // Additional imports asmLibraryArg['__tempMemory__'] = 0; // risky! // This will be replaced by the actual wasm2js code. - var exports = instantiate(asmLibraryArg, wasmMemory, wasmTable); + var exports = instantiate(asmLibraryArg, wasmMemory); return { 'exports': exports }; @@ -130,8 +124,8 @@ console.log('get_f64 ' + [loc, index, value]); return value; }, - get_anyref: function(loc, index, value) { - console.log('get_anyref ' + [loc, index, value]); + get_externref: function(loc, index, value) { + console.log('get_externref ' + [loc, index, value]); return value; }, get_exnref: function(loc, index, value) { @@ -155,8 +149,8 @@ console.log('set_f64 ' + [loc, index, value]); return value; }, - set_anyref: function(loc, index, value) { - console.log('set_anyref ' + [loc, index, value]); + set_externref: function(loc, index, value) { + console.log('set_externref ' + [loc, index, value]); return value; }, set_exnref: function(loc, index, value) { @@ -208,5 +202,3 @@ }; var wasmMemory = new WebAssembly.Memory({ initial: 1 }); -var wasmTable = new WebAssembly.Table({ initial: 1 }); - diff -Nru binaryen-91/setup.cfg binaryen-99/setup.cfg --- binaryen-91/setup.cfg 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/setup.cfg 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -[pep8] -ignore = E111,E114 -[flake8] -ignore = E111,E114 diff -Nru binaryen-91/src/abi/abi.h binaryen-99/src/abi/abi.h --- binaryen-91/src/abi/abi.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/abi/abi.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -/* - * Copyright 2017 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. - */ - -#ifndef wasm_abi_abi_h -#define wasm_abi_abi_h - -#include "wasm.h" - -namespace wasm { - -namespace ABI { - -// The pointer type. Will need to update this for wasm64 -const static Type PointerType = Type::i32; - -} // namespace ABI - -} // namespace wasm - -#endif // wasm_abi_abi_h diff -Nru binaryen-91/src/abi/js.h binaryen-99/src/abi/js.h --- binaryen-91/src/abi/js.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/abi/js.h 2021-01-07 20:01:06.000000000 +0000 @@ -38,20 +38,25 @@ extern cashew::IString SCRATCH_LOAD_I32; extern cashew::IString SCRATCH_STORE_I32; -extern cashew::IString SCRATCH_LOAD_I64; -extern cashew::IString SCRATCH_STORE_I64; extern cashew::IString SCRATCH_LOAD_F32; extern cashew::IString SCRATCH_STORE_F32; extern cashew::IString SCRATCH_LOAD_F64; extern cashew::IString SCRATCH_STORE_F64; +extern cashew::IString MEMORY_INIT; +extern cashew::IString MEMORY_FILL; +extern cashew::IString MEMORY_COPY; +extern cashew::IString DATA_DROP; +extern cashew::IString ATOMIC_WAIT_I32; +extern cashew::IString ATOMIC_RMW_I64; +extern cashew::IString GET_STASHED_BITS; -// The wasm2js scratch memory helpers let us read and write to scratch memory -// for purposes of implementing things like reinterpret, etc. +// The wasm2js helpers let us do things that can't be done without special help, +// like read and write to scratch memory for purposes of implementing things +// like reinterpret, etc. // The optional "specific" parameter is a specific function we want. If not // provided, we create them all. -inline void -ensureScratchMemoryHelpers(Module* wasm, - cashew::IString specific = cashew::IString()) { +inline void ensureHelpers(Module* wasm, + cashew::IString specific = cashew::IString()) { auto ensureImport = [&](Name name, Type params, Type results) { if (wasm->getFunctionOrNull(name)) { return; @@ -69,19 +74,31 @@ ensureImport(SCRATCH_LOAD_I32, {Type::i32}, Type::i32); ensureImport(SCRATCH_STORE_I32, {Type::i32, Type::i32}, Type::none); - ensureImport(SCRATCH_LOAD_I64, {}, Type::i64); - ensureImport(SCRATCH_STORE_I64, {Type::i64}, Type::none); ensureImport(SCRATCH_LOAD_F32, {}, Type::f32); ensureImport(SCRATCH_STORE_F32, {Type::f32}, Type::none); ensureImport(SCRATCH_LOAD_F64, {}, Type::f64); ensureImport(SCRATCH_STORE_F64, {Type::f64}, Type::none); + ensureImport( + MEMORY_INIT, {Type::i32, Type::i32, Type::i32, Type::i32}, Type::none); + ensureImport(MEMORY_FILL, {Type::i32, Type::i32, Type::i32}, Type::none); + ensureImport(MEMORY_COPY, {Type::i32, Type::i32, Type::i32}, Type::none); + ensureImport(DATA_DROP, {Type::i32}, Type::none); + ensureImport( + ATOMIC_WAIT_I32, {Type::i32, Type::i32, Type::i32, Type::i32}, Type::i32); + ensureImport( + ATOMIC_RMW_I64, + {Type::i32, Type::i32, Type::i32, Type::i32, Type::i32, Type::i32}, + Type::i32); + ensureImport(GET_STASHED_BITS, {}, Type::i32); } -inline bool isScratchMemoryHelper(cashew::IString name) { +inline bool isHelper(cashew::IString name) { return name == SCRATCH_LOAD_I32 || name == SCRATCH_STORE_I32 || - name == SCRATCH_LOAD_I64 || name == SCRATCH_STORE_I64 || name == SCRATCH_LOAD_F32 || name == SCRATCH_STORE_F32 || - name == SCRATCH_LOAD_F64 || name == SCRATCH_STORE_F64; + name == SCRATCH_LOAD_F64 || name == SCRATCH_STORE_F64 || + name == ATOMIC_WAIT_I32 || name == MEMORY_INIT || + name == MEMORY_FILL || name == MEMORY_COPY || name == DATA_DROP || + name == ATOMIC_RMW_I64 || name == GET_STASHED_BITS; } } // namespace wasm2js diff -Nru binaryen-91/src/abi/stack.h binaryen-99/src/abi/stack.h --- binaryen-91/src/abi/stack.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/abi/stack.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,144 +0,0 @@ -/* - * Copyright 2017 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. - */ - -#ifndef wasm_abi_stack_h -#define wasm_abi_stack_h - -#include "abi.h" -#include "asmjs/shared-constants.h" -#include "ir/find_all.h" -#include "ir/global-utils.h" -#include "shared-constants.h" -#include "wasm-builder.h" -#include "wasm.h" - -namespace wasm { - -namespace ABI { - -enum { StackAlign = 16 }; - -inline Index stackAlign(Index size) { - return (size + StackAlign - 1) & -StackAlign; -} - -// Allocate some space on the stack, and assign it to a local. -// The local will have the same constant value in all the function, so you can -// just local.get it anywhere there. -// -// FIXME: This function assumes that the stack grows upward, per the convention -// used by fastcomp. The stack grows downward when using the WASM backend. - -inline void -getStackSpace(Index local, Function* func, Index size, Module& wasm) { - // Attempt to locate the stack pointer by recognizing code idioms - // used by Emscripten. First, look for a global initialized to an - // imported variable named "STACKTOP" in environment "env". - auto* stackPointer = - GlobalUtils::getGlobalInitializedToImport(wasm, ENV, "STACKTOP"); - // Starting with Emscripten 1.38.24, the stack pointer variable is - // initialized with a literal constant, eliminating the import that - // we used to locate the stack pointer by name. We must match a more - // complicated idiom, expecting to see the module structured as follows: - // - //(module - // ... - // (export "stackSave" (func $stackSave)) - // ... - // (func $stackSave (; 410 ;) (; has Stack IR ;) (result i32) - // (global.get $STACKTOP) - // ) - // ... - //) - if (!stackPointer) { - auto* stackSaveFunctionExport = wasm.getExportOrNull("stackSave"); - if (stackSaveFunctionExport && - stackSaveFunctionExport->kind == ExternalKind::Function) { - auto* stackSaveFunction = - wasm.getFunction(stackSaveFunctionExport->value); - assert(!stackSaveFunction->imported()); - auto* globalGet = stackSaveFunction->body->dynCast(); - if (globalGet) { - stackPointer = wasm.getGlobal(globalGet->name); - } - } - } - if (!stackPointer) { - Fatal() << "getStackSpace: failed to find the stack pointer"; - } - // align the size - size = stackAlign(size); - // TODO: find existing stack usage, and add on top of that - carefully - Builder builder(wasm); - auto* block = builder.makeBlock(); - block->list.push_back(builder.makeLocalSet( - local, builder.makeGlobalGet(stackPointer->name, PointerType))); - // TODO: add stack max check - Expression* added; - if (PointerType == Type::i32) { - added = builder.makeBinary(AddInt32, - builder.makeLocalGet(local, PointerType), - builder.makeConst(Literal(int32_t(size)))); - } else { - WASM_UNREACHABLE("unhandled PointerType"); - } - block->list.push_back(builder.makeGlobalSet(stackPointer->name, added)); - auto makeStackRestore = [&]() { - return builder.makeGlobalSet(stackPointer->name, - builder.makeLocalGet(local, PointerType)); - }; - // add stack restores to the returns - FindAllPointers finder(func->body); - for (auto** ptr : finder.list) { - auto* ret = (*ptr)->cast(); - if (ret->value && ret->value->type != Type::unreachable) { - // handle the returned value - auto* block = builder.makeBlock(); - auto temp = builder.addVar(func, ret->value->type); - block->list.push_back(builder.makeLocalSet(temp, ret->value)); - block->list.push_back(makeStackRestore()); - block->list.push_back( - builder.makeReturn(builder.makeLocalGet(temp, ret->value->type))); - block->finalize(); - *ptr = block; - } else { - // restore, then return - *ptr = builder.makeSequence(makeStackRestore(), ret); - } - } - // add stack restores to the body - if (func->body->type == Type::none) { - block->list.push_back(func->body); - block->list.push_back(makeStackRestore()); - } else if (func->body->type == Type::unreachable) { - block->list.push_back(func->body); - // no need to restore the old stack value, we're gone anyhow - } else { - // save the return value - auto temp = builder.addVar(func, func->sig.results); - block->list.push_back(builder.makeLocalSet(temp, func->body)); - block->list.push_back(makeStackRestore()); - block->list.push_back(builder.makeLocalGet(temp, func->sig.results)); - } - block->finalize(); - func->body = block; -} - -} // namespace ABI - -} // namespace wasm - -#endif // wasm_abi_stack_h diff -Nru binaryen-91/src/abi/wasm-object.h binaryen-99/src/abi/wasm-object.h --- binaryen-91/src/abi/wasm-object.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/abi/wasm-object.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * Copyright 2018 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. - */ - -// -// Contains definitions used for wasm object files. -// See: https://github.com/WebAssembly/tool-conventions/blob/master/Linking.md -// - -#ifndef wasm_abi_wasm_object_h -#define wasm_abi_wasm_object_h - -namespace wasm { - -namespace ABI { -enum LinkType : unsigned { - WASM_STACK_POINTER = 0x1, - WASM_SYMBOL_INFO = 0x2, - WASM_DATA_SIZE = 0x3, - WASM_DATA_ALIGNMENT = 0x4, - WASM_SEGMENT_INFO = 0x5, - WASM_INIT_FUNCS = 0x6, -}; -} // namespace ABI - -} // namespace wasm - -#endif // wasm_abi_wasm_object_h diff -Nru binaryen-91/src/asm2wasm.h binaryen-99/src/asm2wasm.h --- binaryen-91/src/asm2wasm.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/asm2wasm.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,3284 +0,0 @@ -/* - * Copyright 2015 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. - */ - -// -// asm.js-to-WebAssembly translator. Uses the Emscripten optimizer -// infrastructure. -// - -#ifndef wasm_asm2wasm_h -#define wasm_asm2wasm_h - -#include "abi/js.h" -#include "asm_v_wasm.h" -#include "asmjs/shared-constants.h" -#include "emscripten-optimizer/optimizer.h" -#include "ir/bits.h" -#include "ir/branch-utils.h" -#include "ir/literal-utils.h" -#include "ir/module-utils.h" -#include "ir/trapping.h" -#include "ir/utils.h" -#include "mixed_arena.h" -#include "parsing.h" -#include "pass.h" -#include "passes/passes.h" -#include "shared-constants.h" -#include "support/debug.h" -#include "wasm-builder.h" -#include "wasm-emscripten.h" -#include "wasm-module-building.h" -#include "wasm.h" - -#define DEBUG_TYPE "asm2wasm" - -namespace wasm { - -using namespace cashew; - -// Names - -Name I32_CTTZ("i32_cttz"); -Name I32_CTPOP("i32_ctpop"); -Name I32_BC2F("i32_bc2f"); -Name I32_BC2I("i32_bc2i"); -Name I64("i64"); -Name I64_CONST("i64_const"); -Name I64_ADD("i64_add"); -Name I64_SUB("i64_sub"); -Name I64_MUL("i64_mul"); -Name I64_UDIV("i64_udiv"); -Name I64_SDIV("i64_sdiv"); -Name I64_UREM("i64_urem"); -Name I64_SREM("i64_srem"); -Name I64_AND("i64_and"); -Name I64_OR("i64_or"); -Name I64_XOR("i64_xor"); -Name I64_SHL("i64_shl"); -Name I64_ASHR("i64_ashr"); -Name I64_LSHR("i64_lshr"); -Name I64_EQ("i64_eq"); -Name I64_NE("i64_ne"); -Name I64_ULE("i64_ule"); -Name I64_SLE("i64_sle"); -Name I64_UGE("i64_uge"); -Name I64_SGE("i64_sge"); -Name I64_ULT("i64_ult"); -Name I64_SLT("i64_slt"); -Name I64_UGT("i64_ugt"); -Name I64_SGT("i64_sgt"); -Name I64_TRUNC("i64_trunc"); -Name I64_SEXT("i64_sext"); -Name I64_ZEXT("i64_zext"); -Name I64_S2F("i64_s2f"); -Name I64_S2D("i64_s2d"); -Name I64_U2F("i64_u2f"); -Name I64_U2D("i64_u2d"); -Name I64_F2S("i64_f2s"); -Name I64_D2S("i64_d2s"); -Name I64_F2U("i64_f2u"); -Name I64_D2U("i64_d2u"); -Name I64_BC2D("i64_bc2d"); -Name I64_BC2I("i64_bc2i"); -Name I64_CTTZ("i64_cttz"); -Name I64_CTLZ("i64_ctlz"); -Name I64_CTPOP("i64_ctpop"); -Name F32_COPYSIGN("f32_copysign"); -Name F64_COPYSIGN("f64_copysign"); -Name LOAD1("load1"); -Name LOAD2("load2"); -Name LOAD4("load4"); -Name LOAD8("load8"); -Name LOADF("loadf"); -Name LOADD("loadd"); -Name STORE1("store1"); -Name STORE2("store2"); -Name STORE4("store4"); -Name STORE8("store8"); -Name STOREF("storef"); -Name STORED("stored"); -Name FTCALL("ftCall_"); -Name MFTCALL("mftCall_"); -Name MAX_("max"); -Name MIN_("min"); -Name ATOMICS("Atomics"); -Name ATOMICS_LOAD("load"); -Name ATOMICS_STORE("store"); -Name ATOMICS_EXCHANGE("exchange"); -Name ATOMICS_COMPARE_EXCHANGE("compareExchange"); -Name ATOMICS_ADD("add"); -Name ATOMICS_SUB("sub"); -Name ATOMICS_AND("and"); -Name ATOMICS_OR("or"); -Name ATOMICS_XOR("xor"); -Name I64_ATOMICS_LOAD("i64_atomics_load"); -Name I64_ATOMICS_STORE("i64_atomics_store"); -Name I64_ATOMICS_AND("i64_atomics_and"); -Name I64_ATOMICS_OR("i64_atomics_or"); -Name I64_ATOMICS_XOR("i64_atomics_xor"); -Name I64_ATOMICS_ADD("i64_atomics_add"); -Name I64_ATOMICS_SUB("i64_atomics_sub"); -Name I64_ATOMICS_EXCHANGE("i64_atomics_exchange"); -Name I64_ATOMICS_COMPAREEXCHANGE("i64_atomics_compareExchange"); -Name TEMP_DOUBLE_PTR("tempDoublePtr"); -Name EMSCRIPTEN_DEBUGINFO("emscripten_debuginfo"); - -// Utilities - -static WASM_NORETURN void abort_on(std::string why, Ref element) { - std::cerr << why << ' '; - element->stringify(std::cerr); - std::cerr << '\n'; - abort(); -} -static WASM_NORETURN void abort_on(std::string why, IString element) { - std::cerr << why << ' ' << element.str << '\n'; - abort(); -} - -Index indexOr(Index x, Index y) { return x ? x : y; } - -// useful when we need to see our parent, in an asm.js expression stack -struct AstStackHelper { - static std::vector astStack; - AstStackHelper(Ref curr) { astStack.push_back(curr); } - ~AstStackHelper() { astStack.pop_back(); } - Ref getParent() { - if (astStack.size() >= 2) { - return astStack[astStack.size() - 2]; - } else { - return Ref(); - } - } -}; - -std::vector AstStackHelper::astStack; - -static bool startsWith(const char* string, const char* prefix) { - while (1) { - if (*prefix == 0) { - return true; - } - if (*string == 0) { - return false; - } - if (*string++ != *prefix++) { - return false; - } - } -}; - -// -// Asm2WasmPreProcessor - does some initial parsing/processing -// of asm.js code. -// - -struct Asm2WasmPreProcessor { - bool memoryGrowth = false; - bool debugInfo = false; - - std::vector debugInfoFileNames; - std::unordered_map debugInfoFileIndices; - - char* allocatedCopy = nullptr; - - ~Asm2WasmPreProcessor() { - if (allocatedCopy) { - free(allocatedCopy); - } - } - - char* process(char* input) { - // emcc --separate-asm modules can look like - // - // Module["asm"] = (function(global, env, buffer) { - // .. - // }); - // - // we need to clean that up. - if (*input == 'M') { - size_t num = strlen(input); - while (*input != 'f') { - input++; - num--; - } - char* end = input + num - 1; - while (*end != '}') { - *end = 0; - end--; - } - } - - // asm.js memory growth uses a quite elaborate pattern. Instead of parsing - // and matching it, we do a simpler detection on emscripten's asm.js output - // format - const char* START_FUNCS = "// EMSCRIPTEN_START_FUNCS"; - char* marker = strstr(input, START_FUNCS); - if (marker) { - // look for memory growth code just up to here, as an optimization - *marker = 0; - } - // this can only show up in growth code, as normal asm.js lacks "true" - char* growthSign = strstr(input, "return true;"); - if (growthSign) { - memoryGrowth = true; - // clean out this function, we don't need it. first where it starts - char* growthFuncStart = growthSign; - while (*growthFuncStart != '{') { - growthFuncStart--; // skip body - } - while (*growthFuncStart != '(') { - growthFuncStart--; // skip params - } - while (*growthFuncStart != ' ') { - growthFuncStart--; // skip function name - } - while (*growthFuncStart != 'f') { - growthFuncStart--; // skip 'function' - } - assert(strstr(growthFuncStart, "function ") == growthFuncStart); - char* growthFuncEnd = strchr(growthSign, '}'); - assert(growthFuncEnd > growthFuncStart + 5); - growthFuncStart[0] = '/'; - growthFuncStart[1] = '*'; - growthFuncEnd--; - growthFuncEnd[0] = '*'; - growthFuncEnd[1] = '/'; - } - if (marker) { - *marker = START_FUNCS[0]; - } - - // handle debug info, if this build wants that. - if (debugInfo) { - // asm.js debug info comments look like - // ..command..; //@line 4 "tests/hello_world.c" - // we convert those into emscripten_debuginfo(file, line) - // calls, where the params are indices into a mapping. then - // the compiler and optimizer can operate on them. after - // that, we can apply the debug info to the wasm node right - // before it - this is guaranteed to be correct without opts, - // and is usually decently accurate with them. - - // an upper bound on how much more space we need as a multiple of the - // original - const auto SCALE_FACTOR = 1.25; - // an upper bound on how much we write for each debug info element itself - const auto ADD_FACTOR = 100; - auto size = strlen(input); - auto upperBound = Index(size * SCALE_FACTOR) + ADD_FACTOR; - char* copy = allocatedCopy = (char*)malloc(upperBound); - char* end = copy + upperBound; - char* out = copy; - std::string DEBUGINFO_INTRINSIC = EMSCRIPTEN_DEBUGINFO.str; - auto DEBUGINFO_INTRINSIC_SIZE = DEBUGINFO_INTRINSIC.size(); - const char* UNKNOWN_FILE = "(unknown)"; - bool seenUseAsm = false; - while (input[0]) { - if (out + ADD_FACTOR >= end) { - Fatal() << "error in handling debug info"; - } - if (startsWith(input, "//@line")) { - char* linePos = input + 8; - char* lineEnd = strpbrk(input + 8, " \n"); - if (!lineEnd) { - // comment goes to end of input - break; - } - input = lineEnd + 1; - std::string file; - if (*lineEnd == ' ') { - // we have a file - char* filePos = strpbrk(input, "\"\n"); - if (!filePos) { - // goes to end of input - break; - } - if (*filePos == '"') { - char* fileEnd = strpbrk(filePos + 1, "\"\n"); - input = fileEnd + 1; - *fileEnd = 0; - file = filePos + 1; - } else { - file = UNKNOWN_FILE; - input = filePos + 1; - } - } else { - // no file, we found \n - file = UNKNOWN_FILE; - } - *lineEnd = 0; - std::string line = linePos; - auto iter = debugInfoFileIndices.find(file); - if (iter == debugInfoFileIndices.end()) { - Index index = debugInfoFileNames.size(); - debugInfoFileNames.push_back(file); - debugInfoFileIndices[file] = index; - } - std::string fileIndex = std::to_string(debugInfoFileIndices[file]); - // write out the intrinsic - strcpy(out, DEBUGINFO_INTRINSIC.c_str()); - out += DEBUGINFO_INTRINSIC_SIZE; - *out++ = '('; - strcpy(out, fileIndex.c_str()); - out += fileIndex.size(); - *out++ = ','; - strcpy(out, line.c_str()); - out += line.size(); - *out++ = ')'; - *out++ = ';'; - } else if (!seenUseAsm && - (startsWith(input, "asm'") || startsWith(input, "asm\""))) { - // end of "use asm" or "almost asm" - // skip the end of "use asm"; (5 chars, a,s,m," or ',;) - const auto SKIP = 5; - seenUseAsm = true; - memcpy(out, input, SKIP); - out += SKIP; - input += SKIP; - // add a fake import for the intrinsic, so the module validates - std::string import = - "\n var emscripten_debuginfo = env.emscripten_debuginfo;"; - strcpy(out, import.c_str()); - out += import.size(); - } else { - *out++ = *input++; - } - } - if (out >= end) { - Fatal() << "error in handling debug info"; - } - *out = 0; - input = copy; - } - - return input; - } -}; - -static Call* checkDebugInfo(Expression* curr) { - if (auto* call = curr->dynCast()) { - if (call->target == EMSCRIPTEN_DEBUGINFO) { - return call; - } - } - return nullptr; -} - -// Debug info appears in the ast as calls to the debug intrinsic. These are -// usually after the relevant node. We adjust them to a position that is not -// dce-able, so that they are not trivially removed when optimizing. -struct AdjustDebugInfo - : public WalkerPass>> { - bool isFunctionParallel() override { return true; } - - Pass* create() override { return new AdjustDebugInfo(); } - - AdjustDebugInfo() { name = "adjust-debug-info"; } - - void visitBlock(Block* curr) { - // look for a debug info call that is unreachable - if (curr->list.size() == 0) { - return; - } - auto* back = curr->list.back(); - for (Index i = 1; i < curr->list.size(); i++) { - if (checkDebugInfo(curr->list[i]) && !checkDebugInfo(curr->list[i - 1])) { - // swap them - std::swap(curr->list[i - 1], curr->list[i]); - } - } - if (curr->list.back() != back) { - // we changed the last element, update the type - curr->finalize(); - } - } -}; - -// -// Asm2WasmBuilder - converts an asm.js module into WebAssembly -// - -class Asm2WasmBuilder { -public: - Module& wasm; - - MixedArena& allocator; - - Builder builder; - - std::unique_ptr optimizingBuilder; - - // globals - - struct MappedGlobal { - Type type; - // if true, this is an import - we should read the value, not just set a - // zero - bool import; - IString module, base; - MappedGlobal() : type(Type::none), import(false) {} - MappedGlobal(Type type) : type(type), import(false) {} - MappedGlobal(Type type, bool import, IString module, IString base) - : type(type), import(import), module(module), base(base) {} - }; - - // function table - // each asm function table gets a range in the one wasm table, starting at a - // location - std::map functionTableStarts; - - Asm2WasmPreProcessor& preprocessor; - bool debug; - TrapMode trapMode; - TrappingFunctionContainer trappingFunctions; - PassOptions passOptions; - bool legalizeJavaScriptFFI; - bool runOptimizationPasses; - bool wasmOnly; - -public: - std::map mappedGlobals; - -private: - void allocateGlobal(IString name, Type type, Literal value = Literal()) { - assert(mappedGlobals.find(name) == mappedGlobals.end()); - if (value.type == Type::none) { - value = Literal::makeZero(type); - } - mappedGlobals.emplace(name, MappedGlobal(type)); - wasm.addGlobal(builder.makeGlobal( - name, type, builder.makeConst(value), Builder::Mutable)); - } - - struct View { - unsigned bytes; - bool integer, signed_; - AsmType type; - View() : bytes(0) {} - View(unsigned bytes, bool integer, bool signed_, AsmType type) - : bytes(bytes), integer(integer), signed_(signed_), type(type) {} - }; - - std::map views; // name (e.g. HEAP8) => view info - - // Imported names of Math.* - IString Math_imul; - IString Math_clz32; - IString Math_fround; - IString Math_abs; - IString Math_floor; - IString Math_ceil; - IString Math_sqrt; - IString Math_max; - IString Math_min; - - // Imported names of Atomics.* - IString Atomics_load; - IString Atomics_store; - IString Atomics_exchange; - IString Atomics_compareExchange; - IString Atomics_add; - IString Atomics_sub; - IString Atomics_and; - IString Atomics_or; - IString Atomics_xor; - - IString llvm_cttz_i32; - - IString tempDoublePtr; // imported name of tempDoublePtr - - // possibly-minified names, detected via their exports - IString udivmoddi4; - IString getTempRet0; - - // function types. we fill in this information as we see - // uses, in the first pass - - std::map importedSignatures; - - void noteImportedFunctionCall(Ref ast, Type resultType, Call* call) { - assert(ast[0] == CALL && ast[1]->isString()); - IString importName = ast[1]->getIString(); - std::vector params; - for (auto* operand : call->operands) { - params.push_back(operand->type); - } - Signature sig = Signature(Type(params), resultType); - // if we already saw this signature, verify it's the same (or else handle - // that) - if (importedSignatures.find(importName) != importedSignatures.end()) { - Signature& previous = importedSignatures[importName]; - if (sig != previous) { - std::vector mergedParams = previous.params.expand(); - // merge it in. we'll add on extra 0 parameters for ones not actually - // used, and upgrade types to double where there is a conflict (which is - // ok since in JS, double can contain everything i32 and f32 can). - for (size_t i = 0; i < params.size(); i++) { - if (mergedParams.size() > i) { - if (mergedParams[i] != params[i]) { - mergedParams[i] = Type::f64; // overloaded type, make it a double - } - } else { - mergedParams.push_back(params[i]); // add a new param - } - } - previous.params = Type(mergedParams); - // we accept none and a concrete type, but two concrete types mean we - // need to use an f64 to contain anything - if (previous.results == Type::none) { - previous.results = sig.results; // use a more concrete type - } else if (previous.results != sig.results && - sig.results != Type::none) { - // overloaded return type, make it a double - previous.results = Type::f64; - } - } - } else { - importedSignatures[importName] = sig; - } - } - - Type getResultTypeOfCallUsingParent(Ref parent, AsmData* data) { - Type result = Type::none; - if (!!parent) { - // if the parent is a seq, we cannot be the last element in it (we would - // have a coercion, which would be the parent), so we must be (us, - // somethingElse), and so our return is void - if (parent[0] != SEQ) { - result = detectWasmType(parent, data); - } - } - return result; - } - - Signature getSignature(Ref parent, ExpressionList& operands, AsmData* data) { - Type results = getResultTypeOfCallUsingParent(parent, data); - std::vector paramTypes; - for (auto& op : operands) { - assert(op->type != Type::unreachable); - paramTypes.push_back(op->type); - } - return Signature(Type(paramTypes), results); - } - -public: - Asm2WasmBuilder(Module& wasm, - Asm2WasmPreProcessor& preprocessor, - bool debug, - TrapMode trapMode, - PassOptions passOptions, - bool legalizeJavaScriptFFI, - bool runOptimizationPasses, - bool wasmOnly) - : wasm(wasm), allocator(wasm.allocator), builder(wasm), - preprocessor(preprocessor), debug(debug), trapMode(trapMode), - trappingFunctions(trapMode, wasm, /* immediate = */ true), - passOptions(passOptions), legalizeJavaScriptFFI(legalizeJavaScriptFFI), - runOptimizationPasses(runOptimizationPasses), wasmOnly(wasmOnly) {} - - void processAsm(Ref ast); - -private: - AsmType detectAsmType(Ref ast, AsmData* data) { - if (ast->isString()) { - IString name = ast->getIString(); - if (!data->isLocal(name)) { - // must be global - assert(mappedGlobals.find(name) != mappedGlobals.end()); - return wasmToAsmType(mappedGlobals[name].type); - } - } else if (ast->isArray(SUB) && ast[1]->isString()) { - // could be a heap access, use view info - auto view = views.find(ast[1]->getIString()); - if (view != views.end()) { - return view->second.type; - } - } - return detectType(ast, data, false, Math_fround, wasmOnly); - } - - Type detectWasmType(Ref ast, AsmData* data) { - return asmToWasmType(detectAsmType(ast, data)); - } - - bool isUnsignedCoercion(Ref ast) { - return detectSign(ast, Math_fround) == ASM_UNSIGNED; - } - - bool isParentUnsignedCoercion(Ref parent) { - // parent may not exist, or may be a non-relevant node - if (!!parent && parent->isArray() && parent[0] == BINARY && - isUnsignedCoercion(parent)) { - return true; - } - return false; - } - - BinaryOp parseAsmBinaryOp(IString op, - Ref left, - Ref right, - Expression* leftWasm, - Expression* rightWasm) { - Type leftType = leftWasm->type; - bool isInteger = leftType == Type::i32; - - if (op == PLUS) { - return isInteger ? BinaryOp::AddInt32 - : (leftType == Type::f32 ? BinaryOp::AddFloat32 - : BinaryOp::AddFloat64); - } - if (op == MINUS) { - return isInteger ? BinaryOp::SubInt32 - : (leftType == Type::f32 ? BinaryOp::SubFloat32 - : BinaryOp::SubFloat64); - } - if (op == MUL) { - return isInteger ? BinaryOp::MulInt32 - : (leftType == Type::f32 ? BinaryOp::MulFloat32 - : BinaryOp::MulFloat64); - } - if (op == AND) { - return BinaryOp::AndInt32; - } - if (op == OR) { - return BinaryOp::OrInt32; - } - if (op == XOR) { - return BinaryOp::XorInt32; - } - if (op == LSHIFT) { - return BinaryOp::ShlInt32; - } - if (op == RSHIFT) { - return BinaryOp::ShrSInt32; - } - if (op == TRSHIFT) { - return BinaryOp::ShrUInt32; - } - if (op == EQ) { - return isInteger ? BinaryOp::EqInt32 - : (leftType == Type::f32 ? BinaryOp::EqFloat32 - : BinaryOp::EqFloat64); - } - if (op == NE) { - return isInteger ? BinaryOp::NeInt32 - : (leftType == Type::f32 ? BinaryOp::NeFloat32 - : BinaryOp::NeFloat64); - } - - bool isUnsigned = isUnsignedCoercion(left) || isUnsignedCoercion(right); - - if (op == DIV) { - if (isInteger) { - return isUnsigned ? BinaryOp::DivUInt32 : BinaryOp::DivSInt32; - } - return leftType == Type::f32 ? BinaryOp::DivFloat32 - : BinaryOp::DivFloat64; - } - if (op == MOD) { - if (isInteger) { - return isUnsigned ? BinaryOp::RemUInt32 : BinaryOp::RemSInt32; - } - return BinaryOp::RemSInt32; // XXX no floating-point remainder op, this - // must be handled by the caller - } - if (op == GE) { - if (isInteger) { - return isUnsigned ? BinaryOp::GeUInt32 : BinaryOp::GeSInt32; - } - return leftType == Type::f32 ? BinaryOp::GeFloat32 : BinaryOp::GeFloat64; - } - if (op == GT) { - if (isInteger) { - return isUnsigned ? BinaryOp::GtUInt32 : BinaryOp::GtSInt32; - } - return leftType == Type::f32 ? BinaryOp::GtFloat32 : BinaryOp::GtFloat64; - } - if (op == LE) { - if (isInteger) { - return isUnsigned ? BinaryOp::LeUInt32 : BinaryOp::LeSInt32; - } - return leftType == Type::f32 ? BinaryOp::LeFloat32 : BinaryOp::LeFloat64; - } - if (op == LT) { - if (isInteger) { - return isUnsigned ? BinaryOp::LtUInt32 : BinaryOp::LtSInt32; - } - return leftType == Type::f32 ? BinaryOp::LtFloat32 : BinaryOp::LtFloat64; - } - abort_on("bad wasm binary op", op); - abort(); // avoid warning - } - - int32_t bytesToShift(unsigned bytes) { - switch (bytes) { - case 1: - return 0; - case 2: - return 1; - case 4: - return 2; - case 8: - return 3; - default: {} - } - abort(); - return -1; // avoid warning - } - - std::map tempNums; - - Literal checkLiteral(Ref ast, bool rawIsInteger = true) { - if (ast->isNumber()) { - if (rawIsInteger) { - return Literal((int32_t)ast->getInteger()); - } else { - return Literal(ast->getNumber()); - } - } else if (ast->isArray(UNARY_PREFIX)) { - if (ast[1] == PLUS && ast[2]->isNumber()) { - return Literal((double)ast[2]->getNumber()); - } - if (ast[1] == MINUS && ast[2]->isNumber()) { - double num = -ast[2]->getNumber(); - if (isSInteger32(num)) { - return Literal((int32_t)num); - } - if (isUInteger32(num)) { - return Literal((uint32_t)num); - } - assert(false && "expected signed or unsigned int32"); - } - if (ast[1] == PLUS && ast[2]->isArray(UNARY_PREFIX) && - ast[2][1] == MINUS && ast[2][2]->isNumber()) { - return Literal((double)-ast[2][2]->getNumber()); - } - if (ast[1] == MINUS && ast[2]->isArray(UNARY_PREFIX) && - ast[2][1] == PLUS && ast[2][2]->isNumber()) { - return Literal((double)-ast[2][2]->getNumber()); - } - } else if (wasmOnly && ast->isArray(CALL) && ast[1]->isString() && - ast[1] == I64_CONST) { - uint64_t low = ast[2][0]->getNumber(); - uint64_t high = ast[2][1]->getNumber(); - return Literal(uint64_t(low + (high << 32))); - } - return Literal(); - } - - Literal getLiteral(Ref ast) { - Literal ret = checkLiteral(ast); - assert(ret.type != Type::none); - return ret; - } - - void fixCallType(Expression* call, Type type) { - if (call->is()) { - call->cast()->type = type; - } else if (call->is()) { - call->cast()->type = type; - } - } - - bool getBuiltinSignature(Signature& sig, - Name module, - Name base, - ExpressionList* operands = nullptr) { - if (module == GLOBAL_MATH) { - if (base == ABS) { - assert(operands && operands->size() == 1); - Type type = (*operands)[0]->type; - if (type == Type::i32) { - sig = Signature(Type::i32, Type::i32); - return true; - } - if (type == Type::f32) { - sig = Signature(Type::f32, Type::f32); - return true; - } - if (type == Type::f64) { - sig = Signature(Type::f64, Type::f64); - return true; - } - } - } - return false; - } - - // ensure a nameless block - Block* blockify(Expression* expression) { - if (expression->is() && !expression->cast()->name.is()) { - return expression->dynCast(); - } - auto ret = allocator.alloc(); - ret->list.push_back(expression); - ret->finalize(); - return ret; - } - - Expression* ensureDouble(Expression* expr) { - return wasm::ensureDouble(expr, allocator); - } - - Expression* truncateToInt32(Expression* value) { - if (value->type == Type::i64) { - return builder.makeUnary(UnaryOp::WrapInt64, value); - } - // either i32, or a call_import whose type we don't know yet (but would be - // legalized to i32 anyhow) - return value; - } - - Function* processFunction(Ref ast); -}; - -void Asm2WasmBuilder::processAsm(Ref ast) { - assert(ast[0] == TOPLEVEL); - if (ast[1]->size() == 0) { - Fatal() << "empty input"; - } - Ref asmFunction = ast[1][0]; - assert(asmFunction[0] == DEFUN); - Ref body = asmFunction[3]; - assert(body[0][0] == STRING && - (body[0][1]->getIString() == IString("use asm") || - body[0][1]->getIString() == IString("almost asm"))); - - // extra functions that we add, that are not from the compiled code. we need - // to make sure to optimize them normally (OptimizingIncrementalModuleBuilder - // does that on the fly for compiled code) - std::vector extraSupportFunctions; - - // first, add the memory elements. we do this before the main compile+optimize - // since the optimizer should see the memory - - // apply memory growth, if relevant - if (preprocessor.memoryGrowth) { - EmscriptenGlueGenerator generator(wasm); - auto* func = generator.generateMemoryGrowthFunction(); - extraSupportFunctions.push_back(func); - wasm.memory.max = Memory::kUnlimitedSize; - } - - // import memory - wasm.memory.name = MEMORY; - wasm.memory.module = ENV; - wasm.memory.base = MEMORY; - wasm.memory.exists = true; - - // import table - wasm.table.name = TABLE; - wasm.table.module = ENV; - wasm.table.base = TABLE; - wasm.table.exists = true; - - // Import memory offset, if not already there - { - auto* import = new Global; - import->name = MEMORY_BASE; - import->module = "env"; - import->base = MEMORY_BASE; - import->type = Type::i32; - wasm.addGlobal(import); - } - - // Import table offset, if not already there - { - auto* import = new Global; - import->name = TABLE_BASE; - import->module = "env"; - import->base = TABLE_BASE; - import->type = Type::i32; - wasm.addGlobal(import); - } - - auto addImport = [&](IString name, Ref imported, Type type) { - assert(imported[0] == DOT); - Ref module = imported[1]; - IString moduleName; - if (module->isArray(DOT)) { - // we can have (global.Math).floor; skip the 'Math' - assert(module[1]->isString()); - if (module[2] == MATH) { - if (imported[2] == IMUL) { - assert(Math_imul.isNull()); - Math_imul = name; - return; - } else if (imported[2] == CLZ32) { - assert(Math_clz32.isNull()); - Math_clz32 = name; - return; - } else if (imported[2] == FROUND) { - assert(Math_fround.isNull()); - Math_fround = name; - return; - } else if (imported[2] == ABS) { - assert(Math_abs.isNull()); - Math_abs = name; - return; - } else if (imported[2] == FLOOR) { - assert(Math_floor.isNull()); - Math_floor = name; - return; - } else if (imported[2] == CEIL) { - assert(Math_ceil.isNull()); - Math_ceil = name; - return; - } else if (imported[2] == SQRT) { - assert(Math_sqrt.isNull()); - Math_sqrt = name; - return; - } else if (imported[2] == MAX_) { - assert(Math_max.isNull()); - Math_max = name; - return; - } else if (imported[2] == MIN_) { - assert(Math_min.isNull()); - Math_min = name; - return; - } - } else if (module[2] == ATOMICS) { - if (imported[2] == ATOMICS_LOAD) { - assert(Atomics_load.isNull()); - Atomics_load = name; - return; - } else if (imported[2] == ATOMICS_STORE) { - assert(Atomics_store.isNull()); - Atomics_store = name; - return; - } else if (imported[2] == ATOMICS_EXCHANGE) { - assert(Atomics_exchange.isNull()); - Atomics_exchange = name; - return; - } else if (imported[2] == ATOMICS_COMPARE_EXCHANGE) { - assert(Atomics_compareExchange.isNull()); - Atomics_compareExchange = name; - return; - } else if (imported[2] == ATOMICS_ADD) { - assert(Atomics_add.isNull()); - Atomics_add = name; - return; - } else if (imported[2] == ATOMICS_SUB) { - assert(Atomics_sub.isNull()); - Atomics_sub = name; - return; - } else if (imported[2] == ATOMICS_AND) { - assert(Atomics_and.isNull()); - Atomics_and = name; - return; - } else if (imported[2] == ATOMICS_OR) { - assert(Atomics_or.isNull()); - Atomics_or = name; - return; - } else if (imported[2] == ATOMICS_XOR) { - assert(Atomics_xor.isNull()); - Atomics_xor = name; - return; - } - } - std::string fullName = module[1]->getCString(); - fullName += '.'; - fullName += +module[2]->getCString(); - moduleName = IString(fullName.c_str(), false); - } else { - assert(module->isString()); - moduleName = module->getIString(); - if (moduleName == ENV) { - auto base = imported[2]->getIString(); - if (base == TEMP_DOUBLE_PTR) { - assert(tempDoublePtr.isNull()); - tempDoublePtr = name; - // we don't return here, as we can only optimize out some uses of tDP. - // So it remains imported - } else if (base == LLVM_CTTZ_I32) { - assert(llvm_cttz_i32.isNull()); - llvm_cttz_i32 = name; - return; - } - } - } - auto base = imported[2]->getIString(); - // special-case some asm builtins - if (module == GLOBAL && (base == NAN_ || base == INFINITY_)) { - type = Type::f64; - } - if (type != Type::none) { - // this is a global - auto* import = new Global; - import->name = name; - import->module = moduleName; - import->base = base; - import->type = type; - mappedGlobals.emplace(name, type); - // __table_base and __memory_base are used as segment/element offsets, and - // must be constant; otherwise, an asm.js import of a constant is mutable, - // e.g. STACKTOP - if (name != TABLE_BASE && name != MEMORY_BASE) { - // we need imported globals to be mutable, but wasm doesn't support that - // yet, so we must import an immutable and create a mutable global - // initialized to its value - import->name = Name(std::string(import->name.str) + "$asm2wasm$import"); - { - wasm.addGlobal( - builder.makeGlobal(name, - type, - builder.makeGlobalGet(import->name, type), - Builder::Mutable)); - } - } - if ((name == TABLE_BASE || name == MEMORY_BASE) && - wasm.getGlobalOrNull(import->base)) { - return; - } - wasm.addGlobal(import); - } else { - // this is a function - auto* import = new Function; - import->name = name; - import->module = moduleName; - import->base = base; - import->sig = Signature(Type::none, Type::none); - wasm.addFunction(import); - } - }; - - IString Int8Array, Int16Array, Int32Array, UInt8Array, UInt16Array, - UInt32Array, Float32Array, Float64Array; - - // set up optimization - - if (runOptimizationPasses) { - Index numFunctions = 0; - for (unsigned i = 1; i < body->size(); i++) { - if (body[i][0] == DEFUN) { - numFunctions++; - } - } - optimizingBuilder = make_unique( - &wasm, - numFunctions, - passOptions, - [&](PassRunner& passRunner) { - // addPrePasses - passRunner.options.lowMemoryUnused = true; - if (debug) { - passRunner.setDebug(true); - passRunner.setValidateGlobally(false); - } - // run autodrop first, before optimizations - passRunner.add(make_unique()); - if (preprocessor.debugInfo) { - // fix up debug info to better survive optimization - passRunner.add(make_unique()); - } - // optimize relooper label variable usage at the wasm level, where it is - // easy - passRunner.add("relooper-jump-threading"); - }, - debug, - false /* do not validate globally yet */); - } - - // if we see no function tables in the processing below, then the table still - // exists and has size 0 - - wasm.table.initial = wasm.table.max = 0; - - // first pass - do all global things, aside from function bodies (second pass) - // and function imports and indirect calls (last pass) - - for (unsigned i = 1; i < body->size(); i++) { - Ref curr = body[i]; - if (curr[0] == VAR) { - // import, global, or table - for (unsigned j = 0; j < curr[1]->size(); j++) { - Ref pair = curr[1][j]; - IString name = pair[0]->getIString(); - Ref value = pair[1]; - if (value->isNumber()) { - // global int - allocateGlobal( - name, Type::i32, Literal(int32_t(value->getInteger()))); - } else if (value[0] == BINARY) { - // int import - assert(value[1] == OR && value[3]->isNumber() && - value[3]->getNumber() == 0); - Ref import = value[2]; // env.what - addImport(name, import, Type::i32); - } else if (value[0] == UNARY_PREFIX) { - // double import or global - assert(value[1] == PLUS); - Ref import = value[2]; - if (import->isNumber()) { - // global - assert(import->getNumber() == 0); - allocateGlobal(name, Type::f64); - } else { - // import - addImport(name, import, Type::f64); - } - } else if (value[0] == CALL) { - assert(value[1]->isString() && value[1] == Math_fround && - value[2][0]->isNumber() && value[2][0]->getNumber() == 0); - allocateGlobal(name, Type::f32); - } else if (value[0] == DOT) { - // simple module.base import. can be a view, or a function. - if (value[1]->isString()) { - IString module = value[1]->getIString(); - IString base = value[2]->getIString(); - if (module == GLOBAL) { - if (base == INT8ARRAY) { - Int8Array = name; - } else if (base == INT16ARRAY) { - Int16Array = name; - } else if (base == INT32ARRAY) { - Int32Array = name; - } else if (base == UINT8ARRAY) { - UInt8Array = name; - } else if (base == UINT16ARRAY) { - UInt16Array = name; - } else if (base == UINT32ARRAY) { - UInt32Array = name; - } else if (base == FLOAT32ARRAY) { - Float32Array = name; - } else if (base == FLOAT64ARRAY) { - Float64Array = name; - } - } - } - // function import - addImport(name, value, Type::none); - } else if (value[0] == NEW) { - // ignore imports of typed arrays, but note the names of the arrays - value = value[1]; - assert(value[0] == CALL); - unsigned bytes; - bool integer, signed_; - AsmType asmType; - Ref constructor = value[1]; - if (constructor->isArray(DOT)) { // global.*Array - IString heap = constructor[2]->getIString(); - if (heap == INT8ARRAY) { - bytes = 1; - integer = true; - signed_ = true; - asmType = ASM_INT; - } else if (heap == INT16ARRAY) { - bytes = 2; - integer = true; - signed_ = true; - asmType = ASM_INT; - } else if (heap == INT32ARRAY) { - bytes = 4; - integer = true; - signed_ = true; - asmType = ASM_INT; - } else if (heap == UINT8ARRAY) { - bytes = 1; - integer = true; - signed_ = false; - asmType = ASM_INT; - } else if (heap == UINT16ARRAY) { - bytes = 2; - integer = true; - signed_ = false; - asmType = ASM_INT; - } else if (heap == UINT32ARRAY) { - bytes = 4; - integer = true; - signed_ = false; - asmType = ASM_INT; - } else if (heap == FLOAT32ARRAY) { - bytes = 4; - integer = false; - signed_ = true; - asmType = ASM_FLOAT; - } else if (heap == FLOAT64ARRAY) { - bytes = 8; - integer = false; - signed_ = true; - asmType = ASM_DOUBLE; - } else { - abort_on("invalid view import", heap); - } - } else { // *ArrayView that was previously imported - assert(constructor->isString()); - IString viewName = constructor->getIString(); - if (viewName == Int8Array) { - bytes = 1; - integer = true; - signed_ = true; - asmType = ASM_INT; - } else if (viewName == Int16Array) { - bytes = 2; - integer = true; - signed_ = true; - asmType = ASM_INT; - } else if (viewName == Int32Array) { - bytes = 4; - integer = true; - signed_ = true; - asmType = ASM_INT; - } else if (viewName == UInt8Array) { - bytes = 1; - integer = true; - signed_ = false; - asmType = ASM_INT; - } else if (viewName == UInt16Array) { - bytes = 2; - integer = true; - signed_ = false; - asmType = ASM_INT; - } else if (viewName == UInt32Array) { - bytes = 4; - integer = true; - signed_ = false; - asmType = ASM_INT; - } else if (viewName == Float32Array) { - bytes = 4; - integer = false; - signed_ = true; - asmType = ASM_FLOAT; - } else if (viewName == Float64Array) { - bytes = 8; - integer = false; - signed_ = true; - asmType = ASM_DOUBLE; - } else { - abort_on("invalid short view import", viewName); - } - } - assert(views.find(name) == views.end()); - views.emplace(name, View(bytes, integer, signed_, asmType)); - } else if (value[0] == ARRAY) { - // function table. we merge them into one big table, so e.g. [foo, - // b1] , [b2, bar] => [foo, b1, b2, bar] - // TODO: when not using aliasing function pointers, we could merge - // them by noticing that - // index 0 in each table is the null func, and each other index - // should only have one non-null func. However, that breaks down - // when function pointer casts are emulated. - if (wasm.table.segments.size() == 0) { - wasm.table.segments.emplace_back( - builder.makeGlobalGet(Name(TABLE_BASE), Type::i32)); - } - auto& segment = wasm.table.segments[0]; - functionTableStarts[name] = - segment.data.size(); // this table starts here - Ref contents = value[1]; - for (unsigned k = 0; k < contents->size(); k++) { - IString curr = contents[k]->getIString(); - segment.data.push_back(curr); - } - wasm.table.initial = wasm.table.max = segment.data.size(); - } else { - abort_on("invalid var element", pair); - } - } - } else if (curr[0] == RETURN) { - // exports - Ref object = curr[1]; - Ref contents = object[1]; - std::map exported; - for (unsigned k = 0; k < contents->size(); k++) { - Ref pair = contents[k]; - IString key = pair[0]->getIString(); - if (pair[1]->isString()) { - // exporting a function - IString value = pair[1]->getIString(); - if (key == Name("_emscripten_replace_memory")) { - // asm.js memory growth provides this special non-asm function, - // which we don't need (we use memory.grow) - assert(!wasm.getFunctionOrNull(value)); - continue; - } else if (key == UDIVMODDI4) { - udivmoddi4 = value; - } else if (key == GET_TEMP_RET0) { - getTempRet0 = value; - } - if (exported.count(key) > 0) { - // asm.js allows duplicate exports, but not wasm. use the last, like - // asm.js - exported[key]->value = value; - } else { - auto* export_ = new Export; - export_->name = key; - export_->value = value; - export_->kind = ExternalKind::Function; - wasm.addExport(export_); - exported[key] = export_; - } - } else { - // export a number. create a global and export it - assert(pair[1]->isNumber()); - assert(exported.count(key) == 0); - auto value = pair[1]->getInteger(); - auto* global = - builder.makeGlobal(key, - Type::i32, - builder.makeConst(Literal(int32_t(value))), - Builder::Immutable); - wasm.addGlobal(global); - auto* export_ = new Export; - export_->name = key; - export_->value = global->name; - export_->kind = ExternalKind::Global; - wasm.addExport(export_); - exported[key] = export_; - } - } - } - } - - // second pass: function bodies - for (unsigned i = 1; i < body->size(); i++) { - Ref curr = body[i]; - if (curr[0] == DEFUN) { - // function - auto* func = processFunction(curr); - if (wasm.getFunctionOrNull(func->name)) { - Fatal() << "duplicate function: " << func->name; - } - if (runOptimizationPasses) { - optimizingBuilder->addFunction(func); - } else { - wasm.addFunction(func); - } - } - } - - if (runOptimizationPasses) { - optimizingBuilder->finish(); - // Now that we have a full module, do memory packing optimizations - { - PassRunner passRunner(&wasm, passOptions); - passRunner.options.lowMemoryUnused = true; - passRunner.add("memory-packing"); - passRunner.run(); - } - // if we added any helper functions (like non-trapping i32-div, etc.), then - // those have not been optimized (the optimizing builder has just been fed - // the asm.js functions). Optimize those now. Typically there are very few, - // just do it sequentially. - PassRunner passRunner(&wasm, passOptions); - passRunner.options.lowMemoryUnused = true; - passRunner.addDefaultFunctionOptimizationPasses(); - for (auto& pair : trappingFunctions.getFunctions()) { - auto* func = pair.second; - passRunner.runOnFunction(func); - } - for (auto* func : extraSupportFunctions) { - passRunner.runOnFunction(func); - } - } - wasm.debugInfoFileNames = std::move(preprocessor.debugInfoFileNames); - - // third pass. first, function imports - - std::vector toErase; - - ModuleUtils::iterImportedFunctions(wasm, [&](Function* import) { - IString name = import->name; - if (importedSignatures.find(name) != importedSignatures.end()) { - // special math builtins - Signature builtin; - if (getBuiltinSignature(builtin, import->module, import->base)) { - import->sig = builtin; - } else { - import->sig = importedSignatures[name]; - } - } else if (import->module != ASM2WASM) { // special-case the special module - // never actually used, which means we don't know the function type since - // the usage tells us, so illegal for it to remain - toErase.push_back(name); - } - }); - - for (auto curr : toErase) { - wasm.removeFunction(curr); - } - - // Finalize calls now that everything is known and generated - - struct FinalizeCalls : public WalkerPass> { - bool isFunctionParallel() override { return true; } - - Pass* create() override { return new FinalizeCalls(parent); } - - Asm2WasmBuilder* parent; - - FinalizeCalls(Asm2WasmBuilder* parent) : parent(parent) { - name = "finalize-calls"; - } - - void notifyAboutWrongOperands(std::string why, Function* calledFunc) { - // use a mutex as this may be shown from multiple threads - static std::mutex mutex; - std::unique_lock lock(mutex); - static const int MAX_SHOWN = 20; - static std::unique_ptr> numShown; - if (!numShown) { - numShown = make_unique>(); - numShown->store(0); - } - if (numShown->load() >= MAX_SHOWN) { - return; - } - std::cerr << why << " in call from " << getFunction()->name << " to " - << calledFunc->name - << " (this is likely due to undefined behavior in C, like " - "defining a function one way and calling it in another, " - "which is important to fix)\n"; - (*numShown)++; - if (numShown->load() >= MAX_SHOWN) { - std::cerr << "(" << numShown->load() - << " such warnings shown; not showing any more)\n"; - } - } - - void visitCall(Call* curr) { - // The call target may not exist if it is one of our special fake imports - // for callIndirect fixups - auto* calledFunc = getModule()->getFunctionOrNull(curr->target); - if (calledFunc && !calledFunc->imported()) { - // The result type of the function being called is now known, and can be - // applied. - auto results = calledFunc->sig.results; - if (curr->type != results) { - curr->type = results; - } - // Handle mismatched numbers of arguments. In clang, if a function is - // declared one way but called in another, it inserts bitcasts to make - // things work. Those end up working since it is "ok" to drop or add - // parameters in native platforms, even though it's undefined behavior. - // We warn about it here, but tolerate it, if there is a simple - // solution. - const std::vector& params = calledFunc->sig.params.expand(); - if (curr->operands.size() < params.size()) { - notifyAboutWrongOperands("warning: asm2wasm adding operands", - calledFunc); - while (curr->operands.size() < params.size()) { - // Add params as necessary, with zeros. - curr->operands.push_back(LiteralUtils::makeZero( - params[curr->operands.size()], *getModule())); - } - } - if (curr->operands.size() > params.size()) { - notifyAboutWrongOperands("warning: asm2wasm dropping operands", - calledFunc); - curr->operands.resize(params.size()); - } - // If the types are wrong, validation will fail later anyhow, but add a - // warning here, it may help people. - for (Index i = 0; i < curr->operands.size(); i++) { - auto sent = curr->operands[i]->type; - if (sent != Type::unreachable && sent != params[i]) { - notifyAboutWrongOperands( - "error: asm2wasm seeing an invalid argument type at index " + - std::to_string(i) + " (this will not validate)", - calledFunc); - } - } - } else { - // A call to an import - // fill things out: add extra params as needed, etc. asm tolerates ffi - // overloading, wasm does not - auto iter = parent->importedSignatures.find(curr->target); - if (iter == parent->importedSignatures.end()) { - return; // one of our fake imports for callIndirect fixups - } - const std::vector& params = iter->second.params.expand(); - for (size_t i = 0; i < params.size(); i++) { - if (i >= curr->operands.size()) { - // add a new param - auto val = parent->allocator.alloc(); - val->type = val->value.type = params[i]; - curr->operands.push_back(val); - } else if (curr->operands[i]->type != params[i]) { - // if the param is used, then we have overloading here and the - // combined type must be f64; if this is an unreachable param, then - // it doesn't matter. - assert(params[i] == Type::f64 || - curr->operands[i]->type == Type::unreachable); - // overloaded, upgrade to f64 - switch (curr->operands[i]->type.getSingle()) { - case Type::i32: - curr->operands[i] = parent->builder.makeUnary( - ConvertSInt32ToFloat64, curr->operands[i]); - break; - case Type::f32: - curr->operands[i] = - parent->builder.makeUnary(PromoteFloat32, curr->operands[i]); - break; - default: {} // f64, unreachable, etc., are all good - } - } - } - Module* wasm = getModule(); - Type importResults = wasm->getFunction(curr->target)->sig.results; - if (curr->type != importResults) { - auto old = curr->type; - curr->type = importResults; - if (importResults == Type::f64) { - // we use a JS f64 value which is the most general, and convert to - // it - switch (old.getSingle()) { - case Type::i32: { - Unary* trunc = - parent->builder.makeUnary(TruncSFloat64ToInt32, curr); - replaceCurrent( - makeTrappingUnary(trunc, parent->trappingFunctions)); - break; - } - case Type::f32: { - replaceCurrent(parent->builder.makeUnary(DemoteFloat64, curr)); - break; - } - case Type::none: { - // this function returns a value, but we are not using it, so it - // must be dropped. autodrop will do that for us. - break; - } - default: - WASM_UNREACHABLE("unexpected type"); - } - } else { - assert(old == Type::none); - // we don't want a return value here, but the import does provide - // one autodrop will do that for us. - } - } - } - } - - void visitCallIndirect(CallIndirect* curr) { - // we already call into target = something + offset, where offset is a - // callImport with the name of the table. replace that with the table - // offset note that for an ftCall or mftCall, we have no asm.js mask, so - // have nothing to do here - auto* target = curr->target; - // might be a block with a fallthrough - if (auto* block = target->dynCast()) { - target = block->list.back(); - } - // the something might have been optimized out, leaving only the call - if (auto* call = target->dynCast()) { - auto tableName = call->target; - if (parent->functionTableStarts.find(tableName) == - parent->functionTableStarts.end()) { - return; - } - curr->target = parent->builder.makeConst( - Literal((int32_t)parent->functionTableStarts[tableName])); - return; - } - auto* add = target->dynCast(); - if (!add) { - return; - } - if (add->right->is()) { - auto* offset = add->right->cast(); - auto tableName = offset->target; - if (parent->functionTableStarts.find(tableName) == - parent->functionTableStarts.end()) { - return; - } - add->right = parent->builder.makeConst( - Literal((int32_t)parent->functionTableStarts[tableName])); - } else { - auto* offset = add->left->dynCast(); - if (!offset) { - return; - } - auto tableName = offset->target; - if (parent->functionTableStarts.find(tableName) == - parent->functionTableStarts.end()) { - return; - } - add->left = parent->builder.makeConst( - Literal((int32_t)parent->functionTableStarts[tableName])); - } - } - - void visitFunction(Function* curr) { - // changing call types requires we percolate types, and drop stuff. - // we do this in this pass so that we don't look broken between passes - AutoDrop().walkFunctionInModule(curr, getModule()); - } - }; - - // apply debug info, reducing intrinsic calls into annotations on the ast - // nodes - struct ApplyDebugInfo - : public WalkerPass< - ExpressionStackWalker>> { - bool isFunctionParallel() override { return true; } - - Pass* create() override { return new ApplyDebugInfo(); } - - ApplyDebugInfo() { name = "apply-debug-info"; } - - Call* lastDebugInfo = nullptr; - - void visitExpression(Expression* curr) { - if (auto* call = checkDebugInfo(curr)) { - lastDebugInfo = call; - replaceCurrent(getModule()->allocator.alloc()); - } else { - if (lastDebugInfo) { - auto& debugLocations = getFunction()->debugLocations; - uint32_t fileIndex = - lastDebugInfo->operands[0]->cast()->value.geti32(); - assert(getModule()->debugInfoFileNames.size() > fileIndex); - uint32_t lineNumber = - lastDebugInfo->operands[1]->cast()->value.geti32(); - // look up the stack, apply to the root expression - Index i = expressionStack.size() - 1; - while (1) { - auto* exp = expressionStack[i]; - bool parentIsStructure = - i > 0 && (expressionStack[i - 1]->is() || - expressionStack[i - 1]->is() || - expressionStack[i - 1]->is()); - if (i == 0 || parentIsStructure || exp->type == Type::none || - exp->type == Type::unreachable) { - if (debugLocations.count(exp) > 0) { - // already present, so look back up - i++; - while (i < expressionStack.size()) { - exp = expressionStack[i]; - if (debugLocations.count(exp) == 0) { - debugLocations[exp] = {fileIndex, lineNumber, 0}; - break; - } - i++; - } - } else { - debugLocations[exp] = {fileIndex, lineNumber, 0}; - } - break; - } - i--; - } - lastDebugInfo = nullptr; - } - } - } - }; - - PassRunner passRunner(&wasm, passOptions); - passRunner.options.lowMemoryUnused = true; - if (debug) { - passRunner.setDebug(true); - passRunner.setValidateGlobally(false); - } - // finalizeCalls also does autoDrop, which is crucial for the non-optimizing - // case, so that the output of the first pass is valid - passRunner.add(make_unique(this)); - passRunner.add(ABI::getLegalizationPass(legalizeJavaScriptFFI - ? ABI::LegalizationLevel::Full - : ABI::LegalizationLevel::Minimal)); - if (runOptimizationPasses) { - // autodrop can add some garbage - passRunner.add("vacuum"); - passRunner.add("remove-unused-brs"); - passRunner.add("vacuum"); - passRunner.add("remove-unused-names"); - passRunner.add("merge-blocks"); - passRunner.add("optimize-instructions"); - passRunner.add("post-emscripten"); - } else { - if (preprocessor.debugInfo) { - // we would have run this before if optimizing, do it now otherwise. must - // precede ApplyDebugInfo - passRunner.add(make_unique()); - } - } - if (preprocessor.debugInfo) { - passRunner.add(make_unique()); - // FIXME maybe just remove the nops that were debuginfo nodes, if not - // optimizing? - passRunner.add("vacuum"); - } - if (runOptimizationPasses) { - // do final global optimizations after all function work is done - // (e.g. duplicate funcs may appear thanks to that work) - passRunner.addDefaultGlobalOptimizationPostPasses(); - } - passRunner.run(); - - // remove the debug info intrinsic - if (preprocessor.debugInfo) { - wasm.removeFunction(EMSCRIPTEN_DEBUGINFO); - } - - if (udivmoddi4.is() && getTempRet0.is()) { - // generate a wasm-optimized __udivmoddi4 method, which we can do much more - // efficiently in wasm we can only do this if we know getTempRet0 as well - // since we use it to figure out which minified global is tempRet0 - // (getTempRet0 might be an import, if this is a shared module, so we can't - // optimize that case) - Name tempRet0; - { - Expression* curr = wasm.getFunction(getTempRet0)->body; - if (curr->is()) { - curr = curr->cast()->list.back(); - } - if (curr->is()) { - curr = curr->cast()->value; - } - auto* get = curr->cast(); - tempRet0 = get->name; - } - // udivmoddi4 receives xl, xh, yl, yl, r, and - // if r then *r = x % y - // returns x / y - auto* func = wasm.getFunction(udivmoddi4); - Builder::clearLocals(func); - Index xl = Builder::addParam(func, "xl", Type::i32), - xh = Builder::addParam(func, "xh", Type::i32), - yl = Builder::addParam(func, "yl", Type::i32), - yh = Builder::addParam(func, "yh", Type::i32), - r = Builder::addParam(func, "r", Type::i32), - x64 = Builder::addVar(func, "x64", Type::i64), - y64 = Builder::addVar(func, "y64", Type::i64); - auto* body = allocator.alloc(); - body->list.push_back( - builder.makeLocalSet(x64, I64Utilities::recreateI64(builder, xl, xh))); - body->list.push_back( - builder.makeLocalSet(y64, I64Utilities::recreateI64(builder, yl, yh))); - body->list.push_back( - builder.makeIf(builder.makeLocalGet(r, Type::i32), - builder.makeStore( - 8, - 0, - 8, - builder.makeLocalGet(r, Type::i32), - builder.makeBinary(RemUInt64, - builder.makeLocalGet(x64, Type::i64), - builder.makeLocalGet(y64, Type::i64)), - Type::i64))); - body->list.push_back(builder.makeLocalSet( - x64, - builder.makeBinary(DivUInt64, - builder.makeLocalGet(x64, Type::i64), - builder.makeLocalGet(y64, Type::i64)))); - body->list.push_back( - builder.makeGlobalSet(tempRet0, I64Utilities::getI64High(builder, x64))); - body->list.push_back(I64Utilities::getI64Low(builder, x64)); - body->finalize(); - func->body = body; - } -} - -Function* Asm2WasmBuilder::processFunction(Ref ast) { - auto name = ast[1]->getIString(); - - BYN_TRACE("asm2wasming func: " << ast[1]->getIString().str << '\n'); - - auto function = new Function; - function->sig = Signature(Type::none, Type::none); - function->name = name; - Ref params = ast[2]; - Ref body = ast[3]; - - UniqueNameMapper nameMapper; - - // given an asm.js label, returns the wasm label for breaks or continues - auto getBreakLabelName = [](IString label) { - return Name(std::string("label$break$") + label.str); - }; - auto getContinueLabelName = [](IString label) { - return Name(std::string("label$continue$") + label.str); - }; - - IStringSet functionVariables; // params or vars - - IString parentLabel; // set in LABEL, then read in WHILE/DO/SWITCH - std::vector breakStack; // where a break will go - std::vector continueStack; // where a continue will go - - AsmData asmData; // need to know var and param types, for asm type detection - - for (unsigned i = 0; i < params->size(); i++) { - Ref curr = body[i]; - auto* assign = curr->asAssignName(); - IString name = assign->target(); - AsmType asmType = - detectType(assign->value(), nullptr, false, Math_fround, wasmOnly); - Builder::addParam(function, name, asmToWasmType(asmType)); - functionVariables.insert(name); - asmData.addParam(name, asmType); - } - unsigned start = params->size(); - while (start < body->size() && body[start]->isArray(VAR)) { - Ref curr = body[start]; - for (unsigned j = 0; j < curr[1]->size(); j++) { - Ref pair = curr[1][j]; - IString name = pair[0]->getIString(); - AsmType asmType = - detectType(pair[1], nullptr, true, Math_fround, wasmOnly); - Builder::addVar(function, name, asmToWasmType(asmType)); - functionVariables.insert(name); - asmData.addVar(name, asmType); - } - start++; - } - - bool addedI32Temp = false; - auto ensureI32Temp = [&]() { - if (addedI32Temp) { - return; - } - addedI32Temp = true; - Builder::addVar(function, I32_TEMP, Type::i32); - functionVariables.insert(I32_TEMP); - asmData.addVar(I32_TEMP, ASM_INT); - }; - - bool seenReturn = false; // function->result is updated if we see a return - // processors - std::function processStatements; - std::function processUnshifted; - std::function processIgnoringShift; - - std::function process = [&](Ref ast) -> Expression* { - // TODO: only create one when we need it? - AstStackHelper astStackHelper(ast); - if (ast->isString()) { - IString name = ast->getIString(); - if (functionVariables.has(name)) { - // var in scope - auto ret = allocator.alloc(); - ret->index = function->getLocalIndex(name); - ret->type = asmToWasmType(asmData.getType(name)); - return ret; - } - if (name == DEBUGGER) { - Call* call = allocator.alloc(); - call->target = DEBUGGER; - call->type = Type::none; - static bool addedImport = false; - if (!addedImport) { - addedImport = true; - auto import = new Function; // debugger = asm2wasm.debugger; - import->name = DEBUGGER; - import->module = ASM2WASM; - import->base = DEBUGGER; - import->sig = Signature(Type::none, Type::none); - wasm.addFunction(import); - } - return call; - } - // global var - assert(mappedGlobals.find(name) != mappedGlobals.end() - ? true - : (std::cerr << name.str << '\n', false)); - MappedGlobal& global = mappedGlobals[name]; - return builder.makeGlobalGet(name, global.type); - } - if (ast->isNumber()) { - auto ret = allocator.alloc(); - double num = ast->getNumber(); - if (isSInteger32(num)) { - ret->value = Literal(int32_t(toSInteger32(num))); - } else if (isUInteger32(num)) { - ret->value = Literal(uint32_t(toUInteger32(num))); - } else { - ret->value = Literal(num); - } - ret->type = ret->value.type; - return ret; - } - if (ast->isAssignName()) { - auto* assign = ast->asAssignName(); - IString name = assign->target(); - if (functionVariables.has(name)) { - auto ret = allocator.alloc(); - ret->index = function->getLocalIndex(assign->target()); - ret->value = process(assign->value()); - ret->makeSet(); - ret->finalize(); - return ret; - } - // global var - if (mappedGlobals.find(name) == mappedGlobals.end()) { - Fatal() << "error: access of a non-existent global var " << name.str; - } - auto* ret = builder.makeGlobalSet(name, process(assign->value())); - // global.set does not return; if our value is trivially not used, don't - // emit a load (if nontrivially not used, opts get it later) - auto parent = astStackHelper.getParent(); - if (!parent || parent->isArray(BLOCK) || parent->isArray(IF)) { - return ret; - } - return builder.makeSequence( - ret, builder.makeGlobalGet(name, ret->value->type)); - } - if (ast->isAssign()) { - auto* assign = ast->asAssign(); - assert(assign->target()->isArray(SUB)); - Ref target = assign->target(); - assert(target[1]->isString()); - IString heap = target[1]->getIString(); - assert(views.find(heap) != views.end()); - View& view = views[heap]; - auto ret = allocator.alloc(); - ret->isAtomic = false; - ret->bytes = view.bytes; - ret->offset = 0; - ret->align = view.bytes; - ret->ptr = processUnshifted(target[2], view.bytes); - ret->value = process(assign->value()); - ret->valueType = asmToWasmType(view.type); - ret->finalize(); - if (ret->valueType != ret->value->type) { - // in asm.js we have some implicit coercions that we must do explicitly - // here - if (ret->valueType == Type::f32 && ret->value->type == Type::f64) { - auto conv = allocator.alloc(); - conv->op = DemoteFloat64; - conv->value = ret->value; - conv->type = Type::f32; - ret->value = conv; - } else if (ret->valueType == Type::f64 && - ret->value->type == Type::f32) { - ret->value = ensureDouble(ret->value); - } else { - abort_on("bad sub[] types", ast); - } - } - return ret; - } - IString what = ast[0]->getIString(); - if (what == BINARY) { - if ((ast[1] == OR || ast[1] == TRSHIFT) && ast[3]->isNumber() && - ast[3]->getNumber() == 0) { - // just look through the ()|0 or ()>>>0 coercion - auto ret = process(ast[2]); - fixCallType(ret, Type::i32); - return ret; - } - auto ret = allocator.alloc(); - ret->left = process(ast[2]); - ret->right = process(ast[3]); - ret->op = parseAsmBinaryOp( - ast[1]->getIString(), ast[2], ast[3], ret->left, ret->right); - ret->finalize(); - if (ret->op == BinaryOp::RemSInt32 && ret->type.isFloat()) { - // WebAssembly does not have floating-point remainder, we have to emit a - // call to a special import of ours - Call* call = allocator.alloc(); - call->target = F64_REM; - call->operands.push_back(ensureDouble(ret->left)); - call->operands.push_back(ensureDouble(ret->right)); - call->type = Type::f64; - static bool addedImport = false; - if (!addedImport) { - addedImport = true; - auto import = new Function; // f64-rem = asm2wasm.f64-rem; - import->name = F64_REM; - import->module = ASM2WASM; - import->base = F64_REM; - import->sig = Signature({Type::f64, Type::f64}, Type::f64); - wasm.addFunction(import); - } - return call; - } - return makeTrappingBinary(ret, trappingFunctions); - } else if (what == SUB) { - Ref target = ast[1]; - assert(target->isString()); - IString heap = target->getIString(); - assert(views.find(heap) != views.end()); - View& view = views[heap]; - auto ret = allocator.alloc(); - ret->isAtomic = false; - ret->bytes = view.bytes; - ret->signed_ = view.signed_; - ret->offset = 0; - ret->align = view.bytes; - ret->ptr = processUnshifted(ast[2], view.bytes); - ret->type = Type::get(view.bytes, !view.integer); - return ret; - } else if (what == UNARY_PREFIX) { - if (ast[1] == PLUS) { - Literal literal = checkLiteral(ast); - if (literal.type != Type::none) { - return builder.makeConst(literal); - } - auto ret = process(ast[2]); // we are a +() coercion - if (ret->type == Type::i32) { - auto conv = allocator.alloc(); - conv->op = isUnsignedCoercion(ast[2]) ? ConvertUInt32ToFloat64 - : ConvertSInt32ToFloat64; - conv->value = ret; - conv->type = Type::Type::f64; - return conv; - } - if (ret->type == Type::f32) { - return ensureDouble(ret); - } - fixCallType(ret, Type::f64); - return ret; - } else if (ast[1] == MINUS) { - if (ast[2]->isNumber() || - (ast[2]->isArray(UNARY_PREFIX) && ast[2][1] == PLUS && - ast[2][2]->isNumber())) { - auto ret = allocator.alloc(); - ret->value = getLiteral(ast); - ret->type = ret->value.type; - return ret; - } - AsmType asmType = detectAsmType(ast[2], &asmData); - if (asmType == ASM_INT) { - // wasm has no unary negation for int, so do 0- - auto ret = allocator.alloc(); - ret->op = SubInt32; - ret->left = builder.makeConst(Literal((int32_t)0)); - ret->right = process(ast[2]); - ret->type = Type::i32; - return ret; - } - auto ret = allocator.alloc(); - ret->value = process(ast[2]); - if (asmType == ASM_DOUBLE) { - ret->op = NegFloat64; - ret->type = Type::f64; - } else if (asmType == ASM_FLOAT) { - ret->op = NegFloat32; - ret->type = Type::f32; - } else { - WASM_UNREACHABLE("unexpected asm type"); - } - return ret; - } else if (ast[1] == B_NOT) { - // ~, might be ~~ as a coercion or just a not - if (ast[2]->isArray(UNARY_PREFIX) && ast[2][1] == B_NOT) { - // if we have an unsigned coercion on us, it is an unsigned op - Expression* expr = process(ast[2][2]); - bool isSigned = !isParentUnsignedCoercion(astStackHelper.getParent()); - bool isF64 = expr->type == Type::f64; - UnaryOp op; - if (isSigned && isF64) { - op = UnaryOp::TruncSFloat64ToInt32; - } else if (isSigned && !isF64) { - op = UnaryOp::TruncSFloat32ToInt32; - } else if (!isSigned && isF64) { - op = UnaryOp::TruncUFloat64ToInt32; - } else { // !isSigned && !isF64 - op = UnaryOp::TruncUFloat32ToInt32; - } - return makeTrappingUnary(builder.makeUnary(op, expr), - trappingFunctions); - } - // no bitwise unary not, so do xor with -1 - auto ret = allocator.alloc(); - ret->op = XorInt32; - ret->left = process(ast[2]); - ret->right = builder.makeConst(Literal(int32_t(-1))); - ret->type = Type::i32; - return ret; - } else if (ast[1] == L_NOT) { - auto ret = allocator.alloc(); - ret->op = EqZInt32; - ret->value = process(ast[2]); - ret->type = Type::i32; - return ret; - } - abort_on("bad unary", ast); - } else if (what == IF) { - auto* condition = process(ast[1]); - auto* ifTrue = process(ast[2]); - return builder.makeIf(truncateToInt32(condition), - ifTrue, - !!ast[3] ? process(ast[3]) : nullptr); - } else if (what == CALL) { - if (ast[1]->isString()) { - IString name = ast[1]->getIString(); - if (name == Math_imul) { - assert(ast[2]->size() == 2); - auto ret = allocator.alloc(); - ret->op = MulInt32; - ret->left = process(ast[2][0]); - ret->right = process(ast[2][1]); - ret->type = Type::i32; - return ret; - } - if (name == Math_clz32 || name == llvm_cttz_i32) { - assert(ast[2]->size() == 1); - auto ret = allocator.alloc(); - ret->op = name == Math_clz32 ? ClzInt32 : CtzInt32; - ret->value = process(ast[2][0]); - ret->type = Type::i32; - return ret; - } - if (name == Math_fround) { - assert(ast[2]->size() == 1); - Literal lit = checkLiteral(ast[2][0], false /* raw is float */); - if (lit.type == Type::f64) { - return builder.makeConst(Literal((float)lit.getf64())); - } - auto ret = allocator.alloc(); - ret->value = process(ast[2][0]); - if (ret->value->type == Type::f64) { - ret->op = DemoteFloat64; - } else if (ret->value->type == Type::i32) { - if (isUnsignedCoercion(ast[2][0])) { - ret->op = ConvertUInt32ToFloat32; - } else { - ret->op = ConvertSInt32ToFloat32; - } - } else if (ret->value->type == Type::f32) { - return ret->value; - } else if (ret->value->type == Type::none) { // call, etc. - ret->value->type = Type::f32; - return ret->value; - } else { - abort_on("confusing fround target", ast[2][0]); - } - ret->type = Type::f32; - return ret; - } - if (name == Math_abs) { - // overloaded on type: i32, f32 or f64 - Expression* value = process(ast[2][0]); - if (value->type == Type::i32) { - // No wasm support, so use a temp local - ensureI32Temp(); - auto set = allocator.alloc(); - set->index = function->getLocalIndex(I32_TEMP); - set->value = value; - set->makeSet(); - set->finalize(); - auto get = [&]() { - auto ret = allocator.alloc(); - ret->index = function->getLocalIndex(I32_TEMP); - ret->type = Type::i32; - return ret; - }; - auto isNegative = allocator.alloc(); - isNegative->op = LtSInt32; - isNegative->left = get(); - isNegative->right = builder.makeConst(Literal(0)); - isNegative->finalize(); - auto block = allocator.alloc(); - block->list.push_back(set); - auto flip = allocator.alloc(); - flip->op = SubInt32; - flip->left = builder.makeConst(Literal(0)); - flip->right = get(); - flip->type = Type::i32; - auto select = allocator.alloc(); - - if (tracing) { - traceExpression(ret, "BinaryenSelect", condition, ifTrue, ifFalse, type); - } - ret->condition = (Expression*)condition; ret->ifTrue = (Expression*)ifTrue; ret->ifFalse = (Expression*)ifFalse; @@ -1375,11 +957,6 @@ BinaryenExpressionRef BinaryenDrop(BinaryenModuleRef module, BinaryenExpressionRef value) { auto* ret = ((Module*)module)->allocator.alloc(); - - if (tracing) { - traceExpression(ret, "BinaryenDrop", value); - } - ret->value = (Expression*)value; ret->finalize(); return static_cast(ret); @@ -1387,80 +964,32 @@ BinaryenExpressionRef BinaryenReturn(BinaryenModuleRef module, BinaryenExpressionRef value) { auto* ret = Builder(*(Module*)module).makeReturn((Expression*)value); - - if (tracing) { - traceExpression(ret, "BinaryenReturn", value); - } - return static_cast(ret); } -BinaryenExpressionRef BinaryenHost(BinaryenModuleRef module, - BinaryenOp op, - const char* name, - BinaryenExpressionRef* operands, - BinaryenIndex numOperands) { - auto* ret = ((Module*)module)->allocator.alloc(); - - if (tracing) { - std::cout << " {\n"; - std::cout << " BinaryenExpressionRef operands[] = { "; - for (BinaryenIndex i = 0; i < numOperands; i++) { - if (i > 0) { - std::cout << ", "; - } - std::cout << "expressions[" << expressions[operands[i]] << "]"; - } - if (numOperands == 0) { - // ensure the array is not empty, otherwise a compiler error on VS - std::cout << "0"; - } - std::cout << " };\n "; - traceExpression( - ret, "BinaryenHost", StringLit(name), "operands", numOperands); - std::cout << " }\n"; - } - - ret->op = HostOp(op); - if (name) { - ret->nameOperand = name; - } - for (BinaryenIndex i = 0; i < numOperands; i++) { - ret->operands.push_back((Expression*)operands[i]); - } - ret->finalize(); +BinaryenExpressionRef BinaryenMemorySize(BinaryenModuleRef module) { + auto* ret = Builder(*(Module*)module).makeMemorySize(); return static_cast(ret); } -BinaryenExpressionRef BinaryenNop(BinaryenModuleRef module) { - auto* ret = ((Module*)module)->allocator.alloc(); - - if (tracing) { - traceExpression(ret, "BinaryenNop"); - } - +BinaryenExpressionRef BinaryenMemoryGrow(BinaryenModuleRef module, + BinaryenExpressionRef delta) { + auto* ret = Builder(*(Module*)module).makeMemoryGrow((Expression*)delta); return static_cast(ret); } +BinaryenExpressionRef BinaryenNop(BinaryenModuleRef module) { + return static_cast(((Module*)module)->allocator.alloc()); +} BinaryenExpressionRef BinaryenUnreachable(BinaryenModuleRef module) { - auto* ret = ((Module*)module)->allocator.alloc(); - - if (tracing) { - traceExpression(ret, "BinaryenUnreachable"); - } - - return static_cast(ret); + return static_cast( + ((Module*)module)->allocator.alloc()); } BinaryenExpressionRef BinaryenAtomicLoad(BinaryenModuleRef module, uint32_t bytes, uint32_t offset, BinaryenType type, BinaryenExpressionRef ptr) { - auto* ret = Builder(*(Module*)module) - .makeAtomicLoad(bytes, offset, (Expression*)ptr, Type(type)); - - if (tracing) { - traceExpression(ret, "BinaryenAtomicLoad", bytes, offset, type, ptr); - } - - return static_cast(ret); + return static_cast( + Builder(*(Module*)module) + .makeAtomicLoad(bytes, offset, (Expression*)ptr, Type(type))); } BinaryenExpressionRef BinaryenAtomicStore(BinaryenModuleRef module, uint32_t bytes, @@ -1468,17 +997,10 @@ BinaryenExpressionRef ptr, BinaryenExpressionRef value, BinaryenType type) { - auto* ret = + return static_cast( Builder(*(Module*)module) .makeAtomicStore( - bytes, offset, (Expression*)ptr, (Expression*)value, Type(type)); - - if (tracing) { - traceExpression( - ret, "BinaryenAtomicStore", bytes, offset, ptr, value, type); - } - - return static_cast(ret); + bytes, offset, (Expression*)ptr, (Expression*)value, Type(type))); } BinaryenExpressionRef BinaryenAtomicRMW(BinaryenModuleRef module, BinaryenOp op, @@ -1487,20 +1009,13 @@ BinaryenExpressionRef ptr, BinaryenExpressionRef value, BinaryenType type) { - auto* ret = Builder(*(Module*)module) - .makeAtomicRMW(AtomicRMWOp(op), - bytes, - offset, - (Expression*)ptr, - (Expression*)value, - Type(type)); - - if (tracing) { - traceExpression( - ret, "BinaryenAtomicRMW", op, bytes, offset, ptr, value, type); - } - - return static_cast(ret); + return static_cast(Builder(*(Module*)module) + .makeAtomicRMW(AtomicRMWOp(op), + bytes, + offset, + (Expression*)ptr, + (Expression*)value, + Type(type))); } BinaryenExpressionRef BinaryenAtomicCmpxchg(BinaryenModuleRef module, BinaryenIndex bytes, @@ -1509,256 +1024,186 @@ BinaryenExpressionRef expected, BinaryenExpressionRef replacement, BinaryenType type) { - auto* ret = Builder(*(Module*)module) - .makeAtomicCmpxchg(bytes, - offset, - (Expression*)ptr, - (Expression*)expected, - (Expression*)replacement, - Type(type)); - - if (tracing) { - traceExpression(ret, - "BinaryenAtomicCmpxchg", - bytes, - offset, - ptr, - expected, - replacement, - type); - } - - return static_cast(ret); + return static_cast(Builder(*(Module*)module) + .makeAtomicCmpxchg(bytes, + offset, + (Expression*)ptr, + (Expression*)expected, + (Expression*)replacement, + Type(type))); } BinaryenExpressionRef BinaryenAtomicWait(BinaryenModuleRef module, BinaryenExpressionRef ptr, BinaryenExpressionRef expected, BinaryenExpressionRef timeout, BinaryenType expectedType) { - auto* ret = Builder(*(Module*)module) - .makeAtomicWait((Expression*)ptr, - (Expression*)expected, - (Expression*)timeout, - Type(expectedType), - 0); - - if (tracing) { - traceExpression( - ret, "BinaryenAtomicWait", ptr, expected, timeout, expectedType); - } - - return static_cast(ret); + return static_cast(Builder(*(Module*)module) + .makeAtomicWait((Expression*)ptr, + (Expression*)expected, + (Expression*)timeout, + Type(expectedType), + 0)); } BinaryenExpressionRef BinaryenAtomicNotify(BinaryenModuleRef module, BinaryenExpressionRef ptr, BinaryenExpressionRef notifyCount) { - auto* ret = + return static_cast( Builder(*(Module*)module) - .makeAtomicNotify((Expression*)ptr, (Expression*)notifyCount, 0); - - if (tracing) { - traceExpression(ret, "BinaryenAtomicNotify", ptr, notifyCount); - } - - return static_cast(ret); + .makeAtomicNotify((Expression*)ptr, (Expression*)notifyCount, 0)); } BinaryenExpressionRef BinaryenAtomicFence(BinaryenModuleRef module) { - auto* ret = Builder(*(Module*)module).makeAtomicFence(); - - if (tracing) { - traceExpression(ret, "BinaryenAtomicFence"); - } - - return static_cast(ret); + return static_cast(Builder(*(Module*)module).makeAtomicFence()); } BinaryenExpressionRef BinaryenSIMDExtract(BinaryenModuleRef module, BinaryenOp op, BinaryenExpressionRef vec, uint8_t index) { - auto* ret = Builder(*(Module*)module) - .makeSIMDExtract(SIMDExtractOp(op), (Expression*)vec, index); - if (tracing) { - traceExpression(ret, "BinaryenSIMDExtract", op, vec, int(index)); - } - return static_cast(ret); + return static_cast( + Builder(*(Module*)module) + .makeSIMDExtract(SIMDExtractOp(op), (Expression*)vec, index)); } BinaryenExpressionRef BinaryenSIMDReplace(BinaryenModuleRef module, BinaryenOp op, BinaryenExpressionRef vec, uint8_t index, BinaryenExpressionRef value) { - auto* ret = + return static_cast( Builder(*(Module*)module) .makeSIMDReplace( - SIMDReplaceOp(op), (Expression*)vec, index, (Expression*)value); - if (tracing) { - traceExpression(ret, "BinaryenSIMDReplace", op, vec, int(index), value); - } - return static_cast(ret); + SIMDReplaceOp(op), (Expression*)vec, index, (Expression*)value)); } BinaryenExpressionRef BinaryenSIMDShuffle(BinaryenModuleRef module, BinaryenExpressionRef left, BinaryenExpressionRef right, const uint8_t mask_[16]) { + assert(mask_); // nullptr would be wrong std::array mask; memcpy(mask.data(), mask_, 16); - auto* ret = Builder(*(Module*)module) - .makeSIMDShuffle((Expression*)left, (Expression*)right, mask); - if (tracing) { - std::cout << " {\n"; - std::cout << " uint8_t mask[] = {"; - for (size_t i = 0; i < mask.size(); ++i) { - std::cout << int(mask[i]); - if (i < mask.size() - 1) { - std::cout << ", "; - } - } - std::cout << "};\n "; - traceExpression(ret, "BinaryenSIMDShuffle", left, right, "mask"); - std::cout << " }\n"; - } - return static_cast(ret); + return static_cast( + Builder(*(Module*)module) + .makeSIMDShuffle((Expression*)left, (Expression*)right, mask)); } BinaryenExpressionRef BinaryenSIMDTernary(BinaryenModuleRef module, BinaryenOp op, BinaryenExpressionRef a, BinaryenExpressionRef b, BinaryenExpressionRef c) { - auto* ret = + return static_cast( Builder(*(Module*)module) .makeSIMDTernary( - SIMDTernaryOp(op), (Expression*)a, (Expression*)b, (Expression*)c); - if (tracing) { - traceExpression(ret, "BinaryenSIMDTernary", op, a, b, c); - } - return static_cast(ret); + SIMDTernaryOp(op), (Expression*)a, (Expression*)b, (Expression*)c)); } BinaryenExpressionRef BinaryenSIMDShift(BinaryenModuleRef module, BinaryenOp op, BinaryenExpressionRef vec, BinaryenExpressionRef shift) { - auto* ret = + return static_cast( Builder(*(Module*)module) - .makeSIMDShift(SIMDShiftOp(op), (Expression*)vec, (Expression*)shift); - if (tracing) { - traceExpression(ret, "BinaryenSIMDShift", op, vec, shift); - } - return static_cast(ret); + .makeSIMDShift(SIMDShiftOp(op), (Expression*)vec, (Expression*)shift)); } BinaryenExpressionRef BinaryenSIMDLoad(BinaryenModuleRef module, BinaryenOp op, uint32_t offset, uint32_t align, BinaryenExpressionRef ptr) { - auto* ret = + return static_cast( Builder(*(Module*)module) .makeSIMDLoad( - SIMDLoadOp(op), Address(offset), Address(align), (Expression*)ptr); - if (tracing) { - traceExpression(ret, "BinaryenSIMDLoad", op, offset, align, ptr); - } - return static_cast(ret); + SIMDLoadOp(op), Address(offset), Address(align), (Expression*)ptr)); } BinaryenExpressionRef BinaryenMemoryInit(BinaryenModuleRef module, uint32_t segment, BinaryenExpressionRef dest, BinaryenExpressionRef offset, BinaryenExpressionRef size) { - auto* ret = + return static_cast( Builder(*(Module*)module) .makeMemoryInit( - segment, (Expression*)dest, (Expression*)offset, (Expression*)size); - if (tracing) { - traceExpression(ret, "BinaryenMemoryInit", segment, dest, offset, size); - } - return static_cast(ret); + segment, (Expression*)dest, (Expression*)offset, (Expression*)size)); } BinaryenExpressionRef BinaryenDataDrop(BinaryenModuleRef module, uint32_t segment) { - auto* ret = Builder(*(Module*)module).makeDataDrop(segment); - if (tracing) { - traceExpression(ret, "BinaryenDataDrop", segment); - } - return static_cast(ret); + return static_cast( + Builder(*(Module*)module).makeDataDrop(segment)); } BinaryenExpressionRef BinaryenMemoryCopy(BinaryenModuleRef module, BinaryenExpressionRef dest, BinaryenExpressionRef source, BinaryenExpressionRef size) { - auto* ret = Builder(*(Module*)module) - .makeMemoryCopy( - (Expression*)dest, (Expression*)source, (Expression*)size); - if (tracing) { - traceExpression(ret, "BinaryenMemoryCopy", dest, source, size); - } - return static_cast(ret); + return static_cast(Builder(*(Module*)module) + .makeMemoryCopy((Expression*)dest, + (Expression*)source, + (Expression*)size)); } BinaryenExpressionRef BinaryenMemoryFill(BinaryenModuleRef module, BinaryenExpressionRef dest, BinaryenExpressionRef value, BinaryenExpressionRef size) { - auto* ret = - Builder(*(Module*)module) - .makeMemoryFill((Expression*)dest, (Expression*)value, (Expression*)size); - if (tracing) { - traceExpression(ret, "BinaryenMemoryFill", dest, value, size); - } - return static_cast(ret); -} -BinaryenExpressionRef BinaryenPush(BinaryenModuleRef module, - BinaryenExpressionRef value) { - auto* ret = Builder(*(Module*)module).makePush((Expression*)value); - if (tracing) { - traceExpression(ret, "BinaryenPush", value); - } - return static_cast(ret); + return static_cast(Builder(*(Module*)module) + .makeMemoryFill((Expression*)dest, + (Expression*)value, + (Expression*)size)); +} + +BinaryenExpressionRef BinaryenTupleMake(BinaryenModuleRef module, + BinaryenExpressionRef* operands, + BinaryenIndex numOperands) { + std::vector ops; + ops.resize(numOperands); + for (size_t i = 0; i < numOperands; ++i) { + ops[i] = (Expression*)operands[i]; + } + return static_cast(Builder(*(Module*)module).makeTupleMake(ops)); +} + +BinaryenExpressionRef BinaryenTupleExtract(BinaryenModuleRef module, + BinaryenExpressionRef tuple, + BinaryenIndex index) { + return static_cast( + Builder(*(Module*)module).makeTupleExtract((Expression*)tuple, index)); } + BinaryenExpressionRef BinaryenPop(BinaryenModuleRef module, BinaryenType type) { - auto* ret = Builder(*(Module*)module).makePop(Type(type)); - if (tracing) { - traceExpression(ret, "BinaryenPop", type); - } - return static_cast(ret); + return static_cast( + Builder(*(Module*)module).makePop(Type(type))); } -BinaryenExpressionRef BinaryenRefNull(BinaryenModuleRef module) { - auto* ret = Builder(*(Module*)module).makeRefNull(); - if (tracing) { - traceExpression(ret, "BinaryenRefNull"); - } - return static_cast(ret); +BinaryenExpressionRef BinaryenRefNull(BinaryenModuleRef module, + BinaryenType type) { + Type type_(type); + assert(type_.isNullable()); + return static_cast(Builder(*(Module*)module).makeRefNull(type_)); } BinaryenExpressionRef BinaryenRefIsNull(BinaryenModuleRef module, BinaryenExpressionRef value) { - auto* ret = Builder(*(Module*)module).makeRefIsNull((Expression*)value); - if (tracing) { - traceExpression(ret, "BinaryenRefIsNull", value); - } - return static_cast(ret); + return static_cast( + Builder(*(Module*)module).makeRefIsNull((Expression*)value)); } -BinaryenExpressionRef BinaryenRefFunc(BinaryenModuleRef module, - const char* func) { - auto* ret = Builder(*(Module*)module).makeRefFunc(func); - if (tracing) { - traceExpression(ret, "BinaryenRefFunc", StringLit(func)); - } - return static_cast(ret); +BinaryenExpressionRef +BinaryenRefFunc(BinaryenModuleRef module, const char* func, BinaryenType type) { + Type type_(type); + return static_cast( + Builder(*(Module*)module).makeRefFunc(func, type_)); +} + +BinaryenExpressionRef BinaryenRefEq(BinaryenModuleRef module, + BinaryenExpressionRef left, + BinaryenExpressionRef right) { + return static_cast( + Builder(*(Module*)module).makeRefEq((Expression*)left, (Expression*)right)); } BinaryenExpressionRef BinaryenTry(BinaryenModuleRef module, BinaryenExpressionRef body, BinaryenExpressionRef catchBody) { - auto* ret = Builder(*(Module*)module) - .makeTry((Expression*)body, (Expression*)catchBody); - if (tracing) { - traceExpression(ret, "BinaryenTry", body, catchBody); - } - return static_cast(ret); + return static_cast( + Builder(*(Module*)module) + .makeTry((Expression*)body, (Expression*)catchBody)); } BinaryenExpressionRef BinaryenThrow(BinaryenModuleRef module, @@ -1769,1374 +1214,1772 @@ for (BinaryenIndex i = 0; i < numOperands; i++) { args.push_back((Expression*)operands[i]); } - auto* ret = Builder(*(Module*)module).makeThrow(event, args); - - if (tracing) { - std::cout << " {\n"; - std::cout << " BinaryenExpressionRef operands[] = { "; - for (BinaryenIndex i = 0; i < numOperands; i++) { - if (i > 0) { - std::cout << ", "; - } - std::cout << "expressions[" << expressions[operands[i]] << "]"; - } - if (numOperands == 0) { - // ensure the array is not empty, otherwise a compiler error on VS - std::cout << "0"; - } - std::cout << " };\n "; - traceExpression( - ret, "BinaryenThrow", StringLit(event), "operands", numOperands); - std::cout << " }\n"; - } - return static_cast(ret); + return static_cast( + Builder(*(Module*)module).makeThrow(event, args)); } BinaryenExpressionRef BinaryenRethrow(BinaryenModuleRef module, BinaryenExpressionRef exnref) { - auto* ret = Builder(*(Module*)module).makeRethrow((Expression*)exnref); - if (tracing) { - traceExpression(ret, "BinaryenRethrow", exnref); - } - return static_cast(ret); + return static_cast( + Builder(*(Module*)module).makeRethrow((Expression*)exnref)); } BinaryenExpressionRef BinaryenBrOnExn(BinaryenModuleRef module, const char* name, const char* eventName, BinaryenExpressionRef exnref) { - Module* wasm = (Module*)module; - Event* event = wasm->getEventOrNull(eventName); + auto* wasm = (Module*)module; + auto* event = wasm->getEventOrNull(eventName); assert(event && "br_on_exn's event must exist"); - auto* ret = Builder(*wasm).makeBrOnExn(name, event, (Expression*)exnref); + return static_cast( + Builder(*wasm).makeBrOnExn(name, event, (Expression*)exnref)); +} - if (tracing) { - traceExpression( - ret, "BinaryenBrOnExn", StringLit(name), StringLit(eventName), exnref); - } - return static_cast(ret); +BinaryenExpressionRef BinaryenI31New(BinaryenModuleRef module, + BinaryenExpressionRef value) { + return static_cast( + Builder(*(Module*)module).makeI31New((Expression*)value)); } +BinaryenExpressionRef BinaryenI31Get(BinaryenModuleRef module, + BinaryenExpressionRef i31, + int signed_) { + return static_cast( + Builder(*(Module*)module).makeI31Get((Expression*)i31, signed_ != 0)); +} + +// TODO (gc): ref.test +// TODO (gc): ref.cast +// TODO (gc): br_on_cast +// TODO (gc): rtt.canon +// TODO (gc): rtt.sub +// TODO (gc): struct.new +// TODO (gc): struct.get +// TODO (gc): struct.set +// TODO (gc): array.new +// TODO (gc): array.get +// TODO (gc): array.set +// TODO (gc): array.len + // Expression utility BinaryenExpressionId BinaryenExpressionGetId(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenExpressionGetId(expressions[" << expressions[expr] - << "]);\n"; - } - return ((Expression*)expr)->_id; } BinaryenType BinaryenExpressionGetType(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenExpressionGetType(expressions[" << expressions[expr] - << "]);\n"; - } - return ((Expression*)expr)->type.getID(); } +void BinaryenExpressionSetType(BinaryenExpressionRef expr, BinaryenType type) { + ((Expression*)expr)->type = Type(type); +} void BinaryenExpressionPrint(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenExpressionPrint(expressions[" << expressions[expr] - << "]);\n"; - } + std::cout << *(Expression*)expr << '\n'; +} +void BinaryenExpressionFinalize(BinaryenExpressionRef expr) { + ReFinalizeNode().visit((Expression*)expr); +} - WasmPrinter::printExpression((Expression*)expr, std::cout); - std::cout << '\n'; +BinaryenExpressionRef BinaryenExpressionCopy(BinaryenExpressionRef expr, + BinaryenModuleRef module) { + return ExpressionManipulator::copy(expr, *(Module*)module); } // Specific expression utility // Block const char* BinaryenBlockGetName(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenBlockGetName(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->name.c_str(); } +void BinaryenBlockSetName(BinaryenExpressionRef expr, const char* name) { + auto* expression = (Expression*)expr; + assert(expression->is()); + // may be null or empty + static_cast(expression)->name = name; +} BinaryenIndex BinaryenBlockGetNumChildren(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenBlockGetNumChildren(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->list.size(); } -BinaryenExpressionRef BinaryenBlockGetChild(BinaryenExpressionRef expr, - BinaryenIndex index) { - if (tracing) { - std::cout << " BinaryenBlockGetChild(expressions[" << expressions[expr] - << "], " << index << ");\n"; - } - +BinaryenExpressionRef BinaryenBlockGetChildAt(BinaryenExpressionRef expr, + BinaryenIndex index) { auto* expression = (Expression*)expr; assert(expression->is()); assert(index < static_cast(expression)->list.size()); return static_cast(expression)->list[index]; } +void BinaryenBlockSetChildAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef childExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(childExpr); + auto& list = static_cast(expression)->list; + assert(index < list.size()); + list[index] = (Expression*)childExpr; +} +BinaryenIndex BinaryenBlockAppendChild(BinaryenExpressionRef expr, + BinaryenExpressionRef childExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(childExpr); + auto& list = static_cast(expression)->list; + auto index = list.size(); + list.push_back((Expression*)childExpr); + return index; +} +void BinaryenBlockInsertChildAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef childExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(childExpr); + static_cast(expression)->list.insertAt(index, (Expression*)childExpr); +} +BinaryenExpressionRef BinaryenBlockRemoveChildAt(BinaryenExpressionRef expr, + BinaryenIndex index) { + auto* expression = (Expression*)expr; + assert(expression->is()); + return static_cast(expression)->list.removeAt(index); +} // If BinaryenExpressionRef BinaryenIfGetCondition(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenIfGetCondition(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->condition; } +void BinaryenIfSetCondition(BinaryenExpressionRef expr, + BinaryenExpressionRef condExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(condExpr); + static_cast(expression)->condition = (Expression*)condExpr; +} BinaryenExpressionRef BinaryenIfGetIfTrue(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenIfGetIfTrue(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->ifTrue; } +void BinaryenIfSetIfTrue(BinaryenExpressionRef expr, + BinaryenExpressionRef ifTrueExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(ifTrueExpr); + static_cast(expression)->ifTrue = (Expression*)ifTrueExpr; +} BinaryenExpressionRef BinaryenIfGetIfFalse(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenIfGetIfFalse(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->ifFalse; } +void BinaryenIfSetIfFalse(BinaryenExpressionRef expr, + BinaryenExpressionRef ifFalseExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + // may be null + static_cast(expression)->ifFalse = (Expression*)ifFalseExpr; +} // Loop const char* BinaryenLoopGetName(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenLoopGetName(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->name.c_str(); } +void BinaryenLoopSetName(BinaryenExpressionRef expr, const char* name) { + auto* expression = (Expression*)expr; + assert(expression->is()); + // may be null or empty + static_cast(expression)->name = name; +} BinaryenExpressionRef BinaryenLoopGetBody(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenLoopGetBody(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->body; } +void BinaryenLoopSetBody(BinaryenExpressionRef expr, + BinaryenExpressionRef bodyExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(bodyExpr); + static_cast(expression)->body = (Expression*)bodyExpr; +} // Break const char* BinaryenBreakGetName(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenBreakGetName(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->name.c_str(); } +void BinaryenBreakSetName(BinaryenExpressionRef expr, const char* name) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(name); + static_cast(expression)->name = name; +} BinaryenExpressionRef BinaryenBreakGetCondition(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenBreakGetCondition(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->condition; } +void BinaryenBreakSetCondition(BinaryenExpressionRef expr, + BinaryenExpressionRef condExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + // may be null (br) + static_cast(expression)->condition = (Expression*)condExpr; +} BinaryenExpressionRef BinaryenBreakGetValue(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenBreakGetValue(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->value; } +void BinaryenBreakSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + // may be null + static_cast(expression)->value = (Expression*)valueExpr; +} // Switch BinaryenIndex BinaryenSwitchGetNumNames(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSwitchGetNumNames(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->targets.size(); } -const char* BinaryenSwitchGetName(BinaryenExpressionRef expr, - BinaryenIndex index) { - if (tracing) { - std::cout << " BinaryenSwitchGetName(expressions[" << expressions[expr] - << "], " << index << ");\n"; - } - +const char* BinaryenSwitchGetNameAt(BinaryenExpressionRef expr, + BinaryenIndex index) { auto* expression = (Expression*)expr; assert(expression->is()); assert(index < static_cast(expression)->targets.size()); return static_cast(expression)->targets[index].c_str(); } +void BinaryenSwitchSetNameAt(BinaryenExpressionRef expr, + BinaryenIndex index, + const char* name) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(index < static_cast(expression)->targets.size()); + assert(name); + static_cast(expression)->targets[index] = name; +} +BinaryenIndex BinaryenSwitchAppendName(BinaryenExpressionRef expr, + const char* name) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(name); + auto& list = static_cast(expression)->targets; + auto index = list.size(); + list.push_back(name); + return index; +} +void BinaryenSwitchInsertNameAt(BinaryenExpressionRef expr, + BinaryenIndex index, + const char* name) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(name); + static_cast(expression)->targets.insertAt(index, name); +} +const char* BinaryenSwitchRemoveNameAt(BinaryenExpressionRef expr, + BinaryenIndex index) { + auto* expression = (Expression*)expr; + assert(expression->is()); + return static_cast(expression)->targets.removeAt(index).c_str(); +} const char* BinaryenSwitchGetDefaultName(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSwitchGetDefaultName(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->default_.c_str(); } +void BinaryenSwitchSetDefaultName(BinaryenExpressionRef expr, + const char* name) { + auto* expression = (Expression*)expr; + assert(expression->is()); + // may be null or empty + static_cast(expression)->default_ = name; +} BinaryenExpressionRef BinaryenSwitchGetCondition(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSwitchGetCondition(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->condition; } +void BinaryenSwitchSetCondition(BinaryenExpressionRef expr, + BinaryenExpressionRef condExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(condExpr); + static_cast(expression)->condition = (Expression*)condExpr; +} BinaryenExpressionRef BinaryenSwitchGetValue(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSwitchGetValue(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->value; } +void BinaryenSwitchSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + // may be null + static_cast(expression)->value = (Expression*)valueExpr; +} // Call const char* BinaryenCallGetTarget(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenCallGetTarget(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->target.c_str(); } +void BinaryenCallSetTarget(BinaryenExpressionRef expr, const char* target) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(target); + static_cast(expression)->target = target; +} BinaryenIndex BinaryenCallGetNumOperands(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenCallGetNumOperands(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->operands.size(); } -BinaryenExpressionRef BinaryenCallGetOperand(BinaryenExpressionRef expr, - BinaryenIndex index) { - if (tracing) { - std::cout << " BinaryenCallGetOperand(expressions[" << expressions[expr] - << "], " << index << ");\n"; - } - +BinaryenExpressionRef BinaryenCallGetOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index) { auto* expression = (Expression*)expr; assert(expression->is()); assert(index < static_cast(expression)->operands.size()); return static_cast(expression)->operands[index]; } +void BinaryenCallSetOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(index < static_cast(expression)->operands.size()); + assert(operandExpr); + static_cast(expression)->operands[index] = (Expression*)operandExpr; +} +BinaryenIndex BinaryenCallAppendOperand(BinaryenExpressionRef expr, + BinaryenExpressionRef operandExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(operandExpr); + auto& list = static_cast(expression)->operands; + auto index = list.size(); + list.push_back((Expression*)operandExpr); + return index; +} +void BinaryenCallInsertOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(operandExpr); + static_cast(expression) + ->operands.insertAt(index, (Expression*)operandExpr); +} +BinaryenExpressionRef BinaryenCallRemoveOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index) { + auto* expression = (Expression*)expr; + assert(expression->is()); + return static_cast(expression)->operands.removeAt(index); +} +int BinaryenCallIsReturn(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + return static_cast(expression)->isReturn; +} +void BinaryenCallSetReturn(BinaryenExpressionRef expr, int isReturn) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->isReturn = isReturn != 0; +} // CallIndirect BinaryenExpressionRef BinaryenCallIndirectGetTarget(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenCallIndirectGetTarget(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->target; } +void BinaryenCallIndirectSetTarget(BinaryenExpressionRef expr, + BinaryenExpressionRef targetExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(targetExpr); + static_cast(expression)->target = (Expression*)targetExpr; +} BinaryenIndex BinaryenCallIndirectGetNumOperands(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenCallIndirectGetNumOperands(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->operands.size(); } -BinaryenExpressionRef BinaryenCallIndirectGetOperand(BinaryenExpressionRef expr, - BinaryenIndex index) { - if (tracing) { - std::cout << " BinaryenCallIndirectGetOperand(expressions[" - << expressions[expr] << "], " << index << ");\n"; - } - +BinaryenExpressionRef +BinaryenCallIndirectGetOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index) { auto* expression = (Expression*)expr; assert(expression->is()); assert(index < static_cast(expression)->operands.size()); return static_cast(expression)->operands[index]; } +void BinaryenCallIndirectSetOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(index < static_cast(expression)->operands.size()); + assert(operandExpr); + static_cast(expression)->operands[index] = + (Expression*)operandExpr; +} +BinaryenIndex +BinaryenCallIndirectAppendOperand(BinaryenExpressionRef expr, + BinaryenExpressionRef operandExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(operandExpr); + auto& list = static_cast(expression)->operands; + auto index = list.size(); + list.push_back((Expression*)operandExpr); + return index; +} +void BinaryenCallIndirectInsertOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(operandExpr); + static_cast(expression) + ->operands.insertAt(index, (Expression*)operandExpr); +} +BinaryenExpressionRef +BinaryenCallIndirectRemoveOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index) { + auto* expression = (Expression*)expr; + assert(expression->is()); + return static_cast(expression)->operands.removeAt(index); +} +int BinaryenCallIndirectIsReturn(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + return static_cast(expression)->isReturn; +} +void BinaryenCallIndirectSetReturn(BinaryenExpressionRef expr, int isReturn) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->isReturn = isReturn != 0; +} +BinaryenType BinaryenCallIndirectGetParams(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + return static_cast(expression)->sig.params.getID(); +} +void BinaryenCallIndirectSetParams(BinaryenExpressionRef expr, + BinaryenType params) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->sig.params = Type(params); +} +BinaryenType BinaryenCallIndirectGetResults(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + return static_cast(expression)->sig.results.getID(); +} +void BinaryenCallIndirectSetResults(BinaryenExpressionRef expr, + BinaryenType results) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->sig.results = Type(results); +} // LocalGet BinaryenIndex BinaryenLocalGetGetIndex(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenLocalGetGetIndex(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->index; } +void BinaryenLocalGetSetIndex(BinaryenExpressionRef expr, BinaryenIndex index) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->index = index; +} // LocalSet int BinaryenLocalSetIsTee(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenLocalSetIsTee(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->isTee(); + // has no setter } BinaryenIndex BinaryenLocalSetGetIndex(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenLocalSetGetIndex(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->index; } +void BinaryenLocalSetSetIndex(BinaryenExpressionRef expr, BinaryenIndex index) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->index = index; +} BinaryenExpressionRef BinaryenLocalSetGetValue(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenLocalSetGetValue(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->value; } +void BinaryenLocalSetSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(valueExpr); + static_cast(expression)->value = (Expression*)valueExpr; +} // GlobalGet const char* BinaryenGlobalGetGetName(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenGlobalGetGetName(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->name.c_str(); } +void BinaryenGlobalGetSetName(BinaryenExpressionRef expr, const char* name) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(name); + static_cast(expression)->name = name; +} // GlobalSet const char* BinaryenGlobalSetGetName(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenGlobalSetGetName(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->name.c_str(); } -BinaryenExpressionRef BinaryenGlobalSetGetValue(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenGlobalSetGetValue(expressions[" << expressions[expr] - << "]);\n"; - } - +void BinaryenGlobalSetSetName(BinaryenExpressionRef expr, const char* name) { auto* expression = (Expression*)expr; assert(expression->is()); - return static_cast(expression)->value; + assert(name); + static_cast(expression)->name = name; } -// Host -BinaryenOp BinaryenHostGetOp(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenHostGetOp(expressions[" << expressions[expr] - << "]);\n"; - } - +BinaryenExpressionRef BinaryenGlobalSetGetValue(BinaryenExpressionRef expr) { auto* expression = (Expression*)expr; - assert(expression->is()); - return static_cast(expression)->op; + assert(expression->is()); + return static_cast(expression)->value; } -const char* BinaryenHostGetNameOperand(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenHostGetNameOperand(expressions[" - << expressions[expr] << "]);\n"; - } - +void BinaryenGlobalSetSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr) { auto* expression = (Expression*)expr; - assert(expression->is()); - return static_cast(expression)->nameOperand.c_str(); + assert(expression->is()); + assert(valueExpr); + static_cast(expression)->value = (Expression*)valueExpr; } -BinaryenIndex BinaryenHostGetNumOperands(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenHostGetNumOperands(expressions[" - << expressions[expr] << "]);\n"; - } - +// MemoryGrow +BinaryenExpressionRef BinaryenMemoryGrowGetDelta(BinaryenExpressionRef expr) { auto* expression = (Expression*)expr; - assert(expression->is()); - return static_cast(expression)->operands.size(); + assert(expression->is()); + return static_cast(expression)->delta; } -BinaryenExpressionRef BinaryenHostGetOperand(BinaryenExpressionRef expr, - BinaryenIndex index) { - if (tracing) { - std::cout << " BinaryenHostGetOperand(expressions[" << expressions[expr] - << "], " << index << ");\n"; - } - +void BinaryenMemoryGrowSetDelta(BinaryenExpressionRef expr, + BinaryenExpressionRef deltaExpr) { auto* expression = (Expression*)expr; - assert(expression->is()); - assert(index < static_cast(expression)->operands.size()); - return static_cast(expression)->operands[index]; + assert(expression->is()); + assert(deltaExpr); + static_cast(expression)->delta = (Expression*)deltaExpr; } // Load int BinaryenLoadIsAtomic(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenLoadIsAtomic(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->isAtomic; } +void BinaryenLoadSetAtomic(BinaryenExpressionRef expr, int isAtomic) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->isAtomic = isAtomic != 0; +} int BinaryenLoadIsSigned(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenLoadIsSigned(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->signed_; } +void BinaryenLoadSetSigned(BinaryenExpressionRef expr, int isSigned) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->signed_ = isSigned != 0; +} uint32_t BinaryenLoadGetBytes(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenLoadGetBytes(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->bytes; } +void BinaryenLoadSetBytes(BinaryenExpressionRef expr, uint32_t bytes) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->bytes = bytes; +} uint32_t BinaryenLoadGetOffset(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenLoadGetOffset(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->offset; } +void BinaryenLoadSetOffset(BinaryenExpressionRef expr, uint32_t offset) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->offset = offset; +} uint32_t BinaryenLoadGetAlign(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenLoadGetAlign(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->align; } +void BinaryenLoadSetAlign(BinaryenExpressionRef expr, uint32_t align) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->align = align; +} BinaryenExpressionRef BinaryenLoadGetPtr(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenLoadGetPtr(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->ptr; } +void BinaryenLoadSetPtr(BinaryenExpressionRef expr, + BinaryenExpressionRef ptrExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(ptrExpr); + static_cast(expression)->ptr = (Expression*)ptrExpr; +} // Store int BinaryenStoreIsAtomic(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenStoreIsAtomic(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->isAtomic; } +void BinaryenStoreSetAtomic(BinaryenExpressionRef expr, int isAtomic) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->isAtomic = isAtomic != 0; +} uint32_t BinaryenStoreGetBytes(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenStoreGetBytes(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->bytes; } +void BinaryenStoreSetBytes(BinaryenExpressionRef expr, uint32_t bytes) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->bytes = bytes; +} uint32_t BinaryenStoreGetOffset(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenStoreGetOffset(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->offset; } +void BinaryenStoreSetOffset(BinaryenExpressionRef expr, uint32_t offset) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->offset = offset; +} uint32_t BinaryenStoreGetAlign(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenStoreGetAlign(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->align; } +void BinaryenStoreSetAlign(BinaryenExpressionRef expr, uint32_t align) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->align = align; +} BinaryenExpressionRef BinaryenStoreGetPtr(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenStoreGetPtr(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->ptr; } +void BinaryenStoreSetPtr(BinaryenExpressionRef expr, + BinaryenExpressionRef ptrExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(ptrExpr); + static_cast(expression)->ptr = (Expression*)ptrExpr; +} BinaryenExpressionRef BinaryenStoreGetValue(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenStoreGetValue(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->value; } +void BinaryenStoreSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(valueExpr); + static_cast(expression)->value = (Expression*)valueExpr; +} +BinaryenType BinaryenStoreGetValueType(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + return static_cast(expression)->valueType.getID(); +} +void BinaryenStoreSetValueType(BinaryenExpressionRef expr, + BinaryenType valueType) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->valueType = Type(valueType); +} // Const int32_t BinaryenConstGetValueI32(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenConstGetValueI32(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->value.geti32(); } +void BinaryenConstSetValueI32(BinaryenExpressionRef expr, int32_t value) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->value = Literal(value); +} int64_t BinaryenConstGetValueI64(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenConstGetValueI64(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->value.geti64(); } +void BinaryenConstSetValueI64(BinaryenExpressionRef expr, int64_t value) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->value = Literal(value); +} int32_t BinaryenConstGetValueI64Low(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenConstGetValueI64Low(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); - return (int32_t)(static_cast(expression)->value.geti64() & - 0xffffffff); + return (int32_t)(static_cast(expression)->value.geti64() & + 0xffffffff); +} +void BinaryenConstSetValueI64Low(BinaryenExpressionRef expr, int32_t valueLow) { + auto* expression = (Expression*)expr; + assert(expression->is()); + auto& value = static_cast(expression)->value; + int64_t valueI64 = value.type == Type::i64 ? value.geti64() : 0; + static_cast(expression)->value = + Literal((valueI64 & ~0xffffffff) | (int64_t(valueLow) & 0xffffffff)); } int32_t BinaryenConstGetValueI64High(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenConstGetValueI64High(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return (int32_t)(static_cast(expression)->value.geti64() >> 32); } +void BinaryenConstSetValueI64High(BinaryenExpressionRef expr, + int32_t valueHigh) { + auto* expression = (Expression*)expr; + assert(expression->is()); + auto& value = static_cast(expression)->value; + int64_t valueI64 = value.type == Type::i64 ? value.geti64() : 0; + static_cast(expression)->value = + Literal((int64_t(valueHigh) << 32) | (valueI64 & 0xffffffff)); +} float BinaryenConstGetValueF32(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenConstGetValueF32(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->value.getf32(); } +void BinaryenConstSetValueF32(BinaryenExpressionRef expr, float value) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->value = Literal(value); +} double BinaryenConstGetValueF64(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenConstGetValueF64(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->value.getf64(); } +void BinaryenConstSetValueF64(BinaryenExpressionRef expr, double value) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->value = Literal(value); +} void BinaryenConstGetValueV128(BinaryenExpressionRef expr, uint8_t* out) { - if (tracing) { - std::cout << " BinaryenConstGetValueV128(expressions[" << expressions[expr] - << "], " << out << ");\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); memcpy(out, static_cast(expression)->value.getv128().data(), 16); } +void BinaryenConstSetValueV128(BinaryenExpressionRef expr, + const uint8_t value[16]) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(value); // nullptr would be wrong + static_cast(expression)->value = Literal(value); +} // Unary BinaryenOp BinaryenUnaryGetOp(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenUnaryGetOp(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->op; } +void BinaryenUnarySetOp(BinaryenExpressionRef expr, BinaryenOp op) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->op = UnaryOp(op); +} BinaryenExpressionRef BinaryenUnaryGetValue(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenUnaryGetValue(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->value; } +void BinaryenUnarySetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(valueExpr); + static_cast(expression)->value = (Expression*)valueExpr; +} // Binary BinaryenOp BinaryenBinaryGetOp(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenBinaryGetOp(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->op; } +void BinaryenBinarySetOp(BinaryenExpressionRef expr, BinaryenOp op) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->op = BinaryOp(op); +} BinaryenExpressionRef BinaryenBinaryGetLeft(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenBinaryGetLeft(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->left; } +void BinaryenBinarySetLeft(BinaryenExpressionRef expr, + BinaryenExpressionRef leftExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(leftExpr); + static_cast(expression)->left = (Expression*)leftExpr; +} BinaryenExpressionRef BinaryenBinaryGetRight(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenBinaryGetRight(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->right; } +void BinaryenBinarySetRight(BinaryenExpressionRef expr, + BinaryenExpressionRef rightExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(rightExpr); + static_cast(expression)->right = (Expression*)rightExpr; +} // Select BinaryenExpressionRef BinaryenSelectGetIfTrue(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSelectGetIfTrue(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); + assert(ifTrueExpr); + static_cast(expression)->ifTrue = (Expression*)ifTrueExpr; +} BinaryenExpressionRef BinaryenSelectGetIfFalse(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSelectGetIfFalse(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); + assert(ifFalseExpr); + static_cast(expression)->ifFalse = (Expression*)ifFalseExpr; +} BinaryenExpressionRef BinaryenSelectGetCondition(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSelectGetCondition(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); + assert(condExpr); + static_cast(expression)->condition = (Expression*)condExpr; +} // Drop BinaryenExpressionRef BinaryenDropGetValue(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenDropGetValue(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->value; } +void BinaryenDropSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(valueExpr); + static_cast(expression)->value = (Expression*)valueExpr; +} // Return BinaryenExpressionRef BinaryenReturnGetValue(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenReturnGetValue(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->value; } +void BinaryenReturnSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + // may be null + static_cast(expression)->value = (Expression*)valueExpr; +} // AtomicRMW BinaryenOp BinaryenAtomicRMWGetOp(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenAtomicRMWGetOp(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->op; } +void BinaryenAtomicRMWSetOp(BinaryenExpressionRef expr, BinaryenOp op) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->op = AtomicRMWOp(op); +} uint32_t BinaryenAtomicRMWGetBytes(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenAtomicRMWGetBytes(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->bytes; } +void BinaryenAtomicRMWSetBytes(BinaryenExpressionRef expr, uint32_t bytes) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->bytes = bytes; +} uint32_t BinaryenAtomicRMWGetOffset(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenAtomicRMWGetOffset(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->offset; } +void BinaryenAtomicRMWSetOffset(BinaryenExpressionRef expr, uint32_t offset) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->offset = offset; +} BinaryenExpressionRef BinaryenAtomicRMWGetPtr(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenAtomicRMWGetPtr(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->ptr; } +void BinaryenAtomicRMWSetPtr(BinaryenExpressionRef expr, + BinaryenExpressionRef ptrExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(ptrExpr); + static_cast(expression)->ptr = (Expression*)ptrExpr; +} BinaryenExpressionRef BinaryenAtomicRMWGetValue(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenAtomicRMWGetValue(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->value; } +void BinaryenAtomicRMWSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(valueExpr); + static_cast(expression)->value = (Expression*)valueExpr; +} // AtomicCmpxchg uint32_t BinaryenAtomicCmpxchgGetBytes(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenAtomicCmpxchgGetBytes(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->bytes; } +void BinaryenAtomicCmpxchgSetBytes(BinaryenExpressionRef expr, uint32_t bytes) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->bytes = bytes; +} uint32_t BinaryenAtomicCmpxchgGetOffset(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenAtomicCmpxchgGetOffset(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->offset; } +void BinaryenAtomicCmpxchgSetOffset(BinaryenExpressionRef expr, + uint32_t offset) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->offset = offset; +} BinaryenExpressionRef BinaryenAtomicCmpxchgGetPtr(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenAtomicCmpxchgGetPtr(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->ptr; } +void BinaryenAtomicCmpxchgSetPtr(BinaryenExpressionRef expr, + BinaryenExpressionRef ptrExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(ptrExpr); + static_cast(expression)->ptr = (Expression*)ptrExpr; +} BinaryenExpressionRef BinaryenAtomicCmpxchgGetExpected(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenAtomicCmpxchgGetExpected(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->expected; } +void BinaryenAtomicCmpxchgSetExpected(BinaryenExpressionRef expr, + BinaryenExpressionRef expectedExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(expectedExpr); + static_cast(expression)->expected = (Expression*)expectedExpr; +} BinaryenExpressionRef BinaryenAtomicCmpxchgGetReplacement(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenAtomicCmpxchgGetReplacement(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->replacement; } +void BinaryenAtomicCmpxchgSetReplacement( + BinaryenExpressionRef expr, BinaryenExpressionRef replacementExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(replacementExpr); + static_cast(expression)->replacement = + (Expression*)replacementExpr; +} // AtomicWait BinaryenExpressionRef BinaryenAtomicWaitGetPtr(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenAtomicWaitGetPtr(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->ptr; } +void BinaryenAtomicWaitSetPtr(BinaryenExpressionRef expr, + BinaryenExpressionRef ptrExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(ptrExpr); + static_cast(expression)->ptr = (Expression*)ptrExpr; +} BinaryenExpressionRef BinaryenAtomicWaitGetExpected(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenAtomicWaitGetExpected(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->expected; } +void BinaryenAtomicWaitSetExpected(BinaryenExpressionRef expr, + BinaryenExpressionRef expectedExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(expectedExpr); + static_cast(expression)->expected = (Expression*)expectedExpr; +} BinaryenExpressionRef BinaryenAtomicWaitGetTimeout(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenAtomicWaitGetTimeout(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->timeout; } +void BinaryenAtomicWaitSetTimeout(BinaryenExpressionRef expr, + BinaryenExpressionRef timeoutExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(timeoutExpr); + static_cast(expression)->timeout = (Expression*)timeoutExpr; +} BinaryenType BinaryenAtomicWaitGetExpectedType(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenAtomicWaitGetExpectedType(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->expectedType.getID(); } +void BinaryenAtomicWaitSetExpectedType(BinaryenExpressionRef expr, + BinaryenType expectedType) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->expectedType = Type(expectedType); +} // AtomicNotify BinaryenExpressionRef BinaryenAtomicNotifyGetPtr(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenAtomicNotifyGetPtr(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->ptr; } +void BinaryenAtomicNotifySetPtr(BinaryenExpressionRef expr, + BinaryenExpressionRef ptrExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(ptrExpr); + static_cast(expression)->ptr = (Expression*)ptrExpr; +} BinaryenExpressionRef BinaryenAtomicNotifyGetNotifyCount(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenAtomicNotifyGetNotifyCount(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->notifyCount; } +void BinaryenAtomicNotifySetNotifyCount(BinaryenExpressionRef expr, + BinaryenExpressionRef notifyCountExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(notifyCountExpr); + static_cast(expression)->notifyCount = + (Expression*)notifyCountExpr; +} // AtomicFence uint8_t BinaryenAtomicFenceGetOrder(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenAtomicFenceGetOrder(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->order; } +void BinaryenAtomicFenceSetOrder(BinaryenExpressionRef expr, uint8_t order) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->order = order; +} // SIMDExtract BinaryenOp BinaryenSIMDExtractGetOp(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSIMDExtractGetOp(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->op; } +void BinaryenSIMDExtractSetOp(BinaryenExpressionRef expr, BinaryenOp op) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->op = SIMDExtractOp(op); +} BinaryenExpressionRef BinaryenSIMDExtractGetVec(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSIMDExtractGetVec(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->vec; } +void BinaryenSIMDExtractSetVec(BinaryenExpressionRef expr, + BinaryenExpressionRef vecExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(vecExpr); + static_cast(expression)->vec = (Expression*)vecExpr; +} uint8_t BinaryenSIMDExtractGetIndex(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSIMDExtractGetIndex(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->index; } +void BinaryenSIMDExtractSetIndex(BinaryenExpressionRef expr, uint8_t index) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->index = index; +} // SIMDReplace BinaryenOp BinaryenSIMDReplaceGetOp(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSIMDReplaceGetOp(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->op; } +void BinaryenSIMDReplaceSetOp(BinaryenExpressionRef expr, BinaryenOp op) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->op = SIMDReplaceOp(op); +} BinaryenExpressionRef BinaryenSIMDReplaceGetVec(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSIMDReplaceGetVec(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->vec; } +void BinaryenSIMDReplaceSetVec(BinaryenExpressionRef expr, + BinaryenExpressionRef vecExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(vecExpr); + static_cast(expression)->vec = (Expression*)vecExpr; +} uint8_t BinaryenSIMDReplaceGetIndex(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSIMDReplaceGetIndex(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->index; } +void BinaryenSIMDReplaceSetIndex(BinaryenExpressionRef expr, uint8_t index) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->index = index; +} BinaryenExpressionRef BinaryenSIMDReplaceGetValue(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSIMDReplaceGetValue(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->value; } +void BinaryenSIMDReplaceSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(valueExpr); + static_cast(expression)->value = (Expression*)valueExpr; +} // SIMDShuffle BinaryenExpressionRef BinaryenSIMDShuffleGetLeft(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSIMDShuffleGetLeft(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->left; } +void BinaryenSIMDShuffleSetLeft(BinaryenExpressionRef expr, + BinaryenExpressionRef leftExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(leftExpr); + static_cast(expression)->left = (Expression*)leftExpr; +} BinaryenExpressionRef BinaryenSIMDShuffleGetRight(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSIMDShuffleGetRight(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->right; } +void BinaryenSIMDShuffleSetRight(BinaryenExpressionRef expr, + BinaryenExpressionRef rightExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(rightExpr); + static_cast(expression)->right = (Expression*)rightExpr; +} void BinaryenSIMDShuffleGetMask(BinaryenExpressionRef expr, uint8_t* mask) { - if (tracing) { - std::cout << " BinaryenSIMDShuffleGetMask(expressions[" - << expressions[expr] << "], " << mask << ");\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); + assert(mask); // nullptr would be wrong memcpy(mask, static_cast(expression)->mask.data(), 16); } +void BinaryenSIMDShuffleSetMask(BinaryenExpressionRef expr, + const uint8_t mask_[16]) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(mask_); // nullptr would be wrong + auto& mask = static_cast(expression)->mask; + memcpy(mask.data(), mask_, 16); +} // SIMDTernary BinaryenOp BinaryenSIMDTernaryGetOp(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSIMDTernaryOp(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->op; } +void BinaryenSIMDTernarySetOp(BinaryenExpressionRef expr, BinaryenOp op) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->op = SIMDTernaryOp(op); +} BinaryenExpressionRef BinaryenSIMDTernaryGetA(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSIMDTernaryGetA(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->a; } +void BinaryenSIMDTernarySetA(BinaryenExpressionRef expr, + BinaryenExpressionRef aExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(aExpr); + static_cast(expression)->a = (Expression*)aExpr; +} BinaryenExpressionRef BinaryenSIMDTernaryGetB(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSIMDTernaryGetB(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->b; } +void BinaryenSIMDTernarySetB(BinaryenExpressionRef expr, + BinaryenExpressionRef bExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(bExpr); + static_cast(expression)->b = (Expression*)bExpr; +} BinaryenExpressionRef BinaryenSIMDTernaryGetC(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSIMDTernaryGetC(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->c; } +void BinaryenSIMDTernarySetC(BinaryenExpressionRef expr, + BinaryenExpressionRef cExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(cExpr); + static_cast(expression)->c = (Expression*)cExpr; +} // SIMDShift BinaryenOp BinaryenSIMDShiftGetOp(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSIMDShiftGetOp(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->op; } +void BinaryenSIMDShiftSetOp(BinaryenExpressionRef expr, BinaryenOp op) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->op = SIMDShiftOp(op); +} BinaryenExpressionRef BinaryenSIMDShiftGetVec(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSIMDShiftGetVec(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->vec; } +void BinaryenSIMDShiftSetVec(BinaryenExpressionRef expr, + BinaryenExpressionRef vecExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(vecExpr); + static_cast(expression)->vec = (Expression*)vecExpr; +} BinaryenExpressionRef BinaryenSIMDShiftGetShift(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSIMDShiftGetShift(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->shift; } +void BinaryenSIMDShiftSetShift(BinaryenExpressionRef expr, + BinaryenExpressionRef shiftExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(shiftExpr); + static_cast(expression)->shift = (Expression*)shiftExpr; +} // SIMDLoad BinaryenOp BinaryenSIMDLoadGetOp(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSIMDLoadGetOp(expressions[" << expressions[expr] - << "])\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->op; } +void BinaryenSIMDLoadSetOp(BinaryenExpressionRef expr, BinaryenOp op) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->op = SIMDLoadOp(op); +} uint32_t BinaryenSIMDLoadGetOffset(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSIMDLoadGetOffset(expressions[" << expressions[expr] - << "])\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->offset; } -uint32_t BinaryenSIMDLoadGetAlign(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSIMDLoadGetAlign(expressions[" << expressions[expr] - << "])\n"; - } - +void BinaryenSIMDLoadSetOffset(BinaryenExpressionRef expr, uint32_t offset) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->offset = offset; +} +uint32_t BinaryenSIMDLoadGetAlign(BinaryenExpressionRef expr) { auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->align; } +void BinaryenSIMDLoadSetAlign(BinaryenExpressionRef expr, uint32_t align) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->align = align; +} BinaryenExpressionRef BinaryenSIMDLoadGetPtr(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenSIMDLoadGetPtr(expressions[" << expressions[expr] - << "])\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->ptr; } +void BinaryenSIMDLoadSetPtr(BinaryenExpressionRef expr, + BinaryenExpressionRef ptrExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(ptrExpr); + static_cast(expression)->ptr = (Expression*)ptrExpr; +} // MemoryInit uint32_t BinaryenMemoryInitGetSegment(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenMemoryInitGetSegment(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->segment; } +void BinaryenMemoryInitSetSegment(BinaryenExpressionRef expr, + uint32_t segment) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->segment = segment; +} BinaryenExpressionRef BinaryenMemoryInitGetDest(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenMemoryInitGetDest(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->dest; } +void BinaryenMemoryInitSetDest(BinaryenExpressionRef expr, + BinaryenExpressionRef destExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(destExpr); + static_cast(expression)->dest = (Expression*)destExpr; +} BinaryenExpressionRef BinaryenMemoryInitGetOffset(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenMemoryInitGetOffset(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->offset; } +void BinaryenMemoryInitSetOffset(BinaryenExpressionRef expr, + BinaryenExpressionRef offsetExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(offsetExpr); + static_cast(expression)->offset = (Expression*)offsetExpr; +} BinaryenExpressionRef BinaryenMemoryInitGetSize(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenMemoryInitGetSize(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->size; } +void BinaryenMemoryInitSetSize(BinaryenExpressionRef expr, + BinaryenExpressionRef sizeExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(sizeExpr); + static_cast(expression)->size = (Expression*)sizeExpr; +} // DataDrop uint32_t BinaryenDataDropGetSegment(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenDataDropGetSegment(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->segment; } +void BinaryenDataDropSetSegment(BinaryenExpressionRef expr, uint32_t segment) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->segment = segment; +} // MemoryCopy BinaryenExpressionRef BinaryenMemoryCopyGetDest(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenMemoryCopyGetDest(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->dest; } +void BinaryenMemoryCopySetDest(BinaryenExpressionRef expr, + BinaryenExpressionRef destExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(destExpr); + static_cast(expression)->dest = (Expression*)destExpr; +} BinaryenExpressionRef BinaryenMemoryCopyGetSource(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenMemoryCopyGetSource(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->source; } +void BinaryenMemoryCopySetSource(BinaryenExpressionRef expr, + BinaryenExpressionRef sourceExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(sourceExpr); + static_cast(expression)->source = (Expression*)sourceExpr; +} BinaryenExpressionRef BinaryenMemoryCopyGetSize(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenMemoryCopyGetSize(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->size; } +void BinaryenMemoryCopySetSize(BinaryenExpressionRef expr, + BinaryenExpressionRef sizeExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(sizeExpr); + static_cast(expression)->size = (Expression*)sizeExpr; +} // MemoryFill BinaryenExpressionRef BinaryenMemoryFillGetDest(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenMemoryFillGetDest(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->dest; } +void BinaryenMemoryFillSetDest(BinaryenExpressionRef expr, + BinaryenExpressionRef destExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(destExpr); + static_cast(expression)->dest = (Expression*)destExpr; +} BinaryenExpressionRef BinaryenMemoryFillGetValue(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenMemoryFillGetValue(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->value; } +void BinaryenMemoryFillSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(valueExpr); + static_cast(expression)->value = (Expression*)valueExpr; +} BinaryenExpressionRef BinaryenMemoryFillGetSize(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenMemoryFillGetSize(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->size; } -// Push -BinaryenExpressionRef BinaryenPushGetValue(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenPushGetValue(expressions[" << expressions[expr] - << "]);\n"; - } - +void BinaryenMemoryFillSetSize(BinaryenExpressionRef expr, + BinaryenExpressionRef sizeExpr) { auto* expression = (Expression*)expr; - assert(expression->is()); - return static_cast(expression)->value; + assert(expression->is()); + assert(sizeExpr); + static_cast(expression)->size = (Expression*)sizeExpr; } // RefIsNull BinaryenExpressionRef BinaryenRefIsNullGetValue(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenRefIsNullGetValue(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->value; } +void BinaryenRefIsNullSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(valueExpr); + static_cast(expression)->value = (Expression*)valueExpr; +} // RefFunc const char* BinaryenRefFuncGetFunc(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenRefFuncGetFunc(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->func.c_str(); } +void BinaryenRefFuncSetFunc(BinaryenExpressionRef expr, const char* funcName) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->func = funcName; +} +// RefEq +BinaryenExpressionRef BinaryenRefEqGetLeft(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + return static_cast(expression)->left; +} +void BinaryenRefEqSetLeft(BinaryenExpressionRef expr, + BinaryenExpressionRef left) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->left = (Expression*)left; +} +BinaryenExpressionRef BinaryenRefEqGetRight(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + return static_cast(expression)->right; +} +void BinaryenRefEqSetRight(BinaryenExpressionRef expr, + BinaryenExpressionRef right) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->right = (Expression*)right; +} // Try BinaryenExpressionRef BinaryenTryGetBody(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenTryGetBody(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->body; } +void BinaryenTrySetBody(BinaryenExpressionRef expr, + BinaryenExpressionRef bodyExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(bodyExpr); + static_cast(expression)->body = (Expression*)bodyExpr; +} BinaryenExpressionRef BinaryenTryGetCatchBody(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenTryGetCatchBody(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->catchBody; } +void BinaryenTrySetCatchBody(BinaryenExpressionRef expr, + BinaryenExpressionRef catchBodyExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(catchBodyExpr); + static_cast(expression)->catchBody = (Expression*)catchBodyExpr; +} // Throw const char* BinaryenThrowGetEvent(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenThrowGetEvent(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->event.c_str(); } -BinaryenExpressionRef BinaryenThrowGetOperand(BinaryenExpressionRef expr, - BinaryenIndex index) { - if (tracing) { - std::cout << " BinaryenThrowGetOperand(expressions[" << expressions[expr] - << "], " << index << ");\n"; - } - +void BinaryenThrowSetEvent(BinaryenExpressionRef expr, const char* eventName) { auto* expression = (Expression*)expr; assert(expression->is()); - assert(index < static_cast(expression)->operands.size()); - return static_cast(expression)->operands[index]; + static_cast(expression)->event = eventName; } BinaryenIndex BinaryenThrowGetNumOperands(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenThrowGetNumOperands(expressions[" - << expressions[expr] << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->operands.size(); } +BinaryenExpressionRef BinaryenThrowGetOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(index < static_cast(expression)->operands.size()); + return static_cast(expression)->operands[index]; +} +void BinaryenThrowSetOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(index < static_cast(expression)->operands.size()); + assert(operandExpr); + static_cast(expression)->operands[index] = (Expression*)operandExpr; +} +BinaryenIndex BinaryenThrowAppendOperand(BinaryenExpressionRef expr, + BinaryenExpressionRef operandExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(operandExpr); + auto& list = static_cast(expression)->operands; + auto index = list.size(); + list.push_back((Expression*)operandExpr); + return index; +} +void BinaryenThrowInsertOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(operandExpr); + static_cast(expression) + ->operands.insertAt(index, (Expression*)operandExpr); +} +BinaryenExpressionRef BinaryenThrowRemoveOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index) { + auto* expression = (Expression*)expr; + assert(expression->is()); + return static_cast(expression)->operands.removeAt(index); +} // Rethrow BinaryenExpressionRef BinaryenRethrowGetExnref(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenRethrowGetExnref(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->exnref; } +void BinaryenRethrowSetExnref(BinaryenExpressionRef expr, + BinaryenExpressionRef exnrefExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(exnrefExpr); + static_cast(expression)->exnref = (Expression*)exnrefExpr; +} // BrOnExn const char* BinaryenBrOnExnGetEvent(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenBrOnExnGetEvent(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->event.c_str(); } +void BinaryenBrOnExnSetEvent(BinaryenExpressionRef expr, + const char* eventName) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->event = eventName; +} const char* BinaryenBrOnExnGetName(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenBrOnExnGetName(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->name.c_str(); } +void BinaryenBrOnExnSetName(BinaryenExpressionRef expr, const char* name) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->name = name; +} BinaryenExpressionRef BinaryenBrOnExnGetExnref(BinaryenExpressionRef expr) { - if (tracing) { - std::cout << " BinaryenBrOnExnGetExnref(expressions[" << expressions[expr] - << "]);\n"; - } - auto* expression = (Expression*)expr; assert(expression->is()); return static_cast(expression)->exnref; } +void BinaryenBrOnExnSetExnref(BinaryenExpressionRef expr, + BinaryenExpressionRef exnrefExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(exnrefExpr); + static_cast(expression)->exnref = (Expression*)exnrefExpr; +} +// TupleMake +BinaryenIndex BinaryenTupleMakeGetNumOperands(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + return static_cast(expression)->operands.size(); +} +BinaryenExpressionRef BinaryenTupleMakeGetOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index) { + auto* expression = (Expression*)expr; + assert(expression->is()); + return static_cast(expression)->operands[index]; +} +void BinaryenTupleMakeSetOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(index < static_cast(expression)->operands.size()); + assert(operandExpr); + static_cast(expression)->operands[index] = + (Expression*)operandExpr; +} +BinaryenIndex +BinaryenTupleMakeAppendOperand(BinaryenExpressionRef expr, + BinaryenExpressionRef operandExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(operandExpr); + auto& list = static_cast(expression)->operands; + auto index = list.size(); + list.push_back((Expression*)operandExpr); + return index; +} +void BinaryenTupleMakeInsertOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(operandExpr); + static_cast(expression) + ->operands.insertAt(index, (Expression*)operandExpr); +} +BinaryenExpressionRef +BinaryenTupleMakeRemoveOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index) { + auto* expression = (Expression*)expr; + assert(expression->is()); + return static_cast(expression)->operands.removeAt(index); +} +// TupleExtract +BinaryenExpressionRef BinaryenTupleExtractGetTuple(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + return static_cast(expression)->tuple; +} +void BinaryenTupleExtractSetTuple(BinaryenExpressionRef expr, + BinaryenExpressionRef tupleExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(tupleExpr); + static_cast(expression)->tuple = (Expression*)tupleExpr; +} +BinaryenIndex BinaryenTupleExtractGetIndex(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + return static_cast(expression)->index; +} +void BinaryenTupleExtractSetIndex(BinaryenExpressionRef expr, + BinaryenIndex index) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->index = index; +} +// I31New +BinaryenExpressionRef BinaryenI31NewGetValue(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + return static_cast(expression)->value; +} +void BinaryenI31NewSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(valueExpr); + static_cast(expression)->value = (Expression*)valueExpr; +} +// I31Get +BinaryenExpressionRef BinaryenI31GetGetI31(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + return static_cast(expression)->i31; +} +void BinaryenI31GetSetI31(BinaryenExpressionRef expr, + BinaryenExpressionRef i31Expr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + assert(i31Expr); + static_cast(expression)->i31 = (Expression*)i31Expr; +} +int BinaryenI31GetIsSigned(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is()); + return static_cast(expression)->signed_; +} +void BinaryenI31GetSetSigned(BinaryenExpressionRef expr, int signed_) { + auto* expression = (Expression*)expr; + assert(expression->is()); + static_cast(expression)->signed_ = signed_ != 0; +} // Functions @@ -3147,33 +2990,8 @@ BinaryenType* varTypes, BinaryenIndex numVarTypes, BinaryenExpressionRef body) { - auto* wasm = (Module*)module; auto* ret = new Function; - - if (tracing) { - std::cout << " {\n"; - std::cout << " BinaryenType varTypes[] = { "; - for (BinaryenIndex i = 0; i < numVarTypes; i++) { - if (i > 0) { - std::cout << ", "; - } - std::cout << varTypes[i]; - } - if (numVarTypes == 0) { - // ensure the array is not empty, otherwise a compiler error on VS - std::cout << "0"; - } - std::cout << " };\n"; - auto id = functions.size(); - functions[ret] = id; - std::cout << " functions[" << id - << "] = BinaryenAddFunction(the_module, \"" << name << "\", " - << params << ", " << results << ", varTypes, " << numVarTypes - << ", expressions[" << expressions[body] << "]);\n"; - std::cout << " }\n"; - } - - ret->name = name; + ret->setExplicitName(name); ret->sig = Signature(Type(params), Type(results)); for (BinaryenIndex i = 0; i < numVarTypes; i++) { ret->vars.push_back(Type(varTypes[i])); @@ -3184,47 +3002,28 @@ // point where they all access and modify the module. { std::lock_guard lock(BinaryenFunctionMutex); - wasm->addFunction(ret); + ((Module*)module)->addFunction(ret); } return ret; } BinaryenFunctionRef BinaryenGetFunction(BinaryenModuleRef module, const char* name) { - if (tracing) { - std::cout << " BinaryenGetFunction(the_module, \"" << name << "\");\n"; - } - - auto* wasm = (Module*)module; - return wasm->getFunction(name); + return ((Module*)module)->getFunctionOrNull(name); } void BinaryenRemoveFunction(BinaryenModuleRef module, const char* name) { - if (tracing) { - std::cout << " BinaryenRemoveFunction(the_module, \"" << name << "\");\n"; - } - - auto* wasm = (Module*)module; - wasm->removeFunction(name); + ((Module*)module)->removeFunction(name); } -uint32_t BinaryenGetNumFunctions(BinaryenModuleRef module) { - if (tracing) { - std::cout << " BinaryenGetNumFunctions(the_module);\n"; - } - - auto* wasm = (Module*)module; - return wasm->functions.size(); +BinaryenIndex BinaryenGetNumFunctions(BinaryenModuleRef module) { + return ((Module*)module)->functions.size(); } BinaryenFunctionRef BinaryenGetFunctionByIndex(BinaryenModuleRef module, - BinaryenIndex id) { - if (tracing) { - std::cout << " BinaryenGetFunctionByIndex(the_module, " << id << ");\n"; - } - - auto* wasm = (Module*)module; - if (wasm->functions.size() <= id) { - Fatal() << "invalid function id."; + BinaryenIndex index) { + const auto& functions = ((Module*)module)->functions; + if (functions.size() <= index) { + Fatal() << "invalid function index."; } - return wasm->functions[id].get(); + return functions[index].get(); } // Globals @@ -3234,40 +3033,31 @@ BinaryenType type, int8_t mutable_, BinaryenExpressionRef init) { - auto* wasm = (Module*)module; auto* ret = new Global(); - - if (tracing) { - auto id = globals.size(); - globals[ret] = id; - std::cout << " globals[" << id << "] = BinaryenAddGlobal(the_module, \"" - << name << "\", " << type << ", " << int(mutable_) - << ", expressions[" << expressions[init] << "]);\n"; - } - - ret->name = name; + ret->setExplicitName(name); ret->type = Type(type); ret->mutable_ = !!mutable_; ret->init = (Expression*)init; - wasm->addGlobal(ret); + ((Module*)module)->addGlobal(ret); return ret; } BinaryenGlobalRef BinaryenGetGlobal(BinaryenModuleRef module, const char* name) { - if (tracing) { - std::cout << " BinaryenGetGlobal(the_module, \"" << name << "\");\n"; - } - - auto* wasm = (Module*)module; - return wasm->getGlobal(name); + return ((Module*)module)->getGlobalOrNull(name); } void BinaryenRemoveGlobal(BinaryenModuleRef module, const char* name) { - if (tracing) { - std::cout << " BinaryenRemoveGlobal(the_module, \"" << name << "\");\n"; + ((Module*)module)->removeGlobal(name); +} +BinaryenIndex BinaryenGetNumGlobals(BinaryenModuleRef module) { + return ((Module*)module)->globals.size(); +} +BinaryenGlobalRef BinaryenGetGlobalByIndex(BinaryenModuleRef module, + BinaryenIndex index) { + const auto& globals = ((Module*)module)->globals; + if (globals.size() <= index) { + Fatal() << "invalid global index."; } - - auto* wasm = (Module*)module; - wasm->removeGlobal(name); + return globals[index].get(); } // Events @@ -3277,35 +3067,19 @@ uint32_t attribute, BinaryenType params, BinaryenType results) { - if (tracing) { - std::cout << " BinaryenAddEvent(the_module, \"" << name << "\", " - << attribute << ", " << params << ", " << results << ");\n"; - } - - auto* wasm = (Module*)module; auto* ret = new Event(); - ret->name = name; + ret->setExplicitName(name); ret->attribute = attribute; ret->sig = Signature(Type(params), Type(results)); - wasm->addEvent(ret); + ((Module*)module)->addEvent(ret); return ret; } BinaryenEventRef BinaryenGetEvent(BinaryenModuleRef module, const char* name) { - if (tracing) { - std::cout << " BinaryenGetEvent(the_module, \"" << name << "\");\n"; - } - - auto* wasm = (Module*)module; - return wasm->getEvent(name); + return ((Module*)module)->getEventOrNull(name); } void BinaryenRemoveEvent(BinaryenModuleRef module, const char* name) { - if (tracing) { - std::cout << " BinaryenRemoveEvent(the_module, \"" << name << "\");\n"; - } - - auto* wasm = (Module*)module; - wasm->removeEvent(name); + ((Module*)module)->removeEvent(name); } // Imports @@ -3316,52 +3090,30 @@ const char* externalBaseName, BinaryenType params, BinaryenType results) { - auto* wasm = (Module*)module; auto* ret = new Function(); - - if (tracing) { - std::cout << " BinaryenAddFunctionImport(the_module, \"" << internalName - << "\", \"" << externalModuleName << "\", \"" << externalBaseName - << "\", " << params << ", " << results << ");\n"; - } - ret->name = internalName; ret->module = externalModuleName; ret->base = externalBaseName; ret->sig = Signature(Type(params), Type(results)); - wasm->addFunction(ret); + ((Module*)module)->addFunction(ret); } void BinaryenAddTableImport(BinaryenModuleRef module, const char* internalName, const char* externalModuleName, const char* externalBaseName) { - auto* wasm = (Module*)module; - - if (tracing) { - std::cout << " BinaryenAddTableImport(the_module, \"" << internalName - << "\", \"" << externalModuleName << "\", \"" << externalBaseName - << "\");\n"; - } - - wasm->table.module = externalModuleName; - wasm->table.base = externalBaseName; + auto& table = ((Module*)module)->table; + table.module = externalModuleName; + table.base = externalBaseName; } void BinaryenAddMemoryImport(BinaryenModuleRef module, const char* internalName, const char* externalModuleName, const char* externalBaseName, uint8_t shared) { - auto* wasm = (Module*)module; - - if (tracing) { - std::cout << " BinaryenAddMemoryImport(the_module, \"" << internalName - << "\", \"" << externalModuleName << "\", \"" << externalBaseName - << "\", " << int(shared) << ");\n"; - } - - wasm->memory.module = externalModuleName; - wasm->memory.base = externalBaseName; - wasm->memory.shared = shared; + auto& memory = ((Module*)module)->memory; + memory.module = externalModuleName; + memory.base = externalBaseName; + memory.shared = shared; } void BinaryenAddGlobalImport(BinaryenModuleRef module, const char* internalName, @@ -3369,21 +3121,13 @@ const char* externalBaseName, BinaryenType globalType, int mutable_) { - auto* wasm = (Module*)module; auto* ret = new Global(); - - if (tracing) { - std::cout << " BinaryenAddGlobalImport(the_module, \"" << internalName - << "\", \"" << externalModuleName << "\", \"" << externalBaseName - << "\", " << globalType << ", " << mutable_ << ");\n"; - } - ret->name = internalName; ret->module = externalModuleName; ret->base = externalBaseName; ret->type = Type(globalType); ret->mutable_ = mutable_ != 0; - wasm->addGlobal(ret); + ((Module*)module)->addGlobal(ret); } void BinaryenAddEventImport(BinaryenModuleRef module, const char* internalName, @@ -3392,21 +3136,12 @@ uint32_t attribute, BinaryenType params, BinaryenType results) { - auto* wasm = (Module*)module; auto* ret = new Event(); - - if (tracing) { - std::cout << " BinaryenAddEventImport(the_module, \"" << internalName - << "\", \"" << externalModuleName << "\", \"" << externalBaseName - << "\", " << attribute << ", " << params << ", " << results - << ");\n"; - } - ret->name = internalName; ret->module = externalModuleName; ret->base = externalBaseName; ret->sig = Signature(Type(params), Type(results)); - wasm->addEvent(ret); + ((Module*)module)->addEvent(ret); } // Exports @@ -3419,111 +3154,70 @@ BinaryenExportRef BinaryenAddFunctionExport(BinaryenModuleRef module, const char* internalName, const char* externalName) { - auto* wasm = (Module*)module; auto* ret = new Export(); - - if (tracing) { - auto id = exports.size(); - exports[ret] = id; - std::cout << " exports[" << id - << "] = BinaryenAddFunctionExport(the_module, \"" << internalName - << "\", \"" << externalName << "\");\n"; - } - ret->value = internalName; ret->name = externalName; ret->kind = ExternalKind::Function; - wasm->addExport(ret); + ((Module*)module)->addExport(ret); return ret; } BinaryenExportRef BinaryenAddTableExport(BinaryenModuleRef module, const char* internalName, const char* externalName) { - auto* wasm = (Module*)module; auto* ret = new Export(); - - if (tracing) { - auto id = exports.size(); - exports[ret] = id; - std::cout << " exports[" << id - << "] = BinaryenAddTableExport(the_module, \"" << internalName - << "\", \"" << externalName << "\");\n"; - } - ret->value = internalName; ret->name = externalName; ret->kind = ExternalKind::Table; - wasm->addExport(ret); + ((Module*)module)->addExport(ret); return ret; } BinaryenExportRef BinaryenAddMemoryExport(BinaryenModuleRef module, const char* internalName, const char* externalName) { - auto* wasm = (Module*)module; auto* ret = new Export(); - - if (tracing) { - auto id = exports.size(); - exports[ret] = id; - std::cout << " exports[" << id - << "] = BinaryenAddMemoryExport(the_module, \"" << internalName - << "\", \"" << externalName << "\");\n"; - } - ret->value = internalName; ret->name = externalName; ret->kind = ExternalKind::Memory; - wasm->addExport(ret); + ((Module*)module)->addExport(ret); return ret; } BinaryenExportRef BinaryenAddGlobalExport(BinaryenModuleRef module, const char* internalName, const char* externalName) { - auto* wasm = (Module*)module; auto* ret = new Export(); - - if (tracing) { - auto id = exports.size(); - exports[ret] = id; - std::cout << " exports[" << id - << "] = BinaryenAddGlobalExport(the_module, \"" << internalName - << "\", \"" << externalName << "\");\n"; - } - ret->value = internalName; ret->name = externalName; ret->kind = ExternalKind::Global; - wasm->addExport(ret); + ((Module*)module)->addExport(ret); return ret; } BinaryenExportRef BinaryenAddEventExport(BinaryenModuleRef module, const char* internalName, const char* externalName) { - auto* wasm = (Module*)module; auto* ret = new Export(); - - if (tracing) { - auto id = exports.size(); - exports[ret] = id; - std::cout << " exports[" << id - << "] = BinaryenAddEventExport(the_module, \"" << internalName - << "\", \"" << externalName << "\");\n"; - } - ret->value = internalName; ret->name = externalName; ret->kind = ExternalKind::Event; - wasm->addExport(ret); + ((Module*)module)->addExport(ret); return ret; } +BinaryenExportRef BinaryenGetExport(BinaryenModuleRef module, + const char* externalName) { + return ((Module*)module)->getExportOrNull(externalName); +} void BinaryenRemoveExport(BinaryenModuleRef module, const char* externalName) { - if (tracing) { - std::cout << " BinaryenRemoveExport(the_module, \"" << externalName - << "\");\n"; + ((Module*)module)->removeExport(externalName); +} +BinaryenIndex BinaryenGetNumExports(BinaryenModuleRef module) { + return ((Module*)module)->exports.size(); +} +BinaryenExportRef BinaryenGetExportByIndex(BinaryenModuleRef module, + BinaryenIndex index) { + const auto& exports = ((Module*)module)->exports; + if (exports.size() <= index) { + Fatal() << "invalid export index."; } - - auto* wasm = (Module*)module; - wasm->removeExport(externalName); + return exports[index].get(); } // Function table. One per module @@ -3534,90 +3228,49 @@ const char** funcNames, BinaryenIndex numFuncNames, BinaryenExpressionRef offset) { - if (tracing) { - std::cout << " {\n"; - std::cout << " const char* funcNames[] = { "; - for (BinaryenIndex i = 0; i < numFuncNames; i++) { - if (i > 0) { - std::cout << ", "; - } - std::cout << "\"" << funcNames[i] << "\""; - } - std::cout << " };\n"; - std::cout << " BinaryenSetFunctionTable(the_module, " << initial << ", " - << maximum << ", funcNames, " << numFuncNames << ", expressions[" - << expressions[offset] << "]);\n"; - std::cout << " }\n"; - } - - auto* wasm = (Module*)module; Table::Segment segment((Expression*)offset); for (BinaryenIndex i = 0; i < numFuncNames; i++) { segment.data.push_back(funcNames[i]); } - wasm->table.initial = initial; - wasm->table.max = maximum; - wasm->table.exists = true; - wasm->table.segments.push_back(segment); + auto& table = ((Module*)module)->table; + table.initial = initial; + table.max = maximum; + table.exists = true; + table.segments.push_back(segment); } int BinaryenIsFunctionTableImported(BinaryenModuleRef module) { - if (tracing) { - std::cout << " BinaryenIsFunctionTableImported(the_module);\n"; - } - - auto* wasm = (Module*)module; - return wasm->table.imported(); + return ((Module*)module)->table.imported(); } BinaryenIndex BinaryenGetNumFunctionTableSegments(BinaryenModuleRef module) { - if (tracing) { - std::cout << " BinaryenGetNumFunctionTableSegments(the_module);\n"; - } - - auto* wasm = (Module*)module; - return wasm->table.segments.size(); + return ((Module*)module)->table.segments.size(); } BinaryenExpressionRef BinaryenGetFunctionTableSegmentOffset(BinaryenModuleRef module, BinaryenIndex segmentId) { - if (tracing) { - std::cout << " BinaryenGetFunctionTableSegmentOffset(the_module, " - << segmentId << ");\n"; - } - - auto* wasm = (Module*)module; - if (wasm->table.segments.size() <= segmentId) { + const auto& segments = ((Module*)module)->table.segments; + if (segments.size() <= segmentId) { Fatal() << "invalid function table segment id."; } - return wasm->table.segments[segmentId].offset; + return segments[segmentId].offset; } BinaryenIndex BinaryenGetFunctionTableSegmentLength(BinaryenModuleRef module, BinaryenIndex segmentId) { - if (tracing) { - std::cout << " BinaryenGetFunctionTableSegmentLength(the_module, " - << segmentId << ");\n"; - } - - auto* wasm = (Module*)module; - if (wasm->table.segments.size() <= segmentId) { + const auto& segments = ((Module*)module)->table.segments; + if (segments.size() <= segmentId) { Fatal() << "invalid function table segment id."; } - return wasm->table.segments[segmentId].data.size(); + return segments[segmentId].data.size(); } const char* BinaryenGetFunctionTableSegmentData(BinaryenModuleRef module, BinaryenIndex segmentId, BinaryenIndex dataId) { - if (tracing) { - std::cout << " BinaryenGetFunctionTableSegmentData(the_module, " - << segmentId << ", " << dataId << ");\n"; - } - - auto* wasm = (Module*)module; - if (wasm->table.segments.size() <= segmentId || - wasm->table.segments[segmentId].data.size() <= dataId) { + const auto& segments = ((Module*)module)->table.segments; + if (segments.size() <= segmentId || + segments[segmentId].data.size() <= dataId) { Fatal() << "invalid function table segment or data id."; } - return wasm->table.segments[segmentId].data[dataId].c_str(); + return segments[segmentId].data[dataId].c_str(); } // Memory. One per module @@ -3632,77 +3285,9 @@ BinaryenIndex* segmentSizes, BinaryenIndex numSegments, uint8_t shared) { - if (tracing) { - std::cout << " {\n"; - for (BinaryenIndex i = 0; i < numSegments; i++) { - std::cout << " const char segment" << i << "[] = { "; - for (BinaryenIndex j = 0; j < segmentSizes[i]; j++) { - if (j > 0) { - std::cout << ", "; - } - std::cout << int(segments[i][j]); - } - std::cout << " };\n"; - } - std::cout << " const char* segments[] = { "; - for (BinaryenIndex i = 0; i < numSegments; i++) { - if (i > 0) { - std::cout << ", "; - } - std::cout << "segment" << i; - } - if (numSegments == 0) { - // ensure the array is not empty, otherwise a compiler error on VS - std::cout << "0"; - } - std::cout << " };\n"; - std::cout << " int8_t segmentPassive[] = { "; - for (BinaryenIndex i = 0; i < numSegments; i++) { - if (i > 0) { - std::cout << ", "; - } - std::cout << int(segmentPassive[i]); - } - if (numSegments == 0) { - // ensure the array is not empty, otherwise a compiler error on VS - std::cout << "0"; - } - std::cout << " };\n"; - std::cout << " BinaryenExpressionRef segmentOffsets[] = { "; - for (BinaryenIndex i = 0; i < numSegments; i++) { - if (i > 0) { - std::cout << ", "; - } - std::cout << "expressions[" << expressions[segmentOffsets[i]] << "]"; - } - if (numSegments == 0) { - // ensure the array is not empty, otherwise a compiler error on VS - std::cout << "0"; - } - std::cout << " };\n"; - std::cout << " BinaryenIndex segmentSizes[] = { "; - for (BinaryenIndex i = 0; i < numSegments; i++) { - if (i > 0) { - std::cout << ", "; - } - std::cout << segmentSizes[i]; - } - if (numSegments == 0) { - // ensure the array is not empty, otherwise a compiler error on VS - std::cout << "0"; - } - std::cout << " };\n"; - std::cout << " BinaryenSetMemory(the_module, " << initial << ", " - << maximum << ", "; - traceNameOrNULL(exportName); - std::cout << ", segments, segmentPassive, segmentOffsets, segmentSizes, " - << numSegments << ", " << int(shared) << ");\n"; - std::cout << " }\n"; - } - auto* wasm = (Module*)module; wasm->memory.initial = initial; - wasm->memory.max = maximum; + wasm->memory.max = int32_t(maximum); // Make sure -1 extends. wasm->memory.exists = true; wasm->memory.shared = shared; if (exportName) { @@ -3713,7 +3298,8 @@ wasm->addExport(memoryExport.release()); } for (BinaryenIndex i = 0; i < numSegments; i++) { - wasm->memory.segments.emplace_back(segmentPassive[i], + wasm->memory.segments.emplace_back(Name(), + segmentPassive[i], (Expression*)segmentOffsets[i], segments[i], segmentSizes[i]); @@ -3723,20 +3309,10 @@ // Memory segments uint32_t BinaryenGetNumMemorySegments(BinaryenModuleRef module) { - if (tracing) { - std::cout << " BinaryenGetNumMemorySegments(the_module);\n"; - } - - auto* wasm = (Module*)module; - return wasm->memory.segments.size(); + return ((Module*)module)->memory.segments.size(); } uint32_t BinaryenGetMemorySegmentByteOffset(BinaryenModuleRef module, BinaryenIndex id) { - if (tracing) { - std::cout << " BinaryenGetMemorySegmentByteOffset(the_module, " << id - << ");\n"; - } - auto* wasm = (Module*)module; if (wasm->memory.segments.size() <= id) { Fatal() << "invalid segment id."; @@ -3751,7 +3327,7 @@ return false; }; - const Memory::Segment& segment = wasm->memory.segments[id]; + const auto& segment = wasm->memory.segments[id]; int64_t ret; if (globalOffset(segment.offset, ret)) { @@ -3769,78 +3345,46 @@ } size_t BinaryenGetMemorySegmentByteLength(BinaryenModuleRef module, BinaryenIndex id) { - if (tracing) { - std::cout << " BinaryenGetMemorySegmentByteLength(the_module, " << id - << ");\n"; - } - - auto* wasm = (Module*)module; - if (wasm->memory.segments.size() <= id) { + const auto& segments = ((Module*)module)->memory.segments; + if (segments.size() <= id) { Fatal() << "invalid segment id."; } - const Memory::Segment& segment = wasm->memory.segments[id]; - return segment.data.size(); + return segments[id].data.size(); } int BinaryenGetMemorySegmentPassive(BinaryenModuleRef module, BinaryenIndex id) { - if (tracing) { - std::cout << " BinaryenGetMemorySegmentPassive(the_module, " << id - << ");\n"; - } - - auto* wasm = (Module*)module; - if (wasm->memory.segments.size() <= id) { + const auto& segments = ((Module*)module)->memory.segments; + if (segments.size() <= id) { Fatal() << "invalid segment id."; } - const Memory::Segment& segment = wasm->memory.segments[id]; - return segment.isPassive; + return segments[id].isPassive; } void BinaryenCopyMemorySegmentData(BinaryenModuleRef module, BinaryenIndex id, char* buffer) { - if (tracing) { - std::cout << " BinaryenCopyMemorySegmentData(the_module, " << id << ", " - << static_cast(buffer) << ");\n"; - } - - auto* wasm = (Module*)module; - if (wasm->memory.segments.size() <= id) { + const auto& segments = ((Module*)module)->memory.segments; + if (segments.size() <= id) { Fatal() << "invalid segment id."; } - const Memory::Segment& segment = wasm->memory.segments[id]; + const auto& segment = segments[id]; std::copy(segment.data.cbegin(), segment.data.cend(), buffer); } // Start function. One per module void BinaryenSetStart(BinaryenModuleRef module, BinaryenFunctionRef start) { - if (tracing) { - std::cout << " BinaryenSetStart(the_module, functions[" << functions[start] - << "]);\n"; - } - - auto* wasm = (Module*)module; - wasm->addStart(((Function*)start)->name); + ((Module*)module)->addStart(((Function*)start)->name); } // Features BinaryenFeatures BinaryenModuleGetFeatures(BinaryenModuleRef module) { - if (tracing) { - std::cout << " BinaryenModuleGetFeatures(the_module);\n"; - } - auto* wasm = static_cast(module); - return wasm->features.features; + return ((Module*)module)->features.features; } void BinaryenModuleSetFeatures(BinaryenModuleRef module, BinaryenFeatures features) { - if (tracing) { - std::cout << " BinaryenModuleSetFeatures(the_module, " << features - << ");\n"; - } - auto* wasm = static_cast(module); - wasm->features.features = features; + ((Module*)module)->features.features = features; } // @@ -3848,15 +3392,11 @@ // BinaryenModuleRef BinaryenModuleParse(const char* text) { - if (tracing) { - std::cout << " // BinaryenModuleRead\n"; - } - auto* wasm = new Module; try { SExpressionParser parser(const_cast(text)); Element& root = *parser.root; - SExpressionWasmBuilder builder(*wasm, *root[0]); + SExpressionWasmBuilder builder(*wasm, *root[0], IRProfile::Normal); } catch (ParseException& p) { p.dump(std::cerr); Fatal() << "error in parsing wasm text"; @@ -3865,22 +3405,14 @@ } void BinaryenModulePrint(BinaryenModuleRef module) { - if (tracing) { - std::cout << " BinaryenModulePrint(the_module);\n"; - } - - WasmPrinter::printModule((Module*)module); + std::cout << *(Module*)module; } void BinaryenModulePrintAsmjs(BinaryenModuleRef module) { - if (tracing) { - std::cout << " BinaryenModulePrintAsmjs(the_module);\n"; - } - - Module* wasm = (Module*)module; + auto* wasm = (Module*)module; Wasm2JSBuilder::Flags flags; Wasm2JSBuilder wasm2js(flags, globalPassOptions); - Ref asmjs = wasm2js.processWasm(wasm); + auto asmjs = wasm2js.processWasm(wasm); JSPrinter jser(true, true, asmjs); Output out("", Flags::Text); // stdout Wasm2JSGlue glue(*wasm, out, flags, "asmFunc"); @@ -3891,99 +3423,47 @@ } int BinaryenModuleValidate(BinaryenModuleRef module) { - if (tracing) { - std::cout << " BinaryenModuleValidate(the_module);\n"; - } - - Module* wasm = (Module*)module; - return WasmValidator().validate(*wasm) ? 1 : 0; + return WasmValidator().validate(*(Module*)module) ? 1 : 0; } void BinaryenModuleOptimize(BinaryenModuleRef module) { - if (tracing) { - std::cout << " BinaryenModuleOptimize(the_module);\n"; - } - - Module* wasm = (Module*)module; - PassRunner passRunner(wasm); + PassRunner passRunner((Module*)module); passRunner.options = globalPassOptions; passRunner.addDefaultOptimizationPasses(); passRunner.run(); } -int BinaryenGetOptimizeLevel(void) { - if (tracing) { - std::cout << " BinaryenGetOptimizeLevel();\n"; - } - - return globalPassOptions.optimizeLevel; -} +int BinaryenGetOptimizeLevel(void) { return globalPassOptions.optimizeLevel; } void BinaryenSetOptimizeLevel(int level) { - if (tracing) { - std::cout << " BinaryenSetOptimizeLevel(" << level << ");\n"; - } - globalPassOptions.optimizeLevel = level; } -int BinaryenGetShrinkLevel(void) { - if (tracing) { - std::cout << " BinaryenGetShrinkLevel();\n"; - } - - return globalPassOptions.shrinkLevel; -} +int BinaryenGetShrinkLevel(void) { return globalPassOptions.shrinkLevel; } void BinaryenSetShrinkLevel(int level) { - if (tracing) { - std::cout << " BinaryenSetShrinkLevel(" << level << ");\n"; - } - globalPassOptions.shrinkLevel = level; } -int BinaryenGetDebugInfo(void) { - if (tracing) { - std::cout << " BinaryenGetDebugInfo();\n"; - } - - return globalPassOptions.debugInfo; -} - -void BinaryenSetDebugInfo(int on) { - if (tracing) { - std::cout << " BinaryenSetDebugInfo(" << on << ");\n"; - } +int BinaryenGetDebugInfo(void) { return globalPassOptions.debugInfo; } - globalPassOptions.debugInfo = on != 0; -} +void BinaryenSetDebugInfo(int on) { globalPassOptions.debugInfo = on != 0; } int BinaryenGetLowMemoryUnused(void) { - if (tracing) { - std::cout << " BinaryenGetLowMemoryUnused();\n"; - } - return globalPassOptions.lowMemoryUnused; } void BinaryenSetLowMemoryUnused(int on) { - if (tracing) { - std::cout << " BinaryenSetLowMemoryUnused(" << on << ");\n"; - } - globalPassOptions.lowMemoryUnused = on != 0; } -const char* BinaryenGetPassArgument(const char* key) { - if (tracing) { - std::cout << " BinaryenGetPassArgument("; - traceNameOrNULL(key); - std::cout << ");\n"; - } +int BinaryenGetFastMath(void) { return globalPassOptions.fastMath; } + +void BinaryenSetFastMath(int value) { globalPassOptions.fastMath = value != 0; } +const char* BinaryenGetPassArgument(const char* key) { assert(key); - auto& args = globalPassOptions.arguments; + const auto& args = globalPassOptions.arguments; auto it = args.find(key); if (it == args.end()) { return nullptr; @@ -3993,14 +3473,6 @@ } void BinaryenSetPassArgument(const char* key, const char* value) { - if (tracing) { - std::cout << " BinaryenSetPassArgument("; - traceNameOrNULL(key); - std::cout << ", "; - traceNameOrNULL(value); - std::cout << ");\n"; - } - assert(key); if (value) { globalPassOptions.arguments[key] = value; @@ -4009,82 +3481,44 @@ } } -void BinaryenClearPassArguments(void) { - if (tracing) { - std::cout << " BinaryenClearPassArguments();\n"; - } - - globalPassOptions.arguments.clear(); -} +void BinaryenClearPassArguments(void) { globalPassOptions.arguments.clear(); } BinaryenIndex BinaryenGetAlwaysInlineMaxSize(void) { - if (tracing) { - std::cout << " BinaryenGetAlwaysInlineMaxSize();\n"; - } - return globalPassOptions.inlining.alwaysInlineMaxSize; } void BinaryenSetAlwaysInlineMaxSize(BinaryenIndex size) { - if (tracing) { - std::cout << " BinaryenSetAlwaysInlineMaxSize(" << size << ");\n"; - } - globalPassOptions.inlining.alwaysInlineMaxSize = size; } BinaryenIndex BinaryenGetFlexibleInlineMaxSize(void) { - if (tracing) { - std::cout << " BinaryenGetFlexibleInlineMaxSize();\n"; - } - return globalPassOptions.inlining.flexibleInlineMaxSize; } void BinaryenSetFlexibleInlineMaxSize(BinaryenIndex size) { - if (tracing) { - std::cout << " BinaryenSetFlexibleInlineMaxSize(" << size << ");\n"; - } - globalPassOptions.inlining.flexibleInlineMaxSize = size; } BinaryenIndex BinaryenGetOneCallerInlineMaxSize(void) { - if (tracing) { - std::cout << " BinaryenGetOneCallerInlineMaxSize();\n"; - } - return globalPassOptions.inlining.oneCallerInlineMaxSize; } void BinaryenSetOneCallerInlineMaxSize(BinaryenIndex size) { - if (tracing) { - std::cout << " BinaryenSetOneCallerInlineMaxSize(" << size << ");\n"; - } - globalPassOptions.inlining.oneCallerInlineMaxSize = size; } +int BinaryenGetAllowInliningFunctionsWithLoops(void) { + return globalPassOptions.inlining.allowFunctionsWithLoops; +} + +void BinaryenSetAllowInliningFunctionsWithLoops(int enabled) { + globalPassOptions.inlining.allowFunctionsWithLoops = enabled; +} + void BinaryenModuleRunPasses(BinaryenModuleRef module, const char** passes, BinaryenIndex numPasses) { - if (tracing) { - std::cout << " {\n"; - std::cout << " const char* passes[] = { "; - for (BinaryenIndex i = 0; i < numPasses; i++) { - if (i > 0) { - std::cout << ", "; - } - std::cout << "\"" << passes[i] << "\""; - } - std::cout << " };\n"; - std::cout << " BinaryenModuleRunPasses(the_module, passes, " << numPasses - << ");\n"; - std::cout << " }\n"; - } - - Module* wasm = (Module*)module; - PassRunner passRunner(wasm); + PassRunner passRunner((Module*)module); passRunner.options = globalPassOptions; for (BinaryenIndex i = 0; i < numPasses; i++) { passRunner.add(passes[i]); @@ -4093,11 +3527,7 @@ } void BinaryenModuleAutoDrop(BinaryenModuleRef module) { - if (tracing) { - std::cout << " BinaryenModuleAutoDrop(the_module);\n"; - } - - Module* wasm = (Module*)module; + auto* wasm = (Module*)module; PassRunner runner(wasm, globalPassOptions); AutoDrop().run(&runner, wasm); } @@ -4108,9 +3538,8 @@ const char* sourceMapUrl, char* sourceMap, size_t sourceMapSize) { - Module* wasm = (Module*)module; BufferWithRandomAccess buffer; - WasmBinaryWriter writer(wasm, buffer); + WasmBinaryWriter writer((Module*)module, buffer); writer.setNamesSection(globalPassOptions.debugInfo); std::ostringstream os; if (sourceMapUrl) { @@ -4130,10 +3559,6 @@ size_t BinaryenModuleWrite(BinaryenModuleRef module, char* output, size_t outputSize) { - if (tracing) { - std::cout << " // BinaryenModuleWrite\n"; - } - return writeModule((Module*)module, output, outputSize, nullptr, nullptr, 0) .outputBytes; } @@ -4141,15 +3566,10 @@ size_t BinaryenModuleWriteText(BinaryenModuleRef module, char* output, size_t outputSize) { - - if (tracing) { - std::cout << " // BinaryenModuleWriteTextr\n"; - } - // use a stringstream as an std::ostream. Extract the std::string // representation, and then store in the output. std::stringstream ss; - WasmPrinter::printModule((Module*)module, ss); + ss << *(Module*)module; const auto temp = ss.str(); const auto ctemp = temp.c_str(); @@ -4164,10 +3584,6 @@ size_t outputSize, char* sourceMap, size_t sourceMapSize) { - if (tracing) { - std::cout << " // BinaryenModuleWriteWithSourceMap\n"; - } - assert(url); assert(sourceMap); return writeModule( @@ -4177,15 +3593,8 @@ BinaryenModuleAllocateAndWriteResult BinaryenModuleAllocateAndWrite(BinaryenModuleRef module, const char* sourceMapUrl) { - if (tracing) { - std::cout << " // BinaryenModuleAllocateAndWrite(the_module, "; - traceNameOrNULL(sourceMapUrl); - std::cout << ");\n"; - } - - Module* wasm = (Module*)module; BufferWithRandomAccess buffer; - WasmBinaryWriter writer(wasm, buffer); + WasmBinaryWriter writer((Module*)module, buffer); writer.setNamesSection(globalPassOptions.debugInfo); std::ostringstream os; if (sourceMapUrl) { @@ -4204,12 +3613,8 @@ } char* BinaryenModuleAllocateAndWriteText(BinaryenModuleRef module) { - if (tracing) { - std::cout << " // BinaryenModuleAllocateAndWriteText(the_module);"; - } - std::stringstream ss; - WasmPrinter::printModule((Module*)module, ss); + ss << *(Module*)module; const std::string out = ss.str(); const int len = out.length() + 1; @@ -4219,10 +3624,6 @@ } BinaryenModuleRef BinaryenModuleRead(char* input, size_t inputSize) { - if (tracing) { - std::cout << " // BinaryenModuleRead\n"; - } - auto* wasm = new Module; std::vector buffer(false); buffer.resize(inputSize); @@ -4238,38 +3639,23 @@ } void BinaryenModuleInterpret(BinaryenModuleRef module) { - if (tracing) { - std::cout << " BinaryenModuleInterpret(the_module);\n"; - } - - Module* wasm = (Module*)module; ShellExternalInterface interface; - ModuleInstance instance(*wasm, &interface); + ModuleInstance instance(*(Module*)module, &interface); } BinaryenIndex BinaryenModuleAddDebugInfoFileName(BinaryenModuleRef module, const char* filename) { - if (tracing) { - std::cout << " BinaryenModuleAddDebugInfoFileName(the_module, \"" - << filename << "\");\n"; - } - - Module* wasm = (Module*)module; - BinaryenIndex index = wasm->debugInfoFileNames.size(); - wasm->debugInfoFileNames.push_back(filename); + auto& debugInfoFileNames = ((Module*)module)->debugInfoFileNames; + BinaryenIndex index = debugInfoFileNames.size(); + debugInfoFileNames.push_back(filename); return index; } const char* BinaryenModuleGetDebugInfoFileName(BinaryenModuleRef module, BinaryenIndex index) { - if (tracing) { - std::cout << " BinaryenModuleGetDebugInfoFileName(the_module, \"" << index - << "\");\n"; - } - - Module* wasm = (Module*)module; - return index < wasm->debugInfoFileNames.size() - ? wasm->debugInfoFileNames.at(index).c_str() + const auto& debugInfoFileNames = ((Module*)module)->debugInfoFileNames; + return index < debugInfoFileNames.size() + ? debugInfoFileNames.at(index).c_str() : nullptr; } @@ -4278,90 +3664,59 @@ // const char* BinaryenFunctionGetName(BinaryenFunctionRef func) { - if (tracing) { - std::cout << " BinaryenFunctionGetName(functions[" << functions[func] - << "]);\n"; - } - return ((Function*)func)->name.c_str(); } BinaryenType BinaryenFunctionGetParams(BinaryenFunctionRef func) { - if (tracing) { - std::cout << " BinaryenFunctionGetParams(functions[" << functions[func] - << "]);\n"; - } - return ((Function*)func)->sig.params.getID(); } BinaryenType BinaryenFunctionGetResults(BinaryenFunctionRef func) { - if (tracing) { - std::cout << " BinaryenFunctionGetResults(functions[" << functions[func] - << "]);\n"; - } - return ((Function*)func)->sig.results.getID(); } BinaryenIndex BinaryenFunctionGetNumVars(BinaryenFunctionRef func) { - if (tracing) { - std::cout << " BinaryenFunctionGetNumVars(functions[" << functions[func] - << "]);\n"; - } - return ((Function*)func)->vars.size(); } BinaryenType BinaryenFunctionGetVar(BinaryenFunctionRef func, BinaryenIndex index) { - if (tracing) { - std::cout << " BinaryenFunctionGetVar(functions[" << functions[func] - << "], " << index << ");\n"; - } - - auto* fn = (Function*)func; - assert(index < fn->vars.size()); - return fn->vars[index].getID(); + const auto& vars = ((Function*)func)->vars; + assert(index < vars.size()); + return vars[index].getID(); +} +BinaryenIndex BinaryenFunctionGetNumLocals(BinaryenFunctionRef func) { + return ((Function*)func)->getNumLocals(); +} +int BinaryenFunctionHasLocalName(BinaryenFunctionRef func, + BinaryenIndex index) { + return ((Function*)func)->hasLocalName(index); +} +const char* BinaryenFunctionGetLocalName(BinaryenFunctionRef func, + BinaryenIndex index) { + return ((Function*)func)->getLocalName(index).str; +} +void BinaryenFunctionSetLocalName(BinaryenFunctionRef func, + BinaryenIndex index, + const char* name) { + ((Function*)func)->setLocalName(index, name); } BinaryenExpressionRef BinaryenFunctionGetBody(BinaryenFunctionRef func) { - if (tracing) { - std::cout << " BinaryenFunctionGetBody(functions[" << functions[func] - << "]);\n"; - } - return ((Function*)func)->body; } +void BinaryenFunctionSetBody(BinaryenFunctionRef func, + BinaryenExpressionRef body) { + assert(body); + ((Function*)func)->body = (Expression*)body; +} void BinaryenFunctionOptimize(BinaryenFunctionRef func, BinaryenModuleRef module) { - if (tracing) { - std::cout << " BinaryenFunctionOptimize(functions[" << functions[func] - << "], the_module);\n"; - } - - Module* wasm = (Module*)module; - PassRunner passRunner(wasm); + PassRunner passRunner((Module*)module); passRunner.options = globalPassOptions; - passRunner.addDefaultOptimizationPasses(); + passRunner.addDefaultFunctionOptimizationPasses(); passRunner.runOnFunction((Function*)func); } void BinaryenFunctionRunPasses(BinaryenFunctionRef func, BinaryenModuleRef module, const char** passes, BinaryenIndex numPasses) { - if (tracing) { - std::cout << " {\n"; - std::cout << " const char* passes[] = { "; - for (BinaryenIndex i = 0; i < numPasses; i++) { - if (i > 0) { - std::cout << ", "; - } - std::cout << "\"" << passes[i] << "\""; - } - std::cout << " };\n"; - std::cout << " BinaryenFunctionRunPasses(functions[" << functions[func] - << ", the_module, passes, " << numPasses << ");\n"; - std::cout << " }\n"; - } - - Module* wasm = (Module*)module; - PassRunner passRunner(wasm); + PassRunner passRunner((Module*)module); passRunner.options = globalPassOptions; for (BinaryenIndex i = 0; i < numPasses; i++) { passRunner.add(passes[i]); @@ -4373,22 +3728,11 @@ BinaryenIndex fileIndex, BinaryenIndex lineNumber, BinaryenIndex columnNumber) { - if (tracing) { - std::cout << " BinaryenFunctionSetDebugLocation(functions[" - << functions[func] << "], expressions[" << expressions[expr] - << "], " << fileIndex << ", " << lineNumber << ", " - << columnNumber << ");\n"; - } - - auto* fn = (Function*)func; - auto* ex = (Expression*)expr; - Function::DebugLocation loc; loc.fileIndex = fileIndex; loc.lineNumber = lineNumber; loc.columnNumber = columnNumber; - - fn->debugLocations[ex] = loc; + ((Function*)func)->debugLocations[(Expression*)expr] = loc; } // @@ -4396,35 +3740,15 @@ // const char* BinaryenGlobalGetName(BinaryenGlobalRef global) { - if (tracing) { - std::cout << " BinaryenGlobalGetName(globals[" << globals[global] - << "]);\n"; - } - return ((Global*)global)->name.c_str(); } BinaryenType BinaryenGlobalGetType(BinaryenGlobalRef global) { - if (tracing) { - std::cout << " BinaryenGlobalGetType(globals[" << globals[global] - << "]);\n"; - } - return ((Global*)global)->type.getID(); } int BinaryenGlobalIsMutable(BinaryenGlobalRef global) { - if (tracing) { - std::cout << " BinaryenGlobalIsMutable(globals[" << globals[global] - << "]);\n"; - } - return ((Global*)global)->mutable_; } BinaryenExpressionRef BinaryenGlobalGetInitExpr(BinaryenGlobalRef global) { - if (tracing) { - std::cout << " BinaryenGlobalGetInitExpr(globals[" << globals[global] - << "]);\n"; - } - return ((Global*)global)->init; } @@ -4433,34 +3757,16 @@ // const char* BinaryenEventGetName(BinaryenEventRef event) { - if (tracing) { - std::cout << " BinaryenEventGetName(events[" << events[event] << "]);\n"; - } - return ((Event*)event)->name.c_str(); } int BinaryenEventGetAttribute(BinaryenEventRef event) { - if (tracing) { - std::cout << " BinaryenEventGetAttribute(events[" << events[event] - << "]);\n"; - } - return ((Event*)event)->attribute; } BinaryenType BinaryenEventGetParams(BinaryenEventRef event) { - if (tracing) { - std::cout << " BinaryenEventGetParams(events[" << events[event] << "]);\n"; - } - return ((Event*)event)->sig.params.getID(); } BinaryenType BinaryenEventGetResults(BinaryenEventRef event) { - if (tracing) { - std::cout << " BinaryenEventGetResults(events[" << events[event] - << "]);\n"; - } - return ((Event*)event)->sig.results.getID(); } @@ -4469,11 +3775,6 @@ // const char* BinaryenFunctionImportGetModule(BinaryenFunctionRef import) { - if (tracing) { - std::cout << " BinaryenFunctionImportGetModule(functions[" - << functions[import] << "]);\n"; - } - auto* func = (Function*)import; if (func->imported()) { return func->module.c_str(); @@ -4482,11 +3783,6 @@ } } const char* BinaryenGlobalImportGetModule(BinaryenGlobalRef import) { - if (tracing) { - std::cout << " BinaryenGlobalImportGetModule(globals[" << globals[import] - << "]);\n"; - } - auto* global = (Global*)import; if (global->imported()) { return global->module.c_str(); @@ -4495,11 +3791,6 @@ } } const char* BinaryenEventImportGetModule(BinaryenEventRef import) { - if (tracing) { - std::cout << " BinaryenEventImportGetModule(events[" << events[import] - << "]);\n"; - } - auto* event = (Event*)import; if (event->imported()) { return event->module.c_str(); @@ -4508,11 +3799,6 @@ } } const char* BinaryenFunctionImportGetBase(BinaryenFunctionRef import) { - if (tracing) { - std::cout << " BinaryenFunctionImportGetBase(functions[" - << functions[import] << "]);\n"; - } - auto* func = (Function*)import; if (func->imported()) { return func->base.c_str(); @@ -4521,11 +3807,6 @@ } } const char* BinaryenGlobalImportGetBase(BinaryenGlobalRef import) { - if (tracing) { - std::cout << " BinaryenGlobalImportGetBase(globals[" << globals[import] - << "]);\n"; - } - auto* global = (Global*)import; if (global->imported()) { return global->base.c_str(); @@ -4534,11 +3815,6 @@ } } const char* BinaryenEventImportGetBase(BinaryenEventRef import) { - if (tracing) { - std::cout << " BinaryenEventImportGetBase(events[" << events[import] - << "]);\n"; - } - auto* event = (Event*)import; if (event->imported()) { return event->base.c_str(); @@ -4552,49 +3828,14 @@ // BinaryenExternalKind BinaryenExportGetKind(BinaryenExportRef export_) { - if (tracing) { - std::cout << " BinaryenExportGetKind(exports[" << exports[export_] - << "]);\n"; - } - return BinaryenExternalKind(((Export*)export_)->kind); } const char* BinaryenExportGetName(BinaryenExportRef export_) { - if (tracing) { - std::cout << " BinaryenExportGetName(exports[" << exports[export_] - << "]);\n"; - } - return ((Export*)export_)->name.c_str(); } const char* BinaryenExportGetValue(BinaryenExportRef export_) { - if (tracing) { - std::cout << " BinaryenExportGetValue(exports[" << exports[export_] - << "]);\n"; - } - return ((Export*)export_)->value.c_str(); } -uint32_t BinaryenGetNumExports(BinaryenModuleRef module) { - if (tracing) { - std::cout << " BinaryenGetNumExports(the_module);\n"; - } - - auto* wasm = (Module*)module; - return wasm->exports.size(); -} -BinaryenExportRef BinaryenGetExportByIndex(BinaryenModuleRef module, - BinaryenIndex id) { - if (tracing) { - std::cout << " BinaryenGetExportByIndex(the_module, " << id << ");\n"; - } - - auto* wasm = (Module*)module; - if (wasm->exports.size() <= id) { - Fatal() << "invalid export id."; - } - return wasm->exports[id].get(); -} // // ========= Custom sections ========= @@ -4604,27 +3845,10 @@ const char* name, const char* contents, BinaryenIndex contentsSize) { - if (tracing) { - std::cout << " {\n"; - std::cout << " const char contents[] = { "; - for (BinaryenIndex i = 0; i < contentsSize; i++) { - if (i > 0) { - std::cout << ", "; - } - std::cout << int(contents[i]); - } - std::cout << " };\n"; - std::cout << " BinaryenAddCustomSection(the_module, "; - traceNameOrNULL(name); - std::cout << ", contents, " << contentsSize << ");\n"; - std::cout << " }\n"; - } - - auto* wasm = (Module*)module; wasm::UserSection customSection; customSection.name = name; customSection.data = std::vector(contents, contents + contentsSize); - wasm->userSections.push_back(customSection); + ((Module*)module)->userSections.push_back(customSection); } // @@ -4676,6 +3900,10 @@ BinaryenSideEffects BinaryenSideEffectThrows(void) { return static_cast(EffectAnalyzer::SideEffects::Throws); } +BinaryenSideEffects BinaryenSideEffectDanglingPop(void) { + return static_cast( + EffectAnalyzer::SideEffects::DanglingPop); +} BinaryenSideEffects BinaryenSideEffectAny(void) { return static_cast(EffectAnalyzer::SideEffects::Any); } @@ -4683,10 +3911,6 @@ BinaryenSideEffects BinaryenExpressionGetSideEffects(BinaryenExpressionRef expr, BinaryenFeatures features) { - if (tracing) { - std::cout << " BinaryenExpressionGetSideEffects(expressions[" - << expressions[expr] << "], " << features << ");\n"; - } return EffectAnalyzer(globalPassOptions, features, (Expression*)expr) .getSideEffects(); } @@ -4696,62 +3920,29 @@ // RelooperRef RelooperCreate(BinaryenModuleRef module) { - if (tracing) { - std::cout << " the_relooper = RelooperCreate(the_module);\n"; - } - - auto* wasm = (Module*)module; - return RelooperRef(new CFG::Relooper(wasm)); + return RelooperRef(new CFG::Relooper((Module*)module)); } RelooperBlockRef RelooperAddBlock(RelooperRef relooper, BinaryenExpressionRef code) { - auto* R = (CFG::Relooper*)relooper; - auto* ret = new CFG::Block((Expression*)code); - - if (tracing) { - auto id = relooperBlocks.size(); - relooperBlocks[ret] = id; - std::cout << " relooperBlocks[" << id - << "] = RelooperAddBlock(the_relooper, expressions[" - << expressions[code] << "]);\n"; - } - - R->AddBlock(ret); - return RelooperBlockRef(ret); + return RelooperBlockRef( + ((CFG::Relooper*)relooper)->AddBlock((Expression*)code)); } void RelooperAddBranch(RelooperBlockRef from, RelooperBlockRef to, BinaryenExpressionRef condition, BinaryenExpressionRef code) { - if (tracing) { - std::cout << " RelooperAddBranch(relooperBlocks[" << relooperBlocks[from] - << "], relooperBlocks[" << relooperBlocks[to] << "], expressions[" - << expressions[condition] << "], expressions[" - << expressions[code] << "]);\n"; - } - - auto* fromBlock = (CFG::Block*)from; - auto* toBlock = (CFG::Block*)to; - fromBlock->AddBranchTo(toBlock, (Expression*)condition, (Expression*)code); + ((CFG::Block*)from) + ->AddBranchTo((CFG::Block*)to, (Expression*)condition, (Expression*)code); } RelooperBlockRef RelooperAddBlockWithSwitch(RelooperRef relooper, BinaryenExpressionRef code, BinaryenExpressionRef condition) { - auto* R = (CFG::Relooper*)relooper; - auto* ret = new CFG::Block((Expression*)code, (Expression*)condition); - - if (tracing) { - std::cout << " relooperBlocks[" << relooperBlocks[ret] - << "] = RelooperAddBlockWithSwitch(the_relooper, expressions[" - << expressions[code] << "], expressions[" - << expressions[condition] << "]);\n"; - } - - R->AddBlock(ret); - return RelooperBlockRef(ret); + return RelooperBlockRef( + ((CFG::Relooper*)relooper) + ->AddBlock((Expression*)code, (Expression*)condition)); } void RelooperAddBranchForSwitch(RelooperBlockRef from, @@ -4759,34 +3950,12 @@ BinaryenIndex* indexes, BinaryenIndex numIndexes, BinaryenExpressionRef code) { - if (tracing) { - std::cout << " {\n"; - std::cout << " BinaryenIndex indexes[] = { "; - for (BinaryenIndex i = 0; i < numIndexes; i++) { - if (i > 0) { - std::cout << ", "; - } - std::cout << indexes[i]; - } - if (numIndexes == 0) { - // ensure the array is not empty, otherwise a compiler error on VS - std::cout << "0"; - } - std::cout << " };\n"; - std::cout << " RelooperAddBranchForSwitch(relooperBlocks[" - << relooperBlocks[from] << "], relooperBlocks[" - << relooperBlocks[to] << "], indexes, " << numIndexes - << ", expressions[" << expressions[code] << "]);\n"; - std::cout << " }\n"; - } - - auto* fromBlock = (CFG::Block*)from; - auto* toBlock = (CFG::Block*)to; std::vector values; for (Index i = 0; i < numIndexes; i++) { values.push_back(indexes[i]); } - fromBlock->AddSwitchBranchTo(toBlock, std::move(values), (Expression*)code); + ((CFG::Block*)from) + ->AddSwitchBranchTo((CFG::Block*)to, std::move(values), (Expression*)code); } BinaryenExpressionRef RelooperRenderAndDispose(RelooperRef relooper, @@ -4796,45 +3965,90 @@ R->Calculate((CFG::Block*)entry); CFG::RelooperBuilder builder(*R->Module, labelHelper); auto* ret = R->Render(builder); - - if (tracing) { - auto id = noteExpression(ret); - std::cout << " expressions[" << id - << "] = RelooperRenderAndDispose(the_relooper, relooperBlocks[" - << relooperBlocks[entry] << "], " << labelHelper << ");\n"; - relooperBlocks.clear(); - } - delete R; return BinaryenExpressionRef(ret); } // -// ========= Other APIs ========= +// ========= ExpressionRunner ========= // -void BinaryenSetAPITracing(int on) { - tracing = on; +namespace wasm { - if (tracing) { - std::cout << "// beginning a Binaryen API trace\n" - "#include \n" - "#include \n" - "#include \"binaryen-c.h\"\n" - "int main() {\n" - " std::map expressions;\n" - " std::map functions;\n" - " std::map globals;\n" - " std::map events;\n" - " std::map exports;\n" - " std::map relooperBlocks;\n" - " BinaryenModuleRef the_module = NULL;\n" - " RelooperRef the_relooper = NULL;\n"; - } else { - std::cout << " return 0;\n"; - std::cout << "}\n"; - std::cout << "// ending a Binaryen API trace\n"; +// Evaluates a suspected constant expression via the C-API. Inherits most of its +// functionality from ConstantExpressionRunner, which it shares with the +// precompute pass, but must be `final` so we can `delete` its instances. +class CExpressionRunner final + : public ConstantExpressionRunner { +public: + CExpressionRunner(Module* module, + CExpressionRunner::Flags flags, + Index maxDepth, + Index maxLoopIterations) + : ConstantExpressionRunner( + module, flags, maxDepth, maxLoopIterations) {} +}; + +} // namespace wasm + +ExpressionRunnerFlags ExpressionRunnerFlagsDefault() { + return CExpressionRunner::FlagValues::DEFAULT; +} + +ExpressionRunnerFlags ExpressionRunnerFlagsPreserveSideeffects() { + return CExpressionRunner::FlagValues::PRESERVE_SIDEEFFECTS; +} + +ExpressionRunnerFlags ExpressionRunnerFlagsTraverseCalls() { + return CExpressionRunner::FlagValues::TRAVERSE_CALLS; +} + +ExpressionRunnerRef ExpressionRunnerCreate(BinaryenModuleRef module, + ExpressionRunnerFlags flags, + BinaryenIndex maxDepth, + BinaryenIndex maxLoopIterations) { + return static_cast( + new CExpressionRunner((Module*)module, flags, maxDepth, maxLoopIterations)); +} + +int ExpressionRunnerSetLocalValue(ExpressionRunnerRef runner, + BinaryenIndex index, + BinaryenExpressionRef value) { + auto* R = (CExpressionRunner*)runner; + auto setFlow = R->visit(value); + if (!setFlow.breaking()) { + R->setLocalValue(index, setFlow.values); + return 1; + } + return 0; +} + +int ExpressionRunnerSetGlobalValue(ExpressionRunnerRef runner, + const char* name, + BinaryenExpressionRef value) { + auto* R = (CExpressionRunner*)runner; + auto setFlow = R->visit(value); + if (!setFlow.breaking()) { + R->setGlobalValue(name, setFlow.values); + return 1; + } + return 0; +} + +BinaryenExpressionRef +ExpressionRunnerRunAndDispose(ExpressionRunnerRef runner, + BinaryenExpressionRef expr) { + auto* R = (CExpressionRunner*)runner; + Expression* ret = nullptr; + try { + auto flow = R->visit(expr); + if (!flow.breaking() && !flow.values.empty()) { + ret = flow.getConstExpression(*R->getModule()); + } + } catch (CExpressionRunner::NonconstantException&) { } + delete R; + return ret; } // diff -Nru binaryen-91/src/binaryen-c.h binaryen-99/src/binaryen-c.h --- binaryen-91/src/binaryen-c.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/binaryen-c.h 2021-01-07 20:01:06.000000000 +0000 @@ -25,7 +25,7 @@ // graph (CFG) as input. // // The final part of the API contains miscellaneous utilities like -// debugging/tracing for the API itself. +// debugging for the API itself. // // --------------- // @@ -90,7 +90,7 @@ // Core types (call to get the value of each; you can cache them, they // never change) -typedef uint32_t BinaryenType; +typedef uintptr_t BinaryenType; BINARYEN_API BinaryenType BinaryenTypeNone(void); BINARYEN_API BinaryenType BinaryenTypeInt32(void); @@ -99,9 +99,11 @@ BINARYEN_API BinaryenType BinaryenTypeFloat64(void); BINARYEN_API BinaryenType BinaryenTypeVec128(void); BINARYEN_API BinaryenType BinaryenTypeFuncref(void); -BINARYEN_API BinaryenType BinaryenTypeAnyref(void); -BINARYEN_API BinaryenType BinaryenTypeNullref(void); +BINARYEN_API BinaryenType BinaryenTypeExternref(void); BINARYEN_API BinaryenType BinaryenTypeExnref(void); +BINARYEN_API BinaryenType BinaryenTypeAnyref(void); +BINARYEN_API BinaryenType BinaryenTypeEqref(void); +BINARYEN_API BinaryenType BinaryenTypeI31ref(void); BINARYEN_API BinaryenType BinaryenTypeUnreachable(void); // Not a real type. Used as the last parameter to BinaryenBlock to let // the API figure out the type instead of providing one. @@ -123,52 +125,11 @@ typedef uint32_t BinaryenExpressionId; BINARYEN_API BinaryenExpressionId BinaryenInvalidId(void); -BINARYEN_API BinaryenExpressionId BinaryenBlockId(void); -BINARYEN_API BinaryenExpressionId BinaryenIfId(void); -BINARYEN_API BinaryenExpressionId BinaryenLoopId(void); -BINARYEN_API BinaryenExpressionId BinaryenBreakId(void); -BINARYEN_API BinaryenExpressionId BinaryenSwitchId(void); -BINARYEN_API BinaryenExpressionId BinaryenCallId(void); -BINARYEN_API BinaryenExpressionId BinaryenCallIndirectId(void); -BINARYEN_API BinaryenExpressionId BinaryenLocalGetId(void); -BINARYEN_API BinaryenExpressionId BinaryenLocalSetId(void); -BINARYEN_API BinaryenExpressionId BinaryenGlobalGetId(void); -BINARYEN_API BinaryenExpressionId BinaryenGlobalSetId(void); -BINARYEN_API BinaryenExpressionId BinaryenLoadId(void); -BINARYEN_API BinaryenExpressionId BinaryenStoreId(void); -BINARYEN_API BinaryenExpressionId BinaryenConstId(void); -BINARYEN_API BinaryenExpressionId BinaryenUnaryId(void); -BINARYEN_API BinaryenExpressionId BinaryenBinaryId(void); -BINARYEN_API BinaryenExpressionId BinaryenSelectId(void); -BINARYEN_API BinaryenExpressionId BinaryenDropId(void); -BINARYEN_API BinaryenExpressionId BinaryenReturnId(void); -BINARYEN_API BinaryenExpressionId BinaryenHostId(void); -BINARYEN_API BinaryenExpressionId BinaryenNopId(void); -BINARYEN_API BinaryenExpressionId BinaryenUnreachableId(void); -BINARYEN_API BinaryenExpressionId BinaryenAtomicCmpxchgId(void); -BINARYEN_API BinaryenExpressionId BinaryenAtomicRMWId(void); -BINARYEN_API BinaryenExpressionId BinaryenAtomicWaitId(void); -BINARYEN_API BinaryenExpressionId BinaryenAtomicNotifyId(void); -BINARYEN_API BinaryenExpressionId BinaryenAtomicFenceId(void); -BINARYEN_API BinaryenExpressionId BinaryenSIMDExtractId(void); -BINARYEN_API BinaryenExpressionId BinaryenSIMDReplaceId(void); -BINARYEN_API BinaryenExpressionId BinaryenSIMDShuffleId(void); -BINARYEN_API BinaryenExpressionId BinaryenSIMDTernaryId(void); -BINARYEN_API BinaryenExpressionId BinaryenSIMDShiftId(void); -BINARYEN_API BinaryenExpressionId BinaryenSIMDLoadId(void); -BINARYEN_API BinaryenExpressionId BinaryenMemoryInitId(void); -BINARYEN_API BinaryenExpressionId BinaryenDataDropId(void); -BINARYEN_API BinaryenExpressionId BinaryenMemoryCopyId(void); -BINARYEN_API BinaryenExpressionId BinaryenMemoryFillId(void); -BINARYEN_API BinaryenExpressionId BinaryenRefNullId(void); -BINARYEN_API BinaryenExpressionId BinaryenRefIsNullId(void); -BINARYEN_API BinaryenExpressionId BinaryenRefFuncId(void); -BINARYEN_API BinaryenExpressionId BinaryenTryId(void); -BINARYEN_API BinaryenExpressionId BinaryenThrowId(void); -BINARYEN_API BinaryenExpressionId BinaryenRethrowId(void); -BINARYEN_API BinaryenExpressionId BinaryenBrOnExnId(void); -BINARYEN_API BinaryenExpressionId BinaryenPushId(void); -BINARYEN_API BinaryenExpressionId BinaryenPopId(void); + +#define DELEGATE(CLASS_TO_VISIT) \ + BINARYEN_API BinaryenExpressionId Binaryen##CLASS_TO_VISIT##Id(void); + +#include "wasm-delegations.h" // External kinds (call to get the value of each; you can cache them) @@ -195,6 +156,9 @@ BINARYEN_API BinaryenFeatures BinaryenFeatureExceptionHandling(void); BINARYEN_API BinaryenFeatures BinaryenFeatureTailCall(void); BINARYEN_API BinaryenFeatures BinaryenFeatureReferenceTypes(void); +BINARYEN_API BinaryenFeatures BinaryenFeatureMultivalue(void); +BINARYEN_API BinaryenFeatures BinaryenFeatureGC(void); +BINARYEN_API BinaryenFeatures BinaryenFeatureMemory64(void); BINARYEN_API BinaryenFeatures BinaryenFeatureAll(void); // Modules @@ -220,7 +184,7 @@ // Literals. These are passed by value. struct BinaryenLiteral { - int32_t type; + uintptr_t type; union { int32_t i32; int64_t i64; @@ -228,6 +192,7 @@ double f64; uint8_t v128[16]; const char* func; + // TODO: exn }; }; @@ -379,8 +344,6 @@ BINARYEN_API BinaryenOp BinaryenLeFloat64(void); BINARYEN_API BinaryenOp BinaryenGtFloat64(void); BINARYEN_API BinaryenOp BinaryenGeFloat64(void); -BINARYEN_API BinaryenOp BinaryenMemorySize(void); -BINARYEN_API BinaryenOp BinaryenMemoryGrow(void); BINARYEN_API BinaryenOp BinaryenAtomicRMWAdd(void); BINARYEN_API BinaryenOp BinaryenAtomicRMWSub(void); BINARYEN_API BinaryenOp BinaryenAtomicRMWAnd(void); @@ -463,9 +426,12 @@ BINARYEN_API BinaryenOp BinaryenXorVec128(void); BINARYEN_API BinaryenOp BinaryenAndNotVec128(void); BINARYEN_API BinaryenOp BinaryenBitselectVec128(void); +// TODO: Add i8x16.popcnt to C and JS APIs once merged to the proposal +BINARYEN_API BinaryenOp BinaryenAbsVecI8x16(void); BINARYEN_API BinaryenOp BinaryenNegVecI8x16(void); BINARYEN_API BinaryenOp BinaryenAnyTrueVecI8x16(void); BINARYEN_API BinaryenOp BinaryenAllTrueVecI8x16(void); +BINARYEN_API BinaryenOp BinaryenBitmaskVecI8x16(void); BINARYEN_API BinaryenOp BinaryenShlVecI8x16(void); BINARYEN_API BinaryenOp BinaryenShrSVecI8x16(void); BINARYEN_API BinaryenOp BinaryenShrUVecI8x16(void); @@ -481,9 +447,11 @@ BINARYEN_API BinaryenOp BinaryenMaxSVecI8x16(void); BINARYEN_API BinaryenOp BinaryenMaxUVecI8x16(void); BINARYEN_API BinaryenOp BinaryenAvgrUVecI8x16(void); +BINARYEN_API BinaryenOp BinaryenAbsVecI16x8(void); BINARYEN_API BinaryenOp BinaryenNegVecI16x8(void); BINARYEN_API BinaryenOp BinaryenAnyTrueVecI16x8(void); BINARYEN_API BinaryenOp BinaryenAllTrueVecI16x8(void); +BINARYEN_API BinaryenOp BinaryenBitmaskVecI16x8(void); BINARYEN_API BinaryenOp BinaryenShlVecI16x8(void); BINARYEN_API BinaryenOp BinaryenShrSVecI16x8(void); BINARYEN_API BinaryenOp BinaryenShrUVecI16x8(void); @@ -499,9 +467,13 @@ BINARYEN_API BinaryenOp BinaryenMaxSVecI16x8(void); BINARYEN_API BinaryenOp BinaryenMaxUVecI16x8(void); BINARYEN_API BinaryenOp BinaryenAvgrUVecI16x8(void); +// TODO: Add i16x8.q15mulr_sat_s to C and JS APIs once merged to the proposal +// TODO: Add extending multiplications to APIs once they are merged as well +BINARYEN_API BinaryenOp BinaryenAbsVecI32x4(void); BINARYEN_API BinaryenOp BinaryenNegVecI32x4(void); BINARYEN_API BinaryenOp BinaryenAnyTrueVecI32x4(void); BINARYEN_API BinaryenOp BinaryenAllTrueVecI32x4(void); +BINARYEN_API BinaryenOp BinaryenBitmaskVecI32x4(void); BINARYEN_API BinaryenOp BinaryenShlVecI32x4(void); BINARYEN_API BinaryenOp BinaryenShrSVecI32x4(void); BINARYEN_API BinaryenOp BinaryenShrUVecI32x4(void); @@ -514,13 +486,12 @@ BINARYEN_API BinaryenOp BinaryenMaxUVecI32x4(void); BINARYEN_API BinaryenOp BinaryenDotSVecI16x8ToVecI32x4(void); BINARYEN_API BinaryenOp BinaryenNegVecI64x2(void); -BINARYEN_API BinaryenOp BinaryenAnyTrueVecI64x2(void); -BINARYEN_API BinaryenOp BinaryenAllTrueVecI64x2(void); BINARYEN_API BinaryenOp BinaryenShlVecI64x2(void); BINARYEN_API BinaryenOp BinaryenShrSVecI64x2(void); BINARYEN_API BinaryenOp BinaryenShrUVecI64x2(void); BINARYEN_API BinaryenOp BinaryenAddVecI64x2(void); BINARYEN_API BinaryenOp BinaryenSubVecI64x2(void); +BINARYEN_API BinaryenOp BinaryenMulVecI64x2(void); BINARYEN_API BinaryenOp BinaryenAbsVecF32x4(void); BINARYEN_API BinaryenOp BinaryenNegVecF32x4(void); BINARYEN_API BinaryenOp BinaryenSqrtVecF32x4(void); @@ -532,6 +503,12 @@ BINARYEN_API BinaryenOp BinaryenDivVecF32x4(void); BINARYEN_API BinaryenOp BinaryenMinVecF32x4(void); BINARYEN_API BinaryenOp BinaryenMaxVecF32x4(void); +BINARYEN_API BinaryenOp BinaryenPMinVecF32x4(void); +BINARYEN_API BinaryenOp BinaryenPMaxVecF32x4(void); +BINARYEN_API BinaryenOp BinaryenCeilVecF32x4(void); +BINARYEN_API BinaryenOp BinaryenFloorVecF32x4(void); +BINARYEN_API BinaryenOp BinaryenTruncVecF32x4(void); +BINARYEN_API BinaryenOp BinaryenNearestVecF32x4(void); BINARYEN_API BinaryenOp BinaryenAbsVecF64x2(void); BINARYEN_API BinaryenOp BinaryenNegVecF64x2(void); BINARYEN_API BinaryenOp BinaryenSqrtVecF64x2(void); @@ -543,6 +520,13 @@ BINARYEN_API BinaryenOp BinaryenDivVecF64x2(void); BINARYEN_API BinaryenOp BinaryenMinVecF64x2(void); BINARYEN_API BinaryenOp BinaryenMaxVecF64x2(void); +BINARYEN_API BinaryenOp BinaryenPMinVecF64x2(void); +BINARYEN_API BinaryenOp BinaryenPMaxVecF64x2(void); +BINARYEN_API BinaryenOp BinaryenCeilVecF64x2(void); +BINARYEN_API BinaryenOp BinaryenFloorVecF64x2(void); +BINARYEN_API BinaryenOp BinaryenTruncVecF64x2(void); +BINARYEN_API BinaryenOp BinaryenNearestVecF64x2(void); +// TODO: Add extending pairwise adds to C and JS APIs once merged BINARYEN_API BinaryenOp BinaryenTruncSatSVecF32x4ToVecI32x4(void); BINARYEN_API BinaryenOp BinaryenTruncSatUVecF32x4ToVecI32x4(void); BINARYEN_API BinaryenOp BinaryenTruncSatSVecF64x2ToVecI64x2(void); @@ -561,6 +545,7 @@ BINARYEN_API BinaryenOp BinaryenLoadExtUVec16x4ToVecI32x4(void); BINARYEN_API BinaryenOp BinaryenLoadExtSVec32x2ToVecI64x2(void); BINARYEN_API BinaryenOp BinaryenLoadExtUVec32x2ToVecI64x2(void); +// TODO: Add Load{32,64}Zero to C and JS APIs once merged to proposal BINARYEN_API BinaryenOp BinaryenNarrowSVecI16x8ToVecI8x16(void); BINARYEN_API BinaryenOp BinaryenNarrowUVecI16x8ToVecI8x16(void); BINARYEN_API BinaryenOp BinaryenNarrowSVecI32x4ToVecI16x8(void); @@ -705,12 +690,9 @@ // Return: value can be NULL BINARYEN_API BinaryenExpressionRef BinaryenReturn(BinaryenModuleRef module, BinaryenExpressionRef value); -// Host: name may be NULL -BINARYEN_API BinaryenExpressionRef BinaryenHost(BinaryenModuleRef module, - BinaryenOp op, - const char* name, - BinaryenExpressionRef* operands, - BinaryenIndex numOperands); +BINARYEN_API BinaryenExpressionRef BinaryenMemorySize(BinaryenModuleRef module); +BINARYEN_API BinaryenExpressionRef +BinaryenMemoryGrow(BinaryenModuleRef module, BinaryenExpressionRef delta); BINARYEN_API BinaryenExpressionRef BinaryenNop(BinaryenModuleRef module); BINARYEN_API BinaryenExpressionRef BinaryenUnreachable(BinaryenModuleRef module); @@ -804,11 +786,16 @@ BinaryenExpressionRef dest, BinaryenExpressionRef value, BinaryenExpressionRef size); -BINARYEN_API BinaryenExpressionRef BinaryenRefNull(BinaryenModuleRef module); +BINARYEN_API BinaryenExpressionRef BinaryenRefNull(BinaryenModuleRef module, + BinaryenType type); BINARYEN_API BinaryenExpressionRef BinaryenRefIsNull(BinaryenModuleRef module, BinaryenExpressionRef value); BINARYEN_API BinaryenExpressionRef BinaryenRefFunc(BinaryenModuleRef module, - const char* func); + const char* func, + BinaryenType type); +BINARYEN_API BinaryenExpressionRef BinaryenRefEq(BinaryenModuleRef module, + BinaryenExpressionRef left, + BinaryenExpressionRef right); BINARYEN_API BinaryenExpressionRef BinaryenTry(BinaryenModuleRef module, BinaryenExpressionRef body, BinaryenExpressionRef catchBody); @@ -824,255 +811,1045 @@ const char* name, const char* eventName, BinaryenExpressionRef exnref); -BINARYEN_API BinaryenExpressionRef BinaryenPush(BinaryenModuleRef module, - BinaryenExpressionRef value); +BINARYEN_API BinaryenExpressionRef +BinaryenTupleMake(BinaryenModuleRef module, + BinaryenExpressionRef* operands, + BinaryenIndex numOperands); +BINARYEN_API BinaryenExpressionRef BinaryenTupleExtract( + BinaryenModuleRef module, BinaryenExpressionRef tuple, BinaryenIndex index); BINARYEN_API BinaryenExpressionRef BinaryenPop(BinaryenModuleRef module, BinaryenType type); +BINARYEN_API BinaryenExpressionRef BinaryenI31New(BinaryenModuleRef module, + BinaryenExpressionRef value); +BINARYEN_API BinaryenExpressionRef BinaryenI31Get(BinaryenModuleRef module, + BinaryenExpressionRef i31, + int signed_); +// TODO (gc): ref.test +// TODO (gc): ref.cast +// TODO (gc): br_on_cast +// TODO (gc): rtt.canon +// TODO (gc): rtt.sub +// TODO (gc): struct.new +// TODO (gc): struct.get +// TODO (gc): struct.set +// TODO (gc): array.new +// TODO (gc): array.get +// TODO (gc): array.set +// TODO (gc): array.len +// Expression + +// Gets the id (kind) of the given expression. BINARYEN_API BinaryenExpressionId BinaryenExpressionGetId(BinaryenExpressionRef expr); +// Gets the type of the given expression. BINARYEN_API BinaryenType BinaryenExpressionGetType(BinaryenExpressionRef expr); +// Sets the type of the given expression. +BINARYEN_API void BinaryenExpressionSetType(BinaryenExpressionRef expr, + BinaryenType type); +// Prints text format of the given expression to stdout. BINARYEN_API void BinaryenExpressionPrint(BinaryenExpressionRef expr); +// Re-finalizes an expression after it has been modified. +BINARYEN_API void BinaryenExpressionFinalize(BinaryenExpressionRef expr); +// Makes a deep copy of the given expression. +BINARYEN_API BinaryenExpressionRef +BinaryenExpressionCopy(BinaryenExpressionRef expr, BinaryenModuleRef module); + +// Block +// Gets the name (label) of a `block` expression. BINARYEN_API const char* BinaryenBlockGetName(BinaryenExpressionRef expr); +// Sets the name (label) of a `block` expression. +BINARYEN_API void BinaryenBlockSetName(BinaryenExpressionRef expr, + const char* name); +// Gets the number of child expressions of a `block` expression. BINARYEN_API BinaryenIndex BinaryenBlockGetNumChildren(BinaryenExpressionRef expr); +// Gets the child expression at the specified index of a `block` expression. +BINARYEN_API BinaryenExpressionRef +BinaryenBlockGetChildAt(BinaryenExpressionRef expr, BinaryenIndex index); +// Sets (replaces) the child expression at the specified index of a `block` +// expression. +BINARYEN_API void BinaryenBlockSetChildAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef childExpr); +// Appends a child expression to a `block` expression, returning its insertion +// index. +BINARYEN_API BinaryenIndex BinaryenBlockAppendChild( + BinaryenExpressionRef expr, BinaryenExpressionRef childExpr); +// Inserts a child expression at the specified index of a `block` expression, +// moving existing children including the one previously at that index one index +// up. +BINARYEN_API void BinaryenBlockInsertChildAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef childExpr); +// Removes the child expression at the specified index of a `block` expression, +// moving all subsequent children one index down. Returns the child expression. BINARYEN_API BinaryenExpressionRef -BinaryenBlockGetChild(BinaryenExpressionRef expr, BinaryenIndex index); +BinaryenBlockRemoveChildAt(BinaryenExpressionRef expr, BinaryenIndex index); +// If + +// Gets the condition expression of an `if` expression. BINARYEN_API BinaryenExpressionRef BinaryenIfGetCondition(BinaryenExpressionRef expr); +// Sets the condition expression of an `if` expression. +BINARYEN_API void BinaryenIfSetCondition(BinaryenExpressionRef expr, + BinaryenExpressionRef condExpr); +// Gets the ifTrue (then) expression of an `if` expression. BINARYEN_API BinaryenExpressionRef BinaryenIfGetIfTrue(BinaryenExpressionRef expr); +// Sets the ifTrue (then) expression of an `if` expression. +BINARYEN_API void BinaryenIfSetIfTrue(BinaryenExpressionRef expr, + BinaryenExpressionRef ifTrueExpr); +// Gets the ifFalse (else) expression, if any, of an `if` expression. BINARYEN_API BinaryenExpressionRef BinaryenIfGetIfFalse(BinaryenExpressionRef expr); +// Sets the ifFalse (else) expression, if any, of an `if` expression. +BINARYEN_API void BinaryenIfSetIfFalse(BinaryenExpressionRef expr, + BinaryenExpressionRef ifFalseExpr); + +// Loop +// Gets the name (label) of a `loop` expression. BINARYEN_API const char* BinaryenLoopGetName(BinaryenExpressionRef expr); +// Sets the name (label) of a `loop` expression. +BINARYEN_API void BinaryenLoopSetName(BinaryenExpressionRef expr, + const char* name); +// Gets the body expression of a `loop` expression. BINARYEN_API BinaryenExpressionRef BinaryenLoopGetBody(BinaryenExpressionRef expr); +// Sets the body expression of a `loop` expression. +BINARYEN_API void BinaryenLoopSetBody(BinaryenExpressionRef expr, + BinaryenExpressionRef bodyExpr); + +// Break +// Gets the name (target label) of a `br` or `br_if` expression. BINARYEN_API const char* BinaryenBreakGetName(BinaryenExpressionRef expr); +// Sets the name (target label) of a `br` or `br_if` expression. +BINARYEN_API void BinaryenBreakSetName(BinaryenExpressionRef expr, + const char* name); +// Gets the condition expression, if any, of a `br_if` expression. No condition +// indicates a `br` expression. BINARYEN_API BinaryenExpressionRef BinaryenBreakGetCondition(BinaryenExpressionRef expr); +// Sets the condition expression, if any, of a `br_if` expression. No condition +// makes it a `br` expression. +BINARYEN_API void BinaryenBreakSetCondition(BinaryenExpressionRef expr, + BinaryenExpressionRef condExpr); +// Gets the value expression, if any, of a `br` or `br_if` expression. BINARYEN_API BinaryenExpressionRef BinaryenBreakGetValue(BinaryenExpressionRef expr); +// Sets the value expression, if any, of a `br` or `br_if` expression. +BINARYEN_API void BinaryenBreakSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr); +// Switch + +// Gets the number of names (target labels) of a `br_table` expression. BINARYEN_API BinaryenIndex BinaryenSwitchGetNumNames(BinaryenExpressionRef expr); -BINARYEN_API const char* BinaryenSwitchGetName(BinaryenExpressionRef expr, - BinaryenIndex index); +// Gets the name (target label) at the specified index of a `br_table` +// expression. +BINARYEN_API const char* BinaryenSwitchGetNameAt(BinaryenExpressionRef expr, + BinaryenIndex index); +// Sets the name (target label) at the specified index of a `br_table` +// expression. +BINARYEN_API void BinaryenSwitchSetNameAt(BinaryenExpressionRef expr, + BinaryenIndex index, + const char* name); +// Appends a name to a `br_table` expression, returning its insertion index. +BINARYEN_API BinaryenIndex BinaryenSwitchAppendName(BinaryenExpressionRef expr, + const char* name); +// Inserts a name at the specified index of a `br_table` expression, moving +// existing names including the one previously at that index one index up. +BINARYEN_API void BinaryenSwitchInsertNameAt(BinaryenExpressionRef expr, + BinaryenIndex index, + const char* name); +// Removes the name at the specified index of a `br_table` expression, moving +// all subsequent names one index down. Returns the name. +BINARYEN_API const char* BinaryenSwitchRemoveNameAt(BinaryenExpressionRef expr, + BinaryenIndex index); +// Gets the default name (target label), if any, of a `br_table` expression. BINARYEN_API const char* BinaryenSwitchGetDefaultName(BinaryenExpressionRef expr); +// Sets the default name (target label), if any, of a `br_table` expression. +BINARYEN_API void BinaryenSwitchSetDefaultName(BinaryenExpressionRef expr, + const char* name); +// Gets the condition expression of a `br_table` expression. BINARYEN_API BinaryenExpressionRef BinaryenSwitchGetCondition(BinaryenExpressionRef expr); +// Sets the condition expression of a `br_table` expression. +BINARYEN_API void BinaryenSwitchSetCondition(BinaryenExpressionRef expr, + BinaryenExpressionRef condExpr); +// Gets the value expression, if any, of a `br_table` expression. BINARYEN_API BinaryenExpressionRef BinaryenSwitchGetValue(BinaryenExpressionRef expr); +// Sets the value expression, if any, of a `br_table` expression. +BINARYEN_API void BinaryenSwitchSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr); + +// Call +// Gets the target function name of a `call` expression. BINARYEN_API const char* BinaryenCallGetTarget(BinaryenExpressionRef expr); +// Sets the target function name of a `call` expression. +BINARYEN_API void BinaryenCallSetTarget(BinaryenExpressionRef expr, + const char* target); +// Gets the number of operands of a `call` expression. BINARYEN_API BinaryenIndex BinaryenCallGetNumOperands(BinaryenExpressionRef expr); +// Gets the operand expression at the specified index of a `call` expression. BINARYEN_API BinaryenExpressionRef -BinaryenCallGetOperand(BinaryenExpressionRef expr, BinaryenIndex index); +BinaryenCallGetOperandAt(BinaryenExpressionRef expr, BinaryenIndex index); +// Sets the operand expression at the specified index of a `call` expression. +BINARYEN_API void BinaryenCallSetOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr); +// Appends an operand expression to a `call` expression, returning its insertion +// index. +BINARYEN_API BinaryenIndex BinaryenCallAppendOperand( + BinaryenExpressionRef expr, BinaryenExpressionRef operandExpr); +// Inserts an operand expression at the specified index of a `call` expression, +// moving existing operands including the one previously at that index one index +// up. +BINARYEN_API void +BinaryenCallInsertOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr); +// Removes the operand expression at the specified index of a `call` expression, +// moving all subsequent operands one index down. Returns the operand +// expression. +BINARYEN_API BinaryenExpressionRef +BinaryenCallRemoveOperandAt(BinaryenExpressionRef expr, BinaryenIndex index); +// Gets whether the specified `call` expression is a tail call. +BINARYEN_API int BinaryenCallIsReturn(BinaryenExpressionRef expr); +// Sets whether the specified `call` expression is a tail call. +BINARYEN_API void BinaryenCallSetReturn(BinaryenExpressionRef expr, + int isReturn); + +// CallIndirect +// Gets the target expression of a `call_indirect` expression. BINARYEN_API BinaryenExpressionRef BinaryenCallIndirectGetTarget(BinaryenExpressionRef expr); +// Sets the target expression of a `call_indirect` expression. +BINARYEN_API void +BinaryenCallIndirectSetTarget(BinaryenExpressionRef expr, + BinaryenExpressionRef targetExpr); +// Gets the number of operands of a `call_indirect` expression. BINARYEN_API BinaryenIndex BinaryenCallIndirectGetNumOperands(BinaryenExpressionRef expr); -BINARYEN_API BinaryenExpressionRef -BinaryenCallIndirectGetOperand(BinaryenExpressionRef expr, BinaryenIndex index); +// Gets the operand expression at the specified index of a `call_indirect` +// expression. +BINARYEN_API BinaryenExpressionRef BinaryenCallIndirectGetOperandAt( + BinaryenExpressionRef expr, BinaryenIndex index); +// Sets the operand expression at the specified index of a `call_indirect` +// expression. +BINARYEN_API void +BinaryenCallIndirectSetOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr); +// Appends an operand expression to a `call_indirect` expression, returning its +// insertion index. +BINARYEN_API BinaryenIndex BinaryenCallIndirectAppendOperand( + BinaryenExpressionRef expr, BinaryenExpressionRef operandExpr); +// Inserts an operand expression at the specified index of a `call_indirect` +// expression, moving existing operands including the one previously at that +// index one index up. +BINARYEN_API void +BinaryenCallIndirectInsertOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr); +// Removes the operand expression at the specified index of a `call_indirect` +// expression, moving all subsequent operands one index down. Returns the +// operand expression. +BINARYEN_API BinaryenExpressionRef BinaryenCallIndirectRemoveOperandAt( + BinaryenExpressionRef expr, BinaryenIndex index); +// Gets whether the specified `call_indirect` expression is a tail call. +BINARYEN_API int BinaryenCallIndirectIsReturn(BinaryenExpressionRef expr); +// Sets whether the specified `call_indirect` expression is a tail call. +BINARYEN_API void BinaryenCallIndirectSetReturn(BinaryenExpressionRef expr, + int isReturn); +// Gets the parameter types of the specified `call_indirect` expression. +BINARYEN_API BinaryenType +BinaryenCallIndirectGetParams(BinaryenExpressionRef expr); +// Sets the parameter types of the specified `call_indirect` expression. +BINARYEN_API void BinaryenCallIndirectSetParams(BinaryenExpressionRef expr, + BinaryenType params); +// Gets the result types of the specified `call_indirect` expression. +BINARYEN_API BinaryenType +BinaryenCallIndirectGetResults(BinaryenExpressionRef expr); +// Sets the result types of the specified `call_indirect` expression. +BINARYEN_API void BinaryenCallIndirectSetResults(BinaryenExpressionRef expr, + BinaryenType params); + +// LocalGet +// Gets the local index of a `local.get` expression. BINARYEN_API BinaryenIndex BinaryenLocalGetGetIndex(BinaryenExpressionRef expr); +// Sets the local index of a `local.get` expression. +BINARYEN_API void BinaryenLocalGetSetIndex(BinaryenExpressionRef expr, + BinaryenIndex index); +// LocalSet + +// Gets whether a `local.set` tees its value (is a `local.tee`). True if the +// expression has a type other than `none`. BINARYEN_API int BinaryenLocalSetIsTee(BinaryenExpressionRef expr); +// Gets the local index of a `local.set` or `local.tee` expression. BINARYEN_API BinaryenIndex BinaryenLocalSetGetIndex(BinaryenExpressionRef expr); +// Sets the local index of a `local.set` or `local.tee` expression. +BINARYEN_API void BinaryenLocalSetSetIndex(BinaryenExpressionRef expr, + BinaryenIndex index); +// Gets the value expression of a `local.set` or `local.tee` expression. BINARYEN_API BinaryenExpressionRef BinaryenLocalSetGetValue(BinaryenExpressionRef expr); +// Sets the value expression of a `local.set` or `local.tee` expression. +BINARYEN_API void BinaryenLocalSetSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr); + +// GlobalGet +// Gets the name of the global being accessed by a `global.get` expression. BINARYEN_API const char* BinaryenGlobalGetGetName(BinaryenExpressionRef expr); +// Sets the name of the global being accessed by a `global.get` expression. +BINARYEN_API void BinaryenGlobalGetSetName(BinaryenExpressionRef expr, + const char* name); + +// GlobalSet +// Gets the name of the global being accessed by a `global.set` expression. BINARYEN_API const char* BinaryenGlobalSetGetName(BinaryenExpressionRef expr); +// Sets the name of the global being accessed by a `global.set` expression. +BINARYEN_API void BinaryenGlobalSetSetName(BinaryenExpressionRef expr, + const char* name); +// Gets the value expression of a `global.set` expression. BINARYEN_API BinaryenExpressionRef BinaryenGlobalSetGetValue(BinaryenExpressionRef expr); +// Sets the value expression of a `global.set` expression. +BINARYEN_API void BinaryenGlobalSetSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr); -BINARYEN_API BinaryenOp BinaryenHostGetOp(BinaryenExpressionRef expr); -BINARYEN_API const char* BinaryenHostGetNameOperand(BinaryenExpressionRef expr); -BINARYEN_API BinaryenIndex -BinaryenHostGetNumOperands(BinaryenExpressionRef expr); +// MemoryGrow + +// Gets the delta of a `memory.grow` expression. BINARYEN_API BinaryenExpressionRef -BinaryenHostGetOperand(BinaryenExpressionRef expr, BinaryenIndex index); +BinaryenMemoryGrowGetDelta(BinaryenExpressionRef expr); +// Sets the delta of a `memory.grow` expression. +BINARYEN_API void BinaryenMemoryGrowSetDelta(BinaryenExpressionRef expr, + BinaryenExpressionRef delta); + +// Load +// Gets whether a `load` expression is atomic (is an `atomic.load`). BINARYEN_API int BinaryenLoadIsAtomic(BinaryenExpressionRef expr); +// Sets whether a `load` expression is atomic (is an `atomic.load`). +BINARYEN_API void BinaryenLoadSetAtomic(BinaryenExpressionRef expr, + int isAtomic); +// Gets whether a `load` expression operates on a signed value (`_s`). BINARYEN_API int BinaryenLoadIsSigned(BinaryenExpressionRef expr); +// Sets whether a `load` expression operates on a signed value (`_s`). +BINARYEN_API void BinaryenLoadSetSigned(BinaryenExpressionRef expr, + int isSigned); +// Gets the constant offset of a `load` expression. BINARYEN_API uint32_t BinaryenLoadGetOffset(BinaryenExpressionRef expr); +// Sets the constant offset of a `load` expression. +BINARYEN_API void BinaryenLoadSetOffset(BinaryenExpressionRef expr, + uint32_t offset); +// Gets the number of bytes loaded by a `load` expression. BINARYEN_API uint32_t BinaryenLoadGetBytes(BinaryenExpressionRef expr); +// Sets the number of bytes loaded by a `load` expression. +BINARYEN_API void BinaryenLoadSetBytes(BinaryenExpressionRef expr, + uint32_t bytes); +// Gets the byte alignment of a `load` expression. BINARYEN_API uint32_t BinaryenLoadGetAlign(BinaryenExpressionRef expr); +// Sets the byte alignment of a `load` expression. +BINARYEN_API void BinaryenLoadSetAlign(BinaryenExpressionRef expr, + uint32_t align); +// Gets the pointer expression of a `load` expression. BINARYEN_API BinaryenExpressionRef BinaryenLoadGetPtr(BinaryenExpressionRef expr); +// Sets the pointer expression of a `load` expression. +BINARYEN_API void BinaryenLoadSetPtr(BinaryenExpressionRef expr, + BinaryenExpressionRef ptrExpr); +// Store + +// Gets whether a `store` expression is atomic (is an `atomic.store`). BINARYEN_API int BinaryenStoreIsAtomic(BinaryenExpressionRef expr); +// Sets whether a `store` expression is atomic (is an `atomic.store`). +BINARYEN_API void BinaryenStoreSetAtomic(BinaryenExpressionRef expr, + int isAtomic); +// Gets the number of bytes stored by a `store` expression. BINARYEN_API uint32_t BinaryenStoreGetBytes(BinaryenExpressionRef expr); +// Sets the number of bytes stored by a `store` expression. +BINARYEN_API void BinaryenStoreSetBytes(BinaryenExpressionRef expr, + uint32_t bytes); +// Gets the constant offset of a `store` expression. BINARYEN_API uint32_t BinaryenStoreGetOffset(BinaryenExpressionRef expr); +// Sets the constant offset of a `store` expression. +BINARYEN_API void BinaryenStoreSetOffset(BinaryenExpressionRef expr, + uint32_t offset); +// Gets the byte alignment of a `store` expression. BINARYEN_API uint32_t BinaryenStoreGetAlign(BinaryenExpressionRef expr); +// Sets the byte alignment of a `store` expression. +BINARYEN_API void BinaryenStoreSetAlign(BinaryenExpressionRef expr, + uint32_t align); +// Gets the pointer expression of a `store` expression. BINARYEN_API BinaryenExpressionRef BinaryenStoreGetPtr(BinaryenExpressionRef expr); +// Sets the pointer expression of a `store` expression. +BINARYEN_API void BinaryenStoreSetPtr(BinaryenExpressionRef expr, + BinaryenExpressionRef ptrExpr); +// Gets the value expression of a `store` expression. BINARYEN_API BinaryenExpressionRef BinaryenStoreGetValue(BinaryenExpressionRef expr); +// Sets the value expression of a `store` expression. +BINARYEN_API void BinaryenStoreSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr); +// Gets the value type of a `store` expression. +BINARYEN_API BinaryenType BinaryenStoreGetValueType(BinaryenExpressionRef expr); +// Sets the value type of a `store` expression. +BINARYEN_API void BinaryenStoreSetValueType(BinaryenExpressionRef expr, + BinaryenType valueType); + +// Const +// Gets the 32-bit integer value of an `i32.const` expression. BINARYEN_API int32_t BinaryenConstGetValueI32(BinaryenExpressionRef expr); +// Sets the 32-bit integer value of an `i32.const` expression. +BINARYEN_API void BinaryenConstSetValueI32(BinaryenExpressionRef expr, + int32_t value); +// Gets the 64-bit integer value of an `i64.const` expression. BINARYEN_API int64_t BinaryenConstGetValueI64(BinaryenExpressionRef expr); +// Sets the 64-bit integer value of an `i64.const` expression. +BINARYEN_API void BinaryenConstSetValueI64(BinaryenExpressionRef expr, + int64_t value); +// Gets the low 32-bits of the 64-bit integer value of an `i64.const` +// expression. BINARYEN_API int32_t BinaryenConstGetValueI64Low(BinaryenExpressionRef expr); +// Sets the low 32-bits of the 64-bit integer value of an `i64.const` +// expression. +BINARYEN_API void BinaryenConstSetValueI64Low(BinaryenExpressionRef expr, + int32_t valueLow); +// Gets the high 32-bits of the 64-bit integer value of an `i64.const` +// expression. BINARYEN_API int32_t BinaryenConstGetValueI64High(BinaryenExpressionRef expr); +// Sets the high 32-bits of the 64-bit integer value of an `i64.const` +// expression. +BINARYEN_API void BinaryenConstSetValueI64High(BinaryenExpressionRef expr, + int32_t valueHigh); +// Gets the 32-bit float value of a `f32.const` expression. BINARYEN_API float BinaryenConstGetValueF32(BinaryenExpressionRef expr); +// Sets the 32-bit float value of a `f32.const` expression. +BINARYEN_API void BinaryenConstSetValueF32(BinaryenExpressionRef expr, + float value); +// Gets the 64-bit float (double) value of a `f64.const` expression. BINARYEN_API double BinaryenConstGetValueF64(BinaryenExpressionRef expr); +// Sets the 64-bit float (double) value of a `f64.const` expression. +BINARYEN_API void BinaryenConstSetValueF64(BinaryenExpressionRef expr, + double value); +// Reads the 128-bit vector value of a `v128.const` expression. BINARYEN_API void BinaryenConstGetValueV128(BinaryenExpressionRef expr, uint8_t* out); +// Sets the 128-bit vector value of a `v128.const` expression. +BINARYEN_API void BinaryenConstSetValueV128(BinaryenExpressionRef expr, + const uint8_t value[16]); + +// Unary +// Gets the operation being performed by a unary expression. BINARYEN_API BinaryenOp BinaryenUnaryGetOp(BinaryenExpressionRef expr); +// Sets the operation being performed by a unary expression. +BINARYEN_API void BinaryenUnarySetOp(BinaryenExpressionRef expr, BinaryenOp op); +// Gets the value expression of a unary expression. BINARYEN_API BinaryenExpressionRef BinaryenUnaryGetValue(BinaryenExpressionRef expr); +// Sets the value expression of a unary expression. +BINARYEN_API void BinaryenUnarySetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr); +// Binary + +// Gets the operation being performed by a binary expression. BINARYEN_API BinaryenOp BinaryenBinaryGetOp(BinaryenExpressionRef expr); +// Sets the operation being performed by a binary expression. +BINARYEN_API void BinaryenBinarySetOp(BinaryenExpressionRef expr, + BinaryenOp op); +// Gets the left expression of a binary expression. BINARYEN_API BinaryenExpressionRef BinaryenBinaryGetLeft(BinaryenExpressionRef expr); +// Sets the left expression of a binary expression. +BINARYEN_API void BinaryenBinarySetLeft(BinaryenExpressionRef expr, + BinaryenExpressionRef leftExpr); +// Gets the right expression of a binary expression. BINARYEN_API BinaryenExpressionRef BinaryenBinaryGetRight(BinaryenExpressionRef expr); +// Sets the right expression of a binary expression. +BINARYEN_API void BinaryenBinarySetRight(BinaryenExpressionRef expr, + BinaryenExpressionRef rightExpr); + +// Select +// Gets the expression becoming selected by a `select` expression if the +// condition turns out true. BINARYEN_API BinaryenExpressionRef BinaryenSelectGetIfTrue(BinaryenExpressionRef expr); +// Sets the expression becoming selected by a `select` expression if the +// condition turns out true. +BINARYEN_API void BinaryenSelectSetIfTrue(BinaryenExpressionRef expr, + BinaryenExpressionRef ifTrueExpr); +// Gets the expression becoming selected by a `select` expression if the +// condition turns out false. BINARYEN_API BinaryenExpressionRef BinaryenSelectGetIfFalse(BinaryenExpressionRef expr); +// Sets the expression becoming selected by a `select` expression if the +// condition turns out false. +BINARYEN_API void BinaryenSelectSetIfFalse(BinaryenExpressionRef expr, + BinaryenExpressionRef ifFalseExpr); +// Gets the condition expression of a `select` expression. BINARYEN_API BinaryenExpressionRef BinaryenSelectGetCondition(BinaryenExpressionRef expr); +// Sets the condition expression of a `select` expression. +BINARYEN_API void BinaryenSelectSetCondition(BinaryenExpressionRef expr, + BinaryenExpressionRef condExpr); + +// Drop +// Gets the value expression being dropped by a `drop` expression. BINARYEN_API BinaryenExpressionRef BinaryenDropGetValue(BinaryenExpressionRef expr); +// Sets the value expression being dropped by a `drop` expression. +BINARYEN_API void BinaryenDropSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr); +// Return + +// Gets the value expression, if any, being returned by a `return` expression. BINARYEN_API BinaryenExpressionRef BinaryenReturnGetValue(BinaryenExpressionRef expr); +// Sets the value expression, if any, being returned by a `return` expression. +BINARYEN_API void BinaryenReturnSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr); + +// AtomicRMW +// Gets the operation being performed by an atomic read-modify-write expression. BINARYEN_API BinaryenOp BinaryenAtomicRMWGetOp(BinaryenExpressionRef expr); +// Sets the operation being performed by an atomic read-modify-write expression. +BINARYEN_API void BinaryenAtomicRMWSetOp(BinaryenExpressionRef expr, + BinaryenOp op); +// Gets the number of bytes affected by an atomic read-modify-write expression. BINARYEN_API uint32_t BinaryenAtomicRMWGetBytes(BinaryenExpressionRef expr); +// Sets the number of bytes affected by an atomic read-modify-write expression. +BINARYEN_API void BinaryenAtomicRMWSetBytes(BinaryenExpressionRef expr, + uint32_t bytes); +// Gets the constant offset of an atomic read-modify-write expression. BINARYEN_API uint32_t BinaryenAtomicRMWGetOffset(BinaryenExpressionRef expr); +// Sets the constant offset of an atomic read-modify-write expression. +BINARYEN_API void BinaryenAtomicRMWSetOffset(BinaryenExpressionRef expr, + uint32_t offset); +// Gets the pointer expression of an atomic read-modify-write expression. BINARYEN_API BinaryenExpressionRef BinaryenAtomicRMWGetPtr(BinaryenExpressionRef expr); +// Sets the pointer expression of an atomic read-modify-write expression. +BINARYEN_API void BinaryenAtomicRMWSetPtr(BinaryenExpressionRef expr, + BinaryenExpressionRef ptrExpr); +// Gets the value expression of an atomic read-modify-write expression. BINARYEN_API BinaryenExpressionRef BinaryenAtomicRMWGetValue(BinaryenExpressionRef expr); +// Sets the value expression of an atomic read-modify-write expression. +BINARYEN_API void BinaryenAtomicRMWSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr); + +// AtomicCmpxchg +// Gets the number of bytes affected by an atomic compare and exchange +// expression. BINARYEN_API uint32_t BinaryenAtomicCmpxchgGetBytes(BinaryenExpressionRef expr); +// Sets the number of bytes affected by an atomic compare and exchange +// expression. +BINARYEN_API void BinaryenAtomicCmpxchgSetBytes(BinaryenExpressionRef expr, + uint32_t bytes); +// Gets the constant offset of an atomic compare and exchange expression. BINARYEN_API uint32_t BinaryenAtomicCmpxchgGetOffset(BinaryenExpressionRef expr); +// Sets the constant offset of an atomic compare and exchange expression. +BINARYEN_API void BinaryenAtomicCmpxchgSetOffset(BinaryenExpressionRef expr, + uint32_t offset); +// Gets the pointer expression of an atomic compare and exchange expression. BINARYEN_API BinaryenExpressionRef BinaryenAtomicCmpxchgGetPtr(BinaryenExpressionRef expr); +// Sets the pointer expression of an atomic compare and exchange expression. +BINARYEN_API void BinaryenAtomicCmpxchgSetPtr(BinaryenExpressionRef expr, + BinaryenExpressionRef ptrExpr); +// Gets the expression representing the expected value of an atomic compare and +// exchange expression. BINARYEN_API BinaryenExpressionRef BinaryenAtomicCmpxchgGetExpected(BinaryenExpressionRef expr); +// Sets the expression representing the expected value of an atomic compare and +// exchange expression. +BINARYEN_API void +BinaryenAtomicCmpxchgSetExpected(BinaryenExpressionRef expr, + BinaryenExpressionRef expectedExpr); +// Gets the replacement expression of an atomic compare and exchange expression. BINARYEN_API BinaryenExpressionRef BinaryenAtomicCmpxchgGetReplacement(BinaryenExpressionRef expr); +// Sets the replacement expression of an atomic compare and exchange expression. +BINARYEN_API void +BinaryenAtomicCmpxchgSetReplacement(BinaryenExpressionRef expr, + BinaryenExpressionRef replacementExpr); +// AtomicWait + +// Gets the pointer expression of an `memory.atomic.wait` expression. BINARYEN_API BinaryenExpressionRef BinaryenAtomicWaitGetPtr(BinaryenExpressionRef expr); +// Sets the pointer expression of an `memory.atomic.wait` expression. +BINARYEN_API void BinaryenAtomicWaitSetPtr(BinaryenExpressionRef expr, + BinaryenExpressionRef ptrExpr); +// Gets the expression representing the expected value of an +// `memory.atomic.wait` expression. BINARYEN_API BinaryenExpressionRef BinaryenAtomicWaitGetExpected(BinaryenExpressionRef expr); +// Sets the expression representing the expected value of an +// `memory.atomic.wait` expression. +BINARYEN_API void +BinaryenAtomicWaitSetExpected(BinaryenExpressionRef expr, + BinaryenExpressionRef expectedExpr); +// Gets the timeout expression of an `memory.atomic.wait` expression. BINARYEN_API BinaryenExpressionRef BinaryenAtomicWaitGetTimeout(BinaryenExpressionRef expr); +// Sets the timeout expression of an `memory.atomic.wait` expression. +BINARYEN_API void +BinaryenAtomicWaitSetTimeout(BinaryenExpressionRef expr, + BinaryenExpressionRef timeoutExpr); +// Gets the expected type of an `memory.atomic.wait` expression. BINARYEN_API BinaryenType BinaryenAtomicWaitGetExpectedType(BinaryenExpressionRef expr); +// Sets the expected type of an `memory.atomic.wait` expression. +BINARYEN_API void BinaryenAtomicWaitSetExpectedType(BinaryenExpressionRef expr, + BinaryenType expectedType); + +// AtomicNotify +// Gets the pointer expression of an `memory.atomic.notify` expression. BINARYEN_API BinaryenExpressionRef BinaryenAtomicNotifyGetPtr(BinaryenExpressionRef expr); +// Sets the pointer expression of an `memory.atomic.notify` expression. +BINARYEN_API void BinaryenAtomicNotifySetPtr(BinaryenExpressionRef expr, + BinaryenExpressionRef ptrExpr); +// Gets the notify count expression of an `memory.atomic.notify` expression. BINARYEN_API BinaryenExpressionRef BinaryenAtomicNotifyGetNotifyCount(BinaryenExpressionRef expr); +// Sets the notify count expression of an `memory.atomic.notify` expression. +BINARYEN_API void +BinaryenAtomicNotifySetNotifyCount(BinaryenExpressionRef expr, + BinaryenExpressionRef notifyCountExpr); + +// AtomicFence +// Gets the order of an `atomic.fence` expression. BINARYEN_API uint8_t BinaryenAtomicFenceGetOrder(BinaryenExpressionRef expr); +// Sets the order of an `atomic.fence` expression. +BINARYEN_API void BinaryenAtomicFenceSetOrder(BinaryenExpressionRef expr, + uint8_t order); +// SIMDExtract + +// Gets the operation being performed by a SIMD extract expression. BINARYEN_API BinaryenOp BinaryenSIMDExtractGetOp(BinaryenExpressionRef expr); +// Sets the operation being performed by a SIMD extract expression. +BINARYEN_API void BinaryenSIMDExtractSetOp(BinaryenExpressionRef expr, + BinaryenOp op); +// Gets the vector expression a SIMD extract expression extracts from. BINARYEN_API BinaryenExpressionRef BinaryenSIMDExtractGetVec(BinaryenExpressionRef expr); +// Sets the vector expression a SIMD extract expression extracts from. +BINARYEN_API void BinaryenSIMDExtractSetVec(BinaryenExpressionRef expr, + BinaryenExpressionRef vecExpr); +// Gets the index of the extracted lane of a SIMD extract expression. BINARYEN_API uint8_t BinaryenSIMDExtractGetIndex(BinaryenExpressionRef expr); +// Sets the index of the extracted lane of a SIMD extract expression. +BINARYEN_API void BinaryenSIMDExtractSetIndex(BinaryenExpressionRef expr, + uint8_t index); + +// SIMDReplace +// Gets the operation being performed by a SIMD replace expression. BINARYEN_API BinaryenOp BinaryenSIMDReplaceGetOp(BinaryenExpressionRef expr); +// Sets the operation being performed by a SIMD replace expression. +BINARYEN_API void BinaryenSIMDReplaceSetOp(BinaryenExpressionRef expr, + BinaryenOp op); +// Gets the vector expression a SIMD replace expression replaces in. BINARYEN_API BinaryenExpressionRef BinaryenSIMDReplaceGetVec(BinaryenExpressionRef expr); +// Sets the vector expression a SIMD replace expression replaces in. +BINARYEN_API void BinaryenSIMDReplaceSetVec(BinaryenExpressionRef expr, + BinaryenExpressionRef vecExpr); +// Gets the index of the replaced lane of a SIMD replace expression. BINARYEN_API uint8_t BinaryenSIMDReplaceGetIndex(BinaryenExpressionRef expr); +// Sets the index of the replaced lane of a SIMD replace expression. +BINARYEN_API void BinaryenSIMDReplaceSetIndex(BinaryenExpressionRef expr, + uint8_t index); +// Gets the value expression a SIMD replace expression replaces with. BINARYEN_API BinaryenExpressionRef BinaryenSIMDReplaceGetValue(BinaryenExpressionRef expr); +// Sets the value expression a SIMD replace expression replaces with. +BINARYEN_API void BinaryenSIMDReplaceSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr); + +// SIMDShuffle +// Gets the left expression of a SIMD shuffle expression. BINARYEN_API BinaryenExpressionRef BinaryenSIMDShuffleGetLeft(BinaryenExpressionRef expr); +// Sets the left expression of a SIMD shuffle expression. +BINARYEN_API void BinaryenSIMDShuffleSetLeft(BinaryenExpressionRef expr, + BinaryenExpressionRef leftExpr); +// Gets the right expression of a SIMD shuffle expression. BINARYEN_API BinaryenExpressionRef BinaryenSIMDShuffleGetRight(BinaryenExpressionRef expr); +// Sets the right expression of a SIMD shuffle expression. +BINARYEN_API void BinaryenSIMDShuffleSetRight(BinaryenExpressionRef expr, + BinaryenExpressionRef rightExpr); +// Gets the 128-bit mask of a SIMD shuffle expression. BINARYEN_API void BinaryenSIMDShuffleGetMask(BinaryenExpressionRef expr, uint8_t* mask); +// Sets the 128-bit mask of a SIMD shuffle expression. +BINARYEN_API void BinaryenSIMDShuffleSetMask(BinaryenExpressionRef expr, + const uint8_t mask[16]); +// SIMDTernary + +// Gets the operation being performed by a SIMD ternary expression. BINARYEN_API BinaryenOp BinaryenSIMDTernaryGetOp(BinaryenExpressionRef expr); +// Sets the operation being performed by a SIMD ternary expression. +BINARYEN_API void BinaryenSIMDTernarySetOp(BinaryenExpressionRef expr, + BinaryenOp op); +// Gets the first operand expression of a SIMD ternary expression. BINARYEN_API BinaryenExpressionRef BinaryenSIMDTernaryGetA(BinaryenExpressionRef expr); +// Sets the first operand expression of a SIMD ternary expression. +BINARYEN_API void BinaryenSIMDTernarySetA(BinaryenExpressionRef expr, + BinaryenExpressionRef aExpr); +// Gets the second operand expression of a SIMD ternary expression. BINARYEN_API BinaryenExpressionRef BinaryenSIMDTernaryGetB(BinaryenExpressionRef expr); +// Sets the second operand expression of a SIMD ternary expression. +BINARYEN_API void BinaryenSIMDTernarySetB(BinaryenExpressionRef expr, + BinaryenExpressionRef bExpr); +// Gets the third operand expression of a SIMD ternary expression. BINARYEN_API BinaryenExpressionRef BinaryenSIMDTernaryGetC(BinaryenExpressionRef expr); +// Sets the third operand expression of a SIMD ternary expression. +BINARYEN_API void BinaryenSIMDTernarySetC(BinaryenExpressionRef expr, + BinaryenExpressionRef cExpr); + +// SIMDShift +// Gets the operation being performed by a SIMD shift expression. BINARYEN_API BinaryenOp BinaryenSIMDShiftGetOp(BinaryenExpressionRef expr); +// Sets the operation being performed by a SIMD shift expression. +BINARYEN_API void BinaryenSIMDShiftSetOp(BinaryenExpressionRef expr, + BinaryenOp op); +// Gets the expression being shifted by a SIMD shift expression. BINARYEN_API BinaryenExpressionRef BinaryenSIMDShiftGetVec(BinaryenExpressionRef expr); +// Sets the expression being shifted by a SIMD shift expression. +BINARYEN_API void BinaryenSIMDShiftSetVec(BinaryenExpressionRef expr, + BinaryenExpressionRef vecExpr); +// Gets the expression representing the shift of a SIMD shift expression. BINARYEN_API BinaryenExpressionRef BinaryenSIMDShiftGetShift(BinaryenExpressionRef expr); +// Sets the expression representing the shift of a SIMD shift expression. +BINARYEN_API void BinaryenSIMDShiftSetShift(BinaryenExpressionRef expr, + BinaryenExpressionRef shiftExpr); +// SIMDLoad + +// Gets the operation being performed by a SIMD load expression. BINARYEN_API BinaryenOp BinaryenSIMDLoadGetOp(BinaryenExpressionRef expr); +// Sets the operation being performed by a SIMD load expression. +BINARYEN_API void BinaryenSIMDLoadSetOp(BinaryenExpressionRef expr, + BinaryenOp op); +// Gets the constant offset of a SIMD load expression. BINARYEN_API uint32_t BinaryenSIMDLoadGetOffset(BinaryenExpressionRef expr); +// Sets the constant offset of a SIMD load expression. +BINARYEN_API void BinaryenSIMDLoadSetOffset(BinaryenExpressionRef expr, + uint32_t offset); +// Gets the byte alignment of a SIMD load expression. BINARYEN_API uint32_t BinaryenSIMDLoadGetAlign(BinaryenExpressionRef expr); +// Sets the byte alignment of a SIMD load expression. +BINARYEN_API void BinaryenSIMDLoadSetAlign(BinaryenExpressionRef expr, + uint32_t align); +// Gets the pointer expression of a SIMD load expression. BINARYEN_API BinaryenExpressionRef BinaryenSIMDLoadGetPtr(BinaryenExpressionRef expr); +// Sets the pointer expression of a SIMD load expression. +BINARYEN_API void BinaryenSIMDLoadSetPtr(BinaryenExpressionRef expr, + BinaryenExpressionRef ptrExpr); + +// MemoryInit +// Gets the index of the segment being initialized by a `memory.init` +// expression. BINARYEN_API uint32_t BinaryenMemoryInitGetSegment(BinaryenExpressionRef expr); +// Sets the index of the segment being initialized by a `memory.init` +// expression. +BINARYEN_API void BinaryenMemoryInitSetSegment(BinaryenExpressionRef expr, + uint32_t segmentIndex); +// Gets the destination expression of a `memory.init` expression. BINARYEN_API BinaryenExpressionRef BinaryenMemoryInitGetDest(BinaryenExpressionRef expr); +// Sets the destination expression of a `memory.init` expression. +BINARYEN_API void BinaryenMemoryInitSetDest(BinaryenExpressionRef expr, + BinaryenExpressionRef destExpr); +// Gets the offset expression of a `memory.init` expression. BINARYEN_API BinaryenExpressionRef BinaryenMemoryInitGetOffset(BinaryenExpressionRef expr); +// Sets the offset expression of a `memory.init` expression. +BINARYEN_API void BinaryenMemoryInitSetOffset(BinaryenExpressionRef expr, + BinaryenExpressionRef offsetExpr); +// Gets the size expression of a `memory.init` expression. BINARYEN_API BinaryenExpressionRef BinaryenMemoryInitGetSize(BinaryenExpressionRef expr); +// Sets the size expression of a `memory.init` expression. +BINARYEN_API void BinaryenMemoryInitSetSize(BinaryenExpressionRef expr, + BinaryenExpressionRef sizeExpr); +// DataDrop + +// Gets the index of the segment being dropped by a `memory.drop` expression. BINARYEN_API uint32_t BinaryenDataDropGetSegment(BinaryenExpressionRef expr); +// Sets the index of the segment being dropped by a `memory.drop` expression. +BINARYEN_API void BinaryenDataDropSetSegment(BinaryenExpressionRef expr, + uint32_t segmentIndex); + +// MemoryCopy +// Gets the destination expression of a `memory.copy` expression. BINARYEN_API BinaryenExpressionRef BinaryenMemoryCopyGetDest(BinaryenExpressionRef expr); +// Sets the destination expression of a `memory.copy` expression. +BINARYEN_API void BinaryenMemoryCopySetDest(BinaryenExpressionRef expr, + BinaryenExpressionRef destExpr); +// Gets the source expression of a `memory.copy` expression. BINARYEN_API BinaryenExpressionRef BinaryenMemoryCopyGetSource(BinaryenExpressionRef expr); +// Sets the source expression of a `memory.copy` expression. +BINARYEN_API void BinaryenMemoryCopySetSource(BinaryenExpressionRef expr, + BinaryenExpressionRef sourceExpr); +// Gets the size expression (number of bytes copied) of a `memory.copy` +// expression. BINARYEN_API BinaryenExpressionRef BinaryenMemoryCopyGetSize(BinaryenExpressionRef expr); +// Sets the size expression (number of bytes copied) of a `memory.copy` +// expression. +BINARYEN_API void BinaryenMemoryCopySetSize(BinaryenExpressionRef expr, + BinaryenExpressionRef sizeExpr); + +// MemoryFill +// Gets the destination expression of a `memory.fill` expression. BINARYEN_API BinaryenExpressionRef BinaryenMemoryFillGetDest(BinaryenExpressionRef expr); +// Sets the destination expression of a `memory.fill` expression. +BINARYEN_API void BinaryenMemoryFillSetDest(BinaryenExpressionRef expr, + BinaryenExpressionRef destExpr); +// Gets the value expression of a `memory.fill` expression. BINARYEN_API BinaryenExpressionRef BinaryenMemoryFillGetValue(BinaryenExpressionRef expr); +// Sets the value expression of a `memory.fill` expression. +BINARYEN_API void BinaryenMemoryFillSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr); +// Gets the size expression (number of bytes filled) of a `memory.fill` +// expression. BINARYEN_API BinaryenExpressionRef BinaryenMemoryFillGetSize(BinaryenExpressionRef expr); +// Sets the size expression (number of bytes filled) of a `memory.fill` +// expression. +BINARYEN_API void BinaryenMemoryFillSetSize(BinaryenExpressionRef expr, + BinaryenExpressionRef sizeExpr); +// RefIsNull + +// Gets the value expression tested to be null of a `ref.is_null` expression. BINARYEN_API BinaryenExpressionRef BinaryenRefIsNullGetValue(BinaryenExpressionRef expr); +// Sets the value expression tested to be null of a `ref.is_null` expression. +BINARYEN_API void BinaryenRefIsNullSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr); + +// RefFunc +// Gets the name of the function being wrapped by a `ref.func` expression. BINARYEN_API const char* BinaryenRefFuncGetFunc(BinaryenExpressionRef expr); +// Sets the name of the function being wrapped by a `ref.func` expression. +BINARYEN_API void BinaryenRefFuncSetFunc(BinaryenExpressionRef expr, + const char* funcName); + +// RefEq +// Gets the left expression of a `ref.eq` expression. +BINARYEN_API BinaryenExpressionRef +BinaryenRefEqGetLeft(BinaryenExpressionRef expr); +// Sets the left expression of a `ref.eq` expression. +BINARYEN_API void BinaryenRefEqSetLeft(BinaryenExpressionRef expr, + BinaryenExpressionRef left); +// Gets the right expression of a `ref.eq` expression. +BINARYEN_API BinaryenExpressionRef +BinaryenRefEqGetRight(BinaryenExpressionRef expr); +// Sets the right expression of a `ref.eq` expression. +BINARYEN_API void BinaryenRefEqSetRight(BinaryenExpressionRef expr, + BinaryenExpressionRef right); + +// Try + +// Gets the body expression of a `try` expression. BINARYEN_API BinaryenExpressionRef BinaryenTryGetBody(BinaryenExpressionRef expr); +// Sets the body expression of a `try` expression. +BINARYEN_API void BinaryenTrySetBody(BinaryenExpressionRef expr, + BinaryenExpressionRef bodyExpr); +// Gets the catch body expression of a `try` expression. BINARYEN_API BinaryenExpressionRef BinaryenTryGetCatchBody(BinaryenExpressionRef expr); +// Sets the catch body expression of a `try` expression. +BINARYEN_API void BinaryenTrySetCatchBody(BinaryenExpressionRef expr, + BinaryenExpressionRef catchBodyExpr); + +// Throw +// Gets the name of the event being thrown by a `throw` expression. BINARYEN_API const char* BinaryenThrowGetEvent(BinaryenExpressionRef expr); -BINARYEN_API BinaryenExpressionRef -BinaryenThrowGetOperand(BinaryenExpressionRef expr, BinaryenIndex index); +// Sets the name of the event being thrown by a `throw` expression. +BINARYEN_API void BinaryenThrowSetEvent(BinaryenExpressionRef expr, + const char* eventName); +// Gets the number of operands of a `throw` expression. BINARYEN_API BinaryenIndex BinaryenThrowGetNumOperands(BinaryenExpressionRef expr); +// Gets the operand at the specified index of a `throw` expression. +BINARYEN_API BinaryenExpressionRef +BinaryenThrowGetOperandAt(BinaryenExpressionRef expr, BinaryenIndex index); +// Sets the operand at the specified index of a `throw` expression. +BINARYEN_API void BinaryenThrowSetOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr); +// Appends an operand expression to a `throw` expression, returning its +// insertion index. +BINARYEN_API BinaryenIndex BinaryenThrowAppendOperand( + BinaryenExpressionRef expr, BinaryenExpressionRef operandExpr); +// Inserts an operand expression at the specified index of a `throw` expression, +// moving existing operands including the one previously at that index one index +// up. +BINARYEN_API void +BinaryenThrowInsertOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr); +// Removes the operand expression at the specified index of a `throw` +// expression, moving all subsequent operands one index down. Returns the +// operand expression. +BINARYEN_API BinaryenExpressionRef +BinaryenThrowRemoveOperandAt(BinaryenExpressionRef expr, BinaryenIndex index); + +// Rethrow +// Gets the exception reference expression of a `rethrow` expression. BINARYEN_API BinaryenExpressionRef BinaryenRethrowGetExnref(BinaryenExpressionRef expr); +// Sets the exception reference expression of a `rethrow` expression. +BINARYEN_API void BinaryenRethrowSetExnref(BinaryenExpressionRef expr, + BinaryenExpressionRef exnrefExpr); +// BrOnExn + +// Gets the name of the event triggering a `br_on_exn` expression. BINARYEN_API const char* BinaryenBrOnExnGetEvent(BinaryenExpressionRef expr); +// Sets the name of the event triggering a `br_on_exn` expression. +BINARYEN_API void BinaryenBrOnExnSetEvent(BinaryenExpressionRef expr, + const char* eventName); +// Gets the name (target label) of a `br_on_exn` expression. BINARYEN_API const char* BinaryenBrOnExnGetName(BinaryenExpressionRef expr); +// Sets the name (target label) of a `br_on_exn` expression. +BINARYEN_API void BinaryenBrOnExnSetName(BinaryenExpressionRef expr, + const char* name); +// Gets the expression reference expression of a `br_on_exn` expression. BINARYEN_API BinaryenExpressionRef BinaryenBrOnExnGetExnref(BinaryenExpressionRef expr); +// Sets the expression reference expression of a `br_on_exn` expression. +BINARYEN_API void BinaryenBrOnExnSetExnref(BinaryenExpressionRef expr, + BinaryenExpressionRef exnrefExpr); + +// TupleMake + +// Gets the number of operands of a `tuple.make` expression. +BINARYEN_API BinaryenIndex +BinaryenTupleMakeGetNumOperands(BinaryenExpressionRef expr); +// Gets the operand at the specified index of a `tuple.make` expression. +BINARYEN_API BinaryenExpressionRef +BinaryenTupleMakeGetOperandAt(BinaryenExpressionRef expr, BinaryenIndex index); +// Sets the operand at the specified index of a `tuple.make` expression. +BINARYEN_API void +BinaryenTupleMakeSetOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr); +// Appends an operand expression to a `tuple.make` expression, returning its +// insertion index. +BINARYEN_API BinaryenIndex BinaryenTupleMakeAppendOperand( + BinaryenExpressionRef expr, BinaryenExpressionRef operandExpr); +// Inserts an operand expression at the specified index of a `tuple.make` +// expression, moving existing operands including the one previously at that +// index one index up. +BINARYEN_API void +BinaryenTupleMakeInsertOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr); +// Removes the operand expression at the specified index of a `tuple.make` +// expression, moving all subsequent operands one index down. Returns the +// operand expression. +BINARYEN_API BinaryenExpressionRef BinaryenTupleMakeRemoveOperandAt( + BinaryenExpressionRef expr, BinaryenIndex index); + +// TupleExtract + +// Gets the tuple extracted from of a `tuple.extract` expression. +BINARYEN_API BinaryenExpressionRef +BinaryenTupleExtractGetTuple(BinaryenExpressionRef expr); +// Sets the tuple extracted from of a `tuple.extract` expression. +BINARYEN_API void BinaryenTupleExtractSetTuple(BinaryenExpressionRef expr, + BinaryenExpressionRef tupleExpr); +// Gets the index extracted at of a `tuple.extract` expression. +BINARYEN_API BinaryenIndex +BinaryenTupleExtractGetIndex(BinaryenExpressionRef expr); +// Sets the index extracted at of a `tuple.extract` expression. +BINARYEN_API void BinaryenTupleExtractSetIndex(BinaryenExpressionRef expr, + BinaryenIndex index); +// I31New + +// Gets the value expression of an `i31.new` expression. BINARYEN_API BinaryenExpressionRef -BinaryenPushGetValue(BinaryenExpressionRef expr); +BinaryenI31NewGetValue(BinaryenExpressionRef expr); +// Sets the value expression of an `i31.new` expression. +BINARYEN_API void BinaryenI31NewSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr); + +// I31Get + +// Gets the i31 expression of an `i31.get` expression. +BINARYEN_API BinaryenExpressionRef +BinaryenI31GetGetI31(BinaryenExpressionRef expr); +// Sets the i31 expression of an `i31.get` expression. +BINARYEN_API void BinaryenI31GetSetI31(BinaryenExpressionRef expr, + BinaryenExpressionRef i31Expr); +// Gets whether an `i31.get` expression returns a signed value (`_s`). +BINARYEN_API int BinaryenI31GetIsSigned(BinaryenExpressionRef expr); +// Sets whether an `i31.get` expression returns a signed value (`_s`). +BINARYEN_API void BinaryenI31GetSetSigned(BinaryenExpressionRef expr, + int signed_); // Functions @@ -1094,7 +1871,8 @@ BinaryenType* varTypes, BinaryenIndex numVarTypes, BinaryenExpressionRef body); -// Gets a function reference by name. +// Gets a function reference by name. Returns NULL if the function does not +// exist. BINARYEN_API BinaryenFunctionRef BinaryenGetFunction(BinaryenModuleRef module, const char* name); // Removes a function by name. @@ -1102,10 +1880,10 @@ const char* name); // Gets the number of functions in the module. -BINARYEN_API uint32_t BinaryenGetNumFunctions(BinaryenModuleRef module); -// Get function pointer from its index. +BINARYEN_API BinaryenIndex BinaryenGetNumFunctions(BinaryenModuleRef module); +// Gets the function at the specified index. BINARYEN_API BinaryenFunctionRef -BinaryenGetFunctionByIndex(BinaryenModuleRef module, BinaryenIndex id); +BinaryenGetFunctionByIndex(BinaryenModuleRef module, BinaryenIndex index); // Imports @@ -1145,47 +1923,72 @@ WASM_DEPRECATED BinaryenExportRef BinaryenAddExport(BinaryenModuleRef module, const char* internalName, const char* externalName); +// Adds a function export to the module. BINARYEN_API BinaryenExportRef BinaryenAddFunctionExport( BinaryenModuleRef module, const char* internalName, const char* externalName); +// Adds a table export to the module. BINARYEN_API BinaryenExportRef BinaryenAddTableExport(BinaryenModuleRef module, const char* internalName, const char* externalName); +// Adds a memory export to the module. BINARYEN_API BinaryenExportRef BinaryenAddMemoryExport( BinaryenModuleRef module, const char* internalName, const char* externalName); +// Adds a global export to the module. BINARYEN_API BinaryenExportRef BinaryenAddGlobalExport( BinaryenModuleRef module, const char* internalName, const char* externalName); +// Adds an event export to the module. BINARYEN_API BinaryenExportRef BinaryenAddEventExport(BinaryenModuleRef module, const char* internalName, const char* externalName); +// Gets an export reference by external name. Returns NULL if the export does +// not exist. +BINARYEN_API BinaryenExportRef BinaryenGetExport(BinaryenModuleRef module, + const char* externalName); +// Removes an export by external name. BINARYEN_API void BinaryenRemoveExport(BinaryenModuleRef module, const char* externalName); +// Gets the number of exports in the module. +BINARYEN_API BinaryenIndex BinaryenGetNumExports(BinaryenModuleRef module); +// Gets the export at the specified index. +BINARYEN_API BinaryenExportRef +BinaryenGetExportByIndex(BinaryenModuleRef module, BinaryenIndex index); // Globals BINARYEN_REF(Global); +// Adds a global to the module. BINARYEN_API BinaryenGlobalRef BinaryenAddGlobal(BinaryenModuleRef module, const char* name, BinaryenType type, int8_t mutable_, BinaryenExpressionRef init); -// Gets a global reference by name. +// Gets a global reference by name. Returns NULL if the global does not exist. BINARYEN_API BinaryenGlobalRef BinaryenGetGlobal(BinaryenModuleRef module, const char* name); +// Removes a global by name. BINARYEN_API void BinaryenRemoveGlobal(BinaryenModuleRef module, const char* name); +// Gets the number of globals in the module. +BINARYEN_API BinaryenIndex BinaryenGetNumGlobals(BinaryenModuleRef module); +// Gets the global at the specified index. +BINARYEN_API BinaryenGlobalRef +BinaryenGetGlobalByIndex(BinaryenModuleRef module, BinaryenIndex index); // Events BINARYEN_REF(Event); +// Adds an event to the module. BINARYEN_API BinaryenEventRef BinaryenAddEvent(BinaryenModuleRef module, const char* name, uint32_t attribute, BinaryenType params, BinaryenType results); +// Gets an event reference by name. Returns NULL if the event does not exist. BINARYEN_API BinaryenEventRef BinaryenGetEvent(BinaryenModuleRef module, const char* name); +// Removes an event by name. BINARYEN_API void BinaryenRemoveEvent(BinaryenModuleRef module, const char* name); @@ -1302,6 +2105,16 @@ // when optimizing. Applies to all modules, globally. BINARYEN_API void BinaryenSetLowMemoryUnused(int on); +// Gets whether fast math optimizations are enabled, ignoring for example +// corner cases of floating-point math like NaN changes. +// Applies to all modules, globally. +BINARYEN_API int BinaryenGetFastMath(void); + +// Enables or disables fast math optimizations, ignoring for example +// corner cases of floating-point math like NaN changes. +// Applies to all modules, globally. +BINARYEN_API void BinaryenSetFastMath(int value); + // Gets the value of the specified arbitrary pass argument. // Applies to all modules, globally. BINARYEN_API const char* BinaryenGetPassArgument(const char* name); @@ -1338,6 +2151,14 @@ // Applies to all modules, globally. BINARYEN_API void BinaryenSetOneCallerInlineMaxSize(BinaryenIndex size); +// Gets whether functions with loops are allowed to be inlined. +// Applies to all modules, globally. +BINARYEN_API int BinaryenGetAllowInliningFunctionsWithLoops(void); + +// Sets whether functions with loops are allowed to be inlined. +// Applies to all modules, globally. +BINARYEN_API void BinaryenSetAllowInliningFunctionsWithLoops(int enabled); + // Runs the specified passes on the module. Uses the currently set global // optimize and shrink level. BINARYEN_API void BinaryenModuleRunPasses(BinaryenModuleRef module, @@ -1440,9 +2261,25 @@ // specified `Function`. BINARYEN_API BinaryenType BinaryenFunctionGetVar(BinaryenFunctionRef func, BinaryenIndex index); +// Gets the number of locals within the specified function. Includes parameters. +BINARYEN_API BinaryenIndex +BinaryenFunctionGetNumLocals(BinaryenFunctionRef func); +// Tests if the local at the specified index has a name. +BINARYEN_API int BinaryenFunctionHasLocalName(BinaryenFunctionRef func, + BinaryenIndex index); +// Gets the name of the local at the specified index. +BINARYEN_API const char* BinaryenFunctionGetLocalName(BinaryenFunctionRef func, + BinaryenIndex index); +// Sets the name of the local at the specified index. +BINARYEN_API void BinaryenFunctionSetLocalName(BinaryenFunctionRef func, + BinaryenIndex index, + const char* name); // Gets the body of the specified `Function`. BINARYEN_API BinaryenExpressionRef BinaryenFunctionGetBody(BinaryenFunctionRef func); +// Sets the body of the specified `Function`. +BINARYEN_API void BinaryenFunctionSetBody(BinaryenFunctionRef func, + BinaryenExpressionRef body); // Runs the standard optimization passes on the function. Uses the currently set // global optimize and shrink level. @@ -1519,11 +2356,6 @@ BINARYEN_API const char* BinaryenExportGetName(BinaryenExportRef export_); // Gets the internal name of the specified export. BINARYEN_API const char* BinaryenExportGetValue(BinaryenExportRef export_); -// Gets the number of exports in the module. -BINARYEN_API uint32_t BinaryenGetNumExports(BinaryenModuleRef module); -// Get export pointer from its index. -BINARYEN_API BinaryenExportRef -BinaryenGetExportByIndex(BinaryenModuleRef module, BinaryenIndex id); // // ========= Custom sections ========= @@ -1552,6 +2384,7 @@ BINARYEN_API BinaryenSideEffects BinaryenSideEffectImplicitTrap(void); BINARYEN_API BinaryenSideEffects BinaryenSideEffectIsAtomic(void); BINARYEN_API BinaryenSideEffects BinaryenSideEffectThrows(void); +BINARYEN_API BinaryenSideEffects BinaryenSideEffectDanglingPop(void); BINARYEN_API BinaryenSideEffects BinaryenSideEffectAny(void); BINARYEN_API BinaryenSideEffects BinaryenExpressionGetSideEffects( @@ -1618,27 +2451,74 @@ RelooperRef relooper, RelooperBlockRef entry, BinaryenIndex labelHelper); // -// ========= Other APIs ========= +// ========= ExpressionRunner ========== // -// Sets whether API tracing is on or off. It is off by default. When on, each -// call to an API method will print out C code equivalent to it, which is useful -// for auto-generating standalone testcases from projects using the API. When -// calling this to turn on tracing, the prelude of the full program is printed, -// and when calling it to turn it off, the ending of the program is printed, -// giving you the full compilable testcase. -// TODO: compile-time option to enable/disable this feature entirely at build -// time? -BINARYEN_API void BinaryenSetAPITracing(int on); +#ifdef __cplusplus +namespace wasm { +class CExpressionRunner; +} // namespace wasm +typedef class wasm::CExpressionRunner* ExpressionRunnerRef; +#else +typedef struct CExpressionRunner* ExpressionRunnerRef; +#endif + +typedef uint32_t ExpressionRunnerFlags; + +// By default, just evaluate the expression, i.e. all we want to know is whether +// it computes down to a concrete value, where it is not necessary to preserve +// side effects like those of a `local.tee`. +BINARYEN_API ExpressionRunnerFlags ExpressionRunnerFlagsDefault(); + +// Be very careful to preserve any side effects. For example, if we are +// intending to replace the expression with a constant afterwards, even if we +// can technically evaluate down to a constant, we still cannot replace the +// expression if it also sets a local, which must be preserved in this scenario +// so subsequent code keeps functioning. +BINARYEN_API ExpressionRunnerFlags ExpressionRunnerFlagsPreserveSideeffects(); + +// Traverse through function calls, attempting to compute their concrete value. +// Must not be used in function-parallel scenarios, where the called function +// might be concurrently modified, leading to undefined behavior. Traversing +// another function reuses all of this runner's flags. +BINARYEN_API ExpressionRunnerFlags ExpressionRunnerFlagsTraverseCalls(); + +// Creates an ExpressionRunner instance +BINARYEN_API ExpressionRunnerRef +ExpressionRunnerCreate(BinaryenModuleRef module, + ExpressionRunnerFlags flags, + BinaryenIndex maxDepth, + BinaryenIndex maxLoopIterations); + +// Sets a known local value to use. Order matters if expressions have side +// effects. For example, if the expression also sets a local, this side effect +// will also happen (not affected by any flags). Returns `true` if the +// expression actually evaluates to a constant. +BINARYEN_API int ExpressionRunnerSetLocalValue(ExpressionRunnerRef runner, + BinaryenIndex index, + BinaryenExpressionRef value); + +// Sets a known global value to use. Order matters if expressions have side +// effects. For example, if the expression also sets a local, this side effect +// will also happen (not affected by any flags). Returns `true` if the +// expression actually evaluates to a constant. +BINARYEN_API int ExpressionRunnerSetGlobalValue(ExpressionRunnerRef runner, + const char* name, + BinaryenExpressionRef value); + +// Runs the expression and returns the constant value expression it evaluates +// to, if any. Otherwise returns `NULL`. Also disposes the runner. +BINARYEN_API BinaryenExpressionRef ExpressionRunnerRunAndDispose( + ExpressionRunnerRef runner, BinaryenExpressionRef expr); // // ========= Utilities ========= // -// Enable or disable coloring for the WASM printer +// Enable or disable coloring for the Wasm printer BINARYEN_API void BinaryenSetColorsEnabled(int enabled); -// Query whether color is enable for the WASM printer +// Query whether color is enable for the Wasm printer BINARYEN_API int BinaryenAreColorsEnabled(); #ifdef __cplusplus } // extern "C" diff -Nru binaryen-91/src/cfg/CMakeLists.txt binaryen-99/src/cfg/CMakeLists.txt --- binaryen-91/src/cfg/CMakeLists.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/cfg/CMakeLists.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,4 +1,6 @@ +FILE(GLOB cfg_HEADERS *.h) set(cfg_SOURCES Relooper.cpp + ${cfg_HEADERS} ) add_library(cfg OBJECT ${cfg_SOURCES}) diff -Nru binaryen-91/src/cfg/Relooper.cpp binaryen-99/src/cfg/Relooper.cpp --- binaryen-91/src/cfg/Relooper.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/cfg/Relooper.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -140,25 +140,18 @@ // Block -Block::Block(wasm::Expression* CodeInit, wasm::Expression* SwitchConditionInit) - : Code(CodeInit), SwitchCondition(SwitchConditionInit), +Block::Block(Relooper* relooper, + wasm::Expression* CodeInit, + wasm::Expression* SwitchConditionInit) + : relooper(relooper), Code(CodeInit), SwitchCondition(SwitchConditionInit), IsCheckedMultipleEntry(false) {} -Block::~Block() { - for (auto& iter : ProcessedBranchesOut) { - delete iter.second; - } - for (auto& iter : BranchesOut) { - delete iter.second; - } -} - void Block::AddBranchTo(Block* Target, wasm::Expression* Condition, wasm::Expression* Code) { // cannot add more than one branch to the same target assert(!contains(BranchesOut, Target)); - BranchesOut[Target] = new Branch(Condition, Code); + BranchesOut[Target] = relooper->AddBranch(Condition, Code); } void Block::AddSwitchBranchTo(Block* Target, @@ -166,7 +159,7 @@ wasm::Expression* Code) { // cannot add more than one branch to the same target assert(!contains(BranchesOut, Target)); - BranchesOut[Target] = new Branch(std::move(Values), Code); + BranchesOut[Target] = relooper->AddBranch(std::move(Values), Code); } wasm::Expression* Block::Render(RelooperBuilder& Builder, bool InLoop) { @@ -486,18 +479,53 @@ ShapeIdCounter(0) { // block ID 0 is reserved for clearings } -Relooper::~Relooper() { - for (unsigned i = 0; i < Blocks.size(); i++) { - delete Blocks[i]; - } - for (unsigned i = 0; i < Shapes.size(); i++) { - delete Shapes[i]; - } +Block* Relooper::AddBlock(wasm::Expression* CodeInit, + wasm::Expression* SwitchConditionInit) { + + auto block = std::make_unique(this, CodeInit, SwitchConditionInit); + block->Id = BlockIdCounter++; + auto* blockPtr = block.get(); + Blocks.push_back(std::move(block)); + return blockPtr; +} + +Branch* Relooper::AddBranch(wasm::Expression* ConditionInit, + wasm::Expression* CodeInit) { + auto branch = std::make_unique(ConditionInit, CodeInit); + auto* branchPtr = branch.get(); + Branches.push_back(std::move(branch)); + return branchPtr; +} +Branch* Relooper::AddBranch(std::vector&& ValuesInit, + wasm::Expression* CodeInit) { + auto branch = std::make_unique(std::move(ValuesInit), CodeInit); + auto* branchPtr = branch.get(); + Branches.push_back(std::move(branch)); + return branchPtr; +} + +SimpleShape* Relooper::AddSimpleShape() { + auto shape = std::make_unique(); + shape->Id = ShapeIdCounter++; + auto* shapePtr = shape.get(); + Shapes.push_back(std::move(shape)); + return shapePtr; } -void Relooper::AddBlock(Block* New, int Id) { - New->Id = Id == -1 ? BlockIdCounter++ : Id; - Blocks.push_back(New); +MultipleShape* Relooper::AddMultipleShape() { + auto shape = std::make_unique(); + shape->Id = ShapeIdCounter++; + auto* shapePtr = shape.get(); + Shapes.push_back(std::move(shape)); + return shapePtr; +} + +LoopShape* Relooper::AddLoopShape() { + auto shape = std::make_unique(); + shape->Id = ShapeIdCounter++; + auto* shapePtr = shape.get(); + Shapes.push_back(std::move(shape)); + return shapePtr; } namespace { @@ -580,7 +608,7 @@ // We will be performing code comparisons, so do some basic canonicalization // to avoid things being unequal for silly reasons. void CanonicalizeCode() { - for (auto* Block : Parent->Blocks) { + for (auto& Block : Parent->Blocks) { Block->Code = Canonicalize(Block->Code); for (auto& iter : Block->BranchesOut) { auto* Branch = iter.second; @@ -595,7 +623,7 @@ // and there is no phi or switch to worry us, just skip through. bool SkipEmptyBlocks() { bool Worked = false; - for (auto* CurrBlock : Parent->Blocks) { + for (auto& CurrBlock : Parent->Blocks) { // Generate a new set of branches out TODO optimize BlockBranchMap NewBranchesOut; for (auto& iter : CurrBlock->BranchesOut) { @@ -653,7 +681,6 @@ NewBranchesOut[Replacement] = NextBranch; } } - // FIXME do we leak old unused Branches? CurrBlock->BranchesOut.swap(NewBranchesOut); } return Worked; @@ -664,13 +691,12 @@ // equivalent in their *contents*. bool MergeEquivalentBranches() { bool Worked = false; - for (auto* ParentBlock : Parent->Blocks) { + for (auto& ParentBlock : Parent->Blocks) { #if RELOOPER_OPTIMIZER_DEBUG std::cout << "at parent " << ParentBlock->Id << '\n'; #endif if (ParentBlock->BranchesOut.size() >= 2) { - std::unordered_map> - HashedBranchesOut; + std::unordered_map> HashedBranchesOut; std::vector BlocksToErase; for (auto& iter : ParentBlock->BranchesOut) { Block* CurrBlock = iter.first; @@ -723,20 +749,20 @@ bool Worked = false; // First, count predecessors. std::map NumPredecessors; - for (auto* CurrBlock : Parent->Blocks) { + for (auto& CurrBlock : Parent->Blocks) { for (auto& iter : CurrBlock->BranchesOut) { auto* NextBlock = iter.first; NumPredecessors[NextBlock]++; } } NumPredecessors[Entry]++; - for (auto* CurrBlock : Parent->Blocks) { + for (auto& CurrBlock : Parent->Blocks) { if (CurrBlock->BranchesOut.size() == 1) { auto iter = CurrBlock->BranchesOut.begin(); auto* NextBlock = iter->first; auto* NextBranch = iter->second; assert(NumPredecessors[NextBlock] > 0); - if (NextBlock != CurrBlock && NumPredecessors[NextBlock] == 1) { + if (NextBlock != CurrBlock.get() && NumPredecessors[NextBlock] == 1) { // Good to merge! wasm::Builder Builder(*Parent->Module); // Merge in code on the branch as well, if any. @@ -748,9 +774,6 @@ Builder.makeSequence(CurrBlock->Code, NextBlock->Code); // Use the next block's branching behavior CurrBlock->BranchesOut.swap(NextBlock->BranchesOut); - for (auto& iter : NextBlock->BranchesOut) { - delete iter.second; - } NextBlock->BranchesOut.clear(); CurrBlock->SwitchCondition = NextBlock->SwitchCondition; // The next block now has no predecessors. @@ -766,7 +789,7 @@ // no switch is needed. bool UnSwitch() { bool Worked = false; - for (auto* ParentBlock : Parent->Blocks) { + for (auto& ParentBlock : Parent->Blocks) { #if RELOOPER_OPTIMIZER_DEBUG std::cout << "un-switching at " << ParentBlock->Id << ' ' << !!ParentBlock->SwitchCondition << ' ' @@ -999,41 +1022,42 @@ // (like Shapes). Only partially hashes the branches out, no // recursion: hashes the branch infos, looks at raw pointers // for the blocks. - wasm::HashType Hash(Block* Curr) { - wasm::HashType Ret = wasm::ExpressionAnalyzer::hash(Curr->Code); - Ret = wasm::rehash(Ret, 1); + size_t Hash(Block* Curr) { + auto digest = wasm::ExpressionAnalyzer::hash(Curr->Code); + wasm::rehash(digest, uint8_t(1)); if (Curr->SwitchCondition) { - Ret = wasm::ExpressionAnalyzer::hash(Curr->SwitchCondition); + wasm::hash_combine(digest, + wasm::ExpressionAnalyzer::hash(Curr->SwitchCondition)); } - Ret = wasm::rehash(Ret, 2); + wasm::rehash(digest, uint8_t(2)); for (auto& Pair : Curr->BranchesOut) { // Hash the Block* as a pointer TODO: full hash? - Ret = - wasm::rehash(Ret, wasm::HashType(reinterpret_cast(Pair.first))); + wasm::rehash(digest, reinterpret_cast(Pair.first)); // Hash the Branch info properly - Ret = wasm::rehash(Ret, Hash(Pair.second)); + wasm::hash_combine(digest, Hash(Pair.second)); } - return Ret; + return digest; } // Hashes the direct block contents, but not Relooper internals // (like Shapes). - wasm::HashType Hash(Branch* Curr) { - wasm::HashType Ret = 0; + size_t Hash(Branch* Curr) { + auto digest = wasm::hash(0); if (Curr->SwitchValues) { for (auto i : *Curr->SwitchValues) { - Ret = wasm::rehash(Ret, i); // TODO hash i + wasm::rehash(digest, i); // TODO hash i } } else { if (Curr->Condition) { - Ret = wasm::ExpressionAnalyzer::hash(Curr->Condition); + wasm::hash_combine(digest, + wasm::ExpressionAnalyzer::hash(Curr->Condition)); } } - Ret = wasm::rehash(Ret, 1); + wasm::rehash(digest, uint8_t(1)); if (Curr->Code) { - Ret = wasm::ExpressionAnalyzer::hash(Curr->Code); + wasm::hash_combine(digest, wasm::ExpressionAnalyzer::hash(Curr->Code)); } - return Ret; + return digest; } }; @@ -1049,7 +1073,7 @@ // Add incoming branches from live blocks, ignoring dead code for (unsigned i = 0; i < Blocks.size(); i++) { - Block* Curr = Blocks[i]; + Block* Curr = Blocks[i].get(); if (!contains(Live.Live, Curr)) { continue; } @@ -1063,12 +1087,6 @@ struct Analyzer : public RelooperRecursor { Analyzer(Relooper* Parent) : RelooperRecursor(Parent) {} - // Add a shape to the list of shapes in this Relooper calculation - void Notice(Shape* New) { - New->Id = Parent->ShapeIdCounter++; - Parent->Shapes.push_back(New); - } - // Create a list of entries from a block. If LimitTo is provided, only // results in that set will appear void GetBlocksOut(Block* Source, @@ -1109,8 +1127,7 @@ Shape* MakeSimple(BlockSet& Blocks, Block* Inner, BlockSet& NextEntries) { PrintDebug("creating simple block with block #%d\n", Inner->Id); - SimpleShape* Simple = new SimpleShape; - Notice(Simple); + SimpleShape* Simple = Parent->AddSimpleShape(); Simple->Inner = Inner; Inner->Parent = Simple; if (Blocks.size() > 1) { @@ -1219,8 +1236,7 @@ DebugDump(Blocks, " outer blocks:"); DebugDump(NextEntries, " outer entries:"); - LoopShape* Loop = new LoopShape(); - Notice(Loop); + LoopShape* Loop = Parent->AddLoopShape(); // Solipsize the loop, replacing with break/continue and marking branches // as Processed (will not affect later calculations) A. Branches to the @@ -1386,8 +1402,7 @@ bool IsCheckedMultiple) { PrintDebug("creating multiple block with %d inner groups\n", IndependentGroups.size()); - MultipleShape* Multiple = new MultipleShape(); - Notice(Multiple); + MultipleShape* Multiple = Parent->AddMultipleShape(); BlockSet CurrEntries; for (auto& iter : IndependentGroups) { Block* CurrEntry = iter.first; diff -Nru binaryen-91/src/cfg/Relooper.h binaryen-99/src/cfg/Relooper.h --- binaryen-91/src/cfg/Relooper.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/cfg/Relooper.h 2021-01-07 20:01:06.000000000 +0000 @@ -79,6 +79,7 @@ } }; +struct Relooper; struct Block; struct Shape; @@ -241,6 +242,8 @@ // Represents a basic block of code - some instructions that end with a // control flow modifier (a branch, return or throw). struct Block { + // Reference to the relooper containing this block. + Relooper* relooper; // Branches become processed after we finish the shape relevant to them. For // example, when we recreate a loop, branches to the loop start become // continues and are now processed. When we calculate what shape to generate @@ -262,9 +265,9 @@ // variable bool IsCheckedMultipleEntry; - Block(wasm::Expression* CodeInit, + Block(Relooper* relooper, + wasm::Expression* CodeInit, wasm::Expression* SwitchConditionInit = nullptr); - ~Block(); // Add a branch: if the condition holds we branch (or if null, we branch if // all others failed) Note that there can be only one branch from A to B (if @@ -373,26 +376,44 @@ // // Usage: // 1. Instantiate this struct. -// 2. Call AddBlock with the blocks you have. Each should already -// have its branchings in specified (the branchings out will +// 2. Create the blocks you have. Each should have its +// branchings in specified (the branchings out will // be calculated by the relooper). // 3. Call Render(). // -// Implementation details: The Relooper instance has -// ownership of the blocks and shapes, and frees them when done. +// Implementation details: The Relooper instance takes ownership of the blocks, +// branches and shapes when created using the `AddBlock` etc. methods, and frees +// them when done. struct Relooper { wasm::Module* Module; - std::deque Blocks; - std::deque Shapes; + std::deque> Blocks; + std::deque> Branches; + std::deque> Shapes; Shape* Root; bool MinSize; int BlockIdCounter; int ShapeIdCounter; Relooper(wasm::Module* ModuleInit); - ~Relooper(); - void AddBlock(Block* New, int Id = -1); + // Creates a new block associated with (and cleaned up along) this relooper. + Block* AddBlock(wasm::Expression* CodeInit, + wasm::Expression* SwitchConditionInit = nullptr); + // Creates a new branch associated with (and cleaned up along) this relooper. + Branch* AddBranch(wasm::Expression* ConditionInit, + wasm::Expression* CodeInit); + // Creates a new branch associated with (and cleaned up along) this relooper. + Branch* AddBranch(std::vector&& ValuesInit, + wasm::Expression* CodeInit = nullptr); + // Creates a new simple shape associated with (and cleaned up along) this + // relooper. + SimpleShape* AddSimpleShape(); + // Creates a new multiple shape associated with (and cleaned up along) this + // relooper. + MultipleShape* AddMultipleShape(); + // Creates a new loop shape associated with (and cleaned up along) this + // relooper. + LoopShape* AddLoopShape(); // Calculates the shapes void Calculate(Block* Entry); diff -Nru binaryen-91/src/dataflow/graph.h binaryen-99/src/dataflow/graph.h --- binaryen-91/src/dataflow/graph.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/dataflow/graph.h 2021-01-07 20:01:06.000000000 +0000 @@ -228,6 +228,9 @@ return doVisitUnreachable(unreachable); } else if (auto* drop = curr->dynCast()) { return doVisitDrop(drop); + } else if (curr->is() || curr->is() || curr->is() || + curr->is()) { + Fatal() << "DataFlow does not support EH instructions yet"; } else { return doVisitGeneric(curr); } diff -Nru binaryen-91/src/dataflow/utils.h binaryen-99/src/dataflow/utils.h --- binaryen-91/src/dataflow/utils.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/dataflow/utils.h 2021-01-07 20:01:06.000000000 +0000 @@ -26,7 +26,6 @@ #define wasm_dataflow_utils_h #include "dataflow/node.h" -#include "wasm-printing.h" #include "wasm.h" namespace wasm { @@ -47,7 +46,7 @@ break; case Node::Type::Expr: { o << "expr "; - WasmPrinter::printExpression(node->expr, o, true); + o << *node->expr << '\n'; break; } case Node::Type::Phi: diff -Nru binaryen-91/src/emscripten-optimizer/CMakeLists.txt binaryen-99/src/emscripten-optimizer/CMakeLists.txt --- binaryen-91/src/emscripten-optimizer/CMakeLists.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/emscripten-optimizer/CMakeLists.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,8 @@ +FILE(GLOB emscripten-optimizer_HEADERS *.h) set(emscripten-optimizer_SOURCES optimizer-shared.cpp parser.cpp simple_ast.cpp + ${emscripten-optimizer_HEADERS} ) add_library(emscripten-optimizer OBJECT ${emscripten-optimizer_SOURCES}) diff -Nru binaryen-91/src/emscripten-optimizer/optimizer-shared.cpp binaryen-99/src/emscripten-optimizer/optimizer-shared.cpp --- binaryen-91/src/emscripten-optimizer/optimizer-shared.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/emscripten-optimizer/optimizer-shared.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -189,7 +189,7 @@ if (value < 0) { return ASM_SIGNED; } - if (value > uint32_t(-1) || fmod(value, 1) != 0) { + if (value > uint32_t(-1) || !wasm::isInteger(value)) { return ASM_NONSIGNED; } if (wasm::isSInteger32(value)) { diff -Nru binaryen-91/src/emscripten-optimizer/parser.cpp binaryen-99/src/emscripten-optimizer/parser.cpp --- binaryen-91/src/emscripten-optimizer/parser.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/emscripten-optimizer/parser.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -103,6 +103,10 @@ IString OBJECT("object"); IString THROW("throw"); IString SET("="); +IString ATOMICS("Atomics"); +IString COMPARE_EXCHANGE("compareExchange"); +IString LOAD("load"); +IString STORE("store"); IStringSet keywords("var const function if else do while for break continue return " diff -Nru binaryen-91/src/emscripten-optimizer/parser.h binaryen-99/src/emscripten-optimizer/parser.h --- binaryen-91/src/emscripten-optimizer/parser.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/emscripten-optimizer/parser.h 2021-01-07 20:01:06.000000000 +0000 @@ -120,6 +120,10 @@ extern IString OBJECT; extern IString THROW; extern IString SET; +extern IString ATOMICS; +extern IString COMPARE_EXCHANGE; +extern IString LOAD; +extern IString STORE; extern IStringSet keywords; diff -Nru binaryen-91/src/emscripten-optimizer/simple_ast.h binaryen-99/src/emscripten-optimizer/simple_ast.h --- binaryen-91/src/emscripten-optimizer/simple_ast.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/emscripten-optimizer/simple_ast.h 2021-01-07 20:01:06.000000000 +0000 @@ -256,7 +256,7 @@ AssignName* asAssignName(); int32_t getInteger() { // convenience function to get a known integer - assert(fmod(getNumber(), 1) == 0); + assert(wasm::isInteger(getNumber())); int32_t ret = getNumber(); assert(double(ret) == getNumber()); // no loss in conversion return ret; @@ -944,7 +944,7 @@ d = -d; } // try to emit the fewest necessary characters - bool integer = fmod(d, 1) == 0; + bool integer = wasm::isInteger(d); #define BUFFERSIZE 1000 // f is normal, e is scientific for float, x for integer static char full_storage_f[BUFFERSIZE], full_storage_e[BUFFERSIZE]; diff -Nru binaryen-91/src/gen-s-parser.inc binaryen-99/src/gen-s-parser.inc --- binaryen-91/src/gen-s-parser.inc 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/gen-s-parser.inc 2021-01-07 20:01:06.000000000 +0000 @@ -4,25 +4,55 @@ #ifdef INSTRUCTION_PARSER #undef INSTRUCTION_PARSER -char op[27] = {'\0'}; -strncpy(op, s[0]->c_str(), 26); +char op[30] = {'\0'}; +strncpy(op, s[0]->c_str(), 29); switch (op[0]) { case 'a': { switch (op[1]) { - case 'n': - if (strcmp(op, "anyref.pop") == 0) { return makePop(Type::anyref); } - goto parse_error; - case 't': { - switch (op[7]) { - case 'f': - if (strcmp(op, "atomic.fence") == 0) { return makeAtomicFence(s); } + case 'r': { + switch (op[6]) { + case 'g': { + switch (op[9]) { + case '\0': + if (strcmp(op, "array.get") == 0) { return makeArrayGet(s); } + goto parse_error; + case '_': { + switch (op[10]) { + case 's': + if (strcmp(op, "array.get_s") == 0) { return makeArrayGet(s, true); } + goto parse_error; + case 'u': + if (strcmp(op, "array.get_u") == 0) { return makeArrayGet(s, false); } + goto parse_error; + default: goto parse_error; + } + } + default: goto parse_error; + } + } + case 'l': + if (strcmp(op, "array.len") == 0) { return makeArrayLen(s); } goto parse_error; - case 'n': - if (strcmp(op, "atomic.notify") == 0) { return makeAtomicNotify(s); } + case 'n': { + switch (op[10]) { + case 'd': + if (strcmp(op, "array.new_default_with_rtt") == 0) { return makeArrayNew(s, true); } + goto parse_error; + case 'w': + if (strcmp(op, "array.new_with_rtt") == 0) { return makeArrayNew(s, false); } + goto parse_error; + default: goto parse_error; + } + } + case 's': + if (strcmp(op, "array.set") == 0) { return makeArraySet(s); } goto parse_error; default: goto parse_error; } } + case 't': + if (strcmp(op, "atomic.fence") == 0) { return makeAtomicFence(s); } + goto parse_error; default: goto parse_error; } } @@ -41,9 +71,17 @@ case 'i': if (strcmp(op, "br_if") == 0) { return makeBreak(s); } goto parse_error; - case 'o': - if (strcmp(op, "br_on_exn") == 0) { return makeBrOnExn(s); } - goto parse_error; + case 'o': { + switch (op[6]) { + case 'c': + if (strcmp(op, "br_on_cast") == 0) { return makeBrOnCast(s); } + goto parse_error; + case 'e': + if (strcmp(op, "br_on_exn") == 0) { return makeBrOnExn(s); } + goto parse_error; + default: goto parse_error; + } + } case 't': if (strcmp(op, "br_table") == 0) { return makeBreakTable(s); } goto parse_error; @@ -61,9 +99,17 @@ case '\0': if (strcmp(op, "call") == 0) { return makeCall(s, /*isReturn=*/false); } goto parse_error; - case '_': - if (strcmp(op, "call_indirect") == 0) { return makeCallIndirect(s, /*isReturn=*/false); } - goto parse_error; + case '_': { + switch (op[5]) { + case 'i': + if (strcmp(op, "call_indirect") == 0) { return makeCallIndirect(s, /*isReturn=*/false); } + goto parse_error; + case 'r': + if (strcmp(op, "call_ref") == 0) { return makeCallRef(s, /*isReturn=*/false); } + goto parse_error; + default: goto parse_error; + } + } default: goto parse_error; } } @@ -78,17 +124,9 @@ default: goto parse_error; } } - case 'e': { - switch (op[1]) { - case 'l': - if (strcmp(op, "else") == 0) { return makeThenOrElse(s); } - goto parse_error; - case 'x': - if (strcmp(op, "exnref.pop") == 0) { return makePop(Type::exnref); } - goto parse_error; - default: goto parse_error; - } - } + case 'e': + if (strcmp(op, "else") == 0) { return makeThenOrElse(s); } + goto parse_error; case 'f': { switch (op[1]) { case '3': { @@ -227,9 +265,6 @@ default: goto parse_error; } } - case 'p': - if (strcmp(op, "f32.pop") == 0) { return makePop(Type::f32); } - goto parse_error; case 'r': if (strcmp(op, "f32.reinterpret_i32") == 0) { return makeUnary(s, UnaryOp::ReinterpretInt32); } goto parse_error; @@ -267,13 +302,21 @@ } } case 'c': { - switch (op[20]) { - case 's': - if (strcmp(op, "f32x4.convert_i32x4_s") == 0) { return makeUnary(s, UnaryOp::ConvertSVecI32x4ToVecF32x4); } - goto parse_error; - case 'u': - if (strcmp(op, "f32x4.convert_i32x4_u") == 0) { return makeUnary(s, UnaryOp::ConvertUVecI32x4ToVecF32x4); } + switch (op[7]) { + case 'e': + if (strcmp(op, "f32x4.ceil") == 0) { return makeUnary(s, UnaryOp::CeilVecF32x4); } goto parse_error; + case 'o': { + switch (op[20]) { + case 's': + if (strcmp(op, "f32x4.convert_i32x4_s") == 0) { return makeUnary(s, UnaryOp::ConvertSVecI32x4ToVecF32x4); } + goto parse_error; + case 'u': + if (strcmp(op, "f32x4.convert_i32x4_u") == 0) { return makeUnary(s, UnaryOp::ConvertUVecI32x4ToVecF32x4); } + goto parse_error; + default: goto parse_error; + } + } default: goto parse_error; } } @@ -291,6 +334,9 @@ default: goto parse_error; } } + case 'f': + if (strcmp(op, "f32x4.floor") == 0) { return makeUnary(s, UnaryOp::FloorVecF32x4); } + goto parse_error; case 'g': { switch (op[7]) { case 'e': @@ -332,12 +378,26 @@ case '\0': if (strcmp(op, "f32x4.ne") == 0) { return makeBinary(s, BinaryOp::NeVecF32x4); } goto parse_error; + case 'a': + if (strcmp(op, "f32x4.nearest") == 0) { return makeUnary(s, UnaryOp::NearestVecF32x4); } + goto parse_error; case 'g': if (strcmp(op, "f32x4.neg") == 0) { return makeUnary(s, UnaryOp::NegVecF32x4); } goto parse_error; default: goto parse_error; } } + case 'p': { + switch (op[8]) { + case 'a': + if (strcmp(op, "f32x4.pmax") == 0) { return makeBinary(s, BinaryOp::PMaxVecF32x4); } + goto parse_error; + case 'i': + if (strcmp(op, "f32x4.pmin") == 0) { return makeBinary(s, BinaryOp::PMinVecF32x4); } + goto parse_error; + default: goto parse_error; + } + } case 'q': { switch (op[9]) { case 'a': @@ -366,6 +426,9 @@ default: goto parse_error; } } + case 't': + if (strcmp(op, "f32x4.trunc") == 0) { return makeUnary(s, UnaryOp::TruncVecF32x4); } + goto parse_error; default: goto parse_error; } } @@ -500,17 +563,9 @@ default: goto parse_error; } } - case 'p': { - switch (op[5]) { - case 'o': - if (strcmp(op, "f64.pop") == 0) { return makePop(Type::f64); } - goto parse_error; - case 'r': - if (strcmp(op, "f64.promote_f32") == 0) { return makeUnary(s, UnaryOp::PromoteFloat32); } - goto parse_error; - default: goto parse_error; - } - } + case 'p': + if (strcmp(op, "f64.promote_f32") == 0) { return makeUnary(s, UnaryOp::PromoteFloat32); } + goto parse_error; case 'r': if (strcmp(op, "f64.reinterpret_i64") == 0) { return makeUnary(s, UnaryOp::ReinterpretInt64); } goto parse_error; @@ -548,13 +603,21 @@ } } case 'c': { - switch (op[20]) { - case 's': - if (strcmp(op, "f64x2.convert_i64x2_s") == 0) { return makeUnary(s, UnaryOp::ConvertSVecI64x2ToVecF64x2); } - goto parse_error; - case 'u': - if (strcmp(op, "f64x2.convert_i64x2_u") == 0) { return makeUnary(s, UnaryOp::ConvertUVecI64x2ToVecF64x2); } + switch (op[7]) { + case 'e': + if (strcmp(op, "f64x2.ceil") == 0) { return makeUnary(s, UnaryOp::CeilVecF64x2); } goto parse_error; + case 'o': { + switch (op[20]) { + case 's': + if (strcmp(op, "f64x2.convert_i64x2_s") == 0) { return makeUnary(s, UnaryOp::ConvertSVecI64x2ToVecF64x2); } + goto parse_error; + case 'u': + if (strcmp(op, "f64x2.convert_i64x2_u") == 0) { return makeUnary(s, UnaryOp::ConvertUVecI64x2ToVecF64x2); } + goto parse_error; + default: goto parse_error; + } + } default: goto parse_error; } } @@ -572,6 +635,9 @@ default: goto parse_error; } } + case 'f': + if (strcmp(op, "f64x2.floor") == 0) { return makeUnary(s, UnaryOp::FloorVecF64x2); } + goto parse_error; case 'g': { switch (op[7]) { case 'e': @@ -613,12 +679,26 @@ case '\0': if (strcmp(op, "f64x2.ne") == 0) { return makeBinary(s, BinaryOp::NeVecF64x2); } goto parse_error; + case 'a': + if (strcmp(op, "f64x2.nearest") == 0) { return makeUnary(s, UnaryOp::NearestVecF64x2); } + goto parse_error; case 'g': if (strcmp(op, "f64x2.neg") == 0) { return makeUnary(s, UnaryOp::NegVecF64x2); } goto parse_error; default: goto parse_error; } } + case 'p': { + switch (op[8]) { + case 'a': + if (strcmp(op, "f64x2.pmax") == 0) { return makeBinary(s, BinaryOp::PMaxVecF64x2); } + goto parse_error; + case 'i': + if (strcmp(op, "f64x2.pmin") == 0) { return makeBinary(s, BinaryOp::PMinVecF64x2); } + goto parse_error; + default: goto parse_error; + } + } case 'q': { switch (op[9]) { case 'a': @@ -647,15 +727,15 @@ default: goto parse_error; } } + case 't': + if (strcmp(op, "f64x2.trunc") == 0) { return makeUnary(s, UnaryOp::TruncVecF64x2); } + goto parse_error; default: goto parse_error; } } default: goto parse_error; } } - case 'u': - if (strcmp(op, "funcref.pop") == 0) { return makePop(Type::funcref); } - goto parse_error; default: goto parse_error; } } @@ -676,6 +756,9 @@ switch (op[6]) { case 'a': { switch (op[7]) { + case 'b': + if (strcmp(op, "i16x8.abs") == 0) { return makeUnary(s, UnaryOp::AbsVecI16x8); } + goto parse_error; case 'd': { switch (op[9]) { case '\0': @@ -707,19 +790,65 @@ default: goto parse_error; } } + case 'b': + if (strcmp(op, "i16x8.bitmask") == 0) { return makeUnary(s, UnaryOp::BitmaskVecI16x8); } + goto parse_error; case 'e': { switch (op[7]) { case 'q': if (strcmp(op, "i16x8.eq") == 0) { return makeBinary(s, BinaryOp::EqVecI16x8); } goto parse_error; case 'x': { - switch (op[19]) { - case 's': - if (strcmp(op, "i16x8.extract_lane_s") == 0) { return makeSIMDExtract(s, SIMDExtractOp::ExtractLaneSVecI16x8, 8); } - goto parse_error; - case 'u': - if (strcmp(op, "i16x8.extract_lane_u") == 0) { return makeSIMDExtract(s, SIMDExtractOp::ExtractLaneUVecI16x8, 8); } - goto parse_error; + switch (op[9]) { + case 'a': { + switch (op[28]) { + case 's': + if (strcmp(op, "i16x8.extadd_pairwise_i8x16_s") == 0) { return makeUnary(s, UnaryOp::ExtAddPairwiseSVecI8x16ToI16x8); } + goto parse_error; + case 'u': + if (strcmp(op, "i16x8.extadd_pairwise_i8x16_u") == 0) { return makeUnary(s, UnaryOp::ExtAddPairwiseUVecI8x16ToI16x8); } + goto parse_error; + default: goto parse_error; + } + } + case 'm': { + switch (op[13]) { + case 'h': { + switch (op[24]) { + case 's': + if (strcmp(op, "i16x8.extmul_high_i8x16_s") == 0) { return makeBinary(s, BinaryOp::ExtMulHighSVecI16x8); } + goto parse_error; + case 'u': + if (strcmp(op, "i16x8.extmul_high_i8x16_u") == 0) { return makeBinary(s, BinaryOp::ExtMulHighUVecI16x8); } + goto parse_error; + default: goto parse_error; + } + } + case 'l': { + switch (op[23]) { + case 's': + if (strcmp(op, "i16x8.extmul_low_i8x16_s") == 0) { return makeBinary(s, BinaryOp::ExtMulLowSVecI16x8); } + goto parse_error; + case 'u': + if (strcmp(op, "i16x8.extmul_low_i8x16_u") == 0) { return makeBinary(s, BinaryOp::ExtMulLowUVecI16x8); } + goto parse_error; + default: goto parse_error; + } + } + default: goto parse_error; + } + } + case 'r': { + switch (op[19]) { + case 's': + if (strcmp(op, "i16x8.extract_lane_s") == 0) { return makeSIMDExtract(s, SIMDExtractOp::ExtractLaneSVecI16x8, 8); } + goto parse_error; + case 'u': + if (strcmp(op, "i16x8.extract_lane_u") == 0) { return makeSIMDExtract(s, SIMDExtractOp::ExtractLaneUVecI16x8, 8); } + goto parse_error; + default: goto parse_error; + } + } default: goto parse_error; } } @@ -848,6 +977,9 @@ default: goto parse_error; } } + case 'q': + if (strcmp(op, "i16x8.q15mulr_sat_s") == 0) { return makeBinary(s, BinaryOp::Q15MulrSatSVecI16x8); } + goto parse_error; case 'r': if (strcmp(op, "i16x8.replace_lane") == 0) { return makeSIMDReplace(s, SIMDReplaceOp::ReplaceLaneVecI16x8, 8); } goto parse_error; @@ -928,284 +1060,232 @@ } } case '3': { - switch (op[3]) { - case '.': { + switch (op[2]) { + case '1': { switch (op[4]) { - case 'a': { - switch (op[5]) { - case 'd': - if (strcmp(op, "i32.add") == 0) { return makeBinary(s, BinaryOp::AddInt32); } + case 'g': { + switch (op[8]) { + case 's': + if (strcmp(op, "i31.get_s") == 0) { return makeI31Get(s, true); } goto parse_error; - case 'n': - if (strcmp(op, "i32.and") == 0) { return makeBinary(s, BinaryOp::AndInt32); } + case 'u': + if (strcmp(op, "i31.get_u") == 0) { return makeI31Get(s, false); } goto parse_error; - case 't': { - switch (op[11]) { - case 'l': { - switch (op[15]) { - case '\0': - if (strcmp(op, "i32.atomic.load") == 0) { return makeLoad(s, Type::i32, /*isAtomic=*/true); } - goto parse_error; - case '1': - if (strcmp(op, "i32.atomic.load16_u") == 0) { return makeLoad(s, Type::i32, /*isAtomic=*/true); } - goto parse_error; - case '8': - if (strcmp(op, "i32.atomic.load8_u") == 0) { return makeLoad(s, Type::i32, /*isAtomic=*/true); } - goto parse_error; - default: goto parse_error; - } - } - case 'r': { - switch (op[14]) { - case '.': { + default: goto parse_error; + } + } + case 'n': + if (strcmp(op, "i31.new") == 0) { return makeI31New(s); } + goto parse_error; + default: goto parse_error; + } + } + case '2': { + switch (op[3]) { + case '.': { + switch (op[4]) { + case 'a': { + switch (op[5]) { + case 'd': + if (strcmp(op, "i32.add") == 0) { return makeBinary(s, BinaryOp::AddInt32); } + goto parse_error; + case 'n': + if (strcmp(op, "i32.and") == 0) { return makeBinary(s, BinaryOp::AndInt32); } + goto parse_error; + case 't': { + switch (op[11]) { + case 'l': { switch (op[15]) { - case 'a': { - switch (op[16]) { - case 'd': - if (strcmp(op, "i32.atomic.rmw.add") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + case '\0': + if (strcmp(op, "i32.atomic.load") == 0) { return makeLoad(s, Type::i32, /*isAtomic=*/true); } + goto parse_error; + case '1': + if (strcmp(op, "i32.atomic.load16_u") == 0) { return makeLoad(s, Type::i32, /*isAtomic=*/true); } + goto parse_error; + case '8': + if (strcmp(op, "i32.atomic.load8_u") == 0) { return makeLoad(s, Type::i32, /*isAtomic=*/true); } + goto parse_error; + default: goto parse_error; + } + } + case 'r': { + switch (op[14]) { + case '.': { + switch (op[15]) { + case 'a': { + switch (op[16]) { + case 'd': + if (strcmp(op, "i32.atomic.rmw.add") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + goto parse_error; + case 'n': + if (strcmp(op, "i32.atomic.rmw.and") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + goto parse_error; + default: goto parse_error; + } + } + case 'c': + if (strcmp(op, "i32.atomic.rmw.cmpxchg") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } goto parse_error; - case 'n': - if (strcmp(op, "i32.atomic.rmw.and") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + case 'o': + if (strcmp(op, "i32.atomic.rmw.or") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + goto parse_error; + case 's': + if (strcmp(op, "i32.atomic.rmw.sub") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } goto parse_error; + case 'x': { + switch (op[16]) { + case 'c': + if (strcmp(op, "i32.atomic.rmw.xchg") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + goto parse_error; + case 'o': + if (strcmp(op, "i32.atomic.rmw.xor") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + goto parse_error; + default: goto parse_error; + } + } default: goto parse_error; } } - case 'c': - if (strcmp(op, "i32.atomic.rmw.cmpxchg") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } - goto parse_error; - case 'o': - if (strcmp(op, "i32.atomic.rmw.or") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } - goto parse_error; - case 's': - if (strcmp(op, "i32.atomic.rmw.sub") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } - goto parse_error; - case 'x': { - switch (op[16]) { + case '1': { + switch (op[17]) { + case 'a': { + switch (op[18]) { + case 'd': + if (strcmp(op, "i32.atomic.rmw16.add_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + goto parse_error; + case 'n': + if (strcmp(op, "i32.atomic.rmw16.and_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + goto parse_error; + default: goto parse_error; + } + } case 'c': - if (strcmp(op, "i32.atomic.rmw.xchg") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + if (strcmp(op, "i32.atomic.rmw16.cmpxchg_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } goto parse_error; case 'o': - if (strcmp(op, "i32.atomic.rmw.xor") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + if (strcmp(op, "i32.atomic.rmw16.or_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + goto parse_error; + case 's': + if (strcmp(op, "i32.atomic.rmw16.sub_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } goto parse_error; + case 'x': { + switch (op[18]) { + case 'c': + if (strcmp(op, "i32.atomic.rmw16.xchg_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + goto parse_error; + case 'o': + if (strcmp(op, "i32.atomic.rmw16.xor_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + goto parse_error; + default: goto parse_error; + } + } default: goto parse_error; } } - default: goto parse_error; - } - } - case '1': { - switch (op[17]) { - case 'a': { - switch (op[18]) { - case 'd': - if (strcmp(op, "i32.atomic.rmw16.add_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + case '8': { + switch (op[16]) { + case 'a': { + switch (op[17]) { + case 'd': + if (strcmp(op, "i32.atomic.rmw8.add_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + goto parse_error; + case 'n': + if (strcmp(op, "i32.atomic.rmw8.and_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + goto parse_error; + default: goto parse_error; + } + } + case 'c': + if (strcmp(op, "i32.atomic.rmw8.cmpxchg_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } goto parse_error; - case 'n': - if (strcmp(op, "i32.atomic.rmw16.and_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } - goto parse_error; - default: goto parse_error; - } - } - case 'c': - if (strcmp(op, "i32.atomic.rmw16.cmpxchg_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } - goto parse_error; - case 'o': - if (strcmp(op, "i32.atomic.rmw16.or_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } - goto parse_error; - case 's': - if (strcmp(op, "i32.atomic.rmw16.sub_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } - goto parse_error; - case 'x': { - switch (op[18]) { - case 'c': - if (strcmp(op, "i32.atomic.rmw16.xchg_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } - goto parse_error; - case 'o': - if (strcmp(op, "i32.atomic.rmw16.xor_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + case 'o': + if (strcmp(op, "i32.atomic.rmw8.or_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } goto parse_error; + case 's': + if (strcmp(op, "i32.atomic.rmw8.sub_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + goto parse_error; + case 'x': { + switch (op[17]) { + case 'c': + if (strcmp(op, "i32.atomic.rmw8.xchg_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + goto parse_error; + case 'o': + if (strcmp(op, "i32.atomic.rmw8.xor_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + goto parse_error; + default: goto parse_error; + } + } default: goto parse_error; } } default: goto parse_error; } } - case '8': { + case 's': { switch (op[16]) { - case 'a': { - switch (op[17]) { - case 'd': - if (strcmp(op, "i32.atomic.rmw8.add_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } - goto parse_error; - case 'n': - if (strcmp(op, "i32.atomic.rmw8.and_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } - goto parse_error; - default: goto parse_error; - } - } - case 'c': - if (strcmp(op, "i32.atomic.rmw8.cmpxchg_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + case '\0': + if (strcmp(op, "i32.atomic.store") == 0) { return makeStore(s, Type::i32, /*isAtomic=*/true); } goto parse_error; - case 'o': - if (strcmp(op, "i32.atomic.rmw8.or_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + case '1': + if (strcmp(op, "i32.atomic.store16") == 0) { return makeStore(s, Type::i32, /*isAtomic=*/true); } goto parse_error; - case 's': - if (strcmp(op, "i32.atomic.rmw8.sub_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } + case '8': + if (strcmp(op, "i32.atomic.store8") == 0) { return makeStore(s, Type::i32, /*isAtomic=*/true); } goto parse_error; - case 'x': { - switch (op[17]) { - case 'c': - if (strcmp(op, "i32.atomic.rmw8.xchg_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } - goto parse_error; - case 'o': - if (strcmp(op, "i32.atomic.rmw8.xor_u") == 0) { return makeAtomicRMWOrCmpxchg(s, Type::i32); } - goto parse_error; - default: goto parse_error; - } - } default: goto parse_error; } } default: goto parse_error; } } - case 's': { - switch (op[16]) { - case '\0': - if (strcmp(op, "i32.atomic.store") == 0) { return makeStore(s, Type::i32, /*isAtomic=*/true); } - goto parse_error; - case '1': - if (strcmp(op, "i32.atomic.store16") == 0) { return makeStore(s, Type::i32, /*isAtomic=*/true); } - goto parse_error; - case '8': - if (strcmp(op, "i32.atomic.store8") == 0) { return makeStore(s, Type::i32, /*isAtomic=*/true); } - goto parse_error; - default: goto parse_error; - } - } - case 'w': - if (strcmp(op, "i32.atomic.wait") == 0) { return makeAtomicWait(s, Type::i32); } - goto parse_error; - default: goto parse_error; - } - } - default: goto parse_error; - } - } - case 'c': { - switch (op[5]) { - case 'l': - if (strcmp(op, "i32.clz") == 0) { return makeUnary(s, UnaryOp::ClzInt32); } - goto parse_error; - case 'o': - if (strcmp(op, "i32.const") == 0) { return makeConst(s, Type::i32); } - goto parse_error; - case 't': - if (strcmp(op, "i32.ctz") == 0) { return makeUnary(s, UnaryOp::CtzInt32); } - goto parse_error; - default: goto parse_error; - } - } - case 'd': { - switch (op[8]) { - case 's': - if (strcmp(op, "i32.div_s") == 0) { return makeBinary(s, BinaryOp::DivSInt32); } - goto parse_error; - case 'u': - if (strcmp(op, "i32.div_u") == 0) { return makeBinary(s, BinaryOp::DivUInt32); } - goto parse_error; - default: goto parse_error; - } - } - case 'e': { - switch (op[5]) { - case 'q': { - switch (op[6]) { - case '\0': - if (strcmp(op, "i32.eq") == 0) { return makeBinary(s, BinaryOp::EqInt32); } - goto parse_error; - case 'z': - if (strcmp(op, "i32.eqz") == 0) { return makeUnary(s, UnaryOp::EqZInt32); } - goto parse_error; default: goto parse_error; } } - case 'x': { - switch (op[10]) { - case '1': - if (strcmp(op, "i32.extend16_s") == 0) { return makeUnary(s, UnaryOp::ExtendS16Int32); } - goto parse_error; - case '8': - if (strcmp(op, "i32.extend8_s") == 0) { return makeUnary(s, UnaryOp::ExtendS8Int32); } + case 'c': { + switch (op[5]) { + case 'l': + if (strcmp(op, "i32.clz") == 0) { return makeUnary(s, UnaryOp::ClzInt32); } goto parse_error; - default: goto parse_error; - } - } - default: goto parse_error; - } - } - case 'g': { - switch (op[5]) { - case 'e': { - switch (op[7]) { - case 's': - if (strcmp(op, "i32.ge_s") == 0) { return makeBinary(s, BinaryOp::GeSInt32); } + case 'o': + if (strcmp(op, "i32.const") == 0) { return makeConst(s, Type::i32); } goto parse_error; - case 'u': - if (strcmp(op, "i32.ge_u") == 0) { return makeBinary(s, BinaryOp::GeUInt32); } + case 't': + if (strcmp(op, "i32.ctz") == 0) { return makeUnary(s, UnaryOp::CtzInt32); } goto parse_error; default: goto parse_error; } } - case 't': { - switch (op[7]) { + case 'd': { + switch (op[8]) { case 's': - if (strcmp(op, "i32.gt_s") == 0) { return makeBinary(s, BinaryOp::GtSInt32); } + if (strcmp(op, "i32.div_s") == 0) { return makeBinary(s, BinaryOp::DivSInt32); } goto parse_error; case 'u': - if (strcmp(op, "i32.gt_u") == 0) { return makeBinary(s, BinaryOp::GtUInt32); } + if (strcmp(op, "i32.div_u") == 0) { return makeBinary(s, BinaryOp::DivUInt32); } goto parse_error; default: goto parse_error; } } - default: goto parse_error; - } - } - case 'l': { - switch (op[5]) { case 'e': { - switch (op[7]) { - case 's': - if (strcmp(op, "i32.le_s") == 0) { return makeBinary(s, BinaryOp::LeSInt32); } - goto parse_error; - case 'u': - if (strcmp(op, "i32.le_u") == 0) { return makeBinary(s, BinaryOp::LeUInt32); } - goto parse_error; - default: goto parse_error; - } - } - case 'o': { - switch (op[8]) { - case '\0': - if (strcmp(op, "i32.load") == 0) { return makeLoad(s, Type::i32, /*isAtomic=*/false); } - goto parse_error; - case '1': { - switch (op[11]) { - case 's': - if (strcmp(op, "i32.load16_s") == 0) { return makeLoad(s, Type::i32, /*isAtomic=*/false); } + switch (op[5]) { + case 'q': { + switch (op[6]) { + case '\0': + if (strcmp(op, "i32.eq") == 0) { return makeBinary(s, BinaryOp::EqInt32); } goto parse_error; - case 'u': - if (strcmp(op, "i32.load16_u") == 0) { return makeLoad(s, Type::i32, /*isAtomic=*/false); } + case 'z': + if (strcmp(op, "i32.eqz") == 0) { return makeUnary(s, UnaryOp::EqZInt32); } goto parse_error; default: goto parse_error; } } - case '8': { + case 'x': { switch (op[10]) { - case 's': - if (strcmp(op, "i32.load8_s") == 0) { return makeLoad(s, Type::i32, /*isAtomic=*/false); } + case '1': + if (strcmp(op, "i32.extend16_s") == 0) { return makeUnary(s, UnaryOp::ExtendS16Int32); } goto parse_error; - case 'u': - if (strcmp(op, "i32.load8_u") == 0) { return makeLoad(s, Type::i32, /*isAtomic=*/false); } + case '8': + if (strcmp(op, "i32.extend8_s") == 0) { return makeUnary(s, UnaryOp::ExtendS8Int32); } goto parse_error; default: goto parse_error; } @@ -1213,89 +1293,26 @@ default: goto parse_error; } } - case 't': { - switch (op[7]) { - case 's': - if (strcmp(op, "i32.lt_s") == 0) { return makeBinary(s, BinaryOp::LtSInt32); } - goto parse_error; - case 'u': - if (strcmp(op, "i32.lt_u") == 0) { return makeBinary(s, BinaryOp::LtUInt32); } - goto parse_error; - default: goto parse_error; - } - } - default: goto parse_error; - } - } - case 'm': - if (strcmp(op, "i32.mul") == 0) { return makeBinary(s, BinaryOp::MulInt32); } - goto parse_error; - case 'n': - if (strcmp(op, "i32.ne") == 0) { return makeBinary(s, BinaryOp::NeInt32); } - goto parse_error; - case 'o': - if (strcmp(op, "i32.or") == 0) { return makeBinary(s, BinaryOp::OrInt32); } - goto parse_error; - case 'p': { - switch (op[7]) { - case '\0': - if (strcmp(op, "i32.pop") == 0) { return makePop(Type::i32); } - goto parse_error; - case 'c': - if (strcmp(op, "i32.popcnt") == 0) { return makeUnary(s, UnaryOp::PopcntInt32); } - goto parse_error; - default: goto parse_error; - } - } - case 'r': { - switch (op[5]) { - case 'e': { - switch (op[6]) { - case 'i': - if (strcmp(op, "i32.reinterpret_f32") == 0) { return makeUnary(s, UnaryOp::ReinterpretFloat32); } - goto parse_error; - case 'm': { - switch (op[8]) { + case 'g': { + switch (op[5]) { + case 'e': { + switch (op[7]) { case 's': - if (strcmp(op, "i32.rem_s") == 0) { return makeBinary(s, BinaryOp::RemSInt32); } + if (strcmp(op, "i32.ge_s") == 0) { return makeBinary(s, BinaryOp::GeSInt32); } goto parse_error; case 'u': - if (strcmp(op, "i32.rem_u") == 0) { return makeBinary(s, BinaryOp::RemUInt32); } + if (strcmp(op, "i32.ge_u") == 0) { return makeBinary(s, BinaryOp::GeUInt32); } goto parse_error; default: goto parse_error; } } - default: goto parse_error; - } - } - case 'o': { - switch (op[7]) { - case 'l': - if (strcmp(op, "i32.rotl") == 0) { return makeBinary(s, BinaryOp::RotLInt32); } - goto parse_error; - case 'r': - if (strcmp(op, "i32.rotr") == 0) { return makeBinary(s, BinaryOp::RotRInt32); } - goto parse_error; - default: goto parse_error; - } - } - default: goto parse_error; - } - } - case 's': { - switch (op[5]) { - case 'h': { - switch (op[6]) { - case 'l': - if (strcmp(op, "i32.shl") == 0) { return makeBinary(s, BinaryOp::ShlInt32); } - goto parse_error; - case 'r': { - switch (op[8]) { + case 't': { + switch (op[7]) { case 's': - if (strcmp(op, "i32.shr_s") == 0) { return makeBinary(s, BinaryOp::ShrSInt32); } + if (strcmp(op, "i32.gt_s") == 0) { return makeBinary(s, BinaryOp::GtSInt32); } goto parse_error; case 'u': - if (strcmp(op, "i32.shr_u") == 0) { return makeBinary(s, BinaryOp::ShrUInt32); } + if (strcmp(op, "i32.gt_u") == 0) { return makeBinary(s, BinaryOp::GtUInt32); } goto parse_error; default: goto parse_error; } @@ -1303,75 +1320,56 @@ default: goto parse_error; } } - case 't': { - switch (op[9]) { - case '\0': - if (strcmp(op, "i32.store") == 0) { return makeStore(s, Type::i32, /*isAtomic=*/false); } - goto parse_error; - case '1': - if (strcmp(op, "i32.store16") == 0) { return makeStore(s, Type::i32, /*isAtomic=*/false); } - goto parse_error; - case '8': - if (strcmp(op, "i32.store8") == 0) { return makeStore(s, Type::i32, /*isAtomic=*/false); } - goto parse_error; - default: goto parse_error; - } - } - case 'u': - if (strcmp(op, "i32.sub") == 0) { return makeBinary(s, BinaryOp::SubInt32); } - goto parse_error; - default: goto parse_error; - } - } - case 't': { - switch (op[10]) { - case 'f': { - switch (op[11]) { - case '3': { - switch (op[14]) { - case 's': - if (strcmp(op, "i32.trunc_f32_s") == 0) { return makeUnary(s, UnaryOp::TruncSFloat32ToInt32); } - goto parse_error; - case 'u': - if (strcmp(op, "i32.trunc_f32_u") == 0) { return makeUnary(s, UnaryOp::TruncUFloat32ToInt32); } - goto parse_error; - default: goto parse_error; - } - } - case '6': { - switch (op[14]) { + case 'l': { + switch (op[5]) { + case 'e': { + switch (op[7]) { case 's': - if (strcmp(op, "i32.trunc_f64_s") == 0) { return makeUnary(s, UnaryOp::TruncSFloat64ToInt32); } + if (strcmp(op, "i32.le_s") == 0) { return makeBinary(s, BinaryOp::LeSInt32); } goto parse_error; case 'u': - if (strcmp(op, "i32.trunc_f64_u") == 0) { return makeUnary(s, UnaryOp::TruncUFloat64ToInt32); } + if (strcmp(op, "i32.le_u") == 0) { return makeBinary(s, BinaryOp::LeUInt32); } goto parse_error; default: goto parse_error; } } - default: goto parse_error; - } - } - case 's': { - switch (op[15]) { - case '3': { - switch (op[18]) { - case 's': - if (strcmp(op, "i32.trunc_sat_f32_s") == 0) { return makeUnary(s, UnaryOp::TruncSatSFloat32ToInt32); } - goto parse_error; - case 'u': - if (strcmp(op, "i32.trunc_sat_f32_u") == 0) { return makeUnary(s, UnaryOp::TruncSatUFloat32ToInt32); } + case 'o': { + switch (op[8]) { + case '\0': + if (strcmp(op, "i32.load") == 0) { return makeLoad(s, Type::i32, /*isAtomic=*/false); } goto parse_error; + case '1': { + switch (op[11]) { + case 's': + if (strcmp(op, "i32.load16_s") == 0) { return makeLoad(s, Type::i32, /*isAtomic=*/false); } + goto parse_error; + case 'u': + if (strcmp(op, "i32.load16_u") == 0) { return makeLoad(s, Type::i32, /*isAtomic=*/false); } + goto parse_error; + default: goto parse_error; + } + } + case '8': { + switch (op[10]) { + case 's': + if (strcmp(op, "i32.load8_s") == 0) { return makeLoad(s, Type::i32, /*isAtomic=*/false); } + goto parse_error; + case 'u': + if (strcmp(op, "i32.load8_u") == 0) { return makeLoad(s, Type::i32, /*isAtomic=*/false); } + goto parse_error; + default: goto parse_error; + } + } default: goto parse_error; } } - case '6': { - switch (op[18]) { + case 't': { + switch (op[7]) { case 's': - if (strcmp(op, "i32.trunc_sat_f64_s") == 0) { return makeUnary(s, UnaryOp::TruncSatSFloat64ToInt32); } + if (strcmp(op, "i32.lt_s") == 0) { return makeBinary(s, BinaryOp::LtSInt32); } goto parse_error; case 'u': - if (strcmp(op, "i32.trunc_sat_f64_u") == 0) { return makeUnary(s, UnaryOp::TruncSatUFloat64ToInt32); } + if (strcmp(op, "i32.lt_u") == 0) { return makeBinary(s, BinaryOp::LtUInt32); } goto parse_error; default: goto parse_error; } @@ -1379,222 +1377,418 @@ default: goto parse_error; } } - default: goto parse_error; - } - } - case 'w': - if (strcmp(op, "i32.wrap_i64") == 0) { return makeUnary(s, UnaryOp::WrapInt64); } - goto parse_error; - case 'x': - if (strcmp(op, "i32.xor") == 0) { return makeBinary(s, BinaryOp::XorInt32); } - goto parse_error; - default: goto parse_error; - } - } - case 'x': { - switch (op[6]) { - case 'a': { - switch (op[7]) { - case 'd': - if (strcmp(op, "i32x4.add") == 0) { return makeBinary(s, BinaryOp::AddVecI32x4); } - goto parse_error; - case 'l': - if (strcmp(op, "i32x4.all_true") == 0) { return makeUnary(s, UnaryOp::AllTrueVecI32x4); } + case 'm': + if (strcmp(op, "i32.mul") == 0) { return makeBinary(s, BinaryOp::MulInt32); } goto parse_error; case 'n': - if (strcmp(op, "i32x4.any_true") == 0) { return makeUnary(s, UnaryOp::AnyTrueVecI32x4); } + if (strcmp(op, "i32.ne") == 0) { return makeBinary(s, BinaryOp::NeInt32); } goto parse_error; - default: goto parse_error; - } - } - case 'd': - if (strcmp(op, "i32x4.dot_i16x8_s") == 0) { return makeBinary(s, BinaryOp::DotSVecI16x8ToVecI32x4); } - goto parse_error; - case 'e': { - switch (op[7]) { - case 'q': - if (strcmp(op, "i32x4.eq") == 0) { return makeBinary(s, BinaryOp::EqVecI32x4); } + case 'o': + if (strcmp(op, "i32.or") == 0) { return makeBinary(s, BinaryOp::OrInt32); } goto parse_error; - case 'x': - if (strcmp(op, "i32x4.extract_lane") == 0) { return makeSIMDExtract(s, SIMDExtractOp::ExtractLaneVecI32x4, 4); } + case 'p': + if (strcmp(op, "i32.popcnt") == 0) { return makeUnary(s, UnaryOp::PopcntInt32); } goto parse_error; - default: goto parse_error; - } - } - case 'g': { - switch (op[7]) { - case 'e': { - switch (op[9]) { - case 's': - if (strcmp(op, "i32x4.ge_s") == 0) { return makeBinary(s, BinaryOp::GeSVecI32x4); } - goto parse_error; + case 'r': { + switch (op[5]) { + case 'e': { + switch (op[6]) { + case 'i': + if (strcmp(op, "i32.reinterpret_f32") == 0) { return makeUnary(s, UnaryOp::ReinterpretFloat32); } + goto parse_error; + case 'm': { + switch (op[8]) { + case 's': + if (strcmp(op, "i32.rem_s") == 0) { return makeBinary(s, BinaryOp::RemSInt32); } + goto parse_error; + case 'u': + if (strcmp(op, "i32.rem_u") == 0) { return makeBinary(s, BinaryOp::RemUInt32); } + goto parse_error; + default: goto parse_error; + } + } + default: goto parse_error; + } + } + case 'o': { + switch (op[7]) { + case 'l': + if (strcmp(op, "i32.rotl") == 0) { return makeBinary(s, BinaryOp::RotLInt32); } + goto parse_error; + case 'r': + if (strcmp(op, "i32.rotr") == 0) { return makeBinary(s, BinaryOp::RotRInt32); } + goto parse_error; + default: goto parse_error; + } + } + default: goto parse_error; + } + } + case 's': { + switch (op[5]) { + case 'h': { + switch (op[6]) { + case 'l': + if (strcmp(op, "i32.shl") == 0) { return makeBinary(s, BinaryOp::ShlInt32); } + goto parse_error; + case 'r': { + switch (op[8]) { + case 's': + if (strcmp(op, "i32.shr_s") == 0) { return makeBinary(s, BinaryOp::ShrSInt32); } + goto parse_error; + case 'u': + if (strcmp(op, "i32.shr_u") == 0) { return makeBinary(s, BinaryOp::ShrUInt32); } + goto parse_error; + default: goto parse_error; + } + } + default: goto parse_error; + } + } + case 't': { + switch (op[9]) { + case '\0': + if (strcmp(op, "i32.store") == 0) { return makeStore(s, Type::i32, /*isAtomic=*/false); } + goto parse_error; + case '1': + if (strcmp(op, "i32.store16") == 0) { return makeStore(s, Type::i32, /*isAtomic=*/false); } + goto parse_error; + case '8': + if (strcmp(op, "i32.store8") == 0) { return makeStore(s, Type::i32, /*isAtomic=*/false); } + goto parse_error; + default: goto parse_error; + } + } case 'u': - if (strcmp(op, "i32x4.ge_u") == 0) { return makeBinary(s, BinaryOp::GeUVecI32x4); } + if (strcmp(op, "i32.sub") == 0) { return makeBinary(s, BinaryOp::SubInt32); } goto parse_error; default: goto parse_error; } } case 't': { - switch (op[9]) { - case 's': - if (strcmp(op, "i32x4.gt_s") == 0) { return makeBinary(s, BinaryOp::GtSVecI32x4); } - goto parse_error; - case 'u': - if (strcmp(op, "i32x4.gt_u") == 0) { return makeBinary(s, BinaryOp::GtUVecI32x4); } - goto parse_error; + switch (op[10]) { + case 'f': { + switch (op[11]) { + case '3': { + switch (op[14]) { + case 's': + if (strcmp(op, "i32.trunc_f32_s") == 0) { return makeUnary(s, UnaryOp::TruncSFloat32ToInt32); } + goto parse_error; + case 'u': + if (strcmp(op, "i32.trunc_f32_u") == 0) { return makeUnary(s, UnaryOp::TruncUFloat32ToInt32); } + goto parse_error; + default: goto parse_error; + } + } + case '6': { + switch (op[14]) { + case 's': + if (strcmp(op, "i32.trunc_f64_s") == 0) { return makeUnary(s, UnaryOp::TruncSFloat64ToInt32); } + goto parse_error; + case 'u': + if (strcmp(op, "i32.trunc_f64_u") == 0) { return makeUnary(s, UnaryOp::TruncUFloat64ToInt32); } + goto parse_error; + default: goto parse_error; + } + } + default: goto parse_error; + } + } + case 's': { + switch (op[15]) { + case '3': { + switch (op[18]) { + case 's': + if (strcmp(op, "i32.trunc_sat_f32_s") == 0) { return makeUnary(s, UnaryOp::TruncSatSFloat32ToInt32); } + goto parse_error; + case 'u': + if (strcmp(op, "i32.trunc_sat_f32_u") == 0) { return makeUnary(s, UnaryOp::TruncSatUFloat32ToInt32); } + goto parse_error; + default: goto parse_error; + } + } + case '6': { + switch (op[18]) { + case 's': + if (strcmp(op, "i32.trunc_sat_f64_s") == 0) { return makeUnary(s, UnaryOp::TruncSatSFloat64ToInt32); } + goto parse_error; + case 'u': + if (strcmp(op, "i32.trunc_sat_f64_u") == 0) { return makeUnary(s, UnaryOp::TruncSatUFloat64ToInt32); } + goto parse_error; + default: goto parse_error; + } + } + default: goto parse_error; + } + } default: goto parse_error; } } + case 'w': + if (strcmp(op, "i32.wrap_i64") == 0) { return makeUnary(s, UnaryOp::WrapInt64); } + goto parse_error; + case 'x': + if (strcmp(op, "i32.xor") == 0) { return makeBinary(s, BinaryOp::XorInt32); } + goto parse_error; default: goto parse_error; } } - case 'l': { - switch (op[7]) { - case 'e': { - switch (op[9]) { - case 's': - if (strcmp(op, "i32x4.le_s") == 0) { return makeBinary(s, BinaryOp::LeSVecI32x4); } + case 'x': { + switch (op[6]) { + case 'a': { + switch (op[7]) { + case 'b': + if (strcmp(op, "i32x4.abs") == 0) { return makeUnary(s, UnaryOp::AbsVecI32x4); } goto parse_error; - case 'u': - if (strcmp(op, "i32x4.le_u") == 0) { return makeBinary(s, BinaryOp::LeUVecI32x4); } + case 'd': + if (strcmp(op, "i32x4.add") == 0) { return makeBinary(s, BinaryOp::AddVecI32x4); } goto parse_error; - default: goto parse_error; - } - } - case 'o': { - switch (op[15]) { - case 's': - if (strcmp(op, "i32x4.load16x4_s") == 0) { return makeSIMDLoad(s, SIMDLoadOp::LoadExtSVec16x4ToVecI32x4); } + case 'l': + if (strcmp(op, "i32x4.all_true") == 0) { return makeUnary(s, UnaryOp::AllTrueVecI32x4); } goto parse_error; - case 'u': - if (strcmp(op, "i32x4.load16x4_u") == 0) { return makeSIMDLoad(s, SIMDLoadOp::LoadExtUVec16x4ToVecI32x4); } + case 'n': + if (strcmp(op, "i32x4.any_true") == 0) { return makeUnary(s, UnaryOp::AnyTrueVecI32x4); } goto parse_error; default: goto parse_error; } } - case 't': { - switch (op[9]) { - case 's': - if (strcmp(op, "i32x4.lt_s") == 0) { return makeBinary(s, BinaryOp::LtSVecI32x4); } - goto parse_error; - case 'u': - if (strcmp(op, "i32x4.lt_u") == 0) { return makeBinary(s, BinaryOp::LtUVecI32x4); } + case 'b': + if (strcmp(op, "i32x4.bitmask") == 0) { return makeUnary(s, UnaryOp::BitmaskVecI32x4); } + goto parse_error; + case 'd': + if (strcmp(op, "i32x4.dot_i16x8_s") == 0) { return makeBinary(s, BinaryOp::DotSVecI16x8ToVecI32x4); } + goto parse_error; + case 'e': { + switch (op[7]) { + case 'q': + if (strcmp(op, "i32x4.eq") == 0) { return makeBinary(s, BinaryOp::EqVecI32x4); } goto parse_error; + case 'x': { + switch (op[9]) { + case 'a': { + switch (op[28]) { + case 's': + if (strcmp(op, "i32x4.extadd_pairwise_i16x8_s") == 0) { return makeUnary(s, UnaryOp::ExtAddPairwiseSVecI16x8ToI32x4); } + goto parse_error; + case 'u': + if (strcmp(op, "i32x4.extadd_pairwise_i16x8_u") == 0) { return makeUnary(s, UnaryOp::ExtAddPairwiseUVecI16x8ToI32x4); } + goto parse_error; + default: goto parse_error; + } + } + case 'm': { + switch (op[13]) { + case 'h': { + switch (op[24]) { + case 's': + if (strcmp(op, "i32x4.extmul_high_i16x8_s") == 0) { return makeBinary(s, BinaryOp::ExtMulHighSVecI32x4); } + goto parse_error; + case 'u': + if (strcmp(op, "i32x4.extmul_high_i16x8_u") == 0) { return makeBinary(s, BinaryOp::ExtMulHighUVecI32x4); } + goto parse_error; + default: goto parse_error; + } + } + case 'l': { + switch (op[23]) { + case 's': + if (strcmp(op, "i32x4.extmul_low_i16x8_s") == 0) { return makeBinary(s, BinaryOp::ExtMulLowSVecI32x4); } + goto parse_error; + case 'u': + if (strcmp(op, "i32x4.extmul_low_i16x8_u") == 0) { return makeBinary(s, BinaryOp::ExtMulLowUVecI32x4); } + goto parse_error; + default: goto parse_error; + } + } + default: goto parse_error; + } + } + case 'r': + if (strcmp(op, "i32x4.extract_lane") == 0) { return makeSIMDExtract(s, SIMDExtractOp::ExtractLaneVecI32x4, 4); } + goto parse_error; + default: goto parse_error; + } + } default: goto parse_error; } } - default: goto parse_error; - } - } - case 'm': { - switch (op[7]) { - case 'a': { - switch (op[10]) { - case 's': - if (strcmp(op, "i32x4.max_s") == 0) { return makeBinary(s, BinaryOp::MaxSVecI32x4); } - goto parse_error; - case 'u': - if (strcmp(op, "i32x4.max_u") == 0) { return makeBinary(s, BinaryOp::MaxUVecI32x4); } - goto parse_error; + case 'g': { + switch (op[7]) { + case 'e': { + switch (op[9]) { + case 's': + if (strcmp(op, "i32x4.ge_s") == 0) { return makeBinary(s, BinaryOp::GeSVecI32x4); } + goto parse_error; + case 'u': + if (strcmp(op, "i32x4.ge_u") == 0) { return makeBinary(s, BinaryOp::GeUVecI32x4); } + goto parse_error; + default: goto parse_error; + } + } + case 't': { + switch (op[9]) { + case 's': + if (strcmp(op, "i32x4.gt_s") == 0) { return makeBinary(s, BinaryOp::GtSVecI32x4); } + goto parse_error; + case 'u': + if (strcmp(op, "i32x4.gt_u") == 0) { return makeBinary(s, BinaryOp::GtUVecI32x4); } + goto parse_error; + default: goto parse_error; + } + } default: goto parse_error; } } - case 'i': { - switch (op[10]) { - case 's': - if (strcmp(op, "i32x4.min_s") == 0) { return makeBinary(s, BinaryOp::MinSVecI32x4); } - goto parse_error; - case 'u': - if (strcmp(op, "i32x4.min_u") == 0) { return makeBinary(s, BinaryOp::MinUVecI32x4); } - goto parse_error; + case 'l': { + switch (op[7]) { + case 'e': { + switch (op[9]) { + case 's': + if (strcmp(op, "i32x4.le_s") == 0) { return makeBinary(s, BinaryOp::LeSVecI32x4); } + goto parse_error; + case 'u': + if (strcmp(op, "i32x4.le_u") == 0) { return makeBinary(s, BinaryOp::LeUVecI32x4); } + goto parse_error; + default: goto parse_error; + } + } + case 'o': { + switch (op[15]) { + case 's': + if (strcmp(op, "i32x4.load16x4_s") == 0) { return makeSIMDLoad(s, SIMDLoadOp::LoadExtSVec16x4ToVecI32x4); } + goto parse_error; + case 'u': + if (strcmp(op, "i32x4.load16x4_u") == 0) { return makeSIMDLoad(s, SIMDLoadOp::LoadExtUVec16x4ToVecI32x4); } + goto parse_error; + default: goto parse_error; + } + } + case 't': { + switch (op[9]) { + case 's': + if (strcmp(op, "i32x4.lt_s") == 0) { return makeBinary(s, BinaryOp::LtSVecI32x4); } + goto parse_error; + case 'u': + if (strcmp(op, "i32x4.lt_u") == 0) { return makeBinary(s, BinaryOp::LtUVecI32x4); } + goto parse_error; + default: goto parse_error; + } + } default: goto parse_error; } } - case 'u': - if (strcmp(op, "i32x4.mul") == 0) { return makeBinary(s, BinaryOp::MulVecI32x4); } - goto parse_error; - default: goto parse_error; - } - } - case 'n': { - switch (op[8]) { - case '\0': - if (strcmp(op, "i32x4.ne") == 0) { return makeBinary(s, BinaryOp::NeVecI32x4); } - goto parse_error; - case 'g': - if (strcmp(op, "i32x4.neg") == 0) { return makeUnary(s, UnaryOp::NegVecI32x4); } - goto parse_error; - default: goto parse_error; - } - } - case 'r': - if (strcmp(op, "i32x4.replace_lane") == 0) { return makeSIMDReplace(s, SIMDReplaceOp::ReplaceLaneVecI32x4, 4); } - goto parse_error; - case 's': { - switch (op[7]) { - case 'h': { - switch (op[8]) { - case 'l': - if (strcmp(op, "i32x4.shl") == 0) { return makeSIMDShift(s, SIMDShiftOp::ShlVecI32x4); } - goto parse_error; - case 'r': { + case 'm': { + switch (op[7]) { + case 'a': { + switch (op[10]) { + case 's': + if (strcmp(op, "i32x4.max_s") == 0) { return makeBinary(s, BinaryOp::MaxSVecI32x4); } + goto parse_error; + case 'u': + if (strcmp(op, "i32x4.max_u") == 0) { return makeBinary(s, BinaryOp::MaxUVecI32x4); } + goto parse_error; + default: goto parse_error; + } + } + case 'i': { switch (op[10]) { case 's': - if (strcmp(op, "i32x4.shr_s") == 0) { return makeSIMDShift(s, SIMDShiftOp::ShrSVecI32x4); } + if (strcmp(op, "i32x4.min_s") == 0) { return makeBinary(s, BinaryOp::MinSVecI32x4); } goto parse_error; case 'u': - if (strcmp(op, "i32x4.shr_u") == 0) { return makeSIMDShift(s, SIMDShiftOp::ShrUVecI32x4); } + if (strcmp(op, "i32x4.min_u") == 0) { return makeBinary(s, BinaryOp::MinUVecI32x4); } goto parse_error; default: goto parse_error; } } + case 'u': + if (strcmp(op, "i32x4.mul") == 0) { return makeBinary(s, BinaryOp::MulVecI32x4); } + goto parse_error; default: goto parse_error; } } - case 'p': - if (strcmp(op, "i32x4.splat") == 0) { return makeUnary(s, UnaryOp::SplatVecI32x4); } - goto parse_error; - case 'u': - if (strcmp(op, "i32x4.sub") == 0) { return makeBinary(s, BinaryOp::SubVecI32x4); } - goto parse_error; - default: goto parse_error; - } - } - case 't': { - switch (op[22]) { - case 's': - if (strcmp(op, "i32x4.trunc_sat_f32x4_s") == 0) { return makeUnary(s, UnaryOp::TruncSatSVecF32x4ToVecI32x4); } - goto parse_error; - case 'u': - if (strcmp(op, "i32x4.trunc_sat_f32x4_u") == 0) { return makeUnary(s, UnaryOp::TruncSatUVecF32x4ToVecI32x4); } + case 'n': { + switch (op[8]) { + case '\0': + if (strcmp(op, "i32x4.ne") == 0) { return makeBinary(s, BinaryOp::NeVecI32x4); } + goto parse_error; + case 'g': + if (strcmp(op, "i32x4.neg") == 0) { return makeUnary(s, UnaryOp::NegVecI32x4); } + goto parse_error; + default: goto parse_error; + } + } + case 'r': + if (strcmp(op, "i32x4.replace_lane") == 0) { return makeSIMDReplace(s, SIMDReplaceOp::ReplaceLaneVecI32x4, 4); } goto parse_error; - default: goto parse_error; - } - } - case 'w': { - switch (op[12]) { - case 'h': { - switch (op[23]) { - case 's': - if (strcmp(op, "i32x4.widen_high_i16x8_s") == 0) { return makeUnary(s, UnaryOp::WidenHighSVecI16x8ToVecI32x4); } + case 's': { + switch (op[7]) { + case 'h': { + switch (op[8]) { + case 'l': + if (strcmp(op, "i32x4.shl") == 0) { return makeSIMDShift(s, SIMDShiftOp::ShlVecI32x4); } + goto parse_error; + case 'r': { + switch (op[10]) { + case 's': + if (strcmp(op, "i32x4.shr_s") == 0) { return makeSIMDShift(s, SIMDShiftOp::ShrSVecI32x4); } + goto parse_error; + case 'u': + if (strcmp(op, "i32x4.shr_u") == 0) { return makeSIMDShift(s, SIMDShiftOp::ShrUVecI32x4); } + goto parse_error; + default: goto parse_error; + } + } + default: goto parse_error; + } + } + case 'p': + if (strcmp(op, "i32x4.splat") == 0) { return makeUnary(s, UnaryOp::SplatVecI32x4); } goto parse_error; case 'u': - if (strcmp(op, "i32x4.widen_high_i16x8_u") == 0) { return makeUnary(s, UnaryOp::WidenHighUVecI16x8ToVecI32x4); } + if (strcmp(op, "i32x4.sub") == 0) { return makeBinary(s, BinaryOp::SubVecI32x4); } goto parse_error; default: goto parse_error; } } - case 'l': { + case 't': { switch (op[22]) { case 's': - if (strcmp(op, "i32x4.widen_low_i16x8_s") == 0) { return makeUnary(s, UnaryOp::WidenLowSVecI16x8ToVecI32x4); } + if (strcmp(op, "i32x4.trunc_sat_f32x4_s") == 0) { return makeUnary(s, UnaryOp::TruncSatSVecF32x4ToVecI32x4); } goto parse_error; case 'u': - if (strcmp(op, "i32x4.widen_low_i16x8_u") == 0) { return makeUnary(s, UnaryOp::WidenLowUVecI16x8ToVecI32x4); } + if (strcmp(op, "i32x4.trunc_sat_f32x4_u") == 0) { return makeUnary(s, UnaryOp::TruncSatUVecF32x4ToVecI32x4); } goto parse_error; default: goto parse_error; } } + case 'w': { + switch (op[12]) { + case 'h': { + switch (op[23]) { + case 's': + if (strcmp(op, "i32x4.widen_high_i16x8_s") == 0) { return makeUnary(s, UnaryOp::WidenHighSVecI16x8ToVecI32x4); } + goto parse_error; + case 'u': + if (strcmp(op, "i32x4.widen_high_i16x8_u") == 0) { return makeUnary(s, UnaryOp::WidenHighUVecI16x8ToVecI32x4); } + goto parse_error; + default: goto parse_error; + } + } + case 'l': { + switch (op[22]) { + case 's': + if (strcmp(op, "i32x4.widen_low_i16x8_s") == 0) { return makeUnary(s, UnaryOp::WidenLowSVecI16x8ToVecI32x4); } + goto parse_error; + case 'u': + if (strcmp(op, "i32x4.widen_low_i16x8_u") == 0) { return makeUnary(s, UnaryOp::WidenLowUVecI16x8ToVecI32x4); } + goto parse_error; + default: goto parse_error; + } + } + default: goto parse_error; + } + } default: goto parse_error; } } @@ -1801,9 +1995,6 @@ default: goto parse_error; } } - case 'w': - if (strcmp(op, "i64.atomic.wait") == 0) { return makeAtomicWait(s, Type::i64); } - goto parse_error; default: goto parse_error; } } @@ -1980,17 +2171,9 @@ case 'o': if (strcmp(op, "i64.or") == 0) { return makeBinary(s, BinaryOp::OrInt64); } goto parse_error; - case 'p': { - switch (op[7]) { - case '\0': - if (strcmp(op, "i64.pop") == 0) { return makePop(Type::i64); } - goto parse_error; - case 'c': - if (strcmp(op, "i64.popcnt") == 0) { return makeUnary(s, UnaryOp::PopcntInt64); } - goto parse_error; - default: goto parse_error; - } - } + case 'p': + if (strcmp(op, "i64.popcnt") == 0) { return makeUnary(s, UnaryOp::PopcntInt64); } + goto parse_error; case 'r': { switch (op[5]) { case 'e': { @@ -2137,23 +2320,55 @@ } case 'x': { switch (op[6]) { - case 'a': { + case 'a': + if (strcmp(op, "i64x2.add") == 0) { return makeBinary(s, BinaryOp::AddVecI64x2); } + goto parse_error; + case 'b': + if (strcmp(op, "i64x2.bitmask") == 0) { return makeUnary(s, UnaryOp::BitmaskVecI64x2); } + goto parse_error; + case 'e': { switch (op[7]) { - case 'd': - if (strcmp(op, "i64x2.add") == 0) { return makeBinary(s, BinaryOp::AddVecI64x2); } - goto parse_error; - case 'l': - if (strcmp(op, "i64x2.all_true") == 0) { return makeUnary(s, UnaryOp::AllTrueVecI64x2); } - goto parse_error; - case 'n': - if (strcmp(op, "i64x2.any_true") == 0) { return makeUnary(s, UnaryOp::AnyTrueVecI64x2); } + case 'q': + if (strcmp(op, "i64x2.eq") == 0) { return makeBinary(s, BinaryOp::EqVecI64x2); } goto parse_error; + case 'x': { + switch (op[9]) { + case 'm': { + switch (op[13]) { + case 'h': { + switch (op[24]) { + case 's': + if (strcmp(op, "i64x2.extmul_high_i32x4_s") == 0) { return makeBinary(s, BinaryOp::ExtMulHighSVecI64x2); } + goto parse_error; + case 'u': + if (strcmp(op, "i64x2.extmul_high_i32x4_u") == 0) { return makeBinary(s, BinaryOp::ExtMulHighUVecI64x2); } + goto parse_error; + default: goto parse_error; + } + } + case 'l': { + switch (op[23]) { + case 's': + if (strcmp(op, "i64x2.extmul_low_i32x4_s") == 0) { return makeBinary(s, BinaryOp::ExtMulLowSVecI64x2); } + goto parse_error; + case 'u': + if (strcmp(op, "i64x2.extmul_low_i32x4_u") == 0) { return makeBinary(s, BinaryOp::ExtMulLowUVecI64x2); } + goto parse_error; + default: goto parse_error; + } + } + default: goto parse_error; + } + } + case 'r': + if (strcmp(op, "i64x2.extract_lane") == 0) { return makeSIMDExtract(s, SIMDExtractOp::ExtractLaneVecI64x2, 2); } + goto parse_error; + default: goto parse_error; + } + } default: goto parse_error; } } - case 'e': - if (strcmp(op, "i64x2.extract_lane") == 0) { return makeSIMDExtract(s, SIMDExtractOp::ExtractLaneVecI64x2, 2); } - goto parse_error; case 'l': { switch (op[15]) { case 's': @@ -2165,6 +2380,9 @@ default: goto parse_error; } } + case 'm': + if (strcmp(op, "i64x2.mul") == 0) { return makeBinary(s, BinaryOp::MulVecI64x2); } + goto parse_error; case 'n': if (strcmp(op, "i64x2.neg") == 0) { return makeUnary(s, UnaryOp::NegVecI64x2); } goto parse_error; @@ -2212,6 +2430,33 @@ default: goto parse_error; } } + case 'w': { + switch (op[12]) { + case 'h': { + switch (op[23]) { + case 's': + if (strcmp(op, "i64x2.widen_high_i32x4_s") == 0) { return makeUnary(s, UnaryOp::WidenHighSVecI32x4ToVecI64x2); } + goto parse_error; + case 'u': + if (strcmp(op, "i64x2.widen_high_i32x4_u") == 0) { return makeUnary(s, UnaryOp::WidenHighUVecI32x4ToVecI64x2); } + goto parse_error; + default: goto parse_error; + } + } + case 'l': { + switch (op[22]) { + case 's': + if (strcmp(op, "i64x2.widen_low_i32x4_s") == 0) { return makeUnary(s, UnaryOp::WidenLowSVecI32x4ToVecI64x2); } + goto parse_error; + case 'u': + if (strcmp(op, "i64x2.widen_low_i32x4_u") == 0) { return makeUnary(s, UnaryOp::WidenLowUVecI32x4ToVecI64x2); } + goto parse_error; + default: goto parse_error; + } + } + default: goto parse_error; + } + } default: goto parse_error; } } @@ -2222,6 +2467,9 @@ switch (op[6]) { case 'a': { switch (op[7]) { + case 'b': + if (strcmp(op, "i8x16.abs") == 0) { return makeUnary(s, UnaryOp::AbsVecI8x16); } + goto parse_error; case 'd': { switch (op[9]) { case '\0': @@ -2253,6 +2501,9 @@ default: goto parse_error; } } + case 'b': + if (strcmp(op, "i8x16.bitmask") == 0) { return makeUnary(s, UnaryOp::BitmaskVecI8x16); } + goto parse_error; case 'e': { switch (op[7]) { case 'q': @@ -2383,6 +2634,9 @@ default: goto parse_error; } } + case 'p': + if (strcmp(op, "i8x16.popcnt") == 0) { return makeUnary(s, UnaryOp::PopcntVecI8x16); } + goto parse_error; case 'r': if (strcmp(op, "i8x16.replace_lane") == 0) { return makeSIMDReplace(s, SIMDReplaceOp::ReplaceLaneVecI8x16, 16); } goto parse_error; @@ -2465,6 +2719,25 @@ } case 'm': { switch (op[7]) { + case 'a': { + switch (op[14]) { + case 'n': + if (strcmp(op, "memory.atomic.notify") == 0) { return makeAtomicNotify(s); } + goto parse_error; + case 'w': { + switch (op[18]) { + case '3': + if (strcmp(op, "memory.atomic.wait32") == 0) { return makeAtomicWait(s, Type::i32); } + goto parse_error; + case '6': + if (strcmp(op, "memory.atomic.wait64") == 0) { return makeAtomicWait(s, Type::i64); } + goto parse_error; + default: goto parse_error; + } + } + default: goto parse_error; + } + } case 'c': if (strcmp(op, "memory.copy") == 0) { return makeMemoryCopy(s); } goto parse_error; @@ -2472,64 +2745,137 @@ if (strcmp(op, "memory.fill") == 0) { return makeMemoryFill(s); } goto parse_error; case 'g': - if (strcmp(op, "memory.grow") == 0) { return makeHost(s, HostOp::MemoryGrow); } + if (strcmp(op, "memory.grow") == 0) { return makeMemoryGrow(s); } goto parse_error; case 'i': if (strcmp(op, "memory.init") == 0) { return makeMemoryInit(s); } goto parse_error; case 's': - if (strcmp(op, "memory.size") == 0) { return makeHost(s, HostOp::MemorySize); } + if (strcmp(op, "memory.size") == 0) { return makeMemorySize(s); } goto parse_error; default: goto parse_error; } } - case 'n': { + case 'n': + if (strcmp(op, "nop") == 0) { return makeNop(); } + goto parse_error; + case 'p': { switch (op[1]) { case 'o': - if (strcmp(op, "nop") == 0) { return makeNop(); } - goto parse_error; - case 'u': - if (strcmp(op, "nullref.pop") == 0) { return makePop(Type::nullref); } + if (strcmp(op, "pop") == 0) { return makePop(s); } goto parse_error; + case 'r': { + switch (op[9]) { + case 'n': + if (strcmp(op, "prefetch.nt") == 0) { return makePrefetch(s, PrefetchOp::PrefetchNontemporal); } + goto parse_error; + case 't': + if (strcmp(op, "prefetch.t") == 0) { return makePrefetch(s, PrefetchOp::PrefetchTemporal); } + goto parse_error; + default: goto parse_error; + } + } default: goto parse_error; } } - case 'p': - if (strcmp(op, "push") == 0) { return makePush(s); } - goto parse_error; case 'r': { - switch (op[2]) { - case 'f': { + switch (op[1]) { + case 'e': { + switch (op[2]) { + case 'f': { + switch (op[4]) { + case 'c': + if (strcmp(op, "ref.cast") == 0) { return makeRefCast(s); } + goto parse_error; + case 'e': + if (strcmp(op, "ref.eq") == 0) { return makeRefEq(s); } + goto parse_error; + case 'f': + if (strcmp(op, "ref.func") == 0) { return makeRefFunc(s); } + goto parse_error; + case 'i': + if (strcmp(op, "ref.is_null") == 0) { return makeRefIsNull(s); } + goto parse_error; + case 'n': + if (strcmp(op, "ref.null") == 0) { return makeRefNull(s); } + goto parse_error; + case 't': + if (strcmp(op, "ref.test") == 0) { return makeRefTest(s); } + goto parse_error; + default: goto parse_error; + } + } + case 't': { + switch (op[3]) { + case 'h': + if (strcmp(op, "rethrow") == 0) { return makeRethrow(s); } + goto parse_error; + case 'u': { + switch (op[6]) { + case '\0': + if (strcmp(op, "return") == 0) { return makeReturn(s); } + goto parse_error; + case '_': { + switch (op[11]) { + case '\0': + if (strcmp(op, "return_call") == 0) { return makeCall(s, /*isReturn=*/true); } + goto parse_error; + case '_': { + switch (op[12]) { + case 'i': + if (strcmp(op, "return_call_indirect") == 0) { return makeCallIndirect(s, /*isReturn=*/true); } + goto parse_error; + case 'r': + if (strcmp(op, "return_call_ref") == 0) { return makeCallRef(s, /*isReturn=*/true); } + goto parse_error; + default: goto parse_error; + } + } + default: goto parse_error; + } + } + default: goto parse_error; + } + } + default: goto parse_error; + } + } + default: goto parse_error; + } + } + case 't': { switch (op[4]) { - case 'f': - if (strcmp(op, "ref.func") == 0) { return makeRefFunc(s); } + case 'c': + if (strcmp(op, "rtt.canon") == 0) { return makeRttCanon(s); } goto parse_error; - case 'i': - if (strcmp(op, "ref.is_null") == 0) { return makeRefIsNull(s); } - goto parse_error; - case 'n': - if (strcmp(op, "ref.null") == 0) { return makeRefNull(s); } + case 's': + if (strcmp(op, "rtt.sub") == 0) { return makeRttSub(s); } goto parse_error; default: goto parse_error; } } + default: goto parse_error; + } + } + case 's': { + switch (op[1]) { + case 'e': + if (strcmp(op, "select") == 0) { return makeSelect(s); } + goto parse_error; case 't': { - switch (op[3]) { - case 'h': - if (strcmp(op, "rethrow") == 0) { return makeRethrow(s); } - goto parse_error; - case 'u': { - switch (op[6]) { + switch (op[7]) { + case 'g': { + switch (op[10]) { case '\0': - if (strcmp(op, "return") == 0) { return makeReturn(s); } + if (strcmp(op, "struct.get") == 0) { return makeStructGet(s); } goto parse_error; case '_': { switch (op[11]) { - case '\0': - if (strcmp(op, "return_call") == 0) { return makeCall(s, /*isReturn=*/true); } + case 's': + if (strcmp(op, "struct.get_s") == 0) { return makeStructGet(s, true); } goto parse_error; - case '_': - if (strcmp(op, "return_call_indirect") == 0) { return makeCallIndirect(s, /*isReturn=*/true); } + case 'u': + if (strcmp(op, "struct.get_u") == 0) { return makeStructGet(s, false); } goto parse_error; default: goto parse_error; } @@ -2537,15 +2883,26 @@ default: goto parse_error; } } + case 'n': { + switch (op[11]) { + case 'd': + if (strcmp(op, "struct.new_default_with_rtt") == 0) { return makeStructNew(s, true); } + goto parse_error; + case 'w': + if (strcmp(op, "struct.new_with_rtt") == 0) { return makeStructNew(s, false); } + goto parse_error; + default: goto parse_error; + } + } + case 's': + if (strcmp(op, "struct.set") == 0) { return makeStructSet(s); } + goto parse_error; default: goto parse_error; } } default: goto parse_error; } } - case 's': - if (strcmp(op, "select") == 0) { return makeSelect(s); } - goto parse_error; case 't': { switch (op[1]) { case 'h': { @@ -2562,6 +2919,17 @@ case 'r': if (strcmp(op, "try") == 0) { return makeTry(s); } goto parse_error; + case 'u': { + switch (op[6]) { + case 'e': + if (strcmp(op, "tuple.extract") == 0) { return makeTupleExtract(s); } + goto parse_error; + case 'm': + if (strcmp(op, "tuple.make") == 0) { return makeTupleMake(s); } + goto parse_error; + default: goto parse_error; + } + } default: goto parse_error; } } @@ -2591,39 +2959,110 @@ case 'c': if (strcmp(op, "v128.const") == 0) { return makeConst(s, Type::v128); } goto parse_error; - case 'l': - if (strcmp(op, "v128.load") == 0) { return makeLoad(s, Type::v128, /*isAtomic=*/false); } - goto parse_error; + case 'l': { + switch (op[9]) { + case '\0': + if (strcmp(op, "v128.load") == 0) { return makeLoad(s, Type::v128, /*isAtomic=*/false); } + goto parse_error; + case '1': + if (strcmp(op, "v128.load16_lane") == 0) { return makeSIMDLoadStoreLane(s, LoadLaneVec16x8); } + goto parse_error; + case '3': { + switch (op[12]) { + case 'l': + if (strcmp(op, "v128.load32_lane") == 0) { return makeSIMDLoadStoreLane(s, LoadLaneVec32x4); } + goto parse_error; + case 'z': + if (strcmp(op, "v128.load32_zero") == 0) { return makeSIMDLoad(s, SIMDLoadOp::Load32Zero); } + goto parse_error; + default: goto parse_error; + } + } + case '6': { + switch (op[12]) { + case 'l': + if (strcmp(op, "v128.load64_lane") == 0) { return makeSIMDLoadStoreLane(s, LoadLaneVec64x2); } + goto parse_error; + case 'z': + if (strcmp(op, "v128.load64_zero") == 0) { return makeSIMDLoad(s, SIMDLoadOp::Load64Zero); } + goto parse_error; + default: goto parse_error; + } + } + case '8': + if (strcmp(op, "v128.load8_lane") == 0) { return makeSIMDLoadStoreLane(s, LoadLaneVec8x16); } + goto parse_error; + default: goto parse_error; + } + } case 'n': if (strcmp(op, "v128.not") == 0) { return makeUnary(s, UnaryOp::NotVec128); } goto parse_error; case 'o': if (strcmp(op, "v128.or") == 0) { return makeBinary(s, BinaryOp::OrVec128); } goto parse_error; - case 'p': - if (strcmp(op, "v128.pop") == 0) { return makePop(Type::v128); } - goto parse_error; - case 's': - if (strcmp(op, "v128.store") == 0) { return makeStore(s, Type::v128, /*isAtomic=*/false); } - goto parse_error; + case 's': { + switch (op[10]) { + case '\0': + if (strcmp(op, "v128.store") == 0) { return makeStore(s, Type::v128, /*isAtomic=*/false); } + goto parse_error; + case '1': + if (strcmp(op, "v128.store16_lane") == 0) { return makeSIMDLoadStoreLane(s, StoreLaneVec16x8); } + goto parse_error; + case '3': + if (strcmp(op, "v128.store32_lane") == 0) { return makeSIMDLoadStoreLane(s, StoreLaneVec32x4); } + goto parse_error; + case '6': + if (strcmp(op, "v128.store64_lane") == 0) { return makeSIMDLoadStoreLane(s, StoreLaneVec64x2); } + goto parse_error; + case '8': + if (strcmp(op, "v128.store8_lane") == 0) { return makeSIMDLoadStoreLane(s, StoreLaneVec8x16); } + goto parse_error; + default: goto parse_error; + } + } case 'x': if (strcmp(op, "v128.xor") == 0) { return makeBinary(s, BinaryOp::XorVec128); } goto parse_error; default: goto parse_error; } } - case '6': - if (strcmp(op, "v16x8.load_splat") == 0) { return makeSIMDLoad(s, SIMDLoadOp::LoadSplatVec16x8); } + case '6': { + switch (op[6]) { + case 'l': + if (strcmp(op, "v16x8.load_splat") == 0) { return makeSIMDLoad(s, SIMDLoadOp::LoadSplatVec16x8); } + goto parse_error; + case 's': + if (strcmp(op, "v16x8.signselect") == 0) { return makeSIMDTernary(s, SIMDTernaryOp::SignSelectVec16x8); } + goto parse_error; + default: goto parse_error; + } + } + default: goto parse_error; + } + } + case '3': { + switch (op[6]) { + case 'l': + if (strcmp(op, "v32x4.load_splat") == 0) { return makeSIMDLoad(s, SIMDLoadOp::LoadSplatVec32x4); } + goto parse_error; + case 's': + if (strcmp(op, "v32x4.signselect") == 0) { return makeSIMDTernary(s, SIMDTernaryOp::SignSelectVec32x4); } + goto parse_error; + default: goto parse_error; + } + } + case '6': { + switch (op[6]) { + case 'l': + if (strcmp(op, "v64x2.load_splat") == 0) { return makeSIMDLoad(s, SIMDLoadOp::LoadSplatVec64x2); } + goto parse_error; + case 's': + if (strcmp(op, "v64x2.signselect") == 0) { return makeSIMDTernary(s, SIMDTernaryOp::SignSelectVec64x2); } goto parse_error; default: goto parse_error; } } - case '3': - if (strcmp(op, "v32x4.load_splat") == 0) { return makeSIMDLoad(s, SIMDLoadOp::LoadSplatVec32x4); } - goto parse_error; - case '6': - if (strcmp(op, "v64x2.load_splat") == 0) { return makeSIMDLoad(s, SIMDLoadOp::LoadSplatVec64x2); } - goto parse_error; case '8': { switch (op[6]) { case 'l': @@ -2634,6 +3073,9 @@ case 'h': if (strcmp(op, "v8x16.shuffle") == 0) { return makeSIMDShuffle(s); } goto parse_error; + case 'i': + if (strcmp(op, "v8x16.signselect") == 0) { return makeSIMDTernary(s, SIMDTernaryOp::SignSelectVec8x16); } + goto parse_error; case 'w': if (strcmp(op, "v8x16.swizzle") == 0) { return makeBinary(s, BinaryOp::SwizzleVec8x16); } goto parse_error; diff -Nru binaryen-91/src/ir/abstract.h binaryen-99/src/ir/abstract.h --- binaryen-91/src/ir/abstract.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/ir/abstract.h 2021-01-07 20:01:06.000000000 +0000 @@ -27,6 +27,7 @@ enum Op { // Unary + Abs, Neg, // Binary Add, @@ -40,27 +41,59 @@ Shl, ShrU, ShrS, + RotL, + RotR, And, Or, Xor, // Relational + EqZ, Eq, Ne, + LtS, + LtU, + LeS, + LeU, + GtS, + GtU, + GeS, + GeU }; +inline bool hasAnyShift(BinaryOp op) { + return op == ShlInt32 || op == ShrSInt32 || op == ShrUInt32 || + op == RotLInt32 || op == RotRInt32 || op == ShlInt64 || + op == ShrSInt64 || op == ShrUInt64 || op == RotLInt64 || + op == RotRInt64; +} + // Provide a wasm type and an abstract op and get the concrete one. For example, // you can provide i32 and Add and receive the specific opcode for a 32-bit // addition, AddInt32. If the op does not exist, it returns Invalid. inline UnaryOp getUnary(Type type, Op op) { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: { - return InvalidUnary; + switch (op) { + case EqZ: + return EqZInt32; + default: + return InvalidUnary; + } + break; } case Type::i64: { - return InvalidUnary; + switch (op) { + case EqZ: + return EqZInt64; + default: + return InvalidUnary; + } + break; } case Type::f32: { switch (op) { + case Abs: + return AbsFloat32; case Neg: return NegFloat32; default: @@ -70,6 +103,8 @@ } case Type::f64: { switch (op) { + case Abs: + return AbsFloat64; case Neg: return NegFloat64; default: @@ -77,13 +112,13 @@ } break; } - case Type::v128: { - WASM_UNREACHABLE("v128 not implemented yet"); - } + case Type::v128: case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: case Type::unreachable: { return InvalidUnary; @@ -93,7 +128,7 @@ } inline BinaryOp getBinary(Type type, Op op) { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: { switch (op) { case Add: @@ -116,6 +151,10 @@ return ShrUInt32; case ShrS: return ShrSInt32; + case RotL: + return RotLInt32; + case RotR: + return RotRInt32; case And: return AndInt32; case Or: @@ -126,6 +165,22 @@ return EqInt32; case Ne: return NeInt32; + case LtS: + return LtSInt32; + case LtU: + return LtUInt32; + case LeS: + return LeSInt32; + case LeU: + return LeUInt32; + case GtS: + return GtSInt32; + case GtU: + return GtUInt32; + case GeS: + return GeSInt32; + case GeU: + return GeUInt32; default: return InvalidBinary; } @@ -153,6 +208,10 @@ return ShrUInt64; case ShrS: return ShrSInt64; + case RotL: + return RotLInt64; + case RotR: + return RotRInt64; case And: return AndInt64; case Or: @@ -163,6 +222,22 @@ return EqInt64; case Ne: return NeInt64; + case LtS: + return LtSInt64; + case LtU: + return LtUInt64; + case LeS: + return LeSInt64; + case LeU: + return LeUInt64; + case GtS: + return GtSInt64; + case GtU: + return GtUInt64; + case GeS: + return GeSInt64; + case GeU: + return GeUInt64; default: return InvalidBinary; } @@ -210,13 +285,13 @@ } break; } - case Type::v128: { - WASM_UNREACHABLE("v128 not implemented yet"); - } + case Type::v128: case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: case Type::unreachable: { return InvalidBinary; diff -Nru binaryen-91/src/ir/bits.h binaryen-99/src/ir/bits.h --- binaryen-91/src/ir/bits.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/ir/bits.h 2021-01-07 20:01:06.000000000 +0000 @@ -20,93 +20,404 @@ #include "ir/literal-utils.h" #include "support/bits.h" #include "wasm-builder.h" +#include namespace wasm { -struct Bits { - // get a mask to keep only the low # of bits - static int32_t lowBitMask(int32_t bits) { - uint32_t ret = -1; - if (bits >= 32) { - return ret; - } - return ret >> (32 - bits); - } - - // checks if the input is a mask of lower bits, i.e., all 1s up to some high - // bit, and all zeros from there. returns the number of masked bits, or 0 if - // this is not such a mask - static uint32_t getMaskedBits(uint32_t mask) { - if (mask == uint32_t(-1)) { - return 32; // all the bits - } - if (mask == 0) { - return 0; // trivially not a mask - } - // otherwise, see if adding one turns this into a 1-bit thing, 00011111 + 1 - // => 00100000 - if (PopCount(mask + 1) != 1) { - return 0; - } - // this is indeed a mask - return 32 - CountLeadingZeroes(mask); - } - - // gets the number of effective shifts a shift operation does. In - // wasm, only 5 bits matter for 32-bit shifts, and 6 for 64. - static Index getEffectiveShifts(Index amount, Type type) { - if (type == Type::i32) { - return amount & 31; - } else if (type == Type::i64) { - return amount & 63; - } - WASM_UNREACHABLE("unexpected type"); - } - - static Index getEffectiveShifts(Expression* expr) { - auto* amount = expr->cast(); - if (amount->type == Type::i32) { - return getEffectiveShifts(amount->value.geti32(), Type::i32); - } else if (amount->type == Type::i64) { - return getEffectiveShifts(amount->value.geti64(), Type::i64); - } - WASM_UNREACHABLE("unexpected type"); - } - - static Expression* makeSignExt(Expression* value, Index bytes, Module& wasm) { - if (value->type == Type::i32) { - if (bytes == 1 || bytes == 2) { - auto shifts = bytes == 1 ? 24 : 16; - Builder builder(wasm); - return builder.makeBinary( - ShrSInt32, - builder.makeBinary( - ShlInt32, - value, - LiteralUtils::makeFromInt32(shifts, Type::i32, wasm)), - LiteralUtils::makeFromInt32(shifts, Type::i32, wasm)); - } - assert(bytes == 4); - return value; // nothing to do - } else { - assert(value->type == Type::i64); - if (bytes == 1 || bytes == 2 || bytes == 4) { - auto shifts = bytes == 1 ? 56 : (bytes == 2 ? 48 : 32); - Builder builder(wasm); - return builder.makeBinary( - ShrSInt64, - builder.makeBinary( - ShlInt64, - value, - LiteralUtils::makeFromInt32(shifts, Type::i64, wasm)), - LiteralUtils::makeFromInt32(shifts, Type::i64, wasm)); - } - assert(bytes == 8); - return value; // nothing to do +namespace Bits { + +// get a mask to keep only the low # of bits +inline int32_t lowBitMask(int32_t bits) { + uint32_t ret = -1; + if (bits >= 32) { + return ret; + } + return ret >> (32 - bits); +} + +// checks if the input is a mask of lower bits, i.e., all 1s up to some high +// bit, and all zeros from there. returns the number of masked bits, or 0 if +// this is not such a mask +inline uint32_t getMaskedBits(uint32_t mask) { + if (mask == uint32_t(-1)) { + return 32; // all the bits + } + if (mask == 0) { + return 0; // trivially not a mask + } + // otherwise, see if x & (x + 1) turns this into non-zero value + // 00011111 & (00011111 + 1) => 0 + if (mask & (mask + 1)) { + return 0; + } + // this is indeed a mask + return 32 - countLeadingZeroes(mask); +} + +// gets the number of effective shifts a shift operation does. In +// wasm, only 5 bits matter for 32-bit shifts, and 6 for 64. +inline Index getEffectiveShifts(Index amount, Type type) { + if (type == Type::i32) { + return amount & 31; + } else if (type == Type::i64) { + return amount & 63; + } + WASM_UNREACHABLE("unexpected type"); +} + +inline Index getEffectiveShifts(Expression* expr) { + auto* amount = expr->cast(); + if (amount->type == Type::i32) { + return getEffectiveShifts(amount->value.geti32(), Type::i32); + } else if (amount->type == Type::i64) { + return getEffectiveShifts(amount->value.geti64(), Type::i64); + } + WASM_UNREACHABLE("unexpected type"); +} + +inline Expression* makeSignExt(Expression* value, Index bytes, Module& wasm) { + if (value->type == Type::i32) { + if (bytes == 1 || bytes == 2) { + auto shifts = bytes == 1 ? 24 : 16; + Builder builder(wasm); + return builder.makeBinary( + ShrSInt32, + builder.makeBinary( + ShlInt32, + value, + LiteralUtils::makeFromInt32(shifts, Type::i32, wasm)), + LiteralUtils::makeFromInt32(shifts, Type::i32, wasm)); + } + assert(bytes == 4); + return value; // nothing to do + } else { + assert(value->type == Type::i64); + if (bytes == 1 || bytes == 2 || bytes == 4) { + auto shifts = bytes == 1 ? 56 : (bytes == 2 ? 48 : 32); + Builder builder(wasm); + return builder.makeBinary( + ShrSInt64, + builder.makeBinary( + ShlInt64, + value, + LiteralUtils::makeFromInt32(shifts, Type::i64, wasm)), + LiteralUtils::makeFromInt32(shifts, Type::i64, wasm)); } + assert(bytes == 8); + return value; // nothing to do + } +} + +// getMaxBits() helper that has pessimistic results for the bits used in locals. +struct DummyLocalInfoProvider { + Index getMaxBitsForLocal(LocalGet* get) { + if (get->type == Type::i32) { + return 32; + } else if (get->type == Type::i64) { + return 64; + } + WASM_UNREACHABLE("type has no integer bit size"); } }; +// Returns the maximum amount of bits used in an integer expression +// not extremely precise (doesn't look into add operands, etc.) +// LocalInfoProvider is an optional class that can provide answers about +// local.get. +template +Index getMaxBits(Expression* curr, + LocalInfoProvider* localInfoProvider = nullptr) { + if (auto* c = curr->dynCast()) { + switch (curr->type.getBasic()) { + case Type::i32: + return 32 - c->value.countLeadingZeroes().geti32(); + case Type::i64: + return 64 - c->value.countLeadingZeroes().geti64(); + default: + WASM_UNREACHABLE("invalid type"); + } + } else if (auto* binary = curr->dynCast()) { + switch (binary->op) { + // 32-bit + case RotLInt32: + case RotRInt32: + case SubInt32: + return 32; + case AddInt32: { + auto maxBitsLeft = getMaxBits(binary->left, localInfoProvider); + auto maxBitsRight = getMaxBits(binary->right, localInfoProvider); + return std::min(Index(32), std::max(maxBitsLeft, maxBitsRight) + 1); + } + case MulInt32: { + auto maxBitsRight = getMaxBits(binary->right, localInfoProvider); + auto maxBitsLeft = getMaxBits(binary->left, localInfoProvider); + return std::min(Index(32), maxBitsLeft + maxBitsRight); + } + case DivSInt32: { + if (auto* c = binary->right->dynCast()) { + int32_t maxBitsLeft = getMaxBits(binary->left, localInfoProvider); + // If either side might be negative, then the result will be negative + if (maxBitsLeft == 32 || c->value.geti32() < 0) { + return 32; + } + int32_t bitsRight = getMaxBits(c); + return std::max(0, maxBitsLeft - bitsRight + 1); + } + return 32; + } + case DivUInt32: { + int32_t maxBitsLeft = getMaxBits(binary->left, localInfoProvider); + if (auto* c = binary->right->dynCast()) { + int32_t bitsRight = getMaxBits(c); + return std::max(0, maxBitsLeft - bitsRight + 1); + } + return maxBitsLeft; + } + case RemSInt32: { + if (auto* c = binary->right->dynCast()) { + auto maxBitsLeft = getMaxBits(binary->left, localInfoProvider); + // if left may be negative, the result may be negative + if (maxBitsLeft == 32) { + return 32; + } + auto bitsRight = Index(ceilLog2(c->value.geti32())); + return std::min(maxBitsLeft, bitsRight); + } + return 32; + } + case RemUInt32: { + if (auto* c = binary->right->dynCast()) { + auto maxBitsLeft = getMaxBits(binary->left, localInfoProvider); + auto bitsRight = Index(ceilLog2(c->value.geti32())); + return std::min(maxBitsLeft, bitsRight); + } + return 32; + } + case AndInt32: { + return std::min(getMaxBits(binary->left, localInfoProvider), + getMaxBits(binary->right, localInfoProvider)); + } + case OrInt32: + case XorInt32: { + return std::max(getMaxBits(binary->left, localInfoProvider), + getMaxBits(binary->right, localInfoProvider)); + } + case ShlInt32: { + if (auto* shifts = binary->right->dynCast()) { + return std::min(Index(32), + getMaxBits(binary->left, localInfoProvider) + + Bits::getEffectiveShifts(shifts)); + } + return 32; + } + case ShrUInt32: { + if (auto* shift = binary->right->dynCast()) { + auto maxBits = getMaxBits(binary->left, localInfoProvider); + auto shifts = + std::min(Index(Bits::getEffectiveShifts(shift)), + maxBits); // can ignore more shifts than zero us out + return std::max(Index(0), maxBits - shifts); + } + return 32; + } + case ShrSInt32: { + if (auto* shift = binary->right->dynCast()) { + auto maxBits = getMaxBits(binary->left, localInfoProvider); + // if left may be negative, the result may be negative + if (maxBits == 32) { + return 32; + } + auto shifts = + std::min(Index(Bits::getEffectiveShifts(shift)), + maxBits); // can ignore more shifts than zero us out + return std::max(Index(0), maxBits - shifts); + } + return 32; + } + case RotLInt64: + case RotRInt64: + case SubInt64: + return 64; + case AddInt64: { + auto maxBitsLeft = getMaxBits(binary->left, localInfoProvider); + auto maxBitsRight = getMaxBits(binary->right, localInfoProvider); + return std::min(Index(64), std::max(maxBitsLeft, maxBitsRight) + 1); + } + case MulInt64: { + auto maxBitsRight = getMaxBits(binary->right, localInfoProvider); + auto maxBitsLeft = getMaxBits(binary->left, localInfoProvider); + return std::min(Index(64), maxBitsLeft + maxBitsRight); + } + case DivSInt64: { + if (auto* c = binary->right->dynCast()) { + int32_t maxBitsLeft = getMaxBits(binary->left, localInfoProvider); + // if left or right const value is negative + if (maxBitsLeft == 64 || c->value.geti64() < 0) { + return 64; + } + int32_t bitsRight = getMaxBits(c); + return std::max(0, maxBitsLeft - bitsRight + 1); + } + return 64; + } + case DivUInt64: { + int32_t maxBitsLeft = getMaxBits(binary->left, localInfoProvider); + if (auto* c = binary->right->dynCast()) { + int32_t bitsRight = getMaxBits(c); + return std::max(0, maxBitsLeft - bitsRight + 1); + } + return maxBitsLeft; + } + case RemSInt64: { + if (auto* c = binary->right->dynCast()) { + auto maxBitsLeft = getMaxBits(binary->left, localInfoProvider); + // if left may be negative, the result may be negative + if (maxBitsLeft == 64) { + return 64; + } + auto bitsRight = Index(ceilLog2(c->value.geti64())); + return std::min(maxBitsLeft, bitsRight); + } + return 64; + } + case RemUInt64: { + if (auto* c = binary->right->dynCast()) { + auto maxBitsLeft = getMaxBits(binary->left, localInfoProvider); + auto bitsRight = Index(ceilLog2(c->value.geti64())); + return std::min(maxBitsLeft, bitsRight); + } + return 64; + } + case AndInt64: { + return std::min(getMaxBits(binary->left, localInfoProvider), + getMaxBits(binary->right, localInfoProvider)); + } + case OrInt64: + case XorInt64: { + return std::max(getMaxBits(binary->left, localInfoProvider), + getMaxBits(binary->right, localInfoProvider)); + } + case ShlInt64: { + if (auto* shifts = binary->right->dynCast()) { + auto maxBits = getMaxBits(binary->left, localInfoProvider); + return std::min(Index(64), + Bits::getEffectiveShifts(shifts) + maxBits); + } + return 64; + } + case ShrUInt64: { + if (auto* shift = binary->right->dynCast()) { + auto maxBits = getMaxBits(binary->left, localInfoProvider); + auto shifts = + std::min(Index(Bits::getEffectiveShifts(shift)), + maxBits); // can ignore more shifts than zero us out + return std::max(Index(0), maxBits - shifts); + } + return 64; + } + case ShrSInt64: { + if (auto* shift = binary->right->dynCast()) { + auto maxBits = getMaxBits(binary->left, localInfoProvider); + // if left may be negative, the result may be negative + if (maxBits == 64) { + return 64; + } + auto shifts = + std::min(Index(Bits::getEffectiveShifts(shift)), + maxBits); // can ignore more shifts than zero us out + return std::max(Index(0), maxBits - shifts); + } + return 64; + } + // comparisons + case EqInt32: + case NeInt32: + case LtSInt32: + case LtUInt32: + case LeSInt32: + case LeUInt32: + case GtSInt32: + case GtUInt32: + case GeSInt32: + case GeUInt32: + + case EqInt64: + case NeInt64: + case LtSInt64: + case LtUInt64: + case LeSInt64: + case LeUInt64: + case GtSInt64: + case GtUInt64: + case GeSInt64: + case GeUInt64: + + case EqFloat32: + case NeFloat32: + case LtFloat32: + case LeFloat32: + case GtFloat32: + case GeFloat32: + + case EqFloat64: + case NeFloat64: + case LtFloat64: + case LeFloat64: + case GtFloat64: + case GeFloat64: + return 1; + default: { + } + } + } else if (auto* unary = curr->dynCast()) { + switch (unary->op) { + case ClzInt32: + case CtzInt32: + case PopcntInt32: + return 6; + case ClzInt64: + case CtzInt64: + case PopcntInt64: + return 7; + case EqZInt32: + case EqZInt64: + return 1; + case WrapInt64: + case ExtendUInt32: + return std::min(Index(32), getMaxBits(unary->value, localInfoProvider)); + case ExtendSInt32: { + auto maxBits = getMaxBits(unary->value, localInfoProvider); + return maxBits == 32 ? Index(64) : maxBits; + } + default: { + } + } + } else if (auto* set = curr->dynCast()) { + // a tee passes through the value + return getMaxBits(set->value, localInfoProvider); + } else if (auto* get = curr->dynCast()) { + return localInfoProvider->getMaxBitsForLocal(get); + } else if (auto* load = curr->dynCast()) { + // if signed, then the sign-extension might fill all the bits + // if unsigned, then we have a limit + if (LoadUtils::isSignRelevant(load) && !load->signed_) { + return 8 * load->bytes; + } + } + switch (curr->type.getBasic()) { + case Type::i32: + return 32; + case Type::i64: + return 64; + case Type::unreachable: + return 64; // not interesting, but don't crash + default: + WASM_UNREACHABLE("invalid type"); + } +} + +} // namespace Bits + } // namespace wasm #endif // wasm_ir_bits_h diff -Nru binaryen-91/src/ir/branch-utils.h binaryen-99/src/ir/branch-utils.h --- binaryen-91/src/ir/branch-utils.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/ir/branch-utils.h 2021-01-07 20:01:06.000000000 +0000 @@ -17,6 +17,7 @@ #ifndef wasm_ir_branch_h #define wasm_ir_branch_h +#include "ir/iteration.h" #include "wasm-traversal.h" #include "wasm.h" @@ -27,97 +28,127 @@ // Some branches are obviously not actually reachable (e.g. (br $out // (unreachable))) -inline bool isBranchReachable(Break* br) { - return !(br->value && br->value->type == Type::unreachable) && - !(br->condition && br->condition->type == Type::unreachable); +inline bool isBranchReachable(Expression* expr) { + // If any child is unreachable, the branch is not taken. Note that expr itself + // may be unreachable regardless (as in the case of a simple Break with no + // condition, which is still taken). + for (auto child : ChildIterator(expr)) { + if (child->type == Type::unreachable) { + return false; + } + } + return true; } -inline bool isBranchReachable(Switch* sw) { - return !(sw->value && sw->value->type == Type::unreachable) && - sw->condition->type != Type::unreachable; +// Perform a generic operation on uses of scope names (branch targets) in an +// expression. The provided function receives a Name& which it can modify if it +// needs to. +template void operateOnScopeNameUses(Expression* expr, T func) { +#define DELEGATE_ID expr->_id + +#define DELEGATE_START(id) \ + auto* cast = expr->cast(); \ + WASM_UNUSED(cast); + +#define DELEGATE_GET_FIELD(id, name) cast->name + +#define DELEGATE_FIELD_SCOPE_NAME_USE(id, name) func(cast->name); + +#define DELEGATE_FIELD_CHILD(id, name) +#define DELEGATE_FIELD_INT(id, name) +#define DELEGATE_FIELD_LITERAL(id, name) +#define DELEGATE_FIELD_NAME(id, name) +#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, name) +#define DELEGATE_FIELD_SIGNATURE(id, name) +#define DELEGATE_FIELD_TYPE(id, name) +#define DELEGATE_FIELD_ADDRESS(id, name) +#define DELEGATE_FIELD_CHILD_VECTOR(id, name) +#define DELEGATE_FIELD_INT_ARRAY(id, name) + +#include "wasm-delegations-fields.h" } -inline bool isBranchReachable(BrOnExn* br) { - return br->exnref->type != Type::unreachable; +// Similar to operateOnScopeNameUses, but also passes in the type that is sent +// if the branch is taken. The type is none if there is no value. +template +void operateOnScopeNameUsesAndSentTypes(Expression* expr, T func) { + operateOnScopeNameUses(expr, [&](Name& name) { + // There isn't a delegate mechanism for getting a sent value, so do a direct + // if-else chain. This will need to be updated with new br variants. + if (auto* br = expr->dynCast()) { + func(name, br->value ? br->value->type : Type::none); + } else if (auto* sw = expr->dynCast()) { + func(name, sw->value ? sw->value->type : Type::none); + } else if (auto* br = expr->dynCast()) { + func(name, br->sent); + } else if (auto* br = expr->dynCast()) { + func(name, br->getCastType()); + } else { + WASM_UNREACHABLE("bad br type"); + } + }); } -inline bool isBranchReachable(Expression* expr) { - if (auto* br = expr->dynCast()) { - return isBranchReachable(br); - } else if (auto* sw = expr->dynCast()) { - return isBranchReachable(sw); - } else if (auto* br = expr->dynCast()) { - return isBranchReachable(br); - } - WASM_UNREACHABLE("unexpected expression type"); +// Perform a generic operation on definitions of scope names in an expression. +// The provided function receives a Name& which it can modify if it needs to. +template void operateOnScopeNameDefs(Expression* expr, T func) { +#define DELEGATE_ID expr->_id + +#define DELEGATE_START(id) \ + auto* cast = expr->cast(); \ + WASM_UNUSED(cast); + +#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, name) func(cast->name) + +#define DELEGATE_FIELD_CHILD(id, name) +#define DELEGATE_FIELD_INT(id, name) +#define DELEGATE_FIELD_LITERAL(id, name) +#define DELEGATE_FIELD_NAME(id, name) +#define DELEGATE_FIELD_SIGNATURE(id, name) +#define DELEGATE_FIELD_TYPE(id, name) +#define DELEGATE_FIELD_ADDRESS(id, name) +#define DELEGATE_FIELD_CHILD_VECTOR(id, name) +#define DELEGATE_FIELD_INT_ARRAY(id, name) +#define DELEGATE_FIELD_SCOPE_NAME_USE(id, name) +#define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, name) + +#include "wasm-delegations-fields.h" } -inline std::set getUniqueTargets(Break* br) { return {br->name}; } +using NameSet = std::set; -inline std::set getUniqueTargets(Switch* sw) { - std::set ret; - for (auto target : sw->targets) { - ret.insert(target); - } - ret.insert(sw->default_); +inline NameSet getUniqueTargets(Expression* expr) { + NameSet ret; + operateOnScopeNameUses(expr, [&](Name& name) { ret.insert(name); }); return ret; } -inline std::set getUniqueTargets(BrOnExn* br) { return {br->name}; } - // If we branch to 'from', change that to 'to' instead. inline bool replacePossibleTarget(Expression* branch, Name from, Name to) { bool worked = false; - if (auto* br = branch->dynCast()) { - if (br->name == from) { - br->name = to; + operateOnScopeNameUses(branch, [&](Name& name) { + if (name == from) { + name = to; worked = true; } - } else if (auto* sw = branch->dynCast()) { - for (auto& target : sw->targets) { - if (target == from) { - target = to; - worked = true; - } - } - if (sw->default_ == from) { - sw->default_ = to; - worked = true; - } - } else if (auto* br = branch->dynCast()) { - if (br->name == from) { - br->name = to; - worked = true; - } - } else { - WASM_UNREACHABLE("unexpected expression type"); - } + }); return worked; } -// returns the set of targets to which we branch that are -// outside of a node -inline std::set getExitingBranches(Expression* ast) { - struct Scanner : public PostWalker { - std::set targets; - - void visitBreak(Break* curr) { targets.insert(curr->name); } - void visitSwitch(Switch* curr) { - for (auto target : curr->targets) { - targets.insert(target); - } - targets.insert(curr->default_); - } - void visitBrOnExn(BrOnExn* curr) { targets.insert(curr->name); } - void visitBlock(Block* curr) { - if (curr->name.is()) { - targets.erase(curr->name); - } - } - void visitLoop(Loop* curr) { - if (curr->name.is()) { - targets.erase(curr->name); - } +// Returns the set of targets to which we branch that are +// outside of an expression. +inline NameSet getExitingBranches(Expression* ast) { + struct Scanner + : public PostWalker> { + NameSet targets; + + void visitExpression(Expression* curr) { + operateOnScopeNameDefs(curr, [&](Name& name) { + if (name.is()) { + targets.erase(name); + } + }); + operateOnScopeNameUses(curr, [&](Name& name) { targets.insert(name); }); } }; Scanner scanner; @@ -128,19 +159,17 @@ // returns the list of all branch targets in a node -inline std::set getBranchTargets(Expression* ast) { - struct Scanner : public PostWalker { - std::set targets; - - void visitBlock(Block* curr) { - if (curr->name.is()) { - targets.insert(curr->name); - } - } - void visitLoop(Loop* curr) { - if (curr->name.is()) { - targets.insert(curr->name); - } +inline NameSet getBranchTargets(Expression* ast) { + struct Scanner + : public PostWalker> { + NameSet targets; + + void visitExpression(Expression* curr) { + operateOnScopeNameDefs(curr, [&](Name& name) { + if (name.is()) { + targets.insert(name); + } + }); } }; Scanner scanner; @@ -151,52 +180,33 @@ // Finds if there are branches targeting a name. Note that since names are // unique in our IR, we just need to look for the name, and do not need // to analyze scoping. -struct BranchSeeker : public PostWalker { +struct BranchSeeker + : public PostWalker> { Name target; Index found = 0; - Type valueType; + // None indicates no value is sent. + Type valueType = Type::none; BranchSeeker(Name target) : target(target) {} - void noteFound(Expression* value) { - noteFound(value ? value->type : Type::none); - } - - void noteFound(Type type) { + void noteFound(Type newType) { found++; - if (found == 1) { - valueType = Type::unreachable; - } - if (type != Type::unreachable) { - valueType = type; - } - } - - void visitBreak(Break* curr) { - // check the break - if (curr->name == target) { - noteFound(curr->value); + if (newType != Type::none) { + if (found == 1) { + valueType = newType; + } else { + valueType = Type::getLeastUpperBound(valueType, newType); + } } } - void visitSwitch(Switch* curr) { - // check the switch - for (auto name : curr->targets) { + void visitExpression(Expression* curr) { + operateOnScopeNameUsesAndSentTypes(curr, [&](Name& name, Type type) { if (name == target) { - noteFound(curr->value); + noteFound(type); } - } - if (curr->default_ == target) { - noteFound(curr->value); - } - } - - void visitBrOnExn(BrOnExn* curr) { - // check the br_on_exn - if (curr->name == target) { - noteFound(curr->sent); - } + }); } static bool has(Expression* tree, Name target) { @@ -218,6 +228,77 @@ } }; +// Accumulates all the branches in an entire tree. +struct BranchAccumulator + : public PostWalker> { + NameSet branches; + + void visitExpression(Expression* curr) { + auto selfBranches = getUniqueTargets(curr); + branches.insert(selfBranches.begin(), selfBranches.end()); + } +}; + +// A helper structure for the common case of post-walking some IR while querying +// whether a branch is present. We can cache results for children in order to +// avoid quadratic time searches. +// We assume that a node will be scanned *once* here. That means that if we +// scan a node, we can discard all information for its children. This avoids +// linearly increasing memory usage over time. +class BranchSeekerCache { + // Maps all the branches present in an expression and all its nested children. + std::unordered_map branches; + +public: + const NameSet& getBranches(Expression* curr) { + auto iter = branches.find(curr); + if (iter != branches.end()) { + return iter->second; + } + NameSet currBranches; + auto add = [&](NameSet& moreBranches) { + // Make sure to do a fast swap for the first set of branches to arrive. + // This helps the case of the first child being a block with a very large + // set of names. + if (currBranches.empty()) { + currBranches.swap(moreBranches); + } else { + currBranches.insert(moreBranches.begin(), moreBranches.end()); + } + }; + // Add from the children, which are hopefully cached. + for (auto child : ChildIterator(curr)) { + auto iter = branches.find(child); + if (iter != branches.end()) { + add(iter->second); + // We are scanning the parent, which means we assume the child will + // never be visited again. + branches.erase(iter); + } else { + // The child was not cached. Scan it manually. + BranchAccumulator childBranches; + childBranches.walk(child); + add(childBranches.branches); + // Don't bother caching anything - we are scanning the parent, so the + // child will presumably not be scanned again. + } + } + // Finish with the parent's own branches. + auto selfBranches = getUniqueTargets(curr); + add(selfBranches); + return branches[curr] = std::move(currBranches); + } + + bool hasBranch(Expression* curr, Name target) { + bool result = getBranches(curr).count(target); +#ifdef BRANCH_UTILS_DEBUG + assert(bresult == BranchSeeker::has(curr, target)); +#endif + return result; + } +}; + } // namespace BranchUtils } // namespace wasm diff -Nru binaryen-91/src/ir/CMakeLists.txt binaryen-99/src/ir/CMakeLists.txt --- binaryen-91/src/ir/CMakeLists.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/ir/CMakeLists.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,11 @@ +FILE(GLOB ir_HEADERS *.h) set(ir_SOURCES ExpressionAnalyzer.cpp ExpressionManipulator.cpp LocalGraph.cpp ReFinalize.cpp + stack-utils.cpp + module-splitting.cpp + ${ir_HEADERS} ) add_library(ir OBJECT ${ir_SOURCES}) diff -Nru binaryen-91/src/ir/cost.h binaryen-99/src/ir/cost.h --- binaryen-91/src/ir/cost.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/ir/cost.h 2021-01-07 20:01:06.000000000 +0000 @@ -24,7 +24,7 @@ // Measure the execution cost of an AST. Very handwave-ey -struct CostAnalyzer : public Visitor { +struct CostAnalyzer : public OverriddenVisitor { CostAnalyzer(Expression* ast) { cost = visit(ast); } Index cost; @@ -65,18 +65,38 @@ } return ret; } + Index visitCallRef(CallRef* curr) { + Index ret = 5 + visit(curr->target); + for (auto* child : curr->operands) { + ret += visit(child); + } + return ret; + } Index visitLocalGet(LocalGet* curr) { return 0; } - Index visitLocalSet(LocalSet* curr) { return 1; } + Index visitLocalSet(LocalSet* curr) { return 1 + visit(curr->value); } Index visitGlobalGet(GlobalGet* curr) { return 1; } - Index visitGlobalSet(GlobalSet* curr) { return 2; } + Index visitGlobalSet(GlobalSet* curr) { return 2 + visit(curr->value); } Index visitLoad(Load* curr) { return 1 + visit(curr->ptr) + 10 * curr->isAtomic; } Index visitStore(Store* curr) { return 2 + visit(curr->ptr) + visit(curr->value) + 10 * curr->isAtomic; } - Index visitAtomicRMW(AtomicRMW* curr) { return 100; } - Index visitAtomicCmpxchg(AtomicCmpxchg* curr) { return 100; } + Index visitAtomicRMW(AtomicRMW* curr) { + return 100 + visit(curr->ptr) + visit(curr->value); + } + Index visitAtomicCmpxchg(AtomicCmpxchg* curr) { + return 100 + visit(curr->ptr) + visit(curr->expected) + + visit(curr->replacement); + } + Index visitAtomicWait(AtomicWait* curr) { + return 100 + visit(curr->ptr) + visit(curr->expected) + + visit(curr->timeout); + } + Index visitAtomicNotify(AtomicNotify* curr) { + return 100 + visit(curr->ptr) + visit(curr->notifyCount); + } + Index visitAtomicFence(AtomicFence* curr) { return 100; } Index visitConst(Const* curr) { return 1; } Index visitUnary(Unary* curr) { Index ret = 0; @@ -152,24 +172,42 @@ case SplatVecF32x4: case SplatVecF64x2: case NotVec128: + case AbsVecI8x16: case NegVecI8x16: case AnyTrueVecI8x16: case AllTrueVecI8x16: + case BitmaskVecI8x16: + case PopcntVecI8x16: + case AbsVecI16x8: case NegVecI16x8: case AnyTrueVecI16x8: case AllTrueVecI16x8: + case BitmaskVecI16x8: + case AbsVecI32x4: case NegVecI32x4: case AnyTrueVecI32x4: case AllTrueVecI32x4: + case BitmaskVecI32x4: case NegVecI64x2: - case AnyTrueVecI64x2: - case AllTrueVecI64x2: + case BitmaskVecI64x2: case AbsVecF32x4: case NegVecF32x4: case SqrtVecF32x4: + case CeilVecF32x4: + case FloorVecF32x4: + case TruncVecF32x4: + case NearestVecF32x4: case AbsVecF64x2: case NegVecF64x2: case SqrtVecF64x2: + case CeilVecF64x2: + case FloorVecF64x2: + case TruncVecF64x2: + case NearestVecF64x2: + case ExtAddPairwiseSVecI8x16ToI16x8: + case ExtAddPairwiseUVecI8x16ToI16x8: + case ExtAddPairwiseSVecI16x8ToI32x4: + case ExtAddPairwiseUVecI16x8ToI32x4: case TruncSatSVecF32x4ToVecI32x4: case TruncSatUVecF32x4ToVecI32x4: case TruncSatSVecF64x2ToVecI64x2: @@ -186,7 +224,12 @@ case WidenHighSVecI16x8ToVecI32x4: case WidenLowUVecI16x8ToVecI32x4: case WidenHighUVecI16x8ToVecI32x4: - return 1; + case WidenLowSVecI32x4ToVecI64x2: + case WidenHighSVecI32x4ToVecI64x2: + case WidenLowUVecI32x4ToVecI64x2: + case WidenHighUVecI32x4ToVecI64x2: + ret = 1; + break; case InvalidUnary: WASM_UNREACHABLE("invalid unary op"); } @@ -196,8 +239,6 @@ Index ret = 0; switch (curr->op) { case AddInt32: - ret = 1; - break; case SubInt32: ret = 1; break; @@ -205,44 +246,20 @@ ret = 2; break; case DivSInt32: - ret = 3; - break; case DivUInt32: - ret = 3; - break; case RemSInt32: - ret = 3; - break; case RemUInt32: ret = 3; break; case AndInt32: - ret = 1; - break; case OrInt32: - ret = 1; - break; case XorInt32: - ret = 1; - break; case ShlInt32: - ret = 1; - break; case ShrUInt32: - ret = 1; - break; case ShrSInt32: - ret = 1; - break; case RotLInt32: - ret = 1; - break; case RotRInt32: - ret = 1; - break; case AddInt64: - ret = 1; - break; case SubInt64: ret = 1; break; @@ -250,44 +267,22 @@ ret = 2; break; case DivSInt64: - ret = 3; - break; case DivUInt64: - ret = 3; - break; case RemSInt64: - ret = 3; - break; case RemUInt64: ret = 3; break; case AndInt64: - ret = 1; - break; case OrInt64: - ret = 1; - break; case XorInt64: ret = 1; break; case ShlInt64: - ret = 1; - break; case ShrUInt64: - ret = 1; - break; case ShrSInt64: - ret = 1; - break; case RotLInt64: - ret = 1; - break; case RotRInt64: - ret = 1; - break; case AddFloat32: - ret = 1; - break; case SubFloat32: ret = 1; break; @@ -298,17 +293,9 @@ ret = 3; break; case CopySignFloat32: - ret = 1; - break; case MinFloat32: - ret = 1; - break; case MaxFloat32: - ret = 1; - break; case AddFloat64: - ret = 1; - break; case SubFloat64: ret = 1; break; @@ -319,263 +306,92 @@ ret = 3; break; case CopySignFloat64: - ret = 1; - break; case MinFloat64: - ret = 1; - break; case MaxFloat64: - ret = 1; - break; + case EqInt32: + case NeInt32: case LtUInt32: - ret = 1; - break; case LtSInt32: - ret = 1; - break; case LeUInt32: - ret = 1; - break; case LeSInt32: - ret = 1; - break; case GtUInt32: - ret = 1; - break; case GtSInt32: - ret = 1; - break; case GeUInt32: - ret = 1; - break; case GeSInt32: - ret = 1; - break; + case EqInt64: + case NeInt64: case LtUInt64: - ret = 1; - break; case LtSInt64: - ret = 1; - break; case LeUInt64: - ret = 1; - break; case LeSInt64: - ret = 1; - break; case GtUInt64: - ret = 1; - break; case GtSInt64: - ret = 1; - break; case GeUInt64: - ret = 1; - break; case GeSInt64: - ret = 1; - break; + case EqFloat32: + case NeFloat32: case LtFloat32: - ret = 1; - break; case GtFloat32: - ret = 1; - break; case LeFloat32: - ret = 1; - break; case GeFloat32: - ret = 1; - break; + case EqFloat64: + case NeFloat64: case LtFloat64: - ret = 1; - break; case GtFloat64: - ret = 1; - break; case LeFloat64: - ret = 1; - break; case GeFloat64: - ret = 1; - break; - case EqInt32: - ret = 1; - break; - case NeInt32: - ret = 1; - break; - case EqInt64: - ret = 1; - break; - case NeInt64: - ret = 1; - break; - case EqFloat32: - ret = 1; - break; - case NeFloat32: - ret = 1; - break; - case EqFloat64: - ret = 1; - break; - case NeFloat64: - ret = 1; - break; case EqVecI8x16: - ret = 1; - break; case NeVecI8x16: - ret = 1; - break; case LtSVecI8x16: - ret = 1; - break; case LtUVecI8x16: - ret = 1; - break; case LeSVecI8x16: - ret = 1; - break; case LeUVecI8x16: - ret = 1; - break; case GtSVecI8x16: - ret = 1; - break; case GtUVecI8x16: - ret = 1; - break; case GeSVecI8x16: - ret = 1; - break; case GeUVecI8x16: - ret = 1; - break; case EqVecI16x8: - ret = 1; - break; case NeVecI16x8: - ret = 1; - break; case LtSVecI16x8: - ret = 1; - break; case LtUVecI16x8: - ret = 1; - break; case LeSVecI16x8: - ret = 1; - break; case LeUVecI16x8: - ret = 1; - break; case GtSVecI16x8: - ret = 1; - break; case GtUVecI16x8: - ret = 1; - break; case GeSVecI16x8: - ret = 1; - break; case GeUVecI16x8: - ret = 1; - break; case EqVecI32x4: - ret = 1; - break; case NeVecI32x4: - ret = 1; - break; case LtSVecI32x4: - ret = 1; - break; case LtUVecI32x4: - ret = 1; - break; case LeSVecI32x4: - ret = 1; - break; case LeUVecI32x4: - ret = 1; - break; case GtSVecI32x4: - ret = 1; - break; case GtUVecI32x4: - ret = 1; - break; case GeSVecI32x4: - ret = 1; - break; case GeUVecI32x4: - ret = 1; - break; + case EqVecI64x2: case EqVecF32x4: - ret = 1; - break; case NeVecF32x4: - ret = 1; - break; case LtVecF32x4: - ret = 1; - break; case LeVecF32x4: - ret = 1; - break; case GtVecF32x4: - ret = 1; - break; case GeVecF32x4: - ret = 1; - break; case EqVecF64x2: - ret = 1; - break; case NeVecF64x2: - ret = 1; - break; case LtVecF64x2: - ret = 1; - break; case LeVecF64x2: - ret = 1; - break; case GtVecF64x2: - ret = 1; - break; case GeVecF64x2: - ret = 1; - break; case AndVec128: - ret = 1; - break; case OrVec128: - ret = 1; - break; case XorVec128: - ret = 1; - break; case AndNotVec128: - ret = 1; - break; case AddVecI8x16: - ret = 1; - break; case AddSatSVecI8x16: - ret = 1; - break; case AddSatUVecI8x16: - ret = 1; - break; case SubVecI8x16: - ret = 1; - break; case SubSatSVecI8x16: - ret = 1; - break; case SubSatUVecI8x16: ret = 1; break; @@ -583,35 +399,15 @@ ret = 2; break; case MinSVecI8x16: - ret = 1; - break; case MinUVecI8x16: - ret = 1; - break; case MaxSVecI8x16: - ret = 1; - break; case MaxUVecI8x16: - ret = 1; - break; case AvgrUVecI8x16: - ret = 1; - break; case AddVecI16x8: - ret = 1; - break; case AddSatSVecI16x8: - ret = 1; - break; case AddSatUVecI16x8: - ret = 1; - break; case SubVecI16x8: - ret = 1; - break; case SubSatSVecI16x8: - ret = 1; - break; case SubSatUVecI16x8: ret = 1; break; @@ -619,23 +415,16 @@ ret = 2; break; case MinSVecI16x8: - ret = 1; - break; case MinUVecI16x8: - ret = 1; - break; case MaxSVecI16x8: - ret = 1; - break; case MaxUVecI16x8: - ret = 1; - break; case AvgrUVecI16x8: - ret = 1; - break; + case Q15MulrSatSVecI16x8: + case ExtMulLowSVecI16x8: + case ExtMulHighSVecI16x8: + case ExtMulLowUVecI16x8: + case ExtMulHighUVecI16x8: case AddVecI32x4: - ret = 1; - break; case SubVecI32x4: ret = 1; break; @@ -643,29 +432,22 @@ ret = 2; break; case MinSVecI32x4: - ret = 1; - break; case MinUVecI32x4: - ret = 1; - break; case MaxSVecI32x4: - ret = 1; - break; case MaxUVecI32x4: - ret = 1; - break; case DotSVecI16x8ToVecI32x4: - ret = 1; - break; + case ExtMulLowSVecI32x4: + case ExtMulHighSVecI32x4: + case ExtMulLowUVecI32x4: + case ExtMulHighUVecI32x4: case AddVecI64x2: - ret = 1; - break; case SubVecI64x2: - ret = 1; - break; + case MulVecI64x2: + case ExtMulLowSVecI64x2: + case ExtMulHighSVecI64x2: + case ExtMulLowUVecI64x2: + case ExtMulHighUVecI64x2: case AddVecF32x4: - ret = 1; - break; case SubVecF32x4: ret = 1; break; @@ -676,14 +458,10 @@ ret = 3; break; case MinVecF32x4: - ret = 1; - break; case MaxVecF32x4: - ret = 1; - break; + case PMinVecF32x4: + case PMaxVecF32x4: case AddVecF64x2: - ret = 1; - break; case SubVecF64x2: ret = 1; break; @@ -694,23 +472,13 @@ ret = 3; break; case MinVecF64x2: - ret = 1; - break; case MaxVecF64x2: - ret = 1; - break; + case PMinVecF64x2: + case PMaxVecF64x2: case NarrowSVecI16x8ToVecI8x16: - ret = 1; - break; case NarrowUVecI16x8ToVecI8x16: - ret = 1; - break; case NarrowSVecI32x4ToVecI16x8: - ret = 1; - break; case NarrowUVecI32x4ToVecI16x8: - ret = 1; - break; case SwizzleVec8x16: ret = 1; break; @@ -720,26 +488,144 @@ return ret + visit(curr->left) + visit(curr->right); } Index visitSelect(Select* curr) { - return 2 + visit(curr->condition) + visit(curr->ifTrue) + + return 1 + visit(curr->condition) + visit(curr->ifTrue) + visit(curr->ifFalse); } Index visitDrop(Drop* curr) { return visit(curr->value); } Index visitReturn(Return* curr) { return maybeVisit(curr->value); } - Index visitHost(Host* curr) { return 100; } + Index visitMemorySize(MemorySize* curr) { return 1; } + Index visitMemoryGrow(MemoryGrow* curr) { return 100 + visit(curr->delta); } + Index visitMemoryInit(MemoryInit* curr) { + return 6 + visit(curr->dest) + visit(curr->offset) + visit(curr->size); + } + Index visitMemoryCopy(MemoryCopy* curr) { + return 6 + visit(curr->dest) + visit(curr->source) + visit(curr->size); + } + Index visitMemoryFill(MemoryFill* curr) { + return 6 + visit(curr->dest) + visit(curr->value) + visit(curr->size); + } + Index visitSIMDLoad(SIMDLoad* curr) { return 1 + visit(curr->ptr); } + Index visitSIMDLoadStoreLane(SIMDLoadStoreLane* curr) { + return 1 + Index(curr->isStore()) + visit(curr->ptr) + visit(curr->vec); + } + Index visitSIMDReplace(SIMDReplace* curr) { + return 2 + visit(curr->vec) + visit(curr->value); + } + Index visitSIMDExtract(SIMDExtract* curr) { return 1 + visit(curr->vec); } + Index visitSIMDTernary(SIMDTernary* curr) { + Index ret = 0; + switch (curr->op) { + case Bitselect: + case SignSelectVec8x16: + case SignSelectVec16x8: + case SignSelectVec32x4: + case SignSelectVec64x2: + ret = 1; + break; + case QFMAF32x4: + case QFMSF32x4: + case QFMAF64x2: + case QFMSF64x2: + ret = 2; + break; + } + return ret + visit(curr->a) + visit(curr->b) + visit(curr->c); + } + Index visitSIMDShift(SIMDShift* curr) { + return 1 + visit(curr->vec) + visit(curr->shift); + } + Index visitSIMDShuffle(SIMDShuffle* curr) { + return 1 + visit(curr->left) + visit(curr->right); + } + Index visitPrefetch(Prefetch* curr) { return 0 + visit(curr->ptr); } Index visitRefNull(RefNull* curr) { return 1; } - Index visitRefIsNull(RefIsNull* curr) { return 1; } + Index visitRefIsNull(RefIsNull* curr) { return 1 + visit(curr->value); } Index visitRefFunc(RefFunc* curr) { return 1; } + Index visitRefEq(RefEq* curr) { + return 1 + visit(curr->left) + visit(curr->right); + } Index visitTry(Try* curr) { // We assume no exception will be thrown in most cases - return visit(curr->body); + return visit(curr->body) + maybeVisit(curr->catchBody); + } + Index visitThrow(Throw* curr) { + Index ret = 100; + for (auto* child : curr->operands) { + ret += visit(child); + } + return ret; } - Index visitThrow(Throw* curr) { return 100; } - Index visitRethrow(Rethrow* curr) { return 100; } + Index visitRethrow(Rethrow* curr) { return 100 + visit(curr->exnref); } Index visitBrOnExn(BrOnExn* curr) { return 1 + visit(curr->exnref) + curr->sent.size(); } + Index visitTupleMake(TupleMake* curr) { + Index ret = 0; + for (auto* child : curr->operands) { + ret += visit(child); + } + return ret; + } + Index visitTupleExtract(TupleExtract* curr) { return visit(curr->tuple); } + Index visitPop(Pop* curr) { return 0; } Index visitNop(Nop* curr) { return 0; } Index visitUnreachable(Unreachable* curr) { return 0; } + Index visitDataDrop(DataDrop* curr) { return 5; } + Index visitI31New(I31New* curr) { return 3 + visit(curr->value); } + Index visitI31Get(I31Get* curr) { return 2 + visit(curr->i31); } + Index visitRefTest(RefTest* curr) { + return 2 + nullCheckCost(curr->ref) + visit(curr->ref) + visit(curr->rtt); + } + Index visitRefCast(RefCast* curr) { + return 2 + nullCheckCost(curr->ref) + visit(curr->ref) + visit(curr->rtt); + } + Index visitBrOnCast(BrOnCast* curr) { + return 3 + nullCheckCost(curr->ref) + visit(curr->ref) + visit(curr->rtt); + } + Index visitRttCanon(RttCanon* curr) { + // TODO: investigate actual RTT costs in VMs + return 1; + } + Index visitRttSub(RttSub* curr) { + // TODO: investigate actual RTT costs in VMs + return 2 + visit(curr->parent); + } + Index visitStructNew(StructNew* curr) { + // While allocation itself is almost free with generational GC, there is + // at least some baseline cost, plus writing the fields. (If we use default + // values for the fields, then it is possible they are all 0 and if so, we + // can get that almost for free as well, so don't add anything there.) + Index ret = 4 + visit(curr->rtt) + curr->operands.size(); + for (auto* child : curr->operands) { + ret += visit(child); + } + return ret; + } + Index visitStructGet(StructGet* curr) { + return 1 + nullCheckCost(curr->ref) + visit(curr->ref); + } + Index visitStructSet(StructSet* curr) { + return 2 + nullCheckCost(curr->ref) + visit(curr->ref) + visit(curr->value); + } + Index visitArrayNew(ArrayNew* curr) { + return 4 + visit(curr->rtt) + visit(curr->size) + visit(curr->init); + } + Index visitArrayGet(ArrayGet* curr) { + return 1 + nullCheckCost(curr->ref) + visit(curr->ref) + visit(curr->index); + } + Index visitArraySet(ArraySet* curr) { + return 2 + nullCheckCost(curr->ref) + visit(curr->ref) + + visit(curr->index) + visit(curr->value); + } + Index visitArrayLen(ArrayLen* curr) { + return 1 + nullCheckCost(curr->ref) + visit(curr->ref); + } + +private: + Index nullCheckCost(Expression* ref) { + // A nullable type requires a bounds check in most VMs. + return ref->type.isNullable(); + } }; } // namespace wasm diff -Nru binaryen-91/src/ir/effects.h binaryen-99/src/ir/effects.h --- binaryen-91/src/ir/effects.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/ir/effects.h 2021-01-07 20:01:06.000000000 +0000 @@ -25,15 +25,15 @@ // Look for side effects, including control flow // TODO: optimize -struct EffectAnalyzer - : public PostWalker> { +class EffectAnalyzer { +public: EffectAnalyzer(const PassOptions& passOptions, FeatureSet features, Expression* ast = nullptr) : ignoreImplicitTraps(passOptions.ignoreImplicitTraps), debugInfo(passOptions.debugInfo), features(features) { if (ast) { - analyze(ast); + walk(ast); } } @@ -41,20 +41,29 @@ bool debugInfo; FeatureSet features; - void analyze(Expression* ast) { - breakNames.clear(); - walk(ast); - // if we are left with breaks, they are external - if (breakNames.size() > 0) { - branches = true; - } - assert(tryDepth == 0); + // Walk an expression and all its children. + void walk(Expression* ast) { + pre(); + InternalAnalyzer(*this).walk(ast); + post(); + } + + // Visit an expression, without any children. + void visit(Expression* ast) { + pre(); + InternalAnalyzer(*this).visit(ast); + post(); } // Core effect tracking - // branches out of this expression, returns, infinite loops, etc - bool branches = false; + // Definitely branches out of this expression, or does a return, etc. + // breakTargets tracks individual targets, which we may eventually see are + // internal, while this is set when we see something that will definitely + // not be internal, or is otherwise special like an infinite loop (which + // does not technically branch "out", but it does break the normal assumption + // of control flow proceeding normally). + bool branchesOut = false; bool calls = false; std::set localsRead; std::set localsWritten; @@ -62,10 +71,14 @@ std::set globalsWritten; bool readsMemory = false; bool writesMemory = false; - // a load or div/rem, which may trap. we ignore trap differences, so it is ok - // to reorder these, but we can't remove them, as they count as side effects, - // and we can't move them in a way that would cause other noticeable (global) - // side effects + // A trap, either from an unreachable instruction, or from an implicit trap + // that we do not ignore (see below). + // Note that we ignore trap differences, so it is ok to reorder traps with + // each other, but it is not ok to remove them or reorder them with other + // effects in a noticeable way. + bool trap = false; + // A trap from an instruction like a load or div/rem, which may trap on corner + // cases. If we do not ignore implicit traps then these are counted as a trap. bool implicitTrap = false; // An atomic load/store/RMW/Cmpxchg or an operator that has a defined ordering // wrt atomics (e.g. memory.grow) @@ -75,31 +88,11 @@ // inner try, we don't mark it as 'throws', because it will be caught by an // inner catch. size_t tryDepth = 0; - - static void scan(EffectAnalyzer* self, Expression** currp) { - Expression* curr = *currp; - // We need to decrement try depth before catch starts, so handle it - // separately - if (curr->is()) { - self->pushTask(doVisitTry, currp); - self->pushTask(scan, &curr->cast()->catchBody); - self->pushTask(doStartCatch, currp); - self->pushTask(scan, &curr->cast()->body); - self->pushTask(doStartTry, currp); - return; - } - PostWalker>::scan(self, - currp); - } - - static void doStartTry(EffectAnalyzer* self, Expression** currp) { - self->tryDepth++; - } - - static void doStartCatch(EffectAnalyzer* self, Expression** currp) { - assert(self->tryDepth > 0 && "try depth cannot be negative"); - self->tryDepth--; - } + // The nested depth of catch. This is necessary to track danglng pops. + size_t catchDepth = 0; + // If this expression contains 'exnref.pop's that are not enclosed in 'catch' + // body. For example, (drop (exnref.pop)) should set this to true. + bool danglingPop = false; // Helper functions to check for various effect types @@ -110,28 +103,36 @@ return globalsRead.size() + globalsWritten.size() > 0; } bool accessesMemory() const { return calls || readsMemory || writesMemory; } - bool transfersControlFlow() const { return branches || throws; } - - bool hasGlobalSideEffects() const { - return calls || globalsWritten.size() > 0 || writesMemory || isAtomic || - throws; + // Check whether this may transfer control flow to somewhere outside of this + // expression (aside from just flowing out normally). That includes a break + // or a throw (if the throw is not known to be caught inside this expression; + // note that if the throw is not caught in this expression then it might be + // caught in this function but outside of this expression, or it might not be + // caught in the function at all, which would mean control flow cannot be + // transferred inside the function, but this expression does not know that). + bool transfersControlFlow() const { + return branchesOut || throws || hasExternalBreakTargets(); + } + + // Changes something in globally-stored state. + bool writesGlobalState() const { + return globalsWritten.size() || writesMemory || isAtomic || calls; } + bool readsGlobalState() const { + return globalsRead.size() || readsMemory || isAtomic || calls; + } + bool hasSideEffects() const { - return hasGlobalSideEffects() || localsWritten.size() > 0 || branches || - implicitTrap; + return localsWritten.size() > 0 || danglingPop || writesGlobalState() || + trap || throws || transfersControlFlow(); } bool hasAnything() const { - return calls || accessesLocal() || readsMemory || writesMemory || - accessesGlobal() || implicitTrap || isAtomic || - transfersControlFlow(); - } - - bool noticesGlobalSideEffects() { - return calls || readsMemory || isAtomic || globalsRead.size(); + return hasSideEffects() || accessesLocal() || readsMemory || + accessesGlobal(); } // check if we break to anything external from ourselves - bool hasExternalBreakTargets() { return !breakNames.empty(); } + bool hasExternalBreakTargets() const { return !breakTargets.empty(); } // checks if these effects would invalidate another set (e.g., if we write, we // invalidate someone that reads, they can't be moved past us) @@ -139,7 +140,8 @@ if ((transfersControlFlow() && other.hasSideEffects()) || (other.transfersControlFlow() && hasSideEffects()) || ((writesMemory || calls) && other.accessesMemory()) || - (accessesMemory() && (other.writesMemory || other.calls))) { + ((other.writesMemory || other.calls) && accessesMemory()) || + (danglingPop || other.danglingPop)) { return true; } // All atomics are sequentially consistent for now, and ordered wrt other @@ -149,7 +151,7 @@ return true; } for (auto local : localsWritten) { - if (other.localsWritten.count(local) || other.localsRead.count(local)) { + if (other.localsRead.count(local) || other.localsWritten.count(local)) { return true; } } @@ -158,13 +160,13 @@ return true; } } - if ((accessesGlobal() && other.calls) || - (other.accessesGlobal() && calls)) { + if ((other.calls && accessesGlobal()) || + (calls && other.accessesGlobal())) { return true; } for (auto global : globalsWritten) { - if (other.globalsWritten.count(global) || - other.globalsRead.count(global)) { + if (other.globalsRead.count(global) || + other.globalsWritten.count(global)) { return true; } } @@ -173,27 +175,36 @@ return true; } } - // we are ok to reorder implicit traps, but not conditionalize them - if ((implicitTrap && other.transfersControlFlow()) || - (other.implicitTrap && transfersControlFlow())) { + // We are ok to reorder implicit traps, but not conditionalize them. + if ((trap && other.transfersControlFlow()) || + (other.trap && transfersControlFlow())) { return true; } - // we can't reorder an implicit trap in a way that alters global state - if ((implicitTrap && other.hasGlobalSideEffects()) || - (other.implicitTrap && hasGlobalSideEffects())) { + // Note that the above includes disallowing the reordering of a trap with an + // exception (as an exception can transfer control flow inside the current + // function, so transfersControlFlow would be true) - while we allow the + // reordering of traps with each other, we do not reorder exceptions with + // anything. + assert(!((trap && other.throws) || (throws && other.trap))); + // We can't reorder an implicit trap in a way that could alter what global + // state is modified. + if ((trap && other.writesGlobalState()) || + (other.trap && writesGlobalState())) { return true; } return false; } void mergeIn(EffectAnalyzer& other) { - branches = branches || other.branches; + branchesOut = branchesOut || other.branchesOut; calls = calls || other.calls; readsMemory = readsMemory || other.readsMemory; writesMemory = writesMemory || other.writesMemory; + trap = trap || other.trap; implicitTrap = implicitTrap || other.implicitTrap; isAtomic = isAtomic || other.isAtomic; throws = throws || other.throws; + danglingPop = danglingPop || other.danglingPop; for (auto i : other.localsRead) { localsRead.insert(i); } @@ -206,6 +217,9 @@ for (auto i : other.globalsWritten) { globalsWritten.insert(i); } + for (auto i : other.breakTargets) { + breakTargets.insert(i); + } } // the checks above happen after the node's children were processed, in the @@ -213,7 +227,7 @@ // the children, i.e., loops bool checkPre(Expression* curr) { if (curr->is()) { - branches = true; + branchesOut = true; return true; } return false; @@ -222,172 +236,212 @@ bool checkPost(Expression* curr) { visit(curr); if (curr->is()) { - branches = true; + branchesOut = true; } return hasAnything(); } - std::set breakNames; + std::set breakTargets; - void visitBlock(Block* curr) { - if (curr->name.is()) { - breakNames.erase(curr->name); // these were internal breaks - } - } - void visitIf(If* curr) {} - void visitLoop(Loop* curr) { - if (curr->name.is()) { - breakNames.erase(curr->name); // these were internal breaks - } - // if the loop is unreachable, then there is branching control flow: - // (1) if the body is unreachable because of a (return), uncaught (br) - // etc., then we already noted branching, so it is ok to mark it again - // (if we have *caught* (br)s, then they did not lead to the loop body - // being unreachable). (same logic applies to blocks) - // (2) if the loop is unreachable because it only has branches up to the - // loop top, but no way to get out, then it is an infinite loop, and we - // consider that a branching side effect (note how the same logic does - // not apply to blocks). - if (curr->type == Type::unreachable) { - branches = true; - } - } - void visitBreak(Break* curr) { breakNames.insert(curr->name); } - void visitSwitch(Switch* curr) { - for (auto name : curr->targets) { - breakNames.insert(name); - } - breakNames.insert(curr->default_); - } - - void visitCall(Call* curr) { - calls = true; - // When EH is enabled, any call can throw. - if (features.hasExceptionHandling() && tryDepth == 0) { - throws = true; - } - if (curr->isReturn) { - branches = true; - } - if (debugInfo) { - // debugInfo call imports must be preserved very strongly, do not - // move code around them - // FIXME: we could check if the call is to an import - branches = true; - } - } - void visitCallIndirect(CallIndirect* curr) { - calls = true; - if (features.hasExceptionHandling() && tryDepth == 0) { - throws = true; - } - if (curr->isReturn) { - branches = true; - } - } - void visitLocalGet(LocalGet* curr) { localsRead.insert(curr->index); } - void visitLocalSet(LocalSet* curr) { localsWritten.insert(curr->index); } - void visitGlobalGet(GlobalGet* curr) { globalsRead.insert(curr->name); } - void visitGlobalSet(GlobalSet* curr) { globalsWritten.insert(curr->name); } - void visitLoad(Load* curr) { - readsMemory = true; - isAtomic |= curr->isAtomic; - if (!ignoreImplicitTraps) { - implicitTrap = true; - } - } - void visitStore(Store* curr) { - writesMemory = true; - isAtomic |= curr->isAtomic; - if (!ignoreImplicitTraps) { - implicitTrap = true; - } - } - void visitAtomicRMW(AtomicRMW* curr) { - readsMemory = true; - writesMemory = true; - isAtomic = true; - if (!ignoreImplicitTraps) { - implicitTrap = true; - } - } - void visitAtomicCmpxchg(AtomicCmpxchg* curr) { - readsMemory = true; - writesMemory = true; - isAtomic = true; - if (!ignoreImplicitTraps) { - implicitTrap = true; - } - } - void visitAtomicWait(AtomicWait* curr) { - readsMemory = true; - // AtomicWait doesn't strictly write memory, but it does modify the waiters - // list associated with the specified address, which we can think of as a - // write. - writesMemory = true; - isAtomic = true; - if (!ignoreImplicitTraps) { - implicitTrap = true; - } - } - void visitAtomicNotify(AtomicNotify* curr) { - // AtomicNotify doesn't strictly write memory, but it does modify the - // waiters list associated with the specified address, which we can think of - // as a write. - readsMemory = true; - writesMemory = true; - isAtomic = true; - if (!ignoreImplicitTraps) { - implicitTrap = true; - } - } - void visitAtomicFence(AtomicFence* curr) { - // AtomicFence should not be reordered with any memory operations, so we set - // these to true. - readsMemory = true; - writesMemory = true; - isAtomic = true; - } - void visitSIMDExtract(SIMDExtract* curr) {} - void visitSIMDReplace(SIMDReplace* curr) {} - void visitSIMDShuffle(SIMDShuffle* curr) {} - void visitSIMDTernary(SIMDTernary* curr) {} - void visitSIMDShift(SIMDShift* curr) {} - void visitSIMDLoad(SIMDLoad* curr) { - readsMemory = true; - if (!ignoreImplicitTraps) { - implicitTrap = true; - } - } - void visitMemoryInit(MemoryInit* curr) { - writesMemory = true; - if (!ignoreImplicitTraps) { - implicitTrap = true; - } - } - void visitDataDrop(DataDrop* curr) { - // prevent reordering with memory.init - readsMemory = true; - if (!ignoreImplicitTraps) { - implicitTrap = true; - } - } - void visitMemoryCopy(MemoryCopy* curr) { - readsMemory = true; - writesMemory = true; - if (!ignoreImplicitTraps) { - implicitTrap = true; - } - } - void visitMemoryFill(MemoryFill* curr) { - writesMemory = true; - if (!ignoreImplicitTraps) { - implicitTrap = true; - } - } - void visitConst(Const* curr) {} - void visitUnary(Unary* curr) { - if (!ignoreImplicitTraps) { +private: + struct InternalAnalyzer + : public PostWalker> { + + EffectAnalyzer& parent; + + InternalAnalyzer(EffectAnalyzer& parent) : parent(parent) {} + + static void scan(InternalAnalyzer* self, Expression** currp) { + Expression* curr = *currp; + // We need to decrement try depth before catch starts, so handle it + // separately + if (curr->is()) { + self->pushTask(doVisitTry, currp); + self->pushTask(doEndCatch, currp); + self->pushTask(scan, &curr->cast()->catchBody); + self->pushTask(doStartCatch, currp); + self->pushTask(scan, &curr->cast()->body); + self->pushTask(doStartTry, currp); + return; + } + PostWalker>::scan( + self, currp); + } + + static void doStartTry(InternalAnalyzer* self, Expression** currp) { + self->parent.tryDepth++; + } + + static void doStartCatch(InternalAnalyzer* self, Expression** currp) { + assert(self->parent.tryDepth > 0 && "try depth cannot be negative"); + self->parent.tryDepth--; + self->parent.catchDepth++; + } + + static void doEndCatch(InternalAnalyzer* self, Expression** currp) { + assert(self->parent.catchDepth > 0 && "catch depth cannot be negative"); + self->parent.catchDepth--; + } + + void visitBlock(Block* curr) { + if (curr->name.is()) { + parent.breakTargets.erase(curr->name); // these were internal breaks + } + } + void visitIf(If* curr) {} + void visitLoop(Loop* curr) { + if (curr->name.is()) { + parent.breakTargets.erase(curr->name); // these were internal breaks + } + // if the loop is unreachable, then there is branching control flow: + // (1) if the body is unreachable because of a (return), uncaught (br) + // etc., then we already noted branching, so it is ok to mark it + // again (if we have *caught* (br)s, then they did not lead to the + // loop body being unreachable). (same logic applies to blocks) + // (2) if the loop is unreachable because it only has branches up to the + // loop top, but no way to get out, then it is an infinite loop, and + // we consider that a branching side effect (note how the same logic + // does not apply to blocks). + if (curr->type == Type::unreachable) { + parent.branchesOut = true; + } + } + void visitBreak(Break* curr) { parent.breakTargets.insert(curr->name); } + void visitSwitch(Switch* curr) { + for (auto name : curr->targets) { + parent.breakTargets.insert(name); + } + parent.breakTargets.insert(curr->default_); + } + + void visitCall(Call* curr) { + parent.calls = true; + // When EH is enabled, any call can throw. + if (parent.features.hasExceptionHandling() && parent.tryDepth == 0) { + parent.throws = true; + } + if (curr->isReturn) { + parent.branchesOut = true; + } + if (parent.debugInfo) { + // debugInfo call imports must be preserved very strongly, do not + // move code around them + // FIXME: we could check if the call is to an import + parent.branchesOut = true; + } + } + void visitCallIndirect(CallIndirect* curr) { + parent.calls = true; + if (parent.features.hasExceptionHandling() && parent.tryDepth == 0) { + parent.throws = true; + } + if (curr->isReturn) { + parent.branchesOut = true; + } + } + void visitLocalGet(LocalGet* curr) { + parent.localsRead.insert(curr->index); + } + void visitLocalSet(LocalSet* curr) { + parent.localsWritten.insert(curr->index); + } + void visitGlobalGet(GlobalGet* curr) { + parent.globalsRead.insert(curr->name); + } + void visitGlobalSet(GlobalSet* curr) { + parent.globalsWritten.insert(curr->name); + } + void visitLoad(Load* curr) { + parent.readsMemory = true; + parent.isAtomic |= curr->isAtomic; + parent.implicitTrap = true; + } + void visitStore(Store* curr) { + parent.writesMemory = true; + parent.isAtomic |= curr->isAtomic; + parent.implicitTrap = true; + } + void visitAtomicRMW(AtomicRMW* curr) { + parent.readsMemory = true; + parent.writesMemory = true; + parent.isAtomic = true; + parent.implicitTrap = true; + } + void visitAtomicCmpxchg(AtomicCmpxchg* curr) { + parent.readsMemory = true; + parent.writesMemory = true; + parent.isAtomic = true; + parent.implicitTrap = true; + } + void visitAtomicWait(AtomicWait* curr) { + parent.readsMemory = true; + // AtomicWait doesn't strictly write memory, but it does modify the + // waiters list associated with the specified address, which we can think + // of as a write. + parent.writesMemory = true; + parent.isAtomic = true; + parent.implicitTrap = true; + } + void visitAtomicNotify(AtomicNotify* curr) { + // AtomicNotify doesn't strictly write memory, but it does modify the + // waiters list associated with the specified address, which we can think + // of as a write. + parent.readsMemory = true; + parent.writesMemory = true; + parent.isAtomic = true; + parent.implicitTrap = true; + } + void visitAtomicFence(AtomicFence* curr) { + // AtomicFence should not be reordered with any memory operations, so we + // set these to true. + parent.readsMemory = true; + parent.writesMemory = true; + parent.isAtomic = true; + } + void visitSIMDExtract(SIMDExtract* curr) {} + void visitSIMDReplace(SIMDReplace* curr) {} + void visitSIMDShuffle(SIMDShuffle* curr) {} + void visitSIMDTernary(SIMDTernary* curr) {} + void visitSIMDShift(SIMDShift* curr) {} + void visitSIMDLoad(SIMDLoad* curr) { + parent.readsMemory = true; + parent.implicitTrap = true; + } + void visitSIMDLoadStoreLane(SIMDLoadStoreLane* curr) { + if (curr->isLoad()) { + parent.readsMemory = true; + } else { + parent.writesMemory = true; + } + parent.implicitTrap = true; + } + void visitPrefetch(Prefetch* curr) { + // Do not reorder with respect to other memory ops + parent.writesMemory = true; + parent.readsMemory = true; + } + void visitMemoryInit(MemoryInit* curr) { + parent.writesMemory = true; + parent.implicitTrap = true; + } + void visitDataDrop(DataDrop* curr) { + // data.drop does not actually write memory, but it does alter the size of + // a segment, which can be noticeable later by memory.init, so we need to + // mark it as having a global side effect of some kind. + parent.writesMemory = true; + parent.implicitTrap = true; + } + void visitMemoryCopy(MemoryCopy* curr) { + parent.readsMemory = true; + parent.writesMemory = true; + parent.implicitTrap = true; + } + void visitMemoryFill(MemoryFill* curr) { + parent.writesMemory = true; + parent.implicitTrap = true; + } + void visitConst(Const* curr) {} + void visitUnary(Unary* curr) { switch (curr->op) { case TruncSFloat32ToInt32: case TruncSFloat32ToInt64: @@ -397,15 +451,13 @@ case TruncSFloat64ToInt64: case TruncUFloat64ToInt32: case TruncUFloat64ToInt64: { - implicitTrap = true; + parent.implicitTrap = true; break; } default: {} } } - } - void visitBinary(Binary* curr) { - if (!ignoreImplicitTraps) { + void visitBinary(Binary* curr) { switch (curr->op) { case DivSInt32: case DivUInt32: @@ -415,44 +467,130 @@ case DivUInt64: case RemSInt64: case RemUInt64: { - implicitTrap = true; + // div and rem may contain implicit trap only if RHS is + // non-constant or constant which equal zero or -1 for + // signed divisions. Reminder traps only with zero + // divider. + if (auto* c = curr->right->dynCast()) { + if (c->value.isZero()) { + parent.implicitTrap = true; + } else if ((curr->op == DivSInt32 || curr->op == DivSInt64) && + c->value.getInteger() == -1LL) { + parent.implicitTrap = true; + } + } else { + parent.implicitTrap = true; + } break; } default: {} } } - } - void visitSelect(Select* curr) {} - void visitDrop(Drop* curr) {} - void visitReturn(Return* curr) { branches = true; } - void visitHost(Host* curr) { - calls = true; - // memory.grow modifies the set of valid addresses, and thus can be modeled - // as modifying memory - writesMemory = true; - // Atomics are also sequentially consistent with memory.grow. - isAtomic = true; - } - void visitRefNull(RefNull* curr) {} - void visitRefIsNull(RefIsNull* curr) {} - void visitRefFunc(RefFunc* curr) {} - void visitTry(Try* curr) {} - void visitThrow(Throw* curr) { - if (tryDepth == 0) { - throws = true; - } - } - void visitRethrow(Rethrow* curr) { - if (tryDepth == 0) { - throws = true; - } - } - void visitBrOnExn(BrOnExn* curr) { breakNames.insert(curr->name); } - void visitNop(Nop* curr) {} - void visitUnreachable(Unreachable* curr) { branches = true; } - void visitPush(Push* curr) { calls = true; } - void visitPop(Pop* curr) { calls = true; } + void visitSelect(Select* curr) {} + void visitDrop(Drop* curr) {} + void visitReturn(Return* curr) { parent.branchesOut = true; } + void visitMemorySize(MemorySize* curr) { + // memory.size accesses the size of the memory, and thus can be modeled as + // reading memory + parent.readsMemory = true; + // Atomics are sequentially consistent with memory.size. + parent.isAtomic = true; + } + void visitMemoryGrow(MemoryGrow* curr) { + parent.calls = true; + // memory.grow technically does a read-modify-write operation on the + // memory size in the successful case, modifying the set of valid + // addresses, and just a read operation in the failure case + parent.readsMemory = true; + parent.writesMemory = true; + // Atomics are also sequentially consistent with memory.grow. + parent.isAtomic = true; + } + void visitRefNull(RefNull* curr) {} + void visitRefIsNull(RefIsNull* curr) {} + void visitRefFunc(RefFunc* curr) {} + void visitRefEq(RefEq* curr) {} + void visitTry(Try* curr) {} + void visitThrow(Throw* curr) { + if (parent.tryDepth == 0) { + parent.throws = true; + } + } + void visitRethrow(Rethrow* curr) { + if (parent.tryDepth == 0) { + parent.throws = true; + } + // traps when the arg is null + parent.implicitTrap = true; + } + void visitBrOnExn(BrOnExn* curr) { + parent.breakTargets.insert(curr->name); + // traps when the arg is null + parent.implicitTrap = true; + } + void visitNop(Nop* curr) {} + void visitUnreachable(Unreachable* curr) { parent.trap = true; } + void visitPop(Pop* curr) { + if (parent.catchDepth == 0) { + parent.danglingPop = true; + } + } + void visitTupleMake(TupleMake* curr) {} + void visitTupleExtract(TupleExtract* curr) {} + void visitI31New(I31New* curr) {} + void visitI31Get(I31Get* curr) {} + void visitCallRef(CallRef* curr) { + parent.calls = true; + if (parent.features.hasExceptionHandling() && parent.tryDepth == 0) { + parent.throws = true; + } + if (curr->isReturn) { + parent.branchesOut = true; + } + // traps when the arg is null + parent.implicitTrap = true; + } + void visitRefTest(RefTest* curr) {} + void visitRefCast(RefCast* curr) { + // Traps if the ref is not null and it has an invalid rtt. + parent.implicitTrap = true; + } + void visitBrOnCast(BrOnCast* curr) { + parent.breakTargets.insert(curr->name); + } + void visitRttCanon(RttCanon* curr) {} + void visitRttSub(RttSub* curr) {} + void visitStructNew(StructNew* curr) {} + void visitStructGet(StructGet* curr) { + // traps when the arg is null + if (curr->ref->type.isNullable()) { + parent.implicitTrap = true; + } + } + void visitStructSet(StructSet* curr) { + // traps when the arg is null + if (curr->ref->type.isNullable()) { + parent.implicitTrap = true; + } + } + void visitArrayNew(ArrayNew* curr) {} + void visitArrayGet(ArrayGet* curr) { + // traps when the arg is null or the index out of bounds + parent.implicitTrap = true; + } + void visitArraySet(ArraySet* curr) { + // traps when the arg is null or the index out of bounds + parent.implicitTrap = true; + } + void visitArrayLen(ArrayLen* curr) { + // traps when the arg is null + if (curr->ref->type.isNullable()) { + parent.implicitTrap = true; + } + } + }; +public: // Helpers static bool canReorder(const PassOptions& passOptions, @@ -479,11 +617,12 @@ ImplicitTrap = 1 << 8, IsAtomic = 1 << 9, Throws = 1 << 10, - Any = (1 << 11) - 1 + DanglingPop = 1 << 11, + Any = (1 << 12) - 1 }; uint32_t getSideEffects() const { uint32_t effects = 0; - if (branches) { + if (branchesOut || hasExternalBreakTargets()) { effects |= SideEffects::Branches; } if (calls) { @@ -516,8 +655,29 @@ if (throws) { effects |= SideEffects::Throws; } + if (danglingPop) { + effects |= SideEffects::DanglingPop; + } return effects; } + + void ignoreBranches() { + branchesOut = false; + breakTargets.clear(); + } + +private: + void pre() { breakTargets.clear(); } + + void post() { + assert(tryDepth == 0); + + if (ignoreImplicitTraps) { + implicitTrap = false; + } else if (implicitTrap) { + trap = true; + } + } }; } // namespace wasm diff -Nru binaryen-91/src/ir/ExpressionAnalyzer.cpp binaryen-99/src/ir/ExpressionAnalyzer.cpp --- binaryen-91/src/ir/ExpressionAnalyzer.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/ir/ExpressionAnalyzer.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -96,148 +96,6 @@ return false; } -// -// Allows visiting the immediate fields of the expression. This is -// useful for comparisons and hashing. -// -// The passed-in visitor object must implement: -// * visitScopeName - a Name that represents a block or loop scope -// * visitNonScopeName - a non-scope name -// * visitInt - anything that has a short enumeration, including -// opcodes, # of bytes in a load, bools, etc. - must be -// guaranteed to fit in an int32 or less. -// * visitLiteral - a Literal -// * visitType - a Type -// * visitIndex - an Index -// * visitAddress - an Address -// - -namespace { - -template void visitImmediates(Expression* curr, T& visitor) { - struct ImmediateVisitor : public OverriddenVisitor { - T& visitor; - - ImmediateVisitor(Expression* curr, T& visitor) : visitor(visitor) { - this->visit(curr); - } - - void visitBlock(Block* curr) { visitor.visitScopeName(curr->name); } - void visitIf(If* curr) {} - void visitLoop(Loop* curr) { visitor.visitScopeName(curr->name); } - void visitBreak(Break* curr) { visitor.visitScopeName(curr->name); } - void visitSwitch(Switch* curr) { - for (auto target : curr->targets) { - visitor.visitScopeName(target); - } - visitor.visitScopeName(curr->default_); - } - void visitCall(Call* curr) { - visitor.visitNonScopeName(curr->target); - visitor.visitInt(curr->isReturn); - } - void visitCallIndirect(CallIndirect* curr) { - visitor.visitInt(curr->sig.params.getID()); - visitor.visitInt(curr->sig.results.getID()); - visitor.visitInt(curr->isReturn); - } - void visitLocalGet(LocalGet* curr) { visitor.visitIndex(curr->index); } - void visitLocalSet(LocalSet* curr) { visitor.visitIndex(curr->index); } - void visitGlobalGet(GlobalGet* curr) { - visitor.visitNonScopeName(curr->name); - } - void visitGlobalSet(GlobalSet* curr) { - visitor.visitNonScopeName(curr->name); - } - void visitLoad(Load* curr) { - visitor.visitInt(curr->bytes); - if (curr->type != Type::unreachable && - curr->bytes < curr->type.getByteSize()) { - visitor.visitInt(curr->signed_); - } - visitor.visitAddress(curr->offset); - visitor.visitAddress(curr->align); - visitor.visitInt(curr->isAtomic); - } - void visitStore(Store* curr) { - visitor.visitInt(curr->bytes); - visitor.visitAddress(curr->offset); - visitor.visitAddress(curr->align); - visitor.visitInt(curr->isAtomic); - visitor.visitInt(curr->valueType.getID()); - } - void visitAtomicRMW(AtomicRMW* curr) { - visitor.visitInt(curr->op); - visitor.visitInt(curr->bytes); - visitor.visitAddress(curr->offset); - } - void visitAtomicCmpxchg(AtomicCmpxchg* curr) { - visitor.visitInt(curr->bytes); - visitor.visitAddress(curr->offset); - } - void visitAtomicWait(AtomicWait* curr) { - visitor.visitAddress(curr->offset); - visitor.visitType(curr->expectedType); - } - void visitAtomicNotify(AtomicNotify* curr) { - visitor.visitAddress(curr->offset); - } - void visitAtomicFence(AtomicFence* curr) { visitor.visitInt(curr->order); } - void visitSIMDExtract(SIMDExtract* curr) { - visitor.visitInt(curr->op); - visitor.visitInt(curr->index); - } - void visitSIMDReplace(SIMDReplace* curr) { - visitor.visitInt(curr->op); - visitor.visitInt(curr->index); - } - void visitSIMDShuffle(SIMDShuffle* curr) { - for (auto x : curr->mask) { - visitor.visitInt(x); - } - } - void visitSIMDTernary(SIMDTernary* curr) { visitor.visitInt(curr->op); } - void visitSIMDShift(SIMDShift* curr) { visitor.visitInt(curr->op); } - void visitSIMDLoad(SIMDLoad* curr) { - visitor.visitInt(curr->op); - visitor.visitAddress(curr->offset); - visitor.visitAddress(curr->align); - } - void visitMemoryInit(MemoryInit* curr) { - visitor.visitIndex(curr->segment); - } - void visitDataDrop(DataDrop* curr) { visitor.visitIndex(curr->segment); } - void visitMemoryCopy(MemoryCopy* curr) {} - void visitMemoryFill(MemoryFill* curr) {} - void visitConst(Const* curr) { visitor.visitLiteral(curr->value); } - void visitUnary(Unary* curr) { visitor.visitInt(curr->op); } - void visitBinary(Binary* curr) { visitor.visitInt(curr->op); } - void visitSelect(Select* curr) {} - void visitDrop(Drop* curr) {} - void visitReturn(Return* curr) {} - void visitHost(Host* curr) { - visitor.visitInt(curr->op); - visitor.visitNonScopeName(curr->nameOperand); - } - void visitRefNull(RefNull* curr) {} - void visitRefIsNull(RefIsNull* curr) {} - void visitRefFunc(RefFunc* curr) { visitor.visitNonScopeName(curr->func); } - void visitTry(Try* curr) {} - void visitThrow(Throw* curr) { visitor.visitNonScopeName(curr->event); } - void visitRethrow(Rethrow* curr) {} - void visitBrOnExn(BrOnExn* curr) { - visitor.visitScopeName(curr->name); - visitor.visitNonScopeName(curr->event); - } - void visitNop(Nop* curr) {} - void visitUnreachable(Unreachable* curr) {} - void visitPush(Push* curr) {} - void visitPop(Pop* curr) {} - } singleton(curr, visitor); -} - -} // namespace - bool ExpressionAnalyzer::flexibleEqual(Expression* left, Expression* right, ExprComparer comparer) { @@ -247,80 +105,6 @@ std::vector leftStack; std::vector rightStack; - struct Immediates { - Comparer& parent; - - Immediates(Comparer& parent) : parent(parent) {} - - SmallVector scopeNames; - SmallVector nonScopeNames; - SmallVector ints; - SmallVector literals; - SmallVector types; - SmallVector indexes; - SmallVector addresses; - - void visitScopeName(Name curr) { scopeNames.push_back(curr); } - void visitNonScopeName(Name curr) { nonScopeNames.push_back(curr); } - void visitInt(int32_t curr) { ints.push_back(curr); } - void visitLiteral(Literal curr) { literals.push_back(curr); } - void visitType(Type curr) { types.push_back(curr); } - void visitIndex(Index curr) { indexes.push_back(curr); } - void visitAddress(Address curr) { addresses.push_back(curr); } - - // Comparison is by value, except for names, which must match. - bool operator==(const Immediates& other) { - if (scopeNames.size() != other.scopeNames.size()) { - return false; - } - for (Index i = 0; i < scopeNames.size(); i++) { - auto leftName = scopeNames[i]; - auto rightName = other.scopeNames[i]; - auto iter = parent.rightNames.find(leftName); - // If it's not found, that means it was defined out of the expression - // being compared, in which case we can just treat it literally - it - // must be exactly identical. - if (iter != parent.rightNames.end()) { - leftName = iter->second; - } - if (leftName != rightName) { - return false; - } - } - if (nonScopeNames != other.nonScopeNames) { - return false; - } - if (ints != other.ints) { - return false; - } - if (literals != other.literals) { - return false; - } - if (types != other.types) { - return false; - } - if (indexes != other.indexes) { - return false; - } - if (addresses != other.addresses) { - return false; - } - return true; - } - - bool operator!=(const Immediates& other) { return !(*this == other); } - - void clear() { - scopeNames.clear(); - nonScopeNames.clear(); - ints.clear(); - literals.clear(); - types.clear(); - indexes.clear(); - addresses.clear(); - } - }; - bool noteNames(Name left, Name right) { if (left.is() != right.is()) { return false; @@ -333,8 +117,6 @@ } bool compare(Expression* left, Expression* right, ExprComparer comparer) { - Immediates leftImmediates(*this), rightImmediates(*this); - // The empty name is the same on both sides. rightNames[Name()] = Name(); @@ -352,45 +134,16 @@ if (!left) { continue; } + // There are actual expressions to compare here. Start with the custom + // comparer function that was provided. if (comparer(left, right)) { - continue; // comparison hook, before all the rest + continue; } - // continue with normal structural comparison - if (left->_id != right->_id) { + if (left->type != right->type) { return false; } - // Blocks and loops introduce scoping. - if (auto* block = left->dynCast()) { - if (!noteNames(block->name, right->cast()->name)) { - return false; - } - } else if (auto* loop = left->dynCast()) { - if (!noteNames(loop->name, right->cast()->name)) { - return false; - } - } else { - // For all other nodes, compare their immediate values - visitImmediates(left, leftImmediates); - visitImmediates(right, rightImmediates); - if (leftImmediates != rightImmediates) { - return false; - } - leftImmediates.clear(); - rightImmediates.clear(); - } - // Add child nodes. - Index counter = 0; - for (auto* child : ChildIterator(left)) { - leftStack.push_back(child); - counter++; - } - for (auto* child : ChildIterator(right)) { - rightStack.push_back(child); - counter--; - } - // The number of child nodes must match (e.g. return has an optional - // one). - if (counter != 0) { + // Do the actual comparison, updating the names and stacks accordingly. + if (!compareNodes(left, right)) { return false; } } @@ -399,27 +152,112 @@ } return true; } + + bool compareNodes(Expression* left, Expression* right) { + if (left->_id != right->_id) { + return false; + } + +#define DELEGATE_ID left->_id + +// Create cast versions of it for later operations. +#define DELEGATE_START(id) \ + auto* castLeft = left->cast(); \ + WASM_UNUSED(castLeft); \ + auto* castRight = right->cast(); \ + WASM_UNUSED(castRight); + +// Handle each type of field, comparing it appropriately. +#define DELEGATE_FIELD_CHILD(id, name) \ + leftStack.push_back(castLeft->name); \ + rightStack.push_back(castRight->name); + +#define DELEGATE_FIELD_CHILD_VECTOR(id, name) \ + if (castLeft->name.size() != castRight->name.size()) { \ + return false; \ + } \ + for (auto* child : castLeft->name) { \ + leftStack.push_back(child); \ + } \ + for (auto* child : castRight->name) { \ + rightStack.push_back(child); \ + } + +#define COMPARE_FIELD(name) \ + if (castLeft->name != castRight->name) { \ + return false; \ + } + +#define DELEGATE_FIELD_INT(id, name) COMPARE_FIELD(name) +#define DELEGATE_FIELD_LITERAL(id, name) COMPARE_FIELD(name) +#define DELEGATE_FIELD_NAME(id, name) COMPARE_FIELD(name) +#define DELEGATE_FIELD_SIGNATURE(id, name) COMPARE_FIELD(name) +#define DELEGATE_FIELD_TYPE(id, name) COMPARE_FIELD(name) +#define DELEGATE_FIELD_ADDRESS(id, name) COMPARE_FIELD(name) + +#define COMPARE_LIST(name) \ + if (castLeft->name.size() != castRight->name.size()) { \ + return false; \ + } \ + for (Index i = 0; i < castLeft->name.size(); i++) { \ + if (castLeft->name[i] != castRight->name[i]) { \ + return false; \ + } \ + } + +#define DELEGATE_FIELD_INT_ARRAY(id, name) COMPARE_LIST(name) + +#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, name) \ + if (castLeft->name.is() != castRight->name.is()) { \ + return false; \ + } \ + rightNames[castLeft->name] = castRight->name; + +#define DELEGATE_FIELD_SCOPE_NAME_USE(id, name) \ + if (!compareNames(castLeft->name, castRight->name)) { \ + return false; \ + } + +#define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, name) \ + if (castLeft->name.size() != castRight->name.size()) { \ + return false; \ + } \ + for (Index i = 0; i < castLeft->name.size(); i++) { \ + if (!compareNames(castLeft->name[i], castRight->name[i])) { \ + return false; \ + } \ + } + +#include "wasm-delegations-fields.h" + + return true; + } + + bool compareNames(Name left, Name right) { + auto iter = rightNames.find(left); + // If it's not found, that means it was defined out of the expression + // being compared, in which case we can just treat it literally - it + // must be exactly identical. + if (iter != rightNames.end()) { + left = iter->second; + } + return left == right; + } }; return Comparer().compare(left, right, comparer); } // hash an expression, ignoring superficial details like specific internal names -HashType ExpressionAnalyzer::hash(Expression* curr) { +size_t ExpressionAnalyzer::hash(Expression* curr) { struct Hasher { - HashType digest = 0; + size_t digest = wasm::hash(0); Index internalCounter = 0; // for each internal name, its unique id std::map internalNames; ExpressionStack stack; - void noteScopeName(Name curr) { - if (curr.is()) { - internalNames[curr] = internalCounter++; - } - } - Hasher(Expression* curr) { stack.push_back(curr); @@ -427,9 +265,12 @@ curr = stack.back(); stack.pop_back(); if (!curr) { + // This was an optional child that was not present. Hash a 0 to + // represent that. + rehash(digest, 0); continue; } - hash(curr->_id); + rehash(digest, curr->_id); // we often don't need to hash the type, as it is tied to other values // we are hashing anyhow, but there are exceptions: for example, a // local.get's type is determined by the function, so if we are @@ -438,33 +279,52 @@ // if we hash between modules, then we need to take int account // call_imports type, etc. The simplest thing is just to hash the // type for all of them. - hash(curr->type.getID()); - // Blocks and loops introduce scoping. - if (auto* block = curr->dynCast()) { - noteScopeName(block->name); - } else if (auto* loop = curr->dynCast()) { - noteScopeName(loop->name); - } else { - // For all other nodes, compare their immediate values - visitImmediates(curr, *this); - } - // Hash children - Index counter = 0; - for (auto* child : ChildIterator(curr)) { - stack.push_back(child); - counter++; - } - // Sometimes children are optional, e.g. return, so we must hash - // their number as well. - hash(counter); + rehash(digest, curr->type.getID()); + // Hash the contents of the expression. + hashExpression(curr); } } - void hash(HashType hash) { digest = rehash(digest, hash); } - void hash64(uint64_t hash) { - digest = rehash(rehash(digest, HashType(hash >> 32)), HashType(hash)); + void hashExpression(Expression* curr) { + +#define DELEGATE_ID curr->_id + +// Create cast versions of it for later operations. +#define DELEGATE_START(id) \ + auto* cast = curr->cast(); \ + WASM_UNUSED(cast); + +// Handle each type of field, comparing it appropriately. +#define DELEGATE_GET_FIELD(id, name) cast->name + +#define DELEGATE_FIELD_CHILD(id, name) stack.push_back(cast->name); + +#define HASH_FIELD(name) rehash(digest, cast->name); + +#define DELEGATE_FIELD_INT(id, name) HASH_FIELD(name) +#define DELEGATE_FIELD_LITERAL(id, name) HASH_FIELD(name) +#define DELEGATE_FIELD_SIGNATURE(id, name) HASH_FIELD(name) + +#define DELEGATE_FIELD_NAME(id, name) visitNonScopeName(cast->name) +#define DELEGATE_FIELD_TYPE(id, name) visitType(cast->name); +#define DELEGATE_FIELD_ADDRESS(id, name) visitAddress(cast->name); + +// Note that we only note the scope name, but do not also visit it. That means +// that (block $x) and (block) get the same hash. In other words, we only change +// the hash based on uses of scope names, that is when there is a noticeable +// difference in break targets. +#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, name) noteScopeName(cast->name); + +#define DELEGATE_FIELD_SCOPE_NAME_USE(id, name) visitScopeName(cast->name); + +#include "wasm-delegations-fields.h" } + void noteScopeName(Name curr) { + if (curr.is()) { + internalNames[curr] = internalCounter++; + } + } void visitScopeName(Name curr) { // Names are relative, we give the same hash for // (block $x (br $x)) @@ -472,22 +332,11 @@ static_assert(sizeof(Index) == sizeof(int32_t), "wasm64 will need changes here"); assert(internalNames.find(curr) != internalNames.end()); - return hash(internalNames[curr]); - } - void visitNonScopeName(Name curr) { return hash64(uint64_t(curr.str)); } - void visitInt(int32_t curr) { hash(curr); } - void visitLiteral(Literal curr) { hash(std::hash()(curr)); } - void visitType(Type curr) { hash(int32_t(curr.getSingle())); } - void visitIndex(Index curr) { - static_assert(sizeof(Index) == sizeof(int32_t), - "wasm64 will need changes here"); - hash(int32_t(curr)); - } - void visitAddress(Address curr) { - static_assert(sizeof(Address) == sizeof(int32_t), - "wasm64 will need changes here"); - hash(int32_t(curr)); + rehash(digest, internalNames[curr]); } + void visitNonScopeName(Name curr) { rehash(digest, uint64_t(curr.str)); } + void visitType(Type curr) { rehash(digest, curr.getID()); } + void visitAddress(Address curr) { rehash(digest, curr.addr); } }; return Hasher(curr).digest; diff -Nru binaryen-91/src/ir/ExpressionManipulator.cpp binaryen-99/src/ir/ExpressionManipulator.cpp --- binaryen-91/src/ir/ExpressionManipulator.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/ir/ExpressionManipulator.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -16,7 +16,6 @@ #include "ir/load-utils.h" #include "ir/utils.h" -#include "support/hash.h" namespace wasm { @@ -24,247 +23,92 @@ Expression* flexibleCopy(Expression* original, Module& wasm, CustomCopier custom) { - struct Copier : public OverriddenVisitor { - Module& wasm; - CustomCopier custom; - - Builder builder; - - Copier(Module& wasm, CustomCopier custom) - : wasm(wasm), custom(custom), builder(wasm) {} - - Expression* copy(Expression* curr) { - if (!curr) { - return nullptr; - } - auto* ret = custom(curr); - if (ret) { - return ret; - } - return OverriddenVisitor::visit(curr); - } - - Expression* visitBlock(Block* curr) { - ExpressionList list(wasm.allocator); - for (Index i = 0; i < curr->list.size(); i++) { - list.push_back(copy(curr->list[i])); - } - return builder.makeBlock(curr->name, list, curr->type); - } - Expression* visitIf(If* curr) { - return builder.makeIf(copy(curr->condition), - copy(curr->ifTrue), - copy(curr->ifFalse), - curr->type); - } - Expression* visitLoop(Loop* curr) { - return builder.makeLoop(curr->name, copy(curr->body), curr->type); - } - Expression* visitBreak(Break* curr) { - return builder.makeBreak( - curr->name, copy(curr->value), copy(curr->condition)); - } - Expression* visitSwitch(Switch* curr) { - return builder.makeSwitch(curr->targets, - curr->default_, - copy(curr->condition), - copy(curr->value)); - } - Expression* visitCall(Call* curr) { - auto* ret = - builder.makeCall(curr->target, {}, curr->type, curr->isReturn); - for (Index i = 0; i < curr->operands.size(); i++) { - ret->operands.push_back(copy(curr->operands[i])); - } - return ret; - } - Expression* visitCallIndirect(CallIndirect* curr) { - std::vector copiedOps; - for (auto op : curr->operands) { - copiedOps.push_back(copy(op)); - } - return builder.makeCallIndirect( - copy(curr->target), copiedOps, curr->sig, curr->isReturn); - } - Expression* visitLocalGet(LocalGet* curr) { - return builder.makeLocalGet(curr->index, curr->type); - } - Expression* visitLocalSet(LocalSet* curr) { - if (curr->isTee()) { - return builder.makeLocalTee(curr->index, copy(curr->value), curr->type); - } else { - return builder.makeLocalSet(curr->index, copy(curr->value)); - } - } - Expression* visitGlobalGet(GlobalGet* curr) { - return builder.makeGlobalGet(curr->name, curr->type); - } - Expression* visitGlobalSet(GlobalSet* curr) { - return builder.makeGlobalSet(curr->name, copy(curr->value)); - } - Expression* visitLoad(Load* curr) { - if (curr->isAtomic) { - return builder.makeAtomicLoad( - curr->bytes, curr->offset, copy(curr->ptr), curr->type); - } - return builder.makeLoad(curr->bytes, - LoadUtils::isSignRelevant(curr) ? curr->signed_ - : false, - curr->offset, - curr->align, - copy(curr->ptr), - curr->type); - } - Expression* visitStore(Store* curr) { - if (curr->isAtomic) { - return builder.makeAtomicStore(curr->bytes, - curr->offset, - copy(curr->ptr), - copy(curr->value), - curr->valueType); - } - return builder.makeStore(curr->bytes, - curr->offset, - curr->align, - copy(curr->ptr), - copy(curr->value), - curr->valueType); - } - Expression* visitAtomicRMW(AtomicRMW* curr) { - return builder.makeAtomicRMW(curr->op, - curr->bytes, - curr->offset, - copy(curr->ptr), - copy(curr->value), - curr->type); - } - Expression* visitAtomicCmpxchg(AtomicCmpxchg* curr) { - return builder.makeAtomicCmpxchg(curr->bytes, - curr->offset, - copy(curr->ptr), - copy(curr->expected), - copy(curr->replacement), - curr->type); - } - Expression* visitAtomicWait(AtomicWait* curr) { - return builder.makeAtomicWait(copy(curr->ptr), - copy(curr->expected), - copy(curr->timeout), - curr->expectedType, - curr->offset); - } - Expression* visitAtomicNotify(AtomicNotify* curr) { - return builder.makeAtomicNotify( - copy(curr->ptr), copy(curr->notifyCount), curr->offset); - } - Expression* visitAtomicFence(AtomicFence* curr) { - return builder.makeAtomicFence(); - } - Expression* visitSIMDExtract(SIMDExtract* curr) { - return builder.makeSIMDExtract(curr->op, copy(curr->vec), curr->index); - } - Expression* visitSIMDReplace(SIMDReplace* curr) { - return builder.makeSIMDReplace( - curr->op, copy(curr->vec), curr->index, copy(curr->value)); - } - Expression* visitSIMDShuffle(SIMDShuffle* curr) { - return builder.makeSIMDShuffle( - copy(curr->left), copy(curr->right), curr->mask); - } - Expression* visitSIMDTernary(SIMDTernary* curr) { - return builder.makeSIMDTernary( - curr->op, copy(curr->a), copy(curr->b), copy(curr->c)); - } - Expression* visitSIMDShift(SIMDShift* curr) { - return builder.makeSIMDShift( - curr->op, copy(curr->vec), copy(curr->shift)); - } - Expression* visitSIMDLoad(SIMDLoad* curr) { - return builder.makeSIMDLoad( - curr->op, curr->offset, curr->align, copy(curr->ptr)); - } - Expression* visitConst(Const* curr) { - return builder.makeConst(curr->value); - } - Expression* visitMemoryInit(MemoryInit* curr) { - return builder.makeMemoryInit( - curr->segment, copy(curr->dest), copy(curr->offset), copy(curr->size)); - } - Expression* visitDataDrop(DataDrop* curr) { - return builder.makeDataDrop(curr->segment); - } - Expression* visitMemoryCopy(MemoryCopy* curr) { - return builder.makeMemoryCopy( - copy(curr->dest), copy(curr->source), copy(curr->size)); - } - Expression* visitMemoryFill(MemoryFill* curr) { - return builder.makeMemoryFill( - copy(curr->dest), copy(curr->value), copy(curr->size)); - } - Expression* visitUnary(Unary* curr) { - return builder.makeUnary(curr->op, copy(curr->value)); - } - Expression* visitBinary(Binary* curr) { - return builder.makeBinary(curr->op, copy(curr->left), copy(curr->right)); - } - Expression* visitSelect(Select* curr) { - return builder.makeSelect(copy(curr->condition), - copy(curr->ifTrue), - copy(curr->ifFalse), - curr->type); - } - Expression* visitDrop(Drop* curr) { - return builder.makeDrop(copy(curr->value)); - } - Expression* visitReturn(Return* curr) { - return builder.makeReturn(copy(curr->value)); - } - Expression* visitHost(Host* curr) { - std::vector operands; - for (Index i = 0; i < curr->operands.size(); i++) { - operands.push_back(copy(curr->operands[i])); - } - auto* ret = - builder.makeHost(curr->op, curr->nameOperand, std::move(operands)); - return ret; - } - Expression* visitRefNull(RefNull* curr) { return builder.makeRefNull(); } - Expression* visitRefIsNull(RefIsNull* curr) { - return builder.makeRefIsNull(copy(curr->value)); - } - Expression* visitRefFunc(RefFunc* curr) { - return builder.makeRefFunc(curr->func); - } - Expression* visitTry(Try* curr) { - return builder.makeTry( - copy(curr->body), copy(curr->catchBody), curr->type); - } - Expression* visitThrow(Throw* curr) { - std::vector operands; - for (Index i = 0; i < curr->operands.size(); i++) { - operands.push_back(copy(curr->operands[i])); - } - return builder.makeThrow(curr->event, std::move(operands)); - } - Expression* visitRethrow(Rethrow* curr) { - return builder.makeRethrow(copy(curr->exnref)); - } - Expression* visitBrOnExn(BrOnExn* curr) { - return builder.makeBrOnExn( - curr->name, curr->event, copy(curr->exnref), curr->sent); - } - Expression* visitNop(Nop* curr) { return builder.makeNop(); } - Expression* visitUnreachable(Unreachable* curr) { - return builder.makeUnreachable(); - } - Expression* visitPush(Push* curr) { - return builder.makePush(copy(curr->value)); - } - Expression* visitPop(Pop* curr) { return builder.makePop(curr->type); } + // Perform the copy using a stack of tasks (avoiding recusion). + struct CopyTask { + // The thing to copy. + Expression* original; + // The location of the pointer to write the copy to. + Expression** destPointer; }; - - Copier copier(wasm, custom); - return copier.copy(original); + std::vector tasks; + Expression* ret; + tasks.push_back({original, &ret}); + while (!tasks.empty()) { + auto task = tasks.back(); + tasks.pop_back(); + // If the custom copier handled this one, we have nothing to do. + auto* copy = custom(task.original); + if (copy) { + *task.destPointer = copy; + continue; + } + // If the original is a null, just copy that. (This can happen for an + // optional child.) + auto* original = task.original; + if (original == nullptr) { + *task.destPointer = nullptr; + continue; + } + // Allocate a new copy, and copy the fields. + +#define DELEGATE_ID original->_id + +// Allocate a new expression of the right type, and create cast versions of it +// for later operations. +#define DELEGATE_START(id) \ + copy = wasm.allocator.alloc(); \ + auto* castOriginal = original->cast(); \ + WASM_UNUSED(castOriginal); \ + auto* castCopy = copy->cast(); \ + WASM_UNUSED(castCopy); + +// Handle each type of field, copying it appropriately. +#define DELEGATE_FIELD_CHILD(id, name) \ + tasks.push_back({castOriginal->name, &castCopy->name}); + +#define DELEGATE_FIELD_CHILD_VECTOR(id, name) \ + castCopy->name.resize(castOriginal->name.size()); \ + for (Index i = 0; i < castOriginal->name.size(); i++) { \ + tasks.push_back({castOriginal->name[i], &castCopy->name[i]}); \ + } + +#define COPY_FIELD(name) castCopy->name = castOriginal->name; + +#define DELEGATE_FIELD_INT(id, name) COPY_FIELD(name) +#define DELEGATE_FIELD_LITERAL(id, name) COPY_FIELD(name) +#define DELEGATE_FIELD_NAME(id, name) COPY_FIELD(name) +#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, name) COPY_FIELD(name) +#define DELEGATE_FIELD_SCOPE_NAME_USE(id, name) COPY_FIELD(name) +#define DELEGATE_FIELD_SIGNATURE(id, name) COPY_FIELD(name) +#define DELEGATE_FIELD_TYPE(id, name) COPY_FIELD(name) +#define DELEGATE_FIELD_ADDRESS(id, name) COPY_FIELD(name) + +#define COPY_FIELD_LIST(name) \ + for (Index i = 0; i < castOriginal->name.size(); i++) { \ + castCopy->name[i] = castOriginal->name[i]; \ + } + +#define COPY_VECTOR(name) \ + castCopy->name.resize(castOriginal->name.size()); \ + COPY_FIELD_LIST(name) + +#define COPY_ARRAY(name) \ + assert(castCopy->name.size() == castOriginal->name.size()); \ + COPY_FIELD_LIST(name) + +#define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, name) COPY_VECTOR(name) + +#define DELEGATE_FIELD_INT_ARRAY(id, name) COPY_ARRAY(name) + +#include "wasm-delegations-fields.h" + + // The type can be simply copied. + copy->type = original->type; + + // Write the copy to where it should be referred to. + *task.destPointer = copy; + } + return ret; } // Splice an item into the middle of a block's list diff -Nru binaryen-91/src/ir/features.h binaryen-99/src/ir/features.h --- binaryen-91/src/ir/features.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/ir/features.h 2021-01-07 20:01:06.000000000 +0000 @@ -57,8 +57,6 @@ case AnyTrueVecI32x4: case AllTrueVecI32x4: case NegVecI64x2: - case AnyTrueVecI64x2: - case AllTrueVecI64x2: case AbsVecF32x4: case NegVecF32x4: case SqrtVecF32x4: diff -Nru binaryen-91/src/ir/flat.h binaryen-99/src/ir/flat.h --- binaryen-91/src/ir/flat.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/ir/flat.h 2021-01-07 20:01:06.000000000 +0000 @@ -45,11 +45,14 @@ // 1. Aside from a local.set, the operands of an instruction must be a // local.get, a const, or an unreachable. Anything else is written // to a local earlier. -// 2. Disallow block, loop, and if return values, and do not allow the -// function body to have a concrete type, i.e., do not use +// 2. Disallow control flow (block, loop, if, and try) return values, and do +// not allow the function body to have a concrete type, i.e., do not use // control flow to pass around values. // 3. Disallow local.tee, setting a local is always done in a local.set // on a non-nested-expression location. +// 4. local.set cannot have an operand that is control flow (control flow with +// values is prohibited already, but e.g. a block ending in unreachable, +// which can normally be nested, is also disallowed). // #ifndef wasm_ir_flat_h @@ -64,21 +67,19 @@ namespace Flat { -inline bool isControlFlowStructure(Expression* curr) { - return curr->is() || curr->is() || curr->is() || - curr->is(); -} - inline void verifyFlatness(Function* func) { struct VerifyFlatness : public PostWalker> { void visitExpression(Expression* curr) { - if (isControlFlowStructure(curr)) { + if (Properties::isControlFlowStructure(curr)) { verify(!curr->type.isConcrete(), "control flow structures must not flow values"); - } else if (curr->is()) { - verify(!curr->type.isConcrete(), "tees are not allowed, only sets"); + } else if (auto* set = curr->dynCast()) { + verify(!set->isTee() || set->type == Type::unreachable, + "tees are not allowed, only sets"); + verify(!Properties::isControlFlowStructure(set->value), + "set values cannot be control flow"); } else { for (auto* child : ChildIterator(curr)) { verify(Properties::isConstantExpression(child) || diff -Nru binaryen-91/src/ir/global-utils.h binaryen-99/src/ir/global-utils.h --- binaryen-91/src/ir/global-utils.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/ir/global-utils.h 2021-01-07 20:01:06.000000000 +0000 @@ -54,8 +54,16 @@ } inline bool canInitializeGlobal(const Expression* curr) { - return curr->is() || curr->is() || curr->is() || - curr->is(); + if (auto* tuple = curr->dynCast()) { + for (auto* op : tuple->operands) { + if (!canInitializeGlobal(op)) { + return false; + } + } + return true; + } + return Properties::isSingleConstantExpression(curr) || + curr->is() || curr->is() || curr->is(); } } // namespace GlobalUtils diff -Nru binaryen-91/src/ir/hashed.h binaryen-99/src/ir/hashed.h --- binaryen-91/src/ir/hashed.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/ir/hashed.h 2021-01-07 20:01:06.000000000 +0000 @@ -26,16 +26,18 @@ // An expression with a cached hash value struct HashedExpression { Expression* expr; - HashType hash; + size_t digest; HashedExpression(Expression* expr) : expr(expr) { if (expr) { - hash = ExpressionAnalyzer::hash(expr); + digest = ExpressionAnalyzer::hash(expr); + } else { + digest = hash(0); } } HashedExpression(const HashedExpression& other) - : expr(other.expr), hash(other.hash) {} + : expr(other.expr), digest(other.digest) {} }; // A pass that hashes all functions @@ -43,7 +45,7 @@ struct FunctionHasher : public WalkerPass> { bool isFunctionParallel() override { return true; } - struct Map : public std::map {}; + struct Map : public std::map {}; FunctionHasher(Map* output) : output(output) {} @@ -54,22 +56,21 @@ for (auto& func : module->functions) { // ensure an entry for each function - we must not modify the map shape in // parallel, just the values - hashes[func.get()] = 0; + hashes[func.get()] = hash(0); } return hashes; } void doWalkFunction(Function* func) { output->at(func) = hashFunction(func); } - static HashType hashFunction(Function* func) { - HashType ret = 0; - ret = rehash(ret, (HashType)func->sig.params.getID()); - ret = rehash(ret, (HashType)func->sig.results.getID()); + static size_t hashFunction(Function* func) { + auto digest = hash(func->sig.params.getID()); + rehash(digest, func->sig.results.getID()); for (auto type : func->vars) { - ret = rehash(ret, (HashType)type.getSingle()); + rehash(digest, type.getID()); } - ret = rehash(ret, (HashType)ExpressionAnalyzer::hash(func->body)); - return ret; + hash_combine(digest, ExpressionAnalyzer::hash(func->body)); + return digest; } private: diff -Nru binaryen-91/src/ir/iteration.h binaryen-99/src/ir/iteration.h --- binaryen-91/src/ir/iteration.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/ir/iteration.h 2021-01-07 20:01:06.000000000 +0000 @@ -17,6 +17,7 @@ #ifndef wasm_ir_iteration_h #define wasm_ir_iteration_h +#include "ir/properties.h" #include "wasm-traversal.h" #include "wasm.h" @@ -29,18 +30,24 @@ // * This skips missing children, e.g. if an if has no else, it is represented // as having 2 children (and not 3 with the last a nullptr). // -// In general, it is preferable not to use this class and to directly access -// the children (using e.g. iff->ifTrue etc.), as that is faster. However, in -// cases where speed does not matter, this can be convenient. +// In general, it is preferable not to use this class and to directly access the +// children (using e.g. iff->ifTrue etc.), as that is faster. However, in cases +// where speed does not matter, this can be convenient. TODO: reimplement these +// to avoid materializing all the chilren at once. // - -class ChildIterator { +// ChildIterator - Iterates over all children +// +// ValueChildIterator - Iterates over all children that produce values used by +// this instruction. For example, includes If::condition +// but not If::ifTrue. +// +template class Scanner> class AbstractChildIterator { + using Self = AbstractChildIterator; struct Iterator { - const ChildIterator& parent; + const Self& parent; Index index; - Iterator(const ChildIterator& parent, Index index) - : parent(parent), index(index) {} + Iterator(const Self& parent, Index index) : parent(parent), index(index) {} bool operator!=(const Iterator& other) const { return index != other.index || &parent != &(other.parent); @@ -52,12 +59,12 @@ }; public: - std::vector children; + SmallVector children; - ChildIterator(Expression* parent) { + AbstractChildIterator(Expression* parent) { struct Traverser : public PostWalker { Expression* parent; - std::vector* children; + SmallVector* children; // We need to scan subchildren exactly once - just the parent. bool scanned = false; @@ -65,8 +72,8 @@ static void scan(Traverser* self, Expression** currp) { if (!self->scanned) { self->scanned = true; - PostWalker>::scan( - self, currp); + Scanner>::scan(self, + currp); } else { // This is one of the children. Do not scan further, just note it. self->children->push_back(*currp); @@ -82,6 +89,49 @@ Iterator end() const { return Iterator(*this, children.size()); } }; +template +struct ValueChildScanner : PostWalker { + static void scan(SubType* self, Expression** currp) { + auto* curr = *currp; + if (Properties::isControlFlowStructure(curr)) { + // If conditions are the only value children of control flow structures + if (auto* iff = curr->dynCast()) { + self->pushTask(SubType::scan, &iff->condition); + } + } else { + // All children on non-control flow expressions are value children + PostWalker::scan(self, currp); + } + } +}; + +using ChildIterator = AbstractChildIterator; +using ValueChildIterator = AbstractChildIterator; + +// Returns true if the current expression contains a certain kind of expression, +// within the given depth of BFS. If depth is -1, this searches all children. +template bool containsChild(Expression* parent, int depth = -1) { + std::vector exprs; + std::vector nextExprs; + exprs.push_back(parent); + while (!exprs.empty() && depth > 0) { + for (auto* expr : exprs) { + for (auto* child : ChildIterator(expr)) { + if (child->is()) { + return true; + } + nextExprs.push_back(child); + } + } + exprs.swap(nextExprs); + nextExprs.clear(); + if (depth > 0) { + depth--; + } + } + return false; +} + } // namespace wasm #endif // wasm_ir_iteration_h diff -Nru binaryen-91/src/ir/literal-utils.h binaryen-99/src/ir/literal-utils.h --- binaryen-91/src/ir/literal-utils.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/ir/literal-utils.h 2021-01-07 20:01:06.000000000 +0000 @@ -32,18 +32,13 @@ } inline Expression* makeZero(Type type, Module& wasm) { - // TODO: Switch to using v128.const once V8 supports it + // TODO: Remove this function once V8 supports v128.const // (https://bugs.chromium.org/p/v8/issues/detail?id=8460) + Builder builder(wasm); if (type == Type::v128) { - Builder builder(wasm); - return builder.makeUnary(SplatVecI32x4, - builder.makeConst(Literal(int32_t(0)))); + return builder.makeUnary(SplatVecI32x4, builder.makeConst(int32_t(0))); } - if (type.isRef()) { - Builder builder(wasm); - return builder.makeRefNull(); - } - return makeFromInt32(0, type, wasm); + return builder.makeConstantExpression(Literal::makeZeros(type)); } } // namespace LiteralUtils diff -Nru binaryen-91/src/ir/LocalGraph.cpp binaryen-99/src/ir/LocalGraph.cpp --- binaryen-91/src/ir/LocalGraph.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/ir/LocalGraph.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -20,7 +20,6 @@ #include #include #include -#include namespace wasm { diff -Nru binaryen-91/src/ir/manipulation.h binaryen-99/src/ir/manipulation.h --- binaryen-91/src/ir/manipulation.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/ir/manipulation.h 2021-01-07 20:01:06.000000000 +0000 @@ -40,9 +40,10 @@ return ret; } -template inline RefNull* refNull(InputType* target) { +template +inline RefNull* refNull(InputType* target, Type type) { auto* ret = convert(target); - ret->finalize(); + ret->finalize(type); return ret; } diff -Nru binaryen-91/src/ir/match.h binaryen-99/src/ir/match.h --- binaryen-91/src/ir/match.h 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/src/ir/match.h 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,848 @@ +/* + * Copyright 2020 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. + */ + +// +// match.h - Provides an easily extensible layered API for matching expression +// patterns and extracting their components. The low-level API provides modular +// building blocks for creating matchers for any data type and the high-level +// API provides a succinct and flexible interface for matching expressions and +// extracting useful information from them. + +#ifndef wasm_ir_match_h +#define wasm_ir_match_h + +#include "ir/abstract.h" +#include "wasm.h" + +namespace wasm { + +namespace Match { + +// The available matchers are: +// +// i32, i64, f32, f64 +// +// Match constants of the corresponding type. Takes zero or one argument. The +// argument can be a specific value to match or it can be a pointer to a +// value, Literal, or Const* at which to store the matched entity. +// +// ival, fval +// +// Match any integer constant or any floating point constant. Takes neither, +// either, or both of two possible arguments: first, a pointer to a value, +// Literal, or Const* at which to store the matched entity and second, a +// specific value to match. +// +// constant +// +// Matches any numeric Const expression. Takes neither, either, or both of +// two possible arguments: first, a pointer to either Literal or Const* at +// which to store the matched entity and second, a specific value (given as +// an int32_t) to match.. +// +// any +// +// Matches any Expression. Optionally takes as an argument a pointer to +// Expression* at which to store the matched Expression*. +// +// unary +// +// Matches Unary expressions. Takes an optional pointer to Unary* at which to +// store the matched Unary*, followed by either a UnaryOp or an Abstract::Op +// describing which unary expressions to match, followed by a matcher to +// apply to the unary expression's operand. +// +// binary +// +// Matches Binary expressions. Takes an optional pointer to Binary* at which +// to store the matched Binary*, followed by either a BinaryOp or an +// Abstract::Op describing which binary expresions to match, followed by +// matchers to apply to the binary expression's left and right operands. +// +// select +// +// Matches Select expressions. Takes an optional pointer to Select* at which +// to store the matched Select*, followed by matchers to apply to the ifTrue, +// ifFalse, and condition operands. +// +// +// How to create new matchers: +// +// Lets add a matcher for an expression type that is declared in wasm.h: +// +// class Frozzle : public SpecificExpression { +// public: +// Expression* foo; +// Expression* bar; +// Expression* baz; +// }; +// +// This expression is very simple; in order to match it, all we need to do is +// apply other matchers to its subexpressions. The matcher infrastructure will +// handle this automatically once we tell it how to access the subexpressions. +// To tell the matcher infrastructure how many subexpressions there are we need +// to specialize `NumComponents`. +// +// template<> struct NumComponents { +// static constexpr size_t value = 3; +// }; +// +// And to tell the matcher infrastructure how to access those three +// subexpressions, we need to specialize `GetComponent` three times. +// +// template<> struct GetComponent { +// Expression* operator()(Frozzle* curr) { return curr->foo; } +// }; +// template<> struct GetComponent { +// Expression* operator()(Frozzle* curr) { return curr->bar; } +// }; +// template<> struct GetComponent { +// Expression* operator()(Frozzle* curr) { return curr->baz; } +// }; +// +// For simple expressions, that's all we need to do to get a fully functional +// matcher that we can construct and use like this, where S1, S2, and S3 are +// the types of the submatchers to use and s1, s2, and s3 are instances of +// those types: +// +// Frozzle* extracted; +// auto matcher = Matcher(&extracted, {}, s1, s2, s3); +// if (matches(expr, matcher)) { +// // `extracted` set to `expr` here +// } +// +// It's annoying to have to write out the types S1, S2, and S3 and we don't get +// class template argument deduction (CTAD) until C++17, so it's useful to +// create a wrapper function so can take advantage of function template +// argument deduction. We can also take this opportunity to make the interface +// more compact. +// +// template +// inline decltype(auto) frozzle(Frozzle** binder, +// S1&& s1, S2&& s2, S3&& s3) { +// return Matcher(binder, {}, s1, s2, s3); +// } +// template +// inline decltype(auto) frozzle(S1&& s1, S2&& s2, S3&& s3) { +// return Matcher(nullptr, {}, s1, s2, s3); +// } +// +// Notice that we make the interface more compact by providing overloads with +// and without the binder. Here is the final matcher usage: +// +// Frozzle* extracted; +// if (matches(expr, frozzle(&extracted, s1, s2, s3))) { +// // `extracted` set to `expr` here +// } +// +// Some matchers are more complicated, though, because they need to do +// something besides just applying submatchers to the components of an +// expression. These matchers require slightly more work. +// +// +// Complex matchers: +// +// Lets add a matcher that will match calls to functions whose names start with +// certain prefixes. Since this is not a normal matcher for Call expressions, +// we can't identify it by the Call* type. Instead, we have to create a new +// identifier type, called a "Kind" for it. +// +// struct PrefixCallKind {}; +// +// Next, since we're not in the common case of using a specific expression +// pointer as our kind, we have to tell the matcher infrastructure what type of +// thing this matcher matches. Since we want this matcher to be able to match +// any given prefix, we also need the matcher to contain the given prefix as +// state, and we need to tell the matcher infrastructure what type that state +// is as well. To specify these types, we need to specialize +// `KindTypeRegistry` for `PrefixCallKind`. +// +// template<> struct KindTypeRegistry { +// using matched_t = Call*; +// using data_t = Name; +// }; +// +// Note that because `matched_t` is set to a specific expression pointer, this +// matcher will automatically be able to be applied to any `Expression*`, not +// just `Call*`. If `matched_t` were not a specific expression pointer, this +// matcher would only be able to be applied to types compatible with +// `matched_t`. Also note that if a matcher does not need to store any state, +// its `data_t` should be set to `unused_t`. +// +// Now we need to tell the matcher infrastructure what custom logic to apply +// for this matcher. We do this by specializing `MatchSelf`. +// +// template<> struct MatchSelf { +// bool operator()(Call* curr, Name prefix) { +// return curr->name.startsWith(prefix); +// } +// }; +// +// Note that the first parameter to `MatchSelf::operator()` will be that +// kind's `matched_t` and the second parameter will be that kind's `data_t`, +// which may be `unused_t`. (TODO: detect if `data_t` is `unused_t` and don't +// expose it in the Matcher interface if so.) +// +// After this, everything is the same as in the simple matcher case. This +// particular matcher doesn't need to recurse into any subcomponents, so we can +// skip straight to creating the wrapper function. +// +// decltype(auto) prefixCall(Call** binder, Name prefix) { +// return Matcher(binder, prefix); +// } +// +// Now we can use the new matcher: +// +// Call* call; +// if (matches(expr, prefixCall(&call, "__foo"))) { +// // `call` set to `expr` here +// } +// + +// The main entrypoint for matching. If the match succeeds, all variables bound +// in the matcher will be set to their corresponding matched values. Otherwise, +// the value of the bound variables is unspecified and may have changed. +template inline bool matches(Expression* expr, Matcher matcher) { + return matcher.matches(expr); +} + +namespace Internal { + +struct unused_t {}; + +// Each matcher has a `Kind`, which controls how candidate values are +// destructured and inspected. For most matchers, `Kind` is a pointer to the +// matched subtype of Expression, but when there are multiple matchers for the +// same kind of expression, they are disambiguated by having different `Kind`s. +// In this case, or if the matcher matches something besides a pointer to a +// subtype of Expression, or if the matcher requires additional state, the +// matched type and the type of additional state must be associated with the +// `Kind` via a specialization of `KindTypeRegistry`. +template struct KindTypeRegistry { + // The matched type + using matched_t = void; + // The type of additional state needed to perform a match. Can be set to + // `unused_t` if it's not needed. + using data_t = unused_t; +}; + +// Given a `Kind`, produce the type `matched_t` that is matched by that Kind and +// the type `candidate_t` that is the type of the parameter of the `matches` +// method. These types are only different if `matched_t` is a pointer to a +// subtype of Expression, in which case `candidate_t` is Expression*. +template struct MatchTypes { + using matched_t = typename std::conditional_t< + std::is_base_of>::value, + Kind, + typename KindTypeRegistry::matched_t>; + + static constexpr bool isExpr = + std::is_base_of>::value; + + using candidate_t = + typename std::conditional_t; +}; + +template using matched_t = typename MatchTypes::matched_t; +template using candidate_t = typename MatchTypes::candidate_t; +template using data_t = typename KindTypeRegistry::data_t; + +// Defined if the matched type is a specific expression pointer, so can be +// `dynCast`ed to from Expression*. +template +using enable_if_castable_t = typename std::enable_if< + std::is_base_of>>::value && + !std::is_same>::value, + int>::type; + +// Opposite of above +template +using enable_if_not_castable_t = typename std::enable_if< + !std::is_base_of>>::value || + std::is_same>::value, + int>::type; + +// Do a normal dynCast from Expression* to the subtype, storing the result in +// `out` and returning `true` iff the cast succeeded. +template = 0> +inline bool dynCastCandidate(candidate_t candidate, + matched_t& out) { + out = candidate->template dynCast>>(); + return out != nullptr; +} + +// Otherwise we are not matching an Expression, so this is infallible. +template = 0> +inline bool dynCastCandidate(candidate_t candidate, + matched_t& out) { + out = candidate; + return true; +} + +// Matchers can optionally specialize this to perform custom matching logic +// before recursing into submatchers, potentially short-circuiting the match. +// Uses a struct because partial specialization of functions is not allowed. +template struct MatchSelf { + bool operator()(matched_t, data_t) { return true; } +}; + +// Used to statically ensure that each matcher has the correct number of +// submatchers. This needs to be specialized for each kind of matcher that has +// submatchers. +template struct NumComponents { + static constexpr size_t value = 0; +}; + +// Every kind of matcher needs to partially specialize this for each of its +// components. Each specialization should define +// +// T operator()(matched_t) +// +// where T is the component's type. Components will be matched from first to +// last. Uses a struct instead of a function because partial specialization of +// functions is not allowed. +template struct GetComponent; + +// A type-level linked list to hold an arbitrary number of matchers. +template struct SubMatchers {}; +template +struct SubMatchers { + CurrMatcher curr; + SubMatchers next; + SubMatchers(CurrMatcher curr, NextMatchers... next) + : curr(curr), next(next...){}; +}; + +// Iterates through the components of the candidate, applying a submatcher to +// each component. Uses a struct instead of a function because partial +// specialization of functions is not allowed. +template +struct Components { + static inline bool + match(matched_t candidate, + SubMatchers& matchers) { + return matchers.curr.matches(GetComponent{}(candidate)) && + Components::match(candidate, + matchers.next); + } +}; +template struct Components { + static_assert(pos == NumComponents::value, + "Unexpected number of submatchers"); + static inline bool match(matched_t, SubMatchers<>) { + // Base case when there are no components left; trivially true. + return true; + } +}; + +template struct Matcher { + matched_t* binder; + data_t data; + SubMatchers submatchers; + + Matcher(matched_t* binder, data_t data, Matchers... submatchers) + : binder(binder), data(data), submatchers(submatchers...) {} + + inline bool matches(candidate_t candidate) { + matched_t casted; + if (dynCastCandidate(candidate, casted)) { + if (binder != nullptr) { + *binder = casted; + } + return MatchSelf{}(casted, data) && + Components::match(casted, submatchers); + } + return false; + } +}; + +// Concrete low-level matcher implementations. Not intended for direct external +// use. + +// Any: matches any value of the expected type +template struct AnyKind {}; +template struct KindTypeRegistry> { + using matched_t = T; + using data_t = unused_t; +}; +template inline decltype(auto) Any(T* binder) { + return Matcher>(binder, {}); +} + +// Exact: matches exact values of the expected type +template struct ExactKind {}; +template struct KindTypeRegistry> { + using matched_t = T; + using data_t = T; +}; +template struct MatchSelf> { + bool operator()(T self, T expected) { return self == expected; } +}; +template inline decltype(auto) Exact(T* binder, T data) { + return Matcher>(binder, data); +} + +// {I32,I64,Int,F32,F64,Float,Number}Lit: match `Literal` of the expected `Type` +struct I32LK { + static bool matchType(Literal lit) { return lit.type == Type::i32; } + static int32_t getVal(Literal lit) { return lit.geti32(); } +}; +struct I64LK { + static bool matchType(Literal lit) { return lit.type == Type::i64; } + static int64_t getVal(Literal lit) { return lit.geti64(); } +}; +struct IntLK { + static bool matchType(Literal lit) { return lit.type.isInteger(); } + static int64_t getVal(Literal lit) { return lit.getInteger(); } +}; +struct F32LK { + static bool matchType(Literal lit) { return lit.type == Type::f32; } + static float getVal(Literal lit) { return lit.getf32(); } +}; +struct F64LK { + static bool matchType(Literal lit) { return lit.type == Type::f64; } + static double getVal(Literal lit) { return lit.getf64(); } +}; +struct FloatLK { + static bool matchType(Literal lit) { return lit.type.isFloat(); } + static double getVal(Literal lit) { return lit.getFloat(); } +}; +template struct LitKind {}; +template struct KindTypeRegistry> { + using matched_t = Literal; + using data_t = unused_t; +}; +template struct MatchSelf> { + bool operator()(Literal lit, unused_t) { return T::matchType(lit); } +}; +template struct NumComponents> { + static constexpr size_t value = 1; +}; +template struct GetComponent, 0> { + decltype(auto) operator()(Literal lit) { return T::getVal(lit); } +}; +template inline decltype(auto) I32Lit(Literal* binder, S&& s) { + return Matcher, S>(binder, {}, s); +} +template inline decltype(auto) I64Lit(Literal* binder, S&& s) { + return Matcher, S>(binder, {}, s); +} +template inline decltype(auto) IntLit(Literal* binder, S&& s) { + return Matcher, S>(binder, {}, s); +} +template inline decltype(auto) F32Lit(Literal* binder, S&& s) { + return Matcher, S>(binder, {}, s); +} +template inline decltype(auto) F64Lit(Literal* binder, S&& s) { + return Matcher, S>(binder, {}, s); +} +template inline decltype(auto) FloatLit(Literal* binder, S&& s) { + return Matcher, S>(binder, {}, s); +} +struct NumberLitKind {}; +template<> struct KindTypeRegistry { + using matched_t = Literal; + using data_t = int32_t; +}; +template<> struct MatchSelf { + bool operator()(Literal lit, int32_t expected) { + return lit.type.isNumber() && + Literal::makeFromInt32(expected, lit.type) == lit; + } +}; +inline decltype(auto) NumberLit(Literal* binder, int32_t expected) { + return Matcher(binder, expected); +} + +// Const +template<> struct NumComponents { static constexpr size_t value = 1; }; +template<> struct GetComponent { + Literal operator()(Const* c) { return c->value; } +}; +template inline decltype(auto) ConstMatcher(Const** binder, S&& s) { + return Matcher(binder, {}, s); +} + +// Unary, UnaryOp and AbstractUnaryOp +template<> struct NumComponents { static constexpr size_t value = 2; }; +template<> struct GetComponent { + UnaryOp operator()(Unary* curr) { return curr->op; } +}; +template<> struct GetComponent { + Expression* operator()(Unary* curr) { return curr->value; } +}; +struct UnaryOpK { + using Op = UnaryOp; + static UnaryOp getOp(Type, Op op) { return op; } +}; +struct AbstractUnaryOpK { + using Op = Abstract::Op; + static UnaryOp getOp(Type type, Abstract::Op op) { + return Abstract::getUnary(type, op); + } +}; +template struct UnaryOpKind {}; +template struct KindTypeRegistry> { + using matched_t = Unary*; + using data_t = typename T::Op; +}; +template struct MatchSelf> { + bool operator()(Unary* curr, typename T::Op op) { + return curr->op == T::getOp(curr->value->type, op); + } +}; +template struct NumComponents> { + static constexpr size_t value = 1; +}; +template struct GetComponent, 0> { + Expression* operator()(Unary* curr) { return curr->value; } +}; +template +inline decltype(auto) UnaryMatcher(Unary** binder, S1&& s1, S2&& s2) { + return Matcher(binder, {}, s1, s2); +} +template +inline decltype(auto) UnaryOpMatcher(Unary** binder, UnaryOp op, S&& s) { + return Matcher, S>(binder, op, s); +} +template +inline decltype(auto) +AbstractUnaryOpMatcher(Unary** binder, Abstract::Op op, S&& s) { + return Matcher, S>(binder, op, s); +} + +// Binary, BinaryOp and AbstractBinaryOp +template<> struct NumComponents { static constexpr size_t value = 3; }; +template<> struct GetComponent { + BinaryOp operator()(Binary* curr) { return curr->op; } +}; +template<> struct GetComponent { + Expression* operator()(Binary* curr) { return curr->left; } +}; +template<> struct GetComponent { + Expression* operator()(Binary* curr) { return curr->right; } +}; +struct BinaryOpK { + using Op = BinaryOp; + static BinaryOp getOp(Type, Op op) { return op; } +}; +struct AbstractBinaryOpK { + using Op = Abstract::Op; + static BinaryOp getOp(Type type, Abstract::Op op) { + return Abstract::getBinary(type, op); + } +}; +template struct BinaryOpKind {}; +template struct KindTypeRegistry> { + using matched_t = Binary*; + using data_t = typename T::Op; +}; +template struct MatchSelf> { + bool operator()(Binary* curr, typename T::Op op) { + return curr->op == T::getOp(curr->left->type, op); + } +}; +template struct NumComponents> { + static constexpr size_t value = 2; +}; +template struct GetComponent, 0> { + Expression* operator()(Binary* curr) { return curr->left; } +}; +template struct GetComponent, 1> { + Expression* operator()(Binary* curr) { return curr->right; } +}; +template +inline decltype(auto) +BinaryMatcher(Binary** binder, S1&& s1, S2&& s2, S3&& s3) { + return Matcher(binder, {}, s1, s2, s3); +} +template +inline decltype(auto) +BinaryOpMatcher(Binary** binder, BinaryOp op, S1&& s1, S2&& s2) { + return Matcher, S1, S2>(binder, op, s1, s2); +} +template +inline decltype(auto) +AbstractBinaryOpMatcher(Binary** binder, Abstract::Op op, S1&& s1, S2&& s2) { + return Matcher, S1, S2>(binder, op, s1, s2); +} + +// Select +template<> struct NumComponents { static constexpr size_t value = 3; }; +template<> struct GetComponent { + Expression* operator()(Select* curr) { return curr->ifTrue; } +}; +template<> struct GetComponent { + Expression* operator()(Select* curr) { return curr->ifFalse; } +}; +template<> struct GetComponent { + Expression* operator()(Select* curr) { return curr->condition; } +}; +template +inline decltype(auto) +SelectMatcher(Select** binder, S1&& s1, S2&& s2, S3&& s3) { + return Matcher(binder, {}, s1, s2, s3); +} + +} // namespace Internal + +// Public matching API + +inline decltype(auto) i32() { + return Internal::ConstMatcher( + nullptr, Internal::I32Lit(nullptr, Internal::Any(nullptr))); +} +// Use int rather than int32_t to disambiguate literal 0, which otherwise could +// be resolved to either the int32_t overload or any of the pointer overloads. +inline decltype(auto) i32(int x) { + return Internal::ConstMatcher( + nullptr, Internal::I32Lit(nullptr, Internal::Exact(nullptr, x))); +} +inline decltype(auto) i32(int32_t* binder) { + return Internal::ConstMatcher( + nullptr, Internal::I32Lit(nullptr, Internal::Any(binder))); +} +inline decltype(auto) i32(Literal* binder) { + return Internal::ConstMatcher( + nullptr, Internal::I32Lit(binder, Internal::Any(nullptr))); +} +inline decltype(auto) i32(Const** binder) { + return Internal::ConstMatcher( + binder, Internal::I32Lit(nullptr, Internal::Any(nullptr))); +} + +inline decltype(auto) i64() { + return Internal::ConstMatcher( + nullptr, Internal::I64Lit(nullptr, Internal::Any(nullptr))); +} +inline decltype(auto) i64(int64_t x) { + return Internal::ConstMatcher( + nullptr, Internal::I64Lit(nullptr, Internal::Exact(nullptr, x))); +} +// Disambiguate literal 0, which could otherwise be interpreted as a pointer +inline decltype(auto) i64(int x) { return i64(int64_t(x)); } +inline decltype(auto) i64(int64_t* binder) { + return Internal::ConstMatcher( + nullptr, Internal::I64Lit(nullptr, Internal::Any(binder))); +} +inline decltype(auto) i64(Literal* binder) { + return Internal::ConstMatcher( + nullptr, Internal::I64Lit(binder, Internal::Any(nullptr))); +} +inline decltype(auto) i64(Const** binder) { + return Internal::ConstMatcher( + binder, Internal::I64Lit(nullptr, Internal::Any(nullptr))); +} + +inline decltype(auto) f32() { + return Internal::ConstMatcher( + nullptr, Internal::F32Lit(nullptr, Internal::Any(nullptr))); +} +inline decltype(auto) f32(float x) { + return Internal::ConstMatcher( + nullptr, Internal::F32Lit(nullptr, Internal::Exact(nullptr, x))); +} +// Disambiguate literal 0, which could otherwise be interpreted as a pointer +inline decltype(auto) f32(int x) { return f32(float(x)); } +inline decltype(auto) f32(float* binder) { + return Internal::ConstMatcher( + nullptr, Internal::F32Lit(nullptr, Internal::Any(binder))); +} +inline decltype(auto) f32(Literal* binder) { + return Internal::ConstMatcher( + nullptr, Internal::F32Lit(binder, Internal::Any(nullptr))); +} +inline decltype(auto) f32(Const** binder) { + return Internal::ConstMatcher( + binder, Internal::F32Lit(nullptr, Internal::Any(nullptr))); +} + +inline decltype(auto) f64() { + return Internal::ConstMatcher( + nullptr, Internal::F64Lit(nullptr, Internal::Any(nullptr))); +} +inline decltype(auto) f64(double x) { + return Internal::ConstMatcher( + nullptr, Internal::F64Lit(nullptr, Internal::Exact(nullptr, x))); +} +// Disambiguate literal 0, which could otherwise be interpreted as a pointer +inline decltype(auto) f64(int x) { return f64(double(x)); } +inline decltype(auto) f64(double* binder) { + return Internal::ConstMatcher( + nullptr, Internal::F64Lit(nullptr, Internal::Any(binder))); +} +inline decltype(auto) f64(Literal* binder) { + return Internal::ConstMatcher( + nullptr, Internal::F64Lit(binder, Internal::Any(nullptr))); +} +inline decltype(auto) f64(Const** binder) { + return Internal::ConstMatcher( + binder, Internal::F64Lit(nullptr, Internal::Any(nullptr))); +} + +inline decltype(auto) ival() { + return Internal::ConstMatcher( + nullptr, Internal::IntLit(nullptr, Internal::Any(nullptr))); +} +inline decltype(auto) ival(int64_t x) { + return Internal::ConstMatcher( + nullptr, Internal::IntLit(nullptr, Internal::Exact(nullptr, x))); +} +// Disambiguate literal 0, which could otherwise be interpreted as a pointer +inline decltype(auto) ival(int x) { return ival(int64_t(x)); } +inline decltype(auto) ival(int64_t* binder) { + return Internal::ConstMatcher( + nullptr, Internal::IntLit(nullptr, Internal::Any(binder))); +} +inline decltype(auto) ival(Literal* binder) { + return Internal::ConstMatcher( + nullptr, Internal::IntLit(binder, Internal::Any(nullptr))); +} +inline decltype(auto) ival(Const** binder) { + return Internal::ConstMatcher( + binder, Internal::IntLit(nullptr, Internal::Any(nullptr))); +} +inline decltype(auto) ival(Literal* binder, int64_t x) { + return Internal::ConstMatcher( + nullptr, Internal::IntLit(binder, Internal::Exact(nullptr, x))); +} +inline decltype(auto) ival(Const** binder, int64_t x) { + return Internal::ConstMatcher( + binder, Internal::IntLit(nullptr, Internal::Exact(nullptr, x))); +} + +inline decltype(auto) fval() { + return Internal::ConstMatcher( + nullptr, Internal::FloatLit(nullptr, Internal::Any(nullptr))); +} +inline decltype(auto) fval(double x) { + return Internal::ConstMatcher( + nullptr, Internal::FloatLit(nullptr, Internal::Exact(nullptr, x))); +} +// Disambiguate literal 0, which could otherwise be interpreted as a pointer +inline decltype(auto) fval(int x) { return fval(double(x)); } +inline decltype(auto) fval(double* binder) { + return Internal::ConstMatcher( + nullptr, Internal::FloatLit(nullptr, Internal::Any(binder))); +} +inline decltype(auto) fval(Literal* binder) { + return Internal::ConstMatcher( + nullptr, Internal::FloatLit(binder, Internal::Any(nullptr))); +} +inline decltype(auto) fval(Const** binder) { + return Internal::ConstMatcher( + binder, Internal::FloatLit(nullptr, Internal::Any(nullptr))); +} +inline decltype(auto) fval(Literal* binder, double x) { + return Internal::ConstMatcher( + nullptr, Internal::FloatLit(binder, Internal::Exact(nullptr, x))); +} +inline decltype(auto) fval(Const** binder, double x) { + return Internal::ConstMatcher( + binder, Internal::FloatLit(nullptr, Internal::Exact(nullptr, x))); +} + +inline decltype(auto) constant() { + return Internal::ConstMatcher(nullptr, Internal::Any(nullptr)); +} +inline decltype(auto) constant(int x) { + return Internal::ConstMatcher(nullptr, Internal::NumberLit(nullptr, x)); +} +inline decltype(auto) constant(Literal* binder) { + return Internal::ConstMatcher(nullptr, Internal::Any(binder)); +} +inline decltype(auto) constant(Const** binder) { + return Internal::ConstMatcher(binder, Internal::Any(nullptr)); +} +inline decltype(auto) constant(Literal* binder, int32_t x) { + return Internal::ConstMatcher(nullptr, Internal::NumberLit(binder, x)); +} +inline decltype(auto) constant(Const** binder, int32_t x) { + return Internal::ConstMatcher(binder, Internal::NumberLit(nullptr, x)); +} + +inline decltype(auto) any() { return Internal::Any(nullptr); } +inline decltype(auto) any(Expression** binder) { return Internal::Any(binder); } + +template inline decltype(auto) unary(S&& s) { + return Internal::UnaryMatcher(nullptr, Internal::Any(nullptr), s); +} +template inline decltype(auto) unary(Unary** binder, S&& s) { + return Internal::UnaryMatcher(binder, Internal::Any(nullptr), s); +} +template inline decltype(auto) unary(UnaryOp* binder, S&& s) { + return Internal::UnaryMatcher(nullptr, Internal::Any(binder), s); +} +template inline decltype(auto) unary(UnaryOp op, S&& s) { + return Internal::UnaryOpMatcher(nullptr, op, s); +} +template inline decltype(auto) unary(Abstract::Op op, S&& s) { + return Internal::AbstractUnaryOpMatcher(nullptr, op, s); +} +template +inline decltype(auto) unary(Unary** binder, UnaryOp op, S&& s) { + return Internal::UnaryOpMatcher(binder, op, s); +} +template +inline decltype(auto) unary(Unary** binder, Abstract::Op op, S&& s) { + return Internal::AbstractUnaryOpMatcher(binder, op, s); +} +template inline decltype(auto) binary(S1&& s1, S2&& s2) { + return Internal::BinaryMatcher( + nullptr, Internal::Any(nullptr), s1, s2); +} +template +inline decltype(auto) binary(Binary** binder, S1&& s1, S2&& s2) { + return Internal::BinaryMatcher( + binder, Internal::Any(nullptr), s1, s2); +} +template +inline decltype(auto) binary(BinaryOp* binder, S1&& s1, S2&& s2) { + return Internal::BinaryMatcher( + nullptr, Internal::Any(binder), s1, s2); +} +template +inline decltype(auto) binary(BinaryOp op, S1&& s1, S2&& s2) { + return Internal::BinaryOpMatcher(nullptr, op, s1, s2); +} +template +inline decltype(auto) binary(Abstract::Op op, S1&& s1, S2&& s2) { + return Internal::AbstractBinaryOpMatcher(nullptr, op, s1, s2); +} +template +inline decltype(auto) binary(Binary** binder, BinaryOp op, S1&& s1, S2&& s2) { + return Internal::BinaryOpMatcher(binder, op, s1, s2); +} +template +inline decltype(auto) +binary(Binary** binder, Abstract::Op op, S1&& s1, S2&& s2) { + return Internal::AbstractBinaryOpMatcher(binder, op, s1, s2); +} + +template +inline decltype(auto) select(S1&& s1, S2&& s2, S3&& s3) { + return Internal::SelectMatcher(nullptr, s1, s2, s3); +} +template +inline decltype(auto) select(Select** binder, S1&& s1, S2&& s2, S3&& s3) { + return Internal::SelectMatcher(binder, s1, s2, s3); +} + +} // namespace Match + +} // namespace wasm + +#endif // wasm_ir_match_h diff -Nru binaryen-91/src/ir/memory-utils.h binaryen-99/src/ir/memory-utils.h --- binaryen-91/src/ir/memory-utils.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/ir/memory-utils.h 2021-01-07 20:01:06.000000000 +0000 @@ -40,7 +40,7 @@ if (ensuredSegmentSize > 0) { assert(module); // must provide a module if ensuring a size. Builder builder(*module); - memory.segments.emplace_back(builder.makeConst(Literal(int32_t(0)))); + memory.segments.emplace_back(builder.makeConst(int32_t(0))); memory.segments[0].data.resize(ensuredSegmentSize); } return true; diff -Nru binaryen-91/src/ir/module-splitting.cpp binaryen-99/src/ir/module-splitting.cpp --- binaryen-91/src/ir/module-splitting.cpp 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/src/ir/module-splitting.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,595 @@ +/* + * Copyright 2020 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. + */ + +// The process of module splitting involves these steps: +// +// 1. Create the new secondary module. +// +// 2. Export globals, events, tables, and memories from the primary module and +// import them in the secondary module. +// +// 3. Move the deferred functions from the primary to the secondary module. +// +// 4. For any secondary function exported from the primary module, export in +// its place a trampoline function that makes an indirect call to its +// placeholder function (and eventually to the original secondary +// function), allocating a new table slot for the placeholder if necessary. +// +// 5. Rewrite direct calls from primary functions to secondary functions to be +// indirect calls to their placeholder functions (and eventually to their +// original secondary functions), allocating new table slots for the +// placeholders if necessary. +// +// 6. For each primary function directly called from a secondary function, +// export the primary function if it is not already exported and import it +// into the secondary module. +// +// 7. Replace all references to secondary functions in the primary module's +// table segments with references to imported placeholder functions. +// +// 8. Create new active table segments in the secondary module that will +// replace all the placeholder function references in the table with +// references to their corresponding secondary functions upon +// instantiation. +// +// Functions can be used or referenced three ways in a WebAssembly module: they +// can be exported, called, or placed in a table. The above procedure introduces +// a layer of indirection to each of those mechanisms that removes all +// references to secondary functions from the primary module but restores the +// original program's semantics once the secondary module is instantiated. As +// more mechanisms that reference functions are added in the future, such as +// ref.func instructions, they will have to be modified to use a similar layer +// of indirection. +// +// The code as currently written makes a few assumptions about the module that +// is being split: +// +// 1. It assumes that mutable-globals is allowed. This could be worked around +// by introducing wrapper functions for globals and rewriting secondary +// code that accesses them, but now that mutable-globals is shipped on all +// browsers, hopefully that extra complexity won't be necessary. +// +// 2. It assumes that either all table segment offsets are constants or there +// is exactly one segment that may have a non-constant offset. It also +// assumes that all segments are active segments (although Binaryen does +// not yet support passive table segments anyway). +// +// 3. It assumes that each function appears in the table at most once. This +// isn't necessarily true in general or even for LLVM output after function +// deduplication. Relaxing this assumption would just require slightly more +// complex code, so it is a good candidate for a follow up PR. + +#include "ir/module-splitting.h" +#include "ir/manipulation.h" +#include "ir/module-utils.h" +#include "ir/names.h" +#include "pass.h" +#include "wasm-builder.h" +#include "wasm.h" + +namespace std { + +// Used in ModuleSplitter::shareImportableItems +template<> struct hash> { + size_t operator()(const pair& p) const { + auto digest = wasm::hash(p.first); + wasm::rehash(digest, p.second); + return digest; + } +}; + +} // namespace std + +namespace wasm { + +namespace ModuleSplitting { + +namespace { + +template void forEachElement(Table& table, F f) { + for (auto& segment : table.segments) { + Name base = ""; + Index offset = 0; + if (auto* c = segment.offset->dynCast()) { + offset = c->value.geti32(); + } else if (auto* g = segment.offset->dynCast()) { + base = g->name; + } + for (size_t i = 0; i < segment.data.size(); ++i) { + f(base, offset + i, segment.data[i]); + } + } +} + +struct TableSlotManager { + struct Slot { + // If `global` is empty, then this slot is at a statically known index. + Name global; + Index index = 0; + + // Generate code to compute the index of this table slot + Expression* makeExpr(Module& module); + }; + Module& module; + Table& table; + Table::Segment* activeSegment = nullptr; + Slot activeBase; + std::map funcIndices; + + TableSlotManager(Module& module); + + // Returns the table index for `func`, allocating a new index if necessary. + Slot getSlot(Name func); + void addSlot(Name func, Slot slot); +}; + +Expression* TableSlotManager::Slot::makeExpr(Module& module) { + Builder builder(module); + auto makeIndex = [&]() { return builder.makeConst(int32_t(index)); }; + if (global.size()) { + Expression* getBase = builder.makeGlobalGet(global, Type::i32); + return index == 0 ? getBase + : builder.makeBinary(AddInt32, getBase, makeIndex()); + } else { + return makeIndex(); + } +} + +void TableSlotManager::addSlot(Name func, Slot slot) { + auto it = funcIndices.insert(std::make_pair(func, slot)); + assert(it.second && "Function already has multiple table slots"); +} + +TableSlotManager::TableSlotManager(Module& module) + : module(module), table(module.table) { + + // If there is exactly one table segment and that segment has a non-constant + // offset, append new items to the end of that segment. In all other cases, + // append new items at constant offsets after all existing items at constant + // offsets. + if (table.segments.size() == 1 && !table.segments[0].offset->is()) { + assert(table.segments[0].offset->is() && + "Unexpected initializer instruction"); + activeSegment = &table.segments[0]; + activeBase = {table.segments[0].offset->cast()->name, 0}; + } else { + // Finds the segment with the highest occupied table slot so that new items + // can be inserted contiguously at the end of it without accidentally + // overwriting any other items. TODO: be more clever about filling gaps in + // the table, if that is ever useful. + Index maxIndex = 0; + for (auto& segment : table.segments) { + assert(segment.offset->is() && + "Unexpected non-const segment offset with multiple segments"); + Index segmentBase = segment.offset->cast()->value.geti32(); + if (segmentBase + segment.data.size() >= maxIndex) { + maxIndex = segmentBase + segment.data.size(); + activeSegment = &segment; + activeBase = {"", segmentBase}; + } + } + } + // Initialize funcIndices with the functions already in the table. + forEachElement(table, [&](Name base, Index offset, Name func) { + addSlot(func, {base, offset}); + }); +} + +TableSlotManager::Slot TableSlotManager::getSlot(Name func) { + auto slotIt = funcIndices.find(func); + if (slotIt != funcIndices.end()) { + return slotIt->second; + } + + // If there are no segments yet, allocate one. + if (activeSegment == nullptr) { + table.exists = true; + assert(table.segments.size() == 0); + table.segments.emplace_back(Builder(module).makeConst(int32_t(0))); + activeSegment = &table.segments.back(); + } + + Slot newSlot = {activeBase.global, + activeBase.index + Index(activeSegment->data.size())}; + activeSegment->data.push_back(func); + addSlot(func, newSlot); + if (table.initial <= newSlot.index) { + table.initial = newSlot.index + 1; + } + if (table.max <= newSlot.index) { + table.max = newSlot.index + 1; + } + return newSlot; +} + +struct ModuleSplitter { + const Config& config; + std::unique_ptr secondaryPtr; + + Module& primary; + Module& secondary; + + const std::pair, std::set> classifiedFuncs; + const std::set& primaryFuncs; + const std::set& secondaryFuncs; + + TableSlotManager tableManager; + + // Map from internal function names to (one of) their corresponding export + // names. + std::map exportedPrimaryFuncs; + + // Initialization helpers + static std::unique_ptr initSecondary(const Module& primary); + static std::pair, std::set> + classifyFunctions(const Module& primary, const Config& config); + static std::map initExportedPrimaryFuncs(const Module& primary); + + // Other helpers + void exportImportFunction(Name func); + + // Main splitting steps + void moveSecondaryFunctions(); + void thunkExportedSecondaryFunctions(); + void indirectCallsToSecondaryFunctions(); + void exportImportCalledPrimaryFunctions(); + void setupTablePatching(); + void shareImportableItems(); + + ModuleSplitter(Module& primary, const Config& config) + : config(config), secondaryPtr(initSecondary(primary)), primary(primary), + secondary(*secondaryPtr), + classifiedFuncs(classifyFunctions(primary, config)), + primaryFuncs(classifiedFuncs.first), + secondaryFuncs(classifiedFuncs.second), tableManager(primary), + exportedPrimaryFuncs(initExportedPrimaryFuncs(primary)) { + moveSecondaryFunctions(); + thunkExportedSecondaryFunctions(); + indirectCallsToSecondaryFunctions(); + exportImportCalledPrimaryFunctions(); + setupTablePatching(); + shareImportableItems(); + } +}; + +std::unique_ptr ModuleSplitter::initSecondary(const Module& primary) { + // Create the secondary module and copy trivial properties. + auto secondary = std::make_unique(); + secondary->features = primary.features; + secondary->hasFeaturesSection = primary.hasFeaturesSection; + return secondary; +} + +std::pair, std::set> +ModuleSplitter::classifyFunctions(const Module& primary, const Config& config) { + std::set primaryFuncs, secondaryFuncs; + for (auto& func : primary.functions) { + if (func->imported() || config.primaryFuncs.count(func->name)) { + primaryFuncs.insert(func->name); + } else { + assert(func->name != primary.start && "The start function must be kept"); + secondaryFuncs.insert(func->name); + } + } + return std::make_pair(primaryFuncs, secondaryFuncs); +} + +std::map +ModuleSplitter::initExportedPrimaryFuncs(const Module& primary) { + std::map functionExportNames; + for (auto& ex : primary.exports) { + if (ex->kind == ExternalKind::Function) { + functionExportNames[ex->value] = ex->name; + } + } + return functionExportNames; +} + +void ModuleSplitter::exportImportFunction(Name funcName) { + Name exportName; + // If the function is already exported, use the existing export name. + // Otherwise, create a new export for it. + auto exportIt = exportedPrimaryFuncs.find(funcName); + if (exportIt != exportedPrimaryFuncs.end()) { + exportName = exportIt->second; + } else { + exportName = Names::getValidExportName( + primary, config.newExportPrefix + funcName.c_str()); + primary.addExport( + Builder::makeExport(exportName, funcName, ExternalKind::Function)); + exportedPrimaryFuncs[funcName] = exportName; + } + // Import the function if it is not already imported into the secondary + // module. + if (secondary.getFunctionOrNull(funcName) == nullptr) { + auto func = + Builder::makeFunction(funcName, primary.getFunction(funcName)->sig, {}); + func->module = config.importNamespace; + func->base = exportName; + secondary.addFunction(std::move(func)); + } +} + +void ModuleSplitter::moveSecondaryFunctions() { + // Move the specified functions from the primary to the secondary module. + for (auto funcName : secondaryFuncs) { + auto* func = primary.getFunction(funcName); + ModuleUtils::copyFunction(func, secondary); + primary.removeFunction(funcName); + } +} + +void ModuleSplitter::thunkExportedSecondaryFunctions() { + // Update exports of secondary functions in the primary module to export + // wrapper functions that indirectly call the secondary functions. We are + // adding secondary function names to the primary table here, but they will be + // replaced with placeholder functions later along with any references to + // secondary functions that were already in the table. + Builder builder(primary); + for (auto& ex : primary.exports) { + if (ex->kind != ExternalKind::Function || + !secondaryFuncs.count(ex->value)) { + continue; + } + Name secondaryFunc = ex->value; + if (primary.getFunctionOrNull(secondaryFunc)) { + // We've already created a thunk for this function + continue; + } + auto tableSlot = tableManager.getSlot(secondaryFunc); + auto func = std::make_unique(); + + func->name = secondaryFunc; + func->sig = secondary.getFunction(secondaryFunc)->sig; + std::vector args; + for (size_t i = 0, size = func->sig.params.size(); i < size; ++i) { + args.push_back(builder.makeLocalGet(i, func->sig.params[i])); + } + func->body = + builder.makeCallIndirect(tableSlot.makeExpr(primary), args, func->sig); + primary.addFunction(std::move(func)); + } +} + +void ModuleSplitter::indirectCallsToSecondaryFunctions() { + // Update direct calls of secondary functions to be indirect calls of their + // corresponding table indices instead. + struct CallIndirector : public WalkerPass> { + ModuleSplitter& parent; + Builder builder; + CallIndirector(ModuleSplitter& parent) + : parent(parent), builder(parent.primary) {} + void visitCall(Call* curr) { + if (!parent.secondaryFuncs.count(curr->target)) { + return; + } + replaceCurrent(builder.makeCallIndirect( + parent.tableManager.getSlot(curr->target).makeExpr(parent.primary), + curr->operands, + parent.secondary.getFunction(curr->target)->sig, + curr->isReturn)); + } + void visitRefFunc(RefFunc* curr) { + assert(false && "TODO: handle ref.func as well"); + } + }; + PassRunner runner(&primary); + CallIndirector(*this).run(&runner, &primary); +} + +void ModuleSplitter::exportImportCalledPrimaryFunctions() { + // Find primary functions called in the secondary module. + ModuleUtils::ParallelFunctionAnalysis> callCollector( + secondary, [&](Function* func, std::vector& calledPrimaryFuncs) { + struct CallCollector : PostWalker { + const std::set& primaryFuncs; + std::vector& calledPrimaryFuncs; + CallCollector(const std::set& primaryFuncs, + std::vector& calledPrimaryFuncs) + : primaryFuncs(primaryFuncs), calledPrimaryFuncs(calledPrimaryFuncs) { + } + void visitCall(Call* curr) { + if (primaryFuncs.count(curr->target)) { + calledPrimaryFuncs.push_back(curr->target); + } + } + void visitRefFunc(RefFunc* curr) { + assert(false && "TODO: handle ref.func as well"); + } + }; + CallCollector(primaryFuncs, calledPrimaryFuncs).walkFunction(func); + }); + std::set calledPrimaryFuncs; + for (auto& entry : callCollector.map) { + auto& calledFuncs = entry.second; + calledPrimaryFuncs.insert(calledFuncs.begin(), calledFuncs.end()); + } + + // Ensure each called primary function is exported and imported + for (auto func : calledPrimaryFuncs) { + exportImportFunction(func); + } +} + +void ModuleSplitter::setupTablePatching() { + std::map replacedElems; + // Replace table references to secondary functions with an imported + // placeholder that encodes the table index in its name: + // `importNamespace`.`index`. + forEachElement(primary.table, [&](Name, Index index, Name& elem) { + if (secondaryFuncs.count(elem)) { + replacedElems[index] = elem; + auto* secondaryFunc = secondary.getFunction(elem); + auto placeholder = std::make_unique(); + placeholder->module = config.placeholderNamespace; + placeholder->base = std::to_string(index); + placeholder->name = Names::getValidFunctionName( + primary, + std::string("placeholder_") + std::string(placeholder->base.c_str())); + placeholder->hasExplicitName = false; + placeholder->sig = secondaryFunc->sig; + elem = placeholder->name; + primary.addFunction(std::move(placeholder)); + } + }); + + if (replacedElems.size() == 0) { + // No placeholders to patch out of the table + return; + } + + if (tableManager.activeBase.global.size()) { + assert(primary.table.segments.size() == 1 && + "Unexpected number of segments with non-const base"); + assert(secondary.table.segments.size() == 0); + // Since addition is not currently allowed in initializer expressions, we + // need to start the new secondary segment where the primary segment starts. + // The secondary segment will contain the same primary functions as the + // primary module except in positions where it needs to overwrite a + // placeholder function. All primary functions in the table therefore need + // to be imported into the second module. TODO: use better strategies here, + // such as using ref.func in the start function or standardizing addition in + // initializer expressions. + const Table::Segment& primarySeg = primary.table.segments.front(); + std::vector secondaryElems; + secondaryElems.reserve(primarySeg.data.size()); + + // Copy functions from the primary segment to the secondary segment, + // replacing placeholders and creating new exports and imports as necessary. + auto replacement = replacedElems.begin(); + for (Index i = 0; + i < primarySeg.data.size() && replacement != replacedElems.end(); + ++i) { + if (replacement->first == i) { + // primarySeg.data[i] is a placeholder, so use the secondary function. + secondaryElems.push_back(replacement->second); + ++replacement; + } else { + exportImportFunction(primarySeg.data[i]); + secondaryElems.push_back(primarySeg.data[i]); + } + } + + auto offset = ExpressionManipulator::copy(primarySeg.offset, secondary); + secondary.table.segments.emplace_back(offset, secondaryElems); + return; + } + + // Create active table segments in the secondary module to patch in the + // original functions when it is instantiated. + Index currBase = replacedElems.begin()->first; + std::vector currData; + auto finishSegment = [&]() { + auto* offset = Builder(secondary).makeConst(int32_t(currBase)); + secondary.table.segments.emplace_back(offset, currData); + }; + for (auto curr = replacedElems.begin(); curr != replacedElems.end(); ++curr) { + if (curr->first != currBase + currData.size()) { + finishSegment(); + currBase = curr->first; + currData.clear(); + } + currData.push_back(curr->second); + } + if (currData.size()) { + finishSegment(); + } +} + +void ModuleSplitter::shareImportableItems() { + // Map internal names to (one of) their corresponding export names. Don't + // consider functions because they have already been imported and exported as + // necessary. + std::unordered_map, Name> exports; + for (auto& ex : primary.exports) { + if (ex->kind != ExternalKind::Function) { + exports[std::make_pair(ex->kind, ex->value)] = ex->name; + } + } + + auto makeImportExport = [&](Importable& primaryItem, + Importable& secondaryItem, + const std::string& genericExportName, + ExternalKind kind) { + secondaryItem.name = primaryItem.name; + secondaryItem.hasExplicitName = primaryItem.hasExplicitName; + secondaryItem.module = config.importNamespace; + auto exportIt = exports.find(std::make_pair(kind, primaryItem.name)); + if (exportIt != exports.end()) { + secondaryItem.base = exportIt->second; + } else { + Name exportName = Names::getValidExportName( + primary, config.newExportPrefix + genericExportName); + primary.addExport(new Export{exportName, primaryItem.name, kind}); + secondaryItem.base = exportName; + } + }; + + // TODO: Be more selective by only sharing global items that are actually used + // in the secondary module, just like we do for functions. + + if (primary.memory.exists) { + secondary.memory.exists = true; + secondary.memory.initial = primary.memory.initial; + secondary.memory.max = primary.memory.max; + secondary.memory.shared = primary.memory.shared; + secondary.memory.indexType = primary.memory.indexType; + makeImportExport( + primary.memory, secondary.memory, "memory", ExternalKind::Memory); + } + + if (primary.table.exists) { + secondary.table.exists = true; + secondary.table.initial = primary.table.initial; + secondary.table.max = primary.table.max; + makeImportExport( + primary.table, secondary.table, "table", ExternalKind::Table); + } + + for (auto& global : primary.globals) { + if (global->mutable_) { + assert(primary.features.hasMutableGlobals() && + "TODO: add wrapper functions for disallowed mutable globals"); + } + auto secondaryGlobal = std::make_unique(); + secondaryGlobal->type = global->type; + secondaryGlobal->mutable_ = global->mutable_; + secondaryGlobal->init = + global->init == nullptr + ? nullptr + : ExpressionManipulator::copy(global->init, secondary); + makeImportExport(*global, *secondaryGlobal, "global", ExternalKind::Global); + secondary.addGlobal(std::move(secondaryGlobal)); + } + + for (auto& event : primary.events) { + auto secondaryEvent = std::make_unique(); + secondaryEvent->attribute = event->attribute; + secondaryEvent->sig = event->sig; + makeImportExport(*event, *secondaryEvent, "event", ExternalKind::Event); + secondary.addEvent(std::move(secondaryEvent)); + } +} + +} // anonymous namespace + +std::unique_ptr splitFunctions(Module& primary, const Config& config) { + return std::move(ModuleSplitter(primary, config).secondaryPtr); +} + +} // namespace ModuleSplitting + +} // namespace wasm diff -Nru binaryen-91/src/ir/module-splitting.h binaryen-99/src/ir/module-splitting.h --- binaryen-91/src/ir/module-splitting.h 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/src/ir/module-splitting.h 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,76 @@ +/* + * Copyright 2020 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. + */ + +// module-splitting.h: Provides an interface for decomposing WebAssembly modules +// into multiple modules that can be loaded independently. This works by moving +// functions to a new secondary module and rewriting the primary module to call +// them indirectly. Until the secondary module is instantiated, those indirect +// calls will go to placeholder functions newly imported into the primary +// module. If the primary module has a single segment with a non-constant +// offset, the placeholder function import names are the offsets from that base +// global of the corresponding functions in the table. Otherwise, the +// placeholder import names are the absolute table indices of the corresponding +// functions. The secondary module imports all of its dependencies from the +// primary module. +// +// This code currently makes a few assumptions about the modules that will be +// split and will fail assertions if those assumptions are not true. +// +// 1) It assumes that mutable-globals are allowed. +// +// 2) It assumes that either all segment offsets are constants or there is +// exactly one segment that may have a non-constant offset. +// +// 3) It assumes that each function appears in the table at most once. +// +// These requirements will be relaxed as necessary in the future, but for now +// this code should be considered experimental and used with care. + +#ifndef wasm_ir_module_splitting_h +#define wasm_ir_module_splitting_h + +#include "wasm.h" + +namespace wasm { + +namespace ModuleSplitting { + +struct Config { + // The set of functions to keep in the primary module. All others are split + // out into the new secondary module. Must include the start function if it + // exists. May or may not include imported functions, which are always kept in + // the primary module regardless. + std::set primaryFuncs; + // The namespace from which to import primary functions into the secondary + // module. + Name importNamespace = "primary"; + // The namespace from which to import placeholder functions into the primary + // module. + Name placeholderNamespace = "placeholder"; + // The prefix to attach to the name of any newly created exports. This can be + // used to differentiate between "real" exports of the module and exports that + // should only be consumed by the secondary module. + std::string newExportPrefix = ""; +}; + +// Returns the new secondary module and modifies the `primary` module in place. +std::unique_ptr splitFunctions(Module& primary, const Config& config); + +} // namespace ModuleSplitting + +} // namespace wasm + +#endif // wasm_ir_module_splitting_h diff -Nru binaryen-91/src/ir/module-utils.h binaryen-99/src/ir/module-utils.h --- binaryen-91/src/ir/module-utils.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/ir/module-utils.h 2021-01-07 20:01:06.000000000 +0000 @@ -19,6 +19,7 @@ #include "ir/find_all.h" #include "ir/manipulation.h" +#include "ir/properties.h" #include "pass.h" #include "support/unique_deferring_queue.h" #include "wasm.h" @@ -27,39 +28,6 @@ namespace ModuleUtils { -// Computes the indexes in a wasm binary, i.e., with function imports -// and function implementations sharing a single index space, etc., -// and with the imports first (the Module's functions and globals -// arrays are not assumed to be in a particular order, so we can't -// just use them directly). -struct BinaryIndexes { - std::unordered_map functionIndexes; - std::unordered_map globalIndexes; - std::unordered_map eventIndexes; - - BinaryIndexes(Module& wasm) { - auto addIndexes = [&](auto& source, auto& indexes) { - auto addIndex = [&](auto* curr) { - auto index = indexes.size(); - indexes[curr->name] = index; - }; - for (auto& curr : source) { - if (curr->imported()) { - addIndex(curr.get()); - } - } - for (auto& curr : source) { - if (!curr->imported()) { - addIndex(curr.get()); - } - } - }; - addIndexes(wasm.functions, functionIndexes); - addIndexes(wasm.globals, globalIndexes); - addIndexes(wasm.events, eventIndexes); - } -}; - inline Function* copyFunction(Function* func, Module& out) { auto* ret = new Function(); ret->name = func->name; @@ -131,17 +99,8 @@ } inline void clearModule(Module& wasm) { - wasm.exports.clear(); - wasm.functions.clear(); - wasm.globals.clear(); - wasm.events.clear(); - wasm.table.clear(); - wasm.memory.clear(); - wasm.start = Name(); - wasm.userSections.clear(); - wasm.debugInfoFileNames.clear(); - wasm.updateMaps(); - wasm.allocator.clear(); + wasm.~Module(); + new (&wasm) Module; } // Renaming @@ -154,7 +113,7 @@ // Update the function itself. for (auto& pair : map) { if (Function* F = wasm.getFunctionOrNull(pair.first)) { - assert(!wasm.getFunctionOrNull(pair.second)); + assert(!wasm.getFunctionOrNull(pair.second) || F->name == pair.second); F->name = pair.second; } } @@ -270,6 +229,14 @@ } } +template inline void iterImports(Module& wasm, T visitor) { + iterImportedMemories(wasm, visitor); + iterImportedTables(wasm, visitor); + iterImportedGlobals(wasm, visitor); + iterImportedFunctions(wasm, visitor); + iterImportedEvents(wasm, visitor); +} + // Helper class for performing an operation on all the functions in the module, // in parallel, with an Info object for each one that can contain results of // some computation that the operation performs. @@ -341,7 +308,9 @@ struct FunctionInfo { std::set callsTo; std::set calledBy; - bool hasIndirectCall = false; + // A non-direct call is any call that is not direct. That includes + // CallIndirect and CallRef. + bool hasNonDirectCall = false; }; typedef std::map Map; @@ -362,10 +331,10 @@ void visitCall(Call* curr) { info.callsTo.insert(module->getFunction(curr->target)); } - void visitCallIndirect(CallIndirect* curr) { - info.hasIndirectCall = true; + info.hasNonDirectCall = true; } + void visitCallRef(CallRef* curr) { info.hasNonDirectCall = true; } private: Module* module; @@ -387,20 +356,25 @@ } } - enum IndirectCalls { IgnoreIndirectCalls, IndirectCallsHaveProperty }; + enum NonDirectCalls { IgnoreNonDirectCalls, NonDirectCallsHaveProperty }; // Propagate a property from a function to those that call it. + // + // hasProperty() - Check if the property is present. + // canHaveProperty() - Check if the property could be present. + // addProperty() - Adds the property. This receives a second parameter which + // is the function due to which we are adding the property. void propagateBack(std::function hasProperty, std::function canHaveProperty, - std::function addProperty, - IndirectCalls indirectCalls) { + std::function addProperty, + NonDirectCalls nonDirectCalls) { // The work queue contains items we just learned can change the state. UniqueDeferredQueue work; for (auto& func : wasm.functions) { if (hasProperty(map[func.get()]) || - (indirectCalls == IndirectCallsHaveProperty && - map[func.get()].hasIndirectCall)) { - addProperty(map[func.get()]); + (nonDirectCalls == NonDirectCallsHaveProperty && + map[func.get()].hasNonDirectCall)) { + addProperty(map[func.get()], func.get()); work.push(func.get()); } } @@ -410,7 +384,7 @@ // If we don't already have the property, and we are not forbidden // from getting it, then it propagates back to us now. if (!hasProperty(map[caller]) && canHaveProperty(map[caller])) { - addProperty(map[caller]); + addProperty(map[caller], func); work.push(caller); } } @@ -418,29 +392,62 @@ } }; -// Helper function for collecting the type signature used in a module +// Helper function for collecting all the types that are declared in a module, +// which means the HeapTypes (that are non-basic, that is, not eqref etc., which +// do not need to be defined). // -// Used when emitting or printing a module to give signatures canonical -// indices. Signatures are sorted in order of decreasing frequency to minize the +// Used when emitting or printing a module to give HeapTypes canonical +// indices. HeapTypes are sorted in order of decreasing frequency to minize the // size of their collective encoding. Both a vector mapping indices to -// signatures and a map mapping signatures to indices are produced. -inline void -collectSignatures(Module& wasm, - std::vector& signatures, - std::unordered_map& sigIndices) { - using Counts = std::unordered_map; +// HeapTypes and a map mapping HeapTypes to indices are produced. +inline void collectHeapTypes(Module& wasm, + std::vector& types, + std::unordered_map& typeIndices) { + struct Counts : public std::unordered_map { + bool isRelevant(Type type) { + if (type.isRef()) { + return !type.getHeapType().isBasic(); + } + return type.isRtt(); + } + void note(HeapType type) { (*this)[type]++; } + void maybeNote(Type type) { + if (isRelevant(type)) { + note(type.getHeapType()); + } + } + }; - // Collect the signature use counts for a single function + // Collect the type use counts for a single function auto updateCounts = [&](Function* func, Counts& counts) { if (func->imported()) { return; } - struct TypeCounter : PostWalker { + struct TypeCounter + : PostWalker> { Counts& counts; TypeCounter(Counts& counts) : counts(counts) {} - void visitCallIndirect(CallIndirect* curr) { counts[curr->sig]++; } + void visitExpression(Expression* curr) { + if (auto* call = curr->dynCast()) { + counts.note(call->sig); + } else if (curr->is()) { + counts.maybeNote(curr->type); + } else if (curr->is() || curr->is()) { + counts.note(curr->type.getRtt().heapType); + } else if (auto* get = curr->dynCast()) { + counts.maybeNote(get->ref->type); + } else if (auto* set = curr->dynCast()) { + counts.maybeNote(set->ref->type); + } else if (Properties::isControlFlowStructure(curr)) { + counts.maybeNote(curr->type); + if (curr->type.isTuple()) { + // TODO: Allow control flow to have input types as well + counts.note(Signature(Type::none, curr->type)); + } + } + } }; TypeCounter(counts).walk(func->body); }; @@ -450,10 +457,21 @@ // Collect all the counts. Counts counts; for (auto& curr : wasm.functions) { - counts[curr->sig]++; + counts.note(curr->sig); + for (auto type : curr->vars) { + counts.maybeNote(type); + if (type.isTuple()) { + for (auto t : type) { + counts.maybeNote(t); + } + } + } } for (auto& curr : wasm.events) { - counts[curr->sig]++; + counts.note(curr->sig); + } + for (auto& curr : wasm.globals) { + counts.maybeNote(curr->type); } for (auto& pair : analysis.map) { Counts& functionCounts = pair.second; @@ -461,18 +479,105 @@ counts[innerPair.first] += innerPair.second; } } - std::vector> sorted(counts.begin(), - counts.end()); + // A generic utility to traverse the child types of a type. + // TODO: work with tlively to refactor this to a shared place + auto walkRelevantChildren = [&](HeapType type, + std::function callback) { + auto callIfRelevant = [&](Type type) { + if (counts.isRelevant(type)) { + callback(type.getHeapType()); + } + }; + if (type.isSignature()) { + auto sig = type.getSignature(); + for (Type type : {sig.params, sig.results}) { + for (auto element : type) { + callIfRelevant(element); + } + } + } else if (type.isArray()) { + callIfRelevant(type.getArray().element.type); + } else if (type.isStruct()) { + auto fields = type.getStruct().fields; + for (auto field : fields) { + callIfRelevant(field.type); + } + } + }; + // Recursively traverse each reference type, which may have a child type that + // is itself a reference type. This reflects an appearance in the binary + // format that is in the type section itself. + // As we do this we may find more and more types, as nested children of + // previous ones. Each such type will appear in the type section once, so + // we just need to visit it once. + // TODO: handle struct and array fields + std::unordered_set newTypes; + for (auto& pair : counts) { + newTypes.insert(pair.first); + } + while (!newTypes.empty()) { + auto iter = newTypes.begin(); + auto type = *iter; + newTypes.erase(iter); + walkRelevantChildren(type, [&](HeapType type) { + if (!counts.count(type)) { + newTypes.insert(type); + } + counts.note(type); + }); + } + + // We must sort all the dependencies of a type before it. For example, + // (func (param (ref (func)))) must appear after (func). To do that, find the + // depth of dependencies of each type. For example, if A depends on B + // which depends on C, then A's depth is 2, B's is 1, and C's is 0 (assuming + // no other dependencies). + Counts depthOfDependencies; + std::unordered_map> isDependencyOf; + // To calculate the depth of dependencies, we'll do a flow analysis, visiting + // each type as we find out new things about it. + std::set toVisit; + for (auto& pair : counts) { + auto type = pair.first; + depthOfDependencies[type] = 0; + toVisit.insert(type); + walkRelevantChildren(type, [&](HeapType childType) { + isDependencyOf[childType].insert(type); // XXX flip? + }); + } + while (!toVisit.empty()) { + auto iter = toVisit.begin(); + auto type = *iter; + toVisit.erase(iter); + // Anything that depends on this has a depth of dependencies equal to this + // type's, plus this type itself. + auto newDepth = depthOfDependencies[type] + 1; + if (newDepth > counts.size()) { + Fatal() << "Cyclic types detected, cannot sort them."; + } + for (auto& other : isDependencyOf[type]) { + if (depthOfDependencies[other] < newDepth) { + // We found something new to propagate. + depthOfDependencies[other] = newDepth; + toVisit.insert(other); + } + } + } + // Sort by frequency and then simplicity, and also keeping every type + // before things that depend on it. + std::vector> sorted(counts.begin(), counts.end()); std::sort(sorted.begin(), sorted.end(), [&](auto a, auto b) { - // order by frequency then simplicity + if (depthOfDependencies[a.first] != depthOfDependencies[b.first]) { + return depthOfDependencies[a.first] < depthOfDependencies[b.first]; + } if (a.second != b.second) { return a.second > b.second; } return a.first < b.first; }); for (Index i = 0; i < sorted.size(); ++i) { - sigIndices[sorted[i].first] = i; - signatures.push_back(sorted[i].first); + typeIndices[sorted[i].first] = i; + types.push_back(sorted[i].first); } } diff -Nru binaryen-91/src/ir/names.h binaryen-99/src/ir/names.h --- binaryen-91/src/ir/names.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/ir/names.h 2021-01-07 20:01:06.000000000 +0000 @@ -46,6 +46,41 @@ } } +// Given a root of a name, finds a valid name with perhaps a number appended +// to it, by calling a function to check if a name is valid. +inline Name +getValidName(Module& module, Name root, std::function check) { + if (check(root)) { + return root; + } + auto prefixed = std::string(root.str) + '_'; + Index num = 0; + while (1) { + auto name = prefixed + std::to_string(num); + if (check(name)) { + return name; + } + num++; + } +} + +inline Name getValidExportName(Module& module, Name root) { + return getValidName( + module, root, [&](Name test) { return !module.getExportOrNull(test); }); +} +inline Name getValidGlobalName(Module& module, Name root) { + return getValidName( + module, root, [&](Name test) { return !module.getGlobalOrNull(test); }); +} +inline Name getValidFunctionName(Module& module, Name root) { + return getValidName( + module, root, [&](Name test) { return !module.getFunctionOrNull(test); }); +} +inline Name getValidEventName(Module& module, Name root) { + return getValidName( + module, root, [&](Name test) { return !module.getEventOrNull(test); }); +} + } // namespace Names } // namespace wasm diff -Nru binaryen-91/src/ir/properties.h binaryen-99/src/ir/properties.h --- binaryen-91/src/ir/properties.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/ir/properties.h 2021-01-07 20:01:06.000000000 +0000 @@ -19,7 +19,7 @@ #include "ir/bits.h" #include "ir/effects.h" -#include "ir/iteration.h" +#include "ir/match.h" #include "wasm.h" namespace wasm { @@ -52,6 +52,11 @@ case XorInt64: case EqInt64: case NeInt64: + + case EqFloat32: + case NeFloat32: + case EqFloat64: + case NeFloat64: return true; default: @@ -59,6 +64,11 @@ } } +inline bool isControlFlowStructure(Expression* curr) { + return curr->is() || curr->is() || curr->is() || + curr->is(); +} + // Check if an expression is a control flow construct with a name, // which implies it may have breaks to it. inline bool isNamedControlFlow(Expression* curr) { @@ -70,95 +80,143 @@ return false; } +// A constant expression is something like a Const: it has a fixed value known +// at compile time, and passes that propagate constants can try to propagate it. +// Constant expressions are also allowed in global initializers in wasm. +// TODO: look into adding more things here like RttCanon. +inline bool isSingleConstantExpression(const Expression* curr) { + return curr->is() || curr->is() || curr->is() || + (curr->is() && curr->cast()->value->is()); +} + inline bool isConstantExpression(const Expression* curr) { - return curr->is() || curr->is() || curr->is(); + if (isSingleConstantExpression(curr)) { + return true; + } + if (auto* tuple = curr->dynCast()) { + for (auto* op : tuple->operands) { + if (!isSingleConstantExpression(op)) { + return false; + } + } + return true; + } + return false; +} + +inline Literal getLiteral(const Expression* curr) { + if (auto* c = curr->dynCast()) { + return c->value; + } else if (auto* n = curr->dynCast()) { + return Literal(n->type); + } else if (auto* r = curr->dynCast()) { + return Literal(r->func, r->type); + } else if (auto* i = curr->dynCast()) { + if (auto* c = i->value->dynCast()) { + return Literal::makeI31(c->value.geti32()); + } + } + WASM_UNREACHABLE("non-constant expression"); +} + +inline Literals getLiterals(const Expression* curr) { + if (isSingleConstantExpression(curr)) { + return {getLiteral(curr)}; + } else if (auto* tuple = curr->dynCast()) { + Literals literals; + for (auto* op : tuple->operands) { + literals.push_back(getLiteral(op)); + } + return literals; + } else { + WASM_UNREACHABLE("non-constant expression"); + } } // Check if an expression is a sign-extend, and if so, returns the value // that is extended, otherwise nullptr inline Expression* getSignExtValue(Expression* curr) { - if (auto* outer = curr->dynCast()) { - if (outer->op == ShrSInt32) { - if (auto* outerConst = outer->right->dynCast()) { - if (outerConst->value.geti32() != 0) { - if (auto* inner = outer->left->dynCast()) { - if (inner->op == ShlInt32) { - if (auto* innerConst = inner->right->dynCast()) { - if (outerConst->value == innerConst->value) { - return inner->left; - } - } - } - } - } - } - } + // We only care about i32s here, and ignore i64s, unreachables, etc. + if (curr->type != Type::i32) { + return nullptr; + } + using namespace Match; + int32_t leftShift = 0, rightShift = 0; + Expression* extended = nullptr; + if (matches(curr, + binary(ShrSInt32, + binary(ShlInt32, any(&extended), i32(&leftShift)), + i32(&rightShift))) && + leftShift == rightShift && leftShift != 0) { + return extended; } return nullptr; } // gets the size of the sign-extended value inline Index getSignExtBits(Expression* curr) { - return 32 - Bits::getEffectiveShifts(curr->cast()->right); + assert(curr->type == Type::i32); + auto* rightShift = curr->cast()->right; + return 32 - Bits::getEffectiveShifts(rightShift); } // Check if an expression is almost a sign-extend: perhaps the inner shift // is too large. We can split the shifts in that case, which is sometimes // useful (e.g. if we can remove the signext) inline Expression* getAlmostSignExt(Expression* curr) { - if (auto* outer = curr->dynCast()) { - if (outer->op == ShrSInt32) { - if (auto* outerConst = outer->right->dynCast()) { - if (outerConst->value.geti32() != 0) { - if (auto* inner = outer->left->dynCast()) { - if (inner->op == ShlInt32) { - if (auto* innerConst = inner->right->dynCast()) { - if (Bits::getEffectiveShifts(outerConst) <= - Bits::getEffectiveShifts(innerConst)) { - return inner->left; - } - } - } - } - } - } - } + using namespace Match; + int32_t leftShift = 0, rightShift = 0; + Expression* extended = nullptr; + if (matches(curr, + binary(ShrSInt32, + binary(ShlInt32, any(&extended), i32(&leftShift)), + i32(&rightShift))) && + Bits::getEffectiveShifts(rightShift, Type::i32) <= + Bits::getEffectiveShifts(leftShift, Type::i32) && + rightShift != 0) { + return extended; } return nullptr; } // gets the size of the almost sign-extended value, as well as the // extra shifts, if any -inline Index getAlmostSignExtBits(Expression* curr, Index& extraShifts) { - extraShifts = Bits::getEffectiveShifts( - curr->cast()->left->cast()->right) - - Bits::getEffectiveShifts(curr->cast()->right); +inline Index getAlmostSignExtBits(Expression* curr, Index& extraLeftShifts) { + auto* leftShift = curr->cast()->left->cast()->right; + auto* rightShift = curr->cast()->right; + extraLeftShifts = + Bits::getEffectiveShifts(leftShift) - Bits::getEffectiveShifts(rightShift); return getSignExtBits(curr); } // Check if an expression is a zero-extend, and if so, returns the value // that is extended, otherwise nullptr inline Expression* getZeroExtValue(Expression* curr) { - if (auto* binary = curr->dynCast()) { - if (binary->op == AndInt32) { - if (auto* c = binary->right->dynCast()) { - if (Bits::getMaskedBits(c->value.geti32())) { - return binary->right; - } - } - } + // We only care about i32s here, and ignore i64s, unreachables, etc. + if (curr->type != Type::i32) { + return nullptr; + } + using namespace Match; + int32_t mask = 0; + Expression* extended = nullptr; + if (matches(curr, binary(AndInt32, any(&extended), i32(&mask))) && + Bits::getMaskedBits(mask) != 0) { + return extended; } return nullptr; } // gets the size of the sign-extended value inline Index getZeroExtBits(Expression* curr) { - return Bits::getMaskedBits( - curr->cast()->right->cast()->value.geti32()); + assert(curr->type == Type::i32); + int32_t mask = curr->cast()->right->cast()->value.geti32(); + return Bits::getMaskedBits(mask); } // Returns a falling-through value, that is, it looks through a local.tee -// and other operations that receive a value and let it flow through them. +// and other operations that receive a value and let it flow through them. If +// there is no value falling through, returns the node itself (as that is the +// value that trivially falls through, with 0 steps in the middle). inline Expression* getFallthrough(Expression* curr, const PassOptions& passOptions, FeatureSet features) { @@ -199,6 +257,25 @@ return curr; } +// Returns whether the resulting value here must fall through without being +// modified. For example, a tee always does so. That is, this returns false if +// and only if the return value may have some computation performed on it to +// change it from the inputs the instruction receives. +// This differs from getFallthrough() which returns a single value that falls +// through - here if more than one value can fall through, like in if-else, +// we can return true. That is, there we care about a value falling through and +// for us to get that actual value to look at; here we just care whether the +// value falls through without being changed, even if it might be one of +// several options. +inline bool isResultFallthrough(Expression* curr) { + // Note that we don't check if there is a return value here; the node may be + // unreachable, for example, but then there is no meaningful answer to give + // anyhow. + return curr->is() || curr->is() || curr->is() || + curr->is() || curr->is() || curr->is()) { + return optimizeSelect(select); + } + + if (auto* binary = curr->dynCast()) { if (auto* ext = Properties::getAlmostSignExt(binary)) { - Index extraShifts; - auto bits = Properties::getAlmostSignExtBits(binary, extraShifts); - if (extraShifts == 0) { + Index extraLeftShifts; + auto bits = Properties::getAlmostSignExtBits(binary, extraLeftShifts); + if (extraLeftShifts == 0) { if (auto* load = Properties::getFallthrough(ext, getPassOptions(), features) ->dynCast()) { @@ -369,61 +488,66 @@ } } } - // if the sign-extend input cannot have a sign bit, we don't need it - // we also don't need it if it already has an identical-sized sign - // extend - if (getMaxBits(ext, this) + extraShifts < bits || - isSignExted(ext, bits)) { + // We can in some cases remove part of a sign extend, that is, + // (x << A) >> B => x << (A - B) + // If the sign-extend input cannot have a sign bit, we don't need it. + if (Bits::getMaxBits(ext, this) + extraLeftShifts < bits) { + return removeAlmostSignExt(binary); + } + // We also don't need it if it already has an identical-sized sign + // extend applied to it. That is, if it is already a sign-extended + // value, then another sign extend will do nothing. We do need to be + // careful of the extra shifts, though. + if (isSignExted(ext, bits) && extraLeftShifts == 0) { return removeAlmostSignExt(binary); } } else if (binary->op == EqInt32 || binary->op == NeInt32) { if (auto* c = binary->right->dynCast()) { - if (binary->op == EqInt32 && c->value.geti32() == 0) { - // equal 0 => eqz - return Builder(*getModule()).makeUnary(EqZInt32, binary->left); - } if (auto* ext = Properties::getSignExtValue(binary->left)) { - // we are comparing a sign extend to a constant, which means we can - // use a cheaper zext + // We are comparing a sign extend to a constant, which means we can + // use a cheaper zero-extend in some cases. That is, + // (x << S) >> S ==/!= C => x & T ==/!= C + // where S and T are the matching values for sign/zero extend of the + // same size. For example, for an effective 8-bit value: + // (x << 24) >> 24 ==/!= C => x & 255 ==/!= C + // + // The key thing to track here are the upper bits plus the sign bit; + // call those the "relevant bits". This is crucial because x is + // sign-extended, that is, its effective sign bit is spread to all + // the upper bits, which means that the relevant bits on the left + // side are either all 0, or all 1. auto bits = Properties::getSignExtBits(binary->left); - binary->left = makeZeroExt(ext, bits); - // when we replace the sign-ext of the non-constant with a zero-ext, - // we are forcing the high bits to be all zero, instead of all zero - // or all one depending on the sign bit. so we may be changing the - // high bits from all one to all zero: - // * if the constant value's higher bits are mixed, then it can't - // be equal anyhow - // * if they are all zero, we may get a false true if the - // non-constant's upper bits were one. this can only happen if - // the non-constant's sign bit is set, so this false true is a - // risk only if the constant's sign bit is set (otherwise, - // false). But a constant with a sign bit but with upper bits - // zero is impossible to be equal to a sign-extended value - // anyhow, so the entire thing is false. - // * if they were all one, we may get a false false, if the only - // difference is in those upper bits. that means we are equal on - // the other bits, including the sign bit. so we can just mask - // off the upper bits in the constant value, in this case, - // forcing them to zero like we do in the zero-extend. - int32_t constValue = c->value.geti32(); - auto upperConstValue = constValue & ~Bits::lowBitMask(bits); - uint32_t count = PopCount(upperConstValue); - auto constSignBit = constValue & (1 << (bits - 1)); - if ((count > 0 && count < 32 - bits) || - (constSignBit && count == 0)) { - // mixed or [zero upper const bits with sign bit set]; the - // compared values can never be identical, so force something - // definitely impossible even after zext - assert(bits < 32); - c->value = Literal(int32_t(0x80000000)); - // TODO: if no side effects, we can just replace it all with 1 or - // 0 - } else { - // otherwise, they are all ones, so we can mask them off as - // mentioned before + uint32_t right = c->value.geti32(); + uint32_t numRelevantBits = 32 - bits + 1; + uint32_t setRelevantBits = + Bits::popCount(right >> uint32_t(bits - 1)); + // If all the relevant bits on C are zero + // then we can mask off the high bits instead of sign-extending x. + // This is valid because if x is negative, then the comparison was + // false before (negative vs positive), and will still be false + // as the sign bit will remain to cause a difference. And if x is + // positive then the upper bits would be zero anyhow. + if (setRelevantBits == 0) { + binary->left = makeZeroExt(ext, bits); + return binary; + } else if (setRelevantBits == numRelevantBits) { + // If all those bits are one, then we can do something similar if + // we also zero-extend on the right as well. This is valid + // because, as in the previous case, the sign bit differentiates + // the two sides when they are different, and if the sign bit is + // identical, then the upper bits don't matter, so masking them + // off both sides is fine. + binary->left = makeZeroExt(ext, bits); c->value = c->value.and_(Literal(Bits::lowBitMask(bits))); + return binary; + } else { + // Otherwise, C's relevant bits are mixed, and then the two sides + // can never be equal, as the left side's bits cannot be mixed. + Builder builder(*getModule()); + // The result is either always true, or always false. + c->value = Literal::makeFromInt32(binary->op == NeInt32, c->type); + return builder.makeSequence(builder.makeDrop(ext), c); } - return binary; } } else if (auto* left = Properties::getSignExtValue(binary->left)) { if (auto* right = Properties::getSignExtValue(binary->right)) { @@ -459,67 +583,30 @@ } // note that both left and right may be consts, but then we let // precompute compute the constant result - } else if (binary->op == AddInt32) { - // try to get rid of (0 - ..), that is, a zero only used to negate an - // int. an add of a subtract can be flipped in order to remove it: - // (i32.add - // (i32.sub - // (i32.const 0) - // X - // ) - // Y - // ) - // => - // (i32.sub - // Y - // X - // ) - // Note that this reorders X and Y, so we need to be careful about that. - if (auto* sub = binary->left->dynCast()) { - if (sub->op == SubInt32) { - if (auto* subZero = sub->left->dynCast()) { - if (subZero->value.geti32() == 0) { - if (EffectAnalyzer::canReorder( - getPassOptions(), features, sub->right, binary->right)) { - sub->left = binary->right; - return sub; - } - } - } - } + } else if (binary->op == AddInt32 || binary->op == AddInt64 || + binary->op == SubInt32 || binary->op == SubInt64) { + if (auto* ret = optimizeAddedConstants(binary)) { + return ret; } - // The flip case is even easier, as no reordering occurs: - // (i32.add - // Y - // (i32.sub - // (i32.const 0) - // X - // ) - // ) - // => - // (i32.sub - // Y - // X - // ) - if (auto* sub = binary->right->dynCast()) { - if (sub->op == SubInt32) { - if (auto* subZero = sub->left->dynCast()) { - if (subZero->value.geti32() == 0) { - sub->left = binary->left; - return sub; + } else if (binary->op == MulFloat32 || binary->op == MulFloat64 || + binary->op == DivFloat32 || binary->op == DivFloat64) { + if (binary->left->type == binary->right->type) { + if (auto* leftUnary = binary->left->dynCast()) { + if (leftUnary->op == + Abstract::getUnary(binary->type, Abstract::Abs)) { + if (auto* rightUnary = binary->right->dynCast()) { + if (leftUnary->op == rightUnary->op) { // both are abs ops + // abs(x) * abs(y) ==> abs(x * y) + // abs(x) / abs(y) ==> abs(x / y) + binary->left = leftUnary->value; + binary->right = rightUnary->value; + leftUnary->value = binary; + return leftUnary; + } } } } } - auto* ret = optimizeAddedConstants(binary); - if (ret) { - return ret; - } - } else if (binary->op == SubInt32) { - auto* ret = optimizeAddedConstants(binary); - if (ret) { - return ret; - } } // a bunch of operations on a constant right side can be simplified if (auto* right = binary->right->dynCast()) { @@ -537,27 +624,35 @@ return binary->left; } } else if (auto maskedBits = Bits::getMaskedBits(mask)) { - if (getMaxBits(binary->left, this) <= maskedBits) { + if (Bits::getMaxBits(binary->left, this) <= maskedBits) { // a mask of lower bits is not needed if we are already smaller return binary->left; } } } // some math operations have trivial results - Expression* ret = optimizeWithConstantOnRight(binary); - if (ret) { + if (auto* ret = optimizeWithConstantOnRight(binary)) { return ret; } // the square of some operations can be merged if (auto* left = binary->left->dynCast()) { if (left->op == binary->op) { if (auto* leftRight = left->right->dynCast()) { - if (left->op == AndInt32) { + if (left->op == AndInt32 || left->op == AndInt64) { leftRight->value = leftRight->value.and_(right->value); return left; - } else if (left->op == OrInt32) { + } else if (left->op == OrInt32 || left->op == OrInt64) { leftRight->value = leftRight->value.or_(right->value); return left; + } else if (left->op == XorInt32 || left->op == XorInt64) { + leftRight->value = leftRight->value.xor_(right->value); + return left; + } else if (left->op == MulInt32 || left->op == MulInt64) { + leftRight->value = leftRight->value.mul(right->value); + return left; + + // TODO: + // handle signed / unsigned divisions. They are more complex } else if (left->op == ShlInt32 || left->op == ShrUInt32 || left->op == ShrSInt32 || left->op == ShlInt64 || left->op == ShrUInt64 || left->op == ShrSInt64) { @@ -574,50 +669,95 @@ } } } - // math operations on a constant power of 2 right side can be optimized if (right->type == Type::i32) { - uint32_t c = right->value.geti32(); - if (IsPowerOf2(c)) { - if (binary->op == MulInt32) { - return optimizePowerOf2Mul(binary, c); - } else if (binary->op == RemUInt32) { - return optimizePowerOf2URem(binary, c); + BinaryOp op; + int32_t c = right->value.geti32(); + // First, try to lower signed operations to unsigned if that is + // possible. Some unsigned operations like div_u or rem_u are usually + // faster on VMs. Also this opens more possibilities for further + // simplifications afterwards. + if (c >= 0 && + (op = makeUnsignedBinaryOp(binary->op)) != InvalidBinary && + Bits::getMaxBits(binary->left, this) <= 31) { + binary->op = op; + } + if (c < 0 && c > std::numeric_limits::min() && + binary->op == DivUInt32) { + // u32(x) / C ==> u32(x) >= C iff C > 2^31 + // We avoid applying this for C == 2^31 due to conflict + // with other rule which transform to more prefereble + // right shift operation. + binary->op = c == -1 ? EqInt32 : GeUInt32; + return binary; + } + if (Bits::isPowerOf2((uint32_t)c)) { + switch (binary->op) { + case MulInt32: + return optimizePowerOf2Mul(binary, (uint32_t)c); + case RemUInt32: + return optimizePowerOf2URem(binary, (uint32_t)c); + case DivUInt32: + return optimizePowerOf2UDiv(binary, (uint32_t)c); + default: + break; + } + } + } + if (right->type == Type::i64) { + BinaryOp op; + int64_t c = right->value.geti64(); + // See description above for Type::i32 + if (c >= 0 && + (op = makeUnsignedBinaryOp(binary->op)) != InvalidBinary && + Bits::getMaxBits(binary->left, this) <= 63) { + binary->op = op; + } + if (getPassOptions().shrinkLevel == 0 && c < 0 && + c > std::numeric_limits::min() && + binary->op == DivUInt64) { + // u64(x) / C ==> u64(u64(x) >= C) iff C > 2^63 + // We avoid applying this for C == 2^31 due to conflict + // with other rule which transform to more prefereble + // right shift operation. + // And apply this only for shrinkLevel == 0 due to it + // increasing size by one byte. + binary->op = c == -1LL ? EqInt64 : GeUInt64; + binary->type = Type::i32; + return Builder(*getModule()).makeUnary(ExtendUInt32, binary); + } + if (Bits::isPowerOf2((uint64_t)c)) { + switch (binary->op) { + case MulInt64: + return optimizePowerOf2Mul(binary, (uint64_t)c); + case RemUInt64: + return optimizePowerOf2URem(binary, (uint64_t)c); + case DivUInt64: + return optimizePowerOf2UDiv(binary, (uint64_t)c); + default: + break; } } } + if (binary->op == DivFloat32) { + float c = right->value.getf32(); + if (Bits::isPowerOf2InvertibleFloat(c)) { + return optimizePowerOf2FDiv(binary, c); + } + } + if (binary->op == DivFloat64) { + double c = right->value.getf64(); + if (Bits::isPowerOf2InvertibleFloat(c)) { + return optimizePowerOf2FDiv(binary, c); + } + } } // a bunch of operations on a constant left side can be simplified if (binary->left->is()) { - Expression* ret = optimizeWithConstantOnLeft(binary); - if (ret) { + if (auto* ret = optimizeWithConstantOnLeft(binary)) { return ret; } } // bitwise operations - if (binary->op == AndInt32) { - // try de-morgan's AND law, - // (eqz X) and (eqz Y) === eqz (X or Y) - // Note that the OR and XOR laws do not work here, as these - // are not booleans (we could check if they are, but a boolean - // would already optimize with the eqz anyhow, unless propagating). - // But for AND, the left is true iff X and Y are each all zero bits, - // and the right is true if the union of their bits is zero; same. - if (auto* left = binary->left->dynCast()) { - if (left->op == EqZInt32) { - if (auto* right = binary->right->dynCast()) { - if (right->op == EqZInt32) { - // reuse one unary, drop the other - auto* leftValue = left->value; - left->value = binary; - binary->left = leftValue; - binary->right = right->value; - binary->op = OrInt32; - return left; - } - } - } - } - } // for and and or, we can potentially conditionalize if (binary->op == AndInt32 || binary->op == OrInt32) { if (auto* ret = conditionalizeExpensiveOnBitwise(binary)) { @@ -638,94 +778,25 @@ } // finally, try more expensive operations on the binary in // the case that they have no side effects - if (!EffectAnalyzer(getPassOptions(), features, binary->left) - .hasSideEffects()) { + if (!effects(binary->left).hasSideEffects()) { if (ExpressionAnalyzer::equal(binary->left, binary->right)) { - return optimizeBinaryWithEqualEffectlessChildren(binary); + if (auto* ret = optimizeBinaryWithEqualEffectlessChildren(binary)) { + return ret; + } } } + + if (auto* ret = deduplicateBinary(binary)) { + return ret; + } } else if (auto* unary = curr->dynCast()) { - // de-morgan's laws if (unary->op == EqZInt32) { if (auto* inner = unary->value->dynCast()) { - switch (inner->op) { - case EqInt32: - inner->op = NeInt32; - return inner; - case NeInt32: - inner->op = EqInt32; - return inner; - case LtSInt32: - inner->op = GeSInt32; - return inner; - case LtUInt32: - inner->op = GeUInt32; - return inner; - case LeSInt32: - inner->op = GtSInt32; - return inner; - case LeUInt32: - inner->op = GtUInt32; - return inner; - case GtSInt32: - inner->op = LeSInt32; - return inner; - case GtUInt32: - inner->op = LeUInt32; - return inner; - case GeSInt32: - inner->op = LtSInt32; - return inner; - case GeUInt32: - inner->op = LtUInt32; - return inner; - - case EqInt64: - inner->op = NeInt64; - return inner; - case NeInt64: - inner->op = EqInt64; - return inner; - case LtSInt64: - inner->op = GeSInt64; - return inner; - case LtUInt64: - inner->op = GeUInt64; - return inner; - case LeSInt64: - inner->op = GtSInt64; - return inner; - case LeUInt64: - inner->op = GtUInt64; - return inner; - case GtSInt64: - inner->op = LeSInt64; - return inner; - case GtUInt64: - inner->op = LeUInt64; - return inner; - case GeSInt64: - inner->op = LtSInt64; - return inner; - case GeUInt64: - inner->op = LtUInt64; - return inner; - - case EqFloat32: - inner->op = NeFloat32; - return inner; - case NeFloat32: - inner->op = EqFloat32; - return inner; - - case EqFloat64: - inner->op = NeFloat64; - return inner; - case NeFloat64: - inner->op = EqFloat64; - return inner; - - default: {} + // Try to invert a relational operation using De Morgan's law + auto op = invertBinaryOp(inner->op); + if (op != InvalidBinary) { + inner->op = op; + return inner; } } // eqz of a sign extension can be of zero-extension @@ -736,6 +807,40 @@ unary->value = makeZeroExt(ext, bits); return unary; } + } else if (unary->op == AbsFloat32 || unary->op == AbsFloat64) { + // abs(-x) ==> abs(x) + if (auto* unaryInner = unary->value->dynCast()) { + if (unaryInner->op == + Abstract::getUnary(unaryInner->type, Abstract::Neg)) { + unary->value = unaryInner->value; + return unary; + } + } + // abs(x * x) ==> x * x + // abs(x / x) ==> x / x + if (auto* binary = unary->value->dynCast()) { + if ((binary->op == Abstract::getBinary(binary->type, Abstract::Mul) || + binary->op == + Abstract::getBinary(binary->type, Abstract::DivS)) && + ExpressionAnalyzer::equal(binary->left, binary->right)) { + return binary; + } + // abs(0 - x) ==> abs(x), + // only for fast math + if (fastMath && + binary->op == Abstract::getBinary(binary->type, Abstract::Sub)) { + if (auto* c = binary->left->dynCast()) { + if (c->value.isZero()) { + unary->value = binary->right; + return unary; + } + } + } + } + } + + if (auto* ret = deduplicateUnary(unary)) { + return ret; } } else if (auto* set = curr->dynCast()) { // optimize out a set of a get @@ -758,9 +863,7 @@ // sides are identical, fold // if we can replace the if with one arm, and no side effects in the // condition, do that - auto needCondition = - EffectAnalyzer(getPassOptions(), features, iff->condition) - .hasSideEffects(); + auto needCondition = effects(iff->condition).hasSideEffects(); auto isSubType = Type::isSubType(iff->ifTrue->type, iff->type); if (isSubType && !needCondition) { return iff->ifTrue; @@ -786,66 +889,6 @@ } } } - } else if (auto* select = curr->dynCast(); - if (EffectAnalyzer(getPassOptions(), features, select->ifTrue) - .hasSideEffects()) { - if (EffectAnalyzer(getPassOptions(), features, select->ifFalse) - .hasSideEffects()) { - return curr; // leave them - } else { - if (EffectAnalyzer( - getPassOptions(), features, select->condition) - .hasSideEffects()) { - return curr; // leave them - } else { - curr = select->ifTrue; - continue; - } - } - } else { - if (EffectAnalyzer(getPassOptions(), features, select->ifFalse) - .hasSideEffects()) { - if (EffectAnalyzer( - getPassOptions(), features, select->condition) - .hasSideEffects()) { - return curr; // leave them - } else { - curr = select->ifFalse; - continue; - } - } else { - if (EffectAnalyzer( - getPassOptions(), features, select->condition) - .hasSideEffects()) { - curr = select->condition; - continue; - } else { - return nullptr; - } - } - } - } + // Some instructions have special handling in visit*, and we should do + // nothing for them here. + if (curr->is() || curr->is() || curr->is() || + curr->is() || curr->is()) { + return curr; + } + // Check if this expression itself has side effects, ignoring children. + EffectAnalyzer self(getPassOptions(), features); + self.visit(curr); + if (self.hasSideEffects()) { + return curr; + } + // The result isn't used, and this has no side effects itself, so we can + // get rid of it. However, the children may have side effects. + SmallVector childrenWithEffects; + for (auto* child : ChildIterator(curr)) { + if (EffectAnalyzer(getPassOptions(), features, child) + .hasSideEffects()) { + childrenWithEffects.push_back(child); } - - default: - return curr; // assume needed } + if (childrenWithEffects.empty()) { + return nullptr; + } + if (childrenWithEffects.size() == 1) { + // We know the result isn't used, and curr has no side effects, so we + // can skip curr and keep looking into the child. + curr = childrenWithEffects[0]; + continue; + } + // TODO: with multiple children with side effects, we can perhaps figure + // out something clever, like a block with drops, or an i32.add for just + // two, etc. + return curr; } } @@ -423,6 +341,7 @@ if (!EffectAnalyzer(getPassOptions(), getModule()->features, curr->body) .throws) { replaceCurrent(curr->body); + typeUpdater.noteRecursiveRemoval(curr->catchBody); } } diff -Nru binaryen-91/src/passes/wasm-intrinsics.wat binaryen-99/src/passes/wasm-intrinsics.wat --- binaryen-91/src/passes/wasm-intrinsics.wat 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/passes/wasm-intrinsics.wat 2021-01-07 20:01:06.000000000 +0000 @@ -6,11 +6,11 @@ ;; (aka inlining and whatnot) ;; ;; LOCAL MODS done by hand afterwards: -;; * Remove hardcoded address 1024 (apparently a free memory location rustc -;; thinks is ok to use?); add intrinsic functions, which load/store to -;; special scratch space, wasm2js_scratch_load_i32 etc. +;; * Remove hardcoded address 1024 which was used for temporary data; instead +;; add $wasm-intrinsics-temp-i64 global for that. ;; * Fix function type of __wasm_ctz_i64, which was wrong somehow, ;; i32, i32 => i32 instead of i64 => i64 +;; * Remove unnecessary memory import. ;; ;; [1]: https://gist.github.com/alexcrichton/e7ea67bcdd17ce4b6254e66f77165690 @@ -21,16 +21,11 @@ (type $3 (func (param i32) (result i32))) (type $4 (func (param i32 i32) (result i32))) (type $5 (func (param i64) (result i64))) - (import "env" "memory" (memory $0 17)) - (import "env" "wasm2js_scratch_load_i64" (func $wasm2js_scratch_load_i64 (result i64))) - (import "env" "wasm2js_scratch_store_i64" (func $wasm2js_scratch_store_i64 (param i64))) (export "__wasm_i64_sdiv" (func $__wasm_i64_sdiv)) (export "__wasm_i64_udiv" (func $__wasm_i64_udiv)) (export "__wasm_i64_srem" (func $__wasm_i64_srem)) (export "__wasm_i64_urem" (func $__wasm_i64_urem)) (export "__wasm_i64_mul" (func $__wasm_i64_mul)) - (export "__wasm_trunc_f32" (func $__wasm_trunc_f32)) - (export "__wasm_trunc_f64" (func $__wasm_trunc_f64)) (export "__wasm_ctz_i32" (func $__wasm_ctz_i32)) (export "__wasm_ctz_i64" (func $__wasm_ctz_i64)) (export "__wasm_rotl_i32" (func $__wasm_rotl_i32)) @@ -41,6 +36,7 @@ (export "__wasm_nearest_f64" (func $__wasm_nearest_f64)) (export "__wasm_popcnt_i32" (func $__wasm_popcnt_i32)) (export "__wasm_popcnt_i64" (func $__wasm_popcnt_i64)) + (global $__wasm-intrinsics-temp-i64 (mut i64) (i64.const 0)) ;; lowering of the i32.popcnt instruction, counts the number of bits set in the ;; input and returns the result @@ -137,7 +133,7 @@ (local.get $var$1) ) ) - (call $wasm2js_scratch_load_i64) + (global.get $__wasm-intrinsics-temp-i64) ) ;; lowering of the i64.mul instruction, return $var0 * $var$1 (func $__wasm_i64_mul (; 4 ;) (type $0) (param $var$0 i64) (param $var$1 i64) (result i64) @@ -146,38 +142,6 @@ (local.get $var$1) ) ) - ;; lowering of the f32.trunc instruction, rounds to the nearest integer, - ;; towards zero - (func $__wasm_trunc_f32 (; 5 ;) (type $1) (param $var$0 f32) (result f32) - (select - (f32.ceil - (local.get $var$0) - ) - (f32.floor - (local.get $var$0) - ) - (f32.lt - (local.get $var$0) - (f32.const 0) - ) - ) - ) - ;; lowering of the f64.trunc instruction, rounds to the nearest integer, - ;; towards zero - (func $__wasm_trunc_f64 (; 6 ;) (type $2) (param $var$0 f64) (result f64) - (select - (f64.ceil - (local.get $var$0) - ) - (f64.floor - (local.get $var$0) - ) - (f64.lt - (local.get $var$0) - (f64.const 0) - ) - ) - ) ;; lowering of the i32.ctz instruction, counting the number of zeros in $var$0 (func $__wasm_ctz_i32 (; 7 ;) (type $3) (param $var$0 i32) (result i32) (if @@ -578,7 +542,7 @@ (i64.const 4294967296) ) ) - (call $wasm2js_scratch_store_i64 + (global.set $__wasm-intrinsics-temp-i64 (i64.extend_i32_u (i32.sub (local.tee $var$2 @@ -639,7 +603,7 @@ (local.get $var$3) ) ) - (call $wasm2js_scratch_store_i64 + (global.set $__wasm-intrinsics-temp-i64 (i64.or (i64.shl (i64.extend_i32_u @@ -719,7 +683,7 @@ ) (br $label$3) ) - (call $wasm2js_scratch_store_i64 + (global.set $__wasm-intrinsics-temp-i64 (i64.shl (i64.extend_i32_u (i32.sub @@ -761,7 +725,7 @@ ) (br $label$2) ) - (call $wasm2js_scratch_store_i64 + (global.set $__wasm-intrinsics-temp-i64 (i64.extend_i32_u (i32.and (local.get $var$4) @@ -892,7 +856,7 @@ ) ) ) - (call $wasm2js_scratch_store_i64 + (global.set $__wasm-intrinsics-temp-i64 (local.get $var$5) ) (return @@ -905,7 +869,7 @@ ) ) ) - (call $wasm2js_scratch_store_i64 + (global.set $__wasm-intrinsics-temp-i64 (local.get $var$0) ) (local.set $var$0 diff -Nru binaryen-91/src/pass.h binaryen-99/src/pass.h --- binaryen-91/src/pass.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/pass.h 2021-01-07 20:01:06.000000000 +0000 @@ -69,14 +69,18 @@ // More generally, with 2 items we may have a local.get, but no way to // require it to be saved instead of directly consumed. Index alwaysInlineMaxSize = 2; - // Function size which we inline when functions are lightweight (no loops - // and calls) and we are doing aggressive optimisation for speed (-O3). - // In particular it's nice that with this limit we can inline the clamp - // functions (i32s-div, f64-to-int, etc.), that can affect perf. - Index flexibleInlineMaxSize = 20; // Function size which we inline when there is only one caller. // FIXME: this should logically be higher than flexibleInlineMaxSize. Index oneCallerInlineMaxSize = 15; + // Function size above which we never inline, ignoring the various flexible + // factors (like whether we are optimizing for size or speed) that could + // influence us. + // This is checked after alwaysInlineMaxSize and oneCallerInlineMaxSize, but + // the order normally won't matter. + Index flexibleInlineMaxSize = 20; + // Loops usually mean the function does heavy work, so the call overhead + // is not significant and we do not inline such functions by default. + bool allowFunctionsWithLoops = false; }; struct PassOptions { @@ -99,6 +103,20 @@ // many cases. bool lowMemoryUnused = false; enum { LowMemoryBound = 1024 }; + // Whether to allow "loose" math semantics, ignoring corner cases with NaNs + // and assuming math follows the algebraic rules for associativity and so + // forth (which IEEE floats do not, strictly speaking). This is inspired by + // gcc/clang's -ffast-math flag. + bool fastMath = false; + // Whether to assume that an imported memory is zero-initialized. Without + // this, we can do fewer optimizations on memory segments, because if memory + // *was* modified then the wasm's segments may trample those previous + // modifications. If memory was zero-initialized then we can remove zeros from + // the wasm's segments. + // (This is not a problem if the memory is *not* imported, since then wasm + // creates it and we know it is all zeros right before the active segments are + // applied.) + bool zeroFilledMemory = false; // Whether to try to preserve debug info through, which are special calls. bool debugInfo = false; // Arbitrary string arguments from the commandline, which we forward to @@ -153,7 +171,6 @@ PassRunner(const PassRunner&) = delete; PassRunner& operator=(const PassRunner&) = delete; - void setOptions(PassOptions newOptions) { options = newOptions; } void setDebug(bool debug) { options.debug = debug; // validate everything by default if debugging @@ -219,9 +236,11 @@ // doesn't help anyhow and also is bad for e.g. printing // which is a pass) // this method returns whether we are in passDebug mode, and which value: - // 1: run pass by pass, validating in between - // 2: also save the last pass, so it breakage happens we can print the last - // one 3: also dump out byn-* files for each pass + // 1: log out each pass that we run, and validate in between (can pass + // --no-validation to skip validation). + // 2: like 1, and also save the last pass's output, so if breakage happens we + // can print a useful error. also logs out names of nested passes. + // 3: like 1, and also dumps out byn-* files for each pass as it is run. static int getPassDebug(); protected: @@ -249,10 +268,6 @@ public: virtual ~Pass() = default; - // Override this to perform preparation work before the pass runs. - // This will be called before the pass is run on a module. - virtual void prepareToRun(PassRunner* runner, Module* module) {} - // Implement this with code to run the pass on the whole module virtual void run(PassRunner* runner, Module* module) { WASM_UNREACHABLE("unimplemented"); diff -Nru binaryen-91/src/shared-constants.h binaryen-99/src/shared-constants.h --- binaryen-91/src/shared-constants.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/shared-constants.h 2021-01-07 20:01:06.000000000 +0000 @@ -21,7 +21,6 @@ namespace wasm { -extern Name GROW_WASM_MEMORY; extern Name WASM_CALL_CTORS; extern Name MEMORY_BASE; extern Name TABLE_BASE; @@ -40,9 +39,12 @@ extern Name EXPORT; extern Name IMPORT; extern Name TABLE; +extern Name GLOBAL; extern Name ELEM; extern Name LOCAL; extern Name TYPE; +extern Name REF; +extern Name NULL_; extern Name CALL; extern Name CALL_IMPORT; extern Name CALL_INDIRECT; diff -Nru binaryen-91/src/shell-interface.h binaryen-99/src/shell-interface.h --- binaryen-91/src/shell-interface.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/shell-interface.h 2021-01-07 20:01:06.000000000 +0000 @@ -95,31 +95,35 @@ table.resize(wasm.table.initial); } - void importGlobals(std::map& globals, Module& wasm) override { + void importGlobals(std::map& globals, Module& wasm) override { // add spectest globals ModuleUtils::iterImportedGlobals(wasm, [&](Global* import) { - if (import->module == SPECTEST && import->base.startsWith(GLOBAL)) { - switch (import->type.getSingle()) { + if (import->module == SPECTEST && import->base.startsWith("global_")) { + TODO_SINGLE_COMPOUND(import->type); + switch (import->type.getBasic()) { case Type::i32: - globals[import->name] = Literal(int32_t(666)); + globals[import->name] = {Literal(int32_t(666))}; break; case Type::i64: - globals[import->name] = Literal(int64_t(666)); + globals[import->name] = {Literal(int64_t(666))}; break; case Type::f32: - globals[import->name] = Literal(float(666.6)); + globals[import->name] = {Literal(float(666.6))}; break; case Type::f64: - globals[import->name] = Literal(double(666.6)); + globals[import->name] = {Literal(double(666.6))}; break; case Type::v128: assert(false && "v128 not implemented yet"); case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: - globals[import->name] = Literal::makeNullref(); + case Type::anyref: + case Type::eqref: + globals[import->name] = {Literal::makeNull(import->type)}; break; + case Type::i31ref: + WASM_UNREACHABLE("TODO: i31ref"); case Type::none: case Type::unreachable: WASM_UNREACHABLE("unexpected type"); @@ -134,12 +138,12 @@ } } - Literal callImport(Function* import, LiteralList& arguments) override { + Literals callImport(Function* import, LiteralList& arguments) override { if (import->module == SPECTEST && import->base.startsWith(PRINT)) { for (auto argument : arguments) { std::cout << argument << " : " << argument.type << '\n'; } - return Literal(); + return {}; } else if (import->module == ENV && import->base == EXIT) { // XXX hack for torture tests std::cout << "exit()\n"; @@ -149,11 +153,11 @@ << import->name.str; } - Literal callTable(Index index, - Signature sig, - LiteralList& arguments, - Type results, - ModuleInstance& instance) override { + Literals callTable(Index index, + Signature sig, + LiteralList& arguments, + Type results, + ModuleInstance& instance) override { if (index >= table.size()) { trap("callTable overflow"); } @@ -164,12 +168,12 @@ if (sig != func->sig) { trap("callIndirect: function signatures don't match"); } - const std::vector& params = func->sig.params.expand(); - if (params.size() != arguments.size()) { + if (func->sig.params.size() != arguments.size()) { trap("callIndirect: bad # of arguments"); } - for (size_t i = 0; i < params.size(); i++) { - if (!Type::isSubType(arguments[i].type, params[i])) { + size_t i = 0; + for (const auto& param : func->sig.params) { + if (!Type::isSubType(arguments[i++].type, param)) { trap("callIndirect: bad argument type"); } } @@ -213,14 +217,22 @@ void tableStore(Address addr, Name entry) override { table[addr] = entry; } - void growMemory(Address /*oldSize*/, Address newSize) override { + bool growMemory(Address /*oldSize*/, Address newSize) override { + // Apply a reasonable limit on memory size, 1GB, to avoid DOS on the + // interpreter. + if (newSize > 1024 * 1024 * 1024) { + return false; + } memory.resize(newSize); + return true; } void trap(const char* why) override { - std::cerr << "[trap " << why << "]\n"; + std::cout << "[trap " << why << "]\n"; throw TrapException(); } + + void throwException(Literal exn) override { throw WasmException(exn); } }; } // namespace wasm diff -Nru binaryen-91/src/support/bits.cpp binaryen-99/src/support/bits.cpp --- binaryen-91/src/support/bits.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/support/bits.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -14,14 +14,19 @@ * limitations under the License. */ -#define wasm_support_bits_definitions #include "support/bits.h" #include "../compiler-support.h" #include "support/utilities.h" +#ifdef _MSC_VER +#include +#endif + namespace wasm { -template<> int PopCount(uint8_t v) { +namespace Bits { + +int popCount(uint8_t v) { // Small table lookup. static const uint8_t tbl[32] = {0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, @@ -29,23 +34,35 @@ return tbl[v & 0xf] + tbl[v >> 4]; } -template<> int PopCount(uint16_t v) { - return PopCount((uint8_t)(v & 0xff)) + PopCount((uint8_t)(v >> 8)); +int popCount(uint16_t v) { +#if __has_builtin(__builtin_popcount) || defined(__GNUC__) + return __builtin_popcount(v); +#else + return popCount((uint8_t)(v & 0xFF)) + popCount((uint8_t)(v >> 8)); +#endif } -template<> int PopCount(uint32_t v) { +int popCount(uint32_t v) { +#if __has_builtin(__builtin_popcount) || defined(__GNUC__) + return __builtin_popcount(v); +#else // See Stanford bithacks, counting bits set in parallel, "best method": // http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetParallel v = v - ((v >> 1) & 0x55555555); v = (v & 0x33333333) + ((v >> 2) & 0x33333333); return (((v + (v >> 4)) & 0xF0F0F0F) * 0x1010101) >> 24; +#endif } -template<> int PopCount(uint64_t v) { - return PopCount((uint32_t)v) + PopCount((uint32_t)(v >> 32)); +int popCount(uint64_t v) { +#if __has_builtin(__builtin_popcount) || defined(__GNUC__) + return __builtin_popcountll(v); +#else + return popCount((uint32_t)v) + popCount((uint32_t)(v >> 32)); +#endif } -template<> uint32_t BitReverse(uint32_t v) { +uint32_t bitReverse(uint32_t v) { // See Hacker's Delight, first edition, figure 7-1. v = ((v & 0x55555555) << 1) | ((v >> 1) & 0x55555555); v = ((v & 0x33333333) << 2) | ((v >> 2) & 0x33333333); @@ -54,22 +71,57 @@ return v; } -template<> int CountTrailingZeroes(uint32_t v) { +int countTrailingZeroes(uint32_t v) { + if (v == 0) { + return 32; + } +#if __has_builtin(__builtin_ctz) || defined(__GNUC__) + return __builtin_ctz(v); +#elif defined(_MSC_VER) + unsigned long count; + _BitScanForward(&count, v); + return (int)count; +#else // See Stanford bithacks, count the consecutive zero bits (trailing) on the // right with multiply and lookup: // http://graphics.stanford.edu/~seander/bithacks.html#ZerosOnRightMultLookup static const uint8_t tbl[32] = {0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8, 31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9}; - return v ? (int)tbl[((uint32_t)((v & -v) * 0x077CB531U)) >> 27] : 32; + return (int)tbl[((uint32_t)((v & -v) * 0x077CB531U)) >> 27]; +#endif } -template<> int CountTrailingZeroes(uint64_t v) { - return (uint32_t)v ? CountTrailingZeroes((uint32_t)v) - : 32 + CountTrailingZeroes((uint32_t)(v >> 32)); +int countTrailingZeroes(uint64_t v) { + if (v == 0) { + return 64; + } +#if __has_builtin(__builtin_ctzll) || defined(__GNUC__) + return __builtin_ctzll(v); +#elif defined(_MSC_VER) && defined(_M_X64) + unsigned long count; + _BitScanForward64(&count, v); + return (int)count; +#else + return (uint32_t)v ? countTrailingZeroes((uint32_t)v) + : 32 + countTrailingZeroes((uint32_t)(v >> 32)); +#endif } -template<> int CountLeadingZeroes(uint32_t v) { +int countLeadingZeroes(uint32_t v) { + if (v == 0) { + return 32; + } +#if __has_builtin(__builtin_clz) || defined(__GNUC__) + return __builtin_clz(v); +#elif defined(_MSC_VER) + unsigned long count; + _BitScanReverse(&count, v); + // BitScanReverse gives the bit position (0 for the LSB, then 1, etc.) of the + // first bit that is 1, when looking from the MSB. To count leading zeros, we + // need to adjust that. + return 31 - int(count); +#else // See Stanford bithacks, find the log base 2 of an N-bit integer in // O(lg(N)) operations with multiply and lookup: // http://graphics.stanford.edu/~seander/bithacks.html#IntegerLogDeBruijn @@ -81,50 +133,71 @@ v = v | (v >> 4); v = v | (v >> 8); v = v | (v >> 16); - return v ? (int)tbl[((uint32_t)(v * 0x07C4ACDDU)) >> 27] : 32; + return (int)tbl[((uint32_t)(v * 0x07C4ACDDU)) >> 27]; +#endif } -template<> int CountLeadingZeroes(uint64_t v) { - return v >> 32 ? CountLeadingZeroes((uint32_t)(v >> 32)) - : 32 + CountLeadingZeroes((uint32_t)v); -} - -uint32_t Log2(uint32_t v) { - switch (v) { - default: - WASM_UNREACHABLE("invalid value"); - case 1: - return 0; - case 2: - return 1; - case 4: - return 2; - case 8: - return 3; - case 16: - return 4; - case 32: - return 5; +int countLeadingZeroes(uint64_t v) { + if (v == 0) { + return 64; } -} - -uint32_t Pow2(uint32_t v) { - switch (v) { - case 0: - return 1; - case 1: - return 2; - case 2: - return 4; - case 3: - return 8; - case 4: - return 16; - case 5: - return 32; - default: - return 1 << v; +#if __has_builtin(__builtin_clzll) || defined(__GNUC__) + return __builtin_clzll(v); +#elif defined(_MSC_VER) && defined(_M_X64) + unsigned long count; + _BitScanReverse64(&count, v); + return 63 - int(count); +#else + return v >> 32 ? countLeadingZeroes((uint32_t)(v >> 32)) + : 32 + countLeadingZeroes((uint32_t)v); +#endif +} + +int ceilLog2(uint32_t v) { return 32 - countLeadingZeroes(v - 1); } + +int ceilLog2(uint64_t v) { return 64 - countLeadingZeroes(v - 1); } + +bool isPowerOf2InvertibleFloat(float v) { + // Power of two floating points should have zero as their significands, + // so here we just mask the exponent range of "v" and compare it with the + // unmasked input value. If they are equal, our value is a power of + // two. Also, we reject all values which are less than the minimal possible + // power of two or greater than the maximum possible power of two. + // We check values only with exponent in more limited ranges + // [-126..+126] for floats and [-1022..+1022] for doubles for avoiding + // overflows and reject NaNs, infinity and denormals. We also reject + // "asymmetric exponents", like +1023, because the range of + // (non-NaN, non-infinity) values is -1022..+1023, and it is convenient in + // optimizations to depend on being able to invert a power of two without + // losing precision. + // This function used in OptimizeInstruction pass. + const uint32_t MIN_POT = 0x01U << 23; // 0x1p-126 + const uint32_t MAX_POT = 0xFDU << 23; // 0x1p+126 + const uint32_t EXP_MASK = 0xFFU << 23; // mask only exponent + const uint32_t SIGN_MASK = ~0U >> 1; // mask everything except sign + auto u = bit_cast(v) & SIGN_MASK; + return u >= MIN_POT && u <= MAX_POT && (u & EXP_MASK) == u; +} + +bool isPowerOf2InvertibleFloat(double v) { + // See isPowerOf2InvertibleFloat(float) + const uint64_t MIN_POT = 0x001ULL << 52; // 0x1p-1022 + const uint64_t MAX_POT = 0x7FDULL << 52; // 0x1p+1022 + const uint64_t EXP_MASK = 0x7FFULL << 52; // mask only exponent + const uint64_t SIGN_MASK = ~0ULL >> 1; // mask everything except sign + auto u = bit_cast(v) & SIGN_MASK; + return u >= MIN_POT && u <= MAX_POT && (u & EXP_MASK) == u; +} + +uint32_t log2(uint32_t v) { + if (!isPowerOf2(v)) { + WASM_UNREACHABLE("value should be a power of two"); } + return 31 - countLeadingZeroes(v); } +uint32_t pow2(uint32_t v) { return v < 32 ? 1 << v : 0; } + +} // namespace Bits + } // namespace wasm diff -Nru binaryen-91/src/support/bits.h binaryen-99/src/support/bits.h --- binaryen-91/src/support/bits.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/support/bits.h 2021-01-07 20:01:06.000000000 +0000 @@ -29,57 +29,74 @@ * * We instead use portable and reasonably-fast implementations, while * avoiding implementations with large lookup tables. - * - * TODO: The convention here should be changed PopCount => popCount, - * initial lowercase, to match the rest of the codebase. */ namespace wasm { -template int PopCount(T); -template uint32_t BitReverse(T); -template int CountTrailingZeroes(T); -template int CountLeadingZeroes(T); - -#ifndef wasm_support_bits_definitions -// The template specializations are provided elsewhere. -extern template int PopCount(uint8_t); -extern template int PopCount(uint16_t); -extern template int PopCount(uint32_t); -extern template int PopCount(uint64_t); -extern template uint32_t BitReverse(uint32_t); -extern template int CountTrailingZeroes(uint32_t); -extern template int CountTrailingZeroes(uint64_t); -extern template int CountLeadingZeroes(uint32_t); -extern template int CountLeadingZeroes(uint64_t); -#endif - -// Convenience signed -> unsigned. It usually doesn't make much sense to use bit -// functions on signed types. -template int PopCount(T v) { - return PopCount(typename std::make_unsigned::type(v)); -} -template int CountTrailingZeroes(T v) { - return CountTrailingZeroes(typename std::make_unsigned::type(v)); +namespace Bits { + +int popCount(uint8_t); +int popCount(uint16_t); +int popCount(uint32_t); +int popCount(uint64_t); + +inline int popCount(int8_t v) { return popCount(uint8_t(v)); } +inline int popCount(int16_t v) { return popCount(uint16_t(v)); } +inline int popCount(int32_t v) { return popCount(uint32_t(v)); } +inline int popCount(int64_t v) { return popCount(uint64_t(v)); } + +uint32_t bitReverse(uint32_t); + +int countTrailingZeroes(uint32_t); +int countTrailingZeroes(uint64_t); + +inline int countTrailingZeroes(int32_t v) { + return countTrailingZeroes(uint32_t(v)); +} +inline int countTrailingZeroes(int64_t v) { + return countTrailingZeroes(uint64_t(v)); +} + +int countLeadingZeroes(uint32_t); +int countLeadingZeroes(uint64_t); + +inline int countLeadingZeroes(int32_t v) { + return countLeadingZeroes(uint32_t(v)); } -template int CountLeadingZeroes(T v) { - return CountLeadingZeroes(typename std::make_unsigned::type(v)); +inline int countLeadingZeroes(int64_t v) { + return countLeadingZeroes(uint64_t(v)); +} + +int ceilLog2(uint32_t); +int ceilLog2(uint64_t); + +inline int ceilLog2(int32_t v) { return ceilLog2(uint32_t(v)); } +inline int ceilLog2(int64_t v) { return ceilLog2(uint64_t(v)); } + +template bool isPowerOf2(T v) { + return v != 0 && (v & (v - 1)) == 0; } -template bool IsPowerOf2(T v) { return v != 0 && PopCount(v) == 1; } -template inline static T RotateLeft(T val, U count) { - T mask = sizeof(T) * CHAR_BIT - 1; +bool isPowerOf2InvertibleFloat(float); +bool isPowerOf2InvertibleFloat(double); + +template inline static T rotateLeft(T val, U count) { + auto value = typename std::make_unsigned::type(val); + U mask = sizeof(T) * CHAR_BIT - 1; count &= mask; - return (val << count) | (val >> (-count & mask)); + return (value << count) | (value >> (-count & mask)); } -template inline static T RotateRight(T val, U count) { - T mask = sizeof(T) * CHAR_BIT - 1; +template inline static T rotateRight(T val, U count) { + auto value = typename std::make_unsigned::type(val); + U mask = sizeof(T) * CHAR_BIT - 1; count &= mask; - return (val >> count) | (val << (-count & mask)); + return (value >> count) | (value << (-count & mask)); } -extern uint32_t Log2(uint32_t v); -extern uint32_t Pow2(uint32_t v); +uint32_t log2(uint32_t v); +uint32_t pow2(uint32_t v); + +} // namespace Bits } // namespace wasm diff -Nru binaryen-91/src/support/CMakeLists.txt binaryen-99/src/support/CMakeLists.txt --- binaryen-91/src/support/CMakeLists.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/support/CMakeLists.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,3 +1,4 @@ +FILE(GLOB support_HEADERS *.h) set(support_SOURCES archive.cpp bits.cpp @@ -9,5 +10,6 @@ safe_integer.cpp threads.cpp utilities.cpp + ${support_HEADERS} ) add_library(support OBJECT ${support_SOURCES}) diff -Nru binaryen-91/src/support/file.h binaryen-99/src/support/file.h --- binaryen-91/src/support/file.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/support/file.h 2021-01-07 20:01:06.000000000 +0000 @@ -15,7 +15,7 @@ */ // -// FIle helpers. +// File helpers. // #ifndef wasm_support_file_h diff -Nru binaryen-91/src/support/hash.h binaryen-99/src/support/hash.h --- binaryen-91/src/support/hash.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/support/hash.h 2021-01-07 20:01:06.000000000 +0000 @@ -22,27 +22,30 @@ namespace wasm { -typedef uint32_t HashType; +// Computes the digest of `value`. +template inline std::size_t hash(const T& value) { + return std::hash{}(value); +} -inline HashType rehash(HashType x, HashType y) { - // see http://www.cse.yorku.ca/~oz/hash.html and - // https://stackoverflow.com/a/2595226/1176841 - HashType hash = 5381; - while (x) { - hash = ((hash << 5) + hash) ^ (x & 0xff); - x >>= 8; - } - while (y) { - hash = ((hash << 5) + hash) ^ (y & 0xff); - y >>= 8; - } - return hash; +// Combines two digests into the first digest. Use instead of `rehash` if +// `otherDigest` is another digest and not a `size_t` value. +static inline void hash_combine(std::size_t& digest, std::size_t otherDigest) { + // see: boost/container_hash/hash.hpp + // The constant is the N-bits reciprocal of the golden ratio: + // phi = (1 + sqrt(5)) / 2 +#if SIZE_MAX == UINT64_MAX + // trunc(2^64 / phi) = 0x9e3779b97f4a7c15 + digest ^= otherDigest + 0x9e3779b97f4a7c15 + (digest << 12) + (digest >> 4); +#else + // trunc(2^32 / phi) = 0x9e3779b9 + digest ^= otherDigest + 0x9e3779b9 + (digest << 6) + (digest >> 2); +#endif } -inline uint64_t rehash(uint64_t x, uint64_t y) { - auto ret = rehash(HashType(x), HashType(x >> 32)); - ret = rehash(ret, HashType(y)); - return rehash(ret, HashType(y >> 32)); +// Hashes `value` and combines the resulting digest into the existing digest. +// Use instead of `hash_combine` if `value` is not another digest. +template inline void rehash(std::size_t& digest, const T& value) { + hash_combine(digest, hash(value)); } } // namespace wasm diff -Nru binaryen-91/src/support/json.h binaryen-99/src/support/json.h --- binaryen-91/src/support/json.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/support/json.h 2021-01-07 20:01:06.000000000 +0000 @@ -193,7 +193,7 @@ } int32_t getInteger() { // convenience function to get a known integer - assert(fmod(getNumber(), 1) == 0); + assert(wasm::isInteger(getNumber())); int32_t ret = getNumber(); assert(double(ret) == getNumber()); // no loss in conversion return ret; diff -Nru binaryen-91/src/support/safe_integer.cpp binaryen-99/src/support/safe_integer.cpp --- binaryen-91/src/support/safe_integer.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/support/safe_integer.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -22,7 +22,7 @@ using namespace wasm; -bool wasm::isInteger(double x) { return fmod(x, 1) == 0; } +bool wasm::isInteger(double x) { return trunc(x) == x && !std::isinf(x); } bool wasm::isUInteger32(double x) { return !std::signbit(x) && isInteger(x) && @@ -124,8 +124,8 @@ * 3 21098765432 1098...432109...210 * --------------------------------- * 0 00000000000 0000...000000...000 0x0000000000000000 => 0 - * 0 10000011101 1111...111000...000 0x41dfffffffc00000 => 2147483647 (INT32_MAX) - * 0 10000011110 1111...111100...000 0x41efffffffe00000 => 4294967295 (UINT32_MAX) + * 0 10000011101 1111...111000...111 0x41dfffffffffffff => 2147483647.9999998 (rounds down to INT32_MAX) + * 0 10000011110 1111...111111...111 0x41efffffffffffff => 4294967295.9999995 (rounds down to UINT32_MAX) * 0 10000111101 1111...111111...111 0x43dfffffffffffff => 9223372036854774784 (~INT64_MAX) * 0 10000111110 0000...000000...000 0x43e0000000000000 => 9223372036854775808 * 0 10000111110 1111...111111...111 0x43efffffffffffff => 18446744073709549568 (~UINT64_MAX) @@ -136,7 +136,7 @@ * 1 00000000000 0000...000000...000 0x8000000000000000 => -0 * 1 01111111110 1111...111111...111 0xbfefffffffffffff => -1 + ulp (~UINT32_MIN, ~UINT64_MIN) * 1 01111111111 0000...000000...000 0xbff0000000000000 => -1 - * 1 10000011110 0000...000000...000 0xc1e0000000000000 => -2147483648 (INT32_MIN) + * 1 10000011110 0000...000000...111 0xc1e00000001fffff => -2147483648.9999995 (rounds up to INT32_MIN) * 1 10000111110 0000...000000...000 0xc3e0000000000000 => -9223372036854775808 (INT64_MIN) * 1 11111111111 0000...000000...000 0xfff0000000000000 => -inf * 1 11111111111 0000...000000...001 0xfff0000000000001 => -nan(0x1) @@ -146,13 +146,13 @@ bool wasm::isInRangeI32TruncS(int64_t i) { uint64_t u = i; - return (u <= 0x41dfffffffc00000ULL) || - (u >= 0x8000000000000000ULL && u <= 0xc1e0000000000000ULL); + return (u <= 0x41dfffffffffffffULL) || + (u >= 0x8000000000000000ULL && u <= 0xc1e00000001fffffULL); } bool wasm::isInRangeI32TruncU(int64_t i) { uint64_t u = i; - return (u <= 0x41efffffffe00000ULL) || + return (u <= 0x41efffffffffffffULL) || (u >= 0x8000000000000000ULL && u <= 0xbfefffffffffffffULL); } diff -Nru binaryen-91/src/support/small_vector.h binaryen-99/src/support/small_vector.h --- binaryen-91/src/support/small_vector.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/support/small_vector.h 2021-01-07 20:01:06.000000000 +0000 @@ -41,12 +41,14 @@ using value_type = T; SmallVector() {} - - T& operator[](size_t i) { - return const_cast(static_cast&>(*this)[i]); + SmallVector(std::initializer_list init) { + for (T item : init) { + push_back(item); + } } + SmallVector(size_t initialSize) { resize(initialSize); } - const T& operator[](size_t i) const { + T& operator[](size_t i) { if (i < N) { return fixed[i]; } else { @@ -54,6 +56,10 @@ } } + const T& operator[](size_t i) const { + return const_cast&>(*this)[i]; + } + void push_back(const T& x) { if (usedFixed < N) { fixed[usedFixed++] = x; @@ -106,6 +112,13 @@ flexible.clear(); } + void resize(size_t newSize) { + usedFixed = std::min(N, newSize); + if (newSize > N) { + flexible.resize(newSize - N); + } + } + bool operator==(const SmallVector& other) const { if (usedFixed != other.usedFixed) { return false; @@ -124,16 +137,15 @@ // iteration - struct Iterator { + template struct IteratorBase { typedef T value_type; typedef long difference_type; typedef T& reference; - const SmallVector* parent; + Parent* parent; size_t index; - Iterator(const SmallVector* parent, size_t index) - : parent(parent), index(index) {} + IteratorBase(Parent* parent, size_t index) : parent(parent), index(index) {} bool operator!=(const Iterator& other) const { return index != other.index || parent != other.parent; @@ -149,16 +161,24 @@ const Iterator operator+(difference_type off) const { return Iterator(*this) += off; } + }; - const value_type operator*() const { return (*parent)[index]; } + struct Iterator : IteratorBase, Iterator> { + Iterator(SmallVector* parent, size_t index) + : IteratorBase, Iterator>(parent, index) {} + value_type& operator*() { return (*this->parent)[this->index]; } }; - Iterator begin() const { - return Iterator(static_cast*>(this), 0); - } - Iterator end() const { - return Iterator(static_cast*>(this), size()); - } + struct ConstIterator : IteratorBase, ConstIterator> { + ConstIterator(const SmallVector* parent, size_t index) + : IteratorBase, ConstIterator>(parent, index) {} + const value_type& operator*() const { return (*this->parent)[this->index]; } + }; + + Iterator begin() { return Iterator(this, 0); } + Iterator end() { return Iterator(this, size()); } + ConstIterator begin() const { return ConstIterator(this, 0); } + ConstIterator end() const { return ConstIterator(this, size()); } }; } // namespace wasm diff -Nru binaryen-91/src/support/space.h binaryen-99/src/support/space.h --- binaryen-91/src/support/space.h 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/src/support/space.h 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,84 @@ +/* + * Copyright 2020 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. + */ + +#ifndef wasm_support_space_h +#define wasm_support_space_h + +#include "utilities.h" +#include + +namespace wasm { + +struct DisjointSpans { + // A span of form [a, b), i.e., that does not include the end point. + struct Span { + Address left, right; + + bool checkOverlap(const Span& other) const { + return !(left >= other.right || right <= other.left); + } + }; + + struct SortByLeft { + bool operator()(const Span& left, const Span& right) const { + return left.left < right.left || + (left.left == right.left && left.right < right.right); + } + }; + + // The spans seen so far. Guaranteed to be disjoint. + std::set spans; + + // Adds an item and checks overlap while doing so, returning true if such + // overlap exists. + bool addAndCheckOverlap(Span span) { + // Insert the new span. We can then find its predecessor and successor. + // They are disjoint by assumption, so the question is then does the new + // span overlap with them, or not. + decltype(spans)::iterator iter; + bool inserted; + std::tie(iter, inserted) = spans.insert(span); + if (!inserted) { + // This exact span was already there, so there is definite overlap. + return true; + } + // Check predecessor and successor, if they exist. + if (iter != spans.begin() && std::prev(iter)->checkOverlap(span)) { + return true; + } + if (std::next(iter) != spans.end() && std::next(iter)->checkOverlap(span)) { + return true; + } + return false; + } + + // Inefficient - mostly for testing. + void add(Span span) { addAndCheckOverlap(span); } + + // Inefficient - mostly for testing. + bool checkOverlap(Span span) { + bool existsBefore = spans.find(span) != spans.end(); + auto hasOverlap = addAndCheckOverlap(span); + if (!existsBefore) { + spans.erase(span); + } + return hasOverlap; + } +}; + +} // namespace wasm + +#endif // wasm_support_space_h diff -Nru binaryen-91/src/support/string.h binaryen-99/src/support/string.h --- binaryen-91/src/support/string.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/support/string.h 2021-01-07 20:01:06.000000000 +0000 @@ -115,6 +115,10 @@ return input.substr(0, size); } +inline bool isNumber(const std::string& str) { + return !str.empty() && std::all_of(str.begin(), str.end(), ::isdigit); +} + } // namespace String } // namespace wasm diff -Nru binaryen-91/src/support/utilities.h binaryen-99/src/support/utilities.h --- binaryen-91/src/support/utilities.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/support/utilities.h 2021-01-07 20:01:06.000000000 +0000 @@ -44,7 +44,7 @@ } inline size_t alignAddr(size_t address, size_t alignment) { - assert(alignment && IsPowerOf2((uint32_t)alignment) && + assert(alignment && Bits::isPowerOf2((uint32_t)alignment) && "Alignment is not a power of two!"); assert(address + alignment - 1 >= address); diff -Nru binaryen-91/src/tools/asm2wasm.cpp binaryen-99/src/tools/asm2wasm.cpp --- binaryen-91/src/tools/asm2wasm.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/tools/asm2wasm.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,296 +0,0 @@ -/* - * Copyright 2015 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. - */ - -// -// asm2wasm console tool -// - -#include - -#include "ir/trapping.h" -#include "optimization-options.h" -#include "support/colors.h" -#include "support/command-line.h" -#include "support/file.h" -#include "wasm-builder.h" -#include "wasm-io.h" -#include "wasm-printing.h" -#include "wasm-validator.h" - -#include "asm2wasm.h" - -using namespace cashew; -using namespace wasm; - -int main(int argc, const char* argv[]) { - bool legalizeJavaScriptFFI = true; - TrapMode trapMode = TrapMode::JS; - bool wasmOnly = false; - std::string sourceMapFilename; - std::string sourceMapUrl; - std::string symbolMap; - bool emitBinary = true; - - OptimizationOptions options("asm2wasm", - "Translate asm.js files to .wast files"); - options - .add("--output", - "-o", - "Output file (stdout if not specified)", - Options::Arguments::One, - [](Options* o, const std::string& argument) { - o->extra["output"] = argument; - Colors::setEnabled(false); - }) - .add( - "--mapped-globals", - "-n", - "Mapped globals", - Options::Arguments::One, - [](Options* o, const std::string& argument) { - std::cerr - << "warning: the --mapped-globals/-m option is deprecated (a mapped " - "globals file is no longer needed as we use wasm globals)" - << std::endl; - }) - .add("--mem-init", - "-t", - "Import a memory initialization file into the output module", - Options::Arguments::One, - [](Options* o, const std::string& argument) { - o->extra["mem init"] = argument; - }) - .add("--mem-base", - "-mb", - "Set the location to write the memory initialization (--mem-init) " - "file (GLOBAL_BASE in emscripten). If not provided, the __memory_base " - "global import is used.", - Options::Arguments::One, - [](Options* o, const std::string& argument) { - o->extra["mem base"] = argument; - }) - .add("--mem-max", - "-mm", - "Set the maximum size of memory in the wasm module (in bytes). -1 " - "means no limit. Without this, TOTAL_MEMORY is used (as it is used " - "for the initial value), or if memory growth is enabled, no limit is " - "set. This overrides both of those.", - Options::Arguments::One, - [](Options* o, const std::string& argument) { - o->extra["mem max"] = argument; - }) - .add("--total-memory", - "-m", - "Total memory size", - Options::Arguments::One, - [](Options* o, const std::string& argument) { - o->extra["total memory"] = argument; - }) - .add("--table-max", - "-tM", - "Set the maximum size of the table. Without this, it is set depending " - "on how many functions are in the module. -1 means no limit", - Options::Arguments::One, - [](Options* o, const std::string& argument) { - o->extra["table max"] = argument; - }) - .add("--no-opts", - "-n", - "Disable optimization passes (deprecated)", - Options::Arguments::Zero, - [](Options* o, const std::string&) { - std::cerr << "--no-opts is deprecated (use -O0, etc.)\n"; - }) - .add("--trap-mode", - "", - "Strategy for handling potentially trapping instructions. Valid " - "values are \"allow\", \"js\", and \"clamp\"", - Options::Arguments::One, - [&trapMode](Options* o, const std::string& argument) { - try { - trapMode = trapModeFromString(argument); - } catch (std::invalid_argument& e) { - std::cerr << "Error: " << e.what() << "\n"; - exit(EXIT_FAILURE); - } - }) - .add("--wasm-only", - "-w", - "Input is in WebAssembly-only format, and not actually valid asm.js", - Options::Arguments::Zero, - [&wasmOnly](Options* o, const std::string&) { wasmOnly = true; }) - .add("--no-legalize-javascript-ffi", - "-nj", - "Do not fully legalize (i64->i32, f32->f64) the imports and exports " - "for interfacing with JS", - Options::Arguments::Zero, - [&legalizeJavaScriptFFI](Options* o, const std::string&) { - legalizeJavaScriptFFI = false; - }) - .add("--source-map", - "-sm", - "Emit source map (if using binary output) to the specified file", - Options::Arguments::One, - [&sourceMapFilename](Options* o, const std::string& argument) { - sourceMapFilename = argument; - }) - .add("--source-map-url", - "-su", - "Use specified string as source map URL", - Options::Arguments::One, - [&sourceMapUrl](Options* o, const std::string& argument) { - sourceMapUrl = argument; - }) - .add("--symbolmap", - "-s", - "Emit a symbol map (indexes => names)", - Options::Arguments::One, - [&](Options* o, const std::string& argument) { symbolMap = argument; }) - .add("--emit-text", - "-S", - "Emit text instead of binary for the output file", - Options::Arguments::Zero, - [&](Options* o, const std::string& argument) { emitBinary = false; }) - .add_positional("INFILE", - Options::Arguments::One, - [](Options* o, const std::string& argument) { - o->extra["infile"] = argument; - }); - options.parse(argc, argv); - - // finalize arguments - if (options.extra["output"].size() == 0) { - // when no output file is specified, we emit text to stdout - emitBinary = false; - } - - if (options.runningDefaultOptimizationPasses()) { - if (options.passes.size() > 1) { - Fatal() << "asm2wasm can only run default optimization passes (-O, -Ox, " - "etc.), and not specific additional passes"; - } - } - - const auto& tm_it = options.extra.find("total memory"); - size_t totalMemory = tm_it == options.extra.end() - ? 16 * 1024 * 1024 - : atoll(tm_it->second.c_str()); - if (totalMemory & ~Memory::kPageMask) { - std::cerr << "Error: total memory size " << totalMemory - << " is not a multiple of the 64k wasm page size\n"; - exit(EXIT_FAILURE); - } - - Asm2WasmPreProcessor pre; - // wasm binaries can contain a names section, but not full debug info -- - // debug info is disabled if a map file is not specified with wasm binary - pre.debugInfo = - options.passOptions.debugInfo && (!emitBinary || sourceMapFilename.size()); - auto input( - read_file>(options.extra["infile"], Flags::Text)); - char* start = pre.process(input.data()); - - if (options.debug) { - std::cerr << "parsing..." << std::endl; - } - cashew::Parser builder; - Ref asmjs = builder.parseToplevel(start); - - if (options.debug) { - std::cerr << "wasming..." << std::endl; - } - Module wasm; - - // set up memory - wasm.memory.initial = wasm.memory.max = totalMemory / Memory::kPageSize; - - // import mem init file, if provided (do this before compiling the module, - // since the optimizer should see the memory segments) - const auto& memInit = options.extra.find("mem init"); - if (memInit != options.extra.end()) { - auto filename = memInit->second.c_str(); - auto data(read_file>(filename, Flags::Binary)); - // create the memory segment - Expression* init; - const auto& memBase = options.extra.find("mem base"); - if (memBase == options.extra.end()) { - init = Builder(wasm).makeGlobalGet(MEMORY_BASE, Type::i32); - } else { - init = Builder(wasm).makeConst( - Literal(int32_t(atoi(memBase->second.c_str())))); - } - wasm.memory.segments.emplace_back(init, data); - } - - // set up the module's features, needed by optimization and validation passes - options.applyFeatures(wasm); - - // compile the code - Asm2WasmBuilder asm2wasm(wasm, - pre, - options.debug, - trapMode, - options.passOptions, - legalizeJavaScriptFFI, - options.runningDefaultOptimizationPasses(), - wasmOnly); - asm2wasm.processAsm(asmjs); - - // Set the max memory size, if requested - const auto& memMax = options.extra.find("mem max"); - if (memMax != options.extra.end()) { - uint64_t max = strtoull(memMax->second.c_str(), nullptr, 10); - if (max != uint64_t(-1)) { - wasm.memory.max = max / Memory::kPageSize; - } else { - wasm.memory.max = Memory::kUnlimitedSize; - } - } - // Set the table sizes, if requested - const auto& tableMax = options.extra.find("table max"); - if (tableMax != options.extra.end()) { - int max = atoi(tableMax->second.c_str()); - if (max >= 0) { - wasm.table.max = max; - } else { - wasm.table.max = Table::kUnlimitedSize; - } - } - - if (options.passOptions.validate) { - if (!WasmValidator().validate(wasm)) { - WasmPrinter::printModule(&wasm); - Fatal() << "error in validating output"; - } - } - - if (options.debug) { - std::cerr << "emitting..." << std::endl; - } - ModuleWriter writer; - writer.setDebugInfo(options.passOptions.debugInfo); - writer.setSymbolMap(symbolMap); - writer.setBinary(emitBinary); - if (emitBinary) { - writer.setSourceMapFilename(sourceMapFilename); - writer.setSourceMapUrl(sourceMapUrl); - } - writer.write(wasm, options.extra["output"]); - - if (options.debug) { - std::cerr << "done." << std::endl; - } -} diff -Nru binaryen-91/src/tools/execution-results.h binaryen-99/src/tools/execution-results.h --- binaryen-91/src/tools/execution-results.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/tools/execution-results.h 2021-01-07 20:01:06.000000000 +0000 @@ -18,7 +18,6 @@ // Shared execution result checking code // -#include "ir/import-utils.h" #include "shell-interface.h" #include "wasm.h" @@ -30,9 +29,17 @@ struct LoggingExternalInterface : public ShellExternalInterface { Loggings& loggings; + struct State { + // Legalization for JS emits get/setTempRet0 calls ("temp ret 0" means a + // temporary return value of 32 bits; "0" is the only important value for + // 64-bit legalization, which needs one such 32-bit chunk in addition to + // the normal return value which can handle 32 bits). + uint32_t tempRet0 = 0; + } state; + LoggingExternalInterface(Loggings& loggings) : loggings(loggings) {} - Literal callImport(Function* import, LiteralList& arguments) override { + Literals callImport(Function* import, LiteralList& arguments) override { if (import->module == "fuzzing-support") { std::cout << "[LoggingExternalInterface logging"; loggings.push_back(Literal()); // buffer with a None between calls @@ -41,8 +48,25 @@ loggings.push_back(argument); } std::cout << "]\n"; + return {}; + } else if (import->module == ENV) { + if (import->base == "log_execution") { + std::cout << "[LoggingExternalInterface log-execution"; + for (auto argument : arguments) { + std::cout << ' ' << argument; + } + std::cout << "]\n"; + return {}; + } else if (import->base == "setTempRet0") { + state.tempRet0 = arguments[0].geti32(); + return {}; + } else if (import->base == "getTempRet0") { + return {Literal(state.tempRet0)}; + } } - return Literal(); + std::cerr << "[LoggingExternalInterface ignoring an unknown import " + << import->module << " . " << import->base << '\n'; + return {}; } }; @@ -51,7 +75,7 @@ // we can only get results when there are no imports. we then call each method // that has a result, with some values struct ExecutionResults { - std::map results; + std::map results; Loggings loggings; // get results of execution @@ -69,17 +93,12 @@ auto* func = wasm.getFunction(exp->value); if (func->sig.results != Type::none) { // this has a result - Literal ret = run(func, wasm, instance); - // We cannot compare funcrefs by name because function names can - // change (after duplicate function elimination or roundtripping) - // while the function contents are still the same - if (ret.type != Type::funcref) { - results[exp->name] = ret; - // ignore the result if we hit an unreachable and returned no value - if (results[exp->name].type.isConcrete()) { - std::cout << "[fuzz-exec] note result: " << exp->name << " => " - << results[exp->name] << '\n'; - } + Literals ret = run(func, wasm, instance); + results[exp->name] = ret; + // ignore the result if we hit an unreachable and returned no value + if (ret.size() > 0) { + std::cout << "[fuzz-exec] note result: " << exp->name << " => " + << ret << '\n'; } } else { // no result, run it anyhow (it might modify memory etc.) @@ -96,9 +115,44 @@ ExecutionResults optimizedResults; optimizedResults.get(wasm); if (optimizedResults != *this) { - std::cout << "[fuzz-exec] optimization passes changed execution results"; - abort(); + std::cout << "[fuzz-exec] optimization passes changed results\n"; + exit(1); + } + } + + bool areEqual(Literal a, Literal b) { + if (a.type != b.type) { + std::cout << "types not identical! " << a << " != " << b << '\n'; + return false; + } + if (a.type.isRef()) { + // Don't compare references - only their types. There are several issues + // here that we can't fully handle, see + // https://github.com/WebAssembly/binaryen/issues/3378, but the core issue + // is that we are comparing results between two separate wasm modules (and + // a separate instance of each) - we can't really identify an identical + // reference between such things. We can only compare things structurally, + // for which we compare the types. + return true; + } + if (a != b) { + std::cout << "values not identical! " << a << " != " << b << '\n'; + return false; + } + return true; + } + + bool areEqual(Literals a, Literals b) { + if (a.size() != b.size()) { + std::cout << "literal counts not identical! " << a << " != " << b << '\n'; + return false; } + for (Index i = 0; i < a.size(); i++) { + if (!areEqual(a[i], b[i])) { + return false; + } + } + return true; } bool operator==(ExecutionResults& other) { @@ -109,32 +163,36 @@ return false; } std::cout << "[fuzz-exec] comparing " << name << '\n'; - if (results[name] != other.results[name]) { - std::cout << "not identical!\n"; + if (!areEqual(results[name], other.results[name])) { return false; } } - if (loggings != other.loggings) { - std::cout << "logging not identical!\n"; + if (loggings.size() != other.loggings.size()) { + std::cout << "logging counts not identical!\n"; return false; } + for (Index i = 0; i < loggings.size(); i++) { + if (!areEqual(loggings[i], other.loggings[i])) { + return false; + } + } return true; } bool operator!=(ExecutionResults& other) { return !((*this) == other); } - Literal run(Function* func, Module& wasm) { + Literals run(Function* func, Module& wasm) { LoggingExternalInterface interface(loggings); try { ModuleInstance instance(wasm, &interface); return run(func, wasm, instance); } catch (const TrapException&) { // may throw in instance creation (init of offsets) - return Literal(); + return {}; } } - Literal run(Function* func, Module& wasm, ModuleInstance& instance) { + Literals run(Function* func, Module& wasm, ModuleInstance& instance) { try { LiteralList arguments; // init hang support, if present @@ -142,13 +200,13 @@ instance.callFunction(ex->value, arguments); } // call the method - for (Type param : func->sig.params.expand()) { + for (const auto& param : func->sig.params) { // zeros in arguments TODO: more? arguments.push_back(Literal::makeZero(param)); } return instance.callFunction(func->name, arguments); } catch (const TrapException&) { - return Literal(); + return {}; } } }; diff -Nru binaryen-91/src/tools/fuzzing.h binaryen-99/src/tools/fuzzing.h --- binaryen-91/src/tools/fuzzing.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/tools/fuzzing.h 2021-01-07 20:01:06.000000000 +0000 @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -183,13 +184,14 @@ std::cout << "shrink level: " << options.passOptions.shrinkLevel << '\n'; } - void setAllowNaNs(bool allowNaNs_) { allowNaNs = allowNaNs_; } - void setAllowMemory(bool allowMemory_) { allowMemory = allowMemory_; } void setAllowOOB(bool allowOOB_) { allowOOB = allowOOB_; } void build() { + if (HANG_LIMIT > 0) { + prepareHangLimitSupport(); + } if (allowMemory) { setupMemory(); } @@ -198,6 +200,7 @@ if (wasm.features.hasExceptionHandling()) { setupEvents(); } + modifyInitialFunctions(); addImportLoggingSupport(); // keep adding functions until we run out of input while (!finishedInput) { @@ -207,8 +210,8 @@ if (HANG_LIMIT > 0) { addHangLimitSupport(); } - if (!allowNaNs) { - addDeNanSupport(); + if (allowMemory) { + finalizeMemory(); } finalizeTable(); } @@ -228,6 +231,12 @@ // The maximum amount of vars in each function. static const int MAX_VARS = 20; + // The maximum number of globals in a module. + static const int MAX_GLOBALS = 20; + + // The maximum number of tuple elements. + static const int MAX_TUPLE_SIZE = 6; + // some things require luck, try them a few times static const int TRIES = 10; @@ -240,18 +249,13 @@ // the memory that we use, a small portion so that we have a good chance of // looking at writes (we also look outside of this region with small // probability) this should be a power of 2 - static const int USABLE_MEMORY = 16; + const Address USABLE_MEMORY = 16; // the number of runtime iterations (function calls, loop backbranches) we // allow before we stop execution with a trap, to prevent hangs. 0 means // no hang protection. static const int HANG_LIMIT = 10; - // Optionally remove NaNs, which are a source of nondeterminism (which makes - // cross-VM comparisons harder) - // TODO: de-NaN SIMD values - bool allowNaNs = true; - // Whether to emit memory operations like loads and stores. bool allowMemory = true; @@ -309,22 +313,47 @@ double getDouble() { return Literal(get64()).reinterpretf64(); } - SmallVector getSubTypes(Type type) { - SmallVector ret; - ret.push_back(type); // includes itself - switch (type.getSingle()) { - case Type::anyref: - ret.push_back(Type::funcref); - ret.push_back(Type::exnref); - // falls through - case Type::funcref: - case Type::exnref: - ret.push_back(Type::nullref); - break; - default: - break; + Type getSubType(Type type) { + if (type.isTuple()) { + std::vector types; + for (const auto& t : type) { + types.push_back(getSubType(t)); + } + return Type(types); + } + if (type.isFunction() && type != Type::funcref) { + // TODO: specific typed function references types. + return type; + } + SmallVector options; + options.push_back(type); // includes itself + // TODO: interesting uses of typed function types + // TODO: interesting subtypes of compound types + if (type.isBasic()) { + switch (type.getBasic()) { + case Type::anyref: + if (wasm.features.hasReferenceTypes()) { + options.push_back(Type::funcref); + options.push_back(Type::externref); + if (wasm.features.hasExceptionHandling()) { + options.push_back(Type::exnref); + } + if (wasm.features.hasGC()) { + options.push_back(Type::eqref); + options.push_back(Type::i31ref); + } + } + break; + case Type::eqref: + if (wasm.features.hasGC()) { + options.push_back(Type::i31ref); + } + break; + default: + break; + } } - return ret; + return pick(options); } void setupMemory() { @@ -343,14 +372,14 @@ segment.data[j] = upTo(512); } if (!segment.isPassive) { - segment.offset = builder.makeConst(Literal(int32_t(memCovered))); + segment.offset = builder.makeConst(int32_t(memCovered)); memCovered += segSize; } wasm.memory.segments.push_back(segment); } } else { // init some data - wasm.memory.segments.emplace_back(builder.makeConst(Literal(int32_t(0)))); + wasm.memory.segments.emplace_back(builder.makeConst(int32_t(0))); auto num = upTo(USABLE_MEMORY * 2); for (size_t i = 0; i < num; i++) { auto value = upTo(512); @@ -369,7 +398,8 @@ // } std::vector contents; contents.push_back( - builder.makeLocalSet(0, builder.makeConst(Literal(uint32_t(5381))))); + builder.makeLocalSet(0, builder.makeConst(uint32_t(5381)))); + auto zero = Literal::makeFromInt32(0, wasm.memory.indexType); for (Index i = 0; i < USABLE_MEMORY; i++) { contents.push_back(builder.makeLocalSet( 0, @@ -379,14 +409,10 @@ AddInt32, builder.makeBinary(ShlInt32, builder.makeLocalGet(0, Type::i32), - builder.makeConst(Literal(uint32_t(5)))), + builder.makeConst(uint32_t(5))), builder.makeLocalGet(0, Type::i32)), - builder.makeLoad(1, - false, - i, - 1, - builder.makeConst(Literal(uint32_t(0))), - Type::i32)))); + builder.makeLoad( + 1, false, i, 1, builder.makeConst(zero), Type::i32)))); } contents.push_back(builder.makeLocalGet(0, Type::i32)); auto* body = builder.makeBlock(contents); @@ -395,75 +421,161 @@ wasm.addExport( builder.makeExport(hasher->name, hasher->name, ExternalKind::Function)); // Export memory so JS fuzzing can use it - wasm.addExport(builder.makeExport("memory", "0", ExternalKind::Memory)); + if (!wasm.getExportOrNull("memory")) { + wasm.addExport(builder.makeExport("memory", "0", ExternalKind::Memory)); + } } void setupTable() { wasm.table.exists = true; - wasm.table.segments.emplace_back(builder.makeConst(Literal(int32_t(0)))); + wasm.table.initial = wasm.table.max = 0; + wasm.table.segments.emplace_back(builder.makeConst(int32_t(0))); } std::map> globalsByType; void setupGlobals() { - size_t index = 0; - for (auto type : getConcreteTypes()) { - auto num = upTo(3); - for (size_t i = 0; i < num; i++) { - auto* glob = - builder.makeGlobal(std::string("global$") + std::to_string(index++), - type, - makeConst(type), - Builder::Mutable); - wasm.addGlobal(glob); - globalsByType[type].push_back(glob->name); + // If there were initial wasm contents, there may be imported globals. That + // would be a problem in the fuzzer harness as we'd error if we do not + // provide them (and provide the proper type, etc.). + // Avoid that, so that all the standard fuzzing infrastructure can always + // run the wasm. + for (auto& global : wasm.globals) { + if (global->imported()) { + // Remove import info from imported globals, and give them a simple + // initializer. + global->module = global->base = Name(); + global->init = makeConst(global->type); + } else { + // If the initialization referred to an imported global, it no longer + // can point to the same global after we make it a non-imported global + // (as wasm doesn't allow that - you can only use an imported one). + if (global->init->is()) { + global->init = makeConst(global->type); + } } } + for (size_t index = upTo(MAX_GLOBALS); index > 0; --index) { + auto type = getConcreteType(); + auto global = + builder.makeGlobal(Names::getValidGlobalName(wasm, "global$"), + type, + makeConst(type), + Builder::Mutable); + globalsByType[type].push_back(global->name); + wasm.addGlobal(std::move(global)); + } } void setupEvents() { Index num = upTo(3); for (size_t i = 0; i < num; i++) { - // Events should have void return type and at least one param type - Type type = getConcreteType(); - std::vector params; - params.push_back(type); - Index numValues = upToSquared(MAX_PARAMS - 1); - for (Index i = 0; i < numValues + 1; i++) { - params.push_back(getConcreteType()); - } - auto* event = builder.makeEvent(std::string("event$") + std::to_string(i), - WASM_EVENT_ATTRIBUTE_EXCEPTION, - Signature(Type(params), Type::none)); - wasm.addEvent(event); + auto event = + builder.makeEvent(Names::getValidEventName(wasm, "event$"), + WASM_EVENT_ATTRIBUTE_EXCEPTION, + Signature(getControlFlowType(), Type::none)); + wasm.addEvent(std::move(event)); } } + void finalizeMemory() { + for (auto& segment : wasm.memory.segments) { + Address maxOffset = segment.data.size(); + if (!segment.isPassive) { + if (auto* offset = segment.offset->dynCast()) { + // Using a non-imported global in a segment offset is not valid in + // wasm. This can occur due to us making what used to be an imported + // global, in initial contents, be not imported any more. To fix that, + // replace such invalid things with a constant. + // Note that it is still possible in theory to have imported globals + // here, as we only do the above for initial contents. While the + // fuzzer doesn't do so as of the time of this comment, do a check + // for full generality, so that this code essentially does "if this + // is invalid wasm, fix it up." + if (!wasm.getGlobal(offset->name)->imported()) { + // TODO: It would be better to avoid segment overlap so that + // MemoryPacking can run. + segment.offset = + builder.makeConst(Literal::makeFromInt32(0, Type::i32)); + } + } + if (auto* offset = segment.offset->dynCast()) { + maxOffset = maxOffset + offset->value.getInteger(); + } + } + wasm.memory.initial = std::max( + wasm.memory.initial, + Address((maxOffset + Memory::kPageSize - 1) / Memory::kPageSize)); + } + wasm.memory.initial = std::max(wasm.memory.initial, USABLE_MEMORY); + // Avoid an unlimited memory size, which would make fuzzing very difficult + // as different VMs will run out of system memory in different ways. + if (wasm.memory.max == Memory::kUnlimitedSize) { + wasm.memory.max = wasm.memory.initial; + } + if (wasm.memory.max <= wasm.memory.initial) { + // To allow growth to work (which a testcase may assume), try to make the + // maximum larger than the initial. + // TODO: scan the wasm for grow instructions? + wasm.memory.max = + std::min(Address(wasm.memory.initial + 1), Address(Memory::kMaxSize32)); + } + // Avoid an imported memory (which the fuzz harness would need to handle). + wasm.memory.module = wasm.memory.base = Name(); + } + void finalizeTable() { - wasm.table.initial = wasm.table.segments[0].data.size(); + for (auto& segment : wasm.table.segments) { + // If the offset is a global that was imported (which is ok) but no + // longer is (not ok) we need to change that. + if (auto* offset = segment.offset->dynCast()) { + if (!wasm.getGlobal(offset->name)->imported()) { + // TODO: the segments must not overlap... + segment.offset = + builder.makeConst(Literal::makeFromInt32(0, Type::i32)); + } + } + Address maxOffset = segment.data.size(); + if (auto* offset = segment.offset->dynCast()) { + maxOffset = maxOffset + offset->value.getInteger(); + } + wasm.table.initial = std::max(wasm.table.initial, maxOffset); + } wasm.table.max = oneIn(2) ? Address(Table::kUnlimitedSize) : wasm.table.initial; + // Avoid an imported table (which the fuzz harness would need to handle). + wasm.table.module = wasm.table.base = Name(); } - const Name HANG_LIMIT_GLOBAL = "hangLimit"; + Name HANG_LIMIT_GLOBAL; + + void prepareHangLimitSupport() { + HANG_LIMIT_GLOBAL = Names::getValidGlobalName(wasm, "hangLimit"); + } void addHangLimitSupport() { - auto* glob = - builder.makeGlobal(HANG_LIMIT_GLOBAL, - Type::i32, - builder.makeConst(Literal(int32_t(HANG_LIMIT))), - Builder::Mutable); - wasm.addGlobal(glob); + auto glob = builder.makeGlobal(HANG_LIMIT_GLOBAL, + Type::i32, + builder.makeConst(int32_t(HANG_LIMIT)), + Builder::Mutable); + wasm.addGlobal(std::move(glob)); + Name exportName = "hangLimitInitializer"; + auto funcName = Names::getValidFunctionName(wasm, exportName); auto* func = new Function; - func->name = "hangLimitInitializer"; + func->name = funcName; func->sig = Signature(Type::none, Type::none); - func->body = builder.makeGlobalSet( - glob->name, builder.makeConst(Literal(int32_t(HANG_LIMIT)))); + func->body = builder.makeGlobalSet(HANG_LIMIT_GLOBAL, + builder.makeConst(int32_t(HANG_LIMIT))); wasm.addFunction(func); + if (wasm.getExportOrNull(exportName)) { + // We must export our actual hang limit function - remove anything + // previously existing. + wasm.removeExport(exportName); + } auto* export_ = new Export; - export_->name = func->name; + export_->name = exportName; export_->value = func->name; export_->kind = ExternalKind::Function; wasm.addExport(export_); @@ -491,74 +603,71 @@ HANG_LIMIT_GLOBAL, builder.makeBinary(BinaryOp::SubInt32, builder.makeGlobalGet(HANG_LIMIT_GLOBAL, Type::i32), - builder.makeConst(Literal(int32_t(1)))))); + builder.makeConst(int32_t(1))))); } - void addDeNanSupport() { - auto add = [&](Name name, Type type, Literal literal, BinaryOp op) { - auto* func = new Function; - func->name = name; - func->sig = Signature(type, type); - func->body = builder.makeIf( - builder.makeBinary( - op, builder.makeLocalGet(0, type), builder.makeLocalGet(0, type)), - builder.makeLocalGet(0, type), - builder.makeConst(literal)); - wasm.addFunction(func); - }; - add("deNan32", Type::f32, Literal(float(0)), EqFloat32); - add("deNan64", Type::f64, Literal(double(0)), EqFloat64); - } + // function generation state - Expression* makeDeNanOp(Expression* expr) { - if (allowNaNs) { - return expr; - } - if (expr->type == Type::f32) { - return builder.makeCall("deNan32", {expr}, Type::f32); - } else if (expr->type == Type::f64) { - return builder.makeCall("deNan64", {expr}, Type::f64); + struct FunctionCreationContext { + TranslateToFuzzReader& parent; + + Function* func; + + std::vector breakableStack; // things we can break to + Index labelIndex = 0; + + // a list of things relevant to computing the odds of an infinite loop, + // which we try to minimize the risk of + std::vector hangStack; + + // type => list of locals with that type + std::map> typeLocals; + + FunctionCreationContext(TranslateToFuzzReader& parent, Function* func) + : parent(parent), func(func) { + parent.funcContext = this; } - return expr; // unreachable etc. is fine - } - // function generation state + ~FunctionCreationContext() { + if (parent.HANG_LIMIT > 0) { + parent.addHangLimitChecks(func); + } + assert(breakableStack.empty()); + assert(hangStack.empty()); + parent.funcContext = nullptr; + } + }; - Function* func = nullptr; - std::vector breakableStack; // things we can break to - Index labelIndex; - - // a list of things relevant to computing the odds of an infinite loop, - // which we try to minimize the risk of - std::vector hangStack; + FunctionCreationContext* funcContext = nullptr; - std::map> - typeLocals; // type => list of locals with that type + Index numAddedFunctions = 0; Function* addFunction() { LOGGING_PERCENT = upToSquared(100); - Index num = wasm.functions.size(); - func = new Function; - func->name = std::string("func_") + std::to_string(num); - assert(typeLocals.empty()); + auto* func = new Function; + func->name = Names::getValidFunctionName(wasm, "func"); + FunctionCreationContext context(*this, func); + assert(funcContext->typeLocals.empty()); Index numParams = upToSquared(MAX_PARAMS); std::vector params; params.reserve(numParams); for (Index i = 0; i < numParams; i++) { - auto type = getConcreteType(); - typeLocals[type].push_back(params.size()); + auto type = getSingleConcreteType(); + funcContext->typeLocals[type].push_back(params.size()); params.push_back(type); } - func->sig = Signature(Type(params), getReachableType()); + func->sig = Signature(Type(params), getControlFlowType()); Index numVars = upToSquared(MAX_VARS); for (Index i = 0; i < numVars; i++) { auto type = getConcreteType(); - typeLocals[type].push_back(params.size() + func->vars.size()); + if (type.isRef() && !type.isNullable()) { + // We can't use a nullable type as a var, which is null-initialized. + continue; + } + funcContext->typeLocals[type].push_back(params.size() + + func->vars.size()); func->vars.push_back(type); } - labelIndex = 0; - assert(breakableStack.empty()); - assert(hangStack.empty()); // with small chance, make the body unreachable auto bodyType = func->sig.results; if (oneIn(10)) { @@ -570,25 +679,27 @@ } else { func->body = make(bodyType); } - // Recombinations create duplicate code patterns. - recombine(func); - // Mutations add random small changes, which can subtly break duplicate code - // patterns. - mutate(func); - // TODO: liveness operations on gets, with some prob alter a get to one with - // more possible sets - // Recombination, mutation, etc. can break validation; fix things up after. - fixLabels(func); - // Add hang limit checks after all other operations on the function body. - if (HANG_LIMIT > 0) { - addHangLimitChecks(func); + // Our OOB checks are already in the code, and if we recombine/mutate we + // may end up breaking them. TODO: do them after the fact, like with the + // hang limit checks. + if (allowOOB) { + // Recombinations create duplicate code patterns. + recombine(func); + // Mutations add random small changes, which can subtly break duplicate + // code patterns. + mutate(func); + // TODO: liveness operations on gets, with some prob alter a get to one + // with more possible sets. + // Recombination, mutation, etc. can break validation; fix things up + // after. + fixLabels(func); } - assert(breakableStack.empty()); - assert(hangStack.empty()); + // Add hang limit checks after all other operations on the function body. wasm.addFunction(func); // export some, but not all (to allow inlining etc.). make sure to // export at least one, though, to keep each testcase interesting - if (num == 0 || oneIn(2)) { + if ((numAddedFunctions == 0 || oneIn(2)) && + !wasm.getExportOrNull(func->name)) { auto* export_ = new Export; export_->name = func->name; export_->value = func->name; @@ -599,8 +710,7 @@ while (oneIn(3) && !finishedInput) { wasm.table.segments[0].data.push_back(func->name); } - // cleanup - typeLocals.clear(); + numAddedFunctions++; return func; } @@ -697,7 +807,16 @@ void visitExpression(Expression* curr) { if (parent.oneIn(10)) { - // Replace it! + // For constants, perform only a small tweaking in some cases. + if (auto* c = curr->dynCast()) { + if (parent.oneIn(2)) { + c->value = parent.tweak(c->value); + return; + } + } + // TODO: more minor tweaks to immediates, like making a load atomic or + // not, changing an offset, etc. + // Perform a general replacement. // (This is not always valid due to nesting of labels, but // we'll fix that up later.) replaceCurrent(parent.make(curr->type)); @@ -752,6 +871,8 @@ void visitBreak(Break* curr) { replaceIfInvalid(curr->name); } + void visitBrOnExn(BrOnExn* curr) { replaceIfInvalid(curr->name); } + bool replaceIfInvalid(Name target) { if (!hasBreakTarget(target)) { // There is no valid parent, replace with something trivially safe. @@ -770,17 +891,17 @@ Index i = controlFlowStack.size() - 1; while (1) { auto* curr = controlFlowStack[i]; - if (Block* block = curr->dynCast()) { + if (auto* block = curr->dynCast()) { if (name == block->name) { return true; } - } else if (Loop* loop = curr->dynCast()) { + } else if (auto* loop = curr->dynCast()) { if (name == loop->name) { return true; } } else { - // an if, ignorable - assert(curr->is()); + // an if or a try, ignorable + assert(curr->is() || curr->is()); } if (i == 0) { return false; @@ -794,14 +915,87 @@ ReFinalize().walkFunctionInModule(func, &wasm); } + void modifyInitialFunctions() { + if (wasm.functions.empty()) { + return; + } + // Pick a chance to fuzz the contents of a function. + const int RESOLUTION = 10; + auto chance = upTo(RESOLUTION + 1); + for (auto& ref : wasm.functions) { + auto* func = ref.get(); + FunctionCreationContext context(*this, func); + if (func->imported()) { + // We can't allow extra imports, as the fuzzing infrastructure wouldn't + // know what to provide. + func->module = func->base = Name(); + func->body = make(func->sig.results); + } + // Optionally, fuzz the function contents. + if (upTo(RESOLUTION) >= chance) { + dropToLog(func); + // TODO add some locals? and the rest of addFunction's operations? + // TODO: interposition, replace initial a(b) with a(RANDOM_THING(b)) + // TODO: if we add OOB checks after creation, then we can do it on + // initial contents too, and it may be nice to *not* run these + // passes, like we don't run them on new functions. But, we may + // still want to run them some of the time, at least, so that we + // check variations on initial testcases even at the risk of OOB. + recombine(func); + mutate(func); + fixLabels(func); + } + } + // Remove a start function - the fuzzing harness expects code to run only + // from exports. + wasm.start = Name(); + } + + // Initial wasm contents may have come from a test that uses the drop pattern: + // + // (drop ..something interesting..) + // + // The dropped interesting thing is optimized to some other interesting thing + // by a pass, and we verify it is the expected one. But this does not use the + // value in a way the fuzzer can notice. Replace some drops with a logging + // operation instead. + void dropToLog(Function* func) { + // Don't always do this. + if (oneIn(2)) { + return; + } + struct Modder : public PostWalker { + Module& wasm; + TranslateToFuzzReader& parent; + + Modder(Module& wasm, TranslateToFuzzReader& parent) + : wasm(wasm), parent(parent) {} + + void visitDrop(Drop* curr) { + if (parent.isLoggableType(curr->value->type) && parent.oneIn(2)) { + replaceCurrent(parent.builder.makeCall(std::string("log-") + + curr->value->type.toString(), + {curr->value}, + Type::none)); + } + } + }; + Modder modder(wasm, *this); + modder.walk(func->body); + } + // the fuzzer external interface sends in zeros (simpler to compare // across invocations from JS or wasm-opt etc.). Add invocations in // the wasm, so they run everywhere void addInvocations(Function* func) { + Name name = func->name.str + std::string("_invoker"); + if (wasm.getFunctionOrNull(name) || wasm.getExportOrNull(name)) { + return; + } std::vector invocations; while (oneIn(2) && !finishedInput) { std::vector args; - for (auto type : func->sig.params.expand()) { + for (const auto& type : func->sig.params) { args.push_back(makeConst(type)); } Expression* invoke = @@ -819,21 +1013,26 @@ return; } auto* invoker = new Function; - invoker->name = func->name.str + std::string("_invoker"); + invoker->name = name; invoker->sig = Signature(Type::none, Type::none); invoker->body = builder.makeBlock(invocations); wasm.addFunction(invoker); auto* export_ = new Export; - export_->name = invoker->name; - export_->value = invoker->name; + export_->name = name; + export_->value = name; export_->kind = ExternalKind::Function; wasm.addExport(export_); } Name makeLabel() { - return std::string("label$") + std::to_string(labelIndex++); + return std::string("label$") + std::to_string(funcContext->labelIndex++); } + // Weighting for the core make* methods. Some nodes are important enough that + // we should do them quite often. + static const size_t VeryImportant = 4; + static const size_t Important = 2; + // always call the toplevel make(type) command, not the internal specific ones int nesting = 0; @@ -860,24 +1059,13 @@ } nesting++; Expression* ret = nullptr; - switch (type.getSingle()) { - case Type::i32: - case Type::i64: - case Type::f32: - case Type::f64: - case Type::v128: - case Type::funcref: - case Type::anyref: - case Type::nullref: - case Type::exnref: - ret = _makeConcrete(type); - break; - case Type::none: - ret = _makenone(); - break; - case Type::unreachable: - ret = _makeunreachable(); - break; + if (type.isConcrete()) { + ret = _makeConcrete(type); + } else if (type == Type::none) { + ret = _makenone(); + } else { + assert(type == Type::unreachable); + ret = _makeunreachable(); } // we should create the right type of thing assert(Type::isSubType(ret->type, type)); @@ -886,52 +1074,56 @@ } Expression* _makeConcrete(Type type) { - auto choice = upTo(100); - if (choice < 10) { - return makeConst(type); - } - if (choice < 30) { - return makeLocalSet(type); - } - if (choice < 50) { - return makeLocalGet(type); - } - if (choice < 60) { - return makeBlock(type); - } - if (choice < 70) { - return makeIf(type); - } - if (choice < 80) { - return makeLoop(type); + bool canMakeControlFlow = !type.isTuple() || wasm.features.hasMultivalue(); + using Self = TranslateToFuzzReader; + FeatureOptions options; + using WeightedOption = decltype(options)::WeightedOption; + options.add(FeatureSet::MVP, + WeightedOption{&Self::makeLocalGet, VeryImportant}, + WeightedOption{&Self::makeLocalSet, VeryImportant}, + WeightedOption{&Self::makeGlobalGet, Important}, + WeightedOption{&Self::makeConst, Important}); + if (canMakeControlFlow) { + options + .add(FeatureSet::MVP, + WeightedOption{&Self::makeBlock, Important}, + WeightedOption{&Self::makeIf, Important}, + WeightedOption{&Self::makeLoop, Important}, + WeightedOption{&Self::makeBreak, Important}, + &Self::makeCall, + &Self::makeCallIndirect) + .add(FeatureSet::TypedFunctionReferences | FeatureSet::ReferenceTypes, + &Self::makeCallRef); } - if (choice < 90) { - return makeBreak(type); + if (type.isSingle()) { + options + .add(FeatureSet::MVP, + WeightedOption{&Self::makeUnary, Important}, + WeightedOption{&Self::makeBinary, Important}, + &Self::makeSelect) + .add(FeatureSet::Multivalue, &Self::makeTupleExtract); + } + if (type.isSingle() && !type.isRef()) { + options.add(FeatureSet::MVP, {&Self::makeLoad, Important}); + options.add(FeatureSet::SIMD, &Self::makeSIMD); } - using Self = TranslateToFuzzReader; - auto options = FeatureOptions() - .add(FeatureSet::MVP, - &Self::makeBlock, - &Self::makeIf, - &Self::makeLoop, - &Self::makeBreak, - &Self::makeCall, - &Self::makeCallIndirect, - &Self::makeLocalGet, - &Self::makeLocalSet, - &Self::makeLoad, - &Self::makeConst, - &Self::makeUnary, - &Self::makeBinary, - &Self::makeSelect, - &Self::makeGlobalGet) - .add(FeatureSet::SIMD, &Self::makeSIMD); - if (type == Type::i32 || type == Type::i64) { + if (type.isInteger()) { options.add(FeatureSet::Atomics, &Self::makeAtomic); } if (type == Type::i32) { options.add(FeatureSet::ReferenceTypes, &Self::makeRefIsNull); + options.add(FeatureSet::ReferenceTypes | FeatureSet::GC, + &Self::makeRefEq, + &Self::makeI31Get); + } + if (type.isTuple()) { + options.add(FeatureSet::Multivalue, &Self::makeTupleMake); + } + if (type == Type::i31ref) { + options.add(FeatureSet::ReferenceTypes | FeatureSet::GC, + &Self::makeI31New); } + // TODO: struct.get and other GC things return (this->*pick(options))(type); } @@ -944,75 +1136,53 @@ return makeMemoryHashLogging(); } } - choice = upTo(100); - if (choice < 50) { - return makeLocalSet(Type::none); - } - if (choice < 60) { - return makeBlock(Type::none); - } - if (choice < 70) { - return makeIf(Type::none); - } - if (choice < 80) { - return makeLoop(Type::none); - } - if (choice < 90) { - return makeBreak(Type::none); - } using Self = TranslateToFuzzReader; - auto options = FeatureOptions() - .add(FeatureSet::MVP, - &Self::makeBlock, - &Self::makeIf, - &Self::makeLoop, - &Self::makeBreak, - &Self::makeCall, - &Self::makeCallIndirect, - &Self::makeLocalSet, - &Self::makeStore, - &Self::makeDrop, - &Self::makeNop, - &Self::makeGlobalSet) - .add(FeatureSet::BulkMemory, &Self::makeBulkMemory) - .add(FeatureSet::Atomics, &Self::makeAtomic); + auto options = FeatureOptions(); + using WeightedOption = decltype(options)::WeightedOption; + options + .add(FeatureSet::MVP, + WeightedOption{&Self::makeLocalSet, VeryImportant}, + WeightedOption{&Self::makeBlock, Important}, + WeightedOption{&Self::makeIf, Important}, + WeightedOption{&Self::makeLoop, Important}, + WeightedOption{&Self::makeBreak, Important}, + WeightedOption{&Self::makeStore, Important}, + &Self::makeCall, + &Self::makeCallIndirect, + &Self::makeDrop, + &Self::makeNop, + &Self::makeGlobalSet) + .add(FeatureSet::BulkMemory, &Self::makeBulkMemory) + .add(FeatureSet::Atomics, &Self::makeAtomic) + .add(FeatureSet::TypedFunctionReferences | FeatureSet::ReferenceTypes, + &Self::makeCallRef); return (this->*pick(options))(Type::none); } Expression* _makeunreachable() { - switch (upTo(15)) { - case 0: - return makeBlock(Type::unreachable); - case 1: - return makeIf(Type::Type::unreachable); - case 2: - return makeLoop(Type::unreachable); - case 3: - return makeBreak(Type::unreachable); - case 4: - return makeCall(Type::unreachable); - case 5: - return makeCallIndirect(Type::unreachable); - case 6: - return makeLocalSet(Type::unreachable); - case 7: - return makeStore(Type::unreachable); - case 8: - return makeUnary(Type::unreachable); - case 9: - return makeBinary(Type::unreachable); - case 10: - return makeSelect(Type::unreachable); - case 11: - return makeSwitch(Type::unreachable); - case 12: - return makeDrop(Type::unreachable); - case 13: - return makeReturn(Type::unreachable); - case 14: - return makeUnreachable(Type::unreachable); - } - WASM_UNREACHABLE("unexpected value"); + using Self = TranslateToFuzzReader; + auto options = FeatureOptions(); + using WeightedOption = decltype(options)::WeightedOption; + options + .add(FeatureSet::MVP, + WeightedOption{&Self::makeLocalSet, VeryImportant}, + WeightedOption{&Self::makeBlock, Important}, + WeightedOption{&Self::makeIf, Important}, + WeightedOption{&Self::makeLoop, Important}, + WeightedOption{&Self::makeBreak, Important}, + WeightedOption{&Self::makeStore, Important}, + WeightedOption{&Self::makeUnary, Important}, + WeightedOption{&Self::makeBinary, Important}, + WeightedOption{&Self::makeUnreachable, Important}, + &Self::makeCall, + &Self::makeCallIndirect, + &Self::makeSelect, + &Self::makeSwitch, + &Self::makeDrop, + &Self::makeReturn) + .add(FeatureSet::TypedFunctionReferences | FeatureSet::ReferenceTypes, + &Self::makeCallRef); + return (this->*pick(options))(Type::unreachable); } // make something with no chance of infinite recursion @@ -1028,8 +1198,8 @@ } assert(type == Type::unreachable); Expression* ret = nullptr; - if (func->sig.results.isConcrete()) { - ret = makeTrivial(func->sig.results); + if (funcContext->func->sig.results.isConcrete()) { + ret = makeTrivial(funcContext->func->sig.results); } return builder.makeReturn(ret); } @@ -1040,7 +1210,7 @@ auto* ret = builder.makeBlock(); ret->type = type; // so we have it during child creation ret->name = makeLabel(); - breakableStack.push_back(ret); + funcContext->breakableStack.push_back(ret); Index num = upToSquared(BLOCK_FACTOR - 1); // we add another later if (nesting >= NESTING_LIMIT / 2) { // smaller blocks past the limit @@ -1065,7 +1235,7 @@ } else { ret->list.push_back(make(type)); } - breakableStack.pop_back(); + funcContext->breakableStack.pop_back(); if (type.isConcrete()) { ret->finalize(type); } else { @@ -1083,8 +1253,8 @@ auto* ret = wasm.allocator.alloc(); ret->type = type; // so we have it during child creation ret->name = makeLabel(); - breakableStack.push_back(ret); - hangStack.push_back(ret); + funcContext->breakableStack.push_back(ret); + funcContext->hangStack.push_back(ret); // either create random content, or do something more targeted if (oneIn(2)) { ret->body = makeMaybeBlock(type); @@ -1097,8 +1267,8 @@ list.push_back(make(type)); // final element, so we have the right type ret->body = builder.makeBlock(list, type); } - breakableStack.pop_back(); - hangStack.pop_back(); + funcContext->breakableStack.pop_back(); + funcContext->hangStack.pop_back(); ret->finalize(type); return ret; } @@ -1130,26 +1300,26 @@ Expression* makeIf(Type type) { auto* condition = makeCondition(); - hangStack.push_back(nullptr); + funcContext->hangStack.push_back(nullptr); auto* ret = buildIf({condition, makeMaybeBlock(type), makeMaybeBlock(type)}, type); - hangStack.pop_back(); + funcContext->hangStack.pop_back(); return ret; } Expression* makeBreak(Type type) { - if (breakableStack.empty()) { + if (funcContext->breakableStack.empty()) { return makeTrivial(type); } Expression* condition = nullptr; if (type != Type::unreachable) { - hangStack.push_back(nullptr); + funcContext->hangStack.push_back(nullptr); condition = makeCondition(); } // we need to find a proper target to break to; try a few times int tries = TRIES; while (tries-- > 0) { - auto* target = pick(breakableStack); + auto* target = pick(funcContext->breakableStack); auto name = getTargetName(target); auto valueType = getTargetType(target); if (type.isConcrete()) { @@ -1159,19 +1329,19 @@ continue; } auto* ret = builder.makeBreak(name, make(type), condition); - hangStack.pop_back(); + funcContext->hangStack.pop_back(); return ret; } else if (type == Type::none) { - if (valueType != Type::Type::none) { + if (valueType != Type::none) { // we need to break to a proper place continue; } auto* ret = builder.makeBreak(name, nullptr, condition); - hangStack.pop_back(); + funcContext->hangStack.pop_back(); return ret; } else { assert(type == Type::unreachable); - if (valueType != Type::Type::none) { + if (valueType != Type::none) { // we need to break to a proper place continue; } @@ -1179,9 +1349,9 @@ // to a loop, we prefer there to be a condition along the // way, to reduce the chance of infinite looping size_t conditions = 0; - int i = hangStack.size(); + int i = funcContext->hangStack.size(); while (--i >= 0) { - auto* item = hangStack[i]; + auto* item = funcContext->hangStack[i]; if (item == nullptr) { conditions++; } else if (auto* loop = item->cast()) { @@ -1215,34 +1385,33 @@ } // we failed to find something if (type != Type::unreachable) { - hangStack.pop_back(); + funcContext->hangStack.pop_back(); } return makeTrivial(type); } Expression* makeCall(Type type) { - // seems ok, go on int tries = TRIES; bool isReturn; while (tries-- > 0) { - Function* target = func; + Function* target = funcContext->func; if (!wasm.functions.empty() && !oneIn(wasm.functions.size())) { target = pick(wasm.functions).get(); } isReturn = type == Type::unreachable && wasm.features.hasTailCall() && - func->sig.results == target->sig.results; + funcContext->func->sig.results == target->sig.results; if (target->sig.results != type && !isReturn) { continue; } // we found one! std::vector args; - for (auto argType : target->sig.params.expand()) { + for (const auto& argType : target->sig.params) { args.push_back(make(argType)); } return builder.makeCall(target->name, args, type, isReturn); } // we failed to find something - return make(type); + return makeTrivial(type); } Expression* makeCallIndirect(Type type) { @@ -1259,7 +1428,7 @@ // TODO: handle unreachable targetFn = wasm.getFunction(data[i]); isReturn = type == Type::unreachable && wasm.features.hasTailCall() && - func->sig.results == targetFn->sig.results; + funcContext->func->sig.results == targetFn->sig.results; if (targetFn->sig.results == type || isReturn) { break; } @@ -1268,26 +1437,55 @@ i = 0; } if (i == start) { - return make(type); + return makeTrivial(type); } } // with high probability, make sure the type is valid otherwise, most are // going to trap Expression* target; if (!allowOOB || !oneIn(10)) { - target = builder.makeConst(Literal(int32_t(i))); + target = builder.makeConst(int32_t(i)); } else { target = make(Type::i32); } std::vector args; - for (auto type : targetFn->sig.params.expand()) { + for (const auto& type : targetFn->sig.params) { args.push_back(make(type)); } return builder.makeCallIndirect(target, args, targetFn->sig, isReturn); } + Expression* makeCallRef(Type type) { + // look for a call target with the right type + Function* target; + bool isReturn; + size_t i = 0; + while (1) { + if (i == TRIES || wasm.functions.empty()) { + // We can't find a proper target, give up. + return makeTrivial(type); + } + // TODO: handle unreachable + target = wasm.functions[upTo(wasm.functions.size())].get(); + isReturn = type == Type::unreachable && wasm.features.hasTailCall() && + funcContext->func->sig.results == target->sig.results; + if (target->sig.results == type || isReturn) { + break; + } + i++; + } + std::vector args; + for (const auto& type : target->sig.params) { + args.push_back(make(type)); + } + auto targetType = Type(HeapType(target->sig), Nullable); + // TODO: half the time make a completely random item with that type. + return builder.makeCallRef( + builder.makeRefFunc(target->name, targetType), args, type, isReturn); + } + Expression* makeLocalGet(Type type) { - auto& locals = typeLocals[type]; + auto& locals = funcContext->typeLocals[type]; if (locals.empty()) { return makeConst(type); } @@ -1302,7 +1500,7 @@ } else { valueType = getConcreteType(); } - auto& locals = typeLocals[valueType]; + auto& locals = funcContext->typeLocals[valueType]; if (locals.empty()) { return makeTrivial(type); } @@ -1314,33 +1512,90 @@ } } + // Some globals are for internal use, and should not be modified by random + // fuzz code. + bool isValidGlobal(Name name) { return name != HANG_LIMIT_GLOBAL; } + Expression* makeGlobalGet(Type type) { - auto& globals = globalsByType[type]; - if (globals.empty()) { + auto it = globalsByType.find(type); + if (it == globalsByType.end() || it->second.empty()) { return makeConst(type); } - return builder.makeGlobalGet(pick(globals), type); + auto name = pick(it->second); + if (isValidGlobal(name)) { + return builder.makeGlobalGet(name, type); + } else { + return makeTrivial(type); + } } Expression* makeGlobalSet(Type type) { assert(type == Type::none); type = getConcreteType(); - auto& globals = globalsByType[type]; - if (globals.empty()) { - return makeTrivial(Type::Type::none); + auto it = globalsByType.find(type); + if (it == globalsByType.end() || it->second.empty()) { + return makeTrivial(Type::none); } - auto* value = make(type); - return builder.makeGlobalSet(pick(globals), value); + auto name = pick(it->second); + if (isValidGlobal(name)) { + return builder.makeGlobalSet(name, make(type)); + } else { + return makeTrivial(Type::none); + } + } + + Expression* makeTupleMake(Type type) { + assert(wasm.features.hasMultivalue()); + assert(type.isTuple()); + std::vector elements; + for (const auto& t : type) { + elements.push_back(make(t)); + } + return builder.makeTupleMake(std::move(elements)); + } + + Expression* makeTupleExtract(Type type) { + assert(wasm.features.hasMultivalue()); + assert(type.isSingle() && type.isConcrete()); + Type tupleType = getTupleType(); + + // Find indices from which we can extract `type` + std::vector extractIndices; + size_t i = 0; + for (const auto& t : tupleType) { + if (t == type) { + extractIndices.push_back(i); + } + ++i; + } + + // If there are none, inject one + if (extractIndices.size() == 0) { + std::vector newElements(tupleType.begin(), tupleType.end()); + size_t injected = upTo(newElements.size()); + newElements[injected] = type; + tupleType = Type(newElements); + extractIndices.push_back(injected); + } + + Index index = pick(extractIndices); + Expression* child = make(tupleType); + return builder.makeTupleExtract(child, index); } Expression* makePointer() { - auto* ret = make(Type::i32); + auto* ret = make(wasm.memory.indexType); // with high probability, mask the pointer so it's in a reasonable // range. otherwise, most pointers are going to be out of range and // most memory ops will just trap if (!allowOOB || !oneIn(10)) { - ret = builder.makeBinary( - AndInt32, ret, builder.makeConst(Literal(int32_t(USABLE_MEMORY - 1)))); + if (wasm.memory.is64()) { + ret = builder.makeBinary( + AndInt64, ret, builder.makeConst(int64_t(USABLE_MEMORY - 1))); + } else { + ret = builder.makeBinary( + AndInt32, ret, builder.makeConst(int32_t(USABLE_MEMORY - 1))); + } } return ret; } @@ -1348,7 +1603,7 @@ Expression* makeNonAtomicLoad(Type type) { auto offset = logify(get()); auto ptr = makePointer(); - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: { bool signed_ = get() & 1; switch (upTo(3)) { @@ -1392,9 +1647,11 @@ 16, false, offset, pick(1, 2, 4, 8, 16), ptr, type); } case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: case Type::unreachable: WASM_UNREACHABLE("invalid type"); @@ -1454,7 +1711,7 @@ auto offset = logify(get()); auto ptr = makePointer(); auto value = make(type); - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: { switch (upTo(3)) { case 0: @@ -1496,9 +1753,11 @@ 16, offset, pick(1, 2, 4, 8, 16), ptr, value, type); } case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: case Type::unreachable: WASM_UNREACHABLE("invalid type"); @@ -1528,7 +1787,44 @@ return store; } - Literal makeArbitraryLiteral(Type type) { + // Makes a small change to a constant value. + Literal tweak(Literal value) { + auto type = value.type; + if (type.isVector()) { + // TODO: tweak each lane? + return value; + } + // +- 1 + switch (upTo(5)) { + case 0: + value = value.add(Literal::makeNegOne(type)); + break; + case 1: + value = value.add(Literal::makeOne(type)); + break; + default: { + } + } + // For floats, optionally add a non-integer adjustment in +- [-1, 1] + if (type.isFloat() && oneIn(2)) { + const int RANGE = 1000; + auto RANGE_LITERAL = Literal::makeFromInt32(RANGE, type); + // adjustment -> [0, 2 * RANGE] + auto adjustment = Literal::makeFromInt32(upTo(2 * RANGE + 1), type); + // adjustment -> [-RANGE, RANGE] + adjustment = adjustment.sub(RANGE_LITERAL); + // adjustment -> [-1, 1] + adjustment = adjustment.div(RANGE_LITERAL); + value = value.add(adjustment); + } + // Flip sign. + if (oneIn(2)) { + value = value.mul(Literal::makeNegOne(type)); + } + return value; + } + + Literal makeLiteral(Type type) { if (type == Type::v128) { // generate each lane individually for random lane interpretation switch (upTo(6)) { @@ -1582,7 +1878,7 @@ switch (upTo(4)) { case 0: { // totally random, entire range - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(get32()); case Type::i64: @@ -1593,9 +1889,11 @@ return Literal(getDouble()); case Type::v128: case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: case Type::unreachable: WASM_UNREACHABLE("invalid type"); @@ -1627,7 +1925,7 @@ default: WASM_UNREACHABLE("invalid value"); } - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(int32_t(small)); case Type::i64: @@ -1638,9 +1936,11 @@ return Literal(double(small)); case Type::v128: case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: case Type::unreachable: WASM_UNREACHABLE("unexpected type"); @@ -1650,7 +1950,7 @@ case 2: { // special values Literal value; - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: value = Literal(pick(0, @@ -1681,7 +1981,8 @@ std::numeric_limits::max())); break; case Type::f32: - value = Literal(pick(0, + value = Literal(pick(0.0f, + -0.0f, std::numeric_limits::min(), std::numeric_limits::max(), std::numeric_limits::min(), @@ -1692,7 +1993,8 @@ std::numeric_limits::max())); break; case Type::f64: - value = Literal(pick(0, + value = Literal(pick(0.0, + -0.0, std::numeric_limits::min(), std::numeric_limits::max(), std::numeric_limits::min(), @@ -1706,26 +2008,21 @@ break; case Type::v128: case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: case Type::unreachable: WASM_UNREACHABLE("unexpected type"); } - // tweak around special values - if (oneIn(3)) { // +- 1 - value = value.add(Literal::makeFromInt32(upTo(3) - 1, type)); - } - if (oneIn(2)) { // flip sign - value = value.mul(Literal::makeFromInt32(-1, type)); - } - return value; + return tweak(value); } case 3: { // powers of 2 Literal value; - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: value = Literal(int32_t(1) << upTo(32)); break; @@ -1740,29 +2037,19 @@ break; case Type::v128: case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: case Type::unreachable: WASM_UNREACHABLE("unexpected type"); } - // maybe negative - if (oneIn(2)) { - value = value.mul(Literal::makeFromInt32(-1, type)); - } - return value; + return tweak(value); } } - WASM_UNREACHABLE("invalide value"); - } - - Literal makeLiteral(Type type) { - auto ret = makeArbitraryLiteral(type); - if (!allowNaNs && ret.isNaN()) { - ret = Literal::makeFromInt32(0, type); - } - return ret; + WASM_UNREACHABLE("invalid value"); } Expression* makeConst(Type type) { @@ -1772,16 +2059,48 @@ // 'func' is the pointer to the last created function and can be null when // we set up globals (before we create any functions), in which case we // can't use ref.func. - if (type == Type::funcref && func && oneIn(2)) { + if (type == Type::funcref && funcContext && oneIn(2)) { // First set to target to the last created function, and try to select // among other existing function if possible - Function* target = func; + Function* target = funcContext->func; if (!wasm.functions.empty() && !oneIn(wasm.functions.size())) { target = pick(wasm.functions).get(); } - return builder.makeRefFunc(target->name); + auto type = Type(HeapType(target->sig), Nullable); + return builder.makeRefFunc(target->name, type); } - return builder.makeRefNull(); + if (type == Type::i31ref) { + return builder.makeI31New(makeConst(Type::i32)); + } + if (oneIn(2) && type.isNullable()) { + return builder.makeRefNull(type); + } + // TODO: randomize the order + for (auto& func : wasm.functions) { + // FIXME: RefFunc type should be non-nullable, but we emit nullable + // types for now. + if (type == Type(HeapType(func->sig), Nullable)) { + return builder.makeRefFunc(func->name, type); + } + } + // We failed to find a function, so create a null reference if we can. + if (type.isNullable()) { + return builder.makeRefNull(type); + } + // Last resort: create a function. + auto* func = wasm.addFunction(builder.makeFunction( + Names::getValidFunctionName(wasm, "ref_func_target"), + type.getHeapType().getSignature(), + {}, + builder.makeUnreachable())); + return builder.makeRefFunc(func->name, type); + } + if (type.isTuple()) { + std::vector operands; + for (const auto& t : type) { + operands.push_back(makeConst(t)); + } + return builder.makeTupleMake(std::move(operands)); } auto* ret = wasm.allocator.alloc(); ret->value = makeLiteral(type); @@ -1794,10 +2113,10 @@ } Expression* makeUnary(Type type) { + assert(!type.isTuple()); if (type == Type::unreachable) { - if (auto* unary = makeUnary(getConcreteType())->dynCast()) { - return makeDeNanOp( - builder.makeUnary(unary->op, make(Type::unreachable))); + if (auto* unary = makeUnary(getSingleConcreteType())->dynCast()) { + return builder.makeUnary(unary->op, make(Type::unreachable)); } // give up return makeTrivial(type); @@ -1807,9 +2126,11 @@ return makeTrivial(type); } - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: { - switch (getConcreteType().getSingle()) { + auto singleConcreteType = getSingleConcreteType(); + TODO_SINGLE_COMPOUND(singleConcreteType); + switch (singleConcreteType.getBasic()) { case Type::i32: { auto op = pick( FeatureOptions() @@ -1847,15 +2168,15 @@ AnyTrueVecI16x8, AllTrueVecI16x8, AnyTrueVecI32x4, - AllTrueVecI32x4, - AnyTrueVecI64x2, - AllTrueVecI64x2), + AllTrueVecI32x4), make(Type::v128)}); } case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: return makeTrivial(type); case Type::none: case Type::unreachable: @@ -1905,50 +2226,50 @@ case Type::f32: { switch (upTo(4)) { case 0: - return makeDeNanOp(buildUnary({pick(NegFloat32, - AbsFloat32, - CeilFloat32, - FloorFloat32, - TruncFloat32, - NearestFloat32, - SqrtFloat32), - make(Type::f32)})); + return buildUnary({pick(NegFloat32, + AbsFloat32, + CeilFloat32, + FloorFloat32, + TruncFloat32, + NearestFloat32, + SqrtFloat32), + make(Type::f32)}); case 1: - return makeDeNanOp(buildUnary({pick(ConvertUInt32ToFloat32, - ConvertSInt32ToFloat32, - ReinterpretInt32), - make(Type::i32)})); + return buildUnary({pick(ConvertUInt32ToFloat32, + ConvertSInt32ToFloat32, + ReinterpretInt32), + make(Type::i32)}); case 2: - return makeDeNanOp( - buildUnary({pick(ConvertUInt64ToFloat32, ConvertSInt64ToFloat32), - make(Type::i64)})); + return buildUnary( + {pick(ConvertUInt64ToFloat32, ConvertSInt64ToFloat32), + make(Type::i64)}); case 3: - return makeDeNanOp(buildUnary({DemoteFloat64, make(Type::f64)})); + return buildUnary({DemoteFloat64, make(Type::f64)}); } WASM_UNREACHABLE("invalid value"); } case Type::f64: { switch (upTo(4)) { case 0: - return makeDeNanOp(buildUnary({pick(NegFloat64, - AbsFloat64, - CeilFloat64, - FloorFloat64, - TruncFloat64, - NearestFloat64, - SqrtFloat64), - make(Type::f64)})); + return buildUnary({pick(NegFloat64, + AbsFloat64, + CeilFloat64, + FloorFloat64, + TruncFloat64, + NearestFloat64, + SqrtFloat64), + make(Type::f64)}); case 1: - return makeDeNanOp( - buildUnary({pick(ConvertUInt32ToFloat64, ConvertSInt32ToFloat64), - make(Type::i32)})); + return buildUnary( + {pick(ConvertUInt32ToFloat64, ConvertSInt32ToFloat64), + make(Type::i32)}); case 2: - return makeDeNanOp(buildUnary({pick(ConvertUInt64ToFloat64, - ConvertSInt64ToFloat64, - ReinterpretInt64), - make(Type::i64)})); + return buildUnary({pick(ConvertUInt64ToFloat64, + ConvertSInt64ToFloat64, + ReinterpretInt64), + make(Type::i64)}); case 3: - return makeDeNanOp(buildUnary({PromoteFloat32, make(Type::f32)})); + return buildUnary({PromoteFloat32, make(Type::f32)}); } WASM_UNREACHABLE("invalid value"); } @@ -1967,6 +2288,7 @@ return buildUnary({SplatVecF64x2, make(Type::f64)}); case 4: return buildUnary({pick(NotVec128, + // TODO: i8x16.popcnt once merged NegVecI8x16, NegVecI16x8, NegVecI32x4, @@ -1998,9 +2320,11 @@ WASM_UNREACHABLE("invalid value"); } case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: case Type::unreachable: WASM_UNREACHABLE("unexpected type"); @@ -2013,10 +2337,12 @@ } Expression* makeBinary(Type type) { + assert(!type.isTuple()); if (type == Type::unreachable) { - if (auto* binary = makeBinary(getConcreteType())->dynCast()) { - return makeDeNanOp(buildBinary( - {binary->op, make(Type::unreachable), make(Type::unreachable)})); + if (auto* binary = + makeBinary(getSingleConcreteType())->dynCast()) { + return buildBinary( + {binary->op, make(Type::unreachable), make(Type::unreachable)}); } // give up return makeTrivial(type); @@ -2026,7 +2352,7 @@ return makeTrivial(type); } - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: { switch (upTo(4)) { case 0: @@ -2111,26 +2437,26 @@ make(Type::i64)}); } case Type::f32: { - return makeDeNanOp(buildBinary({pick(AddFloat32, - SubFloat32, - MulFloat32, - DivFloat32, - CopySignFloat32, - MinFloat32, - MaxFloat32), - make(Type::f32), - make(Type::f32)})); + return buildBinary({pick(AddFloat32, + SubFloat32, + MulFloat32, + DivFloat32, + CopySignFloat32, + MinFloat32, + MaxFloat32), + make(Type::f32), + make(Type::f32)}); } case Type::f64: { - return makeDeNanOp(buildBinary({pick(AddFloat64, - SubFloat64, - MulFloat64, - DivFloat64, - CopySignFloat64, - MinFloat64, - MaxFloat64), - make(Type::f64), - make(Type::f64)})); + return buildBinary({pick(AddFloat64, + SubFloat64, + MulFloat64, + DivFloat64, + CopySignFloat64, + MinFloat64, + MaxFloat64), + make(Type::f64), + make(Type::f64)}); } case Type::v128: { assert(wasm.features.hasSIMD()); @@ -2191,6 +2517,9 @@ MinUVecI8x16, MaxSVecI8x16, MaxUVecI8x16, + // TODO: avgr_u + // TODO: q15mulr_sat_s + // TODO: extmul AddVecI16x8, AddSatSVecI16x8, AddSatUVecI16x8, @@ -2233,9 +2562,11 @@ make(Type::v128)}); } case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: case Type::unreachable: WASM_UNREACHABLE("unexpected type"); @@ -2248,23 +2579,22 @@ } Expression* makeSelect(Type type) { - Type subType1 = pick(getSubTypes(type)); - Type subType2 = pick(getSubTypes(type)); - return makeDeNanOp( - buildSelect({make(Type::i32), make(subType1), make(subType2)}, type)); + Type subType1 = getSubType(type); + Type subType2 = getSubType(type); + return buildSelect({make(Type::i32), make(subType1), make(subType2)}, type); } Expression* makeSwitch(Type type) { assert(type == Type::unreachable); - if (breakableStack.empty()) { + if (funcContext->breakableStack.empty()) { return make(type); } // we need to find proper targets to break to; try a bunch int tries = TRIES; std::vector names; - Type valueType = Type::Type::unreachable; + Type valueType = Type::unreachable; while (tries-- > 0) { - auto* target = pick(breakableStack); + auto* target = pick(funcContext->breakableStack); auto name = getTargetName(target); auto currValueType = getTargetType(target); if (names.empty()) { @@ -2293,8 +2623,9 @@ } Expression* makeReturn(Type type) { - return builder.makeReturn( - func->sig.results.isConcrete() ? make(func->sig.results) : nullptr); + return builder.makeReturn(funcContext->func->sig.results.isConcrete() + ? make(funcContext->func->sig.results) + : nullptr); } Expression* makeNop(Type type) { @@ -2331,7 +2662,7 @@ } } Index bytes; - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: { switch (upTo(3)) { case 0: @@ -2374,17 +2705,13 @@ auto* ptr = makePointer(); if (oneIn(2)) { auto* value = make(type); - return builder.makeAtomicRMW(pick(AtomicRMWOp::Add, - AtomicRMWOp::Sub, - AtomicRMWOp::And, - AtomicRMWOp::Or, - AtomicRMWOp::Xor, - AtomicRMWOp::Xchg), - bytes, - offset, - ptr, - value, - type); + return builder.makeAtomicRMW( + pick(RMWAdd, RMWSub, RMWAnd, RMWOr, RMWXor, RMWXchg), + bytes, + offset, + ptr, + value, + type); } else { auto* expected = make(type); auto* replacement = make(type); @@ -2401,6 +2728,7 @@ if (type != Type::v128) { return makeSIMDExtract(type); } + // TODO: Add SIMDLoadStoreLane once it is generally available switch (upTo(7)) { case 0: return makeUnary(Type::v128); @@ -2422,7 +2750,7 @@ Expression* makeSIMDExtract(Type type) { auto op = static_cast(0); - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: op = pick(ExtractLaneSVecI8x16, ExtractLaneUVecI8x16, @@ -2441,9 +2769,11 @@ break; case Type::v128: case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: case Type::unreachable: WASM_UNREACHABLE("unexpected type"); @@ -2551,11 +2881,12 @@ ShrSVecI64x2, ShrUVecI64x2); Expression* vec = make(Type::v128); - Expression* shift = make(Type::Type::i32); + Expression* shift = make(Type::i32); return builder.makeSIMDShift(op, vec, shift); } Expression* makeSIMDLoad() { + // TODO: add Load{32,64}Zero if merged to proposal SIMDLoadOp op = pick(LoadSplatVec8x16, LoadSplatVec16x8, LoadSplatVec32x4, @@ -2587,6 +2918,9 @@ case LoadExtUVec32x2ToVecI64x2: align = pick(1, 2, 4, 8); break; + case Load32Zero: + case Load64Zero: + WASM_UNREACHABLE("Unexpected SIMD loads"); } Expression* ptr = makePointer(); return builder.makeSIMDLoad(op, offset, align, ptr); @@ -2614,13 +2948,29 @@ Expression* makeRefIsNull(Type type) { assert(type == Type::i32); assert(wasm.features.hasReferenceTypes()); - Type refType; - if (wasm.features.hasExceptionHandling()) { - refType = pick(Type::funcref, Type::anyref, Type::nullref, Type::exnref); - } else { - refType = pick(Type::funcref, Type::anyref, Type::nullref); - } - return builder.makeRefIsNull(make(refType)); + return builder.makeRefIsNull(make(getReferenceType())); + } + + Expression* makeRefEq(Type type) { + assert(type == Type::i32); + assert(wasm.features.hasReferenceTypes() && wasm.features.hasGC()); + auto* left = make(getEqReferenceType()); + auto* right = make(getEqReferenceType()); + return builder.makeRefEq(left, right); + } + + Expression* makeI31New(Type type) { + assert(type == Type::i31ref); + assert(wasm.features.hasReferenceTypes() && wasm.features.hasGC()); + auto* value = make(Type::i32); + return builder.makeI31New(value); + } + + Expression* makeI31Get(Type type) { + assert(type == Type::i32); + assert(wasm.features.hasReferenceTypes() && wasm.features.hasGC()); + auto* i31 = make(Type::i31ref); + return builder.makeI31Get(i31, bool(oneIn(2))); } Expression* makeMemoryInit() { @@ -2632,8 +2982,8 @@ size_t offsetVal = upTo(totalSize); size_t sizeVal = upTo(totalSize - offsetVal); Expression* dest = makePointer(); - Expression* offset = builder.makeConst(Literal(int32_t(offsetVal))); - Expression* size = builder.makeConst(Literal(int32_t(sizeVal))); + Expression* offset = builder.makeConst(int32_t(offsetVal)); + Expression* size = builder.makeConst(int32_t(sizeVal)); return builder.makeMemoryInit(segment, dest, offset, size); } @@ -2650,7 +3000,7 @@ } Expression* dest = makePointer(); Expression* source = makePointer(); - Expression* size = make(Type::i32); + Expression* size = make(wasm.memory.indexType); return builder.makeMemoryCopy(dest, source, size); } @@ -2659,8 +3009,8 @@ return makeTrivial(Type::none); } Expression* dest = makePointer(); - Expression* value = makePointer(); - Expression* size = make(Type::i32); + Expression* value = make(Type::i32); + Expression* size = make(wasm.memory.indexType); return builder.makeMemoryFill(dest, value, size); } @@ -2678,63 +3028,114 @@ } // special getters - - std::vector getReachableTypes() { + std::vector getSingleConcreteTypes() { return items( FeatureOptions() - .add(FeatureSet::MVP, - Type::i32, - Type::i64, - Type::f32, - Type::f64, - Type::none) + .add(FeatureSet::MVP, Type::i32, Type::i64, Type::f32, Type::f64) .add(FeatureSet::SIMD, Type::v128) - .add(FeatureSet::ReferenceTypes, - Type::funcref, - Type::anyref, - Type::nullref) + .add(FeatureSet::ReferenceTypes, Type::funcref, Type::externref) .add(FeatureSet::ReferenceTypes | FeatureSet::ExceptionHandling, - Type::exnref)); + Type::exnref) + .add(FeatureSet::ReferenceTypes | FeatureSet::GC, + Type::anyref, + Type::eqref, + Type::i31ref)); + // TODO: emit typed function references types } - Type getReachableType() { return pick(getReachableTypes()); } - std::vector getConcreteTypes() { + Type getSingleConcreteType() { return pick(getSingleConcreteTypes()); } + + std::vector getReferenceTypes() { return items( FeatureOptions() - .add(FeatureSet::MVP, Type::i32, Type::i64, Type::f32, Type::f64) - .add(FeatureSet::SIMD, Type::v128) - .add(FeatureSet::ReferenceTypes, - Type::funcref, - Type::anyref, - Type::nullref) + .add(FeatureSet::ReferenceTypes, Type::funcref, Type::externref) .add(FeatureSet::ReferenceTypes | FeatureSet::ExceptionHandling, - Type::exnref)); + Type::exnref) + .add(FeatureSet::ReferenceTypes | FeatureSet::GC, + Type::anyref, + Type::eqref, + Type::i31ref)); } - Type getConcreteType() { return pick(getConcreteTypes()); } - // Get types that can be stored in memory - std::vector getStorableTypes() { - return items( + Type getReferenceType() { return pick(getReferenceTypes()); } + + std::vector getEqReferenceTypes() { + return items(FeatureOptions().add( + FeatureSet::ReferenceTypes | FeatureSet::GC, Type::eqref, Type::i31ref)); + } + + Type getEqReferenceType() { return pick(getEqReferenceTypes()); } + + Type getMVPType() { + return pick(items(FeatureOptions().add( + FeatureSet::MVP, Type::i32, Type::i64, Type::f32, Type::f64))); + } + + Type getTupleType() { + std::vector elements; + size_t maxElements = 2 + upTo(MAX_TUPLE_SIZE - 1); + for (size_t i = 0; i < maxElements; ++i) { + auto type = getSingleConcreteType(); + // Don't add a non-nullable type into a tuple, as currently we can't spill + // them into locals (that would require a "let"). + if (!type.isNullable()) { + elements.push_back(type); + } + } + while (elements.size() < 2) { + elements.push_back(getMVPType()); + } + return Type(elements); + } + + Type getConcreteType() { + if (wasm.features.hasMultivalue() && oneIn(5)) { + return getTupleType(); + } else { + return getSingleConcreteType(); + } + } + + Type getControlFlowType() { + if (oneIn(10)) { + return Type::none; + } else { + return getConcreteType(); + } + } + + Type getStorableType() { + return pick( FeatureOptions() .add(FeatureSet::MVP, Type::i32, Type::i64, Type::f32, Type::f64) .add(FeatureSet::SIMD, Type::v128)); } - Type getStorableType() { return pick(getStorableTypes()); } // - funcref cannot be logged because referenced functions can be inlined or // removed during optimization - // - there's no point in logging anyref because it is opaque - std::vector getLoggableTypes() { - return items( - FeatureOptions() - .add(FeatureSet::MVP, Type::i32, Type::i64, Type::f32, Type::f64) - .add(FeatureSet::SIMD, Type::v128) - .add(FeatureSet::ReferenceTypes, Type::nullref) - .add(FeatureSet::ReferenceTypes | FeatureSet::ExceptionHandling, - Type::exnref)); + // - there's no point in logging externref or anyref because these are opaque + // - don't bother logging tuples + std::vector loggableTypes; + + const std::vector& getLoggableTypes() { + if (loggableTypes.empty()) { + loggableTypes = items( + FeatureOptions() + .add(FeatureSet::MVP, Type::i32, Type::i64, Type::f32, Type::f64) + .add(FeatureSet::SIMD, Type::v128) + .add(FeatureSet::ReferenceTypes | FeatureSet::ExceptionHandling, + Type::exnref)); + } + return loggableTypes; } + Type getLoggableType() { return pick(getLoggableTypes()); } + bool isLoggableType(Type type) { + const auto& types = getLoggableTypes(); + return std::find(types.begin(), types.end(), type) != types.end(); + } + // statistical distributions // 0 to the limit, logarithmic scale @@ -2822,6 +3223,20 @@ return add(feature, rest...); } + struct WeightedOption { + T option; + size_t weight; + }; + + template + FeatureOptions& + add(FeatureSet feature, WeightedOption weightedOption, Ts... rest) { + for (size_t i = 0; i < weightedOption.weight; i++) { + options[feature].push_back(weightedOption.option); + } + return add(feature, rest...); + } + FeatureOptions& add(FeatureSet feature) { return *this; } std::map> options; diff -Nru binaryen-91/src/tools/js-wrapper.h binaryen-99/src/tools/js-wrapper.h --- binaryen-91/src/tools/js-wrapper.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/tools/js-wrapper.h 2021-01-07 20:01:06.000000000 +0000 @@ -47,13 +47,13 @@ " }\n" "}\n" "function literal(x, type) {\n" - " var ret = type + '.const ';\n" + " var ret = '';\n" " switch (type) {\n" " case 'i32': ret += (x | 0); break;\n" " case 'f32':\n" " case 'f64': {\n" " if (x == 0 && (1 / x) < 0) ret += '-';\n" - " ret += x;\n" + " ret += Number(x).toString();\n" " break;\n" " }\n" " default: throw 'what?';\n" @@ -82,24 +82,24 @@ " },\n" "});\n"; for (auto& exp : wasm.exports) { - auto* func = wasm.getFunctionOrNull(exp->value); - if (!func) { + if (exp->kind != ExternalKind::Function) { continue; // something exported other than a function } + auto* func = wasm.getFunction(exp->value); ret += "if (instance.exports.hangLimitInitializer) " "instance.exports.hangLimitInitializer();\n"; ret += "try {\n"; - ret += std::string(" console.log('[fuzz-exec] calling $") + exp->name.str + + ret += std::string(" console.log('[fuzz-exec] calling ") + exp->name.str + "');\n"; if (func->sig.results != Type::none) { - ret += std::string(" console.log('[fuzz-exec] note result: $") + + ret += std::string(" console.log('[fuzz-exec] note result: ") + exp->name.str + " => ' + literal("; } else { ret += " "; } ret += std::string("instance.exports.") + exp->name.str + "("; bool first = true; - for (Type param : func->sig.params.expand()) { + for (const auto& param : func->sig.params) { // zeros in arguments TODO more? if (first) { first = false; diff -Nru binaryen-91/src/tools/optimization-options.h binaryen-99/src/tools/optimization-options.h --- binaryen-91/src/tools/optimization-options.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/tools/optimization-options.h 2021-01-07 20:01:06.000000000 +0000 @@ -165,6 +165,13 @@ passOptions.inlining.oneCallerInlineMaxSize = static_cast(atoi(argument.c_str())); }) + .add("--inline-functions-with-loops", + "-ifwl", + "Allow inlining functions with loops", + Options::Arguments::Zero, + [this](Options* o, const std::string&) { + passOptions.inlining.allowFunctionsWithLoops = true; + }) .add("--ignore-implicit-traps", "-iit", "Optimize under the helpful assumption that no surprising traps " @@ -180,6 +187,19 @@ Options::Arguments::Zero, [this](Options*, const std::string&) { passOptions.lowMemoryUnused = true; + }) + .add( + "--fast-math", + "-ffm", + "Optimize floats without handling corner cases of NaNs and rounding", + Options::Arguments::Zero, + [this](Options*, const std::string&) { passOptions.fastMath = true; }) + .add("--zero-filled-memory", + "-uim", + "Assume that an imported memory will be zero-initialized", + Options::Arguments::Zero, + [this](Options*, const std::string&) { + passOptions.zeroFilledMemory = true; }); // add passes in registry for (const auto& p : PassRegistry::get()->getRegisteredNames()) { diff -Nru binaryen-91/src/tools/spec-wrapper.h binaryen-99/src/tools/spec-wrapper.h --- binaryen-91/src/tools/spec-wrapper.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/tools/spec-wrapper.h 2021-01-07 20:01:06.000000000 +0000 @@ -30,9 +30,10 @@ } ret += std::string("(invoke \"hangLimitInitializer\") (invoke \"") + exp->name.str + "\" "; - for (Type param : func->sig.params.expand()) { + for (const auto& param : func->sig.params) { // zeros in arguments TODO more? - switch (param.getSingle()) { + TODO_SINGLE_COMPOUND(param); + switch (param.getBasic()) { case Type::i32: ret += "(i32.const 0)"; break; @@ -49,11 +50,22 @@ ret += "(v128.const i32x4 0 0 0 0)"; break; case Type::funcref: - case Type::anyref: - case Type::nullref: + ret += "(ref.null func)"; + break; + case Type::externref: + ret += "(ref.null extern)"; + break; case Type::exnref: - ret += "(ref.null)"; + ret += "(ref.null exn)"; + break; + case Type::anyref: + ret += "(ref.null any)"; + break; + case Type::eqref: + ret += "(ref.null eq)"; break; + case Type::i31ref: + WASM_UNREACHABLE("TODO: i31ref"); case Type::none: case Type::unreachable: WASM_UNREACHABLE("unexpected type"); diff -Nru binaryen-91/src/tools/tool-options.h binaryen-99/src/tools/tool-options.h --- binaryen-91/src/tools/tool-options.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/tools/tool-options.h 2021-01-07 20:01:06.000000000 +0000 @@ -31,6 +31,7 @@ PassOptions passOptions; bool quiet = false; + IRProfile profile = IRProfile::Normal; ToolOptions(const std::string& command, const std::string& description) : Options(command, description) { @@ -67,7 +68,13 @@ "-q", "Emit less verbose output and hide trivial warnings.", Arguments::Zero, - [this](Options*, const std::string&) { quiet = true; }); + [this](Options*, const std::string&) { quiet = true; }) + .add( + "--experimental-poppy", + "", + "Parse wast files as Poppy IR for testing purposes.", + Arguments::Zero, + [this](Options*, const std::string&) { profile = IRProfile::Poppy; }); (*this) .addFeature(FeatureSet::SignExt, "sign extension operations") .addFeature(FeatureSet::Atomics, "atomic operations") @@ -79,6 +86,11 @@ "exception handling operations") .addFeature(FeatureSet::TailCall, "tail call operations") .addFeature(FeatureSet::ReferenceTypes, "reference types") + .addFeature(FeatureSet::Multivalue, "multivalue functions") + .addFeature(FeatureSet::GC, "garbage collection") + .addFeature(FeatureSet::Memory64, "memory64") + .addFeature(FeatureSet::TypedFunctionReferences, + "typed function references") .add("--no-validation", "-n", "Disables validation, assumes inputs are correct", @@ -130,7 +142,7 @@ return *this; } - void applyFeatures(Module& module) { + void applyFeatures(Module& module) const { if (hasFeatureOptions) { if (!detectFeatures && module.hasFeaturesSection) { FeatureSet optionsFeatures = FeatureSet::MVP; diff -Nru binaryen-91/src/tools/wasm2c-wrapper.h binaryen-99/src/tools/wasm2c-wrapper.h --- binaryen-91/src/tools/wasm2c-wrapper.h 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/src/tools/wasm2c-wrapper.h 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,236 @@ +/* + * Copyright 2020 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. + */ + +// +// Emit a C wrapper file that can run the wasm after it is compiled with +// wasm2c, useful for fuzzing. +// + +#include + +#include "wasm.h" + +namespace wasm { + +// Mangle a name in (hopefully) exactly the same way wasm2c does. +static std::string wasm2cMangle(Name name, Signature sig) { + const char escapePrefix = 'Z'; + std::string mangled = "Z_"; + const char* original = name.str; + unsigned char c; + while ((c = *original++)) { + if ((isalnum(c) && c != escapePrefix) || c == '_') { + // This character is ok to emit as it is. + mangled += c; + } else { + // This must be escaped, as prefix + hex character code. + mangled += escapePrefix; + std::stringstream ss; + ss << std::hex << std::uppercase << unsigned(c); + mangled += ss.str(); + } + } + + // Emit the result and params. + mangled += "Z_"; + + auto wasm2cSignature = [](Type type) { + TODO_SINGLE_COMPOUND(type); + switch (type.getBasic()) { + case Type::none: + return 'v'; + case Type::i32: + return 'i'; + case Type::i64: + return 'j'; + case Type::f32: + return 'f'; + case Type::f64: + return 'd'; + default: + Fatal() << "unhandled wasm2c wrapper signature type: " << type; + } + }; + + mangled += wasm2cSignature(sig.results); + if (sig.params.isTuple()) { + for (const auto& param : sig.params) { + mangled += wasm2cSignature(param); + } + } else { + mangled += wasm2cSignature(sig.params); + } + + return mangled; +} + +static std::string generateWasm2CWrapper(Module& wasm) { + // First, emit implementations of the wasm's imports so that the wasm2c code + // can call them. The names use wasm2c's name mangling. + std::string ret = R"( +#include +#include +#include + +#include "wasm-rt-impl.h" +#include "wasm.h" + +void _Z_fuzzingZ2DsupportZ_logZ2Di32Z_vi(u32 x) { + printf("[LoggingExternalInterface logging %d]\n", x); +} +void (*Z_fuzzingZ2DsupportZ_logZ2Di32Z_vi)(u32) = _Z_fuzzingZ2DsupportZ_logZ2Di32Z_vi; + +void _Z_fuzzingZ2DsupportZ_logZ2Di64Z_vj(u64 x) { + printf("[LoggingExternalInterface logging %" PRId64 "]\n", (int64_t)x); +} +void (*Z_fuzzingZ2DsupportZ_logZ2Di64Z_vj)(u64) = _Z_fuzzingZ2DsupportZ_logZ2Di64Z_vj; + +void _Z_fuzzingZ2DsupportZ_logZ2Di64Z_vii(u32 x, u32 y) { + printf("[LoggingExternalInterface logging %d %d]\n", x, y); +} +void (*Z_fuzzingZ2DsupportZ_logZ2Di64Z_vii)(u32, u32) = _Z_fuzzingZ2DsupportZ_logZ2Di64Z_vii; + +void _Z_fuzzingZ2DsupportZ_logZ2Df32Z_vf(f32 x) { + printf("[LoggingExternalInterface logging %.17e]\n", x); +} +void (*Z_fuzzingZ2DsupportZ_logZ2Df32Z_vf)(f32) = _Z_fuzzingZ2DsupportZ_logZ2Df32Z_vf; + +void _Z_fuzzingZ2DsupportZ_logZ2Df64Z_vd(f64 x) { + printf("[LoggingExternalInterface logging %.17le]\n", x); +} +void (*Z_fuzzingZ2DsupportZ_logZ2Df64Z_vd)(f64) = _Z_fuzzingZ2DsupportZ_logZ2Df64Z_vd; + +// Miscellaneous imports + +u32 tempRet0 = 0; + +void _Z_envZ_setTempRet0Z_vi(u32 x) { + tempRet0 = x; +} +void (*Z_envZ_setTempRet0Z_vi)(u32) = _Z_envZ_setTempRet0Z_vi; + +u32 _Z_envZ_getTempRet0Z_iv(void) { + return tempRet0; +} +u32 (*Z_envZ_getTempRet0Z_iv)(void) = _Z_envZ_getTempRet0Z_iv; + +// Main + +int main(int argc, char** argv) { + init(); + + // We go through each export and call it, in turn. Note that we use a loop + // so we can do all this with a single setjmp. A setjmp is needed to handle + // wasm traps, and emitting a single one helps compilation speed into wasm as + // compile times are O(size * num_setjmps). + for (size_t curr = 0;; curr++) { + )"; + if (wasm.getExportOrNull("hangLimitInitializer")) { + ret += R"( + // If present, call the hang limit initializer before each export. + (*Z_hangLimitInitializerZ_vv)(); +)"; + } + ret += R"( + // Prepare to call the export, so we can catch traps. + if (WASM_RT_SETJMP(g_jmp_buf) != 0) { + puts("exception!"); + } else { + // Call the proper export. + switch(curr) { +)"; + + // For each function export in the wasm, emit code to call it and log its + // result, similar to the other wrappers. + size_t functionExportIndex = 0; + + for (auto& exp : wasm.exports) { + if (exp->kind != ExternalKind::Function) { + continue; + } + + ret += " case " + std::to_string(functionExportIndex++) + ":\n"; + + auto* func = wasm.getFunction(exp->value); + + ret += std::string(" puts(\"[fuzz-exec] calling ") + + exp->name.str + "\");\n"; + auto result = func->sig.results; + + // Emit the call itself. + ret += " "; + if (result != Type::none) { + ret += std::string("printf(\"[fuzz-exec] note result: ") + exp->name.str + + " => "; + TODO_SINGLE_COMPOUND(result); + switch (result.getBasic()) { + case Type::i32: + ret += "%d\\n\", "; + break; + case Type::i64: + ret += "%\" PRId64 \"\\n\", (int64_t)"; + break; + case Type::f32: + ret += "%.17e\\n\", "; + break; + case Type::f64: + ret += "%.17le\\n\", "; + break; + default: + Fatal() << "unhandled wasm2c wrapper result type: " << result; + } + } + + // Call the export. + ret += "(*"; + + // Emit the callee's name with wasm2c name mangling. + ret += wasm2cMangle(exp->name, func->sig); + + ret += ")("; + + // Emit the parameters (all 0s, like the other wrappers). + bool first = true; + for (const auto& param : func->sig.params) { + WASM_UNUSED(param); + if (!first) { + ret += ", "; + } + ret += "0"; + first = false; + } + if (result != Type::none) { + ret += ")"; + } + ret += ");\n"; + + // Break from the big switch. + ret += " break;\n"; + } + + ret += R"( default: + return 0; // All done. + } + } + } + return 0; +} +)"; + + return ret; +} + +} // namespace wasm diff -Nru binaryen-91/src/tools/wasm2js.cpp binaryen-99/src/tools/wasm2js.cpp --- binaryen-91/src/tools/wasm2js.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/tools/wasm2js.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -25,7 +25,6 @@ #include "support/command-line.h" #include "support/file.h" #include "wasm-s-parser.h" -#include "wasm2js.h" using namespace cashew; using namespace wasm; @@ -63,7 +62,7 @@ template static void printJS(Ref ast, T& output) { JSPrinter jser(true, true, ast); jser.printAst(); - output << jser.buffer << std::endl; + output << jser.buffer << '\n'; } // Traversals @@ -124,7 +123,8 @@ } static void traversePost(Ref node, std::function visit) { - traversePrePost(node, [](Ref node) {}, visit); + traversePrePost( + node, [](Ref node) {}, visit); } static void replaceInPlace(Ref target, Ref value) { @@ -141,7 +141,7 @@ } } -static void optimizeJS(Ref ast) { +static void optimizeJS(Ref ast, Wasm2JSBuilder::Flags flags) { // Helpers auto isBinary = [](Ref node, IString op) { @@ -255,16 +255,34 @@ return false; }; + // Optimize given that the expression is flowing into a boolean context auto optimizeBoolean = [&](Ref node) { - if (isConstantBinary(node, XOR, 1)) { - // x ^ 1 => !x - node[0]->setString(UNARY_PREFIX); - node[1]->setString(L_NOT); - node[3]->setNull(); - } else if (isOrZero(node) || isTrshiftZero(node)) { - // Just being different from 0 is enough, casts don't matter. - return node[2]; - } + // TODO: in some cases it may be possible to turn + // + // if (x | 0) + // + // into + // + // if (x) + // + // In general this is unsafe if e.g. x is -2147483648 + -2147483648 (which + // the | 0 turns into 0, but without it is a truthy value). + // + // Another issue is that in deterministic mode we care about corner cases + // that would trap in wasm, like an integer divide by zero: + // + // if ((1 / 0) | 0) => condition is Infinity | 0 = 0 which is falsey + // + // while + // + // if (1 / 0) => condition is Infinity which is truthy + // + // Thankfully this is not common, and does not occur on % (1 % 0 is a NaN + // which has the right truthiness), so we could perhaps do + // + // if (!(flags.deterministic && isBinary(node[2], DIV))) return node[2]; + // + // (but there is still the first issue). return node; }; @@ -511,7 +529,7 @@ Wasm2JSBuilder wasm2js(flags, options); auto js = wasm2js.processWasm(&wasm, name); if (options.optimizeLevel >= 2) { - optimizeJS(js); + optimizeJS(js, flags); } Wasm2JSGlue glue(wasm, output, flags, name); glue.emitPre(); @@ -551,6 +569,11 @@ Element& e, Name testFuncName, Name asmModule); + Ref emitInvokeFunc(Builder& wasmBuilder, + Element& e, + Name testFuncName, + Name asmModule); + bool isInvokeHandled(Element& e); bool isAssertHandled(Element& e); void fixCalls(Ref asmjs, Name asmModule); @@ -574,8 +597,7 @@ Expression* body = nullptr; if (e.size() == 2) { if (actual->type == Type::none) { - body = wasmBuilder.blockify(actual, - wasmBuilder.makeConst(Literal(uint32_t(1)))); + body = wasmBuilder.blockify(actual, wasmBuilder.makeConst(uint32_t(1))); } else { body = actual; } @@ -583,7 +605,8 @@ Expression* expected = sexpBuilder.parseExpression(e[2]); Type resType = expected->type; actual->type = resType; - switch (resType.getSingle()) { + TODO_SINGLE_COMPOUND(resType); + switch (resType.getBasic()) { case Type::i32: body = wasmBuilder.makeBinary(EqInt32, actual, expected); break; @@ -607,8 +630,7 @@ } default: { - std::cerr << "Unhandled type in assert: " << resType << std::endl; - abort(); + Fatal() << "Unhandled type in assert: " << resType; } } } else { @@ -678,6 +700,28 @@ return outerFunc; } +Ref AssertionEmitter::emitInvokeFunc(Builder& wasmBuilder, + Element& e, + Name testFuncName, + Name asmModule) { + Expression* body = sexpBuilder.parseExpression(e); + std::unique_ptr testFunc( + wasmBuilder.makeFunction(testFuncName, + std::vector{}, + body->type, + std::vector{}, + body)); + Ref jsFunc = processFunction(testFunc.get()); + fixCalls(jsFunc, asmModule); + emitFunction(jsFunc); + return jsFunc; +} + +bool AssertionEmitter::isInvokeHandled(Element& e) { + return e.isList() && e.size() >= 2 && e[0]->isStr() && + e[0]->str() == Name("invoke"); +} + bool AssertionEmitter::isAssertHandled(Element& e) { return e.isList() && e.size() >= 2 && e[0]->isStr() && (e[0]->str() == Name("assert_return") || @@ -766,7 +810,7 @@ } )"; - Builder wasmBuilder(sexpBuilder.getAllocator()); + Builder wasmBuilder(sexpBuilder.getModule()); Name asmModule = std::string("ret") + ASM_FUNC.str; for (size_t i = 0; i < root.size(); ++i) { Element& e = *root[i]; @@ -780,23 +824,35 @@ asmModule = Name(moduleNameS.str().c_str()); Module wasm; options.applyFeatures(wasm); - SExpressionWasmBuilder builder(wasm, e); + SExpressionWasmBuilder builder(wasm, e, options.profile); emitWasm(wasm, out, flags, options.passOptions, funcName); continue; } - if (!isAssertHandled(e)) { + if (!isInvokeHandled(e) && !isAssertHandled(e)) { std::cerr << "skipping " << e << std::endl; continue; } Name testFuncName(IString(("check" + std::to_string(i)).c_str(), false)); + bool isInvoke = (e[0]->str() == Name("invoke")); bool isReturn = (e[0]->str() == Name("assert_return")); bool isReturnNan = (e[0]->str() == Name("assert_return_nan")); - Element& testOp = *e[1]; + Element* assertOp; + // An assertion of an invoke has the invoke inside the assert. + if (isAssertHandled(e)) { + assertOp = e[1]; + } else { + assertOp = &e; + } // Replace "invoke" with "call" - testOp[0]->setString(IString("call"), false, false); + (*assertOp)[0]->setString(IString("call"), false, false); // Need to claim dollared to get string as function target - testOp[1]->setString(testOp[1]->str(), /*dollared=*/true, false); - + (*assertOp)[1]->setString((*assertOp)[1]->str(), /*dollared=*/true, false); + if (isInvoke) { + emitInvokeFunc(wasmBuilder, e, testFuncName, asmModule); + out << testFuncName.str << "();\n"; + continue; + } + // Otherwise, this is some form of assertion. if (isReturn) { emitAssertReturnFunc(wasmBuilder, e, testFuncName, asmModule); } else if (isReturnNan) { @@ -849,6 +905,18 @@ Options::Arguments::Zero, [&](Options* o, const std::string& argument) { flags.emscripten = true; }) .add( + "--deterministic", + "", + "Replace WebAssembly trapping behavior deterministically " + "(the default is to not care about what would trap in wasm, like a load " + "out of bounds or integer divide by zero; with this flag, we try to be " + "deterministic at least in what happens, which might or might not be " + "to trap like wasm, but at least should not vary)", + Options::Arguments::Zero, + [&](Options* o, const std::string& argument) { + flags.deterministic = true; + }) + .add( "--symbols-file", "", "Emit a symbols file that maps function indexes to their original names", @@ -903,7 +971,8 @@ if (options.debug) { std::cerr << "w-parsing..." << std::endl; } - sexprBuilder = make_unique(wasm, *(*root)[0]); + sexprBuilder = + make_unique(wasm, *(*root)[0], options.profile); } } catch (ParseException& p) { p.dump(std::cerr); @@ -915,7 +984,7 @@ if (options.passOptions.validate) { if (!WasmValidator().validate(wasm)) { - WasmPrinter::printModule(&wasm); + std::cout << wasm << '\n'; Fatal() << "error in validating input"; } } diff -Nru binaryen-91/src/tools/wasm-as.cpp binaryen-99/src/tools/wasm-as.cpp --- binaryen-91/src/tools/wasm-as.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/tools/wasm-as.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -54,9 +54,8 @@ Options::Arguments::One, [](Options* o, const std::string& argument) { if (argument != "web" && argument != "none" && argument != "wasm") { - std::cerr << "Valid arguments for --validate flag are 'wasm', " - "'web', and 'none'.\n"; - exit(1); + Fatal() << "Valid arguments for --validate flag are 'wasm', " + "'web', and 'none'.\n"; } o->extra["validate"] = argument; }) @@ -110,7 +109,7 @@ if (options.debug) { std::cerr << "w-parsing..." << std::endl; } - SExpressionWasmBuilder builder(wasm, *root[0]); + SExpressionWasmBuilder builder(wasm, *root[0], options.profile); } catch (ParseException& p) { p.dump(std::cerr); Fatal() << "error in parsing input"; diff -Nru binaryen-91/src/tools/wasm-ctor-eval.cpp binaryen-99/src/tools/wasm-ctor-eval.cpp --- binaryen-91/src/tools/wasm-ctor-eval.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/tools/wasm-ctor-eval.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -24,6 +24,7 @@ #include +#include "asmjs/shared-constants.h" #include "ir/global-utils.h" #include "ir/import-utils.h" #include "ir/literal-utils.h" @@ -48,7 +49,7 @@ // We do not have access to imported globals class EvallingGlobalManager { // values of globals - std::map globals; + std::map globals; // globals that are dangerous to modify in the module std::set dangerousGlobals; @@ -70,7 +71,7 @@ return !(*this == other); } - Literal& operator[](Name name) { + Literals& operator[](Name name) { if (dangerousGlobals.count(name) > 0) { std::string extra; if (name == "___dso_handle") { @@ -87,11 +88,11 @@ struct Iterator { Name first; - Literal second; + Literals second; bool found; Iterator() : found(false) {} - Iterator(Name name, Literal value) + Iterator(Name name, Literals value) : first(name), second(value), found(true) {} bool operator==(const Iterator& other) { @@ -177,33 +178,33 @@ // fill usable values for stack imports, and globals initialized to them ImportInfo imports(wasm_); if (auto* stackTop = imports.getImportedGlobal(ENV, STACKTOP)) { - globals[stackTop->name] = Literal(int32_t(STACK_START)); + globals[stackTop->name] = {Literal(int32_t(STACK_START))}; if (auto* stackTop = GlobalUtils::getGlobalInitializedToImport(wasm_, ENV, STACKTOP)) { - globals[stackTop->name] = Literal(int32_t(STACK_START)); + globals[stackTop->name] = {Literal(int32_t(STACK_START))}; } } if (auto* stackMax = imports.getImportedGlobal(ENV, STACK_MAX)) { - globals[stackMax->name] = Literal(int32_t(STACK_START)); + globals[stackMax->name] = {Literal(int32_t(STACK_START))}; if (auto* stackMax = GlobalUtils::getGlobalInitializedToImport(wasm_, ENV, STACK_MAX)) { - globals[stackMax->name] = Literal(int32_t(STACK_START)); + globals[stackMax->name] = {Literal(int32_t(STACK_START))}; } } // fill in fake values for everything else, which is dangerous to use ModuleUtils::iterDefinedGlobals(wasm_, [&](Global* defined) { if (globals.find(defined->name) == globals.end()) { - globals[defined->name] = Literal::makeZero(defined->type); + globals[defined->name] = Literal::makeZeros(defined->type); } }); ModuleUtils::iterImportedGlobals(wasm_, [&](Global* import) { if (globals.find(import->name) == globals.end()) { - globals[import->name] = Literal::makeZero(import->type); + globals[import->name] = Literal::makeZeros(import->type); } }); } - Literal callImport(Function* import, LiteralList& arguments) override { + Literals callImport(Function* import, LiteralList& arguments) override { std::string extra; if (import->module == ENV && import->base == "___cxa_atexit") { extra = "\nrecommendation: build with -s NO_EXIT_RUNTIME=1 so that calls " @@ -214,11 +215,11 @@ extra); } - Literal callTable(Index index, - Signature sig, - LiteralList& arguments, - Type result, - EvallingModuleInstance& instance) override { + Literals callTable(Index index, + Signature sig, + LiteralList& arguments, + Type result, + EvallingModuleInstance& instance) override { // we assume the table is not modified (hmm) // look through the segments, try to find the function for (auto& segment : wasm->table.segments) { @@ -283,7 +284,7 @@ // called during initialization, but we don't keep track of a table void tableStore(Address addr, Name value) override {} - void growMemory(Address /*oldSize*/, Address newSize) override { + bool growMemory(Address /*oldSize*/, Address newSize) override { throw FailToEvalException("grow memory"); } @@ -291,6 +292,12 @@ throw FailToEvalException(std::string("trap: ") + why); } + void throwException(Literal exn) override { + std::stringstream ss; + ss << "exception thrown: " << exn; + throw FailToEvalException(ss.str()); + } + private: // TODO: handle unaligned too, see shell-interface @@ -310,7 +317,7 @@ std::vector temp; Builder builder(*wasm); wasm->memory.segments.push_back( - Memory::Segment(builder.makeConst(Literal(int32_t(0))), temp)); + Memory::Segment(builder.makeConst(int32_t(0)), temp)); } // memory should already have been flattened assert(wasm->memory.segments[0].offset->cast()->value.getInteger() == @@ -459,7 +466,7 @@ options.applyFeatures(wasm); if (!WasmValidator().validate(wasm)) { - WasmPrinter::printModule(&wasm); + std::cout << wasm << '\n'; Fatal() << "error in validating input"; } diff -Nru binaryen-91/src/tools/wasm-dis.cpp binaryen-99/src/tools/wasm-dis.cpp --- binaryen-91/src/tools/wasm-dis.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/tools/wasm-dis.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -22,7 +22,6 @@ #include "support/command-line.h" #include "support/file.h" #include "wasm-io.h" -#include "wasm-printing.h" using namespace cashew; using namespace wasm; @@ -76,8 +75,7 @@ std::cerr << "Printing..." << std::endl; } Output output(options.extra["output"], Flags::Text); - WasmPrinter::printModule(&wasm, output.getStream()); - output << '\n'; + output.getStream() << wasm << '\n'; if (options.debug) { std::cerr << "Done." << std::endl; diff -Nru binaryen-91/src/tools/wasm-emscripten-finalize.cpp binaryen-99/src/tools/wasm-emscripten-finalize.cpp --- binaryen-91/src/tools/wasm-emscripten-finalize.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/tools/wasm-emscripten-finalize.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -30,7 +30,6 @@ #include "wasm-binary.h" #include "wasm-emscripten.h" #include "wasm-io.h" -#include "wasm-printing.h" #include "wasm-validator.h" #define DEBUG_TYPE "emscripten" @@ -50,11 +49,16 @@ bool emitBinary = true; bool debugInfo = false; bool DWARF = false; - bool isSideModule = false; + bool sideModule = false; bool legalizeJavaScriptFFI = true; + bool bigInt = false; bool checkStackOverflow = false; uint64_t globalBase = INVALID_BASE; bool standaloneWasm = false; + // TODO: remove after https://github.com/WebAssembly/binaryen/issues/3043 + bool minimizeWasmChanges = false; + bool noDynCalls = false; + bool onlyI64DynCalls = false; ToolOptions options("wasm-emscripten-finalize", "Performs Emscripten-specific transforms on .wasm files"); @@ -79,7 +83,8 @@ [&DWARF](Options*, const std::string&) { DWARF = true; }) .add("--emit-text", "-S", - "Emit text instead of binary for the output file", + "Emit text instead of binary for the output file. " + "In this mode if no output file is specified, we write to stdout.", Options::Arguments::Zero, [&emitBinary](Options*, const std::string&) { emitBinary = false; }) .add("--global-base", @@ -100,9 +105,14 @@ "", "Input is an emscripten side module", Options::Arguments::Zero, - [&isSideModule](Options* o, const std::string& argument) { - isSideModule = true; + [&sideModule](Options* o, const std::string& argument) { + sideModule = true; }) + .add("--new-pic-abi", + "", + "Use new/llvm PIC abi", + Options::Arguments::Zero, + [&](Options* o, const std::string& argument) {}) .add("--input-source-map", "-ism", "Consume source map from the specified file", @@ -118,6 +128,13 @@ [&legalizeJavaScriptFFI](Options* o, const std::string&) { legalizeJavaScriptFFI = false; }) + .add("--bigint", + "-bi", + "Assume JS will use wasm/JS BigInt integration, so wasm i64s will " + "turn into JS BigInts, and there is no need for any legalization at " + "all (not even minimal legalization of dynCalls)", + Options::Arguments::Zero, + [&bigInt](Options* o, const std::string&) { bigInt = true; }) .add("--output-source-map", "-osm", "Emit source map to the specified file", @@ -154,6 +171,27 @@ [&standaloneWasm](Options* o, const std::string&) { standaloneWasm = true; }) + .add("--minimize-wasm-changes", + "", + "Modify the wasm as little as possible. This is useful during " + "development as we reduce the number of changes to the wasm, as it " + "lets emscripten control how much modifications to do.", + Options::Arguments::Zero, + [&minimizeWasmChanges](Options* o, const std::string&) { + minimizeWasmChanges = true; + }) + .add("--no-dyncalls", + "", + "", + Options::Arguments::Zero, + [&noDynCalls](Options* o, const std::string&) { noDynCalls = true; }) + .add("--dyncalls-i64", + "", + "", + Options::Arguments::Zero, + [&onlyI64DynCalls](Options* o, const std::string&) { + onlyI64DynCalls = true; + }) .add_positional("INFILE", Options::Arguments::One, [&infile](Options* o, const std::string& argument) { @@ -164,9 +202,6 @@ if (infile == "") { Fatal() << "Need to specify an infile\n"; } - if (outfile == "" && emitBinary) { - Fatal() << "Need to specify an outfile, or use text output\n"; - } Module wasm; ModuleReader reader; @@ -186,108 +221,86 @@ options.applyFeatures(wasm); BYN_TRACE_WITH_TYPE("emscripten-dump", "Module before:\n"); - BYN_DEBUG_WITH_TYPE("emscripten-dump", - WasmPrinter::printModule(&wasm, std::cerr)); + BYN_DEBUG_WITH_TYPE("emscripten-dump", std::cerr << &wasm); - uint32_t dataSize = 0; - - if (!isSideModule) { - if (globalBase == INVALID_BASE) { - Fatal() << "globalBase must be set"; - } - Export* dataEndExport = wasm.getExport("__data_end"); - if (dataEndExport == nullptr) { - Fatal() << "__data_end export not found"; - } - Global* dataEnd = wasm.getGlobal(dataEndExport->value); - if (dataEnd == nullptr) { - Fatal() << "__data_end global not found"; - } - if (dataEnd->type != Type::i32) { - Fatal() << "__data_end global has wrong type"; - } - if (dataEnd->imported()) { - Fatal() << "__data_end must not be an imported global"; + EmscriptenGlueGenerator generator(wasm); + generator.standalone = standaloneWasm; + generator.sideModule = sideModule; + generator.minimizeWasmChanges = minimizeWasmChanges; + generator.onlyI64DynCalls = onlyI64DynCalls; + generator.noDynCalls = noDynCalls; + + Name initializerFunction; + + if (!standaloneWasm) { + // This is also not needed in standalone mode since standalone mode uses + // crt1.c to invoke the main and is aware of __main_argc_argv mangling. + generator.renameMainArgcArgv(); + } + + PassRunner passRunner(&wasm, options.passOptions); + passRunner.setDebug(options.debug); + passRunner.setDebugInfo(debugInfo); + + if (checkStackOverflow) { + if (!standaloneWasm) { + // In standalone mode we don't set a handler at all.. which means + // just trap on overflow. + passRunner.options.arguments["stack-check-handler"] = + "__handle_stack_overflow"; } - Const* dataEndConst = dataEnd->init->cast(); - dataSize = dataEndConst->value.geti32() - globalBase; + passRunner.add("stack-check"); } - EmscriptenGlueGenerator generator(wasm); - generator.setStandalone(standaloneWasm); - - generator.fixInvokeFunctionNames(); - - std::vector initializerFunctions; - - if (wasm.table.imported()) { - if (wasm.table.base != "table") { - wasm.table.base = Name("table"); + if (!noDynCalls && !standaloneWasm) { + // If not standalone wasm then JS is relevant and we need dynCalls. + if (onlyI64DynCalls) { + passRunner.add("generate-i64-dyncalls"); + } else { + passRunner.add("generate-dyncalls"); } } - if (wasm.memory.imported()) { - if (wasm.table.base != "memory") { - wasm.memory.base = Name("memory"); - } + + // Legalize the wasm, if BigInts don't make that moot. + if (!bigInt) { + passRunner.add(ABI::getLegalizationPass( + legalizeJavaScriptFFI ? ABI::LegalizationLevel::Full + : ABI::LegalizationLevel::Minimal)); } - wasm.updateMaps(); - if (checkStackOverflow && !isSideModule) { - generator.enforceStackLimit(); + // Strip target features section (its information is in the metadata) + passRunner.add("strip-target-features"); + + // If DWARF is unused, strip it out. This avoids us keeping it alive + // until wasm-opt strips it later. + if (!DWARF) { + passRunner.add("strip-dwarf"); } - if (isSideModule) { + passRunner.run(); + + if (sideModule) { BYN_TRACE("finalizing as side module\n"); - generator.replaceStackPointerGlobal(); - generator.generatePostInstantiateFunction(); + // The emscripten PIC ABI still expects a function named + // __post_instantiate to be exported by side module. + if (auto* e = wasm.getExportOrNull(WASM_CALL_CTORS)) { + e->name = "__post_instantiate"; + } } else { BYN_TRACE("finalizing as regular module\n"); - generator.generateRuntimeFunctions(); - generator.internalizeStackPointerGlobal(); - generator.generateMemoryGrowthFunction(); - // For side modules these gets called via __post_instantiate - if (Function* F = generator.generateAssignGOTEntriesFunction()) { - auto* ex = new Export(); - ex->value = F->name; - ex->name = F->name; - ex->kind = ExternalKind::Function; - wasm.addExport(ex); - initializerFunctions.push_back(F->name); - } // Costructors get called from crt1 in wasm standalone mode. // Unless there is no entry point. if (!standaloneWasm || !wasm.getExportOrNull("_start")) { if (auto* e = wasm.getExportOrNull(WASM_CALL_CTORS)) { - initializerFunctions.push_back(e->name); + initializerFunction = e->name; } } } - if (standaloneWasm) { - // Export a standard wasi "_start" method. - generator.exportWasiStart(); - } else { - // If not standalone wasm then JS is relevant and we need dynCalls. - generator.generateDynCallThunks(); - } - - // Legalize the wasm. - { - BYN_TRACE("legalizing types\n"); - PassRunner passRunner(&wasm); - passRunner.setOptions(options.passOptions); - passRunner.setDebug(options.debug); - passRunner.setDebugInfo(debugInfo); - passRunner.add(ABI::getLegalizationPass( - legalizeJavaScriptFFI ? ABI::LegalizationLevel::Full - : ABI::LegalizationLevel::Minimal)); - passRunner.run(); - } - BYN_TRACE("generated metadata\n"); // Substantial changes to the wasm are done, enough to create the metadata. std::string metadata = - generator.generateEmscriptenMetadata(dataSize, initializerFunctions); + generator.generateEmscriptenMetadata(initializerFunction); // Finally, separate out data segments if relevant (they may have been needed // for metadata). @@ -300,41 +313,31 @@ } BYN_TRACE_WITH_TYPE("emscripten-dump", "Module after:\n"); - BYN_DEBUG_WITH_TYPE("emscripten-dump", - WasmPrinter::printModule(&wasm, std::cerr)); - - // Strip target features section (its information is in the metadata) - { - PassRunner passRunner(&wasm); - passRunner.add("strip-target-features"); - passRunner.run(); - } + BYN_DEBUG_WITH_TYPE("emscripten-dump", std::cerr << wasm << '\n'); - // If DWARF is unused, strip it out. This avoids us keeping it alive - // until wasm-opt strips it later. - if (!DWARF) { - PassRunner passRunner(&wasm); - passRunner.add("strip-dwarf"); - passRunner.run(); - } - - Output output(outfile, emitBinary ? Flags::Binary : Flags::Text); - ModuleWriter writer; - writer.setDebugInfo(debugInfo); - // writer.setSymbolMap(symbolMap); - writer.setBinary(emitBinary); - if (outputSourceMapFilename.size()) { - writer.setSourceMapFilename(outputSourceMapFilename); - writer.setSourceMapUrl(outputSourceMapUrl); + // Write the modified wasm if the user asked us to, either by specifying an + // output file, or requesting text output (which goes to stdout by default). + if (outfile.size() > 0 || !emitBinary) { + Output output(outfile, emitBinary ? Flags::Binary : Flags::Text); + ModuleWriter writer; + writer.setDebugInfo(debugInfo); + // writer.setSymbolMap(symbolMap); + writer.setBinary(emitBinary); + if (outputSourceMapFilename.size()) { + writer.setSourceMapFilename(outputSourceMapFilename); + writer.setSourceMapUrl(outputSourceMapUrl); + } + writer.write(wasm, output); + if (!emitBinary) { + output << "(;\n"; + output << "--BEGIN METADATA --\n" << metadata << "-- END METADATA --\n"; + output << ";)\n"; + } } - writer.write(wasm, output); + // If we emit text then we emitted the metadata together with that text + // earlier. Otherwise emit it to stdout. if (emitBinary) { std::cout << metadata; - } else { - output << "(;\n"; - output << "--BEGIN METADATA --\n" << metadata << "-- END METADATA --\n"; - output << ";)\n"; } - return 0; } diff -Nru binaryen-91/src/tools/wasm-metadce.cpp binaryen-99/src/tools/wasm-metadce.cpp --- binaryen-91/src/tools/wasm-metadce.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/tools/wasm-metadce.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -511,7 +511,7 @@ if (options.passOptions.validate) { if (!WasmValidator().validate(wasm)) { - WasmPrinter::printModule(&wasm); + std::cout << wasm << '\n'; Fatal() << "error in validating input"; } } diff -Nru binaryen-91/src/tools/wasm-opt.cpp binaryen-99/src/tools/wasm-opt.cpp --- binaryen-91/src/tools/wasm-opt.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/tools/wasm-opt.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -34,9 +34,9 @@ #include "wasm-binary.h" #include "wasm-interpreter.h" #include "wasm-io.h" -#include "wasm-printing.h" #include "wasm-s-parser.h" #include "wasm-validator.h" +#include "wasm2c-wrapper.h" #define DEBUG_TYPE "opt" @@ -78,15 +78,15 @@ bool converge = false; bool fuzzExecBefore = false; bool fuzzExecAfter = false; - bool fuzzBinary = false; std::string extraFuzzCommand; bool translateToFuzz = false; + std::string initialFuzz; bool fuzzPasses = false; - bool fuzzNaNs = true; bool fuzzMemory = true; bool fuzzOOB = true; std::string emitJSWrapper; std::string emitSpecWrapper; + std::string emitWasm2CWrapper; std::string inputSourceMapFilename; std::string outputSourceMapFilename; std::string outputSourceMapUrl; @@ -125,12 +125,6 @@ [&](Options* o, const std::string& arguments) { fuzzExecBefore = fuzzExecAfter = true; }) - .add("--fuzz-binary", - "-fb", - "Convert to binary and back after optimizations and before fuzz-exec, " - "helping fuzzing find binary format bugs", - Options::Arguments::Zero, - [&](Options* o, const std::string& arguments) { fuzzBinary = true; }) .add("--extra-fuzz-command", "-efc", "An extra command to run on the output before and after optimizing. " @@ -147,18 +141,19 @@ "fuzzing", Options::Arguments::Zero, [&](Options* o, const std::string& arguments) { translateToFuzz = true; }) + .add("--initial-fuzz", + "-if", + "Initial wasm content in translate-to-fuzz (-ttf) mode", + Options::Arguments::One, + [&initialFuzz](Options* o, const std::string& argument) { + initialFuzz = argument; + }) .add("--fuzz-passes", "-fp", "Pick a random set of passes to run, useful for fuzzing. this depends " "on translate-to-fuzz (it picks the passes from the input)", Options::Arguments::Zero, [&](Options* o, const std::string& arguments) { fuzzPasses = true; }) - .add("--no-fuzz-nans", - "", - "don't emit NaNs when fuzzing, and remove them at runtime as well " - "(helps avoid nondeterminism between VMs)", - Options::Arguments::Zero, - [&](Options* o, const std::string& arguments) { fuzzNaNs = false; }) .add("--no-fuzz-memory", "", "don't emit memory ops when fuzzing", @@ -185,6 +180,14 @@ [&](Options* o, const std::string& arguments) { emitSpecWrapper = arguments; }) + .add("--emit-wasm2c-wrapper", + "-esw", + "Emit a C wrapper file that can run the wasm after it is compiled " + "with wasm2c, useful for fuzzing", + Options::Arguments::One, + [&](Options* o, const std::string& arguments) { + emitWasm2CWrapper = arguments; + }) .add("--input-source-map", "-ism", "Consume source map from the specified file", @@ -223,19 +226,26 @@ // to print would not be reached). if (std::find(options.passes.begin(), options.passes.end(), "print") != options.passes.end()) { - WasmPrinter::printModule(&wasm); + std::cout << wasm << '\n'; } Fatal() << message; }; - if (!translateToFuzz) { + // In normal (non-translate-to-fuzz) mode we read the input file. In + // translate-to-fuzz mode the input file is the random data, and used later + // down in TranslateToFuzzReader, but there is also an optional initial fuzz + // file that if it exists we read it, then add more fuzz on top. + if (!translateToFuzz || initialFuzz.size()) { + std::string inputFile = + translateToFuzz ? initialFuzz : options.extra["infile"]; ModuleReader reader; // Enable DWARF parsing if we were asked for debug info, and were not // asked to remove it. reader.setDWARF(options.passOptions.debugInfo && !willRemoveDebugInfo(options.passes)); + reader.setProfile(options.profile); try { - reader.read(options.extra["infile"], wasm, inputSourceMapFilename); + reader.read(inputFile, wasm, inputSourceMapFilename); } catch (ParseException& p) { p.dump(std::cerr); std::cerr << '\n'; @@ -256,20 +266,19 @@ exitOnInvalidWasm("error validating input"); } } - } else { - // translate-to-fuzz + } + if (translateToFuzz) { options.applyFeatures(wasm); TranslateToFuzzReader reader(wasm, options.extra["infile"]); if (fuzzPasses) { reader.pickPasses(options); } - reader.setAllowNaNs(fuzzNaNs); reader.setAllowMemory(fuzzMemory); reader.setAllowOOB(fuzzOOB); reader.build(); if (options.passOptions.validate) { if (!WasmValidator().validate(wasm)) { - WasmPrinter::printModule(&wasm); + std::cout << wasm << '\n'; Fatal() << "error after translate-to-fuzz"; } } @@ -293,13 +302,18 @@ outfile << generateJSWrapper(wasm); outfile.close(); } - if (emitSpecWrapper.size() > 0) { std::ofstream outfile; outfile.open(emitSpecWrapper, std::ofstream::out); outfile << generateSpecWrapper(wasm); outfile.close(); } + if (emitWasm2CWrapper.size() > 0) { + std::ofstream outfile; + outfile.open(emitWasm2CWrapper, std::ofstream::out); + outfile << generateWasm2CWrapper(wasm); + outfile.close(); + } std::string firstOutput; @@ -313,28 +327,6 @@ std::cout << "[extra-fuzz-command first output:]\n" << firstOutput << '\n'; } - Module* curr = &wasm; - Module other; - - if (fuzzExecAfter && fuzzBinary) { - BufferWithRandomAccess buffer; - // write the binary - WasmBinaryWriter writer(&wasm, buffer); - writer.write(); - // read the binary - auto input = buffer.getAsChars(); - WasmBinaryBuilder parser(other, input); - parser.read(); - options.applyFeatures(other); - if (options.passOptions.validate) { - bool valid = WasmValidator().validate(other); - if (!valid) { - Fatal() << "fuzz-binary must always generate a valid module"; - } - } - curr = &other; - } - if (!options.runningPasses()) { if (!options.quiet) { std::cerr << "warning: no passes specified, not doing any work\n"; @@ -342,9 +334,9 @@ } else { BYN_TRACE("running passes...\n"); auto runPasses = [&]() { - options.runPasses(*curr); + options.runPasses(wasm); if (options.passOptions.validate) { - bool valid = WasmValidator().validate(*curr); + bool valid = WasmValidator().validate(wasm); if (!valid) { exitOnInvalidWasm("error after opts"); } @@ -356,7 +348,7 @@ // size no longer decreasing. auto getSize = [&]() { BufferWithRandomAccess buffer; - WasmBinaryWriter writer(curr, buffer); + WasmBinaryWriter writer(&wasm, buffer); writer.write(); return buffer.size(); }; @@ -374,7 +366,7 @@ } if (fuzzExecAfter) { - results.check(*curr); + results.check(wasm); } if (options.extra.count("output") == 0) { @@ -392,14 +384,13 @@ writer.setSourceMapFilename(outputSourceMapFilename); writer.setSourceMapUrl(outputSourceMapUrl); } - writer.write(*curr, options.extra["output"]); + writer.write(wasm, options.extra["output"]); if (extraFuzzCommand.size() > 0) { auto secondOutput = runCommand(extraFuzzCommand); std::cout << "[extra-fuzz-command second output:]\n" << firstOutput << '\n'; if (firstOutput != secondOutput) { - std::cerr << "extra fuzz command output differs\n"; - abort(); + Fatal() << "extra fuzz command output differs\n"; } } return 0; diff -Nru binaryen-91/src/tools/wasm-reduce.cpp binaryen-99/src/tools/wasm-reduce.cpp --- binaryen-91/src/tools/wasm-reduce.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/tools/wasm-reduce.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -282,12 +282,15 @@ // compensated for), and without for (auto pass : passes) { std::string currCommand = Path::getBinaryenBinaryTool("wasm-opt") + " "; - // TODO(tlively): -all should be replaced with an option to use the - // existing feature set, once implemented. - currCommand += working + " -all -o " + test + " " + pass; + currCommand += working + " --detect-features -o " + test + " " + pass; if (debugInfo) { currCommand += " -g "; } + if (!binary) { + currCommand += " -S --all-features "; + } else { + currCommand += " --detect-features "; + } if (verbose) { std::cerr << "| trying pass command: " << currCommand << "\n"; } @@ -566,20 +569,25 @@ } } } - // If that didn't work, try to replace with a child + a unary conversion - if (curr->type.isConcrete() && - !curr->is()) { // but not if it's already unary + // If that didn't work, try to replace with a child + a unary conversion, + // but not if it's already unary + if (curr->type.isSingle() && !curr->is()) { for (auto* child : ChildIterator(curr)) { if (child->type == curr->type) { continue; // already tried } - if (!child->type.isConcrete()) { + if (!child->type.isSingle()) { continue; // no conversion } Expression* fixed = nullptr; - switch (curr->type.getSingle()) { + if (!curr->type.isBasic() || !child->type.isBasic()) { + // TODO: handle compound types + continue; + } + switch (curr->type.getBasic()) { case Type::i32: { - switch (child->type.getSingle()) { + TODO_SINGLE_COMPOUND(child->type); + switch (child->type.getBasic()) { case Type::i32: WASM_UNREACHABLE("invalid type"); case Type::i64: @@ -593,9 +601,11 @@ break; case Type::v128: case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: continue; // not implemented yet case Type::none: case Type::unreachable: @@ -604,7 +614,8 @@ break; } case Type::i64: { - switch (child->type.getSingle()) { + TODO_SINGLE_COMPOUND(child->type); + switch (child->type.getBasic()) { case Type::i32: fixed = builder->makeUnary(ExtendSInt32, child); break; @@ -618,9 +629,11 @@ break; case Type::v128: case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: continue; // not implemented yet case Type::none: case Type::unreachable: @@ -629,7 +642,8 @@ break; } case Type::f32: { - switch (child->type.getSingle()) { + TODO_SINGLE_COMPOUND(child->type); + switch (child->type.getBasic()) { case Type::i32: fixed = builder->makeUnary(ConvertSInt32ToFloat32, child); break; @@ -643,9 +657,11 @@ break; case Type::v128: case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: continue; // not implemented yet case Type::none: case Type::unreachable: @@ -654,7 +670,8 @@ break; } case Type::f64: { - switch (child->type.getSingle()) { + TODO_SINGLE_COMPOUND(child->type); + switch (child->type.getBasic()) { case Type::i32: fixed = builder->makeUnary(ConvertSInt32ToFloat64, child); break; @@ -668,9 +685,11 @@ WASM_UNREACHABLE("unexpected type"); case Type::v128: case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: continue; // not implemented yet case Type::none: case Type::unreachable: @@ -680,9 +699,11 @@ } case Type::v128: case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: continue; // not implemented yet case Type::none: case Type::unreachable: @@ -921,6 +942,11 @@ replaceCurrent(Builder(*getModule()).replaceWithIdenticalType(curr)); } } + void visitRefFunc(RefFunc* curr) { + if (names.count(curr->func)) { + replaceCurrent(Builder(*getModule()).replaceWithIdenticalType(curr)); + } + } void visitExport(Export* curr) { if (names.count(curr->value)) { exportsToRemove.push_back(curr->name); @@ -981,7 +1007,7 @@ if (condition->is()) { return; } - auto* c = builder->makeConst(Literal(int32_t(0))); + auto* c = builder->makeConst(int32_t(0)); if (!tryToReplaceChild(condition, c)) { c->value = Literal(int32_t(1)); tryToReplaceChild(condition, c); @@ -1009,15 +1035,25 @@ return false; } // try to replace with a trivial value - if (curr->type.isRef()) { - RefNull* n = builder->makeRefNull(); + if (curr->type.isNullable()) { + RefNull* n = builder->makeRefNull(curr->type); return tryToReplaceCurrent(n); } - Const* c = builder->makeConst(Literal(int32_t(0))); + if (curr->type.isTuple()) { + Expression* n = + builder->makeConstantExpression(Literal::makeZeros(curr->type)); + return tryToReplaceCurrent(n); + } + if (!curr->type.isNumber()) { + return false; + } + // It's a number: try to replace it with a 0 or a 1 (trying more values + // could make sense too, but these handle most cases). + auto* c = builder->makeConst(Literal::makeZero(curr->type)); if (tryToReplaceCurrent(c)) { return true; } - c->value = Literal::makeFromInt32(1, curr->type); + c->value = Literal::makeOne(curr->type); c->type = curr->type; return tryToReplaceCurrent(c); } @@ -1183,12 +1219,12 @@ "(read-written) binary\n"; { // read and write it - // TODO(tlively): -all should be replaced with an option to use the existing - // feature set, once implemented. - auto cmd = Path::getBinaryenBinaryTool("wasm-opt") + " " + input + - " -all -o " + test; + auto cmd = + Path::getBinaryenBinaryTool("wasm-opt") + " " + input + " -o " + test; if (!binary) { - cmd += " -S"; + cmd += " -S --all-features"; + } else { + cmd += " --detect-features"; } ProgramResult readWrite(cmd); if (readWrite.failed()) { diff -Nru binaryen-91/src/tools/wasm-shell.cpp binaryen-99/src/tools/wasm-shell.cpp --- binaryen-91/src/tools/wasm-shell.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/tools/wasm-shell.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -28,7 +28,6 @@ #include "support/command-line.h" #include "support/file.h" #include "wasm-interpreter.h" -#include "wasm-printing.h" #include "wasm-s-parser.h" #include "wasm-validator.h" @@ -78,11 +77,11 @@ } } - Literal operate() { + Literals operate() { if (operation == INVOKE) { return instance->callExport(name, arguments); } else if (operation == GET) { - return instance->getExport(name); + return {instance->getExport(name)}; } else { WASM_UNREACHABLE("unknown operation"); } @@ -111,7 +110,7 @@ std::cerr << "Unknown entry " << entry << std::endl; } else { LiteralList arguments; - for (Type param : function->sig.params.expand()) { + for (const auto& param : function->sig.params) { arguments.push_back(Literal(param)); } try { @@ -146,7 +145,7 @@ std::unique_ptr builder; try { builder = std::unique_ptr( - new SExpressionWasmBuilder(wasm, *curr[1])); + new SExpressionWasmBuilder(wasm, *curr[1], IRProfile::Normal)); } catch (const ParseException&) { invalid = true; } @@ -192,8 +191,7 @@ Colors::red(std::cerr); std::cerr << "[should have been invalid]\n"; Colors::normal(std::cerr); - std::cerr << &wasm << '\n'; - abort(); + Fatal() << &wasm << '\n'; } } else if (id == INVOKE) { assert(wasm); @@ -203,30 +201,26 @@ // an invoke test bool trapped = false; WASM_UNUSED(trapped); - Literal result; + Literals result; try { Operation operation(*curr[1], instance, *builder); result = operation.operate(); } catch (const TrapException&) { trapped = true; + } catch (const WasmException& e) { + std::cout << "[exception thrown: " << e.exn << "]" << std::endl; + trapped = true; } if (id == ASSERT_RETURN) { assert(!trapped); + Literals expected; if (curr.size() >= 3) { - Literal expected = - getLiteralFromConstExpression(builder->parseExpression(*curr[2])); - std::cerr << "seen " << result << ", expected " << expected << '\n'; - if (expected != result) { - std::cout << "unexpected, should be identical\n"; - abort(); - } - } else { - Literal expected; - std::cerr << "seen " << result << ", expected " << expected << '\n'; - if (expected != result) { - std::cout << "unexpected, should be identical\n"; - abort(); - } + expected = + getLiteralsFromConstExpression(builder->parseExpression(*curr[2])); + } + std::cerr << "seen " << result << ", expected " << expected << '\n'; + if (expected != result) { + Fatal() << "unexpected, should be identical\n"; } } if (id == ASSERT_TRAP) { @@ -307,18 +301,18 @@ std::cerr << "BUILDING MODULE [line: " << curr.line << "]\n"; Colors::normal(std::cerr); auto module = wasm::make_unique(); - Name moduleName; auto builder = wasm::make_unique( - *module, *root[i], &moduleName); + *module, *root[i], IRProfile::Normal); + auto moduleName = module->name; builders[moduleName].swap(builder); modules[moduleName].swap(module); i++; modules[moduleName]->features = FeatureSet::All; bool valid = WasmValidator().validate(*modules[moduleName]); if (!valid) { - WasmPrinter::printModule(modules[moduleName].get()); + std::cout << *modules[moduleName] << '\n'; + Fatal() << "module failed to validate, see above"; } - assert(valid); run_asserts(moduleName, &i, &checked, @@ -332,7 +326,7 @@ } } catch (ParseException& p) { p.dump(std::cerr); - abort(); + exit(1); } if (checked) { diff -Nru binaryen-91/src/tools/wasm-split.cpp binaryen-99/src/tools/wasm-split.cpp --- binaryen-91/src/tools/wasm-split.cpp 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/src/tools/wasm-split.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,671 @@ +/* + * Copyright 2020 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. + */ + +// wasm-split: Split a module in two or instrument a module to inform future +// splitting. + +#include "ir/module-splitting.h" +#include "ir/module-utils.h" +#include "ir/names.h" +#include "support/file.h" +#include "support/name.h" +#include "support/utilities.h" +#include "tool-options.h" +#include "wasm-builder.h" +#include "wasm-io.h" +#include "wasm-type.h" +#include "wasm-validator.h" +#include + +using namespace wasm; + +namespace { + +const std::string DEFAULT_PROFILE_EXPORT("__write_profile"); + +std::set parseNameList(const std::string& list) { + std::set names; + std::istringstream stream(list); + for (std::string name; std::getline(stream, name, ',');) { + names.insert(name); + } + return names; +} + +struct WasmSplitOptions : ToolOptions { + bool verbose = false; + bool emitBinary = true; + + bool instrument = false; + + std::string profileFile; + std::string profileExport = DEFAULT_PROFILE_EXPORT; + + std::set keepFuncs; + std::set splitFuncs; + + std::string input; + std::string output; + std::string primaryOutput; + std::string secondaryOutput; + + std::string importNamespace; + std::string placeholderNamespace; + std::string exportPrefix; + + // A hack to ensure the split and instrumented modules have the same table + // size when using Emscripten's SPLIT_MODULE mode with dynamic linking. TODO: + // Figure out a more elegant solution for that use case and remove this. + int initialTableSize = -1; + + WasmSplitOptions(); + bool validate(); + void parse(int argc, const char* argv[]); +}; + +WasmSplitOptions::WasmSplitOptions() + : ToolOptions("wasm-split", + "Split a module into a primary module and a secondary " + "module or instrument a module to gather a profile that " + "can inform future splitting.") { + (*this) + .add("--instrument", + "", + "Instrument the module to generate a profile that can be used to " + "guide splitting", + Options::Arguments::Zero, + [&](Options* o, const std::string& argument) { instrument = true; }) + .add( + "--profile", + "", + "The profile to use to guide splitting. May not be used with " + "--instrument.", + Options::Arguments::One, + [&](Options* o, const std::string& argument) { profileFile = argument; }) + .add("--profile-export", + "", + "The export name of the function the embedder calls to write the " + "profile into memory. Defaults to `__write_profile`. Must be used " + "with --instrument.", + Options::Arguments::One, + [&](Options* o, const std::string& argument) { + profileExport = argument; + }) + .add("--keep-funcs", + "", + "Comma-separated list of functions to keep in the primary module, " + "regardless of any profile.", + Options::Arguments::One, + [&](Options* o, const std::string& argument) { + keepFuncs = parseNameList(argument); + }) + .add("--split-funcs", + "", + "Comma-separated list of functions to split into the secondary " + "module, regardless of any profile. If there is no profile, then " + "this defaults to all functions defined in the module.", + Options::Arguments::One, + [&](Options* o, const std::string& argument) { + splitFuncs = parseNameList(argument); + }) + .add("--output", + "-o", + "Output file. Only usable with --instrument.", + Options::Arguments::One, + [&](Options* o, const std::string& argument) { output = argument; }) + .add("--primary-output", + "-o1", + "Output file for the primary module. Not usable with --instrument.", + Options::Arguments::One, + [&](Options* o, const std::string& argument) { + primaryOutput = argument; + }) + .add("--secondary-output", + "-o2", + "Output file for the secondary module. Not usable with --instrument.", + Options::Arguments::One, + [&](Options* o, const std::string& argument) { + secondaryOutput = argument; + }) + .add("--import-namespace", + "", + "The namespace from which to import objects from the primary " + "module into the secondary module.", + Options::Arguments::One, + [&](Options* o, const std::string& argument) { + importNamespace = argument; + }) + .add("--placeholder-namespace", + "", + "The namespace from which to import placeholder functions into " + "the primary module.", + Options::Arguments::One, + [&](Options* o, const std::string& argument) { + placeholderNamespace = argument; + }) + .add( + "--export-prefix", + "", + "An identifying prefix to prepend to new export names created " + "by module splitting.", + Options::Arguments::One, + [&](Options* o, const std::string& argument) { exportPrefix = argument; }) + .add("--verbose", + "-v", + "Verbose output mode. Prints the functions that will be kept " + "and split out when splitting a module.", + Options::Arguments::Zero, + [&](Options* o, const std::string& argument) { + verbose = true; + quiet = false; + }) + .add("--emit-text", + "-S", + "Emit text instead of binary for the output file or files.", + Options::Arguments::Zero, + [&](Options* o, const std::string& argument) { emitBinary = false; }) + .add("--debuginfo", + "-g", + "Emit names section in wasm binary (or full debuginfo in wast)", + Options::Arguments::Zero, + [&](Options* o, const std::string& arguments) { + passOptions.debugInfo = true; + }) + .add("--initial-table", + "", + "A hack to ensure the split and instrumented modules have the same " + "table size when using Emscripten's SPLIT_MODULE mode with dynamic " + "linking. TODO: Figure out a more elegant solution for that use " + "case and remove this.", + Options::Arguments::One, + [&](Options* o, const std::string& argument) { + initialTableSize = std::stoi(argument); + }) + .add_positional( + "INFILE", + Options::Arguments::One, + [&](Options* o, const std::string& argument) { input = argument; }); +} + +bool WasmSplitOptions::validate() { + bool valid = true; + auto fail = [&](auto msg) { + std::cerr << "error: " << msg << "\n"; + valid = false; + }; + + if (!input.size()) { + fail("no input file"); + } + if (instrument) { + using Opt = std::pair; + for (auto& opt : {Opt{profileFile, "--profile"}, + Opt{primaryOutput, "primary output"}, + Opt{secondaryOutput, "secondary output"}, + Opt{importNamespace, "--import-namespace"}, + Opt{placeholderNamespace, "--placeholder-namespace"}, + Opt{exportPrefix, "--export-prefix"}}) { + if (opt.first.size()) { + fail(opt.second + " cannot be used with --instrument"); + } + } + if (keepFuncs.size()) { + fail("--keep-funcs cannot be used with --instrument"); + } + if (splitFuncs.size()) { + fail("--split-funcs cannot be used with --instrument"); + } + } else { + if (output.size()) { + fail( + "must provide separate primary and secondary output with -o1 and -o2"); + } + if (profileExport != DEFAULT_PROFILE_EXPORT) { + fail("--profile-export must be used with --instrument"); + } + } + + std::vector impossible; + std::set_intersection(keepFuncs.begin(), + keepFuncs.end(), + splitFuncs.begin(), + splitFuncs.end(), + std::inserter(impossible, impossible.end())); + for (auto& func : impossible) { + fail(std::string("Cannot both keep and split out function ") + + func.c_str()); + } + + return valid; +} + +void WasmSplitOptions::parse(int argc, const char* argv[]) { + ToolOptions::parse(argc, argv); + // Since --quiet is defined in ToolOptions but --verbose is defined here, + // --quiet doesn't know to unset --verbose. Fix it up here. + if (quiet && verbose) { + verbose = false; + } +} + +void parseInput(Module& wasm, const WasmSplitOptions& options) { + ModuleReader reader; + reader.setProfile(options.profile); + try { + reader.read(options.input, wasm); + } catch (ParseException& p) { + p.dump(std::cerr); + std::cerr << '\n'; + Fatal() << "error parsing wasm"; + } catch (std::bad_alloc&) { + Fatal() << "error building module, std::bad_alloc (possibly invalid " + "request for silly amounts of memory)"; + } + options.applyFeatures(wasm); +} + +// Add a global monotonic counter and a timestamp global for each function, code +// at the beginning of each function to set its timestamp, and a new exported +// function for dumping the profile data. +struct Instrumenter : public Pass { + PassRunner* runner = nullptr; + Module* wasm = nullptr; + + const std::string& profileExport; + uint64_t moduleHash; + + Name counterGlobal; + std::vector functionGlobals; + + Instrumenter(const std::string& profileExport, uint64_t moduleHash); + + void run(PassRunner* runner, Module* wasm) override; + void addGlobals(); + void instrumentFuncs(); + void addProfileExport(); +}; + +Instrumenter::Instrumenter(const std::string& profileExport, + uint64_t moduleHash) + : profileExport(profileExport), moduleHash(moduleHash) {} + +void Instrumenter::run(PassRunner* runner, Module* wasm) { + this->runner = runner; + this->wasm = wasm; + addGlobals(); + instrumentFuncs(); + addProfileExport(); +} + +void Instrumenter::addGlobals() { + // Create fresh global names (over-reserves, but that's ok) + counterGlobal = Names::getValidGlobalName(*wasm, "monotonic_counter"); + functionGlobals.reserve(wasm->functions.size()); + ModuleUtils::iterDefinedFunctions(*wasm, [&](Function* func) { + functionGlobals.push_back(Names::getValidGlobalName( + *wasm, std::string(func->name.c_str()) + "_timestamp")); + }); + + // Create and add new globals + auto addGlobal = [&](Name name) { + auto global = Builder::makeGlobal( + name, + Type::i32, + Builder(*wasm).makeConst(Literal::makeZero(Type::i32)), + Builder::Mutable); + global->hasExplicitName = true; + wasm->addGlobal(std::move(global)); + }; + addGlobal(counterGlobal); + for (auto& name : functionGlobals) { + addGlobal(name); + } +} + +void Instrumenter::instrumentFuncs() { + // Inject the following code at the beginning of each function to advance the + // monotonic counter and set the function's timestamp if it hasn't already + // been set. + // + // (if (i32.eqz (global.get $timestamp)) + // (block + // (global.set $monotonic_counter + // (i32.add + // (global.get $monotonic_counter) + // (i32.const 1) + // ) + // ) + // (global.set $timestamp + // (global.get $monotonic_counter) + // ) + // ) + // ) + Builder builder(*wasm); + auto globalIt = functionGlobals.begin(); + ModuleUtils::iterDefinedFunctions(*wasm, [&](Function* func) { + func->body = builder.makeSequence( + builder.makeIf( + builder.makeUnary(EqZInt32, + builder.makeGlobalGet(*globalIt, Type::i32)), + builder.makeSequence( + builder.makeGlobalSet( + counterGlobal, + builder.makeBinary(AddInt32, + builder.makeGlobalGet(counterGlobal, Type::i32), + builder.makeConst(Literal::makeOne(Type::i32)))), + builder.makeGlobalSet( + *globalIt, builder.makeGlobalGet(counterGlobal, Type::i32)))), + func->body, + func->body->type); + ++globalIt; + }); +} + +// wasm-split profile format: +// +// The wasm-split profile is a binary format designed to be simple to produce +// and consume. It is comprised of: +// +// 1. An 8-byte module hash +// +// 2. A 4-byte timestamp for each defined function +// +// The module hash is meant to guard against bugs where the module that was +// instrumented and the module that is being split are different. The timestamps +// are non-zero for functions that were called during the instrumented run and 0 +// otherwise. Functions with smaller non-zero timestamps were called earlier in +// the instrumented run than funtions with larger timestamps. + +void Instrumenter::addProfileExport() { + // Create and export a function to dump the profile into a given memory + // buffer. The function takes the available address and buffer size as + // arguments and returns the total size of the profile. It only actually + // writes the profile if the given space is sufficient to hold it. + auto name = Names::getValidFunctionName(*wasm, profileExport); + auto writeProfile = Builder::makeFunction( + name, Signature({Type::i32, Type::i32}, Type::i32), {}); + writeProfile->hasExplicitName = true; + writeProfile->setLocalName(0, "addr"); + writeProfile->setLocalName(1, "size"); + + // Calculate the size of the profile: + // 8 bytes module hash + + // 4 bytes for the timestamp for each function + const size_t profileSize = 8 + 4 * functionGlobals.size(); + + // Create the function body + Builder builder(*wasm); + auto getAddr = [&]() { return builder.makeLocalGet(0, Type::i32); }; + auto getSize = [&]() { return builder.makeLocalGet(1, Type::i32); }; + auto hashConst = [&]() { return builder.makeConst(int64_t(moduleHash)); }; + auto profileSizeConst = [&]() { + return builder.makeConst(int32_t(profileSize)); + }; + + // Write the hash followed by all the time stamps + Expression* writeData = + builder.makeStore(8, 0, 1, getAddr(), hashConst(), Type::i64); + + uint32_t offset = 8; + for (const auto& global : functionGlobals) { + writeData = builder.blockify( + writeData, + builder.makeStore(4, + offset, + 1, + getAddr(), + builder.makeGlobalGet(global, Type::i32), + Type::i32)); + offset += 4; + } + + writeProfile->body = builder.makeSequence( + builder.makeIf(builder.makeBinary(GeUInt32, getSize(), profileSizeConst()), + writeData), + profileSizeConst()); + + // Create an export for the function + wasm->addFunction(std::move(writeProfile)); + wasm->addExport( + Builder::makeExport(profileExport, name, ExternalKind::Function)); + + // Also make sure there is a memory with enough pages to write into + size_t pages = (profileSize + Memory::kPageSize - 1) / Memory::kPageSize; + if (!wasm->memory.exists) { + wasm->memory.exists = true; + wasm->memory.initial = pages; + wasm->memory.max = pages; + } else if (wasm->memory.initial < pages) { + wasm->memory.initial = pages; + if (wasm->memory.max < pages) { + wasm->memory.max = pages; + } + } + + // TODO: export the memory if it is not already exported. +} + +uint64_t hashFile(const std::string& filename) { + auto contents(read_file>(filename, Flags::Binary)); + size_t digest = 0; + // Don't use `hash` or `rehash` - they aren't deterministic between executions + for (char c : contents) { + hash_combine(digest, c); + } + return uint64_t(digest); +} + +void adjustTableSize(Module& wasm, int initialSize) { + if (initialSize < 0) { + return; + } + if (!wasm.table.exists) { + Fatal() << "--initial-table used but there is no table"; + } + if ((uint64_t)initialSize < wasm.table.initial) { + Fatal() << "Specified initial table size too small, should be at least " + << wasm.table.initial; + } + if ((uint64_t)initialSize > wasm.table.max) { + Fatal() << "Specified initial table size larger than max table size " + << wasm.table.max; + } + wasm.table.initial = initialSize; +} + +void instrumentModule(Module& wasm, const WasmSplitOptions& options) { + // Check that the profile export name is not already taken + if (wasm.getExportOrNull(options.profileExport) != nullptr) { + Fatal() << "error: Export " << options.profileExport << " already exists."; + } + + uint64_t moduleHash = hashFile(options.input); + PassRunner runner(&wasm, options.passOptions); + Instrumenter(options.profileExport, moduleHash).run(&runner, &wasm); + + adjustTableSize(wasm, options.initialTableSize); + + // Write the output modules + ModuleWriter writer; + writer.setBinary(options.emitBinary); + writer.setDebugInfo(options.passOptions.debugInfo); + writer.write(wasm, options.output); +} + +// See "wasm-split profile format" above for more information. +std::set readProfile(Module& wasm, const WasmSplitOptions& options) { + auto profileData = + read_file>(options.profileFile, Flags::Binary); + size_t i = 0; + auto readi32 = [&]() { + if (i + 4 > profileData.size()) { + Fatal() << "Unexpected end of profile data"; + } + uint32_t i32 = 0; + i32 |= uint32_t(uint8_t(profileData[i++])); + i32 |= uint32_t(uint8_t(profileData[i++])) << 8; + i32 |= uint32_t(uint8_t(profileData[i++])) << 16; + i32 |= uint32_t(uint8_t(profileData[i++])) << 24; + return i32; + }; + + // Read and compare the 8-byte module hash. + uint64_t expected = readi32(); + expected |= uint64_t(readi32()) << 32; + if (expected != hashFile(options.input)) { + Fatal() << "error: checksum in profile does not match module checksum. " + << "The split module must be the original module that was " + << "instrumented to generate the profile."; + } + + std::set keptFuncs; + ModuleUtils::iterDefinedFunctions(wasm, [&](Function* func) { + uint32_t timestamp = readi32(); + // TODO: provide an option to set the timestamp threshold. For now, kee the + // function if the profile shows it being run at all. + if (timestamp > 0) { + keptFuncs.insert(func->name); + } + }); + + if (i != profileData.size()) { + // TODO: Handle concatenated profile data. + Fatal() << "Unexpected extra profile data"; + } + + return keptFuncs; +} + +void splitModule(Module& wasm, const WasmSplitOptions& options) { + std::set keepFuncs; + + if (options.profileFile.size()) { + // Use the profile to initialize `keepFuncs` + keepFuncs = readProfile(wasm, options); + } + + // Add in the functions specified with --keep-funcs + for (auto& func : options.keepFuncs) { + if (!options.quiet && wasm.getFunctionOrNull(func) == nullptr) { + std::cerr << "warning: function " << func << " does not exist\n"; + } + keepFuncs.insert(func); + } + + // Remove the functions specified with --remove-funcs + for (auto& func : options.splitFuncs) { + auto* function = wasm.getFunctionOrNull(func); + if (!options.quiet && function == nullptr) { + std::cerr << "warning: function " << func << " does not exist\n"; + } + if (function && function->imported()) { + if (!options.quiet) { + std::cerr << "warning: cannot split out imported function " << func + << "\n"; + } + } else { + keepFuncs.erase(func); + } + } + + if (!options.quiet && keepFuncs.size() == 0) { + std::cerr << "warning: not keeping any functions in the primary module\n"; + } + + // If warnings are enabled, check that any functions are being split out. + if (!options.quiet) { + std::set splitFuncs; + ModuleUtils::iterDefinedFunctions(wasm, [&](Function* func) { + if (keepFuncs.count(func->name) == 0) { + splitFuncs.insert(func->name); + } + }); + + if (splitFuncs.size() == 0) { + std::cerr + << "warning: not splitting any functions out to the secondary module\n"; + } + + // Dump the kept and split functions if we are verbose + if (options.verbose) { + auto printCommaSeparated = [&](auto funcs) { + for (auto it = funcs.begin(); it != funcs.end(); ++it) { + if (it != funcs.begin()) { + std::cout << ", "; + } + std::cout << *it; + } + }; + + std::cout << "Keeping functions: "; + printCommaSeparated(keepFuncs); + std::cout << "\n"; + + std::cout << "Splitting out functions: "; + printCommaSeparated(splitFuncs); + std::cout << "\n"; + } + } + + // Actually perform the splitting + ModuleSplitting::Config config; + config.primaryFuncs = std::move(keepFuncs); + if (options.importNamespace.size()) { + config.importNamespace = options.importNamespace; + } + if (options.placeholderNamespace.size()) { + config.placeholderNamespace = options.placeholderNamespace; + } + if (options.exportPrefix.size()) { + config.newExportPrefix = options.exportPrefix; + } + std::unique_ptr secondary = + ModuleSplitting::splitFunctions(wasm, config); + + adjustTableSize(wasm, options.initialTableSize); + adjustTableSize(*secondary, options.initialTableSize); + + // Write the output modules + ModuleWriter writer; + writer.setBinary(options.emitBinary); + writer.setDebugInfo(options.passOptions.debugInfo); + writer.write(wasm, options.primaryOutput); + writer.write(*secondary, options.secondaryOutput); +} + +} // anonymous namespace + +int main(int argc, const char* argv[]) { + WasmSplitOptions options; + options.parse(argc, argv); + + if (!options.validate()) { + Fatal() << "Invalid command line arguments"; + } + + Module wasm; + parseInput(wasm, options); + + if (options.passOptions.validate && !WasmValidator().validate(wasm)) { + Fatal() << "error validating input"; + } + + if (options.instrument) { + instrumentModule(wasm, options); + } else { + splitModule(wasm, options); + } +} diff -Nru binaryen-91/src/wasm/CMakeLists.txt binaryen-99/src/wasm/CMakeLists.txt --- binaryen-91/src/wasm/CMakeLists.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm/CMakeLists.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,3 +1,4 @@ +file(GLOB wasm_HEADERS ../*.h) set(wasm_SOURCES literal.cpp wasm.cpp @@ -11,5 +12,6 @@ wasm-stack.cpp wasm-type.cpp wasm-validator.cpp + ${wasm_HEADERS} ) add_library(wasm OBJECT ${wasm_SOURCES}) diff -Nru binaryen-91/src/wasm/literal.cpp binaryen-99/src/wasm/literal.cpp --- binaryen-91/src/wasm/literal.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm/literal.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -29,10 +29,109 @@ template using LaneArray = std::array; +Literal::Literal(Type type) : type(type) { + if (type == Type::i31ref) { + // i31ref is special in that it is non-nullable, so we construct with zero + i32 = 0; + } else { + assert(type != Type::unreachable && (!type.isRef() || type.isNullable())); + if (type.isException()) { + new (&exn) std::unique_ptr(); + } else if (isGCData()) { + new (&gcData) std::shared_ptr(); + } else if (type.isRtt()) { + // Allocate a new RttSupers (with no data). + new (&rttSupers) auto(std::make_unique()); + } else { + memset(&v128, 0, 16); + } + } +} + Literal::Literal(const uint8_t init[16]) : type(Type::v128) { memcpy(&v128, init, 16); } +Literal::Literal(std::shared_ptr gcData, Type type) + : gcData(gcData), type(type) { + // Null data is only allowed if nullable. + assert(gcData || type.isNullable()); + // The type must be a proper type for GC data. + assert(isGCData()); +} + +Literal::Literal(std::unique_ptr&& rttSupers, Type type) + : rttSupers(std::move(rttSupers)), type(type) { + assert(type.isRtt()); +} + +Literal::Literal(const Literal& other) : type(other.type) { + if (type.isException()) { + // Avoid calling the destructor on an uninitialized value + if (other.exn != nullptr) { + new (&exn) auto(std::make_unique(*other.exn)); + } else { + new (&exn) std::unique_ptr(); + } + } else if (other.isGCData()) { + new (&gcData) std::shared_ptr(other.gcData); + } else if (type.isFunction()) { + func = other.func; + } else if (type.isRtt()) { + // Allocate a new RttSupers with a copy of the other's data. + new (&rttSupers) auto(std::make_unique(*other.rttSupers)); + } else { + TODO_SINGLE_COMPOUND(type); + switch (type.getBasic()) { + case Type::i32: + case Type::f32: + case Type::i31ref: + i32 = other.i32; + break; + case Type::i64: + case Type::f64: + i64 = other.i64; + break; + case Type::v128: + memcpy(&v128, other.v128, 16); + break; + case Type::none: + break; + case Type::externref: + case Type::anyref: + case Type::eqref: + break; // null + case Type::funcref: + case Type::exnref: + case Type::unreachable: + WASM_UNREACHABLE("unexpected type"); + } + } +} + +Literal::~Literal() { + if (type.isException()) { + exn.~unique_ptr(); + } else if (isGCData()) { + gcData.~shared_ptr(); + } else if (type.isRtt()) { + rttSupers.~unique_ptr(); + } else if (type.isFunction()) { + // Nothing special to do. + } else { + // Basic types need no special handling. + assert(type.isBasic()); + } +} + +Literal& Literal::operator=(const Literal& other) { + if (this != &other) { + this->~Literal(); + new (this) auto(other); + } + return *this; +} + template static void extractBytes(uint8_t (&dest)[16], const LaneArray& lanes) { std::array bytes; @@ -66,6 +165,58 @@ extractBytes(v128, lanes); } +Literals Literal::makeZeros(Type type) { + assert(type.isConcrete()); + Literals zeroes; + for (const auto& t : type) { + zeroes.push_back(makeZero(t)); + } + return zeroes; +} + +Literals Literal::makeOnes(Type type) { + assert(type.isConcrete()); + Literals units; + for (const auto& t : type) { + units.push_back(makeOne(t)); + } + return units; +} + +Literals Literal::makeNegOnes(Type type) { + assert(type.isConcrete()); + Literals units; + for (const auto& t : type) { + units.push_back(makeNegOne(t)); + } + return units; +} + +Literal Literal::makeZero(Type type) { + assert(type.isSingle()); + if (type.isRef()) { + if (type == Type::i31ref) { + return makeI31(0); + } else { + return makeNull(type); + } + } else if (type.isRtt()) { + return Literal(type); + } else { + return makeFromInt32(0, type); + } +} + +Literal Literal::makeOne(Type type) { + assert(type.isNumber()); + return makeFromInt32(1, type); +} + +Literal Literal::makeNegOne(Type type) { + assert(type.isNumber()); + return makeFromInt32(-1, type); +} + std::array Literal::getv128() const { assert(type == Type::v128); std::array ret; @@ -73,36 +224,51 @@ return ret; } +ExceptionPackage Literal::getExceptionPackage() const { + assert(type.isException() && exn != nullptr); + return *exn; +} + +std::shared_ptr Literal::getGCData() const { + assert(isGCData()); + return gcData; +} + +const RttSupers& Literal::getRttSupers() const { + assert(type.isRtt()); + return *rttSupers; +} + Literal Literal::castToF32() { assert(type == Type::i32); - Literal ret(i32); - ret.type = Type::f32; + Literal ret(Type::f32); + ret.i32 = i32; return ret; } Literal Literal::castToF64() { assert(type == Type::i64); - Literal ret(i64); - ret.type = Type::f64; + Literal ret(Type::f64); + ret.i64 = i64; return ret; } Literal Literal::castToI32() { assert(type == Type::f32); - Literal ret(i32); - ret.type = Type::i32; + Literal ret(Type::i32); + ret.i32 = i32; return ret; } Literal Literal::castToI64() { assert(type == Type::f64); - Literal ret(i64); - ret.type = Type::i64; + Literal ret(Type::i64); + ret.i64 = i64; return ret; } int64_t Literal::getInteger() const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return i32; case Type::i64: @@ -112,8 +278,19 @@ } } +uint64_t Literal::getUnsigned() const { + switch (type.getBasic()) { + case Type::i32: + return static_cast(i32); + case Type::i64: + return i64; + default: + abort(); + } +} + double Literal::getFloat() const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::f32: return getf32(); case Type::f64: @@ -125,7 +302,7 @@ void Literal::getBits(uint8_t (&buf)[16]) const { memset(buf, 0, 16); - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: case Type::f32: memcpy(buf, &i32, sizeof(i32)); @@ -137,38 +314,67 @@ case Type::v128: memcpy(buf, &v128, sizeof(v128)); break; - case Type::funcref: - case Type::nullref: - break; - case Type::anyref: - case Type::exnref: case Type::none: case Type::unreachable: + case Type::funcref: + case Type::externref: + case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: WASM_UNREACHABLE("invalid type"); } } bool Literal::operator==(const Literal& other) const { - if (type.isRef() && other.type.isRef()) { - if (type == Type::nullref && other.type == Type::nullref) { - return true; - } - if (type == Type::funcref && other.type == Type::funcref && - func == other.func) { - return true; - } - return false; - } if (type != other.type) { return false; } - if (type == Type::none) { - return true; + auto compareRef = [&]() { + assert(type.isRef()); + if (isNull() || other.isNull()) { + return isNull() == other.isNull(); + } + if (type.isFunction()) { + assert(func.is() && other.func.is()); + return func == other.func; + } + if (type.isException()) { + assert(exn != nullptr && other.exn != nullptr); + return *exn == *other.exn; + } + // other non-null reference type literals cannot represent concrete values, + // i.e. there is no concrete externref, anyref or eqref other than null. + WASM_UNREACHABLE("unexpected type"); + }; + if (type.isBasic()) { + switch (type.getBasic()) { + case Type::none: + return true; // special voided literal + case Type::i32: + case Type::f32: + case Type::i31ref: + return i32 == other.i32; + case Type::i64: + case Type::f64: + return i64 == other.i64; + case Type::v128: + return memcmp(v128, other.v128, 16) == 0; + case Type::funcref: + case Type::externref: + case Type::exnref: + case Type::anyref: + case Type::eqref: + return compareRef(); + case Type::unreachable: + break; + } + } else if (type.isRef()) { + return compareRef(); + } else if (type.isRtt()) { + return *rttSupers == *other.rttSupers; } - uint8_t bits[16], other_bits[16]; - getBits(bits); - other.getBits(other_bits); - return memcmp(bits, other_bits, 16) == 0; + WASM_UNREACHABLE("unexpected type"); } bool Literal::operator!=(const Literal& other) const { @@ -266,67 +472,122 @@ std::ostream& operator<<(std::ostream& o, Literal literal) { prepareMinorColor(o); - switch (literal.type.getSingle()) { - case Type::none: - o << "?"; - break; - case Type::i32: - o << literal.i32; - break; - case Type::i64: - o << literal.i64; - break; - case Type::f32: - literal.printFloat(o, literal.getf32()); - break; - case Type::f64: - literal.printDouble(o, literal.getf64()); - break; - case Type::v128: - o << "i32x4 "; - literal.printVec128(o, literal.getv128()); - break; - case Type::funcref: + if (literal.type.isFunction()) { + if (literal.isNull()) { + o << "funcref(null)"; + } else { o << "funcref(" << literal.getFunc() << ")"; - break; - case Type::nullref: - o << "nullref"; - break; - case Type::anyref: - case Type::exnref: - case Type::unreachable: - WASM_UNREACHABLE("invalid type"); + } + } else if (literal.isGCData()) { + auto data = literal.getGCData(); + if (data) { + o << "[ref " << data->rtt << ' ' << data->values << ']'; + } else { + o << "[ref null " << literal.type << ']'; + } + } else if (literal.type.isRtt()) { + o << "[rtt "; + for (Type super : literal.getRttSupers()) { + o << super << " :> "; + } + o << literal.type << ']'; + } else { + TODO_SINGLE_COMPOUND(literal.type); + switch (literal.type.getBasic()) { + case Type::none: + o << "?"; + break; + case Type::i32: + o << literal.geti32(); + break; + case Type::i64: + o << literal.geti64(); + break; + case Type::f32: + literal.printFloat(o, literal.getf32()); + break; + case Type::f64: + literal.printDouble(o, literal.getf64()); + break; + case Type::v128: + o << "i32x4 "; + literal.printVec128(o, literal.getv128()); + break; + case Type::externref: + assert(literal.isNull() && "unexpected non-null externref literal"); + o << "externref(null)"; + break; + case Type::exnref: + if (literal.isNull()) { + o << "exnref(null)"; + } else { + o << "exnref(" << literal.getExceptionPackage() << ")"; + } + break; + case Type::anyref: + assert(literal.isNull() && "unexpected non-null anyref literal"); + o << "anyref(null)"; + break; + case Type::eqref: + assert(literal.isNull() && "unexpected non-null eqref literal"); + o << "eqref(null)"; + break; + case Type::i31ref: + o << "i31ref(" << literal.geti31() << ")"; + break; + default: + WASM_UNREACHABLE("invalid type"); + } } restoreNormalColor(o); return o; } +std::ostream& operator<<(std::ostream& o, wasm::Literals literals) { + if (literals.size() == 1) { + return o << literals[0]; + } else { + o << '('; + if (literals.size() > 0) { + o << literals[0]; + } + for (size_t i = 1; i < literals.size(); ++i) { + o << ", " << literals[i]; + } + return o << ')'; + } +} + +std::ostream& operator<<(std::ostream& o, const ExceptionPackage& exn) { + return o << exn.event << " " << exn.values; +} + Literal Literal::countLeadingZeroes() const { if (type == Type::i32) { - return Literal((int32_t)CountLeadingZeroes(i32)); + return Literal((int32_t)Bits::countLeadingZeroes(i32)); } if (type == Type::i64) { - return Literal((int64_t)CountLeadingZeroes(i64)); + return Literal((int64_t)Bits::countLeadingZeroes(i64)); } WASM_UNREACHABLE("invalid type"); } Literal Literal::countTrailingZeroes() const { if (type == Type::i32) { - return Literal((int32_t)CountTrailingZeroes(i32)); + return Literal((int32_t)Bits::countTrailingZeroes(i32)); } if (type == Type::i64) { - return Literal((int64_t)CountTrailingZeroes(i64)); + return Literal((int64_t)Bits::countTrailingZeroes(i64)); } WASM_UNREACHABLE("invalid type"); } Literal Literal::popCount() const { if (type == Type::i32) { - return Literal((int32_t)PopCount(i32)); + return Literal((int32_t)Bits::popCount(i32)); } if (type == Type::i64) { - return Literal((int64_t)PopCount(i64)); + return Literal((int64_t)Bits::popCount(i64)); } WASM_UNREACHABLE("invalid type"); } @@ -486,7 +747,7 @@ } Literal Literal::eqz() const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return eq(Literal(int32_t(0))); case Type::i64: @@ -497,9 +758,11 @@ return eq(Literal(double(0))); case Type::v128: case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: case Type::unreachable: WASM_UNREACHABLE("unexpected type"); @@ -508,7 +771,7 @@ } Literal Literal::neg() const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(-uint32_t(i32)); case Type::i64: @@ -519,9 +782,11 @@ return Literal(int64_t(i64 ^ 0x8000000000000000ULL)).castToF64(); case Type::v128: case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: case Type::unreachable: WASM_UNREACHABLE("unexpected type"); @@ -530,20 +795,22 @@ } Literal Literal::abs() const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: - return Literal(i32 & 0x7fffffff); + return Literal(std::abs(i32)); case Type::i64: - return Literal(int64_t(i64 & 0x7fffffffffffffffULL)); + return Literal(std::abs(i64)); case Type::f32: return Literal(i32 & 0x7fffffff).castToF32(); case Type::f64: return Literal(int64_t(i64 & 0x7fffffffffffffffULL)).castToF64(); case Type::v128: case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: case Type::unreachable: WASM_UNREACHABLE("unexpected type"); @@ -552,7 +819,7 @@ } Literal Literal::ceil() const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::f32: return Literal(std::ceil(getf32())); case Type::f64: @@ -563,7 +830,7 @@ } Literal Literal::floor() const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::f32: return Literal(std::floor(getf32())); case Type::f64: @@ -574,7 +841,7 @@ } Literal Literal::trunc() const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::f32: return Literal(std::trunc(getf32())); case Type::f64: @@ -585,7 +852,7 @@ } Literal Literal::nearbyint() const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::f32: return Literal(std::nearbyint(getf32())); case Type::f64: @@ -596,7 +863,7 @@ } Literal Literal::sqrt() const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::f32: return Literal(std::sqrt(getf32())); case Type::f64: @@ -634,21 +901,57 @@ return Literal(float(getf64())); } +// Wasm has nondeterministic rules for NaN propagation in some operations. For +// example. f32.neg is deterministic and just flips the sign, even of a NaN, but +// f32.add is nondeterministic, and if one or more of the inputs is a NaN, then +// +// * if all NaNs are canonical NaNs, the output is some arbitrary canonical NaN +// * otherwise the output is some arbitrary arithmetic NaN +// +// (canonical = NaN payload is 1000..000; arithmetic: 1???..???, that is, the +// high bit is 1 and all others can be 0 or 1) +// +// For many things we don't need to care, and can just do a normal C++ add for +// an f32.add, for example - the wasm rules are specified so that things like +// that just work (in order for such math to be fast). However, for our +// optimizer, it is useful to "standardize" NaNs when there is nondeterminism. +// That is, when there are multiple valid outputs, it's nice to emit the same +// one consistently, so that it doesn't look like the optimization changed +// something. In other words, if the valid output of an expression is a set of +// valid NaNs, and after optimization the output is still that same set, then +// the optimization is valid. And if the interpreter picks the same NaN in both +// cases from that identical set then nothing looks wrong to the fuzzer. +template static Literal standardizeNaN(T result) { + if (!std::isnan(result)) { + return Literal(result); + } + // Pick a simple canonical payload, and positive. + if (sizeof(T) == 4) { + return Literal(Literal(uint32_t(0x7fc00000u)).reinterpretf32()); + } else if (sizeof(T) == 8) { + return Literal(Literal(uint64_t(0x7ff8000000000000ull)).reinterpretf64()); + } else { + WASM_UNREACHABLE("invalid float"); + } +} + Literal Literal::add(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(uint32_t(i32) + uint32_t(other.i32)); case Type::i64: return Literal(uint64_t(i64) + uint64_t(other.i64)); case Type::f32: - return Literal(getf32() + other.getf32()); + return standardizeNaN(getf32() + other.getf32()); case Type::f64: - return Literal(getf64() + other.getf64()); + return standardizeNaN(getf64() + other.getf64()); case Type::v128: case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: case Type::unreachable: WASM_UNREACHABLE("unexpected type"); @@ -657,20 +960,22 @@ } Literal Literal::sub(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(uint32_t(i32) - uint32_t(other.i32)); case Type::i64: return Literal(uint64_t(i64) - uint64_t(other.i64)); case Type::f32: - return Literal(getf32() - other.getf32()); + return standardizeNaN(getf32() - other.getf32()); case Type::f64: - return Literal(getf64() - other.getf64()); + return standardizeNaN(getf64() - other.getf64()); case Type::v128: case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: case Type::unreachable: WASM_UNREACHABLE("unexpected type"); @@ -750,20 +1055,22 @@ } Literal Literal::mul(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(uint32_t(i32) * uint32_t(other.i32)); case Type::i64: return Literal(uint64_t(i64) * uint64_t(other.i64)); case Type::f32: - return Literal(getf32() * other.getf32()); + return standardizeNaN(getf32() * other.getf32()); case Type::f64: - return Literal(getf64() * other.getf64()); + return standardizeNaN(getf64() * other.getf64()); case Type::v128: case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: case Type::unreachable: WASM_UNREACHABLE("unexpected type"); @@ -772,7 +1079,7 @@ } Literal Literal::div(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::f32: { float lhs = getf32(), rhs = other.getf32(); float sign = std::signbit(lhs) == std::signbit(rhs) ? 0.f : -0.f; @@ -780,10 +1087,8 @@ case FP_ZERO: switch (std::fpclassify(lhs)) { case FP_NAN: - return Literal(setQuietNaN(lhs)); case FP_ZERO: - return Literal( - std::copysign(std::numeric_limits::quiet_NaN(), sign)); + return standardizeNaN(lhs / rhs); case FP_NORMAL: // fallthrough case FP_SUBNORMAL: // fallthrough case FP_INFINITE: @@ -796,7 +1101,7 @@ case FP_INFINITE: // fallthrough case FP_NORMAL: // fallthrough case FP_SUBNORMAL: - return Literal(lhs / rhs); + return standardizeNaN(lhs / rhs); default: WASM_UNREACHABLE("invalid fp classification"); } @@ -808,10 +1113,8 @@ case FP_ZERO: switch (std::fpclassify(lhs)) { case FP_NAN: - return Literal(setQuietNaN(lhs)); case FP_ZERO: - return Literal( - std::copysign(std::numeric_limits::quiet_NaN(), sign)); + return standardizeNaN(lhs / rhs); case FP_NORMAL: // fallthrough case FP_SUBNORMAL: // fallthrough case FP_INFINITE: @@ -824,7 +1127,7 @@ case FP_INFINITE: // fallthrough case FP_NORMAL: // fallthrough case FP_SUBNORMAL: - return Literal(lhs / rhs); + return standardizeNaN(lhs / rhs); default: WASM_UNREACHABLE("invalid fp classification"); } @@ -835,7 +1138,7 @@ } Literal Literal::divS(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(i32 / other.i32); case Type::i64: @@ -846,7 +1149,7 @@ } Literal Literal::divU(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(uint32_t(i32) / uint32_t(other.i32)); case Type::i64: @@ -857,7 +1160,7 @@ } Literal Literal::remS(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(i32 % other.i32); case Type::i64: @@ -868,7 +1171,7 @@ } Literal Literal::remU(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(uint32_t(i32) % uint32_t(other.i32)); case Type::i64: @@ -896,7 +1199,7 @@ } Literal Literal::and_(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(i32 & other.i32); case Type::i64: @@ -907,7 +1210,7 @@ } Literal Literal::or_(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(i32 | other.i32); case Type::i64: @@ -918,7 +1221,7 @@ } Literal Literal::xor_(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(i32 ^ other.i32); case Type::i64: @@ -929,7 +1232,7 @@ } Literal Literal::shl(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(uint32_t(i32) << Bits::getEffectiveShifts(other.i32, Type::i32)); @@ -942,7 +1245,7 @@ } Literal Literal::shrS(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(i32 >> Bits::getEffectiveShifts(other.i32, Type::i32)); case Type::i64: @@ -953,7 +1256,7 @@ } Literal Literal::shrU(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(uint32_t(i32) >> Bits::getEffectiveShifts(other.i32, Type::i32)); @@ -966,29 +1269,29 @@ } Literal Literal::rotL(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: - return Literal(RotateLeft(uint32_t(i32), uint32_t(other.i32))); + return Literal(Bits::rotateLeft(uint32_t(i32), uint32_t(other.i32))); case Type::i64: - return Literal(RotateLeft(uint64_t(i64), uint64_t(other.i64))); + return Literal(Bits::rotateLeft(uint64_t(i64), uint64_t(other.i64))); default: WASM_UNREACHABLE("unexpected type"); } } Literal Literal::rotR(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: - return Literal(RotateRight(uint32_t(i32), uint32_t(other.i32))); + return Literal(Bits::rotateRight(uint32_t(i32), uint32_t(other.i32))); case Type::i64: - return Literal(RotateRight(uint64_t(i64), uint64_t(other.i64))); + return Literal(Bits::rotateRight(uint64_t(i64), uint64_t(other.i64))); default: WASM_UNREACHABLE("unexpected type"); } } Literal Literal::eq(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(i32 == other.i32); case Type::i64: @@ -999,9 +1302,11 @@ return Literal(getf64() == other.getf64()); case Type::v128: case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: case Type::unreachable: WASM_UNREACHABLE("unexpected type"); @@ -1010,7 +1315,7 @@ } Literal Literal::ne(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(i32 != other.i32); case Type::i64: @@ -1021,9 +1326,11 @@ return Literal(getf64() != other.getf64()); case Type::v128: case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: case Type::unreachable: WASM_UNREACHABLE("unexpected type"); @@ -1032,7 +1339,7 @@ } Literal Literal::ltS(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(i32 < other.i32); case Type::i64: @@ -1043,7 +1350,7 @@ } Literal Literal::ltU(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(uint32_t(i32) < uint32_t(other.i32)); case Type::i64: @@ -1054,7 +1361,7 @@ } Literal Literal::lt(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::f32: return Literal(getf32() < other.getf32()); case Type::f64: @@ -1065,7 +1372,7 @@ } Literal Literal::leS(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(i32 <= other.i32); case Type::i64: @@ -1076,7 +1383,7 @@ } Literal Literal::leU(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(uint32_t(i32) <= uint32_t(other.i32)); case Type::i64: @@ -1087,7 +1394,7 @@ } Literal Literal::le(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::f32: return Literal(getf32() <= other.getf32()); case Type::f64: @@ -1098,7 +1405,7 @@ } Literal Literal::gtS(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(i32 > other.i32); case Type::i64: @@ -1109,7 +1416,7 @@ } Literal Literal::gtU(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(uint32_t(i32) > uint32_t(other.i32)); case Type::i64: @@ -1120,7 +1427,7 @@ } Literal Literal::gt(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::f32: return Literal(getf32() > other.getf32()); case Type::f64: @@ -1131,7 +1438,7 @@ } Literal Literal::geS(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(i32 >= other.i32); case Type::i64: @@ -1142,7 +1449,7 @@ } Literal Literal::geU(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: return Literal(uint32_t(i32) >= uint32_t(other.i32)); case Type::i64: @@ -1153,7 +1460,7 @@ } Literal Literal::ge(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::f32: return Literal(getf32() >= other.getf32()); case Type::f64: @@ -1164,42 +1471,32 @@ } Literal Literal::min(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::f32: { auto l = getf32(), r = other.getf32(); - if (l == r && l == 0) { - return Literal(std::signbit(l) ? l : r); + if (std::isnan(l)) { + return standardizeNaN(l); } - auto result = std::min(l, r); - bool lnan = std::isnan(l), rnan = std::isnan(r); - if (!std::isnan(result) && !lnan && !rnan) { - return Literal(result); + if (std::isnan(r)) { + return standardizeNaN(r); } - if (!lnan && !rnan) { - return Literal((int32_t)0x7fc00000).castToF32(); + if (l == r && l == 0) { + return Literal(std::signbit(l) ? l : r); } - return Literal(lnan ? l : r) - .castToI32() - .or_(Literal(0xc00000)) - .castToF32(); + return Literal(std::min(l, r)); } case Type::f64: { auto l = getf64(), r = other.getf64(); - if (l == r && l == 0) { - return Literal(std::signbit(l) ? l : r); + if (std::isnan(l)) { + return standardizeNaN(l); } - auto result = std::min(l, r); - bool lnan = std::isnan(l), rnan = std::isnan(r); - if (!std::isnan(result) && !lnan && !rnan) { - return Literal(result); + if (std::isnan(r)) { + return standardizeNaN(r); } - if (!lnan && !rnan) { - return Literal((int64_t)0x7ff8000000000000LL).castToF64(); + if (l == r && l == 0) { + return Literal(std::signbit(l) ? l : r); } - return Literal(lnan ? l : r) - .castToI64() - .or_(Literal(int64_t(0x8000000000000LL))) - .castToF64(); + return Literal(std::min(l, r)); } default: WASM_UNREACHABLE("unexpected type"); @@ -1207,51 +1504,61 @@ } Literal Literal::max(const Literal& other) const { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::f32: { auto l = getf32(), r = other.getf32(); - if (l == r && l == 0) { - return Literal(std::signbit(l) ? r : l); + if (std::isnan(l)) { + return standardizeNaN(l); } - auto result = std::max(l, r); - bool lnan = std::isnan(l), rnan = std::isnan(r); - if (!std::isnan(result) && !lnan && !rnan) { - return Literal(result); + if (std::isnan(r)) { + return standardizeNaN(r); } - if (!lnan && !rnan) { - return Literal((int32_t)0x7fc00000).castToF32(); + if (l == r && l == 0) { + return Literal(std::signbit(l) ? r : l); } - return Literal(lnan ? l : r) - .castToI32() - .or_(Literal(0xc00000)) - .castToF32(); + return Literal(std::max(l, r)); } case Type::f64: { auto l = getf64(), r = other.getf64(); - if (l == r && l == 0) { - return Literal(std::signbit(l) ? r : l); + if (std::isnan(l)) { + return standardizeNaN(l); } - auto result = std::max(l, r); - bool lnan = std::isnan(l), rnan = std::isnan(r); - if (!std::isnan(result) && !lnan && !rnan) { - return Literal(result); + if (std::isnan(r)) { + return standardizeNaN(r); } - if (!lnan && !rnan) { - return Literal((int64_t)0x7ff8000000000000LL).castToF64(); + if (l == r && l == 0) { + return Literal(std::signbit(l) ? r : l); } - return Literal(lnan ? l : r) - .castToI64() - .or_(Literal(int64_t(0x8000000000000LL))) - .castToF64(); + return Literal(std::max(l, r)); } default: WASM_UNREACHABLE("unexpected type"); } } +Literal Literal::pmin(const Literal& other) const { + switch (type.getBasic()) { + case Type::f32: + case Type::f64: + return other.lt(*this).geti32() ? other : *this; + default: + WASM_UNREACHABLE("unexpected type"); + } +} + +Literal Literal::pmax(const Literal& other) const { + switch (type.getBasic()) { + case Type::f32: + case Type::f64: + return this->lt(other).geti32() ? other : *this; + default: + WASM_UNREACHABLE("unexpected type"); + } +} + Literal Literal::copysign(const Literal& other) const { // operate on bits directly, to avoid signalling bit being set on a float - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::f32: return Literal((i32 & 0x7fffffff) | (other.i32 & 0x80000000)).castToF32(); break; @@ -1325,7 +1632,7 @@ return Literal(bytes); } -template +template static Literal splat(const Literal& val) { assert(val.type == Ty); LaneArray lanes; @@ -1409,9 +1716,21 @@ ones.fill(0xff); return xorV128(Literal(ones.data())); } +Literal Literal::absI8x16() const { + return unary<16, &Literal::getLanesSI8x16, &Literal::abs>(*this); +} +Literal Literal::absI16x8() const { + return unary<8, &Literal::getLanesSI16x8, &Literal::abs>(*this); +} +Literal Literal::absI32x4() const { + return unary<4, &Literal::getLanesI32x4, &Literal::abs>(*this); +} Literal Literal::negI8x16() const { return unary<16, &Literal::getLanesUI8x16, &Literal::neg>(*this); } +Literal Literal::popcntI8x16() const { + return unary<16, &Literal::getLanesUI8x16, &Literal::popCount>(*this); +} Literal Literal::negI16x8() const { return unary<8, &Literal::getLanesUI16x8, &Literal::neg>(*this); } @@ -1430,6 +1749,18 @@ Literal Literal::sqrtF32x4() const { return unary<4, &Literal::getLanesF32x4, &Literal::sqrt>(*this); } +Literal Literal::ceilF32x4() const { + return unary<4, &Literal::getLanesF32x4, &Literal::ceil>(*this); +} +Literal Literal::floorF32x4() const { + return unary<4, &Literal::getLanesF32x4, &Literal::floor>(*this); +} +Literal Literal::truncF32x4() const { + return unary<4, &Literal::getLanesF32x4, &Literal::trunc>(*this); +} +Literal Literal::nearestF32x4() const { + return unary<4, &Literal::getLanesF32x4, &Literal::nearbyint>(*this); +} Literal Literal::absF64x2() const { return unary<2, &Literal::getLanesF64x2, &Literal::abs>(*this); } @@ -1439,6 +1770,18 @@ Literal Literal::sqrtF64x2() const { return unary<2, &Literal::getLanesF64x2, &Literal::sqrt>(*this); } +Literal Literal::ceilF64x2() const { + return unary<2, &Literal::getLanesF64x2, &Literal::ceil>(*this); +} +Literal Literal::floorF64x2() const { + return unary<2, &Literal::getLanesF64x2, &Literal::floor>(*this); +} +Literal Literal::truncF64x2() const { + return unary<2, &Literal::getLanesF64x2, &Literal::trunc>(*this); +} +Literal Literal::nearestF64x2() const { + return unary<2, &Literal::getLanesF64x2, &Literal::nearbyint>(*this); +} Literal Literal::truncSatToSI32x4() const { return unary<4, &Literal::getLanesF32x4, &Literal::truncSatToSI32>(*this); } @@ -1486,29 +1829,44 @@ return Literal(int32_t(1)); } +template (Literal::*IntoLanes)() const> +static Literal bitmask(const Literal& val) { + uint32_t result = 0; + LaneArray lanes = (val.*IntoLanes)(); + for (size_t i = 0; i < Lanes; ++i) { + if (lanes[i].geti32() & (1 << 31)) { + result = result | (1 << i); + } + } + return Literal(result); +} + Literal Literal::anyTrueI8x16() const { return any_true<16, &Literal::getLanesUI8x16>(*this); } Literal Literal::allTrueI8x16() const { return all_true<16, &Literal::getLanesUI8x16>(*this); } +Literal Literal::bitmaskI8x16() const { + return bitmask<16, &Literal::getLanesSI8x16>(*this); +} Literal Literal::anyTrueI16x8() const { return any_true<8, &Literal::getLanesUI16x8>(*this); } Literal Literal::allTrueI16x8() const { return all_true<8, &Literal::getLanesUI16x8>(*this); } +Literal Literal::bitmaskI16x8() const { + return bitmask<8, &Literal::getLanesSI16x8>(*this); +} Literal Literal::anyTrueI32x4() const { return any_true<4, &Literal::getLanesI32x4>(*this); } Literal Literal::allTrueI32x4() const { return all_true<4, &Literal::getLanesI32x4>(*this); } -Literal Literal::anyTrueI64x2() const { - return any_true<2, &Literal::getLanesI64x2>(*this); -} -Literal Literal::allTrueI64x2() const { - return all_true<2, &Literal::getLanesI64x2>(*this); +Literal Literal::bitmaskI32x4() const { + return bitmask<4, &Literal::getLanesI32x4>(*this); } template(*this, other); } +Literal Literal::eqI64x2(const Literal& other) const { + return compare<2, &Literal::getLanesI64x2, &Literal::eq, int64_t>(*this, + other); +} Literal Literal::eqF32x4(const Literal& other) const { return compare<4, &Literal::getLanesF32x4, &Literal::eq>(*this, other); } @@ -1811,6 +2173,9 @@ Literal Literal::avgrUI16x8(const Literal& other) const { return binary<8, &Literal::getLanesUI16x8, &Literal::avgrUInt>(*this, other); } +Literal Literal::q15MulrSatSI16x8(const Literal& other) const { + WASM_UNREACHABLE("TODO: implement Q15 rounding, saturating multiplication"); +} Literal Literal::addI32x4(const Literal& other) const { return binary<4, &Literal::getLanesI32x4, &Literal::add>(*this, other); } @@ -1838,6 +2203,9 @@ Literal Literal::subI64x2(const Literal& other) const { return binary<2, &Literal::getLanesI64x2, &Literal::sub>(*this, other); } +Literal Literal::mulI64x2(const Literal& other) const { + return binary<2, &Literal::getLanesI64x2, &Literal::mul>(*this, other); +} Literal Literal::addF32x4(const Literal& other) const { return binary<4, &Literal::getLanesF32x4, &Literal::add>(*this, other); } @@ -1856,6 +2224,12 @@ Literal Literal::maxF32x4(const Literal& other) const { return binary<4, &Literal::getLanesF32x4, &Literal::max>(*this, other); } +Literal Literal::pminF32x4(const Literal& other) const { + return binary<4, &Literal::getLanesF32x4, &Literal::pmin>(*this, other); +} +Literal Literal::pmaxF32x4(const Literal& other) const { + return binary<4, &Literal::getLanesF32x4, &Literal::pmax>(*this, other); +} Literal Literal::addF64x2(const Literal& other) const { return binary<2, &Literal::getLanesF64x2, &Literal::add>(*this, other); } @@ -1874,6 +2248,12 @@ Literal Literal::maxF64x2(const Literal& other) const { return binary<2, &Literal::getLanesF64x2, &Literal::max>(*this, other); } +Literal Literal::pminF64x2(const Literal& other) const { + return binary<2, &Literal::getLanesF64x2, &Literal::pmin>(*this, other); +} +Literal Literal::pmaxF64x2(const Literal& other) const { + return binary<2, &Literal::getLanesF64x2, &Literal::pmax>(*this, other); +} Literal Literal::dotSI16x8toI32x4(const Literal& other) const { LaneArray<8> lhs = getLanesSI16x8(); @@ -1973,6 +2353,43 @@ return widen<4, &Literal::getLanesUI16x8, LaneOrder::High>(*this); } +Literal Literal::extMulLowSI16x8(const Literal& other) const { + WASM_UNREACHABLE("TODO: implement SIMD extending multiplications"); +} +Literal Literal::extMulHighSI16x8(const Literal& other) const { + WASM_UNREACHABLE("TODO: implement SIMD extending multiplications"); +} +Literal Literal::extMulLowUI16x8(const Literal& other) const { + WASM_UNREACHABLE("TODO: implement SIMD extending multiplications"); +} +Literal Literal::extMulHighUI16x8(const Literal& other) const { + WASM_UNREACHABLE("TODO: implement SIMD extending multiplications"); +} +Literal Literal::extMulLowSI32x4(const Literal& other) const { + WASM_UNREACHABLE("TODO: implement SIMD extending multiplications"); +} +Literal Literal::extMulHighSI32x4(const Literal& other) const { + WASM_UNREACHABLE("TODO: implement SIMD extending multiplications"); +} +Literal Literal::extMulLowUI32x4(const Literal& other) const { + WASM_UNREACHABLE("TODO: implement SIMD extending multiplications"); +} +Literal Literal::extMulHighUI32x4(const Literal& other) const { + WASM_UNREACHABLE("TODO: implement SIMD extending multiplications"); +} +Literal Literal::extMulLowSI64x2(const Literal& other) const { + WASM_UNREACHABLE("TODO: implement SIMD extending multiplications"); +} +Literal Literal::extMulHighSI64x2(const Literal& other) const { + WASM_UNREACHABLE("TODO: implement SIMD extending multiplications"); +} +Literal Literal::extMulLowUI64x2(const Literal& other) const { + WASM_UNREACHABLE("TODO: implement SIMD extending multiplications"); +} +Literal Literal::extMulHighUI64x2(const Literal& other) const { + WASM_UNREACHABLE("TODO: implement SIMD extending multiplications"); +} + Literal Literal::swizzleVec8x16(const Literal& other) const { auto lanes = getLanesUI8x16(); auto indices = other.getLanesUI8x16(); @@ -1984,4 +2401,31 @@ return Literal(result); } +bool Literal::isSubRtt(const Literal& other) const { + assert(type.isRtt() && other.type.isRtt()); + // For this literal to be a sub-rtt of the other rtt, the supers must be a + // superset. That is, if other is a->b->c then we should be a->b->c as well + // with possibly ->d->.. added. The rttSupers array represents those chains, + // but only the supers, which means the last item in the chain is simply the + // type of the literal. + const auto& supers = getRttSupers(); + const auto& otherSupers = other.getRttSupers(); + if (otherSupers.size() > supers.size()) { + return false; + } + for (Index i = 0; i < otherSupers.size(); i++) { + if (supers[i] != otherSupers[i]) { + return false; + } + } + // If we have more supers than other, compare that extra super. Otherwise, + // we have the same amount of supers, and must be completely identical to + // other. + if (otherSupers.size() < supers.size()) { + return other.type == supers[otherSupers.size()]; + } else { + return other.type == type; + } +} + } // namespace wasm diff -Nru binaryen-91/src/wasm/wasm-binary.cpp binaryen-99/src/wasm/wasm-binary.cpp --- binaryen-91/src/wasm/wasm-binary.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm/wasm-binary.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -31,14 +31,14 @@ void WasmBinaryWriter::prepare() { // Collect function types and their frequencies. Collect information in each // function in parallel, then merge. - ModuleUtils::collectSignatures(*wasm, types, typeIndices); + ModuleUtils::collectHeapTypes(*wasm, types, typeIndices); importInfo = wasm::make_unique(*wasm); } void WasmBinaryWriter::write() { writeHeader(); - writeEarlyUserSections(); + writeDylinkSection(); initializeDebugInfo(); if (sourceMap) { @@ -50,8 +50,8 @@ writeFunctionSignatures(); writeFunctionTableDeclaration(); writeMemory(); - writeGlobals(); writeEvents(); + writeGlobals(); writeExports(); writeStart(); writeTableElements(); @@ -73,7 +73,7 @@ } #ifdef BUILD_LLVM_DWARF - // Update DWARF user sections after writing the data referred to by them + // Update DWARF user sections after writing the data they refer to // (function bodies), and before writing the user sections themselves. if (Debug::hasDWARFSections(*wasm)) { Debug::writeDWARFSections(*wasm, binaryLocations); @@ -99,12 +99,11 @@ return ret; } -void WasmBinaryWriter::writeResizableLimits(Address initial, - Address maximum, - bool hasMaximum, - bool shared) { +void WasmBinaryWriter::writeResizableLimits( + Address initial, Address maximum, bool hasMaximum, bool shared, bool is64) { uint32_t flags = (hasMaximum ? (uint32_t)BinaryConsts::HasMaximum : 0U) | - (shared ? (uint32_t)BinaryConsts::IsShared : 0U); + (shared ? (uint32_t)BinaryConsts::IsShared : 0U) | + (is64 ? (uint32_t)BinaryConsts::Is64 : 0U); o << U32LEB(flags); o << U32LEB(initial); if (hasMaximum) { @@ -113,7 +112,7 @@ } template int32_t WasmBinaryWriter::startSection(T code) { - o << U32LEB(code); + o << uint8_t(code); if (sourceMap) { sourceMapLocationsSizeAtSectionStart = sourceMapLocations.size(); } @@ -203,7 +202,8 @@ writeResizableLimits(wasm->memory.initial, wasm->memory.max, wasm->memory.hasMax(), - wasm->memory.shared); + wasm->memory.shared, + wasm->memory.is64()); finishSection(start); } @@ -215,14 +215,29 @@ auto start = startSection(BinaryConsts::Section::Type); o << U32LEB(types.size()); for (Index i = 0; i < types.size(); ++i) { - Signature& sig = types[i]; - BYN_TRACE("write " << sig.params << " -> " << sig.results << std::endl); - o << S32LEB(BinaryConsts::EncodedType::Func); - for (auto& sigType : {sig.params, sig.results}) { - o << U32LEB(sigType.size()); - for (auto type : sigType.expand()) { - o << binaryType(type); + auto type = types[i]; + BYN_TRACE("write " << type << std::endl); + if (type.isSignature()) { + o << S32LEB(BinaryConsts::EncodedType::Func); + auto sig = type.getSignature(); + for (auto& sigType : {sig.params, sig.results}) { + o << U32LEB(sigType.size()); + for (const auto& type : sigType) { + writeType(type); + } } + } else if (type.isStruct()) { + o << S32LEB(BinaryConsts::EncodedType::Struct); + auto fields = type.getStruct().fields; + o << U32LEB(fields.size()); + for (const auto& field : fields) { + writeField(field); + } + } else if (type.isArray()) { + o << S32LEB(BinaryConsts::EncodedType::Array); + writeField(type.getArray().element); + } else { + WASM_UNREACHABLE("TODO GC type writing"); } } finishSection(start); @@ -250,7 +265,7 @@ BYN_TRACE("write one global\n"); writeImportHeader(global); o << U32LEB(int32_t(ExternalKind::Global)); - o << binaryType(global->type); + writeType(global->type); o << U32LEB(global->mutable_); }); ModuleUtils::iterImportedEvents(*wasm, [&](Event* event) { @@ -267,7 +282,8 @@ writeResizableLimits(wasm->memory.initial, wasm->memory.max, wasm->memory.hasMax(), - wasm->memory.shared); + wasm->memory.shared, + wasm->memory.is64()); } if (wasm->table.imported()) { BYN_TRACE("write one table\n"); @@ -277,7 +293,8 @@ writeResizableLimits(wasm->table.initial, wasm->table.max, wasm->table.hasMax(), - /*shared=*/false); + /*shared=*/false, + /*is64*/ false); } finishSection(start); } @@ -307,6 +324,7 @@ BYN_TRACE("== writeFunctions\n"); auto sectionStart = startSection(BinaryConsts::Section::Code); o << U32LEB(importInfo->getNumDefinedFunctions()); + bool DWARF = Debug::hasDWARFSections(*getModule()); ModuleUtils::iterDefinedFunctions(*wasm, [&](Function* func) { assert(binaryLocationTrackedExpressionsForFunc.empty()); size_t sourceMapLocationsSizeAtFunctionStart = sourceMapLocations.size(); @@ -315,12 +333,12 @@ size_t start = o.size(); BYN_TRACE("writing" << func->name << std::endl); // Emit Stack IR if present, and if we can - if (func->stackIR && !sourceMap) { + if (func->stackIR && !sourceMap && !DWARF) { BYN_TRACE("write Stack IR\n"); StackIRToBinaryWriter(*this, o, func).write(); } else { BYN_TRACE("write Binaryen IR\n"); - BinaryenIRToBinaryWriter(*this, o, func, sourceMap).write(); + BinaryenIRToBinaryWriter(*this, o, func, sourceMap, DWARF).write(); } size_t size = o.size() - start; assert(size <= std::numeric_limits::max()); @@ -376,14 +394,26 @@ } BYN_TRACE("== writeglobals\n"); auto start = startSection(BinaryConsts::Section::Global); - auto num = importInfo->getNumDefinedGlobals(); + // Count and emit the total number of globals after tuple globals have been + // expanded into their constituent parts. + Index num = 0; + ModuleUtils::iterDefinedGlobals( + *wasm, [&num](Global* global) { num += global->type.size(); }); o << U32LEB(num); ModuleUtils::iterDefinedGlobals(*wasm, [&](Global* global) { BYN_TRACE("write one\n"); - o << binaryType(global->type); - o << U32LEB(global->mutable_); - writeExpression(global->init); - o << int8_t(BinaryConsts::End); + size_t i = 0; + for (const auto& t : global->type) { + writeType(t); + o << U32LEB(global->mutable_); + if (global->type.size() == 1) { + writeExpression(global->init); + } else { + writeExpression(global->init->cast()->operands[i]); + } + o << int8_t(BinaryConsts::End); + ++i; + } }); finishSection(start); } @@ -475,9 +505,14 @@ return it->second; } -uint32_t WasmBinaryWriter::getTypeIndex(Signature sig) const { - auto it = typeIndices.find(sig); - assert(it != typeIndices.end()); +uint32_t WasmBinaryWriter::getTypeIndex(HeapType type) const { + auto it = typeIndices.find(type); +#ifndef NDEBUG + if (it == typeIndices.end()) { + std::cout << "Missing type: " << type << '\n'; + assert(0); + } +#endif return it->second; } @@ -492,7 +527,8 @@ writeResizableLimits(wasm->table.initial, wasm->table.max, wasm->table.hasMax(), - /*shared=*/false); + /*shared=*/false, + /*is64*/ false); finishSection(start); } @@ -535,27 +571,152 @@ } void WasmBinaryWriter::writeNames() { - if (wasm->functions.empty()) { - return; - } - BYN_TRACE("== writeNames\n"); auto start = startSection(BinaryConsts::Section::User); writeInlineString(BinaryConsts::UserSections::Name); - auto substart = - startSubsection(BinaryConsts::UserSections::Subsection::NameFunction); - o << U32LEB(indexes.functionIndexes.size()); - Index emitted = 0; - auto add = [&](Function* curr) { - o << U32LEB(emitted); - writeEscapedName(curr->name.str); - emitted++; - }; - ModuleUtils::iterImportedFunctions(*wasm, add); - ModuleUtils::iterDefinedFunctions(*wasm, add); - assert(emitted == indexes.functionIndexes.size()); - finishSubsection(substart); - /* TODO: locals */ + + // module name + if (wasm->name.is()) { + auto substart = + startSubsection(BinaryConsts::UserSections::Subsection::NameModule); + writeEscapedName(wasm->name.str); + finishSubsection(substart); + } + + // function names + { + auto substart = + startSubsection(BinaryConsts::UserSections::Subsection::NameFunction); + o << U32LEB(indexes.functionIndexes.size()); + Index emitted = 0; + auto add = [&](Function* curr) { + o << U32LEB(emitted); + writeEscapedName(curr->name.str); + emitted++; + }; + ModuleUtils::iterImportedFunctions(*wasm, add); + ModuleUtils::iterDefinedFunctions(*wasm, add); + assert(emitted == indexes.functionIndexes.size()); + finishSubsection(substart); + } + + // local names + { + // Find all functions with at least one local name and only emit the + // subsection if there is at least one. + std::vector> functionsWithLocalNames; + Index checked = 0; + auto check = [&](Function* curr) { + auto numLocals = curr->getNumLocals(); + for (Index i = 0; i < numLocals; ++i) { + if (curr->hasLocalName(i)) { + functionsWithLocalNames.push_back({checked, curr}); + break; + } + } + checked++; + }; + ModuleUtils::iterImportedFunctions(*wasm, check); + ModuleUtils::iterDefinedFunctions(*wasm, check); + assert(checked == indexes.functionIndexes.size()); + if (functionsWithLocalNames.size() > 0) { + // Otherwise emit those functions but only include locals with a name. + auto substart = + startSubsection(BinaryConsts::UserSections::Subsection::NameLocal); + o << U32LEB(functionsWithLocalNames.size()); + Index emitted = 0; + for (auto& indexedFunc : functionsWithLocalNames) { + std::vector> localsWithNames; + auto numLocals = indexedFunc.second->getNumLocals(); + for (Index i = 0; i < numLocals; ++i) { + if (indexedFunc.second->hasLocalName(i)) { + localsWithNames.push_back({i, indexedFunc.second->getLocalName(i)}); + } + } + assert(localsWithNames.size()); + o << U32LEB(indexedFunc.first); + o << U32LEB(localsWithNames.size()); + for (auto& indexedLocal : localsWithNames) { + o << U32LEB(indexedLocal.first); + writeEscapedName(indexedLocal.second.str); + } + emitted++; + } + assert(emitted == functionsWithLocalNames.size()); + finishSubsection(substart); + } + } + + // table names + if (wasm->table.exists && wasm->table.hasExplicitName) { + auto substart = + startSubsection(BinaryConsts::UserSections::Subsection::NameTable); + o << U32LEB(1) << U32LEB(0); // currently exactly 1 table at index 0 + writeEscapedName(wasm->table.name.str); + finishSubsection(substart); + } + + // memory names + if (wasm->memory.exists && wasm->memory.hasExplicitName) { + auto substart = + startSubsection(BinaryConsts::UserSections::Subsection::NameMemory); + o << U32LEB(1) << U32LEB(0); // currently exactly 1 memory at index 0 + writeEscapedName(wasm->memory.name.str); + finishSubsection(substart); + } + + // global names + { + std::vector> globalsWithNames; + Index checked = 0; + auto check = [&](Global* curr) { + if (curr->hasExplicitName) { + globalsWithNames.push_back({checked, curr}); + } + checked++; + }; + ModuleUtils::iterImportedGlobals(*wasm, check); + ModuleUtils::iterDefinedGlobals(*wasm, check); + assert(checked == indexes.globalIndexes.size()); + if (globalsWithNames.size() > 0) { + auto substart = + startSubsection(BinaryConsts::UserSections::Subsection::NameGlobal); + o << U32LEB(globalsWithNames.size()); + for (auto& indexedGlobal : globalsWithNames) { + o << U32LEB(indexedGlobal.first); + writeEscapedName(indexedGlobal.second->name.str); + } + finishSubsection(substart); + } + } + + // memory names + if (wasm->memory.exists) { + Index count = 0; + for (auto& seg : wasm->memory.segments) { + if (seg.name.is()) { + count++; + } + } + + if (count) { + auto substart = + startSubsection(BinaryConsts::UserSections::Subsection::NameData); + o << U32LEB(count); + for (Index i = 0; i < wasm->memory.segments.size(); i++) { + auto& seg = wasm->memory.segments[i]; + if (seg.name.is()) { + o << U32LEB(i); + writeEscapedName(seg.name.str); + } + } + finishSubsection(substart); + } + } + + // TODO: label, type, and element names + // see: https://github.com/WebAssembly/extended-name-section + finishSection(start); } @@ -632,16 +793,6 @@ *sourceMap << "\"}"; } -void WasmBinaryWriter::writeEarlyUserSections() { - // The dylink section must be the first in the module, per - // the spec, to allow simple parsing by loaders. - for (auto& section : wasm->userSections) { - if (section.name == BinaryConsts::UserSections::Dylink) { - writeUserSection(section); - } - } -} - void WasmBinaryWriter::writeLateUserSections() { for (auto& section : wasm->userSections) { if (section.name != BinaryConsts::UserSections::Dylink) { @@ -686,6 +837,14 @@ return BinaryConsts::UserSections::TailCallFeature; case FeatureSet::ReferenceTypes: return BinaryConsts::UserSections::ReferenceTypesFeature; + case FeatureSet::Multivalue: + return BinaryConsts::UserSections::MultivalueFeature; + case FeatureSet::GC: + return BinaryConsts::UserSections::GCFeature; + case FeatureSet::Memory64: + return BinaryConsts::UserSections::Memory64Feature; + case FeatureSet::TypedFunctionReferences: + return BinaryConsts::UserSections::TypedFunctionReferencesFeature; default: WASM_UNREACHABLE("unexpected feature flag"); } @@ -705,6 +864,24 @@ finishSection(start); } +void WasmBinaryWriter::writeDylinkSection() { + if (!wasm->dylinkSection) { + return; + } + + auto start = startSection(BinaryConsts::User); + writeInlineString(BinaryConsts::UserSections::Dylink); + o << U32LEB(wasm->dylinkSection->memorySize); + o << U32LEB(wasm->dylinkSection->memoryAlignment); + o << U32LEB(wasm->dylinkSection->tableSize); + o << U32LEB(wasm->dylinkSection->tableAlignment); + o << U32LEB(wasm->dylinkSection->neededDynlibs.size()); + for (auto& neededDynlib : wasm->dylinkSection->neededDynlibs) { + writeInlineString(neededDynlib.c_str()); + } + finishSection(start); +} + void WasmBinaryWriter::writeDebugLocation(const Function::DebugLocation& loc) { if (loc == lastDebugLocation) { return; @@ -734,7 +911,6 @@ void WasmBinaryWriter::writeDebugLocationEnd(Expression* curr, Function* func) { if (func && !func->expressionLocations.empty()) { auto& span = binaryLocations.expressions.at(curr); - assert(span.end == 0); span.end = o.size(); } } @@ -820,6 +996,121 @@ } } +void WasmBinaryWriter::writeType(Type type) { + if (type.isRef() && !type.isBasic()) { + if (type.isNullable()) { + o << S32LEB(BinaryConsts::EncodedType::nullable); + } else { + o << S32LEB(BinaryConsts::EncodedType::nonnullable); + } + writeHeapType(type.getHeapType()); + return; + } + if (type.isRtt()) { + auto rtt = type.getRtt(); + if (rtt.hasDepth()) { + o << S32LEB(BinaryConsts::EncodedType::rtt_n); + o << U32LEB(rtt.depth); + } else { + o << S32LEB(BinaryConsts::EncodedType::rtt); + } + writeHeapType(rtt.heapType); + return; + } + int ret = 0; + TODO_SINGLE_COMPOUND(type); + switch (type.getBasic()) { + // None only used for block signatures. TODO: Separate out? + case Type::none: + ret = BinaryConsts::EncodedType::Empty; + break; + case Type::i32: + ret = BinaryConsts::EncodedType::i32; + break; + case Type::i64: + ret = BinaryConsts::EncodedType::i64; + break; + case Type::f32: + ret = BinaryConsts::EncodedType::f32; + break; + case Type::f64: + ret = BinaryConsts::EncodedType::f64; + break; + case Type::v128: + ret = BinaryConsts::EncodedType::v128; + break; + case Type::funcref: + ret = BinaryConsts::EncodedType::funcref; + break; + case Type::externref: + ret = BinaryConsts::EncodedType::externref; + break; + case Type::exnref: + ret = BinaryConsts::EncodedType::exnref; + break; + case Type::anyref: + ret = BinaryConsts::EncodedType::anyref; + break; + case Type::eqref: + ret = BinaryConsts::EncodedType::eqref; + break; + case Type::i31ref: + ret = BinaryConsts::EncodedType::i31ref; + break; + default: + WASM_UNREACHABLE("unexpected type"); + } + o << S32LEB(ret); +} + +void WasmBinaryWriter::writeHeapType(HeapType type) { + if (type.isSignature() || type.isStruct() || type.isArray()) { + o << S64LEB(getTypeIndex(type)); // TODO: Actually s33 + return; + } + int ret = 0; + if (type.isBasic()) { + switch (type.getBasic()) { + case HeapType::func: + ret = BinaryConsts::EncodedHeapType::func; + break; + case HeapType::ext: + ret = BinaryConsts::EncodedHeapType::extern_; + break; + case HeapType::exn: + ret = BinaryConsts::EncodedHeapType::exn; + break; + case HeapType::any: + ret = BinaryConsts::EncodedHeapType::any; + break; + case HeapType::eq: + ret = BinaryConsts::EncodedHeapType::eq; + break; + case HeapType::i31: + ret = BinaryConsts::EncodedHeapType::i31; + break; + } + } else { + WASM_UNREACHABLE("TODO: compound GC types"); + } + o << S64LEB(ret); // TODO: Actually s33 +} + +void WasmBinaryWriter::writeField(const Field& field) { + if (field.type == Type::i32 && field.packedType != Field::not_packed) { + if (field.packedType == Field::i8) { + o << S32LEB(BinaryConsts::EncodedType::i8); + } else if (field.packedType == Field::i16) { + o << S32LEB(BinaryConsts::EncodedType::i16); + } else { + WASM_UNREACHABLE("invalid packed type"); + } + } else { + writeType(field.type); + } + o << U32LEB(field.mutable_); +} + // reader bool WasmBinaryBuilder::hasDWARFSections() { @@ -828,7 +1119,7 @@ getInt32(); // version bool has = false; while (more()) { - uint32_t sectionCode = getU32LEB(); + uint8_t sectionCode = getInt8(); uint32_t payloadLen = getU32LEB(); if (uint64_t(pos) + uint64_t(payloadLen) > input.size()) { throwError("Section extends beyond end of input"); @@ -864,7 +1155,7 @@ // read sections until the end while (more()) { - uint32_t sectionCode = getU32LEB(); + uint8_t sectionCode = getInt8(); uint32_t payloadLen = getU32LEB(); if (uint64_t(pos) + uint64_t(payloadLen) > input.size()) { throwError("Section extends beyond end of input"); @@ -890,7 +1181,7 @@ readMemory(); break; case BinaryConsts::Section::Type: - readSignatures(); + readTypes(); break; case BinaryConsts::Section::Import: readImports(); @@ -946,7 +1237,7 @@ } validateBinary(); - processFunctions(); + processNames(); } void WasmBinaryBuilder::readUserSection(size_t payloadLen) { @@ -961,6 +1252,8 @@ readNames(payloadLen); } else if (sectionName.equals(BinaryConsts::UserSections::TargetFeatures)) { readFeatures(payloadLen); + } else if (sectionName.equals(BinaryConsts::UserSections::Dylink)) { + readDylink(payloadLen); } else { // an unfamiliar custom section if (sectionName.equals(BinaryConsts::UserSections::Linking)) { @@ -1083,9 +1376,17 @@ return ret.value; } -Type WasmBinaryBuilder::getType() { - int type = getS32LEB(); - switch (type) { +uint64_t WasmBinaryBuilder::getUPtrLEB() { + return wasm.memory.is64() ? getU64LEB() : getU32LEB(); +} + +Type WasmBinaryBuilder::getType(int initial) { + // Single value types are negative; signature indices are non-negative + if (initial >= 0) { + // TODO: Handle block input types properly. + return getSignatureByTypeIndex(initial).results; + } + switch (initial) { // None only used for block signatures. TODO: Separate out? case BinaryConsts::EncodedType::Empty: return Type::none; @@ -1101,16 +1402,93 @@ return Type::v128; case BinaryConsts::EncodedType::funcref: return Type::funcref; - case BinaryConsts::EncodedType::anyref: - return Type::anyref; - case BinaryConsts::EncodedType::nullref: - return Type::nullref; + case BinaryConsts::EncodedType::externref: + return Type::externref; case BinaryConsts::EncodedType::exnref: return Type::exnref; + case BinaryConsts::EncodedType::anyref: + return Type::anyref; + case BinaryConsts::EncodedType::eqref: + return Type::eqref; + case BinaryConsts::EncodedType::nullable: + return Type(getHeapType(), Nullable); + case BinaryConsts::EncodedType::nonnullable: + // FIXME: for now, force all inputs to be nullable + return Type(getHeapType(), Nullable); + case BinaryConsts::EncodedType::i31ref: + // FIXME: for now, force all inputs to be nullable + return Type(HeapType::BasicHeapType::i31, Nullable); + case BinaryConsts::EncodedType::rtt_n: { + auto depth = getU32LEB(); + auto heapType = getHeapType(); + return Type(Rtt(depth, heapType)); + } + case BinaryConsts::EncodedType::rtt: { + return Type(Rtt(getHeapType())); + } + default: + throwError("invalid wasm type: " + std::to_string(initial)); + } + WASM_UNREACHABLE("unexpected type"); +} + +Type WasmBinaryBuilder::getType() { return getType(getS32LEB()); } + +HeapType WasmBinaryBuilder::getHeapType() { + auto type = getS64LEB(); // TODO: Actually s33 + // Single heap types are negative; heap type indices are non-negative + if (type >= 0) { + if (size_t(type) >= types.size()) { + throwError("invalid signature index: " + std::to_string(type)); + } + return types[type]; + } + switch (type) { + case BinaryConsts::EncodedHeapType::func: + return HeapType::func; + case BinaryConsts::EncodedHeapType::extern_: + return HeapType::ext; + case BinaryConsts::EncodedHeapType::exn: + return HeapType::exn; + case BinaryConsts::EncodedHeapType::any: + return HeapType::any; + case BinaryConsts::EncodedHeapType::eq: + return HeapType::eq; + case BinaryConsts::EncodedHeapType::i31: + return HeapType::i31; + default: + throwError("invalid wasm heap type: " + std::to_string(type)); + } + WASM_UNREACHABLE("unexpected type"); +} + +Mutability WasmBinaryBuilder::getMutability() { + switch (getU32LEB()) { + case 0: + return Immutable; + case 1: + return Mutable; default: - throwError("invalid wasm type: " + std::to_string(type)); + throw ParseException("Expected 0 or 1 for mutability"); } - WASM_UNREACHABLE("unexpeced type"); +} + +Field WasmBinaryBuilder::getField() { + // The value may be a general wasm type, or one of the types only possible in + // a field. + auto initial = getS32LEB(); + if (initial == BinaryConsts::EncodedType::i8) { + auto mutable_ = getMutability(); + return Field(Field::i8, mutable_); + } + if (initial == BinaryConsts::EncodedType::i16) { + auto mutable_ = getMutability(); + return Field(Field::i16, mutable_); + } + // It's a regular wasm value. + auto type = getType(initial); + auto mutable_ = getMutability(); + return Field(type, mutable_); } Type WasmBinaryBuilder::getConcreteType() { @@ -1166,12 +1544,6 @@ } } -void WasmBinaryBuilder::ungetInt8() { - assert(pos > 0); - BYN_TRACE("ungetInt8 (at " << pos << ")\n"); - pos--; -} - void WasmBinaryBuilder::readHeader() { BYN_TRACE("== readHeader\n"); verifyInt32(BinaryConsts::Magic); @@ -1199,32 +1571,44 @@ getResizableLimits(wasm.memory.initial, wasm.memory.max, wasm.memory.shared, + wasm.memory.indexType, Memory::kUnlimitedSize); } -void WasmBinaryBuilder::readSignatures() { - BYN_TRACE("== readSignatures\n"); +void WasmBinaryBuilder::readTypes() { + BYN_TRACE("== readTypes\n"); size_t numTypes = getU32LEB(); BYN_TRACE("num: " << numTypes << std::endl); for (size_t i = 0; i < numTypes; i++) { BYN_TRACE("read one\n"); - std::vector params; - std::vector results; auto form = getS32LEB(); - if (form != BinaryConsts::EncodedType::Func) { - throwError("bad signature form " + std::to_string(form)); - } - size_t numParams = getU32LEB(); - BYN_TRACE("num params: " << numParams << std::endl); - for (size_t j = 0; j < numParams; j++) { - params.push_back(getConcreteType()); - } - auto numResults = getU32LEB(); - BYN_TRACE("num results: " << numResults << std::endl); - for (size_t j = 0; j < numResults; j++) { - results.push_back(getConcreteType()); + if (form == BinaryConsts::EncodedType::Func) { + std::vector params; + std::vector results; + size_t numParams = getU32LEB(); + BYN_TRACE("num params: " << numParams << std::endl); + for (size_t j = 0; j < numParams; j++) { + params.push_back(getConcreteType()); + } + auto numResults = getU32LEB(); + BYN_TRACE("num results: " << numResults << std::endl); + for (size_t j = 0; j < numResults; j++) { + results.push_back(getConcreteType()); + } + types.emplace_back(Signature(Type(params), Type(results))); + } else if (form == BinaryConsts::EncodedType::Struct) { + FieldList fields; + size_t numFields = getU32LEB(); + BYN_TRACE("num fields: " << numFields << std::endl); + for (size_t j = 0; j < numFields; j++) { + fields.push_back(getField()); + } + types.emplace_back(Struct(fields)); + } else if (form == BinaryConsts::EncodedType::Array) { + types.emplace_back(Array(getField())); + } else { + throwError("bad type form " + std::to_string(form)); } - signatures.emplace_back(Type(params), Type(results)); } } @@ -1252,15 +1636,18 @@ void WasmBinaryBuilder::getResizableLimits(Address& initial, Address& max, bool& shared, + Type& indexType, Address defaultIfNoMax) { auto flags = getU32LEB(); initial = getU32LEB(); bool hasMax = (flags & BinaryConsts::HasMaximum) != 0; bool isShared = (flags & BinaryConsts::IsShared) != 0; + bool is64 = (flags & BinaryConsts::Is64) != 0; if (isShared && !hasMax) { throwError("shared memory must have max size"); } shared = isShared; + indexType = is64 ? Type::i64 : Type::i32; if (hasMax) { max = getU32LEB(); } else { @@ -1273,6 +1660,11 @@ size_t num = getU32LEB(); BYN_TRACE("num: " << num << std::endl); Builder builder(wasm); + size_t tableCounter = 0; + size_t memoryCounter = 0; + size_t functionCounter = 0; + size_t globalCounter = 0; + size_t eventCounter = 0; for (size_t i = 0; i < num; i++) { BYN_TRACE("read one\n"); auto module = getInlineString(); @@ -1283,23 +1675,21 @@ // could occur later due to the names section. switch (kind) { case ExternalKind::Function: { - auto name = Name(std::string("fimport$") + std::to_string(i)); + Name name(std::string("fimport$") + std::to_string(functionCounter++)); auto index = getU32LEB(); - if (index > signatures.size()) { - throwError("invalid function index " + std::to_string(index) + " / " + - std::to_string(signatures.size())); - } - auto* curr = builder.makeFunction(name, signatures[index], {}); + auto curr = + builder.makeFunction(name, getSignatureByTypeIndex(index), {}); curr->module = module; curr->base = base; - wasm.addFunction(curr); - functionImports.push_back(curr); + functionImports.push_back(curr.get()); + wasm.addFunction(std::move(curr)); break; } case ExternalKind::Table: { + Name name(std::string("timport$") + std::to_string(tableCounter++)); wasm.table.module = module; wasm.table.base = base; - wasm.table.name = Name(std::string("timport$") + std::to_string(i)); + wasm.table.name = name; auto elementType = getS32LEB(); WASM_UNUSED(elementType); if (elementType != BinaryConsts::EncodedType::funcref) { @@ -1307,53 +1697,62 @@ } wasm.table.exists = true; bool is_shared; - getResizableLimits( - wasm.table.initial, wasm.table.max, is_shared, Table::kUnlimitedSize); + Type indexType; + getResizableLimits(wasm.table.initial, + wasm.table.max, + is_shared, + indexType, + Table::kUnlimitedSize); if (is_shared) { throwError("Tables may not be shared"); } + if (indexType == Type::i64) { + throwError("Tables may not be 64-bit"); + } break; } case ExternalKind::Memory: { + Name name(std::string("mimport$") + std::to_string(memoryCounter++)); wasm.memory.module = module; wasm.memory.base = base; - wasm.memory.name = Name(std::to_string(i)); + wasm.memory.name = name; wasm.memory.exists = true; getResizableLimits(wasm.memory.initial, wasm.memory.max, wasm.memory.shared, + wasm.memory.indexType, Memory::kUnlimitedSize); break; } case ExternalKind::Global: { - auto name = Name(std::string("gimport$") + std::to_string(i)); + Name name(std::string("gimport$") + std::to_string(globalCounter++)); auto type = getConcreteType(); auto mutable_ = getU32LEB(); - auto* curr = + auto curr = builder.makeGlobal(name, type, nullptr, mutable_ ? Builder::Mutable : Builder::Immutable); curr->module = module; curr->base = base; - wasm.addGlobal(curr); + globalImports.push_back(curr.get()); + wasm.addGlobal(std::move(curr)); break; } case ExternalKind::Event: { - auto name = Name(std::string("eimport$") + std::to_string(i)); + Name name(std::string("eimport$") + std::to_string(eventCounter++)); auto attribute = getU32LEB(); auto index = getU32LEB(); - if (index >= signatures.size()) { - throwError("invalid event index " + std::to_string(index) + " / " + - std::to_string(signatures.size())); - } - auto* curr = builder.makeEvent(name, attribute, signatures[index]); + auto curr = + builder.makeEvent(name, attribute, getSignatureByTypeIndex(index)); curr->module = module; curr->base = base; - wasm.addEvent(curr); + wasm.addEvent(std::move(curr)); break; } - default: { throwError("bad import kind"); } + default: { + throwError("bad import kind"); + } } } } @@ -1376,11 +1775,32 @@ for (size_t i = 0; i < num; i++) { BYN_TRACE("read one\n"); auto index = getU32LEB(); - if (index >= signatures.size()) { - throwError("invalid function type index for function"); - } - functionSignatures.push_back(signatures[index]); + functionSignatures.push_back(getSignatureByTypeIndex(index)); + } +} + +Signature WasmBinaryBuilder::getSignatureByFunctionIndex(Index index) { + Signature sig; + if (index < functionImports.size()) { + return functionImports[index]->sig; } + Index adjustedIndex = index - functionImports.size(); + if (adjustedIndex >= functionSignatures.size()) { + throwError("invalid function index"); + } + return functionSignatures[adjustedIndex]; +} + +Signature WasmBinaryBuilder::getSignatureByTypeIndex(Index index) { + if (index >= types.size()) { + throwError("invalid type index " + std::to_string(index) + " / " + + std::to_string(types.size())); + } + auto heapType = types[index]; + if (!heapType.isSignature()) { + throwError("invalid signature type " + heapType.toString()); + } + return heapType.getSignature(); } void WasmBinaryBuilder::readFunctions() { @@ -1621,10 +2041,6 @@ } while (nextDebugLocation.first && nextDebugLocation.first <= pos) { - if (nextDebugLocation.first < pos) { - std::cerr << "skipping debug location info for 0x"; - std::cerr << std::hex << nextDebugLocation.first << std::dec << std::endl; - } debugLocation.clear(); // use debugLocation only for function expressions if (currFunction) { @@ -1678,7 +2094,7 @@ throwError("Global mutability must be 0 or 1"); } auto* init = readExpression(); - wasm.addGlobal( + globals.push_back( Builder::makeGlobal("global$" + std::to_string(i), type, init, @@ -1697,7 +2113,7 @@ BYN_TRACE("== processExpressions finished\n"); return; } - expressionStack.push_back(curr); + pushExpression(curr); if (curr->type == Type::unreachable) { // Once we see something unreachable, we don't want to add anything else // to the stack, as it could be stacky code that is non-representable in @@ -1757,6 +2173,21 @@ expressionStack = savedStack; return; } + pushExpression(curr); + } +} + +void WasmBinaryBuilder::pushExpression(Expression* curr) { + if (curr->type.isTuple()) { + // Store tuple to local and push individual extracted values + Builder builder(wasm); + Index tuple = builder.addVar(currFunction, curr->type); + expressionStack.push_back(builder.makeLocalSet(tuple, curr)); + for (Index i = 0; i < curr->type.size(); ++i) { + expressionStack.push_back( + builder.makeTupleExtract(builder.makeLocalGet(tuple, curr->type), i)); + } + } else { expressionStack.push_back(curr); } } @@ -1776,6 +2207,7 @@ } // the stack is not empty, and we would not be going out of the current block auto ret = expressionStack.back(); + assert(!ret->type.isTuple()); expressionStack.pop_back(); return ret; } @@ -1816,18 +2248,50 @@ return block; } +Expression* WasmBinaryBuilder::popTuple(size_t numElems) { + Builder builder(wasm); + std::vector elements; + elements.resize(numElems); + for (size_t i = 0; i < numElems; i++) { + auto* elem = popNonVoidExpression(); + if (elem->type == Type::unreachable) { + // All the previously-popped items cannot be reached, so ignore them. We + // cannot continue popping because there might not be enough items on the + // expression stack after an unreachable expression. Any remaining + // elements can stay unperturbed on the stack and will be explicitly + // dropped by some parent call to pushBlockElements. + return elem; + } + elements[numElems - i - 1] = elem; + } + return Builder(wasm).makeTupleMake(std::move(elements)); +} + +Expression* WasmBinaryBuilder::popTypedExpression(Type type) { + if (type.isSingle()) { + return popNonVoidExpression(); + } else if (type.isTuple()) { + return popTuple(type.size()); + } else { + WASM_UNREACHABLE("Invalid popped type"); + } +} + void WasmBinaryBuilder::validateBinary() { if (hasDataCount && wasm.memory.segments.size() != dataCount) { throwError("Number of segments does not agree with DataCount section"); } } -void WasmBinaryBuilder::processFunctions() { +void WasmBinaryBuilder::processNames() { for (auto* func : functions) { wasm.addFunction(func); } + for (auto& global : globals) { + wasm.addGlobal(std::move(global)); + } - // now that we have names for each function, apply things + // now that we have names, apply things if (startIndex != static_cast(-1)) { wasm.start = getFunctionName(startIndex); @@ -1841,10 +2305,10 @@ break; } case ExternalKind::Table: - curr->value = Name::fromInt(0); + curr->value = wasm.table.name; break; case ExternalKind::Memory: - curr->value = Name::fromInt(0); + curr->value = wasm.memory.name; break; case ExternalKind::Global: curr->value = getGlobalName(index); @@ -1880,6 +2344,20 @@ } } + for (auto& iter : globalRefs) { + size_t index = iter.first; + auto& refs = iter.second; + for (auto* ref : refs) { + if (auto* get = ref->dynCast()) { + get->name = getGlobalName(index); + } else if (auto* set = ref->dynCast()) { + set->name = getGlobalName(index); + } else { + WASM_UNREACHABLE("Invalid type in global references"); + } + } + } + // Everything now has its proper name. wasm.updateMaps(); @@ -1935,11 +2413,18 @@ throwError("ElementType must be funcref in MVP"); } bool is_shared; - getResizableLimits( - wasm.table.initial, wasm.table.max, is_shared, Table::kUnlimitedSize); + Type indexType; + getResizableLimits(wasm.table.initial, + wasm.table.max, + is_shared, + indexType, + Table::kUnlimitedSize); if (is_shared) { throwError("Tables may not be shared"); } + if (indexType == Type::i64) { + throwError("Tables may not be 64-bit"); + } } void WasmBinaryBuilder::readTableElements() { @@ -1971,12 +2456,9 @@ BYN_TRACE("read one\n"); auto attribute = getU32LEB(); auto typeIndex = getU32LEB(); - if (typeIndex >= signatures.size()) { - throwError("invalid event index " + std::to_string(typeIndex) + " / " + - std::to_string(signatures.size())); - } - wasm.addEvent(Builder::makeEvent( - "event$" + std::to_string(i), attribute, signatures[typeIndex])); + wasm.addEvent(Builder::makeEvent("event$" + std::to_string(i), + attribute, + getSignatureByTypeIndex(typeIndex))); } } @@ -2024,33 +2506,144 @@ auto nameType = getU32LEB(); auto subsectionSize = getU32LEB(); auto subsectionPos = pos; - if (nameType != BinaryConsts::UserSections::Subsection::NameFunction) { - // TODO: locals - std::cerr << "unknown name subsection at " << pos << std::endl; - pos = subsectionPos + subsectionSize; - continue; - } - auto num = getU32LEB(); - std::set usedNames; - for (size_t i = 0; i < num; i++) { - auto index = getU32LEB(); - auto rawName = getInlineString(); - rawName = escape(rawName); - auto name = rawName; - // De-duplicate names by appending .1, .2, etc. - for (int i = 1; !usedNames.insert(name).second; ++i) { - name = rawName.str + std::string(".") + std::to_string(i); + if (nameType == BinaryConsts::UserSections::Subsection::NameModule) { + wasm.name = getInlineString(); + } else if (nameType == + BinaryConsts::UserSections::Subsection::NameFunction) { + auto num = getU32LEB(); + std::set usedNames; + for (size_t i = 0; i < num; i++) { + auto index = getU32LEB(); + auto rawName = getInlineString(); + auto name = escape(rawName); + // De-duplicate names by appending .1, .2, etc. + for (int i = 1; !usedNames.insert(name).second; ++i) { + name = std::string(escape(rawName).str) + std::string(".") + + std::to_string(i); + } + auto numFunctionImports = functionImports.size(); + if (index < numFunctionImports) { + functionImports[index]->setExplicitName(name); + } else if (index - numFunctionImports < functions.size()) { + functions[index - numFunctionImports]->setExplicitName(name); + } else { + std::cerr << "warning: function index out of bounds in name section, " + "function subsection: " + << std::string(rawName.str) << " at index " + << std::to_string(index) << std::endl; + } } - // note: we silently ignore errors here, as name section errors - // are not fatal. should we warn? + } else if (nameType == BinaryConsts::UserSections::Subsection::NameLocal) { + auto numFuncs = getU32LEB(); auto numFunctionImports = functionImports.size(); - if (index < numFunctionImports) { - functionImports[index]->name = name; - } else if (index - numFunctionImports < functions.size()) { - functions[index - numFunctionImports]->name = name; - } else { - throwError("index out of bounds: " + std::string(name.str)); + for (size_t i = 0; i < numFuncs; i++) { + auto funcIndex = getU32LEB(); + Function* func = nullptr; + if (funcIndex < numFunctionImports) { + func = functionImports[funcIndex]; + } else if (funcIndex - numFunctionImports < functions.size()) { + func = functions[funcIndex - numFunctionImports]; + } else { + std::cerr + << "warning: function index out of bounds in name section, local " + "subsection: " + << std::to_string(funcIndex) << std::endl; + } + auto numLocals = getU32LEB(); + std::set usedNames; + for (size_t j = 0; j < numLocals; j++) { + auto localIndex = getU32LEB(); + auto rawLocalName = getInlineString(); + if (!func) { + continue; // read and discard in case of prior error + } + auto localName = escape(rawLocalName); + // De-duplicate names by appending .1, .2, etc. + for (int i = 1; !usedNames.insert(localName).second; ++i) { + localName = std::string(escape(rawLocalName).str) + + std::string(".") + std::to_string(i); + } + if (localIndex < func->getNumLocals()) { + func->localNames[localIndex] = localName; + } else { + std::cerr << "warning: local index out of bounds in name " + "section, local subsection: " + << std::string(rawLocalName.str) << " at index " + << std::to_string(localIndex) << " in function " + << std::string(func->name.str) << std::endl; + } + } + } + } else if (nameType == BinaryConsts::UserSections::Subsection::NameTable) { + auto num = getU32LEB(); + for (size_t i = 0; i < num; i++) { + auto index = getU32LEB(); + auto rawName = getInlineString(); + if (index == 0) { + wasm.table.setExplicitName(escape(rawName)); + } else { + std::cerr << "warning: table index out of bounds in name section, " + "table subsection: " + << std::string(rawName.str) << " at index " + << std::to_string(index) << std::endl; + } + } + } else if (nameType == BinaryConsts::UserSections::Subsection::NameMemory) { + auto num = getU32LEB(); + for (size_t i = 0; i < num; i++) { + auto index = getU32LEB(); + auto rawName = getInlineString(); + if (index == 0) { + wasm.memory.setExplicitName(escape(rawName)); + } else { + std::cerr << "warning: memory index out of bounds in name section, " + "memory subsection: " + << std::string(rawName.str) << " at index " + << std::to_string(index) << std::endl; + } + } + } else if (nameType == BinaryConsts::UserSections::Subsection::NameData) { + auto num = getU32LEB(); + for (size_t i = 0; i < num; i++) { + auto index = getU32LEB(); + auto rawName = getInlineString(); + if (index < wasm.memory.segments.size()) { + wasm.memory.segments[i].name = rawName; + } else { + std::cerr << "warning: memory index out of bounds in name section, " + "memory subsection: " + << std::string(rawName.str) << " at index " + << std::to_string(index) << std::endl; + } + } + } else if (nameType == BinaryConsts::UserSections::Subsection::NameGlobal) { + auto num = getU32LEB(); + std::set usedNames; + for (size_t i = 0; i < num; i++) { + auto index = getU32LEB(); + auto rawName = getInlineString(); + auto name = escape(rawName); + // De-duplicate names by appending .1, .2, etc. + for (int i = 1; !usedNames.insert(name).second; ++i) { + name = std::string(escape(rawName).str) + std::string(".") + + std::to_string(i); + } + auto numGlobalImports = globalImports.size(); + if (index < numGlobalImports) { + globalImports[index]->setExplicitName(name); + } else if (index - numGlobalImports < globals.size()) { + globals[index - numGlobalImports]->setExplicitName(name); + } else { + std::cerr << "warning: global index out of bounds in name section, " + "global subsection: " + << std::string(rawName.str) << " at index " + << std::to_string(index) << std::endl; + } } + } else { + std::cerr << "warning: unknown name subsection with id " + << std::to_string(nameType) << " at " << pos << std::endl; + pos = subsectionPos + subsectionSize; } if (pos != subsectionPos + subsectionSize) { throwError("bad names subsection position change"); @@ -2066,8 +2659,8 @@ wasm.features = FeatureSet::MVP; auto sectionPos = pos; - size_t num_feats = getU32LEB(); - for (size_t i = 0; i < num_feats; ++i) { + size_t numFeatures = getU32LEB(); + for (size_t i = 0; i < numFeatures; ++i) { uint8_t prefix = getInt8(); if (prefix != BinaryConsts::FeatureUsed) { if (prefix == BinaryConsts::FeatureRequired) { @@ -2105,6 +2698,15 @@ wasm.features.setTailCall(); } else if (name == BinaryConsts::UserSections::ReferenceTypesFeature) { wasm.features.setReferenceTypes(); + } else if (name == BinaryConsts::UserSections::MultivalueFeature) { + wasm.features.setMultivalue(); + } else if (name == BinaryConsts::UserSections::GCFeature) { + wasm.features.setGC(); + } else if (name == BinaryConsts::UserSections::Memory64Feature) { + wasm.features.setMemory64(); + } else if (name == + BinaryConsts::UserSections::TypedFunctionReferencesFeature) { + wasm.features.setTypedFunctionReferences(); } } } @@ -2113,6 +2715,26 @@ } } +void WasmBinaryBuilder::readDylink(size_t payloadLen) { + wasm.dylinkSection = make_unique(); + + auto sectionPos = pos; + + wasm.dylinkSection->memorySize = getU32LEB(); + wasm.dylinkSection->memoryAlignment = getU32LEB(); + wasm.dylinkSection->tableSize = getU32LEB(); + wasm.dylinkSection->tableAlignment = getU32LEB(); + + size_t numNeededDynlibs = getU32LEB(); + for (size_t i = 0; i < numNeededDynlibs; ++i) { + wasm.dylinkSection->neededDynlibs.push_back(getInlineString()); + } + + if (pos != sectionPos + payloadLen) { + throwError("bad features section size"); + } +} + BinaryConsts::ASTNodes WasmBinaryBuilder::readExpression(Expression*& curr) { if (pos == endOfFunction) { throwError("Reached function end without seeing End opcode"); @@ -2197,7 +2819,12 @@ break; case BinaryConsts::End: curr = nullptr; - continueControlFlow(BinaryLocations::End, startPos); + // Pop the current control flow structure off the stack. If there is none + // then this is the "end" of the function itself, which also emits an + // "end" byte. + if (!controlFlowStack.empty()) { + controlFlowStack.pop_back(); + } break; case BinaryConsts::Else: curr = nullptr; @@ -2216,8 +2843,11 @@ case BinaryConsts::RefFunc: visitRefFunc((curr = allocator.alloc())->cast()); break; + case BinaryConsts::RefEq: + visitRefEq((curr = allocator.alloc())->cast()); + break; case BinaryConsts::Try: - visitTry((curr = allocator.alloc())->cast()); + visitTryOrTryInBlock(curr); break; case BinaryConsts::Throw: visitThrow((curr = allocator.alloc())->cast()); @@ -2228,6 +2858,34 @@ case BinaryConsts::BrOnExn: visitBrOnExn((curr = allocator.alloc())->cast()); break; + case BinaryConsts::MemorySize: { + auto size = allocator.alloc(); + if (wasm.memory.is64()) { + size->make64(); + } + curr = size; + visitMemorySize(size); + break; + } + case BinaryConsts::MemoryGrow: { + auto grow = allocator.alloc(); + if (wasm.memory.is64()) { + grow->make64(); + } + curr = grow; + visitMemoryGrow(grow); + break; + } + case BinaryConsts::CallRef: + visitCallRef((curr = allocator.alloc())->cast()); + break; + case BinaryConsts::RetCallRef: { + auto call = allocator.alloc(); + call->isReturn = true; + curr = call; + visitCallRef(call); + break; + } case BinaryConsts::AtomicPrefix: { code = static_cast(getU32LEB()); if (maybeVisitLoad(curr, code, /*isAtomic=*/true)) { @@ -2307,9 +2965,62 @@ if (maybeVisitSIMDLoad(curr, opcode)) { break; } + if (maybeVisitSIMDLoadStoreLane(curr, opcode)) { + break; + } + if (maybeVisitPrefetch(curr, opcode)) { + break; + } throwError("invalid code after SIMD prefix: " + std::to_string(opcode)); break; } + case BinaryConsts::GCPrefix: { + auto opcode = getU32LEB(); + if (maybeVisitI31New(curr, opcode)) { + break; + } + if (maybeVisitI31Get(curr, opcode)) { + break; + } + if (maybeVisitRefTest(curr, opcode)) { + break; + } + if (maybeVisitRefCast(curr, opcode)) { + break; + } + if (maybeVisitBrOnCast(curr, opcode)) { + break; + } + if (maybeVisitRttCanon(curr, opcode)) { + break; + } + if (maybeVisitRttSub(curr, opcode)) { + break; + } + if (maybeVisitStructNew(curr, opcode)) { + break; + } + if (maybeVisitStructGet(curr, opcode)) { + break; + } + if (maybeVisitStructSet(curr, opcode)) { + break; + } + if (maybeVisitArrayNew(curr, opcode)) { + break; + } + if (maybeVisitArrayGet(curr, opcode)) { + break; + } + if (maybeVisitArraySet(curr, opcode)) { + break; + } + if (maybeVisitArrayLen(curr, opcode)) { + break; + } + throwError("invalid code after GC prefix: " + std::to_string(opcode)); + break; + } default: { // otherwise, the code is a subcode TODO: optimize if (maybeVisitBinary(curr, code)) { @@ -2327,9 +3038,6 @@ if (maybeVisitStore(curr, code, /*isAtomic=*/false)) { break; } - if (maybeVisitHost(curr, code)) { - break; - } throwError("bad node code " + std::to_string(code)); break; } @@ -2357,64 +3065,52 @@ void WasmBinaryBuilder::continueControlFlow(BinaryLocations::DelimiterId id, BinaryLocation pos) { if (DWARF && currFunction) { - if (controlFlowStack.empty()) { - // We reached the end of the function, which is also marked with an - // "end", like a control flow structure. - assert(id == BinaryLocations::End); - assert(pos + 1 == endOfFunction); - return; - } assert(!controlFlowStack.empty()); auto currControlFlow = controlFlowStack.back(); // We are called after parsing the byte, so we need to subtract one to // get its position. currFunction->delimiterLocations[currControlFlow][id] = pos - codeSectionLocation; - if (id == BinaryLocations::End) { - controlFlowStack.pop_back(); - } } } void WasmBinaryBuilder::pushBlockElements(Block* curr, - size_t start, - size_t end) { + Type type, + size_t start) { assert(start <= expressionStack.size()); - assert(start <= end); - assert(end <= expressionStack.size()); - // the first dropped element may be consumed by code later - it was on the - // stack first, and is the only thing left on the stack. there must be just - // one thing on the stack since we are at the end of a block context. note - // that we may need to drop more than one thing, since a bunch of concrete - // values may be all "consumed" by an unreachable (in which case, the first - // value can't be consumed anyhow, so it doesn't matter) - const Index NONE = -1; - Index consumable = NONE; - for (size_t i = start; i < end; i++) { + // The results of this block are the last values pushed to the expressionStack + Expression* results = nullptr; + if (type.isConcrete()) { + results = popTypedExpression(type); + } + if (expressionStack.size() < start) { + throwError("Block requires more values than are available"); + } + // Everything else on the stack after `start` is either a none-type expression + // or a concretely-type expression that is implicitly dropped due to + // unreachability at the end of the block, like this: + // + // block i32 + // i32.const 1 + // i32.const 2 + // i32.const 3 + // return + // end + // + // The first two const elements will be emitted as drops in the block (the + // optimizer can remove them, of course, but in general we may need dropped + // items here as they may have side effects). + // + for (size_t i = start; i < expressionStack.size(); ++i) { auto* item = expressionStack[i]; - curr->list.push_back(item); - if (i < end - 1) { - // stacky&unreachable code may introduce elements that need to be dropped - // in non-final positions - if (item->type.isConcrete()) { - curr->list.back() = Builder(wasm).makeDrop(item); - if (consumable == NONE) { - // this is the first, and hence consumable value. note the location - consumable = curr->list.size() - 1; - } - } + if (item->type.isConcrete()) { + item = Builder(wasm).makeDrop(item); } + curr->list.push_back(item); } expressionStack.resize(start); - // if we have a consumable item and need it, use it - if (consumable != NONE && curr->list.back()->type == Type::none) { - requireFunctionContext( - "need an extra var in a non-function context, invalid wasm"); - Builder builder(wasm); - auto* item = curr->list[consumable]->cast()->value; - auto temp = builder.addVar(currFunction, item->type); - curr->list[consumable] = builder.makeLocalSet(temp, item); - curr->list.push_back(builder.makeLocalGet(temp, item->type)); + if (results != nullptr) { + curr->list.push_back(results); } } @@ -2427,7 +3123,7 @@ while (1) { curr->type = getType(); curr->name = getNextLabel(); - breakStack.push_back({curr->name, curr->type != Type::none}); + breakStack.push_back({curr->name, curr->type}); stack.push_back(curr); if (more() && input[pos] == BinaryConsts::Block) { // a recursion @@ -2452,7 +3148,7 @@ size_t start = expressionStack.size(); if (last) { // the previous block is our first-position element - expressionStack.push_back(last); + pushExpression(last); } last = curr; processExpressions(); @@ -2460,32 +3156,22 @@ if (end < start) { throwError("block cannot pop from outside"); } - pushBlockElements(curr, start, end); + pushBlockElements(curr, curr->type, start); curr->finalize(curr->type, - breakTargetNames.find(curr->name) != - breakTargetNames.end() /* hasBreak */); + breakTargetNames.find(curr->name) != breakTargetNames.end() + ? Block::HasBreak + : Block::NoBreak); breakStack.pop_back(); breakTargetNames.erase(curr->name); } } // Gets a block of expressions. If it's just one, return that singleton. -// numPops is the number of pop instructions we add before starting to parse the -// block. Can be used when we need to assume certain number of values are on top -// of the stack in the beginning. -Expression* WasmBinaryBuilder::getBlockOrSingleton(Type type, - unsigned numPops) { +Expression* WasmBinaryBuilder::getBlockOrSingleton(Type type) { Name label = getNextLabel(); - breakStack.push_back( - {label, type != Type::none && type != Type::unreachable}); + breakStack.push_back({label, type}); auto start = expressionStack.size(); - Builder builder(wasm); - for (unsigned i = 0; i < numPops; i++) { - auto* pop = builder.makePop(Type::exnref); - expressionStack.push_back(pop); - } - processExpressions(); size_t end = expressionStack.size(); if (end < start) { @@ -2493,7 +3179,7 @@ } breakStack.pop_back(); auto* block = allocator.alloc(); - pushBlockElements(block, start, end); + pushBlockElements(block, type, start); block->name = label; block->finalize(type); // maybe we don't need a block here? @@ -2527,7 +3213,7 @@ startControlFlow(curr); curr->type = getType(); curr->name = getNextLabel(); - breakStack.push_back({curr->name, 0}); + breakStack.push_back({curr->name, Type::none}); // find the expressions in the block, and create the body // a loop may have a list of instructions in wasm, much like // a block, but it only has a label at the top of the loop, @@ -2536,14 +3222,14 @@ auto start = expressionStack.size(); processExpressions(); size_t end = expressionStack.size(); + if (start > end) { + throwError("block cannot pop from outside"); + } if (end - start == 1) { curr->body = popExpression(); } else { - if (start > end) { - throwError("block cannot pop from outside"); - } auto* block = allocator.alloc(); - pushBlockElements(block, start, end); + pushBlockElements(block, curr->type, start); block->finalize(curr->type); curr->body = block; } @@ -2562,8 +3248,8 @@ if (index >= breakStack.size()) { throwError("bad breakindex (high)"); } - BYN_TRACE("breaktarget " << breakStack[index].name << " arity " - << breakStack[index].arity << std::endl); + BYN_TRACE("breaktarget " << breakStack[index].name << " type " + << breakStack[index].type << std::endl); auto& ret = breakStack[index]; // if the break is in literally unreachable code, then we will not emit it // anyhow, so do not note that the target has breaks to it @@ -2580,8 +3266,8 @@ if (code == BinaryConsts::BrIf) { curr->condition = popNonVoidExpression(); } - if (target.arity) { - curr->value = popNonVoidExpression(); + if (target.type.isConcrete()) { + curr->value = popTypedExpression(target.type); } curr->finalize(); } @@ -2597,8 +3283,8 @@ auto defaultTarget = getBreakTarget(getU32LEB()); curr->default_ = defaultTarget.name; BYN_TRACE("default: " << curr->default_ << "\n"); - if (defaultTarget.arity) { - curr->value = popNonVoidExpression(); + if (defaultTarget.type.isConcrete()) { + curr->value = popTypedExpression(defaultTarget.type); } curr->finalize(); } @@ -2606,17 +3292,7 @@ void WasmBinaryBuilder::visitCall(Call* curr) { BYN_TRACE("zz node: Call\n"); auto index = getU32LEB(); - Signature sig; - if (index < functionImports.size()) { - auto* import = functionImports[index]; - sig = import->sig; - } else { - Index adjustedIndex = index - functionImports.size(); - if (adjustedIndex >= functionSignatures.size()) { - throwError("invalid call index"); - } - sig = functionSignatures[adjustedIndex]; - } + auto sig = getSignatureByFunctionIndex(index); auto num = sig.params.size(); curr->operands.resize(num); for (size_t i = 0; i < num; i++) { @@ -2630,10 +3306,7 @@ void WasmBinaryBuilder::visitCallIndirect(CallIndirect* curr) { BYN_TRACE("zz node: CallIndirect\n"); auto index = getU32LEB(); - if (index >= signatures.size()) { - throwError("bad call_indirect function index"); - } - curr->sig = signatures[index]; + curr->sig = getSignatureByTypeIndex(index); auto reserved = getU32LEB(); if (reserved != 0) { throwError("Invalid flags field in call_indirect"); @@ -2678,15 +3351,37 @@ void WasmBinaryBuilder::visitGlobalGet(GlobalGet* curr) { BYN_TRACE("zz node: GlobalGet " << pos << std::endl); auto index = getU32LEB(); - curr->name = getGlobalName(index); - curr->type = wasm.getGlobal(curr->name)->type; + if (index < globalImports.size()) { + auto* import = globalImports[index]; + curr->name = import->name; + curr->type = import->type; + } else { + Index adjustedIndex = index - globalImports.size(); + if (adjustedIndex >= globals.size()) { + throwError("invalid global index"); + } + auto& glob = globals[adjustedIndex]; + curr->name = glob->name; + curr->type = glob->type; + } + globalRefs[index].push_back(curr); // we don't know the final name yet } void WasmBinaryBuilder::visitGlobalSet(GlobalSet* curr) { BYN_TRACE("zz node: GlobalSet\n"); auto index = getU32LEB(); - curr->name = getGlobalName(index); + if (index < globalImports.size()) { + auto* import = globalImports[index]; + curr->name = import->name; + } else { + Index adjustedIndex = index - globalImports.size(); + if (adjustedIndex >= globals.size()) { + throwError("invalid global index"); + } + curr->name = globals[adjustedIndex]->name; + } curr->value = popNonVoidExpression(); + globalRefs[index].push_back(curr); // we don't know the final name yet curr->finalize(); } @@ -2695,93 +3390,97 @@ if (rawAlignment > 4) { throwError("Alignment must be of a reasonable size"); } - alignment = Pow2(rawAlignment); - offset = getU32LEB(); + alignment = Bits::pow2(rawAlignment); + offset = getUPtrLEB(); } bool WasmBinaryBuilder::maybeVisitLoad(Expression*& out, uint8_t code, bool isAtomic) { Load* curr; + auto allocate = [&]() { + curr = allocator.alloc(); + // The signed field does not matter in some cases (where the size of the + // load is equal to the size of the type, in which case we do not extend), + // but give it a default value nonetheless, to make hashing and other code + // simpler, so that they do not need to consider whether the sign matters or + // not. + curr->signed_ = false; + }; if (!isAtomic) { switch (code) { case BinaryConsts::I32LoadMem8S: - curr = allocator.alloc(); + allocate(); curr->bytes = 1; curr->type = Type::i32; curr->signed_ = true; break; case BinaryConsts::I32LoadMem8U: - curr = allocator.alloc(); + allocate(); curr->bytes = 1; curr->type = Type::i32; - curr->signed_ = false; break; case BinaryConsts::I32LoadMem16S: - curr = allocator.alloc(); + allocate(); curr->bytes = 2; curr->type = Type::i32; curr->signed_ = true; break; case BinaryConsts::I32LoadMem16U: - curr = allocator.alloc(); + allocate(); curr->bytes = 2; curr->type = Type::i32; - curr->signed_ = false; break; case BinaryConsts::I32LoadMem: - curr = allocator.alloc(); + allocate(); curr->bytes = 4; curr->type = Type::i32; break; case BinaryConsts::I64LoadMem8S: - curr = allocator.alloc(); + allocate(); curr->bytes = 1; curr->type = Type::i64; curr->signed_ = true; break; case BinaryConsts::I64LoadMem8U: - curr = allocator.alloc(); + allocate(); curr->bytes = 1; curr->type = Type::i64; - curr->signed_ = false; break; case BinaryConsts::I64LoadMem16S: - curr = allocator.alloc(); + allocate(); curr->bytes = 2; curr->type = Type::i64; curr->signed_ = true; break; case BinaryConsts::I64LoadMem16U: - curr = allocator.alloc(); + allocate(); curr->bytes = 2; curr->type = Type::i64; - curr->signed_ = false; break; case BinaryConsts::I64LoadMem32S: - curr = allocator.alloc(); + allocate(); curr->bytes = 4; curr->type = Type::i64; curr->signed_ = true; break; case BinaryConsts::I64LoadMem32U: - curr = allocator.alloc(); + allocate(); curr->bytes = 4; curr->type = Type::i64; - curr->signed_ = false; break; case BinaryConsts::I64LoadMem: - curr = allocator.alloc(); + allocate(); curr->bytes = 8; curr->type = Type::i64; break; case BinaryConsts::F32LoadMem: - curr = allocator.alloc(); + allocate(); curr->bytes = 4; curr->type = Type::f32; break; case BinaryConsts::F64LoadMem: - curr = allocator.alloc(); + allocate(); curr->bytes = 8; curr->type = Type::f64; break; @@ -2792,44 +3491,43 @@ } else { switch (code) { case BinaryConsts::I32AtomicLoad8U: - curr = allocator.alloc(); + allocate(); curr->bytes = 1; curr->type = Type::i32; break; case BinaryConsts::I32AtomicLoad16U: - curr = allocator.alloc(); + allocate(); curr->bytes = 2; curr->type = Type::i32; break; case BinaryConsts::I32AtomicLoad: - curr = allocator.alloc(); + allocate(); curr->bytes = 4; curr->type = Type::i32; break; case BinaryConsts::I64AtomicLoad8U: - curr = allocator.alloc(); + allocate(); curr->bytes = 1; curr->type = Type::i64; break; case BinaryConsts::I64AtomicLoad16U: - curr = allocator.alloc(); + allocate(); curr->bytes = 2; curr->type = Type::i64; break; case BinaryConsts::I64AtomicLoad32U: - curr = allocator.alloc(); + allocate(); curr->bytes = 4; curr->type = Type::i64; break; case BinaryConsts::I64AtomicLoad: - curr = allocator.alloc(); + allocate(); curr->bytes = 8; curr->type = Type::i64; break; default: return false; } - curr->signed_ = false; BYN_TRACE("zz node: AtomicLoad\n"); } @@ -2956,7 +3654,7 @@ // Set curr to the given opcode, type and size. #define SET(opcode, optype, size) \ - curr->op = opcode; \ + curr->op = RMW##opcode; \ curr->type = optype; \ curr->bytes = size @@ -3689,6 +4387,10 @@ curr = allocator.alloc(); curr->op = GeUVecI32x4; break; + case BinaryConsts::I64x2Eq: + curr = allocator.alloc(); + curr->op = EqVecI64x2; + break; case BinaryConsts::F32x4Eq: curr = allocator.alloc(); curr->op = EqVecF32x4; @@ -3849,6 +4551,26 @@ curr = allocator.alloc(); curr->op = AvgrUVecI16x8; break; + case BinaryConsts::I16x8Q15MulrSatS: + curr = allocator.alloc(); + curr->op = Q15MulrSatSVecI16x8; + break; + case BinaryConsts::I16x8ExtMulLowSI8x16: + curr = allocator.alloc(); + curr->op = ExtMulLowSVecI16x8; + break; + case BinaryConsts::I16x8ExtMulHighSI8x16: + curr = allocator.alloc(); + curr->op = ExtMulHighSVecI16x8; + break; + case BinaryConsts::I16x8ExtMulLowUI8x16: + curr = allocator.alloc(); + curr->op = ExtMulLowUVecI16x8; + break; + case BinaryConsts::I16x8ExtMulHighUI8x16: + curr = allocator.alloc(); + curr->op = ExtMulHighUVecI16x8; + break; case BinaryConsts::I32x4Add: curr = allocator.alloc(); curr->op = AddVecI32x4; @@ -3881,6 +4603,22 @@ curr = allocator.alloc(); curr->op = DotSVecI16x8ToVecI32x4; break; + case BinaryConsts::I32x4ExtMulLowSI16x8: + curr = allocator.alloc(); + curr->op = ExtMulLowSVecI32x4; + break; + case BinaryConsts::I32x4ExtMulHighSI16x8: + curr = allocator.alloc(); + curr->op = ExtMulHighSVecI32x4; + break; + case BinaryConsts::I32x4ExtMulLowUI16x8: + curr = allocator.alloc(); + curr->op = ExtMulLowUVecI32x4; + break; + case BinaryConsts::I32x4ExtMulHighUI16x8: + curr = allocator.alloc(); + curr->op = ExtMulHighUVecI32x4; + break; case BinaryConsts::I64x2Add: curr = allocator.alloc(); curr->op = AddVecI64x2; @@ -3889,6 +4627,26 @@ curr = allocator.alloc(); curr->op = SubVecI64x2; break; + case BinaryConsts::I64x2Mul: + curr = allocator.alloc(); + curr->op = MulVecI64x2; + break; + case BinaryConsts::I64x2ExtMulLowSI32x4: + curr = allocator.alloc(); + curr->op = ExtMulLowSVecI64x2; + break; + case BinaryConsts::I64x2ExtMulHighSI32x4: + curr = allocator.alloc(); + curr->op = ExtMulHighSVecI64x2; + break; + case BinaryConsts::I64x2ExtMulLowUI32x4: + curr = allocator.alloc(); + curr->op = ExtMulLowUVecI64x2; + break; + case BinaryConsts::I64x2ExtMulHighUI32x4: + curr = allocator.alloc(); + curr->op = ExtMulHighUVecI64x2; + break; case BinaryConsts::F32x4Add: curr = allocator.alloc(); curr->op = AddVecF32x4; @@ -3913,6 +4671,14 @@ curr = allocator.alloc(); curr->op = MaxVecF32x4; break; + case BinaryConsts::F32x4PMin: + curr = allocator.alloc(); + curr->op = PMinVecF32x4; + break; + case BinaryConsts::F32x4PMax: + curr = allocator.alloc(); + curr->op = PMaxVecF32x4; + break; case BinaryConsts::F64x2Add: curr = allocator.alloc(); curr->op = AddVecF64x2; @@ -3937,6 +4703,14 @@ curr = allocator.alloc(); curr->op = MaxVecF64x2; break; + case BinaryConsts::F64x2PMin: + curr = allocator.alloc(); + curr->op = PMinVecF64x2; + break; + case BinaryConsts::F64x2PMax: + curr = allocator.alloc(); + curr->op = PMaxVecF64x2; + break; case BinaryConsts::I8x16NarrowSI16x8: curr = allocator.alloc(); curr->op = NarrowSVecI16x8ToVecI8x16; @@ -3998,6 +4772,14 @@ curr = allocator.alloc(); curr->op = NotVec128; break; + case BinaryConsts::I8x16Popcnt: + curr = allocator.alloc(); + curr->op = PopcntVecI8x16; + break; + case BinaryConsts::I8x16Abs: + curr = allocator.alloc(); + curr->op = AbsVecI8x16; + break; case BinaryConsts::I8x16Neg: curr = allocator.alloc(); curr->op = NegVecI8x16; @@ -4010,6 +4792,14 @@ curr = allocator.alloc(); curr->op = AllTrueVecI8x16; break; + case BinaryConsts::I8x16Bitmask: + curr = allocator.alloc(); + curr->op = BitmaskVecI8x16; + break; + case BinaryConsts::I16x8Abs: + curr = allocator.alloc(); + curr->op = AbsVecI16x8; + break; case BinaryConsts::I16x8Neg: curr = allocator.alloc(); curr->op = NegVecI16x8; @@ -4022,6 +4812,14 @@ curr = allocator.alloc(); curr->op = AllTrueVecI16x8; break; + case BinaryConsts::I16x8Bitmask: + curr = allocator.alloc(); + curr->op = BitmaskVecI16x8; + break; + case BinaryConsts::I32x4Abs: + curr = allocator.alloc(); + curr->op = AbsVecI32x4; + break; case BinaryConsts::I32x4Neg: curr = allocator.alloc(); curr->op = NegVecI32x4; @@ -4034,17 +4832,17 @@ curr = allocator.alloc(); curr->op = AllTrueVecI32x4; break; - case BinaryConsts::I64x2Neg: + case BinaryConsts::I32x4Bitmask: curr = allocator.alloc(); - curr->op = NegVecI64x2; + curr->op = BitmaskVecI32x4; break; - case BinaryConsts::I64x2AnyTrue: + case BinaryConsts::I64x2Neg: curr = allocator.alloc(); - curr->op = AnyTrueVecI64x2; + curr->op = NegVecI64x2; break; - case BinaryConsts::I64x2AllTrue: + case BinaryConsts::I64x2Bitmask: curr = allocator.alloc(); - curr->op = AllTrueVecI64x2; + curr->op = BitmaskVecI64x2; break; case BinaryConsts::F32x4Abs: curr = allocator.alloc(); @@ -4058,6 +4856,22 @@ curr = allocator.alloc(); curr->op = SqrtVecF32x4; break; + case BinaryConsts::F32x4Ceil: + curr = allocator.alloc(); + curr->op = CeilVecF32x4; + break; + case BinaryConsts::F32x4Floor: + curr = allocator.alloc(); + curr->op = FloorVecF32x4; + break; + case BinaryConsts::F32x4Trunc: + curr = allocator.alloc(); + curr->op = TruncVecF32x4; + break; + case BinaryConsts::F32x4Nearest: + curr = allocator.alloc(); + curr->op = NearestVecF32x4; + break; case BinaryConsts::F64x2Abs: curr = allocator.alloc(); curr->op = AbsVecF64x2; @@ -4070,6 +4884,38 @@ curr = allocator.alloc(); curr->op = SqrtVecF64x2; break; + case BinaryConsts::F64x2Ceil: + curr = allocator.alloc(); + curr->op = CeilVecF64x2; + break; + case BinaryConsts::F64x2Floor: + curr = allocator.alloc(); + curr->op = FloorVecF64x2; + break; + case BinaryConsts::F64x2Trunc: + curr = allocator.alloc(); + curr->op = TruncVecF64x2; + break; + case BinaryConsts::F64x2Nearest: + curr = allocator.alloc(); + curr->op = NearestVecF64x2; + break; + case BinaryConsts::I16x8ExtAddPairWiseSI8x16: + curr = allocator.alloc(); + curr->op = ExtAddPairwiseSVecI8x16ToI16x8; + break; + case BinaryConsts::I16x8ExtAddPairWiseUI8x16: + curr = allocator.alloc(); + curr->op = ExtAddPairwiseUVecI8x16ToI16x8; + break; + case BinaryConsts::I32x4ExtAddPairWiseSI16x8: + curr = allocator.alloc(); + curr->op = ExtAddPairwiseSVecI16x8ToI32x4; + break; + case BinaryConsts::I32x4ExtAddPairWiseUI16x8: + curr = allocator.alloc(); + curr->op = ExtAddPairwiseUVecI16x8ToI32x4; + break; case BinaryConsts::I32x4TruncSatSF32x4: curr = allocator.alloc(); curr->op = TruncSatSVecF32x4ToVecI32x4; @@ -4134,6 +4980,22 @@ curr = allocator.alloc(); curr->op = WidenHighUVecI16x8ToVecI32x4; break; + case BinaryConsts::I64x2WidenLowSI32x4: + curr = allocator.alloc(); + curr->op = WidenLowSVecI32x4ToVecI64x2; + break; + case BinaryConsts::I64x2WidenHighSI32x4: + curr = allocator.alloc(); + curr->op = WidenHighSVecI32x4ToVecI64x2; + break; + case BinaryConsts::I64x2WidenLowUI32x4: + curr = allocator.alloc(); + curr->op = WidenLowUVecI32x4ToVecI64x2; + break; + case BinaryConsts::I64x2WidenHighUI32x4: + curr = allocator.alloc(); + curr->op = WidenHighUVecI32x4ToVecI64x2; + break; default: return false; } @@ -4287,6 +5149,22 @@ curr = allocator.alloc(); curr->op = Bitselect; break; + case BinaryConsts::V8x16SignSelect: + curr = allocator.alloc(); + curr->op = SignSelectVec8x16; + break; + case BinaryConsts::V16x8SignSelect: + curr = allocator.alloc(); + curr->op = SignSelectVec16x8; + break; + case BinaryConsts::V32x4SignSelect: + curr = allocator.alloc(); + curr->op = SignSelectVec32x4; + break; + case BinaryConsts::V64x2SignSelect: + curr = allocator.alloc(); + curr->op = SignSelectVec64x2; + break; case BinaryConsts::F32x4QFMA: curr = allocator.alloc(); curr->op = QFMAF32x4; @@ -4429,16 +5307,93 @@ curr = allocator.alloc(); curr->op = LoadExtUVec32x2ToVecI64x2; break; + case BinaryConsts::V128Load32Zero: + curr = allocator.alloc(); + curr->op = Load32Zero; + break; + case BinaryConsts::V128Load64Zero: + curr = allocator.alloc(); + curr->op = Load64Zero; + break; + default: + return false; + } + readMemoryAccess(curr->align, curr->offset); + curr->ptr = popNonVoidExpression(); + curr->finalize(); + out = curr; + return true; +} + +bool WasmBinaryBuilder::maybeVisitSIMDLoadStoreLane(Expression*& out, + uint32_t code) { + SIMDLoadStoreLaneOp op; + size_t lanes; + switch (code) { + case BinaryConsts::V128Load8Lane: + op = LoadLaneVec8x16; + lanes = 16; + break; + case BinaryConsts::V128Load16Lane: + op = LoadLaneVec16x8; + lanes = 8; + break; + case BinaryConsts::V128Load32Lane: + op = LoadLaneVec32x4; + lanes = 4; + break; + case BinaryConsts::V128Load64Lane: + op = LoadLaneVec64x2; + lanes = 2; + break; + case BinaryConsts::V128Store8Lane: + op = StoreLaneVec8x16; + lanes = 16; + break; + case BinaryConsts::V128Store16Lane: + op = StoreLaneVec16x8; + lanes = 8; + break; + case BinaryConsts::V128Store32Lane: + op = StoreLaneVec32x4; + lanes = 4; + break; + case BinaryConsts::V128Store64Lane: + op = StoreLaneVec64x2; + lanes = 2; + break; default: return false; } + auto* curr = allocator.alloc(); + curr->op = op; readMemoryAccess(curr->align, curr->offset); + curr->index = getLaneIndex(lanes); + curr->vec = popNonVoidExpression(); curr->ptr = popNonVoidExpression(); curr->finalize(); out = curr; return true; } +bool WasmBinaryBuilder::maybeVisitPrefetch(Expression*& out, uint32_t code) { + PrefetchOp op; + switch (code) { + case BinaryConsts::PrefetchT: + op = PrefetchTemporal; + break; + case BinaryConsts::PrefetchNT: + op = PrefetchNontemporal; + break; + default: + return false; + } + Address align, offset; + readMemoryAccess(align, offset); + out = Builder(wasm).makePrefetch(op, offset, align, popNonVoidExpression()); + return true; +} + void WasmBinaryBuilder::visitSelect(Select* curr, uint8_t code) { BYN_TRACE("zz node: Select, code " << int32_t(code) << std::endl); if (code == BinaryConsts::SelectWithType) { @@ -4462,38 +5417,29 @@ void WasmBinaryBuilder::visitReturn(Return* curr) { BYN_TRACE("zz node: Return\n"); requireFunctionContext("return"); - if (currFunction->sig.results != Type::none) { - curr->value = popNonVoidExpression(); + if (currFunction->sig.results.isConcrete()) { + curr->value = popTypedExpression(currFunction->sig.results); } curr->finalize(); } -bool WasmBinaryBuilder::maybeVisitHost(Expression*& out, uint8_t code) { - Host* curr; - switch (code) { - case BinaryConsts::MemorySize: { - curr = allocator.alloc(); - curr->op = MemorySize; - break; - } - case BinaryConsts::MemoryGrow: { - curr = allocator.alloc(); - curr->op = MemoryGrow; - curr->operands.resize(1); - curr->operands[0] = popNonVoidExpression(); - break; - } - default: - return false; +void WasmBinaryBuilder::visitMemorySize(MemorySize* curr) { + BYN_TRACE("zz node: MemorySize\n"); + auto reserved = getU32LEB(); + if (reserved != 0) { + throwError("Invalid reserved field on memory.size"); } - BYN_TRACE("zz node: Host\n"); + curr->finalize(); +} + +void WasmBinaryBuilder::visitMemoryGrow(MemoryGrow* curr) { + BYN_TRACE("zz node: MemoryGrow\n"); + curr->delta = popNonVoidExpression(); auto reserved = getU32LEB(); if (reserved != 0) { - throwError("Invalid reserved field on memory.grow/memory.size"); + throwError("Invalid reserved field on memory.grow"); } curr->finalize(); - out = curr; - return true; } void WasmBinaryBuilder::visitNop(Nop* curr) { BYN_TRACE("zz node: Nop\n"); } @@ -4510,7 +5456,7 @@ void WasmBinaryBuilder::visitRefNull(RefNull* curr) { BYN_TRACE("zz node: RefNull\n"); - curr->finalize(); + curr->finalize(getHeapType()); } void WasmBinaryBuilder::visitRefIsNull(RefIsNull* curr) { @@ -4526,11 +5472,22 @@ throwError("ref.func: invalid call index"); } functionRefs[index].push_back(curr); // we don't know function names yet + // To support typed function refs, we give the reference not just a general + // funcref, but a specific subtype with the actual signature. + // FIXME: for now, emit a nullable type here + curr->finalize(Type(HeapType(getSignatureByFunctionIndex(index)), Nullable)); +} + +void WasmBinaryBuilder::visitRefEq(RefEq* curr) { + BYN_TRACE("zz node: RefEq\n"); + curr->right = popNonVoidExpression(); + curr->left = popNonVoidExpression(); curr->finalize(); } -void WasmBinaryBuilder::visitTry(Try* curr) { +void WasmBinaryBuilder::visitTryOrTryInBlock(Expression*& out) { BYN_TRACE("zz node: Try\n"); + auto* curr = allocator.alloc(); startControlFlow(curr); // For simplicity of implementation, like if scopes, we create a hidden block // within each try-body and catch-body, and let branches target those inner @@ -4540,11 +5497,84 @@ if (lastSeparator != BinaryConsts::Catch) { throwError("No catch instruction within a try scope"); } - curr->catchBody = getBlockOrSingleton(curr->type, 1); + + // For simplicity, we create an inner block within the catch body too, but the + // one within the 'catch' *must* be omitted when we write out the binary back + // later, because the 'catch' instruction pushes a value onto the stack and + // the inner block does not support block input parameters without multivalue + // support. + // try + // ... + // catch ;; Pushes a value onto the stack + // block ;; Inner block. Should be deleted when writing binary! + // use the pushed value + // end + // end + // + // But when input binary code is like + // try + // ... + // catch + // br 0 + // end + // + // 'br 0' accidentally happens to target the inner block, creating code like + // this in Binaryen IR, making the inner block not deletable, resulting in a + // validation error: + // (try + // ... + // (catch + // (block $label0 ;; Cannot be deleted, because there's a branch to this + // ... + // (br $label0) + // ) + // ) + // ) + // + // When this happens, we fix this by creating a block that wraps the whole + // try-catch, and making the branches target that block instead, like this: + // (block $label ;; New enclosing block, new target for the branch + // (try + // ... + // (catch + // (block ;; Now this can be deleted when writing binary + // ... + // (br $label0) + // ) + // ) + // ) + // ) + Name catchLabel = getNextLabel(); + breakStack.push_back({catchLabel, curr->type}); + auto start = expressionStack.size(); + + Builder builder(wasm); + pushExpression(builder.makePop(Type::exnref)); + + processExpressions(); + size_t end = expressionStack.size(); + if (start > end) { + throwError("block cannot pop from outside"); + } + if (end - start == 1) { + curr->catchBody = popExpression(); + } else { + auto* block = allocator.alloc(); + pushBlockElements(block, curr->type, start); + block->finalize(curr->type); + curr->catchBody = block; + } curr->finalize(curr->type); - if (lastSeparator != BinaryConsts::End) { - throwError("try should end with end"); + + if (breakTargetNames.find(catchLabel) == breakTargetNames.end()) { + out = curr; + } else { + // Create a new block that encloses the whole try-catch + auto* block = builder.makeBlock(catchLabel, curr); + out = block; } + breakStack.pop_back(); + breakTargetNames.erase(catchLabel); } void WasmBinaryBuilder::visitThrow(Throw* curr) { @@ -4589,8 +5619,263 @@ curr->finalize(); } +void WasmBinaryBuilder::visitCallRef(CallRef* curr) { + BYN_TRACE("zz node: CallRef\n"); + curr->target = popNonVoidExpression(); + auto type = curr->target->type; + if (type == Type::unreachable) { + // If our input is unreachable, then we cannot even find out how many inputs + // we have, and just set ourselves to unreachable as well. + curr->finalize(type); + return; + } + if (!type.isRef()) { + throwError("Non-ref type for a call_ref: " + type.toString()); + } + auto heapType = type.getHeapType(); + if (!heapType.isSignature()) { + throwError("Invalid reference type for a call_ref: " + type.toString()); + } + auto sig = heapType.getSignature(); + auto num = sig.params.size(); + curr->operands.resize(num); + for (size_t i = 0; i < num; i++) { + curr->operands[num - i - 1] = popNonVoidExpression(); + } + curr->finalize(sig.results); +} + +bool WasmBinaryBuilder::maybeVisitI31New(Expression*& out, uint32_t code) { + if (code != BinaryConsts::I31New) { + return false; + } + auto* curr = allocator.alloc(); + curr->value = popNonVoidExpression(); + curr->finalize(); + out = curr; + return true; +} + +bool WasmBinaryBuilder::maybeVisitI31Get(Expression*& out, uint32_t code) { + I31Get* curr; + switch (code) { + case BinaryConsts::I31GetS: + curr = allocator.alloc(); + curr->signed_ = true; + break; + case BinaryConsts::I31GetU: + curr = allocator.alloc(); + curr->signed_ = false; + break; + default: + return false; + } + curr->i31 = popNonVoidExpression(); + curr->finalize(); + out = curr; + return true; +} + +bool WasmBinaryBuilder::maybeVisitRefTest(Expression*& out, uint32_t code) { + if (code != BinaryConsts::RefTest) { + return false; + } + auto heapType1 = getHeapType(); + auto heapType2 = getHeapType(); + auto* ref = popNonVoidExpression(); + validateHeapTypeUsingChild(ref, heapType1); + auto* rtt = popNonVoidExpression(); + validateHeapTypeUsingChild(rtt, heapType2); + out = Builder(wasm).makeRefTest(ref, rtt); + return true; +} + +bool WasmBinaryBuilder::maybeVisitRefCast(Expression*& out, uint32_t code) { + if (code != BinaryConsts::RefCast) { + return false; + } + auto heapType1 = getHeapType(); + auto heapType2 = getHeapType(); + auto* ref = popNonVoidExpression(); + validateHeapTypeUsingChild(ref, heapType1); + auto* rtt = popNonVoidExpression(); + validateHeapTypeUsingChild(rtt, heapType2); + out = Builder(wasm).makeRefCast(ref, rtt); + return true; +} + +bool WasmBinaryBuilder::maybeVisitBrOnCast(Expression*& out, uint32_t code) { + if (code != BinaryConsts::BrOnCast) { + return false; + } + auto name = getBreakTarget(getU32LEB()).name; + auto heapType1 = getHeapType(); + auto heapType2 = getHeapType(); + auto* ref = popNonVoidExpression(); + validateHeapTypeUsingChild(ref, heapType1); + auto* rtt = popNonVoidExpression(); + validateHeapTypeUsingChild(rtt, heapType2); + out = Builder(wasm).makeBrOnCast(name, heapType2, ref, rtt); + return true; +} + +bool WasmBinaryBuilder::maybeVisitRttCanon(Expression*& out, uint32_t code) { + if (code != BinaryConsts::RttCanon) { + return false; + } + auto heapType = getHeapType(); + out = Builder(wasm).makeRttCanon(heapType); + return true; +} + +bool WasmBinaryBuilder::maybeVisitRttSub(Expression*& out, uint32_t code) { + if (code != BinaryConsts::RttSub) { + return false; + } + // FIXME: the binary format may also have an extra heap type and index that + // are not needed + auto heapType = getHeapType(); + auto* parent = popNonVoidExpression(); + out = Builder(wasm).makeRttSub(heapType, parent); + return true; +} + +bool WasmBinaryBuilder::maybeVisitStructNew(Expression*& out, uint32_t code) { + if (code != BinaryConsts::StructNewWithRtt && + code != BinaryConsts::StructNewDefaultWithRtt) { + return false; + } + auto heapType = getHeapType(); + auto* rtt = popNonVoidExpression(); + validateHeapTypeUsingChild(rtt, heapType); + std::vector operands; + if (code == BinaryConsts::StructNewWithRtt) { + auto numOperands = heapType.getStruct().fields.size(); + operands.resize(numOperands); + for (Index i = 0; i < numOperands; i++) { + operands[numOperands - i - 1] = popNonVoidExpression(); + } + } + out = Builder(wasm).makeStructNew(rtt, operands); + return true; +} + +bool WasmBinaryBuilder::maybeVisitStructGet(Expression*& out, uint32_t code) { + StructGet* curr; + switch (code) { + case BinaryConsts::StructGet: + curr = allocator.alloc(); + break; + case BinaryConsts::StructGetS: + curr = allocator.alloc(); + curr->signed_ = true; + break; + case BinaryConsts::StructGetU: + curr = allocator.alloc(); + curr->signed_ = false; + break; + default: + return false; + } + auto heapType = getHeapType(); + curr->index = getU32LEB(); + curr->ref = popNonVoidExpression(); + validateHeapTypeUsingChild(curr->ref, heapType); + curr->finalize(); + out = curr; + return true; +} + +bool WasmBinaryBuilder::maybeVisitStructSet(Expression*& out, uint32_t code) { + if (code != BinaryConsts::StructSet) { + return false; + } + auto* curr = allocator.alloc(); + auto heapType = getHeapType(); + curr->index = getU32LEB(); + curr->ref = popNonVoidExpression(); + validateHeapTypeUsingChild(curr->ref, heapType); + curr->value = popNonVoidExpression(); + curr->finalize(); + out = curr; + return true; +} + +bool WasmBinaryBuilder::maybeVisitArrayNew(Expression*& out, uint32_t code) { + if (code != BinaryConsts::ArrayNewWithRtt && + code != BinaryConsts::ArrayNewDefaultWithRtt) { + return false; + } + auto heapType = getHeapType(); + auto* rtt = popNonVoidExpression(); + validateHeapTypeUsingChild(rtt, heapType); + auto* size = popNonVoidExpression(); + Expression* init = nullptr; + if (code == BinaryConsts::ArrayNewWithRtt) { + init = popNonVoidExpression(); + } + out = Builder(wasm).makeArrayNew(rtt, size, init); + return true; +} + +bool WasmBinaryBuilder::maybeVisitArrayGet(Expression*& out, uint32_t code) { + bool signed_ = false; + switch (code) { + case BinaryConsts::ArrayGet: + case BinaryConsts::ArrayGetU: + break; + case BinaryConsts::ArrayGetS: + signed_ = true; + break; + default: + return false; + } + auto heapType = getHeapType(); + auto* ref = popNonVoidExpression(); + validateHeapTypeUsingChild(ref, heapType); + auto* index = popNonVoidExpression(); + out = Builder(wasm).makeArrayGet(ref, index, signed_); + return true; +} + +bool WasmBinaryBuilder::maybeVisitArraySet(Expression*& out, uint32_t code) { + if (code != BinaryConsts::ArraySet) { + return false; + } + auto heapType = getHeapType(); + auto* ref = popNonVoidExpression(); + validateHeapTypeUsingChild(ref, heapType); + auto* index = popNonVoidExpression(); + auto* value = popNonVoidExpression(); + out = Builder(wasm).makeArraySet(ref, index, value); + return true; +} + +bool WasmBinaryBuilder::maybeVisitArrayLen(Expression*& out, uint32_t code) { + if (code != BinaryConsts::ArrayLen) { + return false; + } + auto heapType = getHeapType(); + auto* ref = popNonVoidExpression(); + validateHeapTypeUsingChild(ref, heapType); + out = Builder(wasm).makeArrayLen(ref); + return true; +} + void WasmBinaryBuilder::throwError(std::string text) { throw ParseException(text, 0, pos); } +void WasmBinaryBuilder::validateHeapTypeUsingChild(Expression* child, + HeapType heapType) { + if (child->type == Type::unreachable) { + return; + } + if ((!child->type.isRef() && !child->type.isRtt()) || + child->type.getHeapType() != heapType) { + throwError("bad heap type: expected " + heapType.toString() + + " but found " + child->type.toString()); + } +} + } // namespace wasm diff -Nru binaryen-91/src/wasm/wasm.cpp binaryen-99/src/wasm/wasm.cpp --- binaryen-91/src/wasm/wasm.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm/wasm.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -24,6 +24,7 @@ Name WASM("wasm"); Name RETURN_FLOW("*return:)*"); +Name NONCONSTANT_FLOW("*nonconstant:)*"); namespace BinaryConsts { namespace UserSections { @@ -42,10 +43,13 @@ const char* SIMD128Feature = "simd128"; const char* TailCallFeature = "tail-call"; const char* ReferenceTypesFeature = "reference-types"; +const char* MultivalueFeature = "multivalue"; +const char* GCFeature = "gc"; +const char* Memory64Feature = "memory64"; +const char* TypedFunctionReferencesFeature = "typed-function-references"; } // namespace UserSections } // namespace BinaryConsts -Name GROW_WASM_MEMORY("__growWasmMemory"); Name WASM_CALL_CTORS("__wasm_call_ctors"); Name MEMORY_BASE("__memory_base"); Name TABLE_BASE("__table_base"); @@ -55,6 +59,7 @@ Name NEW_SIZE("newSize"); Name MODULE("module"); Name START("start"); +Name GLOBAL("global"); Name FUNC("func"); Name PARAM("param"); Name RESULT("result"); @@ -67,6 +72,8 @@ Name ELEM("elem"); Name LOCAL("local"); Name TYPE("type"); +Name REF("ref"); +Name NULL_("null"); Name CALL("call"); Name CALL_INDIRECT("call_indirect"); Name BLOCK("block"); @@ -91,6 +98,8 @@ // Expressions +void Expression::dump() { std::cout << *this << '\n'; } + const char* getExpressionName(Expression* curr) { switch (curr->_id) { case Expression::Id::InvalidId: @@ -133,22 +142,24 @@ return "drop"; case Expression::Id::ReturnId: return "return"; - case Expression::Id::HostId: - return "host"; + case Expression::Id::MemorySizeId: + return "memory.size"; + case Expression::Id::MemoryGrowId: + return "memory.grow"; case Expression::Id::NopId: return "nop"; case Expression::Id::UnreachableId: return "unreachable"; case Expression::Id::AtomicCmpxchgId: - return "atomic_cmpxchg"; + return "atomic.cmpxchg"; case Expression::Id::AtomicRMWId: - return "atomic_rmw"; + return "atomic.rmw"; case Expression::Id::AtomicWaitId: - return "atomic_wait"; + return "atomic.wait"; case Expression::Id::AtomicNotifyId: - return "atomic_notify"; + return "atomic.notify"; case Expression::Id::AtomicFenceId: - return "atomic_fence"; + return "atomic.fence"; case Expression::Id::SIMDExtractId: return "simd_extract"; case Expression::Id::SIMDReplaceId: @@ -161,16 +172,18 @@ return "simd_shift"; case Expression::Id::SIMDLoadId: return "simd_load"; + case Expression::Id::SIMDLoadStoreLaneId: + return "simd_load_store_lane"; + case Expression::Id::PrefetchId: + return "prefetch"; case Expression::Id::MemoryInitId: - return "memory_init"; + return "memory.init"; case Expression::Id::DataDropId: - return "data_drop"; + return "data.drop"; case Expression::Id::MemoryCopyId: - return "memory_copy"; + return "memory.copy"; case Expression::Id::MemoryFillId: - return "memory_fill"; - case Expression::Id::PushId: - return "push"; + return "memory.fill"; case Expression::Id::PopId: return "pop"; case Expression::Id::RefNullId: @@ -179,6 +192,8 @@ return "ref.is_null"; case Expression::Id::RefFuncId: return "ref.func"; + case Expression::Id::RefEqId: + return "ref.eq"; case Expression::Id::TryId: return "try"; case Expression::Id::ThrowId: @@ -187,6 +202,40 @@ return "rethrow"; case Expression::Id::BrOnExnId: return "br_on_exn"; + case Expression::Id::TupleMakeId: + return "tuple.make"; + case Expression::Id::TupleExtractId: + return "tuple.extract"; + case Expression::Id::I31NewId: + return "i31.new"; + case Expression::Id::I31GetId: + return "i31.get"; + case Expression::Id::CallRefId: + return "call_ref"; + case Expression::Id::RefTestId: + return "ref.test"; + case Expression::Id::RefCastId: + return "ref.cast"; + case Expression::Id::BrOnCastId: + return "br_on_cast"; + case Expression::Id::RttCanonId: + return "rtt.canon"; + case Expression::Id::RttSubId: + return "rtt.sub"; + case Expression::Id::StructNewId: + return "struct.new"; + case Expression::Id::StructGetId: + return "struct.get"; + case Expression::Id::StructSetId: + return "struct.set"; + case Expression::Id::ArrayNewId: + return "array.new"; + case Expression::Id::ArrayGetId: + return "array.get"; + case Expression::Id::ArraySetId: + return "array.set"; + case Expression::Id::ArrayLenId: + return "array.len"; case Expression::Id::NumExpressionIds: WASM_UNREACHABLE("invalid expr id"); } @@ -194,83 +243,32 @@ } Literal getLiteralFromConstExpression(Expression* curr) { - if (auto* c = curr->dynCast()) { - return c->value; - } else if (curr->is()) { - return Literal::makeNullref(); - } else if (auto* r = curr->dynCast()) { - return Literal::makeFuncref(r->func); - } else { - WASM_UNREACHABLE("Not a constant expression"); - } + // TODO: Do we need this function given that Properties::getLiteral + // (currently) does the same? + assert(Properties::isConstantExpression(curr)); + return Properties::getLiteral(curr); } -// core AST type checking - -struct TypeSeeker : public PostWalker { - Expression* target; // look for this one - Name targetName; - std::vector types; - - TypeSeeker(Expression* target, Name targetName) - : target(target), targetName(targetName) { - Expression* temp = target; - walk(temp); - } - - void visitBreak(Break* curr) { - if (curr->name == targetName) { - types.push_back(curr->value ? curr->value->type : Type::none); - } - } - - void visitSwitch(Switch* curr) { - for (auto name : curr->targets) { - if (name == targetName) { - types.push_back(curr->value ? curr->value->type : Type::none); - } - } - if (curr->default_ == targetName) { - types.push_back(curr->value ? curr->value->type : Type::none); - } - } - - void visitBrOnExn(BrOnExn* curr) { - if (curr->name == targetName) { - types.push_back(curr->sent); - } - } - - void visitBlock(Block* curr) { - if (curr == target) { - if (curr->list.size() > 0) { - types.push_back(curr->list.back()->type); - } else { - types.push_back(Type::none); - } - } else if (curr->name == targetName) { - // ignore all breaks til now, they were captured by someone with the same - // name - types.clear(); - } - } - - void visitLoop(Loop* curr) { - if (curr == target) { - types.push_back(curr->body->type); - } else if (curr->name == targetName) { - // ignore all breaks til now, they were captured by someone with the same - // name - types.clear(); +Literals getLiteralsFromConstExpression(Expression* curr) { + // TODO: Do we need this function given that Properties::getLiterals + // (currently) does the same? + if (auto* t = curr->dynCast()) { + Literals values; + for (auto* operand : t->operands) { + values.push_back(getLiteralFromConstExpression(operand)); } + return values; + } else { + return {getLiteralFromConstExpression(curr)}; } -}; +} // a block is unreachable if one of its elements is unreachable, // and there are no branches to it -static void handleUnreachable(Block* block, - bool breakabilityKnown = false, - bool hasBreak = false) { + +static void +handleUnreachable(Block* block, + Block::Breakability breakability = Block::Unknown) { if (block->type == Type::unreachable) { return; // nothing to do } @@ -288,10 +286,12 @@ if (child->type == Type::unreachable) { // there is an unreachable child, so we are unreachable, unless we have a // break - if (!breakabilityKnown) { - hasBreak = BranchUtils::BranchSeeker::has(block, block->name); + if (breakability == Block::Unknown) { + breakability = BranchUtils::BranchSeeker::has(block, block->name) + ? Block::HasBreak + : Block::NoBreak; } - if (!hasBreak) { + if (breakability == Block::NoBreak) { block->type = Type::unreachable; } return; @@ -300,41 +300,35 @@ } void Block::finalize() { + if (list.size() == 0) { + type = Type::none; + return; + } + // The default type is what is at the end. Next we need to see if breaks and/ + // or unreachabitily change that. + type = list.back()->type; if (!name.is()) { - if (list.size() > 0) { - // nothing branches here, so this is easy - // normally the type is the type of the final child - type = list.back()->type; - // and even if we have an unreachable child somewhere, - // we still mark ourselves as having that type, - // (block (result i32) - // (return) - // (i32.const 10) - // ) - if (type.isConcrete()) { - return; - } - // if we are unreachable, we are done - if (type == Type::unreachable) { - return; - } - // we may still be unreachable if we have an unreachable - // child - for (auto* child : list) { - if (child->type == Type::unreachable) { - type = Type::unreachable; - return; - } - } + // Nothing branches here, so this is easy. + handleUnreachable(this, NoBreak); + return; + } + + // The default type is according to the value that flows out. + BranchUtils::BranchSeeker seeker(this->name); + Expression* temp = this; + seeker.walk(temp); + if (seeker.found) { + // Take the branch values into account. + if (seeker.valueType != Type::none) { + type = Type::getLeastUpperBound(type, seeker.valueType); } else { + // No value is sent, but as we have a branch we are not unreachable. type = Type::none; } - return; + } else { + // There are no branches, so this block may be unreachable. + handleUnreachable(this, NoBreak); } - - TypeSeeker seeker(this, this->name); - type = Type::mergeTypes(seeker.types); - handleUnreachable(this); } void Block::finalize(Type type_) { @@ -344,10 +338,10 @@ } } -void Block::finalize(Type type_, bool hasBreak) { +void Block::finalize(Type type_, Breakability breakability) { type = type_; if (type == Type::none && list.size() > 0) { - handleUnreachable(this, true, hasBreak); + handleUnreachable(this, breakability); } } @@ -401,13 +395,16 @@ void Switch::finalize() { type = Type::unreachable; } -template void handleUnreachableOperands(T* curr) { +// Sets the type to unreachable if there is an unreachable operand. Returns true +// if so. +template bool handleUnreachableOperands(T* curr) { for (auto* child : curr->operands) { if (child->type == Type::unreachable) { curr->type = Type::unreachable; - break; + return true; } } + return false; } void Call::finalize() { @@ -498,6 +495,8 @@ } } +void AtomicFence::finalize() { type = Type::none; } + void SIMDExtract::finalize() { assert(vec); switch (op) { @@ -602,6 +601,7 @@ case LoadSplatVec16x8: return 2; case LoadSplatVec32x4: + case Load32Zero: return 4; case LoadSplatVec64x2: case LoadExtSVec8x8ToVecI16x8: @@ -610,11 +610,58 @@ case LoadExtUVec16x4ToVecI32x4: case LoadExtSVec32x2ToVecI64x2: case LoadExtUVec32x2ToVecI64x2: + case Load64Zero: return 8; } WASM_UNREACHABLE("unexpected op"); } +void SIMDLoadStoreLane::finalize() { + assert(ptr && vec); + type = isLoad() ? Type::v128 : Type::none; + if (ptr->type == Type::unreachable || vec->type == Type::unreachable) { + type = Type::unreachable; + } +} + +Index SIMDLoadStoreLane::getMemBytes() { + switch (op) { + case LoadLaneVec8x16: + case StoreLaneVec8x16: + return 1; + case LoadLaneVec16x8: + case StoreLaneVec16x8: + return 2; + case LoadLaneVec32x4: + case StoreLaneVec32x4: + return 4; + case LoadLaneVec64x2: + case StoreLaneVec64x2: + return 8; + } + WASM_UNREACHABLE("unexpected op"); +} + +bool SIMDLoadStoreLane::isStore() { + switch (op) { + case StoreLaneVec8x16: + case StoreLaneVec16x8: + case StoreLaneVec32x4: + case StoreLaneVec64x2: + return true; + case LoadLaneVec16x8: + case LoadLaneVec32x4: + case LoadLaneVec64x2: + case LoadLaneVec8x16: + return false; + } + WASM_UNREACHABLE("unexpected op"); +} + +void Prefetch::finalize() { + type = ptr->type == Type::unreachable ? Type::unreachable : Type::none; +} + Const* Const::set(Literal value_) { value = value_; type = value.type; @@ -720,6 +767,10 @@ case SplatVecF32x4: case SplatVecF64x2: case NotVec128: + case AbsVecI8x16: + case AbsVecI16x8: + case AbsVecI32x4: + case PopcntVecI8x16: case NegVecI8x16: case NegVecI16x8: case NegVecI32x4: @@ -727,9 +778,21 @@ case AbsVecF32x4: case NegVecF32x4: case SqrtVecF32x4: + case CeilVecF32x4: + case FloorVecF32x4: + case TruncVecF32x4: + case NearestVecF32x4: case AbsVecF64x2: case NegVecF64x2: case SqrtVecF64x2: + case CeilVecF64x2: + case FloorVecF64x2: + case TruncVecF64x2: + case NearestVecF64x2: + case ExtAddPairwiseSVecI8x16ToI16x8: + case ExtAddPairwiseUVecI8x16ToI16x8: + case ExtAddPairwiseSVecI16x8ToI32x4: + case ExtAddPairwiseUVecI16x8ToI32x4: case TruncSatSVecF32x4ToVecI32x4: case TruncSatUVecF32x4ToVecI32x4: case TruncSatSVecF64x2ToVecI64x2: @@ -746,16 +809,22 @@ case WidenHighSVecI16x8ToVecI32x4: case WidenLowUVecI16x8ToVecI32x4: case WidenHighUVecI16x8ToVecI32x4: + case WidenLowSVecI32x4ToVecI64x2: + case WidenHighSVecI32x4ToVecI64x2: + case WidenLowUVecI32x4ToVecI64x2: + case WidenHighUVecI32x4ToVecI64x2: type = Type::v128; break; case AnyTrueVecI8x16: - case AllTrueVecI8x16: case AnyTrueVecI16x8: - case AllTrueVecI16x8: case AnyTrueVecI32x4: + case AllTrueVecI8x16: + case AllTrueVecI16x8: case AllTrueVecI32x4: - case AnyTrueVecI64x2: - case AllTrueVecI64x2: + case BitmaskVecI8x16: + case BitmaskVecI16x8: + case BitmaskVecI32x4: + case BitmaskVecI64x2: type = Type::i32; break; @@ -766,12 +835,6 @@ bool Binary::isRelational() { switch (op) { - case EqFloat64: - case NeFloat64: - case LtFloat64: - case LeFloat64: - case GtFloat64: - case GeFloat64: case EqInt32: case NeInt32: case LtSInt32: @@ -798,6 +861,12 @@ case LeFloat32: case GtFloat32: case GeFloat32: + case EqFloat64: + case NeFloat64: + case LtFloat64: + case LeFloat64: + case GtFloat64: + case GeFloat64: return true; default: return false; @@ -835,25 +904,26 @@ } } -void Host::finalize() { - switch (op) { - case MemorySize: { - type = Type::i32; - break; - } - case MemoryGrow: { - // if the single operand is not reachable, so are we - if (operands[0]->type == Type::unreachable) { - type = Type::unreachable; - } else { - type = Type::i32; - } - break; - } +void MemorySize::make64() { type = ptrType = Type::i64; } +void MemorySize::finalize() { type = ptrType; } + +void MemoryGrow::make64() { type = ptrType = Type::i64; } +void MemoryGrow::finalize() { + if (delta->type == Type::unreachable) { + type = Type::unreachable; + } else { + type = ptrType; } } -void RefNull::finalize() { type = Type::nullref; } +void RefNull::finalize(HeapType heapType) { type = Type(heapType, Nullable); } + +void RefNull::finalize(Type type_) { + type = type_; +} + +void RefNull::finalize() { +} void RefIsNull::finalize() { if (value->type == Type::unreachable) { @@ -863,7 +933,20 @@ type = Type::i32; } -void RefFunc::finalize() { type = Type::funcref; } +void RefFunc::finalize() { + // No-op. We assume that the full proper typed function type has been applied + // previously. +} + +void RefFunc::finalize(Type type_) { type = type_; } + +void RefEq::finalize() { + if (left->type == Type::unreachable || right->type == Type::unreachable) { + type = Type::unreachable; + } else { + type = Type::i32; + } +} void Try::finalize() { type = Type::getLeastUpperBound(body->type, catchBody->type); @@ -889,14 +972,174 @@ } } -void Push::finalize() { +void TupleMake::finalize() { + std::vector types; + for (auto* op : operands) { + if (op->type == Type::unreachable) { + type = Type::unreachable; + return; + } + types.push_back(op->type); + } + type = Type(types); +} + +void TupleExtract::finalize() { + if (tuple->type == Type::unreachable) { + type = Type::unreachable; + } else { + type = tuple->type[index]; + } +} + +void I31New::finalize() { if (value->type == Type::unreachable) { type = Type::unreachable; } else { + type = Type::i31ref; + } +} + +void I31Get::finalize() { + if (i31->type == Type::unreachable) { + type = Type::unreachable; + } else { + type = Type::i32; + } +} + +void CallRef::finalize() { + handleUnreachableOperands(this); + if (isReturn) { + type = Type::unreachable; + } + if (target->type == Type::unreachable) { + type = Type::unreachable; + } +} + +void CallRef::finalize(Type type_) { + type = type_; + finalize(); +} + +void RefTest::finalize() { + if (ref->type == Type::unreachable || rtt->type == Type::unreachable) { + type = Type::unreachable; + } else { + type = Type::i32; + } +} + +// Helper to get the cast type for a cast instruction. They all look at the rtt +// operand's type. +template static Type doGetCastType(T* curr) { + if (curr->rtt->type == Type::unreachable) { + // We don't have the RTT type, so just return unreachable. The type in this + // case should not matter in practice, but it may be seen while debugging. + return Type::unreachable; + } + // TODO: make non-nullable when we support that + return Type(curr->rtt->type.getHeapType(), Nullable); +} + +Type RefTest::getCastType() { return doGetCastType(this); } + +void RefCast::finalize() { + if (ref->type == Type::unreachable || rtt->type == Type::unreachable) { + type = Type::unreachable; + } else { + type = getCastType(); + } +} + +Type RefCast::getCastType() { return doGetCastType(this); } + +void BrOnCast::finalize() { + if (ref->type == Type::unreachable || rtt->type == Type::unreachable) { + type = Type::unreachable; + } else { + type = ref->type; + } +} + +Type BrOnCast::getCastType() { return castType; } + +void RttCanon::finalize() { + // Nothing to do - the type must have been set already during construction. +} + +void RttSub::finalize() { + if (parent->type == Type::unreachable) { + type = Type::unreachable; + } + // Else nothing to do - the type must have been set already during + // construction. +} + +void StructNew::finalize() { + if (rtt->type == Type::unreachable) { + type = Type::unreachable; + return; + } + if (handleUnreachableOperands(this)) { + return; + } + // TODO: make non-nullable when we support that + type = Type(rtt->type.getHeapType(), Nullable); +} + +void StructGet::finalize() { + if (ref->type == Type::unreachable) { + type = Type::unreachable; + } else { + type = ref->type.getHeapType().getStruct().fields[index].type; + } +} + +void StructSet::finalize() { + if (ref->type == Type::unreachable) { + type = Type::unreachable; + } else { type = Type::none; } } +void ArrayNew::finalize() { + if (rtt->type == Type::unreachable || size->type == Type::unreachable || + (init && init->type == Type::unreachable)) { + type = Type::unreachable; + return; + } + // TODO: make non-nullable when we support that + type = Type(rtt->type.getHeapType(), Nullable); +} + +void ArrayGet::finalize() { + if (ref->type == Type::unreachable || index->type == Type::unreachable) { + type = Type::unreachable; + } else { + type = ref->type.getHeapType().getArray().element.type; + } +} + +void ArraySet::finalize() { + if (ref->type == Type::unreachable || index->type == Type::unreachable || + value->type == Type::unreachable) { + type = Type::unreachable; + } else { + type = Type::none; + } +} + +void ArrayLen::finalize() { + if (ref->type == Type::unreachable) { + type = Type::unreachable; + } else { + type = Type::i32; + } +} + size_t Function::getNumParams() { return sig.params.size(); } size_t Function::getNumVars() { return vars.size(); } @@ -921,6 +1164,11 @@ Name Function::getLocalName(Index index) { return localNames.at(index); } +void Function::setLocalName(Index index, Name name) { + assert(index < getNumLocals()); + localNames[index] = name; +} + Name Function::getLocalNameOrDefault(Index index) { auto nameIt = localNames.find(index); if (nameIt != localNames.end()) { @@ -949,11 +1197,11 @@ Index Function::getVarIndexBase() { return sig.params.size(); } Type Function::getLocalType(Index index) { - const std::vector& params = sig.params.expand(); - if (index < params.size()) { - return params[index]; + auto numParams = sig.params.size(); + if (index < numParams) { + return sig.params[index]; } else if (isVar(index)) { - return vars[index - params.size()]; + return vars[index - numParams]; } else { WASM_UNREACHABLE("invalid local index"); } @@ -1067,20 +1315,20 @@ return addModuleElement(events, eventsMap, curr, "addEvent"); } -Export* Module::addExport(std::unique_ptr curr) { +Export* Module::addExport(std::unique_ptr&& curr) { return addModuleElement(exports, exportsMap, std::move(curr), "addExport"); } -Function* Module::addFunction(std::unique_ptr curr) { +Function* Module::addFunction(std::unique_ptr&& curr) { return addModuleElement( functions, functionsMap, std::move(curr), "addFunction"); } -Global* Module::addGlobal(std::unique_ptr curr) { +Global* Module::addGlobal(std::unique_ptr&& curr) { return addModuleElement(globals, globalsMap, std::move(curr), "addGlobal"); } -Event* Module::addEvent(std::unique_ptr curr) { +Event* Module::addEvent(std::unique_ptr&& curr) { return addModuleElement(events, eventsMap, std::move(curr), "addEvent"); } diff -Nru binaryen-91/src/wasm/wasm-debug.cpp binaryen-99/src/wasm/wasm-debug.cpp --- binaryen-91/src/wasm/wasm-debug.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm/wasm-debug.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -56,7 +56,7 @@ BinaryenDWARFInfo(const Module& wasm) { // Get debug sections from the wasm. for (auto& section : wasm.userSections) { - if (Name(section.name).startsWith(".debug_")) { + if (Name(section.name).startsWith(".debug_") && section.data.data()) { // TODO: efficiency sections[section.name.substr(1)] = llvm::MemoryBuffer::getMemBufferCopy( llvm::StringRef(section.data.data(), section.data.size())); @@ -123,11 +123,17 @@ bool basicBlock = false; bool prologueEnd = false; bool epilogueBegin = false; - bool endSequence = false; + // Each instruction is part of a sequence, all of which get the same ID. The + // order within a sequence may change if binaryen reorders things, which means + // that we can't track the end_sequence location and assume it is at the end - + // we must track sequences and then emit an end for each one. + // -1 is an invalid marker value (note that this assumes we can fit all ids + // into just under 32 bits). + uint32_t sequenceId = -1; LineState(const LineState& other) = default; - LineState(const llvm::DWARFYAML::LineTable& table) - : isStmt(table.DefaultIsStmt) {} + LineState(const llvm::DWARFYAML::LineTable& table, uint32_t sequenceId) + : isStmt(table.DefaultIsStmt), sequenceId(sequenceId) {} LineState& operator=(const LineState& other) = default; @@ -143,7 +149,6 @@ break; } case llvm::dwarf::DW_LNE_end_sequence: { - endSequence = true; return true; } case llvm::dwarf::DW_LNE_set_discriminator: { @@ -250,7 +255,8 @@ // table entry (that will be emitted in the updated DWARF debug line section). void emitDiff(const LineState& old, std::vector& newOpcodes, - const llvm::DWARFYAML::LineTable& table) { + const llvm::DWARFYAML::LineTable& table, + bool endSequence) const { bool useSpecial = false; if (addr != old.addr || line != old.line) { // Try to use a special opcode TODO @@ -298,8 +304,7 @@ assert(basicBlock); newOpcodes.push_back(makeItem(llvm::dwarf::DW_LNS_set_basic_block)); } - if (prologueEnd != old.prologueEnd) { - assert(prologueEnd); + if (prologueEnd) { newOpcodes.push_back(makeItem(llvm::dwarf::DW_LNS_set_prologue_end)); } if (epilogueBegin != old.epilogueBegin) { @@ -313,27 +318,25 @@ if (endSequence) { // len = 1 (subopcode) newOpcodes.push_back(makeItem(llvm::dwarf::DW_LNE_end_sequence, 1)); - // Reset the state. - *this = LineState(table); } else { newOpcodes.push_back(makeItem(llvm::dwarf::DW_LNS_copy)); } } - resetAfterLine(); } // Some flags are automatically reset after each debug line. void resetAfterLine() { prologueEnd = false; } private: - llvm::DWARFYAML::LineTableOpcode makeItem(llvm::dwarf::LineNumberOps opcode) { + llvm::DWARFYAML::LineTableOpcode + makeItem(llvm::dwarf::LineNumberOps opcode) const { llvm::DWARFYAML::LineTableOpcode item = {}; item.Opcode = opcode; return item; } llvm::DWARFYAML::LineTableOpcode - makeItem(llvm::dwarf::LineNumberExtendedOps opcode, uint64_t len) { + makeItem(llvm::dwarf::LineNumberExtendedOps opcode, uint64_t len) const { auto item = makeItem(llvm::dwarf::LineNumberOps(0)); // All the length after the len field itself, including the subopcode // (1 byte). @@ -470,8 +473,18 @@ AddrExprMap oldExprAddrMap; FuncAddrMap oldFuncAddrMap; + // Map offsets of location list entries in the debug_loc section to the index + // of their compile unit. + std::unordered_map locToUnitMap; + // Map start of line tables in the debug_line section to their new locations. - std::map debugLineMap; + std::unordered_map debugLineMap; + + typedef std::pair OldToNew; + + // Map of compile unit index => old and new base offsets (i.e., in the + // original binary and in the new one). + std::unordered_map compileUnitBases; // TODO: for memory efficiency, we may want to do this in a streaming manner, // binary to binary, without YAML IR. @@ -610,15 +623,37 @@ BinaryLocation getNewDebugLineLocation(BinaryLocation old) const { return debugLineMap.at(old); } + + // Given an offset in .debug_loc, get the old and new compile unit bases. + OldToNew getCompileUnitBasesForLoc(size_t offset) const { + auto index = locToUnitMap.at(offset); + auto iter = compileUnitBases.find(index); + if (iter != compileUnitBases.end()) { + return iter->second; + } + return OldToNew{0, 0}; + } }; +// A tombstone value is a value that is placed where something used to exist, +// but no longer does, like a reference to a function that was DCE'd out during +// linking. In theory the value can be any invalid location, and tools will +// basically ignore it. +// Earlier LLVM used to use 0 there, and newer versions use -1 or -2 depending +// on the DWARF section. For now, support them all, but TODO stop supporting 0, +// as there are apparently some possible corner cases where 0 is a valid value. +static bool isTombstone(uint32_t x) { + return x == 0 || x == uint32_t(-1) || x == uint32_t(-2); +} + // Update debug lines, and update the locationUpdater with debug line offset // changes so we can update offsets into the debug line section. static void updateDebugLines(llvm::DWARFYAML::Data& data, LocationUpdater& locationUpdater) { for (auto& table : data.DebugLines) { + uint32_t sequenceId = 0; // Parse the original opcodes and emit new ones. - LineState state(table); + LineState state(table, sequenceId); // All the addresses we need to write out. std::vector newAddrs; std::unordered_map newAddrInfo; @@ -632,11 +667,11 @@ omittingRange = false; } if (state.update(opcode, table)) { - if (state.addr == 0) { + if (isTombstone(state.addr)) { omittingRange = true; } if (omittingRange) { - state = LineState(table); + state = LineState(table, sequenceId); continue; } // An expression may not exist for this line table item, if we optimized @@ -656,8 +691,10 @@ newAddr = locationUpdater.getNewFuncStart(oldAddr); } else if (locationUpdater.hasOldDelimiter(oldAddr)) { newAddr = locationUpdater.getNewDelimiter(oldAddr); + } else if (locationUpdater.hasOldExprEnd(oldAddr)) { + newAddr = locationUpdater.getNewExprEnd(oldAddr); } - if (newAddr) { + if (newAddr && state.needToEmit()) { // LLVM sometimes emits the same address more than once. We should // probably investigate that. if (newAddrInfo.count(newAddr)) { @@ -673,7 +710,11 @@ } if (opcode.Opcode == 0 && opcode.SubOpcode == llvm::dwarf::DW_LNE_end_sequence) { - state = LineState(table); + sequenceId++; + // We assume the number of sequences can fit in 32 bits, and -1 is + // an invalid value. + assert(sequenceId != uint32_t(-1)); + state = LineState(table, sequenceId); } } } @@ -683,15 +724,24 @@ // Emit a new line table. { std::vector newOpcodes; - LineState state(table); - for (BinaryLocation addr : newAddrs) { - LineState oldState(state); - state = newAddrInfo.at(addr); - if (state.needToEmit()) { - state.emitDiff(oldState, newOpcodes, table); - } else { - state = oldState; + for (size_t i = 0; i < newAddrs.size(); i++) { + LineState state = newAddrInfo.at(newAddrs[i]); + assert(state.needToEmit()); + LineState lastState(table, -1); + if (i != 0) { + lastState = newAddrInfo.at(newAddrs[i - 1]); + // If the last line is in another sequence, clear the old state, as + // there is nothing to diff to. + if (lastState.sequenceId != state.sequenceId) { + lastState = LineState(table, -1); + } } + // This line ends a sequence if there is no next line after it, or if + // the next line is in a different sequence. + bool endSequence = + i + 1 == newAddrs.size() || + newAddrInfo.at(newAddrs[i + 1]).sequenceId != state.sequenceId; + state.emitDiff(lastState, newOpcodes, table, endSequence); } table.Opcodes.swap(newOpcodes); } @@ -724,10 +774,14 @@ assert(yamlValue == yamlList.end()); } +// Updates a YAML entry from a DWARF DIE. Also updates LocationUpdater +// associating each .debug_loc entry with the base address of its corresponding +// compilation unit. static void updateDIE(const llvm::DWARFDebugInfoEntry& DIE, llvm::DWARFYAML::Entry& yamlEntry, const llvm::DWARFAbbreviationDeclaration* abbrevDecl, - const LocationUpdater& locationUpdater) { + LocationUpdater& locationUpdater, + size_t compileUnitIndex) { auto tag = DIE.getTag(); // Pairs of low/high_pc require some special handling, as the high // may be an offset relative to the low. First, process everything but @@ -746,9 +800,14 @@ tag == llvm::dwarf::DW_TAG_inlined_subroutine || tag == llvm::dwarf::DW_TAG_lexical_block || tag == llvm::dwarf::DW_TAG_label) { - newValue = locationUpdater.getNewExprStart(oldValue); - } else if (tag == llvm::dwarf::DW_TAG_compile_unit || - tag == llvm::dwarf::DW_TAG_subprogram) { + newValue = locationUpdater.getNewStart(oldValue); + } else if (tag == llvm::dwarf::DW_TAG_compile_unit) { + newValue = locationUpdater.getNewFuncStart(oldValue); + // Per the DWARF spec, "The base address of a compile unit is + // defined as the value of the DW_AT_low_pc attribute, if present." + locationUpdater.compileUnitBases[compileUnitIndex] = + LocationUpdater::OldToNew{oldValue, newValue}; + } else if (tag == llvm::dwarf::DW_TAG_subprogram) { newValue = locationUpdater.getNewFuncStart(oldValue); } else { Fatal() << "unknown tag with low_pc " @@ -761,6 +820,10 @@ // This is an offset into the debug line section. yamlValue.Value = locationUpdater.getNewDebugLineLocation(yamlValue.Value); + } else if (attr == llvm::dwarf::DW_AT_location && + attrSpec.Form == llvm::dwarf::DW_FORM_sec_offset) { + BinaryLocation locOffset = yamlValue.Value; + locationUpdater.locToUnitMap[locOffset] = compileUnitIndex; } }); // Next, process the high_pcs. @@ -801,14 +864,23 @@ static void updateCompileUnits(const BinaryenDWARFInfo& info, llvm::DWARFYAML::Data& yaml, - const LocationUpdater& locationUpdater) { + LocationUpdater& locationUpdater, + bool is64) { // The context has the high-level information we need, and the YAML is where // we write changes. First, iterate over the compile units. + size_t compileUnitIndex = 0; iterContextAndYAML( info.context->compile_units(), yaml.CompileUnits, [&](const std::unique_ptr& CU, llvm::DWARFYAML::Unit& yamlUnit) { + // Our Memory64Lowering pass may change the "architecture" of the DWARF + // data. AddrSize will cause all DW_AT_low_pc to be written as 32/64-bit. + auto NewAddrSize = is64 ? 8 : 4; + if (NewAddrSize != yamlUnit.AddrSize) { + yamlUnit.AddrSize = NewAddrSize; + yamlUnit.AddrSizeChanged = true; + } // Process the DIEs in each compile unit. iterContextAndYAML( CU->dies(), @@ -820,9 +892,11 @@ auto abbrevDecl = DIE.getAbbreviationDeclarationPtr(); if (abbrevDecl) { // This is relevant; look for things to update. - updateDIE(DIE, yamlEntry, abbrevDecl, locationUpdater); + updateDIE( + DIE, yamlEntry, abbrevDecl, locationUpdater, compileUnitIndex); } }); + compileUnitIndex++; }); } @@ -838,14 +912,14 @@ // If this is an end marker (0, 0), or an invalid range (0, x) or (x, 0) // then just emit it as it is - either to mark the end, or to mark an // invalid entry. - if (oldStart == 0 || oldEnd == 0) { + if (isTombstone(oldStart) || isTombstone(oldEnd)) { newStart = oldStart; newEnd = oldEnd; } else { // This was a valid entry; update it. newStart = locationUpdater.getNewStart(oldStart); newEnd = locationUpdater.getNewEnd(oldEnd); - if (newStart == 0 || newEnd == 0) { + if (isTombstone(newStart) || isTombstone(newEnd)) { // This part of the range no longer has a mapping, so we must skip it. // Don't use (0, 0) as that would be an end marker; emit something // invalid for the debugger to ignore. @@ -867,39 +941,98 @@ // would indicate an end or a base in .debug_loc). static const BinaryLocation IGNOREABLE_LOCATION = 1; +static bool isNewBaseLoc(const llvm::DWARFYAML::Loc& loc) { + return loc.Start == BinaryLocation(-1); +} + +static bool isEndMarkerLoc(const llvm::DWARFYAML::Loc& loc) { + return isTombstone(loc.Start) && isTombstone(loc.End); +} + // Update the .debug_loc section. static void updateLoc(llvm::DWARFYAML::Data& yaml, const LocationUpdater& locationUpdater) { // Similar to ranges, try to update the start and end. Note that here we // can't skip since the location description is a variable number of bytes, // so we mark no longer valid addresses as empty. - // Locations have an optional base. - BinaryLocation base = 0; - for (size_t i = 0; i < yaml.Locs.size(); i++) { - auto& loc = yaml.Locs[i]; + bool atStart = true; + // We need to keep positions in the .debug_loc section identical to before + // (or else we'd need to update their positions too) and so we need to keep + // base entries around (a base entry is added to every entry after it in the + // list). However, we may change the base's value as after moving instructions + // around the old base may not be smaller than all the values relative to it. + BinaryLocation oldBase, newBase; + auto& locs = yaml.Locs; + for (size_t i = 0; i < locs.size(); i++) { + auto& loc = locs[i]; + if (atStart) { + std::tie(oldBase, newBase) = + locationUpdater.getCompileUnitBasesForLoc(loc.CompileUnitOffset); + atStart = false; + } + // By default we copy values over, unless we modify them below. BinaryLocation newStart = loc.Start, newEnd = loc.End; - if (newStart == BinaryLocation(-1)) { + if (isNewBaseLoc(loc)) { // This is a new base. // Note that the base is not the address of an instruction, necessarily - // it's just a number (seems like it could always be an instruction, but // that's not what LLVM emits). - base = newEnd; - } else if (newStart == 0 && newEnd == 0) { - // This is an end marker, this list is done. - base = 0; + // We must look forward at everything relative to this base, so that we + // can emit a new proper base (as mentioned earlier, the original base may + // not be valid if instructions moved to a position before it - they must + // be positive offsets from it). + oldBase = newBase = newEnd; + BinaryLocation smallest = -1; + for (size_t j = i + 1; j < locs.size(); j++) { + auto& futureLoc = locs[j]; + if (isNewBaseLoc(futureLoc) || isEndMarkerLoc(futureLoc)) { + break; + } + auto updatedStart = + locationUpdater.getNewStart(futureLoc.Start + oldBase); + // If we found a valid mapping, this is a relevant value for us. If the + // optimizer removed it, it's a 0, and we can ignore it here - we will + // emit IGNOREABLE_LOCATION for it later anyhow. + if (updatedStart != 0) { + smallest = std::min(smallest, updatedStart); + } + } + // If we found no valid values that will be relativized here, just use 0 + // as the new (never-to-be-used) base, which is less confusing (otherwise + // the value looks like it means something). + if (smallest == BinaryLocation(-1)) { + smallest = 0; + } + newBase = newEnd = smallest; + } else if (isEndMarkerLoc(loc)) { + // This is an end marker, this list is done; reset the base. + atStart = true; } else { // This is a normal entry, try to find what it should be updated to. First // de-relativize it to the base to get the absolute address, then look for // a new address for it. - newStart = locationUpdater.getNewStart(loc.Start + base); - newEnd = locationUpdater.getNewEnd(loc.End + base); - if (newStart == 0 || newEnd == 0) { - // This part of the loc no longer has a mapping, so we must ignore it. + newStart = locationUpdater.getNewStart(loc.Start + oldBase); + newEnd = locationUpdater.getNewEnd(loc.End + oldBase); + if (newStart == 0 || newEnd == 0 || newStart > newEnd) { + // This part of the loc no longer has a mapping, or after the mapping + // it is no longer a proper span, so we must ignore it. newStart = newEnd = IGNOREABLE_LOCATION; } else { - // Finally, relativize it against the base. - newStart -= base; - newEnd -= base; + // We picked a new base that ensures it is smaller than the values we + // will relativize to it. + assert(newStart >= newBase && newEnd >= newBase); + newStart -= newBase; + newEnd -= newBase; + if (newStart == 0 && newEnd == 0) { + // After mapping to the new positions, and after relativizing to the + // base, if we end up with (0, 0) then we must emit something else, as + // that would be interpreted as the end of a list. As it is an empty + // span, the actual value doesn't matter, it just has to be != 0. + // This can happen if the very first span in a compile unit is an + // empty span, in which case relative to the base of the compile unit + // we would have (0, 0). + newStart = newEnd = IGNOREABLE_LOCATION; + } } // The loc start and end markers have been preserved. However, TODO // instructions in the middle may have moved around, making the loc no @@ -925,7 +1058,7 @@ updateDebugLines(data, locationUpdater); - updateCompileUnits(info, data, locationUpdater); + updateCompileUnits(info, data, locationUpdater, wasm.memory.is64()); updateRanges(data, locationUpdater); diff -Nru binaryen-91/src/wasm/wasm-emscripten.cpp binaryen-99/src/wasm/wasm-emscripten.cpp --- binaryen-91/src/wasm/wasm-emscripten.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm/wasm-emscripten.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -23,6 +23,7 @@ #include "ir/import-utils.h" #include "ir/literal-utils.h" #include "ir/module-utils.h" +#include "ir/table-utils.h" #include "shared-constants.h" #include "support/debug.h" #include "wasm-builder.h" @@ -36,15 +37,7 @@ cashew::IString EM_ASM_PREFIX("emscripten_asm_const"); cashew::IString EM_JS_PREFIX("__em_js__"); -static Name STACK_SAVE("stackSave"); -static Name STACK_RESTORE("stackRestore"); -static Name STACK_ALLOC("stackAlloc"); static Name STACK_INIT("stack$init"); -static Name STACK_LIMIT("__stack_limit"); -static Name SET_STACK_LIMIT("__set_stack_limit"); -static Name POST_INSTANTIATE("__post_instantiate"); -static Name ASSIGN_GOT_ENTIRES("__assign_got_enties"); -static Name STACK_OVERFLOW_IMPORT("__handle_stack_overflow"); void addExportedFunction(Module& wasm, Function* function) { wasm.addFunction(function); @@ -64,7 +57,7 @@ return false; } -Global* EmscriptenGlueGenerator::getStackPointerGlobal() { +Global* getStackPointerGlobal(Module& wasm) { // Assumption: The stack pointer is either imported as __stack_pointer or // its the first non-imported and non-exported global. // TODO(sbc): Find a better way to discover the stack pointer. Perhaps the @@ -81,502 +74,6 @@ return nullptr; } -Expression* EmscriptenGlueGenerator::generateLoadStackPointer() { - if (!useStackPointerGlobal) { - return builder.makeLoad( - /* bytes =*/4, - /* signed =*/false, - /* offset =*/stackPointerOffset, - /* align =*/4, - /* ptr =*/builder.makeConst(Literal(0)), - /* type =*/Type::i32); - } - Global* stackPointer = getStackPointerGlobal(); - if (!stackPointer) { - Fatal() << "stack pointer global not found"; - } - return builder.makeGlobalGet(stackPointer->name, Type::i32); -} - -inline Expression* stackBoundsCheck(Builder& builder, - Function* func, - Expression* value, - Global* stackPointer, - Global* stackLimit, - Name handlerName) { - // Add a local to store the value of the expression. We need the value twice: - // once to check if it has overflowed, and again to assign to store it. - auto newSP = Builder::addVar(func, stackPointer->type); - // If we imported a handler, call it. That can show a nice error in JS. - // Otherwise, just trap. - Expression* handler; - if (handlerName.is()) { - handler = builder.makeCall(handlerName, {}, Type::none); - } else { - handler = builder.makeUnreachable(); - } - // (if (i32.lt_u (local.tee $newSP (...value...)) (global.get $__stack_limit)) - auto check = - builder.makeIf(builder.makeBinary( - BinaryOp::LtUInt32, - builder.makeLocalTee(newSP, value, stackPointer->type), - builder.makeGlobalGet(stackLimit->name, stackLimit->type)), - handler); - // (global.set $__stack_pointer (local.get $newSP)) - auto newSet = builder.makeGlobalSet( - stackPointer->name, builder.makeLocalGet(newSP, stackPointer->type)); - return builder.blockify(check, newSet); -} - -Expression* -EmscriptenGlueGenerator::generateStoreStackPointer(Function* func, - Expression* value) { - BYN_TRACE("generateStoreStackPointer\n"); - if (!useStackPointerGlobal) { - return builder.makeStore( - /* bytes =*/4, - /* offset =*/stackPointerOffset, - /* align =*/4, - /* ptr =*/builder.makeConst(Literal(0)), - /* value =*/value, - /* type =*/Type::i32); - } - Global* stackPointer = getStackPointerGlobal(); - if (!stackPointer) { - Fatal() << "stack pointer global not found"; - } - if (auto* stackLimit = wasm.getGlobalOrNull(STACK_LIMIT)) { - return stackBoundsCheck(builder, - func, - value, - stackPointer, - stackLimit, - importStackOverflowHandler()); - } - return builder.makeGlobalSet(stackPointer->name, value); -} - -void EmscriptenGlueGenerator::generateStackSaveFunction() { - BYN_TRACE("generateStackSaveFunction\n"); - std::vector params{}; - Function* function = - builder.makeFunction(STACK_SAVE, std::move(params), Type::i32, {}); - - function->body = generateLoadStackPointer(); - - addExportedFunction(wasm, function); -} - -void EmscriptenGlueGenerator::generateStackAllocFunction() { - BYN_TRACE("generateStackAllocFunction\n"); - std::vector params{{"0", Type::i32}}; - Function* function = builder.makeFunction( - STACK_ALLOC, std::move(params), Type::i32, {{"1", Type::i32}}); - Expression* loadStack = generateLoadStackPointer(); - LocalGet* getSizeArg = builder.makeLocalGet(0, Type::i32); - Binary* sub = builder.makeBinary(SubInt32, loadStack, getSizeArg); - const static uint32_t bitAlignment = 16; - const static uint32_t bitMask = bitAlignment - 1; - Const* subConst = builder.makeConst(Literal(~bitMask)); - Binary* maskedSub = builder.makeBinary(AndInt32, sub, subConst); - LocalSet* teeStackLocal = builder.makeLocalTee(1, maskedSub, Type::i32); - Expression* storeStack = generateStoreStackPointer(function, teeStackLocal); - - Block* block = builder.makeBlock(); - block->list.push_back(storeStack); - LocalGet* getStackLocal2 = builder.makeLocalGet(1, Type::i32); - block->list.push_back(getStackLocal2); - block->type = Type::i32; - function->body = block; - - addExportedFunction(wasm, function); -} - -void EmscriptenGlueGenerator::generateStackRestoreFunction() { - BYN_TRACE("generateStackRestoreFunction\n"); - std::vector params{{"0", Type::i32}}; - Function* function = - builder.makeFunction(STACK_RESTORE, std::move(params), Type::none, {}); - LocalGet* getArg = builder.makeLocalGet(0, Type::i32); - Expression* store = generateStoreStackPointer(function, getArg); - - function->body = store; - - addExportedFunction(wasm, function); -} - -void EmscriptenGlueGenerator::generateRuntimeFunctions() { - BYN_TRACE("generateRuntimeFunctions\n"); - generateStackSaveFunction(); - generateStackAllocFunction(); - generateStackRestoreFunction(); -} - -static Function* -ensureFunctionImport(Module* module, Name name, Signature sig) { - // Then see if its already imported - ImportInfo info(*module); - if (Function* f = info.getImportedFunction(ENV, name)) { - return f; - } - // Failing that create a new function import. - auto import = new Function; - import->name = name; - import->module = ENV; - import->base = name; - import->sig = sig; - module->addFunction(import); - return import; -} - -// Convert LLVM PIC ABI to emscripten ABI -// -// When generating -fPIC code llvm will generate imports call GOT.mem and -// GOT.func in order to access the addresses of external global data and -// functions. -// -// However emscripten uses a different ABI where function and data addresses -// are available at runtime via special `g$foo` and `fp$bar` function calls. -// -// Here we internalize all such wasm globals and generte code that sets their -// value based on the result of call `g$foo` and `fp$bar` functions at runtime. -Function* EmscriptenGlueGenerator::generateAssignGOTEntriesFunction() { - BYN_TRACE("generateAssignGOTEntriesFunction\n"); - std::vector gotFuncEntries; - std::vector gotMemEntries; - for (auto& g : wasm.globals) { - if (!g->imported()) { - continue; - } - if (g->module == "GOT.func") { - gotFuncEntries.push_back(g.get()); - } else if (g->module == "GOT.mem") { - gotMemEntries.push_back(g.get()); - } else { - continue; - } - // Make this an internal, non-imported, global. - g->module.clear(); - g->init = Builder(wasm).makeConst(Literal(0)); - } - - if (!gotFuncEntries.size() && !gotMemEntries.size()) { - return nullptr; - } - - Function* assignFunc = builder.makeFunction( - ASSIGN_GOT_ENTIRES, std::vector{}, Type::none, {}); - Block* block = builder.makeBlock(); - assignFunc->body = block; - - for (Global* g : gotMemEntries) { - Name getter(std::string("g$") + g->base.c_str()); - ensureFunctionImport(&wasm, getter, Signature(Type::none, Type::i32)); - Expression* call = builder.makeCall(getter, {}, Type::i32); - GlobalSet* globalSet = builder.makeGlobalSet(g->name, call); - block->list.push_back(globalSet); - } - - for (Global* g : gotFuncEntries) { - Function* f = nullptr; - // The function has to exist either as export or an import. - // Note that we don't search for the function by name since its internal - // name may be different. - auto* ex = wasm.getExportOrNull(g->base); - if (ex) { - assert(ex->kind == ExternalKind::Function); - f = wasm.getFunction(ex->value); - } else { - ImportInfo info(wasm); - f = info.getImportedFunction(ENV, g->base); - if (!f) { - Fatal() << "GOT.func entry with no import/export: " << g->base; - } - } - - Name getter( - (std::string("fp$") + g->base.c_str() + std::string("$") + getSig(f)) - .c_str()); - ensureFunctionImport(&wasm, getter, Signature(Type::none, Type::i32)); - Expression* call = builder.makeCall(getter, {}, Type::i32); - GlobalSet* globalSet = builder.makeGlobalSet(g->name, call); - block->list.push_back(globalSet); - } - - wasm.addFunction(assignFunc); - return assignFunc; -} - -// For emscripten SIDE_MODULE we generate a single exported function called -// __post_instantiate which calls two functions: -// -// - __assign_got_enties -// - __wasm_call_ctors -// -// The former is function we generate here which calls imported g$XXX functions -// order to assign values to any globals imported from GOT.func or GOT.mem. -// These globals hold address of functions and globals respectively. -// -// The later is the constructor function generaed by lld which performs any -// fixups on the memory section and calls static constructors. -void EmscriptenGlueGenerator::generatePostInstantiateFunction() { - BYN_TRACE("generatePostInstantiateFunction\n"); - Builder builder(wasm); - Function* post_instantiate = builder.makeFunction( - POST_INSTANTIATE, std::vector{}, Type::none, {}); - wasm.addFunction(post_instantiate); - - if (Function* F = generateAssignGOTEntriesFunction()) { - // call __assign_got_enties from post_instantiate - Expression* call = builder.makeCall(F->name, {}, Type::none); - post_instantiate->body = builder.blockify(post_instantiate->body, call); - } - - // The names of standard imports/exports used by lld doesn't quite match that - // expected by emscripten. - // TODO(sbc): Unify these - if (auto* e = wasm.getExportOrNull(WASM_CALL_CTORS)) { - Expression* call = builder.makeCall(e->value, {}, Type::none); - post_instantiate->body = builder.blockify(post_instantiate->body, call); - wasm.removeExport(WASM_CALL_CTORS); - } - - auto* ex = new Export(); - ex->value = post_instantiate->name; - ex->name = POST_INSTANTIATE; - ex->kind = ExternalKind::Function; - wasm.addExport(ex); -} - -Function* EmscriptenGlueGenerator::generateMemoryGrowthFunction() { - Name name(GROW_WASM_MEMORY); - std::vector params{{NEW_SIZE, Type::i32}}; - Function* growFunction = - builder.makeFunction(name, std::move(params), Type::i32, {}); - growFunction->body = - builder.makeHost(MemoryGrow, Name(), {builder.makeLocalGet(0, Type::i32)}); - - addExportedFunction(wasm, growFunction); - - return growFunction; -} - -inline void exportFunction(Module& wasm, Name name, bool must_export) { - if (!wasm.getFunctionOrNull(name)) { - assert(!must_export); - return; - } - if (wasm.getExportOrNull(name)) { - return; // Already exported - } - auto exp = new Export; - exp->name = exp->value = name; - exp->kind = ExternalKind::Function; - wasm.addExport(exp); -} - -void EmscriptenGlueGenerator::generateDynCallThunk(Signature sig) { - if (!sigs.insert(sig).second) { - return; // sig is already in the set - } - Name name = std::string("dynCall_") + getSig(sig.results, sig.params); - if (wasm.getFunctionOrNull(name) || wasm.getExportOrNull(name)) { - return; // module already contains this dyncall - } - std::vector params; - params.emplace_back("fptr", Type::i32); // function pointer param - int p = 0; - const std::vector& paramTypes = sig.params.expand(); - for (const auto& ty : paramTypes) { - params.emplace_back(std::to_string(p++), ty); - } - Function* f = builder.makeFunction(name, std::move(params), sig.results, {}); - Expression* fptr = builder.makeLocalGet(0, Type::i32); - std::vector args; - for (unsigned i = 0; i < paramTypes.size(); ++i) { - args.push_back(builder.makeLocalGet(i + 1, paramTypes[i])); - } - Expression* call = builder.makeCallIndirect(fptr, args, sig); - f->body = call; - - wasm.addFunction(f); - exportFunction(wasm, f->name, true); -} - -void EmscriptenGlueGenerator::generateDynCallThunks() { - Builder builder(wasm); - std::vector tableSegmentData; - if (wasm.table.segments.size() > 0) { - tableSegmentData = wasm.table.segments[0].data; - } - for (const auto& indirectFunc : tableSegmentData) { - generateDynCallThunk(wasm.getFunction(indirectFunc)->sig); - } -} - -struct RemoveStackPointer : public PostWalker { - RemoveStackPointer(Global* stackPointer) : stackPointer(stackPointer) {} - - void visitGlobalGet(GlobalGet* curr) { - if (getModule()->getGlobalOrNull(curr->name) == stackPointer) { - needStackSave = true; - if (!builder) { - builder = make_unique(*getModule()); - } - replaceCurrent(builder->makeCall(STACK_SAVE, {}, Type::i32)); - } - } - - void visitGlobalSet(GlobalSet* curr) { - if (getModule()->getGlobalOrNull(curr->name) == stackPointer) { - needStackRestore = true; - if (!builder) { - builder = make_unique(*getModule()); - } - replaceCurrent( - builder->makeCall(STACK_RESTORE, {curr->value}, Type::none)); - } - } - - bool needStackSave = false; - bool needStackRestore = false; - -private: - std::unique_ptr builder; - Global* stackPointer; -}; - -// lld can sometimes produce a build with an imported mutable __stack_pointer -// (i.e. when linking with -fpie). This method internalizes the -// __stack_pointer and initializes it from an immutable global instead. -// For -shared builds we instead call replaceStackPointerGlobal. -void EmscriptenGlueGenerator::internalizeStackPointerGlobal() { - Global* stackPointer = getStackPointerGlobal(); - if (!stackPointer || !stackPointer->imported() || !stackPointer->mutable_) { - return; - } - - Name internalName = stackPointer->name; - Name externalName = internalName.c_str() + std::string("_import"); - - // Rename the imported global, and make it immutable - stackPointer->name = externalName; - stackPointer->mutable_ = false; - wasm.updateMaps(); - - // Create a new global with the old name that is not imported. - Builder builder(wasm); - auto* init = builder.makeGlobalGet(externalName, stackPointer->type); - auto* sp = builder.makeGlobal( - internalName, stackPointer->type, init, Builder::Mutable); - wasm.addGlobal(sp); -} - -void EmscriptenGlueGenerator::replaceStackPointerGlobal() { - Global* stackPointer = getStackPointerGlobal(); - if (!stackPointer) { - return; - } - - // Replace all uses of stack pointer global - RemoveStackPointer walker(stackPointer); - walker.walkModule(&wasm); - if (walker.needStackSave) { - ensureFunctionImport(&wasm, STACK_SAVE, Signature(Type::none, Type::i32)); - } - if (walker.needStackRestore) { - ensureFunctionImport( - &wasm, STACK_RESTORE, Signature(Type::i32, Type::none)); - } - - // Finally remove the stack pointer global itself. This avoids importing - // a mutable global. - wasm.removeGlobal(stackPointer->name); -} - -struct StackLimitEnforcer : public WalkerPass> { - StackLimitEnforcer(Global* stackPointer, - Global* stackLimit, - Builder& builder, - Name handler) - : stackPointer(stackPointer), stackLimit(stackLimit), builder(builder), - handler(handler) {} - - bool isFunctionParallel() override { return true; } - - Pass* create() override { - return new StackLimitEnforcer(stackPointer, stackLimit, builder, handler); - } - - void visitGlobalSet(GlobalSet* curr) { - if (getModule()->getGlobalOrNull(curr->name) == stackPointer) { - replaceCurrent(stackBoundsCheck(builder, - getFunction(), - curr->value, - stackPointer, - stackLimit, - handler)); - } - } - -private: - Global* stackPointer; - Global* stackLimit; - Builder& builder; - Name handler; -}; - -void EmscriptenGlueGenerator::enforceStackLimit() { - Global* stackPointer = getStackPointerGlobal(); - if (!stackPointer) { - return; - } - - auto* stackLimit = builder.makeGlobal(STACK_LIMIT, - stackPointer->type, - builder.makeConst(Literal(0)), - Builder::Mutable); - wasm.addGlobal(stackLimit); - - Name handler = importStackOverflowHandler(); - StackLimitEnforcer walker(stackPointer, stackLimit, builder, handler); - PassRunner runner(&wasm); - walker.run(&runner, &wasm); - - generateSetStackLimitFunction(); -} - -void EmscriptenGlueGenerator::generateSetStackLimitFunction() { - Function* function = - builder.makeFunction(SET_STACK_LIMIT, Signature(Type::i32, Type::none), {}); - LocalGet* getArg = builder.makeLocalGet(0, Type::i32); - Expression* store = builder.makeGlobalSet(STACK_LIMIT, getArg); - function->body = store; - addExportedFunction(wasm, function); -} - -Name EmscriptenGlueGenerator::importStackOverflowHandler() { - // We can call an import to handle stack overflows normally, but not in - // standalone mode, where we can't import from JS. - if (standalone) { - return Name(); - } - - ImportInfo info(wasm); - - if (auto* existing = info.getImportedFunction(ENV, STACK_OVERFLOW_IMPORT)) { - return existing->name; - } else { - auto* import = new Function; - import->name = STACK_OVERFLOW_IMPORT; - import->module = ENV; - import->base = STACK_OVERFLOW_IMPORT; - import->sig = Signature(Type::none, Type::none); - wasm.addFunction(import); - return STACK_OVERFLOW_IMPORT; - } -} - const Address UNKNOWN_OFFSET(uint32_t(-1)); std::vector
getSegmentOffsets(Module& wasm) { @@ -588,9 +85,19 @@ OffsetSearcher(std::unordered_map& offsets) : offsets(offsets) {} void visitMemoryInit(MemoryInit* curr) { + // The desitination of the memory.init is either a constant + // or the result of an addition with __memory_base in the + // case of PIC code. auto* dest = curr->dest->dynCast(); if (!dest) { - return; + auto* add = curr->dest->dynCast(); + if (!add) { + return; + } + dest = add->left->dynCast(); + if (!dest) { + return; + } } auto it = offsets.find(curr->segment); if (it != offsets.end()) { @@ -670,12 +177,10 @@ std::string codeForConstAddr(Module& wasm, std::vector
const& segmentOffsets, - int32_t address) { + int64_t address) { const char* str = stringAtAddr(wasm, segmentOffsets, address); if (!str) { - // If we can't find the segment corresponding with the address, then we - // omitted the segment and the address points to an empty string. - return escape(""); + Fatal() << "unable to find data for ASM/EM_JS const at: " << address; } return escape(str); } @@ -700,6 +205,7 @@ struct AsmConstWalker : public LinearExecutionWalker { Module& wasm; + bool minimizeWasmChanges; std::vector
segmentOffsets; // segment index => address offset struct AsmConst { @@ -714,24 +220,21 @@ // last sets in the current basic block, per index std::map sets; - AsmConstWalker(Module& _wasm) - : wasm(_wasm), segmentOffsets(getSegmentOffsets(wasm)) {} + AsmConstWalker(Module& _wasm, bool minimizeWasmChanges) + : wasm(_wasm), minimizeWasmChanges(minimizeWasmChanges), + segmentOffsets(getSegmentOffsets(wasm)) {} void noteNonLinear(Expression* curr); void visitLocalSet(LocalSet* curr); void visitCall(Call* curr); - void visitTable(Table* curr); void process(); private: - Signature fixupName(Name& name, Signature baseSig, Proxying proxy); - AsmConst& - createAsmConst(uint32_t id, std::string code, Signature sig, Name name); + void createAsmConst(uint64_t id, std::string code, Signature sig, Name name); Signature asmConstSig(Signature baseSig); Name nameForImportWithSig(Signature sig, Proxying proxy); - void queueImport(Name importName, Signature baseSig); void addImports(); Proxying proxyType(Name name); @@ -788,7 +291,7 @@ } if (auto* bin = arg->dynCast()) { - if (bin->op == AddInt32) { + if (bin->op == AddInt32 || bin->op == AddInt64) { // In the dynamic linking case the address of the string constant // is the result of adding its offset to __memory_base. // In this case are only looking for the offset from __memory_base @@ -798,15 +301,23 @@ } } + if (auto* unary = arg->dynCast()) { + if (unary->op == WrapInt64) { + // This cast may be inserted around the string constant in the + // Memory64Lowering pass. + arg = unary->value; + continue; + } + } + Fatal() << "Unexpected arg0 type (" << getExpressionName(arg) << ") in call to: " << importName; } auto* value = arg->cast(); - int32_t address = value->value.geti32(); + int64_t address = value->value.getInteger(); auto code = codeForConstAddr(wasm, segmentOffsets, address); - auto& asmConst = createAsmConst(address, code, sig, importName); - fixupName(curr->target, baseSig, asmConst.proxy); + createAsmConst(address, code, sig, importName); } Proxying AsmConstWalker::proxyType(Name name) { @@ -818,18 +329,6 @@ return Proxying::None; } -void AsmConstWalker::visitTable(Table* curr) { - for (auto& segment : curr->segments) { - for (auto& name : segment.data) { - auto* func = wasm.getFunction(name); - if (func->imported() && func->base.hasSubstring(EM_ASM_PREFIX)) { - auto proxy = proxyType(func->base); - fixupName(name, func->sig, proxy); - } - } - } -} - void AsmConstWalker::process() { // Find and queue necessary imports walkModule(&wasm); @@ -838,55 +337,25 @@ addImports(); } -Signature -AsmConstWalker::fixupName(Name& name, Signature baseSig, Proxying proxy) { - auto sig = asmConstSig(baseSig); - auto importName = nameForImportWithSig(sig, proxy); - name = importName; - - auto pair = std::make_pair(sig, proxy); - if (allSigs.count(pair) == 0) { - allSigs.insert(pair); - queueImport(importName, baseSig); - } - return sig; -} - -AsmConstWalker::AsmConst& AsmConstWalker::createAsmConst(uint32_t id, - std::string code, - Signature sig, - Name name) { +void AsmConstWalker::createAsmConst(uint64_t id, + std::string code, + Signature sig, + Name name) { AsmConst asmConst; asmConst.id = id; asmConst.code = code; asmConst.sigs.insert(sig); asmConst.proxy = proxyType(name); asmConsts.push_back(asmConst); - return asmConsts.back(); } Signature AsmConstWalker::asmConstSig(Signature baseSig) { - std::vector params = baseSig.params.expand(); - assert(params.size() >= 1); + assert(baseSig.params.size() >= 1); // Omit the signature of the "code" parameter, taken as a string, as the // first argument - params.erase(params.begin()); - return Signature(Type(params), baseSig.results); -} - -Name AsmConstWalker::nameForImportWithSig(Signature sig, Proxying proxy) { - std::string fixedTarget = EM_ASM_PREFIX.str + std::string("_") + - proxyingSuffix(proxy) + - getSig(sig.results, sig.params); - return Name(fixedTarget.c_str()); -} - -void AsmConstWalker::queueImport(Name importName, Signature baseSig) { - auto import = new Function; - import->name = import->base = importName; - import->module = ENV; - import->sig = baseSig; - queuedImports.push_back(std::unique_ptr(import)); + return Signature( + Type(std::vector(baseSig.params.begin() + 1, baseSig.params.end())), + baseSig.results); } void AsmConstWalker::addImports() { @@ -895,24 +364,10 @@ } } -AsmConstWalker fixEmAsmConstsAndReturnWalker(Module& wasm) { - // Collect imports to remove - // This would find our generated functions if we ran it later - std::vector toRemove; - for (auto& import : wasm.functions) { - if (import->imported() && import->base.hasSubstring(EM_ASM_PREFIX)) { - toRemove.push_back(import->name); - } - } - - // Walk the module, generate _sig versions of EM_ASM functions - AsmConstWalker walker(wasm); +static AsmConstWalker fixEmAsmConstsAndReturnWalker(Module& wasm, + bool minimizeWasmChanges) { + AsmConstWalker walker(wasm, minimizeWasmChanges); walker.process(); - - // Remove the base functions that we didn't generate - for (auto importName : toRemove) { - wasm.removeFunction(importName); - } return walker; } @@ -942,7 +397,7 @@ Fatal() << "Unexpected generated __em_js__ function body: " << curr->name; } auto* addrConst = consts.list[0]; - int32_t address = addrConst->value.geti32(); + int64_t address = addrConst->value.getInteger(); auto code = codeForConstAddr(wasm, segmentOffsets, address); codeByName[funcName] = code; } @@ -965,142 +420,6 @@ return walker; } -// Fixes function name hacks caused by LLVM exception & setjmp/longjmp -// handling pass for wasm. -// This does two things: -// 1. Change emscripten_longjmp_jmpbuf to emscripten_longjmp. -// In setjmp/longjmp handling pass in wasm backend, what we want to do is -// to change all function calls to longjmp to calls to emscripten_longjmp. -// Because we replace all calls to longjmp to emscripten_longjmp, the -// signature of that function should be the same as longjmp: -// emscripten_longjmp(jmp_buf, int) -// But after calling a function that might longjmp, while we test whether -// a longjmp occurred, we have to load an int address value and call -// emscripten_longjmp again with that address as the first argument. (Refer -// to lib/Target/WebAssembly/WebAssemblyEmscriptenEHSjLj.cpp in LLVM for -// details.) -// In this case we need the signature of emscripten_longjmp to be (int, -// int). So we need two different kinds of emscripten_longjmp signatures in -// LLVM IR. Both signatures will be lowered to (int, int) eventually, but -// in LLVM IR, types are not lowered yet. -// So we declare two functions in LLVM: -// emscripten_longjmp_jmpbuf(jmp_buf, int) -// emscripten_longjmp(int, int) -// And we change the name of emscripten_longjmp_jmpbuf to -// emscripten_longjmp here. -// 2. Converts invoke wrapper names. -// Refer to the comments in fixEmExceptionInvoke below. -struct FixInvokeFunctionNamesWalker - : public PostWalker { - Module& wasm; - std::map importRenames; - std::map functionReplace; - std::set invokeSigs; - ImportInfo imports; - - FixInvokeFunctionNamesWalker(Module& _wasm) : wasm(_wasm), imports(wasm) {} - - // Converts invoke wrapper names generated by LLVM backend to real invoke - // wrapper names that are expected by JavaScript glue code. - // This is required to support wasm exception handling (asm.js style). - // - // LLVM backend lowers - // invoke @func(arg1, arg2) to label %invoke.cont unwind label %lpad - // into - // ... (some code) - // call @invoke_SIG(func, arg1, arg2) - // ... (some code) - // SIG is a mangled string generated based on the LLVM IR-level function - // signature. In LLVM IR, types are not lowered yet, so this mangling scheme - // simply takes LLVM's string representtion of parameter types and concatenate - // them with '_'. For example, the name of an invoke wrapper for function - // void foo(struct mystruct*, int) will be - // "__invoke_void_%struct.mystruct*_int". - // This function converts the names of invoke wrappers based on their lowered - // argument types and a return type. In the example above, the resulting new - // wrapper name becomes "invoke_vii". - Name fixEmExceptionInvoke(const Name& name, Signature sig) { - std::string nameStr = name.c_str(); - if (nameStr.front() == '"' && nameStr.back() == '"') { - nameStr = nameStr.substr(1, nameStr.size() - 2); - } - if (nameStr.find("__invoke_") != 0) { - return name; - } - - const std::vector& params = sig.params.expand(); - std::vector newParams(params.begin() + 1, params.end()); - Signature sigWoOrigFunc = Signature(Type(newParams), sig.results); - invokeSigs.insert(sigWoOrigFunc); - return Name("invoke_" + - getSig(sigWoOrigFunc.results, sigWoOrigFunc.params)); - } - - Name fixEmEHSjLjNames(const Name& name, Signature sig) { - if (name == "emscripten_longjmp_jmpbuf") { - return "emscripten_longjmp"; - } - return fixEmExceptionInvoke(name, sig); - } - - void visitFunction(Function* curr) { - if (!curr->imported()) { - return; - } - - Name newname = fixEmEHSjLjNames(curr->base, curr->sig); - if (newname == curr->base) { - return; - } - - BYN_TRACE("renaming import: " << curr->module << "." << curr->base << " (" - << curr->name << ") -> " << newname << "\n"); - assert(importRenames.count(curr->base) == 0); - importRenames[curr->base] = newname; - // Either rename the import, or replace it with an existing one - Function* existingFunc = imports.getImportedFunction(curr->module, newname); - if (existingFunc) { - BYN_TRACE("replacing with an existing import: " << existingFunc->name - << "\n"); - functionReplace[curr->name] = existingFunc->name; - } else { - BYN_TRACE("renaming the import in place\n"); - curr->base = newname; - } - } - - void visitModule(Module* curr) { - // For each replaced function first remove the function itself then - // rename all uses to the point to the new function. - for (auto& pair : functionReplace) { - BYN_TRACE("removeFunction " << pair.first << "\n"); - wasm.removeFunction(pair.first); - } - // Rename all uses of the removed functions - ModuleUtils::renameFunctions(wasm, functionReplace); - - // For imports that for renamed, update any associated GOT.func imports. - for (auto& pair : importRenames) { - BYN_TRACE("looking for: GOT.func." << pair.first << "\n"); - if (auto g = imports.getImportedGlobal("GOT.func", pair.first)) { - BYN_TRACE("renaming corresponding GOT entry: " << g->base << " -> " - << pair.second << "\n"); - g->base = pair.second; - } - } - } -}; - -void EmscriptenGlueGenerator::fixInvokeFunctionNames() { - BYN_TRACE("fixInvokeFunctionNames\n"); - FixInvokeFunctionNamesWalker walker(wasm); - walker.walkModule(&wasm); - BYN_TRACE("generating dyncall thunks\n"); - for (auto sig : walker.invokeSigs) { - generateDynCallThunk(sig); - } -} - void printSignatures(std::ostream& o, const std::set& c) { o << "["; bool first = true; @@ -1115,8 +434,8 @@ o << "]"; } -std::string EmscriptenGlueGenerator::generateEmscriptenMetadata( - Address staticBump, std::vector const& initializerFunctions) { +std::string +EmscriptenGlueGenerator::generateEmscriptenMetadata(Name initializer) { bool commaFirst; auto nextElement = [&commaFirst]() { if (commaFirst) { @@ -1130,7 +449,8 @@ std::stringstream meta; meta << "{\n"; - AsmConstWalker emAsmWalker = fixEmAsmConstsAndReturnWalker(wasm); + AsmConstWalker emAsmWalker = + fixEmAsmConstsAndReturnWalker(wasm, minimizeWasmChanges); // print commaFirst = true; @@ -1160,16 +480,11 @@ meta << "\n },\n"; } - meta << " \"staticBump\": " << staticBump << ",\n"; meta << " \"tableSize\": " << wasm.table.initial.addr << ",\n"; - if (!initializerFunctions.empty()) { + if (initializer.is()) { meta << " \"initializers\": ["; - commaFirst = true; - for (const auto& func : initializerFunctions) { - meta << nextElement(); - meta << "\"" << func.c_str() << "\""; - } + meta << "\n \"" << initializer.c_str() << "\""; meta << "\n ],\n"; } @@ -1186,7 +501,6 @@ commaFirst = true; ModuleUtils::iterImportedFunctions(wasm, [&](Function* import) { if (emJsWalker.codeByName.count(import->base.str) == 0 && - !import->base.startsWith(EM_ASM_PREFIX.str) && !import->base.startsWith("invoke_")) { if (declares.insert(import->base.str).second) { meta << nextElement() << '"' << import->base.str << '"'; @@ -1205,15 +519,6 @@ meta << "\n ],\n"; if (!wasm.exports.empty()) { - meta << " \"implementedFunctions\": ["; - commaFirst = true; - for (const auto& ex : wasm.exports) { - if (ex->kind == ExternalKind::Function) { - meta << nextElement() << "\"_" << ex->name.str << '"'; - } - } - meta << "\n ],\n"; - meta << " \"exports\": ["; commaFirst = true; for (const auto& ex : wasm.exports) { @@ -1241,7 +546,7 @@ meta << " \"invokeFuncs\": ["; commaFirst = true; ModuleUtils::iterImportedFunctions(wasm, [&](Function* import) { - if (import->base.startsWith("invoke_")) { + if (import->module == ENV && import->base.startsWith("invoke_")) { if (invokeFuncs.insert(import->base.str).second) { meta << nextElement() << '"' << import->base.str << '"'; } @@ -1249,28 +554,38 @@ }); meta << "\n ],\n"; + // In normal mode we attempt to determine if main takes argumnts or not + // In standalone mode we export _start instead and rely on the presence + // of the __wasi_args_get and __wasi_args_sizes_get syscalls allow us to + // DCE to the argument handling JS code instead. + if (!standalone) { + auto mainReadsParams = false; + auto* exp = wasm.getExportOrNull("main"); + if (!exp) { + exp = wasm.getExportOrNull("__main_argc_argv"); + } + if (exp) { + if (exp->kind == ExternalKind::Function) { + auto* main = wasm.getFunction(exp->value); + mainReadsParams = true; + // If main does not read its parameters, it will just be a stub that + // calls __original_main (which has no parameters). + if (auto* call = main->body->dynCast()) { + if (call->operands.empty()) { + mainReadsParams = false; + } + } + } + } + meta << " \"mainReadsParams\": " << int(mainReadsParams) << ",\n"; + } + meta << " \"features\": ["; commaFirst = true; wasm.features.iterFeatures([&](FeatureSet::Feature f) { meta << nextElement() << "\"--enable-" << FeatureSet::toString(f) << '"'; }); - meta << "\n ],\n"; - - auto mainReadsParams = false; - if (auto* exp = wasm.getExportOrNull("main")) { - if (exp->kind == ExternalKind::Function) { - auto* main = wasm.getFunction(exp->value); - mainReadsParams = true; - // If main does not read its parameters, it will just be a stub that - // calls __original_main (which has no parameters). - if (auto* call = main->body->dynCast()) { - if (call->operands.empty()) { - mainReadsParams = false; - } - } - } - } - meta << " \"mainReadsParams\": " << int(mainReadsParams) << '\n'; + meta << "\n ]\n"; meta << "}\n"; @@ -1300,29 +615,16 @@ wasm.memory.segments.clear(); } -void EmscriptenGlueGenerator::exportWasiStart() { - // If main exists, export a function to call it per the wasi standard. - Name main = "main"; - if (!wasm.getFunctionOrNull(main)) { - BYN_TRACE("exportWasiStart: main not found\n"); - return; - } - Name _start = "_start"; - if (wasm.getExportOrNull(_start)) { - BYN_TRACE("exportWasiStart: _start already present\n"); +void EmscriptenGlueGenerator::renameMainArgcArgv() { + // If an export call ed __main_argc_argv exists rename it to main + Export* ex = wasm.getExportOrNull("__main_argc_argv"); + if (!ex) { + BYN_TRACE("renameMain: __main_argc_argv not found\n"); return; } - BYN_TRACE("exportWasiStart\n"); - Builder builder(wasm); - auto* body = - builder.makeDrop(builder.makeCall(main, - {LiteralUtils::makeZero(Type::i32, wasm), - LiteralUtils::makeZero(Type::i32, wasm)}, - Type::i32)); - auto* func = - builder.makeFunction(_start, Signature(Type::none, Type::none), {}, body); - wasm.addFunction(func); - wasm.addExport(builder.makeExport(_start, _start, ExternalKind::Function)); + ex->name = "main"; + wasm.updateMaps(); + ModuleUtils::renameFunction(wasm, "__main_argc_argv", "main"); } } // namespace wasm diff -Nru binaryen-91/src/wasm/wasm-io.cpp binaryen-99/src/wasm/wasm-io.cpp --- binaryen-91/src/wasm/wasm-io.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm/wasm-io.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -33,16 +33,16 @@ #define DEBUG_TYPE "writer" -static void readTextData(std::string& input, Module& wasm) { +static void readTextData(std::string& input, Module& wasm, IRProfile profile) { SExpressionParser parser(const_cast(input.c_str())); Element& root = *parser.root; - SExpressionWasmBuilder builder(wasm, *root[0]); + SExpressionWasmBuilder builder(wasm, *root[0], profile); } void ModuleReader::readText(std::string filename, Module& wasm) { BYN_TRACE("reading text from " << filename << "\n"); auto input(read_file(filename, Flags::Text)); - readTextData(input, wasm); + readTextData(input, wasm, profile); } void ModuleReader::readBinaryData(std::vector& input, @@ -113,7 +113,7 @@ s.write(input.data(), input.size()); s << '\0'; std::string input_str = s.str(); - readTextData(input_str, wasm); + readTextData(input_str, wasm, profile); } } @@ -121,7 +121,7 @@ #define DEBUG_TYPE "writer" void ModuleWriter::writeText(Module& wasm, Output& output) { - WasmPrinter::printModule(&wasm, output.getStream()); + output.getStream() << wasm; } void ModuleWriter::writeText(Module& wasm, std::string filename) { diff -Nru binaryen-91/src/wasm/wasm-s-parser.cpp binaryen-99/src/wasm/wasm-s-parser.cpp --- binaryen-91/src/wasm/wasm-s-parser.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm/wasm-s-parser.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -20,11 +20,11 @@ #include #include -#include "asm_v_wasm.h" -#include "asmjs/shared-constants.h" #include "ir/branch-utils.h" #include "shared-constants.h" +#include "support/string.h" #include "wasm-binary.h" +#include "wasm-builder.h" #define abort_on(str) \ { throw ParseException(std::string("abort_on ") + str); } @@ -50,18 +50,26 @@ namespace wasm { -static Address getCheckedAddress(const Element* s, const char* errorText) { - uint64_t num = atoll(s->c_str()); - if (num > std::numeric_limits::max()) { - throw ParseException(errorText, s->line, s->col); +static Name STRUCT("struct"), FIELD("field"), ARRAY("array"), I8("i8"), + I16("i16"), RTT("rtt"); + +static Address getAddress(const Element* s) { return atoll(s->c_str()); } + +static void +checkAddress(Address a, const char* errorText, const Element* errorElem) { + if (a > std::numeric_limits::max()) { + throw ParseException(errorText, errorElem->line, errorElem->col); } - return num; } static bool elementStartsWith(Element& s, IString str) { return s.isList() && s.size() > 0 && s[0]->isStr() && s[0]->str() == str; } +static bool elementStartsWith(Element* s, IString str) { + return elementStartsWith(*s, str); +} + Element::List& Element::list() { if (!isList()) { throw ParseException("expected list", line, col); @@ -314,8 +322,8 @@ SExpressionWasmBuilder::SExpressionWasmBuilder(Module& wasm, Element& module, - Name* moduleName) - : wasm(wasm), allocator(wasm.allocator) { + IRProfile profile) + : wasm(wasm), allocator(wasm.allocator), profile(profile) { if (module.size() == 0) { throw ParseException("empty toplevel, expected module"); } @@ -327,9 +335,7 @@ } Index i = 1; if (module[i]->dollared()) { - if (moduleName) { - *moduleName = module[i]->str(); - } + wasm.name = module[i]->str(); i++; } if (i < module.size() && module[i]->isStr()) { @@ -452,25 +458,6 @@ } } -Signature SExpressionWasmBuilder::getFunctionSignature(Element& s) { - if (s.dollared()) { - auto it = signatureIndices.find(s.str().str); - if (it == signatureIndices.end()) { - throw ParseException( - "unknown function type in getFunctionSignature", s.line, s.col); - } - return signatures[it->second]; - } else { - // index - size_t offset = atoi(s.str().c_str()); - if (offset >= signatures.size()) { - throw ParseException( - "unknown function type in getFunctionSignature", s.line, s.col); - } - return signatures[offset]; - } -} - Name SExpressionWasmBuilder::getGlobalName(Element& s) { if (s.dollared()) { return s.str(); @@ -538,19 +525,25 @@ name = Name::fromInt(localIndex); } localIndex++; - Type type = stringToType(s[i]->str()); + Type type; + type = elementToType(*s[i]); + if (elementStartsWith(s, PARAM) && type.isTuple()) { + throw ParseException( + "params may not have tuple types", s[i]->line, s[i]->col); + } namedParams.emplace_back(name, type); } return namedParams; } // Parses (result type) element. (e.g. (result i32)) -Type SExpressionWasmBuilder::parseResults(Element& s) { +std::vector SExpressionWasmBuilder::parseResults(Element& s) { assert(elementStartsWith(s, RESULT)); - if (s.size() != 2) { - throw ParseException("invalid result arity", s.line, s.col); + std::vector types; + for (size_t i = 1; i < s.size(); i++) { + types.push_back(elementToType(*s[i])); } - return stringToType(s[1]->str()); + return types; } // Parses an element that references an entry in the type section. The element @@ -561,7 +554,11 @@ if (s.size() != 2) { throw ParseException("invalid type reference", s.line, s.col); } - return getFunctionSignature(*s[1]); + auto heapType = parseHeapType(*s[1]); + if (!heapType.isSignature()) { + throw ParseException("expected signature type", s.line, s.col); + } + return heapType.getSignature(); } // Prases typeuse, a reference to a type definition. It is in the form of either @@ -599,8 +596,8 @@ while (i < s.size() && elementStartsWith(*s[i], RESULT)) { paramsOrResultsExist = true; - // TODO: make parseResults return a vector - results.push_back(parseResults(*s[i++])); + auto newResults = parseResults(*s[i++]); + results.insert(results.end(), newResults.begin(), newResults.end()); } auto inlineSig = Signature(Type(params), Type(results)); @@ -623,16 +620,16 @@ } // Add implicitly defined type to global list so it has an index - if (std::find(signatures.begin(), signatures.end(), functionSignature) == - signatures.end()) { - signatures.push_back(functionSignature); + auto heapType = HeapType(functionSignature); + if (std::find(types.begin(), types.end(), heapType) == types.end()) { + types.push_back(heapType); } // If only (type) is specified, populate `namedParams` if (!paramsOrResultsExist) { - const std::vector& funcParams = functionSignature.params.expand(); - for (size_t index = 0, e = funcParams.size(); index < e; index++) { - namedParams.emplace_back(Name::fromInt(index), funcParams[index]); + size_t index = 0; + for (const auto& param : functionSignature.params) { + namedParams.emplace_back(Name::fromInt(index++), param); } } @@ -666,7 +663,7 @@ functionCounter++; Signature sig; parseTypeUse(s, i, sig); - functionTypes[name] = sig.results; + functionSignatures[name] = sig; } size_t SExpressionWasmBuilder::parseFunctionNames(Element& s, @@ -705,6 +702,7 @@ Name name, exportName; size_t i = parseFunctionNames(s, name, exportName); + bool hasExplicitName = name.is(); if (!preParseImport) { if (!name.is()) { // unnamed, use an index @@ -753,11 +751,11 @@ throw ParseException("!preParseImport in func", s.line, s.col); } auto im = make_unique(); - im->name = name; + im->setName(name, hasExplicitName); im->module = importModule; im->base = importBase; im->sig = sig; - functionTypes[name] = sig.results; + functionSignatures[name] = sig; if (wasm.getFunctionOrNull(im->name)) { throw ParseException("duplicate import", s.line, s.col); } @@ -785,6 +783,7 @@ // make a new function currFunction = std::unique_ptr(Builder(wasm).makeFunction( name, std::move(params), sig.results, std::move(vars))); + currFunction->profile = profile; // parse body Block* autoBlock = nullptr; // may need to add a block for the very top level @@ -856,14 +855,21 @@ if (strncmp(str, "funcref", 7) == 0 && (prefix || str[7] == 0)) { return Type::funcref; } + if (strncmp(str, "externref", 9) == 0 && (prefix || str[9] == 0)) { + return Type::externref; + } + if (strncmp(str, "exnref", 6) == 0 && (prefix || str[6] == 0)) { + return Type::exnref; + } if (strncmp(str, "anyref", 6) == 0 && (prefix || str[6] == 0)) { return Type::anyref; } - if (strncmp(str, "nullref", 7) == 0 && (prefix || str[7] == 0)) { - return Type::nullref; + if (strncmp(str, "eqref", 5) == 0 && (prefix || str[5] == 0)) { + return Type::eqref; } - if (strncmp(str, "exnref", 6) == 0 && (prefix || str[6] == 0)) { - return Type::exnref; + if (strncmp(str, "i31ref", 6) == 0 && (prefix || str[6] == 0)) { + // FIXME: for now, force all inputs to be nullable + return Type(HeapType::BasicHeapType::i31, Nullable); } if (allowError) { return Type::none; @@ -871,6 +877,91 @@ throw ParseException(std::string("invalid wasm type: ") + str); } +HeapType SExpressionWasmBuilder::stringToHeapType(const char* str, + bool prefix) { + if (str[0] == 'a') { + if (str[1] == 'n' && str[2] == 'y' && (prefix || str[3] == 0)) { + return HeapType::any; + } + } + if (str[0] == 'e') { + if (str[1] == 'q' && (prefix || str[2] == 0)) { + return HeapType::eq; + } + if (str[1] == 'x') { + if (str[2] == 'n' && (prefix || str[3] == 0)) { + return HeapType::exn; + } + if (str[2] == 't' && str[3] == 'e' && str[4] == 'r' && str[5] == 'n' && + (prefix || str[6] == 0)) { + return HeapType::ext; + } + } + } + if (str[0] == 'i') { + if (str[1] == '3' && str[2] == '1' && (prefix || str[3] == 0)) { + return HeapType::i31; + } + } + if (str[0] == 'f') { + if (str[1] == 'u' && str[2] == 'n' && str[3] == 'c' && + (prefix || str[4] == 0)) { + return HeapType::func; + } + } + throw ParseException(std::string("invalid wasm heap type: ") + str); +} + +Type SExpressionWasmBuilder::elementToType(Element& s) { + if (s.isStr()) { + return stringToType(s.str()); + } + auto& list = s.list(); + auto size = list.size(); + if (elementStartsWith(s, REF)) { + // It's a reference. It should be in the form + // (ref $name) + // or + // (ref null $name) + // and also $name can be the expanded structure of the type and not a name, + // so something like (ref (func (result i32))), etc. + if (size != 2 && size != 3) { + throw ParseException( + std::string("invalid reference type size"), s.line, s.col); + } + if (size == 3 && *list[1] != NULL_) { + throw ParseException( + std::string("invalid reference type qualifier"), s.line, s.col); + } + // FIXME: for now, force all inputs to be nullable + Nullability nullable = Nullable; + size_t i = 1; + if (size == 3) { + nullable = Nullable; + i++; + } + return Type(parseHeapType(*s[i]), nullable); + } + if (elementStartsWith(s, RTT)) { + // It's an RTT, something like (rtt N $typename) or just (rtt $typename) + // if there is no depth. + if (s[1]->dollared()) { + auto heapType = parseHeapType(*s[1]); + return Type(Rtt(heapType)); + } else { + auto depth = atoi(s[1]->str().c_str()); + auto heapType = parseHeapType(*s[2]); + return Type(Rtt(depth, heapType)); + } + } + // It's a tuple. + std::vector types; + for (size_t i = 0; i < s.size(); ++i) { + types.push_back(elementToType(*list[i])); + } + return Type(types); +} + Type SExpressionWasmBuilder::stringToLaneType(const char* str) { if (strcmp(str, "i8x16") == 0) { return Type::i32; @@ -965,19 +1056,21 @@ return ret; } -Expression* SExpressionWasmBuilder::makeHost(Element& s, HostOp op) { - auto ret = allocator.alloc(); - ret->op = op; - parseCallOperands(s, 1, s.size(), ret); - if (ret->op == HostOp::MemoryGrow) { - if (ret->operands.size() != 1) { - throw ParseException("memory.grow needs one operand", s.line, s.col); - } - } else { - if (ret->operands.size() != 0) { - throw ParseException("host needs zero operands", s.line, s.col); - } +Expression* SExpressionWasmBuilder::makeMemorySize(Element& s) { + auto ret = allocator.alloc(); + if (wasm.memory.is64()) { + ret->make64(); + } + ret->finalize(); + return ret; +} + +Expression* SExpressionWasmBuilder::makeMemoryGrow(Element& s) { + auto ret = allocator.alloc(); + if (wasm.memory.is64()) { + ret->make64(); } + ret->delta = parseExpression(s[1]); ret->finalize(); return ret; } @@ -1234,8 +1327,12 @@ size_t i = 1; offset = 0; align = fallbackAlign; + // Parse "align=X" and "offset=X" arguments, bailing out on anything else. while (!s[i]->isList()) { const char* str = s[i]->c_str(); + if (strncmp(str, "align", 5) != 0 && strncmp(str, "offset", 6) != 0) { + return i; + } const char* eq = strchr(str, '='); if (!eq) { throw ParseException( @@ -1339,17 +1436,17 @@ ret->type = type; ret->bytes = bytes; if (!strncmp(extra, "add", 3)) { - ret->op = Add; + ret->op = RMWAdd; } else if (!strncmp(extra, "and", 3)) { - ret->op = And; + ret->op = RMWAnd; } else if (!strncmp(extra, "or", 2)) { - ret->op = Or; + ret->op = RMWOr; } else if (!strncmp(extra, "sub", 3)) { - ret->op = Sub; + ret->op = RMWSub; } else if (!strncmp(extra, "xor", 3)) { - ret->op = Xor; + ret->op = RMWXor; } else if (!strncmp(extra, "xchg", 4)) { - ret->op = Xchg; + ret->op = RMWXchg; } else { throw ParseException("bad atomic rmw operator", s.line, s.col); } @@ -1395,11 +1492,12 @@ } else if (type == Type::i64) { expectedAlign = 8; } else { - WASM_UNREACHABLE("Invalid prefix for atomic.wait"); + WASM_UNREACHABLE("Invalid prefix for memory.atomic.wait"); } size_t i = parseMemAttributes(s, ret->offset, align, expectedAlign); if (align != expectedAlign) { - throw ParseException("Align of atomic.wait must match size", s.line, s.col); + throw ParseException( + "Align of memory.atomic.wait must match size", s.line, s.col); } ret->ptr = parseExpression(s[i]); ret->expected = parseExpression(s[i + 1]); @@ -1414,7 +1512,8 @@ Address align; size_t i = parseMemAttributes(s, ret->offset, align, 4); if (align != 4) { - throw ParseException("Align of atomic.notify must be 4", s.line, s.col); + throw ParseException( + "Align of memory.atomic.notify must be 4", s.line, s.col); } ret->ptr = parseExpression(s[i]); ret->notifyCount = parseExpression(s[i + 1]); @@ -1506,6 +1605,7 @@ defaultAlign = 2; break; case LoadSplatVec32x4: + case Load32Zero: defaultAlign = 4; break; case LoadSplatVec64x2: @@ -1515,6 +1615,7 @@ case LoadExtUVec16x4ToVecI32x4: case LoadExtSVec32x2ToVecI64x2: case LoadExtUVec32x2ToVecI64x2: + case Load64Zero: defaultAlign = 8; break; } @@ -1524,6 +1625,51 @@ return ret; } +Expression* +SExpressionWasmBuilder::makeSIMDLoadStoreLane(Element& s, + SIMDLoadStoreLaneOp op) { + auto* ret = allocator.alloc(); + ret->op = op; + Address defaultAlign; + size_t lanes; + switch (op) { + case LoadLaneVec8x16: + case StoreLaneVec8x16: + defaultAlign = 1; + lanes = 16; + break; + case LoadLaneVec16x8: + case StoreLaneVec16x8: + defaultAlign = 2; + lanes = 8; + break; + case LoadLaneVec32x4: + case StoreLaneVec32x4: + defaultAlign = 4; + lanes = 4; + break; + case LoadLaneVec64x2: + case StoreLaneVec64x2: + defaultAlign = 8; + lanes = 2; + break; + default: + WASM_UNREACHABLE("Unexpected SIMDLoadStoreLane op"); + } + size_t i = parseMemAttributes(s, ret->offset, ret->align, defaultAlign); + ret->index = parseLaneIndex(s[i++], lanes); + ret->ptr = parseExpression(s[i++]); + ret->vec = parseExpression(s[i]); + ret->finalize(); + return ret; +} + +Expression* SExpressionWasmBuilder::makePrefetch(Element& s, PrefetchOp op) { + Address offset, align; + size_t i = parseMemAttributes(s, offset, align, /*defaultAlign*/ 1); + return Builder(wasm).makePrefetch(op, offset, align, parseExpression(s[i])); +} + Expression* SExpressionWasmBuilder::makeMemoryInit(Element& s) { auto ret = allocator.alloc(); ret->segment = atoi(s[1]->str().c_str()); @@ -1559,16 +1705,13 @@ return ret; } -Expression* SExpressionWasmBuilder::makePush(Element& s) { - auto ret = allocator.alloc(); - ret->value = parseExpression(s[1]); - ret->finalize(); - return ret; -} - -Expression* SExpressionWasmBuilder::makePop(Type type) { +Expression* SExpressionWasmBuilder::makePop(Element& s) { auto ret = allocator.alloc(); - ret->type = type; + std::vector types; + for (size_t i = 1; i < s.size(); ++i) { + types.push_back(stringToType(s[i]->str())); + } + ret->type = Type(types); ret->finalize(); return ret; } @@ -1635,14 +1778,13 @@ return stringToType(s[i++]->str()); } - Element& params = *s[i]; - IString id = params[0]->str(); - if (id != RESULT) { - return Type::none; + Element& results = *s[i]; + IString id = results[0]->str(); + if (id == RESULT) { + i++; + return Type(parseResults(results)); } - - i++; - return stringToType(params[1]->str()); + return Type::none; } Expression* SExpressionWasmBuilder::makeLoop(Element& s) { @@ -1666,7 +1808,7 @@ auto target = getFunctionName(*s[1]); auto ret = allocator.alloc(); ret->target = target; - ret->type = functionTypes[ret->target]; + ret->type = functionSignatures[ret->target].results; parseCallOperands(s, 2, s.size(), ret); ret->isReturn = isReturn; ret->finalize(); @@ -1763,8 +1905,18 @@ } Expression* SExpressionWasmBuilder::makeRefNull(Element& s) { + if (s.size() != 2) { + throw ParseException("invalid heap type reference", s.line, s.col); + } auto ret = allocator.alloc(); - ret->finalize(); + // The heap type may be just "func", that is, the whole thing is just + // (ref.null func), or it may be the name of a defined type, such as + // (ref.null $struct.FOO) + if (s[1]->dollared()) { + ret->finalize(parseHeapType(*s[1])); + } else { + ret->finalize(stringToHeapType(s[1]->str())); + } return ret; } @@ -1779,6 +1931,16 @@ auto func = getFunctionName(*s[1]); auto ret = allocator.alloc(); ret->func = func; + // To support typed function refs, we give the reference not just a general + // funcref, but a specific subtype with the actual signature. + ret->finalize(Type(HeapType(functionSignatures[func]), Nullable)); + return ret; +} + +Expression* SExpressionWasmBuilder::makeRefEq(Element& s) { + auto ret = allocator.alloc(); + ret->left = parseExpression(s[1]); + ret->right = parseExpression(s[2]); ret->finalize(); return ret; } @@ -1804,15 +1966,15 @@ } auto label = nameMapper.pushLabelName(sName); Type type = parseOptionalResultType(s, i); // signature - if (elementStartsWith(*s[i], "catch")) { // empty try body - ret->body = makeNop(); - } else { - ret->body = parseExpression(*s[i++]); + if (!elementStartsWith(*s[i], "do")) { + throw ParseException( + "try body should start with 'do'", s[i]->line, s[i]->col); } + ret->body = makeTryOrCatchBody(*s[i++], type, true); if (!elementStartsWith(*s[i], "catch")) { throw ParseException("catch clause does not exist", s[i]->line, s[i]->col); } - ret->catchBody = makeCatch(*s[i++], type); + ret->catchBody = makeTryOrCatchBody(*s[i++], type, false); ret->finalize(type); nameMapper.popLabelName(label); // create a break target if we must @@ -1826,10 +1988,17 @@ return ret; } -Expression* SExpressionWasmBuilder::makeCatch(Element& s, Type type) { - if (!elementStartsWith(s, "catch")) { +Expression* +SExpressionWasmBuilder::makeTryOrCatchBody(Element& s, Type type, bool isTry) { + if (isTry && !elementStartsWith(s, "do")) { + throw ParseException("invalid try do clause", s.line, s.col); + } + if (!isTry && !elementStartsWith(s, "catch")) { throw ParseException("invalid catch clause", s.line, s.col); } + if (s.size() == 1) { // (do) or (catch) without instructions + return makeNop(); + } auto ret = allocator.alloc(); for (size_t i = 1; i < s.size(); i++) { ret->list.push_back(parseExpression(s[i])); @@ -1882,6 +2051,176 @@ return ret; } +Expression* SExpressionWasmBuilder::makeTupleMake(Element& s) { + auto ret = allocator.alloc(); + parseCallOperands(s, 1, s.size(), ret); + ret->finalize(); + return ret; +} + +Expression* SExpressionWasmBuilder::makeTupleExtract(Element& s) { + auto ret = allocator.alloc(); + ret->index = atoi(s[1]->str().c_str()); + ret->tuple = parseExpression(s[2]); + ret->finalize(); + return ret; +} + +Expression* SExpressionWasmBuilder::makeCallRef(Element& s, bool isReturn) { + auto ret = allocator.alloc(); + parseCallOperands(s, 1, s.size() - 1, ret); + ret->target = parseExpression(s[s.size() - 1]); + ret->isReturn = isReturn; + if (!ret->target->type.isRef()) { + throw ParseException("Non-reference type for a call_ref", s.line, s.col); + } + auto heapType = ret->target->type.getHeapType(); + if (!heapType.isSignature()) { + throw ParseException( + "Invalid reference type for a call_ref", s.line, s.col); + } + auto sig = heapType.getSignature(); + ret->finalize(sig.results); + return ret; +} + +Expression* SExpressionWasmBuilder::makeI31New(Element& s) { + auto ret = allocator.alloc(); + ret->value = parseExpression(s[1]); + ret->finalize(); + return ret; +} + +Expression* SExpressionWasmBuilder::makeI31Get(Element& s, bool signed_) { + auto ret = allocator.alloc(); + ret->i31 = parseExpression(s[1]); + ret->signed_ = signed_; + ret->finalize(); + return ret; +} + +Expression* SExpressionWasmBuilder::makeRefTest(Element& s) { + auto heapType = parseHeapType(*s[1]); + auto* ref = parseExpression(*s[2]); + auto* rtt = parseExpression(*s[3]); + validateHeapTypeUsingChild(rtt, heapType, s); + return Builder(wasm).makeRefTest(ref, rtt); +} + +Expression* SExpressionWasmBuilder::makeRefCast(Element& s) { + auto heapType = parseHeapType(*s[1]); + auto* ref = parseExpression(*s[2]); + auto* rtt = parseExpression(*s[3]); + validateHeapTypeUsingChild(rtt, heapType, s); + return Builder(wasm).makeRefCast(ref, rtt); +} + +Expression* SExpressionWasmBuilder::makeBrOnCast(Element& s) { + auto name = getLabel(*s[1]); + auto heapType = parseHeapType(*s[2]); + auto* ref = parseExpression(*s[3]); + auto* rtt = parseExpression(*s[4]); + validateHeapTypeUsingChild(rtt, heapType, s); + return Builder(wasm).makeBrOnCast(name, heapType, ref, rtt); +} + +Expression* SExpressionWasmBuilder::makeRttCanon(Element& s) { + return Builder(wasm).makeRttCanon(parseHeapType(*s[1])); +} + +Expression* SExpressionWasmBuilder::makeRttSub(Element& s) { + auto heapType = parseHeapType(*s[1]); + auto parent = parseExpression(*s[2]); + return Builder(wasm).makeRttSub(heapType, parent); +} + +Expression* SExpressionWasmBuilder::makeStructNew(Element& s, bool default_) { + auto heapType = parseHeapType(*s[1]); + auto* rtt = parseExpression(*s[2]); + validateHeapTypeUsingChild(rtt, heapType, s); + auto numOperands = s.size() - 3; + if (default_ && numOperands > 0) { + throw ParseException( + "arguments provided for struct.new_with_default", s.line, s.col); + } + std::vector operands; + operands.resize(numOperands); + for (Index i = 0; i < numOperands; i++) { + operands[i] = parseExpression(*s[i + 3]); + } + return Builder(wasm).makeStructNew(rtt, operands); +} + +Index SExpressionWasmBuilder::getStructIndex(const HeapType& type, Element& s) { + if (s.dollared()) { + auto name = s.str(); + auto struct_ = type.getStruct(); + auto& fields = struct_.fields; + for (Index i = 0; i < fields.size(); i++) { + if (fields[i].name == name) { + return i; + } + } + throw ParseException("bad struct name", s.line, s.col); + } + // this is a numeric index + return atoi(s.c_str()); +} + +Expression* SExpressionWasmBuilder::makeStructGet(Element& s, bool signed_) { + auto heapType = parseHeapType(*s[1]); + auto index = getStructIndex(heapType, *s[2]); + auto type = heapType.getStruct().fields[index].type; + auto ref = parseExpression(*s[3]); + validateHeapTypeUsingChild(ref, heapType, s); + return Builder(wasm).makeStructGet(index, ref, type, signed_); +} + +Expression* SExpressionWasmBuilder::makeStructSet(Element& s) { + auto heapType = parseHeapType(*s[1]); + auto index = getStructIndex(heapType, *s[2]); + auto ref = parseExpression(*s[3]); + validateHeapTypeUsingChild(ref, heapType, s); + auto value = parseExpression(*s[4]); + return Builder(wasm).makeStructSet(index, ref, value); +} + +Expression* SExpressionWasmBuilder::makeArrayNew(Element& s, bool default_) { + auto heapType = parseHeapType(*s[1]); + auto* rtt = parseExpression(*s[2]); + validateHeapTypeUsingChild(rtt, heapType, s); + auto* size = parseExpression(*s[3]); + Expression* init = nullptr; + if (!default_) { + init = parseExpression(*s[4]); + } + return Builder(wasm).makeArrayNew(rtt, size, init); +} + +Expression* SExpressionWasmBuilder::makeArrayGet(Element& s, bool signed_) { + auto heapType = parseHeapType(*s[1]); + auto ref = parseExpression(*s[2]); + validateHeapTypeUsingChild(ref, heapType, s); + auto index = parseExpression(*s[3]); + return Builder(wasm).makeArrayGet(ref, index, signed_); +} + +Expression* SExpressionWasmBuilder::makeArraySet(Element& s) { + auto heapType = parseHeapType(*s[1]); + auto ref = parseExpression(*s[2]); + validateHeapTypeUsingChild(ref, heapType, s); + auto index = parseExpression(*s[3]); + auto value = parseExpression(*s[4]); + return Builder(wasm).makeArraySet(ref, index, value); +} + +Expression* SExpressionWasmBuilder::makeArrayLen(Element& s) { + auto heapType = parseHeapType(*s[1]); + auto ref = parseExpression(*s[2]); + validateHeapTypeUsingChild(ref, heapType, s); + return Builder(wasm).makeArrayLen(ref); +} + // converts an s-expression string representing binary data into an output // sequence of raw bytes this appends to data, which may already contain // content. @@ -1931,18 +2270,40 @@ data.resize(actual); } +Index SExpressionWasmBuilder::parseMemoryIndex(Element& s, Index i) { + if (i < s.size() && s[i]->isStr()) { + if (s[i]->str() == "i64") { + i++; + wasm.memory.indexType = Type::i64; + } else if (s[i]->str() == "i32") { + i++; + wasm.memory.indexType = Type::i32; + } + } + return i; +} + Index SExpressionWasmBuilder::parseMemoryLimits(Element& s, Index i) { - wasm.memory.initial = getCheckedAddress(s[i++], "excessive memory init"); + i = parseMemoryIndex(s, i); if (i == s.size()) { - wasm.memory.max = Memory::kUnlimitedSize; - return i; + throw ParseException("missing memory limits", s.line, s.col); } - uint64_t max = atoll(s[i]->c_str()); - if (max > Memory::kMaxSize) { - throw ParseException("total memory must be <= 4GB", s[i]->line, s[i]->col); + auto initElem = s[i++]; + wasm.memory.initial = getAddress(initElem); + if (!wasm.memory.is64()) { + checkAddress(wasm.memory.initial, "excessive memory init", initElem); } - wasm.memory.max = max; - return ++i; + if (i == s.size()) { + wasm.memory.max = Memory::kUnlimitedSize; + } else { + auto maxElem = s[i++]; + wasm.memory.max = getAddress(maxElem); + if (!wasm.memory.is64() && wasm.memory.max > Memory::kMaxSize32) { + throw ParseException( + "total memory must be <= 4GB", maxElem->line, maxElem->col); + } + } + return i; } void SExpressionWasmBuilder::parseMemory(Element& s, bool preParseImport) { @@ -1953,8 +2314,9 @@ wasm.memory.shared = false; Index i = 1; if (s[i]->dollared()) { - wasm.memory.name = s[i++]->str(); + wasm.memory.setExplicitName(s[i++]->str()); } + i = parseMemoryIndex(s, i); Name importModule, importBase; if (s[i]->isList()) { auto& inner = *s[i]; @@ -1981,8 +2343,9 @@ throw ParseException("bad import ending", inner.line, inner.col); } // (memory (data ..)) format + auto j = parseMemoryIndex(inner, 1); auto offset = allocator.alloc()->set(Literal(int32_t(0))); - parseInnerData(*s[i], 1, offset, false); + parseInnerData(inner, j, {}, offset, false); wasm.memory.initial = wasm.memory.segments[0].data.size(); return; } @@ -1999,7 +2362,11 @@ if (elementStartsWith(curr, DATA)) { offsetValue = 0; } else { - offsetValue = getCheckedAddress(curr[j++], "excessive memory offset"); + auto offsetElem = curr[j++]; + offsetValue = getAddress(offsetElem); + if (!wasm.memory.is64()) { + checkAddress(offsetValue, "excessive memory offset", offsetElem); + } } const char* input = curr[j]->c_str(); auto* offset = allocator.alloc(); @@ -2023,6 +2390,10 @@ bool isPassive = false; Expression* offset = nullptr; Index i = 1; + Name name; + if (s[i]->dollared()) { + name = s[i++]->str(); + } if (s[i]->isStr()) { // data is passive or named if (s[i]->str() == PASSIVE) { @@ -2036,13 +2407,11 @@ if (s.size() != 3 && s.size() != 4) { throw ParseException("Unexpected data items", s.line, s.col); } - parseInnerData(s, s.size() - 1, offset, isPassive); + parseInnerData(s, s.size() - 1, name, offset, isPassive); } -void SExpressionWasmBuilder::parseInnerData(Element& s, - Index i, - Expression* offset, - bool isPassive) { +void SExpressionWasmBuilder::parseInnerData( + Element& s, Index i, Name name, Expression* offset, bool isPassive) { std::vector data; while (i < s.size()) { const char* input = s[i++]->c_str(); @@ -2051,7 +2420,7 @@ } } wasm.memory.segments.emplace_back( - isPassive, offset, data.data(), data.size()); + name, isPassive, offset, data.data(), data.size()); } void SExpressionWasmBuilder::parseExport(Element& s) { @@ -2120,19 +2489,20 @@ (*s[3])[newStyleInner]->dollared()) { name = (*s[3])[newStyleInner++]->str(); } - if (!name.is()) { + bool hasExplicitName = name.is(); + if (!hasExplicitName) { if (kind == ExternalKind::Function) { - name = Name("import$function$" + std::to_string(functionCounter++)); + name = Name("fimport$" + std::to_string(functionCounter++)); functionNames.push_back(name); } else if (kind == ExternalKind::Global) { - name = Name("import$global" + std::to_string(globalCounter++)); + name = Name("gimport$" + std::to_string(globalCounter++)); globalNames.push_back(name); } else if (kind == ExternalKind::Memory) { - name = Name("import$memory$" + std::to_string(0)); + name = Name("mimport$" + std::to_string(memoryCounter++)); } else if (kind == ExternalKind::Table) { - name = Name("import$table$" + std::to_string(0)); + name = Name("timport$" + std::to_string(tableCounter++)); } else if (kind == ExternalKind::Event) { - name = Name("import$event" + std::to_string(eventCounter++)); + name = Name("eimport$" + std::to_string(eventCounter++)); eventNames.push_back(name); } else { throw ParseException("invalid import", s[3]->line, s[3]->col); @@ -2158,10 +2528,10 @@ auto func = make_unique(); j = parseTypeUse(inner, j, func->sig); - func->name = name; + func->setName(name, hasExplicitName); func->module = module; func->base = base; - functionTypes[name] = func->sig.results; + functionSignatures[name] = func->sig; wasm.addFunction(func.release()); } else if (kind == ExternalKind::Global) { Type type; @@ -2177,28 +2547,32 @@ mutable_ = true; } auto global = make_unique(); - global->name = name; + global->setName(name, hasExplicitName); global->module = module; global->base = base; global->type = type; global->mutable_ = mutable_; wasm.addGlobal(global.release()); } else if (kind == ExternalKind::Table) { + wasm.table.setName(name, hasExplicitName); wasm.table.module = module; wasm.table.base = base; if (j < inner.size() - 1) { - wasm.table.initial = - getCheckedAddress(inner[j++], "excessive table init size"); + auto initElem = inner[j++]; + wasm.table.initial = getAddress(initElem); + checkAddress(wasm.table.initial, "excessive table init size", initElem); } if (j < inner.size() - 1) { - wasm.table.max = - getCheckedAddress(inner[j++], "excessive table max size"); + auto maxElem = inner[j++]; + wasm.table.max = getAddress(maxElem); + checkAddress(wasm.table.max, "excessive table max size", maxElem); } else { wasm.table.max = Table::kUnlimitedSize; } j++; // funcref // ends with the table element type } else if (kind == ExternalKind::Memory) { + wasm.memory.setName(name, hasExplicitName); wasm.memory.module = module; wasm.memory.base = base; if (inner[j]->isList()) { @@ -2223,7 +2597,7 @@ } event->attribute = atoi(attrElem[1]->c_str()); j = parseTypeUse(inner, j, event->sig); - event->name = name; + event->setName(name, hasExplicitName); event->module = module; event->base = base; wasm.addEvent(event.release()); @@ -2238,7 +2612,7 @@ std::unique_ptr global = make_unique(); size_t i = 1; if (s[i]->dollared() && !(s[i]->isStr() && isType(s[i]->str()))) { - global->name = s[i++]->str(); + global->setExplicitName(s[i++]->str()); } else { global->name = Name::fromInt(globalCounter); } @@ -2249,7 +2623,7 @@ bool exported = false; Name importModule, importBase; while (i < s.size() && s[i]->isList()) { - auto& inner = *s[i]; + auto& inner = *s[i++]; if (elementStartsWith(inner, EXPORT)) { auto ex = make_unique(); ex->name = inner[1]->str(); @@ -2260,16 +2634,15 @@ } wasm.addExport(ex.release()); exported = true; - i++; } else if (elementStartsWith(inner, IMPORT)) { importModule = inner[1]->str(); importBase = inner[2]->str(); - i++; } else if (elementStartsWith(inner, MUT)) { mutable_ = true; - type = stringToType(inner[1]->str()); - i++; + type = elementToType(*inner[1]); + break; } else { + type = elementToType(inner); break; } } @@ -2328,7 +2701,7 @@ return; // empty table in old notation } if (s[i]->dollared()) { - wasm.table.name = s[i++]->str(); + wasm.table.setExplicitName(s[i++]->str()); } if (i == s.size()) { return; @@ -2421,30 +2794,102 @@ wasm.table.segments.push_back(segment); } +HeapType SExpressionWasmBuilder::parseHeapType(Element& s) { + if (s.isStr()) { + // It's a string. + if (s.dollared()) { + auto it = typeIndices.find(s.str().str); + if (it == typeIndices.end()) { + throw ParseException("unknown dollared function type", s.line, s.col); + } + return types[it->second]; + } else { + // It may be a numerical index, or it may be a built-in type name like + // "i31". + auto* str = s.str().c_str(); + if (String::isNumber(str)) { + size_t offset = atoi(str); + if (offset >= types.size()) { + throw ParseException("unknown indexed function type", s.line, s.col); + } + return types[offset]; + } + return stringToHeapType(str, /* prefix = */ false); + } + } + // It's a list. + if (*s[0] == FUNC) { + std::vector params; + std::vector results; + for (size_t k = 1; k < s.size(); k++) { + Element& curr = *s[k]; + if (elementStartsWith(curr, PARAM)) { + auto newParams = parseParamOrLocal(curr); + params.insert(params.end(), newParams.begin(), newParams.end()); + } else if (elementStartsWith(curr, RESULT)) { + auto newResults = parseResults(curr); + results.insert(results.end(), newResults.begin(), newResults.end()); + } + } + return Signature(Type(params), Type(results)); + } + // It's a struct or an array. + auto parseField = [&](Element* t) { + Mutability mutable_ = Immutable; + // t is a list, containing either + // TYPE + // or + // (field TYPE) + // or + // (field $name TYPE) + Name name; + if (elementStartsWith(t, FIELD)) { + if (t->size() == 3) { + name = (*t)[1]->str(); + } + t = (*t)[t->size() - 1]; + } + // The element may also be (mut (..)). + if (elementStartsWith(t, MUT)) { + mutable_ = Mutable; + t = (*t)[1]; + } + if (t->isStr()) { + // t is a simple string name like "i32". It can be a normal wasm type, or + // one of the special types only available in fields. + if (*t == I8) { + return Field(Field::i8, mutable_, name); + } else if (*t == I16) { + return Field(Field::i16, mutable_, name); + } + } + // Otherwise it's an arbitrary type. + return Field(elementToType(*t), mutable_, name); + }; + if (elementStartsWith(s, STRUCT)) { + FieldList fields; + for (size_t k = 1; k < s.size(); k++) { + fields.emplace_back(parseField(s[k])); + } + return Struct(fields); + } + if (elementStartsWith(s, ARRAY)) { + return Array(parseField(s[1])); + } + throw ParseException("invalid heap type", s.line, s.col); +} + void SExpressionWasmBuilder::parseType(Element& s) { - std::vector params; - std::vector results; size_t i = 1; if (s[i]->isStr()) { std::string name = s[i]->str().str; - if (signatureIndices.find(name) != signatureIndices.end()) { + if (typeIndices.find(name) != typeIndices.end()) { throw ParseException("duplicate function type", s.line, s.col); } - signatureIndices[name] = signatures.size(); + typeIndices[name] = types.size(); i++; } - Element& func = *s[i]; - for (size_t k = 1; k < func.size(); k++) { - Element& curr = *func[k]; - if (elementStartsWith(curr, PARAM)) { - auto newParams = parseParamOrLocal(curr); - params.insert(params.end(), newParams.begin(), newParams.end()); - } else if (elementStartsWith(curr, RESULT)) { - // TODO: Parse multiple results at once - results.push_back(parseResults(curr)); - } - } - signatures.emplace_back(Type(params), Type(results)); + types.emplace_back(parseHeapType(*s[i])); } void SExpressionWasmBuilder::parseEvent(Element& s, bool preParseImport) { @@ -2454,7 +2899,7 @@ // Parse name if (s[i]->isStr() && s[i]->dollared()) { auto& inner = *s[i++]; - event->name = inner.str(); + event->setExplicitName(inner.str()); if (wasm.getEventOrNull(event->name)) { throw ParseException("duplicate event", inner.line, inner.col); } @@ -2534,4 +2979,19 @@ wasm.addEvent(event.release()); } +void SExpressionWasmBuilder::validateHeapTypeUsingChild(Expression* child, + HeapType heapType, + Element& s) { + if (child->type == Type::unreachable) { + return; + } + if ((!child->type.isRef() && !child->type.isRtt()) || + child->type.getHeapType() != heapType) { + throw ParseException("bad heap type: expected " + heapType.toString() + + " but found " + child->type.toString(), + s.line, + s.col); + } +} + } // namespace wasm diff -Nru binaryen-91/src/wasm/wasm-stack.cpp binaryen-99/src/wasm/wasm-stack.cpp --- binaryen-91/src/wasm/wasm-stack.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm/wasm-stack.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -15,13 +15,27 @@ */ #include "wasm-stack.h" +#include "ir/find_all.h" +#include "wasm-debug.h" namespace wasm { +static Name IMPOSSIBLE_CONTINUE("impossible-continue"); + +void BinaryInstWriter::emitResultType(Type type) { + if (type == Type::unreachable) { + parent.writeType(Type::none); + } else if (type.isTuple()) { + o << S32LEB(parent.getTypeIndex(Signature(Type::none, type))); + } else { + parent.writeType(type); + } +} + void BinaryInstWriter::visitBlock(Block* curr) { breakStack.push_back(curr->name); o << int8_t(BinaryConsts::Block); - o << binaryType(curr->type != Type::unreachable ? curr->type : Type::none); + emitResultType(curr->type); } void BinaryInstWriter::visitIf(If* curr) { @@ -30,7 +44,7 @@ // instead) breakStack.emplace_back(IMPOSSIBLE_CONTINUE); o << int8_t(BinaryConsts::If); - o << binaryType(curr->type != Type::unreachable ? curr->type : Type::none); + emitResultType(curr->type); } void BinaryInstWriter::emitIfElse(If* curr) { @@ -46,7 +60,7 @@ void BinaryInstWriter::visitLoop(Loop* curr) { breakStack.push_back(curr->name); o << int8_t(BinaryConsts::Loop); - o << binaryType(curr->type != Type::unreachable ? curr->type : Type::none); + emitResultType(curr->type); } void BinaryInstWriter::visitBreak(Break* curr) { @@ -76,27 +90,53 @@ } void BinaryInstWriter::visitLocalGet(LocalGet* curr) { - o << int8_t(BinaryConsts::LocalGet) << U32LEB(mappedLocals[curr->index]); + size_t numValues = func->getLocalType(curr->index).size(); + for (Index i = 0; i < numValues; ++i) { + o << int8_t(BinaryConsts::LocalGet) + << U32LEB(mappedLocals[std::make_pair(curr->index, i)]); + } } void BinaryInstWriter::visitLocalSet(LocalSet* curr) { - o << int8_t(curr->isTee() ? BinaryConsts::LocalTee : BinaryConsts::LocalSet) - << U32LEB(mappedLocals[curr->index]); + size_t numValues = func->getLocalType(curr->index).size(); + for (Index i = numValues - 1; i >= 1; --i) { + o << int8_t(BinaryConsts::LocalSet) + << U32LEB(mappedLocals[std::make_pair(curr->index, i)]); + } + if (!curr->isTee()) { + o << int8_t(BinaryConsts::LocalSet) + << U32LEB(mappedLocals[std::make_pair(curr->index, 0)]); + } else { + o << int8_t(BinaryConsts::LocalTee) + << U32LEB(mappedLocals[std::make_pair(curr->index, 0)]); + for (Index i = 1; i < numValues; ++i) { + o << int8_t(BinaryConsts::LocalGet) + << U32LEB(mappedLocals[std::make_pair(curr->index, i)]); + } + } } void BinaryInstWriter::visitGlobalGet(GlobalGet* curr) { - o << int8_t(BinaryConsts::GlobalGet) - << U32LEB(parent.getGlobalIndex(curr->name)); + // Emit a global.get for each element if this is a tuple global + Index index = parent.getGlobalIndex(curr->name); + size_t numValues = curr->type.size(); + for (Index i = 0; i < numValues; ++i) { + o << int8_t(BinaryConsts::GlobalGet) << U32LEB(index + i); + } } void BinaryInstWriter::visitGlobalSet(GlobalSet* curr) { - o << int8_t(BinaryConsts::GlobalSet) - << U32LEB(parent.getGlobalIndex(curr->name)); + // Emit a global.set for each element if this is a tuple global + Index index = parent.getGlobalIndex(curr->name); + size_t numValues = parent.getModule()->getGlobal(curr->name)->type.size(); + for (int i = numValues - 1; i >= 0; --i) { + o << int8_t(BinaryConsts::GlobalSet) << U32LEB(index + i); + } } void BinaryInstWriter::visitLoad(Load* curr) { if (!curr->isAtomic) { - switch (curr->type.getSingle()) { + switch (curr->type.getBasic()) { case Type::i32: { switch (curr->bytes) { case 1: @@ -151,15 +191,17 @@ // a load return; case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: WASM_UNREACHABLE("unexpected type"); } } else { o << int8_t(BinaryConsts::AtomicPrefix); - switch (curr->type.getSingle()) { + switch (curr->type.getBasic()) { case Type::i32: { switch (curr->bytes) { case 1: @@ -206,7 +248,7 @@ void BinaryInstWriter::visitStore(Store* curr) { if (!curr->isAtomic) { - switch (curr->valueType.getSingle()) { + switch (curr->valueType.getBasic()) { case Type::i32: { switch (curr->bytes) { case 1: @@ -253,16 +295,18 @@ << U32LEB(BinaryConsts::V128Store); break; case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: case Type::unreachable: WASM_UNREACHABLE("unexpected type"); } } else { o << int8_t(BinaryConsts::AtomicPrefix); - switch (curr->valueType.getSingle()) { + switch (curr->valueType.getBasic()) { case Type::i32: { switch (curr->bytes) { case 1: @@ -309,8 +353,8 @@ o << int8_t(BinaryConsts::AtomicPrefix); #define CASE_FOR_OP(Op) \ - case Op: \ - switch (curr->type.getSingle()) { \ + case RMW##Op: \ + switch (curr->type.getBasic()) { \ case Type::i32: \ switch (curr->bytes) { \ case 1: \ @@ -366,7 +410,7 @@ void BinaryInstWriter::visitAtomicCmpxchg(AtomicCmpxchg* curr) { o << int8_t(BinaryConsts::AtomicPrefix); - switch (curr->type.getSingle()) { + switch (curr->type.getBasic()) { case Type::i32: switch (curr->bytes) { case 1: @@ -408,7 +452,7 @@ void BinaryInstWriter::visitAtomicWait(AtomicWait* curr) { o << int8_t(BinaryConsts::AtomicPrefix); - switch (curr->expectedType.getSingle()) { + switch (curr->expectedType.getBasic()) { case Type::i32: { o << int8_t(BinaryConsts::I32AtomicWait); emitMemoryAccess(4, 4, curr->offset); @@ -516,6 +560,18 @@ case QFMSF64x2: o << U32LEB(BinaryConsts::F64x2QFMS); break; + case SignSelectVec8x16: + o << U32LEB(BinaryConsts::V8x16SignSelect); + break; + case SignSelectVec16x8: + o << U32LEB(BinaryConsts::V16x8SignSelect); + break; + case SignSelectVec32x4: + o << U32LEB(BinaryConsts::V32x4SignSelect); + break; + case SignSelectVec64x2: + o << U32LEB(BinaryConsts::V64x2SignSelect); + break; } } @@ -594,6 +650,59 @@ case LoadExtUVec32x2ToVecI64x2: o << U32LEB(BinaryConsts::I64x2LoadExtUVec32x2); break; + case Load32Zero: + o << U32LEB(BinaryConsts::V128Load32Zero); + break; + case Load64Zero: + o << U32LEB(BinaryConsts::V128Load64Zero); + break; + } + assert(curr->align); + emitMemoryAccess(curr->align, /*(unused) bytes=*/0, curr->offset); +} + +void BinaryInstWriter::visitSIMDLoadStoreLane(SIMDLoadStoreLane* curr) { + o << int8_t(BinaryConsts::SIMDPrefix); + switch (curr->op) { + case LoadLaneVec8x16: + o << U32LEB(BinaryConsts::V128Load8Lane); + break; + case LoadLaneVec16x8: + o << U32LEB(BinaryConsts::V128Load16Lane); + break; + case LoadLaneVec32x4: + o << U32LEB(BinaryConsts::V128Load32Lane); + break; + case LoadLaneVec64x2: + o << U32LEB(BinaryConsts::V128Load64Lane); + break; + case StoreLaneVec8x16: + o << U32LEB(BinaryConsts::V128Store8Lane); + break; + case StoreLaneVec16x8: + o << U32LEB(BinaryConsts::V128Store16Lane); + break; + case StoreLaneVec32x4: + o << U32LEB(BinaryConsts::V128Store32Lane); + break; + case StoreLaneVec64x2: + o << U32LEB(BinaryConsts::V128Store64Lane); + break; + } + assert(curr->align); + emitMemoryAccess(curr->align, /*(unused) bytes=*/0, curr->offset); + o << curr->index; +} + +void BinaryInstWriter::visitPrefetch(Prefetch* curr) { + o << int8_t(BinaryConsts::SIMDPrefix); + switch (curr->op) { + case PrefetchTemporal: + o << U32LEB(BinaryConsts::PrefetchT); + break; + case PrefetchNontemporal: + o << U32LEB(BinaryConsts::PrefetchNT); + break; } assert(curr->align); emitMemoryAccess(curr->align, /*(unused) bytes=*/0, curr->offset); @@ -624,7 +733,7 @@ } void BinaryInstWriter::visitConst(Const* curr) { - switch (curr->type.getSingle()) { + switch (curr->type.getBasic()) { case Type::i32: { o << int8_t(BinaryConsts::I32Const) << S32LEB(curr->value.geti32()); break; @@ -650,9 +759,11 @@ break; } case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: case Type::unreachable: WASM_UNREACHABLE("unexpected type"); @@ -870,6 +981,9 @@ case NotVec128: o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::V128Not); break; + case AbsVecI8x16: + o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::I8x16Abs); + break; case NegVecI8x16: o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::I8x16Neg); break; @@ -881,6 +995,17 @@ o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::I8x16AllTrue); break; + case BitmaskVecI8x16: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I8x16Bitmask); + break; + case PopcntVecI8x16: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I8x16Popcnt); + break; + case AbsVecI16x8: + o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::I16x8Abs); + break; case NegVecI16x8: o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::I16x8Neg); break; @@ -892,6 +1017,13 @@ o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::I16x8AllTrue); break; + case BitmaskVecI16x8: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I16x8Bitmask); + break; + case AbsVecI32x4: + o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::I32x4Abs); + break; case NegVecI32x4: o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::I32x4Neg); break; @@ -903,16 +1035,16 @@ o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::I32x4AllTrue); break; + case BitmaskVecI32x4: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I32x4Bitmask); + break; case NegVecI64x2: o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::I64x2Neg); break; - case AnyTrueVecI64x2: - o << int8_t(BinaryConsts::SIMDPrefix) - << U32LEB(BinaryConsts::I64x2AnyTrue); - break; - case AllTrueVecI64x2: + case BitmaskVecI64x2: o << int8_t(BinaryConsts::SIMDPrefix) - << U32LEB(BinaryConsts::I64x2AllTrue); + << U32LEB(BinaryConsts::I64x2Bitmask); break; case AbsVecF32x4: o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F32x4Abs); @@ -923,6 +1055,19 @@ case SqrtVecF32x4: o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F32x4Sqrt); break; + case CeilVecF32x4: + o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F32x4Ceil); + break; + case FloorVecF32x4: + o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F32x4Floor); + break; + case TruncVecF32x4: + o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F32x4Trunc); + break; + case NearestVecF32x4: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::F32x4Nearest); + break; case AbsVecF64x2: o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F64x2Abs); break; @@ -932,6 +1077,35 @@ case SqrtVecF64x2: o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F64x2Sqrt); break; + case CeilVecF64x2: + o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F64x2Ceil); + break; + case FloorVecF64x2: + o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F64x2Floor); + break; + case TruncVecF64x2: + o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F64x2Trunc); + break; + case NearestVecF64x2: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::F64x2Nearest); + break; + case ExtAddPairwiseSVecI8x16ToI16x8: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I16x8ExtAddPairWiseSI8x16); + break; + case ExtAddPairwiseUVecI8x16ToI16x8: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I16x8ExtAddPairWiseUI8x16); + break; + case ExtAddPairwiseSVecI16x8ToI32x4: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I32x4ExtAddPairWiseSI16x8); + break; + case ExtAddPairwiseUVecI16x8ToI32x4: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I32x4ExtAddPairWiseUI16x8); + break; case TruncSatSVecF32x4ToVecI32x4: o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::I32x4TruncSatSF32x4); @@ -996,6 +1170,22 @@ o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::I32x4WidenHighUI16x8); break; + case WidenLowSVecI32x4ToVecI64x2: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I64x2WidenLowSI32x4); + break; + case WidenHighSVecI32x4ToVecI64x2: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I64x2WidenHighSI32x4); + break; + case WidenLowUVecI32x4ToVecI64x2: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I64x2WidenLowUI32x4); + break; + case WidenHighUVecI32x4ToVecI64x2: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I64x2WidenHighUI32x4); + break; case InvalidUnary: WASM_UNREACHABLE("invalid unary op"); } @@ -1325,6 +1515,9 @@ case GeUVecI32x4: o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::I32x4GeU); break; + case EqVecI64x2: + o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::I64x2Eq); + break; case EqVecF32x4: o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F32x4Eq); break; @@ -1453,6 +1646,26 @@ case AvgrUVecI16x8: o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::I16x8AvgrU); break; + case Q15MulrSatSVecI16x8: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I16x8Q15MulrSatS); + break; + case ExtMulLowSVecI16x8: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I16x8ExtMulLowSI8x16); + break; + case ExtMulHighSVecI16x8: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I16x8ExtMulHighSI8x16); + break; + case ExtMulLowUVecI16x8: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I16x8ExtMulLowUI8x16); + break; + case ExtMulHighUVecI16x8: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I16x8ExtMulHighUI8x16); + break; case AddVecI32x4: o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::I32x4Add); break; @@ -1478,12 +1691,47 @@ o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::I32x4DotSVecI16x8); break; + case ExtMulLowSVecI32x4: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I32x4ExtMulLowSI16x8); + break; + case ExtMulHighSVecI32x4: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I32x4ExtMulHighSI16x8); + break; + case ExtMulLowUVecI32x4: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I32x4ExtMulLowUI16x8); + break; + case ExtMulHighUVecI32x4: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I32x4ExtMulHighUI16x8); + break; case AddVecI64x2: o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::I64x2Add); break; case SubVecI64x2: o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::I64x2Sub); break; + case MulVecI64x2: + o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::I64x2Mul); + break; + case ExtMulLowSVecI64x2: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I64x2ExtMulLowSI32x4); + break; + case ExtMulHighSVecI64x2: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I64x2ExtMulHighSI32x4); + break; + case ExtMulLowUVecI64x2: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I64x2ExtMulLowUI32x4); + break; + case ExtMulHighUVecI64x2: + o << int8_t(BinaryConsts::SIMDPrefix) + << U32LEB(BinaryConsts::I64x2ExtMulHighUI32x4); + break; case AddVecF32x4: o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F32x4Add); @@ -1503,6 +1751,12 @@ case MaxVecF32x4: o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F32x4Max); break; + case PMinVecF32x4: + o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F32x4PMin); + break; + case PMaxVecF32x4: + o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F32x4PMax); + break; case AddVecF64x2: o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F64x2Add); break; @@ -1521,6 +1775,12 @@ case MaxVecF64x2: o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F64x2Max); break; + case PMinVecF64x2: + o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F64x2PMin); + break; + case PMaxVecF64x2: + o << int8_t(BinaryConsts::SIMDPrefix) << U32LEB(BinaryConsts::F64x2PMax); + break; case NarrowSVecI16x8ToVecI8x16: o << int8_t(BinaryConsts::SIMDPrefix) @@ -1553,8 +1813,8 @@ if (curr->type.isRef()) { o << int8_t(BinaryConsts::SelectWithType) << U32LEB(curr->type.size()); for (size_t i = 0; i < curr->type.size(); i++) { - o << binaryType(curr->type != Type::unreachable ? curr->type - : Type::none); + parent.writeType(curr->type != Type::unreachable ? curr->type + : Type::none); } } else { o << int8_t(BinaryConsts::Select); @@ -1565,22 +1825,19 @@ o << int8_t(BinaryConsts::Return); } -void BinaryInstWriter::visitHost(Host* curr) { - switch (curr->op) { - case MemorySize: { - o << int8_t(BinaryConsts::MemorySize); - break; - } - case MemoryGrow: { - o << int8_t(BinaryConsts::MemoryGrow); - break; - } - } +void BinaryInstWriter::visitMemorySize(MemorySize* curr) { + o << int8_t(BinaryConsts::MemorySize); + o << U32LEB(0); // Reserved flags field +} + +void BinaryInstWriter::visitMemoryGrow(MemoryGrow* curr) { + o << int8_t(BinaryConsts::MemoryGrow); o << U32LEB(0); // Reserved flags field } void BinaryInstWriter::visitRefNull(RefNull* curr) { o << int8_t(BinaryConsts::RefNull); + parent.writeHeapType(curr->type.getHeapType()); } void BinaryInstWriter::visitRefIsNull(RefIsNull* curr) { @@ -1592,10 +1849,14 @@ << U32LEB(parent.getFunctionIndex(curr->func)); } +void BinaryInstWriter::visitRefEq(RefEq* curr) { + o << int8_t(BinaryConsts::RefEq); +} + void BinaryInstWriter::visitTry(Try* curr) { breakStack.emplace_back(IMPOSSIBLE_CONTINUE); o << int8_t(BinaryConsts::Try); - o << binaryType(curr->type != Type::unreachable ? curr->type : Type::none); + emitResultType(curr->type); } void BinaryInstWriter::emitCatch(Try* curr) { @@ -1628,24 +1889,159 @@ } void BinaryInstWriter::visitDrop(Drop* curr) { - o << int8_t(BinaryConsts::Drop); + size_t numValues = curr->value->type.size(); + for (size_t i = 0; i < numValues; i++) { + o << int8_t(BinaryConsts::Drop); + } } -void BinaryInstWriter::visitPush(Push* curr) { +void BinaryInstWriter::visitPop(Pop* curr) { // Turns into nothing in the binary format } -void BinaryInstWriter::visitPop(Pop* curr) { +void BinaryInstWriter::visitTupleMake(TupleMake* curr) { // Turns into nothing in the binary format } +void BinaryInstWriter::visitTupleExtract(TupleExtract* curr) { + size_t numVals = curr->tuple->type.size(); + // Drop all values after the one we want + for (size_t i = curr->index + 1; i < numVals; ++i) { + o << int8_t(BinaryConsts::Drop); + } + // If the extracted value is the only one left, we're done + if (curr->index == 0) { + return; + } + // Otherwise, save it to a scratch local, drop the others, then retrieve it + assert(scratchLocals.find(curr->type) != scratchLocals.end()); + auto scratch = scratchLocals[curr->type]; + o << int8_t(BinaryConsts::LocalSet) << U32LEB(scratch); + for (size_t i = 0; i < curr->index; ++i) { + o << int8_t(BinaryConsts::Drop); + } + o << int8_t(BinaryConsts::LocalGet) << U32LEB(scratch); +} + +void BinaryInstWriter::visitI31New(I31New* curr) { + o << int8_t(BinaryConsts::GCPrefix) << U32LEB(BinaryConsts::I31New); +} + +void BinaryInstWriter::visitI31Get(I31Get* curr) { + o << int8_t(BinaryConsts::GCPrefix) + << U32LEB(curr->signed_ ? BinaryConsts::I31GetS : BinaryConsts::I31GetU); +} + +void BinaryInstWriter::visitCallRef(CallRef* curr) { + o << int8_t(curr->isReturn ? BinaryConsts::RetCallRef + : BinaryConsts::CallRef); +} + +void BinaryInstWriter::visitRefTest(RefTest* curr) { + o << int8_t(BinaryConsts::GCPrefix) << U32LEB(BinaryConsts::RefTest); + parent.writeHeapType(curr->ref->type.getHeapType()); + parent.writeHeapType(curr->getCastType().getHeapType()); +} + +void BinaryInstWriter::visitRefCast(RefCast* curr) { + o << int8_t(BinaryConsts::GCPrefix) << U32LEB(BinaryConsts::RefCast); + parent.writeHeapType(curr->ref->type.getHeapType()); + parent.writeHeapType(curr->getCastType().getHeapType()); +} + +void BinaryInstWriter::visitBrOnCast(BrOnCast* curr) { + o << int8_t(BinaryConsts::GCPrefix) << U32LEB(BinaryConsts::BrOnCast) + << U32LEB(getBreakIndex(curr->name)); + parent.writeHeapType(curr->ref->type.getHeapType()); + parent.writeHeapType(curr->getCastType().getHeapType()); +} + +void BinaryInstWriter::visitRttCanon(RttCanon* curr) { + o << int8_t(BinaryConsts::GCPrefix) << U32LEB(BinaryConsts::RttCanon); + parent.writeHeapType(curr->type.getRtt().heapType); +} + +void BinaryInstWriter::visitRttSub(RttSub* curr) { + o << int8_t(BinaryConsts::GCPrefix) << U32LEB(BinaryConsts::RttSub); + // FIXME: the binary format may also have an extra heap type and index that + // are not needed + parent.writeHeapType(curr->type.getRtt().heapType); +} + +void BinaryInstWriter::visitStructNew(StructNew* curr) { + o << int8_t(BinaryConsts::GCPrefix); + if (curr->isWithDefault()) { + o << U32LEB(BinaryConsts::StructNewDefaultWithRtt); + } else { + o << U32LEB(BinaryConsts::StructNewWithRtt); + } + parent.writeHeapType(curr->rtt->type.getHeapType()); +} + +void BinaryInstWriter::visitStructGet(StructGet* curr) { + const auto& heapType = curr->ref->type.getHeapType(); + const auto& field = heapType.getStruct().fields[curr->index]; + int8_t op; + if (field.type != Type::i32 || field.packedType == Field::not_packed) { + op = BinaryConsts::StructGet; + } else if (curr->signed_) { + op = BinaryConsts::StructGetS; + } else { + op = BinaryConsts::StructGetU; + } + o << int8_t(BinaryConsts::GCPrefix) << U32LEB(op); + parent.writeHeapType(heapType); + o << U32LEB(curr->index); +} + +void BinaryInstWriter::visitStructSet(StructSet* curr) { + o << int8_t(BinaryConsts::GCPrefix) << U32LEB(BinaryConsts::StructSet); + parent.writeHeapType(curr->ref->type.getHeapType()); + o << U32LEB(curr->index); +} + +void BinaryInstWriter::visitArrayNew(ArrayNew* curr) { + o << int8_t(BinaryConsts::GCPrefix); + if (curr->isWithDefault()) { + o << U32LEB(BinaryConsts::ArrayNewDefaultWithRtt); + } else { + o << U32LEB(BinaryConsts::ArrayNewWithRtt); + } + parent.writeHeapType(curr->rtt->type.getHeapType()); +} + +void BinaryInstWriter::visitArrayGet(ArrayGet* curr) { + auto heapType = curr->ref->type.getHeapType(); + const auto& field = heapType.getArray().element; + int8_t op; + if (field.type != Type::i32 || field.packedType == Field::not_packed) { + op = BinaryConsts::ArrayGet; + } else if (curr->signed_) { + op = BinaryConsts::ArrayGetS; + } else { + op = BinaryConsts::ArrayGetU; + } + o << int8_t(BinaryConsts::GCPrefix) << U32LEB(op); + parent.writeHeapType(heapType); +} + +void BinaryInstWriter::visitArraySet(ArraySet* curr) { + o << int8_t(BinaryConsts::GCPrefix) << U32LEB(BinaryConsts::ArraySet); + parent.writeHeapType(curr->ref->type.getHeapType()); +} + +void BinaryInstWriter::visitArrayLen(ArrayLen* curr) { + o << int8_t(BinaryConsts::GCPrefix) << U32LEB(BinaryConsts::ArrayLen); + parent.writeHeapType(curr->ref->type.getHeapType()); +} + void BinaryInstWriter::emitScopeEnd(Expression* curr) { assert(!breakStack.empty()); breakStack.pop_back(); + o << int8_t(BinaryConsts::End); if (func && !sourceMap) { - parent.writeExtraDebugLocation(curr, func, BinaryLocations::End); + parent.writeDebugLocationEnd(curr, func); } - o << int8_t(BinaryConsts::End); } void BinaryInstWriter::emitFunctionEnd() { o << int8_t(BinaryConsts::End); } @@ -1656,109 +2052,87 @@ void BinaryInstWriter::mapLocalsAndEmitHeader() { assert(func && "BinaryInstWriter: function is not set"); - // Map them + // Map params for (Index i = 0; i < func->getNumParams(); i++) { - size_t curr = mappedLocals.size(); - mappedLocals[i] = curr; + mappedLocals[std::make_pair(i, 0)] = i; + } + // Normally we map all locals of the same type into a range of adjacent + // addresses, which is more compact. However, if we need to keep DWARF valid, + // do not do any reordering at all - instead, do a trivial mapping that + // keeps everything unmoved. + if (DWARF) { + FindAll extracts(func->body); + if (!extracts.list.empty()) { + Fatal() << "DWARF + multivalue is not yet complete"; + } + Index varStart = func->getVarIndexBase(); + Index varEnd = varStart + func->getNumVars(); + o << U32LEB(func->getNumVars()); + for (Index i = varStart; i < varEnd; i++) { + mappedLocals[std::make_pair(i, 0)] = i; + o << U32LEB(1); + parent.writeType(func->getLocalType(i)); + } + return; } for (auto type : func->vars) { - numLocalsByType[type]++; + for (const auto& t : type) { + numLocalsByType[t]++; + } } + countScratchLocals(); std::map currLocalsByType; for (Index i = func->getVarIndexBase(); i < func->getNumLocals(); i++) { - size_t index = func->getVarIndexBase(); - Type type = func->getLocalType(i); - // increment now for simplicity, must decrement it in returns - currLocalsByType[type]++; - if (type == Type::i32) { - mappedLocals[i] = index + currLocalsByType[Type::i32] - 1; - continue; - } - index += numLocalsByType[Type::i32]; - if (type == Type::i64) { - mappedLocals[i] = index + currLocalsByType[Type::i64] - 1; - continue; - } - index += numLocalsByType[Type::i64]; - if (type == Type::f32) { - mappedLocals[i] = index + currLocalsByType[Type::f32] - 1; - continue; - } - index += numLocalsByType[Type::f32]; - if (type == Type::f64) { - mappedLocals[i] = index + currLocalsByType[Type::f64] - 1; - continue; - } - index += numLocalsByType[Type::f64]; - if (type == Type::v128) { - mappedLocals[i] = index + currLocalsByType[Type::v128] - 1; - continue; - } - index += numLocalsByType[Type::v128]; - if (type == Type::funcref) { - mappedLocals[i] = index + currLocalsByType[Type::funcref] - 1; - continue; - } - index += numLocalsByType[Type::funcref]; - if (type == Type::anyref) { - mappedLocals[i] = index + currLocalsByType[Type::anyref] - 1; - continue; - } - index += numLocalsByType[Type::anyref]; - if (type == Type::nullref) { - mappedLocals[i] = index + currLocalsByType[Type::nullref] - 1; - continue; - } - index += numLocalsByType[Type::nullref]; - if (type == Type::exnref) { - mappedLocals[i] = index + currLocalsByType[Type::exnref] - 1; - continue; + Index j = 0; + for (const auto& type : func->getLocalType(i)) { + auto fullIndex = std::make_pair(i, j++); + Index index = func->getVarIndexBase(); + for (auto& typeCount : numLocalsByType) { + if (type == typeCount.first) { + mappedLocals[fullIndex] = index + currLocalsByType[typeCount.first]; + currLocalsByType[type]++; + break; + } + index += typeCount.second; + } } - WASM_UNREACHABLE("unexpected type"); } - // Emit them. - o << U32LEB((numLocalsByType[Type::i32] ? 1 : 0) + - (numLocalsByType[Type::i64] ? 1 : 0) + - (numLocalsByType[Type::f32] ? 1 : 0) + - (numLocalsByType[Type::f64] ? 1 : 0) + - (numLocalsByType[Type::v128] ? 1 : 0) + - (numLocalsByType[Type::funcref] ? 1 : 0) + - (numLocalsByType[Type::anyref] ? 1 : 0) + - (numLocalsByType[Type::nullref] ? 1 : 0) + - (numLocalsByType[Type::exnref] ? 1 : 0)); - if (numLocalsByType[Type::i32]) { - o << U32LEB(numLocalsByType[Type::i32]) << binaryType(Type::i32); - } - if (numLocalsByType[Type::i64]) { - o << U32LEB(numLocalsByType[Type::i64]) << binaryType(Type::i64); - } - if (numLocalsByType[Type::f32]) { - o << U32LEB(numLocalsByType[Type::f32]) << binaryType(Type::f32); - } - if (numLocalsByType[Type::f64]) { - o << U32LEB(numLocalsByType[Type::f64]) << binaryType(Type::f64); - } - if (numLocalsByType[Type::v128]) { - o << U32LEB(numLocalsByType[Type::v128]) << binaryType(Type::v128); - } - if (numLocalsByType[Type::funcref]) { - o << U32LEB(numLocalsByType[Type::funcref]) << binaryType(Type::funcref); + setScratchLocals(); + o << U32LEB(numLocalsByType.size()); + for (auto& typeCount : numLocalsByType) { + o << U32LEB(typeCount.second); + parent.writeType(typeCount.first); } - if (numLocalsByType[Type::anyref]) { - o << U32LEB(numLocalsByType[Type::anyref]) << binaryType(Type::anyref); +} + +void BinaryInstWriter::countScratchLocals() { + // Add a scratch register in `numLocalsByType` for each type of + // tuple.extract with nonzero index present. + FindAll extracts(func->body); + for (auto* extract : extracts.list) { + if (extract->type != Type::unreachable && extract->index != 0) { + scratchLocals[extract->type] = 0; + } } - if (numLocalsByType[Type::nullref]) { - o << U32LEB(numLocalsByType[Type::nullref]) << binaryType(Type::nullref); + for (auto t : scratchLocals) { + numLocalsByType[t.first]++; } - if (numLocalsByType[Type::exnref]) { - o << U32LEB(numLocalsByType[Type::exnref]) << binaryType(Type::exnref); +} + +void BinaryInstWriter::setScratchLocals() { + Index index = func->getVarIndexBase(); + for (auto& typeCount : numLocalsByType) { + index += typeCount.second; + if (scratchLocals.find(typeCount.first) != scratchLocals.end()) { + scratchLocals[typeCount.first] = index - 1; + } } } void BinaryInstWriter::emitMemoryAccess(size_t alignment, size_t bytes, uint32_t offset) { - o << U32LEB(Log2(alignment ? alignment : bytes)); + o << U32LEB(Bits::log2(alignment ? alignment : bytes)); o << U32LEB(offset); } @@ -1805,7 +2179,7 @@ StackInst* StackIRGenerator::makeStackInst(StackInst::Op op, Expression* origin) { - auto* ret = allocator.alloc(); + auto* ret = module.allocator.alloc(); ret->op = op; ret->origin = origin; auto stackType = origin->type; diff -Nru binaryen-91/src/wasm/wasm-type.cpp binaryen-99/src/wasm/wasm-type.cpp --- binaryen-91/src/wasm/wasm-type.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm/wasm-type.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -14,165 +14,457 @@ * limitations under the License. */ +#include #include #include #include #include +#include #include "compiler-support.h" #include "support/hash.h" #include "wasm-features.h" #include "wasm-type.h" -template<> class std::hash> { -public: - size_t operator()(const std::vector& types) const { - uint32_t res = wasm::rehash(0, uint32_t(types.size())); - for (auto t : types) { - res = wasm::rehash(res, t.getID()); - } - return res; - } -}; - -size_t std::hash:: -operator()(const wasm::Signature& sig) const { - return std::hash{}(uint64_t(sig.params.getID()) << 32 | - uint64_t(sig.results.getID())); -} - namespace wasm { namespace { -// TODO: switch to std::shared_mutex in C++17 -std::shared_timed_mutex mutex; +struct TypeInfo { + using type_t = Type; + enum Kind { + TupleKind, + RefKind, + RttKind, + } kind; + struct Ref { + HeapType heapType; + Nullability nullable; + }; + union { + Tuple tuple; + Ref ref; + Rtt rtt; + }; -std::vector>> typeLists = [] { - std::vector>> lists; + TypeInfo(const Tuple& tuple) : kind(TupleKind), tuple(tuple) {} + TypeInfo(Tuple&& tuple) : kind(TupleKind), tuple(std::move(tuple)) {} + TypeInfo(HeapType heapType, Nullability nullable) + : kind(RefKind), ref{heapType, nullable} {} + TypeInfo(Rtt rtt) : kind(RttKind), rtt(rtt) {} + TypeInfo(const TypeInfo& other); + ~TypeInfo(); + + constexpr bool isTuple() const { return kind == TupleKind; } + constexpr bool isRef() const { return kind == RefKind; } + constexpr bool isRtt() const { return kind == RttKind; } + + bool isNullable() const { return kind == RefKind && ref.nullable; } + + bool operator==(const TypeInfo& other) const; + bool operator!=(const TypeInfo& other) const { return !(*this == other); } + bool operator<(const TypeInfo& other) const; +}; - auto add = [&](std::initializer_list types) { - return lists.push_back(std::make_unique>(types)); +struct HeapTypeInfo { + using type_t = HeapType; + enum Kind { + SignatureKind, + StructKind, + ArrayKind, + } kind; + union { + Signature signature; + Struct struct_; + Array array; }; - add({}); - add({Type::unreachable}); - add({Type::i32}); - add({Type::i64}); - add({Type::f32}); - add({Type::f64}); - add({Type::v128}); - add({Type::funcref}); - add({Type::anyref}); - add({Type::nullref}); - add({Type::exnref}); - return lists; -}(); - -std::unordered_map, uint32_t> indices = { - {{}, Type::none}, - {{Type::unreachable}, Type::unreachable}, - {{Type::i32}, Type::i32}, - {{Type::i64}, Type::i64}, - {{Type::f32}, Type::f32}, - {{Type::f64}, Type::f64}, - {{Type::v128}, Type::v128}, - {{Type::funcref}, Type::funcref}, - {{Type::anyref}, Type::anyref}, - {{Type::nullref}, Type::nullref}, - {{Type::exnref}, Type::exnref}, + HeapTypeInfo(Signature sig) : kind(SignatureKind), signature(sig) {} + HeapTypeInfo(const Struct& struct_) : kind(StructKind), struct_(struct_) {} + HeapTypeInfo(Struct&& struct_) + : kind(StructKind), struct_(std::move(struct_)) {} + HeapTypeInfo(Array array) : kind(ArrayKind), array(array) {} + HeapTypeInfo(const HeapTypeInfo& other); + ~HeapTypeInfo(); + + constexpr bool isSignature() const { return kind == SignatureKind; } + constexpr bool isStruct() const { return kind == StructKind; } + constexpr bool isArray() const { return kind == ArrayKind; } + + HeapTypeInfo& operator=(const HeapTypeInfo& other); + bool operator==(const HeapTypeInfo& other) const; + bool operator!=(const HeapTypeInfo& other) const { return !(*this == other); } + bool operator<(const HeapTypeInfo& other) const; }; } // anonymous namespace +} // namespace wasm -void Type::init(const std::vector& types) { -#ifndef NDEBUG - for (Type t : types) { - assert(t.isSingle() && t.isConcrete()); - } -#endif - - auto lookup = [&]() { - auto indexIt = indices.find(types); - if (indexIt != indices.end()) { - id = indexIt->second; - return true; - } else { - return false; - } - }; +namespace std { + +template<> class hash { +public: + size_t operator()(const wasm::TypeInfo&) const; +}; + +template<> class hash { +public: + size_t operator()(const wasm::HeapTypeInfo&) const; +}; + +} // namespace std + +namespace wasm { +namespace { + +TypeInfo* getTypeInfo(Type type) { + assert(type.isCompound()); + return (TypeInfo*)type.getID(); +} - { - // Try to look up previously interned type - std::shared_lock lock(mutex); - if (lookup()) { +HeapTypeInfo* getHeapTypeInfo(HeapType ht) { + assert(ht.isCompound()); + return (HeapTypeInfo*)ht.getID(); +} + +TypeInfo::TypeInfo(const TypeInfo& other) { + kind = other.kind; + switch (kind) { + case TupleKind: + new (&tuple) auto(other.tuple); + return; + case RefKind: + new (&ref) auto(other.ref); + return; + case RttKind: + new (&rtt) auto(other.rtt); return; - } } - { - // Add a new type if it hasn't been added concurrently - std::lock_guard lock(mutex); - if (lookup()) { + WASM_UNREACHABLE("unexpected kind"); +} + +TypeInfo::~TypeInfo() { + switch (kind) { + case TupleKind: + tuple.~Tuple(); return; + case RefKind: + ref.~Ref(); + return; + case RttKind: + rtt.~Rtt(); + return; + } + WASM_UNREACHABLE("unexpected kind"); +} + +bool TypeInfo::operator==(const TypeInfo& other) const { + if (kind != other.kind) { + return false; + } + switch (kind) { + case TupleKind: + return tuple == other.tuple; + case RefKind: + return ref.heapType == other.ref.heapType && + ref.nullable == other.ref.nullable; + case RttKind: + return rtt == other.rtt; + } + WASM_UNREACHABLE("unexpected kind"); +} + +bool TypeInfo::operator<(const TypeInfo& other) const { + if (kind != other.kind) { + return kind < other.kind; + } + switch (kind) { + case TupleKind: + return tuple < other.tuple; + case RefKind: + if (ref.nullable != other.ref.nullable) { + return ref.nullable < other.ref.nullable; + } + return ref.heapType < other.ref.heapType; + case RttKind: + return rtt < other.rtt; + } + WASM_UNREACHABLE("unexpected kind"); +} + +HeapTypeInfo::HeapTypeInfo(const HeapTypeInfo& other) { + kind = other.kind; + switch (kind) { + case SignatureKind: + new (&signature) auto(other.signature); + return; + case StructKind: + new (&struct_) auto(other.struct_); + return; + case ArrayKind: + new (&array) auto(other.array); + return; + } + WASM_UNREACHABLE("unexpected kind"); +} + +HeapTypeInfo::~HeapTypeInfo() { + switch (kind) { + case SignatureKind: + signature.~Signature(); + return; + case StructKind: + struct_.~Struct(); + return; + case ArrayKind: + array.~Array(); + return; + } + WASM_UNREACHABLE("unexpected kind"); +} + +HeapTypeInfo& HeapTypeInfo::operator=(const HeapTypeInfo& other) { + if (&other != this) { + this->~HeapTypeInfo(); + new (this) HeapTypeInfo(other); + } + return *this; +} + +bool HeapTypeInfo::operator==(const HeapTypeInfo& other) const { + if (kind != other.kind) { + return false; + } + switch (kind) { + case SignatureKind: + return signature == other.signature; + case StructKind: + return struct_ == other.struct_; + case ArrayKind: + return array == other.array; + } + WASM_UNREACHABLE("unexpected kind"); +} + +bool HeapTypeInfo::operator<(const HeapTypeInfo& other) const { + if (kind != other.kind) { + return kind < other.kind; + } + switch (kind) { + case SignatureKind: + return signature < other.signature; + case StructKind: + return struct_ < other.struct_; + case ArrayKind: + return array < other.array; + } + WASM_UNREACHABLE("unexpected kind"); +} + +template struct Store { + std::mutex mutex; + + // Track unique_ptrs for constructed types to avoid leaks. + std::vector> constructedTypes; + + // Maps from constructed types to their canonical Type IDs. + std::unordered_map typeIDs; + + typename Info::type_t canonicalize(const Info& info) { + std::lock_guard lock(mutex); + auto indexIt = typeIDs.find(info); + if (indexIt != typeIDs.end()) { + return typename Info::type_t(indexIt->second); + } + auto ptr = std::make_unique(info); + auto id = uintptr_t(ptr.get()); + constructedTypes.push_back(std::move(ptr)); + assert(id > Info::type_t::_last_basic_type); + typeIDs[info] = id; + return typename Info::type_t(id); + } +}; + +struct TypeStore : Store { + Type canonicalize(TypeInfo info) { + if (info.isTuple()) { + if (info.tuple.types.size() == 0) { + return Type::none; + } + if (info.tuple.types.size() == 1) { + return info.tuple.types[0]; + } + } + if (info.isRef() && info.ref.heapType.isBasic()) { + if (info.ref.nullable) { + switch (info.ref.heapType.getBasic()) { + case HeapType::func: + return Type::funcref; + case HeapType::ext: + return Type::externref; + case HeapType::exn: + return Type::exnref; + case HeapType::any: + return Type::anyref; + case HeapType::eq: + return Type::eqref; + case HeapType::i31: + break; + } + } else { + if (info.ref.heapType == HeapType::i31) { + return Type::i31ref; + } + } } - id = typeLists.size(); - typeLists.push_back(std::make_unique>(types)); - indices[types] = id; + return Store::canonicalize(info); } +}; + +using HeapTypeStore = Store; + +TypeStore globalTypeStore; +HeapTypeStore globalHeapTypeStore; + +// Specialized to simplify programming generically over Types and HeapTypes. +template struct MetaTypeInfo {}; + +template<> struct MetaTypeInfo { + constexpr static TypeStore& globalStore = globalTypeStore; + static TypeInfo* getInfo(Type type) { return getTypeInfo(type); } +}; + +template<> struct MetaTypeInfo { + constexpr static HeapTypeStore& globalStore = globalHeapTypeStore; + static HeapTypeInfo* getInfo(HeapType ht) { return getHeapTypeInfo(ht); } +}; + +} // anonymous namespace + +Type::Type(std::initializer_list types) : Type(Tuple(types)) {} + +Type::Type(const Tuple& tuple) { + new (this) Type(globalTypeStore.canonicalize(tuple)); } -Type::Type(std::initializer_list types) { init(types); } +Type::Type(Tuple&& tuple) { + new (this) Type(globalTypeStore.canonicalize(std::move(tuple))); +} -Type::Type(const std::vector& types) { init(types); } +Type::Type(HeapType heapType, Nullability nullable) { + new (this) Type(globalTypeStore.canonicalize(TypeInfo(heapType, nullable))); +} -size_t Type::size() const { return expand().size(); } +Type::Type(Rtt rtt) { new (this) Type(globalTypeStore.canonicalize(rtt)); } -const std::vector& Type::expand() const { - std::shared_lock lock(mutex); - assert(id < typeLists.size()); - return *typeLists[id].get(); +bool Type::isTuple() const { + if (isBasic()) { + return false; + } else { + return getTypeInfo(*this)->isTuple(); + } } -bool Type::operator<(const Type& other) const { - const std::vector& these = expand(); - const std::vector& others = other.expand(); - return std::lexicographical_compare( - these.begin(), - these.end(), - others.begin(), - others.end(), - [](const Type& a, const Type& b) { return a.getSingle() < b.getSingle(); }); +bool Type::isRef() const { + if (isBasic()) { + return id >= funcref && id <= i31ref; + } else { + return getTypeInfo(*this)->isRef(); + } +} + +bool Type::isFunction() const { + if (isBasic()) { + return id == funcref; + } else { + auto* info = getTypeInfo(*this); + return info->isRef() && info->ref.heapType.isFunction(); + } +} + +bool Type::isException() const { + if (isBasic()) { + return id == exnref; + } else { + auto* info = getTypeInfo(*this); + return info->isRef() && info->ref.heapType == HeapType::exn; + } +} + +bool Type::isNullable() const { + if (isBasic()) { + return id >= funcref && id <= eqref; // except i31ref + } else { + return getTypeInfo(*this)->isNullable(); + } +} + +bool Type::isRtt() const { + if (isBasic()) { + return false; + } else { + return getTypeInfo(*this)->isRtt(); + } } +bool Type::isStruct() const { return isRef() && getHeapType().isStruct(); } + +bool Type::isArray() const { return isRef() && getHeapType().isArray(); } + +bool Type::operator<(const Type& other) const { + if (*this == other) { + return false; + } + if (isBasic() && other.isBasic()) { + return getBasic() < other.getBasic(); + } + if (isBasic()) { + return true; + } + if (other.isBasic()) { + return false; + } + return *getTypeInfo(*this) < *getTypeInfo(other); +}; + unsigned Type::getByteSize() const { - assert(isSingle() && "getByteSize does not works with single types"); - Type singleType = *expand().begin(); - switch (singleType.getSingle()) { - case Type::i32: - return 4; - case Type::i64: - return 8; - case Type::f32: - return 4; - case Type::f64: - return 8; - case Type::v128: - return 16; - case Type::funcref: - case Type::anyref: - case Type::nullref: - case Type::exnref: - case Type::none: - case Type::unreachable: - WASM_UNREACHABLE("invalid type"); + // TODO: alignment? + auto getSingleByteSize = [](Type t) { + switch (t.getBasic()) { + case Type::i32: + case Type::f32: + return 4; + case Type::i64: + case Type::f64: + return 8; + case Type::v128: + return 16; + case Type::funcref: + case Type::externref: + case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: + case Type::none: + case Type::unreachable: + break; + } + WASM_UNREACHABLE("invalid type"); + }; + + if (isTuple()) { + unsigned size = 0; + for (const auto& t : *this) { + size += getSingleByteSize(t); + } + return size; } - WASM_UNREACHABLE("invalid type"); + return getSingleByteSize(*this); } Type Type::reinterpret() const { - assert(isSingle() && "reinterpretType only works with single types"); - Type singleType = *expand().begin(); - switch (singleType.getSingle()) { + assert(!isTuple() && "Unexpected tuple type"); + switch ((*begin()).getBasic()) { case Type::i32: return f32; case Type::i64: @@ -181,36 +473,101 @@ return i32; case Type::f64: return i64; - case Type::v128: - case Type::funcref: - case Type::anyref: - case Type::nullref: - case Type::exnref: - case Type::none: - case Type::unreachable: + default: WASM_UNREACHABLE("invalid type"); } - WASM_UNREACHABLE("invalid type"); } FeatureSet Type::getFeatures() const { - FeatureSet feats = FeatureSet::MVP; - for (Type t : expand()) { - switch (t.getSingle()) { + auto getSingleFeatures = [](Type t) -> FeatureSet { + if (t.isRef()) { + // A reference type implies we need that feature. Some also require more, + // such as GC or exceptions. + auto heapType = t.getHeapType(); + if (heapType.isStruct() || heapType.isArray()) { + return FeatureSet::ReferenceTypes | FeatureSet::GC; + } + if (heapType.isBasic()) { + switch (heapType.getBasic()) { + case HeapType::BasicHeapType::exn: + return FeatureSet::ReferenceTypes | FeatureSet::ExceptionHandling; + case HeapType::BasicHeapType::any: + case HeapType::BasicHeapType::eq: + case HeapType::BasicHeapType::i31: + return FeatureSet::ReferenceTypes | FeatureSet::GC; + default: {} + } + } + // Note: Technically typed function references also require the typed + // function references feature, however, we use these types internally + // regardless of the presence of features (in particular, since during + // load of the wasm we don't know the features yet, so we apply the more + // refined types), so we don't add that in any case here. + return FeatureSet::ReferenceTypes; + } else if (t.isRtt()) { + return FeatureSet::ReferenceTypes | FeatureSet::GC; + } + TODO_SINGLE_COMPOUND(t); + switch (t.getBasic()) { + case Type::v128: + return FeatureSet::SIMD; + default: + return FeatureSet::MVP; + } + }; + + if (isTuple()) { + FeatureSet feats = FeatureSet::Multivalue; + for (const auto& t : *this) { + feats |= getSingleFeatures(t); + } + return feats; + } + return getSingleFeatures(*this); +} + +HeapType Type::getHeapType() const { + if (isBasic()) { + switch (getBasic()) { + case Type::none: + case Type::unreachable: + case Type::i32: + case Type::i64: + case Type::f32: + case Type::f64: case Type::v128: - feats |= FeatureSet::SIMD; - break; - case Type::anyref: - feats |= FeatureSet::ReferenceTypes; break; + case Type::funcref: + return HeapType::func; + case Type::externref: + return HeapType::ext; case Type::exnref: - feats |= FeatureSet::ExceptionHandling; - break; - default: + return HeapType::exn; + case Type::anyref: + return HeapType::any; + case Type::eqref: + return HeapType::eq; + case Type::i31ref: + return HeapType::i31; + } + WASM_UNREACHABLE("Unexpected type"); + } else { + auto* info = getTypeInfo(*this); + switch (info->kind) { + case TypeInfo::TupleKind: break; + case TypeInfo::RefKind: + return info->ref.heapType; + case TypeInfo::RttKind: + return info->rtt.heapType; } + WASM_UNREACHABLE("Unexpected type"); } - return feats; +} + +Rtt Type::getRtt() const { + assert(isRtt()); + return getTypeInfo(*this)->rtt; } Type Type::get(unsigned byteSize, bool float_) { @@ -229,18 +586,61 @@ WASM_UNREACHABLE("invalid size"); } -bool Type::Type::isSubType(Type left, Type right) { +bool Type::isSubType(Type left, Type right) { if (left == right) { return true; } - if (left.isRef() && right.isRef() && - (right == Type::anyref || left == Type::nullref)) { + if (left.isRef() && right.isRef()) { + // Everything is a subtype of anyref. + if (right == Type::anyref) { + return true; + } + // Various things are subtypes of eqref. + auto leftHeap = left.getHeapType(); + auto rightHeap = right.getHeapType(); + if ((leftHeap == HeapType::i31 || leftHeap.isArray() || + leftHeap.isStruct()) && + rightHeap == HeapType::eq && + (!left.isNullable() || right.isNullable())) { + return true; + } + // All typed function signatures are subtypes of funcref. + if (leftHeap.isSignature() && rightHeap == HeapType::func && + (!left.isNullable() || right.isNullable())) { + return true; + } + // A non-nullable type is a supertype of a nullable one + if (leftHeap == rightHeap && !left.isNullable()) { + // The only difference is the nullability. + assert(right.isNullable()); + return true; + } + return false; + } + if (left.isTuple() && right.isTuple()) { + if (left.size() != right.size()) { + return false; + } + for (size_t i = 0; i < left.size(); ++i) { + if (!isSubType(left[i], right[i])) { + return false; + } + } return true; } + if (left.isRtt() && right.isRtt()) { + auto leftRtt = left.getRtt(); + auto rightRtt = right.getRtt(); + // (rtt n $x) is a subtype of (rtt $x), that is, if the only difference in + // information is that the left side specifies a depth while the right side + // allows any depth. + return leftRtt.heapType == rightRtt.heapType && leftRtt.hasDepth() && + !rightRtt.hasDepth(); + } return false; } -Type Type::Type::getLeastUpperBound(Type a, Type b) { +Type Type::getLeastUpperBound(Type a, Type b) { if (a == b) { return a; } @@ -250,16 +650,171 @@ if (b == Type::unreachable) { return a; } - if (!a.isRef() || !b.isRef()) { - return none; // a poison value that must not be consumed + if (a.size() != b.size()) { + return Type::none; // a poison value that must not be consumed } - if (a == Type::nullref) { - return b; + if (a.isRef()) { + if (b.isRef()) { + if (a.isFunction() && b.isFunction()) { + return Type::funcref; + } + if ((a == Type::i31ref && b == Type::eqref) || + (a == Type::eqref && b == Type::i31ref)) { + return Type::eqref; + } + // The LUB of two different reference types is anyref, which may or may + // not be a valid type depending on whether the anyref feature is enabled. + // When anyref is disabled, it is possible for the finalization of invalid + // code to introduce a use of anyref via this function, but that is not a + // problem because it will be caught and rejected by validation. + return Type::anyref; + } + return Type::none; } - if (b == Type::nullref) { - return a; + if (a.isTuple()) { + TypeList types; + types.resize(a.size()); + for (size_t i = 0; i < types.size(); ++i) { + types[i] = getLeastUpperBound(a[i], b[i]); + if (types[i] == Type::none) { + return Type::none; + } + } + return Type(types); } - return Type::anyref; + return Type::none; +} + +Type::Iterator Type::end() const { + if (isTuple()) { + return Iterator(this, getTypeInfo(*this)->tuple.types.size()); + } else { + // TODO: unreachable is special and expands to {unreachable} currently. + // see also: https://github.com/WebAssembly/binaryen/issues/3062 + return Iterator(this, size_t(id != Type::none)); + } +} + +const Type& Type::Iterator::operator*() const { + if (parent->isTuple()) { + return getTypeInfo(*parent)->tuple.types[index]; + } else { + // TODO: see comment in Type::end() + assert(index == 0 && parent->id != Type::none && "Index out of bounds"); + return *parent; + } +} + +const Type& Type::operator[](size_t index) const { + if (isTuple()) { + return getTypeInfo(*this)->tuple.types[index]; + } else { + assert(index == 0 && "Index out of bounds"); + return *begin(); + } +} + +HeapType::HeapType(Signature signature) { + new (this) HeapType(globalHeapTypeStore.canonicalize(signature)); +} + +HeapType::HeapType(const Struct& struct_) { + new (this) HeapType(globalHeapTypeStore.canonicalize(struct_)); +} + +HeapType::HeapType(Struct&& struct_) { + new (this) HeapType(globalHeapTypeStore.canonicalize(std::move(struct_))); +} + +HeapType::HeapType(Array array) { + new (this) HeapType(globalHeapTypeStore.canonicalize(array)); +} + +bool HeapType::isFunction() const { + if (isBasic()) { + return id == func; + } else { + return getHeapTypeInfo(*this)->isSignature(); + } +} + +bool HeapType::isSignature() const { + if (isBasic()) { + return false; + } else { + return getHeapTypeInfo(*this)->isSignature(); + } +} + +bool HeapType::isStruct() const { + if (isBasic()) { + return false; + } else { + return getHeapTypeInfo(*this)->isStruct(); + } +} + +bool HeapType::operator<(const HeapType& other) const { + if (*this == other) { + return false; + } + if (isBasic() && other.isBasic()) { + return getBasic() < other.getBasic(); + } + if (isBasic()) { + return true; + } + if (other.isBasic()) { + return false; + } + return *getHeapTypeInfo(*this) < *getHeapTypeInfo(other); +} + +bool HeapType::isArray() const { + if (isBasic()) { + return false; + } else { + return getHeapTypeInfo(*this)->isArray(); + } +} + +Signature HeapType::getSignature() const { + assert(isSignature()); + return getHeapTypeInfo(*this)->signature; +} + +const Struct& HeapType::getStruct() const { + assert(isStruct()); + return getHeapTypeInfo(*this)->struct_; +} + +Array HeapType::getArray() const { + assert(isArray()); + return getHeapTypeInfo(*this)->array; +} + +bool Signature::operator<(const Signature& other) const { + if (results != other.results) { + return results < other.results; + } + return params < other.params; +} + +bool Field::operator<(const Field& other) const { + if (mutable_ != other.mutable_) { + return mutable_ < other.mutable_; + } + if (type == Type::i32 && other.type == Type::i32) { + return packedType < other.packedType; + } + return type < other.type; +} + +bool Rtt::operator<(const Rtt& other) const { + if (depth != other.depth) { + return depth < other.depth; + } + return heapType < other.heapType; } namespace { @@ -267,7 +822,7 @@ std::ostream& printPrefixedTypes(std::ostream& os, const char* prefix, Type type) { os << '(' << prefix; - for (auto t : type.expand()) { + for (const auto& t : type) { os << " " << t; } os << ')'; @@ -288,65 +843,53 @@ std::string ResultType::toString() const { return genericToString(*this); } -bool Signature::operator<(const Signature& other) const { - if (results < other.results) { - return true; - } else if (other.results < results) { - return false; - } else { - return params < other.params; - } -} +std::string Tuple::toString() const { return genericToString(*this); } + +std::string Signature::toString() const { return genericToString(*this); } + +std::string Struct::toString() const { return genericToString(*this); } + +std::string Array::toString() const { return genericToString(*this); } + +std::string HeapType::toString() const { return genericToString(*this); } + +std::string Rtt::toString() const { return genericToString(*this); } + +std::ostream& operator<<(std::ostream&, TypeInfo); +std::ostream& operator<<(std::ostream&, HeapTypeInfo); std::ostream& operator<<(std::ostream& os, Type type) { - if (type.isMulti()) { - os << '('; - const std::vector& types = type.expand(); - for (size_t i = 0; i < types.size(); ++i) { - os << types[i]; - if (i < types.size() - 1) { - os << ", "; - } - } - os << ')'; - } else { - switch (type.getSingle()) { + if (type.isBasic()) { + switch (type.getBasic()) { case Type::none: - os << "none"; - break; + return os << "none"; case Type::unreachable: - os << "unreachable"; - break; + return os << "unreachable"; case Type::i32: - os << "i32"; - break; + return os << "i32"; case Type::i64: - os << "i64"; - break; + return os << "i64"; case Type::f32: - os << "f32"; - break; + return os << "f32"; case Type::f64: - os << "f64"; - break; + return os << "f64"; case Type::v128: - os << "v128"; - break; + return os << "v128"; case Type::funcref: - os << "funcref"; - break; - case Type::anyref: - os << "anyref"; - break; - case Type::nullref: - os << "nullref"; - break; + return os << "funcref"; + case Type::externref: + return os << "externref"; case Type::exnref: - os << "exnref"; - break; + return os << "exnref"; + case Type::anyref: + return os << "anyref"; + case Type::eqref: + return os << "eqref"; + case Type::i31ref: + return os << "i31ref"; } } - return os; + return os << *getTypeInfo(type); } std::ostream& operator<<(std::ostream& os, ParamType param) { @@ -357,8 +900,496 @@ return printPrefixedTypes(os, "result", param.type); } +std::ostream& operator<<(std::ostream& os, Tuple tuple) { + auto& types = tuple.types; + auto size = types.size(); + os << "("; + if (size) { + os << types[0]; + for (size_t i = 1; i < size; ++i) { + os << " " << types[i]; + } + } + return os << ")"; +} + std::ostream& operator<<(std::ostream& os, Signature sig) { - return os << "Signature(" << sig.params << " => " << sig.results << ")"; + os << "(func"; + if (sig.params.getID() != Type::none) { + os << " "; + printPrefixedTypes(os, "param", sig.params); + } + if (sig.results.getID() != Type::none) { + os << " "; + printPrefixedTypes(os, "result", sig.results); + } + return os << ")"; +} + +std::ostream& operator<<(std::ostream& os, Field field) { + if (field.mutable_) { + os << "(mut "; + } + if (field.isPacked()) { + auto packedType = field.packedType; + if (packedType == Field::PackedType::i8) { + os << "i8"; + } else if (packedType == Field::PackedType::i16) { + os << "i16"; + } else { + WASM_UNREACHABLE("unexpected packed type"); + } + } else { + os << field.type; + } + if (field.mutable_) { + os << ")"; + } + return os; +}; + +std::ostream& operator<<(std::ostream& os, Struct struct_) { + os << "(struct"; + if (struct_.fields.size()) { + os << " (field"; + for (auto f : struct_.fields) { + os << " " << f; + } + os << ")"; + } + return os << ")"; +} + +std::ostream& operator<<(std::ostream& os, Array array) { + return os << "(array " << array.element << ")"; +} + +std::ostream& operator<<(std::ostream& os, HeapType heapType) { + if (heapType.isBasic()) { + switch (heapType.getBasic()) { + case HeapType::func: + return os << "func"; + case HeapType::ext: + return os << "extern"; + case HeapType::exn: + return os << "exn"; + case HeapType::any: + return os << "any"; + case HeapType::eq: + return os << "eq"; + case HeapType::i31: + return os << "i31"; + } + } + return os << *getHeapTypeInfo(heapType); +} + +std::ostream& operator<<(std::ostream& os, Rtt rtt) { + return os << "(rtt " << rtt.depth << " " << rtt.heapType << ")"; +} + +std::ostream& operator<<(std::ostream& os, TypeInfo info) { + switch (info.kind) { + case TypeInfo::TupleKind: { + return os << info.tuple; + } + case TypeInfo::RefKind: { + os << "(ref "; + if (info.ref.nullable) { + os << "null "; + } + return os << info.ref.heapType << ")"; + } + case TypeInfo::RttKind: { + return os << info.rtt; + } + } + WASM_UNREACHABLE("unexpected kind"); +} + +std::ostream& operator<<(std::ostream& os, HeapTypeInfo info) { + switch (info.kind) { + case HeapTypeInfo::SignatureKind: + return os << info.signature; + case HeapTypeInfo::StructKind: + return os << info.struct_; + case HeapTypeInfo::ArrayKind: + return os << info.array; + } + WASM_UNREACHABLE("unexpected kind"); +} + +struct TypeBuilder::Impl { + TypeStore typeStore; + HeapTypeStore heapTypeStore; + + struct Entry { + // HeapTypeInfo has no default constructor, so pick an arbitrary default. + HeapTypeInfo info = Signature(); + bool initialized = false; + void set(HeapTypeInfo&& hti) { + info = hti; + initialized = true; + } + HeapType get() { return HeapType(TypeID(&info)); } + }; + + std::vector entries; +}; + +TypeBuilder::TypeBuilder(size_t n) { + impl = std::make_unique(); + impl->entries.resize(n); +} + +TypeBuilder::~TypeBuilder() = default; + +void TypeBuilder::setHeapType(size_t i, Signature signature) { + assert(i < impl->entries.size() && "Index out of bounds"); + impl->entries[i].set(signature); +} + +void TypeBuilder::setHeapType(size_t i, const Struct& struct_) { + assert(i < impl->entries.size() && "index out of bounds"); + impl->entries[i].set(struct_); +} + +void TypeBuilder::setHeapType(size_t i, Struct&& struct_) { + assert(i < impl->entries.size() && "index out of bounds"); + impl->entries[i].set(std::move(struct_)); +} + +void TypeBuilder::setHeapType(size_t i, Array array) { + assert(i < impl->entries.size() && "index out of bounds"); + impl->entries[i].set(array); +} + +Type TypeBuilder::getTempTupleType(const Tuple& tuple) { + return impl->typeStore.canonicalize(tuple); +} + +Type TypeBuilder::getTempRefType(size_t i, Nullability nullable) { + assert(i < impl->entries.size() && "Index out of bounds"); + return impl->typeStore.canonicalize( + TypeInfo(impl->entries[i].get(), nullable)); +} + +Type TypeBuilder::getTempRttType(size_t i, uint32_t depth) { + assert(i < impl->entries.size() && "Index out of bounds"); + return impl->typeStore.canonicalize(Rtt(depth, impl->entries[i].get())); +} + +namespace { + +// Implements the algorithm to canonicalize the HeapTypes in a TypeBuilder, +// replacing and deduplicating the temporary type and heaptypes backed by +// storage owned by the TypeBuilder into normal types and heap types backed by +// the global stores. +struct Canonicalizer { + TypeBuilder& builder; + + struct Item { + enum Kind { + TypeKind, + HeapTypeKind, + } kind; + union { + Type* type; + HeapType* heapType; + }; + Item(Type* type) : kind(TypeKind), type(type) {} + Item(HeapType* heapType) : kind(HeapTypeKind), heapType(heapType) {} + }; + + // IDs of scanned Types and HeapTypes, used to prevent repeated scanning. + std::unordered_set scanned; + + // The work list of Types and HeapTypes remaining to be scanned. + std::vector scanList; + + // The list of Types and HeapTypes to visit constructed in forward preorder + // and eventually traversed in reverse to give a reverse postorder. + std::vector visitList; + + // Maps Type and HeapType IDs to the IDs of Types and HeapTypes they can + // reach in the type graph. Only considers compound Types and HeapTypes. + std::unordered_map> reaches; + + // Maps Types and HeapTypes backed by the TypeBuilder's Stores to globally + // canonical Types and HeapTypes. + std::unordered_map canonicalTypes; + std::unordered_map canonicalHeapTypes; + + // The fully canonicalized heap types. + std::vector results; + + Canonicalizer(TypeBuilder& builder); + template void noteChild(T1 parent, T2* child); + void scanHeapType(HeapType* ht); + void scanType(Type* child); + void makeReachabilityFixedPoint(); + + // Replaces the pointee Type or HeapType of `type` with its globally canonical + // equivalent, recording the substitution for future use in either + // `canonicalTypes` or `canonicalHeapTypes`. + template + void canonicalize(T* type, std::unordered_map& canonicals); +}; + +// Traverse the type graph rooted at the initialized HeapTypeInfos in reverse +// postorder, replacing in place all Types and HeapTypes backed by the +// TypeBuilder's Stores with equivalent globally canonicalized Types and +// HeapTypes. +Canonicalizer::Canonicalizer(TypeBuilder& builder) : builder(builder) { + // Initialize `results` to hold all the temporary HeapTypes. Since we are + // canonicalizing all Types and HeapTypes in place, this will end up holding + // all the canonicalized HeapTypes instead. Also seed the scan list with these + // HeapTypes. + results.reserve(builder.impl->entries.size()); + for (auto& entry : builder.impl->entries) { + assert(entry.initialized && "Cannot access uninitialized HeapType"); + results.push_back(entry.get()); + scanList.push_back(&results.back()); + } + + // Traverse the type graph reachable from the heap types, calculating + // reachability and collecting a list of types and heap types that need to be + // canonicalized. We must scan in depth-first order so that we can do a + // postorder traversal later. + while (scanList.size() != 0) { + auto item = scanList.back(); + scanList.pop_back(); + switch (item.kind) { + case Item::TypeKind: + scanType(item.type); + break; + case Item::HeapTypeKind: + scanHeapType(item.heapType); + break; + } + } + + // Check for recursive types and heap types. TODO: pre-canonicalize these into + // their minimal finite representations. + makeReachabilityFixedPoint(); + for (auto& reach : reaches) { + if (reach.second.count(reach.first) != 0) { + WASM_UNREACHABLE("TODO: support recursive types"); + } + } + + // Visit the types and heap types in reverse postorder, replacing them with + // their canonicalized versions. + for (auto it = visitList.rbegin(); it != visitList.rend(); ++it) { + switch (it->kind) { + case Item::TypeKind: + canonicalize(it->type, canonicalTypes); + break; + case Item::HeapTypeKind: + canonicalize(it->heapType, canonicalHeapTypes); + break; + } + } +} + +template +void Canonicalizer::noteChild(T1 parent, T2* child) { + if (child->isCompound()) { + reaches[parent.getID()].insert(child->getID()); + scanList.push_back(child); + } +} + +void Canonicalizer::scanHeapType(HeapType* ht) { + assert(ht->isCompound()); + visitList.push_back(ht); + if (scanned.count(ht->getID())) { + return; + } + scanned.insert(ht->getID()); + + auto* info = getHeapTypeInfo(*ht); + switch (info->kind) { + case HeapTypeInfo::SignatureKind: + noteChild(*ht, &info->signature.params); + noteChild(*ht, &info->signature.results); + break; + case HeapTypeInfo::StructKind: + for (auto& field : info->struct_.fields) { + noteChild(*ht, &field.type); + } + break; + case HeapTypeInfo::ArrayKind: + noteChild(*ht, &info->array.element.type); + break; + } +}; + +void Canonicalizer::scanType(Type* type) { + assert(type->isCompound()); + visitList.push_back(type); + if (scanned.count(type->getID())) { + return; + } + scanned.insert(type->getID()); + + auto* info = getTypeInfo(*type); + switch (info->kind) { + case TypeInfo::TupleKind: + for (auto& child : info->tuple.types) { + noteChild(*type, &child); + } + break; + case TypeInfo::RefKind: + noteChild(*type, &info->ref.heapType); + break; + case TypeInfo::RttKind: + noteChild(*type, &info->rtt.heapType); + break; + } +} + +void Canonicalizer::makeReachabilityFixedPoint() { + // Naively calculate the transitive closure of the reachability graph. + bool changed; + do { + changed = false; + for (auto& entry : reaches) { + auto& reachable = entry.second; + std::unordered_set nextReachable; + for (auto& other : reachable) { + auto& otherReaches = reaches[other]; + nextReachable.insert(otherReaches.begin(), otherReaches.end()); + } + size_t oldSize = reachable.size(); + reachable.insert(nextReachable.begin(), nextReachable.end()); + if (reachable.size() != oldSize) { + changed = true; + } + } + } while (changed); +} + +template +void Canonicalizer::canonicalize(T* type, + std::unordered_map& canonicals) { + auto it = canonicals.find(*type); + if (it != canonicals.end()) { + *type = it->second; + } else { + // Get the globally canonicalized version of the type + auto* info = MetaTypeInfo::getInfo(*type); + T canonical = MetaTypeInfo::globalStore.canonicalize(*info); + canonicals.insert({*type, canonical}); + *type = canonical; + } +} + +} // anonymous namespace + +std::vector TypeBuilder::build() { + return Canonicalizer(*this).results; } } // namespace wasm + +namespace std { + +template<> class hash { +public: + size_t operator()(const wasm::TypeList& types) const { + auto digest = wasm::hash(types.size()); + for (auto type : types) { + wasm::rehash(digest, type); + } + return digest; + } +}; + +template<> class hash { +public: + size_t operator()(const wasm::FieldList& fields) const { + auto digest = wasm::hash(fields.size()); + for (auto field : fields) { + wasm::rehash(digest, field); + } + return digest; + } +}; + +size_t hash::operator()(const wasm::TypeInfo& info) const { + auto digest = wasm::hash(info.kind); + switch (info.kind) { + case wasm::TypeInfo::TupleKind: + wasm::rehash(digest, info.tuple); + return digest; + case wasm::TypeInfo::RefKind: + wasm::rehash(digest, info.ref.heapType); + wasm::rehash(digest, info.ref.nullable); + return digest; + case wasm::TypeInfo::RttKind: + wasm::rehash(digest, info.rtt); + return digest; + } + WASM_UNREACHABLE("unexpected kind"); +} + +size_t hash:: +operator()(const wasm::HeapTypeInfo& info) const { + auto digest = wasm::hash(info.kind); + switch (info.kind) { + case wasm::HeapTypeInfo::SignatureKind: + wasm::rehash(digest, info.signature); + return digest; + case wasm::HeapTypeInfo::StructKind: + wasm::rehash(digest, info.struct_); + return digest; + case wasm::HeapTypeInfo::ArrayKind: + wasm::rehash(digest, info.array); + return digest; + } + WASM_UNREACHABLE("unexpected kind"); +} + +size_t hash::operator()(const wasm::Type& type) const { + return wasm::hash(type.getID()); +} + +size_t hash::operator()(const wasm::Tuple& tuple) const { + return wasm::hash(tuple.types); +} + +size_t hash::operator()(const wasm::Signature& sig) const { + auto digest = wasm::hash(sig.params); + wasm::rehash(digest, sig.results); + return digest; +} + +size_t hash::operator()(const wasm::Field& field) const { + auto digest = wasm::hash(field.type); + wasm::rehash(digest, field.packedType); + wasm::rehash(digest, field.mutable_); + // Note that the name is not hashed here - it is pure metadata for printing + // purposes only. + return digest; +} + +size_t hash::operator()(const wasm::Struct& struct_) const { + return wasm::hash(struct_.fields); +} + +size_t hash::operator()(const wasm::Array& array) const { + return wasm::hash(array.element); +} + +size_t hash::operator()(const wasm::HeapType& heapType) const { + return wasm::hash(heapType.getID()); +} + +size_t hash::operator()(const wasm::Rtt& rtt) const { + auto digest = wasm::hash(rtt.depth); + wasm::rehash(digest, rtt.heapType); + return digest; +} + +} // namespace std diff -Nru binaryen-91/src/wasm/wasm-validator.cpp binaryen-99/src/wasm/wasm-validator.cpp --- binaryen-91/src/wasm/wasm-validator.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm/wasm-validator.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -19,13 +19,12 @@ #include #include -#include "ir/branch-utils.h" #include "ir/features.h" #include "ir/global-utils.h" #include "ir/module-utils.h" +#include "ir/stack-utils.h" #include "ir/utils.h" #include "support/colors.h" -#include "wasm-printing.h" #include "wasm-validator.h" #include "wasm.h" @@ -41,10 +40,12 @@ return stream; } -// Extra overload for Expressions, to print type info too +// Extra overload for Expressions, to print their contents. inline std::ostream& printModuleComponent(Expression* curr, std::ostream& stream) { - WasmPrinter::printExpression(curr, stream, false, true) << std::endl; + if (curr) { + stream << *curr << '\n'; + } return stream; } @@ -172,7 +173,7 @@ Expression* curr, const char* text, Function* func = nullptr) { - switch (ty.getSingle()) { + switch (ty.getBasic()) { case Type::i32: case Type::i64: case Type::unreachable: { @@ -247,6 +248,13 @@ public: // visitors + void validatePoppyExpression(Expression* curr); + + static void visitPoppyExpression(FunctionValidator* self, + Expression** currp) { + self->validatePoppyExpression(*currp); + } + static void visitPreBlock(FunctionValidator* self, Expression** currp) { auto* curr = (*currp)->cast(); if (curr->name.is()) { @@ -255,6 +263,8 @@ } void visitBlock(Block* curr); + void validateNormalBlockElements(Block* curr); + void validatePoppyBlockElements(Block* curr); static void visitPreLoop(FunctionValidator* self, Expression** currp) { auto* curr = (*currp)->cast(); @@ -277,6 +287,11 @@ if (curr->is()) { self->pushTask(visitPreLoop, currp); } + if (auto* func = self->getFunction()) { + if (func->profile == IRProfile::Poppy) { + self->pushTask(visitPoppyExpression, currp); + } + } } void noteBreak(Name name, Expression* value, Expression* curr); @@ -303,6 +318,7 @@ void visitSIMDTernary(SIMDTernary* curr); void visitSIMDShift(SIMDShift* curr); void visitSIMDLoad(SIMDLoad* curr); + void visitSIMDLoadStoreLane(SIMDLoadStoreLane* curr); void visitMemoryInit(MemoryInit* curr); void visitDataDrop(DataDrop* curr); void visitMemoryCopy(MemoryCopy* curr); @@ -312,13 +328,33 @@ void visitSelect(Select* curr); void visitDrop(Drop* curr); void visitReturn(Return* curr); - void visitHost(Host* curr); + void visitMemorySize(MemorySize* curr); + void visitMemoryGrow(MemoryGrow* curr); + void visitRefNull(RefNull* curr); void visitRefIsNull(RefIsNull* curr); void visitRefFunc(RefFunc* curr); + void visitRefEq(RefEq* curr); void visitTry(Try* curr); void visitThrow(Throw* curr); void visitRethrow(Rethrow* curr); void visitBrOnExn(BrOnExn* curr); + void visitTupleMake(TupleMake* curr); + void visitTupleExtract(TupleExtract* curr); + void visitCallRef(CallRef* curr); + void visitI31New(I31New* curr); + void visitI31Get(I31Get* curr); + void visitRefTest(RefTest* curr); + void visitRefCast(RefCast* curr); + void visitBrOnCast(BrOnCast* curr); + void visitRttCanon(RttCanon* curr); + void visitRttSub(RttSub* curr); + void visitStructNew(StructNew* curr); + void visitStructGet(StructGet* curr); + void visitStructSet(StructSet* curr); + void visitArrayNew(ArrayNew* curr); + void visitArrayGet(ArrayGet* curr); + void visitArraySet(ArraySet* curr); + void visitArrayLen(ArrayLen* curr); void visitFunction(Function* curr); // helpers @@ -371,6 +407,51 @@ void validateAlignment( size_t align, Type type, Index bytes, bool isAtomic, Expression* curr); void validateMemBytes(uint8_t bytes, Type type, Expression* curr); + + template void validateReturnCall(T* curr) { + shouldBeTrue(!curr->isReturn || getModule()->features.hasTailCall(), + curr, + "return_call* requires tail calls to be enabled"); + } + + template + void validateCallParamsAndResult(T* curr, Signature sig) { + if (!shouldBeTrue(curr->operands.size() == sig.params.size(), + curr, + "call* param number must match")) { + return; + } + size_t i = 0; + for (const auto& param : sig.params) { + if (!shouldBeSubTypeOrFirstIsUnreachable(curr->operands[i]->type, + param, + curr, + "call param types must match") && + !info.quiet) { + getStream() << "(on argument " << i << ")\n"; + } + ++i; + } + if (curr->isReturn) { + shouldBeEqual(curr->type, + Type(Type::unreachable), + curr, + "return_call* should have unreachable type"); + shouldBeEqual( + getFunction()->sig.results, + sig.results, + curr, + "return_call* callee return type must match caller return type"); + } else { + shouldBeEqualOrFirstIsUnreachable( + curr->type, + sig.results, + curr, + "call* type must match callee return type"); + } + } + + Type indexType() { return getModule()->memory.indexType; } }; void FunctionValidator::noteLabelName(Name name) { @@ -385,7 +466,45 @@ "names in Binaryen IR must be unique - IR generators must ensure that"); } +void FunctionValidator::validatePoppyExpression(Expression* curr) { + if (curr->type == Type::unreachable) { + shouldBeTrue(StackUtils::mayBeUnreachable(curr), + curr, + "Only control flow structures and unreachable polymorphic" + " instructions may be unreachable in Poppy IR"); + } + if (Properties::isControlFlowStructure(curr)) { + // Check that control flow children (except If conditions) are blocks + if (auto* if_ = curr->dynCast()) { + shouldBeTrue( + if_->condition->is(), curr, "Expected condition to be a Pop"); + shouldBeTrue(if_->ifTrue->is(), + curr, + "Expected control flow child to be a block"); + shouldBeTrue(!if_->ifFalse || if_->ifFalse->is(), + curr, + "Expected control flow child to be a block"); + } else if (!curr->is()) { + for (auto* child : ChildIterator(curr)) { + shouldBeTrue(child->is(), + curr, + "Expected control flow child to be a block"); + } + } + } else { + // Check that all children are Pops + for (auto* child : ChildIterator(curr)) { + shouldBeTrue(child->is(), curr, "Unexpected non-Pop child"); + } + } +} + void FunctionValidator::visitBlock(Block* curr) { + if (!getModule()->features.hasMultivalue()) { + shouldBeTrue(!curr->type.isTuple(), + curr, + "Multivalue block type (multivalue is not enabled)"); + } // if we are break'ed to, then the value must be right for us if (curr->name.is()) { noteLabelName(curr->name); @@ -433,6 +552,17 @@ } breakInfos.erase(iter); } + switch (getFunction()->profile) { + case IRProfile::Normal: + validateNormalBlockElements(curr); + break; + case IRProfile::Poppy: + validatePoppyBlockElements(curr); + break; + } +} + +void FunctionValidator::validateNormalBlockElements(Block* curr) { if (curr->list.size() > 1) { for (Index i = 0; i < curr->list.size() - 1; i++) { if (!shouldBeTrue( @@ -476,6 +606,45 @@ } } +void FunctionValidator::validatePoppyBlockElements(Block* curr) { + StackSignature blockSig; + for (size_t i = 0; i < curr->list.size(); ++i) { + Expression* expr = curr->list[i]; + if (!shouldBeTrue( + !expr->is(), expr, "Unexpected top-level pop in block")) { + return; + } + StackSignature sig(expr); + if (!shouldBeTrue(blockSig.composes(sig), + curr, + "block element has incompatible type") && + !info.quiet) { + getStream() << "(on index " << i << ":\n" + << expr << "\n), required: " << sig.params << ", available: "; + if (blockSig.unreachable) { + getStream() << "unreachable, "; + } + getStream() << blockSig.results << "\n"; + return; + } + blockSig += sig; + } + if (curr->type == Type::unreachable) { + shouldBeTrue(blockSig.unreachable, + curr, + "unreachable block should have unreachable element"); + } else { + if (!shouldBeTrue(blockSig.satisfies(Signature(Type::none, curr->type)), + curr, + "block contents should satisfy block type") && + !info.quiet) { + getStream() << "contents: " << blockSig.results + << (blockSig.unreachable ? " [unreachable]" : "") << "\n" + << "expected: " << curr->type << "\n"; + } + } +} + void FunctionValidator::visitLoop(Loop* curr) { if (curr->name.is()) { noteLabelName(curr->name); @@ -624,9 +793,7 @@ } void FunctionValidator::visitCall(Call* curr) { - shouldBeTrue(!curr->isReturn || getModule()->features.hasTailCall(), - curr, - "return_call requires tail calls to be enabled"); + validateReturnCall(curr); if (!info.validateGlobally) { return; } @@ -634,105 +801,16 @@ if (!shouldBeTrue(!!target, curr, "call target must exist")) { return; } - const std::vector params = target->sig.params.expand(); - if (!shouldBeTrue(curr->operands.size() == params.size(), - curr, - "call param number must match")) { - return; - } - for (size_t i = 0; i < curr->operands.size(); i++) { - if (!shouldBeSubTypeOrFirstIsUnreachable(curr->operands[i]->type, - params[i], - curr, - "call param types must match") && - !info.quiet) { - getStream() << "(on argument " << i << ")\n"; - } - } - if (curr->isReturn) { - shouldBeEqual(curr->type, - Type(Type::unreachable), - curr, - "return_call should have unreachable type"); - shouldBeEqual( - getFunction()->sig.results, - target->sig.results, - curr, - "return_call callee return type must match caller return type"); - } else { - if (curr->type == Type::unreachable) { - bool hasUnreachableOperand = std::any_of( - curr->operands.begin(), curr->operands.end(), [](Expression* op) { - return op->type == Type::unreachable; - }); - shouldBeTrue( - hasUnreachableOperand, - curr, - "calls may only be unreachable if they have unreachable operands"); - } else { - shouldBeEqual(curr->type, - target->sig.results, - curr, - "call type must match callee return type"); - } - } + validateCallParamsAndResult(curr, target->sig); } void FunctionValidator::visitCallIndirect(CallIndirect* curr) { - shouldBeTrue(!curr->isReturn || getModule()->features.hasTailCall(), - curr, - "return_call_indirect requires tail calls to be enabled"); - if (!info.validateGlobally) { - return; - } - const std::vector& params = curr->sig.params.expand(); + validateReturnCall(curr); shouldBeEqualOrFirstIsUnreachable(curr->target->type, Type(Type::i32), curr, "indirect call target must be an i32"); - if (!shouldBeTrue(curr->operands.size() == params.size(), - curr, - "call param number must match")) { - return; - } - for (size_t i = 0; i < curr->operands.size(); i++) { - if (!shouldBeSubTypeOrFirstIsUnreachable(curr->operands[i]->type, - params[i], - curr, - "call param types must match") && - !info.quiet) { - getStream() << "(on argument " << i << ")\n"; - } - } - if (curr->isReturn) { - shouldBeEqual(curr->type, - Type(Type::unreachable), - curr, - "return_call_indirect should have unreachable type"); - shouldBeEqual( - getFunction()->sig.results, - curr->sig.results, - curr, - "return_call_indirect callee return type must match caller return type"); - } else { - if (curr->type == Type::unreachable) { - if (curr->target->type != Type::unreachable) { - bool hasUnreachableOperand = std::any_of( - curr->operands.begin(), curr->operands.end(), [](Expression* op) { - return op->type == Type::unreachable; - }); - shouldBeTrue(hasUnreachableOperand, - curr, - "call_indirects may only be unreachable if they have " - "unreachable operands"); - } - } else { - shouldBeEqual(curr->type, - curr->sig.results, - curr, - "call_indirect type must match callee return type"); - } - } + validateCallParamsAndResult(curr, curr->sig); } void FunctionValidator::visitConst(Const* curr) { @@ -818,13 +896,13 @@ curr, "SIMD operation (SIMD is disabled)"); } - shouldBeFalse(curr->isAtomic && !getModule()->memory.shared, - curr, - "Atomic operation with non-shared memory"); validateMemBytes(curr->bytes, curr->type, curr); validateAlignment(curr->align, curr->type, curr->bytes, curr->isAtomic, curr); shouldBeEqualOrFirstIsUnreachable( - curr->ptr->type, Type(Type::i32), curr, "load pointer type must be i32"); + curr->ptr->type, + indexType(), + curr, + "load pointer type must match memory index type"); if (curr->isAtomic) { shouldBeFalse(curr->signed_, curr, "atomic loads must be unsigned"); shouldBeIntOrUnreachable( @@ -849,14 +927,14 @@ curr, "SIMD operation (SIMD is disabled)"); } - shouldBeFalse(curr->isAtomic && !getModule()->memory.shared, - curr, - "Atomic operation with non-shared memory"); validateMemBytes(curr->bytes, curr->valueType, curr); validateAlignment( curr->align, curr->valueType, curr->bytes, curr->isAtomic, curr); shouldBeEqualOrFirstIsUnreachable( - curr->ptr->type, Type(Type::i32), curr, "store pointer type must be i32"); + curr->ptr->type, + indexType(), + curr, + "store pointer must match memory index type"); shouldBeUnequal(curr->value->type, Type(Type::none), curr, @@ -875,14 +953,12 @@ shouldBeTrue(getModule()->features.hasAtomics(), curr, "Atomic operation (atomics are disabled)"); - shouldBeFalse(!getModule()->memory.shared, - curr, - "Atomic operation with non-shared memory"); validateMemBytes(curr->bytes, curr->type, curr); - shouldBeEqualOrFirstIsUnreachable(curr->ptr->type, - Type(Type::i32), - curr, - "AtomicRMW pointer type must be i32"); + shouldBeEqualOrFirstIsUnreachable( + curr->ptr->type, + indexType(), + curr, + "AtomicRMW pointer type must match memory index type"); shouldBeEqualOrFirstIsUnreachable(curr->type, curr->value->type, curr, @@ -897,12 +973,12 @@ shouldBeTrue(getModule()->features.hasAtomics(), curr, "Atomic operation (atomics are disabled)"); - shouldBeFalse(!getModule()->memory.shared, - curr, - "Atomic operation with non-shared memory"); validateMemBytes(curr->bytes, curr->type, curr); shouldBeEqualOrFirstIsUnreachable( - curr->ptr->type, Type(Type::i32), curr, "cmpxchg pointer type must be i32"); + curr->ptr->type, + indexType(), + curr, + "cmpxchg pointer must match memory index type"); if (curr->expected->type != Type::unreachable && curr->replacement->type != Type::unreachable) { shouldBeEqual(curr->expected->type, @@ -930,15 +1006,13 @@ shouldBeTrue(getModule()->features.hasAtomics(), curr, "Atomic operation (atomics are disabled)"); - shouldBeFalse(!getModule()->memory.shared, - curr, - "Atomic operation with non-shared memory"); shouldBeEqualOrFirstIsUnreachable( curr->type, Type(Type::i32), curr, "AtomicWait must have type i32"); - shouldBeEqualOrFirstIsUnreachable(curr->ptr->type, - Type(Type::i32), - curr, - "AtomicWait pointer type must be i32"); + shouldBeEqualOrFirstIsUnreachable( + curr->ptr->type, + indexType(), + curr, + "AtomicWait pointer must match memory index type"); shouldBeIntOrUnreachable( curr->expected->type, curr, "AtomicWait expected type must be int"); shouldBeEqualOrFirstIsUnreachable( @@ -958,15 +1032,13 @@ shouldBeTrue(getModule()->features.hasAtomics(), curr, "Atomic operation (atomics are disabled)"); - shouldBeFalse(!getModule()->memory.shared, - curr, - "Atomic operation with non-shared memory"); shouldBeEqualOrFirstIsUnreachable( curr->type, Type(Type::i32), curr, "AtomicNotify must have type i32"); - shouldBeEqualOrFirstIsUnreachable(curr->ptr->type, - Type(Type::i32), - curr, - "AtomicNotify pointer type must be i32"); + shouldBeEqualOrFirstIsUnreachable( + curr->ptr->type, + indexType(), + curr, + "AtomicNotify pointer must match memory index type"); shouldBeEqualOrFirstIsUnreachable( curr->notifyCount->type, Type(Type::i32), @@ -980,9 +1052,6 @@ shouldBeTrue(getModule()->features.hasAtomics(), curr, "Atomic operation (atomics are disabled)"); - shouldBeFalse(!getModule()->memory.shared, - curr, - "Atomic operation with non-shared memory"); shouldBeTrue(curr->order == 0, curr, "Currently only sequentially consistent atomics are supported, " @@ -1123,15 +1192,17 @@ getModule()->features.hasSIMD(), curr, "SIMD operation (SIMD is disabled)"); shouldBeEqualOrFirstIsUnreachable( curr->type, Type(Type::v128), curr, "load_splat must have type v128"); - shouldBeEqualOrFirstIsUnreachable(curr->ptr->type, - Type(Type::i32), - curr, - "load_splat address must have type i32"); + shouldBeEqualOrFirstIsUnreachable( + curr->ptr->type, + indexType(), + curr, + "load_splat address must match memory index type"); Type memAlignType = Type::none; switch (curr->op) { case LoadSplatVec8x16: case LoadSplatVec16x8: case LoadSplatVec32x4: + case Load32Zero: memAlignType = Type::i32; break; case LoadSplatVec64x2: @@ -1141,6 +1212,7 @@ case LoadExtUVec16x4ToVecI32x4: case LoadExtSVec32x2ToVecI64x2: case LoadExtUVec32x2ToVecI64x2: + case Load64Zero: memAlignType = Type::i64; break; } @@ -1148,6 +1220,59 @@ validateAlignment(curr->align, memAlignType, bytes, /*isAtomic=*/false, curr); } +void FunctionValidator::visitSIMDLoadStoreLane(SIMDLoadStoreLane* curr) { + shouldBeTrue( + getModule()->memory.exists, curr, "Memory operations require a memory"); + shouldBeTrue( + getModule()->features.hasSIMD(), curr, "SIMD operation (SIMD is disabled)"); + if (curr->isLoad()) { + shouldBeEqualOrFirstIsUnreachable( + curr->type, Type(Type::v128), curr, "loadX_lane must have type v128"); + } else { + shouldBeEqualOrFirstIsUnreachable( + curr->type, Type(Type::none), curr, "storeX_lane must have type none"); + } + shouldBeEqualOrFirstIsUnreachable( + curr->ptr->type, + indexType(), + curr, + "loadX_lane or storeX_lane address must match memory index type"); + shouldBeEqualOrFirstIsUnreachable( + curr->vec->type, + Type(Type::v128), + curr, + "loadX_lane or storeX_lane vector argument must have type v128"); + size_t lanes; + Type memAlignType = Type::none; + switch (curr->op) { + case LoadLaneVec8x16: + case StoreLaneVec8x16: + lanes = 16; + memAlignType = Type::i32; + break; + case LoadLaneVec16x8: + case StoreLaneVec16x8: + lanes = 8; + memAlignType = Type::i32; + break; + case LoadLaneVec32x4: + case StoreLaneVec32x4: + lanes = 4; + memAlignType = Type::i32; + break; + case LoadLaneVec64x2: + case StoreLaneVec64x2: + lanes = 2; + memAlignType = Type::i64; + break; + default: + WASM_UNREACHABLE("Unexpected SIMDLoadStoreLane op"); + } + Index bytes = curr->getMemBytes(); + validateAlignment(curr->align, memAlignType, bytes, /*isAtomic=*/false, curr); + shouldBeTrue(curr->index < lanes, curr, "invalid lane index"); +} + void FunctionValidator::visitMemoryInit(MemoryInit* curr) { shouldBeTrue(getModule()->features.hasBulkMemory(), curr, @@ -1155,7 +1280,10 @@ shouldBeEqualOrFirstIsUnreachable( curr->type, Type(Type::none), curr, "memory.init must have type none"); shouldBeEqualOrFirstIsUnreachable( - curr->dest->type, Type(Type::i32), curr, "memory.init dest must be an i32"); + curr->dest->type, + indexType(), + curr, + "memory.init dest must match memory index type"); shouldBeEqualOrFirstIsUnreachable(curr->offset->type, Type(Type::i32), curr, @@ -1195,13 +1323,20 @@ shouldBeEqualOrFirstIsUnreachable( curr->type, Type(Type::none), curr, "memory.copy must have type none"); shouldBeEqualOrFirstIsUnreachable( - curr->dest->type, Type(Type::i32), curr, "memory.copy dest must be an i32"); - shouldBeEqualOrFirstIsUnreachable(curr->source->type, - Type(Type::i32), - curr, - "memory.copy source must be an i32"); + curr->dest->type, + indexType(), + curr, + "memory.copy dest must match memory index type"); + shouldBeEqualOrFirstIsUnreachable( + curr->source->type, + indexType(), + curr, + "memory.copy source must match memory index type"); shouldBeEqualOrFirstIsUnreachable( - curr->size->type, Type(Type::i32), curr, "memory.copy size must be an i32"); + curr->size->type, + indexType(), + curr, + "memory.copy size must match memory index type"); shouldBeTrue( getModule()->memory.exists, curr, "Memory operations require a memory"); } @@ -1213,13 +1348,19 @@ shouldBeEqualOrFirstIsUnreachable( curr->type, Type(Type::none), curr, "memory.fill must have type none"); shouldBeEqualOrFirstIsUnreachable( - curr->dest->type, Type(Type::i32), curr, "memory.fill dest must be an i32"); + curr->dest->type, + indexType(), + curr, + "memory.fill dest must match memory index type"); shouldBeEqualOrFirstIsUnreachable(curr->value->type, Type(Type::i32), curr, "memory.fill value must be an i32"); shouldBeEqualOrFirstIsUnreachable( - curr->size->type, Type(Type::i32), curr, "memory.fill size must be an i32"); + curr->size->type, + indexType(), + curr, + "memory.fill size must match memory index type"); shouldBeTrue( getModule()->memory.exists, curr, "Memory operations require a memory"); } @@ -1227,7 +1368,7 @@ void FunctionValidator::validateMemBytes(uint8_t bytes, Type type, Expression* curr) { - switch (type.getSingle()) { + switch (type.getBasic()) { case Type::i32: shouldBeTrue(bytes == 1 || bytes == 2 || bytes == 4, curr, @@ -1253,9 +1394,11 @@ case Type::unreachable: break; case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: WASM_UNREACHABLE("unexpected type"); } @@ -1392,6 +1535,7 @@ case GtUVecI32x4: case GeSVecI32x4: case GeUVecI32x4: + case EqVecI64x2: case EqVecF32x4: case NeVecF32x4: case LtVecF32x4: @@ -1420,6 +1564,11 @@ case MaxSVecI8x16: case MaxUVecI8x16: case AvgrUVecI8x16: + case Q15MulrSatSVecI16x8: + case ExtMulLowSVecI16x8: + case ExtMulHighSVecI16x8: + case ExtMulLowUVecI16x8: + case ExtMulHighUVecI16x8: case AddVecI16x8: case AddSatSVecI16x8: case AddSatUVecI16x8: @@ -1440,20 +1589,33 @@ case MaxSVecI32x4: case MaxUVecI32x4: case DotSVecI16x8ToVecI32x4: + case ExtMulLowSVecI32x4: + case ExtMulHighSVecI32x4: + case ExtMulLowUVecI32x4: + case ExtMulHighUVecI32x4: case AddVecI64x2: case SubVecI64x2: + case MulVecI64x2: + case ExtMulLowSVecI64x2: + case ExtMulHighSVecI64x2: + case ExtMulLowUVecI64x2: + case ExtMulHighUVecI64x2: case AddVecF32x4: case SubVecF32x4: case MulVecF32x4: case DivVecF32x4: case MinVecF32x4: case MaxVecF32x4: + case PMinVecF32x4: + case PMaxVecF32x4: case AddVecF64x2: case SubVecF64x2: case MulVecF64x2: case DivVecF64x2: case MinVecF64x2: case MaxVecF64x2: + case PMinVecF64x2: + case PMaxVecF64x2: case NarrowSVecI16x8ToVecI8x16: case NarrowUVecI16x8ToVecI8x16: case NarrowSVecI32x4ToVecI16x8: @@ -1682,6 +1844,10 @@ curr->value->type, Type(Type::f64), curr, "expected f64 splat value"); break; case NotVec128: + case PopcntVecI8x16: + case AbsVecI8x16: + case AbsVecI16x8: + case AbsVecI32x4: case NegVecI8x16: case NegVecI16x8: case NegVecI32x4: @@ -1689,9 +1855,21 @@ case AbsVecF32x4: case NegVecF32x4: case SqrtVecF32x4: + case CeilVecF32x4: + case FloorVecF32x4: + case TruncVecF32x4: + case NearestVecF32x4: case AbsVecF64x2: case NegVecF64x2: case SqrtVecF64x2: + case CeilVecF64x2: + case FloorVecF64x2: + case TruncVecF64x2: + case NearestVecF64x2: + case ExtAddPairwiseSVecI8x16ToI16x8: + case ExtAddPairwiseUVecI8x16ToI16x8: + case ExtAddPairwiseSVecI16x8ToI32x4: + case ExtAddPairwiseUVecI16x8ToI32x4: case TruncSatSVecF32x4ToVecI32x4: case TruncSatUVecF32x4ToVecI32x4: case TruncSatSVecF64x2ToVecI64x2: @@ -1708,22 +1886,25 @@ case WidenHighSVecI16x8ToVecI32x4: case WidenLowUVecI16x8ToVecI32x4: case WidenHighUVecI16x8ToVecI32x4: + case WidenLowSVecI32x4ToVecI64x2: + case WidenHighSVecI32x4ToVecI64x2: + case WidenLowUVecI32x4ToVecI64x2: + case WidenHighUVecI32x4ToVecI64x2: shouldBeEqual(curr->type, Type(Type::v128), curr, "expected v128 type"); shouldBeEqual( curr->value->type, Type(Type::v128), curr, "expected v128 operand"); break; case AnyTrueVecI8x16: - case AllTrueVecI8x16: case AnyTrueVecI16x8: - case AllTrueVecI16x8: case AnyTrueVecI32x4: + case AllTrueVecI8x16: + case AllTrueVecI16x8: case AllTrueVecI32x4: - case AnyTrueVecI64x2: - case AllTrueVecI64x2: - shouldBeEqual(curr->type, - Type(Type::i32), - curr, - "expected boolean reduction to have i32 type"); + case BitmaskVecI8x16: + case BitmaskVecI16x8: + case BitmaskVecI32x4: + case BitmaskVecI64x2: + shouldBeEqual(curr->type, Type(Type::i32), curr, "expected i32 type"); shouldBeEqual( curr->value->type, Type(Type::v128), curr, "expected v128 operand"); break; @@ -1744,6 +1925,14 @@ curr->condition->type == Type::i32, curr, "select condition must be valid"); + if (curr->ifTrue->type != Type::unreachable) { + shouldBeFalse( + curr->ifTrue->type.isTuple(), curr, "select value may not be a tuple"); + } + if (curr->ifFalse->type != Type::unreachable) { + shouldBeFalse( + curr->ifFalse->type.isTuple(), curr, "select value may not be a tuple"); + } if (curr->type != Type::unreachable) { shouldBeTrue(Type::isSubType(curr->ifTrue->type, curr->type), curr, @@ -1765,27 +1954,32 @@ returnTypes.insert(curr->value ? curr->value->type : Type::none); } -void FunctionValidator::visitHost(Host* curr) { +void FunctionValidator::visitMemorySize(MemorySize* curr) { shouldBeTrue( getModule()->memory.exists, curr, "Memory operations require a memory"); - switch (curr->op) { - case MemoryGrow: { - shouldBeEqual(curr->operands.size(), - size_t(1), - curr, - "memory.grow must have 1 operand"); - shouldBeEqualOrFirstIsUnreachable(curr->operands[0]->type, - Type(Type::i32), - curr, - "memory.grow must have i32 operand"); - break; - } - case MemorySize: - break; - } +} + +void FunctionValidator::visitMemoryGrow(MemoryGrow* curr) { + shouldBeTrue( + getModule()->memory.exists, curr, "Memory operations require a memory"); + shouldBeEqualOrFirstIsUnreachable(curr->delta->type, + indexType(), + curr, + "memory.grow must match memory index type"); +} + +void FunctionValidator::visitRefNull(RefNull* curr) { + shouldBeTrue(getModule()->features.hasReferenceTypes(), + curr, + "ref.null requires reference-types to be enabled"); + shouldBeTrue( + curr->type.isNullable(), curr, "ref.null types must be nullable"); } void FunctionValidator::visitRefIsNull(RefIsNull* curr) { + shouldBeTrue(getModule()->features.hasReferenceTypes(), + curr, + "ref.is_null requires reference-types to be enabled"); shouldBeTrue(curr->value->type == Type::unreachable || curr->value->type.isRef(), curr->value, @@ -1793,11 +1987,39 @@ } void FunctionValidator::visitRefFunc(RefFunc* curr) { + shouldBeTrue(getModule()->features.hasReferenceTypes(), + curr, + "ref.func requires reference-types to be enabled"); + if (!info.validateGlobally) { + return; + } auto* func = getModule()->getFunctionOrNull(curr->func); shouldBeTrue(!!func, curr, "function argument of ref.func must exist"); + shouldBeTrue(curr->type.isFunction(), + curr, + "ref.func must have a function reference type"); + // TODO: check for non-nullability +} + +void FunctionValidator::visitRefEq(RefEq* curr) { + shouldBeTrue( + getModule()->features.hasGC(), curr, "ref.eq requires gc to be enabled"); + shouldBeSubTypeOrFirstIsUnreachable( + curr->left->type, + Type::eqref, + curr->left, + "ref.eq's left argument should be a subtype of eqref"); + shouldBeSubTypeOrFirstIsUnreachable( + curr->right->type, + Type::eqref, + curr->right, + "ref.eq's right argument should be a subtype of eqref"); } void FunctionValidator::visitTry(Try* curr) { + shouldBeTrue(getModule()->features.hasExceptionHandling(), + curr, + "try requires exception-handling to be enabled"); if (curr->type != Type::unreachable) { shouldBeSubTypeOrFirstIsUnreachable( curr->body->type, @@ -1822,13 +2044,16 @@ } void FunctionValidator::visitThrow(Throw* curr) { - if (!info.validateGlobally) { - return; - } + shouldBeTrue(getModule()->features.hasExceptionHandling(), + curr, + "throw requires exception-handling to be enabled"); shouldBeEqual(curr->type, Type(Type::unreachable), curr, "throw's type must be unreachable"); + if (!info.validateGlobally) { + return; + } auto* event = getModule()->getEventOrNull(curr->event); if (!shouldBeTrue(!!event, curr, "throw's event must exist")) { return; @@ -1838,19 +2063,23 @@ "event's param numbers must match")) { return; } - const std::vector& paramTypes = event->sig.params.expand(); - for (size_t i = 0; i < curr->operands.size(); i++) { + size_t i = 0; + for (const auto& param : event->sig.params) { if (!shouldBeSubTypeOrFirstIsUnreachable(curr->operands[i]->type, - paramTypes[i], + param, curr->operands[i], "event param types must match") && !info.quiet) { getStream() << "(on argument " << i << ")\n"; } + ++i; } } void FunctionValidator::visitRethrow(Rethrow* curr) { + shouldBeTrue(getModule()->features.hasExceptionHandling(), + curr, + "rethrow requires exception-handling to be enabled"); shouldBeEqual(curr->type, Type(Type::unreachable), curr, @@ -1863,6 +2092,9 @@ } void FunctionValidator::visitBrOnExn(BrOnExn* curr) { + shouldBeTrue(getModule()->features.hasExceptionHandling(), + curr, + "br_on_exn requires exception-handling to be enabled"); Event* event = getModule()->getEventOrNull(curr->event); shouldBeTrue(event != nullptr, curr, "br_on_exn's event must exist"); shouldBeTrue(event->sig.params == curr->sent, @@ -1887,26 +2119,333 @@ } } +void FunctionValidator::visitTupleMake(TupleMake* curr) { + shouldBeTrue(getModule()->features.hasMultivalue(), + curr, + "Tuples are not allowed unless multivalue is enabled"); + shouldBeTrue( + curr->operands.size() > 1, curr, "tuple.make must have multiple operands"); + std::vector types; + for (auto* op : curr->operands) { + if (op->type == Type::unreachable) { + shouldBeTrue( + curr->type == Type::unreachable, + curr, + "If tuple.make has an unreachable operand, it must be unreachable"); + return; + } + types.push_back(op->type); + } + shouldBeSubType(Type(types), + curr->type, + curr, + "Type of tuple.make does not match types of its operands"); +} + +void FunctionValidator::visitTupleExtract(TupleExtract* curr) { + shouldBeTrue(getModule()->features.hasMultivalue(), + curr, + "Tuples are not allowed unless multivalue is enabled"); + if (curr->tuple->type == Type::unreachable) { + shouldBeTrue( + curr->type == Type::unreachable, + curr, + "If tuple.extract has an unreachable operand, it must be unreachable"); + } else { + bool inBounds = curr->index < curr->tuple->type.size(); + shouldBeTrue(inBounds, curr, "tuple.extract index out of bounds"); + if (inBounds) { + shouldBeSubType( + curr->tuple->type[curr->index], + curr->type, + curr, + "tuple.extract type does not match the type of the extracted element"); + } + } +} + +void FunctionValidator::visitCallRef(CallRef* curr) { + validateReturnCall(curr); + shouldBeTrue(getModule()->features.hasTypedFunctionReferences(), + curr, + "call_ref requires typed-function-references to be enabled"); + if (curr->target->type != Type::unreachable) { + shouldBeTrue(curr->target->type.isFunction(), + curr, + "call_ref target must be a function reference"); + validateCallParamsAndResult( + curr, curr->target->type.getHeapType().getSignature()); + } +} + +void FunctionValidator::visitI31New(I31New* curr) { + shouldBeTrue( + getModule()->features.hasGC(), curr, "i31.new requires gc to be enabled"); + shouldBeSubTypeOrFirstIsUnreachable(curr->value->type, + Type::i32, + curr->value, + "i31.new's argument should be i32"); +} + +void FunctionValidator::visitI31Get(I31Get* curr) { + shouldBeTrue(getModule()->features.hasGC(), + curr, + "i31.get_s/u requires gc to be enabled"); + // FIXME: use i31ref here, which is non-nullable, when we support non- + // nullability. + shouldBeSubTypeOrFirstIsUnreachable( + curr->i31->type, + Type(HeapType::i31, Nullable), + curr->i31, + "i31.get_s/u's argument should be i31ref"); +} + +void FunctionValidator::visitRefTest(RefTest* curr) { + shouldBeTrue( + getModule()->features.hasGC(), curr, "ref.test requires gc to be enabled"); + if (curr->ref->type != Type::unreachable) { + shouldBeTrue( + curr->ref->type.isRef(), curr, "ref.test ref must have ref type"); + } + if (curr->rtt->type != Type::unreachable) { + shouldBeTrue( + curr->rtt->type.isRtt(), curr, "ref.test rtt must have rtt type"); + } +} + +void FunctionValidator::visitRefCast(RefCast* curr) { + shouldBeTrue( + getModule()->features.hasGC(), curr, "ref.cast requires gc to be enabled"); + if (curr->ref->type != Type::unreachable) { + shouldBeTrue( + curr->ref->type.isRef(), curr, "ref.cast ref must have ref type"); + } + if (curr->rtt->type != Type::unreachable) { + shouldBeTrue( + curr->rtt->type.isRtt(), curr, "ref.cast rtt must have rtt type"); + } +} + +void FunctionValidator::visitBrOnCast(BrOnCast* curr) { + shouldBeTrue(getModule()->features.hasGC(), + curr, + "br_on_cast requires gc to be enabled"); + if (curr->ref->type != Type::unreachable) { + shouldBeTrue( + curr->ref->type.isRef(), curr, "br_on_cast ref must have ref type"); + } + if (curr->rtt->type != Type::unreachable) { + shouldBeTrue( + curr->rtt->type.isRtt(), curr, "br_on_cast rtt must have rtt type"); + shouldBeEqual(curr->rtt->type.getHeapType(), + curr->castType.getHeapType(), + curr, + "br_on_cast rtt must have the proper heap type"); + noteBreak(curr->name, curr->castType, curr); + } +} + +void FunctionValidator::visitRttCanon(RttCanon* curr) { + shouldBeTrue( + getModule()->features.hasGC(), curr, "rtt.canon requires gc to be enabled"); + shouldBeTrue(curr->type.isRtt(), curr, "rtt.canon must have RTT type"); + auto rtt = curr->type.getRtt(); + shouldBeEqual(rtt.depth, Index(0), curr, "rtt.canon has a depth of 0"); +} + +void FunctionValidator::visitRttSub(RttSub* curr) { + shouldBeTrue( + getModule()->features.hasGC(), curr, "rtt.sub requires gc to be enabled"); + shouldBeTrue(curr->type.isRtt(), curr, "rtt.sub must have RTT type"); + if (curr->parent->type != Type::unreachable) { + shouldBeTrue( + curr->parent->type.isRtt(), curr, "rtt.sub parent must have RTT type"); + auto parentRtt = curr->parent->type.getRtt(); + auto rtt = curr->type.getRtt(); + if (rtt.hasDepth() && parentRtt.hasDepth()) { + shouldBeEqual(rtt.depth, + parentRtt.depth + 1, + curr, + "rtt.canon has a depth of 1 over the parent"); + } + } +} + +void FunctionValidator::visitStructNew(StructNew* curr) { + shouldBeTrue(getModule()->features.hasGC(), + curr, + "struct.new requires gc to be enabled"); + if (curr->type == Type::unreachable) { + return; + } + if (!shouldBeTrue( + curr->rtt->type.isRtt(), curr, "struct.new rtt must be rtt")) { + return; + } + auto heapType = curr->rtt->type.getHeapType(); + if (!shouldBeTrue( + heapType.isStruct(), curr, "struct.new heap type must be struct")) { + return; + } + const auto& fields = heapType.getStruct().fields; + if (curr->isWithDefault()) { + shouldBeTrue(curr->operands.empty(), + curr, + "struct.new_with_default should have no operands"); + // All the fields must be defaultable. + for (const auto& field : fields) { + // TODO: add type.isDefaultable()? + shouldBeTrue(!field.type.isRef() || field.type.isNullable(), + field, + "struct.new_with_default value type must be defaultable"); + } + } else { + // All the fields must have the proper type. + for (Index i = 0; i < fields.size(); i++) { + shouldBeSubType(curr->operands[i]->type, + fields[i].type, + curr, + "struct.new operand must have proper type"); + } + } +} + +void FunctionValidator::visitStructGet(StructGet* curr) { + shouldBeTrue(getModule()->features.hasGC(), + curr, + "struct.get requires gc to be enabled"); + const auto& fields = curr->ref->type.getHeapType().getStruct().fields; + shouldBeTrue(curr->index < fields.size(), curr, "bad struct.get field"); + auto field = fields[curr->index]; + // If the type is not packed, it must be marked internally as unsigned, by + // convention. + if (field.type != Type::i32 || field.packedType == Field::not_packed) { + shouldBeFalse(curr->signed_, curr, "non-packed get cannot be signed"); + } + if (curr->ref->type == Type::unreachable) { + return; + } + shouldBeEqual( + curr->type, field.type, curr, "struct.get must have the proper type"); +} + +void FunctionValidator::visitStructSet(StructSet* curr) { + shouldBeTrue(getModule()->features.hasGC(), + curr, + "struct.set requires gc to be enabled"); + if (curr->ref->type != Type::unreachable) { + const auto& fields = curr->ref->type.getHeapType().getStruct().fields; + shouldBeTrue(curr->index < fields.size(), curr, "bad struct.get field"); + shouldBeEqual(curr->value->type, + fields[curr->index].type, + curr, + "struct.set must have the proper type"); + } +} + +void FunctionValidator::visitArrayNew(ArrayNew* curr) { + shouldBeTrue( + getModule()->features.hasGC(), curr, "array.new requires gc to be enabled"); + shouldBeEqualOrFirstIsUnreachable( + curr->size->type, Type(Type::i32), curr, "array.new size must be an i32"); + if (curr->type == Type::unreachable) { + return; + } + if (!shouldBeTrue( + curr->rtt->type.isRtt(), curr, "array.new rtt must be rtt")) { + return; + } + auto heapType = curr->rtt->type.getHeapType(); + if (!shouldBeTrue( + heapType.isArray(), curr, "array.new heap type must be array")) { + return; + } + const auto& element = heapType.getArray().element; + if (curr->isWithDefault()) { + shouldBeTrue( + !curr->init, curr, "array.new_with_default should have no init"); + // The element must be defaultable. + // TODO: add type.isDefaultable()? + shouldBeTrue(!element.type.isRef() || element.type.isNullable(), + element, + "array.new_with_default value type must be defaultable"); + } else { + shouldBeTrue(!!curr->init, curr, "array.new should have an init"); + // The inits must have the proper type. + shouldBeSubType(curr->init->type, + element.type, + curr, + "array.new init must have proper type"); + } +} + +void FunctionValidator::visitArrayGet(ArrayGet* curr) { + shouldBeTrue( + getModule()->features.hasGC(), curr, "array.get requires gc to be enabled"); + shouldBeEqualOrFirstIsUnreachable( + curr->index->type, Type(Type::i32), curr, "array.get index must be an i32"); + if (curr->type == Type::unreachable) { + return; + } + const auto& element = curr->ref->type.getHeapType().getArray().element; + // If the type is not packed, it must be marked internally as unsigned, by + // convention. + if (element.type != Type::i32 || element.packedType == Field::not_packed) { + shouldBeFalse(curr->signed_, curr, "non-packed get cannot be signed"); + } + shouldBeEqual( + curr->type, element.type, curr, "array.get must have the proper type"); +} + +void FunctionValidator::visitArraySet(ArraySet* curr) { + shouldBeTrue( + getModule()->features.hasGC(), curr, "array.set requires gc to be enabled"); + shouldBeEqualOrFirstIsUnreachable( + curr->index->type, Type(Type::i32), curr, "array.set index must be an i32"); + if (curr->type == Type::unreachable) { + return; + } + const auto& element = curr->ref->type.getHeapType().getArray().element; + shouldBeEqual(curr->value->type, + element.type, + curr, + "array.set must have the proper type"); +} + +void FunctionValidator::visitArrayLen(ArrayLen* curr) { + shouldBeTrue( + getModule()->features.hasGC(), curr, "array.len requires gc to be enabled"); + shouldBeEqualOrFirstIsUnreachable( + curr->type, Type(Type::i32), curr, "array.len result must be an i32"); +} + void FunctionValidator::visitFunction(Function* curr) { - shouldBeTrue(!curr->sig.results.isMulti(), - curr->body, - "Multivalue functions not allowed yet"); + if (curr->sig.results.isTuple()) { + shouldBeTrue(getModule()->features.hasMultivalue(), + curr->body, + "Multivalue function results (multivalue is not enabled)"); + } FeatureSet features; - for (auto type : curr->sig.params.expand()) { - features |= type.getFeatures(); - shouldBeTrue(type.isConcrete(), curr, "params must be concretely typed"); - } - for (auto type : curr->sig.results.expand()) { - features |= type.getFeatures(); - shouldBeTrue(type.isConcrete(), curr, "results must be concretely typed"); - } - for (auto type : curr->vars) { - features |= type.getFeatures(); - shouldBeTrue(type.isConcrete(), curr, "vars must be concretely typed"); + for (const auto& param : curr->sig.params) { + features |= param.getFeatures(); + shouldBeTrue(param.isConcrete(), curr, "params must be concretely typed"); + } + for (const auto& result : curr->sig.results) { + features |= result.getFeatures(); + shouldBeTrue(result.isConcrete(), curr, "results must be concretely typed"); + } + for (const auto& var : curr->vars) { + features |= var.getFeatures(); + shouldBeTrue(var.isConcrete(), curr, "vars must be concretely typed"); + // TODO: check for nullability } shouldBeTrue(features <= getModule()->features, - curr, + curr->name, "all used types should be allowed"); + if (curr->profile == IRProfile::Poppy) { + shouldBeTrue( + curr->body->is(), curr->body, "Function body must be a block"); + } // if function has no result, it is ignored // if body is unreachable, it might be e.g. a return shouldBeSubTypeOrFirstIsUnreachable( @@ -1934,7 +2473,7 @@ } } -static bool checkOffset(Expression* curr, Address add, Address max) { +static bool checkSegmentOffset(Expression* curr, Address add, Address max) { if (curr->is()) { return true; } @@ -1943,10 +2482,10 @@ return false; } uint64_t raw = c->value.getInteger(); - if (raw > std::numeric_limits::max()) { + if (raw > std::numeric_limits::max()) { return false; } - if (raw + uint64_t(add) > std::numeric_limits::max()) { + if (raw + uint64_t(add) > std::numeric_limits::max()) { return false; } Address offset = raw; @@ -1975,7 +2514,8 @@ } } shouldBeTrue(align <= bytes, curr, "alignment must not exceed natural"); - switch (type.getSingle()) { + TODO_SINGLE_COMPOUND(type); + switch (type.getBasic()) { case Type::i32: case Type::f32: { shouldBeTrue(align <= 4, curr, "alignment must not exceed natural"); @@ -1990,9 +2530,11 @@ case Type::unreachable: break; case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: WASM_UNREACHABLE("invalid type"); } @@ -2053,14 +2595,20 @@ static void validateImports(Module& module, ValidationInfo& info) { ModuleUtils::iterImportedFunctions(module, [&](Function* curr) { + if (curr->sig.results.isTuple()) { + info.shouldBeTrue(module.features.hasMultivalue(), + curr->name, + "Imported multivalue function " + "(multivalue is not enabled)"); + } if (info.validateWeb) { - for (Type param : curr->sig.params.expand()) { + for (const auto& param : curr->sig.params) { info.shouldBeUnequal(param, Type(Type::i64), curr->name, "Imported function must not have i64 parameters"); } - for (Type result : curr->sig.results.expand()) { + for (const auto& result : curr->sig.results) { info.shouldBeUnequal(result, Type(Type::i64), curr->name, @@ -2068,12 +2616,14 @@ } } }); - if (!module.features.hasMutableGlobals()) { - ModuleUtils::iterImportedGlobals(module, [&](Global* curr) { + ModuleUtils::iterImportedGlobals(module, [&](Global* curr) { + if (!module.features.hasMutableGlobals()) { info.shouldBeFalse( curr->mutable_, curr->name, "Imported global cannot be mutable"); - }); - } + } + info.shouldBeFalse( + curr->type.isTuple(), curr->name, "Imported global cannot be tuple"); + }); } static void validateExports(Module& module, ValidationInfo& info) { @@ -2081,25 +2631,28 @@ if (curr->kind == ExternalKind::Function) { if (info.validateWeb) { Function* f = module.getFunction(curr->value); - for (auto param : f->sig.params.expand()) { + for (const auto& param : f->sig.params) { info.shouldBeUnequal( param, Type(Type::i64), f->name, "Exported function must not have i64 parameters"); } - for (auto result : f->sig.results.expand()) { + for (const auto& result : f->sig.results) { info.shouldBeUnequal(result, Type(Type::i64), f->name, "Exported function must not have i64 results"); } } - } else if (curr->kind == ExternalKind::Global && - !module.features.hasMutableGlobals()) { + } else if (curr->kind == ExternalKind::Global) { if (Global* g = module.getGlobalOrNull(curr->value)) { + if (!module.features.hasMutableGlobals()) { + info.shouldBeFalse( + g->mutable_, g->name, "Exported global cannot be mutable"); + } info.shouldBeFalse( - g->mutable_, g->name, "Exported global cannot be mutable"); + g->type.isTuple(), g->name, "Exported global cannot be tuple"); } } } @@ -2163,12 +2716,18 @@ auto& curr = module.memory; info.shouldBeFalse( curr.initial > curr.max, "memory", "memory max >= initial"); - info.shouldBeTrue(curr.initial <= Memory::kMaxSize, - "memory", - "initial memory must be <= 4GB"); - info.shouldBeTrue(!curr.hasMax() || curr.max <= Memory::kMaxSize, - "memory", - "max memory must be <= 4GB, or unlimited"); + if (curr.is64()) { + info.shouldBeTrue(module.features.hasMemory64(), + "memory", + "memory is 64-bit, but memory64 is disabled"); + } else { + info.shouldBeTrue(curr.initial <= Memory::kMaxSize32, + "memory", + "initial memory must be <= 4GB"); + info.shouldBeTrue(!curr.hasMax() || curr.max <= Memory::kMaxSize32, + "memory", + "max memory must be <= 4GB, or unlimited"); + } info.shouldBeTrue(!curr.shared || curr.hasMax(), "memory", "shared memory must have max size"); @@ -2194,11 +2753,11 @@ "segment offset should be i32")) { continue; } - info.shouldBeTrue(checkOffset(segment.offset, - segment.data.size(), - curr.initial * Memory::kPageSize), + info.shouldBeTrue(checkSegmentOffset(segment.offset, + segment.data.size(), + curr.initial * Memory::kPageSize), segment.offset, - "segment offset should be reasonable"); + "memory segment offset should be reasonable"); if (segment.offset->is()) { Index start = segment.offset->cast()->value.geti32(); Index end = start + size; @@ -2225,11 +2784,12 @@ Type(Type::i32), segment.offset, "segment offset should be i32"); - info.shouldBeTrue(checkOffset(segment.offset, - segment.data.size(), - module.table.initial * Table::kPageSize), - segment.offset, - "segment offset should be reasonable"); + info.shouldBeTrue( + checkSegmentOffset(segment.offset, + segment.data.size(), + module.table.initial * Table::kPageSize), + segment.offset, + "table segment offset should be reasonable"); for (auto name : segment.data) { info.shouldBeTrue( module.getFunctionOrNull(name), name, "segment name should be valid"); @@ -2252,8 +2812,13 @@ Type(Type::none), curr->name, "Event type's result type should be none"); - for (auto type : curr->sig.params.expand()) { - info.shouldBeTrue(type.isConcrete(), + if (curr->sig.params.isTuple()) { + info.shouldBeTrue(module.features.hasMultivalue(), + curr->name, + "Multivalue event type (multivalue is not enabled)"); + } + for (const auto& param : curr->sig.params) { + info.shouldBeTrue(param.isConcrete(), curr->name, "Values in an event should have concrete types"); } @@ -2276,6 +2841,20 @@ } } +static void validateFeatures(Module& module, ValidationInfo& info) { + if (module.features.hasGC()) { + info.shouldBeTrue(module.features.hasReferenceTypes(), + module.features, + "--enable-gc requires --enable-reference-types"); + } + if (module.features.hasExceptionHandling()) { // implies exnref + info.shouldBeTrue( + module.features.hasReferenceTypes(), + module.features, + "--enable-exception-handling requires --enable-reference-types"); + } +} + // TODO: If we want the validator to be part of libwasm rather than libpasses, // then Using PassRunner::getPassDebug causes a circular dependence. We should // fix that, perhaps by moving some of the pass infrastructure into libsupport. @@ -2296,6 +2875,7 @@ validateTable(module, info); validateEvents(module, info); validateModule(module, info); + validateFeatures(module, info); } // validate additional internal IR details when in pass-debug mode if (PassRunner::getPassDebug()) { diff -Nru binaryen-91/src/wasm2js.h binaryen-99/src/wasm2js.h --- binaryen-91/src/wasm2js.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm2js.h 2021-01-07 20:01:06.000000000 +0000 @@ -52,13 +52,6 @@ using namespace cashew; -IString ASM_FUNC("asmFunc"); -IString ABORT_FUNC("abort"); -IString FUNCTION_TABLE("FUNCTION_TABLE"); -IString NO_RESULT("wasm2js$noresult"); // no result at all -// result in an expression, no temp var -IString EXPRESSION_RESULT("wasm2js$expresult"); - // Appends extra to block, flattening out if extra is a block as well void flattenAppend(Ref ast, Ref extra) { int index; @@ -87,12 +80,61 @@ ast = ValueBuilder::makeSeq(ast, extra); } +bool isTableExported(Module& wasm) { + if (!wasm.table.exists || wasm.table.imported()) { + return false; + } + for (auto& ex : wasm.exports) { + if (ex->kind == ExternalKind::Table && ex->value == wasm.table.name) { + return true; + } + } + return false; +} + +bool hasActiveSegments(Module& wasm) { + for (Index i = 0; i < wasm.memory.segments.size(); i++) { + if (!wasm.memory.segments[i].isPassive) { + return true; + } + } + return false; +} + +bool needsBufferView(Module& wasm) { + if (!wasm.memory.exists) { + return false; + } + + // If there are any active segments, initActiveSegments needs access + // to bufferView. + if (hasActiveSegments(wasm)) { + return true; + } + + // The special support functions are emitted as part of the JS glue, if we + // need them. + bool need = false; + ModuleUtils::iterImportedFunctions(wasm, [&](Function* import) { + if (ABI::wasm2js::isHelper(import->base)) { + need = true; + } + }); + return need; +} + IString stringToIString(std::string str) { return IString(str.c_str(), false); } // Used when taking a wasm name and generating a JS identifier. Each scope here // is used to ensure that all names have a unique name but the same wasm name // within a scope always resolves to the same symbol. +// +// Export: Export names +// Top: The main scope which contains functions and globals +// Local: Local variables in a function. +// Label: Label identifiers in a function enum class NameScope { + Export, Top, Local, Label, @@ -116,14 +158,14 @@ // class Wasm2JSBuilder { - MixedArena allocator; - public: struct Flags { + // see wasm2js.cpp for details bool debug = false; bool pedantic = false; bool allowAsserts = false; bool emscripten = false; + bool deterministic = false; std::string symbolsFile; }; @@ -150,11 +192,12 @@ // Get a temp var. IString getTemp(Type type, Function* func) { IString ret; - if (frees[type.getSingle()].size() > 0) { - ret = frees[type.getSingle()].back(); - frees[type.getSingle()].pop_back(); + TODO_SINGLE_COMPOUND(type); + if (frees[type.getBasic()].size() > 0) { + ret = frees[type.getBasic()].back(); + frees[type.getBasic()].pop_back(); } else { - size_t index = temps[type.getSingle()]++; + size_t index = temps[type.getBasic()]++; ret = IString((std::string("wasm2js_") + type.toString() + "$" + std::to_string(index)) .c_str(), @@ -168,7 +211,8 @@ // Free a temp var. void freeTemp(Type type, IString temp) { - frees[type.getSingle()].push_back(temp); + TODO_SINGLE_COMPOUND(type); + frees[type.getBasic()].push_back(temp); } // Generates a mangled name from `name` within the specified scope. @@ -186,11 +230,15 @@ // First up check our cached of mangled names to avoid doing extra work // below - auto& mangledScope = mangledNames[(int)scope]; - auto it = mangledScope.find(name.c_str()); - if (it != mangledScope.end()) { + auto& map = wasmNameToMangledName[(int)scope]; + auto it = map.find(name.c_str()); + if (it != map.end()) { return it->second; } + // The mangled names in our scope. + auto& scopeMangledNames = mangledNames[(int)scope]; + // In some cases (see below) we need to also check the Top scope. + auto& topMangledNames = mangledNames[int(NameScope::Top)]; // This is the first time we've seen the `name` and `scope` pair. Generate a // globally unique name based on `name` and then register that in our cache @@ -208,28 +256,30 @@ } auto mangled = asmangle(out.str()); ret = stringToIString(mangled); - if (!allMangledNames.count(ret)) { - break; + if (scopeMangledNames.count(ret)) { + // When export names collide things may be confusing, as this is + // observable externally by the person using the JS. Report a warning. + if (scope == NameScope::Export) { + std::cerr << "wasm2js: warning: export names colliding: " << mangled + << '\n'; + } + continue; } - - // In the global scope that's how you refer to actual function exports, so - // it's a bug currently if they're not globally unique. This should - // probably be fixed via a different namespace for exports or something - // like that. - // XXX This is not actually a valid check atm, since functions are not in - // the global-most scope, but rather in the "asmFunc" scope which is - // inside it. Also, for emscripten style glue, we emit the exports as - // a return, so there is no name placed into the scope. For these - // reasons, just warn here, don't error. - if (scope == NameScope::Top) { - std::cerr << "wasm2js: warning: global scope may be colliding with " - "other scope: " - << mangled << '\n'; + // The Local scope is special: a Local name must not collide with a Top + // name, as they are in a single namespace in JS and can conflict: + // + // function foo(bar) { + // var bar = 0; + // } + // function bar() { .. + if (scope == NameScope::Local && topMangledNames.count(ret)) { + continue; } + // We found a good name, use it. + scopeMangledNames.insert(ret); + map[name.c_str()] = ret; + return ret; } - allMangledNames.insert(ret); - mangledScope[name.c_str()] = ret; - return ret; } private: @@ -243,22 +293,25 @@ // Mangled names cache by interned names. // Utilizes the usually reused underlying cstring's pointer as the key. - std::unordered_map mangledNames[(int)NameScope::Max]; - std::unordered_set allMangledNames; + std::unordered_map + wasmNameToMangledName[(int)NameScope::Max]; + // Set of all mangled names in each scope. + std::unordered_set mangledNames[(int)NameScope::Max]; // If a function is callable from outside, we'll need to cast the inputs // and our return value. Otherwise, internally, casts are only needed // on operations. std::unordered_set functionsCallableFromOutside; - void addBasics(Ref ast); + void addBasics(Ref ast, Module* wasm); void addFunctionImport(Ref ast, Function* import); void addGlobalImport(Ref ast, Global* import); void addTable(Ref ast, Module* wasm); + void addStart(Ref ast, Module* wasm); void addExports(Ref ast, Module* wasm); void addGlobal(Ref ast, Global* global); void addMemoryFuncs(Ref ast, Module* wasm); - void addMemoryGrowthFuncs(Ref ast, Module* wasm); + void addMemoryGrowFunc(Ref ast, Module* wasm); Wasm2JSBuilder() = delete; Wasm2JSBuilder(const Wasm2JSBuilder&) = delete; @@ -280,13 +333,15 @@ // Ensure the scratch memory helpers. // If later on they aren't needed, we'll clean them up. - ABI::wasm2js::ensureScratchMemoryHelpers(wasm); + ABI::wasm2js::ensureHelpers(wasm); // Process the code, and optimize if relevant. // First, do the lowering to a JS-friendly subset. { PassRunner runner(wasm, options); runner.add(make_unique()); + // TODO: only legalize if necessary - emscripten would already do so, and + // likely other toolchains. but spec test suite needs that. runner.add("legalize-js-interface"); // First up remove as many non-JS operations we can, including things like // 64-bit integer multiplication/division, `f32.nearest` instructions, etc. @@ -326,6 +381,7 @@ if (options.optimizeLevel > 0) { runner.add("remove-unused-names"); runner.add("merge-blocks"); + runner.add("reorder-locals"); runner.add("coalesce-locals"); } runner.add("reorder-locals"); @@ -348,7 +404,7 @@ #ifndef NDEBUG if (!WasmValidator().validate(*wasm)) { - WasmPrinter::printModule(wasm); + std::cout << *wasm << '\n'; Fatal() << "error in validating wasm2js output"; } #endif @@ -356,44 +412,76 @@ Ref ret = ValueBuilder::makeToplevel(); Ref asmFunc = ValueBuilder::makeFunction(funcName); ret[1]->push_back(asmFunc); - ValueBuilder::appendArgumentToFunction(asmFunc, GLOBAL); ValueBuilder::appendArgumentToFunction(asmFunc, ENV); - ValueBuilder::appendArgumentToFunction(asmFunc, BUFFER); + // add memory import - if (wasm->memory.exists && wasm->memory.imported()) { + if (wasm->memory.exists) { + if (wasm->memory.imported()) { + // find memory and buffer in imports + Ref theVar = ValueBuilder::makeVar(); + asmFunc[3]->push_back(theVar); + ValueBuilder::appendToVar( + theVar, + "memory", + ValueBuilder::makeDot(ValueBuilder::makeName(ENV), + ValueBuilder::makeName(wasm->memory.base))); + + // Assign `buffer = memory.buffer` + Ref buf = ValueBuilder::makeVar(); + asmFunc[3]->push_back(buf); + ValueBuilder::appendToVar( + buf, + BUFFER, + ValueBuilder::makeDot(ValueBuilder::makeName("memory"), + ValueBuilder::makeName("buffer"))); + + // If memory is growable, override the imported memory's grow method to + // ensure so that when grow is called from the output it works as expected + if (wasm->memory.max > wasm->memory.initial) { + asmFunc[3]->push_back( + ValueBuilder::makeStatement(ValueBuilder::makeBinary( + ValueBuilder::makeDot(ValueBuilder::makeName("memory"), + ValueBuilder::makeName("grow")), + SET, + ValueBuilder::makeName(WASM_MEMORY_GROW)))); + } + } else { + Ref theVar = ValueBuilder::makeVar(); + asmFunc[3]->push_back(theVar); + ValueBuilder::appendToVar( + theVar, + BUFFER, + ValueBuilder::makeNew(ValueBuilder::makeCall( + ValueBuilder::makeName("ArrayBuffer"), + ValueBuilder::makeInt(Address::address32_t(wasm->memory.initial.addr * + Memory::kPageSize))))); + } + } + + // add table import + if (wasm->table.exists && wasm->table.imported()) { Ref theVar = ValueBuilder::makeVar(); asmFunc[3]->push_back(theVar); ValueBuilder::appendToVar( theVar, - "memory", - ValueBuilder::makeDot(ValueBuilder::makeName(ENV), - ValueBuilder::makeName("memory"))); - } - // for emscripten, add a table import - otherwise we would have - // FUNCTION_TABLE be an upvar, and not as easy to be minified. - if (flags.emscripten && wasm->table.exists && wasm->table.imported()) { - Ref theVar = ValueBuilder::makeVar(); - asmFunc[3]->push_back(theVar); - ValueBuilder::appendToVar( - theVar, FUNCTION_TABLE, ValueBuilder::makeName("wasmTable")); + FUNCTION_TABLE, + ValueBuilder::makeDot(ValueBuilder::makeName(ENV), wasm->table.base)); } + // create heaps, etc - addBasics(asmFunc[3]); + addBasics(asmFunc[3], wasm); ModuleUtils::iterImportedFunctions( *wasm, [&](Function* import) { addFunctionImport(asmFunc[3], import); }); ModuleUtils::iterImportedGlobals( *wasm, [&](Global* import) { addGlobalImport(asmFunc[3], import); }); - // make sure exports get their expected names - for (auto& e : wasm->exports) { - if (e->kind == ExternalKind::Function) { - fromName(e->name, NameScope::Top); - } - } + // Note the names of functions. We need to do this here as when generating + // mangled local names we need them not to conflict with these (see fromName) + // so we can't wait until we parse each function to note its name. for (auto& f : wasm->functions) { fromName(f->name, NameScope::Top); } - fromName(WASM_FETCH_HIGH_BITS, NameScope::Top); + // globals bool generateFetchHighBits = false; ModuleUtils::iterDefinedGlobals(*wasm, [&](Global* global) { @@ -411,14 +499,15 @@ asmFunc[3]->push_back(processFunction(wasm, func)); }); if (generateFetchHighBits) { - Builder builder(allocator); - asmFunc[3]->push_back(processFunction( - wasm, - builder.makeFunction(WASM_FETCH_HIGH_BITS, - Signature(Type::none, Type::i32), - {}, - builder.makeReturn(builder.makeGlobalGet( - INT64_TO_32_HIGH_BITS, Type::i32))))); + Builder builder(*wasm); + asmFunc[3]->push_back( + processFunction(wasm, + wasm->addFunction(builder.makeFunction( + WASM_FETCH_HIGH_BITS, + Signature(Type::none, Type::i32), + {}, + builder.makeReturn(builder.makeGlobalGet( + INT64_TO_32_HIGH_BITS, Type::i32)))))); auto e = new Export(); e->name = WASM_FETCH_HIGH_BITS; e->value = WASM_FETCH_HIGH_BITS; @@ -429,41 +518,50 @@ asmFunc[3]->push_back(ValueBuilder::makeName("// EMSCRIPTEN_END_FUNCS\n")); } + if (needsBufferView(*wasm)) { + asmFunc[3]->push_back( + ValueBuilder::makeBinary(ValueBuilder::makeName("bufferView"), + SET, + ValueBuilder::makeName(HEAPU8))); + } + if (hasActiveSegments(*wasm)) { + asmFunc[3]->push_back( + ValueBuilder::makeCall(ValueBuilder::makeName("initActiveSegments"), + ValueBuilder::makeName(ENV))); + } + addTable(asmFunc[3], wasm); - // memory XXX + addStart(asmFunc[3], wasm); addExports(asmFunc[3], wasm); return ret; } -void Wasm2JSBuilder::addBasics(Ref ast) { - // heaps, var HEAP8 = new global.Int8Array(buffer); etc - auto addHeap = [&](IString name, IString view) { - Ref theVar = ValueBuilder::makeVar(); - ast->push_back(theVar); - ValueBuilder::appendToVar( - theVar, - name, - ValueBuilder::makeNew(ValueBuilder::makeCall( - ValueBuilder::makeDot(ValueBuilder::makeName(GLOBAL), view), - ValueBuilder::makeName(BUFFER)))); - }; - addHeap(HEAP8, INT8ARRAY); - addHeap(HEAP16, INT16ARRAY); - addHeap(HEAP32, INT32ARRAY); - addHeap(HEAPU8, UINT8ARRAY); - addHeap(HEAPU16, UINT16ARRAY); - addHeap(HEAPU32, UINT32ARRAY); - addHeap(HEAPF32, FLOAT32ARRAY); - addHeap(HEAPF64, FLOAT64ARRAY); +void Wasm2JSBuilder::addBasics(Ref ast, Module* wasm) { + if (wasm->memory.exists) { + // heaps, var HEAP8 = new global.Int8Array(buffer); etc + auto addHeap = [&](IString name, IString view) { + Ref theVar = ValueBuilder::makeVar(); + ast->push_back(theVar); + ValueBuilder::appendToVar(theVar, + name, + ValueBuilder::makeNew(ValueBuilder::makeCall( + view, ValueBuilder::makeName(BUFFER)))); + }; + addHeap(HEAP8, INT8ARRAY); + addHeap(HEAP16, INT16ARRAY); + addHeap(HEAP32, INT32ARRAY); + addHeap(HEAPU8, UINT8ARRAY); + addHeap(HEAPU16, UINT16ARRAY); + addHeap(HEAPU32, UINT32ARRAY); + addHeap(HEAPF32, FLOAT32ARRAY); + addHeap(HEAPF64, FLOAT64ARRAY); + } // core asm.js imports auto addMath = [&](IString name, IString base) { Ref theVar = ValueBuilder::makeVar(); ast->push_back(theVar); ValueBuilder::appendToVar( - theVar, - name, - ValueBuilder::makeDot( - ValueBuilder::makeDot(ValueBuilder::makeName(GLOBAL), MATH), base)); + theVar, name, ValueBuilder::makeDot(ValueBuilder::makeName(MATH), base)); }; addMath(MATH_IMUL, IMUL); addMath(MATH_FROUND, FROUND); @@ -473,6 +571,7 @@ addMath(MATH_MAX, MAX); addMath(MATH_FLOOR, FLOOR); addMath(MATH_CEIL, CEIL); + addMath(MATH_TRUNC, TRUNC); addMath(MATH_SQRT, SQRT); // abort function Ref abortVar = ValueBuilder::makeVar(); @@ -485,22 +584,17 @@ // NaN and Infinity variables Ref nanVar = ValueBuilder::makeVar(); ast->push_back(nanVar); - ValueBuilder::appendToVar( - nanVar, - "nan", - ValueBuilder::makeDot(ValueBuilder::makeName(GLOBAL), "NaN")); + ValueBuilder::appendToVar(nanVar, "nan", ValueBuilder::makeName("NaN")); Ref infinityVar = ValueBuilder::makeVar(); ast->push_back(infinityVar); ValueBuilder::appendToVar( - infinityVar, - "infinity", - ValueBuilder::makeDot(ValueBuilder::makeName(GLOBAL), "Infinity")); + infinityVar, "infinity", ValueBuilder::makeName("Infinity")); } void Wasm2JSBuilder::addFunctionImport(Ref ast, Function* import) { // The scratch memory helpers are emitted in the glue, see code and comments // below. - if (ABI::wasm2js::isScratchMemoryHelper(import->base)) { + if (ABI::wasm2js::isHelper(import->base)) { return; } Ref theVar = ValueBuilder::makeVar(); @@ -528,31 +622,59 @@ } void Wasm2JSBuilder::addTable(Ref ast, Module* wasm) { + if (!wasm->table.exists) { + return; + } + + bool perElementInit = false; + // Emit a simple flat table as a JS array literal. Otherwise, // emit assignments separately for each index. - FlatTable flat(wasm->table); - if (flat.valid && !wasm->table.imported()) { - Ref theVar = ValueBuilder::makeVar(); - ast->push_back(theVar); - Ref theArray = ValueBuilder::makeArray(); - ValueBuilder::appendToVar(theVar, FUNCTION_TABLE, theArray); - Name null("null"); - for (auto& name : flat.names) { - if (name.is()) { - name = fromName(name, NameScope::Top); - } else { - name = null; + Ref theArray = ValueBuilder::makeArray(); + if (!wasm->table.imported()) { + TableUtils::FlatTable flat(wasm->table); + if (flat.valid) { + Name null("null"); + for (auto& name : flat.names) { + if (name.is()) { + name = fromName(name, NameScope::Top); + } else { + name = null; + } + ValueBuilder::appendToArray(theArray, ValueBuilder::makeName(name)); } - ValueBuilder::appendToArray(theArray, ValueBuilder::makeName(name)); + } else { + perElementInit = true; + Ref initial = + ValueBuilder::makeInt(Address::address32_t(wasm->table.initial.addr)); + theArray = ValueBuilder::makeNew( + ValueBuilder::makeCall(IString("Array"), initial)); } } else { - if (!wasm->table.imported()) { - Ref theVar = ValueBuilder::makeVar(); - ast->push_back(theVar); - ValueBuilder::appendToVar( - theVar, FUNCTION_TABLE, ValueBuilder::makeArray()); + perElementInit = true; + } + + if (isTableExported(*wasm)) { + // If the table is exported use a fake WebAssembly.Table object + // We don't handle the case where a table is both imported and exported. + if (wasm->table.imported()) { + Fatal() << "wasm2js doesn't support a table that is both imported and " + "exported\n"; } + Ref theVar = ValueBuilder::makeVar(); + ast->push_back(theVar); + Ref table = ValueBuilder::makeCall(IString("Table"), theArray); + ValueBuilder::appendToVar(theVar, FUNCTION_TABLE, table); + } else if (!wasm->table.imported()) { + // Otherwise if the table is internal (neither imported not exported). + // Just use a plain array in this case, avoiding the Table. + Ref theVar = ValueBuilder::makeVar(); + ast->push_back(theVar); + ValueBuilder::appendToVar(theVar, FUNCTION_TABLE, theArray); + } + + if (perElementInit) { // TODO: optimize for size for (auto& segment : wasm->table.segments) { auto offset = segment.offset; @@ -577,39 +699,70 @@ } } +void Wasm2JSBuilder::addStart(Ref ast, Module* wasm) { + if (wasm->start.is()) { + ast->push_back( + ValueBuilder::makeCall(fromName(wasm->start, NameScope::Top))); + } +} + void Wasm2JSBuilder::addExports(Ref ast, Module* wasm) { Ref exports = ValueBuilder::makeObject(); for (auto& export_ : wasm->exports) { - if (export_->kind == ExternalKind::Function) { - ValueBuilder::appendToObjectWithQuotes( - exports, - fromName(export_->name, NameScope::Top), - ValueBuilder::makeName(fromName(export_->value, NameScope::Top))); - } - if (export_->kind == ExternalKind::Memory) { - Ref descs = ValueBuilder::makeObject(); - Ref growDesc = ValueBuilder::makeObject(); - ValueBuilder::appendToObjectWithQuotes(descs, IString("grow"), growDesc); - if (wasm->memory.max > wasm->memory.initial) { + switch (export_->kind) { + case ExternalKind::Function: { + ValueBuilder::appendToObjectWithQuotes( + exports, + fromName(export_->name, NameScope::Export), + ValueBuilder::makeName(fromName(export_->value, NameScope::Top))); + break; + } + case ExternalKind::Memory: { + Ref descs = ValueBuilder::makeObject(); + Ref growDesc = ValueBuilder::makeObject(); + ValueBuilder::appendToObjectWithQuotes( + descs, IString("grow"), growDesc); + if (wasm->memory.max > wasm->memory.initial) { + ValueBuilder::appendToObjectWithQuotes( + growDesc, + IString("value"), + ValueBuilder::makeName(WASM_MEMORY_GROW)); + } + Ref bufferDesc = ValueBuilder::makeObject(); + Ref bufferGetter = ValueBuilder::makeFunction(IString("")); + bufferGetter[3]->push_back( + ValueBuilder::makeReturn(ValueBuilder::makeName(BUFFER))); + ValueBuilder::appendToObjectWithQuotes( + bufferDesc, IString("get"), bufferGetter); ValueBuilder::appendToObjectWithQuotes( - growDesc, IString("value"), ValueBuilder::makeName(WASM_MEMORY_GROW)); + descs, IString("buffer"), bufferDesc); + Ref memory = ValueBuilder::makeCall( + ValueBuilder::makeDot(ValueBuilder::makeName(IString("Object")), + IString("create")), + ValueBuilder::makeDot(ValueBuilder::makeName(IString("Object")), + IString("prototype"))); + ValueBuilder::appendToCall(memory, descs); + ValueBuilder::appendToObjectWithQuotes( + exports, fromName(export_->name, NameScope::Export), memory); + break; } - Ref bufferDesc = ValueBuilder::makeObject(); - Ref bufferGetter = ValueBuilder::makeFunction(IString("")); - bufferGetter[3]->push_back( - ValueBuilder::makeReturn(ValueBuilder::makeName(BUFFER))); - ValueBuilder::appendToObjectWithQuotes( - bufferDesc, IString("get"), bufferGetter); - ValueBuilder::appendToObjectWithQuotes( - descs, IString("buffer"), bufferDesc); - Ref memory = ValueBuilder::makeCall( - ValueBuilder::makeDot(ValueBuilder::makeName(IString("Object")), - IString("create")), - ValueBuilder::makeDot(ValueBuilder::makeName(IString("Object")), - IString("prototype"))); - ValueBuilder::appendToCall(memory, descs); - ValueBuilder::appendToObjectWithQuotes( - exports, fromName(export_->name, NameScope::Top), memory); + case ExternalKind::Table: { + ValueBuilder::appendToObjectWithQuotes( + exports, + fromName(export_->name, NameScope::Export), + ValueBuilder::makeName(FUNCTION_TABLE)); + break; + } + case ExternalKind::Global: { + ValueBuilder::appendToObjectWithQuotes( + exports, + fromName(export_->name, NameScope::Export), + ValueBuilder::makeName(fromName(export_->value, NameScope::Top))); + break; + } + case ExternalKind::Event: + case ExternalKind::Invalid: + Fatal() << "unsupported export type: " << export_->name << "\n"; } } if (wasm->memory.exists) { @@ -622,7 +775,8 @@ void Wasm2JSBuilder::addGlobal(Ref ast, Global* global) { if (auto* const_ = global->init->dynCast()) { Ref theValue; - switch (const_->type.getSingle()) { + TODO_SINGLE_COMPOUND(const_->type); + switch (const_->type.getBasic()) { case Type::i32: { theValue = ValueBuilder::makeInt(const_->value.geti32()); break; @@ -639,7 +793,9 @@ ValueBuilder::makeDouble(const_->value.getf64()), ASM_DOUBLE); break; } - default: { assert(false && "Top const type not supported"); } + default: { + assert(false && "Top const type not supported"); + } } Ref theVar = ValueBuilder::makeVar(); ast->push_back(theVar); @@ -850,7 +1006,6 @@ Function* func; Module* module; bool standaloneFunction; - MixedArena allocator; SwitchProcessor switchProcessor; @@ -983,8 +1138,8 @@ continueLabels.insert(asmLabel); Ref body = visit(curr->body, result); // if we can reach the end of the block, we must leave the while (1) loop - if (curr->body->type != Type::Type::unreachable) { - assert(curr->body->type == Type::Type::none); // flat IR + if (curr->body->type != Type::unreachable) { + assert(curr->body->type == Type::none); // flat IR body = blockify(body); flattenAppend( body, ValueBuilder::makeBreak(fromName(asmLabel, NameScope::Label))); @@ -1006,7 +1161,7 @@ // we need an equivalent to an if here, so use that code Break fakeBreak = *curr; fakeBreak.condition = nullptr; - If fakeIf(allocator); + If fakeIf; fakeIf.condition = curr->condition; fakeIf.ifTrue = &fakeBreak; return visit(&fakeIf, result); @@ -1048,7 +1203,7 @@ for (auto* c : code) { ValueBuilder::appendCodeToSwitch( theSwitch, blockify(visit(c, NO_RESULT)), false); - hoistedEndsWithUnreachable = c->type == Type::Type::unreachable; + hoistedEndsWithUnreachable = c->type == Type::unreachable; } } // After the hoisted cases, if any remain we must make sure not to @@ -1140,6 +1295,14 @@ } } } + // Ensure the function pointer is a number. In general in wasm2js we are + // ok with true/false being present, as they are immediately cast to a + // number anyhow on their use. However, FUNCTION_TABLE[true] is *not* the + // same as FUNCTION_TABLE[1], so we must cast. This is a rare exception + // because FUNCTION_TABLE is just a normal JS object, not a typed array + // or a mathematical operation (all of which coerce to a number for us). + auto target = visit(curr->target, EXPRESSION_RESULT); + target = makeAsmCoercion(target, ASM_INT); if (mustReorder) { Ref ret; ScopedTemp idx(Type::i32, parent, func); @@ -1149,7 +1312,9 @@ IString temp = temps.back()->temp; sequenceAppend(ret, visitAndAssign(operand, temp)); } - sequenceAppend(ret, visitAndAssign(curr->target, idx)); + sequenceAppend(ret, + ValueBuilder::makeBinary( + ValueBuilder::makeName(idx.getName()), SET, target)); Ref theCall = ValueBuilder::makeCall(ValueBuilder::makeSub( ValueBuilder::makeName(FUNCTION_TABLE), idx.getAstName())); for (size_t i = 0; i < temps.size(); i++) { @@ -1166,9 +1331,8 @@ return ret; } else { // Target has no side effects, emit simple code - Ref theCall = ValueBuilder::makeCall( - ValueBuilder::makeSub(ValueBuilder::makeName(FUNCTION_TABLE), - visit(curr->target, EXPRESSION_RESULT))); + Ref theCall = ValueBuilder::makeCall(ValueBuilder::makeSub( + ValueBuilder::makeName(FUNCTION_TABLE), target)); for (auto* operand : curr->operands) { theCall[2]->push_back(visit(operand, EXPRESSION_RESULT)); } @@ -1214,7 +1378,7 @@ // normal load Ref ptr = makePointer(curr->ptr, curr->offset); Ref ret; - switch (curr->type.getSingle()) { + switch (curr->type.getBasic()) { case Type::i32: { switch (curr->bytes) { case 1: @@ -1236,9 +1400,8 @@ ValueBuilder::makePtrShift(ptr, 2)); break; default: { - std::cerr << "Unhandled number of bytes in i32 load: " - << curr->bytes << std::endl; - abort(); + Fatal() << "Unhandled number of bytes in i32 load: " + << curr->bytes; } } break; @@ -1252,10 +1415,16 @@ ValueBuilder::makePtrShift(ptr, 3)); break; default: { - std::cerr << "Unhandled type in load: " << curr->type << std::endl; - abort(); + Fatal() << "Unhandled type in load: " << curr->type; } } + if (curr->isAtomic) { + Ref call = ValueBuilder::makeCall( + ValueBuilder::makeDot(ValueBuilder::makeName(ATOMICS), LOAD)); + ValueBuilder::appendToCall(call, ret[1]); + ValueBuilder::appendToCall(call, ret[2]); + ret = call; + } // Coercions are not actually needed, as if the user reads beyond valid // memory, it's undefined behavior anyhow, and so we don't care much about // slowness of undefined values etc. @@ -1269,7 +1438,7 @@ Ref visitStore(Store* curr) { if (module->memory.initial < module->memory.max && - curr->type != Type::Type::unreachable) { + curr->type != Type::unreachable) { // In JS, if memory grows then it is dangerous to write // HEAP[f()] = .. // or @@ -1282,8 +1451,8 @@ !FindAll(curr->value).list.empty() || !FindAll(curr->ptr).list.empty() || !FindAll(curr->value).list.empty() || - !FindAll(curr->ptr).list.empty() || - !FindAll(curr->value).list.empty()) { + !FindAll(curr->ptr).list.empty() || + !FindAll(curr->value).list.empty()) { Ref ret; ScopedTemp ptr(Type::i32, parent, func); sequenceAppend(ret, visitAndAssign(curr->ptr, ptr)); @@ -1310,7 +1479,7 @@ Ref ptr = makePointer(curr->ptr, curr->offset); Ref value = visit(curr->value, EXPRESSION_RESULT); Ref ret; - switch (curr->valueType.getSingle()) { + switch (curr->valueType.getBasic()) { case Type::i32: { switch (curr->bytes) { case 1: @@ -1339,18 +1508,24 @@ ValueBuilder::makePtrShift(ptr, 3)); break; default: { - std::cerr << "Unhandled type in store: " << curr->valueType - << std::endl; - abort(); + Fatal() << "Unhandled type in store: " << curr->valueType; } } + if (curr->isAtomic) { + Ref call = ValueBuilder::makeCall( + ValueBuilder::makeDot(ValueBuilder::makeName(ATOMICS), STORE)); + ValueBuilder::appendToCall(call, ret[1]); + ValueBuilder::appendToCall(call, ret[2]); + ValueBuilder::appendToCall(call, value); + return call; + } return ValueBuilder::makeBinary(ret, SET, value); } Ref visitDrop(Drop* curr) { return visit(curr->value, NO_RESULT); } Ref visitConst(Const* curr) { - switch (curr->type.getSingle()) { + switch (curr->type.getBasic()) { case Type::i32: return ValueBuilder::makeInt(curr->value.geti32()); // An i64 argument translates to two actual arguments to asm.js @@ -1367,7 +1542,7 @@ } case Type::f32: { Ref ret = ValueBuilder::makeCall(MATH_FROUND); - Const fake(allocator); + Const fake; fake.value = Literal(double(curr->value.getf32())); fake.type = Type::f64; ret[2]->push_back(visitConst(&fake)); @@ -1384,13 +1559,13 @@ PLUS, ValueBuilder::makeDouble(curr->value.getf64())); } default: - abort(); + Fatal() << "unknown const type"; } } Ref visitUnary(Unary* curr) { // normal unary - switch (curr->type.getSingle()) { + switch (curr->type.getBasic()) { case Type::i32: { switch (curr->op) { case ClzInt32: { @@ -1408,16 +1583,19 @@ L_NOT, visit(curr->value, EXPRESSION_RESULT)); } case ReinterpretFloat32: { - ABI::wasm2js::ensureScratchMemoryHelpers( - module, ABI::wasm2js::SCRATCH_STORE_F32); - ABI::wasm2js::ensureScratchMemoryHelpers( - module, ABI::wasm2js::SCRATCH_LOAD_I32); + ABI::wasm2js::ensureHelpers(module, + ABI::wasm2js::SCRATCH_STORE_F32); + ABI::wasm2js::ensureHelpers(module, + ABI::wasm2js::SCRATCH_LOAD_I32); Ref store = ValueBuilder::makeCall(ABI::wasm2js::SCRATCH_STORE_F32, visit(curr->value, EXPRESSION_RESULT)); + // 32-bit scratch memory uses index 2, so that it does not + // conflict with indexes 0, 1 which are used for 64-bit, see + // comment where |scratchBuffer| is defined. Ref load = ValueBuilder::makeCall(ABI::wasm2js::SCRATCH_LOAD_I32, - ValueBuilder::makeInt(0)); + ValueBuilder::makeInt(2)); return ValueBuilder::makeSeq(store, load); } // generate (~~expr), what Emscripten does @@ -1443,10 +1621,24 @@ TRSHIFT, ValueBuilder::makeNum(0)); } + case ExtendS8Int32: { + return ValueBuilder::makeBinary( + ValueBuilder::makeBinary(visit(curr->value, EXPRESSION_RESULT), + LSHIFT, + ValueBuilder::makeNum(24)), + RSHIFT, + ValueBuilder::makeNum(24)); + } + case ExtendS16Int32: { + return ValueBuilder::makeBinary( + ValueBuilder::makeBinary(visit(curr->value, EXPRESSION_RESULT), + LSHIFT, + ValueBuilder::makeNum(16)), + RSHIFT, + ValueBuilder::makeNum(16)); + } default: { - std::cerr << "Unhandled unary i32 operator: " << curr - << std::endl; - abort(); + Fatal() << "Unhandled unary i32 operator: " << curr; } } } @@ -1474,6 +1666,11 @@ ret = ValueBuilder::makeCall( MATH_FLOOR, visit(curr->value, EXPRESSION_RESULT)); break; + case TruncFloat32: + case TruncFloat64: + ret = ValueBuilder::makeCall( + MATH_TRUNC, visit(curr->value, EXPRESSION_RESULT)); + break; case SqrtFloat32: case SqrtFloat64: ret = ValueBuilder::makeCall( @@ -1486,14 +1683,17 @@ return makeAsmCoercion(visit(curr->value, EXPRESSION_RESULT), ASM_FLOAT); case ReinterpretInt32: { - ABI::wasm2js::ensureScratchMemoryHelpers( - module, ABI::wasm2js::SCRATCH_STORE_I32); - ABI::wasm2js::ensureScratchMemoryHelpers( - module, ABI::wasm2js::SCRATCH_LOAD_F32); - + ABI::wasm2js::ensureHelpers(module, + ABI::wasm2js::SCRATCH_STORE_I32); + ABI::wasm2js::ensureHelpers(module, + ABI::wasm2js::SCRATCH_LOAD_F32); + + // 32-bit scratch memory uses index 2, so that it does not + // conflict with indexes 0, 1 which are used for 64-bit, see + // comment where |scratchBuffer| is defined. Ref store = ValueBuilder::makeCall(ABI::wasm2js::SCRATCH_STORE_I32, - ValueBuilder::makeNum(0), + ValueBuilder::makeNum(2), visit(curr->value, EXPRESSION_RESULT)); Ref load = ValueBuilder::makeCall(ABI::wasm2js::SCRATCH_LOAD_F32); return ValueBuilder::makeSeq(store, load); @@ -1524,8 +1724,6 @@ // TODO: more complex unary conversions case NearestFloat32: case NearestFloat64: - case TruncFloat32: - case TruncFloat64: WASM_UNREACHABLE( "operation should have been removed in previous passes"); @@ -1538,8 +1736,7 @@ return ret; } default: { - std::cerr << "Unhandled type in unary: " << curr << std::endl; - abort(); + Fatal() << "Unhandled type in unary: " << curr; } } } @@ -1549,7 +1746,7 @@ Ref left = visit(curr->left, EXPRESSION_RESULT); Ref right = visit(curr->right, EXPRESSION_RESULT); Ref ret; - switch (curr->type.getSingle()) { + switch (curr->type.getBasic()) { case Type::i32: { switch (curr->op) { case AddInt32: @@ -1702,17 +1899,14 @@ case CopySignFloat32: case CopySignFloat64: default: - std::cerr << "Unhandled binary float operator: " << curr - << std::endl; - abort(); + Fatal() << "Unhandled binary float operator: "; } if (curr->type == Type::f32) { return makeAsmCoercion(ret, ASM_FLOAT); } return ret; default: - std::cerr << "Unhandled type in binary: " << curr << std::endl; - abort(); + Fatal() << "Unhandled type in binary: " << curr; } return makeAsmCoercion(ret, wasmToAsmType(curr->type)); } @@ -1773,51 +1967,131 @@ return ValueBuilder::makeReturn(val); } - Ref visitHost(Host* curr) { - if (curr->op == HostOp::MemoryGrow) { - if (module->memory.exists && - module->memory.max > module->memory.initial) { - return ValueBuilder::makeCall( - WASM_MEMORY_GROW, - makeAsmCoercion(visit(curr->operands[0], EXPRESSION_RESULT), - wasmToAsmType(curr->operands[0]->type))); - } else { - return ValueBuilder::makeCall(ABORT_FUNC); - } - } else if (curr->op == HostOp::MemorySize) { - return ValueBuilder::makeCall(WASM_MEMORY_SIZE); + Ref visitMemorySize(MemorySize* curr) { + return ValueBuilder::makeCall(WASM_MEMORY_SIZE); + } + + Ref visitMemoryGrow(MemoryGrow* curr) { + if (module->memory.exists && + module->memory.max > module->memory.initial) { + return ValueBuilder::makeCall( + WASM_MEMORY_GROW, + makeAsmCoercion(visit(curr->delta, EXPRESSION_RESULT), + wasmToAsmType(curr->delta->type))); + } else { + return ValueBuilder::makeCall(ABORT_FUNC); } - WASM_UNREACHABLE("unexpected expr type"); // TODO } Ref visitNop(Nop* curr) { return ValueBuilder::makeToplevel(); } + Ref visitPrefetch(Prefetch* curr) { return ValueBuilder::makeToplevel(); } Ref visitUnreachable(Unreachable* curr) { return ValueBuilder::makeCall(ABORT_FUNC); } - // TODO's + // Atomics + + struct HeapAndPointer { + Ref heap; + Ref ptr; + }; + + HeapAndPointer + getHeapAndAdjustedPointer(Index bytes, Expression* ptr, Index offset) { + IString heap; + Ref adjustedPtr = makePointer(ptr, offset); + switch (bytes) { + case 1: + heap = HEAP8; + break; + case 2: + heap = HEAP16; + adjustedPtr = ValueBuilder::makePtrShift(adjustedPtr, 1); + break; + case 4: + heap = HEAP32; + adjustedPtr = ValueBuilder::makePtrShift(adjustedPtr, 2); + break; + default: { + WASM_UNREACHABLE("unimp"); + } + } + return {ValueBuilder::makeName(heap), adjustedPtr}; + } Ref visitAtomicRMW(AtomicRMW* curr) { - unimplemented(curr); - WASM_UNREACHABLE("unimp"); + auto hap = + getHeapAndAdjustedPointer(curr->bytes, curr->ptr, curr->offset); + IString target; + switch (curr->op) { + case RMWAdd: + target = IString("add"); + break; + case RMWSub: + target = IString("sub"); + break; + case RMWAnd: + target = IString("and"); + break; + case RMWOr: + target = IString("or"); + break; + case RMWXor: + target = IString("xor"); + break; + case RMWXchg: + target = IString("exchange"); + break; + default: + WASM_UNREACHABLE("unimp"); + } + Ref call = ValueBuilder::makeCall( + ValueBuilder::makeDot(ValueBuilder::makeName(ATOMICS), target)); + ValueBuilder::appendToCall(call, hap.heap); + ValueBuilder::appendToCall(call, hap.ptr); + ValueBuilder::appendToCall(call, visit(curr->value, EXPRESSION_RESULT)); + return call; } + Ref visitAtomicCmpxchg(AtomicCmpxchg* curr) { - unimplemented(curr); - WASM_UNREACHABLE("unimp"); + auto hap = + getHeapAndAdjustedPointer(curr->bytes, curr->ptr, curr->offset); + Ref expected = visit(curr->expected, EXPRESSION_RESULT); + Ref replacement = visit(curr->replacement, EXPRESSION_RESULT); + Ref call = ValueBuilder::makeCall(ValueBuilder::makeDot( + ValueBuilder::makeName(ATOMICS), COMPARE_EXCHANGE)); + ValueBuilder::appendToCall(call, hap.heap); + ValueBuilder::appendToCall(call, hap.ptr); + ValueBuilder::appendToCall(call, expected); + ValueBuilder::appendToCall(call, replacement); + return makeAsmCoercion(call, wasmToAsmType(curr->type)); } + Ref visitAtomicWait(AtomicWait* curr) { unimplemented(curr); WASM_UNREACHABLE("unimp"); } + Ref visitAtomicNotify(AtomicNotify* curr) { - unimplemented(curr); - WASM_UNREACHABLE("unimp"); + Ref call = ValueBuilder::makeCall(ValueBuilder::makeDot( + ValueBuilder::makeName(ATOMICS), IString("notify"))); + ValueBuilder::appendToCall(call, ValueBuilder::makeName(HEAP32)); + ValueBuilder::appendToCall( + call, + ValueBuilder::makePtrShift(makePointer(curr->ptr, curr->offset), 2)); + ValueBuilder::appendToCall(call, + visit(curr->notifyCount, EXPRESSION_RESULT)); + return call; } + Ref visitAtomicFence(AtomicFence* curr) { // Sequentially consistent fences can be lowered to no operation return ValueBuilder::makeToplevel(); } + + // TODOs + Ref visitSIMDExtract(SIMDExtract* curr) { unimplemented(curr); WASM_UNREACHABLE("unimp"); @@ -1842,21 +2116,36 @@ unimplemented(curr); WASM_UNREACHABLE("unimp"); } - Ref visitMemoryInit(MemoryInit* curr) { + Ref visitSIMDLoadStoreLane(SIMDLoadStoreLane* curr) { unimplemented(curr); WASM_UNREACHABLE("unimp"); } + Ref visitMemoryInit(MemoryInit* curr) { + ABI::wasm2js::ensureHelpers(module, ABI::wasm2js::MEMORY_INIT); + return ValueBuilder::makeCall(ABI::wasm2js::MEMORY_INIT, + ValueBuilder::makeNum(curr->segment), + visit(curr->dest, EXPRESSION_RESULT), + visit(curr->offset, EXPRESSION_RESULT), + visit(curr->size, EXPRESSION_RESULT)); + } Ref visitDataDrop(DataDrop* curr) { - unimplemented(curr); - WASM_UNREACHABLE("unimp"); + ABI::wasm2js::ensureHelpers(module, ABI::wasm2js::DATA_DROP); + return ValueBuilder::makeCall(ABI::wasm2js::DATA_DROP, + ValueBuilder::makeNum(curr->segment)); } Ref visitMemoryCopy(MemoryCopy* curr) { - unimplemented(curr); - WASM_UNREACHABLE("unimp"); + ABI::wasm2js::ensureHelpers(module, ABI::wasm2js::MEMORY_COPY); + return ValueBuilder::makeCall(ABI::wasm2js::MEMORY_COPY, + visit(curr->dest, EXPRESSION_RESULT), + visit(curr->source, EXPRESSION_RESULT), + visit(curr->size, EXPRESSION_RESULT)); } Ref visitMemoryFill(MemoryFill* curr) { - unimplemented(curr); - WASM_UNREACHABLE("unimp"); + ABI::wasm2js::ensureHelpers(module, ABI::wasm2js::MEMORY_FILL); + return ValueBuilder::makeCall(ABI::wasm2js::MEMORY_FILL, + visit(curr->dest, EXPRESSION_RESULT), + visit(curr->value, EXPRESSION_RESULT), + visit(curr->size, EXPRESSION_RESULT)); } Ref visitRefNull(RefNull* curr) { unimplemented(curr); @@ -1870,6 +2159,10 @@ unimplemented(curr); WASM_UNREACHABLE("unimp"); } + Ref visitRefEq(RefEq* curr) { + unimplemented(curr); + WASM_UNREACHABLE("unimp"); + } Ref visitTry(Try* curr) { unimplemented(curr); WASM_UNREACHABLE("unimp"); @@ -1886,11 +2179,75 @@ unimplemented(curr); WASM_UNREACHABLE("unimp"); } - Ref visitPush(Push* curr) { + Ref visitPop(Pop* curr) { unimplemented(curr); WASM_UNREACHABLE("unimp"); } - Ref visitPop(Pop* curr) { + Ref visitTupleMake(TupleMake* curr) { + unimplemented(curr); + WASM_UNREACHABLE("unimp"); + } + Ref visitTupleExtract(TupleExtract* curr) { + unimplemented(curr); + WASM_UNREACHABLE("unimp"); + } + Ref visitI31New(I31New* curr) { + unimplemented(curr); + WASM_UNREACHABLE("unimp"); + } + Ref visitI31Get(I31Get* curr) { + unimplemented(curr); + WASM_UNREACHABLE("unimp"); + } + Ref visitCallRef(CallRef* curr) { + unimplemented(curr); + WASM_UNREACHABLE("unimp"); + } + Ref visitRefTest(RefTest* curr) { + unimplemented(curr); + WASM_UNREACHABLE("unimp"); + } + Ref visitRefCast(RefCast* curr) { + unimplemented(curr); + WASM_UNREACHABLE("unimp"); + } + Ref visitBrOnCast(BrOnCast* curr) { + unimplemented(curr); + WASM_UNREACHABLE("unimp"); + } + Ref visitRttCanon(RttCanon* curr) { + unimplemented(curr); + WASM_UNREACHABLE("unimp"); + } + Ref visitRttSub(RttSub* curr) { + unimplemented(curr); + WASM_UNREACHABLE("unimp"); + } + Ref visitStructNew(StructNew* curr) { + unimplemented(curr); + WASM_UNREACHABLE("unimp"); + } + Ref visitStructGet(StructGet* curr) { + unimplemented(curr); + WASM_UNREACHABLE("unimp"); + } + Ref visitStructSet(StructSet* curr) { + unimplemented(curr); + WASM_UNREACHABLE("unimp"); + } + Ref visitArrayNew(ArrayNew* curr) { + unimplemented(curr); + WASM_UNREACHABLE("unimp"); + } + Ref visitArrayGet(ArrayGet* curr) { + unimplemented(curr); + WASM_UNREACHABLE("unimp"); + } + Ref visitArraySet(ArraySet* curr) { + unimplemented(curr); + WASM_UNREACHABLE("unimp"); + } + Ref visitArrayLen(ArrayLen* curr) { unimplemented(curr); WASM_UNREACHABLE("unimp"); } @@ -1926,11 +2283,11 @@ ast->push_back(memorySizeFunc); if (wasm->memory.max > wasm->memory.initial) { - addMemoryGrowthFuncs(ast, wasm); + addMemoryGrowFunc(ast, wasm); } } -void Wasm2JSBuilder::addMemoryGrowthFuncs(Ref ast, Module* wasm) { +void Wasm2JSBuilder::addMemoryGrowFunc(Ref ast, Module* wasm) { Ref memoryGrowFunc = ValueBuilder::makeFunction(WASM_MEMORY_GROW); ValueBuilder::appendArgumentToFunction(memoryGrowFunc, IString("pagesToAdd")); @@ -1969,7 +2326,7 @@ IString("&&"), ValueBuilder::makeBinary(ValueBuilder::makeName(IString("newPages")), LT, - ValueBuilder::makeInt(Memory::kMaxSize))), + ValueBuilder::makeInt(Memory::kMaxSize32))), block, NULL)); @@ -1986,12 +2343,11 @@ Ref newHEAP8 = ValueBuilder::makeVar(); ValueBuilder::appendToBlock(block, newHEAP8); - ValueBuilder::appendToVar( - newHEAP8, - IString("newHEAP8"), - ValueBuilder::makeNew(ValueBuilder::makeCall( - ValueBuilder::makeDot(ValueBuilder::makeName(GLOBAL), INT8ARRAY), - ValueBuilder::makeName(IString("newBuffer"))))); + ValueBuilder::appendToVar(newHEAP8, + IString("newHEAP8"), + ValueBuilder::makeNew(ValueBuilder::makeCall( + ValueBuilder::makeName(INT8ARRAY), + ValueBuilder::makeName(IString("newBuffer"))))); ValueBuilder::appendToBlock( block, @@ -2000,12 +2356,6 @@ IString("set")), ValueBuilder::makeName(HEAP8))); - ValueBuilder::appendToBlock( - block, - ValueBuilder::makeBinary(ValueBuilder::makeName(HEAP8), - SET, - ValueBuilder::makeName(IString("newHEAP8")))); - auto setHeap = [&](IString name, IString view) { ValueBuilder::appendToBlock( block, @@ -2013,7 +2363,7 @@ ValueBuilder::makeName(name), SET, ValueBuilder::makeNew(ValueBuilder::makeCall( - ValueBuilder::makeDot(ValueBuilder::makeName(GLOBAL), view), + ValueBuilder::makeName(view), ValueBuilder::makeName(IString("newBuffer")))))); }; @@ -2040,7 +2390,15 @@ ValueBuilder::makeDot(ValueBuilder::makeName("memory"), ValueBuilder::makeName(BUFFER)), SET, - ValueBuilder::makeName(IString("newBuffer")))); + ValueBuilder::makeName(BUFFER))); + } + + if (needsBufferView(*wasm)) { + ValueBuilder::appendToBlock( + block, + ValueBuilder::makeBinary(ValueBuilder::makeName("bufferView"), + SET, + ValueBuilder::makeName(HEAPU8))); } memoryGrowFunc[3]->push_back( @@ -2074,10 +2432,8 @@ void emitPostEmscripten(); void emitPostES6(); - void emitMemory(std::string buffer, - std::string segmentWriter, - std::function accessGlobal); - void emitScratchMemorySupport(); + void emitMemory(); + void emitSpecialSupport(); }; void Wasm2JSGlue::emitPre() { @@ -2087,11 +2443,33 @@ emitPreES6(); } - emitScratchMemorySupport(); + if (isTableExported(wasm)) { + out << "function Table(ret) {\n"; + if (wasm.table.initial == wasm.table.max) { + out << " // grow method not included; table is not growable\n"; + } else { + out << " ret.grow = function(by) {\n" + << " var old = this.length;\n" + << " this.length = this.length + by;\n" + << " return old;\n" + << " };\n"; + } + out << " ret.set = function(i, func) {\n" + << " this[i] = func;\n" + << " };\n" + << " ret.get = function(i) {\n" + << " return this[i];\n" + << " };\n" + << " return ret;\n" + << "}\n\n"; + } + + emitMemory(); + emitSpecialSupport(); } void Wasm2JSGlue::emitPreEmscripten() { - out << "function instantiate(asmLibraryArg, wasmMemory, wasmTable) {\n\n"; + out << "function instantiate(asmLibraryArg) {\n"; } void Wasm2JSGlue::emitPreES6() { @@ -2103,8 +2481,7 @@ // yet. if (baseModuleMap.count(base) && baseModuleMap[base] != module) { Fatal() << "the name " << base << " cannot be imported from " - << "two different modules yet\n"; - abort(); + << "two different modules yet"; } baseModuleMap[base] = module; @@ -2116,19 +2493,17 @@ ModuleUtils::iterImportedGlobals( wasm, [&](Global* import) { noteImport(import->module, import->base); }); + ModuleUtils::iterImportedTables( + wasm, [&](Table* import) { noteImport(import->module, import->base); }); ModuleUtils::iterImportedFunctions(wasm, [&](Function* import) { - // The scratch memory helpers are emitted in the glue, see code and comments + // The special helpers are emitted in the glue, see code and comments // below. - if (ABI::wasm2js::isScratchMemoryHelper(import->base)) { + if (ABI::wasm2js::isHelper(import->base)) { return; } noteImport(import->module, import->base); }); - if (wasm.table.exists && wasm.table.imported()) { - out << "import { FUNCTION_TABLE } from 'env';\n"; - } - out << '\n'; } @@ -2141,29 +2516,7 @@ } void Wasm2JSGlue::emitPostEmscripten() { - emitMemory("wasmMemory.buffer", "writeSegment", [](std::string globalName) { - return std::string("asmLibraryArg['") + asmangle(globalName) + "']"; - }); - - out << "return asmFunc({\n" - << " 'Int8Array': Int8Array,\n" - << " 'Int16Array': Int16Array,\n" - << " 'Int32Array': Int32Array,\n" - << " 'Uint8Array': Uint8Array,\n" - << " 'Uint16Array': Uint16Array,\n" - << " 'Uint32Array': Uint32Array,\n" - << " 'Float32Array': Float32Array,\n" - << " 'Float64Array': Float64Array,\n" - << " 'NaN': NaN,\n" - << " 'Infinity': Infinity,\n" - << " 'Math': Math\n" - << " },\n" - << " asmLibraryArg,\n" - << " wasmMemory.buffer\n" - << ")" - << "\n" - << "\n" - << "}"; + out << " return asmFunc(asmLibraryArg);\n}\n"; } void Wasm2JSGlue::emitPostES6() { @@ -2173,43 +2526,45 @@ // // Note that the translation here expects that the lower values of this memory // can be used for conversions, so make sure there's at least one page. - { - auto pages = wasm.memory.initial == 0 ? 1 : wasm.memory.initial.addr; + if (wasm.memory.exists && wasm.memory.imported()) { out << "var mem" << moduleName.str << " = new ArrayBuffer(" - << pages * Memory::kPageSize << ");\n"; + << wasm.memory.initial.addr * Memory::kPageSize << ");\n"; } - emitMemory(std::string("mem") + moduleName.str, - std::string("assign") + moduleName.str, - [](std::string globalName) { return globalName; }); - // Actually invoke the `asmFunc` generated function, passing in all global // values followed by all imports - out << "var ret" << moduleName.str << " = " << moduleName.str << "({" - << "Math," - << "Int8Array," - << "Uint8Array," - << "Int16Array," - << "Uint16Array," - << "Int32Array," - << "Uint32Array," - << "Float32Array," - << "Float64Array," - << "NaN," - << "Infinity" - << "}, {"; - - out << "abort:function() { throw new Error('abort'); }"; + out << "var ret" << moduleName.str << " = " << moduleName.str << "("; + out << " { abort: function() { throw new Error('abort'); }"; ModuleUtils::iterImportedFunctions(wasm, [&](Function* import) { - // The scratch memory helpers are emitted in the glue, see code and comments + // The special helpers are emitted in the glue, see code and comments // below. - if (ABI::wasm2js::isScratchMemoryHelper(import->base)) { + if (ABI::wasm2js::isHelper(import->base)) { return; } - out << "," << asmangle(import->base.str); + out << ",\n " << asmangle(import->base.str); }); - out << "},mem" << moduleName.str << ");\n"; + + ModuleUtils::iterImportedMemories(wasm, [&](Memory* import) { + // The special helpers are emitted in the glue, see code and comments + // below. + if (ABI::wasm2js::isHelper(import->base)) { + return; + } + out << ",\n " << asmangle(import->base.str) << ": { buffer : mem" + << moduleName.str << " }"; + }); + + ModuleUtils::iterImportedTables(wasm, [&](Table* import) { + // The special helpers are emitted in the glue, see code and comments + // below. + if (ABI::wasm2js::isHelper(import->base)) { + return; + } + out << ",\n " << asmangle(import->base.str); + }); + + out << "\n });\n"; if (flags.allowAsserts) { return; @@ -2240,16 +2595,35 @@ } } -void Wasm2JSGlue::emitMemory( - std::string buffer, - std::string segmentWriter, - std::function accessGlobal) { - if (wasm.memory.segments.empty()) { +void Wasm2JSGlue::emitMemory() { + if (needsBufferView(wasm)) { + // Create a helper bufferView to access the buffer if we need one. We use it + // for creating memory segments if we have any (we may not if the segments + // are shipped in a side .mem file, for example), and also in bulk memory + // operations. + // This will get assigned during `asmFunc` (and potentially re-assigned + // during __wasm_memory_grow). + // TODO: We should probably just share a single HEAPU8 var. + out << " var bufferView;\n"; + } + + // If there are no memory segments, we don't need to emit any support code for + // segment creation. + if ((!wasm.memory.exists) || wasm.memory.segments.empty()) { return; } - auto expr = - R"(for (var base64ReverseLookup = new Uint8Array(123/*'z'+1*/), i = 25; i >= 0; --i) { + // If we have passive memory segments, we need to store those. + for (auto& seg : wasm.memory.segments) { + if (seg.isPassive) { + out << " var memorySegments = {};\n"; + break; + } + } + + out << + R"( var base64ReverseLookup = new Uint8Array(123/*'z'+1*/); + for (var i = 25; i >= 0; --i) { base64ReverseLookup[48+i] = 52+i; // '0-9' base64ReverseLookup[65+i] = i; // 'A-Z' base64ReverseLookup[97+i] = 26+i; // 'a-z' @@ -2258,57 +2632,130 @@ base64ReverseLookup[47] = 63; // '/' /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { - var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2); - if (b64[bLength-2] == '=') --end; - if (b64[bLength-1] == '=') --end; - for (; i < bLength; i += 4, j += 3) { + var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2) - (b64[bLength-2] == '=') - (b64[bLength-1] == '='); + for (; i < bLength; i += 4) { b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; - uint8Array[j] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; - if (j+1 < end) uint8Array[j+1] = b1 << 4 | b2 >> 2; - if (j+2 < end) uint8Array[j+2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; - } - })"; - out << expr << '\n'; - - auto globalOffset = [&](const Memory::Segment& segment) { - if (auto* c = segment.offset->dynCast()) { - return std::to_string(c->value.getInteger()); - } - if (auto* get = segment.offset->dynCast()) { - auto internalName = get->name; - auto importedName = wasm.getGlobal(internalName)->base; - return accessGlobal(asmangle(importedName.str)); + uint8Array[j++] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; + if (j < end) uint8Array[j++] = b1 << 4 | b2 >> 2; + if (j < end) uint8Array[j++] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; + })"; + if (wasm.features.hasBulkMemory()) { + // Passive segments in bulk memory are initialized into new arrays that are + // passed into here, and we need to return them. + out << R"( + return uint8Array;)"; + } + out << R"( + } +)"; + + for (Index i = 0; i < wasm.memory.segments.size(); i++) { + auto& seg = wasm.memory.segments[i]; + if (seg.isPassive) { + // Fancy passive segments are decoded into typed arrays on the side, for + // later copying. + out << "memorySegments[" << i + << "] = base64DecodeToExistingUint8Array(new Uint8Array(" + << seg.data.size() << ")" + << ", 0, \"" << base64Encode(seg.data) << "\");\n"; } - Fatal() << "non-constant offsets aren't supported yet\n"; - }; + } - out << "var bufferView = new Uint8Array(" << buffer << ");\n"; + if (hasActiveSegments(wasm)) { + auto globalOffset = [&](const Memory::Segment& segment) { + if (auto* c = segment.offset->dynCast()) { + return std::to_string(c->value.getInteger()); + } + if (auto* get = segment.offset->dynCast()) { + auto internalName = get->name; + auto importedName = wasm.getGlobal(internalName)->base; + return std::string("imports[") + asmangle(importedName.str) + "]"; + } + Fatal() << "non-constant offsets aren't supported yet\n"; + }; - for (auto& seg : wasm.memory.segments) { - assert(!seg.isPassive && "passive segments not implemented yet"); - out << "base64DecodeToExistingUint8Array(bufferView, " << globalOffset(seg) - << ", \"" << base64Encode(seg.data) << "\");\n"; + out << "function initActiveSegments(imports) {\n"; + for (Index i = 0; i < wasm.memory.segments.size(); i++) { + auto& seg = wasm.memory.segments[i]; + if (!seg.isPassive) { + // Plain active segments are decoded directly into the main memory. + out << " base64DecodeToExistingUint8Array(bufferView, " + << globalOffset(seg) << ", \"" << base64Encode(seg.data) + << "\");\n"; + } + } + out << "}\n"; } } -void Wasm2JSGlue::emitScratchMemorySupport() { - // The scratch memory helpers are emitted here the glue. We may also want to - // emit them inline at some point. (The reason they are imports is so that - // they appear as "intrinsics" placeholders, and not normal functions that - // the optimizer might want to do something with.) - bool needScratchMemory = false; +void Wasm2JSGlue::emitSpecialSupport() { + // The special support functions are emitted as part of the JS glue, if we + // need them. + bool need = false; ModuleUtils::iterImportedFunctions(wasm, [&](Function* import) { - if (ABI::wasm2js::isScratchMemoryHelper(import->base)) { - needScratchMemory = true; + if (ABI::wasm2js::isHelper(import->base)) { + need = true; } }); - if (!needScratchMemory) { + if (!need) { return; } + // Scratch memory uses 3 indexes, each referring to 4 bytes. Indexes 0, 1 are + // used for 64-bit operations, while 2 is for 32-bit. These operations need + // separate indexes because we need to handle the case where the optimizer + // reorders a 32-bit reinterpret in between a 64-bit's split-out parts. + // That situation can occur because the 64-bit reinterpret was split up into + // pieces early, in the 64-bit lowering pass, while the 32-bit reinterprets + // are lowered only at the very end, and until then the optimizer sees wasm + // reinterprets which have no side effects (but they will have the side effect + // of altering scratch memory). That is, conceptual code like this: + // + // a = reinterpret_64(b) + // x = reinterpret_32(y) + // + // turns into + // + // scratch_write(b) + // a_low = scratch_read(0) + // a_high = scratch_read(1) + // x = reinterpret_32(y) + // + // (Note how the single wasm instruction for a 64-bit reinterpret turns into + // multiple operations. We have to do such splitting, because in JS we will + // have to have separate operations to receive each 32-bit chunk anyhow. A + // *32*-bit reinterpret *could* be a single function, but given we have the + // separate functions anyhow for the 64-bit case, it's more compact to reuse + // those.) + // At this point, the scratch_* functions look like they have side effects to + // the optimizer (which is true, as they modify scratch memory), but the + // reinterpret_32 is still a normal wasm instruction without side effects, so + // the optimizer might do this: + // + // scratch_write(b) + // a_low = scratch_read(0) + // x = reinterpret_32(y) ;; this moved one line up + // a_high = scratch_read(1) + // + // When we do lower the reinterpret_32 into JS, we get: + // + // scratch_write(b) + // a_low = scratch_read(0) + // scratch_write(y) + // x = scratch_read() + // a_high = scratch_read(1) + // + // The second write occurs before the first's values have been read, so they + // interfere. + // + // There isn't a problem with reordering 32-bit reinterprets with each other + // as each is lowered into a pair of write+read in JS (after the wasm + // optimizer runs), so they are guaranteed to be adjacent (and a JS optimizer + // that runs later will handle that ok since they are calls, which can always + // have side effects). out << R"( - var scratchBuffer = new ArrayBuffer(8); + var scratchBuffer = new ArrayBuffer(16); var i32ScratchView = new Int32Array(scratchBuffer); var f32ScratchView = new Float32Array(scratchBuffer); var f64ScratchView = new Float64Array(scratchBuffer); @@ -2327,30 +2774,16 @@ return i32ScratchView[index]; } )"; - } else if (import->base == ABI::wasm2js::SCRATCH_STORE_I64) { - out << R"( - function legalimport$wasm2js_scratch_store_i64(low, high) { - i32ScratchView[0] = low; - i32ScratchView[1] = high; - } - )"; - } else if (import->base == ABI::wasm2js::SCRATCH_LOAD_I64) { - out << R"( - function legalimport$wasm2js_scratch_load_i64() { - if (typeof setTempRet0 === 'function') setTempRet0(i32ScratchView[1]); - return i32ScratchView[0]; - } - )"; } else if (import->base == ABI::wasm2js::SCRATCH_STORE_F32) { out << R"( function wasm2js_scratch_store_f32(value) { - f32ScratchView[0] = value; + f32ScratchView[2] = value; } )"; } else if (import->base == ABI::wasm2js::SCRATCH_LOAD_F32) { out << R"( function wasm2js_scratch_load_f32() { - return f32ScratchView[0]; + return f32ScratchView[2]; } )"; } else if (import->base == ABI::wasm2js::SCRATCH_STORE_F64) { @@ -2365,8 +2798,100 @@ return f64ScratchView[0]; } )"; + } else if (import->base == ABI::wasm2js::MEMORY_INIT) { + out << R"( + function wasm2js_memory_init(segment, dest, offset, size) { + // TODO: traps on invalid things + bufferView.set(memorySegments[segment].subarray(offset, offset + size), dest); + } + )"; + } else if (import->base == ABI::wasm2js::MEMORY_FILL) { + out << R"( + function wasm2js_memory_fill(dest, value, size) { + dest = dest >>> 0; + size = size >>> 0; + if (dest + size > bufferView.length) throw "trap: invalid memory.fill"; + bufferView.fill(value, dest, dest + size); + } + )"; + } else if (import->base == ABI::wasm2js::MEMORY_COPY) { + out << R"( + function wasm2js_memory_copy(dest, source, size) { + // TODO: traps on invalid things + bufferView.copyWithin(dest, source, source + size); + } + )"; + } else if (import->base == ABI::wasm2js::DATA_DROP) { + out << R"( + function wasm2js_data_drop(segment) { + // TODO: traps on invalid things + memorySegments[segment] = new Uint8Array(0); + } + )"; + } else if (import->base == ABI::wasm2js::ATOMIC_WAIT_I32) { + out << R"( + function wasm2js_atomic_wait_i32(ptr, expected, timeoutLow, timeoutHigh) { + if (timeoutLow != -1 || timeoutHigh != -1) throw 'unsupported timeout'; + var view = new Int32Array(bufferView.buffer); // TODO cache + var result = Atomics.wait(view, ptr, expected); + if (result == 'ok') return 0; + if (result == 'not-equal') return 1; + if (result == 'timed-out') return 2; + throw 'bad result ' + result; + } + )"; + } else if (import->base == ABI::wasm2js::ATOMIC_RMW_I64) { + out << R"( + function wasm2js_atomic_rmw_i64(op, bytes, offset, ptr, valueLow, valueHigh) { + assert(bytes == 8); // TODO: support 1, 2, 4 as well + var view = new BigInt64Array(bufferView.buffer); // TODO cache + ptr = (ptr + offset) >> 3; + var value = BigInt(valueLow >>> 0) | (BigInt(valueHigh >>> 0) << BigInt(32)); + var result; + switch (op) { + case 0: { // Add + result = Atomics.add(view, ptr, value); + break; + } + case 1: { // Sub + result = Atomics.sub(view, ptr, value); + break; + } + case 2: { // And + result = Atomics.and(view, ptr, value); + break; + } + case 3: { // Or + result = Atomics.or(view, ptr, value); + break; + } + case 4: { // Xor + result = Atomics.xor(view, ptr, value); + break; + } + case 5: { // Xchg + result = Atomics.exchange(view, ptr, value); + break; + } + default: throw 'bad op'; + } + var low = Number(result & BigInt(0xffffffff)) | 0; + var high = Number((result >> BigInt(32)) & BigInt(0xffffffff)) | 0; + stashedBits = high; + return low; + } + )"; + } else if (import->base == ABI::wasm2js::GET_STASHED_BITS) { + out << R"( + var stashedBits = 0; + + function wasm2js_get_stashed_bits() { + return stashedBits; + } + )"; } }); + out << '\n'; } diff -Nru binaryen-91/src/wasm-binary.h binaryen-99/src/wasm-binary.h --- binaryen-91/src/wasm-binary.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm-binary.h 2021-01-07 20:01:06.000000000 +0000 @@ -25,8 +25,6 @@ #include #include -#include "asm_v_wasm.h" -#include "asmjs/shared-constants.h" #include "ir/import-utils.h" #include "ir/module-utils.h" #include "parsing.h" @@ -331,10 +329,7 @@ Event = 13 }; -enum SegmentFlag { - IsPassive = 0x01, - HasMemIndex = 0x02, -}; +enum SegmentFlag { IsPassive = 0x01, HasMemIndex = 0x02 }; enum EncodedType { // value_type @@ -343,20 +338,45 @@ f32 = -0x3, // 0x7d f64 = -0x4, // 0x7c v128 = -0x5, // 0x7b + i8 = -0x6, // 0x7a + i16 = -0x7, // 0x79 // function reference type funcref = -0x10, // 0x70 - // opaque reference type - anyref = -0x11, // 0x6f - // null reference type - nullref = -0x12, // 0x6e - // exception reference type - exnref = -0x18, // 0x68 + // opaque host reference type + externref = -0x11, // 0x6f + // any reference type + anyref = -0x12, // 0x6e + // comparable reference type + eqref = -0x13, // 0x6d + // nullable typed function reference type, with parameter + nullable = -0x14, // 0x6c + // non-nullable typed function reference type, with parameter + nonnullable = -0x15, // 0x6b + // integer reference type + i31ref = -0x16, // 0x6a + // run-time type info type, with depth index n + rtt_n = -0x17, // 0x69 + // run-time type info type, without depth index n + rtt = -0x18, // 0x68 + // exception reference type TODO remove; the code for now is incorrect + exnref = -0x19, // 0x67 // func_type form - Func = -0x20, // 0x60 + Func = -0x20, // 0x60 + Struct = -0x21, // 0x5f + Array = -0x22, // 0x5e // block_type Empty = -0x40 // 0x40 }; +enum EncodedHeapType { + func = -0x10, // 0x70 + extern_ = -0x11, // 0x6f + any = -0x12, // 0x6e + eq = -0x13, // 0x6d + i31 = -0x17, // 0x69, != i31ref + exn = -0x18, // 0x68 +}; + namespace UserSections { extern const char* Name; extern const char* SourceMapUrl; @@ -375,10 +395,23 @@ extern const char* ExceptionHandlingFeature; extern const char* TailCallFeature; extern const char* ReferenceTypesFeature; +extern const char* MultivalueFeature; +extern const char* GCFeature; +extern const char* Memory64Feature; +extern const char* TypedFunctionReferencesFeature; enum Subsection { + NameModule = 0, NameFunction = 1, NameLocal = 2, + // see: https://github.com/WebAssembly/extended-name-section + NameLabel = 3, + NameType = 4, + NameTable = 5, + NameMemory = 6, + NameGlobal = 7, + NameElem = 8, + NameData = 9 }; } // namespace UserSections @@ -585,6 +618,7 @@ // prefixes + GCPrefix = 0xfb, MiscPrefix = 0xfc, SIMDPrefix = 0xfd, AtomicPrefix = 0xfe, @@ -680,188 +714,269 @@ // SIMD opcodes V128Load = 0x00, - V128Store = 0x01, - V128Const = 0x02, - V8x16Shuffle = 0x03, - I8x16Splat = 0x04, - I8x16ExtractLaneS = 0x05, - I8x16ExtractLaneU = 0x06, - I8x16ReplaceLane = 0x07, - I16x8Splat = 0x08, - I16x8ExtractLaneS = 0x09, - I16x8ExtractLaneU = 0x0a, - I16x8ReplaceLane = 0x0b, - I32x4Splat = 0x0c, - I32x4ExtractLane = 0x0d, - I32x4ReplaceLane = 0x0e, - I64x2Splat = 0x0f, - I64x2ExtractLane = 0x10, - I64x2ReplaceLane = 0x11, - F32x4Splat = 0x12, - F32x4ExtractLane = 0x13, - F32x4ReplaceLane = 0x14, - F64x2Splat = 0x15, - F64x2ExtractLane = 0x16, - F64x2ReplaceLane = 0x17, - I8x16Eq = 0x18, - I8x16Ne = 0x19, - I8x16LtS = 0x1a, - I8x16LtU = 0x1b, - I8x16GtS = 0x1c, - I8x16GtU = 0x1d, - I8x16LeS = 0x1e, - I8x16LeU = 0x1f, - I8x16GeS = 0x20, - I8x16GeU = 0x21, - I16x8Eq = 0x22, - I16x8Ne = 0x23, - I16x8LtS = 0x24, - I16x8LtU = 0x25, - I16x8GtS = 0x26, - I16x8GtU = 0x27, - I16x8LeS = 0x28, - I16x8LeU = 0x29, - I16x8GeS = 0x2a, - I16x8GeU = 0x2b, - I32x4Eq = 0x2c, - I32x4Ne = 0x2d, - I32x4LtS = 0x2e, - I32x4LtU = 0x2f, - I32x4GtS = 0x30, - I32x4GtU = 0x31, - I32x4LeS = 0x32, - I32x4LeU = 0x33, - I32x4GeS = 0x34, - I32x4GeU = 0x35, - F32x4Eq = 0x40, - F32x4Ne = 0x41, - F32x4Lt = 0x42, - F32x4Gt = 0x43, - F32x4Le = 0x44, - F32x4Ge = 0x45, - F64x2Eq = 0x46, - F64x2Ne = 0x47, - F64x2Lt = 0x48, - F64x2Gt = 0x49, - F64x2Le = 0x4a, - F64x2Ge = 0x4b, - V128Not = 0x4c, - V128And = 0x4d, - V128Or = 0x4e, - V128Xor = 0x4f, - V128AndNot = 0xd8, - V128Bitselect = 0x50, - I8x16Neg = 0x51, - I8x16AnyTrue = 0x52, - I8x16AllTrue = 0x53, - I8x16Shl = 0x54, - I8x16ShrS = 0x55, - I8x16ShrU = 0x56, - I8x16Add = 0x57, - I8x16AddSatS = 0x58, - I8x16AddSatU = 0x59, - I8x16Sub = 0x5a, - I8x16SubSatS = 0x5b, - I8x16SubSatU = 0x5c, - I8x16Mul = 0x5d, - I8x16MinS = 0x5e, - I8x16MinU = 0x5f, - I8x16MaxS = 0x60, - I8x16MaxU = 0x61, - I8x16AvgrU = 0xd9, - I16x8Neg = 0x62, - I16x8AnyTrue = 0x63, - I16x8AllTrue = 0x64, - I16x8Shl = 0x65, - I16x8ShrS = 0x66, - I16x8ShrU = 0x67, - I16x8Add = 0x68, - I16x8AddSatS = 0x69, - I16x8AddSatU = 0x6a, - I16x8Sub = 0x6b, - I16x8SubSatS = 0x6c, - I16x8SubSatU = 0x6d, - I16x8Mul = 0x6e, - I16x8MinS = 0x6f, - I16x8MinU = 0x70, - I16x8MaxS = 0x71, - I16x8MaxU = 0x72, - I16x8AvgrU = 0xda, - I32x4Neg = 0x73, - I32x4AnyTrue = 0x74, - I32x4AllTrue = 0x75, - I32x4Shl = 0x76, - I32x4ShrS = 0x77, - I32x4ShrU = 0x78, - I32x4Add = 0x79, - I32x4Sub = 0x7c, - I32x4Mul = 0x7f, - I32x4MinS = 0x80, - I32x4MinU = 0x81, - I32x4MaxS = 0x82, - I32x4MaxU = 0x83, - I32x4DotSVecI16x8 = 0xdb, - I64x2Neg = 0x84, - I64x2AnyTrue = 0x85, - I64x2AllTrue = 0x86, - I64x2Shl = 0x87, - I64x2ShrS = 0x88, - I64x2ShrU = 0x89, - I64x2Add = 0x8a, - I64x2Sub = 0x8d, - F32x4Abs = 0x95, - F32x4Neg = 0x96, - F32x4Sqrt = 0x97, - F32x4QFMA = 0x98, - F32x4QFMS = 0x99, - F32x4Add = 0x9a, - F32x4Sub = 0x9b, - F32x4Mul = 0x9c, - F32x4Div = 0x9d, - F32x4Min = 0x9e, - F32x4Max = 0x9f, - F64x2Abs = 0xa0, - F64x2Neg = 0xa1, - F64x2Sqrt = 0xa2, - F64x2QFMA = 0xa3, - F64x2QFMS = 0xa4, - F64x2Add = 0xa5, - F64x2Sub = 0xa6, - F64x2Mul = 0xa7, - F64x2Div = 0xa8, - F64x2Min = 0xa9, - F64x2Max = 0xaa, - I32x4TruncSatSF32x4 = 0xab, - I32x4TruncSatUF32x4 = 0xac, - I64x2TruncSatSF64x2 = 0xad, - I64x2TruncSatUF64x2 = 0xae, - F32x4ConvertSI32x4 = 0xaf, - F32x4ConvertUI32x4 = 0xb0, - F64x2ConvertSI64x2 = 0xb1, - F64x2ConvertUI64x2 = 0xb2, - V8x16LoadSplat = 0xc2, - V16x8LoadSplat = 0xc3, - V32x4LoadSplat = 0xc4, - V64x2LoadSplat = 0xc5, - I8x16NarrowSI16x8 = 0xc6, - I8x16NarrowUI16x8 = 0xc7, - I16x8NarrowSI32x4 = 0xc8, - I16x8NarrowUI32x4 = 0xc9, - I16x8WidenLowSI8x16 = 0xca, - I16x8WidenHighSI8x16 = 0xcb, - I16x8WidenLowUI8x16 = 0xcc, - I16x8WidenHighUI8x16 = 0xcd, - I32x4WidenLowSI16x8 = 0xce, - I32x4WidenHighSI16x8 = 0xcf, - I32x4WidenLowUI16x8 = 0xd0, - I32x4WidenHighUI16x8 = 0xd1, - I16x8LoadExtSVec8x8 = 0xd2, - I16x8LoadExtUVec8x8 = 0xd3, - I32x4LoadExtSVec16x4 = 0xd4, - I32x4LoadExtUVec16x4 = 0xd5, - I64x2LoadExtSVec32x2 = 0xd6, - I64x2LoadExtUVec32x2 = 0xd7, - V8x16Swizzle = 0xc0, + I16x8LoadExtSVec8x8 = 0x01, + I16x8LoadExtUVec8x8 = 0x02, + I32x4LoadExtSVec16x4 = 0x03, + I32x4LoadExtUVec16x4 = 0x04, + I64x2LoadExtSVec32x2 = 0x05, + I64x2LoadExtUVec32x2 = 0x06, + V8x16LoadSplat = 0x07, + V16x8LoadSplat = 0x08, + V32x4LoadSplat = 0x09, + V64x2LoadSplat = 0x0a, + V128Store = 0x0b, + + V128Const = 0x0c, + V8x16Shuffle = 0x0d, + V8x16Swizzle = 0x0e, + + I8x16Splat = 0x0f, + I16x8Splat = 0x10, + I32x4Splat = 0x11, + I64x2Splat = 0x12, + F32x4Splat = 0x13, + F64x2Splat = 0x14, + + I8x16ExtractLaneS = 0x15, + I8x16ExtractLaneU = 0x16, + I8x16ReplaceLane = 0x17, + I16x8ExtractLaneS = 0x18, + I16x8ExtractLaneU = 0x19, + I16x8ReplaceLane = 0x1a, + I32x4ExtractLane = 0x1b, + I32x4ReplaceLane = 0x1c, + I64x2ExtractLane = 0x1d, + I64x2ReplaceLane = 0x1e, + F32x4ExtractLane = 0x1f, + F32x4ReplaceLane = 0x20, + F64x2ExtractLane = 0x21, + F64x2ReplaceLane = 0x22, + + I8x16Eq = 0x23, + I8x16Ne = 0x24, + I8x16LtS = 0x25, + I8x16LtU = 0x26, + I8x16GtS = 0x27, + I8x16GtU = 0x28, + I8x16LeS = 0x29, + I8x16LeU = 0x2a, + I8x16GeS = 0x2b, + I8x16GeU = 0x2c, + I16x8Eq = 0x2d, + I16x8Ne = 0x2e, + I16x8LtS = 0x2f, + I16x8LtU = 0x30, + I16x8GtS = 0x31, + I16x8GtU = 0x32, + I16x8LeS = 0x33, + I16x8LeU = 0x34, + I16x8GeS = 0x35, + I16x8GeU = 0x36, + I32x4Eq = 0x37, + I32x4Ne = 0x38, + I32x4LtS = 0x39, + I32x4LtU = 0x3a, + I32x4GtS = 0x3b, + I32x4GtU = 0x3c, + I32x4LeS = 0x3d, + I32x4LeU = 0x3e, + I32x4GeS = 0x3f, + I32x4GeU = 0x40, + I64x2Eq = 0xc0, + F32x4Eq = 0x41, + F32x4Ne = 0x42, + F32x4Lt = 0x43, + F32x4Gt = 0x44, + F32x4Le = 0x45, + F32x4Ge = 0x46, + F64x2Eq = 0x47, + F64x2Ne = 0x48, + F64x2Lt = 0x49, + F64x2Gt = 0x4a, + F64x2Le = 0x4b, + F64x2Ge = 0x4c, + + V128Not = 0x4d, + V128And = 0x4e, + V128AndNot = 0x4f, + V128Or = 0x50, + V128Xor = 0x51, + V128Bitselect = 0x52, + + V8x16SignSelect = 0x7d, + V16x8SignSelect = 0x7e, + V32x4SignSelect = 0x7f, + V64x2SignSelect = 0x94, + + V128Load8Lane = 0x58, + V128Load16Lane = 0x59, + V128Load32Lane = 0x5a, + V128Load64Lane = 0x5b, + V128Store8Lane = 0x5c, + V128Store16Lane = 0x5d, + V128Store32Lane = 0x5e, + V128Store64Lane = 0x5f, + + I8x16Abs = 0x60, + I8x16Neg = 0x61, + I8x16AnyTrue = 0x62, + I8x16AllTrue = 0x63, + I8x16Bitmask = 0x64, + I8x16NarrowSI16x8 = 0x65, + I8x16NarrowUI16x8 = 0x66, + I8x16Shl = 0x6b, + I8x16ShrS = 0x6c, + I8x16ShrU = 0x6d, + I8x16Add = 0x6e, + I8x16AddSatS = 0x6f, + I8x16AddSatU = 0x70, + I8x16Sub = 0x71, + I8x16SubSatS = 0x72, + I8x16SubSatU = 0x73, + I8x16Mul = 0x75, + I8x16MinS = 0x76, + I8x16MinU = 0x77, + I8x16MaxS = 0x78, + I8x16MaxU = 0x79, + I8x16AvgrU = 0x7b, + + I8x16Popcnt = 0x7c, + + I16x8Abs = 0x80, + I16x8Neg = 0x81, + I16x8AnyTrue = 0x82, + I16x8AllTrue = 0x83, + I16x8Bitmask = 0x84, + I16x8NarrowSI32x4 = 0x85, + I16x8NarrowUI32x4 = 0x86, + I16x8WidenLowSI8x16 = 0x87, + I16x8WidenHighSI8x16 = 0x88, + I16x8WidenLowUI8x16 = 0x89, + I16x8WidenHighUI8x16 = 0x8a, + I16x8Shl = 0x8b, + I16x8ShrS = 0x8c, + I16x8ShrU = 0x8d, + I16x8Add = 0x8e, + I16x8AddSatS = 0x8f, + I16x8AddSatU = 0x90, + I16x8Sub = 0x91, + I16x8SubSatS = 0x92, + I16x8SubSatU = 0x93, + I16x8Mul = 0x95, + I16x8MinS = 0x96, + I16x8MinU = 0x97, + I16x8MaxS = 0x98, + I16x8MaxU = 0x99, + I16x8AvgrU = 0x9b, + I16x8Q15MulrSatS = 0x9c, + + I32x4Abs = 0xa0, + I32x4Neg = 0xa1, + I32x4AnyTrue = 0xa2, + I32x4AllTrue = 0xa3, + I32x4Bitmask = 0xa4, + I32x4WidenLowSI16x8 = 0xa7, + I32x4WidenHighSI16x8 = 0xa8, + I32x4WidenLowUI16x8 = 0xa9, + I32x4WidenHighUI16x8 = 0xaa, + I32x4Shl = 0xab, + I32x4ShrS = 0xac, + I32x4ShrU = 0xad, + I32x4Add = 0xae, + I32x4Sub = 0xb1, + I32x4Mul = 0xb5, + I32x4MinS = 0xb6, + I32x4MinU = 0xb7, + I32x4MaxS = 0xb8, + I32x4MaxU = 0xb9, + I32x4DotSVecI16x8 = 0xba, + + I64x2Bitmask = 0xc4, + I64x2WidenLowSI32x4 = 0xc7, + I64x2WidenHighSI32x4 = 0xc8, + I64x2WidenLowUI32x4 = 0xc9, + I64x2WidenHighUI32x4 = 0xca, + I64x2Neg = 0xc1, + I64x2Shl = 0xcb, + I64x2ShrS = 0xcc, + I64x2ShrU = 0xcd, + I64x2Add = 0xce, + I64x2Sub = 0xd1, + I64x2Mul = 0xd5, + + F32x4Abs = 0xe0, + F32x4Neg = 0xe1, + F32x4Sqrt = 0xe3, + F32x4Add = 0xe4, + F32x4Sub = 0xe5, + F32x4Mul = 0xe6, + F32x4Div = 0xe7, + F32x4Min = 0xe8, + F32x4Max = 0xe9, + F32x4PMin = 0xea, + F32x4PMax = 0xeb, + + F32x4Ceil = 0xd8, + F32x4Floor = 0xd9, + F32x4Trunc = 0xda, + F32x4Nearest = 0xdb, + F64x2Ceil = 0xdc, + F64x2Floor = 0xdd, + F64x2Trunc = 0xde, + F64x2Nearest = 0xdf, + + F64x2Abs = 0xec, + F64x2Neg = 0xed, + F64x2Sqrt = 0xef, + F64x2Add = 0xf0, + F64x2Sub = 0xf1, + F64x2Mul = 0xf2, + F64x2Div = 0xf3, + F64x2Min = 0xf4, + F64x2Max = 0xf5, + F64x2PMin = 0xf6, + F64x2PMax = 0xf7, + + I16x8ExtAddPairWiseSI8x16 = 0xc2, + I16x8ExtAddPairWiseUI8x16 = 0xc3, + I32x4ExtAddPairWiseSI16x8 = 0xa5, + I32x4ExtAddPairWiseUI16x8 = 0xa6, + + I32x4TruncSatSF32x4 = 0xf8, + I32x4TruncSatUF32x4 = 0xf9, + F32x4ConvertSI32x4 = 0xfa, + F32x4ConvertUI32x4 = 0xfb, + + V128Load32Zero = 0xfc, + V128Load64Zero = 0xfd, + + F32x4QFMA = 0xb4, + F32x4QFMS = 0xd4, + F64x2QFMA = 0xfe, + F64x2QFMS = 0xff, + + I64x2TruncSatSF64x2 = 0x0100, + I64x2TruncSatUF64x2 = 0x0101, + F64x2ConvertSI64x2 = 0x0102, + F64x2ConvertUI64x2 = 0x0103, + + I16x8ExtMulLowSI8x16 = 0x9a, + I16x8ExtMulHighSI8x16 = 0x9d, + I16x8ExtMulLowUI8x16 = 0x9e, + I16x8ExtMulHighUI8x16 = 0x9f, + I32x4ExtMulLowSI16x8 = 0xbb, + I32x4ExtMulHighSI16x8 = 0xbd, + I32x4ExtMulLowUI16x8 = 0xbe, + I32x4ExtMulHighUI16x8 = 0xbf, + I64x2ExtMulLowSI32x4 = 0xd2, + I64x2ExtMulHighSI32x4 = 0xd3, + I64x2ExtMulLowUI32x4 = 0xd6, + I64x2ExtMulHighUI32x4 = 0xd7, + + // prefetch opcodes + + PrefetchT = 0xc5, + PrefetchNT = 0xc6, // bulk memory opcodes @@ -882,7 +997,37 @@ Catch = 0x07, Throw = 0x08, Rethrow = 0x09, - BrOnExn = 0x0a + BrOnExn = 0x0a, + + // typed function references opcodes + + CallRef = 0x14, + RetCallRef = 0x15, + + // gc opcodes + + RefEq = 0xd5, + StructNewWithRtt = 0x01, + StructNewDefaultWithRtt = 0x02, + StructGet = 0x03, + StructGetS = 0x04, + StructGetU = 0x05, + StructSet = 0x06, + ArrayNewWithRtt = 0x11, + ArrayNewDefaultWithRtt = 0x12, + ArrayGet = 0x13, + ArrayGetS = 0x14, + ArrayGetU = 0x15, + ArraySet = 0x16, + ArrayLen = 0x17, + I31New = 0x20, + I31GetS = 0x21, + I31GetU = 0x22, + RttCanon = 0x30, + RttSub = 0x31, + RefTest = 0x40, + RefCast = 0x41, + BrOnCast = 0x42 }; enum MemoryAccess { @@ -891,7 +1036,7 @@ NaturalAlignment = 0 }; -enum MemoryFlags { HasMaximum = 1 << 0, IsShared = 1 << 1 }; +enum MemoryFlags { HasMaximum = 1 << 0, IsShared = 1 << 1, Is64 = 1 << 2 }; enum FeaturePrefix { FeatureUsed = '+', @@ -901,49 +1046,61 @@ } // namespace BinaryConsts -inline S32LEB binaryType(Type type) { - int ret = 0; - switch (type.getSingle()) { - // None only used for block signatures. TODO: Separate out? - case Type::none: - ret = BinaryConsts::EncodedType::Empty; - break; - case Type::i32: - ret = BinaryConsts::EncodedType::i32; - break; - case Type::i64: - ret = BinaryConsts::EncodedType::i64; - break; - case Type::f32: - ret = BinaryConsts::EncodedType::f32; - break; - case Type::f64: - ret = BinaryConsts::EncodedType::f64; - break; - case Type::v128: - ret = BinaryConsts::EncodedType::v128; - break; - case Type::funcref: - ret = BinaryConsts::EncodedType::funcref; - break; - case Type::anyref: - ret = BinaryConsts::EncodedType::anyref; - break; - case Type::nullref: - ret = BinaryConsts::EncodedType::nullref; - break; - case Type::exnref: - ret = BinaryConsts::EncodedType::exnref; - break; - case Type::unreachable: - WASM_UNREACHABLE("unexpected type"); - } - return S32LEB(ret); -} - // Writes out wasm to the binary format class WasmBinaryWriter { + // Computes the indexes in a wasm binary, i.e., with function imports + // and function implementations sharing a single index space, etc., + // and with the imports first (the Module's functions and globals + // arrays are not assumed to be in a particular order, so we can't + // just use them directly). + struct BinaryIndexes { + std::unordered_map functionIndexes; + std::unordered_map eventIndexes; + std::unordered_map globalIndexes; + + BinaryIndexes(Module& wasm) { + auto addIndexes = [&](auto& source, auto& indexes) { + auto addIndex = [&](auto* curr) { + auto index = indexes.size(); + indexes[curr->name] = index; + }; + for (auto& curr : source) { + if (curr->imported()) { + addIndex(curr.get()); + } + } + for (auto& curr : source) { + if (!curr->imported()) { + addIndex(curr.get()); + } + } + }; + addIndexes(wasm.functions, functionIndexes); + addIndexes(wasm.events, eventIndexes); + + // Globals may have tuple types in the IR, in which case they lower to + // multiple globals, one for each tuple element, in the binary. Tuple + // globals therefore occupy multiple binary indices, and we have to take + // that into account when calculating indices. + Index globalCount = 0; + auto addGlobal = [&](auto* curr) { + globalIndexes[curr->name] = globalCount; + globalCount += curr->type.size(); + }; + for (auto& curr : wasm.globals) { + if (curr->imported()) { + addGlobal(curr.get()); + } + } + for (auto& curr : wasm.globals) { + if (!curr->imported()) { + addGlobal(curr.get()); + } + } + } + }; + public: WasmBinaryWriter(Module* input, BufferWithRandomAccess& o) : wasm(input), o(o), indexes(*input) { @@ -972,10 +1129,8 @@ void write(); void writeHeader(); int32_t writeU32LEBPlaceholder(); - void writeResizableLimits(Address initial, - Address maximum, - bool hasMaximum, - bool shared); + void writeResizableLimits( + Address initial, Address maximum, bool hasMaximum, bool shared, bool is64); template int32_t startSection(T code); void finishSection(int32_t start); int32_t startSubsection(BinaryConsts::UserSections::Subsection code); @@ -997,17 +1152,17 @@ uint32_t getFunctionIndex(Name name) const; uint32_t getGlobalIndex(Name name) const; uint32_t getEventIndex(Name name) const; - uint32_t getTypeIndex(Signature sig) const; + uint32_t getTypeIndex(HeapType type) const; void writeFunctionTableDeclaration(); void writeTableElements(); void writeNames(); void writeSourceMapUrl(); void writeSymbolMap(); - void writeEarlyUserSections(); void writeLateUserSections(); void writeUserSection(const UserSection& section); void writeFeaturesSection(); + void writeDylinkSection(); void initializeDebugInfo(); void writeSourceMapProlog(); @@ -1040,12 +1195,16 @@ Module* getModule() { return wasm; } + void writeType(Type type); + void writeHeapType(HeapType type); + void writeField(const Field& field); + private: Module* wasm; BufferWithRandomAccess& o; - ModuleUtils::BinaryIndexes indexes; - std::unordered_map typeIndices; - std::vector types; + BinaryIndexes indexes; + std::unordered_map typeIndices; + std::vector types; bool debugInfo = true; std::ostream* sourceMap = nullptr; @@ -1089,8 +1248,8 @@ std::set seenSections; - // All signatures present in the type section - std::vector signatures; + // All types defined in the type section + std::vector types; public: WasmBinaryBuilder(Module& wasm, const std::vector& input) @@ -1117,18 +1276,26 @@ uint64_t getU64LEB(); int32_t getS32LEB(); int64_t getS64LEB(); + uint64_t getUPtrLEB(); + + // Read a value and get a type for it. Type getType(); + // Get a type given the initial S32LEB has already been read, and is provided. + Type getType(int initial); + + HeapType getHeapType(); + Mutability getMutability(); + Field getField(); Type getConcreteType(); Name getInlineString(); void verifyInt8(int8_t x); void verifyInt16(int16_t x); void verifyInt32(int32_t x); void verifyInt64(int64_t x); - void ungetInt8(); void readHeader(); void readStart(); void readMemory(); - void readSignatures(); + void readTypes(); // gets a name in the combined import+defined space Name getFunctionName(Index index); @@ -1138,6 +1305,7 @@ void getResizableLimits(Address& initial, Address& max, bool& shared, + Type& indexType, Address defaultIfNoMax); void readImports(); @@ -1145,12 +1313,15 @@ std::vector functionSignatures; void readFunctionSignatures(); + Signature getSignatureByFunctionIndex(Index index); + Signature getSignatureByTypeIndex(Index index); + size_t nextLabel; Name getNextLabel(); - // We read functions before we know their names, so we need to backpatch the - // names later + // We read functions and globals before we know their names, so we need to + // backpatch the names later // we store functions here before wasm.addFunction after we know their names std::vector functions; @@ -1164,6 +1335,14 @@ // function to check Index endOfFunction = -1; + // we store globals here before wasm.addGlobal after we know their names + std::vector> globals; + // we store global imports here before wasm.addGlobalImport after we know + // their names + std::vector globalImports; + // at index i we have all refs to the global i + std::map> globalRefs; + // Throws a parsing error if we are not in a function context void requireFunctionContext(const char* error); @@ -1178,8 +1357,8 @@ struct BreakTarget { Name name; - int arity; - BreakTarget(Name name, int arity) : name(name), arity(arity) {} + Type type; + BreakTarget(Name name, Type type) : name(name), type(type) {} }; std::vector breakStack; // the names that breaks target. this lets us know if a block has breaks to it @@ -1225,11 +1404,14 @@ void processExpressions(); void skipUnreachableCode(); + void pushExpression(Expression* curr); Expression* popExpression(); Expression* popNonVoidExpression(); + Expression* popTuple(size_t numElems); + Expression* popTypedExpression(Type type); void validateBinary(); // validations that cannot be performed on the Module - void processFunctions(); + void processNames(); size_t dataCount = 0; bool hasDataCount = false; @@ -1247,6 +1429,7 @@ static Name escape(Name name); void readNames(size_t); void readFeatures(size_t); + void readDylink(size_t); // Debug information reading helpers void setDebugLocations(std::istream* sourceMap_) { sourceMap = sourceMap_; } @@ -1260,25 +1443,26 @@ int depth = 0; // only for debugging BinaryConsts::ASTNodes readExpression(Expression*& curr); - void pushBlockElements(Block* curr, size_t start, size_t end); + void pushBlockElements(Block* curr, Type type, size_t start); void visitBlock(Block* curr); // Gets a block of expressions. If it's just one, return that singleton. - Expression* getBlockOrSingleton(Type type, unsigned numPops = 0); + Expression* getBlockOrSingleton(Type type); + + BreakTarget getBreakTarget(int32_t offset); + + void readMemoryAccess(Address& alignment, Address& offset); void visitIf(If* curr); void visitLoop(Loop* curr); - BreakTarget getBreakTarget(int32_t offset); void visitBreak(Break* curr, uint8_t code); void visitSwitch(Switch* curr); - void visitCall(Call* curr); void visitCallIndirect(CallIndirect* curr); void visitLocalGet(LocalGet* curr); void visitLocalSet(LocalSet* curr, uint8_t code); void visitGlobalGet(GlobalGet* curr); void visitGlobalSet(GlobalSet* curr); - void readMemoryAccess(Address& alignment, Address& offset); bool maybeVisitLoad(Expression*& out, uint8_t code, bool isAtomic); bool maybeVisitStore(Expression*& out, uint8_t code, bool isAtomic); bool maybeVisitNontrappingTrunc(Expression*& out, uint32_t code); @@ -1301,26 +1485,52 @@ bool maybeVisitSIMDTernary(Expression*& out, uint32_t code); bool maybeVisitSIMDShift(Expression*& out, uint32_t code); bool maybeVisitSIMDLoad(Expression*& out, uint32_t code); + bool maybeVisitSIMDLoadStoreLane(Expression*& out, uint32_t code); + bool maybeVisitPrefetch(Expression*& out, uint32_t code); bool maybeVisitMemoryInit(Expression*& out, uint32_t code); bool maybeVisitDataDrop(Expression*& out, uint32_t code); bool maybeVisitMemoryCopy(Expression*& out, uint32_t code); bool maybeVisitMemoryFill(Expression*& out, uint32_t code); + bool maybeVisitI31New(Expression*& out, uint32_t code); + bool maybeVisitI31Get(Expression*& out, uint32_t code); + bool maybeVisitRefTest(Expression*& out, uint32_t code); + bool maybeVisitRefCast(Expression*& out, uint32_t code); + bool maybeVisitBrOnCast(Expression*& out, uint32_t code); + bool maybeVisitRttCanon(Expression*& out, uint32_t code); + bool maybeVisitRttSub(Expression*& out, uint32_t code); + bool maybeVisitStructNew(Expression*& out, uint32_t code); + bool maybeVisitStructGet(Expression*& out, uint32_t code); + bool maybeVisitStructSet(Expression*& out, uint32_t code); + bool maybeVisitArrayNew(Expression*& out, uint32_t code); + bool maybeVisitArrayGet(Expression*& out, uint32_t code); + bool maybeVisitArraySet(Expression*& out, uint32_t code); + bool maybeVisitArrayLen(Expression*& out, uint32_t code); void visitSelect(Select* curr, uint8_t code); void visitReturn(Return* curr); - bool maybeVisitHost(Expression*& out, uint8_t code); + void visitMemorySize(MemorySize* curr); + void visitMemoryGrow(MemoryGrow* curr); void visitNop(Nop* curr); void visitUnreachable(Unreachable* curr); void visitDrop(Drop* curr); void visitRefNull(RefNull* curr); void visitRefIsNull(RefIsNull* curr); void visitRefFunc(RefFunc* curr); - void visitTry(Try* curr); + void visitRefEq(RefEq* curr); + void visitTryOrTryInBlock(Expression*& out); void visitThrow(Throw* curr); void visitRethrow(Rethrow* curr); void visitBrOnExn(BrOnExn* curr); + void visitCallRef(CallRef* curr); void throwError(std::string text); + // Struct/Array instructions have an unnecessary heap type that is just for + // validation (except for the case of unreachability, but that's not a problem + // anyhow, we can ignore it there). That is, we also have a reference / rtt + // child from which we can infer the type anyhow, and we just need to check + // that type is the same. + void validateHeapTypeUsingChild(Expression* child, HeapType heapType); + private: bool hasDWARFSections(); }; diff -Nru binaryen-91/src/wasm-builder.h binaryen-99/src/wasm-builder.h --- binaryen-91/src/wasm-builder.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm-builder.h 2021-01-07 20:01:06.000000000 +0000 @@ -34,19 +34,18 @@ // General AST node builder class Builder { - MixedArena& allocator; + Module& wasm; public: - Builder(MixedArena& allocator) : allocator(allocator) {} - Builder(Module& wasm) : allocator(wasm.allocator) {} + Builder(Module& wasm) : wasm(wasm) {} // make* functions, other globals - Function* makeFunction(Name name, - Signature sig, - std::vector&& vars, - Expression* body = nullptr) { - auto* func = new Function; + static std::unique_ptr makeFunction(Name name, + Signature sig, + std::vector&& vars, + Expression* body = nullptr) { + auto func = std::make_unique(); func->name = name; func->sig = sig; func->body = body; @@ -54,12 +53,12 @@ return func; } - Function* makeFunction(Name name, - std::vector&& params, - Type resultType, - std::vector&& vars, - Expression* body = nullptr) { - auto* func = new Function; + static std::unique_ptr makeFunction(Name name, + std::vector&& params, + Type resultType, + std::vector&& vars, + Expression* body = nullptr) { + auto func = std::make_unique(); func->name = name; func->body = body; std::vector paramVec; @@ -79,19 +78,41 @@ return func; } - Export* makeExport(Name name, Name value, ExternalKind kind) { - auto* export_ = new Export(); + static std::unique_ptr + makeExport(Name name, Name value, ExternalKind kind) { + auto export_ = std::make_unique(); export_->name = name; export_->value = value; export_->kind = kind; return export_; } + enum Mutability { Mutable, Immutable }; + + static std::unique_ptr + makeGlobal(Name name, Type type, Expression* init, Mutability mutable_) { + auto glob = std::make_unique(); + glob->name = name; + glob->type = type; + glob->init = init; + glob->mutable_ = mutable_ == Mutable; + return glob; + } + + static std::unique_ptr + makeEvent(Name name, uint32_t attribute, Signature sig) { + auto event = std::make_unique(); + event->name = name; + event->attribute = attribute; + event->sig = sig; + return event; + } + // IR nodes - Nop* makeNop() { return allocator.alloc(); } + Nop* makeNop() { return wasm.allocator.alloc(); } Block* makeBlock(Expression* first = nullptr) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); if (first) { ret->list.push_back(first); ret->finalize(); @@ -105,38 +126,38 @@ return ret; } Block* makeBlock(const std::vector& items) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->list.set(items); ret->finalize(); return ret; } Block* makeBlock(const std::vector& items, Type type) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->list.set(items); ret->finalize(type); return ret; } Block* makeBlock(const ExpressionList& items) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->list.set(items); ret->finalize(); return ret; } Block* makeBlock(const ExpressionList& items, Type type) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->list.set(items); ret->finalize(type); return ret; } Block* makeBlock(Name name, const ExpressionList& items) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->name = name; ret->list.set(items); ret->finalize(); return ret; } Block* makeBlock(Name name, const ExpressionList& items, Type type) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->name = name; ret->list.set(items); ret->finalize(type); @@ -145,7 +166,7 @@ If* makeIf(Expression* condition, Expression* ifTrue, Expression* ifFalse = nullptr) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->condition = condition; ret->ifTrue = ifTrue; ret->ifFalse = ifFalse; @@ -156,7 +177,7 @@ Expression* ifTrue, Expression* ifFalse, Type type) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->condition = condition; ret->ifTrue = ifTrue; ret->ifFalse = ifFalse; @@ -164,14 +185,14 @@ return ret; } Loop* makeLoop(Name name, Expression* body) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->name = name; ret->body = body; ret->finalize(); return ret; } Loop* makeLoop(Name name, Expression* body, Type type) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->name = name; ret->body = body; ret->finalize(type); @@ -180,7 +201,7 @@ Break* makeBreak(Name name, Expression* value = nullptr, Expression* condition = nullptr) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->name = name; ret->value = value; ret->condition = condition; @@ -192,7 +213,7 @@ Name default_, Expression* condition, Expression* value = nullptr) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->targets.set(list); ret->default_ = default_; ret->value = value; @@ -203,7 +224,7 @@ const std::vector& args, Type type, bool isReturn = false) { - auto* call = allocator.alloc(); + auto* call = wasm.allocator.alloc(); // not all functions may exist yet, so type must be provided call->type = type; call->target = target; @@ -213,7 +234,7 @@ } template Call* makeCall(Name target, const T& args, Type type, bool isReturn = false) { - auto* call = allocator.alloc(); + auto* call = wasm.allocator.alloc(); // not all functions may exist yet, so type must be provided call->type = type; call->target = target; @@ -222,11 +243,12 @@ call->finalize(); return call; } + template CallIndirect* makeCallIndirect(Expression* target, - const std::vector& args, + const T& args, Signature sig, bool isReturn = false) { - auto* call = allocator.alloc(); + auto* call = wasm.allocator.alloc(); call->sig = sig; call->type = sig.results; call->target = target; @@ -235,14 +257,27 @@ call->finalize(); return call; } + template + CallRef* makeCallRef(Expression* target, + const T& args, + Type type, + bool isReturn = false) { + auto* call = wasm.allocator.alloc(); + call->type = type; + call->target = target; + call->operands.set(args); + call->isReturn = isReturn; + call->finalize(); + return call; + } LocalGet* makeLocalGet(Index index, Type type) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->index = index; ret->type = type; return ret; } LocalSet* makeLocalSet(Index index, Expression* value) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->index = index; ret->value = value; ret->makeSet(); @@ -250,20 +285,20 @@ return ret; } LocalSet* makeLocalTee(Index index, Expression* value, Type type) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->index = index; ret->value = value; ret->makeTee(type); return ret; } GlobalGet* makeGlobalGet(Name name, Type type) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->name = name; ret->type = type; return ret; } GlobalSet* makeGlobalSet(Name name, Expression* value) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->name = name; ret->value = value; ret->finalize(); @@ -275,7 +310,7 @@ unsigned align, Expression* ptr, Type type) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->isAtomic = false; ret->bytes = bytes; ret->signed_ = signed_; @@ -296,7 +331,7 @@ Expression* timeout, Type expectedType, Address offset) { - auto* wait = allocator.alloc(); + auto* wait = wasm.allocator.alloc(); wait->offset = offset; wait->ptr = ptr; wait->expected = expected; @@ -307,21 +342,21 @@ } AtomicNotify* makeAtomicNotify(Expression* ptr, Expression* notifyCount, Address offset) { - auto* notify = allocator.alloc(); + auto* notify = wasm.allocator.alloc(); notify->offset = offset; notify->ptr = ptr; notify->notifyCount = notifyCount; notify->finalize(); return notify; } - AtomicFence* makeAtomicFence() { return allocator.alloc(); } + AtomicFence* makeAtomicFence() { return wasm.allocator.alloc(); } Store* makeStore(unsigned bytes, uint32_t offset, unsigned align, Expression* ptr, Expression* value, Type type) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->isAtomic = false; ret->bytes = bytes; ret->offset = offset; @@ -348,7 +383,7 @@ Expression* ptr, Expression* value, Type type) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->op = op; ret->bytes = bytes; ret->offset = offset; @@ -364,7 +399,7 @@ Expression* expected, Expression* replacement, Type type) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->bytes = bytes; ret->offset = offset; ret->ptr = ptr; @@ -376,7 +411,7 @@ } SIMDExtract* makeSIMDExtract(SIMDExtractOp op, Expression* vec, uint8_t index) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->op = op; ret->vec = vec; ret->index = index; @@ -387,7 +422,7 @@ Expression* vec, uint8_t index, Expression* value) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->op = op; ret->vec = vec; ret->index = index; @@ -398,7 +433,7 @@ SIMDShuffle* makeSIMDShuffle(Expression* left, Expression* right, const std::array& mask) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->left = left; ret->right = right; ret->mask = mask; @@ -409,7 +444,7 @@ Expression* a, Expression* b, Expression* c) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->op = op; ret->a = a; ret->b = b; @@ -418,7 +453,7 @@ return ret; } SIMDShift* makeSIMDShift(SIMDShiftOp op, Expression* vec, Expression* shift) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->op = op; ret->vec = vec; ret->shift = shift; @@ -427,7 +462,33 @@ } SIMDLoad* makeSIMDLoad(SIMDLoadOp op, Address offset, Address align, Expression* ptr) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); + ret->op = op; + ret->offset = offset; + ret->align = align; + ret->ptr = ptr; + ret->finalize(); + return ret; + } + SIMDLoadStoreLane* makeSIMDLoadStoreLane(SIMDLoadStoreLaneOp op, + Address offset, + Address align, + uint8_t index, + Expression* ptr, + Expression* vec) { + auto* ret = wasm.allocator.alloc(); + ret->op = op; + ret->offset = offset; + ret->align = align; + ret->index = index; + ret->ptr = ptr; + ret->vec = vec; + ret->finalize(); + return ret; + } + Prefetch* + makePrefetch(PrefetchOp op, Address offset, Address align, Expression* ptr) { + auto* ret = wasm.allocator.alloc(); ret->op = op; ret->offset = offset; ret->align = align; @@ -439,7 +500,7 @@ Expression* dest, Expression* offset, Expression* size) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->segment = segment; ret->dest = dest; ret->offset = offset; @@ -448,14 +509,14 @@ return ret; } DataDrop* makeDataDrop(uint32_t segment) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->segment = segment; ret->finalize(); return ret; } MemoryCopy* makeMemoryCopy(Expression* dest, Expression* source, Expression* size) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->dest = dest; ret->source = source; ret->size = size; @@ -464,7 +525,7 @@ } MemoryFill* makeMemoryFill(Expression* dest, Expression* value, Expression* size) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->dest = dest; ret->value = value; ret->size = size; @@ -473,20 +534,24 @@ } Const* makeConst(Literal value) { assert(value.type.isNumber()); - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->value = value; ret->type = value.type; return ret; } + template Const* makeConst(T x) { return makeConst(Literal(x)); } Unary* makeUnary(UnaryOp op, Expression* value) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->op = op; ret->value = value; ret->finalize(); return ret; } + Const* makeConstPtr(uint64_t val) { + return makeConst(Literal::makeFromInt64(val, wasm.memory.indexType)); + } Binary* makeBinary(BinaryOp op, Expression* left, Expression* right) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->op = op; ret->left = left; ret->right = right; @@ -495,7 +560,7 @@ } Select* makeSelect(Expression* condition, Expression* ifTrue, Expression* ifFalse) { - auto* ret = allocator.alloc(); ret->condition = condition; ret->ifTrue = ifTrue; ret->ifFalse = ifFalse; @@ -506,7 +571,7 @@ Expression* ifTrue, Expression* ifFalse, Type type) { - auto* ret = allocator.alloc(); ret->condition = condition; ret->ifTrue = ifTrue; ret->ifFalse = ifFalse; @@ -514,45 +579,60 @@ return ret; } Return* makeReturn(Expression* value = nullptr) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->value = value; return ret; } - Host* - makeHost(HostOp op, Name nameOperand, std::vector&& operands) { - auto* ret = allocator.alloc(); - ret->op = op; - ret->nameOperand = nameOperand; - ret->operands.set(operands); + MemorySize* makeMemorySize() { + auto* ret = wasm.allocator.alloc(); + if (wasm.memory.is64()) { + ret->make64(); + } ret->finalize(); return ret; } - RefNull* makeRefNull() { - auto* ret = allocator.alloc(); + MemoryGrow* makeMemoryGrow(Expression* delta) { + auto* ret = wasm.allocator.alloc(); + if (wasm.memory.is64()) { + ret->make64(); + } + ret->delta = delta; ret->finalize(); return ret; } + RefNull* makeRefNull(Type type) { + auto* ret = wasm.allocator.alloc(); + ret->finalize(type); + return ret; + } RefIsNull* makeRefIsNull(Expression* value) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->value = value; ret->finalize(); return ret; } - RefFunc* makeRefFunc(Name func) { - auto* ret = allocator.alloc(); + RefFunc* makeRefFunc(Name func, Type type) { + auto* ret = wasm.allocator.alloc(); ret->func = func; + ret->finalize(type); + return ret; + } + RefEq* makeRefEq(Expression* left, Expression* right) { + auto* ret = wasm.allocator.alloc(); + ret->left = left; + ret->right = right; ret->finalize(); return ret; } Try* makeTry(Expression* body, Expression* catchBody) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->body = body; ret->catchBody = catchBody; ret->finalize(); return ret; } Try* makeTry(Expression* body, Expression* catchBody, Type type) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->body = body; ret->catchBody = catchBody; ret->finalize(type); @@ -562,14 +642,14 @@ return makeThrow(event->name, args); } Throw* makeThrow(Name event, const std::vector& args) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->event = event; ret->operands.set(args); ret->finalize(); return ret; } Rethrow* makeRethrow(Expression* exnref) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->exnref = exnref; ret->finalize(); return ret; @@ -578,7 +658,7 @@ return makeBrOnExn(name, event->name, exnref, event->sig.params); } BrOnExn* makeBrOnExn(Name name, Name event, Expression* exnref, Type sent) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->name = name; ret->event = event; ret->exnref = exnref; @@ -588,16 +668,137 @@ ret->finalize(); return ret; } - Unreachable* makeUnreachable() { return allocator.alloc(); } - Push* makePush(Expression* value) { - auto* ret = allocator.alloc(); + Unreachable* makeUnreachable() { return wasm.allocator.alloc(); } + Pop* makePop(Type type) { + auto* ret = wasm.allocator.alloc(); + ret->type = type; + ret->finalize(); + return ret; + } + template TupleMake* makeTupleMake(ListType&& operands) { + auto* ret = wasm.allocator.alloc(); + ret->operands.set(operands); + ret->finalize(); + return ret; + } + TupleExtract* makeTupleExtract(Expression* tuple, Index index) { + auto* ret = wasm.allocator.alloc(); + ret->tuple = tuple; + ret->index = index; + ret->finalize(); + return ret; + } + I31New* makeI31New(Expression* value) { + auto* ret = wasm.allocator.alloc(); ret->value = value; ret->finalize(); return ret; } - Pop* makePop(Type type) { - auto* ret = allocator.alloc(); + I31Get* makeI31Get(Expression* i31, bool signed_) { + auto* ret = wasm.allocator.alloc(); + ret->i31 = i31; + ret->signed_ = signed_; + ret->finalize(); + return ret; + } + RefTest* makeRefTest(Expression* ref, Expression* rtt) { + auto* ret = wasm.allocator.alloc(); + ret->ref = ref; + ret->rtt = rtt; + ret->finalize(); + return ret; + } + RefCast* makeRefCast(Expression* ref, Expression* rtt) { + auto* ret = wasm.allocator.alloc(); + ret->ref = ref; + ret->rtt = rtt; + ret->finalize(); + return ret; + } + BrOnCast* + makeBrOnCast(Name name, HeapType heapType, Expression* ref, Expression* rtt) { + auto* ret = wasm.allocator.alloc(); + ret->name = name; + ret->castType = Type(heapType, Nullable); + ret->ref = ref; + ret->rtt = rtt; + ret->finalize(); + return ret; + } + RttCanon* makeRttCanon(HeapType heapType) { + auto* ret = wasm.allocator.alloc(); + ret->type = Type(Rtt(0, heapType)); + ret->finalize(); + return ret; + } + RttSub* makeRttSub(HeapType heapType, Expression* parent) { + auto* ret = wasm.allocator.alloc(); + ret->parent = parent; + auto parentRtt = parent->type.getRtt(); + if (parentRtt.hasDepth()) { + ret->type = Type(Rtt(parentRtt.depth + 1, heapType)); + } else { + ret->type = Type(Rtt(heapType)); + } + ret->finalize(); + return ret; + } + template + StructNew* makeStructNew(Expression* rtt, const T& args) { + auto* ret = wasm.allocator.alloc(); + ret->rtt = rtt; + ret->operands.set(args); + ret->finalize(); + return ret; + } + StructGet* + makeStructGet(Index index, Expression* ref, Type type, bool signed_ = false) { + auto* ret = wasm.allocator.alloc(); + ret->index = index; + ret->ref = ref; ret->type = type; + ret->signed_ = signed_; + ret->finalize(); + return ret; + } + StructSet* makeStructSet(Index index, Expression* ref, Expression* value) { + auto* ret = wasm.allocator.alloc(); + ret->index = index; + ret->ref = ref; + ret->value = value; + ret->finalize(); + return ret; + } + ArrayNew* + makeArrayNew(Expression* rtt, Expression* size, Expression* init = nullptr) { + auto* ret = wasm.allocator.alloc(); + ret->rtt = rtt; + ret->size = size; + ret->init = init; + ret->finalize(); + return ret; + } + ArrayGet* + makeArrayGet(Expression* ref, Expression* index, bool signed_ = false) { + auto* ret = wasm.allocator.alloc(); + ret->ref = ref; + ret->index = index; + ret->signed_ = signed_; + ret->finalize(); + return ret; + } + ArraySet* + makeArraySet(Expression* ref, Expression* index, Expression* value) { + auto* ret = wasm.allocator.alloc(); + ret->ref = ref; + ret->index = index; + ret->value = value; + ret->finalize(); + return ret; + } + ArrayLen* makeArrayLen(Expression* ref) { + auto* ret = wasm.allocator.alloc(); + ret->ref = ref; ret->finalize(); return ret; } @@ -605,24 +806,50 @@ // Additional helpers Drop* makeDrop(Expression* value) { - auto* ret = allocator.alloc(); + auto* ret = wasm.allocator.alloc(); ret->value = value; ret->finalize(); return ret; } - Expression* makeConstExpression(Literal value) { - switch (value.type.getSingle()) { - case Type::nullref: - return makeRefNull(); - case Type::funcref: - if (value.getFunc()[0] != 0) { - return makeRefFunc(value.getFunc()); - } - return makeRefNull(); + // Make a constant expression. This might be a wasm Const, or something + // else of constant value like ref.null. + Expression* makeConstantExpression(Literal value) { + auto type = value.type; + if (type.isNumber()) { + return makeConst(value); + } + if (value.isNull()) { + return makeRefNull(type); + } + if (type.isFunction()) { + return makeRefFunc(value.getFunc(), type); + } + TODO_SINGLE_COMPOUND(type); + switch (type.getBasic()) { + case Type::externref: + case Type::exnref: // TODO: ExceptionPackage? + case Type::anyref: + case Type::eqref: + assert(value.isNull() && "unexpected non-null reference type literal"); + return makeRefNull(type); + case Type::i31ref: + return makeI31New(makeConst(value.geti31())); default: - assert(value.type.isNumber()); - return makeConst(value); + WASM_UNREACHABLE("invalid constant expression"); + } + } + + Expression* makeConstantExpression(Literals values) { + assert(values.size() > 0); + if (values.size() == 1) { + return makeConstantExpression(values[0]); + } else { + std::vector consts; + for (auto value : values) { + consts.push_back(makeConstantExpression(value)); + } + return makeTupleMake(consts); } } @@ -633,7 +860,7 @@ // only ok to add a param if no vars, otherwise indices are invalidated assert(func->localIndices.size() == func->sig.params.size()); assert(name.is()); - std::vector params = func->sig.params.expand(); + std::vector params(func->sig.params.begin(), func->sig.params.end()); params.push_back(type); func->sig.params = Type(params); Index index = func->localNames.size(); @@ -736,7 +963,7 @@ // just one ret = input->list[from]; } else { - auto* block = allocator.alloc(); + auto* block = wasm.allocator.alloc(); for (Index i = from; i < to; i++) { block->list.push_back(input->list[i]); } @@ -747,7 +974,7 @@ input->list.resize(from); } else { for (Index i = from; i < to; i++) { - input->list[i] = allocator.alloc(); + input->list[i] = wasm.allocator.alloc(); } } input->finalize(); @@ -771,9 +998,20 @@ // minimal contents. as a replacement, this may reuse the // input node template Expression* replaceWithIdenticalType(T* curr) { + if (curr->type.isTuple()) { + return makeConstantExpression(Literal::makeZeros(curr->type)); + } + if (curr->type.isNullable()) { + return ExpressionManipulator::refNull(curr, curr->type); + } + if (curr->type.isFunction()) { + // We can't do any better, keep the original. + return curr; + } Literal value; // TODO: reuse node conditionally when possible for literals - switch (curr->type.getSingle()) { + TODO_SINGLE_COMPOUND(curr->type); + switch (curr->type.getBasic()) { case Type::i32: value = Literal(int32_t(0)); break; @@ -793,10 +1031,14 @@ break; } case Type::funcref: - case Type::anyref: - case Type::nullref: + WASM_UNREACHABLE("handled above"); + case Type::externref: case Type::exnref: - return ExpressionManipulator::refNull(curr); + case Type::anyref: + case Type::eqref: + return ExpressionManipulator::refNull(curr, curr->type); + case Type::i31ref: + return makeI31New(makeConst(0)); case Type::none: return ExpressionManipulator::nop(curr); case Type::unreachable: @@ -804,28 +1046,6 @@ } return makeConst(value); } - - // Module-level helpers - - enum Mutability { Mutable, Immutable }; - - static Global* - makeGlobal(Name name, Type type, Expression* init, Mutability mutable_) { - auto* glob = new Global; - glob->name = name; - glob->type = type; - glob->init = init; - glob->mutable_ = mutable_ == Mutable; - return glob; - } - - static Event* makeEvent(Name name, uint32_t attribute, Signature sig) { - auto* event = new Event; - event->name = name; - event->attribute = attribute; - event->sig = sig; - return event; - } }; } // namespace wasm diff -Nru binaryen-91/src/wasm-delegations-fields.h binaryen-99/src/wasm-delegations-fields.h --- binaryen-91/src/wasm-delegations-fields.h 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/src/wasm-delegations-fields.h 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,674 @@ +/* + * Copyright 2020 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. + */ + +// Implements a switch on an expression class ID, and has a case for each id +// in which it runs delegates on the fields and immediates. You should include +// this file after defining the relevant DELEGATE_* macros. +// +// All defines used here are undefed automatically at the end for you. +// +// Most of the defines are necessary, and you will get an error if you forget +// them, but some are optional and some imply others, see below. +// +// The defines are as follows: +// +// DELEGATE_START(id) - called at the start of a case for an expression class. +// +// DELEGATE_END(id) - called at the end of a case. +// +// DELEGATE_GET_FIELD(id, name) - called to get a field by its name. This must +// know the object on which to get it, so it is just useful for the case +// where you operate on a single such object, but in that case it is nice +// because then other things can be defined automatically for you, see later. +// +// DELEGATE_FIELD_CHILD(id, name) - called for each child field (note: children +// are visited in reverse order, which is convenient for walking by pushing +// them to a stack first). +// +// DELEGATE_FIELD_OPTIONAL_CHILD(id, name) - called for a child that may not be +// present (like a Return's value). If you do not define this then +// DELEGATE_FIELD_CHILD is called. +// +// DELEGATE_FIELD_CHILD_VECTOR(id, name) - called for a variable-sized vector of +// child pointers. If this is not defined, and DELEGATE_GET_FIELD is, then +// DELEGATE_FIELD_CHILD is called on them. +// +// DELEGATE_FIELD_INT(id, name) - called for an integer field (bool, enum, +// Index, int32, or int64). +// +// DELEGATE_FIELD_INT_ARRAY(id, name) - called for a std::array of fixed size of +// integer values (like a SIMD mask). If this is not defined, and +// DELEGATE_GET_FIELD is, then DELEGATE_FIELD_INT is called on them. +// +// DELEGATE_FIELD_LITERAL(id, name) - called for a Literal. +// +// DELEGATE_FIELD_NAME(id, name) - called for a Name. +// +// DELEGATE_FIELD_SCOPE_NAME_DEF(id, name) - called for a scope name definition +// (like a block's name). +// +// DELEGATE_FIELD_SCOPE_NAME_USE(id, name) - called for a scope name use (like +// a break's target). +// +// DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, name) - called for a variable-sized +// vector of scope names (like a switch's targets). If this is not defined, +// and DELEGATE_GET_FIELD is, then DELEGATE_FIELD_SCOPE_NAME_USE is called on +// them. +// +// DELEGATE_FIELD_SIGNATURE(id, name) - called for a Signature. +// +// DELEGATE_FIELD_TYPE(id, name) - called for a Type. +// +// DELEGATE_FIELD_ADDRESS(id, name) - called for an Address. + +#ifndef DELEGATE_START +#define DELEGATE_START(id) +#endif + +#ifndef DELEGATE_END +#define DELEGATE_END(id) +#endif + +#ifndef DELEGATE_FIELD_CHILD +#error please define DELEGATE_FIELD_CHILD(id, name) +#endif + +#ifndef DELEGATE_FIELD_OPTIONAL_CHILD +#define DELEGATE_FIELD_OPTIONAL_CHILD(id, name) DELEGATE_FIELD_CHILD(id, name) +#endif + +#ifndef DELEGATE_FIELD_CHILD_VECTOR +#ifdef DELEGATE_GET_FIELD +#define DELEGATE_FIELD_CHILD_VECTOR(id, name) \ + for (int i = int((DELEGATE_GET_FIELD(id, name)).size()) - 1; i >= 0; i--) { \ + DELEGATE_FIELD_CHILD(id, name[i]); \ + } +#else +#error please define DELEGATE_FIELD_CHILD_VECTOR(id, name) +#endif +#endif + +#ifndef DELEGATE_FIELD_INT +#error please define DELEGATE_FIELD_INT(id, name) +#endif + +#ifndef DELEGATE_FIELD_INT_ARRAY +#ifdef DELEGATE_GET_FIELD +#define DELEGATE_FIELD_INT_ARRAY(id, name) \ + for (Index i = 0; i < (DELEGATE_GET_FIELD(id, name)).size(); i++) { \ + DELEGATE_FIELD_INT(id, name[i]); \ + } +#else +#error please define DELEGATE_FIELD_INT_ARRAY(id, name) +#endif +#endif + +#ifndef DELEGATE_FIELD_LITERAL +#error please define DELEGATE_FIELD_LITERAL(id, name) +#endif + +#ifndef DELEGATE_FIELD_NAME +#error please define DELEGATE_FIELD_NAME(id, name) +#endif + +#ifndef DELEGATE_FIELD_SCOPE_NAME_DEF +#error please define DELEGATE_FIELD_SCOPE_NAME_DEF(id, name) +#endif + +#ifndef DELEGATE_FIELD_SCOPE_NAME_USE +#error please define DELEGATE_FIELD_SCOPE_NAME_USE(id, name) +#endif + +#ifndef DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR +#ifdef DELEGATE_GET_FIELD +#define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, name) \ + for (Index i = 0; i < (DELEGATE_GET_FIELD(id, name)).size(); i++) { \ + DELEGATE_FIELD_SCOPE_NAME_USE(id, name[i]); \ + } +#else +#error please define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, name) +#endif +#endif + +#ifndef DELEGATE_FIELD_SIGNATURE +#error please define DELEGATE_FIELD_SIGNATURE(id, name) +#endif + +#ifndef DELEGATE_FIELD_TYPE +#error please define DELEGATE_FIELD_TYPE(id, name) +#endif + +#ifndef DELEGATE_FIELD_ADDRESS +#error please define DELEGATE_FIELD_ADDRESS(id, name) +#endif + +switch (DELEGATE_ID) { + case Expression::Id::InvalidId: + case Expression::Id::NumExpressionIds: { + WASM_UNREACHABLE("unexpected expression type"); + } + case Expression::Id::BlockId: { + DELEGATE_START(Block); + DELEGATE_FIELD_CHILD_VECTOR(Block, list); + DELEGATE_FIELD_SCOPE_NAME_DEF(Block, name); + DELEGATE_END(Block); + break; + } + case Expression::Id::IfId: { + DELEGATE_START(If); + DELEGATE_FIELD_OPTIONAL_CHILD(If, ifFalse); + DELEGATE_FIELD_CHILD(If, ifTrue); + DELEGATE_FIELD_CHILD(If, condition); + DELEGATE_END(If); + break; + } + case Expression::Id::LoopId: { + DELEGATE_START(Loop); + DELEGATE_FIELD_CHILD(Loop, body); + DELEGATE_FIELD_SCOPE_NAME_DEF(Loop, name); + DELEGATE_END(Loop); + break; + } + case Expression::Id::BreakId: { + DELEGATE_START(Break); + DELEGATE_FIELD_OPTIONAL_CHILD(Break, condition); + DELEGATE_FIELD_OPTIONAL_CHILD(Break, value); + DELEGATE_FIELD_SCOPE_NAME_USE(Break, name); + DELEGATE_END(Break); + break; + } + case Expression::Id::SwitchId: { + DELEGATE_START(Switch); + DELEGATE_FIELD_CHILD(Switch, condition); + DELEGATE_FIELD_OPTIONAL_CHILD(Switch, value); + DELEGATE_FIELD_SCOPE_NAME_USE(Switch, default_); + DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(Switch, targets); + DELEGATE_END(Switch); + break; + } + case Expression::Id::CallId: { + DELEGATE_START(Call); + DELEGATE_FIELD_CHILD_VECTOR(Call, operands); + DELEGATE_FIELD_NAME(Call, target); + DELEGATE_FIELD_INT(Call, isReturn); + DELEGATE_END(Call); + break; + } + case Expression::Id::CallIndirectId: { + DELEGATE_START(CallIndirect); + DELEGATE_FIELD_CHILD(CallIndirect, target); + DELEGATE_FIELD_CHILD_VECTOR(CallIndirect, operands); + DELEGATE_FIELD_SIGNATURE(CallIndirect, sig); + DELEGATE_FIELD_INT(CallIndirect, isReturn); + DELEGATE_END(CallIndirect); + break; + } + case Expression::Id::LocalGetId: { + DELEGATE_START(LocalGet); + DELEGATE_FIELD_INT(LocalGet, index); + DELEGATE_END(LocalGet); + break; + } + case Expression::Id::LocalSetId: { + DELEGATE_START(LocalSet); + DELEGATE_FIELD_CHILD(LocalSet, value); + DELEGATE_FIELD_INT(LocalSet, index); + DELEGATE_END(LocalSet); + break; + } + case Expression::Id::GlobalGetId: { + DELEGATE_START(GlobalGet); + DELEGATE_FIELD_INT(GlobalGet, name); + DELEGATE_END(GlobalGet); + break; + } + case Expression::Id::GlobalSetId: { + DELEGATE_START(GlobalSet); + DELEGATE_FIELD_CHILD(GlobalSet, value); + DELEGATE_FIELD_INT(GlobalSet, name); + DELEGATE_END(GlobalSet); + break; + } + case Expression::Id::LoadId: { + DELEGATE_START(Load); + DELEGATE_FIELD_CHILD(Load, ptr); + DELEGATE_FIELD_INT(Load, bytes); + DELEGATE_FIELD_INT(Load, signed_); + DELEGATE_FIELD_ADDRESS(Load, offset); + DELEGATE_FIELD_ADDRESS(Load, align); + DELEGATE_FIELD_INT(Load, isAtomic); + DELEGATE_END(Load); + break; + } + case Expression::Id::StoreId: { + DELEGATE_START(Store); + DELEGATE_FIELD_CHILD(Store, value); + DELEGATE_FIELD_CHILD(Store, ptr); + DELEGATE_FIELD_INT(Store, bytes); + DELEGATE_FIELD_ADDRESS(Store, offset); + DELEGATE_FIELD_ADDRESS(Store, align); + DELEGATE_FIELD_INT(Store, isAtomic); + DELEGATE_FIELD_TYPE(Store, valueType); + DELEGATE_END(Store); + break; + } + case Expression::Id::AtomicRMWId: { + DELEGATE_START(AtomicRMW); + DELEGATE_FIELD_CHILD(AtomicRMW, value); + DELEGATE_FIELD_CHILD(AtomicRMW, ptr); + DELEGATE_FIELD_INT(AtomicRMW, op); + DELEGATE_FIELD_INT(AtomicRMW, bytes); + DELEGATE_FIELD_ADDRESS(AtomicRMW, offset); + DELEGATE_END(AtomicRMW); + break; + } + case Expression::Id::AtomicCmpxchgId: { + DELEGATE_START(AtomicCmpxchg); + DELEGATE_FIELD_CHILD(AtomicCmpxchg, replacement); + DELEGATE_FIELD_CHILD(AtomicCmpxchg, expected); + DELEGATE_FIELD_CHILD(AtomicCmpxchg, ptr); + DELEGATE_FIELD_INT(AtomicCmpxchg, bytes); + DELEGATE_FIELD_ADDRESS(AtomicCmpxchg, offset); + DELEGATE_END(AtomicCmpxchgId); + break; + } + case Expression::Id::AtomicWaitId: { + DELEGATE_START(AtomicWait); + DELEGATE_FIELD_CHILD(AtomicWait, timeout); + DELEGATE_FIELD_CHILD(AtomicWait, expected); + DELEGATE_FIELD_CHILD(AtomicWait, ptr); + DELEGATE_FIELD_ADDRESS(AtomicWait, offset); + DELEGATE_FIELD_TYPE(AtomicWait, expectedType); + DELEGATE_END(AtomicWait); + break; + } + case Expression::Id::AtomicNotifyId: { + DELEGATE_START(AtomicNotify); + DELEGATE_FIELD_CHILD(AtomicNotify, notifyCount); + DELEGATE_FIELD_CHILD(AtomicNotify, ptr); + DELEGATE_FIELD_ADDRESS(AtomicNotify, offset); + DELEGATE_END(AtomicNotify); + break; + } + case Expression::Id::AtomicFenceId: { + DELEGATE_START(AtomicFence); + DELEGATE_FIELD_INT(AtomicFence, order); + DELEGATE_END(AtomicFence); + break; + } + case Expression::Id::SIMDExtractId: { + DELEGATE_START(SIMDExtract); + DELEGATE_FIELD_CHILD(SIMDExtract, vec); + DELEGATE_FIELD_INT(SIMDExtract, op); + DELEGATE_FIELD_INT(SIMDExtract, index); + DELEGATE_END(SIMDExtract); + break; + } + case Expression::Id::SIMDReplaceId: { + DELEGATE_START(SIMDReplace); + DELEGATE_FIELD_CHILD(SIMDReplace, value); + DELEGATE_FIELD_CHILD(SIMDReplace, vec); + DELEGATE_FIELD_INT(SIMDReplace, op); + DELEGATE_FIELD_INT(SIMDReplace, index); + DELEGATE_END(SIMDReplace); + break; + } + case Expression::Id::SIMDShuffleId: { + DELEGATE_START(SIMDShuffle); + DELEGATE_FIELD_CHILD(SIMDShuffle, right); + DELEGATE_FIELD_CHILD(SIMDShuffle, left); + DELEGATE_FIELD_INT_ARRAY(SIMDShuffle, mask); + DELEGATE_END(SIMDShuffle); + break; + } + case Expression::Id::SIMDTernaryId: { + DELEGATE_START(SIMDTernary); + DELEGATE_FIELD_CHILD(SIMDTernary, c); + DELEGATE_FIELD_CHILD(SIMDTernary, b); + DELEGATE_FIELD_CHILD(SIMDTernary, a); + DELEGATE_FIELD_INT(SIMDTernary, op); + DELEGATE_END(SIMDTernary); + break; + } + case Expression::Id::SIMDShiftId: { + DELEGATE_START(SIMDShift); + DELEGATE_FIELD_CHILD(SIMDShift, shift); + DELEGATE_FIELD_CHILD(SIMDShift, vec); + DELEGATE_FIELD_INT(SIMDShift, op); + DELEGATE_END(SIMDShift); + break; + } + case Expression::Id::SIMDLoadId: { + DELEGATE_START(SIMDLoad); + DELEGATE_FIELD_CHILD(SIMDLoad, ptr); + DELEGATE_FIELD_INT(SIMDLoad, op); + DELEGATE_FIELD_ADDRESS(SIMDLoad, offset); + DELEGATE_FIELD_ADDRESS(SIMDLoad, align); + DELEGATE_END(SIMDLoad); + break; + } + case Expression::Id::SIMDLoadStoreLaneId: { + DELEGATE_START(SIMDLoadStoreLane); + DELEGATE_FIELD_CHILD(SIMDLoadStoreLane, vec); + DELEGATE_FIELD_CHILD(SIMDLoadStoreLane, ptr); + DELEGATE_FIELD_INT(SIMDLoadStoreLane, op); + DELEGATE_FIELD_ADDRESS(SIMDLoadStoreLane, offset); + DELEGATE_FIELD_ADDRESS(SIMDLoadStoreLane, align); + DELEGATE_FIELD_INT(SIMDLoadStoreLane, index); + DELEGATE_END(SIMDLoadStoreLane); + break; + } + case Expression::Id::PrefetchId: { + DELEGATE_START(Prefetch); + DELEGATE_FIELD_CHILD(Prefetch, ptr); + DELEGATE_FIELD_INT(Prefetch, op); + DELEGATE_FIELD_ADDRESS(Prefetch, offset); + DELEGATE_FIELD_ADDRESS(Prefetch, align); + DELEGATE_END(Prefetch); + break; + } + case Expression::Id::MemoryInitId: { + DELEGATE_START(MemoryInit); + DELEGATE_FIELD_CHILD(MemoryInit, size); + DELEGATE_FIELD_CHILD(MemoryInit, offset); + DELEGATE_FIELD_CHILD(MemoryInit, dest); + DELEGATE_FIELD_INT(MemoryInit, segment); + DELEGATE_END(MemoryInit); + break; + } + case Expression::Id::DataDropId: { + DELEGATE_START(DataDrop); + DELEGATE_FIELD_INT(DataDrop, segment); + DELEGATE_END(DataDrop); + break; + } + case Expression::Id::MemoryCopyId: { + DELEGATE_START(MemoryCopy); + DELEGATE_FIELD_CHILD(MemoryCopy, size); + DELEGATE_FIELD_CHILD(MemoryCopy, source); + DELEGATE_FIELD_CHILD(MemoryCopy, dest); + DELEGATE_END(MemoryCopy); + break; + } + case Expression::Id::MemoryFillId: { + DELEGATE_START(MemoryFill); + DELEGATE_FIELD_CHILD(MemoryFill, size); + DELEGATE_FIELD_CHILD(MemoryFill, value); + DELEGATE_FIELD_CHILD(MemoryFill, dest); + DELEGATE_END(MemoryFill); + break; + } + case Expression::Id::ConstId: { + DELEGATE_START(Const); + DELEGATE_FIELD_LITERAL(Const, value); + DELEGATE_END(Const); + break; + } + case Expression::Id::UnaryId: { + DELEGATE_START(Unary); + DELEGATE_FIELD_CHILD(Unary, value); + DELEGATE_FIELD_INT(Unary, op); + DELEGATE_END(Unary); + break; + } + case Expression::Id::BinaryId: { + DELEGATE_START(Binary); + DELEGATE_FIELD_CHILD(Binary, right); + DELEGATE_FIELD_CHILD(Binary, left); + DELEGATE_FIELD_INT(Binary, op); + DELEGATE_END(Binary); + break; + } + case Expression::Id::SelectId: { + DELEGATE_START(Select); + DELEGATE_FIELD_CHILD(Select, condition); + DELEGATE_FIELD_CHILD(Select, ifFalse); + DELEGATE_FIELD_CHILD(Select, ifTrue); + DELEGATE_END(Select); + break; + } + case Expression::Id::DropId: { + DELEGATE_START(Drop); + DELEGATE_FIELD_CHILD(Drop, value); + DELEGATE_END(Drop); + break; + } + case Expression::Id::ReturnId: { + DELEGATE_START(Return); + DELEGATE_FIELD_OPTIONAL_CHILD(Return, value); + DELEGATE_END(Return); + break; + } + case Expression::Id::MemorySizeId: { + DELEGATE_START(MemorySize); + DELEGATE_END(MemorySize); + break; + } + case Expression::Id::MemoryGrowId: { + DELEGATE_START(MemoryGrow); + DELEGATE_FIELD_CHILD(MemoryGrow, delta); + DELEGATE_END(MemoryGrow); + break; + } + case Expression::Id::RefNullId: { + DELEGATE_START(RefNull); + DELEGATE_FIELD_TYPE(RefNull, type); + DELEGATE_END(RefNull); + break; + } + case Expression::Id::RefIsNullId: { + DELEGATE_START(RefIsNull); + DELEGATE_FIELD_CHILD(RefIsNull, value); + DELEGATE_END(RefIsNull); + break; + } + case Expression::Id::RefFuncId: { + DELEGATE_START(RefFunc); + DELEGATE_FIELD_NAME(RefFunc, func); + DELEGATE_END(RefFunc); + break; + } + case Expression::Id::RefEqId: { + DELEGATE_START(RefEq); + DELEGATE_FIELD_CHILD(RefEq, right); + DELEGATE_FIELD_CHILD(RefEq, left); + DELEGATE_END(RefEq); + break; + } + case Expression::Id::TryId: { + DELEGATE_START(Try); + DELEGATE_FIELD_CHILD(Try, catchBody); + DELEGATE_FIELD_CHILD(Try, body); + DELEGATE_END(Try); + break; + } + case Expression::Id::ThrowId: { + DELEGATE_START(Throw); + DELEGATE_FIELD_CHILD_VECTOR(Throw, operands); + DELEGATE_FIELD_NAME(Throw, event); + DELEGATE_END(Throw); + break; + } + case Expression::Id::RethrowId: { + DELEGATE_START(Rethrow); + DELEGATE_FIELD_CHILD(Rethrow, exnref); + DELEGATE_END(Rethrow); + break; + } + case Expression::Id::BrOnExnId: { + DELEGATE_START(BrOnExn); + DELEGATE_FIELD_CHILD(BrOnExn, exnref); + DELEGATE_FIELD_SCOPE_NAME_USE(BrOnExn, name); + DELEGATE_FIELD_NAME(BrOnExn, event); + DELEGATE_FIELD_TYPE(BrOnExn, sent); + DELEGATE_END(BrOnExn); + break; + } + case Expression::Id::NopId: { + DELEGATE_START(Nop); + DELEGATE_END(Nop); + break; + } + case Expression::Id::UnreachableId: { + DELEGATE_START(Unreachable); + DELEGATE_END(Unreachable); + break; + } + case Expression::Id::PopId: { + DELEGATE_START(Pop); + DELEGATE_END(Pop); + break; + } + case Expression::Id::TupleMakeId: { + DELEGATE_START(TupleMake); + DELEGATE_FIELD_CHILD_VECTOR(Tuple, operands); + DELEGATE_END(TupleMake); + break; + } + case Expression::Id::TupleExtractId: { + DELEGATE_START(TupleExtract); + DELEGATE_FIELD_CHILD(TupleExtract, tuple); + DELEGATE_FIELD_INT(TupleExtract, index); + DELEGATE_END(TupleExtract); + break; + } + case Expression::Id::I31NewId: { + DELEGATE_START(I31New); + DELEGATE_FIELD_CHILD(I31New, value); + DELEGATE_END(I31New); + break; + } + case Expression::Id::I31GetId: { + DELEGATE_START(I31Get); + DELEGATE_FIELD_CHILD(I31Get, i31); + DELEGATE_FIELD_INT(I31Get, signed_); + DELEGATE_END(I31Get); + break; + } + case Expression::Id::CallRefId: { + DELEGATE_START(CallRef); + DELEGATE_FIELD_CHILD(CallRef, target); + DELEGATE_FIELD_CHILD_VECTOR(CallRef, operands); + DELEGATE_FIELD_INT(CallRef, isReturn); + DELEGATE_END(CallRef); + break; + } + case Expression::Id::RefTestId: { + DELEGATE_START(RefTest); + DELEGATE_FIELD_CHILD(RefTest, ref); + DELEGATE_FIELD_CHILD(RefTest, rtt); + DELEGATE_END(RefTest); + break; + } + case Expression::Id::RefCastId: { + DELEGATE_START(RefCast); + DELEGATE_FIELD_CHILD(RefCast, ref); + DELEGATE_FIELD_CHILD(RefCast, rtt); + DELEGATE_END(RefCast); + break; + } + case Expression::Id::BrOnCastId: { + DELEGATE_START(BrOnCast); + DELEGATE_FIELD_SCOPE_NAME_USE(BrOnCast, name); + DELEGATE_FIELD_TYPE(BrOnCast, castType); + DELEGATE_FIELD_CHILD(BrOnCast, ref); + DELEGATE_FIELD_CHILD(BrOnCast, rtt); + DELEGATE_END(BrOnCast); + break; + } + case Expression::Id::RttCanonId: { + DELEGATE_START(RttCanon); + DELEGATE_END(RttCanon); + break; + } + case Expression::Id::RttSubId: { + DELEGATE_START(RttSub); + DELEGATE_FIELD_CHILD(RttSub, parent); + DELEGATE_END(RttSub); + break; + } + case Expression::Id::StructNewId: { + DELEGATE_START(StructNew); + DELEGATE_FIELD_CHILD(StructNew, rtt); + DELEGATE_FIELD_CHILD_VECTOR(StructNew, operands); + DELEGATE_END(StructNew); + break; + } + case Expression::Id::StructGetId: { + DELEGATE_START(StructGet); + DELEGATE_FIELD_INT(StructGet, index); + DELEGATE_FIELD_CHILD(StructGet, ref); + DELEGATE_FIELD_INT(StructGet, signed_); + DELEGATE_END(StructGet); + break; + } + case Expression::Id::StructSetId: { + DELEGATE_START(StructSet); + DELEGATE_FIELD_INT(StructSet, index); + DELEGATE_FIELD_CHILD(StructSet, ref); + DELEGATE_FIELD_CHILD(StructSet, value); + DELEGATE_END(StructSet); + break; + } + case Expression::Id::ArrayNewId: { + DELEGATE_START(ArrayNew); + DELEGATE_FIELD_CHILD(ArrayNew, rtt); + DELEGATE_FIELD_CHILD(ArrayNew, size); + DELEGATE_FIELD_OPTIONAL_CHILD(ArrayNew, init); + DELEGATE_END(ArrayNew); + break; + } + case Expression::Id::ArrayGetId: { + DELEGATE_START(ArrayGet); + DELEGATE_FIELD_CHILD(ArrayGet, ref); + DELEGATE_FIELD_CHILD(ArrayGet, index); + DELEGATE_FIELD_INT(ArrayGet, signed_); + DELEGATE_END(ArrayGet); + break; + } + case Expression::Id::ArraySetId: { + DELEGATE_START(ArraySet); + DELEGATE_FIELD_CHILD(ArrayGet, ref); + DELEGATE_FIELD_CHILD(ArrayGet, index); + DELEGATE_FIELD_CHILD(ArrayGet, value); + DELEGATE_END(ArraySet); + break; + } + case Expression::Id::ArrayLenId: { + DELEGATE_START(ArrayLen); + DELEGATE_FIELD_CHILD(ArrayLen, ref); + DELEGATE_END(ArrayLen); + break; + } +} + +#undef DELEGATE_ID +#undef DELEGATE_START +#undef DELEGATE_END +#undef DELEGATE_FIELD_CHILD +#undef DELEGATE_FIELD_OPTIONAL_CHILD +#undef DELEGATE_FIELD_CHILD_VECTOR +#undef DELEGATE_FIELD_INT +#undef DELEGATE_FIELD_INT_ARRAY +#undef DELEGATE_FIELD_LITERAL +#undef DELEGATE_FIELD_NAME +#undef DELEGATE_FIELD_SCOPE_NAME_DEF +#undef DELEGATE_FIELD_SCOPE_NAME_USE +#undef DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR +#undef DELEGATE_FIELD_SIGNATURE +#undef DELEGATE_FIELD_TYPE +#undef DELEGATE_FIELD_ADDRESS +#undef DELEGATE_GET_FIELD diff -Nru binaryen-91/src/wasm-delegations.h binaryen-99/src/wasm-delegations.h --- binaryen-91/src/wasm-delegations.h 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/src/wasm-delegations.h 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,84 @@ +/* + * Copyright 2020 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. + */ + +DELEGATE(Nop); +DELEGATE(Block); +DELEGATE(If); +DELEGATE(Loop); +DELEGATE(Break); +DELEGATE(Switch); +DELEGATE(Call); +DELEGATE(CallIndirect); +DELEGATE(LocalGet); +DELEGATE(LocalSet); +DELEGATE(GlobalGet); +DELEGATE(GlobalSet); +DELEGATE(Load); +DELEGATE(Store); +DELEGATE(AtomicRMW); +DELEGATE(AtomicCmpxchg); +DELEGATE(AtomicWait); +DELEGATE(AtomicNotify); +DELEGATE(AtomicFence); +DELEGATE(SIMDExtract); +DELEGATE(SIMDReplace); +DELEGATE(SIMDShuffle); +DELEGATE(SIMDTernary); +DELEGATE(SIMDShift); +DELEGATE(SIMDLoad); +DELEGATE(SIMDLoadStoreLane); +DELEGATE(Prefetch); +DELEGATE(MemoryInit); +DELEGATE(DataDrop); +DELEGATE(MemoryCopy); +DELEGATE(MemoryFill); +DELEGATE(Const); +DELEGATE(Unary); +DELEGATE(Binary); +DELEGATE(Select); +DELEGATE(Drop); +DELEGATE(Return); +DELEGATE(MemorySize); +DELEGATE(MemoryGrow); +DELEGATE(Unreachable); +DELEGATE(Pop); +DELEGATE(RefNull); +DELEGATE(RefIsNull); +DELEGATE(RefFunc); +DELEGATE(RefEq); +DELEGATE(Try); +DELEGATE(Throw); +DELEGATE(Rethrow); +DELEGATE(BrOnExn); +DELEGATE(TupleMake); +DELEGATE(TupleExtract); +DELEGATE(I31New); +DELEGATE(I31Get); +DELEGATE(CallRef); +DELEGATE(RefTest); +DELEGATE(RefCast); +DELEGATE(BrOnCast); +DELEGATE(RttCanon); +DELEGATE(RttSub); +DELEGATE(StructNew); +DELEGATE(StructGet); +DELEGATE(StructSet); +DELEGATE(ArrayNew); +DELEGATE(ArrayGet); +DELEGATE(ArraySet); +DELEGATE(ArrayLen); + +#undef DELEGATE diff -Nru binaryen-91/src/wasm-emscripten.h binaryen-99/src/wasm-emscripten.h --- binaryen-91/src/wasm-emscripten.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm-emscripten.h 2021-01-07 20:01:06.000000000 +0000 @@ -23,6 +23,8 @@ namespace wasm { +Global* getStackPointerGlobal(Module& wasm); + // Class which modifies a wasm module for use with emscripten. Generates // runtime functions and emits metadata. class EmscriptenGlueGenerator { @@ -31,34 +33,15 @@ : wasm(wasm), builder(wasm), stackPointerOffset(stackPointerOffset), useStackPointerGlobal(stackPointerOffset == 0) {} - void setStandalone(bool standalone_) { standalone = standalone_; } - - void generateRuntimeFunctions(); - Function* generateMemoryGrowthFunction(); - Function* generateAssignGOTEntriesFunction(); - void generatePostInstantiateFunction(); - - // Create thunks for use with emscripten Runtime.dynCall. Creates one for each - // signature in the indirect function table. - void generateDynCallThunks(); - - // Convert stack pointer access from global.get/global.set to calling save - // and restore functions. - void replaceStackPointerGlobal(); - - // Remove the import of a mutable __stack_pointer and instead initialize the - // stack pointer from an immutable import. - void internalizeStackPointerGlobal(); - - std::string - generateEmscriptenMetadata(Address staticBump, - std::vector const& initializerFunctions); + std::string generateEmscriptenMetadata(Name initializer); void fixInvokeFunctionNames(); - void enforceStackLimit(); - - void exportWasiStart(); + // clang uses name mangling to rename the argc/argv form of main to + // __main_argc_argv. Emscripten in non-standalone mode expects that function + // to be exported as main. This function renames __main_argc_argv to main + // as expected by emscripten. + void renameMainArgcArgv(); // Emits the data segments to a file. The file contains data from address base // onwards (we must pass in base, as we can't tell it from the wasm - the @@ -66,25 +49,17 @@ // the file). void separateDataSegments(Output* outfile, Address base); + bool standalone = false; + bool sideModule = false; + bool minimizeWasmChanges = false; + bool noDynCalls = false; + bool onlyI64DynCalls = false; + private: Module& wasm; Builder builder; Address stackPointerOffset; bool useStackPointerGlobal; - bool standalone; - // Used by generateDynCallThunk to track all the dynCall functions created - // so far. - std::unordered_set sigs; - - Global* getStackPointerGlobal(); - Expression* generateLoadStackPointer(); - Expression* generateStoreStackPointer(Function* func, Expression* value); - void generateDynCallThunk(Signature sig); - void generateStackSaveFunction(); - void generateStackAllocFunction(); - void generateStackRestoreFunction(); - void generateSetStackLimitFunction(); - Name importStackOverflowHandler(); }; } // namespace wasm diff -Nru binaryen-91/src/wasm-features.h binaryen-99/src/wasm-features.h --- binaryen-91/src/wasm-features.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm-features.h 2021-01-07 20:01:06.000000000 +0000 @@ -35,7 +35,11 @@ ExceptionHandling = 1 << 6, TailCall = 1 << 7, ReferenceTypes = 1 << 8, - All = (1 << 9) - 1 + Multivalue = 1 << 9, + GC = 1 << 10, + Memory64 = 1 << 11, + TypedFunctionReferences = 1 << 12, + All = (1 << 13) - 1 }; static std::string toString(Feature f) { @@ -58,6 +62,14 @@ return "tail-call"; case ReferenceTypes: return "reference-types"; + case Multivalue: + return "multivalue"; + case GC: + return "gc"; + case Memory64: + return "memory64"; + case TypedFunctionReferences: + return "typed-function-references"; default: WASM_UNREACHABLE("unexpected feature"); } @@ -65,7 +77,7 @@ FeatureSet() : features(MVP) {} FeatureSet(uint32_t features) : features(features) {} - constexpr operator uint32_t() const { return features; } + operator uint32_t() const { return features; } bool isMVP() const { return features == MVP; } bool has(FeatureSet f) { return (features & f) == f; } @@ -80,6 +92,12 @@ } bool hasTailCall() const { return (features & TailCall) != 0; } bool hasReferenceTypes() const { return (features & ReferenceTypes) != 0; } + bool hasMultivalue() const { return (features & Multivalue) != 0; } + bool hasGC() const { return (features & GC) != 0; } + bool hasMemory64() const { return (features & Memory64) != 0; } + bool hasTypedFunctionReferences() const { + return (features & TypedFunctionReferences) != 0; + } bool hasAll() const { return (features & All) != 0; } void makeMVP() { features = MVP; } @@ -95,6 +113,12 @@ void setExceptionHandling(bool v = true) { set(ExceptionHandling, v); } void setTailCall(bool v = true) { set(TailCall, v); } void setReferenceTypes(bool v = true) { set(ReferenceTypes, v); } + void setMultivalue(bool v = true) { set(Multivalue, v); } + void setGC(bool v = true) { set(GC, v); } + void setMemory64(bool v = true) { set(Memory64, v); } + void setTypedFunctionReferences(bool v = true) { + set(TypedFunctionReferences, v); + } void setAll(bool v = true) { features = v ? All : MVP; } void enable(const FeatureSet& other) { features |= other.features; } @@ -103,32 +127,10 @@ } template void iterFeatures(F f) { - if (hasAtomics()) { - f(Atomics); - } - if (hasBulkMemory()) { - f(BulkMemory); - } - if (hasExceptionHandling()) { - f(ExceptionHandling); - } - if (hasMutableGlobals()) { - f(MutableGlobals); - } - if (hasTruncSat()) { - f(TruncSat); - } - if (hasSignExt()) { - f(SignExt); - } - if (hasSIMD()) { - f(SIMD); - } - if (hasTailCall()) { - f(TailCall); - } - if (hasReferenceTypes()) { - f(ReferenceTypes); + for (uint32_t feature = MVP + 1; feature < All; feature <<= 1) { + if (has(feature)) { + f(static_cast(feature)); + } } } diff -Nru binaryen-91/src/wasm.h binaryen-99/src/wasm.h --- binaryen-91/src/wasm.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm.h 2021-01-07 20:01:06.000000000 +0000 @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -42,26 +43,26 @@ // An index in a wasm module typedef uint32_t Index; -// An address in linear memory. For now only wasm32 +// An address in linear memory. struct Address { - typedef uint32_t address_t; - address_t addr; + typedef uint32_t address32_t; + typedef uint64_t address64_t; + address64_t addr; Address() : addr(0) {} - Address(uint64_t a) : addr(static_cast(a)) { - assert(a <= std::numeric_limits::max()); - } + Address(uint64_t a) : addr(a) {} Address& operator=(uint64_t a) { - assert(a <= std::numeric_limits::max()); - addr = static_cast(a); + addr = a; return *this; } - operator address_t() const { return addr; } + operator address64_t() const { return addr; } Address& operator++() { ++addr; return *this; } }; +enum class IRProfile { Normal, Poppy }; + // Operators enum UnaryOp { @@ -156,24 +157,42 @@ // SIMD arithmetic NotVec128, + AbsVecI8x16, NegVecI8x16, AnyTrueVecI8x16, AllTrueVecI8x16, + BitmaskVecI8x16, + PopcntVecI8x16, + AbsVecI16x8, NegVecI16x8, AnyTrueVecI16x8, AllTrueVecI16x8, + BitmaskVecI16x8, + AbsVecI32x4, NegVecI32x4, AnyTrueVecI32x4, AllTrueVecI32x4, + BitmaskVecI32x4, NegVecI64x2, - AnyTrueVecI64x2, - AllTrueVecI64x2, + BitmaskVecI64x2, AbsVecF32x4, NegVecF32x4, SqrtVecF32x4, + CeilVecF32x4, + FloorVecF32x4, + TruncVecF32x4, + NearestVecF32x4, AbsVecF64x2, NegVecF64x2, SqrtVecF64x2, + CeilVecF64x2, + FloorVecF64x2, + TruncVecF64x2, + NearestVecF64x2, + ExtAddPairwiseSVecI8x16ToI16x8, + ExtAddPairwiseUVecI8x16ToI16x8, + ExtAddPairwiseSVecI16x8ToI32x4, + ExtAddPairwiseUVecI16x8ToI32x4, // SIMD conversions TruncSatSVecF32x4ToVecI32x4, @@ -192,6 +211,10 @@ WidenHighSVecI16x8ToVecI32x4, WidenLowUVecI16x8ToVecI32x4, WidenHighUVecI16x8ToVecI32x4, + WidenLowSVecI32x4ToVecI64x2, + WidenHighSVecI32x4ToVecI64x2, + WidenLowUVecI32x4ToVecI64x2, + WidenHighUVecI32x4ToVecI64x2, InvalidUnary }; @@ -211,8 +234,8 @@ OrInt32, XorInt32, ShlInt32, - ShrUInt32, ShrSInt32, + ShrUInt32, RotLInt32, RotRInt32, @@ -244,8 +267,8 @@ OrInt64, XorInt64, ShlInt64, - ShrUInt64, ShrSInt64, + ShrUInt64, RotLInt64, RotRInt64, @@ -336,6 +359,7 @@ LeUVecI32x4, GeSVecI32x4, GeUVecI32x4, + EqVecI64x2, EqVecF32x4, NeVecF32x4, LtVecF32x4, @@ -378,6 +402,11 @@ MaxSVecI16x8, MaxUVecI16x8, AvgrUVecI16x8, + Q15MulrSatSVecI16x8, + ExtMulLowSVecI16x8, + ExtMulHighSVecI16x8, + ExtMulLowUVecI16x8, + ExtMulHighUVecI16x8, AddVecI32x4, SubVecI32x4, MulVecI32x4, @@ -386,20 +415,33 @@ MaxSVecI32x4, MaxUVecI32x4, DotSVecI16x8ToVecI32x4, + ExtMulLowSVecI32x4, + ExtMulHighSVecI32x4, + ExtMulLowUVecI32x4, + ExtMulHighUVecI32x4, AddVecI64x2, SubVecI64x2, + MulVecI64x2, + ExtMulLowSVecI64x2, + ExtMulHighSVecI64x2, + ExtMulLowUVecI64x2, + ExtMulHighUVecI64x2, AddVecF32x4, SubVecF32x4, MulVecF32x4, DivVecF32x4, MinVecF32x4, MaxVecF32x4, + PMinVecF32x4, + PMaxVecF32x4, AddVecF64x2, SubVecF64x2, MulVecF64x2, DivVecF64x2, MinVecF64x2, MaxVecF64x2, + PMinVecF64x2, + PMaxVecF64x2, // SIMD Conversion NarrowSVecI16x8ToVecI8x16, @@ -413,9 +455,7 @@ InvalidBinary }; -enum HostOp { MemorySize, MemoryGrow }; - -enum AtomicRMWOp { Add, Sub, And, Or, Xor, Xchg }; +enum AtomicRMWOp { RMWAdd, RMWSub, RMWAnd, RMWOr, RMWXor, RMWXchg }; enum SIMDExtractOp { ExtractLaneSVecI8x16, @@ -462,11 +502,39 @@ LoadExtSVec16x4ToVecI32x4, LoadExtUVec16x4ToVecI32x4, LoadExtSVec32x2ToVecI64x2, - LoadExtUVec32x2ToVecI64x2 + LoadExtUVec32x2ToVecI64x2, + Load32Zero, + Load64Zero, +}; + +enum SIMDLoadStoreLaneOp { + LoadLaneVec8x16, + LoadLaneVec16x8, + LoadLaneVec32x4, + LoadLaneVec64x2, + StoreLaneVec8x16, + StoreLaneVec16x8, + StoreLaneVec32x4, + StoreLaneVec64x2, +}; + +enum SIMDTernaryOp { + Bitselect, + QFMAF32x4, + QFMSF32x4, + QFMAF64x2, + QFMSF64x2, + SignSelectVec8x16, + SignSelectVec16x8, + SignSelectVec32x4, + SignSelectVec64x2 +}; + +enum PrefetchOp { + PrefetchTemporal, + PrefetchNontemporal, }; -enum SIMDTernaryOp { Bitselect, QFMAF32x4, QFMSF32x4, QFMAF64x2, QFMSF64x2 }; - // // Expressions // @@ -511,8 +579,10 @@ SelectId, DropId, ReturnId, - HostId, + MemorySizeId, + MemoryGrowId, NopId, + PrefetchId, UnreachableId, AtomicRMWId, AtomicCmpxchgId, @@ -525,19 +595,37 @@ SIMDTernaryId, SIMDShiftId, SIMDLoadId, + SIMDLoadStoreLaneId, MemoryInitId, DataDropId, MemoryCopyId, MemoryFillId, - PushId, PopId, RefNullId, RefIsNullId, RefFuncId, + RefEqId, TryId, ThrowId, RethrowId, BrOnExnId, + TupleMakeId, + TupleExtractId, + I31NewId, + I31GetId, + CallRefId, + RefTestId, + RefCastId, + BrOnCastId, + RttCanonId, + RttSubId, + StructNewId, + StructGetId, + StructSetId, + ArrayNewId, + ArrayGetId, + ArraySetId, + ArrayLenId, NumExpressionIds }; Id _id; @@ -549,30 +637,46 @@ void finalize() {} - template bool is() const { return int(_id) == int(T::SpecificId); } + template bool is() const { + static_assert(std::is_base_of::value, + "Expression is not a base of destination type T"); + return int(_id) == int(T::SpecificId); + } template T* dynCast() { + static_assert(std::is_base_of::value, + "Expression is not a base of destination type T"); return int(_id) == int(T::SpecificId) ? (T*)this : nullptr; } template const T* dynCast() const { + static_assert(std::is_base_of::value, + "Expression is not a base of destination type T"); return int(_id) == int(T::SpecificId) ? (const T*)this : nullptr; } template T* cast() { + static_assert(std::is_base_of::value, + "Expression is not a base of destination type T"); assert(int(_id) == int(T::SpecificId)); return (T*)this; } template const T* cast() const { + static_assert(std::is_base_of::value, + "Expression is not a base of destination type T"); assert(int(_id) == int(T::SpecificId)); return (const T*)this; } + + // Print the expression to stderr. Meant for use while debugging. + void dump(); }; const char* getExpressionName(Expression* curr); Literal getLiteralFromConstExpression(Expression* curr); +Literals getLiteralsFromConstExpression(Expression* curr); typedef ArenaVector ExpressionList; @@ -608,11 +712,13 @@ // needed (which may require scanning the block) void finalize(Type type_); + enum Breakability { Unknown, HasBreak, NoBreak }; + // set the type given you know its type, and you know if there is a break to // this block. this avoids the need to scan the contents of the block in the // case that it might be unreachable, so it is recommended if you already know // the type and breakability anyhow. - void finalize(Type type_, bool hasBreak); + void finalize(Type type_, Breakability breakability); }; class If : public SpecificExpression { @@ -838,6 +944,8 @@ // other orderings may be added in the future. This field is reserved for // that, and currently set to 0. uint8_t order = 0; + + void finalize(); }; class SIMDExtract : public SpecificExpression { @@ -916,6 +1024,37 @@ void finalize(); }; +class SIMDLoadStoreLane + : public SpecificExpression { +public: + SIMDLoadStoreLane() = default; + SIMDLoadStoreLane(MixedArena& allocator) {} + + SIMDLoadStoreLaneOp op; + Address offset; + Address align; + uint8_t index; + Expression* ptr; + Expression* vec; + + bool isStore(); + bool isLoad() { return !isStore(); } + Index getMemBytes(); + void finalize(); +}; + +class Prefetch : public SpecificExpression { +public: + Prefetch() = default; + Prefetch(MixedArena& allocator) : Prefetch() {} + + PrefetchOp op; + Address offset; + Address align; + Expression* ptr; + void finalize(); +}; + class MemoryInit : public SpecificExpression { public: MemoryInit() = default; @@ -1036,42 +1175,37 @@ Expression* value = nullptr; }; -class Host : public SpecificExpression { +class MemorySize : public SpecificExpression { public: - Host(MixedArena& allocator) : operands(allocator) {} + MemorySize() { type = Type::i32; } + MemorySize(MixedArena& allocator) : MemorySize() {} - HostOp op; - Name nameOperand; - ExpressionList operands; + Type ptrType = Type::i32; + void make64(); void finalize(); }; -class Unreachable : public SpecificExpression { +class MemoryGrow : public SpecificExpression { public: - Unreachable() { type = Type::unreachable; } - Unreachable(MixedArena& allocator) : Unreachable() {} -}; + MemoryGrow() { type = Type::i32; } + MemoryGrow(MixedArena& allocator) : MemoryGrow() {} -// A multivalue push. This represents a push of a value, which will be -// used in the next return. That is, a multivalue return is done by -// pushing some values, then doing a return (with a value as well). -// For more on this design, see the readme. -class Push : public SpecificExpression { -public: - Push() = default; - Push(MixedArena& allocator) {} - - Expression* value; + Expression* delta = nullptr; + Type ptrType = Type::i32; + void make64(); void finalize(); }; -// A multivalue pop. This represents a pop of a value, which arrived -// from a multivalue call or other situation where there are things on -// the stack. That is, a multivalue-returning call is done by doing -// the call, receiving the first value normally, and receiving the others -// via calls to pop. +class Unreachable : public SpecificExpression { +public: + Unreachable() { type = Type::unreachable; } + Unreachable(MixedArena& allocator) : Unreachable() {} +}; + +// Represents a pop of a value that arrives as an implicit argument to the +// current block. Currently used in exception handling. class Pop : public SpecificExpression { public: Pop() = default; @@ -1084,6 +1218,8 @@ RefNull(MixedArena& allocator) {} void finalize(); + void finalize(HeapType heapType); + void finalize(Type type); }; class RefIsNull : public SpecificExpression { @@ -1102,6 +1238,17 @@ Name func; void finalize(); + void finalize(Type type_); +}; + +class RefEq : public SpecificExpression { +public: + RefEq(MixedArena& allocator) {} + + Expression* left; + Expression* right; + + void finalize(); }; class Try : public SpecificExpression { @@ -1149,13 +1296,219 @@ void finalize(); }; +class TupleMake : public SpecificExpression { +public: + TupleMake(MixedArena& allocator) : operands(allocator) {} + + ExpressionList operands; + + void finalize(); +}; + +class TupleExtract : public SpecificExpression { +public: + TupleExtract(MixedArena& allocator) {} + + Expression* tuple; + Index index; + + void finalize(); +}; + +class I31New : public SpecificExpression { +public: + I31New(MixedArena& allocator) {} + + Expression* value; + + void finalize(); +}; + +class I31Get : public SpecificExpression { +public: + I31Get(MixedArena& allocator) {} + + Expression* i31; + bool signed_; + + void finalize(); +}; + +class CallRef : public SpecificExpression { +public: + CallRef(MixedArena& allocator) : operands(allocator) {} + ExpressionList operands; + Expression* target; + bool isReturn = false; + + void finalize(); + void finalize(Type type_); +}; + +class RefTest : public SpecificExpression { +public: + RefTest(MixedArena& allocator) {} + + Expression* ref; + Expression* rtt; + + void finalize(); + + Type getCastType(); +}; + +class RefCast : public SpecificExpression { +public: + RefCast(MixedArena& allocator) {} + + Expression* ref; + Expression* rtt; + + void finalize(); + + Type getCastType(); +}; + +class BrOnCast : public SpecificExpression { +public: + BrOnCast(MixedArena& allocator) {} + + Name name; + // The cast type cannot be inferred from rtt if rtt is unreachable, so we must + // store it explicitly. + Type castType; + Expression* ref; + Expression* rtt; + + void finalize(); + + Type getCastType(); +}; + +class RttCanon : public SpecificExpression { +public: + RttCanon(MixedArena& allocator) {} + + void finalize(); +}; + +class RttSub : public SpecificExpression { +public: + RttSub(MixedArena& allocator) {} + + Expression* parent; + + void finalize(); +}; + +class StructNew : public SpecificExpression { +public: + StructNew(MixedArena& allocator) : operands(allocator) {} + + Expression* rtt; + // A struct.new_with_default has empty operands. This does leave the case of a + // struct with no fields ambiguous, but it doesn't make a difference in that + // case, and binaryen doesn't guarantee roundtripping binaries anyhow. + ExpressionList operands; + + bool isWithDefault() { return operands.empty(); } + + void finalize(); +}; + +class StructGet : public SpecificExpression { +public: + StructGet(MixedArena& allocator) {} + + Index index; + Expression* ref; + // Packed fields have a sign. + bool signed_ = false; + + void finalize(); +}; + +class StructSet : public SpecificExpression { +public: + StructSet(MixedArena& allocator) {} + + Index index; + Expression* ref; + Expression* value; + + void finalize(); +}; + +class ArrayNew : public SpecificExpression { +public: + ArrayNew(MixedArena& allocator) {} + + Expression* rtt; + Expression* size; + // If set, then the initial value is assigned to all entries in the array. If + // not set, this is array.new_with_default and the default of the type is + // used. + Expression* init = nullptr; + + bool isWithDefault() { return !init; } + + void finalize(); +}; + +class ArrayGet : public SpecificExpression { +public: + ArrayGet(MixedArena& allocator) {} + + Expression* ref; + Expression* index; + // Packed fields have a sign. + bool signed_ = false; + + void finalize(); +}; + +class ArraySet : public SpecificExpression { +public: + ArraySet(MixedArena& allocator) {} + + Expression* ref; + Expression* index; + Expression* value; + + void finalize(); +}; + +class ArrayLen : public SpecificExpression { +public: + ArrayLen(MixedArena& allocator) {} + + Expression* ref; + + void finalize(); +}; + // Globals struct Importable { + Name name; + + // Explicit names are ones that we read from the input file and + // will be written the name section in the output file. + // Implicit names are names that binaryen generated for internal + // use only and will not be written the name section. + bool hasExplicitName = false; + // If these are set, then this is an import, as module.base Name module, base; - bool imported() { return module.is(); } + bool imported() const { return module.is(); } + + void setName(Name name_, bool hasExplicitName_) { + name = name_; + hasExplicitName = hasExplicitName_; + } + + void setExplicitName(Name name_) { setName(name_, true); } }; class Function; @@ -1183,10 +1536,10 @@ // control flow, have, like 'end' for loop and block. We keep these in a // separate map because they are rare and we optimize for the storage space // for the common type of instruction which just needs a Span. We implement - // this as a simple struct with two elements (as two extra elements is the - // maximum currently needed; due to 'catch' and 'end' for try-catch). The - // second value may be 0, indicating it is not used. - struct DelimiterLocations : public std::array { + // this as a simple array with one element at the moment (more elements may + // be necessary in the future). + // TODO: If we are sure we won't need more, make this a single value? + struct DelimiterLocations : public std::array { DelimiterLocations() { // Ensure zero-initialization. for (auto& item : *this) { @@ -1195,14 +1548,7 @@ } }; - enum DelimiterId { - // All control flow structures have an end, so use index 0 for that. - End = 0, - // Use index 1 for all other current things. - Else = 1, - Catch = 1, - Invalid = -1 - }; + enum DelimiterId { Else = 0, Catch = 0, Invalid = -1 }; std::unordered_map delimiters; // DWARF debug info can refer to multiple interesting positions in a function. @@ -1228,9 +1574,9 @@ class Function : public Importable { public: - Name name; - Signature sig; - std::vector vars; // params plus vars + Signature sig; // parameters and return value + IRProfile profile = IRProfile::Normal; + std::vector vars; // non-param locals // The body of the function Expression* body = nullptr; @@ -1293,6 +1639,7 @@ Name getLocalNameOrGeneric(Index index); bool hasLocalName(Index index) const; + void setLocalName(Index index, Name name); void clearNames(); void clearDebugInfo(); @@ -1319,9 +1666,9 @@ class Table : public Importable { public: - static const Address::address_t kPageSize = 1; + static const Address::address32_t kPageSize = 1; static const Index kUnlimitedSize = Index(-1); - // In wasm32, the maximum table size is limited by a 32-bit pointer: 4GB + // In wasm32/64, the maximum table size is limited by a 32-bit pointer: 4GB static const Index kMaxSize = Index(-1); struct Segment { @@ -1338,7 +1685,6 @@ // been defined or imported. The table can exist but be empty and have no // defined initial or max size. bool exists = false; - Name name; Address initial = 0; Address max = kMaxSize; std::vector segments; @@ -1356,14 +1702,15 @@ class Memory : public Importable { public: - static const Address::address_t kPageSize = 64 * 1024; - static const Address::address_t kUnlimitedSize = Address::address_t(-1); + static const Address::address32_t kPageSize = 64 * 1024; + static const Address::address64_t kUnlimitedSize = Address::address64_t(-1); // In wasm32, the maximum memory size is limited by a 32-bit pointer: 4GB - static const Address::address_t kMaxSize = + static const Address::address32_t kMaxSize32 = (uint64_t(4) * 1024 * 1024 * 1024) / kPageSize; - static const Address::address_t kPageMask = ~(kPageSize - 1); struct Segment { + // For use in name section only + Name name; bool isPassive = false; Expression* offset = nullptr; std::vector data; // TODO: optimize @@ -1377,39 +1724,44 @@ Segment(Expression* offset, std::vector& init) : offset(offset) { data.swap(init); } - Segment(bool isPassive, Expression* offset, const char* init, Address size) - : isPassive(isPassive), offset(offset) { + Segment(Name name, + bool isPassive, + Expression* offset, + const char* init, + Address size) + : name(name), isPassive(isPassive), offset(offset) { data.resize(size); std::copy_n(init, size, data.begin()); } }; bool exists = false; - Name name; Address initial = 0; // sizes are in pages - Address max = kMaxSize; + Address max = kMaxSize32; std::vector segments; // See comment in Table. bool shared = false; + Type indexType = Type::i32; Memory() { name = Name::fromInt(0); } bool hasMax() { return max != kUnlimitedSize; } + bool is64() { return indexType == Type::i64; } void clear() { exists = false; name = ""; initial = 0; - max = kMaxSize; + max = kMaxSize32; segments.clear(); shared = false; + indexType = Type::i32; } }; class Global : public Importable { public: - Name name; Type type; - Expression* init; + Expression* init = nullptr; bool mutable_ = false; }; @@ -1418,7 +1770,6 @@ class Event : public Importable { public: - Name name; // Kind of event. Currently only WASM_EVENT_ATTRIBUTE_EXCEPTION is possible. uint32_t attribute = WASM_EVENT_ATTRIBUTE_EXCEPTION; Signature sig; @@ -1432,6 +1783,13 @@ std::vector data; }; +// The optional "dylink" section is used in dynamic linking. +class DylinkSection { +public: + Index memorySize, memoryAlignment, tableSize, tableAlignment; + std::vector neededDynlibs; +}; + class Module { public: // wasm contents (generally you shouldn't access these from outside, except @@ -1447,6 +1805,9 @@ std::vector userSections; + // Optional user section IR representation. + std::unique_ptr dylinkSection; + // Source maps debug info. std::vector debugInfoFileNames; @@ -1457,6 +1818,9 @@ FeatureSet features = FeatureSet::MVP; bool hasFeaturesSection = false; + // Module name, if specified. Serves a documentary role only. + Name name; + MixedArena allocator; private: @@ -1486,10 +1850,10 @@ Global* addGlobal(Global* curr); Event* addEvent(Event* curr); - Export* addExport(std::unique_ptr curr); - Function* addFunction(std::unique_ptr curr); - Global* addGlobal(std::unique_ptr curr); - Event* addEvent(std::unique_ptr curr); + Export* addExport(std::unique_ptr&& curr); + Function* addFunction(std::unique_ptr&& curr); + Global* addGlobal(std::unique_ptr&& curr); + Event* addEvent(std::unique_ptr&& curr); void addStart(const Name& s); @@ -1513,9 +1877,15 @@ namespace std { template<> struct hash { size_t operator()(const wasm::Address a) const { - return std::hash()(a.addr); + return std::hash()(a.addr); } }; + +std::ostream& operator<<(std::ostream& o, wasm::Module& module); +std::ostream& operator<<(std::ostream& o, wasm::Expression& expression); +std::ostream& operator<<(std::ostream& o, wasm::StackInst& inst); +std::ostream& operator<<(std::ostream& o, wasm::StackIR& ir); + } // namespace std #endif // wasm_wasm_h diff -Nru binaryen-91/src/wasm-interpreter.h binaryen-99/src/wasm-interpreter.h --- binaryen-91/src/wasm-interpreter.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm-interpreter.h 2021-01-07 20:01:06.000000000 +0000 @@ -30,6 +30,7 @@ #include "ir/module-utils.h" #include "support/bits.h" #include "support/safe_integer.h" +#include "wasm-builder.h" #include "wasm-traversal.h" #include "wasm.h" @@ -39,23 +40,45 @@ namespace wasm { +struct WasmException { + WasmException(Literal exn) : exn(exn) {} + Literal exn; +}; + using namespace cashew; // Utilities -extern Name WASM, RETURN_FLOW; +extern Name WASM, RETURN_FLOW, NONCONSTANT_FLOW; // Stuff that flows around during executing expressions: a literal, or a change // in control flow. class Flow { public: - Flow() = default; - Flow(Literal value) : value(value) {} - Flow(Name breakTo) : breakTo(breakTo) {} + Flow() : values() {} + Flow(Literal value) : values{value} { assert(value.type.isConcrete()); } + Flow(Literals& values) : values(values) {} + Flow(Literals&& values) : values(std::move(values)) {} + Flow(Name breakTo) : values(), breakTo(breakTo) {} + Flow(Name breakTo, Literal value) : values{value}, breakTo(breakTo) {} - Literal value; + Literals values; Name breakTo; // if non-null, a break is going on + // A helper function for the common case where there is only one value + const Literal& getSingleValue() { + assert(values.size() == 1); + return values[0]; + } + + Type getType() { return values.getType(); } + + Expression* getConstExpression(Module& module) { + assert(values.size() > 0); + Builder builder(module); + return builder.makeConstantExpression(values); + } + bool breaking() { return breakTo.is(); } void clearIf(Name target) { @@ -64,9 +87,15 @@ } } - friend std::ostream& operator<<(std::ostream& o, Flow& flow) { - o << "(flow " << (flow.breakTo.is() ? flow.breakTo.str : "-") << " : " - << flow.value << ')'; + friend std::ostream& operator<<(std::ostream& o, const Flow& flow) { + o << "(flow " << (flow.breakTo.is() ? flow.breakTo.str : "-") << " : {"; + for (size_t i = 0; i < flow.values.size(); ++i) { + if (i > 0) { + o << ", "; + } + o << flow.values[i]; + } + o << "})"; return o; } }; @@ -127,29 +156,54 @@ template class ExpressionRunner : public OverriddenVisitor { protected: + // Maximum depth before giving up. Index maxDepth; - Index depth = 0; + // Maximum iterations before giving up on a loop. + Index maxLoopIterations; + + Flow generateArguments(const ExpressionList& operands, + LiteralList& arguments) { + NOTE_ENTER_("generateArguments"); + arguments.reserve(operands.size()); + for (auto expression : operands) { + Flow flow = this->visit(expression); + if (flow.breaking()) { + return flow; + } + NOTE_EVAL1(flow.values); + arguments.push_back(flow.getSingleValue()); + } + return Flow(); + } + public: - ExpressionRunner(Index maxDepth) : maxDepth(maxDepth) {} + // Indicates no limit of maxDepth or maxLoopIterations. + static const Index NO_LIMIT = 0; + + ExpressionRunner(Index maxDepth = NO_LIMIT, + Index maxLoopIterations = NO_LIMIT) + : maxDepth(maxDepth), maxLoopIterations(maxLoopIterations) {} Flow visit(Expression* curr) { depth++; - if (depth > maxDepth) { + if (maxDepth != NO_LIMIT && depth > maxDepth) { trap("interpreter recursion limit"); } auto ret = OverriddenVisitor::visit(curr); - if (!ret.breaking() && - (curr->type.isConcrete() || ret.value.type.isConcrete())) { + if (!ret.breaking()) { + Type type = ret.getType(); + if (type.isConcrete() || curr->type.isConcrete()) { #if 1 // def WASM_INTERPRETER_DEBUG - if (!Type::isSubType(ret.value.type, curr->type)) { - std::cerr << "expected " << curr->type << ", seeing " << ret.value.type - << " from\n" - << curr << '\n'; - } + if (!Type::isSubType(type, curr->type)) { + std::cerr << "expected " << curr->type << ", seeing " << type + << " from\n" + << curr << '\n'; + } #endif - assert(Type::isSubType(ret.value.type, curr->type)); + assert(Type::isSubType(type, curr->type)); + } } depth--; return ret; @@ -195,11 +249,11 @@ if (flow.breaking()) { return flow; } - NOTE_EVAL1(flow.value); - if (flow.value.geti32()) { + NOTE_EVAL1(flow.values); + if (flow.getSingleValue().geti32()) { Flow flow = visit(curr->ifTrue); if (!flow.breaking() && !curr->ifFalse) { - flow.value = Literal(); // if_else returns a value, but if does not + flow = Flow(); // if_else returns a value, but if does not } return flow; } @@ -210,10 +264,15 @@ } Flow visitLoop(Loop* curr) { NOTE_ENTER("Loop"); + Index loopCount = 0; while (1) { Flow flow = visit(curr->body); if (flow.breaking()) { if (flow.breakTo == curr->name) { + if (maxLoopIterations != NO_LIMIT && + ++loopCount >= maxLoopIterations) { + return Flow(NONCONSTANT_FLOW); + } continue; // lol } } @@ -236,7 +295,7 @@ if (conditionFlow.breaking()) { return conditionFlow; } - condition = conditionFlow.value.getInteger() != 0; + condition = conditionFlow.getSingleValue().getInteger() != 0; if (!condition) { return flow; } @@ -247,26 +306,25 @@ Flow visitSwitch(Switch* curr) { NOTE_ENTER("Switch"); Flow flow; - Literal value; + Literals values; if (curr->value) { flow = visit(curr->value); if (flow.breaking()) { return flow; } - value = flow.value; - NOTE_EVAL1(value); + values = flow.values; } flow = visit(curr->condition); if (flow.breaking()) { return flow; } - int64_t index = flow.value.getInteger(); + int64_t index = flow.getSingleValue().getInteger(); Name target = curr->default_; if (index >= 0 && (size_t)index < curr->targets.size()) { target = curr->targets[(size_t)index]; } flow.breakTo = target; - flow.value = value; + flow.values = values; return flow; } @@ -285,7 +343,7 @@ if (flow.breaking()) { return flow; } - Literal value = flow.value; + Literal value = flow.getSingleValue(); NOTE_EVAL1(value); switch (curr->op) { case ClzInt32: @@ -396,42 +454,78 @@ return value.splatF64x2(); case NotVec128: return value.notV128(); + case AbsVecI8x16: + return value.absI8x16(); case NegVecI8x16: return value.negI8x16(); case AnyTrueVecI8x16: return value.anyTrueI8x16(); case AllTrueVecI8x16: return value.allTrueI8x16(); + case BitmaskVecI8x16: + return value.bitmaskI8x16(); + case PopcntVecI8x16: + return value.popcntI8x16(); + case AbsVecI16x8: + return value.absI16x8(); case NegVecI16x8: return value.negI16x8(); case AnyTrueVecI16x8: return value.anyTrueI16x8(); case AllTrueVecI16x8: return value.allTrueI16x8(); + case BitmaskVecI16x8: + return value.bitmaskI16x8(); + case AbsVecI32x4: + return value.absI32x4(); case NegVecI32x4: return value.negI32x4(); case AnyTrueVecI32x4: return value.anyTrueI32x4(); case AllTrueVecI32x4: return value.allTrueI32x4(); + case BitmaskVecI32x4: + return value.bitmaskI32x4(); case NegVecI64x2: return value.negI64x2(); - case AnyTrueVecI64x2: - return value.anyTrueI64x2(); - case AllTrueVecI64x2: - return value.allTrueI64x2(); + case BitmaskVecI64x2: + WASM_UNREACHABLE("unimp"); case AbsVecF32x4: return value.absF32x4(); case NegVecF32x4: return value.negF32x4(); case SqrtVecF32x4: return value.sqrtF32x4(); + case CeilVecF32x4: + return value.ceilF32x4(); + case FloorVecF32x4: + return value.floorF32x4(); + case TruncVecF32x4: + return value.truncF32x4(); + case NearestVecF32x4: + return value.nearestF32x4(); case AbsVecF64x2: return value.absF64x2(); case NegVecF64x2: return value.negF64x2(); case SqrtVecF64x2: return value.sqrtF64x2(); + case CeilVecF64x2: + return value.ceilF64x2(); + case FloorVecF64x2: + return value.floorF64x2(); + case TruncVecF64x2: + return value.truncF64x2(); + case NearestVecF64x2: + return value.nearestF64x2(); + case ExtAddPairwiseSVecI8x16ToI16x8: + WASM_UNREACHABLE("unimp"); + case ExtAddPairwiseUVecI8x16ToI16x8: + WASM_UNREACHABLE("unimp"); + case ExtAddPairwiseSVecI16x8ToI32x4: + WASM_UNREACHABLE("unimp"); + case ExtAddPairwiseUVecI16x8ToI32x4: + WASM_UNREACHABLE("unimp"); case TruncSatSVecF32x4ToVecI32x4: return value.truncSatToSI32x4(); case TruncSatUVecF32x4ToVecI32x4: @@ -464,6 +558,11 @@ return value.widenLowUToVecI32x4(); case WidenHighUVecI16x8ToVecI32x4: return value.widenHighUToVecI32x4(); + case WidenLowSVecI32x4ToVecI64x2: + case WidenHighSVecI32x4ToVecI64x2: + case WidenLowUVecI32x4ToVecI64x2: + case WidenHighUVecI32x4ToVecI64x2: + WASM_UNREACHABLE("unimp"); case InvalidUnary: WASM_UNREACHABLE("invalid unary op"); } @@ -475,12 +574,12 @@ if (flow.breaking()) { return flow; } - Literal left = flow.value; + Literal left = flow.getSingleValue(); flow = visit(curr->right); if (flow.breaking()) { return flow; } - Literal right = flow.value; + Literal right = flow.getSingleValue(); NOTE_EVAL2(left, right); assert(curr->left->type.isConcrete() ? left.type == curr->left->type : true); @@ -709,6 +808,8 @@ return left.geSI32x4(right); case GeUVecI32x4: return left.geUI32x4(right); + case EqVecI64x2: + return left.eqI64x2(right); case EqVecF32x4: return left.eqF32x4(right); case NeVecF32x4: @@ -791,6 +892,16 @@ return left.maxUI16x8(right); case AvgrUVecI16x8: return left.avgrUI16x8(right); + case Q15MulrSatSVecI16x8: + return left.q15MulrSatSI16x8(right); + case ExtMulLowSVecI16x8: + return left.extMulLowSI16x8(right); + case ExtMulHighSVecI16x8: + return left.extMulHighSI16x8(right); + case ExtMulLowUVecI16x8: + return left.extMulLowUI16x8(right); + case ExtMulHighUVecI16x8: + return left.extMulHighUI16x8(right); case AddVecI32x4: return left.addI32x4(right); case SubVecI32x4: @@ -807,10 +918,28 @@ return left.maxUI32x4(right); case DotSVecI16x8ToVecI32x4: return left.dotSI16x8toI32x4(right); + case ExtMulLowSVecI32x4: + return left.extMulLowSI32x4(right); + case ExtMulHighSVecI32x4: + return left.extMulHighSI32x4(right); + case ExtMulLowUVecI32x4: + return left.extMulLowUI32x4(right); + case ExtMulHighUVecI32x4: + return left.extMulHighUI32x4(right); case AddVecI64x2: return left.addI64x2(right); case SubVecI64x2: return left.subI64x2(right); + case MulVecI64x2: + return left.mulI64x2(right); + case ExtMulLowSVecI64x2: + return left.extMulLowSI64x2(right); + case ExtMulHighSVecI64x2: + return left.extMulHighSI64x2(right); + case ExtMulLowUVecI64x2: + return left.extMulLowUI64x2(right); + case ExtMulHighUVecI64x2: + return left.extMulHighUI64x2(right); case AddVecF32x4: return left.addF32x4(right); @@ -824,6 +953,10 @@ return left.minF32x4(right); case MaxVecF32x4: return left.maxF32x4(right); + case PMinVecF32x4: + return left.pminF32x4(right); + case PMaxVecF32x4: + return left.pmaxF32x4(right); case AddVecF64x2: return left.addF64x2(right); case SubVecF64x2: @@ -836,6 +969,10 @@ return left.minF64x2(right); case MaxVecF64x2: return left.maxF64x2(right); + case PMinVecF64x2: + return left.pminF64x2(right); + case PMaxVecF64x2: + return left.pmaxF64x2(right); case NarrowSVecI16x8ToVecI8x16: return left.narrowSToVecI8x16(right); @@ -860,7 +997,7 @@ if (flow.breaking()) { return flow; } - Literal vec = flow.value; + Literal vec = flow.getSingleValue(); switch (curr->op) { case ExtractLaneSVecI8x16: return vec.extractLaneSI8x16(curr->index); @@ -887,12 +1024,12 @@ if (flow.breaking()) { return flow; } - Literal vec = flow.value; + Literal vec = flow.getSingleValue(); flow = this->visit(curr->value); if (flow.breaking()) { return flow; } - Literal value = flow.value; + Literal value = flow.getSingleValue(); switch (curr->op) { case ReplaceLaneVecI8x16: return vec.replaceLaneI8x16(value, curr->index); @@ -915,12 +1052,12 @@ if (flow.breaking()) { return flow; } - Literal left = flow.value; + Literal left = flow.getSingleValue(); flow = this->visit(curr->right); if (flow.breaking()) { return flow; } - Literal right = flow.value; + Literal right = flow.getSingleValue(); return left.shuffleV8x16(right, curr->mask); } Flow visitSIMDTernary(SIMDTernary* curr) { @@ -929,22 +1066,22 @@ if (flow.breaking()) { return flow; } - Literal a = flow.value; + Literal a = flow.getSingleValue(); flow = this->visit(curr->b); if (flow.breaking()) { return flow; } - Literal b = flow.value; + Literal b = flow.getSingleValue(); flow = this->visit(curr->c); if (flow.breaking()) { return flow; } - Literal c = flow.value; + Literal c = flow.getSingleValue(); switch (curr->op) { case Bitselect: return c.bitselectV128(a, b); default: - // TODO: implement qfma/qfms + // TODO: implement qfma/qfms and signselect WASM_UNREACHABLE("not implemented"); } } @@ -954,12 +1091,12 @@ if (flow.breaking()) { return flow; } - Literal vec = flow.value; + Literal vec = flow.getSingleValue(); flow = this->visit(curr->shift); if (flow.breaking()) { return flow; } - Literal shift = flow.value; + Literal shift = flow.getSingleValue(); switch (curr->op) { case ShlVecI8x16: return vec.shlI8x16(shift); @@ -1002,8 +1139,8 @@ if (condition.breaking()) { return condition; } - NOTE_EVAL1(condition.value); - return condition.value.geti32() ? ifTrue : ifFalse; // ;-) + NOTE_EVAL1(condition.getSingleValue()); + return condition.getSingleValue().geti32() ? ifTrue : ifFalse; // ;-) } Flow visitDrop(Drop* curr) { NOTE_ENTER("Drop"); @@ -1021,7 +1158,7 @@ if (flow.breaking()) { return flow; } - NOTE_EVAL1(flow.value); + NOTE_EVAL1(flow.getSingleValue()); } flow.breakTo = RETURN_FLOW; return flow; @@ -1030,6 +1167,14 @@ NOTE_ENTER("Nop"); return Flow(); } + Flow visitPrefetch(Prefetch* curr) { + NOTE_ENTER("Prefetch"); + Flow flow = visit(curr->ptr); + if (flow.breaking()) { + return flow; + } + return Flow(); + } Flow visitUnreachable(Unreachable* curr) { NOTE_ENTER("Unreachable"); trap("unreachable"); @@ -1101,31 +1246,58 @@ NOTE_ENTER("AtomicFence"); return Flow(); } - - Flow visitCall(Call*) { WASM_UNREACHABLE("unimp"); } - Flow visitCallIndirect(CallIndirect*) { WASM_UNREACHABLE("unimp"); } - Flow visitLocalGet(LocalGet*) { WASM_UNREACHABLE("unimp"); } - Flow visitLocalSet(LocalSet*) { WASM_UNREACHABLE("unimp"); } - Flow visitGlobalSet(GlobalSet*) { WASM_UNREACHABLE("unimp"); } + Flow visitTupleMake(TupleMake* curr) { + NOTE_ENTER("tuple.make"); + LiteralList arguments; + Flow flow = generateArguments(curr->operands, arguments); + if (flow.breaking()) { + return flow; + } + for (auto arg : arguments) { + assert(arg.type.isConcrete()); + flow.values.push_back(arg); + } + return flow; + } + Flow visitTupleExtract(TupleExtract* curr) { + NOTE_ENTER("tuple.extract"); + Flow flow = visit(curr->tuple); + if (flow.breaking()) { + return flow; + } + assert(flow.values.size() > curr->index); + return Flow(flow.values[curr->index]); + } + Flow visitLocalGet(LocalGet* curr) { WASM_UNREACHABLE("unimp"); } + Flow visitLocalSet(LocalSet* curr) { WASM_UNREACHABLE("unimp"); } + Flow visitGlobalGet(GlobalGet* curr) { WASM_UNREACHABLE("unimp"); } + Flow visitGlobalSet(GlobalSet* curr) { WASM_UNREACHABLE("unimp"); } + Flow visitCall(Call* curr) { WASM_UNREACHABLE("unimp"); } + Flow visitCallIndirect(CallIndirect* curr) { WASM_UNREACHABLE("unimp"); } Flow visitLoad(Load* curr) { WASM_UNREACHABLE("unimp"); } Flow visitStore(Store* curr) { WASM_UNREACHABLE("unimp"); } - Flow visitHost(Host* curr) { WASM_UNREACHABLE("unimp"); } + Flow visitMemorySize(MemorySize* curr) { WASM_UNREACHABLE("unimp"); } + Flow visitMemoryGrow(MemoryGrow* curr) { WASM_UNREACHABLE("unimp"); } Flow visitMemoryInit(MemoryInit* curr) { WASM_UNREACHABLE("unimp"); } Flow visitDataDrop(DataDrop* curr) { WASM_UNREACHABLE("unimp"); } Flow visitMemoryCopy(MemoryCopy* curr) { WASM_UNREACHABLE("unimp"); } Flow visitMemoryFill(MemoryFill* curr) { WASM_UNREACHABLE("unimp"); } - Flow visitAtomicRMW(AtomicRMW*) { WASM_UNREACHABLE("unimp"); } - Flow visitAtomicCmpxchg(AtomicCmpxchg*) { WASM_UNREACHABLE("unimp"); } - Flow visitAtomicWait(AtomicWait*) { WASM_UNREACHABLE("unimp"); } - Flow visitAtomicNotify(AtomicNotify*) { WASM_UNREACHABLE("unimp"); } - Flow visitSIMDLoad(SIMDLoad*) { WASM_UNREACHABLE("unimp"); } - Flow visitSIMDLoadSplat(SIMDLoad*) { WASM_UNREACHABLE("unimp"); } - Flow visitSIMDLoadExtend(SIMDLoad*) { WASM_UNREACHABLE("unimp"); } - Flow visitPush(Push*) { WASM_UNREACHABLE("unimp"); } - Flow visitPop(Pop*) { WASM_UNREACHABLE("unimp"); } + Flow visitAtomicRMW(AtomicRMW* curr) { WASM_UNREACHABLE("unimp"); } + Flow visitAtomicCmpxchg(AtomicCmpxchg* curr) { WASM_UNREACHABLE("unimp"); } + Flow visitAtomicWait(AtomicWait* curr) { WASM_UNREACHABLE("unimp"); } + Flow visitAtomicNotify(AtomicNotify* curr) { WASM_UNREACHABLE("unimp"); } + Flow visitSIMDLoad(SIMDLoad* curr) { WASM_UNREACHABLE("unimp"); } + Flow visitSIMDLoadSplat(SIMDLoad* curr) { WASM_UNREACHABLE("unimp"); } + Flow visitSIMDLoadExtend(SIMDLoad* curr) { WASM_UNREACHABLE("unimp"); } + Flow visitSIMDLoadZero(SIMDLoad* curr) { WASM_UNREACHABLE("unimp"); } + Flow visitSIMDLoadStoreLane(SIMDLoadStoreLane* curr) { + WASM_UNREACHABLE("unimp"); + } + Flow visitPop(Pop* curr) { WASM_UNREACHABLE("unimp"); } + Flow visitCallRef(CallRef* curr) { WASM_UNREACHABLE("unimp"); } Flow visitRefNull(RefNull* curr) { NOTE_ENTER("RefNull"); - return Literal::makeNullref(); + return Literal::makeNull(curr->type); } Flow visitRefIsNull(RefIsNull* curr) { NOTE_ENTER("RefIsNull"); @@ -1133,33 +1305,644 @@ if (flow.breaking()) { return flow; } - Literal value = flow.value; + const auto& value = flow.getSingleValue(); NOTE_EVAL1(value); - return Literal(value.type == Type::nullref); + return Literal(value.isNull()); } Flow visitRefFunc(RefFunc* curr) { NOTE_ENTER("RefFunc"); NOTE_NAME(curr->func); - return Literal::makeFuncref(curr->func); + return Literal::makeFunc(curr->func, curr->type); + } + Flow visitRefEq(RefEq* curr) { + NOTE_ENTER("RefEq"); + Flow flow = visit(curr->left); + if (flow.breaking()) { + return flow; + } + auto left = flow.getSingleValue(); + flow = visit(curr->right); + if (flow.breaking()) { + return flow; + } + auto right = flow.getSingleValue(); + NOTE_EVAL2(left, right); + return Literal(int32_t(left == right)); + } + Flow visitTry(Try* curr) { WASM_UNREACHABLE("unimp"); } + Flow visitThrow(Throw* curr) { + NOTE_ENTER("Throw"); + LiteralList arguments; + Flow flow = generateArguments(curr->operands, arguments); + if (flow.breaking()) { + return flow; + } + NOTE_EVAL1(curr->event); + auto exn = std::make_unique(); + exn->event = curr->event; + for (auto item : arguments) { + exn->values.push_back(item); + } + throwException(Literal::makeExn(std::move(exn))); + WASM_UNREACHABLE("throw"); + } + Flow visitRethrow(Rethrow* curr) { + NOTE_ENTER("Rethrow"); + Flow flow = visit(curr->exnref); + if (flow.breaking()) { + return flow; + } + const auto& value = flow.getSingleValue(); + if (value.isNull()) { + trap("rethrow: argument is null"); + } + throwException(value); + WASM_UNREACHABLE("rethrow"); + } + Flow visitBrOnExn(BrOnExn* curr) { + NOTE_ENTER("BrOnExn"); + Flow flow = this->visit(curr->exnref); + if (flow.breaking()) { + return flow; + } + const auto& value = flow.getSingleValue(); + if (value.isNull()) { + trap("br_on_exn: argument is null"); + } + auto ex = value.getExceptionPackage(); + if (curr->event != ex.event) { // Not taken + return flow; + } + // Taken + flow.values = ex.values; + flow.breakTo = curr->name; + return flow; + } + Flow visitI31New(I31New* curr) { + NOTE_ENTER("I31New"); + Flow flow = visit(curr->value); + if (flow.breaking()) { + return flow; + } + const auto& value = flow.getSingleValue(); + NOTE_EVAL1(value); + return Literal::makeI31(value.geti32()); + } + Flow visitI31Get(I31Get* curr) { + NOTE_ENTER("I31Get"); + Flow flow = visit(curr->i31); + if (flow.breaking()) { + return flow; + } + const auto& value = flow.getSingleValue(); + NOTE_EVAL1(value); + return Literal(value.geti31(curr->signed_)); + } + + // Helper for ref.test, ref.cast, and br_on_cast, which share almost all their + // logic except for what they return. + struct Cast { + enum Outcome { + // We took a break before doing anything. + Break, + // The input was null. + Null, + // The cast succeeded. + Success, + // The cast failed. + Failure + } outcome; + + Flow breaking; + Literal originalRef; + Literal castRef; + }; + + template Cast doCast(T* curr) { + Cast cast; + Flow ref = this->visit(curr->ref); + if (ref.breaking()) { + cast.outcome = cast.Break; + cast.breaking = ref; + return cast; + } + Flow rtt = this->visit(curr->rtt); + if (rtt.breaking()) { + cast.outcome = cast.Break; + cast.breaking = rtt; + return cast; + } + cast.originalRef = ref.getSingleValue(); + auto gcData = cast.originalRef.getGCData(); + if (!gcData) { + cast.outcome = cast.Null; + return cast; + } + auto refRtt = gcData->rtt; + auto intendedRtt = rtt.getSingleValue(); + if (!refRtt.isSubRtt(intendedRtt)) { + cast.outcome = cast.Failure; + } else { + cast.outcome = cast.Success; + cast.castRef = + Literal(gcData, Type(intendedRtt.type.getHeapType(), Nullable)); + } + return cast; + } + + Flow visitRefTest(RefTest* curr) { + NOTE_ENTER("RefTest"); + auto cast = doCast(curr); + if (cast.outcome == cast.Break) { + return cast.breaking; + } + return Literal(int32_t(cast.outcome == cast.Success)); + } + Flow visitRefCast(RefCast* curr) { + NOTE_ENTER("RefCast"); + auto cast = doCast(curr); + if (cast.outcome == cast.Break) { + return cast.breaking; + } + if (cast.outcome == cast.Null) { + return Literal::makeNull(curr->type); + } + if (cast.outcome == cast.Failure) { + trap("cast error"); + } + assert(cast.outcome == cast.Success); + return cast.castRef; + } + Flow visitBrOnCast(BrOnCast* curr) { + NOTE_ENTER("BrOnCast"); + auto cast = doCast(curr); + if (cast.outcome == cast.Break) { + return cast.breaking; + } + if (cast.outcome == cast.Null || cast.outcome == cast.Failure) { + return cast.originalRef; + } + assert(cast.outcome == cast.Success); + return Flow(curr->name, cast.castRef); + } + Flow visitRttCanon(RttCanon* curr) { return Literal(curr->type); } + Flow visitRttSub(RttSub* curr) { + Flow parent = this->visit(curr->parent); + if (parent.breaking()) { + return parent; + } + auto parentValue = parent.getSingleValue(); + auto newSupers = std::make_unique(parentValue.getRttSupers()); + newSupers->push_back(parentValue.type); + return Literal(std::move(newSupers), curr->type); + } + Flow visitStructNew(StructNew* curr) { + NOTE_ENTER("StructNew"); + auto rtt = this->visit(curr->rtt); + if (rtt.breaking()) { + return rtt; + } + const auto& fields = curr->rtt->type.getHeapType().getStruct().fields; + Literals data(fields.size()); + for (Index i = 0; i < fields.size(); i++) { + if (curr->isWithDefault()) { + data[i] = Literal::makeZero(fields[i].type); + } else { + auto value = this->visit(curr->operands[i]); + if (value.breaking()) { + return value; + } + data[i] = value.getSingleValue(); + } + } + return Flow(Literal(std::make_shared(rtt.getSingleValue(), data), + curr->type)); + } + Flow visitStructGet(StructGet* curr) { + NOTE_ENTER("StructGet"); + Flow ref = this->visit(curr->ref); + if (ref.breaking()) { + return ref; + } + auto data = ref.getSingleValue().getGCData(); + if (!data) { + trap("null ref"); + } + auto field = curr->ref->type.getHeapType().getStruct().fields[curr->index]; + return extendForPacking(data->values[curr->index], field, curr->signed_); + } + Flow visitStructSet(StructSet* curr) { + NOTE_ENTER("StructSet"); + Flow ref = this->visit(curr->ref); + if (ref.breaking()) { + return ref; + } + Flow value = this->visit(curr->value); + if (value.breaking()) { + return value; + } + auto data = ref.getSingleValue().getGCData(); + if (!data) { + trap("null ref"); + } + auto field = curr->ref->type.getHeapType().getStruct().fields[curr->index]; + data->values[curr->index] = + truncateForPacking(value.getSingleValue(), field); + return Flow(); + } + Flow visitArrayNew(ArrayNew* curr) { + NOTE_ENTER("ArrayNew"); + auto rtt = this->visit(curr->rtt); + if (rtt.breaking()) { + return rtt; + } + auto size = this->visit(curr->size); + if (size.breaking()) { + return size; + } + const auto& element = curr->rtt->type.getHeapType().getArray().element; + Index num = size.getSingleValue().geti32(); + Literals data(num); + if (curr->isWithDefault()) { + for (Index i = 0; i < num; i++) { + data[i] = Literal::makeZero(element.type); + } + } else { + auto init = this->visit(curr->init); + if (init.breaking()) { + return init; + } + auto value = init.getSingleValue(); + for (Index i = 0; i < num; i++) { + data[i] = value; + } + } + return Flow(Literal(std::make_shared(rtt.getSingleValue(), data), + curr->type)); + } + Flow visitArrayGet(ArrayGet* curr) { + NOTE_ENTER("ArrayGet"); + Flow ref = this->visit(curr->ref); + if (ref.breaking()) { + return ref; + } + Flow index = this->visit(curr->index); + if (index.breaking()) { + return index; + } + auto data = ref.getSingleValue().getGCData(); + if (!data) { + trap("null ref"); + } + Index i = index.getSingleValue().geti32(); + if (i >= data->values.size()) { + trap("array oob"); + } + auto field = curr->ref->type.getHeapType().getArray().element; + return extendForPacking(data->values[i], field, curr->signed_); + } + Flow visitArraySet(ArraySet* curr) { + NOTE_ENTER("ArraySet"); + Flow ref = this->visit(curr->ref); + if (ref.breaking()) { + return ref; + } + Flow index = this->visit(curr->index); + if (index.breaking()) { + return index; + } + Flow value = this->visit(curr->value); + if (value.breaking()) { + return value; + } + auto data = ref.getSingleValue().getGCData(); + if (!data) { + trap("null ref"); + } + Index i = index.getSingleValue().geti32(); + if (i >= data->values.size()) { + trap("array oob"); + } + auto field = curr->ref->type.getHeapType().getArray().element; + data->values[i] = truncateForPacking(value.getSingleValue(), field); + return Flow(); + } + Flow visitArrayLen(ArrayLen* curr) { + NOTE_ENTER("ArrayLen"); + Flow ref = this->visit(curr->ref); + if (ref.breaking()) { + return ref; + } + auto data = ref.getSingleValue().getGCData(); + if (!data) { + trap("null ref"); + } + return Literal(int32_t(data->values.size())); } - // TODO Implement EH instructions - Flow visitTry(Try*) { WASM_UNREACHABLE("unimp"); } - Flow visitThrow(Throw*) { WASM_UNREACHABLE("unimp"); } - Flow visitRethrow(Rethrow*) { WASM_UNREACHABLE("unimp"); } - Flow visitBrOnExn(BrOnExn*) { WASM_UNREACHABLE("unimp"); } virtual void trap(const char* why) { WASM_UNREACHABLE("unimp"); } + + virtual void throwException(Literal exn) { WASM_UNREACHABLE("unimp"); } + +private: + // Truncate the value if we need to. The storage is just a list of Literals, + // so we can't just write the value like we would to a C struct field and + // expect it to truncate for us. Instead, we truncate so the stored value is + // proper for the type. + Literal truncateForPacking(Literal value, const Field& field) { + if (field.type == Type::i32) { + int32_t c = value.geti32(); + if (field.packedType == Field::i8) { + value = Literal(c & 0xff); + } else if (field.packedType == Field::i16) { + value = Literal(c & 0xffff); + } + } + return value; + } + + Literal extendForPacking(Literal value, const Field& field, bool signed_) { + if (field.type == Type::i32) { + int32_t c = value.geti32(); + if (field.packedType == Field::i8) { + // The stored value should already be truncated. + assert(c == (c & 0xff)); + if (signed_) { + value = Literal((c << 24) >> 24); + } + } else if (field.packedType == Field::i16) { + assert(c == (c & 0xffff)); + if (signed_) { + value = Literal((c << 16) >> 16); + } + } + } + return value; + } }; -// Execute an constant expression in a global init or memory offset. +// Execute a suspected constant expression (precompute and C-API). +template +class ConstantExpressionRunner : public ExpressionRunner { +public: + enum FlagValues { + // By default, just evaluate the expression, i.e. all we want to know is + // whether it computes down to a concrete value, where it is not necessary + // to preserve side effects like those of a `local.tee`. + DEFAULT = 0, + // Be very careful to preserve any side effects. For example, if we are + // intending to replace the expression with a constant afterwards, even if + // we can technically evaluate down to a constant, we still cannot replace + // the expression if it also sets a local, which must be preserved in this + // scenario so subsequent code keeps functioning. + PRESERVE_SIDEEFFECTS = 1 << 0, + // Traverse through function calls, attempting to compute their concrete + // value. Must not be used in function-parallel scenarios, where the called + // function might be concurrently modified, leading to undefined behavior. + TRAVERSE_CALLS = 1 << 1 + }; + + // Flags indicating special requirements, for example whether we are just + // evaluating (default), also going to replace the expression afterwards or + // executing in a function-parallel scenario. See FlagValues. + typedef uint32_t Flags; + + // Indicates no limit of maxDepth or maxLoopIterations. + static const Index NO_LIMIT = 0; + +protected: + // Optional module context to search for globals and called functions. NULL if + // we are not interested in any context. + Module* module = nullptr; + + // Flags indicating special requirements. See FlagValues. + Flags flags = FlagValues::DEFAULT; + + // Map remembering concrete local values set in the context of this flow. + std::unordered_map localValues; + // Map remembering concrete global values set in the context of this flow. + std::unordered_map globalValues; + +public: + struct NonconstantException { + }; // TODO: use a flow with a special name, as this is likely very slow + + ConstantExpressionRunner(Module* module, + Flags flags, + Index maxDepth, + Index maxLoopIterations) + : ExpressionRunner(maxDepth, maxLoopIterations), module(module), + flags(flags) {} + + // Gets the module this runner is operating on. + Module* getModule() { return module; } + + // Sets a known local value to use. + void setLocalValue(Index index, Literals& values) { + assert(values.isConcrete()); + localValues[index] = values; + } + + // Sets a known global value to use. + void setGlobalValue(Name name, Literals& values) { + assert(values.isConcrete()); + globalValues[name] = values; + } + + Flow visitLocalGet(LocalGet* curr) { + NOTE_ENTER("LocalGet"); + NOTE_EVAL1(curr->index); + // Check if a constant value has been set in the context of this runner. + auto iter = localValues.find(curr->index); + if (iter != localValues.end()) { + return Flow(iter->second); + } + return Flow(NONCONSTANT_FLOW); + } + Flow visitLocalSet(LocalSet* curr) { + NOTE_ENTER("LocalSet"); + NOTE_EVAL1(curr->index); + if (!(flags & FlagValues::PRESERVE_SIDEEFFECTS)) { + // If we are evaluating and not replacing the expression, remember the + // constant value set, if any, and see if there is a value flowing through + // a tee. + auto setFlow = ExpressionRunner::visit(curr->value); + if (!setFlow.breaking()) { + setLocalValue(curr->index, setFlow.values); + if (curr->type.isConcrete()) { + assert(curr->isTee()); + return setFlow; + } + return Flow(); + } + } + return Flow(NONCONSTANT_FLOW); + } + Flow visitGlobalGet(GlobalGet* curr) { + NOTE_ENTER("GlobalGet"); + NOTE_NAME(curr->name); + if (module != nullptr) { + auto* global = module->getGlobal(curr->name); + // Check if the global has an immutable value anyway + if (!global->imported() && !global->mutable_) { + return ExpressionRunner::visit(global->init); + } + } + // Check if a constant value has been set in the context of this runner. + auto iter = globalValues.find(curr->name); + if (iter != globalValues.end()) { + return Flow(iter->second); + } + return Flow(NONCONSTANT_FLOW); + } + Flow visitGlobalSet(GlobalSet* curr) { + NOTE_ENTER("GlobalSet"); + NOTE_NAME(curr->name); + if (!(flags & FlagValues::PRESERVE_SIDEEFFECTS) && module != nullptr) { + // If we are evaluating and not replacing the expression, remember the + // constant value set, if any, for subsequent gets. + auto* global = module->getGlobal(curr->name); + assert(global->mutable_); + auto setFlow = ExpressionRunner::visit(curr->value); + if (!setFlow.breaking()) { + setGlobalValue(curr->name, setFlow.values); + return Flow(); + } + } + return Flow(NONCONSTANT_FLOW); + } + Flow visitCall(Call* curr) { + NOTE_ENTER("Call"); + NOTE_NAME(curr->target); + // Traverse into functions using the same mode, which we can also do + // when replacing as long as the function does not have any side effects. + // Might yield something useful for simple functions like `clamp`, sometimes + // even if arguments are only partially constant or not constant at all. + if ((flags & FlagValues::TRAVERSE_CALLS) != 0 && module != nullptr) { + auto* func = module->getFunction(curr->target); + if (!func->imported()) { + if (func->sig.results.isConcrete()) { + auto numOperands = curr->operands.size(); + assert(numOperands == func->getNumParams()); + auto prevLocalValues = localValues; + localValues.clear(); + for (Index i = 0; i < numOperands; ++i) { + auto argFlow = ExpressionRunner::visit(curr->operands[i]); + if (!argFlow.breaking()) { + assert(argFlow.values.isConcrete()); + localValues[i] = argFlow.values; + } + } + auto retFlow = ExpressionRunner::visit(func->body); + localValues = prevLocalValues; + if (retFlow.breakTo == RETURN_FLOW) { + return Flow(retFlow.values); + } else if (!retFlow.breaking()) { + return retFlow; + } + } + } + } + return Flow(NONCONSTANT_FLOW); + } + Flow visitCallIndirect(CallIndirect* curr) { + NOTE_ENTER("CallIndirect"); + return Flow(NONCONSTANT_FLOW); + } + Flow visitCallRef(CallRef* curr) { + NOTE_ENTER("CallRef"); + return Flow(NONCONSTANT_FLOW); + } + Flow visitLoad(Load* curr) { + NOTE_ENTER("Load"); + return Flow(NONCONSTANT_FLOW); + } + Flow visitStore(Store* curr) { + NOTE_ENTER("Store"); + return Flow(NONCONSTANT_FLOW); + } + Flow visitMemorySize(MemorySize* curr) { + NOTE_ENTER("MemorySize"); + return Flow(NONCONSTANT_FLOW); + } + Flow visitMemoryGrow(MemoryGrow* curr) { + NOTE_ENTER("MemoryGrow"); + return Flow(NONCONSTANT_FLOW); + } + Flow visitMemoryInit(MemoryInit* curr) { + NOTE_ENTER("MemoryInit"); + return Flow(NONCONSTANT_FLOW); + } + Flow visitDataDrop(DataDrop* curr) { + NOTE_ENTER("DataDrop"); + return Flow(NONCONSTANT_FLOW); + } + Flow visitMemoryCopy(MemoryCopy* curr) { + NOTE_ENTER("MemoryCopy"); + return Flow(NONCONSTANT_FLOW); + } + Flow visitMemoryFill(MemoryFill* curr) { + NOTE_ENTER("MemoryFill"); + return Flow(NONCONSTANT_FLOW); + } + Flow visitAtomicRMW(AtomicRMW* curr) { + NOTE_ENTER("AtomicRMW"); + return Flow(NONCONSTANT_FLOW); + } + Flow visitAtomicCmpxchg(AtomicCmpxchg* curr) { + NOTE_ENTER("AtomicCmpxchg"); + return Flow(NONCONSTANT_FLOW); + } + Flow visitAtomicWait(AtomicWait* curr) { + NOTE_ENTER("AtomicWait"); + return Flow(NONCONSTANT_FLOW); + } + Flow visitAtomicNotify(AtomicNotify* curr) { + NOTE_ENTER("AtomicNotify"); + return Flow(NONCONSTANT_FLOW); + } + Flow visitSIMDLoad(SIMDLoad* curr) { + NOTE_ENTER("SIMDLoad"); + return Flow(NONCONSTANT_FLOW); + } + Flow visitSIMDLoadSplat(SIMDLoad* curr) { + NOTE_ENTER("SIMDLoadSplat"); + return Flow(NONCONSTANT_FLOW); + } + Flow visitSIMDLoadExtend(SIMDLoad* curr) { + NOTE_ENTER("SIMDLoadExtend"); + return Flow(NONCONSTANT_FLOW); + } + Flow visitSIMDLoadStoreLane(SIMDLoadStoreLane* curr) { + NOTE_ENTER("SIMDLoadStoreLane"); + return Flow(NONCONSTANT_FLOW); + } + Flow visitPop(Pop* curr) { + NOTE_ENTER("Pop"); + return Flow(NONCONSTANT_FLOW); + } + Flow visitTry(Try* curr) { + NOTE_ENTER("Try"); + return Flow(NONCONSTANT_FLOW); + } + + void trap(const char* why) override { throw NonconstantException(); } + + virtual void throwException(Literal exn) override { + throw NonconstantException(); + } +}; + +// Execute an initializer expression of a global, data or element segment. +// see: https://webassembly.org/docs/modules/#initializer-expression template -class ConstantExpressionRunner - : public ExpressionRunner> { +class InitializerExpressionRunner + : public ExpressionRunner> { GlobalManager& globals; public: - ConstantExpressionRunner(GlobalManager& globals, Index maxDepth) - : ExpressionRunner>(maxDepth), + InitializerExpressionRunner(GlobalManager& globals, Index maxDepth) + : ExpressionRunner>(maxDepth), globals(globals) {} Flow visitGlobalGet(GlobalGet* curr) { return Flow(globals[curr->name]); } @@ -1186,19 +1969,20 @@ struct ExternalInterface { virtual void init(Module& wasm, SubType& instance) {} virtual void importGlobals(GlobalManager& globals, Module& wasm) = 0; - virtual Literal callImport(Function* import, LiteralList& arguments) = 0; - virtual Literal callTable(Index index, - Signature sig, - LiteralList& arguments, - Type result, - SubType& instance) = 0; - virtual void growMemory(Address oldSize, Address newSize) = 0; + virtual Literals callImport(Function* import, LiteralList& arguments) = 0; + virtual Literals callTable(Index index, + Signature sig, + LiteralList& arguments, + Type result, + SubType& instance) = 0; + virtual bool growMemory(Address oldSize, Address newSize) = 0; virtual void trap(const char* why) = 0; + virtual void throwException(Literal exnref) = 0; // the default impls for load and store switch on the sizes. you can either // customize load/store, or the sub-functions which they call virtual Literal load(Load* load, Address addr) { - switch (load->type.getSingle()) { + switch (load->type.getBasic()) { case Type::i32: { switch (load->bytes) { case 1: @@ -1239,9 +2023,11 @@ case Type::v128: return Literal(load128(addr).data()); case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: case Type::unreachable: WASM_UNREACHABLE("unexpected type"); @@ -1249,7 +2035,7 @@ WASM_UNREACHABLE("invalid type"); } virtual void store(Store* store, Address addr, Literal value) { - switch (store->valueType.getSingle()) { + switch (store->valueType.getBasic()) { case Type::i32: { switch (store->bytes) { case 1: @@ -1296,9 +2082,11 @@ store128(addr, value.getv128()); break; case Type::funcref: - case Type::anyref: - case Type::nullref: + case Type::externref: case Type::exnref: + case Type::anyref: + case Type::eqref: + case Type::i31ref: case Type::none: case Type::unreachable: WASM_UNREACHABLE("unexpected type"); @@ -1357,9 +2145,9 @@ // generate internal (non-imported) globals ModuleUtils::iterDefinedGlobals(wasm, [&](Global* global) { globals[global->name] = - ConstantExpressionRunner(globals, maxDepth) + InitializerExpressionRunner(globals, maxDepth) .visit(global->init) - .value; + .values; }); // initialize the rest of the external interface @@ -1376,7 +2164,7 @@ } // call an exported function - Literal callExport(Name name, const LiteralList& arguments) { + Literals callExport(Name name, const LiteralList& arguments) { Export* export_ = wasm.getExportOrNull(name); if (!export_) { externalInterface->trap("callExport not found"); @@ -1384,10 +2172,10 @@ return callFunction(export_->value, arguments); } - Literal callExport(Name name) { return callExport(name, LiteralList()); } + Literals callExport(Name name) { return callExport(name, LiteralList()); } // get an exported global - Literal getExport(Name name) { + Literals getExport(Name name) { Export* export_ = wasm.getExportOrNull(name); if (!export_) { externalInterface->trap("getExport external not found"); @@ -1422,9 +2210,10 @@ void initializeTableContents() { for (auto& segment : wasm.table.segments) { Address offset = - (uint32_t)ConstantExpressionRunner(globals, maxDepth) + (uint32_t)InitializerExpressionRunner(globals, maxDepth) .visit(segment.offset) - .value.geti32(); + .getSingleValue() + .geti32(); if (offset + segment.data.size() > wasm.table.initial) { externalInterface->trap("invalid offset when initializing table"); } @@ -1473,7 +2262,7 @@ class FunctionScope { public: - std::vector locals; + std::vector locals; Function* function; FunctionScope(Function* function, const LiteralList& arguments) @@ -1485,20 +2274,18 @@ WASM_UNREACHABLE("invalid param count"); } locals.resize(function->getNumLocals()); - const std::vector& params = function->sig.params.expand(); for (size_t i = 0; i < function->getNumLocals(); i++) { if (i < arguments.size()) { - assert(i < params.size()); - if (!Type::isSubType(arguments[i].type, params[i])) { + if (!Type::isSubType(arguments[i].type, function->sig.params[i])) { std::cerr << "Function `" << function->name << "` expects type " - << params[i] << " for parameter " << i << ", got " - << arguments[i].type << "." << std::endl; + << function->sig.params[i] << " for parameter " << i + << ", got " << arguments[i].type << "." << std::endl; WASM_UNREACHABLE("invalid param count"); } - locals[i] = arguments[i]; + locals[i] = {arguments[i]}; } else { assert(function->isVar(i)); - locals[i] = Literal::makeZero(function->getLocalType(i)); + locals[i] = Literal::makeZeros(function->getLocalType(i)); } } } @@ -1518,54 +2305,34 @@ : ExpressionRunner(maxDepth), instance(instance), scope(scope) {} - Flow generateArguments(const ExpressionList& operands, - LiteralList& arguments) { - NOTE_ENTER_("generateArguments"); - arguments.reserve(operands.size()); - for (auto expression : operands) { - Flow flow = this->visit(expression); - if (flow.breaking()) { - return flow; - } - NOTE_EVAL1(flow.value); - arguments.push_back(flow.value); - } - return Flow(); - } - Flow visitCall(Call* curr) { NOTE_ENTER("Call"); NOTE_NAME(curr->target); LiteralList arguments; - Flow flow = generateArguments(curr->operands, arguments); + Flow flow = this->generateArguments(curr->operands, arguments); if (flow.breaking()) { return flow; } auto* func = instance.wasm.getFunction(curr->target); Flow ret; if (func->imported()) { - ret = instance.externalInterface->callImport(func, arguments); + ret.values = instance.externalInterface->callImport(func, arguments); } else { - ret = instance.callFunctionInternal(curr->target, arguments); + ret.values = instance.callFunctionInternal(curr->target, arguments); } #ifdef WASM_INTERPRETER_DEBUG std::cout << "(returned to " << scope.function->name << ")\n"; #endif // TODO: make this a proper tail call (return first) if (curr->isReturn) { - Const c; - c.value = ret.value; - c.finalize(); - Return return_; - return_.value = &c; - return this->visit(&return_); + ret.breakTo = RETURN_FLOW; } return ret; } Flow visitCallIndirect(CallIndirect* curr) { NOTE_ENTER("CallIndirect"); LiteralList arguments; - Flow flow = generateArguments(curr->operands, arguments); + Flow flow = this->generateArguments(curr->operands, arguments); if (flow.breaking()) { return flow; } @@ -1573,18 +2340,44 @@ if (target.breaking()) { return target; } - Index index = target.value.geti32(); + Index index = target.getSingleValue().geti32(); Type type = curr->isReturn ? scope.function->sig.results : curr->type; Flow ret = instance.externalInterface->callTable( index, curr->sig, arguments, type, *instance.self()); // TODO: make this a proper tail call (return first) if (curr->isReturn) { - Const c; - c.value = ret.value; - c.finalize(); - Return return_; - return_.value = &c; - return this->visit(&return_); + ret.breakTo = RETURN_FLOW; + } + return ret; + } + Flow visitCallRef(CallRef* curr) { + NOTE_ENTER("CallRef"); + LiteralList arguments; + Flow flow = this->generateArguments(curr->operands, arguments); + if (flow.breaking()) { + return flow; + } + Flow target = this->visit(curr->target); + if (target.breaking()) { + return target; + } + if (target.getSingleValue().isNull()) { + trap("null target in call_ref"); + } + Name funcName = target.getSingleValue().getFunc(); + auto* func = instance.wasm.getFunction(funcName); + Flow ret; + if (func->imported()) { + ret.values = instance.externalInterface->callImport(func, arguments); + } else { + ret.values = instance.callFunctionInternal(funcName, arguments); + } +#ifdef WASM_INTERPRETER_DEBUG + std::cout << "(returned to " << scope.function->name << ")\n"; +#endif + // TODO: make this a proper tail call (return first) + if (curr->isReturn) { + ret.breakTo = RETURN_FLOW; } return ret; } @@ -1604,10 +2397,10 @@ return flow; } NOTE_EVAL1(index); - NOTE_EVAL1(flow.value); - assert(curr->isTee() ? Type::isSubType(flow.value.type, curr->type) + NOTE_EVAL1(flow.getSingleValue()); + assert(curr->isTee() ? Type::isSubType(flow.getType(), curr->type) : true); - scope.locals[index] = flow.value; + scope.locals[index] = flow.values; return curr->isTee() ? flow : Flow(); } @@ -1627,8 +2420,8 @@ return flow; } NOTE_EVAL1(name); - NOTE_EVAL1(flow.value); - instance.globals[name] = flow.value; + NOTE_EVAL1(flow.getSingleValue()); + instance.globals[name] = flow.values; return Flow(); } @@ -1639,7 +2432,10 @@ return flow; } NOTE_EVAL1(flow); - auto addr = instance.getFinalAddress(curr, flow.value); + auto addr = instance.getFinalAddress(curr, flow.getSingleValue()); + if (curr->isAtomic) { + instance.checkAtomicAddress(addr, curr->bytes); + } auto ret = instance.externalInterface->load(curr, addr); NOTE_EVAL1(addr); NOTE_EVAL1(ret); @@ -1655,10 +2451,13 @@ if (value.breaking()) { return value; } - auto addr = instance.getFinalAddress(curr, ptr.value); + auto addr = instance.getFinalAddress(curr, ptr.getSingleValue()); + if (curr->isAtomic) { + instance.checkAtomicAddress(addr, curr->bytes); + } NOTE_EVAL1(addr); NOTE_EVAL1(value); - instance.externalInterface->store(curr, addr, value.value); + instance.externalInterface->store(curr, addr, value.getSingleValue()); return Flow(); } @@ -1673,30 +2472,29 @@ return value; } NOTE_EVAL1(ptr); - auto addr = instance.getFinalAddress(curr, ptr.value); + auto addr = instance.getFinalAddress(curr, ptr.getSingleValue()); NOTE_EVAL1(addr); NOTE_EVAL1(value); auto loaded = instance.doAtomicLoad(addr, curr->bytes, curr->type); NOTE_EVAL1(loaded); - auto computed = value.value; + auto computed = value.getSingleValue(); switch (curr->op) { - case Add: - computed = computed.add(value.value); + case RMWAdd: + computed = loaded.add(computed); break; - case Sub: - computed = computed.sub(value.value); + case RMWSub: + computed = loaded.sub(computed); break; - case And: - computed = computed.and_(value.value); + case RMWAnd: + computed = loaded.and_(computed); break; - case Or: - computed = computed.or_(value.value); + case RMWOr: + computed = loaded.or_(computed); break; - case Xor: - computed = computed.xor_(value.value); + case RMWXor: + computed = loaded.xor_(computed); break; - case Xchg: - computed = value.value; + case RMWXchg: break; } instance.doAtomicStore(addr, curr->bytes, computed); @@ -1717,14 +2515,16 @@ if (replacement.breaking()) { return replacement; } - auto addr = instance.getFinalAddress(curr, ptr.value); + auto addr = instance.getFinalAddress(curr, ptr.getSingleValue()); + expected = + Flow(wrapToSmallerSize(expected.getSingleValue(), curr->bytes)); NOTE_EVAL1(addr); NOTE_EVAL1(expected); NOTE_EVAL1(replacement); auto loaded = instance.doAtomicLoad(addr, curr->bytes, curr->type); NOTE_EVAL1(loaded); - if (loaded == expected.value) { - instance.doAtomicStore(addr, curr->bytes, replacement.value); + if (loaded == expected.getSingleValue()) { + instance.doAtomicStore(addr, curr->bytes, replacement.getSingleValue()); } return loaded; } @@ -1746,10 +2546,10 @@ return timeout; } auto bytes = curr->expectedType.getByteSize(); - auto addr = instance.getFinalAddress(ptr.value, bytes); + auto addr = instance.getFinalAddress(curr, ptr.getSingleValue(), bytes); auto loaded = instance.doAtomicLoad(addr, bytes, curr->expectedType); NOTE_EVAL1(loaded); - if (loaded != expected.value) { + if (loaded != expected.getSingleValue()) { return Literal(int32_t(1)); // not equal } // TODO: add threads support! @@ -1768,7 +2568,9 @@ if (count.breaking()) { return count; } - // TODO: add threads support! + auto addr = instance.getFinalAddress(curr, ptr.getSingleValue(), 4); + // Just check TODO actual threads support + instance.checkAtomicAddress(addr, 4); return Literal(int32_t(0)); // none woken up } Flow visitSIMDLoad(SIMDLoad* curr) { @@ -1786,6 +2588,9 @@ case LoadExtSVec32x2ToVecI64x2: case LoadExtUVec32x2ToVecI64x2: return visitSIMDLoadExtend(curr); + case Load32Zero: + case Load64Zero: + return visitSIMDLoadZero(curr); } WASM_UNREACHABLE("invalid op"); } @@ -1821,7 +2626,7 @@ if (flow.breaking()) { return flow; } - return (flow.value.*splat)(); + return (flow.getSingleValue().*splat)(); } Flow visitSIMDLoadExtend(SIMDLoad* curr) { Flow flow = this->visit(curr->ptr); @@ -1829,7 +2634,7 @@ return flow; } NOTE_EVAL1(flow); - Address src(uint32_t(flow.value.geti32())); + Address src(uint32_t(flow.getSingleValue().geti32())); auto loadLane = [&](Address addr) { switch (curr->op) { case LoadExtSVec8x8ToVecI16x8: @@ -1852,7 +2657,7 @@ auto fillLanes = [&](auto lanes, size_t laneBytes) { for (auto& lane : lanes) { lane = loadLane( - instance.getFinalAddress(Literal(uint32_t(src)), laneBytes)); + instance.getFinalAddress(curr, Literal(uint32_t(src)), laneBytes)); src = Address(uint32_t(src) + laneBytes); } return Literal(lanes); @@ -1878,37 +2683,129 @@ } WASM_UNREACHABLE("invalid op"); } - Flow visitHost(Host* curr) { - NOTE_ENTER("Host"); + Flow visitSIMDLoadZero(SIMDLoad* curr) { + Flow flow = this->visit(curr->ptr); + if (flow.breaking()) { + return flow; + } + NOTE_EVAL1(flow); + Address src = instance.getFinalAddress( + curr, flow.getSingleValue(), curr->getMemBytes()); + auto zero = + Literal::makeZero(curr->op == Load32Zero ? Type::i32 : Type::i64); + if (curr->op == Load32Zero) { + auto val = Literal(instance.externalInterface->load32u(src)); + return Literal(std::array{{val, zero, zero, zero}}); + } else { + auto val = Literal(instance.externalInterface->load64u(src)); + return Literal(std::array{{val, zero}}); + } + } + Flow visitSIMDLoadStoreLane(SIMDLoadStoreLane* curr) { + NOTE_ENTER("SIMDLoadStoreLane"); + Flow flow = this->visit(curr->ptr); + if (flow.breaking()) { + return flow; + } + NOTE_EVAL1(flow); + Address addr = instance.getFinalAddress( + curr, flow.getSingleValue(), curr->getMemBytes()); + flow = this->visit(curr->vec); + if (flow.breaking()) { + return flow; + } + Literal vec = flow.getSingleValue(); switch (curr->op) { - case MemorySize: - return Literal(int32_t(instance.memorySize)); - case MemoryGrow: { - auto fail = Literal(int32_t(-1)); - Flow flow = this->visit(curr->operands[0]); - if (flow.breaking()) { - return flow; + case LoadLaneVec8x16: + case StoreLaneVec8x16: { + std::array lanes = vec.getLanesUI8x16(); + if (curr->isLoad()) { + lanes[curr->index] = + Literal(instance.externalInterface->load8u(addr)); + return Literal(lanes); + } else { + instance.externalInterface->store8(addr, + lanes[curr->index].geti32()); + return {}; } - int32_t ret = instance.memorySize; - uint32_t delta = flow.value.geti32(); - if (delta > uint32_t(-1) / Memory::kPageSize) { - return fail; + } + case LoadLaneVec16x8: + case StoreLaneVec16x8: { + std::array lanes = vec.getLanesUI16x8(); + if (curr->isLoad()) { + lanes[curr->index] = + Literal(instance.externalInterface->load16u(addr)); + return Literal(lanes); + } else { + instance.externalInterface->store16(addr, + lanes[curr->index].geti32()); + return {}; } - if (instance.memorySize >= uint32_t(-1) - delta) { - return fail; + } + case LoadLaneVec32x4: + case StoreLaneVec32x4: { + std::array lanes = vec.getLanesI32x4(); + if (curr->isLoad()) { + lanes[curr->index] = + Literal(instance.externalInterface->load32u(addr)); + return Literal(lanes); + } else { + instance.externalInterface->store32(addr, + lanes[curr->index].geti32()); + return {}; } - uint32_t newSize = instance.memorySize + delta; - if (newSize > instance.wasm.memory.max) { - return fail; + } + case StoreLaneVec64x2: + case LoadLaneVec64x2: { + std::array lanes = vec.getLanesI64x2(); + if (curr->isLoad()) { + lanes[curr->index] = + Literal(instance.externalInterface->load64u(addr)); + return Literal(lanes); + } else { + instance.externalInterface->store64(addr, + lanes[curr->index].geti64()); + return {}; } - instance.externalInterface->growMemory(instance.memorySize * - Memory::kPageSize, - newSize * Memory::kPageSize); - instance.memorySize = newSize; - return Literal(int32_t(ret)); } } - WASM_UNREACHABLE("invalid op"); + WASM_UNREACHABLE("unexpected op"); + } + Flow visitMemorySize(MemorySize* curr) { + NOTE_ENTER("MemorySize"); + return Literal::makeFromInt64(instance.memorySize, + instance.wasm.memory.indexType); + } + Flow visitMemoryGrow(MemoryGrow* curr) { + NOTE_ENTER("MemoryGrow"); + auto indexType = instance.wasm.memory.indexType; + auto fail = Literal::makeFromInt64(-1, indexType); + Flow flow = this->visit(curr->delta); + if (flow.breaking()) { + return flow; + } + Flow ret = Literal::makeFromInt64(instance.memorySize, indexType); + uint64_t delta = flow.getSingleValue().getUnsigned(); + if (delta > uint32_t(-1) / Memory::kPageSize && indexType == Type::i32) { + return fail; + } + if (instance.memorySize >= uint32_t(-1) - delta && + indexType == Type::i32) { + return fail; + } + auto newSize = instance.memorySize + delta; + if (newSize > instance.wasm.memory.max) { + return fail; + } + if (!instance.externalInterface->growMemory( + instance.memorySize * Memory::kPageSize, + newSize * Memory::kPageSize)) { + // We failed to grow the memory in practice, even though it was valid + // to try to do so. + return fail; + } + instance.memorySize = newSize; + return ret; } Flow visitMemoryInit(MemoryInit* curr) { NOTE_ENTER("MemoryInit"); @@ -1931,9 +2828,9 @@ assert(curr->segment < instance.wasm.memory.segments.size()); Memory::Segment& segment = instance.wasm.memory.segments[curr->segment]; - Address destVal(uint32_t(dest.value.geti32())); - Address offsetVal(uint32_t(offset.value.geti32())); - Address sizeVal(uint32_t(size.value.geti32())); + Address destVal(dest.getSingleValue().getUnsigned()); + Address offsetVal(uint32_t(offset.getSingleValue().geti32())); + Address sizeVal(uint32_t(size.getSingleValue().geti32())); if (offsetVal + sizeVal > 0 && instance.droppedSegments.count(curr->segment)) { @@ -1942,14 +2839,14 @@ if ((uint64_t)offsetVal + sizeVal > segment.data.size()) { trap("out of bounds segment access in memory.init"); } - if ((uint64_t)destVal + sizeVal > - (uint64_t)instance.memorySize * Memory::kPageSize) { + if (destVal + sizeVal > instance.memorySize * Memory::kPageSize) { trap("out of bounds memory access in memory.init"); } for (size_t i = 0; i < sizeVal; ++i) { - Literal addr(uint32_t(destVal + i)); - instance.externalInterface->store8(instance.getFinalAddress(addr, 1), - segment.data[offsetVal + i]); + Literal addr(destVal + i); + instance.externalInterface->store8( + instance.getFinalAddressWithoutOffset(addr, 1), + segment.data[offsetVal + i]); } return {}; } @@ -1975,14 +2872,15 @@ NOTE_EVAL1(dest); NOTE_EVAL1(source); NOTE_EVAL1(size); - Address destVal(uint32_t(dest.value.geti32())); - Address sourceVal(uint32_t(source.value.geti32())); - Address sizeVal(uint32_t(size.value.geti32())); - - if ((uint64_t)sourceVal + sizeVal > - (uint64_t)instance.memorySize * Memory::kPageSize || - (uint64_t)destVal + sizeVal > - (uint64_t)instance.memorySize * Memory::kPageSize) { + Address destVal(dest.getSingleValue().getUnsigned()); + Address sourceVal(source.getSingleValue().getUnsigned()); + Address sizeVal(size.getSingleValue().getUnsigned()); + + if (sourceVal + sizeVal > instance.memorySize * Memory::kPageSize || + destVal + sizeVal > instance.memorySize * Memory::kPageSize || + // FIXME: better/cheaper way to detect wrapping? + sourceVal + sizeVal < sourceVal || sourceVal + sizeVal < sizeVal || + destVal + sizeVal < destVal || destVal + sizeVal < sizeVal) { trap("out of bounds segment access in memory.copy"); } @@ -1997,9 +2895,9 @@ } for (int64_t i = start; i != end; i += step) { instance.externalInterface->store8( - instance.getFinalAddress(Literal(uint32_t(destVal + i)), 1), + instance.getFinalAddressWithoutOffset(Literal(destVal + i), 1), instance.externalInterface->load8s( - instance.getFinalAddress(Literal(uint32_t(sourceVal + i)), 1))); + instance.getFinalAddressWithoutOffset(Literal(sourceVal + i), 1))); } return {}; } @@ -2020,28 +2918,30 @@ NOTE_EVAL1(dest); NOTE_EVAL1(value); NOTE_EVAL1(size); - Address destVal(uint32_t(dest.value.geti32())); - Address sizeVal(uint32_t(size.value.geti32())); + Address destVal(dest.getSingleValue().getUnsigned()); + Address sizeVal(size.getSingleValue().getUnsigned()); - if ((uint64_t)destVal + sizeVal > - (uint64_t)instance.memorySize * Memory::kPageSize) { + // FIXME: cheaper wrapping detection? + if (destVal > instance.memorySize * Memory::kPageSize || + sizeVal > instance.memorySize * Memory::kPageSize || + destVal + sizeVal > instance.memorySize * Memory::kPageSize) { trap("out of bounds memory access in memory.fill"); } - uint8_t val(value.value.geti32()); + uint8_t val(value.getSingleValue().geti32()); for (size_t i = 0; i < sizeVal; ++i) { instance.externalInterface->store8( - instance.getFinalAddress(Literal(uint32_t(destVal + i)), 1), val); + instance.getFinalAddressWithoutOffset(Literal(destVal + i), 1), val); } return {}; } - Flow visitPush(Push* curr) { - NOTE_ENTER("Push"); - Flow value = this->visit(curr->value); - if (value.breaking()) { - return value; + Flow visitTry(Try* curr) { + NOTE_ENTER("Try"); + try { + return this->visit(curr->body); + } catch (const WasmException& e) { + instance.multiValues.push_back(e.exn); + return this->visit(curr->catchBody); } - instance.multiValues.push_back(value.value); - return Flow(); } Flow visitPop(Pop* curr) { NOTE_ENTER("Pop"); @@ -2054,11 +2954,53 @@ void trap(const char* why) override { instance.externalInterface->trap(why); } + + void throwException(Literal exn) override { + instance.externalInterface->throwException(exn); + } + + // Given a value, wrap it to a smaller given number of bytes. + Literal wrapToSmallerSize(Literal value, Index bytes) { + if (value.type == Type::i32) { + switch (bytes) { + case 1: { + return value.and_(Literal(uint32_t(0xff))); + } + case 2: { + return value.and_(Literal(uint32_t(0xffff))); + } + case 4: { + break; + } + default: + WASM_UNREACHABLE("unexpected bytes"); + } + } else { + assert(value.type == Type::i64); + switch (bytes) { + case 1: { + return value.and_(Literal(uint64_t(0xff))); + } + case 2: { + return value.and_(Literal(uint64_t(0xffff))); + } + case 4: { + return value.and_(Literal(uint64_t(0xffffffffUL))); + } + case 8: { + break; + } + default: + WASM_UNREACHABLE("unexpected bytes"); + } + } + return value; + } }; public: // Call a function, starting an invocation. - Literal callFunction(Name name, const LiteralList& arguments) { + Literals callFunction(Name name, const LiteralList& arguments) { // if the last call ended in a jump up the stack, it might have left stuff // for us to clean up here callDepth = 0; @@ -2068,7 +3010,7 @@ // Internal function call. Must be public so that callTable implementations // can use it (refactor?) - Literal callFunctionInternal(Name name, const LiteralList& arguments) { + Literals callFunctionInternal(Name name, const LiteralList& arguments) { if (callDepth > maxDepth) { externalInterface->trap("stack limit"); } @@ -2092,12 +3034,12 @@ RuntimeExpressionRunner(*this, scope, maxDepth).visit(function->body); // cannot still be breaking, it means we missed our stop assert(!flow.breaking() || flow.breakTo == RETURN_FLOW); - Literal ret = flow.value; - if (!Type::isSubType(ret.type, function->sig.results)) { - std::cerr << "calling " << function->name << " resulted in " << ret + auto type = flow.getType(); + if (!Type::isSubType(type, function->sig.results)) { + std::cerr << "calling " << function->name << " resulted in " << type << " but the function type is " << function->sig.results << '\n'; - WASM_UNREACHABLE("unexpect result type"); + WASM_UNREACHABLE("unexpected result type"); } // may decrease more than one, if we jumped up the stack callDepth = previousCallDepth; @@ -2106,9 +3048,10 @@ functionStack.pop_back(); } #ifdef WASM_INTERPRETER_DEBUG - std::cout << "exiting " << function->name << " with " << ret << '\n'; + std::cout << "exiting " << function->name << " with " << flow.values + << '\n'; #endif - return ret; + return flow.values; } protected: @@ -2124,21 +3067,25 @@ } } - template Address getFinalAddress(LS* curr, Literal ptr) { + template + Address getFinalAddress(LS* curr, Literal ptr, Index bytes) { Address memorySizeBytes = memorySize * Memory::kPageSize; uint64_t addr = ptr.type == Type::i32 ? ptr.geti32() : ptr.geti64(); trapIfGt(curr->offset, memorySizeBytes, "offset > memory"); trapIfGt(addr, memorySizeBytes - curr->offset, "final > memory"); addr += curr->offset; - trapIfGt(curr->bytes, memorySizeBytes, "bytes > memory"); - checkLoadAddress(addr, curr->bytes); + trapIfGt(bytes, memorySizeBytes, "bytes > memory"); + checkLoadAddress(addr, bytes); return addr; } - Address getFinalAddress(Literal ptr, Index bytes) { - Address memorySizeBytes = memorySize * Memory::kPageSize; + template Address getFinalAddress(LS* curr, Literal ptr) { + return getFinalAddress(curr, ptr, curr->bytes); + } + + Address getFinalAddressWithoutOffset(Literal ptr, Index bytes) { uint64_t addr = ptr.type == Type::i32 ? ptr.geti32() : ptr.geti64(); - trapIfGt(addr, memorySizeBytes - bytes, "highest > memory"); + checkLoadAddress(addr, bytes); return addr; } @@ -2147,14 +3094,26 @@ trapIfGt(addr, memorySizeBytes - bytes, "highest > memory"); } - Literal doAtomicLoad(Address addr, Index bytes, Type type) { + void checkAtomicAddress(Address addr, Index bytes) { checkLoadAddress(addr, bytes); + // Unaligned atomics trap. + if (bytes > 1) { + if (addr & (bytes - 1)) { + externalInterface->trap("unaligned atomic operation"); + } + } + } + + Literal doAtomicLoad(Address addr, Index bytes, Type type) { + checkAtomicAddress(addr, bytes); Const ptr; ptr.value = Literal(int32_t(addr)); ptr.type = Type::i32; Load load; load.bytes = bytes; - load.signed_ = true; + // When an atomic loads a partial number of bytes for the type, it is + // always an unsigned extension. + load.signed_ = false; load.align = bytes; load.isAtomic = true; // understatement load.ptr = &ptr; @@ -2163,6 +3122,7 @@ } void doAtomicStore(Address addr, Index bytes, Literal toStore) { + checkAtomicAddress(addr, bytes); Const ptr; ptr.value = Literal(int32_t(addr)); ptr.type = Type::i32; @@ -2183,7 +3143,7 @@ }; // The default ModuleInstance uses a trivial global manager -using TrivialGlobalManager = std::map; +using TrivialGlobalManager = std::map; class ModuleInstance : public ModuleInstanceBase { public: diff -Nru binaryen-91/src/wasm-io.h binaryen-99/src/wasm-io.h --- binaryen-91/src/wasm-io.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm-io.h 2021-01-07 20:01:06.000000000 +0000 @@ -33,6 +33,8 @@ // the binary, so that we can update DWARF sections later when writing. void setDWARF(bool DWARF_) { DWARF = DWARF_; } + void setProfile(IRProfile profile_) { profile = profile_; } + // read text void readText(std::string filename, Module& wasm); // read binary @@ -49,6 +51,8 @@ private: bool DWARF = false; + IRProfile profile = IRProfile::Normal; + void readStdin(Module& wasm, std::string sourceMapFilename); void readBinaryData(std::vector& input, diff -Nru binaryen-91/src/wasm-module-building.h binaryen-99/src/wasm-module-building.h --- binaryen-91/src/wasm-module-building.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm-module-building.h 2021-01-07 20:01:06.000000000 +0000 @@ -122,15 +122,6 @@ return; } - // Before parallelism, create all passes on the main thread here, to ensure - // prepareToRun() is called for each pass before we start to optimize - // functions. - { - PassRunner passRunner(wasm, passOptions); - addPrePasses(passRunner); - passRunner.addDefaultFunctionOptimizationPasses(); - } - // prepare work list endMarker = new Function(); list = new std::atomic[numFunctions]; diff -Nru binaryen-91/src/wasm-printing.h binaryen-99/src/wasm-printing.h --- binaryen-91/src/wasm-printing.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm-printing.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ -/* - * 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. - */ - -#ifndef wasm_wasm_printing_h -#define wasm_wasm_printing_h - -#include - -#include "pass.h" -#include "wasm.h" - -namespace wasm { - -struct WasmPrinter { - static std::ostream& printModule(Module* module, std::ostream& o); - - static std::ostream& printModule(Module* module); - - static std::ostream& printExpression(Expression* expression, - std::ostream& o, - bool minify = false, - bool full = false); - - static std::ostream& - printStackInst(StackInst* inst, std::ostream& o, Function* func = nullptr); - - static std::ostream& - printStackIR(StackIR* ir, std::ostream& o, Function* func = nullptr); -}; - -} // namespace wasm - -namespace std { - -inline std::ostream& operator<<(std::ostream& o, wasm::Module& module) { - return wasm::WasmPrinter::printModule(&module, o); -} - -inline std::ostream& operator<<(std::ostream& o, wasm::Expression& expression) { - return wasm::WasmPrinter::printExpression(&expression, o); -} - -inline std::ostream& operator<<(std::ostream& o, wasm::StackInst& inst) { - return wasm::WasmPrinter::printStackInst(&inst, o); -} - -inline std::ostream& operator<<(std::ostream& o, wasm::StackIR& ir) { - return wasm::WasmPrinter::printStackIR(&ir, o); -} - -} // namespace std - -#endif // wasm_wasm_printing_h diff -Nru binaryen-91/src/wasm-s-parser.h binaryen-99/src/wasm-s-parser.h --- binaryen-91/src/wasm-s-parser.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm-s-parser.h 2021-01-07 20:01:06.000000000 +0000 @@ -77,6 +77,11 @@ Element* setString(cashew::IString str__, bool dollared__, bool quoted__); Element* setMetadata(size_t line_, size_t col_, SourceLocation* startLoc_); + // comparisons + bool operator==(Name name) { return isStr() && str() == name; } + + template bool operator!=(T t) { return !(*this == t); } + // printing friend std::ostream& operator<<(std::ostream& o, Element& e); void dump(); @@ -111,23 +116,27 @@ class SExpressionWasmBuilder { Module& wasm; MixedArena& allocator; - std::vector signatures; - std::unordered_map signatureIndices; + IRProfile profile; + + // The main list of types declared in the module + std::vector types; + std::unordered_map typeIndices; + std::vector functionNames; std::vector globalNames; std::vector eventNames; int functionCounter = 0; int globalCounter = 0; int eventCounter = 0; + int tableCounter = 0; + int memoryCounter = 0; // we need to know function return types before we parse their contents - std::map functionTypes; + std::map functionSignatures; std::unordered_map debugInfoFileIndices; public: // Assumes control of and modifies the input. - SExpressionWasmBuilder(Module& wasm, - Element& module, - Name* moduleName = nullptr); + SExpressionWasmBuilder(Module& wasm, Element& module, IRProfile profile); private: // pre-parse types and function definitions, so we know function return types @@ -143,7 +152,6 @@ UniqueNameMapper nameMapper; - Signature getFunctionSignature(Element& s); Name getFunctionName(Element& s); Name getGlobalName(Element& s); Name getEventName(Element& s); @@ -160,6 +168,11 @@ } Type stringToType(const char* str, bool allowError = false, bool prefix = false); + HeapType stringToHeapType(cashew::IString str, bool prefix = false) { + return stringToHeapType(str.str, prefix); + } + HeapType stringToHeapType(const char* str, bool prefix = false); + Type elementToType(Element& s); Type stringToLaneType(const char* str); bool isType(cashew::IString str) { return stringToType(str, true) != Type::none; @@ -169,7 +182,7 @@ Expression* parseExpression(Element* s) { return parseExpression(*s); } Expression* parseExpression(Element& s); - MixedArena& getAllocator() { return allocator; } + Module& getModule() { return wasm; } private: Expression* makeExpression(Element& s); @@ -179,7 +192,8 @@ Expression* makeUnary(Element& s, UnaryOp op); Expression* makeSelect(Element& s); Expression* makeDrop(Element& s); - Expression* makeHost(Element& s, HostOp op); + Expression* makeMemorySize(Element& s); + Expression* makeMemoryGrow(Element& s); Index getLocalIndex(Element& s); Expression* makeLocalGet(Element& s); Expression* makeLocalTee(Element& s); @@ -205,12 +219,14 @@ Expression* makeSIMDTernary(Element& s, SIMDTernaryOp op); Expression* makeSIMDShift(Element& s, SIMDShiftOp op); Expression* makeSIMDLoad(Element& s, SIMDLoadOp op); + Expression* makeSIMDLoadStoreLane(Element& s, SIMDLoadStoreLaneOp op); + Expression* makePrefetch(Element& s, PrefetchOp op); Expression* makeMemoryInit(Element& s); Expression* makeDataDrop(Element& s); Expression* makeMemoryCopy(Element& s); Expression* makeMemoryFill(Element& s); Expression* makePush(Element& s); - Expression* makePop(Type type); + Expression* makePop(Element& s); Expression* makeIf(Element& s); Expression* makeMaybeBlock(Element& s, size_t i, Type type); Expression* makeLoop(Element& s); @@ -230,18 +246,38 @@ Expression* makeRefNull(Element& s); Expression* makeRefIsNull(Element& s); Expression* makeRefFunc(Element& s); + Expression* makeRefEq(Element& s); Expression* makeTry(Element& s); - Expression* makeCatch(Element& s, Type type); + Expression* makeTryOrCatchBody(Element& s, Type type, bool isTry); Expression* makeThrow(Element& s); Expression* makeRethrow(Element& s); Expression* makeBrOnExn(Element& s); + Expression* makeTupleMake(Element& s); + Expression* makeTupleExtract(Element& s); + Expression* makeCallRef(Element& s, bool isReturn); + Expression* makeI31New(Element& s); + Expression* makeI31Get(Element& s, bool signed_); + Expression* makeRefTest(Element& s); + Expression* makeRefCast(Element& s); + Expression* makeBrOnCast(Element& s); + Expression* makeRttCanon(Element& s); + Expression* makeRttSub(Element& s); + Expression* makeStructNew(Element& s, bool default_); + Index getStructIndex(const HeapType& type, Element& s); + Expression* makeStructGet(Element& s, bool signed_ = false); + Expression* makeStructSet(Element& s); + Expression* makeArrayNew(Element& s, bool default_); + Expression* makeArrayGet(Element& s, bool signed_ = false); + Expression* makeArraySet(Element& s); + Expression* makeArrayLen(Element& s); // Helper functions Type parseOptionalResultType(Element& s, Index& i); Index parseMemoryLimits(Element& s, Index i); + Index parseMemoryIndex(Element& s, Index i); std::vector parseParamOrLocal(Element& s); std::vector parseParamOrLocal(Element& s, size_t& localIndex); - Type parseResults(Element& s); + std::vector parseResults(Element& s); Signature parseTypeRef(Element& s); size_t parseTypeUse(Element& s, size_t startPos, @@ -253,17 +289,30 @@ void stringToBinary(const char* input, size_t size, std::vector& data); void parseMemory(Element& s, bool preParseImport = false); void parseData(Element& s); - void parseInnerData(Element& s, Index i, Expression* offset, bool isPassive); + void parseInnerData( + Element& s, Index i, Name name, Expression* offset, bool isPassive); void parseExport(Element& s); void parseImport(Element& s); void parseGlobal(Element& s, bool preParseImport = false); void parseTable(Element& s, bool preParseImport = false); void parseElem(Element& s); void parseInnerElem(Element& s, Index i = 1, Expression* offset = nullptr); + + // Parses something like (func ..), (array ..), (struct) + HeapType parseHeapType(Element& s); + void parseType(Element& s); void parseEvent(Element& s, bool preParseImport = false); Function::DebugLocation getDebugLocation(const SourceLocation& loc); + + // Struct/Array instructions have an unnecessary heap type that is just for + // validation (except for the case of unreachability, but that's not a problem + // anyhow, we can ignore it there). That is, we also have a reference / rtt + // child from which we can infer the type anyhow, and we just need to check + // that type is the same. + void + validateHeapTypeUsingChild(Expression* child, HeapType heapType, Element& s); }; } // namespace wasm diff -Nru binaryen-91/src/wasm-stack.h binaryen-99/src/wasm-stack.h --- binaryen-91/src/wasm-stack.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm-stack.h 2021-01-07 20:01:06.000000000 +0000 @@ -18,6 +18,7 @@ #define wasm_stack_h #include "ir/branch-utils.h" +#include "ir/properties.h" #include "pass.h" #include "wasm-binary.h" #include "wasm-traversal.h" @@ -84,8 +85,9 @@ BinaryInstWriter(WasmBinaryWriter& parent, BufferWithRandomAccess& o, Function* func, - bool sourceMap) - : parent(parent), o(o), func(func), sourceMap(sourceMap) {} + bool sourceMap, + bool DWARF) + : parent(parent), o(o), func(func), sourceMap(sourceMap), DWARF(DWARF) {} void visit(Expression* curr) { if (func && !sourceMap) { @@ -97,53 +99,12 @@ } } - void visitBlock(Block* curr); - void visitIf(If* curr); - void visitLoop(Loop* curr); - void visitBreak(Break* curr); - void visitSwitch(Switch* curr); - void visitCall(Call* curr); - void visitCallIndirect(CallIndirect* curr); - void visitLocalGet(LocalGet* curr); - void visitLocalSet(LocalSet* curr); - void visitGlobalGet(GlobalGet* curr); - void visitGlobalSet(GlobalSet* curr); - void visitLoad(Load* curr); - void visitStore(Store* curr); - void visitAtomicRMW(AtomicRMW* curr); - void visitAtomicCmpxchg(AtomicCmpxchg* curr); - void visitAtomicWait(AtomicWait* curr); - void visitAtomicNotify(AtomicNotify* curr); - void visitAtomicFence(AtomicFence* curr); - void visitSIMDExtract(SIMDExtract* curr); - void visitSIMDReplace(SIMDReplace* curr); - void visitSIMDShuffle(SIMDShuffle* curr); - void visitSIMDTernary(SIMDTernary* curr); - void visitSIMDShift(SIMDShift* curr); - void visitSIMDLoad(SIMDLoad* curr); - void visitMemoryInit(MemoryInit* curr); - void visitDataDrop(DataDrop* curr); - void visitMemoryCopy(MemoryCopy* curr); - void visitMemoryFill(MemoryFill* curr); - void visitConst(Const* curr); - void visitUnary(Unary* curr); - void visitBinary(Binary* curr); - void visitSelect(Select* curr); - void visitReturn(Return* curr); - void visitHost(Host* curr); - void visitRefNull(RefNull* curr); - void visitRefIsNull(RefIsNull* curr); - void visitRefFunc(RefFunc* curr); - void visitTry(Try* curr); - void visitThrow(Throw* curr); - void visitRethrow(Rethrow* curr); - void visitBrOnExn(BrOnExn* curr); - void visitNop(Nop* curr); - void visitUnreachable(Unreachable* curr); - void visitDrop(Drop* curr); - void visitPush(Push* curr); - void visitPop(Pop* curr); +#define DELEGATE(CLASS_TO_VISIT) \ + void visit##CLASS_TO_VISIT(CLASS_TO_VISIT* curr); + +#include "wasm-delegations.h" + void emitResultType(Type type); void emitIfElse(If* curr); void emitCatch(Try* curr); // emit an end at the end of a block/loop/if/try @@ -161,18 +122,25 @@ BufferWithRandomAccess& o; Function* func = nullptr; bool sourceMap; + bool DWARF; std::vector breakStack; // type => number of locals of that type in the compact form std::map numLocalsByType; - // local index => index in compact form of [all int32s][all int64s]etc - std::map mappedLocals; + // (local index, tuple index) => binary local index + std::map, size_t> mappedLocals; + + // Keeps track of the binary index of the scratch locals used to lower + // tuple.extract. + std::map scratchLocals; + void countScratchLocals(); + void setScratchLocals(); }; // Takes binaryen IR and converts it to something else (binary or stack IR) template -class BinaryenIRWriter : public OverriddenVisitor> { +class BinaryenIRWriter : public Visitor> { public: BinaryenIRWriter(Function* func) : func(func) {} @@ -184,49 +152,7 @@ void visitBlock(Block* curr); void visitIf(If* curr); void visitLoop(Loop* curr); - void visitBreak(Break* curr); - void visitSwitch(Switch* curr); - void visitCall(Call* curr); - void visitCallIndirect(CallIndirect* curr); - void visitLocalGet(LocalGet* curr); - void visitLocalSet(LocalSet* curr); - void visitGlobalGet(GlobalGet* curr); - void visitGlobalSet(GlobalSet* curr); - void visitLoad(Load* curr); - void visitStore(Store* curr); - void visitAtomicRMW(AtomicRMW* curr); - void visitAtomicCmpxchg(AtomicCmpxchg* curr); - void visitAtomicWait(AtomicWait* curr); - void visitAtomicNotify(AtomicNotify* curr); - void visitAtomicFence(AtomicFence* curr); - void visitSIMDExtract(SIMDExtract* curr); - void visitSIMDReplace(SIMDReplace* curr); - void visitSIMDShuffle(SIMDShuffle* curr); - void visitSIMDTernary(SIMDTernary* curr); - void visitSIMDShift(SIMDShift* curr); - void visitSIMDLoad(SIMDLoad* curr); - void visitMemoryInit(MemoryInit* curr); - void visitDataDrop(DataDrop* curr); - void visitMemoryCopy(MemoryCopy* curr); - void visitMemoryFill(MemoryFill* curr); - void visitConst(Const* curr); - void visitUnary(Unary* curr); - void visitBinary(Binary* curr); - void visitSelect(Select* curr); - void visitReturn(Return* curr); - void visitHost(Host* curr); - void visitRefNull(RefNull* curr); - void visitRefIsNull(RefIsNull* curr); - void visitRefFunc(RefFunc* curr); void visitTry(Try* curr); - void visitThrow(Throw* curr); - void visitRethrow(Rethrow* curr); - void visitBrOnExn(BrOnExn* curr); - void visitNop(Nop* curr); - void visitUnreachable(Unreachable* curr); - void visitDrop(Drop* curr); - void visitPush(Push* curr); - void visitPop(Pop* curr); protected: Function* func = nullptr; @@ -264,19 +190,44 @@ } for (auto* child : block->list) { visit(child); - } - if (block->type == Type::unreachable && - block->list.back()->type != Type::unreachable) { - // similar to in visitBlock, here we could skip emitting the block itself, - // but must still end the 'block' (the contents, really) with an unreachable - emitUnreachable(); + // Since this child was unreachable, either this child or one of its + // descendants was a source of unreachability that was actually + // emitted. Subsequent children won't be reachable, so skip them. + if (child->type == Type::unreachable) { + break; + } } } template void BinaryenIRWriter::visit(Expression* curr) { emitDebugLocation(curr); - OverriddenVisitor::visit(curr); + // We emit unreachable instructions that create unreachability, but not + // unreachable instructions that just inherit unreachability from their + // children, since the latter won't be reached. This (together with logic in + // the control flow visitors) also ensures that the final instruction in each + // unreachable block is a source of unreachability, which means we don't need + // to emit an extra `unreachable` before the end of the block to prevent type + // errors. + bool hasUnreachableChild = false; + for (auto* child : ValueChildIterator(curr)) { + visit(child); + if (child->type == Type::unreachable) { + hasUnreachableChild = true; + break; + } + } + if (hasUnreachableChild) { + // `curr` is not reachable, so don't emit it. + return; + } + // Control flow requires special handling, but most instructions can be + // emitted directly after their children. + if (Properties::isControlFlowStructure(curr)) { + Visitor::visit(curr); + } else { + emit(curr); + } } template @@ -284,22 +235,26 @@ auto visitChildren = [this](Block* curr, Index from) { auto& list = curr->list; while (from < list.size()) { - visit(list[from++]); + auto* child = list[from]; + visit(child); + if (child->type == Type::unreachable) { + break; + } + ++from; } }; auto afterChildren = [this](Block* curr) { - if (curr->type == Type::unreachable) { - // an unreachable block is one that cannot be exited. We cannot encode - // this directly in wasm, where blocks must be none,i32,i64,f32,f64. Since - // the block cannot be exited, we can emit an unreachable at the end, and - // that will always be valid, and then the block is ok as a none - emitUnreachable(); - } emitScopeEnd(curr); if (curr->type == Type::unreachable) { - // and emit an unreachable *outside* the block too, so later things can - // pop anything + // Since this block is unreachable, no instructions will be emitted after + // it in its enclosing scope. That means that this block will be the last + // instruction before the end of its parent scope, so its type must match + // the type of its parent. But we don't have a concrete type for this + // block and we don't know what type its parent expects, so we can't + // ensure the types match. To work around this, we insert an `unreachable` + // instruction after every unreachable control flow structure and depend + // on its polymorphic behavior to paper over any type mismatches. emitUnreachable(); } }; @@ -320,12 +275,16 @@ emit(curr); visitChildren(curr, 0); afterChildren(curr); + bool childUnreachable = curr->type == Type::unreachable; // Finish the later parts of all the parent blocks. while (!parents.empty()) { auto* parent = parents.back(); parents.pop_back(); - visitChildren(parent, 1); + if (!childUnreachable) { + visitChildren(parent, 1); + } afterChildren(parent); + childUnreachable = parent->type == Type::unreachable; } return; } @@ -336,13 +295,6 @@ } template void BinaryenIRWriter::visitIf(If* curr) { - visit(curr->condition); - if (curr->condition->type == Type::unreachable) { - // this if-else is unreachable because of the condition, i.e., the condition - // does not exit. So don't emit the if (but do consume the condition) - emitUnreachable(); - return; - } emit(curr); visitPossibleBlockContents(curr->ifTrue); @@ -353,11 +305,10 @@ emitScopeEnd(curr); if (curr->type == Type::unreachable) { - // we already handled the case of the condition being unreachable. - // otherwise, we may still be unreachable, if we are an if-else with both - // sides unreachable. wasm does not allow this to be emitted directly, so we - // must do something more. we could do better, but for now we emit an extra - // unreachable instruction after the if, so it is not consumed itself, + // We already handled the case of the condition being unreachable in + // `visit`. Otherwise, we may still be unreachable, if we are an if-else + // with both sides unreachable. Just like with blocks, we emit an extra + // `unreachable` to work around potential type mismatches. assert(curr->ifFalse); emitUnreachable(); } @@ -367,11 +318,6 @@ void BinaryenIRWriter::visitLoop(Loop* curr) { emit(curr); visitPossibleBlockContents(curr->body); - if (curr->type == Type::unreachable) { - // we emitted a loop without a return type, and the body might be block - // contents, so ensure it is not consumed - emitUnreachable(); - } emitScopeEnd(curr); if (curr->type == Type::unreachable) { // we emitted a loop without a return type, so it must not be consumed @@ -379,361 +325,6 @@ } } -template -void BinaryenIRWriter::visitBreak(Break* curr) { - if (curr->value) { - visit(curr->value); - } - if (curr->condition) { - visit(curr->condition); - } - emit(curr); - if (curr->condition && curr->type == Type::unreachable) { - // a br_if is normally none or emits a value. if it is unreachable, then - // either the condition or the value is unreachable, which is extremely - // rare, and may require us to make the stack polymorphic (if the block we - // branch to has a value, we may lack one as we are not a reachable branch; - // the wasm spec on the other hand does presume the br_if emits a value of - // the right type, even if it popped unreachable) - emitUnreachable(); - } -} - -template -void BinaryenIRWriter::visitSwitch(Switch* curr) { - if (curr->value) { - visit(curr->value); - } - visit(curr->condition); - if (!BranchUtils::isBranchReachable(curr)) { - // if the branch is not reachable, then it's dangerous to emit it, as wasm - // type checking rules are different, especially in unreachable code. so - // just don't emit that unreachable code. - emitUnreachable(); - return; - } - emit(curr); -} - -template -void BinaryenIRWriter::visitCall(Call* curr) { - for (auto* operand : curr->operands) { - visit(operand); - } - - // For non-control-flow value-returning instructions, if the type of an - // expression is unreachable, we emit an unreachable and don't emit the - // instruction itself. If we don't emit an unreachable, instructions that - // follow can have a validation failure in wasm binary format. For example: - // [unreachable] (f32.add - // [unreachable] (i32.eqz - // [unreachable] (unreachable) - // ) - // ... - // ) - // This is a valid prgram in binaryen IR, because the unreachable type - // propagates out of an expression, making both i32.eqz and f32.add - // unreachable. But in binary format, this becomes: - // unreachable - // i32.eqz - // f32.add ;; validation failure; it takes an i32! - // And here f32.add causes validation failure in wasm validation. So in this - // case we add an unreachable to prevent following instructions to consume - // the current value (here i32.eqz). - // - // The same applies for other expressions. - if (curr->type == Type::unreachable && !curr->isReturn) { - emitUnreachable(); - return; - } - emit(curr); -} - -template -void BinaryenIRWriter::visitCallIndirect(CallIndirect* curr) { - for (auto* operand : curr->operands) { - visit(operand); - } - visit(curr->target); - if (curr->type == Type::unreachable && !curr->isReturn) { - emitUnreachable(); - return; - } - emit(curr); -} - -template -void BinaryenIRWriter::visitLocalGet(LocalGet* curr) { - emit(curr); -} - -template -void BinaryenIRWriter::visitLocalSet(LocalSet* curr) { - visit(curr->value); - if (curr->isTee() && curr->type == Type::unreachable) { - emitUnreachable(); - return; - } - emit(curr); -} - -template -void BinaryenIRWriter::visitGlobalGet(GlobalGet* curr) { - emit(curr); -} - -template -void BinaryenIRWriter::visitGlobalSet(GlobalSet* curr) { - visit(curr->value); - emit(curr); -} - -template -void BinaryenIRWriter::visitLoad(Load* curr) { - visit(curr->ptr); - if (curr->type == Type::unreachable) { - emitUnreachable(); - return; - } - emit(curr); -} - -template -void BinaryenIRWriter::visitStore(Store* curr) { - visit(curr->ptr); - visit(curr->value); - emit(curr); -} - -template -void BinaryenIRWriter::visitAtomicRMW(AtomicRMW* curr) { - visit(curr->ptr); - visit(curr->value); - if (curr->type == Type::unreachable) { - emitUnreachable(); - return; - } - emit(curr); -} - -template -void BinaryenIRWriter::visitAtomicCmpxchg(AtomicCmpxchg* curr) { - visit(curr->ptr); - visit(curr->expected); - visit(curr->replacement); - if (curr->type == Type::unreachable) { - emitUnreachable(); - return; - } - emit(curr); -} - -template -void BinaryenIRWriter::visitAtomicWait(AtomicWait* curr) { - visit(curr->ptr); - visit(curr->expected); - visit(curr->timeout); - if (curr->type == Type::unreachable) { - emitUnreachable(); - return; - } - emit(curr); -} - -template -void BinaryenIRWriter::visitAtomicNotify(AtomicNotify* curr) { - visit(curr->ptr); - visit(curr->notifyCount); - if (curr->type == Type::unreachable) { - emitUnreachable(); - return; - } - emit(curr); -} - -template -void BinaryenIRWriter::visitAtomicFence(AtomicFence* curr) { - emit(curr); -} - -template -void BinaryenIRWriter::visitSIMDExtract(SIMDExtract* curr) { - visit(curr->vec); - if (curr->type == Type::unreachable) { - emitUnreachable(); - return; - } - emit(curr); -} - -template -void BinaryenIRWriter::visitSIMDReplace(SIMDReplace* curr) { - visit(curr->vec); - visit(curr->value); - if (curr->type == Type::unreachable) { - emitUnreachable(); - return; - } - emit(curr); -} - -template -void BinaryenIRWriter::visitSIMDShuffle(SIMDShuffle* curr) { - visit(curr->left); - visit(curr->right); - if (curr->type == Type::unreachable) { - emitUnreachable(); - return; - } - emit(curr); -} - -template -void BinaryenIRWriter::visitSIMDTernary(SIMDTernary* curr) { - visit(curr->a); - visit(curr->b); - visit(curr->c); - if (curr->type == Type::unreachable) { - emitUnreachable(); - return; - } - emit(curr); -} - -template -void BinaryenIRWriter::visitSIMDShift(SIMDShift* curr) { - visit(curr->vec); - visit(curr->shift); - if (curr->type == Type::unreachable) { - emitUnreachable(); - return; - } - emit(curr); -} - -template -void BinaryenIRWriter::visitSIMDLoad(SIMDLoad* curr) { - visit(curr->ptr); - if (curr->type == Type::unreachable) { - emitUnreachable(); - return; - } - emit(curr); -} - -template -void BinaryenIRWriter::visitMemoryInit(MemoryInit* curr) { - visit(curr->dest); - visit(curr->offset); - visit(curr->size); - emit(curr); -} - -template -void BinaryenIRWriter::visitDataDrop(DataDrop* curr) { - emit(curr); -} - -template -void BinaryenIRWriter::visitMemoryCopy(MemoryCopy* curr) { - visit(curr->dest); - visit(curr->source); - visit(curr->size); - emit(curr); -} - -template -void BinaryenIRWriter::visitMemoryFill(MemoryFill* curr) { - visit(curr->dest); - visit(curr->value); - visit(curr->size); - emit(curr); -} - -template -void BinaryenIRWriter::visitConst(Const* curr) { - emit(curr); -} - -template -void BinaryenIRWriter::visitUnary(Unary* curr) { - visit(curr->value); - if (curr->type == Type::unreachable) { - emitUnreachable(); - return; - } - emit(curr); -} - -template -void BinaryenIRWriter::visitBinary(Binary* curr) { - visit(curr->left); - visit(curr->right); - if (curr->type == Type::unreachable) { - emitUnreachable(); - return; - } - emit(curr); -} - -template -void BinaryenIRWriter::visitSelect(Select* curr) { - visit(curr->ifTrue); - visit(curr->ifFalse); - visit(curr->condition); - if (curr->type == Type::unreachable) { - emitUnreachable(); - return; - } - emit(curr); -} - -template -void BinaryenIRWriter::visitReturn(Return* curr) { - if (curr->value) { - visit(curr->value); - } - emit(curr); -} - -template -void BinaryenIRWriter::visitHost(Host* curr) { - switch (curr->op) { - case MemorySize: { - break; - } - case MemoryGrow: { - visit(curr->operands[0]); - break; - } - } - emit(curr); -} - -template -void BinaryenIRWriter::visitRefNull(RefNull* curr) { - emit(curr); -} - -template -void BinaryenIRWriter::visitRefIsNull(RefIsNull* curr) { - visit(curr->value); - if (curr->type == Type::unreachable) { - emitUnreachable(); - return; - } - emit(curr); -} - -template -void BinaryenIRWriter::visitRefFunc(RefFunc* curr) { - if (curr->type == Type::unreachable) { - emitUnreachable(); - return; - } - emit(curr); -} - template void BinaryenIRWriter::visitTry(Try* curr) { emit(curr); visitPossibleBlockContents(curr->body); @@ -745,54 +336,6 @@ } } -template -void BinaryenIRWriter::visitThrow(Throw* curr) { - for (auto* operand : curr->operands) { - visit(operand); - } - emit(curr); -} - -template -void BinaryenIRWriter::visitRethrow(Rethrow* curr) { - visit(curr->exnref); - emit(curr); -} - -template -void BinaryenIRWriter::visitBrOnExn(BrOnExn* curr) { - visit(curr->exnref); - emit(curr); - if (curr->type == Type::unreachable) { - emitUnreachable(); - } -} - -template void BinaryenIRWriter::visitNop(Nop* curr) { - emit(curr); -} - -template -void BinaryenIRWriter::visitUnreachable(Unreachable* curr) { - emit(curr); -} - -template -void BinaryenIRWriter::visitDrop(Drop* curr) { - visit(curr->value); - emit(curr); -} - -template -void BinaryenIRWriter::visitPush(Push* curr) { - visit(curr->value); - emit(curr); -} - -template void BinaryenIRWriter::visitPop(Pop* curr) { - emit(curr); -} - // Binaryen IR to binary writer class BinaryenIRToBinaryWriter : public BinaryenIRWriter { @@ -800,9 +343,10 @@ BinaryenIRToBinaryWriter(WasmBinaryWriter& parent, BufferWithRandomAccess& o, Function* func = nullptr, - bool sourceMap = false) + bool sourceMap = false, + bool DWARF = false) : BinaryenIRWriter(func), parent(parent), - writer(parent, o, func, sourceMap), sourceMap(sourceMap) {} + writer(parent, o, func, sourceMap, DWARF), sourceMap(sourceMap) {} void visit(Expression* curr) { BinaryenIRWriter::visit(curr); @@ -834,15 +378,15 @@ private: WasmBinaryWriter& parent; BinaryInstWriter writer; - bool sourceMap = false; + bool sourceMap; }; // Binaryen IR to stack IR converter // Queues the expressions linearly in Stack IR (SIR) class StackIRGenerator : public BinaryenIRWriter { public: - StackIRGenerator(MixedArena& allocator, Function* func) - : BinaryenIRWriter(func), allocator(allocator) {} + StackIRGenerator(Module& module, Function* func) + : BinaryenIRWriter(func), module(module) {} void emit(Expression* curr); void emitScopeEnd(Expression* curr); @@ -855,7 +399,7 @@ } void emitFunctionEnd() {} void emitUnreachable() { - stackIR.push_back(makeStackInst(Builder(allocator).makeUnreachable())); + stackIR.push_back(makeStackInst(Builder(module).makeUnreachable())); } void emitDebugLocation(Expression* curr) {} @@ -867,7 +411,7 @@ return makeStackInst(StackInst::Basic, origin); } - MixedArena& allocator; + Module& module; StackIR stackIR; // filled in write() }; @@ -877,7 +421,8 @@ StackIRToBinaryWriter(WasmBinaryWriter& parent, BufferWithRandomAccess& o, Function* func) - : writer(parent, o, func, false /* sourceMap */), func(func) {} + : writer(parent, o, func, false /* sourceMap */, false /* DWARF */), + func(func) {} void write(); diff -Nru binaryen-91/src/wasm-traversal.h binaryen-99/src/wasm-traversal.h --- binaryen-91/src/wasm-traversal.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm-traversal.h 2021-01-07 20:01:06.000000000 +0000 @@ -37,52 +37,12 @@ template struct Visitor { // Expression visitors - ReturnType visitBlock(Block* curr) { return ReturnType(); } - ReturnType visitIf(If* curr) { return ReturnType(); } - ReturnType visitLoop(Loop* curr) { return ReturnType(); } - ReturnType visitBreak(Break* curr) { return ReturnType(); } - ReturnType visitSwitch(Switch* curr) { return ReturnType(); } - ReturnType visitCall(Call* curr) { return ReturnType(); } - ReturnType visitCallIndirect(CallIndirect* curr) { return ReturnType(); } - ReturnType visitLocalGet(LocalGet* curr) { return ReturnType(); } - ReturnType visitLocalSet(LocalSet* curr) { return ReturnType(); } - ReturnType visitGlobalGet(GlobalGet* curr) { return ReturnType(); } - ReturnType visitGlobalSet(GlobalSet* curr) { return ReturnType(); } - ReturnType visitLoad(Load* curr) { return ReturnType(); } - ReturnType visitStore(Store* curr) { return ReturnType(); } - ReturnType visitAtomicRMW(AtomicRMW* curr) { return ReturnType(); } - ReturnType visitAtomicCmpxchg(AtomicCmpxchg* curr) { return ReturnType(); } - ReturnType visitAtomicWait(AtomicWait* curr) { return ReturnType(); } - ReturnType visitAtomicNotify(AtomicNotify* curr) { return ReturnType(); } - ReturnType visitAtomicFence(AtomicFence* curr) { return ReturnType(); } - ReturnType visitSIMDExtract(SIMDExtract* curr) { return ReturnType(); } - ReturnType visitSIMDReplace(SIMDReplace* curr) { return ReturnType(); } - ReturnType visitSIMDShuffle(SIMDShuffle* curr) { return ReturnType(); } - ReturnType visitSIMDTernary(SIMDTernary* curr) { return ReturnType(); } - ReturnType visitSIMDShift(SIMDShift* curr) { return ReturnType(); } - ReturnType visitSIMDLoad(SIMDLoad* curr) { return ReturnType(); } - ReturnType visitMemoryInit(MemoryInit* curr) { return ReturnType(); } - ReturnType visitDataDrop(DataDrop* curr) { return ReturnType(); } - ReturnType visitMemoryCopy(MemoryCopy* curr) { return ReturnType(); } - ReturnType visitMemoryFill(MemoryFill* curr) { return ReturnType(); } - ReturnType visitConst(Const* curr) { return ReturnType(); } - ReturnType visitUnary(Unary* curr) { return ReturnType(); } - ReturnType visitBinary(Binary* curr) { return ReturnType(); } - ReturnType visitSelect(Select* curr) { return ReturnType(); } - ReturnType visitDrop(Drop* curr) { return ReturnType(); } - ReturnType visitReturn(Return* curr) { return ReturnType(); } - ReturnType visitHost(Host* curr) { return ReturnType(); } - ReturnType visitRefNull(RefNull* curr) { return ReturnType(); } - ReturnType visitRefIsNull(RefIsNull* curr) { return ReturnType(); } - ReturnType visitRefFunc(RefFunc* curr) { return ReturnType(); } - ReturnType visitTry(Try* curr) { return ReturnType(); } - ReturnType visitThrow(Throw* curr) { return ReturnType(); } - ReturnType visitRethrow(Rethrow* curr) { return ReturnType(); } - ReturnType visitBrOnExn(BrOnExn* curr) { return ReturnType(); } - ReturnType visitNop(Nop* curr) { return ReturnType(); } - ReturnType visitUnreachable(Unreachable* curr) { return ReturnType(); } - ReturnType visitPush(Push* curr) { return ReturnType(); } - ReturnType visitPop(Pop* curr) { return ReturnType(); } +#define DELEGATE(CLASS_TO_VISIT) \ + ReturnType visit##CLASS_TO_VISIT(CLASS_TO_VISIT* curr) { \ + return ReturnType(); \ + } +#include "wasm-delegations.h" + // Module-level visitors ReturnType visitExport(Export* curr) { return ReturnType(); } ReturnType visitGlobal(Global* curr) { return ReturnType(); } @@ -95,109 +55,17 @@ ReturnType visit(Expression* curr) { assert(curr); + switch (curr->_id) { #define DELEGATE(CLASS_TO_VISIT) \ - return static_cast(this)->visit##CLASS_TO_VISIT( \ - static_cast(curr)) + case Expression::Id::CLASS_TO_VISIT##Id: \ + return static_cast(this)->visit##CLASS_TO_VISIT( \ + static_cast(curr)) + +#include "wasm-delegations.h" - switch (curr->_id) { - case Expression::Id::BlockId: - DELEGATE(Block); - case Expression::Id::IfId: - DELEGATE(If); - case Expression::Id::LoopId: - DELEGATE(Loop); - case Expression::Id::BreakId: - DELEGATE(Break); - case Expression::Id::SwitchId: - DELEGATE(Switch); - case Expression::Id::CallId: - DELEGATE(Call); - case Expression::Id::CallIndirectId: - DELEGATE(CallIndirect); - case Expression::Id::LocalGetId: - DELEGATE(LocalGet); - case Expression::Id::LocalSetId: - DELEGATE(LocalSet); - case Expression::Id::GlobalGetId: - DELEGATE(GlobalGet); - case Expression::Id::GlobalSetId: - DELEGATE(GlobalSet); - case Expression::Id::LoadId: - DELEGATE(Load); - case Expression::Id::StoreId: - DELEGATE(Store); - case Expression::Id::AtomicRMWId: - DELEGATE(AtomicRMW); - case Expression::Id::AtomicCmpxchgId: - DELEGATE(AtomicCmpxchg); - case Expression::Id::AtomicWaitId: - DELEGATE(AtomicWait); - case Expression::Id::AtomicNotifyId: - DELEGATE(AtomicNotify); - case Expression::Id::AtomicFenceId: - DELEGATE(AtomicFence); - case Expression::Id::SIMDExtractId: - DELEGATE(SIMDExtract); - case Expression::Id::SIMDReplaceId: - DELEGATE(SIMDReplace); - case Expression::Id::SIMDShuffleId: - DELEGATE(SIMDShuffle); - case Expression::Id::SIMDTernaryId: - DELEGATE(SIMDTernary); - case Expression::Id::SIMDShiftId: - DELEGATE(SIMDShift); - case Expression::Id::SIMDLoadId: - DELEGATE(SIMDLoad); - case Expression::Id::MemoryInitId: - DELEGATE(MemoryInit); - case Expression::Id::DataDropId: - DELEGATE(DataDrop); - case Expression::Id::MemoryCopyId: - DELEGATE(MemoryCopy); - case Expression::Id::MemoryFillId: - DELEGATE(MemoryFill); - case Expression::Id::ConstId: - DELEGATE(Const); - case Expression::Id::UnaryId: - DELEGATE(Unary); - case Expression::Id::BinaryId: - DELEGATE(Binary); - case Expression::Id::SelectId: - DELEGATE(Select); - case Expression::Id::DropId: - DELEGATE(Drop); - case Expression::Id::ReturnId: - DELEGATE(Return); - case Expression::Id::HostId: - DELEGATE(Host); - case Expression::Id::RefNullId: - DELEGATE(RefNull); - case Expression::Id::RefIsNullId: - DELEGATE(RefIsNull); - case Expression::Id::RefFuncId: - DELEGATE(RefFunc); - case Expression::Id::TryId: - DELEGATE(Try); - case Expression::Id::ThrowId: - DELEGATE(Throw); - case Expression::Id::RethrowId: - DELEGATE(Rethrow); - case Expression::Id::BrOnExnId: - DELEGATE(BrOnExn); - case Expression::Id::NopId: - DELEGATE(Nop); - case Expression::Id::UnreachableId: - DELEGATE(Unreachable); - case Expression::Id::PushId: - DELEGATE(Push); - case Expression::Id::PopId: - DELEGATE(Pop); - case Expression::Id::InvalidId: default: WASM_UNREACHABLE("unexpected expression type"); } - -#undef DELEGATE } }; @@ -206,7 +74,7 @@ template struct OverriddenVisitor { // Expression visitors, which must be overridden -#define UNIMPLEMENTED(CLASS_TO_VISIT) \ +#define DELEGATE(CLASS_TO_VISIT) \ ReturnType visit##CLASS_TO_VISIT(CLASS_TO_VISIT* curr) { \ static_assert( \ &SubType::visit##CLASS_TO_VISIT != \ @@ -215,168 +83,22 @@ WASM_UNREACHABLE("Derived class must implement visit" #CLASS_TO_VISIT); \ } - UNIMPLEMENTED(Block); - UNIMPLEMENTED(If); - UNIMPLEMENTED(Loop); - UNIMPLEMENTED(Break); - UNIMPLEMENTED(Switch); - UNIMPLEMENTED(Call); - UNIMPLEMENTED(CallIndirect); - UNIMPLEMENTED(LocalGet); - UNIMPLEMENTED(LocalSet); - UNIMPLEMENTED(GlobalGet); - UNIMPLEMENTED(GlobalSet); - UNIMPLEMENTED(Load); - UNIMPLEMENTED(Store); - UNIMPLEMENTED(AtomicRMW); - UNIMPLEMENTED(AtomicCmpxchg); - UNIMPLEMENTED(AtomicWait); - UNIMPLEMENTED(AtomicNotify); - UNIMPLEMENTED(AtomicFence); - UNIMPLEMENTED(SIMDExtract); - UNIMPLEMENTED(SIMDReplace); - UNIMPLEMENTED(SIMDShuffle); - UNIMPLEMENTED(SIMDTernary); - UNIMPLEMENTED(SIMDShift); - UNIMPLEMENTED(SIMDLoad); - UNIMPLEMENTED(MemoryInit); - UNIMPLEMENTED(DataDrop); - UNIMPLEMENTED(MemoryCopy); - UNIMPLEMENTED(MemoryFill); - UNIMPLEMENTED(Const); - UNIMPLEMENTED(Unary); - UNIMPLEMENTED(Binary); - UNIMPLEMENTED(Select); - UNIMPLEMENTED(Drop); - UNIMPLEMENTED(Return); - UNIMPLEMENTED(Host); - UNIMPLEMENTED(RefNull); - UNIMPLEMENTED(RefIsNull); - UNIMPLEMENTED(RefFunc); - UNIMPLEMENTED(Try); - UNIMPLEMENTED(Throw); - UNIMPLEMENTED(Rethrow); - UNIMPLEMENTED(BrOnExn); - UNIMPLEMENTED(Nop); - UNIMPLEMENTED(Unreachable); - UNIMPLEMENTED(Push); - UNIMPLEMENTED(Pop); - UNIMPLEMENTED(Export); - UNIMPLEMENTED(Global); - UNIMPLEMENTED(Function); - UNIMPLEMENTED(Table); - UNIMPLEMENTED(Memory); - UNIMPLEMENTED(Event); - UNIMPLEMENTED(Module); - -#undef UNIMPLEMENTED +#include "wasm-delegations.h" ReturnType visit(Expression* curr) { assert(curr); + switch (curr->_id) { #define DELEGATE(CLASS_TO_VISIT) \ - return static_cast(this)->visit##CLASS_TO_VISIT( \ - static_cast(curr)) + case Expression::Id::CLASS_TO_VISIT##Id: \ + return static_cast(this)->visit##CLASS_TO_VISIT( \ + static_cast(curr)) + +#include "wasm-delegations.h" - switch (curr->_id) { - case Expression::Id::BlockId: - DELEGATE(Block); - case Expression::Id::IfId: - DELEGATE(If); - case Expression::Id::LoopId: - DELEGATE(Loop); - case Expression::Id::BreakId: - DELEGATE(Break); - case Expression::Id::SwitchId: - DELEGATE(Switch); - case Expression::Id::CallId: - DELEGATE(Call); - case Expression::Id::CallIndirectId: - DELEGATE(CallIndirect); - case Expression::Id::LocalGetId: - DELEGATE(LocalGet); - case Expression::Id::LocalSetId: - DELEGATE(LocalSet); - case Expression::Id::GlobalGetId: - DELEGATE(GlobalGet); - case Expression::Id::GlobalSetId: - DELEGATE(GlobalSet); - case Expression::Id::LoadId: - DELEGATE(Load); - case Expression::Id::StoreId: - DELEGATE(Store); - case Expression::Id::AtomicRMWId: - DELEGATE(AtomicRMW); - case Expression::Id::AtomicCmpxchgId: - DELEGATE(AtomicCmpxchg); - case Expression::Id::AtomicWaitId: - DELEGATE(AtomicWait); - case Expression::Id::AtomicNotifyId: - DELEGATE(AtomicNotify); - case Expression::Id::AtomicFenceId: - DELEGATE(AtomicFence); - case Expression::Id::SIMDExtractId: - DELEGATE(SIMDExtract); - case Expression::Id::SIMDReplaceId: - DELEGATE(SIMDReplace); - case Expression::Id::SIMDShuffleId: - DELEGATE(SIMDShuffle); - case Expression::Id::SIMDTernaryId: - DELEGATE(SIMDTernary); - case Expression::Id::SIMDShiftId: - DELEGATE(SIMDShift); - case Expression::Id::SIMDLoadId: - DELEGATE(SIMDLoad); - case Expression::Id::MemoryInitId: - DELEGATE(MemoryInit); - case Expression::Id::DataDropId: - DELEGATE(DataDrop); - case Expression::Id::MemoryCopyId: - DELEGATE(MemoryCopy); - case Expression::Id::MemoryFillId: - DELEGATE(MemoryFill); - case Expression::Id::ConstId: - DELEGATE(Const); - case Expression::Id::UnaryId: - DELEGATE(Unary); - case Expression::Id::BinaryId: - DELEGATE(Binary); - case Expression::Id::SelectId: - DELEGATE(Select); - case Expression::Id::DropId: - DELEGATE(Drop); - case Expression::Id::ReturnId: - DELEGATE(Return); - case Expression::Id::HostId: - DELEGATE(Host); - case Expression::Id::RefNullId: - DELEGATE(RefNull); - case Expression::Id::RefIsNullId: - DELEGATE(RefIsNull); - case Expression::Id::RefFuncId: - DELEGATE(RefFunc); - case Expression::Id::TryId: - DELEGATE(Try); - case Expression::Id::ThrowId: - DELEGATE(Throw); - case Expression::Id::RethrowId: - DELEGATE(Rethrow); - case Expression::Id::BrOnExnId: - DELEGATE(BrOnExn); - case Expression::Id::NopId: - DELEGATE(Nop); - case Expression::Id::UnreachableId: - DELEGATE(Unreachable); - case Expression::Id::PushId: - DELEGATE(Push); - case Expression::Id::PopId: - DELEGATE(Pop); - case Expression::Id::InvalidId: default: WASM_UNREACHABLE("unexpected expression type"); } - -#undef DELEGATE } }; @@ -389,144 +111,12 @@ ReturnType visitExpression(Expression* curr) { return ReturnType(); } // redirects - ReturnType visitBlock(Block* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitIf(If* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitLoop(Loop* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitBreak(Break* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitSwitch(Switch* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitCall(Call* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitCallIndirect(CallIndirect* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitLocalGet(LocalGet* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitLocalSet(LocalSet* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitGlobalGet(GlobalGet* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitGlobalSet(GlobalSet* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitLoad(Load* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitStore(Store* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitAtomicRMW(AtomicRMW* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitAtomicCmpxchg(AtomicCmpxchg* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitAtomicWait(AtomicWait* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitAtomicNotify(AtomicNotify* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitAtomicFence(AtomicFence* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitSIMDExtract(SIMDExtract* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitSIMDReplace(SIMDReplace* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitSIMDShuffle(SIMDShuffle* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitSIMDTernary(SIMDTernary* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitSIMDShift(SIMDShift* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitSIMDLoad(SIMDLoad* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitMemoryInit(MemoryInit* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitDataDrop(DataDrop* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitMemoryCopy(MemoryCopy* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitMemoryFill(MemoryFill* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitConst(Const* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitUnary(Unary* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitBinary(Binary* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitSelect(Select* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitDrop(Drop* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitReturn(Return* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitHost(Host* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitRefNull(RefNull* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitRefIsNull(RefIsNull* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitRefFunc(RefFunc* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitTry(Try* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitThrow(Throw* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitRethrow(Rethrow* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitBrOnExn(BrOnExn* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitNop(Nop* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitUnreachable(Unreachable* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitPush(Push* curr) { - return static_cast(this)->visitExpression(curr); - } - ReturnType visitPop(Pop* curr) { - return static_cast(this)->visitExpression(curr); +#define DELEGATE(CLASS_TO_VISIT) \ + ReturnType visit##CLASS_TO_VISIT(CLASS_TO_VISIT* curr) { \ + return static_cast(this)->visitExpression(curr); \ } + +#include "wasm-delegations.h" }; // @@ -700,145 +290,13 @@ // task hooks to call visitors - static void doVisitBlock(SubType* self, Expression** currp) { - self->visitBlock((*currp)->cast()); - } - static void doVisitIf(SubType* self, Expression** currp) { - self->visitIf((*currp)->cast()); - } - static void doVisitLoop(SubType* self, Expression** currp) { - self->visitLoop((*currp)->cast()); - } - static void doVisitBreak(SubType* self, Expression** currp) { - self->visitBreak((*currp)->cast()); - } - static void doVisitSwitch(SubType* self, Expression** currp) { - self->visitSwitch((*currp)->cast()); - } - static void doVisitCall(SubType* self, Expression** currp) { - self->visitCall((*currp)->cast()); - } - static void doVisitCallIndirect(SubType* self, Expression** currp) { - self->visitCallIndirect((*currp)->cast()); - } - static void doVisitLocalGet(SubType* self, Expression** currp) { - self->visitLocalGet((*currp)->cast()); - } - static void doVisitLocalSet(SubType* self, Expression** currp) { - self->visitLocalSet((*currp)->cast()); - } - static void doVisitGlobalGet(SubType* self, Expression** currp) { - self->visitGlobalGet((*currp)->cast()); - } - static void doVisitGlobalSet(SubType* self, Expression** currp) { - self->visitGlobalSet((*currp)->cast()); - } - static void doVisitLoad(SubType* self, Expression** currp) { - self->visitLoad((*currp)->cast()); - } - static void doVisitStore(SubType* self, Expression** currp) { - self->visitStore((*currp)->cast()); - } - static void doVisitAtomicRMW(SubType* self, Expression** currp) { - self->visitAtomicRMW((*currp)->cast()); - } - static void doVisitAtomicCmpxchg(SubType* self, Expression** currp) { - self->visitAtomicCmpxchg((*currp)->cast()); - } - static void doVisitAtomicWait(SubType* self, Expression** currp) { - self->visitAtomicWait((*currp)->cast()); - } - static void doVisitAtomicNotify(SubType* self, Expression** currp) { - self->visitAtomicNotify((*currp)->cast()); - } - static void doVisitAtomicFence(SubType* self, Expression** currp) { - self->visitAtomicFence((*currp)->cast()); - } - static void doVisitSIMDExtract(SubType* self, Expression** currp) { - self->visitSIMDExtract((*currp)->cast()); - } - static void doVisitSIMDReplace(SubType* self, Expression** currp) { - self->visitSIMDReplace((*currp)->cast()); - } - static void doVisitSIMDShuffle(SubType* self, Expression** currp) { - self->visitSIMDShuffle((*currp)->cast()); - } - static void doVisitSIMDTernary(SubType* self, Expression** currp) { - self->visitSIMDTernary((*currp)->cast()); - } - static void doVisitSIMDShift(SubType* self, Expression** currp) { - self->visitSIMDShift((*currp)->cast()); - } - static void doVisitSIMDLoad(SubType* self, Expression** currp) { - self->visitSIMDLoad((*currp)->cast()); - } - static void doVisitMemoryInit(SubType* self, Expression** currp) { - self->visitMemoryInit((*currp)->cast()); - } - static void doVisitDataDrop(SubType* self, Expression** currp) { - self->visitDataDrop((*currp)->cast()); - } - static void doVisitMemoryCopy(SubType* self, Expression** currp) { - self->visitMemoryCopy((*currp)->cast()); - } - static void doVisitMemoryFill(SubType* self, Expression** currp) { - self->visitMemoryFill((*currp)->cast()); - } - static void doVisitConst(SubType* self, Expression** currp) { - self->visitConst((*currp)->cast()); - } - static void doVisitUnary(SubType* self, Expression** currp) { - self->visitUnary((*currp)->cast()); - } - static void doVisitBinary(SubType* self, Expression** currp) { - self->visitBinary((*currp)->cast()); - } - static void doVisitSelect(SubType* self, Expression** currp) { - self->visitSelect((*currp)->cast()->condition); - self->pushTask(SubType::scan, &curr->cast()->ifTrue); - break; - } - case Expression::Id::DropId: { - self->pushTask(SubType::doVisitDrop, currp); - self->pushTask(SubType::scan, &curr->cast()->value); - break; - } - case Expression::Id::ReturnId: { - self->pushTask(SubType::doVisitReturn, currp); - self->maybePushTask(SubType::scan, &curr->cast()->value); - break; - } - case Expression::Id::HostId: { - self->pushTask(SubType::doVisitHost, currp); - auto& list = curr->cast()->operands; - for (int i = int(list.size()) - 1; i >= 0; i--) { - self->pushTask(SubType::scan, &list[i]); - } - break; - } - case Expression::Id::RefNullId: { - self->pushTask(SubType::doVisitRefNull, currp); - break; - } - case Expression::Id::RefIsNullId: { - self->pushTask(SubType::doVisitRefIsNull, currp); - self->pushTask(SubType::scan, &curr->cast()->value); - break; - } - case Expression::Id::RefFuncId: { - self->pushTask(SubType::doVisitRefFunc, currp); - break; - } - case Expression::Id::TryId: { - self->pushTask(SubType::doVisitTry, currp); - self->pushTask(SubType::scan, &curr->cast()->catchBody); - self->pushTask(SubType::scan, &curr->cast()->body); - break; - } - case Expression::Id::ThrowId: { - self->pushTask(SubType::doVisitThrow, currp); - auto& list = curr->cast()->operands; - for (int i = int(list.size()) - 1; i >= 0; i--) { - self->pushTask(SubType::scan, &list[i]); - } - break; - } - case Expression::Id::RethrowId: { - self->pushTask(SubType::doVisitRethrow, currp); - self->pushTask(SubType::scan, &curr->cast()->exnref); - break; - } - case Expression::Id::BrOnExnId: { - self->pushTask(SubType::doVisitBrOnExn, currp); - self->pushTask(SubType::scan, &curr->cast()->exnref); - break; - } - case Expression::Id::NopId: { - self->pushTask(SubType::doVisitNop, currp); - break; - } - case Expression::Id::UnreachableId: { - self->pushTask(SubType::doVisitUnreachable, currp); - break; - } - case Expression::Id::PushId: { - self->pushTask(SubType::doVisitPush, currp); - self->pushTask(SubType::scan, &curr->cast()->value); - break; - } - case Expression::Id::PopId: { - self->pushTask(SubType::doVisitPop, currp); - break; - } - case Expression::Id::NumExpressionIds: - WASM_UNREACHABLE("unexpected expression type"); - } + +#define DELEGATE_ID curr->_id + +#define DELEGATE_START(id) \ + self->pushTask(SubType::doVisit##id, currp); \ + auto* cast = curr->cast(); \ + WASM_UNUSED(cast); + +#define DELEGATE_GET_FIELD(id, name) cast->name + +#define DELEGATE_FIELD_CHILD(id, name) \ + self->pushTask(SubType::scan, &cast->name); + +#define DELEGATE_FIELD_OPTIONAL_CHILD(id, name) \ + self->maybePushTask(SubType::scan, &cast->name); + +#define DELEGATE_FIELD_INT(id, name) +#define DELEGATE_FIELD_INT_ARRAY(id, name) +#define DELEGATE_FIELD_LITERAL(id, name) +#define DELEGATE_FIELD_NAME(id, name) +#define DELEGATE_FIELD_SCOPE_NAME_DEF(id, name) +#define DELEGATE_FIELD_SCOPE_NAME_USE(id, name) +#define DELEGATE_FIELD_SCOPE_NAME_USE_VECTOR(id, name) +#define DELEGATE_FIELD_SIGNATURE(id, name) +#define DELEGATE_FIELD_TYPE(id, name) +#define DELEGATE_FIELD_ADDRESS(id, name) + +#include "wasm-delegations-fields.h" } }; @@ -1190,7 +406,8 @@ self->pushTask(SubType::doPostVisitControlFlow, currp); break; } - default: {} + default: { + } } PostWalker::scan(self, currp); @@ -1203,7 +420,8 @@ self->pushTask(SubType::doPreVisitControlFlow, currp); break; } - default: {} + default: { + } } } }; diff -Nru binaryen-91/src/wasm-type.h binaryen-99/src/wasm-type.h --- binaryen-91/src/wasm-type.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm-type.h 2021-01-07 20:01:06.000000000 +0000 @@ -17,18 +17,52 @@ #ifndef wasm_wasm_type_h #define wasm_wasm_type_h +#include "support/name.h" #include "wasm-features.h" #include #include +// TODO: At various code locations we were assuming that single types are basic +// types, but this is going to change with the introduction of the compound +// Signature, Struct and Array types that will be single but not basic. To +// prepare for this change, the following macro marks affected code locations. +#define TODO_SINGLE_COMPOUND(type) \ + assert(!type.isTuple() && "Unexpected tuple type"); \ + assert(!type.isCompound() && "TODO: handle compound types"); + namespace wasm { +// The types defined in this file. All of them are small and typically passed by +// value except for `Tuple` and `Struct`, which may own an unbounded amount of +// data. +class Type; +class HeapType; +struct Tuple; +struct Signature; +struct Field; +struct Struct; +struct Array; +struct Rtt; + +enum Nullability { NonNullable, Nullable }; +enum Mutability { Immutable, Mutable }; + +// The type used for interning IDs in the public interfaces of Type and +// HeapType. +using TypeID = uint64_t; + class Type { - uint32_t id; - void init(const std::vector&); + // The `id` uniquely represents each type, so type equality is just a + // comparison of the ids. For basic types the `id` is just the `BasicType` + // enum value below, and for constructed types the `id` is the address of the + // canonical representation of the type, making lookups cheap for all types. + // Since `Type` is really just a single integer, it should be passed by value. + // This is a uintptr_t rather than a TypeID (uint64_t) to save memory on + // 32-bit platforms. + uintptr_t id; public: - enum ValueType : uint32_t { + enum BasicType : uint32_t { none, unreachable, i32, @@ -37,54 +71,104 @@ f64, v128, funcref, - anyref, - nullref, + externref, exnref, + anyref, + eqref, + i31ref, }; + static constexpr BasicType _last_basic_type = i31ref; -private: - // Not in the enum because we don't want to have to have a case for it - static constexpr uint32_t last_value_type = exnref; + Type() : id(none) {} -public: - Type() = default; + // BasicType can be implicitly upgraded to Type + constexpr Type(BasicType id) : id(id) {} - // ValueType can be implicitly upgraded to Type - constexpr Type(ValueType id) : id(id){}; + // But converting raw TypeID is more dangerous, so make it explicit + explicit Type(TypeID id) : id(id) {} - // But converting raw uint32_t is more dangerous, so make it explicit - constexpr explicit Type(uint32_t id) : id(id){}; + // Construct tuple from a list of single types + Type(std::initializer_list); - // Construct from lists of elementary types - Type(std::initializer_list types); - explicit Type(const std::vector& types); + // Construct from tuple description + Type(const Tuple&); + Type(Tuple&&); - // Accessors - size_t size() const; - const std::vector& expand() const; + // Construct from a heap type description. Also covers construction from + // Signature, Struct or Array via implicit conversion to HeapType. + Type(HeapType, Nullability nullable); + + // Construct from rtt description + Type(Rtt); // Predicates - constexpr bool isSingle() const { return id >= i32 && id <= last_value_type; } - constexpr bool isMulti() const { return id > last_value_type; } + // Compound Concrete + // Type Basic │ Single│ + // ╒═════════════╦═│═╤═│═╤═│═╤═│═╤═══════╕ + // │ none ║ x │ │ │ │ │ + // │ unreachable ║ x │ │ │ │ │ + // ├─────────────╫───┼───┼───┼───┤───────┤ + // │ i32 ║ x │ │ x │ x │ I │ ┐ Number + // │ i64 ║ x │ │ x │ x │ I │ │ I_nteger + // │ f32 ║ x │ │ x │ x │ F │ │ F_loat + // │ f64 ║ x │ │ x │ x │ F │ │ V_ector + // │ v128 ║ x │ │ x │ x │ V │ ┘ + // ├─ Aliases ───╫───┼───┼───┼───┤───────┤ + // │ funcref ║ x │ │ x │ x │ f n │ ┐ Ref + // │ externref ║ x │ │ x │ x │ f? n │ │ f_unc + // │ exnref ║ x │ │ x │ x │ n │ │ n_ullable + // │ anyref ║ x │ │ x │ x │ f? n │ │ + // │ eqref ║ x │ │ x │ x │ n │ │ ┐ TODO (GC) + // │ i31ref ║ x │ │ x │ x │ │ │ ┘ + // ├─ Compound ──╫───┼───┼───┼───┤───────┤ │ + // │ Ref ║ │ x │ x │ x │ f? n? │◄┘ + // │ Tuple ║ │ x │ │ x │ │ + // │ Rtt ║ │ x │ x │ x │ │ + // └─────────────╨───┴───┴───┴───┴───────┘ + constexpr bool isBasic() const { return id <= _last_basic_type; } + constexpr bool isCompound() const { return id > _last_basic_type; } constexpr bool isConcrete() const { return id >= i32; } constexpr bool isInteger() const { return id == i32 || id == i64; } constexpr bool isFloat() const { return id == f32 || id == f64; } constexpr bool isVector() const { return id == v128; }; constexpr bool isNumber() const { return id >= i32 && id <= v128; } - constexpr bool isRef() const { return id >= funcref && id <= exnref; } - constexpr uint32_t getID() const { return id; } - constexpr ValueType getSingle() const { - assert(!isMulti() && "Unexpected multivalue type"); - return static_cast(id); + bool isTuple() const; + bool isSingle() const { return isConcrete() && !isTuple(); } + bool isRef() const; + bool isFunction() const; + bool isException() const; + bool isNullable() const; + bool isRtt() const; + bool isStruct() const; + bool isArray() const; + +private: + template bool hasPredicate() { + for (const auto& type : *this) { + if ((type.*pred)()) { + return true; + } + } + return false; } - // (In)equality must be defined for both Type and ValueType because it is +public: + bool hasVector() { return hasPredicate<&Type::isVector>(); } + bool hasRef() { return hasPredicate<&Type::isRef>(); } + + constexpr TypeID getID() const { return id; } + constexpr BasicType getBasic() const { + assert(isBasic() && "Basic type expected"); + return static_cast(id); + } + + // (In)equality must be defined for both Type and BasicType because it is // otherwise ambiguous whether to convert both this and other to int or // convert other to Type. bool operator==(const Type& other) const { return id == other.id; } - bool operator==(const ValueType& other) const { return id == other; } + bool operator==(const BasicType& other) const { return id == other; } bool operator!=(const Type& other) const { return id != other.id; } - bool operator!=(const ValueType& other) const { return id != other; } + bool operator!=(const BasicType& other) const { return id != other; } // Order types by some notion of simplicity bool operator<(const Type& other) const; @@ -99,6 +183,13 @@ // Returns the feature set required to use this type. FeatureSet getFeatures() const; + // Gets the heap type corresponding to this type, assuming that it is a + // reference or Rtt type. + HeapType getHeapType() const; + + // Gets the Rtt for this type, assuming that it is an Rtt type. + Rtt getRtt() const; + // Returns a number type based on its size in bytes and whether it is a float // type. static Type get(unsigned byteSize, bool float_); @@ -121,6 +212,59 @@ } std::string toString() const; + + struct Iterator + : std::iterator { + const Type* parent; + size_t index; + Iterator(const Type* parent, size_t index) : parent(parent), index(index) {} + bool operator==(const Iterator& other) const { + return index == other.index && parent == other.parent; + } + bool operator!=(const Iterator& other) const { return !(*this == other); } + Iterator& operator++() { + ++index; + return *this; + } + Iterator& operator--() { + --index; + return *this; + } + Iterator operator++(int) { + auto it = *this; + index++; + return it; + } + Iterator operator--(int) { + auto it = *this; + index--; + return it; + } + Iterator& operator+=(difference_type off) { + index += off; + return *this; + } + Iterator operator+(difference_type off) const { + return Iterator(*this) += off; + } + Iterator& operator-=(difference_type off) { + index -= off; + return *this; + } + Iterator operator-(difference_type off) const { + return Iterator(*this) -= off; + } + difference_type operator-(const Iterator& other) const { + assert(parent == other.parent); + return index - other.index; + } + const value_type& operator*() const; + }; + + Iterator begin() const { return Iterator(this, 0); } + Iterator end() const; + size_t size() const { return end() - begin(); } + const Type& operator[](size_t i) const; }; // Wrapper type for formatting types as "(param i32 i64 f32)" @@ -137,6 +281,92 @@ std::string toString() const; }; +class HeapType { + // Unlike `Type`, which represents the types of values on the WebAssembly + // stack, `HeapType` is used to describe the structures that reference types + // refer to. HeapTypes are canonicalized and interned exactly like Types and + // should also be passed by value. + uintptr_t id; + +public: + enum BasicHeapType : uint32_t { + func, + ext, + exn, + any, + eq, + i31, + }; + static constexpr BasicHeapType _last_basic_type = i31; + + // BasicHeapType can be implicitly upgraded to HeapType + constexpr HeapType(BasicHeapType id) : id(id) {} + + // But converting raw TypeID is more dangerous, so make it explicit + explicit HeapType(TypeID id) : id(id) {} + + HeapType(Signature signature); + HeapType(const Struct& struct_); + HeapType(Struct&& struct_); + HeapType(Array array); + + constexpr bool isBasic() const { return id <= _last_basic_type; } + constexpr bool isCompound() const { return id > _last_basic_type; } + bool isFunction() const; + bool isSignature() const; + bool isStruct() const; + bool isArray() const; + + Signature getSignature() const; + const Struct& getStruct() const; + Array getArray() const; + + constexpr TypeID getID() const { return id; } + constexpr BasicHeapType getBasic() const { + assert(isBasic() && "Basic heap type expected"); + return static_cast(id); + } + + // (In)equality must be defined for both HeapType and BasicHeapType because it + // is otherwise ambiguous whether to convert both this and other to int or + // convert other to HeapType. + bool operator==(const HeapType& other) const { return id == other.id; } + bool operator==(const BasicHeapType& other) const { return id == other; } + bool operator!=(const HeapType& other) const { return id != other.id; } + bool operator!=(const BasicHeapType& other) const { return id != other; } + + bool operator<(const HeapType& other) const; + std::string toString() const; +}; + +typedef std::vector TypeList; + +// Passed by reference rather than by value because it can own an unbounded +// amount of data. +struct Tuple { + TypeList types; + Tuple() : types() {} + Tuple(std::initializer_list types) : types(types) { validate(); } + Tuple(const TypeList& types) : types(types) { validate(); } + Tuple(TypeList&& types) : types(std::move(types)) { validate(); } + bool operator==(const Tuple& other) const { return types == other.types; } + bool operator!=(const Tuple& other) const { return !(*this == other); } + bool operator<(const Tuple& other) const { return types < other.types; } + std::string toString() const; + + // Prevent accidental copies + Tuple& operator=(const Tuple&) = delete; + +private: + void validate() { +#ifndef NDEBUG + for (auto type : types) { + assert(type.isSingle()); + } +#endif + } +}; + struct Signature { Type params; Type results; @@ -147,18 +377,171 @@ } bool operator!=(const Signature& other) const { return !(*this == other); } bool operator<(const Signature& other) const; + std::string toString() const; +}; + +struct Field { + Type type; + enum PackedType { + not_packed, + i8, + i16, + } packedType; // applicable iff type=i32 + Mutability mutable_; + Name name; + + Field(Type type, Mutability mutable_, Name name = Name()) + : type(type), packedType(not_packed), mutable_(mutable_), name(name) {} + Field(PackedType packedType, Mutability mutable_, Name name = Name()) + : type(Type::i32), packedType(packedType), mutable_(mutable_), name(name) {} + + constexpr bool isPacked() const { + if (packedType != not_packed) { + assert(type == Type::i32 && "unexpected type"); + return true; + } + return false; + } + + bool operator==(const Field& other) const { + // Note that the name is not checked here - it is pure metadata for printing + // purposes only. + return type == other.type && packedType == other.packedType && + mutable_ == other.mutable_; + } + bool operator!=(const Field& other) const { return !(*this == other); } + bool operator<(const Field& other) const; + std::string toString() const; +}; + +typedef std::vector FieldList; + +// Passed by reference rather than by value because it can own an unbounded +// amount of data. +struct Struct { + FieldList fields; + Struct(const Struct& other) : fields(other.fields) {} + Struct(const FieldList& fields) : fields(fields) {} + Struct(FieldList&& fields) : fields(std::move(fields)) {} + bool operator==(const Struct& other) const { return fields == other.fields; } + bool operator!=(const Struct& other) const { return !(*this == other); } + bool operator<(const Struct& other) const { return fields < other.fields; } + std::string toString() const; + + // Prevent accidental copies + Struct& operator=(const Struct&) = delete; +}; + +struct Array { + Field element; + Array(const Array& other) : element(other.element) {} + Array(Field element) : element(element) {} + bool operator==(const Array& other) const { return element == other.element; } + bool operator!=(const Array& other) const { return !(*this == other); } + bool operator<(const Array& other) const { return element < other.element; } + std::string toString() const; }; -std::ostream& operator<<(std::ostream& os, Type t); -std::ostream& operator<<(std::ostream& os, ParamType t); -std::ostream& operator<<(std::ostream& os, ResultType t); -std::ostream& operator<<(std::ostream& os, Signature t); +struct Rtt { + // An Rtt can have no depth specified + static constexpr uint32_t NoDepth = -1; + uint32_t depth; + HeapType heapType; + Rtt(HeapType heapType) : depth(NoDepth), heapType(heapType) {} + Rtt(uint32_t depth, HeapType heapType) : depth(depth), heapType(heapType) {} + bool operator==(const Rtt& other) const { + return depth == other.depth && heapType == other.heapType; + } + bool operator!=(const Rtt& other) const { return !(*this == other); } + bool operator<(const Rtt& other) const; + bool hasDepth() { return depth != uint32_t(NoDepth); } + std::string toString() const; +}; + +// TypeBuilder - allows for the construction of recursive types. Contains a +// table of `n` mutable HeapTypes and can construct temporary types that are +// backed by those HeapTypes, refering to them by reference. Those temporary +// types are owned by the TypeBuilder and should only be used in the +// construction of HeapTypes to insert into the TypeBuilder. Temporary types +// should never be used in the construction of normal Types, only other +// temporary types. +struct TypeBuilder { + struct Impl; + std::unique_ptr impl; + + TypeBuilder(size_t n); + ~TypeBuilder(); + + TypeBuilder(TypeBuilder& other) = delete; + TypeBuilder(TypeBuilder&& other) = delete; + TypeBuilder& operator=(TypeBuilder&) = delete; + + // Sets the heap type at index `i`. May only be called before `build`. + void setHeapType(size_t i, Signature signature); + void setHeapType(size_t i, const Struct& struct_); + void setHeapType(size_t i, Struct&& struct_); + void setHeapType(size_t i, Array array); + + // Gets a temporary type or heap type for use in initializing the + // TypeBuilder's HeapTypes. Temporary Ref and Rtt types are backed by the + // HeapType at index `i`. + Type getTempTupleType(const Tuple&); + Type getTempRefType(size_t i, Nullability nullable); + Type getTempRttType(size_t i, uint32_t depth); + + // Canonicalizes and returns all of the heap types. May only be called once + // all of the heap types have been initialized with `setHeapType`. + std::vector build(); +}; + +std::ostream& operator<<(std::ostream&, Type); +std::ostream& operator<<(std::ostream&, ParamType); +std::ostream& operator<<(std::ostream&, ResultType); +std::ostream& operator<<(std::ostream&, Tuple); +std::ostream& operator<<(std::ostream&, Signature); +std::ostream& operator<<(std::ostream&, Field); +std::ostream& operator<<(std::ostream&, Struct); +std::ostream& operator<<(std::ostream&, Array); +std::ostream& operator<<(std::ostream&, HeapType); +std::ostream& operator<<(std::ostream&, Rtt); } // namespace wasm -template<> class std::hash { +namespace std { + +template<> class hash { +public: + size_t operator()(const wasm::Type&) const; +}; +template<> class hash { +public: + size_t operator()(const wasm::Tuple&) const; +}; +template<> class hash { public: - size_t operator()(const wasm::Signature& sig) const; + size_t operator()(const wasm::Signature&) const; }; +template<> class hash { +public: + size_t operator()(const wasm::Field&) const; +}; +template<> class hash { +public: + size_t operator()(const wasm::Struct&) const; +}; +template<> class hash { +public: + size_t operator()(const wasm::Array&) const; +}; +template<> class hash { +public: + size_t operator()(const wasm::HeapType&) const; +}; +template<> class hash { +public: + size_t operator()(const wasm::Rtt&) const; +}; + +} // namespace std #endif // wasm_wasm_type_h diff -Nru binaryen-91/src/wasm-validator.h binaryen-99/src/wasm-validator.h --- binaryen-91/src/wasm-validator.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/src/wasm-validator.h 2021-01-07 20:01:06.000000000 +0000 @@ -43,7 +43,6 @@ #include #include -#include "wasm-printing.h" #include "wasm.h" namespace wasm { diff -Nru binaryen-91/test/anyref.wast.fromBinary binaryen-99/test/anyref.wast.fromBinary --- binaryen-91/test/anyref.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/anyref.wast.fromBinary 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -(module - (type $anyref_=>_anyref (func (param anyref) (result anyref))) - (import "env" "test2" (global $gimport$1 anyref)) - (import "env" "test1" (func $test1 (param anyref) (result anyref))) - (memory $0 1 1) - (export "test1" (func $test1)) - (export "test2" (global $gimport$1)) - (func $anyref_test (; 1 ;) (param $0 anyref) (result anyref) - (local $1 anyref) - (local.set $1 - (call $test1 - (local.get $0) - ) - ) - (return - (local.get $1) - ) - ) -) - diff -Nru binaryen-91/test/anyref.wast.fromBinary.noDebugInfo binaryen-99/test/anyref.wast.fromBinary.noDebugInfo --- binaryen-91/test/anyref.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/anyref.wast.fromBinary.noDebugInfo 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -(module - (type $anyref_=>_anyref (func (param anyref) (result anyref))) - (import "env" "test2" (global $gimport$1 anyref)) - (import "env" "test1" (func $fimport$0 (param anyref) (result anyref))) - (memory $0 1 1) - (export "test1" (func $fimport$0)) - (export "test2" (global $gimport$1)) - (func $0 (; 1 ;) (param $0 anyref) (result anyref) - (local $1 anyref) - (local.set $1 - (call $fimport$0 - (local.get $0) - ) - ) - (return - (local.get $1) - ) - ) -) - diff -Nru binaryen-91/test/anyref.wast.from-wast binaryen-99/test/anyref.wast.from-wast --- binaryen-91/test/anyref.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/anyref.wast.from-wast 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -(module - (type $anyref_=>_anyref (func (param anyref) (result anyref))) - (import "env" "test2" (global $test2 anyref)) - (import "env" "test1" (func $test1 (param anyref) (result anyref))) - (memory $0 1 1) - (export "test1" (func $test1)) - (export "test2" (global $test2)) - (func $anyref_test (; 1 ;) (param $0 anyref) (result anyref) - (local $1 anyref) - (local.set $1 - (call $test1 - (local.get $0) - ) - ) - (return - (local.get $1) - ) - ) -) diff -Nru binaryen-91/test/atomics64.wast binaryen-99/test/atomics64.wast --- binaryen-91/test/atomics64.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/atomics64.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,188 @@ +(module + (type $0 (func)) + (memory $0 (shared i64 23 256)) + (func $atomic-loadstore (type $0) + (local $0 i64) + (local $1 i64) + (local $2 i32) + (drop + (i32.atomic.load8_u offset=4 + (local.get $0) + ) + ) + (drop + (i32.atomic.load16_u offset=4 + (local.get $0) + ) + ) + (drop + (i32.atomic.load offset=4 + (local.get $0) + ) + ) + (drop + (i64.atomic.load8_u + (local.get $0) + ) + ) + (drop + (i64.atomic.load16_u + (local.get $0) + ) + ) + (drop + (i64.atomic.load32_u + (local.get $0) + ) + ) + (drop + (i64.atomic.load + (local.get $0) + ) + ) + (i32.atomic.store offset=4 align=4 + (local.get $0) + (local.get $2) + ) + (i32.atomic.store8 offset=4 align=1 + (local.get $0) + (local.get $2) + ) + (i32.atomic.store16 offset=4 + (local.get $0) + (local.get $2) + ) + (i64.atomic.store offset=4 + (local.get $0) + (local.get $1) + ) + (i64.atomic.store8 offset=4 + (local.get $0) + (local.get $1) + ) + (i64.atomic.store16 offset=4 + (local.get $0) + (local.get $1) + ) + (i64.atomic.store32 offset=4 + (local.get $0) + (local.get $1) + ) + ) + (func $atomic-rmw (type $0) + (local $0 i64) + (local $1 i64) + (local $2 i32) + (drop + (i32.atomic.rmw.add offset=4 + (local.get $0) + (local.get $2) + ) + ) + (drop + (i32.atomic.rmw8.add_u offset=4 + (local.get $0) + (local.get $2) + ) + ) + (drop + (i32.atomic.rmw16.and_u align=2 + (local.get $0) + (local.get $2) + ) + ) + (drop + (i64.atomic.rmw32.or_u + (local.get $0) + (local.get $1) + ) + ) + (drop + (i32.atomic.rmw8.xchg_u align=1 + (local.get $0) + (local.get $2) + ) + ) + ) + (func $atomic-cmpxchg (type $0) + (local $0 i64) + (local $1 i64) + (local $2 i32) + (drop + (i32.atomic.rmw.cmpxchg offset=4 + (local.get $0) + (local.get $2) + (local.get $2) + ) + ) + (drop + (i32.atomic.rmw8.cmpxchg_u + (local.get $0) + (local.get $2) + (local.get $2) + ) + ) + (drop + (i64.atomic.rmw.cmpxchg offset=4 + (local.get $0) + (local.get $1) + (local.get $1) + ) + ) + (drop + (i64.atomic.rmw32.cmpxchg_u align=4 + (local.get $0) + (local.get $1) + (local.get $1) + ) + ) + ) + (func $atomic-wait-notify (type $0) + (local $0 i64) + (local $1 i64) + (local $2 i32) + (drop + (memory.atomic.wait32 + (local.get $0) + (local.get $2) + (local.get $1) + ) + ) + (drop + (memory.atomic.wait32 offset=4 align=4 + (local.get $0) + (local.get $2) + (local.get $1) + ) + ) + (drop + (memory.atomic.notify + (local.get $0) + (local.get $2) + ) + ) + (drop + (memory.atomic.notify offset=24 align=4 + (local.get $0) + (local.get $2) + ) + ) + (drop + (memory.atomic.wait64 + (local.get $0) + (local.get $1) + (local.get $1) + ) + ) + (drop + (memory.atomic.wait64 align=8 offset=16 + (local.get $0) + (local.get $1) + (local.get $1) + ) + ) + ) + (func $atomic-fence (type $0) + (atomic.fence) + ) +) diff -Nru binaryen-91/test/atomics64.wast.fromBinary binaryen-99/test/atomics64.wast.fromBinary --- binaryen-91/test/atomics64.wast.fromBinary 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/atomics64.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,189 @@ +(module + (type $none_=>_none (func)) + (memory $0 (shared i64 23 256)) + (func $atomic-loadstore + (local $0 i32) + (local $1 i64) + (local $2 i64) + (drop + (i32.atomic.load8_u offset=4 + (local.get $1) + ) + ) + (drop + (i32.atomic.load16_u offset=4 + (local.get $1) + ) + ) + (drop + (i32.atomic.load offset=4 + (local.get $1) + ) + ) + (drop + (i64.atomic.load8_u + (local.get $1) + ) + ) + (drop + (i64.atomic.load16_u + (local.get $1) + ) + ) + (drop + (i64.atomic.load32_u + (local.get $1) + ) + ) + (drop + (i64.atomic.load + (local.get $1) + ) + ) + (i32.atomic.store offset=4 + (local.get $1) + (local.get $0) + ) + (i32.atomic.store8 offset=4 + (local.get $1) + (local.get $0) + ) + (i32.atomic.store16 offset=4 + (local.get $1) + (local.get $0) + ) + (i64.atomic.store offset=4 + (local.get $1) + (local.get $2) + ) + (i64.atomic.store8 offset=4 + (local.get $1) + (local.get $2) + ) + (i64.atomic.store16 offset=4 + (local.get $1) + (local.get $2) + ) + (i64.atomic.store32 offset=4 + (local.get $1) + (local.get $2) + ) + ) + (func $atomic-rmw + (local $0 i32) + (local $1 i64) + (local $2 i64) + (drop + (i32.atomic.rmw.add offset=4 + (local.get $1) + (local.get $0) + ) + ) + (drop + (i32.atomic.rmw8.add_u offset=4 + (local.get $1) + (local.get $0) + ) + ) + (drop + (i32.atomic.rmw16.and_u + (local.get $1) + (local.get $0) + ) + ) + (drop + (i64.atomic.rmw32.or_u + (local.get $1) + (local.get $2) + ) + ) + (drop + (i32.atomic.rmw8.xchg_u + (local.get $1) + (local.get $0) + ) + ) + ) + (func $atomic-cmpxchg + (local $0 i32) + (local $1 i64) + (local $2 i64) + (drop + (i32.atomic.rmw.cmpxchg offset=4 + (local.get $1) + (local.get $0) + (local.get $0) + ) + ) + (drop + (i32.atomic.rmw8.cmpxchg_u + (local.get $1) + (local.get $0) + (local.get $0) + ) + ) + (drop + (i64.atomic.rmw.cmpxchg offset=4 + (local.get $1) + (local.get $2) + (local.get $2) + ) + ) + (drop + (i64.atomic.rmw32.cmpxchg_u + (local.get $1) + (local.get $2) + (local.get $2) + ) + ) + ) + (func $atomic-wait-notify + (local $0 i32) + (local $1 i64) + (local $2 i64) + (drop + (memory.atomic.wait32 + (local.get $1) + (local.get $0) + (local.get $2) + ) + ) + (drop + (memory.atomic.wait32 offset=4 + (local.get $1) + (local.get $0) + (local.get $2) + ) + ) + (drop + (memory.atomic.notify + (local.get $1) + (local.get $0) + ) + ) + (drop + (memory.atomic.notify offset=24 + (local.get $1) + (local.get $0) + ) + ) + (drop + (memory.atomic.wait64 + (local.get $1) + (local.get $2) + (local.get $2) + ) + ) + (drop + (memory.atomic.wait64 offset=16 + (local.get $1) + (local.get $2) + (local.get $2) + ) + ) + ) + (func $atomic-fence + (atomic.fence) + ) +) + diff -Nru binaryen-91/test/atomics64.wast.fromBinary.noDebugInfo binaryen-99/test/atomics64.wast.fromBinary.noDebugInfo --- binaryen-91/test/atomics64.wast.fromBinary.noDebugInfo 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/atomics64.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,189 @@ +(module + (type $none_=>_none (func)) + (memory $0 (shared i64 23 256)) + (func $0 + (local $0 i32) + (local $1 i64) + (local $2 i64) + (drop + (i32.atomic.load8_u offset=4 + (local.get $1) + ) + ) + (drop + (i32.atomic.load16_u offset=4 + (local.get $1) + ) + ) + (drop + (i32.atomic.load offset=4 + (local.get $1) + ) + ) + (drop + (i64.atomic.load8_u + (local.get $1) + ) + ) + (drop + (i64.atomic.load16_u + (local.get $1) + ) + ) + (drop + (i64.atomic.load32_u + (local.get $1) + ) + ) + (drop + (i64.atomic.load + (local.get $1) + ) + ) + (i32.atomic.store offset=4 + (local.get $1) + (local.get $0) + ) + (i32.atomic.store8 offset=4 + (local.get $1) + (local.get $0) + ) + (i32.atomic.store16 offset=4 + (local.get $1) + (local.get $0) + ) + (i64.atomic.store offset=4 + (local.get $1) + (local.get $2) + ) + (i64.atomic.store8 offset=4 + (local.get $1) + (local.get $2) + ) + (i64.atomic.store16 offset=4 + (local.get $1) + (local.get $2) + ) + (i64.atomic.store32 offset=4 + (local.get $1) + (local.get $2) + ) + ) + (func $1 + (local $0 i32) + (local $1 i64) + (local $2 i64) + (drop + (i32.atomic.rmw.add offset=4 + (local.get $1) + (local.get $0) + ) + ) + (drop + (i32.atomic.rmw8.add_u offset=4 + (local.get $1) + (local.get $0) + ) + ) + (drop + (i32.atomic.rmw16.and_u + (local.get $1) + (local.get $0) + ) + ) + (drop + (i64.atomic.rmw32.or_u + (local.get $1) + (local.get $2) + ) + ) + (drop + (i32.atomic.rmw8.xchg_u + (local.get $1) + (local.get $0) + ) + ) + ) + (func $2 + (local $0 i32) + (local $1 i64) + (local $2 i64) + (drop + (i32.atomic.rmw.cmpxchg offset=4 + (local.get $1) + (local.get $0) + (local.get $0) + ) + ) + (drop + (i32.atomic.rmw8.cmpxchg_u + (local.get $1) + (local.get $0) + (local.get $0) + ) + ) + (drop + (i64.atomic.rmw.cmpxchg offset=4 + (local.get $1) + (local.get $2) + (local.get $2) + ) + ) + (drop + (i64.atomic.rmw32.cmpxchg_u + (local.get $1) + (local.get $2) + (local.get $2) + ) + ) + ) + (func $3 + (local $0 i32) + (local $1 i64) + (local $2 i64) + (drop + (memory.atomic.wait32 + (local.get $1) + (local.get $0) + (local.get $2) + ) + ) + (drop + (memory.atomic.wait32 offset=4 + (local.get $1) + (local.get $0) + (local.get $2) + ) + ) + (drop + (memory.atomic.notify + (local.get $1) + (local.get $0) + ) + ) + (drop + (memory.atomic.notify offset=24 + (local.get $1) + (local.get $0) + ) + ) + (drop + (memory.atomic.wait64 + (local.get $1) + (local.get $2) + (local.get $2) + ) + ) + (drop + (memory.atomic.wait64 offset=16 + (local.get $1) + (local.get $2) + (local.get $2) + ) + ) + ) + (func $4 + (atomic.fence) + ) +) + diff -Nru binaryen-91/test/atomics64.wast.from-wast binaryen-99/test/atomics64.wast.from-wast --- binaryen-91/test/atomics64.wast.from-wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/atomics64.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,188 @@ +(module + (type $none_=>_none (func)) + (memory $0 (shared i64 23 256)) + (func $atomic-loadstore + (local $0 i64) + (local $1 i64) + (local $2 i32) + (drop + (i32.atomic.load8_u offset=4 + (local.get $0) + ) + ) + (drop + (i32.atomic.load16_u offset=4 + (local.get $0) + ) + ) + (drop + (i32.atomic.load offset=4 + (local.get $0) + ) + ) + (drop + (i64.atomic.load8_u + (local.get $0) + ) + ) + (drop + (i64.atomic.load16_u + (local.get $0) + ) + ) + (drop + (i64.atomic.load32_u + (local.get $0) + ) + ) + (drop + (i64.atomic.load + (local.get $0) + ) + ) + (i32.atomic.store offset=4 + (local.get $0) + (local.get $2) + ) + (i32.atomic.store8 offset=4 + (local.get $0) + (local.get $2) + ) + (i32.atomic.store16 offset=4 + (local.get $0) + (local.get $2) + ) + (i64.atomic.store offset=4 + (local.get $0) + (local.get $1) + ) + (i64.atomic.store8 offset=4 + (local.get $0) + (local.get $1) + ) + (i64.atomic.store16 offset=4 + (local.get $0) + (local.get $1) + ) + (i64.atomic.store32 offset=4 + (local.get $0) + (local.get $1) + ) + ) + (func $atomic-rmw + (local $0 i64) + (local $1 i64) + (local $2 i32) + (drop + (i32.atomic.rmw.add offset=4 + (local.get $0) + (local.get $2) + ) + ) + (drop + (i32.atomic.rmw8.add_u offset=4 + (local.get $0) + (local.get $2) + ) + ) + (drop + (i32.atomic.rmw16.and_u + (local.get $0) + (local.get $2) + ) + ) + (drop + (i64.atomic.rmw32.or_u + (local.get $0) + (local.get $1) + ) + ) + (drop + (i32.atomic.rmw8.xchg_u + (local.get $0) + (local.get $2) + ) + ) + ) + (func $atomic-cmpxchg + (local $0 i64) + (local $1 i64) + (local $2 i32) + (drop + (i32.atomic.rmw.cmpxchg offset=4 + (local.get $0) + (local.get $2) + (local.get $2) + ) + ) + (drop + (i32.atomic.rmw8.cmpxchg_u + (local.get $0) + (local.get $2) + (local.get $2) + ) + ) + (drop + (i64.atomic.rmw.cmpxchg offset=4 + (local.get $0) + (local.get $1) + (local.get $1) + ) + ) + (drop + (i64.atomic.rmw32.cmpxchg_u + (local.get $0) + (local.get $1) + (local.get $1) + ) + ) + ) + (func $atomic-wait-notify + (local $0 i64) + (local $1 i64) + (local $2 i32) + (drop + (memory.atomic.wait32 + (local.get $0) + (local.get $2) + (local.get $1) + ) + ) + (drop + (memory.atomic.wait32 offset=4 + (local.get $0) + (local.get $2) + (local.get $1) + ) + ) + (drop + (memory.atomic.notify + (local.get $0) + (local.get $2) + ) + ) + (drop + (memory.atomic.notify offset=24 + (local.get $0) + (local.get $2) + ) + ) + (drop + (memory.atomic.wait64 + (local.get $0) + (local.get $1) + (local.get $1) + ) + ) + (drop + (memory.atomic.wait64 offset=16 + (local.get $0) + (local.get $1) + (local.get $1) + ) + ) + ) + (func $atomic-fence + (atomic.fence) + ) +) diff -Nru binaryen-91/test/atomics-unshared.wast binaryen-99/test/atomics-unshared.wast --- binaryen-91/test/atomics-unshared.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/atomics-unshared.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,10 @@ +(module + (memory $0 1 1) + (func $foo + (drop (i32.atomic.rmw.cmpxchg + (i32.const 0) + (i32.const 0) + (i32.const 0) + )) + ) +) diff -Nru binaryen-91/test/atomics-unshared.wast.fromBinary binaryen-99/test/atomics-unshared.wast.fromBinary --- binaryen-91/test/atomics-unshared.wast.fromBinary 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/atomics-unshared.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,14 @@ +(module + (type $none_=>_none (func)) + (memory $0 1 1) + (func $foo + (drop + (i32.atomic.rmw.cmpxchg + (i32.const 0) + (i32.const 0) + (i32.const 0) + ) + ) + ) +) + diff -Nru binaryen-91/test/atomics-unshared.wast.fromBinary.noDebugInfo binaryen-99/test/atomics-unshared.wast.fromBinary.noDebugInfo --- binaryen-91/test/atomics-unshared.wast.fromBinary.noDebugInfo 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/atomics-unshared.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,14 @@ +(module + (type $none_=>_none (func)) + (memory $0 1 1) + (func $0 + (drop + (i32.atomic.rmw.cmpxchg + (i32.const 0) + (i32.const 0) + (i32.const 0) + ) + ) + ) +) + diff -Nru binaryen-91/test/atomics-unshared.wast.from-wast binaryen-99/test/atomics-unshared.wast.from-wast --- binaryen-91/test/atomics-unshared.wast.from-wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/atomics-unshared.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,13 @@ +(module + (type $none_=>_none (func)) + (memory $0 1 1) + (func $foo + (drop + (i32.atomic.rmw.cmpxchg + (i32.const 0) + (i32.const 0) + (i32.const 0) + ) + ) + ) +) diff -Nru binaryen-91/test/atomics.wast binaryen-99/test/atomics.wast --- binaryen-91/test/atomics.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/atomics.wast 2021-01-07 20:01:06.000000000 +0000 @@ -138,40 +138,40 @@ (local $0 i32) (local $1 i64) (drop - (i32.atomic.wait + (memory.atomic.wait32 (local.get $0) (local.get $0) (local.get $1) ) ) (drop - (i32.atomic.wait offset=4 align=4 + (memory.atomic.wait32 offset=4 align=4 (local.get $0) (local.get $0) (local.get $1) ) ) (drop - (atomic.notify + (memory.atomic.notify (local.get $0) (local.get $0) ) ) (drop - (atomic.notify offset=24 align=4 + (memory.atomic.notify offset=24 align=4 (local.get $0) (local.get $0) ) ) (drop - (i64.atomic.wait + (memory.atomic.wait64 (local.get $0) (local.get $1) (local.get $1) ) ) (drop - (i64.atomic.wait align=8 offset=16 + (memory.atomic.wait64 align=8 offset=16 (local.get $0) (local.get $1) (local.get $1) diff -Nru binaryen-91/test/atomics.wast.fromBinary binaryen-99/test/atomics.wast.fromBinary --- binaryen-91/test/atomics.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/atomics.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (memory $0 (shared 23 256)) - (func $atomic-loadstore (; 0 ;) + (func $atomic-loadstore (local $0 i32) (local $1 i64) (drop @@ -68,7 +68,7 @@ (local.get $1) ) ) - (func $atomic-rmw (; 1 ;) + (func $atomic-rmw (local $0 i32) (local $1 i64) (drop @@ -102,7 +102,7 @@ ) ) ) - (func $atomic-cmpxchg (; 2 ;) + (func $atomic-cmpxchg (local $0 i32) (local $1 i64) (drop @@ -134,51 +134,51 @@ ) ) ) - (func $atomic-wait-notify (; 3 ;) + (func $atomic-wait-notify (local $0 i32) (local $1 i64) (drop - (i32.atomic.wait + (memory.atomic.wait32 (local.get $0) (local.get $0) (local.get $1) ) ) (drop - (i32.atomic.wait offset=4 + (memory.atomic.wait32 offset=4 (local.get $0) (local.get $0) (local.get $1) ) ) (drop - (atomic.notify + (memory.atomic.notify (local.get $0) (local.get $0) ) ) (drop - (atomic.notify offset=24 + (memory.atomic.notify offset=24 (local.get $0) (local.get $0) ) ) (drop - (i64.atomic.wait + (memory.atomic.wait64 (local.get $0) (local.get $1) (local.get $1) ) ) (drop - (i64.atomic.wait offset=16 + (memory.atomic.wait64 offset=16 (local.get $0) (local.get $1) (local.get $1) ) ) ) - (func $atomic-fence (; 4 ;) + (func $atomic-fence (atomic.fence) ) ) diff -Nru binaryen-91/test/atomics.wast.fromBinary.noDebugInfo binaryen-99/test/atomics.wast.fromBinary.noDebugInfo --- binaryen-91/test/atomics.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/atomics.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (memory $0 (shared 23 256)) - (func $0 (; 0 ;) + (func $0 (local $0 i32) (local $1 i64) (drop @@ -68,7 +68,7 @@ (local.get $1) ) ) - (func $1 (; 1 ;) + (func $1 (local $0 i32) (local $1 i64) (drop @@ -102,7 +102,7 @@ ) ) ) - (func $2 (; 2 ;) + (func $2 (local $0 i32) (local $1 i64) (drop @@ -134,51 +134,51 @@ ) ) ) - (func $3 (; 3 ;) + (func $3 (local $0 i32) (local $1 i64) (drop - (i32.atomic.wait + (memory.atomic.wait32 (local.get $0) (local.get $0) (local.get $1) ) ) (drop - (i32.atomic.wait offset=4 + (memory.atomic.wait32 offset=4 (local.get $0) (local.get $0) (local.get $1) ) ) (drop - (atomic.notify + (memory.atomic.notify (local.get $0) (local.get $0) ) ) (drop - (atomic.notify offset=24 + (memory.atomic.notify offset=24 (local.get $0) (local.get $0) ) ) (drop - (i64.atomic.wait + (memory.atomic.wait64 (local.get $0) (local.get $1) (local.get $1) ) ) (drop - (i64.atomic.wait offset=16 + (memory.atomic.wait64 offset=16 (local.get $0) (local.get $1) (local.get $1) ) ) ) - (func $4 (; 4 ;) + (func $4 (atomic.fence) ) ) diff -Nru binaryen-91/test/atomics.wast.from-wast binaryen-99/test/atomics.wast.from-wast --- binaryen-91/test/atomics.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/atomics.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (memory $0 (shared 23 256)) - (func $atomic-loadstore (; 0 ;) + (func $atomic-loadstore (local $0 i32) (local $1 i64) (drop @@ -68,7 +68,7 @@ (local.get $1) ) ) - (func $atomic-rmw (; 1 ;) + (func $atomic-rmw (local $0 i32) (local $1 i64) (drop @@ -102,7 +102,7 @@ ) ) ) - (func $atomic-cmpxchg (; 2 ;) + (func $atomic-cmpxchg (local $0 i32) (local $1 i64) (drop @@ -134,51 +134,51 @@ ) ) ) - (func $atomic-wait-notify (; 3 ;) + (func $atomic-wait-notify (local $0 i32) (local $1 i64) (drop - (i32.atomic.wait + (memory.atomic.wait32 (local.get $0) (local.get $0) (local.get $1) ) ) (drop - (i32.atomic.wait offset=4 + (memory.atomic.wait32 offset=4 (local.get $0) (local.get $0) (local.get $1) ) ) (drop - (atomic.notify + (memory.atomic.notify (local.get $0) (local.get $0) ) ) (drop - (atomic.notify offset=24 + (memory.atomic.notify offset=24 (local.get $0) (local.get $0) ) ) (drop - (i64.atomic.wait + (memory.atomic.wait64 (local.get $0) (local.get $1) (local.get $1) ) ) (drop - (i64.atomic.wait offset=16 + (memory.atomic.wait64 offset=16 (local.get $0) (local.get $1) (local.get $1) ) ) ) - (func $atomic-fence (; 4 ;) + (func $atomic-fence (atomic.fence) ) ) diff -Nru binaryen-91/test/bad_params.asm.js binaryen-99/test/bad_params.asm.js --- binaryen-91/test/bad_params.asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/bad_params.asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -function asm(global, env, buffer) { - "use asm"; - - function missing(x, y) { - x = x | 0; - y = +y; - } - - function extra(x, y) { - x = x | 0; - y = +y; - } - - function mix(a) { - a = a | 0; - } - - function ex() { - missing(); - missing(1); - extra(1, +2, 3); - extra(1, +2, 3, 4); - mix(); - mix(1); - mix(1, 2); - } - - return { ex: ex }; -} - diff -Nru binaryen-91/test/bad_params.fromasm binaryen-99/test/bad_params.fromasm --- binaryen-91/test/bad_params.fromasm 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/bad_params.fromasm 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -(module - (type $none_=>_none (func)) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "bad_params.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (export "ex" (func $ex)) - (func $ex (; 0 ;) (; has Stack IR ;) - (nop) - ) -) diff -Nru binaryen-91/test/bad_params.fromasm.clamp binaryen-99/test/bad_params.fromasm.clamp --- binaryen-91/test/bad_params.fromasm.clamp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/bad_params.fromasm.clamp 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -(module - (type $none_=>_none (func)) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "bad_params.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (export "ex" (func $ex)) - (func $ex (; 0 ;) (; has Stack IR ;) - (nop) - ) -) diff -Nru binaryen-91/test/bad_params.fromasm.clamp.no-opts binaryen-99/test/bad_params.fromasm.clamp.no-opts --- binaryen-91/test/bad_params.fromasm.clamp.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/bad_params.fromasm.clamp.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ -(module - (type $i32_f64_=>_none (func (param i32 f64))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (export "ex" (func $ex)) - (func $missing (; 0 ;) (param $x i32) (param $y f64) - (nop) - ) - (func $extra (; 1 ;) (param $x i32) (param $y f64) - (nop) - ) - (func $mix (; 2 ;) (param $a i32) - (nop) - ) - (func $ex (; 3 ;) - (call $missing - (i32.const 0) - (f64.const 0) - ) - (call $missing - (i32.const 1) - (f64.const 0) - ) - (call $extra - (i32.const 1) - (f64.const 2) - ) - (call $extra - (i32.const 1) - (f64.const 2) - ) - (call $mix - (i32.const 0) - ) - (call $mix - (i32.const 1) - ) - (call $mix - (i32.const 1) - ) - ) -) diff -Nru binaryen-91/test/bad_params.fromasm.imprecise binaryen-99/test/bad_params.fromasm.imprecise --- binaryen-91/test/bad_params.fromasm.imprecise 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/bad_params.fromasm.imprecise 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -(module - (type $none_=>_none (func)) - (export "ex" (func $ex)) - (func $ex (; 0 ;) (; has Stack IR ;) - (nop) - ) -) diff -Nru binaryen-91/test/bad_params.fromasm.imprecise.no-opts binaryen-99/test/bad_params.fromasm.imprecise.no-opts --- binaryen-91/test/bad_params.fromasm.imprecise.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/bad_params.fromasm.imprecise.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ -(module - (type $i32_f64_=>_none (func (param i32 f64))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (export "ex" (func $ex)) - (func $missing (; 0 ;) (param $x i32) (param $y f64) - (nop) - ) - (func $extra (; 1 ;) (param $x i32) (param $y f64) - (nop) - ) - (func $mix (; 2 ;) (param $a i32) - (nop) - ) - (func $ex (; 3 ;) - (call $missing - (i32.const 0) - (f64.const 0) - ) - (call $missing - (i32.const 1) - (f64.const 0) - ) - (call $extra - (i32.const 1) - (f64.const 2) - ) - (call $extra - (i32.const 1) - (f64.const 2) - ) - (call $mix - (i32.const 0) - ) - (call $mix - (i32.const 1) - ) - (call $mix - (i32.const 1) - ) - ) -) diff -Nru binaryen-91/test/bad_params.fromasm.no-opts binaryen-99/test/bad_params.fromasm.no-opts --- binaryen-91/test/bad_params.fromasm.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/bad_params.fromasm.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ -(module - (type $i32_f64_=>_none (func (param i32 f64))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (export "ex" (func $ex)) - (func $missing (; 0 ;) (param $x i32) (param $y f64) - (nop) - ) - (func $extra (; 1 ;) (param $x i32) (param $y f64) - (nop) - ) - (func $mix (; 2 ;) (param $a i32) - (nop) - ) - (func $ex (; 3 ;) - (call $missing - (i32.const 0) - (f64.const 0) - ) - (call $missing - (i32.const 1) - (f64.const 0) - ) - (call $extra - (i32.const 1) - (f64.const 2) - ) - (call $extra - (i32.const 1) - (f64.const 2) - ) - (call $mix - (i32.const 0) - ) - (call $mix - (i32.const 1) - ) - (call $mix - (i32.const 1) - ) - ) -) diff -Nru binaryen-91/test/binaryen.js/atomics.js binaryen-99/test/binaryen.js/atomics.js --- binaryen-91/test/binaryen.js/atomics.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/atomics.js 2021-01-07 20:01:06.000000000 +0000 @@ -59,21 +59,21 @@ ), // wait and notify module.drop( - module.i32.atomic.wait( + module.memory.atomic.wait32( module.i32.const(0), module.i32.const(0), module.i64.const(0) ) ), module.drop( - module.i64.atomic.wait( + module.memory.atomic.wait64( module.i32.const(0), module.i64.const(0), module.i64.const(0) ) ), module.drop( - module.atomic.notify( + module.memory.atomic.notify( module.i32.const(0), module.i32.const(0) ) diff -Nru binaryen-91/test/binaryen.js/atomics.js.txt binaryen-99/test/binaryen.js/atomics.js.txt --- binaryen-91/test/binaryen.js/atomics.js.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/atomics.js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (memory $0 (shared 1 1)) - (func $main (; 0 ;) + (func $main (i32.atomic.store (i32.const 0) (i32.atomic.load @@ -45,21 +45,21 @@ ) ) (drop - (i32.atomic.wait + (memory.atomic.wait32 (i32.const 0) (i32.const 0) (i64.const 0) ) ) (drop - (i64.atomic.wait + (memory.atomic.wait64 (i32.const 0) (i64.const 0) (i64.const 0) ) ) (drop - (atomic.notify + (memory.atomic.notify (i32.const 0) (i32.const 0) ) diff -Nru binaryen-91/test/binaryen.js/copy-expression.js binaryen-99/test/binaryen.js/copy-expression.js --- binaryen-91/test/binaryen.js/copy-expression.js 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/binaryen.js/copy-expression.js 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,31 @@ +var module = new binaryen.Module(); + +// Create an expression and copy it +var original = module.block(null, [ + module.if( + module.local.get(0, binaryen.i32), + module.i32.const(1), + module.i32.const(2) + ) +], binaryen.i32); +var copy = module.copyExpression(original); + +// Check that the expression incl. sub-expressions are copies +assert(original !== copy); + +var originalInfo = binaryen.getExpressionInfo(original); +assert(originalInfo.children.length === 1); + +var copyInfo = binaryen.getExpressionInfo(copy); +assert(originalInfo.children.length === copyInfo.children.length); +assert(originalInfo.children[0] !== copyInfo.children[0]); + +var originalIfInfo = binaryen.getExpressionInfo(originalInfo.children[0]); +var copyIfInfo = binaryen.getExpressionInfo(copyInfo.children[0]); + +assert(originalIfInfo.condition !== copyIfInfo.condition); +assert(originalIfInfo.ifTrue !== copyIfInfo.ifTrue); +assert(originalIfInfo.ifFalse !== copyIfInfo.ifFalse); + +// Check that both are otherwise identical +assert(binaryen.emitText(original) === binaryen.emitText(copy)); diff -Nru binaryen-91/test/binaryen.js/custom-section.js binaryen-99/test/binaryen.js/custom-section.js --- binaryen-91/test/binaryen.js/custom-section.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/custom-section.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,4 +1,3 @@ -binaryen.setAPITracing(true); var module = new binaryen.Module(); module.addCustomSection("hello", [119, 111, 114, 108, 100]); diff -Nru binaryen-91/test/binaryen.js/custom-section.js.txt binaryen-99/test/binaryen.js/custom-section.js.txt --- binaryen-91/test/binaryen.js/custom-section.js.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/custom-section.js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,24 +1,3 @@ -// beginning a Binaryen API trace -#include -#include -#include "binaryen-c.h" -int main() { - std::map expressions; - std::map functions; - std::map globals; - std::map events; - std::map exports; - std::map relooperBlocks; - BinaryenModuleRef the_module = NULL; - RelooperRef the_relooper = NULL; - the_module = BinaryenModuleCreate(); - expressions[size_t(NULL)] = BinaryenExpressionRef(NULL); - { - const char contents[] = { 119, 111, 114, 108, 100 }; - BinaryenAddCustomSection(the_module, "hello", contents, 5); - } - BinaryenModuleValidate(the_module); - BinaryenModulePrint(the_module); (module ;; custom section "hello", size 5, contents: "world" ) diff -Nru binaryen-91/test/binaryen.js/debug-info.js.txt binaryen-99/test/binaryen.js/debug-info.js.txt --- binaryen-91/test/binaryen.js/debug-info.js.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/debug-info.js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -4,7 +4,7 @@ (type $none_=>_none (func)) (memory $0 0) (export "test" (func $0)) - (func $0 (; 0 ;) + (func $0 (nop) ) ) @@ -15,7 +15,7 @@ (type $none_=>_none (func)) (memory $0 0) (export "test" (func $test)) - (func $test (; 0 ;) + (func $test (nop) ) ) @@ -26,7 +26,7 @@ (type $none_=>_none (func)) (memory $0 0) (export "test" (func $0)) - (func $0 (; 0 ;) + (func $0 (nop) ) ) diff -Nru binaryen-91/test/binaryen.js/debug-names.js binaryen-99/test/binaryen.js/debug-names.js --- binaryen-91/test/binaryen.js/debug-names.js 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/binaryen.js/debug-names.js 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,42 @@ +var wast = ` +(module $hel + (memory $lo 0 0) + (table $wor 0 0 funcref) + (global $ld i32 (i32.const 0)) + (func $of (param $wasm i32) + (local $!#$%&'*+-./:<=>?@\\^_\`|~ f64) + ) +) +`; + +console.log("=== input wast ===" + wast); + +var module = binaryen.parseText(wast); + +console.log("=== parsed wast ===\n" + module.emitText()); + +var func = binaryen.Function(module.getFunction("of")); +assert(func.numLocals === 2); +assert(func.hasLocalName(0) === true); +assert(func.getLocalName(0) === "wasm"); +assert(func.hasLocalName(1) === true); +assert(func.getLocalName(1) === "!#$%&'*+-./:<=>?@\\^_\`|~"); +assert(func.hasLocalName(2) === false); +func.setLocalName(0, "js"); +assert(func.getLocalName(0) === "js"); + +binaryen.setDebugInfo(true); + +var module2 = binaryen.readBinary(module.emitBinary()); + +module.dispose(); + +console.log("=== roundtripped ===\n" + module2.emitText()); + +var module3 = binaryen.readBinary(module2.emitBinary()); + +module2.dispose(); + +console.log("=== roundtripped again ===\n" + module3.emitText()); + +module3.dispose(); diff -Nru binaryen-91/test/binaryen.js/debug-names.js.txt binaryen-99/test/binaryen.js/debug-names.js.txt --- binaryen-91/test/binaryen.js/debug-names.js.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/binaryen.js/debug-names.js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,46 @@ +=== input wast === +(module $hel + (memory $lo 0 0) + (table $wor 0 0 funcref) + (global $ld i32 (i32.const 0)) + (func $of (param $wasm i32) + (local $!#$%&'*+-./:<=>?@\^_`|~ f64) + ) +) + +=== parsed wast === +(module $hel + (type $i32_=>_none (func (param i32))) + (memory $lo 0 0) + (table $wor 0 0 funcref) + (global $ld i32 (i32.const 0)) + (func $of (param $wasm i32) + (local $!#$%&'*+-./:<=>?@\^_`|~ f64) + (nop) + ) +) + +=== roundtripped === +(module $hel + (type $i32_=>_none (func (param i32))) + (memory $lo 0 0) + (table $wor 0 0 funcref) + (global $ld i32 (i32.const 0)) + (func $of (param $js i32) + (local $!#$%&'*+-./:<=>?@\5c^_`|~ f64) + (nop) + ) +) + +=== roundtripped again === +(module $hel + (type $i32_=>_none (func (param i32))) + (memory $lo 0 0) + (table $wor 0 0 funcref) + (global $ld i32 (i32.const 0)) + (func $of (param $js i32) + (local $!#$%&'*+-./:<=>?@\5c^_`|~ f64) + (nop) + ) +) + diff -Nru binaryen-91/test/binaryen.js/emit_asmjs.js.txt binaryen-99/test/binaryen.js/emit_asmjs.js.txt --- binaryen-91/test/binaryen.js/emit_asmjs.js.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/emit_asmjs.js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,37 +1,29 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function main($0) { $0 = $0 | 0; return $0 | 0; } - var FUNCTION_TABLE = []; return { "main": main }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var main = retasmFunc.main; diff -Nru binaryen-91/test/binaryen.js/event.js binaryen-99/test/binaryen.js/event.js --- binaryen-91/test/binaryen.js/event.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/event.js 2021-01-07 20:01:06.000000000 +0000 @@ -7,7 +7,9 @@ } var module = new binaryen.Module(); -module.setFeatures(binaryen.Features.ExceptionHandling); +module.setFeatures(binaryen.Features.ReferenceTypes | + binaryen.Features.ExceptionHandling | + binaryen.Features.Multivalue); var pairType = binaryen.createType([binaryen.i32, binaryen.f32]); diff -Nru binaryen-91/test/binaryen.js/exception-handling.js binaryen-99/test/binaryen.js/exception-handling.js --- binaryen-91/test/binaryen.js/exception-handling.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/exception-handling.js 2021-01-07 20:01:06.000000000 +0000 @@ -19,7 +19,9 @@ var event_ = module.addEvent("e", 0, binaryen.i32, binaryen.none); // (try -// (throw $e (i32.const 0)) +// (do +// (throw $e (i32.const 0)) +// ) // (catch // ;; We don't support multi-value yet. Use locals instead. // (local.set 0 (exnref.pop)) diff -Nru binaryen-91/test/binaryen.js/exception-handling.js.txt binaryen-99/test/binaryen.js/exception-handling.js.txt --- binaryen-91/test/binaryen.js/exception-handling.js.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/exception-handling.js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -2,15 +2,17 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (event $e (attr 0) (param i32)) - (func $test (; 0 ;) + (func $test (local $0 exnref) (try - (throw $e - (i32.const 0) + (do + (throw $e + (i32.const 0) + ) ) (catch (local.set $0 - (exnref.pop) + (pop exnref) ) (drop (block $l (result i32) @@ -26,7 +28,7 @@ ) ) -getExpressionInfo(throw) = {"id":44,"type":1,"event":"e"} -getExpressionInfo(br_on_exn) = {"id":46,"type":10,"name":"l","event":"e"} -getExpressionInfo(rethrow) = {"id":45,"type":1} -getExpressionInfo(try) = {"id":43,"type":0} +getExpressionInfo(throw) = {"id":47,"type":1,"event":"e"} +getExpressionInfo(br_on_exn) = {"id":49,"type":9,"name":"l","event":"e"} +getExpressionInfo(rethrow) = {"id":48,"type":1} +getExpressionInfo(try) = {"id":46,"type":0} diff -Nru binaryen-91/test/binaryen.js/expressionrunner.js binaryen-99/test/binaryen.js/expressionrunner.js --- binaryen-91/test/binaryen.js/expressionrunner.js 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/binaryen.js/expressionrunner.js 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,205 @@ +var Flags = binaryen.ExpressionRunner.Flags; +console.log("// ExpressionRunner.Flags.Default = " + Flags.Default); +console.log("// ExpressionRunner.Flags.PreserveSideeffects = " + Flags.PreserveSideeffects); +console.log("// ExpressionRunner.Flags.TraverseCalls = " + Flags.TraverseCalls); + +function assertDeepEqual(x, y) { + if (typeof x === "object") { + for (let i in x) assertDeepEqual(x[i], y[i]); + for (let i in y) assertDeepEqual(x[i], y[i]); + } else { + assert(x === y); + } +} + +var module = new binaryen.Module(); +module.addGlobal("aGlobal", binaryen.i32, true, module.i32.const(0)); + +// Should evaluate down to a constant +var runner = new binaryen.ExpressionRunner(module); +var expr = runner.runAndDispose( + module.i32.add( + module.i32.const(1), + module.i32.const(2) + ) +); +assertDeepEqual( + binaryen.getExpressionInfo(expr), + { + id: binaryen.ExpressionIds.Const, + type: binaryen.i32, + value: 3 + } +); + +// Should traverse control structures +runner = new binaryen.ExpressionRunner(module); +expr = runner.runAndDispose( + module.i32.add( + module.i32.const(1), + module.if( + module.i32.const(0), + module.i32.const(0), + module.i32.const(3) + ) + ), +); +assertDeepEqual( + binaryen.getExpressionInfo(expr), + { + id: binaryen.ExpressionIds.Const, + type: binaryen.i32, + value: 4 + } +); + +// Should be unable to evaluate a local if not explicitly specified +runner = new binaryen.ExpressionRunner(module); +expr = runner.runAndDispose( + module.i32.add( + module.local.get(0, binaryen.i32), + module.i32.const(1) + ) +); +assert(expr === 0); + +// Should handle traps properly +runner = new binaryen.ExpressionRunner(module); +expr = runner.runAndDispose( + module.unreachable() +); +assert(expr === 0); + +// Should ignore `local.tee` side-effects if just evaluating the expression +runner = new binaryen.ExpressionRunner(module); +expr = runner.runAndDispose( + module.i32.add( + module.local.tee(0, module.i32.const(4), binaryen.i32), + module.i32.const(1) + ) +); +assertDeepEqual( + binaryen.getExpressionInfo(expr), + { + id: binaryen.ExpressionIds.Const, + type: binaryen.i32, + value: 5 + } +); + +// Should preserve any side-effects if explicitly requested +runner = new binaryen.ExpressionRunner(module, Flags.PreserveSideeffects); +expr = runner.runAndDispose( + module.i32.add( + module.local.tee(0, module.i32.const(4), binaryen.i32), + module.i32.const(1) + ) +); +assert(expr === 0); + +// Should work with temporary values if just evaluating the expression +runner = new binaryen.ExpressionRunner(module); +expr = runner.runAndDispose( + module.i32.add( + module.block(null, [ + module.local.set(0, module.i32.const(2)), + module.local.get(0, binaryen.i32) + ], binaryen.i32), + module.block(null, [ + module.global.set("aGlobal", module.i32.const(4)), + module.global.get("aGlobal", binaryen.i32) + ], binaryen.i32) + ) +); +assertDeepEqual( + binaryen.getExpressionInfo(expr), + { + id: binaryen.ExpressionIds.Const, + type: binaryen.i32, + value: 6 + } +); + +// Should pick up explicitly preset values +runner = new binaryen.ExpressionRunner(module, Flags.PreserveSideeffects); +assert(runner.setLocalValue(0, module.i32.const(3))); +assert(runner.setGlobalValue("aGlobal", module.i32.const(4))); +expr = runner.runAndDispose( + module.i32.add( + module.local.get(0, binaryen.i32), + module.global.get("aGlobal", binaryen.i32) + ) +); +assertDeepEqual( + binaryen.getExpressionInfo(expr), + { + id: binaryen.ExpressionIds.Const, + type: binaryen.i32, + value: 7 + } +); + +// Should traverse into (simple) functions if requested +runner = new binaryen.ExpressionRunner(module, Flags.TraverseCalls); +module.addFunction("add", binaryen.createType([ binaryen.i32, binaryen.i32 ]), binaryen.i32, [], + module.block(null, [ + module.i32.add( + module.local.get(0, binaryen.i32), + module.local.get(1, binaryen.i32) + ) + ], binaryen.i32) +); +assert(runner.setLocalValue(0, module.i32.const(1))); +expr = runner.runAndDispose( + module.i32.add( + module.i32.add( + module.local.get(0, binaryen.i32), + module.call("add", [ + module.i32.const(2), + module.i32.const(4) + ], binaryen.i32) + ), + module.local.get(0, binaryen.i32) + ) +); +assertDeepEqual( + binaryen.getExpressionInfo(expr), + { + id: binaryen.ExpressionIds.Const, + type: binaryen.i32, + value: 8 + } +); + +// Should not attempt to traverse into functions if not explicitly set +runner = new binaryen.ExpressionRunner(module); +expr = runner.runAndDispose( + module.i32.add( + module.i32.const(1), + module.call("add", [ + module.i32.const(3), + module.i32.const(4) + ], binaryen.i32) + ) +); +assert(expr === 0); + +// Should stop on maxDepth +runner = new binaryen.ExpressionRunner(module, Flags.Default, 1); +expr = runner.runAndDispose( + module.block(null, [ + module.i32.const(1), + ], binaryen.i32) +); +assert(expr === 0); + +// Should not loop infinitely +runner = new binaryen.ExpressionRunner(module, Flags.Default, 50, 3); +expr = runner.runAndDispose( + module.loop("theLoop", + module.br("theLoop") + ) +); +assert(expr === 0); + +module.dispose(); diff -Nru binaryen-91/test/binaryen.js/expressionrunner.js.txt binaryen-99/test/binaryen.js/expressionrunner.js.txt --- binaryen-91/test/binaryen.js/expressionrunner.js.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/binaryen.js/expressionrunner.js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,3 @@ +// ExpressionRunner.Flags.Default = 0 +// ExpressionRunner.Flags.PreserveSideeffects = 1 +// ExpressionRunner.Flags.TraverseCalls = 2 diff -Nru binaryen-91/test/binaryen.js/expressions.js binaryen-99/test/binaryen.js/expressions.js --- binaryen-91/test/binaryen.js/expressions.js 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/binaryen.js/expressions.js 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,1709 @@ +function assertDeepEqual(x, y) { + if (typeof x === "object") { + for (let i in x) assertDeepEqual(x[i], y[i]); + for (let i in y) assertDeepEqual(x[i], y[i]); + } else { + assert(x === y); + } +} + +console.log("# Expression"); +(function testWrapper() { + var theExpression = binaryen.Block(42); // works without new + assert(theExpression instanceof binaryen.Block); + assert(theExpression instanceof binaryen.Expression); + assert(theExpression.constructor === binaryen.Block); + assert(typeof binaryen.Block.getId === "function"); // proto + assert(typeof binaryen.Block.getName === "function"); // own + assert(typeof theExpression.getId === "function"); // proto + assert(typeof theExpression.getName === "function"); // own + assert((theExpression | 0) === 42); // via valueOf +})(); + +console.log("# Block"); +(function testBlock() { + const module = new binaryen.Module(); + + const theBlock = binaryen.Block(module.block(null, [])); + assert(theBlock instanceof binaryen.Block); + assert(theBlock instanceof binaryen.Expression); + assert(theBlock.id === binaryen.BlockId); + assert(theBlock.name === null); + assert(theBlock.type === binaryen.none); + + theBlock.name ="theName"; + assert(theBlock.name === "theName"); + theBlock.type = binaryen.i32; + assert(theBlock.type === binaryen.i32); + assert(theBlock.numChildren === 0); + assertDeepEqual(theBlock.children, []); + + var child1 = module.i32.const(1); + theBlock.appendChild(child1); + assert(theBlock.numChildren === 1); + assert(theBlock.getChildAt(0) === child1); + var child2 = module.i32.const(2); + theBlock.insertChildAt(1, child2); + assert(theBlock.numChildren === 2); + assert(theBlock.getChildAt(0) === child1); + assert(theBlock.getChildAt(1) === child2); + var child0 = module.i32.const(0); + theBlock.insertChildAt(0, child0); + assert(theBlock.numChildren === 3); + assert(theBlock.getChildAt(0) === child0); + assert(theBlock.getChildAt(1) === child1); + assert(theBlock.getChildAt(2) === child2); + var newChild1 = module.i32.const(11); + theBlock.setChildAt(1, newChild1); + assert(theBlock.numChildren === 3); + assert(theBlock.getChildAt(0) === child0); + assert(theBlock.getChildAt(1) === newChild1); + assert(theBlock.getChildAt(2) === child2); + theBlock.removeChildAt(1); + assert(theBlock.numChildren === 2); + assert(theBlock.getChildAt(0) === child0); + assert(theBlock.getChildAt(1) === child2); + theBlock.removeChildAt(1); + assert(theBlock.numChildren === 1); + assert(theBlock.getChildAt(0) === child0); + theBlock.finalize(); + + console.log(theBlock.toText()); + assert( + theBlock.toText() + == + "(block $theName (result i32)\n (i32.const 0)\n)\n" + ); + theBlock.removeChildAt(0); + assert(theBlock.numChildren === 0); + + module.dispose(); +})(); + +console.log("# If"); +(function testIf() { + const module = new binaryen.Module(); + + var condition = module.i32.const(1); + var ifTrue = module.i32.const(2); + var ifFalse = module.i32.const(3); + const theIf = binaryen.If(module.if(condition, ifTrue, ifFalse)); + assert(theIf instanceof binaryen.If); + assert(theIf instanceof binaryen.Expression); + assert(theIf.id === binaryen.IfId); + assert(theIf.condition === condition); + assert(theIf.ifTrue === ifTrue); + assert(theIf.ifFalse === ifFalse); + assert(theIf.type == binaryen.i32); + + theIf.condition = condition = module.i32.const(4); + assert(theIf.condition === condition); + theIf.ifTrue = ifTrue = module.i32.const(5); + assert(theIf.ifTrue === ifTrue); + theIf.ifFalse = ifFalse = module.i32.const(6); + assert(theIf.ifFalse === ifFalse); + theIf.finalize(); + + console.log(theIf.toText()); + assert( + theIf.toText() + == + "(if (result i32)\n (i32.const 4)\n (i32.const 5)\n (i32.const 6)\n)\n" + ); + + theIf.ifFalse = null; + assert(!theIf.ifFalse); + console.log(theIf.toText()); + assert( + theIf.toText() + == + "(if (result i32)\n (i32.const 4)\n (i32.const 5)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# Loop"); +(function testLoop() { + const module = new binaryen.Module(); + + var name = null; + var body = module.i32.const(1); + const theLoop = binaryen.Loop(module.loop(name, body)); + assert(theLoop instanceof binaryen.Loop); + assert(theLoop instanceof binaryen.Expression); + assert(theLoop.id === binaryen.LoopId); + assert(theLoop.name === name); + assert(theLoop.body === body); + assert(theLoop.type === binaryen.i32); + + theLoop.name = name = "theName"; + assert(theLoop.name === name); + theLoop.body = body = module.drop(body); + assert(theLoop.body === body); + theLoop.finalize(); + assert(theLoop.type === binaryen.none); + + console.log(theLoop.toText()); + assert( + theLoop.toText() + == + "(loop $theName\n (drop\n (i32.const 1)\n )\n)\n" + ); + + module.dispose(); +})(); + +console.log("# Break"); +(function testBreak() { + const module = new binaryen.Module(); + + var name = "theName"; + var condition = module.i32.const(1); + var value = module.i32.const(2); + const theBreak = binaryen.Break(module.br(name, condition, value)); + assert(theBreak instanceof binaryen.Break); + assert(theBreak instanceof binaryen.Expression); + assert(theBreak.name === name); + assert(theBreak.condition === condition); + assert(theBreak.value === value); + assert(theBreak.type === binaryen.i32); + + theBreak.name = name = "theNewName"; + assert(theBreak.name === "theNewName"); + theBreak.condition = condition = module.i32.const(3); + assert(theBreak.condition === condition); + theBreak.value = value = module.i32.const(4); + assert(theBreak.value === value); + theBreak.finalize(); + + console.log(theBreak.toText()); + assert( + theBreak.toText() + == + "(br_if $theNewName\n (i32.const 4)\n (i32.const 3)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# Switch"); +(function testSwitch() { + const module = new binaryen.Module(); + + var names = ["a", "b"]; + var defaultName = "c"; + var condition = module.i32.const(1); + var value = module.i32.const(2); + const theSwitch = binaryen.Switch(module.switch(names, defaultName, condition, value)); + assert(theSwitch instanceof binaryen.Switch); + assert(theSwitch instanceof binaryen.Expression); + assert(theSwitch.numNames === 2); + assertDeepEqual(theSwitch.names, names); + assert(theSwitch.defaultName === defaultName); + assert(theSwitch.condition === condition); + assert(theSwitch.value === value); + assert(theSwitch.type === binaryen.unreachable); + + theSwitch.names = names = [ + "1", // set + "2", // set + "3" // append + ]; + assertDeepEqual(theSwitch.names, names); + theSwitch.names = names = [ + "x", // set + // remove + // remove + ]; + assertDeepEqual(theSwitch.names, names); + theSwitch.insertNameAt(1, "y"); + theSwitch.condition = condition = module.i32.const(3); + assert(theSwitch.condition === condition); + theSwitch.value = value = module.i32.const(4); + assert(theSwitch.value === value); + theSwitch.finalize(); + + console.log(theSwitch.toText()); + assert( + theSwitch.toText() + == + "(br_table $x $y $c\n (i32.const 4)\n (i32.const 3)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# Call"); +(function testCall() { + const module = new binaryen.Module(); + + var target = "foo"; + var operands = [ + module.i32.const(1), + module.i32.const(2) + ]; + const theCall = binaryen.Call(module.call(target, operands, binaryen.i32)); + assert(theCall instanceof binaryen.Call); + assert(theCall instanceof binaryen.Expression); + assert(theCall.target === target); + assertDeepEqual(theCall.operands, operands); + assert(theCall.return === false); + assert(theCall.type === binaryen.i32); + + theCall.target = "bar"; + assert(theCall.target === "bar"); + theCall.operands = operands = [ + module.i32.const(3), // set + module.i32.const(4), // set + module.i32.const(5) // append + ]; + assertDeepEqual(theCall.operands, operands); + theCall.operands = operands = [ + module.i32.const(6) // set + // remove + // remove + ]; + assertDeepEqual(theCall.operands, operands); + theCall.insertOperandAt(0, module.i32.const(7)); + theCall.return = true; + assert(theCall.return === true); + theCall.finalize(); + assert(theCall.type === binaryen.unreachable); // finalized tail call + + theCall.return = false; + theCall.type = binaryen.i32; + theCall.finalize(); + assert(theCall.type === binaryen.i32); // finalized call + + console.log(theCall.toText()); + assert( + theCall.toText() + == + "(call $bar\n (i32.const 7)\n (i32.const 6)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# CallIndirect"); +(function testCallIndirect() { + const module = new binaryen.Module(); + + var target = module.i32.const(42); + var params = binaryen.none; + var results = binaryen.none; + var operands = [ + module.i32.const(1), + module.i32.const(2) + ]; + const theCallIndirect = binaryen.CallIndirect(module.call_indirect(target, operands, params, results)); + assert(theCallIndirect instanceof binaryen.CallIndirect); + assert(theCallIndirect instanceof binaryen.Expression); + assert(theCallIndirect.target === target); + assertDeepEqual(theCallIndirect.operands, operands); + assert(theCallIndirect.params === params); + assert(theCallIndirect.results === results); + assert(theCallIndirect.return === false); + assert(theCallIndirect.type === theCallIndirect.results); + + theCallIndirect.target = target = module.i32.const(9000); + assert(theCallIndirect.target === target); + theCallIndirect.operands = operands = [ + module.i32.const(3), // set + module.i32.const(4), // set + module.i32.const(5) // append + ]; + assertDeepEqual(theCallIndirect.operands, operands); + theCallIndirect.operands = operands = [ + module.i32.const(6) // set + // remove + // remove + ]; + assertDeepEqual(theCallIndirect.operands, operands); + theCallIndirect.insertOperandAt(0, module.i32.const(7)); + theCallIndirect.return = true; + assert(theCallIndirect.return === true); + theCallIndirect.params = params = binaryen.createType([ binaryen.i32, binaryen.i32 ]); + assert(theCallIndirect.params === params); + theCallIndirect.results = results = binaryen.i32; + assert(theCallIndirect.results === results); + theCallIndirect.finalize(); + assert(theCallIndirect.type === binaryen.unreachable); // finalized tail call + + theCallIndirect.return = false; + theCallIndirect.finalize(); + assert(theCallIndirect.type === results); // finalized call + + console.log(theCallIndirect.toText()); + assert( + theCallIndirect.toText() + == + "(call_indirect (type $i32_i32_=>_i32)\n (i32.const 7)\n (i32.const 6)\n (i32.const 9000)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# LocalGet"); +(function testLocalGet() { + const module = new binaryen.Module(); + + var index = 1; + var type = binaryen.i32; + const theLocalGet = binaryen.LocalGet(module.local.get(index, type)); + assert(theLocalGet instanceof binaryen.LocalGet); + assert(theLocalGet instanceof binaryen.Expression); + assert(theLocalGet.index === index); + assert(theLocalGet.type === type); + + theLocalGet.index = index = 2; + assert(theLocalGet.index === index); + theLocalGet.type = type = binaryen.f64; + assert(theLocalGet.type === type); + theLocalGet.finalize(); + + console.log(theLocalGet.toText()); + assert( + theLocalGet.toText() + == + "(local.get $2)\n" + ); + + module.dispose(); +})(); + +console.log("# LocalSet"); +(function testLocalSet() { + const module = new binaryen.Module(); + + var index = 1; + var value = module.i32.const(1); + const theLocalSet = binaryen.LocalSet(module.local.set(index, value)); + assert(theLocalSet instanceof binaryen.LocalSet); + assert(theLocalSet instanceof binaryen.Expression); + assert(theLocalSet.index === index); + assert(theLocalSet.value === value); + assert(theLocalSet.tee === false); + assert(theLocalSet.type == binaryen.none); + + theLocalSet.index = index = 2; + assert(theLocalSet.index === index); + theLocalSet.value = value = module.i32.const(3); + assert(theLocalSet.value === value); + theLocalSet.type = binaryen.i32; + assert(theLocalSet.type === binaryen.i32); + assert(theLocalSet.tee === true); + theLocalSet.type = binaryen.none; + theLocalSet.finalize(); + + console.log(theLocalSet.toText()); + assert( + theLocalSet.toText() + == + "(local.set $2\n (i32.const 3)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# GlobalGet"); +(function testGlobalGet() { + const module = new binaryen.Module(); + + var name = "a"; + var type = binaryen.i32; + const theGlobalGet = binaryen.GlobalGet(module.global.get(name, type)); + assert(theGlobalGet instanceof binaryen.GlobalGet); + assert(theGlobalGet instanceof binaryen.Expression); + assert(theGlobalGet.name === name); + assert(theGlobalGet.type === type); + + theGlobalGet.name = name = "b"; + assert(theGlobalGet.name === name); + theGlobalGet.type = type = binaryen.f64; + assert(theGlobalGet.type === type); + theGlobalGet.finalize(); + + console.log(theGlobalGet.toText()); + assert( + theGlobalGet.toText() + == + "(global.get $b)\n" + ); + + module.dispose(); +})(); + +console.log("# GlobalSet"); +(function testGlobalSet() { + const module = new binaryen.Module(); + + var name = "a"; + var value = module.i32.const(1); + const theGlobalSet = binaryen.GlobalSet(module.global.set(name, value)); + assert(theGlobalSet instanceof binaryen.GlobalSet); + assert(theGlobalSet instanceof binaryen.Expression); + assert(theGlobalSet.name === name); + assert(theGlobalSet.value === value); + assert(theGlobalSet.type == binaryen.none); + + theGlobalSet.name = name = "b"; + assert(theGlobalSet.name === name); + theGlobalSet.value = value = module.f64.const(3); + assert(theGlobalSet.value === value); + theGlobalSet.finalize(); + + console.log(theGlobalSet.toText()); + assert( + theGlobalSet.toText() + == + "(global.set $b\n (f64.const 3)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# MemorySize"); +(function testMemorySize() { + const module = new binaryen.Module(); + + var type = binaryen.i32; + const theMemorySize = binaryen.MemorySize(module.memory.size()); + assert(theMemorySize instanceof binaryen.MemorySize); + assert(theMemorySize instanceof binaryen.Expression); + assert(theMemorySize.type === type); + + theMemorySize.type = type = binaryen.f64; + assert(theMemorySize.type === type); + theMemorySize.finalize(); + assert(theMemorySize.type === binaryen.i32); + + console.log(theMemorySize.toText()); + assert( + theMemorySize.toText() + == + "(memory.size)\n" + ); + + module.dispose(); +})(); + +console.log("# MemoryGrow"); +(function testMemoryGrow() { + const module = new binaryen.Module(); + + var type = binaryen.i32; + var delta = module.i32.const(1); + const theMemoryGrow = binaryen.MemoryGrow(module.memory.grow(delta)); + assert(theMemoryGrow instanceof binaryen.MemoryGrow); + assert(theMemoryGrow instanceof binaryen.Expression); + assert(theMemoryGrow.delta === delta); + assert(theMemoryGrow.type === type); + + theMemoryGrow.delta = delta = module.i32.const(2); + assert(theMemoryGrow.delta === delta); + theMemoryGrow.type = type = binaryen.f64; + assert(theMemoryGrow.type === type); + theMemoryGrow.finalize(); + assert(theMemoryGrow.type === binaryen.i32); + + console.log(theMemoryGrow.toText()); + assert( + theMemoryGrow.toText() + == + "(memory.grow\n (i32.const 2)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# Load"); +(function testLoad() { + const module = new binaryen.Module(); + + var offset = 16; + var align = 2; + var ptr = module.i32.const(64); + const theLoad = binaryen.Load(module.i32.load(offset, align, ptr)); + assert(theLoad instanceof binaryen.Load); + assert(theLoad instanceof binaryen.Expression); + assert(theLoad.offset === offset); + assert(theLoad.align === align); + assert(theLoad.ptr === ptr); + assert(theLoad.bytes === 4); + assert(theLoad.signed === true); + assert(theLoad.atomic === false); + assert(theLoad.type == binaryen.i32); + + theLoad.offset = offset = 32; + assert(theLoad.offset === offset); + theLoad.align = align = 4; + assert(theLoad.align === align); + theLoad.ptr = ptr = module.i32.const(128); + assert(theLoad.ptr === ptr); + theLoad.type = binaryen.i64; + assert(theLoad.type === binaryen.i64); + theLoad.signed = false; + assert(theLoad.signed === false); + theLoad.bytes = 8; + assert(theLoad.bytes === 8); + theLoad.atomic = true; + assert(theLoad.atomic === true); + theLoad.finalize(); + assert(theLoad.align === 4); + + console.log(theLoad.toText()); + assert( + theLoad.toText() + == + "(i64.atomic.load offset=32 align=4\n (i32.const 128)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# Store"); +(function testStore() { + const module = new binaryen.Module(); + + var offset = 16; + var align = 2; + var ptr = module.i32.const(64); + var value = module.i32.const(1); + const theStore = binaryen.Store(module.i32.store(offset, align, ptr, value)); + assert(theStore instanceof binaryen.Store); + assert(theStore instanceof binaryen.Expression); + assert(theStore.offset === offset); + assert(theStore.align === align); + assert(theStore.ptr === ptr); + assert(theStore.value === value); + assert(theStore.bytes === 4); + assert(theStore.atomic === false); + assert(theStore.valueType === binaryen.i32); + assert(theStore.type === binaryen.none); + + theStore.offset = offset = 32; + assert(theStore.offset === offset); + theStore.align = align = 4; + assert(theStore.align === align); + theStore.ptr = ptr = module.i32.const(128); + assert(theStore.ptr === ptr); + theStore.value = value = module.i32.const(2); + assert(theStore.value === value); + theStore.signed = false; + assert(theStore.signed === false); + theStore.valueType = binaryen.i64; + assert(theStore.valueType === binaryen.i64); + theStore.bytes = 8; + assert(theStore.bytes === 8); + theStore.atomic = true; + assert(theStore.atomic === true); + theStore.finalize(); + assert(theStore.align === 4); + + console.log(theStore.toText()); + assert( + theStore.toText() + == + "(i64.atomic.store offset=32 align=4\n (i32.const 128)\n (i32.const 2)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# Const"); +(function testConst() { + const module = new binaryen.Module(); + + const theConst = binaryen.Const(module.i32.const(1)); + assert(theConst instanceof binaryen.Const); + assert(theConst instanceof binaryen.Expression); + assert(theConst.valueI32 === 1); + theConst.valueI32 = 2; + assert(theConst.valueI32 === 2); + assert(theConst.type === binaryen.i32); + + theConst.valueI64Low = 3; + assert(theConst.valueI64Low === 3); + theConst.valueI64High = 4; + assert(theConst.valueI64High === 4); + theConst.finalize(); + assert(theConst.type == binaryen.i64); + + theConst.valueF32 = 5; + assert(theConst.valueF32 === 5); + theConst.finalize(); + assert(theConst.type === binaryen.f32); + + theConst.valueF64 = 6; + assert(theConst.valueF64 === 6); + theConst.finalize(); + assert(theConst.type === binaryen.f64); + + theConst.valueV128 = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]; + assertDeepEqual(theConst.valueV128, [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]); + theConst.finalize(); + assert(theConst.type === binaryen.v128); + + console.log(theConst.toText()); + assert( + theConst.toText() + == + "(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d)\n" + ); + + module.dispose(); +})(); + +console.log("# Unary"); +(function testUnary() { + const module = new binaryen.Module(); + + var op = binaryen.Operations.EqZInt32; + var value = module.i32.const(1); + const theUnary = binaryen.Unary(module.i32.eqz(value)); + assert(theUnary instanceof binaryen.Unary); + assert(theUnary instanceof binaryen.Expression); + assert(theUnary.op === op); + assert(theUnary.value === value); + assert(theUnary.type === binaryen.i32); + + theUnary.op = op = binaryen.Operations.EqZInt64; + assert(theUnary.op === op); + theUnary.value = value = module.i64.const(2); + assert(theUnary.value === value); + theUnary.type = binaryen.f32; + theUnary.finalize(); + assert(theUnary.type === binaryen.i32); + + console.log(theUnary.toText()); + assert( + theUnary.toText() + == + "(i64.eqz\n (i64.const 2)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# Binary"); +(function testBinary() { + const module = new binaryen.Module(); + + var op = binaryen.Operations.AddInt32; + var left = module.i32.const(1); + var right = module.i32.const(2); + const theBinary = binaryen.Binary(module.i32.add(left, right)); + assert(theBinary instanceof binaryen.Binary); + assert(theBinary instanceof binaryen.Expression); + assert(theBinary.op === op); + assert(theBinary.left === left); + assert(theBinary.right === right); + assert(theBinary.type === binaryen.i32); + + theBinary.op = op = binaryen.Operations.AddInt64; + assert(theBinary.op === op); + theBinary.left = left = module.i64.const(3); + assert(theBinary.left === left); + theBinary.right = right = module.i64.const(4); + assert(theBinary.right === right); + theBinary.type = binaryen.f32; + theBinary.finalize(); + assert(theBinary.type === binaryen.i64); + + console.log(theBinary.toText()); + assert( + theBinary.toText() + == + "(i64.add\n (i64.const 3)\n (i64.const 4)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# Select"); +(function testSelect() { + const module = new binaryen.Module(); + + var condition = module.i32.const(1); + var ifTrue = module.i32.const(2); + var ifFalse = module.i32.const(3); + const theSelect = binaryen.Select(module.select(condition, ifTrue, ifFalse)); assert(theSelect.ifTrue === ifTrue); + assert(theSelect instanceof binaryen.Select); + assert(theSelect instanceof binaryen.Expression); + assert(theSelect.condition === condition); + assert(theSelect.ifTrue === ifTrue); + assert(theSelect.ifFalse === ifFalse); + assert(theSelect.type === binaryen.i32); + + theSelect.condition = condition = module.i32.const(4); + assert(theSelect.condition === condition); + theSelect.ifTrue = ifTrue = module.i64.const(5); + assert(theSelect.ifTrue === ifTrue); + theSelect.ifFalse = ifFalse = module.i64.const(6); + assert(theSelect.ifFalse === ifFalse); + theSelect.finalize(); + assert(theSelect.type === binaryen.i64); + + console.log(theSelect.toText()); + assert( + theSelect.toText() + == + "(select\n (i64.const 5)\n (i64.const 6)\n (i32.const 4)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# Drop"); +(function testDrop() { + const module = new binaryen.Module(); + + var value = module.i32.const(1); + const theDrop = binaryen.Drop(module.drop(value)); + assert(theDrop instanceof binaryen.Drop); + assert(theDrop instanceof binaryen.Expression); + assert(theDrop.value === value); + assert(theDrop.type === binaryen.none); + + theDrop.value = value = module.i32.const(2); + assert(theDrop.value === value); + + theDrop.finalize(); + assert(theDrop.type === binaryen.none); + + console.log(theDrop.toText()); + assert( + theDrop.toText() + == + "(drop\n (i32.const 2)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# Return"); +(function testReturn() { + const module = new binaryen.Module(); + + var value = module.i32.const(1); + const theReturn = binaryen.Return(module.return(value)); + assert(theReturn instanceof binaryen.Return); + assert(theReturn instanceof binaryen.Expression); + assert(theReturn.value === value); + assert(theReturn.type === binaryen.unreachable); + + theReturn.value = value = module.i32.const(2); + assert(theReturn.value === value); + + theReturn.finalize(); + assert(theReturn.type === binaryen.unreachable); + + console.log(theReturn.toText()); + assert( + theReturn.toText() + == + "(return\n (i32.const 2)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# AtomicRMW"); +(function testAtomicRMW() { + const module = new binaryen.Module(); + + var op = binaryen.Operations.AtomicRMWAdd; + var offset = 8; + var ptr = module.i32.const(2); + var value = module.i32.const(3); + const theAtomicRMW = binaryen.AtomicRMW(module.i32.atomic.rmw.add(offset, ptr, value)); + assert(theAtomicRMW instanceof binaryen.AtomicRMW); + assert(theAtomicRMW instanceof binaryen.Expression); + assert(theAtomicRMW.op === op); + assert(theAtomicRMW.bytes === 4); + assert(theAtomicRMW.offset === offset); + assert(theAtomicRMW.ptr === ptr); + assert(theAtomicRMW.value === value); + assert(theAtomicRMW.type === binaryen.i32); + + theAtomicRMW.op = op = binaryen.Operations.AtomicRMWSub; + assert(theAtomicRMW.op === op); + theAtomicRMW.bytes = 2; + assert(theAtomicRMW.bytes === 2); + theAtomicRMW.offset = offset = 16; + assert(theAtomicRMW.offset === offset); + theAtomicRMW.ptr = ptr = module.i32.const(4); + assert(theAtomicRMW.ptr === ptr); + theAtomicRMW.value = value = module.i64.const(5); + assert(theAtomicRMW.value === value); + theAtomicRMW.type = binaryen.i64; + theAtomicRMW.finalize(); + assert(theAtomicRMW.type === binaryen.i64); + + console.log(theAtomicRMW.toText()); + assert( + theAtomicRMW.toText() + == + "(i64.atomic.rmw16.sub_u offset=16\n (i32.const 4)\n (i64.const 5)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# AtomicCmpxchg"); +(function testAtomicCmpxchg() { + const module = new binaryen.Module(); + + var offset = 8; + var ptr = module.i32.const(2); + var expected = module.i32.const(3); + var replacement = module.i32.const(4); + const theAtomicCmpxchg = binaryen.AtomicCmpxchg(module.i32.atomic.rmw.cmpxchg(offset, ptr, expected, replacement)); + assert(theAtomicCmpxchg instanceof binaryen.AtomicCmpxchg); + assert(theAtomicCmpxchg instanceof binaryen.Expression); + assert(theAtomicCmpxchg.bytes === 4); + assert(theAtomicCmpxchg.offset === offset); + assert(theAtomicCmpxchg.ptr === ptr); + assert(theAtomicCmpxchg.expected === expected); + assert(theAtomicCmpxchg.replacement === replacement); + assert(theAtomicCmpxchg.type === binaryen.i32); + + theAtomicCmpxchg.bytes = 2; + assert(theAtomicCmpxchg.bytes === 2); + theAtomicCmpxchg.offset = offset = 16; + assert(theAtomicCmpxchg.offset === offset); + theAtomicCmpxchg.ptr = ptr = module.i32.const(5); + assert(theAtomicCmpxchg.ptr === ptr); + theAtomicCmpxchg.expected = expected = module.i64.const(6); + assert(theAtomicCmpxchg.expected === expected); + theAtomicCmpxchg.replacement = replacement = module.i64.const(7); + assert(theAtomicCmpxchg.replacement === replacement); + theAtomicCmpxchg.type = binaryen.i64; + theAtomicCmpxchg.finalize(); + assert(theAtomicCmpxchg.type === binaryen.i64); + + console.log(theAtomicCmpxchg.toText()); + assert( + theAtomicCmpxchg.toText() + == + "(i64.atomic.rmw16.cmpxchg_u offset=16\n (i32.const 5)\n (i64.const 6)\n (i64.const 7)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# AtomicWait"); +(function testAtomicWait() { + const module = new binaryen.Module(); + + var ptr = module.i32.const(2); + var expected = module.i32.const(3); + var timeout = module.i64.const(4); + const theAtomicWait = binaryen.AtomicWait(module.memory.atomic.wait32(ptr, expected, timeout)); + assert(theAtomicWait instanceof binaryen.AtomicWait); + assert(theAtomicWait instanceof binaryen.Expression); + assert(theAtomicWait.ptr === ptr); + assert(theAtomicWait.expected === expected); + assert(theAtomicWait.expectedType === binaryen.i32); + assert(theAtomicWait.timeout === timeout); + assert(theAtomicWait.type === binaryen.i32); + + theAtomicWait.ptr = ptr = module.i32.const(5); + assert(theAtomicWait.ptr === ptr); + theAtomicWait.expected = expected = module.i32.const(6); + assert(theAtomicWait.expected === expected); + theAtomicWait.expectedType = binaryen.i64; + assert(theAtomicWait.expectedType === binaryen.i64); + theAtomicWait.timeout = timeout = module.i64.const(7); + assert(theAtomicWait.timeout === timeout); + theAtomicWait.type = binaryen.f64; + theAtomicWait.finalize(); + assert(theAtomicWait.type === binaryen.i32); + + console.log(theAtomicWait.toText()); + assert( + theAtomicWait.toText() + == + "(memory.atomic.wait64\n (i32.const 5)\n (i32.const 6)\n (i64.const 7)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# AtomicNotify"); +(function testAtomicNotify() { + const module = new binaryen.Module(); + + var ptr = module.i32.const(1); + var notifyCount = module.i32.const(2); + const theAtomicNotify = binaryen.AtomicNotify(module.memory.atomic.notify(ptr, notifyCount)); + assert(theAtomicNotify instanceof binaryen.AtomicNotify); + assert(theAtomicNotify instanceof binaryen.Expression); + assert(theAtomicNotify.ptr === ptr); + assert(theAtomicNotify.notifyCount === notifyCount); + assert(theAtomicNotify.type === binaryen.i32); + + theAtomicNotify.ptr = ptr = module.i32.const(3); + assert(theAtomicNotify.ptr === ptr); + theAtomicNotify.notifyCount = notifyCount = module.i32.const(4); + assert(theAtomicNotify.notifyCount === notifyCount); + theAtomicNotify.type = binaryen.f64; + theAtomicNotify.finalize(); + assert(theAtomicNotify.type === binaryen.i32); + + console.log(theAtomicNotify.toText()); + assert( + theAtomicNotify.toText() + == + "(memory.atomic.notify\n (i32.const 3)\n (i32.const 4)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# AtomicFence"); +(function testAtomicFence() { + const module = new binaryen.Module(); + + const theAtomicFence = binaryen.AtomicFence(module.atomic.fence()); + assert(theAtomicFence instanceof binaryen.AtomicFence); + assert(theAtomicFence instanceof binaryen.Expression); + assert(theAtomicFence.order === 0); // reserved, not yet used + assert(theAtomicFence.type === binaryen.none); + + theAtomicFence.order = 1; + assert(theAtomicFence.order === 1); + theAtomicFence.type = binaryen.f64; + theAtomicFence.finalize(); + assert(theAtomicFence.type === binaryen.none); + + console.log(theAtomicFence.toText()); + assert( + theAtomicFence.toText() + == + "(atomic.fence)\n" + ); + + module.dispose(); +})(); + +console.log("# SIMDExtract"); +(function testSIMDExtract() { + const module = new binaryen.Module(); + + var op = binaryen.Operations.ExtractLaneSVecI8x16; + var vec = module.v128.const([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]); + var index = 0; + const theSIMDExtract = binaryen.SIMDExtract(module.i8x16.extract_lane_s(vec, index)); + assert(theSIMDExtract instanceof binaryen.SIMDExtract); + assert(theSIMDExtract instanceof binaryen.Expression); + assert(theSIMDExtract.op === op); + assert(theSIMDExtract.vec === vec); + assert(theSIMDExtract.index === index); + assert(theSIMDExtract.type === binaryen.i32); + + theSIMDExtract.op = op = binaryen.Operations.ExtractLaneSVecI16x8; + assert(theSIMDExtract.op === op); + theSIMDExtract.vec = vec = module.v128.const([1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]); + assert(theSIMDExtract.vec === vec); + theSIMDExtract.index = index = 1; + assert(theSIMDExtract.index === index); + theSIMDExtract.type = binaryen.f64; + theSIMDExtract.finalize(); + assert(theSIMDExtract.type === binaryen.i32); + + console.log(theSIMDExtract.toText()); + assert( + theSIMDExtract.toText() + == + "(i16x8.extract_lane_s 1\n (v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# SIMDReplace"); +(function testSIMDReplace() { + const module = new binaryen.Module(); + + var op = binaryen.Operations.ReplaceLaneVecI8x16; + var vec = module.v128.const([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]); + var index = 0; + var value = module.i32.const(1); + const theSIMDReplace = binaryen.SIMDReplace(module.i8x16.replace_lane(vec, index, value)); + assert(theSIMDReplace instanceof binaryen.SIMDReplace); + assert(theSIMDReplace instanceof binaryen.Expression); + assert(theSIMDReplace.op === op); + assert(theSIMDReplace.vec === vec); + assert(theSIMDReplace.index === index); + assert(theSIMDReplace.value === value); + assert(theSIMDReplace.type === binaryen.v128); + + theSIMDReplace.op = op = binaryen.Operations.ReplaceLaneVecI16x8; + assert(theSIMDReplace.op === op); + theSIMDReplace.vec = vec = module.v128.const([1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]); + assert(theSIMDReplace.vec === vec); + theSIMDReplace.index = index = 1; + assert(theSIMDReplace.index === index); + theSIMDReplace.value = value = module.i32.const(2); + assert(theSIMDReplace.value === value); + theSIMDReplace.type = binaryen.f64; + theSIMDReplace.finalize(); + assert(theSIMDReplace.type === binaryen.v128); + + console.log(theSIMDReplace.toText()); + assert( + theSIMDReplace.toText() + == + "(i16x8.replace_lane 1\n (v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101)\n (i32.const 2)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# SIMDShuffle"); +(function testSIMDShuffle() { + const module = new binaryen.Module(); + + var left = module.v128.const([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]); + var right = module.v128.const([2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]); + var mask = [3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]; + const theSIMDShuffle = binaryen.SIMDShuffle(module.v8x16.shuffle(left, right, mask)); + assert(theSIMDShuffle instanceof binaryen.SIMDShuffle); + assert(theSIMDShuffle instanceof binaryen.Expression); + assert(theSIMDShuffle.left === left); + assert(theSIMDShuffle.right === right); + assertDeepEqual(theSIMDShuffle.mask, mask); + assert(theSIMDShuffle.type === binaryen.v128); + + theSIMDShuffle.left = left = module.v128.const([1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]); + assert(theSIMDShuffle.left === left); + theSIMDShuffle.right = right = module.v128.const([2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]); + assert(theSIMDShuffle.right === right); + theSIMDShuffle.mask = mask = [3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3]; + assertDeepEqual(theSIMDShuffle.mask, mask); + theSIMDShuffle.type = binaryen.f64; + theSIMDShuffle.finalize(); + assert(theSIMDShuffle.type === binaryen.v128); + + console.log(theSIMDShuffle.toText()); + assert( + theSIMDShuffle.toText() + == + "(v8x16.shuffle 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3\n (v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101)\n (v128.const i32x4 0x02020202 0x02020202 0x02020202 0x02020202)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# SIMDTernary"); +(function testSIMDTernary() { + const module = new binaryen.Module(); + + var op = binaryen.Operations.BitselectVec128; + var a = module.v128.const([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]); + var b = module.v128.const([2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]); + var c = module.v128.const([3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]); + const theSIMDTernary = binaryen.SIMDTernary(module.v128.bitselect(a, b, c)); + assert(theSIMDTernary instanceof binaryen.SIMDTernary); + assert(theSIMDTernary instanceof binaryen.Expression); + assert(theSIMDTernary.op === op); + assert(theSIMDTernary.a === a); + assert(theSIMDTernary.b === b); + assert(theSIMDTernary.c === c); + assert(theSIMDTernary.type === binaryen.v128); + + theSIMDTernary.op = op = binaryen.Operations.QFMAVecF64x2; + assert(theSIMDTernary.op === op); + theSIMDTernary.a = a = module.v128.const([1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]); + assert(theSIMDTernary.a === a); + theSIMDTernary.b = b = module.v128.const([2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]); + assert(theSIMDTernary.b === b); + theSIMDTernary.c = c = module.v128.const([3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3]); + assert(theSIMDTernary.c === c); + theSIMDTernary.type = binaryen.f64; + theSIMDTernary.finalize(); + assert(theSIMDTernary.type === binaryen.v128); + + console.log(theSIMDTernary.toText()); + assert( + theSIMDTernary.toText() + == + "(f64x2.qfma\n (v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101)\n (v128.const i32x4 0x02020202 0x02020202 0x02020202 0x02020202)\n (v128.const i32x4 0x03030303 0x03030303 0x03030303 0x03030303)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# SIMDShift"); +(function testSIMDShift() { + const module = new binaryen.Module(); + + var op = binaryen.Operations.BitselectVec128; + var vec = module.v128.const([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]); + var shift = module.i32.const(1); + const theSIMDShift = binaryen.SIMDShift(module.i8x16.shl(vec, shift)); + assert(theSIMDShift instanceof binaryen.SIMDShift); + assert(theSIMDShift instanceof binaryen.Expression); + assert(theSIMDShift.op === op); + assert(theSIMDShift.vec === vec); + assert(theSIMDShift.shift === shift); + assert(theSIMDShift.type === binaryen.v128); + + theSIMDShift.op = op = binaryen.Operations.ShrSVecI8x16; + assert(theSIMDShift.op === op); + theSIMDShift.vec = vec = module.v128.const([1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]); + assert(theSIMDShift.vec === vec); + theSIMDShift.shift = shift = module.i32.const(2); + assert(theSIMDShift.shift === shift); + theSIMDShift.type = binaryen.f64; + theSIMDShift.finalize(); + assert(theSIMDShift.type === binaryen.v128); + + console.log(theSIMDShift.toText()); + assert( + theSIMDShift.toText() + == + "(i8x16.shr_s\n (v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101)\n (i32.const 2)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# SIMDLoad"); +(function testSIMDLoad() { + const module = new binaryen.Module(); + + var op = binaryen.Operations.LoadExtSVec8x8ToVecI16x8; + var offset = 16; + var align = 2; + var ptr = module.i32.const(1); + const theSIMDLoad = binaryen.SIMDLoad(module.i16x8.load8x8_s(offset, align, ptr)); + assert(theSIMDLoad instanceof binaryen.SIMDLoad); + assert(theSIMDLoad instanceof binaryen.Expression); + assert(theSIMDLoad.offset === offset); + assert(theSIMDLoad.align === align); + assert(theSIMDLoad.ptr === ptr); + assert(theSIMDLoad.type === binaryen.v128); + + theSIMDLoad.op = op = binaryen.Operations.LoadSplatVec8x16; + assert(theSIMDLoad.op === op); + theSIMDLoad.offset = offset = 32; + assert(theSIMDLoad.offset === offset); + theSIMDLoad.align = align = 4; + assert(theSIMDLoad.align === align); + theSIMDLoad.ptr = ptr = module.i32.const(2); + assert(theSIMDLoad.ptr === ptr); + theSIMDLoad.type = binaryen.f64; + theSIMDLoad.finalize(); + assert(theSIMDLoad.type === binaryen.v128); + + console.log(theSIMDLoad.toText()); + assert( + theSIMDLoad.toText() + == + "(v8x16.load_splat offset=32 align=4\n (i32.const 2)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# MemoryInit"); +(function testMemoryInit() { + const module = new binaryen.Module(); + + var segment = 1; + var dest = module.i32.const(2); + var offset = module.i32.const(3); + var size = module.i32.const(4); + const theMemoryInit = binaryen.MemoryInit(module.memory.init(segment, dest, offset, size)); + assert(theMemoryInit instanceof binaryen.MemoryInit); + assert(theMemoryInit instanceof binaryen.Expression); + assert(theMemoryInit.segment === segment); + assert(theMemoryInit.dest === dest); + assert(theMemoryInit.offset === offset); + assert(theMemoryInit.size === size); + assert(theMemoryInit.type === binaryen.none); + + theMemoryInit.segment = segment = 5; + assert(theMemoryInit.segment === 5); + theMemoryInit.dest = dest = module.i32.const(6); + assert(theMemoryInit.dest === dest); + theMemoryInit.offset = offset = module.i32.const(7); + assert(theMemoryInit.offset === offset); + theMemoryInit.size = size = module.i32.const(8); + assert(theMemoryInit.size === size); + theMemoryInit.type = binaryen.f64; + theMemoryInit.finalize(); + assert(theMemoryInit.type === binaryen.none); + + console.log(theMemoryInit.toText()); + assert( + theMemoryInit.toText() + == + "(memory.init 5\n (i32.const 6)\n (i32.const 7)\n (i32.const 8)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# DataDrop"); +(function testDataDrop() { + const module = new binaryen.Module(); + + var segment = 1; + const theDataDrop = binaryen.DataDrop(module.data.drop(segment)); + assert(theDataDrop instanceof binaryen.DataDrop); + assert(theDataDrop instanceof binaryen.Expression); + assert(theDataDrop.segment === segment); + assert(theDataDrop.type === binaryen.none); + + theDataDrop.segment = segment = 2; + assert(theDataDrop.segment === 2); + theDataDrop.type = binaryen.f64; + theDataDrop.finalize(); + assert(theDataDrop.type === binaryen.none); + + console.log(theDataDrop.toText()); + assert( + theDataDrop.toText() + == + "(data.drop 2)\n" + ); + + module.dispose(); +})(); + +console.log("# MemoryCopy"); +(function testMemoryCopy() { + const module = new binaryen.Module(); + + var dest = module.i32.const(1); + var source = module.i32.const(2); + var size = module.i32.const(3); + const theMemoryCopy = binaryen.MemoryCopy(module.memory.copy(dest, source, size)); + assert(theMemoryCopy instanceof binaryen.MemoryCopy); + assert(theMemoryCopy instanceof binaryen.Expression); + assert(theMemoryCopy.dest === dest); + assert(theMemoryCopy.source === source); + assert(theMemoryCopy.size === size); + assert(theMemoryCopy.type === binaryen.none); + + theMemoryCopy.dest = dest = module.i32.const(4); + assert(theMemoryCopy.dest === dest); + theMemoryCopy.source = source = module.i32.const(5); + assert(theMemoryCopy.source === source); + theMemoryCopy.size = size = module.i32.const(6); + assert(theMemoryCopy.size === size); + theMemoryCopy.type = binaryen.f64; + theMemoryCopy.finalize(); + assert(theMemoryCopy.type === binaryen.none); + + console.log(theMemoryCopy.toText()); + assert( + theMemoryCopy.toText() + == + "(memory.copy\n (i32.const 4)\n (i32.const 5)\n (i32.const 6)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# MemoryFill"); +(function testMemoryFill() { + const module = new binaryen.Module(); + + var dest = module.i32.const(1); + var value = module.i32.const(2); + var size = module.i32.const(3); + const theMemoryFill = binaryen.MemoryFill(module.memory.fill(dest, value, size)); + assert(theMemoryFill instanceof binaryen.MemoryFill); + assert(theMemoryFill instanceof binaryen.Expression); + assert(theMemoryFill.dest === dest); + assert(theMemoryFill.value === value); + assert(theMemoryFill.size === size); + assert(theMemoryFill.type === binaryen.none); + + theMemoryFill.dest = dest = module.i32.const(4); + assert(theMemoryFill.dest === dest); + theMemoryFill.value = value = module.i32.const(5); + assert(theMemoryFill.value === value); + theMemoryFill.size = size = module.i32.const(6); + assert(theMemoryFill.size === size); + theMemoryFill.type = binaryen.f64; + theMemoryFill.finalize(); + assert(theMemoryFill.type === binaryen.none); + + console.log(theMemoryFill.toText()); + assert( + theMemoryFill.toText() + == + "(memory.fill\n (i32.const 4)\n (i32.const 5)\n (i32.const 6)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# RefIsNull"); +(function testRefIsNull() { + const module = new binaryen.Module(); + + var value = module.local.get(1, binaryen.externref); + const theRefIsNull = binaryen.RefIsNull(module.ref.is_null(value)); + assert(theRefIsNull instanceof binaryen.RefIsNull); + assert(theRefIsNull instanceof binaryen.Expression); + assert(theRefIsNull.value === value); + assert(theRefIsNull.type === binaryen.i32); + + theRefIsNull.value = value = module.local.get(2, binaryen.externref); + assert(theRefIsNull.value === value); + theRefIsNull.type = binaryen.f64; + theRefIsNull.finalize(); + assert(theRefIsNull.type === binaryen.i32); + + console.log(theRefIsNull.toText()); + assert( + theRefIsNull.toText() + == + "(ref.is_null\n (local.get $2)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# RefFunc"); +(function testRefFunc() { + const module = new binaryen.Module(); + + var func = "a"; + const theRefFunc = binaryen.RefFunc(module.ref.func(func, binaryen.funcref)); + assert(theRefFunc instanceof binaryen.RefFunc); + assert(theRefFunc instanceof binaryen.Expression); + assert(theRefFunc.func === func); + assert(theRefFunc.type === binaryen.funcref); + + theRefFunc.func = func = "b"; + assert(theRefFunc.func === func); + theRefFunc.type = binaryen.f64; + theRefFunc.finalize(); + // TODO The type is a subtype of funcref, but we can't check that in the JS + // API atm. + + console.log(theRefFunc.toText()); + assert( + theRefFunc.toText() + == + "(ref.func $b)\n" + ); + + module.dispose(); +})(); + +console.log("# RefEq"); +(function testRefEq() { + const module = new binaryen.Module(); + + var left = module.local.get(0, binaryen.eqref); + var right = module.local.get(1, binaryen.eqref); + const theRefEq = binaryen.RefEq(module.ref.eq(left, right)); + assert(theRefEq instanceof binaryen.RefEq); + assert(theRefEq instanceof binaryen.Expression); + assert(theRefEq.left === left); + assert(theRefEq.right === right); + assert(theRefEq.type === binaryen.i32); + + theRefEq.left = left = module.local.get(2, binaryen.eqref); + assert(theRefEq.left === left); + theRefEq.right = right = module.local.get(3, binaryen.eqref); + assert(theRefEq.right === right); + theRefEq.type = binaryen.f64; + theRefEq.finalize(); + assert(theRefEq.type === binaryen.i32); + + console.log(theRefEq.toText()); + assert( + theRefEq.toText() + == + "(ref.eq\n (local.get $2)\n (local.get $3)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# Try"); +(function testTry() { + const module = new binaryen.Module(); + + var body = module.i32.const(1); + var catchBody = module.i32.const(2); + const theTry = binaryen.Try(module.try(body, catchBody)); + assert(theTry instanceof binaryen.Try); + assert(theTry instanceof binaryen.Expression); + assert(theTry.body === body); + assert(theTry.catchBody === catchBody); + assert(theTry.type === binaryen.i32); + + theTry.body = body = module.i32.const(3); + assert(theTry.body === body); + theTry.catchBody = catchBody = module.i32.const(4); + assert(theTry.catchBody === catchBody); + theTry.type = binaryen.f64; + theTry.finalize(); + assert(theTry.type === binaryen.i32); + + console.log(theTry.toText()); + assert( + theTry.toText() + == + "(try (result i32)\n (do\n (i32.const 3)\n )\n (catch\n (i32.const 4)\n )\n)\n" + ); + + module.dispose(); +})(); + +console.log("# Throw"); +(function testThrow() { + const module = new binaryen.Module(); + + var event = "foo"; + var operands = [ + module.i32.const(1), + module.i32.const(2) + ]; + const theThrow = binaryen.Throw(module.throw(event, operands)); + assert(theThrow instanceof binaryen.Throw); + assert(theThrow instanceof binaryen.Expression); + assert(theThrow.event === event); + assertDeepEqual(theThrow.operands, operands); + assert(theThrow.type === binaryen.unreachable); + + theThrow.event = "bar"; + assert(theThrow.event === "bar"); + theThrow.operands = operands = [ + module.i32.const(3), // set + module.i32.const(4), // set + module.i32.const(5) // append + ]; + assertDeepEqual(theThrow.operands, operands); + theThrow.operands = operands = [ + module.i32.const(6) // set + // remove + // remove + ]; + assertDeepEqual(theThrow.operands, operands); + theThrow.insertOperandAt(1, module.i32.const(7)); + theThrow.type = binaryen.f64; + theThrow.finalize(); + assert(theThrow.type === binaryen.unreachable); + + console.log(theThrow.toText()); + assert( + theThrow.toText() + == + "(throw $bar\n (i32.const 6)\n (i32.const 7)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# Rethrow"); +(function testRethrow() { + const module = new binaryen.Module(); + + var exnref = module.local.get(1, binaryen.exnref); + const theRethrow = binaryen.Rethrow(module.rethrow(exnref)); + assert(theRethrow instanceof binaryen.Rethrow); + assert(theRethrow instanceof binaryen.Expression); + assert(theRethrow.exnref === exnref); + assert(theRethrow.type === binaryen.unreachable); + + theRethrow.exnref = exnref = module.local.get(2, binaryen.exnref); + assert(theRethrow.exnref === exnref); + theRethrow.type = binaryen.f64; + theRethrow.finalize(); + assert(theRethrow.type === binaryen.unreachable); + + console.log(theRethrow.toText()); + assert( + theRethrow.toText() + == + "(rethrow\n (local.get $2)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# BrOnExn"); +(function testBrOnExn() { + const module = new binaryen.Module(); + module.addEvent("event1", 0, binaryen.none, binaryen.none); + module.addEvent("event2", 0, binaryen.none, binaryen.none); + + var name = "foo"; + var event = "event1"; + var exnref = module.local.get(1, binaryen.exnref); + const theBrOnExn = binaryen.BrOnExn(module.br_on_exn(name, event, exnref)); + assert(theBrOnExn instanceof binaryen.BrOnExn); + assert(theBrOnExn instanceof binaryen.Expression); + assert(theBrOnExn.name === name); + assert(theBrOnExn.event === event); + assert(theBrOnExn.exnref === exnref); + assert(theBrOnExn.type === binaryen.exnref); + + theBrOnExn.name = name = "bar"; + assert(theBrOnExn.name === name); + theBrOnExn.event = event = "event2"; + assert(theBrOnExn.event === event); + theBrOnExn.exnref = exnref = module.local.get(2, binaryen.exnref); + assert(theBrOnExn.exnref === exnref); + theBrOnExn.type = binaryen.f64; + theBrOnExn.finalize(); + assert(theBrOnExn.type === binaryen.exnref); + + console.log(theBrOnExn.toText()); + assert( + theBrOnExn.toText() + == + "(br_on_exn $bar $event2\n (local.get $2)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# TupleMake"); +(function testTupleMake() { + const module = new binaryen.Module(); + + var operands = [ + module.i32.const(1), + module.i32.const(2) + ]; + var type = binaryen.createType([ binaryen.i32, binaryen.i32 ]); + const theTupleMake = binaryen.TupleMake(module.tuple.make(operands)); + assert(theTupleMake instanceof binaryen.TupleMake); + assert(theTupleMake instanceof binaryen.Expression); + assertDeepEqual(theTupleMake.operands, operands); + assert(theTupleMake.type === type); + + theTupleMake.operands = operands = [ + module.i32.const(3), // set + module.i32.const(4), // set + module.i32.const(5) // append + ]; + assertDeepEqual(theTupleMake.operands, operands); + theTupleMake.operands = operands = [ + module.i32.const(6) // set + // remove + // remove + ]; + assertDeepEqual(theTupleMake.operands, operands); + theTupleMake.insertOperandAt(1, module.i32.const(7)); + theTupleMake.type = binaryen.f64; + theTupleMake.finalize(); + assert(theTupleMake.type === type); + + console.log(theTupleMake.toText()); + assert( + theTupleMake.toText() + == + "(tuple.make\n (i32.const 6)\n (i32.const 7)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# TupleExtract"); +(function testTupleExtract() { + const module = new binaryen.Module(); + + var tuple = module.tuple.make([ + module.i32.const(1), + module.i32.const(2) + ]); + var index = 1; + const theTupleExtract = binaryen.TupleExtract(module.tuple.extract(tuple, index)); + assert(theTupleExtract instanceof binaryen.TupleExtract); + assert(theTupleExtract instanceof binaryen.Expression); + assert(theTupleExtract.tuple === tuple); + assert(theTupleExtract.index === index); + assert(theTupleExtract.type === binaryen.i32); + + theTupleExtract.tuple = tuple = module.tuple.make([ + module.f64.const(3), + module.f64.const(4) + ]); + assert(theTupleExtract.tuple === tuple); + theTupleExtract.index = index = 0; + assert(theTupleExtract.index === index); + theTupleExtract.type = binaryen.i32; + theTupleExtract.finalize(); + assert(theTupleExtract.type === binaryen.f64); + + console.log(theTupleExtract.toText()); + assert( + theTupleExtract.toText() + == + "(tuple.extract 0\n (tuple.make\n (f64.const 3)\n (f64.const 4)\n )\n)\n" + ); + + module.dispose(); +})(); + +console.log("# I31New"); +(function testI31New() { + const module = new binaryen.Module(); + + var value = module.local.get(1, binaryen.i32); + const theI31New = binaryen.I31New(module.i31.new(value)); + assert(theI31New instanceof binaryen.I31New); + assert(theI31New instanceof binaryen.Expression); + assert(theI31New.value === value); + assert(theI31New.type === binaryen.i31ref); + + theI31New.value = value = module.local.get(2, binaryen.i32); + assert(theI31New.value === value); + theI31New.type = binaryen.f64; + theI31New.finalize(); + assert(theI31New.type === binaryen.i31ref); + + console.log(theI31New.toText()); + assert( + theI31New.toText() + == + "(i31.new\n (local.get $2)\n)\n" + ); + + module.dispose(); +})(); + +console.log("# I31Get"); +(function testI31Get() { + const module = new binaryen.Module(); + + var i31 = module.local.get(1, binaryen.i31ref); + const theI31Get = binaryen.I31Get(module.i31.get_s(i31)); + assert(theI31Get instanceof binaryen.I31Get); + assert(theI31Get instanceof binaryen.Expression); + assert(theI31Get.i31 === i31); + assert(theI31Get.signed === true); + assert(theI31Get.type === binaryen.i32); + + theI31Get.i31 = i31 = module.local.get(2, binaryen.i31ref); + assert(theI31Get.i31 === i31); + theI31Get.signed = false; + assert(theI31Get.signed === false); + theI31Get.type = binaryen.f64; + theI31Get.finalize(); + assert(theI31Get.type === binaryen.i32); + + console.log(theI31Get.toText()); + assert( + theI31Get.toText() + == + "(i31.get_u\n (local.get $2)\n)\n" + ); + + module.dispose(); +})(); diff -Nru binaryen-91/test/binaryen.js/expressions.js.txt binaryen-99/test/binaryen.js/expressions.js.txt --- binaryen-91/test/binaryen.js/expressions.js.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/binaryen.js/expressions.js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,268 @@ +# Expression +# Block +(block $theName (result i32) + (i32.const 0) +) + +# If +(if (result i32) + (i32.const 4) + (i32.const 5) + (i32.const 6) +) + +(if (result i32) + (i32.const 4) + (i32.const 5) +) + +# Loop +(loop $theName + (drop + (i32.const 1) + ) +) + +# Break +(br_if $theNewName + (i32.const 4) + (i32.const 3) +) + +# Switch +(br_table $x $y $c + (i32.const 4) + (i32.const 3) +) + +# Call +(call $bar + (i32.const 7) + (i32.const 6) +) + +# CallIndirect +(call_indirect (type $i32_i32_=>_i32) + (i32.const 7) + (i32.const 6) + (i32.const 9000) +) + +# LocalGet +(local.get $2) + +# LocalSet +(local.set $2 + (i32.const 3) +) + +# GlobalGet +(global.get $b) + +# GlobalSet +(global.set $b + (f64.const 3) +) + +# MemorySize +(memory.size) + +# MemoryGrow +(memory.grow + (i32.const 2) +) + +# Load +(i64.atomic.load offset=32 align=4 + (i32.const 128) +) + +# Store +(i64.atomic.store offset=32 align=4 + (i32.const 128) + (i32.const 2) +) + +# Const +(v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + +# Unary +(i64.eqz + (i64.const 2) +) + +# Binary +(i64.add + (i64.const 3) + (i64.const 4) +) + +# Select +(select + (i64.const 5) + (i64.const 6) + (i32.const 4) +) + +# Drop +(drop + (i32.const 2) +) + +# Return +(return + (i32.const 2) +) + +# AtomicRMW +(i64.atomic.rmw16.sub_u offset=16 + (i32.const 4) + (i64.const 5) +) + +# AtomicCmpxchg +(i64.atomic.rmw16.cmpxchg_u offset=16 + (i32.const 5) + (i64.const 6) + (i64.const 7) +) + +# AtomicWait +(memory.atomic.wait64 + (i32.const 5) + (i32.const 6) + (i64.const 7) +) + +# AtomicNotify +(memory.atomic.notify + (i32.const 3) + (i32.const 4) +) + +# AtomicFence +(atomic.fence) + +# SIMDExtract +(i16x8.extract_lane_s 1 + (v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101) +) + +# SIMDReplace +(i16x8.replace_lane 1 + (v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101) + (i32.const 2) +) + +# SIMDShuffle +(v8x16.shuffle 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 + (v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101) + (v128.const i32x4 0x02020202 0x02020202 0x02020202 0x02020202) +) + +# SIMDTernary +(f64x2.qfma + (v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101) + (v128.const i32x4 0x02020202 0x02020202 0x02020202 0x02020202) + (v128.const i32x4 0x03030303 0x03030303 0x03030303 0x03030303) +) + +# SIMDShift +(i8x16.shr_s + (v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101) + (i32.const 2) +) + +# SIMDLoad +(v8x16.load_splat offset=32 align=4 + (i32.const 2) +) + +# MemoryInit +(memory.init 5 + (i32.const 6) + (i32.const 7) + (i32.const 8) +) + +# DataDrop +(data.drop 2) + +# MemoryCopy +(memory.copy + (i32.const 4) + (i32.const 5) + (i32.const 6) +) + +# MemoryFill +(memory.fill + (i32.const 4) + (i32.const 5) + (i32.const 6) +) + +# RefIsNull +(ref.is_null + (local.get $2) +) + +# RefFunc +(ref.func $b) + +# RefEq +(ref.eq + (local.get $2) + (local.get $3) +) + +# Try +(try (result i32) + (do + (i32.const 3) + ) + (catch + (i32.const 4) + ) +) + +# Throw +(throw $bar + (i32.const 6) + (i32.const 7) +) + +# Rethrow +(rethrow + (local.get $2) +) + +# BrOnExn +(br_on_exn $bar $event2 + (local.get $2) +) + +# TupleMake +(tuple.make + (i32.const 6) + (i32.const 7) +) + +# TupleExtract +(tuple.extract 0 + (tuple.make + (f64.const 3) + (f64.const 4) + ) +) + +# I31New +(i31.new + (local.get $2) +) + +# I31Get +(i31.get_u + (local.get $2) +) + diff -Nru binaryen-91/test/binaryen.js/fast-math.js binaryen-99/test/binaryen.js/fast-math.js --- binaryen-91/test/binaryen.js/fast-math.js 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/binaryen.js/fast-math.js 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,3 @@ +console.log("// fastMath=" + binaryen.getFastMath()); +binaryen.setFastMath(true); +assert(binaryen.getFastMath() == true); diff -Nru binaryen-91/test/binaryen.js/fast-math.js.txt binaryen-99/test/binaryen.js/fast-math.js.txt --- binaryen-91/test/binaryen.js/fast-math.js.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/binaryen.js/fast-math.js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +// fastMath=false diff -Nru binaryen-91/test/binaryen.js/functions.js binaryen-99/test/binaryen.js/functions.js --- binaryen-91/test/binaryen.js/functions.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/functions.js 2021-01-07 20:01:06.000000000 +0000 @@ -32,3 +32,44 @@ assert(module.validate()); console.log(module.emitText()); + +// Test wrapper + +func = module.addFunction("b-function", + binaryen.createType([binaryen.i32, binaryen.i32]), + binaryen.i32, + [ binaryen.i32, binaryen.f64 ], + module.local.tee(2, + module.i32.add( + module.local.get(0, binaryen.i32), + module.local.get(1, binaryen.i32) + ), + binaryen.i32 + ) +); +binaryen.Function.setLocalName(func, 0, "a"); +binaryen.Function.setLocalName(func, 1, "b"); +binaryen.Function.setLocalName(func, 2, "ret"); +binaryen.Function.setLocalName(func, 3, "unused"); + +var theFunc = binaryen.Function(func); +assert(theFunc.name === "b-function"); +assert(theFunc.params === binaryen.createType([binaryen.i32, binaryen.i32])); +assert(theFunc.results === binaryen.i32); +assert(theFunc.numVars === 2); +assert(theFunc.getVar(0) === binaryen.i32); +assert(theFunc.getVar(1) === binaryen.f64); +assert(theFunc.numLocals === 4); +assert(theFunc.getLocalName(0) === "a"); +assert(theFunc.getLocalName(1) === "b"); +assert(theFunc.getLocalName(2) === "ret"); +assert(theFunc.getLocalName(3) === "unused"); +theFunc.setLocalName(2, "res"); +assert(theFunc.getLocalName(2) === "res"); +assert((theFunc | 0) === func); + +assert(module.validate()); + +console.log(module.emitText()); + +module.dispose(); diff -Nru binaryen-91/test/binaryen.js/functions.js.txt binaryen-99/test/binaryen.js/functions.js.txt --- binaryen-91/test/binaryen.js/functions.js.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/functions.js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -6,3 +6,17 @@ (module ) +(module + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (func $b-function (param $a i32) (param $b i32) (result i32) + (local $res i32) + (local $unused f64) + (local.tee $res + (i32.add + (local.get $a) + (local.get $b) + ) + ) + ) +) + diff -Nru binaryen-91/test/binaryen.js/hello-world.js.txt binaryen-99/test/binaryen.js/hello-world.js.txt --- binaryen-91/test/binaryen.js/hello-world.js.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/hello-world.js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (export "adder" (func $adder)) - (func $adder (; 0 ;) (param $0 i32) (param $1 i32) (result i32) + (func $adder (param $0 i32) (param $1 i32) (result i32) (return (i32.add (local.get $0) @@ -16,7 +16,7 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (export "adder" (func $adder)) - (func $adder (; 0 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) + (func $adder (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) (i32.add (local.get $0) (local.get $1) diff -Nru binaryen-91/test/binaryen.js/inlining-options.js binaryen-99/test/binaryen.js/inlining-options.js --- binaryen-91/test/binaryen.js/inlining-options.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/inlining-options.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,5 +1,3 @@ -binaryen.setAPITracing(true); - console.log("// alwaysInlineMaxSize=" + binaryen.getAlwaysInlineMaxSize()); binaryen.setAlwaysInlineMaxSize(11); assert(binaryen.getAlwaysInlineMaxSize() == 11); @@ -12,4 +10,6 @@ binaryen.setOneCallerInlineMaxSize(33); assert(binaryen.getOneCallerInlineMaxSize() == 33); -binaryen.setAPITracing(false); +console.log("// allowInliningFunctionsWithLoops=" + binaryen.getAllowInliningFunctionsWithLoops()); +binaryen.setAllowInliningFunctionsWithLoops(true); +assert(binaryen.getAllowInliningFunctionsWithLoops() == true); diff -Nru binaryen-91/test/binaryen.js/inlining-options.js.txt binaryen-99/test/binaryen.js/inlining-options.js.txt --- binaryen-91/test/binaryen.js/inlining-options.js.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/inlining-options.js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,28 +1,4 @@ -// beginning a Binaryen API trace -#include -#include -#include "binaryen-c.h" -int main() { - std::map expressions; - std::map functions; - std::map globals; - std::map events; - std::map exports; - std::map relooperBlocks; - BinaryenModuleRef the_module = NULL; - RelooperRef the_relooper = NULL; - BinaryenGetAlwaysInlineMaxSize(); // alwaysInlineMaxSize=2 - BinaryenSetAlwaysInlineMaxSize(11); - BinaryenGetAlwaysInlineMaxSize(); - BinaryenGetFlexibleInlineMaxSize(); // flexibleInlineMaxSize=20 - BinaryenSetFlexibleInlineMaxSize(22); - BinaryenGetFlexibleInlineMaxSize(); - BinaryenGetOneCallerInlineMaxSize(); // oneCallerInlineMaxSize=15 - BinaryenSetOneCallerInlineMaxSize(33); - BinaryenGetOneCallerInlineMaxSize(); - return 0; -} -// ending a Binaryen API trace +// allowInliningFunctionsWithLoops=false diff -Nru binaryen-91/test/binaryen.js/kitchen-sink.js binaryen-99/test/binaryen.js/kitchen-sink.js --- binaryen-91/test/binaryen.js/kitchen-sink.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/kitchen-sink.js 2021-01-07 20:01:06.000000000 +0000 @@ -48,42 +48,56 @@ function test_types() { console.log(" // BinaryenTypeNone: " + binaryen.none); - console.log(" //", binaryen.expandType(binaryen.none)); + console.log(" //", binaryen.expandType(binaryen.none).join(",")); console.log(" // BinaryenTypeUnreachable: " + binaryen.unreachable); - console.log(" //", binaryen.expandType(binaryen.unreachable)); + console.log(" //", binaryen.expandType(binaryen.unreachable).join(",")); console.log(" // BinaryenTypeInt32: " + binaryen.i32); - console.log(" //", binaryen.expandType(binaryen.i32)); + console.log(" //", binaryen.expandType(binaryen.i32).join(",")); console.log(" // BinaryenTypeInt64: " + binaryen.i64); - console.log(" //", binaryen.expandType(binaryen.i64)); + console.log(" //", binaryen.expandType(binaryen.i64).join(",")); console.log(" // BinaryenTypeFloat32: " + binaryen.f32); - console.log(" //", binaryen.expandType(binaryen.f32)); + console.log(" //", binaryen.expandType(binaryen.f32).join(",")); console.log(" // BinaryenTypeFloat64: " + binaryen.f64); - console.log(" //", binaryen.expandType(binaryen.f64)); + console.log(" //", binaryen.expandType(binaryen.f64).join(",")); console.log(" // BinaryenTypeVec128: " + binaryen.v128); - console.log(" //", binaryen.expandType(binaryen.v128)); + console.log(" //", binaryen.expandType(binaryen.v128).join(",")); - console.log(" // BinaryenTypeAnyref: " + binaryen.anyref); - console.log(" //", binaryen.expandType(binaryen.anyref)); + console.log(" // BinaryenTypeFuncref: " + binaryen.funcref); + console.log(" //", binaryen.expandType(binaryen.funcref).join(",")); + + console.log(" // BinaryenTypeExternref: " + binaryen.externref); + console.log(" //", binaryen.expandType(binaryen.externref).join(",")); console.log(" // BinaryenTypeExnref: " + binaryen.exnref); - console.log(" //", binaryen.expandType(binaryen.exnref)); + console.log(" //", binaryen.expandType(binaryen.exnref).join(",")); + + console.log(" // BinaryenTypeAnyref: " + binaryen.anyref); + console.log(" //", binaryen.expandType(binaryen.anyref).join(",")); + + console.log(" // BinaryenTypeEqref: " + binaryen.eqref); + console.log(" //", binaryen.expandType(binaryen.eqref).join(",")); + + console.log(" // BinaryenTypeI31ref: " + binaryen.i31ref); + console.log(" //", binaryen.expandType(binaryen.i31ref).join(",")); console.log(" // BinaryenTypeAuto: " + binaryen.auto); var i32_pair = binaryen.createType([binaryen.i32, binaryen.i32]); - console.log(" //", i32_pair, binaryen.expandType(i32_pair)); + console.log(" //", binaryen.expandType(i32_pair).join(",")); var duplicate_pair = binaryen.createType([binaryen.i32, binaryen.i32]); - console.log(" //", duplicate_pair, binaryen.expandType(duplicate_pair)); + console.log(" //", binaryen.expandType(duplicate_pair).join(",")); + + assert(i32_pair == duplicate_pair); var f32_pair = binaryen.createType([binaryen.f32, binaryen.f32]); - console.log(" //", f32_pair, binaryen.expandType(f32_pair)); + console.log(" //", binaryen.expandType(f32_pair).join(",")); } function test_features() { @@ -97,6 +111,9 @@ console.log("Features.ExceptionHandling: " + binaryen.Features.ExceptionHandling); console.log("Features.TailCall: " + binaryen.Features.TailCall); console.log("Features.ReferenceTypes: " + binaryen.Features.ReferenceTypes); + console.log("Features.Multivalue: " + binaryen.Features.Multivalue); + console.log("Features.GC: " + binaryen.Features.GC); + console.log("Features.Memory64: " + binaryen.Features.Memory64); console.log("Features.All: " + binaryen.Features.All); } @@ -121,7 +138,8 @@ console.log("SelectId: " + binaryen.SelectId); console.log("DropId: " + binaryen.DropId); console.log("ReturnId: " + binaryen.ReturnId); - console.log("HostId: " + binaryen.HostId); + console.log("MemorySizeId: " + binaryen.MemorySizeId); + console.log("MemoryGrowId: " + binaryen.MemoryGrowId); console.log("NopId: " + binaryen.NopId); console.log("UnreachableId: " + binaryen.UnreachableId); console.log("AtomicCmpxchgId: " + binaryen.AtomicCmpxchgId); @@ -138,12 +156,32 @@ console.log("DataDropId: " + binaryen.DataDropId); console.log("MemoryCopyId: " + binaryen.MemoryCopyId); console.log("MemoryFillId: " + binaryen.MemoryFillId); + console.log("PopId: " + binaryen.PopId); + console.log("RefNullId: " + binaryen.RefNullId); + console.log("RefIsNullId: " + binaryen.RefIsNullId); + console.log("RefFuncId: " + binaryen.RefFuncId); + console.log("RefEqId: " + binaryen.RefEqId); console.log("TryId: " + binaryen.TryId); console.log("ThrowId: " + binaryen.ThrowId); console.log("RethrowId: " + binaryen.RethrowId); console.log("BrOnExnId: " + binaryen.BrOnExnId); - console.log("PushId: " + binaryen.PushId); - console.log("PopId: " + binaryen.PopId); + console.log("TupleMakeId: " + binaryen.TupleMakeId); + console.log("TupleExtractId: " + binaryen.TupleExtractId); + console.log("I31NewId: " + binaryen.I31NewId); + console.log("I31GetId: " + binaryen.I31GetId); + console.log("CallRefId: " + binaryen.CallRefId); + console.log("RefTestId: " + binaryen.RefTestId); + console.log("RefCastId: " + binaryen.RefCastId); + console.log("BrOnCastId: " + binaryen.BrOnCastId); + console.log("RttCanonId: " + binaryen.RttCanonId); + console.log("RttSubId: " + binaryen.RttSubId); + console.log("StructNewId: " + binaryen.StructNewId); + console.log("StructGetId: " + binaryen.StructGetId); + console.log("StructSetId: " + binaryen.StructSetId); + console.log("ArrayNewId: " + binaryen.ArrayNewId); + console.log("ArrayGetId: " + binaryen.ArrayGetId); + console.log("ArraySetId: " + binaryen.ArraySetId); + console.log("ArrayLenId: " + binaryen.ArrayLenId); } function test_core() { @@ -227,18 +265,22 @@ module.f32x4.splat(module.f32.const(42.0)), module.f64x2.splat(module.f64.const(42.0)), module.v128.not(module.v128.const(v128_bytes)), + module.i8x16.abs(module.v128.const(v128_bytes)), module.i8x16.neg(module.v128.const(v128_bytes)), module.i8x16.any_true(module.v128.const(v128_bytes)), module.i8x16.all_true(module.v128.const(v128_bytes)), + module.i8x16.bitmask(module.v128.const(v128_bytes)), + module.i16x8.abs(module.v128.const(v128_bytes)), module.i16x8.neg(module.v128.const(v128_bytes)), module.i16x8.any_true(module.v128.const(v128_bytes)), module.i16x8.all_true(module.v128.const(v128_bytes)), + module.i16x8.bitmask(module.v128.const(v128_bytes)), + module.i32x4.abs(module.v128.const(v128_bytes)), module.i32x4.neg(module.v128.const(v128_bytes)), module.i32x4.any_true(module.v128.const(v128_bytes)), module.i32x4.all_true(module.v128.const(v128_bytes)), + module.i32x4.bitmask(module.v128.const(v128_bytes)), module.i64x2.neg(module.v128.const(v128_bytes)), - module.i64x2.any_true(module.v128.const(v128_bytes)), - module.i64x2.all_true(module.v128.const(v128_bytes)), module.f32x4.abs(module.v128.const(v128_bytes)), module.f32x4.neg(module.v128.const(v128_bytes)), module.f32x4.sqrt(module.v128.const(v128_bytes)), @@ -374,18 +416,31 @@ module.i32x4.dot_i16x8_s(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), module.i64x2.add(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), module.i64x2.sub(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), + module.i64x2.mul(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), module.f32x4.add(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), module.f32x4.sub(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), module.f32x4.mul(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), module.f32x4.div(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), module.f32x4.min(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), module.f32x4.max(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), + module.f32x4.pmin(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), + module.f32x4.pmax(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), + module.f32x4.ceil(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), + module.f32x4.floor(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), + module.f32x4.trunc(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), + module.f32x4.nearest(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), module.f64x2.add(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), module.f64x2.sub(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), module.f64x2.mul(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), module.f64x2.div(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), module.f64x2.min(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), module.f64x2.max(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), + module.f64x2.pmin(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), + module.f64x2.pmax(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), + module.f64x2.ceil(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), + module.f64x2.floor(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), + module.f64x2.trunc(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), + module.f64x2.nearest(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), module.i8x16.narrow_i16x8_s(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), module.i8x16.narrow_i16x8_u(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), module.i16x8.narrow_i32x4_s(module.v128.const(v128_bytes), module.v128.const(v128_bytes)), @@ -463,7 +518,7 @@ ) ), module.i32.eqz( // check the output type of the call node - module.callIndirect(makeInt32(2449), [ makeInt32(13), makeInt64(37, 0), makeFloat32(1.3), makeFloat64(3.7) ], iIfF, binaryen.i32) + module.call_indirect(makeInt32(2449), [ makeInt32(13), makeInt64(37, 0), makeFloat32(1.3), makeFloat64(3.7) ], iIfF, binaryen.i32) ), module.drop(module.local.get(0, binaryen.i32)), module.local.set(0, makeInt32(101)), @@ -477,13 +532,17 @@ module.select(temp10, temp11, temp12), module.return(makeInt32(1337)), // Tail Call - module.returnCall("kitchen()sinker", [ makeInt32(13), makeInt64(37, 0), makeFloat32(1.3), makeFloat64(3.7) ], binaryen.i32), - module.returnCallIndirect(makeInt32(2449), [ makeInt32(13), makeInt64(37, 0), makeFloat32(1.3), makeFloat64(3.7) ], iIfF, binaryen.i32), + module.return_call("kitchen()sinker", [ makeInt32(13), makeInt64(37, 0), makeFloat32(1.3), makeFloat64(3.7) ], binaryen.i32), + module.return_call_indirect(makeInt32(2449), [ makeInt32(13), makeInt64(37, 0), makeFloat32(1.3), makeFloat64(3.7) ], iIfF, binaryen.i32), // Reference types - module.ref.is_null(module.ref.null()), - module.ref.is_null(module.ref.func("kitchen()sinker")), - module.select(temp10, module.ref.null(), module.ref.func("kitchen()sinker"), binaryen.funcref), + module.ref.is_null(module.ref.null(binaryen.externref)), + module.ref.is_null(module.ref.null(binaryen.funcref)), + module.ref.is_null(module.ref.func("kitchen()sinker", binaryen.funcref)), + module.select(temp10, module.ref.null(binaryen.funcref), module.ref.func("kitchen()sinker", binaryen.funcref), binaryen.funcref), + + // GC + module.ref.eq(module.ref.null(binaryen.eqref), module.ref.null(binaryen.eqref)), // Exception handling module.try( @@ -510,31 +569,63 @@ ) ), module.drop( - module.i32.atomic.wait( + module.memory.atomic.wait32( module.i32.const(0), module.i32.const(0), module.i64.const(0) ) ), module.drop( - module.atomic.notify( + module.memory.atomic.notify( module.i32.const(0), module.i32.const(0) ) ), module.atomic.fence(), - // Push and pop - module.push(module.i32.pop()), - module.push(module.i64.pop()), - module.push(module.f32.pop()), - module.push(module.f64.pop()), - module.push(module.v128.pop()), - module.push(module.anyref.pop()), - module.push(module.funcref.pop()), - module.push(module.nullref.pop()), - module.push(module.exnref.pop()), - // TODO: Host + // Tuples + module.tuple.make( + [ makeInt32(13), makeInt64(37, 0), makeFloat32(1.3), makeFloat64(3.7) ] + ), + module.tuple.extract( + module.tuple.make( + [ makeInt32(13), makeInt64(37, 0), makeFloat32(1.3), makeFloat64(3.7) ] + ), 2 + ), + + // Pop + module.i32.pop(), + module.i64.pop(), + module.f32.pop(), + module.f64.pop(), + module.v128.pop(), + module.funcref.pop(), + module.externref.pop(), + module.exnref.pop(), + module.anyref.pop(), + module.eqref.pop(), + module.i31ref.pop(), + + // Memory + module.memory.size(), + module.memory.grow(makeInt32(0)), + + // GC + module.i31.new( + module.i32.const(0) + ), + module.i31.get_s( + module.i31.new( + module.i32.const(1) + ) + ), + module.i31.get_u( + module.i31.new( + module.i32.const(2) + ) + ), + + // Other module.nop(), module.unreachable(), ]; @@ -547,6 +638,12 @@ console.log("getExpressionInfo(i64.const)=" + JSON.stringify(binaryen.getExpressionInfo(module.i64.const(6, 7)))); console.log("getExpressionInfo(f32.const)=" + JSON.stringify(binaryen.getExpressionInfo(module.f32.const(8.5)))); console.log("getExpressionInfo(f64.const)=" + JSON.stringify(binaryen.getExpressionInfo(module.f64.const(9.5)))); + var elements = binaryen.getExpressionInfo( + module.tuple.make([ makeInt32(13), makeInt64(37, 0), makeFloat32(1.3), makeFloat64(3.7) ]) + ).operands; + for (var i = 0; i < elements.length; i++) { + console.log("getExpressionInfo(tuple[" + i + "])=" + JSON.stringify(binaryen.getExpressionInfo(elements[i]))); + } // Make the main body of the function. and one block with a return value, one without var value = module.block("the-value", valueList); @@ -872,14 +969,6 @@ module.dispose(); } -function test_tracing() { - binaryen.setAPITracing(1); - test_core(); - test_relooper(); - test_types(); - binaryen.setAPITracing(0); -} - function test_parsing() { var text; @@ -944,7 +1033,16 @@ var expected_data = ["hello, world", "segment data 2"]; var expected_passive = [false, false]; - var global = module.addGlobal("a-global", binaryen.i32, false, module.i32.const(expected_offsets[1])) + var glos = [ + module.addGlobal("a-global", binaryen.i32, false, module.i32.const(expected_offsets[1])), + module.addGlobal("a-global2", binaryen.i32, false, module.i32.const(2)), + module.addGlobal("a-global3", binaryen.i32, false, module.i32.const(3)) + ]; + + for (i = 0; i < module.getNumGlobals(); i++) { + assert(module.getGlobalByIndex(i) === glos[i]); + } + module.setMemory(1, 256, "mem", [ { passive: expected_passive[0], @@ -994,8 +1092,6 @@ module.dispose(); } -// Tracing must be first so it starts with a fresh set of interned types -test_tracing(); test_types(); test_features(); test_ids(); diff -Nru binaryen-91/test/binaryen.js/kitchen-sink.js.txt binaryen-99/test/binaryen.js/kitchen-sink.js.txt --- binaryen-91/test/binaryen.js/kitchen-sink.js.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/kitchen-sink.js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,6277 +1,33 @@ -// beginning a Binaryen API trace -#include -#include -#include "binaryen-c.h" -int main() { - std::map expressions; - std::map functions; - std::map globals; - std::map events; - std::map exports; - std::map relooperBlocks; - BinaryenModuleRef the_module = NULL; - RelooperRef the_relooper = NULL; - the_module = BinaryenModuleCreate(); - expressions[size_t(NULL)] = BinaryenExpressionRef(NULL); - BinaryenAddEvent(the_module, "a-event", 0, 2, 0); - expressions[1] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[2] = BinaryenConst(the_module, BinaryenLiteralInt64(2)); - expressions[3] = BinaryenConst(the_module, BinaryenLiteralFloat32(3.14)); - expressions[4] = BinaryenConst(the_module, BinaryenLiteralFloat64(2.1828)); - expressions[5] = BinaryenConst(the_module, BinaryenLiteralFloat32(NAN)); - expressions[6] = BinaryenConst(the_module, BinaryenLiteralFloat64(NAN)); - { - BinaryenType t0[] = {2, 3, 4, 5}; - BinaryenTypeCreate(t0, 4); // 11 - } - expressions[7] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[8] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - expressions[9] = BinaryenConst(the_module, BinaryenLiteralInt32(3)); - expressions[10] = BinaryenConst(the_module, BinaryenLiteralInt32(4)); - expressions[11] = BinaryenConst(the_module, BinaryenLiteralInt32(5)); - expressions[12] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - expressions[13] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[14] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - expressions[15] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[16] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[17] = BinaryenConst(the_module, BinaryenLiteralInt32(3)); - expressions[18] = BinaryenConst(the_module, BinaryenLiteralInt32(5)); - expressions[19] = BinaryenConst(the_module, BinaryenLiteralInt32(10)); - expressions[20] = BinaryenConst(the_module, BinaryenLiteralInt32(11)); - expressions[21] = BinaryenConst(the_module, BinaryenLiteralInt32(110)); - expressions[22] = BinaryenConst(the_module, BinaryenLiteralInt64(111)); - expressions[23] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[24] = BinaryenUnary(the_module, 0, expressions[23]); - expressions[25] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[26] = BinaryenUnary(the_module, 3, expressions[25]); - expressions[27] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[28] = BinaryenUnary(the_module, 4, expressions[27]); - expressions[29] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[30] = BinaryenUnary(the_module, 6, expressions[29]); - expressions[31] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[32] = BinaryenUnary(the_module, 9, expressions[31]); - expressions[33] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[34] = BinaryenUnary(the_module, 10, expressions[33]); - expressions[35] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[36] = BinaryenUnary(the_module, 13, expressions[35]); - expressions[37] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[38] = BinaryenUnary(the_module, 14, expressions[37]); - expressions[39] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[40] = BinaryenUnary(the_module, 16, expressions[39]); - expressions[41] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[42] = BinaryenUnary(the_module, 19, expressions[41]); - expressions[43] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[44] = BinaryenUnary(the_module, 20, expressions[43]); - expressions[45] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[46] = BinaryenUnary(the_module, 22, expressions[45]); - expressions[47] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[48] = BinaryenUnary(the_module, 23, expressions[47]); - expressions[49] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[50] = BinaryenUnary(the_module, 24, expressions[49]); - expressions[51] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[52] = BinaryenUnary(the_module, 25, expressions[51]); - expressions[53] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[54] = BinaryenUnary(the_module, 26, expressions[53]); - expressions[55] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[56] = BinaryenUnary(the_module, 27, expressions[55]); - expressions[57] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[58] = BinaryenUnary(the_module, 28, expressions[57]); - expressions[59] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[60] = BinaryenUnary(the_module, 29, expressions[59]); - expressions[61] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[62] = BinaryenUnary(the_module, 30, expressions[61]); - expressions[63] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[64] = BinaryenUnary(the_module, 31, expressions[63]); - expressions[65] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[66] = BinaryenUnary(the_module, 32, expressions[65]); - expressions[67] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[68] = BinaryenUnary(the_module, 52, expressions[67]); - expressions[69] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[70] = BinaryenUnary(the_module, 56, expressions[69]); - expressions[71] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[72] = BinaryenUnary(the_module, 53, expressions[71]); - expressions[73] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[74] = BinaryenUnary(the_module, 57, expressions[73]); - expressions[75] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[76] = BinaryenUnary(the_module, 54, expressions[75]); - expressions[77] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[78] = BinaryenUnary(the_module, 58, expressions[77]); - expressions[79] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[80] = BinaryenUnary(the_module, 55, expressions[79]); - expressions[81] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[82] = BinaryenUnary(the_module, 59, expressions[81]); - expressions[83] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[84] = BinaryenUnary(the_module, 33, expressions[83]); - expressions[85] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[86] = BinaryenUnary(the_module, 34, expressions[85]); - expressions[87] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[88] = BinaryenUnary(the_module, 35, expressions[87]); - expressions[89] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[90] = BinaryenUnary(the_module, 36, expressions[89]); - expressions[91] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[92] = BinaryenUnary(the_module, 37, expressions[91]); - expressions[93] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[94] = BinaryenUnary(the_module, 38, expressions[93]); - expressions[95] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[96] = BinaryenUnary(the_module, 39, expressions[95]); - expressions[97] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[98] = BinaryenUnary(the_module, 40, expressions[97]); - expressions[99] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[100] = BinaryenUnary(the_module, 41, expressions[99]); - expressions[101] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[102] = BinaryenUnary(the_module, 42, expressions[101]); - expressions[103] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[104] = BinaryenUnary(the_module, 43, expressions[103]); - expressions[105] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[106] = BinaryenUnary(the_module, 44, expressions[105]); - expressions[107] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[108] = BinaryenUnary(the_module, 45, expressions[107]); - expressions[109] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[110] = BinaryenUnary(the_module, 46, expressions[109]); - expressions[111] = BinaryenConst(the_module, BinaryenLiteralInt32(42)); - expressions[112] = BinaryenUnary(the_module, 60, expressions[111]); - expressions[113] = BinaryenConst(the_module, BinaryenLiteralInt32(42)); - expressions[114] = BinaryenUnary(the_module, 61, expressions[113]); - expressions[115] = BinaryenConst(the_module, BinaryenLiteralInt32(42)); - expressions[116] = BinaryenUnary(the_module, 62, expressions[115]); - expressions[117] = BinaryenConst(the_module, BinaryenLiteralInt64(1958505087099)); - expressions[118] = BinaryenUnary(the_module, 63, expressions[117]); - expressions[119] = BinaryenConst(the_module, BinaryenLiteralFloat32(42)); - expressions[120] = BinaryenUnary(the_module, 64, expressions[119]); - expressions[121] = BinaryenConst(the_module, BinaryenLiteralFloat64(42)); - expressions[122] = BinaryenUnary(the_module, 65, expressions[121]); - { - uint8_t t1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[123] = BinaryenConst(the_module, BinaryenLiteralVec128(t1)); - } - expressions[124] = BinaryenUnary(the_module, 66, expressions[123]); - { - uint8_t t2[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[125] = BinaryenConst(the_module, BinaryenLiteralVec128(t2)); - } - expressions[126] = BinaryenUnary(the_module, 67, expressions[125]); - { - uint8_t t3[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[127] = BinaryenConst(the_module, BinaryenLiteralVec128(t3)); - } - expressions[128] = BinaryenUnary(the_module, 68, expressions[127]); - { - uint8_t t4[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[129] = BinaryenConst(the_module, BinaryenLiteralVec128(t4)); - } - expressions[130] = BinaryenUnary(the_module, 69, expressions[129]); - { - uint8_t t5[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[131] = BinaryenConst(the_module, BinaryenLiteralVec128(t5)); - } - expressions[132] = BinaryenUnary(the_module, 70, expressions[131]); - { - uint8_t t6[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[133] = BinaryenConst(the_module, BinaryenLiteralVec128(t6)); - } - expressions[134] = BinaryenUnary(the_module, 71, expressions[133]); - { - uint8_t t7[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[135] = BinaryenConst(the_module, BinaryenLiteralVec128(t7)); - } - expressions[136] = BinaryenUnary(the_module, 72, expressions[135]); - { - uint8_t t8[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[137] = BinaryenConst(the_module, BinaryenLiteralVec128(t8)); - } - expressions[138] = BinaryenUnary(the_module, 73, expressions[137]); - { - uint8_t t9[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[139] = BinaryenConst(the_module, BinaryenLiteralVec128(t9)); - } - expressions[140] = BinaryenUnary(the_module, 74, expressions[139]); - { - uint8_t t10[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[141] = BinaryenConst(the_module, BinaryenLiteralVec128(t10)); - } - expressions[142] = BinaryenUnary(the_module, 75, expressions[141]); - { - uint8_t t11[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[143] = BinaryenConst(the_module, BinaryenLiteralVec128(t11)); - } - expressions[144] = BinaryenUnary(the_module, 76, expressions[143]); - { - uint8_t t12[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[145] = BinaryenConst(the_module, BinaryenLiteralVec128(t12)); - } - expressions[146] = BinaryenUnary(the_module, 77, expressions[145]); - { - uint8_t t13[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[147] = BinaryenConst(the_module, BinaryenLiteralVec128(t13)); - } - expressions[148] = BinaryenUnary(the_module, 78, expressions[147]); - { - uint8_t t14[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[149] = BinaryenConst(the_module, BinaryenLiteralVec128(t14)); - } - expressions[150] = BinaryenUnary(the_module, 79, expressions[149]); - { - uint8_t t15[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[151] = BinaryenConst(the_module, BinaryenLiteralVec128(t15)); - } - expressions[152] = BinaryenUnary(the_module, 80, expressions[151]); - { - uint8_t t16[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[153] = BinaryenConst(the_module, BinaryenLiteralVec128(t16)); - } - expressions[154] = BinaryenUnary(the_module, 81, expressions[153]); - { - uint8_t t17[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[155] = BinaryenConst(the_module, BinaryenLiteralVec128(t17)); - } - expressions[156] = BinaryenUnary(the_module, 82, expressions[155]); - { - uint8_t t18[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[157] = BinaryenConst(the_module, BinaryenLiteralVec128(t18)); - } - expressions[158] = BinaryenUnary(the_module, 83, expressions[157]); - { - uint8_t t19[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[159] = BinaryenConst(the_module, BinaryenLiteralVec128(t19)); - } - expressions[160] = BinaryenUnary(the_module, 84, expressions[159]); - { - uint8_t t20[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[161] = BinaryenConst(the_module, BinaryenLiteralVec128(t20)); - } - expressions[162] = BinaryenUnary(the_module, 85, expressions[161]); - { - uint8_t t21[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[163] = BinaryenConst(the_module, BinaryenLiteralVec128(t21)); - } - expressions[164] = BinaryenUnary(the_module, 86, expressions[163]); - { - uint8_t t22[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[165] = BinaryenConst(the_module, BinaryenLiteralVec128(t22)); - } - expressions[166] = BinaryenUnary(the_module, 87, expressions[165]); - { - uint8_t t23[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[167] = BinaryenConst(the_module, BinaryenLiteralVec128(t23)); - } - expressions[168] = BinaryenUnary(the_module, 88, expressions[167]); - { - uint8_t t24[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[169] = BinaryenConst(the_module, BinaryenLiteralVec128(t24)); - } - expressions[170] = BinaryenUnary(the_module, 89, expressions[169]); - { - uint8_t t25[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[171] = BinaryenConst(the_module, BinaryenLiteralVec128(t25)); - } - expressions[172] = BinaryenUnary(the_module, 90, expressions[171]); - { - uint8_t t26[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[173] = BinaryenConst(the_module, BinaryenLiteralVec128(t26)); - } - expressions[174] = BinaryenUnary(the_module, 91, expressions[173]); - { - uint8_t t27[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[175] = BinaryenConst(the_module, BinaryenLiteralVec128(t27)); - } - expressions[176] = BinaryenUnary(the_module, 92, expressions[175]); - { - uint8_t t28[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[177] = BinaryenConst(the_module, BinaryenLiteralVec128(t28)); - } - expressions[178] = BinaryenUnary(the_module, 93, expressions[177]); - { - uint8_t t29[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[179] = BinaryenConst(the_module, BinaryenLiteralVec128(t29)); - } - expressions[180] = BinaryenUnary(the_module, 94, expressions[179]); - { - uint8_t t30[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[181] = BinaryenConst(the_module, BinaryenLiteralVec128(t30)); - } - expressions[182] = BinaryenUnary(the_module, 95, expressions[181]); - { - uint8_t t31[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[183] = BinaryenConst(the_module, BinaryenLiteralVec128(t31)); - } - expressions[184] = BinaryenUnary(the_module, 96, expressions[183]); - { - uint8_t t32[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[185] = BinaryenConst(the_module, BinaryenLiteralVec128(t32)); - } - expressions[186] = BinaryenUnary(the_module, 97, expressions[185]); - { - uint8_t t33[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[187] = BinaryenConst(the_module, BinaryenLiteralVec128(t33)); - } - expressions[188] = BinaryenUnary(the_module, 98, expressions[187]); - { - uint8_t t34[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[189] = BinaryenConst(the_module, BinaryenLiteralVec128(t34)); - } - expressions[190] = BinaryenUnary(the_module, 99, expressions[189]); - { - uint8_t t35[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[191] = BinaryenConst(the_module, BinaryenLiteralVec128(t35)); - } - expressions[192] = BinaryenUnary(the_module, 100, expressions[191]); - expressions[193] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[194] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[195] = BinaryenBinary(the_module, 0, expressions[193], expressions[194]); - expressions[196] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[197] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9007.33)); - expressions[198] = BinaryenBinary(the_module, 64, expressions[196], expressions[197]); - expressions[199] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[200] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[201] = BinaryenBinary(the_module, 3, expressions[199], expressions[200]); - expressions[202] = BinaryenConst(the_module, BinaryenLiteralInt64(4294967274)); - expressions[203] = BinaryenConst(the_module, BinaryenLiteralInt64(4294967273)); - expressions[204] = BinaryenBinary(the_module, 29, expressions[202], expressions[203]); - expressions[205] = BinaryenConst(the_module, BinaryenLiteralInt64(4294967274)); - expressions[206] = BinaryenConst(the_module, BinaryenLiteralInt64(4294967273)); - expressions[207] = BinaryenBinary(the_module, 30, expressions[205], expressions[206]); - expressions[208] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[209] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[210] = BinaryenBinary(the_module, 6, expressions[208], expressions[209]); - expressions[211] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[212] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[213] = BinaryenBinary(the_module, 7, expressions[211], expressions[212]); - expressions[214] = BinaryenConst(the_module, BinaryenLiteralInt64(4294967274)); - expressions[215] = BinaryenConst(the_module, BinaryenLiteralInt64(4294967273)); - expressions[216] = BinaryenBinary(the_module, 33, expressions[214], expressions[215]); - expressions[217] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[218] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[219] = BinaryenBinary(the_module, 9, expressions[217], expressions[218]); - expressions[220] = BinaryenConst(the_module, BinaryenLiteralInt64(4294967274)); - expressions[221] = BinaryenConst(the_module, BinaryenLiteralInt64(4294967273)); - expressions[222] = BinaryenBinary(the_module, 35, expressions[220], expressions[221]); - expressions[223] = BinaryenConst(the_module, BinaryenLiteralInt64(4294967274)); - expressions[224] = BinaryenConst(the_module, BinaryenLiteralInt64(4294967273)); - expressions[225] = BinaryenBinary(the_module, 36, expressions[223], expressions[224]); - expressions[226] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[227] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[228] = BinaryenBinary(the_module, 12, expressions[226], expressions[227]); - expressions[229] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[230] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[231] = BinaryenBinary(the_module, 13, expressions[229], expressions[230]); - expressions[232] = BinaryenConst(the_module, BinaryenLiteralInt64(4294967274)); - expressions[233] = BinaryenConst(the_module, BinaryenLiteralInt64(4294967273)); - expressions[234] = BinaryenBinary(the_module, 39, expressions[232], expressions[233]); - expressions[235] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[236] = BinaryenConst(the_module, BinaryenLiteralFloat32(-62.5)); - expressions[237] = BinaryenBinary(the_module, 53, expressions[235], expressions[236]); - expressions[238] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[239] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9007.33)); - expressions[240] = BinaryenBinary(the_module, 67, expressions[238], expressions[239]); - expressions[241] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[242] = BinaryenConst(the_module, BinaryenLiteralFloat32(-62.5)); - expressions[243] = BinaryenBinary(the_module, 55, expressions[241], expressions[242]); - expressions[244] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[245] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9007.33)); - expressions[246] = BinaryenBinary(the_module, 69, expressions[244], expressions[245]); - expressions[247] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[248] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[249] = BinaryenBinary(the_module, 15, expressions[247], expressions[248]); - expressions[250] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[251] = BinaryenConst(the_module, BinaryenLiteralFloat32(-62.5)); - expressions[252] = BinaryenBinary(the_module, 58, expressions[250], expressions[251]); - expressions[253] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[254] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[255] = BinaryenBinary(the_module, 17, expressions[253], expressions[254]); - expressions[256] = BinaryenConst(the_module, BinaryenLiteralInt64(4294967274)); - expressions[257] = BinaryenConst(the_module, BinaryenLiteralInt64(4294967273)); - expressions[258] = BinaryenBinary(the_module, 43, expressions[256], expressions[257]); - expressions[259] = BinaryenConst(the_module, BinaryenLiteralInt64(4294967274)); - expressions[260] = BinaryenConst(the_module, BinaryenLiteralInt64(4294967273)); - expressions[261] = BinaryenBinary(the_module, 44, expressions[259], expressions[260]); - expressions[262] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[263] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[264] = BinaryenBinary(the_module, 20, expressions[262], expressions[263]); - expressions[265] = BinaryenConst(the_module, BinaryenLiteralInt64(4294967274)); - expressions[266] = BinaryenConst(the_module, BinaryenLiteralInt64(4294967273)); - expressions[267] = BinaryenBinary(the_module, 46, expressions[265], expressions[266]); - expressions[268] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[269] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[270] = BinaryenBinary(the_module, 22, expressions[268], expressions[269]); - expressions[271] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[272] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[273] = BinaryenBinary(the_module, 23, expressions[271], expressions[272]); - expressions[274] = BinaryenConst(the_module, BinaryenLiteralInt64(4294967274)); - expressions[275] = BinaryenConst(the_module, BinaryenLiteralInt64(4294967273)); - expressions[276] = BinaryenBinary(the_module, 49, expressions[274], expressions[275]); - expressions[277] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[278] = BinaryenConst(the_module, BinaryenLiteralFloat32(-62.5)); - expressions[279] = BinaryenBinary(the_module, 59, expressions[277], expressions[278]); - expressions[280] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[281] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9007.33)); - expressions[282] = BinaryenBinary(the_module, 73, expressions[280], expressions[281]); - expressions[283] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[284] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9007.33)); - expressions[285] = BinaryenBinary(the_module, 74, expressions[283], expressions[284]); - expressions[286] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[287] = BinaryenConst(the_module, BinaryenLiteralFloat32(-62.5)); - expressions[288] = BinaryenBinary(the_module, 62, expressions[286], expressions[287]); - { - uint8_t t36[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[289] = BinaryenConst(the_module, BinaryenLiteralVec128(t36)); - } - { - uint8_t t37[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[290] = BinaryenConst(the_module, BinaryenLiteralVec128(t37)); - } - expressions[291] = BinaryenBinary(the_module, 76, expressions[289], expressions[290]); - { - uint8_t t38[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[292] = BinaryenConst(the_module, BinaryenLiteralVec128(t38)); - } - { - uint8_t t39[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[293] = BinaryenConst(the_module, BinaryenLiteralVec128(t39)); - } - expressions[294] = BinaryenBinary(the_module, 77, expressions[292], expressions[293]); - { - uint8_t t40[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[295] = BinaryenConst(the_module, BinaryenLiteralVec128(t40)); - } - { - uint8_t t41[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[296] = BinaryenConst(the_module, BinaryenLiteralVec128(t41)); - } - expressions[297] = BinaryenBinary(the_module, 78, expressions[295], expressions[296]); - { - uint8_t t42[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[298] = BinaryenConst(the_module, BinaryenLiteralVec128(t42)); - } - { - uint8_t t43[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[299] = BinaryenConst(the_module, BinaryenLiteralVec128(t43)); - } - expressions[300] = BinaryenBinary(the_module, 79, expressions[298], expressions[299]); - { - uint8_t t44[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[301] = BinaryenConst(the_module, BinaryenLiteralVec128(t44)); - } - { - uint8_t t45[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[302] = BinaryenConst(the_module, BinaryenLiteralVec128(t45)); - } - expressions[303] = BinaryenBinary(the_module, 80, expressions[301], expressions[302]); - { - uint8_t t46[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[304] = BinaryenConst(the_module, BinaryenLiteralVec128(t46)); - } - { - uint8_t t47[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[305] = BinaryenConst(the_module, BinaryenLiteralVec128(t47)); - } - expressions[306] = BinaryenBinary(the_module, 81, expressions[304], expressions[305]); - { - uint8_t t48[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[307] = BinaryenConst(the_module, BinaryenLiteralVec128(t48)); - } - { - uint8_t t49[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[308] = BinaryenConst(the_module, BinaryenLiteralVec128(t49)); - } - expressions[309] = BinaryenBinary(the_module, 82, expressions[307], expressions[308]); - { - uint8_t t50[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[310] = BinaryenConst(the_module, BinaryenLiteralVec128(t50)); - } - { - uint8_t t51[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[311] = BinaryenConst(the_module, BinaryenLiteralVec128(t51)); - } - expressions[312] = BinaryenBinary(the_module, 83, expressions[310], expressions[311]); - { - uint8_t t52[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[313] = BinaryenConst(the_module, BinaryenLiteralVec128(t52)); - } - { - uint8_t t53[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[314] = BinaryenConst(the_module, BinaryenLiteralVec128(t53)); - } - expressions[315] = BinaryenBinary(the_module, 84, expressions[313], expressions[314]); - { - uint8_t t54[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[316] = BinaryenConst(the_module, BinaryenLiteralVec128(t54)); - } - { - uint8_t t55[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[317] = BinaryenConst(the_module, BinaryenLiteralVec128(t55)); - } - expressions[318] = BinaryenBinary(the_module, 85, expressions[316], expressions[317]); - { - uint8_t t56[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[319] = BinaryenConst(the_module, BinaryenLiteralVec128(t56)); - } - { - uint8_t t57[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[320] = BinaryenConst(the_module, BinaryenLiteralVec128(t57)); - } - expressions[321] = BinaryenBinary(the_module, 86, expressions[319], expressions[320]); - { - uint8_t t58[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[322] = BinaryenConst(the_module, BinaryenLiteralVec128(t58)); - } - { - uint8_t t59[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[323] = BinaryenConst(the_module, BinaryenLiteralVec128(t59)); - } - expressions[324] = BinaryenBinary(the_module, 87, expressions[322], expressions[323]); - { - uint8_t t60[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[325] = BinaryenConst(the_module, BinaryenLiteralVec128(t60)); - } - { - uint8_t t61[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[326] = BinaryenConst(the_module, BinaryenLiteralVec128(t61)); - } - expressions[327] = BinaryenBinary(the_module, 88, expressions[325], expressions[326]); - { - uint8_t t62[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[328] = BinaryenConst(the_module, BinaryenLiteralVec128(t62)); - } - { - uint8_t t63[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[329] = BinaryenConst(the_module, BinaryenLiteralVec128(t63)); - } - expressions[330] = BinaryenBinary(the_module, 89, expressions[328], expressions[329]); - { - uint8_t t64[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[331] = BinaryenConst(the_module, BinaryenLiteralVec128(t64)); - } - { - uint8_t t65[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[332] = BinaryenConst(the_module, BinaryenLiteralVec128(t65)); - } - expressions[333] = BinaryenBinary(the_module, 90, expressions[331], expressions[332]); - { - uint8_t t66[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[334] = BinaryenConst(the_module, BinaryenLiteralVec128(t66)); - } - { - uint8_t t67[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[335] = BinaryenConst(the_module, BinaryenLiteralVec128(t67)); - } - expressions[336] = BinaryenBinary(the_module, 91, expressions[334], expressions[335]); - { - uint8_t t68[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[337] = BinaryenConst(the_module, BinaryenLiteralVec128(t68)); - } - { - uint8_t t69[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[338] = BinaryenConst(the_module, BinaryenLiteralVec128(t69)); - } - expressions[339] = BinaryenBinary(the_module, 92, expressions[337], expressions[338]); - { - uint8_t t70[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[340] = BinaryenConst(the_module, BinaryenLiteralVec128(t70)); - } - { - uint8_t t71[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[341] = BinaryenConst(the_module, BinaryenLiteralVec128(t71)); - } - expressions[342] = BinaryenBinary(the_module, 93, expressions[340], expressions[341]); - { - uint8_t t72[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[343] = BinaryenConst(the_module, BinaryenLiteralVec128(t72)); - } - { - uint8_t t73[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[344] = BinaryenConst(the_module, BinaryenLiteralVec128(t73)); - } - expressions[345] = BinaryenBinary(the_module, 94, expressions[343], expressions[344]); - { - uint8_t t74[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[346] = BinaryenConst(the_module, BinaryenLiteralVec128(t74)); - } - { - uint8_t t75[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[347] = BinaryenConst(the_module, BinaryenLiteralVec128(t75)); - } - expressions[348] = BinaryenBinary(the_module, 95, expressions[346], expressions[347]); - { - uint8_t t76[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[349] = BinaryenConst(the_module, BinaryenLiteralVec128(t76)); - } - { - uint8_t t77[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[350] = BinaryenConst(the_module, BinaryenLiteralVec128(t77)); - } - expressions[351] = BinaryenBinary(the_module, 96, expressions[349], expressions[350]); - { - uint8_t t78[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[352] = BinaryenConst(the_module, BinaryenLiteralVec128(t78)); - } - { - uint8_t t79[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[353] = BinaryenConst(the_module, BinaryenLiteralVec128(t79)); - } - expressions[354] = BinaryenBinary(the_module, 97, expressions[352], expressions[353]); - { - uint8_t t80[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[355] = BinaryenConst(the_module, BinaryenLiteralVec128(t80)); - } - { - uint8_t t81[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[356] = BinaryenConst(the_module, BinaryenLiteralVec128(t81)); - } - expressions[357] = BinaryenBinary(the_module, 98, expressions[355], expressions[356]); - { - uint8_t t82[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[358] = BinaryenConst(the_module, BinaryenLiteralVec128(t82)); - } - { - uint8_t t83[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[359] = BinaryenConst(the_module, BinaryenLiteralVec128(t83)); - } - expressions[360] = BinaryenBinary(the_module, 99, expressions[358], expressions[359]); - { - uint8_t t84[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[361] = BinaryenConst(the_module, BinaryenLiteralVec128(t84)); - } - { - uint8_t t85[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[362] = BinaryenConst(the_module, BinaryenLiteralVec128(t85)); - } - expressions[363] = BinaryenBinary(the_module, 100, expressions[361], expressions[362]); - { - uint8_t t86[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[364] = BinaryenConst(the_module, BinaryenLiteralVec128(t86)); - } - { - uint8_t t87[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[365] = BinaryenConst(the_module, BinaryenLiteralVec128(t87)); - } - expressions[366] = BinaryenBinary(the_module, 101, expressions[364], expressions[365]); - { - uint8_t t88[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[367] = BinaryenConst(the_module, BinaryenLiteralVec128(t88)); - } - { - uint8_t t89[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[368] = BinaryenConst(the_module, BinaryenLiteralVec128(t89)); - } - expressions[369] = BinaryenBinary(the_module, 102, expressions[367], expressions[368]); - { - uint8_t t90[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[370] = BinaryenConst(the_module, BinaryenLiteralVec128(t90)); - } - { - uint8_t t91[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[371] = BinaryenConst(the_module, BinaryenLiteralVec128(t91)); - } - expressions[372] = BinaryenBinary(the_module, 103, expressions[370], expressions[371]); - { - uint8_t t92[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[373] = BinaryenConst(the_module, BinaryenLiteralVec128(t92)); - } - { - uint8_t t93[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[374] = BinaryenConst(the_module, BinaryenLiteralVec128(t93)); - } - expressions[375] = BinaryenBinary(the_module, 104, expressions[373], expressions[374]); - { - uint8_t t94[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[376] = BinaryenConst(the_module, BinaryenLiteralVec128(t94)); - } - { - uint8_t t95[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[377] = BinaryenConst(the_module, BinaryenLiteralVec128(t95)); - } - expressions[378] = BinaryenBinary(the_module, 105, expressions[376], expressions[377]); - { - uint8_t t96[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[379] = BinaryenConst(the_module, BinaryenLiteralVec128(t96)); - } - { - uint8_t t97[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[380] = BinaryenConst(the_module, BinaryenLiteralVec128(t97)); - } - expressions[381] = BinaryenBinary(the_module, 106, expressions[379], expressions[380]); - { - uint8_t t98[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[382] = BinaryenConst(the_module, BinaryenLiteralVec128(t98)); - } - { - uint8_t t99[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[383] = BinaryenConst(the_module, BinaryenLiteralVec128(t99)); - } - expressions[384] = BinaryenBinary(the_module, 107, expressions[382], expressions[383]); - { - uint8_t t100[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[385] = BinaryenConst(the_module, BinaryenLiteralVec128(t100)); - } - { - uint8_t t101[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[386] = BinaryenConst(the_module, BinaryenLiteralVec128(t101)); - } - expressions[387] = BinaryenBinary(the_module, 108, expressions[385], expressions[386]); - { - uint8_t t102[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[388] = BinaryenConst(the_module, BinaryenLiteralVec128(t102)); - } - { - uint8_t t103[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[389] = BinaryenConst(the_module, BinaryenLiteralVec128(t103)); - } - expressions[390] = BinaryenBinary(the_module, 109, expressions[388], expressions[389]); - { - uint8_t t104[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[391] = BinaryenConst(the_module, BinaryenLiteralVec128(t104)); - } - { - uint8_t t105[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[392] = BinaryenConst(the_module, BinaryenLiteralVec128(t105)); - } - expressions[393] = BinaryenBinary(the_module, 110, expressions[391], expressions[392]); - { - uint8_t t106[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[394] = BinaryenConst(the_module, BinaryenLiteralVec128(t106)); - } - { - uint8_t t107[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[395] = BinaryenConst(the_module, BinaryenLiteralVec128(t107)); - } - expressions[396] = BinaryenBinary(the_module, 111, expressions[394], expressions[395]); - { - uint8_t t108[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[397] = BinaryenConst(the_module, BinaryenLiteralVec128(t108)); - } - { - uint8_t t109[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[398] = BinaryenConst(the_module, BinaryenLiteralVec128(t109)); - } - expressions[399] = BinaryenBinary(the_module, 112, expressions[397], expressions[398]); - { - uint8_t t110[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[400] = BinaryenConst(the_module, BinaryenLiteralVec128(t110)); - } - { - uint8_t t111[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[401] = BinaryenConst(the_module, BinaryenLiteralVec128(t111)); - } - expressions[402] = BinaryenBinary(the_module, 113, expressions[400], expressions[401]); - { - uint8_t t112[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[403] = BinaryenConst(the_module, BinaryenLiteralVec128(t112)); - } - { - uint8_t t113[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[404] = BinaryenConst(the_module, BinaryenLiteralVec128(t113)); - } - expressions[405] = BinaryenBinary(the_module, 114, expressions[403], expressions[404]); - { - uint8_t t114[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[406] = BinaryenConst(the_module, BinaryenLiteralVec128(t114)); - } - { - uint8_t t115[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[407] = BinaryenConst(the_module, BinaryenLiteralVec128(t115)); - } - expressions[408] = BinaryenBinary(the_module, 115, expressions[406], expressions[407]); - { - uint8_t t116[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[409] = BinaryenConst(the_module, BinaryenLiteralVec128(t116)); - } - { - uint8_t t117[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[410] = BinaryenConst(the_module, BinaryenLiteralVec128(t117)); - } - expressions[411] = BinaryenBinary(the_module, 116, expressions[409], expressions[410]); - { - uint8_t t118[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[412] = BinaryenConst(the_module, BinaryenLiteralVec128(t118)); - } - { - uint8_t t119[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[413] = BinaryenConst(the_module, BinaryenLiteralVec128(t119)); - } - expressions[414] = BinaryenBinary(the_module, 117, expressions[412], expressions[413]); - { - uint8_t t120[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[415] = BinaryenConst(the_module, BinaryenLiteralVec128(t120)); - } - { - uint8_t t121[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[416] = BinaryenConst(the_module, BinaryenLiteralVec128(t121)); - } - expressions[417] = BinaryenBinary(the_module, 118, expressions[415], expressions[416]); - { - uint8_t t122[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[418] = BinaryenConst(the_module, BinaryenLiteralVec128(t122)); - } - { - uint8_t t123[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[419] = BinaryenConst(the_module, BinaryenLiteralVec128(t123)); - } - expressions[420] = BinaryenBinary(the_module, 119, expressions[418], expressions[419]); - { - uint8_t t124[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[421] = BinaryenConst(the_module, BinaryenLiteralVec128(t124)); - } - { - uint8_t t125[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[422] = BinaryenConst(the_module, BinaryenLiteralVec128(t125)); - } - expressions[423] = BinaryenBinary(the_module, 120, expressions[421], expressions[422]); - { - uint8_t t126[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[424] = BinaryenConst(the_module, BinaryenLiteralVec128(t126)); - } - { - uint8_t t127[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[425] = BinaryenConst(the_module, BinaryenLiteralVec128(t127)); - } - expressions[426] = BinaryenBinary(the_module, 121, expressions[424], expressions[425]); - { - uint8_t t128[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[427] = BinaryenConst(the_module, BinaryenLiteralVec128(t128)); - } - { - uint8_t t129[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[428] = BinaryenConst(the_module, BinaryenLiteralVec128(t129)); - } - expressions[429] = BinaryenBinary(the_module, 122, expressions[427], expressions[428]); - { - uint8_t t130[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[430] = BinaryenConst(the_module, BinaryenLiteralVec128(t130)); - } - { - uint8_t t131[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[431] = BinaryenConst(the_module, BinaryenLiteralVec128(t131)); - } - expressions[432] = BinaryenBinary(the_module, 123, expressions[430], expressions[431]); - { - uint8_t t132[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[433] = BinaryenConst(the_module, BinaryenLiteralVec128(t132)); - } - { - uint8_t t133[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[434] = BinaryenConst(the_module, BinaryenLiteralVec128(t133)); - } - expressions[435] = BinaryenBinary(the_module, 124, expressions[433], expressions[434]); - { - uint8_t t134[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[436] = BinaryenConst(the_module, BinaryenLiteralVec128(t134)); - } - { - uint8_t t135[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[437] = BinaryenConst(the_module, BinaryenLiteralVec128(t135)); - } - expressions[438] = BinaryenBinary(the_module, 125, expressions[436], expressions[437]); - { - uint8_t t136[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[439] = BinaryenConst(the_module, BinaryenLiteralVec128(t136)); - } - { - uint8_t t137[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[440] = BinaryenConst(the_module, BinaryenLiteralVec128(t137)); - } - expressions[441] = BinaryenBinary(the_module, 126, expressions[439], expressions[440]); - { - uint8_t t138[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[442] = BinaryenConst(the_module, BinaryenLiteralVec128(t138)); - } - { - uint8_t t139[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[443] = BinaryenConst(the_module, BinaryenLiteralVec128(t139)); - } - expressions[444] = BinaryenBinary(the_module, 127, expressions[442], expressions[443]); - { - uint8_t t140[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[445] = BinaryenConst(the_module, BinaryenLiteralVec128(t140)); - } - { - uint8_t t141[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[446] = BinaryenConst(the_module, BinaryenLiteralVec128(t141)); - } - expressions[447] = BinaryenBinary(the_module, 128, expressions[445], expressions[446]); - { - uint8_t t142[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[448] = BinaryenConst(the_module, BinaryenLiteralVec128(t142)); - } - { - uint8_t t143[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[449] = BinaryenConst(the_module, BinaryenLiteralVec128(t143)); - } - expressions[450] = BinaryenBinary(the_module, 129, expressions[448], expressions[449]); - { - uint8_t t144[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[451] = BinaryenConst(the_module, BinaryenLiteralVec128(t144)); - } - { - uint8_t t145[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[452] = BinaryenConst(the_module, BinaryenLiteralVec128(t145)); - } - expressions[453] = BinaryenBinary(the_module, 130, expressions[451], expressions[452]); - { - uint8_t t146[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[454] = BinaryenConst(the_module, BinaryenLiteralVec128(t146)); - } - { - uint8_t t147[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[455] = BinaryenConst(the_module, BinaryenLiteralVec128(t147)); - } - expressions[456] = BinaryenBinary(the_module, 131, expressions[454], expressions[455]); - { - uint8_t t148[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[457] = BinaryenConst(the_module, BinaryenLiteralVec128(t148)); - } - { - uint8_t t149[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[458] = BinaryenConst(the_module, BinaryenLiteralVec128(t149)); - } - expressions[459] = BinaryenBinary(the_module, 132, expressions[457], expressions[458]); - { - uint8_t t150[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[460] = BinaryenConst(the_module, BinaryenLiteralVec128(t150)); - } - { - uint8_t t151[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[461] = BinaryenConst(the_module, BinaryenLiteralVec128(t151)); - } - expressions[462] = BinaryenBinary(the_module, 133, expressions[460], expressions[461]); - { - uint8_t t152[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[463] = BinaryenConst(the_module, BinaryenLiteralVec128(t152)); - } - { - uint8_t t153[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[464] = BinaryenConst(the_module, BinaryenLiteralVec128(t153)); - } - expressions[465] = BinaryenBinary(the_module, 134, expressions[463], expressions[464]); - { - uint8_t t154[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[466] = BinaryenConst(the_module, BinaryenLiteralVec128(t154)); - } - { - uint8_t t155[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[467] = BinaryenConst(the_module, BinaryenLiteralVec128(t155)); - } - expressions[468] = BinaryenBinary(the_module, 135, expressions[466], expressions[467]); - { - uint8_t t156[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[469] = BinaryenConst(the_module, BinaryenLiteralVec128(t156)); - } - { - uint8_t t157[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[470] = BinaryenConst(the_module, BinaryenLiteralVec128(t157)); - } - expressions[471] = BinaryenBinary(the_module, 136, expressions[469], expressions[470]); - { - uint8_t t158[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[472] = BinaryenConst(the_module, BinaryenLiteralVec128(t158)); - } - { - uint8_t t159[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[473] = BinaryenConst(the_module, BinaryenLiteralVec128(t159)); - } - expressions[474] = BinaryenBinary(the_module, 137, expressions[472], expressions[473]); - { - uint8_t t160[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[475] = BinaryenConst(the_module, BinaryenLiteralVec128(t160)); - } - { - uint8_t t161[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[476] = BinaryenConst(the_module, BinaryenLiteralVec128(t161)); - } - expressions[477] = BinaryenBinary(the_module, 138, expressions[475], expressions[476]); - { - uint8_t t162[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[478] = BinaryenConst(the_module, BinaryenLiteralVec128(t162)); - } - { - uint8_t t163[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[479] = BinaryenConst(the_module, BinaryenLiteralVec128(t163)); - } - expressions[480] = BinaryenBinary(the_module, 139, expressions[478], expressions[479]); - { - uint8_t t164[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[481] = BinaryenConst(the_module, BinaryenLiteralVec128(t164)); - } - { - uint8_t t165[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[482] = BinaryenConst(the_module, BinaryenLiteralVec128(t165)); - } - expressions[483] = BinaryenBinary(the_module, 140, expressions[481], expressions[482]); - { - uint8_t t166[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[484] = BinaryenConst(the_module, BinaryenLiteralVec128(t166)); - } - { - uint8_t t167[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[485] = BinaryenConst(the_module, BinaryenLiteralVec128(t167)); - } - expressions[486] = BinaryenBinary(the_module, 141, expressions[484], expressions[485]); - { - uint8_t t168[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[487] = BinaryenConst(the_module, BinaryenLiteralVec128(t168)); - } - { - uint8_t t169[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[488] = BinaryenConst(the_module, BinaryenLiteralVec128(t169)); - } - expressions[489] = BinaryenBinary(the_module, 142, expressions[487], expressions[488]); - { - uint8_t t170[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[490] = BinaryenConst(the_module, BinaryenLiteralVec128(t170)); - } - { - uint8_t t171[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[491] = BinaryenConst(the_module, BinaryenLiteralVec128(t171)); - } - expressions[492] = BinaryenBinary(the_module, 143, expressions[490], expressions[491]); - { - uint8_t t172[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[493] = BinaryenConst(the_module, BinaryenLiteralVec128(t172)); - } - { - uint8_t t173[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[494] = BinaryenConst(the_module, BinaryenLiteralVec128(t173)); - } - expressions[495] = BinaryenBinary(the_module, 144, expressions[493], expressions[494]); - { - uint8_t t174[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[496] = BinaryenConst(the_module, BinaryenLiteralVec128(t174)); - } - { - uint8_t t175[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[497] = BinaryenConst(the_module, BinaryenLiteralVec128(t175)); - } - expressions[498] = BinaryenBinary(the_module, 145, expressions[496], expressions[497]); - { - uint8_t t176[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[499] = BinaryenConst(the_module, BinaryenLiteralVec128(t176)); - } - { - uint8_t t177[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[500] = BinaryenConst(the_module, BinaryenLiteralVec128(t177)); - } - expressions[501] = BinaryenBinary(the_module, 146, expressions[499], expressions[500]); - { - uint8_t t178[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[502] = BinaryenConst(the_module, BinaryenLiteralVec128(t178)); - } - { - uint8_t t179[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[503] = BinaryenConst(the_module, BinaryenLiteralVec128(t179)); - } - expressions[504] = BinaryenBinary(the_module, 147, expressions[502], expressions[503]); - { - uint8_t t180[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[505] = BinaryenConst(the_module, BinaryenLiteralVec128(t180)); - } - { - uint8_t t181[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[506] = BinaryenConst(the_module, BinaryenLiteralVec128(t181)); - } - expressions[507] = BinaryenBinary(the_module, 148, expressions[505], expressions[506]); - { - uint8_t t182[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[508] = BinaryenConst(the_module, BinaryenLiteralVec128(t182)); - } - { - uint8_t t183[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[509] = BinaryenConst(the_module, BinaryenLiteralVec128(t183)); - } - expressions[510] = BinaryenBinary(the_module, 149, expressions[508], expressions[509]); - { - uint8_t t184[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[511] = BinaryenConst(the_module, BinaryenLiteralVec128(t184)); - } - { - uint8_t t185[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[512] = BinaryenConst(the_module, BinaryenLiteralVec128(t185)); - } - expressions[513] = BinaryenBinary(the_module, 150, expressions[511], expressions[512]); - { - uint8_t t186[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[514] = BinaryenConst(the_module, BinaryenLiteralVec128(t186)); - } - { - uint8_t t187[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[515] = BinaryenConst(the_module, BinaryenLiteralVec128(t187)); - } - expressions[516] = BinaryenBinary(the_module, 151, expressions[514], expressions[515]); - { - uint8_t t188[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[517] = BinaryenConst(the_module, BinaryenLiteralVec128(t188)); - } - { - uint8_t t189[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[518] = BinaryenConst(the_module, BinaryenLiteralVec128(t189)); - } - expressions[519] = BinaryenBinary(the_module, 152, expressions[517], expressions[518]); - { - uint8_t t190[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[520] = BinaryenConst(the_module, BinaryenLiteralVec128(t190)); - } - { - uint8_t t191[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[521] = BinaryenConst(the_module, BinaryenLiteralVec128(t191)); - } - expressions[522] = BinaryenBinary(the_module, 153, expressions[520], expressions[521]); - { - uint8_t t192[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[523] = BinaryenConst(the_module, BinaryenLiteralVec128(t192)); - } - { - uint8_t t193[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[524] = BinaryenConst(the_module, BinaryenLiteralVec128(t193)); - } - expressions[525] = BinaryenBinary(the_module, 154, expressions[523], expressions[524]); - { - uint8_t t194[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[526] = BinaryenConst(the_module, BinaryenLiteralVec128(t194)); - } - { - uint8_t t195[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[527] = BinaryenConst(the_module, BinaryenLiteralVec128(t195)); - } - expressions[528] = BinaryenBinary(the_module, 155, expressions[526], expressions[527]); - { - uint8_t t196[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[529] = BinaryenConst(the_module, BinaryenLiteralVec128(t196)); - } - { - uint8_t t197[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[530] = BinaryenConst(the_module, BinaryenLiteralVec128(t197)); - } - expressions[531] = BinaryenBinary(the_module, 156, expressions[529], expressions[530]); - { - uint8_t t198[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[532] = BinaryenConst(the_module, BinaryenLiteralVec128(t198)); - } - { - uint8_t t199[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[533] = BinaryenConst(the_module, BinaryenLiteralVec128(t199)); - } - expressions[534] = BinaryenBinary(the_module, 157, expressions[532], expressions[533]); - { - uint8_t t200[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[535] = BinaryenConst(the_module, BinaryenLiteralVec128(t200)); - } - { - uint8_t t201[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[536] = BinaryenConst(the_module, BinaryenLiteralVec128(t201)); - } - expressions[537] = BinaryenBinary(the_module, 158, expressions[535], expressions[536]); - { - uint8_t t202[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[538] = BinaryenConst(the_module, BinaryenLiteralVec128(t202)); - } - { - uint8_t t203[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[539] = BinaryenConst(the_module, BinaryenLiteralVec128(t203)); - } - expressions[540] = BinaryenBinary(the_module, 159, expressions[538], expressions[539]); - { - uint8_t t204[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[541] = BinaryenConst(the_module, BinaryenLiteralVec128(t204)); - } - { - uint8_t t205[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[542] = BinaryenConst(the_module, BinaryenLiteralVec128(t205)); - } - expressions[543] = BinaryenBinary(the_module, 160, expressions[541], expressions[542]); - { - uint8_t t206[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[544] = BinaryenConst(the_module, BinaryenLiteralVec128(t206)); - } - { - uint8_t t207[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[545] = BinaryenConst(the_module, BinaryenLiteralVec128(t207)); - } - expressions[546] = BinaryenBinary(the_module, 161, expressions[544], expressions[545]); - { - uint8_t t208[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[547] = BinaryenConst(the_module, BinaryenLiteralVec128(t208)); - } - { - uint8_t t209[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[548] = BinaryenConst(the_module, BinaryenLiteralVec128(t209)); - } - expressions[549] = BinaryenBinary(the_module, 162, expressions[547], expressions[548]); - { - uint8_t t210[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[550] = BinaryenConst(the_module, BinaryenLiteralVec128(t210)); - } - { - uint8_t t211[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[551] = BinaryenConst(the_module, BinaryenLiteralVec128(t211)); - } - expressions[552] = BinaryenBinary(the_module, 163, expressions[550], expressions[551]); - { - uint8_t t212[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[553] = BinaryenConst(the_module, BinaryenLiteralVec128(t212)); - } - { - uint8_t t213[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[554] = BinaryenConst(the_module, BinaryenLiteralVec128(t213)); - } - expressions[555] = BinaryenBinary(the_module, 164, expressions[553], expressions[554]); - { - uint8_t t214[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[556] = BinaryenConst(the_module, BinaryenLiteralVec128(t214)); - } - { - uint8_t t215[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[557] = BinaryenConst(the_module, BinaryenLiteralVec128(t215)); - } - expressions[558] = BinaryenBinary(the_module, 165, expressions[556], expressions[557]); - { - uint8_t t216[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[559] = BinaryenConst(the_module, BinaryenLiteralVec128(t216)); - } - { - uint8_t t217[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[560] = BinaryenConst(the_module, BinaryenLiteralVec128(t217)); - } - expressions[561] = BinaryenBinary(the_module, 166, expressions[559], expressions[560]); - { - uint8_t t218[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[562] = BinaryenConst(the_module, BinaryenLiteralVec128(t218)); - } - { - uint8_t t219[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[563] = BinaryenConst(the_module, BinaryenLiteralVec128(t219)); - } - expressions[564] = BinaryenBinary(the_module, 167, expressions[562], expressions[563]); - { - uint8_t t220[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[565] = BinaryenConst(the_module, BinaryenLiteralVec128(t220)); - } - { - uint8_t t221[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[566] = BinaryenConst(the_module, BinaryenLiteralVec128(t221)); - } - expressions[567] = BinaryenBinary(the_module, 168, expressions[565], expressions[566]); - { - uint8_t t222[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[568] = BinaryenConst(the_module, BinaryenLiteralVec128(t222)); - } - { - uint8_t t223[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[569] = BinaryenConst(the_module, BinaryenLiteralVec128(t223)); - } - expressions[570] = BinaryenBinary(the_module, 169, expressions[568], expressions[569]); - { - uint8_t t224[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[571] = BinaryenConst(the_module, BinaryenLiteralVec128(t224)); - } - { - uint8_t t225[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[572] = BinaryenConst(the_module, BinaryenLiteralVec128(t225)); - } - expressions[573] = BinaryenBinary(the_module, 170, expressions[571], expressions[572]); - { - uint8_t t226[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[574] = BinaryenConst(the_module, BinaryenLiteralVec128(t226)); - } - { - uint8_t t227[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[575] = BinaryenConst(the_module, BinaryenLiteralVec128(t227)); - } - expressions[576] = BinaryenBinary(the_module, 171, expressions[574], expressions[575]); - { - uint8_t t228[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[577] = BinaryenConst(the_module, BinaryenLiteralVec128(t228)); - } - { - uint8_t t229[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[578] = BinaryenConst(the_module, BinaryenLiteralVec128(t229)); - } - expressions[579] = BinaryenBinary(the_module, 172, expressions[577], expressions[578]); - { - uint8_t t230[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[580] = BinaryenConst(the_module, BinaryenLiteralVec128(t230)); - } - expressions[581] = BinaryenSIMDExtract(the_module, 0, expressions[580], 1); - { - uint8_t t231[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[582] = BinaryenConst(the_module, BinaryenLiteralVec128(t231)); - } - expressions[583] = BinaryenSIMDExtract(the_module, 1, expressions[582], 1); - { - uint8_t t232[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[584] = BinaryenConst(the_module, BinaryenLiteralVec128(t232)); - } - expressions[585] = BinaryenSIMDExtract(the_module, 2, expressions[584], 1); - { - uint8_t t233[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[586] = BinaryenConst(the_module, BinaryenLiteralVec128(t233)); - } - expressions[587] = BinaryenSIMDExtract(the_module, 3, expressions[586], 1); - { - uint8_t t234[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[588] = BinaryenConst(the_module, BinaryenLiteralVec128(t234)); - } - expressions[589] = BinaryenSIMDExtract(the_module, 4, expressions[588], 1); - { - uint8_t t235[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[590] = BinaryenConst(the_module, BinaryenLiteralVec128(t235)); - } - expressions[591] = BinaryenSIMDExtract(the_module, 5, expressions[590], 1); - { - uint8_t t236[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[592] = BinaryenConst(the_module, BinaryenLiteralVec128(t236)); - } - expressions[593] = BinaryenSIMDExtract(the_module, 6, expressions[592], 1); - { - uint8_t t237[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[594] = BinaryenConst(the_module, BinaryenLiteralVec128(t237)); - } - expressions[595] = BinaryenSIMDExtract(the_module, 7, expressions[594], 1); - { - uint8_t t238[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[596] = BinaryenConst(the_module, BinaryenLiteralVec128(t238)); - } - expressions[597] = BinaryenConst(the_module, BinaryenLiteralInt32(42)); - expressions[598] = BinaryenSIMDReplace(the_module, 1, expressions[596], 1, expressions[597]); - { - uint8_t t239[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[599] = BinaryenConst(the_module, BinaryenLiteralVec128(t239)); - } - expressions[600] = BinaryenConst(the_module, BinaryenLiteralInt32(42)); - expressions[601] = BinaryenSIMDReplace(the_module, 0, expressions[599], 1, expressions[600]); - { - uint8_t t240[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[602] = BinaryenConst(the_module, BinaryenLiteralVec128(t240)); - } - expressions[603] = BinaryenConst(the_module, BinaryenLiteralInt32(42)); - expressions[604] = BinaryenSIMDReplace(the_module, 2, expressions[602], 1, expressions[603]); - { - uint8_t t241[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[605] = BinaryenConst(the_module, BinaryenLiteralVec128(t241)); - } - expressions[606] = BinaryenConst(the_module, BinaryenLiteralInt64(184683593770)); - expressions[607] = BinaryenSIMDReplace(the_module, 3, expressions[605], 1, expressions[606]); - { - uint8_t t242[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[608] = BinaryenConst(the_module, BinaryenLiteralVec128(t242)); - } - expressions[609] = BinaryenConst(the_module, BinaryenLiteralFloat32(42)); - expressions[610] = BinaryenSIMDReplace(the_module, 4, expressions[608], 1, expressions[609]); - { - uint8_t t243[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[611] = BinaryenConst(the_module, BinaryenLiteralVec128(t243)); - } - expressions[612] = BinaryenConst(the_module, BinaryenLiteralFloat64(42)); - expressions[613] = BinaryenSIMDReplace(the_module, 5, expressions[611], 1, expressions[612]); - { - uint8_t t244[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[614] = BinaryenConst(the_module, BinaryenLiteralVec128(t244)); - } - expressions[615] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[616] = BinaryenSIMDShift(the_module, 0, expressions[614], expressions[615]); - { - uint8_t t245[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[617] = BinaryenConst(the_module, BinaryenLiteralVec128(t245)); - } - expressions[618] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[619] = BinaryenSIMDShift(the_module, 1, expressions[617], expressions[618]); - { - uint8_t t246[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[620] = BinaryenConst(the_module, BinaryenLiteralVec128(t246)); - } - expressions[621] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[622] = BinaryenSIMDShift(the_module, 2, expressions[620], expressions[621]); - { - uint8_t t247[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[623] = BinaryenConst(the_module, BinaryenLiteralVec128(t247)); - } - expressions[624] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[625] = BinaryenSIMDShift(the_module, 3, expressions[623], expressions[624]); - { - uint8_t t248[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[626] = BinaryenConst(the_module, BinaryenLiteralVec128(t248)); - } - expressions[627] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[628] = BinaryenSIMDShift(the_module, 4, expressions[626], expressions[627]); - { - uint8_t t249[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[629] = BinaryenConst(the_module, BinaryenLiteralVec128(t249)); - } - expressions[630] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[631] = BinaryenSIMDShift(the_module, 5, expressions[629], expressions[630]); - { - uint8_t t250[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[632] = BinaryenConst(the_module, BinaryenLiteralVec128(t250)); - } - expressions[633] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[634] = BinaryenSIMDShift(the_module, 6, expressions[632], expressions[633]); - { - uint8_t t251[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[635] = BinaryenConst(the_module, BinaryenLiteralVec128(t251)); - } - expressions[636] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[637] = BinaryenSIMDShift(the_module, 7, expressions[635], expressions[636]); - { - uint8_t t252[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[638] = BinaryenConst(the_module, BinaryenLiteralVec128(t252)); - } - expressions[639] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[640] = BinaryenSIMDShift(the_module, 8, expressions[638], expressions[639]); - { - uint8_t t253[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[641] = BinaryenConst(the_module, BinaryenLiteralVec128(t253)); - } - expressions[642] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[643] = BinaryenSIMDShift(the_module, 9, expressions[641], expressions[642]); - { - uint8_t t254[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[644] = BinaryenConst(the_module, BinaryenLiteralVec128(t254)); - } - expressions[645] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[646] = BinaryenSIMDShift(the_module, 10, expressions[644], expressions[645]); - { - uint8_t t255[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[647] = BinaryenConst(the_module, BinaryenLiteralVec128(t255)); - } - expressions[648] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[649] = BinaryenSIMDShift(the_module, 11, expressions[647], expressions[648]); - expressions[650] = BinaryenConst(the_module, BinaryenLiteralInt32(128)); - expressions[651] = BinaryenSIMDLoad(the_module, 0, 0, 1, expressions[650]); - expressions[652] = BinaryenConst(the_module, BinaryenLiteralInt32(128)); - expressions[653] = BinaryenSIMDLoad(the_module, 1, 16, 1, expressions[652]); - expressions[654] = BinaryenConst(the_module, BinaryenLiteralInt32(128)); - expressions[655] = BinaryenSIMDLoad(the_module, 2, 16, 4, expressions[654]); - expressions[656] = BinaryenConst(the_module, BinaryenLiteralInt32(128)); - expressions[657] = BinaryenSIMDLoad(the_module, 3, 0, 4, expressions[656]); - expressions[658] = BinaryenConst(the_module, BinaryenLiteralInt32(128)); - expressions[659] = BinaryenSIMDLoad(the_module, 4, 0, 8, expressions[658]); - expressions[660] = BinaryenConst(the_module, BinaryenLiteralInt32(128)); - expressions[661] = BinaryenSIMDLoad(the_module, 5, 0, 8, expressions[660]); - expressions[662] = BinaryenConst(the_module, BinaryenLiteralInt32(128)); - expressions[663] = BinaryenSIMDLoad(the_module, 6, 0, 8, expressions[662]); - expressions[664] = BinaryenConst(the_module, BinaryenLiteralInt32(128)); - expressions[665] = BinaryenSIMDLoad(the_module, 7, 0, 8, expressions[664]); - expressions[666] = BinaryenConst(the_module, BinaryenLiteralInt32(128)); - expressions[667] = BinaryenSIMDLoad(the_module, 8, 0, 8, expressions[666]); - expressions[668] = BinaryenConst(the_module, BinaryenLiteralInt32(128)); - expressions[669] = BinaryenSIMDLoad(the_module, 9, 0, 8, expressions[668]); - { - uint8_t t256[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[670] = BinaryenConst(the_module, BinaryenLiteralVec128(t256)); - } - { - uint8_t t257[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[671] = BinaryenConst(the_module, BinaryenLiteralVec128(t257)); - } - { - uint8_t mask[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[672] = BinaryenSIMDShuffle(the_module, expressions[670], expressions[671], mask); - } - { - uint8_t t258[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[673] = BinaryenConst(the_module, BinaryenLiteralVec128(t258)); - } - { - uint8_t t259[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[674] = BinaryenConst(the_module, BinaryenLiteralVec128(t259)); - } - { - uint8_t t260[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[675] = BinaryenConst(the_module, BinaryenLiteralVec128(t260)); - } - expressions[676] = BinaryenSIMDTernary(the_module, 0, expressions[673], expressions[674], expressions[675]); - { - uint8_t t261[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[677] = BinaryenConst(the_module, BinaryenLiteralVec128(t261)); - } - { - uint8_t t262[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[678] = BinaryenConst(the_module, BinaryenLiteralVec128(t262)); - } - { - uint8_t t263[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[679] = BinaryenConst(the_module, BinaryenLiteralVec128(t263)); - } - expressions[680] = BinaryenSIMDTernary(the_module, 1, expressions[677], expressions[678], expressions[679]); - { - uint8_t t264[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[681] = BinaryenConst(the_module, BinaryenLiteralVec128(t264)); - } - { - uint8_t t265[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[682] = BinaryenConst(the_module, BinaryenLiteralVec128(t265)); - } - { - uint8_t t266[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[683] = BinaryenConst(the_module, BinaryenLiteralVec128(t266)); - } - expressions[684] = BinaryenSIMDTernary(the_module, 2, expressions[681], expressions[682], expressions[683]); - { - uint8_t t267[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[685] = BinaryenConst(the_module, BinaryenLiteralVec128(t267)); - } - { - uint8_t t268[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[686] = BinaryenConst(the_module, BinaryenLiteralVec128(t268)); - } - { - uint8_t t269[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[687] = BinaryenConst(the_module, BinaryenLiteralVec128(t269)); - } - expressions[688] = BinaryenSIMDTernary(the_module, 3, expressions[685], expressions[686], expressions[687]); - { - uint8_t t270[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[689] = BinaryenConst(the_module, BinaryenLiteralVec128(t270)); - } - { - uint8_t t271[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[690] = BinaryenConst(the_module, BinaryenLiteralVec128(t271)); - } - { - uint8_t t272[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[691] = BinaryenConst(the_module, BinaryenLiteralVec128(t272)); - } - expressions[692] = BinaryenSIMDTernary(the_module, 4, expressions[689], expressions[690], expressions[691]); - expressions[693] = BinaryenConst(the_module, BinaryenLiteralInt32(1024)); - expressions[694] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - expressions[695] = BinaryenConst(the_module, BinaryenLiteralInt32(12)); - expressions[696] = BinaryenMemoryInit(the_module, 0, expressions[693], expressions[694], expressions[695]); - expressions[697] = BinaryenDataDrop(the_module, 0); - expressions[698] = BinaryenConst(the_module, BinaryenLiteralInt32(2048)); - expressions[699] = BinaryenConst(the_module, BinaryenLiteralInt32(1024)); - expressions[700] = BinaryenConst(the_module, BinaryenLiteralInt32(12)); - expressions[701] = BinaryenMemoryCopy(the_module, expressions[698], expressions[699], expressions[700]); - expressions[702] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - expressions[703] = BinaryenConst(the_module, BinaryenLiteralInt32(42)); - expressions[704] = BinaryenConst(the_module, BinaryenLiteralInt32(1024)); - expressions[705] = BinaryenMemoryFill(the_module, expressions[702], expressions[703], expressions[704]); - { - BinaryenExpressionRef children[] = { 0 }; - expressions[706] = BinaryenBlock(the_module, NULL, children, 0, 0); - } - expressions[707] = BinaryenIf(the_module, expressions[7], expressions[8], expressions[9]); - expressions[708] = BinaryenIf(the_module, expressions[10], expressions[11], expressions[0]); - expressions[709] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - expressions[710] = BinaryenLoop(the_module, "in", expressions[709]); - expressions[711] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - expressions[712] = BinaryenLoop(the_module, NULL, expressions[711]); - expressions[713] = BinaryenBreak(the_module, "the-value", expressions[12], expressions[13]); - expressions[714] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - expressions[715] = BinaryenBreak(the_module, "the-nothing", expressions[714], expressions[0]); - expressions[716] = BinaryenConst(the_module, BinaryenLiteralInt32(3)); - expressions[717] = BinaryenBreak(the_module, "the-value", expressions[0], expressions[716]); - expressions[718] = BinaryenBreak(the_module, "the-nothing", expressions[0], expressions[0]); - { - const char* names[] = { "the-value" }; - expressions[719] = BinaryenSwitch(the_module, names, 1, "the-value", expressions[14], expressions[15]); - } - expressions[720] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - { - const char* names[] = { "the-nothing" }; - expressions[721] = BinaryenSwitch(the_module, names, 1, "the-nothing", expressions[720], expressions[0]); - } - expressions[722] = BinaryenConst(the_module, BinaryenLiteralInt32(13)); - expressions[723] = BinaryenConst(the_module, BinaryenLiteralInt64(37)); - expressions[724] = BinaryenConst(the_module, BinaryenLiteralFloat32(1.3)); - expressions[725] = BinaryenConst(the_module, BinaryenLiteralFloat64(3.7)); - { - BinaryenExpressionRef operands[] = { expressions[722], expressions[723], expressions[724], expressions[725] }; - expressions[726] = BinaryenCall(the_module, "kitchen()sinker", operands, 4, 2); - } - expressions[727] = BinaryenUnary(the_module, 20, expressions[726]); - expressions[728] = BinaryenConst(the_module, BinaryenLiteralInt32(13)); - expressions[729] = BinaryenConst(the_module, BinaryenLiteralFloat64(3.7)); - { - BinaryenExpressionRef operands[] = { expressions[728], expressions[729] }; - expressions[730] = BinaryenCall(the_module, "an-imported", operands, 2, 4); - } - expressions[731] = BinaryenUnary(the_module, 25, expressions[730]); - expressions[732] = BinaryenUnary(the_module, 20, expressions[731]); - expressions[733] = BinaryenConst(the_module, BinaryenLiteralInt32(2449)); - expressions[734] = BinaryenConst(the_module, BinaryenLiteralInt32(13)); - expressions[735] = BinaryenConst(the_module, BinaryenLiteralInt64(37)); - expressions[736] = BinaryenConst(the_module, BinaryenLiteralFloat32(1.3)); - expressions[737] = BinaryenConst(the_module, BinaryenLiteralFloat64(3.7)); - { - BinaryenExpressionRef operands[] = { expressions[734], expressions[735], expressions[736], expressions[737] }; - expressions[738] = BinaryenCallIndirect(the_module, expressions[733], operands, 4, 11, 2); - } - expressions[739] = BinaryenUnary(the_module, 20, expressions[738]); - expressions[740] = BinaryenLocalGet(the_module, 0, 2); - expressions[741] = BinaryenDrop(the_module, expressions[740]); - expressions[742] = BinaryenConst(the_module, BinaryenLiteralInt32(101)); - expressions[743] = BinaryenLocalSet(the_module, 0, expressions[742]); - expressions[744] = BinaryenConst(the_module, BinaryenLiteralInt32(102)); - expressions[745] = BinaryenLocalTee(the_module, 0, expressions[744], 2); - expressions[746] = BinaryenDrop(the_module, expressions[745]); - expressions[747] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[748] = BinaryenLoad(the_module, 4, 1, 0, 0, 2, expressions[747]); - expressions[749] = BinaryenConst(the_module, BinaryenLiteralInt32(8)); - expressions[750] = BinaryenLoad(the_module, 2, 1, 2, 1, 3, expressions[749]); - expressions[751] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - expressions[752] = BinaryenLoad(the_module, 4, 1, 0, 0, 4, expressions[751]); - expressions[753] = BinaryenConst(the_module, BinaryenLiteralInt32(9)); - expressions[754] = BinaryenLoad(the_module, 8, 1, 2, 8, 5, expressions[753]); - expressions[755] = BinaryenStore(the_module, 4, 0, 0, expressions[19], expressions[20], 2); - expressions[756] = BinaryenStore(the_module, 8, 2, 4, expressions[21], expressions[22], 3); - expressions[757] = BinaryenSelect(the_module, expressions[16], expressions[17], expressions[18], BinaryenTypeAuto()); - expressions[758] = BinaryenConst(the_module, BinaryenLiteralInt32(1337)); - expressions[759] = BinaryenReturn(the_module, expressions[758]); - expressions[760] = BinaryenConst(the_module, BinaryenLiteralInt32(13)); - expressions[761] = BinaryenConst(the_module, BinaryenLiteralInt64(37)); - expressions[762] = BinaryenConst(the_module, BinaryenLiteralFloat32(1.3)); - expressions[763] = BinaryenConst(the_module, BinaryenLiteralFloat64(3.7)); - { - BinaryenExpressionRef operands[] = { expressions[760], expressions[761], expressions[762], expressions[763] }; - expressions[764] = BinaryenReturnCall(the_module, "kitchen()sinker", operands, 4, 2); - } - expressions[765] = BinaryenConst(the_module, BinaryenLiteralInt32(2449)); - expressions[766] = BinaryenConst(the_module, BinaryenLiteralInt32(13)); - expressions[767] = BinaryenConst(the_module, BinaryenLiteralInt64(37)); - expressions[768] = BinaryenConst(the_module, BinaryenLiteralFloat32(1.3)); - expressions[769] = BinaryenConst(the_module, BinaryenLiteralFloat64(3.7)); - { - BinaryenExpressionRef operands[] = { expressions[766], expressions[767], expressions[768], expressions[769] }; - expressions[770] = BinaryenReturnCallIndirect(the_module, expressions[765], operands, 4, 11, 2); - } - expressions[771] = BinaryenRefNull(the_module); - expressions[772] = BinaryenRefIsNull(the_module, expressions[771]); - expressions[773] = BinaryenRefFunc(the_module, "kitchen()sinker"); - expressions[774] = BinaryenRefIsNull(the_module, expressions[773]); - expressions[775] = BinaryenRefNull(the_module); - expressions[776] = BinaryenRefFunc(the_module, "kitchen()sinker"); - expressions[777] = BinaryenSelect(the_module, expressions[16], expressions[775], expressions[776], 7); - expressions[778] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[778] }; - expressions[779] = BinaryenThrow(the_module, "a-event", operands, 1); - } - expressions[780] = BinaryenPop(the_module, 10); - expressions[781] = BinaryenLocalSet(the_module, 5, expressions[780]); - expressions[782] = BinaryenLocalGet(the_module, 5, 10); - expressions[783] = BinaryenBrOnExn(the_module, "try-block", "a-event", expressions[782]); - expressions[784] = BinaryenRethrow(the_module, expressions[783]); - { - BinaryenExpressionRef children[] = { expressions[784] }; - expressions[785] = BinaryenBlock(the_module, "try-block", children, 1, 2); - } - expressions[786] = BinaryenDrop(the_module, expressions[785]); - { - BinaryenExpressionRef children[] = { expressions[781], expressions[786] }; - expressions[787] = BinaryenBlock(the_module, NULL, children, 2, 0); - } - expressions[788] = BinaryenTry(the_module, expressions[779], expressions[787]); - expressions[789] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - expressions[790] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - expressions[791] = BinaryenAtomicLoad(the_module, 4, 0, 2, expressions[790]); - expressions[792] = BinaryenAtomicStore(the_module, 4, 0, expressions[789], expressions[791], 2); - expressions[793] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - expressions[794] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - expressions[795] = BinaryenConst(the_module, BinaryenLiteralInt64(0)); - expressions[796] = BinaryenAtomicWait(the_module, expressions[793], expressions[794], expressions[795], 2); - expressions[797] = BinaryenDrop(the_module, expressions[796]); - expressions[798] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - expressions[799] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - expressions[800] = BinaryenAtomicNotify(the_module, expressions[798], expressions[799]); - expressions[801] = BinaryenDrop(the_module, expressions[800]); - expressions[802] = BinaryenAtomicFence(the_module); - expressions[803] = BinaryenPop(the_module, 2); - expressions[804] = BinaryenPush(the_module, expressions[803]); - expressions[805] = BinaryenPop(the_module, 3); - expressions[806] = BinaryenPush(the_module, expressions[805]); - expressions[807] = BinaryenPop(the_module, 4); - expressions[808] = BinaryenPush(the_module, expressions[807]); - expressions[809] = BinaryenPop(the_module, 5); - expressions[810] = BinaryenPush(the_module, expressions[809]); - expressions[811] = BinaryenPop(the_module, 6); - expressions[812] = BinaryenPush(the_module, expressions[811]); - expressions[813] = BinaryenPop(the_module, 8); - expressions[814] = BinaryenPush(the_module, expressions[813]); - expressions[815] = BinaryenPop(the_module, 7); - expressions[816] = BinaryenPush(the_module, expressions[815]); - expressions[817] = BinaryenPop(the_module, 9); - expressions[818] = BinaryenPush(the_module, expressions[817]); - expressions[819] = BinaryenPop(the_module, 10); - expressions[820] = BinaryenPush(the_module, expressions[819]); - expressions[821] = BinaryenNop(the_module); - expressions[822] = BinaryenUnreachable(the_module); - BinaryenExpressionGetId(expressions[30]); - BinaryenExpressionGetType(expressions[30]); - BinaryenUnaryGetOp(expressions[30]); - BinaryenUnaryGetValue(expressions[30]); -getExpressionInfo={"id":15,"type":4,"op":6} - BinaryenExpressionPrint(expressions[30]); -(f32.neg - (f32.const -33.61199951171875) -) - - expressions[823] = BinaryenConst(the_module, BinaryenLiteralInt32(5)); - BinaryenExpressionGetId(expressions[823]); - BinaryenExpressionGetType(expressions[823]); - BinaryenConstGetValueI32(expressions[823]); -getExpressionInfo(i32.const)={"id":14,"type":2,"value":5} - expressions[824] = BinaryenConst(the_module, BinaryenLiteralInt64(30064771078)); - BinaryenExpressionGetId(expressions[824]); - BinaryenExpressionGetType(expressions[824]); - BinaryenConstGetValueI64Low(expressions[824]); - BinaryenConstGetValueI64High(expressions[824]); -getExpressionInfo(i64.const)={"id":14,"type":3,"value":{"low":6,"high":7}} - expressions[825] = BinaryenConst(the_module, BinaryenLiteralFloat32(8.5)); - BinaryenExpressionGetId(expressions[825]); - BinaryenExpressionGetType(expressions[825]); - BinaryenConstGetValueF32(expressions[825]); -getExpressionInfo(f32.const)={"id":14,"type":4,"value":8.5} - expressions[826] = BinaryenConst(the_module, BinaryenLiteralFloat64(9.5)); - BinaryenExpressionGetId(expressions[826]); - BinaryenExpressionGetType(expressions[826]); - BinaryenConstGetValueF64(expressions[826]); -getExpressionInfo(f64.const)={"id":14,"type":5,"value":9.5} - { - BinaryenExpressionRef children[] = { expressions[24], expressions[26], expressions[28], expressions[30], expressions[32], - expressions[34], expressions[36], expressions[38], expressions[40], expressions[42], expressions[44], - expressions[46], expressions[48], expressions[50], expressions[52], expressions[54], expressions[56], - expressions[58], expressions[60], expressions[62], expressions[64], expressions[66], expressions[68], - expressions[70], expressions[72], expressions[74], expressions[76], expressions[78], expressions[80], - expressions[82], expressions[84], expressions[86], expressions[88], expressions[90], expressions[92], - expressions[94], expressions[96], expressions[98], expressions[100], expressions[102], expressions[104], - expressions[106], expressions[108], expressions[110], expressions[112], expressions[114], expressions[116], - expressions[118], expressions[120], expressions[122], expressions[124], expressions[126], expressions[128], - expressions[130], expressions[132], expressions[134], expressions[136], expressions[138], expressions[140], - expressions[142], expressions[144], expressions[146], expressions[148], expressions[150], expressions[152], - expressions[154], expressions[156], expressions[158], expressions[160], expressions[162], expressions[164], - expressions[166], expressions[168], expressions[170], expressions[172], expressions[174], expressions[176], - expressions[178], expressions[180], expressions[182], expressions[184], expressions[186], expressions[188], - expressions[190], expressions[192], expressions[195], expressions[198], expressions[201], expressions[204], - expressions[207], expressions[210], expressions[213], expressions[216], expressions[219], expressions[222], - expressions[225], expressions[228], expressions[231], expressions[234], expressions[237], expressions[240], - expressions[243], expressions[246], expressions[249], expressions[252], expressions[255], expressions[258], - expressions[261], expressions[264], expressions[267], expressions[270], expressions[273], expressions[276], - expressions[279], expressions[282], expressions[285], expressions[288], expressions[291], expressions[294], - expressions[297], expressions[300], expressions[303], expressions[306], expressions[309], expressions[312], - expressions[315], expressions[318], expressions[321], expressions[324], expressions[327], expressions[330], - expressions[333], expressions[336], expressions[339], expressions[342], expressions[345], expressions[348], - expressions[351], expressions[354], expressions[357], expressions[360], expressions[363], expressions[366], - expressions[369], expressions[372], expressions[375], expressions[378], expressions[381], expressions[384], - expressions[387], expressions[390], expressions[393], expressions[396], expressions[399], expressions[402], - expressions[405], expressions[408], expressions[411], expressions[414], expressions[417], expressions[420], - expressions[423], expressions[426], expressions[429], expressions[432], expressions[435], expressions[438], - expressions[441], expressions[444], expressions[447], expressions[450], expressions[453], expressions[456], - expressions[459], expressions[462], expressions[465], expressions[468], expressions[471], expressions[474], - expressions[477], expressions[480], expressions[483], expressions[486], expressions[489], expressions[492], - expressions[495], expressions[498], expressions[501], expressions[504], expressions[507], expressions[510], - expressions[513], expressions[516], expressions[519], expressions[522], expressions[525], expressions[528], - expressions[531], expressions[534], expressions[537], expressions[540], expressions[543], expressions[546], - expressions[549], expressions[552], expressions[555], expressions[558], expressions[561], expressions[564], - expressions[567], expressions[570], expressions[573], expressions[576], expressions[579], expressions[581], - expressions[583], expressions[585], expressions[587], expressions[589], expressions[591], expressions[593], - expressions[595], expressions[598], expressions[601], expressions[604], expressions[607], expressions[610], - expressions[613], expressions[616], expressions[619], expressions[622], expressions[625], expressions[628], - expressions[631], expressions[634], expressions[637], expressions[640], expressions[643], expressions[646], - expressions[649], expressions[651], expressions[653], expressions[655], expressions[657], expressions[659], - expressions[661], expressions[663], expressions[665], expressions[667], expressions[669], expressions[672], - expressions[676], expressions[680], expressions[684], expressions[688], expressions[692], expressions[696], - expressions[697], expressions[701], expressions[705], expressions[706], expressions[707], expressions[708], - expressions[710], expressions[712], expressions[713], expressions[715], expressions[717], expressions[718], - expressions[719], expressions[721], expressions[727], expressions[732], expressions[739], expressions[741], - expressions[743], expressions[746], expressions[748], expressions[750], expressions[752], expressions[754], - expressions[755], expressions[756], expressions[757], expressions[759], expressions[764], expressions[770], - expressions[772], expressions[774], expressions[777], expressions[788], expressions[792], expressions[797], - expressions[801], expressions[802], expressions[804], expressions[806], expressions[808], expressions[810], - expressions[812], expressions[814], expressions[816], expressions[818], expressions[820], expressions[821], - expressions[822] }; - expressions[827] = BinaryenBlock(the_module, "the-value", children, 306, 0); - } - expressions[828] = BinaryenDrop(the_module, expressions[827]); - { - BinaryenExpressionRef children[] = { expressions[828] }; - expressions[829] = BinaryenBlock(the_module, "the-nothing", children, 1, 0); - } - expressions[830] = BinaryenConst(the_module, BinaryenLiteralInt32(42)); - { - BinaryenExpressionRef children[] = { expressions[829], expressions[830] }; - expressions[831] = BinaryenBlock(the_module, "the-body", children, 2, 0); - } - { - BinaryenType varTypes[] = { 2, 10 }; - functions[0] = BinaryenAddFunction(the_module, "kitchen()sinker", 11, 2, varTypes, 2, expressions[831]); - } - expressions[832] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - globals[0] = BinaryenAddGlobal(the_module, "a-global", 2, 0, expressions[832]); - { - BinaryenType t273[] = {2, 5}; - BinaryenTypeCreate(t273, 2); // 12 - } - BinaryenAddFunctionImport(the_module, "an-imported", "module", "base", 12, 4); - BinaryenAddGlobalImport(the_module, "a-global-imp", "module", "base", 2, 0); - BinaryenAddGlobalImport(the_module, "a-mut-global-imp", "module", "base", 2, 1); - BinaryenAddEventImport(the_module, "a-event-imp", "module", "base", 0, 2, 0); - exports[0] = BinaryenAddFunctionExport(the_module, "kitchen()sinker", "kitchen_sinker"); - exports[1] = BinaryenAddGlobalExport(the_module, "a-global", "a-global-exp"); - exports[2] = BinaryenAddEventExport(the_module, "a-event", "a-event-exp"); - BinaryenFunctionGetName(functions[0]); - BinaryenFunctionImportGetModule(functions[0]); - BinaryenFunctionImportGetBase(functions[0]); - BinaryenFunctionGetParams(functions[0]); - BinaryenFunctionGetResults(functions[0]); - BinaryenFunctionGetNumVars(functions[0]); - BinaryenFunctionGetVar(functions[0], 0); - BinaryenFunctionGetVar(functions[0], 1); - BinaryenFunctionGetBody(functions[0]); - expressions[833] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - const char* funcNames[] = { "kitchen()sinker" }; - BinaryenSetFunctionTable(the_module, 1, 4294967295, funcNames, 1, expressions[833]); - } - expressions[834] = BinaryenConst(the_module, BinaryenLiteralInt32(10)); - { - const char segment0[] = { 104, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100 }; - const char segment1[] = { 73, 32, 97, 109, 32, 112, 97, 115, 115, 105, 118, 101 }; - const char* segments[] = { segment0, segment1 }; - int8_t segmentPassive[] = { 0, 1 }; - BinaryenExpressionRef segmentOffsets[] = { expressions[834], expressions[0] }; - BinaryenIndex segmentSizes[] = { 12, 12 }; - BinaryenSetMemory(the_module, 1, 256, "mem", segments, segmentPassive, segmentOffsets, segmentSizes, 2, 1); - } - expressions[835] = BinaryenNop(the_module); - { - BinaryenType varTypes[] = { 0 }; - functions[1] = BinaryenAddFunction(the_module, "starter", 0, 0, varTypes, 0, expressions[835]); - } - BinaryenSetStart(the_module, functions[1]); - BinaryenModuleAutoDrop(the_module); - BinaryenModuleSetFeatures(the_module, 511); - BinaryenModuleGetFeatures(the_module); - BinaryenModulePrint(the_module); -(module - (type $i32_i64_f32_f64_=>_i32 (func (param i32 i64 f32 f64) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) - (type $i32_f64_=>_f32 (func (param i32 f64) (result f32))) - (import "module" "base" (global $a-global-imp i32)) - (import "module" "base" (global $a-mut-global-imp (mut i32))) - (import "module" "base" (func $an-imported (param i32 f64) (result f32))) - (import "module" "base" (event $a-event-imp (attr 0) (param i32))) - (memory $0 (shared 1 256)) - (data (i32.const 10) "hello, world") - (data passive "I am passive") - (table $0 1 funcref) - (elem (i32.const 0) "$kitchen()sinker") - (global $a-global i32 (i32.const 1)) - (event $a-event (attr 0) (param i32)) - (export "kitchen_sinker" (func "$kitchen()sinker")) - (export "a-global-exp" (global $a-global)) - (export "a-event-exp" (event $a-event)) - (export "mem" (memory $0)) - (start $starter) - (func "$kitchen()sinker" (; 1 ;) (param $0 i32) (param $1 i64) (param $2 f32) (param $3 f64) (result i32) - (local $4 i32) - (local $5 exnref) - (block $the-body (result i32) - (block $the-nothing - (drop - (block $the-value (result i32) - (drop - (i32.clz - (i32.const -10) - ) - ) - (drop - (i64.ctz - (i64.const -22) - ) - ) - (drop - (i32.popcnt - (i32.const -10) - ) - ) - (drop - (f32.neg - (f32.const -33.61199951171875) - ) - ) - (drop - (f64.abs - (f64.const -9005.841) - ) - ) - (drop - (f32.ceil - (f32.const -33.61199951171875) - ) - ) - (drop - (f64.floor - (f64.const -9005.841) - ) - ) - (drop - (f32.trunc - (f32.const -33.61199951171875) - ) - ) - (drop - (f32.nearest - (f32.const -33.61199951171875) - ) - ) - (drop - (f64.sqrt - (f64.const -9005.841) - ) - ) - (drop - (i32.eqz - (i32.const -10) - ) - ) - (drop - (i64.extend_i32_s - (i32.const -10) - ) - ) - (drop - (i64.extend_i32_u - (i32.const -10) - ) - ) - (drop - (i32.wrap_i64 - (i64.const -22) - ) - ) - (drop - (i32.trunc_f32_s - (f32.const -33.61199951171875) - ) - ) - (drop - (i64.trunc_f32_s - (f32.const -33.61199951171875) - ) - ) - (drop - (i32.trunc_f32_u - (f32.const -33.61199951171875) - ) - ) - (drop - (i64.trunc_f32_u - (f32.const -33.61199951171875) - ) - ) - (drop - (i32.trunc_f64_s - (f64.const -9005.841) - ) - ) - (drop - (i64.trunc_f64_s - (f64.const -9005.841) - ) - ) - (drop - (i32.trunc_f64_u - (f64.const -9005.841) - ) - ) - (drop - (i64.trunc_f64_u - (f64.const -9005.841) - ) - ) - (drop - (i32.trunc_sat_f32_s - (f32.const -33.61199951171875) - ) - ) - (drop - (i64.trunc_sat_f32_s - (f32.const -33.61199951171875) - ) - ) - (drop - (i32.trunc_sat_f32_u - (f32.const -33.61199951171875) - ) - ) - (drop - (i64.trunc_sat_f32_u - (f32.const -33.61199951171875) - ) - ) - (drop - (i32.trunc_sat_f64_s - (f64.const -9005.841) - ) - ) - (drop - (i64.trunc_sat_f64_s - (f64.const -9005.841) - ) - ) - (drop - (i32.trunc_sat_f64_u - (f64.const -9005.841) - ) - ) - (drop - (i64.trunc_sat_f64_u - (f64.const -9005.841) - ) - ) - (drop - (i32.reinterpret_f32 - (f32.const -33.61199951171875) - ) - ) - (drop - (i64.reinterpret_f64 - (f64.const -9005.841) - ) - ) - (drop - (f32.convert_i32_s - (i32.const -10) - ) - ) - (drop - (f64.convert_i32_s - (i32.const -10) - ) - ) - (drop - (f32.convert_i32_u - (i32.const -10) - ) - ) - (drop - (f64.convert_i32_u - (i32.const -10) - ) - ) - (drop - (f32.convert_i64_s - (i64.const -22) - ) - ) - (drop - (f64.convert_i64_s - (i64.const -22) - ) - ) - (drop - (f32.convert_i64_u - (i64.const -22) - ) - ) - (drop - (f64.convert_i64_u - (i64.const -22) - ) - ) - (drop - (f64.promote_f32 - (f32.const -33.61199951171875) - ) - ) - (drop - (f32.demote_f64 - (f64.const -9005.841) - ) - ) - (drop - (f32.reinterpret_i32 - (i32.const -10) - ) - ) - (drop - (f64.reinterpret_i64 - (i64.const -22) - ) - ) - (drop - (i8x16.splat - (i32.const 42) - ) - ) - (drop - (i16x8.splat - (i32.const 42) - ) - ) - (drop - (i32x4.splat - (i32.const 42) - ) - ) - (drop - (i64x2.splat - (i64.const 1958505087099) - ) - ) - (drop - (f32x4.splat - (f32.const 42) - ) - ) - (drop - (f64x2.splat - (f64.const 42) - ) - ) - (drop - (v128.not - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.any_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.all_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.any_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.all_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.any_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.all_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.any_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.all_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.abs - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.sqrt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.abs - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.sqrt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.trunc_sat_f32x4_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.trunc_sat_f32x4_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.trunc_sat_f64x2_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.trunc_sat_f64x2_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.convert_i32x4_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.convert_i32x4_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.convert_i64x2_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.convert_i64x2_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.widen_low_i8x16_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.widen_high_i8x16_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.widen_low_i8x16_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.widen_high_i8x16_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.widen_low_i16x8_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.widen_high_i16x8_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.widen_low_i16x8_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.widen_high_i16x8_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32.add - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (f64.sub - (f64.const -9005.841) - (f64.const -9007.333) - ) - ) - (drop - (i32.div_s - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.div_u - (i64.const 4294967274) - (i64.const 4294967273) - ) - ) - (drop - (i64.rem_s - (i64.const 4294967274) - (i64.const 4294967273) - ) - ) - (drop - (i32.rem_u - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i32.and - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.or - (i64.const 4294967274) - (i64.const 4294967273) - ) - ) - (drop - (i32.xor - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.shl - (i64.const 4294967274) - (i64.const 4294967273) - ) - ) - (drop - (i64.shr_u - (i64.const 4294967274) - (i64.const 4294967273) - ) - ) - (drop - (i32.shr_s - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i32.rotl - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.rotr - (i64.const 4294967274) - (i64.const 4294967273) - ) - ) - (drop - (f32.div - (f32.const -33.61199951171875) - (f32.const -62.5) - ) - ) - (drop - (f64.copysign - (f64.const -9005.841) - (f64.const -9007.333) - ) - ) - (drop - (f32.min - (f32.const -33.61199951171875) - (f32.const -62.5) - ) - ) - (drop - (f64.max - (f64.const -9005.841) - (f64.const -9007.333) - ) - ) - (drop - (i32.eq - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (f32.ne - (f32.const -33.61199951171875) - (f32.const -62.5) - ) - ) - (drop - (i32.lt_s - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.lt_u - (i64.const 4294967274) - (i64.const 4294967273) - ) - ) - (drop - (i64.le_s - (i64.const 4294967274) - (i64.const 4294967273) - ) - ) - (drop - (i32.le_u - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.gt_s - (i64.const 4294967274) - (i64.const 4294967273) - ) - ) - (drop - (i32.gt_u - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i32.ge_s - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.ge_u - (i64.const 4294967274) - (i64.const 4294967273) - ) - ) - (drop - (f32.lt - (f32.const -33.61199951171875) - (f32.const -62.5) - ) - ) - (drop - (f64.le - (f64.const -9005.841) - (f64.const -9007.333) - ) - ) - (drop - (f64.gt - (f64.const -9005.841) - (f64.const -9007.333) - ) - ) - (drop - (f32.ge - (f32.const -33.61199951171875) - (f32.const -62.5) - ) - ) - (drop - (i8x16.eq - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.ne - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.lt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.lt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.gt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.gt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.le_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.le_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.ge_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.ge_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.eq - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.ne - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.lt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.lt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.gt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.gt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.le_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.le_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.ge_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.ge_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.eq - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.ne - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.lt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.lt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.gt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.gt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.le_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.le_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.ge_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.ge_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.eq - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.ne - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.lt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.gt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.le - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.ge - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.eq - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.ne - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.lt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.gt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.le - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.ge - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v128.and - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v128.or - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v128.xor - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v128.andnot - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.add_saturate_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.add_saturate_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.sub_saturate_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.sub_saturate_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.mul - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.min_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.min_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.max_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.max_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.avgr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.add_saturate_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.add_saturate_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.sub_saturate_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.sub_saturate_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.mul - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.min_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.min_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.max_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.max_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.avgr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.mul - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.min_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.min_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.max_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.max_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.dot_i16x8_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.mul - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.div - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.min - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.max - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.mul - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.div - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.min - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.max - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.narrow_i16x8_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.narrow_i16x8_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.narrow_i32x4_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.narrow_i32x4_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v8x16.swizzle - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.extract_lane_s 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.extract_lane_u 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.extract_lane_s 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.extract_lane_u 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.extract_lane 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.extract_lane 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.extract_lane 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.extract_lane 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.replace_lane 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 42) - ) - ) - (drop - (i8x16.replace_lane 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 42) - ) - ) - (drop - (i32x4.replace_lane 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 42) - ) - ) - (drop - (i64x2.replace_lane 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i64.const 184683593770) - ) - ) - (drop - (f32x4.replace_lane 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (f32.const 42) - ) - ) - (drop - (f64x2.replace_lane 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (f64.const 42) - ) - ) - (drop - (i8x16.shl - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i8x16.shr_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i8x16.shr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i16x8.shl - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i16x8.shr_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i16x8.shr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i32x4.shl - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i32x4.shr_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i32x4.shr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i64x2.shl - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i64x2.shr_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i64x2.shr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (v8x16.load_splat - (i32.const 128) - ) - ) - (drop - (v16x8.load_splat offset=16 align=1 - (i32.const 128) - ) - ) - (drop - (v32x4.load_splat offset=16 - (i32.const 128) - ) - ) - (drop - (v64x2.load_splat align=4 - (i32.const 128) - ) - ) - (drop - (i16x8.load8x8_s - (i32.const 128) - ) - ) - (drop - (i16x8.load8x8_u - (i32.const 128) - ) - ) - (drop - (i32x4.load16x4_s - (i32.const 128) - ) - ) - (drop - (i32x4.load16x4_u - (i32.const 128) - ) - ) - (drop - (i64x2.load32x2_s - (i32.const 128) - ) - ) - (drop - (i64x2.load32x2_u - (i32.const 128) - ) - ) - (drop - (v8x16.shuffle 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v128.bitselect - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.qfma - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.qfms - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.qfma - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.qfms - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (memory.init 0 - (i32.const 1024) - (i32.const 0) - (i32.const 12) - ) - (data.drop 0) - (memory.copy - (i32.const 2048) - (i32.const 1024) - (i32.const 12) - ) - (memory.fill - (i32.const 0) - (i32.const 42) - (i32.const 1024) - ) - (block - ) - (if - (i32.const 1) - (drop - (i32.const 2) - ) - (drop - (i32.const 3) - ) - ) - (if - (i32.const 4) - (drop - (i32.const 5) - ) - ) - (drop - (loop $in (result i32) - (i32.const 0) - ) - ) - (drop - (loop (result i32) - (i32.const 0) - ) - ) - (drop - (br_if $the-value - (i32.const 1) - (i32.const 0) - ) - ) - (br_if $the-nothing - (i32.const 2) - ) - (br $the-value - (i32.const 3) - ) - (br $the-nothing) - (br_table $the-value $the-value - (i32.const 1) - (i32.const 0) - ) - (br_table $the-nothing $the-nothing - (i32.const 2) - ) - (drop - (i32.eqz - (call "$kitchen()sinker" - (i32.const 13) - (i64.const 37) - (f32.const 1.2999999523162842) - (f64.const 3.7) - ) - ) - ) - (drop - (i32.eqz - (i32.trunc_f32_s - (call $an-imported - (i32.const 13) - (f64.const 3.7) - ) - ) - ) - ) - (drop - (i32.eqz - (call_indirect (type $i32_i64_f32_f64_=>_i32) - (i32.const 13) - (i64.const 37) - (f32.const 1.2999999523162842) - (f64.const 3.7) - (i32.const 2449) - ) - ) - ) - (drop - (local.get $0) - ) - (local.set $0 - (i32.const 101) - ) - (drop - (local.tee $0 - (i32.const 102) - ) - ) - (drop - (i32.load - (i32.const 1) - ) - ) - (drop - (i64.load16_s offset=2 align=1 - (i32.const 8) - ) - ) - (drop - (f32.load - (i32.const 2) - ) - ) - (drop - (f64.load offset=2 - (i32.const 9) - ) - ) - (i32.store - (i32.const 10) - (i32.const 11) - ) - (i64.store offset=2 align=4 - (i32.const 110) - (i64.const 111) - ) - (drop - (select - (i32.const 3) - (i32.const 5) - (i32.const 1) - ) - ) - (return - (i32.const 1337) - ) - (return_call "$kitchen()sinker" - (i32.const 13) - (i64.const 37) - (f32.const 1.2999999523162842) - (f64.const 3.7) - ) - (return_call_indirect (type $i32_i64_f32_f64_=>_i32) - (i32.const 13) - (i64.const 37) - (f32.const 1.2999999523162842) - (f64.const 3.7) - (i32.const 2449) - ) - (drop - (ref.is_null - (ref.null) - ) - ) - (drop - (ref.is_null - (ref.func "$kitchen()sinker") - ) - ) - (drop - (select (result funcref) - (ref.null) - (ref.func "$kitchen()sinker") - (i32.const 1) - ) - ) - (try - (throw $a-event - (i32.const 0) - ) - (catch - (local.set $5 - (exnref.pop) - ) - (drop - (block $try-block (result i32) - (rethrow - (br_on_exn $try-block $a-event - (local.get $5) - ) - ) - ) - ) - ) - ) - (i32.atomic.store - (i32.const 0) - (i32.atomic.load - (i32.const 0) - ) - ) - (drop - (i32.atomic.wait - (i32.const 0) - (i32.const 0) - (i64.const 0) - ) - ) - (drop - (atomic.notify - (i32.const 0) - (i32.const 0) - ) - ) - (atomic.fence) - (push - (i32.pop) - ) - (push - (i64.pop) - ) - (push - (f32.pop) - ) - (push - (f64.pop) - ) - (push - (v128.pop) - ) - (push - (anyref.pop) - ) - (push - (funcref.pop) - ) - (push - (nullref.pop) - ) - (push - (exnref.pop) - ) - (nop) - (unreachable) - ) - ) - ) - (i32.const 42) - ) - ) - (func $starter (; 2 ;) - (nop) - ) -) - - BinaryenModuleValidate(the_module); - BinaryenModulePrint(the_module); -(module - (type $i32_i64_f32_f64_=>_i32 (func (param i32 i64 f32 f64) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $none_=>_none (func)) - (type $i32_f64_=>_f32 (func (param i32 f64) (result f32))) - (import "module" "base" (global $a-global-imp i32)) - (import "module" "base" (global $a-mut-global-imp (mut i32))) - (import "module" "base" (func $an-imported (param i32 f64) (result f32))) - (import "module" "base" (event $a-event-imp (attr 0) (param i32))) - (memory $0 (shared 1 256)) - (data (i32.const 10) "hello, world") - (data passive "I am passive") - (table $0 1 funcref) - (elem (i32.const 0) "$kitchen()sinker") - (global $a-global i32 (i32.const 1)) - (event $a-event (attr 0) (param i32)) - (export "kitchen_sinker" (func "$kitchen()sinker")) - (export "a-global-exp" (global $a-global)) - (export "a-event-exp" (event $a-event)) - (export "mem" (memory $0)) - (start $starter) - (func "$kitchen()sinker" (; 1 ;) (param $0 i32) (param $1 i64) (param $2 f32) (param $3 f64) (result i32) - (local $4 i32) - (local $5 exnref) - (block $the-body (result i32) - (block $the-nothing - (drop - (block $the-value (result i32) - (drop - (i32.clz - (i32.const -10) - ) - ) - (drop - (i64.ctz - (i64.const -22) - ) - ) - (drop - (i32.popcnt - (i32.const -10) - ) - ) - (drop - (f32.neg - (f32.const -33.61199951171875) - ) - ) - (drop - (f64.abs - (f64.const -9005.841) - ) - ) - (drop - (f32.ceil - (f32.const -33.61199951171875) - ) - ) - (drop - (f64.floor - (f64.const -9005.841) - ) - ) - (drop - (f32.trunc - (f32.const -33.61199951171875) - ) - ) - (drop - (f32.nearest - (f32.const -33.61199951171875) - ) - ) - (drop - (f64.sqrt - (f64.const -9005.841) - ) - ) - (drop - (i32.eqz - (i32.const -10) - ) - ) - (drop - (i64.extend_i32_s - (i32.const -10) - ) - ) - (drop - (i64.extend_i32_u - (i32.const -10) - ) - ) - (drop - (i32.wrap_i64 - (i64.const -22) - ) - ) - (drop - (i32.trunc_f32_s - (f32.const -33.61199951171875) - ) - ) - (drop - (i64.trunc_f32_s - (f32.const -33.61199951171875) - ) - ) - (drop - (i32.trunc_f32_u - (f32.const -33.61199951171875) - ) - ) - (drop - (i64.trunc_f32_u - (f32.const -33.61199951171875) - ) - ) - (drop - (i32.trunc_f64_s - (f64.const -9005.841) - ) - ) - (drop - (i64.trunc_f64_s - (f64.const -9005.841) - ) - ) - (drop - (i32.trunc_f64_u - (f64.const -9005.841) - ) - ) - (drop - (i64.trunc_f64_u - (f64.const -9005.841) - ) - ) - (drop - (i32.trunc_sat_f32_s - (f32.const -33.61199951171875) - ) - ) - (drop - (i64.trunc_sat_f32_s - (f32.const -33.61199951171875) - ) - ) - (drop - (i32.trunc_sat_f32_u - (f32.const -33.61199951171875) - ) - ) - (drop - (i64.trunc_sat_f32_u - (f32.const -33.61199951171875) - ) - ) - (drop - (i32.trunc_sat_f64_s - (f64.const -9005.841) - ) - ) - (drop - (i64.trunc_sat_f64_s - (f64.const -9005.841) - ) - ) - (drop - (i32.trunc_sat_f64_u - (f64.const -9005.841) - ) - ) - (drop - (i64.trunc_sat_f64_u - (f64.const -9005.841) - ) - ) - (drop - (i32.reinterpret_f32 - (f32.const -33.61199951171875) - ) - ) - (drop - (i64.reinterpret_f64 - (f64.const -9005.841) - ) - ) - (drop - (f32.convert_i32_s - (i32.const -10) - ) - ) - (drop - (f64.convert_i32_s - (i32.const -10) - ) - ) - (drop - (f32.convert_i32_u - (i32.const -10) - ) - ) - (drop - (f64.convert_i32_u - (i32.const -10) - ) - ) - (drop - (f32.convert_i64_s - (i64.const -22) - ) - ) - (drop - (f64.convert_i64_s - (i64.const -22) - ) - ) - (drop - (f32.convert_i64_u - (i64.const -22) - ) - ) - (drop - (f64.convert_i64_u - (i64.const -22) - ) - ) - (drop - (f64.promote_f32 - (f32.const -33.61199951171875) - ) - ) - (drop - (f32.demote_f64 - (f64.const -9005.841) - ) - ) - (drop - (f32.reinterpret_i32 - (i32.const -10) - ) - ) - (drop - (f64.reinterpret_i64 - (i64.const -22) - ) - ) - (drop - (i8x16.splat - (i32.const 42) - ) - ) - (drop - (i16x8.splat - (i32.const 42) - ) - ) - (drop - (i32x4.splat - (i32.const 42) - ) - ) - (drop - (i64x2.splat - (i64.const 1958505087099) - ) - ) - (drop - (f32x4.splat - (f32.const 42) - ) - ) - (drop - (f64x2.splat - (f64.const 42) - ) - ) - (drop - (v128.not - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.any_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.all_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.any_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.all_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.any_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.all_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.any_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.all_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.abs - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.sqrt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.abs - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.sqrt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.trunc_sat_f32x4_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.trunc_sat_f32x4_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.trunc_sat_f64x2_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.trunc_sat_f64x2_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.convert_i32x4_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.convert_i32x4_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.convert_i64x2_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.convert_i64x2_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.widen_low_i8x16_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.widen_high_i8x16_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.widen_low_i8x16_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.widen_high_i8x16_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.widen_low_i16x8_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.widen_high_i16x8_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.widen_low_i16x8_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.widen_high_i16x8_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32.add - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (f64.sub - (f64.const -9005.841) - (f64.const -9007.333) - ) - ) - (drop - (i32.div_s - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.div_u - (i64.const 4294967274) - (i64.const 4294967273) - ) - ) - (drop - (i64.rem_s - (i64.const 4294967274) - (i64.const 4294967273) - ) - ) - (drop - (i32.rem_u - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i32.and - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.or - (i64.const 4294967274) - (i64.const 4294967273) - ) - ) - (drop - (i32.xor - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.shl - (i64.const 4294967274) - (i64.const 4294967273) - ) - ) - (drop - (i64.shr_u - (i64.const 4294967274) - (i64.const 4294967273) - ) - ) - (drop - (i32.shr_s - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i32.rotl - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.rotr - (i64.const 4294967274) - (i64.const 4294967273) - ) - ) - (drop - (f32.div - (f32.const -33.61199951171875) - (f32.const -62.5) - ) - ) - (drop - (f64.copysign - (f64.const -9005.841) - (f64.const -9007.333) - ) - ) - (drop - (f32.min - (f32.const -33.61199951171875) - (f32.const -62.5) - ) - ) - (drop - (f64.max - (f64.const -9005.841) - (f64.const -9007.333) - ) - ) - (drop - (i32.eq - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (f32.ne - (f32.const -33.61199951171875) - (f32.const -62.5) - ) - ) - (drop - (i32.lt_s - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.lt_u - (i64.const 4294967274) - (i64.const 4294967273) - ) - ) - (drop - (i64.le_s - (i64.const 4294967274) - (i64.const 4294967273) - ) - ) - (drop - (i32.le_u - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.gt_s - (i64.const 4294967274) - (i64.const 4294967273) - ) - ) - (drop - (i32.gt_u - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i32.ge_s - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.ge_u - (i64.const 4294967274) - (i64.const 4294967273) - ) - ) - (drop - (f32.lt - (f32.const -33.61199951171875) - (f32.const -62.5) - ) - ) - (drop - (f64.le - (f64.const -9005.841) - (f64.const -9007.333) - ) - ) - (drop - (f64.gt - (f64.const -9005.841) - (f64.const -9007.333) - ) - ) - (drop - (f32.ge - (f32.const -33.61199951171875) - (f32.const -62.5) - ) - ) - (drop - (i8x16.eq - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.ne - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.lt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.lt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.gt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.gt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.le_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.le_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.ge_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.ge_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.eq - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.ne - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.lt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.lt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.gt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.gt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.le_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.le_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.ge_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.ge_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.eq - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.ne - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.lt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.lt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.gt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.gt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.le_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.le_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.ge_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.ge_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.eq - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.ne - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.lt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.gt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.le - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.ge - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.eq - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.ne - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.lt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.gt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.le - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.ge - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v128.and - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v128.or - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v128.xor - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v128.andnot - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.add_saturate_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.add_saturate_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.sub_saturate_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.sub_saturate_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.mul - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.min_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.min_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.max_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.max_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.avgr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.add_saturate_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.add_saturate_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.sub_saturate_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.sub_saturate_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.mul - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.min_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.min_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.max_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.max_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.avgr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.mul - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.min_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.min_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.max_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.max_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.dot_i16x8_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.mul - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.div - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.min - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.max - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.mul - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.div - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.min - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.max - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.narrow_i16x8_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.narrow_i16x8_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.narrow_i32x4_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.narrow_i32x4_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v8x16.swizzle - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.extract_lane_s 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.extract_lane_u 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.extract_lane_s 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.extract_lane_u 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.extract_lane 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.extract_lane 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.extract_lane 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.extract_lane 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.replace_lane 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 42) - ) - ) - (drop - (i8x16.replace_lane 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 42) - ) - ) - (drop - (i32x4.replace_lane 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 42) - ) - ) - (drop - (i64x2.replace_lane 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i64.const 184683593770) - ) - ) - (drop - (f32x4.replace_lane 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (f32.const 42) - ) - ) - (drop - (f64x2.replace_lane 1 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (f64.const 42) - ) - ) - (drop - (i8x16.shl - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i8x16.shr_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i8x16.shr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i16x8.shl - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i16x8.shr_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i16x8.shr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i32x4.shl - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i32x4.shr_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i32x4.shr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i64x2.shl - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i64x2.shr_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i64x2.shr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (v8x16.load_splat - (i32.const 128) - ) - ) - (drop - (v16x8.load_splat offset=16 align=1 - (i32.const 128) - ) - ) - (drop - (v32x4.load_splat offset=16 - (i32.const 128) - ) - ) - (drop - (v64x2.load_splat align=4 - (i32.const 128) - ) - ) - (drop - (i16x8.load8x8_s - (i32.const 128) - ) - ) - (drop - (i16x8.load8x8_u - (i32.const 128) - ) - ) - (drop - (i32x4.load16x4_s - (i32.const 128) - ) - ) - (drop - (i32x4.load16x4_u - (i32.const 128) - ) - ) - (drop - (i64x2.load32x2_s - (i32.const 128) - ) - ) - (drop - (i64x2.load32x2_u - (i32.const 128) - ) - ) - (drop - (v8x16.shuffle 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v128.bitselect - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.qfma - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.qfms - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.qfma - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.qfms - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (memory.init 0 - (i32.const 1024) - (i32.const 0) - (i32.const 12) - ) - (data.drop 0) - (memory.copy - (i32.const 2048) - (i32.const 1024) - (i32.const 12) - ) - (memory.fill - (i32.const 0) - (i32.const 42) - (i32.const 1024) - ) - (block - ) - (if - (i32.const 1) - (drop - (i32.const 2) - ) - (drop - (i32.const 3) - ) - ) - (if - (i32.const 4) - (drop - (i32.const 5) - ) - ) - (drop - (loop $in (result i32) - (i32.const 0) - ) - ) - (drop - (loop (result i32) - (i32.const 0) - ) - ) - (drop - (br_if $the-value - (i32.const 1) - (i32.const 0) - ) - ) - (br_if $the-nothing - (i32.const 2) - ) - (br $the-value - (i32.const 3) - ) - (br $the-nothing) - (br_table $the-value $the-value - (i32.const 1) - (i32.const 0) - ) - (br_table $the-nothing $the-nothing - (i32.const 2) - ) - (drop - (i32.eqz - (call "$kitchen()sinker" - (i32.const 13) - (i64.const 37) - (f32.const 1.2999999523162842) - (f64.const 3.7) - ) - ) - ) - (drop - (i32.eqz - (i32.trunc_f32_s - (call $an-imported - (i32.const 13) - (f64.const 3.7) - ) - ) - ) - ) - (drop - (i32.eqz - (call_indirect (type $i32_i64_f32_f64_=>_i32) - (i32.const 13) - (i64.const 37) - (f32.const 1.2999999523162842) - (f64.const 3.7) - (i32.const 2449) - ) - ) - ) - (drop - (local.get $0) - ) - (local.set $0 - (i32.const 101) - ) - (drop - (local.tee $0 - (i32.const 102) - ) - ) - (drop - (i32.load - (i32.const 1) - ) - ) - (drop - (i64.load16_s offset=2 align=1 - (i32.const 8) - ) - ) - (drop - (f32.load - (i32.const 2) - ) - ) - (drop - (f64.load offset=2 - (i32.const 9) - ) - ) - (i32.store - (i32.const 10) - (i32.const 11) - ) - (i64.store offset=2 align=4 - (i32.const 110) - (i64.const 111) - ) - (drop - (select - (i32.const 3) - (i32.const 5) - (i32.const 1) - ) - ) - (return - (i32.const 1337) - ) - (return_call "$kitchen()sinker" - (i32.const 13) - (i64.const 37) - (f32.const 1.2999999523162842) - (f64.const 3.7) - ) - (return_call_indirect (type $i32_i64_f32_f64_=>_i32) - (i32.const 13) - (i64.const 37) - (f32.const 1.2999999523162842) - (f64.const 3.7) - (i32.const 2449) - ) - (drop - (ref.is_null - (ref.null) - ) - ) - (drop - (ref.is_null - (ref.func "$kitchen()sinker") - ) - ) - (drop - (select (result funcref) - (ref.null) - (ref.func "$kitchen()sinker") - (i32.const 1) - ) - ) - (try - (throw $a-event - (i32.const 0) - ) - (catch - (local.set $5 - (exnref.pop) - ) - (drop - (block $try-block (result i32) - (rethrow - (br_on_exn $try-block $a-event - (local.get $5) - ) - ) - ) - ) - ) - ) - (i32.atomic.store - (i32.const 0) - (i32.atomic.load - (i32.const 0) - ) - ) - (drop - (i32.atomic.wait - (i32.const 0) - (i32.const 0) - (i64.const 0) - ) - ) - (drop - (atomic.notify - (i32.const 0) - (i32.const 0) - ) - ) - (atomic.fence) - (push - (i32.pop) - ) - (push - (i64.pop) - ) - (push - (f32.pop) - ) - (push - (f64.pop) - ) - (push - (v128.pop) - ) - (push - (anyref.pop) - ) - (push - (funcref.pop) - ) - (push - (nullref.pop) - ) - (push - (exnref.pop) - ) - (nop) - (unreachable) - ) - ) - ) - (i32.const 42) - ) - ) - (func $starter (; 2 ;) - (nop) - ) -) - - BinaryenModuleDispose(the_module); - expressions.clear(); - functions.clear(); - globals.clear(); - events.clear(); - exports.clear(); - relooperBlocks.clear(); - the_module = BinaryenModuleCreate(); - expressions[size_t(NULL)] = BinaryenExpressionRef(NULL); - BinaryenAddFunctionImport(the_module, "check", "module", "check", 2, 0); - the_relooper = RelooperCreate(the_module); - expressions[1] = BinaryenConst(the_module, BinaryenLiteralInt32(1337)); - { - BinaryenExpressionRef operands[] = { expressions[1] }; - expressions[2] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[2]); - expressions[3] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[0] = BinaryenAddFunction(the_module, "just-one-block", 0, 0, varTypes, 1, expressions[3]); - } - the_relooper = RelooperCreate(the_module); - expressions[4] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[4] }; - expressions[5] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[5]); - expressions[6] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[6] }; - expressions[7] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[7]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]); - expressions[8] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[1] = BinaryenAddFunction(the_module, "two-blocks", 0, 0, varTypes, 1, expressions[8]); - } - the_relooper = RelooperCreate(the_module); - expressions[9] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[9] }; - expressions[10] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[10]); - expressions[11] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[11] }; - expressions[12] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[12]); - expressions[13] = BinaryenConst(the_module, BinaryenLiteralInt32(77)); - expressions[14] = BinaryenDrop(the_module, expressions[13]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[14]); - expressions[15] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[2] = BinaryenAddFunction(the_module, "two-blocks-plus-code", 0, 0, varTypes, 1, expressions[15]); - } - the_relooper = RelooperCreate(the_module); - expressions[16] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[16] }; - expressions[17] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[17]); - expressions[18] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[18] }; - expressions[19] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[19]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]); - RelooperAddBranch(relooperBlocks[1], relooperBlocks[0], expressions[0], expressions[0]); - expressions[20] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[3] = BinaryenAddFunction(the_module, "loop", 0, 0, varTypes, 1, expressions[20]); - } - the_relooper = RelooperCreate(the_module); - expressions[21] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[21] }; - expressions[22] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[22]); - expressions[23] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[23] }; - expressions[24] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[24]); - expressions[25] = BinaryenConst(the_module, BinaryenLiteralInt32(33)); - expressions[26] = BinaryenDrop(the_module, expressions[25]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[26]); - expressions[27] = BinaryenConst(the_module, BinaryenLiteralInt32(-66)); - expressions[28] = BinaryenDrop(the_module, expressions[27]); - RelooperAddBranch(relooperBlocks[1], relooperBlocks[0], expressions[0], expressions[28]); - expressions[29] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[4] = BinaryenAddFunction(the_module, "loop-plus-code", 0, 0, varTypes, 1, expressions[29]); - } - the_relooper = RelooperCreate(the_module); - expressions[30] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[30] }; - expressions[31] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[31]); - expressions[32] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[32] }; - expressions[33] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[33]); - expressions[34] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - { - BinaryenExpressionRef operands[] = { expressions[34] }; - expressions[35] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[35]); - expressions[36] = BinaryenConst(the_module, BinaryenLiteralInt32(55)); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[36], expressions[0]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[2], expressions[0], expressions[0]); - expressions[37] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[5] = BinaryenAddFunction(the_module, "split", 0, 0, varTypes, 1, expressions[37]); - } - the_relooper = RelooperCreate(the_module); - expressions[38] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[38] }; - expressions[39] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[39]); - expressions[40] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[40] }; - expressions[41] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[41]); - expressions[42] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - { - BinaryenExpressionRef operands[] = { expressions[42] }; - expressions[43] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[43]); - expressions[44] = BinaryenConst(the_module, BinaryenLiteralInt32(10)); - expressions[45] = BinaryenDrop(the_module, expressions[44]); - expressions[46] = BinaryenConst(the_module, BinaryenLiteralInt32(55)); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[46], expressions[45]); - expressions[47] = BinaryenConst(the_module, BinaryenLiteralInt32(20)); - expressions[48] = BinaryenDrop(the_module, expressions[47]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[2], expressions[0], expressions[48]); - expressions[49] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[6] = BinaryenAddFunction(the_module, "split-plus-code", 0, 0, varTypes, 1, expressions[49]); - } - the_relooper = RelooperCreate(the_module); - expressions[50] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[50] }; - expressions[51] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[51]); - expressions[52] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[52] }; - expressions[53] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[53]); - expressions[54] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - { - BinaryenExpressionRef operands[] = { expressions[54] }; - expressions[55] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[55]); - expressions[56] = BinaryenConst(the_module, BinaryenLiteralInt32(55)); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[56], expressions[0]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[2], expressions[0], expressions[0]); - RelooperAddBranch(relooperBlocks[1], relooperBlocks[2], expressions[0], expressions[0]); - expressions[57] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[7] = BinaryenAddFunction(the_module, "if", 0, 0, varTypes, 1, expressions[57]); - } - the_relooper = RelooperCreate(the_module); - expressions[58] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[58] }; - expressions[59] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[59]); - expressions[60] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[60] }; - expressions[61] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[61]); - expressions[62] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - { - BinaryenExpressionRef operands[] = { expressions[62] }; - expressions[63] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[63]); - expressions[64] = BinaryenConst(the_module, BinaryenLiteralInt32(-1)); - expressions[65] = BinaryenDrop(the_module, expressions[64]); - expressions[66] = BinaryenConst(the_module, BinaryenLiteralInt32(55)); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[66], expressions[65]); - expressions[67] = BinaryenConst(the_module, BinaryenLiteralInt32(-2)); - expressions[68] = BinaryenDrop(the_module, expressions[67]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[2], expressions[0], expressions[68]); - expressions[69] = BinaryenConst(the_module, BinaryenLiteralInt32(-3)); - expressions[70] = BinaryenDrop(the_module, expressions[69]); - RelooperAddBranch(relooperBlocks[1], relooperBlocks[2], expressions[0], expressions[70]); - expressions[71] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[8] = BinaryenAddFunction(the_module, "if-plus-code", 0, 0, varTypes, 1, expressions[71]); - } - the_relooper = RelooperCreate(the_module); - expressions[72] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[72] }; - expressions[73] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[73]); - expressions[74] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[74] }; - expressions[75] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[75]); - expressions[76] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - { - BinaryenExpressionRef operands[] = { expressions[76] }; - expressions[77] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[77]); - expressions[78] = BinaryenConst(the_module, BinaryenLiteralInt32(3)); - { - BinaryenExpressionRef operands[] = { expressions[78] }; - expressions[79] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[3] = RelooperAddBlock(the_relooper, expressions[79]); - expressions[80] = BinaryenConst(the_module, BinaryenLiteralInt32(55)); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[80], expressions[0]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[2], expressions[0], expressions[0]); - RelooperAddBranch(relooperBlocks[1], relooperBlocks[3], expressions[0], expressions[0]); - RelooperAddBranch(relooperBlocks[2], relooperBlocks[3], expressions[0], expressions[0]); - expressions[81] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[9] = BinaryenAddFunction(the_module, "if-else", 0, 0, varTypes, 1, expressions[81]); - } - the_relooper = RelooperCreate(the_module); - expressions[82] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[82] }; - expressions[83] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[83]); - expressions[84] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[84] }; - expressions[85] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[85]); - expressions[86] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - { - BinaryenExpressionRef operands[] = { expressions[86] }; - expressions[87] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[87]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]); - expressions[88] = BinaryenConst(the_module, BinaryenLiteralInt32(10)); - RelooperAddBranch(relooperBlocks[1], relooperBlocks[0], expressions[88], expressions[0]); - RelooperAddBranch(relooperBlocks[1], relooperBlocks[2], expressions[0], expressions[0]); - expressions[89] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[10] = BinaryenAddFunction(the_module, "loop-tail", 0, 0, varTypes, 1, expressions[89]); - } - the_relooper = RelooperCreate(the_module); - expressions[90] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[90] }; - expressions[91] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[91]); - expressions[92] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[92] }; - expressions[93] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[93]); - expressions[94] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - { - BinaryenExpressionRef operands[] = { expressions[94] }; - expressions[95] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[95]); - expressions[96] = BinaryenConst(the_module, BinaryenLiteralInt32(3)); - { - BinaryenExpressionRef operands[] = { expressions[96] }; - expressions[97] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[3] = RelooperAddBlock(the_relooper, expressions[97]); - expressions[98] = BinaryenConst(the_module, BinaryenLiteralInt32(4)); - { - BinaryenExpressionRef operands[] = { expressions[98] }; - expressions[99] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[4] = RelooperAddBlock(the_relooper, expressions[99]); - expressions[100] = BinaryenConst(the_module, BinaryenLiteralInt32(5)); - { - BinaryenExpressionRef operands[] = { expressions[100] }; - expressions[101] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[5] = RelooperAddBlock(the_relooper, expressions[101]); - expressions[102] = BinaryenConst(the_module, BinaryenLiteralInt32(6)); - { - BinaryenExpressionRef operands[] = { expressions[102] }; - expressions[103] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[6] = RelooperAddBlock(the_relooper, expressions[103]); - expressions[104] = BinaryenConst(the_module, BinaryenLiteralInt32(10)); - expressions[105] = BinaryenDrop(the_module, expressions[104]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[105]); - expressions[106] = BinaryenConst(the_module, BinaryenLiteralInt32(-2)); - RelooperAddBranch(relooperBlocks[1], relooperBlocks[2], expressions[106], expressions[0]); - expressions[107] = BinaryenConst(the_module, BinaryenLiteralInt32(20)); - expressions[108] = BinaryenDrop(the_module, expressions[107]); - RelooperAddBranch(relooperBlocks[1], relooperBlocks[6], expressions[0], expressions[108]); - expressions[109] = BinaryenConst(the_module, BinaryenLiteralInt32(-6)); - RelooperAddBranch(relooperBlocks[2], relooperBlocks[3], expressions[109], expressions[0]); - expressions[110] = BinaryenConst(the_module, BinaryenLiteralInt32(30)); - expressions[111] = BinaryenDrop(the_module, expressions[110]); - RelooperAddBranch(relooperBlocks[2], relooperBlocks[1], expressions[0], expressions[111]); - expressions[112] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - RelooperAddBranch(relooperBlocks[3], relooperBlocks[4], expressions[112], expressions[0]); - RelooperAddBranch(relooperBlocks[3], relooperBlocks[5], expressions[0], expressions[0]); - RelooperAddBranch(relooperBlocks[4], relooperBlocks[5], expressions[0], expressions[0]); - expressions[113] = BinaryenConst(the_module, BinaryenLiteralInt32(40)); - expressions[114] = BinaryenDrop(the_module, expressions[113]); - RelooperAddBranch(relooperBlocks[5], relooperBlocks[6], expressions[0], expressions[114]); - expressions[115] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[11] = BinaryenAddFunction(the_module, "nontrivial-loop-plus-phi-to-head", 0, 0, varTypes, 1, expressions[115]); - } - the_relooper = RelooperCreate(the_module); - expressions[116] = BinaryenConst(the_module, BinaryenLiteralInt32(-99)); - expressions[117] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[117] }; - expressions[118] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlockWithSwitch(the_relooper, expressions[118], expressions[116]); - expressions[119] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[119] }; - expressions[120] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[120]); - expressions[121] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - { - BinaryenExpressionRef operands[] = { expressions[121] }; - expressions[122] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[122]); - expressions[123] = BinaryenConst(the_module, BinaryenLiteralInt32(3)); - { - BinaryenExpressionRef operands[] = { expressions[123] }; - expressions[124] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[3] = RelooperAddBlock(the_relooper, expressions[124]); - { - BinaryenIndex indexes[] = { 2, 5 }; - RelooperAddBranchForSwitch(relooperBlocks[0], relooperBlocks[1], indexes, 2, expressions[0]); - } - expressions[125] = BinaryenConst(the_module, BinaryenLiteralInt32(55)); - expressions[126] = BinaryenDrop(the_module, expressions[125]); - { - BinaryenIndex indexes[] = { 4 }; - RelooperAddBranchForSwitch(relooperBlocks[0], relooperBlocks[2], indexes, 1, expressions[126]); - } - { - BinaryenIndex indexes[] = { 0 }; - RelooperAddBranchForSwitch(relooperBlocks[0], relooperBlocks[3], indexes, 0, expressions[0]); - } - expressions[127] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[12] = BinaryenAddFunction(the_module, "switch", 0, 0, varTypes, 1, expressions[127]); - } - the_relooper = RelooperCreate(the_module); - expressions[128] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[128] }; - expressions[129] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[129]); - expressions[130] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[130] }; - expressions[131] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[131]); - expressions[132] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - { - BinaryenExpressionRef operands[] = { expressions[132] }; - expressions[133] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[133]); - expressions[134] = BinaryenConst(the_module, BinaryenLiteralInt32(10)); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[134], expressions[0]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[2], expressions[0], expressions[0]); - RelooperAddBranch(relooperBlocks[1], relooperBlocks[2], expressions[0], expressions[0]); - RelooperAddBranch(relooperBlocks[2], relooperBlocks[1], expressions[0], expressions[0]); - expressions[135] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 3); - { - BinaryenType varTypes[] = { 2, 2, 3, 2, 4, 5, 2 }; - functions[13] = BinaryenAddFunction(the_module, "duffs-device", 0, 0, varTypes, 7, expressions[135]); - } - the_relooper = RelooperCreate(the_module); - expressions[136] = BinaryenConst(the_module, BinaryenLiteralInt32(42)); - { - BinaryenExpressionRef operands[] = { expressions[136] }; - expressions[137] = BinaryenCall(the_module, "check", operands, 1, 0); - } - expressions[138] = BinaryenConst(the_module, BinaryenLiteralInt32(1337)); - expressions[139] = BinaryenReturn(the_module, expressions[138]); - { - BinaryenExpressionRef children[] = { expressions[137], expressions[139] }; - expressions[140] = BinaryenBlock(the_module, "the-list", children, 2, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[140]); - expressions[141] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[14] = BinaryenAddFunction(the_module, "return", 0, 2, varTypes, 1, expressions[141]); - } -raw: - BinaryenModulePrint(the_module); -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (import "module" "check" (func $check (param i32))) - (func $just-one-block (; 1 ;) - (local $0 i32) - (call $check - (i32.const 1337) - ) - ) - (func $two-blocks (; 2 ;) - (local $0 i32) - (block - (call $check - (i32.const 0) - ) - (call $check - (i32.const 1) - ) - ) - ) - (func $two-blocks-plus-code (; 3 ;) - (local $0 i32) - (block - (block - (call $check - (i32.const 0) - ) - (drop - (i32.const 77) - ) - ) - (call $check - (i32.const 1) - ) - ) - ) - (func $loop (; 4 ;) - (local $0 i32) - (loop $shape$0$continue - (block - (call $check - (i32.const 0) - ) - (call $check - (i32.const 1) - ) - ) - (block - (br $shape$0$continue) - ) - ) - ) - (func $loop-plus-code (; 5 ;) - (local $0 i32) - (loop $shape$0$continue - (block - (block - (call $check - (i32.const 0) - ) - (drop - (i32.const 33) - ) - ) - (call $check - (i32.const 1) - ) - ) - (block - (drop - (i32.const -66) - ) - (br $shape$0$continue) - ) - ) - ) - (func $split (; 6 ;) - (local $0 i32) - (call $check - (i32.const 0) - ) - (if - (i32.const 55) - (block - (call $check - (i32.const 1) - ) - ) - (block - (call $check - (i32.const 2) - ) - ) - ) - ) - (func $split-plus-code (; 7 ;) - (local $0 i32) - (call $check - (i32.const 0) - ) - (if - (i32.const 55) - (block - (drop - (i32.const 10) - ) - (block - (call $check - (i32.const 1) - ) - ) - ) - (block - (drop - (i32.const 20) - ) - (block - (call $check - (i32.const 2) - ) - ) - ) - ) - ) - (func $if (; 8 ;) - (local $0 i32) - (block $block$3$break - (call $check - (i32.const 0) - ) - (if - (i32.const 55) - (block - (call $check - (i32.const 1) - ) - (block - (br $block$3$break) - ) - ) - (br $block$3$break) - ) - ) - (block - (call $check - (i32.const 2) - ) - ) - ) - (func $if-plus-code (; 9 ;) - (local $0 i32) - (block $block$3$break - (call $check - (i32.const 0) - ) - (if - (i32.const 55) - (block - (drop - (i32.const -1) - ) - (block - (call $check - (i32.const 1) - ) - (block - (drop - (i32.const -3) - ) - (br $block$3$break) - ) - ) - ) - (block - (drop - (i32.const -2) - ) - (br $block$3$break) - ) - ) - ) - (block - (call $check - (i32.const 2) - ) - ) - ) - (func $if-else (; 10 ;) - (local $0 i32) - (block $block$4$break - (call $check - (i32.const 0) - ) - (if - (i32.const 55) - (block - (call $check - (i32.const 1) - ) - (block - (br $block$4$break) - ) - ) - (block - (call $check - (i32.const 2) - ) - (block - (br $block$4$break) - ) - ) - ) - ) - (block - (call $check - (i32.const 3) - ) - ) - ) - (func $loop-tail (; 11 ;) - (local $0 i32) - (block $block$3$break - (loop $shape$0$continue - (block - (call $check - (i32.const 0) - ) - (call $check - (i32.const 1) - ) - ) - (if - (i32.const 10) - (br $shape$0$continue) - (br $block$3$break) - ) - ) - ) - (block - (call $check - (i32.const 2) - ) - ) - ) - (func $nontrivial-loop-plus-phi-to-head (; 12 ;) - (local $0 i32) - (block $block$2$break - (call $check - (i32.const 0) - ) - (block - (drop - (i32.const 10) - ) - (br $block$2$break) - ) - ) - (block - (block $block$7$break - (block $block$4$break - (loop $shape$1$continue - (block $block$3$break - (call $check - (i32.const 1) - ) - (if - (i32.const -2) - (br $block$3$break) - (block - (drop - (i32.const 20) - ) - (br $block$7$break) - ) - ) - ) - (block - (call $check - (i32.const 2) - ) - (if - (i32.const -6) - (br $block$4$break) - (block - (drop - (i32.const 30) - ) - (br $shape$1$continue) - ) - ) - ) - ) - ) - (block - (block $block$6$break - (call $check - (i32.const 3) - ) - (if - (i32.const -10) - (block - (call $check - (i32.const 4) - ) - (block - (br $block$6$break) - ) - ) - (br $block$6$break) - ) - ) - (block - (call $check - (i32.const 5) - ) - (block - (drop - (i32.const 40) - ) - (br $block$7$break) - ) - ) - ) - ) - (block - (call $check - (i32.const 6) - ) - ) - ) - ) - (func $switch (; 13 ;) - (local $0 i32) - (call $check - (i32.const 0) - ) - (block $switch$1$leave - (block $switch$1$default - (block $switch$1$case$3 - (block $switch$1$case$2 - (br_table $switch$1$default $switch$1$default $switch$1$case$2 $switch$1$default $switch$1$case$3 $switch$1$case$2 $switch$1$default - (i32.const -99) - ) - ) - (block - (block - (call $check - (i32.const 1) - ) - ) - ) - (br $switch$1$leave) - ) - (block - (drop - (i32.const 55) - ) - (block - (call $check - (i32.const 2) - ) - ) - ) - (br $switch$1$leave) - ) - (block - (block - (call $check - (i32.const 3) - ) - ) - ) - (br $switch$1$leave) - ) - ) - (func $duffs-device (; 14 ;) - (local $0 i32) - (local $1 i32) - (local $2 i64) - (local $3 i32) - (local $4 f32) - (local $5 f64) - (local $6 i32) - (block - (block $block$3$break - (block $block$2$break - (call $check - (i32.const 0) - ) - (if - (i32.const 10) - (block - (local.set $3 - (i32.const 2) - ) - (br $block$2$break) - ) - (block - (local.set $3 - (i32.const 3) - ) - (br $block$3$break) - ) - ) - ) - ) - ) - (loop $shape$1$continue - (if - (i32.eq - (local.get $3) - (i32.const 2) - ) - (block - (local.set $3 - (i32.const 0) - ) - (call $check - (i32.const 1) - ) - (block - (local.set $3 - (i32.const 3) - ) - (br $shape$1$continue) - ) - ) - (if - (i32.eq - (local.get $3) - (i32.const 3) - ) - (block - (local.set $3 - (i32.const 0) - ) - (call $check - (i32.const 2) - ) - (block - (local.set $3 - (i32.const 2) - ) - (br $shape$1$continue) - ) - ) - ) - ) - ) - ) - (func $return (; 15 ;) (result i32) - (local $0 i32) - (block - (call $check - (i32.const 42) - ) - (return - (i32.const 1337) - ) - ) - ) -) - - BinaryenModuleValidate(the_module); - { - const char* passes[] = { "precompute" }; - BinaryenModuleRunPasses(the_module, passes, 1); - } - BinaryenModuleValidate(the_module); - BinaryenModuleOptimize(the_module); - BinaryenModuleValidate(the_module); -optimized: - BinaryenModulePrint(the_module); -(module -) - - BinaryenModuleDispose(the_module); - expressions.clear(); - functions.clear(); - globals.clear(); - events.clear(); - exports.clear(); - relooperBlocks.clear(); - // BinaryenTypeNone: 0 - // [] - // BinaryenTypeUnreachable: 1 - // [ 1 ] - // BinaryenTypeInt32: 2 - // [ 2 ] - // BinaryenTypeInt64: 3 - // [ 3 ] - // BinaryenTypeFloat32: 4 - // [ 4 ] - // BinaryenTypeFloat64: 5 - // [ 5 ] - // BinaryenTypeVec128: 6 - // [ 6 ] - // BinaryenTypeAnyref: 8 - // [ 8 ] - // BinaryenTypeExnref: 10 - // [ 10 ] - // BinaryenTypeAuto: -1 - { - BinaryenType t274[] = {2, 2}; - BinaryenTypeCreate(t274, 2); // 13 - } - // 13 [ 2, 2 ] - { - BinaryenType t275[] = {2, 2}; - BinaryenTypeCreate(t275, 2); // 13 - } - // 13 [ 2, 2 ] - { - BinaryenType t276[] = {4, 4}; - BinaryenTypeCreate(t276, 2); // 14 - } - // 14 [ 4, 4 ] - return 0; -} -// ending a Binaryen API trace // BinaryenTypeNone: 0 - // [] + // // BinaryenTypeUnreachable: 1 - // [ 1 ] + // 1 // BinaryenTypeInt32: 2 - // [ 2 ] + // 2 // BinaryenTypeInt64: 3 - // [ 3 ] + // 3 // BinaryenTypeFloat32: 4 - // [ 4 ] + // 4 // BinaryenTypeFloat64: 5 - // [ 5 ] + // 5 // BinaryenTypeVec128: 6 - // [ 6 ] - // BinaryenTypeAnyref: 8 - // [ 8 ] - // BinaryenTypeExnref: 10 - // [ 10 ] + // 6 + // BinaryenTypeFuncref: 7 + // 7 + // BinaryenTypeExternref: 8 + // 8 + // BinaryenTypeExnref: 9 + // 9 + // BinaryenTypeAnyref: 10 + // 10 + // BinaryenTypeEqref: 11 + // 11 + // BinaryenTypeI31ref: 12 + // 12 // BinaryenTypeAuto: -1 - // 13 [ 2, 2 ] - // 13 [ 2, 2 ] - // 14 [ 4, 4 ] + // 2,2 + // 2,2 + // 4,4 Features.MVP: 0 Features.Atomics: 1 Features.BulkMemory: 16 @@ -6282,7 +38,10 @@ Features.ExceptionHandling: 64 Features.TailCall: 128 Features.ReferenceTypes: 256 -Features.All: 511 +Features.Multivalue: 512 +Features.GC: 1024 +Features.Memory64: 2048 +Features.All: 8191 InvalidId: 0 BlockId: 1 IfId: 2 @@ -6303,29 +62,50 @@ SelectId: 17 DropId: 18 ReturnId: 19 -HostId: 20 -NopId: 21 -UnreachableId: 22 -AtomicCmpxchgId: 24 -AtomicRMWId: 23 -AtomicWaitId: 25 -AtomicNotifyId: 26 -SIMDExtractId: 28 -SIMDReplaceId: 29 -SIMDShuffleId: 30 -SIMDTernaryId: 31 -SIMDShiftId: 32 -SIMDLoadId: 33 -MemoryInitId: 34 -DataDropId: 35 -MemoryCopyId: 36 -MemoryFillId: 37 -TryId: 43 -ThrowId: 44 -RethrowId: 45 -BrOnExnId: 46 -PushId: 38 -PopId: 39 +MemorySizeId: 20 +MemoryGrowId: 21 +NopId: 22 +UnreachableId: 24 +AtomicCmpxchgId: 26 +AtomicRMWId: 25 +AtomicWaitId: 27 +AtomicNotifyId: 28 +SIMDExtractId: 30 +SIMDReplaceId: 31 +SIMDShuffleId: 32 +SIMDTernaryId: 33 +SIMDShiftId: 34 +SIMDLoadId: 35 +MemoryInitId: 37 +DataDropId: 38 +MemoryCopyId: 39 +MemoryFillId: 40 +PopId: 41 +RefNullId: 42 +RefIsNullId: 43 +RefFuncId: 44 +RefEqId: 45 +TryId: 46 +ThrowId: 47 +RethrowId: 48 +BrOnExnId: 49 +TupleMakeId: 50 +TupleExtractId: 51 +I31NewId: 52 +I31GetId: 53 +CallRefId: 54 +RefTestId: 55 +RefCastId: 56 +BrOnCastId: 57 +RttCanonId: 58 +RttSubId: 59 +StructNewId: 60 +StructGetId: 61 +StructSetId: 62 +ArrayNewId: 63 +ArrayGetId: 64 +ArraySetId: 65 +ArrayLenId: 66 getExpressionInfo={"id":15,"type":4,"op":6} (f32.neg (f32.const -33.61199951171875) @@ -6335,6 +115,10 @@ getExpressionInfo(i64.const)={"id":14,"type":3,"value":{"low":6,"high":7}} getExpressionInfo(f32.const)={"id":14,"type":4,"value":8.5} getExpressionInfo(f64.const)={"id":14,"type":5,"value":9.5} +getExpressionInfo(tuple[0])={"id":14,"type":2,"value":13} +getExpressionInfo(tuple[1])={"id":14,"type":3,"value":{"low":37,"high":0}} +getExpressionInfo(tuple[2])={"id":14,"type":4,"value":1.2999999523162842} +getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7} (module (type $i32_i64_f32_f64_=>_i32 (func (param i32 i64 f32 f64) (result i32))) (type $i32_=>_none (func (param i32))) @@ -6356,7 +140,7 @@ (export "a-event-exp" (event $a-event)) (export "mem" (memory $0)) (start $starter) - (func "$kitchen()sinker" (; 1 ;) (param $0 i32) (param $1 i64) (param $2 f32) (param $3 f64) (result i32) + (func "$kitchen()sinker" (param $0 i32) (param $1 i64) (param $2 f32) (param $3 f64) (result i32) (local $4 i32) (local $5 exnref) (block $the-body (result i32) @@ -6619,17 +403,32 @@ ) ) (drop + (i8x16.abs + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop (i8x16.neg (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop - (i8x16.any_true + (i8x16.any_true + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.all_true + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i8x16.bitmask (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop - (i8x16.all_true + (i16x8.abs (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) @@ -6649,32 +448,37 @@ ) ) (drop - (i32x4.neg + (i16x8.bitmask (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop - (i32x4.any_true + (i32x4.abs (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop - (i32x4.all_true + (i32x4.neg (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop - (i64x2.neg + (i32x4.any_true + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.all_true (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop - (i64x2.any_true + (i32x4.bitmask (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop - (i64x2.all_true + (i64x2.neg (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) @@ -7461,6 +1265,12 @@ ) ) (drop + (i64x2.mul + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop (f32x4.add (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) @@ -7497,6 +1307,38 @@ ) ) (drop + (f32x4.pmin + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.pmax + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.ceil + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.floor + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.trunc + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.nearest + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop (f64x2.add (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) @@ -7533,6 +1375,38 @@ ) ) (drop + (f64x2.pmin + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.pmax + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.ceil + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.floor + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.trunc + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.nearest + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop (i8x16.narrow_i16x8_s (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) @@ -7959,7 +1833,12 @@ ) (drop (ref.is_null - (ref.null) + (ref.null extern) + ) + ) + (drop + (ref.is_null + (ref.null func) ) ) (drop @@ -7969,18 +1848,26 @@ ) (drop (select (result funcref) - (ref.null) + (ref.null func) (ref.func "$kitchen()sinker") (i32.const 1) ) ) + (drop + (ref.eq + (ref.null eq) + (ref.null eq) + ) + ) (try - (throw $a-event - (i32.const 0) + (do + (throw $a-event + (i32.const 0) + ) ) (catch (local.set $5 - (exnref.pop) + (pop exnref) ) (drop (block $try-block (result i32) @@ -8000,45 +1887,96 @@ ) ) (drop - (i32.atomic.wait + (memory.atomic.wait32 (i32.const 0) (i32.const 0) (i64.const 0) ) ) (drop - (atomic.notify + (memory.atomic.notify (i32.const 0) (i32.const 0) ) ) (atomic.fence) - (push - (i32.pop) + (drop + (tuple.make + (i32.const 13) + (i64.const 37) + (f32.const 1.2999999523162842) + (f64.const 3.7) + ) + ) + (drop + (tuple.extract 2 + (tuple.make + (i32.const 13) + (i64.const 37) + (f32.const 1.2999999523162842) + (f64.const 3.7) + ) + ) + ) + (drop + (pop i32) + ) + (drop + (pop i64) + ) + (drop + (pop f32) + ) + (drop + (pop f64) + ) + (drop + (pop v128) + ) + (drop + (pop funcref) + ) + (drop + (pop externref) + ) + (drop + (pop exnref) ) - (push - (i64.pop) + (drop + (pop anyref) ) - (push - (f32.pop) + (drop + (pop eqref) ) - (push - (f64.pop) + (drop + (pop i31ref) ) - (push - (v128.pop) + (drop + (memory.size) ) - (push - (anyref.pop) + (drop + (memory.grow + (i32.const 0) + ) ) - (push - (funcref.pop) + (drop + (i31.new + (i32.const 0) + ) ) - (push - (nullref.pop) + (drop + (i31.get_s + (i31.new + (i32.const 1) + ) + ) ) - (push - (exnref.pop) + (drop + (i31.get_u + (i31.new + (i32.const 2) + ) + ) ) (nop) (unreachable) @@ -8048,7 +1986,7 @@ (i32.const 42) ) ) - (func $starter (; 2 ;) + (func $starter (nop) ) ) @@ -8074,7 +2012,7 @@ (export "a-event-exp" (event $a-event)) (export "mem" (memory $0)) (start $starter) - (func "$kitchen()sinker" (; 1 ;) (param $0 i32) (param $1 i64) (param $2 f32) (param $3 f64) (result i32) + (func "$kitchen()sinker" (param $0 i32) (param $1 i64) (param $2 f32) (param $3 f64) (result i32) (local $4 i32) (local $5 exnref) (block $the-body (result i32) @@ -8337,6 +2275,11 @@ ) ) (drop + (i8x16.abs + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop (i8x16.neg (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) @@ -8352,6 +2295,16 @@ ) ) (drop + (i8x16.bitmask + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.abs + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop (i16x8.neg (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) @@ -8367,32 +2320,37 @@ ) ) (drop - (i32x4.neg + (i16x8.bitmask (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop - (i32x4.any_true + (i32x4.abs (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop - (i32x4.all_true + (i32x4.neg (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop - (i64x2.neg + (i32x4.any_true + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.all_true (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop - (i64x2.any_true + (i32x4.bitmask (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop - (i64x2.all_true + (i64x2.neg (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) @@ -9179,6 +3137,12 @@ ) ) (drop + (i64x2.mul + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop (f32x4.add (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) @@ -9215,6 +3179,38 @@ ) ) (drop + (f32x4.pmin + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.pmax + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.ceil + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.floor + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.trunc + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.nearest + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop (f64x2.add (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) @@ -9251,6 +3247,38 @@ ) ) (drop + (f64x2.pmin + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.pmax + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.ceil + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.floor + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.trunc + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.nearest + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop (i8x16.narrow_i16x8_s (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) @@ -9677,7 +3705,12 @@ ) (drop (ref.is_null - (ref.null) + (ref.null extern) + ) + ) + (drop + (ref.is_null + (ref.null func) ) ) (drop @@ -9687,18 +3720,26 @@ ) (drop (select (result funcref) - (ref.null) + (ref.null func) (ref.func "$kitchen()sinker") (i32.const 1) ) ) + (drop + (ref.eq + (ref.null eq) + (ref.null eq) + ) + ) (try - (throw $a-event - (i32.const 0) + (do + (throw $a-event + (i32.const 0) + ) ) (catch (local.set $5 - (exnref.pop) + (pop exnref) ) (drop (block $try-block (result i32) @@ -9718,45 +3759,96 @@ ) ) (drop - (i32.atomic.wait + (memory.atomic.wait32 (i32.const 0) (i32.const 0) (i64.const 0) ) ) (drop - (atomic.notify + (memory.atomic.notify (i32.const 0) (i32.const 0) ) ) (atomic.fence) - (push - (i32.pop) + (drop + (tuple.make + (i32.const 13) + (i64.const 37) + (f32.const 1.2999999523162842) + (f64.const 3.7) + ) + ) + (drop + (tuple.extract 2 + (tuple.make + (i32.const 13) + (i64.const 37) + (f32.const 1.2999999523162842) + (f64.const 3.7) + ) + ) + ) + (drop + (pop i32) + ) + (drop + (pop i64) + ) + (drop + (pop f32) + ) + (drop + (pop f64) + ) + (drop + (pop v128) + ) + (drop + (pop funcref) + ) + (drop + (pop externref) + ) + (drop + (pop exnref) ) - (push - (i64.pop) + (drop + (pop anyref) ) - (push - (f32.pop) + (drop + (pop eqref) ) - (push - (f64.pop) + (drop + (pop i31ref) ) - (push - (v128.pop) + (drop + (memory.size) ) - (push - (anyref.pop) + (drop + (memory.grow + (i32.const 0) + ) ) - (push - (funcref.pop) + (drop + (i31.new + (i32.const 0) + ) ) - (push - (nullref.pop) + (drop + (i31.get_s + (i31.new + (i32.const 1) + ) + ) ) - (push - (exnref.pop) + (drop + (i31.get_u + (i31.new + (i32.const 2) + ) + ) ) (nop) (unreachable) @@ -9766,7 +3858,7 @@ (i32.const 42) ) ) - (func $starter (; 2 ;) + (func $starter (nop) ) ) @@ -9777,13 +3869,13 @@ (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) (import "module" "check" (func $check (param i32))) - (func $just-one-block (; 1 ;) + (func $just-one-block (local $0 i32) (call $check (i32.const 1337) ) ) - (func $two-blocks (; 2 ;) + (func $two-blocks (local $0 i32) (block (call $check @@ -9794,7 +3886,7 @@ ) ) ) - (func $two-blocks-plus-code (; 3 ;) + (func $two-blocks-plus-code (local $0 i32) (block (block @@ -9810,7 +3902,7 @@ ) ) ) - (func $loop (; 4 ;) + (func $loop (local $0 i32) (loop $shape$0$continue (block @@ -9826,7 +3918,7 @@ ) ) ) - (func $loop-plus-code (; 5 ;) + (func $loop-plus-code (local $0 i32) (loop $shape$0$continue (block @@ -9850,7 +3942,7 @@ ) ) ) - (func $split (; 6 ;) + (func $split (local $0 i32) (call $check (i32.const 0) @@ -9869,7 +3961,7 @@ ) ) ) - (func $split-plus-code (; 7 ;) + (func $split-plus-code (local $0 i32) (call $check (i32.const 0) @@ -9898,7 +3990,7 @@ ) ) ) - (func $if (; 8 ;) + (func $if (local $0 i32) (block $block$3$break (call $check @@ -9923,7 +4015,7 @@ ) ) ) - (func $if-plus-code (; 9 ;) + (func $if-plus-code (local $0 i32) (block $block$3$break (call $check @@ -9961,7 +4053,7 @@ ) ) ) - (func $if-else (; 10 ;) + (func $if-else (local $0 i32) (block $block$4$break (call $check @@ -9993,7 +4085,7 @@ ) ) ) - (func $loop-tail (; 11 ;) + (func $loop-tail (local $0 i32) (block $block$3$break (loop $shape$0$continue @@ -10018,7 +4110,7 @@ ) ) ) - (func $nontrivial-loop-plus-phi-to-head (; 12 ;) + (func $nontrivial-loop-plus-phi-to-head (local $0 i32) (block $block$2$break (call $check @@ -10105,7 +4197,7 @@ ) ) ) - (func $switch (; 13 ;) + (func $switch (local $0 i32) (call $check (i32.const 0) @@ -10149,7 +4241,7 @@ (br $switch$1$leave) ) ) - (func $duffs-device (; 14 ;) + (func $duffs-device (local $0 i32) (local $1 i32) (local $2 i64) @@ -10224,7 +4316,7 @@ ) ) ) - (func $return (; 15 ;) (result i32) + (func $return (result i32) (local $0 i32) (block (call $check @@ -10245,9 +4337,9 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (global $global$0 i32 (i32.const 3)) + (global $a-global i32 (i32.const 3)) (event $event$0 (attr 0) (param i32 i32)) - (func $adder (; 0 ;) (param $0 i32) (param $1 i32) (result i32) + (func $adder (param $0 i32) (param $1 i32) (result i32) (i32.add (local.get $0) (local.get $1) @@ -10260,7 +4352,7 @@ (type $i32_=>_none (func (param i32))) (import "spectest" "print" (func $print-i32 (param i32))) (start $starter) - (func $starter (; 1 ;) + (func $starter (call $print-i32 (i32.const 1234) ) @@ -10270,7 +4362,7 @@ 1234 : i32 (module (type $none_=>_none (func)) - (func $func (; 0 ;) + (func $func (local $0 i32) (local.set $0 (i64.const 1234) @@ -10279,8 +4371,8 @@ ) [wasm-validator error in function func] local.set's value type must be correct, on -[none] (local.set $0 - [i64] (i64.const 1234) +(local.set $0 + (i64.const 1234) ) validation: 0 test_parsing text: @@ -10289,7 +4381,7 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (global $a-global i32 (i32.const 3)) (event $a-event (attr 0) (param i32)) - (func $adder (; 0 ;) (param $0 i32) (param $1 i32) (result i32) + (func $adder (param $0 i32) (param $1 i32) (result i32) (i32.add (local.get $0) (local.get $1) @@ -10303,7 +4395,7 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (global $a-global i32 (i32.const 3)) (event $a-event (attr 0) (param i32)) - (func $ADD_ER (; 0 ;) (param $0 i32) (param $1 i32) (result i32) + (func $ADD_ER (param $0 i32) (param $1 i32) (result i32) (i32.add (local.get $0) (local.get $1) @@ -10320,20 +4412,22 @@ (table $0 1 funcref) (elem (i32.const 0) $fn0 $fn1 $fn2) (global $a-global i32 (i32.const 125)) + (global $a-global2 i32 (i32.const 2)) + (global $a-global3 i32 (i32.const 3)) (export "export0" (func $fn0)) (export "export1" (func $fn1)) (export "export2" (func $fn2)) (export "mem" (memory $0)) - (func $fn0 (; 0 ;) + (func $fn0 (nop) ) - (func $fn1 (; 1 ;) + (func $fn1 (nop) ) - (func $fn2 (; 2 ;) + (func $fn2 (nop) ) ) -getExpressionInfo(memory.grow)={"id":20,"type":2,"op":1,"nameOperand":"","operands":[1]} +getExpressionInfo(memory.grow)={"id":21,"type":2,"delta":1} getExpressionInfo(switch)={"id":5,"type":1,"names":["label"],"defaultName":"label","condition":0,"value":0} diff -Nru binaryen-91/test/binaryen.js/low-memory-unused.js binaryen-99/test/binaryen.js/low-memory-unused.js --- binaryen-91/test/binaryen.js/low-memory-unused.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/low-memory-unused.js 2021-01-07 20:01:06.000000000 +0000 @@ -26,10 +26,8 @@ assert(module.validate()); console.log(module.emitText()); -binaryen.setAPITracing(true); binaryen.setLowMemoryUnused(true); assert(binaryen.getLowMemoryUnused()); -binaryen.setAPITracing(false); console.log(); console.log("=== optimized, lowMemoryUnused=" + binaryen.getLowMemoryUnused() + " ==="); diff -Nru binaryen-91/test/binaryen.js/low-memory-unused.js.txt binaryen-99/test/binaryen.js/low-memory-unused.js.txt --- binaryen-91/test/binaryen.js/low-memory-unused.js.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/low-memory-unused.js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -17,7 +17,7 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (memory $0 1) (export "test" (func $test)) - (func $test (; 0 ;) (param $0 i32) (result i32) + (func $test (param $0 i32) (result i32) (i32.load (i32.add (local.get $0) @@ -32,7 +32,7 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (memory $0 1) (export "test" (func $test)) - (func $test (; 0 ;) (; has Stack IR ;) (param $0 i32) (result i32) + (func $test (; has Stack IR ;) (param $0 i32) (result i32) (i32.load (i32.add (local.get $0) @@ -42,31 +42,13 @@ ) ) -// beginning a Binaryen API trace -#include -#include -#include "binaryen-c.h" -int main() { - std::map expressions; - std::map functions; - std::map globals; - std::map events; - std::map exports; - std::map relooperBlocks; - BinaryenModuleRef the_module = NULL; - RelooperRef the_relooper = NULL; - BinaryenSetLowMemoryUnused(1); - BinaryenGetLowMemoryUnused(); - return 0; -} -// ending a Binaryen API trace === optimized, lowMemoryUnused=true === (module (type $i32_=>_i32 (func (param i32) (result i32))) (memory $0 1) (export "test" (func $test)) - (func $test (; 0 ;) (; has Stack IR ;) (param $0 i32) (result i32) + (func $test (; has Stack IR ;) (param $0 i32) (result i32) (i32.load offset=128 (local.get $0) ) diff -Nru binaryen-91/test/binaryen.js/optimize-levels.js.txt binaryen-99/test/binaryen.js/optimize-levels.js.txt --- binaryen-91/test/binaryen.js/optimize-levels.js.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/optimize-levels.js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -19,7 +19,7 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (memory $0 0) (export "test" (func $test)) - (func $test (; 0 ;) (param $0 i32) (result i32) + (func $test (param $0 i32) (result i32) (block $block (result i32) (if (result i32) (local.get $0) @@ -36,7 +36,7 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (export "test" (func $test)) - (func $test (; 0 ;) (; has Stack IR ;) (param $0 i32) (result i32) + (func $test (; has Stack IR ;) (param $0 i32) (result i32) (select (local.get $0) (i32.const 0) @@ -51,7 +51,7 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (export "test" (func $test)) - (func $test (; 0 ;) (param $0 i32) (result i32) + (func $test (param $0 i32) (result i32) (select (local.get $0) (i32.const 0) @@ -66,7 +66,7 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (export "test" (func $test)) - (func $test (; 0 ;) (; has Stack IR ;) (param $0 i32) (result i32) + (func $test (; has Stack IR ;) (param $0 i32) (result i32) (select (local.get $0) (i32.const 0) diff -Nru binaryen-91/test/binaryen.js/pass-arguments.js binaryen-99/test/binaryen.js/pass-arguments.js --- binaryen-91/test/binaryen.js/pass-arguments.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/pass-arguments.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,5 +1,3 @@ -binaryen.setAPITracing(true); - assert(binaryen.getPassArgument("theKey") === null); binaryen.setPassArgument("theKey", "theValue"); @@ -13,5 +11,3 @@ binaryen.clearPassArguments(); assert(binaryen.getPassArgument("theKey") === null); - -binaryen.setAPITracing(false); diff -Nru binaryen-91/test/binaryen.js/pass-arguments.js.txt binaryen-99/test/binaryen.js/pass-arguments.js.txt --- binaryen-91/test/binaryen.js/pass-arguments.js.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/pass-arguments.js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +0,0 @@ -// beginning a Binaryen API trace -#include -#include -#include "binaryen-c.h" -int main() { - std::map expressions; - std::map functions; - std::map globals; - std::map events; - std::map exports; - std::map relooperBlocks; - BinaryenModuleRef the_module = NULL; - RelooperRef the_relooper = NULL; - BinaryenGetPassArgument("theKey"); - BinaryenSetPassArgument("theKey", "theValue"); - BinaryenGetPassArgument("theKey"); - BinaryenSetPassArgument("theKey", NULL); - BinaryenGetPassArgument("theKey"); - BinaryenSetPassArgument("theKey", "theValue2"); - BinaryenGetPassArgument("theKey"); - BinaryenClearPassArguments(); - BinaryenGetPassArgument("theKey"); - return 0; -} -// ending a Binaryen API trace diff -Nru binaryen-91/test/binaryen.js/push-pop.js binaryen-99/test/binaryen.js/push-pop.js --- binaryen-91/test/binaryen.js/push-pop.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/push-pop.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ -function cleanInfo(info) { - var ret = {}; - for (var x in info) { - if (x !== 'value') { - ret[x] = info[x]; - } - } - return ret; -} - -function stringify(expr) { - return JSON.stringify(cleanInfo(binaryen.getExpressionInfo(expr))); -} - -var module = new binaryen.Module(); - -var func = module.addFunction("func", binaryen.none, binaryen.none, [], - module.block(null, [ - module.push(module.i32.pop()), - module.push(module.i64.pop()), - module.push(module.f32.pop()), - module.push(module.f64.pop()), - module.push(module.v128.pop()), - module.push(module.funcref.pop()), - module.push(module.anyref.pop()), - module.push(module.nullref.pop()), - module.push(module.exnref.pop()) - ]) -) - -assert(module.validate()); -console.log(module.emitText()); - -console.log("getExpressionInfo(i32.pop) = " + stringify(module.i32.pop())); -console.log("getExpressionInfo(i64.pop) = " + stringify(module.i64.pop())); -console.log("getExpressionInfo(f32.pop) = " + stringify(module.f32.pop())); -console.log("getExpressionInfo(f64.pop) = " + stringify(module.f64.pop())); -console.log("getExpressionInfo(v128.pop) = " + stringify(module.v128.pop())); -console.log("getExpressionInfo(funcref.pop) = " + stringify(module.funcref.pop())); -console.log("getExpressionInfo(anyref.pop) = " + stringify(module.anyref.pop())); -console.log("getExpressionInfo(nullref.pop) = " + stringify(module.nullref.pop())); -console.log("getExpressionInfo(exnref.pop) = " + stringify(module.exnref.pop())); -console.log("getExpressionInfo(push) = " + stringify(module.push(module.i32.const(0)))); diff -Nru binaryen-91/test/binaryen.js/push-pop.js.txt binaryen-99/test/binaryen.js/push-pop.js.txt --- binaryen-91/test/binaryen.js/push-pop.js.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/push-pop.js.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ -(module - (type $none_=>_none (func)) - (func $func (; 0 ;) - (push - (i32.pop) - ) - (push - (i64.pop) - ) - (push - (f32.pop) - ) - (push - (f64.pop) - ) - (push - (v128.pop) - ) - (push - (funcref.pop) - ) - (push - (anyref.pop) - ) - (push - (nullref.pop) - ) - (push - (exnref.pop) - ) - ) -) - -getExpressionInfo(i32.pop) = {"id":39,"type":2} -getExpressionInfo(i64.pop) = {"id":39,"type":3} -getExpressionInfo(f32.pop) = {"id":39,"type":4} -getExpressionInfo(f64.pop) = {"id":39,"type":5} -getExpressionInfo(v128.pop) = {"id":39,"type":6} -getExpressionInfo(funcref.pop) = {"id":39,"type":7} -getExpressionInfo(anyref.pop) = {"id":39,"type":8} -getExpressionInfo(nullref.pop) = {"id":39,"type":9} -getExpressionInfo(exnref.pop) = {"id":39,"type":10} -getExpressionInfo(push) = {"id":38} diff -Nru binaryen-91/test/binaryen.js/reloc.js.txt binaryen-99/test/binaryen.js/reloc.js.txt --- binaryen-91/test/binaryen.js/reloc.js.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/reloc.js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -6,7 +6,7 @@ (data (global.get $memory_base) "data data") (table $0 1 funcref) (elem (global.get $table_base) $func $func) - (func $func (; 0 ;) + (func $func (nop) ) ) diff -Nru binaryen-91/test/binaryen.js/sideffects.js binaryen-99/test/binaryen.js/sideffects.js --- binaryen-91/test/binaryen.js/sideffects.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/sideffects.js 2021-01-07 20:01:06.000000000 +0000 @@ -10,6 +10,7 @@ console.log("SideEffects.ImplicitTrap=" + binaryen.SideEffects.ImplicitTrap); console.log("SideEffects.IsAtomic=" + binaryen.SideEffects.IsAtomic); console.log("SideEffects.Throws=" + binaryen.SideEffects.Throws); +console.log("SideEffects.DanglingPop=" + binaryen.SideEffects.DanglingPop); console.log("SideEffects.Any=" + binaryen.SideEffects.Any); var module = new binaryen.Module(); @@ -95,12 +96,21 @@ ); // If exception handling feature is enabled, calls can throw -var module_all_features = new binaryen.Module(); -module_all_features.setFeatures(binaryen.Features.All); +module.setFeatures(binaryen.Features.All); assert( binaryen.getSideEffects( - module.call("test", [], binaryen.i32) + module.call("test", [], binaryen.i32), + module.getFeatures() ) == binaryen.SideEffects.Calls | binaryen.SideEffects.Throws ); + +assert( + binaryen.getSideEffects( + module.drop(module.exnref.pop()), + module.getFeatures() + ) + == + binaryen.SideEffects.DanglingPop +); diff -Nru binaryen-91/test/binaryen.js/sideffects.js.txt binaryen-99/test/binaryen.js/sideffects.js.txt --- binaryen-91/test/binaryen.js/sideffects.js.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/sideffects.js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -10,4 +10,5 @@ SideEffects.ImplicitTrap=256 SideEffects.IsAtomic=512 SideEffects.Throws=1024 -SideEffects.Any=2047 +SideEffects.DanglingPop=2048 +SideEffects.Any=4095 diff -Nru binaryen-91/test/binaryen.js/sieve.js.txt binaryen-99/test/binaryen.js/sieve.js.txt --- binaryen-91/test/binaryen.js/sieve.js.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/sieve.js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -2,7 +2,7 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (memory $0 1 100) (export "sieve" (func $sieve)) - (func $sieve (; 0 ;) (param $0 i32) (result i32) + (func $sieve (param $0 i32) (result i32) (local $1 i32) (if (i32.lt_u @@ -60,7 +60,7 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (memory $0 1 100) (export "sieve" (func $sieve)) - (func $sieve (; 0 ;) (; has Stack IR ;) (param $0 i32) (result i32) + (func $sieve (; has Stack IR ;) (param $0 i32) (result i32) (local $1 i32) (if (i32.lt_u @@ -73,12 +73,12 @@ (drop (memory.grow (i32.sub - (i32.div_u + (i32.shr_u (i32.add (local.get $0) (i32.const 65535) ) - (i32.const 65536) + (i32.const 16) ) (memory.size) ) diff -Nru binaryen-91/test/binaryen.js/stackir.js.txt binaryen-99/test/binaryen.js/stackir.js.txt --- binaryen-91/test/binaryen.js/stackir.js.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/stackir.js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -21,7 +21,7 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (memory $0 0) (export "test" (func $test)) - (func $test (; 0 ;) (param $0 i32) (result i32) + (func $test (param $0 i32) (result i32) block $block0 (result i32) local.get $0 if (result i32) @@ -38,7 +38,7 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (memory $0 0) (export "test" (func $test)) - (func $test (; 0 ;) (param $0 i32) (result i32) + (func $test (param $0 i32) (result i32) local.get $0 if (result i32) local.get $0 diff -Nru binaryen-91/test/binaryen.js/tail_calls.js binaryen-99/test/binaryen.js/tail_calls.js --- binaryen-91/test/binaryen.js/tail_calls.js 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/binaryen.js/tail_calls.js 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,36 @@ +var module = new binaryen.Module(); + +module.setFeatures(binaryen.Features.TailCall); + +module.addTableImport("0", "env", "table"); + +var foo = module.addFunction( + "foo", + binaryen.none, + binaryen.none, + [], + module.return_call("foo", [], binaryen.none, binaryen.none) +); + +var bar = module.addFunction( + "bar", + binaryen.none, + binaryen.none, + [], + module.return_call_indirect( + module.i32.const(0), + [], + binaryen.none, + binaryen.none + ) +); + +assert(module.validate()); + +console.log( + binaryen.getExpressionInfo(binaryen.getFunctionInfo(foo).body).isReturn +); + +console.log( + binaryen.getExpressionInfo(binaryen.getFunctionInfo(bar).body).isReturn +); diff -Nru binaryen-91/test/binaryen.js/tail_calls.js.txt binaryen-99/test/binaryen.js/tail_calls.js.txt --- binaryen-91/test/binaryen.js/tail_calls.js.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/binaryen.js/tail_calls.js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,2 @@ +true +true diff -Nru binaryen-91/test/binaryen.js/validation_errors.js.txt binaryen-99/test/binaryen.js/validation_errors.js.txt --- binaryen-91/test/binaryen.js/validation_errors.js.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/binaryen.js/validation_errors.js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ [wasm-validator error in function test] unexpected false: global.get name must be valid, on -[i32] (global.get $missing) +(global.get $missing) 0 [wasm-validator error in function test] unexpected false: local.get index must be small enough, on -[i32] (local.get $0) +(local.get $0) 0 diff -Nru binaryen-91/test/break-to-return.wasm.fromBinary binaryen-99/test/break-to-return.wasm.fromBinary --- binaryen-91/test/break-to-return.wasm.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/break-to-return.wasm.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -2,7 +2,7 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (memory $0 256 256) (export "add" (func $0)) - (func $0 (; 0 ;) (param $0 i32) (param $1 i32) (result i32) + (func $0 (param $0 i32) (param $1 i32) (result i32) (block $label$0 (result i32) (br $label$0 (i32.add Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/break-within-catch.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/break-within-catch.wasm differ diff -Nru binaryen-91/test/break-within-catch.wasm.fromBinary binaryen-99/test/break-within-catch.wasm.fromBinary --- binaryen-91/test/break-within-catch.wasm.fromBinary 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/break-within-catch.wasm.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,19 @@ +(module + (type $none_=>_none (func)) + (func $0 + (block $label$2 + (try + (do + (nop) + ) + (catch + (drop + (pop exnref) + ) + (br $label$2) + ) + ) + ) + ) +) + diff -Nru binaryen-91/test/br_to_exit.wasm.fromBinary binaryen-99/test/br_to_exit.wasm.fromBinary --- binaryen-91/test/br_to_exit.wasm.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/br_to_exit.wasm.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ (module (type $none_=>_none (func)) - (func $0 (; 0 ;) + (func $0 (block $label$0 (br $label$0) ) diff -Nru binaryen-91/test/bulk-memory.wast binaryen-99/test/bulk-memory.wast --- binaryen-91/test/bulk-memory.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/bulk-memory.wast 1970-01-01 00:00:00.000000000 +0000 @@ -1,29 +0,0 @@ -(module - (memory 1024 1024 - (segment 0 "hello, world") - ) - (func $memory.init - (memory.init 0 - (i32.const 512) - (i32.const 0) - (i32.const 12) - ) - ) - (func $data.drop - (data.drop 0) - ) - (func $memory.copy - (memory.copy - (i32.const 512) - (i32.const 0) - (i32.const 12) - ) - ) - (func $memory.fill - (memory.fill - (i32.const 0) - (i32.const 42) - (i32.const 1024) - ) - ) -) diff -Nru binaryen-91/test/bulk-memory.wast.fromBinary binaryen-99/test/bulk-memory.wast.fromBinary --- binaryen-91/test/bulk-memory.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/bulk-memory.wast.fromBinary 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 1024 1024) - (data (i32.const 0) "hello, world") - (func $memory.init (; 0 ;) - (memory.init 0 - (i32.const 512) - (i32.const 0) - (i32.const 12) - ) - ) - (func $data.drop (; 1 ;) - (data.drop 0) - ) - (func $memory.copy (; 2 ;) - (memory.copy - (i32.const 512) - (i32.const 0) - (i32.const 12) - ) - ) - (func $memory.fill (; 3 ;) - (memory.fill - (i32.const 0) - (i32.const 42) - (i32.const 1024) - ) - ) -) - diff -Nru binaryen-91/test/bulk-memory.wast.fromBinary.noDebugInfo binaryen-99/test/bulk-memory.wast.fromBinary.noDebugInfo --- binaryen-91/test/bulk-memory.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/bulk-memory.wast.fromBinary.noDebugInfo 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 1024 1024) - (data (i32.const 0) "hello, world") - (func $0 (; 0 ;) - (memory.init 0 - (i32.const 512) - (i32.const 0) - (i32.const 12) - ) - ) - (func $1 (; 1 ;) - (data.drop 0) - ) - (func $2 (; 2 ;) - (memory.copy - (i32.const 512) - (i32.const 0) - (i32.const 12) - ) - ) - (func $3 (; 3 ;) - (memory.fill - (i32.const 0) - (i32.const 42) - (i32.const 1024) - ) - ) -) - diff -Nru binaryen-91/test/bulk-memory.wast.from-wast binaryen-99/test/bulk-memory.wast.from-wast --- binaryen-91/test/bulk-memory.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/bulk-memory.wast.from-wast 1970-01-01 00:00:00.000000000 +0000 @@ -1,29 +0,0 @@ -(module - (type $none_=>_none (func)) - (memory $0 1024 1024) - (data (i32.const 0) "hello, world") - (func $memory.init (; 0 ;) - (memory.init 0 - (i32.const 512) - (i32.const 0) - (i32.const 12) - ) - ) - (func $data.drop (; 1 ;) - (data.drop 0) - ) - (func $memory.copy (; 2 ;) - (memory.copy - (i32.const 512) - (i32.const 0) - (i32.const 12) - ) - ) - (func $memory.fill (; 3 ;) - (memory.fill - (i32.const 0) - (i32.const 42) - (i32.const 1024) - ) - ) -) diff -Nru binaryen-91/test/complexBinaryNames.wasm.fromBinary binaryen-99/test/complexBinaryNames.wasm.fromBinary --- binaryen-91/test/complexBinaryNames.wasm.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/complexBinaryNames.wasm.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,10 +1,10 @@ (module (type $none_=>_none (func)) (export "$zoo (.bar)" (func $1)) - (func $foo\20\28.bar\29 (; 0 ;) + (func $foo\20\28.bar\29 (nop) ) - (func $1 (; 1 ;) + (func $1 (call $foo\20\28.bar\29) ) ) diff -Nru binaryen-91/test/complexTextNames.wast.fromBinary binaryen-99/test/complexTextNames.wast.fromBinary --- binaryen-91/test/complexTextNames.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/complexTextNames.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,10 +1,10 @@ (module (type $none_=>_none (func)) (export "$zoo (.bar)" (func $1)) - (func $foo\20\28.bar\29 (; 0 ;) + (func $foo\20\28.bar\29 (nop) ) - (func $1 (; 1 ;) + (func $1 (call $foo\20\28.bar\29) ) ) diff -Nru binaryen-91/test/complexTextNames.wast.fromBinary.noDebugInfo binaryen-99/test/complexTextNames.wast.fromBinary.noDebugInfo --- binaryen-91/test/complexTextNames.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/complexTextNames.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -1,10 +1,10 @@ (module (type $none_=>_none (func)) (export "$zoo (.bar)" (func $1)) - (func $0 (; 0 ;) + (func $0 (nop) ) - (func $1 (; 1 ;) + (func $1 (call $0) ) ) diff -Nru binaryen-91/test/complexTextNames.wast.from-wast binaryen-99/test/complexTextNames.wast.from-wast --- binaryen-91/test/complexTextNames.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/complexTextNames.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,10 +1,10 @@ (module (type $none_=>_none (func)) (export "$zoo (.bar)" (func $1)) - (func $foo\20\28.bar\29 (; 0 ;) + (func $foo\20\28.bar\29 (nop) ) - (func $1 (; 1 ;) + (func $1 (call $foo\20\28.bar\29) ) ) diff -Nru binaryen-91/test/consume-stacky.wasm.fromBinary binaryen-99/test/consume-stacky.wasm.fromBinary --- binaryen-91/test/consume-stacky.wasm.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/consume-stacky.wasm.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $none_=>_i32 (func (result i32))) (memory $0 1 1) - (func $0 (; 0 ;) (result i32) + (func $0 (result i32) (local $0 i32) (local.set $0 (i32.const 1) diff -Nru binaryen-91/test/ctor-eval/bad-indirect-call2.wast.out binaryen-99/test/ctor-eval/bad-indirect-call2.wast.out --- binaryen-91/test/ctor-eval/bad-indirect-call2.wast.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/ctor-eval/bad-indirect-call2.wast.out 2021-01-07 20:01:06.000000000 +0000 @@ -6,7 +6,7 @@ (table $0 2 2 funcref) (elem (i32.const 0) $_abort $call-indirect) (export "test1" (func $test1)) - (func $test1 (; 1 ;) + (func $test1 (call_indirect (type $none_=>_none) (i32.const 0) ) @@ -15,7 +15,7 @@ (i32.const 120) ) ) - (func $call-indirect (; 2 ;) + (func $call-indirect (i32.store8 (i32.const 40) (i32.const 67) diff -Nru binaryen-91/test/ctor-eval/bad-indirect-call3.wast binaryen-99/test/ctor-eval/bad-indirect-call3.wast --- binaryen-91/test/ctor-eval/bad-indirect-call3.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/ctor-eval/bad-indirect-call3.wast 2021-01-07 20:01:06.000000000 +0000 @@ -9,7 +9,7 @@ ) (func $sig_mismatch (call_indirect (type $funcref_=>_none) ;; unsafe to call, signature mismatch - (ref.null) + (ref.null func) (i32.const 0) ) ) diff -Nru binaryen-91/test/ctor-eval/bad-indirect-call3.wast.out binaryen-99/test/ctor-eval/bad-indirect-call3.wast.out --- binaryen-91/test/ctor-eval/bad-indirect-call3.wast.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/ctor-eval/bad-indirect-call3.wast.out 2021-01-07 20:01:06.000000000 +0000 @@ -7,15 +7,15 @@ (table $0 1 1 funcref) (elem (i32.const 0) $callee) (export "sig_mismatch" (func $sig_mismatch)) - (func $callee (; 0 ;) (param $0 exnref) + (func $callee (param $0 exnref) (i32.store8 (i32.const 40) (i32.const 67) ) ) - (func $sig_mismatch (; 1 ;) + (func $sig_mismatch (call_indirect (type $funcref_=>_none) - (ref.null) + (ref.null func) (i32.const 0) ) ) diff -Nru binaryen-91/test/ctor-eval/bad-indirect-call.wast.out binaryen-99/test/ctor-eval/bad-indirect-call.wast.out --- binaryen-91/test/ctor-eval/bad-indirect-call.wast.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/ctor-eval/bad-indirect-call.wast.out 2021-01-07 20:01:06.000000000 +0000 @@ -5,7 +5,7 @@ (table $0 1 1 funcref) (elem (i32.const 0) $call-indirect) (export "test1" (func $test1)) - (func $test1 (; 0 ;) + (func $test1 (call_indirect (type $none_=>_none) (i32.const 1) ) @@ -14,7 +14,7 @@ (i32.const 120) ) ) - (func $call-indirect (; 1 ;) + (func $call-indirect (i32.store8 (i32.const 40) (i32.const 67) diff -Nru binaryen-91/test/ctor-eval/basics-flatten.wast.out binaryen-99/test/ctor-eval/basics-flatten.wast.out --- binaryen-91/test/ctor-eval/basics-flatten.wast.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/ctor-eval/basics-flatten.wast.out 2021-01-07 20:01:06.000000000 +0000 @@ -2,7 +2,7 @@ (type $none_=>_none (func)) (memory $0 256 256) (data (i32.const 10) "nas\00\00\00aka\00yzkx waka wakm\00\00\00\00\00\00C") - (func $call-indirect (; 0 ;) + (func $call-indirect (i32.store8 (i32.const 40) (i32.const 67) diff -Nru binaryen-91/test/ctor-eval/basics.wast.out binaryen-99/test/ctor-eval/basics.wast.out --- binaryen-91/test/ctor-eval/basics.wast.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/ctor-eval/basics.wast.out 2021-01-07 20:01:06.000000000 +0000 @@ -2,7 +2,7 @@ (type $none_=>_none (func)) (memory $0 256 256) (data (i32.const 10) "nas\00\00\00aka yzkx waka wakm\00\00\00\00\00\00C") - (func $call-indirect (; 0 ;) + (func $call-indirect (i32.store8 (i32.const 40) (i32.const 67) diff -Nru binaryen-91/test/ctor-eval/imported2.wast.out binaryen-99/test/ctor-eval/imported2.wast.out --- binaryen-91/test/ctor-eval/imported2.wast.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/ctor-eval/imported2.wast.out 2021-01-07 20:01:06.000000000 +0000 @@ -5,7 +5,7 @@ (global $mine (mut i32) (i32.const 1)) (export "test2" (func $test2)) (export "test3" (func $test3)) - (func $test2 (; 0 ;) + (func $test2 (global.set $mine (i32.const 2) ) @@ -14,7 +14,7 @@ (i32.const 115) ) ) - (func $test3 (; 1 ;) + (func $test3 (i32.store8 (i32.const 14) (i32.const 115) diff -Nru binaryen-91/test/ctor-eval/imported3.wast.out binaryen-99/test/ctor-eval/imported3.wast.out --- binaryen-91/test/ctor-eval/imported3.wast.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/ctor-eval/imported3.wast.out 2021-01-07 20:01:06.000000000 +0000 @@ -3,7 +3,7 @@ (memory $0 256 256) (data (i32.const 10) "waka waka waka waka waka") (export "test1" (func $test1)) - (func $test1 (; 0 ;) + (func $test1 (i32.store8 (i32.const 13) (i32.const 115) diff -Nru binaryen-91/test/ctor-eval/indirect-call3.wast.out binaryen-99/test/ctor-eval/indirect-call3.wast.out --- binaryen-91/test/ctor-eval/indirect-call3.wast.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/ctor-eval/indirect-call3.wast.out 2021-01-07 20:01:06.000000000 +0000 @@ -4,7 +4,7 @@ (import "env" "_abort" (func $_abort)) (memory $0 256 256) (data (i32.const 10) "waka waka xaka waka waka\00\00\00\00\00\00C") - (func $call-indirect (; 1 ;) + (func $call-indirect (i32.store8 (i32.const 40) (i32.const 67) diff -Nru binaryen-91/test/ctor-eval/just_some.wast.out binaryen-99/test/ctor-eval/just_some.wast.out --- binaryen-91/test/ctor-eval/just_some.wast.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/ctor-eval/just_some.wast.out 2021-01-07 20:01:06.000000000 +0000 @@ -4,10 +4,10 @@ (data (i32.const 10) "wasa waka waka waka waka") (export "test2" (func $test2)) (export "test3" (func $test3)) - (func $test2 (; 0 ;) + (func $test2 (unreachable) ) - (func $test3 (; 1 ;) + (func $test3 (i32.store8 (i32.const 13) (i32.const 113) diff -Nru binaryen-91/test/ctor-eval/no_partial.wast.out binaryen-99/test/ctor-eval/no_partial.wast.out --- binaryen-91/test/ctor-eval/no_partial.wast.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/ctor-eval/no_partial.wast.out 2021-01-07 20:01:06.000000000 +0000 @@ -3,7 +3,7 @@ (memory $0 256 256) (data (i32.const 10) "waka waka waka waka waka") (export "test1" (func $test1)) - (func $test1 (; 0 ;) + (func $test1 (i32.store8 (i32.const 12) (i32.const 115) diff -Nru binaryen-91/test/ctor-eval/unsafe_call.wast.out binaryen-99/test/ctor-eval/unsafe_call.wast.out --- binaryen-91/test/ctor-eval/unsafe_call.wast.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/ctor-eval/unsafe_call.wast.out 2021-01-07 20:01:06.000000000 +0000 @@ -3,7 +3,7 @@ (memory $0 256 256) (data (i32.const 10) "waka waka waka waka waka") (export "test1" (func $test1)) - (func $test1 (; 0 ;) + (func $test1 (call $unsafe-to-call) (i32.store (i32.const 12) @@ -18,7 +18,7 @@ (i32.const 120) ) ) - (func $unsafe-to-call (; 1 ;) + (func $unsafe-to-call (unreachable) ) ) diff -Nru binaryen-91/test/debugInfo.asm.js binaryen-99/test/debugInfo.asm.js --- binaryen-91/test/debugInfo.asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/debugInfo.asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,102 +0,0 @@ -function () { - "use asm"; - var STACKTOP = 0; - function add(x, y) { - x = x | 0; - y = y | 0; - x = x; //@line 5 "tests/hello_world.c" - y = y; //@line 6 "tests/hello_world.c" - x = y; //@line 314159 "tests/other_file.cpp" - return x + y | 0; - } - function ret(x) { - x = x | 0; - x = x << 1; //@line 50 "return.cpp" - return x + 1 | 0; //@line 100 "return.cpp" - } - function opts(x, y) { - x = x | 0; - y = y | 0; - x = (x + y) | 0; //@line 1 "even-opted.cpp" - y = y >> x; //@line 2 "even-opted.cpp" - x = (x | 0) % (y | 0); //@line 3 "even-opted.cpp" - return x + y | 0; - } - function fib($0) { - $0 = $0|0; - var $$0$lcssa = 0, $$01518 = 0, $$01518$phi = 0, $$01617 = 0, $$019 = 0, $1 = 0, $2 = 0, $3 = 0, $exitcond = 0, label = 0, sp = 0; - sp = STACKTOP; - $1 = ($0|0)>(0); //@line 3 "fib.c" - if ($1) { - $$01518 = 0;$$01617 = 0;$$019 = 1; - } else { - $$0$lcssa = 1; - return ($$0$lcssa|0); //@line 8 "fib.c" - } - while(1) { - $2 = (($$019) + ($$01518))|0; //@line 4 "fib.c" - $3 = (($$01617) + 1)|0; //@line 3 "fib.c" - $exitcond = ($3|0)==($0|0); //@line 3 "fib.c" - if ($exitcond) { - $$0$lcssa = $2; - break; - } else { - $$01518$phi = $$019;$$01617 = $3;$$019 = $2;$$01518 = $$01518$phi; - } - } - return ($$0$lcssa|0); //@line 8 "fib.c" - } - function switch_reach($p) { - $p = $p|0; - var $0 = 0, $call = 0, $magic = 0, $rc$0 = 0, $switch$split2D = 0, label = 0, sp = 0; - sp = STACKTOP; - $magic = ((($p)) + 52|0); - $0 = $magic; - $switch$split2D = ($0|0)<(1369188723); - if ($switch$split2D) { - switch ($0|0) { - case -1108210269: { - label = 2; - break; - } - default: { - $rc$0 = 0; - } - } - } else { - switch ($0|0) { - case 1369188723: { - label = 2; - break; - } - default: { - $rc$0 = 0; - } - } - } - if ((label|0) == 2) { - $call = switch_reach($p) | 0; - $rc$0 = $call; - } - switch_reach($p) | 0; - return ($rc$0|0); //@line 59950 "/tmp/emscripten_test_binaryen2_28hnAe/src.c" - } - function nofile() { - nofile(); //@line 1337 - } - function inlineMe(x, y) { - x = x | 0; - y = y | 0; - x = x + y | 0; //@line 120 "inline_me.c" - y = x + y | 0; //@line 121 "inline_me.c" - x = x + y | 0; //@line 122 "inline_me.c" - return x | 0; //@line 123 "inline_me.c" - } - function inlineInto(x, y) { - x = x | 0; - y = y | 0; - return inlineMe(x | 0, y | 0) | 0; //@line 125 "inline_me.c" - } - return { add: add, ret: ret, opts: opts, fib: fib, switch_reach: switch_reach, nofile: nofile, inlineInto: inlineInto }; -} - diff -Nru binaryen-91/test/debugInfo.fromasm binaryen-99/test/debugInfo.fromasm --- binaryen-91/test/debugInfo.fromasm 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/debugInfo.fromasm 1970-01-01 00:00:00.000000000 +0000 @@ -1,192 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "debugInfo.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (export "add" (func $add)) - (export "ret" (func $ret)) - (export "opts" (func $opts)) - (export "fib" (func $fib)) - (export "switch_reach" (func $switch_reach)) - (export "nofile" (func $nofile)) - (export "inlineInto" (func $inlineInto)) - (func $add (; 0 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - ;;@ tests/other_file.cpp:314159:0 - (i32.add - (local.get $1) - (local.get $1) - ) - ) - (func $ret (; 1 ;) (; has Stack IR ;) (param $0 i32) (result i32) - ;;@ return.cpp:50:0 - (local.set $0 - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ;;@ return.cpp:100:0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (func $opts (; 2 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - ;;@ even-opted.cpp:3:0 - (i32.add - (if (result i32) - (local.tee $2 - ;;@ even-opted.cpp:2:0 - (local.tee $0 - (i32.shr_s - (local.get $1) - ;;@ even-opted.cpp:1:0 - (local.tee $1 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - ) - ) - ) - (i32.rem_s - (local.get $1) - (local.get $2) - ) - (i32.const 0) - ) - (local.get $0) - ) - ) - (func $fib (; 3 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local.set $2 - (if (result i32) - ;;@ fib.c:3:0 - (i32.gt_s - (local.get $0) - (i32.const 0) - ) - (i32.const 1) - (block - (local.set $0 - (i32.const 1) - ) - ;;@ fib.c:8:0 - (return - (local.get $0) - ) - ) - ) - ) - (loop $while-in - ;;@ fib.c:4:0 - (local.set $4 - (i32.add - (local.get $2) - (local.get $3) - ) - ) - ;;@ fib.c:3:0 - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (if - (i32.ne - (local.get $0) - (local.get $1) - ) - (block - (local.set $3 - (local.get $2) - ) - (local.set $2 - (local.get $4) - ) - (br $while-in) - ) - ) - ) - ;;@ fib.c:8:0 - (local.get $4) - ) - (func $switch_reach (; 4 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local.set $1 - (block $__rjto$0 (result i32) - (block $__rjti$0 - (if - (i32.lt_s - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 52) - ) - ) - (i32.const 1369188723) - ) - (br_if $__rjti$0 - (i32.eqz - (i32.sub - (local.get $1) - (i32.const -1108210269) - ) - ) - ) - (br_if $__rjti$0 - (i32.eqz - (i32.sub - (local.get $1) - (i32.const 1369188723) - ) - ) - ) - ) - (br $__rjto$0 - (i32.const 0) - ) - ) - (call $switch_reach - (local.get $0) - ) - ) - ) - (drop - (call $switch_reach - (local.get $0) - ) - ) - ;;@ /tmp/emscripten_test_binaryen2_28hnAe/src.c:59950:0 - (local.get $1) - ) - (func $nofile (; 5 ;) (; has Stack IR ;) - ;;@ (unknown):1337:0 - (call $nofile) - ) - (func $inlineInto (; 6 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - ;;@ inline_me.c:125:0 - (i32.add - ;;@ inline_me.c:120:0 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (i32.add - (local.get $0) - (local.get $1) - ) - ) - ) -) diff -Nru binaryen-91/test/debugInfo.fromasm.clamp binaryen-99/test/debugInfo.fromasm.clamp --- binaryen-91/test/debugInfo.fromasm.clamp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/debugInfo.fromasm.clamp 1970-01-01 00:00:00.000000000 +0000 @@ -1,192 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "debugInfo.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (export "add" (func $add)) - (export "ret" (func $ret)) - (export "opts" (func $opts)) - (export "fib" (func $fib)) - (export "switch_reach" (func $switch_reach)) - (export "nofile" (func $nofile)) - (export "inlineInto" (func $inlineInto)) - (func $add (; 0 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - ;;@ tests/other_file.cpp:314159:0 - (i32.add - (local.get $1) - (local.get $1) - ) - ) - (func $ret (; 1 ;) (; has Stack IR ;) (param $0 i32) (result i32) - ;;@ return.cpp:50:0 - (local.set $0 - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ;;@ return.cpp:100:0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (func $opts (; 2 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - ;;@ even-opted.cpp:3:0 - (i32.add - (if (result i32) - (local.tee $2 - ;;@ even-opted.cpp:2:0 - (local.tee $0 - (i32.shr_s - (local.get $1) - ;;@ even-opted.cpp:1:0 - (local.tee $1 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - ) - ) - ) - (i32.rem_s - (local.get $1) - (local.get $2) - ) - (i32.const 0) - ) - (local.get $0) - ) - ) - (func $fib (; 3 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local.set $2 - (if (result i32) - ;;@ fib.c:3:0 - (i32.gt_s - (local.get $0) - (i32.const 0) - ) - (i32.const 1) - (block - (local.set $0 - (i32.const 1) - ) - ;;@ fib.c:8:0 - (return - (local.get $0) - ) - ) - ) - ) - (loop $while-in - ;;@ fib.c:4:0 - (local.set $4 - (i32.add - (local.get $2) - (local.get $3) - ) - ) - ;;@ fib.c:3:0 - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (if - (i32.ne - (local.get $0) - (local.get $1) - ) - (block - (local.set $3 - (local.get $2) - ) - (local.set $2 - (local.get $4) - ) - (br $while-in) - ) - ) - ) - ;;@ fib.c:8:0 - (local.get $4) - ) - (func $switch_reach (; 4 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local.set $1 - (block $__rjto$0 (result i32) - (block $__rjti$0 - (if - (i32.lt_s - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 52) - ) - ) - (i32.const 1369188723) - ) - (br_if $__rjti$0 - (i32.eqz - (i32.sub - (local.get $1) - (i32.const -1108210269) - ) - ) - ) - (br_if $__rjti$0 - (i32.eqz - (i32.sub - (local.get $1) - (i32.const 1369188723) - ) - ) - ) - ) - (br $__rjto$0 - (i32.const 0) - ) - ) - (call $switch_reach - (local.get $0) - ) - ) - ) - (drop - (call $switch_reach - (local.get $0) - ) - ) - ;;@ /tmp/emscripten_test_binaryen2_28hnAe/src.c:59950:0 - (local.get $1) - ) - (func $nofile (; 5 ;) (; has Stack IR ;) - ;;@ (unknown):1337:0 - (call $nofile) - ) - (func $inlineInto (; 6 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - ;;@ inline_me.c:125:0 - (i32.add - ;;@ inline_me.c:120:0 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (i32.add - (local.get $0) - (local.get $1) - ) - ) - ) -) diff -Nru binaryen-91/test/debugInfo.fromasm.clamp.map binaryen-99/test/debugInfo.fromasm.clamp.map --- binaryen-91/test/debugInfo.fromasm.clamp.map 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/debugInfo.fromasm.clamp.map 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -{"version":3,"sources":["tests/hello_world.c","tests/other_file.cpp","return.cpp","even-opted.cpp","fib.c","/tmp/emscripten_test_binaryen2_28hnAe/src.c","(unknown)","inline_me.c"],"names":[],"mappings":"mJC8ylTA,QC7vlTA,OAkDA,UCjGA,AADA,EADA,+BCEA,cAKA,QAJA,OADA,0BAKA,sECsi1DA,KCrvyDA,KC5rCA,AALA"} \ No newline at end of file diff -Nru binaryen-91/test/debugInfo.fromasm.clamp.no-opts binaryen-99/test/debugInfo.fromasm.clamp.no-opts --- binaryen-91/test/debugInfo.fromasm.clamp.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/debugInfo.fromasm.clamp.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,329 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (global $STACKTOP (mut i32) (i32.const 0)) - (export "add" (func $add)) - (export "ret" (func $ret)) - (export "opts" (func $opts)) - (export "fib" (func $fib)) - (export "switch_reach" (func $switch_reach)) - (export "nofile" (func $nofile)) - (export "inlineInto" (func $inlineInto)) - (func $add (; 0 ;) (param $x i32) (param $y i32) (result i32) - ;;@ tests/hello_world.c:5:0 - (local.set $x - (local.get $x) - ) - ;;@ tests/hello_world.c:6:0 - (local.set $y - (local.get $y) - ) - ;;@ tests/other_file.cpp:314159:0 - (local.set $x - (local.get $y) - ) - (return - (i32.add - (local.get $x) - (local.get $y) - ) - ) - ) - (func $ret (; 1 ;) (param $x i32) (result i32) - ;;@ return.cpp:50:0 - (local.set $x - (i32.shl - (local.get $x) - (i32.const 1) - ) - ) - ;;@ return.cpp:100:0 - (return - (i32.add - (local.get $x) - (i32.const 1) - ) - ) - ) - (func $i32s-rem (; 2 ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (i32.eqz - (local.get $1) - ) - (i32.const 0) - (i32.rem_s - (local.get $0) - (local.get $1) - ) - ) - ) - (func $opts (; 3 ;) (param $x i32) (param $y i32) (result i32) - ;;@ even-opted.cpp:1:0 - (local.set $x - (i32.add - (local.get $x) - (local.get $y) - ) - ) - ;;@ even-opted.cpp:2:0 - (local.set $y - (i32.shr_s - (local.get $y) - (local.get $x) - ) - ) - ;;@ even-opted.cpp:3:0 - (local.set $x - (call $i32s-rem - (local.get $x) - (local.get $y) - ) - ) - (return - (i32.add - (local.get $x) - (local.get $y) - ) - ) - ) - (func $fib (; 4 ;) (param $$0 i32) (result i32) - (local $$$0$lcssa i32) - (local $$$01518 i32) - (local $$$01518$phi i32) - (local $$$01617 i32) - (local $$$019 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$exitcond i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - ;;@ fib.c:3:0 - (local.set $$1 - (i32.gt_s - (local.get $$0) - (i32.const 0) - ) - ) - (if - (local.get $$1) - (block - (local.set $$$01518 - (i32.const 0) - ) - (local.set $$$01617 - (i32.const 0) - ) - (local.set $$$019 - (i32.const 1) - ) - ) - (block - (local.set $$$0$lcssa - (i32.const 1) - ) - ;;@ fib.c:8:0 - (return - (local.get $$$0$lcssa) - ) - ) - ) - (loop $while-in - (block $while-out - ;;@ fib.c:4:0 - (local.set $$2 - (i32.add - (local.get $$$019) - (local.get $$$01518) - ) - ) - ;;@ fib.c:3:0 - (local.set $$3 - (i32.add - (local.get $$$01617) - (i32.const 1) - ) - ) - (local.set $$exitcond - (i32.eq - (local.get $$3) - (local.get $$0) - ) - ) - (if - (local.get $$exitcond) - (block - (local.set $$$0$lcssa - (local.get $$2) - ) - (br $while-out) - ) - (block - (local.set $$$01518$phi - (local.get $$$019) - ) - (local.set $$$01617 - (local.get $$3) - ) - (local.set $$$019 - (local.get $$2) - ) - (local.set $$$01518 - (local.get $$$01518$phi) - ) - ) - ) - (br $while-in) - ) - ) - ;;@ fib.c:8:0 - (return - (local.get $$$0$lcssa) - ) - ) - (func $switch_reach (; 5 ;) (param $$p i32) (result i32) - (local $$0 i32) - (local $$call i32) - (local $$magic i32) - (local $$rc$0 i32) - (local $$switch$split2D i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$magic - (i32.add - (local.get $$p) - (i32.const 52) - ) - ) - (local.set $$0 - (local.get $$magic) - ) - (local.set $$switch$split2D - (i32.lt_s - (local.get $$0) - (i32.const 1369188723) - ) - ) - (if - (local.get $$switch$split2D) - (block $switch - (block $switch-default - (block $switch-case - (br_table $switch-case $switch-default - (i32.sub - (local.get $$0) - (i32.const -1108210269) - ) - ) - ) - (block - (local.set $label - (i32.const 2) - ) - (br $switch) - ) - ) - (local.set $$rc$0 - (i32.const 0) - ) - ) - (block $switch0 - (block $switch-default2 - (block $switch-case1 - (br_table $switch-case1 $switch-default2 - (i32.sub - (local.get $$0) - (i32.const 1369188723) - ) - ) - ) - (block - (local.set $label - (i32.const 2) - ) - (br $switch0) - ) - ) - (local.set $$rc$0 - (i32.const 0) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 2) - ) - (block - (local.set $$call - (call $switch_reach - (local.get $$p) - ) - ) - (local.set $$rc$0 - (local.get $$call) - ) - ) - ) - (drop - (call $switch_reach - (local.get $$p) - ) - ) - ;;@ /tmp/emscripten_test_binaryen2_28hnAe/src.c:59950:0 - (return - (local.get $$rc$0) - ) - ) - (func $nofile (; 6 ;) - ;;@ (unknown):1337:0 - (call $nofile) - ) - (func $inlineMe (; 7 ;) (param $x i32) (param $y i32) (result i32) - ;;@ inline_me.c:120:0 - (local.set $x - (i32.add - (local.get $x) - (local.get $y) - ) - ) - ;;@ inline_me.c:121:0 - (local.set $y - (i32.add - (local.get $x) - (local.get $y) - ) - ) - ;;@ inline_me.c:122:0 - (local.set $x - (i32.add - (local.get $x) - (local.get $y) - ) - ) - ;;@ inline_me.c:123:0 - (return - (local.get $x) - ) - ) - (func $inlineInto (; 8 ;) (param $x i32) (param $y i32) (result i32) - ;;@ inline_me.c:125:0 - (return - (call $inlineMe - (local.get $x) - (local.get $y) - ) - ) - ) -) diff -Nru binaryen-91/test/debugInfo.fromasm.clamp.no-opts.map binaryen-99/test/debugInfo.fromasm.clamp.no-opts.map --- binaryen-91/test/debugInfo.fromasm.clamp.no-opts.map 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/debugInfo.fromasm.clamp.no-opts.map 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -{"version":3,"sources":["tests/hello_world.c","tests/other_file.cpp","return.cpp","even-opted.cpp","fib.c","/tmp/emscripten_test_binaryen2_28hnAe/src.c","(unknown)","inline_me.c"],"names":[],"mappings":"gMAIA,IACA,ICyylTA,aC7vlTA,OAkDA,0BCnGA,OACA,OACA,uBCAA,4BAKA,QAJA,OADA,8CAKA,0ICsi1DA,MCrvyDA,KCjsCA,OACA,OACA,OACA,MAEA"} \ No newline at end of file diff -Nru binaryen-91/test/debugInfo.fromasm.imprecise binaryen-99/test/debugInfo.fromasm.imprecise --- binaryen-91/test/debugInfo.fromasm.imprecise 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/debugInfo.fromasm.imprecise 1970-01-01 00:00:00.000000000 +0000 @@ -1,184 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (export "add" (func $add)) - (export "ret" (func $ret)) - (export "opts" (func $opts)) - (export "fib" (func $fib)) - (export "switch_reach" (func $switch_reach)) - (export "nofile" (func $nofile)) - (export "inlineInto" (func $inlineInto)) - (func $add (; 0 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - ;;@ tests/other_file.cpp:314159:0 - (i32.add - (local.get $1) - (local.get $1) - ) - ) - (func $ret (; 1 ;) (; has Stack IR ;) (param $0 i32) (result i32) - ;;@ return.cpp:50:0 - (local.set $0 - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ;;@ return.cpp:100:0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (func $opts (; 2 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - ;;@ even-opted.cpp:1:0 - (local.set $0 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - ;;@ even-opted.cpp:2:0 - (local.set $1 - (i32.shr_s - (local.get $1) - (local.get $0) - ) - ) - ;;@ even-opted.cpp:3:0 - (i32.add - (local.get $1) - (i32.rem_s - (local.get $0) - (local.get $1) - ) - ) - ) - (func $fib (; 3 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local.set $2 - (if (result i32) - ;;@ fib.c:3:0 - (i32.gt_s - (local.get $0) - (i32.const 0) - ) - (i32.const 1) - (block - (local.set $0 - (i32.const 1) - ) - ;;@ fib.c:8:0 - (return - (local.get $0) - ) - ) - ) - ) - (loop $while-in - ;;@ fib.c:4:0 - (local.set $4 - (i32.add - (local.get $2) - (local.get $3) - ) - ) - ;;@ fib.c:3:0 - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (if - (i32.ne - (local.get $0) - (local.get $1) - ) - (block - (local.set $3 - (local.get $2) - ) - (local.set $2 - (local.get $4) - ) - (br $while-in) - ) - ) - ) - ;;@ fib.c:8:0 - (local.get $4) - ) - (func $switch_reach (; 4 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local.set $1 - (block $__rjto$0 (result i32) - (block $__rjti$0 - (if - (i32.lt_s - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 52) - ) - ) - (i32.const 1369188723) - ) - (br_if $__rjti$0 - (i32.eqz - (i32.sub - (local.get $1) - (i32.const -1108210269) - ) - ) - ) - (br_if $__rjti$0 - (i32.eqz - (i32.sub - (local.get $1) - (i32.const 1369188723) - ) - ) - ) - ) - (br $__rjto$0 - (i32.const 0) - ) - ) - (call $switch_reach - (local.get $0) - ) - ) - ) - (drop - (call $switch_reach - (local.get $0) - ) - ) - ;;@ /tmp/emscripten_test_binaryen2_28hnAe/src.c:59950:0 - (local.get $1) - ) - (func $nofile (; 5 ;) (; has Stack IR ;) - ;;@ (unknown):1337:0 - (call $nofile) - ) - (func $inlineInto (; 6 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - ;;@ inline_me.c:125:0 - (i32.add - ;;@ inline_me.c:120:0 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (i32.add - (local.get $0) - (local.get $1) - ) - ) - ) -) diff -Nru binaryen-91/test/debugInfo.fromasm.imprecise.map binaryen-99/test/debugInfo.fromasm.imprecise.map --- binaryen-91/test/debugInfo.fromasm.imprecise.map 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/debugInfo.fromasm.imprecise.map 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -{"version":3,"sources":["tests/hello_world.c","tests/other_file.cpp","return.cpp","even-opted.cpp","fib.c","/tmp/emscripten_test_binaryen2_28hnAe/src.c","(unknown)","inline_me.c"],"names":[],"mappings":"0GC8ylTA,QC7vlTA,OAkDA,QCnGA,OACA,OACA,aCAA,cAKA,QAJA,OADA,0BAKA,sECsi1DA,KCrvyDA,KC5rCA,AALA"} \ No newline at end of file diff -Nru binaryen-91/test/debugInfo.fromasm.imprecise.no-opts binaryen-99/test/debugInfo.fromasm.imprecise.no-opts --- binaryen-91/test/debugInfo.fromasm.imprecise.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/debugInfo.fromasm.imprecise.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,317 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (global $STACKTOP (mut i32) (i32.const 0)) - (export "add" (func $add)) - (export "ret" (func $ret)) - (export "opts" (func $opts)) - (export "fib" (func $fib)) - (export "switch_reach" (func $switch_reach)) - (export "nofile" (func $nofile)) - (export "inlineInto" (func $inlineInto)) - (func $add (; 0 ;) (param $x i32) (param $y i32) (result i32) - ;;@ tests/hello_world.c:5:0 - (local.set $x - (local.get $x) - ) - ;;@ tests/hello_world.c:6:0 - (local.set $y - (local.get $y) - ) - ;;@ tests/other_file.cpp:314159:0 - (local.set $x - (local.get $y) - ) - (return - (i32.add - (local.get $x) - (local.get $y) - ) - ) - ) - (func $ret (; 1 ;) (param $x i32) (result i32) - ;;@ return.cpp:50:0 - (local.set $x - (i32.shl - (local.get $x) - (i32.const 1) - ) - ) - ;;@ return.cpp:100:0 - (return - (i32.add - (local.get $x) - (i32.const 1) - ) - ) - ) - (func $opts (; 2 ;) (param $x i32) (param $y i32) (result i32) - ;;@ even-opted.cpp:1:0 - (local.set $x - (i32.add - (local.get $x) - (local.get $y) - ) - ) - ;;@ even-opted.cpp:2:0 - (local.set $y - (i32.shr_s - (local.get $y) - (local.get $x) - ) - ) - ;;@ even-opted.cpp:3:0 - (local.set $x - (i32.rem_s - (local.get $x) - (local.get $y) - ) - ) - (return - (i32.add - (local.get $x) - (local.get $y) - ) - ) - ) - (func $fib (; 3 ;) (param $$0 i32) (result i32) - (local $$$0$lcssa i32) - (local $$$01518 i32) - (local $$$01518$phi i32) - (local $$$01617 i32) - (local $$$019 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$exitcond i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - ;;@ fib.c:3:0 - (local.set $$1 - (i32.gt_s - (local.get $$0) - (i32.const 0) - ) - ) - (if - (local.get $$1) - (block - (local.set $$$01518 - (i32.const 0) - ) - (local.set $$$01617 - (i32.const 0) - ) - (local.set $$$019 - (i32.const 1) - ) - ) - (block - (local.set $$$0$lcssa - (i32.const 1) - ) - ;;@ fib.c:8:0 - (return - (local.get $$$0$lcssa) - ) - ) - ) - (loop $while-in - (block $while-out - ;;@ fib.c:4:0 - (local.set $$2 - (i32.add - (local.get $$$019) - (local.get $$$01518) - ) - ) - ;;@ fib.c:3:0 - (local.set $$3 - (i32.add - (local.get $$$01617) - (i32.const 1) - ) - ) - (local.set $$exitcond - (i32.eq - (local.get $$3) - (local.get $$0) - ) - ) - (if - (local.get $$exitcond) - (block - (local.set $$$0$lcssa - (local.get $$2) - ) - (br $while-out) - ) - (block - (local.set $$$01518$phi - (local.get $$$019) - ) - (local.set $$$01617 - (local.get $$3) - ) - (local.set $$$019 - (local.get $$2) - ) - (local.set $$$01518 - (local.get $$$01518$phi) - ) - ) - ) - (br $while-in) - ) - ) - ;;@ fib.c:8:0 - (return - (local.get $$$0$lcssa) - ) - ) - (func $switch_reach (; 4 ;) (param $$p i32) (result i32) - (local $$0 i32) - (local $$call i32) - (local $$magic i32) - (local $$rc$0 i32) - (local $$switch$split2D i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$magic - (i32.add - (local.get $$p) - (i32.const 52) - ) - ) - (local.set $$0 - (local.get $$magic) - ) - (local.set $$switch$split2D - (i32.lt_s - (local.get $$0) - (i32.const 1369188723) - ) - ) - (if - (local.get $$switch$split2D) - (block $switch - (block $switch-default - (block $switch-case - (br_table $switch-case $switch-default - (i32.sub - (local.get $$0) - (i32.const -1108210269) - ) - ) - ) - (block - (local.set $label - (i32.const 2) - ) - (br $switch) - ) - ) - (local.set $$rc$0 - (i32.const 0) - ) - ) - (block $switch0 - (block $switch-default2 - (block $switch-case1 - (br_table $switch-case1 $switch-default2 - (i32.sub - (local.get $$0) - (i32.const 1369188723) - ) - ) - ) - (block - (local.set $label - (i32.const 2) - ) - (br $switch0) - ) - ) - (local.set $$rc$0 - (i32.const 0) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 2) - ) - (block - (local.set $$call - (call $switch_reach - (local.get $$p) - ) - ) - (local.set $$rc$0 - (local.get $$call) - ) - ) - ) - (drop - (call $switch_reach - (local.get $$p) - ) - ) - ;;@ /tmp/emscripten_test_binaryen2_28hnAe/src.c:59950:0 - (return - (local.get $$rc$0) - ) - ) - (func $nofile (; 5 ;) - ;;@ (unknown):1337:0 - (call $nofile) - ) - (func $inlineMe (; 6 ;) (param $x i32) (param $y i32) (result i32) - ;;@ inline_me.c:120:0 - (local.set $x - (i32.add - (local.get $x) - (local.get $y) - ) - ) - ;;@ inline_me.c:121:0 - (local.set $y - (i32.add - (local.get $x) - (local.get $y) - ) - ) - ;;@ inline_me.c:122:0 - (local.set $x - (i32.add - (local.get $x) - (local.get $y) - ) - ) - ;;@ inline_me.c:123:0 - (return - (local.get $x) - ) - ) - (func $inlineInto (; 7 ;) (param $x i32) (param $y i32) (result i32) - ;;@ inline_me.c:125:0 - (return - (call $inlineMe - (local.get $x) - (local.get $y) - ) - ) - ) -) diff -Nru binaryen-91/test/debugInfo.fromasm.imprecise.no-opts.map binaryen-99/test/debugInfo.fromasm.imprecise.no-opts.map --- binaryen-91/test/debugInfo.fromasm.imprecise.no-opts.map 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/debugInfo.fromasm.imprecise.no-opts.map 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -{"version":3,"sources":["tests/hello_world.c","tests/other_file.cpp","return.cpp","even-opted.cpp","fib.c","/tmp/emscripten_test_binaryen2_28hnAe/src.c","(unknown)","inline_me.c"],"names":[],"mappings":"+LAIA,IACA,ICyylTA,aC7vlTA,OAkDA,SCnGA,OACA,OACA,sBCAA,4BAKA,QAJA,OADA,8CAKA,0ICsi1DA,MCrvyDA,KCjsCA,OACA,OACA,OACA,MAEA"} \ No newline at end of file diff -Nru binaryen-91/test/debugInfo.fromasm.map binaryen-99/test/debugInfo.fromasm.map --- binaryen-91/test/debugInfo.fromasm.map 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/debugInfo.fromasm.map 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -{"version":3,"sources":["tests/hello_world.c","tests/other_file.cpp","return.cpp","even-opted.cpp","fib.c","/tmp/emscripten_test_binaryen2_28hnAe/src.c","(unknown)","inline_me.c"],"names":[],"mappings":"mJC8ylTA,QC7vlTA,OAkDA,UCjGA,AADA,EADA,+BCEA,cAKA,QAJA,OADA,0BAKA,sECsi1DA,KCrvyDA,KC5rCA,AALA"} \ No newline at end of file diff -Nru binaryen-91/test/debugInfo.fromasm.no-opts binaryen-99/test/debugInfo.fromasm.no-opts --- binaryen-91/test/debugInfo.fromasm.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/debugInfo.fromasm.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,329 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (global $STACKTOP (mut i32) (i32.const 0)) - (export "add" (func $add)) - (export "ret" (func $ret)) - (export "opts" (func $opts)) - (export "fib" (func $fib)) - (export "switch_reach" (func $switch_reach)) - (export "nofile" (func $nofile)) - (export "inlineInto" (func $inlineInto)) - (func $add (; 0 ;) (param $x i32) (param $y i32) (result i32) - ;;@ tests/hello_world.c:5:0 - (local.set $x - (local.get $x) - ) - ;;@ tests/hello_world.c:6:0 - (local.set $y - (local.get $y) - ) - ;;@ tests/other_file.cpp:314159:0 - (local.set $x - (local.get $y) - ) - (return - (i32.add - (local.get $x) - (local.get $y) - ) - ) - ) - (func $ret (; 1 ;) (param $x i32) (result i32) - ;;@ return.cpp:50:0 - (local.set $x - (i32.shl - (local.get $x) - (i32.const 1) - ) - ) - ;;@ return.cpp:100:0 - (return - (i32.add - (local.get $x) - (i32.const 1) - ) - ) - ) - (func $i32s-rem (; 2 ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (i32.eqz - (local.get $1) - ) - (i32.const 0) - (i32.rem_s - (local.get $0) - (local.get $1) - ) - ) - ) - (func $opts (; 3 ;) (param $x i32) (param $y i32) (result i32) - ;;@ even-opted.cpp:1:0 - (local.set $x - (i32.add - (local.get $x) - (local.get $y) - ) - ) - ;;@ even-opted.cpp:2:0 - (local.set $y - (i32.shr_s - (local.get $y) - (local.get $x) - ) - ) - ;;@ even-opted.cpp:3:0 - (local.set $x - (call $i32s-rem - (local.get $x) - (local.get $y) - ) - ) - (return - (i32.add - (local.get $x) - (local.get $y) - ) - ) - ) - (func $fib (; 4 ;) (param $$0 i32) (result i32) - (local $$$0$lcssa i32) - (local $$$01518 i32) - (local $$$01518$phi i32) - (local $$$01617 i32) - (local $$$019 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$exitcond i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - ;;@ fib.c:3:0 - (local.set $$1 - (i32.gt_s - (local.get $$0) - (i32.const 0) - ) - ) - (if - (local.get $$1) - (block - (local.set $$$01518 - (i32.const 0) - ) - (local.set $$$01617 - (i32.const 0) - ) - (local.set $$$019 - (i32.const 1) - ) - ) - (block - (local.set $$$0$lcssa - (i32.const 1) - ) - ;;@ fib.c:8:0 - (return - (local.get $$$0$lcssa) - ) - ) - ) - (loop $while-in - (block $while-out - ;;@ fib.c:4:0 - (local.set $$2 - (i32.add - (local.get $$$019) - (local.get $$$01518) - ) - ) - ;;@ fib.c:3:0 - (local.set $$3 - (i32.add - (local.get $$$01617) - (i32.const 1) - ) - ) - (local.set $$exitcond - (i32.eq - (local.get $$3) - (local.get $$0) - ) - ) - (if - (local.get $$exitcond) - (block - (local.set $$$0$lcssa - (local.get $$2) - ) - (br $while-out) - ) - (block - (local.set $$$01518$phi - (local.get $$$019) - ) - (local.set $$$01617 - (local.get $$3) - ) - (local.set $$$019 - (local.get $$2) - ) - (local.set $$$01518 - (local.get $$$01518$phi) - ) - ) - ) - (br $while-in) - ) - ) - ;;@ fib.c:8:0 - (return - (local.get $$$0$lcssa) - ) - ) - (func $switch_reach (; 5 ;) (param $$p i32) (result i32) - (local $$0 i32) - (local $$call i32) - (local $$magic i32) - (local $$rc$0 i32) - (local $$switch$split2D i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$magic - (i32.add - (local.get $$p) - (i32.const 52) - ) - ) - (local.set $$0 - (local.get $$magic) - ) - (local.set $$switch$split2D - (i32.lt_s - (local.get $$0) - (i32.const 1369188723) - ) - ) - (if - (local.get $$switch$split2D) - (block $switch - (block $switch-default - (block $switch-case - (br_table $switch-case $switch-default - (i32.sub - (local.get $$0) - (i32.const -1108210269) - ) - ) - ) - (block - (local.set $label - (i32.const 2) - ) - (br $switch) - ) - ) - (local.set $$rc$0 - (i32.const 0) - ) - ) - (block $switch0 - (block $switch-default2 - (block $switch-case1 - (br_table $switch-case1 $switch-default2 - (i32.sub - (local.get $$0) - (i32.const 1369188723) - ) - ) - ) - (block - (local.set $label - (i32.const 2) - ) - (br $switch0) - ) - ) - (local.set $$rc$0 - (i32.const 0) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 2) - ) - (block - (local.set $$call - (call $switch_reach - (local.get $$p) - ) - ) - (local.set $$rc$0 - (local.get $$call) - ) - ) - ) - (drop - (call $switch_reach - (local.get $$p) - ) - ) - ;;@ /tmp/emscripten_test_binaryen2_28hnAe/src.c:59950:0 - (return - (local.get $$rc$0) - ) - ) - (func $nofile (; 6 ;) - ;;@ (unknown):1337:0 - (call $nofile) - ) - (func $inlineMe (; 7 ;) (param $x i32) (param $y i32) (result i32) - ;;@ inline_me.c:120:0 - (local.set $x - (i32.add - (local.get $x) - (local.get $y) - ) - ) - ;;@ inline_me.c:121:0 - (local.set $y - (i32.add - (local.get $x) - (local.get $y) - ) - ) - ;;@ inline_me.c:122:0 - (local.set $x - (i32.add - (local.get $x) - (local.get $y) - ) - ) - ;;@ inline_me.c:123:0 - (return - (local.get $x) - ) - ) - (func $inlineInto (; 8 ;) (param $x i32) (param $y i32) (result i32) - ;;@ inline_me.c:125:0 - (return - (call $inlineMe - (local.get $x) - (local.get $y) - ) - ) - ) -) diff -Nru binaryen-91/test/debugInfo.fromasm.no-opts.map binaryen-99/test/debugInfo.fromasm.no-opts.map --- binaryen-91/test/debugInfo.fromasm.no-opts.map 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/debugInfo.fromasm.no-opts.map 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -{"version":3,"sources":["tests/hello_world.c","tests/other_file.cpp","return.cpp","even-opted.cpp","fib.c","/tmp/emscripten_test_binaryen2_28hnAe/src.c","(unknown)","inline_me.c"],"names":[],"mappings":"gMAIA,IACA,ICyylTA,aC7vlTA,OAkDA,0BCnGA,OACA,OACA,uBCAA,4BAKA,QAJA,OADA,8CAKA,0ICsi1DA,MCrvyDA,KCjsCA,OACA,OACA,OACA,MAEA"} \ No newline at end of file diff -Nru binaryen-91/test/debugInfo.fromasm.read-written binaryen-99/test/debugInfo.fromasm.read-written --- binaryen-91/test/debugInfo.fromasm.read-written 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/debugInfo.fromasm.read-written 1970-01-01 00:00:00.000000000 +0000 @@ -1,196 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (import "env" "memory" (memory $1 256 256)) - (data (global.get $gimport$0) "debugInfo.asm.js") - (import "env" "__memory_base" (global $gimport$0 i32)) - (export "add" (func $add)) - (export "ret" (func $ret)) - (export "opts" (func $opts)) - (export "fib" (func $fib)) - (export "switch_reach" (func $switch_reach)) - (export "nofile" (func $nofile)) - (export "inlineInto" (func $inlineInto)) - (func $add (; 0 ;) (param $0 i32) (param $1 i32) (result i32) - ;;@ tests/other_file.cpp:314159:0 - (i32.add - (local.get $1) - (local.get $1) - ) - ) - (func $ret (; 1 ;) (param $0 i32) (result i32) - ;;@ return.cpp:50:0 - (local.set $0 - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ;;@ return.cpp:100:0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (func $opts (; 2 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - ;;@ even-opted.cpp:3:0 - (i32.add - ;;@ even-opted.cpp:1:0 - (if (result i32) - (local.tee $2 - (local.tee $0 - (i32.shr_s - ;;@ even-opted.cpp:2:0 - (local.get $1) - ;;@ even-opted.cpp:1:0 - (local.tee $1 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - ) - ) - ) - ;;@ even-opted.cpp:3:0 - (i32.rem_s - (local.get $1) - (local.get $2) - ) - (i32.const 0) - ) - (local.get $0) - ) - ) - (func $fib (; 3 ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - ;;@ fib.c:8:0 - (local.set $2 - ;;@ fib.c:3:0 - (if (result i32) - (i32.gt_s - (local.get $0) - (i32.const 0) - ) - (i32.const 1) - (block (result i32) - (local.set $0 - (i32.const 1) - ) - ;;@ fib.c:8:0 - (return - (local.get $0) - ) - ) - ) - ) - (loop $label$3 - ;;@ fib.c:4:0 - (local.set $4 - (i32.add - (local.get $2) - (local.get $3) - ) - ) - ;;@ fib.c:3:0 - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (if - (i32.ne - (local.get $0) - (local.get $1) - ) - (block - (local.set $3 - (local.get $2) - ) - (local.set $2 - (local.get $4) - ) - (br $label$3) - ) - ) - ) - ;;@ fib.c:8:0 - (local.get $4) - ) - (func $switch_reach (; 4 ;) (param $0 i32) (result i32) - (local $1 i32) - (local.set $1 - (block $label$1 (result i32) - (block $label$2 - (if - (i32.lt_s - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 52) - ) - ) - (i32.const 1369188723) - ) - (br_if $label$2 - (i32.eqz - (i32.sub - (local.get $1) - (i32.const -1108210269) - ) - ) - ) - (br_if $label$2 - (i32.eqz - (i32.sub - (local.get $1) - (i32.const 1369188723) - ) - ) - ) - ) - (br $label$1 - (i32.const 0) - ) - ) - (call $switch_reach - (local.get $0) - ) - ) - ) - (drop - (call $switch_reach - (local.get $0) - ) - ) - ;;@ /tmp/emscripten_test_binaryen2_28hnAe/src.c:59950:0 - (local.get $1) - ) - (func $nofile (; 5 ;) - ;;@ (unknown):1337:0 - (call $nofile) - ) - (func $inlineInto (; 6 ;) (param $0 i32) (param $1 i32) (result i32) - ;;@ inline_me.c:120:0 - (i32.add - (local.tee $0 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (i32.add - (local.get $0) - (local.get $1) - ) - ) - ;;@ inline_me.c:125:0 - ) -) - diff -Nru binaryen-91/test/duplicated_names_collision.wasm.fromBinary binaryen-99/test/duplicated_names_collision.wasm.fromBinary --- binaryen-91/test/duplicated_names_collision.wasm.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/duplicated_names_collision.wasm.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,12 +1,12 @@ (module (type $none_=>_i32 (func (result i32))) - (func $foo (; 0 ;) (result i32) + (func $foo (result i32) (i32.const 0) ) - (func $foo.1 (; 1 ;) (result i32) + (func $foo.1 (result i32) (i32.const 1) ) - (func $foo.1.1 (; 2 ;) (result i32) + (func $foo.1.1 (result i32) (i32.const 2) ) ) diff -Nru binaryen-91/test/duplicated_names.wasm.fromBinary binaryen-99/test/duplicated_names.wasm.fromBinary --- binaryen-91/test/duplicated_names.wasm.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/duplicated_names.wasm.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,12 +1,12 @@ (module (type $none_=>_i32 (func (result i32))) - (func $foo (; 0 ;) (result i32) + (func $foo (result i32) (i32.const 0) ) - (func $foo.1 (; 1 ;) (result i32) + (func $foo.1 (result i32) (i32.const 1) ) - (func $foo.2 (; 2 ;) (result i32) + (func $foo.2 (result i32) (i32.const 2) ) ) diff -Nru binaryen-91/test/duplicate_types.wast.fromBinary binaryen-99/test/duplicate_types.wast.fromBinary --- binaryen-91/test/duplicate_types.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/duplicate_types.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,10 +1,10 @@ (module (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (func $f0 (; 0 ;) (param $0 i32) + (func $f0 (param $0 i32) (nop) ) - (func $f1 (; 1 ;) (param $0 i32) (result i32) + (func $f1 (param $0 i32) (result i32) (i32.const 0) ) ) diff -Nru binaryen-91/test/duplicate_types.wast.fromBinary.noDebugInfo binaryen-99/test/duplicate_types.wast.fromBinary.noDebugInfo --- binaryen-91/test/duplicate_types.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/duplicate_types.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -1,10 +1,10 @@ (module (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (func $0 (; 0 ;) (param $0 i32) + (func $0 (param $0 i32) (nop) ) - (func $1 (; 1 ;) (param $0 i32) (result i32) + (func $1 (param $0 i32) (result i32) (i32.const 0) ) ) diff -Nru binaryen-91/test/duplicate_types.wast.from-wast binaryen-99/test/duplicate_types.wast.from-wast --- binaryen-91/test/duplicate_types.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/duplicate_types.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,10 +1,10 @@ (module (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (func $f0 (; 0 ;) (param $0 i32) + (func $f0 (param $0 i32) (nop) ) - (func $f1 (; 1 ;) (param $0 i32) (result i32) + (func $f1 (param $0 i32) (result i32) (i32.const 0) ) ) Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/dylib.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/dylib.wasm differ diff -Nru binaryen-91/test/dylib.wasm.fromBinary binaryen-99/test/dylib.wasm.fromBinary --- binaryen-91/test/dylib.wasm.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/dylib.wasm.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,50 +1,87 @@ (module - (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) + (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "memory" (memory $2 256)) - (data (global.get $gimport$0) "hello, world!") - (import "env" "table" (table $timport$3 0 funcref)) - (import "env" "memoryBase" (global $gimport$0 i32)) - (import "env" "tableBase" (global $gimport$4 i32)) - (import "env" "_puts" (func $fimport$1 (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (import "env" "memory" (memory $mimport$0 0)) + (data (global.get $gimport$0) "*\00\00\00") + (import "env" "__memory_base" (global $gimport$0 i32)) + (import "env" "g$waka_mine" (func $fimport$0 (result i32))) + (import "env" "g$waka_others" (func $fimport$1 (result i32))) + (import "env" "fp$_Z16waka_func_theirsi$ii" (func $fimport$2 (result i32))) + (import "env" "fp$_Z14waka_func_minei$ii" (func $fimport$3 (result i32))) (global $global$0 (mut i32) (i32.const 0)) (global $global$1 (mut i32) (i32.const 0)) - (global $global$2 i32 (i32.const 0)) - (export "__post_instantiate" (func $2)) - (export "_main" (func $0)) - (export "runPostSets" (func $1)) - (export "_str" (global $global$2)) - (func $0 (; 1 ;) (result i32) - (block $label$1 (result i32) - (drop - (call $fimport$1 - (global.get $gimport$0) - ) - ) - (i32.const 0) - ) - ) - (func $1 (; 2 ;) + (global $global$2 (mut i32) (i32.const 0)) + (global $global$3 (mut i32) (i32.const 0)) + (global $global$4 i32 (i32.const 0)) + (global $global$5 i32 (i32.const 0)) + (export "__wasm_apply_relocs" (func $0)) + (export "_Z14waka_func_minei" (func $1)) + (export "__original_main" (func $2)) + (export "waka_mine" (global $global$4)) + (export "main" (func $3)) + (export "__dso_handle" (global $global$5)) + (export "__post_instantiate" (func $4)) + (func $0 (nop) ) - (func $2 (; 3 ;) - (block $label$1 - (global.set $global$0 + (func $1 (param $0 i32) (result i32) + (i32.add + (local.get $0) + (i32.const 1) + ) + ) + (func $2 (result i32) + (i32.add + (i32.load + (global.get $global$3) + ) + (i32.add + (i32.load + (global.get $global$2) + ) (i32.add - (global.get $gimport$0) - (i32.const 16) + (global.get $global$0) + (global.get $global$1) ) ) - (global.set $global$1 + ) + ) + (func $3 (param $0 i32) (param $1 i32) (result i32) + (i32.add + (i32.load + (global.get $global$3) + ) + (i32.add + (i32.load + (global.get $global$2) + ) (i32.add (global.get $global$0) - (i32.const 5242880) + (global.get $global$1) ) ) - (call $1) ) ) - ;; custom section "dylink", size 5 + (func $4 + (global.set $global$2 + (call $fimport$0) + ) + (global.set $global$3 + (call $fimport$1) + ) + (global.set $global$0 + (call $fimport$2) + ) + (global.set $global$1 + (call $fimport$3) + ) + ) + ;; dylink section + ;; memorysize: 4 + ;; memoryalignment: 2 + ;; tablesize: 0 + ;; tablealignment: 0 ) diff -Nru binaryen-91/test/dynamicLibrary.asm.js binaryen-99/test/dynamicLibrary.asm.js --- binaryen-91/test/dynamicLibrary.asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/dynamicLibrary.asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,136 +0,0 @@ -Module["asm"] = (function(global, env, buffer) { - 'almost asm'; - - - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - - - var DYNAMICTOP_PTR=env.DYNAMICTOP_PTR|0; - var tempDoublePtr=env.tempDoublePtr|0; - var ABORT=env.ABORT|0; - var memoryBase=env.memoryBase|0; - var tableBase=env.tableBase|0; - - var STACKTOP = 0, STACK_MAX = 0; - - var __THREW__ = 0; - var threwValue = 0; - var setjmpId = 0; - var undef = 0; - var nan = global.NaN, inf = global.Infinity; - var tempInt = 0, tempBigInt = 0, tempBigIntP = 0, tempBigIntS = 0, tempBigIntR = 0.0, tempBigIntI = 0, tempBigIntD = 0, tempValue = 0, tempDouble = 0.0; - var tempRet0 = 0; - - var Math_floor=global.Math.floor; - var Math_abs=global.Math.abs; - var Math_sqrt=global.Math.sqrt; - var Math_pow=global.Math.pow; - var Math_cos=global.Math.cos; - var Math_sin=global.Math.sin; - var Math_tan=global.Math.tan; - var Math_acos=global.Math.acos; - var Math_asin=global.Math.asin; - var Math_atan=global.Math.atan; - var Math_atan2=global.Math.atan2; - var Math_exp=global.Math.exp; - var Math_log=global.Math.log; - var Math_ceil=global.Math.ceil; - var Math_imul=global.Math.imul; - var Math_min=global.Math.min; - var Math_max=global.Math.max; - var Math_clz32=global.Math.clz32; - var Math_fround=global.Math.fround; - var abort=env.abort; - var assert=env.assert; - var enlargeMemory=env.enlargeMemory; - var getTotalMemory=env.getTotalMemory; - var abortOnCannotGrowMemory=env.abortOnCannotGrowMemory; - var abortStackOverflow=env.abortStackOverflow; - var setTempRet0=env.setTempRet0; - var getTempRet0=env.getTempRet0; - var _puts=env._puts; - var tempFloat = Math_fround(0); - const f0 = Math_fround(0); - -// EMSCRIPTEN_START_FUNCS - -function stackAlloc(size) { - size = size|0; - var ret = 0; - ret = STACKTOP; - STACKTOP = (STACKTOP + size)|0; - STACKTOP = (STACKTOP + 15)&-16; - if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(size|0); - - return ret|0; -} -function stackSave() { - return STACKTOP|0; -} -function stackRestore(top) { - top = top|0; - STACKTOP = top; -} -function establishStackSpace(stackBase, stackMax) { - stackBase = stackBase|0; - stackMax = stackMax|0; - STACKTOP = stackBase; - STACK_MAX = stackMax; -} - -function setThrew(threw, value) { - threw = threw|0; - value = value|0; - if ((__THREW__|0) == 0) { - __THREW__ = threw; - threwValue = value; - } -} - -function ___cxx_global_var_init() { - var label = 0, sp = 0; - sp = STACKTOP; - __ZN3FooC2Ev((memoryBase + (5242912) | 0)); - return; -} -function __ZN3FooC2Ev($0) { - $0 = $0|0; - var $1 = 0, label = 0, sp = 0; - sp = STACKTOP; - STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abortStackOverflow(16|0); - $1 = $0; - (_puts(((memoryBase + (0) | 0)|0))|0); - STACKTOP = sp;return; -} -function __GLOBAL__sub_I_liblib_cpp() { - var label = 0, sp = 0; - sp = STACKTOP; - ___cxx_global_var_init(); - return; -} -function runPostSets() { - var temp = 0; -} -function __post_instantiate() { - STACKTOP = (memoryBase + (32) | 0); - STACK_MAX = STACKTOP + 5242880 | 0; - runPostSets(); - __GLOBAL__sub_I_liblib_cpp(); -} - - - - -// EMSCRIPTEN_END_FUNCS - - - return { __ZN3FooC2Ev: __ZN3FooC2Ev, __post_instantiate: __post_instantiate, runPostSets: runPostSets, _global: 5242912 }; -}) -; \ No newline at end of file diff -Nru binaryen-91/test/dynamicLibrary.fromasm binaryen-99/test/dynamicLibrary.fromasm --- binaryen-91/test/dynamicLibrary.fromasm 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/dynamicLibrary.fromasm 1970-01-01 00:00:00.000000000 +0000 @@ -1,69 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "dynamicLibrary.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "memoryBase" (global $memoryBase$asm2wasm$import i32)) - (import "env" "abortStackOverflow" (func $abortStackOverflow (param i32))) - (import "env" "_puts" (func $_puts (param i32) (result i32))) - (global $STACKTOP (mut i32) (i32.const 0)) - (global $STACK_MAX (mut i32) (i32.const 0)) - (global $_global i32 (i32.const 5242912)) - (export "__ZN3FooC2Ev" (func $__ZN3FooC2Ev)) - (export "__post_instantiate" (func $__post_instantiate)) - (export "runPostSets" (func $runPostSets)) - (export "_global" (global $_global)) - (func $__ZN3FooC2Ev (; 2 ;) (; has Stack IR ;) (param $0 i32) - (local.set $0 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abortStackOverflow - (i32.const 16) - ) - ) - (drop - (call $_puts - (global.get $memoryBase$asm2wasm$import) - ) - ) - (global.set $STACKTOP - (local.get $0) - ) - ) - (func $runPostSets (; 3 ;) (; has Stack IR ;) - (nop) - ) - (func $__post_instantiate (; 4 ;) (; has Stack IR ;) - (global.set $STACKTOP - (i32.add - (global.get $memoryBase$asm2wasm$import) - (i32.const 32) - ) - ) - (global.set $STACK_MAX - (i32.add - (global.get $STACKTOP) - (i32.const 5242880) - ) - ) - (call $__ZN3FooC2Ev - (i32.add - (global.get $memoryBase$asm2wasm$import) - (i32.const 5242912) - ) - ) - ) -) diff -Nru binaryen-91/test/dynamicLibrary.fromasm.clamp binaryen-99/test/dynamicLibrary.fromasm.clamp --- binaryen-91/test/dynamicLibrary.fromasm.clamp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/dynamicLibrary.fromasm.clamp 1970-01-01 00:00:00.000000000 +0000 @@ -1,69 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "dynamicLibrary.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "memoryBase" (global $memoryBase$asm2wasm$import i32)) - (import "env" "abortStackOverflow" (func $abortStackOverflow (param i32))) - (import "env" "_puts" (func $_puts (param i32) (result i32))) - (global $STACKTOP (mut i32) (i32.const 0)) - (global $STACK_MAX (mut i32) (i32.const 0)) - (global $_global i32 (i32.const 5242912)) - (export "__ZN3FooC2Ev" (func $__ZN3FooC2Ev)) - (export "__post_instantiate" (func $__post_instantiate)) - (export "runPostSets" (func $runPostSets)) - (export "_global" (global $_global)) - (func $__ZN3FooC2Ev (; 2 ;) (; has Stack IR ;) (param $0 i32) - (local.set $0 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abortStackOverflow - (i32.const 16) - ) - ) - (drop - (call $_puts - (global.get $memoryBase$asm2wasm$import) - ) - ) - (global.set $STACKTOP - (local.get $0) - ) - ) - (func $runPostSets (; 3 ;) (; has Stack IR ;) - (nop) - ) - (func $__post_instantiate (; 4 ;) (; has Stack IR ;) - (global.set $STACKTOP - (i32.add - (global.get $memoryBase$asm2wasm$import) - (i32.const 32) - ) - ) - (global.set $STACK_MAX - (i32.add - (global.get $STACKTOP) - (i32.const 5242880) - ) - ) - (call $__ZN3FooC2Ev - (i32.add - (global.get $memoryBase$asm2wasm$import) - (i32.const 5242912) - ) - ) - ) -) diff -Nru binaryen-91/test/dynamicLibrary.fromasm.clamp.no-opts binaryen-99/test/dynamicLibrary.fromasm.clamp.no-opts --- binaryen-91/test/dynamicLibrary.fromasm.clamp.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/dynamicLibrary.fromasm.clamp.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,198 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "DYNAMICTOP_PTR" (global $DYNAMICTOP_PTR$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) - (import "env" "ABORT" (global $ABORT$asm2wasm$import i32)) - (import "env" "memoryBase" (global $memoryBase$asm2wasm$import i32)) - (import "env" "tableBase" (global $tableBase$asm2wasm$import i32)) - (import "global" "NaN" (global $nan$asm2wasm$import f64)) - (import "global" "Infinity" (global $inf$asm2wasm$import f64)) - (import "env" "abortStackOverflow" (func $abortStackOverflow (param i32))) - (import "env" "_puts" (func $_puts (param i32) (result i32))) - (global $DYNAMICTOP_PTR (mut i32) (global.get $DYNAMICTOP_PTR$asm2wasm$import)) - (global $tempDoublePtr (mut i32) (global.get $tempDoublePtr$asm2wasm$import)) - (global $ABORT (mut i32) (global.get $ABORT$asm2wasm$import)) - (global $memoryBase (mut i32) (global.get $memoryBase$asm2wasm$import)) - (global $tableBase (mut i32) (global.get $tableBase$asm2wasm$import)) - (global $STACKTOP (mut i32) (i32.const 0)) - (global $STACK_MAX (mut i32) (i32.const 0)) - (global $__THREW__ (mut i32) (i32.const 0)) - (global $threwValue (mut i32) (i32.const 0)) - (global $setjmpId (mut i32) (i32.const 0)) - (global $undef (mut i32) (i32.const 0)) - (global $nan (mut f64) (global.get $nan$asm2wasm$import)) - (global $inf (mut f64) (global.get $inf$asm2wasm$import)) - (global $tempInt (mut i32) (i32.const 0)) - (global $tempBigInt (mut i32) (i32.const 0)) - (global $tempBigIntP (mut i32) (i32.const 0)) - (global $tempBigIntS (mut i32) (i32.const 0)) - (global $tempBigIntR (mut f64) (f64.const 0)) - (global $tempBigIntI (mut i32) (i32.const 0)) - (global $tempBigIntD (mut i32) (i32.const 0)) - (global $tempValue (mut i32) (i32.const 0)) - (global $tempDouble (mut f64) (f64.const 0)) - (global $tempRet0 (mut i32) (i32.const 0)) - (global $tempFloat (mut f32) (f32.const 0)) - (global $f0 (mut f32) (f32.const 0)) - (global $_global i32 (i32.const 5242912)) - (export "__ZN3FooC2Ev" (func $__ZN3FooC2Ev)) - (export "__post_instantiate" (func $__post_instantiate)) - (export "runPostSets" (func $runPostSets)) - (export "_global" (global $_global)) - (func $stackAlloc (; 2 ;) (param $size i32) (result i32) - (local $ret i32) - (local.set $ret - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (local.get $size) - ) - ) - (global.set $STACKTOP - (i32.and - (i32.add - (global.get $STACKTOP) - (i32.const 15) - ) - (i32.const -16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abortStackOverflow - (local.get $size) - ) - ) - (return - (local.get $ret) - ) - ) - (func $stackSave (; 3 ;) (result i32) - (return - (global.get $STACKTOP) - ) - ) - (func $stackRestore (; 4 ;) (param $top i32) - (global.set $STACKTOP - (local.get $top) - ) - ) - (func $establishStackSpace (; 5 ;) (param $stackBase i32) (param $stackMax i32) - (global.set $STACKTOP - (local.get $stackBase) - ) - (global.set $STACK_MAX - (local.get $stackMax) - ) - ) - (func $setThrew (; 6 ;) (param $threw i32) (param $value i32) - (if - (i32.eq - (global.get $__THREW__) - (i32.const 0) - ) - (block - (global.set $__THREW__ - (local.get $threw) - ) - (global.set $threwValue - (local.get $value) - ) - ) - ) - ) - (func $___cxx_global_var_init (; 7 ;) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (call $__ZN3FooC2Ev - (i32.add - (global.get $memoryBase) - (i32.const 5242912) - ) - ) - (return) - ) - (func $__ZN3FooC2Ev (; 8 ;) (param $$0 i32) - (local $$1 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abortStackOverflow - (i32.const 16) - ) - ) - (local.set $$1 - (local.get $$0) - ) - (drop - (call $_puts - (i32.add - (global.get $memoryBase) - (i32.const 0) - ) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return) - ) - (func $__GLOBAL__sub_I_liblib_cpp (; 9 ;) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (call $___cxx_global_var_init) - (return) - ) - (func $runPostSets (; 10 ;) - (local $temp i32) - (nop) - ) - (func $__post_instantiate (; 11 ;) - (global.set $STACKTOP - (i32.add - (global.get $memoryBase) - (i32.const 32) - ) - ) - (global.set $STACK_MAX - (i32.add - (global.get $STACKTOP) - (i32.const 5242880) - ) - ) - (call $runPostSets) - (call $__GLOBAL__sub_I_liblib_cpp) - ) -) diff -Nru binaryen-91/test/dynamicLibrary.fromasm.imprecise binaryen-99/test/dynamicLibrary.fromasm.imprecise --- binaryen-91/test/dynamicLibrary.fromasm.imprecise 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/dynamicLibrary.fromasm.imprecise 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "memoryBase" (global $memoryBase$asm2wasm$import i32)) - (import "env" "abortStackOverflow" (func $abortStackOverflow (param i32))) - (import "env" "_puts" (func $_puts (param i32) (result i32))) - (global $STACKTOP (mut i32) (i32.const 0)) - (global $STACK_MAX (mut i32) (i32.const 0)) - (global $_global i32 (i32.const 5242912)) - (export "__ZN3FooC2Ev" (func $__ZN3FooC2Ev)) - (export "__post_instantiate" (func $__post_instantiate)) - (export "runPostSets" (func $runPostSets)) - (export "_global" (global $_global)) - (func $__ZN3FooC2Ev (; 2 ;) (; has Stack IR ;) (param $0 i32) - (local.set $0 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abortStackOverflow - (i32.const 16) - ) - ) - (drop - (call $_puts - (global.get $memoryBase$asm2wasm$import) - ) - ) - (global.set $STACKTOP - (local.get $0) - ) - ) - (func $runPostSets (; 3 ;) (; has Stack IR ;) - (nop) - ) - (func $__post_instantiate (; 4 ;) (; has Stack IR ;) - (global.set $STACKTOP - (i32.add - (global.get $memoryBase$asm2wasm$import) - (i32.const 32) - ) - ) - (global.set $STACK_MAX - (i32.add - (global.get $STACKTOP) - (i32.const 5242880) - ) - ) - (call $__ZN3FooC2Ev - (i32.add - (global.get $memoryBase$asm2wasm$import) - (i32.const 5242912) - ) - ) - ) -) diff -Nru binaryen-91/test/dynamicLibrary.fromasm.imprecise.no-opts binaryen-99/test/dynamicLibrary.fromasm.imprecise.no-opts --- binaryen-91/test/dynamicLibrary.fromasm.imprecise.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/dynamicLibrary.fromasm.imprecise.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,198 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "DYNAMICTOP_PTR" (global $DYNAMICTOP_PTR$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) - (import "env" "ABORT" (global $ABORT$asm2wasm$import i32)) - (import "env" "memoryBase" (global $memoryBase$asm2wasm$import i32)) - (import "env" "tableBase" (global $tableBase$asm2wasm$import i32)) - (import "global" "NaN" (global $nan$asm2wasm$import f64)) - (import "global" "Infinity" (global $inf$asm2wasm$import f64)) - (import "env" "abortStackOverflow" (func $abortStackOverflow (param i32))) - (import "env" "_puts" (func $_puts (param i32) (result i32))) - (global $DYNAMICTOP_PTR (mut i32) (global.get $DYNAMICTOP_PTR$asm2wasm$import)) - (global $tempDoublePtr (mut i32) (global.get $tempDoublePtr$asm2wasm$import)) - (global $ABORT (mut i32) (global.get $ABORT$asm2wasm$import)) - (global $memoryBase (mut i32) (global.get $memoryBase$asm2wasm$import)) - (global $tableBase (mut i32) (global.get $tableBase$asm2wasm$import)) - (global $STACKTOP (mut i32) (i32.const 0)) - (global $STACK_MAX (mut i32) (i32.const 0)) - (global $__THREW__ (mut i32) (i32.const 0)) - (global $threwValue (mut i32) (i32.const 0)) - (global $setjmpId (mut i32) (i32.const 0)) - (global $undef (mut i32) (i32.const 0)) - (global $nan (mut f64) (global.get $nan$asm2wasm$import)) - (global $inf (mut f64) (global.get $inf$asm2wasm$import)) - (global $tempInt (mut i32) (i32.const 0)) - (global $tempBigInt (mut i32) (i32.const 0)) - (global $tempBigIntP (mut i32) (i32.const 0)) - (global $tempBigIntS (mut i32) (i32.const 0)) - (global $tempBigIntR (mut f64) (f64.const 0)) - (global $tempBigIntI (mut i32) (i32.const 0)) - (global $tempBigIntD (mut i32) (i32.const 0)) - (global $tempValue (mut i32) (i32.const 0)) - (global $tempDouble (mut f64) (f64.const 0)) - (global $tempRet0 (mut i32) (i32.const 0)) - (global $tempFloat (mut f32) (f32.const 0)) - (global $f0 (mut f32) (f32.const 0)) - (global $_global i32 (i32.const 5242912)) - (export "__ZN3FooC2Ev" (func $__ZN3FooC2Ev)) - (export "__post_instantiate" (func $__post_instantiate)) - (export "runPostSets" (func $runPostSets)) - (export "_global" (global $_global)) - (func $stackAlloc (; 2 ;) (param $size i32) (result i32) - (local $ret i32) - (local.set $ret - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (local.get $size) - ) - ) - (global.set $STACKTOP - (i32.and - (i32.add - (global.get $STACKTOP) - (i32.const 15) - ) - (i32.const -16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abortStackOverflow - (local.get $size) - ) - ) - (return - (local.get $ret) - ) - ) - (func $stackSave (; 3 ;) (result i32) - (return - (global.get $STACKTOP) - ) - ) - (func $stackRestore (; 4 ;) (param $top i32) - (global.set $STACKTOP - (local.get $top) - ) - ) - (func $establishStackSpace (; 5 ;) (param $stackBase i32) (param $stackMax i32) - (global.set $STACKTOP - (local.get $stackBase) - ) - (global.set $STACK_MAX - (local.get $stackMax) - ) - ) - (func $setThrew (; 6 ;) (param $threw i32) (param $value i32) - (if - (i32.eq - (global.get $__THREW__) - (i32.const 0) - ) - (block - (global.set $__THREW__ - (local.get $threw) - ) - (global.set $threwValue - (local.get $value) - ) - ) - ) - ) - (func $___cxx_global_var_init (; 7 ;) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (call $__ZN3FooC2Ev - (i32.add - (global.get $memoryBase) - (i32.const 5242912) - ) - ) - (return) - ) - (func $__ZN3FooC2Ev (; 8 ;) (param $$0 i32) - (local $$1 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abortStackOverflow - (i32.const 16) - ) - ) - (local.set $$1 - (local.get $$0) - ) - (drop - (call $_puts - (i32.add - (global.get $memoryBase) - (i32.const 0) - ) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return) - ) - (func $__GLOBAL__sub_I_liblib_cpp (; 9 ;) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (call $___cxx_global_var_init) - (return) - ) - (func $runPostSets (; 10 ;) - (local $temp i32) - (nop) - ) - (func $__post_instantiate (; 11 ;) - (global.set $STACKTOP - (i32.add - (global.get $memoryBase) - (i32.const 32) - ) - ) - (global.set $STACK_MAX - (i32.add - (global.get $STACKTOP) - (i32.const 5242880) - ) - ) - (call $runPostSets) - (call $__GLOBAL__sub_I_liblib_cpp) - ) -) diff -Nru binaryen-91/test/dynamicLibrary.fromasm.no-opts binaryen-99/test/dynamicLibrary.fromasm.no-opts --- binaryen-91/test/dynamicLibrary.fromasm.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/dynamicLibrary.fromasm.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,198 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "DYNAMICTOP_PTR" (global $DYNAMICTOP_PTR$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) - (import "env" "ABORT" (global $ABORT$asm2wasm$import i32)) - (import "env" "memoryBase" (global $memoryBase$asm2wasm$import i32)) - (import "env" "tableBase" (global $tableBase$asm2wasm$import i32)) - (import "global" "NaN" (global $nan$asm2wasm$import f64)) - (import "global" "Infinity" (global $inf$asm2wasm$import f64)) - (import "env" "abortStackOverflow" (func $abortStackOverflow (param i32))) - (import "env" "_puts" (func $_puts (param i32) (result i32))) - (global $DYNAMICTOP_PTR (mut i32) (global.get $DYNAMICTOP_PTR$asm2wasm$import)) - (global $tempDoublePtr (mut i32) (global.get $tempDoublePtr$asm2wasm$import)) - (global $ABORT (mut i32) (global.get $ABORT$asm2wasm$import)) - (global $memoryBase (mut i32) (global.get $memoryBase$asm2wasm$import)) - (global $tableBase (mut i32) (global.get $tableBase$asm2wasm$import)) - (global $STACKTOP (mut i32) (i32.const 0)) - (global $STACK_MAX (mut i32) (i32.const 0)) - (global $__THREW__ (mut i32) (i32.const 0)) - (global $threwValue (mut i32) (i32.const 0)) - (global $setjmpId (mut i32) (i32.const 0)) - (global $undef (mut i32) (i32.const 0)) - (global $nan (mut f64) (global.get $nan$asm2wasm$import)) - (global $inf (mut f64) (global.get $inf$asm2wasm$import)) - (global $tempInt (mut i32) (i32.const 0)) - (global $tempBigInt (mut i32) (i32.const 0)) - (global $tempBigIntP (mut i32) (i32.const 0)) - (global $tempBigIntS (mut i32) (i32.const 0)) - (global $tempBigIntR (mut f64) (f64.const 0)) - (global $tempBigIntI (mut i32) (i32.const 0)) - (global $tempBigIntD (mut i32) (i32.const 0)) - (global $tempValue (mut i32) (i32.const 0)) - (global $tempDouble (mut f64) (f64.const 0)) - (global $tempRet0 (mut i32) (i32.const 0)) - (global $tempFloat (mut f32) (f32.const 0)) - (global $f0 (mut f32) (f32.const 0)) - (global $_global i32 (i32.const 5242912)) - (export "__ZN3FooC2Ev" (func $__ZN3FooC2Ev)) - (export "__post_instantiate" (func $__post_instantiate)) - (export "runPostSets" (func $runPostSets)) - (export "_global" (global $_global)) - (func $stackAlloc (; 2 ;) (param $size i32) (result i32) - (local $ret i32) - (local.set $ret - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (local.get $size) - ) - ) - (global.set $STACKTOP - (i32.and - (i32.add - (global.get $STACKTOP) - (i32.const 15) - ) - (i32.const -16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abortStackOverflow - (local.get $size) - ) - ) - (return - (local.get $ret) - ) - ) - (func $stackSave (; 3 ;) (result i32) - (return - (global.get $STACKTOP) - ) - ) - (func $stackRestore (; 4 ;) (param $top i32) - (global.set $STACKTOP - (local.get $top) - ) - ) - (func $establishStackSpace (; 5 ;) (param $stackBase i32) (param $stackMax i32) - (global.set $STACKTOP - (local.get $stackBase) - ) - (global.set $STACK_MAX - (local.get $stackMax) - ) - ) - (func $setThrew (; 6 ;) (param $threw i32) (param $value i32) - (if - (i32.eq - (global.get $__THREW__) - (i32.const 0) - ) - (block - (global.set $__THREW__ - (local.get $threw) - ) - (global.set $threwValue - (local.get $value) - ) - ) - ) - ) - (func $___cxx_global_var_init (; 7 ;) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (call $__ZN3FooC2Ev - (i32.add - (global.get $memoryBase) - (i32.const 5242912) - ) - ) - (return) - ) - (func $__ZN3FooC2Ev (; 8 ;) (param $$0 i32) - (local $$1 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abortStackOverflow - (i32.const 16) - ) - ) - (local.set $$1 - (local.get $$0) - ) - (drop - (call $_puts - (i32.add - (global.get $memoryBase) - (i32.const 0) - ) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return) - ) - (func $__GLOBAL__sub_I_liblib_cpp (; 9 ;) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (call $___cxx_global_var_init) - (return) - ) - (func $runPostSets (; 10 ;) - (local $temp i32) - (nop) - ) - (func $__post_instantiate (; 11 ;) - (global.set $STACKTOP - (i32.add - (global.get $memoryBase) - (i32.const 32) - ) - ) - (global.set $STACK_MAX - (i32.add - (global.get $STACKTOP) - (i32.const 5242880) - ) - ) - (call $runPostSets) - (call $__GLOBAL__sub_I_liblib_cpp) - ) -) diff -Nru binaryen-91/test/elided-br.wasm.fromBinary binaryen-99/test/elided-br.wasm.fromBinary --- binaryen-91/test/elided-br.wasm.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/elided-br.wasm.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ (module (type $none_=>_none (func)) - (func $0 (; 0 ;) + (func $0 (block $label$1 (unreachable) ) diff -Nru binaryen-91/test/emcc_hello_world.asm.js binaryen-99/test/emcc_hello_world.asm.js --- binaryen-91/test/emcc_hello_world.asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/emcc_hello_world.asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,7101 +0,0 @@ -Module["asm"] = (function(global, env, buffer) { - 'almost asm'; - - - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - - - var STACKTOP=env.STACKTOP|0; - var STACK_MAX=env.STACK_MAX|0; - var tempDoublePtr=env.tempDoublePtr|0; - var ABORT=env.ABORT|0; - var cttz_i8=env.cttz_i8|0; - - var __THREW__ = 0; - var threwValue = 0; - var setjmpId = 0; - var undef = 0; - var nan = global.NaN, inf = global.Infinity; - var tempInt = 0, tempBigInt = 0, tempBigIntP = 0, tempBigIntS = 0, tempBigIntR = 0.0, tempBigIntI = 0, tempBigIntD = 0, tempValue = 0, tempDouble = 0.0; - - var tempRet0 = 0; - var tempRet1 = 0; - var tempRet2 = 0; - var tempRet3 = 0; - var tempRet4 = 0; - var tempRet5 = 0; - var tempRet6 = 0; - var tempRet7 = 0; - var tempRet8 = 0; - var tempRet9 = 0; - var Math_floor=global.Math.floor; - var Math_abs=global.Math.abs; - var Math_sqrt=global.Math.sqrt; - var Math_pow=global.Math.pow; - var Math_cos=global.Math.cos; - var Math_sin=global.Math.sin; - var Math_tan=global.Math.tan; - var Math_acos=global.Math.acos; - var Math_asin=global.Math.asin; - var Math_atan=global.Math.atan; - var Math_atan2=global.Math.atan2; - var Math_exp=global.Math.exp; - var Math_log=global.Math.log; - var Math_ceil=global.Math.ceil; - var Math_imul=global.Math.imul; - var Math_min=global.Math.min; - var Math_clz32=global.Math.clz32; - var abort=env.abort; - var assert=env.assert; - var nullFunc_ii=env.nullFunc_ii; - var nullFunc_iiii=env.nullFunc_iiii; - var nullFunc_vi=env.nullFunc_vi; - var invoke_ii=env.invoke_ii; - var invoke_iiii=env.invoke_iiii; - var invoke_vi=env.invoke_vi; - var _pthread_cleanup_pop=env._pthread_cleanup_pop; - var ___lock=env.___lock; - var _emscripten_set_main_loop=env._emscripten_set_main_loop; - var _pthread_self=env._pthread_self; - var _abort=env._abort; - var _emscripten_set_main_loop_timing=env._emscripten_set_main_loop_timing; - var ___syscall6=env.___syscall6; - var _sbrk=env._sbrk; - var _time=env._time; - var ___setErrNo=env.___setErrNo; - var _emscripten_memcpy_big=env._emscripten_memcpy_big; - var ___syscall54=env.___syscall54; - var ___unlock=env.___unlock; - var ___syscall140=env.___syscall140; - var _pthread_cleanup_push=env._pthread_cleanup_push; - var _sysconf=env._sysconf; - var ___syscall146=env.___syscall146; - var _llvm_cttz_i32=env._llvm_cttz_i32; - var tempFloat = 0.0; - -// EMSCRIPTEN_START_FUNCS -function stackAlloc(size) { - size = size|0; - var ret = 0; - ret = STACKTOP; - STACKTOP = (STACKTOP + size)|0; - STACKTOP = (STACKTOP + 15)&-16; -if ((STACKTOP|0) >= (STACK_MAX|0)) abort(); - - return ret|0; -} -function stackSave() { - return STACKTOP|0; -} -function stackRestore(top) { - top = top|0; - STACKTOP = top; -} -function establishStackSpace(stackBase, stackMax) { - stackBase = stackBase|0; - stackMax = stackMax|0; - STACKTOP = stackBase; - STACK_MAX = stackMax; -} - -function setThrew(threw, value) { - threw = threw|0; - value = value|0; - if ((__THREW__|0) == 0) { - __THREW__ = threw; - threwValue = value; - } -} -function copyTempFloat(ptr) { - ptr = ptr|0; - HEAP8[tempDoublePtr>>0] = HEAP8[ptr>>0]; - HEAP8[tempDoublePtr+1>>0] = HEAP8[ptr+1>>0]; - HEAP8[tempDoublePtr+2>>0] = HEAP8[ptr+2>>0]; - HEAP8[tempDoublePtr+3>>0] = HEAP8[ptr+3>>0]; -} -function copyTempDouble(ptr) { - ptr = ptr|0; - HEAP8[tempDoublePtr>>0] = HEAP8[ptr>>0]; - HEAP8[tempDoublePtr+1>>0] = HEAP8[ptr+1>>0]; - HEAP8[tempDoublePtr+2>>0] = HEAP8[ptr+2>>0]; - HEAP8[tempDoublePtr+3>>0] = HEAP8[ptr+3>>0]; - HEAP8[tempDoublePtr+4>>0] = HEAP8[ptr+4>>0]; - HEAP8[tempDoublePtr+5>>0] = HEAP8[ptr+5>>0]; - HEAP8[tempDoublePtr+6>>0] = HEAP8[ptr+6>>0]; - HEAP8[tempDoublePtr+7>>0] = HEAP8[ptr+7>>0]; -} - -function setTempRet0(value) { - value = value|0; - tempRet0 = value; -} -function getTempRet0() { - return tempRet0|0; -} - -function _main() { - var $retval = 0, $vararg_buffer = 0, label = 0, sp = 0; - sp = STACKTOP; - STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abort(); - $vararg_buffer = sp; - $retval = 0; - (_printf(672,$vararg_buffer)|0); - STACKTOP = sp;return 0; -} -function _frexp($x,$e) { - $x = +$x; - $e = $e|0; - var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0.0, $call = 0.0, $conv = 0, $mul = 0.0, $retval$0 = 0.0, $storemerge = 0, $sub = 0, $sub8 = 0, $tobool1 = 0, $x$addr$0 = 0.0, label = 0, sp = 0; - sp = STACKTOP; - HEAPF64[tempDoublePtr>>3] = $x;$0 = HEAP32[tempDoublePtr>>2]|0; - $1 = HEAP32[tempDoublePtr+4>>2]|0; - $2 = (_bitshift64Lshr(($0|0),($1|0),52)|0); - $3 = tempRet0; - $conv = $2 & 2047; - switch ($conv|0) { - case 0: { - $tobool1 = $x != 0.0; - if ($tobool1) { - $mul = $x * 1.8446744073709552E+19; - $call = (+_frexp($mul,$e)); - $4 = HEAP32[$e>>2]|0; - $sub = (($4) + -64)|0; - $storemerge = $sub;$x$addr$0 = $call; - } else { - $storemerge = 0;$x$addr$0 = $x; - } - HEAP32[$e>>2] = $storemerge; - $retval$0 = $x$addr$0; - break; - } - case 2047: { - $retval$0 = $x; - break; - } - default: { - $sub8 = (($conv) + -1022)|0; - HEAP32[$e>>2] = $sub8; - $5 = $1 & -2146435073; - $6 = $5 | 1071644672; - HEAP32[tempDoublePtr>>2] = $0;HEAP32[tempDoublePtr+4>>2] = $6;$7 = +HEAPF64[tempDoublePtr>>3]; - $retval$0 = $7; - } - } - return (+$retval$0); -} -function _frexpl($x,$e) { - $x = +$x; - $e = $e|0; - var $call = 0.0, label = 0, sp = 0; - sp = STACKTOP; - $call = (+_frexp($x,$e)); - return (+$call); -} -function _strerror($e) { - $e = $e|0; - var $0 = 0, $1 = 0, $arrayidx = 0, $cmp = 0, $conv = 0, $dec = 0, $i$012 = 0, $i$012$lcssa = 0, $i$111 = 0, $inc = 0, $incdec$ptr = 0, $incdec$ptr$lcssa = 0, $s$0$lcssa = 0, $s$010 = 0, $s$1 = 0, $tobool = 0, $tobool5 = 0, $tobool5$9 = 0, $tobool8 = 0, label = 0; - var sp = 0; - sp = STACKTOP; - $i$012 = 0; - while(1) { - $arrayidx = (687 + ($i$012)|0); - $0 = HEAP8[$arrayidx>>0]|0; - $conv = $0&255; - $cmp = ($conv|0)==($e|0); - if ($cmp) { - $i$012$lcssa = $i$012; - label = 2; - break; - } - $inc = (($i$012) + 1)|0; - $tobool = ($inc|0)==(87); - if ($tobool) { - $i$111 = 87;$s$010 = 775; - label = 5; - break; - } else { - $i$012 = $inc; - } - } - if ((label|0) == 2) { - $tobool5$9 = ($i$012$lcssa|0)==(0); - if ($tobool5$9) { - $s$0$lcssa = 775; - } else { - $i$111 = $i$012$lcssa;$s$010 = 775; - label = 5; - } - } - if ((label|0) == 5) { - while(1) { - label = 0; - $s$1 = $s$010; - while(1) { - $1 = HEAP8[$s$1>>0]|0; - $tobool8 = ($1<<24>>24)==(0); - $incdec$ptr = ((($s$1)) + 1|0); - if ($tobool8) { - $incdec$ptr$lcssa = $incdec$ptr; - break; - } else { - $s$1 = $incdec$ptr; - } - } - $dec = (($i$111) + -1)|0; - $tobool5 = ($dec|0)==(0); - if ($tobool5) { - $s$0$lcssa = $incdec$ptr$lcssa; - break; - } else { - $i$111 = $dec;$s$010 = $incdec$ptr$lcssa; - label = 5; - } - } - } - return ($s$0$lcssa|0); -} -function ___errno_location() { - var $0 = 0, $1 = 0, $call$i = 0, $errno_ptr = 0, $retval$0 = 0, $tobool = 0, label = 0, sp = 0; - sp = STACKTOP; - $0 = HEAP32[4]|0; - $tobool = ($0|0)==(0|0); - if ($tobool) { - $retval$0 = 60; - } else { - $call$i = (_pthread_self()|0); - $errno_ptr = ((($call$i)) + 60|0); - $1 = HEAP32[$errno_ptr>>2]|0; - $retval$0 = $1; - } - return ($retval$0|0); -} -function ___stdio_close($f) { - $f = $f|0; - var $0 = 0, $call = 0, $call1 = 0, $fd = 0, $vararg_buffer = 0, label = 0, sp = 0; - sp = STACKTOP; - STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abort(); - $vararg_buffer = sp; - $fd = ((($f)) + 60|0); - $0 = HEAP32[$fd>>2]|0; - HEAP32[$vararg_buffer>>2] = $0; - $call = (___syscall6(6,($vararg_buffer|0))|0); - $call1 = (___syscall_ret($call)|0); - STACKTOP = sp;return ($call1|0); -} -function ___stdout_write($f,$buf,$len) { - $f = $f|0; - $buf = $buf|0; - $len = $len|0; - var $0 = 0, $1 = 0, $and = 0, $call = 0, $call3 = 0, $fd = 0, $lbf = 0, $tio = 0, $tobool = 0, $tobool2 = 0, $vararg_buffer = 0, $vararg_ptr1 = 0, $vararg_ptr2 = 0, $write = 0, label = 0, sp = 0; - sp = STACKTOP; - STACKTOP = STACKTOP + 80|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abort(); - $vararg_buffer = sp; - $tio = sp + 12|0; - $write = ((($f)) + 36|0); - HEAP32[$write>>2] = 4; - $0 = HEAP32[$f>>2]|0; - $and = $0 & 64; - $tobool = ($and|0)==(0); - if ($tobool) { - $fd = ((($f)) + 60|0); - $1 = HEAP32[$fd>>2]|0; - HEAP32[$vararg_buffer>>2] = $1; - $vararg_ptr1 = ((($vararg_buffer)) + 4|0); - HEAP32[$vararg_ptr1>>2] = 21505; - $vararg_ptr2 = ((($vararg_buffer)) + 8|0); - HEAP32[$vararg_ptr2>>2] = $tio; - $call = (___syscall54(54,($vararg_buffer|0))|0); - $tobool2 = ($call|0)==(0); - if (!($tobool2)) { - $lbf = ((($f)) + 75|0); - HEAP8[$lbf>>0] = -1; - } - } - $call3 = (___stdio_write($f,$buf,$len)|0); - STACKTOP = sp;return ($call3|0); -} -function ___stdio_seek($f,$off,$whence) { - $f = $f|0; - $off = $off|0; - $whence = $whence|0; - var $$pre = 0, $0 = 0, $1 = 0, $call = 0, $call1 = 0, $cmp = 0, $fd = 0, $ret = 0, $vararg_buffer = 0, $vararg_ptr1 = 0, $vararg_ptr2 = 0, $vararg_ptr3 = 0, $vararg_ptr4 = 0, label = 0, sp = 0; - sp = STACKTOP; - STACKTOP = STACKTOP + 32|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abort(); - $vararg_buffer = sp; - $ret = sp + 20|0; - $fd = ((($f)) + 60|0); - $0 = HEAP32[$fd>>2]|0; - HEAP32[$vararg_buffer>>2] = $0; - $vararg_ptr1 = ((($vararg_buffer)) + 4|0); - HEAP32[$vararg_ptr1>>2] = 0; - $vararg_ptr2 = ((($vararg_buffer)) + 8|0); - HEAP32[$vararg_ptr2>>2] = $off; - $vararg_ptr3 = ((($vararg_buffer)) + 12|0); - HEAP32[$vararg_ptr3>>2] = $ret; - $vararg_ptr4 = ((($vararg_buffer)) + 16|0); - HEAP32[$vararg_ptr4>>2] = $whence; - $call = (___syscall140(140,($vararg_buffer|0))|0); - $call1 = (___syscall_ret($call)|0); - $cmp = ($call1|0)<(0); - if ($cmp) { - HEAP32[$ret>>2] = -1; - $1 = -1; - } else { - $$pre = HEAP32[$ret>>2]|0; - $1 = $$pre; - } - STACKTOP = sp;return ($1|0); -} -function _fflush($f) { - $f = $f|0; - var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $call = 0, $call1 = 0, $call1$18 = 0, $call16 = 0, $call22 = 0, $call7 = 0, $cmp = 0, $cmp14 = 0, $cmp20 = 0, $cond10 = 0, $cond19 = 0, $f$addr$0 = 0, $f$addr$0$19 = 0, $f$addr$022 = 0; - var $lock = 0, $lock13 = 0, $next = 0, $or = 0, $phitmp = 0, $r$0$lcssa = 0, $r$021 = 0, $r$1 = 0, $retval$0 = 0, $tobool = 0, $tobool11 = 0, $tobool11$20 = 0, $tobool24 = 0, $tobool5 = 0, $wbase = 0, $wpos = 0, label = 0, sp = 0; - sp = STACKTOP; - $tobool = ($f|0)==(0|0); - do { - if ($tobool) { - $1 = HEAP32[3]|0; - $tobool5 = ($1|0)==(0|0); - if ($tobool5) { - $cond10 = 0; - } else { - $2 = HEAP32[3]|0; - $call7 = (_fflush($2)|0); - $cond10 = $call7; - } - ___lock(((44)|0)); - $f$addr$0$19 = HEAP32[(40)>>2]|0; - $tobool11$20 = ($f$addr$0$19|0)==(0|0); - if ($tobool11$20) { - $r$0$lcssa = $cond10; - } else { - $f$addr$022 = $f$addr$0$19;$r$021 = $cond10; - while(1) { - $lock13 = ((($f$addr$022)) + 76|0); - $3 = HEAP32[$lock13>>2]|0; - $cmp14 = ($3|0)>(-1); - if ($cmp14) { - $call16 = (___lockfile($f$addr$022)|0); - $cond19 = $call16; - } else { - $cond19 = 0; - } - $wpos = ((($f$addr$022)) + 20|0); - $4 = HEAP32[$wpos>>2]|0; - $wbase = ((($f$addr$022)) + 28|0); - $5 = HEAP32[$wbase>>2]|0; - $cmp20 = ($4>>>0)>($5>>>0); - if ($cmp20) { - $call22 = (___fflush_unlocked($f$addr$022)|0); - $or = $call22 | $r$021; - $r$1 = $or; - } else { - $r$1 = $r$021; - } - $tobool24 = ($cond19|0)==(0); - if (!($tobool24)) { - ___unlockfile($f$addr$022); - } - $next = ((($f$addr$022)) + 56|0); - $f$addr$0 = HEAP32[$next>>2]|0; - $tobool11 = ($f$addr$0|0)==(0|0); - if ($tobool11) { - $r$0$lcssa = $r$1; - break; - } else { - $f$addr$022 = $f$addr$0;$r$021 = $r$1; - } - } - } - ___unlock(((44)|0)); - $retval$0 = $r$0$lcssa; - } else { - $lock = ((($f)) + 76|0); - $0 = HEAP32[$lock>>2]|0; - $cmp = ($0|0)>(-1); - if (!($cmp)) { - $call1$18 = (___fflush_unlocked($f)|0); - $retval$0 = $call1$18; - break; - } - $call = (___lockfile($f)|0); - $phitmp = ($call|0)==(0); - $call1 = (___fflush_unlocked($f)|0); - if ($phitmp) { - $retval$0 = $call1; - } else { - ___unlockfile($f); - $retval$0 = $call1; - } - } - } while(0); - return ($retval$0|0); -} -function _printf($fmt,$varargs) { - $fmt = $fmt|0; - $varargs = $varargs|0; - var $0 = 0, $ap = 0, $call = 0, label = 0, sp = 0; - sp = STACKTOP; - STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abort(); - $ap = sp; - HEAP32[$ap>>2] = $varargs; - $0 = HEAP32[2]|0; - $call = (_vfprintf($0,$fmt,$ap)|0); - STACKTOP = sp;return ($call|0); -} -function ___lockfile($f) { - $f = $f|0; - var label = 0, sp = 0; - sp = STACKTOP; - return 0; -} -function ___unlockfile($f) { - $f = $f|0; - var label = 0, sp = 0; - sp = STACKTOP; - return; -} -function ___stdio_write($f,$buf,$len) { - $f = $f|0; - $buf = $buf|0; - $len = $len|0; - var $$pre = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $add = 0, $add$ptr = 0, $add$ptr41 = 0, $add$ptr46 = 0; - var $buf31 = 0, $buf_size = 0, $call = 0, $call10 = 0, $call7 = 0, $call9 = 0, $cmp = 0, $cmp17 = 0, $cmp22 = 0, $cmp29 = 0, $cmp38 = 0, $cnt$0 = 0, $cnt$1 = 0, $dec = 0, $fd8 = 0, $incdec$ptr = 0, $iov$0 = 0, $iov$0$lcssa57 = 0, $iov$1 = 0, $iov_base2 = 0; - var $iov_len = 0, $iov_len24 = 0, $iov_len28 = 0, $iov_len3 = 0, $iov_len50 = 0, $iov_len50$phi$trans$insert = 0, $iovcnt$0 = 0, $iovcnt$0$lcssa58 = 0, $iovcnt$1 = 0, $iovs = 0, $or = 0, $rem$0 = 0, $retval$0 = 0, $sub = 0, $sub$ptr$sub = 0, $sub26 = 0, $sub36 = 0, $sub51 = 0, $tobool = 0, $vararg_buffer = 0; - var $vararg_buffer3 = 0, $vararg_ptr1 = 0, $vararg_ptr2 = 0, $vararg_ptr6 = 0, $vararg_ptr7 = 0, $wbase = 0, $wend = 0, $wend19 = 0, $wpos = 0, label = 0, sp = 0; - sp = STACKTOP; - STACKTOP = STACKTOP + 48|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abort(); - $vararg_buffer3 = sp + 16|0; - $vararg_buffer = sp; - $iovs = sp + 32|0; - $wbase = ((($f)) + 28|0); - $0 = HEAP32[$wbase>>2]|0; - HEAP32[$iovs>>2] = $0; - $iov_len = ((($iovs)) + 4|0); - $wpos = ((($f)) + 20|0); - $1 = HEAP32[$wpos>>2]|0; - $sub$ptr$sub = (($1) - ($0))|0; - HEAP32[$iov_len>>2] = $sub$ptr$sub; - $iov_base2 = ((($iovs)) + 8|0); - HEAP32[$iov_base2>>2] = $buf; - $iov_len3 = ((($iovs)) + 12|0); - HEAP32[$iov_len3>>2] = $len; - $add = (($sub$ptr$sub) + ($len))|0; - $fd8 = ((($f)) + 60|0); - $buf31 = ((($f)) + 44|0); - $iov$0 = $iovs;$iovcnt$0 = 2;$rem$0 = $add; - while(1) { - $2 = HEAP32[4]|0; - $tobool = ($2|0)==(0|0); - if ($tobool) { - $4 = HEAP32[$fd8>>2]|0; - HEAP32[$vararg_buffer3>>2] = $4; - $vararg_ptr6 = ((($vararg_buffer3)) + 4|0); - HEAP32[$vararg_ptr6>>2] = $iov$0; - $vararg_ptr7 = ((($vararg_buffer3)) + 8|0); - HEAP32[$vararg_ptr7>>2] = $iovcnt$0; - $call9 = (___syscall146(146,($vararg_buffer3|0))|0); - $call10 = (___syscall_ret($call9)|0); - $cnt$0 = $call10; - } else { - _pthread_cleanup_push((5|0),($f|0)); - $3 = HEAP32[$fd8>>2]|0; - HEAP32[$vararg_buffer>>2] = $3; - $vararg_ptr1 = ((($vararg_buffer)) + 4|0); - HEAP32[$vararg_ptr1>>2] = $iov$0; - $vararg_ptr2 = ((($vararg_buffer)) + 8|0); - HEAP32[$vararg_ptr2>>2] = $iovcnt$0; - $call = (___syscall146(146,($vararg_buffer|0))|0); - $call7 = (___syscall_ret($call)|0); - _pthread_cleanup_pop(0); - $cnt$0 = $call7; - } - $cmp = ($rem$0|0)==($cnt$0|0); - if ($cmp) { - label = 6; - break; - } - $cmp17 = ($cnt$0|0)<(0); - if ($cmp17) { - $iov$0$lcssa57 = $iov$0;$iovcnt$0$lcssa58 = $iovcnt$0; - label = 8; - break; - } - $sub26 = (($rem$0) - ($cnt$0))|0; - $iov_len28 = ((($iov$0)) + 4|0); - $10 = HEAP32[$iov_len28>>2]|0; - $cmp29 = ($cnt$0>>>0)>($10>>>0); - if ($cmp29) { - $11 = HEAP32[$buf31>>2]|0; - HEAP32[$wbase>>2] = $11; - HEAP32[$wpos>>2] = $11; - $sub36 = (($cnt$0) - ($10))|0; - $incdec$ptr = ((($iov$0)) + 8|0); - $dec = (($iovcnt$0) + -1)|0; - $iov_len50$phi$trans$insert = ((($iov$0)) + 12|0); - $$pre = HEAP32[$iov_len50$phi$trans$insert>>2]|0; - $14 = $$pre;$cnt$1 = $sub36;$iov$1 = $incdec$ptr;$iovcnt$1 = $dec; - } else { - $cmp38 = ($iovcnt$0|0)==(2); - if ($cmp38) { - $12 = HEAP32[$wbase>>2]|0; - $add$ptr41 = (($12) + ($cnt$0)|0); - HEAP32[$wbase>>2] = $add$ptr41; - $14 = $10;$cnt$1 = $cnt$0;$iov$1 = $iov$0;$iovcnt$1 = 2; - } else { - $14 = $10;$cnt$1 = $cnt$0;$iov$1 = $iov$0;$iovcnt$1 = $iovcnt$0; - } - } - $13 = HEAP32[$iov$1>>2]|0; - $add$ptr46 = (($13) + ($cnt$1)|0); - HEAP32[$iov$1>>2] = $add$ptr46; - $iov_len50 = ((($iov$1)) + 4|0); - $sub51 = (($14) - ($cnt$1))|0; - HEAP32[$iov_len50>>2] = $sub51; - $iov$0 = $iov$1;$iovcnt$0 = $iovcnt$1;$rem$0 = $sub26; - } - if ((label|0) == 6) { - $5 = HEAP32[$buf31>>2]|0; - $buf_size = ((($f)) + 48|0); - $6 = HEAP32[$buf_size>>2]|0; - $add$ptr = (($5) + ($6)|0); - $wend = ((($f)) + 16|0); - HEAP32[$wend>>2] = $add$ptr; - $7 = $5; - HEAP32[$wbase>>2] = $7; - HEAP32[$wpos>>2] = $7; - $retval$0 = $len; - } - else if ((label|0) == 8) { - $wend19 = ((($f)) + 16|0); - HEAP32[$wend19>>2] = 0; - HEAP32[$wbase>>2] = 0; - HEAP32[$wpos>>2] = 0; - $8 = HEAP32[$f>>2]|0; - $or = $8 | 32; - HEAP32[$f>>2] = $or; - $cmp22 = ($iovcnt$0$lcssa58|0)==(2); - if ($cmp22) { - $retval$0 = 0; - } else { - $iov_len24 = ((($iov$0$lcssa57)) + 4|0); - $9 = HEAP32[$iov_len24>>2]|0; - $sub = (($len) - ($9))|0; - $retval$0 = $sub; - } - } - STACKTOP = sp;return ($retval$0|0); -} -function _vfprintf($f,$fmt,$ap) { - $f = $f|0; - $fmt = $fmt|0; - $ap = $ap|0; - var $$call21 = 0, $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $add$ptr = 0, $and = 0, $and11 = 0, $and36 = 0, $ap2 = 0, $buf = 0, $buf_size = 0, $call = 0, $call21 = 0, $call21$30 = 0, $call6 = 0; - var $cmp = 0, $cmp5 = 0, $cmp7 = 0, $cond = 0, $internal_buf = 0, $lock = 0, $mode = 0, $nl_arg = 0, $nl_type = 0, $or = 0, $ret$1 = 0, $ret$1$ = 0, $retval$0 = 0, $tobool = 0, $tobool22 = 0, $tobool26 = 0, $tobool37 = 0, $tobool41 = 0, $vacopy_currentptr = 0, $wbase = 0; - var $wend = 0, $wpos = 0, $write = 0, dest = 0, label = 0, sp = 0, stop = 0; - sp = STACKTOP; - STACKTOP = STACKTOP + 224|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abort(); - $ap2 = sp + 120|0; - $nl_type = sp + 80|0; - $nl_arg = sp; - $internal_buf = sp + 136|0; - dest=$nl_type; stop=dest+40|0; do { HEAP32[dest>>2]=0|0; dest=dest+4|0; } while ((dest|0) < (stop|0)); - $vacopy_currentptr = HEAP32[$ap>>2]|0; - HEAP32[$ap2>>2] = $vacopy_currentptr; - $call = (_printf_core(0,$fmt,$ap2,$nl_arg,$nl_type)|0); - $cmp = ($call|0)<(0); - if ($cmp) { - $retval$0 = -1; - } else { - $lock = ((($f)) + 76|0); - $0 = HEAP32[$lock>>2]|0; - $cmp5 = ($0|0)>(-1); - if ($cmp5) { - $call6 = (___lockfile($f)|0); - $cond = $call6; - } else { - $cond = 0; - } - $1 = HEAP32[$f>>2]|0; - $and = $1 & 32; - $mode = ((($f)) + 74|0); - $2 = HEAP8[$mode>>0]|0; - $cmp7 = ($2<<24>>24)<(1); - if ($cmp7) { - $and11 = $1 & -33; - HEAP32[$f>>2] = $and11; - } - $buf_size = ((($f)) + 48|0); - $3 = HEAP32[$buf_size>>2]|0; - $tobool = ($3|0)==(0); - if ($tobool) { - $buf = ((($f)) + 44|0); - $4 = HEAP32[$buf>>2]|0; - HEAP32[$buf>>2] = $internal_buf; - $wbase = ((($f)) + 28|0); - HEAP32[$wbase>>2] = $internal_buf; - $wpos = ((($f)) + 20|0); - HEAP32[$wpos>>2] = $internal_buf; - HEAP32[$buf_size>>2] = 80; - $add$ptr = ((($internal_buf)) + 80|0); - $wend = ((($f)) + 16|0); - HEAP32[$wend>>2] = $add$ptr; - $call21 = (_printf_core($f,$fmt,$ap2,$nl_arg,$nl_type)|0); - $tobool22 = ($4|0)==(0|0); - if ($tobool22) { - $ret$1 = $call21; - } else { - $write = ((($f)) + 36|0); - $5 = HEAP32[$write>>2]|0; - (FUNCTION_TABLE_iiii[$5 & 7]($f,0,0)|0); - $6 = HEAP32[$wpos>>2]|0; - $tobool26 = ($6|0)==(0|0); - $$call21 = $tobool26 ? -1 : $call21; - HEAP32[$buf>>2] = $4; - HEAP32[$buf_size>>2] = 0; - HEAP32[$wend>>2] = 0; - HEAP32[$wbase>>2] = 0; - HEAP32[$wpos>>2] = 0; - $ret$1 = $$call21; - } - } else { - $call21$30 = (_printf_core($f,$fmt,$ap2,$nl_arg,$nl_type)|0); - $ret$1 = $call21$30; - } - $7 = HEAP32[$f>>2]|0; - $and36 = $7 & 32; - $tobool37 = ($and36|0)==(0); - $ret$1$ = $tobool37 ? $ret$1 : -1; - $or = $7 | $and; - HEAP32[$f>>2] = $or; - $tobool41 = ($cond|0)==(0); - if (!($tobool41)) { - ___unlockfile($f); - } - $retval$0 = $ret$1$; - } - STACKTOP = sp;return ($retval$0|0); -} -function ___fwritex($s,$l,$f) { - $s = $s|0; - $l = $l|0; - $f = $f|0; - var $$pre = 0, $$pre31 = 0, $0 = 0, $1 = 0, $10 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0, $add = 0, $add$ptr = 0, $add$ptr26 = 0, $arrayidx = 0, $call = 0, $call16 = 0, $call4 = 0; - var $cmp = 0, $cmp11 = 0, $cmp17 = 0, $cmp6 = 0, $i$0 = 0, $i$0$lcssa36 = 0, $i$1 = 0, $l$addr$0 = 0, $lbf = 0, $retval$0 = 0, $s$addr$0 = 0, $sub = 0, $sub$ptr$sub = 0, $sub21 = 0, $tobool = 0, $tobool1 = 0, $tobool9 = 0, $wend = 0, $wpos = 0, $write = 0; - var $write15 = 0, label = 0, sp = 0; - sp = STACKTOP; - $wend = ((($f)) + 16|0); - $0 = HEAP32[$wend>>2]|0; - $tobool = ($0|0)==(0|0); - if ($tobool) { - $call = (___towrite($f)|0); - $tobool1 = ($call|0)==(0); - if ($tobool1) { - $$pre = HEAP32[$wend>>2]|0; - $3 = $$pre; - label = 5; - } else { - $retval$0 = 0; - } - } else { - $1 = $0; - $3 = $1; - label = 5; - } - L5: do { - if ((label|0) == 5) { - $wpos = ((($f)) + 20|0); - $2 = HEAP32[$wpos>>2]|0; - $sub$ptr$sub = (($3) - ($2))|0; - $cmp = ($sub$ptr$sub>>>0)<($l>>>0); - $4 = $2; - if ($cmp) { - $write = ((($f)) + 36|0); - $5 = HEAP32[$write>>2]|0; - $call4 = (FUNCTION_TABLE_iiii[$5 & 7]($f,$s,$l)|0); - $retval$0 = $call4; - break; - } - $lbf = ((($f)) + 75|0); - $6 = HEAP8[$lbf>>0]|0; - $cmp6 = ($6<<24>>24)>(-1); - L10: do { - if ($cmp6) { - $i$0 = $l; - while(1) { - $tobool9 = ($i$0|0)==(0); - if ($tobool9) { - $9 = $4;$i$1 = 0;$l$addr$0 = $l;$s$addr$0 = $s; - break L10; - } - $sub = (($i$0) + -1)|0; - $arrayidx = (($s) + ($sub)|0); - $7 = HEAP8[$arrayidx>>0]|0; - $cmp11 = ($7<<24>>24)==(10); - if ($cmp11) { - $i$0$lcssa36 = $i$0; - break; - } else { - $i$0 = $sub; - } - } - $write15 = ((($f)) + 36|0); - $8 = HEAP32[$write15>>2]|0; - $call16 = (FUNCTION_TABLE_iiii[$8 & 7]($f,$s,$i$0$lcssa36)|0); - $cmp17 = ($call16>>>0)<($i$0$lcssa36>>>0); - if ($cmp17) { - $retval$0 = $i$0$lcssa36; - break L5; - } - $add$ptr = (($s) + ($i$0$lcssa36)|0); - $sub21 = (($l) - ($i$0$lcssa36))|0; - $$pre31 = HEAP32[$wpos>>2]|0; - $9 = $$pre31;$i$1 = $i$0$lcssa36;$l$addr$0 = $sub21;$s$addr$0 = $add$ptr; - } else { - $9 = $4;$i$1 = 0;$l$addr$0 = $l;$s$addr$0 = $s; - } - } while(0); - _memcpy(($9|0),($s$addr$0|0),($l$addr$0|0))|0; - $10 = HEAP32[$wpos>>2]|0; - $add$ptr26 = (($10) + ($l$addr$0)|0); - HEAP32[$wpos>>2] = $add$ptr26; - $add = (($i$1) + ($l$addr$0))|0; - $retval$0 = $add; - } - } while(0); - return ($retval$0|0); -} -function ___towrite($f) { - $f = $f|0; - var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $add$ptr = 0, $and = 0, $buf = 0, $buf_size = 0, $conv = 0, $conv3 = 0, $mode = 0, $or = 0, $or5 = 0, $rend = 0, $retval$0 = 0, $rpos = 0, $sub = 0, $tobool = 0, $wbase = 0; - var $wend = 0, $wpos = 0, label = 0, sp = 0; - sp = STACKTOP; - $mode = ((($f)) + 74|0); - $0 = HEAP8[$mode>>0]|0; - $conv = $0 << 24 >> 24; - $sub = (($conv) + 255)|0; - $or = $sub | $conv; - $conv3 = $or&255; - HEAP8[$mode>>0] = $conv3; - $1 = HEAP32[$f>>2]|0; - $and = $1 & 8; - $tobool = ($and|0)==(0); - if ($tobool) { - $rend = ((($f)) + 8|0); - HEAP32[$rend>>2] = 0; - $rpos = ((($f)) + 4|0); - HEAP32[$rpos>>2] = 0; - $buf = ((($f)) + 44|0); - $2 = HEAP32[$buf>>2]|0; - $wbase = ((($f)) + 28|0); - HEAP32[$wbase>>2] = $2; - $wpos = ((($f)) + 20|0); - HEAP32[$wpos>>2] = $2; - $3 = $2; - $buf_size = ((($f)) + 48|0); - $4 = HEAP32[$buf_size>>2]|0; - $add$ptr = (($3) + ($4)|0); - $wend = ((($f)) + 16|0); - HEAP32[$wend>>2] = $add$ptr; - $retval$0 = 0; - } else { - $or5 = $1 | 32; - HEAP32[$f>>2] = $or5; - $retval$0 = -1; - } - return ($retval$0|0); -} -function _wcrtomb($s,$wc,$st) { - $s = $s|0; - $wc = $wc|0; - $st = $st|0; - var $0 = 0, $and = 0, $and19 = 0, $and23 = 0, $and36 = 0, $and41 = 0, $and45 = 0, $call = 0, $cmp = 0, $cmp11 = 0, $cmp2 = 0, $cmp28 = 0, $cmp9 = 0, $conv = 0, $conv16 = 0, $conv21 = 0, $conv25 = 0, $conv33 = 0, $conv38 = 0, $conv43 = 0; - var $conv47 = 0, $conv5 = 0, $conv7 = 0, $incdec$ptr = 0, $incdec$ptr17 = 0, $incdec$ptr22 = 0, $incdec$ptr34 = 0, $incdec$ptr39 = 0, $incdec$ptr44 = 0, $or = 0, $or$cond = 0, $or15 = 0, $or20 = 0, $or24 = 0, $or32 = 0, $or37 = 0, $or42 = 0, $or46 = 0, $or6 = 0, $retval$0 = 0; - var $shr$28 = 0, $shr14$26 = 0, $shr18$27 = 0, $shr31$23 = 0, $shr35$24 = 0, $shr40$25 = 0, $sub27 = 0, $tobool = 0, label = 0, sp = 0; - sp = STACKTOP; - $tobool = ($s|0)==(0|0); - do { - if ($tobool) { - $retval$0 = 1; - } else { - $cmp = ($wc>>>0)<(128); - if ($cmp) { - $conv = $wc&255; - HEAP8[$s>>0] = $conv; - $retval$0 = 1; - break; - } - $cmp2 = ($wc>>>0)<(2048); - if ($cmp2) { - $shr$28 = $wc >>> 6; - $or = $shr$28 | 192; - $conv5 = $or&255; - $incdec$ptr = ((($s)) + 1|0); - HEAP8[$s>>0] = $conv5; - $and = $wc & 63; - $or6 = $and | 128; - $conv7 = $or6&255; - HEAP8[$incdec$ptr>>0] = $conv7; - $retval$0 = 2; - break; - } - $cmp9 = ($wc>>>0)<(55296); - $0 = $wc & -8192; - $cmp11 = ($0|0)==(57344); - $or$cond = $cmp9 | $cmp11; - if ($or$cond) { - $shr14$26 = $wc >>> 12; - $or15 = $shr14$26 | 224; - $conv16 = $or15&255; - $incdec$ptr17 = ((($s)) + 1|0); - HEAP8[$s>>0] = $conv16; - $shr18$27 = $wc >>> 6; - $and19 = $shr18$27 & 63; - $or20 = $and19 | 128; - $conv21 = $or20&255; - $incdec$ptr22 = ((($s)) + 2|0); - HEAP8[$incdec$ptr17>>0] = $conv21; - $and23 = $wc & 63; - $or24 = $and23 | 128; - $conv25 = $or24&255; - HEAP8[$incdec$ptr22>>0] = $conv25; - $retval$0 = 3; - break; - } - $sub27 = (($wc) + -65536)|0; - $cmp28 = ($sub27>>>0)<(1048576); - if ($cmp28) { - $shr31$23 = $wc >>> 18; - $or32 = $shr31$23 | 240; - $conv33 = $or32&255; - $incdec$ptr34 = ((($s)) + 1|0); - HEAP8[$s>>0] = $conv33; - $shr35$24 = $wc >>> 12; - $and36 = $shr35$24 & 63; - $or37 = $and36 | 128; - $conv38 = $or37&255; - $incdec$ptr39 = ((($s)) + 2|0); - HEAP8[$incdec$ptr34>>0] = $conv38; - $shr40$25 = $wc >>> 6; - $and41 = $shr40$25 & 63; - $or42 = $and41 | 128; - $conv43 = $or42&255; - $incdec$ptr44 = ((($s)) + 3|0); - HEAP8[$incdec$ptr39>>0] = $conv43; - $and45 = $wc & 63; - $or46 = $and45 | 128; - $conv47 = $or46&255; - HEAP8[$incdec$ptr44>>0] = $conv47; - $retval$0 = 4; - break; - } else { - $call = (___errno_location()|0); - HEAP32[$call>>2] = 84; - $retval$0 = -1; - break; - } - } - } while(0); - return ($retval$0|0); -} -function _wctomb($s,$wc) { - $s = $s|0; - $wc = $wc|0; - var $call = 0, $retval$0 = 0, $tobool = 0, label = 0, sp = 0; - sp = STACKTOP; - $tobool = ($s|0)==(0|0); - if ($tobool) { - $retval$0 = 0; - } else { - $call = (_wcrtomb($s,$wc,0)|0); - $retval$0 = $call; - } - return ($retval$0|0); -} -function _memchr($src,$c,$n) { - $src = $src|0; - $c = $c|0; - $n = $n|0; - var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $and = 0, $and$39 = 0, $and15 = 0, $and16 = 0, $cmp = 0, $cmp11 = 0, $cmp11$32 = 0, $cmp28 = 0, $cmp8 = 0, $cond = 0, $conv1 = 0, $dec = 0; - var $dec34 = 0, $incdec$ptr = 0, $incdec$ptr21 = 0, $incdec$ptr33 = 0, $lnot = 0, $mul = 0, $n$addr$0$lcssa = 0, $n$addr$0$lcssa61 = 0, $n$addr$043 = 0, $n$addr$1$lcssa = 0, $n$addr$133 = 0, $n$addr$133$lcssa = 0, $n$addr$227 = 0, $n$addr$3 = 0, $neg = 0, $or$cond = 0, $or$cond$42 = 0, $s$0$lcssa = 0, $s$0$lcssa60 = 0, $s$044 = 0; - var $s$128 = 0, $s$2 = 0, $sub = 0, $sub22 = 0, $tobool = 0, $tobool$40 = 0, $tobool2 = 0, $tobool2$41 = 0, $tobool2$lcssa = 0, $tobool25 = 0, $tobool25$26 = 0, $tobool36 = 0, $w$0$lcssa = 0, $w$034 = 0, $w$034$lcssa = 0, $xor = 0, label = 0, sp = 0; - sp = STACKTOP; - $conv1 = $c & 255; - $0 = $src; - $and$39 = $0 & 3; - $tobool$40 = ($and$39|0)!=(0); - $tobool2$41 = ($n|0)!=(0); - $or$cond$42 = $tobool2$41 & $tobool$40; - L1: do { - if ($or$cond$42) { - $1 = $c&255; - $n$addr$043 = $n;$s$044 = $src; - while(1) { - $2 = HEAP8[$s$044>>0]|0; - $cmp = ($2<<24>>24)==($1<<24>>24); - if ($cmp) { - $n$addr$0$lcssa61 = $n$addr$043;$s$0$lcssa60 = $s$044; - label = 6; - break L1; - } - $incdec$ptr = ((($s$044)) + 1|0); - $dec = (($n$addr$043) + -1)|0; - $3 = $incdec$ptr; - $and = $3 & 3; - $tobool = ($and|0)!=(0); - $tobool2 = ($dec|0)!=(0); - $or$cond = $tobool2 & $tobool; - if ($or$cond) { - $n$addr$043 = $dec;$s$044 = $incdec$ptr; - } else { - $n$addr$0$lcssa = $dec;$s$0$lcssa = $incdec$ptr;$tobool2$lcssa = $tobool2; - label = 5; - break; - } - } - } else { - $n$addr$0$lcssa = $n;$s$0$lcssa = $src;$tobool2$lcssa = $tobool2$41; - label = 5; - } - } while(0); - if ((label|0) == 5) { - if ($tobool2$lcssa) { - $n$addr$0$lcssa61 = $n$addr$0$lcssa;$s$0$lcssa60 = $s$0$lcssa; - label = 6; - } else { - $n$addr$3 = 0;$s$2 = $s$0$lcssa; - } - } - L8: do { - if ((label|0) == 6) { - $4 = HEAP8[$s$0$lcssa60>>0]|0; - $5 = $c&255; - $cmp8 = ($4<<24>>24)==($5<<24>>24); - if ($cmp8) { - $n$addr$3 = $n$addr$0$lcssa61;$s$2 = $s$0$lcssa60; - } else { - $mul = Math_imul($conv1, 16843009)|0; - $cmp11$32 = ($n$addr$0$lcssa61>>>0)>(3); - L11: do { - if ($cmp11$32) { - $n$addr$133 = $n$addr$0$lcssa61;$w$034 = $s$0$lcssa60; - while(1) { - $6 = HEAP32[$w$034>>2]|0; - $xor = $6 ^ $mul; - $sub = (($xor) + -16843009)|0; - $neg = $xor & -2139062144; - $and15 = $neg ^ -2139062144; - $and16 = $and15 & $sub; - $lnot = ($and16|0)==(0); - if (!($lnot)) { - $n$addr$133$lcssa = $n$addr$133;$w$034$lcssa = $w$034; - break; - } - $incdec$ptr21 = ((($w$034)) + 4|0); - $sub22 = (($n$addr$133) + -4)|0; - $cmp11 = ($sub22>>>0)>(3); - if ($cmp11) { - $n$addr$133 = $sub22;$w$034 = $incdec$ptr21; - } else { - $n$addr$1$lcssa = $sub22;$w$0$lcssa = $incdec$ptr21; - label = 11; - break L11; - } - } - $n$addr$227 = $n$addr$133$lcssa;$s$128 = $w$034$lcssa; - } else { - $n$addr$1$lcssa = $n$addr$0$lcssa61;$w$0$lcssa = $s$0$lcssa60; - label = 11; - } - } while(0); - if ((label|0) == 11) { - $tobool25$26 = ($n$addr$1$lcssa|0)==(0); - if ($tobool25$26) { - $n$addr$3 = 0;$s$2 = $w$0$lcssa; - break; - } else { - $n$addr$227 = $n$addr$1$lcssa;$s$128 = $w$0$lcssa; - } - } - while(1) { - $7 = HEAP8[$s$128>>0]|0; - $cmp28 = ($7<<24>>24)==($5<<24>>24); - if ($cmp28) { - $n$addr$3 = $n$addr$227;$s$2 = $s$128; - break L8; - } - $incdec$ptr33 = ((($s$128)) + 1|0); - $dec34 = (($n$addr$227) + -1)|0; - $tobool25 = ($dec34|0)==(0); - if ($tobool25) { - $n$addr$3 = 0;$s$2 = $incdec$ptr33; - break; - } else { - $n$addr$227 = $dec34;$s$128 = $incdec$ptr33; - } - } - } - } - } while(0); - $tobool36 = ($n$addr$3|0)!=(0); - $cond = $tobool36 ? $s$2 : 0; - return ($cond|0); -} -function ___syscall_ret($r) { - $r = $r|0; - var $call = 0, $cmp = 0, $retval$0 = 0, $sub = 0, label = 0, sp = 0; - sp = STACKTOP; - $cmp = ($r>>>0)>(4294963200); - if ($cmp) { - $sub = (0 - ($r))|0; - $call = (___errno_location()|0); - HEAP32[$call>>2] = $sub; - $retval$0 = -1; - } else { - $retval$0 = $r; - } - return ($retval$0|0); -} -function ___fflush_unlocked($f) { - $f = $f|0; - var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $cmp = 0, $cmp4 = 0, $rend = 0, $retval$0 = 0, $rpos = 0, $seek = 0, $sub$ptr$lhs$cast = 0, $sub$ptr$rhs$cast = 0, $sub$ptr$sub = 0, $tobool = 0, $wbase = 0, $wend = 0, $wpos = 0; - var $write = 0, label = 0, sp = 0; - sp = STACKTOP; - $wpos = ((($f)) + 20|0); - $0 = HEAP32[$wpos>>2]|0; - $wbase = ((($f)) + 28|0); - $1 = HEAP32[$wbase>>2]|0; - $cmp = ($0>>>0)>($1>>>0); - if ($cmp) { - $write = ((($f)) + 36|0); - $2 = HEAP32[$write>>2]|0; - (FUNCTION_TABLE_iiii[$2 & 7]($f,0,0)|0); - $3 = HEAP32[$wpos>>2]|0; - $tobool = ($3|0)==(0|0); - if ($tobool) { - $retval$0 = -1; - } else { - label = 3; - } - } else { - label = 3; - } - if ((label|0) == 3) { - $rpos = ((($f)) + 4|0); - $4 = HEAP32[$rpos>>2]|0; - $rend = ((($f)) + 8|0); - $5 = HEAP32[$rend>>2]|0; - $cmp4 = ($4>>>0)<($5>>>0); - if ($cmp4) { - $seek = ((($f)) + 40|0); - $6 = HEAP32[$seek>>2]|0; - $sub$ptr$lhs$cast = $4; - $sub$ptr$rhs$cast = $5; - $sub$ptr$sub = (($sub$ptr$lhs$cast) - ($sub$ptr$rhs$cast))|0; - (FUNCTION_TABLE_iiii[$6 & 7]($f,$sub$ptr$sub,1)|0); - } - $wend = ((($f)) + 16|0); - HEAP32[$wend>>2] = 0; - HEAP32[$wbase>>2] = 0; - HEAP32[$wpos>>2] = 0; - HEAP32[$rend>>2] = 0; - HEAP32[$rpos>>2] = 0; - $retval$0 = 0; - } - return ($retval$0|0); -} -function _cleanup($p) { - $p = $p|0; - var $0 = 0, $lockcount = 0, $tobool = 0, label = 0, sp = 0; - sp = STACKTOP; - $lockcount = ((($p)) + 68|0); - $0 = HEAP32[$lockcount>>2]|0; - $tobool = ($0|0)==(0); - if ($tobool) { - ___unlockfile($p); - } - return; -} -function _printf_core($f,$fmt,$ap,$nl_arg,$nl_type) { - $f = $f|0; - $fmt = $fmt|0; - $ap = $ap|0; - $nl_arg = $nl_arg|0; - $nl_type = $nl_type|0; - var $$ = 0, $$$i = 0, $$396$i = 0.0, $$404$i = 0.0, $$l10n$0 = 0, $$lcssa = 0, $$p$i = 0, $$p$inc468$i = 0, $$pr$i = 0, $$pr477$i = 0, $$pre = 0, $$pre$i = 0, $$pre357 = 0, $$pre564$i = 0, $$pre566$i = 0, $$pre567$i = 0, $$sub514$i = 0, $$sub562$i = 0, $0 = 0, $1 = 0; - var $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0; - var $118 = 0, $119 = 0, $12 = 0, $120 = 0, $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0; - var $136 = 0, $137 = 0, $138 = 0, $139 = 0, $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0; - var $154 = 0, $155 = 0, $156 = 0, $157 = 0, $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0; - var $172 = 0, $173 = 0, $174 = 0, $175 = 0, $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0.0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0; - var $190 = 0, $191 = 0, $192 = 0, $193 = 0, $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0; - var $208 = 0, $209 = 0, $21 = 0, $210 = 0, $211 = 0, $212 = 0, $213 = 0, $214 = 0, $215 = 0, $216 = 0, $217 = 0, $218 = 0, $219 = 0, $22 = 0, $220 = 0, $221 = 0, $222 = 0, $223 = 0, $224 = 0, $225 = 0; - var $226 = 0, $227 = 0, $228 = 0, $229 = 0, $23 = 0, $230 = 0, $231 = 0, $232 = 0, $233 = 0, $234 = 0, $235 = 0, $236 = 0, $237 = 0, $238 = 0, $239 = 0, $24 = 0, $240 = 0, $241 = 0, $242 = 0, $243 = 0; - var $244 = 0, $245 = 0, $246 = 0, $247 = 0, $248 = 0, $249 = 0, $25 = 0, $250 = 0, $251 = 0, $252 = 0, $253 = 0, $254 = 0, $255 = 0, $256 = 0, $257 = 0, $258 = 0, $259 = 0, $26 = 0, $260 = 0, $261 = 0; - var $262 = 0, $263 = 0, $264 = 0, $265 = 0, $266 = 0, $267 = 0, $268 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0; - var $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0; - var $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0; - var $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0; - var $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $a$0 = 0, $a$1 = 0, $a$1$lcssa$i = 0, $a$1549$i = 0, $a$2 = 0, $a$2$ph$i = 0, $a$3$lcssa$i = 0, $a$3539$i = 0, $a$5$lcssa$i = 0, $a$5521$i = 0, $a$6$i = 0, $a$8$i = 0, $a$9$ph$i = 0; - var $add = 0, $add$i = 0, $add$i$203 = 0, $add$i$239 = 0, $add$i$lcssa = 0, $add$ptr = 0, $add$ptr139 = 0, $add$ptr205 = 0, $add$ptr213$i = 0, $add$ptr257 = 0, $add$ptr311$i = 0, $add$ptr311$z$4$i = 0, $add$ptr340 = 0, $add$ptr354$i = 0, $add$ptr358$i = 0, $add$ptr359 = 0, $add$ptr373$i = 0, $add$ptr43 = 0, $add$ptr43$arrayidx31 = 0, $add$ptr442$i = 0; - var $add$ptr442$z$3$i = 0, $add$ptr473 = 0, $add$ptr65$i = 0, $add$ptr671$i = 0, $add$ptr742$i = 0, $add$ptr88 = 0, $add113$i = 0, $add150$i = 0, $add154$i = 0, $add163$i = 0, $add165$i = 0, $add269 = 0, $add269$p$0 = 0, $add273$i = 0, $add275$i = 0, $add284$i = 0, $add313$i = 0, $add322 = 0, $add355$i = 0, $add395 = 0; - var $add410$i = 0.0, $add412 = 0, $add414$i = 0, $add441 = 0, $add477$neg$i = 0, $add561$i = 0, $add608$i = 0, $add612$i = 0, $add620$i = 0, $add653$i = 0, $add67$i = 0, $add737$i = 0, $add810$i = 0, $add87$i = 0.0, $add90$i = 0.0, $and = 0, $and$i = 0, $and$i$216 = 0, $and$i$231 = 0, $and$i$238 = 0; - var $and$i$244 = 0, $and$i$406$i = 0, $and$i$412$i = 0, $and$i$418$i = 0, $and$i$424$i = 0, $and$i$430$i = 0, $and$i$436$i = 0, $and$i$442$i = 0, $and$i$448$i = 0, $and$i$454$i = 0, $and$i$460$i = 0, $and$i$466$i = 0, $and$i$472$i = 0, $and$i$i = 0, $and12$i = 0, $and134$i = 0, $and210 = 0, $and214 = 0, $and216 = 0, $and219 = 0; - var $and249 = 0, $and254 = 0, $and263 = 0, $and282$i = 0, $and289 = 0, $and294 = 0, $and309 = 0, $and309$fl$4 = 0, $and36$i = 0, $and379$i = 0, $and483$i = 0, $and610$pre$phi$iZ2D = 0, $and62$i = 0, $arg = 0, $arglist_current = 0, $arglist_current2 = 0, $arglist_next = 0, $arglist_next3 = 0, $argpos$0 = 0, $arraydecay208$add$ptr213$i = 0; - var $arrayidx$i = 0, $arrayidx$i$236 = 0, $arrayidx114 = 0, $arrayidx117$i = 0, $arrayidx119 = 0, $arrayidx124 = 0, $arrayidx132 = 0, $arrayidx16 = 0, $arrayidx173 = 0, $arrayidx192 = 0, $arrayidx251$i = 0, $arrayidx31 = 0, $arrayidx35 = 0, $arrayidx370 = 0, $arrayidx453$i = 0, $arrayidx469 = 0, $arrayidx481 = 0, $arrayidx489$i = 0, $arrayidx68 = 0, $arrayidx73 = 0; - var $arrayidx81 = 0, $big$i = 0, $buf = 0, $buf$i = 0, $call = 0, $call344 = 0, $call345 = 0, $call356 = 0, $call384 = 0, $call411 = 0, $call55$i = 0.0, $carry$0544$i = 0, $carry262$0535$i = 0, $cmp = 0, $cmp1 = 0, $cmp103$i = 0, $cmp105 = 0, $cmp111 = 0, $cmp116 = 0, $cmp126 = 0; - var $cmp127$i = 0, $cmp13 = 0, $cmp147$i = 0, $cmp165 = 0, $cmp176 = 0, $cmp18 = 0, $cmp181 = 0, $cmp184 = 0, $cmp188$i = 0, $cmp196$i = 0, $cmp205$i = 0, $cmp211 = 0, $cmp225$547$i = 0, $cmp225$i = 0, $cmp228$i = 0, $cmp235$543$i = 0, $cmp235$i = 0, $cmp240 = 0, $cmp249$i = 0, $cmp259$537$i = 0; - var $cmp259$i = 0, $cmp265$i = 0, $cmp270 = 0, $cmp277$533$i = 0, $cmp277$i = 0, $cmp299$i = 0, $cmp306 = 0, $cmp308$i = 0, $cmp315$i = 0, $cmp323 = 0, $cmp324$529$i = 0, $cmp324$i = 0, $cmp333$i = 0, $cmp338$i = 0, $cmp350$i = 0, $cmp363$525$i = 0, $cmp37 = 0, $cmp374$i = 0, $cmp377 = 0, $cmp377$314 = 0; - var $cmp38$i = 0, $cmp385 = 0, $cmp385$i = 0, $cmp390 = 0, $cmp390$i = 0, $cmp397 = 0, $cmp403$i = 0, $cmp404 = 0, $cmp404$324 = 0, $cmp411$i = 0, $cmp413 = 0, $cmp416$519$i = 0, $cmp416$i = 0, $cmp420$i = 0, $cmp421 = 0, $cmp433$515$i = 0, $cmp433$i = 0, $cmp434 = 0, $cmp442 = 0, $cmp443$i = 0; - var $cmp450$i = 0, $cmp450$lcssa$i = 0, $cmp466 = 0, $cmp470$i = 0, $cmp473$i = 0, $cmp478 = 0, $cmp478$295 = 0, $cmp48$i = 0, $cmp495$511$i = 0, $cmp495$i = 0, $cmp50 = 0, $cmp50$308 = 0, $cmp505$i = 0, $cmp515$i = 0, $cmp528$i = 0, $cmp563$i = 0, $cmp577$i = 0, $cmp59$i = 0, $cmp614$i = 0, $cmp617$i = 0; - var $cmp623$i = 0, $cmp636$506$i = 0, $cmp636$i = 0, $cmp65 = 0, $cmp660$i = 0, $cmp665$i = 0, $cmp673$i = 0, $cmp678$491$i = 0, $cmp678$i = 0, $cmp686$i = 0, $cmp707$486$i = 0, $cmp707$i = 0, $cmp710$487$i = 0, $cmp710$i = 0, $cmp722$483$i = 0, $cmp722$i = 0, $cmp727$i = 0, $cmp745$i = 0, $cmp748$499$i = 0, $cmp748$i = 0; - var $cmp75 = 0, $cmp760$i = 0, $cmp765$i = 0, $cmp770$495$i = 0, $cmp770$i = 0, $cmp777$i = 0, $cmp790$i = 0, $cmp818$i = 0, $cmp82$i = 0, $cmp94$i = 0, $cmp97 = 0, $cnt$0 = 0, $cnt$1 = 0, $cnt$1$lcssa = 0, $cond$i = 0, $cond100$i = 0, $cond233$i = 0, $cond245 = 0, $cond271$i = 0, $cond304$i = 0; - var $cond354 = 0, $cond426 = 0, $cond43$i = 0, $cond53$i = 0, $cond629$i = 0, $cond732$i = 0, $cond800$i = 0, $conv$4$i = 0, $conv$4$i$197 = 0, $conv$4$i$211 = 0, $conv$i = 0, $conv$i$205 = 0, $conv1$i = 0, $conv111$i = 0, $conv114$i = 0, $conv116$i = 0, $conv118$393$i = 0, $conv120 = 0, $conv121$i = 0, $conv123$i = 0.0; - var $conv134 = 0, $conv163 = 0, $conv174 = 0, $conv174$lcssa = 0, $conv207 = 0, $conv216$i = 0, $conv218$i = 0.0, $conv229 = 0, $conv232 = 0, $conv242$i$lcssa = 0, $conv32 = 0, $conv48 = 0, $conv48$307 = 0, $conv48311 = 0, $conv58 = 0, $conv644$i = 0, $conv646$i = 0, $conv69 = 0, $conv83 = 0, $d$0$542$i = 0; - var $d$0$i = 0, $d$0545$i = 0, $d$1534$i = 0, $d$2$lcssa$i = 0, $d$2520$i = 0, $d$4$i = 0, $d$5494$i = 0, $d$6488$i = 0, $d$7500$i = 0, $dec$i = 0, $dec476$i = 0, $dec481$i = 0, $dec78$i = 0, $div274$i = 0, $div356$i = 0, $div378$i = 0, $div384$i = 0, $e$0531$i = 0, $e$1$i = 0, $e$2517$i = 0; - var $e$4$i = 0, $e$5$ph$i = 0, $e2$i = 0, $ebuf0$i = 0, $estr$0$i = 0, $estr$1$lcssa$i = 0, $estr$1507$i = 0, $estr$2$i = 0, $exitcond$i = 0, $expanded = 0, $expanded10 = 0, $expanded11 = 0, $expanded13 = 0, $expanded14 = 0, $expanded15 = 0, $expanded4 = 0, $expanded6 = 0, $expanded7 = 0, $expanded8 = 0, $fl$0284 = 0; - var $fl$0310 = 0, $fl$1 = 0, $fl$1$and219 = 0, $fl$3 = 0, $fl$4 = 0, $fl$6 = 0, $i$0$lcssa = 0, $i$0$lcssa368 = 0, $i$0316 = 0, $i$0530$i = 0, $i$07$i = 0, $i$07$i$201 = 0, $i$1$lcssa$i = 0, $i$1325 = 0, $i$1526$i = 0, $i$2299 = 0, $i$2299$lcssa = 0, $i$2516$i = 0, $i$3296 = 0, $i$3512$i = 0; - var $i137 = 0, $i86 = 0, $idxprom$i = 0, $inc = 0, $inc$i = 0, $inc425$i = 0, $inc438$i = 0, $inc468$i = 0, $inc488 = 0, $inc500$i = 0, $incdec$ptr = 0, $incdec$ptr$i = 0, $incdec$ptr$i$204 = 0, $incdec$ptr$i$212 = 0, $incdec$ptr$i$212$lcssa = 0, $incdec$ptr$i$225 = 0, $incdec$ptr$i$lcssa = 0, $incdec$ptr106$i = 0, $incdec$ptr112$i = 0, $incdec$ptr115$i = 0; - var $incdec$ptr122$i = 0, $incdec$ptr137$i = 0, $incdec$ptr169 = 0, $incdec$ptr169$lcssa = 0, $incdec$ptr169269 = 0, $incdec$ptr169271 = 0, $incdec$ptr169271$lcssa414 = 0, $incdec$ptr169272 = 0, $incdec$ptr169274 = 0, $incdec$ptr169275 = 0, $incdec$ptr169276$lcssa = 0, $incdec$ptr169276301 = 0, $incdec$ptr217$i = 0, $incdec$ptr217$i$lcssa = 0, $incdec$ptr23 = 0, $incdec$ptr246$i = 0, $incdec$ptr288$i = 0, $incdec$ptr292$570$i = 0, $incdec$ptr292$a$3$571$i = 0, $incdec$ptr292$a$3$i = 0; - var $incdec$ptr292$a$3573$i = 0, $incdec$ptr292$i = 0, $incdec$ptr296$i = 0, $incdec$ptr383 = 0, $incdec$ptr410 = 0, $incdec$ptr419$i = 0, $incdec$ptr423$i = 0, $incdec$ptr62 = 0, $incdec$ptr639$i = 0, $incdec$ptr645$i = 0, $incdec$ptr647$i = 0, $incdec$ptr681$i = 0, $incdec$ptr689$i = 0, $incdec$ptr698$i = 0, $incdec$ptr698$i$lcssa = 0, $incdec$ptr725$i = 0, $incdec$ptr734$i = 0, $incdec$ptr773$i = 0, $incdec$ptr776$i = 0, $incdec$ptr808$i = 0; - var $isdigit = 0, $isdigit$6$i = 0, $isdigit$6$i$199 = 0, $isdigit$i = 0, $isdigit$i$207 = 0, $isdigit188 = 0, $isdigit190 = 0, $isdigittmp = 0, $isdigittmp$ = 0, $isdigittmp$5$i = 0, $isdigittmp$5$i$198 = 0, $isdigittmp$i = 0, $isdigittmp$i$206 = 0, $isdigittmp187 = 0, $isdigittmp189 = 0, $isdigittmp8$i = 0, $isdigittmp8$i$200 = 0, $j$0$524$i = 0, $j$0$i = 0, $j$0527$i = 0; - var $j$1513$i = 0, $j$2$i = 0, $l$0 = 0, $l$0$i = 0, $l$1$i = 0, $l$1315 = 0, $l$2 = 0, $l10n$0 = 0, $l10n$0$lcssa = 0, $l10n$0$phi = 0, $l10n$1 = 0, $l10n$2 = 0, $l10n$3 = 0, $land$ext$neg$i = 0, $lnot$ext = 0, $lnot$i = 0, $lnot455$i = 0, $lnot483 = 0, $lor$ext$i = 0, $mb = 0; - var $mul$i = 0, $mul$i$202 = 0, $mul$i$240 = 0.0, $mul125$i = 0.0, $mul202$i = 0.0, $mul220$i = 0.0, $mul286$i = 0, $mul286$i$lcssa = 0, $mul322$i = 0, $mul328$i = 0, $mul335$i = 0, $mul349$i = 0, $mul367$i = 0, $mul406$i = 0.0, $mul407$i = 0.0, $mul431$i = 0, $mul437$i = 0, $mul499$i = 0, $mul513$i = 0, $mul80$i = 0.0; - var $mul80$i$lcssa = 0.0, $notlhs$i = 0, $notrhs$i = 0, $or = 0, $or$cond = 0, $or$cond$i = 0, $or$cond1$not$i = 0, $or$cond192 = 0, $or$cond193 = 0, $or$cond195 = 0, $or$cond2$i = 0, $or$cond384 = 0, $or$cond395$i = 0, $or$cond397$i = 0, $or$cond401$i = 0, $or$i = 0, $or$i$241 = 0, $or100 = 0, $or120$i = 0, $or246 = 0; - var $or504$i = 0, $or613$i = 0, $p$0 = 0, $p$1 = 0, $p$2 = 0, $p$2$add322 = 0, $p$3 = 0, $p$4365 = 0, $p$5 = 0, $p$addr$2$$sub514398$i = 0, $p$addr$2$$sub562399$i = 0, $p$addr$2$i = 0, $p$addr$3$i = 0, $p$addr$4$lcssa$i = 0, $p$addr$4489$i = 0, $p$addr$5$lcssa$i = 0, $p$addr$5501$i = 0, $pl$0 = 0, $pl$0$i = 0, $pl$1 = 0; - var $pl$1$i = 0, $pl$2 = 0, $prefix$0 = 0, $prefix$0$add$ptr65$i = 0, $prefix$0$i = 0, $prefix$1 = 0, $prefix$2 = 0, $r$0$a$9$i = 0, $re$1482$i = 0, $rem360$i = 0, $rem370$i = 0, $rem494$510$i = 0, $rem494$i = 0, $retval$0 = 0, $retval$0$i = 0, $round$0481$i = 0.0, $round377$1$i = 0.0, $s$0$i = 0, $s$1$i = 0, $s$1$i$lcssa = 0; - var $s$addr$0$lcssa$i$229 = 0, $s$addr$06$i = 0, $s$addr$06$i$221 = 0, $s35$0$i = 0, $s668$0492$i = 0, $s668$1$i = 0, $s715$0$lcssa$i = 0, $s715$0484$i = 0, $s753$0$i = 0, $s753$1496$i = 0, $s753$2$i = 0, $shl = 0, $shl280$i = 0, $shl60 = 0, $shr = 0, $shr283$i = 0, $shr285$i = 0, $small$0$i = 0.0, $small$1$i = 0.0, $st$0 = 0; - var $st$0$lcssa415 = 0, $storemerge = 0, $storemerge$186282 = 0, $storemerge$186309 = 0, $storemerge$191 = 0, $sub = 0, $sub$i = 0.0, $sub$ptr$div$i = 0, $sub$ptr$div321$i = 0, $sub$ptr$div347$i = 0, $sub$ptr$div430$i = 0, $sub$ptr$div511$i = 0, $sub$ptr$lhs$cast = 0, $sub$ptr$lhs$cast$i = 0, $sub$ptr$lhs$cast160$i = 0, $sub$ptr$lhs$cast305$i = 0, $sub$ptr$lhs$cast317 = 0, $sub$ptr$lhs$cast344$i = 0, $sub$ptr$lhs$cast361 = 0, $sub$ptr$lhs$cast431 = 0; - var $sub$ptr$lhs$cast508$i = 0, $sub$ptr$lhs$cast694$i = 0, $sub$ptr$rhs$cast = 0, $sub$ptr$rhs$cast$i = 0, $sub$ptr$rhs$cast152$i = 0, $sub$ptr$rhs$cast161$i = 0, $sub$ptr$rhs$cast174$i = 0, $sub$ptr$rhs$cast267 = 0, $sub$ptr$rhs$cast306$i = 0, $sub$ptr$rhs$cast318 = 0, $sub$ptr$rhs$cast319$i = 0, $sub$ptr$rhs$cast345$i = 0, $sub$ptr$rhs$cast362 = 0, $sub$ptr$rhs$cast428$i = 0, $sub$ptr$rhs$cast432 = 0, $sub$ptr$rhs$cast634$504$i = 0, $sub$ptr$rhs$cast634$i = 0, $sub$ptr$rhs$cast649$i = 0, $sub$ptr$rhs$cast695$i = 0, $sub$ptr$rhs$cast788$i = 0; - var $sub$ptr$rhs$cast812$i = 0, $sub$ptr$sub = 0, $sub$ptr$sub$i = 0, $sub$ptr$sub145$i = 0, $sub$ptr$sub153$i = 0, $sub$ptr$sub159$i = 0, $sub$ptr$sub162$i = 0, $sub$ptr$sub172$i = 0, $sub$ptr$sub175$i = 0, $sub$ptr$sub268 = 0, $sub$ptr$sub307$i = 0, $sub$ptr$sub319 = 0, $sub$ptr$sub320$i = 0, $sub$ptr$sub346$i = 0, $sub$ptr$sub363 = 0, $sub$ptr$sub429$i = 0, $sub$ptr$sub433 = 0, $sub$ptr$sub433$p$5 = 0, $sub$ptr$sub510$i = 0, $sub$ptr$sub635$505$i = 0; - var $sub$ptr$sub635$i = 0, $sub$ptr$sub650$i = 0, $sub$ptr$sub650$pn$i = 0, $sub$ptr$sub696$i = 0, $sub$ptr$sub789$i = 0, $sub$ptr$sub813$i = 0, $sub101 = 0, $sub124$i = 0.0, $sub135 = 0, $sub146$i = 0, $sub164 = 0, $sub175 = 0, $sub181$i = 0, $sub203$i = 0, $sub219$i = 0.0, $sub256$i = 0, $sub264$i = 0, $sub281$i = 0, $sub336$i = 0, $sub343$i = 0; - var $sub357$i = 0, $sub389 = 0, $sub409$i = 0, $sub478$i = 0, $sub480$i = 0, $sub514$i = 0, $sub54 = 0, $sub562$i = 0, $sub59 = 0, $sub626$le$i = 0, $sub735$i = 0, $sub74$i = 0, $sub806$i = 0, $sub84 = 0, $sub85$i = 0.0, $sub86$i = 0.0, $sub88$i = 0.0, $sub91$i = 0.0, $sub97$i = 0, $sum = 0; - var $t$0 = 0, $t$1 = 0, $t$addr$0$i = 0, $t$addr$1$i = 0, $tobool = 0, $tobool$i = 0, $tobool$i$217 = 0, $tobool$i$232 = 0, $tobool$i$245 = 0, $tobool$i$407$i = 0, $tobool$i$413$i = 0, $tobool$i$419$i = 0, $tobool$i$425$i = 0, $tobool$i$431$i = 0, $tobool$i$437$i = 0, $tobool$i$443$i = 0, $tobool$i$449$i = 0, $tobool$i$455$i = 0, $tobool$i$461$i = 0, $tobool$i$467$i = 0; - var $tobool$i$473$i = 0, $tobool$i$i = 0, $tobool13$i = 0, $tobool135$i = 0, $tobool139$i = 0, $tobool140$i = 0, $tobool141 = 0, $tobool178 = 0, $tobool208 = 0, $tobool217 = 0, $tobool222$i = 0, $tobool244$i = 0, $tobool25 = 0, $tobool255 = 0, $tobool264 = 0, $tobool28 = 0, $tobool290 = 0, $tobool290$569$i = 0, $tobool290$i = 0, $tobool294$i = 0; - var $tobool295 = 0, $tobool314 = 0, $tobool341$i = 0, $tobool349 = 0, $tobool357 = 0, $tobool37$i = 0, $tobool371$i = 0, $tobool380 = 0, $tobool380$i = 0, $tobool400$i = 0, $tobool407 = 0, $tobool459 = 0, $tobool462 = 0, $tobool470 = 0, $tobool484$i = 0, $tobool490$i = 0, $tobool55 = 0, $tobool56$i = 0, $tobool63$i = 0, $tobool76$i = 0; - var $tobool76552$i = 0, $tobool781$i = 0, $tobool79$i = 0, $tobool9$i = 0, $tobool90 = 0, $w$0 = 0, $w$1 = 0, $w$2 = 0, $w$add165$i = 0, $w$add653$i = 0, $wc = 0, $ws$0317 = 0, $ws$1326 = 0, $xor = 0, $xor$i = 0, $xor167$i = 0, $xor186$i = 0, $xor449 = 0, $xor457 = 0, $xor655$i = 0; - var $xor816$i = 0, $y$addr$0$i = 0.0, $y$addr$1$i = 0.0, $y$addr$2$i = 0.0, $y$addr$3$i = 0.0, $y$addr$4$i = 0.0, $z$0$i = 0, $z$0$lcssa = 0, $z$0302 = 0, $z$1 = 0, $z$1$lcssa$i = 0, $z$1548$i = 0, $z$2 = 0, $z$2$i = 0, $z$2$i$lcssa = 0, $z$3$lcssa$i = 0, $z$3538$i = 0, $z$4$i = 0, $z$7$add$ptr742$i = 0, $z$7$i = 0; - var $z$7$i$lcssa = 0, $z$7$ph$i = 0, label = 0, sp = 0; - sp = STACKTOP; - STACKTOP = STACKTOP + 624|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abort(); - $big$i = sp + 24|0; - $e2$i = sp + 16|0; - $buf$i = sp + 588|0; - $ebuf0$i = sp + 576|0; - $arg = sp; - $buf = sp + 536|0; - $wc = sp + 8|0; - $mb = sp + 528|0; - $tobool25 = ($f|0)!=(0|0); - $add$ptr205 = ((($buf)) + 40|0); - $sub$ptr$lhs$cast317 = $add$ptr205; - $add$ptr340 = ((($buf)) + 39|0); - $arrayidx370 = ((($wc)) + 4|0); - $arrayidx$i$236 = ((($ebuf0$i)) + 12|0); - $incdec$ptr106$i = ((($ebuf0$i)) + 11|0); - $sub$ptr$rhs$cast$i = $buf$i; - $sub$ptr$lhs$cast160$i = $arrayidx$i$236; - $sub$ptr$sub159$i = (($sub$ptr$lhs$cast160$i) - ($sub$ptr$rhs$cast$i))|0; - $sub$ptr$sub145$i = (-2 - ($sub$ptr$rhs$cast$i))|0; - $sub$ptr$sub153$i = (($sub$ptr$lhs$cast160$i) + 2)|0; - $add$ptr213$i = ((($big$i)) + 288|0); - $add$ptr671$i = ((($buf$i)) + 9|0); - $sub$ptr$lhs$cast694$i = $add$ptr671$i; - $incdec$ptr689$i = ((($buf$i)) + 8|0); - $cnt$0 = 0;$incdec$ptr169275 = $fmt;$l$0 = 0;$l10n$0 = 0; - L1: while(1) { - $cmp = ($cnt$0|0)>(-1); - do { - if ($cmp) { - $sub = (2147483647 - ($cnt$0))|0; - $cmp1 = ($l$0|0)>($sub|0); - if ($cmp1) { - $call = (___errno_location()|0); - HEAP32[$call>>2] = 75; - $cnt$1 = -1; - break; - } else { - $add = (($l$0) + ($cnt$0))|0; - $cnt$1 = $add; - break; - } - } else { - $cnt$1 = $cnt$0; - } - } while(0); - $0 = HEAP8[$incdec$ptr169275>>0]|0; - $tobool = ($0<<24>>24)==(0); - if ($tobool) { - $cnt$1$lcssa = $cnt$1;$l10n$0$lcssa = $l10n$0; - label = 242; - break; - } else { - $1 = $0;$incdec$ptr169274 = $incdec$ptr169275; - } - L9: while(1) { - switch ($1<<24>>24) { - case 37: { - $incdec$ptr169276301 = $incdec$ptr169274;$z$0302 = $incdec$ptr169274; - label = 9; - break L9; - break; - } - case 0: { - $incdec$ptr169276$lcssa = $incdec$ptr169274;$z$0$lcssa = $incdec$ptr169274; - break L9; - break; - } - default: { - } - } - $incdec$ptr = ((($incdec$ptr169274)) + 1|0); - $$pre = HEAP8[$incdec$ptr>>0]|0; - $1 = $$pre;$incdec$ptr169274 = $incdec$ptr; - } - L12: do { - if ((label|0) == 9) { - while(1) { - label = 0; - $arrayidx16 = ((($incdec$ptr169276301)) + 1|0); - $2 = HEAP8[$arrayidx16>>0]|0; - $cmp18 = ($2<<24>>24)==(37); - if (!($cmp18)) { - $incdec$ptr169276$lcssa = $incdec$ptr169276301;$z$0$lcssa = $z$0302; - break L12; - } - $incdec$ptr23 = ((($z$0302)) + 1|0); - $add$ptr = ((($incdec$ptr169276301)) + 2|0); - $3 = HEAP8[$add$ptr>>0]|0; - $cmp13 = ($3<<24>>24)==(37); - if ($cmp13) { - $incdec$ptr169276301 = $add$ptr;$z$0302 = $incdec$ptr23; - label = 9; - } else { - $incdec$ptr169276$lcssa = $add$ptr;$z$0$lcssa = $incdec$ptr23; - break; - } - } - } - } while(0); - $sub$ptr$lhs$cast = $z$0$lcssa; - $sub$ptr$rhs$cast = $incdec$ptr169275; - $sub$ptr$sub = (($sub$ptr$lhs$cast) - ($sub$ptr$rhs$cast))|0; - if ($tobool25) { - $4 = HEAP32[$f>>2]|0; - $and$i = $4 & 32; - $tobool$i = ($and$i|0)==(0); - if ($tobool$i) { - (___fwritex($incdec$ptr169275,$sub$ptr$sub,$f)|0); - } - } - $tobool28 = ($z$0$lcssa|0)==($incdec$ptr169275|0); - if (!($tobool28)) { - $l10n$0$phi = $l10n$0;$cnt$0 = $cnt$1;$incdec$ptr169275 = $incdec$ptr169276$lcssa;$l$0 = $sub$ptr$sub;$l10n$0 = $l10n$0$phi; - continue; - } - $arrayidx31 = ((($incdec$ptr169276$lcssa)) + 1|0); - $5 = HEAP8[$arrayidx31>>0]|0; - $conv32 = $5 << 24 >> 24; - $isdigittmp = (($conv32) + -48)|0; - $isdigit = ($isdigittmp>>>0)<(10); - if ($isdigit) { - $arrayidx35 = ((($incdec$ptr169276$lcssa)) + 2|0); - $6 = HEAP8[$arrayidx35>>0]|0; - $cmp37 = ($6<<24>>24)==(36); - $add$ptr43 = ((($incdec$ptr169276$lcssa)) + 3|0); - $add$ptr43$arrayidx31 = $cmp37 ? $add$ptr43 : $arrayidx31; - $$l10n$0 = $cmp37 ? 1 : $l10n$0; - $isdigittmp$ = $cmp37 ? $isdigittmp : -1; - $$pre357 = HEAP8[$add$ptr43$arrayidx31>>0]|0; - $7 = $$pre357;$argpos$0 = $isdigittmp$;$l10n$1 = $$l10n$0;$storemerge = $add$ptr43$arrayidx31; - } else { - $7 = $5;$argpos$0 = -1;$l10n$1 = $l10n$0;$storemerge = $arrayidx31; - } - $conv48$307 = $7 << 24 >> 24; - $8 = $conv48$307 & -32; - $cmp50$308 = ($8|0)==(32); - L25: do { - if ($cmp50$308) { - $9 = $7;$conv48311 = $conv48$307;$fl$0310 = 0;$storemerge$186309 = $storemerge; - while(1) { - $sub54 = (($conv48311) + -32)|0; - $shl = 1 << $sub54; - $and = $shl & 75913; - $tobool55 = ($and|0)==(0); - if ($tobool55) { - $12 = $9;$fl$0284 = $fl$0310;$storemerge$186282 = $storemerge$186309; - break L25; - } - $conv58 = $9 << 24 >> 24; - $sub59 = (($conv58) + -32)|0; - $shl60 = 1 << $sub59; - $or = $shl60 | $fl$0310; - $incdec$ptr62 = ((($storemerge$186309)) + 1|0); - $10 = HEAP8[$incdec$ptr62>>0]|0; - $conv48 = $10 << 24 >> 24; - $11 = $conv48 & -32; - $cmp50 = ($11|0)==(32); - if ($cmp50) { - $9 = $10;$conv48311 = $conv48;$fl$0310 = $or;$storemerge$186309 = $incdec$ptr62; - } else { - $12 = $10;$fl$0284 = $or;$storemerge$186282 = $incdec$ptr62; - break; - } - } - } else { - $12 = $7;$fl$0284 = 0;$storemerge$186282 = $storemerge; - } - } while(0); - $cmp65 = ($12<<24>>24)==(42); - do { - if ($cmp65) { - $arrayidx68 = ((($storemerge$186282)) + 1|0); - $13 = HEAP8[$arrayidx68>>0]|0; - $conv69 = $13 << 24 >> 24; - $isdigittmp189 = (($conv69) + -48)|0; - $isdigit190 = ($isdigittmp189>>>0)<(10); - if ($isdigit190) { - $arrayidx73 = ((($storemerge$186282)) + 2|0); - $14 = HEAP8[$arrayidx73>>0]|0; - $cmp75 = ($14<<24>>24)==(36); - if ($cmp75) { - $arrayidx81 = (($nl_type) + ($isdigittmp189<<2)|0); - HEAP32[$arrayidx81>>2] = 10; - $15 = HEAP8[$arrayidx68>>0]|0; - $conv83 = $15 << 24 >> 24; - $sub84 = (($conv83) + -48)|0; - $i86 = (($nl_arg) + ($sub84<<3)|0); - $16 = $i86; - $17 = $16; - $18 = HEAP32[$17>>2]|0; - $19 = (($16) + 4)|0; - $20 = $19; - $21 = HEAP32[$20>>2]|0; - $add$ptr88 = ((($storemerge$186282)) + 3|0); - $l10n$2 = 1;$storemerge$191 = $add$ptr88;$w$0 = $18; - } else { - label = 24; - } - } else { - label = 24; - } - if ((label|0) == 24) { - label = 0; - $tobool90 = ($l10n$1|0)==(0); - if (!($tobool90)) { - $retval$0 = -1; - break L1; - } - if (!($tobool25)) { - $fl$1 = $fl$0284;$incdec$ptr169269 = $arrayidx68;$l10n$3 = 0;$w$1 = 0; - break; - } - $arglist_current = HEAP32[$ap>>2]|0; - $22 = $arglist_current; - $23 = ((0) + 4|0); - $expanded4 = $23; - $expanded = (($expanded4) - 1)|0; - $24 = (($22) + ($expanded))|0; - $25 = ((0) + 4|0); - $expanded8 = $25; - $expanded7 = (($expanded8) - 1)|0; - $expanded6 = $expanded7 ^ -1; - $26 = $24 & $expanded6; - $27 = $26; - $28 = HEAP32[$27>>2]|0; - $arglist_next = ((($27)) + 4|0); - HEAP32[$ap>>2] = $arglist_next; - $l10n$2 = 0;$storemerge$191 = $arrayidx68;$w$0 = $28; - } - $cmp97 = ($w$0|0)<(0); - if ($cmp97) { - $or100 = $fl$0284 | 8192; - $sub101 = (0 - ($w$0))|0; - $fl$1 = $or100;$incdec$ptr169269 = $storemerge$191;$l10n$3 = $l10n$2;$w$1 = $sub101; - } else { - $fl$1 = $fl$0284;$incdec$ptr169269 = $storemerge$191;$l10n$3 = $l10n$2;$w$1 = $w$0; - } - } else { - $conv$4$i = $12 << 24 >> 24; - $isdigittmp$5$i = (($conv$4$i) + -48)|0; - $isdigit$6$i = ($isdigittmp$5$i>>>0)<(10); - if ($isdigit$6$i) { - $29 = $storemerge$186282;$i$07$i = 0;$isdigittmp8$i = $isdigittmp$5$i; - while(1) { - $mul$i = ($i$07$i*10)|0; - $add$i = (($mul$i) + ($isdigittmp8$i))|0; - $incdec$ptr$i = ((($29)) + 1|0); - $30 = HEAP8[$incdec$ptr$i>>0]|0; - $conv$i = $30 << 24 >> 24; - $isdigittmp$i = (($conv$i) + -48)|0; - $isdigit$i = ($isdigittmp$i>>>0)<(10); - if ($isdigit$i) { - $29 = $incdec$ptr$i;$i$07$i = $add$i;$isdigittmp8$i = $isdigittmp$i; - } else { - $add$i$lcssa = $add$i;$incdec$ptr$i$lcssa = $incdec$ptr$i; - break; - } - } - $cmp105 = ($add$i$lcssa|0)<(0); - if ($cmp105) { - $retval$0 = -1; - break L1; - } else { - $fl$1 = $fl$0284;$incdec$ptr169269 = $incdec$ptr$i$lcssa;$l10n$3 = $l10n$1;$w$1 = $add$i$lcssa; - } - } else { - $fl$1 = $fl$0284;$incdec$ptr169269 = $storemerge$186282;$l10n$3 = $l10n$1;$w$1 = 0; - } - } - } while(0); - $31 = HEAP8[$incdec$ptr169269>>0]|0; - $cmp111 = ($31<<24>>24)==(46); - L46: do { - if ($cmp111) { - $arrayidx114 = ((($incdec$ptr169269)) + 1|0); - $32 = HEAP8[$arrayidx114>>0]|0; - $cmp116 = ($32<<24>>24)==(42); - if (!($cmp116)) { - $conv$4$i$197 = $32 << 24 >> 24; - $isdigittmp$5$i$198 = (($conv$4$i$197) + -48)|0; - $isdigit$6$i$199 = ($isdigittmp$5$i$198>>>0)<(10); - if ($isdigit$6$i$199) { - $49 = $arrayidx114;$i$07$i$201 = 0;$isdigittmp8$i$200 = $isdigittmp$5$i$198; - } else { - $incdec$ptr169272 = $arrayidx114;$p$0 = 0; - break; - } - while(1) { - $mul$i$202 = ($i$07$i$201*10)|0; - $add$i$203 = (($mul$i$202) + ($isdigittmp8$i$200))|0; - $incdec$ptr$i$204 = ((($49)) + 1|0); - $50 = HEAP8[$incdec$ptr$i$204>>0]|0; - $conv$i$205 = $50 << 24 >> 24; - $isdigittmp$i$206 = (($conv$i$205) + -48)|0; - $isdigit$i$207 = ($isdigittmp$i$206>>>0)<(10); - if ($isdigit$i$207) { - $49 = $incdec$ptr$i$204;$i$07$i$201 = $add$i$203;$isdigittmp8$i$200 = $isdigittmp$i$206; - } else { - $incdec$ptr169272 = $incdec$ptr$i$204;$p$0 = $add$i$203; - break L46; - } - } - } - $arrayidx119 = ((($incdec$ptr169269)) + 2|0); - $33 = HEAP8[$arrayidx119>>0]|0; - $conv120 = $33 << 24 >> 24; - $isdigittmp187 = (($conv120) + -48)|0; - $isdigit188 = ($isdigittmp187>>>0)<(10); - if ($isdigit188) { - $arrayidx124 = ((($incdec$ptr169269)) + 3|0); - $34 = HEAP8[$arrayidx124>>0]|0; - $cmp126 = ($34<<24>>24)==(36); - if ($cmp126) { - $arrayidx132 = (($nl_type) + ($isdigittmp187<<2)|0); - HEAP32[$arrayidx132>>2] = 10; - $35 = HEAP8[$arrayidx119>>0]|0; - $conv134 = $35 << 24 >> 24; - $sub135 = (($conv134) + -48)|0; - $i137 = (($nl_arg) + ($sub135<<3)|0); - $36 = $i137; - $37 = $36; - $38 = HEAP32[$37>>2]|0; - $39 = (($36) + 4)|0; - $40 = $39; - $41 = HEAP32[$40>>2]|0; - $add$ptr139 = ((($incdec$ptr169269)) + 4|0); - $incdec$ptr169272 = $add$ptr139;$p$0 = $38; - break; - } - } - $tobool141 = ($l10n$3|0)==(0); - if (!($tobool141)) { - $retval$0 = -1; - break L1; - } - if ($tobool25) { - $arglist_current2 = HEAP32[$ap>>2]|0; - $42 = $arglist_current2; - $43 = ((0) + 4|0); - $expanded11 = $43; - $expanded10 = (($expanded11) - 1)|0; - $44 = (($42) + ($expanded10))|0; - $45 = ((0) + 4|0); - $expanded15 = $45; - $expanded14 = (($expanded15) - 1)|0; - $expanded13 = $expanded14 ^ -1; - $46 = $44 & $expanded13; - $47 = $46; - $48 = HEAP32[$47>>2]|0; - $arglist_next3 = ((($47)) + 4|0); - HEAP32[$ap>>2] = $arglist_next3; - $incdec$ptr169272 = $arrayidx119;$p$0 = $48; - } else { - $incdec$ptr169272 = $arrayidx119;$p$0 = 0; - } - } else { - $incdec$ptr169272 = $incdec$ptr169269;$p$0 = -1; - } - } while(0); - $incdec$ptr169271 = $incdec$ptr169272;$st$0 = 0; - while(1) { - $51 = HEAP8[$incdec$ptr169271>>0]|0; - $conv163 = $51 << 24 >> 24; - $sub164 = (($conv163) + -65)|0; - $cmp165 = ($sub164>>>0)>(57); - if ($cmp165) { - $retval$0 = -1; - break L1; - } - $incdec$ptr169 = ((($incdec$ptr169271)) + 1|0); - $arrayidx173 = ((3611 + (($st$0*58)|0)|0) + ($sub164)|0); - $52 = HEAP8[$arrayidx173>>0]|0; - $conv174 = $52&255; - $sub175 = (($conv174) + -1)|0; - $cmp176 = ($sub175>>>0)<(8); - if ($cmp176) { - $incdec$ptr169271 = $incdec$ptr169;$st$0 = $conv174; - } else { - $$lcssa = $52;$conv174$lcssa = $conv174;$incdec$ptr169$lcssa = $incdec$ptr169;$incdec$ptr169271$lcssa414 = $incdec$ptr169271;$st$0$lcssa415 = $st$0; - break; - } - } - $tobool178 = ($$lcssa<<24>>24)==(0); - if ($tobool178) { - $retval$0 = -1; - break; - } - $cmp181 = ($$lcssa<<24>>24)==(19); - $cmp184 = ($argpos$0|0)>(-1); - do { - if ($cmp181) { - if ($cmp184) { - $retval$0 = -1; - break L1; - } else { - label = 52; - } - } else { - if ($cmp184) { - $arrayidx192 = (($nl_type) + ($argpos$0<<2)|0); - HEAP32[$arrayidx192>>2] = $conv174$lcssa; - $53 = (($nl_arg) + ($argpos$0<<3)|0); - $54 = $53; - $55 = $54; - $56 = HEAP32[$55>>2]|0; - $57 = (($54) + 4)|0; - $58 = $57; - $59 = HEAP32[$58>>2]|0; - $60 = $arg; - $61 = $60; - HEAP32[$61>>2] = $56; - $62 = (($60) + 4)|0; - $63 = $62; - HEAP32[$63>>2] = $59; - label = 52; - break; - } - if (!($tobool25)) { - $retval$0 = 0; - break L1; - } - _pop_arg_336($arg,$conv174$lcssa,$ap); - } - } while(0); - if ((label|0) == 52) { - label = 0; - if (!($tobool25)) { - $cnt$0 = $cnt$1;$incdec$ptr169275 = $incdec$ptr169$lcssa;$l$0 = $sub$ptr$sub;$l10n$0 = $l10n$3; - continue; - } - } - $64 = HEAP8[$incdec$ptr169271$lcssa414>>0]|0; - $conv207 = $64 << 24 >> 24; - $tobool208 = ($st$0$lcssa415|0)!=(0); - $and210 = $conv207 & 15; - $cmp211 = ($and210|0)==(3); - $or$cond192 = $tobool208 & $cmp211; - $and214 = $conv207 & -33; - $t$0 = $or$cond192 ? $and214 : $conv207; - $and216 = $fl$1 & 8192; - $tobool217 = ($and216|0)==(0); - $and219 = $fl$1 & -65537; - $fl$1$and219 = $tobool217 ? $fl$1 : $and219; - L75: do { - switch ($t$0|0) { - case 110: { - switch ($st$0$lcssa415|0) { - case 0: { - $71 = HEAP32[$arg>>2]|0; - HEAP32[$71>>2] = $cnt$1; - $cnt$0 = $cnt$1;$incdec$ptr169275 = $incdec$ptr169$lcssa;$l$0 = $sub$ptr$sub;$l10n$0 = $l10n$3; - continue L1; - break; - } - case 1: { - $72 = HEAP32[$arg>>2]|0; - HEAP32[$72>>2] = $cnt$1; - $cnt$0 = $cnt$1;$incdec$ptr169275 = $incdec$ptr169$lcssa;$l$0 = $sub$ptr$sub;$l10n$0 = $l10n$3; - continue L1; - break; - } - case 2: { - $73 = ($cnt$1|0)<(0); - $74 = $73 << 31 >> 31; - $75 = HEAP32[$arg>>2]|0; - $76 = $75; - $77 = $76; - HEAP32[$77>>2] = $cnt$1; - $78 = (($76) + 4)|0; - $79 = $78; - HEAP32[$79>>2] = $74; - $cnt$0 = $cnt$1;$incdec$ptr169275 = $incdec$ptr169$lcssa;$l$0 = $sub$ptr$sub;$l10n$0 = $l10n$3; - continue L1; - break; - } - case 3: { - $conv229 = $cnt$1&65535; - $80 = HEAP32[$arg>>2]|0; - HEAP16[$80>>1] = $conv229; - $cnt$0 = $cnt$1;$incdec$ptr169275 = $incdec$ptr169$lcssa;$l$0 = $sub$ptr$sub;$l10n$0 = $l10n$3; - continue L1; - break; - } - case 4: { - $conv232 = $cnt$1&255; - $81 = HEAP32[$arg>>2]|0; - HEAP8[$81>>0] = $conv232; - $cnt$0 = $cnt$1;$incdec$ptr169275 = $incdec$ptr169$lcssa;$l$0 = $sub$ptr$sub;$l10n$0 = $l10n$3; - continue L1; - break; - } - case 6: { - $82 = HEAP32[$arg>>2]|0; - HEAP32[$82>>2] = $cnt$1; - $cnt$0 = $cnt$1;$incdec$ptr169275 = $incdec$ptr169$lcssa;$l$0 = $sub$ptr$sub;$l10n$0 = $l10n$3; - continue L1; - break; - } - case 7: { - $83 = ($cnt$1|0)<(0); - $84 = $83 << 31 >> 31; - $85 = HEAP32[$arg>>2]|0; - $86 = $85; - $87 = $86; - HEAP32[$87>>2] = $cnt$1; - $88 = (($86) + 4)|0; - $89 = $88; - HEAP32[$89>>2] = $84; - $cnt$0 = $cnt$1;$incdec$ptr169275 = $incdec$ptr169$lcssa;$l$0 = $sub$ptr$sub;$l10n$0 = $l10n$3; - continue L1; - break; - } - default: { - $cnt$0 = $cnt$1;$incdec$ptr169275 = $incdec$ptr169$lcssa;$l$0 = $sub$ptr$sub;$l10n$0 = $l10n$3; - continue L1; - } - } - break; - } - case 112: { - $cmp240 = ($p$0>>>0)>(8); - $cond245 = $cmp240 ? $p$0 : 8; - $or246 = $fl$1$and219 | 8; - $fl$3 = $or246;$p$1 = $cond245;$t$1 = 120; - label = 64; - break; - } - case 88: case 120: { - $fl$3 = $fl$1$and219;$p$1 = $p$0;$t$1 = $t$0; - label = 64; - break; - } - case 111: { - $116 = $arg; - $117 = $116; - $118 = HEAP32[$117>>2]|0; - $119 = (($116) + 4)|0; - $120 = $119; - $121 = HEAP32[$120>>2]|0; - $122 = ($118|0)==(0); - $123 = ($121|0)==(0); - $124 = $122 & $123; - if ($124) { - $s$addr$0$lcssa$i$229 = $add$ptr205; - } else { - $126 = $118;$129 = $121;$s$addr$06$i$221 = $add$ptr205; - while(1) { - $125 = $126 & 7; - $127 = $125 | 48; - $128 = $127&255; - $incdec$ptr$i$225 = ((($s$addr$06$i$221)) + -1|0); - HEAP8[$incdec$ptr$i$225>>0] = $128; - $130 = (_bitshift64Lshr(($126|0),($129|0),3)|0); - $131 = tempRet0; - $132 = ($130|0)==(0); - $133 = ($131|0)==(0); - $134 = $132 & $133; - if ($134) { - $s$addr$0$lcssa$i$229 = $incdec$ptr$i$225; - break; - } else { - $126 = $130;$129 = $131;$s$addr$06$i$221 = $incdec$ptr$i$225; - } - } - } - $and263 = $fl$1$and219 & 8; - $tobool264 = ($and263|0)==(0); - if ($tobool264) { - $a$0 = $s$addr$0$lcssa$i$229;$fl$4 = $fl$1$and219;$p$2 = $p$0;$pl$1 = 0;$prefix$1 = 4091; - label = 77; - } else { - $sub$ptr$rhs$cast267 = $s$addr$0$lcssa$i$229; - $sub$ptr$sub268 = (($sub$ptr$lhs$cast317) - ($sub$ptr$rhs$cast267))|0; - $add269 = (($sub$ptr$sub268) + 1)|0; - $cmp270 = ($p$0|0)<($add269|0); - $add269$p$0 = $cmp270 ? $add269 : $p$0; - $a$0 = $s$addr$0$lcssa$i$229;$fl$4 = $fl$1$and219;$p$2 = $add269$p$0;$pl$1 = 0;$prefix$1 = 4091; - label = 77; - } - break; - } - case 105: case 100: { - $135 = $arg; - $136 = $135; - $137 = HEAP32[$136>>2]|0; - $138 = (($135) + 4)|0; - $139 = $138; - $140 = HEAP32[$139>>2]|0; - $141 = ($140|0)<(0); - if ($141) { - $142 = (_i64Subtract(0,0,($137|0),($140|0))|0); - $143 = tempRet0; - $144 = $arg; - $145 = $144; - HEAP32[$145>>2] = $142; - $146 = (($144) + 4)|0; - $147 = $146; - HEAP32[$147>>2] = $143; - $148 = $142;$149 = $143;$pl$0 = 1;$prefix$0 = 4091; - label = 76; - break L75; - } - $and289 = $fl$1$and219 & 2048; - $tobool290 = ($and289|0)==(0); - if ($tobool290) { - $and294 = $fl$1$and219 & 1; - $tobool295 = ($and294|0)==(0); - $$ = $tobool295 ? 4091 : (4093); - $148 = $137;$149 = $140;$pl$0 = $and294;$prefix$0 = $$; - label = 76; - } else { - $148 = $137;$149 = $140;$pl$0 = 1;$prefix$0 = (4092); - label = 76; - } - break; - } - case 117: { - $65 = $arg; - $66 = $65; - $67 = HEAP32[$66>>2]|0; - $68 = (($65) + 4)|0; - $69 = $68; - $70 = HEAP32[$69>>2]|0; - $148 = $67;$149 = $70;$pl$0 = 0;$prefix$0 = 4091; - label = 76; - break; - } - case 99: { - $161 = $arg; - $162 = $161; - $163 = HEAP32[$162>>2]|0; - $164 = (($161) + 4)|0; - $165 = $164; - $166 = HEAP32[$165>>2]|0; - $167 = $163&255; - HEAP8[$add$ptr340>>0] = $167; - $a$2 = $add$ptr340;$fl$6 = $and219;$p$5 = 1;$pl$2 = 0;$prefix$2 = 4091;$z$2 = $add$ptr205; - break; - } - case 109: { - $call344 = (___errno_location()|0); - $168 = HEAP32[$call344>>2]|0; - $call345 = (_strerror($168)|0); - $a$1 = $call345; - label = 82; - break; - } - case 115: { - $169 = HEAP32[$arg>>2]|0; - $tobool349 = ($169|0)!=(0|0); - $cond354 = $tobool349 ? $169 : 4101; - $a$1 = $cond354; - label = 82; - break; - } - case 67: { - $170 = $arg; - $171 = $170; - $172 = HEAP32[$171>>2]|0; - $173 = (($170) + 4)|0; - $174 = $173; - $175 = HEAP32[$174>>2]|0; - HEAP32[$wc>>2] = $172; - HEAP32[$arrayidx370>>2] = 0; - HEAP32[$arg>>2] = $wc; - $p$4365 = -1; - label = 86; - break; - } - case 83: { - $cmp377$314 = ($p$0|0)==(0); - if ($cmp377$314) { - _pad($f,32,$w$1,0,$fl$1$and219); - $i$0$lcssa368 = 0; - label = 98; - } else { - $p$4365 = $p$0; - label = 86; - } - break; - } - case 65: case 71: case 70: case 69: case 97: case 103: case 102: case 101: { - $181 = +HEAPF64[$arg>>3]; - HEAP32[$e2$i>>2] = 0; - HEAPF64[tempDoublePtr>>3] = $181;$182 = HEAP32[tempDoublePtr>>2]|0; - $183 = HEAP32[tempDoublePtr+4>>2]|0; - $184 = ($183|0)<(0); - if ($184) { - $sub$i = -$181; - $pl$0$i = 1;$prefix$0$i = 4108;$y$addr$0$i = $sub$i; - } else { - $and$i$238 = $fl$1$and219 & 2048; - $tobool9$i = ($and$i$238|0)==(0); - if ($tobool9$i) { - $and12$i = $fl$1$and219 & 1; - $tobool13$i = ($and12$i|0)==(0); - $$$i = $tobool13$i ? (4109) : (4114); - $pl$0$i = $and12$i;$prefix$0$i = $$$i;$y$addr$0$i = $181; - } else { - $pl$0$i = 1;$prefix$0$i = (4111);$y$addr$0$i = $181; - } - } - HEAPF64[tempDoublePtr>>3] = $y$addr$0$i;$185 = HEAP32[tempDoublePtr>>2]|0; - $186 = HEAP32[tempDoublePtr+4>>2]|0; - $187 = $186 & 2146435072; - $188 = ($187>>>0)<(2146435072); - $189 = (0)<(0); - $190 = ($187|0)==(2146435072); - $191 = $190 & $189; - $192 = $188 | $191; - do { - if ($192) { - $call55$i = (+_frexpl($y$addr$0$i,$e2$i)); - $mul$i$240 = $call55$i * 2.0; - $tobool56$i = $mul$i$240 != 0.0; - if ($tobool56$i) { - $195 = HEAP32[$e2$i>>2]|0; - $dec$i = (($195) + -1)|0; - HEAP32[$e2$i>>2] = $dec$i; - } - $or$i$241 = $t$0 | 32; - $cmp59$i = ($or$i$241|0)==(97); - if ($cmp59$i) { - $and62$i = $t$0 & 32; - $tobool63$i = ($and62$i|0)==(0); - $add$ptr65$i = ((($prefix$0$i)) + 9|0); - $prefix$0$add$ptr65$i = $tobool63$i ? $prefix$0$i : $add$ptr65$i; - $add67$i = $pl$0$i | 2; - $196 = ($p$0>>>0)>(11); - $sub74$i = (12 - ($p$0))|0; - $tobool76552$i = ($sub74$i|0)==(0); - $tobool76$i = $196 | $tobool76552$i; - do { - if ($tobool76$i) { - $y$addr$1$i = $mul$i$240; - } else { - $re$1482$i = $sub74$i;$round$0481$i = 8.0; - while(1) { - $dec78$i = (($re$1482$i) + -1)|0; - $mul80$i = $round$0481$i * 16.0; - $tobool79$i = ($dec78$i|0)==(0); - if ($tobool79$i) { - $mul80$i$lcssa = $mul80$i; - break; - } else { - $re$1482$i = $dec78$i;$round$0481$i = $mul80$i; - } - } - $197 = HEAP8[$prefix$0$add$ptr65$i>>0]|0; - $cmp82$i = ($197<<24>>24)==(45); - if ($cmp82$i) { - $sub85$i = -$mul$i$240; - $sub86$i = $sub85$i - $mul80$i$lcssa; - $add87$i = $mul80$i$lcssa + $sub86$i; - $sub88$i = -$add87$i; - $y$addr$1$i = $sub88$i; - break; - } else { - $add90$i = $mul$i$240 + $mul80$i$lcssa; - $sub91$i = $add90$i - $mul80$i$lcssa; - $y$addr$1$i = $sub91$i; - break; - } - } - } while(0); - $198 = HEAP32[$e2$i>>2]|0; - $cmp94$i = ($198|0)<(0); - $sub97$i = (0 - ($198))|0; - $cond100$i = $cmp94$i ? $sub97$i : $198; - $199 = ($cond100$i|0)<(0); - $200 = $199 << 31 >> 31; - $201 = (_fmt_u($cond100$i,$200,$arrayidx$i$236)|0); - $cmp103$i = ($201|0)==($arrayidx$i$236|0); - if ($cmp103$i) { - HEAP8[$incdec$ptr106$i>>0] = 48; - $estr$0$i = $incdec$ptr106$i; - } else { - $estr$0$i = $201; - } - $202 = $198 >> 31; - $203 = $202 & 2; - $204 = (($203) + 43)|0; - $conv111$i = $204&255; - $incdec$ptr112$i = ((($estr$0$i)) + -1|0); - HEAP8[$incdec$ptr112$i>>0] = $conv111$i; - $add113$i = (($t$0) + 15)|0; - $conv114$i = $add113$i&255; - $incdec$ptr115$i = ((($estr$0$i)) + -2|0); - HEAP8[$incdec$ptr115$i>>0] = $conv114$i; - $notrhs$i = ($p$0|0)<(1); - $and134$i = $fl$1$and219 & 8; - $tobool135$i = ($and134$i|0)==(0); - $s$0$i = $buf$i;$y$addr$2$i = $y$addr$1$i; - while(1) { - $conv116$i = (~~(($y$addr$2$i))); - $arrayidx117$i = (4075 + ($conv116$i)|0); - $205 = HEAP8[$arrayidx117$i>>0]|0; - $conv118$393$i = $205&255; - $or120$i = $conv118$393$i | $and62$i; - $conv121$i = $or120$i&255; - $incdec$ptr122$i = ((($s$0$i)) + 1|0); - HEAP8[$s$0$i>>0] = $conv121$i; - $conv123$i = (+($conv116$i|0)); - $sub124$i = $y$addr$2$i - $conv123$i; - $mul125$i = $sub124$i * 16.0; - $sub$ptr$lhs$cast$i = $incdec$ptr122$i; - $sub$ptr$sub$i = (($sub$ptr$lhs$cast$i) - ($sub$ptr$rhs$cast$i))|0; - $cmp127$i = ($sub$ptr$sub$i|0)==(1); - do { - if ($cmp127$i) { - $notlhs$i = $mul125$i == 0.0; - $or$cond1$not$i = $notrhs$i & $notlhs$i; - $or$cond$i = $tobool135$i & $or$cond1$not$i; - if ($or$cond$i) { - $s$1$i = $incdec$ptr122$i; - break; - } - $incdec$ptr137$i = ((($s$0$i)) + 2|0); - HEAP8[$incdec$ptr122$i>>0] = 46; - $s$1$i = $incdec$ptr137$i; - } else { - $s$1$i = $incdec$ptr122$i; - } - } while(0); - $tobool139$i = $mul125$i != 0.0; - if ($tobool139$i) { - $s$0$i = $s$1$i;$y$addr$2$i = $mul125$i; - } else { - $s$1$i$lcssa = $s$1$i; - break; - } - } - $tobool140$i = ($p$0|0)!=(0); - $$pre566$i = $s$1$i$lcssa; - $sub146$i = (($sub$ptr$sub145$i) + ($$pre566$i))|0; - $cmp147$i = ($sub146$i|0)<($p$0|0); - $or$cond384 = $tobool140$i & $cmp147$i; - $sub$ptr$rhs$cast152$i = $incdec$ptr115$i; - $add150$i = (($sub$ptr$sub153$i) + ($p$0))|0; - $add154$i = (($add150$i) - ($sub$ptr$rhs$cast152$i))|0; - $sub$ptr$rhs$cast161$i = $incdec$ptr115$i; - $sub$ptr$sub162$i = (($sub$ptr$sub159$i) - ($sub$ptr$rhs$cast161$i))|0; - $add163$i = (($sub$ptr$sub162$i) + ($$pre566$i))|0; - $l$0$i = $or$cond384 ? $add154$i : $add163$i; - $add165$i = (($l$0$i) + ($add67$i))|0; - _pad($f,32,$w$1,$add165$i,$fl$1$and219); - $206 = HEAP32[$f>>2]|0; - $and$i$418$i = $206 & 32; - $tobool$i$419$i = ($and$i$418$i|0)==(0); - if ($tobool$i$419$i) { - (___fwritex($prefix$0$add$ptr65$i,$add67$i,$f)|0); - } - $xor167$i = $fl$1$and219 ^ 65536; - _pad($f,48,$w$1,$add165$i,$xor167$i); - $sub$ptr$sub172$i = (($$pre566$i) - ($sub$ptr$rhs$cast$i))|0; - $207 = HEAP32[$f>>2]|0; - $and$i$424$i = $207 & 32; - $tobool$i$425$i = ($and$i$424$i|0)==(0); - if ($tobool$i$425$i) { - (___fwritex($buf$i,$sub$ptr$sub172$i,$f)|0); - } - $sub$ptr$rhs$cast174$i = $incdec$ptr115$i; - $sub$ptr$sub175$i = (($sub$ptr$lhs$cast160$i) - ($sub$ptr$rhs$cast174$i))|0; - $sum = (($sub$ptr$sub172$i) + ($sub$ptr$sub175$i))|0; - $sub181$i = (($l$0$i) - ($sum))|0; - _pad($f,48,$sub181$i,0,0); - $208 = HEAP32[$f>>2]|0; - $and$i$430$i = $208 & 32; - $tobool$i$431$i = ($and$i$430$i|0)==(0); - if ($tobool$i$431$i) { - (___fwritex($incdec$ptr115$i,$sub$ptr$sub175$i,$f)|0); - } - $xor186$i = $fl$1$and219 ^ 8192; - _pad($f,32,$w$1,$add165$i,$xor186$i); - $cmp188$i = ($add165$i|0)<($w$1|0); - $w$add165$i = $cmp188$i ? $w$1 : $add165$i; - $retval$0$i = $w$add165$i; - break; - } - $cmp196$i = ($p$0|0)<(0); - $$p$i = $cmp196$i ? 6 : $p$0; - if ($tobool56$i) { - $mul202$i = $mul$i$240 * 268435456.0; - $209 = HEAP32[$e2$i>>2]|0; - $sub203$i = (($209) + -28)|0; - HEAP32[$e2$i>>2] = $sub203$i; - $210 = $sub203$i;$y$addr$3$i = $mul202$i; - } else { - $$pre564$i = HEAP32[$e2$i>>2]|0; - $210 = $$pre564$i;$y$addr$3$i = $mul$i$240; - } - $cmp205$i = ($210|0)<(0); - $arraydecay208$add$ptr213$i = $cmp205$i ? $big$i : $add$ptr213$i; - $sub$ptr$rhs$cast345$i = $arraydecay208$add$ptr213$i; - $y$addr$4$i = $y$addr$3$i;$z$0$i = $arraydecay208$add$ptr213$i; - while(1) { - $conv216$i = (~~(($y$addr$4$i))>>>0); - HEAP32[$z$0$i>>2] = $conv216$i; - $incdec$ptr217$i = ((($z$0$i)) + 4|0); - $conv218$i = (+($conv216$i>>>0)); - $sub219$i = $y$addr$4$i - $conv218$i; - $mul220$i = $sub219$i * 1.0E+9; - $tobool222$i = $mul220$i != 0.0; - if ($tobool222$i) { - $y$addr$4$i = $mul220$i;$z$0$i = $incdec$ptr217$i; - } else { - $incdec$ptr217$i$lcssa = $incdec$ptr217$i; - break; - } - } - $$pr$i = HEAP32[$e2$i>>2]|0; - $cmp225$547$i = ($$pr$i|0)>(0); - if ($cmp225$547$i) { - $211 = $$pr$i;$a$1549$i = $arraydecay208$add$ptr213$i;$z$1548$i = $incdec$ptr217$i$lcssa; - while(1) { - $cmp228$i = ($211|0)>(29); - $cond233$i = $cmp228$i ? 29 : $211; - $d$0$542$i = ((($z$1548$i)) + -4|0); - $cmp235$543$i = ($d$0$542$i>>>0)<($a$1549$i>>>0); - do { - if ($cmp235$543$i) { - $a$2$ph$i = $a$1549$i; - } else { - $carry$0544$i = 0;$d$0545$i = $d$0$542$i; - while(1) { - $212 = HEAP32[$d$0545$i>>2]|0; - $213 = (_bitshift64Shl(($212|0),0,($cond233$i|0))|0); - $214 = tempRet0; - $215 = (_i64Add(($213|0),($214|0),($carry$0544$i|0),0)|0); - $216 = tempRet0; - $217 = (___uremdi3(($215|0),($216|0),1000000000,0)|0); - $218 = tempRet0; - HEAP32[$d$0545$i>>2] = $217; - $219 = (___udivdi3(($215|0),($216|0),1000000000,0)|0); - $220 = tempRet0; - $d$0$i = ((($d$0545$i)) + -4|0); - $cmp235$i = ($d$0$i>>>0)<($a$1549$i>>>0); - if ($cmp235$i) { - $conv242$i$lcssa = $219; - break; - } else { - $carry$0544$i = $219;$d$0545$i = $d$0$i; - } - } - $tobool244$i = ($conv242$i$lcssa|0)==(0); - if ($tobool244$i) { - $a$2$ph$i = $a$1549$i; - break; - } - $incdec$ptr246$i = ((($a$1549$i)) + -4|0); - HEAP32[$incdec$ptr246$i>>2] = $conv242$i$lcssa; - $a$2$ph$i = $incdec$ptr246$i; - } - } while(0); - $z$2$i = $z$1548$i; - while(1) { - $cmp249$i = ($z$2$i>>>0)>($a$2$ph$i>>>0); - if (!($cmp249$i)) { - $z$2$i$lcssa = $z$2$i; - break; - } - $arrayidx251$i = ((($z$2$i)) + -4|0); - $221 = HEAP32[$arrayidx251$i>>2]|0; - $lnot$i = ($221|0)==(0); - if ($lnot$i) { - $z$2$i = $arrayidx251$i; - } else { - $z$2$i$lcssa = $z$2$i; - break; - } - } - $222 = HEAP32[$e2$i>>2]|0; - $sub256$i = (($222) - ($cond233$i))|0; - HEAP32[$e2$i>>2] = $sub256$i; - $cmp225$i = ($sub256$i|0)>(0); - if ($cmp225$i) { - $211 = $sub256$i;$a$1549$i = $a$2$ph$i;$z$1548$i = $z$2$i$lcssa; - } else { - $$pr477$i = $sub256$i;$a$1$lcssa$i = $a$2$ph$i;$z$1$lcssa$i = $z$2$i$lcssa; - break; - } - } - } else { - $$pr477$i = $$pr$i;$a$1$lcssa$i = $arraydecay208$add$ptr213$i;$z$1$lcssa$i = $incdec$ptr217$i$lcssa; - } - $cmp259$537$i = ($$pr477$i|0)<(0); - if ($cmp259$537$i) { - $add273$i = (($$p$i) + 25)|0; - $div274$i = (($add273$i|0) / 9)&-1; - $add275$i = (($div274$i) + 1)|0; - $cmp299$i = ($or$i$241|0)==(102); - $223 = $$pr477$i;$a$3539$i = $a$1$lcssa$i;$z$3538$i = $z$1$lcssa$i; - while(1) { - $sub264$i = (0 - ($223))|0; - $cmp265$i = ($sub264$i|0)>(9); - $cond271$i = $cmp265$i ? 9 : $sub264$i; - $cmp277$533$i = ($a$3539$i>>>0)<($z$3538$i>>>0); - do { - if ($cmp277$533$i) { - $shl280$i = 1 << $cond271$i; - $sub281$i = (($shl280$i) + -1)|0; - $shr285$i = 1000000000 >>> $cond271$i; - $carry262$0535$i = 0;$d$1534$i = $a$3539$i; - while(1) { - $225 = HEAP32[$d$1534$i>>2]|0; - $and282$i = $225 & $sub281$i; - $shr283$i = $225 >>> $cond271$i; - $add284$i = (($shr283$i) + ($carry262$0535$i))|0; - HEAP32[$d$1534$i>>2] = $add284$i; - $mul286$i = Math_imul($and282$i, $shr285$i)|0; - $incdec$ptr288$i = ((($d$1534$i)) + 4|0); - $cmp277$i = ($incdec$ptr288$i>>>0)<($z$3538$i>>>0); - if ($cmp277$i) { - $carry262$0535$i = $mul286$i;$d$1534$i = $incdec$ptr288$i; - } else { - $mul286$i$lcssa = $mul286$i; - break; - } - } - $226 = HEAP32[$a$3539$i>>2]|0; - $tobool290$i = ($226|0)==(0); - $incdec$ptr292$i = ((($a$3539$i)) + 4|0); - $incdec$ptr292$a$3$i = $tobool290$i ? $incdec$ptr292$i : $a$3539$i; - $tobool294$i = ($mul286$i$lcssa|0)==(0); - if ($tobool294$i) { - $incdec$ptr292$a$3573$i = $incdec$ptr292$a$3$i;$z$4$i = $z$3538$i; - break; - } - $incdec$ptr296$i = ((($z$3538$i)) + 4|0); - HEAP32[$z$3538$i>>2] = $mul286$i$lcssa; - $incdec$ptr292$a$3573$i = $incdec$ptr292$a$3$i;$z$4$i = $incdec$ptr296$i; - } else { - $224 = HEAP32[$a$3539$i>>2]|0; - $tobool290$569$i = ($224|0)==(0); - $incdec$ptr292$570$i = ((($a$3539$i)) + 4|0); - $incdec$ptr292$a$3$571$i = $tobool290$569$i ? $incdec$ptr292$570$i : $a$3539$i; - $incdec$ptr292$a$3573$i = $incdec$ptr292$a$3$571$i;$z$4$i = $z$3538$i; - } - } while(0); - $cond304$i = $cmp299$i ? $arraydecay208$add$ptr213$i : $incdec$ptr292$a$3573$i; - $sub$ptr$lhs$cast305$i = $z$4$i; - $sub$ptr$rhs$cast306$i = $cond304$i; - $sub$ptr$sub307$i = (($sub$ptr$lhs$cast305$i) - ($sub$ptr$rhs$cast306$i))|0; - $sub$ptr$div$i = $sub$ptr$sub307$i >> 2; - $cmp308$i = ($sub$ptr$div$i|0)>($add275$i|0); - $add$ptr311$i = (($cond304$i) + ($add275$i<<2)|0); - $add$ptr311$z$4$i = $cmp308$i ? $add$ptr311$i : $z$4$i; - $227 = HEAP32[$e2$i>>2]|0; - $add313$i = (($227) + ($cond271$i))|0; - HEAP32[$e2$i>>2] = $add313$i; - $cmp259$i = ($add313$i|0)<(0); - if ($cmp259$i) { - $223 = $add313$i;$a$3539$i = $incdec$ptr292$a$3573$i;$z$3538$i = $add$ptr311$z$4$i; - } else { - $a$3$lcssa$i = $incdec$ptr292$a$3573$i;$z$3$lcssa$i = $add$ptr311$z$4$i; - break; - } - } - } else { - $a$3$lcssa$i = $a$1$lcssa$i;$z$3$lcssa$i = $z$1$lcssa$i; - } - $cmp315$i = ($a$3$lcssa$i>>>0)<($z$3$lcssa$i>>>0); - do { - if ($cmp315$i) { - $sub$ptr$rhs$cast319$i = $a$3$lcssa$i; - $sub$ptr$sub320$i = (($sub$ptr$rhs$cast345$i) - ($sub$ptr$rhs$cast319$i))|0; - $sub$ptr$div321$i = $sub$ptr$sub320$i >> 2; - $mul322$i = ($sub$ptr$div321$i*9)|0; - $228 = HEAP32[$a$3$lcssa$i>>2]|0; - $cmp324$529$i = ($228>>>0)<(10); - if ($cmp324$529$i) { - $e$1$i = $mul322$i; - break; - } else { - $e$0531$i = $mul322$i;$i$0530$i = 10; - } - while(1) { - $mul328$i = ($i$0530$i*10)|0; - $inc$i = (($e$0531$i) + 1)|0; - $cmp324$i = ($228>>>0)<($mul328$i>>>0); - if ($cmp324$i) { - $e$1$i = $inc$i; - break; - } else { - $e$0531$i = $inc$i;$i$0530$i = $mul328$i; - } - } - } else { - $e$1$i = 0; - } - } while(0); - $cmp333$i = ($or$i$241|0)!=(102); - $mul335$i = $cmp333$i ? $e$1$i : 0; - $sub336$i = (($$p$i) - ($mul335$i))|0; - $cmp338$i = ($or$i$241|0)==(103); - $tobool341$i = ($$p$i|0)!=(0); - $229 = $tobool341$i & $cmp338$i; - $land$ext$neg$i = $229 << 31 >> 31; - $sub343$i = (($sub336$i) + ($land$ext$neg$i))|0; - $sub$ptr$lhs$cast344$i = $z$3$lcssa$i; - $sub$ptr$sub346$i = (($sub$ptr$lhs$cast344$i) - ($sub$ptr$rhs$cast345$i))|0; - $sub$ptr$div347$i = $sub$ptr$sub346$i >> 2; - $230 = ($sub$ptr$div347$i*9)|0; - $mul349$i = (($230) + -9)|0; - $cmp350$i = ($sub343$i|0)<($mul349$i|0); - if ($cmp350$i) { - $add$ptr354$i = ((($arraydecay208$add$ptr213$i)) + 4|0); - $add355$i = (($sub343$i) + 9216)|0; - $div356$i = (($add355$i|0) / 9)&-1; - $sub357$i = (($div356$i) + -1024)|0; - $add$ptr358$i = (($add$ptr354$i) + ($sub357$i<<2)|0); - $rem360$i = (($add355$i|0) % 9)&-1; - $j$0$524$i = (($rem360$i) + 1)|0; - $cmp363$525$i = ($j$0$524$i|0)<(9); - if ($cmp363$525$i) { - $i$1526$i = 10;$j$0527$i = $j$0$524$i; - while(1) { - $mul367$i = ($i$1526$i*10)|0; - $j$0$i = (($j$0527$i) + 1)|0; - $exitcond$i = ($j$0$i|0)==(9); - if ($exitcond$i) { - $i$1$lcssa$i = $mul367$i; - break; - } else { - $i$1526$i = $mul367$i;$j$0527$i = $j$0$i; - } - } - } else { - $i$1$lcssa$i = 10; - } - $231 = HEAP32[$add$ptr358$i>>2]|0; - $rem370$i = (($231>>>0) % ($i$1$lcssa$i>>>0))&-1; - $tobool371$i = ($rem370$i|0)==(0); - $add$ptr373$i = ((($add$ptr358$i)) + 4|0); - $cmp374$i = ($add$ptr373$i|0)==($z$3$lcssa$i|0); - $or$cond395$i = $cmp374$i & $tobool371$i; - do { - if ($or$cond395$i) { - $a$8$i = $a$3$lcssa$i;$d$4$i = $add$ptr358$i;$e$4$i = $e$1$i; - } else { - $div378$i = (($231>>>0) / ($i$1$lcssa$i>>>0))&-1; - $and379$i = $div378$i & 1; - $tobool380$i = ($and379$i|0)==(0); - $$396$i = $tobool380$i ? 9007199254740992.0 : 9007199254740994.0; - $div384$i = (($i$1$lcssa$i|0) / 2)&-1; - $cmp385$i = ($rem370$i>>>0)<($div384$i>>>0); - if ($cmp385$i) { - $small$0$i = 0.5; - } else { - $cmp390$i = ($rem370$i|0)==($div384$i|0); - $or$cond397$i = $cmp374$i & $cmp390$i; - $$404$i = $or$cond397$i ? 1.0 : 1.5; - $small$0$i = $$404$i; - } - $tobool400$i = ($pl$0$i|0)==(0); - do { - if ($tobool400$i) { - $round377$1$i = $$396$i;$small$1$i = $small$0$i; - } else { - $232 = HEAP8[$prefix$0$i>>0]|0; - $cmp403$i = ($232<<24>>24)==(45); - if (!($cmp403$i)) { - $round377$1$i = $$396$i;$small$1$i = $small$0$i; - break; - } - $mul406$i = -$$396$i; - $mul407$i = -$small$0$i; - $round377$1$i = $mul406$i;$small$1$i = $mul407$i; - } - } while(0); - $sub409$i = (($231) - ($rem370$i))|0; - HEAP32[$add$ptr358$i>>2] = $sub409$i; - $add410$i = $round377$1$i + $small$1$i; - $cmp411$i = $add410$i != $round377$1$i; - if (!($cmp411$i)) { - $a$8$i = $a$3$lcssa$i;$d$4$i = $add$ptr358$i;$e$4$i = $e$1$i; - break; - } - $add414$i = (($sub409$i) + ($i$1$lcssa$i))|0; - HEAP32[$add$ptr358$i>>2] = $add414$i; - $cmp416$519$i = ($add414$i>>>0)>(999999999); - if ($cmp416$519$i) { - $a$5521$i = $a$3$lcssa$i;$d$2520$i = $add$ptr358$i; - while(1) { - $incdec$ptr419$i = ((($d$2520$i)) + -4|0); - HEAP32[$d$2520$i>>2] = 0; - $cmp420$i = ($incdec$ptr419$i>>>0)<($a$5521$i>>>0); - if ($cmp420$i) { - $incdec$ptr423$i = ((($a$5521$i)) + -4|0); - HEAP32[$incdec$ptr423$i>>2] = 0; - $a$6$i = $incdec$ptr423$i; - } else { - $a$6$i = $a$5521$i; - } - $233 = HEAP32[$incdec$ptr419$i>>2]|0; - $inc425$i = (($233) + 1)|0; - HEAP32[$incdec$ptr419$i>>2] = $inc425$i; - $cmp416$i = ($inc425$i>>>0)>(999999999); - if ($cmp416$i) { - $a$5521$i = $a$6$i;$d$2520$i = $incdec$ptr419$i; - } else { - $a$5$lcssa$i = $a$6$i;$d$2$lcssa$i = $incdec$ptr419$i; - break; - } - } - } else { - $a$5$lcssa$i = $a$3$lcssa$i;$d$2$lcssa$i = $add$ptr358$i; - } - $sub$ptr$rhs$cast428$i = $a$5$lcssa$i; - $sub$ptr$sub429$i = (($sub$ptr$rhs$cast345$i) - ($sub$ptr$rhs$cast428$i))|0; - $sub$ptr$div430$i = $sub$ptr$sub429$i >> 2; - $mul431$i = ($sub$ptr$div430$i*9)|0; - $234 = HEAP32[$a$5$lcssa$i>>2]|0; - $cmp433$515$i = ($234>>>0)<(10); - if ($cmp433$515$i) { - $a$8$i = $a$5$lcssa$i;$d$4$i = $d$2$lcssa$i;$e$4$i = $mul431$i; - break; - } else { - $e$2517$i = $mul431$i;$i$2516$i = 10; - } - while(1) { - $mul437$i = ($i$2516$i*10)|0; - $inc438$i = (($e$2517$i) + 1)|0; - $cmp433$i = ($234>>>0)<($mul437$i>>>0); - if ($cmp433$i) { - $a$8$i = $a$5$lcssa$i;$d$4$i = $d$2$lcssa$i;$e$4$i = $inc438$i; - break; - } else { - $e$2517$i = $inc438$i;$i$2516$i = $mul437$i; - } - } - } - } while(0); - $add$ptr442$i = ((($d$4$i)) + 4|0); - $cmp443$i = ($z$3$lcssa$i>>>0)>($add$ptr442$i>>>0); - $add$ptr442$z$3$i = $cmp443$i ? $add$ptr442$i : $z$3$lcssa$i; - $a$9$ph$i = $a$8$i;$e$5$ph$i = $e$4$i;$z$7$ph$i = $add$ptr442$z$3$i; - } else { - $a$9$ph$i = $a$3$lcssa$i;$e$5$ph$i = $e$1$i;$z$7$ph$i = $z$3$lcssa$i; - } - $sub626$le$i = (0 - ($e$5$ph$i))|0; - $z$7$i = $z$7$ph$i; - while(1) { - $cmp450$i = ($z$7$i>>>0)>($a$9$ph$i>>>0); - if (!($cmp450$i)) { - $cmp450$lcssa$i = 0;$z$7$i$lcssa = $z$7$i; - break; - } - $arrayidx453$i = ((($z$7$i)) + -4|0); - $235 = HEAP32[$arrayidx453$i>>2]|0; - $lnot455$i = ($235|0)==(0); - if ($lnot455$i) { - $z$7$i = $arrayidx453$i; - } else { - $cmp450$lcssa$i = 1;$z$7$i$lcssa = $z$7$i; - break; - } - } - do { - if ($cmp338$i) { - $236 = $tobool341$i&1; - $inc468$i = $236 ^ 1; - $$p$inc468$i = (($inc468$i) + ($$p$i))|0; - $cmp470$i = ($$p$inc468$i|0)>($e$5$ph$i|0); - $cmp473$i = ($e$5$ph$i|0)>(-5); - $or$cond2$i = $cmp470$i & $cmp473$i; - if ($or$cond2$i) { - $dec476$i = (($t$0) + -1)|0; - $add477$neg$i = (($$p$inc468$i) + -1)|0; - $sub478$i = (($add477$neg$i) - ($e$5$ph$i))|0; - $p$addr$2$i = $sub478$i;$t$addr$0$i = $dec476$i; - } else { - $sub480$i = (($t$0) + -2)|0; - $dec481$i = (($$p$inc468$i) + -1)|0; - $p$addr$2$i = $dec481$i;$t$addr$0$i = $sub480$i; - } - $and483$i = $fl$1$and219 & 8; - $tobool484$i = ($and483$i|0)==(0); - if (!($tobool484$i)) { - $and610$pre$phi$iZ2D = $and483$i;$p$addr$3$i = $p$addr$2$i;$t$addr$1$i = $t$addr$0$i; - break; - } - do { - if ($cmp450$lcssa$i) { - $arrayidx489$i = ((($z$7$i$lcssa)) + -4|0); - $237 = HEAP32[$arrayidx489$i>>2]|0; - $tobool490$i = ($237|0)==(0); - if ($tobool490$i) { - $j$2$i = 9; - break; - } - $rem494$510$i = (($237>>>0) % 10)&-1; - $cmp495$511$i = ($rem494$510$i|0)==(0); - if ($cmp495$511$i) { - $i$3512$i = 10;$j$1513$i = 0; - } else { - $j$2$i = 0; - break; - } - while(1) { - $mul499$i = ($i$3512$i*10)|0; - $inc500$i = (($j$1513$i) + 1)|0; - $rem494$i = (($237>>>0) % ($mul499$i>>>0))&-1; - $cmp495$i = ($rem494$i|0)==(0); - if ($cmp495$i) { - $i$3512$i = $mul499$i;$j$1513$i = $inc500$i; - } else { - $j$2$i = $inc500$i; - break; - } - } - } else { - $j$2$i = 9; - } - } while(0); - $or504$i = $t$addr$0$i | 32; - $cmp505$i = ($or504$i|0)==(102); - $sub$ptr$lhs$cast508$i = $z$7$i$lcssa; - $sub$ptr$sub510$i = (($sub$ptr$lhs$cast508$i) - ($sub$ptr$rhs$cast345$i))|0; - $sub$ptr$div511$i = $sub$ptr$sub510$i >> 2; - $238 = ($sub$ptr$div511$i*9)|0; - $mul513$i = (($238) + -9)|0; - if ($cmp505$i) { - $sub514$i = (($mul513$i) - ($j$2$i))|0; - $cmp515$i = ($sub514$i|0)<(0); - $$sub514$i = $cmp515$i ? 0 : $sub514$i; - $cmp528$i = ($p$addr$2$i|0)<($$sub514$i|0); - $p$addr$2$$sub514398$i = $cmp528$i ? $p$addr$2$i : $$sub514$i; - $and610$pre$phi$iZ2D = 0;$p$addr$3$i = $p$addr$2$$sub514398$i;$t$addr$1$i = $t$addr$0$i; - break; - } else { - $add561$i = (($mul513$i) + ($e$5$ph$i))|0; - $sub562$i = (($add561$i) - ($j$2$i))|0; - $cmp563$i = ($sub562$i|0)<(0); - $$sub562$i = $cmp563$i ? 0 : $sub562$i; - $cmp577$i = ($p$addr$2$i|0)<($$sub562$i|0); - $p$addr$2$$sub562399$i = $cmp577$i ? $p$addr$2$i : $$sub562$i; - $and610$pre$phi$iZ2D = 0;$p$addr$3$i = $p$addr$2$$sub562399$i;$t$addr$1$i = $t$addr$0$i; - break; - } - } else { - $$pre567$i = $fl$1$and219 & 8; - $and610$pre$phi$iZ2D = $$pre567$i;$p$addr$3$i = $$p$i;$t$addr$1$i = $t$0; - } - } while(0); - $239 = $p$addr$3$i | $and610$pre$phi$iZ2D; - $240 = ($239|0)!=(0); - $lor$ext$i = $240&1; - $or613$i = $t$addr$1$i | 32; - $cmp614$i = ($or613$i|0)==(102); - if ($cmp614$i) { - $cmp617$i = ($e$5$ph$i|0)>(0); - $add620$i = $cmp617$i ? $e$5$ph$i : 0; - $estr$2$i = 0;$sub$ptr$sub650$pn$i = $add620$i; - } else { - $cmp623$i = ($e$5$ph$i|0)<(0); - $cond629$i = $cmp623$i ? $sub626$le$i : $e$5$ph$i; - $241 = ($cond629$i|0)<(0); - $242 = $241 << 31 >> 31; - $243 = (_fmt_u($cond629$i,$242,$arrayidx$i$236)|0); - $sub$ptr$rhs$cast634$504$i = $243; - $sub$ptr$sub635$505$i = (($sub$ptr$lhs$cast160$i) - ($sub$ptr$rhs$cast634$504$i))|0; - $cmp636$506$i = ($sub$ptr$sub635$505$i|0)<(2); - if ($cmp636$506$i) { - $estr$1507$i = $243; - while(1) { - $incdec$ptr639$i = ((($estr$1507$i)) + -1|0); - HEAP8[$incdec$ptr639$i>>0] = 48; - $sub$ptr$rhs$cast634$i = $incdec$ptr639$i; - $sub$ptr$sub635$i = (($sub$ptr$lhs$cast160$i) - ($sub$ptr$rhs$cast634$i))|0; - $cmp636$i = ($sub$ptr$sub635$i|0)<(2); - if ($cmp636$i) { - $estr$1507$i = $incdec$ptr639$i; - } else { - $estr$1$lcssa$i = $incdec$ptr639$i; - break; - } - } - } else { - $estr$1$lcssa$i = $243; - } - $244 = $e$5$ph$i >> 31; - $245 = $244 & 2; - $246 = (($245) + 43)|0; - $conv644$i = $246&255; - $incdec$ptr645$i = ((($estr$1$lcssa$i)) + -1|0); - HEAP8[$incdec$ptr645$i>>0] = $conv644$i; - $conv646$i = $t$addr$1$i&255; - $incdec$ptr647$i = ((($estr$1$lcssa$i)) + -2|0); - HEAP8[$incdec$ptr647$i>>0] = $conv646$i; - $sub$ptr$rhs$cast649$i = $incdec$ptr647$i; - $sub$ptr$sub650$i = (($sub$ptr$lhs$cast160$i) - ($sub$ptr$rhs$cast649$i))|0; - $estr$2$i = $incdec$ptr647$i;$sub$ptr$sub650$pn$i = $sub$ptr$sub650$i; - } - $add608$i = (($pl$0$i) + 1)|0; - $add612$i = (($add608$i) + ($p$addr$3$i))|0; - $l$1$i = (($add612$i) + ($lor$ext$i))|0; - $add653$i = (($l$1$i) + ($sub$ptr$sub650$pn$i))|0; - _pad($f,32,$w$1,$add653$i,$fl$1$and219); - $247 = HEAP32[$f>>2]|0; - $and$i$436$i = $247 & 32; - $tobool$i$437$i = ($and$i$436$i|0)==(0); - if ($tobool$i$437$i) { - (___fwritex($prefix$0$i,$pl$0$i,$f)|0); - } - $xor655$i = $fl$1$and219 ^ 65536; - _pad($f,48,$w$1,$add653$i,$xor655$i); - do { - if ($cmp614$i) { - $cmp660$i = ($a$9$ph$i>>>0)>($arraydecay208$add$ptr213$i>>>0); - $r$0$a$9$i = $cmp660$i ? $arraydecay208$add$ptr213$i : $a$9$ph$i; - $d$5494$i = $r$0$a$9$i; - while(1) { - $248 = HEAP32[$d$5494$i>>2]|0; - $249 = (_fmt_u($248,0,$add$ptr671$i)|0); - $cmp673$i = ($d$5494$i|0)==($r$0$a$9$i|0); - do { - if ($cmp673$i) { - $cmp686$i = ($249|0)==($add$ptr671$i|0); - if (!($cmp686$i)) { - $s668$1$i = $249; - break; - } - HEAP8[$incdec$ptr689$i>>0] = 48; - $s668$1$i = $incdec$ptr689$i; - } else { - $cmp678$491$i = ($249>>>0)>($buf$i>>>0); - if ($cmp678$491$i) { - $s668$0492$i = $249; - } else { - $s668$1$i = $249; - break; - } - while(1) { - $incdec$ptr681$i = ((($s668$0492$i)) + -1|0); - HEAP8[$incdec$ptr681$i>>0] = 48; - $cmp678$i = ($incdec$ptr681$i>>>0)>($buf$i>>>0); - if ($cmp678$i) { - $s668$0492$i = $incdec$ptr681$i; - } else { - $s668$1$i = $incdec$ptr681$i; - break; - } - } - } - } while(0); - $250 = HEAP32[$f>>2]|0; - $and$i$442$i = $250 & 32; - $tobool$i$443$i = ($and$i$442$i|0)==(0); - if ($tobool$i$443$i) { - $sub$ptr$rhs$cast695$i = $s668$1$i; - $sub$ptr$sub696$i = (($sub$ptr$lhs$cast694$i) - ($sub$ptr$rhs$cast695$i))|0; - (___fwritex($s668$1$i,$sub$ptr$sub696$i,$f)|0); - } - $incdec$ptr698$i = ((($d$5494$i)) + 4|0); - $cmp665$i = ($incdec$ptr698$i>>>0)>($arraydecay208$add$ptr213$i>>>0); - if ($cmp665$i) { - $incdec$ptr698$i$lcssa = $incdec$ptr698$i; - break; - } else { - $d$5494$i = $incdec$ptr698$i; - } - } - $251 = ($239|0)==(0); - do { - if (!($251)) { - $252 = HEAP32[$f>>2]|0; - $and$i$448$i = $252 & 32; - $tobool$i$449$i = ($and$i$448$i|0)==(0); - if (!($tobool$i$449$i)) { - break; - } - (___fwritex(4143,1,$f)|0); - } - } while(0); - $cmp707$486$i = ($incdec$ptr698$i$lcssa>>>0)<($z$7$i$lcssa>>>0); - $cmp710$487$i = ($p$addr$3$i|0)>(0); - $253 = $cmp710$487$i & $cmp707$486$i; - if ($253) { - $d$6488$i = $incdec$ptr698$i$lcssa;$p$addr$4489$i = $p$addr$3$i; - while(1) { - $254 = HEAP32[$d$6488$i>>2]|0; - $255 = (_fmt_u($254,0,$add$ptr671$i)|0); - $cmp722$483$i = ($255>>>0)>($buf$i>>>0); - if ($cmp722$483$i) { - $s715$0484$i = $255; - while(1) { - $incdec$ptr725$i = ((($s715$0484$i)) + -1|0); - HEAP8[$incdec$ptr725$i>>0] = 48; - $cmp722$i = ($incdec$ptr725$i>>>0)>($buf$i>>>0); - if ($cmp722$i) { - $s715$0484$i = $incdec$ptr725$i; - } else { - $s715$0$lcssa$i = $incdec$ptr725$i; - break; - } - } - } else { - $s715$0$lcssa$i = $255; - } - $256 = HEAP32[$f>>2]|0; - $and$i$454$i = $256 & 32; - $tobool$i$455$i = ($and$i$454$i|0)==(0); - if ($tobool$i$455$i) { - $cmp727$i = ($p$addr$4489$i|0)>(9); - $cond732$i = $cmp727$i ? 9 : $p$addr$4489$i; - (___fwritex($s715$0$lcssa$i,$cond732$i,$f)|0); - } - $incdec$ptr734$i = ((($d$6488$i)) + 4|0); - $sub735$i = (($p$addr$4489$i) + -9)|0; - $cmp707$i = ($incdec$ptr734$i>>>0)<($z$7$i$lcssa>>>0); - $cmp710$i = ($p$addr$4489$i|0)>(9); - $257 = $cmp710$i & $cmp707$i; - if ($257) { - $d$6488$i = $incdec$ptr734$i;$p$addr$4489$i = $sub735$i; - } else { - $p$addr$4$lcssa$i = $sub735$i; - break; - } - } - } else { - $p$addr$4$lcssa$i = $p$addr$3$i; - } - $add737$i = (($p$addr$4$lcssa$i) + 9)|0; - _pad($f,48,$add737$i,9,0); - } else { - $add$ptr742$i = ((($a$9$ph$i)) + 4|0); - $z$7$add$ptr742$i = $cmp450$lcssa$i ? $z$7$i$lcssa : $add$ptr742$i; - $cmp748$499$i = ($p$addr$3$i|0)>(-1); - if ($cmp748$499$i) { - $tobool781$i = ($and610$pre$phi$iZ2D|0)==(0); - $d$7500$i = $a$9$ph$i;$p$addr$5501$i = $p$addr$3$i; - while(1) { - $258 = HEAP32[$d$7500$i>>2]|0; - $259 = (_fmt_u($258,0,$add$ptr671$i)|0); - $cmp760$i = ($259|0)==($add$ptr671$i|0); - if ($cmp760$i) { - HEAP8[$incdec$ptr689$i>>0] = 48; - $s753$0$i = $incdec$ptr689$i; - } else { - $s753$0$i = $259; - } - $cmp765$i = ($d$7500$i|0)==($a$9$ph$i|0); - do { - if ($cmp765$i) { - $incdec$ptr776$i = ((($s753$0$i)) + 1|0); - $260 = HEAP32[$f>>2]|0; - $and$i$460$i = $260 & 32; - $tobool$i$461$i = ($and$i$460$i|0)==(0); - if ($tobool$i$461$i) { - (___fwritex($s753$0$i,1,$f)|0); - } - $cmp777$i = ($p$addr$5501$i|0)<(1); - $or$cond401$i = $tobool781$i & $cmp777$i; - if ($or$cond401$i) { - $s753$2$i = $incdec$ptr776$i; - break; - } - $261 = HEAP32[$f>>2]|0; - $and$i$466$i = $261 & 32; - $tobool$i$467$i = ($and$i$466$i|0)==(0); - if (!($tobool$i$467$i)) { - $s753$2$i = $incdec$ptr776$i; - break; - } - (___fwritex(4143,1,$f)|0); - $s753$2$i = $incdec$ptr776$i; - } else { - $cmp770$495$i = ($s753$0$i>>>0)>($buf$i>>>0); - if ($cmp770$495$i) { - $s753$1496$i = $s753$0$i; - } else { - $s753$2$i = $s753$0$i; - break; - } - while(1) { - $incdec$ptr773$i = ((($s753$1496$i)) + -1|0); - HEAP8[$incdec$ptr773$i>>0] = 48; - $cmp770$i = ($incdec$ptr773$i>>>0)>($buf$i>>>0); - if ($cmp770$i) { - $s753$1496$i = $incdec$ptr773$i; - } else { - $s753$2$i = $incdec$ptr773$i; - break; - } - } - } - } while(0); - $sub$ptr$rhs$cast788$i = $s753$2$i; - $sub$ptr$sub789$i = (($sub$ptr$lhs$cast694$i) - ($sub$ptr$rhs$cast788$i))|0; - $262 = HEAP32[$f>>2]|0; - $and$i$472$i = $262 & 32; - $tobool$i$473$i = ($and$i$472$i|0)==(0); - if ($tobool$i$473$i) { - $cmp790$i = ($p$addr$5501$i|0)>($sub$ptr$sub789$i|0); - $cond800$i = $cmp790$i ? $sub$ptr$sub789$i : $p$addr$5501$i; - (___fwritex($s753$2$i,$cond800$i,$f)|0); - } - $sub806$i = (($p$addr$5501$i) - ($sub$ptr$sub789$i))|0; - $incdec$ptr808$i = ((($d$7500$i)) + 4|0); - $cmp745$i = ($incdec$ptr808$i>>>0)<($z$7$add$ptr742$i>>>0); - $cmp748$i = ($sub806$i|0)>(-1); - $263 = $cmp745$i & $cmp748$i; - if ($263) { - $d$7500$i = $incdec$ptr808$i;$p$addr$5501$i = $sub806$i; - } else { - $p$addr$5$lcssa$i = $sub806$i; - break; - } - } - } else { - $p$addr$5$lcssa$i = $p$addr$3$i; - } - $add810$i = (($p$addr$5$lcssa$i) + 18)|0; - _pad($f,48,$add810$i,18,0); - $264 = HEAP32[$f>>2]|0; - $and$i$i = $264 & 32; - $tobool$i$i = ($and$i$i|0)==(0); - if (!($tobool$i$i)) { - break; - } - $sub$ptr$rhs$cast812$i = $estr$2$i; - $sub$ptr$sub813$i = (($sub$ptr$lhs$cast160$i) - ($sub$ptr$rhs$cast812$i))|0; - (___fwritex($estr$2$i,$sub$ptr$sub813$i,$f)|0); - } - } while(0); - $xor816$i = $fl$1$and219 ^ 8192; - _pad($f,32,$w$1,$add653$i,$xor816$i); - $cmp818$i = ($add653$i|0)<($w$1|0); - $w$add653$i = $cmp818$i ? $w$1 : $add653$i; - $retval$0$i = $w$add653$i; - } else { - $and36$i = $t$0 & 32; - $tobool37$i = ($and36$i|0)!=(0); - $cond$i = $tobool37$i ? 4127 : 4131; - $cmp38$i = ($y$addr$0$i != $y$addr$0$i) | (0.0 != 0.0); - $cond43$i = $tobool37$i ? 4135 : 4139; - $pl$1$i = $cmp38$i ? 0 : $pl$0$i; - $s35$0$i = $cmp38$i ? $cond43$i : $cond$i; - $add$i$239 = (($pl$1$i) + 3)|0; - _pad($f,32,$w$1,$add$i$239,$and219); - $193 = HEAP32[$f>>2]|0; - $and$i$406$i = $193 & 32; - $tobool$i$407$i = ($and$i$406$i|0)==(0); - if ($tobool$i$407$i) { - (___fwritex($prefix$0$i,$pl$1$i,$f)|0); - $$pre$i = HEAP32[$f>>2]|0; - $194 = $$pre$i; - } else { - $194 = $193; - } - $and$i$412$i = $194 & 32; - $tobool$i$413$i = ($and$i$412$i|0)==(0); - if ($tobool$i$413$i) { - (___fwritex($s35$0$i,3,$f)|0); - } - $xor$i = $fl$1$and219 ^ 8192; - _pad($f,32,$w$1,$add$i$239,$xor$i); - $cmp48$i = ($add$i$239|0)<($w$1|0); - $cond53$i = $cmp48$i ? $w$1 : $add$i$239; - $retval$0$i = $cond53$i; - } - } while(0); - $cnt$0 = $cnt$1;$incdec$ptr169275 = $incdec$ptr169$lcssa;$l$0 = $retval$0$i;$l10n$0 = $l10n$3; - continue L1; - break; - } - default: { - $a$2 = $incdec$ptr169275;$fl$6 = $fl$1$and219;$p$5 = $p$0;$pl$2 = 0;$prefix$2 = 4091;$z$2 = $add$ptr205; - } - } - } while(0); - L308: do { - if ((label|0) == 64) { - label = 0; - $90 = $arg; - $91 = $90; - $92 = HEAP32[$91>>2]|0; - $93 = (($90) + 4)|0; - $94 = $93; - $95 = HEAP32[$94>>2]|0; - $and249 = $t$1 & 32; - $96 = ($92|0)==(0); - $97 = ($95|0)==(0); - $98 = $96 & $97; - if ($98) { - $a$0 = $add$ptr205;$fl$4 = $fl$3;$p$2 = $p$1;$pl$1 = 0;$prefix$1 = 4091; - label = 77; - } else { - $101 = $95;$99 = $92;$s$addr$06$i = $add$ptr205; - while(1) { - $idxprom$i = $99 & 15; - $arrayidx$i = (4075 + ($idxprom$i)|0); - $100 = HEAP8[$arrayidx$i>>0]|0; - $conv$4$i$211 = $100&255; - $or$i = $conv$4$i$211 | $and249; - $conv1$i = $or$i&255; - $incdec$ptr$i$212 = ((($s$addr$06$i)) + -1|0); - HEAP8[$incdec$ptr$i$212>>0] = $conv1$i; - $102 = (_bitshift64Lshr(($99|0),($101|0),4)|0); - $103 = tempRet0; - $104 = ($102|0)==(0); - $105 = ($103|0)==(0); - $106 = $104 & $105; - if ($106) { - $incdec$ptr$i$212$lcssa = $incdec$ptr$i$212; - break; - } else { - $101 = $103;$99 = $102;$s$addr$06$i = $incdec$ptr$i$212; - } - } - $107 = $arg; - $108 = $107; - $109 = HEAP32[$108>>2]|0; - $110 = (($107) + 4)|0; - $111 = $110; - $112 = HEAP32[$111>>2]|0; - $113 = ($109|0)==(0); - $114 = ($112|0)==(0); - $115 = $113 & $114; - $and254 = $fl$3 & 8; - $tobool255 = ($and254|0)==(0); - $or$cond193 = $tobool255 | $115; - if ($or$cond193) { - $a$0 = $incdec$ptr$i$212$lcssa;$fl$4 = $fl$3;$p$2 = $p$1;$pl$1 = 0;$prefix$1 = 4091; - label = 77; - } else { - $shr = $t$1 >> 4; - $add$ptr257 = (4091 + ($shr)|0); - $a$0 = $incdec$ptr$i$212$lcssa;$fl$4 = $fl$3;$p$2 = $p$1;$pl$1 = 2;$prefix$1 = $add$ptr257; - label = 77; - } - } - } - else if ((label|0) == 76) { - label = 0; - $150 = (_fmt_u($148,$149,$add$ptr205)|0); - $a$0 = $150;$fl$4 = $fl$1$and219;$p$2 = $p$0;$pl$1 = $pl$0;$prefix$1 = $prefix$0; - label = 77; - } - else if ((label|0) == 82) { - label = 0; - $call356 = (_memchr($a$1,0,$p$0)|0); - $tobool357 = ($call356|0)==(0|0); - $sub$ptr$lhs$cast361 = $call356; - $sub$ptr$rhs$cast362 = $a$1; - $sub$ptr$sub363 = (($sub$ptr$lhs$cast361) - ($sub$ptr$rhs$cast362))|0; - $add$ptr359 = (($a$1) + ($p$0)|0); - $z$1 = $tobool357 ? $add$ptr359 : $call356; - $p$3 = $tobool357 ? $p$0 : $sub$ptr$sub363; - $a$2 = $a$1;$fl$6 = $and219;$p$5 = $p$3;$pl$2 = 0;$prefix$2 = 4091;$z$2 = $z$1; - } - else if ((label|0) == 86) { - label = 0; - $176 = HEAP32[$arg>>2]|0; - $i$0316 = 0;$l$1315 = 0;$ws$0317 = $176; - while(1) { - $177 = HEAP32[$ws$0317>>2]|0; - $tobool380 = ($177|0)==(0); - if ($tobool380) { - $i$0$lcssa = $i$0316;$l$2 = $l$1315; - break; - } - $call384 = (_wctomb($mb,$177)|0); - $cmp385 = ($call384|0)<(0); - $sub389 = (($p$4365) - ($i$0316))|0; - $cmp390 = ($call384>>>0)>($sub389>>>0); - $or$cond195 = $cmp385 | $cmp390; - if ($or$cond195) { - $i$0$lcssa = $i$0316;$l$2 = $call384; - break; - } - $incdec$ptr383 = ((($ws$0317)) + 4|0); - $add395 = (($call384) + ($i$0316))|0; - $cmp377 = ($p$4365>>>0)>($add395>>>0); - if ($cmp377) { - $i$0316 = $add395;$l$1315 = $call384;$ws$0317 = $incdec$ptr383; - } else { - $i$0$lcssa = $add395;$l$2 = $call384; - break; - } - } - $cmp397 = ($l$2|0)<(0); - if ($cmp397) { - $retval$0 = -1; - break L1; - } - _pad($f,32,$w$1,$i$0$lcssa,$fl$1$and219); - $cmp404$324 = ($i$0$lcssa|0)==(0); - if ($cmp404$324) { - $i$0$lcssa368 = 0; - label = 98; - } else { - $178 = HEAP32[$arg>>2]|0; - $i$1325 = 0;$ws$1326 = $178; - while(1) { - $179 = HEAP32[$ws$1326>>2]|0; - $tobool407 = ($179|0)==(0); - if ($tobool407) { - $i$0$lcssa368 = $i$0$lcssa; - label = 98; - break L308; - } - $incdec$ptr410 = ((($ws$1326)) + 4|0); - $call411 = (_wctomb($mb,$179)|0); - $add412 = (($call411) + ($i$1325))|0; - $cmp413 = ($add412|0)>($i$0$lcssa|0); - if ($cmp413) { - $i$0$lcssa368 = $i$0$lcssa; - label = 98; - break L308; - } - $180 = HEAP32[$f>>2]|0; - $and$i$231 = $180 & 32; - $tobool$i$232 = ($and$i$231|0)==(0); - if ($tobool$i$232) { - (___fwritex($mb,$call411,$f)|0); - } - $cmp404 = ($add412>>>0)<($i$0$lcssa>>>0); - if ($cmp404) { - $i$1325 = $add412;$ws$1326 = $incdec$ptr410; - } else { - $i$0$lcssa368 = $i$0$lcssa; - label = 98; - break; - } - } - } - } - } while(0); - if ((label|0) == 98) { - label = 0; - $xor = $fl$1$and219 ^ 8192; - _pad($f,32,$w$1,$i$0$lcssa368,$xor); - $cmp421 = ($w$1|0)>($i$0$lcssa368|0); - $cond426 = $cmp421 ? $w$1 : $i$0$lcssa368; - $cnt$0 = $cnt$1;$incdec$ptr169275 = $incdec$ptr169$lcssa;$l$0 = $cond426;$l10n$0 = $l10n$3; - continue; - } - if ((label|0) == 77) { - label = 0; - $cmp306 = ($p$2|0)>(-1); - $and309 = $fl$4 & -65537; - $and309$fl$4 = $cmp306 ? $and309 : $fl$4; - $151 = $arg; - $152 = $151; - $153 = HEAP32[$152>>2]|0; - $154 = (($151) + 4)|0; - $155 = $154; - $156 = HEAP32[$155>>2]|0; - $157 = ($153|0)!=(0); - $158 = ($156|0)!=(0); - $159 = $157 | $158; - $tobool314 = ($p$2|0)!=(0); - $or$cond = $tobool314 | $159; - if ($or$cond) { - $sub$ptr$rhs$cast318 = $a$0; - $sub$ptr$sub319 = (($sub$ptr$lhs$cast317) - ($sub$ptr$rhs$cast318))|0; - $160 = $159&1; - $lnot$ext = $160 ^ 1; - $add322 = (($lnot$ext) + ($sub$ptr$sub319))|0; - $cmp323 = ($p$2|0)>($add322|0); - $p$2$add322 = $cmp323 ? $p$2 : $add322; - $a$2 = $a$0;$fl$6 = $and309$fl$4;$p$5 = $p$2$add322;$pl$2 = $pl$1;$prefix$2 = $prefix$1;$z$2 = $add$ptr205; - } else { - $a$2 = $add$ptr205;$fl$6 = $and309$fl$4;$p$5 = 0;$pl$2 = $pl$1;$prefix$2 = $prefix$1;$z$2 = $add$ptr205; - } - } - $sub$ptr$lhs$cast431 = $z$2; - $sub$ptr$rhs$cast432 = $a$2; - $sub$ptr$sub433 = (($sub$ptr$lhs$cast431) - ($sub$ptr$rhs$cast432))|0; - $cmp434 = ($p$5|0)<($sub$ptr$sub433|0); - $sub$ptr$sub433$p$5 = $cmp434 ? $sub$ptr$sub433 : $p$5; - $add441 = (($pl$2) + ($sub$ptr$sub433$p$5))|0; - $cmp442 = ($w$1|0)<($add441|0); - $w$2 = $cmp442 ? $add441 : $w$1; - _pad($f,32,$w$2,$add441,$fl$6); - $265 = HEAP32[$f>>2]|0; - $and$i$244 = $265 & 32; - $tobool$i$245 = ($and$i$244|0)==(0); - if ($tobool$i$245) { - (___fwritex($prefix$2,$pl$2,$f)|0); - } - $xor449 = $fl$6 ^ 65536; - _pad($f,48,$w$2,$add441,$xor449); - _pad($f,48,$sub$ptr$sub433$p$5,$sub$ptr$sub433,0); - $266 = HEAP32[$f>>2]|0; - $and$i$216 = $266 & 32; - $tobool$i$217 = ($and$i$216|0)==(0); - if ($tobool$i$217) { - (___fwritex($a$2,$sub$ptr$sub433,$f)|0); - } - $xor457 = $fl$6 ^ 8192; - _pad($f,32,$w$2,$add441,$xor457); - $cnt$0 = $cnt$1;$incdec$ptr169275 = $incdec$ptr169$lcssa;$l$0 = $w$2;$l10n$0 = $l10n$3; - } - L343: do { - if ((label|0) == 242) { - $tobool459 = ($f|0)==(0|0); - if ($tobool459) { - $tobool462 = ($l10n$0$lcssa|0)==(0); - if ($tobool462) { - $retval$0 = 0; - } else { - $i$2299 = 1; - while(1) { - $arrayidx469 = (($nl_type) + ($i$2299<<2)|0); - $267 = HEAP32[$arrayidx469>>2]|0; - $tobool470 = ($267|0)==(0); - if ($tobool470) { - $i$2299$lcssa = $i$2299; - break; - } - $add$ptr473 = (($nl_arg) + ($i$2299<<3)|0); - _pop_arg_336($add$ptr473,$267,$ap); - $inc = (($i$2299) + 1)|0; - $cmp466 = ($inc|0)<(10); - if ($cmp466) { - $i$2299 = $inc; - } else { - $retval$0 = 1; - break L343; - } - } - $cmp478$295 = ($i$2299$lcssa|0)<(10); - if ($cmp478$295) { - $i$3296 = $i$2299$lcssa; - while(1) { - $arrayidx481 = (($nl_type) + ($i$3296<<2)|0); - $268 = HEAP32[$arrayidx481>>2]|0; - $lnot483 = ($268|0)==(0); - $inc488 = (($i$3296) + 1)|0; - if (!($lnot483)) { - $retval$0 = -1; - break L343; - } - $cmp478 = ($inc488|0)<(10); - if ($cmp478) { - $i$3296 = $inc488; - } else { - $retval$0 = 1; - break; - } - } - } else { - $retval$0 = 1; - } - } - } else { - $retval$0 = $cnt$1$lcssa; - } - } - } while(0); - STACKTOP = sp;return ($retval$0|0); -} -function _pop_arg_336($arg,$type,$ap) { - $arg = $arg|0; - $type = $type|0; - $ap = $ap|0; - var $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0, $103 = 0.0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0.0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0; - var $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0; - var $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0; - var $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0; - var $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0, $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0; - var $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0, $97 = 0, $98 = 0, $99 = 0, $arglist_current = 0, $arglist_current11 = 0, $arglist_current14 = 0, $arglist_current17 = 0, $arglist_current2 = 0, $arglist_current20 = 0, $arglist_current23 = 0, $arglist_current26 = 0, $arglist_current5 = 0; - var $arglist_current8 = 0, $arglist_next = 0, $arglist_next12 = 0, $arglist_next15 = 0, $arglist_next18 = 0, $arglist_next21 = 0, $arglist_next24 = 0, $arglist_next27 = 0, $arglist_next3 = 0, $arglist_next6 = 0, $arglist_next9 = 0, $cmp = 0, $conv12 = 0, $conv17$mask = 0, $conv22 = 0, $conv27$mask = 0, $expanded = 0, $expanded28 = 0, $expanded30 = 0, $expanded31 = 0; - var $expanded32 = 0, $expanded34 = 0, $expanded35 = 0, $expanded37 = 0, $expanded38 = 0, $expanded39 = 0, $expanded41 = 0, $expanded42 = 0, $expanded44 = 0, $expanded45 = 0, $expanded46 = 0, $expanded48 = 0, $expanded49 = 0, $expanded51 = 0, $expanded52 = 0, $expanded53 = 0, $expanded55 = 0, $expanded56 = 0, $expanded58 = 0, $expanded59 = 0; - var $expanded60 = 0, $expanded62 = 0, $expanded63 = 0, $expanded65 = 0, $expanded66 = 0, $expanded67 = 0, $expanded69 = 0, $expanded70 = 0, $expanded72 = 0, $expanded73 = 0, $expanded74 = 0, $expanded76 = 0, $expanded77 = 0, $expanded79 = 0, $expanded80 = 0, $expanded81 = 0, $expanded83 = 0, $expanded84 = 0, $expanded86 = 0, $expanded87 = 0; - var $expanded88 = 0, $expanded90 = 0, $expanded91 = 0, $expanded93 = 0, $expanded94 = 0, $expanded95 = 0, label = 0, sp = 0; - sp = STACKTOP; - $cmp = ($type>>>0)>(20); - L1: do { - if (!($cmp)) { - do { - switch ($type|0) { - case 9: { - $arglist_current = HEAP32[$ap>>2]|0; - $0 = $arglist_current; - $1 = ((0) + 4|0); - $expanded28 = $1; - $expanded = (($expanded28) - 1)|0; - $2 = (($0) + ($expanded))|0; - $3 = ((0) + 4|0); - $expanded32 = $3; - $expanded31 = (($expanded32) - 1)|0; - $expanded30 = $expanded31 ^ -1; - $4 = $2 & $expanded30; - $5 = $4; - $6 = HEAP32[$5>>2]|0; - $arglist_next = ((($5)) + 4|0); - HEAP32[$ap>>2] = $arglist_next; - HEAP32[$arg>>2] = $6; - break L1; - break; - } - case 10: { - $arglist_current2 = HEAP32[$ap>>2]|0; - $7 = $arglist_current2; - $8 = ((0) + 4|0); - $expanded35 = $8; - $expanded34 = (($expanded35) - 1)|0; - $9 = (($7) + ($expanded34))|0; - $10 = ((0) + 4|0); - $expanded39 = $10; - $expanded38 = (($expanded39) - 1)|0; - $expanded37 = $expanded38 ^ -1; - $11 = $9 & $expanded37; - $12 = $11; - $13 = HEAP32[$12>>2]|0; - $arglist_next3 = ((($12)) + 4|0); - HEAP32[$ap>>2] = $arglist_next3; - $14 = ($13|0)<(0); - $15 = $14 << 31 >> 31; - $16 = $arg; - $17 = $16; - HEAP32[$17>>2] = $13; - $18 = (($16) + 4)|0; - $19 = $18; - HEAP32[$19>>2] = $15; - break L1; - break; - } - case 11: { - $arglist_current5 = HEAP32[$ap>>2]|0; - $20 = $arglist_current5; - $21 = ((0) + 4|0); - $expanded42 = $21; - $expanded41 = (($expanded42) - 1)|0; - $22 = (($20) + ($expanded41))|0; - $23 = ((0) + 4|0); - $expanded46 = $23; - $expanded45 = (($expanded46) - 1)|0; - $expanded44 = $expanded45 ^ -1; - $24 = $22 & $expanded44; - $25 = $24; - $26 = HEAP32[$25>>2]|0; - $arglist_next6 = ((($25)) + 4|0); - HEAP32[$ap>>2] = $arglist_next6; - $27 = $arg; - $28 = $27; - HEAP32[$28>>2] = $26; - $29 = (($27) + 4)|0; - $30 = $29; - HEAP32[$30>>2] = 0; - break L1; - break; - } - case 12: { - $arglist_current8 = HEAP32[$ap>>2]|0; - $31 = $arglist_current8; - $32 = ((0) + 8|0); - $expanded49 = $32; - $expanded48 = (($expanded49) - 1)|0; - $33 = (($31) + ($expanded48))|0; - $34 = ((0) + 8|0); - $expanded53 = $34; - $expanded52 = (($expanded53) - 1)|0; - $expanded51 = $expanded52 ^ -1; - $35 = $33 & $expanded51; - $36 = $35; - $37 = $36; - $38 = $37; - $39 = HEAP32[$38>>2]|0; - $40 = (($37) + 4)|0; - $41 = $40; - $42 = HEAP32[$41>>2]|0; - $arglist_next9 = ((($36)) + 8|0); - HEAP32[$ap>>2] = $arglist_next9; - $43 = $arg; - $44 = $43; - HEAP32[$44>>2] = $39; - $45 = (($43) + 4)|0; - $46 = $45; - HEAP32[$46>>2] = $42; - break L1; - break; - } - case 13: { - $arglist_current11 = HEAP32[$ap>>2]|0; - $47 = $arglist_current11; - $48 = ((0) + 4|0); - $expanded56 = $48; - $expanded55 = (($expanded56) - 1)|0; - $49 = (($47) + ($expanded55))|0; - $50 = ((0) + 4|0); - $expanded60 = $50; - $expanded59 = (($expanded60) - 1)|0; - $expanded58 = $expanded59 ^ -1; - $51 = $49 & $expanded58; - $52 = $51; - $53 = HEAP32[$52>>2]|0; - $arglist_next12 = ((($52)) + 4|0); - HEAP32[$ap>>2] = $arglist_next12; - $conv12 = $53&65535; - $54 = $conv12 << 16 >> 16; - $55 = ($54|0)<(0); - $56 = $55 << 31 >> 31; - $57 = $arg; - $58 = $57; - HEAP32[$58>>2] = $54; - $59 = (($57) + 4)|0; - $60 = $59; - HEAP32[$60>>2] = $56; - break L1; - break; - } - case 14: { - $arglist_current14 = HEAP32[$ap>>2]|0; - $61 = $arglist_current14; - $62 = ((0) + 4|0); - $expanded63 = $62; - $expanded62 = (($expanded63) - 1)|0; - $63 = (($61) + ($expanded62))|0; - $64 = ((0) + 4|0); - $expanded67 = $64; - $expanded66 = (($expanded67) - 1)|0; - $expanded65 = $expanded66 ^ -1; - $65 = $63 & $expanded65; - $66 = $65; - $67 = HEAP32[$66>>2]|0; - $arglist_next15 = ((($66)) + 4|0); - HEAP32[$ap>>2] = $arglist_next15; - $conv17$mask = $67 & 65535; - $68 = $arg; - $69 = $68; - HEAP32[$69>>2] = $conv17$mask; - $70 = (($68) + 4)|0; - $71 = $70; - HEAP32[$71>>2] = 0; - break L1; - break; - } - case 15: { - $arglist_current17 = HEAP32[$ap>>2]|0; - $72 = $arglist_current17; - $73 = ((0) + 4|0); - $expanded70 = $73; - $expanded69 = (($expanded70) - 1)|0; - $74 = (($72) + ($expanded69))|0; - $75 = ((0) + 4|0); - $expanded74 = $75; - $expanded73 = (($expanded74) - 1)|0; - $expanded72 = $expanded73 ^ -1; - $76 = $74 & $expanded72; - $77 = $76; - $78 = HEAP32[$77>>2]|0; - $arglist_next18 = ((($77)) + 4|0); - HEAP32[$ap>>2] = $arglist_next18; - $conv22 = $78&255; - $79 = $conv22 << 24 >> 24; - $80 = ($79|0)<(0); - $81 = $80 << 31 >> 31; - $82 = $arg; - $83 = $82; - HEAP32[$83>>2] = $79; - $84 = (($82) + 4)|0; - $85 = $84; - HEAP32[$85>>2] = $81; - break L1; - break; - } - case 16: { - $arglist_current20 = HEAP32[$ap>>2]|0; - $86 = $arglist_current20; - $87 = ((0) + 4|0); - $expanded77 = $87; - $expanded76 = (($expanded77) - 1)|0; - $88 = (($86) + ($expanded76))|0; - $89 = ((0) + 4|0); - $expanded81 = $89; - $expanded80 = (($expanded81) - 1)|0; - $expanded79 = $expanded80 ^ -1; - $90 = $88 & $expanded79; - $91 = $90; - $92 = HEAP32[$91>>2]|0; - $arglist_next21 = ((($91)) + 4|0); - HEAP32[$ap>>2] = $arglist_next21; - $conv27$mask = $92 & 255; - $93 = $arg; - $94 = $93; - HEAP32[$94>>2] = $conv27$mask; - $95 = (($93) + 4)|0; - $96 = $95; - HEAP32[$96>>2] = 0; - break L1; - break; - } - case 17: { - $arglist_current23 = HEAP32[$ap>>2]|0; - $97 = $arglist_current23; - $98 = ((0) + 8|0); - $expanded84 = $98; - $expanded83 = (($expanded84) - 1)|0; - $99 = (($97) + ($expanded83))|0; - $100 = ((0) + 8|0); - $expanded88 = $100; - $expanded87 = (($expanded88) - 1)|0; - $expanded86 = $expanded87 ^ -1; - $101 = $99 & $expanded86; - $102 = $101; - $103 = +HEAPF64[$102>>3]; - $arglist_next24 = ((($102)) + 8|0); - HEAP32[$ap>>2] = $arglist_next24; - HEAPF64[$arg>>3] = $103; - break L1; - break; - } - case 18: { - $arglist_current26 = HEAP32[$ap>>2]|0; - $104 = $arglist_current26; - $105 = ((0) + 8|0); - $expanded91 = $105; - $expanded90 = (($expanded91) - 1)|0; - $106 = (($104) + ($expanded90))|0; - $107 = ((0) + 8|0); - $expanded95 = $107; - $expanded94 = (($expanded95) - 1)|0; - $expanded93 = $expanded94 ^ -1; - $108 = $106 & $expanded93; - $109 = $108; - $110 = +HEAPF64[$109>>3]; - $arglist_next27 = ((($109)) + 8|0); - HEAP32[$ap>>2] = $arglist_next27; - HEAPF64[$arg>>3] = $110; - break L1; - break; - } - default: { - break L1; - } - } - } while(0); - } - } while(0); - return; -} -function _fmt_u($0,$1,$s) { - $0 = $0|0; - $1 = $1|0; - $s = $s|0; - var $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0; - var $9 = 0, $add5 = 0, $conv6 = 0, $div9 = 0, $incdec$ptr = 0, $incdec$ptr$lcssa = 0, $incdec$ptr7 = 0, $rem4 = 0, $s$addr$0$lcssa = 0, $s$addr$013 = 0, $s$addr$1$lcssa = 0, $s$addr$19 = 0, $tobool$8 = 0, $x$addr$0$lcssa$off0 = 0, $y$010 = 0, label = 0, sp = 0; - sp = STACKTOP; - $2 = ($1>>>0)>(0); - $3 = ($0>>>0)>(4294967295); - $4 = ($1|0)==(0); - $5 = $4 & $3; - $6 = $2 | $5; - if ($6) { - $7 = $0;$8 = $1;$s$addr$013 = $s; - while(1) { - $9 = (___uremdi3(($7|0),($8|0),10,0)|0); - $10 = tempRet0; - $11 = $9 | 48; - $12 = $11&255; - $incdec$ptr = ((($s$addr$013)) + -1|0); - HEAP8[$incdec$ptr>>0] = $12; - $13 = (___udivdi3(($7|0),($8|0),10,0)|0); - $14 = tempRet0; - $15 = ($8>>>0)>(9); - $16 = ($7>>>0)>(4294967295); - $17 = ($8|0)==(9); - $18 = $17 & $16; - $19 = $15 | $18; - if ($19) { - $7 = $13;$8 = $14;$s$addr$013 = $incdec$ptr; - } else { - $21 = $13;$22 = $14;$incdec$ptr$lcssa = $incdec$ptr; - break; - } - } - $s$addr$0$lcssa = $incdec$ptr$lcssa;$x$addr$0$lcssa$off0 = $21; - } else { - $s$addr$0$lcssa = $s;$x$addr$0$lcssa$off0 = $0; - } - $tobool$8 = ($x$addr$0$lcssa$off0|0)==(0); - if ($tobool$8) { - $s$addr$1$lcssa = $s$addr$0$lcssa; - } else { - $s$addr$19 = $s$addr$0$lcssa;$y$010 = $x$addr$0$lcssa$off0; - while(1) { - $rem4 = (($y$010>>>0) % 10)&-1; - $add5 = $rem4 | 48; - $conv6 = $add5&255; - $incdec$ptr7 = ((($s$addr$19)) + -1|0); - HEAP8[$incdec$ptr7>>0] = $conv6; - $div9 = (($y$010>>>0) / 10)&-1; - $20 = ($y$010>>>0)<(10); - if ($20) { - $s$addr$1$lcssa = $incdec$ptr7; - break; - } else { - $s$addr$19 = $incdec$ptr7;$y$010 = $div9; - } - } - } - return ($s$addr$1$lcssa|0); -} -function _pad($f,$c,$w,$l,$fl) { - $f = $f|0; - $c = $c|0; - $w = $w|0; - $l = $l|0; - $fl = $fl|0; - var $$pre = 0, $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $and = 0, $and$i = 0, $and$i$15 = 0, $cmp = 0, $cmp1 = 0, $cmp3 = 0, $cmp3$14 = 0, $cond = 0, $l$addr$0$lcssa21 = 0, $l$addr$017 = 0, $or$cond = 0, $pad = 0, $sub = 0, $sub5 = 0; - var $tobool = 0, $tobool$i = 0, $tobool$i$16 = 0, $tobool$i18 = 0, label = 0, sp = 0; - sp = STACKTOP; - STACKTOP = STACKTOP + 256|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abort(); - $pad = sp; - $and = $fl & 73728; - $tobool = ($and|0)==(0); - $cmp = ($w|0)>($l|0); - $or$cond = $cmp & $tobool; - do { - if ($or$cond) { - $sub = (($w) - ($l))|0; - $cmp1 = ($sub>>>0)>(256); - $cond = $cmp1 ? 256 : $sub; - _memset(($pad|0),($c|0),($cond|0))|0; - $cmp3$14 = ($sub>>>0)>(255); - $0 = HEAP32[$f>>2]|0; - $and$i$15 = $0 & 32; - $tobool$i$16 = ($and$i$15|0)==(0); - if ($cmp3$14) { - $1 = (($w) - ($l))|0; - $4 = $0;$l$addr$017 = $sub;$tobool$i18 = $tobool$i$16; - while(1) { - if ($tobool$i18) { - (___fwritex($pad,256,$f)|0); - $$pre = HEAP32[$f>>2]|0; - $2 = $$pre; - } else { - $2 = $4; - } - $sub5 = (($l$addr$017) + -256)|0; - $cmp3 = ($sub5>>>0)>(255); - $and$i = $2 & 32; - $tobool$i = ($and$i|0)==(0); - if ($cmp3) { - $4 = $2;$l$addr$017 = $sub5;$tobool$i18 = $tobool$i; - } else { - break; - } - } - $3 = $1 & 255; - if ($tobool$i) { - $l$addr$0$lcssa21 = $3; - } else { - break; - } - } else { - if ($tobool$i$16) { - $l$addr$0$lcssa21 = $sub; - } else { - break; - } - } - (___fwritex($pad,$l$addr$0$lcssa21,$f)|0); - } - } while(0); - STACKTOP = sp;return; -} -function _malloc($bytes) { - $bytes = $bytes|0; - var $$lcssa = 0, $$lcssa290 = 0, $$pre = 0, $$pre$i = 0, $$pre$i$177 = 0, $$pre$i$56$i = 0, $$pre$i$i = 0, $$pre$phi$i$178Z2D = 0, $$pre$phi$i$57$iZ2D = 0, $$pre$phi$i$iZ2D = 0, $$pre$phi$iZ2D = 0, $$pre$phiZ2D = 0, $$pre241 = 0, $$pre5$i$i = 0, $0 = 0, $1 = 0, $10 = 0, $100 = 0, $101 = 0, $102 = 0; - var $103 = 0, $104 = 0, $105 = 0, $106 = 0, $107 = 0, $108 = 0, $109 = 0, $11 = 0, $110 = 0, $111 = 0, $112 = 0, $113 = 0, $114 = 0, $115 = 0, $116 = 0, $117 = 0, $118 = 0, $119 = 0, $12 = 0, $120 = 0; - var $121 = 0, $122 = 0, $123 = 0, $124 = 0, $125 = 0, $126 = 0, $127 = 0, $128 = 0, $129 = 0, $13 = 0, $130 = 0, $131 = 0, $132 = 0, $133 = 0, $134 = 0, $135 = 0, $136 = 0, $137 = 0, $138 = 0, $139 = 0; - var $14 = 0, $140 = 0, $141 = 0, $142 = 0, $143 = 0, $144 = 0, $145 = 0, $146 = 0, $147 = 0, $148 = 0, $149 = 0, $15 = 0, $150 = 0, $151 = 0, $152 = 0, $153 = 0, $154 = 0, $155 = 0, $156 = 0, $157 = 0; - var $158 = 0, $159 = 0, $16 = 0, $160 = 0, $161 = 0, $162 = 0, $163 = 0, $164 = 0, $165 = 0, $166 = 0, $167 = 0, $168 = 0, $169 = 0, $17 = 0, $170 = 0, $171 = 0, $172 = 0, $173 = 0, $174 = 0, $175 = 0; - var $176 = 0, $177 = 0, $178 = 0, $179 = 0, $18 = 0, $180 = 0, $181 = 0, $182 = 0, $183 = 0, $184 = 0, $185 = 0, $186 = 0, $187 = 0, $188 = 0, $189 = 0, $19 = 0, $190 = 0, $191 = 0, $192 = 0, $193 = 0; - var $194 = 0, $195 = 0, $196 = 0, $197 = 0, $198 = 0, $199 = 0, $2 = 0, $20 = 0, $200 = 0, $201 = 0, $202 = 0, $203 = 0, $204 = 0, $205 = 0, $206 = 0, $207 = 0, $208 = 0, $21 = 0, $22 = 0, $23 = 0; - var $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0, $41 = 0; - var $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0, $6 = 0; - var $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $75 = 0, $76 = 0, $77 = 0, $78 = 0; - var $79 = 0, $8 = 0, $80 = 0, $81 = 0, $82 = 0, $83 = 0, $84 = 0, $85 = 0, $86 = 0, $87 = 0, $88 = 0, $89 = 0, $9 = 0, $90 = 0, $91 = 0, $92 = 0, $93 = 0, $94 = 0, $95 = 0, $96 = 0; - var $97 = 0, $98 = 0, $99 = 0, $F$0$i$i = 0, $F104$0 = 0, $F197$0$i = 0, $F224$0$i$i = 0, $F290$0$i = 0, $I252$0$i$i = 0, $I316$0$i = 0, $I57$0$i$i = 0, $K105$0$i$i = 0, $K305$0$i$i = 0, $K373$0$i = 0, $R$1$i = 0, $R$1$i$168 = 0, $R$1$i$168$lcssa = 0, $R$1$i$i = 0, $R$1$i$i$lcssa = 0, $R$1$i$lcssa = 0; - var $R$3$i = 0, $R$3$i$171 = 0, $R$3$i$i = 0, $RP$1$i = 0, $RP$1$i$167 = 0, $RP$1$i$167$lcssa = 0, $RP$1$i$i = 0, $RP$1$i$i$lcssa = 0, $RP$1$i$lcssa = 0, $T$0$i = 0, $T$0$i$58$i = 0, $T$0$i$58$i$lcssa = 0, $T$0$i$58$i$lcssa283 = 0, $T$0$i$i = 0, $T$0$i$i$lcssa = 0, $T$0$i$i$lcssa284 = 0, $T$0$i$lcssa = 0, $T$0$i$lcssa293 = 0, $add$i = 0, $add$i$146 = 0; - var $add$i$180 = 0, $add$i$i = 0, $add$ptr = 0, $add$ptr$i = 0, $add$ptr$i$1$i$i = 0, $add$ptr$i$11$i = 0, $add$ptr$i$161 = 0, $add$ptr$i$193 = 0, $add$ptr$i$21$i = 0, $add$ptr$i$32$i = 0, $add$ptr$i$i = 0, $add$ptr$i$i$i = 0, $add$ptr$i$i$i$lcssa = 0, $add$ptr14$i$i = 0, $add$ptr15$i$i = 0, $add$ptr16$i$i = 0, $add$ptr166 = 0, $add$ptr169 = 0, $add$ptr17$i$i = 0, $add$ptr178 = 0; - var $add$ptr181$i = 0, $add$ptr182 = 0, $add$ptr189$i = 0, $add$ptr190$i = 0, $add$ptr193 = 0, $add$ptr199 = 0, $add$ptr2$i$i = 0, $add$ptr205$i$i = 0, $add$ptr212$i$i = 0, $add$ptr225$i = 0, $add$ptr227$i = 0, $add$ptr24$i$i = 0, $add$ptr262$i = 0, $add$ptr269$i = 0, $add$ptr273$i = 0, $add$ptr282$i = 0, $add$ptr3$i$i = 0, $add$ptr30$i$i = 0, $add$ptr369$i$i = 0, $add$ptr4$i$26$i = 0; - var $add$ptr4$i$37$i = 0, $add$ptr4$i$i = 0, $add$ptr4$i$i$i = 0, $add$ptr441$i = 0, $add$ptr5$i$i = 0, $add$ptr6$i$30$i = 0, $add$ptr6$i$i = 0, $add$ptr6$i$i$i = 0, $add$ptr7$i$i = 0, $add$ptr8$i122$i = 0, $add$ptr95 = 0, $add$ptr98 = 0, $add10$i = 0, $add101$i = 0, $add110$i = 0, $add13$i = 0, $add14$i = 0, $add140$i = 0, $add144 = 0, $add150$i = 0; - var $add17$i = 0, $add17$i$183 = 0, $add177$i = 0, $add18$i = 0, $add19$i = 0, $add2 = 0, $add20$i = 0, $add206$i$i = 0, $add212$i = 0, $add215$i = 0, $add22$i = 0, $add246$i = 0, $add26$i$i = 0, $add268$i = 0, $add269$i$i = 0, $add274$i$i = 0, $add278$i$i = 0, $add280$i$i = 0, $add283$i$i = 0, $add337$i = 0; - var $add342$i = 0, $add346$i = 0, $add348$i = 0, $add351$i = 0, $add46$i = 0, $add50 = 0, $add51$i = 0, $add54 = 0, $add54$i = 0, $add58 = 0, $add62 = 0, $add64 = 0, $add74$i$i = 0, $add77$i = 0, $add78$i = 0, $add79$i$i = 0, $add8 = 0, $add82$i = 0, $add83$i$i = 0, $add85$i$i = 0; - var $add86$i = 0, $add88$i$i = 0, $add9$i = 0, $add90$i = 0, $add92$i = 0, $and = 0, $and$i = 0, $and$i$12$i = 0, $and$i$14$i = 0, $and$i$143 = 0, $and$i$22$i = 0, $and$i$33$i = 0, $and$i$i = 0, $and$i$i$i = 0, $and100$i = 0, $and103$i = 0, $and104$i = 0, $and106 = 0, $and11$i = 0, $and119$i$i = 0; - var $and12$i = 0, $and13$i = 0, $and13$i$i = 0, $and133$i$i = 0, $and14 = 0, $and145 = 0, $and17$i = 0, $and194$i = 0, $and194$i$204 = 0, $and199$i = 0, $and209$i$i = 0, $and21$i = 0, $and21$i$149 = 0, $and227$i$i = 0, $and236$i = 0, $and264$i$i = 0, $and268$i$i = 0, $and273$i$i = 0, $and282$i$i = 0, $and29$i = 0; - var $and292$i = 0, $and295$i$i = 0, $and3$i = 0, $and3$i$24$i = 0, $and3$i$35$i = 0, $and3$i$i = 0, $and3$i$i$i = 0, $and30$i = 0, $and318$i$i = 0, $and32$i = 0, $and32$i$i = 0, $and33$i$i = 0, $and331$i = 0, $and336$i = 0, $and341$i = 0, $and350$i = 0, $and363$i = 0, $and37$i$i = 0, $and387$i = 0, $and4 = 0; - var $and40$i$i = 0, $and41 = 0, $and42$i = 0, $and43 = 0, $and46 = 0, $and49 = 0, $and49$i = 0, $and49$i$i = 0, $and53 = 0, $and57 = 0, $and6$i = 0, $and6$i$38$i = 0, $and6$i$i = 0, $and61 = 0, $and64$i = 0, $and68$i = 0, $and69$i$i = 0, $and7 = 0, $and7$i$i = 0, $and73$i = 0; - var $and73$i$i = 0, $and74 = 0, $and77$i = 0, $and78$i$i = 0, $and8$i = 0, $and80$i = 0, $and81$i = 0, $and85$i = 0, $and87$i$i = 0, $and89$i = 0, $and9$i = 0, $and96$i$i = 0, $arrayidx = 0, $arrayidx$i = 0, $arrayidx$i$150 = 0, $arrayidx$i$20$i = 0, $arrayidx$i$48$i = 0, $arrayidx$i$i = 0, $arrayidx103 = 0, $arrayidx103$i$i = 0; - var $arrayidx106$i = 0, $arrayidx107$i$i = 0, $arrayidx113$i = 0, $arrayidx113$i$159 = 0, $arrayidx121$i = 0, $arrayidx123$i$i = 0, $arrayidx126$i$i = 0, $arrayidx126$i$i$lcssa = 0, $arrayidx137$i = 0, $arrayidx143$i$i = 0, $arrayidx148$i = 0, $arrayidx151$i = 0, $arrayidx151$i$i = 0, $arrayidx154$i = 0, $arrayidx155$i = 0, $arrayidx161$i = 0, $arrayidx165$i = 0, $arrayidx165$i$169 = 0, $arrayidx178$i$i = 0, $arrayidx184$i = 0; - var $arrayidx184$i$i = 0, $arrayidx195$i$i = 0, $arrayidx196$i = 0, $arrayidx204$i = 0, $arrayidx212$i = 0, $arrayidx223$i$i = 0, $arrayidx228$i = 0, $arrayidx23$i = 0, $arrayidx239$i = 0, $arrayidx245$i = 0, $arrayidx256$i = 0, $arrayidx27$i = 0, $arrayidx287$i$i = 0, $arrayidx289$i = 0, $arrayidx290$i$i = 0, $arrayidx325$i$i = 0, $arrayidx325$i$i$lcssa = 0, $arrayidx355$i = 0, $arrayidx358$i = 0, $arrayidx394$i = 0; - var $arrayidx394$i$lcssa = 0, $arrayidx40$i = 0, $arrayidx44$i = 0, $arrayidx61$i = 0, $arrayidx65$i = 0, $arrayidx66 = 0, $arrayidx71$i = 0, $arrayidx75$i = 0, $arrayidx91$i$i = 0, $arrayidx92$i$i = 0, $arrayidx94$i = 0, $arrayidx94$i$156 = 0, $arrayidx96$i$i = 0, $base$i$i$lcssa = 0, $base226$i$lcssa = 0, $bk = 0, $bk$i = 0, $bk$i$163 = 0, $bk$i$46$i = 0, $bk$i$i = 0; - var $bk102$i$i = 0, $bk122 = 0, $bk124 = 0, $bk136$i = 0, $bk139$i$i = 0, $bk158$i$i = 0, $bk161$i$i = 0, $bk218$i = 0, $bk220$i = 0, $bk246$i$i = 0, $bk248$i$i = 0, $bk302$i$i = 0, $bk311$i = 0, $bk313$i = 0, $bk338$i$i = 0, $bk357$i$i = 0, $bk360$i$i = 0, $bk370$i = 0, $bk407$i = 0, $bk429$i = 0; - var $bk43$i$i = 0, $bk432$i = 0, $bk47$i = 0, $bk55$i$i = 0, $bk67$i$i = 0, $bk74$i$i = 0, $bk78 = 0, $bk82$i$i = 0, $br$2$ph$i = 0, $call$i$i = 0, $call107$i = 0, $call131$i = 0, $call132$i = 0, $call275$i = 0, $call37$i = 0, $call6$i$i = 0, $call68$i = 0, $call83$i = 0, $child$i$i = 0, $child166$i$i = 0; - var $child289$i$i = 0, $child357$i = 0, $cmp = 0, $cmp$i = 0, $cmp$i$13$i = 0, $cmp$i$140 = 0, $cmp$i$15$i = 0, $cmp$i$179 = 0, $cmp$i$2$i$i = 0, $cmp$i$23$i = 0, $cmp$i$34$i = 0, $cmp$i$9$i = 0, $cmp$i$i$i = 0, $cmp1 = 0, $cmp1$i = 0, $cmp1$i$i = 0, $cmp10 = 0, $cmp100$i$i = 0, $cmp102$i = 0, $cmp104$i$i = 0; - var $cmp105$i = 0, $cmp106$i$i = 0, $cmp107$i = 0, $cmp107$i$157 = 0, $cmp108$i = 0, $cmp108$i$i = 0, $cmp112$i$i = 0, $cmp113 = 0, $cmp114$i = 0, $cmp116$i = 0, $cmp118$i = 0, $cmp119$i = 0, $cmp12$i = 0, $cmp120$i$53$i = 0, $cmp120$i$i = 0, $cmp121$i = 0, $cmp123$i = 0, $cmp124$i$i = 0, $cmp126$i = 0, $cmp127$i = 0; - var $cmp128 = 0, $cmp128$i = 0, $cmp128$i$i = 0, $cmp130$i = 0, $cmp133$i = 0, $cmp133$i$196 = 0, $cmp133$i$i = 0, $cmp135$i = 0, $cmp137$i = 0, $cmp137$i$197 = 0, $cmp137$i$i = 0, $cmp138$i = 0, $cmp139 = 0, $cmp140$i = 0, $cmp141$not$i = 0, $cmp142$i = 0, $cmp144$i$i = 0, $cmp146 = 0, $cmp15 = 0, $cmp15$i = 0; - var $cmp151$i = 0, $cmp152$i = 0, $cmp153$i$i = 0, $cmp155$i = 0, $cmp156 = 0, $cmp156$i = 0, $cmp156$i$i = 0, $cmp157$i = 0, $cmp159$i = 0, $cmp159$i$199 = 0, $cmp16 = 0, $cmp160$i$i = 0, $cmp162 = 0, $cmp162$i = 0, $cmp162$i$200 = 0, $cmp166$i = 0, $cmp168$i$i = 0, $cmp171$i = 0, $cmp172$i$i = 0, $cmp174$i = 0; - var $cmp180$i = 0, $cmp185$i = 0, $cmp185$i$i = 0, $cmp186 = 0, $cmp186$i = 0, $cmp189$i$i = 0, $cmp19$i = 0, $cmp190$i = 0, $cmp191$i = 0, $cmp198$i = 0, $cmp2$i$i = 0, $cmp2$i$i$i = 0, $cmp20$i$i = 0, $cmp203$i = 0, $cmp205$i = 0, $cmp208$i = 0, $cmp209$i = 0, $cmp21$i = 0, $cmp215$i$i = 0, $cmp217$i = 0; - var $cmp218$i = 0, $cmp221$i = 0, $cmp224$i = 0, $cmp228$i = 0, $cmp229$i = 0, $cmp233$i = 0, $cmp236$i$i = 0, $cmp24$i = 0, $cmp24$i$i = 0, $cmp246$i = 0, $cmp250$i = 0, $cmp254$i$i = 0, $cmp257$i = 0, $cmp258$i$i = 0, $cmp26$i = 0, $cmp265$i = 0, $cmp27$i$i = 0, $cmp28$i = 0, $cmp28$i$i = 0, $cmp284$i = 0; - var $cmp29 = 0, $cmp3$i$i = 0, $cmp301$i = 0, $cmp306$i$i = 0, $cmp31 = 0, $cmp319$i = 0, $cmp319$i$i = 0, $cmp32$i = 0, $cmp32$i$185 = 0, $cmp323$i = 0, $cmp327$i$i = 0, $cmp33$i = 0, $cmp332$i$i = 0, $cmp34$i = 0, $cmp34$i$i = 0, $cmp35$i = 0, $cmp350$i$i = 0, $cmp36$i = 0, $cmp36$i$i = 0, $cmp374$i = 0; - var $cmp38$i = 0, $cmp38$i$i = 0, $cmp388$i = 0, $cmp396$i = 0, $cmp40$i = 0, $cmp401$i = 0, $cmp41$i$i = 0, $cmp42$i$i = 0, $cmp422$i = 0, $cmp43$i = 0, $cmp44$i$i = 0, $cmp45$i = 0, $cmp45$i$155 = 0, $cmp46$i = 0, $cmp46$i$49$i = 0, $cmp46$i$i = 0, $cmp48$i = 0, $cmp49$i = 0, $cmp5 = 0, $cmp51$i = 0; - var $cmp54$i$i = 0, $cmp55$i = 0, $cmp55$i$187 = 0, $cmp57$i = 0, $cmp57$i$188 = 0, $cmp57$i$i = 0, $cmp59$i$i = 0, $cmp60$i = 0, $cmp60$i$i = 0, $cmp62$i = 0, $cmp63$i = 0, $cmp63$i$i = 0, $cmp65$i = 0, $cmp66$i = 0, $cmp66$i$190 = 0, $cmp69$i = 0, $cmp7$i$i = 0, $cmp70 = 0, $cmp72$i = 0, $cmp75$i$i = 0; - var $cmp76 = 0, $cmp76$i = 0, $cmp79 = 0, $cmp81$i = 0, $cmp81$i$191 = 0, $cmp81$i$i = 0, $cmp83$i$i = 0, $cmp85$i = 0, $cmp86$i$i = 0, $cmp89$i = 0, $cmp9$i$i = 0, $cmp90$i = 0, $cmp91$i = 0, $cmp93$i = 0, $cmp95$i = 0, $cmp96$i = 0, $cmp97$7$i = 0, $cmp97$i = 0, $cmp97$i$i = 0, $cmp99 = 0; - var $cond = 0, $cond$i = 0, $cond$i$16$i = 0, $cond$i$25$i = 0, $cond$i$36$i = 0, $cond$i$i = 0, $cond$i$i$i = 0, $cond$v$0$i = 0, $cond115$i$i = 0, $cond13$i$i = 0, $cond15$i$i = 0, $cond2$i = 0, $cond2$i$i = 0, $cond3$i = 0, $cond315$i$i = 0, $cond383$i = 0, $cond4$i = 0, $exitcond$i$i = 0, $fd$i = 0, $fd$i$164 = 0; - var $fd$i$i = 0, $fd103$i$i = 0, $fd123 = 0, $fd139$i = 0, $fd140$i$i = 0, $fd148$i$i = 0, $fd160$i$i = 0, $fd219$i = 0, $fd247$i$i = 0, $fd303$i$i = 0, $fd312$i = 0, $fd339$i$i = 0, $fd344$i$i = 0, $fd359$i$i = 0, $fd371$i = 0, $fd408$i = 0, $fd416$i = 0, $fd431$i = 0, $fd50$i = 0, $fd54$i$i = 0; - var $fd59$i$i = 0, $fd68$pre$phi$i$iZ2D = 0, $fd69 = 0, $fd78$i$i = 0, $fd85$i$i = 0, $fd9 = 0, $head = 0, $head$i = 0, $head$i$154 = 0, $head$i$17$i = 0, $head$i$29$i = 0, $head$i$42$i = 0, $head$i$i = 0, $head$i$i$i = 0, $head118$i$i = 0, $head168 = 0, $head173 = 0, $head177 = 0, $head179 = 0, $head179$i = 0; - var $head182$i = 0, $head187$i = 0, $head189$i = 0, $head195 = 0, $head198 = 0, $head208$i$i = 0, $head211$i$i = 0, $head23$i$i = 0, $head25 = 0, $head265$i = 0, $head268$i = 0, $head271$i = 0, $head274$i = 0, $head279$i = 0, $head281$i = 0, $head29$i = 0, $head29$i$i = 0, $head317$i$i = 0, $head32$i$i = 0, $head34$i$i = 0; - var $head386$i = 0, $head7$i$31$i = 0, $head7$i$i = 0, $head7$i$i$i = 0, $head94 = 0, $head97 = 0, $head99$i = 0, $i$01$i$i = 0, $idx$0$i = 0, $inc$i$i = 0, $index$i = 0, $index$i$172 = 0, $index$i$54$i = 0, $index$i$i = 0, $index288$i$i = 0, $index356$i = 0, $nb$0 = 0, $neg = 0, $neg$i = 0, $neg$i$173 = 0; - var $neg$i$182 = 0, $neg$i$i = 0, $neg103$i = 0, $neg13 = 0, $neg132$i$i = 0, $neg48$i = 0, $neg73 = 0, $next$i = 0, $next$i$i = 0, $next$i$i$i = 0, $next231$i = 0, $not$cmp150$i$i = 0, $not$cmp346$i$i = 0, $not$cmp418$i = 0, $oldfirst$0$i$i = 0, $or$cond$i = 0, $or$cond$i$189 = 0, $or$cond1$i = 0, $or$cond1$i$184 = 0, $or$cond2$i = 0; - var $or$cond3$i = 0, $or$cond4$i = 0, $or$cond5$i = 0, $or$cond7$i = 0, $or$cond8$i = 0, $or$cond98$i = 0, $or$i = 0, $or$i$195 = 0, $or$i$28$i = 0, $or$i$i = 0, $or$i$i$i = 0, $or101$i$i = 0, $or110 = 0, $or167 = 0, $or172 = 0, $or176 = 0, $or178$i = 0, $or180 = 0, $or183$i = 0, $or186$i = 0; - var $or188$i = 0, $or19$i$i = 0, $or194 = 0, $or197 = 0, $or204$i = 0, $or210$i$i = 0, $or22$i$i = 0, $or23 = 0, $or232$i$i = 0, $or26 = 0, $or264$i = 0, $or267$i = 0, $or270$i = 0, $or275$i = 0, $or278$i = 0, $or28$i$i = 0, $or280$i = 0, $or297$i = 0, $or300$i$i = 0, $or33$i$i = 0; - var $or368$i = 0, $or40 = 0, $or44$i$i = 0, $or93 = 0, $or96 = 0, $p$0$i$i = 0, $parent$i = 0, $parent$i$162 = 0, $parent$i$51$i = 0, $parent$i$i = 0, $parent135$i = 0, $parent138$i$i = 0, $parent149$i = 0, $parent162$i$i = 0, $parent165$i$i = 0, $parent166$i = 0, $parent179$i$i = 0, $parent196$i$i = 0, $parent226$i = 0, $parent240$i = 0; - var $parent257$i = 0, $parent301$i$i = 0, $parent337$i$i = 0, $parent361$i$i = 0, $parent369$i = 0, $parent406$i = 0, $parent433$i = 0, $qsize$0$i$i = 0, $retval$0 = 0, $rsize$0$i = 0, $rsize$0$i$152 = 0, $rsize$0$i$lcssa = 0, $rsize$1$i = 0, $rsize$3$i = 0, $rsize$4$lcssa$i = 0, $rsize$49$i = 0, $rst$0$i = 0, $rst$1$i = 0, $sflags193$i = 0, $sflags235$i = 0; - var $shl = 0, $shl$i = 0, $shl$i$144 = 0, $shl$i$19$i = 0, $shl$i$47$i = 0, $shl$i$i = 0, $shl102 = 0, $shl105 = 0, $shl116$i$i = 0, $shl12 = 0, $shl127$i$i = 0, $shl131$i$i = 0, $shl15$i = 0, $shl18$i = 0, $shl192$i = 0, $shl195$i = 0, $shl198$i = 0, $shl22 = 0, $shl221$i$i = 0, $shl226$i$i = 0; - var $shl265$i$i = 0, $shl270$i$i = 0, $shl276$i$i = 0, $shl279$i$i = 0, $shl288$i = 0, $shl291$i = 0, $shl294$i$i = 0, $shl31$i = 0, $shl316$i$i = 0, $shl326$i$i = 0, $shl333$i = 0, $shl338$i = 0, $shl344$i = 0, $shl347$i = 0, $shl35 = 0, $shl362$i = 0, $shl37 = 0, $shl384$i = 0, $shl39$i$i = 0, $shl395$i = 0; - var $shl48$i$i = 0, $shl52$i = 0, $shl60$i = 0, $shl65 = 0, $shl70$i$i = 0, $shl72 = 0, $shl75$i$i = 0, $shl81$i$i = 0, $shl84$i$i = 0, $shl9$i = 0, $shl90 = 0, $shl95$i$i = 0, $shr = 0, $shr$i = 0, $shr$i$139 = 0, $shr$i$45$i = 0, $shr$i$i = 0, $shr101 = 0, $shr11$i = 0, $shr11$i$147 = 0; - var $shr110$i$i = 0, $shr12$i = 0, $shr123$i$i = 0, $shr15$i = 0, $shr16$i = 0, $shr16$i$148 = 0, $shr19$i = 0, $shr194$i = 0, $shr20$i = 0, $shr214$i$i = 0, $shr253$i$i = 0, $shr263$i$i = 0, $shr267$i$i = 0, $shr27$i = 0, $shr272$i$i = 0, $shr277$i$i = 0, $shr281$i$i = 0, $shr283$i = 0, $shr3 = 0, $shr310$i$i = 0; - var $shr318$i = 0, $shr322$i$i = 0, $shr330$i = 0, $shr335$i = 0, $shr340$i = 0, $shr345$i = 0, $shr349$i = 0, $shr378$i = 0, $shr391$i = 0, $shr4$i = 0, $shr41$i = 0, $shr45 = 0, $shr47 = 0, $shr48 = 0, $shr5$i = 0, $shr5$i$142 = 0, $shr51 = 0, $shr52 = 0, $shr55 = 0, $shr56 = 0; - var $shr58$i$i = 0, $shr59 = 0, $shr60 = 0, $shr63 = 0, $shr68$i$i = 0, $shr7$i = 0, $shr7$i$145 = 0, $shr72$i = 0, $shr72$i$i = 0, $shr75$i = 0, $shr76$i = 0, $shr77$i$i = 0, $shr79$i = 0, $shr8$i = 0, $shr80$i = 0, $shr82$i$i = 0, $shr83$i = 0, $shr84$i = 0, $shr86$i$i = 0, $shr87$i = 0; - var $shr88$i = 0, $shr91$i = 0, $size$i$i = 0, $size$i$i$i = 0, $size$i$i$lcssa = 0, $size188$i = 0, $size188$i$lcssa = 0, $size245$i = 0, $sizebits$0$i = 0, $sizebits$0$shl52$i = 0, $sp$0$i$i = 0, $sp$0$i$i$i = 0, $sp$0108$i = 0, $sp$0108$i$lcssa = 0, $sp$1107$i = 0, $sp$1107$i$lcssa = 0, $ssize$0$i = 0, $ssize$2$ph$i = 0, $ssize$5$i = 0, $sub = 0; - var $sub$i = 0, $sub$i$138 = 0, $sub$i$181 = 0, $sub$i$i = 0, $sub$ptr$lhs$cast$i = 0, $sub$ptr$lhs$cast$i$39$i = 0, $sub$ptr$lhs$cast$i$i = 0, $sub$ptr$rhs$cast$i = 0, $sub$ptr$rhs$cast$i$40$i = 0, $sub$ptr$rhs$cast$i$i = 0, $sub$ptr$sub$i = 0, $sub$ptr$sub$i$41$i = 0, $sub$ptr$sub$i$i = 0, $sub10$i = 0, $sub101$i = 0, $sub101$rsize$4$i = 0, $sub112$i = 0, $sub113$i$i = 0, $sub118$i = 0, $sub14$i = 0; - var $sub16$i$i = 0, $sub160 = 0, $sub172$i = 0, $sub18$i$i = 0, $sub190 = 0, $sub2$i = 0, $sub22$i = 0, $sub260$i = 0, $sub262$i$i = 0, $sub266$i$i = 0, $sub271$i$i = 0, $sub275$i$i = 0, $sub30$i = 0, $sub31$i = 0, $sub31$rsize$0$i = 0, $sub313$i$i = 0, $sub329$i = 0, $sub33$i = 0, $sub334$i = 0, $sub339$i = 0; - var $sub343$i = 0, $sub381$i = 0, $sub4$i = 0, $sub41$i = 0, $sub42 = 0, $sub44 = 0, $sub5$i$27$i = 0, $sub5$i$i = 0, $sub5$i$i$i = 0, $sub50$i = 0, $sub6$i = 0, $sub63$i = 0, $sub67$i = 0, $sub67$i$i = 0, $sub70$i = 0, $sub71$i$i = 0, $sub76$i$i = 0, $sub80$i$i = 0, $sub91 = 0, $sub99$i = 0; - var $t$0$i = 0, $t$0$i$151 = 0, $t$2$i = 0, $t$4$ph$i = 0, $t$4$v$4$i = 0, $t$48$i = 0, $tbase$796$i = 0, $tobool$i$i = 0, $tobool107 = 0, $tobool195$i = 0, $tobool200$i = 0, $tobool228$i$i = 0, $tobool237$i = 0, $tobool293$i = 0, $tobool296$i$i = 0, $tobool30$i = 0, $tobool364$i = 0, $tobool97$i$i = 0, $tsize$795$i = 0, $v$0$i = 0; - var $v$0$i$153 = 0, $v$0$i$lcssa = 0, $v$1$i = 0, $v$3$i = 0, $v$4$lcssa$i = 0, $v$410$i = 0, $xor$i$i = 0, label = 0, sp = 0; - sp = STACKTOP; - $cmp = ($bytes>>>0)<(245); - do { - if ($cmp) { - $cmp1 = ($bytes>>>0)<(11); - $add2 = (($bytes) + 11)|0; - $and = $add2 & -8; - $cond = $cmp1 ? 16 : $and; - $shr = $cond >>> 3; - $0 = HEAP32[44]|0; - $shr3 = $0 >>> $shr; - $and4 = $shr3 & 3; - $cmp5 = ($and4|0)==(0); - if (!($cmp5)) { - $neg = $shr3 & 1; - $and7 = $neg ^ 1; - $add8 = (($and7) + ($shr))|0; - $shl = $add8 << 1; - $arrayidx = (216 + ($shl<<2)|0); - $1 = ((($arrayidx)) + 8|0); - $2 = HEAP32[$1>>2]|0; - $fd9 = ((($2)) + 8|0); - $3 = HEAP32[$fd9>>2]|0; - $cmp10 = ($arrayidx|0)==($3|0); - do { - if ($cmp10) { - $shl12 = 1 << $add8; - $neg13 = $shl12 ^ -1; - $and14 = $0 & $neg13; - HEAP32[44] = $and14; - } else { - $4 = HEAP32[(192)>>2]|0; - $cmp15 = ($3>>>0)<($4>>>0); - if ($cmp15) { - _abort(); - // unreachable; - } - $bk = ((($3)) + 12|0); - $5 = HEAP32[$bk>>2]|0; - $cmp16 = ($5|0)==($2|0); - if ($cmp16) { - HEAP32[$bk>>2] = $arrayidx; - HEAP32[$1>>2] = $3; - break; - } else { - _abort(); - // unreachable; - } - } - } while(0); - $shl22 = $add8 << 3; - $or23 = $shl22 | 3; - $head = ((($2)) + 4|0); - HEAP32[$head>>2] = $or23; - $add$ptr = (($2) + ($shl22)|0); - $head25 = ((($add$ptr)) + 4|0); - $6 = HEAP32[$head25>>2]|0; - $or26 = $6 | 1; - HEAP32[$head25>>2] = $or26; - $retval$0 = $fd9; - return ($retval$0|0); - } - $7 = HEAP32[(184)>>2]|0; - $cmp29 = ($cond>>>0)>($7>>>0); - if ($cmp29) { - $cmp31 = ($shr3|0)==(0); - if (!($cmp31)) { - $shl35 = $shr3 << $shr; - $shl37 = 2 << $shr; - $sub = (0 - ($shl37))|0; - $or40 = $shl37 | $sub; - $and41 = $shl35 & $or40; - $sub42 = (0 - ($and41))|0; - $and43 = $and41 & $sub42; - $sub44 = (($and43) + -1)|0; - $shr45 = $sub44 >>> 12; - $and46 = $shr45 & 16; - $shr47 = $sub44 >>> $and46; - $shr48 = $shr47 >>> 5; - $and49 = $shr48 & 8; - $add50 = $and49 | $and46; - $shr51 = $shr47 >>> $and49; - $shr52 = $shr51 >>> 2; - $and53 = $shr52 & 4; - $add54 = $add50 | $and53; - $shr55 = $shr51 >>> $and53; - $shr56 = $shr55 >>> 1; - $and57 = $shr56 & 2; - $add58 = $add54 | $and57; - $shr59 = $shr55 >>> $and57; - $shr60 = $shr59 >>> 1; - $and61 = $shr60 & 1; - $add62 = $add58 | $and61; - $shr63 = $shr59 >>> $and61; - $add64 = (($add62) + ($shr63))|0; - $shl65 = $add64 << 1; - $arrayidx66 = (216 + ($shl65<<2)|0); - $8 = ((($arrayidx66)) + 8|0); - $9 = HEAP32[$8>>2]|0; - $fd69 = ((($9)) + 8|0); - $10 = HEAP32[$fd69>>2]|0; - $cmp70 = ($arrayidx66|0)==($10|0); - do { - if ($cmp70) { - $shl72 = 1 << $add64; - $neg73 = $shl72 ^ -1; - $and74 = $0 & $neg73; - HEAP32[44] = $and74; - $13 = $7; - } else { - $11 = HEAP32[(192)>>2]|0; - $cmp76 = ($10>>>0)<($11>>>0); - if ($cmp76) { - _abort(); - // unreachable; - } - $bk78 = ((($10)) + 12|0); - $12 = HEAP32[$bk78>>2]|0; - $cmp79 = ($12|0)==($9|0); - if ($cmp79) { - HEAP32[$bk78>>2] = $arrayidx66; - HEAP32[$8>>2] = $10; - $$pre = HEAP32[(184)>>2]|0; - $13 = $$pre; - break; - } else { - _abort(); - // unreachable; - } - } - } while(0); - $shl90 = $add64 << 3; - $sub91 = (($shl90) - ($cond))|0; - $or93 = $cond | 3; - $head94 = ((($9)) + 4|0); - HEAP32[$head94>>2] = $or93; - $add$ptr95 = (($9) + ($cond)|0); - $or96 = $sub91 | 1; - $head97 = ((($add$ptr95)) + 4|0); - HEAP32[$head97>>2] = $or96; - $add$ptr98 = (($add$ptr95) + ($sub91)|0); - HEAP32[$add$ptr98>>2] = $sub91; - $cmp99 = ($13|0)==(0); - if (!($cmp99)) { - $14 = HEAP32[(196)>>2]|0; - $shr101 = $13 >>> 3; - $shl102 = $shr101 << 1; - $arrayidx103 = (216 + ($shl102<<2)|0); - $15 = HEAP32[44]|0; - $shl105 = 1 << $shr101; - $and106 = $15 & $shl105; - $tobool107 = ($and106|0)==(0); - if ($tobool107) { - $or110 = $15 | $shl105; - HEAP32[44] = $or110; - $$pre241 = ((($arrayidx103)) + 8|0); - $$pre$phiZ2D = $$pre241;$F104$0 = $arrayidx103; - } else { - $16 = ((($arrayidx103)) + 8|0); - $17 = HEAP32[$16>>2]|0; - $18 = HEAP32[(192)>>2]|0; - $cmp113 = ($17>>>0)<($18>>>0); - if ($cmp113) { - _abort(); - // unreachable; - } else { - $$pre$phiZ2D = $16;$F104$0 = $17; - } - } - HEAP32[$$pre$phiZ2D>>2] = $14; - $bk122 = ((($F104$0)) + 12|0); - HEAP32[$bk122>>2] = $14; - $fd123 = ((($14)) + 8|0); - HEAP32[$fd123>>2] = $F104$0; - $bk124 = ((($14)) + 12|0); - HEAP32[$bk124>>2] = $arrayidx103; - } - HEAP32[(184)>>2] = $sub91; - HEAP32[(196)>>2] = $add$ptr95; - $retval$0 = $fd69; - return ($retval$0|0); - } - $19 = HEAP32[(180)>>2]|0; - $cmp128 = ($19|0)==(0); - if ($cmp128) { - $nb$0 = $cond; - } else { - $sub$i = (0 - ($19))|0; - $and$i = $19 & $sub$i; - $sub2$i = (($and$i) + -1)|0; - $shr$i = $sub2$i >>> 12; - $and3$i = $shr$i & 16; - $shr4$i = $sub2$i >>> $and3$i; - $shr5$i = $shr4$i >>> 5; - $and6$i = $shr5$i & 8; - $add$i = $and6$i | $and3$i; - $shr7$i = $shr4$i >>> $and6$i; - $shr8$i = $shr7$i >>> 2; - $and9$i = $shr8$i & 4; - $add10$i = $add$i | $and9$i; - $shr11$i = $shr7$i >>> $and9$i; - $shr12$i = $shr11$i >>> 1; - $and13$i = $shr12$i & 2; - $add14$i = $add10$i | $and13$i; - $shr15$i = $shr11$i >>> $and13$i; - $shr16$i = $shr15$i >>> 1; - $and17$i = $shr16$i & 1; - $add18$i = $add14$i | $and17$i; - $shr19$i = $shr15$i >>> $and17$i; - $add20$i = (($add18$i) + ($shr19$i))|0; - $arrayidx$i = (480 + ($add20$i<<2)|0); - $20 = HEAP32[$arrayidx$i>>2]|0; - $head$i = ((($20)) + 4|0); - $21 = HEAP32[$head$i>>2]|0; - $and21$i = $21 & -8; - $sub22$i = (($and21$i) - ($cond))|0; - $rsize$0$i = $sub22$i;$t$0$i = $20;$v$0$i = $20; - while(1) { - $arrayidx23$i = ((($t$0$i)) + 16|0); - $22 = HEAP32[$arrayidx23$i>>2]|0; - $cmp$i = ($22|0)==(0|0); - if ($cmp$i) { - $arrayidx27$i = ((($t$0$i)) + 20|0); - $23 = HEAP32[$arrayidx27$i>>2]|0; - $cmp28$i = ($23|0)==(0|0); - if ($cmp28$i) { - $rsize$0$i$lcssa = $rsize$0$i;$v$0$i$lcssa = $v$0$i; - break; - } else { - $cond4$i = $23; - } - } else { - $cond4$i = $22; - } - $head29$i = ((($cond4$i)) + 4|0); - $24 = HEAP32[$head29$i>>2]|0; - $and30$i = $24 & -8; - $sub31$i = (($and30$i) - ($cond))|0; - $cmp32$i = ($sub31$i>>>0)<($rsize$0$i>>>0); - $sub31$rsize$0$i = $cmp32$i ? $sub31$i : $rsize$0$i; - $cond$v$0$i = $cmp32$i ? $cond4$i : $v$0$i; - $rsize$0$i = $sub31$rsize$0$i;$t$0$i = $cond4$i;$v$0$i = $cond$v$0$i; - } - $25 = HEAP32[(192)>>2]|0; - $cmp33$i = ($v$0$i$lcssa>>>0)<($25>>>0); - if ($cmp33$i) { - _abort(); - // unreachable; - } - $add$ptr$i = (($v$0$i$lcssa) + ($cond)|0); - $cmp35$i = ($v$0$i$lcssa>>>0)<($add$ptr$i>>>0); - if (!($cmp35$i)) { - _abort(); - // unreachable; - } - $parent$i = ((($v$0$i$lcssa)) + 24|0); - $26 = HEAP32[$parent$i>>2]|0; - $bk$i = ((($v$0$i$lcssa)) + 12|0); - $27 = HEAP32[$bk$i>>2]|0; - $cmp40$i = ($27|0)==($v$0$i$lcssa|0); - do { - if ($cmp40$i) { - $arrayidx61$i = ((($v$0$i$lcssa)) + 20|0); - $31 = HEAP32[$arrayidx61$i>>2]|0; - $cmp62$i = ($31|0)==(0|0); - if ($cmp62$i) { - $arrayidx65$i = ((($v$0$i$lcssa)) + 16|0); - $32 = HEAP32[$arrayidx65$i>>2]|0; - $cmp66$i = ($32|0)==(0|0); - if ($cmp66$i) { - $R$3$i = 0; - break; - } else { - $R$1$i = $32;$RP$1$i = $arrayidx65$i; - } - } else { - $R$1$i = $31;$RP$1$i = $arrayidx61$i; - } - while(1) { - $arrayidx71$i = ((($R$1$i)) + 20|0); - $33 = HEAP32[$arrayidx71$i>>2]|0; - $cmp72$i = ($33|0)==(0|0); - if (!($cmp72$i)) { - $R$1$i = $33;$RP$1$i = $arrayidx71$i; - continue; - } - $arrayidx75$i = ((($R$1$i)) + 16|0); - $34 = HEAP32[$arrayidx75$i>>2]|0; - $cmp76$i = ($34|0)==(0|0); - if ($cmp76$i) { - $R$1$i$lcssa = $R$1$i;$RP$1$i$lcssa = $RP$1$i; - break; - } else { - $R$1$i = $34;$RP$1$i = $arrayidx75$i; - } - } - $cmp81$i = ($RP$1$i$lcssa>>>0)<($25>>>0); - if ($cmp81$i) { - _abort(); - // unreachable; - } else { - HEAP32[$RP$1$i$lcssa>>2] = 0; - $R$3$i = $R$1$i$lcssa; - break; - } - } else { - $fd$i = ((($v$0$i$lcssa)) + 8|0); - $28 = HEAP32[$fd$i>>2]|0; - $cmp45$i = ($28>>>0)<($25>>>0); - if ($cmp45$i) { - _abort(); - // unreachable; - } - $bk47$i = ((($28)) + 12|0); - $29 = HEAP32[$bk47$i>>2]|0; - $cmp48$i = ($29|0)==($v$0$i$lcssa|0); - if (!($cmp48$i)) { - _abort(); - // unreachable; - } - $fd50$i = ((($27)) + 8|0); - $30 = HEAP32[$fd50$i>>2]|0; - $cmp51$i = ($30|0)==($v$0$i$lcssa|0); - if ($cmp51$i) { - HEAP32[$bk47$i>>2] = $27; - HEAP32[$fd50$i>>2] = $28; - $R$3$i = $27; - break; - } else { - _abort(); - // unreachable; - } - } - } while(0); - $cmp90$i = ($26|0)==(0|0); - do { - if (!($cmp90$i)) { - $index$i = ((($v$0$i$lcssa)) + 28|0); - $35 = HEAP32[$index$i>>2]|0; - $arrayidx94$i = (480 + ($35<<2)|0); - $36 = HEAP32[$arrayidx94$i>>2]|0; - $cmp95$i = ($v$0$i$lcssa|0)==($36|0); - if ($cmp95$i) { - HEAP32[$arrayidx94$i>>2] = $R$3$i; - $cond2$i = ($R$3$i|0)==(0|0); - if ($cond2$i) { - $shl$i = 1 << $35; - $neg$i = $shl$i ^ -1; - $37 = HEAP32[(180)>>2]|0; - $and103$i = $37 & $neg$i; - HEAP32[(180)>>2] = $and103$i; - break; - } - } else { - $38 = HEAP32[(192)>>2]|0; - $cmp107$i = ($26>>>0)<($38>>>0); - if ($cmp107$i) { - _abort(); - // unreachable; - } - $arrayidx113$i = ((($26)) + 16|0); - $39 = HEAP32[$arrayidx113$i>>2]|0; - $cmp114$i = ($39|0)==($v$0$i$lcssa|0); - if ($cmp114$i) { - HEAP32[$arrayidx113$i>>2] = $R$3$i; - } else { - $arrayidx121$i = ((($26)) + 20|0); - HEAP32[$arrayidx121$i>>2] = $R$3$i; - } - $cmp126$i = ($R$3$i|0)==(0|0); - if ($cmp126$i) { - break; - } - } - $40 = HEAP32[(192)>>2]|0; - $cmp130$i = ($R$3$i>>>0)<($40>>>0); - if ($cmp130$i) { - _abort(); - // unreachable; - } - $parent135$i = ((($R$3$i)) + 24|0); - HEAP32[$parent135$i>>2] = $26; - $arrayidx137$i = ((($v$0$i$lcssa)) + 16|0); - $41 = HEAP32[$arrayidx137$i>>2]|0; - $cmp138$i = ($41|0)==(0|0); - do { - if (!($cmp138$i)) { - $cmp142$i = ($41>>>0)<($40>>>0); - if ($cmp142$i) { - _abort(); - // unreachable; - } else { - $arrayidx148$i = ((($R$3$i)) + 16|0); - HEAP32[$arrayidx148$i>>2] = $41; - $parent149$i = ((($41)) + 24|0); - HEAP32[$parent149$i>>2] = $R$3$i; - break; - } - } - } while(0); - $arrayidx154$i = ((($v$0$i$lcssa)) + 20|0); - $42 = HEAP32[$arrayidx154$i>>2]|0; - $cmp155$i = ($42|0)==(0|0); - if (!($cmp155$i)) { - $43 = HEAP32[(192)>>2]|0; - $cmp159$i = ($42>>>0)<($43>>>0); - if ($cmp159$i) { - _abort(); - // unreachable; - } else { - $arrayidx165$i = ((($R$3$i)) + 20|0); - HEAP32[$arrayidx165$i>>2] = $42; - $parent166$i = ((($42)) + 24|0); - HEAP32[$parent166$i>>2] = $R$3$i; - break; - } - } - } - } while(0); - $cmp174$i = ($rsize$0$i$lcssa>>>0)<(16); - if ($cmp174$i) { - $add177$i = (($rsize$0$i$lcssa) + ($cond))|0; - $or178$i = $add177$i | 3; - $head179$i = ((($v$0$i$lcssa)) + 4|0); - HEAP32[$head179$i>>2] = $or178$i; - $add$ptr181$i = (($v$0$i$lcssa) + ($add177$i)|0); - $head182$i = ((($add$ptr181$i)) + 4|0); - $44 = HEAP32[$head182$i>>2]|0; - $or183$i = $44 | 1; - HEAP32[$head182$i>>2] = $or183$i; - } else { - $or186$i = $cond | 3; - $head187$i = ((($v$0$i$lcssa)) + 4|0); - HEAP32[$head187$i>>2] = $or186$i; - $or188$i = $rsize$0$i$lcssa | 1; - $head189$i = ((($add$ptr$i)) + 4|0); - HEAP32[$head189$i>>2] = $or188$i; - $add$ptr190$i = (($add$ptr$i) + ($rsize$0$i$lcssa)|0); - HEAP32[$add$ptr190$i>>2] = $rsize$0$i$lcssa; - $45 = HEAP32[(184)>>2]|0; - $cmp191$i = ($45|0)==(0); - if (!($cmp191$i)) { - $46 = HEAP32[(196)>>2]|0; - $shr194$i = $45 >>> 3; - $shl195$i = $shr194$i << 1; - $arrayidx196$i = (216 + ($shl195$i<<2)|0); - $47 = HEAP32[44]|0; - $shl198$i = 1 << $shr194$i; - $and199$i = $47 & $shl198$i; - $tobool200$i = ($and199$i|0)==(0); - if ($tobool200$i) { - $or204$i = $47 | $shl198$i; - HEAP32[44] = $or204$i; - $$pre$i = ((($arrayidx196$i)) + 8|0); - $$pre$phi$iZ2D = $$pre$i;$F197$0$i = $arrayidx196$i; - } else { - $48 = ((($arrayidx196$i)) + 8|0); - $49 = HEAP32[$48>>2]|0; - $50 = HEAP32[(192)>>2]|0; - $cmp208$i = ($49>>>0)<($50>>>0); - if ($cmp208$i) { - _abort(); - // unreachable; - } else { - $$pre$phi$iZ2D = $48;$F197$0$i = $49; - } - } - HEAP32[$$pre$phi$iZ2D>>2] = $46; - $bk218$i = ((($F197$0$i)) + 12|0); - HEAP32[$bk218$i>>2] = $46; - $fd219$i = ((($46)) + 8|0); - HEAP32[$fd219$i>>2] = $F197$0$i; - $bk220$i = ((($46)) + 12|0); - HEAP32[$bk220$i>>2] = $arrayidx196$i; - } - HEAP32[(184)>>2] = $rsize$0$i$lcssa; - HEAP32[(196)>>2] = $add$ptr$i; - } - $add$ptr225$i = ((($v$0$i$lcssa)) + 8|0); - $retval$0 = $add$ptr225$i; - return ($retval$0|0); - } - } else { - $nb$0 = $cond; - } - } else { - $cmp139 = ($bytes>>>0)>(4294967231); - if ($cmp139) { - $nb$0 = -1; - } else { - $add144 = (($bytes) + 11)|0; - $and145 = $add144 & -8; - $51 = HEAP32[(180)>>2]|0; - $cmp146 = ($51|0)==(0); - if ($cmp146) { - $nb$0 = $and145; - } else { - $sub$i$138 = (0 - ($and145))|0; - $shr$i$139 = $add144 >>> 8; - $cmp$i$140 = ($shr$i$139|0)==(0); - if ($cmp$i$140) { - $idx$0$i = 0; - } else { - $cmp1$i = ($and145>>>0)>(16777215); - if ($cmp1$i) { - $idx$0$i = 31; - } else { - $sub4$i = (($shr$i$139) + 1048320)|0; - $shr5$i$142 = $sub4$i >>> 16; - $and$i$143 = $shr5$i$142 & 8; - $shl$i$144 = $shr$i$139 << $and$i$143; - $sub6$i = (($shl$i$144) + 520192)|0; - $shr7$i$145 = $sub6$i >>> 16; - $and8$i = $shr7$i$145 & 4; - $add$i$146 = $and8$i | $and$i$143; - $shl9$i = $shl$i$144 << $and8$i; - $sub10$i = (($shl9$i) + 245760)|0; - $shr11$i$147 = $sub10$i >>> 16; - $and12$i = $shr11$i$147 & 2; - $add13$i = $add$i$146 | $and12$i; - $sub14$i = (14 - ($add13$i))|0; - $shl15$i = $shl9$i << $and12$i; - $shr16$i$148 = $shl15$i >>> 15; - $add17$i = (($sub14$i) + ($shr16$i$148))|0; - $shl18$i = $add17$i << 1; - $add19$i = (($add17$i) + 7)|0; - $shr20$i = $and145 >>> $add19$i; - $and21$i$149 = $shr20$i & 1; - $add22$i = $and21$i$149 | $shl18$i; - $idx$0$i = $add22$i; - } - } - $arrayidx$i$150 = (480 + ($idx$0$i<<2)|0); - $52 = HEAP32[$arrayidx$i$150>>2]|0; - $cmp24$i = ($52|0)==(0|0); - L123: do { - if ($cmp24$i) { - $rsize$3$i = $sub$i$138;$t$2$i = 0;$v$3$i = 0; - label = 86; - } else { - $cmp26$i = ($idx$0$i|0)==(31); - $shr27$i = $idx$0$i >>> 1; - $sub30$i = (25 - ($shr27$i))|0; - $cond$i = $cmp26$i ? 0 : $sub30$i; - $shl31$i = $and145 << $cond$i; - $rsize$0$i$152 = $sub$i$138;$rst$0$i = 0;$sizebits$0$i = $shl31$i;$t$0$i$151 = $52;$v$0$i$153 = 0; - while(1) { - $head$i$154 = ((($t$0$i$151)) + 4|0); - $53 = HEAP32[$head$i$154>>2]|0; - $and32$i = $53 & -8; - $sub33$i = (($and32$i) - ($and145))|0; - $cmp34$i = ($sub33$i>>>0)<($rsize$0$i$152>>>0); - if ($cmp34$i) { - $cmp36$i = ($and32$i|0)==($and145|0); - if ($cmp36$i) { - $rsize$49$i = $sub33$i;$t$48$i = $t$0$i$151;$v$410$i = $t$0$i$151; - label = 90; - break L123; - } else { - $rsize$1$i = $sub33$i;$v$1$i = $t$0$i$151; - } - } else { - $rsize$1$i = $rsize$0$i$152;$v$1$i = $v$0$i$153; - } - $arrayidx40$i = ((($t$0$i$151)) + 20|0); - $54 = HEAP32[$arrayidx40$i>>2]|0; - $shr41$i = $sizebits$0$i >>> 31; - $arrayidx44$i = (((($t$0$i$151)) + 16|0) + ($shr41$i<<2)|0); - $55 = HEAP32[$arrayidx44$i>>2]|0; - $cmp45$i$155 = ($54|0)==(0|0); - $cmp46$i = ($54|0)==($55|0); - $or$cond1$i = $cmp45$i$155 | $cmp46$i; - $rst$1$i = $or$cond1$i ? $rst$0$i : $54; - $cmp49$i = ($55|0)==(0|0); - $56 = $cmp49$i&1; - $shl52$i = $56 ^ 1; - $sizebits$0$shl52$i = $sizebits$0$i << $shl52$i; - if ($cmp49$i) { - $rsize$3$i = $rsize$1$i;$t$2$i = $rst$1$i;$v$3$i = $v$1$i; - label = 86; - break; - } else { - $rsize$0$i$152 = $rsize$1$i;$rst$0$i = $rst$1$i;$sizebits$0$i = $sizebits$0$shl52$i;$t$0$i$151 = $55;$v$0$i$153 = $v$1$i; - } - } - } - } while(0); - if ((label|0) == 86) { - $cmp55$i = ($t$2$i|0)==(0|0); - $cmp57$i = ($v$3$i|0)==(0|0); - $or$cond$i = $cmp55$i & $cmp57$i; - if ($or$cond$i) { - $shl60$i = 2 << $idx$0$i; - $sub63$i = (0 - ($shl60$i))|0; - $or$i = $shl60$i | $sub63$i; - $and64$i = $51 & $or$i; - $cmp65$i = ($and64$i|0)==(0); - if ($cmp65$i) { - $nb$0 = $and145; - break; - } - $sub67$i = (0 - ($and64$i))|0; - $and68$i = $and64$i & $sub67$i; - $sub70$i = (($and68$i) + -1)|0; - $shr72$i = $sub70$i >>> 12; - $and73$i = $shr72$i & 16; - $shr75$i = $sub70$i >>> $and73$i; - $shr76$i = $shr75$i >>> 5; - $and77$i = $shr76$i & 8; - $add78$i = $and77$i | $and73$i; - $shr79$i = $shr75$i >>> $and77$i; - $shr80$i = $shr79$i >>> 2; - $and81$i = $shr80$i & 4; - $add82$i = $add78$i | $and81$i; - $shr83$i = $shr79$i >>> $and81$i; - $shr84$i = $shr83$i >>> 1; - $and85$i = $shr84$i & 2; - $add86$i = $add82$i | $and85$i; - $shr87$i = $shr83$i >>> $and85$i; - $shr88$i = $shr87$i >>> 1; - $and89$i = $shr88$i & 1; - $add90$i = $add86$i | $and89$i; - $shr91$i = $shr87$i >>> $and89$i; - $add92$i = (($add90$i) + ($shr91$i))|0; - $arrayidx94$i$156 = (480 + ($add92$i<<2)|0); - $57 = HEAP32[$arrayidx94$i$156>>2]|0; - $t$4$ph$i = $57; - } else { - $t$4$ph$i = $t$2$i; - } - $cmp97$7$i = ($t$4$ph$i|0)==(0|0); - if ($cmp97$7$i) { - $rsize$4$lcssa$i = $rsize$3$i;$v$4$lcssa$i = $v$3$i; - } else { - $rsize$49$i = $rsize$3$i;$t$48$i = $t$4$ph$i;$v$410$i = $v$3$i; - label = 90; - } - } - if ((label|0) == 90) { - while(1) { - label = 0; - $head99$i = ((($t$48$i)) + 4|0); - $58 = HEAP32[$head99$i>>2]|0; - $and100$i = $58 & -8; - $sub101$i = (($and100$i) - ($and145))|0; - $cmp102$i = ($sub101$i>>>0)<($rsize$49$i>>>0); - $sub101$rsize$4$i = $cmp102$i ? $sub101$i : $rsize$49$i; - $t$4$v$4$i = $cmp102$i ? $t$48$i : $v$410$i; - $arrayidx106$i = ((($t$48$i)) + 16|0); - $59 = HEAP32[$arrayidx106$i>>2]|0; - $cmp107$i$157 = ($59|0)==(0|0); - if (!($cmp107$i$157)) { - $rsize$49$i = $sub101$rsize$4$i;$t$48$i = $59;$v$410$i = $t$4$v$4$i; - label = 90; - continue; - } - $arrayidx113$i$159 = ((($t$48$i)) + 20|0); - $60 = HEAP32[$arrayidx113$i$159>>2]|0; - $cmp97$i = ($60|0)==(0|0); - if ($cmp97$i) { - $rsize$4$lcssa$i = $sub101$rsize$4$i;$v$4$lcssa$i = $t$4$v$4$i; - break; - } else { - $rsize$49$i = $sub101$rsize$4$i;$t$48$i = $60;$v$410$i = $t$4$v$4$i; - label = 90; - } - } - } - $cmp116$i = ($v$4$lcssa$i|0)==(0|0); - if ($cmp116$i) { - $nb$0 = $and145; - } else { - $61 = HEAP32[(184)>>2]|0; - $sub118$i = (($61) - ($and145))|0; - $cmp119$i = ($rsize$4$lcssa$i>>>0)<($sub118$i>>>0); - if ($cmp119$i) { - $62 = HEAP32[(192)>>2]|0; - $cmp121$i = ($v$4$lcssa$i>>>0)<($62>>>0); - if ($cmp121$i) { - _abort(); - // unreachable; - } - $add$ptr$i$161 = (($v$4$lcssa$i) + ($and145)|0); - $cmp123$i = ($v$4$lcssa$i>>>0)<($add$ptr$i$161>>>0); - if (!($cmp123$i)) { - _abort(); - // unreachable; - } - $parent$i$162 = ((($v$4$lcssa$i)) + 24|0); - $63 = HEAP32[$parent$i$162>>2]|0; - $bk$i$163 = ((($v$4$lcssa$i)) + 12|0); - $64 = HEAP32[$bk$i$163>>2]|0; - $cmp128$i = ($64|0)==($v$4$lcssa$i|0); - do { - if ($cmp128$i) { - $arrayidx151$i = ((($v$4$lcssa$i)) + 20|0); - $68 = HEAP32[$arrayidx151$i>>2]|0; - $cmp152$i = ($68|0)==(0|0); - if ($cmp152$i) { - $arrayidx155$i = ((($v$4$lcssa$i)) + 16|0); - $69 = HEAP32[$arrayidx155$i>>2]|0; - $cmp156$i = ($69|0)==(0|0); - if ($cmp156$i) { - $R$3$i$171 = 0; - break; - } else { - $R$1$i$168 = $69;$RP$1$i$167 = $arrayidx155$i; - } - } else { - $R$1$i$168 = $68;$RP$1$i$167 = $arrayidx151$i; - } - while(1) { - $arrayidx161$i = ((($R$1$i$168)) + 20|0); - $70 = HEAP32[$arrayidx161$i>>2]|0; - $cmp162$i = ($70|0)==(0|0); - if (!($cmp162$i)) { - $R$1$i$168 = $70;$RP$1$i$167 = $arrayidx161$i; - continue; - } - $arrayidx165$i$169 = ((($R$1$i$168)) + 16|0); - $71 = HEAP32[$arrayidx165$i$169>>2]|0; - $cmp166$i = ($71|0)==(0|0); - if ($cmp166$i) { - $R$1$i$168$lcssa = $R$1$i$168;$RP$1$i$167$lcssa = $RP$1$i$167; - break; - } else { - $R$1$i$168 = $71;$RP$1$i$167 = $arrayidx165$i$169; - } - } - $cmp171$i = ($RP$1$i$167$lcssa>>>0)<($62>>>0); - if ($cmp171$i) { - _abort(); - // unreachable; - } else { - HEAP32[$RP$1$i$167$lcssa>>2] = 0; - $R$3$i$171 = $R$1$i$168$lcssa; - break; - } - } else { - $fd$i$164 = ((($v$4$lcssa$i)) + 8|0); - $65 = HEAP32[$fd$i$164>>2]|0; - $cmp133$i = ($65>>>0)<($62>>>0); - if ($cmp133$i) { - _abort(); - // unreachable; - } - $bk136$i = ((($65)) + 12|0); - $66 = HEAP32[$bk136$i>>2]|0; - $cmp137$i = ($66|0)==($v$4$lcssa$i|0); - if (!($cmp137$i)) { - _abort(); - // unreachable; - } - $fd139$i = ((($64)) + 8|0); - $67 = HEAP32[$fd139$i>>2]|0; - $cmp140$i = ($67|0)==($v$4$lcssa$i|0); - if ($cmp140$i) { - HEAP32[$bk136$i>>2] = $64; - HEAP32[$fd139$i>>2] = $65; - $R$3$i$171 = $64; - break; - } else { - _abort(); - // unreachable; - } - } - } while(0); - $cmp180$i = ($63|0)==(0|0); - do { - if (!($cmp180$i)) { - $index$i$172 = ((($v$4$lcssa$i)) + 28|0); - $72 = HEAP32[$index$i$172>>2]|0; - $arrayidx184$i = (480 + ($72<<2)|0); - $73 = HEAP32[$arrayidx184$i>>2]|0; - $cmp185$i = ($v$4$lcssa$i|0)==($73|0); - if ($cmp185$i) { - HEAP32[$arrayidx184$i>>2] = $R$3$i$171; - $cond3$i = ($R$3$i$171|0)==(0|0); - if ($cond3$i) { - $shl192$i = 1 << $72; - $neg$i$173 = $shl192$i ^ -1; - $74 = HEAP32[(180)>>2]|0; - $and194$i = $74 & $neg$i$173; - HEAP32[(180)>>2] = $and194$i; - break; - } - } else { - $75 = HEAP32[(192)>>2]|0; - $cmp198$i = ($63>>>0)<($75>>>0); - if ($cmp198$i) { - _abort(); - // unreachable; - } - $arrayidx204$i = ((($63)) + 16|0); - $76 = HEAP32[$arrayidx204$i>>2]|0; - $cmp205$i = ($76|0)==($v$4$lcssa$i|0); - if ($cmp205$i) { - HEAP32[$arrayidx204$i>>2] = $R$3$i$171; - } else { - $arrayidx212$i = ((($63)) + 20|0); - HEAP32[$arrayidx212$i>>2] = $R$3$i$171; - } - $cmp217$i = ($R$3$i$171|0)==(0|0); - if ($cmp217$i) { - break; - } - } - $77 = HEAP32[(192)>>2]|0; - $cmp221$i = ($R$3$i$171>>>0)<($77>>>0); - if ($cmp221$i) { - _abort(); - // unreachable; - } - $parent226$i = ((($R$3$i$171)) + 24|0); - HEAP32[$parent226$i>>2] = $63; - $arrayidx228$i = ((($v$4$lcssa$i)) + 16|0); - $78 = HEAP32[$arrayidx228$i>>2]|0; - $cmp229$i = ($78|0)==(0|0); - do { - if (!($cmp229$i)) { - $cmp233$i = ($78>>>0)<($77>>>0); - if ($cmp233$i) { - _abort(); - // unreachable; - } else { - $arrayidx239$i = ((($R$3$i$171)) + 16|0); - HEAP32[$arrayidx239$i>>2] = $78; - $parent240$i = ((($78)) + 24|0); - HEAP32[$parent240$i>>2] = $R$3$i$171; - break; - } - } - } while(0); - $arrayidx245$i = ((($v$4$lcssa$i)) + 20|0); - $79 = HEAP32[$arrayidx245$i>>2]|0; - $cmp246$i = ($79|0)==(0|0); - if (!($cmp246$i)) { - $80 = HEAP32[(192)>>2]|0; - $cmp250$i = ($79>>>0)<($80>>>0); - if ($cmp250$i) { - _abort(); - // unreachable; - } else { - $arrayidx256$i = ((($R$3$i$171)) + 20|0); - HEAP32[$arrayidx256$i>>2] = $79; - $parent257$i = ((($79)) + 24|0); - HEAP32[$parent257$i>>2] = $R$3$i$171; - break; - } - } - } - } while(0); - $cmp265$i = ($rsize$4$lcssa$i>>>0)<(16); - do { - if ($cmp265$i) { - $add268$i = (($rsize$4$lcssa$i) + ($and145))|0; - $or270$i = $add268$i | 3; - $head271$i = ((($v$4$lcssa$i)) + 4|0); - HEAP32[$head271$i>>2] = $or270$i; - $add$ptr273$i = (($v$4$lcssa$i) + ($add268$i)|0); - $head274$i = ((($add$ptr273$i)) + 4|0); - $81 = HEAP32[$head274$i>>2]|0; - $or275$i = $81 | 1; - HEAP32[$head274$i>>2] = $or275$i; - } else { - $or278$i = $and145 | 3; - $head279$i = ((($v$4$lcssa$i)) + 4|0); - HEAP32[$head279$i>>2] = $or278$i; - $or280$i = $rsize$4$lcssa$i | 1; - $head281$i = ((($add$ptr$i$161)) + 4|0); - HEAP32[$head281$i>>2] = $or280$i; - $add$ptr282$i = (($add$ptr$i$161) + ($rsize$4$lcssa$i)|0); - HEAP32[$add$ptr282$i>>2] = $rsize$4$lcssa$i; - $shr283$i = $rsize$4$lcssa$i >>> 3; - $cmp284$i = ($rsize$4$lcssa$i>>>0)<(256); - if ($cmp284$i) { - $shl288$i = $shr283$i << 1; - $arrayidx289$i = (216 + ($shl288$i<<2)|0); - $82 = HEAP32[44]|0; - $shl291$i = 1 << $shr283$i; - $and292$i = $82 & $shl291$i; - $tobool293$i = ($and292$i|0)==(0); - if ($tobool293$i) { - $or297$i = $82 | $shl291$i; - HEAP32[44] = $or297$i; - $$pre$i$177 = ((($arrayidx289$i)) + 8|0); - $$pre$phi$i$178Z2D = $$pre$i$177;$F290$0$i = $arrayidx289$i; - } else { - $83 = ((($arrayidx289$i)) + 8|0); - $84 = HEAP32[$83>>2]|0; - $85 = HEAP32[(192)>>2]|0; - $cmp301$i = ($84>>>0)<($85>>>0); - if ($cmp301$i) { - _abort(); - // unreachable; - } else { - $$pre$phi$i$178Z2D = $83;$F290$0$i = $84; - } - } - HEAP32[$$pre$phi$i$178Z2D>>2] = $add$ptr$i$161; - $bk311$i = ((($F290$0$i)) + 12|0); - HEAP32[$bk311$i>>2] = $add$ptr$i$161; - $fd312$i = ((($add$ptr$i$161)) + 8|0); - HEAP32[$fd312$i>>2] = $F290$0$i; - $bk313$i = ((($add$ptr$i$161)) + 12|0); - HEAP32[$bk313$i>>2] = $arrayidx289$i; - break; - } - $shr318$i = $rsize$4$lcssa$i >>> 8; - $cmp319$i = ($shr318$i|0)==(0); - if ($cmp319$i) { - $I316$0$i = 0; - } else { - $cmp323$i = ($rsize$4$lcssa$i>>>0)>(16777215); - if ($cmp323$i) { - $I316$0$i = 31; - } else { - $sub329$i = (($shr318$i) + 1048320)|0; - $shr330$i = $sub329$i >>> 16; - $and331$i = $shr330$i & 8; - $shl333$i = $shr318$i << $and331$i; - $sub334$i = (($shl333$i) + 520192)|0; - $shr335$i = $sub334$i >>> 16; - $and336$i = $shr335$i & 4; - $add337$i = $and336$i | $and331$i; - $shl338$i = $shl333$i << $and336$i; - $sub339$i = (($shl338$i) + 245760)|0; - $shr340$i = $sub339$i >>> 16; - $and341$i = $shr340$i & 2; - $add342$i = $add337$i | $and341$i; - $sub343$i = (14 - ($add342$i))|0; - $shl344$i = $shl338$i << $and341$i; - $shr345$i = $shl344$i >>> 15; - $add346$i = (($sub343$i) + ($shr345$i))|0; - $shl347$i = $add346$i << 1; - $add348$i = (($add346$i) + 7)|0; - $shr349$i = $rsize$4$lcssa$i >>> $add348$i; - $and350$i = $shr349$i & 1; - $add351$i = $and350$i | $shl347$i; - $I316$0$i = $add351$i; - } - } - $arrayidx355$i = (480 + ($I316$0$i<<2)|0); - $index356$i = ((($add$ptr$i$161)) + 28|0); - HEAP32[$index356$i>>2] = $I316$0$i; - $child357$i = ((($add$ptr$i$161)) + 16|0); - $arrayidx358$i = ((($child357$i)) + 4|0); - HEAP32[$arrayidx358$i>>2] = 0; - HEAP32[$child357$i>>2] = 0; - $86 = HEAP32[(180)>>2]|0; - $shl362$i = 1 << $I316$0$i; - $and363$i = $86 & $shl362$i; - $tobool364$i = ($and363$i|0)==(0); - if ($tobool364$i) { - $or368$i = $86 | $shl362$i; - HEAP32[(180)>>2] = $or368$i; - HEAP32[$arrayidx355$i>>2] = $add$ptr$i$161; - $parent369$i = ((($add$ptr$i$161)) + 24|0); - HEAP32[$parent369$i>>2] = $arrayidx355$i; - $bk370$i = ((($add$ptr$i$161)) + 12|0); - HEAP32[$bk370$i>>2] = $add$ptr$i$161; - $fd371$i = ((($add$ptr$i$161)) + 8|0); - HEAP32[$fd371$i>>2] = $add$ptr$i$161; - break; - } - $87 = HEAP32[$arrayidx355$i>>2]|0; - $cmp374$i = ($I316$0$i|0)==(31); - $shr378$i = $I316$0$i >>> 1; - $sub381$i = (25 - ($shr378$i))|0; - $cond383$i = $cmp374$i ? 0 : $sub381$i; - $shl384$i = $rsize$4$lcssa$i << $cond383$i; - $K373$0$i = $shl384$i;$T$0$i = $87; - while(1) { - $head386$i = ((($T$0$i)) + 4|0); - $88 = HEAP32[$head386$i>>2]|0; - $and387$i = $88 & -8; - $cmp388$i = ($and387$i|0)==($rsize$4$lcssa$i|0); - if ($cmp388$i) { - $T$0$i$lcssa = $T$0$i; - label = 148; - break; - } - $shr391$i = $K373$0$i >>> 31; - $arrayidx394$i = (((($T$0$i)) + 16|0) + ($shr391$i<<2)|0); - $shl395$i = $K373$0$i << 1; - $89 = HEAP32[$arrayidx394$i>>2]|0; - $cmp396$i = ($89|0)==(0|0); - if ($cmp396$i) { - $T$0$i$lcssa293 = $T$0$i;$arrayidx394$i$lcssa = $arrayidx394$i; - label = 145; - break; - } else { - $K373$0$i = $shl395$i;$T$0$i = $89; - } - } - if ((label|0) == 145) { - $90 = HEAP32[(192)>>2]|0; - $cmp401$i = ($arrayidx394$i$lcssa>>>0)<($90>>>0); - if ($cmp401$i) { - _abort(); - // unreachable; - } else { - HEAP32[$arrayidx394$i$lcssa>>2] = $add$ptr$i$161; - $parent406$i = ((($add$ptr$i$161)) + 24|0); - HEAP32[$parent406$i>>2] = $T$0$i$lcssa293; - $bk407$i = ((($add$ptr$i$161)) + 12|0); - HEAP32[$bk407$i>>2] = $add$ptr$i$161; - $fd408$i = ((($add$ptr$i$161)) + 8|0); - HEAP32[$fd408$i>>2] = $add$ptr$i$161; - break; - } - } - else if ((label|0) == 148) { - $fd416$i = ((($T$0$i$lcssa)) + 8|0); - $91 = HEAP32[$fd416$i>>2]|0; - $92 = HEAP32[(192)>>2]|0; - $cmp422$i = ($91>>>0)>=($92>>>0); - $not$cmp418$i = ($T$0$i$lcssa>>>0)>=($92>>>0); - $93 = $cmp422$i & $not$cmp418$i; - if ($93) { - $bk429$i = ((($91)) + 12|0); - HEAP32[$bk429$i>>2] = $add$ptr$i$161; - HEAP32[$fd416$i>>2] = $add$ptr$i$161; - $fd431$i = ((($add$ptr$i$161)) + 8|0); - HEAP32[$fd431$i>>2] = $91; - $bk432$i = ((($add$ptr$i$161)) + 12|0); - HEAP32[$bk432$i>>2] = $T$0$i$lcssa; - $parent433$i = ((($add$ptr$i$161)) + 24|0); - HEAP32[$parent433$i>>2] = 0; - break; - } else { - _abort(); - // unreachable; - } - } - } - } while(0); - $add$ptr441$i = ((($v$4$lcssa$i)) + 8|0); - $retval$0 = $add$ptr441$i; - return ($retval$0|0); - } else { - $nb$0 = $and145; - } - } - } - } - } - } while(0); - $94 = HEAP32[(184)>>2]|0; - $cmp156 = ($94>>>0)<($nb$0>>>0); - if (!($cmp156)) { - $sub160 = (($94) - ($nb$0))|0; - $95 = HEAP32[(196)>>2]|0; - $cmp162 = ($sub160>>>0)>(15); - if ($cmp162) { - $add$ptr166 = (($95) + ($nb$0)|0); - HEAP32[(196)>>2] = $add$ptr166; - HEAP32[(184)>>2] = $sub160; - $or167 = $sub160 | 1; - $head168 = ((($add$ptr166)) + 4|0); - HEAP32[$head168>>2] = $or167; - $add$ptr169 = (($add$ptr166) + ($sub160)|0); - HEAP32[$add$ptr169>>2] = $sub160; - $or172 = $nb$0 | 3; - $head173 = ((($95)) + 4|0); - HEAP32[$head173>>2] = $or172; - } else { - HEAP32[(184)>>2] = 0; - HEAP32[(196)>>2] = 0; - $or176 = $94 | 3; - $head177 = ((($95)) + 4|0); - HEAP32[$head177>>2] = $or176; - $add$ptr178 = (($95) + ($94)|0); - $head179 = ((($add$ptr178)) + 4|0); - $96 = HEAP32[$head179>>2]|0; - $or180 = $96 | 1; - HEAP32[$head179>>2] = $or180; - } - $add$ptr182 = ((($95)) + 8|0); - $retval$0 = $add$ptr182; - return ($retval$0|0); - } - $97 = HEAP32[(188)>>2]|0; - $cmp186 = ($97>>>0)>($nb$0>>>0); - if ($cmp186) { - $sub190 = (($97) - ($nb$0))|0; - HEAP32[(188)>>2] = $sub190; - $98 = HEAP32[(200)>>2]|0; - $add$ptr193 = (($98) + ($nb$0)|0); - HEAP32[(200)>>2] = $add$ptr193; - $or194 = $sub190 | 1; - $head195 = ((($add$ptr193)) + 4|0); - HEAP32[$head195>>2] = $or194; - $or197 = $nb$0 | 3; - $head198 = ((($98)) + 4|0); - HEAP32[$head198>>2] = $or197; - $add$ptr199 = ((($98)) + 8|0); - $retval$0 = $add$ptr199; - return ($retval$0|0); - } - $99 = HEAP32[162]|0; - $cmp$i$179 = ($99|0)==(0); - do { - if ($cmp$i$179) { - $call$i$i = (_sysconf(30)|0); - $sub$i$i = (($call$i$i) + -1)|0; - $and$i$i = $sub$i$i & $call$i$i; - $cmp1$i$i = ($and$i$i|0)==(0); - if ($cmp1$i$i) { - HEAP32[(656)>>2] = $call$i$i; - HEAP32[(652)>>2] = $call$i$i; - HEAP32[(660)>>2] = -1; - HEAP32[(664)>>2] = -1; - HEAP32[(668)>>2] = 0; - HEAP32[(620)>>2] = 0; - $call6$i$i = (_time((0|0))|0); - $xor$i$i = $call6$i$i & -16; - $and7$i$i = $xor$i$i ^ 1431655768; - HEAP32[162] = $and7$i$i; - break; - } else { - _abort(); - // unreachable; - } - } - } while(0); - $add$i$180 = (($nb$0) + 48)|0; - $100 = HEAP32[(656)>>2]|0; - $sub$i$181 = (($nb$0) + 47)|0; - $add9$i = (($100) + ($sub$i$181))|0; - $neg$i$182 = (0 - ($100))|0; - $and11$i = $add9$i & $neg$i$182; - $cmp12$i = ($and11$i>>>0)>($nb$0>>>0); - if (!($cmp12$i)) { - $retval$0 = 0; - return ($retval$0|0); - } - $101 = HEAP32[(616)>>2]|0; - $cmp15$i = ($101|0)==(0); - if (!($cmp15$i)) { - $102 = HEAP32[(608)>>2]|0; - $add17$i$183 = (($102) + ($and11$i))|0; - $cmp19$i = ($add17$i$183>>>0)<=($102>>>0); - $cmp21$i = ($add17$i$183>>>0)>($101>>>0); - $or$cond1$i$184 = $cmp19$i | $cmp21$i; - if ($or$cond1$i$184) { - $retval$0 = 0; - return ($retval$0|0); - } - } - $103 = HEAP32[(620)>>2]|0; - $and29$i = $103 & 4; - $tobool30$i = ($and29$i|0)==(0); - L257: do { - if ($tobool30$i) { - $104 = HEAP32[(200)>>2]|0; - $cmp32$i$185 = ($104|0)==(0|0); - L259: do { - if ($cmp32$i$185) { - label = 173; - } else { - $sp$0$i$i = (624); - while(1) { - $105 = HEAP32[$sp$0$i$i>>2]|0; - $cmp$i$9$i = ($105>>>0)>($104>>>0); - if (!($cmp$i$9$i)) { - $size$i$i = ((($sp$0$i$i)) + 4|0); - $106 = HEAP32[$size$i$i>>2]|0; - $add$ptr$i$i = (($105) + ($106)|0); - $cmp2$i$i = ($add$ptr$i$i>>>0)>($104>>>0); - if ($cmp2$i$i) { - $base$i$i$lcssa = $sp$0$i$i;$size$i$i$lcssa = $size$i$i; - break; - } - } - $next$i$i = ((($sp$0$i$i)) + 8|0); - $107 = HEAP32[$next$i$i>>2]|0; - $cmp3$i$i = ($107|0)==(0|0); - if ($cmp3$i$i) { - label = 173; - break L259; - } else { - $sp$0$i$i = $107; - } - } - $112 = HEAP32[(188)>>2]|0; - $add77$i = (($add9$i) - ($112))|0; - $and80$i = $add77$i & $neg$i$182; - $cmp81$i$191 = ($and80$i>>>0)<(2147483647); - if ($cmp81$i$191) { - $call83$i = (_sbrk(($and80$i|0))|0); - $113 = HEAP32[$base$i$i$lcssa>>2]|0; - $114 = HEAP32[$size$i$i$lcssa>>2]|0; - $add$ptr$i$193 = (($113) + ($114)|0); - $cmp85$i = ($call83$i|0)==($add$ptr$i$193|0); - if ($cmp85$i) { - $cmp89$i = ($call83$i|0)==((-1)|0); - if (!($cmp89$i)) { - $tbase$796$i = $call83$i;$tsize$795$i = $and80$i; - label = 193; - break L257; - } - } else { - $br$2$ph$i = $call83$i;$ssize$2$ph$i = $and80$i; - label = 183; - } - } - } - } while(0); - do { - if ((label|0) == 173) { - $call37$i = (_sbrk(0)|0); - $cmp38$i = ($call37$i|0)==((-1)|0); - if (!($cmp38$i)) { - $108 = $call37$i; - $109 = HEAP32[(652)>>2]|0; - $sub41$i = (($109) + -1)|0; - $and42$i = $sub41$i & $108; - $cmp43$i = ($and42$i|0)==(0); - if ($cmp43$i) { - $ssize$0$i = $and11$i; - } else { - $add46$i = (($sub41$i) + ($108))|0; - $neg48$i = (0 - ($109))|0; - $and49$i = $add46$i & $neg48$i; - $sub50$i = (($and11$i) - ($108))|0; - $add51$i = (($sub50$i) + ($and49$i))|0; - $ssize$0$i = $add51$i; - } - $110 = HEAP32[(608)>>2]|0; - $add54$i = (($110) + ($ssize$0$i))|0; - $cmp55$i$187 = ($ssize$0$i>>>0)>($nb$0>>>0); - $cmp57$i$188 = ($ssize$0$i>>>0)<(2147483647); - $or$cond$i$189 = $cmp55$i$187 & $cmp57$i$188; - if ($or$cond$i$189) { - $111 = HEAP32[(616)>>2]|0; - $cmp60$i = ($111|0)==(0); - if (!($cmp60$i)) { - $cmp63$i = ($add54$i>>>0)<=($110>>>0); - $cmp66$i$190 = ($add54$i>>>0)>($111>>>0); - $or$cond2$i = $cmp63$i | $cmp66$i$190; - if ($or$cond2$i) { - break; - } - } - $call68$i = (_sbrk(($ssize$0$i|0))|0); - $cmp69$i = ($call68$i|0)==($call37$i|0); - if ($cmp69$i) { - $tbase$796$i = $call37$i;$tsize$795$i = $ssize$0$i; - label = 193; - break L257; - } else { - $br$2$ph$i = $call68$i;$ssize$2$ph$i = $ssize$0$i; - label = 183; - } - } - } - } - } while(0); - L279: do { - if ((label|0) == 183) { - $sub112$i = (0 - ($ssize$2$ph$i))|0; - $cmp91$i = ($br$2$ph$i|0)!=((-1)|0); - $cmp93$i = ($ssize$2$ph$i>>>0)<(2147483647); - $or$cond5$i = $cmp93$i & $cmp91$i; - $cmp96$i = ($add$i$180>>>0)>($ssize$2$ph$i>>>0); - $or$cond3$i = $cmp96$i & $or$cond5$i; - do { - if ($or$cond3$i) { - $115 = HEAP32[(656)>>2]|0; - $sub99$i = (($sub$i$181) - ($ssize$2$ph$i))|0; - $add101$i = (($sub99$i) + ($115))|0; - $neg103$i = (0 - ($115))|0; - $and104$i = $add101$i & $neg103$i; - $cmp105$i = ($and104$i>>>0)<(2147483647); - if ($cmp105$i) { - $call107$i = (_sbrk(($and104$i|0))|0); - $cmp108$i = ($call107$i|0)==((-1)|0); - if ($cmp108$i) { - (_sbrk(($sub112$i|0))|0); - break L279; - } else { - $add110$i = (($and104$i) + ($ssize$2$ph$i))|0; - $ssize$5$i = $add110$i; - break; - } - } else { - $ssize$5$i = $ssize$2$ph$i; - } - } else { - $ssize$5$i = $ssize$2$ph$i; - } - } while(0); - $cmp118$i = ($br$2$ph$i|0)==((-1)|0); - if (!($cmp118$i)) { - $tbase$796$i = $br$2$ph$i;$tsize$795$i = $ssize$5$i; - label = 193; - break L257; - } - } - } while(0); - $116 = HEAP32[(620)>>2]|0; - $or$i$195 = $116 | 4; - HEAP32[(620)>>2] = $or$i$195; - label = 190; - } else { - label = 190; - } - } while(0); - if ((label|0) == 190) { - $cmp127$i = ($and11$i>>>0)<(2147483647); - if ($cmp127$i) { - $call131$i = (_sbrk(($and11$i|0))|0); - $call132$i = (_sbrk(0)|0); - $cmp133$i$196 = ($call131$i|0)!=((-1)|0); - $cmp135$i = ($call132$i|0)!=((-1)|0); - $or$cond4$i = $cmp133$i$196 & $cmp135$i; - $cmp137$i$197 = ($call131$i>>>0)<($call132$i>>>0); - $or$cond7$i = $cmp137$i$197 & $or$cond4$i; - if ($or$cond7$i) { - $sub$ptr$lhs$cast$i = $call132$i; - $sub$ptr$rhs$cast$i = $call131$i; - $sub$ptr$sub$i = (($sub$ptr$lhs$cast$i) - ($sub$ptr$rhs$cast$i))|0; - $add140$i = (($nb$0) + 40)|0; - $cmp141$not$i = ($sub$ptr$sub$i>>>0)>($add140$i>>>0); - if ($cmp141$not$i) { - $tbase$796$i = $call131$i;$tsize$795$i = $sub$ptr$sub$i; - label = 193; - } - } - } - } - if ((label|0) == 193) { - $117 = HEAP32[(608)>>2]|0; - $add150$i = (($117) + ($tsize$795$i))|0; - HEAP32[(608)>>2] = $add150$i; - $118 = HEAP32[(612)>>2]|0; - $cmp151$i = ($add150$i>>>0)>($118>>>0); - if ($cmp151$i) { - HEAP32[(612)>>2] = $add150$i; - } - $119 = HEAP32[(200)>>2]|0; - $cmp157$i = ($119|0)==(0|0); - do { - if ($cmp157$i) { - $120 = HEAP32[(192)>>2]|0; - $cmp159$i$199 = ($120|0)==(0|0); - $cmp162$i$200 = ($tbase$796$i>>>0)<($120>>>0); - $or$cond8$i = $cmp159$i$199 | $cmp162$i$200; - if ($or$cond8$i) { - HEAP32[(192)>>2] = $tbase$796$i; - } - HEAP32[(624)>>2] = $tbase$796$i; - HEAP32[(628)>>2] = $tsize$795$i; - HEAP32[(636)>>2] = 0; - $121 = HEAP32[162]|0; - HEAP32[(212)>>2] = $121; - HEAP32[(208)>>2] = -1; - $i$01$i$i = 0; - while(1) { - $shl$i$i = $i$01$i$i << 1; - $arrayidx$i$i = (216 + ($shl$i$i<<2)|0); - $122 = ((($arrayidx$i$i)) + 12|0); - HEAP32[$122>>2] = $arrayidx$i$i; - $123 = ((($arrayidx$i$i)) + 8|0); - HEAP32[$123>>2] = $arrayidx$i$i; - $inc$i$i = (($i$01$i$i) + 1)|0; - $exitcond$i$i = ($inc$i$i|0)==(32); - if ($exitcond$i$i) { - break; - } else { - $i$01$i$i = $inc$i$i; - } - } - $sub172$i = (($tsize$795$i) + -40)|0; - $add$ptr$i$11$i = ((($tbase$796$i)) + 8|0); - $124 = $add$ptr$i$11$i; - $and$i$12$i = $124 & 7; - $cmp$i$13$i = ($and$i$12$i|0)==(0); - $125 = (0 - ($124))|0; - $and3$i$i = $125 & 7; - $cond$i$i = $cmp$i$13$i ? 0 : $and3$i$i; - $add$ptr4$i$i = (($tbase$796$i) + ($cond$i$i)|0); - $sub5$i$i = (($sub172$i) - ($cond$i$i))|0; - HEAP32[(200)>>2] = $add$ptr4$i$i; - HEAP32[(188)>>2] = $sub5$i$i; - $or$i$i = $sub5$i$i | 1; - $head$i$i = ((($add$ptr4$i$i)) + 4|0); - HEAP32[$head$i$i>>2] = $or$i$i; - $add$ptr6$i$i = (($add$ptr4$i$i) + ($sub5$i$i)|0); - $head7$i$i = ((($add$ptr6$i$i)) + 4|0); - HEAP32[$head7$i$i>>2] = 40; - $126 = HEAP32[(664)>>2]|0; - HEAP32[(204)>>2] = $126; - } else { - $sp$0108$i = (624); - while(1) { - $127 = HEAP32[$sp$0108$i>>2]|0; - $size188$i = ((($sp$0108$i)) + 4|0); - $128 = HEAP32[$size188$i>>2]|0; - $add$ptr189$i = (($127) + ($128)|0); - $cmp190$i = ($tbase$796$i|0)==($add$ptr189$i|0); - if ($cmp190$i) { - $$lcssa = $127;$$lcssa290 = $128;$size188$i$lcssa = $size188$i;$sp$0108$i$lcssa = $sp$0108$i; - label = 203; - break; - } - $next$i = ((($sp$0108$i)) + 8|0); - $129 = HEAP32[$next$i>>2]|0; - $cmp186$i = ($129|0)==(0|0); - if ($cmp186$i) { - break; - } else { - $sp$0108$i = $129; - } - } - if ((label|0) == 203) { - $sflags193$i = ((($sp$0108$i$lcssa)) + 12|0); - $130 = HEAP32[$sflags193$i>>2]|0; - $and194$i$204 = $130 & 8; - $tobool195$i = ($and194$i$204|0)==(0); - if ($tobool195$i) { - $cmp203$i = ($119>>>0)>=($$lcssa>>>0); - $cmp209$i = ($119>>>0)<($tbase$796$i>>>0); - $or$cond98$i = $cmp209$i & $cmp203$i; - if ($or$cond98$i) { - $add212$i = (($$lcssa290) + ($tsize$795$i))|0; - HEAP32[$size188$i$lcssa>>2] = $add212$i; - $131 = HEAP32[(188)>>2]|0; - $add$ptr$i$21$i = ((($119)) + 8|0); - $132 = $add$ptr$i$21$i; - $and$i$22$i = $132 & 7; - $cmp$i$23$i = ($and$i$22$i|0)==(0); - $133 = (0 - ($132))|0; - $and3$i$24$i = $133 & 7; - $cond$i$25$i = $cmp$i$23$i ? 0 : $and3$i$24$i; - $add$ptr4$i$26$i = (($119) + ($cond$i$25$i)|0); - $add215$i = (($tsize$795$i) - ($cond$i$25$i))|0; - $sub5$i$27$i = (($add215$i) + ($131))|0; - HEAP32[(200)>>2] = $add$ptr4$i$26$i; - HEAP32[(188)>>2] = $sub5$i$27$i; - $or$i$28$i = $sub5$i$27$i | 1; - $head$i$29$i = ((($add$ptr4$i$26$i)) + 4|0); - HEAP32[$head$i$29$i>>2] = $or$i$28$i; - $add$ptr6$i$30$i = (($add$ptr4$i$26$i) + ($sub5$i$27$i)|0); - $head7$i$31$i = ((($add$ptr6$i$30$i)) + 4|0); - HEAP32[$head7$i$31$i>>2] = 40; - $134 = HEAP32[(664)>>2]|0; - HEAP32[(204)>>2] = $134; - break; - } - } - } - $135 = HEAP32[(192)>>2]|0; - $cmp218$i = ($tbase$796$i>>>0)<($135>>>0); - if ($cmp218$i) { - HEAP32[(192)>>2] = $tbase$796$i; - $150 = $tbase$796$i; - } else { - $150 = $135; - } - $add$ptr227$i = (($tbase$796$i) + ($tsize$795$i)|0); - $sp$1107$i = (624); - while(1) { - $136 = HEAP32[$sp$1107$i>>2]|0; - $cmp228$i = ($136|0)==($add$ptr227$i|0); - if ($cmp228$i) { - $base226$i$lcssa = $sp$1107$i;$sp$1107$i$lcssa = $sp$1107$i; - label = 211; - break; - } - $next231$i = ((($sp$1107$i)) + 8|0); - $137 = HEAP32[$next231$i>>2]|0; - $cmp224$i = ($137|0)==(0|0); - if ($cmp224$i) { - $sp$0$i$i$i = (624); - break; - } else { - $sp$1107$i = $137; - } - } - if ((label|0) == 211) { - $sflags235$i = ((($sp$1107$i$lcssa)) + 12|0); - $138 = HEAP32[$sflags235$i>>2]|0; - $and236$i = $138 & 8; - $tobool237$i = ($and236$i|0)==(0); - if ($tobool237$i) { - HEAP32[$base226$i$lcssa>>2] = $tbase$796$i; - $size245$i = ((($sp$1107$i$lcssa)) + 4|0); - $139 = HEAP32[$size245$i>>2]|0; - $add246$i = (($139) + ($tsize$795$i))|0; - HEAP32[$size245$i>>2] = $add246$i; - $add$ptr$i$32$i = ((($tbase$796$i)) + 8|0); - $140 = $add$ptr$i$32$i; - $and$i$33$i = $140 & 7; - $cmp$i$34$i = ($and$i$33$i|0)==(0); - $141 = (0 - ($140))|0; - $and3$i$35$i = $141 & 7; - $cond$i$36$i = $cmp$i$34$i ? 0 : $and3$i$35$i; - $add$ptr4$i$37$i = (($tbase$796$i) + ($cond$i$36$i)|0); - $add$ptr5$i$i = ((($add$ptr227$i)) + 8|0); - $142 = $add$ptr5$i$i; - $and6$i$38$i = $142 & 7; - $cmp7$i$i = ($and6$i$38$i|0)==(0); - $143 = (0 - ($142))|0; - $and13$i$i = $143 & 7; - $cond15$i$i = $cmp7$i$i ? 0 : $and13$i$i; - $add$ptr16$i$i = (($add$ptr227$i) + ($cond15$i$i)|0); - $sub$ptr$lhs$cast$i$39$i = $add$ptr16$i$i; - $sub$ptr$rhs$cast$i$40$i = $add$ptr4$i$37$i; - $sub$ptr$sub$i$41$i = (($sub$ptr$lhs$cast$i$39$i) - ($sub$ptr$rhs$cast$i$40$i))|0; - $add$ptr17$i$i = (($add$ptr4$i$37$i) + ($nb$0)|0); - $sub18$i$i = (($sub$ptr$sub$i$41$i) - ($nb$0))|0; - $or19$i$i = $nb$0 | 3; - $head$i$42$i = ((($add$ptr4$i$37$i)) + 4|0); - HEAP32[$head$i$42$i>>2] = $or19$i$i; - $cmp20$i$i = ($add$ptr16$i$i|0)==($119|0); - do { - if ($cmp20$i$i) { - $144 = HEAP32[(188)>>2]|0; - $add$i$i = (($144) + ($sub18$i$i))|0; - HEAP32[(188)>>2] = $add$i$i; - HEAP32[(200)>>2] = $add$ptr17$i$i; - $or22$i$i = $add$i$i | 1; - $head23$i$i = ((($add$ptr17$i$i)) + 4|0); - HEAP32[$head23$i$i>>2] = $or22$i$i; - } else { - $145 = HEAP32[(196)>>2]|0; - $cmp24$i$i = ($add$ptr16$i$i|0)==($145|0); - if ($cmp24$i$i) { - $146 = HEAP32[(184)>>2]|0; - $add26$i$i = (($146) + ($sub18$i$i))|0; - HEAP32[(184)>>2] = $add26$i$i; - HEAP32[(196)>>2] = $add$ptr17$i$i; - $or28$i$i = $add26$i$i | 1; - $head29$i$i = ((($add$ptr17$i$i)) + 4|0); - HEAP32[$head29$i$i>>2] = $or28$i$i; - $add$ptr30$i$i = (($add$ptr17$i$i) + ($add26$i$i)|0); - HEAP32[$add$ptr30$i$i>>2] = $add26$i$i; - break; - } - $head32$i$i = ((($add$ptr16$i$i)) + 4|0); - $147 = HEAP32[$head32$i$i>>2]|0; - $and33$i$i = $147 & 3; - $cmp34$i$i = ($and33$i$i|0)==(1); - if ($cmp34$i$i) { - $and37$i$i = $147 & -8; - $shr$i$45$i = $147 >>> 3; - $cmp38$i$i = ($147>>>0)<(256); - L331: do { - if ($cmp38$i$i) { - $fd$i$i = ((($add$ptr16$i$i)) + 8|0); - $148 = HEAP32[$fd$i$i>>2]|0; - $bk$i$46$i = ((($add$ptr16$i$i)) + 12|0); - $149 = HEAP32[$bk$i$46$i>>2]|0; - $shl$i$47$i = $shr$i$45$i << 1; - $arrayidx$i$48$i = (216 + ($shl$i$47$i<<2)|0); - $cmp41$i$i = ($148|0)==($arrayidx$i$48$i|0); - do { - if (!($cmp41$i$i)) { - $cmp42$i$i = ($148>>>0)<($150>>>0); - if ($cmp42$i$i) { - _abort(); - // unreachable; - } - $bk43$i$i = ((($148)) + 12|0); - $151 = HEAP32[$bk43$i$i>>2]|0; - $cmp44$i$i = ($151|0)==($add$ptr16$i$i|0); - if ($cmp44$i$i) { - break; - } - _abort(); - // unreachable; - } - } while(0); - $cmp46$i$49$i = ($149|0)==($148|0); - if ($cmp46$i$49$i) { - $shl48$i$i = 1 << $shr$i$45$i; - $neg$i$i = $shl48$i$i ^ -1; - $152 = HEAP32[44]|0; - $and49$i$i = $152 & $neg$i$i; - HEAP32[44] = $and49$i$i; - break; - } - $cmp54$i$i = ($149|0)==($arrayidx$i$48$i|0); - do { - if ($cmp54$i$i) { - $$pre5$i$i = ((($149)) + 8|0); - $fd68$pre$phi$i$iZ2D = $$pre5$i$i; - } else { - $cmp57$i$i = ($149>>>0)<($150>>>0); - if ($cmp57$i$i) { - _abort(); - // unreachable; - } - $fd59$i$i = ((($149)) + 8|0); - $153 = HEAP32[$fd59$i$i>>2]|0; - $cmp60$i$i = ($153|0)==($add$ptr16$i$i|0); - if ($cmp60$i$i) { - $fd68$pre$phi$i$iZ2D = $fd59$i$i; - break; - } - _abort(); - // unreachable; - } - } while(0); - $bk67$i$i = ((($148)) + 12|0); - HEAP32[$bk67$i$i>>2] = $149; - HEAP32[$fd68$pre$phi$i$iZ2D>>2] = $148; - } else { - $parent$i$51$i = ((($add$ptr16$i$i)) + 24|0); - $154 = HEAP32[$parent$i$51$i>>2]|0; - $bk74$i$i = ((($add$ptr16$i$i)) + 12|0); - $155 = HEAP32[$bk74$i$i>>2]|0; - $cmp75$i$i = ($155|0)==($add$ptr16$i$i|0); - do { - if ($cmp75$i$i) { - $child$i$i = ((($add$ptr16$i$i)) + 16|0); - $arrayidx96$i$i = ((($child$i$i)) + 4|0); - $159 = HEAP32[$arrayidx96$i$i>>2]|0; - $cmp97$i$i = ($159|0)==(0|0); - if ($cmp97$i$i) { - $160 = HEAP32[$child$i$i>>2]|0; - $cmp100$i$i = ($160|0)==(0|0); - if ($cmp100$i$i) { - $R$3$i$i = 0; - break; - } else { - $R$1$i$i = $160;$RP$1$i$i = $child$i$i; - } - } else { - $R$1$i$i = $159;$RP$1$i$i = $arrayidx96$i$i; - } - while(1) { - $arrayidx103$i$i = ((($R$1$i$i)) + 20|0); - $161 = HEAP32[$arrayidx103$i$i>>2]|0; - $cmp104$i$i = ($161|0)==(0|0); - if (!($cmp104$i$i)) { - $R$1$i$i = $161;$RP$1$i$i = $arrayidx103$i$i; - continue; - } - $arrayidx107$i$i = ((($R$1$i$i)) + 16|0); - $162 = HEAP32[$arrayidx107$i$i>>2]|0; - $cmp108$i$i = ($162|0)==(0|0); - if ($cmp108$i$i) { - $R$1$i$i$lcssa = $R$1$i$i;$RP$1$i$i$lcssa = $RP$1$i$i; - break; - } else { - $R$1$i$i = $162;$RP$1$i$i = $arrayidx107$i$i; - } - } - $cmp112$i$i = ($RP$1$i$i$lcssa>>>0)<($150>>>0); - if ($cmp112$i$i) { - _abort(); - // unreachable; - } else { - HEAP32[$RP$1$i$i$lcssa>>2] = 0; - $R$3$i$i = $R$1$i$i$lcssa; - break; - } - } else { - $fd78$i$i = ((($add$ptr16$i$i)) + 8|0); - $156 = HEAP32[$fd78$i$i>>2]|0; - $cmp81$i$i = ($156>>>0)<($150>>>0); - if ($cmp81$i$i) { - _abort(); - // unreachable; - } - $bk82$i$i = ((($156)) + 12|0); - $157 = HEAP32[$bk82$i$i>>2]|0; - $cmp83$i$i = ($157|0)==($add$ptr16$i$i|0); - if (!($cmp83$i$i)) { - _abort(); - // unreachable; - } - $fd85$i$i = ((($155)) + 8|0); - $158 = HEAP32[$fd85$i$i>>2]|0; - $cmp86$i$i = ($158|0)==($add$ptr16$i$i|0); - if ($cmp86$i$i) { - HEAP32[$bk82$i$i>>2] = $155; - HEAP32[$fd85$i$i>>2] = $156; - $R$3$i$i = $155; - break; - } else { - _abort(); - // unreachable; - } - } - } while(0); - $cmp120$i$53$i = ($154|0)==(0|0); - if ($cmp120$i$53$i) { - break; - } - $index$i$54$i = ((($add$ptr16$i$i)) + 28|0); - $163 = HEAP32[$index$i$54$i>>2]|0; - $arrayidx123$i$i = (480 + ($163<<2)|0); - $164 = HEAP32[$arrayidx123$i$i>>2]|0; - $cmp124$i$i = ($add$ptr16$i$i|0)==($164|0); - do { - if ($cmp124$i$i) { - HEAP32[$arrayidx123$i$i>>2] = $R$3$i$i; - $cond2$i$i = ($R$3$i$i|0)==(0|0); - if (!($cond2$i$i)) { - break; - } - $shl131$i$i = 1 << $163; - $neg132$i$i = $shl131$i$i ^ -1; - $165 = HEAP32[(180)>>2]|0; - $and133$i$i = $165 & $neg132$i$i; - HEAP32[(180)>>2] = $and133$i$i; - break L331; - } else { - $166 = HEAP32[(192)>>2]|0; - $cmp137$i$i = ($154>>>0)<($166>>>0); - if ($cmp137$i$i) { - _abort(); - // unreachable; - } - $arrayidx143$i$i = ((($154)) + 16|0); - $167 = HEAP32[$arrayidx143$i$i>>2]|0; - $cmp144$i$i = ($167|0)==($add$ptr16$i$i|0); - if ($cmp144$i$i) { - HEAP32[$arrayidx143$i$i>>2] = $R$3$i$i; - } else { - $arrayidx151$i$i = ((($154)) + 20|0); - HEAP32[$arrayidx151$i$i>>2] = $R$3$i$i; - } - $cmp156$i$i = ($R$3$i$i|0)==(0|0); - if ($cmp156$i$i) { - break L331; - } - } - } while(0); - $168 = HEAP32[(192)>>2]|0; - $cmp160$i$i = ($R$3$i$i>>>0)<($168>>>0); - if ($cmp160$i$i) { - _abort(); - // unreachable; - } - $parent165$i$i = ((($R$3$i$i)) + 24|0); - HEAP32[$parent165$i$i>>2] = $154; - $child166$i$i = ((($add$ptr16$i$i)) + 16|0); - $169 = HEAP32[$child166$i$i>>2]|0; - $cmp168$i$i = ($169|0)==(0|0); - do { - if (!($cmp168$i$i)) { - $cmp172$i$i = ($169>>>0)<($168>>>0); - if ($cmp172$i$i) { - _abort(); - // unreachable; - } else { - $arrayidx178$i$i = ((($R$3$i$i)) + 16|0); - HEAP32[$arrayidx178$i$i>>2] = $169; - $parent179$i$i = ((($169)) + 24|0); - HEAP32[$parent179$i$i>>2] = $R$3$i$i; - break; - } - } - } while(0); - $arrayidx184$i$i = ((($child166$i$i)) + 4|0); - $170 = HEAP32[$arrayidx184$i$i>>2]|0; - $cmp185$i$i = ($170|0)==(0|0); - if ($cmp185$i$i) { - break; - } - $171 = HEAP32[(192)>>2]|0; - $cmp189$i$i = ($170>>>0)<($171>>>0); - if ($cmp189$i$i) { - _abort(); - // unreachable; - } else { - $arrayidx195$i$i = ((($R$3$i$i)) + 20|0); - HEAP32[$arrayidx195$i$i>>2] = $170; - $parent196$i$i = ((($170)) + 24|0); - HEAP32[$parent196$i$i>>2] = $R$3$i$i; - break; - } - } - } while(0); - $add$ptr205$i$i = (($add$ptr16$i$i) + ($and37$i$i)|0); - $add206$i$i = (($and37$i$i) + ($sub18$i$i))|0; - $oldfirst$0$i$i = $add$ptr205$i$i;$qsize$0$i$i = $add206$i$i; - } else { - $oldfirst$0$i$i = $add$ptr16$i$i;$qsize$0$i$i = $sub18$i$i; - } - $head208$i$i = ((($oldfirst$0$i$i)) + 4|0); - $172 = HEAP32[$head208$i$i>>2]|0; - $and209$i$i = $172 & -2; - HEAP32[$head208$i$i>>2] = $and209$i$i; - $or210$i$i = $qsize$0$i$i | 1; - $head211$i$i = ((($add$ptr17$i$i)) + 4|0); - HEAP32[$head211$i$i>>2] = $or210$i$i; - $add$ptr212$i$i = (($add$ptr17$i$i) + ($qsize$0$i$i)|0); - HEAP32[$add$ptr212$i$i>>2] = $qsize$0$i$i; - $shr214$i$i = $qsize$0$i$i >>> 3; - $cmp215$i$i = ($qsize$0$i$i>>>0)<(256); - if ($cmp215$i$i) { - $shl221$i$i = $shr214$i$i << 1; - $arrayidx223$i$i = (216 + ($shl221$i$i<<2)|0); - $173 = HEAP32[44]|0; - $shl226$i$i = 1 << $shr214$i$i; - $and227$i$i = $173 & $shl226$i$i; - $tobool228$i$i = ($and227$i$i|0)==(0); - do { - if ($tobool228$i$i) { - $or232$i$i = $173 | $shl226$i$i; - HEAP32[44] = $or232$i$i; - $$pre$i$56$i = ((($arrayidx223$i$i)) + 8|0); - $$pre$phi$i$57$iZ2D = $$pre$i$56$i;$F224$0$i$i = $arrayidx223$i$i; - } else { - $174 = ((($arrayidx223$i$i)) + 8|0); - $175 = HEAP32[$174>>2]|0; - $176 = HEAP32[(192)>>2]|0; - $cmp236$i$i = ($175>>>0)<($176>>>0); - if (!($cmp236$i$i)) { - $$pre$phi$i$57$iZ2D = $174;$F224$0$i$i = $175; - break; - } - _abort(); - // unreachable; - } - } while(0); - HEAP32[$$pre$phi$i$57$iZ2D>>2] = $add$ptr17$i$i; - $bk246$i$i = ((($F224$0$i$i)) + 12|0); - HEAP32[$bk246$i$i>>2] = $add$ptr17$i$i; - $fd247$i$i = ((($add$ptr17$i$i)) + 8|0); - HEAP32[$fd247$i$i>>2] = $F224$0$i$i; - $bk248$i$i = ((($add$ptr17$i$i)) + 12|0); - HEAP32[$bk248$i$i>>2] = $arrayidx223$i$i; - break; - } - $shr253$i$i = $qsize$0$i$i >>> 8; - $cmp254$i$i = ($shr253$i$i|0)==(0); - do { - if ($cmp254$i$i) { - $I252$0$i$i = 0; - } else { - $cmp258$i$i = ($qsize$0$i$i>>>0)>(16777215); - if ($cmp258$i$i) { - $I252$0$i$i = 31; - break; - } - $sub262$i$i = (($shr253$i$i) + 1048320)|0; - $shr263$i$i = $sub262$i$i >>> 16; - $and264$i$i = $shr263$i$i & 8; - $shl265$i$i = $shr253$i$i << $and264$i$i; - $sub266$i$i = (($shl265$i$i) + 520192)|0; - $shr267$i$i = $sub266$i$i >>> 16; - $and268$i$i = $shr267$i$i & 4; - $add269$i$i = $and268$i$i | $and264$i$i; - $shl270$i$i = $shl265$i$i << $and268$i$i; - $sub271$i$i = (($shl270$i$i) + 245760)|0; - $shr272$i$i = $sub271$i$i >>> 16; - $and273$i$i = $shr272$i$i & 2; - $add274$i$i = $add269$i$i | $and273$i$i; - $sub275$i$i = (14 - ($add274$i$i))|0; - $shl276$i$i = $shl270$i$i << $and273$i$i; - $shr277$i$i = $shl276$i$i >>> 15; - $add278$i$i = (($sub275$i$i) + ($shr277$i$i))|0; - $shl279$i$i = $add278$i$i << 1; - $add280$i$i = (($add278$i$i) + 7)|0; - $shr281$i$i = $qsize$0$i$i >>> $add280$i$i; - $and282$i$i = $shr281$i$i & 1; - $add283$i$i = $and282$i$i | $shl279$i$i; - $I252$0$i$i = $add283$i$i; - } - } while(0); - $arrayidx287$i$i = (480 + ($I252$0$i$i<<2)|0); - $index288$i$i = ((($add$ptr17$i$i)) + 28|0); - HEAP32[$index288$i$i>>2] = $I252$0$i$i; - $child289$i$i = ((($add$ptr17$i$i)) + 16|0); - $arrayidx290$i$i = ((($child289$i$i)) + 4|0); - HEAP32[$arrayidx290$i$i>>2] = 0; - HEAP32[$child289$i$i>>2] = 0; - $177 = HEAP32[(180)>>2]|0; - $shl294$i$i = 1 << $I252$0$i$i; - $and295$i$i = $177 & $shl294$i$i; - $tobool296$i$i = ($and295$i$i|0)==(0); - if ($tobool296$i$i) { - $or300$i$i = $177 | $shl294$i$i; - HEAP32[(180)>>2] = $or300$i$i; - HEAP32[$arrayidx287$i$i>>2] = $add$ptr17$i$i; - $parent301$i$i = ((($add$ptr17$i$i)) + 24|0); - HEAP32[$parent301$i$i>>2] = $arrayidx287$i$i; - $bk302$i$i = ((($add$ptr17$i$i)) + 12|0); - HEAP32[$bk302$i$i>>2] = $add$ptr17$i$i; - $fd303$i$i = ((($add$ptr17$i$i)) + 8|0); - HEAP32[$fd303$i$i>>2] = $add$ptr17$i$i; - break; - } - $178 = HEAP32[$arrayidx287$i$i>>2]|0; - $cmp306$i$i = ($I252$0$i$i|0)==(31); - $shr310$i$i = $I252$0$i$i >>> 1; - $sub313$i$i = (25 - ($shr310$i$i))|0; - $cond315$i$i = $cmp306$i$i ? 0 : $sub313$i$i; - $shl316$i$i = $qsize$0$i$i << $cond315$i$i; - $K305$0$i$i = $shl316$i$i;$T$0$i$58$i = $178; - while(1) { - $head317$i$i = ((($T$0$i$58$i)) + 4|0); - $179 = HEAP32[$head317$i$i>>2]|0; - $and318$i$i = $179 & -8; - $cmp319$i$i = ($and318$i$i|0)==($qsize$0$i$i|0); - if ($cmp319$i$i) { - $T$0$i$58$i$lcssa = $T$0$i$58$i; - label = 281; - break; - } - $shr322$i$i = $K305$0$i$i >>> 31; - $arrayidx325$i$i = (((($T$0$i$58$i)) + 16|0) + ($shr322$i$i<<2)|0); - $shl326$i$i = $K305$0$i$i << 1; - $180 = HEAP32[$arrayidx325$i$i>>2]|0; - $cmp327$i$i = ($180|0)==(0|0); - if ($cmp327$i$i) { - $T$0$i$58$i$lcssa283 = $T$0$i$58$i;$arrayidx325$i$i$lcssa = $arrayidx325$i$i; - label = 278; - break; - } else { - $K305$0$i$i = $shl326$i$i;$T$0$i$58$i = $180; - } - } - if ((label|0) == 278) { - $181 = HEAP32[(192)>>2]|0; - $cmp332$i$i = ($arrayidx325$i$i$lcssa>>>0)<($181>>>0); - if ($cmp332$i$i) { - _abort(); - // unreachable; - } else { - HEAP32[$arrayidx325$i$i$lcssa>>2] = $add$ptr17$i$i; - $parent337$i$i = ((($add$ptr17$i$i)) + 24|0); - HEAP32[$parent337$i$i>>2] = $T$0$i$58$i$lcssa283; - $bk338$i$i = ((($add$ptr17$i$i)) + 12|0); - HEAP32[$bk338$i$i>>2] = $add$ptr17$i$i; - $fd339$i$i = ((($add$ptr17$i$i)) + 8|0); - HEAP32[$fd339$i$i>>2] = $add$ptr17$i$i; - break; - } - } - else if ((label|0) == 281) { - $fd344$i$i = ((($T$0$i$58$i$lcssa)) + 8|0); - $182 = HEAP32[$fd344$i$i>>2]|0; - $183 = HEAP32[(192)>>2]|0; - $cmp350$i$i = ($182>>>0)>=($183>>>0); - $not$cmp346$i$i = ($T$0$i$58$i$lcssa>>>0)>=($183>>>0); - $184 = $cmp350$i$i & $not$cmp346$i$i; - if ($184) { - $bk357$i$i = ((($182)) + 12|0); - HEAP32[$bk357$i$i>>2] = $add$ptr17$i$i; - HEAP32[$fd344$i$i>>2] = $add$ptr17$i$i; - $fd359$i$i = ((($add$ptr17$i$i)) + 8|0); - HEAP32[$fd359$i$i>>2] = $182; - $bk360$i$i = ((($add$ptr17$i$i)) + 12|0); - HEAP32[$bk360$i$i>>2] = $T$0$i$58$i$lcssa; - $parent361$i$i = ((($add$ptr17$i$i)) + 24|0); - HEAP32[$parent361$i$i>>2] = 0; - break; - } else { - _abort(); - // unreachable; - } - } - } - } while(0); - $add$ptr369$i$i = ((($add$ptr4$i$37$i)) + 8|0); - $retval$0 = $add$ptr369$i$i; - return ($retval$0|0); - } else { - $sp$0$i$i$i = (624); - } - } - while(1) { - $185 = HEAP32[$sp$0$i$i$i>>2]|0; - $cmp$i$i$i = ($185>>>0)>($119>>>0); - if (!($cmp$i$i$i)) { - $size$i$i$i = ((($sp$0$i$i$i)) + 4|0); - $186 = HEAP32[$size$i$i$i>>2]|0; - $add$ptr$i$i$i = (($185) + ($186)|0); - $cmp2$i$i$i = ($add$ptr$i$i$i>>>0)>($119>>>0); - if ($cmp2$i$i$i) { - $add$ptr$i$i$i$lcssa = $add$ptr$i$i$i; - break; - } - } - $next$i$i$i = ((($sp$0$i$i$i)) + 8|0); - $187 = HEAP32[$next$i$i$i>>2]|0; - $sp$0$i$i$i = $187; - } - $add$ptr2$i$i = ((($add$ptr$i$i$i$lcssa)) + -47|0); - $add$ptr3$i$i = ((($add$ptr2$i$i)) + 8|0); - $188 = $add$ptr3$i$i; - $and$i$14$i = $188 & 7; - $cmp$i$15$i = ($and$i$14$i|0)==(0); - $189 = (0 - ($188))|0; - $and6$i$i = $189 & 7; - $cond$i$16$i = $cmp$i$15$i ? 0 : $and6$i$i; - $add$ptr7$i$i = (($add$ptr2$i$i) + ($cond$i$16$i)|0); - $add$ptr8$i122$i = ((($119)) + 16|0); - $cmp9$i$i = ($add$ptr7$i$i>>>0)<($add$ptr8$i122$i>>>0); - $cond13$i$i = $cmp9$i$i ? $119 : $add$ptr7$i$i; - $add$ptr14$i$i = ((($cond13$i$i)) + 8|0); - $add$ptr15$i$i = ((($cond13$i$i)) + 24|0); - $sub16$i$i = (($tsize$795$i) + -40)|0; - $add$ptr$i$1$i$i = ((($tbase$796$i)) + 8|0); - $190 = $add$ptr$i$1$i$i; - $and$i$i$i = $190 & 7; - $cmp$i$2$i$i = ($and$i$i$i|0)==(0); - $191 = (0 - ($190))|0; - $and3$i$i$i = $191 & 7; - $cond$i$i$i = $cmp$i$2$i$i ? 0 : $and3$i$i$i; - $add$ptr4$i$i$i = (($tbase$796$i) + ($cond$i$i$i)|0); - $sub5$i$i$i = (($sub16$i$i) - ($cond$i$i$i))|0; - HEAP32[(200)>>2] = $add$ptr4$i$i$i; - HEAP32[(188)>>2] = $sub5$i$i$i; - $or$i$i$i = $sub5$i$i$i | 1; - $head$i$i$i = ((($add$ptr4$i$i$i)) + 4|0); - HEAP32[$head$i$i$i>>2] = $or$i$i$i; - $add$ptr6$i$i$i = (($add$ptr4$i$i$i) + ($sub5$i$i$i)|0); - $head7$i$i$i = ((($add$ptr6$i$i$i)) + 4|0); - HEAP32[$head7$i$i$i>>2] = 40; - $192 = HEAP32[(664)>>2]|0; - HEAP32[(204)>>2] = $192; - $head$i$17$i = ((($cond13$i$i)) + 4|0); - HEAP32[$head$i$17$i>>2] = 27; - ;HEAP32[$add$ptr14$i$i>>2]=HEAP32[(624)>>2]|0;HEAP32[$add$ptr14$i$i+4>>2]=HEAP32[(624)+4>>2]|0;HEAP32[$add$ptr14$i$i+8>>2]=HEAP32[(624)+8>>2]|0;HEAP32[$add$ptr14$i$i+12>>2]=HEAP32[(624)+12>>2]|0; - HEAP32[(624)>>2] = $tbase$796$i; - HEAP32[(628)>>2] = $tsize$795$i; - HEAP32[(636)>>2] = 0; - HEAP32[(632)>>2] = $add$ptr14$i$i; - $p$0$i$i = $add$ptr15$i$i; - while(1) { - $add$ptr24$i$i = ((($p$0$i$i)) + 4|0); - HEAP32[$add$ptr24$i$i>>2] = 7; - $193 = ((($add$ptr24$i$i)) + 4|0); - $cmp27$i$i = ($193>>>0)<($add$ptr$i$i$i$lcssa>>>0); - if ($cmp27$i$i) { - $p$0$i$i = $add$ptr24$i$i; - } else { - break; - } - } - $cmp28$i$i = ($cond13$i$i|0)==($119|0); - if (!($cmp28$i$i)) { - $sub$ptr$lhs$cast$i$i = $cond13$i$i; - $sub$ptr$rhs$cast$i$i = $119; - $sub$ptr$sub$i$i = (($sub$ptr$lhs$cast$i$i) - ($sub$ptr$rhs$cast$i$i))|0; - $194 = HEAP32[$head$i$17$i>>2]|0; - $and32$i$i = $194 & -2; - HEAP32[$head$i$17$i>>2] = $and32$i$i; - $or33$i$i = $sub$ptr$sub$i$i | 1; - $head34$i$i = ((($119)) + 4|0); - HEAP32[$head34$i$i>>2] = $or33$i$i; - HEAP32[$cond13$i$i>>2] = $sub$ptr$sub$i$i; - $shr$i$i = $sub$ptr$sub$i$i >>> 3; - $cmp36$i$i = ($sub$ptr$sub$i$i>>>0)<(256); - if ($cmp36$i$i) { - $shl$i$19$i = $shr$i$i << 1; - $arrayidx$i$20$i = (216 + ($shl$i$19$i<<2)|0); - $195 = HEAP32[44]|0; - $shl39$i$i = 1 << $shr$i$i; - $and40$i$i = $195 & $shl39$i$i; - $tobool$i$i = ($and40$i$i|0)==(0); - if ($tobool$i$i) { - $or44$i$i = $195 | $shl39$i$i; - HEAP32[44] = $or44$i$i; - $$pre$i$i = ((($arrayidx$i$20$i)) + 8|0); - $$pre$phi$i$iZ2D = $$pre$i$i;$F$0$i$i = $arrayidx$i$20$i; - } else { - $196 = ((($arrayidx$i$20$i)) + 8|0); - $197 = HEAP32[$196>>2]|0; - $198 = HEAP32[(192)>>2]|0; - $cmp46$i$i = ($197>>>0)<($198>>>0); - if ($cmp46$i$i) { - _abort(); - // unreachable; - } else { - $$pre$phi$i$iZ2D = $196;$F$0$i$i = $197; - } - } - HEAP32[$$pre$phi$i$iZ2D>>2] = $119; - $bk$i$i = ((($F$0$i$i)) + 12|0); - HEAP32[$bk$i$i>>2] = $119; - $fd54$i$i = ((($119)) + 8|0); - HEAP32[$fd54$i$i>>2] = $F$0$i$i; - $bk55$i$i = ((($119)) + 12|0); - HEAP32[$bk55$i$i>>2] = $arrayidx$i$20$i; - break; - } - $shr58$i$i = $sub$ptr$sub$i$i >>> 8; - $cmp59$i$i = ($shr58$i$i|0)==(0); - if ($cmp59$i$i) { - $I57$0$i$i = 0; - } else { - $cmp63$i$i = ($sub$ptr$sub$i$i>>>0)>(16777215); - if ($cmp63$i$i) { - $I57$0$i$i = 31; - } else { - $sub67$i$i = (($shr58$i$i) + 1048320)|0; - $shr68$i$i = $sub67$i$i >>> 16; - $and69$i$i = $shr68$i$i & 8; - $shl70$i$i = $shr58$i$i << $and69$i$i; - $sub71$i$i = (($shl70$i$i) + 520192)|0; - $shr72$i$i = $sub71$i$i >>> 16; - $and73$i$i = $shr72$i$i & 4; - $add74$i$i = $and73$i$i | $and69$i$i; - $shl75$i$i = $shl70$i$i << $and73$i$i; - $sub76$i$i = (($shl75$i$i) + 245760)|0; - $shr77$i$i = $sub76$i$i >>> 16; - $and78$i$i = $shr77$i$i & 2; - $add79$i$i = $add74$i$i | $and78$i$i; - $sub80$i$i = (14 - ($add79$i$i))|0; - $shl81$i$i = $shl75$i$i << $and78$i$i; - $shr82$i$i = $shl81$i$i >>> 15; - $add83$i$i = (($sub80$i$i) + ($shr82$i$i))|0; - $shl84$i$i = $add83$i$i << 1; - $add85$i$i = (($add83$i$i) + 7)|0; - $shr86$i$i = $sub$ptr$sub$i$i >>> $add85$i$i; - $and87$i$i = $shr86$i$i & 1; - $add88$i$i = $and87$i$i | $shl84$i$i; - $I57$0$i$i = $add88$i$i; - } - } - $arrayidx91$i$i = (480 + ($I57$0$i$i<<2)|0); - $index$i$i = ((($119)) + 28|0); - HEAP32[$index$i$i>>2] = $I57$0$i$i; - $arrayidx92$i$i = ((($119)) + 20|0); - HEAP32[$arrayidx92$i$i>>2] = 0; - HEAP32[$add$ptr8$i122$i>>2] = 0; - $199 = HEAP32[(180)>>2]|0; - $shl95$i$i = 1 << $I57$0$i$i; - $and96$i$i = $199 & $shl95$i$i; - $tobool97$i$i = ($and96$i$i|0)==(0); - if ($tobool97$i$i) { - $or101$i$i = $199 | $shl95$i$i; - HEAP32[(180)>>2] = $or101$i$i; - HEAP32[$arrayidx91$i$i>>2] = $119; - $parent$i$i = ((($119)) + 24|0); - HEAP32[$parent$i$i>>2] = $arrayidx91$i$i; - $bk102$i$i = ((($119)) + 12|0); - HEAP32[$bk102$i$i>>2] = $119; - $fd103$i$i = ((($119)) + 8|0); - HEAP32[$fd103$i$i>>2] = $119; - break; - } - $200 = HEAP32[$arrayidx91$i$i>>2]|0; - $cmp106$i$i = ($I57$0$i$i|0)==(31); - $shr110$i$i = $I57$0$i$i >>> 1; - $sub113$i$i = (25 - ($shr110$i$i))|0; - $cond115$i$i = $cmp106$i$i ? 0 : $sub113$i$i; - $shl116$i$i = $sub$ptr$sub$i$i << $cond115$i$i; - $K105$0$i$i = $shl116$i$i;$T$0$i$i = $200; - while(1) { - $head118$i$i = ((($T$0$i$i)) + 4|0); - $201 = HEAP32[$head118$i$i>>2]|0; - $and119$i$i = $201 & -8; - $cmp120$i$i = ($and119$i$i|0)==($sub$ptr$sub$i$i|0); - if ($cmp120$i$i) { - $T$0$i$i$lcssa = $T$0$i$i; - label = 307; - break; - } - $shr123$i$i = $K105$0$i$i >>> 31; - $arrayidx126$i$i = (((($T$0$i$i)) + 16|0) + ($shr123$i$i<<2)|0); - $shl127$i$i = $K105$0$i$i << 1; - $202 = HEAP32[$arrayidx126$i$i>>2]|0; - $cmp128$i$i = ($202|0)==(0|0); - if ($cmp128$i$i) { - $T$0$i$i$lcssa284 = $T$0$i$i;$arrayidx126$i$i$lcssa = $arrayidx126$i$i; - label = 304; - break; - } else { - $K105$0$i$i = $shl127$i$i;$T$0$i$i = $202; - } - } - if ((label|0) == 304) { - $203 = HEAP32[(192)>>2]|0; - $cmp133$i$i = ($arrayidx126$i$i$lcssa>>>0)<($203>>>0); - if ($cmp133$i$i) { - _abort(); - // unreachable; - } else { - HEAP32[$arrayidx126$i$i$lcssa>>2] = $119; - $parent138$i$i = ((($119)) + 24|0); - HEAP32[$parent138$i$i>>2] = $T$0$i$i$lcssa284; - $bk139$i$i = ((($119)) + 12|0); - HEAP32[$bk139$i$i>>2] = $119; - $fd140$i$i = ((($119)) + 8|0); - HEAP32[$fd140$i$i>>2] = $119; - break; - } - } - else if ((label|0) == 307) { - $fd148$i$i = ((($T$0$i$i$lcssa)) + 8|0); - $204 = HEAP32[$fd148$i$i>>2]|0; - $205 = HEAP32[(192)>>2]|0; - $cmp153$i$i = ($204>>>0)>=($205>>>0); - $not$cmp150$i$i = ($T$0$i$i$lcssa>>>0)>=($205>>>0); - $206 = $cmp153$i$i & $not$cmp150$i$i; - if ($206) { - $bk158$i$i = ((($204)) + 12|0); - HEAP32[$bk158$i$i>>2] = $119; - HEAP32[$fd148$i$i>>2] = $119; - $fd160$i$i = ((($119)) + 8|0); - HEAP32[$fd160$i$i>>2] = $204; - $bk161$i$i = ((($119)) + 12|0); - HEAP32[$bk161$i$i>>2] = $T$0$i$i$lcssa; - $parent162$i$i = ((($119)) + 24|0); - HEAP32[$parent162$i$i>>2] = 0; - break; - } else { - _abort(); - // unreachable; - } - } - } - } - } while(0); - $207 = HEAP32[(188)>>2]|0; - $cmp257$i = ($207>>>0)>($nb$0>>>0); - if ($cmp257$i) { - $sub260$i = (($207) - ($nb$0))|0; - HEAP32[(188)>>2] = $sub260$i; - $208 = HEAP32[(200)>>2]|0; - $add$ptr262$i = (($208) + ($nb$0)|0); - HEAP32[(200)>>2] = $add$ptr262$i; - $or264$i = $sub260$i | 1; - $head265$i = ((($add$ptr262$i)) + 4|0); - HEAP32[$head265$i>>2] = $or264$i; - $or267$i = $nb$0 | 3; - $head268$i = ((($208)) + 4|0); - HEAP32[$head268$i>>2] = $or267$i; - $add$ptr269$i = ((($208)) + 8|0); - $retval$0 = $add$ptr269$i; - return ($retval$0|0); - } - } - $call275$i = (___errno_location()|0); - HEAP32[$call275$i>>2] = 12; - $retval$0 = 0; - return ($retval$0|0); -} -function _free($mem) { - $mem = $mem|0; - var $$pre = 0, $$pre$phiZ2D = 0, $$pre312 = 0, $$pre313 = 0, $0 = 0, $1 = 0, $10 = 0, $11 = 0, $12 = 0, $13 = 0, $14 = 0, $15 = 0, $16 = 0, $17 = 0, $18 = 0, $19 = 0, $2 = 0, $20 = 0, $21 = 0, $22 = 0; - var $23 = 0, $24 = 0, $25 = 0, $26 = 0, $27 = 0, $28 = 0, $29 = 0, $3 = 0, $30 = 0, $31 = 0, $32 = 0, $33 = 0, $34 = 0, $35 = 0, $36 = 0, $37 = 0, $38 = 0, $39 = 0, $4 = 0, $40 = 0; - var $41 = 0, $42 = 0, $43 = 0, $44 = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, $49 = 0, $5 = 0, $50 = 0, $51 = 0, $52 = 0, $53 = 0, $54 = 0, $55 = 0, $56 = 0, $57 = 0, $58 = 0, $59 = 0; - var $6 = 0, $60 = 0, $61 = 0, $62 = 0, $63 = 0, $64 = 0, $65 = 0, $66 = 0, $67 = 0, $68 = 0, $69 = 0, $7 = 0, $70 = 0, $71 = 0, $72 = 0, $73 = 0, $74 = 0, $8 = 0, $9 = 0, $F510$0 = 0; - var $I534$0 = 0, $K583$0 = 0, $R$1 = 0, $R$1$lcssa = 0, $R$3 = 0, $R332$1 = 0, $R332$1$lcssa = 0, $R332$3 = 0, $RP$1 = 0, $RP$1$lcssa = 0, $RP360$1 = 0, $RP360$1$lcssa = 0, $T$0 = 0, $T$0$lcssa = 0, $T$0$lcssa319 = 0, $add$ptr = 0, $add$ptr16 = 0, $add$ptr217 = 0, $add$ptr261 = 0, $add$ptr482 = 0; - var $add$ptr498 = 0, $add$ptr6 = 0, $add17 = 0, $add246 = 0, $add258 = 0, $add267 = 0, $add550 = 0, $add555 = 0, $add559 = 0, $add561 = 0, $add564 = 0, $and = 0, $and140 = 0, $and210 = 0, $and215 = 0, $and232 = 0, $and240 = 0, $and266 = 0, $and301 = 0, $and410 = 0; - var $and46 = 0, $and495 = 0, $and5 = 0, $and512 = 0, $and545 = 0, $and549 = 0, $and554 = 0, $and563 = 0, $and574 = 0, $and592 = 0, $and8 = 0, $arrayidx = 0, $arrayidx108 = 0, $arrayidx113 = 0, $arrayidx130 = 0, $arrayidx149 = 0, $arrayidx157 = 0, $arrayidx182 = 0, $arrayidx188 = 0, $arrayidx198 = 0; - var $arrayidx279 = 0, $arrayidx362 = 0, $arrayidx374 = 0, $arrayidx379 = 0, $arrayidx400 = 0, $arrayidx419 = 0, $arrayidx427 = 0, $arrayidx454 = 0, $arrayidx460 = 0, $arrayidx470 = 0, $arrayidx509 = 0, $arrayidx567 = 0, $arrayidx570 = 0, $arrayidx599 = 0, $arrayidx599$lcssa = 0, $arrayidx99 = 0, $bk = 0, $bk275 = 0, $bk286 = 0, $bk321 = 0; - var $bk333 = 0, $bk34 = 0, $bk343 = 0, $bk529 = 0, $bk531 = 0, $bk580 = 0, $bk611 = 0, $bk631 = 0, $bk634 = 0, $bk66 = 0, $bk73 = 0, $bk82 = 0, $child = 0, $child171 = 0, $child361 = 0, $child443 = 0, $child569 = 0, $cmp = 0, $cmp$i = 0, $cmp1 = 0; - var $cmp100 = 0, $cmp104 = 0, $cmp109 = 0, $cmp114 = 0, $cmp118 = 0, $cmp127 = 0, $cmp13 = 0, $cmp131 = 0, $cmp143 = 0, $cmp150 = 0, $cmp162 = 0, $cmp165 = 0, $cmp173 = 0, $cmp176 = 0, $cmp18 = 0, $cmp189 = 0, $cmp192 = 0, $cmp2 = 0, $cmp211 = 0, $cmp22 = 0; - var $cmp228 = 0, $cmp243 = 0, $cmp249 = 0, $cmp25 = 0, $cmp255 = 0, $cmp269 = 0, $cmp280 = 0, $cmp283 = 0, $cmp287 = 0, $cmp29 = 0, $cmp296 = 0, $cmp305 = 0, $cmp308 = 0, $cmp31 = 0, $cmp312 = 0, $cmp334 = 0, $cmp340 = 0, $cmp344 = 0, $cmp348 = 0, $cmp35 = 0; - var $cmp363 = 0, $cmp368 = 0, $cmp375 = 0, $cmp380 = 0, $cmp386 = 0, $cmp395 = 0, $cmp401 = 0, $cmp413 = 0, $cmp42 = 0, $cmp420 = 0, $cmp432 = 0, $cmp435 = 0, $cmp445 = 0, $cmp448 = 0, $cmp461 = 0, $cmp464 = 0, $cmp484 = 0, $cmp50 = 0, $cmp502 = 0, $cmp519 = 0; - var $cmp53 = 0, $cmp536 = 0, $cmp540 = 0, $cmp57 = 0, $cmp584 = 0, $cmp593 = 0, $cmp601 = 0, $cmp605 = 0, $cmp624 = 0, $cmp640 = 0, $cmp74 = 0, $cmp80 = 0, $cmp83 = 0, $cmp87 = 0, $cond = 0, $cond291 = 0, $cond292 = 0, $dec = 0, $fd = 0, $fd273 = 0; - var $fd311 = 0, $fd322$pre$phiZ2D = 0, $fd338 = 0, $fd347 = 0, $fd530 = 0, $fd56 = 0, $fd581 = 0, $fd612 = 0, $fd620 = 0, $fd633 = 0, $fd67$pre$phiZ2D = 0, $fd78 = 0, $fd86 = 0, $head = 0, $head209 = 0, $head216 = 0, $head231 = 0, $head248 = 0, $head260 = 0, $head481 = 0; - var $head497 = 0, $head591 = 0, $idx$neg = 0, $index = 0, $index399 = 0, $index568 = 0, $neg = 0, $neg139 = 0, $neg300 = 0, $neg409 = 0, $next4$i = 0, $not$cmp621 = 0, $or = 0, $or247 = 0, $or259 = 0, $or480 = 0, $or496 = 0, $or516 = 0, $or578 = 0, $p$1 = 0; - var $parent = 0, $parent170 = 0, $parent183 = 0, $parent199 = 0, $parent331 = 0, $parent442 = 0, $parent455 = 0, $parent471 = 0, $parent579 = 0, $parent610 = 0, $parent635 = 0, $psize$1 = 0, $psize$2 = 0, $shl = 0, $shl138 = 0, $shl278 = 0, $shl299 = 0, $shl408 = 0, $shl45 = 0, $shl508 = 0; - var $shl511 = 0, $shl546 = 0, $shl551 = 0, $shl557 = 0, $shl560 = 0, $shl573 = 0, $shl590 = 0, $shl600 = 0, $shr = 0, $shr268 = 0, $shr501 = 0, $shr535 = 0, $shr544 = 0, $shr548 = 0, $shr553 = 0, $shr558 = 0, $shr562 = 0, $shr586 = 0, $shr596 = 0, $sp$0$i = 0; - var $sp$0$in$i = 0, $sub = 0, $sub547 = 0, $sub552 = 0, $sub556 = 0, $sub589 = 0, $tobool233 = 0, $tobool241 = 0, $tobool513 = 0, $tobool575 = 0, $tobool9 = 0, label = 0, sp = 0; - sp = STACKTOP; - $cmp = ($mem|0)==(0|0); - if ($cmp) { - return; - } - $add$ptr = ((($mem)) + -8|0); - $0 = HEAP32[(192)>>2]|0; - $cmp1 = ($add$ptr>>>0)<($0>>>0); - if ($cmp1) { - _abort(); - // unreachable; - } - $head = ((($mem)) + -4|0); - $1 = HEAP32[$head>>2]|0; - $and = $1 & 3; - $cmp2 = ($and|0)==(1); - if ($cmp2) { - _abort(); - // unreachable; - } - $and5 = $1 & -8; - $add$ptr6 = (($add$ptr) + ($and5)|0); - $and8 = $1 & 1; - $tobool9 = ($and8|0)==(0); - do { - if ($tobool9) { - $2 = HEAP32[$add$ptr>>2]|0; - $cmp13 = ($and|0)==(0); - if ($cmp13) { - return; - } - $idx$neg = (0 - ($2))|0; - $add$ptr16 = (($add$ptr) + ($idx$neg)|0); - $add17 = (($2) + ($and5))|0; - $cmp18 = ($add$ptr16>>>0)<($0>>>0); - if ($cmp18) { - _abort(); - // unreachable; - } - $3 = HEAP32[(196)>>2]|0; - $cmp22 = ($add$ptr16|0)==($3|0); - if ($cmp22) { - $head209 = ((($add$ptr6)) + 4|0); - $27 = HEAP32[$head209>>2]|0; - $and210 = $27 & 3; - $cmp211 = ($and210|0)==(3); - if (!($cmp211)) { - $p$1 = $add$ptr16;$psize$1 = $add17; - break; - } - HEAP32[(184)>>2] = $add17; - $and215 = $27 & -2; - HEAP32[$head209>>2] = $and215; - $or = $add17 | 1; - $head216 = ((($add$ptr16)) + 4|0); - HEAP32[$head216>>2] = $or; - $add$ptr217 = (($add$ptr16) + ($add17)|0); - HEAP32[$add$ptr217>>2] = $add17; - return; - } - $shr = $2 >>> 3; - $cmp25 = ($2>>>0)<(256); - if ($cmp25) { - $fd = ((($add$ptr16)) + 8|0); - $4 = HEAP32[$fd>>2]|0; - $bk = ((($add$ptr16)) + 12|0); - $5 = HEAP32[$bk>>2]|0; - $shl = $shr << 1; - $arrayidx = (216 + ($shl<<2)|0); - $cmp29 = ($4|0)==($arrayidx|0); - if (!($cmp29)) { - $cmp31 = ($4>>>0)<($0>>>0); - if ($cmp31) { - _abort(); - // unreachable; - } - $bk34 = ((($4)) + 12|0); - $6 = HEAP32[$bk34>>2]|0; - $cmp35 = ($6|0)==($add$ptr16|0); - if (!($cmp35)) { - _abort(); - // unreachable; - } - } - $cmp42 = ($5|0)==($4|0); - if ($cmp42) { - $shl45 = 1 << $shr; - $neg = $shl45 ^ -1; - $7 = HEAP32[44]|0; - $and46 = $7 & $neg; - HEAP32[44] = $and46; - $p$1 = $add$ptr16;$psize$1 = $add17; - break; - } - $cmp50 = ($5|0)==($arrayidx|0); - if ($cmp50) { - $$pre313 = ((($5)) + 8|0); - $fd67$pre$phiZ2D = $$pre313; - } else { - $cmp53 = ($5>>>0)<($0>>>0); - if ($cmp53) { - _abort(); - // unreachable; - } - $fd56 = ((($5)) + 8|0); - $8 = HEAP32[$fd56>>2]|0; - $cmp57 = ($8|0)==($add$ptr16|0); - if ($cmp57) { - $fd67$pre$phiZ2D = $fd56; - } else { - _abort(); - // unreachable; - } - } - $bk66 = ((($4)) + 12|0); - HEAP32[$bk66>>2] = $5; - HEAP32[$fd67$pre$phiZ2D>>2] = $4; - $p$1 = $add$ptr16;$psize$1 = $add17; - break; - } - $parent = ((($add$ptr16)) + 24|0); - $9 = HEAP32[$parent>>2]|0; - $bk73 = ((($add$ptr16)) + 12|0); - $10 = HEAP32[$bk73>>2]|0; - $cmp74 = ($10|0)==($add$ptr16|0); - do { - if ($cmp74) { - $child = ((($add$ptr16)) + 16|0); - $arrayidx99 = ((($child)) + 4|0); - $14 = HEAP32[$arrayidx99>>2]|0; - $cmp100 = ($14|0)==(0|0); - if ($cmp100) { - $15 = HEAP32[$child>>2]|0; - $cmp104 = ($15|0)==(0|0); - if ($cmp104) { - $R$3 = 0; - break; - } else { - $R$1 = $15;$RP$1 = $child; - } - } else { - $R$1 = $14;$RP$1 = $arrayidx99; - } - while(1) { - $arrayidx108 = ((($R$1)) + 20|0); - $16 = HEAP32[$arrayidx108>>2]|0; - $cmp109 = ($16|0)==(0|0); - if (!($cmp109)) { - $R$1 = $16;$RP$1 = $arrayidx108; - continue; - } - $arrayidx113 = ((($R$1)) + 16|0); - $17 = HEAP32[$arrayidx113>>2]|0; - $cmp114 = ($17|0)==(0|0); - if ($cmp114) { - $R$1$lcssa = $R$1;$RP$1$lcssa = $RP$1; - break; - } else { - $R$1 = $17;$RP$1 = $arrayidx113; - } - } - $cmp118 = ($RP$1$lcssa>>>0)<($0>>>0); - if ($cmp118) { - _abort(); - // unreachable; - } else { - HEAP32[$RP$1$lcssa>>2] = 0; - $R$3 = $R$1$lcssa; - break; - } - } else { - $fd78 = ((($add$ptr16)) + 8|0); - $11 = HEAP32[$fd78>>2]|0; - $cmp80 = ($11>>>0)<($0>>>0); - if ($cmp80) { - _abort(); - // unreachable; - } - $bk82 = ((($11)) + 12|0); - $12 = HEAP32[$bk82>>2]|0; - $cmp83 = ($12|0)==($add$ptr16|0); - if (!($cmp83)) { - _abort(); - // unreachable; - } - $fd86 = ((($10)) + 8|0); - $13 = HEAP32[$fd86>>2]|0; - $cmp87 = ($13|0)==($add$ptr16|0); - if ($cmp87) { - HEAP32[$bk82>>2] = $10; - HEAP32[$fd86>>2] = $11; - $R$3 = $10; - break; - } else { - _abort(); - // unreachable; - } - } - } while(0); - $cmp127 = ($9|0)==(0|0); - if ($cmp127) { - $p$1 = $add$ptr16;$psize$1 = $add17; - } else { - $index = ((($add$ptr16)) + 28|0); - $18 = HEAP32[$index>>2]|0; - $arrayidx130 = (480 + ($18<<2)|0); - $19 = HEAP32[$arrayidx130>>2]|0; - $cmp131 = ($add$ptr16|0)==($19|0); - if ($cmp131) { - HEAP32[$arrayidx130>>2] = $R$3; - $cond291 = ($R$3|0)==(0|0); - if ($cond291) { - $shl138 = 1 << $18; - $neg139 = $shl138 ^ -1; - $20 = HEAP32[(180)>>2]|0; - $and140 = $20 & $neg139; - HEAP32[(180)>>2] = $and140; - $p$1 = $add$ptr16;$psize$1 = $add17; - break; - } - } else { - $21 = HEAP32[(192)>>2]|0; - $cmp143 = ($9>>>0)<($21>>>0); - if ($cmp143) { - _abort(); - // unreachable; - } - $arrayidx149 = ((($9)) + 16|0); - $22 = HEAP32[$arrayidx149>>2]|0; - $cmp150 = ($22|0)==($add$ptr16|0); - if ($cmp150) { - HEAP32[$arrayidx149>>2] = $R$3; - } else { - $arrayidx157 = ((($9)) + 20|0); - HEAP32[$arrayidx157>>2] = $R$3; - } - $cmp162 = ($R$3|0)==(0|0); - if ($cmp162) { - $p$1 = $add$ptr16;$psize$1 = $add17; - break; - } - } - $23 = HEAP32[(192)>>2]|0; - $cmp165 = ($R$3>>>0)<($23>>>0); - if ($cmp165) { - _abort(); - // unreachable; - } - $parent170 = ((($R$3)) + 24|0); - HEAP32[$parent170>>2] = $9; - $child171 = ((($add$ptr16)) + 16|0); - $24 = HEAP32[$child171>>2]|0; - $cmp173 = ($24|0)==(0|0); - do { - if (!($cmp173)) { - $cmp176 = ($24>>>0)<($23>>>0); - if ($cmp176) { - _abort(); - // unreachable; - } else { - $arrayidx182 = ((($R$3)) + 16|0); - HEAP32[$arrayidx182>>2] = $24; - $parent183 = ((($24)) + 24|0); - HEAP32[$parent183>>2] = $R$3; - break; - } - } - } while(0); - $arrayidx188 = ((($child171)) + 4|0); - $25 = HEAP32[$arrayidx188>>2]|0; - $cmp189 = ($25|0)==(0|0); - if ($cmp189) { - $p$1 = $add$ptr16;$psize$1 = $add17; - } else { - $26 = HEAP32[(192)>>2]|0; - $cmp192 = ($25>>>0)<($26>>>0); - if ($cmp192) { - _abort(); - // unreachable; - } else { - $arrayidx198 = ((($R$3)) + 20|0); - HEAP32[$arrayidx198>>2] = $25; - $parent199 = ((($25)) + 24|0); - HEAP32[$parent199>>2] = $R$3; - $p$1 = $add$ptr16;$psize$1 = $add17; - break; - } - } - } - } else { - $p$1 = $add$ptr;$psize$1 = $and5; - } - } while(0); - $cmp228 = ($p$1>>>0)<($add$ptr6>>>0); - if (!($cmp228)) { - _abort(); - // unreachable; - } - $head231 = ((($add$ptr6)) + 4|0); - $28 = HEAP32[$head231>>2]|0; - $and232 = $28 & 1; - $tobool233 = ($and232|0)==(0); - if ($tobool233) { - _abort(); - // unreachable; - } - $and240 = $28 & 2; - $tobool241 = ($and240|0)==(0); - if ($tobool241) { - $29 = HEAP32[(200)>>2]|0; - $cmp243 = ($add$ptr6|0)==($29|0); - if ($cmp243) { - $30 = HEAP32[(188)>>2]|0; - $add246 = (($30) + ($psize$1))|0; - HEAP32[(188)>>2] = $add246; - HEAP32[(200)>>2] = $p$1; - $or247 = $add246 | 1; - $head248 = ((($p$1)) + 4|0); - HEAP32[$head248>>2] = $or247; - $31 = HEAP32[(196)>>2]|0; - $cmp249 = ($p$1|0)==($31|0); - if (!($cmp249)) { - return; - } - HEAP32[(196)>>2] = 0; - HEAP32[(184)>>2] = 0; - return; - } - $32 = HEAP32[(196)>>2]|0; - $cmp255 = ($add$ptr6|0)==($32|0); - if ($cmp255) { - $33 = HEAP32[(184)>>2]|0; - $add258 = (($33) + ($psize$1))|0; - HEAP32[(184)>>2] = $add258; - HEAP32[(196)>>2] = $p$1; - $or259 = $add258 | 1; - $head260 = ((($p$1)) + 4|0); - HEAP32[$head260>>2] = $or259; - $add$ptr261 = (($p$1) + ($add258)|0); - HEAP32[$add$ptr261>>2] = $add258; - return; - } - $and266 = $28 & -8; - $add267 = (($and266) + ($psize$1))|0; - $shr268 = $28 >>> 3; - $cmp269 = ($28>>>0)<(256); - do { - if ($cmp269) { - $fd273 = ((($add$ptr6)) + 8|0); - $34 = HEAP32[$fd273>>2]|0; - $bk275 = ((($add$ptr6)) + 12|0); - $35 = HEAP32[$bk275>>2]|0; - $shl278 = $shr268 << 1; - $arrayidx279 = (216 + ($shl278<<2)|0); - $cmp280 = ($34|0)==($arrayidx279|0); - if (!($cmp280)) { - $36 = HEAP32[(192)>>2]|0; - $cmp283 = ($34>>>0)<($36>>>0); - if ($cmp283) { - _abort(); - // unreachable; - } - $bk286 = ((($34)) + 12|0); - $37 = HEAP32[$bk286>>2]|0; - $cmp287 = ($37|0)==($add$ptr6|0); - if (!($cmp287)) { - _abort(); - // unreachable; - } - } - $cmp296 = ($35|0)==($34|0); - if ($cmp296) { - $shl299 = 1 << $shr268; - $neg300 = $shl299 ^ -1; - $38 = HEAP32[44]|0; - $and301 = $38 & $neg300; - HEAP32[44] = $and301; - break; - } - $cmp305 = ($35|0)==($arrayidx279|0); - if ($cmp305) { - $$pre312 = ((($35)) + 8|0); - $fd322$pre$phiZ2D = $$pre312; - } else { - $39 = HEAP32[(192)>>2]|0; - $cmp308 = ($35>>>0)<($39>>>0); - if ($cmp308) { - _abort(); - // unreachable; - } - $fd311 = ((($35)) + 8|0); - $40 = HEAP32[$fd311>>2]|0; - $cmp312 = ($40|0)==($add$ptr6|0); - if ($cmp312) { - $fd322$pre$phiZ2D = $fd311; - } else { - _abort(); - // unreachable; - } - } - $bk321 = ((($34)) + 12|0); - HEAP32[$bk321>>2] = $35; - HEAP32[$fd322$pre$phiZ2D>>2] = $34; - } else { - $parent331 = ((($add$ptr6)) + 24|0); - $41 = HEAP32[$parent331>>2]|0; - $bk333 = ((($add$ptr6)) + 12|0); - $42 = HEAP32[$bk333>>2]|0; - $cmp334 = ($42|0)==($add$ptr6|0); - do { - if ($cmp334) { - $child361 = ((($add$ptr6)) + 16|0); - $arrayidx362 = ((($child361)) + 4|0); - $47 = HEAP32[$arrayidx362>>2]|0; - $cmp363 = ($47|0)==(0|0); - if ($cmp363) { - $48 = HEAP32[$child361>>2]|0; - $cmp368 = ($48|0)==(0|0); - if ($cmp368) { - $R332$3 = 0; - break; - } else { - $R332$1 = $48;$RP360$1 = $child361; - } - } else { - $R332$1 = $47;$RP360$1 = $arrayidx362; - } - while(1) { - $arrayidx374 = ((($R332$1)) + 20|0); - $49 = HEAP32[$arrayidx374>>2]|0; - $cmp375 = ($49|0)==(0|0); - if (!($cmp375)) { - $R332$1 = $49;$RP360$1 = $arrayidx374; - continue; - } - $arrayidx379 = ((($R332$1)) + 16|0); - $50 = HEAP32[$arrayidx379>>2]|0; - $cmp380 = ($50|0)==(0|0); - if ($cmp380) { - $R332$1$lcssa = $R332$1;$RP360$1$lcssa = $RP360$1; - break; - } else { - $R332$1 = $50;$RP360$1 = $arrayidx379; - } - } - $51 = HEAP32[(192)>>2]|0; - $cmp386 = ($RP360$1$lcssa>>>0)<($51>>>0); - if ($cmp386) { - _abort(); - // unreachable; - } else { - HEAP32[$RP360$1$lcssa>>2] = 0; - $R332$3 = $R332$1$lcssa; - break; - } - } else { - $fd338 = ((($add$ptr6)) + 8|0); - $43 = HEAP32[$fd338>>2]|0; - $44 = HEAP32[(192)>>2]|0; - $cmp340 = ($43>>>0)<($44>>>0); - if ($cmp340) { - _abort(); - // unreachable; - } - $bk343 = ((($43)) + 12|0); - $45 = HEAP32[$bk343>>2]|0; - $cmp344 = ($45|0)==($add$ptr6|0); - if (!($cmp344)) { - _abort(); - // unreachable; - } - $fd347 = ((($42)) + 8|0); - $46 = HEAP32[$fd347>>2]|0; - $cmp348 = ($46|0)==($add$ptr6|0); - if ($cmp348) { - HEAP32[$bk343>>2] = $42; - HEAP32[$fd347>>2] = $43; - $R332$3 = $42; - break; - } else { - _abort(); - // unreachable; - } - } - } while(0); - $cmp395 = ($41|0)==(0|0); - if (!($cmp395)) { - $index399 = ((($add$ptr6)) + 28|0); - $52 = HEAP32[$index399>>2]|0; - $arrayidx400 = (480 + ($52<<2)|0); - $53 = HEAP32[$arrayidx400>>2]|0; - $cmp401 = ($add$ptr6|0)==($53|0); - if ($cmp401) { - HEAP32[$arrayidx400>>2] = $R332$3; - $cond292 = ($R332$3|0)==(0|0); - if ($cond292) { - $shl408 = 1 << $52; - $neg409 = $shl408 ^ -1; - $54 = HEAP32[(180)>>2]|0; - $and410 = $54 & $neg409; - HEAP32[(180)>>2] = $and410; - break; - } - } else { - $55 = HEAP32[(192)>>2]|0; - $cmp413 = ($41>>>0)<($55>>>0); - if ($cmp413) { - _abort(); - // unreachable; - } - $arrayidx419 = ((($41)) + 16|0); - $56 = HEAP32[$arrayidx419>>2]|0; - $cmp420 = ($56|0)==($add$ptr6|0); - if ($cmp420) { - HEAP32[$arrayidx419>>2] = $R332$3; - } else { - $arrayidx427 = ((($41)) + 20|0); - HEAP32[$arrayidx427>>2] = $R332$3; - } - $cmp432 = ($R332$3|0)==(0|0); - if ($cmp432) { - break; - } - } - $57 = HEAP32[(192)>>2]|0; - $cmp435 = ($R332$3>>>0)<($57>>>0); - if ($cmp435) { - _abort(); - // unreachable; - } - $parent442 = ((($R332$3)) + 24|0); - HEAP32[$parent442>>2] = $41; - $child443 = ((($add$ptr6)) + 16|0); - $58 = HEAP32[$child443>>2]|0; - $cmp445 = ($58|0)==(0|0); - do { - if (!($cmp445)) { - $cmp448 = ($58>>>0)<($57>>>0); - if ($cmp448) { - _abort(); - // unreachable; - } else { - $arrayidx454 = ((($R332$3)) + 16|0); - HEAP32[$arrayidx454>>2] = $58; - $parent455 = ((($58)) + 24|0); - HEAP32[$parent455>>2] = $R332$3; - break; - } - } - } while(0); - $arrayidx460 = ((($child443)) + 4|0); - $59 = HEAP32[$arrayidx460>>2]|0; - $cmp461 = ($59|0)==(0|0); - if (!($cmp461)) { - $60 = HEAP32[(192)>>2]|0; - $cmp464 = ($59>>>0)<($60>>>0); - if ($cmp464) { - _abort(); - // unreachable; - } else { - $arrayidx470 = ((($R332$3)) + 20|0); - HEAP32[$arrayidx470>>2] = $59; - $parent471 = ((($59)) + 24|0); - HEAP32[$parent471>>2] = $R332$3; - break; - } - } - } - } - } while(0); - $or480 = $add267 | 1; - $head481 = ((($p$1)) + 4|0); - HEAP32[$head481>>2] = $or480; - $add$ptr482 = (($p$1) + ($add267)|0); - HEAP32[$add$ptr482>>2] = $add267; - $61 = HEAP32[(196)>>2]|0; - $cmp484 = ($p$1|0)==($61|0); - if ($cmp484) { - HEAP32[(184)>>2] = $add267; - return; - } else { - $psize$2 = $add267; - } - } else { - $and495 = $28 & -2; - HEAP32[$head231>>2] = $and495; - $or496 = $psize$1 | 1; - $head497 = ((($p$1)) + 4|0); - HEAP32[$head497>>2] = $or496; - $add$ptr498 = (($p$1) + ($psize$1)|0); - HEAP32[$add$ptr498>>2] = $psize$1; - $psize$2 = $psize$1; - } - $shr501 = $psize$2 >>> 3; - $cmp502 = ($psize$2>>>0)<(256); - if ($cmp502) { - $shl508 = $shr501 << 1; - $arrayidx509 = (216 + ($shl508<<2)|0); - $62 = HEAP32[44]|0; - $shl511 = 1 << $shr501; - $and512 = $62 & $shl511; - $tobool513 = ($and512|0)==(0); - if ($tobool513) { - $or516 = $62 | $shl511; - HEAP32[44] = $or516; - $$pre = ((($arrayidx509)) + 8|0); - $$pre$phiZ2D = $$pre;$F510$0 = $arrayidx509; - } else { - $63 = ((($arrayidx509)) + 8|0); - $64 = HEAP32[$63>>2]|0; - $65 = HEAP32[(192)>>2]|0; - $cmp519 = ($64>>>0)<($65>>>0); - if ($cmp519) { - _abort(); - // unreachable; - } else { - $$pre$phiZ2D = $63;$F510$0 = $64; - } - } - HEAP32[$$pre$phiZ2D>>2] = $p$1; - $bk529 = ((($F510$0)) + 12|0); - HEAP32[$bk529>>2] = $p$1; - $fd530 = ((($p$1)) + 8|0); - HEAP32[$fd530>>2] = $F510$0; - $bk531 = ((($p$1)) + 12|0); - HEAP32[$bk531>>2] = $arrayidx509; - return; - } - $shr535 = $psize$2 >>> 8; - $cmp536 = ($shr535|0)==(0); - if ($cmp536) { - $I534$0 = 0; - } else { - $cmp540 = ($psize$2>>>0)>(16777215); - if ($cmp540) { - $I534$0 = 31; - } else { - $sub = (($shr535) + 1048320)|0; - $shr544 = $sub >>> 16; - $and545 = $shr544 & 8; - $shl546 = $shr535 << $and545; - $sub547 = (($shl546) + 520192)|0; - $shr548 = $sub547 >>> 16; - $and549 = $shr548 & 4; - $add550 = $and549 | $and545; - $shl551 = $shl546 << $and549; - $sub552 = (($shl551) + 245760)|0; - $shr553 = $sub552 >>> 16; - $and554 = $shr553 & 2; - $add555 = $add550 | $and554; - $sub556 = (14 - ($add555))|0; - $shl557 = $shl551 << $and554; - $shr558 = $shl557 >>> 15; - $add559 = (($sub556) + ($shr558))|0; - $shl560 = $add559 << 1; - $add561 = (($add559) + 7)|0; - $shr562 = $psize$2 >>> $add561; - $and563 = $shr562 & 1; - $add564 = $and563 | $shl560; - $I534$0 = $add564; - } - } - $arrayidx567 = (480 + ($I534$0<<2)|0); - $index568 = ((($p$1)) + 28|0); - HEAP32[$index568>>2] = $I534$0; - $child569 = ((($p$1)) + 16|0); - $arrayidx570 = ((($p$1)) + 20|0); - HEAP32[$arrayidx570>>2] = 0; - HEAP32[$child569>>2] = 0; - $66 = HEAP32[(180)>>2]|0; - $shl573 = 1 << $I534$0; - $and574 = $66 & $shl573; - $tobool575 = ($and574|0)==(0); - do { - if ($tobool575) { - $or578 = $66 | $shl573; - HEAP32[(180)>>2] = $or578; - HEAP32[$arrayidx567>>2] = $p$1; - $parent579 = ((($p$1)) + 24|0); - HEAP32[$parent579>>2] = $arrayidx567; - $bk580 = ((($p$1)) + 12|0); - HEAP32[$bk580>>2] = $p$1; - $fd581 = ((($p$1)) + 8|0); - HEAP32[$fd581>>2] = $p$1; - } else { - $67 = HEAP32[$arrayidx567>>2]|0; - $cmp584 = ($I534$0|0)==(31); - $shr586 = $I534$0 >>> 1; - $sub589 = (25 - ($shr586))|0; - $cond = $cmp584 ? 0 : $sub589; - $shl590 = $psize$2 << $cond; - $K583$0 = $shl590;$T$0 = $67; - while(1) { - $head591 = ((($T$0)) + 4|0); - $68 = HEAP32[$head591>>2]|0; - $and592 = $68 & -8; - $cmp593 = ($and592|0)==($psize$2|0); - if ($cmp593) { - $T$0$lcssa = $T$0; - label = 130; - break; - } - $shr596 = $K583$0 >>> 31; - $arrayidx599 = (((($T$0)) + 16|0) + ($shr596<<2)|0); - $shl600 = $K583$0 << 1; - $69 = HEAP32[$arrayidx599>>2]|0; - $cmp601 = ($69|0)==(0|0); - if ($cmp601) { - $T$0$lcssa319 = $T$0;$arrayidx599$lcssa = $arrayidx599; - label = 127; - break; - } else { - $K583$0 = $shl600;$T$0 = $69; - } - } - if ((label|0) == 127) { - $70 = HEAP32[(192)>>2]|0; - $cmp605 = ($arrayidx599$lcssa>>>0)<($70>>>0); - if ($cmp605) { - _abort(); - // unreachable; - } else { - HEAP32[$arrayidx599$lcssa>>2] = $p$1; - $parent610 = ((($p$1)) + 24|0); - HEAP32[$parent610>>2] = $T$0$lcssa319; - $bk611 = ((($p$1)) + 12|0); - HEAP32[$bk611>>2] = $p$1; - $fd612 = ((($p$1)) + 8|0); - HEAP32[$fd612>>2] = $p$1; - break; - } - } - else if ((label|0) == 130) { - $fd620 = ((($T$0$lcssa)) + 8|0); - $71 = HEAP32[$fd620>>2]|0; - $72 = HEAP32[(192)>>2]|0; - $cmp624 = ($71>>>0)>=($72>>>0); - $not$cmp621 = ($T$0$lcssa>>>0)>=($72>>>0); - $73 = $cmp624 & $not$cmp621; - if ($73) { - $bk631 = ((($71)) + 12|0); - HEAP32[$bk631>>2] = $p$1; - HEAP32[$fd620>>2] = $p$1; - $fd633 = ((($p$1)) + 8|0); - HEAP32[$fd633>>2] = $71; - $bk634 = ((($p$1)) + 12|0); - HEAP32[$bk634>>2] = $T$0$lcssa; - $parent635 = ((($p$1)) + 24|0); - HEAP32[$parent635>>2] = 0; - break; - } else { - _abort(); - // unreachable; - } - } - } - } while(0); - $74 = HEAP32[(208)>>2]|0; - $dec = (($74) + -1)|0; - HEAP32[(208)>>2] = $dec; - $cmp640 = ($dec|0)==(0); - if ($cmp640) { - $sp$0$in$i = (632); - } else { - return; - } - while(1) { - $sp$0$i = HEAP32[$sp$0$in$i>>2]|0; - $cmp$i = ($sp$0$i|0)==(0|0); - $next4$i = ((($sp$0$i)) + 8|0); - if ($cmp$i) { - break; - } else { - $sp$0$in$i = $next4$i; - } - } - HEAP32[(208)>>2] = -1; - return; -} -function runPostSets() { -} -function _i64Subtract(a, b, c, d) { - a = a|0; b = b|0; c = c|0; d = d|0; - var l = 0, h = 0; - l = (a - c)>>>0; - h = (b - d)>>>0; - h = (b - d - (((c>>>0) > (a>>>0))|0))>>>0; // Borrow one from high word to low word on underflow. - return ((tempRet0 = h,l|0)|0); -} -function _i64Add(a, b, c, d) { - /* - x = a + b*2^32 - y = c + d*2^32 - result = l + h*2^32 - */ - a = a|0; b = b|0; c = c|0; d = d|0; - var l = 0, h = 0; - l = (a + c)>>>0; - h = (b + d + (((l>>>0) < (a>>>0))|0))>>>0; // Add carry from low word to high word on overflow. - return ((tempRet0 = h,l|0)|0); -} -function _memset(ptr, value, num) { - ptr = ptr|0; value = value|0; num = num|0; - var stop = 0, value4 = 0, stop4 = 0, unaligned = 0; - stop = (ptr + num)|0; - if ((num|0) >= 20) { - // This is unaligned, but quite large, so work hard to get to aligned settings - value = value & 0xff; - unaligned = ptr & 3; - value4 = value | (value << 8) | (value << 16) | (value << 24); - stop4 = stop & ~3; - if (unaligned) { - unaligned = (ptr + 4 - unaligned)|0; - while ((ptr|0) < (unaligned|0)) { // no need to check for stop, since we have large num - HEAP8[((ptr)>>0)]=value; - ptr = (ptr+1)|0; - } - } - while ((ptr|0) < (stop4|0)) { - HEAP32[((ptr)>>2)]=value4; - ptr = (ptr+4)|0; - } - } - while ((ptr|0) < (stop|0)) { - HEAP8[((ptr)>>0)]=value; - ptr = (ptr+1)|0; - } - return (ptr-num)|0; -} -function _bitshift64Lshr(low, high, bits) { - low = low|0; high = high|0; bits = bits|0; - var ander = 0; - if ((bits|0) < 32) { - ander = ((1 << bits) - 1)|0; - tempRet0 = high >>> bits; - return (low >>> bits) | ((high&ander) << (32 - bits)); - } - tempRet0 = 0; - return (high >>> (bits - 32))|0; -} -function _bitshift64Shl(low, high, bits) { - low = low|0; high = high|0; bits = bits|0; - var ander = 0; - if ((bits|0) < 32) { - ander = ((1 << bits) - 1)|0; - tempRet0 = (high << bits) | ((low&(ander << (32 - bits))) >>> (32 - bits)); - return low << bits; - } - tempRet0 = low << (bits - 32); - return 0; -} -function _memcpy(dest, src, num) { - dest = dest|0; src = src|0; num = num|0; - var ret = 0; - if ((num|0) >= 4096) return _emscripten_memcpy_big(dest|0, src|0, num|0)|0; - ret = dest|0; - if ((dest&3) == (src&3)) { - while (dest & 3) { - if ((num|0) == 0) return ret|0; - HEAP8[((dest)>>0)]=((HEAP8[((src)>>0)])|0); - dest = (dest+1)|0; - src = (src+1)|0; - num = (num-1)|0; - } - while ((num|0) >= 4) { - HEAP32[((dest)>>2)]=((HEAP32[((src)>>2)])|0); - dest = (dest+4)|0; - src = (src+4)|0; - num = (num-4)|0; - } - } - while ((num|0) > 0) { - HEAP8[((dest)>>0)]=((HEAP8[((src)>>0)])|0); - dest = (dest+1)|0; - src = (src+1)|0; - num = (num-1)|0; - } - return ret|0; -} -function _bitshift64Ashr(low, high, bits) { - low = low|0; high = high|0; bits = bits|0; - var ander = 0; - if ((bits|0) < 32) { - ander = ((1 << bits) - 1)|0; - tempRet0 = high >> bits; - return (low >>> bits) | ((high&ander) << (32 - bits)); - } - tempRet0 = (high|0) < 0 ? -1 : 0; - return (high >> (bits - 32))|0; - } - -// ======== compiled code from system/lib/compiler-rt , see readme therein -function ___muldsi3($a, $b) { - $a = $a | 0; - $b = $b | 0; - var $1 = 0, $2 = 0, $3 = 0, $6 = 0, $8 = 0, $11 = 0, $12 = 0; - $1 = $a & 65535; - $2 = $b & 65535; - $3 = Math_imul($2, $1) | 0; - $6 = $a >>> 16; - $8 = ($3 >>> 16) + (Math_imul($2, $6) | 0) | 0; - $11 = $b >>> 16; - $12 = Math_imul($11, $1) | 0; - return (tempRet0 = (($8 >>> 16) + (Math_imul($11, $6) | 0) | 0) + ((($8 & 65535) + $12 | 0) >>> 16) | 0, 0 | ($8 + $12 << 16 | $3 & 65535)) | 0; -} -function ___divdi3($a$0, $a$1, $b$0, $b$1) { - $a$0 = $a$0 | 0; - $a$1 = $a$1 | 0; - $b$0 = $b$0 | 0; - $b$1 = $b$1 | 0; - var $1$0 = 0, $1$1 = 0, $2$0 = 0, $2$1 = 0, $4$0 = 0, $4$1 = 0, $6$0 = 0, $7$0 = 0, $7$1 = 0, $8$0 = 0, $10$0 = 0; - $1$0 = $a$1 >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1; - $1$1 = (($a$1 | 0) < 0 ? -1 : 0) >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1; - $2$0 = $b$1 >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1; - $2$1 = (($b$1 | 0) < 0 ? -1 : 0) >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1; - $4$0 = _i64Subtract($1$0 ^ $a$0, $1$1 ^ $a$1, $1$0, $1$1) | 0; - $4$1 = tempRet0; - $6$0 = _i64Subtract($2$0 ^ $b$0, $2$1 ^ $b$1, $2$0, $2$1) | 0; - $7$0 = $2$0 ^ $1$0; - $7$1 = $2$1 ^ $1$1; - $8$0 = ___udivmoddi4($4$0, $4$1, $6$0, tempRet0, 0) | 0; - $10$0 = _i64Subtract($8$0 ^ $7$0, tempRet0 ^ $7$1, $7$0, $7$1) | 0; - return $10$0 | 0; -} -function ___remdi3($a$0, $a$1, $b$0, $b$1) { - $a$0 = $a$0 | 0; - $a$1 = $a$1 | 0; - $b$0 = $b$0 | 0; - $b$1 = $b$1 | 0; - var $rem = 0, $1$0 = 0, $1$1 = 0, $2$0 = 0, $2$1 = 0, $4$0 = 0, $4$1 = 0, $6$0 = 0, $10$0 = 0, $10$1 = 0, __stackBase__ = 0; - __stackBase__ = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - $rem = __stackBase__ | 0; - $1$0 = $a$1 >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1; - $1$1 = (($a$1 | 0) < 0 ? -1 : 0) >> 31 | (($a$1 | 0) < 0 ? -1 : 0) << 1; - $2$0 = $b$1 >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1; - $2$1 = (($b$1 | 0) < 0 ? -1 : 0) >> 31 | (($b$1 | 0) < 0 ? -1 : 0) << 1; - $4$0 = _i64Subtract($1$0 ^ $a$0, $1$1 ^ $a$1, $1$0, $1$1) | 0; - $4$1 = tempRet0; - $6$0 = _i64Subtract($2$0 ^ $b$0, $2$1 ^ $b$1, $2$0, $2$1) | 0; - ___udivmoddi4($4$0, $4$1, $6$0, tempRet0, $rem) | 0; - $10$0 = _i64Subtract(HEAP32[$rem >> 2] ^ $1$0, HEAP32[$rem + 4 >> 2] ^ $1$1, $1$0, $1$1) | 0; - $10$1 = tempRet0; - STACKTOP = __stackBase__; - return (tempRet0 = $10$1, $10$0) | 0; -} -function ___muldi3($a$0, $a$1, $b$0, $b$1) { - $a$0 = $a$0 | 0; - $a$1 = $a$1 | 0; - $b$0 = $b$0 | 0; - $b$1 = $b$1 | 0; - var $x_sroa_0_0_extract_trunc = 0, $y_sroa_0_0_extract_trunc = 0, $1$0 = 0, $1$1 = 0, $2 = 0; - $x_sroa_0_0_extract_trunc = $a$0; - $y_sroa_0_0_extract_trunc = $b$0; - $1$0 = ___muldsi3($x_sroa_0_0_extract_trunc, $y_sroa_0_0_extract_trunc) | 0; - $1$1 = tempRet0; - $2 = Math_imul($a$1, $y_sroa_0_0_extract_trunc) | 0; - return (tempRet0 = ((Math_imul($b$1, $x_sroa_0_0_extract_trunc) | 0) + $2 | 0) + $1$1 | $1$1 & 0, 0 | $1$0 & -1) | 0; -} -function ___udivdi3($a$0, $a$1, $b$0, $b$1) { - $a$0 = $a$0 | 0; - $a$1 = $a$1 | 0; - $b$0 = $b$0 | 0; - $b$1 = $b$1 | 0; - var $1$0 = 0; - $1$0 = ___udivmoddi4($a$0, $a$1, $b$0, $b$1, 0) | 0; - return $1$0 | 0; -} -function ___uremdi3($a$0, $a$1, $b$0, $b$1) { - $a$0 = $a$0 | 0; - $a$1 = $a$1 | 0; - $b$0 = $b$0 | 0; - $b$1 = $b$1 | 0; - var $rem = 0, __stackBase__ = 0; - __stackBase__ = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - $rem = __stackBase__ | 0; - ___udivmoddi4($a$0, $a$1, $b$0, $b$1, $rem) | 0; - STACKTOP = __stackBase__; - return (tempRet0 = HEAP32[$rem + 4 >> 2] | 0, HEAP32[$rem >> 2] | 0) | 0; -} -function ___udivmoddi4($a$0, $a$1, $b$0, $b$1, $rem) { - $a$0 = $a$0 | 0; - $a$1 = $a$1 | 0; - $b$0 = $b$0 | 0; - $b$1 = $b$1 | 0; - $rem = $rem | 0; - var $n_sroa_0_0_extract_trunc = 0, $n_sroa_1_4_extract_shift$0 = 0, $n_sroa_1_4_extract_trunc = 0, $d_sroa_0_0_extract_trunc = 0, $d_sroa_1_4_extract_shift$0 = 0, $d_sroa_1_4_extract_trunc = 0, $4 = 0, $17 = 0, $37 = 0, $49 = 0, $51 = 0, $57 = 0, $58 = 0, $66 = 0, $78 = 0, $86 = 0, $88 = 0, $89 = 0, $91 = 0, $92 = 0, $95 = 0, $105 = 0, $117 = 0, $119 = 0, $125 = 0, $126 = 0, $130 = 0, $q_sroa_1_1_ph = 0, $q_sroa_0_1_ph = 0, $r_sroa_1_1_ph = 0, $r_sroa_0_1_ph = 0, $sr_1_ph = 0, $d_sroa_0_0_insert_insert99$0 = 0, $d_sroa_0_0_insert_insert99$1 = 0, $137$0 = 0, $137$1 = 0, $carry_0203 = 0, $sr_1202 = 0, $r_sroa_0_1201 = 0, $r_sroa_1_1200 = 0, $q_sroa_0_1199 = 0, $q_sroa_1_1198 = 0, $147 = 0, $149 = 0, $r_sroa_0_0_insert_insert42$0 = 0, $r_sroa_0_0_insert_insert42$1 = 0, $150$1 = 0, $151$0 = 0, $152 = 0, $154$0 = 0, $r_sroa_0_0_extract_trunc = 0, $r_sroa_1_4_extract_trunc = 0, $155 = 0, $carry_0_lcssa$0 = 0, $carry_0_lcssa$1 = 0, $r_sroa_0_1_lcssa = 0, $r_sroa_1_1_lcssa = 0, $q_sroa_0_1_lcssa = 0, $q_sroa_1_1_lcssa = 0, $q_sroa_0_0_insert_ext75$0 = 0, $q_sroa_0_0_insert_ext75$1 = 0, $q_sroa_0_0_insert_insert77$1 = 0, $_0$0 = 0, $_0$1 = 0; - $n_sroa_0_0_extract_trunc = $a$0; - $n_sroa_1_4_extract_shift$0 = $a$1; - $n_sroa_1_4_extract_trunc = $n_sroa_1_4_extract_shift$0; - $d_sroa_0_0_extract_trunc = $b$0; - $d_sroa_1_4_extract_shift$0 = $b$1; - $d_sroa_1_4_extract_trunc = $d_sroa_1_4_extract_shift$0; - if (($n_sroa_1_4_extract_trunc | 0) == 0) { - $4 = ($rem | 0) != 0; - if (($d_sroa_1_4_extract_trunc | 0) == 0) { - if ($4) { - HEAP32[$rem >> 2] = ($n_sroa_0_0_extract_trunc >>> 0) % ($d_sroa_0_0_extract_trunc >>> 0); - HEAP32[$rem + 4 >> 2] = 0; - } - $_0$1 = 0; - $_0$0 = ($n_sroa_0_0_extract_trunc >>> 0) / ($d_sroa_0_0_extract_trunc >>> 0) >>> 0; - return (tempRet0 = $_0$1, $_0$0) | 0; - } else { - if (!$4) { - $_0$1 = 0; - $_0$0 = 0; - return (tempRet0 = $_0$1, $_0$0) | 0; - } - HEAP32[$rem >> 2] = $a$0 & -1; - HEAP32[$rem + 4 >> 2] = $a$1 & 0; - $_0$1 = 0; - $_0$0 = 0; - return (tempRet0 = $_0$1, $_0$0) | 0; - } - } - $17 = ($d_sroa_1_4_extract_trunc | 0) == 0; - do { - if (($d_sroa_0_0_extract_trunc | 0) == 0) { - if ($17) { - if (($rem | 0) != 0) { - HEAP32[$rem >> 2] = ($n_sroa_1_4_extract_trunc >>> 0) % ($d_sroa_0_0_extract_trunc >>> 0); - HEAP32[$rem + 4 >> 2] = 0; - } - $_0$1 = 0; - $_0$0 = ($n_sroa_1_4_extract_trunc >>> 0) / ($d_sroa_0_0_extract_trunc >>> 0) >>> 0; - return (tempRet0 = $_0$1, $_0$0) | 0; - } - if (($n_sroa_0_0_extract_trunc | 0) == 0) { - if (($rem | 0) != 0) { - HEAP32[$rem >> 2] = 0; - HEAP32[$rem + 4 >> 2] = ($n_sroa_1_4_extract_trunc >>> 0) % ($d_sroa_1_4_extract_trunc >>> 0); - } - $_0$1 = 0; - $_0$0 = ($n_sroa_1_4_extract_trunc >>> 0) / ($d_sroa_1_4_extract_trunc >>> 0) >>> 0; - return (tempRet0 = $_0$1, $_0$0) | 0; - } - $37 = $d_sroa_1_4_extract_trunc - 1 | 0; - if (($37 & $d_sroa_1_4_extract_trunc | 0) == 0) { - if (($rem | 0) != 0) { - HEAP32[$rem >> 2] = 0 | $a$0 & -1; - HEAP32[$rem + 4 >> 2] = $37 & $n_sroa_1_4_extract_trunc | $a$1 & 0; - } - $_0$1 = 0; - $_0$0 = $n_sroa_1_4_extract_trunc >>> ((_llvm_cttz_i32($d_sroa_1_4_extract_trunc | 0) | 0) >>> 0); - return (tempRet0 = $_0$1, $_0$0) | 0; - } - $49 = Math_clz32($d_sroa_1_4_extract_trunc | 0) | 0; - $51 = $49 - (Math_clz32($n_sroa_1_4_extract_trunc | 0) | 0) | 0; - if ($51 >>> 0 <= 30) { - $57 = $51 + 1 | 0; - $58 = 31 - $51 | 0; - $sr_1_ph = $57; - $r_sroa_0_1_ph = $n_sroa_1_4_extract_trunc << $58 | $n_sroa_0_0_extract_trunc >>> ($57 >>> 0); - $r_sroa_1_1_ph = $n_sroa_1_4_extract_trunc >>> ($57 >>> 0); - $q_sroa_0_1_ph = 0; - $q_sroa_1_1_ph = $n_sroa_0_0_extract_trunc << $58; - break; - } - if (($rem | 0) == 0) { - $_0$1 = 0; - $_0$0 = 0; - return (tempRet0 = $_0$1, $_0$0) | 0; - } - HEAP32[$rem >> 2] = 0 | $a$0 & -1; - HEAP32[$rem + 4 >> 2] = $n_sroa_1_4_extract_shift$0 | $a$1 & 0; - $_0$1 = 0; - $_0$0 = 0; - return (tempRet0 = $_0$1, $_0$0) | 0; - } else { - if (!$17) { - $117 = Math_clz32($d_sroa_1_4_extract_trunc | 0) | 0; - $119 = $117 - (Math_clz32($n_sroa_1_4_extract_trunc | 0) | 0) | 0; - if ($119 >>> 0 <= 31) { - $125 = $119 + 1 | 0; - $126 = 31 - $119 | 0; - $130 = $119 - 31 >> 31; - $sr_1_ph = $125; - $r_sroa_0_1_ph = $n_sroa_0_0_extract_trunc >>> ($125 >>> 0) & $130 | $n_sroa_1_4_extract_trunc << $126; - $r_sroa_1_1_ph = $n_sroa_1_4_extract_trunc >>> ($125 >>> 0) & $130; - $q_sroa_0_1_ph = 0; - $q_sroa_1_1_ph = $n_sroa_0_0_extract_trunc << $126; - break; - } - if (($rem | 0) == 0) { - $_0$1 = 0; - $_0$0 = 0; - return (tempRet0 = $_0$1, $_0$0) | 0; - } - HEAP32[$rem >> 2] = 0 | $a$0 & -1; - HEAP32[$rem + 4 >> 2] = $n_sroa_1_4_extract_shift$0 | $a$1 & 0; - $_0$1 = 0; - $_0$0 = 0; - return (tempRet0 = $_0$1, $_0$0) | 0; - } - $66 = $d_sroa_0_0_extract_trunc - 1 | 0; - if (($66 & $d_sroa_0_0_extract_trunc | 0) != 0) { - $86 = (Math_clz32($d_sroa_0_0_extract_trunc | 0) | 0) + 33 | 0; - $88 = $86 - (Math_clz32($n_sroa_1_4_extract_trunc | 0) | 0) | 0; - $89 = 64 - $88 | 0; - $91 = 32 - $88 | 0; - $92 = $91 >> 31; - $95 = $88 - 32 | 0; - $105 = $95 >> 31; - $sr_1_ph = $88; - $r_sroa_0_1_ph = $91 - 1 >> 31 & $n_sroa_1_4_extract_trunc >>> ($95 >>> 0) | ($n_sroa_1_4_extract_trunc << $91 | $n_sroa_0_0_extract_trunc >>> ($88 >>> 0)) & $105; - $r_sroa_1_1_ph = $105 & $n_sroa_1_4_extract_trunc >>> ($88 >>> 0); - $q_sroa_0_1_ph = $n_sroa_0_0_extract_trunc << $89 & $92; - $q_sroa_1_1_ph = ($n_sroa_1_4_extract_trunc << $89 | $n_sroa_0_0_extract_trunc >>> ($95 >>> 0)) & $92 | $n_sroa_0_0_extract_trunc << $91 & $88 - 33 >> 31; - break; - } - if (($rem | 0) != 0) { - HEAP32[$rem >> 2] = $66 & $n_sroa_0_0_extract_trunc; - HEAP32[$rem + 4 >> 2] = 0; - } - if (($d_sroa_0_0_extract_trunc | 0) == 1) { - $_0$1 = $n_sroa_1_4_extract_shift$0 | $a$1 & 0; - $_0$0 = 0 | $a$0 & -1; - return (tempRet0 = $_0$1, $_0$0) | 0; - } else { - $78 = _llvm_cttz_i32($d_sroa_0_0_extract_trunc | 0) | 0; - $_0$1 = 0 | $n_sroa_1_4_extract_trunc >>> ($78 >>> 0); - $_0$0 = $n_sroa_1_4_extract_trunc << 32 - $78 | $n_sroa_0_0_extract_trunc >>> ($78 >>> 0) | 0; - return (tempRet0 = $_0$1, $_0$0) | 0; - } - } - } while (0); - if (($sr_1_ph | 0) == 0) { - $q_sroa_1_1_lcssa = $q_sroa_1_1_ph; - $q_sroa_0_1_lcssa = $q_sroa_0_1_ph; - $r_sroa_1_1_lcssa = $r_sroa_1_1_ph; - $r_sroa_0_1_lcssa = $r_sroa_0_1_ph; - $carry_0_lcssa$1 = 0; - $carry_0_lcssa$0 = 0; - } else { - $d_sroa_0_0_insert_insert99$0 = 0 | $b$0 & -1; - $d_sroa_0_0_insert_insert99$1 = $d_sroa_1_4_extract_shift$0 | $b$1 & 0; - $137$0 = _i64Add($d_sroa_0_0_insert_insert99$0 | 0, $d_sroa_0_0_insert_insert99$1 | 0, -1, -1) | 0; - $137$1 = tempRet0; - $q_sroa_1_1198 = $q_sroa_1_1_ph; - $q_sroa_0_1199 = $q_sroa_0_1_ph; - $r_sroa_1_1200 = $r_sroa_1_1_ph; - $r_sroa_0_1201 = $r_sroa_0_1_ph; - $sr_1202 = $sr_1_ph; - $carry_0203 = 0; - while (1) { - $147 = $q_sroa_0_1199 >>> 31 | $q_sroa_1_1198 << 1; - $149 = $carry_0203 | $q_sroa_0_1199 << 1; - $r_sroa_0_0_insert_insert42$0 = 0 | ($r_sroa_0_1201 << 1 | $q_sroa_1_1198 >>> 31); - $r_sroa_0_0_insert_insert42$1 = $r_sroa_0_1201 >>> 31 | $r_sroa_1_1200 << 1 | 0; - _i64Subtract($137$0, $137$1, $r_sroa_0_0_insert_insert42$0, $r_sroa_0_0_insert_insert42$1) | 0; - $150$1 = tempRet0; - $151$0 = $150$1 >> 31 | (($150$1 | 0) < 0 ? -1 : 0) << 1; - $152 = $151$0 & 1; - $154$0 = _i64Subtract($r_sroa_0_0_insert_insert42$0, $r_sroa_0_0_insert_insert42$1, $151$0 & $d_sroa_0_0_insert_insert99$0, ((($150$1 | 0) < 0 ? -1 : 0) >> 31 | (($150$1 | 0) < 0 ? -1 : 0) << 1) & $d_sroa_0_0_insert_insert99$1) | 0; - $r_sroa_0_0_extract_trunc = $154$0; - $r_sroa_1_4_extract_trunc = tempRet0; - $155 = $sr_1202 - 1 | 0; - if (($155 | 0) == 0) { - break; - } else { - $q_sroa_1_1198 = $147; - $q_sroa_0_1199 = $149; - $r_sroa_1_1200 = $r_sroa_1_4_extract_trunc; - $r_sroa_0_1201 = $r_sroa_0_0_extract_trunc; - $sr_1202 = $155; - $carry_0203 = $152; - } - } - $q_sroa_1_1_lcssa = $147; - $q_sroa_0_1_lcssa = $149; - $r_sroa_1_1_lcssa = $r_sroa_1_4_extract_trunc; - $r_sroa_0_1_lcssa = $r_sroa_0_0_extract_trunc; - $carry_0_lcssa$1 = 0; - $carry_0_lcssa$0 = $152; - } - $q_sroa_0_0_insert_ext75$0 = $q_sroa_0_1_lcssa; - $q_sroa_0_0_insert_ext75$1 = 0; - $q_sroa_0_0_insert_insert77$1 = $q_sroa_1_1_lcssa | $q_sroa_0_0_insert_ext75$1; - if (($rem | 0) != 0) { - HEAP32[$rem >> 2] = 0 | $r_sroa_0_1_lcssa; - HEAP32[$rem + 4 >> 2] = $r_sroa_1_1_lcssa | 0; - } - $_0$1 = (0 | $q_sroa_0_0_insert_ext75$0) >>> 31 | $q_sroa_0_0_insert_insert77$1 << 1 | ($q_sroa_0_0_insert_ext75$1 << 1 | $q_sroa_0_0_insert_ext75$0 >>> 31) & 0 | $carry_0_lcssa$1; - $_0$0 = ($q_sroa_0_0_insert_ext75$0 << 1 | 0 >>> 31) & -2 | $carry_0_lcssa$0; - return (tempRet0 = $_0$1, $_0$0) | 0; -} -// ======================================================================= - - - - -function dynCall_ii(index,a1) { - index = index|0; - a1=a1|0; - return FUNCTION_TABLE_ii[index&1](a1|0)|0; -} - - -function dynCall_iiii(index,a1,a2,a3) { - index = index|0; - a1=a1|0; a2=a2|0; a3=a3|0; - return FUNCTION_TABLE_iiii[index&7](a1|0,a2|0,a3|0)|0; -} - - -function dynCall_vi(index,a1) { - index = index|0; - a1=a1|0; - FUNCTION_TABLE_vi[index&7](a1|0); -} - -function b0(p0) { - p0 = p0|0; nullFunc_ii(0);return 0; -} -function b1(p0,p1,p2) { - p0 = p0|0;p1 = p1|0;p2 = p2|0; nullFunc_iiii(1);return 0; -} -function b2(p0) { - p0 = p0|0; nullFunc_vi(2); -} - -// EMSCRIPTEN_END_FUNCS -var FUNCTION_TABLE_ii = [b0,___stdio_close]; -var FUNCTION_TABLE_iiii = [b1,b1,___stdout_write,___stdio_seek,___stdio_write,b1,b1,b1]; -var FUNCTION_TABLE_vi = [b2,b2,b2,b2,b2,_cleanup,b2,b2]; - - return { _i64Subtract: _i64Subtract, _free: _free, _main: _main, _i64Add: _i64Add, _memset: _memset, _malloc: _malloc, _memcpy: _memcpy, _bitshift64Lshr: _bitshift64Lshr, _fflush: _fflush, ___errno_location: ___errno_location, _bitshift64Shl: _bitshift64Shl, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setThrew: setThrew, setTempRet0: setTempRet0, getTempRet0: getTempRet0, dynCall_ii: dynCall_ii, dynCall_iiii: dynCall_iiii, dynCall_vi: dynCall_vi, ___udivmoddi4: ___udivmoddi4 }; -}) -; diff -Nru binaryen-91/test/emcc_hello_world.fromasm binaryen-99/test/emcc_hello_world.fromasm --- binaryen-91/test/emcc_hello_world.fromasm 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/emcc_hello_world.fromasm 1970-01-01 00:00:00.000000000 +0000 @@ -1,14980 +0,0 @@ -(module - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) - (import "env" "memory" (memory $memory 256 256)) - (data (i32.const 1024) "emcc_hello_world.asm.js") - (import "env" "table" (table $table 18 18 funcref)) - (elem (global.get $__table_base) $b0 $___stdio_close $b1 $b1 $___stdout_write $___stdio_seek $___stdio_write $b1 $b1 $b1 $b2 $b2 $b2 $b2 $b2 $_cleanup $b2 $b2) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) - (import "env" "abort" (func $abort)) - (import "env" "nullFunc_ii" (func $nullFunc_ii (param i32))) - (import "env" "nullFunc_iiii" (func $nullFunc_iiii (param i32))) - (import "env" "nullFunc_vi" (func $nullFunc_vi (param i32))) - (import "env" "_pthread_cleanup_pop" (func $_pthread_cleanup_pop (param i32))) - (import "env" "___lock" (func $___lock (param i32))) - (import "env" "_pthread_self" (func $_pthread_self (result i32))) - (import "env" "_abort" (func $_abort)) - (import "env" "___syscall6" (func $___syscall6 (param i32 i32) (result i32))) - (import "env" "_sbrk" (func $_sbrk (param i32) (result i32))) - (import "env" "_time" (func $_time (param i32) (result i32))) - (import "env" "_emscripten_memcpy_big" (func $_emscripten_memcpy_big (param i32 i32 i32) (result i32))) - (import "env" "___syscall54" (func $___syscall54 (param i32 i32) (result i32))) - (import "env" "___unlock" (func $___unlock (param i32))) - (import "env" "___syscall140" (func $___syscall140 (param i32 i32) (result i32))) - (import "env" "_pthread_cleanup_push" (func $_pthread_cleanup_push (param i32 i32))) - (import "env" "_sysconf" (func $_sysconf (param i32) (result i32))) - (import "env" "___syscall146" (func $___syscall146 (param i32 i32) (result i32))) - (import "asm2wasm" "f64-to-int" (func $f64-to-int (param f64) (result i32))) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (global $STACK_MAX (mut i32) (global.get $STACK_MAX$asm2wasm$import)) - (global $__THREW__ (mut i32) (i32.const 0)) - (global $threwValue (mut i32) (i32.const 0)) - (global $tempRet0 (mut i32) (i32.const 0)) - (export "_i64Subtract" (func $_i64Subtract)) - (export "_free" (func $_free)) - (export "_main" (func $_main)) - (export "_i64Add" (func $_i64Add)) - (export "_memset" (func $_memset)) - (export "_malloc" (func $_malloc)) - (export "_memcpy" (func $_memcpy)) - (export "_bitshift64Lshr" (func $_bitshift64Lshr)) - (export "_fflush" (func $_fflush)) - (export "___errno_location" (func $___errno_location)) - (export "_bitshift64Shl" (func $_bitshift64Shl)) - (export "runPostSets" (func $runPostSets)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackSave" (func $stackSave)) - (export "stackRestore" (func $stackRestore)) - (export "establishStackSpace" (func $establishStackSpace)) - (export "setThrew" (func $setThrew)) - (export "setTempRet0" (func $setTempRet0)) - (export "getTempRet0" (func $getTempRet0)) - (export "dynCall_ii" (func $dynCall_ii)) - (export "dynCall_iiii" (func $dynCall_iiii)) - (export "dynCall_vi" (func $dynCall_vi)) - (export "___udivmoddi4" (func $___udivmoddi4)) - (func $stackAlloc (; 19 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local.set $1 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (local.get $0) - (global.get $STACKTOP) - ) - ) - (global.set $STACKTOP - (i32.and - (i32.add - (global.get $STACKTOP) - (i32.const 15) - ) - (i32.const -16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.get $1) - ) - (func $stackSave (; 20 ;) (; has Stack IR ;) (result i32) - (global.get $STACKTOP) - ) - (func $stackRestore (; 21 ;) (; has Stack IR ;) (param $0 i32) - (global.set $STACKTOP - (local.get $0) - ) - ) - (func $establishStackSpace (; 22 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (global.set $STACKTOP - (local.get $0) - ) - (global.set $STACK_MAX - (local.get $1) - ) - ) - (func $setThrew (; 23 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (if - (i32.eqz - (global.get $__THREW__) - ) - (block - (global.set $__THREW__ - (local.get $0) - ) - (global.set $threwValue - (local.get $1) - ) - ) - ) - ) - (func $setTempRet0 (; 24 ;) (; has Stack IR ;) (param $0 i32) - (global.set $tempRet0 - (local.get $0) - ) - ) - (func $getTempRet0 (; 25 ;) (; has Stack IR ;) (result i32) - (global.get $tempRet0) - ) - (func $_main (; 26 ;) (; has Stack IR ;) (result i32) - (local $0 i32) - (local.set $0 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (call $_printf - (local.get $0) - ) - (global.set $STACKTOP - (local.get $0) - ) - (i32.const 0) - ) - (func $_frexp (; 27 ;) (; has Stack IR ;) (param $0 f64) (param $1 i32) (result f64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (f64.store - (global.get $tempDoublePtr$asm2wasm$import) - (local.get $0) - ) - (block $switch - (block $switch-default - (if - (local.tee $5 - (local.tee $4 - (i32.and - (call $_bitshift64Lshr - (local.tee $2 - (i32.load - (global.get $tempDoublePtr$asm2wasm$import) - ) - ) - (local.tee $3 - (i32.load offset=4 - (global.get $tempDoublePtr$asm2wasm$import) - ) - ) - (i32.const 52) - ) - (i32.const 2047) - ) - ) - ) - (if - (i32.eq - (local.get $5) - (i32.const 2047) - ) - (br $switch) - (br $switch-default) - ) - ) - (i32.store - (local.get $1) - (if (result i32) - (f64.ne - (local.get $0) - (f64.const 0) - ) - (block (result i32) - (local.set $0 - (call $_frexp - (f64.mul - (local.get $0) - (f64.const 18446744073709551615) - ) - (local.get $1) - ) - ) - (i32.add - (i32.load - (local.get $1) - ) - (i32.const -64) - ) - ) - (i32.const 0) - ) - ) - (br $switch) - ) - (i32.store - (local.get $1) - (i32.add - (local.get $4) - (i32.const -1022) - ) - ) - (i32.store - (global.get $tempDoublePtr$asm2wasm$import) - (local.get $2) - ) - (i32.store offset=4 - (global.get $tempDoublePtr$asm2wasm$import) - (i32.or - (i32.and - (local.get $3) - (i32.const -2146435073) - ) - (i32.const 1071644672) - ) - ) - (local.set $0 - (f64.load - (global.get $tempDoublePtr$asm2wasm$import) - ) - ) - ) - (local.get $0) - ) - (func $_strerror (; 28 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (block $__rjto$1 - (block $__rjti$1 - (loop $while-in - (if - (i32.ne - (i32.load8_u offset=687 - (local.get $1) - ) - (local.get $0) - ) - (block - (br_if $while-in - (i32.ne - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.const 87) - ) - ) - (local.set $1 - (i32.const 87) - ) - (br $__rjti$1) - ) - ) - ) - (br_if $__rjti$1 - (local.get $1) - ) - (local.set $0 - (i32.const 775) - ) - (br $__rjto$1) - ) - (local.set $0 - (i32.const 775) - ) - (loop $while-in1 - (local.set $0 - (loop $while-in3 (result i32) - (local.set $2 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (if (result i32) - (i32.load8_s - (local.get $0) - ) - (block - (local.set $0 - (local.get $2) - ) - (br $while-in3) - ) - (local.get $2) - ) - ) - ) - (br_if $while-in1 - (local.tee $1 - (i32.add - (local.get $1) - (i32.const -1) - ) - ) - ) - ) - ) - (local.get $0) - ) - (func $___errno_location (; 29 ;) (; has Stack IR ;) (result i32) - (if (result i32) - (i32.load - (i32.const 16) - ) - (i32.load offset=60 - (call $_pthread_self) - ) - (i32.const 60) - ) - ) - (func $___stdio_close (; 30 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local.set $1 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (i32.store - (local.get $1) - (i32.load offset=60 - (local.get $0) - ) - ) - (local.set $0 - (call $___syscall_ret - (call $___syscall6 - (i32.const 6) - (local.get $1) - ) - ) - ) - (global.set $STACKTOP - (local.get $1) - ) - (local.get $0) - ) - (func $___stdout_write (; 31 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local.set $4 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 80) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $5 - (i32.add - (local.tee $3 - (local.get $4) - ) - (i32.const 12) - ) - ) - (i32.store offset=36 - (local.get $0) - (i32.const 4) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 64) - ) - ) - (block - (i32.store - (local.get $3) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.const 21505) - ) - (i32.store offset=8 - (local.get $3) - (local.get $5) - ) - (if - (call $___syscall54 - (i32.const 54) - (local.get $3) - ) - (i32.store8 offset=75 - (local.get $0) - (i32.const -1) - ) - ) - ) - ) - (local.set $0 - (call $___stdio_write - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - (global.set $STACKTOP - (local.get $4) - ) - (local.get $0) - ) - (func $___stdio_seek (; 32 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local.set $3 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 32) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (i32.store - (local.get $3) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.const 0) - ) - (i32.store offset=8 - (local.get $3) - (local.get $1) - ) - (i32.store offset=12 - (local.get $3) - (i32.add - (local.get $3) - (i32.const 20) - ) - ) - (i32.store offset=16 - (local.get $3) - (local.get $2) - ) - (local.set $0 - (if (result i32) - (i32.lt_s - (call $___syscall_ret - (call $___syscall140 - (i32.const 140) - (local.get $3) - ) - ) - (i32.const 0) - ) - (block (result i32) - (i32.store offset=20 - (local.get $3) - (i32.const -1) - ) - (i32.const -1) - ) - (i32.load offset=20 - (local.get $3) - ) - ) - ) - (global.set $STACKTOP - (local.get $3) - ) - (local.get $0) - ) - (func $_fflush (; 33 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (if - (local.get $0) - (local.set $0 - (block $do-once (result i32) - (if - (i32.le_s - (i32.load offset=76 - (local.get $0) - ) - (i32.const -1) - ) - (br $do-once - (call $___fflush_unlocked - (local.get $0) - ) - ) - ) - (call $___fflush_unlocked - (local.get $0) - ) - ) - ) - (block - (local.set $0 - (if (result i32) - (i32.load - (i32.const 12) - ) - (call $_fflush - (i32.load - (i32.const 12) - ) - ) - (i32.const 0) - ) - ) - (call $___lock - (i32.const 44) - ) - (if - (local.tee $1 - (i32.load - (i32.const 40) - ) - ) - (loop $while-in - (drop - (i32.load offset=76 - (local.get $1) - ) - ) - (if - (i32.gt_u - (i32.load offset=20 - (local.get $1) - ) - (i32.load offset=28 - (local.get $1) - ) - ) - (local.set $0 - (i32.or - (call $___fflush_unlocked - (local.get $1) - ) - (local.get $0) - ) - ) - ) - (br_if $while-in - (local.tee $1 - (i32.load offset=56 - (local.get $1) - ) - ) - ) - ) - ) - (call $___unlock - (i32.const 44) - ) - ) - ) - (local.get $0) - ) - (func $_printf (; 34 ;) (; has Stack IR ;) (param $0 i32) - (local $1 i32) - (local.set $1 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (i32.store - (local.get $1) - (local.get $0) - ) - (call $_vfprintf - (i32.load - (i32.const 8) - ) - (local.get $1) - ) - (global.set $STACKTOP - (local.get $1) - ) - ) - (func $___stdio_write (; 35 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local.set $9 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 48) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $7 - (i32.add - (local.get $9) - (i32.const 16) - ) - ) - (i32.store - (local.tee $4 - (i32.add - (local.tee $8 - (local.get $9) - ) - (i32.const 32) - ) - ) - (local.tee $3 - (i32.load offset=28 - (local.get $0) - ) - ) - ) - (i32.store offset=4 - (local.get $4) - (local.tee $3 - (i32.sub - (i32.load offset=20 - (local.get $0) - ) - (local.get $3) - ) - ) - ) - (i32.store offset=8 - (local.get $4) - (local.get $1) - ) - (i32.store offset=12 - (local.get $4) - (local.get $2) - ) - (local.set $1 - (local.get $4) - ) - (local.set $4 - (i32.const 2) - ) - (local.set $10 - (i32.add - (local.get $2) - (local.get $3) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (loop $while-in - (block $__rjti$0 - (if - (i32.load - (i32.const 16) - ) - (block - (call $_pthread_cleanup_push - (i32.const 5) - (local.get $0) - ) - (i32.store - (local.get $8) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $8) - (local.get $1) - ) - (i32.store offset=8 - (local.get $8) - (local.get $4) - ) - (local.set $3 - (call $___syscall_ret - (call $___syscall146 - (i32.const 146) - (local.get $8) - ) - ) - ) - (call $_pthread_cleanup_pop - (i32.const 0) - ) - ) - (block - (i32.store - (local.get $7) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $7) - (local.get $1) - ) - (i32.store offset=8 - (local.get $7) - (local.get $4) - ) - (local.set $3 - (call $___syscall_ret - (call $___syscall146 - (i32.const 146) - (local.get $7) - ) - ) - ) - ) - ) - (br_if $__rjti$0 - (i32.eq - (local.get $3) - (local.get $10) - ) - ) - (br_if $__rjti$1 - (i32.lt_s - (local.get $3) - (i32.const 0) - ) - ) - (local.set $5 - (if (result i32) - (i32.gt_u - (local.get $3) - (local.tee $5 - (i32.load offset=4 - (local.get $1) - ) - ) - ) - (block (result i32) - (i32.store offset=28 - (local.get $0) - (local.tee $6 - (i32.load offset=44 - (local.get $0) - ) - ) - ) - (i32.store offset=20 - (local.get $0) - (local.get $6) - ) - (local.set $6 - (i32.load offset=12 - (local.get $1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (local.set $4 - (i32.add - (local.get $4) - (i32.const -1) - ) - ) - (i32.sub - (local.get $3) - (local.get $5) - ) - ) - (block (result i32) - (if - (i32.eq - (local.get $4) - (i32.const 2) - ) - (block - (i32.store offset=28 - (local.get $0) - (i32.add - (i32.load offset=28 - (local.get $0) - ) - (local.get $3) - ) - ) - (local.set $6 - (local.get $5) - ) - (local.set $4 - (i32.const 2) - ) - ) - (local.set $6 - (local.get $5) - ) - ) - (local.get $3) - ) - ) - ) - (i32.store - (local.get $1) - (i32.add - (i32.load - (local.get $1) - ) - (local.get $5) - ) - ) - (i32.store offset=4 - (local.get $1) - (i32.sub - (local.get $6) - (local.get $5) - ) - ) - (local.set $10 - (i32.sub - (local.get $10) - (local.get $3) - ) - ) - (br $while-in) - ) - ) - (i32.store offset=16 - (local.get $0) - (i32.add - (local.tee $1 - (i32.load offset=44 - (local.get $0) - ) - ) - (i32.load offset=48 - (local.get $0) - ) - ) - ) - (i32.store offset=28 - (local.get $0) - (local.get $1) - ) - (i32.store offset=20 - (local.get $0) - (local.get $1) - ) - (br $__rjto$1) - ) - (i32.store offset=16 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=20 - (local.get $0) - (i32.const 0) - ) - (i32.store - (local.get $0) - (i32.or - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (local.set $2 - (if (result i32) - (i32.eq - (local.get $4) - (i32.const 2) - ) - (i32.const 0) - (i32.sub - (local.get $2) - (i32.load offset=4 - (local.get $1) - ) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $9) - ) - (local.get $2) - ) - (func $_vfprintf (; 36 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local.set $6 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 224) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $3 - (i32.add - (local.get $6) - (i32.const 120) - ) - ) - (local.set $5 - (i32.add - (local.tee $4 - (local.get $6) - ) - (i32.const 136) - ) - ) - (local.set $8 - (i32.add - (local.tee $2 - (local.tee $7 - (i32.add - (local.get $4) - (i32.const 80) - ) - ) - ) - (i32.const 40) - ) - ) - (loop $do-in - (i32.store - (local.get $2) - (i32.const 0) - ) - (br_if $do-in - (i32.lt_s - (local.tee $2 - (i32.add - (local.get $2) - (i32.const 4) - ) - ) - (local.get $8) - ) - ) - ) - (i32.store - (local.get $3) - (i32.load - (local.get $1) - ) - ) - (drop - (if (result i32) - (i32.lt_s - (call $_printf_core - (i32.const 0) - (local.get $3) - (local.get $4) - (local.get $7) - ) - (i32.const 0) - ) - (i32.const -1) - (block (result i32) - (drop - (i32.load offset=76 - (local.get $0) - ) - ) - (local.set $1 - (i32.load - (local.get $0) - ) - ) - (if - (i32.lt_s - (i32.load8_s offset=74 - (local.get $0) - ) - (i32.const 1) - ) - (i32.store - (local.get $0) - (i32.and - (local.get $1) - (i32.const -33) - ) - ) - ) - (if - (i32.load offset=48 - (local.get $0) - ) - (drop - (call $_printf_core - (local.get $0) - (local.get $3) - (local.get $4) - (local.get $7) - ) - ) - (block - (local.set $2 - (i32.load offset=44 - (local.get $0) - ) - ) - (i32.store offset=44 - (local.get $0) - (local.get $5) - ) - (i32.store offset=28 - (local.get $0) - (local.get $5) - ) - (i32.store offset=20 - (local.get $0) - (local.get $5) - ) - (i32.store offset=48 - (local.get $0) - (i32.const 80) - ) - (i32.store offset=16 - (local.get $0) - (i32.add - (local.get $5) - (i32.const 80) - ) - ) - (drop - (call $_printf_core - (local.get $0) - (local.get $3) - (local.get $4) - (local.get $7) - ) - ) - (if - (local.get $2) - (block - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $0) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (drop - (i32.load offset=20 - (local.get $0) - ) - ) - (i32.store offset=44 - (local.get $0) - (local.get $2) - ) - (i32.store offset=48 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=20 - (local.get $0) - (i32.const 0) - ) - ) - ) - ) - ) - (i32.store - (local.get $0) - (i32.or - (i32.load - (local.get $0) - ) - (i32.and - (local.get $1) - (i32.const 32) - ) - ) - ) - (i32.const 0) - ) - ) - ) - (global.set $STACKTOP - (local.get $6) - ) - ) - (func $___fwritex (; 37 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (block $label$break$L5 - (block $__rjti$0 - (br_if $__rjti$0 - (local.tee $3 - (i32.load offset=16 - (local.get $2) - ) - ) - ) - (if - (i32.eqz - (call $___towrite - (local.get $2) - ) - ) - (block - (local.set $3 - (i32.load offset=16 - (local.get $2) - ) - ) - (br $__rjti$0) - ) - ) - (br $label$break$L5) - ) - (if - (i32.lt_u - (i32.sub - (local.get $3) - (local.tee $4 - (i32.load offset=20 - (local.get $2) - ) - ) - ) - (local.get $1) - ) - (block - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $2) - (local.get $0) - (local.get $1) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $2) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (br $label$break$L5) - ) - ) - (drop - (if (result i32) - (i32.gt_s - (i32.load8_s offset=75 - (local.get $2) - ) - (i32.const -1) - ) - (block $label$break$L10 (result i32) - (local.set $3 - (local.get $1) - ) - (loop $while-in - (drop - (br_if $label$break$L10 - (i32.const 0) - (i32.eqz - (local.get $3) - ) - ) - ) - (if - (i32.ne - (i32.load8_s - (i32.add - (local.get $0) - (local.tee $5 - (i32.add - (local.get $3) - (i32.const -1) - ) - ) - ) - ) - (i32.const 10) - ) - (block - (local.set $3 - (local.get $5) - ) - (br $while-in) - ) - ) - ) - (br_if $label$break$L5 - (i32.lt_u - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $2) - (local.get $0) - (local.get $3) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $2) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - (local.get $3) - ) - ) - (local.set $4 - (i32.load offset=20 - (local.get $2) - ) - ) - (local.set $1 - (i32.sub - (local.get $1) - (local.get $3) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (local.get $3) - ) - ) - (i32.const 0) - ) - (i32.const 0) - ) - ) - (drop - (call $_memcpy - (local.get $4) - (local.get $0) - (local.get $1) - ) - ) - (i32.store offset=20 - (local.get $2) - (i32.add - (i32.load offset=20 - (local.get $2) - ) - (local.get $1) - ) - ) - ) - ) - (func $___towrite (; 38 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (i32.store8 offset=74 - (local.get $0) - (i32.or - (local.tee $1 - (i32.load8_s offset=74 - (local.get $0) - ) - ) - (i32.add - (local.get $1) - (i32.const 255) - ) - ) - ) - (if (result i32) - (i32.and - (local.tee $1 - (i32.load - (local.get $0) - ) - ) - (i32.const 8) - ) - (block (result i32) - (i32.store - (local.get $0) - (i32.or - (local.get $1) - (i32.const 32) - ) - ) - (i32.const -1) - ) - (block (result i32) - (i32.store offset=8 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (local.tee $1 - (i32.load offset=44 - (local.get $0) - ) - ) - ) - (i32.store offset=20 - (local.get $0) - (local.get $1) - ) - (i32.store offset=16 - (local.get $0) - (i32.add - (local.get $1) - (i32.load offset=48 - (local.get $0) - ) - ) - ) - (i32.const 0) - ) - ) - ) - (func $_wcrtomb (; 39 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (local.get $0) - (block $do-once (result i32) - (if - (i32.lt_u - (local.get $1) - (i32.const 128) - ) - (block - (i32.store8 - (local.get $0) - (local.get $1) - ) - (br $do-once - (i32.const 1) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (i32.const 2048) - ) - (block - (i32.store8 - (local.get $0) - (i32.or - (i32.shr_u - (local.get $1) - (i32.const 6) - ) - (i32.const 192) - ) - ) - (i32.store8 offset=1 - (local.get $0) - (i32.or - (i32.and - (local.get $1) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (br $do-once - (i32.const 2) - ) - ) - ) - (if - (i32.or - (i32.eq - (i32.and - (local.get $1) - (i32.const -8192) - ) - (i32.const 57344) - ) - (i32.lt_u - (local.get $1) - (i32.const 55296) - ) - ) - (block - (i32.store8 - (local.get $0) - (i32.or - (i32.shr_u - (local.get $1) - (i32.const 12) - ) - (i32.const 224) - ) - ) - (i32.store8 offset=1 - (local.get $0) - (i32.or - (i32.and - (i32.shr_u - (local.get $1) - (i32.const 6) - ) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.store8 offset=2 - (local.get $0) - (i32.or - (i32.and - (local.get $1) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (br $do-once - (i32.const 3) - ) - ) - ) - (if (result i32) - (i32.lt_u - (i32.add - (local.get $1) - (i32.const -65536) - ) - (i32.const 1048576) - ) - (block (result i32) - (i32.store8 - (local.get $0) - (i32.or - (i32.shr_u - (local.get $1) - (i32.const 18) - ) - (i32.const 240) - ) - ) - (i32.store8 offset=1 - (local.get $0) - (i32.or - (i32.and - (i32.shr_u - (local.get $1) - (i32.const 12) - ) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.store8 offset=2 - (local.get $0) - (i32.or - (i32.and - (i32.shr_u - (local.get $1) - (i32.const 6) - ) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.store8 offset=3 - (local.get $0) - (i32.or - (i32.and - (local.get $1) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.const 4) - ) - (block (result i32) - (i32.store - (call $___errno_location) - (i32.const 84) - ) - (i32.const -1) - ) - ) - ) - (i32.const 1) - ) - ) - (func $_wctomb (; 40 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (local.get $0) - (call $_wcrtomb - (local.get $0) - (local.get $1) - ) - (i32.const 0) - ) - ) - (func $_memchr (; 41 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (block $label$break$L8 - (block $__rjti$2 - (if - (i32.and - (local.tee $3 - (i32.ne - (local.get $1) - (i32.const 0) - ) - ) - (i32.ne - (i32.and - (local.get $0) - (i32.const 3) - ) - (i32.const 0) - ) - ) - (block - (local.set $2 - (local.get $1) - ) - (local.set $1 - (local.get $0) - ) - (loop $while-in - (br_if $__rjti$2 - (i32.eqz - (i32.load8_u - (local.get $1) - ) - ) - ) - (br_if $while-in - (i32.and - (local.tee $0 - (i32.ne - (local.tee $2 - (i32.add - (local.get $2) - (i32.const -1) - ) - ) - (i32.const 0) - ) - ) - (i32.ne - (i32.and - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.const 3) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (block - (local.set $2 - (local.get $1) - ) - (local.set $1 - (local.get $0) - ) - (local.set $0 - (local.get $3) - ) - ) - ) - (br_if $__rjti$2 - (local.get $0) - ) - (local.set $0 - (i32.const 0) - ) - (br $label$break$L8) - ) - (local.set $0 - (local.get $2) - ) - (if - (i32.load8_u - (local.get $1) - ) - (block - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.le_u - (local.get $0) - (i32.const 3) - ) - ) - (loop $while-in3 - (if - (i32.eqz - (i32.and - (i32.xor - (i32.and - (local.tee $2 - (i32.load - (local.get $1) - ) - ) - (i32.const -2139062144) - ) - (i32.const -2139062144) - ) - (i32.add - (local.get $2) - (i32.const -16843009) - ) - ) - ) - (block - (local.set $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (br_if $while-in3 - (i32.gt_u - (local.tee $0 - (i32.add - (local.get $0) - (i32.const -4) - ) - ) - (i32.const 3) - ) - ) - (br $__rjti$0) - ) - ) - ) - (br $__rjto$0) - ) - (if - (i32.eqz - (local.get $0) - ) - (block - (local.set $0 - (i32.const 0) - ) - (br $label$break$L8) - ) - ) - ) - (local.set $0 - (loop $while-in5 (result i32) - (br_if $label$break$L8 - (i32.eqz - (i32.load8_u - (local.get $1) - ) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (br_if $while-in5 - (local.tee $0 - (i32.add - (local.get $0) - (i32.const -1) - ) - ) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (select - (local.get $1) - (i32.const 0) - (local.get $0) - ) - ) - (func $___syscall_ret (; 42 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (if - (i32.gt_u - (local.get $0) - (i32.const -4096) - ) - (block - (i32.store - (call $___errno_location) - (i32.sub - (i32.const 0) - (local.get $0) - ) - ) - (local.set $0 - (i32.const -1) - ) - ) - ) - (local.get $0) - ) - (func $___fflush_unlocked (; 43 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (block $__rjto$0 (result i32) - (block $__rjti$0 - (br_if $__rjti$0 - (i32.le_u - (i32.load offset=20 - (local.get $0) - ) - (i32.load offset=28 - (local.get $0) - ) - ) - ) - (local.set $1 - (i32.load offset=36 - (local.get $0) - ) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (local.get $1) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (br_if $__rjti$0 - (i32.load offset=20 - (local.get $0) - ) - ) - (br $__rjto$0 - (i32.const -1) - ) - ) - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=4 - (local.get $0) - ) - ) - (local.tee $2 - (i32.load offset=8 - (local.get $0) - ) - ) - ) - (block - (local.set $3 - (i32.load offset=40 - (local.get $0) - ) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (i32.sub - (local.get $1) - (local.get $2) - ) - (i32.const 1) - (i32.add - (i32.and - (local.get $3) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (i32.store offset=16 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=20 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=8 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.const 0) - ) - (i32.const 0) - ) - ) - (func $_cleanup (; 44 ;) (; has Stack IR ;) (param $0 i32) - (drop - (i32.load offset=68 - (local.get $0) - ) - ) - ) - (func $i32s-div (; 45 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (local.get $1) - (if (result i32) - (i32.and - (i32.eq - (local.get $0) - (i32.const -2147483648) - ) - (i32.eq - (local.get $1) - (i32.const -1) - ) - ) - (i32.const 0) - (i32.div_s - (local.get $0) - (local.get $1) - ) - ) - (i32.const 0) - ) - ) - (func $i32u-rem (; 46 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (local.get $1) - (i32.rem_u - (local.get $0) - (local.get $1) - ) - (i32.const 0) - ) - ) - (func $i32u-div (; 47 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (local.get $1) - (i32.div_u - (local.get $0) - (local.get $1) - ) - (i32.const 0) - ) - ) - (func $_printf_core (; 48 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 f64) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 f64) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i32) - (local $44 i32) - (local $45 i32) - (local $46 i32) - (local $47 i32) - (local $48 i32) - (local $49 i32) - (local $50 i32) - (local.set $4 - (i32.const 672) - ) - (local.set $29 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 624) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $20 - (i32.add - (local.get $29) - (i32.const 16) - ) - ) - (local.set $43 - (i32.add - (local.tee $13 - (local.get $29) - ) - (i32.const 8) - ) - ) - (local.set $35 - (i32.add - (local.get $13) - (i32.const 528) - ) - ) - (local.set $30 - (i32.ne - (local.get $0) - (i32.const 0) - ) - ) - (local.set $39 - (local.tee $24 - (i32.add - (local.tee $5 - (i32.add - (local.get $13) - (i32.const 536) - ) - ) - (i32.const 40) - ) - ) - ) - (local.set $40 - (i32.add - (local.get $5) - (i32.const 39) - ) - ) - (local.set $33 - (i32.add - (local.tee $5 - (i32.add - (local.get $13) - (i32.const 576) - ) - ) - (i32.const 12) - ) - ) - (local.set $41 - (i32.add - (local.get $5) - (i32.const 11) - ) - ) - (local.set $44 - (i32.sub - (local.tee $28 - (local.get $33) - ) - (local.tee $36 - (local.tee $21 - (i32.add - (local.get $13) - (i32.const 588) - ) - ) - ) - ) - ) - (local.set $45 - (i32.sub - (i32.const -2) - (local.get $36) - ) - ) - (local.set $46 - (i32.add - (local.get $28) - (i32.const 2) - ) - ) - (local.set $48 - (i32.add - (local.tee $47 - (i32.add - (local.get $13) - (i32.const 24) - ) - ) - (i32.const 288) - ) - ) - (local.set $42 - (local.tee $31 - (i32.add - (local.get $21) - (i32.const 9) - ) - ) - ) - (local.set $34 - (i32.add - (local.get $21) - (i32.const 8) - ) - ) - (block $label$break$L343 - (block $__rjti$9 - (loop $label$continue$L1 - (block $label$break$L1 - (if - (i32.gt_s - (local.get $16) - (i32.const -1) - ) - (local.set $16 - (if (result i32) - (i32.gt_s - (local.get $9) - (i32.sub - (i32.const 2147483647) - (local.get $16) - ) - ) - (block (result i32) - (i32.store - (call $___errno_location) - (i32.const 75) - ) - (i32.const -1) - ) - (i32.add - (local.get $9) - (local.get $16) - ) - ) - ) - ) - (br_if $__rjti$9 - (i32.eqz - (local.tee $6 - (i32.load8_s - (local.get $4) - ) - ) - ) - ) - (local.set $9 - (local.get $4) - ) - (block $label$break$L12 - (block $__rjti$1 - (loop $label$continue$L9 - (block $label$break$L9 - (block $switch - (if - (local.tee $5 - (i32.shr_s - (i32.shl - (local.get $6) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (block - (br_if $switch - (i32.ne - (local.get $5) - (i32.const 37) - ) - ) - (local.set $5 - (local.get $9) - ) - (br $__rjti$1) - ) - ) - (local.set $5 - (local.get $9) - ) - (br $label$break$L9) - ) - (local.set $6 - (i32.load8_s - (local.tee $9 - (i32.add - (local.get $9) - (i32.const 1) - ) - ) - ) - ) - (br $label$continue$L9) - ) - ) - (br $label$break$L12) - ) - (loop $while-in - (br_if $label$break$L12 - (i32.ne - (i32.load8_s offset=1 - (local.get $5) - ) - (i32.const 37) - ) - ) - (local.set $9 - (i32.add - (local.get $9) - (i32.const 1) - ) - ) - (br_if $while-in - (i32.eq - (i32.load8_s - (local.tee $5 - (i32.add - (local.get $5) - (i32.const 2) - ) - ) - ) - (i32.const 37) - ) - ) - ) - ) - (local.set $6 - (i32.sub - (local.get $9) - (local.get $4) - ) - ) - (if - (local.get $30) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $4) - (local.get $6) - (local.get $0) - ) - ) - ) - (if - (i32.ne - (local.get $4) - (local.get $9) - ) - (block - (local.set $4 - (local.get $5) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - ) - (local.set $10 - (if (result i32) - (i32.lt_u - (local.tee $7 - (i32.add - (local.tee $11 - (i32.load8_s - (local.tee $9 - (i32.add - (local.get $5) - (i32.const 1) - ) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (block (result i32) - (local.set $5 - (i32.load8_s - (local.tee $9 - (select - (i32.add - (local.get $5) - (i32.const 3) - ) - (local.get $9) - (local.tee $11 - (i32.eq - (i32.load8_s offset=2 - (local.get $5) - ) - (i32.const 36) - ) - ) - ) - ) - ) - ) - (local.set $18 - (select - (local.get $7) - (i32.const -1) - (local.get $11) - ) - ) - (select - (i32.const 1) - (local.get $25) - (local.get $11) - ) - ) - (block (result i32) - (local.set $5 - (local.get $11) - ) - (local.set $18 - (i32.const -1) - ) - (local.get $25) - ) - ) - ) - (local.set $8 - (if (result i32) - (i32.eq - (i32.and - (local.tee $11 - (i32.shr_s - (i32.shl - (local.get $5) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (i32.const -32) - ) - (i32.const 32) - ) - (block $label$break$L25 (result i32) - (local.set $25 - (local.get $5) - ) - (local.set $5 - (local.get $11) - ) - (local.set $11 - (i32.const 0) - ) - (loop $while-in4 (result i32) - (if - (i32.eqz - (i32.and - (i32.shl - (i32.const 1) - (i32.add - (local.get $5) - (i32.const -32) - ) - ) - (i32.const 75913) - ) - ) - (block - (local.set $5 - (local.get $25) - ) - (br $label$break$L25 - (local.get $11) - ) - ) - ) - (local.set $11 - (i32.or - (local.get $11) - (i32.shl - (i32.const 1) - (i32.add - (i32.shr_s - (i32.shl - (local.get $25) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -32) - ) - ) - ) - ) - (br_if $while-in4 - (i32.eq - (i32.and - (local.tee $5 - (local.tee $25 - (i32.load8_s - (local.tee $9 - (i32.add - (local.get $9) - (i32.const 1) - ) - ) - ) - ) - ) - (i32.const -32) - ) - (i32.const 32) - ) - ) - (local.set $5 - (local.get $25) - ) - (local.get $11) - ) - ) - (i32.const 0) - ) - ) - (local.set $25 - (if (result i32) - (i32.eq - (i32.and - (local.get $5) - (i32.const 255) - ) - (i32.const 42) - ) - (block $do-once5 (result i32) - (local.set $9 - (block $__rjto$0 (result i32) - (block $__rjti$0 - (br_if $__rjti$0 - (i32.ge_u - (local.tee $11 - (i32.add - (i32.load8_s - (local.tee $5 - (i32.add - (local.get $9) - (i32.const 1) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - ) - (br_if $__rjti$0 - (i32.ne - (i32.load8_s offset=2 - (local.get $9) - ) - (i32.const 36) - ) - ) - (i32.store - (i32.add - (i32.shl - (local.get $11) - (i32.const 2) - ) - (local.get $3) - ) - (i32.const 10) - ) - (drop - (i32.load offset=4 - (local.tee $5 - (i32.add - (i32.shl - (i32.add - (i32.load8_s - (local.get $5) - ) - (i32.const -48) - ) - (i32.const 3) - ) - (local.get $2) - ) - ) - ) - ) - (local.set $7 - (i32.const 1) - ) - (local.set $15 - (i32.load - (local.get $5) - ) - ) - (br $__rjto$0 - (i32.add - (local.get $9) - (i32.const 3) - ) - ) - ) - (if - (local.get $10) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (if - (i32.eqz - (local.get $30) - ) - (block - (local.set $11 - (local.get $8) - ) - (local.set $9 - (local.get $5) - ) - (local.set $15 - (i32.const 0) - ) - (br $do-once5 - (i32.const 0) - ) - ) - ) - (local.set $15 - (i32.load - (local.tee $9 - (i32.and - (i32.add - (i32.load - (local.get $1) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $1) - (i32.add - (local.get $9) - (i32.const 4) - ) - ) - (local.set $7 - (i32.const 0) - ) - (local.get $5) - ) - ) - (local.set $11 - (if (result i32) - (i32.lt_s - (local.get $15) - (i32.const 0) - ) - (block (result i32) - (local.set $15 - (i32.sub - (i32.const 0) - (local.get $15) - ) - ) - (i32.or - (local.get $8) - (i32.const 8192) - ) - ) - (local.get $8) - ) - ) - (local.get $7) - ) - (if (result i32) - (i32.lt_u - (local.tee $5 - (i32.add - (i32.shr_s - (i32.shl - (local.get $5) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (block (result i32) - (local.set $11 - (i32.const 0) - ) - (loop $while-in8 - (local.set $5 - (i32.add - (local.get $5) - (i32.mul - (local.get $11) - (i32.const 10) - ) - ) - ) - (if - (i32.lt_u - (local.tee $7 - (i32.add - (i32.load8_s - (local.tee $9 - (i32.add - (local.get $9) - (i32.const 1) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (block - (local.set $11 - (local.get $5) - ) - (local.set $5 - (local.get $7) - ) - (br $while-in8) - ) - ) - ) - (if (result i32) - (i32.lt_s - (local.get $5) - (i32.const 0) - ) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L1) - ) - (block (result i32) - (local.set $11 - (local.get $8) - ) - (local.set $15 - (local.get $5) - ) - (local.get $10) - ) - ) - ) - (block (result i32) - (local.set $11 - (local.get $8) - ) - (local.set $15 - (i32.const 0) - ) - (local.get $10) - ) - ) - ) - ) - (local.set $5 - (if (result i32) - (i32.eq - (i32.load8_s - (local.get $9) - ) - (i32.const 46) - ) - (block $label$break$L46 (result i32) - (if - (i32.ne - (local.tee $7 - (i32.load8_s - (local.tee $5 - (i32.add - (local.get $9) - (i32.const 1) - ) - ) - ) - ) - (i32.const 42) - ) - (block - (local.set $5 - (if (result i32) - (i32.lt_u - (local.tee $8 - (i32.add - (local.get $7) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (block (result i32) - (local.set $9 - (local.get $5) - ) - (local.set $7 - (i32.const 0) - ) - (local.get $8) - ) - (block - (local.set $9 - (local.get $5) - ) - (br $label$break$L46 - (i32.const 0) - ) - ) - ) - ) - (loop $while-in11 - (drop - (br_if $label$break$L46 - (local.tee $7 - (i32.add - (local.get $5) - (i32.mul - (local.get $7) - (i32.const 10) - ) - ) - ) - (i32.ge_u - (local.tee $5 - (i32.add - (i32.load8_s - (local.tee $9 - (i32.add - (local.get $9) - (i32.const 1) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - ) - ) - (br $while-in11) - ) - ) - ) - (if - (i32.lt_u - (local.tee $7 - (i32.add - (i32.load8_s - (local.tee $5 - (i32.add - (local.get $9) - (i32.const 2) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (if - (i32.eq - (i32.load8_s offset=3 - (local.get $9) - ) - (i32.const 36) - ) - (block - (i32.store - (i32.add - (i32.shl - (local.get $7) - (i32.const 2) - ) - (local.get $3) - ) - (i32.const 10) - ) - (drop - (i32.load offset=4 - (local.tee $5 - (i32.add - (i32.shl - (i32.add - (i32.load8_s - (local.get $5) - ) - (i32.const -48) - ) - (i32.const 3) - ) - (local.get $2) - ) - ) - ) - ) - (local.set $9 - (i32.add - (local.get $9) - (i32.const 4) - ) - ) - (br $label$break$L46 - (i32.load - (local.get $5) - ) - ) - ) - ) - ) - (if - (local.get $25) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (if (result i32) - (local.get $30) - (block (result i32) - (local.set $7 - (i32.load - (local.tee $9 - (i32.and - (i32.add - (i32.load - (local.get $1) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $1) - (i32.add - (local.get $9) - (i32.const 4) - ) - ) - (local.set $9 - (local.get $5) - ) - (local.get $7) - ) - (block (result i32) - (local.set $9 - (local.get $5) - ) - (i32.const 0) - ) - ) - ) - (i32.const -1) - ) - ) - (local.set $7 - (local.get $9) - ) - (local.set $10 - (i32.const 0) - ) - (local.set $17 - (loop $while-in13 (result i32) - (if - (i32.gt_u - (local.tee $8 - (i32.add - (i32.load8_s - (local.get $7) - ) - (i32.const -65) - ) - ) - (i32.const 57) - ) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (local.set $9 - (i32.add - (local.get $7) - (i32.const 1) - ) - ) - (if (result i32) - (i32.lt_u - (i32.add - (local.tee $8 - (i32.and - (local.tee $12 - (i32.load8_s - (i32.add - (local.get $8) - (i32.add - (i32.mul - (local.get $10) - (i32.const 58) - ) - (i32.const 3611) - ) - ) - ) - ) - (i32.const 255) - ) - ) - (i32.const -1) - ) - (i32.const 8) - ) - (block - (local.set $7 - (local.get $9) - ) - (local.set $10 - (local.get $8) - ) - (br $while-in13) - ) - (local.get $7) - ) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $12) - (i32.const 255) - ) - ) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (local.set $7 - (i32.gt_s - (local.get $18) - (i32.const -1) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (if - (i32.eq - (i32.and - (local.get $12) - (i32.const 255) - ) - (i32.const 19) - ) - (if - (local.get $7) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L1) - ) - (br $__rjti$2) - ) - (block - (if - (local.get $7) - (block - (i32.store - (i32.add - (i32.shl - (local.get $18) - (i32.const 2) - ) - (local.get $3) - ) - (local.get $8) - ) - (local.set $8 - (i32.load offset=4 - (local.tee $7 - (i32.add - (i32.shl - (local.get $18) - (i32.const 3) - ) - (local.get $2) - ) - ) - ) - ) - (i32.store - (local.get $13) - (i32.load - (local.get $7) - ) - ) - (i32.store offset=4 - (local.get $13) - (local.get $8) - ) - (br $__rjti$2) - ) - ) - (if - (i32.eqz - (local.get $30) - ) - (block - (local.set $16 - (i32.const 0) - ) - (br $label$break$L1) - ) - ) - (call $_pop_arg_336 - (local.get $13) - (local.get $8) - (local.get $1) - ) - ) - ) - (br $__rjto$2) - ) - (if - (i32.eqz - (local.get $30) - ) - (block - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - ) - ) - (local.set $11 - (select - (local.tee $7 - (i32.and - (local.get $11) - (i32.const -65537) - ) - ) - (local.get $11) - (i32.and - (local.get $11) - (i32.const 8192) - ) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.tee $5 - (select - (local.tee $6 - (i32.add - (local.tee $8 - (select - (local.tee $12 - (i32.sub - (block $__rjto$8 (result i32) - (block $__rjti$8 - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.tee $5 - (block $__rjti$7 (result i32) - (block $__rjti$6 - (block $__rjti$5 - (block $__rjti$4 - (block $__rjti$3 - (block $switch-default120 - (block $switch-case119 - (block $switch-case41 - (block $switch-case40 - (block $switch-case39 - (block $switch-case38 - (block $switch-case37 - (block $switch-case36 - (block $switch-case35 - (block $switch-case33 - (block $switch-case30 - (block $switch-case28 - (block $switch-case27 - (br_table $switch-case119 $switch-default120 $switch-case40 $switch-default120 $switch-case119 $switch-case119 $switch-case119 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case41 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case30 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case119 $switch-default120 $switch-case37 $switch-case35 $switch-case119 $switch-case119 $switch-case119 $switch-default120 $switch-case35 $switch-default120 $switch-default120 $switch-default120 $switch-case38 $switch-case27 $switch-case33 $switch-case28 $switch-default120 $switch-default120 $switch-case39 $switch-default120 $switch-case36 $switch-default120 $switch-default120 $switch-case30 $switch-default120 - (i32.sub - (local.tee $17 - (select - (i32.and - (local.tee $8 - (i32.load8_s - (local.get $17) - ) - ) - (i32.const -33) - ) - (local.get $8) - (i32.and - (i32.eq - (i32.and - (local.get $8) - (i32.const 15) - ) - (i32.const 3) - ) - (i32.ne - (local.get $10) - (i32.const 0) - ) - ) - ) - ) - (i32.const 65) - ) - ) - ) - (block $switch-default26 - (block $switch-case25 - (block $switch-case24 - (block $switch-case23 - (block $switch-case22 - (block $switch-case21 - (block $switch-case20 - (block $switch-case19 - (br_table $switch-case19 $switch-case20 $switch-case21 $switch-case22 $switch-case23 $switch-default26 $switch-case24 $switch-case25 $switch-default26 - (local.get $10) - ) - ) - (i32.store - (i32.load - (local.get $13) - ) - (local.get $16) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (i32.store - (i32.load - (local.get $13) - ) - (local.get $16) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (i32.store - (local.tee $4 - (i32.load - (local.get $13) - ) - ) - (local.get $16) - ) - (i32.store offset=4 - (local.get $4) - (i32.shr_s - (i32.shl - (i32.lt_s - (local.get $16) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (i32.store16 - (i32.load - (local.get $13) - ) - (local.get $16) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (i32.store8 - (i32.load - (local.get $13) - ) - (local.get $16) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (i32.store - (i32.load - (local.get $13) - ) - (local.get $16) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (i32.store - (local.tee $4 - (i32.load - (local.get $13) - ) - ) - (local.get $16) - ) - (i32.store offset=4 - (local.get $4) - (i32.shr_s - (i32.shl - (i32.lt_s - (local.get $16) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (local.set $4 - (i32.or - (local.get $11) - (i32.const 8) - ) - ) - (local.set $5 - (select - (local.get $5) - (i32.const 8) - (i32.gt_u - (local.get $5) - (i32.const 8) - ) - ) - ) - (local.set $17 - (i32.const 120) - ) - (br $__rjti$3) - ) - (local.set $4 - (local.get $11) - ) - (br $__rjti$3) - ) - (if - (i32.or - (local.tee $4 - (i32.load - (local.get $13) - ) - ) - (local.tee $6 - (i32.load offset=4 - (local.get $13) - ) - ) - ) - (block - (local.set $7 - (local.get $24) - ) - (loop $while-in32 - (i32.store8 - (local.tee $7 - (i32.add - (local.get $7) - (i32.const -1) - ) - ) - (i32.or - (i32.and - (local.get $4) - (i32.const 7) - ) - (i32.const 48) - ) - ) - (br_if $while-in32 - (i32.or - (local.tee $4 - (call $_bitshift64Lshr - (local.get $4) - (local.get $6) - (i32.const 3) - ) - ) - (local.tee $6 - (global.get $tempRet0) - ) - ) - ) - ) - ) - (local.set $7 - (local.get $24) - ) - ) - (if - (i32.and - (local.get $11) - (i32.const 8) - ) - (block - (local.set $4 - (local.get $11) - ) - (local.set $5 - (select - (local.tee $11 - (i32.add - (i32.sub - (local.get $39) - (local.tee $6 - (local.get $7) - ) - ) - (i32.const 1) - ) - ) - (local.get $5) - (i32.lt_s - (local.get $5) - (local.get $11) - ) - ) - ) - ) - (block - (local.set $6 - (local.get $7) - ) - (local.set $4 - (local.get $11) - ) - ) - ) - (local.set $7 - (i32.const 0) - ) - (local.set $10 - (i32.const 4091) - ) - (br $__rjti$8) - ) - (local.set $4 - (i32.load - (local.get $13) - ) - ) - (if - (i32.lt_s - (local.tee $6 - (i32.load offset=4 - (local.get $13) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (local.get $13) - (local.tee $4 - (call $_i64Subtract - (i32.const 0) - (i32.const 0) - (local.get $4) - (local.get $6) - ) - ) - ) - (i32.store offset=4 - (local.get $13) - (local.tee $6 - (global.get $tempRet0) - ) - ) - (local.set $7 - (i32.const 1) - ) - (local.set $10 - (i32.const 4091) - ) - (br $__rjti$4) - ) - ) - (local.set $10 - (if (result i32) - (i32.and - (local.get $11) - (i32.const 2048) - ) - (block (result i32) - (local.set $7 - (i32.const 1) - ) - (i32.const 4092) - ) - (block (result i32) - (local.set $7 - (local.tee $8 - (i32.and - (local.get $11) - (i32.const 1) - ) - ) - ) - (select - (i32.const 4093) - (i32.const 4091) - (local.get $8) - ) - ) - ) - ) - (br $__rjti$4) - ) - (local.set $4 - (i32.load - (local.get $13) - ) - ) - (local.set $6 - (i32.load offset=4 - (local.get $13) - ) - ) - (local.set $7 - (i32.const 0) - ) - (local.set $10 - (i32.const 4091) - ) - (br $__rjti$4) - ) - (drop - (i32.load offset=4 - (local.get $13) - ) - ) - (i32.store8 - (local.get $40) - (i32.load - (local.get $13) - ) - ) - (local.set $4 - (local.get $40) - ) - (local.set $11 - (local.get $7) - ) - (local.set $8 - (i32.const 1) - ) - (local.set $7 - (i32.const 0) - ) - (local.set $10 - (i32.const 4091) - ) - (br $__rjto$8 - (local.get $24) - ) - ) - (local.set $6 - (call $_strerror - (i32.load - (call $___errno_location) - ) - ) - ) - (br $__rjti$5) - ) - (local.set $6 - (select - (local.tee $4 - (i32.load - (local.get $13) - ) - ) - (i32.const 4101) - (local.get $4) - ) - ) - (br $__rjti$5) - ) - (drop - (i32.load offset=4 - (local.get $13) - ) - ) - (i32.store offset=8 - (local.get $29) - (i32.load - (local.get $13) - ) - ) - (i32.store offset=12 - (local.get $29) - (i32.const 0) - ) - (i32.store - (local.get $13) - (local.get $43) - ) - (local.set $7 - (i32.const -1) - ) - (br $__rjti$6) - ) - (if - (local.get $5) - (block - (local.set $7 - (local.get $5) - ) - (br $__rjti$6) - ) - (block - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (i32.const 0) - (local.get $11) - ) - (br $__rjti$7 - (i32.const 0) - ) - ) - ) - ) - (local.set $14 - (f64.load - (local.get $13) - ) - ) - (i32.store - (local.get $20) - (i32.const 0) - ) - (f64.store - (global.get $tempDoublePtr$asm2wasm$import) - (local.get $14) - ) - (drop - (i32.load - (global.get $tempDoublePtr$asm2wasm$import) - ) - ) - (local.set $32 - (if (result i32) - (i32.lt_s - (i32.load offset=4 - (global.get $tempDoublePtr$asm2wasm$import) - ) - (i32.const 0) - ) - (block (result i32) - (local.set $26 - (i32.const 1) - ) - (local.set $14 - (f64.neg - (local.get $14) - ) - ) - (i32.const 4108) - ) - (if (result i32) - (i32.and - (local.get $11) - (i32.const 2048) - ) - (block (result i32) - (local.set $26 - (i32.const 1) - ) - (i32.const 4111) - ) - (block (result i32) - (local.set $26 - (local.tee $4 - (i32.and - (local.get $11) - (i32.const 1) - ) - ) - ) - (select - (i32.const 4114) - (i32.const 4109) - (local.get $4) - ) - ) - ) - ) - ) - (f64.store - (global.get $tempDoublePtr$asm2wasm$import) - (local.get $14) - ) - (drop - (i32.load - (global.get $tempDoublePtr$asm2wasm$import) - ) - ) - (local.set $5 - (if (result i32) - (i32.lt_u - (i32.and - (i32.load offset=4 - (global.get $tempDoublePtr$asm2wasm$import) - ) - (i32.const 2146435072) - ) - (i32.const 2146435072) - ) - (block $do-once49 (result i32) - (if - (local.tee $4 - (f64.ne - (local.tee $22 - (f64.mul - (call $_frexp - (local.get $14) - (local.get $20) - ) - (f64.const 2) - ) - ) - (f64.const 0) - ) - ) - (i32.store - (local.get $20) - (i32.add - (i32.load - (local.get $20) - ) - (i32.const -1) - ) - ) - ) - (if - (i32.eq - (local.tee $12 - (i32.or - (local.get $17) - (i32.const 32) - ) - ) - (i32.const 97) - ) - (block - (local.set $8 - (select - (i32.add - (local.get $32) - (i32.const 9) - ) - (local.get $32) - (local.tee $12 - (i32.and - (local.get $17) - (i32.const 32) - ) - ) - ) - ) - (local.set $14 - (if (result f64) - (i32.or - (i32.eqz - (local.tee $4 - (i32.sub - (i32.const 12) - (local.get $5) - ) - ) - ) - (i32.gt_u - (local.get $5) - (i32.const 11) - ) - ) - (local.get $22) - (block (result f64) - (local.set $14 - (f64.const 8) - ) - (loop $while-in54 - (local.set $14 - (f64.mul - (local.get $14) - (f64.const 16) - ) - ) - (br_if $while-in54 - (local.tee $4 - (i32.add - (local.get $4) - (i32.const -1) - ) - ) - ) - ) - (if (result f64) - (i32.eq - (i32.load8_s - (local.get $8) - ) - (i32.const 45) - ) - (f64.neg - (f64.add - (local.get $14) - (f64.sub - (f64.neg - (local.get $22) - ) - (local.get $14) - ) - ) - ) - (f64.sub - (f64.add - (local.get $22) - (local.get $14) - ) - (local.get $14) - ) - ) - ) - ) - ) - (local.set $10 - (i32.or - (local.get $26) - (i32.const 2) - ) - ) - (if - (i32.eq - (local.tee $4 - (call $_fmt_u - (local.tee $4 - (select - (i32.sub - (i32.const 0) - (local.tee $6 - (i32.load - (local.get $20) - ) - ) - ) - (local.get $6) - (i32.lt_s - (local.get $6) - (i32.const 0) - ) - ) - ) - (i32.shr_s - (i32.shl - (i32.lt_s - (local.get $4) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - (local.get $33) - ) - ) - (local.get $33) - ) - (block - (i32.store8 - (local.get $41) - (i32.const 48) - ) - (local.set $4 - (local.get $41) - ) - ) - ) - (i32.store8 - (i32.add - (local.get $4) - (i32.const -1) - ) - (i32.add - (i32.and - (i32.shr_s - (local.get $6) - (i32.const 31) - ) - (i32.const 2) - ) - (i32.const 43) - ) - ) - (i32.store8 - (local.tee $7 - (i32.add - (local.get $4) - (i32.const -2) - ) - ) - (i32.add - (local.get $17) - (i32.const 15) - ) - ) - (local.set $17 - (i32.lt_s - (local.get $5) - (i32.const 1) - ) - ) - (local.set $19 - (i32.eqz - (i32.and - (local.get $11) - (i32.const 8) - ) - ) - ) - (local.set $4 - (local.get $21) - ) - (loop $while-in56 - (i32.store8 - (local.get $4) - (i32.or - (local.get $12) - (i32.load8_u - (i32.add - (local.tee $6 - (call $f64-to-int - (local.get $14) - ) - ) - (i32.const 4075) - ) - ) - ) - ) - (local.set $14 - (f64.mul - (f64.sub - (local.get $14) - (f64.convert_i32_s - (local.get $6) - ) - ) - (f64.const 16) - ) - ) - (local.set $4 - (if (result i32) - (i32.eq - (i32.sub - (local.tee $6 - (i32.add - (local.get $4) - (i32.const 1) - ) - ) - (local.get $36) - ) - (i32.const 1) - ) - (if (result i32) - (i32.and - (i32.and - (f64.eq - (local.get $14) - (f64.const 0) - ) - (local.get $17) - ) - (local.get $19) - ) - (local.get $6) - (block (result i32) - (i32.store8 - (local.get $6) - (i32.const 46) - ) - (i32.add - (local.get $4) - (i32.const 2) - ) - ) - ) - (local.get $6) - ) - ) - (br_if $while-in56 - (f64.ne - (local.get $14) - (f64.const 0) - ) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.tee $5 - (i32.add - (local.get $10) - (local.tee $6 - (select - (i32.sub - (i32.add - (local.get $5) - (local.get $46) - ) - (local.get $7) - ) - (i32.add - (local.get $4) - (i32.sub - (local.get $44) - (local.get $7) - ) - ) - (i32.and - (i32.ne - (local.get $5) - (i32.const 0) - ) - (i32.lt_s - (i32.add - (local.get $4) - (local.get $45) - ) - (local.get $5) - ) - ) - ) - ) - ) - ) - (local.get $11) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $8) - (local.get $10) - (local.get $0) - ) - ) - (call $_pad - (local.get $0) - (i32.const 48) - (local.get $15) - (local.get $5) - (i32.xor - (local.get $11) - (i32.const 65536) - ) - ) - (local.set $4 - (i32.sub - (local.get $4) - (local.get $36) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $21) - (local.get $4) - (local.get $0) - ) - ) - (call $_pad - (local.get $0) - (i32.const 48) - (i32.sub - (local.get $6) - (i32.add - (local.get $4) - (local.tee $6 - (i32.sub - (local.get $28) - (local.get $7) - ) - ) - ) - ) - (i32.const 0) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $7) - (local.get $6) - (local.get $0) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.get $5) - (i32.xor - (local.get $11) - (i32.const 8192) - ) - ) - (br $do-once49 - (select - (local.get $15) - (local.get $5) - (i32.lt_s - (local.get $5) - (local.get $15) - ) - ) - ) - ) - ) - (local.set $14 - (if (result f64) - (local.get $4) - (block (result f64) - (i32.store - (local.get $20) - (local.tee $4 - (i32.add - (i32.load - (local.get $20) - ) - (i32.const -28) - ) - ) - ) - (f64.mul - (local.get $22) - (f64.const 268435456) - ) - ) - (block (result f64) - (local.set $4 - (i32.load - (local.get $20) - ) - ) - (local.get $22) - ) - ) - ) - (local.set $6 - (local.tee $7 - (select - (local.get $47) - (local.get $48) - (i32.lt_s - (local.get $4) - (i32.const 0) - ) - ) - ) - ) - (loop $while-in60 - (i32.store - (local.get $6) - (local.tee $4 - (call $f64-to-int - (local.get $14) - ) - ) - ) - (local.set $6 - (i32.add - (local.get $6) - (i32.const 4) - ) - ) - (br_if $while-in60 - (f64.ne - (local.tee $14 - (f64.mul - (f64.sub - (local.get $14) - (f64.convert_i32_u - (local.get $4) - ) - ) - (f64.const 1e9) - ) - ) - (f64.const 0) - ) - ) - ) - (if - (i32.gt_s - (local.tee $10 - (i32.load - (local.get $20) - ) - ) - (i32.const 0) - ) - (block - (local.set $4 - (local.get $7) - ) - (loop $while-in62 - (local.set $19 - (select - (i32.const 29) - (local.get $10) - (i32.gt_s - (local.get $10) - (i32.const 29) - ) - ) - ) - (if - (i32.ge_u - (local.tee $10 - (i32.add - (local.get $6) - (i32.const -4) - ) - ) - (local.get $4) - ) - (block $do-once63 - (local.set $8 - (i32.const 0) - ) - (loop $while-in66 - (i32.store - (local.get $10) - (call $___uremdi3 - (local.tee $8 - (call $_i64Add - (call $_bitshift64Shl - (i32.load - (local.get $10) - ) - (i32.const 0) - (local.get $19) - ) - (global.get $tempRet0) - (local.get $8) - (i32.const 0) - ) - ) - (local.tee $18 - (global.get $tempRet0) - ) - (i32.const 1000000000) - ) - ) - (local.set $8 - (call $___udivdi3 - (local.get $8) - (local.get $18) - (i32.const 1000000000) - ) - ) - (br_if $while-in66 - (i32.ge_u - (local.tee $10 - (i32.add - (local.get $10) - (i32.const -4) - ) - ) - (local.get $4) - ) - ) - ) - (br_if $do-once63 - (i32.eqz - (local.get $8) - ) - ) - (i32.store - (local.tee $4 - (i32.add - (local.get $4) - (i32.const -4) - ) - ) - (local.get $8) - ) - ) - ) - (loop $while-in68 - (if - (i32.gt_u - (local.get $6) - (local.get $4) - ) - (if - (i32.eqz - (i32.load - (local.tee $8 - (i32.add - (local.get $6) - (i32.const -4) - ) - ) - ) - ) - (block - (local.set $6 - (local.get $8) - ) - (br $while-in68) - ) - ) - ) - ) - (i32.store - (local.get $20) - (local.tee $10 - (i32.sub - (i32.load - (local.get $20) - ) - (local.get $19) - ) - ) - ) - (br_if $while-in62 - (i32.gt_s - (local.get $10) - (i32.const 0) - ) - ) - ) - ) - (local.set $4 - (local.get $7) - ) - ) - (local.set $18 - (select - (i32.const 6) - (local.get $5) - (i32.lt_s - (local.get $5) - (i32.const 0) - ) - ) - ) - (if - (i32.lt_s - (local.get $10) - (i32.const 0) - ) - (block - (local.set $19 - (i32.add - (call $i32s-div - (i32.add - (local.get $18) - (i32.const 25) - ) - (i32.const 9) - ) - (i32.const 1) - ) - ) - (local.set $23 - (i32.eq - (local.get $12) - (i32.const 102) - ) - ) - (local.set $5 - (local.get $4) - ) - (local.set $4 - (local.get $6) - ) - (local.set $4 - (loop $while-in70 (result i32) - (local.set $8 - (select - (i32.const 9) - (local.tee $6 - (i32.sub - (i32.const 0) - (local.get $10) - ) - ) - (i32.gt_s - (local.get $6) - (i32.const 9) - ) - ) - ) - (if - (i32.lt_u - (local.get $5) - (local.get $4) - ) - (block $do-once71 - (local.set $27 - (i32.add - (i32.shl - (i32.const 1) - (local.get $8) - ) - (i32.const -1) - ) - ) - (local.set $37 - (i32.shr_u - (i32.const 1000000000) - (local.get $8) - ) - ) - (local.set $10 - (i32.const 0) - ) - (local.set $6 - (local.get $5) - ) - (loop $while-in74 - (i32.store - (local.get $6) - (i32.add - (local.get $10) - (i32.shr_u - (local.tee $38 - (i32.load - (local.get $6) - ) - ) - (local.get $8) - ) - ) - ) - (local.set $10 - (i32.mul - (i32.and - (local.get $27) - (local.get $38) - ) - (local.get $37) - ) - ) - (br_if $while-in74 - (i32.lt_u - (local.tee $6 - (i32.add - (local.get $6) - (i32.const 4) - ) - ) - (local.get $4) - ) - ) - ) - (local.set $6 - (select - (local.get $5) - (i32.add - (local.get $5) - (i32.const 4) - ) - (i32.load - (local.get $5) - ) - ) - ) - (br_if $do-once71 - (i32.eqz - (local.get $10) - ) - ) - (i32.store - (local.get $4) - (local.get $10) - ) - (local.set $4 - (i32.add - (local.get $4) - (i32.const 4) - ) - ) - ) - (local.set $6 - (select - (local.get $5) - (i32.add - (local.get $5) - (i32.const 4) - ) - (i32.load - (local.get $5) - ) - ) - ) - ) - (local.set $4 - (select - (i32.add - (local.tee $5 - (select - (local.get $7) - (local.get $6) - (local.get $23) - ) - ) - (i32.shl - (local.get $19) - (i32.const 2) - ) - ) - (local.get $4) - (i32.gt_s - (i32.shr_s - (i32.sub - (local.get $4) - (local.get $5) - ) - (i32.const 2) - ) - (local.get $19) - ) - ) - ) - (i32.store - (local.get $20) - (local.tee $10 - (i32.add - (i32.load - (local.get $20) - ) - (local.get $8) - ) - ) - ) - (if (result i32) - (i32.lt_s - (local.get $10) - (i32.const 0) - ) - (block - (local.set $5 - (local.get $6) - ) - (br $while-in70) - ) - (block (result i32) - (local.set $10 - (local.get $4) - ) - (local.get $6) - ) - ) - ) - ) - ) - (local.set $10 - (local.get $6) - ) - ) - (local.set $19 - (local.get $7) - ) - (if - (i32.lt_u - (local.get $4) - (local.get $10) - ) - (block $do-once75 - (local.set $6 - (i32.mul - (i32.shr_s - (i32.sub - (local.get $19) - (local.get $4) - ) - (i32.const 2) - ) - (i32.const 9) - ) - ) - (br_if $do-once75 - (i32.lt_u - (local.tee $8 - (i32.load - (local.get $4) - ) - ) - (i32.const 10) - ) - ) - (local.set $5 - (i32.const 10) - ) - (loop $while-in78 - (local.set $6 - (i32.add - (local.get $6) - (i32.const 1) - ) - ) - (br_if $while-in78 - (i32.ge_u - (local.get $8) - (local.tee $5 - (i32.mul - (local.get $5) - (i32.const 10) - ) - ) - ) - ) - ) - ) - (local.set $6 - (i32.const 0) - ) - ) - (local.set $4 - (if (result i32) - (i32.lt_s - (local.tee $5 - (i32.add - (i32.sub - (local.get $18) - (select - (local.get $6) - (i32.const 0) - (i32.ne - (local.get $12) - (i32.const 102) - ) - ) - ) - (i32.shr_s - (i32.shl - (i32.and - (local.tee $37 - (i32.eq - (local.get $12) - (i32.const 103) - ) - ) - (local.tee $38 - (i32.ne - (local.get $18) - (i32.const 0) - ) - ) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - ) - (i32.add - (i32.mul - (i32.shr_s - (i32.sub - (local.get $10) - (local.get $19) - ) - (i32.const 2) - ) - (i32.const 9) - ) - (i32.const -9) - ) - ) - (block (result i32) - (local.set $12 - (call $i32s-div - (local.tee $5 - (i32.add - (local.get $5) - (i32.const 9216) - ) - ) - (i32.const 9) - ) - ) - (if - (i32.lt_s - (local.tee $5 - (i32.add - (i32.rem_s - (local.get $5) - (i32.const 9) - ) - (i32.const 1) - ) - ) - (i32.const 9) - ) - (block - (local.set $8 - (i32.const 10) - ) - (loop $while-in80 - (local.set $8 - (i32.mul - (local.get $8) - (i32.const 10) - ) - ) - (br_if $while-in80 - (i32.ne - (local.tee $5 - (i32.add - (local.get $5) - (i32.const 1) - ) - ) - (i32.const 9) - ) - ) - ) - ) - (local.set $8 - (i32.const 10) - ) - ) - (local.set $12 - (call $i32u-rem - (local.tee $23 - (i32.load - (local.tee $5 - (i32.add - (i32.add - (i32.shl - (local.get $12) - (i32.const 2) - ) - (local.get $7) - ) - (i32.const -4092) - ) - ) - ) - ) - (local.get $8) - ) - ) - (if - (i32.eqz - (i32.and - (local.tee $27 - (i32.eq - (i32.add - (local.get $5) - (i32.const 4) - ) - (local.get $10) - ) - ) - (i32.eqz - (local.get $12) - ) - ) - ) - (block $do-once81 - (local.set $49 - (call $i32u-div - (local.get $23) - (local.get $8) - ) - ) - (local.set $14 - (if (result f64) - (i32.lt_u - (local.get $12) - (local.tee $50 - (call $i32s-div - (local.get $8) - (i32.const 2) - ) - ) - ) - (f64.const 0.5) - (select - (f64.const 1) - (f64.const 1.5) - (i32.and - (local.get $27) - (i32.eq - (local.get $12) - (local.get $50) - ) - ) - ) - ) - ) - (local.set $22 - (select - (f64.const 9007199254740994) - (f64.const 9007199254740992) - (i32.and - (local.get $49) - (i32.const 1) - ) - ) - ) - (if - (local.get $26) - (if - (i32.eq - (i32.load8_s - (local.get $32) - ) - (i32.const 45) - ) - (block - (local.set $22 - (f64.neg - (local.get $22) - ) - ) - (local.set $14 - (f64.neg - (local.get $14) - ) - ) - ) - ) - ) - (i32.store - (local.get $5) - (local.tee $12 - (i32.sub - (local.get $23) - (local.get $12) - ) - ) - ) - (br_if $do-once81 - (f64.eq - (f64.add - (local.get $22) - (local.get $14) - ) - (local.get $22) - ) - ) - (i32.store - (local.get $5) - (local.tee $6 - (i32.add - (local.get $8) - (local.get $12) - ) - ) - ) - (if - (i32.gt_u - (local.get $6) - (i32.const 999999999) - ) - (loop $while-in86 - (i32.store - (local.get $5) - (i32.const 0) - ) - (if - (i32.lt_u - (local.tee $5 - (i32.add - (local.get $5) - (i32.const -4) - ) - ) - (local.get $4) - ) - (i32.store - (local.tee $4 - (i32.add - (local.get $4) - (i32.const -4) - ) - ) - (i32.const 0) - ) - ) - (i32.store - (local.get $5) - (local.tee $6 - (i32.add - (i32.load - (local.get $5) - ) - (i32.const 1) - ) - ) - ) - (br_if $while-in86 - (i32.gt_u - (local.get $6) - (i32.const 999999999) - ) - ) - ) - ) - (local.set $6 - (i32.mul - (i32.shr_s - (i32.sub - (local.get $19) - (local.get $4) - ) - (i32.const 2) - ) - (i32.const 9) - ) - ) - (br_if $do-once81 - (i32.lt_u - (local.tee $12 - (i32.load - (local.get $4) - ) - ) - (i32.const 10) - ) - ) - (local.set $8 - (i32.const 10) - ) - (loop $while-in88 - (local.set $6 - (i32.add - (local.get $6) - (i32.const 1) - ) - ) - (br_if $while-in88 - (i32.ge_u - (local.get $12) - (local.tee $8 - (i32.mul - (local.get $8) - (i32.const 10) - ) - ) - ) - ) - ) - ) - ) - (local.set $8 - (local.get $4) - ) - (local.set $12 - (local.get $6) - ) - (select - (local.tee $4 - (i32.add - (local.get $5) - (i32.const 4) - ) - ) - (local.get $10) - (i32.gt_u - (local.get $10) - (local.get $4) - ) - ) - ) - (block (result i32) - (local.set $8 - (local.get $4) - ) - (local.set $12 - (local.get $6) - ) - (local.get $10) - ) - ) - ) - (local.set $23 - (loop $while-in90 (result i32) - (block $while-out89 (result i32) - (if - (i32.le_u - (local.get $4) - (local.get $8) - ) - (block - (local.set $27 - (i32.const 0) - ) - (br $while-out89 - (local.get $4) - ) - ) - ) - (if (result i32) - (i32.load - (local.tee $5 - (i32.add - (local.get $4) - (i32.const -4) - ) - ) - ) - (block (result i32) - (local.set $27 - (i32.const 1) - ) - (local.get $4) - ) - (block - (local.set $4 - (local.get $5) - ) - (br $while-in90) - ) - ) - ) - ) - ) - (local.set $4 - (if (result i32) - (local.get $37) - (block $do-once91 (result i32) - (local.set $6 - (if (result i32) - (i32.and - (i32.gt_s - (local.tee $4 - (i32.add - (local.get $18) - (i32.xor - (local.get $38) - (i32.const 1) - ) - ) - ) - (local.get $12) - ) - (i32.gt_s - (local.get $12) - (i32.const -5) - ) - ) - (block (result i32) - (local.set $18 - (i32.sub - (i32.add - (local.get $4) - (i32.const -1) - ) - (local.get $12) - ) - ) - (i32.add - (local.get $17) - (i32.const -1) - ) - ) - (block (result i32) - (local.set $18 - (i32.add - (local.get $4) - (i32.const -1) - ) - ) - (i32.add - (local.get $17) - (i32.const -2) - ) - ) - ) - ) - (drop - (br_if $do-once91 - (local.get $18) - (local.tee $10 - (i32.and - (local.get $11) - (i32.const 8) - ) - ) - ) - ) - (if - (local.get $27) - (block $do-once93 - (if - (i32.eqz - (local.tee $10 - (i32.load - (i32.add - (local.get $23) - (i32.const -4) - ) - ) - ) - ) - (block - (local.set $4 - (i32.const 9) - ) - (br $do-once93) - ) - ) - (local.set $4 - (if (result i32) - (call $i32u-rem - (local.get $10) - (i32.const 10) - ) - (block - (local.set $4 - (i32.const 0) - ) - (br $do-once93) - ) - (block (result i32) - (local.set $5 - (i32.const 10) - ) - (i32.const 0) - ) - ) - ) - (loop $while-in96 - (local.set $4 - (i32.add - (local.get $4) - (i32.const 1) - ) - ) - (br_if $while-in96 - (i32.eqz - (call $i32u-rem - (local.get $10) - (local.tee $5 - (i32.mul - (local.get $5) - (i32.const 10) - ) - ) - ) - ) - ) - ) - ) - (local.set $4 - (i32.const 9) - ) - ) - (local.set $5 - (i32.add - (i32.mul - (i32.shr_s - (i32.sub - (local.get $23) - (local.get $19) - ) - (i32.const 2) - ) - (i32.const 9) - ) - (i32.const -9) - ) - ) - (if (result i32) - (i32.eq - (i32.or - (local.get $6) - (i32.const 32) - ) - (i32.const 102) - ) - (block (result i32) - (local.set $10 - (i32.const 0) - ) - (select - (local.get $18) - (local.tee $4 - (select - (i32.const 0) - (local.tee $4 - (i32.sub - (local.get $5) - (local.get $4) - ) - ) - (i32.lt_s - (local.get $4) - (i32.const 0) - ) - ) - ) - (i32.lt_s - (local.get $18) - (local.get $4) - ) - ) - ) - (block (result i32) - (local.set $10 - (i32.const 0) - ) - (select - (local.get $18) - (local.tee $4 - (select - (i32.const 0) - (local.tee $4 - (i32.sub - (i32.add - (local.get $5) - (local.get $12) - ) - (local.get $4) - ) - ) - (i32.lt_s - (local.get $4) - (i32.const 0) - ) - ) - ) - (i32.lt_s - (local.get $18) - (local.get $4) - ) - ) - ) - ) - ) - (block (result i32) - (local.set $10 - (i32.and - (local.get $11) - (i32.const 8) - ) - ) - (local.set $6 - (local.get $17) - ) - (local.get $18) - ) - ) - ) - (local.set $5 - (i32.sub - (i32.const 0) - (local.get $12) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.tee $12 - (i32.add - (if (result i32) - (local.tee $19 - (i32.eq - (i32.or - (local.get $6) - (i32.const 32) - ) - (i32.const 102) - ) - ) - (block (result i32) - (local.set $17 - (i32.const 0) - ) - (select - (local.get $12) - (i32.const 0) - (i32.gt_s - (local.get $12) - (i32.const 0) - ) - ) - ) - (block (result i32) - (if - (i32.lt_s - (i32.sub - (local.get $28) - (local.tee $5 - (call $_fmt_u - (local.tee $5 - (select - (local.get $5) - (local.get $12) - (i32.lt_s - (local.get $12) - (i32.const 0) - ) - ) - ) - (i32.shr_s - (i32.shl - (i32.lt_s - (local.get $5) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - (local.get $33) - ) - ) - ) - (i32.const 2) - ) - (loop $while-in98 - (i32.store8 - (local.tee $5 - (i32.add - (local.get $5) - (i32.const -1) - ) - ) - (i32.const 48) - ) - (br_if $while-in98 - (i32.lt_s - (i32.sub - (local.get $28) - (local.get $5) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.store8 - (i32.add - (local.get $5) - (i32.const -1) - ) - (i32.add - (i32.and - (i32.shr_s - (local.get $12) - (i32.const 31) - ) - (i32.const 2) - ) - (i32.const 43) - ) - ) - (i32.store8 - (local.tee $17 - (i32.add - (local.get $5) - (i32.const -2) - ) - ) - (local.get $6) - ) - (i32.sub - (local.get $28) - (local.get $17) - ) - ) - ) - (i32.add - (i32.add - (i32.add - (local.get $26) - (i32.const 1) - ) - (local.get $4) - ) - (i32.ne - (local.tee $18 - (i32.or - (local.get $4) - (local.get $10) - ) - ) - (i32.const 0) - ) - ) - ) - ) - (local.get $11) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $32) - (local.get $26) - (local.get $0) - ) - ) - (call $_pad - (local.get $0) - (i32.const 48) - (local.get $15) - (local.get $12) - (i32.xor - (local.get $11) - (i32.const 65536) - ) - ) - (if - (local.get $19) - (block - (local.set $5 - (local.tee $8 - (select - (local.get $7) - (local.get $8) - (i32.gt_u - (local.get $8) - (local.get $7) - ) - ) - ) - ) - (loop $while-in102 - (local.set $6 - (call $_fmt_u - (i32.load - (local.get $5) - ) - (i32.const 0) - (local.get $31) - ) - ) - (block $do-once103 - (if - (i32.eq - (local.get $5) - (local.get $8) - ) - (block - (br_if $do-once103 - (i32.ne - (local.get $6) - (local.get $31) - ) - ) - (i32.store8 - (local.get $34) - (i32.const 48) - ) - (local.set $6 - (local.get $34) - ) - ) - (block - (br_if $do-once103 - (i32.le_u - (local.get $6) - (local.get $21) - ) - ) - (loop $while-in106 - (i32.store8 - (local.tee $6 - (i32.add - (local.get $6) - (i32.const -1) - ) - ) - (i32.const 48) - ) - (br_if $while-in106 - (i32.gt_u - (local.get $6) - (local.get $21) - ) - ) - ) - ) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $6) - (i32.sub - (local.get $42) - (local.get $6) - ) - (local.get $0) - ) - ) - (if - (i32.le_u - (local.tee $6 - (i32.add - (local.get $5) - (i32.const 4) - ) - ) - (local.get $7) - ) - (block - (local.set $5 - (local.get $6) - ) - (br $while-in102) - ) - ) - ) - (if - (local.get $18) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (i32.const 4143) - (i32.const 1) - (local.get $0) - ) - ) - ) - (call $_pad - (local.get $0) - (i32.const 48) - (i32.add - (if (result i32) - (i32.and - (i32.lt_u - (local.get $6) - (local.get $23) - ) - (i32.gt_s - (local.get $4) - (i32.const 0) - ) - ) - (loop $while-in110 (result i32) - (if - (i32.gt_u - (local.tee $5 - (call $_fmt_u - (i32.load - (local.get $6) - ) - (i32.const 0) - (local.get $31) - ) - ) - (local.get $21) - ) - (loop $while-in112 - (i32.store8 - (local.tee $5 - (i32.add - (local.get $5) - (i32.const -1) - ) - ) - (i32.const 48) - ) - (br_if $while-in112 - (i32.gt_u - (local.get $5) - (local.get $21) - ) - ) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $5) - (select - (i32.const 9) - (local.get $4) - (i32.gt_s - (local.get $4) - (i32.const 9) - ) - ) - (local.get $0) - ) - ) - (local.set $5 - (i32.add - (local.get $4) - (i32.const -9) - ) - ) - (if (result i32) - (i32.and - (i32.lt_u - (local.tee $6 - (i32.add - (local.get $6) - (i32.const 4) - ) - ) - (local.get $23) - ) - (i32.gt_s - (local.get $4) - (i32.const 9) - ) - ) - (block - (local.set $4 - (local.get $5) - ) - (br $while-in110) - ) - (local.get $5) - ) - ) - (local.get $4) - ) - (i32.const 9) - ) - (i32.const 9) - (i32.const 0) - ) - ) - (block $do-once99 - (local.set $19 - (select - (local.get $23) - (i32.add - (local.get $8) - (i32.const 4) - ) - (local.get $27) - ) - ) - (call $_pad - (local.get $0) - (i32.const 48) - (i32.add - (if (result i32) - (i32.gt_s - (local.get $4) - (i32.const -1) - ) - (block (result i32) - (local.set $10 - (i32.eqz - (local.get $10) - ) - ) - (local.set $5 - (local.get $8) - ) - (local.set $6 - (local.get $4) - ) - (loop $while-in114 (result i32) - (if - (i32.eq - (local.tee $4 - (call $_fmt_u - (i32.load - (local.get $5) - ) - (i32.const 0) - (local.get $31) - ) - ) - (local.get $31) - ) - (block - (i32.store8 - (local.get $34) - (i32.const 48) - ) - (local.set $4 - (local.get $34) - ) - ) - ) - (block $do-once115 - (if - (i32.eq - (local.get $5) - (local.get $8) - ) - (block - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $4) - (i32.const 1) - (local.get $0) - ) - ) - (local.set $4 - (i32.add - (local.get $4) - (i32.const 1) - ) - ) - (br_if $do-once115 - (i32.and - (i32.lt_s - (local.get $6) - (i32.const 1) - ) - (local.get $10) - ) - ) - (br_if $do-once115 - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (i32.const 4143) - (i32.const 1) - (local.get $0) - ) - ) - (block - (br_if $do-once115 - (i32.le_u - (local.get $4) - (local.get $21) - ) - ) - (loop $while-in118 - (i32.store8 - (local.tee $4 - (i32.add - (local.get $4) - (i32.const -1) - ) - ) - (i32.const 48) - ) - (br_if $while-in118 - (i32.gt_u - (local.get $4) - (local.get $21) - ) - ) - ) - ) - ) - ) - (local.set $7 - (i32.sub - (local.get $42) - (local.get $4) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $4) - (select - (local.get $7) - (local.get $6) - (i32.gt_s - (local.get $6) - (local.get $7) - ) - ) - (local.get $0) - ) - ) - (br_if $while-in114 - (i32.and - (i32.lt_u - (local.tee $5 - (i32.add - (local.get $5) - (i32.const 4) - ) - ) - (local.get $19) - ) - (i32.gt_s - (local.tee $6 - (i32.sub - (local.get $6) - (local.get $7) - ) - ) - (i32.const -1) - ) - ) - ) - (local.get $6) - ) - ) - (local.get $4) - ) - (i32.const 18) - ) - (i32.const 18) - (i32.const 0) - ) - (br_if $do-once99 - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $17) - (i32.sub - (local.get $28) - (local.get $17) - ) - (local.get $0) - ) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.get $12) - (i32.xor - (local.get $11) - (i32.const 8192) - ) - ) - (select - (local.get $15) - (local.get $12) - (i32.lt_s - (local.get $12) - (local.get $15) - ) - ) - ) - (block (result i32) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.tee $4 - (i32.add - (local.tee $6 - (select - (i32.const 0) - (local.get $26) - (local.tee $5 - (f64.ne - (local.get $14) - (local.get $14) - ) - ) - ) - ) - (i32.const 3) - ) - ) - (local.get $7) - ) - (local.set $5 - (select - (select - (i32.const 4135) - (i32.const 4139) - (local.tee $7 - (i32.ne - (i32.and - (local.get $17) - (i32.const 32) - ) - (i32.const 0) - ) - ) - ) - (select - (i32.const 4127) - (i32.const 4131) - (local.get $7) - ) - (local.get $5) - ) - ) - (if - (i32.eqz - (i32.and - (if (result i32) - (i32.and - (local.tee $7 - (i32.load - (local.get $0) - ) - ) - (i32.const 32) - ) - (local.get $7) - (block (result i32) - (call $___fwritex - (local.get $32) - (local.get $6) - (local.get $0) - ) - (i32.load - (local.get $0) - ) - ) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $5) - (i32.const 3) - (local.get $0) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.get $4) - (i32.xor - (local.get $11) - (i32.const 8192) - ) - ) - (select - (local.get $15) - (local.get $4) - (i32.lt_s - (local.get $4) - (local.get $15) - ) - ) - ) - ) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $5) - ) - (br $label$continue$L1) - ) - (local.set $8 - (local.get $5) - ) - (local.set $7 - (i32.const 0) - ) - (local.set $10 - (i32.const 4091) - ) - (br $__rjto$8 - (local.get $24) - ) - ) - (local.set $8 - (i32.and - (local.get $17) - (i32.const 32) - ) - ) - (local.set $7 - (if (result i32) - (i32.or - (local.tee $6 - (i32.load - (local.get $13) - ) - ) - (local.tee $11 - (i32.load offset=4 - (local.get $13) - ) - ) - ) - (block (result i32) - (local.set $7 - (local.get $24) - ) - (local.set $6 - (loop $while-in123 (result i32) - (i32.store8 - (local.tee $7 - (i32.add - (local.get $7) - (i32.const -1) - ) - ) - (i32.or - (local.get $8) - (i32.load8_u - (i32.add - (i32.and - (local.get $6) - (i32.const 15) - ) - (i32.const 4075) - ) - ) - ) - ) - (br_if $while-in123 - (i32.or - (local.tee $6 - (call $_bitshift64Lshr - (local.get $6) - (local.get $11) - (i32.const 4) - ) - ) - (local.tee $11 - (global.get $tempRet0) - ) - ) - ) - (local.get $7) - ) - ) - (if (result i32) - (i32.or - (i32.eqz - (i32.or - (i32.load - (local.get $13) - ) - (i32.load offset=4 - (local.get $13) - ) - ) - ) - (i32.eqz - (i32.and - (local.get $4) - (i32.const 8) - ) - ) - ) - (block (result i32) - (local.set $10 - (i32.const 4091) - ) - (i32.const 0) - ) - (block (result i32) - (local.set $10 - (i32.add - (i32.shr_s - (local.get $17) - (i32.const 4) - ) - (i32.const 4091) - ) - ) - (i32.const 2) - ) - ) - ) - (block (result i32) - (local.set $6 - (local.get $24) - ) - (local.set $10 - (i32.const 4091) - ) - (i32.const 0) - ) - ) - ) - (br $__rjti$8) - ) - (local.set $6 - (call $_fmt_u - (local.get $4) - (local.get $6) - (local.get $24) - ) - ) - (local.set $4 - (local.get $11) - ) - (br $__rjti$8) - ) - (local.set $17 - (i32.eqz - (local.tee $12 - (call $_memchr - (local.get $6) - (local.get $5) - ) - ) - ) - ) - (local.set $11 - (local.get $7) - ) - (local.set $8 - (select - (local.get $5) - (i32.sub - (local.get $12) - (local.tee $4 - (local.get $6) - ) - ) - (local.get $17) - ) - ) - (local.set $7 - (i32.const 0) - ) - (local.set $10 - (i32.const 4091) - ) - (br $__rjto$8 - (select - (i32.add - (local.get $4) - (local.get $5) - ) - (local.get $12) - (local.get $17) - ) - ) - ) - (local.set $4 - (i32.const 0) - ) - (local.set $6 - (i32.const 0) - ) - (local.set $5 - (i32.load - (local.get $13) - ) - ) - (loop $while-in125 - (block $while-out124 - (br_if $while-out124 - (i32.eqz - (local.tee $8 - (i32.load - (local.get $5) - ) - ) - ) - ) - (br_if $while-out124 - (i32.or - (i32.lt_s - (local.tee $6 - (call $_wctomb - (local.get $35) - (local.get $8) - ) - ) - (i32.const 0) - ) - (i32.gt_u - (local.get $6) - (i32.sub - (local.get $7) - (local.get $4) - ) - ) - ) - ) - (local.set $5 - (i32.add - (local.get $5) - (i32.const 4) - ) - ) - (br_if $while-in125 - (i32.gt_u - (local.get $7) - (local.tee $4 - (i32.add - (local.get $4) - (local.get $6) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_s - (local.get $6) - (i32.const 0) - ) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.get $4) - (local.get $11) - ) - (if (result i32) - (local.get $4) - (block (result i32) - (local.set $5 - (i32.const 0) - ) - (local.set $6 - (i32.load - (local.get $13) - ) - ) - (loop $while-in127 (result i32) - (drop - (br_if $__rjti$7 - (local.get $4) - (i32.eqz - (local.tee $7 - (i32.load - (local.get $6) - ) - ) - ) - ) - ) - (drop - (br_if $__rjti$7 - (local.get $4) - (i32.gt_s - (local.tee $5 - (i32.add - (local.tee $7 - (call $_wctomb - (local.get $35) - (local.get $7) - ) - ) - (local.get $5) - ) - ) - (local.get $4) - ) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $35) - (local.get $7) - (local.get $0) - ) - ) - (local.set $6 - (i32.add - (local.get $6) - (i32.const 4) - ) - ) - (br_if $while-in127 - (i32.lt_u - (local.get $5) - (local.get $4) - ) - ) - (local.get $4) - ) - ) - (i32.const 0) - ) - ) - ) - (i32.xor - (local.get $11) - (i32.const 8192) - ) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (select - (local.get $15) - (local.get $5) - (i32.gt_s - (local.get $15) - (local.get $5) - ) - ) - ) - (br $label$continue$L1) - ) - (local.set $11 - (select - (i32.and - (local.get $4) - (i32.const -65537) - ) - (local.get $4) - (i32.gt_s - (local.get $5) - (i32.const -1) - ) - ) - ) - (if (result i32) - (i32.or - (local.get $5) - (local.tee $8 - (i32.or - (i32.ne - (i32.load - (local.get $13) - ) - (i32.const 0) - ) - (i32.ne - (i32.load offset=4 - (local.get $13) - ) - (i32.const 0) - ) - ) - ) - ) - (block (result i32) - (local.set $8 - (select - (local.get $5) - (local.tee $6 - (i32.add - (i32.sub - (local.get $39) - (local.tee $4 - (local.get $6) - ) - ) - (i32.xor - (local.get $8) - (i32.const 1) - ) - ) - ) - (i32.gt_s - (local.get $5) - (local.get $6) - ) - ) - ) - (local.get $24) - ) - (block (result i32) - (local.set $8 - (i32.const 0) - ) - (local.tee $4 - (local.get $24) - ) - ) - ) - ) - (local.get $4) - ) - ) - (local.get $8) - (i32.lt_s - (local.get $8) - (local.get $12) - ) - ) - ) - (local.get $7) - ) - ) - (local.get $15) - (i32.lt_s - (local.get $15) - (local.get $6) - ) - ) - ) - (local.get $6) - (local.get $11) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $10) - (local.get $7) - (local.get $0) - ) - ) - (call $_pad - (local.get $0) - (i32.const 48) - (local.get $5) - (local.get $6) - (i32.xor - (local.get $11) - (i32.const 65536) - ) - ) - (call $_pad - (local.get $0) - (i32.const 48) - (local.get $8) - (local.get $12) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $4) - (local.get $12) - (local.get $0) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $5) - (local.get $6) - (i32.xor - (local.get $11) - (i32.const 8192) - ) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $5) - ) - (br $label$continue$L1) - ) - ) - (br $label$break$L343) - ) - (if - (i32.eqz - (local.get $0) - ) - (local.set $16 - (if (result i32) - (local.get $25) - (block (result i32) - (local.set $0 - (i32.const 1) - ) - (loop $while-in130 - (if - (local.tee $4 - (i32.load - (i32.add - (i32.shl - (local.get $0) - (i32.const 2) - ) - (local.get $3) - ) - ) - ) - (block - (call $_pop_arg_336 - (i32.add - (i32.shl - (local.get $0) - (i32.const 3) - ) - (local.get $2) - ) - (local.get $4) - (local.get $1) - ) - (br_if $while-in130 - (i32.lt_s - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (i32.const 10) - ) - ) - (local.set $16 - (i32.const 1) - ) - (br $label$break$L343) - ) - ) - ) - (if (result i32) - (i32.lt_s - (local.get $0) - (i32.const 10) - ) - (loop $while-in132 (result i32) - (if - (i32.load - (i32.add - (i32.shl - (local.get $0) - (i32.const 2) - ) - (local.get $3) - ) - ) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L343) - ) - ) - (br_if $while-in132 - (i32.lt_s - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (i32.const 10) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (i32.const 0) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $29) - ) - (local.get $16) - ) - (func $_pop_arg_336 (; 49 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 i32) - (if - (i32.le_u - (local.get $1) - (i32.const 20) - ) - (block $label$break$L1 - (block $switch-case9 - (block $switch-case8 - (block $switch-case7 - (block $switch-case6 - (block $switch-case5 - (block $switch-case4 - (block $switch-case3 - (block $switch-case2 - (block $switch-case1 - (block $switch-case - (br_table $switch-case $switch-case1 $switch-case2 $switch-case3 $switch-case4 $switch-case5 $switch-case6 $switch-case7 $switch-case8 $switch-case9 $label$break$L1 - (i32.sub - (local.get $1) - (i32.const 9) - ) - ) - ) - (local.set $3 - (i32.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.store - (local.get $0) - (local.get $3) - ) - (br $label$break$L1) - ) - (local.set $1 - (i32.load - (local.tee $3 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $3) - (i32.const 4) - ) - ) - (i32.store - (local.get $0) - (local.get $1) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 4) - ) - (i32.shr_s - (i32.shl - (i32.lt_s - (local.get $1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (br $label$break$L1) - ) - (local.set $3 - (i32.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.store - (local.get $0) - (local.get $3) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 4) - ) - (i32.const 0) - ) - (br $label$break$L1) - ) - (local.set $5 - (i32.load - (local.tee $3 - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 7) - ) - (i32.const -8) - ) - ) - ) - ) - ) - (local.set $3 - (i32.load - (i32.add - (local.get $3) - (i32.const 4) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (i32.store - (local.get $0) - (local.get $5) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 4) - ) - (local.get $3) - ) - (br $label$break$L1) - ) - (local.set $3 - (i32.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.store - (local.get $0) - (local.tee $1 - (i32.shr_s - (i32.shl - (i32.and - (local.get $3) - (i32.const 65535) - ) - (i32.const 16) - ) - (i32.const 16) - ) - ) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 4) - ) - (i32.shr_s - (i32.shl - (i32.lt_s - (local.get $1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (br $label$break$L1) - ) - (local.set $3 - (i32.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.store - (local.get $0) - (i32.and - (local.get $3) - (i32.const 65535) - ) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 4) - ) - (i32.const 0) - ) - (br $label$break$L1) - ) - (local.set $3 - (i32.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.store - (local.get $0) - (local.tee $1 - (i32.shr_s - (i32.shl - (i32.and - (local.get $3) - (i32.const 255) - ) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 4) - ) - (i32.shr_s - (i32.shl - (i32.lt_s - (local.get $1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (br $label$break$L1) - ) - (local.set $3 - (i32.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.store - (local.get $0) - (i32.and - (local.get $3) - (i32.const 255) - ) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 4) - ) - (i32.const 0) - ) - (br $label$break$L1) - ) - (local.set $4 - (f64.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 7) - ) - (i32.const -8) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (f64.store - (local.get $0) - (local.get $4) - ) - (br $label$break$L1) - ) - (local.set $4 - (f64.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 7) - ) - (i32.const -8) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (f64.store - (local.get $0) - (local.get $4) - ) - ) - ) - ) - (func $_fmt_u (; 50 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (if - (i32.or - (i32.and - (i32.eqz - (local.get $1) - ) - (i32.gt_u - (local.get $0) - (i32.const -1) - ) - ) - (i32.gt_u - (local.get $1) - (i32.const 0) - ) - ) - (local.set $0 - (loop $while-in (result i32) - (i32.store8 - (local.tee $2 - (i32.add - (local.get $2) - (i32.const -1) - ) - ) - (i32.or - (call $___uremdi3 - (local.get $0) - (local.get $1) - (i32.const 10) - ) - (i32.const 48) - ) - ) - (local.set $3 - (call $___udivdi3 - (local.get $0) - (local.get $1) - (i32.const 10) - ) - ) - (local.set $4 - (global.get $tempRet0) - ) - (if (result i32) - (i32.or - (i32.and - (i32.eq - (local.get $1) - (i32.const 9) - ) - (i32.gt_u - (local.get $0) - (i32.const -1) - ) - ) - (i32.gt_u - (local.get $1) - (i32.const 9) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in) - ) - (local.get $3) - ) - ) - ) - ) - (if - (local.get $0) - (loop $while-in1 - (i32.store8 - (local.tee $2 - (i32.add - (local.get $2) - (i32.const -1) - ) - ) - (i32.or - (call $i32u-rem - (local.get $0) - (i32.const 10) - ) - (i32.const 48) - ) - ) - (local.set $1 - (call $i32u-div - (local.get $0) - (i32.const 10) - ) - ) - (if - (i32.ge_u - (local.get $0) - (i32.const 10) - ) - (block - (local.set $0 - (local.get $1) - ) - (br $while-in1) - ) - ) - ) - ) - (local.get $2) - ) - (func $_pad (; 51 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local.set $7 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 256) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $6 - (local.get $7) - ) - (if - (i32.and - (i32.eqz - (i32.and - (local.get $4) - (i32.const 73728) - ) - ) - (i32.gt_s - (local.get $2) - (local.get $3) - ) - ) - (block $do-once - (drop - (call $_memset - (local.get $6) - (local.get $1) - (select - (i32.const 256) - (local.tee $5 - (i32.sub - (local.get $2) - (local.get $3) - ) - ) - (i32.gt_u - (local.get $5) - (i32.const 256) - ) - ) - ) - ) - (local.set $4 - (i32.eqz - (i32.and - (local.tee $1 - (i32.load - (local.get $0) - ) - ) - (i32.const 32) - ) - ) - ) - (if - (i32.gt_u - (local.get $5) - (i32.const 255) - ) - (block - (loop $while-in - (if - (local.get $4) - (block - (call $___fwritex - (local.get $6) - (i32.const 256) - (local.get $0) - ) - (local.set $1 - (i32.load - (local.get $0) - ) - ) - ) - ) - (local.set $4 - (i32.eqz - (i32.and - (local.get $1) - (i32.const 32) - ) - ) - ) - (br_if $while-in - (i32.gt_u - (local.tee $5 - (i32.add - (local.get $5) - (i32.const -256) - ) - ) - (i32.const 255) - ) - ) - ) - (br_if $do-once - (i32.eqz - (local.get $4) - ) - ) - (local.set $5 - (i32.and - (i32.sub - (local.get $2) - (local.get $3) - ) - (i32.const 255) - ) - ) - ) - (br_if $do-once - (i32.eqz - (local.get $4) - ) - ) - ) - (call $___fwritex - (local.get $6) - (local.get $5) - (local.get $0) - ) - ) - ) - (global.set $STACKTOP - (local.get $7) - ) - ) - (func $_malloc (; 52 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local.set $0 - (if (result i32) - (i32.lt_u - (local.get $0) - (i32.const 245) - ) - (block (result i32) - (if - (i32.and - (local.tee $11 - (i32.shr_u - (local.tee $6 - (i32.load - (i32.const 176) - ) - ) - (local.tee $13 - (i32.shr_u - (local.tee $3 - (select - (i32.const 16) - (i32.and - (i32.add - (local.get $0) - (i32.const 11) - ) - (i32.const -8) - ) - (i32.lt_u - (local.get $0) - (i32.const 11) - ) - ) - ) - (i32.const 3) - ) - ) - ) - ) - (i32.const 3) - ) - (block - (if - (i32.eq - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.tee $2 - (i32.load offset=8 - (local.tee $3 - (i32.add - (i32.shl - (local.tee $0 - (i32.add - (i32.xor - (i32.and - (local.get $11) - (i32.const 1) - ) - (i32.const 1) - ) - (local.get $13) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (local.get $3) - ) - (i32.store - (i32.const 176) - (i32.and - (local.get $6) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $4) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $2) - (i32.load offset=12 - (local.get $4) - ) - ) - (block - (i32.store offset=12 - (local.get $4) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $4) - ) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.tee $0 - (i32.shl - (local.get $0) - (i32.const 3) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - (return - (local.get $1) - ) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $3) - (local.tee $0 - (i32.load - (i32.const 184) - ) - ) - ) - (block (result i32) - (if - (local.get $11) - (block - (if - (i32.eq - (local.tee $10 - (i32.load - (local.tee $4 - (i32.add - (local.tee $7 - (i32.load offset=8 - (local.tee $9 - (i32.add - (i32.shl - (local.tee $2 - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.tee $2 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.add - (i32.and - (local.tee $2 - (i32.and - (i32.or - (local.tee $2 - (i32.shl - (i32.const 2) - (local.get $13) - ) - ) - (i32.sub - (i32.const 0) - (local.get $2) - ) - ) - (i32.shl - (local.get $11) - (local.get $13) - ) - ) - ) - (i32.sub - (i32.const 0) - (local.get $2) - ) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.tee $2 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $2) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - ) - (local.tee $2 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $2) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - ) - (local.tee $2 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $2) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.tee $2 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $2) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (i32.shr_u - (local.get $4) - (local.get $2) - ) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (local.get $9) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (local.get $6) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $2) - ) - (i32.const -1) - ) - ) - ) - (local.set $8 - (local.get $0) - ) - ) - (block - (if - (i32.lt_u - (local.get $10) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=12 - (local.get $10) - ) - (local.get $7) - ) - (block - (i32.store offset=12 - (local.get $10) - (local.get $9) - ) - (i32.store offset=8 - (local.get $9) - (local.get $10) - ) - (local.set $8 - (i32.load - (i32.const 184) - ) - ) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=4 - (local.get $7) - (i32.or - (local.get $3) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $7 - (i32.add - (local.get $3) - (local.get $7) - ) - ) - (i32.or - (local.tee $9 - (i32.sub - (i32.shl - (local.get $2) - (i32.const 3) - ) - (local.get $3) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $7) - (local.get $9) - ) - (local.get $9) - ) - (if - (local.get $8) - (block - (local.set $6 - (i32.load - (i32.const 196) - ) - ) - (local.set $3 - (i32.add - (i32.shl - (local.tee $0 - (i32.shr_u - (local.get $8) - (i32.const 3) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $2 - (i32.load - (i32.const 176) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - (if - (i32.lt_u - (local.tee $0 - (i32.load - (local.tee $2 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $5 - (local.get $2) - ) - (local.set $1 - (local.get $0) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $0) - (local.get $2) - ) - ) - (local.set $5 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - (local.set $1 - (local.get $3) - ) - ) - ) - (i32.store - (local.get $5) - (local.get $6) - ) - (i32.store offset=12 - (local.get $1) - (local.get $6) - ) - (i32.store offset=8 - (local.get $6) - (local.get $1) - ) - (i32.store offset=12 - (local.get $6) - (local.get $3) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $9) - ) - (i32.store - (i32.const 196) - (local.get $7) - ) - (return - (local.get $4) - ) - ) - ) - (if (result i32) - (local.tee $0 - (i32.load - (i32.const 180) - ) - ) - (block - (local.set $9 - (i32.sub - (i32.and - (i32.load offset=4 - (local.tee $0 - (i32.load offset=480 - (i32.shl - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.tee $0 - (i32.and - (i32.shr_u - (local.tee $1 - (i32.add - (i32.and - (local.get $0) - (i32.sub - (i32.const 0) - (local.get $0) - ) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.tee $0 - (i32.and - (i32.shr_u - (local.tee $1 - (i32.shr_u - (local.get $1) - (local.get $0) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - ) - (local.tee $0 - (i32.and - (i32.shr_u - (local.tee $1 - (i32.shr_u - (local.get $1) - (local.get $0) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - ) - (local.tee $0 - (i32.and - (i32.shr_u - (local.tee $1 - (i32.shr_u - (local.get $1) - (local.get $0) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.tee $0 - (i32.and - (i32.shr_u - (local.tee $1 - (i32.shr_u - (local.get $1) - (local.get $0) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (i32.shr_u - (local.get $1) - (local.get $0) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const -8) - ) - (local.get $3) - ) - ) - (local.set $7 - (local.get $0) - ) - (loop $while-in - (block $while-out - (if - (local.tee $1 - (i32.load offset=16 - (local.get $0) - ) - ) - (local.set $0 - (local.get $1) - ) - (if - (i32.eqz - (local.tee $0 - (i32.load offset=20 - (local.get $0) - ) - ) - ) - (block - (local.set $6 - (local.get $9) - ) - (local.set $10 - (local.get $7) - ) - (br $while-out) - ) - ) - ) - (local.set $6 - (i32.lt_u - (local.tee $1 - (i32.sub - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - (local.get $3) - ) - ) - (local.get $9) - ) - ) - (local.set $9 - (select - (local.get $1) - (local.get $9) - (local.get $6) - ) - ) - (local.set $7 - (select - (local.get $0) - (local.get $7) - (local.get $6) - ) - ) - (br $while-in) - ) - ) - (if - (i32.lt_u - (local.get $10) - (local.tee $11 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (if - (i32.ge_u - (local.get $10) - (local.tee $5 - (i32.add - (local.get $3) - (local.get $10) - ) - ) - ) - (call $_abort) - ) - (local.set $8 - (i32.load offset=24 - (local.get $10) - ) - ) - (if - (i32.eq - (local.tee $0 - (i32.load offset=12 - (local.get $10) - ) - ) - (local.get $10) - ) - (block $do-once4 - (if - (i32.eqz - (local.tee $1 - (i32.load - (local.tee $0 - (i32.add - (local.get $10) - (i32.const 20) - ) - ) - ) - ) - ) - (br_if $do-once4 - (i32.eqz - (local.tee $1 - (i32.load - (local.tee $0 - (i32.add - (local.get $10) - (i32.const 16) - ) - ) - ) - ) - ) - ) - ) - (loop $while-in7 - (if - (local.tee $7 - (i32.load - (local.tee $9 - (i32.add - (local.get $1) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $1 - (local.get $7) - ) - (local.set $0 - (local.get $9) - ) - (br $while-in7) - ) - ) - (if - (local.tee $7 - (i32.load - (local.tee $9 - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $1 - (local.get $7) - ) - (local.set $0 - (local.get $9) - ) - (br $while-in7) - ) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $11) - ) - (call $_abort) - (block - (i32.store - (local.get $0) - (i32.const 0) - ) - (local.set $4 - (local.get $1) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $10) - ) - ) - (local.get $11) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $10) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=8 - (local.get $0) - ) - (local.get $10) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $4 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $8) - (block $do-once8 - (if - (i32.eq - (i32.load offset=480 - (local.tee $0 - (i32.shl - (local.tee $1 - (i32.load offset=28 - (local.get $10) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $10) - ) - (block - (i32.store offset=480 - (local.get $0) - (local.get $4) - ) - (if - (i32.eqz - (local.get $4) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $1) - ) - (i32.const -1) - ) - ) - ) - (br $do-once8) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $8) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=16 - (local.get $8) - ) - (local.get $10) - ) - (i32.store offset=16 - (local.get $8) - (local.get $4) - ) - (i32.store offset=20 - (local.get $8) - (local.get $4) - ) - ) - (br_if $do-once8 - (i32.eqz - (local.get $4) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $4) - (local.tee $0 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $4) - (local.get $8) - ) - (if - (local.tee $1 - (i32.load offset=16 - (local.get $10) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $0) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $4) - (local.get $1) - ) - (i32.store offset=24 - (local.get $1) - (local.get $4) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $10) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $4) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $4) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $6) - (i32.const 16) - ) - (block - (i32.store offset=4 - (local.get $10) - (i32.or - (local.tee $0 - (i32.add - (local.get $3) - (local.get $6) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $10) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - ) - (block - (i32.store offset=4 - (local.get $10) - (i32.or - (local.get $3) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.get $5) - (i32.or - (local.get $6) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $5) - (local.get $6) - ) - (local.get $6) - ) - (if - (local.tee $0 - (i32.load - (i32.const 184) - ) - ) - (block - (local.set $4 - (i32.load - (i32.const 196) - ) - ) - (local.set $3 - (i32.add - (i32.shl - (local.tee $0 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $1 - (i32.load - (i32.const 176) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - (if - (i32.lt_u - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $12 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - (local.set $12 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - (local.set $2 - (local.get $3) - ) - ) - ) - (i32.store - (local.get $12) - (local.get $4) - ) - (i32.store offset=12 - (local.get $2) - (local.get $4) - ) - (i32.store offset=8 - (local.get $4) - (local.get $2) - ) - (i32.store offset=12 - (local.get $4) - (local.get $3) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $6) - ) - (i32.store - (i32.const 196) - (local.get $5) - ) - ) - ) - (return - (i32.add - (local.get $10) - (i32.const 8) - ) - ) - ) - (local.get $3) - ) - ) - (local.get $3) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $0) - (i32.const -65) - ) - (i32.const -1) - (block $do-once (result i32) - (local.set $3 - (i32.and - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 11) - ) - ) - (i32.const -8) - ) - ) - (if (result i32) - (local.tee $18 - (i32.load - (i32.const 180) - ) - ) - (block (result i32) - (local.set $14 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $0) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $3) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $4 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $2 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.get $4) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $3) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $1) - (local.get $4) - ) - (local.get $2) - ) - ) - (i32.shr_u - (i32.shl - (local.get $0) - (local.get $2) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (local.set $2 - (i32.sub - (i32.const 0) - (local.get $3) - ) - ) - (block $__rjto$3 - (block $__rjti$3 - (local.set $0 - (if (result i32) - (local.tee $0 - (i32.load offset=480 - (i32.shl - (local.get $14) - (i32.const 2) - ) - ) - ) - (block (result i32) - (local.set $8 - (i32.shl - (local.get $3) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $14) - (i32.const 1) - ) - ) - (i32.eq - (local.get $14) - (i32.const 31) - ) - ) - ) - ) - (local.set $1 - (i32.const 0) - ) - (loop $while-in14 (result i32) - (if - (i32.lt_u - (local.tee $4 - (i32.sub - (local.tee $12 - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (local.get $3) - ) - ) - (local.get $2) - ) - (local.set $1 - (if (result i32) - (i32.eq - (local.get $3) - (local.get $12) - ) - (block - (local.set $1 - (local.get $4) - ) - (local.set $2 - (local.get $0) - ) - (br $__rjti$3) - ) - (block (result i32) - (local.set $2 - (local.get $4) - ) - (local.get $0) - ) - ) - ) - ) - (local.set $0 - (select - (local.get $5) - (local.tee $4 - (i32.load offset=20 - (local.get $0) - ) - ) - (i32.or - (i32.eqz - (local.get $4) - ) - (i32.eq - (local.get $4) - (local.tee $12 - (i32.load - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $8) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - ) - ) - ) - (local.set $4 - (i32.shl - (local.get $8) - (i32.xor - (local.tee $5 - (i32.eqz - (local.get $12) - ) - ) - (i32.const 1) - ) - ) - ) - (if (result i32) - (local.get $5) - (block (result i32) - (local.set $4 - (local.get $0) - ) - (local.get $1) - ) - (block - (local.set $5 - (local.get $0) - ) - (local.set $8 - (local.get $4) - ) - (local.set $0 - (local.get $12) - ) - (br $while-in14) - ) - ) - ) - ) - (block (result i32) - (local.set $4 - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - (if - (i32.eqz - (i32.or - (local.get $0) - (local.get $4) - ) - ) - (block - (drop - (br_if $do-once - (local.get $3) - (i32.eqz - (local.tee $1 - (i32.and - (local.get $18) - (i32.or - (local.tee $1 - (i32.shl - (i32.const 2) - (local.get $14) - ) - ) - (i32.sub - (i32.const 0) - (local.get $1) - ) - ) - ) - ) - ) - ) - ) - (local.set $4 - (i32.load offset=480 - (i32.shl - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.tee $1 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.add - (i32.and - (local.get $1) - (i32.sub - (i32.const 0) - (local.get $1) - ) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.tee $1 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $1) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - ) - (local.tee $1 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $1) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - ) - (local.tee $1 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $1) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.tee $1 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $1) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (i32.shr_u - (local.get $4) - (local.get $1) - ) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (local.set $4 - (if (result i32) - (local.get $4) - (block - (local.set $1 - (local.get $2) - ) - (local.set $2 - (local.get $4) - ) - (br $__rjti$3) - ) - (local.get $0) - ) - ) - (br $__rjto$3) - ) - (local.set $2 - (loop $while-in16 (result i32) - (local.set $12 - (i32.lt_u - (local.tee $4 - (i32.sub - (i32.and - (i32.load offset=4 - (local.get $2) - ) - (i32.const -8) - ) - (local.get $3) - ) - ) - (local.get $1) - ) - ) - (local.set $1 - (select - (local.get $4) - (local.get $1) - (local.get $12) - ) - ) - (local.set $0 - (select - (local.get $2) - (local.get $0) - (local.get $12) - ) - ) - (if - (local.tee $4 - (i32.load offset=16 - (local.get $2) - ) - ) - (block - (local.set $2 - (local.get $4) - ) - (br $while-in16) - ) - ) - (br_if $while-in16 - (local.tee $2 - (i32.load offset=20 - (local.get $2) - ) - ) - ) - (local.set $4 - (local.get $0) - ) - (local.get $1) - ) - ) - ) - (if (result i32) - (local.get $4) - (if (result i32) - (i32.lt_u - (local.get $2) - (i32.sub - (i32.load - (i32.const 184) - ) - (local.get $3) - ) - ) - (block - (if - (i32.lt_u - (local.get $4) - (local.tee $10 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (if - (i32.ge_u - (local.get $4) - (local.tee $5 - (i32.add - (local.get $3) - (local.get $4) - ) - ) - ) - (call $_abort) - ) - (local.set $12 - (i32.load offset=24 - (local.get $4) - ) - ) - (if - (i32.eq - (local.tee $0 - (i32.load offset=12 - (local.get $4) - ) - ) - (local.get $4) - ) - (block $do-once17 - (if - (i32.eqz - (local.tee $1 - (i32.load - (local.tee $0 - (i32.add - (local.get $4) - (i32.const 20) - ) - ) - ) - ) - ) - (br_if $do-once17 - (i32.eqz - (local.tee $1 - (i32.load - (local.tee $0 - (i32.add - (local.get $4) - (i32.const 16) - ) - ) - ) - ) - ) - ) - ) - (loop $while-in20 - (if - (local.tee $7 - (i32.load - (local.tee $9 - (i32.add - (local.get $1) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $1 - (local.get $7) - ) - (local.set $0 - (local.get $9) - ) - (br $while-in20) - ) - ) - (if - (local.tee $7 - (i32.load - (local.tee $9 - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $1 - (local.get $7) - ) - (local.set $0 - (local.get $9) - ) - (br $while-in20) - ) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $10) - ) - (call $_abort) - (block - (i32.store - (local.get $0) - (i32.const 0) - ) - (local.set $11 - (local.get $1) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $4) - ) - ) - (local.get $10) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $4) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=8 - (local.get $0) - ) - (local.get $4) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $11 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $12) - (block $do-once21 - (if - (i32.eq - (i32.load offset=480 - (local.tee $0 - (i32.shl - (local.tee $1 - (i32.load offset=28 - (local.get $4) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $4) - ) - (block - (i32.store offset=480 - (local.get $0) - (local.get $11) - ) - (if - (i32.eqz - (local.get $11) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $1) - ) - (i32.const -1) - ) - ) - ) - (br $do-once21) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $12) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=16 - (local.get $12) - ) - (local.get $4) - ) - (i32.store offset=16 - (local.get $12) - (local.get $11) - ) - (i32.store offset=20 - (local.get $12) - (local.get $11) - ) - ) - (br_if $do-once21 - (i32.eqz - (local.get $11) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $11) - (local.tee $0 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $11) - (local.get $12) - ) - (if - (local.tee $1 - (i32.load offset=16 - (local.get $4) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $0) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $11) - (local.get $1) - ) - (i32.store offset=24 - (local.get $1) - (local.get $11) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $4) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $11) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $11) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $2) - (i32.const 16) - ) - (block - (i32.store offset=4 - (local.get $4) - (i32.or - (local.tee $0 - (i32.add - (local.get $2) - (local.get $3) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $4) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - ) - (block $do-once25 - (i32.store offset=4 - (local.get $4) - (i32.or - (local.get $3) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.get $5) - (i32.or - (local.get $2) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $2) - (local.get $5) - ) - (local.get $2) - ) - (local.set $0 - (i32.shr_u - (local.get $2) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $2) - (i32.const 256) - ) - (block - (local.set $2 - (i32.add - (i32.shl - (local.get $0) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $1 - (i32.load - (i32.const 176) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - (if - (i32.lt_u - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $13 - (local.get $1) - ) - (local.set $6 - (local.get $0) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - (local.set $13 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - (local.set $6 - (local.get $2) - ) - ) - ) - (i32.store - (local.get $13) - (local.get $5) - ) - (i32.store offset=12 - (local.get $6) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $6) - ) - (i32.store offset=12 - (local.get $5) - (local.get $2) - ) - (br $do-once25) - ) - ) - (local.set $3 - (i32.add - (local.tee $9 - (i32.shl - (local.tee $7 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $2) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $2) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $7 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $3 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.get $7) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $2) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $1) - (local.get $7) - ) - (local.get $3) - ) - ) - (i32.shr_u - (i32.shl - (local.get $0) - (local.get $3) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $5) - (local.get $7) - ) - (i32.store offset=20 - (local.get $5) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $5) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $1 - (i32.load - (i32.const 180) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $7) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - (i32.store offset=480 - (local.get $9) - (local.get $5) - ) - (i32.store offset=24 - (local.get $5) - (local.get $3) - ) - (i32.store offset=12 - (local.get $5) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $5) - ) - (br $do-once25) - ) - ) - (local.set $7 - (i32.shl - (local.get $2) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $7) - (i32.const 1) - ) - ) - (i32.eq - (local.get $7) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load offset=480 - (local.get $9) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (loop $while-in28 - (br_if $__rjti$1 - (i32.eq - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - (local.get $2) - ) - ) - (local.set $3 - (i32.shl - (local.get $7) - (i32.const 1) - ) - ) - (if - (local.tee $1 - (i32.load - (local.tee $7 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $7) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $7 - (local.get $3) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in28) - ) - ) - ) - (if - (i32.lt_u - (local.get $7) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $7) - (local.get $5) - ) - (i32.store offset=24 - (local.get $5) - (local.get $0) - ) - (i32.store offset=12 - (local.get $5) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $5) - ) - (br $do-once25) - ) - ) - (br $__rjto$1) - ) - (if - (i32.and - (i32.ge_u - (local.tee $2 - (i32.load offset=8 - (local.get $0) - ) - ) - (local.tee $1 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $1) - ) - ) - (block - (i32.store offset=12 - (local.get $2) - (local.get $5) - ) - (i32.store offset=8 - (local.get $0) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $2) - ) - (i32.store offset=12 - (local.get $5) - (local.get $0) - ) - (i32.store offset=24 - (local.get $5) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (return - (i32.add - (local.get $4) - (i32.const 8) - ) - ) - ) - (local.get $3) - ) - (local.get $3) - ) - ) - (local.get $3) - ) - ) - ) - ) - ) - (if - (i32.ge_u - (local.tee $1 - (i32.load - (i32.const 184) - ) - ) - (local.get $0) - ) - (block - (local.set $3 - (i32.load - (i32.const 196) - ) - ) - (if - (i32.gt_u - (local.tee $2 - (i32.sub - (local.get $1) - (local.get $0) - ) - ) - (i32.const 15) - ) - (block - (i32.store - (i32.const 196) - (local.tee $1 - (i32.add - (local.get $0) - (local.get $3) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $2) - ) - (i32.store offset=4 - (local.get $1) - (i32.or - (local.get $2) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $1) - (local.get $2) - ) - (local.get $2) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $0) - (i32.const 3) - ) - ) - ) - (block - (i32.store - (i32.const 184) - (i32.const 0) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $1) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $1) - (local.get $3) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - ) - ) - (return - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - ) - (block $folding-inner0 - (br_if $folding-inner0 - (i32.gt_u - (local.tee $1 - (i32.load - (i32.const 188) - ) - ) - (local.get $0) - ) - ) - (if - (i32.eqz - (i32.load - (i32.const 648) - ) - ) - (if - (i32.and - (local.tee $1 - (call $_sysconf - (i32.const 30) - ) - ) - (i32.add - (local.get $1) - (i32.const -1) - ) - ) - (call $_abort) - (block - (i32.store - (i32.const 656) - (local.get $1) - ) - (i32.store - (i32.const 652) - (local.get $1) - ) - (i32.store - (i32.const 660) - (i32.const -1) - ) - (i32.store - (i32.const 664) - (i32.const -1) - ) - (i32.store - (i32.const 668) - (i32.const 0) - ) - (i32.store - (i32.const 620) - (i32.const 0) - ) - (i32.store - (i32.const 648) - (i32.xor - (i32.and - (call $_time - (i32.const 0) - ) - (i32.const -16) - ) - (i32.const 1431655768) - ) - ) - ) - ) - ) - (if - (i32.le_u - (local.tee $6 - (i32.and - (local.tee $5 - (i32.add - (local.tee $1 - (i32.load - (i32.const 656) - ) - ) - (local.tee $8 - (i32.add - (local.get $0) - (i32.const 47) - ) - ) - ) - ) - (local.tee $12 - (i32.sub - (i32.const 0) - (local.get $1) - ) - ) - ) - ) - (local.get $0) - ) - (return - (i32.const 0) - ) - ) - (if - (local.tee $3 - (i32.load - (i32.const 616) - ) - ) - (if - (i32.or - (i32.le_u - (local.tee $1 - (i32.add - (local.tee $2 - (i32.load - (i32.const 608) - ) - ) - (local.get $6) - ) - ) - (local.get $2) - ) - (i32.gt_u - (local.get $1) - (local.get $3) - ) - ) - (return - (i32.const 0) - ) - ) - ) - (local.set $11 - (i32.add - (local.get $0) - (i32.const 48) - ) - ) - (block $__rjto$13 - (block $__rjti$13 - (if - (i32.eqz - (i32.and - (i32.load - (i32.const 620) - ) - (i32.const 4) - ) - ) - (block - (block $label$break$L279 - (block $__rjti$5 - (block $__rjti$4 - (br_if $__rjti$4 - (i32.eqz - (local.tee $4 - (i32.load - (i32.const 200) - ) - ) - ) - ) - (local.set $1 - (i32.const 624) - ) - (loop $while-in34 - (block $while-out33 - (if - (i32.le_u - (local.tee $2 - (i32.load - (local.get $1) - ) - ) - (local.get $4) - ) - (if - (i32.gt_u - (i32.add - (local.get $2) - (i32.load - (local.tee $3 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - ) - ) - (local.get $4) - ) - (block - (local.set $4 - (local.get $1) - ) - (br $while-out33) - ) - ) - ) - (br_if $while-in34 - (local.tee $1 - (i32.load offset=8 - (local.get $1) - ) - ) - ) - (br $__rjti$4) - ) - ) - (if - (i32.lt_u - (local.tee $2 - (i32.and - (i32.sub - (local.get $5) - (i32.load - (i32.const 188) - ) - ) - (local.get $12) - ) - ) - (i32.const 2147483647) - ) - (block - (local.set $1 - (call $_sbrk - (local.get $2) - ) - ) - (if - (i32.eq - (i32.add - (i32.load - (local.get $4) - ) - (i32.load - (local.get $3) - ) - ) - (local.get $1) - ) - (br_if $__rjti$13 - (i32.ne - (local.get $1) - (i32.const -1) - ) - ) - (block - (local.set $3 - (local.get $1) - ) - (br $__rjti$5) - ) - ) - ) - ) - (br $label$break$L279) - ) - (if - (i32.ne - (local.tee $1 - (call $_sbrk - (i32.const 0) - ) - ) - (i32.const -1) - ) - (block - (local.set $2 - (if (result i32) - (i32.and - (local.tee $2 - (local.get $1) - ) - (local.tee $3 - (i32.add - (local.tee $4 - (i32.load - (i32.const 652) - ) - ) - (i32.const -1) - ) - ) - ) - (i32.add - (i32.sub - (local.get $6) - (local.get $2) - ) - (i32.and - (i32.add - (local.get $2) - (local.get $3) - ) - (i32.sub - (i32.const 0) - (local.get $4) - ) - ) - ) - (local.get $6) - ) - ) - (local.set $12 - (i32.add - (local.tee $4 - (i32.load - (i32.const 608) - ) - ) - (local.get $2) - ) - ) - (if - (i32.and - (i32.lt_u - (local.get $2) - (i32.const 2147483647) - ) - (i32.gt_u - (local.get $2) - (local.get $0) - ) - ) - (block - (br_if $label$break$L279 - (select - (local.tee $3 - (i32.load - (i32.const 616) - ) - ) - (i32.const 0) - (i32.or - (i32.le_u - (local.get $12) - (local.get $4) - ) - (i32.gt_u - (local.get $12) - (local.get $3) - ) - ) - ) - ) - (br_if $__rjti$13 - (i32.eq - (local.get $1) - (local.tee $3 - (call $_sbrk - (local.get $2) - ) - ) - ) - ) - (br $__rjti$5) - ) - ) - ) - ) - (br $label$break$L279) - ) - (local.set $1 - (local.get $2) - ) - (local.set $4 - (i32.sub - (i32.const 0) - (local.get $1) - ) - ) - (local.set $2 - (if (result i32) - (i32.and - (i32.and - (i32.ne - (local.get $3) - (i32.const -1) - ) - (i32.lt_u - (local.get $1) - (i32.const 2147483647) - ) - ) - (i32.gt_u - (local.get $11) - (local.get $1) - ) - ) - (if (result i32) - (i32.lt_u - (local.tee $2 - (i32.and - (i32.add - (local.tee $2 - (i32.load - (i32.const 656) - ) - ) - (i32.sub - (local.get $8) - (local.get $1) - ) - ) - (i32.sub - (i32.const 0) - (local.get $2) - ) - ) - ) - (i32.const 2147483647) - ) - (if (result i32) - (i32.eq - (call $_sbrk - (local.get $2) - ) - (i32.const -1) - ) - (block - (drop - (call $_sbrk - (local.get $4) - ) - ) - (br $label$break$L279) - ) - (i32.add - (local.get $1) - (local.get $2) - ) - ) - (local.get $1) - ) - (local.get $1) - ) - ) - (if - (i32.ne - (local.get $3) - (i32.const -1) - ) - (block - (local.set $1 - (local.get $3) - ) - (br $__rjti$13) - ) - ) - ) - (i32.store - (i32.const 620) - (i32.or - (i32.load - (i32.const 620) - ) - (i32.const 4) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $6) - (i32.const 2147483647) - ) - (if - (i32.and - (i32.lt_u - (local.tee $1 - (call $_sbrk - (local.get $6) - ) - ) - (local.tee $2 - (call $_sbrk - (i32.const 0) - ) - ) - ) - (i32.and - (i32.ne - (local.get $1) - (i32.const -1) - ) - (i32.ne - (local.get $2) - (i32.const -1) - ) - ) - ) - (br_if $__rjti$13 - (i32.gt_u - (local.tee $2 - (i32.sub - (local.get $2) - (local.get $1) - ) - ) - (i32.add - (local.get $0) - (i32.const 40) - ) - ) - ) - ) - ) - (br $__rjto$13) - ) - (i32.store - (i32.const 608) - (local.tee $3 - (i32.add - (i32.load - (i32.const 608) - ) - (local.get $2) - ) - ) - ) - (if - (i32.gt_u - (local.get $3) - (i32.load - (i32.const 612) - ) - ) - (i32.store - (i32.const 612) - (local.get $3) - ) - ) - (if - (local.tee $5 - (i32.load - (i32.const 200) - ) - ) - (block $do-once40 - (local.set $3 - (i32.const 624) - ) - (block $__rjto$10 - (block $__rjti$10 - (loop $while-in45 - (br_if $__rjti$10 - (i32.eq - (i32.add - (local.tee $11 - (i32.load - (local.get $3) - ) - ) - (local.tee $6 - (i32.load - (local.tee $4 - (i32.add - (local.get $3) - (i32.const 4) - ) - ) - ) - ) - ) - (local.get $1) - ) - ) - (br_if $while-in45 - (local.tee $3 - (i32.load offset=8 - (local.get $3) - ) - ) - ) - ) - (br $__rjto$10) - ) - (if - (i32.eqz - (i32.and - (i32.load offset=12 - (local.get $3) - ) - (i32.const 8) - ) - ) - (if - (i32.and - (i32.lt_u - (local.get $5) - (local.get $1) - ) - (i32.ge_u - (local.get $5) - (local.get $11) - ) - ) - (block - (i32.store - (local.get $4) - (i32.add - (local.get $2) - (local.get $6) - ) - ) - (local.set $3 - (i32.add - (local.get $5) - (local.tee $1 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.get $5) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - ) - ) - ) - (local.set $1 - (i32.add - (i32.load - (i32.const 188) - ) - (i32.sub - (local.get $2) - (local.get $1) - ) - ) - ) - (i32.store - (i32.const 200) - (local.get $3) - ) - (i32.store - (i32.const 188) - (local.get $1) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $1) - (local.get $3) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - (br $do-once40) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.tee $4 - (i32.load - (i32.const 192) - ) - ) - ) - (block - (i32.store - (i32.const 192) - (local.get $1) - ) - (local.set $4 - (local.get $1) - ) - ) - ) - (local.set $11 - (i32.add - (local.get $1) - (local.get $2) - ) - ) - (local.set $3 - (i32.const 624) - ) - (local.set $4 - (block $__rjto$11 (result i32) - (block $__rjti$11 - (br $__rjto$11 - (loop $while-in47 (result i32) - (if - (i32.eq - (i32.load - (local.get $3) - ) - (local.get $11) - ) - (block - (local.set $6 - (local.get $3) - ) - (br $__rjti$11) - ) - ) - (br_if $while-in47 - (local.tee $3 - (i32.load offset=8 - (local.get $3) - ) - ) - ) - (i32.const 624) - ) - ) - ) - (if (result i32) - (i32.and - (i32.load offset=12 - (local.get $3) - ) - (i32.const 8) - ) - (i32.const 624) - (block - (i32.store - (local.get $6) - (local.get $1) - ) - (i32.store offset=4 - (local.get $3) - (i32.add - (i32.load offset=4 - (local.get $3) - ) - (local.get $2) - ) - ) - (local.set $8 - (i32.add - (local.tee $12 - (i32.add - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $2 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $2) - (i32.const 7) - ) - ) - (local.get $1) - ) - ) - (local.get $0) - ) - ) - (local.set $7 - (i32.sub - (i32.sub - (local.tee $6 - (i32.add - (local.get $11) - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.get $11) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - ) - ) - (local.get $12) - ) - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $12) - (i32.or - (local.get $0) - (i32.const 3) - ) - ) - (if - (i32.eq - (local.get $5) - (local.get $6) - ) - (block - (i32.store - (i32.const 188) - (local.tee $0 - (i32.add - (i32.load - (i32.const 188) - ) - (local.get $7) - ) - ) - ) - (i32.store - (i32.const 200) - (local.get $8) - ) - (i32.store offset=4 - (local.get $8) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - ) - (block $do-once48 - (if - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $6) - ) - (block - (i32.store - (i32.const 184) - (local.tee $0 - (i32.add - (i32.load - (i32.const 184) - ) - (local.get $7) - ) - ) - ) - (i32.store - (i32.const 196) - (local.get $8) - ) - (i32.store offset=4 - (local.get $8) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $8) - ) - (local.get $0) - ) - (br $do-once48) - ) - ) - (i32.store offset=4 - (local.tee $0 - (if (result i32) - (i32.eq - (i32.and - (local.tee $0 - (i32.load offset=4 - (local.get $6) - ) - ) - (i32.const 3) - ) - (i32.const 1) - ) - (block (result i32) - (local.set $11 - (i32.and - (local.get $0) - (i32.const -8) - ) - ) - (local.set $1 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (block $label$break$L331 - (if - (i32.lt_u - (local.get $0) - (i32.const 256) - ) - (block - (local.set $3 - (i32.load offset=12 - (local.get $6) - ) - ) - (if - (i32.ne - (local.tee $2 - (i32.load offset=8 - (local.get $6) - ) - ) - (local.tee $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - (block $do-once51 - (if - (i32.lt_u - (local.get $2) - (local.get $4) - ) - (call $_abort) - ) - (br_if $do-once51 - (i32.eq - (i32.load offset=12 - (local.get $2) - ) - (local.get $6) - ) - ) - (call $_abort) - ) - ) - (if - (i32.eq - (local.get $2) - (local.get $3) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $1) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$L331) - ) - ) - (if - (i32.eq - (local.get $0) - (local.get $3) - ) - (local.set $15 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - (block $do-once53 - (if - (i32.lt_u - (local.get $3) - (local.get $4) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (local.tee $0 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - (local.get $6) - ) - (block - (local.set $15 - (local.get $0) - ) - (br $do-once53) - ) - ) - (call $_abort) - ) - ) - (i32.store offset=12 - (local.get $2) - (local.get $3) - ) - (i32.store - (local.get $15) - (local.get $2) - ) - ) - (block - (local.set $5 - (i32.load offset=24 - (local.get $6) - ) - ) - (if - (i32.eq - (local.tee $0 - (i32.load offset=12 - (local.get $6) - ) - ) - (local.get $6) - ) - (block $do-once55 - (if - (i32.eqz - (local.tee $1 - (i32.load - (local.tee $0 - (i32.add - (local.tee $2 - (i32.add - (local.get $6) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - ) - (block - (br_if $do-once55 - (i32.eqz - (local.tee $1 - (i32.load - (local.get $2) - ) - ) - ) - ) - (local.set $0 - (local.get $2) - ) - ) - ) - (loop $while-in58 - (if - (local.tee $2 - (i32.load - (local.tee $3 - (i32.add - (local.get $1) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $1 - (local.get $2) - ) - (local.set $0 - (local.get $3) - ) - (br $while-in58) - ) - ) - (if - (local.tee $2 - (i32.load - (local.tee $3 - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $1 - (local.get $2) - ) - (local.set $0 - (local.get $3) - ) - (br $while-in58) - ) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $4) - ) - (call $_abort) - (block - (i32.store - (local.get $0) - (i32.const 0) - ) - (local.set $10 - (local.get $1) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $6) - ) - ) - (local.get $4) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $6) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=8 - (local.get $0) - ) - (local.get $6) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $10 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (br_if $label$break$L331 - (i32.eqz - (local.get $5) - ) - ) - (if - (i32.eq - (i32.load offset=480 - (local.tee $0 - (i32.shl - (local.tee $1 - (i32.load offset=28 - (local.get $6) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $6) - ) - (block $do-once59 - (i32.store offset=480 - (local.get $0) - (local.get $10) - ) - (br_if $do-once59 - (local.get $10) - ) - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $1) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$L331) - ) - (block - (if - (i32.lt_u - (local.get $5) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=16 - (local.get $5) - ) - (local.get $6) - ) - (i32.store offset=16 - (local.get $5) - (local.get $10) - ) - (i32.store offset=20 - (local.get $5) - (local.get $10) - ) - ) - (br_if $label$break$L331 - (i32.eqz - (local.get $10) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $10) - (local.tee $0 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $10) - (local.get $5) - ) - (if - (local.tee $1 - (i32.load offset=16 - (local.get $6) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $0) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $10) - (local.get $1) - ) - (i32.store offset=24 - (local.get $1) - (local.get $10) - ) - ) - ) - ) - (br_if $label$break$L331 - (i32.eqz - (local.tee $0 - (i32.load offset=20 - (local.get $6) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $10) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $10) - ) - ) - ) - ) - ) - ) - (local.set $7 - (i32.add - (local.get $7) - (local.get $11) - ) - ) - (i32.add - (local.get $6) - (local.get $11) - ) - ) - (local.get $6) - ) - ) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $8) - (i32.or - (local.get $7) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $7) - (local.get $8) - ) - (local.get $7) - ) - (local.set $0 - (i32.shr_u - (local.get $7) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $7) - (i32.const 256) - ) - (block - (local.set $2 - (i32.add - (i32.shl - (local.get $0) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $1 - (i32.load - (i32.const 176) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - (block $do-once63 - (if - (i32.ge_u - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (block - (local.set $16 - (local.get $1) - ) - (local.set $9 - (local.get $0) - ) - (br $do-once63) - ) - ) - (call $_abort) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - (local.set $16 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - (local.set $9 - (local.get $2) - ) - ) - ) - (i32.store - (local.get $16) - (local.get $8) - ) - (i32.store offset=12 - (local.get $9) - (local.get $8) - ) - (i32.store offset=8 - (local.get $8) - (local.get $9) - ) - (i32.store offset=12 - (local.get $8) - (local.get $2) - ) - (br $do-once48) - ) - ) - (local.set $2 - (i32.add - (local.tee $4 - (i32.shl - (local.tee $3 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $7) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $7) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $3 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $2 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.get $3) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $7) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $1) - (local.get $3) - ) - (local.get $2) - ) - ) - (i32.shr_u - (i32.shl - (local.get $0) - (local.get $2) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $8) - (local.get $3) - ) - (i32.store offset=20 - (local.get $8) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $8) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $1 - (i32.load - (i32.const 180) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $3) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - (i32.store offset=480 - (local.get $4) - (local.get $8) - ) - (i32.store offset=24 - (local.get $8) - (local.get $2) - ) - (i32.store offset=12 - (local.get $8) - (local.get $8) - ) - (i32.store offset=8 - (local.get $8) - (local.get $8) - ) - (br $do-once48) - ) - ) - (local.set $3 - (i32.shl - (local.get $7) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $3) - (i32.const 1) - ) - ) - (i32.eq - (local.get $3) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load offset=480 - (local.get $4) - ) - ) - (block $__rjto$7 - (block $__rjti$7 - (loop $while-in68 - (br_if $__rjti$7 - (i32.eq - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - (local.get $7) - ) - ) - (local.set $2 - (i32.shl - (local.get $3) - (i32.const 1) - ) - ) - (if - (local.tee $1 - (i32.load - (local.tee $3 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $3) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $3 - (local.get $2) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in68) - ) - ) - ) - (if - (i32.lt_u - (local.get $3) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $3) - (local.get $8) - ) - (i32.store offset=24 - (local.get $8) - (local.get $0) - ) - (i32.store offset=12 - (local.get $8) - (local.get $8) - ) - (i32.store offset=8 - (local.get $8) - (local.get $8) - ) - (br $do-once48) - ) - ) - (br $__rjto$7) - ) - (if - (i32.and - (i32.ge_u - (local.tee $2 - (i32.load offset=8 - (local.get $0) - ) - ) - (local.tee $1 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $1) - ) - ) - (block - (i32.store offset=12 - (local.get $2) - (local.get $8) - ) - (i32.store offset=8 - (local.get $0) - (local.get $8) - ) - (i32.store offset=8 - (local.get $8) - (local.get $2) - ) - (i32.store offset=12 - (local.get $8) - (local.get $0) - ) - (i32.store offset=24 - (local.get $8) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (return - (i32.add - (local.get $12) - (i32.const 8) - ) - ) - ) - ) - ) - ) - (loop $while-in70 - (block $while-out69 - (if - (i32.le_u - (local.tee $3 - (i32.load - (local.get $4) - ) - ) - (local.get $5) - ) - (br_if $while-out69 - (i32.gt_u - (local.tee $3 - (i32.add - (local.get $3) - (i32.load offset=4 - (local.get $4) - ) - ) - ) - (local.get $5) - ) - ) - ) - (local.set $4 - (i32.load offset=8 - (local.get $4) - ) - ) - (br $while-in70) - ) - ) - (local.set $10 - (i32.add - (local.tee $9 - (i32.add - (local.get $3) - (i32.const -47) - ) - ) - (i32.const 8) - ) - ) - (i32.store - (i32.const 200) - (local.tee $6 - (i32.add - (local.tee $4 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $4 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $4) - (i32.const 7) - ) - ) - ) - (local.get $1) - ) - ) - ) - (i32.store - (i32.const 188) - (local.tee $4 - (i32.sub - (i32.add - (local.get $2) - (i32.const -40) - ) - (local.get $4) - ) - ) - ) - (i32.store offset=4 - (local.get $6) - (i32.or - (local.get $4) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $4) - (local.get $6) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - (i32.store offset=4 - (local.tee $9 - (select - (local.get $5) - (local.tee $4 - (i32.add - (local.get $9) - (select - (i32.and - (i32.sub - (i32.const 0) - (local.get $10) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $10) - (i32.const 7) - ) - ) - ) - ) - (i32.lt_u - (local.get $4) - (local.tee $4 - (i32.add - (local.get $5) - (i32.const 16) - ) - ) - ) - ) - ) - (i32.const 27) - ) - (i32.store offset=8 - (local.get $9) - (i32.load - (i32.const 624) - ) - ) - (i32.store offset=12 - (local.get $9) - (i32.load - (i32.const 628) - ) - ) - (i32.store offset=16 - (local.get $9) - (i32.load - (i32.const 632) - ) - ) - (i32.store offset=20 - (local.get $9) - (i32.load - (i32.const 636) - ) - ) - (i32.store - (i32.const 624) - (local.get $1) - ) - (i32.store - (i32.const 628) - (local.get $2) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (i32.store - (i32.const 632) - (i32.add - (local.get $9) - (i32.const 8) - ) - ) - (local.set $1 - (i32.add - (local.get $9) - (i32.const 24) - ) - ) - (loop $while-in72 - (i32.store - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.const 7) - ) - (br_if $while-in72 - (i32.lt_u - (i32.add - (local.get $1) - (i32.const 4) - ) - (local.get $3) - ) - ) - ) - (if - (i32.ne - (local.get $5) - (local.get $9) - ) - (block - (i32.store offset=4 - (local.get $9) - (i32.and - (i32.load offset=4 - (local.get $9) - ) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $5) - (i32.or - (local.tee $6 - (i32.sub - (local.get $9) - (local.get $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (local.get $9) - (local.get $6) - ) - (local.set $1 - (i32.shr_u - (local.get $6) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $6) - (i32.const 256) - ) - (block - (local.set $3 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $2 - (i32.load - (i32.const 176) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $1 - (i32.load - (local.tee $2 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $17 - (local.get $2) - ) - (local.set $7 - (local.get $1) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $1) - (local.get $2) - ) - ) - (local.set $17 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - (local.set $7 - (local.get $3) - ) - ) - ) - (i32.store - (local.get $17) - (local.get $5) - ) - (i32.store offset=12 - (local.get $7) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $7) - ) - (i32.store offset=12 - (local.get $5) - (local.get $3) - ) - (br $do-once40) - ) - ) - (local.set $3 - (i32.add - (local.tee $7 - (i32.shl - (local.tee $9 - (if (result i32) - (local.tee $1 - (i32.shr_u - (local.get $6) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $6) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $7 - (i32.and - (i32.shr_u - (i32.add - (local.tee $1 - (i32.shl - (local.get $1) - (local.tee $2 - (i32.and - (i32.shr_u - (i32.add - (local.get $1) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $3 - (i32.and - (i32.shr_u - (i32.add - (local.tee $1 - (i32.shl - (local.get $1) - (local.get $7) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $6) - (i32.add - (local.tee $1 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $2) - (local.get $7) - ) - (local.get $3) - ) - ) - (i32.shr_u - (i32.shl - (local.get $1) - (local.get $3) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $1) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $5) - (local.get $9) - ) - (i32.store offset=20 - (local.get $5) - (i32.const 0) - ) - (i32.store - (local.get $4) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $2 - (i32.load - (i32.const 180) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $9) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $1) - (local.get $2) - ) - ) - (i32.store offset=480 - (local.get $7) - (local.get $5) - ) - (i32.store offset=24 - (local.get $5) - (local.get $3) - ) - (i32.store offset=12 - (local.get $5) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $5) - ) - (br $do-once40) - ) - ) - (local.set $4 - (i32.shl - (local.get $6) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $9) - (i32.const 1) - ) - ) - (i32.eq - (local.get $9) - (i32.const 31) - ) - ) - ) - ) - (local.set $1 - (i32.load offset=480 - (local.get $7) - ) - ) - (block $__rjto$9 - (block $__rjti$9 - (loop $while-in74 - (br_if $__rjti$9 - (i32.eq - (i32.and - (i32.load offset=4 - (local.get $1) - ) - (i32.const -8) - ) - (local.get $6) - ) - ) - (local.set $3 - (i32.shl - (local.get $4) - (i32.const 1) - ) - ) - (if - (local.tee $2 - (i32.load - (local.tee $4 - (i32.add - (i32.add - (local.get $1) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $4) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $3) - ) - (local.set $1 - (local.get $2) - ) - (br $while-in74) - ) - ) - ) - (if - (i32.lt_u - (local.get $4) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $4) - (local.get $5) - ) - (i32.store offset=24 - (local.get $5) - (local.get $1) - ) - (i32.store offset=12 - (local.get $5) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $5) - ) - (br $do-once40) - ) - ) - (br $__rjto$9) - ) - (if - (i32.and - (i32.ge_u - (local.tee $3 - (i32.load offset=8 - (local.get $1) - ) - ) - (local.tee $2 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $1) - (local.get $2) - ) - ) - (block - (i32.store offset=12 - (local.get $3) - (local.get $5) - ) - (i32.store offset=8 - (local.get $1) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $3) - ) - (i32.store offset=12 - (local.get $5) - (local.get $1) - ) - (i32.store offset=24 - (local.get $5) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - ) - (block - (if - (i32.or - (i32.eqz - (local.tee $3 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.lt_u - (local.get $1) - (local.get $3) - ) - ) - (i32.store - (i32.const 192) - (local.get $1) - ) - ) - (i32.store - (i32.const 624) - (local.get $1) - ) - (i32.store - (i32.const 628) - (local.get $2) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (i32.store - (i32.const 212) - (i32.load - (i32.const 648) - ) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - (local.set $3 - (i32.const 0) - ) - (loop $while-in43 - (local.set $4 - (i32.add - (local.tee $7 - (i32.shl - (local.get $3) - (i32.const 3) - ) - ) - (i32.const 216) - ) - ) - (i32.store offset=228 - (local.get $7) - (local.get $4) - ) - (i32.store offset=224 - (local.get $7) - (local.get $4) - ) - (br_if $while-in43 - (i32.ne - (local.tee $3 - (i32.add - (local.get $3) - (i32.const 1) - ) - ) - (i32.const 32) - ) - ) - ) - (i32.store - (i32.const 200) - (local.tee $4 - (i32.add - (local.tee $3 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $3 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $3) - (i32.const 7) - ) - ) - ) - (local.get $1) - ) - ) - ) - (i32.store - (i32.const 188) - (local.tee $1 - (i32.sub - (i32.add - (local.get $2) - (i32.const -40) - ) - (local.get $3) - ) - ) - ) - (i32.store offset=4 - (local.get $4) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $1) - (local.get $4) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - ) - ) - (br_if $folding-inner0 - (i32.gt_u - (local.tee $1 - (i32.load - (i32.const 188) - ) - ) - (local.get $0) - ) - ) - ) - (i32.store - (call $___errno_location) - (i32.const 12) - ) - (return - (i32.const 0) - ) - ) - (i32.store - (i32.const 188) - (local.tee $2 - (i32.sub - (local.get $1) - (local.get $0) - ) - ) - ) - (i32.store - (i32.const 200) - (local.tee $1 - (i32.add - (local.tee $3 - (i32.load - (i32.const 200) - ) - ) - (local.get $0) - ) - ) - ) - (i32.store offset=4 - (local.get $1) - (i32.or - (local.get $2) - (i32.const 1) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $0) - (i32.const 3) - ) - ) - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - (func $_free (; 53 ;) (; has Stack IR ;) (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (if - (i32.eqz - (local.get $0) - ) - (return) - ) - (if - (i32.lt_u - (local.tee $1 - (i32.add - (local.get $0) - (i32.const -8) - ) - ) - (local.tee $12 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.tee $4 - (i32.and - (local.tee $8 - (i32.load - (i32.add - (local.get $0) - (i32.const -4) - ) - ) - ) - (i32.const 3) - ) - ) - (i32.const 1) - ) - (call $_abort) - ) - (local.set $7 - (i32.add - (local.get $1) - (local.tee $0 - (i32.and - (local.get $8) - (i32.const -8) - ) - ) - ) - ) - (if - (i32.and - (local.get $8) - (i32.const 1) - ) - (block - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - ) - (block $do-once - (local.set $8 - (i32.load - (local.get $1) - ) - ) - (if - (i32.eqz - (local.get $4) - ) - (return) - ) - (if - (i32.lt_u - (local.tee $1 - (i32.sub - (local.get $1) - (local.get $8) - ) - ) - (local.get $12) - ) - (call $_abort) - ) - (local.set $0 - (i32.add - (local.get $0) - (local.get $8) - ) - ) - (if - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $1) - ) - (block - (if - (i32.ne - (i32.and - (local.tee $2 - (i32.load offset=4 - (local.get $7) - ) - ) - (i32.const 3) - ) - (i32.const 3) - ) - (block - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - (br $do-once) - ) - ) - (i32.store - (i32.const 184) - (local.get $0) - ) - (i32.store offset=4 - (local.get $7) - (i32.and - (local.get $2) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $1) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $1) - ) - (local.get $0) - ) - (return) - ) - ) - (local.set $4 - (i32.shr_u - (local.get $8) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $8) - (i32.const 256) - ) - (block - (local.set $6 - (i32.load offset=12 - (local.get $1) - ) - ) - (if - (i32.ne - (local.tee $3 - (i32.load offset=8 - (local.get $1) - ) - ) - (local.tee $2 - (i32.add - (i32.shl - (local.get $4) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $3) - (local.get $12) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $1) - (i32.load offset=12 - (local.get $3) - ) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (local.get $3) - (local.get $6) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - (br $do-once) - ) - ) - (if - (i32.eq - (local.get $2) - (local.get $6) - ) - (local.set $5 - (i32.add - (local.get $6) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $6) - (local.get $12) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (local.tee $2 - (i32.add - (local.get $6) - (i32.const 8) - ) - ) - ) - (local.get $1) - ) - (local.set $5 - (local.get $2) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=12 - (local.get $3) - (local.get $6) - ) - (i32.store - (local.get $5) - (local.get $3) - ) - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - (br $do-once) - ) - ) - (local.set $10 - (i32.load offset=24 - (local.get $1) - ) - ) - (if - (i32.eq - (local.tee $5 - (i32.load offset=12 - (local.get $1) - ) - ) - (local.get $1) - ) - (block $do-once0 - (if - (i32.eqz - (local.tee $4 - (i32.load - (local.tee $5 - (i32.add - (local.tee $8 - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - ) - (block - (br_if $do-once0 - (i32.eqz - (local.tee $4 - (i32.load - (local.get $8) - ) - ) - ) - ) - (local.set $5 - (local.get $8) - ) - ) - ) - (loop $while-in - (if - (local.tee $8 - (i32.load - (local.tee $13 - (i32.add - (local.get $4) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $8) - ) - (local.set $5 - (local.get $13) - ) - (br $while-in) - ) - ) - (if - (local.tee $8 - (i32.load - (local.tee $13 - (i32.add - (local.get $4) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $8) - ) - (local.set $5 - (local.get $13) - ) - (br $while-in) - ) - ) - ) - (if - (i32.lt_u - (local.get $5) - (local.get $12) - ) - (call $_abort) - (block - (i32.store - (local.get $5) - (i32.const 0) - ) - (local.set $6 - (local.get $4) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $4 - (i32.load offset=8 - (local.get $1) - ) - ) - (local.get $12) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $1) - (i32.load offset=12 - (local.get $4) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=8 - (local.get $5) - ) - (local.get $1) - ) - (block - (i32.store offset=12 - (local.get $4) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $4) - ) - (local.set $6 - (local.get $5) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $10) - (block - (if - (i32.eq - (i32.load offset=480 - (local.tee $5 - (i32.shl - (local.tee $4 - (i32.load offset=28 - (local.get $1) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $1) - ) - (block - (i32.store offset=480 - (local.get $5) - (local.get $6) - ) - (if - (i32.eqz - (local.get $6) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - (br $do-once) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $10) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=16 - (local.get $10) - ) - (local.get $1) - ) - (i32.store offset=16 - (local.get $10) - (local.get $6) - ) - (i32.store offset=20 - (local.get $10) - (local.get $6) - ) - ) - (if - (i32.eqz - (local.get $6) - ) - (block - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - (br $do-once) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $6) - (local.tee $5 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $6) - (local.get $10) - ) - (if - (local.tee $4 - (i32.load offset=16 - (local.get $1) - ) - ) - (if - (i32.lt_u - (local.get $4) - (local.get $5) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $6) - (local.get $4) - ) - (i32.store offset=24 - (local.get $4) - (local.get $6) - ) - ) - ) - ) - (if - (local.tee $5 - (i32.load offset=20 - (local.get $1) - ) - ) - (if - (i32.lt_u - (local.get $5) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $6) - (local.get $5) - ) - (i32.store offset=24 - (local.get $5) - (local.get $6) - ) - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - ) - ) - (block - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - ) - ) - ) - (block - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - ) - ) - ) - ) - (if - (i32.ge_u - (local.get $3) - (local.get $7) - ) - (call $_abort) - ) - (if - (i32.eqz - (i32.and - (local.tee $0 - (i32.load offset=4 - (local.get $7) - ) - ) - (i32.const 1) - ) - ) - (call $_abort) - ) - (if - (i32.and - (local.get $0) - (i32.const 2) - ) - (block - (i32.store offset=4 - (local.get $7) - (i32.and - (local.get $0) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $2) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $2) - (local.get $3) - ) - (local.get $2) - ) - ) - (block - (if - (i32.eq - (i32.load - (i32.const 200) - ) - (local.get $7) - ) - (block - (i32.store - (i32.const 188) - (local.tee $0 - (i32.add - (i32.load - (i32.const 188) - ) - (local.get $2) - ) - ) - ) - (i32.store - (i32.const 200) - (local.get $3) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (if - (i32.ne - (local.get $3) - (i32.load - (i32.const 196) - ) - ) - (return) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (i32.store - (i32.const 184) - (i32.const 0) - ) - (return) - ) - ) - (if - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $7) - ) - (block - (i32.store - (i32.const 184) - (local.tee $0 - (i32.add - (i32.load - (i32.const 184) - ) - (local.get $2) - ) - ) - ) - (i32.store - (i32.const 196) - (local.get $3) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $3) - ) - (local.get $0) - ) - (return) - ) - ) - (local.set $4 - (i32.add - (i32.and - (local.get $0) - (i32.const -8) - ) - (local.get $2) - ) - ) - (local.set $2 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (block $do-once4 - (if - (i32.lt_u - (local.get $0) - (i32.const 256) - ) - (block - (local.set $5 - (i32.load offset=12 - (local.get $7) - ) - ) - (if - (i32.ne - (local.tee $1 - (i32.load offset=8 - (local.get $7) - ) - ) - (local.tee $0 - (i32.add - (i32.shl - (local.get $2) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $1) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $7) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (local.get $1) - (local.get $5) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $2) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - (if - (i32.eq - (local.get $0) - (local.get $5) - ) - (local.set $14 - (i32.add - (local.get $5) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $5) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (local.tee $0 - (i32.add - (local.get $5) - (i32.const 8) - ) - ) - ) - (local.get $7) - ) - (local.set $14 - (local.get $0) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=12 - (local.get $1) - (local.get $5) - ) - (i32.store - (local.get $14) - (local.get $1) - ) - ) - (block - (local.set $6 - (i32.load offset=24 - (local.get $7) - ) - ) - (if - (i32.eq - (local.tee $0 - (i32.load offset=12 - (local.get $7) - ) - ) - (local.get $7) - ) - (block $do-once6 - (if - (i32.eqz - (local.tee $2 - (i32.load - (local.tee $0 - (i32.add - (local.tee $1 - (i32.add - (local.get $7) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - ) - (block - (br_if $do-once6 - (i32.eqz - (local.tee $2 - (i32.load - (local.get $1) - ) - ) - ) - ) - (local.set $0 - (local.get $1) - ) - ) - ) - (loop $while-in9 - (if - (local.tee $1 - (i32.load - (local.tee $5 - (i32.add - (local.get $2) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $2 - (local.get $1) - ) - (local.set $0 - (local.get $5) - ) - (br $while-in9) - ) - ) - (if - (local.tee $1 - (i32.load - (local.tee $5 - (i32.add - (local.get $2) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $2 - (local.get $1) - ) - (local.set $0 - (local.get $5) - ) - (br $while-in9) - ) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $0) - (i32.const 0) - ) - (local.set $9 - (local.get $2) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $2 - (i32.load offset=8 - (local.get $7) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $7) - (i32.load offset=12 - (local.get $2) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=8 - (local.get $0) - ) - (local.get $7) - ) - (block - (i32.store offset=12 - (local.get $2) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $2) - ) - (local.set $9 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $6) - (block - (if - (i32.eq - (i32.load offset=480 - (local.tee $0 - (i32.shl - (local.tee $2 - (i32.load offset=28 - (local.get $7) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $7) - ) - (block - (i32.store offset=480 - (local.get $0) - (local.get $9) - ) - (if - (i32.eqz - (local.get $9) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $2) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $6) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=16 - (local.get $6) - ) - (local.get $7) - ) - (i32.store offset=16 - (local.get $6) - (local.get $9) - ) - (i32.store offset=20 - (local.get $6) - (local.get $9) - ) - ) - (br_if $do-once4 - (i32.eqz - (local.get $9) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $9) - (local.tee $0 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $9) - (local.get $6) - ) - (if - (local.tee $2 - (i32.load offset=16 - (local.get $7) - ) - ) - (if - (i32.lt_u - (local.get $2) - (local.get $0) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $9) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $9) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $7) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $9) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $9) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $4) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $3) - (local.get $4) - ) - (local.get $4) - ) - (local.set $2 - (if (result i32) - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $3) - ) - (block - (i32.store - (i32.const 184) - (local.get $4) - ) - (return) - ) - (local.get $4) - ) - ) - ) - ) - (local.set $0 - (i32.shr_u - (local.get $2) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $2) - (i32.const 256) - ) - (block - (local.set $1 - (i32.add - (i32.shl - (local.get $0) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $2 - (i32.load - (i32.const 176) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - (if - (i32.lt_u - (local.tee $0 - (i32.load - (local.tee $2 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $15 - (local.get $2) - ) - (local.set $11 - (local.get $0) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $0) - (local.get $2) - ) - ) - (local.set $15 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (local.set $11 - (local.get $1) - ) - ) - ) - (i32.store - (local.get $15) - (local.get $3) - ) - (i32.store offset=12 - (local.get $11) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $11) - ) - (i32.store offset=12 - (local.get $3) - (local.get $1) - ) - (return) - ) - ) - (local.set $5 - (i32.add - (local.tee $11 - (i32.shl - (local.tee $4 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $2) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $2) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $4 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $5 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.get $4) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $2) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $1) - (local.get $4) - ) - (local.get $5) - ) - ) - (i32.shr_u - (i32.shl - (local.get $0) - (local.get $5) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $3) - (local.get $4) - ) - (i32.store offset=20 - (local.get $3) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $3) - (i32.const 0) - ) - (if - (i32.and - (local.tee $1 - (i32.load - (i32.const 180) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $4) - ) - ) - ) - (block $do-once12 - (local.set $4 - (i32.shl - (local.get $2) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $4) - (i32.const 1) - ) - ) - (i32.eq - (local.get $4) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load offset=480 - (local.get $11) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (loop $while-in15 - (br_if $__rjti$1 - (i32.eq - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - (local.get $2) - ) - ) - (local.set $5 - (i32.shl - (local.get $4) - (i32.const 1) - ) - ) - (if - (local.tee $1 - (i32.load - (local.tee $4 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $4) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $5) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in15) - ) - ) - ) - (if - (i32.lt_u - (local.get $4) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $4) - (local.get $3) - ) - (i32.store offset=24 - (local.get $3) - (local.get $0) - ) - (i32.store offset=12 - (local.get $3) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $3) - ) - (br $do-once12) - ) - ) - (br $__rjto$1) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.get $0) - ) - ) - (local.tee $2 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $2) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $3) - ) - (i32.store offset=8 - (local.get $0) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $1) - ) - (i32.store offset=12 - (local.get $3) - (local.get $0) - ) - (i32.store offset=24 - (local.get $3) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - (i32.store offset=480 - (local.get $11) - (local.get $3) - ) - (i32.store offset=24 - (local.get $3) - (local.get $5) - ) - (i32.store offset=12 - (local.get $3) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $3) - ) - ) - ) - (i32.store - (i32.const 208) - (local.tee $0 - (i32.add - (i32.load - (i32.const 208) - ) - (i32.const -1) - ) - ) - ) - (local.set $0 - (if (result i32) - (local.get $0) - (return) - (i32.const 632) - ) - ) - (loop $while-in17 - (local.set $0 - (i32.add - (local.tee $2 - (i32.load - (local.get $0) - ) - ) - (i32.const 8) - ) - ) - (br_if $while-in17 - (local.get $2) - ) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - ) - (func $runPostSets (; 54 ;) (; has Stack IR ;) - (nop) - ) - (func $_i64Subtract (; 55 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (global.set $tempRet0 - (i32.sub - (i32.sub - (local.get $1) - (local.get $3) - ) - (i32.gt_u - (local.get $2) - (local.get $0) - ) - ) - ) - (i32.sub - (local.get $0) - (local.get $2) - ) - ) - (func $_i64Add (; 56 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (global.set $tempRet0 - (i32.add - (i32.add - (local.get $1) - (local.get $3) - ) - (i32.lt_u - (local.tee $1 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - (local.get $0) - ) - ) - ) - (local.get $1) - ) - (func $_memset (; 57 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local.set $4 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - (if - (i32.ge_s - (local.get $2) - (i32.const 20) - ) - (block - (local.set $1 - (i32.and - (local.get $1) - (i32.const 255) - ) - ) - (if - (local.tee $3 - (i32.and - (local.get $0) - (i32.const 3) - ) - ) - (block - (local.set $3 - (i32.sub - (i32.add - (local.get $0) - (i32.const 4) - ) - (local.get $3) - ) - ) - (loop $while-in - (if - (i32.lt_s - (local.get $0) - (local.get $3) - ) - (block - (i32.store8 - (local.get $0) - (local.get $1) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - ) - (local.set $3 - (i32.or - (i32.or - (i32.or - (i32.shl - (local.get $1) - (i32.const 8) - ) - (local.get $1) - ) - (i32.shl - (local.get $1) - (i32.const 16) - ) - ) - (i32.shl - (local.get $1) - (i32.const 24) - ) - ) - ) - (local.set $5 - (i32.and - (local.get $4) - (i32.const -4) - ) - ) - (loop $while-in1 - (if - (i32.lt_s - (local.get $0) - (local.get $5) - ) - (block - (i32.store - (local.get $0) - (local.get $3) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - ) - (loop $while-in3 - (if - (i32.lt_s - (local.get $0) - (local.get $4) - ) - (block - (i32.store8 - (local.get $0) - (local.get $1) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (i32.sub - (local.get $0) - (local.get $2) - ) - ) - (func $_bitshift64Lshr (; 58 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (if - (i32.lt_s - (local.get $2) - (i32.const 32) - ) - (block - (global.set $tempRet0 - (i32.shr_u - (local.get $1) - (local.get $2) - ) - ) - (return - (i32.or - (i32.shl - (i32.and - (local.get $1) - (i32.sub - (i32.shl - (i32.const 1) - (local.get $2) - ) - (i32.const 1) - ) - ) - (i32.sub - (i32.const 32) - (local.get $2) - ) - ) - (i32.shr_u - (local.get $0) - (local.get $2) - ) - ) - ) - ) - ) - (global.set $tempRet0 - (i32.const 0) - ) - (i32.shr_u - (local.get $1) - (i32.sub - (local.get $2) - (i32.const 32) - ) - ) - ) - (func $_bitshift64Shl (; 59 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (if - (i32.lt_s - (local.get $2) - (i32.const 32) - ) - (block - (global.set $tempRet0 - (i32.or - (i32.shl - (local.get $1) - (local.get $2) - ) - (i32.shr_u - (i32.and - (i32.shl - (i32.sub - (i32.shl - (i32.const 1) - (local.get $2) - ) - (i32.const 1) - ) - (i32.sub - (i32.const 32) - (local.get $2) - ) - ) - (local.get $0) - ) - (i32.sub - (i32.const 32) - (local.get $2) - ) - ) - ) - ) - (return - (i32.shl - (local.get $0) - (local.get $2) - ) - ) - ) - ) - (global.set $tempRet0 - (i32.shl - (local.get $0) - (i32.sub - (local.get $2) - (i32.const 32) - ) - ) - ) - (i32.const 0) - ) - (func $_memcpy (; 60 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (if - (i32.ge_s - (local.get $2) - (i32.const 4096) - ) - (return - (call $_emscripten_memcpy_big - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - ) - (local.set $3 - (local.get $0) - ) - (if - (i32.eq - (i32.and - (local.get $0) - (i32.const 3) - ) - (i32.and - (local.get $1) - (i32.const 3) - ) - ) - (block - (loop $while-in - (if - (i32.and - (local.get $0) - (i32.const 3) - ) - (block - (if - (i32.eqz - (local.get $2) - ) - (return - (local.get $3) - ) - ) - (i32.store8 - (local.get $0) - (i32.load8_s - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (loop $while-in1 - (if - (i32.ge_s - (local.get $2) - (i32.const 4) - ) - (block - (i32.store - (local.get $0) - (i32.load - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 4) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - ) - (loop $while-in3 - (if - (i32.gt_s - (local.get $2) - (i32.const 0) - ) - (block - (i32.store8 - (local.get $0) - (i32.load8_s - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (local.get $3) - ) - (func $___udivdi3 (; 61 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $___udivmoddi4 - (local.get $0) - (local.get $1) - (local.get $2) - (i32.const 0) - (i32.const 0) - ) - ) - (func $___uremdi3 (; 62 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local.set $3 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (drop - (call $___udivmoddi4 - (local.get $0) - (local.get $1) - (local.get $2) - (i32.const 0) - (local.get $3) - ) - ) - (global.set $STACKTOP - (local.get $3) - ) - (global.set $tempRet0 - (i32.load offset=4 - (local.get $3) - ) - ) - (i32.load - (local.get $3) - ) - ) - (func $___udivmoddi4 (; 63 ;) (; has Stack IR ;) (param $xl i32) (param $xh i32) (param $yl i32) (param $yh i32) (param $r i32) (result i32) - (local $x64 i64) - (local $y64 i64) - (local.set $x64 - (i64.or - (i64.extend_i32_u - (local.get $xl) - ) - (i64.shl - (i64.extend_i32_u - (local.get $xh) - ) - (i64.const 32) - ) - ) - ) - (local.set $y64 - (i64.or - (i64.extend_i32_u - (local.get $yl) - ) - (i64.shl - (i64.extend_i32_u - (local.get $yh) - ) - (i64.const 32) - ) - ) - ) - (if - (local.get $r) - (i64.store - (local.get $r) - (i64.rem_u - (local.get $x64) - (local.get $y64) - ) - ) - ) - (local.set $x64 - (i64.div_u - (local.get $x64) - (local.get $y64) - ) - ) - (global.set $tempRet0 - (i32.wrap_i64 - (i64.shr_u - (local.get $x64) - (i64.const 32) - ) - ) - ) - (i32.wrap_i64 - (local.get $x64) - ) - ) - (func $dynCall_ii (; 64 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (call_indirect (type $i32_=>_i32) - (local.get $1) - (i32.and - (local.get $0) - (i32.const 1) - ) - ) - ) - (func $dynCall_iiii (; 65 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $1) - (local.get $2) - (local.get $3) - (i32.add - (i32.and - (local.get $0) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (func $dynCall_vi (; 66 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (call_indirect (type $i32_=>_none) - (local.get $1) - (i32.add - (i32.and - (local.get $0) - (i32.const 7) - ) - (i32.const 10) - ) - ) - ) - (func $b0 (; 67 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (call $nullFunc_ii - (i32.const 0) - ) - (i32.const 0) - ) - (func $b1 (; 68 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $nullFunc_iiii - (i32.const 1) - ) - (i32.const 0) - ) - (func $b2 (; 69 ;) (; has Stack IR ;) (param $0 i32) - (call $nullFunc_vi - (i32.const 2) - ) - ) -) diff -Nru binaryen-91/test/emcc_hello_world.fromasm.clamp binaryen-99/test/emcc_hello_world.fromasm.clamp --- binaryen-91/test/emcc_hello_world.fromasm.clamp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/emcc_hello_world.fromasm.clamp 1970-01-01 00:00:00.000000000 +0000 @@ -1,15031 +0,0 @@ -(module - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) - (import "env" "memory" (memory $memory 256 256)) - (data (i32.const 1024) "emcc_hello_world.asm.js") - (import "env" "table" (table $table 18 18 funcref)) - (elem (global.get $__table_base) $b0 $___stdio_close $b1 $b1 $___stdout_write $___stdio_seek $___stdio_write $b1 $b1 $b1 $b2 $b2 $b2 $b2 $b2 $_cleanup $b2 $b2) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) - (import "env" "abort" (func $abort)) - (import "env" "nullFunc_ii" (func $nullFunc_ii (param i32))) - (import "env" "nullFunc_iiii" (func $nullFunc_iiii (param i32))) - (import "env" "nullFunc_vi" (func $nullFunc_vi (param i32))) - (import "env" "_pthread_cleanup_pop" (func $_pthread_cleanup_pop (param i32))) - (import "env" "___lock" (func $___lock (param i32))) - (import "env" "_pthread_self" (func $_pthread_self (result i32))) - (import "env" "_abort" (func $_abort)) - (import "env" "___syscall6" (func $___syscall6 (param i32 i32) (result i32))) - (import "env" "_sbrk" (func $_sbrk (param i32) (result i32))) - (import "env" "_time" (func $_time (param i32) (result i32))) - (import "env" "_emscripten_memcpy_big" (func $_emscripten_memcpy_big (param i32 i32 i32) (result i32))) - (import "env" "___syscall54" (func $___syscall54 (param i32 i32) (result i32))) - (import "env" "___unlock" (func $___unlock (param i32))) - (import "env" "___syscall140" (func $___syscall140 (param i32 i32) (result i32))) - (import "env" "_pthread_cleanup_push" (func $_pthread_cleanup_push (param i32 i32))) - (import "env" "_sysconf" (func $_sysconf (param i32) (result i32))) - (import "env" "___syscall146" (func $___syscall146 (param i32 i32) (result i32))) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (global $STACK_MAX (mut i32) (global.get $STACK_MAX$asm2wasm$import)) - (global $__THREW__ (mut i32) (i32.const 0)) - (global $threwValue (mut i32) (i32.const 0)) - (global $tempRet0 (mut i32) (i32.const 0)) - (export "_i64Subtract" (func $_i64Subtract)) - (export "_free" (func $_free)) - (export "_main" (func $_main)) - (export "_i64Add" (func $_i64Add)) - (export "_memset" (func $_memset)) - (export "_malloc" (func $_malloc)) - (export "_memcpy" (func $_memcpy)) - (export "_bitshift64Lshr" (func $_bitshift64Lshr)) - (export "_fflush" (func $_fflush)) - (export "___errno_location" (func $___errno_location)) - (export "_bitshift64Shl" (func $_bitshift64Shl)) - (export "runPostSets" (func $runPostSets)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackSave" (func $stackSave)) - (export "stackRestore" (func $stackRestore)) - (export "establishStackSpace" (func $establishStackSpace)) - (export "setThrew" (func $setThrew)) - (export "setTempRet0" (func $setTempRet0)) - (export "getTempRet0" (func $getTempRet0)) - (export "dynCall_ii" (func $dynCall_ii)) - (export "dynCall_iiii" (func $dynCall_iiii)) - (export "dynCall_vi" (func $dynCall_vi)) - (export "___udivmoddi4" (func $___udivmoddi4)) - (func $stackAlloc (; 18 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local.set $1 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (local.get $0) - (global.get $STACKTOP) - ) - ) - (global.set $STACKTOP - (i32.and - (i32.add - (global.get $STACKTOP) - (i32.const 15) - ) - (i32.const -16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.get $1) - ) - (func $stackSave (; 19 ;) (; has Stack IR ;) (result i32) - (global.get $STACKTOP) - ) - (func $stackRestore (; 20 ;) (; has Stack IR ;) (param $0 i32) - (global.set $STACKTOP - (local.get $0) - ) - ) - (func $establishStackSpace (; 21 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (global.set $STACKTOP - (local.get $0) - ) - (global.set $STACK_MAX - (local.get $1) - ) - ) - (func $setThrew (; 22 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (if - (i32.eqz - (global.get $__THREW__) - ) - (block - (global.set $__THREW__ - (local.get $0) - ) - (global.set $threwValue - (local.get $1) - ) - ) - ) - ) - (func $setTempRet0 (; 23 ;) (; has Stack IR ;) (param $0 i32) - (global.set $tempRet0 - (local.get $0) - ) - ) - (func $getTempRet0 (; 24 ;) (; has Stack IR ;) (result i32) - (global.get $tempRet0) - ) - (func $_main (; 25 ;) (; has Stack IR ;) (result i32) - (local $0 i32) - (local.set $0 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (call $_printf - (local.get $0) - ) - (global.set $STACKTOP - (local.get $0) - ) - (i32.const 0) - ) - (func $_frexp (; 26 ;) (; has Stack IR ;) (param $0 f64) (param $1 i32) (result f64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (f64.store - (global.get $tempDoublePtr$asm2wasm$import) - (local.get $0) - ) - (block $switch - (block $switch-default - (if - (local.tee $5 - (local.tee $4 - (i32.and - (call $_bitshift64Lshr - (local.tee $2 - (i32.load - (global.get $tempDoublePtr$asm2wasm$import) - ) - ) - (local.tee $3 - (i32.load offset=4 - (global.get $tempDoublePtr$asm2wasm$import) - ) - ) - (i32.const 52) - ) - (i32.const 2047) - ) - ) - ) - (if - (i32.eq - (local.get $5) - (i32.const 2047) - ) - (br $switch) - (br $switch-default) - ) - ) - (i32.store - (local.get $1) - (if (result i32) - (f64.ne - (local.get $0) - (f64.const 0) - ) - (block (result i32) - (local.set $0 - (call $_frexp - (f64.mul - (local.get $0) - (f64.const 18446744073709551615) - ) - (local.get $1) - ) - ) - (i32.add - (i32.load - (local.get $1) - ) - (i32.const -64) - ) - ) - (i32.const 0) - ) - ) - (br $switch) - ) - (i32.store - (local.get $1) - (i32.add - (local.get $4) - (i32.const -1022) - ) - ) - (i32.store - (global.get $tempDoublePtr$asm2wasm$import) - (local.get $2) - ) - (i32.store offset=4 - (global.get $tempDoublePtr$asm2wasm$import) - (i32.or - (i32.and - (local.get $3) - (i32.const -2146435073) - ) - (i32.const 1071644672) - ) - ) - (local.set $0 - (f64.load - (global.get $tempDoublePtr$asm2wasm$import) - ) - ) - ) - (local.get $0) - ) - (func $_strerror (; 27 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (block $__rjto$1 - (block $__rjti$1 - (loop $while-in - (if - (i32.ne - (i32.load8_u offset=687 - (local.get $1) - ) - (local.get $0) - ) - (block - (br_if $while-in - (i32.ne - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.const 87) - ) - ) - (local.set $1 - (i32.const 87) - ) - (br $__rjti$1) - ) - ) - ) - (br_if $__rjti$1 - (local.get $1) - ) - (local.set $0 - (i32.const 775) - ) - (br $__rjto$1) - ) - (local.set $0 - (i32.const 775) - ) - (loop $while-in1 - (local.set $0 - (loop $while-in3 (result i32) - (local.set $2 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (if (result i32) - (i32.load8_s - (local.get $0) - ) - (block - (local.set $0 - (local.get $2) - ) - (br $while-in3) - ) - (local.get $2) - ) - ) - ) - (br_if $while-in1 - (local.tee $1 - (i32.add - (local.get $1) - (i32.const -1) - ) - ) - ) - ) - ) - (local.get $0) - ) - (func $___errno_location (; 28 ;) (; has Stack IR ;) (result i32) - (if (result i32) - (i32.load - (i32.const 16) - ) - (i32.load offset=60 - (call $_pthread_self) - ) - (i32.const 60) - ) - ) - (func $___stdio_close (; 29 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local.set $1 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (i32.store - (local.get $1) - (i32.load offset=60 - (local.get $0) - ) - ) - (local.set $0 - (call $___syscall_ret - (call $___syscall6 - (i32.const 6) - (local.get $1) - ) - ) - ) - (global.set $STACKTOP - (local.get $1) - ) - (local.get $0) - ) - (func $___stdout_write (; 30 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local.set $4 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 80) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $5 - (i32.add - (local.tee $3 - (local.get $4) - ) - (i32.const 12) - ) - ) - (i32.store offset=36 - (local.get $0) - (i32.const 4) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 64) - ) - ) - (block - (i32.store - (local.get $3) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.const 21505) - ) - (i32.store offset=8 - (local.get $3) - (local.get $5) - ) - (if - (call $___syscall54 - (i32.const 54) - (local.get $3) - ) - (i32.store8 offset=75 - (local.get $0) - (i32.const -1) - ) - ) - ) - ) - (local.set $0 - (call $___stdio_write - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - (global.set $STACKTOP - (local.get $4) - ) - (local.get $0) - ) - (func $___stdio_seek (; 31 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local.set $3 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 32) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (i32.store - (local.get $3) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.const 0) - ) - (i32.store offset=8 - (local.get $3) - (local.get $1) - ) - (i32.store offset=12 - (local.get $3) - (i32.add - (local.get $3) - (i32.const 20) - ) - ) - (i32.store offset=16 - (local.get $3) - (local.get $2) - ) - (local.set $0 - (if (result i32) - (i32.lt_s - (call $___syscall_ret - (call $___syscall140 - (i32.const 140) - (local.get $3) - ) - ) - (i32.const 0) - ) - (block (result i32) - (i32.store offset=20 - (local.get $3) - (i32.const -1) - ) - (i32.const -1) - ) - (i32.load offset=20 - (local.get $3) - ) - ) - ) - (global.set $STACKTOP - (local.get $3) - ) - (local.get $0) - ) - (func $_fflush (; 32 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (if - (local.get $0) - (local.set $0 - (block $do-once (result i32) - (if - (i32.le_s - (i32.load offset=76 - (local.get $0) - ) - (i32.const -1) - ) - (br $do-once - (call $___fflush_unlocked - (local.get $0) - ) - ) - ) - (call $___fflush_unlocked - (local.get $0) - ) - ) - ) - (block - (local.set $0 - (if (result i32) - (i32.load - (i32.const 12) - ) - (call $_fflush - (i32.load - (i32.const 12) - ) - ) - (i32.const 0) - ) - ) - (call $___lock - (i32.const 44) - ) - (if - (local.tee $1 - (i32.load - (i32.const 40) - ) - ) - (loop $while-in - (drop - (i32.load offset=76 - (local.get $1) - ) - ) - (if - (i32.gt_u - (i32.load offset=20 - (local.get $1) - ) - (i32.load offset=28 - (local.get $1) - ) - ) - (local.set $0 - (i32.or - (call $___fflush_unlocked - (local.get $1) - ) - (local.get $0) - ) - ) - ) - (br_if $while-in - (local.tee $1 - (i32.load offset=56 - (local.get $1) - ) - ) - ) - ) - ) - (call $___unlock - (i32.const 44) - ) - ) - ) - (local.get $0) - ) - (func $_printf (; 33 ;) (; has Stack IR ;) (param $0 i32) - (local $1 i32) - (local.set $1 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (i32.store - (local.get $1) - (local.get $0) - ) - (call $_vfprintf - (i32.load - (i32.const 8) - ) - (local.get $1) - ) - (global.set $STACKTOP - (local.get $1) - ) - ) - (func $___stdio_write (; 34 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local.set $9 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 48) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $7 - (i32.add - (local.get $9) - (i32.const 16) - ) - ) - (i32.store - (local.tee $4 - (i32.add - (local.tee $8 - (local.get $9) - ) - (i32.const 32) - ) - ) - (local.tee $3 - (i32.load offset=28 - (local.get $0) - ) - ) - ) - (i32.store offset=4 - (local.get $4) - (local.tee $3 - (i32.sub - (i32.load offset=20 - (local.get $0) - ) - (local.get $3) - ) - ) - ) - (i32.store offset=8 - (local.get $4) - (local.get $1) - ) - (i32.store offset=12 - (local.get $4) - (local.get $2) - ) - (local.set $1 - (local.get $4) - ) - (local.set $4 - (i32.const 2) - ) - (local.set $10 - (i32.add - (local.get $2) - (local.get $3) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (loop $while-in - (block $__rjti$0 - (if - (i32.load - (i32.const 16) - ) - (block - (call $_pthread_cleanup_push - (i32.const 5) - (local.get $0) - ) - (i32.store - (local.get $8) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $8) - (local.get $1) - ) - (i32.store offset=8 - (local.get $8) - (local.get $4) - ) - (local.set $3 - (call $___syscall_ret - (call $___syscall146 - (i32.const 146) - (local.get $8) - ) - ) - ) - (call $_pthread_cleanup_pop - (i32.const 0) - ) - ) - (block - (i32.store - (local.get $7) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $7) - (local.get $1) - ) - (i32.store offset=8 - (local.get $7) - (local.get $4) - ) - (local.set $3 - (call $___syscall_ret - (call $___syscall146 - (i32.const 146) - (local.get $7) - ) - ) - ) - ) - ) - (br_if $__rjti$0 - (i32.eq - (local.get $3) - (local.get $10) - ) - ) - (br_if $__rjti$1 - (i32.lt_s - (local.get $3) - (i32.const 0) - ) - ) - (local.set $5 - (if (result i32) - (i32.gt_u - (local.get $3) - (local.tee $5 - (i32.load offset=4 - (local.get $1) - ) - ) - ) - (block (result i32) - (i32.store offset=28 - (local.get $0) - (local.tee $6 - (i32.load offset=44 - (local.get $0) - ) - ) - ) - (i32.store offset=20 - (local.get $0) - (local.get $6) - ) - (local.set $6 - (i32.load offset=12 - (local.get $1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (local.set $4 - (i32.add - (local.get $4) - (i32.const -1) - ) - ) - (i32.sub - (local.get $3) - (local.get $5) - ) - ) - (block (result i32) - (if - (i32.eq - (local.get $4) - (i32.const 2) - ) - (block - (i32.store offset=28 - (local.get $0) - (i32.add - (i32.load offset=28 - (local.get $0) - ) - (local.get $3) - ) - ) - (local.set $6 - (local.get $5) - ) - (local.set $4 - (i32.const 2) - ) - ) - (local.set $6 - (local.get $5) - ) - ) - (local.get $3) - ) - ) - ) - (i32.store - (local.get $1) - (i32.add - (i32.load - (local.get $1) - ) - (local.get $5) - ) - ) - (i32.store offset=4 - (local.get $1) - (i32.sub - (local.get $6) - (local.get $5) - ) - ) - (local.set $10 - (i32.sub - (local.get $10) - (local.get $3) - ) - ) - (br $while-in) - ) - ) - (i32.store offset=16 - (local.get $0) - (i32.add - (local.tee $1 - (i32.load offset=44 - (local.get $0) - ) - ) - (i32.load offset=48 - (local.get $0) - ) - ) - ) - (i32.store offset=28 - (local.get $0) - (local.get $1) - ) - (i32.store offset=20 - (local.get $0) - (local.get $1) - ) - (br $__rjto$1) - ) - (i32.store offset=16 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=20 - (local.get $0) - (i32.const 0) - ) - (i32.store - (local.get $0) - (i32.or - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (local.set $2 - (if (result i32) - (i32.eq - (local.get $4) - (i32.const 2) - ) - (i32.const 0) - (i32.sub - (local.get $2) - (i32.load offset=4 - (local.get $1) - ) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $9) - ) - (local.get $2) - ) - (func $_vfprintf (; 35 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local.set $6 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 224) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $3 - (i32.add - (local.get $6) - (i32.const 120) - ) - ) - (local.set $5 - (i32.add - (local.tee $4 - (local.get $6) - ) - (i32.const 136) - ) - ) - (local.set $8 - (i32.add - (local.tee $2 - (local.tee $7 - (i32.add - (local.get $4) - (i32.const 80) - ) - ) - ) - (i32.const 40) - ) - ) - (loop $do-in - (i32.store - (local.get $2) - (i32.const 0) - ) - (br_if $do-in - (i32.lt_s - (local.tee $2 - (i32.add - (local.get $2) - (i32.const 4) - ) - ) - (local.get $8) - ) - ) - ) - (i32.store - (local.get $3) - (i32.load - (local.get $1) - ) - ) - (drop - (if (result i32) - (i32.lt_s - (call $_printf_core - (i32.const 0) - (local.get $3) - (local.get $4) - (local.get $7) - ) - (i32.const 0) - ) - (i32.const -1) - (block (result i32) - (drop - (i32.load offset=76 - (local.get $0) - ) - ) - (local.set $1 - (i32.load - (local.get $0) - ) - ) - (if - (i32.lt_s - (i32.load8_s offset=74 - (local.get $0) - ) - (i32.const 1) - ) - (i32.store - (local.get $0) - (i32.and - (local.get $1) - (i32.const -33) - ) - ) - ) - (if - (i32.load offset=48 - (local.get $0) - ) - (drop - (call $_printf_core - (local.get $0) - (local.get $3) - (local.get $4) - (local.get $7) - ) - ) - (block - (local.set $2 - (i32.load offset=44 - (local.get $0) - ) - ) - (i32.store offset=44 - (local.get $0) - (local.get $5) - ) - (i32.store offset=28 - (local.get $0) - (local.get $5) - ) - (i32.store offset=20 - (local.get $0) - (local.get $5) - ) - (i32.store offset=48 - (local.get $0) - (i32.const 80) - ) - (i32.store offset=16 - (local.get $0) - (i32.add - (local.get $5) - (i32.const 80) - ) - ) - (drop - (call $_printf_core - (local.get $0) - (local.get $3) - (local.get $4) - (local.get $7) - ) - ) - (if - (local.get $2) - (block - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $0) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (drop - (i32.load offset=20 - (local.get $0) - ) - ) - (i32.store offset=44 - (local.get $0) - (local.get $2) - ) - (i32.store offset=48 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=20 - (local.get $0) - (i32.const 0) - ) - ) - ) - ) - ) - (i32.store - (local.get $0) - (i32.or - (i32.load - (local.get $0) - ) - (i32.and - (local.get $1) - (i32.const 32) - ) - ) - ) - (i32.const 0) - ) - ) - ) - (global.set $STACKTOP - (local.get $6) - ) - ) - (func $___fwritex (; 36 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (block $label$break$L5 - (block $__rjti$0 - (br_if $__rjti$0 - (local.tee $3 - (i32.load offset=16 - (local.get $2) - ) - ) - ) - (if - (i32.eqz - (call $___towrite - (local.get $2) - ) - ) - (block - (local.set $3 - (i32.load offset=16 - (local.get $2) - ) - ) - (br $__rjti$0) - ) - ) - (br $label$break$L5) - ) - (if - (i32.lt_u - (i32.sub - (local.get $3) - (local.tee $4 - (i32.load offset=20 - (local.get $2) - ) - ) - ) - (local.get $1) - ) - (block - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $2) - (local.get $0) - (local.get $1) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $2) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (br $label$break$L5) - ) - ) - (drop - (if (result i32) - (i32.gt_s - (i32.load8_s offset=75 - (local.get $2) - ) - (i32.const -1) - ) - (block $label$break$L10 (result i32) - (local.set $3 - (local.get $1) - ) - (loop $while-in - (drop - (br_if $label$break$L10 - (i32.const 0) - (i32.eqz - (local.get $3) - ) - ) - ) - (if - (i32.ne - (i32.load8_s - (i32.add - (local.get $0) - (local.tee $5 - (i32.add - (local.get $3) - (i32.const -1) - ) - ) - ) - ) - (i32.const 10) - ) - (block - (local.set $3 - (local.get $5) - ) - (br $while-in) - ) - ) - ) - (br_if $label$break$L5 - (i32.lt_u - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $2) - (local.get $0) - (local.get $3) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $2) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - (local.get $3) - ) - ) - (local.set $4 - (i32.load offset=20 - (local.get $2) - ) - ) - (local.set $1 - (i32.sub - (local.get $1) - (local.get $3) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (local.get $3) - ) - ) - (i32.const 0) - ) - (i32.const 0) - ) - ) - (drop - (call $_memcpy - (local.get $4) - (local.get $0) - (local.get $1) - ) - ) - (i32.store offset=20 - (local.get $2) - (i32.add - (i32.load offset=20 - (local.get $2) - ) - (local.get $1) - ) - ) - ) - ) - (func $___towrite (; 37 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (i32.store8 offset=74 - (local.get $0) - (i32.or - (local.tee $1 - (i32.load8_s offset=74 - (local.get $0) - ) - ) - (i32.add - (local.get $1) - (i32.const 255) - ) - ) - ) - (if (result i32) - (i32.and - (local.tee $1 - (i32.load - (local.get $0) - ) - ) - (i32.const 8) - ) - (block (result i32) - (i32.store - (local.get $0) - (i32.or - (local.get $1) - (i32.const 32) - ) - ) - (i32.const -1) - ) - (block (result i32) - (i32.store offset=8 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (local.tee $1 - (i32.load offset=44 - (local.get $0) - ) - ) - ) - (i32.store offset=20 - (local.get $0) - (local.get $1) - ) - (i32.store offset=16 - (local.get $0) - (i32.add - (local.get $1) - (i32.load offset=48 - (local.get $0) - ) - ) - ) - (i32.const 0) - ) - ) - ) - (func $_wcrtomb (; 38 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (local.get $0) - (block $do-once (result i32) - (if - (i32.lt_u - (local.get $1) - (i32.const 128) - ) - (block - (i32.store8 - (local.get $0) - (local.get $1) - ) - (br $do-once - (i32.const 1) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (i32.const 2048) - ) - (block - (i32.store8 - (local.get $0) - (i32.or - (i32.shr_u - (local.get $1) - (i32.const 6) - ) - (i32.const 192) - ) - ) - (i32.store8 offset=1 - (local.get $0) - (i32.or - (i32.and - (local.get $1) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (br $do-once - (i32.const 2) - ) - ) - ) - (if - (i32.or - (i32.eq - (i32.and - (local.get $1) - (i32.const -8192) - ) - (i32.const 57344) - ) - (i32.lt_u - (local.get $1) - (i32.const 55296) - ) - ) - (block - (i32.store8 - (local.get $0) - (i32.or - (i32.shr_u - (local.get $1) - (i32.const 12) - ) - (i32.const 224) - ) - ) - (i32.store8 offset=1 - (local.get $0) - (i32.or - (i32.and - (i32.shr_u - (local.get $1) - (i32.const 6) - ) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.store8 offset=2 - (local.get $0) - (i32.or - (i32.and - (local.get $1) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (br $do-once - (i32.const 3) - ) - ) - ) - (if (result i32) - (i32.lt_u - (i32.add - (local.get $1) - (i32.const -65536) - ) - (i32.const 1048576) - ) - (block (result i32) - (i32.store8 - (local.get $0) - (i32.or - (i32.shr_u - (local.get $1) - (i32.const 18) - ) - (i32.const 240) - ) - ) - (i32.store8 offset=1 - (local.get $0) - (i32.or - (i32.and - (i32.shr_u - (local.get $1) - (i32.const 12) - ) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.store8 offset=2 - (local.get $0) - (i32.or - (i32.and - (i32.shr_u - (local.get $1) - (i32.const 6) - ) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.store8 offset=3 - (local.get $0) - (i32.or - (i32.and - (local.get $1) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.const 4) - ) - (block (result i32) - (i32.store - (call $___errno_location) - (i32.const 84) - ) - (i32.const -1) - ) - ) - ) - (i32.const 1) - ) - ) - (func $_wctomb (; 39 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (local.get $0) - (call $_wcrtomb - (local.get $0) - (local.get $1) - ) - (i32.const 0) - ) - ) - (func $_memchr (; 40 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (block $label$break$L8 - (block $__rjti$2 - (if - (i32.and - (local.tee $3 - (i32.ne - (local.get $1) - (i32.const 0) - ) - ) - (i32.ne - (i32.and - (local.get $0) - (i32.const 3) - ) - (i32.const 0) - ) - ) - (block - (local.set $2 - (local.get $1) - ) - (local.set $1 - (local.get $0) - ) - (loop $while-in - (br_if $__rjti$2 - (i32.eqz - (i32.load8_u - (local.get $1) - ) - ) - ) - (br_if $while-in - (i32.and - (local.tee $0 - (i32.ne - (local.tee $2 - (i32.add - (local.get $2) - (i32.const -1) - ) - ) - (i32.const 0) - ) - ) - (i32.ne - (i32.and - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.const 3) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (block - (local.set $2 - (local.get $1) - ) - (local.set $1 - (local.get $0) - ) - (local.set $0 - (local.get $3) - ) - ) - ) - (br_if $__rjti$2 - (local.get $0) - ) - (local.set $0 - (i32.const 0) - ) - (br $label$break$L8) - ) - (local.set $0 - (local.get $2) - ) - (if - (i32.load8_u - (local.get $1) - ) - (block - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.le_u - (local.get $0) - (i32.const 3) - ) - ) - (loop $while-in3 - (if - (i32.eqz - (i32.and - (i32.xor - (i32.and - (local.tee $2 - (i32.load - (local.get $1) - ) - ) - (i32.const -2139062144) - ) - (i32.const -2139062144) - ) - (i32.add - (local.get $2) - (i32.const -16843009) - ) - ) - ) - (block - (local.set $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (br_if $while-in3 - (i32.gt_u - (local.tee $0 - (i32.add - (local.get $0) - (i32.const -4) - ) - ) - (i32.const 3) - ) - ) - (br $__rjti$0) - ) - ) - ) - (br $__rjto$0) - ) - (if - (i32.eqz - (local.get $0) - ) - (block - (local.set $0 - (i32.const 0) - ) - (br $label$break$L8) - ) - ) - ) - (local.set $0 - (loop $while-in5 (result i32) - (br_if $label$break$L8 - (i32.eqz - (i32.load8_u - (local.get $1) - ) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (br_if $while-in5 - (local.tee $0 - (i32.add - (local.get $0) - (i32.const -1) - ) - ) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (select - (local.get $1) - (i32.const 0) - (local.get $0) - ) - ) - (func $___syscall_ret (; 41 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (if - (i32.gt_u - (local.get $0) - (i32.const -4096) - ) - (block - (i32.store - (call $___errno_location) - (i32.sub - (i32.const 0) - (local.get $0) - ) - ) - (local.set $0 - (i32.const -1) - ) - ) - ) - (local.get $0) - ) - (func $___fflush_unlocked (; 42 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (block $__rjto$0 (result i32) - (block $__rjti$0 - (br_if $__rjti$0 - (i32.le_u - (i32.load offset=20 - (local.get $0) - ) - (i32.load offset=28 - (local.get $0) - ) - ) - ) - (local.set $1 - (i32.load offset=36 - (local.get $0) - ) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (local.get $1) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (br_if $__rjti$0 - (i32.load offset=20 - (local.get $0) - ) - ) - (br $__rjto$0 - (i32.const -1) - ) - ) - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=4 - (local.get $0) - ) - ) - (local.tee $2 - (i32.load offset=8 - (local.get $0) - ) - ) - ) - (block - (local.set $3 - (i32.load offset=40 - (local.get $0) - ) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (i32.sub - (local.get $1) - (local.get $2) - ) - (i32.const 1) - (i32.add - (i32.and - (local.get $3) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (i32.store offset=16 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=20 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=8 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.const 0) - ) - (i32.const 0) - ) - ) - (func $_cleanup (; 43 ;) (; has Stack IR ;) (param $0 i32) - (drop - (i32.load offset=68 - (local.get $0) - ) - ) - ) - (func $f64-to-int (; 44 ;) (; has Stack IR ;) (param $0 f64) (result i32) - (if (result i32) - (f64.ne - (local.get $0) - (local.get $0) - ) - (i32.const -2147483648) - (if (result i32) - (f64.ge - (local.get $0) - (f64.const 2147483648) - ) - (i32.const -2147483648) - (if (result i32) - (f64.le - (local.get $0) - (f64.const -2147483649) - ) - (i32.const -2147483648) - (i32.trunc_f64_s - (local.get $0) - ) - ) - ) - ) - ) - (func $f64-to-uint (; 45 ;) (; has Stack IR ;) (param $0 f64) (result i32) - (if (result i32) - (f64.ne - (local.get $0) - (local.get $0) - ) - (i32.const 0) - (if (result i32) - (f64.ge - (local.get $0) - (f64.const 4294967296) - ) - (i32.const 0) - (if (result i32) - (f64.le - (local.get $0) - (f64.const -1) - ) - (i32.const 0) - (i32.trunc_f64_u - (local.get $0) - ) - ) - ) - ) - ) - (func $i32s-div (; 46 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (local.get $1) - (if (result i32) - (i32.and - (i32.eq - (local.get $0) - (i32.const -2147483648) - ) - (i32.eq - (local.get $1) - (i32.const -1) - ) - ) - (i32.const 0) - (i32.div_s - (local.get $0) - (local.get $1) - ) - ) - (i32.const 0) - ) - ) - (func $i32u-rem (; 47 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (local.get $1) - (i32.rem_u - (local.get $0) - (local.get $1) - ) - (i32.const 0) - ) - ) - (func $i32u-div (; 48 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (local.get $1) - (i32.div_u - (local.get $0) - (local.get $1) - ) - (i32.const 0) - ) - ) - (func $_printf_core (; 49 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 f64) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 f64) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i32) - (local $44 i32) - (local $45 i32) - (local $46 i32) - (local $47 i32) - (local $48 i32) - (local $49 i32) - (local $50 i32) - (local.set $4 - (i32.const 672) - ) - (local.set $29 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 624) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $20 - (i32.add - (local.get $29) - (i32.const 16) - ) - ) - (local.set $43 - (i32.add - (local.tee $13 - (local.get $29) - ) - (i32.const 8) - ) - ) - (local.set $35 - (i32.add - (local.get $13) - (i32.const 528) - ) - ) - (local.set $30 - (i32.ne - (local.get $0) - (i32.const 0) - ) - ) - (local.set $39 - (local.tee $24 - (i32.add - (local.tee $5 - (i32.add - (local.get $13) - (i32.const 536) - ) - ) - (i32.const 40) - ) - ) - ) - (local.set $40 - (i32.add - (local.get $5) - (i32.const 39) - ) - ) - (local.set $33 - (i32.add - (local.tee $5 - (i32.add - (local.get $13) - (i32.const 576) - ) - ) - (i32.const 12) - ) - ) - (local.set $41 - (i32.add - (local.get $5) - (i32.const 11) - ) - ) - (local.set $44 - (i32.sub - (local.tee $28 - (local.get $33) - ) - (local.tee $36 - (local.tee $21 - (i32.add - (local.get $13) - (i32.const 588) - ) - ) - ) - ) - ) - (local.set $45 - (i32.sub - (i32.const -2) - (local.get $36) - ) - ) - (local.set $46 - (i32.add - (local.get $28) - (i32.const 2) - ) - ) - (local.set $48 - (i32.add - (local.tee $47 - (i32.add - (local.get $13) - (i32.const 24) - ) - ) - (i32.const 288) - ) - ) - (local.set $42 - (local.tee $31 - (i32.add - (local.get $21) - (i32.const 9) - ) - ) - ) - (local.set $34 - (i32.add - (local.get $21) - (i32.const 8) - ) - ) - (block $label$break$L343 - (block $__rjti$9 - (loop $label$continue$L1 - (block $label$break$L1 - (if - (i32.gt_s - (local.get $16) - (i32.const -1) - ) - (local.set $16 - (if (result i32) - (i32.gt_s - (local.get $9) - (i32.sub - (i32.const 2147483647) - (local.get $16) - ) - ) - (block (result i32) - (i32.store - (call $___errno_location) - (i32.const 75) - ) - (i32.const -1) - ) - (i32.add - (local.get $9) - (local.get $16) - ) - ) - ) - ) - (br_if $__rjti$9 - (i32.eqz - (local.tee $6 - (i32.load8_s - (local.get $4) - ) - ) - ) - ) - (local.set $9 - (local.get $4) - ) - (block $label$break$L12 - (block $__rjti$1 - (loop $label$continue$L9 - (block $label$break$L9 - (block $switch - (if - (local.tee $5 - (i32.shr_s - (i32.shl - (local.get $6) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (block - (br_if $switch - (i32.ne - (local.get $5) - (i32.const 37) - ) - ) - (local.set $5 - (local.get $9) - ) - (br $__rjti$1) - ) - ) - (local.set $5 - (local.get $9) - ) - (br $label$break$L9) - ) - (local.set $6 - (i32.load8_s - (local.tee $9 - (i32.add - (local.get $9) - (i32.const 1) - ) - ) - ) - ) - (br $label$continue$L9) - ) - ) - (br $label$break$L12) - ) - (loop $while-in - (br_if $label$break$L12 - (i32.ne - (i32.load8_s offset=1 - (local.get $5) - ) - (i32.const 37) - ) - ) - (local.set $9 - (i32.add - (local.get $9) - (i32.const 1) - ) - ) - (br_if $while-in - (i32.eq - (i32.load8_s - (local.tee $5 - (i32.add - (local.get $5) - (i32.const 2) - ) - ) - ) - (i32.const 37) - ) - ) - ) - ) - (local.set $6 - (i32.sub - (local.get $9) - (local.get $4) - ) - ) - (if - (local.get $30) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $4) - (local.get $6) - (local.get $0) - ) - ) - ) - (if - (i32.ne - (local.get $4) - (local.get $9) - ) - (block - (local.set $4 - (local.get $5) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - ) - (local.set $10 - (if (result i32) - (i32.lt_u - (local.tee $7 - (i32.add - (local.tee $11 - (i32.load8_s - (local.tee $9 - (i32.add - (local.get $5) - (i32.const 1) - ) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (block (result i32) - (local.set $5 - (i32.load8_s - (local.tee $9 - (select - (i32.add - (local.get $5) - (i32.const 3) - ) - (local.get $9) - (local.tee $11 - (i32.eq - (i32.load8_s offset=2 - (local.get $5) - ) - (i32.const 36) - ) - ) - ) - ) - ) - ) - (local.set $18 - (select - (local.get $7) - (i32.const -1) - (local.get $11) - ) - ) - (select - (i32.const 1) - (local.get $25) - (local.get $11) - ) - ) - (block (result i32) - (local.set $5 - (local.get $11) - ) - (local.set $18 - (i32.const -1) - ) - (local.get $25) - ) - ) - ) - (local.set $8 - (if (result i32) - (i32.eq - (i32.and - (local.tee $11 - (i32.shr_s - (i32.shl - (local.get $5) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (i32.const -32) - ) - (i32.const 32) - ) - (block $label$break$L25 (result i32) - (local.set $25 - (local.get $5) - ) - (local.set $5 - (local.get $11) - ) - (local.set $11 - (i32.const 0) - ) - (loop $while-in4 (result i32) - (if - (i32.eqz - (i32.and - (i32.shl - (i32.const 1) - (i32.add - (local.get $5) - (i32.const -32) - ) - ) - (i32.const 75913) - ) - ) - (block - (local.set $5 - (local.get $25) - ) - (br $label$break$L25 - (local.get $11) - ) - ) - ) - (local.set $11 - (i32.or - (local.get $11) - (i32.shl - (i32.const 1) - (i32.add - (i32.shr_s - (i32.shl - (local.get $25) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -32) - ) - ) - ) - ) - (br_if $while-in4 - (i32.eq - (i32.and - (local.tee $5 - (local.tee $25 - (i32.load8_s - (local.tee $9 - (i32.add - (local.get $9) - (i32.const 1) - ) - ) - ) - ) - ) - (i32.const -32) - ) - (i32.const 32) - ) - ) - (local.set $5 - (local.get $25) - ) - (local.get $11) - ) - ) - (i32.const 0) - ) - ) - (local.set $25 - (if (result i32) - (i32.eq - (i32.and - (local.get $5) - (i32.const 255) - ) - (i32.const 42) - ) - (block $do-once5 (result i32) - (local.set $9 - (block $__rjto$0 (result i32) - (block $__rjti$0 - (br_if $__rjti$0 - (i32.ge_u - (local.tee $11 - (i32.add - (i32.load8_s - (local.tee $5 - (i32.add - (local.get $9) - (i32.const 1) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - ) - (br_if $__rjti$0 - (i32.ne - (i32.load8_s offset=2 - (local.get $9) - ) - (i32.const 36) - ) - ) - (i32.store - (i32.add - (i32.shl - (local.get $11) - (i32.const 2) - ) - (local.get $3) - ) - (i32.const 10) - ) - (drop - (i32.load offset=4 - (local.tee $5 - (i32.add - (i32.shl - (i32.add - (i32.load8_s - (local.get $5) - ) - (i32.const -48) - ) - (i32.const 3) - ) - (local.get $2) - ) - ) - ) - ) - (local.set $7 - (i32.const 1) - ) - (local.set $15 - (i32.load - (local.get $5) - ) - ) - (br $__rjto$0 - (i32.add - (local.get $9) - (i32.const 3) - ) - ) - ) - (if - (local.get $10) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (if - (i32.eqz - (local.get $30) - ) - (block - (local.set $11 - (local.get $8) - ) - (local.set $9 - (local.get $5) - ) - (local.set $15 - (i32.const 0) - ) - (br $do-once5 - (i32.const 0) - ) - ) - ) - (local.set $15 - (i32.load - (local.tee $9 - (i32.and - (i32.add - (i32.load - (local.get $1) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $1) - (i32.add - (local.get $9) - (i32.const 4) - ) - ) - (local.set $7 - (i32.const 0) - ) - (local.get $5) - ) - ) - (local.set $11 - (if (result i32) - (i32.lt_s - (local.get $15) - (i32.const 0) - ) - (block (result i32) - (local.set $15 - (i32.sub - (i32.const 0) - (local.get $15) - ) - ) - (i32.or - (local.get $8) - (i32.const 8192) - ) - ) - (local.get $8) - ) - ) - (local.get $7) - ) - (if (result i32) - (i32.lt_u - (local.tee $5 - (i32.add - (i32.shr_s - (i32.shl - (local.get $5) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (block (result i32) - (local.set $11 - (i32.const 0) - ) - (loop $while-in8 - (local.set $5 - (i32.add - (local.get $5) - (i32.mul - (local.get $11) - (i32.const 10) - ) - ) - ) - (if - (i32.lt_u - (local.tee $7 - (i32.add - (i32.load8_s - (local.tee $9 - (i32.add - (local.get $9) - (i32.const 1) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (block - (local.set $11 - (local.get $5) - ) - (local.set $5 - (local.get $7) - ) - (br $while-in8) - ) - ) - ) - (if (result i32) - (i32.lt_s - (local.get $5) - (i32.const 0) - ) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L1) - ) - (block (result i32) - (local.set $11 - (local.get $8) - ) - (local.set $15 - (local.get $5) - ) - (local.get $10) - ) - ) - ) - (block (result i32) - (local.set $11 - (local.get $8) - ) - (local.set $15 - (i32.const 0) - ) - (local.get $10) - ) - ) - ) - ) - (local.set $5 - (if (result i32) - (i32.eq - (i32.load8_s - (local.get $9) - ) - (i32.const 46) - ) - (block $label$break$L46 (result i32) - (if - (i32.ne - (local.tee $7 - (i32.load8_s - (local.tee $5 - (i32.add - (local.get $9) - (i32.const 1) - ) - ) - ) - ) - (i32.const 42) - ) - (block - (local.set $5 - (if (result i32) - (i32.lt_u - (local.tee $8 - (i32.add - (local.get $7) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (block (result i32) - (local.set $9 - (local.get $5) - ) - (local.set $7 - (i32.const 0) - ) - (local.get $8) - ) - (block - (local.set $9 - (local.get $5) - ) - (br $label$break$L46 - (i32.const 0) - ) - ) - ) - ) - (loop $while-in11 - (drop - (br_if $label$break$L46 - (local.tee $7 - (i32.add - (local.get $5) - (i32.mul - (local.get $7) - (i32.const 10) - ) - ) - ) - (i32.ge_u - (local.tee $5 - (i32.add - (i32.load8_s - (local.tee $9 - (i32.add - (local.get $9) - (i32.const 1) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - ) - ) - (br $while-in11) - ) - ) - ) - (if - (i32.lt_u - (local.tee $7 - (i32.add - (i32.load8_s - (local.tee $5 - (i32.add - (local.get $9) - (i32.const 2) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (if - (i32.eq - (i32.load8_s offset=3 - (local.get $9) - ) - (i32.const 36) - ) - (block - (i32.store - (i32.add - (i32.shl - (local.get $7) - (i32.const 2) - ) - (local.get $3) - ) - (i32.const 10) - ) - (drop - (i32.load offset=4 - (local.tee $5 - (i32.add - (i32.shl - (i32.add - (i32.load8_s - (local.get $5) - ) - (i32.const -48) - ) - (i32.const 3) - ) - (local.get $2) - ) - ) - ) - ) - (local.set $9 - (i32.add - (local.get $9) - (i32.const 4) - ) - ) - (br $label$break$L46 - (i32.load - (local.get $5) - ) - ) - ) - ) - ) - (if - (local.get $25) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (if (result i32) - (local.get $30) - (block (result i32) - (local.set $7 - (i32.load - (local.tee $9 - (i32.and - (i32.add - (i32.load - (local.get $1) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $1) - (i32.add - (local.get $9) - (i32.const 4) - ) - ) - (local.set $9 - (local.get $5) - ) - (local.get $7) - ) - (block (result i32) - (local.set $9 - (local.get $5) - ) - (i32.const 0) - ) - ) - ) - (i32.const -1) - ) - ) - (local.set $7 - (local.get $9) - ) - (local.set $10 - (i32.const 0) - ) - (local.set $17 - (loop $while-in13 (result i32) - (if - (i32.gt_u - (local.tee $8 - (i32.add - (i32.load8_s - (local.get $7) - ) - (i32.const -65) - ) - ) - (i32.const 57) - ) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (local.set $9 - (i32.add - (local.get $7) - (i32.const 1) - ) - ) - (if (result i32) - (i32.lt_u - (i32.add - (local.tee $8 - (i32.and - (local.tee $12 - (i32.load8_s - (i32.add - (local.get $8) - (i32.add - (i32.mul - (local.get $10) - (i32.const 58) - ) - (i32.const 3611) - ) - ) - ) - ) - (i32.const 255) - ) - ) - (i32.const -1) - ) - (i32.const 8) - ) - (block - (local.set $7 - (local.get $9) - ) - (local.set $10 - (local.get $8) - ) - (br $while-in13) - ) - (local.get $7) - ) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $12) - (i32.const 255) - ) - ) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (local.set $7 - (i32.gt_s - (local.get $18) - (i32.const -1) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (if - (i32.eq - (i32.and - (local.get $12) - (i32.const 255) - ) - (i32.const 19) - ) - (if - (local.get $7) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L1) - ) - (br $__rjti$2) - ) - (block - (if - (local.get $7) - (block - (i32.store - (i32.add - (i32.shl - (local.get $18) - (i32.const 2) - ) - (local.get $3) - ) - (local.get $8) - ) - (local.set $8 - (i32.load offset=4 - (local.tee $7 - (i32.add - (i32.shl - (local.get $18) - (i32.const 3) - ) - (local.get $2) - ) - ) - ) - ) - (i32.store - (local.get $13) - (i32.load - (local.get $7) - ) - ) - (i32.store offset=4 - (local.get $13) - (local.get $8) - ) - (br $__rjti$2) - ) - ) - (if - (i32.eqz - (local.get $30) - ) - (block - (local.set $16 - (i32.const 0) - ) - (br $label$break$L1) - ) - ) - (call $_pop_arg_336 - (local.get $13) - (local.get $8) - (local.get $1) - ) - ) - ) - (br $__rjto$2) - ) - (if - (i32.eqz - (local.get $30) - ) - (block - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - ) - ) - (local.set $11 - (select - (local.tee $7 - (i32.and - (local.get $11) - (i32.const -65537) - ) - ) - (local.get $11) - (i32.and - (local.get $11) - (i32.const 8192) - ) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.tee $5 - (select - (local.tee $6 - (i32.add - (local.tee $8 - (select - (local.tee $12 - (i32.sub - (block $__rjto$8 (result i32) - (block $__rjti$8 - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.tee $5 - (block $__rjti$7 (result i32) - (block $__rjti$6 - (block $__rjti$5 - (block $__rjti$4 - (block $__rjti$3 - (block $switch-default120 - (block $switch-case119 - (block $switch-case41 - (block $switch-case40 - (block $switch-case39 - (block $switch-case38 - (block $switch-case37 - (block $switch-case36 - (block $switch-case35 - (block $switch-case33 - (block $switch-case30 - (block $switch-case28 - (block $switch-case27 - (br_table $switch-case119 $switch-default120 $switch-case40 $switch-default120 $switch-case119 $switch-case119 $switch-case119 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case41 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case30 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case119 $switch-default120 $switch-case37 $switch-case35 $switch-case119 $switch-case119 $switch-case119 $switch-default120 $switch-case35 $switch-default120 $switch-default120 $switch-default120 $switch-case38 $switch-case27 $switch-case33 $switch-case28 $switch-default120 $switch-default120 $switch-case39 $switch-default120 $switch-case36 $switch-default120 $switch-default120 $switch-case30 $switch-default120 - (i32.sub - (local.tee $17 - (select - (i32.and - (local.tee $8 - (i32.load8_s - (local.get $17) - ) - ) - (i32.const -33) - ) - (local.get $8) - (i32.and - (i32.eq - (i32.and - (local.get $8) - (i32.const 15) - ) - (i32.const 3) - ) - (i32.ne - (local.get $10) - (i32.const 0) - ) - ) - ) - ) - (i32.const 65) - ) - ) - ) - (block $switch-default26 - (block $switch-case25 - (block $switch-case24 - (block $switch-case23 - (block $switch-case22 - (block $switch-case21 - (block $switch-case20 - (block $switch-case19 - (br_table $switch-case19 $switch-case20 $switch-case21 $switch-case22 $switch-case23 $switch-default26 $switch-case24 $switch-case25 $switch-default26 - (local.get $10) - ) - ) - (i32.store - (i32.load - (local.get $13) - ) - (local.get $16) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (i32.store - (i32.load - (local.get $13) - ) - (local.get $16) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (i32.store - (local.tee $4 - (i32.load - (local.get $13) - ) - ) - (local.get $16) - ) - (i32.store offset=4 - (local.get $4) - (i32.shr_s - (i32.shl - (i32.lt_s - (local.get $16) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (i32.store16 - (i32.load - (local.get $13) - ) - (local.get $16) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (i32.store8 - (i32.load - (local.get $13) - ) - (local.get $16) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (i32.store - (i32.load - (local.get $13) - ) - (local.get $16) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (i32.store - (local.tee $4 - (i32.load - (local.get $13) - ) - ) - (local.get $16) - ) - (i32.store offset=4 - (local.get $4) - (i32.shr_s - (i32.shl - (i32.lt_s - (local.get $16) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (local.set $4 - (i32.or - (local.get $11) - (i32.const 8) - ) - ) - (local.set $5 - (select - (local.get $5) - (i32.const 8) - (i32.gt_u - (local.get $5) - (i32.const 8) - ) - ) - ) - (local.set $17 - (i32.const 120) - ) - (br $__rjti$3) - ) - (local.set $4 - (local.get $11) - ) - (br $__rjti$3) - ) - (if - (i32.or - (local.tee $4 - (i32.load - (local.get $13) - ) - ) - (local.tee $6 - (i32.load offset=4 - (local.get $13) - ) - ) - ) - (block - (local.set $7 - (local.get $24) - ) - (loop $while-in32 - (i32.store8 - (local.tee $7 - (i32.add - (local.get $7) - (i32.const -1) - ) - ) - (i32.or - (i32.and - (local.get $4) - (i32.const 7) - ) - (i32.const 48) - ) - ) - (br_if $while-in32 - (i32.or - (local.tee $4 - (call $_bitshift64Lshr - (local.get $4) - (local.get $6) - (i32.const 3) - ) - ) - (local.tee $6 - (global.get $tempRet0) - ) - ) - ) - ) - ) - (local.set $7 - (local.get $24) - ) - ) - (if - (i32.and - (local.get $11) - (i32.const 8) - ) - (block - (local.set $4 - (local.get $11) - ) - (local.set $5 - (select - (local.tee $11 - (i32.add - (i32.sub - (local.get $39) - (local.tee $6 - (local.get $7) - ) - ) - (i32.const 1) - ) - ) - (local.get $5) - (i32.lt_s - (local.get $5) - (local.get $11) - ) - ) - ) - ) - (block - (local.set $6 - (local.get $7) - ) - (local.set $4 - (local.get $11) - ) - ) - ) - (local.set $7 - (i32.const 0) - ) - (local.set $10 - (i32.const 4091) - ) - (br $__rjti$8) - ) - (local.set $4 - (i32.load - (local.get $13) - ) - ) - (if - (i32.lt_s - (local.tee $6 - (i32.load offset=4 - (local.get $13) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (local.get $13) - (local.tee $4 - (call $_i64Subtract - (i32.const 0) - (i32.const 0) - (local.get $4) - (local.get $6) - ) - ) - ) - (i32.store offset=4 - (local.get $13) - (local.tee $6 - (global.get $tempRet0) - ) - ) - (local.set $7 - (i32.const 1) - ) - (local.set $10 - (i32.const 4091) - ) - (br $__rjti$4) - ) - ) - (local.set $10 - (if (result i32) - (i32.and - (local.get $11) - (i32.const 2048) - ) - (block (result i32) - (local.set $7 - (i32.const 1) - ) - (i32.const 4092) - ) - (block (result i32) - (local.set $7 - (local.tee $8 - (i32.and - (local.get $11) - (i32.const 1) - ) - ) - ) - (select - (i32.const 4093) - (i32.const 4091) - (local.get $8) - ) - ) - ) - ) - (br $__rjti$4) - ) - (local.set $4 - (i32.load - (local.get $13) - ) - ) - (local.set $6 - (i32.load offset=4 - (local.get $13) - ) - ) - (local.set $7 - (i32.const 0) - ) - (local.set $10 - (i32.const 4091) - ) - (br $__rjti$4) - ) - (drop - (i32.load offset=4 - (local.get $13) - ) - ) - (i32.store8 - (local.get $40) - (i32.load - (local.get $13) - ) - ) - (local.set $4 - (local.get $40) - ) - (local.set $11 - (local.get $7) - ) - (local.set $8 - (i32.const 1) - ) - (local.set $7 - (i32.const 0) - ) - (local.set $10 - (i32.const 4091) - ) - (br $__rjto$8 - (local.get $24) - ) - ) - (local.set $6 - (call $_strerror - (i32.load - (call $___errno_location) - ) - ) - ) - (br $__rjti$5) - ) - (local.set $6 - (select - (local.tee $4 - (i32.load - (local.get $13) - ) - ) - (i32.const 4101) - (local.get $4) - ) - ) - (br $__rjti$5) - ) - (drop - (i32.load offset=4 - (local.get $13) - ) - ) - (i32.store offset=8 - (local.get $29) - (i32.load - (local.get $13) - ) - ) - (i32.store offset=12 - (local.get $29) - (i32.const 0) - ) - (i32.store - (local.get $13) - (local.get $43) - ) - (local.set $7 - (i32.const -1) - ) - (br $__rjti$6) - ) - (if - (local.get $5) - (block - (local.set $7 - (local.get $5) - ) - (br $__rjti$6) - ) - (block - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (i32.const 0) - (local.get $11) - ) - (br $__rjti$7 - (i32.const 0) - ) - ) - ) - ) - (local.set $14 - (f64.load - (local.get $13) - ) - ) - (i32.store - (local.get $20) - (i32.const 0) - ) - (f64.store - (global.get $tempDoublePtr$asm2wasm$import) - (local.get $14) - ) - (drop - (i32.load - (global.get $tempDoublePtr$asm2wasm$import) - ) - ) - (local.set $32 - (if (result i32) - (i32.lt_s - (i32.load offset=4 - (global.get $tempDoublePtr$asm2wasm$import) - ) - (i32.const 0) - ) - (block (result i32) - (local.set $26 - (i32.const 1) - ) - (local.set $14 - (f64.neg - (local.get $14) - ) - ) - (i32.const 4108) - ) - (if (result i32) - (i32.and - (local.get $11) - (i32.const 2048) - ) - (block (result i32) - (local.set $26 - (i32.const 1) - ) - (i32.const 4111) - ) - (block (result i32) - (local.set $26 - (local.tee $4 - (i32.and - (local.get $11) - (i32.const 1) - ) - ) - ) - (select - (i32.const 4114) - (i32.const 4109) - (local.get $4) - ) - ) - ) - ) - ) - (f64.store - (global.get $tempDoublePtr$asm2wasm$import) - (local.get $14) - ) - (drop - (i32.load - (global.get $tempDoublePtr$asm2wasm$import) - ) - ) - (local.set $5 - (if (result i32) - (i32.lt_u - (i32.and - (i32.load offset=4 - (global.get $tempDoublePtr$asm2wasm$import) - ) - (i32.const 2146435072) - ) - (i32.const 2146435072) - ) - (block $do-once49 (result i32) - (if - (local.tee $4 - (f64.ne - (local.tee $22 - (f64.mul - (call $_frexp - (local.get $14) - (local.get $20) - ) - (f64.const 2) - ) - ) - (f64.const 0) - ) - ) - (i32.store - (local.get $20) - (i32.add - (i32.load - (local.get $20) - ) - (i32.const -1) - ) - ) - ) - (if - (i32.eq - (local.tee $12 - (i32.or - (local.get $17) - (i32.const 32) - ) - ) - (i32.const 97) - ) - (block - (local.set $8 - (select - (i32.add - (local.get $32) - (i32.const 9) - ) - (local.get $32) - (local.tee $12 - (i32.and - (local.get $17) - (i32.const 32) - ) - ) - ) - ) - (local.set $14 - (if (result f64) - (i32.or - (i32.eqz - (local.tee $4 - (i32.sub - (i32.const 12) - (local.get $5) - ) - ) - ) - (i32.gt_u - (local.get $5) - (i32.const 11) - ) - ) - (local.get $22) - (block (result f64) - (local.set $14 - (f64.const 8) - ) - (loop $while-in54 - (local.set $14 - (f64.mul - (local.get $14) - (f64.const 16) - ) - ) - (br_if $while-in54 - (local.tee $4 - (i32.add - (local.get $4) - (i32.const -1) - ) - ) - ) - ) - (if (result f64) - (i32.eq - (i32.load8_s - (local.get $8) - ) - (i32.const 45) - ) - (f64.neg - (f64.add - (local.get $14) - (f64.sub - (f64.neg - (local.get $22) - ) - (local.get $14) - ) - ) - ) - (f64.sub - (f64.add - (local.get $22) - (local.get $14) - ) - (local.get $14) - ) - ) - ) - ) - ) - (local.set $10 - (i32.or - (local.get $26) - (i32.const 2) - ) - ) - (if - (i32.eq - (local.tee $4 - (call $_fmt_u - (local.tee $4 - (select - (i32.sub - (i32.const 0) - (local.tee $6 - (i32.load - (local.get $20) - ) - ) - ) - (local.get $6) - (i32.lt_s - (local.get $6) - (i32.const 0) - ) - ) - ) - (i32.shr_s - (i32.shl - (i32.lt_s - (local.get $4) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - (local.get $33) - ) - ) - (local.get $33) - ) - (block - (i32.store8 - (local.get $41) - (i32.const 48) - ) - (local.set $4 - (local.get $41) - ) - ) - ) - (i32.store8 - (i32.add - (local.get $4) - (i32.const -1) - ) - (i32.add - (i32.and - (i32.shr_s - (local.get $6) - (i32.const 31) - ) - (i32.const 2) - ) - (i32.const 43) - ) - ) - (i32.store8 - (local.tee $7 - (i32.add - (local.get $4) - (i32.const -2) - ) - ) - (i32.add - (local.get $17) - (i32.const 15) - ) - ) - (local.set $17 - (i32.lt_s - (local.get $5) - (i32.const 1) - ) - ) - (local.set $19 - (i32.eqz - (i32.and - (local.get $11) - (i32.const 8) - ) - ) - ) - (local.set $4 - (local.get $21) - ) - (loop $while-in56 - (i32.store8 - (local.get $4) - (i32.or - (local.get $12) - (i32.load8_u - (i32.add - (local.tee $6 - (call $f64-to-int - (local.get $14) - ) - ) - (i32.const 4075) - ) - ) - ) - ) - (local.set $14 - (f64.mul - (f64.sub - (local.get $14) - (f64.convert_i32_s - (local.get $6) - ) - ) - (f64.const 16) - ) - ) - (local.set $4 - (if (result i32) - (i32.eq - (i32.sub - (local.tee $6 - (i32.add - (local.get $4) - (i32.const 1) - ) - ) - (local.get $36) - ) - (i32.const 1) - ) - (if (result i32) - (i32.and - (i32.and - (f64.eq - (local.get $14) - (f64.const 0) - ) - (local.get $17) - ) - (local.get $19) - ) - (local.get $6) - (block (result i32) - (i32.store8 - (local.get $6) - (i32.const 46) - ) - (i32.add - (local.get $4) - (i32.const 2) - ) - ) - ) - (local.get $6) - ) - ) - (br_if $while-in56 - (f64.ne - (local.get $14) - (f64.const 0) - ) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.tee $5 - (i32.add - (local.get $10) - (local.tee $6 - (select - (i32.sub - (i32.add - (local.get $5) - (local.get $46) - ) - (local.get $7) - ) - (i32.add - (local.get $4) - (i32.sub - (local.get $44) - (local.get $7) - ) - ) - (i32.and - (i32.ne - (local.get $5) - (i32.const 0) - ) - (i32.lt_s - (i32.add - (local.get $4) - (local.get $45) - ) - (local.get $5) - ) - ) - ) - ) - ) - ) - (local.get $11) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $8) - (local.get $10) - (local.get $0) - ) - ) - (call $_pad - (local.get $0) - (i32.const 48) - (local.get $15) - (local.get $5) - (i32.xor - (local.get $11) - (i32.const 65536) - ) - ) - (local.set $4 - (i32.sub - (local.get $4) - (local.get $36) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $21) - (local.get $4) - (local.get $0) - ) - ) - (call $_pad - (local.get $0) - (i32.const 48) - (i32.sub - (local.get $6) - (i32.add - (local.get $4) - (local.tee $6 - (i32.sub - (local.get $28) - (local.get $7) - ) - ) - ) - ) - (i32.const 0) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $7) - (local.get $6) - (local.get $0) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.get $5) - (i32.xor - (local.get $11) - (i32.const 8192) - ) - ) - (br $do-once49 - (select - (local.get $15) - (local.get $5) - (i32.lt_s - (local.get $5) - (local.get $15) - ) - ) - ) - ) - ) - (local.set $14 - (if (result f64) - (local.get $4) - (block (result f64) - (i32.store - (local.get $20) - (local.tee $4 - (i32.add - (i32.load - (local.get $20) - ) - (i32.const -28) - ) - ) - ) - (f64.mul - (local.get $22) - (f64.const 268435456) - ) - ) - (block (result f64) - (local.set $4 - (i32.load - (local.get $20) - ) - ) - (local.get $22) - ) - ) - ) - (local.set $6 - (local.tee $7 - (select - (local.get $47) - (local.get $48) - (i32.lt_s - (local.get $4) - (i32.const 0) - ) - ) - ) - ) - (loop $while-in60 - (i32.store - (local.get $6) - (local.tee $4 - (call $f64-to-uint - (local.get $14) - ) - ) - ) - (local.set $6 - (i32.add - (local.get $6) - (i32.const 4) - ) - ) - (br_if $while-in60 - (f64.ne - (local.tee $14 - (f64.mul - (f64.sub - (local.get $14) - (f64.convert_i32_u - (local.get $4) - ) - ) - (f64.const 1e9) - ) - ) - (f64.const 0) - ) - ) - ) - (if - (i32.gt_s - (local.tee $10 - (i32.load - (local.get $20) - ) - ) - (i32.const 0) - ) - (block - (local.set $4 - (local.get $7) - ) - (loop $while-in62 - (local.set $19 - (select - (i32.const 29) - (local.get $10) - (i32.gt_s - (local.get $10) - (i32.const 29) - ) - ) - ) - (if - (i32.ge_u - (local.tee $10 - (i32.add - (local.get $6) - (i32.const -4) - ) - ) - (local.get $4) - ) - (block $do-once63 - (local.set $8 - (i32.const 0) - ) - (loop $while-in66 - (i32.store - (local.get $10) - (call $___uremdi3 - (local.tee $8 - (call $_i64Add - (call $_bitshift64Shl - (i32.load - (local.get $10) - ) - (i32.const 0) - (local.get $19) - ) - (global.get $tempRet0) - (local.get $8) - (i32.const 0) - ) - ) - (local.tee $18 - (global.get $tempRet0) - ) - (i32.const 1000000000) - ) - ) - (local.set $8 - (call $___udivdi3 - (local.get $8) - (local.get $18) - (i32.const 1000000000) - ) - ) - (br_if $while-in66 - (i32.ge_u - (local.tee $10 - (i32.add - (local.get $10) - (i32.const -4) - ) - ) - (local.get $4) - ) - ) - ) - (br_if $do-once63 - (i32.eqz - (local.get $8) - ) - ) - (i32.store - (local.tee $4 - (i32.add - (local.get $4) - (i32.const -4) - ) - ) - (local.get $8) - ) - ) - ) - (loop $while-in68 - (if - (i32.gt_u - (local.get $6) - (local.get $4) - ) - (if - (i32.eqz - (i32.load - (local.tee $8 - (i32.add - (local.get $6) - (i32.const -4) - ) - ) - ) - ) - (block - (local.set $6 - (local.get $8) - ) - (br $while-in68) - ) - ) - ) - ) - (i32.store - (local.get $20) - (local.tee $10 - (i32.sub - (i32.load - (local.get $20) - ) - (local.get $19) - ) - ) - ) - (br_if $while-in62 - (i32.gt_s - (local.get $10) - (i32.const 0) - ) - ) - ) - ) - (local.set $4 - (local.get $7) - ) - ) - (local.set $18 - (select - (i32.const 6) - (local.get $5) - (i32.lt_s - (local.get $5) - (i32.const 0) - ) - ) - ) - (if - (i32.lt_s - (local.get $10) - (i32.const 0) - ) - (block - (local.set $19 - (i32.add - (call $i32s-div - (i32.add - (local.get $18) - (i32.const 25) - ) - (i32.const 9) - ) - (i32.const 1) - ) - ) - (local.set $23 - (i32.eq - (local.get $12) - (i32.const 102) - ) - ) - (local.set $5 - (local.get $4) - ) - (local.set $4 - (local.get $6) - ) - (local.set $4 - (loop $while-in70 (result i32) - (local.set $8 - (select - (i32.const 9) - (local.tee $6 - (i32.sub - (i32.const 0) - (local.get $10) - ) - ) - (i32.gt_s - (local.get $6) - (i32.const 9) - ) - ) - ) - (if - (i32.lt_u - (local.get $5) - (local.get $4) - ) - (block $do-once71 - (local.set $27 - (i32.add - (i32.shl - (i32.const 1) - (local.get $8) - ) - (i32.const -1) - ) - ) - (local.set $37 - (i32.shr_u - (i32.const 1000000000) - (local.get $8) - ) - ) - (local.set $10 - (i32.const 0) - ) - (local.set $6 - (local.get $5) - ) - (loop $while-in74 - (i32.store - (local.get $6) - (i32.add - (local.get $10) - (i32.shr_u - (local.tee $38 - (i32.load - (local.get $6) - ) - ) - (local.get $8) - ) - ) - ) - (local.set $10 - (i32.mul - (i32.and - (local.get $27) - (local.get $38) - ) - (local.get $37) - ) - ) - (br_if $while-in74 - (i32.lt_u - (local.tee $6 - (i32.add - (local.get $6) - (i32.const 4) - ) - ) - (local.get $4) - ) - ) - ) - (local.set $6 - (select - (local.get $5) - (i32.add - (local.get $5) - (i32.const 4) - ) - (i32.load - (local.get $5) - ) - ) - ) - (br_if $do-once71 - (i32.eqz - (local.get $10) - ) - ) - (i32.store - (local.get $4) - (local.get $10) - ) - (local.set $4 - (i32.add - (local.get $4) - (i32.const 4) - ) - ) - ) - (local.set $6 - (select - (local.get $5) - (i32.add - (local.get $5) - (i32.const 4) - ) - (i32.load - (local.get $5) - ) - ) - ) - ) - (local.set $4 - (select - (i32.add - (local.tee $5 - (select - (local.get $7) - (local.get $6) - (local.get $23) - ) - ) - (i32.shl - (local.get $19) - (i32.const 2) - ) - ) - (local.get $4) - (i32.gt_s - (i32.shr_s - (i32.sub - (local.get $4) - (local.get $5) - ) - (i32.const 2) - ) - (local.get $19) - ) - ) - ) - (i32.store - (local.get $20) - (local.tee $10 - (i32.add - (i32.load - (local.get $20) - ) - (local.get $8) - ) - ) - ) - (if (result i32) - (i32.lt_s - (local.get $10) - (i32.const 0) - ) - (block - (local.set $5 - (local.get $6) - ) - (br $while-in70) - ) - (block (result i32) - (local.set $10 - (local.get $4) - ) - (local.get $6) - ) - ) - ) - ) - ) - (local.set $10 - (local.get $6) - ) - ) - (local.set $19 - (local.get $7) - ) - (if - (i32.lt_u - (local.get $4) - (local.get $10) - ) - (block $do-once75 - (local.set $6 - (i32.mul - (i32.shr_s - (i32.sub - (local.get $19) - (local.get $4) - ) - (i32.const 2) - ) - (i32.const 9) - ) - ) - (br_if $do-once75 - (i32.lt_u - (local.tee $8 - (i32.load - (local.get $4) - ) - ) - (i32.const 10) - ) - ) - (local.set $5 - (i32.const 10) - ) - (loop $while-in78 - (local.set $6 - (i32.add - (local.get $6) - (i32.const 1) - ) - ) - (br_if $while-in78 - (i32.ge_u - (local.get $8) - (local.tee $5 - (i32.mul - (local.get $5) - (i32.const 10) - ) - ) - ) - ) - ) - ) - (local.set $6 - (i32.const 0) - ) - ) - (local.set $4 - (if (result i32) - (i32.lt_s - (local.tee $5 - (i32.add - (i32.sub - (local.get $18) - (select - (local.get $6) - (i32.const 0) - (i32.ne - (local.get $12) - (i32.const 102) - ) - ) - ) - (i32.shr_s - (i32.shl - (i32.and - (local.tee $37 - (i32.eq - (local.get $12) - (i32.const 103) - ) - ) - (local.tee $38 - (i32.ne - (local.get $18) - (i32.const 0) - ) - ) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - ) - (i32.add - (i32.mul - (i32.shr_s - (i32.sub - (local.get $10) - (local.get $19) - ) - (i32.const 2) - ) - (i32.const 9) - ) - (i32.const -9) - ) - ) - (block (result i32) - (local.set $12 - (call $i32s-div - (local.tee $5 - (i32.add - (local.get $5) - (i32.const 9216) - ) - ) - (i32.const 9) - ) - ) - (if - (i32.lt_s - (local.tee $5 - (i32.add - (i32.rem_s - (local.get $5) - (i32.const 9) - ) - (i32.const 1) - ) - ) - (i32.const 9) - ) - (block - (local.set $8 - (i32.const 10) - ) - (loop $while-in80 - (local.set $8 - (i32.mul - (local.get $8) - (i32.const 10) - ) - ) - (br_if $while-in80 - (i32.ne - (local.tee $5 - (i32.add - (local.get $5) - (i32.const 1) - ) - ) - (i32.const 9) - ) - ) - ) - ) - (local.set $8 - (i32.const 10) - ) - ) - (local.set $12 - (call $i32u-rem - (local.tee $23 - (i32.load - (local.tee $5 - (i32.add - (i32.add - (i32.shl - (local.get $12) - (i32.const 2) - ) - (local.get $7) - ) - (i32.const -4092) - ) - ) - ) - ) - (local.get $8) - ) - ) - (if - (i32.eqz - (i32.and - (local.tee $27 - (i32.eq - (i32.add - (local.get $5) - (i32.const 4) - ) - (local.get $10) - ) - ) - (i32.eqz - (local.get $12) - ) - ) - ) - (block $do-once81 - (local.set $49 - (call $i32u-div - (local.get $23) - (local.get $8) - ) - ) - (local.set $14 - (if (result f64) - (i32.lt_u - (local.get $12) - (local.tee $50 - (call $i32s-div - (local.get $8) - (i32.const 2) - ) - ) - ) - (f64.const 0.5) - (select - (f64.const 1) - (f64.const 1.5) - (i32.and - (local.get $27) - (i32.eq - (local.get $12) - (local.get $50) - ) - ) - ) - ) - ) - (local.set $22 - (select - (f64.const 9007199254740994) - (f64.const 9007199254740992) - (i32.and - (local.get $49) - (i32.const 1) - ) - ) - ) - (if - (local.get $26) - (if - (i32.eq - (i32.load8_s - (local.get $32) - ) - (i32.const 45) - ) - (block - (local.set $22 - (f64.neg - (local.get $22) - ) - ) - (local.set $14 - (f64.neg - (local.get $14) - ) - ) - ) - ) - ) - (i32.store - (local.get $5) - (local.tee $12 - (i32.sub - (local.get $23) - (local.get $12) - ) - ) - ) - (br_if $do-once81 - (f64.eq - (f64.add - (local.get $22) - (local.get $14) - ) - (local.get $22) - ) - ) - (i32.store - (local.get $5) - (local.tee $6 - (i32.add - (local.get $8) - (local.get $12) - ) - ) - ) - (if - (i32.gt_u - (local.get $6) - (i32.const 999999999) - ) - (loop $while-in86 - (i32.store - (local.get $5) - (i32.const 0) - ) - (if - (i32.lt_u - (local.tee $5 - (i32.add - (local.get $5) - (i32.const -4) - ) - ) - (local.get $4) - ) - (i32.store - (local.tee $4 - (i32.add - (local.get $4) - (i32.const -4) - ) - ) - (i32.const 0) - ) - ) - (i32.store - (local.get $5) - (local.tee $6 - (i32.add - (i32.load - (local.get $5) - ) - (i32.const 1) - ) - ) - ) - (br_if $while-in86 - (i32.gt_u - (local.get $6) - (i32.const 999999999) - ) - ) - ) - ) - (local.set $6 - (i32.mul - (i32.shr_s - (i32.sub - (local.get $19) - (local.get $4) - ) - (i32.const 2) - ) - (i32.const 9) - ) - ) - (br_if $do-once81 - (i32.lt_u - (local.tee $12 - (i32.load - (local.get $4) - ) - ) - (i32.const 10) - ) - ) - (local.set $8 - (i32.const 10) - ) - (loop $while-in88 - (local.set $6 - (i32.add - (local.get $6) - (i32.const 1) - ) - ) - (br_if $while-in88 - (i32.ge_u - (local.get $12) - (local.tee $8 - (i32.mul - (local.get $8) - (i32.const 10) - ) - ) - ) - ) - ) - ) - ) - (local.set $8 - (local.get $4) - ) - (local.set $12 - (local.get $6) - ) - (select - (local.tee $4 - (i32.add - (local.get $5) - (i32.const 4) - ) - ) - (local.get $10) - (i32.gt_u - (local.get $10) - (local.get $4) - ) - ) - ) - (block (result i32) - (local.set $8 - (local.get $4) - ) - (local.set $12 - (local.get $6) - ) - (local.get $10) - ) - ) - ) - (local.set $23 - (loop $while-in90 (result i32) - (block $while-out89 (result i32) - (if - (i32.le_u - (local.get $4) - (local.get $8) - ) - (block - (local.set $27 - (i32.const 0) - ) - (br $while-out89 - (local.get $4) - ) - ) - ) - (if (result i32) - (i32.load - (local.tee $5 - (i32.add - (local.get $4) - (i32.const -4) - ) - ) - ) - (block (result i32) - (local.set $27 - (i32.const 1) - ) - (local.get $4) - ) - (block - (local.set $4 - (local.get $5) - ) - (br $while-in90) - ) - ) - ) - ) - ) - (local.set $4 - (if (result i32) - (local.get $37) - (block $do-once91 (result i32) - (local.set $6 - (if (result i32) - (i32.and - (i32.gt_s - (local.tee $4 - (i32.add - (local.get $18) - (i32.xor - (local.get $38) - (i32.const 1) - ) - ) - ) - (local.get $12) - ) - (i32.gt_s - (local.get $12) - (i32.const -5) - ) - ) - (block (result i32) - (local.set $18 - (i32.sub - (i32.add - (local.get $4) - (i32.const -1) - ) - (local.get $12) - ) - ) - (i32.add - (local.get $17) - (i32.const -1) - ) - ) - (block (result i32) - (local.set $18 - (i32.add - (local.get $4) - (i32.const -1) - ) - ) - (i32.add - (local.get $17) - (i32.const -2) - ) - ) - ) - ) - (drop - (br_if $do-once91 - (local.get $18) - (local.tee $10 - (i32.and - (local.get $11) - (i32.const 8) - ) - ) - ) - ) - (if - (local.get $27) - (block $do-once93 - (if - (i32.eqz - (local.tee $10 - (i32.load - (i32.add - (local.get $23) - (i32.const -4) - ) - ) - ) - ) - (block - (local.set $4 - (i32.const 9) - ) - (br $do-once93) - ) - ) - (local.set $4 - (if (result i32) - (call $i32u-rem - (local.get $10) - (i32.const 10) - ) - (block - (local.set $4 - (i32.const 0) - ) - (br $do-once93) - ) - (block (result i32) - (local.set $5 - (i32.const 10) - ) - (i32.const 0) - ) - ) - ) - (loop $while-in96 - (local.set $4 - (i32.add - (local.get $4) - (i32.const 1) - ) - ) - (br_if $while-in96 - (i32.eqz - (call $i32u-rem - (local.get $10) - (local.tee $5 - (i32.mul - (local.get $5) - (i32.const 10) - ) - ) - ) - ) - ) - ) - ) - (local.set $4 - (i32.const 9) - ) - ) - (local.set $5 - (i32.add - (i32.mul - (i32.shr_s - (i32.sub - (local.get $23) - (local.get $19) - ) - (i32.const 2) - ) - (i32.const 9) - ) - (i32.const -9) - ) - ) - (if (result i32) - (i32.eq - (i32.or - (local.get $6) - (i32.const 32) - ) - (i32.const 102) - ) - (block (result i32) - (local.set $10 - (i32.const 0) - ) - (select - (local.get $18) - (local.tee $4 - (select - (i32.const 0) - (local.tee $4 - (i32.sub - (local.get $5) - (local.get $4) - ) - ) - (i32.lt_s - (local.get $4) - (i32.const 0) - ) - ) - ) - (i32.lt_s - (local.get $18) - (local.get $4) - ) - ) - ) - (block (result i32) - (local.set $10 - (i32.const 0) - ) - (select - (local.get $18) - (local.tee $4 - (select - (i32.const 0) - (local.tee $4 - (i32.sub - (i32.add - (local.get $5) - (local.get $12) - ) - (local.get $4) - ) - ) - (i32.lt_s - (local.get $4) - (i32.const 0) - ) - ) - ) - (i32.lt_s - (local.get $18) - (local.get $4) - ) - ) - ) - ) - ) - (block (result i32) - (local.set $10 - (i32.and - (local.get $11) - (i32.const 8) - ) - ) - (local.set $6 - (local.get $17) - ) - (local.get $18) - ) - ) - ) - (local.set $5 - (i32.sub - (i32.const 0) - (local.get $12) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.tee $12 - (i32.add - (if (result i32) - (local.tee $19 - (i32.eq - (i32.or - (local.get $6) - (i32.const 32) - ) - (i32.const 102) - ) - ) - (block (result i32) - (local.set $17 - (i32.const 0) - ) - (select - (local.get $12) - (i32.const 0) - (i32.gt_s - (local.get $12) - (i32.const 0) - ) - ) - ) - (block (result i32) - (if - (i32.lt_s - (i32.sub - (local.get $28) - (local.tee $5 - (call $_fmt_u - (local.tee $5 - (select - (local.get $5) - (local.get $12) - (i32.lt_s - (local.get $12) - (i32.const 0) - ) - ) - ) - (i32.shr_s - (i32.shl - (i32.lt_s - (local.get $5) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - (local.get $33) - ) - ) - ) - (i32.const 2) - ) - (loop $while-in98 - (i32.store8 - (local.tee $5 - (i32.add - (local.get $5) - (i32.const -1) - ) - ) - (i32.const 48) - ) - (br_if $while-in98 - (i32.lt_s - (i32.sub - (local.get $28) - (local.get $5) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.store8 - (i32.add - (local.get $5) - (i32.const -1) - ) - (i32.add - (i32.and - (i32.shr_s - (local.get $12) - (i32.const 31) - ) - (i32.const 2) - ) - (i32.const 43) - ) - ) - (i32.store8 - (local.tee $17 - (i32.add - (local.get $5) - (i32.const -2) - ) - ) - (local.get $6) - ) - (i32.sub - (local.get $28) - (local.get $17) - ) - ) - ) - (i32.add - (i32.add - (i32.add - (local.get $26) - (i32.const 1) - ) - (local.get $4) - ) - (i32.ne - (local.tee $18 - (i32.or - (local.get $4) - (local.get $10) - ) - ) - (i32.const 0) - ) - ) - ) - ) - (local.get $11) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $32) - (local.get $26) - (local.get $0) - ) - ) - (call $_pad - (local.get $0) - (i32.const 48) - (local.get $15) - (local.get $12) - (i32.xor - (local.get $11) - (i32.const 65536) - ) - ) - (if - (local.get $19) - (block - (local.set $5 - (local.tee $8 - (select - (local.get $7) - (local.get $8) - (i32.gt_u - (local.get $8) - (local.get $7) - ) - ) - ) - ) - (loop $while-in102 - (local.set $6 - (call $_fmt_u - (i32.load - (local.get $5) - ) - (i32.const 0) - (local.get $31) - ) - ) - (block $do-once103 - (if - (i32.eq - (local.get $5) - (local.get $8) - ) - (block - (br_if $do-once103 - (i32.ne - (local.get $6) - (local.get $31) - ) - ) - (i32.store8 - (local.get $34) - (i32.const 48) - ) - (local.set $6 - (local.get $34) - ) - ) - (block - (br_if $do-once103 - (i32.le_u - (local.get $6) - (local.get $21) - ) - ) - (loop $while-in106 - (i32.store8 - (local.tee $6 - (i32.add - (local.get $6) - (i32.const -1) - ) - ) - (i32.const 48) - ) - (br_if $while-in106 - (i32.gt_u - (local.get $6) - (local.get $21) - ) - ) - ) - ) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $6) - (i32.sub - (local.get $42) - (local.get $6) - ) - (local.get $0) - ) - ) - (if - (i32.le_u - (local.tee $6 - (i32.add - (local.get $5) - (i32.const 4) - ) - ) - (local.get $7) - ) - (block - (local.set $5 - (local.get $6) - ) - (br $while-in102) - ) - ) - ) - (if - (local.get $18) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (i32.const 4143) - (i32.const 1) - (local.get $0) - ) - ) - ) - (call $_pad - (local.get $0) - (i32.const 48) - (i32.add - (if (result i32) - (i32.and - (i32.lt_u - (local.get $6) - (local.get $23) - ) - (i32.gt_s - (local.get $4) - (i32.const 0) - ) - ) - (loop $while-in110 (result i32) - (if - (i32.gt_u - (local.tee $5 - (call $_fmt_u - (i32.load - (local.get $6) - ) - (i32.const 0) - (local.get $31) - ) - ) - (local.get $21) - ) - (loop $while-in112 - (i32.store8 - (local.tee $5 - (i32.add - (local.get $5) - (i32.const -1) - ) - ) - (i32.const 48) - ) - (br_if $while-in112 - (i32.gt_u - (local.get $5) - (local.get $21) - ) - ) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $5) - (select - (i32.const 9) - (local.get $4) - (i32.gt_s - (local.get $4) - (i32.const 9) - ) - ) - (local.get $0) - ) - ) - (local.set $5 - (i32.add - (local.get $4) - (i32.const -9) - ) - ) - (if (result i32) - (i32.and - (i32.lt_u - (local.tee $6 - (i32.add - (local.get $6) - (i32.const 4) - ) - ) - (local.get $23) - ) - (i32.gt_s - (local.get $4) - (i32.const 9) - ) - ) - (block - (local.set $4 - (local.get $5) - ) - (br $while-in110) - ) - (local.get $5) - ) - ) - (local.get $4) - ) - (i32.const 9) - ) - (i32.const 9) - (i32.const 0) - ) - ) - (block $do-once99 - (local.set $19 - (select - (local.get $23) - (i32.add - (local.get $8) - (i32.const 4) - ) - (local.get $27) - ) - ) - (call $_pad - (local.get $0) - (i32.const 48) - (i32.add - (if (result i32) - (i32.gt_s - (local.get $4) - (i32.const -1) - ) - (block (result i32) - (local.set $10 - (i32.eqz - (local.get $10) - ) - ) - (local.set $5 - (local.get $8) - ) - (local.set $6 - (local.get $4) - ) - (loop $while-in114 (result i32) - (if - (i32.eq - (local.tee $4 - (call $_fmt_u - (i32.load - (local.get $5) - ) - (i32.const 0) - (local.get $31) - ) - ) - (local.get $31) - ) - (block - (i32.store8 - (local.get $34) - (i32.const 48) - ) - (local.set $4 - (local.get $34) - ) - ) - ) - (block $do-once115 - (if - (i32.eq - (local.get $5) - (local.get $8) - ) - (block - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $4) - (i32.const 1) - (local.get $0) - ) - ) - (local.set $4 - (i32.add - (local.get $4) - (i32.const 1) - ) - ) - (br_if $do-once115 - (i32.and - (i32.lt_s - (local.get $6) - (i32.const 1) - ) - (local.get $10) - ) - ) - (br_if $do-once115 - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (i32.const 4143) - (i32.const 1) - (local.get $0) - ) - ) - (block - (br_if $do-once115 - (i32.le_u - (local.get $4) - (local.get $21) - ) - ) - (loop $while-in118 - (i32.store8 - (local.tee $4 - (i32.add - (local.get $4) - (i32.const -1) - ) - ) - (i32.const 48) - ) - (br_if $while-in118 - (i32.gt_u - (local.get $4) - (local.get $21) - ) - ) - ) - ) - ) - ) - (local.set $7 - (i32.sub - (local.get $42) - (local.get $4) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $4) - (select - (local.get $7) - (local.get $6) - (i32.gt_s - (local.get $6) - (local.get $7) - ) - ) - (local.get $0) - ) - ) - (br_if $while-in114 - (i32.and - (i32.lt_u - (local.tee $5 - (i32.add - (local.get $5) - (i32.const 4) - ) - ) - (local.get $19) - ) - (i32.gt_s - (local.tee $6 - (i32.sub - (local.get $6) - (local.get $7) - ) - ) - (i32.const -1) - ) - ) - ) - (local.get $6) - ) - ) - (local.get $4) - ) - (i32.const 18) - ) - (i32.const 18) - (i32.const 0) - ) - (br_if $do-once99 - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $17) - (i32.sub - (local.get $28) - (local.get $17) - ) - (local.get $0) - ) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.get $12) - (i32.xor - (local.get $11) - (i32.const 8192) - ) - ) - (select - (local.get $15) - (local.get $12) - (i32.lt_s - (local.get $12) - (local.get $15) - ) - ) - ) - (block (result i32) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.tee $4 - (i32.add - (local.tee $6 - (select - (i32.const 0) - (local.get $26) - (local.tee $5 - (f64.ne - (local.get $14) - (local.get $14) - ) - ) - ) - ) - (i32.const 3) - ) - ) - (local.get $7) - ) - (local.set $5 - (select - (select - (i32.const 4135) - (i32.const 4139) - (local.tee $7 - (i32.ne - (i32.and - (local.get $17) - (i32.const 32) - ) - (i32.const 0) - ) - ) - ) - (select - (i32.const 4127) - (i32.const 4131) - (local.get $7) - ) - (local.get $5) - ) - ) - (if - (i32.eqz - (i32.and - (if (result i32) - (i32.and - (local.tee $7 - (i32.load - (local.get $0) - ) - ) - (i32.const 32) - ) - (local.get $7) - (block (result i32) - (call $___fwritex - (local.get $32) - (local.get $6) - (local.get $0) - ) - (i32.load - (local.get $0) - ) - ) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $5) - (i32.const 3) - (local.get $0) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.get $4) - (i32.xor - (local.get $11) - (i32.const 8192) - ) - ) - (select - (local.get $15) - (local.get $4) - (i32.lt_s - (local.get $4) - (local.get $15) - ) - ) - ) - ) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $5) - ) - (br $label$continue$L1) - ) - (local.set $8 - (local.get $5) - ) - (local.set $7 - (i32.const 0) - ) - (local.set $10 - (i32.const 4091) - ) - (br $__rjto$8 - (local.get $24) - ) - ) - (local.set $8 - (i32.and - (local.get $17) - (i32.const 32) - ) - ) - (local.set $7 - (if (result i32) - (i32.or - (local.tee $6 - (i32.load - (local.get $13) - ) - ) - (local.tee $11 - (i32.load offset=4 - (local.get $13) - ) - ) - ) - (block (result i32) - (local.set $7 - (local.get $24) - ) - (local.set $6 - (loop $while-in123 (result i32) - (i32.store8 - (local.tee $7 - (i32.add - (local.get $7) - (i32.const -1) - ) - ) - (i32.or - (local.get $8) - (i32.load8_u - (i32.add - (i32.and - (local.get $6) - (i32.const 15) - ) - (i32.const 4075) - ) - ) - ) - ) - (br_if $while-in123 - (i32.or - (local.tee $6 - (call $_bitshift64Lshr - (local.get $6) - (local.get $11) - (i32.const 4) - ) - ) - (local.tee $11 - (global.get $tempRet0) - ) - ) - ) - (local.get $7) - ) - ) - (if (result i32) - (i32.or - (i32.eqz - (i32.or - (i32.load - (local.get $13) - ) - (i32.load offset=4 - (local.get $13) - ) - ) - ) - (i32.eqz - (i32.and - (local.get $4) - (i32.const 8) - ) - ) - ) - (block (result i32) - (local.set $10 - (i32.const 4091) - ) - (i32.const 0) - ) - (block (result i32) - (local.set $10 - (i32.add - (i32.shr_s - (local.get $17) - (i32.const 4) - ) - (i32.const 4091) - ) - ) - (i32.const 2) - ) - ) - ) - (block (result i32) - (local.set $6 - (local.get $24) - ) - (local.set $10 - (i32.const 4091) - ) - (i32.const 0) - ) - ) - ) - (br $__rjti$8) - ) - (local.set $6 - (call $_fmt_u - (local.get $4) - (local.get $6) - (local.get $24) - ) - ) - (local.set $4 - (local.get $11) - ) - (br $__rjti$8) - ) - (local.set $17 - (i32.eqz - (local.tee $12 - (call $_memchr - (local.get $6) - (local.get $5) - ) - ) - ) - ) - (local.set $11 - (local.get $7) - ) - (local.set $8 - (select - (local.get $5) - (i32.sub - (local.get $12) - (local.tee $4 - (local.get $6) - ) - ) - (local.get $17) - ) - ) - (local.set $7 - (i32.const 0) - ) - (local.set $10 - (i32.const 4091) - ) - (br $__rjto$8 - (select - (i32.add - (local.get $4) - (local.get $5) - ) - (local.get $12) - (local.get $17) - ) - ) - ) - (local.set $4 - (i32.const 0) - ) - (local.set $6 - (i32.const 0) - ) - (local.set $5 - (i32.load - (local.get $13) - ) - ) - (loop $while-in125 - (block $while-out124 - (br_if $while-out124 - (i32.eqz - (local.tee $8 - (i32.load - (local.get $5) - ) - ) - ) - ) - (br_if $while-out124 - (i32.or - (i32.lt_s - (local.tee $6 - (call $_wctomb - (local.get $35) - (local.get $8) - ) - ) - (i32.const 0) - ) - (i32.gt_u - (local.get $6) - (i32.sub - (local.get $7) - (local.get $4) - ) - ) - ) - ) - (local.set $5 - (i32.add - (local.get $5) - (i32.const 4) - ) - ) - (br_if $while-in125 - (i32.gt_u - (local.get $7) - (local.tee $4 - (i32.add - (local.get $4) - (local.get $6) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_s - (local.get $6) - (i32.const 0) - ) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.get $4) - (local.get $11) - ) - (if (result i32) - (local.get $4) - (block (result i32) - (local.set $5 - (i32.const 0) - ) - (local.set $6 - (i32.load - (local.get $13) - ) - ) - (loop $while-in127 (result i32) - (drop - (br_if $__rjti$7 - (local.get $4) - (i32.eqz - (local.tee $7 - (i32.load - (local.get $6) - ) - ) - ) - ) - ) - (drop - (br_if $__rjti$7 - (local.get $4) - (i32.gt_s - (local.tee $5 - (i32.add - (local.tee $7 - (call $_wctomb - (local.get $35) - (local.get $7) - ) - ) - (local.get $5) - ) - ) - (local.get $4) - ) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $35) - (local.get $7) - (local.get $0) - ) - ) - (local.set $6 - (i32.add - (local.get $6) - (i32.const 4) - ) - ) - (br_if $while-in127 - (i32.lt_u - (local.get $5) - (local.get $4) - ) - ) - (local.get $4) - ) - ) - (i32.const 0) - ) - ) - ) - (i32.xor - (local.get $11) - (i32.const 8192) - ) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (select - (local.get $15) - (local.get $5) - (i32.gt_s - (local.get $15) - (local.get $5) - ) - ) - ) - (br $label$continue$L1) - ) - (local.set $11 - (select - (i32.and - (local.get $4) - (i32.const -65537) - ) - (local.get $4) - (i32.gt_s - (local.get $5) - (i32.const -1) - ) - ) - ) - (if (result i32) - (i32.or - (local.get $5) - (local.tee $8 - (i32.or - (i32.ne - (i32.load - (local.get $13) - ) - (i32.const 0) - ) - (i32.ne - (i32.load offset=4 - (local.get $13) - ) - (i32.const 0) - ) - ) - ) - ) - (block (result i32) - (local.set $8 - (select - (local.get $5) - (local.tee $6 - (i32.add - (i32.sub - (local.get $39) - (local.tee $4 - (local.get $6) - ) - ) - (i32.xor - (local.get $8) - (i32.const 1) - ) - ) - ) - (i32.gt_s - (local.get $5) - (local.get $6) - ) - ) - ) - (local.get $24) - ) - (block (result i32) - (local.set $8 - (i32.const 0) - ) - (local.tee $4 - (local.get $24) - ) - ) - ) - ) - (local.get $4) - ) - ) - (local.get $8) - (i32.lt_s - (local.get $8) - (local.get $12) - ) - ) - ) - (local.get $7) - ) - ) - (local.get $15) - (i32.lt_s - (local.get $15) - (local.get $6) - ) - ) - ) - (local.get $6) - (local.get $11) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $10) - (local.get $7) - (local.get $0) - ) - ) - (call $_pad - (local.get $0) - (i32.const 48) - (local.get $5) - (local.get $6) - (i32.xor - (local.get $11) - (i32.const 65536) - ) - ) - (call $_pad - (local.get $0) - (i32.const 48) - (local.get $8) - (local.get $12) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $4) - (local.get $12) - (local.get $0) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $5) - (local.get $6) - (i32.xor - (local.get $11) - (i32.const 8192) - ) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $5) - ) - (br $label$continue$L1) - ) - ) - (br $label$break$L343) - ) - (if - (i32.eqz - (local.get $0) - ) - (local.set $16 - (if (result i32) - (local.get $25) - (block (result i32) - (local.set $0 - (i32.const 1) - ) - (loop $while-in130 - (if - (local.tee $4 - (i32.load - (i32.add - (i32.shl - (local.get $0) - (i32.const 2) - ) - (local.get $3) - ) - ) - ) - (block - (call $_pop_arg_336 - (i32.add - (i32.shl - (local.get $0) - (i32.const 3) - ) - (local.get $2) - ) - (local.get $4) - (local.get $1) - ) - (br_if $while-in130 - (i32.lt_s - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (i32.const 10) - ) - ) - (local.set $16 - (i32.const 1) - ) - (br $label$break$L343) - ) - ) - ) - (if (result i32) - (i32.lt_s - (local.get $0) - (i32.const 10) - ) - (loop $while-in132 (result i32) - (if - (i32.load - (i32.add - (i32.shl - (local.get $0) - (i32.const 2) - ) - (local.get $3) - ) - ) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L343) - ) - ) - (br_if $while-in132 - (i32.lt_s - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (i32.const 10) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (i32.const 0) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $29) - ) - (local.get $16) - ) - (func $_pop_arg_336 (; 50 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 i32) - (if - (i32.le_u - (local.get $1) - (i32.const 20) - ) - (block $label$break$L1 - (block $switch-case9 - (block $switch-case8 - (block $switch-case7 - (block $switch-case6 - (block $switch-case5 - (block $switch-case4 - (block $switch-case3 - (block $switch-case2 - (block $switch-case1 - (block $switch-case - (br_table $switch-case $switch-case1 $switch-case2 $switch-case3 $switch-case4 $switch-case5 $switch-case6 $switch-case7 $switch-case8 $switch-case9 $label$break$L1 - (i32.sub - (local.get $1) - (i32.const 9) - ) - ) - ) - (local.set $3 - (i32.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.store - (local.get $0) - (local.get $3) - ) - (br $label$break$L1) - ) - (local.set $1 - (i32.load - (local.tee $3 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $3) - (i32.const 4) - ) - ) - (i32.store - (local.get $0) - (local.get $1) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 4) - ) - (i32.shr_s - (i32.shl - (i32.lt_s - (local.get $1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (br $label$break$L1) - ) - (local.set $3 - (i32.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.store - (local.get $0) - (local.get $3) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 4) - ) - (i32.const 0) - ) - (br $label$break$L1) - ) - (local.set $5 - (i32.load - (local.tee $3 - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 7) - ) - (i32.const -8) - ) - ) - ) - ) - ) - (local.set $3 - (i32.load - (i32.add - (local.get $3) - (i32.const 4) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (i32.store - (local.get $0) - (local.get $5) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 4) - ) - (local.get $3) - ) - (br $label$break$L1) - ) - (local.set $3 - (i32.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.store - (local.get $0) - (local.tee $1 - (i32.shr_s - (i32.shl - (i32.and - (local.get $3) - (i32.const 65535) - ) - (i32.const 16) - ) - (i32.const 16) - ) - ) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 4) - ) - (i32.shr_s - (i32.shl - (i32.lt_s - (local.get $1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (br $label$break$L1) - ) - (local.set $3 - (i32.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.store - (local.get $0) - (i32.and - (local.get $3) - (i32.const 65535) - ) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 4) - ) - (i32.const 0) - ) - (br $label$break$L1) - ) - (local.set $3 - (i32.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.store - (local.get $0) - (local.tee $1 - (i32.shr_s - (i32.shl - (i32.and - (local.get $3) - (i32.const 255) - ) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 4) - ) - (i32.shr_s - (i32.shl - (i32.lt_s - (local.get $1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (br $label$break$L1) - ) - (local.set $3 - (i32.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.store - (local.get $0) - (i32.and - (local.get $3) - (i32.const 255) - ) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 4) - ) - (i32.const 0) - ) - (br $label$break$L1) - ) - (local.set $4 - (f64.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 7) - ) - (i32.const -8) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (f64.store - (local.get $0) - (local.get $4) - ) - (br $label$break$L1) - ) - (local.set $4 - (f64.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 7) - ) - (i32.const -8) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (f64.store - (local.get $0) - (local.get $4) - ) - ) - ) - ) - (func $_fmt_u (; 51 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (if - (i32.or - (i32.and - (i32.eqz - (local.get $1) - ) - (i32.gt_u - (local.get $0) - (i32.const -1) - ) - ) - (i32.gt_u - (local.get $1) - (i32.const 0) - ) - ) - (local.set $0 - (loop $while-in (result i32) - (i32.store8 - (local.tee $2 - (i32.add - (local.get $2) - (i32.const -1) - ) - ) - (i32.or - (call $___uremdi3 - (local.get $0) - (local.get $1) - (i32.const 10) - ) - (i32.const 48) - ) - ) - (local.set $3 - (call $___udivdi3 - (local.get $0) - (local.get $1) - (i32.const 10) - ) - ) - (local.set $4 - (global.get $tempRet0) - ) - (if (result i32) - (i32.or - (i32.and - (i32.eq - (local.get $1) - (i32.const 9) - ) - (i32.gt_u - (local.get $0) - (i32.const -1) - ) - ) - (i32.gt_u - (local.get $1) - (i32.const 9) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in) - ) - (local.get $3) - ) - ) - ) - ) - (if - (local.get $0) - (loop $while-in1 - (i32.store8 - (local.tee $2 - (i32.add - (local.get $2) - (i32.const -1) - ) - ) - (i32.or - (call $i32u-rem - (local.get $0) - (i32.const 10) - ) - (i32.const 48) - ) - ) - (local.set $1 - (call $i32u-div - (local.get $0) - (i32.const 10) - ) - ) - (if - (i32.ge_u - (local.get $0) - (i32.const 10) - ) - (block - (local.set $0 - (local.get $1) - ) - (br $while-in1) - ) - ) - ) - ) - (local.get $2) - ) - (func $_pad (; 52 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local.set $7 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 256) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $6 - (local.get $7) - ) - (if - (i32.and - (i32.eqz - (i32.and - (local.get $4) - (i32.const 73728) - ) - ) - (i32.gt_s - (local.get $2) - (local.get $3) - ) - ) - (block $do-once - (drop - (call $_memset - (local.get $6) - (local.get $1) - (select - (i32.const 256) - (local.tee $5 - (i32.sub - (local.get $2) - (local.get $3) - ) - ) - (i32.gt_u - (local.get $5) - (i32.const 256) - ) - ) - ) - ) - (local.set $4 - (i32.eqz - (i32.and - (local.tee $1 - (i32.load - (local.get $0) - ) - ) - (i32.const 32) - ) - ) - ) - (if - (i32.gt_u - (local.get $5) - (i32.const 255) - ) - (block - (loop $while-in - (if - (local.get $4) - (block - (call $___fwritex - (local.get $6) - (i32.const 256) - (local.get $0) - ) - (local.set $1 - (i32.load - (local.get $0) - ) - ) - ) - ) - (local.set $4 - (i32.eqz - (i32.and - (local.get $1) - (i32.const 32) - ) - ) - ) - (br_if $while-in - (i32.gt_u - (local.tee $5 - (i32.add - (local.get $5) - (i32.const -256) - ) - ) - (i32.const 255) - ) - ) - ) - (br_if $do-once - (i32.eqz - (local.get $4) - ) - ) - (local.set $5 - (i32.and - (i32.sub - (local.get $2) - (local.get $3) - ) - (i32.const 255) - ) - ) - ) - (br_if $do-once - (i32.eqz - (local.get $4) - ) - ) - ) - (call $___fwritex - (local.get $6) - (local.get $5) - (local.get $0) - ) - ) - ) - (global.set $STACKTOP - (local.get $7) - ) - ) - (func $_malloc (; 53 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local.set $0 - (if (result i32) - (i32.lt_u - (local.get $0) - (i32.const 245) - ) - (block (result i32) - (if - (i32.and - (local.tee $11 - (i32.shr_u - (local.tee $6 - (i32.load - (i32.const 176) - ) - ) - (local.tee $13 - (i32.shr_u - (local.tee $3 - (select - (i32.const 16) - (i32.and - (i32.add - (local.get $0) - (i32.const 11) - ) - (i32.const -8) - ) - (i32.lt_u - (local.get $0) - (i32.const 11) - ) - ) - ) - (i32.const 3) - ) - ) - ) - ) - (i32.const 3) - ) - (block - (if - (i32.eq - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.tee $2 - (i32.load offset=8 - (local.tee $3 - (i32.add - (i32.shl - (local.tee $0 - (i32.add - (i32.xor - (i32.and - (local.get $11) - (i32.const 1) - ) - (i32.const 1) - ) - (local.get $13) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (local.get $3) - ) - (i32.store - (i32.const 176) - (i32.and - (local.get $6) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $4) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $2) - (i32.load offset=12 - (local.get $4) - ) - ) - (block - (i32.store offset=12 - (local.get $4) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $4) - ) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.tee $0 - (i32.shl - (local.get $0) - (i32.const 3) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - (return - (local.get $1) - ) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $3) - (local.tee $0 - (i32.load - (i32.const 184) - ) - ) - ) - (block (result i32) - (if - (local.get $11) - (block - (if - (i32.eq - (local.tee $10 - (i32.load - (local.tee $4 - (i32.add - (local.tee $7 - (i32.load offset=8 - (local.tee $9 - (i32.add - (i32.shl - (local.tee $2 - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.tee $2 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.add - (i32.and - (local.tee $2 - (i32.and - (i32.or - (local.tee $2 - (i32.shl - (i32.const 2) - (local.get $13) - ) - ) - (i32.sub - (i32.const 0) - (local.get $2) - ) - ) - (i32.shl - (local.get $11) - (local.get $13) - ) - ) - ) - (i32.sub - (i32.const 0) - (local.get $2) - ) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.tee $2 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $2) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - ) - (local.tee $2 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $2) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - ) - (local.tee $2 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $2) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.tee $2 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $2) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (i32.shr_u - (local.get $4) - (local.get $2) - ) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (local.get $9) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (local.get $6) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $2) - ) - (i32.const -1) - ) - ) - ) - (local.set $8 - (local.get $0) - ) - ) - (block - (if - (i32.lt_u - (local.get $10) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=12 - (local.get $10) - ) - (local.get $7) - ) - (block - (i32.store offset=12 - (local.get $10) - (local.get $9) - ) - (i32.store offset=8 - (local.get $9) - (local.get $10) - ) - (local.set $8 - (i32.load - (i32.const 184) - ) - ) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=4 - (local.get $7) - (i32.or - (local.get $3) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $7 - (i32.add - (local.get $3) - (local.get $7) - ) - ) - (i32.or - (local.tee $9 - (i32.sub - (i32.shl - (local.get $2) - (i32.const 3) - ) - (local.get $3) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $7) - (local.get $9) - ) - (local.get $9) - ) - (if - (local.get $8) - (block - (local.set $6 - (i32.load - (i32.const 196) - ) - ) - (local.set $3 - (i32.add - (i32.shl - (local.tee $0 - (i32.shr_u - (local.get $8) - (i32.const 3) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $2 - (i32.load - (i32.const 176) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - (if - (i32.lt_u - (local.tee $0 - (i32.load - (local.tee $2 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $5 - (local.get $2) - ) - (local.set $1 - (local.get $0) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $0) - (local.get $2) - ) - ) - (local.set $5 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - (local.set $1 - (local.get $3) - ) - ) - ) - (i32.store - (local.get $5) - (local.get $6) - ) - (i32.store offset=12 - (local.get $1) - (local.get $6) - ) - (i32.store offset=8 - (local.get $6) - (local.get $1) - ) - (i32.store offset=12 - (local.get $6) - (local.get $3) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $9) - ) - (i32.store - (i32.const 196) - (local.get $7) - ) - (return - (local.get $4) - ) - ) - ) - (if (result i32) - (local.tee $0 - (i32.load - (i32.const 180) - ) - ) - (block - (local.set $9 - (i32.sub - (i32.and - (i32.load offset=4 - (local.tee $0 - (i32.load offset=480 - (i32.shl - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.tee $0 - (i32.and - (i32.shr_u - (local.tee $1 - (i32.add - (i32.and - (local.get $0) - (i32.sub - (i32.const 0) - (local.get $0) - ) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.tee $0 - (i32.and - (i32.shr_u - (local.tee $1 - (i32.shr_u - (local.get $1) - (local.get $0) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - ) - (local.tee $0 - (i32.and - (i32.shr_u - (local.tee $1 - (i32.shr_u - (local.get $1) - (local.get $0) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - ) - (local.tee $0 - (i32.and - (i32.shr_u - (local.tee $1 - (i32.shr_u - (local.get $1) - (local.get $0) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.tee $0 - (i32.and - (i32.shr_u - (local.tee $1 - (i32.shr_u - (local.get $1) - (local.get $0) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (i32.shr_u - (local.get $1) - (local.get $0) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const -8) - ) - (local.get $3) - ) - ) - (local.set $7 - (local.get $0) - ) - (loop $while-in - (block $while-out - (if - (local.tee $1 - (i32.load offset=16 - (local.get $0) - ) - ) - (local.set $0 - (local.get $1) - ) - (if - (i32.eqz - (local.tee $0 - (i32.load offset=20 - (local.get $0) - ) - ) - ) - (block - (local.set $6 - (local.get $9) - ) - (local.set $10 - (local.get $7) - ) - (br $while-out) - ) - ) - ) - (local.set $6 - (i32.lt_u - (local.tee $1 - (i32.sub - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - (local.get $3) - ) - ) - (local.get $9) - ) - ) - (local.set $9 - (select - (local.get $1) - (local.get $9) - (local.get $6) - ) - ) - (local.set $7 - (select - (local.get $0) - (local.get $7) - (local.get $6) - ) - ) - (br $while-in) - ) - ) - (if - (i32.lt_u - (local.get $10) - (local.tee $11 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (if - (i32.ge_u - (local.get $10) - (local.tee $5 - (i32.add - (local.get $3) - (local.get $10) - ) - ) - ) - (call $_abort) - ) - (local.set $8 - (i32.load offset=24 - (local.get $10) - ) - ) - (if - (i32.eq - (local.tee $0 - (i32.load offset=12 - (local.get $10) - ) - ) - (local.get $10) - ) - (block $do-once4 - (if - (i32.eqz - (local.tee $1 - (i32.load - (local.tee $0 - (i32.add - (local.get $10) - (i32.const 20) - ) - ) - ) - ) - ) - (br_if $do-once4 - (i32.eqz - (local.tee $1 - (i32.load - (local.tee $0 - (i32.add - (local.get $10) - (i32.const 16) - ) - ) - ) - ) - ) - ) - ) - (loop $while-in7 - (if - (local.tee $7 - (i32.load - (local.tee $9 - (i32.add - (local.get $1) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $1 - (local.get $7) - ) - (local.set $0 - (local.get $9) - ) - (br $while-in7) - ) - ) - (if - (local.tee $7 - (i32.load - (local.tee $9 - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $1 - (local.get $7) - ) - (local.set $0 - (local.get $9) - ) - (br $while-in7) - ) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $11) - ) - (call $_abort) - (block - (i32.store - (local.get $0) - (i32.const 0) - ) - (local.set $4 - (local.get $1) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $10) - ) - ) - (local.get $11) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $10) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=8 - (local.get $0) - ) - (local.get $10) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $4 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $8) - (block $do-once8 - (if - (i32.eq - (i32.load offset=480 - (local.tee $0 - (i32.shl - (local.tee $1 - (i32.load offset=28 - (local.get $10) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $10) - ) - (block - (i32.store offset=480 - (local.get $0) - (local.get $4) - ) - (if - (i32.eqz - (local.get $4) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $1) - ) - (i32.const -1) - ) - ) - ) - (br $do-once8) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $8) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=16 - (local.get $8) - ) - (local.get $10) - ) - (i32.store offset=16 - (local.get $8) - (local.get $4) - ) - (i32.store offset=20 - (local.get $8) - (local.get $4) - ) - ) - (br_if $do-once8 - (i32.eqz - (local.get $4) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $4) - (local.tee $0 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $4) - (local.get $8) - ) - (if - (local.tee $1 - (i32.load offset=16 - (local.get $10) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $0) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $4) - (local.get $1) - ) - (i32.store offset=24 - (local.get $1) - (local.get $4) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $10) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $4) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $4) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $6) - (i32.const 16) - ) - (block - (i32.store offset=4 - (local.get $10) - (i32.or - (local.tee $0 - (i32.add - (local.get $3) - (local.get $6) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $10) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - ) - (block - (i32.store offset=4 - (local.get $10) - (i32.or - (local.get $3) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.get $5) - (i32.or - (local.get $6) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $5) - (local.get $6) - ) - (local.get $6) - ) - (if - (local.tee $0 - (i32.load - (i32.const 184) - ) - ) - (block - (local.set $4 - (i32.load - (i32.const 196) - ) - ) - (local.set $3 - (i32.add - (i32.shl - (local.tee $0 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $1 - (i32.load - (i32.const 176) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - (if - (i32.lt_u - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $12 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - (local.set $12 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - (local.set $2 - (local.get $3) - ) - ) - ) - (i32.store - (local.get $12) - (local.get $4) - ) - (i32.store offset=12 - (local.get $2) - (local.get $4) - ) - (i32.store offset=8 - (local.get $4) - (local.get $2) - ) - (i32.store offset=12 - (local.get $4) - (local.get $3) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $6) - ) - (i32.store - (i32.const 196) - (local.get $5) - ) - ) - ) - (return - (i32.add - (local.get $10) - (i32.const 8) - ) - ) - ) - (local.get $3) - ) - ) - (local.get $3) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $0) - (i32.const -65) - ) - (i32.const -1) - (block $do-once (result i32) - (local.set $3 - (i32.and - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 11) - ) - ) - (i32.const -8) - ) - ) - (if (result i32) - (local.tee $18 - (i32.load - (i32.const 180) - ) - ) - (block (result i32) - (local.set $14 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $0) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $3) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $4 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $2 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.get $4) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $3) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $1) - (local.get $4) - ) - (local.get $2) - ) - ) - (i32.shr_u - (i32.shl - (local.get $0) - (local.get $2) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (local.set $2 - (i32.sub - (i32.const 0) - (local.get $3) - ) - ) - (block $__rjto$3 - (block $__rjti$3 - (local.set $0 - (if (result i32) - (local.tee $0 - (i32.load offset=480 - (i32.shl - (local.get $14) - (i32.const 2) - ) - ) - ) - (block (result i32) - (local.set $8 - (i32.shl - (local.get $3) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $14) - (i32.const 1) - ) - ) - (i32.eq - (local.get $14) - (i32.const 31) - ) - ) - ) - ) - (local.set $1 - (i32.const 0) - ) - (loop $while-in14 (result i32) - (if - (i32.lt_u - (local.tee $4 - (i32.sub - (local.tee $12 - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (local.get $3) - ) - ) - (local.get $2) - ) - (local.set $1 - (if (result i32) - (i32.eq - (local.get $3) - (local.get $12) - ) - (block - (local.set $1 - (local.get $4) - ) - (local.set $2 - (local.get $0) - ) - (br $__rjti$3) - ) - (block (result i32) - (local.set $2 - (local.get $4) - ) - (local.get $0) - ) - ) - ) - ) - (local.set $0 - (select - (local.get $5) - (local.tee $4 - (i32.load offset=20 - (local.get $0) - ) - ) - (i32.or - (i32.eqz - (local.get $4) - ) - (i32.eq - (local.get $4) - (local.tee $12 - (i32.load - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $8) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - ) - ) - ) - (local.set $4 - (i32.shl - (local.get $8) - (i32.xor - (local.tee $5 - (i32.eqz - (local.get $12) - ) - ) - (i32.const 1) - ) - ) - ) - (if (result i32) - (local.get $5) - (block (result i32) - (local.set $4 - (local.get $0) - ) - (local.get $1) - ) - (block - (local.set $5 - (local.get $0) - ) - (local.set $8 - (local.get $4) - ) - (local.set $0 - (local.get $12) - ) - (br $while-in14) - ) - ) - ) - ) - (block (result i32) - (local.set $4 - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - (if - (i32.eqz - (i32.or - (local.get $0) - (local.get $4) - ) - ) - (block - (drop - (br_if $do-once - (local.get $3) - (i32.eqz - (local.tee $1 - (i32.and - (local.get $18) - (i32.or - (local.tee $1 - (i32.shl - (i32.const 2) - (local.get $14) - ) - ) - (i32.sub - (i32.const 0) - (local.get $1) - ) - ) - ) - ) - ) - ) - ) - (local.set $4 - (i32.load offset=480 - (i32.shl - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.tee $1 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.add - (i32.and - (local.get $1) - (i32.sub - (i32.const 0) - (local.get $1) - ) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.tee $1 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $1) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - ) - (local.tee $1 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $1) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - ) - (local.tee $1 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $1) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.tee $1 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $1) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (i32.shr_u - (local.get $4) - (local.get $1) - ) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (local.set $4 - (if (result i32) - (local.get $4) - (block - (local.set $1 - (local.get $2) - ) - (local.set $2 - (local.get $4) - ) - (br $__rjti$3) - ) - (local.get $0) - ) - ) - (br $__rjto$3) - ) - (local.set $2 - (loop $while-in16 (result i32) - (local.set $12 - (i32.lt_u - (local.tee $4 - (i32.sub - (i32.and - (i32.load offset=4 - (local.get $2) - ) - (i32.const -8) - ) - (local.get $3) - ) - ) - (local.get $1) - ) - ) - (local.set $1 - (select - (local.get $4) - (local.get $1) - (local.get $12) - ) - ) - (local.set $0 - (select - (local.get $2) - (local.get $0) - (local.get $12) - ) - ) - (if - (local.tee $4 - (i32.load offset=16 - (local.get $2) - ) - ) - (block - (local.set $2 - (local.get $4) - ) - (br $while-in16) - ) - ) - (br_if $while-in16 - (local.tee $2 - (i32.load offset=20 - (local.get $2) - ) - ) - ) - (local.set $4 - (local.get $0) - ) - (local.get $1) - ) - ) - ) - (if (result i32) - (local.get $4) - (if (result i32) - (i32.lt_u - (local.get $2) - (i32.sub - (i32.load - (i32.const 184) - ) - (local.get $3) - ) - ) - (block - (if - (i32.lt_u - (local.get $4) - (local.tee $10 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (if - (i32.ge_u - (local.get $4) - (local.tee $5 - (i32.add - (local.get $3) - (local.get $4) - ) - ) - ) - (call $_abort) - ) - (local.set $12 - (i32.load offset=24 - (local.get $4) - ) - ) - (if - (i32.eq - (local.tee $0 - (i32.load offset=12 - (local.get $4) - ) - ) - (local.get $4) - ) - (block $do-once17 - (if - (i32.eqz - (local.tee $1 - (i32.load - (local.tee $0 - (i32.add - (local.get $4) - (i32.const 20) - ) - ) - ) - ) - ) - (br_if $do-once17 - (i32.eqz - (local.tee $1 - (i32.load - (local.tee $0 - (i32.add - (local.get $4) - (i32.const 16) - ) - ) - ) - ) - ) - ) - ) - (loop $while-in20 - (if - (local.tee $7 - (i32.load - (local.tee $9 - (i32.add - (local.get $1) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $1 - (local.get $7) - ) - (local.set $0 - (local.get $9) - ) - (br $while-in20) - ) - ) - (if - (local.tee $7 - (i32.load - (local.tee $9 - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $1 - (local.get $7) - ) - (local.set $0 - (local.get $9) - ) - (br $while-in20) - ) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $10) - ) - (call $_abort) - (block - (i32.store - (local.get $0) - (i32.const 0) - ) - (local.set $11 - (local.get $1) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $4) - ) - ) - (local.get $10) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $4) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=8 - (local.get $0) - ) - (local.get $4) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $11 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $12) - (block $do-once21 - (if - (i32.eq - (i32.load offset=480 - (local.tee $0 - (i32.shl - (local.tee $1 - (i32.load offset=28 - (local.get $4) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $4) - ) - (block - (i32.store offset=480 - (local.get $0) - (local.get $11) - ) - (if - (i32.eqz - (local.get $11) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $1) - ) - (i32.const -1) - ) - ) - ) - (br $do-once21) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $12) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=16 - (local.get $12) - ) - (local.get $4) - ) - (i32.store offset=16 - (local.get $12) - (local.get $11) - ) - (i32.store offset=20 - (local.get $12) - (local.get $11) - ) - ) - (br_if $do-once21 - (i32.eqz - (local.get $11) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $11) - (local.tee $0 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $11) - (local.get $12) - ) - (if - (local.tee $1 - (i32.load offset=16 - (local.get $4) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $0) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $11) - (local.get $1) - ) - (i32.store offset=24 - (local.get $1) - (local.get $11) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $4) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $11) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $11) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $2) - (i32.const 16) - ) - (block - (i32.store offset=4 - (local.get $4) - (i32.or - (local.tee $0 - (i32.add - (local.get $2) - (local.get $3) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $4) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - ) - (block $do-once25 - (i32.store offset=4 - (local.get $4) - (i32.or - (local.get $3) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.get $5) - (i32.or - (local.get $2) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $2) - (local.get $5) - ) - (local.get $2) - ) - (local.set $0 - (i32.shr_u - (local.get $2) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $2) - (i32.const 256) - ) - (block - (local.set $2 - (i32.add - (i32.shl - (local.get $0) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $1 - (i32.load - (i32.const 176) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - (if - (i32.lt_u - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $13 - (local.get $1) - ) - (local.set $6 - (local.get $0) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - (local.set $13 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - (local.set $6 - (local.get $2) - ) - ) - ) - (i32.store - (local.get $13) - (local.get $5) - ) - (i32.store offset=12 - (local.get $6) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $6) - ) - (i32.store offset=12 - (local.get $5) - (local.get $2) - ) - (br $do-once25) - ) - ) - (local.set $3 - (i32.add - (local.tee $9 - (i32.shl - (local.tee $7 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $2) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $2) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $7 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $3 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.get $7) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $2) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $1) - (local.get $7) - ) - (local.get $3) - ) - ) - (i32.shr_u - (i32.shl - (local.get $0) - (local.get $3) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $5) - (local.get $7) - ) - (i32.store offset=20 - (local.get $5) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $5) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $1 - (i32.load - (i32.const 180) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $7) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - (i32.store offset=480 - (local.get $9) - (local.get $5) - ) - (i32.store offset=24 - (local.get $5) - (local.get $3) - ) - (i32.store offset=12 - (local.get $5) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $5) - ) - (br $do-once25) - ) - ) - (local.set $7 - (i32.shl - (local.get $2) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $7) - (i32.const 1) - ) - ) - (i32.eq - (local.get $7) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load offset=480 - (local.get $9) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (loop $while-in28 - (br_if $__rjti$1 - (i32.eq - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - (local.get $2) - ) - ) - (local.set $3 - (i32.shl - (local.get $7) - (i32.const 1) - ) - ) - (if - (local.tee $1 - (i32.load - (local.tee $7 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $7) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $7 - (local.get $3) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in28) - ) - ) - ) - (if - (i32.lt_u - (local.get $7) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $7) - (local.get $5) - ) - (i32.store offset=24 - (local.get $5) - (local.get $0) - ) - (i32.store offset=12 - (local.get $5) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $5) - ) - (br $do-once25) - ) - ) - (br $__rjto$1) - ) - (if - (i32.and - (i32.ge_u - (local.tee $2 - (i32.load offset=8 - (local.get $0) - ) - ) - (local.tee $1 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $1) - ) - ) - (block - (i32.store offset=12 - (local.get $2) - (local.get $5) - ) - (i32.store offset=8 - (local.get $0) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $2) - ) - (i32.store offset=12 - (local.get $5) - (local.get $0) - ) - (i32.store offset=24 - (local.get $5) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (return - (i32.add - (local.get $4) - (i32.const 8) - ) - ) - ) - (local.get $3) - ) - (local.get $3) - ) - ) - (local.get $3) - ) - ) - ) - ) - ) - (if - (i32.ge_u - (local.tee $1 - (i32.load - (i32.const 184) - ) - ) - (local.get $0) - ) - (block - (local.set $3 - (i32.load - (i32.const 196) - ) - ) - (if - (i32.gt_u - (local.tee $2 - (i32.sub - (local.get $1) - (local.get $0) - ) - ) - (i32.const 15) - ) - (block - (i32.store - (i32.const 196) - (local.tee $1 - (i32.add - (local.get $0) - (local.get $3) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $2) - ) - (i32.store offset=4 - (local.get $1) - (i32.or - (local.get $2) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $1) - (local.get $2) - ) - (local.get $2) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $0) - (i32.const 3) - ) - ) - ) - (block - (i32.store - (i32.const 184) - (i32.const 0) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $1) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $1) - (local.get $3) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - ) - ) - (return - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - ) - (block $folding-inner0 - (br_if $folding-inner0 - (i32.gt_u - (local.tee $1 - (i32.load - (i32.const 188) - ) - ) - (local.get $0) - ) - ) - (if - (i32.eqz - (i32.load - (i32.const 648) - ) - ) - (if - (i32.and - (local.tee $1 - (call $_sysconf - (i32.const 30) - ) - ) - (i32.add - (local.get $1) - (i32.const -1) - ) - ) - (call $_abort) - (block - (i32.store - (i32.const 656) - (local.get $1) - ) - (i32.store - (i32.const 652) - (local.get $1) - ) - (i32.store - (i32.const 660) - (i32.const -1) - ) - (i32.store - (i32.const 664) - (i32.const -1) - ) - (i32.store - (i32.const 668) - (i32.const 0) - ) - (i32.store - (i32.const 620) - (i32.const 0) - ) - (i32.store - (i32.const 648) - (i32.xor - (i32.and - (call $_time - (i32.const 0) - ) - (i32.const -16) - ) - (i32.const 1431655768) - ) - ) - ) - ) - ) - (if - (i32.le_u - (local.tee $6 - (i32.and - (local.tee $5 - (i32.add - (local.tee $1 - (i32.load - (i32.const 656) - ) - ) - (local.tee $8 - (i32.add - (local.get $0) - (i32.const 47) - ) - ) - ) - ) - (local.tee $12 - (i32.sub - (i32.const 0) - (local.get $1) - ) - ) - ) - ) - (local.get $0) - ) - (return - (i32.const 0) - ) - ) - (if - (local.tee $3 - (i32.load - (i32.const 616) - ) - ) - (if - (i32.or - (i32.le_u - (local.tee $1 - (i32.add - (local.tee $2 - (i32.load - (i32.const 608) - ) - ) - (local.get $6) - ) - ) - (local.get $2) - ) - (i32.gt_u - (local.get $1) - (local.get $3) - ) - ) - (return - (i32.const 0) - ) - ) - ) - (local.set $11 - (i32.add - (local.get $0) - (i32.const 48) - ) - ) - (block $__rjto$13 - (block $__rjti$13 - (if - (i32.eqz - (i32.and - (i32.load - (i32.const 620) - ) - (i32.const 4) - ) - ) - (block - (block $label$break$L279 - (block $__rjti$5 - (block $__rjti$4 - (br_if $__rjti$4 - (i32.eqz - (local.tee $4 - (i32.load - (i32.const 200) - ) - ) - ) - ) - (local.set $1 - (i32.const 624) - ) - (loop $while-in34 - (block $while-out33 - (if - (i32.le_u - (local.tee $2 - (i32.load - (local.get $1) - ) - ) - (local.get $4) - ) - (if - (i32.gt_u - (i32.add - (local.get $2) - (i32.load - (local.tee $3 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - ) - ) - (local.get $4) - ) - (block - (local.set $4 - (local.get $1) - ) - (br $while-out33) - ) - ) - ) - (br_if $while-in34 - (local.tee $1 - (i32.load offset=8 - (local.get $1) - ) - ) - ) - (br $__rjti$4) - ) - ) - (if - (i32.lt_u - (local.tee $2 - (i32.and - (i32.sub - (local.get $5) - (i32.load - (i32.const 188) - ) - ) - (local.get $12) - ) - ) - (i32.const 2147483647) - ) - (block - (local.set $1 - (call $_sbrk - (local.get $2) - ) - ) - (if - (i32.eq - (i32.add - (i32.load - (local.get $4) - ) - (i32.load - (local.get $3) - ) - ) - (local.get $1) - ) - (br_if $__rjti$13 - (i32.ne - (local.get $1) - (i32.const -1) - ) - ) - (block - (local.set $3 - (local.get $1) - ) - (br $__rjti$5) - ) - ) - ) - ) - (br $label$break$L279) - ) - (if - (i32.ne - (local.tee $1 - (call $_sbrk - (i32.const 0) - ) - ) - (i32.const -1) - ) - (block - (local.set $2 - (if (result i32) - (i32.and - (local.tee $2 - (local.get $1) - ) - (local.tee $3 - (i32.add - (local.tee $4 - (i32.load - (i32.const 652) - ) - ) - (i32.const -1) - ) - ) - ) - (i32.add - (i32.sub - (local.get $6) - (local.get $2) - ) - (i32.and - (i32.add - (local.get $2) - (local.get $3) - ) - (i32.sub - (i32.const 0) - (local.get $4) - ) - ) - ) - (local.get $6) - ) - ) - (local.set $12 - (i32.add - (local.tee $4 - (i32.load - (i32.const 608) - ) - ) - (local.get $2) - ) - ) - (if - (i32.and - (i32.lt_u - (local.get $2) - (i32.const 2147483647) - ) - (i32.gt_u - (local.get $2) - (local.get $0) - ) - ) - (block - (br_if $label$break$L279 - (select - (local.tee $3 - (i32.load - (i32.const 616) - ) - ) - (i32.const 0) - (i32.or - (i32.le_u - (local.get $12) - (local.get $4) - ) - (i32.gt_u - (local.get $12) - (local.get $3) - ) - ) - ) - ) - (br_if $__rjti$13 - (i32.eq - (local.get $1) - (local.tee $3 - (call $_sbrk - (local.get $2) - ) - ) - ) - ) - (br $__rjti$5) - ) - ) - ) - ) - (br $label$break$L279) - ) - (local.set $1 - (local.get $2) - ) - (local.set $4 - (i32.sub - (i32.const 0) - (local.get $1) - ) - ) - (local.set $2 - (if (result i32) - (i32.and - (i32.and - (i32.ne - (local.get $3) - (i32.const -1) - ) - (i32.lt_u - (local.get $1) - (i32.const 2147483647) - ) - ) - (i32.gt_u - (local.get $11) - (local.get $1) - ) - ) - (if (result i32) - (i32.lt_u - (local.tee $2 - (i32.and - (i32.add - (local.tee $2 - (i32.load - (i32.const 656) - ) - ) - (i32.sub - (local.get $8) - (local.get $1) - ) - ) - (i32.sub - (i32.const 0) - (local.get $2) - ) - ) - ) - (i32.const 2147483647) - ) - (if (result i32) - (i32.eq - (call $_sbrk - (local.get $2) - ) - (i32.const -1) - ) - (block - (drop - (call $_sbrk - (local.get $4) - ) - ) - (br $label$break$L279) - ) - (i32.add - (local.get $1) - (local.get $2) - ) - ) - (local.get $1) - ) - (local.get $1) - ) - ) - (if - (i32.ne - (local.get $3) - (i32.const -1) - ) - (block - (local.set $1 - (local.get $3) - ) - (br $__rjti$13) - ) - ) - ) - (i32.store - (i32.const 620) - (i32.or - (i32.load - (i32.const 620) - ) - (i32.const 4) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $6) - (i32.const 2147483647) - ) - (if - (i32.and - (i32.lt_u - (local.tee $1 - (call $_sbrk - (local.get $6) - ) - ) - (local.tee $2 - (call $_sbrk - (i32.const 0) - ) - ) - ) - (i32.and - (i32.ne - (local.get $1) - (i32.const -1) - ) - (i32.ne - (local.get $2) - (i32.const -1) - ) - ) - ) - (br_if $__rjti$13 - (i32.gt_u - (local.tee $2 - (i32.sub - (local.get $2) - (local.get $1) - ) - ) - (i32.add - (local.get $0) - (i32.const 40) - ) - ) - ) - ) - ) - (br $__rjto$13) - ) - (i32.store - (i32.const 608) - (local.tee $3 - (i32.add - (i32.load - (i32.const 608) - ) - (local.get $2) - ) - ) - ) - (if - (i32.gt_u - (local.get $3) - (i32.load - (i32.const 612) - ) - ) - (i32.store - (i32.const 612) - (local.get $3) - ) - ) - (if - (local.tee $5 - (i32.load - (i32.const 200) - ) - ) - (block $do-once40 - (local.set $3 - (i32.const 624) - ) - (block $__rjto$10 - (block $__rjti$10 - (loop $while-in45 - (br_if $__rjti$10 - (i32.eq - (i32.add - (local.tee $11 - (i32.load - (local.get $3) - ) - ) - (local.tee $6 - (i32.load - (local.tee $4 - (i32.add - (local.get $3) - (i32.const 4) - ) - ) - ) - ) - ) - (local.get $1) - ) - ) - (br_if $while-in45 - (local.tee $3 - (i32.load offset=8 - (local.get $3) - ) - ) - ) - ) - (br $__rjto$10) - ) - (if - (i32.eqz - (i32.and - (i32.load offset=12 - (local.get $3) - ) - (i32.const 8) - ) - ) - (if - (i32.and - (i32.lt_u - (local.get $5) - (local.get $1) - ) - (i32.ge_u - (local.get $5) - (local.get $11) - ) - ) - (block - (i32.store - (local.get $4) - (i32.add - (local.get $2) - (local.get $6) - ) - ) - (local.set $3 - (i32.add - (local.get $5) - (local.tee $1 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.get $5) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - ) - ) - ) - (local.set $1 - (i32.add - (i32.load - (i32.const 188) - ) - (i32.sub - (local.get $2) - (local.get $1) - ) - ) - ) - (i32.store - (i32.const 200) - (local.get $3) - ) - (i32.store - (i32.const 188) - (local.get $1) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $1) - (local.get $3) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - (br $do-once40) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.tee $4 - (i32.load - (i32.const 192) - ) - ) - ) - (block - (i32.store - (i32.const 192) - (local.get $1) - ) - (local.set $4 - (local.get $1) - ) - ) - ) - (local.set $11 - (i32.add - (local.get $1) - (local.get $2) - ) - ) - (local.set $3 - (i32.const 624) - ) - (local.set $4 - (block $__rjto$11 (result i32) - (block $__rjti$11 - (br $__rjto$11 - (loop $while-in47 (result i32) - (if - (i32.eq - (i32.load - (local.get $3) - ) - (local.get $11) - ) - (block - (local.set $6 - (local.get $3) - ) - (br $__rjti$11) - ) - ) - (br_if $while-in47 - (local.tee $3 - (i32.load offset=8 - (local.get $3) - ) - ) - ) - (i32.const 624) - ) - ) - ) - (if (result i32) - (i32.and - (i32.load offset=12 - (local.get $3) - ) - (i32.const 8) - ) - (i32.const 624) - (block - (i32.store - (local.get $6) - (local.get $1) - ) - (i32.store offset=4 - (local.get $3) - (i32.add - (i32.load offset=4 - (local.get $3) - ) - (local.get $2) - ) - ) - (local.set $8 - (i32.add - (local.tee $12 - (i32.add - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $2 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $2) - (i32.const 7) - ) - ) - (local.get $1) - ) - ) - (local.get $0) - ) - ) - (local.set $7 - (i32.sub - (i32.sub - (local.tee $6 - (i32.add - (local.get $11) - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.get $11) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - ) - ) - (local.get $12) - ) - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $12) - (i32.or - (local.get $0) - (i32.const 3) - ) - ) - (if - (i32.eq - (local.get $5) - (local.get $6) - ) - (block - (i32.store - (i32.const 188) - (local.tee $0 - (i32.add - (i32.load - (i32.const 188) - ) - (local.get $7) - ) - ) - ) - (i32.store - (i32.const 200) - (local.get $8) - ) - (i32.store offset=4 - (local.get $8) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - ) - (block $do-once48 - (if - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $6) - ) - (block - (i32.store - (i32.const 184) - (local.tee $0 - (i32.add - (i32.load - (i32.const 184) - ) - (local.get $7) - ) - ) - ) - (i32.store - (i32.const 196) - (local.get $8) - ) - (i32.store offset=4 - (local.get $8) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $8) - ) - (local.get $0) - ) - (br $do-once48) - ) - ) - (i32.store offset=4 - (local.tee $0 - (if (result i32) - (i32.eq - (i32.and - (local.tee $0 - (i32.load offset=4 - (local.get $6) - ) - ) - (i32.const 3) - ) - (i32.const 1) - ) - (block (result i32) - (local.set $11 - (i32.and - (local.get $0) - (i32.const -8) - ) - ) - (local.set $1 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (block $label$break$L331 - (if - (i32.lt_u - (local.get $0) - (i32.const 256) - ) - (block - (local.set $3 - (i32.load offset=12 - (local.get $6) - ) - ) - (if - (i32.ne - (local.tee $2 - (i32.load offset=8 - (local.get $6) - ) - ) - (local.tee $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - (block $do-once51 - (if - (i32.lt_u - (local.get $2) - (local.get $4) - ) - (call $_abort) - ) - (br_if $do-once51 - (i32.eq - (i32.load offset=12 - (local.get $2) - ) - (local.get $6) - ) - ) - (call $_abort) - ) - ) - (if - (i32.eq - (local.get $2) - (local.get $3) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $1) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$L331) - ) - ) - (if - (i32.eq - (local.get $0) - (local.get $3) - ) - (local.set $15 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - (block $do-once53 - (if - (i32.lt_u - (local.get $3) - (local.get $4) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (local.tee $0 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - (local.get $6) - ) - (block - (local.set $15 - (local.get $0) - ) - (br $do-once53) - ) - ) - (call $_abort) - ) - ) - (i32.store offset=12 - (local.get $2) - (local.get $3) - ) - (i32.store - (local.get $15) - (local.get $2) - ) - ) - (block - (local.set $5 - (i32.load offset=24 - (local.get $6) - ) - ) - (if - (i32.eq - (local.tee $0 - (i32.load offset=12 - (local.get $6) - ) - ) - (local.get $6) - ) - (block $do-once55 - (if - (i32.eqz - (local.tee $1 - (i32.load - (local.tee $0 - (i32.add - (local.tee $2 - (i32.add - (local.get $6) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - ) - (block - (br_if $do-once55 - (i32.eqz - (local.tee $1 - (i32.load - (local.get $2) - ) - ) - ) - ) - (local.set $0 - (local.get $2) - ) - ) - ) - (loop $while-in58 - (if - (local.tee $2 - (i32.load - (local.tee $3 - (i32.add - (local.get $1) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $1 - (local.get $2) - ) - (local.set $0 - (local.get $3) - ) - (br $while-in58) - ) - ) - (if - (local.tee $2 - (i32.load - (local.tee $3 - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $1 - (local.get $2) - ) - (local.set $0 - (local.get $3) - ) - (br $while-in58) - ) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $4) - ) - (call $_abort) - (block - (i32.store - (local.get $0) - (i32.const 0) - ) - (local.set $10 - (local.get $1) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $6) - ) - ) - (local.get $4) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $6) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=8 - (local.get $0) - ) - (local.get $6) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $10 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (br_if $label$break$L331 - (i32.eqz - (local.get $5) - ) - ) - (if - (i32.eq - (i32.load offset=480 - (local.tee $0 - (i32.shl - (local.tee $1 - (i32.load offset=28 - (local.get $6) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $6) - ) - (block $do-once59 - (i32.store offset=480 - (local.get $0) - (local.get $10) - ) - (br_if $do-once59 - (local.get $10) - ) - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $1) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$L331) - ) - (block - (if - (i32.lt_u - (local.get $5) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=16 - (local.get $5) - ) - (local.get $6) - ) - (i32.store offset=16 - (local.get $5) - (local.get $10) - ) - (i32.store offset=20 - (local.get $5) - (local.get $10) - ) - ) - (br_if $label$break$L331 - (i32.eqz - (local.get $10) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $10) - (local.tee $0 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $10) - (local.get $5) - ) - (if - (local.tee $1 - (i32.load offset=16 - (local.get $6) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $0) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $10) - (local.get $1) - ) - (i32.store offset=24 - (local.get $1) - (local.get $10) - ) - ) - ) - ) - (br_if $label$break$L331 - (i32.eqz - (local.tee $0 - (i32.load offset=20 - (local.get $6) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $10) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $10) - ) - ) - ) - ) - ) - ) - (local.set $7 - (i32.add - (local.get $7) - (local.get $11) - ) - ) - (i32.add - (local.get $6) - (local.get $11) - ) - ) - (local.get $6) - ) - ) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $8) - (i32.or - (local.get $7) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $7) - (local.get $8) - ) - (local.get $7) - ) - (local.set $0 - (i32.shr_u - (local.get $7) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $7) - (i32.const 256) - ) - (block - (local.set $2 - (i32.add - (i32.shl - (local.get $0) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $1 - (i32.load - (i32.const 176) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - (block $do-once63 - (if - (i32.ge_u - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (block - (local.set $16 - (local.get $1) - ) - (local.set $9 - (local.get $0) - ) - (br $do-once63) - ) - ) - (call $_abort) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - (local.set $16 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - (local.set $9 - (local.get $2) - ) - ) - ) - (i32.store - (local.get $16) - (local.get $8) - ) - (i32.store offset=12 - (local.get $9) - (local.get $8) - ) - (i32.store offset=8 - (local.get $8) - (local.get $9) - ) - (i32.store offset=12 - (local.get $8) - (local.get $2) - ) - (br $do-once48) - ) - ) - (local.set $2 - (i32.add - (local.tee $4 - (i32.shl - (local.tee $3 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $7) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $7) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $3 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $2 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.get $3) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $7) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $1) - (local.get $3) - ) - (local.get $2) - ) - ) - (i32.shr_u - (i32.shl - (local.get $0) - (local.get $2) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $8) - (local.get $3) - ) - (i32.store offset=20 - (local.get $8) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $8) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $1 - (i32.load - (i32.const 180) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $3) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - (i32.store offset=480 - (local.get $4) - (local.get $8) - ) - (i32.store offset=24 - (local.get $8) - (local.get $2) - ) - (i32.store offset=12 - (local.get $8) - (local.get $8) - ) - (i32.store offset=8 - (local.get $8) - (local.get $8) - ) - (br $do-once48) - ) - ) - (local.set $3 - (i32.shl - (local.get $7) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $3) - (i32.const 1) - ) - ) - (i32.eq - (local.get $3) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load offset=480 - (local.get $4) - ) - ) - (block $__rjto$7 - (block $__rjti$7 - (loop $while-in68 - (br_if $__rjti$7 - (i32.eq - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - (local.get $7) - ) - ) - (local.set $2 - (i32.shl - (local.get $3) - (i32.const 1) - ) - ) - (if - (local.tee $1 - (i32.load - (local.tee $3 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $3) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $3 - (local.get $2) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in68) - ) - ) - ) - (if - (i32.lt_u - (local.get $3) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $3) - (local.get $8) - ) - (i32.store offset=24 - (local.get $8) - (local.get $0) - ) - (i32.store offset=12 - (local.get $8) - (local.get $8) - ) - (i32.store offset=8 - (local.get $8) - (local.get $8) - ) - (br $do-once48) - ) - ) - (br $__rjto$7) - ) - (if - (i32.and - (i32.ge_u - (local.tee $2 - (i32.load offset=8 - (local.get $0) - ) - ) - (local.tee $1 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $1) - ) - ) - (block - (i32.store offset=12 - (local.get $2) - (local.get $8) - ) - (i32.store offset=8 - (local.get $0) - (local.get $8) - ) - (i32.store offset=8 - (local.get $8) - (local.get $2) - ) - (i32.store offset=12 - (local.get $8) - (local.get $0) - ) - (i32.store offset=24 - (local.get $8) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (return - (i32.add - (local.get $12) - (i32.const 8) - ) - ) - ) - ) - ) - ) - (loop $while-in70 - (block $while-out69 - (if - (i32.le_u - (local.tee $3 - (i32.load - (local.get $4) - ) - ) - (local.get $5) - ) - (br_if $while-out69 - (i32.gt_u - (local.tee $3 - (i32.add - (local.get $3) - (i32.load offset=4 - (local.get $4) - ) - ) - ) - (local.get $5) - ) - ) - ) - (local.set $4 - (i32.load offset=8 - (local.get $4) - ) - ) - (br $while-in70) - ) - ) - (local.set $10 - (i32.add - (local.tee $9 - (i32.add - (local.get $3) - (i32.const -47) - ) - ) - (i32.const 8) - ) - ) - (i32.store - (i32.const 200) - (local.tee $6 - (i32.add - (local.tee $4 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $4 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $4) - (i32.const 7) - ) - ) - ) - (local.get $1) - ) - ) - ) - (i32.store - (i32.const 188) - (local.tee $4 - (i32.sub - (i32.add - (local.get $2) - (i32.const -40) - ) - (local.get $4) - ) - ) - ) - (i32.store offset=4 - (local.get $6) - (i32.or - (local.get $4) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $4) - (local.get $6) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - (i32.store offset=4 - (local.tee $9 - (select - (local.get $5) - (local.tee $4 - (i32.add - (local.get $9) - (select - (i32.and - (i32.sub - (i32.const 0) - (local.get $10) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $10) - (i32.const 7) - ) - ) - ) - ) - (i32.lt_u - (local.get $4) - (local.tee $4 - (i32.add - (local.get $5) - (i32.const 16) - ) - ) - ) - ) - ) - (i32.const 27) - ) - (i32.store offset=8 - (local.get $9) - (i32.load - (i32.const 624) - ) - ) - (i32.store offset=12 - (local.get $9) - (i32.load - (i32.const 628) - ) - ) - (i32.store offset=16 - (local.get $9) - (i32.load - (i32.const 632) - ) - ) - (i32.store offset=20 - (local.get $9) - (i32.load - (i32.const 636) - ) - ) - (i32.store - (i32.const 624) - (local.get $1) - ) - (i32.store - (i32.const 628) - (local.get $2) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (i32.store - (i32.const 632) - (i32.add - (local.get $9) - (i32.const 8) - ) - ) - (local.set $1 - (i32.add - (local.get $9) - (i32.const 24) - ) - ) - (loop $while-in72 - (i32.store - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.const 7) - ) - (br_if $while-in72 - (i32.lt_u - (i32.add - (local.get $1) - (i32.const 4) - ) - (local.get $3) - ) - ) - ) - (if - (i32.ne - (local.get $5) - (local.get $9) - ) - (block - (i32.store offset=4 - (local.get $9) - (i32.and - (i32.load offset=4 - (local.get $9) - ) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $5) - (i32.or - (local.tee $6 - (i32.sub - (local.get $9) - (local.get $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (local.get $9) - (local.get $6) - ) - (local.set $1 - (i32.shr_u - (local.get $6) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $6) - (i32.const 256) - ) - (block - (local.set $3 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $2 - (i32.load - (i32.const 176) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $1 - (i32.load - (local.tee $2 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $17 - (local.get $2) - ) - (local.set $7 - (local.get $1) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $1) - (local.get $2) - ) - ) - (local.set $17 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - (local.set $7 - (local.get $3) - ) - ) - ) - (i32.store - (local.get $17) - (local.get $5) - ) - (i32.store offset=12 - (local.get $7) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $7) - ) - (i32.store offset=12 - (local.get $5) - (local.get $3) - ) - (br $do-once40) - ) - ) - (local.set $3 - (i32.add - (local.tee $7 - (i32.shl - (local.tee $9 - (if (result i32) - (local.tee $1 - (i32.shr_u - (local.get $6) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $6) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $7 - (i32.and - (i32.shr_u - (i32.add - (local.tee $1 - (i32.shl - (local.get $1) - (local.tee $2 - (i32.and - (i32.shr_u - (i32.add - (local.get $1) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $3 - (i32.and - (i32.shr_u - (i32.add - (local.tee $1 - (i32.shl - (local.get $1) - (local.get $7) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $6) - (i32.add - (local.tee $1 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $2) - (local.get $7) - ) - (local.get $3) - ) - ) - (i32.shr_u - (i32.shl - (local.get $1) - (local.get $3) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $1) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $5) - (local.get $9) - ) - (i32.store offset=20 - (local.get $5) - (i32.const 0) - ) - (i32.store - (local.get $4) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $2 - (i32.load - (i32.const 180) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $9) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $1) - (local.get $2) - ) - ) - (i32.store offset=480 - (local.get $7) - (local.get $5) - ) - (i32.store offset=24 - (local.get $5) - (local.get $3) - ) - (i32.store offset=12 - (local.get $5) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $5) - ) - (br $do-once40) - ) - ) - (local.set $4 - (i32.shl - (local.get $6) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $9) - (i32.const 1) - ) - ) - (i32.eq - (local.get $9) - (i32.const 31) - ) - ) - ) - ) - (local.set $1 - (i32.load offset=480 - (local.get $7) - ) - ) - (block $__rjto$9 - (block $__rjti$9 - (loop $while-in74 - (br_if $__rjti$9 - (i32.eq - (i32.and - (i32.load offset=4 - (local.get $1) - ) - (i32.const -8) - ) - (local.get $6) - ) - ) - (local.set $3 - (i32.shl - (local.get $4) - (i32.const 1) - ) - ) - (if - (local.tee $2 - (i32.load - (local.tee $4 - (i32.add - (i32.add - (local.get $1) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $4) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $3) - ) - (local.set $1 - (local.get $2) - ) - (br $while-in74) - ) - ) - ) - (if - (i32.lt_u - (local.get $4) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $4) - (local.get $5) - ) - (i32.store offset=24 - (local.get $5) - (local.get $1) - ) - (i32.store offset=12 - (local.get $5) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $5) - ) - (br $do-once40) - ) - ) - (br $__rjto$9) - ) - (if - (i32.and - (i32.ge_u - (local.tee $3 - (i32.load offset=8 - (local.get $1) - ) - ) - (local.tee $2 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $1) - (local.get $2) - ) - ) - (block - (i32.store offset=12 - (local.get $3) - (local.get $5) - ) - (i32.store offset=8 - (local.get $1) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $3) - ) - (i32.store offset=12 - (local.get $5) - (local.get $1) - ) - (i32.store offset=24 - (local.get $5) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - ) - (block - (if - (i32.or - (i32.eqz - (local.tee $3 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.lt_u - (local.get $1) - (local.get $3) - ) - ) - (i32.store - (i32.const 192) - (local.get $1) - ) - ) - (i32.store - (i32.const 624) - (local.get $1) - ) - (i32.store - (i32.const 628) - (local.get $2) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (i32.store - (i32.const 212) - (i32.load - (i32.const 648) - ) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - (local.set $3 - (i32.const 0) - ) - (loop $while-in43 - (local.set $4 - (i32.add - (local.tee $7 - (i32.shl - (local.get $3) - (i32.const 3) - ) - ) - (i32.const 216) - ) - ) - (i32.store offset=228 - (local.get $7) - (local.get $4) - ) - (i32.store offset=224 - (local.get $7) - (local.get $4) - ) - (br_if $while-in43 - (i32.ne - (local.tee $3 - (i32.add - (local.get $3) - (i32.const 1) - ) - ) - (i32.const 32) - ) - ) - ) - (i32.store - (i32.const 200) - (local.tee $4 - (i32.add - (local.tee $3 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $3 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $3) - (i32.const 7) - ) - ) - ) - (local.get $1) - ) - ) - ) - (i32.store - (i32.const 188) - (local.tee $1 - (i32.sub - (i32.add - (local.get $2) - (i32.const -40) - ) - (local.get $3) - ) - ) - ) - (i32.store offset=4 - (local.get $4) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $1) - (local.get $4) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - ) - ) - (br_if $folding-inner0 - (i32.gt_u - (local.tee $1 - (i32.load - (i32.const 188) - ) - ) - (local.get $0) - ) - ) - ) - (i32.store - (call $___errno_location) - (i32.const 12) - ) - (return - (i32.const 0) - ) - ) - (i32.store - (i32.const 188) - (local.tee $2 - (i32.sub - (local.get $1) - (local.get $0) - ) - ) - ) - (i32.store - (i32.const 200) - (local.tee $1 - (i32.add - (local.tee $3 - (i32.load - (i32.const 200) - ) - ) - (local.get $0) - ) - ) - ) - (i32.store offset=4 - (local.get $1) - (i32.or - (local.get $2) - (i32.const 1) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $0) - (i32.const 3) - ) - ) - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - (func $_free (; 54 ;) (; has Stack IR ;) (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (if - (i32.eqz - (local.get $0) - ) - (return) - ) - (if - (i32.lt_u - (local.tee $1 - (i32.add - (local.get $0) - (i32.const -8) - ) - ) - (local.tee $12 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.tee $4 - (i32.and - (local.tee $8 - (i32.load - (i32.add - (local.get $0) - (i32.const -4) - ) - ) - ) - (i32.const 3) - ) - ) - (i32.const 1) - ) - (call $_abort) - ) - (local.set $7 - (i32.add - (local.get $1) - (local.tee $0 - (i32.and - (local.get $8) - (i32.const -8) - ) - ) - ) - ) - (if - (i32.and - (local.get $8) - (i32.const 1) - ) - (block - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - ) - (block $do-once - (local.set $8 - (i32.load - (local.get $1) - ) - ) - (if - (i32.eqz - (local.get $4) - ) - (return) - ) - (if - (i32.lt_u - (local.tee $1 - (i32.sub - (local.get $1) - (local.get $8) - ) - ) - (local.get $12) - ) - (call $_abort) - ) - (local.set $0 - (i32.add - (local.get $0) - (local.get $8) - ) - ) - (if - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $1) - ) - (block - (if - (i32.ne - (i32.and - (local.tee $2 - (i32.load offset=4 - (local.get $7) - ) - ) - (i32.const 3) - ) - (i32.const 3) - ) - (block - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - (br $do-once) - ) - ) - (i32.store - (i32.const 184) - (local.get $0) - ) - (i32.store offset=4 - (local.get $7) - (i32.and - (local.get $2) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $1) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $1) - ) - (local.get $0) - ) - (return) - ) - ) - (local.set $4 - (i32.shr_u - (local.get $8) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $8) - (i32.const 256) - ) - (block - (local.set $6 - (i32.load offset=12 - (local.get $1) - ) - ) - (if - (i32.ne - (local.tee $3 - (i32.load offset=8 - (local.get $1) - ) - ) - (local.tee $2 - (i32.add - (i32.shl - (local.get $4) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $3) - (local.get $12) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $1) - (i32.load offset=12 - (local.get $3) - ) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (local.get $3) - (local.get $6) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - (br $do-once) - ) - ) - (if - (i32.eq - (local.get $2) - (local.get $6) - ) - (local.set $5 - (i32.add - (local.get $6) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $6) - (local.get $12) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (local.tee $2 - (i32.add - (local.get $6) - (i32.const 8) - ) - ) - ) - (local.get $1) - ) - (local.set $5 - (local.get $2) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=12 - (local.get $3) - (local.get $6) - ) - (i32.store - (local.get $5) - (local.get $3) - ) - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - (br $do-once) - ) - ) - (local.set $10 - (i32.load offset=24 - (local.get $1) - ) - ) - (if - (i32.eq - (local.tee $5 - (i32.load offset=12 - (local.get $1) - ) - ) - (local.get $1) - ) - (block $do-once0 - (if - (i32.eqz - (local.tee $4 - (i32.load - (local.tee $5 - (i32.add - (local.tee $8 - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - ) - (block - (br_if $do-once0 - (i32.eqz - (local.tee $4 - (i32.load - (local.get $8) - ) - ) - ) - ) - (local.set $5 - (local.get $8) - ) - ) - ) - (loop $while-in - (if - (local.tee $8 - (i32.load - (local.tee $13 - (i32.add - (local.get $4) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $8) - ) - (local.set $5 - (local.get $13) - ) - (br $while-in) - ) - ) - (if - (local.tee $8 - (i32.load - (local.tee $13 - (i32.add - (local.get $4) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $8) - ) - (local.set $5 - (local.get $13) - ) - (br $while-in) - ) - ) - ) - (if - (i32.lt_u - (local.get $5) - (local.get $12) - ) - (call $_abort) - (block - (i32.store - (local.get $5) - (i32.const 0) - ) - (local.set $6 - (local.get $4) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $4 - (i32.load offset=8 - (local.get $1) - ) - ) - (local.get $12) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $1) - (i32.load offset=12 - (local.get $4) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=8 - (local.get $5) - ) - (local.get $1) - ) - (block - (i32.store offset=12 - (local.get $4) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $4) - ) - (local.set $6 - (local.get $5) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $10) - (block - (if - (i32.eq - (i32.load offset=480 - (local.tee $5 - (i32.shl - (local.tee $4 - (i32.load offset=28 - (local.get $1) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $1) - ) - (block - (i32.store offset=480 - (local.get $5) - (local.get $6) - ) - (if - (i32.eqz - (local.get $6) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - (br $do-once) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $10) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=16 - (local.get $10) - ) - (local.get $1) - ) - (i32.store offset=16 - (local.get $10) - (local.get $6) - ) - (i32.store offset=20 - (local.get $10) - (local.get $6) - ) - ) - (if - (i32.eqz - (local.get $6) - ) - (block - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - (br $do-once) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $6) - (local.tee $5 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $6) - (local.get $10) - ) - (if - (local.tee $4 - (i32.load offset=16 - (local.get $1) - ) - ) - (if - (i32.lt_u - (local.get $4) - (local.get $5) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $6) - (local.get $4) - ) - (i32.store offset=24 - (local.get $4) - (local.get $6) - ) - ) - ) - ) - (if - (local.tee $5 - (i32.load offset=20 - (local.get $1) - ) - ) - (if - (i32.lt_u - (local.get $5) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $6) - (local.get $5) - ) - (i32.store offset=24 - (local.get $5) - (local.get $6) - ) - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - ) - ) - (block - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - ) - ) - ) - (block - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - ) - ) - ) - ) - (if - (i32.ge_u - (local.get $3) - (local.get $7) - ) - (call $_abort) - ) - (if - (i32.eqz - (i32.and - (local.tee $0 - (i32.load offset=4 - (local.get $7) - ) - ) - (i32.const 1) - ) - ) - (call $_abort) - ) - (if - (i32.and - (local.get $0) - (i32.const 2) - ) - (block - (i32.store offset=4 - (local.get $7) - (i32.and - (local.get $0) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $2) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $2) - (local.get $3) - ) - (local.get $2) - ) - ) - (block - (if - (i32.eq - (i32.load - (i32.const 200) - ) - (local.get $7) - ) - (block - (i32.store - (i32.const 188) - (local.tee $0 - (i32.add - (i32.load - (i32.const 188) - ) - (local.get $2) - ) - ) - ) - (i32.store - (i32.const 200) - (local.get $3) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (if - (i32.ne - (local.get $3) - (i32.load - (i32.const 196) - ) - ) - (return) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (i32.store - (i32.const 184) - (i32.const 0) - ) - (return) - ) - ) - (if - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $7) - ) - (block - (i32.store - (i32.const 184) - (local.tee $0 - (i32.add - (i32.load - (i32.const 184) - ) - (local.get $2) - ) - ) - ) - (i32.store - (i32.const 196) - (local.get $3) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $3) - ) - (local.get $0) - ) - (return) - ) - ) - (local.set $4 - (i32.add - (i32.and - (local.get $0) - (i32.const -8) - ) - (local.get $2) - ) - ) - (local.set $2 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (block $do-once4 - (if - (i32.lt_u - (local.get $0) - (i32.const 256) - ) - (block - (local.set $5 - (i32.load offset=12 - (local.get $7) - ) - ) - (if - (i32.ne - (local.tee $1 - (i32.load offset=8 - (local.get $7) - ) - ) - (local.tee $0 - (i32.add - (i32.shl - (local.get $2) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $1) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $7) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (local.get $1) - (local.get $5) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $2) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - (if - (i32.eq - (local.get $0) - (local.get $5) - ) - (local.set $14 - (i32.add - (local.get $5) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $5) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (local.tee $0 - (i32.add - (local.get $5) - (i32.const 8) - ) - ) - ) - (local.get $7) - ) - (local.set $14 - (local.get $0) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=12 - (local.get $1) - (local.get $5) - ) - (i32.store - (local.get $14) - (local.get $1) - ) - ) - (block - (local.set $6 - (i32.load offset=24 - (local.get $7) - ) - ) - (if - (i32.eq - (local.tee $0 - (i32.load offset=12 - (local.get $7) - ) - ) - (local.get $7) - ) - (block $do-once6 - (if - (i32.eqz - (local.tee $2 - (i32.load - (local.tee $0 - (i32.add - (local.tee $1 - (i32.add - (local.get $7) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - ) - (block - (br_if $do-once6 - (i32.eqz - (local.tee $2 - (i32.load - (local.get $1) - ) - ) - ) - ) - (local.set $0 - (local.get $1) - ) - ) - ) - (loop $while-in9 - (if - (local.tee $1 - (i32.load - (local.tee $5 - (i32.add - (local.get $2) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $2 - (local.get $1) - ) - (local.set $0 - (local.get $5) - ) - (br $while-in9) - ) - ) - (if - (local.tee $1 - (i32.load - (local.tee $5 - (i32.add - (local.get $2) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $2 - (local.get $1) - ) - (local.set $0 - (local.get $5) - ) - (br $while-in9) - ) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $0) - (i32.const 0) - ) - (local.set $9 - (local.get $2) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $2 - (i32.load offset=8 - (local.get $7) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $7) - (i32.load offset=12 - (local.get $2) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=8 - (local.get $0) - ) - (local.get $7) - ) - (block - (i32.store offset=12 - (local.get $2) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $2) - ) - (local.set $9 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $6) - (block - (if - (i32.eq - (i32.load offset=480 - (local.tee $0 - (i32.shl - (local.tee $2 - (i32.load offset=28 - (local.get $7) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $7) - ) - (block - (i32.store offset=480 - (local.get $0) - (local.get $9) - ) - (if - (i32.eqz - (local.get $9) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $2) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $6) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=16 - (local.get $6) - ) - (local.get $7) - ) - (i32.store offset=16 - (local.get $6) - (local.get $9) - ) - (i32.store offset=20 - (local.get $6) - (local.get $9) - ) - ) - (br_if $do-once4 - (i32.eqz - (local.get $9) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $9) - (local.tee $0 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $9) - (local.get $6) - ) - (if - (local.tee $2 - (i32.load offset=16 - (local.get $7) - ) - ) - (if - (i32.lt_u - (local.get $2) - (local.get $0) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $9) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $9) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $7) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $9) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $9) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $4) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $3) - (local.get $4) - ) - (local.get $4) - ) - (local.set $2 - (if (result i32) - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $3) - ) - (block - (i32.store - (i32.const 184) - (local.get $4) - ) - (return) - ) - (local.get $4) - ) - ) - ) - ) - (local.set $0 - (i32.shr_u - (local.get $2) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $2) - (i32.const 256) - ) - (block - (local.set $1 - (i32.add - (i32.shl - (local.get $0) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $2 - (i32.load - (i32.const 176) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - (if - (i32.lt_u - (local.tee $0 - (i32.load - (local.tee $2 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $15 - (local.get $2) - ) - (local.set $11 - (local.get $0) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $0) - (local.get $2) - ) - ) - (local.set $15 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (local.set $11 - (local.get $1) - ) - ) - ) - (i32.store - (local.get $15) - (local.get $3) - ) - (i32.store offset=12 - (local.get $11) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $11) - ) - (i32.store offset=12 - (local.get $3) - (local.get $1) - ) - (return) - ) - ) - (local.set $5 - (i32.add - (local.tee $11 - (i32.shl - (local.tee $4 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $2) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $2) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $4 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $5 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.get $4) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $2) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $1) - (local.get $4) - ) - (local.get $5) - ) - ) - (i32.shr_u - (i32.shl - (local.get $0) - (local.get $5) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $3) - (local.get $4) - ) - (i32.store offset=20 - (local.get $3) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $3) - (i32.const 0) - ) - (if - (i32.and - (local.tee $1 - (i32.load - (i32.const 180) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $4) - ) - ) - ) - (block $do-once12 - (local.set $4 - (i32.shl - (local.get $2) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $4) - (i32.const 1) - ) - ) - (i32.eq - (local.get $4) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load offset=480 - (local.get $11) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (loop $while-in15 - (br_if $__rjti$1 - (i32.eq - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - (local.get $2) - ) - ) - (local.set $5 - (i32.shl - (local.get $4) - (i32.const 1) - ) - ) - (if - (local.tee $1 - (i32.load - (local.tee $4 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $4) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $5) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in15) - ) - ) - ) - (if - (i32.lt_u - (local.get $4) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $4) - (local.get $3) - ) - (i32.store offset=24 - (local.get $3) - (local.get $0) - ) - (i32.store offset=12 - (local.get $3) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $3) - ) - (br $do-once12) - ) - ) - (br $__rjto$1) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.get $0) - ) - ) - (local.tee $2 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $2) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $3) - ) - (i32.store offset=8 - (local.get $0) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $1) - ) - (i32.store offset=12 - (local.get $3) - (local.get $0) - ) - (i32.store offset=24 - (local.get $3) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - (i32.store offset=480 - (local.get $11) - (local.get $3) - ) - (i32.store offset=24 - (local.get $3) - (local.get $5) - ) - (i32.store offset=12 - (local.get $3) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $3) - ) - ) - ) - (i32.store - (i32.const 208) - (local.tee $0 - (i32.add - (i32.load - (i32.const 208) - ) - (i32.const -1) - ) - ) - ) - (local.set $0 - (if (result i32) - (local.get $0) - (return) - (i32.const 632) - ) - ) - (loop $while-in17 - (local.set $0 - (i32.add - (local.tee $2 - (i32.load - (local.get $0) - ) - ) - (i32.const 8) - ) - ) - (br_if $while-in17 - (local.get $2) - ) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - ) - (func $runPostSets (; 55 ;) (; has Stack IR ;) - (nop) - ) - (func $_i64Subtract (; 56 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (global.set $tempRet0 - (i32.sub - (i32.sub - (local.get $1) - (local.get $3) - ) - (i32.gt_u - (local.get $2) - (local.get $0) - ) - ) - ) - (i32.sub - (local.get $0) - (local.get $2) - ) - ) - (func $_i64Add (; 57 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (global.set $tempRet0 - (i32.add - (i32.add - (local.get $1) - (local.get $3) - ) - (i32.lt_u - (local.tee $1 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - (local.get $0) - ) - ) - ) - (local.get $1) - ) - (func $_memset (; 58 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local.set $4 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - (if - (i32.ge_s - (local.get $2) - (i32.const 20) - ) - (block - (local.set $1 - (i32.and - (local.get $1) - (i32.const 255) - ) - ) - (if - (local.tee $3 - (i32.and - (local.get $0) - (i32.const 3) - ) - ) - (block - (local.set $3 - (i32.sub - (i32.add - (local.get $0) - (i32.const 4) - ) - (local.get $3) - ) - ) - (loop $while-in - (if - (i32.lt_s - (local.get $0) - (local.get $3) - ) - (block - (i32.store8 - (local.get $0) - (local.get $1) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - ) - (local.set $3 - (i32.or - (i32.or - (i32.or - (i32.shl - (local.get $1) - (i32.const 8) - ) - (local.get $1) - ) - (i32.shl - (local.get $1) - (i32.const 16) - ) - ) - (i32.shl - (local.get $1) - (i32.const 24) - ) - ) - ) - (local.set $5 - (i32.and - (local.get $4) - (i32.const -4) - ) - ) - (loop $while-in1 - (if - (i32.lt_s - (local.get $0) - (local.get $5) - ) - (block - (i32.store - (local.get $0) - (local.get $3) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - ) - (loop $while-in3 - (if - (i32.lt_s - (local.get $0) - (local.get $4) - ) - (block - (i32.store8 - (local.get $0) - (local.get $1) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (i32.sub - (local.get $0) - (local.get $2) - ) - ) - (func $_bitshift64Lshr (; 59 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (if - (i32.lt_s - (local.get $2) - (i32.const 32) - ) - (block - (global.set $tempRet0 - (i32.shr_u - (local.get $1) - (local.get $2) - ) - ) - (return - (i32.or - (i32.shl - (i32.and - (local.get $1) - (i32.sub - (i32.shl - (i32.const 1) - (local.get $2) - ) - (i32.const 1) - ) - ) - (i32.sub - (i32.const 32) - (local.get $2) - ) - ) - (i32.shr_u - (local.get $0) - (local.get $2) - ) - ) - ) - ) - ) - (global.set $tempRet0 - (i32.const 0) - ) - (i32.shr_u - (local.get $1) - (i32.sub - (local.get $2) - (i32.const 32) - ) - ) - ) - (func $_bitshift64Shl (; 60 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (if - (i32.lt_s - (local.get $2) - (i32.const 32) - ) - (block - (global.set $tempRet0 - (i32.or - (i32.shl - (local.get $1) - (local.get $2) - ) - (i32.shr_u - (i32.and - (i32.shl - (i32.sub - (i32.shl - (i32.const 1) - (local.get $2) - ) - (i32.const 1) - ) - (i32.sub - (i32.const 32) - (local.get $2) - ) - ) - (local.get $0) - ) - (i32.sub - (i32.const 32) - (local.get $2) - ) - ) - ) - ) - (return - (i32.shl - (local.get $0) - (local.get $2) - ) - ) - ) - ) - (global.set $tempRet0 - (i32.shl - (local.get $0) - (i32.sub - (local.get $2) - (i32.const 32) - ) - ) - ) - (i32.const 0) - ) - (func $_memcpy (; 61 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (if - (i32.ge_s - (local.get $2) - (i32.const 4096) - ) - (return - (call $_emscripten_memcpy_big - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - ) - (local.set $3 - (local.get $0) - ) - (if - (i32.eq - (i32.and - (local.get $0) - (i32.const 3) - ) - (i32.and - (local.get $1) - (i32.const 3) - ) - ) - (block - (loop $while-in - (if - (i32.and - (local.get $0) - (i32.const 3) - ) - (block - (if - (i32.eqz - (local.get $2) - ) - (return - (local.get $3) - ) - ) - (i32.store8 - (local.get $0) - (i32.load8_s - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (loop $while-in1 - (if - (i32.ge_s - (local.get $2) - (i32.const 4) - ) - (block - (i32.store - (local.get $0) - (i32.load - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 4) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - ) - (loop $while-in3 - (if - (i32.gt_s - (local.get $2) - (i32.const 0) - ) - (block - (i32.store8 - (local.get $0) - (i32.load8_s - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (local.get $3) - ) - (func $___udivdi3 (; 62 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $___udivmoddi4 - (local.get $0) - (local.get $1) - (local.get $2) - (i32.const 0) - (i32.const 0) - ) - ) - (func $___uremdi3 (; 63 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local.set $3 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (drop - (call $___udivmoddi4 - (local.get $0) - (local.get $1) - (local.get $2) - (i32.const 0) - (local.get $3) - ) - ) - (global.set $STACKTOP - (local.get $3) - ) - (global.set $tempRet0 - (i32.load offset=4 - (local.get $3) - ) - ) - (i32.load - (local.get $3) - ) - ) - (func $___udivmoddi4 (; 64 ;) (; has Stack IR ;) (param $xl i32) (param $xh i32) (param $yl i32) (param $yh i32) (param $r i32) (result i32) - (local $x64 i64) - (local $y64 i64) - (local.set $x64 - (i64.or - (i64.extend_i32_u - (local.get $xl) - ) - (i64.shl - (i64.extend_i32_u - (local.get $xh) - ) - (i64.const 32) - ) - ) - ) - (local.set $y64 - (i64.or - (i64.extend_i32_u - (local.get $yl) - ) - (i64.shl - (i64.extend_i32_u - (local.get $yh) - ) - (i64.const 32) - ) - ) - ) - (if - (local.get $r) - (i64.store - (local.get $r) - (i64.rem_u - (local.get $x64) - (local.get $y64) - ) - ) - ) - (local.set $x64 - (i64.div_u - (local.get $x64) - (local.get $y64) - ) - ) - (global.set $tempRet0 - (i32.wrap_i64 - (i64.shr_u - (local.get $x64) - (i64.const 32) - ) - ) - ) - (i32.wrap_i64 - (local.get $x64) - ) - ) - (func $dynCall_ii (; 65 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (call_indirect (type $i32_=>_i32) - (local.get $1) - (i32.and - (local.get $0) - (i32.const 1) - ) - ) - ) - (func $dynCall_iiii (; 66 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $1) - (local.get $2) - (local.get $3) - (i32.add - (i32.and - (local.get $0) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (func $dynCall_vi (; 67 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (call_indirect (type $i32_=>_none) - (local.get $1) - (i32.add - (i32.and - (local.get $0) - (i32.const 7) - ) - (i32.const 10) - ) - ) - ) - (func $b0 (; 68 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (call $nullFunc_ii - (i32.const 0) - ) - (i32.const 0) - ) - (func $b1 (; 69 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $nullFunc_iiii - (i32.const 1) - ) - (i32.const 0) - ) - (func $b2 (; 70 ;) (; has Stack IR ;) (param $0 i32) - (call $nullFunc_vi - (i32.const 2) - ) - ) -) diff -Nru binaryen-91/test/emcc_hello_world.fromasm.clamp.no-opts binaryen-99/test/emcc_hello_world.fromasm.clamp.no-opts --- binaryen-91/test/emcc_hello_world.fromasm.clamp.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/emcc_hello_world.fromasm.clamp.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,31685 +0,0 @@ -(module - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 18 18 funcref)) - (elem (global.get $__table_base) $b0 $___stdio_close $b1 $b1 $___stdout_write $___stdio_seek $___stdio_write $b1 $b1 $b1 $b2 $b2 $b2 $b2 $b2 $_cleanup $b2 $b2) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) - (import "env" "ABORT" (global $ABORT$asm2wasm$import i32)) - (import "env" "cttz_i8" (global $cttz_i8$asm2wasm$import i32)) - (import "global" "NaN" (global $nan$asm2wasm$import f64)) - (import "global" "Infinity" (global $inf$asm2wasm$import f64)) - (import "env" "abort" (func $abort)) - (import "env" "nullFunc_ii" (func $nullFunc_ii (param i32))) - (import "env" "nullFunc_iiii" (func $nullFunc_iiii (param i32))) - (import "env" "nullFunc_vi" (func $nullFunc_vi (param i32))) - (import "env" "_pthread_cleanup_pop" (func $_pthread_cleanup_pop (param i32))) - (import "env" "___lock" (func $___lock (param i32))) - (import "env" "_pthread_self" (func $_pthread_self (result i32))) - (import "env" "_abort" (func $_abort)) - (import "env" "___syscall6" (func $___syscall6 (param i32 i32) (result i32))) - (import "env" "_sbrk" (func $_sbrk (param i32) (result i32))) - (import "env" "_time" (func $_time (param i32) (result i32))) - (import "env" "_emscripten_memcpy_big" (func $_emscripten_memcpy_big (param i32 i32 i32) (result i32))) - (import "env" "___syscall54" (func $___syscall54 (param i32 i32) (result i32))) - (import "env" "___unlock" (func $___unlock (param i32))) - (import "env" "___syscall140" (func $___syscall140 (param i32 i32) (result i32))) - (import "env" "_pthread_cleanup_push" (func $_pthread_cleanup_push (param i32 i32))) - (import "env" "_sysconf" (func $_sysconf (param i32) (result i32))) - (import "env" "___syscall146" (func $___syscall146 (param i32 i32) (result i32))) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (global $STACK_MAX (mut i32) (global.get $STACK_MAX$asm2wasm$import)) - (global $tempDoublePtr (mut i32) (global.get $tempDoublePtr$asm2wasm$import)) - (global $ABORT (mut i32) (global.get $ABORT$asm2wasm$import)) - (global $cttz_i8 (mut i32) (global.get $cttz_i8$asm2wasm$import)) - (global $__THREW__ (mut i32) (i32.const 0)) - (global $threwValue (mut i32) (i32.const 0)) - (global $setjmpId (mut i32) (i32.const 0)) - (global $undef (mut i32) (i32.const 0)) - (global $nan (mut f64) (global.get $nan$asm2wasm$import)) - (global $inf (mut f64) (global.get $inf$asm2wasm$import)) - (global $tempInt (mut i32) (i32.const 0)) - (global $tempBigInt (mut i32) (i32.const 0)) - (global $tempBigIntP (mut i32) (i32.const 0)) - (global $tempBigIntS (mut i32) (i32.const 0)) - (global $tempBigIntR (mut f64) (f64.const 0)) - (global $tempBigIntI (mut i32) (i32.const 0)) - (global $tempBigIntD (mut i32) (i32.const 0)) - (global $tempValue (mut i32) (i32.const 0)) - (global $tempDouble (mut f64) (f64.const 0)) - (global $tempRet0 (mut i32) (i32.const 0)) - (global $tempRet1 (mut i32) (i32.const 0)) - (global $tempRet2 (mut i32) (i32.const 0)) - (global $tempRet3 (mut i32) (i32.const 0)) - (global $tempRet4 (mut i32) (i32.const 0)) - (global $tempRet5 (mut i32) (i32.const 0)) - (global $tempRet6 (mut i32) (i32.const 0)) - (global $tempRet7 (mut i32) (i32.const 0)) - (global $tempRet8 (mut i32) (i32.const 0)) - (global $tempRet9 (mut i32) (i32.const 0)) - (global $tempFloat (mut f64) (f64.const 0)) - (export "_i64Subtract" (func $_i64Subtract)) - (export "_free" (func $_free)) - (export "_main" (func $_main)) - (export "_i64Add" (func $_i64Add)) - (export "_memset" (func $_memset)) - (export "_malloc" (func $_malloc)) - (export "_memcpy" (func $_memcpy)) - (export "_bitshift64Lshr" (func $_bitshift64Lshr)) - (export "_fflush" (func $_fflush)) - (export "___errno_location" (func $___errno_location)) - (export "_bitshift64Shl" (func $_bitshift64Shl)) - (export "runPostSets" (func $runPostSets)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackSave" (func $stackSave)) - (export "stackRestore" (func $stackRestore)) - (export "establishStackSpace" (func $establishStackSpace)) - (export "setThrew" (func $setThrew)) - (export "setTempRet0" (func $setTempRet0)) - (export "getTempRet0" (func $getTempRet0)) - (export "dynCall_ii" (func $dynCall_ii)) - (export "dynCall_iiii" (func $dynCall_iiii)) - (export "dynCall_vi" (func $dynCall_vi)) - (export "___udivmoddi4" (func $___udivmoddi4)) - (func $stackAlloc (; 18 ;) (param $size i32) (result i32) - (local $ret i32) - (local.set $ret - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (local.get $size) - ) - ) - (global.set $STACKTOP - (i32.and - (i32.add - (global.get $STACKTOP) - (i32.const 15) - ) - (i32.const -16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (return - (local.get $ret) - ) - ) - (func $stackSave (; 19 ;) (result i32) - (return - (global.get $STACKTOP) - ) - ) - (func $stackRestore (; 20 ;) (param $top i32) - (global.set $STACKTOP - (local.get $top) - ) - ) - (func $establishStackSpace (; 21 ;) (param $stackBase i32) (param $stackMax i32) - (global.set $STACKTOP - (local.get $stackBase) - ) - (global.set $STACK_MAX - (local.get $stackMax) - ) - ) - (func $setThrew (; 22 ;) (param $threw i32) (param $value i32) - (if - (i32.eq - (global.get $__THREW__) - (i32.const 0) - ) - (block - (global.set $__THREW__ - (local.get $threw) - ) - (global.set $threwValue - (local.get $value) - ) - ) - ) - ) - (func $copyTempFloat (; 23 ;) (param $ptr i32) - (i32.store8 - (global.get $tempDoublePtr) - (i32.load8_s - (local.get $ptr) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 1) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 1) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 2) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 2) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 3) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 3) - ) - ) - ) - ) - (func $copyTempDouble (; 24 ;) (param $ptr i32) - (i32.store8 - (global.get $tempDoublePtr) - (i32.load8_s - (local.get $ptr) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 1) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 1) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 2) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 2) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 3) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 3) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 4) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 4) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 5) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 5) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 6) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 6) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 7) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 7) - ) - ) - ) - ) - (func $setTempRet0 (; 25 ;) (param $value i32) - (global.set $tempRet0 - (local.get $value) - ) - ) - (func $getTempRet0 (; 26 ;) (result i32) - (return - (global.get $tempRet0) - ) - ) - (func $_main (; 27 ;) (result i32) - (local $$retval i32) - (local $$vararg_buffer i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$vararg_buffer - (local.get $sp) - ) - (local.set $$retval - (i32.const 0) - ) - (drop - (call $_printf - (i32.const 672) - (local.get $$vararg_buffer) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (i32.const 0) - ) - ) - (func $_frexp (; 28 ;) (param $$x f64) (param $$e i32) (result f64) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$7 f64) - (local $$call f64) - (local $$conv i32) - (local $$mul f64) - (local $$retval$0 f64) - (local $$storemerge i32) - (local $$sub i32) - (local $$sub8 i32) - (local $$tobool1 i32) - (local $$x$addr$0 f64) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (f64.store - (global.get $tempDoublePtr) - (local.get $$x) - ) - (local.set $$0 - (i32.load - (global.get $tempDoublePtr) - ) - ) - (local.set $$1 - (i32.load - (i32.add - (global.get $tempDoublePtr) - (i32.const 4) - ) - ) - ) - (local.set $$2 - (call $_bitshift64Lshr - (local.get $$0) - (local.get $$1) - (i32.const 52) - ) - ) - (local.set $$3 - (global.get $tempRet0) - ) - (local.set $$conv - (i32.and - (local.get $$2) - (i32.const 2047) - ) - ) - (block $switch - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case0 $switch-default - (i32.sub - (local.get $$conv) - (i32.const 0) - ) - ) - ) - (block - (local.set $$tobool1 - (f64.ne - (local.get $$x) - (f64.const 0) - ) - ) - (if - (local.get $$tobool1) - (block - (local.set $$mul - (f64.mul - (local.get $$x) - (f64.const 18446744073709551615) - ) - ) - (local.set $$call - (call $_frexp - (local.get $$mul) - (local.get $$e) - ) - ) - (local.set $$4 - (i32.load - (local.get $$e) - ) - ) - (local.set $$sub - (i32.add - (local.get $$4) - (i32.const -64) - ) - ) - (local.set $$storemerge - (local.get $$sub) - ) - (local.set $$x$addr$0 - (local.get $$call) - ) - ) - (block - (local.set $$storemerge - (i32.const 0) - ) - (local.set $$x$addr$0 - (local.get $$x) - ) - ) - ) - (i32.store - (local.get $$e) - (local.get $$storemerge) - ) - (local.set $$retval$0 - (local.get $$x$addr$0) - ) - (br $switch) - ) - ) - (block - (local.set $$retval$0 - (local.get $$x) - ) - (br $switch) - ) - ) - (block - (local.set $$sub8 - (i32.add - (local.get $$conv) - (i32.const -1022) - ) - ) - (i32.store - (local.get $$e) - (local.get $$sub8) - ) - (local.set $$5 - (i32.and - (local.get $$1) - (i32.const -2146435073) - ) - ) - (local.set $$6 - (i32.or - (local.get $$5) - (i32.const 1071644672) - ) - ) - (i32.store - (global.get $tempDoublePtr) - (local.get $$0) - ) - (i32.store - (i32.add - (global.get $tempDoublePtr) - (i32.const 4) - ) - (local.get $$6) - ) - (local.set $$7 - (f64.load - (global.get $tempDoublePtr) - ) - ) - (local.set $$retval$0 - (local.get $$7) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_frexpl (; 29 ;) (param $$x f64) (param $$e i32) (result f64) - (local $$call f64) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$call - (call $_frexp - (local.get $$x) - (local.get $$e) - ) - ) - (return - (local.get $$call) - ) - ) - (func $_strerror (; 30 ;) (param $$e i32) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$arrayidx i32) - (local $$cmp i32) - (local $$conv i32) - (local $$dec i32) - (local $$i$012 i32) - (local $$i$012$lcssa i32) - (local $$i$111 i32) - (local $$inc i32) - (local $$incdec$ptr i32) - (local $$incdec$ptr$lcssa i32) - (local $$s$0$lcssa i32) - (local $$s$010 i32) - (local $$s$1 i32) - (local $$tobool i32) - (local $$tobool5 i32) - (local $$tobool5$9 i32) - (local $$tobool8 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$i$012 - (i32.const 0) - ) - (loop $while-in - (block $while-out - (local.set $$arrayidx - (i32.add - (i32.const 687) - (local.get $$i$012) - ) - ) - (local.set $$0 - (i32.load8_s - (local.get $$arrayidx) - ) - ) - (local.set $$conv - (i32.and - (local.get $$0) - (i32.const 255) - ) - ) - (local.set $$cmp - (i32.eq - (local.get $$conv) - (local.get $$e) - ) - ) - (if - (local.get $$cmp) - (block - (local.set $$i$012$lcssa - (local.get $$i$012) - ) - (local.set $label - (i32.const 2) - ) - (br $while-out) - ) - ) - (local.set $$inc - (i32.add - (local.get $$i$012) - (i32.const 1) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$inc) - (i32.const 87) - ) - ) - (if - (local.get $$tobool) - (block - (local.set $$i$111 - (i32.const 87) - ) - (local.set $$s$010 - (i32.const 775) - ) - (local.set $label - (i32.const 5) - ) - (br $while-out) - ) - (local.set $$i$012 - (local.get $$inc) - ) - ) - (br $while-in) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 2) - ) - (block - (local.set $$tobool5$9 - (i32.eq - (local.get $$i$012$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$tobool5$9) - (local.set $$s$0$lcssa - (i32.const 775) - ) - (block - (local.set $$i$111 - (local.get $$i$012$lcssa) - ) - (local.set $$s$010 - (i32.const 775) - ) - (local.set $label - (i32.const 5) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 5) - ) - (loop $while-in1 - (block $while-out0 - (local.set $label - (i32.const 0) - ) - (local.set $$s$1 - (local.get $$s$010) - ) - (loop $while-in3 - (block $while-out2 - (local.set $$1 - (i32.load8_s - (local.get $$s$1) - ) - ) - (local.set $$tobool8 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$1) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - ) - (local.set $$incdec$ptr - (i32.add - (local.get $$s$1) - (i32.const 1) - ) - ) - (if - (local.get $$tobool8) - (block - (local.set $$incdec$ptr$lcssa - (local.get $$incdec$ptr) - ) - (br $while-out2) - ) - (local.set $$s$1 - (local.get $$incdec$ptr) - ) - ) - (br $while-in3) - ) - ) - (local.set $$dec - (i32.add - (local.get $$i$111) - (i32.const -1) - ) - ) - (local.set $$tobool5 - (i32.eq - (local.get $$dec) - (i32.const 0) - ) - ) - (if - (local.get $$tobool5) - (block - (local.set $$s$0$lcssa - (local.get $$incdec$ptr$lcssa) - ) - (br $while-out0) - ) - (block - (local.set $$i$111 - (local.get $$dec) - ) - (local.set $$s$010 - (local.get $$incdec$ptr$lcssa) - ) - (local.set $label - (i32.const 5) - ) - ) - ) - (br $while-in1) - ) - ) - ) - (return - (local.get $$s$0$lcssa) - ) - ) - (func $___errno_location (; 31 ;) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$call$i i32) - (local $$errno_ptr i32) - (local $$retval$0 i32) - (local $$tobool i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$0 - (i32.load - (i32.const 16) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$0) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (local.set $$retval$0 - (i32.const 60) - ) - (block - (local.set $$call$i - (call $_pthread_self) - ) - (local.set $$errno_ptr - (i32.add - (local.get $$call$i) - (i32.const 60) - ) - ) - (local.set $$1 - (i32.load - (local.get $$errno_ptr) - ) - ) - (local.set $$retval$0 - (local.get $$1) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $___stdio_close (; 32 ;) (param $$f i32) (result i32) - (local $$0 i32) - (local $$call i32) - (local $$call1 i32) - (local $$fd i32) - (local $$vararg_buffer i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$vararg_buffer - (local.get $sp) - ) - (local.set $$fd - (i32.add - (local.get $$f) - (i32.const 60) - ) - ) - (local.set $$0 - (i32.load - (local.get $$fd) - ) - ) - (i32.store - (local.get $$vararg_buffer) - (local.get $$0) - ) - (local.set $$call - (call $___syscall6 - (i32.const 6) - (local.get $$vararg_buffer) - ) - ) - (local.set $$call1 - (call $___syscall_ret - (local.get $$call) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (local.get $$call1) - ) - ) - (func $___stdout_write (; 33 ;) (param $$f i32) (param $$buf i32) (param $$len i32) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$and i32) - (local $$call i32) - (local $$call3 i32) - (local $$fd i32) - (local $$lbf i32) - (local $$tio i32) - (local $$tobool i32) - (local $$tobool2 i32) - (local $$vararg_buffer i32) - (local $$vararg_ptr1 i32) - (local $$vararg_ptr2 i32) - (local $$write i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 80) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$vararg_buffer - (local.get $sp) - ) - (local.set $$tio - (i32.add - (local.get $sp) - (i32.const 12) - ) - ) - (local.set $$write - (i32.add - (local.get $$f) - (i32.const 36) - ) - ) - (i32.store - (local.get $$write) - (i32.const 4) - ) - (local.set $$0 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and - (i32.and - (local.get $$0) - (i32.const 64) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$and) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (block - (local.set $$fd - (i32.add - (local.get $$f) - (i32.const 60) - ) - ) - (local.set $$1 - (i32.load - (local.get $$fd) - ) - ) - (i32.store - (local.get $$vararg_buffer) - (local.get $$1) - ) - (local.set $$vararg_ptr1 - (i32.add - (local.get $$vararg_buffer) - (i32.const 4) - ) - ) - (i32.store - (local.get $$vararg_ptr1) - (i32.const 21505) - ) - (local.set $$vararg_ptr2 - (i32.add - (local.get $$vararg_buffer) - (i32.const 8) - ) - ) - (i32.store - (local.get $$vararg_ptr2) - (local.get $$tio) - ) - (local.set $$call - (call $___syscall54 - (i32.const 54) - (local.get $$vararg_buffer) - ) - ) - (local.set $$tobool2 - (i32.eq - (local.get $$call) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool2) - ) - (block - (local.set $$lbf - (i32.add - (local.get $$f) - (i32.const 75) - ) - ) - (i32.store8 - (local.get $$lbf) - (i32.const -1) - ) - ) - ) - ) - ) - (local.set $$call3 - (call $___stdio_write - (local.get $$f) - (local.get $$buf) - (local.get $$len) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (local.get $$call3) - ) - ) - (func $___stdio_seek (; 34 ;) (param $$f i32) (param $$off i32) (param $$whence i32) (result i32) - (local $$$pre i32) - (local $$0 i32) - (local $$1 i32) - (local $$call i32) - (local $$call1 i32) - (local $$cmp i32) - (local $$fd i32) - (local $$ret i32) - (local $$vararg_buffer i32) - (local $$vararg_ptr1 i32) - (local $$vararg_ptr2 i32) - (local $$vararg_ptr3 i32) - (local $$vararg_ptr4 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 32) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$vararg_buffer - (local.get $sp) - ) - (local.set $$ret - (i32.add - (local.get $sp) - (i32.const 20) - ) - ) - (local.set $$fd - (i32.add - (local.get $$f) - (i32.const 60) - ) - ) - (local.set $$0 - (i32.load - (local.get $$fd) - ) - ) - (i32.store - (local.get $$vararg_buffer) - (local.get $$0) - ) - (local.set $$vararg_ptr1 - (i32.add - (local.get $$vararg_buffer) - (i32.const 4) - ) - ) - (i32.store - (local.get $$vararg_ptr1) - (i32.const 0) - ) - (local.set $$vararg_ptr2 - (i32.add - (local.get $$vararg_buffer) - (i32.const 8) - ) - ) - (i32.store - (local.get $$vararg_ptr2) - (local.get $$off) - ) - (local.set $$vararg_ptr3 - (i32.add - (local.get $$vararg_buffer) - (i32.const 12) - ) - ) - (i32.store - (local.get $$vararg_ptr3) - (local.get $$ret) - ) - (local.set $$vararg_ptr4 - (i32.add - (local.get $$vararg_buffer) - (i32.const 16) - ) - ) - (i32.store - (local.get $$vararg_ptr4) - (local.get $$whence) - ) - (local.set $$call - (call $___syscall140 - (i32.const 140) - (local.get $$vararg_buffer) - ) - ) - (local.set $$call1 - (call $___syscall_ret - (local.get $$call) - ) - ) - (local.set $$cmp - (i32.lt_s - (local.get $$call1) - (i32.const 0) - ) - ) - (if - (local.get $$cmp) - (block - (i32.store - (local.get $$ret) - (i32.const -1) - ) - (local.set $$1 - (i32.const -1) - ) - ) - (block - (local.set $$$pre - (i32.load - (local.get $$ret) - ) - ) - (local.set $$1 - (local.get $$$pre) - ) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (local.get $$1) - ) - ) - (func $_fflush (; 35 ;) (param $$f i32) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$call i32) - (local $$call1 i32) - (local $$call1$18 i32) - (local $$call16 i32) - (local $$call22 i32) - (local $$call7 i32) - (local $$cmp i32) - (local $$cmp14 i32) - (local $$cmp20 i32) - (local $$cond10 i32) - (local $$cond19 i32) - (local $$f$addr$0 i32) - (local $$f$addr$0$19 i32) - (local $$f$addr$022 i32) - (local $$lock i32) - (local $$lock13 i32) - (local $$next i32) - (local $$or i32) - (local $$phitmp i32) - (local $$r$0$lcssa i32) - (local $$r$021 i32) - (local $$r$1 i32) - (local $$retval$0 i32) - (local $$tobool i32) - (local $$tobool11 i32) - (local $$tobool11$20 i32) - (local $$tobool24 i32) - (local $$tobool5 i32) - (local $$wbase i32) - (local $$wpos i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$tobool - (i32.eq - (local.get $$f) - (i32.const 0) - ) - ) - (block $do-once - (if - (local.get $$tobool) - (block - (local.set $$1 - (i32.load - (i32.const 12) - ) - ) - (local.set $$tobool5 - (i32.eq - (local.get $$1) - (i32.const 0) - ) - ) - (if - (local.get $$tobool5) - (local.set $$cond10 - (i32.const 0) - ) - (block - (local.set $$2 - (i32.load - (i32.const 12) - ) - ) - (local.set $$call7 - (call $_fflush - (local.get $$2) - ) - ) - (local.set $$cond10 - (local.get $$call7) - ) - ) - ) - (call $___lock - (i32.const 44) - ) - (local.set $$f$addr$0$19 - (i32.load - (i32.const 40) - ) - ) - (local.set $$tobool11$20 - (i32.eq - (local.get $$f$addr$0$19) - (i32.const 0) - ) - ) - (if - (local.get $$tobool11$20) - (local.set $$r$0$lcssa - (local.get $$cond10) - ) - (block - (local.set $$f$addr$022 - (local.get $$f$addr$0$19) - ) - (local.set $$r$021 - (local.get $$cond10) - ) - (loop $while-in - (block $while-out - (local.set $$lock13 - (i32.add - (local.get $$f$addr$022) - (i32.const 76) - ) - ) - (local.set $$3 - (i32.load - (local.get $$lock13) - ) - ) - (local.set $$cmp14 - (i32.gt_s - (local.get $$3) - (i32.const -1) - ) - ) - (if - (local.get $$cmp14) - (block - (local.set $$call16 - (call $___lockfile - (local.get $$f$addr$022) - ) - ) - (local.set $$cond19 - (local.get $$call16) - ) - ) - (local.set $$cond19 - (i32.const 0) - ) - ) - (local.set $$wpos - (i32.add - (local.get $$f$addr$022) - (i32.const 20) - ) - ) - (local.set $$4 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$wbase - (i32.add - (local.get $$f$addr$022) - (i32.const 28) - ) - ) - (local.set $$5 - (i32.load - (local.get $$wbase) - ) - ) - (local.set $$cmp20 - (i32.gt_u - (local.get $$4) - (local.get $$5) - ) - ) - (if - (local.get $$cmp20) - (block - (local.set $$call22 - (call $___fflush_unlocked - (local.get $$f$addr$022) - ) - ) - (local.set $$or - (i32.or - (local.get $$call22) - (local.get $$r$021) - ) - ) - (local.set $$r$1 - (local.get $$or) - ) - ) - (local.set $$r$1 - (local.get $$r$021) - ) - ) - (local.set $$tobool24 - (i32.eq - (local.get $$cond19) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool24) - ) - (call $___unlockfile - (local.get $$f$addr$022) - ) - ) - (local.set $$next - (i32.add - (local.get $$f$addr$022) - (i32.const 56) - ) - ) - (local.set $$f$addr$0 - (i32.load - (local.get $$next) - ) - ) - (local.set $$tobool11 - (i32.eq - (local.get $$f$addr$0) - (i32.const 0) - ) - ) - (if - (local.get $$tobool11) - (block - (local.set $$r$0$lcssa - (local.get $$r$1) - ) - (br $while-out) - ) - (block - (local.set $$f$addr$022 - (local.get $$f$addr$0) - ) - (local.set $$r$021 - (local.get $$r$1) - ) - ) - ) - (br $while-in) - ) - ) - ) - ) - (call $___unlock - (i32.const 44) - ) - (local.set $$retval$0 - (local.get $$r$0$lcssa) - ) - ) - (block - (local.set $$lock - (i32.add - (local.get $$f) - (i32.const 76) - ) - ) - (local.set $$0 - (i32.load - (local.get $$lock) - ) - ) - (local.set $$cmp - (i32.gt_s - (local.get $$0) - (i32.const -1) - ) - ) - (if - (i32.eqz - (local.get $$cmp) - ) - (block - (local.set $$call1$18 - (call $___fflush_unlocked - (local.get $$f) - ) - ) - (local.set $$retval$0 - (local.get $$call1$18) - ) - (br $do-once) - ) - ) - (local.set $$call - (call $___lockfile - (local.get $$f) - ) - ) - (local.set $$phitmp - (i32.eq - (local.get $$call) - (i32.const 0) - ) - ) - (local.set $$call1 - (call $___fflush_unlocked - (local.get $$f) - ) - ) - (if - (local.get $$phitmp) - (local.set $$retval$0 - (local.get $$call1) - ) - (block - (call $___unlockfile - (local.get $$f) - ) - (local.set $$retval$0 - (local.get $$call1) - ) - ) - ) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_printf (; 36 ;) (param $$fmt i32) (param $$varargs i32) (result i32) - (local $$0 i32) - (local $$ap i32) - (local $$call i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$ap - (local.get $sp) - ) - (i32.store - (local.get $$ap) - (local.get $$varargs) - ) - (local.set $$0 - (i32.load - (i32.const 8) - ) - ) - (local.set $$call - (call $_vfprintf - (local.get $$0) - (local.get $$fmt) - (local.get $$ap) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (local.get $$call) - ) - ) - (func $___lockfile (; 37 ;) (param $$f i32) (result i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (return - (i32.const 0) - ) - ) - (func $___unlockfile (; 38 ;) (param $$f i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (return) - ) - (func $___stdio_write (; 39 ;) (param $$f i32) (param $$buf i32) (param $$len i32) (result i32) - (local $$$pre i32) - (local $$0 i32) - (local $$1 i32) - (local $$10 i32) - (local $$11 i32) - (local $$12 i32) - (local $$13 i32) - (local $$14 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$7 i32) - (local $$8 i32) - (local $$9 i32) - (local $$add i32) - (local $$add$ptr i32) - (local $$add$ptr41 i32) - (local $$add$ptr46 i32) - (local $$buf31 i32) - (local $$buf_size i32) - (local $$call i32) - (local $$call10 i32) - (local $$call7 i32) - (local $$call9 i32) - (local $$cmp i32) - (local $$cmp17 i32) - (local $$cmp22 i32) - (local $$cmp29 i32) - (local $$cmp38 i32) - (local $$cnt$0 i32) - (local $$cnt$1 i32) - (local $$dec i32) - (local $$fd8 i32) - (local $$incdec$ptr i32) - (local $$iov$0 i32) - (local $$iov$0$lcssa57 i32) - (local $$iov$1 i32) - (local $$iov_base2 i32) - (local $$iov_len i32) - (local $$iov_len24 i32) - (local $$iov_len28 i32) - (local $$iov_len3 i32) - (local $$iov_len50 i32) - (local $$iov_len50$phi$trans$insert i32) - (local $$iovcnt$0 i32) - (local $$iovcnt$0$lcssa58 i32) - (local $$iovcnt$1 i32) - (local $$iovs i32) - (local $$or i32) - (local $$rem$0 i32) - (local $$retval$0 i32) - (local $$sub i32) - (local $$sub$ptr$sub i32) - (local $$sub26 i32) - (local $$sub36 i32) - (local $$sub51 i32) - (local $$tobool i32) - (local $$vararg_buffer i32) - (local $$vararg_buffer3 i32) - (local $$vararg_ptr1 i32) - (local $$vararg_ptr2 i32) - (local $$vararg_ptr6 i32) - (local $$vararg_ptr7 i32) - (local $$wbase i32) - (local $$wend i32) - (local $$wend19 i32) - (local $$wpos i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 48) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$vararg_buffer3 - (i32.add - (local.get $sp) - (i32.const 16) - ) - ) - (local.set $$vararg_buffer - (local.get $sp) - ) - (local.set $$iovs - (i32.add - (local.get $sp) - (i32.const 32) - ) - ) - (local.set $$wbase - (i32.add - (local.get $$f) - (i32.const 28) - ) - ) - (local.set $$0 - (i32.load - (local.get $$wbase) - ) - ) - (i32.store - (local.get $$iovs) - (local.get $$0) - ) - (local.set $$iov_len - (i32.add - (local.get $$iovs) - (i32.const 4) - ) - ) - (local.set $$wpos - (i32.add - (local.get $$f) - (i32.const 20) - ) - ) - (local.set $$1 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$sub$ptr$sub - (i32.sub - (local.get $$1) - (local.get $$0) - ) - ) - (i32.store - (local.get $$iov_len) - (local.get $$sub$ptr$sub) - ) - (local.set $$iov_base2 - (i32.add - (local.get $$iovs) - (i32.const 8) - ) - ) - (i32.store - (local.get $$iov_base2) - (local.get $$buf) - ) - (local.set $$iov_len3 - (i32.add - (local.get $$iovs) - (i32.const 12) - ) - ) - (i32.store - (local.get $$iov_len3) - (local.get $$len) - ) - (local.set $$add - (i32.add - (local.get $$sub$ptr$sub) - (local.get $$len) - ) - ) - (local.set $$fd8 - (i32.add - (local.get $$f) - (i32.const 60) - ) - ) - (local.set $$buf31 - (i32.add - (local.get $$f) - (i32.const 44) - ) - ) - (local.set $$iov$0 - (local.get $$iovs) - ) - (local.set $$iovcnt$0 - (i32.const 2) - ) - (local.set $$rem$0 - (local.get $$add) - ) - (loop $while-in - (block $while-out - (local.set $$2 - (i32.load - (i32.const 16) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$2) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (block - (local.set $$4 - (i32.load - (local.get $$fd8) - ) - ) - (i32.store - (local.get $$vararg_buffer3) - (local.get $$4) - ) - (local.set $$vararg_ptr6 - (i32.add - (local.get $$vararg_buffer3) - (i32.const 4) - ) - ) - (i32.store - (local.get $$vararg_ptr6) - (local.get $$iov$0) - ) - (local.set $$vararg_ptr7 - (i32.add - (local.get $$vararg_buffer3) - (i32.const 8) - ) - ) - (i32.store - (local.get $$vararg_ptr7) - (local.get $$iovcnt$0) - ) - (local.set $$call9 - (call $___syscall146 - (i32.const 146) - (local.get $$vararg_buffer3) - ) - ) - (local.set $$call10 - (call $___syscall_ret - (local.get $$call9) - ) - ) - (local.set $$cnt$0 - (local.get $$call10) - ) - ) - (block - (call $_pthread_cleanup_push - (i32.const 5) - (local.get $$f) - ) - (local.set $$3 - (i32.load - (local.get $$fd8) - ) - ) - (i32.store - (local.get $$vararg_buffer) - (local.get $$3) - ) - (local.set $$vararg_ptr1 - (i32.add - (local.get $$vararg_buffer) - (i32.const 4) - ) - ) - (i32.store - (local.get $$vararg_ptr1) - (local.get $$iov$0) - ) - (local.set $$vararg_ptr2 - (i32.add - (local.get $$vararg_buffer) - (i32.const 8) - ) - ) - (i32.store - (local.get $$vararg_ptr2) - (local.get $$iovcnt$0) - ) - (local.set $$call - (call $___syscall146 - (i32.const 146) - (local.get $$vararg_buffer) - ) - ) - (local.set $$call7 - (call $___syscall_ret - (local.get $$call) - ) - ) - (call $_pthread_cleanup_pop - (i32.const 0) - ) - (local.set $$cnt$0 - (local.get $$call7) - ) - ) - ) - (local.set $$cmp - (i32.eq - (local.get $$rem$0) - (local.get $$cnt$0) - ) - ) - (if - (local.get $$cmp) - (block - (local.set $label - (i32.const 6) - ) - (br $while-out) - ) - ) - (local.set $$cmp17 - (i32.lt_s - (local.get $$cnt$0) - (i32.const 0) - ) - ) - (if - (local.get $$cmp17) - (block - (local.set $$iov$0$lcssa57 - (local.get $$iov$0) - ) - (local.set $$iovcnt$0$lcssa58 - (local.get $$iovcnt$0) - ) - (local.set $label - (i32.const 8) - ) - (br $while-out) - ) - ) - (local.set $$sub26 - (i32.sub - (local.get $$rem$0) - (local.get $$cnt$0) - ) - ) - (local.set $$iov_len28 - (i32.add - (local.get $$iov$0) - (i32.const 4) - ) - ) - (local.set $$10 - (i32.load - (local.get $$iov_len28) - ) - ) - (local.set $$cmp29 - (i32.gt_u - (local.get $$cnt$0) - (local.get $$10) - ) - ) - (if - (local.get $$cmp29) - (block - (local.set $$11 - (i32.load - (local.get $$buf31) - ) - ) - (i32.store - (local.get $$wbase) - (local.get $$11) - ) - (i32.store - (local.get $$wpos) - (local.get $$11) - ) - (local.set $$sub36 - (i32.sub - (local.get $$cnt$0) - (local.get $$10) - ) - ) - (local.set $$incdec$ptr - (i32.add - (local.get $$iov$0) - (i32.const 8) - ) - ) - (local.set $$dec - (i32.add - (local.get $$iovcnt$0) - (i32.const -1) - ) - ) - (local.set $$iov_len50$phi$trans$insert - (i32.add - (local.get $$iov$0) - (i32.const 12) - ) - ) - (local.set $$$pre - (i32.load - (local.get $$iov_len50$phi$trans$insert) - ) - ) - (local.set $$14 - (local.get $$$pre) - ) - (local.set $$cnt$1 - (local.get $$sub36) - ) - (local.set $$iov$1 - (local.get $$incdec$ptr) - ) - (local.set $$iovcnt$1 - (local.get $$dec) - ) - ) - (block - (local.set $$cmp38 - (i32.eq - (local.get $$iovcnt$0) - (i32.const 2) - ) - ) - (if - (local.get $$cmp38) - (block - (local.set $$12 - (i32.load - (local.get $$wbase) - ) - ) - (local.set $$add$ptr41 - (i32.add - (local.get $$12) - (local.get $$cnt$0) - ) - ) - (i32.store - (local.get $$wbase) - (local.get $$add$ptr41) - ) - (local.set $$14 - (local.get $$10) - ) - (local.set $$cnt$1 - (local.get $$cnt$0) - ) - (local.set $$iov$1 - (local.get $$iov$0) - ) - (local.set $$iovcnt$1 - (i32.const 2) - ) - ) - (block - (local.set $$14 - (local.get $$10) - ) - (local.set $$cnt$1 - (local.get $$cnt$0) - ) - (local.set $$iov$1 - (local.get $$iov$0) - ) - (local.set $$iovcnt$1 - (local.get $$iovcnt$0) - ) - ) - ) - ) - ) - (local.set $$13 - (i32.load - (local.get $$iov$1) - ) - ) - (local.set $$add$ptr46 - (i32.add - (local.get $$13) - (local.get $$cnt$1) - ) - ) - (i32.store - (local.get $$iov$1) - (local.get $$add$ptr46) - ) - (local.set $$iov_len50 - (i32.add - (local.get $$iov$1) - (i32.const 4) - ) - ) - (local.set $$sub51 - (i32.sub - (local.get $$14) - (local.get $$cnt$1) - ) - ) - (i32.store - (local.get $$iov_len50) - (local.get $$sub51) - ) - (local.set $$iov$0 - (local.get $$iov$1) - ) - (local.set $$iovcnt$0 - (local.get $$iovcnt$1) - ) - (local.set $$rem$0 - (local.get $$sub26) - ) - (br $while-in) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 6) - ) - (block - (local.set $$5 - (i32.load - (local.get $$buf31) - ) - ) - (local.set $$buf_size - (i32.add - (local.get $$f) - (i32.const 48) - ) - ) - (local.set $$6 - (i32.load - (local.get $$buf_size) - ) - ) - (local.set $$add$ptr - (i32.add - (local.get $$5) - (local.get $$6) - ) - ) - (local.set $$wend - (i32.add - (local.get $$f) - (i32.const 16) - ) - ) - (i32.store - (local.get $$wend) - (local.get $$add$ptr) - ) - (local.set $$7 - (local.get $$5) - ) - (i32.store - (local.get $$wbase) - (local.get $$7) - ) - (i32.store - (local.get $$wpos) - (local.get $$7) - ) - (local.set $$retval$0 - (local.get $$len) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 8) - ) - (block - (local.set $$wend19 - (i32.add - (local.get $$f) - (i32.const 16) - ) - ) - (i32.store - (local.get $$wend19) - (i32.const 0) - ) - (i32.store - (local.get $$wbase) - (i32.const 0) - ) - (i32.store - (local.get $$wpos) - (i32.const 0) - ) - (local.set $$8 - (i32.load - (local.get $$f) - ) - ) - (local.set $$or - (i32.or - (local.get $$8) - (i32.const 32) - ) - ) - (i32.store - (local.get $$f) - (local.get $$or) - ) - (local.set $$cmp22 - (i32.eq - (local.get $$iovcnt$0$lcssa58) - (i32.const 2) - ) - ) - (if - (local.get $$cmp22) - (local.set $$retval$0 - (i32.const 0) - ) - (block - (local.set $$iov_len24 - (i32.add - (local.get $$iov$0$lcssa57) - (i32.const 4) - ) - ) - (local.set $$9 - (i32.load - (local.get $$iov_len24) - ) - ) - (local.set $$sub - (i32.sub - (local.get $$len) - (local.get $$9) - ) - ) - (local.set $$retval$0 - (local.get $$sub) - ) - ) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_vfprintf (; 40 ;) (param $$f i32) (param $$fmt i32) (param $$ap i32) (result i32) - (local $$$call21 i32) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$7 i32) - (local $$add$ptr i32) - (local $$and i32) - (local $$and11 i32) - (local $$and36 i32) - (local $$ap2 i32) - (local $$buf i32) - (local $$buf_size i32) - (local $$call i32) - (local $$call21 i32) - (local $$call21$30 i32) - (local $$call6 i32) - (local $$cmp i32) - (local $$cmp5 i32) - (local $$cmp7 i32) - (local $$cond i32) - (local $$internal_buf i32) - (local $$lock i32) - (local $$mode i32) - (local $$nl_arg i32) - (local $$nl_type i32) - (local $$or i32) - (local $$ret$1 i32) - (local $$ret$1$ i32) - (local $$retval$0 i32) - (local $$tobool i32) - (local $$tobool22 i32) - (local $$tobool26 i32) - (local $$tobool37 i32) - (local $$tobool41 i32) - (local $$vacopy_currentptr i32) - (local $$wbase i32) - (local $$wend i32) - (local $$wpos i32) - (local $$write i32) - (local $dest i32) - (local $label i32) - (local $sp i32) - (local $stop i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 224) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$ap2 - (i32.add - (local.get $sp) - (i32.const 120) - ) - ) - (local.set $$nl_type - (i32.add - (local.get $sp) - (i32.const 80) - ) - ) - (local.set $$nl_arg - (local.get $sp) - ) - (local.set $$internal_buf - (i32.add - (local.get $sp) - (i32.const 136) - ) - ) - (local.set $dest - (local.get $$nl_type) - ) - (local.set $stop - (i32.add - (local.get $dest) - (i32.const 40) - ) - ) - (loop $do-in - (block $do-out - (i32.store - (local.get $dest) - (i32.const 0) - ) - (local.set $dest - (i32.add - (local.get $dest) - (i32.const 4) - ) - ) - (br_if $do-in - (i32.lt_s - (local.get $dest) - (local.get $stop) - ) - ) - ) - ) - (local.set $$vacopy_currentptr - (i32.load - (local.get $$ap) - ) - ) - (i32.store - (local.get $$ap2) - (local.get $$vacopy_currentptr) - ) - (local.set $$call - (call $_printf_core - (i32.const 0) - (local.get $$fmt) - (local.get $$ap2) - (local.get $$nl_arg) - (local.get $$nl_type) - ) - ) - (local.set $$cmp - (i32.lt_s - (local.get $$call) - (i32.const 0) - ) - ) - (if - (local.get $$cmp) - (local.set $$retval$0 - (i32.const -1) - ) - (block - (local.set $$lock - (i32.add - (local.get $$f) - (i32.const 76) - ) - ) - (local.set $$0 - (i32.load - (local.get $$lock) - ) - ) - (local.set $$cmp5 - (i32.gt_s - (local.get $$0) - (i32.const -1) - ) - ) - (if - (local.get $$cmp5) - (block - (local.set $$call6 - (call $___lockfile - (local.get $$f) - ) - ) - (local.set $$cond - (local.get $$call6) - ) - ) - (local.set $$cond - (i32.const 0) - ) - ) - (local.set $$1 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and - (i32.and - (local.get $$1) - (i32.const 32) - ) - ) - (local.set $$mode - (i32.add - (local.get $$f) - (i32.const 74) - ) - ) - (local.set $$2 - (i32.load8_s - (local.get $$mode) - ) - ) - (local.set $$cmp7 - (i32.lt_s - (i32.shr_s - (i32.shl - (local.get $$2) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 1) - ) - ) - (if - (local.get $$cmp7) - (block - (local.set $$and11 - (i32.and - (local.get $$1) - (i32.const -33) - ) - ) - (i32.store - (local.get $$f) - (local.get $$and11) - ) - ) - ) - (local.set $$buf_size - (i32.add - (local.get $$f) - (i32.const 48) - ) - ) - (local.set $$3 - (i32.load - (local.get $$buf_size) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$3) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (block - (local.set $$buf - (i32.add - (local.get $$f) - (i32.const 44) - ) - ) - (local.set $$4 - (i32.load - (local.get $$buf) - ) - ) - (i32.store - (local.get $$buf) - (local.get $$internal_buf) - ) - (local.set $$wbase - (i32.add - (local.get $$f) - (i32.const 28) - ) - ) - (i32.store - (local.get $$wbase) - (local.get $$internal_buf) - ) - (local.set $$wpos - (i32.add - (local.get $$f) - (i32.const 20) - ) - ) - (i32.store - (local.get $$wpos) - (local.get $$internal_buf) - ) - (i32.store - (local.get $$buf_size) - (i32.const 80) - ) - (local.set $$add$ptr - (i32.add - (local.get $$internal_buf) - (i32.const 80) - ) - ) - (local.set $$wend - (i32.add - (local.get $$f) - (i32.const 16) - ) - ) - (i32.store - (local.get $$wend) - (local.get $$add$ptr) - ) - (local.set $$call21 - (call $_printf_core - (local.get $$f) - (local.get $$fmt) - (local.get $$ap2) - (local.get $$nl_arg) - (local.get $$nl_type) - ) - ) - (local.set $$tobool22 - (i32.eq - (local.get $$4) - (i32.const 0) - ) - ) - (if - (local.get $$tobool22) - (local.set $$ret$1 - (local.get $$call21) - ) - (block - (local.set $$write - (i32.add - (local.get $$f) - (i32.const 36) - ) - ) - (local.set $$5 - (i32.load - (local.get $$write) - ) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $$f) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (local.get $$5) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (local.set $$6 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$tobool26 - (i32.eq - (local.get $$6) - (i32.const 0) - ) - ) - (local.set $$$call21 - (if (result i32) - (local.get $$tobool26) - (i32.const -1) - (local.get $$call21) - ) - ) - (i32.store - (local.get $$buf) - (local.get $$4) - ) - (i32.store - (local.get $$buf_size) - (i32.const 0) - ) - (i32.store - (local.get $$wend) - (i32.const 0) - ) - (i32.store - (local.get $$wbase) - (i32.const 0) - ) - (i32.store - (local.get $$wpos) - (i32.const 0) - ) - (local.set $$ret$1 - (local.get $$$call21) - ) - ) - ) - ) - (block - (local.set $$call21$30 - (call $_printf_core - (local.get $$f) - (local.get $$fmt) - (local.get $$ap2) - (local.get $$nl_arg) - (local.get $$nl_type) - ) - ) - (local.set $$ret$1 - (local.get $$call21$30) - ) - ) - ) - (local.set $$7 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and36 - (i32.and - (local.get $$7) - (i32.const 32) - ) - ) - (local.set $$tobool37 - (i32.eq - (local.get $$and36) - (i32.const 0) - ) - ) - (local.set $$ret$1$ - (if (result i32) - (local.get $$tobool37) - (local.get $$ret$1) - (i32.const -1) - ) - ) - (local.set $$or - (i32.or - (local.get $$7) - (local.get $$and) - ) - ) - (i32.store - (local.get $$f) - (local.get $$or) - ) - (local.set $$tobool41 - (i32.eq - (local.get $$cond) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool41) - ) - (call $___unlockfile - (local.get $$f) - ) - ) - (local.set $$retval$0 - (local.get $$ret$1$) - ) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (local.get $$retval$0) - ) - ) - (func $___fwritex (; 41 ;) (param $$s i32) (param $$l i32) (param $$f i32) (result i32) - (local $$$pre i32) - (local $$$pre31 i32) - (local $$0 i32) - (local $$1 i32) - (local $$10 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$7 i32) - (local $$8 i32) - (local $$9 i32) - (local $$add i32) - (local $$add$ptr i32) - (local $$add$ptr26 i32) - (local $$arrayidx i32) - (local $$call i32) - (local $$call16 i32) - (local $$call4 i32) - (local $$cmp i32) - (local $$cmp11 i32) - (local $$cmp17 i32) - (local $$cmp6 i32) - (local $$i$0 i32) - (local $$i$0$lcssa36 i32) - (local $$i$1 i32) - (local $$l$addr$0 i32) - (local $$lbf i32) - (local $$retval$0 i32) - (local $$s$addr$0 i32) - (local $$sub i32) - (local $$sub$ptr$sub i32) - (local $$sub21 i32) - (local $$tobool i32) - (local $$tobool1 i32) - (local $$tobool9 i32) - (local $$wend i32) - (local $$wpos i32) - (local $$write i32) - (local $$write15 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$wend - (i32.add - (local.get $$f) - (i32.const 16) - ) - ) - (local.set $$0 - (i32.load - (local.get $$wend) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$0) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (block - (local.set $$call - (call $___towrite - (local.get $$f) - ) - ) - (local.set $$tobool1 - (i32.eq - (local.get $$call) - (i32.const 0) - ) - ) - (if - (local.get $$tobool1) - (block - (local.set $$$pre - (i32.load - (local.get $$wend) - ) - ) - (local.set $$3 - (local.get $$$pre) - ) - (local.set $label - (i32.const 5) - ) - ) - (local.set $$retval$0 - (i32.const 0) - ) - ) - ) - (block - (local.set $$1 - (local.get $$0) - ) - (local.set $$3 - (local.get $$1) - ) - (local.set $label - (i32.const 5) - ) - ) - ) - (block $label$break$L5 - (if - (i32.eq - (local.get $label) - (i32.const 5) - ) - (block - (local.set $$wpos - (i32.add - (local.get $$f) - (i32.const 20) - ) - ) - (local.set $$2 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$sub$ptr$sub - (i32.sub - (local.get $$3) - (local.get $$2) - ) - ) - (local.set $$cmp - (i32.lt_u - (local.get $$sub$ptr$sub) - (local.get $$l) - ) - ) - (local.set $$4 - (local.get $$2) - ) - (if - (local.get $$cmp) - (block - (local.set $$write - (i32.add - (local.get $$f) - (i32.const 36) - ) - ) - (local.set $$5 - (i32.load - (local.get $$write) - ) - ) - (local.set $$call4 - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $$f) - (local.get $$s) - (local.get $$l) - (i32.add - (i32.and - (local.get $$5) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (local.set $$retval$0 - (local.get $$call4) - ) - (br $label$break$L5) - ) - ) - (local.set $$lbf - (i32.add - (local.get $$f) - (i32.const 75) - ) - ) - (local.set $$6 - (i32.load8_s - (local.get $$lbf) - ) - ) - (local.set $$cmp6 - (i32.gt_s - (i32.shr_s - (i32.shl - (local.get $$6) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -1) - ) - ) - (block $label$break$L10 - (if - (local.get $$cmp6) - (block - (local.set $$i$0 - (local.get $$l) - ) - (loop $while-in - (block $while-out - (local.set $$tobool9 - (i32.eq - (local.get $$i$0) - (i32.const 0) - ) - ) - (if - (local.get $$tobool9) - (block - (local.set $$9 - (local.get $$4) - ) - (local.set $$i$1 - (i32.const 0) - ) - (local.set $$l$addr$0 - (local.get $$l) - ) - (local.set $$s$addr$0 - (local.get $$s) - ) - (br $label$break$L10) - ) - ) - (local.set $$sub - (i32.add - (local.get $$i$0) - (i32.const -1) - ) - ) - (local.set $$arrayidx - (i32.add - (local.get $$s) - (local.get $$sub) - ) - ) - (local.set $$7 - (i32.load8_s - (local.get $$arrayidx) - ) - ) - (local.set $$cmp11 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$7) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 10) - ) - ) - (if - (local.get $$cmp11) - (block - (local.set $$i$0$lcssa36 - (local.get $$i$0) - ) - (br $while-out) - ) - (local.set $$i$0 - (local.get $$sub) - ) - ) - (br $while-in) - ) - ) - (local.set $$write15 - (i32.add - (local.get $$f) - (i32.const 36) - ) - ) - (local.set $$8 - (i32.load - (local.get $$write15) - ) - ) - (local.set $$call16 - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $$f) - (local.get $$s) - (local.get $$i$0$lcssa36) - (i32.add - (i32.and - (local.get $$8) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (local.set $$cmp17 - (i32.lt_u - (local.get $$call16) - (local.get $$i$0$lcssa36) - ) - ) - (if - (local.get $$cmp17) - (block - (local.set $$retval$0 - (local.get $$i$0$lcssa36) - ) - (br $label$break$L5) - ) - ) - (local.set $$add$ptr - (i32.add - (local.get $$s) - (local.get $$i$0$lcssa36) - ) - ) - (local.set $$sub21 - (i32.sub - (local.get $$l) - (local.get $$i$0$lcssa36) - ) - ) - (local.set $$$pre31 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$9 - (local.get $$$pre31) - ) - (local.set $$i$1 - (local.get $$i$0$lcssa36) - ) - (local.set $$l$addr$0 - (local.get $$sub21) - ) - (local.set $$s$addr$0 - (local.get $$add$ptr) - ) - ) - (block - (local.set $$9 - (local.get $$4) - ) - (local.set $$i$1 - (i32.const 0) - ) - (local.set $$l$addr$0 - (local.get $$l) - ) - (local.set $$s$addr$0 - (local.get $$s) - ) - ) - ) - ) - (drop - (call $_memcpy - (local.get $$9) - (local.get $$s$addr$0) - (local.get $$l$addr$0) - ) - ) - (local.set $$10 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$add$ptr26 - (i32.add - (local.get $$10) - (local.get $$l$addr$0) - ) - ) - (i32.store - (local.get $$wpos) - (local.get $$add$ptr26) - ) - (local.set $$add - (i32.add - (local.get $$i$1) - (local.get $$l$addr$0) - ) - ) - (local.set $$retval$0 - (local.get $$add) - ) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $___towrite (; 42 ;) (param $$f i32) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$add$ptr i32) - (local $$and i32) - (local $$buf i32) - (local $$buf_size i32) - (local $$conv i32) - (local $$conv3 i32) - (local $$mode i32) - (local $$or i32) - (local $$or5 i32) - (local $$rend i32) - (local $$retval$0 i32) - (local $$rpos i32) - (local $$sub i32) - (local $$tobool i32) - (local $$wbase i32) - (local $$wend i32) - (local $$wpos i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$mode - (i32.add - (local.get $$f) - (i32.const 74) - ) - ) - (local.set $$0 - (i32.load8_s - (local.get $$mode) - ) - ) - (local.set $$conv - (i32.shr_s - (i32.shl - (local.get $$0) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$sub - (i32.add - (local.get $$conv) - (i32.const 255) - ) - ) - (local.set $$or - (i32.or - (local.get $$sub) - (local.get $$conv) - ) - ) - (local.set $$conv3 - (i32.and - (local.get $$or) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $$mode) - (local.get $$conv3) - ) - (local.set $$1 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and - (i32.and - (local.get $$1) - (i32.const 8) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$and) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (block - (local.set $$rend - (i32.add - (local.get $$f) - (i32.const 8) - ) - ) - (i32.store - (local.get $$rend) - (i32.const 0) - ) - (local.set $$rpos - (i32.add - (local.get $$f) - (i32.const 4) - ) - ) - (i32.store - (local.get $$rpos) - (i32.const 0) - ) - (local.set $$buf - (i32.add - (local.get $$f) - (i32.const 44) - ) - ) - (local.set $$2 - (i32.load - (local.get $$buf) - ) - ) - (local.set $$wbase - (i32.add - (local.get $$f) - (i32.const 28) - ) - ) - (i32.store - (local.get $$wbase) - (local.get $$2) - ) - (local.set $$wpos - (i32.add - (local.get $$f) - (i32.const 20) - ) - ) - (i32.store - (local.get $$wpos) - (local.get $$2) - ) - (local.set $$3 - (local.get $$2) - ) - (local.set $$buf_size - (i32.add - (local.get $$f) - (i32.const 48) - ) - ) - (local.set $$4 - (i32.load - (local.get $$buf_size) - ) - ) - (local.set $$add$ptr - (i32.add - (local.get $$3) - (local.get $$4) - ) - ) - (local.set $$wend - (i32.add - (local.get $$f) - (i32.const 16) - ) - ) - (i32.store - (local.get $$wend) - (local.get $$add$ptr) - ) - (local.set $$retval$0 - (i32.const 0) - ) - ) - (block - (local.set $$or5 - (i32.or - (local.get $$1) - (i32.const 32) - ) - ) - (i32.store - (local.get $$f) - (local.get $$or5) - ) - (local.set $$retval$0 - (i32.const -1) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_wcrtomb (; 43 ;) (param $$s i32) (param $$wc i32) (param $$st i32) (result i32) - (local $$0 i32) - (local $$and i32) - (local $$and19 i32) - (local $$and23 i32) - (local $$and36 i32) - (local $$and41 i32) - (local $$and45 i32) - (local $$call i32) - (local $$cmp i32) - (local $$cmp11 i32) - (local $$cmp2 i32) - (local $$cmp28 i32) - (local $$cmp9 i32) - (local $$conv i32) - (local $$conv16 i32) - (local $$conv21 i32) - (local $$conv25 i32) - (local $$conv33 i32) - (local $$conv38 i32) - (local $$conv43 i32) - (local $$conv47 i32) - (local $$conv5 i32) - (local $$conv7 i32) - (local $$incdec$ptr i32) - (local $$incdec$ptr17 i32) - (local $$incdec$ptr22 i32) - (local $$incdec$ptr34 i32) - (local $$incdec$ptr39 i32) - (local $$incdec$ptr44 i32) - (local $$or i32) - (local $$or$cond i32) - (local $$or15 i32) - (local $$or20 i32) - (local $$or24 i32) - (local $$or32 i32) - (local $$or37 i32) - (local $$or42 i32) - (local $$or46 i32) - (local $$or6 i32) - (local $$retval$0 i32) - (local $$shr$28 i32) - (local $$shr14$26 i32) - (local $$shr18$27 i32) - (local $$shr31$23 i32) - (local $$shr35$24 i32) - (local $$shr40$25 i32) - (local $$sub27 i32) - (local $$tobool i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$tobool - (i32.eq - (local.get $$s) - (i32.const 0) - ) - ) - (block $do-once - (if - (local.get $$tobool) - (local.set $$retval$0 - (i32.const 1) - ) - (block - (local.set $$cmp - (i32.lt_u - (local.get $$wc) - (i32.const 128) - ) - ) - (if - (local.get $$cmp) - (block - (local.set $$conv - (i32.and - (local.get $$wc) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $$s) - (local.get $$conv) - ) - (local.set $$retval$0 - (i32.const 1) - ) - (br $do-once) - ) - ) - (local.set $$cmp2 - (i32.lt_u - (local.get $$wc) - (i32.const 2048) - ) - ) - (if - (local.get $$cmp2) - (block - (local.set $$shr$28 - (i32.shr_u - (local.get $$wc) - (i32.const 6) - ) - ) - (local.set $$or - (i32.or - (local.get $$shr$28) - (i32.const 192) - ) - ) - (local.set $$conv5 - (i32.and - (local.get $$or) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr - (i32.add - (local.get $$s) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $$s) - (local.get $$conv5) - ) - (local.set $$and - (i32.and - (local.get $$wc) - (i32.const 63) - ) - ) - (local.set $$or6 - (i32.or - (local.get $$and) - (i32.const 128) - ) - ) - (local.set $$conv7 - (i32.and - (local.get $$or6) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $$incdec$ptr) - (local.get $$conv7) - ) - (local.set $$retval$0 - (i32.const 2) - ) - (br $do-once) - ) - ) - (local.set $$cmp9 - (i32.lt_u - (local.get $$wc) - (i32.const 55296) - ) - ) - (local.set $$0 - (i32.and - (local.get $$wc) - (i32.const -8192) - ) - ) - (local.set $$cmp11 - (i32.eq - (local.get $$0) - (i32.const 57344) - ) - ) - (local.set $$or$cond - (i32.or - (local.get $$cmp9) - (local.get $$cmp11) - ) - ) - (if - (local.get $$or$cond) - (block - (local.set $$shr14$26 - (i32.shr_u - (local.get $$wc) - (i32.const 12) - ) - ) - (local.set $$or15 - (i32.or - (local.get $$shr14$26) - (i32.const 224) - ) - ) - (local.set $$conv16 - (i32.and - (local.get $$or15) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr17 - (i32.add - (local.get $$s) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $$s) - (local.get $$conv16) - ) - (local.set $$shr18$27 - (i32.shr_u - (local.get $$wc) - (i32.const 6) - ) - ) - (local.set $$and19 - (i32.and - (local.get $$shr18$27) - (i32.const 63) - ) - ) - (local.set $$or20 - (i32.or - (local.get $$and19) - (i32.const 128) - ) - ) - (local.set $$conv21 - (i32.and - (local.get $$or20) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr22 - (i32.add - (local.get $$s) - (i32.const 2) - ) - ) - (i32.store8 - (local.get $$incdec$ptr17) - (local.get $$conv21) - ) - (local.set $$and23 - (i32.and - (local.get $$wc) - (i32.const 63) - ) - ) - (local.set $$or24 - (i32.or - (local.get $$and23) - (i32.const 128) - ) - ) - (local.set $$conv25 - (i32.and - (local.get $$or24) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $$incdec$ptr22) - (local.get $$conv25) - ) - (local.set $$retval$0 - (i32.const 3) - ) - (br $do-once) - ) - ) - (local.set $$sub27 - (i32.add - (local.get $$wc) - (i32.const -65536) - ) - ) - (local.set $$cmp28 - (i32.lt_u - (local.get $$sub27) - (i32.const 1048576) - ) - ) - (if - (local.get $$cmp28) - (block - (local.set $$shr31$23 - (i32.shr_u - (local.get $$wc) - (i32.const 18) - ) - ) - (local.set $$or32 - (i32.or - (local.get $$shr31$23) - (i32.const 240) - ) - ) - (local.set $$conv33 - (i32.and - (local.get $$or32) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr34 - (i32.add - (local.get $$s) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $$s) - (local.get $$conv33) - ) - (local.set $$shr35$24 - (i32.shr_u - (local.get $$wc) - (i32.const 12) - ) - ) - (local.set $$and36 - (i32.and - (local.get $$shr35$24) - (i32.const 63) - ) - ) - (local.set $$or37 - (i32.or - (local.get $$and36) - (i32.const 128) - ) - ) - (local.set $$conv38 - (i32.and - (local.get $$or37) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr39 - (i32.add - (local.get $$s) - (i32.const 2) - ) - ) - (i32.store8 - (local.get $$incdec$ptr34) - (local.get $$conv38) - ) - (local.set $$shr40$25 - (i32.shr_u - (local.get $$wc) - (i32.const 6) - ) - ) - (local.set $$and41 - (i32.and - (local.get $$shr40$25) - (i32.const 63) - ) - ) - (local.set $$or42 - (i32.or - (local.get $$and41) - (i32.const 128) - ) - ) - (local.set $$conv43 - (i32.and - (local.get $$or42) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr44 - (i32.add - (local.get $$s) - (i32.const 3) - ) - ) - (i32.store8 - (local.get $$incdec$ptr39) - (local.get $$conv43) - ) - (local.set $$and45 - (i32.and - (local.get $$wc) - (i32.const 63) - ) - ) - (local.set $$or46 - (i32.or - (local.get $$and45) - (i32.const 128) - ) - ) - (local.set $$conv47 - (i32.and - (local.get $$or46) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $$incdec$ptr44) - (local.get $$conv47) - ) - (local.set $$retval$0 - (i32.const 4) - ) - (br $do-once) - ) - (block - (local.set $$call - (call $___errno_location) - ) - (i32.store - (local.get $$call) - (i32.const 84) - ) - (local.set $$retval$0 - (i32.const -1) - ) - (br $do-once) - ) - ) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_wctomb (; 44 ;) (param $$s i32) (param $$wc i32) (result i32) - (local $$call i32) - (local $$retval$0 i32) - (local $$tobool i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$tobool - (i32.eq - (local.get $$s) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (local.set $$retval$0 - (i32.const 0) - ) - (block - (local.set $$call - (call $_wcrtomb - (local.get $$s) - (local.get $$wc) - (i32.const 0) - ) - ) - (local.set $$retval$0 - (local.get $$call) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_memchr (; 45 ;) (param $$src i32) (param $$c i32) (param $$n i32) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$7 i32) - (local $$and i32) - (local $$and$39 i32) - (local $$and15 i32) - (local $$and16 i32) - (local $$cmp i32) - (local $$cmp11 i32) - (local $$cmp11$32 i32) - (local $$cmp28 i32) - (local $$cmp8 i32) - (local $$cond i32) - (local $$conv1 i32) - (local $$dec i32) - (local $$dec34 i32) - (local $$incdec$ptr i32) - (local $$incdec$ptr21 i32) - (local $$incdec$ptr33 i32) - (local $$lnot i32) - (local $$mul i32) - (local $$n$addr$0$lcssa i32) - (local $$n$addr$0$lcssa61 i32) - (local $$n$addr$043 i32) - (local $$n$addr$1$lcssa i32) - (local $$n$addr$133 i32) - (local $$n$addr$133$lcssa i32) - (local $$n$addr$227 i32) - (local $$n$addr$3 i32) - (local $$neg i32) - (local $$or$cond i32) - (local $$or$cond$42 i32) - (local $$s$0$lcssa i32) - (local $$s$0$lcssa60 i32) - (local $$s$044 i32) - (local $$s$128 i32) - (local $$s$2 i32) - (local $$sub i32) - (local $$sub22 i32) - (local $$tobool i32) - (local $$tobool$40 i32) - (local $$tobool2 i32) - (local $$tobool2$41 i32) - (local $$tobool2$lcssa i32) - (local $$tobool25 i32) - (local $$tobool25$26 i32) - (local $$tobool36 i32) - (local $$w$0$lcssa i32) - (local $$w$034 i32) - (local $$w$034$lcssa i32) - (local $$xor i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$conv1 - (i32.and - (local.get $$c) - (i32.const 255) - ) - ) - (local.set $$0 - (local.get $$src) - ) - (local.set $$and$39 - (i32.and - (local.get $$0) - (i32.const 3) - ) - ) - (local.set $$tobool$40 - (i32.ne - (local.get $$and$39) - (i32.const 0) - ) - ) - (local.set $$tobool2$41 - (i32.ne - (local.get $$n) - (i32.const 0) - ) - ) - (local.set $$or$cond$42 - (i32.and - (local.get $$tobool2$41) - (local.get $$tobool$40) - ) - ) - (block $label$break$L1 - (if - (local.get $$or$cond$42) - (block - (local.set $$1 - (i32.and - (local.get $$c) - (i32.const 255) - ) - ) - (local.set $$n$addr$043 - (local.get $$n) - ) - (local.set $$s$044 - (local.get $$src) - ) - (loop $while-in - (block $while-out - (local.set $$2 - (i32.load8_s - (local.get $$s$044) - ) - ) - (local.set $$cmp - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$2) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.shr_s - (i32.shl - (local.get $$1) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (if - (local.get $$cmp) - (block - (local.set $$n$addr$0$lcssa61 - (local.get $$n$addr$043) - ) - (local.set $$s$0$lcssa60 - (local.get $$s$044) - ) - (local.set $label - (i32.const 6) - ) - (br $label$break$L1) - ) - ) - (local.set $$incdec$ptr - (i32.add - (local.get $$s$044) - (i32.const 1) - ) - ) - (local.set $$dec - (i32.add - (local.get $$n$addr$043) - (i32.const -1) - ) - ) - (local.set $$3 - (local.get $$incdec$ptr) - ) - (local.set $$and - (i32.and - (local.get $$3) - (i32.const 3) - ) - ) - (local.set $$tobool - (i32.ne - (local.get $$and) - (i32.const 0) - ) - ) - (local.set $$tobool2 - (i32.ne - (local.get $$dec) - (i32.const 0) - ) - ) - (local.set $$or$cond - (i32.and - (local.get $$tobool2) - (local.get $$tobool) - ) - ) - (if - (local.get $$or$cond) - (block - (local.set $$n$addr$043 - (local.get $$dec) - ) - (local.set $$s$044 - (local.get $$incdec$ptr) - ) - ) - (block - (local.set $$n$addr$0$lcssa - (local.get $$dec) - ) - (local.set $$s$0$lcssa - (local.get $$incdec$ptr) - ) - (local.set $$tobool2$lcssa - (local.get $$tobool2) - ) - (local.set $label - (i32.const 5) - ) - (br $while-out) - ) - ) - (br $while-in) - ) - ) - ) - (block - (local.set $$n$addr$0$lcssa - (local.get $$n) - ) - (local.set $$s$0$lcssa - (local.get $$src) - ) - (local.set $$tobool2$lcssa - (local.get $$tobool2$41) - ) - (local.set $label - (i32.const 5) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 5) - ) - (if - (local.get $$tobool2$lcssa) - (block - (local.set $$n$addr$0$lcssa61 - (local.get $$n$addr$0$lcssa) - ) - (local.set $$s$0$lcssa60 - (local.get $$s$0$lcssa) - ) - (local.set $label - (i32.const 6) - ) - ) - (block - (local.set $$n$addr$3 - (i32.const 0) - ) - (local.set $$s$2 - (local.get $$s$0$lcssa) - ) - ) - ) - ) - (block $label$break$L8 - (if - (i32.eq - (local.get $label) - (i32.const 6) - ) - (block - (local.set $$4 - (i32.load8_s - (local.get $$s$0$lcssa60) - ) - ) - (local.set $$5 - (i32.and - (local.get $$c) - (i32.const 255) - ) - ) - (local.set $$cmp8 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$4) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.shr_s - (i32.shl - (local.get $$5) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (if - (local.get $$cmp8) - (block - (local.set $$n$addr$3 - (local.get $$n$addr$0$lcssa61) - ) - (local.set $$s$2 - (local.get $$s$0$lcssa60) - ) - ) - (block - (local.set $$mul - (i32.mul - (local.get $$conv1) - (i32.const 16843009) - ) - ) - (local.set $$cmp11$32 - (i32.gt_u - (local.get $$n$addr$0$lcssa61) - (i32.const 3) - ) - ) - (block $label$break$L11 - (if - (local.get $$cmp11$32) - (block - (local.set $$n$addr$133 - (local.get $$n$addr$0$lcssa61) - ) - (local.set $$w$034 - (local.get $$s$0$lcssa60) - ) - (loop $while-in3 - (block $while-out2 - (local.set $$6 - (i32.load - (local.get $$w$034) - ) - ) - (local.set $$xor - (i32.xor - (local.get $$6) - (local.get $$mul) - ) - ) - (local.set $$sub - (i32.add - (local.get $$xor) - (i32.const -16843009) - ) - ) - (local.set $$neg - (i32.and - (local.get $$xor) - (i32.const -2139062144) - ) - ) - (local.set $$and15 - (i32.xor - (local.get $$neg) - (i32.const -2139062144) - ) - ) - (local.set $$and16 - (i32.and - (local.get $$and15) - (local.get $$sub) - ) - ) - (local.set $$lnot - (i32.eq - (local.get $$and16) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$lnot) - ) - (block - (local.set $$n$addr$133$lcssa - (local.get $$n$addr$133) - ) - (local.set $$w$034$lcssa - (local.get $$w$034) - ) - (br $while-out2) - ) - ) - (local.set $$incdec$ptr21 - (i32.add - (local.get $$w$034) - (i32.const 4) - ) - ) - (local.set $$sub22 - (i32.add - (local.get $$n$addr$133) - (i32.const -4) - ) - ) - (local.set $$cmp11 - (i32.gt_u - (local.get $$sub22) - (i32.const 3) - ) - ) - (if - (local.get $$cmp11) - (block - (local.set $$n$addr$133 - (local.get $$sub22) - ) - (local.set $$w$034 - (local.get $$incdec$ptr21) - ) - ) - (block - (local.set $$n$addr$1$lcssa - (local.get $$sub22) - ) - (local.set $$w$0$lcssa - (local.get $$incdec$ptr21) - ) - (local.set $label - (i32.const 11) - ) - (br $label$break$L11) - ) - ) - (br $while-in3) - ) - ) - (local.set $$n$addr$227 - (local.get $$n$addr$133$lcssa) - ) - (local.set $$s$128 - (local.get $$w$034$lcssa) - ) - ) - (block - (local.set $$n$addr$1$lcssa - (local.get $$n$addr$0$lcssa61) - ) - (local.set $$w$0$lcssa - (local.get $$s$0$lcssa60) - ) - (local.set $label - (i32.const 11) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 11) - ) - (block - (local.set $$tobool25$26 - (i32.eq - (local.get $$n$addr$1$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$tobool25$26) - (block - (local.set $$n$addr$3 - (i32.const 0) - ) - (local.set $$s$2 - (local.get $$w$0$lcssa) - ) - (br $label$break$L8) - ) - (block - (local.set $$n$addr$227 - (local.get $$n$addr$1$lcssa) - ) - (local.set $$s$128 - (local.get $$w$0$lcssa) - ) - ) - ) - ) - ) - (loop $while-in5 - (block $while-out4 - (local.set $$7 - (i32.load8_s - (local.get $$s$128) - ) - ) - (local.set $$cmp28 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$7) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.shr_s - (i32.shl - (local.get $$5) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (if - (local.get $$cmp28) - (block - (local.set $$n$addr$3 - (local.get $$n$addr$227) - ) - (local.set $$s$2 - (local.get $$s$128) - ) - (br $label$break$L8) - ) - ) - (local.set $$incdec$ptr33 - (i32.add - (local.get $$s$128) - (i32.const 1) - ) - ) - (local.set $$dec34 - (i32.add - (local.get $$n$addr$227) - (i32.const -1) - ) - ) - (local.set $$tobool25 - (i32.eq - (local.get $$dec34) - (i32.const 0) - ) - ) - (if - (local.get $$tobool25) - (block - (local.set $$n$addr$3 - (i32.const 0) - ) - (local.set $$s$2 - (local.get $$incdec$ptr33) - ) - (br $while-out4) - ) - (block - (local.set $$n$addr$227 - (local.get $$dec34) - ) - (local.set $$s$128 - (local.get $$incdec$ptr33) - ) - ) - ) - (br $while-in5) - ) - ) - ) - ) - ) - ) - ) - (local.set $$tobool36 - (i32.ne - (local.get $$n$addr$3) - (i32.const 0) - ) - ) - (local.set $$cond - (if (result i32) - (local.get $$tobool36) - (local.get $$s$2) - (i32.const 0) - ) - ) - (return - (local.get $$cond) - ) - ) - (func $___syscall_ret (; 46 ;) (param $$r i32) (result i32) - (local $$call i32) - (local $$cmp i32) - (local $$retval$0 i32) - (local $$sub i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$cmp - (i32.gt_u - (local.get $$r) - (i32.const -4096) - ) - ) - (if - (local.get $$cmp) - (block - (local.set $$sub - (i32.sub - (i32.const 0) - (local.get $$r) - ) - ) - (local.set $$call - (call $___errno_location) - ) - (i32.store - (local.get $$call) - (local.get $$sub) - ) - (local.set $$retval$0 - (i32.const -1) - ) - ) - (local.set $$retval$0 - (local.get $$r) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $___fflush_unlocked (; 47 ;) (param $$f i32) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$cmp i32) - (local $$cmp4 i32) - (local $$rend i32) - (local $$retval$0 i32) - (local $$rpos i32) - (local $$seek i32) - (local $$sub$ptr$lhs$cast i32) - (local $$sub$ptr$rhs$cast i32) - (local $$sub$ptr$sub i32) - (local $$tobool i32) - (local $$wbase i32) - (local $$wend i32) - (local $$wpos i32) - (local $$write i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$wpos - (i32.add - (local.get $$f) - (i32.const 20) - ) - ) - (local.set $$0 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$wbase - (i32.add - (local.get $$f) - (i32.const 28) - ) - ) - (local.set $$1 - (i32.load - (local.get $$wbase) - ) - ) - (local.set $$cmp - (i32.gt_u - (local.get $$0) - (local.get $$1) - ) - ) - (if - (local.get $$cmp) - (block - (local.set $$write - (i32.add - (local.get $$f) - (i32.const 36) - ) - ) - (local.set $$2 - (i32.load - (local.get $$write) - ) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $$f) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (local.get $$2) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (local.set $$3 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$3) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (local.set $$retval$0 - (i32.const -1) - ) - (local.set $label - (i32.const 3) - ) - ) - ) - (local.set $label - (i32.const 3) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 3) - ) - (block - (local.set $$rpos - (i32.add - (local.get $$f) - (i32.const 4) - ) - ) - (local.set $$4 - (i32.load - (local.get $$rpos) - ) - ) - (local.set $$rend - (i32.add - (local.get $$f) - (i32.const 8) - ) - ) - (local.set $$5 - (i32.load - (local.get $$rend) - ) - ) - (local.set $$cmp4 - (i32.lt_u - (local.get $$4) - (local.get $$5) - ) - ) - (if - (local.get $$cmp4) - (block - (local.set $$seek - (i32.add - (local.get $$f) - (i32.const 40) - ) - ) - (local.set $$6 - (i32.load - (local.get $$seek) - ) - ) - (local.set $$sub$ptr$lhs$cast - (local.get $$4) - ) - (local.set $$sub$ptr$rhs$cast - (local.get $$5) - ) - (local.set $$sub$ptr$sub - (i32.sub - (local.get $$sub$ptr$lhs$cast) - (local.get $$sub$ptr$rhs$cast) - ) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $$f) - (local.get $$sub$ptr$sub) - (i32.const 1) - (i32.add - (i32.and - (local.get $$6) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (local.set $$wend - (i32.add - (local.get $$f) - (i32.const 16) - ) - ) - (i32.store - (local.get $$wend) - (i32.const 0) - ) - (i32.store - (local.get $$wbase) - (i32.const 0) - ) - (i32.store - (local.get $$wpos) - (i32.const 0) - ) - (i32.store - (local.get $$rend) - (i32.const 0) - ) - (i32.store - (local.get $$rpos) - (i32.const 0) - ) - (local.set $$retval$0 - (i32.const 0) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_cleanup (; 48 ;) (param $$p i32) - (local $$0 i32) - (local $$lockcount i32) - (local $$tobool i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$lockcount - (i32.add - (local.get $$p) - (i32.const 68) - ) - ) - (local.set $$0 - (i32.load - (local.get $$lockcount) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$0) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (call $___unlockfile - (local.get $$p) - ) - ) - (return) - ) - (func $f64-to-int (; 49 ;) (param $0 f64) (result i32) - (if (result i32) - (f64.ne - (local.get $0) - (local.get $0) - ) - (i32.const -2147483648) - (if (result i32) - (f64.ge - (local.get $0) - (f64.const 2147483648) - ) - (i32.const -2147483648) - (if (result i32) - (f64.le - (local.get $0) - (f64.const -2147483649) - ) - (i32.const -2147483648) - (i32.trunc_f64_s - (local.get $0) - ) - ) - ) - ) - ) - (func $f64-to-uint (; 50 ;) (param $0 f64) (result i32) - (if (result i32) - (f64.ne - (local.get $0) - (local.get $0) - ) - (i32.const 0) - (if (result i32) - (f64.ge - (local.get $0) - (f64.const 4294967296) - ) - (i32.const 0) - (if (result i32) - (f64.le - (local.get $0) - (f64.const -1) - ) - (i32.const 0) - (i32.trunc_f64_u - (local.get $0) - ) - ) - ) - ) - ) - (func $i32s-div (; 51 ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (i32.eqz - (local.get $1) - ) - (i32.const 0) - (if (result i32) - (i32.and - (i32.eq - (local.get $0) - (i32.const -2147483648) - ) - (i32.eq - (local.get $1) - (i32.const -1) - ) - ) - (i32.const 0) - (i32.div_s - (local.get $0) - (local.get $1) - ) - ) - ) - ) - (func $i32s-rem (; 52 ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (i32.eqz - (local.get $1) - ) - (i32.const 0) - (i32.rem_s - (local.get $0) - (local.get $1) - ) - ) - ) - (func $i32u-rem (; 53 ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (i32.eqz - (local.get $1) - ) - (i32.const 0) - (i32.rem_u - (local.get $0) - (local.get $1) - ) - ) - ) - (func $i32u-div (; 54 ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (i32.eqz - (local.get $1) - ) - (i32.const 0) - (i32.div_u - (local.get $0) - (local.get $1) - ) - ) - ) - (func $_printf_core (; 55 ;) (param $$f i32) (param $$fmt i32) (param $$ap i32) (param $$nl_arg i32) (param $$nl_type i32) (result i32) - (local $$$ i32) - (local $$$$i i32) - (local $$$396$i f64) - (local $$$404$i f64) - (local $$$l10n$0 i32) - (local $$$lcssa i32) - (local $$$p$i i32) - (local $$$p$inc468$i i32) - (local $$$pr$i i32) - (local $$$pr477$i i32) - (local $$$pre i32) - (local $$$pre$i i32) - (local $$$pre357 i32) - (local $$$pre564$i i32) - (local $$$pre566$i i32) - (local $$$pre567$i i32) - (local $$$sub514$i i32) - (local $$$sub562$i i32) - (local $$0 i32) - (local $$1 i32) - (local $$10 i32) - (local $$100 i32) - (local $$101 i32) - (local $$102 i32) - (local $$103 i32) - (local $$104 i32) - (local $$105 i32) - (local $$106 i32) - (local $$107 i32) - (local $$108 i32) - (local $$109 i32) - (local $$11 i32) - (local $$110 i32) - (local $$111 i32) - (local $$112 i32) - (local $$113 i32) - (local $$114 i32) - (local $$115 i32) - (local $$116 i32) - (local $$117 i32) - (local $$118 i32) - (local $$119 i32) - (local $$12 i32) - (local $$120 i32) - (local $$121 i32) - (local $$122 i32) - (local $$123 i32) - (local $$124 i32) - (local $$125 i32) - (local $$126 i32) - (local $$127 i32) - (local $$128 i32) - (local $$129 i32) - (local $$13 i32) - (local $$130 i32) - (local $$131 i32) - (local $$132 i32) - (local $$133 i32) - (local $$134 i32) - (local $$135 i32) - (local $$136 i32) - (local $$137 i32) - (local $$138 i32) - (local $$139 i32) - (local $$14 i32) - (local $$140 i32) - (local $$141 i32) - (local $$142 i32) - (local $$143 i32) - (local $$144 i32) - (local $$145 i32) - (local $$146 i32) - (local $$147 i32) - (local $$148 i32) - (local $$149 i32) - (local $$15 i32) - (local $$150 i32) - (local $$151 i32) - (local $$152 i32) - (local $$153 i32) - (local $$154 i32) - (local $$155 i32) - (local $$156 i32) - (local $$157 i32) - (local $$158 i32) - (local $$159 i32) - (local $$16 i32) - (local $$160 i32) - (local $$161 i32) - (local $$162 i32) - (local $$163 i32) - (local $$164 i32) - (local $$165 i32) - (local $$166 i32) - (local $$167 i32) - (local $$168 i32) - (local $$169 i32) - (local $$17 i32) - (local $$170 i32) - (local $$171 i32) - (local $$172 i32) - (local $$173 i32) - (local $$174 i32) - (local $$175 i32) - (local $$176 i32) - (local $$177 i32) - (local $$178 i32) - (local $$179 i32) - (local $$18 i32) - (local $$180 i32) - (local $$181 f64) - (local $$182 i32) - (local $$183 i32) - (local $$184 i32) - (local $$185 i32) - (local $$186 i32) - (local $$187 i32) - (local $$188 i32) - (local $$189 i32) - (local $$19 i32) - (local $$190 i32) - (local $$191 i32) - (local $$192 i32) - (local $$193 i32) - (local $$194 i32) - (local $$195 i32) - (local $$196 i32) - (local $$197 i32) - (local $$198 i32) - (local $$199 i32) - (local $$2 i32) - (local $$20 i32) - (local $$200 i32) - (local $$201 i32) - (local $$202 i32) - (local $$203 i32) - (local $$204 i32) - (local $$205 i32) - (local $$206 i32) - (local $$207 i32) - (local $$208 i32) - (local $$209 i32) - (local $$21 i32) - (local $$210 i32) - (local $$211 i32) - (local $$212 i32) - (local $$213 i32) - (local $$214 i32) - (local $$215 i32) - (local $$216 i32) - (local $$217 i32) - (local $$218 i32) - (local $$219 i32) - (local $$22 i32) - (local $$220 i32) - (local $$221 i32) - (local $$222 i32) - (local $$223 i32) - (local $$224 i32) - (local $$225 i32) - (local $$226 i32) - (local $$227 i32) - (local $$228 i32) - (local $$229 i32) - (local $$23 i32) - (local $$230 i32) - (local $$231 i32) - (local $$232 i32) - (local $$233 i32) - (local $$234 i32) - (local $$235 i32) - (local $$236 i32) - (local $$237 i32) - (local $$238 i32) - (local $$239 i32) - (local $$24 i32) - (local $$240 i32) - (local $$241 i32) - (local $$242 i32) - (local $$243 i32) - (local $$244 i32) - (local $$245 i32) - (local $$246 i32) - (local $$247 i32) - (local $$248 i32) - (local $$249 i32) - (local $$25 i32) - (local $$250 i32) - (local $$251 i32) - (local $$252 i32) - (local $$253 i32) - (local $$254 i32) - (local $$255 i32) - (local $$256 i32) - (local $$257 i32) - (local $$258 i32) - (local $$259 i32) - (local $$26 i32) - (local $$260 i32) - (local $$261 i32) - (local $$262 i32) - (local $$263 i32) - (local $$264 i32) - (local $$265 i32) - (local $$266 i32) - (local $$267 i32) - (local $$268 i32) - (local $$27 i32) - (local $$28 i32) - (local $$29 i32) - (local $$3 i32) - (local $$30 i32) - (local $$31 i32) - (local $$32 i32) - (local $$33 i32) - (local $$34 i32) - (local $$35 i32) - (local $$36 i32) - (local $$37 i32) - (local $$38 i32) - (local $$39 i32) - (local $$4 i32) - (local $$40 i32) - (local $$41 i32) - (local $$42 i32) - (local $$43 i32) - (local $$44 i32) - (local $$45 i32) - (local $$46 i32) - (local $$47 i32) - (local $$48 i32) - (local $$49 i32) - (local $$5 i32) - (local $$50 i32) - (local $$51 i32) - (local $$52 i32) - (local $$53 i32) - (local $$54 i32) - (local $$55 i32) - (local $$56 i32) - (local $$57 i32) - (local $$58 i32) - (local $$59 i32) - (local $$6 i32) - (local $$60 i32) - (local $$61 i32) - (local $$62 i32) - (local $$63 i32) - (local $$64 i32) - (local $$65 i32) - (local $$66 i32) - (local $$67 i32) - (local $$68 i32) - (local $$69 i32) - (local $$7 i32) - (local $$70 i32) - (local $$71 i32) - (local $$72 i32) - (local $$73 i32) - (local $$74 i32) - (local $$75 i32) - (local $$76 i32) - (local $$77 i32) - (local $$78 i32) - (local $$79 i32) - (local $$8 i32) - (local $$80 i32) - (local $$81 i32) - (local $$82 i32) - (local $$83 i32) - (local $$84 i32) - (local $$85 i32) - (local $$86 i32) - (local $$87 i32) - (local $$88 i32) - (local $$89 i32) - (local $$9 i32) - (local $$90 i32) - (local $$91 i32) - (local $$92 i32) - (local $$93 i32) - (local $$94 i32) - (local $$95 i32) - (local $$96 i32) - (local $$97 i32) - (local $$98 i32) - (local $$99 i32) - (local $$a$0 i32) - (local $$a$1 i32) - (local $$a$1$lcssa$i i32) - (local $$a$1549$i i32) - (local $$a$2 i32) - (local $$a$2$ph$i i32) - (local $$a$3$lcssa$i i32) - (local $$a$3539$i i32) - (local $$a$5$lcssa$i i32) - (local $$a$5521$i i32) - (local $$a$6$i i32) - (local $$a$8$i i32) - (local $$a$9$ph$i i32) - (local $$add i32) - (local $$add$i i32) - (local $$add$i$203 i32) - (local $$add$i$239 i32) - (local $$add$i$lcssa i32) - (local $$add$ptr i32) - (local $$add$ptr139 i32) - (local $$add$ptr205 i32) - (local $$add$ptr213$i i32) - (local $$add$ptr257 i32) - (local $$add$ptr311$i i32) - (local $$add$ptr311$z$4$i i32) - (local $$add$ptr340 i32) - (local $$add$ptr354$i i32) - (local $$add$ptr358$i i32) - (local $$add$ptr359 i32) - (local $$add$ptr373$i i32) - (local $$add$ptr43 i32) - (local $$add$ptr43$arrayidx31 i32) - (local $$add$ptr442$i i32) - (local $$add$ptr442$z$3$i i32) - (local $$add$ptr473 i32) - (local $$add$ptr65$i i32) - (local $$add$ptr671$i i32) - (local $$add$ptr742$i i32) - (local $$add$ptr88 i32) - (local $$add113$i i32) - (local $$add150$i i32) - (local $$add154$i i32) - (local $$add163$i i32) - (local $$add165$i i32) - (local $$add269 i32) - (local $$add269$p$0 i32) - (local $$add273$i i32) - (local $$add275$i i32) - (local $$add284$i i32) - (local $$add313$i i32) - (local $$add322 i32) - (local $$add355$i i32) - (local $$add395 i32) - (local $$add410$i f64) - (local $$add412 i32) - (local $$add414$i i32) - (local $$add441 i32) - (local $$add477$neg$i i32) - (local $$add561$i i32) - (local $$add608$i i32) - (local $$add612$i i32) - (local $$add620$i i32) - (local $$add653$i i32) - (local $$add67$i i32) - (local $$add737$i i32) - (local $$add810$i i32) - (local $$add87$i f64) - (local $$add90$i f64) - (local $$and i32) - (local $$and$i i32) - (local $$and$i$216 i32) - (local $$and$i$231 i32) - (local $$and$i$238 i32) - (local $$and$i$244 i32) - (local $$and$i$406$i i32) - (local $$and$i$412$i i32) - (local $$and$i$418$i i32) - (local $$and$i$424$i i32) - (local $$and$i$430$i i32) - (local $$and$i$436$i i32) - (local $$and$i$442$i i32) - (local $$and$i$448$i i32) - (local $$and$i$454$i i32) - (local $$and$i$460$i i32) - (local $$and$i$466$i i32) - (local $$and$i$472$i i32) - (local $$and$i$i i32) - (local $$and12$i i32) - (local $$and134$i i32) - (local $$and210 i32) - (local $$and214 i32) - (local $$and216 i32) - (local $$and219 i32) - (local $$and249 i32) - (local $$and254 i32) - (local $$and263 i32) - (local $$and282$i i32) - (local $$and289 i32) - (local $$and294 i32) - (local $$and309 i32) - (local $$and309$fl$4 i32) - (local $$and36$i i32) - (local $$and379$i i32) - (local $$and483$i i32) - (local $$and610$pre$phi$iZ2D i32) - (local $$and62$i i32) - (local $$arg i32) - (local $$arglist_current i32) - (local $$arglist_current2 i32) - (local $$arglist_next i32) - (local $$arglist_next3 i32) - (local $$argpos$0 i32) - (local $$arraydecay208$add$ptr213$i i32) - (local $$arrayidx$i i32) - (local $$arrayidx$i$236 i32) - (local $$arrayidx114 i32) - (local $$arrayidx117$i i32) - (local $$arrayidx119 i32) - (local $$arrayidx124 i32) - (local $$arrayidx132 i32) - (local $$arrayidx16 i32) - (local $$arrayidx173 i32) - (local $$arrayidx192 i32) - (local $$arrayidx251$i i32) - (local $$arrayidx31 i32) - (local $$arrayidx35 i32) - (local $$arrayidx370 i32) - (local $$arrayidx453$i i32) - (local $$arrayidx469 i32) - (local $$arrayidx481 i32) - (local $$arrayidx489$i i32) - (local $$arrayidx68 i32) - (local $$arrayidx73 i32) - (local $$arrayidx81 i32) - (local $$big$i i32) - (local $$buf i32) - (local $$buf$i i32) - (local $$call i32) - (local $$call344 i32) - (local $$call345 i32) - (local $$call356 i32) - (local $$call384 i32) - (local $$call411 i32) - (local $$call55$i f64) - (local $$carry$0544$i i32) - (local $$carry262$0535$i i32) - (local $$cmp i32) - (local $$cmp1 i32) - (local $$cmp103$i i32) - (local $$cmp105 i32) - (local $$cmp111 i32) - (local $$cmp116 i32) - (local $$cmp126 i32) - (local $$cmp127$i i32) - (local $$cmp13 i32) - (local $$cmp147$i i32) - (local $$cmp165 i32) - (local $$cmp176 i32) - (local $$cmp18 i32) - (local $$cmp181 i32) - (local $$cmp184 i32) - (local $$cmp188$i i32) - (local $$cmp196$i i32) - (local $$cmp205$i i32) - (local $$cmp211 i32) - (local $$cmp225$547$i i32) - (local $$cmp225$i i32) - (local $$cmp228$i i32) - (local $$cmp235$543$i i32) - (local $$cmp235$i i32) - (local $$cmp240 i32) - (local $$cmp249$i i32) - (local $$cmp259$537$i i32) - (local $$cmp259$i i32) - (local $$cmp265$i i32) - (local $$cmp270 i32) - (local $$cmp277$533$i i32) - (local $$cmp277$i i32) - (local $$cmp299$i i32) - (local $$cmp306 i32) - (local $$cmp308$i i32) - (local $$cmp315$i i32) - (local $$cmp323 i32) - (local $$cmp324$529$i i32) - (local $$cmp324$i i32) - (local $$cmp333$i i32) - (local $$cmp338$i i32) - (local $$cmp350$i i32) - (local $$cmp363$525$i i32) - (local $$cmp37 i32) - (local $$cmp374$i i32) - (local $$cmp377 i32) - (local $$cmp377$314 i32) - (local $$cmp38$i i32) - (local $$cmp385 i32) - (local $$cmp385$i i32) - (local $$cmp390 i32) - (local $$cmp390$i i32) - (local $$cmp397 i32) - (local $$cmp403$i i32) - (local $$cmp404 i32) - (local $$cmp404$324 i32) - (local $$cmp411$i i32) - (local $$cmp413 i32) - (local $$cmp416$519$i i32) - (local $$cmp416$i i32) - (local $$cmp420$i i32) - (local $$cmp421 i32) - (local $$cmp433$515$i i32) - (local $$cmp433$i i32) - (local $$cmp434 i32) - (local $$cmp442 i32) - (local $$cmp443$i i32) - (local $$cmp450$i i32) - (local $$cmp450$lcssa$i i32) - (local $$cmp466 i32) - (local $$cmp470$i i32) - (local $$cmp473$i i32) - (local $$cmp478 i32) - (local $$cmp478$295 i32) - (local $$cmp48$i i32) - (local $$cmp495$511$i i32) - (local $$cmp495$i i32) - (local $$cmp50 i32) - (local $$cmp50$308 i32) - (local $$cmp505$i i32) - (local $$cmp515$i i32) - (local $$cmp528$i i32) - (local $$cmp563$i i32) - (local $$cmp577$i i32) - (local $$cmp59$i i32) - (local $$cmp614$i i32) - (local $$cmp617$i i32) - (local $$cmp623$i i32) - (local $$cmp636$506$i i32) - (local $$cmp636$i i32) - (local $$cmp65 i32) - (local $$cmp660$i i32) - (local $$cmp665$i i32) - (local $$cmp673$i i32) - (local $$cmp678$491$i i32) - (local $$cmp678$i i32) - (local $$cmp686$i i32) - (local $$cmp707$486$i i32) - (local $$cmp707$i i32) - (local $$cmp710$487$i i32) - (local $$cmp710$i i32) - (local $$cmp722$483$i i32) - (local $$cmp722$i i32) - (local $$cmp727$i i32) - (local $$cmp745$i i32) - (local $$cmp748$499$i i32) - (local $$cmp748$i i32) - (local $$cmp75 i32) - (local $$cmp760$i i32) - (local $$cmp765$i i32) - (local $$cmp770$495$i i32) - (local $$cmp770$i i32) - (local $$cmp777$i i32) - (local $$cmp790$i i32) - (local $$cmp818$i i32) - (local $$cmp82$i i32) - (local $$cmp94$i i32) - (local $$cmp97 i32) - (local $$cnt$0 i32) - (local $$cnt$1 i32) - (local $$cnt$1$lcssa i32) - (local $$cond$i i32) - (local $$cond100$i i32) - (local $$cond233$i i32) - (local $$cond245 i32) - (local $$cond271$i i32) - (local $$cond304$i i32) - (local $$cond354 i32) - (local $$cond426 i32) - (local $$cond43$i i32) - (local $$cond53$i i32) - (local $$cond629$i i32) - (local $$cond732$i i32) - (local $$cond800$i i32) - (local $$conv$4$i i32) - (local $$conv$4$i$197 i32) - (local $$conv$4$i$211 i32) - (local $$conv$i i32) - (local $$conv$i$205 i32) - (local $$conv1$i i32) - (local $$conv111$i i32) - (local $$conv114$i i32) - (local $$conv116$i i32) - (local $$conv118$393$i i32) - (local $$conv120 i32) - (local $$conv121$i i32) - (local $$conv123$i f64) - (local $$conv134 i32) - (local $$conv163 i32) - (local $$conv174 i32) - (local $$conv174$lcssa i32) - (local $$conv207 i32) - (local $$conv216$i i32) - (local $$conv218$i f64) - (local $$conv229 i32) - (local $$conv232 i32) - (local $$conv242$i$lcssa i32) - (local $$conv32 i32) - (local $$conv48 i32) - (local $$conv48$307 i32) - (local $$conv48311 i32) - (local $$conv58 i32) - (local $$conv644$i i32) - (local $$conv646$i i32) - (local $$conv69 i32) - (local $$conv83 i32) - (local $$d$0$542$i i32) - (local $$d$0$i i32) - (local $$d$0545$i i32) - (local $$d$1534$i i32) - (local $$d$2$lcssa$i i32) - (local $$d$2520$i i32) - (local $$d$4$i i32) - (local $$d$5494$i i32) - (local $$d$6488$i i32) - (local $$d$7500$i i32) - (local $$dec$i i32) - (local $$dec476$i i32) - (local $$dec481$i i32) - (local $$dec78$i i32) - (local $$div274$i i32) - (local $$div356$i i32) - (local $$div378$i i32) - (local $$div384$i i32) - (local $$e$0531$i i32) - (local $$e$1$i i32) - (local $$e$2517$i i32) - (local $$e$4$i i32) - (local $$e$5$ph$i i32) - (local $$e2$i i32) - (local $$ebuf0$i i32) - (local $$estr$0$i i32) - (local $$estr$1$lcssa$i i32) - (local $$estr$1507$i i32) - (local $$estr$2$i i32) - (local $$exitcond$i i32) - (local $$expanded i32) - (local $$expanded10 i32) - (local $$expanded11 i32) - (local $$expanded13 i32) - (local $$expanded14 i32) - (local $$expanded15 i32) - (local $$expanded4 i32) - (local $$expanded6 i32) - (local $$expanded7 i32) - (local $$expanded8 i32) - (local $$fl$0284 i32) - (local $$fl$0310 i32) - (local $$fl$1 i32) - (local $$fl$1$and219 i32) - (local $$fl$3 i32) - (local $$fl$4 i32) - (local $$fl$6 i32) - (local $$i$0$lcssa i32) - (local $$i$0$lcssa368 i32) - (local $$i$0316 i32) - (local $$i$0530$i i32) - (local $$i$07$i i32) - (local $$i$07$i$201 i32) - (local $$i$1$lcssa$i i32) - (local $$i$1325 i32) - (local $$i$1526$i i32) - (local $$i$2299 i32) - (local $$i$2299$lcssa i32) - (local $$i$2516$i i32) - (local $$i$3296 i32) - (local $$i$3512$i i32) - (local $$i137 i32) - (local $$i86 i32) - (local $$idxprom$i i32) - (local $$inc i32) - (local $$inc$i i32) - (local $$inc425$i i32) - (local $$inc438$i i32) - (local $$inc468$i i32) - (local $$inc488 i32) - (local $$inc500$i i32) - (local $$incdec$ptr i32) - (local $$incdec$ptr$i i32) - (local $$incdec$ptr$i$204 i32) - (local $$incdec$ptr$i$212 i32) - (local $$incdec$ptr$i$212$lcssa i32) - (local $$incdec$ptr$i$225 i32) - (local $$incdec$ptr$i$lcssa i32) - (local $$incdec$ptr106$i i32) - (local $$incdec$ptr112$i i32) - (local $$incdec$ptr115$i i32) - (local $$incdec$ptr122$i i32) - (local $$incdec$ptr137$i i32) - (local $$incdec$ptr169 i32) - (local $$incdec$ptr169$lcssa i32) - (local $$incdec$ptr169269 i32) - (local $$incdec$ptr169271 i32) - (local $$incdec$ptr169271$lcssa414 i32) - (local $$incdec$ptr169272 i32) - (local $$incdec$ptr169274 i32) - (local $$incdec$ptr169275 i32) - (local $$incdec$ptr169276$lcssa i32) - (local $$incdec$ptr169276301 i32) - (local $$incdec$ptr217$i i32) - (local $$incdec$ptr217$i$lcssa i32) - (local $$incdec$ptr23 i32) - (local $$incdec$ptr246$i i32) - (local $$incdec$ptr288$i i32) - (local $$incdec$ptr292$570$i i32) - (local $$incdec$ptr292$a$3$571$i i32) - (local $$incdec$ptr292$a$3$i i32) - (local $$incdec$ptr292$a$3573$i i32) - (local $$incdec$ptr292$i i32) - (local $$incdec$ptr296$i i32) - (local $$incdec$ptr383 i32) - (local $$incdec$ptr410 i32) - (local $$incdec$ptr419$i i32) - (local $$incdec$ptr423$i i32) - (local $$incdec$ptr62 i32) - (local $$incdec$ptr639$i i32) - (local $$incdec$ptr645$i i32) - (local $$incdec$ptr647$i i32) - (local $$incdec$ptr681$i i32) - (local $$incdec$ptr689$i i32) - (local $$incdec$ptr698$i i32) - (local $$incdec$ptr698$i$lcssa i32) - (local $$incdec$ptr725$i i32) - (local $$incdec$ptr734$i i32) - (local $$incdec$ptr773$i i32) - (local $$incdec$ptr776$i i32) - (local $$incdec$ptr808$i i32) - (local $$isdigit i32) - (local $$isdigit$6$i i32) - (local $$isdigit$6$i$199 i32) - (local $$isdigit$i i32) - (local $$isdigit$i$207 i32) - (local $$isdigit188 i32) - (local $$isdigit190 i32) - (local $$isdigittmp i32) - (local $$isdigittmp$ i32) - (local $$isdigittmp$5$i i32) - (local $$isdigittmp$5$i$198 i32) - (local $$isdigittmp$i i32) - (local $$isdigittmp$i$206 i32) - (local $$isdigittmp187 i32) - (local $$isdigittmp189 i32) - (local $$isdigittmp8$i i32) - (local $$isdigittmp8$i$200 i32) - (local $$j$0$524$i i32) - (local $$j$0$i i32) - (local $$j$0527$i i32) - (local $$j$1513$i i32) - (local $$j$2$i i32) - (local $$l$0 i32) - (local $$l$0$i i32) - (local $$l$1$i i32) - (local $$l$1315 i32) - (local $$l$2 i32) - (local $$l10n$0 i32) - (local $$l10n$0$lcssa i32) - (local $$l10n$0$phi i32) - (local $$l10n$1 i32) - (local $$l10n$2 i32) - (local $$l10n$3 i32) - (local $$land$ext$neg$i i32) - (local $$lnot$ext i32) - (local $$lnot$i i32) - (local $$lnot455$i i32) - (local $$lnot483 i32) - (local $$lor$ext$i i32) - (local $$mb i32) - (local $$mul$i i32) - (local $$mul$i$202 i32) - (local $$mul$i$240 f64) - (local $$mul125$i f64) - (local $$mul202$i f64) - (local $$mul220$i f64) - (local $$mul286$i i32) - (local $$mul286$i$lcssa i32) - (local $$mul322$i i32) - (local $$mul328$i i32) - (local $$mul335$i i32) - (local $$mul349$i i32) - (local $$mul367$i i32) - (local $$mul406$i f64) - (local $$mul407$i f64) - (local $$mul431$i i32) - (local $$mul437$i i32) - (local $$mul499$i i32) - (local $$mul513$i i32) - (local $$mul80$i f64) - (local $$mul80$i$lcssa f64) - (local $$notlhs$i i32) - (local $$notrhs$i i32) - (local $$or i32) - (local $$or$cond i32) - (local $$or$cond$i i32) - (local $$or$cond1$not$i i32) - (local $$or$cond192 i32) - (local $$or$cond193 i32) - (local $$or$cond195 i32) - (local $$or$cond2$i i32) - (local $$or$cond384 i32) - (local $$or$cond395$i i32) - (local $$or$cond397$i i32) - (local $$or$cond401$i i32) - (local $$or$i i32) - (local $$or$i$241 i32) - (local $$or100 i32) - (local $$or120$i i32) - (local $$or246 i32) - (local $$or504$i i32) - (local $$or613$i i32) - (local $$p$0 i32) - (local $$p$1 i32) - (local $$p$2 i32) - (local $$p$2$add322 i32) - (local $$p$3 i32) - (local $$p$4365 i32) - (local $$p$5 i32) - (local $$p$addr$2$$sub514398$i i32) - (local $$p$addr$2$$sub562399$i i32) - (local $$p$addr$2$i i32) - (local $$p$addr$3$i i32) - (local $$p$addr$4$lcssa$i i32) - (local $$p$addr$4489$i i32) - (local $$p$addr$5$lcssa$i i32) - (local $$p$addr$5501$i i32) - (local $$pl$0 i32) - (local $$pl$0$i i32) - (local $$pl$1 i32) - (local $$pl$1$i i32) - (local $$pl$2 i32) - (local $$prefix$0 i32) - (local $$prefix$0$add$ptr65$i i32) - (local $$prefix$0$i i32) - (local $$prefix$1 i32) - (local $$prefix$2 i32) - (local $$r$0$a$9$i i32) - (local $$re$1482$i i32) - (local $$rem360$i i32) - (local $$rem370$i i32) - (local $$rem494$510$i i32) - (local $$rem494$i i32) - (local $$retval$0 i32) - (local $$retval$0$i i32) - (local $$round$0481$i f64) - (local $$round377$1$i f64) - (local $$s$0$i i32) - (local $$s$1$i i32) - (local $$s$1$i$lcssa i32) - (local $$s$addr$0$lcssa$i$229 i32) - (local $$s$addr$06$i i32) - (local $$s$addr$06$i$221 i32) - (local $$s35$0$i i32) - (local $$s668$0492$i i32) - (local $$s668$1$i i32) - (local $$s715$0$lcssa$i i32) - (local $$s715$0484$i i32) - (local $$s753$0$i i32) - (local $$s753$1496$i i32) - (local $$s753$2$i i32) - (local $$shl i32) - (local $$shl280$i i32) - (local $$shl60 i32) - (local $$shr i32) - (local $$shr283$i i32) - (local $$shr285$i i32) - (local $$small$0$i f64) - (local $$small$1$i f64) - (local $$st$0 i32) - (local $$st$0$lcssa415 i32) - (local $$storemerge i32) - (local $$storemerge$186282 i32) - (local $$storemerge$186309 i32) - (local $$storemerge$191 i32) - (local $$sub i32) - (local $$sub$i f64) - (local $$sub$ptr$div$i i32) - (local $$sub$ptr$div321$i i32) - (local $$sub$ptr$div347$i i32) - (local $$sub$ptr$div430$i i32) - (local $$sub$ptr$div511$i i32) - (local $$sub$ptr$lhs$cast i32) - (local $$sub$ptr$lhs$cast$i i32) - (local $$sub$ptr$lhs$cast160$i i32) - (local $$sub$ptr$lhs$cast305$i i32) - (local $$sub$ptr$lhs$cast317 i32) - (local $$sub$ptr$lhs$cast344$i i32) - (local $$sub$ptr$lhs$cast361 i32) - (local $$sub$ptr$lhs$cast431 i32) - (local $$sub$ptr$lhs$cast508$i i32) - (local $$sub$ptr$lhs$cast694$i i32) - (local $$sub$ptr$rhs$cast i32) - (local $$sub$ptr$rhs$cast$i i32) - (local $$sub$ptr$rhs$cast152$i i32) - (local $$sub$ptr$rhs$cast161$i i32) - (local $$sub$ptr$rhs$cast174$i i32) - (local $$sub$ptr$rhs$cast267 i32) - (local $$sub$ptr$rhs$cast306$i i32) - (local $$sub$ptr$rhs$cast318 i32) - (local $$sub$ptr$rhs$cast319$i i32) - (local $$sub$ptr$rhs$cast345$i i32) - (local $$sub$ptr$rhs$cast362 i32) - (local $$sub$ptr$rhs$cast428$i i32) - (local $$sub$ptr$rhs$cast432 i32) - (local $$sub$ptr$rhs$cast634$504$i i32) - (local $$sub$ptr$rhs$cast634$i i32) - (local $$sub$ptr$rhs$cast649$i i32) - (local $$sub$ptr$rhs$cast695$i i32) - (local $$sub$ptr$rhs$cast788$i i32) - (local $$sub$ptr$rhs$cast812$i i32) - (local $$sub$ptr$sub i32) - (local $$sub$ptr$sub$i i32) - (local $$sub$ptr$sub145$i i32) - (local $$sub$ptr$sub153$i i32) - (local $$sub$ptr$sub159$i i32) - (local $$sub$ptr$sub162$i i32) - (local $$sub$ptr$sub172$i i32) - (local $$sub$ptr$sub175$i i32) - (local $$sub$ptr$sub268 i32) - (local $$sub$ptr$sub307$i i32) - (local $$sub$ptr$sub319 i32) - (local $$sub$ptr$sub320$i i32) - (local $$sub$ptr$sub346$i i32) - (local $$sub$ptr$sub363 i32) - (local $$sub$ptr$sub429$i i32) - (local $$sub$ptr$sub433 i32) - (local $$sub$ptr$sub433$p$5 i32) - (local $$sub$ptr$sub510$i i32) - (local $$sub$ptr$sub635$505$i i32) - (local $$sub$ptr$sub635$i i32) - (local $$sub$ptr$sub650$i i32) - (local $$sub$ptr$sub650$pn$i i32) - (local $$sub$ptr$sub696$i i32) - (local $$sub$ptr$sub789$i i32) - (local $$sub$ptr$sub813$i i32) - (local $$sub101 i32) - (local $$sub124$i f64) - (local $$sub135 i32) - (local $$sub146$i i32) - (local $$sub164 i32) - (local $$sub175 i32) - (local $$sub181$i i32) - (local $$sub203$i i32) - (local $$sub219$i f64) - (local $$sub256$i i32) - (local $$sub264$i i32) - (local $$sub281$i i32) - (local $$sub336$i i32) - (local $$sub343$i i32) - (local $$sub357$i i32) - (local $$sub389 i32) - (local $$sub409$i i32) - (local $$sub478$i i32) - (local $$sub480$i i32) - (local $$sub514$i i32) - (local $$sub54 i32) - (local $$sub562$i i32) - (local $$sub59 i32) - (local $$sub626$le$i i32) - (local $$sub735$i i32) - (local $$sub74$i i32) - (local $$sub806$i i32) - (local $$sub84 i32) - (local $$sub85$i f64) - (local $$sub86$i f64) - (local $$sub88$i f64) - (local $$sub91$i f64) - (local $$sub97$i i32) - (local $$sum i32) - (local $$t$0 i32) - (local $$t$1 i32) - (local $$t$addr$0$i i32) - (local $$t$addr$1$i i32) - (local $$tobool i32) - (local $$tobool$i i32) - (local $$tobool$i$217 i32) - (local $$tobool$i$232 i32) - (local $$tobool$i$245 i32) - (local $$tobool$i$407$i i32) - (local $$tobool$i$413$i i32) - (local $$tobool$i$419$i i32) - (local $$tobool$i$425$i i32) - (local $$tobool$i$431$i i32) - (local $$tobool$i$437$i i32) - (local $$tobool$i$443$i i32) - (local $$tobool$i$449$i i32) - (local $$tobool$i$455$i i32) - (local $$tobool$i$461$i i32) - (local $$tobool$i$467$i i32) - (local $$tobool$i$473$i i32) - (local $$tobool$i$i i32) - (local $$tobool13$i i32) - (local $$tobool135$i i32) - (local $$tobool139$i i32) - (local $$tobool140$i i32) - (local $$tobool141 i32) - (local $$tobool178 i32) - (local $$tobool208 i32) - (local $$tobool217 i32) - (local $$tobool222$i i32) - (local $$tobool244$i i32) - (local $$tobool25 i32) - (local $$tobool255 i32) - (local $$tobool264 i32) - (local $$tobool28 i32) - (local $$tobool290 i32) - (local $$tobool290$569$i i32) - (local $$tobool290$i i32) - (local $$tobool294$i i32) - (local $$tobool295 i32) - (local $$tobool314 i32) - (local $$tobool341$i i32) - (local $$tobool349 i32) - (local $$tobool357 i32) - (local $$tobool37$i i32) - (local $$tobool371$i i32) - (local $$tobool380 i32) - (local $$tobool380$i i32) - (local $$tobool400$i i32) - (local $$tobool407 i32) - (local $$tobool459 i32) - (local $$tobool462 i32) - (local $$tobool470 i32) - (local $$tobool484$i i32) - (local $$tobool490$i i32) - (local $$tobool55 i32) - (local $$tobool56$i i32) - (local $$tobool63$i i32) - (local $$tobool76$i i32) - (local $$tobool76552$i i32) - (local $$tobool781$i i32) - (local $$tobool79$i i32) - (local $$tobool9$i i32) - (local $$tobool90 i32) - (local $$w$0 i32) - (local $$w$1 i32) - (local $$w$2 i32) - (local $$w$add165$i i32) - (local $$w$add653$i i32) - (local $$wc i32) - (local $$ws$0317 i32) - (local $$ws$1326 i32) - (local $$xor i32) - (local $$xor$i i32) - (local $$xor167$i i32) - (local $$xor186$i i32) - (local $$xor449 i32) - (local $$xor457 i32) - (local $$xor655$i i32) - (local $$xor816$i i32) - (local $$y$addr$0$i f64) - (local $$y$addr$1$i f64) - (local $$y$addr$2$i f64) - (local $$y$addr$3$i f64) - (local $$y$addr$4$i f64) - (local $$z$0$i i32) - (local $$z$0$lcssa i32) - (local $$z$0302 i32) - (local $$z$1 i32) - (local $$z$1$lcssa$i i32) - (local $$z$1548$i i32) - (local $$z$2 i32) - (local $$z$2$i i32) - (local $$z$2$i$lcssa i32) - (local $$z$3$lcssa$i i32) - (local $$z$3538$i i32) - (local $$z$4$i i32) - (local $$z$7$add$ptr742$i i32) - (local $$z$7$i i32) - (local $$z$7$i$lcssa i32) - (local $$z$7$ph$i i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 624) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$big$i - (i32.add - (local.get $sp) - (i32.const 24) - ) - ) - (local.set $$e2$i - (i32.add - (local.get $sp) - (i32.const 16) - ) - ) - (local.set $$buf$i - (i32.add - (local.get $sp) - (i32.const 588) - ) - ) - (local.set $$ebuf0$i - (i32.add - (local.get $sp) - (i32.const 576) - ) - ) - (local.set $$arg - (local.get $sp) - ) - (local.set $$buf - (i32.add - (local.get $sp) - (i32.const 536) - ) - ) - (local.set $$wc - (i32.add - (local.get $sp) - (i32.const 8) - ) - ) - (local.set $$mb - (i32.add - (local.get $sp) - (i32.const 528) - ) - ) - (local.set $$tobool25 - (i32.ne - (local.get $$f) - (i32.const 0) - ) - ) - (local.set $$add$ptr205 - (i32.add - (local.get $$buf) - (i32.const 40) - ) - ) - (local.set $$sub$ptr$lhs$cast317 - (local.get $$add$ptr205) - ) - (local.set $$add$ptr340 - (i32.add - (local.get $$buf) - (i32.const 39) - ) - ) - (local.set $$arrayidx370 - (i32.add - (local.get $$wc) - (i32.const 4) - ) - ) - (local.set $$arrayidx$i$236 - (i32.add - (local.get $$ebuf0$i) - (i32.const 12) - ) - ) - (local.set $$incdec$ptr106$i - (i32.add - (local.get $$ebuf0$i) - (i32.const 11) - ) - ) - (local.set $$sub$ptr$rhs$cast$i - (local.get $$buf$i) - ) - (local.set $$sub$ptr$lhs$cast160$i - (local.get $$arrayidx$i$236) - ) - (local.set $$sub$ptr$sub159$i - (i32.sub - (local.get $$sub$ptr$lhs$cast160$i) - (local.get $$sub$ptr$rhs$cast$i) - ) - ) - (local.set $$sub$ptr$sub145$i - (i32.sub - (i32.const -2) - (local.get $$sub$ptr$rhs$cast$i) - ) - ) - (local.set $$sub$ptr$sub153$i - (i32.add - (local.get $$sub$ptr$lhs$cast160$i) - (i32.const 2) - ) - ) - (local.set $$add$ptr213$i - (i32.add - (local.get $$big$i) - (i32.const 288) - ) - ) - (local.set $$add$ptr671$i - (i32.add - (local.get $$buf$i) - (i32.const 9) - ) - ) - (local.set $$sub$ptr$lhs$cast694$i - (local.get $$add$ptr671$i) - ) - (local.set $$incdec$ptr689$i - (i32.add - (local.get $$buf$i) - (i32.const 8) - ) - ) - (local.set $$cnt$0 - (i32.const 0) - ) - (local.set $$incdec$ptr169275 - (local.get $$fmt) - ) - (local.set $$l$0 - (i32.const 0) - ) - (local.set $$l10n$0 - (i32.const 0) - ) - (loop $label$continue$L1 - (block $label$break$L1 - (local.set $$cmp - (i32.gt_s - (local.get $$cnt$0) - (i32.const -1) - ) - ) - (block $do-once - (if - (local.get $$cmp) - (block - (local.set $$sub - (i32.sub - (i32.const 2147483647) - (local.get $$cnt$0) - ) - ) - (local.set $$cmp1 - (i32.gt_s - (local.get $$l$0) - (local.get $$sub) - ) - ) - (if - (local.get $$cmp1) - (block - (local.set $$call - (call $___errno_location) - ) - (i32.store - (local.get $$call) - (i32.const 75) - ) - (local.set $$cnt$1 - (i32.const -1) - ) - (br $do-once) - ) - (block - (local.set $$add - (i32.add - (local.get $$l$0) - (local.get $$cnt$0) - ) - ) - (local.set $$cnt$1 - (local.get $$add) - ) - (br $do-once) - ) - ) - ) - (local.set $$cnt$1 - (local.get $$cnt$0) - ) - ) - ) - (local.set $$0 - (i32.load8_s - (local.get $$incdec$ptr169275) - ) - ) - (local.set $$tobool - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$0) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (block - (local.set $$cnt$1$lcssa - (local.get $$cnt$1) - ) - (local.set $$l10n$0$lcssa - (local.get $$l10n$0) - ) - (local.set $label - (i32.const 242) - ) - (br $label$break$L1) - ) - (block - (local.set $$1 - (local.get $$0) - ) - (local.set $$incdec$ptr169274 - (local.get $$incdec$ptr169275) - ) - ) - ) - (loop $label$continue$L9 - (block $label$break$L9 - (block $switch - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case0 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default - (i32.sub - (i32.shr_s - (i32.shl - (local.get $$1) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - ) - ) - (block - (local.set $$incdec$ptr169276301 - (local.get $$incdec$ptr169274) - ) - (local.set $$z$0302 - (local.get $$incdec$ptr169274) - ) - (local.set $label - (i32.const 9) - ) - (br $label$break$L9) - (br $switch) - ) - ) - (block - (local.set $$incdec$ptr169276$lcssa - (local.get $$incdec$ptr169274) - ) - (local.set $$z$0$lcssa - (local.get $$incdec$ptr169274) - ) - (br $label$break$L9) - (br $switch) - ) - ) - (nop) - ) - (local.set $$incdec$ptr - (i32.add - (local.get $$incdec$ptr169274) - (i32.const 1) - ) - ) - (local.set $$$pre - (i32.load8_s - (local.get $$incdec$ptr) - ) - ) - (local.set $$1 - (local.get $$$pre) - ) - (local.set $$incdec$ptr169274 - (local.get $$incdec$ptr) - ) - (br $label$continue$L9) - ) - ) - (block $label$break$L12 - (if - (i32.eq - (local.get $label) - (i32.const 9) - ) - (loop $while-in - (block $while-out - (local.set $label - (i32.const 0) - ) - (local.set $$arrayidx16 - (i32.add - (local.get $$incdec$ptr169276301) - (i32.const 1) - ) - ) - (local.set $$2 - (i32.load8_s - (local.get $$arrayidx16) - ) - ) - (local.set $$cmp18 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$2) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 37) - ) - ) - (if - (i32.eqz - (local.get $$cmp18) - ) - (block - (local.set $$incdec$ptr169276$lcssa - (local.get $$incdec$ptr169276301) - ) - (local.set $$z$0$lcssa - (local.get $$z$0302) - ) - (br $label$break$L12) - ) - ) - (local.set $$incdec$ptr23 - (i32.add - (local.get $$z$0302) - (i32.const 1) - ) - ) - (local.set $$add$ptr - (i32.add - (local.get $$incdec$ptr169276301) - (i32.const 2) - ) - ) - (local.set $$3 - (i32.load8_s - (local.get $$add$ptr) - ) - ) - (local.set $$cmp13 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$3) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 37) - ) - ) - (if - (local.get $$cmp13) - (block - (local.set $$incdec$ptr169276301 - (local.get $$add$ptr) - ) - (local.set $$z$0302 - (local.get $$incdec$ptr23) - ) - (local.set $label - (i32.const 9) - ) - ) - (block - (local.set $$incdec$ptr169276$lcssa - (local.get $$add$ptr) - ) - (local.set $$z$0$lcssa - (local.get $$incdec$ptr23) - ) - (br $while-out) - ) - ) - (br $while-in) - ) - ) - ) - ) - (local.set $$sub$ptr$lhs$cast - (local.get $$z$0$lcssa) - ) - (local.set $$sub$ptr$rhs$cast - (local.get $$incdec$ptr169275) - ) - (local.set $$sub$ptr$sub - (i32.sub - (local.get $$sub$ptr$lhs$cast) - (local.get $$sub$ptr$rhs$cast) - ) - ) - (if - (local.get $$tobool25) - (block - (local.set $$4 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i - (i32.and - (local.get $$4) - (i32.const 32) - ) - ) - (local.set $$tobool$i - (i32.eq - (local.get $$and$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i) - (drop - (call $___fwritex - (local.get $$incdec$ptr169275) - (local.get $$sub$ptr$sub) - (local.get $$f) - ) - ) - ) - ) - ) - (local.set $$tobool28 - (i32.eq - (local.get $$z$0$lcssa) - (local.get $$incdec$ptr169275) - ) - ) - (if - (i32.eqz - (local.get $$tobool28) - ) - (block - (local.set $$l10n$0$phi - (local.get $$l10n$0) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169276$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$0$phi) - ) - (br $label$continue$L1) - ) - ) - (local.set $$arrayidx31 - (i32.add - (local.get $$incdec$ptr169276$lcssa) - (i32.const 1) - ) - ) - (local.set $$5 - (i32.load8_s - (local.get $$arrayidx31) - ) - ) - (local.set $$conv32 - (i32.shr_s - (i32.shl - (local.get $$5) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$isdigittmp - (i32.add - (local.get $$conv32) - (i32.const -48) - ) - ) - (local.set $$isdigit - (i32.lt_u - (local.get $$isdigittmp) - (i32.const 10) - ) - ) - (if - (local.get $$isdigit) - (block - (local.set $$arrayidx35 - (i32.add - (local.get $$incdec$ptr169276$lcssa) - (i32.const 2) - ) - ) - (local.set $$6 - (i32.load8_s - (local.get $$arrayidx35) - ) - ) - (local.set $$cmp37 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$6) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 36) - ) - ) - (local.set $$add$ptr43 - (i32.add - (local.get $$incdec$ptr169276$lcssa) - (i32.const 3) - ) - ) - (local.set $$add$ptr43$arrayidx31 - (if (result i32) - (local.get $$cmp37) - (local.get $$add$ptr43) - (local.get $$arrayidx31) - ) - ) - (local.set $$$l10n$0 - (if (result i32) - (local.get $$cmp37) - (i32.const 1) - (local.get $$l10n$0) - ) - ) - (local.set $$isdigittmp$ - (if (result i32) - (local.get $$cmp37) - (local.get $$isdigittmp) - (i32.const -1) - ) - ) - (local.set $$$pre357 - (i32.load8_s - (local.get $$add$ptr43$arrayidx31) - ) - ) - (local.set $$7 - (local.get $$$pre357) - ) - (local.set $$argpos$0 - (local.get $$isdigittmp$) - ) - (local.set $$l10n$1 - (local.get $$$l10n$0) - ) - (local.set $$storemerge - (local.get $$add$ptr43$arrayidx31) - ) - ) - (block - (local.set $$7 - (local.get $$5) - ) - (local.set $$argpos$0 - (i32.const -1) - ) - (local.set $$l10n$1 - (local.get $$l10n$0) - ) - (local.set $$storemerge - (local.get $$arrayidx31) - ) - ) - ) - (local.set $$conv48$307 - (i32.shr_s - (i32.shl - (local.get $$7) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$8 - (i32.and - (local.get $$conv48$307) - (i32.const -32) - ) - ) - (local.set $$cmp50$308 - (i32.eq - (local.get $$8) - (i32.const 32) - ) - ) - (block $label$break$L25 - (if - (local.get $$cmp50$308) - (block - (local.set $$9 - (local.get $$7) - ) - (local.set $$conv48311 - (local.get $$conv48$307) - ) - (local.set $$fl$0310 - (i32.const 0) - ) - (local.set $$storemerge$186309 - (local.get $$storemerge) - ) - (loop $while-in4 - (block $while-out3 - (local.set $$sub54 - (i32.add - (local.get $$conv48311) - (i32.const -32) - ) - ) - (local.set $$shl - (i32.shl - (i32.const 1) - (local.get $$sub54) - ) - ) - (local.set $$and - (i32.and - (local.get $$shl) - (i32.const 75913) - ) - ) - (local.set $$tobool55 - (i32.eq - (local.get $$and) - (i32.const 0) - ) - ) - (if - (local.get $$tobool55) - (block - (local.set $$12 - (local.get $$9) - ) - (local.set $$fl$0284 - (local.get $$fl$0310) - ) - (local.set $$storemerge$186282 - (local.get $$storemerge$186309) - ) - (br $label$break$L25) - ) - ) - (local.set $$conv58 - (i32.shr_s - (i32.shl - (local.get $$9) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$sub59 - (i32.add - (local.get $$conv58) - (i32.const -32) - ) - ) - (local.set $$shl60 - (i32.shl - (i32.const 1) - (local.get $$sub59) - ) - ) - (local.set $$or - (i32.or - (local.get $$shl60) - (local.get $$fl$0310) - ) - ) - (local.set $$incdec$ptr62 - (i32.add - (local.get $$storemerge$186309) - (i32.const 1) - ) - ) - (local.set $$10 - (i32.load8_s - (local.get $$incdec$ptr62) - ) - ) - (local.set $$conv48 - (i32.shr_s - (i32.shl - (local.get $$10) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$11 - (i32.and - (local.get $$conv48) - (i32.const -32) - ) - ) - (local.set $$cmp50 - (i32.eq - (local.get $$11) - (i32.const 32) - ) - ) - (if - (local.get $$cmp50) - (block - (local.set $$9 - (local.get $$10) - ) - (local.set $$conv48311 - (local.get $$conv48) - ) - (local.set $$fl$0310 - (local.get $$or) - ) - (local.set $$storemerge$186309 - (local.get $$incdec$ptr62) - ) - ) - (block - (local.set $$12 - (local.get $$10) - ) - (local.set $$fl$0284 - (local.get $$or) - ) - (local.set $$storemerge$186282 - (local.get $$incdec$ptr62) - ) - (br $while-out3) - ) - ) - (br $while-in4) - ) - ) - ) - (block - (local.set $$12 - (local.get $$7) - ) - (local.set $$fl$0284 - (i32.const 0) - ) - (local.set $$storemerge$186282 - (local.get $$storemerge) - ) - ) - ) - ) - (local.set $$cmp65 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$12) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 42) - ) - ) - (block $do-once5 - (if - (local.get $$cmp65) - (block - (local.set $$arrayidx68 - (i32.add - (local.get $$storemerge$186282) - (i32.const 1) - ) - ) - (local.set $$13 - (i32.load8_s - (local.get $$arrayidx68) - ) - ) - (local.set $$conv69 - (i32.shr_s - (i32.shl - (local.get $$13) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$isdigittmp189 - (i32.add - (local.get $$conv69) - (i32.const -48) - ) - ) - (local.set $$isdigit190 - (i32.lt_u - (local.get $$isdigittmp189) - (i32.const 10) - ) - ) - (if - (local.get $$isdigit190) - (block - (local.set $$arrayidx73 - (i32.add - (local.get $$storemerge$186282) - (i32.const 2) - ) - ) - (local.set $$14 - (i32.load8_s - (local.get $$arrayidx73) - ) - ) - (local.set $$cmp75 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$14) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 36) - ) - ) - (if - (local.get $$cmp75) - (block - (local.set $$arrayidx81 - (i32.add - (local.get $$nl_type) - (i32.shl - (local.get $$isdigittmp189) - (i32.const 2) - ) - ) - ) - (i32.store - (local.get $$arrayidx81) - (i32.const 10) - ) - (local.set $$15 - (i32.load8_s - (local.get $$arrayidx68) - ) - ) - (local.set $$conv83 - (i32.shr_s - (i32.shl - (local.get $$15) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$sub84 - (i32.add - (local.get $$conv83) - (i32.const -48) - ) - ) - (local.set $$i86 - (i32.add - (local.get $$nl_arg) - (i32.shl - (local.get $$sub84) - (i32.const 3) - ) - ) - ) - (local.set $$16 - (local.get $$i86) - ) - (local.set $$17 - (local.get $$16) - ) - (local.set $$18 - (i32.load - (local.get $$17) - ) - ) - (local.set $$19 - (i32.add - (local.get $$16) - (i32.const 4) - ) - ) - (local.set $$20 - (local.get $$19) - ) - (local.set $$21 - (i32.load - (local.get $$20) - ) - ) - (local.set $$add$ptr88 - (i32.add - (local.get $$storemerge$186282) - (i32.const 3) - ) - ) - (local.set $$l10n$2 - (i32.const 1) - ) - (local.set $$storemerge$191 - (local.get $$add$ptr88) - ) - (local.set $$w$0 - (local.get $$18) - ) - ) - (local.set $label - (i32.const 24) - ) - ) - ) - (local.set $label - (i32.const 24) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 24) - ) - (block - (local.set $label - (i32.const 0) - ) - (local.set $$tobool90 - (i32.eq - (local.get $$l10n$1) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool90) - ) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (if - (i32.eqz - (local.get $$tobool25) - ) - (block - (local.set $$fl$1 - (local.get $$fl$0284) - ) - (local.set $$incdec$ptr169269 - (local.get $$arrayidx68) - ) - (local.set $$l10n$3 - (i32.const 0) - ) - (local.set $$w$1 - (i32.const 0) - ) - (br $do-once5) - ) - ) - (local.set $$arglist_current - (i32.load - (local.get $$ap) - ) - ) - (local.set $$22 - (local.get $$arglist_current) - ) - (local.set $$23 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded4 - (local.get $$23) - ) - (local.set $$expanded - (i32.sub - (local.get $$expanded4) - (i32.const 1) - ) - ) - (local.set $$24 - (i32.add - (local.get $$22) - (local.get $$expanded) - ) - ) - (local.set $$25 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded8 - (local.get $$25) - ) - (local.set $$expanded7 - (i32.sub - (local.get $$expanded8) - (i32.const 1) - ) - ) - (local.set $$expanded6 - (i32.xor - (local.get $$expanded7) - (i32.const -1) - ) - ) - (local.set $$26 - (i32.and - (local.get $$24) - (local.get $$expanded6) - ) - ) - (local.set $$27 - (local.get $$26) - ) - (local.set $$28 - (i32.load - (local.get $$27) - ) - ) - (local.set $$arglist_next - (i32.add - (local.get $$27) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next) - ) - (local.set $$l10n$2 - (i32.const 0) - ) - (local.set $$storemerge$191 - (local.get $$arrayidx68) - ) - (local.set $$w$0 - (local.get $$28) - ) - ) - ) - (local.set $$cmp97 - (i32.lt_s - (local.get $$w$0) - (i32.const 0) - ) - ) - (if - (local.get $$cmp97) - (block - (local.set $$or100 - (i32.or - (local.get $$fl$0284) - (i32.const 8192) - ) - ) - (local.set $$sub101 - (i32.sub - (i32.const 0) - (local.get $$w$0) - ) - ) - (local.set $$fl$1 - (local.get $$or100) - ) - (local.set $$incdec$ptr169269 - (local.get $$storemerge$191) - ) - (local.set $$l10n$3 - (local.get $$l10n$2) - ) - (local.set $$w$1 - (local.get $$sub101) - ) - ) - (block - (local.set $$fl$1 - (local.get $$fl$0284) - ) - (local.set $$incdec$ptr169269 - (local.get $$storemerge$191) - ) - (local.set $$l10n$3 - (local.get $$l10n$2) - ) - (local.set $$w$1 - (local.get $$w$0) - ) - ) - ) - ) - (block - (local.set $$conv$4$i - (i32.shr_s - (i32.shl - (local.get $$12) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$isdigittmp$5$i - (i32.add - (local.get $$conv$4$i) - (i32.const -48) - ) - ) - (local.set $$isdigit$6$i - (i32.lt_u - (local.get $$isdigittmp$5$i) - (i32.const 10) - ) - ) - (if - (local.get $$isdigit$6$i) - (block - (local.set $$29 - (local.get $$storemerge$186282) - ) - (local.set $$i$07$i - (i32.const 0) - ) - (local.set $$isdigittmp8$i - (local.get $$isdigittmp$5$i) - ) - (loop $while-in8 - (block $while-out7 - (local.set $$mul$i - (i32.mul - (local.get $$i$07$i) - (i32.const 10) - ) - ) - (local.set $$add$i - (i32.add - (local.get $$mul$i) - (local.get $$isdigittmp8$i) - ) - ) - (local.set $$incdec$ptr$i - (i32.add - (local.get $$29) - (i32.const 1) - ) - ) - (local.set $$30 - (i32.load8_s - (local.get $$incdec$ptr$i) - ) - ) - (local.set $$conv$i - (i32.shr_s - (i32.shl - (local.get $$30) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$isdigittmp$i - (i32.add - (local.get $$conv$i) - (i32.const -48) - ) - ) - (local.set $$isdigit$i - (i32.lt_u - (local.get $$isdigittmp$i) - (i32.const 10) - ) - ) - (if - (local.get $$isdigit$i) - (block - (local.set $$29 - (local.get $$incdec$ptr$i) - ) - (local.set $$i$07$i - (local.get $$add$i) - ) - (local.set $$isdigittmp8$i - (local.get $$isdigittmp$i) - ) - ) - (block - (local.set $$add$i$lcssa - (local.get $$add$i) - ) - (local.set $$incdec$ptr$i$lcssa - (local.get $$incdec$ptr$i) - ) - (br $while-out7) - ) - ) - (br $while-in8) - ) - ) - (local.set $$cmp105 - (i32.lt_s - (local.get $$add$i$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$cmp105) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L1) - ) - (block - (local.set $$fl$1 - (local.get $$fl$0284) - ) - (local.set $$incdec$ptr169269 - (local.get $$incdec$ptr$i$lcssa) - ) - (local.set $$l10n$3 - (local.get $$l10n$1) - ) - (local.set $$w$1 - (local.get $$add$i$lcssa) - ) - ) - ) - ) - (block - (local.set $$fl$1 - (local.get $$fl$0284) - ) - (local.set $$incdec$ptr169269 - (local.get $$storemerge$186282) - ) - (local.set $$l10n$3 - (local.get $$l10n$1) - ) - (local.set $$w$1 - (i32.const 0) - ) - ) - ) - ) - ) - ) - (local.set $$31 - (i32.load8_s - (local.get $$incdec$ptr169269) - ) - ) - (local.set $$cmp111 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$31) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 46) - ) - ) - (block $label$break$L46 - (if - (local.get $$cmp111) - (block - (local.set $$arrayidx114 - (i32.add - (local.get $$incdec$ptr169269) - (i32.const 1) - ) - ) - (local.set $$32 - (i32.load8_s - (local.get $$arrayidx114) - ) - ) - (local.set $$cmp116 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$32) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 42) - ) - ) - (if - (i32.eqz - (local.get $$cmp116) - ) - (block - (local.set $$conv$4$i$197 - (i32.shr_s - (i32.shl - (local.get $$32) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$isdigittmp$5$i$198 - (i32.add - (local.get $$conv$4$i$197) - (i32.const -48) - ) - ) - (local.set $$isdigit$6$i$199 - (i32.lt_u - (local.get $$isdigittmp$5$i$198) - (i32.const 10) - ) - ) - (if - (local.get $$isdigit$6$i$199) - (block - (local.set $$49 - (local.get $$arrayidx114) - ) - (local.set $$i$07$i$201 - (i32.const 0) - ) - (local.set $$isdigittmp8$i$200 - (local.get $$isdigittmp$5$i$198) - ) - ) - (block - (local.set $$incdec$ptr169272 - (local.get $$arrayidx114) - ) - (local.set $$p$0 - (i32.const 0) - ) - (br $label$break$L46) - ) - ) - (loop $while-in11 - (block $while-out10 - (local.set $$mul$i$202 - (i32.mul - (local.get $$i$07$i$201) - (i32.const 10) - ) - ) - (local.set $$add$i$203 - (i32.add - (local.get $$mul$i$202) - (local.get $$isdigittmp8$i$200) - ) - ) - (local.set $$incdec$ptr$i$204 - (i32.add - (local.get $$49) - (i32.const 1) - ) - ) - (local.set $$50 - (i32.load8_s - (local.get $$incdec$ptr$i$204) - ) - ) - (local.set $$conv$i$205 - (i32.shr_s - (i32.shl - (local.get $$50) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$isdigittmp$i$206 - (i32.add - (local.get $$conv$i$205) - (i32.const -48) - ) - ) - (local.set $$isdigit$i$207 - (i32.lt_u - (local.get $$isdigittmp$i$206) - (i32.const 10) - ) - ) - (if - (local.get $$isdigit$i$207) - (block - (local.set $$49 - (local.get $$incdec$ptr$i$204) - ) - (local.set $$i$07$i$201 - (local.get $$add$i$203) - ) - (local.set $$isdigittmp8$i$200 - (local.get $$isdigittmp$i$206) - ) - ) - (block - (local.set $$incdec$ptr169272 - (local.get $$incdec$ptr$i$204) - ) - (local.set $$p$0 - (local.get $$add$i$203) - ) - (br $label$break$L46) - ) - ) - (br $while-in11) - ) - ) - ) - ) - (local.set $$arrayidx119 - (i32.add - (local.get $$incdec$ptr169269) - (i32.const 2) - ) - ) - (local.set $$33 - (i32.load8_s - (local.get $$arrayidx119) - ) - ) - (local.set $$conv120 - (i32.shr_s - (i32.shl - (local.get $$33) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$isdigittmp187 - (i32.add - (local.get $$conv120) - (i32.const -48) - ) - ) - (local.set $$isdigit188 - (i32.lt_u - (local.get $$isdigittmp187) - (i32.const 10) - ) - ) - (if - (local.get $$isdigit188) - (block - (local.set $$arrayidx124 - (i32.add - (local.get $$incdec$ptr169269) - (i32.const 3) - ) - ) - (local.set $$34 - (i32.load8_s - (local.get $$arrayidx124) - ) - ) - (local.set $$cmp126 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$34) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 36) - ) - ) - (if - (local.get $$cmp126) - (block - (local.set $$arrayidx132 - (i32.add - (local.get $$nl_type) - (i32.shl - (local.get $$isdigittmp187) - (i32.const 2) - ) - ) - ) - (i32.store - (local.get $$arrayidx132) - (i32.const 10) - ) - (local.set $$35 - (i32.load8_s - (local.get $$arrayidx119) - ) - ) - (local.set $$conv134 - (i32.shr_s - (i32.shl - (local.get $$35) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$sub135 - (i32.add - (local.get $$conv134) - (i32.const -48) - ) - ) - (local.set $$i137 - (i32.add - (local.get $$nl_arg) - (i32.shl - (local.get $$sub135) - (i32.const 3) - ) - ) - ) - (local.set $$36 - (local.get $$i137) - ) - (local.set $$37 - (local.get $$36) - ) - (local.set $$38 - (i32.load - (local.get $$37) - ) - ) - (local.set $$39 - (i32.add - (local.get $$36) - (i32.const 4) - ) - ) - (local.set $$40 - (local.get $$39) - ) - (local.set $$41 - (i32.load - (local.get $$40) - ) - ) - (local.set $$add$ptr139 - (i32.add - (local.get $$incdec$ptr169269) - (i32.const 4) - ) - ) - (local.set $$incdec$ptr169272 - (local.get $$add$ptr139) - ) - (local.set $$p$0 - (local.get $$38) - ) - (br $label$break$L46) - ) - ) - ) - ) - (local.set $$tobool141 - (i32.eq - (local.get $$l10n$3) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool141) - ) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (if - (local.get $$tobool25) - (block - (local.set $$arglist_current2 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$42 - (local.get $$arglist_current2) - ) - (local.set $$43 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded11 - (local.get $$43) - ) - (local.set $$expanded10 - (i32.sub - (local.get $$expanded11) - (i32.const 1) - ) - ) - (local.set $$44 - (i32.add - (local.get $$42) - (local.get $$expanded10) - ) - ) - (local.set $$45 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded15 - (local.get $$45) - ) - (local.set $$expanded14 - (i32.sub - (local.get $$expanded15) - (i32.const 1) - ) - ) - (local.set $$expanded13 - (i32.xor - (local.get $$expanded14) - (i32.const -1) - ) - ) - (local.set $$46 - (i32.and - (local.get $$44) - (local.get $$expanded13) - ) - ) - (local.set $$47 - (local.get $$46) - ) - (local.set $$48 - (i32.load - (local.get $$47) - ) - ) - (local.set $$arglist_next3 - (i32.add - (local.get $$47) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next3) - ) - (local.set $$incdec$ptr169272 - (local.get $$arrayidx119) - ) - (local.set $$p$0 - (local.get $$48) - ) - ) - (block - (local.set $$incdec$ptr169272 - (local.get $$arrayidx119) - ) - (local.set $$p$0 - (i32.const 0) - ) - ) - ) - ) - (block - (local.set $$incdec$ptr169272 - (local.get $$incdec$ptr169269) - ) - (local.set $$p$0 - (i32.const -1) - ) - ) - ) - ) - (local.set $$incdec$ptr169271 - (local.get $$incdec$ptr169272) - ) - (local.set $$st$0 - (i32.const 0) - ) - (loop $while-in13 - (block $while-out12 - (local.set $$51 - (i32.load8_s - (local.get $$incdec$ptr169271) - ) - ) - (local.set $$conv163 - (i32.shr_s - (i32.shl - (local.get $$51) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$sub164 - (i32.add - (local.get $$conv163) - (i32.const -65) - ) - ) - (local.set $$cmp165 - (i32.gt_u - (local.get $$sub164) - (i32.const 57) - ) - ) - (if - (local.get $$cmp165) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (local.set $$incdec$ptr169 - (i32.add - (local.get $$incdec$ptr169271) - (i32.const 1) - ) - ) - (local.set $$arrayidx173 - (i32.add - (i32.add - (i32.const 3611) - (i32.mul - (local.get $$st$0) - (i32.const 58) - ) - ) - (local.get $$sub164) - ) - ) - (local.set $$52 - (i32.load8_s - (local.get $$arrayidx173) - ) - ) - (local.set $$conv174 - (i32.and - (local.get $$52) - (i32.const 255) - ) - ) - (local.set $$sub175 - (i32.add - (local.get $$conv174) - (i32.const -1) - ) - ) - (local.set $$cmp176 - (i32.lt_u - (local.get $$sub175) - (i32.const 8) - ) - ) - (if - (local.get $$cmp176) - (block - (local.set $$incdec$ptr169271 - (local.get $$incdec$ptr169) - ) - (local.set $$st$0 - (local.get $$conv174) - ) - ) - (block - (local.set $$$lcssa - (local.get $$52) - ) - (local.set $$conv174$lcssa - (local.get $$conv174) - ) - (local.set $$incdec$ptr169$lcssa - (local.get $$incdec$ptr169) - ) - (local.set $$incdec$ptr169271$lcssa414 - (local.get $$incdec$ptr169271) - ) - (local.set $$st$0$lcssa415 - (local.get $$st$0) - ) - (br $while-out12) - ) - ) - (br $while-in13) - ) - ) - (local.set $$tobool178 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$$lcssa) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - ) - (if - (local.get $$tobool178) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (local.set $$cmp181 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$$lcssa) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 19) - ) - ) - (local.set $$cmp184 - (i32.gt_s - (local.get $$argpos$0) - (i32.const -1) - ) - ) - (block $do-once14 - (if - (local.get $$cmp181) - (if - (local.get $$cmp184) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L1) - ) - (local.set $label - (i32.const 52) - ) - ) - (block - (if - (local.get $$cmp184) - (block - (local.set $$arrayidx192 - (i32.add - (local.get $$nl_type) - (i32.shl - (local.get $$argpos$0) - (i32.const 2) - ) - ) - ) - (i32.store - (local.get $$arrayidx192) - (local.get $$conv174$lcssa) - ) - (local.set $$53 - (i32.add - (local.get $$nl_arg) - (i32.shl - (local.get $$argpos$0) - (i32.const 3) - ) - ) - ) - (local.set $$54 - (local.get $$53) - ) - (local.set $$55 - (local.get $$54) - ) - (local.set $$56 - (i32.load - (local.get $$55) - ) - ) - (local.set $$57 - (i32.add - (local.get $$54) - (i32.const 4) - ) - ) - (local.set $$58 - (local.get $$57) - ) - (local.set $$59 - (i32.load - (local.get $$58) - ) - ) - (local.set $$60 - (local.get $$arg) - ) - (local.set $$61 - (local.get $$60) - ) - (i32.store - (local.get $$61) - (local.get $$56) - ) - (local.set $$62 - (i32.add - (local.get $$60) - (i32.const 4) - ) - ) - (local.set $$63 - (local.get $$62) - ) - (i32.store - (local.get $$63) - (local.get $$59) - ) - (local.set $label - (i32.const 52) - ) - (br $do-once14) - ) - ) - (if - (i32.eqz - (local.get $$tobool25) - ) - (block - (local.set $$retval$0 - (i32.const 0) - ) - (br $label$break$L1) - ) - ) - (call $_pop_arg_336 - (local.get $$arg) - (local.get $$conv174$lcssa) - (local.get $$ap) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 52) - ) - (block - (local.set $label - (i32.const 0) - ) - (if - (i32.eqz - (local.get $$tobool25) - ) - (block - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - ) - ) - ) - ) - (local.set $$64 - (i32.load8_s - (local.get $$incdec$ptr169271$lcssa414) - ) - ) - (local.set $$conv207 - (i32.shr_s - (i32.shl - (local.get $$64) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$tobool208 - (i32.ne - (local.get $$st$0$lcssa415) - (i32.const 0) - ) - ) - (local.set $$and210 - (i32.and - (local.get $$conv207) - (i32.const 15) - ) - ) - (local.set $$cmp211 - (i32.eq - (local.get $$and210) - (i32.const 3) - ) - ) - (local.set $$or$cond192 - (i32.and - (local.get $$tobool208) - (local.get $$cmp211) - ) - ) - (local.set $$and214 - (i32.and - (local.get $$conv207) - (i32.const -33) - ) - ) - (local.set $$t$0 - (if (result i32) - (local.get $$or$cond192) - (local.get $$and214) - (local.get $$conv207) - ) - ) - (local.set $$and216 - (i32.and - (local.get $$fl$1) - (i32.const 8192) - ) - ) - (local.set $$tobool217 - (i32.eq - (local.get $$and216) - (i32.const 0) - ) - ) - (local.set $$and219 - (i32.and - (local.get $$fl$1) - (i32.const -65537) - ) - ) - (local.set $$fl$1$and219 - (if (result i32) - (local.get $$tobool217) - (local.get $$fl$1) - (local.get $$and219) - ) - ) - (block $label$break$L75 - (block $switch17 - (block $switch-default120 - (block $switch-case119 - (block $switch-case48 - (block $switch-case47 - (block $switch-case46 - (block $switch-case45 - (block $switch-case44 - (block $switch-case43 - (block $switch-case42 - (block $switch-case41 - (block $switch-case40 - (block $switch-case39 - (block $switch-case38 - (block $switch-case37 - (block $switch-case36 - (block $switch-case35 - (block $switch-case34 - (block $switch-case33 - (block $switch-case30 - (block $switch-case29 - (block $switch-case28 - (block $switch-case27 - (br_table $switch-case42 $switch-default120 $switch-case40 $switch-default120 $switch-case45 $switch-case44 $switch-case43 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case41 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case29 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case46 $switch-default120 $switch-case37 $switch-case35 $switch-case119 $switch-case48 $switch-case47 $switch-default120 $switch-case34 $switch-default120 $switch-default120 $switch-default120 $switch-case38 $switch-case27 $switch-case33 $switch-case28 $switch-default120 $switch-default120 $switch-case39 $switch-default120 $switch-case36 $switch-default120 $switch-default120 $switch-case30 $switch-default120 - (i32.sub - (local.get $$t$0) - (i32.const 65) - ) - ) - ) - (block - (block $switch18 - (block $switch-default26 - (block $switch-case25 - (block $switch-case24 - (block $switch-case23 - (block $switch-case22 - (block $switch-case21 - (block $switch-case20 - (block $switch-case19 - (br_table $switch-case19 $switch-case20 $switch-case21 $switch-case22 $switch-case23 $switch-default26 $switch-case24 $switch-case25 $switch-default26 - (i32.sub - (local.get $$st$0$lcssa415) - (i32.const 0) - ) - ) - ) - (block - (local.set $$71 - (i32.load - (local.get $$arg) - ) - ) - (i32.store - (local.get $$71) - (local.get $$cnt$1) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch18) - ) - ) - (block - (local.set $$72 - (i32.load - (local.get $$arg) - ) - ) - (i32.store - (local.get $$72) - (local.get $$cnt$1) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch18) - ) - ) - (block - (local.set $$73 - (i32.lt_s - (local.get $$cnt$1) - (i32.const 0) - ) - ) - (local.set $$74 - (i32.shr_s - (i32.shl - (local.get $$73) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$75 - (i32.load - (local.get $$arg) - ) - ) - (local.set $$76 - (local.get $$75) - ) - (local.set $$77 - (local.get $$76) - ) - (i32.store - (local.get $$77) - (local.get $$cnt$1) - ) - (local.set $$78 - (i32.add - (local.get $$76) - (i32.const 4) - ) - ) - (local.set $$79 - (local.get $$78) - ) - (i32.store - (local.get $$79) - (local.get $$74) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch18) - ) - ) - (block - (local.set $$conv229 - (i32.and - (local.get $$cnt$1) - (i32.const 65535) - ) - ) - (local.set $$80 - (i32.load - (local.get $$arg) - ) - ) - (i32.store16 - (local.get $$80) - (local.get $$conv229) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch18) - ) - ) - (block - (local.set $$conv232 - (i32.and - (local.get $$cnt$1) - (i32.const 255) - ) - ) - (local.set $$81 - (i32.load - (local.get $$arg) - ) - ) - (i32.store8 - (local.get $$81) - (local.get $$conv232) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch18) - ) - ) - (block - (local.set $$82 - (i32.load - (local.get $$arg) - ) - ) - (i32.store - (local.get $$82) - (local.get $$cnt$1) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch18) - ) - ) - (block - (local.set $$83 - (i32.lt_s - (local.get $$cnt$1) - (i32.const 0) - ) - ) - (local.set $$84 - (i32.shr_s - (i32.shl - (local.get $$83) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$85 - (i32.load - (local.get $$arg) - ) - ) - (local.set $$86 - (local.get $$85) - ) - (local.set $$87 - (local.get $$86) - ) - (i32.store - (local.get $$87) - (local.get $$cnt$1) - ) - (local.set $$88 - (i32.add - (local.get $$86) - (i32.const 4) - ) - ) - (local.set $$89 - (local.get $$88) - ) - (i32.store - (local.get $$89) - (local.get $$84) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch18) - ) - ) - (block - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - ) - ) - (br $switch17) - ) - ) - (block - (local.set $$cmp240 - (i32.gt_u - (local.get $$p$0) - (i32.const 8) - ) - ) - (local.set $$cond245 - (if (result i32) - (local.get $$cmp240) - (local.get $$p$0) - (i32.const 8) - ) - ) - (local.set $$or246 - (i32.or - (local.get $$fl$1$and219) - (i32.const 8) - ) - ) - (local.set $$fl$3 - (local.get $$or246) - ) - (local.set $$p$1 - (local.get $$cond245) - ) - (local.set $$t$1 - (i32.const 120) - ) - (local.set $label - (i32.const 64) - ) - (br $switch17) - ) - ) - (nop) - ) - (block - (local.set $$fl$3 - (local.get $$fl$1$and219) - ) - (local.set $$p$1 - (local.get $$p$0) - ) - (local.set $$t$1 - (local.get $$t$0) - ) - (local.set $label - (i32.const 64) - ) - (br $switch17) - ) - ) - (block - (local.set $$116 - (local.get $$arg) - ) - (local.set $$117 - (local.get $$116) - ) - (local.set $$118 - (i32.load - (local.get $$117) - ) - ) - (local.set $$119 - (i32.add - (local.get $$116) - (i32.const 4) - ) - ) - (local.set $$120 - (local.get $$119) - ) - (local.set $$121 - (i32.load - (local.get $$120) - ) - ) - (local.set $$122 - (i32.eq - (local.get $$118) - (i32.const 0) - ) - ) - (local.set $$123 - (i32.eq - (local.get $$121) - (i32.const 0) - ) - ) - (local.set $$124 - (i32.and - (local.get $$122) - (local.get $$123) - ) - ) - (if - (local.get $$124) - (local.set $$s$addr$0$lcssa$i$229 - (local.get $$add$ptr205) - ) - (block - (local.set $$126 - (local.get $$118) - ) - (local.set $$129 - (local.get $$121) - ) - (local.set $$s$addr$06$i$221 - (local.get $$add$ptr205) - ) - (loop $while-in32 - (block $while-out31 - (local.set $$125 - (i32.and - (local.get $$126) - (i32.const 7) - ) - ) - (local.set $$127 - (i32.or - (local.get $$125) - (i32.const 48) - ) - ) - (local.set $$128 - (i32.and - (local.get $$127) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr$i$225 - (i32.add - (local.get $$s$addr$06$i$221) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr$i$225) - (local.get $$128) - ) - (local.set $$130 - (call $_bitshift64Lshr - (local.get $$126) - (local.get $$129) - (i32.const 3) - ) - ) - (local.set $$131 - (global.get $tempRet0) - ) - (local.set $$132 - (i32.eq - (local.get $$130) - (i32.const 0) - ) - ) - (local.set $$133 - (i32.eq - (local.get $$131) - (i32.const 0) - ) - ) - (local.set $$134 - (i32.and - (local.get $$132) - (local.get $$133) - ) - ) - (if - (local.get $$134) - (block - (local.set $$s$addr$0$lcssa$i$229 - (local.get $$incdec$ptr$i$225) - ) - (br $while-out31) - ) - (block - (local.set $$126 - (local.get $$130) - ) - (local.set $$129 - (local.get $$131) - ) - (local.set $$s$addr$06$i$221 - (local.get $$incdec$ptr$i$225) - ) - ) - ) - (br $while-in32) - ) - ) - ) - ) - (local.set $$and263 - (i32.and - (local.get $$fl$1$and219) - (i32.const 8) - ) - ) - (local.set $$tobool264 - (i32.eq - (local.get $$and263) - (i32.const 0) - ) - ) - (if - (local.get $$tobool264) - (block - (local.set $$a$0 - (local.get $$s$addr$0$lcssa$i$229) - ) - (local.set $$fl$4 - (local.get $$fl$1$and219) - ) - (local.set $$p$2 - (local.get $$p$0) - ) - (local.set $$pl$1 - (i32.const 0) - ) - (local.set $$prefix$1 - (i32.const 4091) - ) - (local.set $label - (i32.const 77) - ) - ) - (block - (local.set $$sub$ptr$rhs$cast267 - (local.get $$s$addr$0$lcssa$i$229) - ) - (local.set $$sub$ptr$sub268 - (i32.sub - (local.get $$sub$ptr$lhs$cast317) - (local.get $$sub$ptr$rhs$cast267) - ) - ) - (local.set $$add269 - (i32.add - (local.get $$sub$ptr$sub268) - (i32.const 1) - ) - ) - (local.set $$cmp270 - (i32.lt_s - (local.get $$p$0) - (local.get $$add269) - ) - ) - (local.set $$add269$p$0 - (if (result i32) - (local.get $$cmp270) - (local.get $$add269) - (local.get $$p$0) - ) - ) - (local.set $$a$0 - (local.get $$s$addr$0$lcssa$i$229) - ) - (local.set $$fl$4 - (local.get $$fl$1$and219) - ) - (local.set $$p$2 - (local.get $$add269$p$0) - ) - (local.set $$pl$1 - (i32.const 0) - ) - (local.set $$prefix$1 - (i32.const 4091) - ) - (local.set $label - (i32.const 77) - ) - ) - ) - (br $switch17) - ) - ) - (nop) - ) - (block - (local.set $$135 - (local.get $$arg) - ) - (local.set $$136 - (local.get $$135) - ) - (local.set $$137 - (i32.load - (local.get $$136) - ) - ) - (local.set $$138 - (i32.add - (local.get $$135) - (i32.const 4) - ) - ) - (local.set $$139 - (local.get $$138) - ) - (local.set $$140 - (i32.load - (local.get $$139) - ) - ) - (local.set $$141 - (i32.lt_s - (local.get $$140) - (i32.const 0) - ) - ) - (if - (local.get $$141) - (block - (local.set $$142 - (call $_i64Subtract - (i32.const 0) - (i32.const 0) - (local.get $$137) - (local.get $$140) - ) - ) - (local.set $$143 - (global.get $tempRet0) - ) - (local.set $$144 - (local.get $$arg) - ) - (local.set $$145 - (local.get $$144) - ) - (i32.store - (local.get $$145) - (local.get $$142) - ) - (local.set $$146 - (i32.add - (local.get $$144) - (i32.const 4) - ) - ) - (local.set $$147 - (local.get $$146) - ) - (i32.store - (local.get $$147) - (local.get $$143) - ) - (local.set $$148 - (local.get $$142) - ) - (local.set $$149 - (local.get $$143) - ) - (local.set $$pl$0 - (i32.const 1) - ) - (local.set $$prefix$0 - (i32.const 4091) - ) - (local.set $label - (i32.const 76) - ) - (br $label$break$L75) - ) - ) - (local.set $$and289 - (i32.and - (local.get $$fl$1$and219) - (i32.const 2048) - ) - ) - (local.set $$tobool290 - (i32.eq - (local.get $$and289) - (i32.const 0) - ) - ) - (if - (local.get $$tobool290) - (block - (local.set $$and294 - (i32.and - (local.get $$fl$1$and219) - (i32.const 1) - ) - ) - (local.set $$tobool295 - (i32.eq - (local.get $$and294) - (i32.const 0) - ) - ) - (local.set $$$ - (if (result i32) - (local.get $$tobool295) - (i32.const 4091) - (i32.const 4093) - ) - ) - (local.set $$148 - (local.get $$137) - ) - (local.set $$149 - (local.get $$140) - ) - (local.set $$pl$0 - (local.get $$and294) - ) - (local.set $$prefix$0 - (local.get $$$) - ) - (local.set $label - (i32.const 76) - ) - ) - (block - (local.set $$148 - (local.get $$137) - ) - (local.set $$149 - (local.get $$140) - ) - (local.set $$pl$0 - (i32.const 1) - ) - (local.set $$prefix$0 - (i32.const 4092) - ) - (local.set $label - (i32.const 76) - ) - ) - ) - (br $switch17) - ) - ) - (block - (local.set $$65 - (local.get $$arg) - ) - (local.set $$66 - (local.get $$65) - ) - (local.set $$67 - (i32.load - (local.get $$66) - ) - ) - (local.set $$68 - (i32.add - (local.get $$65) - (i32.const 4) - ) - ) - (local.set $$69 - (local.get $$68) - ) - (local.set $$70 - (i32.load - (local.get $$69) - ) - ) - (local.set $$148 - (local.get $$67) - ) - (local.set $$149 - (local.get $$70) - ) - (local.set $$pl$0 - (i32.const 0) - ) - (local.set $$prefix$0 - (i32.const 4091) - ) - (local.set $label - (i32.const 76) - ) - (br $switch17) - ) - ) - (block - (local.set $$161 - (local.get $$arg) - ) - (local.set $$162 - (local.get $$161) - ) - (local.set $$163 - (i32.load - (local.get $$162) - ) - ) - (local.set $$164 - (i32.add - (local.get $$161) - (i32.const 4) - ) - ) - (local.set $$165 - (local.get $$164) - ) - (local.set $$166 - (i32.load - (local.get $$165) - ) - ) - (local.set $$167 - (i32.and - (local.get $$163) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $$add$ptr340) - (local.get $$167) - ) - (local.set $$a$2 - (local.get $$add$ptr340) - ) - (local.set $$fl$6 - (local.get $$and219) - ) - (local.set $$p$5 - (i32.const 1) - ) - (local.set $$pl$2 - (i32.const 0) - ) - (local.set $$prefix$2 - (i32.const 4091) - ) - (local.set $$z$2 - (local.get $$add$ptr205) - ) - (br $switch17) - ) - ) - (block - (local.set $$call344 - (call $___errno_location) - ) - (local.set $$168 - (i32.load - (local.get $$call344) - ) - ) - (local.set $$call345 - (call $_strerror - (local.get $$168) - ) - ) - (local.set $$a$1 - (local.get $$call345) - ) - (local.set $label - (i32.const 82) - ) - (br $switch17) - ) - ) - (block - (local.set $$169 - (i32.load - (local.get $$arg) - ) - ) - (local.set $$tobool349 - (i32.ne - (local.get $$169) - (i32.const 0) - ) - ) - (local.set $$cond354 - (if (result i32) - (local.get $$tobool349) - (local.get $$169) - (i32.const 4101) - ) - ) - (local.set $$a$1 - (local.get $$cond354) - ) - (local.set $label - (i32.const 82) - ) - (br $switch17) - ) - ) - (block - (local.set $$170 - (local.get $$arg) - ) - (local.set $$171 - (local.get $$170) - ) - (local.set $$172 - (i32.load - (local.get $$171) - ) - ) - (local.set $$173 - (i32.add - (local.get $$170) - (i32.const 4) - ) - ) - (local.set $$174 - (local.get $$173) - ) - (local.set $$175 - (i32.load - (local.get $$174) - ) - ) - (i32.store - (local.get $$wc) - (local.get $$172) - ) - (i32.store - (local.get $$arrayidx370) - (i32.const 0) - ) - (i32.store - (local.get $$arg) - (local.get $$wc) - ) - (local.set $$p$4365 - (i32.const -1) - ) - (local.set $label - (i32.const 86) - ) - (br $switch17) - ) - ) - (block - (local.set $$cmp377$314 - (i32.eq - (local.get $$p$0) - (i32.const 0) - ) - ) - (if - (local.get $$cmp377$314) - (block - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (i32.const 0) - (local.get $$fl$1$and219) - ) - (local.set $$i$0$lcssa368 - (i32.const 0) - ) - (local.set $label - (i32.const 98) - ) - ) - (block - (local.set $$p$4365 - (local.get $$p$0) - ) - (local.set $label - (i32.const 86) - ) - ) - ) - (br $switch17) - ) - ) - (nop) - ) - (nop) - ) - (nop) - ) - (nop) - ) - (nop) - ) - (nop) - ) - (nop) - ) - (block - (local.set $$181 - (f64.load - (local.get $$arg) - ) - ) - (i32.store - (local.get $$e2$i) - (i32.const 0) - ) - (f64.store - (global.get $tempDoublePtr) - (local.get $$181) - ) - (local.set $$182 - (i32.load - (global.get $tempDoublePtr) - ) - ) - (local.set $$183 - (i32.load - (i32.add - (global.get $tempDoublePtr) - (i32.const 4) - ) - ) - ) - (local.set $$184 - (i32.lt_s - (local.get $$183) - (i32.const 0) - ) - ) - (if - (local.get $$184) - (block - (local.set $$sub$i - (f64.neg - (local.get $$181) - ) - ) - (local.set $$pl$0$i - (i32.const 1) - ) - (local.set $$prefix$0$i - (i32.const 4108) - ) - (local.set $$y$addr$0$i - (local.get $$sub$i) - ) - ) - (block - (local.set $$and$i$238 - (i32.and - (local.get $$fl$1$and219) - (i32.const 2048) - ) - ) - (local.set $$tobool9$i - (i32.eq - (local.get $$and$i$238) - (i32.const 0) - ) - ) - (if - (local.get $$tobool9$i) - (block - (local.set $$and12$i - (i32.and - (local.get $$fl$1$and219) - (i32.const 1) - ) - ) - (local.set $$tobool13$i - (i32.eq - (local.get $$and12$i) - (i32.const 0) - ) - ) - (local.set $$$$i - (if (result i32) - (local.get $$tobool13$i) - (i32.const 4109) - (i32.const 4114) - ) - ) - (local.set $$pl$0$i - (local.get $$and12$i) - ) - (local.set $$prefix$0$i - (local.get $$$$i) - ) - (local.set $$y$addr$0$i - (local.get $$181) - ) - ) - (block - (local.set $$pl$0$i - (i32.const 1) - ) - (local.set $$prefix$0$i - (i32.const 4111) - ) - (local.set $$y$addr$0$i - (local.get $$181) - ) - ) - ) - ) - ) - (f64.store - (global.get $tempDoublePtr) - (local.get $$y$addr$0$i) - ) - (local.set $$185 - (i32.load - (global.get $tempDoublePtr) - ) - ) - (local.set $$186 - (i32.load - (i32.add - (global.get $tempDoublePtr) - (i32.const 4) - ) - ) - ) - (local.set $$187 - (i32.and - (local.get $$186) - (i32.const 2146435072) - ) - ) - (local.set $$188 - (i32.lt_u - (local.get $$187) - (i32.const 2146435072) - ) - ) - (local.set $$189 - (i32.lt_s - (i32.const 0) - (i32.const 0) - ) - ) - (local.set $$190 - (i32.eq - (local.get $$187) - (i32.const 2146435072) - ) - ) - (local.set $$191 - (i32.and - (local.get $$190) - (local.get $$189) - ) - ) - (local.set $$192 - (i32.or - (local.get $$188) - (local.get $$191) - ) - ) - (block $do-once49 - (if - (local.get $$192) - (block - (local.set $$call55$i - (call $_frexpl - (local.get $$y$addr$0$i) - (local.get $$e2$i) - ) - ) - (local.set $$mul$i$240 - (f64.mul - (local.get $$call55$i) - (f64.const 2) - ) - ) - (local.set $$tobool56$i - (f64.ne - (local.get $$mul$i$240) - (f64.const 0) - ) - ) - (if - (local.get $$tobool56$i) - (block - (local.set $$195 - (i32.load - (local.get $$e2$i) - ) - ) - (local.set $$dec$i - (i32.add - (local.get $$195) - (i32.const -1) - ) - ) - (i32.store - (local.get $$e2$i) - (local.get $$dec$i) - ) - ) - ) - (local.set $$or$i$241 - (i32.or - (local.get $$t$0) - (i32.const 32) - ) - ) - (local.set $$cmp59$i - (i32.eq - (local.get $$or$i$241) - (i32.const 97) - ) - ) - (if - (local.get $$cmp59$i) - (block - (local.set $$and62$i - (i32.and - (local.get $$t$0) - (i32.const 32) - ) - ) - (local.set $$tobool63$i - (i32.eq - (local.get $$and62$i) - (i32.const 0) - ) - ) - (local.set $$add$ptr65$i - (i32.add - (local.get $$prefix$0$i) - (i32.const 9) - ) - ) - (local.set $$prefix$0$add$ptr65$i - (if (result i32) - (local.get $$tobool63$i) - (local.get $$prefix$0$i) - (local.get $$add$ptr65$i) - ) - ) - (local.set $$add67$i - (i32.or - (local.get $$pl$0$i) - (i32.const 2) - ) - ) - (local.set $$196 - (i32.gt_u - (local.get $$p$0) - (i32.const 11) - ) - ) - (local.set $$sub74$i - (i32.sub - (i32.const 12) - (local.get $$p$0) - ) - ) - (local.set $$tobool76552$i - (i32.eq - (local.get $$sub74$i) - (i32.const 0) - ) - ) - (local.set $$tobool76$i - (i32.or - (local.get $$196) - (local.get $$tobool76552$i) - ) - ) - (block $do-once51 - (if - (local.get $$tobool76$i) - (local.set $$y$addr$1$i - (local.get $$mul$i$240) - ) - (block - (local.set $$re$1482$i - (local.get $$sub74$i) - ) - (local.set $$round$0481$i - (f64.const 8) - ) - (loop $while-in54 - (block $while-out53 - (local.set $$dec78$i - (i32.add - (local.get $$re$1482$i) - (i32.const -1) - ) - ) - (local.set $$mul80$i - (f64.mul - (local.get $$round$0481$i) - (f64.const 16) - ) - ) - (local.set $$tobool79$i - (i32.eq - (local.get $$dec78$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool79$i) - (block - (local.set $$mul80$i$lcssa - (local.get $$mul80$i) - ) - (br $while-out53) - ) - (block - (local.set $$re$1482$i - (local.get $$dec78$i) - ) - (local.set $$round$0481$i - (local.get $$mul80$i) - ) - ) - ) - (br $while-in54) - ) - ) - (local.set $$197 - (i32.load8_s - (local.get $$prefix$0$add$ptr65$i) - ) - ) - (local.set $$cmp82$i - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$197) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 45) - ) - ) - (if - (local.get $$cmp82$i) - (block - (local.set $$sub85$i - (f64.neg - (local.get $$mul$i$240) - ) - ) - (local.set $$sub86$i - (f64.sub - (local.get $$sub85$i) - (local.get $$mul80$i$lcssa) - ) - ) - (local.set $$add87$i - (f64.add - (local.get $$mul80$i$lcssa) - (local.get $$sub86$i) - ) - ) - (local.set $$sub88$i - (f64.neg - (local.get $$add87$i) - ) - ) - (local.set $$y$addr$1$i - (local.get $$sub88$i) - ) - (br $do-once51) - ) - (block - (local.set $$add90$i - (f64.add - (local.get $$mul$i$240) - (local.get $$mul80$i$lcssa) - ) - ) - (local.set $$sub91$i - (f64.sub - (local.get $$add90$i) - (local.get $$mul80$i$lcssa) - ) - ) - (local.set $$y$addr$1$i - (local.get $$sub91$i) - ) - (br $do-once51) - ) - ) - ) - ) - ) - (local.set $$198 - (i32.load - (local.get $$e2$i) - ) - ) - (local.set $$cmp94$i - (i32.lt_s - (local.get $$198) - (i32.const 0) - ) - ) - (local.set $$sub97$i - (i32.sub - (i32.const 0) - (local.get $$198) - ) - ) - (local.set $$cond100$i - (if (result i32) - (local.get $$cmp94$i) - (local.get $$sub97$i) - (local.get $$198) - ) - ) - (local.set $$199 - (i32.lt_s - (local.get $$cond100$i) - (i32.const 0) - ) - ) - (local.set $$200 - (i32.shr_s - (i32.shl - (local.get $$199) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$201 - (call $_fmt_u - (local.get $$cond100$i) - (local.get $$200) - (local.get $$arrayidx$i$236) - ) - ) - (local.set $$cmp103$i - (i32.eq - (local.get $$201) - (local.get $$arrayidx$i$236) - ) - ) - (if - (local.get $$cmp103$i) - (block - (i32.store8 - (local.get $$incdec$ptr106$i) - (i32.const 48) - ) - (local.set $$estr$0$i - (local.get $$incdec$ptr106$i) - ) - ) - (local.set $$estr$0$i - (local.get $$201) - ) - ) - (local.set $$202 - (i32.shr_s - (local.get $$198) - (i32.const 31) - ) - ) - (local.set $$203 - (i32.and - (local.get $$202) - (i32.const 2) - ) - ) - (local.set $$204 - (i32.add - (local.get $$203) - (i32.const 43) - ) - ) - (local.set $$conv111$i - (i32.and - (local.get $$204) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr112$i - (i32.add - (local.get $$estr$0$i) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr112$i) - (local.get $$conv111$i) - ) - (local.set $$add113$i - (i32.add - (local.get $$t$0) - (i32.const 15) - ) - ) - (local.set $$conv114$i - (i32.and - (local.get $$add113$i) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr115$i - (i32.add - (local.get $$estr$0$i) - (i32.const -2) - ) - ) - (i32.store8 - (local.get $$incdec$ptr115$i) - (local.get $$conv114$i) - ) - (local.set $$notrhs$i - (i32.lt_s - (local.get $$p$0) - (i32.const 1) - ) - ) - (local.set $$and134$i - (i32.and - (local.get $$fl$1$and219) - (i32.const 8) - ) - ) - (local.set $$tobool135$i - (i32.eq - (local.get $$and134$i) - (i32.const 0) - ) - ) - (local.set $$s$0$i - (local.get $$buf$i) - ) - (local.set $$y$addr$2$i - (local.get $$y$addr$1$i) - ) - (loop $while-in56 - (block $while-out55 - (local.set $$conv116$i - (call $f64-to-int - (local.get $$y$addr$2$i) - ) - ) - (local.set $$arrayidx117$i - (i32.add - (i32.const 4075) - (local.get $$conv116$i) - ) - ) - (local.set $$205 - (i32.load8_s - (local.get $$arrayidx117$i) - ) - ) - (local.set $$conv118$393$i - (i32.and - (local.get $$205) - (i32.const 255) - ) - ) - (local.set $$or120$i - (i32.or - (local.get $$conv118$393$i) - (local.get $$and62$i) - ) - ) - (local.set $$conv121$i - (i32.and - (local.get $$or120$i) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr122$i - (i32.add - (local.get $$s$0$i) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $$s$0$i) - (local.get $$conv121$i) - ) - (local.set $$conv123$i - (f64.convert_i32_s - (local.get $$conv116$i) - ) - ) - (local.set $$sub124$i - (f64.sub - (local.get $$y$addr$2$i) - (local.get $$conv123$i) - ) - ) - (local.set $$mul125$i - (f64.mul - (local.get $$sub124$i) - (f64.const 16) - ) - ) - (local.set $$sub$ptr$lhs$cast$i - (local.get $$incdec$ptr122$i) - ) - (local.set $$sub$ptr$sub$i - (i32.sub - (local.get $$sub$ptr$lhs$cast$i) - (local.get $$sub$ptr$rhs$cast$i) - ) - ) - (local.set $$cmp127$i - (i32.eq - (local.get $$sub$ptr$sub$i) - (i32.const 1) - ) - ) - (block $do-once57 - (if - (local.get $$cmp127$i) - (block - (local.set $$notlhs$i - (f64.eq - (local.get $$mul125$i) - (f64.const 0) - ) - ) - (local.set $$or$cond1$not$i - (i32.and - (local.get $$notrhs$i) - (local.get $$notlhs$i) - ) - ) - (local.set $$or$cond$i - (i32.and - (local.get $$tobool135$i) - (local.get $$or$cond1$not$i) - ) - ) - (if - (local.get $$or$cond$i) - (block - (local.set $$s$1$i - (local.get $$incdec$ptr122$i) - ) - (br $do-once57) - ) - ) - (local.set $$incdec$ptr137$i - (i32.add - (local.get $$s$0$i) - (i32.const 2) - ) - ) - (i32.store8 - (local.get $$incdec$ptr122$i) - (i32.const 46) - ) - (local.set $$s$1$i - (local.get $$incdec$ptr137$i) - ) - ) - (local.set $$s$1$i - (local.get $$incdec$ptr122$i) - ) - ) - ) - (local.set $$tobool139$i - (f64.ne - (local.get $$mul125$i) - (f64.const 0) - ) - ) - (if - (local.get $$tobool139$i) - (block - (local.set $$s$0$i - (local.get $$s$1$i) - ) - (local.set $$y$addr$2$i - (local.get $$mul125$i) - ) - ) - (block - (local.set $$s$1$i$lcssa - (local.get $$s$1$i) - ) - (br $while-out55) - ) - ) - (br $while-in56) - ) - ) - (local.set $$tobool140$i - (i32.ne - (local.get $$p$0) - (i32.const 0) - ) - ) - (local.set $$$pre566$i - (local.get $$s$1$i$lcssa) - ) - (local.set $$sub146$i - (i32.add - (local.get $$sub$ptr$sub145$i) - (local.get $$$pre566$i) - ) - ) - (local.set $$cmp147$i - (i32.lt_s - (local.get $$sub146$i) - (local.get $$p$0) - ) - ) - (local.set $$or$cond384 - (i32.and - (local.get $$tobool140$i) - (local.get $$cmp147$i) - ) - ) - (local.set $$sub$ptr$rhs$cast152$i - (local.get $$incdec$ptr115$i) - ) - (local.set $$add150$i - (i32.add - (local.get $$sub$ptr$sub153$i) - (local.get $$p$0) - ) - ) - (local.set $$add154$i - (i32.sub - (local.get $$add150$i) - (local.get $$sub$ptr$rhs$cast152$i) - ) - ) - (local.set $$sub$ptr$rhs$cast161$i - (local.get $$incdec$ptr115$i) - ) - (local.set $$sub$ptr$sub162$i - (i32.sub - (local.get $$sub$ptr$sub159$i) - (local.get $$sub$ptr$rhs$cast161$i) - ) - ) - (local.set $$add163$i - (i32.add - (local.get $$sub$ptr$sub162$i) - (local.get $$$pre566$i) - ) - ) - (local.set $$l$0$i - (if (result i32) - (local.get $$or$cond384) - (local.get $$add154$i) - (local.get $$add163$i) - ) - ) - (local.set $$add165$i - (i32.add - (local.get $$l$0$i) - (local.get $$add67$i) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$add165$i) - (local.get $$fl$1$and219) - ) - (local.set $$206 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$418$i - (i32.and - (local.get $$206) - (i32.const 32) - ) - ) - (local.set $$tobool$i$419$i - (i32.eq - (local.get $$and$i$418$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$419$i) - (drop - (call $___fwritex - (local.get $$prefix$0$add$ptr65$i) - (local.get $$add67$i) - (local.get $$f) - ) - ) - ) - (local.set $$xor167$i - (i32.xor - (local.get $$fl$1$and219) - (i32.const 65536) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 48) - (local.get $$w$1) - (local.get $$add165$i) - (local.get $$xor167$i) - ) - (local.set $$sub$ptr$sub172$i - (i32.sub - (local.get $$$pre566$i) - (local.get $$sub$ptr$rhs$cast$i) - ) - ) - (local.set $$207 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$424$i - (i32.and - (local.get $$207) - (i32.const 32) - ) - ) - (local.set $$tobool$i$425$i - (i32.eq - (local.get $$and$i$424$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$425$i) - (drop - (call $___fwritex - (local.get $$buf$i) - (local.get $$sub$ptr$sub172$i) - (local.get $$f) - ) - ) - ) - (local.set $$sub$ptr$rhs$cast174$i - (local.get $$incdec$ptr115$i) - ) - (local.set $$sub$ptr$sub175$i - (i32.sub - (local.get $$sub$ptr$lhs$cast160$i) - (local.get $$sub$ptr$rhs$cast174$i) - ) - ) - (local.set $$sum - (i32.add - (local.get $$sub$ptr$sub172$i) - (local.get $$sub$ptr$sub175$i) - ) - ) - (local.set $$sub181$i - (i32.sub - (local.get $$l$0$i) - (local.get $$sum) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 48) - (local.get $$sub181$i) - (i32.const 0) - (i32.const 0) - ) - (local.set $$208 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$430$i - (i32.and - (local.get $$208) - (i32.const 32) - ) - ) - (local.set $$tobool$i$431$i - (i32.eq - (local.get $$and$i$430$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$431$i) - (drop - (call $___fwritex - (local.get $$incdec$ptr115$i) - (local.get $$sub$ptr$sub175$i) - (local.get $$f) - ) - ) - ) - (local.set $$xor186$i - (i32.xor - (local.get $$fl$1$and219) - (i32.const 8192) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$add165$i) - (local.get $$xor186$i) - ) - (local.set $$cmp188$i - (i32.lt_s - (local.get $$add165$i) - (local.get $$w$1) - ) - ) - (local.set $$w$add165$i - (if (result i32) - (local.get $$cmp188$i) - (local.get $$w$1) - (local.get $$add165$i) - ) - ) - (local.set $$retval$0$i - (local.get $$w$add165$i) - ) - (br $do-once49) - ) - ) - (local.set $$cmp196$i - (i32.lt_s - (local.get $$p$0) - (i32.const 0) - ) - ) - (local.set $$$p$i - (if (result i32) - (local.get $$cmp196$i) - (i32.const 6) - (local.get $$p$0) - ) - ) - (if - (local.get $$tobool56$i) - (block - (local.set $$mul202$i - (f64.mul - (local.get $$mul$i$240) - (f64.const 268435456) - ) - ) - (local.set $$209 - (i32.load - (local.get $$e2$i) - ) - ) - (local.set $$sub203$i - (i32.add - (local.get $$209) - (i32.const -28) - ) - ) - (i32.store - (local.get $$e2$i) - (local.get $$sub203$i) - ) - (local.set $$210 - (local.get $$sub203$i) - ) - (local.set $$y$addr$3$i - (local.get $$mul202$i) - ) - ) - (block - (local.set $$$pre564$i - (i32.load - (local.get $$e2$i) - ) - ) - (local.set $$210 - (local.get $$$pre564$i) - ) - (local.set $$y$addr$3$i - (local.get $$mul$i$240) - ) - ) - ) - (local.set $$cmp205$i - (i32.lt_s - (local.get $$210) - (i32.const 0) - ) - ) - (local.set $$arraydecay208$add$ptr213$i - (if (result i32) - (local.get $$cmp205$i) - (local.get $$big$i) - (local.get $$add$ptr213$i) - ) - ) - (local.set $$sub$ptr$rhs$cast345$i - (local.get $$arraydecay208$add$ptr213$i) - ) - (local.set $$y$addr$4$i - (local.get $$y$addr$3$i) - ) - (local.set $$z$0$i - (local.get $$arraydecay208$add$ptr213$i) - ) - (loop $while-in60 - (block $while-out59 - (local.set $$conv216$i - (call $f64-to-uint - (local.get $$y$addr$4$i) - ) - ) - (i32.store - (local.get $$z$0$i) - (local.get $$conv216$i) - ) - (local.set $$incdec$ptr217$i - (i32.add - (local.get $$z$0$i) - (i32.const 4) - ) - ) - (local.set $$conv218$i - (f64.convert_i32_u - (local.get $$conv216$i) - ) - ) - (local.set $$sub219$i - (f64.sub - (local.get $$y$addr$4$i) - (local.get $$conv218$i) - ) - ) - (local.set $$mul220$i - (f64.mul - (local.get $$sub219$i) - (f64.const 1e9) - ) - ) - (local.set $$tobool222$i - (f64.ne - (local.get $$mul220$i) - (f64.const 0) - ) - ) - (if - (local.get $$tobool222$i) - (block - (local.set $$y$addr$4$i - (local.get $$mul220$i) - ) - (local.set $$z$0$i - (local.get $$incdec$ptr217$i) - ) - ) - (block - (local.set $$incdec$ptr217$i$lcssa - (local.get $$incdec$ptr217$i) - ) - (br $while-out59) - ) - ) - (br $while-in60) - ) - ) - (local.set $$$pr$i - (i32.load - (local.get $$e2$i) - ) - ) - (local.set $$cmp225$547$i - (i32.gt_s - (local.get $$$pr$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp225$547$i) - (block - (local.set $$211 - (local.get $$$pr$i) - ) - (local.set $$a$1549$i - (local.get $$arraydecay208$add$ptr213$i) - ) - (local.set $$z$1548$i - (local.get $$incdec$ptr217$i$lcssa) - ) - (loop $while-in62 - (block $while-out61 - (local.set $$cmp228$i - (i32.gt_s - (local.get $$211) - (i32.const 29) - ) - ) - (local.set $$cond233$i - (if (result i32) - (local.get $$cmp228$i) - (i32.const 29) - (local.get $$211) - ) - ) - (local.set $$d$0$542$i - (i32.add - (local.get $$z$1548$i) - (i32.const -4) - ) - ) - (local.set $$cmp235$543$i - (i32.lt_u - (local.get $$d$0$542$i) - (local.get $$a$1549$i) - ) - ) - (block $do-once63 - (if - (local.get $$cmp235$543$i) - (local.set $$a$2$ph$i - (local.get $$a$1549$i) - ) - (block - (local.set $$carry$0544$i - (i32.const 0) - ) - (local.set $$d$0545$i - (local.get $$d$0$542$i) - ) - (loop $while-in66 - (block $while-out65 - (local.set $$212 - (i32.load - (local.get $$d$0545$i) - ) - ) - (local.set $$213 - (call $_bitshift64Shl - (local.get $$212) - (i32.const 0) - (local.get $$cond233$i) - ) - ) - (local.set $$214 - (global.get $tempRet0) - ) - (local.set $$215 - (call $_i64Add - (local.get $$213) - (local.get $$214) - (local.get $$carry$0544$i) - (i32.const 0) - ) - ) - (local.set $$216 - (global.get $tempRet0) - ) - (local.set $$217 - (call $___uremdi3 - (local.get $$215) - (local.get $$216) - (i32.const 1000000000) - (i32.const 0) - ) - ) - (local.set $$218 - (global.get $tempRet0) - ) - (i32.store - (local.get $$d$0545$i) - (local.get $$217) - ) - (local.set $$219 - (call $___udivdi3 - (local.get $$215) - (local.get $$216) - (i32.const 1000000000) - (i32.const 0) - ) - ) - (local.set $$220 - (global.get $tempRet0) - ) - (local.set $$d$0$i - (i32.add - (local.get $$d$0545$i) - (i32.const -4) - ) - ) - (local.set $$cmp235$i - (i32.lt_u - (local.get $$d$0$i) - (local.get $$a$1549$i) - ) - ) - (if - (local.get $$cmp235$i) - (block - (local.set $$conv242$i$lcssa - (local.get $$219) - ) - (br $while-out65) - ) - (block - (local.set $$carry$0544$i - (local.get $$219) - ) - (local.set $$d$0545$i - (local.get $$d$0$i) - ) - ) - ) - (br $while-in66) - ) - ) - (local.set $$tobool244$i - (i32.eq - (local.get $$conv242$i$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$tobool244$i) - (block - (local.set $$a$2$ph$i - (local.get $$a$1549$i) - ) - (br $do-once63) - ) - ) - (local.set $$incdec$ptr246$i - (i32.add - (local.get $$a$1549$i) - (i32.const -4) - ) - ) - (i32.store - (local.get $$incdec$ptr246$i) - (local.get $$conv242$i$lcssa) - ) - (local.set $$a$2$ph$i - (local.get $$incdec$ptr246$i) - ) - ) - ) - ) - (local.set $$z$2$i - (local.get $$z$1548$i) - ) - (loop $while-in68 - (block $while-out67 - (local.set $$cmp249$i - (i32.gt_u - (local.get $$z$2$i) - (local.get $$a$2$ph$i) - ) - ) - (if - (i32.eqz - (local.get $$cmp249$i) - ) - (block - (local.set $$z$2$i$lcssa - (local.get $$z$2$i) - ) - (br $while-out67) - ) - ) - (local.set $$arrayidx251$i - (i32.add - (local.get $$z$2$i) - (i32.const -4) - ) - ) - (local.set $$221 - (i32.load - (local.get $$arrayidx251$i) - ) - ) - (local.set $$lnot$i - (i32.eq - (local.get $$221) - (i32.const 0) - ) - ) - (if - (local.get $$lnot$i) - (local.set $$z$2$i - (local.get $$arrayidx251$i) - ) - (block - (local.set $$z$2$i$lcssa - (local.get $$z$2$i) - ) - (br $while-out67) - ) - ) - (br $while-in68) - ) - ) - (local.set $$222 - (i32.load - (local.get $$e2$i) - ) - ) - (local.set $$sub256$i - (i32.sub - (local.get $$222) - (local.get $$cond233$i) - ) - ) - (i32.store - (local.get $$e2$i) - (local.get $$sub256$i) - ) - (local.set $$cmp225$i - (i32.gt_s - (local.get $$sub256$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp225$i) - (block - (local.set $$211 - (local.get $$sub256$i) - ) - (local.set $$a$1549$i - (local.get $$a$2$ph$i) - ) - (local.set $$z$1548$i - (local.get $$z$2$i$lcssa) - ) - ) - (block - (local.set $$$pr477$i - (local.get $$sub256$i) - ) - (local.set $$a$1$lcssa$i - (local.get $$a$2$ph$i) - ) - (local.set $$z$1$lcssa$i - (local.get $$z$2$i$lcssa) - ) - (br $while-out61) - ) - ) - (br $while-in62) - ) - ) - ) - (block - (local.set $$$pr477$i - (local.get $$$pr$i) - ) - (local.set $$a$1$lcssa$i - (local.get $$arraydecay208$add$ptr213$i) - ) - (local.set $$z$1$lcssa$i - (local.get $$incdec$ptr217$i$lcssa) - ) - ) - ) - (local.set $$cmp259$537$i - (i32.lt_s - (local.get $$$pr477$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp259$537$i) - (block - (local.set $$add273$i - (i32.add - (local.get $$$p$i) - (i32.const 25) - ) - ) - (local.set $$div274$i - (i32.and - (call $i32s-div - (local.get $$add273$i) - (i32.const 9) - ) - (i32.const -1) - ) - ) - (local.set $$add275$i - (i32.add - (local.get $$div274$i) - (i32.const 1) - ) - ) - (local.set $$cmp299$i - (i32.eq - (local.get $$or$i$241) - (i32.const 102) - ) - ) - (local.set $$223 - (local.get $$$pr477$i) - ) - (local.set $$a$3539$i - (local.get $$a$1$lcssa$i) - ) - (local.set $$z$3538$i - (local.get $$z$1$lcssa$i) - ) - (loop $while-in70 - (block $while-out69 - (local.set $$sub264$i - (i32.sub - (i32.const 0) - (local.get $$223) - ) - ) - (local.set $$cmp265$i - (i32.gt_s - (local.get $$sub264$i) - (i32.const 9) - ) - ) - (local.set $$cond271$i - (if (result i32) - (local.get $$cmp265$i) - (i32.const 9) - (local.get $$sub264$i) - ) - ) - (local.set $$cmp277$533$i - (i32.lt_u - (local.get $$a$3539$i) - (local.get $$z$3538$i) - ) - ) - (block $do-once71 - (if - (local.get $$cmp277$533$i) - (block - (local.set $$shl280$i - (i32.shl - (i32.const 1) - (local.get $$cond271$i) - ) - ) - (local.set $$sub281$i - (i32.add - (local.get $$shl280$i) - (i32.const -1) - ) - ) - (local.set $$shr285$i - (i32.shr_u - (i32.const 1000000000) - (local.get $$cond271$i) - ) - ) - (local.set $$carry262$0535$i - (i32.const 0) - ) - (local.set $$d$1534$i - (local.get $$a$3539$i) - ) - (loop $while-in74 - (block $while-out73 - (local.set $$225 - (i32.load - (local.get $$d$1534$i) - ) - ) - (local.set $$and282$i - (i32.and - (local.get $$225) - (local.get $$sub281$i) - ) - ) - (local.set $$shr283$i - (i32.shr_u - (local.get $$225) - (local.get $$cond271$i) - ) - ) - (local.set $$add284$i - (i32.add - (local.get $$shr283$i) - (local.get $$carry262$0535$i) - ) - ) - (i32.store - (local.get $$d$1534$i) - (local.get $$add284$i) - ) - (local.set $$mul286$i - (i32.mul - (local.get $$and282$i) - (local.get $$shr285$i) - ) - ) - (local.set $$incdec$ptr288$i - (i32.add - (local.get $$d$1534$i) - (i32.const 4) - ) - ) - (local.set $$cmp277$i - (i32.lt_u - (local.get $$incdec$ptr288$i) - (local.get $$z$3538$i) - ) - ) - (if - (local.get $$cmp277$i) - (block - (local.set $$carry262$0535$i - (local.get $$mul286$i) - ) - (local.set $$d$1534$i - (local.get $$incdec$ptr288$i) - ) - ) - (block - (local.set $$mul286$i$lcssa - (local.get $$mul286$i) - ) - (br $while-out73) - ) - ) - (br $while-in74) - ) - ) - (local.set $$226 - (i32.load - (local.get $$a$3539$i) - ) - ) - (local.set $$tobool290$i - (i32.eq - (local.get $$226) - (i32.const 0) - ) - ) - (local.set $$incdec$ptr292$i - (i32.add - (local.get $$a$3539$i) - (i32.const 4) - ) - ) - (local.set $$incdec$ptr292$a$3$i - (if (result i32) - (local.get $$tobool290$i) - (local.get $$incdec$ptr292$i) - (local.get $$a$3539$i) - ) - ) - (local.set $$tobool294$i - (i32.eq - (local.get $$mul286$i$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$tobool294$i) - (block - (local.set $$incdec$ptr292$a$3573$i - (local.get $$incdec$ptr292$a$3$i) - ) - (local.set $$z$4$i - (local.get $$z$3538$i) - ) - (br $do-once71) - ) - ) - (local.set $$incdec$ptr296$i - (i32.add - (local.get $$z$3538$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$z$3538$i) - (local.get $$mul286$i$lcssa) - ) - (local.set $$incdec$ptr292$a$3573$i - (local.get $$incdec$ptr292$a$3$i) - ) - (local.set $$z$4$i - (local.get $$incdec$ptr296$i) - ) - ) - (block - (local.set $$224 - (i32.load - (local.get $$a$3539$i) - ) - ) - (local.set $$tobool290$569$i - (i32.eq - (local.get $$224) - (i32.const 0) - ) - ) - (local.set $$incdec$ptr292$570$i - (i32.add - (local.get $$a$3539$i) - (i32.const 4) - ) - ) - (local.set $$incdec$ptr292$a$3$571$i - (if (result i32) - (local.get $$tobool290$569$i) - (local.get $$incdec$ptr292$570$i) - (local.get $$a$3539$i) - ) - ) - (local.set $$incdec$ptr292$a$3573$i - (local.get $$incdec$ptr292$a$3$571$i) - ) - (local.set $$z$4$i - (local.get $$z$3538$i) - ) - ) - ) - ) - (local.set $$cond304$i - (if (result i32) - (local.get $$cmp299$i) - (local.get $$arraydecay208$add$ptr213$i) - (local.get $$incdec$ptr292$a$3573$i) - ) - ) - (local.set $$sub$ptr$lhs$cast305$i - (local.get $$z$4$i) - ) - (local.set $$sub$ptr$rhs$cast306$i - (local.get $$cond304$i) - ) - (local.set $$sub$ptr$sub307$i - (i32.sub - (local.get $$sub$ptr$lhs$cast305$i) - (local.get $$sub$ptr$rhs$cast306$i) - ) - ) - (local.set $$sub$ptr$div$i - (i32.shr_s - (local.get $$sub$ptr$sub307$i) - (i32.const 2) - ) - ) - (local.set $$cmp308$i - (i32.gt_s - (local.get $$sub$ptr$div$i) - (local.get $$add275$i) - ) - ) - (local.set $$add$ptr311$i - (i32.add - (local.get $$cond304$i) - (i32.shl - (local.get $$add275$i) - (i32.const 2) - ) - ) - ) - (local.set $$add$ptr311$z$4$i - (if (result i32) - (local.get $$cmp308$i) - (local.get $$add$ptr311$i) - (local.get $$z$4$i) - ) - ) - (local.set $$227 - (i32.load - (local.get $$e2$i) - ) - ) - (local.set $$add313$i - (i32.add - (local.get $$227) - (local.get $$cond271$i) - ) - ) - (i32.store - (local.get $$e2$i) - (local.get $$add313$i) - ) - (local.set $$cmp259$i - (i32.lt_s - (local.get $$add313$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp259$i) - (block - (local.set $$223 - (local.get $$add313$i) - ) - (local.set $$a$3539$i - (local.get $$incdec$ptr292$a$3573$i) - ) - (local.set $$z$3538$i - (local.get $$add$ptr311$z$4$i) - ) - ) - (block - (local.set $$a$3$lcssa$i - (local.get $$incdec$ptr292$a$3573$i) - ) - (local.set $$z$3$lcssa$i - (local.get $$add$ptr311$z$4$i) - ) - (br $while-out69) - ) - ) - (br $while-in70) - ) - ) - ) - (block - (local.set $$a$3$lcssa$i - (local.get $$a$1$lcssa$i) - ) - (local.set $$z$3$lcssa$i - (local.get $$z$1$lcssa$i) - ) - ) - ) - (local.set $$cmp315$i - (i32.lt_u - (local.get $$a$3$lcssa$i) - (local.get $$z$3$lcssa$i) - ) - ) - (block $do-once75 - (if - (local.get $$cmp315$i) - (block - (local.set $$sub$ptr$rhs$cast319$i - (local.get $$a$3$lcssa$i) - ) - (local.set $$sub$ptr$sub320$i - (i32.sub - (local.get $$sub$ptr$rhs$cast345$i) - (local.get $$sub$ptr$rhs$cast319$i) - ) - ) - (local.set $$sub$ptr$div321$i - (i32.shr_s - (local.get $$sub$ptr$sub320$i) - (i32.const 2) - ) - ) - (local.set $$mul322$i - (i32.mul - (local.get $$sub$ptr$div321$i) - (i32.const 9) - ) - ) - (local.set $$228 - (i32.load - (local.get $$a$3$lcssa$i) - ) - ) - (local.set $$cmp324$529$i - (i32.lt_u - (local.get $$228) - (i32.const 10) - ) - ) - (if - (local.get $$cmp324$529$i) - (block - (local.set $$e$1$i - (local.get $$mul322$i) - ) - (br $do-once75) - ) - (block - (local.set $$e$0531$i - (local.get $$mul322$i) - ) - (local.set $$i$0530$i - (i32.const 10) - ) - ) - ) - (loop $while-in78 - (block $while-out77 - (local.set $$mul328$i - (i32.mul - (local.get $$i$0530$i) - (i32.const 10) - ) - ) - (local.set $$inc$i - (i32.add - (local.get $$e$0531$i) - (i32.const 1) - ) - ) - (local.set $$cmp324$i - (i32.lt_u - (local.get $$228) - (local.get $$mul328$i) - ) - ) - (if - (local.get $$cmp324$i) - (block - (local.set $$e$1$i - (local.get $$inc$i) - ) - (br $while-out77) - ) - (block - (local.set $$e$0531$i - (local.get $$inc$i) - ) - (local.set $$i$0530$i - (local.get $$mul328$i) - ) - ) - ) - (br $while-in78) - ) - ) - ) - (local.set $$e$1$i - (i32.const 0) - ) - ) - ) - (local.set $$cmp333$i - (i32.ne - (local.get $$or$i$241) - (i32.const 102) - ) - ) - (local.set $$mul335$i - (if (result i32) - (local.get $$cmp333$i) - (local.get $$e$1$i) - (i32.const 0) - ) - ) - (local.set $$sub336$i - (i32.sub - (local.get $$$p$i) - (local.get $$mul335$i) - ) - ) - (local.set $$cmp338$i - (i32.eq - (local.get $$or$i$241) - (i32.const 103) - ) - ) - (local.set $$tobool341$i - (i32.ne - (local.get $$$p$i) - (i32.const 0) - ) - ) - (local.set $$229 - (i32.and - (local.get $$tobool341$i) - (local.get $$cmp338$i) - ) - ) - (local.set $$land$ext$neg$i - (i32.shr_s - (i32.shl - (local.get $$229) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$sub343$i - (i32.add - (local.get $$sub336$i) - (local.get $$land$ext$neg$i) - ) - ) - (local.set $$sub$ptr$lhs$cast344$i - (local.get $$z$3$lcssa$i) - ) - (local.set $$sub$ptr$sub346$i - (i32.sub - (local.get $$sub$ptr$lhs$cast344$i) - (local.get $$sub$ptr$rhs$cast345$i) - ) - ) - (local.set $$sub$ptr$div347$i - (i32.shr_s - (local.get $$sub$ptr$sub346$i) - (i32.const 2) - ) - ) - (local.set $$230 - (i32.mul - (local.get $$sub$ptr$div347$i) - (i32.const 9) - ) - ) - (local.set $$mul349$i - (i32.add - (local.get $$230) - (i32.const -9) - ) - ) - (local.set $$cmp350$i - (i32.lt_s - (local.get $$sub343$i) - (local.get $$mul349$i) - ) - ) - (if - (local.get $$cmp350$i) - (block - (local.set $$add$ptr354$i - (i32.add - (local.get $$arraydecay208$add$ptr213$i) - (i32.const 4) - ) - ) - (local.set $$add355$i - (i32.add - (local.get $$sub343$i) - (i32.const 9216) - ) - ) - (local.set $$div356$i - (i32.and - (call $i32s-div - (local.get $$add355$i) - (i32.const 9) - ) - (i32.const -1) - ) - ) - (local.set $$sub357$i - (i32.add - (local.get $$div356$i) - (i32.const -1024) - ) - ) - (local.set $$add$ptr358$i - (i32.add - (local.get $$add$ptr354$i) - (i32.shl - (local.get $$sub357$i) - (i32.const 2) - ) - ) - ) - (local.set $$rem360$i - (i32.and - (call $i32s-rem - (local.get $$add355$i) - (i32.const 9) - ) - (i32.const -1) - ) - ) - (local.set $$j$0$524$i - (i32.add - (local.get $$rem360$i) - (i32.const 1) - ) - ) - (local.set $$cmp363$525$i - (i32.lt_s - (local.get $$j$0$524$i) - (i32.const 9) - ) - ) - (if - (local.get $$cmp363$525$i) - (block - (local.set $$i$1526$i - (i32.const 10) - ) - (local.set $$j$0527$i - (local.get $$j$0$524$i) - ) - (loop $while-in80 - (block $while-out79 - (local.set $$mul367$i - (i32.mul - (local.get $$i$1526$i) - (i32.const 10) - ) - ) - (local.set $$j$0$i - (i32.add - (local.get $$j$0527$i) - (i32.const 1) - ) - ) - (local.set $$exitcond$i - (i32.eq - (local.get $$j$0$i) - (i32.const 9) - ) - ) - (if - (local.get $$exitcond$i) - (block - (local.set $$i$1$lcssa$i - (local.get $$mul367$i) - ) - (br $while-out79) - ) - (block - (local.set $$i$1526$i - (local.get $$mul367$i) - ) - (local.set $$j$0527$i - (local.get $$j$0$i) - ) - ) - ) - (br $while-in80) - ) - ) - ) - (local.set $$i$1$lcssa$i - (i32.const 10) - ) - ) - (local.set $$231 - (i32.load - (local.get $$add$ptr358$i) - ) - ) - (local.set $$rem370$i - (i32.and - (call $i32u-rem - (local.get $$231) - (local.get $$i$1$lcssa$i) - ) - (i32.const -1) - ) - ) - (local.set $$tobool371$i - (i32.eq - (local.get $$rem370$i) - (i32.const 0) - ) - ) - (local.set $$add$ptr373$i - (i32.add - (local.get $$add$ptr358$i) - (i32.const 4) - ) - ) - (local.set $$cmp374$i - (i32.eq - (local.get $$add$ptr373$i) - (local.get $$z$3$lcssa$i) - ) - ) - (local.set $$or$cond395$i - (i32.and - (local.get $$cmp374$i) - (local.get $$tobool371$i) - ) - ) - (block $do-once81 - (if - (local.get $$or$cond395$i) - (block - (local.set $$a$8$i - (local.get $$a$3$lcssa$i) - ) - (local.set $$d$4$i - (local.get $$add$ptr358$i) - ) - (local.set $$e$4$i - (local.get $$e$1$i) - ) - ) - (block - (local.set $$div378$i - (i32.and - (call $i32u-div - (local.get $$231) - (local.get $$i$1$lcssa$i) - ) - (i32.const -1) - ) - ) - (local.set $$and379$i - (i32.and - (local.get $$div378$i) - (i32.const 1) - ) - ) - (local.set $$tobool380$i - (i32.eq - (local.get $$and379$i) - (i32.const 0) - ) - ) - (local.set $$$396$i - (if (result f64) - (local.get $$tobool380$i) - (f64.const 9007199254740992) - (f64.const 9007199254740994) - ) - ) - (local.set $$div384$i - (i32.and - (call $i32s-div - (local.get $$i$1$lcssa$i) - (i32.const 2) - ) - (i32.const -1) - ) - ) - (local.set $$cmp385$i - (i32.lt_u - (local.get $$rem370$i) - (local.get $$div384$i) - ) - ) - (if - (local.get $$cmp385$i) - (local.set $$small$0$i - (f64.const 0.5) - ) - (block - (local.set $$cmp390$i - (i32.eq - (local.get $$rem370$i) - (local.get $$div384$i) - ) - ) - (local.set $$or$cond397$i - (i32.and - (local.get $$cmp374$i) - (local.get $$cmp390$i) - ) - ) - (local.set $$$404$i - (if (result f64) - (local.get $$or$cond397$i) - (f64.const 1) - (f64.const 1.5) - ) - ) - (local.set $$small$0$i - (local.get $$$404$i) - ) - ) - ) - (local.set $$tobool400$i - (i32.eq - (local.get $$pl$0$i) - (i32.const 0) - ) - ) - (block $do-once83 - (if - (local.get $$tobool400$i) - (block - (local.set $$round377$1$i - (local.get $$$396$i) - ) - (local.set $$small$1$i - (local.get $$small$0$i) - ) - ) - (block - (local.set $$232 - (i32.load8_s - (local.get $$prefix$0$i) - ) - ) - (local.set $$cmp403$i - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$232) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 45) - ) - ) - (if - (i32.eqz - (local.get $$cmp403$i) - ) - (block - (local.set $$round377$1$i - (local.get $$$396$i) - ) - (local.set $$small$1$i - (local.get $$small$0$i) - ) - (br $do-once83) - ) - ) - (local.set $$mul406$i - (f64.neg - (local.get $$$396$i) - ) - ) - (local.set $$mul407$i - (f64.neg - (local.get $$small$0$i) - ) - ) - (local.set $$round377$1$i - (local.get $$mul406$i) - ) - (local.set $$small$1$i - (local.get $$mul407$i) - ) - ) - ) - ) - (local.set $$sub409$i - (i32.sub - (local.get $$231) - (local.get $$rem370$i) - ) - ) - (i32.store - (local.get $$add$ptr358$i) - (local.get $$sub409$i) - ) - (local.set $$add410$i - (f64.add - (local.get $$round377$1$i) - (local.get $$small$1$i) - ) - ) - (local.set $$cmp411$i - (f64.ne - (local.get $$add410$i) - (local.get $$round377$1$i) - ) - ) - (if - (i32.eqz - (local.get $$cmp411$i) - ) - (block - (local.set $$a$8$i - (local.get $$a$3$lcssa$i) - ) - (local.set $$d$4$i - (local.get $$add$ptr358$i) - ) - (local.set $$e$4$i - (local.get $$e$1$i) - ) - (br $do-once81) - ) - ) - (local.set $$add414$i - (i32.add - (local.get $$sub409$i) - (local.get $$i$1$lcssa$i) - ) - ) - (i32.store - (local.get $$add$ptr358$i) - (local.get $$add414$i) - ) - (local.set $$cmp416$519$i - (i32.gt_u - (local.get $$add414$i) - (i32.const 999999999) - ) - ) - (if - (local.get $$cmp416$519$i) - (block - (local.set $$a$5521$i - (local.get $$a$3$lcssa$i) - ) - (local.set $$d$2520$i - (local.get $$add$ptr358$i) - ) - (loop $while-in86 - (block $while-out85 - (local.set $$incdec$ptr419$i - (i32.add - (local.get $$d$2520$i) - (i32.const -4) - ) - ) - (i32.store - (local.get $$d$2520$i) - (i32.const 0) - ) - (local.set $$cmp420$i - (i32.lt_u - (local.get $$incdec$ptr419$i) - (local.get $$a$5521$i) - ) - ) - (if - (local.get $$cmp420$i) - (block - (local.set $$incdec$ptr423$i - (i32.add - (local.get $$a$5521$i) - (i32.const -4) - ) - ) - (i32.store - (local.get $$incdec$ptr423$i) - (i32.const 0) - ) - (local.set $$a$6$i - (local.get $$incdec$ptr423$i) - ) - ) - (local.set $$a$6$i - (local.get $$a$5521$i) - ) - ) - (local.set $$233 - (i32.load - (local.get $$incdec$ptr419$i) - ) - ) - (local.set $$inc425$i - (i32.add - (local.get $$233) - (i32.const 1) - ) - ) - (i32.store - (local.get $$incdec$ptr419$i) - (local.get $$inc425$i) - ) - (local.set $$cmp416$i - (i32.gt_u - (local.get $$inc425$i) - (i32.const 999999999) - ) - ) - (if - (local.get $$cmp416$i) - (block - (local.set $$a$5521$i - (local.get $$a$6$i) - ) - (local.set $$d$2520$i - (local.get $$incdec$ptr419$i) - ) - ) - (block - (local.set $$a$5$lcssa$i - (local.get $$a$6$i) - ) - (local.set $$d$2$lcssa$i - (local.get $$incdec$ptr419$i) - ) - (br $while-out85) - ) - ) - (br $while-in86) - ) - ) - ) - (block - (local.set $$a$5$lcssa$i - (local.get $$a$3$lcssa$i) - ) - (local.set $$d$2$lcssa$i - (local.get $$add$ptr358$i) - ) - ) - ) - (local.set $$sub$ptr$rhs$cast428$i - (local.get $$a$5$lcssa$i) - ) - (local.set $$sub$ptr$sub429$i - (i32.sub - (local.get $$sub$ptr$rhs$cast345$i) - (local.get $$sub$ptr$rhs$cast428$i) - ) - ) - (local.set $$sub$ptr$div430$i - (i32.shr_s - (local.get $$sub$ptr$sub429$i) - (i32.const 2) - ) - ) - (local.set $$mul431$i - (i32.mul - (local.get $$sub$ptr$div430$i) - (i32.const 9) - ) - ) - (local.set $$234 - (i32.load - (local.get $$a$5$lcssa$i) - ) - ) - (local.set $$cmp433$515$i - (i32.lt_u - (local.get $$234) - (i32.const 10) - ) - ) - (if - (local.get $$cmp433$515$i) - (block - (local.set $$a$8$i - (local.get $$a$5$lcssa$i) - ) - (local.set $$d$4$i - (local.get $$d$2$lcssa$i) - ) - (local.set $$e$4$i - (local.get $$mul431$i) - ) - (br $do-once81) - ) - (block - (local.set $$e$2517$i - (local.get $$mul431$i) - ) - (local.set $$i$2516$i - (i32.const 10) - ) - ) - ) - (loop $while-in88 - (block $while-out87 - (local.set $$mul437$i - (i32.mul - (local.get $$i$2516$i) - (i32.const 10) - ) - ) - (local.set $$inc438$i - (i32.add - (local.get $$e$2517$i) - (i32.const 1) - ) - ) - (local.set $$cmp433$i - (i32.lt_u - (local.get $$234) - (local.get $$mul437$i) - ) - ) - (if - (local.get $$cmp433$i) - (block - (local.set $$a$8$i - (local.get $$a$5$lcssa$i) - ) - (local.set $$d$4$i - (local.get $$d$2$lcssa$i) - ) - (local.set $$e$4$i - (local.get $$inc438$i) - ) - (br $while-out87) - ) - (block - (local.set $$e$2517$i - (local.get $$inc438$i) - ) - (local.set $$i$2516$i - (local.get $$mul437$i) - ) - ) - ) - (br $while-in88) - ) - ) - ) - ) - ) - (local.set $$add$ptr442$i - (i32.add - (local.get $$d$4$i) - (i32.const 4) - ) - ) - (local.set $$cmp443$i - (i32.gt_u - (local.get $$z$3$lcssa$i) - (local.get $$add$ptr442$i) - ) - ) - (local.set $$add$ptr442$z$3$i - (if (result i32) - (local.get $$cmp443$i) - (local.get $$add$ptr442$i) - (local.get $$z$3$lcssa$i) - ) - ) - (local.set $$a$9$ph$i - (local.get $$a$8$i) - ) - (local.set $$e$5$ph$i - (local.get $$e$4$i) - ) - (local.set $$z$7$ph$i - (local.get $$add$ptr442$z$3$i) - ) - ) - (block - (local.set $$a$9$ph$i - (local.get $$a$3$lcssa$i) - ) - (local.set $$e$5$ph$i - (local.get $$e$1$i) - ) - (local.set $$z$7$ph$i - (local.get $$z$3$lcssa$i) - ) - ) - ) - (local.set $$sub626$le$i - (i32.sub - (i32.const 0) - (local.get $$e$5$ph$i) - ) - ) - (local.set $$z$7$i - (local.get $$z$7$ph$i) - ) - (loop $while-in90 - (block $while-out89 - (local.set $$cmp450$i - (i32.gt_u - (local.get $$z$7$i) - (local.get $$a$9$ph$i) - ) - ) - (if - (i32.eqz - (local.get $$cmp450$i) - ) - (block - (local.set $$cmp450$lcssa$i - (i32.const 0) - ) - (local.set $$z$7$i$lcssa - (local.get $$z$7$i) - ) - (br $while-out89) - ) - ) - (local.set $$arrayidx453$i - (i32.add - (local.get $$z$7$i) - (i32.const -4) - ) - ) - (local.set $$235 - (i32.load - (local.get $$arrayidx453$i) - ) - ) - (local.set $$lnot455$i - (i32.eq - (local.get $$235) - (i32.const 0) - ) - ) - (if - (local.get $$lnot455$i) - (local.set $$z$7$i - (local.get $$arrayidx453$i) - ) - (block - (local.set $$cmp450$lcssa$i - (i32.const 1) - ) - (local.set $$z$7$i$lcssa - (local.get $$z$7$i) - ) - (br $while-out89) - ) - ) - (br $while-in90) - ) - ) - (block $do-once91 - (if - (local.get $$cmp338$i) - (block - (local.set $$236 - (i32.and - (local.get $$tobool341$i) - (i32.const 1) - ) - ) - (local.set $$inc468$i - (i32.xor - (local.get $$236) - (i32.const 1) - ) - ) - (local.set $$$p$inc468$i - (i32.add - (local.get $$inc468$i) - (local.get $$$p$i) - ) - ) - (local.set $$cmp470$i - (i32.gt_s - (local.get $$$p$inc468$i) - (local.get $$e$5$ph$i) - ) - ) - (local.set $$cmp473$i - (i32.gt_s - (local.get $$e$5$ph$i) - (i32.const -5) - ) - ) - (local.set $$or$cond2$i - (i32.and - (local.get $$cmp470$i) - (local.get $$cmp473$i) - ) - ) - (if - (local.get $$or$cond2$i) - (block - (local.set $$dec476$i - (i32.add - (local.get $$t$0) - (i32.const -1) - ) - ) - (local.set $$add477$neg$i - (i32.add - (local.get $$$p$inc468$i) - (i32.const -1) - ) - ) - (local.set $$sub478$i - (i32.sub - (local.get $$add477$neg$i) - (local.get $$e$5$ph$i) - ) - ) - (local.set $$p$addr$2$i - (local.get $$sub478$i) - ) - (local.set $$t$addr$0$i - (local.get $$dec476$i) - ) - ) - (block - (local.set $$sub480$i - (i32.add - (local.get $$t$0) - (i32.const -2) - ) - ) - (local.set $$dec481$i - (i32.add - (local.get $$$p$inc468$i) - (i32.const -1) - ) - ) - (local.set $$p$addr$2$i - (local.get $$dec481$i) - ) - (local.set $$t$addr$0$i - (local.get $$sub480$i) - ) - ) - ) - (local.set $$and483$i - (i32.and - (local.get $$fl$1$and219) - (i32.const 8) - ) - ) - (local.set $$tobool484$i - (i32.eq - (local.get $$and483$i) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool484$i) - ) - (block - (local.set $$and610$pre$phi$iZ2D - (local.get $$and483$i) - ) - (local.set $$p$addr$3$i - (local.get $$p$addr$2$i) - ) - (local.set $$t$addr$1$i - (local.get $$t$addr$0$i) - ) - (br $do-once91) - ) - ) - (block $do-once93 - (if - (local.get $$cmp450$lcssa$i) - (block - (local.set $$arrayidx489$i - (i32.add - (local.get $$z$7$i$lcssa) - (i32.const -4) - ) - ) - (local.set $$237 - (i32.load - (local.get $$arrayidx489$i) - ) - ) - (local.set $$tobool490$i - (i32.eq - (local.get $$237) - (i32.const 0) - ) - ) - (if - (local.get $$tobool490$i) - (block - (local.set $$j$2$i - (i32.const 9) - ) - (br $do-once93) - ) - ) - (local.set $$rem494$510$i - (i32.and - (call $i32u-rem - (local.get $$237) - (i32.const 10) - ) - (i32.const -1) - ) - ) - (local.set $$cmp495$511$i - (i32.eq - (local.get $$rem494$510$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp495$511$i) - (block - (local.set $$i$3512$i - (i32.const 10) - ) - (local.set $$j$1513$i - (i32.const 0) - ) - ) - (block - (local.set $$j$2$i - (i32.const 0) - ) - (br $do-once93) - ) - ) - (loop $while-in96 - (block $while-out95 - (local.set $$mul499$i - (i32.mul - (local.get $$i$3512$i) - (i32.const 10) - ) - ) - (local.set $$inc500$i - (i32.add - (local.get $$j$1513$i) - (i32.const 1) - ) - ) - (local.set $$rem494$i - (i32.and - (call $i32u-rem - (local.get $$237) - (local.get $$mul499$i) - ) - (i32.const -1) - ) - ) - (local.set $$cmp495$i - (i32.eq - (local.get $$rem494$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp495$i) - (block - (local.set $$i$3512$i - (local.get $$mul499$i) - ) - (local.set $$j$1513$i - (local.get $$inc500$i) - ) - ) - (block - (local.set $$j$2$i - (local.get $$inc500$i) - ) - (br $while-out95) - ) - ) - (br $while-in96) - ) - ) - ) - (local.set $$j$2$i - (i32.const 9) - ) - ) - ) - (local.set $$or504$i - (i32.or - (local.get $$t$addr$0$i) - (i32.const 32) - ) - ) - (local.set $$cmp505$i - (i32.eq - (local.get $$or504$i) - (i32.const 102) - ) - ) - (local.set $$sub$ptr$lhs$cast508$i - (local.get $$z$7$i$lcssa) - ) - (local.set $$sub$ptr$sub510$i - (i32.sub - (local.get $$sub$ptr$lhs$cast508$i) - (local.get $$sub$ptr$rhs$cast345$i) - ) - ) - (local.set $$sub$ptr$div511$i - (i32.shr_s - (local.get $$sub$ptr$sub510$i) - (i32.const 2) - ) - ) - (local.set $$238 - (i32.mul - (local.get $$sub$ptr$div511$i) - (i32.const 9) - ) - ) - (local.set $$mul513$i - (i32.add - (local.get $$238) - (i32.const -9) - ) - ) - (if - (local.get $$cmp505$i) - (block - (local.set $$sub514$i - (i32.sub - (local.get $$mul513$i) - (local.get $$j$2$i) - ) - ) - (local.set $$cmp515$i - (i32.lt_s - (local.get $$sub514$i) - (i32.const 0) - ) - ) - (local.set $$$sub514$i - (if (result i32) - (local.get $$cmp515$i) - (i32.const 0) - (local.get $$sub514$i) - ) - ) - (local.set $$cmp528$i - (i32.lt_s - (local.get $$p$addr$2$i) - (local.get $$$sub514$i) - ) - ) - (local.set $$p$addr$2$$sub514398$i - (if (result i32) - (local.get $$cmp528$i) - (local.get $$p$addr$2$i) - (local.get $$$sub514$i) - ) - ) - (local.set $$and610$pre$phi$iZ2D - (i32.const 0) - ) - (local.set $$p$addr$3$i - (local.get $$p$addr$2$$sub514398$i) - ) - (local.set $$t$addr$1$i - (local.get $$t$addr$0$i) - ) - (br $do-once91) - ) - (block - (local.set $$add561$i - (i32.add - (local.get $$mul513$i) - (local.get $$e$5$ph$i) - ) - ) - (local.set $$sub562$i - (i32.sub - (local.get $$add561$i) - (local.get $$j$2$i) - ) - ) - (local.set $$cmp563$i - (i32.lt_s - (local.get $$sub562$i) - (i32.const 0) - ) - ) - (local.set $$$sub562$i - (if (result i32) - (local.get $$cmp563$i) - (i32.const 0) - (local.get $$sub562$i) - ) - ) - (local.set $$cmp577$i - (i32.lt_s - (local.get $$p$addr$2$i) - (local.get $$$sub562$i) - ) - ) - (local.set $$p$addr$2$$sub562399$i - (if (result i32) - (local.get $$cmp577$i) - (local.get $$p$addr$2$i) - (local.get $$$sub562$i) - ) - ) - (local.set $$and610$pre$phi$iZ2D - (i32.const 0) - ) - (local.set $$p$addr$3$i - (local.get $$p$addr$2$$sub562399$i) - ) - (local.set $$t$addr$1$i - (local.get $$t$addr$0$i) - ) - (br $do-once91) - ) - ) - ) - (block - (local.set $$$pre567$i - (i32.and - (local.get $$fl$1$and219) - (i32.const 8) - ) - ) - (local.set $$and610$pre$phi$iZ2D - (local.get $$$pre567$i) - ) - (local.set $$p$addr$3$i - (local.get $$$p$i) - ) - (local.set $$t$addr$1$i - (local.get $$t$0) - ) - ) - ) - ) - (local.set $$239 - (i32.or - (local.get $$p$addr$3$i) - (local.get $$and610$pre$phi$iZ2D) - ) - ) - (local.set $$240 - (i32.ne - (local.get $$239) - (i32.const 0) - ) - ) - (local.set $$lor$ext$i - (i32.and - (local.get $$240) - (i32.const 1) - ) - ) - (local.set $$or613$i - (i32.or - (local.get $$t$addr$1$i) - (i32.const 32) - ) - ) - (local.set $$cmp614$i - (i32.eq - (local.get $$or613$i) - (i32.const 102) - ) - ) - (if - (local.get $$cmp614$i) - (block - (local.set $$cmp617$i - (i32.gt_s - (local.get $$e$5$ph$i) - (i32.const 0) - ) - ) - (local.set $$add620$i - (if (result i32) - (local.get $$cmp617$i) - (local.get $$e$5$ph$i) - (i32.const 0) - ) - ) - (local.set $$estr$2$i - (i32.const 0) - ) - (local.set $$sub$ptr$sub650$pn$i - (local.get $$add620$i) - ) - ) - (block - (local.set $$cmp623$i - (i32.lt_s - (local.get $$e$5$ph$i) - (i32.const 0) - ) - ) - (local.set $$cond629$i - (if (result i32) - (local.get $$cmp623$i) - (local.get $$sub626$le$i) - (local.get $$e$5$ph$i) - ) - ) - (local.set $$241 - (i32.lt_s - (local.get $$cond629$i) - (i32.const 0) - ) - ) - (local.set $$242 - (i32.shr_s - (i32.shl - (local.get $$241) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$243 - (call $_fmt_u - (local.get $$cond629$i) - (local.get $$242) - (local.get $$arrayidx$i$236) - ) - ) - (local.set $$sub$ptr$rhs$cast634$504$i - (local.get $$243) - ) - (local.set $$sub$ptr$sub635$505$i - (i32.sub - (local.get $$sub$ptr$lhs$cast160$i) - (local.get $$sub$ptr$rhs$cast634$504$i) - ) - ) - (local.set $$cmp636$506$i - (i32.lt_s - (local.get $$sub$ptr$sub635$505$i) - (i32.const 2) - ) - ) - (if - (local.get $$cmp636$506$i) - (block - (local.set $$estr$1507$i - (local.get $$243) - ) - (loop $while-in98 - (block $while-out97 - (local.set $$incdec$ptr639$i - (i32.add - (local.get $$estr$1507$i) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr639$i) - (i32.const 48) - ) - (local.set $$sub$ptr$rhs$cast634$i - (local.get $$incdec$ptr639$i) - ) - (local.set $$sub$ptr$sub635$i - (i32.sub - (local.get $$sub$ptr$lhs$cast160$i) - (local.get $$sub$ptr$rhs$cast634$i) - ) - ) - (local.set $$cmp636$i - (i32.lt_s - (local.get $$sub$ptr$sub635$i) - (i32.const 2) - ) - ) - (if - (local.get $$cmp636$i) - (local.set $$estr$1507$i - (local.get $$incdec$ptr639$i) - ) - (block - (local.set $$estr$1$lcssa$i - (local.get $$incdec$ptr639$i) - ) - (br $while-out97) - ) - ) - (br $while-in98) - ) - ) - ) - (local.set $$estr$1$lcssa$i - (local.get $$243) - ) - ) - (local.set $$244 - (i32.shr_s - (local.get $$e$5$ph$i) - (i32.const 31) - ) - ) - (local.set $$245 - (i32.and - (local.get $$244) - (i32.const 2) - ) - ) - (local.set $$246 - (i32.add - (local.get $$245) - (i32.const 43) - ) - ) - (local.set $$conv644$i - (i32.and - (local.get $$246) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr645$i - (i32.add - (local.get $$estr$1$lcssa$i) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr645$i) - (local.get $$conv644$i) - ) - (local.set $$conv646$i - (i32.and - (local.get $$t$addr$1$i) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr647$i - (i32.add - (local.get $$estr$1$lcssa$i) - (i32.const -2) - ) - ) - (i32.store8 - (local.get $$incdec$ptr647$i) - (local.get $$conv646$i) - ) - (local.set $$sub$ptr$rhs$cast649$i - (local.get $$incdec$ptr647$i) - ) - (local.set $$sub$ptr$sub650$i - (i32.sub - (local.get $$sub$ptr$lhs$cast160$i) - (local.get $$sub$ptr$rhs$cast649$i) - ) - ) - (local.set $$estr$2$i - (local.get $$incdec$ptr647$i) - ) - (local.set $$sub$ptr$sub650$pn$i - (local.get $$sub$ptr$sub650$i) - ) - ) - ) - (local.set $$add608$i - (i32.add - (local.get $$pl$0$i) - (i32.const 1) - ) - ) - (local.set $$add612$i - (i32.add - (local.get $$add608$i) - (local.get $$p$addr$3$i) - ) - ) - (local.set $$l$1$i - (i32.add - (local.get $$add612$i) - (local.get $$lor$ext$i) - ) - ) - (local.set $$add653$i - (i32.add - (local.get $$l$1$i) - (local.get $$sub$ptr$sub650$pn$i) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$add653$i) - (local.get $$fl$1$and219) - ) - (local.set $$247 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$436$i - (i32.and - (local.get $$247) - (i32.const 32) - ) - ) - (local.set $$tobool$i$437$i - (i32.eq - (local.get $$and$i$436$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$437$i) - (drop - (call $___fwritex - (local.get $$prefix$0$i) - (local.get $$pl$0$i) - (local.get $$f) - ) - ) - ) - (local.set $$xor655$i - (i32.xor - (local.get $$fl$1$and219) - (i32.const 65536) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 48) - (local.get $$w$1) - (local.get $$add653$i) - (local.get $$xor655$i) - ) - (block $do-once99 - (if - (local.get $$cmp614$i) - (block - (local.set $$cmp660$i - (i32.gt_u - (local.get $$a$9$ph$i) - (local.get $$arraydecay208$add$ptr213$i) - ) - ) - (local.set $$r$0$a$9$i - (if (result i32) - (local.get $$cmp660$i) - (local.get $$arraydecay208$add$ptr213$i) - (local.get $$a$9$ph$i) - ) - ) - (local.set $$d$5494$i - (local.get $$r$0$a$9$i) - ) - (loop $while-in102 - (block $while-out101 - (local.set $$248 - (i32.load - (local.get $$d$5494$i) - ) - ) - (local.set $$249 - (call $_fmt_u - (local.get $$248) - (i32.const 0) - (local.get $$add$ptr671$i) - ) - ) - (local.set $$cmp673$i - (i32.eq - (local.get $$d$5494$i) - (local.get $$r$0$a$9$i) - ) - ) - (block $do-once103 - (if - (local.get $$cmp673$i) - (block - (local.set $$cmp686$i - (i32.eq - (local.get $$249) - (local.get $$add$ptr671$i) - ) - ) - (if - (i32.eqz - (local.get $$cmp686$i) - ) - (block - (local.set $$s668$1$i - (local.get $$249) - ) - (br $do-once103) - ) - ) - (i32.store8 - (local.get $$incdec$ptr689$i) - (i32.const 48) - ) - (local.set $$s668$1$i - (local.get $$incdec$ptr689$i) - ) - ) - (block - (local.set $$cmp678$491$i - (i32.gt_u - (local.get $$249) - (local.get $$buf$i) - ) - ) - (if - (local.get $$cmp678$491$i) - (local.set $$s668$0492$i - (local.get $$249) - ) - (block - (local.set $$s668$1$i - (local.get $$249) - ) - (br $do-once103) - ) - ) - (loop $while-in106 - (block $while-out105 - (local.set $$incdec$ptr681$i - (i32.add - (local.get $$s668$0492$i) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr681$i) - (i32.const 48) - ) - (local.set $$cmp678$i - (i32.gt_u - (local.get $$incdec$ptr681$i) - (local.get $$buf$i) - ) - ) - (if - (local.get $$cmp678$i) - (local.set $$s668$0492$i - (local.get $$incdec$ptr681$i) - ) - (block - (local.set $$s668$1$i - (local.get $$incdec$ptr681$i) - ) - (br $while-out105) - ) - ) - (br $while-in106) - ) - ) - ) - ) - ) - (local.set $$250 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$442$i - (i32.and - (local.get $$250) - (i32.const 32) - ) - ) - (local.set $$tobool$i$443$i - (i32.eq - (local.get $$and$i$442$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$443$i) - (block - (local.set $$sub$ptr$rhs$cast695$i - (local.get $$s668$1$i) - ) - (local.set $$sub$ptr$sub696$i - (i32.sub - (local.get $$sub$ptr$lhs$cast694$i) - (local.get $$sub$ptr$rhs$cast695$i) - ) - ) - (drop - (call $___fwritex - (local.get $$s668$1$i) - (local.get $$sub$ptr$sub696$i) - (local.get $$f) - ) - ) - ) - ) - (local.set $$incdec$ptr698$i - (i32.add - (local.get $$d$5494$i) - (i32.const 4) - ) - ) - (local.set $$cmp665$i - (i32.gt_u - (local.get $$incdec$ptr698$i) - (local.get $$arraydecay208$add$ptr213$i) - ) - ) - (if - (local.get $$cmp665$i) - (block - (local.set $$incdec$ptr698$i$lcssa - (local.get $$incdec$ptr698$i) - ) - (br $while-out101) - ) - (local.set $$d$5494$i - (local.get $$incdec$ptr698$i) - ) - ) - (br $while-in102) - ) - ) - (local.set $$251 - (i32.eq - (local.get $$239) - (i32.const 0) - ) - ) - (block $do-once107 - (if - (i32.eqz - (local.get $$251) - ) - (block - (local.set $$252 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$448$i - (i32.and - (local.get $$252) - (i32.const 32) - ) - ) - (local.set $$tobool$i$449$i - (i32.eq - (local.get $$and$i$448$i) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool$i$449$i) - ) - (br $do-once107) - ) - (drop - (call $___fwritex - (i32.const 4143) - (i32.const 1) - (local.get $$f) - ) - ) - ) - ) - ) - (local.set $$cmp707$486$i - (i32.lt_u - (local.get $$incdec$ptr698$i$lcssa) - (local.get $$z$7$i$lcssa) - ) - ) - (local.set $$cmp710$487$i - (i32.gt_s - (local.get $$p$addr$3$i) - (i32.const 0) - ) - ) - (local.set $$253 - (i32.and - (local.get $$cmp710$487$i) - (local.get $$cmp707$486$i) - ) - ) - (if - (local.get $$253) - (block - (local.set $$d$6488$i - (local.get $$incdec$ptr698$i$lcssa) - ) - (local.set $$p$addr$4489$i - (local.get $$p$addr$3$i) - ) - (loop $while-in110 - (block $while-out109 - (local.set $$254 - (i32.load - (local.get $$d$6488$i) - ) - ) - (local.set $$255 - (call $_fmt_u - (local.get $$254) - (i32.const 0) - (local.get $$add$ptr671$i) - ) - ) - (local.set $$cmp722$483$i - (i32.gt_u - (local.get $$255) - (local.get $$buf$i) - ) - ) - (if - (local.get $$cmp722$483$i) - (block - (local.set $$s715$0484$i - (local.get $$255) - ) - (loop $while-in112 - (block $while-out111 - (local.set $$incdec$ptr725$i - (i32.add - (local.get $$s715$0484$i) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr725$i) - (i32.const 48) - ) - (local.set $$cmp722$i - (i32.gt_u - (local.get $$incdec$ptr725$i) - (local.get $$buf$i) - ) - ) - (if - (local.get $$cmp722$i) - (local.set $$s715$0484$i - (local.get $$incdec$ptr725$i) - ) - (block - (local.set $$s715$0$lcssa$i - (local.get $$incdec$ptr725$i) - ) - (br $while-out111) - ) - ) - (br $while-in112) - ) - ) - ) - (local.set $$s715$0$lcssa$i - (local.get $$255) - ) - ) - (local.set $$256 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$454$i - (i32.and - (local.get $$256) - (i32.const 32) - ) - ) - (local.set $$tobool$i$455$i - (i32.eq - (local.get $$and$i$454$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$455$i) - (block - (local.set $$cmp727$i - (i32.gt_s - (local.get $$p$addr$4489$i) - (i32.const 9) - ) - ) - (local.set $$cond732$i - (if (result i32) - (local.get $$cmp727$i) - (i32.const 9) - (local.get $$p$addr$4489$i) - ) - ) - (drop - (call $___fwritex - (local.get $$s715$0$lcssa$i) - (local.get $$cond732$i) - (local.get $$f) - ) - ) - ) - ) - (local.set $$incdec$ptr734$i - (i32.add - (local.get $$d$6488$i) - (i32.const 4) - ) - ) - (local.set $$sub735$i - (i32.add - (local.get $$p$addr$4489$i) - (i32.const -9) - ) - ) - (local.set $$cmp707$i - (i32.lt_u - (local.get $$incdec$ptr734$i) - (local.get $$z$7$i$lcssa) - ) - ) - (local.set $$cmp710$i - (i32.gt_s - (local.get $$p$addr$4489$i) - (i32.const 9) - ) - ) - (local.set $$257 - (i32.and - (local.get $$cmp710$i) - (local.get $$cmp707$i) - ) - ) - (if - (local.get $$257) - (block - (local.set $$d$6488$i - (local.get $$incdec$ptr734$i) - ) - (local.set $$p$addr$4489$i - (local.get $$sub735$i) - ) - ) - (block - (local.set $$p$addr$4$lcssa$i - (local.get $$sub735$i) - ) - (br $while-out109) - ) - ) - (br $while-in110) - ) - ) - ) - (local.set $$p$addr$4$lcssa$i - (local.get $$p$addr$3$i) - ) - ) - (local.set $$add737$i - (i32.add - (local.get $$p$addr$4$lcssa$i) - (i32.const 9) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 48) - (local.get $$add737$i) - (i32.const 9) - (i32.const 0) - ) - ) - (block - (local.set $$add$ptr742$i - (i32.add - (local.get $$a$9$ph$i) - (i32.const 4) - ) - ) - (local.set $$z$7$add$ptr742$i - (if (result i32) - (local.get $$cmp450$lcssa$i) - (local.get $$z$7$i$lcssa) - (local.get $$add$ptr742$i) - ) - ) - (local.set $$cmp748$499$i - (i32.gt_s - (local.get $$p$addr$3$i) - (i32.const -1) - ) - ) - (if - (local.get $$cmp748$499$i) - (block - (local.set $$tobool781$i - (i32.eq - (local.get $$and610$pre$phi$iZ2D) - (i32.const 0) - ) - ) - (local.set $$d$7500$i - (local.get $$a$9$ph$i) - ) - (local.set $$p$addr$5501$i - (local.get $$p$addr$3$i) - ) - (loop $while-in114 - (block $while-out113 - (local.set $$258 - (i32.load - (local.get $$d$7500$i) - ) - ) - (local.set $$259 - (call $_fmt_u - (local.get $$258) - (i32.const 0) - (local.get $$add$ptr671$i) - ) - ) - (local.set $$cmp760$i - (i32.eq - (local.get $$259) - (local.get $$add$ptr671$i) - ) - ) - (if - (local.get $$cmp760$i) - (block - (i32.store8 - (local.get $$incdec$ptr689$i) - (i32.const 48) - ) - (local.set $$s753$0$i - (local.get $$incdec$ptr689$i) - ) - ) - (local.set $$s753$0$i - (local.get $$259) - ) - ) - (local.set $$cmp765$i - (i32.eq - (local.get $$d$7500$i) - (local.get $$a$9$ph$i) - ) - ) - (block $do-once115 - (if - (local.get $$cmp765$i) - (block - (local.set $$incdec$ptr776$i - (i32.add - (local.get $$s753$0$i) - (i32.const 1) - ) - ) - (local.set $$260 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$460$i - (i32.and - (local.get $$260) - (i32.const 32) - ) - ) - (local.set $$tobool$i$461$i - (i32.eq - (local.get $$and$i$460$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$461$i) - (drop - (call $___fwritex - (local.get $$s753$0$i) - (i32.const 1) - (local.get $$f) - ) - ) - ) - (local.set $$cmp777$i - (i32.lt_s - (local.get $$p$addr$5501$i) - (i32.const 1) - ) - ) - (local.set $$or$cond401$i - (i32.and - (local.get $$tobool781$i) - (local.get $$cmp777$i) - ) - ) - (if - (local.get $$or$cond401$i) - (block - (local.set $$s753$2$i - (local.get $$incdec$ptr776$i) - ) - (br $do-once115) - ) - ) - (local.set $$261 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$466$i - (i32.and - (local.get $$261) - (i32.const 32) - ) - ) - (local.set $$tobool$i$467$i - (i32.eq - (local.get $$and$i$466$i) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool$i$467$i) - ) - (block - (local.set $$s753$2$i - (local.get $$incdec$ptr776$i) - ) - (br $do-once115) - ) - ) - (drop - (call $___fwritex - (i32.const 4143) - (i32.const 1) - (local.get $$f) - ) - ) - (local.set $$s753$2$i - (local.get $$incdec$ptr776$i) - ) - ) - (block - (local.set $$cmp770$495$i - (i32.gt_u - (local.get $$s753$0$i) - (local.get $$buf$i) - ) - ) - (if - (local.get $$cmp770$495$i) - (local.set $$s753$1496$i - (local.get $$s753$0$i) - ) - (block - (local.set $$s753$2$i - (local.get $$s753$0$i) - ) - (br $do-once115) - ) - ) - (loop $while-in118 - (block $while-out117 - (local.set $$incdec$ptr773$i - (i32.add - (local.get $$s753$1496$i) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr773$i) - (i32.const 48) - ) - (local.set $$cmp770$i - (i32.gt_u - (local.get $$incdec$ptr773$i) - (local.get $$buf$i) - ) - ) - (if - (local.get $$cmp770$i) - (local.set $$s753$1496$i - (local.get $$incdec$ptr773$i) - ) - (block - (local.set $$s753$2$i - (local.get $$incdec$ptr773$i) - ) - (br $while-out117) - ) - ) - (br $while-in118) - ) - ) - ) - ) - ) - (local.set $$sub$ptr$rhs$cast788$i - (local.get $$s753$2$i) - ) - (local.set $$sub$ptr$sub789$i - (i32.sub - (local.get $$sub$ptr$lhs$cast694$i) - (local.get $$sub$ptr$rhs$cast788$i) - ) - ) - (local.set $$262 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$472$i - (i32.and - (local.get $$262) - (i32.const 32) - ) - ) - (local.set $$tobool$i$473$i - (i32.eq - (local.get $$and$i$472$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$473$i) - (block - (local.set $$cmp790$i - (i32.gt_s - (local.get $$p$addr$5501$i) - (local.get $$sub$ptr$sub789$i) - ) - ) - (local.set $$cond800$i - (if (result i32) - (local.get $$cmp790$i) - (local.get $$sub$ptr$sub789$i) - (local.get $$p$addr$5501$i) - ) - ) - (drop - (call $___fwritex - (local.get $$s753$2$i) - (local.get $$cond800$i) - (local.get $$f) - ) - ) - ) - ) - (local.set $$sub806$i - (i32.sub - (local.get $$p$addr$5501$i) - (local.get $$sub$ptr$sub789$i) - ) - ) - (local.set $$incdec$ptr808$i - (i32.add - (local.get $$d$7500$i) - (i32.const 4) - ) - ) - (local.set $$cmp745$i - (i32.lt_u - (local.get $$incdec$ptr808$i) - (local.get $$z$7$add$ptr742$i) - ) - ) - (local.set $$cmp748$i - (i32.gt_s - (local.get $$sub806$i) - (i32.const -1) - ) - ) - (local.set $$263 - (i32.and - (local.get $$cmp745$i) - (local.get $$cmp748$i) - ) - ) - (if - (local.get $$263) - (block - (local.set $$d$7500$i - (local.get $$incdec$ptr808$i) - ) - (local.set $$p$addr$5501$i - (local.get $$sub806$i) - ) - ) - (block - (local.set $$p$addr$5$lcssa$i - (local.get $$sub806$i) - ) - (br $while-out113) - ) - ) - (br $while-in114) - ) - ) - ) - (local.set $$p$addr$5$lcssa$i - (local.get $$p$addr$3$i) - ) - ) - (local.set $$add810$i - (i32.add - (local.get $$p$addr$5$lcssa$i) - (i32.const 18) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 48) - (local.get $$add810$i) - (i32.const 18) - (i32.const 0) - ) - (local.set $$264 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$i - (i32.and - (local.get $$264) - (i32.const 32) - ) - ) - (local.set $$tobool$i$i - (i32.eq - (local.get $$and$i$i) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool$i$i) - ) - (br $do-once99) - ) - (local.set $$sub$ptr$rhs$cast812$i - (local.get $$estr$2$i) - ) - (local.set $$sub$ptr$sub813$i - (i32.sub - (local.get $$sub$ptr$lhs$cast160$i) - (local.get $$sub$ptr$rhs$cast812$i) - ) - ) - (drop - (call $___fwritex - (local.get $$estr$2$i) - (local.get $$sub$ptr$sub813$i) - (local.get $$f) - ) - ) - ) - ) - ) - (local.set $$xor816$i - (i32.xor - (local.get $$fl$1$and219) - (i32.const 8192) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$add653$i) - (local.get $$xor816$i) - ) - (local.set $$cmp818$i - (i32.lt_s - (local.get $$add653$i) - (local.get $$w$1) - ) - ) - (local.set $$w$add653$i - (if (result i32) - (local.get $$cmp818$i) - (local.get $$w$1) - (local.get $$add653$i) - ) - ) - (local.set $$retval$0$i - (local.get $$w$add653$i) - ) - ) - (block - (local.set $$and36$i - (i32.and - (local.get $$t$0) - (i32.const 32) - ) - ) - (local.set $$tobool37$i - (i32.ne - (local.get $$and36$i) - (i32.const 0) - ) - ) - (local.set $$cond$i - (if (result i32) - (local.get $$tobool37$i) - (i32.const 4127) - (i32.const 4131) - ) - ) - (local.set $$cmp38$i - (i32.or - (f64.ne - (local.get $$y$addr$0$i) - (local.get $$y$addr$0$i) - ) - (f64.ne - (f64.const 0) - (f64.const 0) - ) - ) - ) - (local.set $$cond43$i - (if (result i32) - (local.get $$tobool37$i) - (i32.const 4135) - (i32.const 4139) - ) - ) - (local.set $$pl$1$i - (if (result i32) - (local.get $$cmp38$i) - (i32.const 0) - (local.get $$pl$0$i) - ) - ) - (local.set $$s35$0$i - (if (result i32) - (local.get $$cmp38$i) - (local.get $$cond43$i) - (local.get $$cond$i) - ) - ) - (local.set $$add$i$239 - (i32.add - (local.get $$pl$1$i) - (i32.const 3) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$add$i$239) - (local.get $$and219) - ) - (local.set $$193 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$406$i - (i32.and - (local.get $$193) - (i32.const 32) - ) - ) - (local.set $$tobool$i$407$i - (i32.eq - (local.get $$and$i$406$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$407$i) - (block - (drop - (call $___fwritex - (local.get $$prefix$0$i) - (local.get $$pl$1$i) - (local.get $$f) - ) - ) - (local.set $$$pre$i - (i32.load - (local.get $$f) - ) - ) - (local.set $$194 - (local.get $$$pre$i) - ) - ) - (local.set $$194 - (local.get $$193) - ) - ) - (local.set $$and$i$412$i - (i32.and - (local.get $$194) - (i32.const 32) - ) - ) - (local.set $$tobool$i$413$i - (i32.eq - (local.get $$and$i$412$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$413$i) - (drop - (call $___fwritex - (local.get $$s35$0$i) - (i32.const 3) - (local.get $$f) - ) - ) - ) - (local.set $$xor$i - (i32.xor - (local.get $$fl$1$and219) - (i32.const 8192) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$add$i$239) - (local.get $$xor$i) - ) - (local.set $$cmp48$i - (i32.lt_s - (local.get $$add$i$239) - (local.get $$w$1) - ) - ) - (local.set $$cond53$i - (if (result i32) - (local.get $$cmp48$i) - (local.get $$w$1) - (local.get $$add$i$239) - ) - ) - (local.set $$retval$0$i - (local.get $$cond53$i) - ) - ) - ) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$retval$0$i) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch17) - ) - ) - (block - (local.set $$a$2 - (local.get $$incdec$ptr169275) - ) - (local.set $$fl$6 - (local.get $$fl$1$and219) - ) - (local.set $$p$5 - (local.get $$p$0) - ) - (local.set $$pl$2 - (i32.const 0) - ) - (local.set $$prefix$2 - (i32.const 4091) - ) - (local.set $$z$2 - (local.get $$add$ptr205) - ) - ) - ) - ) - (block $label$break$L308 - (if - (i32.eq - (local.get $label) - (i32.const 64) - ) - (block - (local.set $label - (i32.const 0) - ) - (local.set $$90 - (local.get $$arg) - ) - (local.set $$91 - (local.get $$90) - ) - (local.set $$92 - (i32.load - (local.get $$91) - ) - ) - (local.set $$93 - (i32.add - (local.get $$90) - (i32.const 4) - ) - ) - (local.set $$94 - (local.get $$93) - ) - (local.set $$95 - (i32.load - (local.get $$94) - ) - ) - (local.set $$and249 - (i32.and - (local.get $$t$1) - (i32.const 32) - ) - ) - (local.set $$96 - (i32.eq - (local.get $$92) - (i32.const 0) - ) - ) - (local.set $$97 - (i32.eq - (local.get $$95) - (i32.const 0) - ) - ) - (local.set $$98 - (i32.and - (local.get $$96) - (local.get $$97) - ) - ) - (if - (local.get $$98) - (block - (local.set $$a$0 - (local.get $$add$ptr205) - ) - (local.set $$fl$4 - (local.get $$fl$3) - ) - (local.set $$p$2 - (local.get $$p$1) - ) - (local.set $$pl$1 - (i32.const 0) - ) - (local.set $$prefix$1 - (i32.const 4091) - ) - (local.set $label - (i32.const 77) - ) - ) - (block - (local.set $$101 - (local.get $$95) - ) - (local.set $$99 - (local.get $$92) - ) - (local.set $$s$addr$06$i - (local.get $$add$ptr205) - ) - (loop $while-in123 - (block $while-out122 - (local.set $$idxprom$i - (i32.and - (local.get $$99) - (i32.const 15) - ) - ) - (local.set $$arrayidx$i - (i32.add - (i32.const 4075) - (local.get $$idxprom$i) - ) - ) - (local.set $$100 - (i32.load8_s - (local.get $$arrayidx$i) - ) - ) - (local.set $$conv$4$i$211 - (i32.and - (local.get $$100) - (i32.const 255) - ) - ) - (local.set $$or$i - (i32.or - (local.get $$conv$4$i$211) - (local.get $$and249) - ) - ) - (local.set $$conv1$i - (i32.and - (local.get $$or$i) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr$i$212 - (i32.add - (local.get $$s$addr$06$i) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr$i$212) - (local.get $$conv1$i) - ) - (local.set $$102 - (call $_bitshift64Lshr - (local.get $$99) - (local.get $$101) - (i32.const 4) - ) - ) - (local.set $$103 - (global.get $tempRet0) - ) - (local.set $$104 - (i32.eq - (local.get $$102) - (i32.const 0) - ) - ) - (local.set $$105 - (i32.eq - (local.get $$103) - (i32.const 0) - ) - ) - (local.set $$106 - (i32.and - (local.get $$104) - (local.get $$105) - ) - ) - (if - (local.get $$106) - (block - (local.set $$incdec$ptr$i$212$lcssa - (local.get $$incdec$ptr$i$212) - ) - (br $while-out122) - ) - (block - (local.set $$101 - (local.get $$103) - ) - (local.set $$99 - (local.get $$102) - ) - (local.set $$s$addr$06$i - (local.get $$incdec$ptr$i$212) - ) - ) - ) - (br $while-in123) - ) - ) - (local.set $$107 - (local.get $$arg) - ) - (local.set $$108 - (local.get $$107) - ) - (local.set $$109 - (i32.load - (local.get $$108) - ) - ) - (local.set $$110 - (i32.add - (local.get $$107) - (i32.const 4) - ) - ) - (local.set $$111 - (local.get $$110) - ) - (local.set $$112 - (i32.load - (local.get $$111) - ) - ) - (local.set $$113 - (i32.eq - (local.get $$109) - (i32.const 0) - ) - ) - (local.set $$114 - (i32.eq - (local.get $$112) - (i32.const 0) - ) - ) - (local.set $$115 - (i32.and - (local.get $$113) - (local.get $$114) - ) - ) - (local.set $$and254 - (i32.and - (local.get $$fl$3) - (i32.const 8) - ) - ) - (local.set $$tobool255 - (i32.eq - (local.get $$and254) - (i32.const 0) - ) - ) - (local.set $$or$cond193 - (i32.or - (local.get $$tobool255) - (local.get $$115) - ) - ) - (if - (local.get $$or$cond193) - (block - (local.set $$a$0 - (local.get $$incdec$ptr$i$212$lcssa) - ) - (local.set $$fl$4 - (local.get $$fl$3) - ) - (local.set $$p$2 - (local.get $$p$1) - ) - (local.set $$pl$1 - (i32.const 0) - ) - (local.set $$prefix$1 - (i32.const 4091) - ) - (local.set $label - (i32.const 77) - ) - ) - (block - (local.set $$shr - (i32.shr_s - (local.get $$t$1) - (i32.const 4) - ) - ) - (local.set $$add$ptr257 - (i32.add - (i32.const 4091) - (local.get $$shr) - ) - ) - (local.set $$a$0 - (local.get $$incdec$ptr$i$212$lcssa) - ) - (local.set $$fl$4 - (local.get $$fl$3) - ) - (local.set $$p$2 - (local.get $$p$1) - ) - (local.set $$pl$1 - (i32.const 2) - ) - (local.set $$prefix$1 - (local.get $$add$ptr257) - ) - (local.set $label - (i32.const 77) - ) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 76) - ) - (block - (local.set $label - (i32.const 0) - ) - (local.set $$150 - (call $_fmt_u - (local.get $$148) - (local.get $$149) - (local.get $$add$ptr205) - ) - ) - (local.set $$a$0 - (local.get $$150) - ) - (local.set $$fl$4 - (local.get $$fl$1$and219) - ) - (local.set $$p$2 - (local.get $$p$0) - ) - (local.set $$pl$1 - (local.get $$pl$0) - ) - (local.set $$prefix$1 - (local.get $$prefix$0) - ) - (local.set $label - (i32.const 77) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 82) - ) - (block - (local.set $label - (i32.const 0) - ) - (local.set $$call356 - (call $_memchr - (local.get $$a$1) - (i32.const 0) - (local.get $$p$0) - ) - ) - (local.set $$tobool357 - (i32.eq - (local.get $$call356) - (i32.const 0) - ) - ) - (local.set $$sub$ptr$lhs$cast361 - (local.get $$call356) - ) - (local.set $$sub$ptr$rhs$cast362 - (local.get $$a$1) - ) - (local.set $$sub$ptr$sub363 - (i32.sub - (local.get $$sub$ptr$lhs$cast361) - (local.get $$sub$ptr$rhs$cast362) - ) - ) - (local.set $$add$ptr359 - (i32.add - (local.get $$a$1) - (local.get $$p$0) - ) - ) - (local.set $$z$1 - (if (result i32) - (local.get $$tobool357) - (local.get $$add$ptr359) - (local.get $$call356) - ) - ) - (local.set $$p$3 - (if (result i32) - (local.get $$tobool357) - (local.get $$p$0) - (local.get $$sub$ptr$sub363) - ) - ) - (local.set $$a$2 - (local.get $$a$1) - ) - (local.set $$fl$6 - (local.get $$and219) - ) - (local.set $$p$5 - (local.get $$p$3) - ) - (local.set $$pl$2 - (i32.const 0) - ) - (local.set $$prefix$2 - (i32.const 4091) - ) - (local.set $$z$2 - (local.get $$z$1) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 86) - ) - (block - (local.set $label - (i32.const 0) - ) - (local.set $$176 - (i32.load - (local.get $$arg) - ) - ) - (local.set $$i$0316 - (i32.const 0) - ) - (local.set $$l$1315 - (i32.const 0) - ) - (local.set $$ws$0317 - (local.get $$176) - ) - (loop $while-in125 - (block $while-out124 - (local.set $$177 - (i32.load - (local.get $$ws$0317) - ) - ) - (local.set $$tobool380 - (i32.eq - (local.get $$177) - (i32.const 0) - ) - ) - (if - (local.get $$tobool380) - (block - (local.set $$i$0$lcssa - (local.get $$i$0316) - ) - (local.set $$l$2 - (local.get $$l$1315) - ) - (br $while-out124) - ) - ) - (local.set $$call384 - (call $_wctomb - (local.get $$mb) - (local.get $$177) - ) - ) - (local.set $$cmp385 - (i32.lt_s - (local.get $$call384) - (i32.const 0) - ) - ) - (local.set $$sub389 - (i32.sub - (local.get $$p$4365) - (local.get $$i$0316) - ) - ) - (local.set $$cmp390 - (i32.gt_u - (local.get $$call384) - (local.get $$sub389) - ) - ) - (local.set $$or$cond195 - (i32.or - (local.get $$cmp385) - (local.get $$cmp390) - ) - ) - (if - (local.get $$or$cond195) - (block - (local.set $$i$0$lcssa - (local.get $$i$0316) - ) - (local.set $$l$2 - (local.get $$call384) - ) - (br $while-out124) - ) - ) - (local.set $$incdec$ptr383 - (i32.add - (local.get $$ws$0317) - (i32.const 4) - ) - ) - (local.set $$add395 - (i32.add - (local.get $$call384) - (local.get $$i$0316) - ) - ) - (local.set $$cmp377 - (i32.gt_u - (local.get $$p$4365) - (local.get $$add395) - ) - ) - (if - (local.get $$cmp377) - (block - (local.set $$i$0316 - (local.get $$add395) - ) - (local.set $$l$1315 - (local.get $$call384) - ) - (local.set $$ws$0317 - (local.get $$incdec$ptr383) - ) - ) - (block - (local.set $$i$0$lcssa - (local.get $$add395) - ) - (local.set $$l$2 - (local.get $$call384) - ) - (br $while-out124) - ) - ) - (br $while-in125) - ) - ) - (local.set $$cmp397 - (i32.lt_s - (local.get $$l$2) - (i32.const 0) - ) - ) - (if - (local.get $$cmp397) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$i$0$lcssa) - (local.get $$fl$1$and219) - ) - (local.set $$cmp404$324 - (i32.eq - (local.get $$i$0$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$cmp404$324) - (block - (local.set $$i$0$lcssa368 - (i32.const 0) - ) - (local.set $label - (i32.const 98) - ) - ) - (block - (local.set $$178 - (i32.load - (local.get $$arg) - ) - ) - (local.set $$i$1325 - (i32.const 0) - ) - (local.set $$ws$1326 - (local.get $$178) - ) - (loop $while-in127 - (block $while-out126 - (local.set $$179 - (i32.load - (local.get $$ws$1326) - ) - ) - (local.set $$tobool407 - (i32.eq - (local.get $$179) - (i32.const 0) - ) - ) - (if - (local.get $$tobool407) - (block - (local.set $$i$0$lcssa368 - (local.get $$i$0$lcssa) - ) - (local.set $label - (i32.const 98) - ) - (br $label$break$L308) - ) - ) - (local.set $$incdec$ptr410 - (i32.add - (local.get $$ws$1326) - (i32.const 4) - ) - ) - (local.set $$call411 - (call $_wctomb - (local.get $$mb) - (local.get $$179) - ) - ) - (local.set $$add412 - (i32.add - (local.get $$call411) - (local.get $$i$1325) - ) - ) - (local.set $$cmp413 - (i32.gt_s - (local.get $$add412) - (local.get $$i$0$lcssa) - ) - ) - (if - (local.get $$cmp413) - (block - (local.set $$i$0$lcssa368 - (local.get $$i$0$lcssa) - ) - (local.set $label - (i32.const 98) - ) - (br $label$break$L308) - ) - ) - (local.set $$180 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$231 - (i32.and - (local.get $$180) - (i32.const 32) - ) - ) - (local.set $$tobool$i$232 - (i32.eq - (local.get $$and$i$231) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$232) - (drop - (call $___fwritex - (local.get $$mb) - (local.get $$call411) - (local.get $$f) - ) - ) - ) - (local.set $$cmp404 - (i32.lt_u - (local.get $$add412) - (local.get $$i$0$lcssa) - ) - ) - (if - (local.get $$cmp404) - (block - (local.set $$i$1325 - (local.get $$add412) - ) - (local.set $$ws$1326 - (local.get $$incdec$ptr410) - ) - ) - (block - (local.set $$i$0$lcssa368 - (local.get $$i$0$lcssa) - ) - (local.set $label - (i32.const 98) - ) - (br $while-out126) - ) - ) - (br $while-in127) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 98) - ) - (block - (local.set $label - (i32.const 0) - ) - (local.set $$xor - (i32.xor - (local.get $$fl$1$and219) - (i32.const 8192) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$i$0$lcssa368) - (local.get $$xor) - ) - (local.set $$cmp421 - (i32.gt_s - (local.get $$w$1) - (local.get $$i$0$lcssa368) - ) - ) - (local.set $$cond426 - (if (result i32) - (local.get $$cmp421) - (local.get $$w$1) - (local.get $$i$0$lcssa368) - ) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$cond426) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 77) - ) - (block - (local.set $label - (i32.const 0) - ) - (local.set $$cmp306 - (i32.gt_s - (local.get $$p$2) - (i32.const -1) - ) - ) - (local.set $$and309 - (i32.and - (local.get $$fl$4) - (i32.const -65537) - ) - ) - (local.set $$and309$fl$4 - (if (result i32) - (local.get $$cmp306) - (local.get $$and309) - (local.get $$fl$4) - ) - ) - (local.set $$151 - (local.get $$arg) - ) - (local.set $$152 - (local.get $$151) - ) - (local.set $$153 - (i32.load - (local.get $$152) - ) - ) - (local.set $$154 - (i32.add - (local.get $$151) - (i32.const 4) - ) - ) - (local.set $$155 - (local.get $$154) - ) - (local.set $$156 - (i32.load - (local.get $$155) - ) - ) - (local.set $$157 - (i32.ne - (local.get $$153) - (i32.const 0) - ) - ) - (local.set $$158 - (i32.ne - (local.get $$156) - (i32.const 0) - ) - ) - (local.set $$159 - (i32.or - (local.get $$157) - (local.get $$158) - ) - ) - (local.set $$tobool314 - (i32.ne - (local.get $$p$2) - (i32.const 0) - ) - ) - (local.set $$or$cond - (i32.or - (local.get $$tobool314) - (local.get $$159) - ) - ) - (if - (local.get $$or$cond) - (block - (local.set $$sub$ptr$rhs$cast318 - (local.get $$a$0) - ) - (local.set $$sub$ptr$sub319 - (i32.sub - (local.get $$sub$ptr$lhs$cast317) - (local.get $$sub$ptr$rhs$cast318) - ) - ) - (local.set $$160 - (i32.and - (local.get $$159) - (i32.const 1) - ) - ) - (local.set $$lnot$ext - (i32.xor - (local.get $$160) - (i32.const 1) - ) - ) - (local.set $$add322 - (i32.add - (local.get $$lnot$ext) - (local.get $$sub$ptr$sub319) - ) - ) - (local.set $$cmp323 - (i32.gt_s - (local.get $$p$2) - (local.get $$add322) - ) - ) - (local.set $$p$2$add322 - (if (result i32) - (local.get $$cmp323) - (local.get $$p$2) - (local.get $$add322) - ) - ) - (local.set $$a$2 - (local.get $$a$0) - ) - (local.set $$fl$6 - (local.get $$and309$fl$4) - ) - (local.set $$p$5 - (local.get $$p$2$add322) - ) - (local.set $$pl$2 - (local.get $$pl$1) - ) - (local.set $$prefix$2 - (local.get $$prefix$1) - ) - (local.set $$z$2 - (local.get $$add$ptr205) - ) - ) - (block - (local.set $$a$2 - (local.get $$add$ptr205) - ) - (local.set $$fl$6 - (local.get $$and309$fl$4) - ) - (local.set $$p$5 - (i32.const 0) - ) - (local.set $$pl$2 - (local.get $$pl$1) - ) - (local.set $$prefix$2 - (local.get $$prefix$1) - ) - (local.set $$z$2 - (local.get $$add$ptr205) - ) - ) - ) - ) - ) - (local.set $$sub$ptr$lhs$cast431 - (local.get $$z$2) - ) - (local.set $$sub$ptr$rhs$cast432 - (local.get $$a$2) - ) - (local.set $$sub$ptr$sub433 - (i32.sub - (local.get $$sub$ptr$lhs$cast431) - (local.get $$sub$ptr$rhs$cast432) - ) - ) - (local.set $$cmp434 - (i32.lt_s - (local.get $$p$5) - (local.get $$sub$ptr$sub433) - ) - ) - (local.set $$sub$ptr$sub433$p$5 - (if (result i32) - (local.get $$cmp434) - (local.get $$sub$ptr$sub433) - (local.get $$p$5) - ) - ) - (local.set $$add441 - (i32.add - (local.get $$pl$2) - (local.get $$sub$ptr$sub433$p$5) - ) - ) - (local.set $$cmp442 - (i32.lt_s - (local.get $$w$1) - (local.get $$add441) - ) - ) - (local.set $$w$2 - (if (result i32) - (local.get $$cmp442) - (local.get $$add441) - (local.get $$w$1) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$2) - (local.get $$add441) - (local.get $$fl$6) - ) - (local.set $$265 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$244 - (i32.and - (local.get $$265) - (i32.const 32) - ) - ) - (local.set $$tobool$i$245 - (i32.eq - (local.get $$and$i$244) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$245) - (drop - (call $___fwritex - (local.get $$prefix$2) - (local.get $$pl$2) - (local.get $$f) - ) - ) - ) - (local.set $$xor449 - (i32.xor - (local.get $$fl$6) - (i32.const 65536) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 48) - (local.get $$w$2) - (local.get $$add441) - (local.get $$xor449) - ) - (call $_pad - (local.get $$f) - (i32.const 48) - (local.get $$sub$ptr$sub433$p$5) - (local.get $$sub$ptr$sub433) - (i32.const 0) - ) - (local.set $$266 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$216 - (i32.and - (local.get $$266) - (i32.const 32) - ) - ) - (local.set $$tobool$i$217 - (i32.eq - (local.get $$and$i$216) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$217) - (drop - (call $___fwritex - (local.get $$a$2) - (local.get $$sub$ptr$sub433) - (local.get $$f) - ) - ) - ) - (local.set $$xor457 - (i32.xor - (local.get $$fl$6) - (i32.const 8192) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$2) - (local.get $$add441) - (local.get $$xor457) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$w$2) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - ) - ) - (block $label$break$L343 - (if - (i32.eq - (local.get $label) - (i32.const 242) - ) - (block - (local.set $$tobool459 - (i32.eq - (local.get $$f) - (i32.const 0) - ) - ) - (if - (local.get $$tobool459) - (block - (local.set $$tobool462 - (i32.eq - (local.get $$l10n$0$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$tobool462) - (local.set $$retval$0 - (i32.const 0) - ) - (block - (local.set $$i$2299 - (i32.const 1) - ) - (loop $while-in130 - (block $while-out129 - (local.set $$arrayidx469 - (i32.add - (local.get $$nl_type) - (i32.shl - (local.get $$i$2299) - (i32.const 2) - ) - ) - ) - (local.set $$267 - (i32.load - (local.get $$arrayidx469) - ) - ) - (local.set $$tobool470 - (i32.eq - (local.get $$267) - (i32.const 0) - ) - ) - (if - (local.get $$tobool470) - (block - (local.set $$i$2299$lcssa - (local.get $$i$2299) - ) - (br $while-out129) - ) - ) - (local.set $$add$ptr473 - (i32.add - (local.get $$nl_arg) - (i32.shl - (local.get $$i$2299) - (i32.const 3) - ) - ) - ) - (call $_pop_arg_336 - (local.get $$add$ptr473) - (local.get $$267) - (local.get $$ap) - ) - (local.set $$inc - (i32.add - (local.get $$i$2299) - (i32.const 1) - ) - ) - (local.set $$cmp466 - (i32.lt_s - (local.get $$inc) - (i32.const 10) - ) - ) - (if - (local.get $$cmp466) - (local.set $$i$2299 - (local.get $$inc) - ) - (block - (local.set $$retval$0 - (i32.const 1) - ) - (br $label$break$L343) - ) - ) - (br $while-in130) - ) - ) - (local.set $$cmp478$295 - (i32.lt_s - (local.get $$i$2299$lcssa) - (i32.const 10) - ) - ) - (if - (local.get $$cmp478$295) - (block - (local.set $$i$3296 - (local.get $$i$2299$lcssa) - ) - (loop $while-in132 - (block $while-out131 - (local.set $$arrayidx481 - (i32.add - (local.get $$nl_type) - (i32.shl - (local.get $$i$3296) - (i32.const 2) - ) - ) - ) - (local.set $$268 - (i32.load - (local.get $$arrayidx481) - ) - ) - (local.set $$lnot483 - (i32.eq - (local.get $$268) - (i32.const 0) - ) - ) - (local.set $$inc488 - (i32.add - (local.get $$i$3296) - (i32.const 1) - ) - ) - (if - (i32.eqz - (local.get $$lnot483) - ) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L343) - ) - ) - (local.set $$cmp478 - (i32.lt_s - (local.get $$inc488) - (i32.const 10) - ) - ) - (if - (local.get $$cmp478) - (local.set $$i$3296 - (local.get $$inc488) - ) - (block - (local.set $$retval$0 - (i32.const 1) - ) - (br $while-out131) - ) - ) - (br $while-in132) - ) - ) - ) - (local.set $$retval$0 - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $$retval$0 - (local.get $$cnt$1$lcssa) - ) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_pop_arg_336 (; 56 ;) (param $$arg i32) (param $$type i32) (param $$ap i32) - (local $$0 i32) - (local $$1 i32) - (local $$10 i32) - (local $$100 i32) - (local $$101 i32) - (local $$102 i32) - (local $$103 f64) - (local $$104 i32) - (local $$105 i32) - (local $$106 i32) - (local $$107 i32) - (local $$108 i32) - (local $$109 i32) - (local $$11 i32) - (local $$110 f64) - (local $$12 i32) - (local $$13 i32) - (local $$14 i32) - (local $$15 i32) - (local $$16 i32) - (local $$17 i32) - (local $$18 i32) - (local $$19 i32) - (local $$2 i32) - (local $$20 i32) - (local $$21 i32) - (local $$22 i32) - (local $$23 i32) - (local $$24 i32) - (local $$25 i32) - (local $$26 i32) - (local $$27 i32) - (local $$28 i32) - (local $$29 i32) - (local $$3 i32) - (local $$30 i32) - (local $$31 i32) - (local $$32 i32) - (local $$33 i32) - (local $$34 i32) - (local $$35 i32) - (local $$36 i32) - (local $$37 i32) - (local $$38 i32) - (local $$39 i32) - (local $$4 i32) - (local $$40 i32) - (local $$41 i32) - (local $$42 i32) - (local $$43 i32) - (local $$44 i32) - (local $$45 i32) - (local $$46 i32) - (local $$47 i32) - (local $$48 i32) - (local $$49 i32) - (local $$5 i32) - (local $$50 i32) - (local $$51 i32) - (local $$52 i32) - (local $$53 i32) - (local $$54 i32) - (local $$55 i32) - (local $$56 i32) - (local $$57 i32) - (local $$58 i32) - (local $$59 i32) - (local $$6 i32) - (local $$60 i32) - (local $$61 i32) - (local $$62 i32) - (local $$63 i32) - (local $$64 i32) - (local $$65 i32) - (local $$66 i32) - (local $$67 i32) - (local $$68 i32) - (local $$69 i32) - (local $$7 i32) - (local $$70 i32) - (local $$71 i32) - (local $$72 i32) - (local $$73 i32) - (local $$74 i32) - (local $$75 i32) - (local $$76 i32) - (local $$77 i32) - (local $$78 i32) - (local $$79 i32) - (local $$8 i32) - (local $$80 i32) - (local $$81 i32) - (local $$82 i32) - (local $$83 i32) - (local $$84 i32) - (local $$85 i32) - (local $$86 i32) - (local $$87 i32) - (local $$88 i32) - (local $$89 i32) - (local $$9 i32) - (local $$90 i32) - (local $$91 i32) - (local $$92 i32) - (local $$93 i32) - (local $$94 i32) - (local $$95 i32) - (local $$96 i32) - (local $$97 i32) - (local $$98 i32) - (local $$99 i32) - (local $$arglist_current i32) - (local $$arglist_current11 i32) - (local $$arglist_current14 i32) - (local $$arglist_current17 i32) - (local $$arglist_current2 i32) - (local $$arglist_current20 i32) - (local $$arglist_current23 i32) - (local $$arglist_current26 i32) - (local $$arglist_current5 i32) - (local $$arglist_current8 i32) - (local $$arglist_next i32) - (local $$arglist_next12 i32) - (local $$arglist_next15 i32) - (local $$arglist_next18 i32) - (local $$arglist_next21 i32) - (local $$arglist_next24 i32) - (local $$arglist_next27 i32) - (local $$arglist_next3 i32) - (local $$arglist_next6 i32) - (local $$arglist_next9 i32) - (local $$cmp i32) - (local $$conv12 i32) - (local $$conv17$mask i32) - (local $$conv22 i32) - (local $$conv27$mask i32) - (local $$expanded i32) - (local $$expanded28 i32) - (local $$expanded30 i32) - (local $$expanded31 i32) - (local $$expanded32 i32) - (local $$expanded34 i32) - (local $$expanded35 i32) - (local $$expanded37 i32) - (local $$expanded38 i32) - (local $$expanded39 i32) - (local $$expanded41 i32) - (local $$expanded42 i32) - (local $$expanded44 i32) - (local $$expanded45 i32) - (local $$expanded46 i32) - (local $$expanded48 i32) - (local $$expanded49 i32) - (local $$expanded51 i32) - (local $$expanded52 i32) - (local $$expanded53 i32) - (local $$expanded55 i32) - (local $$expanded56 i32) - (local $$expanded58 i32) - (local $$expanded59 i32) - (local $$expanded60 i32) - (local $$expanded62 i32) - (local $$expanded63 i32) - (local $$expanded65 i32) - (local $$expanded66 i32) - (local $$expanded67 i32) - (local $$expanded69 i32) - (local $$expanded70 i32) - (local $$expanded72 i32) - (local $$expanded73 i32) - (local $$expanded74 i32) - (local $$expanded76 i32) - (local $$expanded77 i32) - (local $$expanded79 i32) - (local $$expanded80 i32) - (local $$expanded81 i32) - (local $$expanded83 i32) - (local $$expanded84 i32) - (local $$expanded86 i32) - (local $$expanded87 i32) - (local $$expanded88 i32) - (local $$expanded90 i32) - (local $$expanded91 i32) - (local $$expanded93 i32) - (local $$expanded94 i32) - (local $$expanded95 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$cmp - (i32.gt_u - (local.get $$type) - (i32.const 20) - ) - ) - (block $label$break$L1 - (if - (i32.eqz - (local.get $$cmp) - ) - (block $do-once - (block $switch - (block $switch-default - (block $switch-case9 - (block $switch-case8 - (block $switch-case7 - (block $switch-case6 - (block $switch-case5 - (block $switch-case4 - (block $switch-case3 - (block $switch-case2 - (block $switch-case1 - (block $switch-case - (br_table $switch-case $switch-case1 $switch-case2 $switch-case3 $switch-case4 $switch-case5 $switch-case6 $switch-case7 $switch-case8 $switch-case9 $switch-default - (i32.sub - (local.get $$type) - (i32.const 9) - ) - ) - ) - (block - (local.set $$arglist_current - (i32.load - (local.get $$ap) - ) - ) - (local.set $$0 - (local.get $$arglist_current) - ) - (local.set $$1 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded28 - (local.get $$1) - ) - (local.set $$expanded - (i32.sub - (local.get $$expanded28) - (i32.const 1) - ) - ) - (local.set $$2 - (i32.add - (local.get $$0) - (local.get $$expanded) - ) - ) - (local.set $$3 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded32 - (local.get $$3) - ) - (local.set $$expanded31 - (i32.sub - (local.get $$expanded32) - (i32.const 1) - ) - ) - (local.set $$expanded30 - (i32.xor - (local.get $$expanded31) - (i32.const -1) - ) - ) - (local.set $$4 - (i32.and - (local.get $$2) - (local.get $$expanded30) - ) - ) - (local.set $$5 - (local.get $$4) - ) - (local.set $$6 - (i32.load - (local.get $$5) - ) - ) - (local.set $$arglist_next - (i32.add - (local.get $$5) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next) - ) - (i32.store - (local.get $$arg) - (local.get $$6) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current2 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$7 - (local.get $$arglist_current2) - ) - (local.set $$8 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded35 - (local.get $$8) - ) - (local.set $$expanded34 - (i32.sub - (local.get $$expanded35) - (i32.const 1) - ) - ) - (local.set $$9 - (i32.add - (local.get $$7) - (local.get $$expanded34) - ) - ) - (local.set $$10 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded39 - (local.get $$10) - ) - (local.set $$expanded38 - (i32.sub - (local.get $$expanded39) - (i32.const 1) - ) - ) - (local.set $$expanded37 - (i32.xor - (local.get $$expanded38) - (i32.const -1) - ) - ) - (local.set $$11 - (i32.and - (local.get $$9) - (local.get $$expanded37) - ) - ) - (local.set $$12 - (local.get $$11) - ) - (local.set $$13 - (i32.load - (local.get $$12) - ) - ) - (local.set $$arglist_next3 - (i32.add - (local.get $$12) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next3) - ) - (local.set $$14 - (i32.lt_s - (local.get $$13) - (i32.const 0) - ) - ) - (local.set $$15 - (i32.shr_s - (i32.shl - (local.get $$14) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$16 - (local.get $$arg) - ) - (local.set $$17 - (local.get $$16) - ) - (i32.store - (local.get $$17) - (local.get $$13) - ) - (local.set $$18 - (i32.add - (local.get $$16) - (i32.const 4) - ) - ) - (local.set $$19 - (local.get $$18) - ) - (i32.store - (local.get $$19) - (local.get $$15) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current5 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$20 - (local.get $$arglist_current5) - ) - (local.set $$21 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded42 - (local.get $$21) - ) - (local.set $$expanded41 - (i32.sub - (local.get $$expanded42) - (i32.const 1) - ) - ) - (local.set $$22 - (i32.add - (local.get $$20) - (local.get $$expanded41) - ) - ) - (local.set $$23 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded46 - (local.get $$23) - ) - (local.set $$expanded45 - (i32.sub - (local.get $$expanded46) - (i32.const 1) - ) - ) - (local.set $$expanded44 - (i32.xor - (local.get $$expanded45) - (i32.const -1) - ) - ) - (local.set $$24 - (i32.and - (local.get $$22) - (local.get $$expanded44) - ) - ) - (local.set $$25 - (local.get $$24) - ) - (local.set $$26 - (i32.load - (local.get $$25) - ) - ) - (local.set $$arglist_next6 - (i32.add - (local.get $$25) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next6) - ) - (local.set $$27 - (local.get $$arg) - ) - (local.set $$28 - (local.get $$27) - ) - (i32.store - (local.get $$28) - (local.get $$26) - ) - (local.set $$29 - (i32.add - (local.get $$27) - (i32.const 4) - ) - ) - (local.set $$30 - (local.get $$29) - ) - (i32.store - (local.get $$30) - (i32.const 0) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current8 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$31 - (local.get $$arglist_current8) - ) - (local.set $$32 - (i32.add - (i32.const 0) - (i32.const 8) - ) - ) - (local.set $$expanded49 - (local.get $$32) - ) - (local.set $$expanded48 - (i32.sub - (local.get $$expanded49) - (i32.const 1) - ) - ) - (local.set $$33 - (i32.add - (local.get $$31) - (local.get $$expanded48) - ) - ) - (local.set $$34 - (i32.add - (i32.const 0) - (i32.const 8) - ) - ) - (local.set $$expanded53 - (local.get $$34) - ) - (local.set $$expanded52 - (i32.sub - (local.get $$expanded53) - (i32.const 1) - ) - ) - (local.set $$expanded51 - (i32.xor - (local.get $$expanded52) - (i32.const -1) - ) - ) - (local.set $$35 - (i32.and - (local.get $$33) - (local.get $$expanded51) - ) - ) - (local.set $$36 - (local.get $$35) - ) - (local.set $$37 - (local.get $$36) - ) - (local.set $$38 - (local.get $$37) - ) - (local.set $$39 - (i32.load - (local.get $$38) - ) - ) - (local.set $$40 - (i32.add - (local.get $$37) - (i32.const 4) - ) - ) - (local.set $$41 - (local.get $$40) - ) - (local.set $$42 - (i32.load - (local.get $$41) - ) - ) - (local.set $$arglist_next9 - (i32.add - (local.get $$36) - (i32.const 8) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next9) - ) - (local.set $$43 - (local.get $$arg) - ) - (local.set $$44 - (local.get $$43) - ) - (i32.store - (local.get $$44) - (local.get $$39) - ) - (local.set $$45 - (i32.add - (local.get $$43) - (i32.const 4) - ) - ) - (local.set $$46 - (local.get $$45) - ) - (i32.store - (local.get $$46) - (local.get $$42) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current11 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$47 - (local.get $$arglist_current11) - ) - (local.set $$48 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded56 - (local.get $$48) - ) - (local.set $$expanded55 - (i32.sub - (local.get $$expanded56) - (i32.const 1) - ) - ) - (local.set $$49 - (i32.add - (local.get $$47) - (local.get $$expanded55) - ) - ) - (local.set $$50 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded60 - (local.get $$50) - ) - (local.set $$expanded59 - (i32.sub - (local.get $$expanded60) - (i32.const 1) - ) - ) - (local.set $$expanded58 - (i32.xor - (local.get $$expanded59) - (i32.const -1) - ) - ) - (local.set $$51 - (i32.and - (local.get $$49) - (local.get $$expanded58) - ) - ) - (local.set $$52 - (local.get $$51) - ) - (local.set $$53 - (i32.load - (local.get $$52) - ) - ) - (local.set $$arglist_next12 - (i32.add - (local.get $$52) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next12) - ) - (local.set $$conv12 - (i32.and - (local.get $$53) - (i32.const 65535) - ) - ) - (local.set $$54 - (i32.shr_s - (i32.shl - (local.get $$conv12) - (i32.const 16) - ) - (i32.const 16) - ) - ) - (local.set $$55 - (i32.lt_s - (local.get $$54) - (i32.const 0) - ) - ) - (local.set $$56 - (i32.shr_s - (i32.shl - (local.get $$55) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$57 - (local.get $$arg) - ) - (local.set $$58 - (local.get $$57) - ) - (i32.store - (local.get $$58) - (local.get $$54) - ) - (local.set $$59 - (i32.add - (local.get $$57) - (i32.const 4) - ) - ) - (local.set $$60 - (local.get $$59) - ) - (i32.store - (local.get $$60) - (local.get $$56) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current14 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$61 - (local.get $$arglist_current14) - ) - (local.set $$62 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded63 - (local.get $$62) - ) - (local.set $$expanded62 - (i32.sub - (local.get $$expanded63) - (i32.const 1) - ) - ) - (local.set $$63 - (i32.add - (local.get $$61) - (local.get $$expanded62) - ) - ) - (local.set $$64 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded67 - (local.get $$64) - ) - (local.set $$expanded66 - (i32.sub - (local.get $$expanded67) - (i32.const 1) - ) - ) - (local.set $$expanded65 - (i32.xor - (local.get $$expanded66) - (i32.const -1) - ) - ) - (local.set $$65 - (i32.and - (local.get $$63) - (local.get $$expanded65) - ) - ) - (local.set $$66 - (local.get $$65) - ) - (local.set $$67 - (i32.load - (local.get $$66) - ) - ) - (local.set $$arglist_next15 - (i32.add - (local.get $$66) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next15) - ) - (local.set $$conv17$mask - (i32.and - (local.get $$67) - (i32.const 65535) - ) - ) - (local.set $$68 - (local.get $$arg) - ) - (local.set $$69 - (local.get $$68) - ) - (i32.store - (local.get $$69) - (local.get $$conv17$mask) - ) - (local.set $$70 - (i32.add - (local.get $$68) - (i32.const 4) - ) - ) - (local.set $$71 - (local.get $$70) - ) - (i32.store - (local.get $$71) - (i32.const 0) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current17 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$72 - (local.get $$arglist_current17) - ) - (local.set $$73 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded70 - (local.get $$73) - ) - (local.set $$expanded69 - (i32.sub - (local.get $$expanded70) - (i32.const 1) - ) - ) - (local.set $$74 - (i32.add - (local.get $$72) - (local.get $$expanded69) - ) - ) - (local.set $$75 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded74 - (local.get $$75) - ) - (local.set $$expanded73 - (i32.sub - (local.get $$expanded74) - (i32.const 1) - ) - ) - (local.set $$expanded72 - (i32.xor - (local.get $$expanded73) - (i32.const -1) - ) - ) - (local.set $$76 - (i32.and - (local.get $$74) - (local.get $$expanded72) - ) - ) - (local.set $$77 - (local.get $$76) - ) - (local.set $$78 - (i32.load - (local.get $$77) - ) - ) - (local.set $$arglist_next18 - (i32.add - (local.get $$77) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next18) - ) - (local.set $$conv22 - (i32.and - (local.get $$78) - (i32.const 255) - ) - ) - (local.set $$79 - (i32.shr_s - (i32.shl - (local.get $$conv22) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$80 - (i32.lt_s - (local.get $$79) - (i32.const 0) - ) - ) - (local.set $$81 - (i32.shr_s - (i32.shl - (local.get $$80) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$82 - (local.get $$arg) - ) - (local.set $$83 - (local.get $$82) - ) - (i32.store - (local.get $$83) - (local.get $$79) - ) - (local.set $$84 - (i32.add - (local.get $$82) - (i32.const 4) - ) - ) - (local.set $$85 - (local.get $$84) - ) - (i32.store - (local.get $$85) - (local.get $$81) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current20 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$86 - (local.get $$arglist_current20) - ) - (local.set $$87 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded77 - (local.get $$87) - ) - (local.set $$expanded76 - (i32.sub - (local.get $$expanded77) - (i32.const 1) - ) - ) - (local.set $$88 - (i32.add - (local.get $$86) - (local.get $$expanded76) - ) - ) - (local.set $$89 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded81 - (local.get $$89) - ) - (local.set $$expanded80 - (i32.sub - (local.get $$expanded81) - (i32.const 1) - ) - ) - (local.set $$expanded79 - (i32.xor - (local.get $$expanded80) - (i32.const -1) - ) - ) - (local.set $$90 - (i32.and - (local.get $$88) - (local.get $$expanded79) - ) - ) - (local.set $$91 - (local.get $$90) - ) - (local.set $$92 - (i32.load - (local.get $$91) - ) - ) - (local.set $$arglist_next21 - (i32.add - (local.get $$91) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next21) - ) - (local.set $$conv27$mask - (i32.and - (local.get $$92) - (i32.const 255) - ) - ) - (local.set $$93 - (local.get $$arg) - ) - (local.set $$94 - (local.get $$93) - ) - (i32.store - (local.get $$94) - (local.get $$conv27$mask) - ) - (local.set $$95 - (i32.add - (local.get $$93) - (i32.const 4) - ) - ) - (local.set $$96 - (local.get $$95) - ) - (i32.store - (local.get $$96) - (i32.const 0) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current23 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$97 - (local.get $$arglist_current23) - ) - (local.set $$98 - (i32.add - (i32.const 0) - (i32.const 8) - ) - ) - (local.set $$expanded84 - (local.get $$98) - ) - (local.set $$expanded83 - (i32.sub - (local.get $$expanded84) - (i32.const 1) - ) - ) - (local.set $$99 - (i32.add - (local.get $$97) - (local.get $$expanded83) - ) - ) - (local.set $$100 - (i32.add - (i32.const 0) - (i32.const 8) - ) - ) - (local.set $$expanded88 - (local.get $$100) - ) - (local.set $$expanded87 - (i32.sub - (local.get $$expanded88) - (i32.const 1) - ) - ) - (local.set $$expanded86 - (i32.xor - (local.get $$expanded87) - (i32.const -1) - ) - ) - (local.set $$101 - (i32.and - (local.get $$99) - (local.get $$expanded86) - ) - ) - (local.set $$102 - (local.get $$101) - ) - (local.set $$103 - (f64.load - (local.get $$102) - ) - ) - (local.set $$arglist_next24 - (i32.add - (local.get $$102) - (i32.const 8) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next24) - ) - (f64.store - (local.get $$arg) - (local.get $$103) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current26 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$104 - (local.get $$arglist_current26) - ) - (local.set $$105 - (i32.add - (i32.const 0) - (i32.const 8) - ) - ) - (local.set $$expanded91 - (local.get $$105) - ) - (local.set $$expanded90 - (i32.sub - (local.get $$expanded91) - (i32.const 1) - ) - ) - (local.set $$106 - (i32.add - (local.get $$104) - (local.get $$expanded90) - ) - ) - (local.set $$107 - (i32.add - (i32.const 0) - (i32.const 8) - ) - ) - (local.set $$expanded95 - (local.get $$107) - ) - (local.set $$expanded94 - (i32.sub - (local.get $$expanded95) - (i32.const 1) - ) - ) - (local.set $$expanded93 - (i32.xor - (local.get $$expanded94) - (i32.const -1) - ) - ) - (local.set $$108 - (i32.and - (local.get $$106) - (local.get $$expanded93) - ) - ) - (local.set $$109 - (local.get $$108) - ) - (local.set $$110 - (f64.load - (local.get $$109) - ) - ) - (local.set $$arglist_next27 - (i32.add - (local.get $$109) - (i32.const 8) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next27) - ) - (f64.store - (local.get $$arg) - (local.get $$110) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (br $label$break$L1) - ) - ) - ) - ) - (return) - ) - (func $_fmt_u (; 57 ;) (param $$0 i32) (param $$1 i32) (param $$s i32) (result i32) - (local $$10 i32) - (local $$11 i32) - (local $$12 i32) - (local $$13 i32) - (local $$14 i32) - (local $$15 i32) - (local $$16 i32) - (local $$17 i32) - (local $$18 i32) - (local $$19 i32) - (local $$2 i32) - (local $$20 i32) - (local $$21 i32) - (local $$22 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$7 i32) - (local $$8 i32) - (local $$9 i32) - (local $$add5 i32) - (local $$conv6 i32) - (local $$div9 i32) - (local $$incdec$ptr i32) - (local $$incdec$ptr$lcssa i32) - (local $$incdec$ptr7 i32) - (local $$rem4 i32) - (local $$s$addr$0$lcssa i32) - (local $$s$addr$013 i32) - (local $$s$addr$1$lcssa i32) - (local $$s$addr$19 i32) - (local $$tobool$8 i32) - (local $$x$addr$0$lcssa$off0 i32) - (local $$y$010 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$2 - (i32.gt_u - (local.get $$1) - (i32.const 0) - ) - ) - (local.set $$3 - (i32.gt_u - (local.get $$0) - (i32.const -1) - ) - ) - (local.set $$4 - (i32.eq - (local.get $$1) - (i32.const 0) - ) - ) - (local.set $$5 - (i32.and - (local.get $$4) - (local.get $$3) - ) - ) - (local.set $$6 - (i32.or - (local.get $$2) - (local.get $$5) - ) - ) - (if - (local.get $$6) - (block - (local.set $$7 - (local.get $$0) - ) - (local.set $$8 - (local.get $$1) - ) - (local.set $$s$addr$013 - (local.get $$s) - ) - (loop $while-in - (block $while-out - (local.set $$9 - (call $___uremdi3 - (local.get $$7) - (local.get $$8) - (i32.const 10) - (i32.const 0) - ) - ) - (local.set $$10 - (global.get $tempRet0) - ) - (local.set $$11 - (i32.or - (local.get $$9) - (i32.const 48) - ) - ) - (local.set $$12 - (i32.and - (local.get $$11) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr - (i32.add - (local.get $$s$addr$013) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr) - (local.get $$12) - ) - (local.set $$13 - (call $___udivdi3 - (local.get $$7) - (local.get $$8) - (i32.const 10) - (i32.const 0) - ) - ) - (local.set $$14 - (global.get $tempRet0) - ) - (local.set $$15 - (i32.gt_u - (local.get $$8) - (i32.const 9) - ) - ) - (local.set $$16 - (i32.gt_u - (local.get $$7) - (i32.const -1) - ) - ) - (local.set $$17 - (i32.eq - (local.get $$8) - (i32.const 9) - ) - ) - (local.set $$18 - (i32.and - (local.get $$17) - (local.get $$16) - ) - ) - (local.set $$19 - (i32.or - (local.get $$15) - (local.get $$18) - ) - ) - (if - (local.get $$19) - (block - (local.set $$7 - (local.get $$13) - ) - (local.set $$8 - (local.get $$14) - ) - (local.set $$s$addr$013 - (local.get $$incdec$ptr) - ) - ) - (block - (local.set $$21 - (local.get $$13) - ) - (local.set $$22 - (local.get $$14) - ) - (local.set $$incdec$ptr$lcssa - (local.get $$incdec$ptr) - ) - (br $while-out) - ) - ) - (br $while-in) - ) - ) - (local.set $$s$addr$0$lcssa - (local.get $$incdec$ptr$lcssa) - ) - (local.set $$x$addr$0$lcssa$off0 - (local.get $$21) - ) - ) - (block - (local.set $$s$addr$0$lcssa - (local.get $$s) - ) - (local.set $$x$addr$0$lcssa$off0 - (local.get $$0) - ) - ) - ) - (local.set $$tobool$8 - (i32.eq - (local.get $$x$addr$0$lcssa$off0) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$8) - (local.set $$s$addr$1$lcssa - (local.get $$s$addr$0$lcssa) - ) - (block - (local.set $$s$addr$19 - (local.get $$s$addr$0$lcssa) - ) - (local.set $$y$010 - (local.get $$x$addr$0$lcssa$off0) - ) - (loop $while-in1 - (block $while-out0 - (local.set $$rem4 - (i32.and - (call $i32u-rem - (local.get $$y$010) - (i32.const 10) - ) - (i32.const -1) - ) - ) - (local.set $$add5 - (i32.or - (local.get $$rem4) - (i32.const 48) - ) - ) - (local.set $$conv6 - (i32.and - (local.get $$add5) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr7 - (i32.add - (local.get $$s$addr$19) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr7) - (local.get $$conv6) - ) - (local.set $$div9 - (i32.and - (call $i32u-div - (local.get $$y$010) - (i32.const 10) - ) - (i32.const -1) - ) - ) - (local.set $$20 - (i32.lt_u - (local.get $$y$010) - (i32.const 10) - ) - ) - (if - (local.get $$20) - (block - (local.set $$s$addr$1$lcssa - (local.get $$incdec$ptr7) - ) - (br $while-out0) - ) - (block - (local.set $$s$addr$19 - (local.get $$incdec$ptr7) - ) - (local.set $$y$010 - (local.get $$div9) - ) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (return - (local.get $$s$addr$1$lcssa) - ) - ) - (func $_pad (; 58 ;) (param $$f i32) (param $$c i32) (param $$w i32) (param $$l i32) (param $$fl i32) - (local $$$pre i32) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$and i32) - (local $$and$i i32) - (local $$and$i$15 i32) - (local $$cmp i32) - (local $$cmp1 i32) - (local $$cmp3 i32) - (local $$cmp3$14 i32) - (local $$cond i32) - (local $$l$addr$0$lcssa21 i32) - (local $$l$addr$017 i32) - (local $$or$cond i32) - (local $$pad i32) - (local $$sub i32) - (local $$sub5 i32) - (local $$tobool i32) - (local $$tobool$i i32) - (local $$tobool$i$16 i32) - (local $$tobool$i18 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 256) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$pad - (local.get $sp) - ) - (local.set $$and - (i32.and - (local.get $$fl) - (i32.const 73728) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$and) - (i32.const 0) - ) - ) - (local.set $$cmp - (i32.gt_s - (local.get $$w) - (local.get $$l) - ) - ) - (local.set $$or$cond - (i32.and - (local.get $$cmp) - (local.get $$tobool) - ) - ) - (block $do-once - (if - (local.get $$or$cond) - (block - (local.set $$sub - (i32.sub - (local.get $$w) - (local.get $$l) - ) - ) - (local.set $$cmp1 - (i32.gt_u - (local.get $$sub) - (i32.const 256) - ) - ) - (local.set $$cond - (if (result i32) - (local.get $$cmp1) - (i32.const 256) - (local.get $$sub) - ) - ) - (drop - (call $_memset - (local.get $$pad) - (local.get $$c) - (local.get $$cond) - ) - ) - (local.set $$cmp3$14 - (i32.gt_u - (local.get $$sub) - (i32.const 255) - ) - ) - (local.set $$0 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$15 - (i32.and - (local.get $$0) - (i32.const 32) - ) - ) - (local.set $$tobool$i$16 - (i32.eq - (local.get $$and$i$15) - (i32.const 0) - ) - ) - (if - (local.get $$cmp3$14) - (block - (local.set $$1 - (i32.sub - (local.get $$w) - (local.get $$l) - ) - ) - (local.set $$4 - (local.get $$0) - ) - (local.set $$l$addr$017 - (local.get $$sub) - ) - (local.set $$tobool$i18 - (local.get $$tobool$i$16) - ) - (loop $while-in - (block $while-out - (if - (local.get $$tobool$i18) - (block - (drop - (call $___fwritex - (local.get $$pad) - (i32.const 256) - (local.get $$f) - ) - ) - (local.set $$$pre - (i32.load - (local.get $$f) - ) - ) - (local.set $$2 - (local.get $$$pre) - ) - ) - (local.set $$2 - (local.get $$4) - ) - ) - (local.set $$sub5 - (i32.add - (local.get $$l$addr$017) - (i32.const -256) - ) - ) - (local.set $$cmp3 - (i32.gt_u - (local.get $$sub5) - (i32.const 255) - ) - ) - (local.set $$and$i - (i32.and - (local.get $$2) - (i32.const 32) - ) - ) - (local.set $$tobool$i - (i32.eq - (local.get $$and$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp3) - (block - (local.set $$4 - (local.get $$2) - ) - (local.set $$l$addr$017 - (local.get $$sub5) - ) - (local.set $$tobool$i18 - (local.get $$tobool$i) - ) - ) - (br $while-out) - ) - (br $while-in) - ) - ) - (local.set $$3 - (i32.and - (local.get $$1) - (i32.const 255) - ) - ) - (if - (local.get $$tobool$i) - (local.set $$l$addr$0$lcssa21 - (local.get $$3) - ) - (br $do-once) - ) - ) - (if - (local.get $$tobool$i$16) - (local.set $$l$addr$0$lcssa21 - (local.get $$sub) - ) - (br $do-once) - ) - ) - (drop - (call $___fwritex - (local.get $$pad) - (local.get $$l$addr$0$lcssa21) - (local.get $$f) - ) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return) - ) - (func $_malloc (; 59 ;) (param $$bytes i32) (result i32) - (local $$$lcssa i32) - (local $$$lcssa290 i32) - (local $$$pre i32) - (local $$$pre$i i32) - (local $$$pre$i$177 i32) - (local $$$pre$i$56$i i32) - (local $$$pre$i$i i32) - (local $$$pre$phi$i$178Z2D i32) - (local $$$pre$phi$i$57$iZ2D i32) - (local $$$pre$phi$i$iZ2D i32) - (local $$$pre$phi$iZ2D i32) - (local $$$pre$phiZ2D i32) - (local $$$pre241 i32) - (local $$$pre5$i$i i32) - (local $$0 i32) - (local $$1 i32) - (local $$10 i32) - (local $$100 i32) - (local $$101 i32) - (local $$102 i32) - (local $$103 i32) - (local $$104 i32) - (local $$105 i32) - (local $$106 i32) - (local $$107 i32) - (local $$108 i32) - (local $$109 i32) - (local $$11 i32) - (local $$110 i32) - (local $$111 i32) - (local $$112 i32) - (local $$113 i32) - (local $$114 i32) - (local $$115 i32) - (local $$116 i32) - (local $$117 i32) - (local $$118 i32) - (local $$119 i32) - (local $$12 i32) - (local $$120 i32) - (local $$121 i32) - (local $$122 i32) - (local $$123 i32) - (local $$124 i32) - (local $$125 i32) - (local $$126 i32) - (local $$127 i32) - (local $$128 i32) - (local $$129 i32) - (local $$13 i32) - (local $$130 i32) - (local $$131 i32) - (local $$132 i32) - (local $$133 i32) - (local $$134 i32) - (local $$135 i32) - (local $$136 i32) - (local $$137 i32) - (local $$138 i32) - (local $$139 i32) - (local $$14 i32) - (local $$140 i32) - (local $$141 i32) - (local $$142 i32) - (local $$143 i32) - (local $$144 i32) - (local $$145 i32) - (local $$146 i32) - (local $$147 i32) - (local $$148 i32) - (local $$149 i32) - (local $$15 i32) - (local $$150 i32) - (local $$151 i32) - (local $$152 i32) - (local $$153 i32) - (local $$154 i32) - (local $$155 i32) - (local $$156 i32) - (local $$157 i32) - (local $$158 i32) - (local $$159 i32) - (local $$16 i32) - (local $$160 i32) - (local $$161 i32) - (local $$162 i32) - (local $$163 i32) - (local $$164 i32) - (local $$165 i32) - (local $$166 i32) - (local $$167 i32) - (local $$168 i32) - (local $$169 i32) - (local $$17 i32) - (local $$170 i32) - (local $$171 i32) - (local $$172 i32) - (local $$173 i32) - (local $$174 i32) - (local $$175 i32) - (local $$176 i32) - (local $$177 i32) - (local $$178 i32) - (local $$179 i32) - (local $$18 i32) - (local $$180 i32) - (local $$181 i32) - (local $$182 i32) - (local $$183 i32) - (local $$184 i32) - (local $$185 i32) - (local $$186 i32) - (local $$187 i32) - (local $$188 i32) - (local $$189 i32) - (local $$19 i32) - (local $$190 i32) - (local $$191 i32) - (local $$192 i32) - (local $$193 i32) - (local $$194 i32) - (local $$195 i32) - (local $$196 i32) - (local $$197 i32) - (local $$198 i32) - (local $$199 i32) - (local $$2 i32) - (local $$20 i32) - (local $$200 i32) - (local $$201 i32) - (local $$202 i32) - (local $$203 i32) - (local $$204 i32) - (local $$205 i32) - (local $$206 i32) - (local $$207 i32) - (local $$208 i32) - (local $$21 i32) - (local $$22 i32) - (local $$23 i32) - (local $$24 i32) - (local $$25 i32) - (local $$26 i32) - (local $$27 i32) - (local $$28 i32) - (local $$29 i32) - (local $$3 i32) - (local $$30 i32) - (local $$31 i32) - (local $$32 i32) - (local $$33 i32) - (local $$34 i32) - (local $$35 i32) - (local $$36 i32) - (local $$37 i32) - (local $$38 i32) - (local $$39 i32) - (local $$4 i32) - (local $$40 i32) - (local $$41 i32) - (local $$42 i32) - (local $$43 i32) - (local $$44 i32) - (local $$45 i32) - (local $$46 i32) - (local $$47 i32) - (local $$48 i32) - (local $$49 i32) - (local $$5 i32) - (local $$50 i32) - (local $$51 i32) - (local $$52 i32) - (local $$53 i32) - (local $$54 i32) - (local $$55 i32) - (local $$56 i32) - (local $$57 i32) - (local $$58 i32) - (local $$59 i32) - (local $$6 i32) - (local $$60 i32) - (local $$61 i32) - (local $$62 i32) - (local $$63 i32) - (local $$64 i32) - (local $$65 i32) - (local $$66 i32) - (local $$67 i32) - (local $$68 i32) - (local $$69 i32) - (local $$7 i32) - (local $$70 i32) - (local $$71 i32) - (local $$72 i32) - (local $$73 i32) - (local $$74 i32) - (local $$75 i32) - (local $$76 i32) - (local $$77 i32) - (local $$78 i32) - (local $$79 i32) - (local $$8 i32) - (local $$80 i32) - (local $$81 i32) - (local $$82 i32) - (local $$83 i32) - (local $$84 i32) - (local $$85 i32) - (local $$86 i32) - (local $$87 i32) - (local $$88 i32) - (local $$89 i32) - (local $$9 i32) - (local $$90 i32) - (local $$91 i32) - (local $$92 i32) - (local $$93 i32) - (local $$94 i32) - (local $$95 i32) - (local $$96 i32) - (local $$97 i32) - (local $$98 i32) - (local $$99 i32) - (local $$F$0$i$i i32) - (local $$F104$0 i32) - (local $$F197$0$i i32) - (local $$F224$0$i$i i32) - (local $$F290$0$i i32) - (local $$I252$0$i$i i32) - (local $$I316$0$i i32) - (local $$I57$0$i$i i32) - (local $$K105$0$i$i i32) - (local $$K305$0$i$i i32) - (local $$K373$0$i i32) - (local $$R$1$i i32) - (local $$R$1$i$168 i32) - (local $$R$1$i$168$lcssa i32) - (local $$R$1$i$i i32) - (local $$R$1$i$i$lcssa i32) - (local $$R$1$i$lcssa i32) - (local $$R$3$i i32) - (local $$R$3$i$171 i32) - (local $$R$3$i$i i32) - (local $$RP$1$i i32) - (local $$RP$1$i$167 i32) - (local $$RP$1$i$167$lcssa i32) - (local $$RP$1$i$i i32) - (local $$RP$1$i$i$lcssa i32) - (local $$RP$1$i$lcssa i32) - (local $$T$0$i i32) - (local $$T$0$i$58$i i32) - (local $$T$0$i$58$i$lcssa i32) - (local $$T$0$i$58$i$lcssa283 i32) - (local $$T$0$i$i i32) - (local $$T$0$i$i$lcssa i32) - (local $$T$0$i$i$lcssa284 i32) - (local $$T$0$i$lcssa i32) - (local $$T$0$i$lcssa293 i32) - (local $$add$i i32) - (local $$add$i$146 i32) - (local $$add$i$180 i32) - (local $$add$i$i i32) - (local $$add$ptr i32) - (local $$add$ptr$i i32) - (local $$add$ptr$i$1$i$i i32) - (local $$add$ptr$i$11$i i32) - (local $$add$ptr$i$161 i32) - (local $$add$ptr$i$193 i32) - (local $$add$ptr$i$21$i i32) - (local $$add$ptr$i$32$i i32) - (local $$add$ptr$i$i i32) - (local $$add$ptr$i$i$i i32) - (local $$add$ptr$i$i$i$lcssa i32) - (local $$add$ptr14$i$i i32) - (local $$add$ptr15$i$i i32) - (local $$add$ptr16$i$i i32) - (local $$add$ptr166 i32) - (local $$add$ptr169 i32) - (local $$add$ptr17$i$i i32) - (local $$add$ptr178 i32) - (local $$add$ptr181$i i32) - (local $$add$ptr182 i32) - (local $$add$ptr189$i i32) - (local $$add$ptr190$i i32) - (local $$add$ptr193 i32) - (local $$add$ptr199 i32) - (local $$add$ptr2$i$i i32) - (local $$add$ptr205$i$i i32) - (local $$add$ptr212$i$i i32) - (local $$add$ptr225$i i32) - (local $$add$ptr227$i i32) - (local $$add$ptr24$i$i i32) - (local $$add$ptr262$i i32) - (local $$add$ptr269$i i32) - (local $$add$ptr273$i i32) - (local $$add$ptr282$i i32) - (local $$add$ptr3$i$i i32) - (local $$add$ptr30$i$i i32) - (local $$add$ptr369$i$i i32) - (local $$add$ptr4$i$26$i i32) - (local $$add$ptr4$i$37$i i32) - (local $$add$ptr4$i$i i32) - (local $$add$ptr4$i$i$i i32) - (local $$add$ptr441$i i32) - (local $$add$ptr5$i$i i32) - (local $$add$ptr6$i$30$i i32) - (local $$add$ptr6$i$i i32) - (local $$add$ptr6$i$i$i i32) - (local $$add$ptr7$i$i i32) - (local $$add$ptr8$i122$i i32) - (local $$add$ptr95 i32) - (local $$add$ptr98 i32) - (local $$add10$i i32) - (local $$add101$i i32) - (local $$add110$i i32) - (local $$add13$i i32) - (local $$add14$i i32) - (local $$add140$i i32) - (local $$add144 i32) - (local $$add150$i i32) - (local $$add17$i i32) - (local $$add17$i$183 i32) - (local $$add177$i i32) - (local $$add18$i i32) - (local $$add19$i i32) - (local $$add2 i32) - (local $$add20$i i32) - (local $$add206$i$i i32) - (local $$add212$i i32) - (local $$add215$i i32) - (local $$add22$i i32) - (local $$add246$i i32) - (local $$add26$i$i i32) - (local $$add268$i i32) - (local $$add269$i$i i32) - (local $$add274$i$i i32) - (local $$add278$i$i i32) - (local $$add280$i$i i32) - (local $$add283$i$i i32) - (local $$add337$i i32) - (local $$add342$i i32) - (local $$add346$i i32) - (local $$add348$i i32) - (local $$add351$i i32) - (local $$add46$i i32) - (local $$add50 i32) - (local $$add51$i i32) - (local $$add54 i32) - (local $$add54$i i32) - (local $$add58 i32) - (local $$add62 i32) - (local $$add64 i32) - (local $$add74$i$i i32) - (local $$add77$i i32) - (local $$add78$i i32) - (local $$add79$i$i i32) - (local $$add8 i32) - (local $$add82$i i32) - (local $$add83$i$i i32) - (local $$add85$i$i i32) - (local $$add86$i i32) - (local $$add88$i$i i32) - (local $$add9$i i32) - (local $$add90$i i32) - (local $$add92$i i32) - (local $$and i32) - (local $$and$i i32) - (local $$and$i$12$i i32) - (local $$and$i$14$i i32) - (local $$and$i$143 i32) - (local $$and$i$22$i i32) - (local $$and$i$33$i i32) - (local $$and$i$i i32) - (local $$and$i$i$i i32) - (local $$and100$i i32) - (local $$and103$i i32) - (local $$and104$i i32) - (local $$and106 i32) - (local $$and11$i i32) - (local $$and119$i$i i32) - (local $$and12$i i32) - (local $$and13$i i32) - (local $$and13$i$i i32) - (local $$and133$i$i i32) - (local $$and14 i32) - (local $$and145 i32) - (local $$and17$i i32) - (local $$and194$i i32) - (local $$and194$i$204 i32) - (local $$and199$i i32) - (local $$and209$i$i i32) - (local $$and21$i i32) - (local $$and21$i$149 i32) - (local $$and227$i$i i32) - (local $$and236$i i32) - (local $$and264$i$i i32) - (local $$and268$i$i i32) - (local $$and273$i$i i32) - (local $$and282$i$i i32) - (local $$and29$i i32) - (local $$and292$i i32) - (local $$and295$i$i i32) - (local $$and3$i i32) - (local $$and3$i$24$i i32) - (local $$and3$i$35$i i32) - (local $$and3$i$i i32) - (local $$and3$i$i$i i32) - (local $$and30$i i32) - (local $$and318$i$i i32) - (local $$and32$i i32) - (local $$and32$i$i i32) - (local $$and33$i$i i32) - (local $$and331$i i32) - (local $$and336$i i32) - (local $$and341$i i32) - (local $$and350$i i32) - (local $$and363$i i32) - (local $$and37$i$i i32) - (local $$and387$i i32) - (local $$and4 i32) - (local $$and40$i$i i32) - (local $$and41 i32) - (local $$and42$i i32) - (local $$and43 i32) - (local $$and46 i32) - (local $$and49 i32) - (local $$and49$i i32) - (local $$and49$i$i i32) - (local $$and53 i32) - (local $$and57 i32) - (local $$and6$i i32) - (local $$and6$i$38$i i32) - (local $$and6$i$i i32) - (local $$and61 i32) - (local $$and64$i i32) - (local $$and68$i i32) - (local $$and69$i$i i32) - (local $$and7 i32) - (local $$and7$i$i i32) - (local $$and73$i i32) - (local $$and73$i$i i32) - (local $$and74 i32) - (local $$and77$i i32) - (local $$and78$i$i i32) - (local $$and8$i i32) - (local $$and80$i i32) - (local $$and81$i i32) - (local $$and85$i i32) - (local $$and87$i$i i32) - (local $$and89$i i32) - (local $$and9$i i32) - (local $$and96$i$i i32) - (local $$arrayidx i32) - (local $$arrayidx$i i32) - (local $$arrayidx$i$150 i32) - (local $$arrayidx$i$20$i i32) - (local $$arrayidx$i$48$i i32) - (local $$arrayidx$i$i i32) - (local $$arrayidx103 i32) - (local $$arrayidx103$i$i i32) - (local $$arrayidx106$i i32) - (local $$arrayidx107$i$i i32) - (local $$arrayidx113$i i32) - (local $$arrayidx113$i$159 i32) - (local $$arrayidx121$i i32) - (local $$arrayidx123$i$i i32) - (local $$arrayidx126$i$i i32) - (local $$arrayidx126$i$i$lcssa i32) - (local $$arrayidx137$i i32) - (local $$arrayidx143$i$i i32) - (local $$arrayidx148$i i32) - (local $$arrayidx151$i i32) - (local $$arrayidx151$i$i i32) - (local $$arrayidx154$i i32) - (local $$arrayidx155$i i32) - (local $$arrayidx161$i i32) - (local $$arrayidx165$i i32) - (local $$arrayidx165$i$169 i32) - (local $$arrayidx178$i$i i32) - (local $$arrayidx184$i i32) - (local $$arrayidx184$i$i i32) - (local $$arrayidx195$i$i i32) - (local $$arrayidx196$i i32) - (local $$arrayidx204$i i32) - (local $$arrayidx212$i i32) - (local $$arrayidx223$i$i i32) - (local $$arrayidx228$i i32) - (local $$arrayidx23$i i32) - (local $$arrayidx239$i i32) - (local $$arrayidx245$i i32) - (local $$arrayidx256$i i32) - (local $$arrayidx27$i i32) - (local $$arrayidx287$i$i i32) - (local $$arrayidx289$i i32) - (local $$arrayidx290$i$i i32) - (local $$arrayidx325$i$i i32) - (local $$arrayidx325$i$i$lcssa i32) - (local $$arrayidx355$i i32) - (local $$arrayidx358$i i32) - (local $$arrayidx394$i i32) - (local $$arrayidx394$i$lcssa i32) - (local $$arrayidx40$i i32) - (local $$arrayidx44$i i32) - (local $$arrayidx61$i i32) - (local $$arrayidx65$i i32) - (local $$arrayidx66 i32) - (local $$arrayidx71$i i32) - (local $$arrayidx75$i i32) - (local $$arrayidx91$i$i i32) - (local $$arrayidx92$i$i i32) - (local $$arrayidx94$i i32) - (local $$arrayidx94$i$156 i32) - (local $$arrayidx96$i$i i32) - (local $$base$i$i$lcssa i32) - (local $$base226$i$lcssa i32) - (local $$bk i32) - (local $$bk$i i32) - (local $$bk$i$163 i32) - (local $$bk$i$46$i i32) - (local $$bk$i$i i32) - (local $$bk102$i$i i32) - (local $$bk122 i32) - (local $$bk124 i32) - (local $$bk136$i i32) - (local $$bk139$i$i i32) - (local $$bk158$i$i i32) - (local $$bk161$i$i i32) - (local $$bk218$i i32) - (local $$bk220$i i32) - (local $$bk246$i$i i32) - (local $$bk248$i$i i32) - (local $$bk302$i$i i32) - (local $$bk311$i i32) - (local $$bk313$i i32) - (local $$bk338$i$i i32) - (local $$bk357$i$i i32) - (local $$bk360$i$i i32) - (local $$bk370$i i32) - (local $$bk407$i i32) - (local $$bk429$i i32) - (local $$bk43$i$i i32) - (local $$bk432$i i32) - (local $$bk47$i i32) - (local $$bk55$i$i i32) - (local $$bk67$i$i i32) - (local $$bk74$i$i i32) - (local $$bk78 i32) - (local $$bk82$i$i i32) - (local $$br$2$ph$i i32) - (local $$call$i$i i32) - (local $$call107$i i32) - (local $$call131$i i32) - (local $$call132$i i32) - (local $$call275$i i32) - (local $$call37$i i32) - (local $$call6$i$i i32) - (local $$call68$i i32) - (local $$call83$i i32) - (local $$child$i$i i32) - (local $$child166$i$i i32) - (local $$child289$i$i i32) - (local $$child357$i i32) - (local $$cmp i32) - (local $$cmp$i i32) - (local $$cmp$i$13$i i32) - (local $$cmp$i$140 i32) - (local $$cmp$i$15$i i32) - (local $$cmp$i$179 i32) - (local $$cmp$i$2$i$i i32) - (local $$cmp$i$23$i i32) - (local $$cmp$i$34$i i32) - (local $$cmp$i$9$i i32) - (local $$cmp$i$i$i i32) - (local $$cmp1 i32) - (local $$cmp1$i i32) - (local $$cmp1$i$i i32) - (local $$cmp10 i32) - (local $$cmp100$i$i i32) - (local $$cmp102$i i32) - (local $$cmp104$i$i i32) - (local $$cmp105$i i32) - (local $$cmp106$i$i i32) - (local $$cmp107$i i32) - (local $$cmp107$i$157 i32) - (local $$cmp108$i i32) - (local $$cmp108$i$i i32) - (local $$cmp112$i$i i32) - (local $$cmp113 i32) - (local $$cmp114$i i32) - (local $$cmp116$i i32) - (local $$cmp118$i i32) - (local $$cmp119$i i32) - (local $$cmp12$i i32) - (local $$cmp120$i$53$i i32) - (local $$cmp120$i$i i32) - (local $$cmp121$i i32) - (local $$cmp123$i i32) - (local $$cmp124$i$i i32) - (local $$cmp126$i i32) - (local $$cmp127$i i32) - (local $$cmp128 i32) - (local $$cmp128$i i32) - (local $$cmp128$i$i i32) - (local $$cmp130$i i32) - (local $$cmp133$i i32) - (local $$cmp133$i$196 i32) - (local $$cmp133$i$i i32) - (local $$cmp135$i i32) - (local $$cmp137$i i32) - (local $$cmp137$i$197 i32) - (local $$cmp137$i$i i32) - (local $$cmp138$i i32) - (local $$cmp139 i32) - (local $$cmp140$i i32) - (local $$cmp141$not$i i32) - (local $$cmp142$i i32) - (local $$cmp144$i$i i32) - (local $$cmp146 i32) - (local $$cmp15 i32) - (local $$cmp15$i i32) - (local $$cmp151$i i32) - (local $$cmp152$i i32) - (local $$cmp153$i$i i32) - (local $$cmp155$i i32) - (local $$cmp156 i32) - (local $$cmp156$i i32) - (local $$cmp156$i$i i32) - (local $$cmp157$i i32) - (local $$cmp159$i i32) - (local $$cmp159$i$199 i32) - (local $$cmp16 i32) - (local $$cmp160$i$i i32) - (local $$cmp162 i32) - (local $$cmp162$i i32) - (local $$cmp162$i$200 i32) - (local $$cmp166$i i32) - (local $$cmp168$i$i i32) - (local $$cmp171$i i32) - (local $$cmp172$i$i i32) - (local $$cmp174$i i32) - (local $$cmp180$i i32) - (local $$cmp185$i i32) - (local $$cmp185$i$i i32) - (local $$cmp186 i32) - (local $$cmp186$i i32) - (local $$cmp189$i$i i32) - (local $$cmp19$i i32) - (local $$cmp190$i i32) - (local $$cmp191$i i32) - (local $$cmp198$i i32) - (local $$cmp2$i$i i32) - (local $$cmp2$i$i$i i32) - (local $$cmp20$i$i i32) - (local $$cmp203$i i32) - (local $$cmp205$i i32) - (local $$cmp208$i i32) - (local $$cmp209$i i32) - (local $$cmp21$i i32) - (local $$cmp215$i$i i32) - (local $$cmp217$i i32) - (local $$cmp218$i i32) - (local $$cmp221$i i32) - (local $$cmp224$i i32) - (local $$cmp228$i i32) - (local $$cmp229$i i32) - (local $$cmp233$i i32) - (local $$cmp236$i$i i32) - (local $$cmp24$i i32) - (local $$cmp24$i$i i32) - (local $$cmp246$i i32) - (local $$cmp250$i i32) - (local $$cmp254$i$i i32) - (local $$cmp257$i i32) - (local $$cmp258$i$i i32) - (local $$cmp26$i i32) - (local $$cmp265$i i32) - (local $$cmp27$i$i i32) - (local $$cmp28$i i32) - (local $$cmp28$i$i i32) - (local $$cmp284$i i32) - (local $$cmp29 i32) - (local $$cmp3$i$i i32) - (local $$cmp301$i i32) - (local $$cmp306$i$i i32) - (local $$cmp31 i32) - (local $$cmp319$i i32) - (local $$cmp319$i$i i32) - (local $$cmp32$i i32) - (local $$cmp32$i$185 i32) - (local $$cmp323$i i32) - (local $$cmp327$i$i i32) - (local $$cmp33$i i32) - (local $$cmp332$i$i i32) - (local $$cmp34$i i32) - (local $$cmp34$i$i i32) - (local $$cmp35$i i32) - (local $$cmp350$i$i i32) - (local $$cmp36$i i32) - (local $$cmp36$i$i i32) - (local $$cmp374$i i32) - (local $$cmp38$i i32) - (local $$cmp38$i$i i32) - (local $$cmp388$i i32) - (local $$cmp396$i i32) - (local $$cmp40$i i32) - (local $$cmp401$i i32) - (local $$cmp41$i$i i32) - (local $$cmp42$i$i i32) - (local $$cmp422$i i32) - (local $$cmp43$i i32) - (local $$cmp44$i$i i32) - (local $$cmp45$i i32) - (local $$cmp45$i$155 i32) - (local $$cmp46$i i32) - (local $$cmp46$i$49$i i32) - (local $$cmp46$i$i i32) - (local $$cmp48$i i32) - (local $$cmp49$i i32) - (local $$cmp5 i32) - (local $$cmp51$i i32) - (local $$cmp54$i$i i32) - (local $$cmp55$i i32) - (local $$cmp55$i$187 i32) - (local $$cmp57$i i32) - (local $$cmp57$i$188 i32) - (local $$cmp57$i$i i32) - (local $$cmp59$i$i i32) - (local $$cmp60$i i32) - (local $$cmp60$i$i i32) - (local $$cmp62$i i32) - (local $$cmp63$i i32) - (local $$cmp63$i$i i32) - (local $$cmp65$i i32) - (local $$cmp66$i i32) - (local $$cmp66$i$190 i32) - (local $$cmp69$i i32) - (local $$cmp7$i$i i32) - (local $$cmp70 i32) - (local $$cmp72$i i32) - (local $$cmp75$i$i i32) - (local $$cmp76 i32) - (local $$cmp76$i i32) - (local $$cmp79 i32) - (local $$cmp81$i i32) - (local $$cmp81$i$191 i32) - (local $$cmp81$i$i i32) - (local $$cmp83$i$i i32) - (local $$cmp85$i i32) - (local $$cmp86$i$i i32) - (local $$cmp89$i i32) - (local $$cmp9$i$i i32) - (local $$cmp90$i i32) - (local $$cmp91$i i32) - (local $$cmp93$i i32) - (local $$cmp95$i i32) - (local $$cmp96$i i32) - (local $$cmp97$7$i i32) - (local $$cmp97$i i32) - (local $$cmp97$i$i i32) - (local $$cmp99 i32) - (local $$cond i32) - (local $$cond$i i32) - (local $$cond$i$16$i i32) - (local $$cond$i$25$i i32) - (local $$cond$i$36$i i32) - (local $$cond$i$i i32) - (local $$cond$i$i$i i32) - (local $$cond$v$0$i i32) - (local $$cond115$i$i i32) - (local $$cond13$i$i i32) - (local $$cond15$i$i i32) - (local $$cond2$i i32) - (local $$cond2$i$i i32) - (local $$cond3$i i32) - (local $$cond315$i$i i32) - (local $$cond383$i i32) - (local $$cond4$i i32) - (local $$exitcond$i$i i32) - (local $$fd$i i32) - (local $$fd$i$164 i32) - (local $$fd$i$i i32) - (local $$fd103$i$i i32) - (local $$fd123 i32) - (local $$fd139$i i32) - (local $$fd140$i$i i32) - (local $$fd148$i$i i32) - (local $$fd160$i$i i32) - (local $$fd219$i i32) - (local $$fd247$i$i i32) - (local $$fd303$i$i i32) - (local $$fd312$i i32) - (local $$fd339$i$i i32) - (local $$fd344$i$i i32) - (local $$fd359$i$i i32) - (local $$fd371$i i32) - (local $$fd408$i i32) - (local $$fd416$i i32) - (local $$fd431$i i32) - (local $$fd50$i i32) - (local $$fd54$i$i i32) - (local $$fd59$i$i i32) - (local $$fd68$pre$phi$i$iZ2D i32) - (local $$fd69 i32) - (local $$fd78$i$i i32) - (local $$fd85$i$i i32) - (local $$fd9 i32) - (local $$head i32) - (local $$head$i i32) - (local $$head$i$154 i32) - (local $$head$i$17$i i32) - (local $$head$i$29$i i32) - (local $$head$i$42$i i32) - (local $$head$i$i i32) - (local $$head$i$i$i i32) - (local $$head118$i$i i32) - (local $$head168 i32) - (local $$head173 i32) - (local $$head177 i32) - (local $$head179 i32) - (local $$head179$i i32) - (local $$head182$i i32) - (local $$head187$i i32) - (local $$head189$i i32) - (local $$head195 i32) - (local $$head198 i32) - (local $$head208$i$i i32) - (local $$head211$i$i i32) - (local $$head23$i$i i32) - (local $$head25 i32) - (local $$head265$i i32) - (local $$head268$i i32) - (local $$head271$i i32) - (local $$head274$i i32) - (local $$head279$i i32) - (local $$head281$i i32) - (local $$head29$i i32) - (local $$head29$i$i i32) - (local $$head317$i$i i32) - (local $$head32$i$i i32) - (local $$head34$i$i i32) - (local $$head386$i i32) - (local $$head7$i$31$i i32) - (local $$head7$i$i i32) - (local $$head7$i$i$i i32) - (local $$head94 i32) - (local $$head97 i32) - (local $$head99$i i32) - (local $$i$01$i$i i32) - (local $$idx$0$i i32) - (local $$inc$i$i i32) - (local $$index$i i32) - (local $$index$i$172 i32) - (local $$index$i$54$i i32) - (local $$index$i$i i32) - (local $$index288$i$i i32) - (local $$index356$i i32) - (local $$nb$0 i32) - (local $$neg i32) - (local $$neg$i i32) - (local $$neg$i$173 i32) - (local $$neg$i$182 i32) - (local $$neg$i$i i32) - (local $$neg103$i i32) - (local $$neg13 i32) - (local $$neg132$i$i i32) - (local $$neg48$i i32) - (local $$neg73 i32) - (local $$next$i i32) - (local $$next$i$i i32) - (local $$next$i$i$i i32) - (local $$next231$i i32) - (local $$not$cmp150$i$i i32) - (local $$not$cmp346$i$i i32) - (local $$not$cmp418$i i32) - (local $$oldfirst$0$i$i i32) - (local $$or$cond$i i32) - (local $$or$cond$i$189 i32) - (local $$or$cond1$i i32) - (local $$or$cond1$i$184 i32) - (local $$or$cond2$i i32) - (local $$or$cond3$i i32) - (local $$or$cond4$i i32) - (local $$or$cond5$i i32) - (local $$or$cond7$i i32) - (local $$or$cond8$i i32) - (local $$or$cond98$i i32) - (local $$or$i i32) - (local $$or$i$195 i32) - (local $$or$i$28$i i32) - (local $$or$i$i i32) - (local $$or$i$i$i i32) - (local $$or101$i$i i32) - (local $$or110 i32) - (local $$or167 i32) - (local $$or172 i32) - (local $$or176 i32) - (local $$or178$i i32) - (local $$or180 i32) - (local $$or183$i i32) - (local $$or186$i i32) - (local $$or188$i i32) - (local $$or19$i$i i32) - (local $$or194 i32) - (local $$or197 i32) - (local $$or204$i i32) - (local $$or210$i$i i32) - (local $$or22$i$i i32) - (local $$or23 i32) - (local $$or232$i$i i32) - (local $$or26 i32) - (local $$or264$i i32) - (local $$or267$i i32) - (local $$or270$i i32) - (local $$or275$i i32) - (local $$or278$i i32) - (local $$or28$i$i i32) - (local $$or280$i i32) - (local $$or297$i i32) - (local $$or300$i$i i32) - (local $$or33$i$i i32) - (local $$or368$i i32) - (local $$or40 i32) - (local $$or44$i$i i32) - (local $$or93 i32) - (local $$or96 i32) - (local $$p$0$i$i i32) - (local $$parent$i i32) - (local $$parent$i$162 i32) - (local $$parent$i$51$i i32) - (local $$parent$i$i i32) - (local $$parent135$i i32) - (local $$parent138$i$i i32) - (local $$parent149$i i32) - (local $$parent162$i$i i32) - (local $$parent165$i$i i32) - (local $$parent166$i i32) - (local $$parent179$i$i i32) - (local $$parent196$i$i i32) - (local $$parent226$i i32) - (local $$parent240$i i32) - (local $$parent257$i i32) - (local $$parent301$i$i i32) - (local $$parent337$i$i i32) - (local $$parent361$i$i i32) - (local $$parent369$i i32) - (local $$parent406$i i32) - (local $$parent433$i i32) - (local $$qsize$0$i$i i32) - (local $$retval$0 i32) - (local $$rsize$0$i i32) - (local $$rsize$0$i$152 i32) - (local $$rsize$0$i$lcssa i32) - (local $$rsize$1$i i32) - (local $$rsize$3$i i32) - (local $$rsize$4$lcssa$i i32) - (local $$rsize$49$i i32) - (local $$rst$0$i i32) - (local $$rst$1$i i32) - (local $$sflags193$i i32) - (local $$sflags235$i i32) - (local $$shl i32) - (local $$shl$i i32) - (local $$shl$i$144 i32) - (local $$shl$i$19$i i32) - (local $$shl$i$47$i i32) - (local $$shl$i$i i32) - (local $$shl102 i32) - (local $$shl105 i32) - (local $$shl116$i$i i32) - (local $$shl12 i32) - (local $$shl127$i$i i32) - (local $$shl131$i$i i32) - (local $$shl15$i i32) - (local $$shl18$i i32) - (local $$shl192$i i32) - (local $$shl195$i i32) - (local $$shl198$i i32) - (local $$shl22 i32) - (local $$shl221$i$i i32) - (local $$shl226$i$i i32) - (local $$shl265$i$i i32) - (local $$shl270$i$i i32) - (local $$shl276$i$i i32) - (local $$shl279$i$i i32) - (local $$shl288$i i32) - (local $$shl291$i i32) - (local $$shl294$i$i i32) - (local $$shl31$i i32) - (local $$shl316$i$i i32) - (local $$shl326$i$i i32) - (local $$shl333$i i32) - (local $$shl338$i i32) - (local $$shl344$i i32) - (local $$shl347$i i32) - (local $$shl35 i32) - (local $$shl362$i i32) - (local $$shl37 i32) - (local $$shl384$i i32) - (local $$shl39$i$i i32) - (local $$shl395$i i32) - (local $$shl48$i$i i32) - (local $$shl52$i i32) - (local $$shl60$i i32) - (local $$shl65 i32) - (local $$shl70$i$i i32) - (local $$shl72 i32) - (local $$shl75$i$i i32) - (local $$shl81$i$i i32) - (local $$shl84$i$i i32) - (local $$shl9$i i32) - (local $$shl90 i32) - (local $$shl95$i$i i32) - (local $$shr i32) - (local $$shr$i i32) - (local $$shr$i$139 i32) - (local $$shr$i$45$i i32) - (local $$shr$i$i i32) - (local $$shr101 i32) - (local $$shr11$i i32) - (local $$shr11$i$147 i32) - (local $$shr110$i$i i32) - (local $$shr12$i i32) - (local $$shr123$i$i i32) - (local $$shr15$i i32) - (local $$shr16$i i32) - (local $$shr16$i$148 i32) - (local $$shr19$i i32) - (local $$shr194$i i32) - (local $$shr20$i i32) - (local $$shr214$i$i i32) - (local $$shr253$i$i i32) - (local $$shr263$i$i i32) - (local $$shr267$i$i i32) - (local $$shr27$i i32) - (local $$shr272$i$i i32) - (local $$shr277$i$i i32) - (local $$shr281$i$i i32) - (local $$shr283$i i32) - (local $$shr3 i32) - (local $$shr310$i$i i32) - (local $$shr318$i i32) - (local $$shr322$i$i i32) - (local $$shr330$i i32) - (local $$shr335$i i32) - (local $$shr340$i i32) - (local $$shr345$i i32) - (local $$shr349$i i32) - (local $$shr378$i i32) - (local $$shr391$i i32) - (local $$shr4$i i32) - (local $$shr41$i i32) - (local $$shr45 i32) - (local $$shr47 i32) - (local $$shr48 i32) - (local $$shr5$i i32) - (local $$shr5$i$142 i32) - (local $$shr51 i32) - (local $$shr52 i32) - (local $$shr55 i32) - (local $$shr56 i32) - (local $$shr58$i$i i32) - (local $$shr59 i32) - (local $$shr60 i32) - (local $$shr63 i32) - (local $$shr68$i$i i32) - (local $$shr7$i i32) - (local $$shr7$i$145 i32) - (local $$shr72$i i32) - (local $$shr72$i$i i32) - (local $$shr75$i i32) - (local $$shr76$i i32) - (local $$shr77$i$i i32) - (local $$shr79$i i32) - (local $$shr8$i i32) - (local $$shr80$i i32) - (local $$shr82$i$i i32) - (local $$shr83$i i32) - (local $$shr84$i i32) - (local $$shr86$i$i i32) - (local $$shr87$i i32) - (local $$shr88$i i32) - (local $$shr91$i i32) - (local $$size$i$i i32) - (local $$size$i$i$i i32) - (local $$size$i$i$lcssa i32) - (local $$size188$i i32) - (local $$size188$i$lcssa i32) - (local $$size245$i i32) - (local $$sizebits$0$i i32) - (local $$sizebits$0$shl52$i i32) - (local $$sp$0$i$i i32) - (local $$sp$0$i$i$i i32) - (local $$sp$0108$i i32) - (local $$sp$0108$i$lcssa i32) - (local $$sp$1107$i i32) - (local $$sp$1107$i$lcssa i32) - (local $$ssize$0$i i32) - (local $$ssize$2$ph$i i32) - (local $$ssize$5$i i32) - (local $$sub i32) - (local $$sub$i i32) - (local $$sub$i$138 i32) - (local $$sub$i$181 i32) - (local $$sub$i$i i32) - (local $$sub$ptr$lhs$cast$i i32) - (local $$sub$ptr$lhs$cast$i$39$i i32) - (local $$sub$ptr$lhs$cast$i$i i32) - (local $$sub$ptr$rhs$cast$i i32) - (local $$sub$ptr$rhs$cast$i$40$i i32) - (local $$sub$ptr$rhs$cast$i$i i32) - (local $$sub$ptr$sub$i i32) - (local $$sub$ptr$sub$i$41$i i32) - (local $$sub$ptr$sub$i$i i32) - (local $$sub10$i i32) - (local $$sub101$i i32) - (local $$sub101$rsize$4$i i32) - (local $$sub112$i i32) - (local $$sub113$i$i i32) - (local $$sub118$i i32) - (local $$sub14$i i32) - (local $$sub16$i$i i32) - (local $$sub160 i32) - (local $$sub172$i i32) - (local $$sub18$i$i i32) - (local $$sub190 i32) - (local $$sub2$i i32) - (local $$sub22$i i32) - (local $$sub260$i i32) - (local $$sub262$i$i i32) - (local $$sub266$i$i i32) - (local $$sub271$i$i i32) - (local $$sub275$i$i i32) - (local $$sub30$i i32) - (local $$sub31$i i32) - (local $$sub31$rsize$0$i i32) - (local $$sub313$i$i i32) - (local $$sub329$i i32) - (local $$sub33$i i32) - (local $$sub334$i i32) - (local $$sub339$i i32) - (local $$sub343$i i32) - (local $$sub381$i i32) - (local $$sub4$i i32) - (local $$sub41$i i32) - (local $$sub42 i32) - (local $$sub44 i32) - (local $$sub5$i$27$i i32) - (local $$sub5$i$i i32) - (local $$sub5$i$i$i i32) - (local $$sub50$i i32) - (local $$sub6$i i32) - (local $$sub63$i i32) - (local $$sub67$i i32) - (local $$sub67$i$i i32) - (local $$sub70$i i32) - (local $$sub71$i$i i32) - (local $$sub76$i$i i32) - (local $$sub80$i$i i32) - (local $$sub91 i32) - (local $$sub99$i i32) - (local $$t$0$i i32) - (local $$t$0$i$151 i32) - (local $$t$2$i i32) - (local $$t$4$ph$i i32) - (local $$t$4$v$4$i i32) - (local $$t$48$i i32) - (local $$tbase$796$i i32) - (local $$tobool$i$i i32) - (local $$tobool107 i32) - (local $$tobool195$i i32) - (local $$tobool200$i i32) - (local $$tobool228$i$i i32) - (local $$tobool237$i i32) - (local $$tobool293$i i32) - (local $$tobool296$i$i i32) - (local $$tobool30$i i32) - (local $$tobool364$i i32) - (local $$tobool97$i$i i32) - (local $$tsize$795$i i32) - (local $$v$0$i i32) - (local $$v$0$i$153 i32) - (local $$v$0$i$lcssa i32) - (local $$v$1$i i32) - (local $$v$3$i i32) - (local $$v$4$lcssa$i i32) - (local $$v$410$i i32) - (local $$xor$i$i i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$cmp - (i32.lt_u - (local.get $$bytes) - (i32.const 245) - ) - ) - (block $do-once - (if - (local.get $$cmp) - (block - (local.set $$cmp1 - (i32.lt_u - (local.get $$bytes) - (i32.const 11) - ) - ) - (local.set $$add2 - (i32.add - (local.get $$bytes) - (i32.const 11) - ) - ) - (local.set $$and - (i32.and - (local.get $$add2) - (i32.const -8) - ) - ) - (local.set $$cond - (if (result i32) - (local.get $$cmp1) - (i32.const 16) - (local.get $$and) - ) - ) - (local.set $$shr - (i32.shr_u - (local.get $$cond) - (i32.const 3) - ) - ) - (local.set $$0 - (i32.load - (i32.const 176) - ) - ) - (local.set $$shr3 - (i32.shr_u - (local.get $$0) - (local.get $$shr) - ) - ) - (local.set $$and4 - (i32.and - (local.get $$shr3) - (i32.const 3) - ) - ) - (local.set $$cmp5 - (i32.eq - (local.get $$and4) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp5) - ) - (block - (local.set $$neg - (i32.and - (local.get $$shr3) - (i32.const 1) - ) - ) - (local.set $$and7 - (i32.xor - (local.get $$neg) - (i32.const 1) - ) - ) - (local.set $$add8 - (i32.add - (local.get $$and7) - (local.get $$shr) - ) - ) - (local.set $$shl - (i32.shl - (local.get $$add8) - (i32.const 1) - ) - ) - (local.set $$arrayidx - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl) - (i32.const 2) - ) - ) - ) - (local.set $$1 - (i32.add - (local.get $$arrayidx) - (i32.const 8) - ) - ) - (local.set $$2 - (i32.load - (local.get $$1) - ) - ) - (local.set $$fd9 - (i32.add - (local.get $$2) - (i32.const 8) - ) - ) - (local.set $$3 - (i32.load - (local.get $$fd9) - ) - ) - (local.set $$cmp10 - (i32.eq - (local.get $$arrayidx) - (local.get $$3) - ) - ) - (block $do-once0 - (if - (local.get $$cmp10) - (block - (local.set $$shl12 - (i32.shl - (i32.const 1) - (local.get $$add8) - ) - ) - (local.set $$neg13 - (i32.xor - (local.get $$shl12) - (i32.const -1) - ) - ) - (local.set $$and14 - (i32.and - (local.get $$0) - (local.get $$neg13) - ) - ) - (i32.store - (i32.const 176) - (local.get $$and14) - ) - ) - (block - (local.set $$4 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp15 - (i32.lt_u - (local.get $$3) - (local.get $$4) - ) - ) - (if - (local.get $$cmp15) - (call $_abort) - ) - (local.set $$bk - (i32.add - (local.get $$3) - (i32.const 12) - ) - ) - (local.set $$5 - (i32.load - (local.get $$bk) - ) - ) - (local.set $$cmp16 - (i32.eq - (local.get $$5) - (local.get $$2) - ) - ) - (if - (local.get $$cmp16) - (block - (i32.store - (local.get $$bk) - (local.get $$arrayidx) - ) - (i32.store - (local.get $$1) - (local.get $$3) - ) - (br $do-once0) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$shl22 - (i32.shl - (local.get $$add8) - (i32.const 3) - ) - ) - (local.set $$or23 - (i32.or - (local.get $$shl22) - (i32.const 3) - ) - ) - (local.set $$head - (i32.add - (local.get $$2) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head) - (local.get $$or23) - ) - (local.set $$add$ptr - (i32.add - (local.get $$2) - (local.get $$shl22) - ) - ) - (local.set $$head25 - (i32.add - (local.get $$add$ptr) - (i32.const 4) - ) - ) - (local.set $$6 - (i32.load - (local.get $$head25) - ) - ) - (local.set $$or26 - (i32.or - (local.get $$6) - (i32.const 1) - ) - ) - (i32.store - (local.get $$head25) - (local.get $$or26) - ) - (local.set $$retval$0 - (local.get $$fd9) - ) - (return - (local.get $$retval$0) - ) - ) - ) - (local.set $$7 - (i32.load - (i32.const 184) - ) - ) - (local.set $$cmp29 - (i32.gt_u - (local.get $$cond) - (local.get $$7) - ) - ) - (if - (local.get $$cmp29) - (block - (local.set $$cmp31 - (i32.eq - (local.get $$shr3) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp31) - ) - (block - (local.set $$shl35 - (i32.shl - (local.get $$shr3) - (local.get $$shr) - ) - ) - (local.set $$shl37 - (i32.shl - (i32.const 2) - (local.get $$shr) - ) - ) - (local.set $$sub - (i32.sub - (i32.const 0) - (local.get $$shl37) - ) - ) - (local.set $$or40 - (i32.or - (local.get $$shl37) - (local.get $$sub) - ) - ) - (local.set $$and41 - (i32.and - (local.get $$shl35) - (local.get $$or40) - ) - ) - (local.set $$sub42 - (i32.sub - (i32.const 0) - (local.get $$and41) - ) - ) - (local.set $$and43 - (i32.and - (local.get $$and41) - (local.get $$sub42) - ) - ) - (local.set $$sub44 - (i32.add - (local.get $$and43) - (i32.const -1) - ) - ) - (local.set $$shr45 - (i32.shr_u - (local.get $$sub44) - (i32.const 12) - ) - ) - (local.set $$and46 - (i32.and - (local.get $$shr45) - (i32.const 16) - ) - ) - (local.set $$shr47 - (i32.shr_u - (local.get $$sub44) - (local.get $$and46) - ) - ) - (local.set $$shr48 - (i32.shr_u - (local.get $$shr47) - (i32.const 5) - ) - ) - (local.set $$and49 - (i32.and - (local.get $$shr48) - (i32.const 8) - ) - ) - (local.set $$add50 - (i32.or - (local.get $$and49) - (local.get $$and46) - ) - ) - (local.set $$shr51 - (i32.shr_u - (local.get $$shr47) - (local.get $$and49) - ) - ) - (local.set $$shr52 - (i32.shr_u - (local.get $$shr51) - (i32.const 2) - ) - ) - (local.set $$and53 - (i32.and - (local.get $$shr52) - (i32.const 4) - ) - ) - (local.set $$add54 - (i32.or - (local.get $$add50) - (local.get $$and53) - ) - ) - (local.set $$shr55 - (i32.shr_u - (local.get $$shr51) - (local.get $$and53) - ) - ) - (local.set $$shr56 - (i32.shr_u - (local.get $$shr55) - (i32.const 1) - ) - ) - (local.set $$and57 - (i32.and - (local.get $$shr56) - (i32.const 2) - ) - ) - (local.set $$add58 - (i32.or - (local.get $$add54) - (local.get $$and57) - ) - ) - (local.set $$shr59 - (i32.shr_u - (local.get $$shr55) - (local.get $$and57) - ) - ) - (local.set $$shr60 - (i32.shr_u - (local.get $$shr59) - (i32.const 1) - ) - ) - (local.set $$and61 - (i32.and - (local.get $$shr60) - (i32.const 1) - ) - ) - (local.set $$add62 - (i32.or - (local.get $$add58) - (local.get $$and61) - ) - ) - (local.set $$shr63 - (i32.shr_u - (local.get $$shr59) - (local.get $$and61) - ) - ) - (local.set $$add64 - (i32.add - (local.get $$add62) - (local.get $$shr63) - ) - ) - (local.set $$shl65 - (i32.shl - (local.get $$add64) - (i32.const 1) - ) - ) - (local.set $$arrayidx66 - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl65) - (i32.const 2) - ) - ) - ) - (local.set $$8 - (i32.add - (local.get $$arrayidx66) - (i32.const 8) - ) - ) - (local.set $$9 - (i32.load - (local.get $$8) - ) - ) - (local.set $$fd69 - (i32.add - (local.get $$9) - (i32.const 8) - ) - ) - (local.set $$10 - (i32.load - (local.get $$fd69) - ) - ) - (local.set $$cmp70 - (i32.eq - (local.get $$arrayidx66) - (local.get $$10) - ) - ) - (block $do-once2 - (if - (local.get $$cmp70) - (block - (local.set $$shl72 - (i32.shl - (i32.const 1) - (local.get $$add64) - ) - ) - (local.set $$neg73 - (i32.xor - (local.get $$shl72) - (i32.const -1) - ) - ) - (local.set $$and74 - (i32.and - (local.get $$0) - (local.get $$neg73) - ) - ) - (i32.store - (i32.const 176) - (local.get $$and74) - ) - (local.set $$13 - (local.get $$7) - ) - ) - (block - (local.set $$11 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp76 - (i32.lt_u - (local.get $$10) - (local.get $$11) - ) - ) - (if - (local.get $$cmp76) - (call $_abort) - ) - (local.set $$bk78 - (i32.add - (local.get $$10) - (i32.const 12) - ) - ) - (local.set $$12 - (i32.load - (local.get $$bk78) - ) - ) - (local.set $$cmp79 - (i32.eq - (local.get $$12) - (local.get $$9) - ) - ) - (if - (local.get $$cmp79) - (block - (i32.store - (local.get $$bk78) - (local.get $$arrayidx66) - ) - (i32.store - (local.get $$8) - (local.get $$10) - ) - (local.set $$$pre - (i32.load - (i32.const 184) - ) - ) - (local.set $$13 - (local.get $$$pre) - ) - (br $do-once2) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$shl90 - (i32.shl - (local.get $$add64) - (i32.const 3) - ) - ) - (local.set $$sub91 - (i32.sub - (local.get $$shl90) - (local.get $$cond) - ) - ) - (local.set $$or93 - (i32.or - (local.get $$cond) - (i32.const 3) - ) - ) - (local.set $$head94 - (i32.add - (local.get $$9) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head94) - (local.get $$or93) - ) - (local.set $$add$ptr95 - (i32.add - (local.get $$9) - (local.get $$cond) - ) - ) - (local.set $$or96 - (i32.or - (local.get $$sub91) - (i32.const 1) - ) - ) - (local.set $$head97 - (i32.add - (local.get $$add$ptr95) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head97) - (local.get $$or96) - ) - (local.set $$add$ptr98 - (i32.add - (local.get $$add$ptr95) - (local.get $$sub91) - ) - ) - (i32.store - (local.get $$add$ptr98) - (local.get $$sub91) - ) - (local.set $$cmp99 - (i32.eq - (local.get $$13) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp99) - ) - (block - (local.set $$14 - (i32.load - (i32.const 196) - ) - ) - (local.set $$shr101 - (i32.shr_u - (local.get $$13) - (i32.const 3) - ) - ) - (local.set $$shl102 - (i32.shl - (local.get $$shr101) - (i32.const 1) - ) - ) - (local.set $$arrayidx103 - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl102) - (i32.const 2) - ) - ) - ) - (local.set $$15 - (i32.load - (i32.const 176) - ) - ) - (local.set $$shl105 - (i32.shl - (i32.const 1) - (local.get $$shr101) - ) - ) - (local.set $$and106 - (i32.and - (local.get $$15) - (local.get $$shl105) - ) - ) - (local.set $$tobool107 - (i32.eq - (local.get $$and106) - (i32.const 0) - ) - ) - (if - (local.get $$tobool107) - (block - (local.set $$or110 - (i32.or - (local.get $$15) - (local.get $$shl105) - ) - ) - (i32.store - (i32.const 176) - (local.get $$or110) - ) - (local.set $$$pre241 - (i32.add - (local.get $$arrayidx103) - (i32.const 8) - ) - ) - (local.set $$$pre$phiZ2D - (local.get $$$pre241) - ) - (local.set $$F104$0 - (local.get $$arrayidx103) - ) - ) - (block - (local.set $$16 - (i32.add - (local.get $$arrayidx103) - (i32.const 8) - ) - ) - (local.set $$17 - (i32.load - (local.get $$16) - ) - ) - (local.set $$18 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp113 - (i32.lt_u - (local.get $$17) - (local.get $$18) - ) - ) - (if - (local.get $$cmp113) - (call $_abort) - (block - (local.set $$$pre$phiZ2D - (local.get $$16) - ) - (local.set $$F104$0 - (local.get $$17) - ) - ) - ) - ) - ) - (i32.store - (local.get $$$pre$phiZ2D) - (local.get $$14) - ) - (local.set $$bk122 - (i32.add - (local.get $$F104$0) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk122) - (local.get $$14) - ) - (local.set $$fd123 - (i32.add - (local.get $$14) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd123) - (local.get $$F104$0) - ) - (local.set $$bk124 - (i32.add - (local.get $$14) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk124) - (local.get $$arrayidx103) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $$sub91) - ) - (i32.store - (i32.const 196) - (local.get $$add$ptr95) - ) - (local.set $$retval$0 - (local.get $$fd69) - ) - (return - (local.get $$retval$0) - ) - ) - ) - (local.set $$19 - (i32.load - (i32.const 180) - ) - ) - (local.set $$cmp128 - (i32.eq - (local.get $$19) - (i32.const 0) - ) - ) - (if - (local.get $$cmp128) - (local.set $$nb$0 - (local.get $$cond) - ) - (block - (local.set $$sub$i - (i32.sub - (i32.const 0) - (local.get $$19) - ) - ) - (local.set $$and$i - (i32.and - (local.get $$19) - (local.get $$sub$i) - ) - ) - (local.set $$sub2$i - (i32.add - (local.get $$and$i) - (i32.const -1) - ) - ) - (local.set $$shr$i - (i32.shr_u - (local.get $$sub2$i) - (i32.const 12) - ) - ) - (local.set $$and3$i - (i32.and - (local.get $$shr$i) - (i32.const 16) - ) - ) - (local.set $$shr4$i - (i32.shr_u - (local.get $$sub2$i) - (local.get $$and3$i) - ) - ) - (local.set $$shr5$i - (i32.shr_u - (local.get $$shr4$i) - (i32.const 5) - ) - ) - (local.set $$and6$i - (i32.and - (local.get $$shr5$i) - (i32.const 8) - ) - ) - (local.set $$add$i - (i32.or - (local.get $$and6$i) - (local.get $$and3$i) - ) - ) - (local.set $$shr7$i - (i32.shr_u - (local.get $$shr4$i) - (local.get $$and6$i) - ) - ) - (local.set $$shr8$i - (i32.shr_u - (local.get $$shr7$i) - (i32.const 2) - ) - ) - (local.set $$and9$i - (i32.and - (local.get $$shr8$i) - (i32.const 4) - ) - ) - (local.set $$add10$i - (i32.or - (local.get $$add$i) - (local.get $$and9$i) - ) - ) - (local.set $$shr11$i - (i32.shr_u - (local.get $$shr7$i) - (local.get $$and9$i) - ) - ) - (local.set $$shr12$i - (i32.shr_u - (local.get $$shr11$i) - (i32.const 1) - ) - ) - (local.set $$and13$i - (i32.and - (local.get $$shr12$i) - (i32.const 2) - ) - ) - (local.set $$add14$i - (i32.or - (local.get $$add10$i) - (local.get $$and13$i) - ) - ) - (local.set $$shr15$i - (i32.shr_u - (local.get $$shr11$i) - (local.get $$and13$i) - ) - ) - (local.set $$shr16$i - (i32.shr_u - (local.get $$shr15$i) - (i32.const 1) - ) - ) - (local.set $$and17$i - (i32.and - (local.get $$shr16$i) - (i32.const 1) - ) - ) - (local.set $$add18$i - (i32.or - (local.get $$add14$i) - (local.get $$and17$i) - ) - ) - (local.set $$shr19$i - (i32.shr_u - (local.get $$shr15$i) - (local.get $$and17$i) - ) - ) - (local.set $$add20$i - (i32.add - (local.get $$add18$i) - (local.get $$shr19$i) - ) - ) - (local.set $$arrayidx$i - (i32.add - (i32.const 480) - (i32.shl - (local.get $$add20$i) - (i32.const 2) - ) - ) - ) - (local.set $$20 - (i32.load - (local.get $$arrayidx$i) - ) - ) - (local.set $$head$i - (i32.add - (local.get $$20) - (i32.const 4) - ) - ) - (local.set $$21 - (i32.load - (local.get $$head$i) - ) - ) - (local.set $$and21$i - (i32.and - (local.get $$21) - (i32.const -8) - ) - ) - (local.set $$sub22$i - (i32.sub - (local.get $$and21$i) - (local.get $$cond) - ) - ) - (local.set $$rsize$0$i - (local.get $$sub22$i) - ) - (local.set $$t$0$i - (local.get $$20) - ) - (local.set $$v$0$i - (local.get $$20) - ) - (loop $while-in - (block $while-out - (local.set $$arrayidx23$i - (i32.add - (local.get $$t$0$i) - (i32.const 16) - ) - ) - (local.set $$22 - (i32.load - (local.get $$arrayidx23$i) - ) - ) - (local.set $$cmp$i - (i32.eq - (local.get $$22) - (i32.const 0) - ) - ) - (if - (local.get $$cmp$i) - (block - (local.set $$arrayidx27$i - (i32.add - (local.get $$t$0$i) - (i32.const 20) - ) - ) - (local.set $$23 - (i32.load - (local.get $$arrayidx27$i) - ) - ) - (local.set $$cmp28$i - (i32.eq - (local.get $$23) - (i32.const 0) - ) - ) - (if - (local.get $$cmp28$i) - (block - (local.set $$rsize$0$i$lcssa - (local.get $$rsize$0$i) - ) - (local.set $$v$0$i$lcssa - (local.get $$v$0$i) - ) - (br $while-out) - ) - (local.set $$cond4$i - (local.get $$23) - ) - ) - ) - (local.set $$cond4$i - (local.get $$22) - ) - ) - (local.set $$head29$i - (i32.add - (local.get $$cond4$i) - (i32.const 4) - ) - ) - (local.set $$24 - (i32.load - (local.get $$head29$i) - ) - ) - (local.set $$and30$i - (i32.and - (local.get $$24) - (i32.const -8) - ) - ) - (local.set $$sub31$i - (i32.sub - (local.get $$and30$i) - (local.get $$cond) - ) - ) - (local.set $$cmp32$i - (i32.lt_u - (local.get $$sub31$i) - (local.get $$rsize$0$i) - ) - ) - (local.set $$sub31$rsize$0$i - (if (result i32) - (local.get $$cmp32$i) - (local.get $$sub31$i) - (local.get $$rsize$0$i) - ) - ) - (local.set $$cond$v$0$i - (if (result i32) - (local.get $$cmp32$i) - (local.get $$cond4$i) - (local.get $$v$0$i) - ) - ) - (local.set $$rsize$0$i - (local.get $$sub31$rsize$0$i) - ) - (local.set $$t$0$i - (local.get $$cond4$i) - ) - (local.set $$v$0$i - (local.get $$cond$v$0$i) - ) - (br $while-in) - ) - ) - (local.set $$25 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp33$i - (i32.lt_u - (local.get $$v$0$i$lcssa) - (local.get $$25) - ) - ) - (if - (local.get $$cmp33$i) - (call $_abort) - ) - (local.set $$add$ptr$i - (i32.add - (local.get $$v$0$i$lcssa) - (local.get $$cond) - ) - ) - (local.set $$cmp35$i - (i32.lt_u - (local.get $$v$0$i$lcssa) - (local.get $$add$ptr$i) - ) - ) - (if - (i32.eqz - (local.get $$cmp35$i) - ) - (call $_abort) - ) - (local.set $$parent$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 24) - ) - ) - (local.set $$26 - (i32.load - (local.get $$parent$i) - ) - ) - (local.set $$bk$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 12) - ) - ) - (local.set $$27 - (i32.load - (local.get $$bk$i) - ) - ) - (local.set $$cmp40$i - (i32.eq - (local.get $$27) - (local.get $$v$0$i$lcssa) - ) - ) - (block $do-once4 - (if - (local.get $$cmp40$i) - (block - (local.set $$arrayidx61$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 20) - ) - ) - (local.set $$31 - (i32.load - (local.get $$arrayidx61$i) - ) - ) - (local.set $$cmp62$i - (i32.eq - (local.get $$31) - (i32.const 0) - ) - ) - (if - (local.get $$cmp62$i) - (block - (local.set $$arrayidx65$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 16) - ) - ) - (local.set $$32 - (i32.load - (local.get $$arrayidx65$i) - ) - ) - (local.set $$cmp66$i - (i32.eq - (local.get $$32) - (i32.const 0) - ) - ) - (if - (local.get $$cmp66$i) - (block - (local.set $$R$3$i - (i32.const 0) - ) - (br $do-once4) - ) - (block - (local.set $$R$1$i - (local.get $$32) - ) - (local.set $$RP$1$i - (local.get $$arrayidx65$i) - ) - ) - ) - ) - (block - (local.set $$R$1$i - (local.get $$31) - ) - (local.set $$RP$1$i - (local.get $$arrayidx61$i) - ) - ) - ) - (loop $while-in7 - (block $while-out6 - (local.set $$arrayidx71$i - (i32.add - (local.get $$R$1$i) - (i32.const 20) - ) - ) - (local.set $$33 - (i32.load - (local.get $$arrayidx71$i) - ) - ) - (local.set $$cmp72$i - (i32.eq - (local.get $$33) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp72$i) - ) - (block - (local.set $$R$1$i - (local.get $$33) - ) - (local.set $$RP$1$i - (local.get $$arrayidx71$i) - ) - (br $while-in7) - ) - ) - (local.set $$arrayidx75$i - (i32.add - (local.get $$R$1$i) - (i32.const 16) - ) - ) - (local.set $$34 - (i32.load - (local.get $$arrayidx75$i) - ) - ) - (local.set $$cmp76$i - (i32.eq - (local.get $$34) - (i32.const 0) - ) - ) - (if - (local.get $$cmp76$i) - (block - (local.set $$R$1$i$lcssa - (local.get $$R$1$i) - ) - (local.set $$RP$1$i$lcssa - (local.get $$RP$1$i) - ) - (br $while-out6) - ) - (block - (local.set $$R$1$i - (local.get $$34) - ) - (local.set $$RP$1$i - (local.get $$arrayidx75$i) - ) - ) - ) - (br $while-in7) - ) - ) - (local.set $$cmp81$i - (i32.lt_u - (local.get $$RP$1$i$lcssa) - (local.get $$25) - ) - ) - (if - (local.get $$cmp81$i) - (call $_abort) - (block - (i32.store - (local.get $$RP$1$i$lcssa) - (i32.const 0) - ) - (local.set $$R$3$i - (local.get $$R$1$i$lcssa) - ) - (br $do-once4) - ) - ) - ) - (block - (local.set $$fd$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 8) - ) - ) - (local.set $$28 - (i32.load - (local.get $$fd$i) - ) - ) - (local.set $$cmp45$i - (i32.lt_u - (local.get $$28) - (local.get $$25) - ) - ) - (if - (local.get $$cmp45$i) - (call $_abort) - ) - (local.set $$bk47$i - (i32.add - (local.get $$28) - (i32.const 12) - ) - ) - (local.set $$29 - (i32.load - (local.get $$bk47$i) - ) - ) - (local.set $$cmp48$i - (i32.eq - (local.get $$29) - (local.get $$v$0$i$lcssa) - ) - ) - (if - (i32.eqz - (local.get $$cmp48$i) - ) - (call $_abort) - ) - (local.set $$fd50$i - (i32.add - (local.get $$27) - (i32.const 8) - ) - ) - (local.set $$30 - (i32.load - (local.get $$fd50$i) - ) - ) - (local.set $$cmp51$i - (i32.eq - (local.get $$30) - (local.get $$v$0$i$lcssa) - ) - ) - (if - (local.get $$cmp51$i) - (block - (i32.store - (local.get $$bk47$i) - (local.get $$27) - ) - (i32.store - (local.get $$fd50$i) - (local.get $$28) - ) - (local.set $$R$3$i - (local.get $$27) - ) - (br $do-once4) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$cmp90$i - (i32.eq - (local.get $$26) - (i32.const 0) - ) - ) - (block $do-once8 - (if - (i32.eqz - (local.get $$cmp90$i) - ) - (block - (local.set $$index$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 28) - ) - ) - (local.set $$35 - (i32.load - (local.get $$index$i) - ) - ) - (local.set $$arrayidx94$i - (i32.add - (i32.const 480) - (i32.shl - (local.get $$35) - (i32.const 2) - ) - ) - ) - (local.set $$36 - (i32.load - (local.get $$arrayidx94$i) - ) - ) - (local.set $$cmp95$i - (i32.eq - (local.get $$v$0$i$lcssa) - (local.get $$36) - ) - ) - (if - (local.get $$cmp95$i) - (block - (i32.store - (local.get $$arrayidx94$i) - (local.get $$R$3$i) - ) - (local.set $$cond2$i - (i32.eq - (local.get $$R$3$i) - (i32.const 0) - ) - ) - (if - (local.get $$cond2$i) - (block - (local.set $$shl$i - (i32.shl - (i32.const 1) - (local.get $$35) - ) - ) - (local.set $$neg$i - (i32.xor - (local.get $$shl$i) - (i32.const -1) - ) - ) - (local.set $$37 - (i32.load - (i32.const 180) - ) - ) - (local.set $$and103$i - (i32.and - (local.get $$37) - (local.get $$neg$i) - ) - ) - (i32.store - (i32.const 180) - (local.get $$and103$i) - ) - (br $do-once8) - ) - ) - ) - (block - (local.set $$38 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp107$i - (i32.lt_u - (local.get $$26) - (local.get $$38) - ) - ) - (if - (local.get $$cmp107$i) - (call $_abort) - ) - (local.set $$arrayidx113$i - (i32.add - (local.get $$26) - (i32.const 16) - ) - ) - (local.set $$39 - (i32.load - (local.get $$arrayidx113$i) - ) - ) - (local.set $$cmp114$i - (i32.eq - (local.get $$39) - (local.get $$v$0$i$lcssa) - ) - ) - (if - (local.get $$cmp114$i) - (i32.store - (local.get $$arrayidx113$i) - (local.get $$R$3$i) - ) - (block - (local.set $$arrayidx121$i - (i32.add - (local.get $$26) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx121$i) - (local.get $$R$3$i) - ) - ) - ) - (local.set $$cmp126$i - (i32.eq - (local.get $$R$3$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp126$i) - (br $do-once8) - ) - ) - ) - (local.set $$40 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp130$i - (i32.lt_u - (local.get $$R$3$i) - (local.get $$40) - ) - ) - (if - (local.get $$cmp130$i) - (call $_abort) - ) - (local.set $$parent135$i - (i32.add - (local.get $$R$3$i) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent135$i) - (local.get $$26) - ) - (local.set $$arrayidx137$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 16) - ) - ) - (local.set $$41 - (i32.load - (local.get $$arrayidx137$i) - ) - ) - (local.set $$cmp138$i - (i32.eq - (local.get $$41) - (i32.const 0) - ) - ) - (block $do-once10 - (if - (i32.eqz - (local.get $$cmp138$i) - ) - (block - (local.set $$cmp142$i - (i32.lt_u - (local.get $$41) - (local.get $$40) - ) - ) - (if - (local.get $$cmp142$i) - (call $_abort) - (block - (local.set $$arrayidx148$i - (i32.add - (local.get $$R$3$i) - (i32.const 16) - ) - ) - (i32.store - (local.get $$arrayidx148$i) - (local.get $$41) - ) - (local.set $$parent149$i - (i32.add - (local.get $$41) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent149$i) - (local.get $$R$3$i) - ) - (br $do-once10) - ) - ) - ) - ) - ) - (local.set $$arrayidx154$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 20) - ) - ) - (local.set $$42 - (i32.load - (local.get $$arrayidx154$i) - ) - ) - (local.set $$cmp155$i - (i32.eq - (local.get $$42) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp155$i) - ) - (block - (local.set $$43 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp159$i - (i32.lt_u - (local.get $$42) - (local.get $$43) - ) - ) - (if - (local.get $$cmp159$i) - (call $_abort) - (block - (local.set $$arrayidx165$i - (i32.add - (local.get $$R$3$i) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx165$i) - (local.get $$42) - ) - (local.set $$parent166$i - (i32.add - (local.get $$42) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent166$i) - (local.get $$R$3$i) - ) - (br $do-once8) - ) - ) - ) - ) - ) - ) - ) - (local.set $$cmp174$i - (i32.lt_u - (local.get $$rsize$0$i$lcssa) - (i32.const 16) - ) - ) - (if - (local.get $$cmp174$i) - (block - (local.set $$add177$i - (i32.add - (local.get $$rsize$0$i$lcssa) - (local.get $$cond) - ) - ) - (local.set $$or178$i - (i32.or - (local.get $$add177$i) - (i32.const 3) - ) - ) - (local.set $$head179$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head179$i) - (local.get $$or178$i) - ) - (local.set $$add$ptr181$i - (i32.add - (local.get $$v$0$i$lcssa) - (local.get $$add177$i) - ) - ) - (local.set $$head182$i - (i32.add - (local.get $$add$ptr181$i) - (i32.const 4) - ) - ) - (local.set $$44 - (i32.load - (local.get $$head182$i) - ) - ) - (local.set $$or183$i - (i32.or - (local.get $$44) - (i32.const 1) - ) - ) - (i32.store - (local.get $$head182$i) - (local.get $$or183$i) - ) - ) - (block - (local.set $$or186$i - (i32.or - (local.get $$cond) - (i32.const 3) - ) - ) - (local.set $$head187$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head187$i) - (local.get $$or186$i) - ) - (local.set $$or188$i - (i32.or - (local.get $$rsize$0$i$lcssa) - (i32.const 1) - ) - ) - (local.set $$head189$i - (i32.add - (local.get $$add$ptr$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head189$i) - (local.get $$or188$i) - ) - (local.set $$add$ptr190$i - (i32.add - (local.get $$add$ptr$i) - (local.get $$rsize$0$i$lcssa) - ) - ) - (i32.store - (local.get $$add$ptr190$i) - (local.get $$rsize$0$i$lcssa) - ) - (local.set $$45 - (i32.load - (i32.const 184) - ) - ) - (local.set $$cmp191$i - (i32.eq - (local.get $$45) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp191$i) - ) - (block - (local.set $$46 - (i32.load - (i32.const 196) - ) - ) - (local.set $$shr194$i - (i32.shr_u - (local.get $$45) - (i32.const 3) - ) - ) - (local.set $$shl195$i - (i32.shl - (local.get $$shr194$i) - (i32.const 1) - ) - ) - (local.set $$arrayidx196$i - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl195$i) - (i32.const 2) - ) - ) - ) - (local.set $$47 - (i32.load - (i32.const 176) - ) - ) - (local.set $$shl198$i - (i32.shl - (i32.const 1) - (local.get $$shr194$i) - ) - ) - (local.set $$and199$i - (i32.and - (local.get $$47) - (local.get $$shl198$i) - ) - ) - (local.set $$tobool200$i - (i32.eq - (local.get $$and199$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool200$i) - (block - (local.set $$or204$i - (i32.or - (local.get $$47) - (local.get $$shl198$i) - ) - ) - (i32.store - (i32.const 176) - (local.get $$or204$i) - ) - (local.set $$$pre$i - (i32.add - (local.get $$arrayidx196$i) - (i32.const 8) - ) - ) - (local.set $$$pre$phi$iZ2D - (local.get $$$pre$i) - ) - (local.set $$F197$0$i - (local.get $$arrayidx196$i) - ) - ) - (block - (local.set $$48 - (i32.add - (local.get $$arrayidx196$i) - (i32.const 8) - ) - ) - (local.set $$49 - (i32.load - (local.get $$48) - ) - ) - (local.set $$50 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp208$i - (i32.lt_u - (local.get $$49) - (local.get $$50) - ) - ) - (if - (local.get $$cmp208$i) - (call $_abort) - (block - (local.set $$$pre$phi$iZ2D - (local.get $$48) - ) - (local.set $$F197$0$i - (local.get $$49) - ) - ) - ) - ) - ) - (i32.store - (local.get $$$pre$phi$iZ2D) - (local.get $$46) - ) - (local.set $$bk218$i - (i32.add - (local.get $$F197$0$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk218$i) - (local.get $$46) - ) - (local.set $$fd219$i - (i32.add - (local.get $$46) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd219$i) - (local.get $$F197$0$i) - ) - (local.set $$bk220$i - (i32.add - (local.get $$46) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk220$i) - (local.get $$arrayidx196$i) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $$rsize$0$i$lcssa) - ) - (i32.store - (i32.const 196) - (local.get $$add$ptr$i) - ) - ) - ) - (local.set $$add$ptr225$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 8) - ) - ) - (local.set $$retval$0 - (local.get $$add$ptr225$i) - ) - (return - (local.get $$retval$0) - ) - ) - ) - ) - (local.set $$nb$0 - (local.get $$cond) - ) - ) - ) - (block - (local.set $$cmp139 - (i32.gt_u - (local.get $$bytes) - (i32.const -65) - ) - ) - (if - (local.get $$cmp139) - (local.set $$nb$0 - (i32.const -1) - ) - (block - (local.set $$add144 - (i32.add - (local.get $$bytes) - (i32.const 11) - ) - ) - (local.set $$and145 - (i32.and - (local.get $$add144) - (i32.const -8) - ) - ) - (local.set $$51 - (i32.load - (i32.const 180) - ) - ) - (local.set $$cmp146 - (i32.eq - (local.get $$51) - (i32.const 0) - ) - ) - (if - (local.get $$cmp146) - (local.set $$nb$0 - (local.get $$and145) - ) - (block - (local.set $$sub$i$138 - (i32.sub - (i32.const 0) - (local.get $$and145) - ) - ) - (local.set $$shr$i$139 - (i32.shr_u - (local.get $$add144) - (i32.const 8) - ) - ) - (local.set $$cmp$i$140 - (i32.eq - (local.get $$shr$i$139) - (i32.const 0) - ) - ) - (if - (local.get $$cmp$i$140) - (local.set $$idx$0$i - (i32.const 0) - ) - (block - (local.set $$cmp1$i - (i32.gt_u - (local.get $$and145) - (i32.const 16777215) - ) - ) - (if - (local.get $$cmp1$i) - (local.set $$idx$0$i - (i32.const 31) - ) - (block - (local.set $$sub4$i - (i32.add - (local.get $$shr$i$139) - (i32.const 1048320) - ) - ) - (local.set $$shr5$i$142 - (i32.shr_u - (local.get $$sub4$i) - (i32.const 16) - ) - ) - (local.set $$and$i$143 - (i32.and - (local.get $$shr5$i$142) - (i32.const 8) - ) - ) - (local.set $$shl$i$144 - (i32.shl - (local.get $$shr$i$139) - (local.get $$and$i$143) - ) - ) - (local.set $$sub6$i - (i32.add - (local.get $$shl$i$144) - (i32.const 520192) - ) - ) - (local.set $$shr7$i$145 - (i32.shr_u - (local.get $$sub6$i) - (i32.const 16) - ) - ) - (local.set $$and8$i - (i32.and - (local.get $$shr7$i$145) - (i32.const 4) - ) - ) - (local.set $$add$i$146 - (i32.or - (local.get $$and8$i) - (local.get $$and$i$143) - ) - ) - (local.set $$shl9$i - (i32.shl - (local.get $$shl$i$144) - (local.get $$and8$i) - ) - ) - (local.set $$sub10$i - (i32.add - (local.get $$shl9$i) - (i32.const 245760) - ) - ) - (local.set $$shr11$i$147 - (i32.shr_u - (local.get $$sub10$i) - (i32.const 16) - ) - ) - (local.set $$and12$i - (i32.and - (local.get $$shr11$i$147) - (i32.const 2) - ) - ) - (local.set $$add13$i - (i32.or - (local.get $$add$i$146) - (local.get $$and12$i) - ) - ) - (local.set $$sub14$i - (i32.sub - (i32.const 14) - (local.get $$add13$i) - ) - ) - (local.set $$shl15$i - (i32.shl - (local.get $$shl9$i) - (local.get $$and12$i) - ) - ) - (local.set $$shr16$i$148 - (i32.shr_u - (local.get $$shl15$i) - (i32.const 15) - ) - ) - (local.set $$add17$i - (i32.add - (local.get $$sub14$i) - (local.get $$shr16$i$148) - ) - ) - (local.set $$shl18$i - (i32.shl - (local.get $$add17$i) - (i32.const 1) - ) - ) - (local.set $$add19$i - (i32.add - (local.get $$add17$i) - (i32.const 7) - ) - ) - (local.set $$shr20$i - (i32.shr_u - (local.get $$and145) - (local.get $$add19$i) - ) - ) - (local.set $$and21$i$149 - (i32.and - (local.get $$shr20$i) - (i32.const 1) - ) - ) - (local.set $$add22$i - (i32.or - (local.get $$and21$i$149) - (local.get $$shl18$i) - ) - ) - (local.set $$idx$0$i - (local.get $$add22$i) - ) - ) - ) - ) - ) - (local.set $$arrayidx$i$150 - (i32.add - (i32.const 480) - (i32.shl - (local.get $$idx$0$i) - (i32.const 2) - ) - ) - ) - (local.set $$52 - (i32.load - (local.get $$arrayidx$i$150) - ) - ) - (local.set $$cmp24$i - (i32.eq - (local.get $$52) - (i32.const 0) - ) - ) - (block $label$break$L123 - (if - (local.get $$cmp24$i) - (block - (local.set $$rsize$3$i - (local.get $$sub$i$138) - ) - (local.set $$t$2$i - (i32.const 0) - ) - (local.set $$v$3$i - (i32.const 0) - ) - (local.set $label - (i32.const 86) - ) - ) - (block - (local.set $$cmp26$i - (i32.eq - (local.get $$idx$0$i) - (i32.const 31) - ) - ) - (local.set $$shr27$i - (i32.shr_u - (local.get $$idx$0$i) - (i32.const 1) - ) - ) - (local.set $$sub30$i - (i32.sub - (i32.const 25) - (local.get $$shr27$i) - ) - ) - (local.set $$cond$i - (if (result i32) - (local.get $$cmp26$i) - (i32.const 0) - (local.get $$sub30$i) - ) - ) - (local.set $$shl31$i - (i32.shl - (local.get $$and145) - (local.get $$cond$i) - ) - ) - (local.set $$rsize$0$i$152 - (local.get $$sub$i$138) - ) - (local.set $$rst$0$i - (i32.const 0) - ) - (local.set $$sizebits$0$i - (local.get $$shl31$i) - ) - (local.set $$t$0$i$151 - (local.get $$52) - ) - (local.set $$v$0$i$153 - (i32.const 0) - ) - (loop $while-in14 - (block $while-out13 - (local.set $$head$i$154 - (i32.add - (local.get $$t$0$i$151) - (i32.const 4) - ) - ) - (local.set $$53 - (i32.load - (local.get $$head$i$154) - ) - ) - (local.set $$and32$i - (i32.and - (local.get $$53) - (i32.const -8) - ) - ) - (local.set $$sub33$i - (i32.sub - (local.get $$and32$i) - (local.get $$and145) - ) - ) - (local.set $$cmp34$i - (i32.lt_u - (local.get $$sub33$i) - (local.get $$rsize$0$i$152) - ) - ) - (if - (local.get $$cmp34$i) - (block - (local.set $$cmp36$i - (i32.eq - (local.get $$and32$i) - (local.get $$and145) - ) - ) - (if - (local.get $$cmp36$i) - (block - (local.set $$rsize$49$i - (local.get $$sub33$i) - ) - (local.set $$t$48$i - (local.get $$t$0$i$151) - ) - (local.set $$v$410$i - (local.get $$t$0$i$151) - ) - (local.set $label - (i32.const 90) - ) - (br $label$break$L123) - ) - (block - (local.set $$rsize$1$i - (local.get $$sub33$i) - ) - (local.set $$v$1$i - (local.get $$t$0$i$151) - ) - ) - ) - ) - (block - (local.set $$rsize$1$i - (local.get $$rsize$0$i$152) - ) - (local.set $$v$1$i - (local.get $$v$0$i$153) - ) - ) - ) - (local.set $$arrayidx40$i - (i32.add - (local.get $$t$0$i$151) - (i32.const 20) - ) - ) - (local.set $$54 - (i32.load - (local.get $$arrayidx40$i) - ) - ) - (local.set $$shr41$i - (i32.shr_u - (local.get $$sizebits$0$i) - (i32.const 31) - ) - ) - (local.set $$arrayidx44$i - (i32.add - (i32.add - (local.get $$t$0$i$151) - (i32.const 16) - ) - (i32.shl - (local.get $$shr41$i) - (i32.const 2) - ) - ) - ) - (local.set $$55 - (i32.load - (local.get $$arrayidx44$i) - ) - ) - (local.set $$cmp45$i$155 - (i32.eq - (local.get $$54) - (i32.const 0) - ) - ) - (local.set $$cmp46$i - (i32.eq - (local.get $$54) - (local.get $$55) - ) - ) - (local.set $$or$cond1$i - (i32.or - (local.get $$cmp45$i$155) - (local.get $$cmp46$i) - ) - ) - (local.set $$rst$1$i - (if (result i32) - (local.get $$or$cond1$i) - (local.get $$rst$0$i) - (local.get $$54) - ) - ) - (local.set $$cmp49$i - (i32.eq - (local.get $$55) - (i32.const 0) - ) - ) - (local.set $$56 - (i32.and - (local.get $$cmp49$i) - (i32.const 1) - ) - ) - (local.set $$shl52$i - (i32.xor - (local.get $$56) - (i32.const 1) - ) - ) - (local.set $$sizebits$0$shl52$i - (i32.shl - (local.get $$sizebits$0$i) - (local.get $$shl52$i) - ) - ) - (if - (local.get $$cmp49$i) - (block - (local.set $$rsize$3$i - (local.get $$rsize$1$i) - ) - (local.set $$t$2$i - (local.get $$rst$1$i) - ) - (local.set $$v$3$i - (local.get $$v$1$i) - ) - (local.set $label - (i32.const 86) - ) - (br $while-out13) - ) - (block - (local.set $$rsize$0$i$152 - (local.get $$rsize$1$i) - ) - (local.set $$rst$0$i - (local.get $$rst$1$i) - ) - (local.set $$sizebits$0$i - (local.get $$sizebits$0$shl52$i) - ) - (local.set $$t$0$i$151 - (local.get $$55) - ) - (local.set $$v$0$i$153 - (local.get $$v$1$i) - ) - ) - ) - (br $while-in14) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 86) - ) - (block - (local.set $$cmp55$i - (i32.eq - (local.get $$t$2$i) - (i32.const 0) - ) - ) - (local.set $$cmp57$i - (i32.eq - (local.get $$v$3$i) - (i32.const 0) - ) - ) - (local.set $$or$cond$i - (i32.and - (local.get $$cmp55$i) - (local.get $$cmp57$i) - ) - ) - (if - (local.get $$or$cond$i) - (block - (local.set $$shl60$i - (i32.shl - (i32.const 2) - (local.get $$idx$0$i) - ) - ) - (local.set $$sub63$i - (i32.sub - (i32.const 0) - (local.get $$shl60$i) - ) - ) - (local.set $$or$i - (i32.or - (local.get $$shl60$i) - (local.get $$sub63$i) - ) - ) - (local.set $$and64$i - (i32.and - (local.get $$51) - (local.get $$or$i) - ) - ) - (local.set $$cmp65$i - (i32.eq - (local.get $$and64$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp65$i) - (block - (local.set $$nb$0 - (local.get $$and145) - ) - (br $do-once) - ) - ) - (local.set $$sub67$i - (i32.sub - (i32.const 0) - (local.get $$and64$i) - ) - ) - (local.set $$and68$i - (i32.and - (local.get $$and64$i) - (local.get $$sub67$i) - ) - ) - (local.set $$sub70$i - (i32.add - (local.get $$and68$i) - (i32.const -1) - ) - ) - (local.set $$shr72$i - (i32.shr_u - (local.get $$sub70$i) - (i32.const 12) - ) - ) - (local.set $$and73$i - (i32.and - (local.get $$shr72$i) - (i32.const 16) - ) - ) - (local.set $$shr75$i - (i32.shr_u - (local.get $$sub70$i) - (local.get $$and73$i) - ) - ) - (local.set $$shr76$i - (i32.shr_u - (local.get $$shr75$i) - (i32.const 5) - ) - ) - (local.set $$and77$i - (i32.and - (local.get $$shr76$i) - (i32.const 8) - ) - ) - (local.set $$add78$i - (i32.or - (local.get $$and77$i) - (local.get $$and73$i) - ) - ) - (local.set $$shr79$i - (i32.shr_u - (local.get $$shr75$i) - (local.get $$and77$i) - ) - ) - (local.set $$shr80$i - (i32.shr_u - (local.get $$shr79$i) - (i32.const 2) - ) - ) - (local.set $$and81$i - (i32.and - (local.get $$shr80$i) - (i32.const 4) - ) - ) - (local.set $$add82$i - (i32.or - (local.get $$add78$i) - (local.get $$and81$i) - ) - ) - (local.set $$shr83$i - (i32.shr_u - (local.get $$shr79$i) - (local.get $$and81$i) - ) - ) - (local.set $$shr84$i - (i32.shr_u - (local.get $$shr83$i) - (i32.const 1) - ) - ) - (local.set $$and85$i - (i32.and - (local.get $$shr84$i) - (i32.const 2) - ) - ) - (local.set $$add86$i - (i32.or - (local.get $$add82$i) - (local.get $$and85$i) - ) - ) - (local.set $$shr87$i - (i32.shr_u - (local.get $$shr83$i) - (local.get $$and85$i) - ) - ) - (local.set $$shr88$i - (i32.shr_u - (local.get $$shr87$i) - (i32.const 1) - ) - ) - (local.set $$and89$i - (i32.and - (local.get $$shr88$i) - (i32.const 1) - ) - ) - (local.set $$add90$i - (i32.or - (local.get $$add86$i) - (local.get $$and89$i) - ) - ) - (local.set $$shr91$i - (i32.shr_u - (local.get $$shr87$i) - (local.get $$and89$i) - ) - ) - (local.set $$add92$i - (i32.add - (local.get $$add90$i) - (local.get $$shr91$i) - ) - ) - (local.set $$arrayidx94$i$156 - (i32.add - (i32.const 480) - (i32.shl - (local.get $$add92$i) - (i32.const 2) - ) - ) - ) - (local.set $$57 - (i32.load - (local.get $$arrayidx94$i$156) - ) - ) - (local.set $$t$4$ph$i - (local.get $$57) - ) - ) - (local.set $$t$4$ph$i - (local.get $$t$2$i) - ) - ) - (local.set $$cmp97$7$i - (i32.eq - (local.get $$t$4$ph$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp97$7$i) - (block - (local.set $$rsize$4$lcssa$i - (local.get $$rsize$3$i) - ) - (local.set $$v$4$lcssa$i - (local.get $$v$3$i) - ) - ) - (block - (local.set $$rsize$49$i - (local.get $$rsize$3$i) - ) - (local.set $$t$48$i - (local.get $$t$4$ph$i) - ) - (local.set $$v$410$i - (local.get $$v$3$i) - ) - (local.set $label - (i32.const 90) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 90) - ) - (loop $while-in16 - (block $while-out15 - (local.set $label - (i32.const 0) - ) - (local.set $$head99$i - (i32.add - (local.get $$t$48$i) - (i32.const 4) - ) - ) - (local.set $$58 - (i32.load - (local.get $$head99$i) - ) - ) - (local.set $$and100$i - (i32.and - (local.get $$58) - (i32.const -8) - ) - ) - (local.set $$sub101$i - (i32.sub - (local.get $$and100$i) - (local.get $$and145) - ) - ) - (local.set $$cmp102$i - (i32.lt_u - (local.get $$sub101$i) - (local.get $$rsize$49$i) - ) - ) - (local.set $$sub101$rsize$4$i - (if (result i32) - (local.get $$cmp102$i) - (local.get $$sub101$i) - (local.get $$rsize$49$i) - ) - ) - (local.set $$t$4$v$4$i - (if (result i32) - (local.get $$cmp102$i) - (local.get $$t$48$i) - (local.get $$v$410$i) - ) - ) - (local.set $$arrayidx106$i - (i32.add - (local.get $$t$48$i) - (i32.const 16) - ) - ) - (local.set $$59 - (i32.load - (local.get $$arrayidx106$i) - ) - ) - (local.set $$cmp107$i$157 - (i32.eq - (local.get $$59) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp107$i$157) - ) - (block - (local.set $$rsize$49$i - (local.get $$sub101$rsize$4$i) - ) - (local.set $$t$48$i - (local.get $$59) - ) - (local.set $$v$410$i - (local.get $$t$4$v$4$i) - ) - (local.set $label - (i32.const 90) - ) - (br $while-in16) - ) - ) - (local.set $$arrayidx113$i$159 - (i32.add - (local.get $$t$48$i) - (i32.const 20) - ) - ) - (local.set $$60 - (i32.load - (local.get $$arrayidx113$i$159) - ) - ) - (local.set $$cmp97$i - (i32.eq - (local.get $$60) - (i32.const 0) - ) - ) - (if - (local.get $$cmp97$i) - (block - (local.set $$rsize$4$lcssa$i - (local.get $$sub101$rsize$4$i) - ) - (local.set $$v$4$lcssa$i - (local.get $$t$4$v$4$i) - ) - (br $while-out15) - ) - (block - (local.set $$rsize$49$i - (local.get $$sub101$rsize$4$i) - ) - (local.set $$t$48$i - (local.get $$60) - ) - (local.set $$v$410$i - (local.get $$t$4$v$4$i) - ) - (local.set $label - (i32.const 90) - ) - ) - ) - (br $while-in16) - ) - ) - ) - (local.set $$cmp116$i - (i32.eq - (local.get $$v$4$lcssa$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp116$i) - (local.set $$nb$0 - (local.get $$and145) - ) - (block - (local.set $$61 - (i32.load - (i32.const 184) - ) - ) - (local.set $$sub118$i - (i32.sub - (local.get $$61) - (local.get $$and145) - ) - ) - (local.set $$cmp119$i - (i32.lt_u - (local.get $$rsize$4$lcssa$i) - (local.get $$sub118$i) - ) - ) - (if - (local.get $$cmp119$i) - (block - (local.set $$62 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp121$i - (i32.lt_u - (local.get $$v$4$lcssa$i) - (local.get $$62) - ) - ) - (if - (local.get $$cmp121$i) - (call $_abort) - ) - (local.set $$add$ptr$i$161 - (i32.add - (local.get $$v$4$lcssa$i) - (local.get $$and145) - ) - ) - (local.set $$cmp123$i - (i32.lt_u - (local.get $$v$4$lcssa$i) - (local.get $$add$ptr$i$161) - ) - ) - (if - (i32.eqz - (local.get $$cmp123$i) - ) - (call $_abort) - ) - (local.set $$parent$i$162 - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 24) - ) - ) - (local.set $$63 - (i32.load - (local.get $$parent$i$162) - ) - ) - (local.set $$bk$i$163 - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 12) - ) - ) - (local.set $$64 - (i32.load - (local.get $$bk$i$163) - ) - ) - (local.set $$cmp128$i - (i32.eq - (local.get $$64) - (local.get $$v$4$lcssa$i) - ) - ) - (block $do-once17 - (if - (local.get $$cmp128$i) - (block - (local.set $$arrayidx151$i - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 20) - ) - ) - (local.set $$68 - (i32.load - (local.get $$arrayidx151$i) - ) - ) - (local.set $$cmp152$i - (i32.eq - (local.get $$68) - (i32.const 0) - ) - ) - (if - (local.get $$cmp152$i) - (block - (local.set $$arrayidx155$i - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 16) - ) - ) - (local.set $$69 - (i32.load - (local.get $$arrayidx155$i) - ) - ) - (local.set $$cmp156$i - (i32.eq - (local.get $$69) - (i32.const 0) - ) - ) - (if - (local.get $$cmp156$i) - (block - (local.set $$R$3$i$171 - (i32.const 0) - ) - (br $do-once17) - ) - (block - (local.set $$R$1$i$168 - (local.get $$69) - ) - (local.set $$RP$1$i$167 - (local.get $$arrayidx155$i) - ) - ) - ) - ) - (block - (local.set $$R$1$i$168 - (local.get $$68) - ) - (local.set $$RP$1$i$167 - (local.get $$arrayidx151$i) - ) - ) - ) - (loop $while-in20 - (block $while-out19 - (local.set $$arrayidx161$i - (i32.add - (local.get $$R$1$i$168) - (i32.const 20) - ) - ) - (local.set $$70 - (i32.load - (local.get $$arrayidx161$i) - ) - ) - (local.set $$cmp162$i - (i32.eq - (local.get $$70) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp162$i) - ) - (block - (local.set $$R$1$i$168 - (local.get $$70) - ) - (local.set $$RP$1$i$167 - (local.get $$arrayidx161$i) - ) - (br $while-in20) - ) - ) - (local.set $$arrayidx165$i$169 - (i32.add - (local.get $$R$1$i$168) - (i32.const 16) - ) - ) - (local.set $$71 - (i32.load - (local.get $$arrayidx165$i$169) - ) - ) - (local.set $$cmp166$i - (i32.eq - (local.get $$71) - (i32.const 0) - ) - ) - (if - (local.get $$cmp166$i) - (block - (local.set $$R$1$i$168$lcssa - (local.get $$R$1$i$168) - ) - (local.set $$RP$1$i$167$lcssa - (local.get $$RP$1$i$167) - ) - (br $while-out19) - ) - (block - (local.set $$R$1$i$168 - (local.get $$71) - ) - (local.set $$RP$1$i$167 - (local.get $$arrayidx165$i$169) - ) - ) - ) - (br $while-in20) - ) - ) - (local.set $$cmp171$i - (i32.lt_u - (local.get $$RP$1$i$167$lcssa) - (local.get $$62) - ) - ) - (if - (local.get $$cmp171$i) - (call $_abort) - (block - (i32.store - (local.get $$RP$1$i$167$lcssa) - (i32.const 0) - ) - (local.set $$R$3$i$171 - (local.get $$R$1$i$168$lcssa) - ) - (br $do-once17) - ) - ) - ) - (block - (local.set $$fd$i$164 - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 8) - ) - ) - (local.set $$65 - (i32.load - (local.get $$fd$i$164) - ) - ) - (local.set $$cmp133$i - (i32.lt_u - (local.get $$65) - (local.get $$62) - ) - ) - (if - (local.get $$cmp133$i) - (call $_abort) - ) - (local.set $$bk136$i - (i32.add - (local.get $$65) - (i32.const 12) - ) - ) - (local.set $$66 - (i32.load - (local.get $$bk136$i) - ) - ) - (local.set $$cmp137$i - (i32.eq - (local.get $$66) - (local.get $$v$4$lcssa$i) - ) - ) - (if - (i32.eqz - (local.get $$cmp137$i) - ) - (call $_abort) - ) - (local.set $$fd139$i - (i32.add - (local.get $$64) - (i32.const 8) - ) - ) - (local.set $$67 - (i32.load - (local.get $$fd139$i) - ) - ) - (local.set $$cmp140$i - (i32.eq - (local.get $$67) - (local.get $$v$4$lcssa$i) - ) - ) - (if - (local.get $$cmp140$i) - (block - (i32.store - (local.get $$bk136$i) - (local.get $$64) - ) - (i32.store - (local.get $$fd139$i) - (local.get $$65) - ) - (local.set $$R$3$i$171 - (local.get $$64) - ) - (br $do-once17) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$cmp180$i - (i32.eq - (local.get $$63) - (i32.const 0) - ) - ) - (block $do-once21 - (if - (i32.eqz - (local.get $$cmp180$i) - ) - (block - (local.set $$index$i$172 - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 28) - ) - ) - (local.set $$72 - (i32.load - (local.get $$index$i$172) - ) - ) - (local.set $$arrayidx184$i - (i32.add - (i32.const 480) - (i32.shl - (local.get $$72) - (i32.const 2) - ) - ) - ) - (local.set $$73 - (i32.load - (local.get $$arrayidx184$i) - ) - ) - (local.set $$cmp185$i - (i32.eq - (local.get $$v$4$lcssa$i) - (local.get $$73) - ) - ) - (if - (local.get $$cmp185$i) - (block - (i32.store - (local.get $$arrayidx184$i) - (local.get $$R$3$i$171) - ) - (local.set $$cond3$i - (i32.eq - (local.get $$R$3$i$171) - (i32.const 0) - ) - ) - (if - (local.get $$cond3$i) - (block - (local.set $$shl192$i - (i32.shl - (i32.const 1) - (local.get $$72) - ) - ) - (local.set $$neg$i$173 - (i32.xor - (local.get $$shl192$i) - (i32.const -1) - ) - ) - (local.set $$74 - (i32.load - (i32.const 180) - ) - ) - (local.set $$and194$i - (i32.and - (local.get $$74) - (local.get $$neg$i$173) - ) - ) - (i32.store - (i32.const 180) - (local.get $$and194$i) - ) - (br $do-once21) - ) - ) - ) - (block - (local.set $$75 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp198$i - (i32.lt_u - (local.get $$63) - (local.get $$75) - ) - ) - (if - (local.get $$cmp198$i) - (call $_abort) - ) - (local.set $$arrayidx204$i - (i32.add - (local.get $$63) - (i32.const 16) - ) - ) - (local.set $$76 - (i32.load - (local.get $$arrayidx204$i) - ) - ) - (local.set $$cmp205$i - (i32.eq - (local.get $$76) - (local.get $$v$4$lcssa$i) - ) - ) - (if - (local.get $$cmp205$i) - (i32.store - (local.get $$arrayidx204$i) - (local.get $$R$3$i$171) - ) - (block - (local.set $$arrayidx212$i - (i32.add - (local.get $$63) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx212$i) - (local.get $$R$3$i$171) - ) - ) - ) - (local.set $$cmp217$i - (i32.eq - (local.get $$R$3$i$171) - (i32.const 0) - ) - ) - (if - (local.get $$cmp217$i) - (br $do-once21) - ) - ) - ) - (local.set $$77 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp221$i - (i32.lt_u - (local.get $$R$3$i$171) - (local.get $$77) - ) - ) - (if - (local.get $$cmp221$i) - (call $_abort) - ) - (local.set $$parent226$i - (i32.add - (local.get $$R$3$i$171) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent226$i) - (local.get $$63) - ) - (local.set $$arrayidx228$i - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 16) - ) - ) - (local.set $$78 - (i32.load - (local.get $$arrayidx228$i) - ) - ) - (local.set $$cmp229$i - (i32.eq - (local.get $$78) - (i32.const 0) - ) - ) - (block $do-once23 - (if - (i32.eqz - (local.get $$cmp229$i) - ) - (block - (local.set $$cmp233$i - (i32.lt_u - (local.get $$78) - (local.get $$77) - ) - ) - (if - (local.get $$cmp233$i) - (call $_abort) - (block - (local.set $$arrayidx239$i - (i32.add - (local.get $$R$3$i$171) - (i32.const 16) - ) - ) - (i32.store - (local.get $$arrayidx239$i) - (local.get $$78) - ) - (local.set $$parent240$i - (i32.add - (local.get $$78) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent240$i) - (local.get $$R$3$i$171) - ) - (br $do-once23) - ) - ) - ) - ) - ) - (local.set $$arrayidx245$i - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 20) - ) - ) - (local.set $$79 - (i32.load - (local.get $$arrayidx245$i) - ) - ) - (local.set $$cmp246$i - (i32.eq - (local.get $$79) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp246$i) - ) - (block - (local.set $$80 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp250$i - (i32.lt_u - (local.get $$79) - (local.get $$80) - ) - ) - (if - (local.get $$cmp250$i) - (call $_abort) - (block - (local.set $$arrayidx256$i - (i32.add - (local.get $$R$3$i$171) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx256$i) - (local.get $$79) - ) - (local.set $$parent257$i - (i32.add - (local.get $$79) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent257$i) - (local.get $$R$3$i$171) - ) - (br $do-once21) - ) - ) - ) - ) - ) - ) - ) - (local.set $$cmp265$i - (i32.lt_u - (local.get $$rsize$4$lcssa$i) - (i32.const 16) - ) - ) - (block $do-once25 - (if - (local.get $$cmp265$i) - (block - (local.set $$add268$i - (i32.add - (local.get $$rsize$4$lcssa$i) - (local.get $$and145) - ) - ) - (local.set $$or270$i - (i32.or - (local.get $$add268$i) - (i32.const 3) - ) - ) - (local.set $$head271$i - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head271$i) - (local.get $$or270$i) - ) - (local.set $$add$ptr273$i - (i32.add - (local.get $$v$4$lcssa$i) - (local.get $$add268$i) - ) - ) - (local.set $$head274$i - (i32.add - (local.get $$add$ptr273$i) - (i32.const 4) - ) - ) - (local.set $$81 - (i32.load - (local.get $$head274$i) - ) - ) - (local.set $$or275$i - (i32.or - (local.get $$81) - (i32.const 1) - ) - ) - (i32.store - (local.get $$head274$i) - (local.get $$or275$i) - ) - ) - (block - (local.set $$or278$i - (i32.or - (local.get $$and145) - (i32.const 3) - ) - ) - (local.set $$head279$i - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head279$i) - (local.get $$or278$i) - ) - (local.set $$or280$i - (i32.or - (local.get $$rsize$4$lcssa$i) - (i32.const 1) - ) - ) - (local.set $$head281$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head281$i) - (local.get $$or280$i) - ) - (local.set $$add$ptr282$i - (i32.add - (local.get $$add$ptr$i$161) - (local.get $$rsize$4$lcssa$i) - ) - ) - (i32.store - (local.get $$add$ptr282$i) - (local.get $$rsize$4$lcssa$i) - ) - (local.set $$shr283$i - (i32.shr_u - (local.get $$rsize$4$lcssa$i) - (i32.const 3) - ) - ) - (local.set $$cmp284$i - (i32.lt_u - (local.get $$rsize$4$lcssa$i) - (i32.const 256) - ) - ) - (if - (local.get $$cmp284$i) - (block - (local.set $$shl288$i - (i32.shl - (local.get $$shr283$i) - (i32.const 1) - ) - ) - (local.set $$arrayidx289$i - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl288$i) - (i32.const 2) - ) - ) - ) - (local.set $$82 - (i32.load - (i32.const 176) - ) - ) - (local.set $$shl291$i - (i32.shl - (i32.const 1) - (local.get $$shr283$i) - ) - ) - (local.set $$and292$i - (i32.and - (local.get $$82) - (local.get $$shl291$i) - ) - ) - (local.set $$tobool293$i - (i32.eq - (local.get $$and292$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool293$i) - (block - (local.set $$or297$i - (i32.or - (local.get $$82) - (local.get $$shl291$i) - ) - ) - (i32.store - (i32.const 176) - (local.get $$or297$i) - ) - (local.set $$$pre$i$177 - (i32.add - (local.get $$arrayidx289$i) - (i32.const 8) - ) - ) - (local.set $$$pre$phi$i$178Z2D - (local.get $$$pre$i$177) - ) - (local.set $$F290$0$i - (local.get $$arrayidx289$i) - ) - ) - (block - (local.set $$83 - (i32.add - (local.get $$arrayidx289$i) - (i32.const 8) - ) - ) - (local.set $$84 - (i32.load - (local.get $$83) - ) - ) - (local.set $$85 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp301$i - (i32.lt_u - (local.get $$84) - (local.get $$85) - ) - ) - (if - (local.get $$cmp301$i) - (call $_abort) - (block - (local.set $$$pre$phi$i$178Z2D - (local.get $$83) - ) - (local.set $$F290$0$i - (local.get $$84) - ) - ) - ) - ) - ) - (i32.store - (local.get $$$pre$phi$i$178Z2D) - (local.get $$add$ptr$i$161) - ) - (local.set $$bk311$i - (i32.add - (local.get $$F290$0$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk311$i) - (local.get $$add$ptr$i$161) - ) - (local.set $$fd312$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd312$i) - (local.get $$F290$0$i) - ) - (local.set $$bk313$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk313$i) - (local.get $$arrayidx289$i) - ) - (br $do-once25) - ) - ) - (local.set $$shr318$i - (i32.shr_u - (local.get $$rsize$4$lcssa$i) - (i32.const 8) - ) - ) - (local.set $$cmp319$i - (i32.eq - (local.get $$shr318$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp319$i) - (local.set $$I316$0$i - (i32.const 0) - ) - (block - (local.set $$cmp323$i - (i32.gt_u - (local.get $$rsize$4$lcssa$i) - (i32.const 16777215) - ) - ) - (if - (local.get $$cmp323$i) - (local.set $$I316$0$i - (i32.const 31) - ) - (block - (local.set $$sub329$i - (i32.add - (local.get $$shr318$i) - (i32.const 1048320) - ) - ) - (local.set $$shr330$i - (i32.shr_u - (local.get $$sub329$i) - (i32.const 16) - ) - ) - (local.set $$and331$i - (i32.and - (local.get $$shr330$i) - (i32.const 8) - ) - ) - (local.set $$shl333$i - (i32.shl - (local.get $$shr318$i) - (local.get $$and331$i) - ) - ) - (local.set $$sub334$i - (i32.add - (local.get $$shl333$i) - (i32.const 520192) - ) - ) - (local.set $$shr335$i - (i32.shr_u - (local.get $$sub334$i) - (i32.const 16) - ) - ) - (local.set $$and336$i - (i32.and - (local.get $$shr335$i) - (i32.const 4) - ) - ) - (local.set $$add337$i - (i32.or - (local.get $$and336$i) - (local.get $$and331$i) - ) - ) - (local.set $$shl338$i - (i32.shl - (local.get $$shl333$i) - (local.get $$and336$i) - ) - ) - (local.set $$sub339$i - (i32.add - (local.get $$shl338$i) - (i32.const 245760) - ) - ) - (local.set $$shr340$i - (i32.shr_u - (local.get $$sub339$i) - (i32.const 16) - ) - ) - (local.set $$and341$i - (i32.and - (local.get $$shr340$i) - (i32.const 2) - ) - ) - (local.set $$add342$i - (i32.or - (local.get $$add337$i) - (local.get $$and341$i) - ) - ) - (local.set $$sub343$i - (i32.sub - (i32.const 14) - (local.get $$add342$i) - ) - ) - (local.set $$shl344$i - (i32.shl - (local.get $$shl338$i) - (local.get $$and341$i) - ) - ) - (local.set $$shr345$i - (i32.shr_u - (local.get $$shl344$i) - (i32.const 15) - ) - ) - (local.set $$add346$i - (i32.add - (local.get $$sub343$i) - (local.get $$shr345$i) - ) - ) - (local.set $$shl347$i - (i32.shl - (local.get $$add346$i) - (i32.const 1) - ) - ) - (local.set $$add348$i - (i32.add - (local.get $$add346$i) - (i32.const 7) - ) - ) - (local.set $$shr349$i - (i32.shr_u - (local.get $$rsize$4$lcssa$i) - (local.get $$add348$i) - ) - ) - (local.set $$and350$i - (i32.and - (local.get $$shr349$i) - (i32.const 1) - ) - ) - (local.set $$add351$i - (i32.or - (local.get $$and350$i) - (local.get $$shl347$i) - ) - ) - (local.set $$I316$0$i - (local.get $$add351$i) - ) - ) - ) - ) - ) - (local.set $$arrayidx355$i - (i32.add - (i32.const 480) - (i32.shl - (local.get $$I316$0$i) - (i32.const 2) - ) - ) - ) - (local.set $$index356$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 28) - ) - ) - (i32.store - (local.get $$index356$i) - (local.get $$I316$0$i) - ) - (local.set $$child357$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 16) - ) - ) - (local.set $$arrayidx358$i - (i32.add - (local.get $$child357$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$arrayidx358$i) - (i32.const 0) - ) - (i32.store - (local.get $$child357$i) - (i32.const 0) - ) - (local.set $$86 - (i32.load - (i32.const 180) - ) - ) - (local.set $$shl362$i - (i32.shl - (i32.const 1) - (local.get $$I316$0$i) - ) - ) - (local.set $$and363$i - (i32.and - (local.get $$86) - (local.get $$shl362$i) - ) - ) - (local.set $$tobool364$i - (i32.eq - (local.get $$and363$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool364$i) - (block - (local.set $$or368$i - (i32.or - (local.get $$86) - (local.get $$shl362$i) - ) - ) - (i32.store - (i32.const 180) - (local.get $$or368$i) - ) - (i32.store - (local.get $$arrayidx355$i) - (local.get $$add$ptr$i$161) - ) - (local.set $$parent369$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent369$i) - (local.get $$arrayidx355$i) - ) - (local.set $$bk370$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk370$i) - (local.get $$add$ptr$i$161) - ) - (local.set $$fd371$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd371$i) - (local.get $$add$ptr$i$161) - ) - (br $do-once25) - ) - ) - (local.set $$87 - (i32.load - (local.get $$arrayidx355$i) - ) - ) - (local.set $$cmp374$i - (i32.eq - (local.get $$I316$0$i) - (i32.const 31) - ) - ) - (local.set $$shr378$i - (i32.shr_u - (local.get $$I316$0$i) - (i32.const 1) - ) - ) - (local.set $$sub381$i - (i32.sub - (i32.const 25) - (local.get $$shr378$i) - ) - ) - (local.set $$cond383$i - (if (result i32) - (local.get $$cmp374$i) - (i32.const 0) - (local.get $$sub381$i) - ) - ) - (local.set $$shl384$i - (i32.shl - (local.get $$rsize$4$lcssa$i) - (local.get $$cond383$i) - ) - ) - (local.set $$K373$0$i - (local.get $$shl384$i) - ) - (local.set $$T$0$i - (local.get $$87) - ) - (loop $while-in28 - (block $while-out27 - (local.set $$head386$i - (i32.add - (local.get $$T$0$i) - (i32.const 4) - ) - ) - (local.set $$88 - (i32.load - (local.get $$head386$i) - ) - ) - (local.set $$and387$i - (i32.and - (local.get $$88) - (i32.const -8) - ) - ) - (local.set $$cmp388$i - (i32.eq - (local.get $$and387$i) - (local.get $$rsize$4$lcssa$i) - ) - ) - (if - (local.get $$cmp388$i) - (block - (local.set $$T$0$i$lcssa - (local.get $$T$0$i) - ) - (local.set $label - (i32.const 148) - ) - (br $while-out27) - ) - ) - (local.set $$shr391$i - (i32.shr_u - (local.get $$K373$0$i) - (i32.const 31) - ) - ) - (local.set $$arrayidx394$i - (i32.add - (i32.add - (local.get $$T$0$i) - (i32.const 16) - ) - (i32.shl - (local.get $$shr391$i) - (i32.const 2) - ) - ) - ) - (local.set $$shl395$i - (i32.shl - (local.get $$K373$0$i) - (i32.const 1) - ) - ) - (local.set $$89 - (i32.load - (local.get $$arrayidx394$i) - ) - ) - (local.set $$cmp396$i - (i32.eq - (local.get $$89) - (i32.const 0) - ) - ) - (if - (local.get $$cmp396$i) - (block - (local.set $$T$0$i$lcssa293 - (local.get $$T$0$i) - ) - (local.set $$arrayidx394$i$lcssa - (local.get $$arrayidx394$i) - ) - (local.set $label - (i32.const 145) - ) - (br $while-out27) - ) - (block - (local.set $$K373$0$i - (local.get $$shl395$i) - ) - (local.set $$T$0$i - (local.get $$89) - ) - ) - ) - (br $while-in28) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 145) - ) - (block - (local.set $$90 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp401$i - (i32.lt_u - (local.get $$arrayidx394$i$lcssa) - (local.get $$90) - ) - ) - (if - (local.get $$cmp401$i) - (call $_abort) - (block - (i32.store - (local.get $$arrayidx394$i$lcssa) - (local.get $$add$ptr$i$161) - ) - (local.set $$parent406$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent406$i) - (local.get $$T$0$i$lcssa293) - ) - (local.set $$bk407$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk407$i) - (local.get $$add$ptr$i$161) - ) - (local.set $$fd408$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd408$i) - (local.get $$add$ptr$i$161) - ) - (br $do-once25) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 148) - ) - (block - (local.set $$fd416$i - (i32.add - (local.get $$T$0$i$lcssa) - (i32.const 8) - ) - ) - (local.set $$91 - (i32.load - (local.get $$fd416$i) - ) - ) - (local.set $$92 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp422$i - (i32.ge_u - (local.get $$91) - (local.get $$92) - ) - ) - (local.set $$not$cmp418$i - (i32.ge_u - (local.get $$T$0$i$lcssa) - (local.get $$92) - ) - ) - (local.set $$93 - (i32.and - (local.get $$cmp422$i) - (local.get $$not$cmp418$i) - ) - ) - (if - (local.get $$93) - (block - (local.set $$bk429$i - (i32.add - (local.get $$91) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk429$i) - (local.get $$add$ptr$i$161) - ) - (i32.store - (local.get $$fd416$i) - (local.get $$add$ptr$i$161) - ) - (local.set $$fd431$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd431$i) - (local.get $$91) - ) - (local.set $$bk432$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk432$i) - (local.get $$T$0$i$lcssa) - ) - (local.set $$parent433$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent433$i) - (i32.const 0) - ) - (br $do-once25) - ) - (call $_abort) - ) - ) - ) - ) - ) - ) - ) - (local.set $$add$ptr441$i - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 8) - ) - ) - (local.set $$retval$0 - (local.get $$add$ptr441$i) - ) - (return - (local.get $$retval$0) - ) - ) - (local.set $$nb$0 - (local.get $$and145) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (local.set $$94 - (i32.load - (i32.const 184) - ) - ) - (local.set $$cmp156 - (i32.lt_u - (local.get $$94) - (local.get $$nb$0) - ) - ) - (if - (i32.eqz - (local.get $$cmp156) - ) - (block - (local.set $$sub160 - (i32.sub - (local.get $$94) - (local.get $$nb$0) - ) - ) - (local.set $$95 - (i32.load - (i32.const 196) - ) - ) - (local.set $$cmp162 - (i32.gt_u - (local.get $$sub160) - (i32.const 15) - ) - ) - (if - (local.get $$cmp162) - (block - (local.set $$add$ptr166 - (i32.add - (local.get $$95) - (local.get $$nb$0) - ) - ) - (i32.store - (i32.const 196) - (local.get $$add$ptr166) - ) - (i32.store - (i32.const 184) - (local.get $$sub160) - ) - (local.set $$or167 - (i32.or - (local.get $$sub160) - (i32.const 1) - ) - ) - (local.set $$head168 - (i32.add - (local.get $$add$ptr166) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head168) - (local.get $$or167) - ) - (local.set $$add$ptr169 - (i32.add - (local.get $$add$ptr166) - (local.get $$sub160) - ) - ) - (i32.store - (local.get $$add$ptr169) - (local.get $$sub160) - ) - (local.set $$or172 - (i32.or - (local.get $$nb$0) - (i32.const 3) - ) - ) - (local.set $$head173 - (i32.add - (local.get $$95) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head173) - (local.get $$or172) - ) - ) - (block - (i32.store - (i32.const 184) - (i32.const 0) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (local.set $$or176 - (i32.or - (local.get $$94) - (i32.const 3) - ) - ) - (local.set $$head177 - (i32.add - (local.get $$95) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head177) - (local.get $$or176) - ) - (local.set $$add$ptr178 - (i32.add - (local.get $$95) - (local.get $$94) - ) - ) - (local.set $$head179 - (i32.add - (local.get $$add$ptr178) - (i32.const 4) - ) - ) - (local.set $$96 - (i32.load - (local.get $$head179) - ) - ) - (local.set $$or180 - (i32.or - (local.get $$96) - (i32.const 1) - ) - ) - (i32.store - (local.get $$head179) - (local.get $$or180) - ) - ) - ) - (local.set $$add$ptr182 - (i32.add - (local.get $$95) - (i32.const 8) - ) - ) - (local.set $$retval$0 - (local.get $$add$ptr182) - ) - (return - (local.get $$retval$0) - ) - ) - ) - (local.set $$97 - (i32.load - (i32.const 188) - ) - ) - (local.set $$cmp186 - (i32.gt_u - (local.get $$97) - (local.get $$nb$0) - ) - ) - (if - (local.get $$cmp186) - (block - (local.set $$sub190 - (i32.sub - (local.get $$97) - (local.get $$nb$0) - ) - ) - (i32.store - (i32.const 188) - (local.get $$sub190) - ) - (local.set $$98 - (i32.load - (i32.const 200) - ) - ) - (local.set $$add$ptr193 - (i32.add - (local.get $$98) - (local.get $$nb$0) - ) - ) - (i32.store - (i32.const 200) - (local.get $$add$ptr193) - ) - (local.set $$or194 - (i32.or - (local.get $$sub190) - (i32.const 1) - ) - ) - (local.set $$head195 - (i32.add - (local.get $$add$ptr193) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head195) - (local.get $$or194) - ) - (local.set $$or197 - (i32.or - (local.get $$nb$0) - (i32.const 3) - ) - ) - (local.set $$head198 - (i32.add - (local.get $$98) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head198) - (local.get $$or197) - ) - (local.set $$add$ptr199 - (i32.add - (local.get $$98) - (i32.const 8) - ) - ) - (local.set $$retval$0 - (local.get $$add$ptr199) - ) - (return - (local.get $$retval$0) - ) - ) - ) - (local.set $$99 - (i32.load - (i32.const 648) - ) - ) - (local.set $$cmp$i$179 - (i32.eq - (local.get $$99) - (i32.const 0) - ) - ) - (block $do-once29 - (if - (local.get $$cmp$i$179) - (block - (local.set $$call$i$i - (call $_sysconf - (i32.const 30) - ) - ) - (local.set $$sub$i$i - (i32.add - (local.get $$call$i$i) - (i32.const -1) - ) - ) - (local.set $$and$i$i - (i32.and - (local.get $$sub$i$i) - (local.get $$call$i$i) - ) - ) - (local.set $$cmp1$i$i - (i32.eq - (local.get $$and$i$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp1$i$i) - (block - (i32.store - (i32.const 656) - (local.get $$call$i$i) - ) - (i32.store - (i32.const 652) - (local.get $$call$i$i) - ) - (i32.store - (i32.const 660) - (i32.const -1) - ) - (i32.store - (i32.const 664) - (i32.const -1) - ) - (i32.store - (i32.const 668) - (i32.const 0) - ) - (i32.store - (i32.const 620) - (i32.const 0) - ) - (local.set $$call6$i$i - (call $_time - (i32.const 0) - ) - ) - (local.set $$xor$i$i - (i32.and - (local.get $$call6$i$i) - (i32.const -16) - ) - ) - (local.set $$and7$i$i - (i32.xor - (local.get $$xor$i$i) - (i32.const 1431655768) - ) - ) - (i32.store - (i32.const 648) - (local.get $$and7$i$i) - ) - (br $do-once29) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$add$i$180 - (i32.add - (local.get $$nb$0) - (i32.const 48) - ) - ) - (local.set $$100 - (i32.load - (i32.const 656) - ) - ) - (local.set $$sub$i$181 - (i32.add - (local.get $$nb$0) - (i32.const 47) - ) - ) - (local.set $$add9$i - (i32.add - (local.get $$100) - (local.get $$sub$i$181) - ) - ) - (local.set $$neg$i$182 - (i32.sub - (i32.const 0) - (local.get $$100) - ) - ) - (local.set $$and11$i - (i32.and - (local.get $$add9$i) - (local.get $$neg$i$182) - ) - ) - (local.set $$cmp12$i - (i32.gt_u - (local.get $$and11$i) - (local.get $$nb$0) - ) - ) - (if - (i32.eqz - (local.get $$cmp12$i) - ) - (block - (local.set $$retval$0 - (i32.const 0) - ) - (return - (local.get $$retval$0) - ) - ) - ) - (local.set $$101 - (i32.load - (i32.const 616) - ) - ) - (local.set $$cmp15$i - (i32.eq - (local.get $$101) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp15$i) - ) - (block - (local.set $$102 - (i32.load - (i32.const 608) - ) - ) - (local.set $$add17$i$183 - (i32.add - (local.get $$102) - (local.get $$and11$i) - ) - ) - (local.set $$cmp19$i - (i32.le_u - (local.get $$add17$i$183) - (local.get $$102) - ) - ) - (local.set $$cmp21$i - (i32.gt_u - (local.get $$add17$i$183) - (local.get $$101) - ) - ) - (local.set $$or$cond1$i$184 - (i32.or - (local.get $$cmp19$i) - (local.get $$cmp21$i) - ) - ) - (if - (local.get $$or$cond1$i$184) - (block - (local.set $$retval$0 - (i32.const 0) - ) - (return - (local.get $$retval$0) - ) - ) - ) - ) - ) - (local.set $$103 - (i32.load - (i32.const 620) - ) - ) - (local.set $$and29$i - (i32.and - (local.get $$103) - (i32.const 4) - ) - ) - (local.set $$tobool30$i - (i32.eq - (local.get $$and29$i) - (i32.const 0) - ) - ) - (block $label$break$L257 - (if - (local.get $$tobool30$i) - (block - (local.set $$104 - (i32.load - (i32.const 200) - ) - ) - (local.set $$cmp32$i$185 - (i32.eq - (local.get $$104) - (i32.const 0) - ) - ) - (block $label$break$L259 - (if - (local.get $$cmp32$i$185) - (local.set $label - (i32.const 173) - ) - (block - (local.set $$sp$0$i$i - (i32.const 624) - ) - (loop $while-in34 - (block $while-out33 - (local.set $$105 - (i32.load - (local.get $$sp$0$i$i) - ) - ) - (local.set $$cmp$i$9$i - (i32.gt_u - (local.get $$105) - (local.get $$104) - ) - ) - (if - (i32.eqz - (local.get $$cmp$i$9$i) - ) - (block - (local.set $$size$i$i - (i32.add - (local.get $$sp$0$i$i) - (i32.const 4) - ) - ) - (local.set $$106 - (i32.load - (local.get $$size$i$i) - ) - ) - (local.set $$add$ptr$i$i - (i32.add - (local.get $$105) - (local.get $$106) - ) - ) - (local.set $$cmp2$i$i - (i32.gt_u - (local.get $$add$ptr$i$i) - (local.get $$104) - ) - ) - (if - (local.get $$cmp2$i$i) - (block - (local.set $$base$i$i$lcssa - (local.get $$sp$0$i$i) - ) - (local.set $$size$i$i$lcssa - (local.get $$size$i$i) - ) - (br $while-out33) - ) - ) - ) - ) - (local.set $$next$i$i - (i32.add - (local.get $$sp$0$i$i) - (i32.const 8) - ) - ) - (local.set $$107 - (i32.load - (local.get $$next$i$i) - ) - ) - (local.set $$cmp3$i$i - (i32.eq - (local.get $$107) - (i32.const 0) - ) - ) - (if - (local.get $$cmp3$i$i) - (block - (local.set $label - (i32.const 173) - ) - (br $label$break$L259) - ) - (local.set $$sp$0$i$i - (local.get $$107) - ) - ) - (br $while-in34) - ) - ) - (local.set $$112 - (i32.load - (i32.const 188) - ) - ) - (local.set $$add77$i - (i32.sub - (local.get $$add9$i) - (local.get $$112) - ) - ) - (local.set $$and80$i - (i32.and - (local.get $$add77$i) - (local.get $$neg$i$182) - ) - ) - (local.set $$cmp81$i$191 - (i32.lt_u - (local.get $$and80$i) - (i32.const 2147483647) - ) - ) - (if - (local.get $$cmp81$i$191) - (block - (local.set $$call83$i - (call $_sbrk - (local.get $$and80$i) - ) - ) - (local.set $$113 - (i32.load - (local.get $$base$i$i$lcssa) - ) - ) - (local.set $$114 - (i32.load - (local.get $$size$i$i$lcssa) - ) - ) - (local.set $$add$ptr$i$193 - (i32.add - (local.get $$113) - (local.get $$114) - ) - ) - (local.set $$cmp85$i - (i32.eq - (local.get $$call83$i) - (local.get $$add$ptr$i$193) - ) - ) - (if - (local.get $$cmp85$i) - (block - (local.set $$cmp89$i - (i32.eq - (local.get $$call83$i) - (i32.const -1) - ) - ) - (if - (i32.eqz - (local.get $$cmp89$i) - ) - (block - (local.set $$tbase$796$i - (local.get $$call83$i) - ) - (local.set $$tsize$795$i - (local.get $$and80$i) - ) - (local.set $label - (i32.const 193) - ) - (br $label$break$L257) - ) - ) - ) - (block - (local.set $$br$2$ph$i - (local.get $$call83$i) - ) - (local.set $$ssize$2$ph$i - (local.get $$and80$i) - ) - (local.set $label - (i32.const 183) - ) - ) - ) - ) - ) - ) - ) - ) - (block $do-once35 - (if - (i32.eq - (local.get $label) - (i32.const 173) - ) - (block - (local.set $$call37$i - (call $_sbrk - (i32.const 0) - ) - ) - (local.set $$cmp38$i - (i32.eq - (local.get $$call37$i) - (i32.const -1) - ) - ) - (if - (i32.eqz - (local.get $$cmp38$i) - ) - (block - (local.set $$108 - (local.get $$call37$i) - ) - (local.set $$109 - (i32.load - (i32.const 652) - ) - ) - (local.set $$sub41$i - (i32.add - (local.get $$109) - (i32.const -1) - ) - ) - (local.set $$and42$i - (i32.and - (local.get $$sub41$i) - (local.get $$108) - ) - ) - (local.set $$cmp43$i - (i32.eq - (local.get $$and42$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp43$i) - (local.set $$ssize$0$i - (local.get $$and11$i) - ) - (block - (local.set $$add46$i - (i32.add - (local.get $$sub41$i) - (local.get $$108) - ) - ) - (local.set $$neg48$i - (i32.sub - (i32.const 0) - (local.get $$109) - ) - ) - (local.set $$and49$i - (i32.and - (local.get $$add46$i) - (local.get $$neg48$i) - ) - ) - (local.set $$sub50$i - (i32.sub - (local.get $$and11$i) - (local.get $$108) - ) - ) - (local.set $$add51$i - (i32.add - (local.get $$sub50$i) - (local.get $$and49$i) - ) - ) - (local.set $$ssize$0$i - (local.get $$add51$i) - ) - ) - ) - (local.set $$110 - (i32.load - (i32.const 608) - ) - ) - (local.set $$add54$i - (i32.add - (local.get $$110) - (local.get $$ssize$0$i) - ) - ) - (local.set $$cmp55$i$187 - (i32.gt_u - (local.get $$ssize$0$i) - (local.get $$nb$0) - ) - ) - (local.set $$cmp57$i$188 - (i32.lt_u - (local.get $$ssize$0$i) - (i32.const 2147483647) - ) - ) - (local.set $$or$cond$i$189 - (i32.and - (local.get $$cmp55$i$187) - (local.get $$cmp57$i$188) - ) - ) - (if - (local.get $$or$cond$i$189) - (block - (local.set $$111 - (i32.load - (i32.const 616) - ) - ) - (local.set $$cmp60$i - (i32.eq - (local.get $$111) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp60$i) - ) - (block - (local.set $$cmp63$i - (i32.le_u - (local.get $$add54$i) - (local.get $$110) - ) - ) - (local.set $$cmp66$i$190 - (i32.gt_u - (local.get $$add54$i) - (local.get $$111) - ) - ) - (local.set $$or$cond2$i - (i32.or - (local.get $$cmp63$i) - (local.get $$cmp66$i$190) - ) - ) - (if - (local.get $$or$cond2$i) - (br $do-once35) - ) - ) - ) - (local.set $$call68$i - (call $_sbrk - (local.get $$ssize$0$i) - ) - ) - (local.set $$cmp69$i - (i32.eq - (local.get $$call68$i) - (local.get $$call37$i) - ) - ) - (if - (local.get $$cmp69$i) - (block - (local.set $$tbase$796$i - (local.get $$call37$i) - ) - (local.set $$tsize$795$i - (local.get $$ssize$0$i) - ) - (local.set $label - (i32.const 193) - ) - (br $label$break$L257) - ) - (block - (local.set $$br$2$ph$i - (local.get $$call68$i) - ) - (local.set $$ssize$2$ph$i - (local.get $$ssize$0$i) - ) - (local.set $label - (i32.const 183) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (block $label$break$L279 - (if - (i32.eq - (local.get $label) - (i32.const 183) - ) - (block - (local.set $$sub112$i - (i32.sub - (i32.const 0) - (local.get $$ssize$2$ph$i) - ) - ) - (local.set $$cmp91$i - (i32.ne - (local.get $$br$2$ph$i) - (i32.const -1) - ) - ) - (local.set $$cmp93$i - (i32.lt_u - (local.get $$ssize$2$ph$i) - (i32.const 2147483647) - ) - ) - (local.set $$or$cond5$i - (i32.and - (local.get $$cmp93$i) - (local.get $$cmp91$i) - ) - ) - (local.set $$cmp96$i - (i32.gt_u - (local.get $$add$i$180) - (local.get $$ssize$2$ph$i) - ) - ) - (local.set $$or$cond3$i - (i32.and - (local.get $$cmp96$i) - (local.get $$or$cond5$i) - ) - ) - (block $do-once38 - (if - (local.get $$or$cond3$i) - (block - (local.set $$115 - (i32.load - (i32.const 656) - ) - ) - (local.set $$sub99$i - (i32.sub - (local.get $$sub$i$181) - (local.get $$ssize$2$ph$i) - ) - ) - (local.set $$add101$i - (i32.add - (local.get $$sub99$i) - (local.get $$115) - ) - ) - (local.set $$neg103$i - (i32.sub - (i32.const 0) - (local.get $$115) - ) - ) - (local.set $$and104$i - (i32.and - (local.get $$add101$i) - (local.get $$neg103$i) - ) - ) - (local.set $$cmp105$i - (i32.lt_u - (local.get $$and104$i) - (i32.const 2147483647) - ) - ) - (if - (local.get $$cmp105$i) - (block - (local.set $$call107$i - (call $_sbrk - (local.get $$and104$i) - ) - ) - (local.set $$cmp108$i - (i32.eq - (local.get $$call107$i) - (i32.const -1) - ) - ) - (if - (local.get $$cmp108$i) - (block - (drop - (call $_sbrk - (local.get $$sub112$i) - ) - ) - (br $label$break$L279) - ) - (block - (local.set $$add110$i - (i32.add - (local.get $$and104$i) - (local.get $$ssize$2$ph$i) - ) - ) - (local.set $$ssize$5$i - (local.get $$add110$i) - ) - (br $do-once38) - ) - ) - ) - (local.set $$ssize$5$i - (local.get $$ssize$2$ph$i) - ) - ) - ) - (local.set $$ssize$5$i - (local.get $$ssize$2$ph$i) - ) - ) - ) - (local.set $$cmp118$i - (i32.eq - (local.get $$br$2$ph$i) - (i32.const -1) - ) - ) - (if - (i32.eqz - (local.get $$cmp118$i) - ) - (block - (local.set $$tbase$796$i - (local.get $$br$2$ph$i) - ) - (local.set $$tsize$795$i - (local.get $$ssize$5$i) - ) - (local.set $label - (i32.const 193) - ) - (br $label$break$L257) - ) - ) - ) - ) - ) - (local.set $$116 - (i32.load - (i32.const 620) - ) - ) - (local.set $$or$i$195 - (i32.or - (local.get $$116) - (i32.const 4) - ) - ) - (i32.store - (i32.const 620) - (local.get $$or$i$195) - ) - (local.set $label - (i32.const 190) - ) - ) - (local.set $label - (i32.const 190) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 190) - ) - (block - (local.set $$cmp127$i - (i32.lt_u - (local.get $$and11$i) - (i32.const 2147483647) - ) - ) - (if - (local.get $$cmp127$i) - (block - (local.set $$call131$i - (call $_sbrk - (local.get $$and11$i) - ) - ) - (local.set $$call132$i - (call $_sbrk - (i32.const 0) - ) - ) - (local.set $$cmp133$i$196 - (i32.ne - (local.get $$call131$i) - (i32.const -1) - ) - ) - (local.set $$cmp135$i - (i32.ne - (local.get $$call132$i) - (i32.const -1) - ) - ) - (local.set $$or$cond4$i - (i32.and - (local.get $$cmp133$i$196) - (local.get $$cmp135$i) - ) - ) - (local.set $$cmp137$i$197 - (i32.lt_u - (local.get $$call131$i) - (local.get $$call132$i) - ) - ) - (local.set $$or$cond7$i - (i32.and - (local.get $$cmp137$i$197) - (local.get $$or$cond4$i) - ) - ) - (if - (local.get $$or$cond7$i) - (block - (local.set $$sub$ptr$lhs$cast$i - (local.get $$call132$i) - ) - (local.set $$sub$ptr$rhs$cast$i - (local.get $$call131$i) - ) - (local.set $$sub$ptr$sub$i - (i32.sub - (local.get $$sub$ptr$lhs$cast$i) - (local.get $$sub$ptr$rhs$cast$i) - ) - ) - (local.set $$add140$i - (i32.add - (local.get $$nb$0) - (i32.const 40) - ) - ) - (local.set $$cmp141$not$i - (i32.gt_u - (local.get $$sub$ptr$sub$i) - (local.get $$add140$i) - ) - ) - (if - (local.get $$cmp141$not$i) - (block - (local.set $$tbase$796$i - (local.get $$call131$i) - ) - (local.set $$tsize$795$i - (local.get $$sub$ptr$sub$i) - ) - (local.set $label - (i32.const 193) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 193) - ) - (block - (local.set $$117 - (i32.load - (i32.const 608) - ) - ) - (local.set $$add150$i - (i32.add - (local.get $$117) - (local.get $$tsize$795$i) - ) - ) - (i32.store - (i32.const 608) - (local.get $$add150$i) - ) - (local.set $$118 - (i32.load - (i32.const 612) - ) - ) - (local.set $$cmp151$i - (i32.gt_u - (local.get $$add150$i) - (local.get $$118) - ) - ) - (if - (local.get $$cmp151$i) - (i32.store - (i32.const 612) - (local.get $$add150$i) - ) - ) - (local.set $$119 - (i32.load - (i32.const 200) - ) - ) - (local.set $$cmp157$i - (i32.eq - (local.get $$119) - (i32.const 0) - ) - ) - (block $do-once40 - (if - (local.get $$cmp157$i) - (block - (local.set $$120 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp159$i$199 - (i32.eq - (local.get $$120) - (i32.const 0) - ) - ) - (local.set $$cmp162$i$200 - (i32.lt_u - (local.get $$tbase$796$i) - (local.get $$120) - ) - ) - (local.set $$or$cond8$i - (i32.or - (local.get $$cmp159$i$199) - (local.get $$cmp162$i$200) - ) - ) - (if - (local.get $$or$cond8$i) - (i32.store - (i32.const 192) - (local.get $$tbase$796$i) - ) - ) - (i32.store - (i32.const 624) - (local.get $$tbase$796$i) - ) - (i32.store - (i32.const 628) - (local.get $$tsize$795$i) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (local.set $$121 - (i32.load - (i32.const 648) - ) - ) - (i32.store - (i32.const 212) - (local.get $$121) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - (local.set $$i$01$i$i - (i32.const 0) - ) - (loop $while-in43 - (block $while-out42 - (local.set $$shl$i$i - (i32.shl - (local.get $$i$01$i$i) - (i32.const 1) - ) - ) - (local.set $$arrayidx$i$i - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl$i$i) - (i32.const 2) - ) - ) - ) - (local.set $$122 - (i32.add - (local.get $$arrayidx$i$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$122) - (local.get $$arrayidx$i$i) - ) - (local.set $$123 - (i32.add - (local.get $$arrayidx$i$i) - (i32.const 8) - ) - ) - (i32.store - (local.get $$123) - (local.get $$arrayidx$i$i) - ) - (local.set $$inc$i$i - (i32.add - (local.get $$i$01$i$i) - (i32.const 1) - ) - ) - (local.set $$exitcond$i$i - (i32.eq - (local.get $$inc$i$i) - (i32.const 32) - ) - ) - (if - (local.get $$exitcond$i$i) - (br $while-out42) - (local.set $$i$01$i$i - (local.get $$inc$i$i) - ) - ) - (br $while-in43) - ) - ) - (local.set $$sub172$i - (i32.add - (local.get $$tsize$795$i) - (i32.const -40) - ) - ) - (local.set $$add$ptr$i$11$i - (i32.add - (local.get $$tbase$796$i) - (i32.const 8) - ) - ) - (local.set $$124 - (local.get $$add$ptr$i$11$i) - ) - (local.set $$and$i$12$i - (i32.and - (local.get $$124) - (i32.const 7) - ) - ) - (local.set $$cmp$i$13$i - (i32.eq - (local.get $$and$i$12$i) - (i32.const 0) - ) - ) - (local.set $$125 - (i32.sub - (i32.const 0) - (local.get $$124) - ) - ) - (local.set $$and3$i$i - (i32.and - (local.get $$125) - (i32.const 7) - ) - ) - (local.set $$cond$i$i - (if (result i32) - (local.get $$cmp$i$13$i) - (i32.const 0) - (local.get $$and3$i$i) - ) - ) - (local.set $$add$ptr4$i$i - (i32.add - (local.get $$tbase$796$i) - (local.get $$cond$i$i) - ) - ) - (local.set $$sub5$i$i - (i32.sub - (local.get $$sub172$i) - (local.get $$cond$i$i) - ) - ) - (i32.store - (i32.const 200) - (local.get $$add$ptr4$i$i) - ) - (i32.store - (i32.const 188) - (local.get $$sub5$i$i) - ) - (local.set $$or$i$i - (i32.or - (local.get $$sub5$i$i) - (i32.const 1) - ) - ) - (local.set $$head$i$i - (i32.add - (local.get $$add$ptr4$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head$i$i) - (local.get $$or$i$i) - ) - (local.set $$add$ptr6$i$i - (i32.add - (local.get $$add$ptr4$i$i) - (local.get $$sub5$i$i) - ) - ) - (local.set $$head7$i$i - (i32.add - (local.get $$add$ptr6$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head7$i$i) - (i32.const 40) - ) - (local.set $$126 - (i32.load - (i32.const 664) - ) - ) - (i32.store - (i32.const 204) - (local.get $$126) - ) - ) - (block - (local.set $$sp$0108$i - (i32.const 624) - ) - (loop $while-in45 - (block $while-out44 - (local.set $$127 - (i32.load - (local.get $$sp$0108$i) - ) - ) - (local.set $$size188$i - (i32.add - (local.get $$sp$0108$i) - (i32.const 4) - ) - ) - (local.set $$128 - (i32.load - (local.get $$size188$i) - ) - ) - (local.set $$add$ptr189$i - (i32.add - (local.get $$127) - (local.get $$128) - ) - ) - (local.set $$cmp190$i - (i32.eq - (local.get $$tbase$796$i) - (local.get $$add$ptr189$i) - ) - ) - (if - (local.get $$cmp190$i) - (block - (local.set $$$lcssa - (local.get $$127) - ) - (local.set $$$lcssa290 - (local.get $$128) - ) - (local.set $$size188$i$lcssa - (local.get $$size188$i) - ) - (local.set $$sp$0108$i$lcssa - (local.get $$sp$0108$i) - ) - (local.set $label - (i32.const 203) - ) - (br $while-out44) - ) - ) - (local.set $$next$i - (i32.add - (local.get $$sp$0108$i) - (i32.const 8) - ) - ) - (local.set $$129 - (i32.load - (local.get $$next$i) - ) - ) - (local.set $$cmp186$i - (i32.eq - (local.get $$129) - (i32.const 0) - ) - ) - (if - (local.get $$cmp186$i) - (br $while-out44) - (local.set $$sp$0108$i - (local.get $$129) - ) - ) - (br $while-in45) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 203) - ) - (block - (local.set $$sflags193$i - (i32.add - (local.get $$sp$0108$i$lcssa) - (i32.const 12) - ) - ) - (local.set $$130 - (i32.load - (local.get $$sflags193$i) - ) - ) - (local.set $$and194$i$204 - (i32.and - (local.get $$130) - (i32.const 8) - ) - ) - (local.set $$tobool195$i - (i32.eq - (local.get $$and194$i$204) - (i32.const 0) - ) - ) - (if - (local.get $$tobool195$i) - (block - (local.set $$cmp203$i - (i32.ge_u - (local.get $$119) - (local.get $$$lcssa) - ) - ) - (local.set $$cmp209$i - (i32.lt_u - (local.get $$119) - (local.get $$tbase$796$i) - ) - ) - (local.set $$or$cond98$i - (i32.and - (local.get $$cmp209$i) - (local.get $$cmp203$i) - ) - ) - (if - (local.get $$or$cond98$i) - (block - (local.set $$add212$i - (i32.add - (local.get $$$lcssa290) - (local.get $$tsize$795$i) - ) - ) - (i32.store - (local.get $$size188$i$lcssa) - (local.get $$add212$i) - ) - (local.set $$131 - (i32.load - (i32.const 188) - ) - ) - (local.set $$add$ptr$i$21$i - (i32.add - (local.get $$119) - (i32.const 8) - ) - ) - (local.set $$132 - (local.get $$add$ptr$i$21$i) - ) - (local.set $$and$i$22$i - (i32.and - (local.get $$132) - (i32.const 7) - ) - ) - (local.set $$cmp$i$23$i - (i32.eq - (local.get $$and$i$22$i) - (i32.const 0) - ) - ) - (local.set $$133 - (i32.sub - (i32.const 0) - (local.get $$132) - ) - ) - (local.set $$and3$i$24$i - (i32.and - (local.get $$133) - (i32.const 7) - ) - ) - (local.set $$cond$i$25$i - (if (result i32) - (local.get $$cmp$i$23$i) - (i32.const 0) - (local.get $$and3$i$24$i) - ) - ) - (local.set $$add$ptr4$i$26$i - (i32.add - (local.get $$119) - (local.get $$cond$i$25$i) - ) - ) - (local.set $$add215$i - (i32.sub - (local.get $$tsize$795$i) - (local.get $$cond$i$25$i) - ) - ) - (local.set $$sub5$i$27$i - (i32.add - (local.get $$add215$i) - (local.get $$131) - ) - ) - (i32.store - (i32.const 200) - (local.get $$add$ptr4$i$26$i) - ) - (i32.store - (i32.const 188) - (local.get $$sub5$i$27$i) - ) - (local.set $$or$i$28$i - (i32.or - (local.get $$sub5$i$27$i) - (i32.const 1) - ) - ) - (local.set $$head$i$29$i - (i32.add - (local.get $$add$ptr4$i$26$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head$i$29$i) - (local.get $$or$i$28$i) - ) - (local.set $$add$ptr6$i$30$i - (i32.add - (local.get $$add$ptr4$i$26$i) - (local.get $$sub5$i$27$i) - ) - ) - (local.set $$head7$i$31$i - (i32.add - (local.get $$add$ptr6$i$30$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head7$i$31$i) - (i32.const 40) - ) - (local.set $$134 - (i32.load - (i32.const 664) - ) - ) - (i32.store - (i32.const 204) - (local.get $$134) - ) - (br $do-once40) - ) - ) - ) - ) - ) - ) - (local.set $$135 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp218$i - (i32.lt_u - (local.get $$tbase$796$i) - (local.get $$135) - ) - ) - (if - (local.get $$cmp218$i) - (block - (i32.store - (i32.const 192) - (local.get $$tbase$796$i) - ) - (local.set $$150 - (local.get $$tbase$796$i) - ) - ) - (local.set $$150 - (local.get $$135) - ) - ) - (local.set $$add$ptr227$i - (i32.add - (local.get $$tbase$796$i) - (local.get $$tsize$795$i) - ) - ) - (local.set $$sp$1107$i - (i32.const 624) - ) - (loop $while-in47 - (block $while-out46 - (local.set $$136 - (i32.load - (local.get $$sp$1107$i) - ) - ) - (local.set $$cmp228$i - (i32.eq - (local.get $$136) - (local.get $$add$ptr227$i) - ) - ) - (if - (local.get $$cmp228$i) - (block - (local.set $$base226$i$lcssa - (local.get $$sp$1107$i) - ) - (local.set $$sp$1107$i$lcssa - (local.get $$sp$1107$i) - ) - (local.set $label - (i32.const 211) - ) - (br $while-out46) - ) - ) - (local.set $$next231$i - (i32.add - (local.get $$sp$1107$i) - (i32.const 8) - ) - ) - (local.set $$137 - (i32.load - (local.get $$next231$i) - ) - ) - (local.set $$cmp224$i - (i32.eq - (local.get $$137) - (i32.const 0) - ) - ) - (if - (local.get $$cmp224$i) - (block - (local.set $$sp$0$i$i$i - (i32.const 624) - ) - (br $while-out46) - ) - (local.set $$sp$1107$i - (local.get $$137) - ) - ) - (br $while-in47) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 211) - ) - (block - (local.set $$sflags235$i - (i32.add - (local.get $$sp$1107$i$lcssa) - (i32.const 12) - ) - ) - (local.set $$138 - (i32.load - (local.get $$sflags235$i) - ) - ) - (local.set $$and236$i - (i32.and - (local.get $$138) - (i32.const 8) - ) - ) - (local.set $$tobool237$i - (i32.eq - (local.get $$and236$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool237$i) - (block - (i32.store - (local.get $$base226$i$lcssa) - (local.get $$tbase$796$i) - ) - (local.set $$size245$i - (i32.add - (local.get $$sp$1107$i$lcssa) - (i32.const 4) - ) - ) - (local.set $$139 - (i32.load - (local.get $$size245$i) - ) - ) - (local.set $$add246$i - (i32.add - (local.get $$139) - (local.get $$tsize$795$i) - ) - ) - (i32.store - (local.get $$size245$i) - (local.get $$add246$i) - ) - (local.set $$add$ptr$i$32$i - (i32.add - (local.get $$tbase$796$i) - (i32.const 8) - ) - ) - (local.set $$140 - (local.get $$add$ptr$i$32$i) - ) - (local.set $$and$i$33$i - (i32.and - (local.get $$140) - (i32.const 7) - ) - ) - (local.set $$cmp$i$34$i - (i32.eq - (local.get $$and$i$33$i) - (i32.const 0) - ) - ) - (local.set $$141 - (i32.sub - (i32.const 0) - (local.get $$140) - ) - ) - (local.set $$and3$i$35$i - (i32.and - (local.get $$141) - (i32.const 7) - ) - ) - (local.set $$cond$i$36$i - (if (result i32) - (local.get $$cmp$i$34$i) - (i32.const 0) - (local.get $$and3$i$35$i) - ) - ) - (local.set $$add$ptr4$i$37$i - (i32.add - (local.get $$tbase$796$i) - (local.get $$cond$i$36$i) - ) - ) - (local.set $$add$ptr5$i$i - (i32.add - (local.get $$add$ptr227$i) - (i32.const 8) - ) - ) - (local.set $$142 - (local.get $$add$ptr5$i$i) - ) - (local.set $$and6$i$38$i - (i32.and - (local.get $$142) - (i32.const 7) - ) - ) - (local.set $$cmp7$i$i - (i32.eq - (local.get $$and6$i$38$i) - (i32.const 0) - ) - ) - (local.set $$143 - (i32.sub - (i32.const 0) - (local.get $$142) - ) - ) - (local.set $$and13$i$i - (i32.and - (local.get $$143) - (i32.const 7) - ) - ) - (local.set $$cond15$i$i - (if (result i32) - (local.get $$cmp7$i$i) - (i32.const 0) - (local.get $$and13$i$i) - ) - ) - (local.set $$add$ptr16$i$i - (i32.add - (local.get $$add$ptr227$i) - (local.get $$cond15$i$i) - ) - ) - (local.set $$sub$ptr$lhs$cast$i$39$i - (local.get $$add$ptr16$i$i) - ) - (local.set $$sub$ptr$rhs$cast$i$40$i - (local.get $$add$ptr4$i$37$i) - ) - (local.set $$sub$ptr$sub$i$41$i - (i32.sub - (local.get $$sub$ptr$lhs$cast$i$39$i) - (local.get $$sub$ptr$rhs$cast$i$40$i) - ) - ) - (local.set $$add$ptr17$i$i - (i32.add - (local.get $$add$ptr4$i$37$i) - (local.get $$nb$0) - ) - ) - (local.set $$sub18$i$i - (i32.sub - (local.get $$sub$ptr$sub$i$41$i) - (local.get $$nb$0) - ) - ) - (local.set $$or19$i$i - (i32.or - (local.get $$nb$0) - (i32.const 3) - ) - ) - (local.set $$head$i$42$i - (i32.add - (local.get $$add$ptr4$i$37$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head$i$42$i) - (local.get $$or19$i$i) - ) - (local.set $$cmp20$i$i - (i32.eq - (local.get $$add$ptr16$i$i) - (local.get $$119) - ) - ) - (block $do-once48 - (if - (local.get $$cmp20$i$i) - (block - (local.set $$144 - (i32.load - (i32.const 188) - ) - ) - (local.set $$add$i$i - (i32.add - (local.get $$144) - (local.get $$sub18$i$i) - ) - ) - (i32.store - (i32.const 188) - (local.get $$add$i$i) - ) - (i32.store - (i32.const 200) - (local.get $$add$ptr17$i$i) - ) - (local.set $$or22$i$i - (i32.or - (local.get $$add$i$i) - (i32.const 1) - ) - ) - (local.set $$head23$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head23$i$i) - (local.get $$or22$i$i) - ) - ) - (block - (local.set $$145 - (i32.load - (i32.const 196) - ) - ) - (local.set $$cmp24$i$i - (i32.eq - (local.get $$add$ptr16$i$i) - (local.get $$145) - ) - ) - (if - (local.get $$cmp24$i$i) - (block - (local.set $$146 - (i32.load - (i32.const 184) - ) - ) - (local.set $$add26$i$i - (i32.add - (local.get $$146) - (local.get $$sub18$i$i) - ) - ) - (i32.store - (i32.const 184) - (local.get $$add26$i$i) - ) - (i32.store - (i32.const 196) - (local.get $$add$ptr17$i$i) - ) - (local.set $$or28$i$i - (i32.or - (local.get $$add26$i$i) - (i32.const 1) - ) - ) - (local.set $$head29$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head29$i$i) - (local.get $$or28$i$i) - ) - (local.set $$add$ptr30$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (local.get $$add26$i$i) - ) - ) - (i32.store - (local.get $$add$ptr30$i$i) - (local.get $$add26$i$i) - ) - (br $do-once48) - ) - ) - (local.set $$head32$i$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 4) - ) - ) - (local.set $$147 - (i32.load - (local.get $$head32$i$i) - ) - ) - (local.set $$and33$i$i - (i32.and - (local.get $$147) - (i32.const 3) - ) - ) - (local.set $$cmp34$i$i - (i32.eq - (local.get $$and33$i$i) - (i32.const 1) - ) - ) - (if - (local.get $$cmp34$i$i) - (block - (local.set $$and37$i$i - (i32.and - (local.get $$147) - (i32.const -8) - ) - ) - (local.set $$shr$i$45$i - (i32.shr_u - (local.get $$147) - (i32.const 3) - ) - ) - (local.set $$cmp38$i$i - (i32.lt_u - (local.get $$147) - (i32.const 256) - ) - ) - (block $label$break$L331 - (if - (local.get $$cmp38$i$i) - (block - (local.set $$fd$i$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 8) - ) - ) - (local.set $$148 - (i32.load - (local.get $$fd$i$i) - ) - ) - (local.set $$bk$i$46$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 12) - ) - ) - (local.set $$149 - (i32.load - (local.get $$bk$i$46$i) - ) - ) - (local.set $$shl$i$47$i - (i32.shl - (local.get $$shr$i$45$i) - (i32.const 1) - ) - ) - (local.set $$arrayidx$i$48$i - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl$i$47$i) - (i32.const 2) - ) - ) - ) - (local.set $$cmp41$i$i - (i32.eq - (local.get $$148) - (local.get $$arrayidx$i$48$i) - ) - ) - (block $do-once51 - (if - (i32.eqz - (local.get $$cmp41$i$i) - ) - (block - (local.set $$cmp42$i$i - (i32.lt_u - (local.get $$148) - (local.get $$150) - ) - ) - (if - (local.get $$cmp42$i$i) - (call $_abort) - ) - (local.set $$bk43$i$i - (i32.add - (local.get $$148) - (i32.const 12) - ) - ) - (local.set $$151 - (i32.load - (local.get $$bk43$i$i) - ) - ) - (local.set $$cmp44$i$i - (i32.eq - (local.get $$151) - (local.get $$add$ptr16$i$i) - ) - ) - (if - (local.get $$cmp44$i$i) - (br $do-once51) - ) - (call $_abort) - ) - ) - ) - (local.set $$cmp46$i$49$i - (i32.eq - (local.get $$149) - (local.get $$148) - ) - ) - (if - (local.get $$cmp46$i$49$i) - (block - (local.set $$shl48$i$i - (i32.shl - (i32.const 1) - (local.get $$shr$i$45$i) - ) - ) - (local.set $$neg$i$i - (i32.xor - (local.get $$shl48$i$i) - (i32.const -1) - ) - ) - (local.set $$152 - (i32.load - (i32.const 176) - ) - ) - (local.set $$and49$i$i - (i32.and - (local.get $$152) - (local.get $$neg$i$i) - ) - ) - (i32.store - (i32.const 176) - (local.get $$and49$i$i) - ) - (br $label$break$L331) - ) - ) - (local.set $$cmp54$i$i - (i32.eq - (local.get $$149) - (local.get $$arrayidx$i$48$i) - ) - ) - (block $do-once53 - (if - (local.get $$cmp54$i$i) - (block - (local.set $$$pre5$i$i - (i32.add - (local.get $$149) - (i32.const 8) - ) - ) - (local.set $$fd68$pre$phi$i$iZ2D - (local.get $$$pre5$i$i) - ) - ) - (block - (local.set $$cmp57$i$i - (i32.lt_u - (local.get $$149) - (local.get $$150) - ) - ) - (if - (local.get $$cmp57$i$i) - (call $_abort) - ) - (local.set $$fd59$i$i - (i32.add - (local.get $$149) - (i32.const 8) - ) - ) - (local.set $$153 - (i32.load - (local.get $$fd59$i$i) - ) - ) - (local.set $$cmp60$i$i - (i32.eq - (local.get $$153) - (local.get $$add$ptr16$i$i) - ) - ) - (if - (local.get $$cmp60$i$i) - (block - (local.set $$fd68$pre$phi$i$iZ2D - (local.get $$fd59$i$i) - ) - (br $do-once53) - ) - ) - (call $_abort) - ) - ) - ) - (local.set $$bk67$i$i - (i32.add - (local.get $$148) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk67$i$i) - (local.get $$149) - ) - (i32.store - (local.get $$fd68$pre$phi$i$iZ2D) - (local.get $$148) - ) - ) - (block - (local.set $$parent$i$51$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 24) - ) - ) - (local.set $$154 - (i32.load - (local.get $$parent$i$51$i) - ) - ) - (local.set $$bk74$i$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 12) - ) - ) - (local.set $$155 - (i32.load - (local.get $$bk74$i$i) - ) - ) - (local.set $$cmp75$i$i - (i32.eq - (local.get $$155) - (local.get $$add$ptr16$i$i) - ) - ) - (block $do-once55 - (if - (local.get $$cmp75$i$i) - (block - (local.set $$child$i$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 16) - ) - ) - (local.set $$arrayidx96$i$i - (i32.add - (local.get $$child$i$i) - (i32.const 4) - ) - ) - (local.set $$159 - (i32.load - (local.get $$arrayidx96$i$i) - ) - ) - (local.set $$cmp97$i$i - (i32.eq - (local.get $$159) - (i32.const 0) - ) - ) - (if - (local.get $$cmp97$i$i) - (block - (local.set $$160 - (i32.load - (local.get $$child$i$i) - ) - ) - (local.set $$cmp100$i$i - (i32.eq - (local.get $$160) - (i32.const 0) - ) - ) - (if - (local.get $$cmp100$i$i) - (block - (local.set $$R$3$i$i - (i32.const 0) - ) - (br $do-once55) - ) - (block - (local.set $$R$1$i$i - (local.get $$160) - ) - (local.set $$RP$1$i$i - (local.get $$child$i$i) - ) - ) - ) - ) - (block - (local.set $$R$1$i$i - (local.get $$159) - ) - (local.set $$RP$1$i$i - (local.get $$arrayidx96$i$i) - ) - ) - ) - (loop $while-in58 - (block $while-out57 - (local.set $$arrayidx103$i$i - (i32.add - (local.get $$R$1$i$i) - (i32.const 20) - ) - ) - (local.set $$161 - (i32.load - (local.get $$arrayidx103$i$i) - ) - ) - (local.set $$cmp104$i$i - (i32.eq - (local.get $$161) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp104$i$i) - ) - (block - (local.set $$R$1$i$i - (local.get $$161) - ) - (local.set $$RP$1$i$i - (local.get $$arrayidx103$i$i) - ) - (br $while-in58) - ) - ) - (local.set $$arrayidx107$i$i - (i32.add - (local.get $$R$1$i$i) - (i32.const 16) - ) - ) - (local.set $$162 - (i32.load - (local.get $$arrayidx107$i$i) - ) - ) - (local.set $$cmp108$i$i - (i32.eq - (local.get $$162) - (i32.const 0) - ) - ) - (if - (local.get $$cmp108$i$i) - (block - (local.set $$R$1$i$i$lcssa - (local.get $$R$1$i$i) - ) - (local.set $$RP$1$i$i$lcssa - (local.get $$RP$1$i$i) - ) - (br $while-out57) - ) - (block - (local.set $$R$1$i$i - (local.get $$162) - ) - (local.set $$RP$1$i$i - (local.get $$arrayidx107$i$i) - ) - ) - ) - (br $while-in58) - ) - ) - (local.set $$cmp112$i$i - (i32.lt_u - (local.get $$RP$1$i$i$lcssa) - (local.get $$150) - ) - ) - (if - (local.get $$cmp112$i$i) - (call $_abort) - (block - (i32.store - (local.get $$RP$1$i$i$lcssa) - (i32.const 0) - ) - (local.set $$R$3$i$i - (local.get $$R$1$i$i$lcssa) - ) - (br $do-once55) - ) - ) - ) - (block - (local.set $$fd78$i$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 8) - ) - ) - (local.set $$156 - (i32.load - (local.get $$fd78$i$i) - ) - ) - (local.set $$cmp81$i$i - (i32.lt_u - (local.get $$156) - (local.get $$150) - ) - ) - (if - (local.get $$cmp81$i$i) - (call $_abort) - ) - (local.set $$bk82$i$i - (i32.add - (local.get $$156) - (i32.const 12) - ) - ) - (local.set $$157 - (i32.load - (local.get $$bk82$i$i) - ) - ) - (local.set $$cmp83$i$i - (i32.eq - (local.get $$157) - (local.get $$add$ptr16$i$i) - ) - ) - (if - (i32.eqz - (local.get $$cmp83$i$i) - ) - (call $_abort) - ) - (local.set $$fd85$i$i - (i32.add - (local.get $$155) - (i32.const 8) - ) - ) - (local.set $$158 - (i32.load - (local.get $$fd85$i$i) - ) - ) - (local.set $$cmp86$i$i - (i32.eq - (local.get $$158) - (local.get $$add$ptr16$i$i) - ) - ) - (if - (local.get $$cmp86$i$i) - (block - (i32.store - (local.get $$bk82$i$i) - (local.get $$155) - ) - (i32.store - (local.get $$fd85$i$i) - (local.get $$156) - ) - (local.set $$R$3$i$i - (local.get $$155) - ) - (br $do-once55) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$cmp120$i$53$i - (i32.eq - (local.get $$154) - (i32.const 0) - ) - ) - (if - (local.get $$cmp120$i$53$i) - (br $label$break$L331) - ) - (local.set $$index$i$54$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 28) - ) - ) - (local.set $$163 - (i32.load - (local.get $$index$i$54$i) - ) - ) - (local.set $$arrayidx123$i$i - (i32.add - (i32.const 480) - (i32.shl - (local.get $$163) - (i32.const 2) - ) - ) - ) - (local.set $$164 - (i32.load - (local.get $$arrayidx123$i$i) - ) - ) - (local.set $$cmp124$i$i - (i32.eq - (local.get $$add$ptr16$i$i) - (local.get $$164) - ) - ) - (block $do-once59 - (if - (local.get $$cmp124$i$i) - (block - (i32.store - (local.get $$arrayidx123$i$i) - (local.get $$R$3$i$i) - ) - (local.set $$cond2$i$i - (i32.eq - (local.get $$R$3$i$i) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cond2$i$i) - ) - (br $do-once59) - ) - (local.set $$shl131$i$i - (i32.shl - (i32.const 1) - (local.get $$163) - ) - ) - (local.set $$neg132$i$i - (i32.xor - (local.get $$shl131$i$i) - (i32.const -1) - ) - ) - (local.set $$165 - (i32.load - (i32.const 180) - ) - ) - (local.set $$and133$i$i - (i32.and - (local.get $$165) - (local.get $$neg132$i$i) - ) - ) - (i32.store - (i32.const 180) - (local.get $$and133$i$i) - ) - (br $label$break$L331) - ) - (block - (local.set $$166 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp137$i$i - (i32.lt_u - (local.get $$154) - (local.get $$166) - ) - ) - (if - (local.get $$cmp137$i$i) - (call $_abort) - ) - (local.set $$arrayidx143$i$i - (i32.add - (local.get $$154) - (i32.const 16) - ) - ) - (local.set $$167 - (i32.load - (local.get $$arrayidx143$i$i) - ) - ) - (local.set $$cmp144$i$i - (i32.eq - (local.get $$167) - (local.get $$add$ptr16$i$i) - ) - ) - (if - (local.get $$cmp144$i$i) - (i32.store - (local.get $$arrayidx143$i$i) - (local.get $$R$3$i$i) - ) - (block - (local.set $$arrayidx151$i$i - (i32.add - (local.get $$154) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx151$i$i) - (local.get $$R$3$i$i) - ) - ) - ) - (local.set $$cmp156$i$i - (i32.eq - (local.get $$R$3$i$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp156$i$i) - (br $label$break$L331) - ) - ) - ) - ) - (local.set $$168 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp160$i$i - (i32.lt_u - (local.get $$R$3$i$i) - (local.get $$168) - ) - ) - (if - (local.get $$cmp160$i$i) - (call $_abort) - ) - (local.set $$parent165$i$i - (i32.add - (local.get $$R$3$i$i) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent165$i$i) - (local.get $$154) - ) - (local.set $$child166$i$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 16) - ) - ) - (local.set $$169 - (i32.load - (local.get $$child166$i$i) - ) - ) - (local.set $$cmp168$i$i - (i32.eq - (local.get $$169) - (i32.const 0) - ) - ) - (block $do-once61 - (if - (i32.eqz - (local.get $$cmp168$i$i) - ) - (block - (local.set $$cmp172$i$i - (i32.lt_u - (local.get $$169) - (local.get $$168) - ) - ) - (if - (local.get $$cmp172$i$i) - (call $_abort) - (block - (local.set $$arrayidx178$i$i - (i32.add - (local.get $$R$3$i$i) - (i32.const 16) - ) - ) - (i32.store - (local.get $$arrayidx178$i$i) - (local.get $$169) - ) - (local.set $$parent179$i$i - (i32.add - (local.get $$169) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent179$i$i) - (local.get $$R$3$i$i) - ) - (br $do-once61) - ) - ) - ) - ) - ) - (local.set $$arrayidx184$i$i - (i32.add - (local.get $$child166$i$i) - (i32.const 4) - ) - ) - (local.set $$170 - (i32.load - (local.get $$arrayidx184$i$i) - ) - ) - (local.set $$cmp185$i$i - (i32.eq - (local.get $$170) - (i32.const 0) - ) - ) - (if - (local.get $$cmp185$i$i) - (br $label$break$L331) - ) - (local.set $$171 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp189$i$i - (i32.lt_u - (local.get $$170) - (local.get $$171) - ) - ) - (if - (local.get $$cmp189$i$i) - (call $_abort) - (block - (local.set $$arrayidx195$i$i - (i32.add - (local.get $$R$3$i$i) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx195$i$i) - (local.get $$170) - ) - (local.set $$parent196$i$i - (i32.add - (local.get $$170) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent196$i$i) - (local.get $$R$3$i$i) - ) - (br $label$break$L331) - ) - ) - ) - ) - ) - (local.set $$add$ptr205$i$i - (i32.add - (local.get $$add$ptr16$i$i) - (local.get $$and37$i$i) - ) - ) - (local.set $$add206$i$i - (i32.add - (local.get $$and37$i$i) - (local.get $$sub18$i$i) - ) - ) - (local.set $$oldfirst$0$i$i - (local.get $$add$ptr205$i$i) - ) - (local.set $$qsize$0$i$i - (local.get $$add206$i$i) - ) - ) - (block - (local.set $$oldfirst$0$i$i - (local.get $$add$ptr16$i$i) - ) - (local.set $$qsize$0$i$i - (local.get $$sub18$i$i) - ) - ) - ) - (local.set $$head208$i$i - (i32.add - (local.get $$oldfirst$0$i$i) - (i32.const 4) - ) - ) - (local.set $$172 - (i32.load - (local.get $$head208$i$i) - ) - ) - (local.set $$and209$i$i - (i32.and - (local.get $$172) - (i32.const -2) - ) - ) - (i32.store - (local.get $$head208$i$i) - (local.get $$and209$i$i) - ) - (local.set $$or210$i$i - (i32.or - (local.get $$qsize$0$i$i) - (i32.const 1) - ) - ) - (local.set $$head211$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head211$i$i) - (local.get $$or210$i$i) - ) - (local.set $$add$ptr212$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (local.get $$qsize$0$i$i) - ) - ) - (i32.store - (local.get $$add$ptr212$i$i) - (local.get $$qsize$0$i$i) - ) - (local.set $$shr214$i$i - (i32.shr_u - (local.get $$qsize$0$i$i) - (i32.const 3) - ) - ) - (local.set $$cmp215$i$i - (i32.lt_u - (local.get $$qsize$0$i$i) - (i32.const 256) - ) - ) - (if - (local.get $$cmp215$i$i) - (block - (local.set $$shl221$i$i - (i32.shl - (local.get $$shr214$i$i) - (i32.const 1) - ) - ) - (local.set $$arrayidx223$i$i - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl221$i$i) - (i32.const 2) - ) - ) - ) - (local.set $$173 - (i32.load - (i32.const 176) - ) - ) - (local.set $$shl226$i$i - (i32.shl - (i32.const 1) - (local.get $$shr214$i$i) - ) - ) - (local.set $$and227$i$i - (i32.and - (local.get $$173) - (local.get $$shl226$i$i) - ) - ) - (local.set $$tobool228$i$i - (i32.eq - (local.get $$and227$i$i) - (i32.const 0) - ) - ) - (block $do-once63 - (if - (local.get $$tobool228$i$i) - (block - (local.set $$or232$i$i - (i32.or - (local.get $$173) - (local.get $$shl226$i$i) - ) - ) - (i32.store - (i32.const 176) - (local.get $$or232$i$i) - ) - (local.set $$$pre$i$56$i - (i32.add - (local.get $$arrayidx223$i$i) - (i32.const 8) - ) - ) - (local.set $$$pre$phi$i$57$iZ2D - (local.get $$$pre$i$56$i) - ) - (local.set $$F224$0$i$i - (local.get $$arrayidx223$i$i) - ) - ) - (block - (local.set $$174 - (i32.add - (local.get $$arrayidx223$i$i) - (i32.const 8) - ) - ) - (local.set $$175 - (i32.load - (local.get $$174) - ) - ) - (local.set $$176 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp236$i$i - (i32.lt_u - (local.get $$175) - (local.get $$176) - ) - ) - (if - (i32.eqz - (local.get $$cmp236$i$i) - ) - (block - (local.set $$$pre$phi$i$57$iZ2D - (local.get $$174) - ) - (local.set $$F224$0$i$i - (local.get $$175) - ) - (br $do-once63) - ) - ) - (call $_abort) - ) - ) - ) - (i32.store - (local.get $$$pre$phi$i$57$iZ2D) - (local.get $$add$ptr17$i$i) - ) - (local.set $$bk246$i$i - (i32.add - (local.get $$F224$0$i$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk246$i$i) - (local.get $$add$ptr17$i$i) - ) - (local.set $$fd247$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd247$i$i) - (local.get $$F224$0$i$i) - ) - (local.set $$bk248$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk248$i$i) - (local.get $$arrayidx223$i$i) - ) - (br $do-once48) - ) - ) - (local.set $$shr253$i$i - (i32.shr_u - (local.get $$qsize$0$i$i) - (i32.const 8) - ) - ) - (local.set $$cmp254$i$i - (i32.eq - (local.get $$shr253$i$i) - (i32.const 0) - ) - ) - (block $do-once65 - (if - (local.get $$cmp254$i$i) - (local.set $$I252$0$i$i - (i32.const 0) - ) - (block - (local.set $$cmp258$i$i - (i32.gt_u - (local.get $$qsize$0$i$i) - (i32.const 16777215) - ) - ) - (if - (local.get $$cmp258$i$i) - (block - (local.set $$I252$0$i$i - (i32.const 31) - ) - (br $do-once65) - ) - ) - (local.set $$sub262$i$i - (i32.add - (local.get $$shr253$i$i) - (i32.const 1048320) - ) - ) - (local.set $$shr263$i$i - (i32.shr_u - (local.get $$sub262$i$i) - (i32.const 16) - ) - ) - (local.set $$and264$i$i - (i32.and - (local.get $$shr263$i$i) - (i32.const 8) - ) - ) - (local.set $$shl265$i$i - (i32.shl - (local.get $$shr253$i$i) - (local.get $$and264$i$i) - ) - ) - (local.set $$sub266$i$i - (i32.add - (local.get $$shl265$i$i) - (i32.const 520192) - ) - ) - (local.set $$shr267$i$i - (i32.shr_u - (local.get $$sub266$i$i) - (i32.const 16) - ) - ) - (local.set $$and268$i$i - (i32.and - (local.get $$shr267$i$i) - (i32.const 4) - ) - ) - (local.set $$add269$i$i - (i32.or - (local.get $$and268$i$i) - (local.get $$and264$i$i) - ) - ) - (local.set $$shl270$i$i - (i32.shl - (local.get $$shl265$i$i) - (local.get $$and268$i$i) - ) - ) - (local.set $$sub271$i$i - (i32.add - (local.get $$shl270$i$i) - (i32.const 245760) - ) - ) - (local.set $$shr272$i$i - (i32.shr_u - (local.get $$sub271$i$i) - (i32.const 16) - ) - ) - (local.set $$and273$i$i - (i32.and - (local.get $$shr272$i$i) - (i32.const 2) - ) - ) - (local.set $$add274$i$i - (i32.or - (local.get $$add269$i$i) - (local.get $$and273$i$i) - ) - ) - (local.set $$sub275$i$i - (i32.sub - (i32.const 14) - (local.get $$add274$i$i) - ) - ) - (local.set $$shl276$i$i - (i32.shl - (local.get $$shl270$i$i) - (local.get $$and273$i$i) - ) - ) - (local.set $$shr277$i$i - (i32.shr_u - (local.get $$shl276$i$i) - (i32.const 15) - ) - ) - (local.set $$add278$i$i - (i32.add - (local.get $$sub275$i$i) - (local.get $$shr277$i$i) - ) - ) - (local.set $$shl279$i$i - (i32.shl - (local.get $$add278$i$i) - (i32.const 1) - ) - ) - (local.set $$add280$i$i - (i32.add - (local.get $$add278$i$i) - (i32.const 7) - ) - ) - (local.set $$shr281$i$i - (i32.shr_u - (local.get $$qsize$0$i$i) - (local.get $$add280$i$i) - ) - ) - (local.set $$and282$i$i - (i32.and - (local.get $$shr281$i$i) - (i32.const 1) - ) - ) - (local.set $$add283$i$i - (i32.or - (local.get $$and282$i$i) - (local.get $$shl279$i$i) - ) - ) - (local.set $$I252$0$i$i - (local.get $$add283$i$i) - ) - ) - ) - ) - (local.set $$arrayidx287$i$i - (i32.add - (i32.const 480) - (i32.shl - (local.get $$I252$0$i$i) - (i32.const 2) - ) - ) - ) - (local.set $$index288$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 28) - ) - ) - (i32.store - (local.get $$index288$i$i) - (local.get $$I252$0$i$i) - ) - (local.set $$child289$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 16) - ) - ) - (local.set $$arrayidx290$i$i - (i32.add - (local.get $$child289$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$arrayidx290$i$i) - (i32.const 0) - ) - (i32.store - (local.get $$child289$i$i) - (i32.const 0) - ) - (local.set $$177 - (i32.load - (i32.const 180) - ) - ) - (local.set $$shl294$i$i - (i32.shl - (i32.const 1) - (local.get $$I252$0$i$i) - ) - ) - (local.set $$and295$i$i - (i32.and - (local.get $$177) - (local.get $$shl294$i$i) - ) - ) - (local.set $$tobool296$i$i - (i32.eq - (local.get $$and295$i$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool296$i$i) - (block - (local.set $$or300$i$i - (i32.or - (local.get $$177) - (local.get $$shl294$i$i) - ) - ) - (i32.store - (i32.const 180) - (local.get $$or300$i$i) - ) - (i32.store - (local.get $$arrayidx287$i$i) - (local.get $$add$ptr17$i$i) - ) - (local.set $$parent301$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent301$i$i) - (local.get $$arrayidx287$i$i) - ) - (local.set $$bk302$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk302$i$i) - (local.get $$add$ptr17$i$i) - ) - (local.set $$fd303$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd303$i$i) - (local.get $$add$ptr17$i$i) - ) - (br $do-once48) - ) - ) - (local.set $$178 - (i32.load - (local.get $$arrayidx287$i$i) - ) - ) - (local.set $$cmp306$i$i - (i32.eq - (local.get $$I252$0$i$i) - (i32.const 31) - ) - ) - (local.set $$shr310$i$i - (i32.shr_u - (local.get $$I252$0$i$i) - (i32.const 1) - ) - ) - (local.set $$sub313$i$i - (i32.sub - (i32.const 25) - (local.get $$shr310$i$i) - ) - ) - (local.set $$cond315$i$i - (if (result i32) - (local.get $$cmp306$i$i) - (i32.const 0) - (local.get $$sub313$i$i) - ) - ) - (local.set $$shl316$i$i - (i32.shl - (local.get $$qsize$0$i$i) - (local.get $$cond315$i$i) - ) - ) - (local.set $$K305$0$i$i - (local.get $$shl316$i$i) - ) - (local.set $$T$0$i$58$i - (local.get $$178) - ) - (loop $while-in68 - (block $while-out67 - (local.set $$head317$i$i - (i32.add - (local.get $$T$0$i$58$i) - (i32.const 4) - ) - ) - (local.set $$179 - (i32.load - (local.get $$head317$i$i) - ) - ) - (local.set $$and318$i$i - (i32.and - (local.get $$179) - (i32.const -8) - ) - ) - (local.set $$cmp319$i$i - (i32.eq - (local.get $$and318$i$i) - (local.get $$qsize$0$i$i) - ) - ) - (if - (local.get $$cmp319$i$i) - (block - (local.set $$T$0$i$58$i$lcssa - (local.get $$T$0$i$58$i) - ) - (local.set $label - (i32.const 281) - ) - (br $while-out67) - ) - ) - (local.set $$shr322$i$i - (i32.shr_u - (local.get $$K305$0$i$i) - (i32.const 31) - ) - ) - (local.set $$arrayidx325$i$i - (i32.add - (i32.add - (local.get $$T$0$i$58$i) - (i32.const 16) - ) - (i32.shl - (local.get $$shr322$i$i) - (i32.const 2) - ) - ) - ) - (local.set $$shl326$i$i - (i32.shl - (local.get $$K305$0$i$i) - (i32.const 1) - ) - ) - (local.set $$180 - (i32.load - (local.get $$arrayidx325$i$i) - ) - ) - (local.set $$cmp327$i$i - (i32.eq - (local.get $$180) - (i32.const 0) - ) - ) - (if - (local.get $$cmp327$i$i) - (block - (local.set $$T$0$i$58$i$lcssa283 - (local.get $$T$0$i$58$i) - ) - (local.set $$arrayidx325$i$i$lcssa - (local.get $$arrayidx325$i$i) - ) - (local.set $label - (i32.const 278) - ) - (br $while-out67) - ) - (block - (local.set $$K305$0$i$i - (local.get $$shl326$i$i) - ) - (local.set $$T$0$i$58$i - (local.get $$180) - ) - ) - ) - (br $while-in68) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 278) - ) - (block - (local.set $$181 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp332$i$i - (i32.lt_u - (local.get $$arrayidx325$i$i$lcssa) - (local.get $$181) - ) - ) - (if - (local.get $$cmp332$i$i) - (call $_abort) - (block - (i32.store - (local.get $$arrayidx325$i$i$lcssa) - (local.get $$add$ptr17$i$i) - ) - (local.set $$parent337$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent337$i$i) - (local.get $$T$0$i$58$i$lcssa283) - ) - (local.set $$bk338$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk338$i$i) - (local.get $$add$ptr17$i$i) - ) - (local.set $$fd339$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd339$i$i) - (local.get $$add$ptr17$i$i) - ) - (br $do-once48) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 281) - ) - (block - (local.set $$fd344$i$i - (i32.add - (local.get $$T$0$i$58$i$lcssa) - (i32.const 8) - ) - ) - (local.set $$182 - (i32.load - (local.get $$fd344$i$i) - ) - ) - (local.set $$183 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp350$i$i - (i32.ge_u - (local.get $$182) - (local.get $$183) - ) - ) - (local.set $$not$cmp346$i$i - (i32.ge_u - (local.get $$T$0$i$58$i$lcssa) - (local.get $$183) - ) - ) - (local.set $$184 - (i32.and - (local.get $$cmp350$i$i) - (local.get $$not$cmp346$i$i) - ) - ) - (if - (local.get $$184) - (block - (local.set $$bk357$i$i - (i32.add - (local.get $$182) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk357$i$i) - (local.get $$add$ptr17$i$i) - ) - (i32.store - (local.get $$fd344$i$i) - (local.get $$add$ptr17$i$i) - ) - (local.set $$fd359$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd359$i$i) - (local.get $$182) - ) - (local.set $$bk360$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk360$i$i) - (local.get $$T$0$i$58$i$lcssa) - ) - (local.set $$parent361$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent361$i$i) - (i32.const 0) - ) - (br $do-once48) - ) - (call $_abort) - ) - ) - ) - ) - ) - ) - ) - (local.set $$add$ptr369$i$i - (i32.add - (local.get $$add$ptr4$i$37$i) - (i32.const 8) - ) - ) - (local.set $$retval$0 - (local.get $$add$ptr369$i$i) - ) - (return - (local.get $$retval$0) - ) - ) - (local.set $$sp$0$i$i$i - (i32.const 624) - ) - ) - ) - ) - (loop $while-in70 - (block $while-out69 - (local.set $$185 - (i32.load - (local.get $$sp$0$i$i$i) - ) - ) - (local.set $$cmp$i$i$i - (i32.gt_u - (local.get $$185) - (local.get $$119) - ) - ) - (if - (i32.eqz - (local.get $$cmp$i$i$i) - ) - (block - (local.set $$size$i$i$i - (i32.add - (local.get $$sp$0$i$i$i) - (i32.const 4) - ) - ) - (local.set $$186 - (i32.load - (local.get $$size$i$i$i) - ) - ) - (local.set $$add$ptr$i$i$i - (i32.add - (local.get $$185) - (local.get $$186) - ) - ) - (local.set $$cmp2$i$i$i - (i32.gt_u - (local.get $$add$ptr$i$i$i) - (local.get $$119) - ) - ) - (if - (local.get $$cmp2$i$i$i) - (block - (local.set $$add$ptr$i$i$i$lcssa - (local.get $$add$ptr$i$i$i) - ) - (br $while-out69) - ) - ) - ) - ) - (local.set $$next$i$i$i - (i32.add - (local.get $$sp$0$i$i$i) - (i32.const 8) - ) - ) - (local.set $$187 - (i32.load - (local.get $$next$i$i$i) - ) - ) - (local.set $$sp$0$i$i$i - (local.get $$187) - ) - (br $while-in70) - ) - ) - (local.set $$add$ptr2$i$i - (i32.add - (local.get $$add$ptr$i$i$i$lcssa) - (i32.const -47) - ) - ) - (local.set $$add$ptr3$i$i - (i32.add - (local.get $$add$ptr2$i$i) - (i32.const 8) - ) - ) - (local.set $$188 - (local.get $$add$ptr3$i$i) - ) - (local.set $$and$i$14$i - (i32.and - (local.get $$188) - (i32.const 7) - ) - ) - (local.set $$cmp$i$15$i - (i32.eq - (local.get $$and$i$14$i) - (i32.const 0) - ) - ) - (local.set $$189 - (i32.sub - (i32.const 0) - (local.get $$188) - ) - ) - (local.set $$and6$i$i - (i32.and - (local.get $$189) - (i32.const 7) - ) - ) - (local.set $$cond$i$16$i - (if (result i32) - (local.get $$cmp$i$15$i) - (i32.const 0) - (local.get $$and6$i$i) - ) - ) - (local.set $$add$ptr7$i$i - (i32.add - (local.get $$add$ptr2$i$i) - (local.get $$cond$i$16$i) - ) - ) - (local.set $$add$ptr8$i122$i - (i32.add - (local.get $$119) - (i32.const 16) - ) - ) - (local.set $$cmp9$i$i - (i32.lt_u - (local.get $$add$ptr7$i$i) - (local.get $$add$ptr8$i122$i) - ) - ) - (local.set $$cond13$i$i - (if (result i32) - (local.get $$cmp9$i$i) - (local.get $$119) - (local.get $$add$ptr7$i$i) - ) - ) - (local.set $$add$ptr14$i$i - (i32.add - (local.get $$cond13$i$i) - (i32.const 8) - ) - ) - (local.set $$add$ptr15$i$i - (i32.add - (local.get $$cond13$i$i) - (i32.const 24) - ) - ) - (local.set $$sub16$i$i - (i32.add - (local.get $$tsize$795$i) - (i32.const -40) - ) - ) - (local.set $$add$ptr$i$1$i$i - (i32.add - (local.get $$tbase$796$i) - (i32.const 8) - ) - ) - (local.set $$190 - (local.get $$add$ptr$i$1$i$i) - ) - (local.set $$and$i$i$i - (i32.and - (local.get $$190) - (i32.const 7) - ) - ) - (local.set $$cmp$i$2$i$i - (i32.eq - (local.get $$and$i$i$i) - (i32.const 0) - ) - ) - (local.set $$191 - (i32.sub - (i32.const 0) - (local.get $$190) - ) - ) - (local.set $$and3$i$i$i - (i32.and - (local.get $$191) - (i32.const 7) - ) - ) - (local.set $$cond$i$i$i - (if (result i32) - (local.get $$cmp$i$2$i$i) - (i32.const 0) - (local.get $$and3$i$i$i) - ) - ) - (local.set $$add$ptr4$i$i$i - (i32.add - (local.get $$tbase$796$i) - (local.get $$cond$i$i$i) - ) - ) - (local.set $$sub5$i$i$i - (i32.sub - (local.get $$sub16$i$i) - (local.get $$cond$i$i$i) - ) - ) - (i32.store - (i32.const 200) - (local.get $$add$ptr4$i$i$i) - ) - (i32.store - (i32.const 188) - (local.get $$sub5$i$i$i) - ) - (local.set $$or$i$i$i - (i32.or - (local.get $$sub5$i$i$i) - (i32.const 1) - ) - ) - (local.set $$head$i$i$i - (i32.add - (local.get $$add$ptr4$i$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head$i$i$i) - (local.get $$or$i$i$i) - ) - (local.set $$add$ptr6$i$i$i - (i32.add - (local.get $$add$ptr4$i$i$i) - (local.get $$sub5$i$i$i) - ) - ) - (local.set $$head7$i$i$i - (i32.add - (local.get $$add$ptr6$i$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head7$i$i$i) - (i32.const 40) - ) - (local.set $$192 - (i32.load - (i32.const 664) - ) - ) - (i32.store - (i32.const 204) - (local.get $$192) - ) - (local.set $$head$i$17$i - (i32.add - (local.get $$cond13$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head$i$17$i) - (i32.const 27) - ) - (i32.store - (local.get $$add$ptr14$i$i) - (i32.load - (i32.const 624) - ) - ) - (i32.store - (i32.add - (local.get $$add$ptr14$i$i) - (i32.const 4) - ) - (i32.load - (i32.add - (i32.const 624) - (i32.const 4) - ) - ) - ) - (i32.store - (i32.add - (local.get $$add$ptr14$i$i) - (i32.const 8) - ) - (i32.load - (i32.add - (i32.const 624) - (i32.const 8) - ) - ) - ) - (i32.store - (i32.add - (local.get $$add$ptr14$i$i) - (i32.const 12) - ) - (i32.load - (i32.add - (i32.const 624) - (i32.const 12) - ) - ) - ) - (i32.store - (i32.const 624) - (local.get $$tbase$796$i) - ) - (i32.store - (i32.const 628) - (local.get $$tsize$795$i) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (i32.store - (i32.const 632) - (local.get $$add$ptr14$i$i) - ) - (local.set $$p$0$i$i - (local.get $$add$ptr15$i$i) - ) - (loop $while-in72 - (block $while-out71 - (local.set $$add$ptr24$i$i - (i32.add - (local.get $$p$0$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$add$ptr24$i$i) - (i32.const 7) - ) - (local.set $$193 - (i32.add - (local.get $$add$ptr24$i$i) - (i32.const 4) - ) - ) - (local.set $$cmp27$i$i - (i32.lt_u - (local.get $$193) - (local.get $$add$ptr$i$i$i$lcssa) - ) - ) - (if - (local.get $$cmp27$i$i) - (local.set $$p$0$i$i - (local.get $$add$ptr24$i$i) - ) - (br $while-out71) - ) - (br $while-in72) - ) - ) - (local.set $$cmp28$i$i - (i32.eq - (local.get $$cond13$i$i) - (local.get $$119) - ) - ) - (if - (i32.eqz - (local.get $$cmp28$i$i) - ) - (block - (local.set $$sub$ptr$lhs$cast$i$i - (local.get $$cond13$i$i) - ) - (local.set $$sub$ptr$rhs$cast$i$i - (local.get $$119) - ) - (local.set $$sub$ptr$sub$i$i - (i32.sub - (local.get $$sub$ptr$lhs$cast$i$i) - (local.get $$sub$ptr$rhs$cast$i$i) - ) - ) - (local.set $$194 - (i32.load - (local.get $$head$i$17$i) - ) - ) - (local.set $$and32$i$i - (i32.and - (local.get $$194) - (i32.const -2) - ) - ) - (i32.store - (local.get $$head$i$17$i) - (local.get $$and32$i$i) - ) - (local.set $$or33$i$i - (i32.or - (local.get $$sub$ptr$sub$i$i) - (i32.const 1) - ) - ) - (local.set $$head34$i$i - (i32.add - (local.get $$119) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head34$i$i) - (local.get $$or33$i$i) - ) - (i32.store - (local.get $$cond13$i$i) - (local.get $$sub$ptr$sub$i$i) - ) - (local.set $$shr$i$i - (i32.shr_u - (local.get $$sub$ptr$sub$i$i) - (i32.const 3) - ) - ) - (local.set $$cmp36$i$i - (i32.lt_u - (local.get $$sub$ptr$sub$i$i) - (i32.const 256) - ) - ) - (if - (local.get $$cmp36$i$i) - (block - (local.set $$shl$i$19$i - (i32.shl - (local.get $$shr$i$i) - (i32.const 1) - ) - ) - (local.set $$arrayidx$i$20$i - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl$i$19$i) - (i32.const 2) - ) - ) - ) - (local.set $$195 - (i32.load - (i32.const 176) - ) - ) - (local.set $$shl39$i$i - (i32.shl - (i32.const 1) - (local.get $$shr$i$i) - ) - ) - (local.set $$and40$i$i - (i32.and - (local.get $$195) - (local.get $$shl39$i$i) - ) - ) - (local.set $$tobool$i$i - (i32.eq - (local.get $$and40$i$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$i) - (block - (local.set $$or44$i$i - (i32.or - (local.get $$195) - (local.get $$shl39$i$i) - ) - ) - (i32.store - (i32.const 176) - (local.get $$or44$i$i) - ) - (local.set $$$pre$i$i - (i32.add - (local.get $$arrayidx$i$20$i) - (i32.const 8) - ) - ) - (local.set $$$pre$phi$i$iZ2D - (local.get $$$pre$i$i) - ) - (local.set $$F$0$i$i - (local.get $$arrayidx$i$20$i) - ) - ) - (block - (local.set $$196 - (i32.add - (local.get $$arrayidx$i$20$i) - (i32.const 8) - ) - ) - (local.set $$197 - (i32.load - (local.get $$196) - ) - ) - (local.set $$198 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp46$i$i - (i32.lt_u - (local.get $$197) - (local.get $$198) - ) - ) - (if - (local.get $$cmp46$i$i) - (call $_abort) - (block - (local.set $$$pre$phi$i$iZ2D - (local.get $$196) - ) - (local.set $$F$0$i$i - (local.get $$197) - ) - ) - ) - ) - ) - (i32.store - (local.get $$$pre$phi$i$iZ2D) - (local.get $$119) - ) - (local.set $$bk$i$i - (i32.add - (local.get $$F$0$i$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk$i$i) - (local.get $$119) - ) - (local.set $$fd54$i$i - (i32.add - (local.get $$119) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd54$i$i) - (local.get $$F$0$i$i) - ) - (local.set $$bk55$i$i - (i32.add - (local.get $$119) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk55$i$i) - (local.get $$arrayidx$i$20$i) - ) - (br $do-once40) - ) - ) - (local.set $$shr58$i$i - (i32.shr_u - (local.get $$sub$ptr$sub$i$i) - (i32.const 8) - ) - ) - (local.set $$cmp59$i$i - (i32.eq - (local.get $$shr58$i$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp59$i$i) - (local.set $$I57$0$i$i - (i32.const 0) - ) - (block - (local.set $$cmp63$i$i - (i32.gt_u - (local.get $$sub$ptr$sub$i$i) - (i32.const 16777215) - ) - ) - (if - (local.get $$cmp63$i$i) - (local.set $$I57$0$i$i - (i32.const 31) - ) - (block - (local.set $$sub67$i$i - (i32.add - (local.get $$shr58$i$i) - (i32.const 1048320) - ) - ) - (local.set $$shr68$i$i - (i32.shr_u - (local.get $$sub67$i$i) - (i32.const 16) - ) - ) - (local.set $$and69$i$i - (i32.and - (local.get $$shr68$i$i) - (i32.const 8) - ) - ) - (local.set $$shl70$i$i - (i32.shl - (local.get $$shr58$i$i) - (local.get $$and69$i$i) - ) - ) - (local.set $$sub71$i$i - (i32.add - (local.get $$shl70$i$i) - (i32.const 520192) - ) - ) - (local.set $$shr72$i$i - (i32.shr_u - (local.get $$sub71$i$i) - (i32.const 16) - ) - ) - (local.set $$and73$i$i - (i32.and - (local.get $$shr72$i$i) - (i32.const 4) - ) - ) - (local.set $$add74$i$i - (i32.or - (local.get $$and73$i$i) - (local.get $$and69$i$i) - ) - ) - (local.set $$shl75$i$i - (i32.shl - (local.get $$shl70$i$i) - (local.get $$and73$i$i) - ) - ) - (local.set $$sub76$i$i - (i32.add - (local.get $$shl75$i$i) - (i32.const 245760) - ) - ) - (local.set $$shr77$i$i - (i32.shr_u - (local.get $$sub76$i$i) - (i32.const 16) - ) - ) - (local.set $$and78$i$i - (i32.and - (local.get $$shr77$i$i) - (i32.const 2) - ) - ) - (local.set $$add79$i$i - (i32.or - (local.get $$add74$i$i) - (local.get $$and78$i$i) - ) - ) - (local.set $$sub80$i$i - (i32.sub - (i32.const 14) - (local.get $$add79$i$i) - ) - ) - (local.set $$shl81$i$i - (i32.shl - (local.get $$shl75$i$i) - (local.get $$and78$i$i) - ) - ) - (local.set $$shr82$i$i - (i32.shr_u - (local.get $$shl81$i$i) - (i32.const 15) - ) - ) - (local.set $$add83$i$i - (i32.add - (local.get $$sub80$i$i) - (local.get $$shr82$i$i) - ) - ) - (local.set $$shl84$i$i - (i32.shl - (local.get $$add83$i$i) - (i32.const 1) - ) - ) - (local.set $$add85$i$i - (i32.add - (local.get $$add83$i$i) - (i32.const 7) - ) - ) - (local.set $$shr86$i$i - (i32.shr_u - (local.get $$sub$ptr$sub$i$i) - (local.get $$add85$i$i) - ) - ) - (local.set $$and87$i$i - (i32.and - (local.get $$shr86$i$i) - (i32.const 1) - ) - ) - (local.set $$add88$i$i - (i32.or - (local.get $$and87$i$i) - (local.get $$shl84$i$i) - ) - ) - (local.set $$I57$0$i$i - (local.get $$add88$i$i) - ) - ) - ) - ) - ) - (local.set $$arrayidx91$i$i - (i32.add - (i32.const 480) - (i32.shl - (local.get $$I57$0$i$i) - (i32.const 2) - ) - ) - ) - (local.set $$index$i$i - (i32.add - (local.get $$119) - (i32.const 28) - ) - ) - (i32.store - (local.get $$index$i$i) - (local.get $$I57$0$i$i) - ) - (local.set $$arrayidx92$i$i - (i32.add - (local.get $$119) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx92$i$i) - (i32.const 0) - ) - (i32.store - (local.get $$add$ptr8$i122$i) - (i32.const 0) - ) - (local.set $$199 - (i32.load - (i32.const 180) - ) - ) - (local.set $$shl95$i$i - (i32.shl - (i32.const 1) - (local.get $$I57$0$i$i) - ) - ) - (local.set $$and96$i$i - (i32.and - (local.get $$199) - (local.get $$shl95$i$i) - ) - ) - (local.set $$tobool97$i$i - (i32.eq - (local.get $$and96$i$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool97$i$i) - (block - (local.set $$or101$i$i - (i32.or - (local.get $$199) - (local.get $$shl95$i$i) - ) - ) - (i32.store - (i32.const 180) - (local.get $$or101$i$i) - ) - (i32.store - (local.get $$arrayidx91$i$i) - (local.get $$119) - ) - (local.set $$parent$i$i - (i32.add - (local.get $$119) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent$i$i) - (local.get $$arrayidx91$i$i) - ) - (local.set $$bk102$i$i - (i32.add - (local.get $$119) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk102$i$i) - (local.get $$119) - ) - (local.set $$fd103$i$i - (i32.add - (local.get $$119) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd103$i$i) - (local.get $$119) - ) - (br $do-once40) - ) - ) - (local.set $$200 - (i32.load - (local.get $$arrayidx91$i$i) - ) - ) - (local.set $$cmp106$i$i - (i32.eq - (local.get $$I57$0$i$i) - (i32.const 31) - ) - ) - (local.set $$shr110$i$i - (i32.shr_u - (local.get $$I57$0$i$i) - (i32.const 1) - ) - ) - (local.set $$sub113$i$i - (i32.sub - (i32.const 25) - (local.get $$shr110$i$i) - ) - ) - (local.set $$cond115$i$i - (if (result i32) - (local.get $$cmp106$i$i) - (i32.const 0) - (local.get $$sub113$i$i) - ) - ) - (local.set $$shl116$i$i - (i32.shl - (local.get $$sub$ptr$sub$i$i) - (local.get $$cond115$i$i) - ) - ) - (local.set $$K105$0$i$i - (local.get $$shl116$i$i) - ) - (local.set $$T$0$i$i - (local.get $$200) - ) - (loop $while-in74 - (block $while-out73 - (local.set $$head118$i$i - (i32.add - (local.get $$T$0$i$i) - (i32.const 4) - ) - ) - (local.set $$201 - (i32.load - (local.get $$head118$i$i) - ) - ) - (local.set $$and119$i$i - (i32.and - (local.get $$201) - (i32.const -8) - ) - ) - (local.set $$cmp120$i$i - (i32.eq - (local.get $$and119$i$i) - (local.get $$sub$ptr$sub$i$i) - ) - ) - (if - (local.get $$cmp120$i$i) - (block - (local.set $$T$0$i$i$lcssa - (local.get $$T$0$i$i) - ) - (local.set $label - (i32.const 307) - ) - (br $while-out73) - ) - ) - (local.set $$shr123$i$i - (i32.shr_u - (local.get $$K105$0$i$i) - (i32.const 31) - ) - ) - (local.set $$arrayidx126$i$i - (i32.add - (i32.add - (local.get $$T$0$i$i) - (i32.const 16) - ) - (i32.shl - (local.get $$shr123$i$i) - (i32.const 2) - ) - ) - ) - (local.set $$shl127$i$i - (i32.shl - (local.get $$K105$0$i$i) - (i32.const 1) - ) - ) - (local.set $$202 - (i32.load - (local.get $$arrayidx126$i$i) - ) - ) - (local.set $$cmp128$i$i - (i32.eq - (local.get $$202) - (i32.const 0) - ) - ) - (if - (local.get $$cmp128$i$i) - (block - (local.set $$T$0$i$i$lcssa284 - (local.get $$T$0$i$i) - ) - (local.set $$arrayidx126$i$i$lcssa - (local.get $$arrayidx126$i$i) - ) - (local.set $label - (i32.const 304) - ) - (br $while-out73) - ) - (block - (local.set $$K105$0$i$i - (local.get $$shl127$i$i) - ) - (local.set $$T$0$i$i - (local.get $$202) - ) - ) - ) - (br $while-in74) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 304) - ) - (block - (local.set $$203 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp133$i$i - (i32.lt_u - (local.get $$arrayidx126$i$i$lcssa) - (local.get $$203) - ) - ) - (if - (local.get $$cmp133$i$i) - (call $_abort) - (block - (i32.store - (local.get $$arrayidx126$i$i$lcssa) - (local.get $$119) - ) - (local.set $$parent138$i$i - (i32.add - (local.get $$119) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent138$i$i) - (local.get $$T$0$i$i$lcssa284) - ) - (local.set $$bk139$i$i - (i32.add - (local.get $$119) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk139$i$i) - (local.get $$119) - ) - (local.set $$fd140$i$i - (i32.add - (local.get $$119) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd140$i$i) - (local.get $$119) - ) - (br $do-once40) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 307) - ) - (block - (local.set $$fd148$i$i - (i32.add - (local.get $$T$0$i$i$lcssa) - (i32.const 8) - ) - ) - (local.set $$204 - (i32.load - (local.get $$fd148$i$i) - ) - ) - (local.set $$205 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp153$i$i - (i32.ge_u - (local.get $$204) - (local.get $$205) - ) - ) - (local.set $$not$cmp150$i$i - (i32.ge_u - (local.get $$T$0$i$i$lcssa) - (local.get $$205) - ) - ) - (local.set $$206 - (i32.and - (local.get $$cmp153$i$i) - (local.get $$not$cmp150$i$i) - ) - ) - (if - (local.get $$206) - (block - (local.set $$bk158$i$i - (i32.add - (local.get $$204) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk158$i$i) - (local.get $$119) - ) - (i32.store - (local.get $$fd148$i$i) - (local.get $$119) - ) - (local.set $$fd160$i$i - (i32.add - (local.get $$119) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd160$i$i) - (local.get $$204) - ) - (local.set $$bk161$i$i - (i32.add - (local.get $$119) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk161$i$i) - (local.get $$T$0$i$i$lcssa) - ) - (local.set $$parent162$i$i - (i32.add - (local.get $$119) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent162$i$i) - (i32.const 0) - ) - (br $do-once40) - ) - (call $_abort) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (local.set $$207 - (i32.load - (i32.const 188) - ) - ) - (local.set $$cmp257$i - (i32.gt_u - (local.get $$207) - (local.get $$nb$0) - ) - ) - (if - (local.get $$cmp257$i) - (block - (local.set $$sub260$i - (i32.sub - (local.get $$207) - (local.get $$nb$0) - ) - ) - (i32.store - (i32.const 188) - (local.get $$sub260$i) - ) - (local.set $$208 - (i32.load - (i32.const 200) - ) - ) - (local.set $$add$ptr262$i - (i32.add - (local.get $$208) - (local.get $$nb$0) - ) - ) - (i32.store - (i32.const 200) - (local.get $$add$ptr262$i) - ) - (local.set $$or264$i - (i32.or - (local.get $$sub260$i) - (i32.const 1) - ) - ) - (local.set $$head265$i - (i32.add - (local.get $$add$ptr262$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head265$i) - (local.get $$or264$i) - ) - (local.set $$or267$i - (i32.or - (local.get $$nb$0) - (i32.const 3) - ) - ) - (local.set $$head268$i - (i32.add - (local.get $$208) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head268$i) - (local.get $$or267$i) - ) - (local.set $$add$ptr269$i - (i32.add - (local.get $$208) - (i32.const 8) - ) - ) - (local.set $$retval$0 - (local.get $$add$ptr269$i) - ) - (return - (local.get $$retval$0) - ) - ) - ) - ) - ) - (local.set $$call275$i - (call $___errno_location) - ) - (i32.store - (local.get $$call275$i) - (i32.const 12) - ) - (local.set $$retval$0 - (i32.const 0) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_free (; 60 ;) (param $$mem i32) - (local $$$pre i32) - (local $$$pre$phiZ2D i32) - (local $$$pre312 i32) - (local $$$pre313 i32) - (local $$0 i32) - (local $$1 i32) - (local $$10 i32) - (local $$11 i32) - (local $$12 i32) - (local $$13 i32) - (local $$14 i32) - (local $$15 i32) - (local $$16 i32) - (local $$17 i32) - (local $$18 i32) - (local $$19 i32) - (local $$2 i32) - (local $$20 i32) - (local $$21 i32) - (local $$22 i32) - (local $$23 i32) - (local $$24 i32) - (local $$25 i32) - (local $$26 i32) - (local $$27 i32) - (local $$28 i32) - (local $$29 i32) - (local $$3 i32) - (local $$30 i32) - (local $$31 i32) - (local $$32 i32) - (local $$33 i32) - (local $$34 i32) - (local $$35 i32) - (local $$36 i32) - (local $$37 i32) - (local $$38 i32) - (local $$39 i32) - (local $$4 i32) - (local $$40 i32) - (local $$41 i32) - (local $$42 i32) - (local $$43 i32) - (local $$44 i32) - (local $$45 i32) - (local $$46 i32) - (local $$47 i32) - (local $$48 i32) - (local $$49 i32) - (local $$5 i32) - (local $$50 i32) - (local $$51 i32) - (local $$52 i32) - (local $$53 i32) - (local $$54 i32) - (local $$55 i32) - (local $$56 i32) - (local $$57 i32) - (local $$58 i32) - (local $$59 i32) - (local $$6 i32) - (local $$60 i32) - (local $$61 i32) - (local $$62 i32) - (local $$63 i32) - (local $$64 i32) - (local $$65 i32) - (local $$66 i32) - (local $$67 i32) - (local $$68 i32) - (local $$69 i32) - (local $$7 i32) - (local $$70 i32) - (local $$71 i32) - (local $$72 i32) - (local $$73 i32) - (local $$74 i32) - (local $$8 i32) - (local $$9 i32) - (local $$F510$0 i32) - (local $$I534$0 i32) - (local $$K583$0 i32) - (local $$R$1 i32) - (local $$R$1$lcssa i32) - (local $$R$3 i32) - (local $$R332$1 i32) - (local $$R332$1$lcssa i32) - (local $$R332$3 i32) - (local $$RP$1 i32) - (local $$RP$1$lcssa i32) - (local $$RP360$1 i32) - (local $$RP360$1$lcssa i32) - (local $$T$0 i32) - (local $$T$0$lcssa i32) - (local $$T$0$lcssa319 i32) - (local $$add$ptr i32) - (local $$add$ptr16 i32) - (local $$add$ptr217 i32) - (local $$add$ptr261 i32) - (local $$add$ptr482 i32) - (local $$add$ptr498 i32) - (local $$add$ptr6 i32) - (local $$add17 i32) - (local $$add246 i32) - (local $$add258 i32) - (local $$add267 i32) - (local $$add550 i32) - (local $$add555 i32) - (local $$add559 i32) - (local $$add561 i32) - (local $$add564 i32) - (local $$and i32) - (local $$and140 i32) - (local $$and210 i32) - (local $$and215 i32) - (local $$and232 i32) - (local $$and240 i32) - (local $$and266 i32) - (local $$and301 i32) - (local $$and410 i32) - (local $$and46 i32) - (local $$and495 i32) - (local $$and5 i32) - (local $$and512 i32) - (local $$and545 i32) - (local $$and549 i32) - (local $$and554 i32) - (local $$and563 i32) - (local $$and574 i32) - (local $$and592 i32) - (local $$and8 i32) - (local $$arrayidx i32) - (local $$arrayidx108 i32) - (local $$arrayidx113 i32) - (local $$arrayidx130 i32) - (local $$arrayidx149 i32) - (local $$arrayidx157 i32) - (local $$arrayidx182 i32) - (local $$arrayidx188 i32) - (local $$arrayidx198 i32) - (local $$arrayidx279 i32) - (local $$arrayidx362 i32) - (local $$arrayidx374 i32) - (local $$arrayidx379 i32) - (local $$arrayidx400 i32) - (local $$arrayidx419 i32) - (local $$arrayidx427 i32) - (local $$arrayidx454 i32) - (local $$arrayidx460 i32) - (local $$arrayidx470 i32) - (local $$arrayidx509 i32) - (local $$arrayidx567 i32) - (local $$arrayidx570 i32) - (local $$arrayidx599 i32) - (local $$arrayidx599$lcssa i32) - (local $$arrayidx99 i32) - (local $$bk i32) - (local $$bk275 i32) - (local $$bk286 i32) - (local $$bk321 i32) - (local $$bk333 i32) - (local $$bk34 i32) - (local $$bk343 i32) - (local $$bk529 i32) - (local $$bk531 i32) - (local $$bk580 i32) - (local $$bk611 i32) - (local $$bk631 i32) - (local $$bk634 i32) - (local $$bk66 i32) - (local $$bk73 i32) - (local $$bk82 i32) - (local $$child i32) - (local $$child171 i32) - (local $$child361 i32) - (local $$child443 i32) - (local $$child569 i32) - (local $$cmp i32) - (local $$cmp$i i32) - (local $$cmp1 i32) - (local $$cmp100 i32) - (local $$cmp104 i32) - (local $$cmp109 i32) - (local $$cmp114 i32) - (local $$cmp118 i32) - (local $$cmp127 i32) - (local $$cmp13 i32) - (local $$cmp131 i32) - (local $$cmp143 i32) - (local $$cmp150 i32) - (local $$cmp162 i32) - (local $$cmp165 i32) - (local $$cmp173 i32) - (local $$cmp176 i32) - (local $$cmp18 i32) - (local $$cmp189 i32) - (local $$cmp192 i32) - (local $$cmp2 i32) - (local $$cmp211 i32) - (local $$cmp22 i32) - (local $$cmp228 i32) - (local $$cmp243 i32) - (local $$cmp249 i32) - (local $$cmp25 i32) - (local $$cmp255 i32) - (local $$cmp269 i32) - (local $$cmp280 i32) - (local $$cmp283 i32) - (local $$cmp287 i32) - (local $$cmp29 i32) - (local $$cmp296 i32) - (local $$cmp305 i32) - (local $$cmp308 i32) - (local $$cmp31 i32) - (local $$cmp312 i32) - (local $$cmp334 i32) - (local $$cmp340 i32) - (local $$cmp344 i32) - (local $$cmp348 i32) - (local $$cmp35 i32) - (local $$cmp363 i32) - (local $$cmp368 i32) - (local $$cmp375 i32) - (local $$cmp380 i32) - (local $$cmp386 i32) - (local $$cmp395 i32) - (local $$cmp401 i32) - (local $$cmp413 i32) - (local $$cmp42 i32) - (local $$cmp420 i32) - (local $$cmp432 i32) - (local $$cmp435 i32) - (local $$cmp445 i32) - (local $$cmp448 i32) - (local $$cmp461 i32) - (local $$cmp464 i32) - (local $$cmp484 i32) - (local $$cmp50 i32) - (local $$cmp502 i32) - (local $$cmp519 i32) - (local $$cmp53 i32) - (local $$cmp536 i32) - (local $$cmp540 i32) - (local $$cmp57 i32) - (local $$cmp584 i32) - (local $$cmp593 i32) - (local $$cmp601 i32) - (local $$cmp605 i32) - (local $$cmp624 i32) - (local $$cmp640 i32) - (local $$cmp74 i32) - (local $$cmp80 i32) - (local $$cmp83 i32) - (local $$cmp87 i32) - (local $$cond i32) - (local $$cond291 i32) - (local $$cond292 i32) - (local $$dec i32) - (local $$fd i32) - (local $$fd273 i32) - (local $$fd311 i32) - (local $$fd322$pre$phiZ2D i32) - (local $$fd338 i32) - (local $$fd347 i32) - (local $$fd530 i32) - (local $$fd56 i32) - (local $$fd581 i32) - (local $$fd612 i32) - (local $$fd620 i32) - (local $$fd633 i32) - (local $$fd67$pre$phiZ2D i32) - (local $$fd78 i32) - (local $$fd86 i32) - (local $$head i32) - (local $$head209 i32) - (local $$head216 i32) - (local $$head231 i32) - (local $$head248 i32) - (local $$head260 i32) - (local $$head481 i32) - (local $$head497 i32) - (local $$head591 i32) - (local $$idx$neg i32) - (local $$index i32) - (local $$index399 i32) - (local $$index568 i32) - (local $$neg i32) - (local $$neg139 i32) - (local $$neg300 i32) - (local $$neg409 i32) - (local $$next4$i i32) - (local $$not$cmp621 i32) - (local $$or i32) - (local $$or247 i32) - (local $$or259 i32) - (local $$or480 i32) - (local $$or496 i32) - (local $$or516 i32) - (local $$or578 i32) - (local $$p$1 i32) - (local $$parent i32) - (local $$parent170 i32) - (local $$parent183 i32) - (local $$parent199 i32) - (local $$parent331 i32) - (local $$parent442 i32) - (local $$parent455 i32) - (local $$parent471 i32) - (local $$parent579 i32) - (local $$parent610 i32) - (local $$parent635 i32) - (local $$psize$1 i32) - (local $$psize$2 i32) - (local $$shl i32) - (local $$shl138 i32) - (local $$shl278 i32) - (local $$shl299 i32) - (local $$shl408 i32) - (local $$shl45 i32) - (local $$shl508 i32) - (local $$shl511 i32) - (local $$shl546 i32) - (local $$shl551 i32) - (local $$shl557 i32) - (local $$shl560 i32) - (local $$shl573 i32) - (local $$shl590 i32) - (local $$shl600 i32) - (local $$shr i32) - (local $$shr268 i32) - (local $$shr501 i32) - (local $$shr535 i32) - (local $$shr544 i32) - (local $$shr548 i32) - (local $$shr553 i32) - (local $$shr558 i32) - (local $$shr562 i32) - (local $$shr586 i32) - (local $$shr596 i32) - (local $$sp$0$i i32) - (local $$sp$0$in$i i32) - (local $$sub i32) - (local $$sub547 i32) - (local $$sub552 i32) - (local $$sub556 i32) - (local $$sub589 i32) - (local $$tobool233 i32) - (local $$tobool241 i32) - (local $$tobool513 i32) - (local $$tobool575 i32) - (local $$tobool9 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$cmp - (i32.eq - (local.get $$mem) - (i32.const 0) - ) - ) - (if - (local.get $$cmp) - (return) - ) - (local.set $$add$ptr - (i32.add - (local.get $$mem) - (i32.const -8) - ) - ) - (local.set $$0 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp1 - (i32.lt_u - (local.get $$add$ptr) - (local.get $$0) - ) - ) - (if - (local.get $$cmp1) - (call $_abort) - ) - (local.set $$head - (i32.add - (local.get $$mem) - (i32.const -4) - ) - ) - (local.set $$1 - (i32.load - (local.get $$head) - ) - ) - (local.set $$and - (i32.and - (local.get $$1) - (i32.const 3) - ) - ) - (local.set $$cmp2 - (i32.eq - (local.get $$and) - (i32.const 1) - ) - ) - (if - (local.get $$cmp2) - (call $_abort) - ) - (local.set $$and5 - (i32.and - (local.get $$1) - (i32.const -8) - ) - ) - (local.set $$add$ptr6 - (i32.add - (local.get $$add$ptr) - (local.get $$and5) - ) - ) - (local.set $$and8 - (i32.and - (local.get $$1) - (i32.const 1) - ) - ) - (local.set $$tobool9 - (i32.eq - (local.get $$and8) - (i32.const 0) - ) - ) - (block $do-once - (if - (local.get $$tobool9) - (block - (local.set $$2 - (i32.load - (local.get $$add$ptr) - ) - ) - (local.set $$cmp13 - (i32.eq - (local.get $$and) - (i32.const 0) - ) - ) - (if - (local.get $$cmp13) - (return) - ) - (local.set $$idx$neg - (i32.sub - (i32.const 0) - (local.get $$2) - ) - ) - (local.set $$add$ptr16 - (i32.add - (local.get $$add$ptr) - (local.get $$idx$neg) - ) - ) - (local.set $$add17 - (i32.add - (local.get $$2) - (local.get $$and5) - ) - ) - (local.set $$cmp18 - (i32.lt_u - (local.get $$add$ptr16) - (local.get $$0) - ) - ) - (if - (local.get $$cmp18) - (call $_abort) - ) - (local.set $$3 - (i32.load - (i32.const 196) - ) - ) - (local.set $$cmp22 - (i32.eq - (local.get $$add$ptr16) - (local.get $$3) - ) - ) - (if - (local.get $$cmp22) - (block - (local.set $$head209 - (i32.add - (local.get $$add$ptr6) - (i32.const 4) - ) - ) - (local.set $$27 - (i32.load - (local.get $$head209) - ) - ) - (local.set $$and210 - (i32.and - (local.get $$27) - (i32.const 3) - ) - ) - (local.set $$cmp211 - (i32.eq - (local.get $$and210) - (i32.const 3) - ) - ) - (if - (i32.eqz - (local.get $$cmp211) - ) - (block - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - (br $do-once) - ) - ) - (i32.store - (i32.const 184) - (local.get $$add17) - ) - (local.set $$and215 - (i32.and - (local.get $$27) - (i32.const -2) - ) - ) - (i32.store - (local.get $$head209) - (local.get $$and215) - ) - (local.set $$or - (i32.or - (local.get $$add17) - (i32.const 1) - ) - ) - (local.set $$head216 - (i32.add - (local.get $$add$ptr16) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head216) - (local.get $$or) - ) - (local.set $$add$ptr217 - (i32.add - (local.get $$add$ptr16) - (local.get $$add17) - ) - ) - (i32.store - (local.get $$add$ptr217) - (local.get $$add17) - ) - (return) - ) - ) - (local.set $$shr - (i32.shr_u - (local.get $$2) - (i32.const 3) - ) - ) - (local.set $$cmp25 - (i32.lt_u - (local.get $$2) - (i32.const 256) - ) - ) - (if - (local.get $$cmp25) - (block - (local.set $$fd - (i32.add - (local.get $$add$ptr16) - (i32.const 8) - ) - ) - (local.set $$4 - (i32.load - (local.get $$fd) - ) - ) - (local.set $$bk - (i32.add - (local.get $$add$ptr16) - (i32.const 12) - ) - ) - (local.set $$5 - (i32.load - (local.get $$bk) - ) - ) - (local.set $$shl - (i32.shl - (local.get $$shr) - (i32.const 1) - ) - ) - (local.set $$arrayidx - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl) - (i32.const 2) - ) - ) - ) - (local.set $$cmp29 - (i32.eq - (local.get $$4) - (local.get $$arrayidx) - ) - ) - (if - (i32.eqz - (local.get $$cmp29) - ) - (block - (local.set $$cmp31 - (i32.lt_u - (local.get $$4) - (local.get $$0) - ) - ) - (if - (local.get $$cmp31) - (call $_abort) - ) - (local.set $$bk34 - (i32.add - (local.get $$4) - (i32.const 12) - ) - ) - (local.set $$6 - (i32.load - (local.get $$bk34) - ) - ) - (local.set $$cmp35 - (i32.eq - (local.get $$6) - (local.get $$add$ptr16) - ) - ) - (if - (i32.eqz - (local.get $$cmp35) - ) - (call $_abort) - ) - ) - ) - (local.set $$cmp42 - (i32.eq - (local.get $$5) - (local.get $$4) - ) - ) - (if - (local.get $$cmp42) - (block - (local.set $$shl45 - (i32.shl - (i32.const 1) - (local.get $$shr) - ) - ) - (local.set $$neg - (i32.xor - (local.get $$shl45) - (i32.const -1) - ) - ) - (local.set $$7 - (i32.load - (i32.const 176) - ) - ) - (local.set $$and46 - (i32.and - (local.get $$7) - (local.get $$neg) - ) - ) - (i32.store - (i32.const 176) - (local.get $$and46) - ) - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - (br $do-once) - ) - ) - (local.set $$cmp50 - (i32.eq - (local.get $$5) - (local.get $$arrayidx) - ) - ) - (if - (local.get $$cmp50) - (block - (local.set $$$pre313 - (i32.add - (local.get $$5) - (i32.const 8) - ) - ) - (local.set $$fd67$pre$phiZ2D - (local.get $$$pre313) - ) - ) - (block - (local.set $$cmp53 - (i32.lt_u - (local.get $$5) - (local.get $$0) - ) - ) - (if - (local.get $$cmp53) - (call $_abort) - ) - (local.set $$fd56 - (i32.add - (local.get $$5) - (i32.const 8) - ) - ) - (local.set $$8 - (i32.load - (local.get $$fd56) - ) - ) - (local.set $$cmp57 - (i32.eq - (local.get $$8) - (local.get $$add$ptr16) - ) - ) - (if - (local.get $$cmp57) - (local.set $$fd67$pre$phiZ2D - (local.get $$fd56) - ) - (call $_abort) - ) - ) - ) - (local.set $$bk66 - (i32.add - (local.get $$4) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk66) - (local.get $$5) - ) - (i32.store - (local.get $$fd67$pre$phiZ2D) - (local.get $$4) - ) - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - (br $do-once) - ) - ) - (local.set $$parent - (i32.add - (local.get $$add$ptr16) - (i32.const 24) - ) - ) - (local.set $$9 - (i32.load - (local.get $$parent) - ) - ) - (local.set $$bk73 - (i32.add - (local.get $$add$ptr16) - (i32.const 12) - ) - ) - (local.set $$10 - (i32.load - (local.get $$bk73) - ) - ) - (local.set $$cmp74 - (i32.eq - (local.get $$10) - (local.get $$add$ptr16) - ) - ) - (block $do-once0 - (if - (local.get $$cmp74) - (block - (local.set $$child - (i32.add - (local.get $$add$ptr16) - (i32.const 16) - ) - ) - (local.set $$arrayidx99 - (i32.add - (local.get $$child) - (i32.const 4) - ) - ) - (local.set $$14 - (i32.load - (local.get $$arrayidx99) - ) - ) - (local.set $$cmp100 - (i32.eq - (local.get $$14) - (i32.const 0) - ) - ) - (if - (local.get $$cmp100) - (block - (local.set $$15 - (i32.load - (local.get $$child) - ) - ) - (local.set $$cmp104 - (i32.eq - (local.get $$15) - (i32.const 0) - ) - ) - (if - (local.get $$cmp104) - (block - (local.set $$R$3 - (i32.const 0) - ) - (br $do-once0) - ) - (block - (local.set $$R$1 - (local.get $$15) - ) - (local.set $$RP$1 - (local.get $$child) - ) - ) - ) - ) - (block - (local.set $$R$1 - (local.get $$14) - ) - (local.set $$RP$1 - (local.get $$arrayidx99) - ) - ) - ) - (loop $while-in - (block $while-out - (local.set $$arrayidx108 - (i32.add - (local.get $$R$1) - (i32.const 20) - ) - ) - (local.set $$16 - (i32.load - (local.get $$arrayidx108) - ) - ) - (local.set $$cmp109 - (i32.eq - (local.get $$16) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp109) - ) - (block - (local.set $$R$1 - (local.get $$16) - ) - (local.set $$RP$1 - (local.get $$arrayidx108) - ) - (br $while-in) - ) - ) - (local.set $$arrayidx113 - (i32.add - (local.get $$R$1) - (i32.const 16) - ) - ) - (local.set $$17 - (i32.load - (local.get $$arrayidx113) - ) - ) - (local.set $$cmp114 - (i32.eq - (local.get $$17) - (i32.const 0) - ) - ) - (if - (local.get $$cmp114) - (block - (local.set $$R$1$lcssa - (local.get $$R$1) - ) - (local.set $$RP$1$lcssa - (local.get $$RP$1) - ) - (br $while-out) - ) - (block - (local.set $$R$1 - (local.get $$17) - ) - (local.set $$RP$1 - (local.get $$arrayidx113) - ) - ) - ) - (br $while-in) - ) - ) - (local.set $$cmp118 - (i32.lt_u - (local.get $$RP$1$lcssa) - (local.get $$0) - ) - ) - (if - (local.get $$cmp118) - (call $_abort) - (block - (i32.store - (local.get $$RP$1$lcssa) - (i32.const 0) - ) - (local.set $$R$3 - (local.get $$R$1$lcssa) - ) - (br $do-once0) - ) - ) - ) - (block - (local.set $$fd78 - (i32.add - (local.get $$add$ptr16) - (i32.const 8) - ) - ) - (local.set $$11 - (i32.load - (local.get $$fd78) - ) - ) - (local.set $$cmp80 - (i32.lt_u - (local.get $$11) - (local.get $$0) - ) - ) - (if - (local.get $$cmp80) - (call $_abort) - ) - (local.set $$bk82 - (i32.add - (local.get $$11) - (i32.const 12) - ) - ) - (local.set $$12 - (i32.load - (local.get $$bk82) - ) - ) - (local.set $$cmp83 - (i32.eq - (local.get $$12) - (local.get $$add$ptr16) - ) - ) - (if - (i32.eqz - (local.get $$cmp83) - ) - (call $_abort) - ) - (local.set $$fd86 - (i32.add - (local.get $$10) - (i32.const 8) - ) - ) - (local.set $$13 - (i32.load - (local.get $$fd86) - ) - ) - (local.set $$cmp87 - (i32.eq - (local.get $$13) - (local.get $$add$ptr16) - ) - ) - (if - (local.get $$cmp87) - (block - (i32.store - (local.get $$bk82) - (local.get $$10) - ) - (i32.store - (local.get $$fd86) - (local.get $$11) - ) - (local.set $$R$3 - (local.get $$10) - ) - (br $do-once0) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$cmp127 - (i32.eq - (local.get $$9) - (i32.const 0) - ) - ) - (if - (local.get $$cmp127) - (block - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - ) - (block - (local.set $$index - (i32.add - (local.get $$add$ptr16) - (i32.const 28) - ) - ) - (local.set $$18 - (i32.load - (local.get $$index) - ) - ) - (local.set $$arrayidx130 - (i32.add - (i32.const 480) - (i32.shl - (local.get $$18) - (i32.const 2) - ) - ) - ) - (local.set $$19 - (i32.load - (local.get $$arrayidx130) - ) - ) - (local.set $$cmp131 - (i32.eq - (local.get $$add$ptr16) - (local.get $$19) - ) - ) - (if - (local.get $$cmp131) - (block - (i32.store - (local.get $$arrayidx130) - (local.get $$R$3) - ) - (local.set $$cond291 - (i32.eq - (local.get $$R$3) - (i32.const 0) - ) - ) - (if - (local.get $$cond291) - (block - (local.set $$shl138 - (i32.shl - (i32.const 1) - (local.get $$18) - ) - ) - (local.set $$neg139 - (i32.xor - (local.get $$shl138) - (i32.const -1) - ) - ) - (local.set $$20 - (i32.load - (i32.const 180) - ) - ) - (local.set $$and140 - (i32.and - (local.get $$20) - (local.get $$neg139) - ) - ) - (i32.store - (i32.const 180) - (local.get $$and140) - ) - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - (br $do-once) - ) - ) - ) - (block - (local.set $$21 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp143 - (i32.lt_u - (local.get $$9) - (local.get $$21) - ) - ) - (if - (local.get $$cmp143) - (call $_abort) - ) - (local.set $$arrayidx149 - (i32.add - (local.get $$9) - (i32.const 16) - ) - ) - (local.set $$22 - (i32.load - (local.get $$arrayidx149) - ) - ) - (local.set $$cmp150 - (i32.eq - (local.get $$22) - (local.get $$add$ptr16) - ) - ) - (if - (local.get $$cmp150) - (i32.store - (local.get $$arrayidx149) - (local.get $$R$3) - ) - (block - (local.set $$arrayidx157 - (i32.add - (local.get $$9) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx157) - (local.get $$R$3) - ) - ) - ) - (local.set $$cmp162 - (i32.eq - (local.get $$R$3) - (i32.const 0) - ) - ) - (if - (local.get $$cmp162) - (block - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - (br $do-once) - ) - ) - ) - ) - (local.set $$23 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp165 - (i32.lt_u - (local.get $$R$3) - (local.get $$23) - ) - ) - (if - (local.get $$cmp165) - (call $_abort) - ) - (local.set $$parent170 - (i32.add - (local.get $$R$3) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent170) - (local.get $$9) - ) - (local.set $$child171 - (i32.add - (local.get $$add$ptr16) - (i32.const 16) - ) - ) - (local.set $$24 - (i32.load - (local.get $$child171) - ) - ) - (local.set $$cmp173 - (i32.eq - (local.get $$24) - (i32.const 0) - ) - ) - (block $do-once2 - (if - (i32.eqz - (local.get $$cmp173) - ) - (block - (local.set $$cmp176 - (i32.lt_u - (local.get $$24) - (local.get $$23) - ) - ) - (if - (local.get $$cmp176) - (call $_abort) - (block - (local.set $$arrayidx182 - (i32.add - (local.get $$R$3) - (i32.const 16) - ) - ) - (i32.store - (local.get $$arrayidx182) - (local.get $$24) - ) - (local.set $$parent183 - (i32.add - (local.get $$24) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent183) - (local.get $$R$3) - ) - (br $do-once2) - ) - ) - ) - ) - ) - (local.set $$arrayidx188 - (i32.add - (local.get $$child171) - (i32.const 4) - ) - ) - (local.set $$25 - (i32.load - (local.get $$arrayidx188) - ) - ) - (local.set $$cmp189 - (i32.eq - (local.get $$25) - (i32.const 0) - ) - ) - (if - (local.get $$cmp189) - (block - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - ) - (block - (local.set $$26 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp192 - (i32.lt_u - (local.get $$25) - (local.get $$26) - ) - ) - (if - (local.get $$cmp192) - (call $_abort) - (block - (local.set $$arrayidx198 - (i32.add - (local.get $$R$3) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx198) - (local.get $$25) - ) - (local.set $$parent199 - (i32.add - (local.get $$25) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent199) - (local.get $$R$3) - ) - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - (br $do-once) - ) - ) - ) - ) - ) - ) - ) - (block - (local.set $$p$1 - (local.get $$add$ptr) - ) - (local.set $$psize$1 - (local.get $$and5) - ) - ) - ) - ) - (local.set $$cmp228 - (i32.lt_u - (local.get $$p$1) - (local.get $$add$ptr6) - ) - ) - (if - (i32.eqz - (local.get $$cmp228) - ) - (call $_abort) - ) - (local.set $$head231 - (i32.add - (local.get $$add$ptr6) - (i32.const 4) - ) - ) - (local.set $$28 - (i32.load - (local.get $$head231) - ) - ) - (local.set $$and232 - (i32.and - (local.get $$28) - (i32.const 1) - ) - ) - (local.set $$tobool233 - (i32.eq - (local.get $$and232) - (i32.const 0) - ) - ) - (if - (local.get $$tobool233) - (call $_abort) - ) - (local.set $$and240 - (i32.and - (local.get $$28) - (i32.const 2) - ) - ) - (local.set $$tobool241 - (i32.eq - (local.get $$and240) - (i32.const 0) - ) - ) - (if - (local.get $$tobool241) - (block - (local.set $$29 - (i32.load - (i32.const 200) - ) - ) - (local.set $$cmp243 - (i32.eq - (local.get $$add$ptr6) - (local.get $$29) - ) - ) - (if - (local.get $$cmp243) - (block - (local.set $$30 - (i32.load - (i32.const 188) - ) - ) - (local.set $$add246 - (i32.add - (local.get $$30) - (local.get $$psize$1) - ) - ) - (i32.store - (i32.const 188) - (local.get $$add246) - ) - (i32.store - (i32.const 200) - (local.get $$p$1) - ) - (local.set $$or247 - (i32.or - (local.get $$add246) - (i32.const 1) - ) - ) - (local.set $$head248 - (i32.add - (local.get $$p$1) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head248) - (local.get $$or247) - ) - (local.set $$31 - (i32.load - (i32.const 196) - ) - ) - (local.set $$cmp249 - (i32.eq - (local.get $$p$1) - (local.get $$31) - ) - ) - (if - (i32.eqz - (local.get $$cmp249) - ) - (return) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (i32.store - (i32.const 184) - (i32.const 0) - ) - (return) - ) - ) - (local.set $$32 - (i32.load - (i32.const 196) - ) - ) - (local.set $$cmp255 - (i32.eq - (local.get $$add$ptr6) - (local.get $$32) - ) - ) - (if - (local.get $$cmp255) - (block - (local.set $$33 - (i32.load - (i32.const 184) - ) - ) - (local.set $$add258 - (i32.add - (local.get $$33) - (local.get $$psize$1) - ) - ) - (i32.store - (i32.const 184) - (local.get $$add258) - ) - (i32.store - (i32.const 196) - (local.get $$p$1) - ) - (local.set $$or259 - (i32.or - (local.get $$add258) - (i32.const 1) - ) - ) - (local.set $$head260 - (i32.add - (local.get $$p$1) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head260) - (local.get $$or259) - ) - (local.set $$add$ptr261 - (i32.add - (local.get $$p$1) - (local.get $$add258) - ) - ) - (i32.store - (local.get $$add$ptr261) - (local.get $$add258) - ) - (return) - ) - ) - (local.set $$and266 - (i32.and - (local.get $$28) - (i32.const -8) - ) - ) - (local.set $$add267 - (i32.add - (local.get $$and266) - (local.get $$psize$1) - ) - ) - (local.set $$shr268 - (i32.shr_u - (local.get $$28) - (i32.const 3) - ) - ) - (local.set $$cmp269 - (i32.lt_u - (local.get $$28) - (i32.const 256) - ) - ) - (block $do-once4 - (if - (local.get $$cmp269) - (block - (local.set $$fd273 - (i32.add - (local.get $$add$ptr6) - (i32.const 8) - ) - ) - (local.set $$34 - (i32.load - (local.get $$fd273) - ) - ) - (local.set $$bk275 - (i32.add - (local.get $$add$ptr6) - (i32.const 12) - ) - ) - (local.set $$35 - (i32.load - (local.get $$bk275) - ) - ) - (local.set $$shl278 - (i32.shl - (local.get $$shr268) - (i32.const 1) - ) - ) - (local.set $$arrayidx279 - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl278) - (i32.const 2) - ) - ) - ) - (local.set $$cmp280 - (i32.eq - (local.get $$34) - (local.get $$arrayidx279) - ) - ) - (if - (i32.eqz - (local.get $$cmp280) - ) - (block - (local.set $$36 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp283 - (i32.lt_u - (local.get $$34) - (local.get $$36) - ) - ) - (if - (local.get $$cmp283) - (call $_abort) - ) - (local.set $$bk286 - (i32.add - (local.get $$34) - (i32.const 12) - ) - ) - (local.set $$37 - (i32.load - (local.get $$bk286) - ) - ) - (local.set $$cmp287 - (i32.eq - (local.get $$37) - (local.get $$add$ptr6) - ) - ) - (if - (i32.eqz - (local.get $$cmp287) - ) - (call $_abort) - ) - ) - ) - (local.set $$cmp296 - (i32.eq - (local.get $$35) - (local.get $$34) - ) - ) - (if - (local.get $$cmp296) - (block - (local.set $$shl299 - (i32.shl - (i32.const 1) - (local.get $$shr268) - ) - ) - (local.set $$neg300 - (i32.xor - (local.get $$shl299) - (i32.const -1) - ) - ) - (local.set $$38 - (i32.load - (i32.const 176) - ) - ) - (local.set $$and301 - (i32.and - (local.get $$38) - (local.get $$neg300) - ) - ) - (i32.store - (i32.const 176) - (local.get $$and301) - ) - (br $do-once4) - ) - ) - (local.set $$cmp305 - (i32.eq - (local.get $$35) - (local.get $$arrayidx279) - ) - ) - (if - (local.get $$cmp305) - (block - (local.set $$$pre312 - (i32.add - (local.get $$35) - (i32.const 8) - ) - ) - (local.set $$fd322$pre$phiZ2D - (local.get $$$pre312) - ) - ) - (block - (local.set $$39 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp308 - (i32.lt_u - (local.get $$35) - (local.get $$39) - ) - ) - (if - (local.get $$cmp308) - (call $_abort) - ) - (local.set $$fd311 - (i32.add - (local.get $$35) - (i32.const 8) - ) - ) - (local.set $$40 - (i32.load - (local.get $$fd311) - ) - ) - (local.set $$cmp312 - (i32.eq - (local.get $$40) - (local.get $$add$ptr6) - ) - ) - (if - (local.get $$cmp312) - (local.set $$fd322$pre$phiZ2D - (local.get $$fd311) - ) - (call $_abort) - ) - ) - ) - (local.set $$bk321 - (i32.add - (local.get $$34) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk321) - (local.get $$35) - ) - (i32.store - (local.get $$fd322$pre$phiZ2D) - (local.get $$34) - ) - ) - (block - (local.set $$parent331 - (i32.add - (local.get $$add$ptr6) - (i32.const 24) - ) - ) - (local.set $$41 - (i32.load - (local.get $$parent331) - ) - ) - (local.set $$bk333 - (i32.add - (local.get $$add$ptr6) - (i32.const 12) - ) - ) - (local.set $$42 - (i32.load - (local.get $$bk333) - ) - ) - (local.set $$cmp334 - (i32.eq - (local.get $$42) - (local.get $$add$ptr6) - ) - ) - (block $do-once6 - (if - (local.get $$cmp334) - (block - (local.set $$child361 - (i32.add - (local.get $$add$ptr6) - (i32.const 16) - ) - ) - (local.set $$arrayidx362 - (i32.add - (local.get $$child361) - (i32.const 4) - ) - ) - (local.set $$47 - (i32.load - (local.get $$arrayidx362) - ) - ) - (local.set $$cmp363 - (i32.eq - (local.get $$47) - (i32.const 0) - ) - ) - (if - (local.get $$cmp363) - (block - (local.set $$48 - (i32.load - (local.get $$child361) - ) - ) - (local.set $$cmp368 - (i32.eq - (local.get $$48) - (i32.const 0) - ) - ) - (if - (local.get $$cmp368) - (block - (local.set $$R332$3 - (i32.const 0) - ) - (br $do-once6) - ) - (block - (local.set $$R332$1 - (local.get $$48) - ) - (local.set $$RP360$1 - (local.get $$child361) - ) - ) - ) - ) - (block - (local.set $$R332$1 - (local.get $$47) - ) - (local.set $$RP360$1 - (local.get $$arrayidx362) - ) - ) - ) - (loop $while-in9 - (block $while-out8 - (local.set $$arrayidx374 - (i32.add - (local.get $$R332$1) - (i32.const 20) - ) - ) - (local.set $$49 - (i32.load - (local.get $$arrayidx374) - ) - ) - (local.set $$cmp375 - (i32.eq - (local.get $$49) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp375) - ) - (block - (local.set $$R332$1 - (local.get $$49) - ) - (local.set $$RP360$1 - (local.get $$arrayidx374) - ) - (br $while-in9) - ) - ) - (local.set $$arrayidx379 - (i32.add - (local.get $$R332$1) - (i32.const 16) - ) - ) - (local.set $$50 - (i32.load - (local.get $$arrayidx379) - ) - ) - (local.set $$cmp380 - (i32.eq - (local.get $$50) - (i32.const 0) - ) - ) - (if - (local.get $$cmp380) - (block - (local.set $$R332$1$lcssa - (local.get $$R332$1) - ) - (local.set $$RP360$1$lcssa - (local.get $$RP360$1) - ) - (br $while-out8) - ) - (block - (local.set $$R332$1 - (local.get $$50) - ) - (local.set $$RP360$1 - (local.get $$arrayidx379) - ) - ) - ) - (br $while-in9) - ) - ) - (local.set $$51 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp386 - (i32.lt_u - (local.get $$RP360$1$lcssa) - (local.get $$51) - ) - ) - (if - (local.get $$cmp386) - (call $_abort) - (block - (i32.store - (local.get $$RP360$1$lcssa) - (i32.const 0) - ) - (local.set $$R332$3 - (local.get $$R332$1$lcssa) - ) - (br $do-once6) - ) - ) - ) - (block - (local.set $$fd338 - (i32.add - (local.get $$add$ptr6) - (i32.const 8) - ) - ) - (local.set $$43 - (i32.load - (local.get $$fd338) - ) - ) - (local.set $$44 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp340 - (i32.lt_u - (local.get $$43) - (local.get $$44) - ) - ) - (if - (local.get $$cmp340) - (call $_abort) - ) - (local.set $$bk343 - (i32.add - (local.get $$43) - (i32.const 12) - ) - ) - (local.set $$45 - (i32.load - (local.get $$bk343) - ) - ) - (local.set $$cmp344 - (i32.eq - (local.get $$45) - (local.get $$add$ptr6) - ) - ) - (if - (i32.eqz - (local.get $$cmp344) - ) - (call $_abort) - ) - (local.set $$fd347 - (i32.add - (local.get $$42) - (i32.const 8) - ) - ) - (local.set $$46 - (i32.load - (local.get $$fd347) - ) - ) - (local.set $$cmp348 - (i32.eq - (local.get $$46) - (local.get $$add$ptr6) - ) - ) - (if - (local.get $$cmp348) - (block - (i32.store - (local.get $$bk343) - (local.get $$42) - ) - (i32.store - (local.get $$fd347) - (local.get $$43) - ) - (local.set $$R332$3 - (local.get $$42) - ) - (br $do-once6) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$cmp395 - (i32.eq - (local.get $$41) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp395) - ) - (block - (local.set $$index399 - (i32.add - (local.get $$add$ptr6) - (i32.const 28) - ) - ) - (local.set $$52 - (i32.load - (local.get $$index399) - ) - ) - (local.set $$arrayidx400 - (i32.add - (i32.const 480) - (i32.shl - (local.get $$52) - (i32.const 2) - ) - ) - ) - (local.set $$53 - (i32.load - (local.get $$arrayidx400) - ) - ) - (local.set $$cmp401 - (i32.eq - (local.get $$add$ptr6) - (local.get $$53) - ) - ) - (if - (local.get $$cmp401) - (block - (i32.store - (local.get $$arrayidx400) - (local.get $$R332$3) - ) - (local.set $$cond292 - (i32.eq - (local.get $$R332$3) - (i32.const 0) - ) - ) - (if - (local.get $$cond292) - (block - (local.set $$shl408 - (i32.shl - (i32.const 1) - (local.get $$52) - ) - ) - (local.set $$neg409 - (i32.xor - (local.get $$shl408) - (i32.const -1) - ) - ) - (local.set $$54 - (i32.load - (i32.const 180) - ) - ) - (local.set $$and410 - (i32.and - (local.get $$54) - (local.get $$neg409) - ) - ) - (i32.store - (i32.const 180) - (local.get $$and410) - ) - (br $do-once4) - ) - ) - ) - (block - (local.set $$55 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp413 - (i32.lt_u - (local.get $$41) - (local.get $$55) - ) - ) - (if - (local.get $$cmp413) - (call $_abort) - ) - (local.set $$arrayidx419 - (i32.add - (local.get $$41) - (i32.const 16) - ) - ) - (local.set $$56 - (i32.load - (local.get $$arrayidx419) - ) - ) - (local.set $$cmp420 - (i32.eq - (local.get $$56) - (local.get $$add$ptr6) - ) - ) - (if - (local.get $$cmp420) - (i32.store - (local.get $$arrayidx419) - (local.get $$R332$3) - ) - (block - (local.set $$arrayidx427 - (i32.add - (local.get $$41) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx427) - (local.get $$R332$3) - ) - ) - ) - (local.set $$cmp432 - (i32.eq - (local.get $$R332$3) - (i32.const 0) - ) - ) - (if - (local.get $$cmp432) - (br $do-once4) - ) - ) - ) - (local.set $$57 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp435 - (i32.lt_u - (local.get $$R332$3) - (local.get $$57) - ) - ) - (if - (local.get $$cmp435) - (call $_abort) - ) - (local.set $$parent442 - (i32.add - (local.get $$R332$3) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent442) - (local.get $$41) - ) - (local.set $$child443 - (i32.add - (local.get $$add$ptr6) - (i32.const 16) - ) - ) - (local.set $$58 - (i32.load - (local.get $$child443) - ) - ) - (local.set $$cmp445 - (i32.eq - (local.get $$58) - (i32.const 0) - ) - ) - (block $do-once10 - (if - (i32.eqz - (local.get $$cmp445) - ) - (block - (local.set $$cmp448 - (i32.lt_u - (local.get $$58) - (local.get $$57) - ) - ) - (if - (local.get $$cmp448) - (call $_abort) - (block - (local.set $$arrayidx454 - (i32.add - (local.get $$R332$3) - (i32.const 16) - ) - ) - (i32.store - (local.get $$arrayidx454) - (local.get $$58) - ) - (local.set $$parent455 - (i32.add - (local.get $$58) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent455) - (local.get $$R332$3) - ) - (br $do-once10) - ) - ) - ) - ) - ) - (local.set $$arrayidx460 - (i32.add - (local.get $$child443) - (i32.const 4) - ) - ) - (local.set $$59 - (i32.load - (local.get $$arrayidx460) - ) - ) - (local.set $$cmp461 - (i32.eq - (local.get $$59) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp461) - ) - (block - (local.set $$60 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp464 - (i32.lt_u - (local.get $$59) - (local.get $$60) - ) - ) - (if - (local.get $$cmp464) - (call $_abort) - (block - (local.set $$arrayidx470 - (i32.add - (local.get $$R332$3) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx470) - (local.get $$59) - ) - (local.set $$parent471 - (i32.add - (local.get $$59) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent471) - (local.get $$R332$3) - ) - (br $do-once4) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (local.set $$or480 - (i32.or - (local.get $$add267) - (i32.const 1) - ) - ) - (local.set $$head481 - (i32.add - (local.get $$p$1) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head481) - (local.get $$or480) - ) - (local.set $$add$ptr482 - (i32.add - (local.get $$p$1) - (local.get $$add267) - ) - ) - (i32.store - (local.get $$add$ptr482) - (local.get $$add267) - ) - (local.set $$61 - (i32.load - (i32.const 196) - ) - ) - (local.set $$cmp484 - (i32.eq - (local.get $$p$1) - (local.get $$61) - ) - ) - (if - (local.get $$cmp484) - (block - (i32.store - (i32.const 184) - (local.get $$add267) - ) - (return) - ) - (local.set $$psize$2 - (local.get $$add267) - ) - ) - ) - (block - (local.set $$and495 - (i32.and - (local.get $$28) - (i32.const -2) - ) - ) - (i32.store - (local.get $$head231) - (local.get $$and495) - ) - (local.set $$or496 - (i32.or - (local.get $$psize$1) - (i32.const 1) - ) - ) - (local.set $$head497 - (i32.add - (local.get $$p$1) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head497) - (local.get $$or496) - ) - (local.set $$add$ptr498 - (i32.add - (local.get $$p$1) - (local.get $$psize$1) - ) - ) - (i32.store - (local.get $$add$ptr498) - (local.get $$psize$1) - ) - (local.set $$psize$2 - (local.get $$psize$1) - ) - ) - ) - (local.set $$shr501 - (i32.shr_u - (local.get $$psize$2) - (i32.const 3) - ) - ) - (local.set $$cmp502 - (i32.lt_u - (local.get $$psize$2) - (i32.const 256) - ) - ) - (if - (local.get $$cmp502) - (block - (local.set $$shl508 - (i32.shl - (local.get $$shr501) - (i32.const 1) - ) - ) - (local.set $$arrayidx509 - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl508) - (i32.const 2) - ) - ) - ) - (local.set $$62 - (i32.load - (i32.const 176) - ) - ) - (local.set $$shl511 - (i32.shl - (i32.const 1) - (local.get $$shr501) - ) - ) - (local.set $$and512 - (i32.and - (local.get $$62) - (local.get $$shl511) - ) - ) - (local.set $$tobool513 - (i32.eq - (local.get $$and512) - (i32.const 0) - ) - ) - (if - (local.get $$tobool513) - (block - (local.set $$or516 - (i32.or - (local.get $$62) - (local.get $$shl511) - ) - ) - (i32.store - (i32.const 176) - (local.get $$or516) - ) - (local.set $$$pre - (i32.add - (local.get $$arrayidx509) - (i32.const 8) - ) - ) - (local.set $$$pre$phiZ2D - (local.get $$$pre) - ) - (local.set $$F510$0 - (local.get $$arrayidx509) - ) - ) - (block - (local.set $$63 - (i32.add - (local.get $$arrayidx509) - (i32.const 8) - ) - ) - (local.set $$64 - (i32.load - (local.get $$63) - ) - ) - (local.set $$65 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp519 - (i32.lt_u - (local.get $$64) - (local.get $$65) - ) - ) - (if - (local.get $$cmp519) - (call $_abort) - (block - (local.set $$$pre$phiZ2D - (local.get $$63) - ) - (local.set $$F510$0 - (local.get $$64) - ) - ) - ) - ) - ) - (i32.store - (local.get $$$pre$phiZ2D) - (local.get $$p$1) - ) - (local.set $$bk529 - (i32.add - (local.get $$F510$0) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk529) - (local.get $$p$1) - ) - (local.set $$fd530 - (i32.add - (local.get $$p$1) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd530) - (local.get $$F510$0) - ) - (local.set $$bk531 - (i32.add - (local.get $$p$1) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk531) - (local.get $$arrayidx509) - ) - (return) - ) - ) - (local.set $$shr535 - (i32.shr_u - (local.get $$psize$2) - (i32.const 8) - ) - ) - (local.set $$cmp536 - (i32.eq - (local.get $$shr535) - (i32.const 0) - ) - ) - (if - (local.get $$cmp536) - (local.set $$I534$0 - (i32.const 0) - ) - (block - (local.set $$cmp540 - (i32.gt_u - (local.get $$psize$2) - (i32.const 16777215) - ) - ) - (if - (local.get $$cmp540) - (local.set $$I534$0 - (i32.const 31) - ) - (block - (local.set $$sub - (i32.add - (local.get $$shr535) - (i32.const 1048320) - ) - ) - (local.set $$shr544 - (i32.shr_u - (local.get $$sub) - (i32.const 16) - ) - ) - (local.set $$and545 - (i32.and - (local.get $$shr544) - (i32.const 8) - ) - ) - (local.set $$shl546 - (i32.shl - (local.get $$shr535) - (local.get $$and545) - ) - ) - (local.set $$sub547 - (i32.add - (local.get $$shl546) - (i32.const 520192) - ) - ) - (local.set $$shr548 - (i32.shr_u - (local.get $$sub547) - (i32.const 16) - ) - ) - (local.set $$and549 - (i32.and - (local.get $$shr548) - (i32.const 4) - ) - ) - (local.set $$add550 - (i32.or - (local.get $$and549) - (local.get $$and545) - ) - ) - (local.set $$shl551 - (i32.shl - (local.get $$shl546) - (local.get $$and549) - ) - ) - (local.set $$sub552 - (i32.add - (local.get $$shl551) - (i32.const 245760) - ) - ) - (local.set $$shr553 - (i32.shr_u - (local.get $$sub552) - (i32.const 16) - ) - ) - (local.set $$and554 - (i32.and - (local.get $$shr553) - (i32.const 2) - ) - ) - (local.set $$add555 - (i32.or - (local.get $$add550) - (local.get $$and554) - ) - ) - (local.set $$sub556 - (i32.sub - (i32.const 14) - (local.get $$add555) - ) - ) - (local.set $$shl557 - (i32.shl - (local.get $$shl551) - (local.get $$and554) - ) - ) - (local.set $$shr558 - (i32.shr_u - (local.get $$shl557) - (i32.const 15) - ) - ) - (local.set $$add559 - (i32.add - (local.get $$sub556) - (local.get $$shr558) - ) - ) - (local.set $$shl560 - (i32.shl - (local.get $$add559) - (i32.const 1) - ) - ) - (local.set $$add561 - (i32.add - (local.get $$add559) - (i32.const 7) - ) - ) - (local.set $$shr562 - (i32.shr_u - (local.get $$psize$2) - (local.get $$add561) - ) - ) - (local.set $$and563 - (i32.and - (local.get $$shr562) - (i32.const 1) - ) - ) - (local.set $$add564 - (i32.or - (local.get $$and563) - (local.get $$shl560) - ) - ) - (local.set $$I534$0 - (local.get $$add564) - ) - ) - ) - ) - ) - (local.set $$arrayidx567 - (i32.add - (i32.const 480) - (i32.shl - (local.get $$I534$0) - (i32.const 2) - ) - ) - ) - (local.set $$index568 - (i32.add - (local.get $$p$1) - (i32.const 28) - ) - ) - (i32.store - (local.get $$index568) - (local.get $$I534$0) - ) - (local.set $$child569 - (i32.add - (local.get $$p$1) - (i32.const 16) - ) - ) - (local.set $$arrayidx570 - (i32.add - (local.get $$p$1) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx570) - (i32.const 0) - ) - (i32.store - (local.get $$child569) - (i32.const 0) - ) - (local.set $$66 - (i32.load - (i32.const 180) - ) - ) - (local.set $$shl573 - (i32.shl - (i32.const 1) - (local.get $$I534$0) - ) - ) - (local.set $$and574 - (i32.and - (local.get $$66) - (local.get $$shl573) - ) - ) - (local.set $$tobool575 - (i32.eq - (local.get $$and574) - (i32.const 0) - ) - ) - (block $do-once12 - (if - (local.get $$tobool575) - (block - (local.set $$or578 - (i32.or - (local.get $$66) - (local.get $$shl573) - ) - ) - (i32.store - (i32.const 180) - (local.get $$or578) - ) - (i32.store - (local.get $$arrayidx567) - (local.get $$p$1) - ) - (local.set $$parent579 - (i32.add - (local.get $$p$1) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent579) - (local.get $$arrayidx567) - ) - (local.set $$bk580 - (i32.add - (local.get $$p$1) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk580) - (local.get $$p$1) - ) - (local.set $$fd581 - (i32.add - (local.get $$p$1) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd581) - (local.get $$p$1) - ) - ) - (block - (local.set $$67 - (i32.load - (local.get $$arrayidx567) - ) - ) - (local.set $$cmp584 - (i32.eq - (local.get $$I534$0) - (i32.const 31) - ) - ) - (local.set $$shr586 - (i32.shr_u - (local.get $$I534$0) - (i32.const 1) - ) - ) - (local.set $$sub589 - (i32.sub - (i32.const 25) - (local.get $$shr586) - ) - ) - (local.set $$cond - (if (result i32) - (local.get $$cmp584) - (i32.const 0) - (local.get $$sub589) - ) - ) - (local.set $$shl590 - (i32.shl - (local.get $$psize$2) - (local.get $$cond) - ) - ) - (local.set $$K583$0 - (local.get $$shl590) - ) - (local.set $$T$0 - (local.get $$67) - ) - (loop $while-in15 - (block $while-out14 - (local.set $$head591 - (i32.add - (local.get $$T$0) - (i32.const 4) - ) - ) - (local.set $$68 - (i32.load - (local.get $$head591) - ) - ) - (local.set $$and592 - (i32.and - (local.get $$68) - (i32.const -8) - ) - ) - (local.set $$cmp593 - (i32.eq - (local.get $$and592) - (local.get $$psize$2) - ) - ) - (if - (local.get $$cmp593) - (block - (local.set $$T$0$lcssa - (local.get $$T$0) - ) - (local.set $label - (i32.const 130) - ) - (br $while-out14) - ) - ) - (local.set $$shr596 - (i32.shr_u - (local.get $$K583$0) - (i32.const 31) - ) - ) - (local.set $$arrayidx599 - (i32.add - (i32.add - (local.get $$T$0) - (i32.const 16) - ) - (i32.shl - (local.get $$shr596) - (i32.const 2) - ) - ) - ) - (local.set $$shl600 - (i32.shl - (local.get $$K583$0) - (i32.const 1) - ) - ) - (local.set $$69 - (i32.load - (local.get $$arrayidx599) - ) - ) - (local.set $$cmp601 - (i32.eq - (local.get $$69) - (i32.const 0) - ) - ) - (if - (local.get $$cmp601) - (block - (local.set $$T$0$lcssa319 - (local.get $$T$0) - ) - (local.set $$arrayidx599$lcssa - (local.get $$arrayidx599) - ) - (local.set $label - (i32.const 127) - ) - (br $while-out14) - ) - (block - (local.set $$K583$0 - (local.get $$shl600) - ) - (local.set $$T$0 - (local.get $$69) - ) - ) - ) - (br $while-in15) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 127) - ) - (block - (local.set $$70 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp605 - (i32.lt_u - (local.get $$arrayidx599$lcssa) - (local.get $$70) - ) - ) - (if - (local.get $$cmp605) - (call $_abort) - (block - (i32.store - (local.get $$arrayidx599$lcssa) - (local.get $$p$1) - ) - (local.set $$parent610 - (i32.add - (local.get $$p$1) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent610) - (local.get $$T$0$lcssa319) - ) - (local.set $$bk611 - (i32.add - (local.get $$p$1) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk611) - (local.get $$p$1) - ) - (local.set $$fd612 - (i32.add - (local.get $$p$1) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd612) - (local.get $$p$1) - ) - (br $do-once12) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 130) - ) - (block - (local.set $$fd620 - (i32.add - (local.get $$T$0$lcssa) - (i32.const 8) - ) - ) - (local.set $$71 - (i32.load - (local.get $$fd620) - ) - ) - (local.set $$72 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp624 - (i32.ge_u - (local.get $$71) - (local.get $$72) - ) - ) - (local.set $$not$cmp621 - (i32.ge_u - (local.get $$T$0$lcssa) - (local.get $$72) - ) - ) - (local.set $$73 - (i32.and - (local.get $$cmp624) - (local.get $$not$cmp621) - ) - ) - (if - (local.get $$73) - (block - (local.set $$bk631 - (i32.add - (local.get $$71) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk631) - (local.get $$p$1) - ) - (i32.store - (local.get $$fd620) - (local.get $$p$1) - ) - (local.set $$fd633 - (i32.add - (local.get $$p$1) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd633) - (local.get $$71) - ) - (local.set $$bk634 - (i32.add - (local.get $$p$1) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk634) - (local.get $$T$0$lcssa) - ) - (local.set $$parent635 - (i32.add - (local.get $$p$1) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent635) - (i32.const 0) - ) - (br $do-once12) - ) - (call $_abort) - ) - ) - ) - ) - ) - ) - ) - (local.set $$74 - (i32.load - (i32.const 208) - ) - ) - (local.set $$dec - (i32.add - (local.get $$74) - (i32.const -1) - ) - ) - (i32.store - (i32.const 208) - (local.get $$dec) - ) - (local.set $$cmp640 - (i32.eq - (local.get $$dec) - (i32.const 0) - ) - ) - (if - (local.get $$cmp640) - (local.set $$sp$0$in$i - (i32.const 632) - ) - (return) - ) - (loop $while-in17 - (block $while-out16 - (local.set $$sp$0$i - (i32.load - (local.get $$sp$0$in$i) - ) - ) - (local.set $$cmp$i - (i32.eq - (local.get $$sp$0$i) - (i32.const 0) - ) - ) - (local.set $$next4$i - (i32.add - (local.get $$sp$0$i) - (i32.const 8) - ) - ) - (if - (local.get $$cmp$i) - (br $while-out16) - (local.set $$sp$0$in$i - (local.get $$next4$i) - ) - ) - (br $while-in17) - ) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - (return) - ) - (func $runPostSets (; 61 ;) - (nop) - ) - (func $_i64Subtract (; 62 ;) (param $a i32) (param $b i32) (param $c i32) (param $d i32) (result i32) - (local $l i32) - (local $h i32) - (local.set $l - (i32.sub - (local.get $a) - (local.get $c) - ) - ) - (local.set $h - (i32.sub - (local.get $b) - (local.get $d) - ) - ) - (local.set $h - (i32.sub - (i32.sub - (local.get $b) - (local.get $d) - ) - (i32.gt_u - (local.get $c) - (local.get $a) - ) - ) - ) - (return - (block (result i32) - (block - (global.set $tempRet0 - (local.get $h) - ) - (drop - (global.get $tempRet0) - ) - ) - (local.get $l) - ) - ) - ) - (func $_i64Add (; 63 ;) (param $a i32) (param $b i32) (param $c i32) (param $d i32) (result i32) - (local $l i32) - (local $h i32) - (local.set $l - (i32.add - (local.get $a) - (local.get $c) - ) - ) - (local.set $h - (i32.add - (i32.add - (local.get $b) - (local.get $d) - ) - (i32.lt_u - (local.get $l) - (local.get $a) - ) - ) - ) - (return - (block (result i32) - (block - (global.set $tempRet0 - (local.get $h) - ) - (drop - (global.get $tempRet0) - ) - ) - (local.get $l) - ) - ) - ) - (func $_memset (; 64 ;) (param $ptr i32) (param $value i32) (param $num i32) (result i32) - (local $stop i32) - (local $value4 i32) - (local $stop4 i32) - (local $unaligned i32) - (local.set $stop - (i32.add - (local.get $ptr) - (local.get $num) - ) - ) - (if - (i32.ge_s - (local.get $num) - (i32.const 20) - ) - (block - (local.set $value - (i32.and - (local.get $value) - (i32.const 255) - ) - ) - (local.set $unaligned - (i32.and - (local.get $ptr) - (i32.const 3) - ) - ) - (local.set $value4 - (i32.or - (i32.or - (i32.or - (local.get $value) - (i32.shl - (local.get $value) - (i32.const 8) - ) - ) - (i32.shl - (local.get $value) - (i32.const 16) - ) - ) - (i32.shl - (local.get $value) - (i32.const 24) - ) - ) - ) - (local.set $stop4 - (i32.and - (local.get $stop) - (i32.xor - (i32.const 3) - (i32.const -1) - ) - ) - ) - (if - (local.get $unaligned) - (block - (local.set $unaligned - (i32.sub - (i32.add - (local.get $ptr) - (i32.const 4) - ) - (local.get $unaligned) - ) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.lt_s - (local.get $ptr) - (local.get $unaligned) - ) - ) - (br $while-out) - ) - (block - (i32.store8 - (local.get $ptr) - (local.get $value) - ) - (local.set $ptr - (i32.add - (local.get $ptr) - (i32.const 1) - ) - ) - ) - (br $while-in) - ) - ) - ) - ) - (loop $while-in1 - (block $while-out0 - (if - (i32.eqz - (i32.lt_s - (local.get $ptr) - (local.get $stop4) - ) - ) - (br $while-out0) - ) - (block - (i32.store - (local.get $ptr) - (local.get $value4) - ) - (local.set $ptr - (i32.add - (local.get $ptr) - (i32.const 4) - ) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (loop $while-in3 - (block $while-out2 - (if - (i32.eqz - (i32.lt_s - (local.get $ptr) - (local.get $stop) - ) - ) - (br $while-out2) - ) - (block - (i32.store8 - (local.get $ptr) - (local.get $value) - ) - (local.set $ptr - (i32.add - (local.get $ptr) - (i32.const 1) - ) - ) - ) - (br $while-in3) - ) - ) - (return - (i32.sub - (local.get $ptr) - (local.get $num) - ) - ) - ) - (func $_bitshift64Lshr (; 65 ;) (param $low i32) (param $high i32) (param $bits i32) (result i32) - (local $ander i32) - (if - (i32.lt_s - (local.get $bits) - (i32.const 32) - ) - (block - (local.set $ander - (i32.sub - (i32.shl - (i32.const 1) - (local.get $bits) - ) - (i32.const 1) - ) - ) - (global.set $tempRet0 - (i32.shr_u - (local.get $high) - (local.get $bits) - ) - ) - (return - (i32.or - (i32.shr_u - (local.get $low) - (local.get $bits) - ) - (i32.shl - (i32.and - (local.get $high) - (local.get $ander) - ) - (i32.sub - (i32.const 32) - (local.get $bits) - ) - ) - ) - ) - ) - ) - (global.set $tempRet0 - (i32.const 0) - ) - (return - (i32.shr_u - (local.get $high) - (i32.sub - (local.get $bits) - (i32.const 32) - ) - ) - ) - ) - (func $_bitshift64Shl (; 66 ;) (param $low i32) (param $high i32) (param $bits i32) (result i32) - (local $ander i32) - (if - (i32.lt_s - (local.get $bits) - (i32.const 32) - ) - (block - (local.set $ander - (i32.sub - (i32.shl - (i32.const 1) - (local.get $bits) - ) - (i32.const 1) - ) - ) - (global.set $tempRet0 - (i32.or - (i32.shl - (local.get $high) - (local.get $bits) - ) - (i32.shr_u - (i32.and - (local.get $low) - (i32.shl - (local.get $ander) - (i32.sub - (i32.const 32) - (local.get $bits) - ) - ) - ) - (i32.sub - (i32.const 32) - (local.get $bits) - ) - ) - ) - ) - (return - (i32.shl - (local.get $low) - (local.get $bits) - ) - ) - ) - ) - (global.set $tempRet0 - (i32.shl - (local.get $low) - (i32.sub - (local.get $bits) - (i32.const 32) - ) - ) - ) - (return - (i32.const 0) - ) - ) - (func $_memcpy (; 67 ;) (param $dest i32) (param $src i32) (param $num i32) (result i32) - (local $ret i32) - (if - (i32.ge_s - (local.get $num) - (i32.const 4096) - ) - (return - (call $_emscripten_memcpy_big - (local.get $dest) - (local.get $src) - (local.get $num) - ) - ) - ) - (local.set $ret - (local.get $dest) - ) - (if - (i32.eq - (i32.and - (local.get $dest) - (i32.const 3) - ) - (i32.and - (local.get $src) - (i32.const 3) - ) - ) - (block - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.and - (local.get $dest) - (i32.const 3) - ) - ) - (br $while-out) - ) - (block - (if - (i32.eq - (local.get $num) - (i32.const 0) - ) - (return - (local.get $ret) - ) - ) - (i32.store8 - (local.get $dest) - (i32.load8_s - (local.get $src) - ) - ) - (local.set $dest - (i32.add - (local.get $dest) - (i32.const 1) - ) - ) - (local.set $src - (i32.add - (local.get $src) - (i32.const 1) - ) - ) - (local.set $num - (i32.sub - (local.get $num) - (i32.const 1) - ) - ) - ) - (br $while-in) - ) - ) - (loop $while-in1 - (block $while-out0 - (if - (i32.eqz - (i32.ge_s - (local.get $num) - (i32.const 4) - ) - ) - (br $while-out0) - ) - (block - (i32.store - (local.get $dest) - (i32.load - (local.get $src) - ) - ) - (local.set $dest - (i32.add - (local.get $dest) - (i32.const 4) - ) - ) - (local.set $src - (i32.add - (local.get $src) - (i32.const 4) - ) - ) - (local.set $num - (i32.sub - (local.get $num) - (i32.const 4) - ) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (loop $while-in3 - (block $while-out2 - (if - (i32.eqz - (i32.gt_s - (local.get $num) - (i32.const 0) - ) - ) - (br $while-out2) - ) - (block - (i32.store8 - (local.get $dest) - (i32.load8_s - (local.get $src) - ) - ) - (local.set $dest - (i32.add - (local.get $dest) - (i32.const 1) - ) - ) - (local.set $src - (i32.add - (local.get $src) - (i32.const 1) - ) - ) - (local.set $num - (i32.sub - (local.get $num) - (i32.const 1) - ) - ) - ) - (br $while-in3) - ) - ) - (return - (local.get $ret) - ) - ) - (func $_bitshift64Ashr (; 68 ;) (param $low i32) (param $high i32) (param $bits i32) (result i32) - (local $ander i32) - (if - (i32.lt_s - (local.get $bits) - (i32.const 32) - ) - (block - (local.set $ander - (i32.sub - (i32.shl - (i32.const 1) - (local.get $bits) - ) - (i32.const 1) - ) - ) - (global.set $tempRet0 - (i32.shr_s - (local.get $high) - (local.get $bits) - ) - ) - (return - (i32.or - (i32.shr_u - (local.get $low) - (local.get $bits) - ) - (i32.shl - (i32.and - (local.get $high) - (local.get $ander) - ) - (i32.sub - (i32.const 32) - (local.get $bits) - ) - ) - ) - ) - ) - ) - (global.set $tempRet0 - (if (result i32) - (i32.lt_s - (local.get $high) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - ) - (return - (i32.shr_s - (local.get $high) - (i32.sub - (local.get $bits) - (i32.const 32) - ) - ) - ) - ) - (func $___muldsi3 (; 69 ;) (param $$a i32) (param $$b i32) (result i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$6 i32) - (local $$8 i32) - (local $$11 i32) - (local $$12 i32) - (local.set $$1 - (i32.and - (local.get $$a) - (i32.const 65535) - ) - ) - (local.set $$2 - (i32.and - (local.get $$b) - (i32.const 65535) - ) - ) - (local.set $$3 - (i32.mul - (local.get $$2) - (local.get $$1) - ) - ) - (local.set $$6 - (i32.shr_u - (local.get $$a) - (i32.const 16) - ) - ) - (local.set $$8 - (i32.add - (i32.shr_u - (local.get $$3) - (i32.const 16) - ) - (i32.mul - (local.get $$2) - (local.get $$6) - ) - ) - ) - (local.set $$11 - (i32.shr_u - (local.get $$b) - (i32.const 16) - ) - ) - (local.set $$12 - (i32.mul - (local.get $$11) - (local.get $$1) - ) - ) - (return - (block (result i32) - (block - (global.set $tempRet0 - (i32.add - (i32.add - (i32.shr_u - (local.get $$8) - (i32.const 16) - ) - (i32.mul - (local.get $$11) - (local.get $$6) - ) - ) - (i32.shr_u - (i32.add - (i32.and - (local.get $$8) - (i32.const 65535) - ) - (local.get $$12) - ) - (i32.const 16) - ) - ) - ) - (drop - (global.get $tempRet0) - ) - ) - (i32.or - (i32.const 0) - (i32.or - (i32.shl - (i32.add - (local.get $$8) - (local.get $$12) - ) - (i32.const 16) - ) - (i32.and - (local.get $$3) - (i32.const 65535) - ) - ) - ) - ) - ) - ) - (func $___divdi3 (; 70 ;) (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) - (local $$1$0 i32) - (local $$1$1 i32) - (local $$2$0 i32) - (local $$2$1 i32) - (local $$4$0 i32) - (local $$4$1 i32) - (local $$6$0 i32) - (local $$7$0 i32) - (local $$7$1 i32) - (local $$8$0 i32) - (local $$10$0 i32) - (local.set $$1$0 - (i32.or - (i32.shr_s - (local.get $$a$1) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$1$1 - (i32.or - (i32.shr_s - (if (result i32) - (i32.lt_s - (local.get $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$2$0 - (i32.or - (i32.shr_s - (local.get $$b$1) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$2$1 - (i32.or - (i32.shr_s - (if (result i32) - (i32.lt_s - (local.get $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$4$0 - (call $_i64Subtract - (i32.xor - (local.get $$1$0) - (local.get $$a$0) - ) - (i32.xor - (local.get $$1$1) - (local.get $$a$1) - ) - (local.get $$1$0) - (local.get $$1$1) - ) - ) - (local.set $$4$1 - (global.get $tempRet0) - ) - (local.set $$6$0 - (call $_i64Subtract - (i32.xor - (local.get $$2$0) - (local.get $$b$0) - ) - (i32.xor - (local.get $$2$1) - (local.get $$b$1) - ) - (local.get $$2$0) - (local.get $$2$1) - ) - ) - (local.set $$7$0 - (i32.xor - (local.get $$2$0) - (local.get $$1$0) - ) - ) - (local.set $$7$1 - (i32.xor - (local.get $$2$1) - (local.get $$1$1) - ) - ) - (local.set $$8$0 - (call $___udivmoddi4 - (local.get $$4$0) - (local.get $$4$1) - (local.get $$6$0) - (global.get $tempRet0) - (i32.const 0) - ) - ) - (local.set $$10$0 - (call $_i64Subtract - (i32.xor - (local.get $$8$0) - (local.get $$7$0) - ) - (i32.xor - (global.get $tempRet0) - (local.get $$7$1) - ) - (local.get $$7$0) - (local.get $$7$1) - ) - ) - (return - (local.get $$10$0) - ) - ) - (func $___remdi3 (; 71 ;) (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) - (local $$rem i32) - (local $$1$0 i32) - (local $$1$1 i32) - (local $$2$0 i32) - (local $$2$1 i32) - (local $$4$0 i32) - (local $$4$1 i32) - (local $$6$0 i32) - (local $$10$0 i32) - (local $$10$1 i32) - (local $__stackBase__ i32) - (local.set $__stackBase__ - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (local.set $$rem - (local.get $__stackBase__) - ) - (local.set $$1$0 - (i32.or - (i32.shr_s - (local.get $$a$1) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$1$1 - (i32.or - (i32.shr_s - (if (result i32) - (i32.lt_s - (local.get $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$2$0 - (i32.or - (i32.shr_s - (local.get $$b$1) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$2$1 - (i32.or - (i32.shr_s - (if (result i32) - (i32.lt_s - (local.get $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$4$0 - (call $_i64Subtract - (i32.xor - (local.get $$1$0) - (local.get $$a$0) - ) - (i32.xor - (local.get $$1$1) - (local.get $$a$1) - ) - (local.get $$1$0) - (local.get $$1$1) - ) - ) - (local.set $$4$1 - (global.get $tempRet0) - ) - (local.set $$6$0 - (call $_i64Subtract - (i32.xor - (local.get $$2$0) - (local.get $$b$0) - ) - (i32.xor - (local.get $$2$1) - (local.get $$b$1) - ) - (local.get $$2$0) - (local.get $$2$1) - ) - ) - (drop - (call $___udivmoddi4 - (local.get $$4$0) - (local.get $$4$1) - (local.get $$6$0) - (global.get $tempRet0) - (local.get $$rem) - ) - ) - (local.set $$10$0 - (call $_i64Subtract - (i32.xor - (i32.load - (local.get $$rem) - ) - (local.get $$1$0) - ) - (i32.xor - (i32.load - (i32.add - (local.get $$rem) - (i32.const 4) - ) - ) - (local.get $$1$1) - ) - (local.get $$1$0) - (local.get $$1$1) - ) - ) - (local.set $$10$1 - (global.get $tempRet0) - ) - (global.set $STACKTOP - (local.get $__stackBase__) - ) - (return - (block (result i32) - (block - (global.set $tempRet0 - (local.get $$10$1) - ) - (drop - (global.get $tempRet0) - ) - ) - (local.get $$10$0) - ) - ) - ) - (func $___muldi3 (; 72 ;) (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) - (local $$x_sroa_0_0_extract_trunc i32) - (local $$y_sroa_0_0_extract_trunc i32) - (local $$1$0 i32) - (local $$1$1 i32) - (local $$2 i32) - (local.set $$x_sroa_0_0_extract_trunc - (local.get $$a$0) - ) - (local.set $$y_sroa_0_0_extract_trunc - (local.get $$b$0) - ) - (local.set $$1$0 - (call $___muldsi3 - (local.get $$x_sroa_0_0_extract_trunc) - (local.get $$y_sroa_0_0_extract_trunc) - ) - ) - (local.set $$1$1 - (global.get $tempRet0) - ) - (local.set $$2 - (i32.mul - (local.get $$a$1) - (local.get $$y_sroa_0_0_extract_trunc) - ) - ) - (return - (block (result i32) - (block - (global.set $tempRet0 - (i32.or - (i32.add - (i32.add - (i32.mul - (local.get $$b$1) - (local.get $$x_sroa_0_0_extract_trunc) - ) - (local.get $$2) - ) - (local.get $$1$1) - ) - (i32.and - (local.get $$1$1) - (i32.const 0) - ) - ) - ) - (drop - (global.get $tempRet0) - ) - ) - (i32.or - (i32.const 0) - (i32.and - (local.get $$1$0) - (i32.const -1) - ) - ) - ) - ) - ) - (func $___udivdi3 (; 73 ;) (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) - (local $$1$0 i32) - (local.set $$1$0 - (call $___udivmoddi4 - (local.get $$a$0) - (local.get $$a$1) - (local.get $$b$0) - (local.get $$b$1) - (i32.const 0) - ) - ) - (return - (local.get $$1$0) - ) - ) - (func $___uremdi3 (; 74 ;) (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) - (local $$rem i32) - (local $__stackBase__ i32) - (local.set $__stackBase__ - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (local.set $$rem - (local.get $__stackBase__) - ) - (drop - (call $___udivmoddi4 - (local.get $$a$0) - (local.get $$a$1) - (local.get $$b$0) - (local.get $$b$1) - (local.get $$rem) - ) - ) - (global.set $STACKTOP - (local.get $__stackBase__) - ) - (return - (block (result i32) - (block - (global.set $tempRet0 - (i32.load - (i32.add - (local.get $$rem) - (i32.const 4) - ) - ) - ) - (drop - (global.get $tempRet0) - ) - ) - (i32.load - (local.get $$rem) - ) - ) - ) - ) - (func $___udivmoddi4 (; 75 ;) (param $xl i32) (param $xh i32) (param $yl i32) (param $yh i32) (param $r i32) (result i32) - (local $x64 i64) - (local $y64 i64) - (local.set $x64 - (i64.or - (i64.extend_i32_u - (local.get $xl) - ) - (i64.shl - (i64.extend_i32_u - (local.get $xh) - ) - (i64.const 32) - ) - ) - ) - (local.set $y64 - (i64.or - (i64.extend_i32_u - (local.get $yl) - ) - (i64.shl - (i64.extend_i32_u - (local.get $yh) - ) - (i64.const 32) - ) - ) - ) - (if - (local.get $r) - (i64.store - (local.get $r) - (i64.rem_u - (local.get $x64) - (local.get $y64) - ) - ) - ) - (local.set $x64 - (i64.div_u - (local.get $x64) - (local.get $y64) - ) - ) - (global.set $tempRet0 - (i32.wrap_i64 - (i64.shr_u - (local.get $x64) - (i64.const 32) - ) - ) - ) - (i32.wrap_i64 - (local.get $x64) - ) - ) - (func $dynCall_ii (; 76 ;) (param $index i32) (param $a1 i32) (result i32) - (return - (call_indirect (type $i32_=>_i32) - (local.get $a1) - (i32.add - (i32.and - (local.get $index) - (i32.const 1) - ) - (i32.const 0) - ) - ) - ) - ) - (func $dynCall_iiii (; 77 ;) (param $index i32) (param $a1 i32) (param $a2 i32) (param $a3 i32) (result i32) - (return - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $a1) - (local.get $a2) - (local.get $a3) - (i32.add - (i32.and - (local.get $index) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - (func $dynCall_vi (; 78 ;) (param $index i32) (param $a1 i32) - (call_indirect (type $i32_=>_none) - (local.get $a1) - (i32.add - (i32.and - (local.get $index) - (i32.const 7) - ) - (i32.const 10) - ) - ) - ) - (func $b0 (; 79 ;) (param $p0 i32) (result i32) - (call $nullFunc_ii - (i32.const 0) - ) - (return - (i32.const 0) - ) - ) - (func $b1 (; 80 ;) (param $p0 i32) (param $p1 i32) (param $p2 i32) (result i32) - (call $nullFunc_iiii - (i32.const 1) - ) - (return - (i32.const 0) - ) - ) - (func $b2 (; 81 ;) (param $p0 i32) - (call $nullFunc_vi - (i32.const 2) - ) - ) -) diff -Nru binaryen-91/test/emcc_hello_world.fromasm.imprecise binaryen-99/test/emcc_hello_world.fromasm.imprecise --- binaryen-91/test/emcc_hello_world.fromasm.imprecise 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/emcc_hello_world.fromasm.imprecise 1970-01-01 00:00:00.000000000 +0000 @@ -1,14875 +0,0 @@ -(module - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 18 18 funcref)) - (elem (global.get $__table_base) $b0 $___stdio_close $b1 $b1 $___stdout_write $___stdio_seek $___stdio_write $b1 $b1 $b1 $b2 $b2 $b2 $b2 $b2 $_cleanup $b2 $b2) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) - (import "env" "abort" (func $abort)) - (import "env" "nullFunc_ii" (func $nullFunc_ii (param i32))) - (import "env" "nullFunc_iiii" (func $nullFunc_iiii (param i32))) - (import "env" "nullFunc_vi" (func $nullFunc_vi (param i32))) - (import "env" "_pthread_cleanup_pop" (func $_pthread_cleanup_pop (param i32))) - (import "env" "___lock" (func $___lock (param i32))) - (import "env" "_pthread_self" (func $_pthread_self (result i32))) - (import "env" "_abort" (func $_abort)) - (import "env" "___syscall6" (func $___syscall6 (param i32 i32) (result i32))) - (import "env" "_sbrk" (func $_sbrk (param i32) (result i32))) - (import "env" "_time" (func $_time (param i32) (result i32))) - (import "env" "_emscripten_memcpy_big" (func $_emscripten_memcpy_big (param i32 i32 i32) (result i32))) - (import "env" "___syscall54" (func $___syscall54 (param i32 i32) (result i32))) - (import "env" "___unlock" (func $___unlock (param i32))) - (import "env" "___syscall140" (func $___syscall140 (param i32 i32) (result i32))) - (import "env" "_pthread_cleanup_push" (func $_pthread_cleanup_push (param i32 i32))) - (import "env" "_sysconf" (func $_sysconf (param i32) (result i32))) - (import "env" "___syscall146" (func $___syscall146 (param i32 i32) (result i32))) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (global $STACK_MAX (mut i32) (global.get $STACK_MAX$asm2wasm$import)) - (global $__THREW__ (mut i32) (i32.const 0)) - (global $threwValue (mut i32) (i32.const 0)) - (global $tempRet0 (mut i32) (i32.const 0)) - (export "_i64Subtract" (func $_i64Subtract)) - (export "_free" (func $_free)) - (export "_main" (func $_main)) - (export "_i64Add" (func $_i64Add)) - (export "_memset" (func $_memset)) - (export "_malloc" (func $_malloc)) - (export "_memcpy" (func $_memcpy)) - (export "_bitshift64Lshr" (func $_bitshift64Lshr)) - (export "_fflush" (func $_fflush)) - (export "___errno_location" (func $___errno_location)) - (export "_bitshift64Shl" (func $_bitshift64Shl)) - (export "runPostSets" (func $runPostSets)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackSave" (func $stackSave)) - (export "stackRestore" (func $stackRestore)) - (export "establishStackSpace" (func $establishStackSpace)) - (export "setThrew" (func $setThrew)) - (export "setTempRet0" (func $setTempRet0)) - (export "getTempRet0" (func $getTempRet0)) - (export "dynCall_ii" (func $dynCall_ii)) - (export "dynCall_iiii" (func $dynCall_iiii)) - (export "dynCall_vi" (func $dynCall_vi)) - (export "___udivmoddi4" (func $___udivmoddi4)) - (func $stackAlloc (; 18 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local.set $1 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (local.get $0) - (global.get $STACKTOP) - ) - ) - (global.set $STACKTOP - (i32.and - (i32.add - (global.get $STACKTOP) - (i32.const 15) - ) - (i32.const -16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.get $1) - ) - (func $stackSave (; 19 ;) (; has Stack IR ;) (result i32) - (global.get $STACKTOP) - ) - (func $stackRestore (; 20 ;) (; has Stack IR ;) (param $0 i32) - (global.set $STACKTOP - (local.get $0) - ) - ) - (func $establishStackSpace (; 21 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (global.set $STACKTOP - (local.get $0) - ) - (global.set $STACK_MAX - (local.get $1) - ) - ) - (func $setThrew (; 22 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (if - (i32.eqz - (global.get $__THREW__) - ) - (block - (global.set $__THREW__ - (local.get $0) - ) - (global.set $threwValue - (local.get $1) - ) - ) - ) - ) - (func $setTempRet0 (; 23 ;) (; has Stack IR ;) (param $0 i32) - (global.set $tempRet0 - (local.get $0) - ) - ) - (func $getTempRet0 (; 24 ;) (; has Stack IR ;) (result i32) - (global.get $tempRet0) - ) - (func $_main (; 25 ;) (; has Stack IR ;) (result i32) - (local $0 i32) - (local.set $0 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (call $_printf - (local.get $0) - ) - (global.set $STACKTOP - (local.get $0) - ) - (i32.const 0) - ) - (func $_frexp (; 26 ;) (; has Stack IR ;) (param $0 f64) (param $1 i32) (result f64) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (f64.store - (global.get $tempDoublePtr$asm2wasm$import) - (local.get $0) - ) - (block $switch - (block $switch-default - (if - (local.tee $5 - (local.tee $4 - (i32.and - (call $_bitshift64Lshr - (local.tee $2 - (i32.load - (global.get $tempDoublePtr$asm2wasm$import) - ) - ) - (local.tee $3 - (i32.load offset=4 - (global.get $tempDoublePtr$asm2wasm$import) - ) - ) - (i32.const 52) - ) - (i32.const 2047) - ) - ) - ) - (if - (i32.eq - (local.get $5) - (i32.const 2047) - ) - (br $switch) - (br $switch-default) - ) - ) - (i32.store - (local.get $1) - (if (result i32) - (f64.ne - (local.get $0) - (f64.const 0) - ) - (block (result i32) - (local.set $0 - (call $_frexp - (f64.mul - (local.get $0) - (f64.const 18446744073709551615) - ) - (local.get $1) - ) - ) - (i32.add - (i32.load - (local.get $1) - ) - (i32.const -64) - ) - ) - (i32.const 0) - ) - ) - (br $switch) - ) - (i32.store - (local.get $1) - (i32.add - (local.get $4) - (i32.const -1022) - ) - ) - (i32.store - (global.get $tempDoublePtr$asm2wasm$import) - (local.get $2) - ) - (i32.store offset=4 - (global.get $tempDoublePtr$asm2wasm$import) - (i32.or - (i32.and - (local.get $3) - (i32.const -2146435073) - ) - (i32.const 1071644672) - ) - ) - (local.set $0 - (f64.load - (global.get $tempDoublePtr$asm2wasm$import) - ) - ) - ) - (local.get $0) - ) - (func $_strerror (; 27 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (block $__rjto$1 - (block $__rjti$1 - (loop $while-in - (if - (i32.ne - (i32.load8_u offset=687 - (local.get $1) - ) - (local.get $0) - ) - (block - (br_if $while-in - (i32.ne - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.const 87) - ) - ) - (local.set $1 - (i32.const 87) - ) - (br $__rjti$1) - ) - ) - ) - (br_if $__rjti$1 - (local.get $1) - ) - (local.set $0 - (i32.const 775) - ) - (br $__rjto$1) - ) - (local.set $0 - (i32.const 775) - ) - (loop $while-in1 - (local.set $0 - (loop $while-in3 (result i32) - (local.set $2 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (if (result i32) - (i32.load8_s - (local.get $0) - ) - (block - (local.set $0 - (local.get $2) - ) - (br $while-in3) - ) - (local.get $2) - ) - ) - ) - (br_if $while-in1 - (local.tee $1 - (i32.add - (local.get $1) - (i32.const -1) - ) - ) - ) - ) - ) - (local.get $0) - ) - (func $___errno_location (; 28 ;) (; has Stack IR ;) (result i32) - (if (result i32) - (i32.load - (i32.const 16) - ) - (i32.load offset=60 - (call $_pthread_self) - ) - (i32.const 60) - ) - ) - (func $___stdio_close (; 29 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local.set $1 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (i32.store - (local.get $1) - (i32.load offset=60 - (local.get $0) - ) - ) - (local.set $0 - (call $___syscall_ret - (call $___syscall6 - (i32.const 6) - (local.get $1) - ) - ) - ) - (global.set $STACKTOP - (local.get $1) - ) - (local.get $0) - ) - (func $___stdout_write (; 30 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local.set $4 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 80) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $5 - (i32.add - (local.tee $3 - (local.get $4) - ) - (i32.const 12) - ) - ) - (i32.store offset=36 - (local.get $0) - (i32.const 4) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 64) - ) - ) - (block - (i32.store - (local.get $3) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.const 21505) - ) - (i32.store offset=8 - (local.get $3) - (local.get $5) - ) - (if - (call $___syscall54 - (i32.const 54) - (local.get $3) - ) - (i32.store8 offset=75 - (local.get $0) - (i32.const -1) - ) - ) - ) - ) - (local.set $0 - (call $___stdio_write - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - (global.set $STACKTOP - (local.get $4) - ) - (local.get $0) - ) - (func $___stdio_seek (; 31 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local.set $3 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 32) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (i32.store - (local.get $3) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.const 0) - ) - (i32.store offset=8 - (local.get $3) - (local.get $1) - ) - (i32.store offset=12 - (local.get $3) - (i32.add - (local.get $3) - (i32.const 20) - ) - ) - (i32.store offset=16 - (local.get $3) - (local.get $2) - ) - (local.set $0 - (if (result i32) - (i32.lt_s - (call $___syscall_ret - (call $___syscall140 - (i32.const 140) - (local.get $3) - ) - ) - (i32.const 0) - ) - (block (result i32) - (i32.store offset=20 - (local.get $3) - (i32.const -1) - ) - (i32.const -1) - ) - (i32.load offset=20 - (local.get $3) - ) - ) - ) - (global.set $STACKTOP - (local.get $3) - ) - (local.get $0) - ) - (func $_fflush (; 32 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (if - (local.get $0) - (local.set $0 - (block $do-once (result i32) - (if - (i32.le_s - (i32.load offset=76 - (local.get $0) - ) - (i32.const -1) - ) - (br $do-once - (call $___fflush_unlocked - (local.get $0) - ) - ) - ) - (call $___fflush_unlocked - (local.get $0) - ) - ) - ) - (block - (local.set $0 - (if (result i32) - (i32.load - (i32.const 12) - ) - (call $_fflush - (i32.load - (i32.const 12) - ) - ) - (i32.const 0) - ) - ) - (call $___lock - (i32.const 44) - ) - (if - (local.tee $1 - (i32.load - (i32.const 40) - ) - ) - (loop $while-in - (if - (i32.gt_u - (i32.load offset=20 - (local.get $1) - ) - (i32.load offset=28 - (local.get $1) - ) - ) - (local.set $0 - (i32.or - (call $___fflush_unlocked - (local.get $1) - ) - (local.get $0) - ) - ) - ) - (br_if $while-in - (local.tee $1 - (i32.load offset=56 - (local.get $1) - ) - ) - ) - ) - ) - (call $___unlock - (i32.const 44) - ) - ) - ) - (local.get $0) - ) - (func $_printf (; 33 ;) (; has Stack IR ;) (param $0 i32) - (local $1 i32) - (local.set $1 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (i32.store - (local.get $1) - (local.get $0) - ) - (call $_vfprintf - (i32.load - (i32.const 8) - ) - (local.get $1) - ) - (global.set $STACKTOP - (local.get $1) - ) - ) - (func $___stdio_write (; 34 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local.set $9 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 48) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $7 - (i32.add - (local.get $9) - (i32.const 16) - ) - ) - (i32.store - (local.tee $4 - (i32.add - (local.tee $8 - (local.get $9) - ) - (i32.const 32) - ) - ) - (local.tee $3 - (i32.load offset=28 - (local.get $0) - ) - ) - ) - (i32.store offset=4 - (local.get $4) - (local.tee $3 - (i32.sub - (i32.load offset=20 - (local.get $0) - ) - (local.get $3) - ) - ) - ) - (i32.store offset=8 - (local.get $4) - (local.get $1) - ) - (i32.store offset=12 - (local.get $4) - (local.get $2) - ) - (local.set $1 - (local.get $4) - ) - (local.set $4 - (i32.const 2) - ) - (local.set $10 - (i32.add - (local.get $2) - (local.get $3) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (loop $while-in - (block $__rjti$0 - (if - (i32.load - (i32.const 16) - ) - (block - (call $_pthread_cleanup_push - (i32.const 5) - (local.get $0) - ) - (i32.store - (local.get $8) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $8) - (local.get $1) - ) - (i32.store offset=8 - (local.get $8) - (local.get $4) - ) - (local.set $3 - (call $___syscall_ret - (call $___syscall146 - (i32.const 146) - (local.get $8) - ) - ) - ) - (call $_pthread_cleanup_pop - (i32.const 0) - ) - ) - (block - (i32.store - (local.get $7) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $7) - (local.get $1) - ) - (i32.store offset=8 - (local.get $7) - (local.get $4) - ) - (local.set $3 - (call $___syscall_ret - (call $___syscall146 - (i32.const 146) - (local.get $7) - ) - ) - ) - ) - ) - (br_if $__rjti$0 - (i32.eq - (local.get $3) - (local.get $10) - ) - ) - (br_if $__rjti$1 - (i32.lt_s - (local.get $3) - (i32.const 0) - ) - ) - (local.set $5 - (if (result i32) - (i32.gt_u - (local.get $3) - (local.tee $5 - (i32.load offset=4 - (local.get $1) - ) - ) - ) - (block (result i32) - (i32.store offset=28 - (local.get $0) - (local.tee $6 - (i32.load offset=44 - (local.get $0) - ) - ) - ) - (i32.store offset=20 - (local.get $0) - (local.get $6) - ) - (local.set $6 - (i32.load offset=12 - (local.get $1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (local.set $4 - (i32.add - (local.get $4) - (i32.const -1) - ) - ) - (i32.sub - (local.get $3) - (local.get $5) - ) - ) - (block (result i32) - (if - (i32.eq - (local.get $4) - (i32.const 2) - ) - (block - (i32.store offset=28 - (local.get $0) - (i32.add - (i32.load offset=28 - (local.get $0) - ) - (local.get $3) - ) - ) - (local.set $6 - (local.get $5) - ) - (local.set $4 - (i32.const 2) - ) - ) - (local.set $6 - (local.get $5) - ) - ) - (local.get $3) - ) - ) - ) - (i32.store - (local.get $1) - (i32.add - (i32.load - (local.get $1) - ) - (local.get $5) - ) - ) - (i32.store offset=4 - (local.get $1) - (i32.sub - (local.get $6) - (local.get $5) - ) - ) - (local.set $10 - (i32.sub - (local.get $10) - (local.get $3) - ) - ) - (br $while-in) - ) - ) - (i32.store offset=16 - (local.get $0) - (i32.add - (local.tee $1 - (i32.load offset=44 - (local.get $0) - ) - ) - (i32.load offset=48 - (local.get $0) - ) - ) - ) - (i32.store offset=28 - (local.get $0) - (local.get $1) - ) - (i32.store offset=20 - (local.get $0) - (local.get $1) - ) - (br $__rjto$1) - ) - (i32.store offset=16 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=20 - (local.get $0) - (i32.const 0) - ) - (i32.store - (local.get $0) - (i32.or - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (local.set $2 - (select - (i32.const 0) - (i32.sub - (local.get $2) - (i32.load offset=4 - (local.get $1) - ) - ) - (i32.eq - (local.get $4) - (i32.const 2) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $9) - ) - (local.get $2) - ) - (func $_vfprintf (; 35 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local.set $6 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 224) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $3 - (i32.add - (local.get $6) - (i32.const 120) - ) - ) - (local.set $5 - (i32.add - (local.tee $4 - (local.get $6) - ) - (i32.const 136) - ) - ) - (local.set $8 - (i32.add - (local.tee $2 - (local.tee $7 - (i32.add - (local.get $4) - (i32.const 80) - ) - ) - ) - (i32.const 40) - ) - ) - (loop $do-in - (i32.store - (local.get $2) - (i32.const 0) - ) - (br_if $do-in - (i32.lt_s - (local.tee $2 - (i32.add - (local.get $2) - (i32.const 4) - ) - ) - (local.get $8) - ) - ) - ) - (i32.store - (local.get $3) - (i32.load - (local.get $1) - ) - ) - (drop - (if (result i32) - (i32.lt_s - (call $_printf_core - (i32.const 0) - (local.get $3) - (local.get $4) - (local.get $7) - ) - (i32.const 0) - ) - (i32.const -1) - (block (result i32) - (local.set $1 - (i32.load - (local.get $0) - ) - ) - (if - (i32.lt_s - (i32.load8_s offset=74 - (local.get $0) - ) - (i32.const 1) - ) - (i32.store - (local.get $0) - (i32.and - (local.get $1) - (i32.const -33) - ) - ) - ) - (if - (i32.load offset=48 - (local.get $0) - ) - (drop - (call $_printf_core - (local.get $0) - (local.get $3) - (local.get $4) - (local.get $7) - ) - ) - (block - (local.set $2 - (i32.load offset=44 - (local.get $0) - ) - ) - (i32.store offset=44 - (local.get $0) - (local.get $5) - ) - (i32.store offset=28 - (local.get $0) - (local.get $5) - ) - (i32.store offset=20 - (local.get $0) - (local.get $5) - ) - (i32.store offset=48 - (local.get $0) - (i32.const 80) - ) - (i32.store offset=16 - (local.get $0) - (i32.add - (local.get $5) - (i32.const 80) - ) - ) - (drop - (call $_printf_core - (local.get $0) - (local.get $3) - (local.get $4) - (local.get $7) - ) - ) - (if - (local.get $2) - (block - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $0) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (i32.store offset=44 - (local.get $0) - (local.get $2) - ) - (i32.store offset=48 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=20 - (local.get $0) - (i32.const 0) - ) - ) - ) - ) - ) - (i32.store - (local.get $0) - (i32.or - (i32.load - (local.get $0) - ) - (i32.and - (local.get $1) - (i32.const 32) - ) - ) - ) - (i32.const 0) - ) - ) - ) - (global.set $STACKTOP - (local.get $6) - ) - ) - (func $___fwritex (; 36 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (block $label$break$L5 - (block $__rjti$0 - (br_if $__rjti$0 - (local.tee $3 - (i32.load offset=16 - (local.get $2) - ) - ) - ) - (if - (i32.eqz - (call $___towrite - (local.get $2) - ) - ) - (block - (local.set $3 - (i32.load offset=16 - (local.get $2) - ) - ) - (br $__rjti$0) - ) - ) - (br $label$break$L5) - ) - (if - (i32.lt_u - (i32.sub - (local.get $3) - (local.tee $4 - (i32.load offset=20 - (local.get $2) - ) - ) - ) - (local.get $1) - ) - (block - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $2) - (local.get $0) - (local.get $1) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $2) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (br $label$break$L5) - ) - ) - (drop - (if (result i32) - (i32.gt_s - (i32.load8_s offset=75 - (local.get $2) - ) - (i32.const -1) - ) - (block $label$break$L10 (result i32) - (local.set $3 - (local.get $1) - ) - (loop $while-in - (drop - (br_if $label$break$L10 - (i32.const 0) - (i32.eqz - (local.get $3) - ) - ) - ) - (if - (i32.ne - (i32.load8_s - (i32.add - (local.get $0) - (local.tee $5 - (i32.add - (local.get $3) - (i32.const -1) - ) - ) - ) - ) - (i32.const 10) - ) - (block - (local.set $3 - (local.get $5) - ) - (br $while-in) - ) - ) - ) - (br_if $label$break$L5 - (i32.lt_u - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $2) - (local.get $0) - (local.get $3) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $2) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - (local.get $3) - ) - ) - (local.set $4 - (i32.load offset=20 - (local.get $2) - ) - ) - (local.set $1 - (i32.sub - (local.get $1) - (local.get $3) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (local.get $3) - ) - ) - (i32.const 0) - ) - (i32.const 0) - ) - ) - (drop - (call $_memcpy - (local.get $4) - (local.get $0) - (local.get $1) - ) - ) - (i32.store offset=20 - (local.get $2) - (i32.add - (i32.load offset=20 - (local.get $2) - ) - (local.get $1) - ) - ) - ) - ) - (func $___towrite (; 37 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (i32.store8 offset=74 - (local.get $0) - (i32.or - (local.tee $1 - (i32.load8_s offset=74 - (local.get $0) - ) - ) - (i32.add - (local.get $1) - (i32.const 255) - ) - ) - ) - (if (result i32) - (i32.and - (local.tee $1 - (i32.load - (local.get $0) - ) - ) - (i32.const 8) - ) - (block (result i32) - (i32.store - (local.get $0) - (i32.or - (local.get $1) - (i32.const 32) - ) - ) - (i32.const -1) - ) - (block (result i32) - (i32.store offset=8 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (local.tee $1 - (i32.load offset=44 - (local.get $0) - ) - ) - ) - (i32.store offset=20 - (local.get $0) - (local.get $1) - ) - (i32.store offset=16 - (local.get $0) - (i32.add - (local.get $1) - (i32.load offset=48 - (local.get $0) - ) - ) - ) - (i32.const 0) - ) - ) - ) - (func $_wcrtomb (; 38 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (local.get $0) - (block $do-once (result i32) - (if - (i32.lt_u - (local.get $1) - (i32.const 128) - ) - (block - (i32.store8 - (local.get $0) - (local.get $1) - ) - (br $do-once - (i32.const 1) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (i32.const 2048) - ) - (block - (i32.store8 - (local.get $0) - (i32.or - (i32.shr_u - (local.get $1) - (i32.const 6) - ) - (i32.const 192) - ) - ) - (i32.store8 offset=1 - (local.get $0) - (i32.or - (i32.and - (local.get $1) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (br $do-once - (i32.const 2) - ) - ) - ) - (if - (i32.or - (i32.eq - (i32.and - (local.get $1) - (i32.const -8192) - ) - (i32.const 57344) - ) - (i32.lt_u - (local.get $1) - (i32.const 55296) - ) - ) - (block - (i32.store8 - (local.get $0) - (i32.or - (i32.shr_u - (local.get $1) - (i32.const 12) - ) - (i32.const 224) - ) - ) - (i32.store8 offset=1 - (local.get $0) - (i32.or - (i32.and - (i32.shr_u - (local.get $1) - (i32.const 6) - ) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.store8 offset=2 - (local.get $0) - (i32.or - (i32.and - (local.get $1) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (br $do-once - (i32.const 3) - ) - ) - ) - (if (result i32) - (i32.lt_u - (i32.add - (local.get $1) - (i32.const -65536) - ) - (i32.const 1048576) - ) - (block (result i32) - (i32.store8 - (local.get $0) - (i32.or - (i32.shr_u - (local.get $1) - (i32.const 18) - ) - (i32.const 240) - ) - ) - (i32.store8 offset=1 - (local.get $0) - (i32.or - (i32.and - (i32.shr_u - (local.get $1) - (i32.const 12) - ) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.store8 offset=2 - (local.get $0) - (i32.or - (i32.and - (i32.shr_u - (local.get $1) - (i32.const 6) - ) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.store8 offset=3 - (local.get $0) - (i32.or - (i32.and - (local.get $1) - (i32.const 63) - ) - (i32.const 128) - ) - ) - (i32.const 4) - ) - (block (result i32) - (i32.store - (call $___errno_location) - (i32.const 84) - ) - (i32.const -1) - ) - ) - ) - (i32.const 1) - ) - ) - (func $_wctomb (; 39 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (local.get $0) - (call $_wcrtomb - (local.get $0) - (local.get $1) - ) - (i32.const 0) - ) - ) - (func $_memchr (; 40 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (block $label$break$L8 - (block $__rjti$2 - (if - (i32.and - (local.tee $3 - (i32.ne - (local.get $1) - (i32.const 0) - ) - ) - (i32.ne - (i32.and - (local.get $0) - (i32.const 3) - ) - (i32.const 0) - ) - ) - (block - (local.set $2 - (local.get $1) - ) - (local.set $1 - (local.get $0) - ) - (loop $while-in - (br_if $__rjti$2 - (i32.eqz - (i32.load8_u - (local.get $1) - ) - ) - ) - (br_if $while-in - (i32.and - (local.tee $0 - (i32.ne - (local.tee $2 - (i32.add - (local.get $2) - (i32.const -1) - ) - ) - (i32.const 0) - ) - ) - (i32.ne - (i32.and - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.const 3) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (block - (local.set $2 - (local.get $1) - ) - (local.set $1 - (local.get $0) - ) - (local.set $0 - (local.get $3) - ) - ) - ) - (br_if $__rjti$2 - (local.get $0) - ) - (local.set $0 - (i32.const 0) - ) - (br $label$break$L8) - ) - (local.set $0 - (local.get $2) - ) - (if - (i32.load8_u - (local.get $1) - ) - (block - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.le_u - (local.get $0) - (i32.const 3) - ) - ) - (loop $while-in3 - (if - (i32.eqz - (i32.and - (i32.xor - (i32.and - (local.tee $2 - (i32.load - (local.get $1) - ) - ) - (i32.const -2139062144) - ) - (i32.const -2139062144) - ) - (i32.add - (local.get $2) - (i32.const -16843009) - ) - ) - ) - (block - (local.set $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (br_if $while-in3 - (i32.gt_u - (local.tee $0 - (i32.add - (local.get $0) - (i32.const -4) - ) - ) - (i32.const 3) - ) - ) - (br $__rjti$0) - ) - ) - ) - (br $__rjto$0) - ) - (if - (i32.eqz - (local.get $0) - ) - (block - (local.set $0 - (i32.const 0) - ) - (br $label$break$L8) - ) - ) - ) - (local.set $0 - (loop $while-in5 (result i32) - (br_if $label$break$L8 - (i32.eqz - (i32.load8_u - (local.get $1) - ) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (br_if $while-in5 - (local.tee $0 - (i32.add - (local.get $0) - (i32.const -1) - ) - ) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (select - (local.get $1) - (i32.const 0) - (local.get $0) - ) - ) - (func $___syscall_ret (; 41 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (if - (i32.gt_u - (local.get $0) - (i32.const -4096) - ) - (block - (i32.store - (call $___errno_location) - (i32.sub - (i32.const 0) - (local.get $0) - ) - ) - (local.set $0 - (i32.const -1) - ) - ) - ) - (local.get $0) - ) - (func $___fflush_unlocked (; 42 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (block $__rjto$0 (result i32) - (block $__rjti$0 - (br_if $__rjti$0 - (i32.le_u - (i32.load offset=20 - (local.get $0) - ) - (i32.load offset=28 - (local.get $0) - ) - ) - ) - (local.set $1 - (i32.load offset=36 - (local.get $0) - ) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (local.get $1) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (br_if $__rjti$0 - (i32.load offset=20 - (local.get $0) - ) - ) - (br $__rjto$0 - (i32.const -1) - ) - ) - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=4 - (local.get $0) - ) - ) - (local.tee $2 - (i32.load offset=8 - (local.get $0) - ) - ) - ) - (block - (local.set $3 - (i32.load offset=40 - (local.get $0) - ) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (i32.sub - (local.get $1) - (local.get $2) - ) - (i32.const 1) - (i32.add - (i32.and - (local.get $3) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (i32.store offset=16 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=20 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=8 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.const 0) - ) - (i32.const 0) - ) - ) - (func $_cleanup (; 43 ;) (; has Stack IR ;) (param $0 i32) - (nop) - ) - (func $_printf_core (; 44 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 f64) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 f64) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i32) - (local $44 i32) - (local $45 i32) - (local $46 i32) - (local $47 i32) - (local $48 i32) - (local $49 i32) - (local.set $4 - (i32.const 672) - ) - (local.set $29 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 624) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $20 - (i32.add - (local.get $29) - (i32.const 16) - ) - ) - (local.set $43 - (i32.add - (local.tee $13 - (local.get $29) - ) - (i32.const 8) - ) - ) - (local.set $35 - (i32.add - (local.get $13) - (i32.const 528) - ) - ) - (local.set $30 - (i32.ne - (local.get $0) - (i32.const 0) - ) - ) - (local.set $39 - (local.tee $24 - (i32.add - (local.tee $5 - (i32.add - (local.get $13) - (i32.const 536) - ) - ) - (i32.const 40) - ) - ) - ) - (local.set $40 - (i32.add - (local.get $5) - (i32.const 39) - ) - ) - (local.set $33 - (i32.add - (local.tee $5 - (i32.add - (local.get $13) - (i32.const 576) - ) - ) - (i32.const 12) - ) - ) - (local.set $41 - (i32.add - (local.get $5) - (i32.const 11) - ) - ) - (local.set $44 - (i32.sub - (local.tee $28 - (local.get $33) - ) - (local.tee $36 - (local.tee $21 - (i32.add - (local.get $13) - (i32.const 588) - ) - ) - ) - ) - ) - (local.set $45 - (i32.sub - (i32.const -2) - (local.get $36) - ) - ) - (local.set $46 - (i32.add - (local.get $28) - (i32.const 2) - ) - ) - (local.set $48 - (i32.add - (local.tee $47 - (i32.add - (local.get $13) - (i32.const 24) - ) - ) - (i32.const 288) - ) - ) - (local.set $42 - (local.tee $31 - (i32.add - (local.get $21) - (i32.const 9) - ) - ) - ) - (local.set $34 - (i32.add - (local.get $21) - (i32.const 8) - ) - ) - (block $label$break$L343 - (block $__rjti$9 - (loop $label$continue$L1 - (block $label$break$L1 - (if - (i32.gt_s - (local.get $16) - (i32.const -1) - ) - (local.set $16 - (if (result i32) - (i32.gt_s - (local.get $9) - (i32.sub - (i32.const 2147483647) - (local.get $16) - ) - ) - (block (result i32) - (i32.store - (call $___errno_location) - (i32.const 75) - ) - (i32.const -1) - ) - (i32.add - (local.get $9) - (local.get $16) - ) - ) - ) - ) - (br_if $__rjti$9 - (i32.eqz - (local.tee $6 - (i32.load8_s - (local.get $4) - ) - ) - ) - ) - (local.set $9 - (local.get $4) - ) - (block $label$break$L12 - (block $__rjti$1 - (loop $label$continue$L9 - (block $label$break$L9 - (block $switch - (if - (local.tee $5 - (i32.shr_s - (i32.shl - (local.get $6) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (block - (br_if $switch - (i32.ne - (local.get $5) - (i32.const 37) - ) - ) - (local.set $5 - (local.get $9) - ) - (br $__rjti$1) - ) - ) - (local.set $5 - (local.get $9) - ) - (br $label$break$L9) - ) - (local.set $6 - (i32.load8_s - (local.tee $9 - (i32.add - (local.get $9) - (i32.const 1) - ) - ) - ) - ) - (br $label$continue$L9) - ) - ) - (br $label$break$L12) - ) - (loop $while-in - (br_if $label$break$L12 - (i32.ne - (i32.load8_s offset=1 - (local.get $5) - ) - (i32.const 37) - ) - ) - (local.set $9 - (i32.add - (local.get $9) - (i32.const 1) - ) - ) - (br_if $while-in - (i32.eq - (i32.load8_s - (local.tee $5 - (i32.add - (local.get $5) - (i32.const 2) - ) - ) - ) - (i32.const 37) - ) - ) - ) - ) - (local.set $6 - (i32.sub - (local.get $9) - (local.get $4) - ) - ) - (if - (local.get $30) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $4) - (local.get $6) - (local.get $0) - ) - ) - ) - (if - (i32.ne - (local.get $4) - (local.get $9) - ) - (block - (local.set $4 - (local.get $5) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - ) - (local.set $10 - (if (result i32) - (i32.lt_u - (local.tee $7 - (i32.add - (local.tee $11 - (i32.load8_s - (local.tee $9 - (i32.add - (local.get $5) - (i32.const 1) - ) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (block (result i32) - (local.set $5 - (i32.load8_s - (local.tee $9 - (select - (i32.add - (local.get $5) - (i32.const 3) - ) - (local.get $9) - (local.tee $11 - (i32.eq - (i32.load8_s offset=2 - (local.get $5) - ) - (i32.const 36) - ) - ) - ) - ) - ) - ) - (local.set $18 - (select - (local.get $7) - (i32.const -1) - (local.get $11) - ) - ) - (select - (i32.const 1) - (local.get $25) - (local.get $11) - ) - ) - (block (result i32) - (local.set $5 - (local.get $11) - ) - (local.set $18 - (i32.const -1) - ) - (local.get $25) - ) - ) - ) - (local.set $8 - (if (result i32) - (i32.eq - (i32.and - (local.tee $11 - (i32.shr_s - (i32.shl - (local.get $5) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (i32.const -32) - ) - (i32.const 32) - ) - (block $label$break$L25 (result i32) - (local.set $25 - (local.get $5) - ) - (local.set $5 - (local.get $11) - ) - (local.set $11 - (i32.const 0) - ) - (loop $while-in4 (result i32) - (if - (i32.eqz - (i32.and - (i32.shl - (i32.const 1) - (i32.add - (local.get $5) - (i32.const -32) - ) - ) - (i32.const 75913) - ) - ) - (block - (local.set $5 - (local.get $25) - ) - (br $label$break$L25 - (local.get $11) - ) - ) - ) - (local.set $11 - (i32.or - (local.get $11) - (i32.shl - (i32.const 1) - (i32.add - (i32.shr_s - (i32.shl - (local.get $25) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -32) - ) - ) - ) - ) - (br_if $while-in4 - (i32.eq - (i32.and - (local.tee $5 - (local.tee $25 - (i32.load8_s - (local.tee $9 - (i32.add - (local.get $9) - (i32.const 1) - ) - ) - ) - ) - ) - (i32.const -32) - ) - (i32.const 32) - ) - ) - (local.set $5 - (local.get $25) - ) - (local.get $11) - ) - ) - (i32.const 0) - ) - ) - (local.set $25 - (if (result i32) - (i32.eq - (i32.and - (local.get $5) - (i32.const 255) - ) - (i32.const 42) - ) - (block $do-once5 (result i32) - (local.set $9 - (block $__rjto$0 (result i32) - (if - (i32.eqz - (i32.or - (i32.ne - (i32.load8_s offset=2 - (local.get $9) - ) - (i32.const 36) - ) - (i32.ge_u - (local.tee $11 - (i32.add - (i32.load8_s - (local.tee $5 - (i32.add - (local.get $9) - (i32.const 1) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - ) - ) - (block - (i32.store - (i32.add - (i32.shl - (local.get $11) - (i32.const 2) - ) - (local.get $3) - ) - (i32.const 10) - ) - (local.set $7 - (i32.const 1) - ) - (local.set $15 - (i32.load - (i32.add - (i32.shl - (i32.add - (i32.load8_s - (local.get $5) - ) - (i32.const -48) - ) - (i32.const 3) - ) - (local.get $2) - ) - ) - ) - (br $__rjto$0 - (i32.add - (local.get $9) - (i32.const 3) - ) - ) - ) - ) - (if - (local.get $10) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (if - (i32.eqz - (local.get $30) - ) - (block - (local.set $11 - (local.get $8) - ) - (local.set $9 - (local.get $5) - ) - (local.set $15 - (i32.const 0) - ) - (br $do-once5 - (i32.const 0) - ) - ) - ) - (local.set $15 - (i32.load - (local.tee $9 - (i32.and - (i32.add - (i32.load - (local.get $1) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $1) - (i32.add - (local.get $9) - (i32.const 4) - ) - ) - (local.set $7 - (i32.const 0) - ) - (local.get $5) - ) - ) - (local.set $11 - (if (result i32) - (i32.lt_s - (local.get $15) - (i32.const 0) - ) - (block (result i32) - (local.set $15 - (i32.sub - (i32.const 0) - (local.get $15) - ) - ) - (i32.or - (local.get $8) - (i32.const 8192) - ) - ) - (local.get $8) - ) - ) - (local.get $7) - ) - (if (result i32) - (i32.lt_u - (local.tee $5 - (i32.add - (i32.shr_s - (i32.shl - (local.get $5) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (block (result i32) - (local.set $11 - (i32.const 0) - ) - (loop $while-in8 - (local.set $5 - (i32.add - (local.get $5) - (i32.mul - (local.get $11) - (i32.const 10) - ) - ) - ) - (if - (i32.lt_u - (local.tee $7 - (i32.add - (i32.load8_s - (local.tee $9 - (i32.add - (local.get $9) - (i32.const 1) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (block - (local.set $11 - (local.get $5) - ) - (local.set $5 - (local.get $7) - ) - (br $while-in8) - ) - ) - ) - (if (result i32) - (i32.lt_s - (local.get $5) - (i32.const 0) - ) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L1) - ) - (block (result i32) - (local.set $11 - (local.get $8) - ) - (local.set $15 - (local.get $5) - ) - (local.get $10) - ) - ) - ) - (block (result i32) - (local.set $11 - (local.get $8) - ) - (local.set $15 - (i32.const 0) - ) - (local.get $10) - ) - ) - ) - ) - (local.set $5 - (if (result i32) - (i32.eq - (i32.load8_s - (local.get $9) - ) - (i32.const 46) - ) - (block $label$break$L46 (result i32) - (if - (i32.ne - (local.tee $7 - (i32.load8_s - (local.tee $5 - (i32.add - (local.get $9) - (i32.const 1) - ) - ) - ) - ) - (i32.const 42) - ) - (block - (local.set $5 - (if (result i32) - (i32.lt_u - (local.tee $8 - (i32.add - (local.get $7) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (block (result i32) - (local.set $9 - (local.get $5) - ) - (local.set $7 - (i32.const 0) - ) - (local.get $8) - ) - (block - (local.set $9 - (local.get $5) - ) - (br $label$break$L46 - (i32.const 0) - ) - ) - ) - ) - (loop $while-in11 - (drop - (br_if $label$break$L46 - (local.tee $7 - (i32.add - (local.get $5) - (i32.mul - (local.get $7) - (i32.const 10) - ) - ) - ) - (i32.ge_u - (local.tee $5 - (i32.add - (i32.load8_s - (local.tee $9 - (i32.add - (local.get $9) - (i32.const 1) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - ) - ) - (br $while-in11) - ) - ) - ) - (if - (i32.lt_u - (local.tee $7 - (i32.add - (i32.load8_s - (local.tee $5 - (i32.add - (local.get $9) - (i32.const 2) - ) - ) - ) - (i32.const -48) - ) - ) - (i32.const 10) - ) - (if - (i32.eq - (i32.load8_s offset=3 - (local.get $9) - ) - (i32.const 36) - ) - (block - (i32.store - (i32.add - (i32.shl - (local.get $7) - (i32.const 2) - ) - (local.get $3) - ) - (i32.const 10) - ) - (local.set $9 - (i32.add - (local.get $9) - (i32.const 4) - ) - ) - (br $label$break$L46 - (i32.load - (i32.add - (i32.shl - (i32.add - (i32.load8_s - (local.get $5) - ) - (i32.const -48) - ) - (i32.const 3) - ) - (local.get $2) - ) - ) - ) - ) - ) - ) - (if - (local.get $25) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (if (result i32) - (local.get $30) - (block (result i32) - (local.set $7 - (i32.load - (local.tee $9 - (i32.and - (i32.add - (i32.load - (local.get $1) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $1) - (i32.add - (local.get $9) - (i32.const 4) - ) - ) - (local.set $9 - (local.get $5) - ) - (local.get $7) - ) - (block (result i32) - (local.set $9 - (local.get $5) - ) - (i32.const 0) - ) - ) - ) - (i32.const -1) - ) - ) - (local.set $7 - (local.get $9) - ) - (local.set $10 - (i32.const 0) - ) - (local.set $17 - (loop $while-in13 (result i32) - (if - (i32.gt_u - (local.tee $8 - (i32.add - (i32.load8_s - (local.get $7) - ) - (i32.const -65) - ) - ) - (i32.const 57) - ) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (local.set $9 - (i32.add - (local.get $7) - (i32.const 1) - ) - ) - (if (result i32) - (i32.lt_u - (i32.add - (local.tee $8 - (i32.and - (local.tee $12 - (i32.load8_s - (i32.add - (local.get $8) - (i32.add - (i32.mul - (local.get $10) - (i32.const 58) - ) - (i32.const 3611) - ) - ) - ) - ) - (i32.const 255) - ) - ) - (i32.const -1) - ) - (i32.const 8) - ) - (block - (local.set $7 - (local.get $9) - ) - (local.set $10 - (local.get $8) - ) - (br $while-in13) - ) - (local.get $7) - ) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $12) - (i32.const 255) - ) - ) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (local.set $7 - (i32.gt_s - (local.get $18) - (i32.const -1) - ) - ) - (block $__rjto$2 - (block $__rjti$2 - (if - (i32.eq - (i32.and - (local.get $12) - (i32.const 255) - ) - (i32.const 19) - ) - (if - (local.get $7) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L1) - ) - (br $__rjti$2) - ) - (block - (if - (local.get $7) - (block - (i32.store - (i32.add - (i32.shl - (local.get $18) - (i32.const 2) - ) - (local.get $3) - ) - (local.get $8) - ) - (local.set $8 - (i32.load offset=4 - (local.tee $7 - (i32.add - (i32.shl - (local.get $18) - (i32.const 3) - ) - (local.get $2) - ) - ) - ) - ) - (i32.store - (local.get $13) - (i32.load - (local.get $7) - ) - ) - (i32.store offset=4 - (local.get $13) - (local.get $8) - ) - (br $__rjti$2) - ) - ) - (if - (i32.eqz - (local.get $30) - ) - (block - (local.set $16 - (i32.const 0) - ) - (br $label$break$L1) - ) - ) - (call $_pop_arg_336 - (local.get $13) - (local.get $8) - (local.get $1) - ) - ) - ) - (br $__rjto$2) - ) - (if - (i32.eqz - (local.get $30) - ) - (block - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - ) - ) - (local.set $11 - (select - (local.tee $7 - (i32.and - (local.get $11) - (i32.const -65537) - ) - ) - (local.get $11) - (i32.and - (local.get $11) - (i32.const 8192) - ) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.tee $5 - (select - (local.tee $6 - (i32.add - (local.tee $8 - (select - (local.tee $12 - (i32.sub - (block $__rjto$8 (result i32) - (block $__rjti$8 - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.tee $5 - (block $__rjti$7 (result i32) - (block $__rjti$6 - (block $__rjti$5 - (block $__rjti$4 - (block $__rjti$3 - (block $switch-default120 - (block $switch-case119 - (block $switch-case41 - (block $switch-case40 - (block $switch-case39 - (block $switch-case38 - (block $switch-case37 - (block $switch-case36 - (block $switch-case35 - (block $switch-case33 - (block $switch-case30 - (block $switch-case28 - (block $switch-case27 - (br_table $switch-case119 $switch-default120 $switch-case40 $switch-default120 $switch-case119 $switch-case119 $switch-case119 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case41 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case30 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case119 $switch-default120 $switch-case37 $switch-case35 $switch-case119 $switch-case119 $switch-case119 $switch-default120 $switch-case35 $switch-default120 $switch-default120 $switch-default120 $switch-case38 $switch-case27 $switch-case33 $switch-case28 $switch-default120 $switch-default120 $switch-case39 $switch-default120 $switch-case36 $switch-default120 $switch-default120 $switch-case30 $switch-default120 - (i32.sub - (local.tee $17 - (select - (i32.and - (local.tee $8 - (i32.load8_s - (local.get $17) - ) - ) - (i32.const -33) - ) - (local.get $8) - (i32.and - (i32.eq - (i32.and - (local.get $8) - (i32.const 15) - ) - (i32.const 3) - ) - (i32.ne - (local.get $10) - (i32.const 0) - ) - ) - ) - ) - (i32.const 65) - ) - ) - ) - (block $switch-default26 - (block $switch-case25 - (block $switch-case24 - (block $switch-case23 - (block $switch-case22 - (block $switch-case21 - (block $switch-case20 - (block $switch-case19 - (br_table $switch-case19 $switch-case20 $switch-case21 $switch-case22 $switch-case23 $switch-default26 $switch-case24 $switch-case25 $switch-default26 - (local.get $10) - ) - ) - (i32.store - (i32.load - (local.get $13) - ) - (local.get $16) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (i32.store - (i32.load - (local.get $13) - ) - (local.get $16) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (i32.store - (local.tee $4 - (i32.load - (local.get $13) - ) - ) - (local.get $16) - ) - (i32.store offset=4 - (local.get $4) - (i32.shr_s - (i32.shl - (i32.lt_s - (local.get $16) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (i32.store16 - (i32.load - (local.get $13) - ) - (local.get $16) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (i32.store8 - (i32.load - (local.get $13) - ) - (local.get $16) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (i32.store - (i32.load - (local.get $13) - ) - (local.get $16) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (i32.store - (local.tee $4 - (i32.load - (local.get $13) - ) - ) - (local.get $16) - ) - (i32.store offset=4 - (local.get $4) - (i32.shr_s - (i32.shl - (i32.lt_s - (local.get $16) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $6) - ) - (br $label$continue$L1) - ) - (local.set $4 - (i32.or - (local.get $11) - (i32.const 8) - ) - ) - (local.set $5 - (select - (local.get $5) - (i32.const 8) - (i32.gt_u - (local.get $5) - (i32.const 8) - ) - ) - ) - (local.set $17 - (i32.const 120) - ) - (br $__rjti$3) - ) - (local.set $4 - (local.get $11) - ) - (br $__rjti$3) - ) - (if - (i32.or - (local.tee $4 - (i32.load - (local.get $13) - ) - ) - (local.tee $6 - (i32.load offset=4 - (local.get $13) - ) - ) - ) - (block - (local.set $7 - (local.get $24) - ) - (loop $while-in32 - (i32.store8 - (local.tee $7 - (i32.add - (local.get $7) - (i32.const -1) - ) - ) - (i32.or - (i32.and - (local.get $4) - (i32.const 7) - ) - (i32.const 48) - ) - ) - (br_if $while-in32 - (i32.or - (local.tee $4 - (call $_bitshift64Lshr - (local.get $4) - (local.get $6) - (i32.const 3) - ) - ) - (local.tee $6 - (global.get $tempRet0) - ) - ) - ) - ) - ) - (local.set $7 - (local.get $24) - ) - ) - (if - (i32.and - (local.get $11) - (i32.const 8) - ) - (block - (local.set $4 - (local.get $11) - ) - (local.set $5 - (select - (local.tee $11 - (i32.add - (i32.sub - (local.get $39) - (local.tee $6 - (local.get $7) - ) - ) - (i32.const 1) - ) - ) - (local.get $5) - (i32.lt_s - (local.get $5) - (local.get $11) - ) - ) - ) - ) - (block - (local.set $6 - (local.get $7) - ) - (local.set $4 - (local.get $11) - ) - ) - ) - (local.set $7 - (i32.const 0) - ) - (local.set $10 - (i32.const 4091) - ) - (br $__rjti$8) - ) - (local.set $4 - (i32.load - (local.get $13) - ) - ) - (if - (i32.lt_s - (local.tee $6 - (i32.load offset=4 - (local.get $13) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (local.get $13) - (local.tee $4 - (call $_i64Subtract - (i32.const 0) - (i32.const 0) - (local.get $4) - (local.get $6) - ) - ) - ) - (i32.store offset=4 - (local.get $13) - (local.tee $6 - (global.get $tempRet0) - ) - ) - (local.set $7 - (i32.const 1) - ) - (local.set $10 - (i32.const 4091) - ) - (br $__rjti$4) - ) - ) - (local.set $10 - (if (result i32) - (i32.and - (local.get $11) - (i32.const 2048) - ) - (block (result i32) - (local.set $7 - (i32.const 1) - ) - (i32.const 4092) - ) - (block (result i32) - (local.set $7 - (local.tee $8 - (i32.and - (local.get $11) - (i32.const 1) - ) - ) - ) - (select - (i32.const 4093) - (i32.const 4091) - (local.get $8) - ) - ) - ) - ) - (br $__rjti$4) - ) - (local.set $4 - (i32.load - (local.get $13) - ) - ) - (local.set $6 - (i32.load offset=4 - (local.get $13) - ) - ) - (local.set $7 - (i32.const 0) - ) - (local.set $10 - (i32.const 4091) - ) - (br $__rjti$4) - ) - (i32.store8 - (local.get $40) - (i32.load - (local.get $13) - ) - ) - (local.set $4 - (local.get $40) - ) - (local.set $11 - (local.get $7) - ) - (local.set $8 - (i32.const 1) - ) - (local.set $7 - (i32.const 0) - ) - (local.set $10 - (i32.const 4091) - ) - (br $__rjto$8 - (local.get $24) - ) - ) - (local.set $6 - (call $_strerror - (i32.load - (call $___errno_location) - ) - ) - ) - (br $__rjti$5) - ) - (local.set $6 - (select - (local.tee $4 - (i32.load - (local.get $13) - ) - ) - (i32.const 4101) - (local.get $4) - ) - ) - (br $__rjti$5) - ) - (i32.store offset=8 - (local.get $29) - (i32.load - (local.get $13) - ) - ) - (i32.store offset=12 - (local.get $29) - (i32.const 0) - ) - (i32.store - (local.get $13) - (local.get $43) - ) - (local.set $7 - (i32.const -1) - ) - (br $__rjti$6) - ) - (if - (local.get $5) - (block - (local.set $7 - (local.get $5) - ) - (br $__rjti$6) - ) - (block - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (i32.const 0) - (local.get $11) - ) - (br $__rjti$7 - (i32.const 0) - ) - ) - ) - ) - (local.set $14 - (f64.load - (local.get $13) - ) - ) - (i32.store - (local.get $20) - (i32.const 0) - ) - (f64.store - (global.get $tempDoublePtr$asm2wasm$import) - (local.get $14) - ) - (local.set $32 - (if (result i32) - (i32.lt_s - (i32.load offset=4 - (global.get $tempDoublePtr$asm2wasm$import) - ) - (i32.const 0) - ) - (block (result i32) - (local.set $26 - (i32.const 1) - ) - (local.set $14 - (f64.neg - (local.get $14) - ) - ) - (i32.const 4108) - ) - (if (result i32) - (i32.and - (local.get $11) - (i32.const 2048) - ) - (block (result i32) - (local.set $26 - (i32.const 1) - ) - (i32.const 4111) - ) - (block (result i32) - (local.set $26 - (local.tee $4 - (i32.and - (local.get $11) - (i32.const 1) - ) - ) - ) - (select - (i32.const 4114) - (i32.const 4109) - (local.get $4) - ) - ) - ) - ) - ) - (f64.store - (global.get $tempDoublePtr$asm2wasm$import) - (local.get $14) - ) - (local.set $5 - (if (result i32) - (i32.lt_u - (i32.and - (i32.load offset=4 - (global.get $tempDoublePtr$asm2wasm$import) - ) - (i32.const 2146435072) - ) - (i32.const 2146435072) - ) - (block $do-once49 (result i32) - (if - (local.tee $4 - (f64.ne - (local.tee $22 - (f64.mul - (call $_frexp - (local.get $14) - (local.get $20) - ) - (f64.const 2) - ) - ) - (f64.const 0) - ) - ) - (i32.store - (local.get $20) - (i32.add - (i32.load - (local.get $20) - ) - (i32.const -1) - ) - ) - ) - (if - (i32.eq - (local.tee $12 - (i32.or - (local.get $17) - (i32.const 32) - ) - ) - (i32.const 97) - ) - (block - (local.set $8 - (select - (i32.add - (local.get $32) - (i32.const 9) - ) - (local.get $32) - (local.tee $12 - (i32.and - (local.get $17) - (i32.const 32) - ) - ) - ) - ) - (local.set $14 - (if (result f64) - (i32.or - (i32.eqz - (local.tee $4 - (i32.sub - (i32.const 12) - (local.get $5) - ) - ) - ) - (i32.gt_u - (local.get $5) - (i32.const 11) - ) - ) - (local.get $22) - (block (result f64) - (local.set $14 - (f64.const 8) - ) - (loop $while-in54 - (local.set $14 - (f64.mul - (local.get $14) - (f64.const 16) - ) - ) - (br_if $while-in54 - (local.tee $4 - (i32.add - (local.get $4) - (i32.const -1) - ) - ) - ) - ) - (select - (f64.neg - (f64.add - (local.get $14) - (f64.sub - (f64.neg - (local.get $22) - ) - (local.get $14) - ) - ) - ) - (f64.sub - (f64.add - (local.get $22) - (local.get $14) - ) - (local.get $14) - ) - (i32.eq - (i32.load8_s - (local.get $8) - ) - (i32.const 45) - ) - ) - ) - ) - ) - (local.set $10 - (i32.or - (local.get $26) - (i32.const 2) - ) - ) - (if - (i32.eq - (local.tee $4 - (call $_fmt_u - (local.tee $4 - (select - (i32.sub - (i32.const 0) - (local.tee $6 - (i32.load - (local.get $20) - ) - ) - ) - (local.get $6) - (i32.lt_s - (local.get $6) - (i32.const 0) - ) - ) - ) - (i32.shr_s - (i32.shl - (i32.lt_s - (local.get $4) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - (local.get $33) - ) - ) - (local.get $33) - ) - (block - (i32.store8 - (local.get $41) - (i32.const 48) - ) - (local.set $4 - (local.get $41) - ) - ) - ) - (i32.store8 - (i32.add - (local.get $4) - (i32.const -1) - ) - (i32.add - (i32.and - (i32.shr_s - (local.get $6) - (i32.const 31) - ) - (i32.const 2) - ) - (i32.const 43) - ) - ) - (i32.store8 - (local.tee $7 - (i32.add - (local.get $4) - (i32.const -2) - ) - ) - (i32.add - (local.get $17) - (i32.const 15) - ) - ) - (local.set $17 - (i32.lt_s - (local.get $5) - (i32.const 1) - ) - ) - (local.set $19 - (i32.eqz - (i32.and - (local.get $11) - (i32.const 8) - ) - ) - ) - (local.set $4 - (local.get $21) - ) - (loop $while-in56 - (i32.store8 - (local.get $4) - (i32.or - (local.get $12) - (i32.load8_u - (i32.add - (local.tee $6 - (i32.trunc_f64_s - (local.get $14) - ) - ) - (i32.const 4075) - ) - ) - ) - ) - (local.set $14 - (f64.mul - (f64.sub - (local.get $14) - (f64.convert_i32_s - (local.get $6) - ) - ) - (f64.const 16) - ) - ) - (local.set $4 - (if (result i32) - (i32.eq - (i32.sub - (local.tee $6 - (i32.add - (local.get $4) - (i32.const 1) - ) - ) - (local.get $36) - ) - (i32.const 1) - ) - (if (result i32) - (i32.and - (i32.and - (f64.eq - (local.get $14) - (f64.const 0) - ) - (local.get $17) - ) - (local.get $19) - ) - (local.get $6) - (block (result i32) - (i32.store8 - (local.get $6) - (i32.const 46) - ) - (i32.add - (local.get $4) - (i32.const 2) - ) - ) - ) - (local.get $6) - ) - ) - (br_if $while-in56 - (f64.ne - (local.get $14) - (f64.const 0) - ) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.tee $5 - (i32.add - (local.get $10) - (local.tee $6 - (select - (i32.sub - (i32.add - (local.get $5) - (local.get $46) - ) - (local.get $7) - ) - (i32.add - (local.get $4) - (i32.sub - (local.get $44) - (local.get $7) - ) - ) - (i32.and - (i32.ne - (local.get $5) - (i32.const 0) - ) - (i32.lt_s - (i32.add - (local.get $4) - (local.get $45) - ) - (local.get $5) - ) - ) - ) - ) - ) - ) - (local.get $11) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $8) - (local.get $10) - (local.get $0) - ) - ) - (call $_pad - (local.get $0) - (i32.const 48) - (local.get $15) - (local.get $5) - (i32.xor - (local.get $11) - (i32.const 65536) - ) - ) - (local.set $4 - (i32.sub - (local.get $4) - (local.get $36) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $21) - (local.get $4) - (local.get $0) - ) - ) - (call $_pad - (local.get $0) - (i32.const 48) - (i32.sub - (local.get $6) - (i32.add - (local.get $4) - (local.tee $6 - (i32.sub - (local.get $28) - (local.get $7) - ) - ) - ) - ) - (i32.const 0) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $7) - (local.get $6) - (local.get $0) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.get $5) - (i32.xor - (local.get $11) - (i32.const 8192) - ) - ) - (br $do-once49 - (select - (local.get $15) - (local.get $5) - (i32.lt_s - (local.get $5) - (local.get $15) - ) - ) - ) - ) - ) - (local.set $14 - (if (result f64) - (local.get $4) - (block (result f64) - (i32.store - (local.get $20) - (local.tee $4 - (i32.add - (i32.load - (local.get $20) - ) - (i32.const -28) - ) - ) - ) - (f64.mul - (local.get $22) - (f64.const 268435456) - ) - ) - (block (result f64) - (local.set $4 - (i32.load - (local.get $20) - ) - ) - (local.get $22) - ) - ) - ) - (local.set $6 - (local.tee $7 - (select - (local.get $47) - (local.get $48) - (i32.lt_s - (local.get $4) - (i32.const 0) - ) - ) - ) - ) - (loop $while-in60 - (i32.store - (local.get $6) - (local.tee $4 - (i32.trunc_f64_u - (local.get $14) - ) - ) - ) - (local.set $6 - (i32.add - (local.get $6) - (i32.const 4) - ) - ) - (br_if $while-in60 - (f64.ne - (local.tee $14 - (f64.mul - (f64.sub - (local.get $14) - (f64.convert_i32_u - (local.get $4) - ) - ) - (f64.const 1e9) - ) - ) - (f64.const 0) - ) - ) - ) - (if - (i32.gt_s - (local.tee $10 - (i32.load - (local.get $20) - ) - ) - (i32.const 0) - ) - (block - (local.set $4 - (local.get $7) - ) - (loop $while-in62 - (local.set $19 - (select - (i32.const 29) - (local.get $10) - (i32.gt_s - (local.get $10) - (i32.const 29) - ) - ) - ) - (if - (i32.ge_u - (local.tee $10 - (i32.add - (local.get $6) - (i32.const -4) - ) - ) - (local.get $4) - ) - (block $do-once63 - (local.set $8 - (i32.const 0) - ) - (loop $while-in66 - (i32.store - (local.get $10) - (call $___uremdi3 - (local.tee $8 - (call $_i64Add - (call $_bitshift64Shl - (i32.load - (local.get $10) - ) - (i32.const 0) - (local.get $19) - ) - (global.get $tempRet0) - (local.get $8) - (i32.const 0) - ) - ) - (local.tee $18 - (global.get $tempRet0) - ) - (i32.const 1000000000) - ) - ) - (local.set $8 - (call $___udivdi3 - (local.get $8) - (local.get $18) - (i32.const 1000000000) - ) - ) - (br_if $while-in66 - (i32.ge_u - (local.tee $10 - (i32.add - (local.get $10) - (i32.const -4) - ) - ) - (local.get $4) - ) - ) - ) - (br_if $do-once63 - (i32.eqz - (local.get $8) - ) - ) - (i32.store - (local.tee $4 - (i32.add - (local.get $4) - (i32.const -4) - ) - ) - (local.get $8) - ) - ) - ) - (loop $while-in68 - (if - (i32.gt_u - (local.get $6) - (local.get $4) - ) - (if - (i32.eqz - (i32.load - (local.tee $8 - (i32.add - (local.get $6) - (i32.const -4) - ) - ) - ) - ) - (block - (local.set $6 - (local.get $8) - ) - (br $while-in68) - ) - ) - ) - ) - (i32.store - (local.get $20) - (local.tee $10 - (i32.sub - (i32.load - (local.get $20) - ) - (local.get $19) - ) - ) - ) - (br_if $while-in62 - (i32.gt_s - (local.get $10) - (i32.const 0) - ) - ) - ) - ) - (local.set $4 - (local.get $7) - ) - ) - (local.set $18 - (select - (i32.const 6) - (local.get $5) - (i32.lt_s - (local.get $5) - (i32.const 0) - ) - ) - ) - (if - (i32.lt_s - (local.get $10) - (i32.const 0) - ) - (block - (local.set $19 - (i32.add - (i32.div_s - (i32.add - (local.get $18) - (i32.const 25) - ) - (i32.const 9) - ) - (i32.const 1) - ) - ) - (local.set $23 - (i32.eq - (local.get $12) - (i32.const 102) - ) - ) - (local.set $5 - (local.get $4) - ) - (local.set $4 - (local.get $6) - ) - (local.set $4 - (loop $while-in70 (result i32) - (local.set $8 - (select - (i32.const 9) - (local.tee $6 - (i32.sub - (i32.const 0) - (local.get $10) - ) - ) - (i32.gt_s - (local.get $6) - (i32.const 9) - ) - ) - ) - (if - (i32.lt_u - (local.get $5) - (local.get $4) - ) - (block $do-once71 - (local.set $27 - (i32.add - (i32.shl - (i32.const 1) - (local.get $8) - ) - (i32.const -1) - ) - ) - (local.set $37 - (i32.shr_u - (i32.const 1000000000) - (local.get $8) - ) - ) - (local.set $10 - (i32.const 0) - ) - (local.set $6 - (local.get $5) - ) - (loop $while-in74 - (i32.store - (local.get $6) - (i32.add - (local.get $10) - (i32.shr_u - (local.tee $38 - (i32.load - (local.get $6) - ) - ) - (local.get $8) - ) - ) - ) - (local.set $10 - (i32.mul - (i32.and - (local.get $27) - (local.get $38) - ) - (local.get $37) - ) - ) - (br_if $while-in74 - (i32.lt_u - (local.tee $6 - (i32.add - (local.get $6) - (i32.const 4) - ) - ) - (local.get $4) - ) - ) - ) - (local.set $6 - (select - (local.get $5) - (i32.add - (local.get $5) - (i32.const 4) - ) - (i32.load - (local.get $5) - ) - ) - ) - (br_if $do-once71 - (i32.eqz - (local.get $10) - ) - ) - (i32.store - (local.get $4) - (local.get $10) - ) - (local.set $4 - (i32.add - (local.get $4) - (i32.const 4) - ) - ) - ) - (local.set $6 - (select - (local.get $5) - (i32.add - (local.get $5) - (i32.const 4) - ) - (i32.load - (local.get $5) - ) - ) - ) - ) - (local.set $4 - (select - (i32.add - (local.tee $5 - (select - (local.get $7) - (local.get $6) - (local.get $23) - ) - ) - (i32.shl - (local.get $19) - (i32.const 2) - ) - ) - (local.get $4) - (i32.gt_s - (i32.shr_s - (i32.sub - (local.get $4) - (local.get $5) - ) - (i32.const 2) - ) - (local.get $19) - ) - ) - ) - (i32.store - (local.get $20) - (local.tee $10 - (i32.add - (i32.load - (local.get $20) - ) - (local.get $8) - ) - ) - ) - (if (result i32) - (i32.lt_s - (local.get $10) - (i32.const 0) - ) - (block - (local.set $5 - (local.get $6) - ) - (br $while-in70) - ) - (block (result i32) - (local.set $10 - (local.get $4) - ) - (local.get $6) - ) - ) - ) - ) - ) - (local.set $10 - (local.get $6) - ) - ) - (local.set $19 - (local.get $7) - ) - (if - (i32.lt_u - (local.get $4) - (local.get $10) - ) - (block $do-once75 - (local.set $6 - (i32.mul - (i32.shr_s - (i32.sub - (local.get $19) - (local.get $4) - ) - (i32.const 2) - ) - (i32.const 9) - ) - ) - (br_if $do-once75 - (i32.lt_u - (local.tee $8 - (i32.load - (local.get $4) - ) - ) - (i32.const 10) - ) - ) - (local.set $5 - (i32.const 10) - ) - (loop $while-in78 - (local.set $6 - (i32.add - (local.get $6) - (i32.const 1) - ) - ) - (br_if $while-in78 - (i32.ge_u - (local.get $8) - (local.tee $5 - (i32.mul - (local.get $5) - (i32.const 10) - ) - ) - ) - ) - ) - ) - (local.set $6 - (i32.const 0) - ) - ) - (local.set $4 - (if (result i32) - (i32.lt_s - (local.tee $5 - (i32.add - (i32.sub - (local.get $18) - (select - (local.get $6) - (i32.const 0) - (i32.ne - (local.get $12) - (i32.const 102) - ) - ) - ) - (i32.shr_s - (i32.shl - (i32.and - (local.tee $37 - (i32.eq - (local.get $12) - (i32.const 103) - ) - ) - (local.tee $38 - (i32.ne - (local.get $18) - (i32.const 0) - ) - ) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - ) - (i32.add - (i32.mul - (i32.shr_s - (i32.sub - (local.get $10) - (local.get $19) - ) - (i32.const 2) - ) - (i32.const 9) - ) - (i32.const -9) - ) - ) - (block (result i32) - (if - (i32.lt_s - (local.tee $5 - (i32.add - (i32.rem_s - (local.tee $12 - (i32.add - (local.get $5) - (i32.const 9216) - ) - ) - (i32.const 9) - ) - (i32.const 1) - ) - ) - (i32.const 9) - ) - (block - (local.set $8 - (i32.const 10) - ) - (loop $while-in80 - (local.set $8 - (i32.mul - (local.get $8) - (i32.const 10) - ) - ) - (br_if $while-in80 - (i32.ne - (local.tee $5 - (i32.add - (local.get $5) - (i32.const 1) - ) - ) - (i32.const 9) - ) - ) - ) - ) - (local.set $8 - (i32.const 10) - ) - ) - (local.set $12 - (i32.rem_u - (local.tee $23 - (i32.load - (local.tee $5 - (i32.add - (i32.add - (i32.shl - (i32.div_s - (local.get $12) - (i32.const 9) - ) - (i32.const 2) - ) - (local.get $7) - ) - (i32.const -4092) - ) - ) - ) - ) - (local.get $8) - ) - ) - (if - (i32.eqz - (i32.and - (local.tee $27 - (i32.eq - (i32.add - (local.get $5) - (i32.const 4) - ) - (local.get $10) - ) - ) - (i32.eqz - (local.get $12) - ) - ) - ) - (block $do-once81 - (local.set $14 - (if (result f64) - (i32.lt_u - (local.get $12) - (local.tee $49 - (i32.div_s - (local.get $8) - (i32.const 2) - ) - ) - ) - (f64.const 0.5) - (select - (f64.const 1) - (f64.const 1.5) - (i32.and - (local.get $27) - (i32.eq - (local.get $12) - (local.get $49) - ) - ) - ) - ) - ) - (local.set $22 - (select - (f64.const 9007199254740994) - (f64.const 9007199254740992) - (i32.and - (i32.div_u - (local.get $23) - (local.get $8) - ) - (i32.const 1) - ) - ) - ) - (if - (local.get $26) - (if - (i32.eq - (i32.load8_s - (local.get $32) - ) - (i32.const 45) - ) - (block - (local.set $22 - (f64.neg - (local.get $22) - ) - ) - (local.set $14 - (f64.neg - (local.get $14) - ) - ) - ) - ) - ) - (i32.store - (local.get $5) - (local.tee $12 - (i32.sub - (local.get $23) - (local.get $12) - ) - ) - ) - (br_if $do-once81 - (f64.eq - (f64.add - (local.get $22) - (local.get $14) - ) - (local.get $22) - ) - ) - (i32.store - (local.get $5) - (local.tee $6 - (i32.add - (local.get $8) - (local.get $12) - ) - ) - ) - (if - (i32.gt_u - (local.get $6) - (i32.const 999999999) - ) - (loop $while-in86 - (i32.store - (local.get $5) - (i32.const 0) - ) - (if - (i32.lt_u - (local.tee $5 - (i32.add - (local.get $5) - (i32.const -4) - ) - ) - (local.get $4) - ) - (i32.store - (local.tee $4 - (i32.add - (local.get $4) - (i32.const -4) - ) - ) - (i32.const 0) - ) - ) - (i32.store - (local.get $5) - (local.tee $6 - (i32.add - (i32.load - (local.get $5) - ) - (i32.const 1) - ) - ) - ) - (br_if $while-in86 - (i32.gt_u - (local.get $6) - (i32.const 999999999) - ) - ) - ) - ) - (local.set $6 - (i32.mul - (i32.shr_s - (i32.sub - (local.get $19) - (local.get $4) - ) - (i32.const 2) - ) - (i32.const 9) - ) - ) - (br_if $do-once81 - (i32.lt_u - (local.tee $12 - (i32.load - (local.get $4) - ) - ) - (i32.const 10) - ) - ) - (local.set $8 - (i32.const 10) - ) - (loop $while-in88 - (local.set $6 - (i32.add - (local.get $6) - (i32.const 1) - ) - ) - (br_if $while-in88 - (i32.ge_u - (local.get $12) - (local.tee $8 - (i32.mul - (local.get $8) - (i32.const 10) - ) - ) - ) - ) - ) - ) - ) - (local.set $8 - (local.get $4) - ) - (local.set $12 - (local.get $6) - ) - (select - (local.tee $4 - (i32.add - (local.get $5) - (i32.const 4) - ) - ) - (local.get $10) - (i32.gt_u - (local.get $10) - (local.get $4) - ) - ) - ) - (block (result i32) - (local.set $8 - (local.get $4) - ) - (local.set $12 - (local.get $6) - ) - (local.get $10) - ) - ) - ) - (local.set $23 - (loop $while-in90 (result i32) - (block $while-out89 (result i32) - (if - (i32.le_u - (local.get $4) - (local.get $8) - ) - (block - (local.set $27 - (i32.const 0) - ) - (br $while-out89 - (local.get $4) - ) - ) - ) - (if (result i32) - (i32.load - (local.tee $5 - (i32.add - (local.get $4) - (i32.const -4) - ) - ) - ) - (block (result i32) - (local.set $27 - (i32.const 1) - ) - (local.get $4) - ) - (block - (local.set $4 - (local.get $5) - ) - (br $while-in90) - ) - ) - ) - ) - ) - (local.set $4 - (if (result i32) - (local.get $37) - (block $do-once91 (result i32) - (local.set $6 - (if (result i32) - (i32.and - (i32.gt_s - (local.tee $4 - (i32.add - (local.get $18) - (i32.xor - (local.get $38) - (i32.const 1) - ) - ) - ) - (local.get $12) - ) - (i32.gt_s - (local.get $12) - (i32.const -5) - ) - ) - (block (result i32) - (local.set $18 - (i32.sub - (i32.add - (local.get $4) - (i32.const -1) - ) - (local.get $12) - ) - ) - (i32.add - (local.get $17) - (i32.const -1) - ) - ) - (block (result i32) - (local.set $18 - (i32.add - (local.get $4) - (i32.const -1) - ) - ) - (i32.add - (local.get $17) - (i32.const -2) - ) - ) - ) - ) - (drop - (br_if $do-once91 - (local.get $18) - (local.tee $10 - (i32.and - (local.get $11) - (i32.const 8) - ) - ) - ) - ) - (if - (local.get $27) - (block $do-once93 - (if - (i32.eqz - (local.tee $10 - (i32.load - (i32.add - (local.get $23) - (i32.const -4) - ) - ) - ) - ) - (block - (local.set $4 - (i32.const 9) - ) - (br $do-once93) - ) - ) - (local.set $4 - (if (result i32) - (i32.rem_u - (local.get $10) - (i32.const 10) - ) - (block - (local.set $4 - (i32.const 0) - ) - (br $do-once93) - ) - (block (result i32) - (local.set $5 - (i32.const 10) - ) - (i32.const 0) - ) - ) - ) - (loop $while-in96 - (local.set $4 - (i32.add - (local.get $4) - (i32.const 1) - ) - ) - (br_if $while-in96 - (i32.eqz - (i32.rem_u - (local.get $10) - (local.tee $5 - (i32.mul - (local.get $5) - (i32.const 10) - ) - ) - ) - ) - ) - ) - ) - (local.set $4 - (i32.const 9) - ) - ) - (local.set $5 - (i32.add - (i32.mul - (i32.shr_s - (i32.sub - (local.get $23) - (local.get $19) - ) - (i32.const 2) - ) - (i32.const 9) - ) - (i32.const -9) - ) - ) - (if (result i32) - (i32.eq - (i32.or - (local.get $6) - (i32.const 32) - ) - (i32.const 102) - ) - (block (result i32) - (local.set $10 - (i32.const 0) - ) - (select - (local.get $18) - (local.tee $4 - (select - (i32.const 0) - (local.tee $4 - (i32.sub - (local.get $5) - (local.get $4) - ) - ) - (i32.lt_s - (local.get $4) - (i32.const 0) - ) - ) - ) - (i32.lt_s - (local.get $18) - (local.get $4) - ) - ) - ) - (block (result i32) - (local.set $10 - (i32.const 0) - ) - (select - (local.get $18) - (local.tee $4 - (select - (i32.const 0) - (local.tee $4 - (i32.sub - (i32.add - (local.get $5) - (local.get $12) - ) - (local.get $4) - ) - ) - (i32.lt_s - (local.get $4) - (i32.const 0) - ) - ) - ) - (i32.lt_s - (local.get $18) - (local.get $4) - ) - ) - ) - ) - ) - (block (result i32) - (local.set $10 - (i32.and - (local.get $11) - (i32.const 8) - ) - ) - (local.set $6 - (local.get $17) - ) - (local.get $18) - ) - ) - ) - (local.set $5 - (i32.sub - (i32.const 0) - (local.get $12) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.tee $12 - (i32.add - (if (result i32) - (local.tee $19 - (i32.eq - (i32.or - (local.get $6) - (i32.const 32) - ) - (i32.const 102) - ) - ) - (block (result i32) - (local.set $17 - (i32.const 0) - ) - (select - (local.get $12) - (i32.const 0) - (i32.gt_s - (local.get $12) - (i32.const 0) - ) - ) - ) - (block (result i32) - (if - (i32.lt_s - (i32.sub - (local.get $28) - (local.tee $5 - (call $_fmt_u - (local.tee $5 - (select - (local.get $5) - (local.get $12) - (i32.lt_s - (local.get $12) - (i32.const 0) - ) - ) - ) - (i32.shr_s - (i32.shl - (i32.lt_s - (local.get $5) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - (local.get $33) - ) - ) - ) - (i32.const 2) - ) - (loop $while-in98 - (i32.store8 - (local.tee $5 - (i32.add - (local.get $5) - (i32.const -1) - ) - ) - (i32.const 48) - ) - (br_if $while-in98 - (i32.lt_s - (i32.sub - (local.get $28) - (local.get $5) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.store8 - (i32.add - (local.get $5) - (i32.const -1) - ) - (i32.add - (i32.and - (i32.shr_s - (local.get $12) - (i32.const 31) - ) - (i32.const 2) - ) - (i32.const 43) - ) - ) - (i32.store8 - (local.tee $17 - (i32.add - (local.get $5) - (i32.const -2) - ) - ) - (local.get $6) - ) - (i32.sub - (local.get $28) - (local.get $17) - ) - ) - ) - (i32.add - (i32.add - (i32.add - (local.get $26) - (i32.const 1) - ) - (local.get $4) - ) - (i32.ne - (local.tee $18 - (i32.or - (local.get $4) - (local.get $10) - ) - ) - (i32.const 0) - ) - ) - ) - ) - (local.get $11) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $32) - (local.get $26) - (local.get $0) - ) - ) - (call $_pad - (local.get $0) - (i32.const 48) - (local.get $15) - (local.get $12) - (i32.xor - (local.get $11) - (i32.const 65536) - ) - ) - (if - (local.get $19) - (block - (local.set $5 - (local.tee $8 - (select - (local.get $7) - (local.get $8) - (i32.gt_u - (local.get $8) - (local.get $7) - ) - ) - ) - ) - (loop $while-in102 - (local.set $6 - (call $_fmt_u - (i32.load - (local.get $5) - ) - (i32.const 0) - (local.get $31) - ) - ) - (block $do-once103 - (if - (i32.eq - (local.get $5) - (local.get $8) - ) - (block - (br_if $do-once103 - (i32.ne - (local.get $6) - (local.get $31) - ) - ) - (i32.store8 - (local.get $34) - (i32.const 48) - ) - (local.set $6 - (local.get $34) - ) - ) - (block - (br_if $do-once103 - (i32.le_u - (local.get $6) - (local.get $21) - ) - ) - (loop $while-in106 - (i32.store8 - (local.tee $6 - (i32.add - (local.get $6) - (i32.const -1) - ) - ) - (i32.const 48) - ) - (br_if $while-in106 - (i32.gt_u - (local.get $6) - (local.get $21) - ) - ) - ) - ) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $6) - (i32.sub - (local.get $42) - (local.get $6) - ) - (local.get $0) - ) - ) - (if - (i32.le_u - (local.tee $6 - (i32.add - (local.get $5) - (i32.const 4) - ) - ) - (local.get $7) - ) - (block - (local.set $5 - (local.get $6) - ) - (br $while-in102) - ) - ) - ) - (if - (local.get $18) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (i32.const 4143) - (i32.const 1) - (local.get $0) - ) - ) - ) - (call $_pad - (local.get $0) - (i32.const 48) - (i32.add - (if (result i32) - (i32.and - (i32.lt_u - (local.get $6) - (local.get $23) - ) - (i32.gt_s - (local.get $4) - (i32.const 0) - ) - ) - (loop $while-in110 (result i32) - (if - (i32.gt_u - (local.tee $5 - (call $_fmt_u - (i32.load - (local.get $6) - ) - (i32.const 0) - (local.get $31) - ) - ) - (local.get $21) - ) - (loop $while-in112 - (i32.store8 - (local.tee $5 - (i32.add - (local.get $5) - (i32.const -1) - ) - ) - (i32.const 48) - ) - (br_if $while-in112 - (i32.gt_u - (local.get $5) - (local.get $21) - ) - ) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $5) - (select - (i32.const 9) - (local.get $4) - (i32.gt_s - (local.get $4) - (i32.const 9) - ) - ) - (local.get $0) - ) - ) - (local.set $5 - (i32.add - (local.get $4) - (i32.const -9) - ) - ) - (if (result i32) - (i32.and - (i32.lt_u - (local.tee $6 - (i32.add - (local.get $6) - (i32.const 4) - ) - ) - (local.get $23) - ) - (i32.gt_s - (local.get $4) - (i32.const 9) - ) - ) - (block - (local.set $4 - (local.get $5) - ) - (br $while-in110) - ) - (local.get $5) - ) - ) - (local.get $4) - ) - (i32.const 9) - ) - (i32.const 9) - (i32.const 0) - ) - ) - (block $do-once99 - (local.set $19 - (select - (local.get $23) - (i32.add - (local.get $8) - (i32.const 4) - ) - (local.get $27) - ) - ) - (call $_pad - (local.get $0) - (i32.const 48) - (i32.add - (if (result i32) - (i32.gt_s - (local.get $4) - (i32.const -1) - ) - (block (result i32) - (local.set $10 - (i32.eqz - (local.get $10) - ) - ) - (local.set $5 - (local.get $8) - ) - (local.set $6 - (local.get $4) - ) - (loop $while-in114 (result i32) - (if - (i32.eq - (local.tee $4 - (call $_fmt_u - (i32.load - (local.get $5) - ) - (i32.const 0) - (local.get $31) - ) - ) - (local.get $31) - ) - (block - (i32.store8 - (local.get $34) - (i32.const 48) - ) - (local.set $4 - (local.get $34) - ) - ) - ) - (block $do-once115 - (if - (i32.eq - (local.get $5) - (local.get $8) - ) - (block - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $4) - (i32.const 1) - (local.get $0) - ) - ) - (local.set $4 - (i32.add - (local.get $4) - (i32.const 1) - ) - ) - (br_if $do-once115 - (i32.or - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - (i32.and - (i32.lt_s - (local.get $6) - (i32.const 1) - ) - (local.get $10) - ) - ) - ) - (call $___fwritex - (i32.const 4143) - (i32.const 1) - (local.get $0) - ) - ) - (block - (br_if $do-once115 - (i32.le_u - (local.get $4) - (local.get $21) - ) - ) - (loop $while-in118 - (i32.store8 - (local.tee $4 - (i32.add - (local.get $4) - (i32.const -1) - ) - ) - (i32.const 48) - ) - (br_if $while-in118 - (i32.gt_u - (local.get $4) - (local.get $21) - ) - ) - ) - ) - ) - ) - (local.set $7 - (i32.sub - (local.get $42) - (local.get $4) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $4) - (select - (local.get $7) - (local.get $6) - (i32.gt_s - (local.get $6) - (local.get $7) - ) - ) - (local.get $0) - ) - ) - (br_if $while-in114 - (i32.and - (i32.lt_u - (local.tee $5 - (i32.add - (local.get $5) - (i32.const 4) - ) - ) - (local.get $19) - ) - (i32.gt_s - (local.tee $6 - (i32.sub - (local.get $6) - (local.get $7) - ) - ) - (i32.const -1) - ) - ) - ) - (local.get $6) - ) - ) - (local.get $4) - ) - (i32.const 18) - ) - (i32.const 18) - (i32.const 0) - ) - (br_if $do-once99 - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $17) - (i32.sub - (local.get $28) - (local.get $17) - ) - (local.get $0) - ) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.get $12) - (i32.xor - (local.get $11) - (i32.const 8192) - ) - ) - (select - (local.get $15) - (local.get $12) - (i32.lt_s - (local.get $12) - (local.get $15) - ) - ) - ) - (block (result i32) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.tee $4 - (i32.add - (local.tee $6 - (select - (i32.const 0) - (local.get $26) - (local.tee $5 - (f64.ne - (local.get $14) - (local.get $14) - ) - ) - ) - ) - (i32.const 3) - ) - ) - (local.get $7) - ) - (local.set $5 - (select - (select - (i32.const 4135) - (i32.const 4139) - (local.tee $7 - (i32.ne - (i32.and - (local.get $17) - (i32.const 32) - ) - (i32.const 0) - ) - ) - ) - (select - (i32.const 4127) - (i32.const 4131) - (local.get $7) - ) - (local.get $5) - ) - ) - (if - (i32.eqz - (i32.and - (if (result i32) - (i32.and - (local.tee $7 - (i32.load - (local.get $0) - ) - ) - (i32.const 32) - ) - (local.get $7) - (block (result i32) - (call $___fwritex - (local.get $32) - (local.get $6) - (local.get $0) - ) - (i32.load - (local.get $0) - ) - ) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $5) - (i32.const 3) - (local.get $0) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.get $4) - (i32.xor - (local.get $11) - (i32.const 8192) - ) - ) - (select - (local.get $15) - (local.get $4) - (i32.lt_s - (local.get $4) - (local.get $15) - ) - ) - ) - ) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $5) - ) - (br $label$continue$L1) - ) - (local.set $8 - (local.get $5) - ) - (local.set $7 - (i32.const 0) - ) - (local.set $10 - (i32.const 4091) - ) - (br $__rjto$8 - (local.get $24) - ) - ) - (local.set $8 - (i32.and - (local.get $17) - (i32.const 32) - ) - ) - (local.set $7 - (if (result i32) - (i32.or - (local.tee $6 - (i32.load - (local.get $13) - ) - ) - (local.tee $11 - (i32.load offset=4 - (local.get $13) - ) - ) - ) - (block (result i32) - (local.set $7 - (local.get $24) - ) - (local.set $6 - (loop $while-in123 (result i32) - (i32.store8 - (local.tee $7 - (i32.add - (local.get $7) - (i32.const -1) - ) - ) - (i32.or - (local.get $8) - (i32.load8_u - (i32.add - (i32.and - (local.get $6) - (i32.const 15) - ) - (i32.const 4075) - ) - ) - ) - ) - (br_if $while-in123 - (i32.or - (local.tee $6 - (call $_bitshift64Lshr - (local.get $6) - (local.get $11) - (i32.const 4) - ) - ) - (local.tee $11 - (global.get $tempRet0) - ) - ) - ) - (local.get $7) - ) - ) - (if (result i32) - (i32.or - (i32.eqz - (i32.or - (i32.load - (local.get $13) - ) - (i32.load offset=4 - (local.get $13) - ) - ) - ) - (i32.eqz - (i32.and - (local.get $4) - (i32.const 8) - ) - ) - ) - (block (result i32) - (local.set $10 - (i32.const 4091) - ) - (i32.const 0) - ) - (block (result i32) - (local.set $10 - (i32.add - (i32.shr_s - (local.get $17) - (i32.const 4) - ) - (i32.const 4091) - ) - ) - (i32.const 2) - ) - ) - ) - (block (result i32) - (local.set $6 - (local.get $24) - ) - (local.set $10 - (i32.const 4091) - ) - (i32.const 0) - ) - ) - ) - (br $__rjti$8) - ) - (local.set $6 - (call $_fmt_u - (local.get $4) - (local.get $6) - (local.get $24) - ) - ) - (local.set $4 - (local.get $11) - ) - (br $__rjti$8) - ) - (local.set $17 - (i32.eqz - (local.tee $12 - (call $_memchr - (local.get $6) - (local.get $5) - ) - ) - ) - ) - (local.set $11 - (local.get $7) - ) - (local.set $8 - (select - (local.get $5) - (i32.sub - (local.get $12) - (local.tee $4 - (local.get $6) - ) - ) - (local.get $17) - ) - ) - (local.set $7 - (i32.const 0) - ) - (local.set $10 - (i32.const 4091) - ) - (br $__rjto$8 - (select - (i32.add - (local.get $4) - (local.get $5) - ) - (local.get $12) - (local.get $17) - ) - ) - ) - (local.set $4 - (i32.const 0) - ) - (local.set $6 - (i32.const 0) - ) - (local.set $5 - (i32.load - (local.get $13) - ) - ) - (loop $while-in125 - (block $while-out124 - (br_if $while-out124 - (i32.eqz - (local.tee $8 - (i32.load - (local.get $5) - ) - ) - ) - ) - (br_if $while-out124 - (i32.or - (i32.lt_s - (local.tee $6 - (call $_wctomb - (local.get $35) - (local.get $8) - ) - ) - (i32.const 0) - ) - (i32.gt_u - (local.get $6) - (i32.sub - (local.get $7) - (local.get $4) - ) - ) - ) - ) - (local.set $5 - (i32.add - (local.get $5) - (i32.const 4) - ) - ) - (br_if $while-in125 - (i32.gt_u - (local.get $7) - (local.tee $4 - (i32.add - (local.get $4) - (local.get $6) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_s - (local.get $6) - (i32.const 0) - ) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $15) - (local.get $4) - (local.get $11) - ) - (if (result i32) - (local.get $4) - (block (result i32) - (local.set $5 - (i32.const 0) - ) - (local.set $6 - (i32.load - (local.get $13) - ) - ) - (loop $while-in127 (result i32) - (drop - (br_if $__rjti$7 - (local.get $4) - (i32.eqz - (local.tee $7 - (i32.load - (local.get $6) - ) - ) - ) - ) - ) - (drop - (br_if $__rjti$7 - (local.get $4) - (i32.gt_s - (local.tee $5 - (i32.add - (local.tee $7 - (call $_wctomb - (local.get $35) - (local.get $7) - ) - ) - (local.get $5) - ) - ) - (local.get $4) - ) - ) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $35) - (local.get $7) - (local.get $0) - ) - ) - (local.set $6 - (i32.add - (local.get $6) - (i32.const 4) - ) - ) - (br_if $while-in127 - (i32.lt_u - (local.get $5) - (local.get $4) - ) - ) - (local.get $4) - ) - ) - (i32.const 0) - ) - ) - ) - (i32.xor - (local.get $11) - (i32.const 8192) - ) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (select - (local.get $15) - (local.get $5) - (i32.gt_s - (local.get $15) - (local.get $5) - ) - ) - ) - (br $label$continue$L1) - ) - (local.set $11 - (select - (i32.and - (local.get $4) - (i32.const -65537) - ) - (local.get $4) - (i32.gt_s - (local.get $5) - (i32.const -1) - ) - ) - ) - (if (result i32) - (i32.or - (local.get $5) - (local.tee $8 - (i32.or - (i32.ne - (i32.load - (local.get $13) - ) - (i32.const 0) - ) - (i32.ne - (i32.load offset=4 - (local.get $13) - ) - (i32.const 0) - ) - ) - ) - ) - (block (result i32) - (local.set $8 - (select - (local.get $5) - (local.tee $6 - (i32.add - (i32.sub - (local.get $39) - (local.tee $4 - (local.get $6) - ) - ) - (i32.xor - (local.get $8) - (i32.const 1) - ) - ) - ) - (i32.gt_s - (local.get $5) - (local.get $6) - ) - ) - ) - (local.get $24) - ) - (block (result i32) - (local.set $8 - (i32.const 0) - ) - (local.tee $4 - (local.get $24) - ) - ) - ) - ) - (local.get $4) - ) - ) - (local.get $8) - (i32.lt_s - (local.get $8) - (local.get $12) - ) - ) - ) - (local.get $7) - ) - ) - (local.get $15) - (i32.lt_s - (local.get $15) - (local.get $6) - ) - ) - ) - (local.get $6) - (local.get $11) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $10) - (local.get $7) - (local.get $0) - ) - ) - (call $_pad - (local.get $0) - (i32.const 48) - (local.get $5) - (local.get $6) - (i32.xor - (local.get $11) - (i32.const 65536) - ) - ) - (call $_pad - (local.get $0) - (i32.const 48) - (local.get $8) - (local.get $12) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (call $___fwritex - (local.get $4) - (local.get $12) - (local.get $0) - ) - ) - (call $_pad - (local.get $0) - (i32.const 32) - (local.get $5) - (local.get $6) - (i32.xor - (local.get $11) - (i32.const 8192) - ) - ) - (local.set $4 - (local.get $9) - ) - (local.set $9 - (local.get $5) - ) - (br $label$continue$L1) - ) - ) - (br $label$break$L343) - ) - (if - (i32.eqz - (local.get $0) - ) - (local.set $16 - (if (result i32) - (local.get $25) - (block (result i32) - (local.set $0 - (i32.const 1) - ) - (loop $while-in130 - (if - (local.tee $4 - (i32.load - (i32.add - (i32.shl - (local.get $0) - (i32.const 2) - ) - (local.get $3) - ) - ) - ) - (block - (call $_pop_arg_336 - (i32.add - (i32.shl - (local.get $0) - (i32.const 3) - ) - (local.get $2) - ) - (local.get $4) - (local.get $1) - ) - (br_if $while-in130 - (i32.lt_s - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (i32.const 10) - ) - ) - (local.set $16 - (i32.const 1) - ) - (br $label$break$L343) - ) - ) - ) - (if (result i32) - (i32.lt_s - (local.get $0) - (i32.const 10) - ) - (loop $while-in132 (result i32) - (if - (i32.load - (i32.add - (i32.shl - (local.get $0) - (i32.const 2) - ) - (local.get $3) - ) - ) - (block - (local.set $16 - (i32.const -1) - ) - (br $label$break$L343) - ) - ) - (br_if $while-in132 - (i32.lt_s - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (i32.const 10) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (i32.const 0) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $29) - ) - (local.get $16) - ) - (func $_pop_arg_336 (; 45 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 f64) - (local $5 i32) - (if - (i32.le_u - (local.get $1) - (i32.const 20) - ) - (block $label$break$L1 - (block $switch-case9 - (block $switch-case8 - (block $switch-case7 - (block $switch-case6 - (block $switch-case5 - (block $switch-case4 - (block $switch-case3 - (block $switch-case2 - (block $switch-case1 - (block $switch-case - (br_table $switch-case $switch-case1 $switch-case2 $switch-case3 $switch-case4 $switch-case5 $switch-case6 $switch-case7 $switch-case8 $switch-case9 $label$break$L1 - (i32.sub - (local.get $1) - (i32.const 9) - ) - ) - ) - (local.set $3 - (i32.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.store - (local.get $0) - (local.get $3) - ) - (br $label$break$L1) - ) - (local.set $1 - (i32.load - (local.tee $3 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $3) - (i32.const 4) - ) - ) - (i32.store - (local.get $0) - (local.get $1) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 4) - ) - (i32.shr_s - (i32.shl - (i32.lt_s - (local.get $1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (br $label$break$L1) - ) - (local.set $3 - (i32.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.store - (local.get $0) - (local.get $3) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 4) - ) - (i32.const 0) - ) - (br $label$break$L1) - ) - (local.set $5 - (i32.load - (local.tee $3 - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 7) - ) - (i32.const -8) - ) - ) - ) - ) - ) - (local.set $3 - (i32.load - (i32.add - (local.get $3) - (i32.const 4) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (i32.store - (local.get $0) - (local.get $5) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 4) - ) - (local.get $3) - ) - (br $label$break$L1) - ) - (local.set $3 - (i32.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.store - (local.get $0) - (local.tee $1 - (i32.shr_s - (i32.shl - (i32.and - (local.get $3) - (i32.const 65535) - ) - (i32.const 16) - ) - (i32.const 16) - ) - ) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 4) - ) - (i32.shr_s - (i32.shl - (i32.lt_s - (local.get $1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (br $label$break$L1) - ) - (local.set $3 - (i32.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.store - (local.get $0) - (i32.and - (local.get $3) - (i32.const 65535) - ) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 4) - ) - (i32.const 0) - ) - (br $label$break$L1) - ) - (local.set $3 - (i32.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.store - (local.get $0) - (local.tee $1 - (i32.shr_s - (i32.shl - (i32.and - (local.get $3) - (i32.const 255) - ) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 4) - ) - (i32.shr_s - (i32.shl - (i32.lt_s - (local.get $1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (br $label$break$L1) - ) - (local.set $3 - (i32.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 3) - ) - (i32.const -4) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.store - (local.get $0) - (i32.and - (local.get $3) - (i32.const 255) - ) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 4) - ) - (i32.const 0) - ) - (br $label$break$L1) - ) - (local.set $4 - (f64.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 7) - ) - (i32.const -8) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (f64.store - (local.get $0) - (local.get $4) - ) - (br $label$break$L1) - ) - (local.set $4 - (f64.load - (local.tee $1 - (i32.and - (i32.add - (i32.load - (local.get $2) - ) - (i32.const 7) - ) - (i32.const -8) - ) - ) - ) - ) - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (f64.store - (local.get $0) - (local.get $4) - ) - ) - ) - ) - (func $_fmt_u (; 46 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (if - (i32.or - (i32.and - (i32.eqz - (local.get $1) - ) - (i32.gt_u - (local.get $0) - (i32.const -1) - ) - ) - (i32.gt_u - (local.get $1) - (i32.const 0) - ) - ) - (local.set $0 - (loop $while-in (result i32) - (i32.store8 - (local.tee $2 - (i32.add - (local.get $2) - (i32.const -1) - ) - ) - (i32.or - (call $___uremdi3 - (local.get $0) - (local.get $1) - (i32.const 10) - ) - (i32.const 48) - ) - ) - (local.set $3 - (call $___udivdi3 - (local.get $0) - (local.get $1) - (i32.const 10) - ) - ) - (local.set $4 - (global.get $tempRet0) - ) - (if (result i32) - (i32.or - (i32.and - (i32.eq - (local.get $1) - (i32.const 9) - ) - (i32.gt_u - (local.get $0) - (i32.const -1) - ) - ) - (i32.gt_u - (local.get $1) - (i32.const 9) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in) - ) - (local.get $3) - ) - ) - ) - ) - (if - (local.get $0) - (loop $while-in1 - (i32.store8 - (local.tee $2 - (i32.add - (local.get $2) - (i32.const -1) - ) - ) - (i32.or - (i32.rem_u - (local.get $0) - (i32.const 10) - ) - (i32.const 48) - ) - ) - (local.set $1 - (i32.div_u - (local.get $0) - (i32.const 10) - ) - ) - (if - (i32.ge_u - (local.get $0) - (i32.const 10) - ) - (block - (local.set $0 - (local.get $1) - ) - (br $while-in1) - ) - ) - ) - ) - (local.get $2) - ) - (func $_pad (; 47 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local.set $7 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 256) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $6 - (local.get $7) - ) - (if - (i32.and - (i32.eqz - (i32.and - (local.get $4) - (i32.const 73728) - ) - ) - (i32.gt_s - (local.get $2) - (local.get $3) - ) - ) - (block $do-once - (drop - (call $_memset - (local.get $6) - (local.get $1) - (select - (i32.const 256) - (local.tee $5 - (i32.sub - (local.get $2) - (local.get $3) - ) - ) - (i32.gt_u - (local.get $5) - (i32.const 256) - ) - ) - ) - ) - (local.set $4 - (i32.eqz - (i32.and - (local.tee $1 - (i32.load - (local.get $0) - ) - ) - (i32.const 32) - ) - ) - ) - (if - (i32.gt_u - (local.get $5) - (i32.const 255) - ) - (block - (loop $while-in - (if - (local.get $4) - (block - (call $___fwritex - (local.get $6) - (i32.const 256) - (local.get $0) - ) - (local.set $1 - (i32.load - (local.get $0) - ) - ) - ) - ) - (local.set $4 - (i32.eqz - (i32.and - (local.get $1) - (i32.const 32) - ) - ) - ) - (br_if $while-in - (i32.gt_u - (local.tee $5 - (i32.add - (local.get $5) - (i32.const -256) - ) - ) - (i32.const 255) - ) - ) - ) - (br_if $do-once - (i32.eqz - (local.get $4) - ) - ) - (local.set $5 - (i32.and - (i32.sub - (local.get $2) - (local.get $3) - ) - (i32.const 255) - ) - ) - ) - (br_if $do-once - (i32.eqz - (local.get $4) - ) - ) - ) - (call $___fwritex - (local.get $6) - (local.get $5) - (local.get $0) - ) - ) - ) - (global.set $STACKTOP - (local.get $7) - ) - ) - (func $_malloc (; 48 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local.set $0 - (if (result i32) - (i32.lt_u - (local.get $0) - (i32.const 245) - ) - (block (result i32) - (if - (i32.and - (local.tee $11 - (i32.shr_u - (local.tee $6 - (i32.load - (i32.const 176) - ) - ) - (local.tee $13 - (i32.shr_u - (local.tee $3 - (select - (i32.const 16) - (i32.and - (i32.add - (local.get $0) - (i32.const 11) - ) - (i32.const -8) - ) - (i32.lt_u - (local.get $0) - (i32.const 11) - ) - ) - ) - (i32.const 3) - ) - ) - ) - ) - (i32.const 3) - ) - (block - (if - (i32.eq - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.tee $2 - (i32.load offset=8 - (local.tee $3 - (i32.add - (i32.shl - (local.tee $0 - (i32.add - (i32.xor - (i32.and - (local.get $11) - (i32.const 1) - ) - (i32.const 1) - ) - (local.get $13) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (local.get $3) - ) - (i32.store - (i32.const 176) - (i32.and - (local.get $6) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $4) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $2) - (i32.load offset=12 - (local.get $4) - ) - ) - (block - (i32.store offset=12 - (local.get $4) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $4) - ) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.tee $0 - (i32.shl - (local.get $0) - (i32.const 3) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - (return - (local.get $1) - ) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $3) - (local.tee $0 - (i32.load - (i32.const 184) - ) - ) - ) - (block (result i32) - (if - (local.get $11) - (block - (if - (i32.eq - (local.tee $10 - (i32.load - (local.tee $4 - (i32.add - (local.tee $7 - (i32.load offset=8 - (local.tee $9 - (i32.add - (i32.shl - (local.tee $2 - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.tee $2 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.add - (i32.and - (local.tee $2 - (i32.and - (i32.or - (local.tee $2 - (i32.shl - (i32.const 2) - (local.get $13) - ) - ) - (i32.sub - (i32.const 0) - (local.get $2) - ) - ) - (i32.shl - (local.get $11) - (local.get $13) - ) - ) - ) - (i32.sub - (i32.const 0) - (local.get $2) - ) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.tee $2 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $2) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - ) - (local.tee $2 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $2) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - ) - (local.tee $2 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $2) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.tee $2 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $2) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (i32.shr_u - (local.get $4) - (local.get $2) - ) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (local.get $9) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (local.get $6) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $2) - ) - (i32.const -1) - ) - ) - ) - (local.set $8 - (local.get $0) - ) - ) - (block - (if - (i32.lt_u - (local.get $10) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=12 - (local.get $10) - ) - (local.get $7) - ) - (block - (i32.store offset=12 - (local.get $10) - (local.get $9) - ) - (i32.store offset=8 - (local.get $9) - (local.get $10) - ) - (local.set $8 - (i32.load - (i32.const 184) - ) - ) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=4 - (local.get $7) - (i32.or - (local.get $3) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $7 - (i32.add - (local.get $3) - (local.get $7) - ) - ) - (i32.or - (local.tee $9 - (i32.sub - (i32.shl - (local.get $2) - (i32.const 3) - ) - (local.get $3) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $7) - (local.get $9) - ) - (local.get $9) - ) - (if - (local.get $8) - (block - (local.set $6 - (i32.load - (i32.const 196) - ) - ) - (local.set $3 - (i32.add - (i32.shl - (local.tee $0 - (i32.shr_u - (local.get $8) - (i32.const 3) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $2 - (i32.load - (i32.const 176) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - (if - (i32.lt_u - (local.tee $0 - (i32.load - (local.tee $2 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $5 - (local.get $2) - ) - (local.set $1 - (local.get $0) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $0) - (local.get $2) - ) - ) - (local.set $5 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - (local.set $1 - (local.get $3) - ) - ) - ) - (i32.store - (local.get $5) - (local.get $6) - ) - (i32.store offset=12 - (local.get $1) - (local.get $6) - ) - (i32.store offset=8 - (local.get $6) - (local.get $1) - ) - (i32.store offset=12 - (local.get $6) - (local.get $3) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $9) - ) - (i32.store - (i32.const 196) - (local.get $7) - ) - (return - (local.get $4) - ) - ) - ) - (if (result i32) - (local.tee $0 - (i32.load - (i32.const 180) - ) - ) - (block - (local.set $9 - (i32.sub - (i32.and - (i32.load offset=4 - (local.tee $0 - (i32.load offset=480 - (i32.shl - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.tee $0 - (i32.and - (i32.shr_u - (local.tee $1 - (i32.add - (i32.and - (local.get $0) - (i32.sub - (i32.const 0) - (local.get $0) - ) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.tee $0 - (i32.and - (i32.shr_u - (local.tee $1 - (i32.shr_u - (local.get $1) - (local.get $0) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - ) - (local.tee $0 - (i32.and - (i32.shr_u - (local.tee $1 - (i32.shr_u - (local.get $1) - (local.get $0) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - ) - (local.tee $0 - (i32.and - (i32.shr_u - (local.tee $1 - (i32.shr_u - (local.get $1) - (local.get $0) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.tee $0 - (i32.and - (i32.shr_u - (local.tee $1 - (i32.shr_u - (local.get $1) - (local.get $0) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (i32.shr_u - (local.get $1) - (local.get $0) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const -8) - ) - (local.get $3) - ) - ) - (local.set $7 - (local.get $0) - ) - (loop $while-in - (block $while-out - (if - (local.tee $1 - (i32.load offset=16 - (local.get $0) - ) - ) - (local.set $0 - (local.get $1) - ) - (if - (i32.eqz - (local.tee $0 - (i32.load offset=20 - (local.get $0) - ) - ) - ) - (block - (local.set $6 - (local.get $9) - ) - (local.set $10 - (local.get $7) - ) - (br $while-out) - ) - ) - ) - (local.set $6 - (i32.lt_u - (local.tee $1 - (i32.sub - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - (local.get $3) - ) - ) - (local.get $9) - ) - ) - (local.set $9 - (select - (local.get $1) - (local.get $9) - (local.get $6) - ) - ) - (local.set $7 - (select - (local.get $0) - (local.get $7) - (local.get $6) - ) - ) - (br $while-in) - ) - ) - (if - (i32.lt_u - (local.get $10) - (local.tee $11 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (if - (i32.ge_u - (local.get $10) - (local.tee $5 - (i32.add - (local.get $3) - (local.get $10) - ) - ) - ) - (call $_abort) - ) - (local.set $8 - (i32.load offset=24 - (local.get $10) - ) - ) - (if - (i32.eq - (local.tee $0 - (i32.load offset=12 - (local.get $10) - ) - ) - (local.get $10) - ) - (block $do-once4 - (if - (i32.eqz - (local.tee $1 - (i32.load - (local.tee $0 - (i32.add - (local.get $10) - (i32.const 20) - ) - ) - ) - ) - ) - (br_if $do-once4 - (i32.eqz - (local.tee $1 - (i32.load - (local.tee $0 - (i32.add - (local.get $10) - (i32.const 16) - ) - ) - ) - ) - ) - ) - ) - (loop $while-in7 - (if - (local.tee $7 - (i32.load - (local.tee $9 - (i32.add - (local.get $1) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $1 - (local.get $7) - ) - (local.set $0 - (local.get $9) - ) - (br $while-in7) - ) - ) - (if - (local.tee $7 - (i32.load - (local.tee $9 - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $1 - (local.get $7) - ) - (local.set $0 - (local.get $9) - ) - (br $while-in7) - ) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $11) - ) - (call $_abort) - (block - (i32.store - (local.get $0) - (i32.const 0) - ) - (local.set $4 - (local.get $1) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $10) - ) - ) - (local.get $11) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $10) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=8 - (local.get $0) - ) - (local.get $10) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $4 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $8) - (block $do-once8 - (if - (i32.eq - (i32.load offset=480 - (local.tee $0 - (i32.shl - (local.tee $1 - (i32.load offset=28 - (local.get $10) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $10) - ) - (block - (i32.store offset=480 - (local.get $0) - (local.get $4) - ) - (if - (i32.eqz - (local.get $4) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $1) - ) - (i32.const -1) - ) - ) - ) - (br $do-once8) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $8) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=16 - (local.get $8) - ) - (local.get $10) - ) - (i32.store offset=16 - (local.get $8) - (local.get $4) - ) - (i32.store offset=20 - (local.get $8) - (local.get $4) - ) - ) - (br_if $do-once8 - (i32.eqz - (local.get $4) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $4) - (local.tee $0 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $4) - (local.get $8) - ) - (if - (local.tee $1 - (i32.load offset=16 - (local.get $10) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $0) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $4) - (local.get $1) - ) - (i32.store offset=24 - (local.get $1) - (local.get $4) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $10) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $4) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $4) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $6) - (i32.const 16) - ) - (block - (i32.store offset=4 - (local.get $10) - (i32.or - (local.tee $0 - (i32.add - (local.get $3) - (local.get $6) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $10) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - ) - (block - (i32.store offset=4 - (local.get $10) - (i32.or - (local.get $3) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.get $5) - (i32.or - (local.get $6) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $5) - (local.get $6) - ) - (local.get $6) - ) - (if - (local.tee $0 - (i32.load - (i32.const 184) - ) - ) - (block - (local.set $4 - (i32.load - (i32.const 196) - ) - ) - (local.set $3 - (i32.add - (i32.shl - (local.tee $0 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $1 - (i32.load - (i32.const 176) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - (if - (i32.lt_u - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $12 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - (local.set $12 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - (local.set $2 - (local.get $3) - ) - ) - ) - (i32.store - (local.get $12) - (local.get $4) - ) - (i32.store offset=12 - (local.get $2) - (local.get $4) - ) - (i32.store offset=8 - (local.get $4) - (local.get $2) - ) - (i32.store offset=12 - (local.get $4) - (local.get $3) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $6) - ) - (i32.store - (i32.const 196) - (local.get $5) - ) - ) - ) - (return - (i32.add - (local.get $10) - (i32.const 8) - ) - ) - ) - (local.get $3) - ) - ) - (local.get $3) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $0) - (i32.const -65) - ) - (i32.const -1) - (block $do-once (result i32) - (local.set $3 - (i32.and - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 11) - ) - ) - (i32.const -8) - ) - ) - (if (result i32) - (local.tee $18 - (i32.load - (i32.const 180) - ) - ) - (block (result i32) - (local.set $14 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $0) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $3) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $4 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $2 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.get $4) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $3) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $1) - (local.get $4) - ) - (local.get $2) - ) - ) - (i32.shr_u - (i32.shl - (local.get $0) - (local.get $2) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (local.set $2 - (i32.sub - (i32.const 0) - (local.get $3) - ) - ) - (block $__rjto$3 - (block $__rjti$3 - (local.set $0 - (if (result i32) - (local.tee $0 - (i32.load offset=480 - (i32.shl - (local.get $14) - (i32.const 2) - ) - ) - ) - (block (result i32) - (local.set $8 - (i32.shl - (local.get $3) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $14) - (i32.const 1) - ) - ) - (i32.eq - (local.get $14) - (i32.const 31) - ) - ) - ) - ) - (local.set $1 - (i32.const 0) - ) - (loop $while-in14 (result i32) - (if - (i32.lt_u - (local.tee $4 - (i32.sub - (local.tee $12 - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (local.get $3) - ) - ) - (local.get $2) - ) - (local.set $1 - (if (result i32) - (i32.eq - (local.get $3) - (local.get $12) - ) - (block - (local.set $1 - (local.get $4) - ) - (local.set $2 - (local.get $0) - ) - (br $__rjti$3) - ) - (block (result i32) - (local.set $2 - (local.get $4) - ) - (local.get $0) - ) - ) - ) - ) - (local.set $0 - (select - (local.get $5) - (local.tee $4 - (i32.load offset=20 - (local.get $0) - ) - ) - (i32.or - (i32.eqz - (local.get $4) - ) - (i32.eq - (local.get $4) - (local.tee $12 - (i32.load - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $8) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - ) - ) - ) - (local.set $4 - (i32.shl - (local.get $8) - (i32.xor - (local.tee $5 - (i32.eqz - (local.get $12) - ) - ) - (i32.const 1) - ) - ) - ) - (if (result i32) - (local.get $5) - (block (result i32) - (local.set $4 - (local.get $0) - ) - (local.get $1) - ) - (block - (local.set $5 - (local.get $0) - ) - (local.set $8 - (local.get $4) - ) - (local.set $0 - (local.get $12) - ) - (br $while-in14) - ) - ) - ) - ) - (block (result i32) - (local.set $4 - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - (if - (i32.eqz - (i32.or - (local.get $0) - (local.get $4) - ) - ) - (block - (drop - (br_if $do-once - (local.get $3) - (i32.eqz - (local.tee $1 - (i32.and - (local.get $18) - (i32.or - (local.tee $1 - (i32.shl - (i32.const 2) - (local.get $14) - ) - ) - (i32.sub - (i32.const 0) - (local.get $1) - ) - ) - ) - ) - ) - ) - ) - (local.set $4 - (i32.load offset=480 - (i32.shl - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.tee $1 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.add - (i32.and - (local.get $1) - (i32.sub - (i32.const 0) - (local.get $1) - ) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.tee $1 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $1) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - ) - (local.tee $1 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $1) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - ) - (local.tee $1 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $1) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.tee $1 - (i32.and - (i32.shr_u - (local.tee $4 - (i32.shr_u - (local.get $4) - (local.get $1) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (i32.shr_u - (local.get $4) - (local.get $1) - ) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (local.set $4 - (if (result i32) - (local.get $4) - (block - (local.set $1 - (local.get $2) - ) - (local.set $2 - (local.get $4) - ) - (br $__rjti$3) - ) - (local.get $0) - ) - ) - (br $__rjto$3) - ) - (local.set $2 - (loop $while-in16 (result i32) - (local.set $12 - (i32.lt_u - (local.tee $4 - (i32.sub - (i32.and - (i32.load offset=4 - (local.get $2) - ) - (i32.const -8) - ) - (local.get $3) - ) - ) - (local.get $1) - ) - ) - (local.set $1 - (select - (local.get $4) - (local.get $1) - (local.get $12) - ) - ) - (local.set $0 - (select - (local.get $2) - (local.get $0) - (local.get $12) - ) - ) - (if - (local.tee $4 - (i32.load offset=16 - (local.get $2) - ) - ) - (block - (local.set $2 - (local.get $4) - ) - (br $while-in16) - ) - ) - (br_if $while-in16 - (local.tee $2 - (i32.load offset=20 - (local.get $2) - ) - ) - ) - (local.set $4 - (local.get $0) - ) - (local.get $1) - ) - ) - ) - (if (result i32) - (local.get $4) - (if (result i32) - (i32.lt_u - (local.get $2) - (i32.sub - (i32.load - (i32.const 184) - ) - (local.get $3) - ) - ) - (block - (if - (i32.lt_u - (local.get $4) - (local.tee $10 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (if - (i32.ge_u - (local.get $4) - (local.tee $5 - (i32.add - (local.get $3) - (local.get $4) - ) - ) - ) - (call $_abort) - ) - (local.set $12 - (i32.load offset=24 - (local.get $4) - ) - ) - (if - (i32.eq - (local.tee $0 - (i32.load offset=12 - (local.get $4) - ) - ) - (local.get $4) - ) - (block $do-once17 - (if - (i32.eqz - (local.tee $1 - (i32.load - (local.tee $0 - (i32.add - (local.get $4) - (i32.const 20) - ) - ) - ) - ) - ) - (br_if $do-once17 - (i32.eqz - (local.tee $1 - (i32.load - (local.tee $0 - (i32.add - (local.get $4) - (i32.const 16) - ) - ) - ) - ) - ) - ) - ) - (loop $while-in20 - (if - (local.tee $7 - (i32.load - (local.tee $9 - (i32.add - (local.get $1) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $1 - (local.get $7) - ) - (local.set $0 - (local.get $9) - ) - (br $while-in20) - ) - ) - (if - (local.tee $7 - (i32.load - (local.tee $9 - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $1 - (local.get $7) - ) - (local.set $0 - (local.get $9) - ) - (br $while-in20) - ) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $10) - ) - (call $_abort) - (block - (i32.store - (local.get $0) - (i32.const 0) - ) - (local.set $11 - (local.get $1) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $4) - ) - ) - (local.get $10) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $4) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=8 - (local.get $0) - ) - (local.get $4) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $11 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $12) - (block $do-once21 - (if - (i32.eq - (i32.load offset=480 - (local.tee $0 - (i32.shl - (local.tee $1 - (i32.load offset=28 - (local.get $4) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $4) - ) - (block - (i32.store offset=480 - (local.get $0) - (local.get $11) - ) - (if - (i32.eqz - (local.get $11) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $1) - ) - (i32.const -1) - ) - ) - ) - (br $do-once21) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $12) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=16 - (local.get $12) - ) - (local.get $4) - ) - (i32.store offset=16 - (local.get $12) - (local.get $11) - ) - (i32.store offset=20 - (local.get $12) - (local.get $11) - ) - ) - (br_if $do-once21 - (i32.eqz - (local.get $11) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $11) - (local.tee $0 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $11) - (local.get $12) - ) - (if - (local.tee $1 - (i32.load offset=16 - (local.get $4) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $0) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $11) - (local.get $1) - ) - (i32.store offset=24 - (local.get $1) - (local.get $11) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $4) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $11) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $11) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $2) - (i32.const 16) - ) - (block - (i32.store offset=4 - (local.get $4) - (i32.or - (local.tee $0 - (i32.add - (local.get $2) - (local.get $3) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $4) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - ) - (block $do-once25 - (i32.store offset=4 - (local.get $4) - (i32.or - (local.get $3) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.get $5) - (i32.or - (local.get $2) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $2) - (local.get $5) - ) - (local.get $2) - ) - (local.set $0 - (i32.shr_u - (local.get $2) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $2) - (i32.const 256) - ) - (block - (local.set $2 - (i32.add - (i32.shl - (local.get $0) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $1 - (i32.load - (i32.const 176) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - (if - (i32.lt_u - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $13 - (local.get $1) - ) - (local.set $6 - (local.get $0) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - (local.set $13 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - (local.set $6 - (local.get $2) - ) - ) - ) - (i32.store - (local.get $13) - (local.get $5) - ) - (i32.store offset=12 - (local.get $6) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $6) - ) - (i32.store offset=12 - (local.get $5) - (local.get $2) - ) - (br $do-once25) - ) - ) - (local.set $3 - (i32.add - (local.tee $9 - (i32.shl - (local.tee $7 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $2) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $2) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $7 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $3 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.get $7) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $2) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $1) - (local.get $7) - ) - (local.get $3) - ) - ) - (i32.shr_u - (i32.shl - (local.get $0) - (local.get $3) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $5) - (local.get $7) - ) - (i32.store offset=20 - (local.get $5) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $5) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $1 - (i32.load - (i32.const 180) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $7) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - (i32.store offset=480 - (local.get $9) - (local.get $5) - ) - (i32.store offset=24 - (local.get $5) - (local.get $3) - ) - (i32.store offset=12 - (local.get $5) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $5) - ) - (br $do-once25) - ) - ) - (local.set $7 - (i32.shl - (local.get $2) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $7) - (i32.const 1) - ) - ) - (i32.eq - (local.get $7) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load offset=480 - (local.get $9) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (loop $while-in28 - (br_if $__rjti$1 - (i32.eq - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - (local.get $2) - ) - ) - (local.set $3 - (i32.shl - (local.get $7) - (i32.const 1) - ) - ) - (if - (local.tee $1 - (i32.load - (local.tee $7 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $7) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $7 - (local.get $3) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in28) - ) - ) - ) - (if - (i32.lt_u - (local.get $7) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $7) - (local.get $5) - ) - (i32.store offset=24 - (local.get $5) - (local.get $0) - ) - (i32.store offset=12 - (local.get $5) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $5) - ) - (br $do-once25) - ) - ) - (br $__rjto$1) - ) - (if - (i32.and - (i32.ge_u - (local.tee $2 - (i32.load offset=8 - (local.get $0) - ) - ) - (local.tee $1 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $1) - ) - ) - (block - (i32.store offset=12 - (local.get $2) - (local.get $5) - ) - (i32.store offset=8 - (local.get $0) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $2) - ) - (i32.store offset=12 - (local.get $5) - (local.get $0) - ) - (i32.store offset=24 - (local.get $5) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (return - (i32.add - (local.get $4) - (i32.const 8) - ) - ) - ) - (local.get $3) - ) - (local.get $3) - ) - ) - (local.get $3) - ) - ) - ) - ) - ) - (if - (i32.ge_u - (local.tee $1 - (i32.load - (i32.const 184) - ) - ) - (local.get $0) - ) - (block - (local.set $3 - (i32.load - (i32.const 196) - ) - ) - (if - (i32.gt_u - (local.tee $2 - (i32.sub - (local.get $1) - (local.get $0) - ) - ) - (i32.const 15) - ) - (block - (i32.store - (i32.const 196) - (local.tee $1 - (i32.add - (local.get $0) - (local.get $3) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $2) - ) - (i32.store offset=4 - (local.get $1) - (i32.or - (local.get $2) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $1) - (local.get $2) - ) - (local.get $2) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $0) - (i32.const 3) - ) - ) - ) - (block - (i32.store - (i32.const 184) - (i32.const 0) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $1) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $1) - (local.get $3) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - ) - ) - (return - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - ) - (block $folding-inner0 - (br_if $folding-inner0 - (i32.gt_u - (local.tee $1 - (i32.load - (i32.const 188) - ) - ) - (local.get $0) - ) - ) - (if - (i32.eqz - (i32.load - (i32.const 648) - ) - ) - (if - (i32.and - (local.tee $1 - (call $_sysconf - (i32.const 30) - ) - ) - (i32.add - (local.get $1) - (i32.const -1) - ) - ) - (call $_abort) - (block - (i32.store - (i32.const 656) - (local.get $1) - ) - (i32.store - (i32.const 652) - (local.get $1) - ) - (i32.store - (i32.const 660) - (i32.const -1) - ) - (i32.store - (i32.const 664) - (i32.const -1) - ) - (i32.store - (i32.const 668) - (i32.const 0) - ) - (i32.store - (i32.const 620) - (i32.const 0) - ) - (i32.store - (i32.const 648) - (i32.xor - (i32.and - (call $_time - (i32.const 0) - ) - (i32.const -16) - ) - (i32.const 1431655768) - ) - ) - ) - ) - ) - (if - (i32.le_u - (local.tee $6 - (i32.and - (local.tee $5 - (i32.add - (local.tee $1 - (i32.load - (i32.const 656) - ) - ) - (local.tee $8 - (i32.add - (local.get $0) - (i32.const 47) - ) - ) - ) - ) - (local.tee $12 - (i32.sub - (i32.const 0) - (local.get $1) - ) - ) - ) - ) - (local.get $0) - ) - (return - (i32.const 0) - ) - ) - (if - (local.tee $3 - (i32.load - (i32.const 616) - ) - ) - (if - (i32.or - (i32.le_u - (local.tee $1 - (i32.add - (local.tee $2 - (i32.load - (i32.const 608) - ) - ) - (local.get $6) - ) - ) - (local.get $2) - ) - (i32.gt_u - (local.get $1) - (local.get $3) - ) - ) - (return - (i32.const 0) - ) - ) - ) - (local.set $11 - (i32.add - (local.get $0) - (i32.const 48) - ) - ) - (block $__rjto$13 - (block $__rjti$13 - (if - (i32.eqz - (i32.and - (i32.load - (i32.const 620) - ) - (i32.const 4) - ) - ) - (block - (block $label$break$L279 - (block $__rjti$5 - (block $__rjti$4 - (br_if $__rjti$4 - (i32.eqz - (local.tee $4 - (i32.load - (i32.const 200) - ) - ) - ) - ) - (local.set $1 - (i32.const 624) - ) - (loop $while-in34 - (block $while-out33 - (if - (i32.le_u - (local.tee $2 - (i32.load - (local.get $1) - ) - ) - (local.get $4) - ) - (if - (i32.gt_u - (i32.add - (local.get $2) - (i32.load - (local.tee $3 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - ) - ) - (local.get $4) - ) - (block - (local.set $4 - (local.get $1) - ) - (br $while-out33) - ) - ) - ) - (br_if $while-in34 - (local.tee $1 - (i32.load offset=8 - (local.get $1) - ) - ) - ) - (br $__rjti$4) - ) - ) - (if - (i32.lt_u - (local.tee $2 - (i32.and - (i32.sub - (local.get $5) - (i32.load - (i32.const 188) - ) - ) - (local.get $12) - ) - ) - (i32.const 2147483647) - ) - (block - (local.set $1 - (call $_sbrk - (local.get $2) - ) - ) - (if - (i32.eq - (i32.add - (i32.load - (local.get $4) - ) - (i32.load - (local.get $3) - ) - ) - (local.get $1) - ) - (br_if $__rjti$13 - (i32.ne - (local.get $1) - (i32.const -1) - ) - ) - (block - (local.set $3 - (local.get $1) - ) - (br $__rjti$5) - ) - ) - ) - ) - (br $label$break$L279) - ) - (if - (i32.ne - (local.tee $1 - (call $_sbrk - (i32.const 0) - ) - ) - (i32.const -1) - ) - (block - (local.set $2 - (if (result i32) - (i32.and - (local.tee $2 - (local.get $1) - ) - (local.tee $3 - (i32.add - (local.tee $4 - (i32.load - (i32.const 652) - ) - ) - (i32.const -1) - ) - ) - ) - (i32.add - (i32.sub - (local.get $6) - (local.get $2) - ) - (i32.and - (i32.add - (local.get $2) - (local.get $3) - ) - (i32.sub - (i32.const 0) - (local.get $4) - ) - ) - ) - (local.get $6) - ) - ) - (local.set $12 - (i32.add - (local.tee $4 - (i32.load - (i32.const 608) - ) - ) - (local.get $2) - ) - ) - (if - (i32.and - (i32.lt_u - (local.get $2) - (i32.const 2147483647) - ) - (i32.gt_u - (local.get $2) - (local.get $0) - ) - ) - (block - (br_if $label$break$L279 - (select - (local.tee $3 - (i32.load - (i32.const 616) - ) - ) - (i32.const 0) - (i32.or - (i32.le_u - (local.get $12) - (local.get $4) - ) - (i32.gt_u - (local.get $12) - (local.get $3) - ) - ) - ) - ) - (br_if $__rjti$13 - (i32.eq - (local.get $1) - (local.tee $3 - (call $_sbrk - (local.get $2) - ) - ) - ) - ) - (br $__rjti$5) - ) - ) - ) - ) - (br $label$break$L279) - ) - (local.set $1 - (local.get $2) - ) - (local.set $4 - (i32.sub - (i32.const 0) - (local.get $1) - ) - ) - (local.set $2 - (if (result i32) - (i32.and - (i32.and - (i32.ne - (local.get $3) - (i32.const -1) - ) - (i32.lt_u - (local.get $1) - (i32.const 2147483647) - ) - ) - (i32.gt_u - (local.get $11) - (local.get $1) - ) - ) - (if (result i32) - (i32.lt_u - (local.tee $2 - (i32.and - (i32.add - (local.tee $2 - (i32.load - (i32.const 656) - ) - ) - (i32.sub - (local.get $8) - (local.get $1) - ) - ) - (i32.sub - (i32.const 0) - (local.get $2) - ) - ) - ) - (i32.const 2147483647) - ) - (if (result i32) - (i32.eq - (call $_sbrk - (local.get $2) - ) - (i32.const -1) - ) - (block - (drop - (call $_sbrk - (local.get $4) - ) - ) - (br $label$break$L279) - ) - (i32.add - (local.get $1) - (local.get $2) - ) - ) - (local.get $1) - ) - (local.get $1) - ) - ) - (if - (i32.ne - (local.get $3) - (i32.const -1) - ) - (block - (local.set $1 - (local.get $3) - ) - (br $__rjti$13) - ) - ) - ) - (i32.store - (i32.const 620) - (i32.or - (i32.load - (i32.const 620) - ) - (i32.const 4) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $6) - (i32.const 2147483647) - ) - (if - (i32.and - (i32.lt_u - (local.tee $1 - (call $_sbrk - (local.get $6) - ) - ) - (local.tee $2 - (call $_sbrk - (i32.const 0) - ) - ) - ) - (i32.and - (i32.ne - (local.get $1) - (i32.const -1) - ) - (i32.ne - (local.get $2) - (i32.const -1) - ) - ) - ) - (br_if $__rjti$13 - (i32.gt_u - (local.tee $2 - (i32.sub - (local.get $2) - (local.get $1) - ) - ) - (i32.add - (local.get $0) - (i32.const 40) - ) - ) - ) - ) - ) - (br $__rjto$13) - ) - (i32.store - (i32.const 608) - (local.tee $3 - (i32.add - (i32.load - (i32.const 608) - ) - (local.get $2) - ) - ) - ) - (if - (i32.gt_u - (local.get $3) - (i32.load - (i32.const 612) - ) - ) - (i32.store - (i32.const 612) - (local.get $3) - ) - ) - (if - (local.tee $5 - (i32.load - (i32.const 200) - ) - ) - (block $do-once40 - (local.set $3 - (i32.const 624) - ) - (block $__rjto$10 - (block $__rjti$10 - (loop $while-in45 - (br_if $__rjti$10 - (i32.eq - (i32.add - (local.tee $11 - (i32.load - (local.get $3) - ) - ) - (local.tee $6 - (i32.load - (local.tee $4 - (i32.add - (local.get $3) - (i32.const 4) - ) - ) - ) - ) - ) - (local.get $1) - ) - ) - (br_if $while-in45 - (local.tee $3 - (i32.load offset=8 - (local.get $3) - ) - ) - ) - ) - (br $__rjto$10) - ) - (if - (i32.eqz - (i32.and - (i32.load offset=12 - (local.get $3) - ) - (i32.const 8) - ) - ) - (if - (i32.and - (i32.lt_u - (local.get $5) - (local.get $1) - ) - (i32.ge_u - (local.get $5) - (local.get $11) - ) - ) - (block - (i32.store - (local.get $4) - (i32.add - (local.get $2) - (local.get $6) - ) - ) - (local.set $3 - (i32.add - (local.get $5) - (local.tee $1 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.get $5) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - ) - ) - ) - (local.set $1 - (i32.add - (i32.load - (i32.const 188) - ) - (i32.sub - (local.get $2) - (local.get $1) - ) - ) - ) - (i32.store - (i32.const 200) - (local.get $3) - ) - (i32.store - (i32.const 188) - (local.get $1) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $1) - (local.get $3) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - (br $do-once40) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.tee $4 - (i32.load - (i32.const 192) - ) - ) - ) - (block - (i32.store - (i32.const 192) - (local.get $1) - ) - (local.set $4 - (local.get $1) - ) - ) - ) - (local.set $11 - (i32.add - (local.get $1) - (local.get $2) - ) - ) - (local.set $3 - (i32.const 624) - ) - (local.set $4 - (block $__rjto$11 (result i32) - (block $__rjti$11 - (br $__rjto$11 - (loop $while-in47 (result i32) - (if - (i32.eq - (i32.load - (local.get $3) - ) - (local.get $11) - ) - (block - (local.set $6 - (local.get $3) - ) - (br $__rjti$11) - ) - ) - (br_if $while-in47 - (local.tee $3 - (i32.load offset=8 - (local.get $3) - ) - ) - ) - (i32.const 624) - ) - ) - ) - (if (result i32) - (i32.and - (i32.load offset=12 - (local.get $3) - ) - (i32.const 8) - ) - (i32.const 624) - (block - (i32.store - (local.get $6) - (local.get $1) - ) - (i32.store offset=4 - (local.get $3) - (i32.add - (i32.load offset=4 - (local.get $3) - ) - (local.get $2) - ) - ) - (local.set $8 - (i32.add - (local.tee $12 - (i32.add - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $2 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $2) - (i32.const 7) - ) - ) - (local.get $1) - ) - ) - (local.get $0) - ) - ) - (local.set $7 - (i32.sub - (i32.sub - (local.tee $6 - (i32.add - (local.get $11) - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.get $11) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - ) - ) - (local.get $12) - ) - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $12) - (i32.or - (local.get $0) - (i32.const 3) - ) - ) - (if - (i32.eq - (local.get $5) - (local.get $6) - ) - (block - (i32.store - (i32.const 188) - (local.tee $0 - (i32.add - (i32.load - (i32.const 188) - ) - (local.get $7) - ) - ) - ) - (i32.store - (i32.const 200) - (local.get $8) - ) - (i32.store offset=4 - (local.get $8) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - ) - (block $do-once48 - (if - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $6) - ) - (block - (i32.store - (i32.const 184) - (local.tee $0 - (i32.add - (i32.load - (i32.const 184) - ) - (local.get $7) - ) - ) - ) - (i32.store - (i32.const 196) - (local.get $8) - ) - (i32.store offset=4 - (local.get $8) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $8) - ) - (local.get $0) - ) - (br $do-once48) - ) - ) - (i32.store offset=4 - (local.tee $0 - (if (result i32) - (i32.eq - (i32.and - (local.tee $0 - (i32.load offset=4 - (local.get $6) - ) - ) - (i32.const 3) - ) - (i32.const 1) - ) - (block (result i32) - (local.set $11 - (i32.and - (local.get $0) - (i32.const -8) - ) - ) - (local.set $1 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (block $label$break$L331 - (if - (i32.lt_u - (local.get $0) - (i32.const 256) - ) - (block - (local.set $3 - (i32.load offset=12 - (local.get $6) - ) - ) - (if - (i32.ne - (local.tee $2 - (i32.load offset=8 - (local.get $6) - ) - ) - (local.tee $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - (block $do-once51 - (if - (i32.lt_u - (local.get $2) - (local.get $4) - ) - (call $_abort) - ) - (br_if $do-once51 - (i32.eq - (i32.load offset=12 - (local.get $2) - ) - (local.get $6) - ) - ) - (call $_abort) - ) - ) - (if - (i32.eq - (local.get $2) - (local.get $3) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $1) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$L331) - ) - ) - (if - (i32.eq - (local.get $0) - (local.get $3) - ) - (local.set $15 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - (block $do-once53 - (if - (i32.lt_u - (local.get $3) - (local.get $4) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (local.tee $0 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - (local.get $6) - ) - (block - (local.set $15 - (local.get $0) - ) - (br $do-once53) - ) - ) - (call $_abort) - ) - ) - (i32.store offset=12 - (local.get $2) - (local.get $3) - ) - (i32.store - (local.get $15) - (local.get $2) - ) - ) - (block - (local.set $5 - (i32.load offset=24 - (local.get $6) - ) - ) - (if - (i32.eq - (local.tee $0 - (i32.load offset=12 - (local.get $6) - ) - ) - (local.get $6) - ) - (block $do-once55 - (if - (i32.eqz - (local.tee $1 - (i32.load - (local.tee $0 - (i32.add - (local.tee $2 - (i32.add - (local.get $6) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - ) - (block - (br_if $do-once55 - (i32.eqz - (local.tee $1 - (i32.load - (local.get $2) - ) - ) - ) - ) - (local.set $0 - (local.get $2) - ) - ) - ) - (loop $while-in58 - (if - (local.tee $2 - (i32.load - (local.tee $3 - (i32.add - (local.get $1) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $1 - (local.get $2) - ) - (local.set $0 - (local.get $3) - ) - (br $while-in58) - ) - ) - (if - (local.tee $2 - (i32.load - (local.tee $3 - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $1 - (local.get $2) - ) - (local.set $0 - (local.get $3) - ) - (br $while-in58) - ) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $4) - ) - (call $_abort) - (block - (i32.store - (local.get $0) - (i32.const 0) - ) - (local.set $10 - (local.get $1) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $6) - ) - ) - (local.get $4) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $6) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=8 - (local.get $0) - ) - (local.get $6) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $10 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (br_if $label$break$L331 - (i32.eqz - (local.get $5) - ) - ) - (if - (i32.eq - (i32.load offset=480 - (local.tee $0 - (i32.shl - (local.tee $1 - (i32.load offset=28 - (local.get $6) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $6) - ) - (block $do-once59 - (i32.store offset=480 - (local.get $0) - (local.get $10) - ) - (br_if $do-once59 - (local.get $10) - ) - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $1) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$L331) - ) - (block - (if - (i32.lt_u - (local.get $5) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=16 - (local.get $5) - ) - (local.get $6) - ) - (i32.store offset=16 - (local.get $5) - (local.get $10) - ) - (i32.store offset=20 - (local.get $5) - (local.get $10) - ) - ) - (br_if $label$break$L331 - (i32.eqz - (local.get $10) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $10) - (local.tee $0 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $10) - (local.get $5) - ) - (if - (local.tee $1 - (i32.load offset=16 - (local.get $6) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $0) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $10) - (local.get $1) - ) - (i32.store offset=24 - (local.get $1) - (local.get $10) - ) - ) - ) - ) - (br_if $label$break$L331 - (i32.eqz - (local.tee $0 - (i32.load offset=20 - (local.get $6) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $10) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $10) - ) - ) - ) - ) - ) - ) - (local.set $7 - (i32.add - (local.get $7) - (local.get $11) - ) - ) - (i32.add - (local.get $6) - (local.get $11) - ) - ) - (local.get $6) - ) - ) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $8) - (i32.or - (local.get $7) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $7) - (local.get $8) - ) - (local.get $7) - ) - (local.set $0 - (i32.shr_u - (local.get $7) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $7) - (i32.const 256) - ) - (block - (local.set $2 - (i32.add - (i32.shl - (local.get $0) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $1 - (i32.load - (i32.const 176) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - (block $do-once63 - (if - (i32.ge_u - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (block - (local.set $16 - (local.get $1) - ) - (local.set $9 - (local.get $0) - ) - (br $do-once63) - ) - ) - (call $_abort) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - (local.set $16 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - (local.set $9 - (local.get $2) - ) - ) - ) - (i32.store - (local.get $16) - (local.get $8) - ) - (i32.store offset=12 - (local.get $9) - (local.get $8) - ) - (i32.store offset=8 - (local.get $8) - (local.get $9) - ) - (i32.store offset=12 - (local.get $8) - (local.get $2) - ) - (br $do-once48) - ) - ) - (local.set $2 - (i32.add - (local.tee $4 - (i32.shl - (local.tee $3 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $7) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $7) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $3 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $2 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.get $3) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $7) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $1) - (local.get $3) - ) - (local.get $2) - ) - ) - (i32.shr_u - (i32.shl - (local.get $0) - (local.get $2) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $8) - (local.get $3) - ) - (i32.store offset=20 - (local.get $8) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $8) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $1 - (i32.load - (i32.const 180) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $3) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - (i32.store offset=480 - (local.get $4) - (local.get $8) - ) - (i32.store offset=24 - (local.get $8) - (local.get $2) - ) - (i32.store offset=12 - (local.get $8) - (local.get $8) - ) - (i32.store offset=8 - (local.get $8) - (local.get $8) - ) - (br $do-once48) - ) - ) - (local.set $3 - (i32.shl - (local.get $7) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $3) - (i32.const 1) - ) - ) - (i32.eq - (local.get $3) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load offset=480 - (local.get $4) - ) - ) - (block $__rjto$7 - (block $__rjti$7 - (loop $while-in68 - (br_if $__rjti$7 - (i32.eq - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - (local.get $7) - ) - ) - (local.set $2 - (i32.shl - (local.get $3) - (i32.const 1) - ) - ) - (if - (local.tee $1 - (i32.load - (local.tee $3 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $3) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $3 - (local.get $2) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in68) - ) - ) - ) - (if - (i32.lt_u - (local.get $3) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $3) - (local.get $8) - ) - (i32.store offset=24 - (local.get $8) - (local.get $0) - ) - (i32.store offset=12 - (local.get $8) - (local.get $8) - ) - (i32.store offset=8 - (local.get $8) - (local.get $8) - ) - (br $do-once48) - ) - ) - (br $__rjto$7) - ) - (if - (i32.and - (i32.ge_u - (local.tee $2 - (i32.load offset=8 - (local.get $0) - ) - ) - (local.tee $1 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $1) - ) - ) - (block - (i32.store offset=12 - (local.get $2) - (local.get $8) - ) - (i32.store offset=8 - (local.get $0) - (local.get $8) - ) - (i32.store offset=8 - (local.get $8) - (local.get $2) - ) - (i32.store offset=12 - (local.get $8) - (local.get $0) - ) - (i32.store offset=24 - (local.get $8) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (return - (i32.add - (local.get $12) - (i32.const 8) - ) - ) - ) - ) - ) - ) - (loop $while-in70 - (block $while-out69 - (if - (i32.le_u - (local.tee $3 - (i32.load - (local.get $4) - ) - ) - (local.get $5) - ) - (br_if $while-out69 - (i32.gt_u - (local.tee $3 - (i32.add - (local.get $3) - (i32.load offset=4 - (local.get $4) - ) - ) - ) - (local.get $5) - ) - ) - ) - (local.set $4 - (i32.load offset=8 - (local.get $4) - ) - ) - (br $while-in70) - ) - ) - (local.set $10 - (i32.add - (local.tee $9 - (i32.add - (local.get $3) - (i32.const -47) - ) - ) - (i32.const 8) - ) - ) - (i32.store - (i32.const 200) - (local.tee $6 - (i32.add - (local.tee $4 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $4 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $4) - (i32.const 7) - ) - ) - ) - (local.get $1) - ) - ) - ) - (i32.store - (i32.const 188) - (local.tee $4 - (i32.sub - (i32.add - (local.get $2) - (i32.const -40) - ) - (local.get $4) - ) - ) - ) - (i32.store offset=4 - (local.get $6) - (i32.or - (local.get $4) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $4) - (local.get $6) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - (i32.store offset=4 - (local.tee $9 - (select - (local.get $5) - (local.tee $4 - (i32.add - (local.get $9) - (select - (i32.and - (i32.sub - (i32.const 0) - (local.get $10) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $10) - (i32.const 7) - ) - ) - ) - ) - (i32.lt_u - (local.get $4) - (local.tee $4 - (i32.add - (local.get $5) - (i32.const 16) - ) - ) - ) - ) - ) - (i32.const 27) - ) - (i32.store offset=8 - (local.get $9) - (i32.load - (i32.const 624) - ) - ) - (i32.store offset=12 - (local.get $9) - (i32.load - (i32.const 628) - ) - ) - (i32.store offset=16 - (local.get $9) - (i32.load - (i32.const 632) - ) - ) - (i32.store offset=20 - (local.get $9) - (i32.load - (i32.const 636) - ) - ) - (i32.store - (i32.const 624) - (local.get $1) - ) - (i32.store - (i32.const 628) - (local.get $2) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (i32.store - (i32.const 632) - (i32.add - (local.get $9) - (i32.const 8) - ) - ) - (local.set $1 - (i32.add - (local.get $9) - (i32.const 24) - ) - ) - (loop $while-in72 - (i32.store - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.const 7) - ) - (br_if $while-in72 - (i32.lt_u - (i32.add - (local.get $1) - (i32.const 4) - ) - (local.get $3) - ) - ) - ) - (if - (i32.ne - (local.get $5) - (local.get $9) - ) - (block - (i32.store offset=4 - (local.get $9) - (i32.and - (i32.load offset=4 - (local.get $9) - ) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $5) - (i32.or - (local.tee $6 - (i32.sub - (local.get $9) - (local.get $5) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (local.get $9) - (local.get $6) - ) - (local.set $1 - (i32.shr_u - (local.get $6) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $6) - (i32.const 256) - ) - (block - (local.set $3 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $2 - (i32.load - (i32.const 176) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $1 - (i32.load - (local.tee $2 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $17 - (local.get $2) - ) - (local.set $7 - (local.get $1) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $1) - (local.get $2) - ) - ) - (local.set $17 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - (local.set $7 - (local.get $3) - ) - ) - ) - (i32.store - (local.get $17) - (local.get $5) - ) - (i32.store offset=12 - (local.get $7) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $7) - ) - (i32.store offset=12 - (local.get $5) - (local.get $3) - ) - (br $do-once40) - ) - ) - (local.set $3 - (i32.add - (local.tee $7 - (i32.shl - (local.tee $9 - (if (result i32) - (local.tee $1 - (i32.shr_u - (local.get $6) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $6) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $7 - (i32.and - (i32.shr_u - (i32.add - (local.tee $1 - (i32.shl - (local.get $1) - (local.tee $2 - (i32.and - (i32.shr_u - (i32.add - (local.get $1) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $3 - (i32.and - (i32.shr_u - (i32.add - (local.tee $1 - (i32.shl - (local.get $1) - (local.get $7) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $6) - (i32.add - (local.tee $1 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $2) - (local.get $7) - ) - (local.get $3) - ) - ) - (i32.shr_u - (i32.shl - (local.get $1) - (local.get $3) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $1) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $5) - (local.get $9) - ) - (i32.store offset=20 - (local.get $5) - (i32.const 0) - ) - (i32.store - (local.get $4) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $2 - (i32.load - (i32.const 180) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $9) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $1) - (local.get $2) - ) - ) - (i32.store offset=480 - (local.get $7) - (local.get $5) - ) - (i32.store offset=24 - (local.get $5) - (local.get $3) - ) - (i32.store offset=12 - (local.get $5) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $5) - ) - (br $do-once40) - ) - ) - (local.set $4 - (i32.shl - (local.get $6) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $9) - (i32.const 1) - ) - ) - (i32.eq - (local.get $9) - (i32.const 31) - ) - ) - ) - ) - (local.set $1 - (i32.load offset=480 - (local.get $7) - ) - ) - (block $__rjto$9 - (block $__rjti$9 - (loop $while-in74 - (br_if $__rjti$9 - (i32.eq - (i32.and - (i32.load offset=4 - (local.get $1) - ) - (i32.const -8) - ) - (local.get $6) - ) - ) - (local.set $3 - (i32.shl - (local.get $4) - (i32.const 1) - ) - ) - (if - (local.tee $2 - (i32.load - (local.tee $4 - (i32.add - (i32.add - (local.get $1) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $4) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $3) - ) - (local.set $1 - (local.get $2) - ) - (br $while-in74) - ) - ) - ) - (if - (i32.lt_u - (local.get $4) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $4) - (local.get $5) - ) - (i32.store offset=24 - (local.get $5) - (local.get $1) - ) - (i32.store offset=12 - (local.get $5) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $5) - ) - (br $do-once40) - ) - ) - (br $__rjto$9) - ) - (if - (i32.and - (i32.ge_u - (local.tee $3 - (i32.load offset=8 - (local.get $1) - ) - ) - (local.tee $2 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $1) - (local.get $2) - ) - ) - (block - (i32.store offset=12 - (local.get $3) - (local.get $5) - ) - (i32.store offset=8 - (local.get $1) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $3) - ) - (i32.store offset=12 - (local.get $5) - (local.get $1) - ) - (i32.store offset=24 - (local.get $5) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - ) - (block - (if - (i32.or - (i32.eqz - (local.tee $3 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.lt_u - (local.get $1) - (local.get $3) - ) - ) - (i32.store - (i32.const 192) - (local.get $1) - ) - ) - (i32.store - (i32.const 624) - (local.get $1) - ) - (i32.store - (i32.const 628) - (local.get $2) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (i32.store - (i32.const 212) - (i32.load - (i32.const 648) - ) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - (local.set $3 - (i32.const 0) - ) - (loop $while-in43 - (local.set $4 - (i32.add - (local.tee $7 - (i32.shl - (local.get $3) - (i32.const 3) - ) - ) - (i32.const 216) - ) - ) - (i32.store offset=228 - (local.get $7) - (local.get $4) - ) - (i32.store offset=224 - (local.get $7) - (local.get $4) - ) - (br_if $while-in43 - (i32.ne - (local.tee $3 - (i32.add - (local.get $3) - (i32.const 1) - ) - ) - (i32.const 32) - ) - ) - ) - (i32.store - (i32.const 200) - (local.tee $4 - (i32.add - (local.tee $3 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $3 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $3) - (i32.const 7) - ) - ) - ) - (local.get $1) - ) - ) - ) - (i32.store - (i32.const 188) - (local.tee $1 - (i32.sub - (i32.add - (local.get $2) - (i32.const -40) - ) - (local.get $3) - ) - ) - ) - (i32.store offset=4 - (local.get $4) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $1) - (local.get $4) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - ) - ) - (br_if $folding-inner0 - (i32.gt_u - (local.tee $1 - (i32.load - (i32.const 188) - ) - ) - (local.get $0) - ) - ) - ) - (i32.store - (call $___errno_location) - (i32.const 12) - ) - (return - (i32.const 0) - ) - ) - (i32.store - (i32.const 188) - (local.tee $2 - (i32.sub - (local.get $1) - (local.get $0) - ) - ) - ) - (i32.store - (i32.const 200) - (local.tee $1 - (i32.add - (local.tee $3 - (i32.load - (i32.const 200) - ) - ) - (local.get $0) - ) - ) - ) - (i32.store offset=4 - (local.get $1) - (i32.or - (local.get $2) - (i32.const 1) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $0) - (i32.const 3) - ) - ) - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - (func $_free (; 49 ;) (; has Stack IR ;) (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (if - (i32.eqz - (local.get $0) - ) - (return) - ) - (if - (i32.lt_u - (local.tee $1 - (i32.add - (local.get $0) - (i32.const -8) - ) - ) - (local.tee $12 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.tee $4 - (i32.and - (local.tee $8 - (i32.load - (i32.add - (local.get $0) - (i32.const -4) - ) - ) - ) - (i32.const 3) - ) - ) - (i32.const 1) - ) - (call $_abort) - ) - (local.set $7 - (i32.add - (local.get $1) - (local.tee $0 - (i32.and - (local.get $8) - (i32.const -8) - ) - ) - ) - ) - (if - (i32.and - (local.get $8) - (i32.const 1) - ) - (block - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - ) - (block $do-once - (if - (i32.eqz - (local.get $4) - ) - (return) - ) - (if - (i32.lt_u - (local.tee $1 - (i32.sub - (local.get $1) - (local.tee $8 - (i32.load - (local.get $1) - ) - ) - ) - ) - (local.get $12) - ) - (call $_abort) - ) - (local.set $0 - (i32.add - (local.get $0) - (local.get $8) - ) - ) - (if - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $1) - ) - (block - (if - (i32.ne - (i32.and - (local.tee $2 - (i32.load offset=4 - (local.get $7) - ) - ) - (i32.const 3) - ) - (i32.const 3) - ) - (block - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - (br $do-once) - ) - ) - (i32.store - (i32.const 184) - (local.get $0) - ) - (i32.store offset=4 - (local.get $7) - (i32.and - (local.get $2) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $1) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $1) - ) - (local.get $0) - ) - (return) - ) - ) - (local.set $4 - (i32.shr_u - (local.get $8) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $8) - (i32.const 256) - ) - (block - (local.set $6 - (i32.load offset=12 - (local.get $1) - ) - ) - (if - (i32.ne - (local.tee $3 - (i32.load offset=8 - (local.get $1) - ) - ) - (local.tee $2 - (i32.add - (i32.shl - (local.get $4) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $3) - (local.get $12) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $1) - (i32.load offset=12 - (local.get $3) - ) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (local.get $3) - (local.get $6) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - (br $do-once) - ) - ) - (if - (i32.eq - (local.get $2) - (local.get $6) - ) - (local.set $5 - (i32.add - (local.get $6) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $6) - (local.get $12) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (local.tee $2 - (i32.add - (local.get $6) - (i32.const 8) - ) - ) - ) - (local.get $1) - ) - (local.set $5 - (local.get $2) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=12 - (local.get $3) - (local.get $6) - ) - (i32.store - (local.get $5) - (local.get $3) - ) - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - (br $do-once) - ) - ) - (local.set $10 - (i32.load offset=24 - (local.get $1) - ) - ) - (if - (i32.eq - (local.tee $5 - (i32.load offset=12 - (local.get $1) - ) - ) - (local.get $1) - ) - (block $do-once0 - (if - (i32.eqz - (local.tee $4 - (i32.load - (local.tee $5 - (i32.add - (local.tee $8 - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - ) - (block - (br_if $do-once0 - (i32.eqz - (local.tee $4 - (i32.load - (local.get $8) - ) - ) - ) - ) - (local.set $5 - (local.get $8) - ) - ) - ) - (loop $while-in - (if - (local.tee $8 - (i32.load - (local.tee $13 - (i32.add - (local.get $4) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $8) - ) - (local.set $5 - (local.get $13) - ) - (br $while-in) - ) - ) - (if - (local.tee $8 - (i32.load - (local.tee $13 - (i32.add - (local.get $4) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $8) - ) - (local.set $5 - (local.get $13) - ) - (br $while-in) - ) - ) - ) - (if - (i32.lt_u - (local.get $5) - (local.get $12) - ) - (call $_abort) - (block - (i32.store - (local.get $5) - (i32.const 0) - ) - (local.set $6 - (local.get $4) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $4 - (i32.load offset=8 - (local.get $1) - ) - ) - (local.get $12) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $1) - (i32.load offset=12 - (local.get $4) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=8 - (local.get $5) - ) - (local.get $1) - ) - (block - (i32.store offset=12 - (local.get $4) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $4) - ) - (local.set $6 - (local.get $5) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $10) - (block - (if - (i32.eq - (i32.load offset=480 - (local.tee $5 - (i32.shl - (local.tee $4 - (i32.load offset=28 - (local.get $1) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $1) - ) - (block - (i32.store offset=480 - (local.get $5) - (local.get $6) - ) - (if - (i32.eqz - (local.get $6) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - (br $do-once) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $10) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=16 - (local.get $10) - ) - (local.get $1) - ) - (i32.store offset=16 - (local.get $10) - (local.get $6) - ) - (i32.store offset=20 - (local.get $10) - (local.get $6) - ) - ) - (if - (i32.eqz - (local.get $6) - ) - (block - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - (br $do-once) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $6) - (local.tee $5 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $6) - (local.get $10) - ) - (if - (local.tee $4 - (i32.load offset=16 - (local.get $1) - ) - ) - (if - (i32.lt_u - (local.get $4) - (local.get $5) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $6) - (local.get $4) - ) - (i32.store offset=24 - (local.get $4) - (local.get $6) - ) - ) - ) - ) - (if - (local.tee $5 - (i32.load offset=20 - (local.get $1) - ) - ) - (if - (i32.lt_u - (local.get $5) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $6) - (local.get $5) - ) - (i32.store offset=24 - (local.get $5) - (local.get $6) - ) - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - ) - ) - (block - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - ) - ) - ) - (block - (local.set $3 - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - ) - ) - ) - ) - (if - (i32.ge_u - (local.get $3) - (local.get $7) - ) - (call $_abort) - ) - (if - (i32.eqz - (i32.and - (local.tee $0 - (i32.load offset=4 - (local.get $7) - ) - ) - (i32.const 1) - ) - ) - (call $_abort) - ) - (if - (i32.and - (local.get $0) - (i32.const 2) - ) - (block - (i32.store offset=4 - (local.get $7) - (i32.and - (local.get $0) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $2) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $2) - (local.get $3) - ) - (local.get $2) - ) - ) - (block - (if - (i32.eq - (i32.load - (i32.const 200) - ) - (local.get $7) - ) - (block - (i32.store - (i32.const 188) - (local.tee $0 - (i32.add - (i32.load - (i32.const 188) - ) - (local.get $2) - ) - ) - ) - (i32.store - (i32.const 200) - (local.get $3) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (if - (i32.ne - (local.get $3) - (i32.load - (i32.const 196) - ) - ) - (return) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (i32.store - (i32.const 184) - (i32.const 0) - ) - (return) - ) - ) - (if - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $7) - ) - (block - (i32.store - (i32.const 184) - (local.tee $0 - (i32.add - (i32.load - (i32.const 184) - ) - (local.get $2) - ) - ) - ) - (i32.store - (i32.const 196) - (local.get $3) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $3) - ) - (local.get $0) - ) - (return) - ) - ) - (local.set $4 - (i32.add - (i32.and - (local.get $0) - (i32.const -8) - ) - (local.get $2) - ) - ) - (local.set $2 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (block $do-once4 - (if - (i32.lt_u - (local.get $0) - (i32.const 256) - ) - (block - (local.set $5 - (i32.load offset=12 - (local.get $7) - ) - ) - (if - (i32.ne - (local.tee $1 - (i32.load offset=8 - (local.get $7) - ) - ) - (local.tee $0 - (i32.add - (i32.shl - (local.get $2) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $1) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $7) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (local.get $1) - (local.get $5) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $2) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - (if - (i32.eq - (local.get $0) - (local.get $5) - ) - (local.set $14 - (i32.add - (local.get $5) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $5) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (local.tee $0 - (i32.add - (local.get $5) - (i32.const 8) - ) - ) - ) - (local.get $7) - ) - (local.set $14 - (local.get $0) - ) - (call $_abort) - ) - ) - ) - (i32.store offset=12 - (local.get $1) - (local.get $5) - ) - (i32.store - (local.get $14) - (local.get $1) - ) - ) - (block - (local.set $6 - (i32.load offset=24 - (local.get $7) - ) - ) - (if - (i32.eq - (local.tee $0 - (i32.load offset=12 - (local.get $7) - ) - ) - (local.get $7) - ) - (block $do-once6 - (if - (i32.eqz - (local.tee $2 - (i32.load - (local.tee $0 - (i32.add - (local.tee $1 - (i32.add - (local.get $7) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - ) - (block - (br_if $do-once6 - (i32.eqz - (local.tee $2 - (i32.load - (local.get $1) - ) - ) - ) - ) - (local.set $0 - (local.get $1) - ) - ) - ) - (loop $while-in9 - (if - (local.tee $1 - (i32.load - (local.tee $5 - (i32.add - (local.get $2) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $2 - (local.get $1) - ) - (local.set $0 - (local.get $5) - ) - (br $while-in9) - ) - ) - (if - (local.tee $1 - (i32.load - (local.tee $5 - (i32.add - (local.get $2) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $2 - (local.get $1) - ) - (local.set $0 - (local.get $5) - ) - (br $while-in9) - ) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $0) - (i32.const 0) - ) - (local.set $9 - (local.get $2) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $2 - (i32.load offset=8 - (local.get $7) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $7) - (i32.load offset=12 - (local.get $2) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=8 - (local.get $0) - ) - (local.get $7) - ) - (block - (i32.store offset=12 - (local.get $2) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $2) - ) - (local.set $9 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $6) - (block - (if - (i32.eq - (i32.load offset=480 - (local.tee $0 - (i32.shl - (local.tee $2 - (i32.load offset=28 - (local.get $7) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $7) - ) - (block - (i32.store offset=480 - (local.get $0) - (local.get $9) - ) - (if - (i32.eqz - (local.get $9) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $2) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $6) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load offset=16 - (local.get $6) - ) - (local.get $7) - ) - (i32.store offset=16 - (local.get $6) - (local.get $9) - ) - (i32.store offset=20 - (local.get $6) - (local.get $9) - ) - ) - (br_if $do-once4 - (i32.eqz - (local.get $9) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $9) - (local.tee $0 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $9) - (local.get $6) - ) - (if - (local.tee $2 - (i32.load offset=16 - (local.get $7) - ) - ) - (if - (i32.lt_u - (local.get $2) - (local.get $0) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $9) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $9) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $7) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $9) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $9) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $4) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $3) - (local.get $4) - ) - (local.get $4) - ) - (local.set $2 - (if (result i32) - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $3) - ) - (block - (i32.store - (i32.const 184) - (local.get $4) - ) - (return) - ) - (local.get $4) - ) - ) - ) - ) - (local.set $0 - (i32.shr_u - (local.get $2) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $2) - (i32.const 256) - ) - (block - (local.set $1 - (i32.add - (i32.shl - (local.get $0) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $2 - (i32.load - (i32.const 176) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - (if - (i32.lt_u - (local.tee $0 - (i32.load - (local.tee $2 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $15 - (local.get $2) - ) - (local.set $11 - (local.get $0) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $0) - (local.get $2) - ) - ) - (local.set $15 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (local.set $11 - (local.get $1) - ) - ) - ) - (i32.store - (local.get $15) - (local.get $3) - ) - (i32.store offset=12 - (local.get $11) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $11) - ) - (i32.store offset=12 - (local.get $3) - (local.get $1) - ) - (return) - ) - ) - (local.set $5 - (i32.add - (local.tee $11 - (i32.shl - (local.tee $4 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $2) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $2) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $4 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $5 - (i32.and - (i32.shr_u - (i32.add - (local.tee $0 - (i32.shl - (local.get $0) - (local.get $4) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $2) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $1) - (local.get $4) - ) - (local.get $5) - ) - ) - (i32.shr_u - (i32.shl - (local.get $0) - (local.get $5) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $3) - (local.get $4) - ) - (i32.store offset=20 - (local.get $3) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $3) - (i32.const 0) - ) - (if - (i32.and - (local.tee $1 - (i32.load - (i32.const 180) - ) - ) - (local.tee $0 - (i32.shl - (i32.const 1) - (local.get $4) - ) - ) - ) - (block $do-once12 - (local.set $4 - (i32.shl - (local.get $2) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $4) - (i32.const 1) - ) - ) - (i32.eq - (local.get $4) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load offset=480 - (local.get $11) - ) - ) - (block $__rjto$1 - (block $__rjti$1 - (loop $while-in15 - (br_if $__rjti$1 - (i32.eq - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - (local.get $2) - ) - ) - (local.set $5 - (i32.shl - (local.get $4) - (i32.const 1) - ) - ) - (if - (local.tee $1 - (i32.load - (local.tee $4 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $4) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $5) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in15) - ) - ) - ) - (if - (i32.lt_u - (local.get $4) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $4) - (local.get $3) - ) - (i32.store offset=24 - (local.get $3) - (local.get $0) - ) - (i32.store offset=12 - (local.get $3) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $3) - ) - (br $do-once12) - ) - ) - (br $__rjto$1) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.get $0) - ) - ) - (local.tee $2 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $2) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $3) - ) - (i32.store offset=8 - (local.get $0) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $1) - ) - (i32.store offset=12 - (local.get $3) - (local.get $0) - ) - (i32.store offset=24 - (local.get $3) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - (i32.store offset=480 - (local.get $11) - (local.get $3) - ) - (i32.store offset=24 - (local.get $3) - (local.get $5) - ) - (i32.store offset=12 - (local.get $3) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $3) - ) - ) - ) - (i32.store - (i32.const 208) - (local.tee $0 - (i32.add - (i32.load - (i32.const 208) - ) - (i32.const -1) - ) - ) - ) - (local.set $0 - (if (result i32) - (local.get $0) - (return) - (i32.const 632) - ) - ) - (loop $while-in17 - (local.set $0 - (i32.add - (local.tee $2 - (i32.load - (local.get $0) - ) - ) - (i32.const 8) - ) - ) - (br_if $while-in17 - (local.get $2) - ) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - ) - (func $runPostSets (; 50 ;) (; has Stack IR ;) - (nop) - ) - (func $_i64Subtract (; 51 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (global.set $tempRet0 - (i32.sub - (i32.sub - (local.get $1) - (local.get $3) - ) - (i32.gt_u - (local.get $2) - (local.get $0) - ) - ) - ) - (i32.sub - (local.get $0) - (local.get $2) - ) - ) - (func $_i64Add (; 52 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (global.set $tempRet0 - (i32.add - (i32.add - (local.get $1) - (local.get $3) - ) - (i32.lt_u - (local.tee $1 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - (local.get $0) - ) - ) - ) - (local.get $1) - ) - (func $_memset (; 53 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local.set $4 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - (if - (i32.ge_s - (local.get $2) - (i32.const 20) - ) - (block - (local.set $1 - (i32.and - (local.get $1) - (i32.const 255) - ) - ) - (if - (local.tee $3 - (i32.and - (local.get $0) - (i32.const 3) - ) - ) - (block - (local.set $3 - (i32.sub - (i32.add - (local.get $0) - (i32.const 4) - ) - (local.get $3) - ) - ) - (loop $while-in - (if - (i32.lt_s - (local.get $0) - (local.get $3) - ) - (block - (i32.store8 - (local.get $0) - (local.get $1) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - ) - (local.set $3 - (i32.or - (i32.or - (i32.or - (i32.shl - (local.get $1) - (i32.const 8) - ) - (local.get $1) - ) - (i32.shl - (local.get $1) - (i32.const 16) - ) - ) - (i32.shl - (local.get $1) - (i32.const 24) - ) - ) - ) - (local.set $5 - (i32.and - (local.get $4) - (i32.const -4) - ) - ) - (loop $while-in1 - (if - (i32.lt_s - (local.get $0) - (local.get $5) - ) - (block - (i32.store - (local.get $0) - (local.get $3) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - ) - (loop $while-in3 - (if - (i32.lt_s - (local.get $0) - (local.get $4) - ) - (block - (i32.store8 - (local.get $0) - (local.get $1) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (i32.sub - (local.get $0) - (local.get $2) - ) - ) - (func $_bitshift64Lshr (; 54 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (if - (i32.lt_s - (local.get $2) - (i32.const 32) - ) - (block - (global.set $tempRet0 - (i32.shr_u - (local.get $1) - (local.get $2) - ) - ) - (return - (i32.or - (i32.shl - (i32.and - (local.get $1) - (i32.sub - (i32.shl - (i32.const 1) - (local.get $2) - ) - (i32.const 1) - ) - ) - (i32.sub - (i32.const 32) - (local.get $2) - ) - ) - (i32.shr_u - (local.get $0) - (local.get $2) - ) - ) - ) - ) - ) - (global.set $tempRet0 - (i32.const 0) - ) - (i32.shr_u - (local.get $1) - (i32.sub - (local.get $2) - (i32.const 32) - ) - ) - ) - (func $_bitshift64Shl (; 55 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (if - (i32.lt_s - (local.get $2) - (i32.const 32) - ) - (block - (global.set $tempRet0 - (i32.or - (i32.shl - (local.get $1) - (local.get $2) - ) - (i32.shr_u - (i32.and - (i32.shl - (i32.sub - (i32.shl - (i32.const 1) - (local.get $2) - ) - (i32.const 1) - ) - (i32.sub - (i32.const 32) - (local.get $2) - ) - ) - (local.get $0) - ) - (i32.sub - (i32.const 32) - (local.get $2) - ) - ) - ) - ) - (return - (i32.shl - (local.get $0) - (local.get $2) - ) - ) - ) - ) - (global.set $tempRet0 - (i32.shl - (local.get $0) - (i32.sub - (local.get $2) - (i32.const 32) - ) - ) - ) - (i32.const 0) - ) - (func $_memcpy (; 56 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (if - (i32.ge_s - (local.get $2) - (i32.const 4096) - ) - (return - (call $_emscripten_memcpy_big - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - ) - (local.set $3 - (local.get $0) - ) - (if - (i32.eq - (i32.and - (local.get $0) - (i32.const 3) - ) - (i32.and - (local.get $1) - (i32.const 3) - ) - ) - (block - (loop $while-in - (if - (i32.and - (local.get $0) - (i32.const 3) - ) - (block - (if - (i32.eqz - (local.get $2) - ) - (return - (local.get $3) - ) - ) - (i32.store8 - (local.get $0) - (i32.load8_s - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (loop $while-in1 - (if - (i32.ge_s - (local.get $2) - (i32.const 4) - ) - (block - (i32.store - (local.get $0) - (i32.load - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 4) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - ) - (loop $while-in3 - (if - (i32.gt_s - (local.get $2) - (i32.const 0) - ) - (block - (i32.store8 - (local.get $0) - (i32.load8_s - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (local.get $3) - ) - (func $___udivdi3 (; 57 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $___udivmoddi4 - (local.get $0) - (local.get $1) - (local.get $2) - (i32.const 0) - (i32.const 0) - ) - ) - (func $___uremdi3 (; 58 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local.set $3 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (drop - (call $___udivmoddi4 - (local.get $0) - (local.get $1) - (local.get $2) - (i32.const 0) - (local.get $3) - ) - ) - (global.set $STACKTOP - (local.get $3) - ) - (global.set $tempRet0 - (i32.load offset=4 - (local.get $3) - ) - ) - (i32.load - (local.get $3) - ) - ) - (func $___udivmoddi4 (; 59 ;) (; has Stack IR ;) (param $xl i32) (param $xh i32) (param $yl i32) (param $yh i32) (param $r i32) (result i32) - (local $x64 i64) - (local $y64 i64) - (local.set $x64 - (i64.or - (i64.extend_i32_u - (local.get $xl) - ) - (i64.shl - (i64.extend_i32_u - (local.get $xh) - ) - (i64.const 32) - ) - ) - ) - (local.set $y64 - (i64.or - (i64.extend_i32_u - (local.get $yl) - ) - (i64.shl - (i64.extend_i32_u - (local.get $yh) - ) - (i64.const 32) - ) - ) - ) - (if - (local.get $r) - (i64.store - (local.get $r) - (i64.rem_u - (local.get $x64) - (local.get $y64) - ) - ) - ) - (local.set $x64 - (i64.div_u - (local.get $x64) - (local.get $y64) - ) - ) - (global.set $tempRet0 - (i32.wrap_i64 - (i64.shr_u - (local.get $x64) - (i64.const 32) - ) - ) - ) - (i32.wrap_i64 - (local.get $x64) - ) - ) - (func $dynCall_ii (; 60 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (call_indirect (type $i32_=>_i32) - (local.get $1) - (i32.and - (local.get $0) - (i32.const 1) - ) - ) - ) - (func $dynCall_iiii (; 61 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $1) - (local.get $2) - (local.get $3) - (i32.add - (i32.and - (local.get $0) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (func $dynCall_vi (; 62 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (call_indirect (type $i32_=>_none) - (local.get $1) - (i32.add - (i32.and - (local.get $0) - (i32.const 7) - ) - (i32.const 10) - ) - ) - ) - (func $b0 (; 63 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (call $nullFunc_ii - (i32.const 0) - ) - (i32.const 0) - ) - (func $b1 (; 64 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $nullFunc_iiii - (i32.const 1) - ) - (i32.const 0) - ) - (func $b2 (; 65 ;) (; has Stack IR ;) (param $0 i32) - (call $nullFunc_vi - (i32.const 2) - ) - ) -) diff -Nru binaryen-91/test/emcc_hello_world.fromasm.imprecise.no-opts binaryen-99/test/emcc_hello_world.fromasm.imprecise.no-opts --- binaryen-91/test/emcc_hello_world.fromasm.imprecise.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/emcc_hello_world.fromasm.imprecise.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,31571 +0,0 @@ -(module - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 18 18 funcref)) - (elem (global.get $__table_base) $b0 $___stdio_close $b1 $b1 $___stdout_write $___stdio_seek $___stdio_write $b1 $b1 $b1 $b2 $b2 $b2 $b2 $b2 $_cleanup $b2 $b2) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) - (import "env" "ABORT" (global $ABORT$asm2wasm$import i32)) - (import "env" "cttz_i8" (global $cttz_i8$asm2wasm$import i32)) - (import "global" "NaN" (global $nan$asm2wasm$import f64)) - (import "global" "Infinity" (global $inf$asm2wasm$import f64)) - (import "env" "abort" (func $abort)) - (import "env" "nullFunc_ii" (func $nullFunc_ii (param i32))) - (import "env" "nullFunc_iiii" (func $nullFunc_iiii (param i32))) - (import "env" "nullFunc_vi" (func $nullFunc_vi (param i32))) - (import "env" "_pthread_cleanup_pop" (func $_pthread_cleanup_pop (param i32))) - (import "env" "___lock" (func $___lock (param i32))) - (import "env" "_pthread_self" (func $_pthread_self (result i32))) - (import "env" "_abort" (func $_abort)) - (import "env" "___syscall6" (func $___syscall6 (param i32 i32) (result i32))) - (import "env" "_sbrk" (func $_sbrk (param i32) (result i32))) - (import "env" "_time" (func $_time (param i32) (result i32))) - (import "env" "_emscripten_memcpy_big" (func $_emscripten_memcpy_big (param i32 i32 i32) (result i32))) - (import "env" "___syscall54" (func $___syscall54 (param i32 i32) (result i32))) - (import "env" "___unlock" (func $___unlock (param i32))) - (import "env" "___syscall140" (func $___syscall140 (param i32 i32) (result i32))) - (import "env" "_pthread_cleanup_push" (func $_pthread_cleanup_push (param i32 i32))) - (import "env" "_sysconf" (func $_sysconf (param i32) (result i32))) - (import "env" "___syscall146" (func $___syscall146 (param i32 i32) (result i32))) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (global $STACK_MAX (mut i32) (global.get $STACK_MAX$asm2wasm$import)) - (global $tempDoublePtr (mut i32) (global.get $tempDoublePtr$asm2wasm$import)) - (global $ABORT (mut i32) (global.get $ABORT$asm2wasm$import)) - (global $cttz_i8 (mut i32) (global.get $cttz_i8$asm2wasm$import)) - (global $__THREW__ (mut i32) (i32.const 0)) - (global $threwValue (mut i32) (i32.const 0)) - (global $setjmpId (mut i32) (i32.const 0)) - (global $undef (mut i32) (i32.const 0)) - (global $nan (mut f64) (global.get $nan$asm2wasm$import)) - (global $inf (mut f64) (global.get $inf$asm2wasm$import)) - (global $tempInt (mut i32) (i32.const 0)) - (global $tempBigInt (mut i32) (i32.const 0)) - (global $tempBigIntP (mut i32) (i32.const 0)) - (global $tempBigIntS (mut i32) (i32.const 0)) - (global $tempBigIntR (mut f64) (f64.const 0)) - (global $tempBigIntI (mut i32) (i32.const 0)) - (global $tempBigIntD (mut i32) (i32.const 0)) - (global $tempValue (mut i32) (i32.const 0)) - (global $tempDouble (mut f64) (f64.const 0)) - (global $tempRet0 (mut i32) (i32.const 0)) - (global $tempRet1 (mut i32) (i32.const 0)) - (global $tempRet2 (mut i32) (i32.const 0)) - (global $tempRet3 (mut i32) (i32.const 0)) - (global $tempRet4 (mut i32) (i32.const 0)) - (global $tempRet5 (mut i32) (i32.const 0)) - (global $tempRet6 (mut i32) (i32.const 0)) - (global $tempRet7 (mut i32) (i32.const 0)) - (global $tempRet8 (mut i32) (i32.const 0)) - (global $tempRet9 (mut i32) (i32.const 0)) - (global $tempFloat (mut f64) (f64.const 0)) - (export "_i64Subtract" (func $_i64Subtract)) - (export "_free" (func $_free)) - (export "_main" (func $_main)) - (export "_i64Add" (func $_i64Add)) - (export "_memset" (func $_memset)) - (export "_malloc" (func $_malloc)) - (export "_memcpy" (func $_memcpy)) - (export "_bitshift64Lshr" (func $_bitshift64Lshr)) - (export "_fflush" (func $_fflush)) - (export "___errno_location" (func $___errno_location)) - (export "_bitshift64Shl" (func $_bitshift64Shl)) - (export "runPostSets" (func $runPostSets)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackSave" (func $stackSave)) - (export "stackRestore" (func $stackRestore)) - (export "establishStackSpace" (func $establishStackSpace)) - (export "setThrew" (func $setThrew)) - (export "setTempRet0" (func $setTempRet0)) - (export "getTempRet0" (func $getTempRet0)) - (export "dynCall_ii" (func $dynCall_ii)) - (export "dynCall_iiii" (func $dynCall_iiii)) - (export "dynCall_vi" (func $dynCall_vi)) - (export "___udivmoddi4" (func $___udivmoddi4)) - (func $stackAlloc (; 18 ;) (param $size i32) (result i32) - (local $ret i32) - (local.set $ret - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (local.get $size) - ) - ) - (global.set $STACKTOP - (i32.and - (i32.add - (global.get $STACKTOP) - (i32.const 15) - ) - (i32.const -16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (return - (local.get $ret) - ) - ) - (func $stackSave (; 19 ;) (result i32) - (return - (global.get $STACKTOP) - ) - ) - (func $stackRestore (; 20 ;) (param $top i32) - (global.set $STACKTOP - (local.get $top) - ) - ) - (func $establishStackSpace (; 21 ;) (param $stackBase i32) (param $stackMax i32) - (global.set $STACKTOP - (local.get $stackBase) - ) - (global.set $STACK_MAX - (local.get $stackMax) - ) - ) - (func $setThrew (; 22 ;) (param $threw i32) (param $value i32) - (if - (i32.eq - (global.get $__THREW__) - (i32.const 0) - ) - (block - (global.set $__THREW__ - (local.get $threw) - ) - (global.set $threwValue - (local.get $value) - ) - ) - ) - ) - (func $copyTempFloat (; 23 ;) (param $ptr i32) - (i32.store8 - (global.get $tempDoublePtr) - (i32.load8_s - (local.get $ptr) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 1) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 1) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 2) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 2) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 3) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 3) - ) - ) - ) - ) - (func $copyTempDouble (; 24 ;) (param $ptr i32) - (i32.store8 - (global.get $tempDoublePtr) - (i32.load8_s - (local.get $ptr) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 1) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 1) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 2) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 2) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 3) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 3) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 4) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 4) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 5) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 5) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 6) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 6) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 7) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 7) - ) - ) - ) - ) - (func $setTempRet0 (; 25 ;) (param $value i32) - (global.set $tempRet0 - (local.get $value) - ) - ) - (func $getTempRet0 (; 26 ;) (result i32) - (return - (global.get $tempRet0) - ) - ) - (func $_main (; 27 ;) (result i32) - (local $$retval i32) - (local $$vararg_buffer i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$vararg_buffer - (local.get $sp) - ) - (local.set $$retval - (i32.const 0) - ) - (drop - (call $_printf - (i32.const 672) - (local.get $$vararg_buffer) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (i32.const 0) - ) - ) - (func $_frexp (; 28 ;) (param $$x f64) (param $$e i32) (result f64) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$7 f64) - (local $$call f64) - (local $$conv i32) - (local $$mul f64) - (local $$retval$0 f64) - (local $$storemerge i32) - (local $$sub i32) - (local $$sub8 i32) - (local $$tobool1 i32) - (local $$x$addr$0 f64) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (f64.store - (global.get $tempDoublePtr) - (local.get $$x) - ) - (local.set $$0 - (i32.load - (global.get $tempDoublePtr) - ) - ) - (local.set $$1 - (i32.load - (i32.add - (global.get $tempDoublePtr) - (i32.const 4) - ) - ) - ) - (local.set $$2 - (call $_bitshift64Lshr - (local.get $$0) - (local.get $$1) - (i32.const 52) - ) - ) - (local.set $$3 - (global.get $tempRet0) - ) - (local.set $$conv - (i32.and - (local.get $$2) - (i32.const 2047) - ) - ) - (block $switch - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case0 $switch-default - (i32.sub - (local.get $$conv) - (i32.const 0) - ) - ) - ) - (block - (local.set $$tobool1 - (f64.ne - (local.get $$x) - (f64.const 0) - ) - ) - (if - (local.get $$tobool1) - (block - (local.set $$mul - (f64.mul - (local.get $$x) - (f64.const 18446744073709551615) - ) - ) - (local.set $$call - (call $_frexp - (local.get $$mul) - (local.get $$e) - ) - ) - (local.set $$4 - (i32.load - (local.get $$e) - ) - ) - (local.set $$sub - (i32.add - (local.get $$4) - (i32.const -64) - ) - ) - (local.set $$storemerge - (local.get $$sub) - ) - (local.set $$x$addr$0 - (local.get $$call) - ) - ) - (block - (local.set $$storemerge - (i32.const 0) - ) - (local.set $$x$addr$0 - (local.get $$x) - ) - ) - ) - (i32.store - (local.get $$e) - (local.get $$storemerge) - ) - (local.set $$retval$0 - (local.get $$x$addr$0) - ) - (br $switch) - ) - ) - (block - (local.set $$retval$0 - (local.get $$x) - ) - (br $switch) - ) - ) - (block - (local.set $$sub8 - (i32.add - (local.get $$conv) - (i32.const -1022) - ) - ) - (i32.store - (local.get $$e) - (local.get $$sub8) - ) - (local.set $$5 - (i32.and - (local.get $$1) - (i32.const -2146435073) - ) - ) - (local.set $$6 - (i32.or - (local.get $$5) - (i32.const 1071644672) - ) - ) - (i32.store - (global.get $tempDoublePtr) - (local.get $$0) - ) - (i32.store - (i32.add - (global.get $tempDoublePtr) - (i32.const 4) - ) - (local.get $$6) - ) - (local.set $$7 - (f64.load - (global.get $tempDoublePtr) - ) - ) - (local.set $$retval$0 - (local.get $$7) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_frexpl (; 29 ;) (param $$x f64) (param $$e i32) (result f64) - (local $$call f64) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$call - (call $_frexp - (local.get $$x) - (local.get $$e) - ) - ) - (return - (local.get $$call) - ) - ) - (func $_strerror (; 30 ;) (param $$e i32) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$arrayidx i32) - (local $$cmp i32) - (local $$conv i32) - (local $$dec i32) - (local $$i$012 i32) - (local $$i$012$lcssa i32) - (local $$i$111 i32) - (local $$inc i32) - (local $$incdec$ptr i32) - (local $$incdec$ptr$lcssa i32) - (local $$s$0$lcssa i32) - (local $$s$010 i32) - (local $$s$1 i32) - (local $$tobool i32) - (local $$tobool5 i32) - (local $$tobool5$9 i32) - (local $$tobool8 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$i$012 - (i32.const 0) - ) - (loop $while-in - (block $while-out - (local.set $$arrayidx - (i32.add - (i32.const 687) - (local.get $$i$012) - ) - ) - (local.set $$0 - (i32.load8_s - (local.get $$arrayidx) - ) - ) - (local.set $$conv - (i32.and - (local.get $$0) - (i32.const 255) - ) - ) - (local.set $$cmp - (i32.eq - (local.get $$conv) - (local.get $$e) - ) - ) - (if - (local.get $$cmp) - (block - (local.set $$i$012$lcssa - (local.get $$i$012) - ) - (local.set $label - (i32.const 2) - ) - (br $while-out) - ) - ) - (local.set $$inc - (i32.add - (local.get $$i$012) - (i32.const 1) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$inc) - (i32.const 87) - ) - ) - (if - (local.get $$tobool) - (block - (local.set $$i$111 - (i32.const 87) - ) - (local.set $$s$010 - (i32.const 775) - ) - (local.set $label - (i32.const 5) - ) - (br $while-out) - ) - (local.set $$i$012 - (local.get $$inc) - ) - ) - (br $while-in) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 2) - ) - (block - (local.set $$tobool5$9 - (i32.eq - (local.get $$i$012$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$tobool5$9) - (local.set $$s$0$lcssa - (i32.const 775) - ) - (block - (local.set $$i$111 - (local.get $$i$012$lcssa) - ) - (local.set $$s$010 - (i32.const 775) - ) - (local.set $label - (i32.const 5) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 5) - ) - (loop $while-in1 - (block $while-out0 - (local.set $label - (i32.const 0) - ) - (local.set $$s$1 - (local.get $$s$010) - ) - (loop $while-in3 - (block $while-out2 - (local.set $$1 - (i32.load8_s - (local.get $$s$1) - ) - ) - (local.set $$tobool8 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$1) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - ) - (local.set $$incdec$ptr - (i32.add - (local.get $$s$1) - (i32.const 1) - ) - ) - (if - (local.get $$tobool8) - (block - (local.set $$incdec$ptr$lcssa - (local.get $$incdec$ptr) - ) - (br $while-out2) - ) - (local.set $$s$1 - (local.get $$incdec$ptr) - ) - ) - (br $while-in3) - ) - ) - (local.set $$dec - (i32.add - (local.get $$i$111) - (i32.const -1) - ) - ) - (local.set $$tobool5 - (i32.eq - (local.get $$dec) - (i32.const 0) - ) - ) - (if - (local.get $$tobool5) - (block - (local.set $$s$0$lcssa - (local.get $$incdec$ptr$lcssa) - ) - (br $while-out0) - ) - (block - (local.set $$i$111 - (local.get $$dec) - ) - (local.set $$s$010 - (local.get $$incdec$ptr$lcssa) - ) - (local.set $label - (i32.const 5) - ) - ) - ) - (br $while-in1) - ) - ) - ) - (return - (local.get $$s$0$lcssa) - ) - ) - (func $___errno_location (; 31 ;) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$call$i i32) - (local $$errno_ptr i32) - (local $$retval$0 i32) - (local $$tobool i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$0 - (i32.load - (i32.const 16) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$0) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (local.set $$retval$0 - (i32.const 60) - ) - (block - (local.set $$call$i - (call $_pthread_self) - ) - (local.set $$errno_ptr - (i32.add - (local.get $$call$i) - (i32.const 60) - ) - ) - (local.set $$1 - (i32.load - (local.get $$errno_ptr) - ) - ) - (local.set $$retval$0 - (local.get $$1) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $___stdio_close (; 32 ;) (param $$f i32) (result i32) - (local $$0 i32) - (local $$call i32) - (local $$call1 i32) - (local $$fd i32) - (local $$vararg_buffer i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$vararg_buffer - (local.get $sp) - ) - (local.set $$fd - (i32.add - (local.get $$f) - (i32.const 60) - ) - ) - (local.set $$0 - (i32.load - (local.get $$fd) - ) - ) - (i32.store - (local.get $$vararg_buffer) - (local.get $$0) - ) - (local.set $$call - (call $___syscall6 - (i32.const 6) - (local.get $$vararg_buffer) - ) - ) - (local.set $$call1 - (call $___syscall_ret - (local.get $$call) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (local.get $$call1) - ) - ) - (func $___stdout_write (; 33 ;) (param $$f i32) (param $$buf i32) (param $$len i32) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$and i32) - (local $$call i32) - (local $$call3 i32) - (local $$fd i32) - (local $$lbf i32) - (local $$tio i32) - (local $$tobool i32) - (local $$tobool2 i32) - (local $$vararg_buffer i32) - (local $$vararg_ptr1 i32) - (local $$vararg_ptr2 i32) - (local $$write i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 80) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$vararg_buffer - (local.get $sp) - ) - (local.set $$tio - (i32.add - (local.get $sp) - (i32.const 12) - ) - ) - (local.set $$write - (i32.add - (local.get $$f) - (i32.const 36) - ) - ) - (i32.store - (local.get $$write) - (i32.const 4) - ) - (local.set $$0 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and - (i32.and - (local.get $$0) - (i32.const 64) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$and) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (block - (local.set $$fd - (i32.add - (local.get $$f) - (i32.const 60) - ) - ) - (local.set $$1 - (i32.load - (local.get $$fd) - ) - ) - (i32.store - (local.get $$vararg_buffer) - (local.get $$1) - ) - (local.set $$vararg_ptr1 - (i32.add - (local.get $$vararg_buffer) - (i32.const 4) - ) - ) - (i32.store - (local.get $$vararg_ptr1) - (i32.const 21505) - ) - (local.set $$vararg_ptr2 - (i32.add - (local.get $$vararg_buffer) - (i32.const 8) - ) - ) - (i32.store - (local.get $$vararg_ptr2) - (local.get $$tio) - ) - (local.set $$call - (call $___syscall54 - (i32.const 54) - (local.get $$vararg_buffer) - ) - ) - (local.set $$tobool2 - (i32.eq - (local.get $$call) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool2) - ) - (block - (local.set $$lbf - (i32.add - (local.get $$f) - (i32.const 75) - ) - ) - (i32.store8 - (local.get $$lbf) - (i32.const -1) - ) - ) - ) - ) - ) - (local.set $$call3 - (call $___stdio_write - (local.get $$f) - (local.get $$buf) - (local.get $$len) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (local.get $$call3) - ) - ) - (func $___stdio_seek (; 34 ;) (param $$f i32) (param $$off i32) (param $$whence i32) (result i32) - (local $$$pre i32) - (local $$0 i32) - (local $$1 i32) - (local $$call i32) - (local $$call1 i32) - (local $$cmp i32) - (local $$fd i32) - (local $$ret i32) - (local $$vararg_buffer i32) - (local $$vararg_ptr1 i32) - (local $$vararg_ptr2 i32) - (local $$vararg_ptr3 i32) - (local $$vararg_ptr4 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 32) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$vararg_buffer - (local.get $sp) - ) - (local.set $$ret - (i32.add - (local.get $sp) - (i32.const 20) - ) - ) - (local.set $$fd - (i32.add - (local.get $$f) - (i32.const 60) - ) - ) - (local.set $$0 - (i32.load - (local.get $$fd) - ) - ) - (i32.store - (local.get $$vararg_buffer) - (local.get $$0) - ) - (local.set $$vararg_ptr1 - (i32.add - (local.get $$vararg_buffer) - (i32.const 4) - ) - ) - (i32.store - (local.get $$vararg_ptr1) - (i32.const 0) - ) - (local.set $$vararg_ptr2 - (i32.add - (local.get $$vararg_buffer) - (i32.const 8) - ) - ) - (i32.store - (local.get $$vararg_ptr2) - (local.get $$off) - ) - (local.set $$vararg_ptr3 - (i32.add - (local.get $$vararg_buffer) - (i32.const 12) - ) - ) - (i32.store - (local.get $$vararg_ptr3) - (local.get $$ret) - ) - (local.set $$vararg_ptr4 - (i32.add - (local.get $$vararg_buffer) - (i32.const 16) - ) - ) - (i32.store - (local.get $$vararg_ptr4) - (local.get $$whence) - ) - (local.set $$call - (call $___syscall140 - (i32.const 140) - (local.get $$vararg_buffer) - ) - ) - (local.set $$call1 - (call $___syscall_ret - (local.get $$call) - ) - ) - (local.set $$cmp - (i32.lt_s - (local.get $$call1) - (i32.const 0) - ) - ) - (if - (local.get $$cmp) - (block - (i32.store - (local.get $$ret) - (i32.const -1) - ) - (local.set $$1 - (i32.const -1) - ) - ) - (block - (local.set $$$pre - (i32.load - (local.get $$ret) - ) - ) - (local.set $$1 - (local.get $$$pre) - ) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (local.get $$1) - ) - ) - (func $_fflush (; 35 ;) (param $$f i32) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$call i32) - (local $$call1 i32) - (local $$call1$18 i32) - (local $$call16 i32) - (local $$call22 i32) - (local $$call7 i32) - (local $$cmp i32) - (local $$cmp14 i32) - (local $$cmp20 i32) - (local $$cond10 i32) - (local $$cond19 i32) - (local $$f$addr$0 i32) - (local $$f$addr$0$19 i32) - (local $$f$addr$022 i32) - (local $$lock i32) - (local $$lock13 i32) - (local $$next i32) - (local $$or i32) - (local $$phitmp i32) - (local $$r$0$lcssa i32) - (local $$r$021 i32) - (local $$r$1 i32) - (local $$retval$0 i32) - (local $$tobool i32) - (local $$tobool11 i32) - (local $$tobool11$20 i32) - (local $$tobool24 i32) - (local $$tobool5 i32) - (local $$wbase i32) - (local $$wpos i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$tobool - (i32.eq - (local.get $$f) - (i32.const 0) - ) - ) - (block $do-once - (if - (local.get $$tobool) - (block - (local.set $$1 - (i32.load - (i32.const 12) - ) - ) - (local.set $$tobool5 - (i32.eq - (local.get $$1) - (i32.const 0) - ) - ) - (if - (local.get $$tobool5) - (local.set $$cond10 - (i32.const 0) - ) - (block - (local.set $$2 - (i32.load - (i32.const 12) - ) - ) - (local.set $$call7 - (call $_fflush - (local.get $$2) - ) - ) - (local.set $$cond10 - (local.get $$call7) - ) - ) - ) - (call $___lock - (i32.const 44) - ) - (local.set $$f$addr$0$19 - (i32.load - (i32.const 40) - ) - ) - (local.set $$tobool11$20 - (i32.eq - (local.get $$f$addr$0$19) - (i32.const 0) - ) - ) - (if - (local.get $$tobool11$20) - (local.set $$r$0$lcssa - (local.get $$cond10) - ) - (block - (local.set $$f$addr$022 - (local.get $$f$addr$0$19) - ) - (local.set $$r$021 - (local.get $$cond10) - ) - (loop $while-in - (block $while-out - (local.set $$lock13 - (i32.add - (local.get $$f$addr$022) - (i32.const 76) - ) - ) - (local.set $$3 - (i32.load - (local.get $$lock13) - ) - ) - (local.set $$cmp14 - (i32.gt_s - (local.get $$3) - (i32.const -1) - ) - ) - (if - (local.get $$cmp14) - (block - (local.set $$call16 - (call $___lockfile - (local.get $$f$addr$022) - ) - ) - (local.set $$cond19 - (local.get $$call16) - ) - ) - (local.set $$cond19 - (i32.const 0) - ) - ) - (local.set $$wpos - (i32.add - (local.get $$f$addr$022) - (i32.const 20) - ) - ) - (local.set $$4 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$wbase - (i32.add - (local.get $$f$addr$022) - (i32.const 28) - ) - ) - (local.set $$5 - (i32.load - (local.get $$wbase) - ) - ) - (local.set $$cmp20 - (i32.gt_u - (local.get $$4) - (local.get $$5) - ) - ) - (if - (local.get $$cmp20) - (block - (local.set $$call22 - (call $___fflush_unlocked - (local.get $$f$addr$022) - ) - ) - (local.set $$or - (i32.or - (local.get $$call22) - (local.get $$r$021) - ) - ) - (local.set $$r$1 - (local.get $$or) - ) - ) - (local.set $$r$1 - (local.get $$r$021) - ) - ) - (local.set $$tobool24 - (i32.eq - (local.get $$cond19) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool24) - ) - (call $___unlockfile - (local.get $$f$addr$022) - ) - ) - (local.set $$next - (i32.add - (local.get $$f$addr$022) - (i32.const 56) - ) - ) - (local.set $$f$addr$0 - (i32.load - (local.get $$next) - ) - ) - (local.set $$tobool11 - (i32.eq - (local.get $$f$addr$0) - (i32.const 0) - ) - ) - (if - (local.get $$tobool11) - (block - (local.set $$r$0$lcssa - (local.get $$r$1) - ) - (br $while-out) - ) - (block - (local.set $$f$addr$022 - (local.get $$f$addr$0) - ) - (local.set $$r$021 - (local.get $$r$1) - ) - ) - ) - (br $while-in) - ) - ) - ) - ) - (call $___unlock - (i32.const 44) - ) - (local.set $$retval$0 - (local.get $$r$0$lcssa) - ) - ) - (block - (local.set $$lock - (i32.add - (local.get $$f) - (i32.const 76) - ) - ) - (local.set $$0 - (i32.load - (local.get $$lock) - ) - ) - (local.set $$cmp - (i32.gt_s - (local.get $$0) - (i32.const -1) - ) - ) - (if - (i32.eqz - (local.get $$cmp) - ) - (block - (local.set $$call1$18 - (call $___fflush_unlocked - (local.get $$f) - ) - ) - (local.set $$retval$0 - (local.get $$call1$18) - ) - (br $do-once) - ) - ) - (local.set $$call - (call $___lockfile - (local.get $$f) - ) - ) - (local.set $$phitmp - (i32.eq - (local.get $$call) - (i32.const 0) - ) - ) - (local.set $$call1 - (call $___fflush_unlocked - (local.get $$f) - ) - ) - (if - (local.get $$phitmp) - (local.set $$retval$0 - (local.get $$call1) - ) - (block - (call $___unlockfile - (local.get $$f) - ) - (local.set $$retval$0 - (local.get $$call1) - ) - ) - ) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_printf (; 36 ;) (param $$fmt i32) (param $$varargs i32) (result i32) - (local $$0 i32) - (local $$ap i32) - (local $$call i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$ap - (local.get $sp) - ) - (i32.store - (local.get $$ap) - (local.get $$varargs) - ) - (local.set $$0 - (i32.load - (i32.const 8) - ) - ) - (local.set $$call - (call $_vfprintf - (local.get $$0) - (local.get $$fmt) - (local.get $$ap) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (local.get $$call) - ) - ) - (func $___lockfile (; 37 ;) (param $$f i32) (result i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (return - (i32.const 0) - ) - ) - (func $___unlockfile (; 38 ;) (param $$f i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (return) - ) - (func $___stdio_write (; 39 ;) (param $$f i32) (param $$buf i32) (param $$len i32) (result i32) - (local $$$pre i32) - (local $$0 i32) - (local $$1 i32) - (local $$10 i32) - (local $$11 i32) - (local $$12 i32) - (local $$13 i32) - (local $$14 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$7 i32) - (local $$8 i32) - (local $$9 i32) - (local $$add i32) - (local $$add$ptr i32) - (local $$add$ptr41 i32) - (local $$add$ptr46 i32) - (local $$buf31 i32) - (local $$buf_size i32) - (local $$call i32) - (local $$call10 i32) - (local $$call7 i32) - (local $$call9 i32) - (local $$cmp i32) - (local $$cmp17 i32) - (local $$cmp22 i32) - (local $$cmp29 i32) - (local $$cmp38 i32) - (local $$cnt$0 i32) - (local $$cnt$1 i32) - (local $$dec i32) - (local $$fd8 i32) - (local $$incdec$ptr i32) - (local $$iov$0 i32) - (local $$iov$0$lcssa57 i32) - (local $$iov$1 i32) - (local $$iov_base2 i32) - (local $$iov_len i32) - (local $$iov_len24 i32) - (local $$iov_len28 i32) - (local $$iov_len3 i32) - (local $$iov_len50 i32) - (local $$iov_len50$phi$trans$insert i32) - (local $$iovcnt$0 i32) - (local $$iovcnt$0$lcssa58 i32) - (local $$iovcnt$1 i32) - (local $$iovs i32) - (local $$or i32) - (local $$rem$0 i32) - (local $$retval$0 i32) - (local $$sub i32) - (local $$sub$ptr$sub i32) - (local $$sub26 i32) - (local $$sub36 i32) - (local $$sub51 i32) - (local $$tobool i32) - (local $$vararg_buffer i32) - (local $$vararg_buffer3 i32) - (local $$vararg_ptr1 i32) - (local $$vararg_ptr2 i32) - (local $$vararg_ptr6 i32) - (local $$vararg_ptr7 i32) - (local $$wbase i32) - (local $$wend i32) - (local $$wend19 i32) - (local $$wpos i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 48) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$vararg_buffer3 - (i32.add - (local.get $sp) - (i32.const 16) - ) - ) - (local.set $$vararg_buffer - (local.get $sp) - ) - (local.set $$iovs - (i32.add - (local.get $sp) - (i32.const 32) - ) - ) - (local.set $$wbase - (i32.add - (local.get $$f) - (i32.const 28) - ) - ) - (local.set $$0 - (i32.load - (local.get $$wbase) - ) - ) - (i32.store - (local.get $$iovs) - (local.get $$0) - ) - (local.set $$iov_len - (i32.add - (local.get $$iovs) - (i32.const 4) - ) - ) - (local.set $$wpos - (i32.add - (local.get $$f) - (i32.const 20) - ) - ) - (local.set $$1 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$sub$ptr$sub - (i32.sub - (local.get $$1) - (local.get $$0) - ) - ) - (i32.store - (local.get $$iov_len) - (local.get $$sub$ptr$sub) - ) - (local.set $$iov_base2 - (i32.add - (local.get $$iovs) - (i32.const 8) - ) - ) - (i32.store - (local.get $$iov_base2) - (local.get $$buf) - ) - (local.set $$iov_len3 - (i32.add - (local.get $$iovs) - (i32.const 12) - ) - ) - (i32.store - (local.get $$iov_len3) - (local.get $$len) - ) - (local.set $$add - (i32.add - (local.get $$sub$ptr$sub) - (local.get $$len) - ) - ) - (local.set $$fd8 - (i32.add - (local.get $$f) - (i32.const 60) - ) - ) - (local.set $$buf31 - (i32.add - (local.get $$f) - (i32.const 44) - ) - ) - (local.set $$iov$0 - (local.get $$iovs) - ) - (local.set $$iovcnt$0 - (i32.const 2) - ) - (local.set $$rem$0 - (local.get $$add) - ) - (loop $while-in - (block $while-out - (local.set $$2 - (i32.load - (i32.const 16) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$2) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (block - (local.set $$4 - (i32.load - (local.get $$fd8) - ) - ) - (i32.store - (local.get $$vararg_buffer3) - (local.get $$4) - ) - (local.set $$vararg_ptr6 - (i32.add - (local.get $$vararg_buffer3) - (i32.const 4) - ) - ) - (i32.store - (local.get $$vararg_ptr6) - (local.get $$iov$0) - ) - (local.set $$vararg_ptr7 - (i32.add - (local.get $$vararg_buffer3) - (i32.const 8) - ) - ) - (i32.store - (local.get $$vararg_ptr7) - (local.get $$iovcnt$0) - ) - (local.set $$call9 - (call $___syscall146 - (i32.const 146) - (local.get $$vararg_buffer3) - ) - ) - (local.set $$call10 - (call $___syscall_ret - (local.get $$call9) - ) - ) - (local.set $$cnt$0 - (local.get $$call10) - ) - ) - (block - (call $_pthread_cleanup_push - (i32.const 5) - (local.get $$f) - ) - (local.set $$3 - (i32.load - (local.get $$fd8) - ) - ) - (i32.store - (local.get $$vararg_buffer) - (local.get $$3) - ) - (local.set $$vararg_ptr1 - (i32.add - (local.get $$vararg_buffer) - (i32.const 4) - ) - ) - (i32.store - (local.get $$vararg_ptr1) - (local.get $$iov$0) - ) - (local.set $$vararg_ptr2 - (i32.add - (local.get $$vararg_buffer) - (i32.const 8) - ) - ) - (i32.store - (local.get $$vararg_ptr2) - (local.get $$iovcnt$0) - ) - (local.set $$call - (call $___syscall146 - (i32.const 146) - (local.get $$vararg_buffer) - ) - ) - (local.set $$call7 - (call $___syscall_ret - (local.get $$call) - ) - ) - (call $_pthread_cleanup_pop - (i32.const 0) - ) - (local.set $$cnt$0 - (local.get $$call7) - ) - ) - ) - (local.set $$cmp - (i32.eq - (local.get $$rem$0) - (local.get $$cnt$0) - ) - ) - (if - (local.get $$cmp) - (block - (local.set $label - (i32.const 6) - ) - (br $while-out) - ) - ) - (local.set $$cmp17 - (i32.lt_s - (local.get $$cnt$0) - (i32.const 0) - ) - ) - (if - (local.get $$cmp17) - (block - (local.set $$iov$0$lcssa57 - (local.get $$iov$0) - ) - (local.set $$iovcnt$0$lcssa58 - (local.get $$iovcnt$0) - ) - (local.set $label - (i32.const 8) - ) - (br $while-out) - ) - ) - (local.set $$sub26 - (i32.sub - (local.get $$rem$0) - (local.get $$cnt$0) - ) - ) - (local.set $$iov_len28 - (i32.add - (local.get $$iov$0) - (i32.const 4) - ) - ) - (local.set $$10 - (i32.load - (local.get $$iov_len28) - ) - ) - (local.set $$cmp29 - (i32.gt_u - (local.get $$cnt$0) - (local.get $$10) - ) - ) - (if - (local.get $$cmp29) - (block - (local.set $$11 - (i32.load - (local.get $$buf31) - ) - ) - (i32.store - (local.get $$wbase) - (local.get $$11) - ) - (i32.store - (local.get $$wpos) - (local.get $$11) - ) - (local.set $$sub36 - (i32.sub - (local.get $$cnt$0) - (local.get $$10) - ) - ) - (local.set $$incdec$ptr - (i32.add - (local.get $$iov$0) - (i32.const 8) - ) - ) - (local.set $$dec - (i32.add - (local.get $$iovcnt$0) - (i32.const -1) - ) - ) - (local.set $$iov_len50$phi$trans$insert - (i32.add - (local.get $$iov$0) - (i32.const 12) - ) - ) - (local.set $$$pre - (i32.load - (local.get $$iov_len50$phi$trans$insert) - ) - ) - (local.set $$14 - (local.get $$$pre) - ) - (local.set $$cnt$1 - (local.get $$sub36) - ) - (local.set $$iov$1 - (local.get $$incdec$ptr) - ) - (local.set $$iovcnt$1 - (local.get $$dec) - ) - ) - (block - (local.set $$cmp38 - (i32.eq - (local.get $$iovcnt$0) - (i32.const 2) - ) - ) - (if - (local.get $$cmp38) - (block - (local.set $$12 - (i32.load - (local.get $$wbase) - ) - ) - (local.set $$add$ptr41 - (i32.add - (local.get $$12) - (local.get $$cnt$0) - ) - ) - (i32.store - (local.get $$wbase) - (local.get $$add$ptr41) - ) - (local.set $$14 - (local.get $$10) - ) - (local.set $$cnt$1 - (local.get $$cnt$0) - ) - (local.set $$iov$1 - (local.get $$iov$0) - ) - (local.set $$iovcnt$1 - (i32.const 2) - ) - ) - (block - (local.set $$14 - (local.get $$10) - ) - (local.set $$cnt$1 - (local.get $$cnt$0) - ) - (local.set $$iov$1 - (local.get $$iov$0) - ) - (local.set $$iovcnt$1 - (local.get $$iovcnt$0) - ) - ) - ) - ) - ) - (local.set $$13 - (i32.load - (local.get $$iov$1) - ) - ) - (local.set $$add$ptr46 - (i32.add - (local.get $$13) - (local.get $$cnt$1) - ) - ) - (i32.store - (local.get $$iov$1) - (local.get $$add$ptr46) - ) - (local.set $$iov_len50 - (i32.add - (local.get $$iov$1) - (i32.const 4) - ) - ) - (local.set $$sub51 - (i32.sub - (local.get $$14) - (local.get $$cnt$1) - ) - ) - (i32.store - (local.get $$iov_len50) - (local.get $$sub51) - ) - (local.set $$iov$0 - (local.get $$iov$1) - ) - (local.set $$iovcnt$0 - (local.get $$iovcnt$1) - ) - (local.set $$rem$0 - (local.get $$sub26) - ) - (br $while-in) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 6) - ) - (block - (local.set $$5 - (i32.load - (local.get $$buf31) - ) - ) - (local.set $$buf_size - (i32.add - (local.get $$f) - (i32.const 48) - ) - ) - (local.set $$6 - (i32.load - (local.get $$buf_size) - ) - ) - (local.set $$add$ptr - (i32.add - (local.get $$5) - (local.get $$6) - ) - ) - (local.set $$wend - (i32.add - (local.get $$f) - (i32.const 16) - ) - ) - (i32.store - (local.get $$wend) - (local.get $$add$ptr) - ) - (local.set $$7 - (local.get $$5) - ) - (i32.store - (local.get $$wbase) - (local.get $$7) - ) - (i32.store - (local.get $$wpos) - (local.get $$7) - ) - (local.set $$retval$0 - (local.get $$len) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 8) - ) - (block - (local.set $$wend19 - (i32.add - (local.get $$f) - (i32.const 16) - ) - ) - (i32.store - (local.get $$wend19) - (i32.const 0) - ) - (i32.store - (local.get $$wbase) - (i32.const 0) - ) - (i32.store - (local.get $$wpos) - (i32.const 0) - ) - (local.set $$8 - (i32.load - (local.get $$f) - ) - ) - (local.set $$or - (i32.or - (local.get $$8) - (i32.const 32) - ) - ) - (i32.store - (local.get $$f) - (local.get $$or) - ) - (local.set $$cmp22 - (i32.eq - (local.get $$iovcnt$0$lcssa58) - (i32.const 2) - ) - ) - (if - (local.get $$cmp22) - (local.set $$retval$0 - (i32.const 0) - ) - (block - (local.set $$iov_len24 - (i32.add - (local.get $$iov$0$lcssa57) - (i32.const 4) - ) - ) - (local.set $$9 - (i32.load - (local.get $$iov_len24) - ) - ) - (local.set $$sub - (i32.sub - (local.get $$len) - (local.get $$9) - ) - ) - (local.set $$retval$0 - (local.get $$sub) - ) - ) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_vfprintf (; 40 ;) (param $$f i32) (param $$fmt i32) (param $$ap i32) (result i32) - (local $$$call21 i32) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$7 i32) - (local $$add$ptr i32) - (local $$and i32) - (local $$and11 i32) - (local $$and36 i32) - (local $$ap2 i32) - (local $$buf i32) - (local $$buf_size i32) - (local $$call i32) - (local $$call21 i32) - (local $$call21$30 i32) - (local $$call6 i32) - (local $$cmp i32) - (local $$cmp5 i32) - (local $$cmp7 i32) - (local $$cond i32) - (local $$internal_buf i32) - (local $$lock i32) - (local $$mode i32) - (local $$nl_arg i32) - (local $$nl_type i32) - (local $$or i32) - (local $$ret$1 i32) - (local $$ret$1$ i32) - (local $$retval$0 i32) - (local $$tobool i32) - (local $$tobool22 i32) - (local $$tobool26 i32) - (local $$tobool37 i32) - (local $$tobool41 i32) - (local $$vacopy_currentptr i32) - (local $$wbase i32) - (local $$wend i32) - (local $$wpos i32) - (local $$write i32) - (local $dest i32) - (local $label i32) - (local $sp i32) - (local $stop i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 224) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$ap2 - (i32.add - (local.get $sp) - (i32.const 120) - ) - ) - (local.set $$nl_type - (i32.add - (local.get $sp) - (i32.const 80) - ) - ) - (local.set $$nl_arg - (local.get $sp) - ) - (local.set $$internal_buf - (i32.add - (local.get $sp) - (i32.const 136) - ) - ) - (local.set $dest - (local.get $$nl_type) - ) - (local.set $stop - (i32.add - (local.get $dest) - (i32.const 40) - ) - ) - (loop $do-in - (block $do-out - (i32.store - (local.get $dest) - (i32.const 0) - ) - (local.set $dest - (i32.add - (local.get $dest) - (i32.const 4) - ) - ) - (br_if $do-in - (i32.lt_s - (local.get $dest) - (local.get $stop) - ) - ) - ) - ) - (local.set $$vacopy_currentptr - (i32.load - (local.get $$ap) - ) - ) - (i32.store - (local.get $$ap2) - (local.get $$vacopy_currentptr) - ) - (local.set $$call - (call $_printf_core - (i32.const 0) - (local.get $$fmt) - (local.get $$ap2) - (local.get $$nl_arg) - (local.get $$nl_type) - ) - ) - (local.set $$cmp - (i32.lt_s - (local.get $$call) - (i32.const 0) - ) - ) - (if - (local.get $$cmp) - (local.set $$retval$0 - (i32.const -1) - ) - (block - (local.set $$lock - (i32.add - (local.get $$f) - (i32.const 76) - ) - ) - (local.set $$0 - (i32.load - (local.get $$lock) - ) - ) - (local.set $$cmp5 - (i32.gt_s - (local.get $$0) - (i32.const -1) - ) - ) - (if - (local.get $$cmp5) - (block - (local.set $$call6 - (call $___lockfile - (local.get $$f) - ) - ) - (local.set $$cond - (local.get $$call6) - ) - ) - (local.set $$cond - (i32.const 0) - ) - ) - (local.set $$1 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and - (i32.and - (local.get $$1) - (i32.const 32) - ) - ) - (local.set $$mode - (i32.add - (local.get $$f) - (i32.const 74) - ) - ) - (local.set $$2 - (i32.load8_s - (local.get $$mode) - ) - ) - (local.set $$cmp7 - (i32.lt_s - (i32.shr_s - (i32.shl - (local.get $$2) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 1) - ) - ) - (if - (local.get $$cmp7) - (block - (local.set $$and11 - (i32.and - (local.get $$1) - (i32.const -33) - ) - ) - (i32.store - (local.get $$f) - (local.get $$and11) - ) - ) - ) - (local.set $$buf_size - (i32.add - (local.get $$f) - (i32.const 48) - ) - ) - (local.set $$3 - (i32.load - (local.get $$buf_size) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$3) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (block - (local.set $$buf - (i32.add - (local.get $$f) - (i32.const 44) - ) - ) - (local.set $$4 - (i32.load - (local.get $$buf) - ) - ) - (i32.store - (local.get $$buf) - (local.get $$internal_buf) - ) - (local.set $$wbase - (i32.add - (local.get $$f) - (i32.const 28) - ) - ) - (i32.store - (local.get $$wbase) - (local.get $$internal_buf) - ) - (local.set $$wpos - (i32.add - (local.get $$f) - (i32.const 20) - ) - ) - (i32.store - (local.get $$wpos) - (local.get $$internal_buf) - ) - (i32.store - (local.get $$buf_size) - (i32.const 80) - ) - (local.set $$add$ptr - (i32.add - (local.get $$internal_buf) - (i32.const 80) - ) - ) - (local.set $$wend - (i32.add - (local.get $$f) - (i32.const 16) - ) - ) - (i32.store - (local.get $$wend) - (local.get $$add$ptr) - ) - (local.set $$call21 - (call $_printf_core - (local.get $$f) - (local.get $$fmt) - (local.get $$ap2) - (local.get $$nl_arg) - (local.get $$nl_type) - ) - ) - (local.set $$tobool22 - (i32.eq - (local.get $$4) - (i32.const 0) - ) - ) - (if - (local.get $$tobool22) - (local.set $$ret$1 - (local.get $$call21) - ) - (block - (local.set $$write - (i32.add - (local.get $$f) - (i32.const 36) - ) - ) - (local.set $$5 - (i32.load - (local.get $$write) - ) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $$f) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (local.get $$5) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (local.set $$6 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$tobool26 - (i32.eq - (local.get $$6) - (i32.const 0) - ) - ) - (local.set $$$call21 - (if (result i32) - (local.get $$tobool26) - (i32.const -1) - (local.get $$call21) - ) - ) - (i32.store - (local.get $$buf) - (local.get $$4) - ) - (i32.store - (local.get $$buf_size) - (i32.const 0) - ) - (i32.store - (local.get $$wend) - (i32.const 0) - ) - (i32.store - (local.get $$wbase) - (i32.const 0) - ) - (i32.store - (local.get $$wpos) - (i32.const 0) - ) - (local.set $$ret$1 - (local.get $$$call21) - ) - ) - ) - ) - (block - (local.set $$call21$30 - (call $_printf_core - (local.get $$f) - (local.get $$fmt) - (local.get $$ap2) - (local.get $$nl_arg) - (local.get $$nl_type) - ) - ) - (local.set $$ret$1 - (local.get $$call21$30) - ) - ) - ) - (local.set $$7 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and36 - (i32.and - (local.get $$7) - (i32.const 32) - ) - ) - (local.set $$tobool37 - (i32.eq - (local.get $$and36) - (i32.const 0) - ) - ) - (local.set $$ret$1$ - (if (result i32) - (local.get $$tobool37) - (local.get $$ret$1) - (i32.const -1) - ) - ) - (local.set $$or - (i32.or - (local.get $$7) - (local.get $$and) - ) - ) - (i32.store - (local.get $$f) - (local.get $$or) - ) - (local.set $$tobool41 - (i32.eq - (local.get $$cond) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool41) - ) - (call $___unlockfile - (local.get $$f) - ) - ) - (local.set $$retval$0 - (local.get $$ret$1$) - ) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (local.get $$retval$0) - ) - ) - (func $___fwritex (; 41 ;) (param $$s i32) (param $$l i32) (param $$f i32) (result i32) - (local $$$pre i32) - (local $$$pre31 i32) - (local $$0 i32) - (local $$1 i32) - (local $$10 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$7 i32) - (local $$8 i32) - (local $$9 i32) - (local $$add i32) - (local $$add$ptr i32) - (local $$add$ptr26 i32) - (local $$arrayidx i32) - (local $$call i32) - (local $$call16 i32) - (local $$call4 i32) - (local $$cmp i32) - (local $$cmp11 i32) - (local $$cmp17 i32) - (local $$cmp6 i32) - (local $$i$0 i32) - (local $$i$0$lcssa36 i32) - (local $$i$1 i32) - (local $$l$addr$0 i32) - (local $$lbf i32) - (local $$retval$0 i32) - (local $$s$addr$0 i32) - (local $$sub i32) - (local $$sub$ptr$sub i32) - (local $$sub21 i32) - (local $$tobool i32) - (local $$tobool1 i32) - (local $$tobool9 i32) - (local $$wend i32) - (local $$wpos i32) - (local $$write i32) - (local $$write15 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$wend - (i32.add - (local.get $$f) - (i32.const 16) - ) - ) - (local.set $$0 - (i32.load - (local.get $$wend) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$0) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (block - (local.set $$call - (call $___towrite - (local.get $$f) - ) - ) - (local.set $$tobool1 - (i32.eq - (local.get $$call) - (i32.const 0) - ) - ) - (if - (local.get $$tobool1) - (block - (local.set $$$pre - (i32.load - (local.get $$wend) - ) - ) - (local.set $$3 - (local.get $$$pre) - ) - (local.set $label - (i32.const 5) - ) - ) - (local.set $$retval$0 - (i32.const 0) - ) - ) - ) - (block - (local.set $$1 - (local.get $$0) - ) - (local.set $$3 - (local.get $$1) - ) - (local.set $label - (i32.const 5) - ) - ) - ) - (block $label$break$L5 - (if - (i32.eq - (local.get $label) - (i32.const 5) - ) - (block - (local.set $$wpos - (i32.add - (local.get $$f) - (i32.const 20) - ) - ) - (local.set $$2 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$sub$ptr$sub - (i32.sub - (local.get $$3) - (local.get $$2) - ) - ) - (local.set $$cmp - (i32.lt_u - (local.get $$sub$ptr$sub) - (local.get $$l) - ) - ) - (local.set $$4 - (local.get $$2) - ) - (if - (local.get $$cmp) - (block - (local.set $$write - (i32.add - (local.get $$f) - (i32.const 36) - ) - ) - (local.set $$5 - (i32.load - (local.get $$write) - ) - ) - (local.set $$call4 - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $$f) - (local.get $$s) - (local.get $$l) - (i32.add - (i32.and - (local.get $$5) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (local.set $$retval$0 - (local.get $$call4) - ) - (br $label$break$L5) - ) - ) - (local.set $$lbf - (i32.add - (local.get $$f) - (i32.const 75) - ) - ) - (local.set $$6 - (i32.load8_s - (local.get $$lbf) - ) - ) - (local.set $$cmp6 - (i32.gt_s - (i32.shr_s - (i32.shl - (local.get $$6) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -1) - ) - ) - (block $label$break$L10 - (if - (local.get $$cmp6) - (block - (local.set $$i$0 - (local.get $$l) - ) - (loop $while-in - (block $while-out - (local.set $$tobool9 - (i32.eq - (local.get $$i$0) - (i32.const 0) - ) - ) - (if - (local.get $$tobool9) - (block - (local.set $$9 - (local.get $$4) - ) - (local.set $$i$1 - (i32.const 0) - ) - (local.set $$l$addr$0 - (local.get $$l) - ) - (local.set $$s$addr$0 - (local.get $$s) - ) - (br $label$break$L10) - ) - ) - (local.set $$sub - (i32.add - (local.get $$i$0) - (i32.const -1) - ) - ) - (local.set $$arrayidx - (i32.add - (local.get $$s) - (local.get $$sub) - ) - ) - (local.set $$7 - (i32.load8_s - (local.get $$arrayidx) - ) - ) - (local.set $$cmp11 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$7) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 10) - ) - ) - (if - (local.get $$cmp11) - (block - (local.set $$i$0$lcssa36 - (local.get $$i$0) - ) - (br $while-out) - ) - (local.set $$i$0 - (local.get $$sub) - ) - ) - (br $while-in) - ) - ) - (local.set $$write15 - (i32.add - (local.get $$f) - (i32.const 36) - ) - ) - (local.set $$8 - (i32.load - (local.get $$write15) - ) - ) - (local.set $$call16 - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $$f) - (local.get $$s) - (local.get $$i$0$lcssa36) - (i32.add - (i32.and - (local.get $$8) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (local.set $$cmp17 - (i32.lt_u - (local.get $$call16) - (local.get $$i$0$lcssa36) - ) - ) - (if - (local.get $$cmp17) - (block - (local.set $$retval$0 - (local.get $$i$0$lcssa36) - ) - (br $label$break$L5) - ) - ) - (local.set $$add$ptr - (i32.add - (local.get $$s) - (local.get $$i$0$lcssa36) - ) - ) - (local.set $$sub21 - (i32.sub - (local.get $$l) - (local.get $$i$0$lcssa36) - ) - ) - (local.set $$$pre31 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$9 - (local.get $$$pre31) - ) - (local.set $$i$1 - (local.get $$i$0$lcssa36) - ) - (local.set $$l$addr$0 - (local.get $$sub21) - ) - (local.set $$s$addr$0 - (local.get $$add$ptr) - ) - ) - (block - (local.set $$9 - (local.get $$4) - ) - (local.set $$i$1 - (i32.const 0) - ) - (local.set $$l$addr$0 - (local.get $$l) - ) - (local.set $$s$addr$0 - (local.get $$s) - ) - ) - ) - ) - (drop - (call $_memcpy - (local.get $$9) - (local.get $$s$addr$0) - (local.get $$l$addr$0) - ) - ) - (local.set $$10 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$add$ptr26 - (i32.add - (local.get $$10) - (local.get $$l$addr$0) - ) - ) - (i32.store - (local.get $$wpos) - (local.get $$add$ptr26) - ) - (local.set $$add - (i32.add - (local.get $$i$1) - (local.get $$l$addr$0) - ) - ) - (local.set $$retval$0 - (local.get $$add) - ) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $___towrite (; 42 ;) (param $$f i32) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$add$ptr i32) - (local $$and i32) - (local $$buf i32) - (local $$buf_size i32) - (local $$conv i32) - (local $$conv3 i32) - (local $$mode i32) - (local $$or i32) - (local $$or5 i32) - (local $$rend i32) - (local $$retval$0 i32) - (local $$rpos i32) - (local $$sub i32) - (local $$tobool i32) - (local $$wbase i32) - (local $$wend i32) - (local $$wpos i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$mode - (i32.add - (local.get $$f) - (i32.const 74) - ) - ) - (local.set $$0 - (i32.load8_s - (local.get $$mode) - ) - ) - (local.set $$conv - (i32.shr_s - (i32.shl - (local.get $$0) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$sub - (i32.add - (local.get $$conv) - (i32.const 255) - ) - ) - (local.set $$or - (i32.or - (local.get $$sub) - (local.get $$conv) - ) - ) - (local.set $$conv3 - (i32.and - (local.get $$or) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $$mode) - (local.get $$conv3) - ) - (local.set $$1 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and - (i32.and - (local.get $$1) - (i32.const 8) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$and) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (block - (local.set $$rend - (i32.add - (local.get $$f) - (i32.const 8) - ) - ) - (i32.store - (local.get $$rend) - (i32.const 0) - ) - (local.set $$rpos - (i32.add - (local.get $$f) - (i32.const 4) - ) - ) - (i32.store - (local.get $$rpos) - (i32.const 0) - ) - (local.set $$buf - (i32.add - (local.get $$f) - (i32.const 44) - ) - ) - (local.set $$2 - (i32.load - (local.get $$buf) - ) - ) - (local.set $$wbase - (i32.add - (local.get $$f) - (i32.const 28) - ) - ) - (i32.store - (local.get $$wbase) - (local.get $$2) - ) - (local.set $$wpos - (i32.add - (local.get $$f) - (i32.const 20) - ) - ) - (i32.store - (local.get $$wpos) - (local.get $$2) - ) - (local.set $$3 - (local.get $$2) - ) - (local.set $$buf_size - (i32.add - (local.get $$f) - (i32.const 48) - ) - ) - (local.set $$4 - (i32.load - (local.get $$buf_size) - ) - ) - (local.set $$add$ptr - (i32.add - (local.get $$3) - (local.get $$4) - ) - ) - (local.set $$wend - (i32.add - (local.get $$f) - (i32.const 16) - ) - ) - (i32.store - (local.get $$wend) - (local.get $$add$ptr) - ) - (local.set $$retval$0 - (i32.const 0) - ) - ) - (block - (local.set $$or5 - (i32.or - (local.get $$1) - (i32.const 32) - ) - ) - (i32.store - (local.get $$f) - (local.get $$or5) - ) - (local.set $$retval$0 - (i32.const -1) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_wcrtomb (; 43 ;) (param $$s i32) (param $$wc i32) (param $$st i32) (result i32) - (local $$0 i32) - (local $$and i32) - (local $$and19 i32) - (local $$and23 i32) - (local $$and36 i32) - (local $$and41 i32) - (local $$and45 i32) - (local $$call i32) - (local $$cmp i32) - (local $$cmp11 i32) - (local $$cmp2 i32) - (local $$cmp28 i32) - (local $$cmp9 i32) - (local $$conv i32) - (local $$conv16 i32) - (local $$conv21 i32) - (local $$conv25 i32) - (local $$conv33 i32) - (local $$conv38 i32) - (local $$conv43 i32) - (local $$conv47 i32) - (local $$conv5 i32) - (local $$conv7 i32) - (local $$incdec$ptr i32) - (local $$incdec$ptr17 i32) - (local $$incdec$ptr22 i32) - (local $$incdec$ptr34 i32) - (local $$incdec$ptr39 i32) - (local $$incdec$ptr44 i32) - (local $$or i32) - (local $$or$cond i32) - (local $$or15 i32) - (local $$or20 i32) - (local $$or24 i32) - (local $$or32 i32) - (local $$or37 i32) - (local $$or42 i32) - (local $$or46 i32) - (local $$or6 i32) - (local $$retval$0 i32) - (local $$shr$28 i32) - (local $$shr14$26 i32) - (local $$shr18$27 i32) - (local $$shr31$23 i32) - (local $$shr35$24 i32) - (local $$shr40$25 i32) - (local $$sub27 i32) - (local $$tobool i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$tobool - (i32.eq - (local.get $$s) - (i32.const 0) - ) - ) - (block $do-once - (if - (local.get $$tobool) - (local.set $$retval$0 - (i32.const 1) - ) - (block - (local.set $$cmp - (i32.lt_u - (local.get $$wc) - (i32.const 128) - ) - ) - (if - (local.get $$cmp) - (block - (local.set $$conv - (i32.and - (local.get $$wc) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $$s) - (local.get $$conv) - ) - (local.set $$retval$0 - (i32.const 1) - ) - (br $do-once) - ) - ) - (local.set $$cmp2 - (i32.lt_u - (local.get $$wc) - (i32.const 2048) - ) - ) - (if - (local.get $$cmp2) - (block - (local.set $$shr$28 - (i32.shr_u - (local.get $$wc) - (i32.const 6) - ) - ) - (local.set $$or - (i32.or - (local.get $$shr$28) - (i32.const 192) - ) - ) - (local.set $$conv5 - (i32.and - (local.get $$or) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr - (i32.add - (local.get $$s) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $$s) - (local.get $$conv5) - ) - (local.set $$and - (i32.and - (local.get $$wc) - (i32.const 63) - ) - ) - (local.set $$or6 - (i32.or - (local.get $$and) - (i32.const 128) - ) - ) - (local.set $$conv7 - (i32.and - (local.get $$or6) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $$incdec$ptr) - (local.get $$conv7) - ) - (local.set $$retval$0 - (i32.const 2) - ) - (br $do-once) - ) - ) - (local.set $$cmp9 - (i32.lt_u - (local.get $$wc) - (i32.const 55296) - ) - ) - (local.set $$0 - (i32.and - (local.get $$wc) - (i32.const -8192) - ) - ) - (local.set $$cmp11 - (i32.eq - (local.get $$0) - (i32.const 57344) - ) - ) - (local.set $$or$cond - (i32.or - (local.get $$cmp9) - (local.get $$cmp11) - ) - ) - (if - (local.get $$or$cond) - (block - (local.set $$shr14$26 - (i32.shr_u - (local.get $$wc) - (i32.const 12) - ) - ) - (local.set $$or15 - (i32.or - (local.get $$shr14$26) - (i32.const 224) - ) - ) - (local.set $$conv16 - (i32.and - (local.get $$or15) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr17 - (i32.add - (local.get $$s) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $$s) - (local.get $$conv16) - ) - (local.set $$shr18$27 - (i32.shr_u - (local.get $$wc) - (i32.const 6) - ) - ) - (local.set $$and19 - (i32.and - (local.get $$shr18$27) - (i32.const 63) - ) - ) - (local.set $$or20 - (i32.or - (local.get $$and19) - (i32.const 128) - ) - ) - (local.set $$conv21 - (i32.and - (local.get $$or20) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr22 - (i32.add - (local.get $$s) - (i32.const 2) - ) - ) - (i32.store8 - (local.get $$incdec$ptr17) - (local.get $$conv21) - ) - (local.set $$and23 - (i32.and - (local.get $$wc) - (i32.const 63) - ) - ) - (local.set $$or24 - (i32.or - (local.get $$and23) - (i32.const 128) - ) - ) - (local.set $$conv25 - (i32.and - (local.get $$or24) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $$incdec$ptr22) - (local.get $$conv25) - ) - (local.set $$retval$0 - (i32.const 3) - ) - (br $do-once) - ) - ) - (local.set $$sub27 - (i32.add - (local.get $$wc) - (i32.const -65536) - ) - ) - (local.set $$cmp28 - (i32.lt_u - (local.get $$sub27) - (i32.const 1048576) - ) - ) - (if - (local.get $$cmp28) - (block - (local.set $$shr31$23 - (i32.shr_u - (local.get $$wc) - (i32.const 18) - ) - ) - (local.set $$or32 - (i32.or - (local.get $$shr31$23) - (i32.const 240) - ) - ) - (local.set $$conv33 - (i32.and - (local.get $$or32) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr34 - (i32.add - (local.get $$s) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $$s) - (local.get $$conv33) - ) - (local.set $$shr35$24 - (i32.shr_u - (local.get $$wc) - (i32.const 12) - ) - ) - (local.set $$and36 - (i32.and - (local.get $$shr35$24) - (i32.const 63) - ) - ) - (local.set $$or37 - (i32.or - (local.get $$and36) - (i32.const 128) - ) - ) - (local.set $$conv38 - (i32.and - (local.get $$or37) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr39 - (i32.add - (local.get $$s) - (i32.const 2) - ) - ) - (i32.store8 - (local.get $$incdec$ptr34) - (local.get $$conv38) - ) - (local.set $$shr40$25 - (i32.shr_u - (local.get $$wc) - (i32.const 6) - ) - ) - (local.set $$and41 - (i32.and - (local.get $$shr40$25) - (i32.const 63) - ) - ) - (local.set $$or42 - (i32.or - (local.get $$and41) - (i32.const 128) - ) - ) - (local.set $$conv43 - (i32.and - (local.get $$or42) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr44 - (i32.add - (local.get $$s) - (i32.const 3) - ) - ) - (i32.store8 - (local.get $$incdec$ptr39) - (local.get $$conv43) - ) - (local.set $$and45 - (i32.and - (local.get $$wc) - (i32.const 63) - ) - ) - (local.set $$or46 - (i32.or - (local.get $$and45) - (i32.const 128) - ) - ) - (local.set $$conv47 - (i32.and - (local.get $$or46) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $$incdec$ptr44) - (local.get $$conv47) - ) - (local.set $$retval$0 - (i32.const 4) - ) - (br $do-once) - ) - (block - (local.set $$call - (call $___errno_location) - ) - (i32.store - (local.get $$call) - (i32.const 84) - ) - (local.set $$retval$0 - (i32.const -1) - ) - (br $do-once) - ) - ) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_wctomb (; 44 ;) (param $$s i32) (param $$wc i32) (result i32) - (local $$call i32) - (local $$retval$0 i32) - (local $$tobool i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$tobool - (i32.eq - (local.get $$s) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (local.set $$retval$0 - (i32.const 0) - ) - (block - (local.set $$call - (call $_wcrtomb - (local.get $$s) - (local.get $$wc) - (i32.const 0) - ) - ) - (local.set $$retval$0 - (local.get $$call) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_memchr (; 45 ;) (param $$src i32) (param $$c i32) (param $$n i32) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$7 i32) - (local $$and i32) - (local $$and$39 i32) - (local $$and15 i32) - (local $$and16 i32) - (local $$cmp i32) - (local $$cmp11 i32) - (local $$cmp11$32 i32) - (local $$cmp28 i32) - (local $$cmp8 i32) - (local $$cond i32) - (local $$conv1 i32) - (local $$dec i32) - (local $$dec34 i32) - (local $$incdec$ptr i32) - (local $$incdec$ptr21 i32) - (local $$incdec$ptr33 i32) - (local $$lnot i32) - (local $$mul i32) - (local $$n$addr$0$lcssa i32) - (local $$n$addr$0$lcssa61 i32) - (local $$n$addr$043 i32) - (local $$n$addr$1$lcssa i32) - (local $$n$addr$133 i32) - (local $$n$addr$133$lcssa i32) - (local $$n$addr$227 i32) - (local $$n$addr$3 i32) - (local $$neg i32) - (local $$or$cond i32) - (local $$or$cond$42 i32) - (local $$s$0$lcssa i32) - (local $$s$0$lcssa60 i32) - (local $$s$044 i32) - (local $$s$128 i32) - (local $$s$2 i32) - (local $$sub i32) - (local $$sub22 i32) - (local $$tobool i32) - (local $$tobool$40 i32) - (local $$tobool2 i32) - (local $$tobool2$41 i32) - (local $$tobool2$lcssa i32) - (local $$tobool25 i32) - (local $$tobool25$26 i32) - (local $$tobool36 i32) - (local $$w$0$lcssa i32) - (local $$w$034 i32) - (local $$w$034$lcssa i32) - (local $$xor i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$conv1 - (i32.and - (local.get $$c) - (i32.const 255) - ) - ) - (local.set $$0 - (local.get $$src) - ) - (local.set $$and$39 - (i32.and - (local.get $$0) - (i32.const 3) - ) - ) - (local.set $$tobool$40 - (i32.ne - (local.get $$and$39) - (i32.const 0) - ) - ) - (local.set $$tobool2$41 - (i32.ne - (local.get $$n) - (i32.const 0) - ) - ) - (local.set $$or$cond$42 - (i32.and - (local.get $$tobool2$41) - (local.get $$tobool$40) - ) - ) - (block $label$break$L1 - (if - (local.get $$or$cond$42) - (block - (local.set $$1 - (i32.and - (local.get $$c) - (i32.const 255) - ) - ) - (local.set $$n$addr$043 - (local.get $$n) - ) - (local.set $$s$044 - (local.get $$src) - ) - (loop $while-in - (block $while-out - (local.set $$2 - (i32.load8_s - (local.get $$s$044) - ) - ) - (local.set $$cmp - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$2) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.shr_s - (i32.shl - (local.get $$1) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (if - (local.get $$cmp) - (block - (local.set $$n$addr$0$lcssa61 - (local.get $$n$addr$043) - ) - (local.set $$s$0$lcssa60 - (local.get $$s$044) - ) - (local.set $label - (i32.const 6) - ) - (br $label$break$L1) - ) - ) - (local.set $$incdec$ptr - (i32.add - (local.get $$s$044) - (i32.const 1) - ) - ) - (local.set $$dec - (i32.add - (local.get $$n$addr$043) - (i32.const -1) - ) - ) - (local.set $$3 - (local.get $$incdec$ptr) - ) - (local.set $$and - (i32.and - (local.get $$3) - (i32.const 3) - ) - ) - (local.set $$tobool - (i32.ne - (local.get $$and) - (i32.const 0) - ) - ) - (local.set $$tobool2 - (i32.ne - (local.get $$dec) - (i32.const 0) - ) - ) - (local.set $$or$cond - (i32.and - (local.get $$tobool2) - (local.get $$tobool) - ) - ) - (if - (local.get $$or$cond) - (block - (local.set $$n$addr$043 - (local.get $$dec) - ) - (local.set $$s$044 - (local.get $$incdec$ptr) - ) - ) - (block - (local.set $$n$addr$0$lcssa - (local.get $$dec) - ) - (local.set $$s$0$lcssa - (local.get $$incdec$ptr) - ) - (local.set $$tobool2$lcssa - (local.get $$tobool2) - ) - (local.set $label - (i32.const 5) - ) - (br $while-out) - ) - ) - (br $while-in) - ) - ) - ) - (block - (local.set $$n$addr$0$lcssa - (local.get $$n) - ) - (local.set $$s$0$lcssa - (local.get $$src) - ) - (local.set $$tobool2$lcssa - (local.get $$tobool2$41) - ) - (local.set $label - (i32.const 5) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 5) - ) - (if - (local.get $$tobool2$lcssa) - (block - (local.set $$n$addr$0$lcssa61 - (local.get $$n$addr$0$lcssa) - ) - (local.set $$s$0$lcssa60 - (local.get $$s$0$lcssa) - ) - (local.set $label - (i32.const 6) - ) - ) - (block - (local.set $$n$addr$3 - (i32.const 0) - ) - (local.set $$s$2 - (local.get $$s$0$lcssa) - ) - ) - ) - ) - (block $label$break$L8 - (if - (i32.eq - (local.get $label) - (i32.const 6) - ) - (block - (local.set $$4 - (i32.load8_s - (local.get $$s$0$lcssa60) - ) - ) - (local.set $$5 - (i32.and - (local.get $$c) - (i32.const 255) - ) - ) - (local.set $$cmp8 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$4) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.shr_s - (i32.shl - (local.get $$5) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (if - (local.get $$cmp8) - (block - (local.set $$n$addr$3 - (local.get $$n$addr$0$lcssa61) - ) - (local.set $$s$2 - (local.get $$s$0$lcssa60) - ) - ) - (block - (local.set $$mul - (i32.mul - (local.get $$conv1) - (i32.const 16843009) - ) - ) - (local.set $$cmp11$32 - (i32.gt_u - (local.get $$n$addr$0$lcssa61) - (i32.const 3) - ) - ) - (block $label$break$L11 - (if - (local.get $$cmp11$32) - (block - (local.set $$n$addr$133 - (local.get $$n$addr$0$lcssa61) - ) - (local.set $$w$034 - (local.get $$s$0$lcssa60) - ) - (loop $while-in3 - (block $while-out2 - (local.set $$6 - (i32.load - (local.get $$w$034) - ) - ) - (local.set $$xor - (i32.xor - (local.get $$6) - (local.get $$mul) - ) - ) - (local.set $$sub - (i32.add - (local.get $$xor) - (i32.const -16843009) - ) - ) - (local.set $$neg - (i32.and - (local.get $$xor) - (i32.const -2139062144) - ) - ) - (local.set $$and15 - (i32.xor - (local.get $$neg) - (i32.const -2139062144) - ) - ) - (local.set $$and16 - (i32.and - (local.get $$and15) - (local.get $$sub) - ) - ) - (local.set $$lnot - (i32.eq - (local.get $$and16) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$lnot) - ) - (block - (local.set $$n$addr$133$lcssa - (local.get $$n$addr$133) - ) - (local.set $$w$034$lcssa - (local.get $$w$034) - ) - (br $while-out2) - ) - ) - (local.set $$incdec$ptr21 - (i32.add - (local.get $$w$034) - (i32.const 4) - ) - ) - (local.set $$sub22 - (i32.add - (local.get $$n$addr$133) - (i32.const -4) - ) - ) - (local.set $$cmp11 - (i32.gt_u - (local.get $$sub22) - (i32.const 3) - ) - ) - (if - (local.get $$cmp11) - (block - (local.set $$n$addr$133 - (local.get $$sub22) - ) - (local.set $$w$034 - (local.get $$incdec$ptr21) - ) - ) - (block - (local.set $$n$addr$1$lcssa - (local.get $$sub22) - ) - (local.set $$w$0$lcssa - (local.get $$incdec$ptr21) - ) - (local.set $label - (i32.const 11) - ) - (br $label$break$L11) - ) - ) - (br $while-in3) - ) - ) - (local.set $$n$addr$227 - (local.get $$n$addr$133$lcssa) - ) - (local.set $$s$128 - (local.get $$w$034$lcssa) - ) - ) - (block - (local.set $$n$addr$1$lcssa - (local.get $$n$addr$0$lcssa61) - ) - (local.set $$w$0$lcssa - (local.get $$s$0$lcssa60) - ) - (local.set $label - (i32.const 11) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 11) - ) - (block - (local.set $$tobool25$26 - (i32.eq - (local.get $$n$addr$1$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$tobool25$26) - (block - (local.set $$n$addr$3 - (i32.const 0) - ) - (local.set $$s$2 - (local.get $$w$0$lcssa) - ) - (br $label$break$L8) - ) - (block - (local.set $$n$addr$227 - (local.get $$n$addr$1$lcssa) - ) - (local.set $$s$128 - (local.get $$w$0$lcssa) - ) - ) - ) - ) - ) - (loop $while-in5 - (block $while-out4 - (local.set $$7 - (i32.load8_s - (local.get $$s$128) - ) - ) - (local.set $$cmp28 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$7) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.shr_s - (i32.shl - (local.get $$5) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (if - (local.get $$cmp28) - (block - (local.set $$n$addr$3 - (local.get $$n$addr$227) - ) - (local.set $$s$2 - (local.get $$s$128) - ) - (br $label$break$L8) - ) - ) - (local.set $$incdec$ptr33 - (i32.add - (local.get $$s$128) - (i32.const 1) - ) - ) - (local.set $$dec34 - (i32.add - (local.get $$n$addr$227) - (i32.const -1) - ) - ) - (local.set $$tobool25 - (i32.eq - (local.get $$dec34) - (i32.const 0) - ) - ) - (if - (local.get $$tobool25) - (block - (local.set $$n$addr$3 - (i32.const 0) - ) - (local.set $$s$2 - (local.get $$incdec$ptr33) - ) - (br $while-out4) - ) - (block - (local.set $$n$addr$227 - (local.get $$dec34) - ) - (local.set $$s$128 - (local.get $$incdec$ptr33) - ) - ) - ) - (br $while-in5) - ) - ) - ) - ) - ) - ) - ) - (local.set $$tobool36 - (i32.ne - (local.get $$n$addr$3) - (i32.const 0) - ) - ) - (local.set $$cond - (if (result i32) - (local.get $$tobool36) - (local.get $$s$2) - (i32.const 0) - ) - ) - (return - (local.get $$cond) - ) - ) - (func $___syscall_ret (; 46 ;) (param $$r i32) (result i32) - (local $$call i32) - (local $$cmp i32) - (local $$retval$0 i32) - (local $$sub i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$cmp - (i32.gt_u - (local.get $$r) - (i32.const -4096) - ) - ) - (if - (local.get $$cmp) - (block - (local.set $$sub - (i32.sub - (i32.const 0) - (local.get $$r) - ) - ) - (local.set $$call - (call $___errno_location) - ) - (i32.store - (local.get $$call) - (local.get $$sub) - ) - (local.set $$retval$0 - (i32.const -1) - ) - ) - (local.set $$retval$0 - (local.get $$r) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $___fflush_unlocked (; 47 ;) (param $$f i32) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$cmp i32) - (local $$cmp4 i32) - (local $$rend i32) - (local $$retval$0 i32) - (local $$rpos i32) - (local $$seek i32) - (local $$sub$ptr$lhs$cast i32) - (local $$sub$ptr$rhs$cast i32) - (local $$sub$ptr$sub i32) - (local $$tobool i32) - (local $$wbase i32) - (local $$wend i32) - (local $$wpos i32) - (local $$write i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$wpos - (i32.add - (local.get $$f) - (i32.const 20) - ) - ) - (local.set $$0 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$wbase - (i32.add - (local.get $$f) - (i32.const 28) - ) - ) - (local.set $$1 - (i32.load - (local.get $$wbase) - ) - ) - (local.set $$cmp - (i32.gt_u - (local.get $$0) - (local.get $$1) - ) - ) - (if - (local.get $$cmp) - (block - (local.set $$write - (i32.add - (local.get $$f) - (i32.const 36) - ) - ) - (local.set $$2 - (i32.load - (local.get $$write) - ) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $$f) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (local.get $$2) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (local.set $$3 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$3) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (local.set $$retval$0 - (i32.const -1) - ) - (local.set $label - (i32.const 3) - ) - ) - ) - (local.set $label - (i32.const 3) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 3) - ) - (block - (local.set $$rpos - (i32.add - (local.get $$f) - (i32.const 4) - ) - ) - (local.set $$4 - (i32.load - (local.get $$rpos) - ) - ) - (local.set $$rend - (i32.add - (local.get $$f) - (i32.const 8) - ) - ) - (local.set $$5 - (i32.load - (local.get $$rend) - ) - ) - (local.set $$cmp4 - (i32.lt_u - (local.get $$4) - (local.get $$5) - ) - ) - (if - (local.get $$cmp4) - (block - (local.set $$seek - (i32.add - (local.get $$f) - (i32.const 40) - ) - ) - (local.set $$6 - (i32.load - (local.get $$seek) - ) - ) - (local.set $$sub$ptr$lhs$cast - (local.get $$4) - ) - (local.set $$sub$ptr$rhs$cast - (local.get $$5) - ) - (local.set $$sub$ptr$sub - (i32.sub - (local.get $$sub$ptr$lhs$cast) - (local.get $$sub$ptr$rhs$cast) - ) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $$f) - (local.get $$sub$ptr$sub) - (i32.const 1) - (i32.add - (i32.and - (local.get $$6) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (local.set $$wend - (i32.add - (local.get $$f) - (i32.const 16) - ) - ) - (i32.store - (local.get $$wend) - (i32.const 0) - ) - (i32.store - (local.get $$wbase) - (i32.const 0) - ) - (i32.store - (local.get $$wpos) - (i32.const 0) - ) - (i32.store - (local.get $$rend) - (i32.const 0) - ) - (i32.store - (local.get $$rpos) - (i32.const 0) - ) - (local.set $$retval$0 - (i32.const 0) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_cleanup (; 48 ;) (param $$p i32) - (local $$0 i32) - (local $$lockcount i32) - (local $$tobool i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$lockcount - (i32.add - (local.get $$p) - (i32.const 68) - ) - ) - (local.set $$0 - (i32.load - (local.get $$lockcount) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$0) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (call $___unlockfile - (local.get $$p) - ) - ) - (return) - ) - (func $_printf_core (; 49 ;) (param $$f i32) (param $$fmt i32) (param $$ap i32) (param $$nl_arg i32) (param $$nl_type i32) (result i32) - (local $$$ i32) - (local $$$$i i32) - (local $$$396$i f64) - (local $$$404$i f64) - (local $$$l10n$0 i32) - (local $$$lcssa i32) - (local $$$p$i i32) - (local $$$p$inc468$i i32) - (local $$$pr$i i32) - (local $$$pr477$i i32) - (local $$$pre i32) - (local $$$pre$i i32) - (local $$$pre357 i32) - (local $$$pre564$i i32) - (local $$$pre566$i i32) - (local $$$pre567$i i32) - (local $$$sub514$i i32) - (local $$$sub562$i i32) - (local $$0 i32) - (local $$1 i32) - (local $$10 i32) - (local $$100 i32) - (local $$101 i32) - (local $$102 i32) - (local $$103 i32) - (local $$104 i32) - (local $$105 i32) - (local $$106 i32) - (local $$107 i32) - (local $$108 i32) - (local $$109 i32) - (local $$11 i32) - (local $$110 i32) - (local $$111 i32) - (local $$112 i32) - (local $$113 i32) - (local $$114 i32) - (local $$115 i32) - (local $$116 i32) - (local $$117 i32) - (local $$118 i32) - (local $$119 i32) - (local $$12 i32) - (local $$120 i32) - (local $$121 i32) - (local $$122 i32) - (local $$123 i32) - (local $$124 i32) - (local $$125 i32) - (local $$126 i32) - (local $$127 i32) - (local $$128 i32) - (local $$129 i32) - (local $$13 i32) - (local $$130 i32) - (local $$131 i32) - (local $$132 i32) - (local $$133 i32) - (local $$134 i32) - (local $$135 i32) - (local $$136 i32) - (local $$137 i32) - (local $$138 i32) - (local $$139 i32) - (local $$14 i32) - (local $$140 i32) - (local $$141 i32) - (local $$142 i32) - (local $$143 i32) - (local $$144 i32) - (local $$145 i32) - (local $$146 i32) - (local $$147 i32) - (local $$148 i32) - (local $$149 i32) - (local $$15 i32) - (local $$150 i32) - (local $$151 i32) - (local $$152 i32) - (local $$153 i32) - (local $$154 i32) - (local $$155 i32) - (local $$156 i32) - (local $$157 i32) - (local $$158 i32) - (local $$159 i32) - (local $$16 i32) - (local $$160 i32) - (local $$161 i32) - (local $$162 i32) - (local $$163 i32) - (local $$164 i32) - (local $$165 i32) - (local $$166 i32) - (local $$167 i32) - (local $$168 i32) - (local $$169 i32) - (local $$17 i32) - (local $$170 i32) - (local $$171 i32) - (local $$172 i32) - (local $$173 i32) - (local $$174 i32) - (local $$175 i32) - (local $$176 i32) - (local $$177 i32) - (local $$178 i32) - (local $$179 i32) - (local $$18 i32) - (local $$180 i32) - (local $$181 f64) - (local $$182 i32) - (local $$183 i32) - (local $$184 i32) - (local $$185 i32) - (local $$186 i32) - (local $$187 i32) - (local $$188 i32) - (local $$189 i32) - (local $$19 i32) - (local $$190 i32) - (local $$191 i32) - (local $$192 i32) - (local $$193 i32) - (local $$194 i32) - (local $$195 i32) - (local $$196 i32) - (local $$197 i32) - (local $$198 i32) - (local $$199 i32) - (local $$2 i32) - (local $$20 i32) - (local $$200 i32) - (local $$201 i32) - (local $$202 i32) - (local $$203 i32) - (local $$204 i32) - (local $$205 i32) - (local $$206 i32) - (local $$207 i32) - (local $$208 i32) - (local $$209 i32) - (local $$21 i32) - (local $$210 i32) - (local $$211 i32) - (local $$212 i32) - (local $$213 i32) - (local $$214 i32) - (local $$215 i32) - (local $$216 i32) - (local $$217 i32) - (local $$218 i32) - (local $$219 i32) - (local $$22 i32) - (local $$220 i32) - (local $$221 i32) - (local $$222 i32) - (local $$223 i32) - (local $$224 i32) - (local $$225 i32) - (local $$226 i32) - (local $$227 i32) - (local $$228 i32) - (local $$229 i32) - (local $$23 i32) - (local $$230 i32) - (local $$231 i32) - (local $$232 i32) - (local $$233 i32) - (local $$234 i32) - (local $$235 i32) - (local $$236 i32) - (local $$237 i32) - (local $$238 i32) - (local $$239 i32) - (local $$24 i32) - (local $$240 i32) - (local $$241 i32) - (local $$242 i32) - (local $$243 i32) - (local $$244 i32) - (local $$245 i32) - (local $$246 i32) - (local $$247 i32) - (local $$248 i32) - (local $$249 i32) - (local $$25 i32) - (local $$250 i32) - (local $$251 i32) - (local $$252 i32) - (local $$253 i32) - (local $$254 i32) - (local $$255 i32) - (local $$256 i32) - (local $$257 i32) - (local $$258 i32) - (local $$259 i32) - (local $$26 i32) - (local $$260 i32) - (local $$261 i32) - (local $$262 i32) - (local $$263 i32) - (local $$264 i32) - (local $$265 i32) - (local $$266 i32) - (local $$267 i32) - (local $$268 i32) - (local $$27 i32) - (local $$28 i32) - (local $$29 i32) - (local $$3 i32) - (local $$30 i32) - (local $$31 i32) - (local $$32 i32) - (local $$33 i32) - (local $$34 i32) - (local $$35 i32) - (local $$36 i32) - (local $$37 i32) - (local $$38 i32) - (local $$39 i32) - (local $$4 i32) - (local $$40 i32) - (local $$41 i32) - (local $$42 i32) - (local $$43 i32) - (local $$44 i32) - (local $$45 i32) - (local $$46 i32) - (local $$47 i32) - (local $$48 i32) - (local $$49 i32) - (local $$5 i32) - (local $$50 i32) - (local $$51 i32) - (local $$52 i32) - (local $$53 i32) - (local $$54 i32) - (local $$55 i32) - (local $$56 i32) - (local $$57 i32) - (local $$58 i32) - (local $$59 i32) - (local $$6 i32) - (local $$60 i32) - (local $$61 i32) - (local $$62 i32) - (local $$63 i32) - (local $$64 i32) - (local $$65 i32) - (local $$66 i32) - (local $$67 i32) - (local $$68 i32) - (local $$69 i32) - (local $$7 i32) - (local $$70 i32) - (local $$71 i32) - (local $$72 i32) - (local $$73 i32) - (local $$74 i32) - (local $$75 i32) - (local $$76 i32) - (local $$77 i32) - (local $$78 i32) - (local $$79 i32) - (local $$8 i32) - (local $$80 i32) - (local $$81 i32) - (local $$82 i32) - (local $$83 i32) - (local $$84 i32) - (local $$85 i32) - (local $$86 i32) - (local $$87 i32) - (local $$88 i32) - (local $$89 i32) - (local $$9 i32) - (local $$90 i32) - (local $$91 i32) - (local $$92 i32) - (local $$93 i32) - (local $$94 i32) - (local $$95 i32) - (local $$96 i32) - (local $$97 i32) - (local $$98 i32) - (local $$99 i32) - (local $$a$0 i32) - (local $$a$1 i32) - (local $$a$1$lcssa$i i32) - (local $$a$1549$i i32) - (local $$a$2 i32) - (local $$a$2$ph$i i32) - (local $$a$3$lcssa$i i32) - (local $$a$3539$i i32) - (local $$a$5$lcssa$i i32) - (local $$a$5521$i i32) - (local $$a$6$i i32) - (local $$a$8$i i32) - (local $$a$9$ph$i i32) - (local $$add i32) - (local $$add$i i32) - (local $$add$i$203 i32) - (local $$add$i$239 i32) - (local $$add$i$lcssa i32) - (local $$add$ptr i32) - (local $$add$ptr139 i32) - (local $$add$ptr205 i32) - (local $$add$ptr213$i i32) - (local $$add$ptr257 i32) - (local $$add$ptr311$i i32) - (local $$add$ptr311$z$4$i i32) - (local $$add$ptr340 i32) - (local $$add$ptr354$i i32) - (local $$add$ptr358$i i32) - (local $$add$ptr359 i32) - (local $$add$ptr373$i i32) - (local $$add$ptr43 i32) - (local $$add$ptr43$arrayidx31 i32) - (local $$add$ptr442$i i32) - (local $$add$ptr442$z$3$i i32) - (local $$add$ptr473 i32) - (local $$add$ptr65$i i32) - (local $$add$ptr671$i i32) - (local $$add$ptr742$i i32) - (local $$add$ptr88 i32) - (local $$add113$i i32) - (local $$add150$i i32) - (local $$add154$i i32) - (local $$add163$i i32) - (local $$add165$i i32) - (local $$add269 i32) - (local $$add269$p$0 i32) - (local $$add273$i i32) - (local $$add275$i i32) - (local $$add284$i i32) - (local $$add313$i i32) - (local $$add322 i32) - (local $$add355$i i32) - (local $$add395 i32) - (local $$add410$i f64) - (local $$add412 i32) - (local $$add414$i i32) - (local $$add441 i32) - (local $$add477$neg$i i32) - (local $$add561$i i32) - (local $$add608$i i32) - (local $$add612$i i32) - (local $$add620$i i32) - (local $$add653$i i32) - (local $$add67$i i32) - (local $$add737$i i32) - (local $$add810$i i32) - (local $$add87$i f64) - (local $$add90$i f64) - (local $$and i32) - (local $$and$i i32) - (local $$and$i$216 i32) - (local $$and$i$231 i32) - (local $$and$i$238 i32) - (local $$and$i$244 i32) - (local $$and$i$406$i i32) - (local $$and$i$412$i i32) - (local $$and$i$418$i i32) - (local $$and$i$424$i i32) - (local $$and$i$430$i i32) - (local $$and$i$436$i i32) - (local $$and$i$442$i i32) - (local $$and$i$448$i i32) - (local $$and$i$454$i i32) - (local $$and$i$460$i i32) - (local $$and$i$466$i i32) - (local $$and$i$472$i i32) - (local $$and$i$i i32) - (local $$and12$i i32) - (local $$and134$i i32) - (local $$and210 i32) - (local $$and214 i32) - (local $$and216 i32) - (local $$and219 i32) - (local $$and249 i32) - (local $$and254 i32) - (local $$and263 i32) - (local $$and282$i i32) - (local $$and289 i32) - (local $$and294 i32) - (local $$and309 i32) - (local $$and309$fl$4 i32) - (local $$and36$i i32) - (local $$and379$i i32) - (local $$and483$i i32) - (local $$and610$pre$phi$iZ2D i32) - (local $$and62$i i32) - (local $$arg i32) - (local $$arglist_current i32) - (local $$arglist_current2 i32) - (local $$arglist_next i32) - (local $$arglist_next3 i32) - (local $$argpos$0 i32) - (local $$arraydecay208$add$ptr213$i i32) - (local $$arrayidx$i i32) - (local $$arrayidx$i$236 i32) - (local $$arrayidx114 i32) - (local $$arrayidx117$i i32) - (local $$arrayidx119 i32) - (local $$arrayidx124 i32) - (local $$arrayidx132 i32) - (local $$arrayidx16 i32) - (local $$arrayidx173 i32) - (local $$arrayidx192 i32) - (local $$arrayidx251$i i32) - (local $$arrayidx31 i32) - (local $$arrayidx35 i32) - (local $$arrayidx370 i32) - (local $$arrayidx453$i i32) - (local $$arrayidx469 i32) - (local $$arrayidx481 i32) - (local $$arrayidx489$i i32) - (local $$arrayidx68 i32) - (local $$arrayidx73 i32) - (local $$arrayidx81 i32) - (local $$big$i i32) - (local $$buf i32) - (local $$buf$i i32) - (local $$call i32) - (local $$call344 i32) - (local $$call345 i32) - (local $$call356 i32) - (local $$call384 i32) - (local $$call411 i32) - (local $$call55$i f64) - (local $$carry$0544$i i32) - (local $$carry262$0535$i i32) - (local $$cmp i32) - (local $$cmp1 i32) - (local $$cmp103$i i32) - (local $$cmp105 i32) - (local $$cmp111 i32) - (local $$cmp116 i32) - (local $$cmp126 i32) - (local $$cmp127$i i32) - (local $$cmp13 i32) - (local $$cmp147$i i32) - (local $$cmp165 i32) - (local $$cmp176 i32) - (local $$cmp18 i32) - (local $$cmp181 i32) - (local $$cmp184 i32) - (local $$cmp188$i i32) - (local $$cmp196$i i32) - (local $$cmp205$i i32) - (local $$cmp211 i32) - (local $$cmp225$547$i i32) - (local $$cmp225$i i32) - (local $$cmp228$i i32) - (local $$cmp235$543$i i32) - (local $$cmp235$i i32) - (local $$cmp240 i32) - (local $$cmp249$i i32) - (local $$cmp259$537$i i32) - (local $$cmp259$i i32) - (local $$cmp265$i i32) - (local $$cmp270 i32) - (local $$cmp277$533$i i32) - (local $$cmp277$i i32) - (local $$cmp299$i i32) - (local $$cmp306 i32) - (local $$cmp308$i i32) - (local $$cmp315$i i32) - (local $$cmp323 i32) - (local $$cmp324$529$i i32) - (local $$cmp324$i i32) - (local $$cmp333$i i32) - (local $$cmp338$i i32) - (local $$cmp350$i i32) - (local $$cmp363$525$i i32) - (local $$cmp37 i32) - (local $$cmp374$i i32) - (local $$cmp377 i32) - (local $$cmp377$314 i32) - (local $$cmp38$i i32) - (local $$cmp385 i32) - (local $$cmp385$i i32) - (local $$cmp390 i32) - (local $$cmp390$i i32) - (local $$cmp397 i32) - (local $$cmp403$i i32) - (local $$cmp404 i32) - (local $$cmp404$324 i32) - (local $$cmp411$i i32) - (local $$cmp413 i32) - (local $$cmp416$519$i i32) - (local $$cmp416$i i32) - (local $$cmp420$i i32) - (local $$cmp421 i32) - (local $$cmp433$515$i i32) - (local $$cmp433$i i32) - (local $$cmp434 i32) - (local $$cmp442 i32) - (local $$cmp443$i i32) - (local $$cmp450$i i32) - (local $$cmp450$lcssa$i i32) - (local $$cmp466 i32) - (local $$cmp470$i i32) - (local $$cmp473$i i32) - (local $$cmp478 i32) - (local $$cmp478$295 i32) - (local $$cmp48$i i32) - (local $$cmp495$511$i i32) - (local $$cmp495$i i32) - (local $$cmp50 i32) - (local $$cmp50$308 i32) - (local $$cmp505$i i32) - (local $$cmp515$i i32) - (local $$cmp528$i i32) - (local $$cmp563$i i32) - (local $$cmp577$i i32) - (local $$cmp59$i i32) - (local $$cmp614$i i32) - (local $$cmp617$i i32) - (local $$cmp623$i i32) - (local $$cmp636$506$i i32) - (local $$cmp636$i i32) - (local $$cmp65 i32) - (local $$cmp660$i i32) - (local $$cmp665$i i32) - (local $$cmp673$i i32) - (local $$cmp678$491$i i32) - (local $$cmp678$i i32) - (local $$cmp686$i i32) - (local $$cmp707$486$i i32) - (local $$cmp707$i i32) - (local $$cmp710$487$i i32) - (local $$cmp710$i i32) - (local $$cmp722$483$i i32) - (local $$cmp722$i i32) - (local $$cmp727$i i32) - (local $$cmp745$i i32) - (local $$cmp748$499$i i32) - (local $$cmp748$i i32) - (local $$cmp75 i32) - (local $$cmp760$i i32) - (local $$cmp765$i i32) - (local $$cmp770$495$i i32) - (local $$cmp770$i i32) - (local $$cmp777$i i32) - (local $$cmp790$i i32) - (local $$cmp818$i i32) - (local $$cmp82$i i32) - (local $$cmp94$i i32) - (local $$cmp97 i32) - (local $$cnt$0 i32) - (local $$cnt$1 i32) - (local $$cnt$1$lcssa i32) - (local $$cond$i i32) - (local $$cond100$i i32) - (local $$cond233$i i32) - (local $$cond245 i32) - (local $$cond271$i i32) - (local $$cond304$i i32) - (local $$cond354 i32) - (local $$cond426 i32) - (local $$cond43$i i32) - (local $$cond53$i i32) - (local $$cond629$i i32) - (local $$cond732$i i32) - (local $$cond800$i i32) - (local $$conv$4$i i32) - (local $$conv$4$i$197 i32) - (local $$conv$4$i$211 i32) - (local $$conv$i i32) - (local $$conv$i$205 i32) - (local $$conv1$i i32) - (local $$conv111$i i32) - (local $$conv114$i i32) - (local $$conv116$i i32) - (local $$conv118$393$i i32) - (local $$conv120 i32) - (local $$conv121$i i32) - (local $$conv123$i f64) - (local $$conv134 i32) - (local $$conv163 i32) - (local $$conv174 i32) - (local $$conv174$lcssa i32) - (local $$conv207 i32) - (local $$conv216$i i32) - (local $$conv218$i f64) - (local $$conv229 i32) - (local $$conv232 i32) - (local $$conv242$i$lcssa i32) - (local $$conv32 i32) - (local $$conv48 i32) - (local $$conv48$307 i32) - (local $$conv48311 i32) - (local $$conv58 i32) - (local $$conv644$i i32) - (local $$conv646$i i32) - (local $$conv69 i32) - (local $$conv83 i32) - (local $$d$0$542$i i32) - (local $$d$0$i i32) - (local $$d$0545$i i32) - (local $$d$1534$i i32) - (local $$d$2$lcssa$i i32) - (local $$d$2520$i i32) - (local $$d$4$i i32) - (local $$d$5494$i i32) - (local $$d$6488$i i32) - (local $$d$7500$i i32) - (local $$dec$i i32) - (local $$dec476$i i32) - (local $$dec481$i i32) - (local $$dec78$i i32) - (local $$div274$i i32) - (local $$div356$i i32) - (local $$div378$i i32) - (local $$div384$i i32) - (local $$e$0531$i i32) - (local $$e$1$i i32) - (local $$e$2517$i i32) - (local $$e$4$i i32) - (local $$e$5$ph$i i32) - (local $$e2$i i32) - (local $$ebuf0$i i32) - (local $$estr$0$i i32) - (local $$estr$1$lcssa$i i32) - (local $$estr$1507$i i32) - (local $$estr$2$i i32) - (local $$exitcond$i i32) - (local $$expanded i32) - (local $$expanded10 i32) - (local $$expanded11 i32) - (local $$expanded13 i32) - (local $$expanded14 i32) - (local $$expanded15 i32) - (local $$expanded4 i32) - (local $$expanded6 i32) - (local $$expanded7 i32) - (local $$expanded8 i32) - (local $$fl$0284 i32) - (local $$fl$0310 i32) - (local $$fl$1 i32) - (local $$fl$1$and219 i32) - (local $$fl$3 i32) - (local $$fl$4 i32) - (local $$fl$6 i32) - (local $$i$0$lcssa i32) - (local $$i$0$lcssa368 i32) - (local $$i$0316 i32) - (local $$i$0530$i i32) - (local $$i$07$i i32) - (local $$i$07$i$201 i32) - (local $$i$1$lcssa$i i32) - (local $$i$1325 i32) - (local $$i$1526$i i32) - (local $$i$2299 i32) - (local $$i$2299$lcssa i32) - (local $$i$2516$i i32) - (local $$i$3296 i32) - (local $$i$3512$i i32) - (local $$i137 i32) - (local $$i86 i32) - (local $$idxprom$i i32) - (local $$inc i32) - (local $$inc$i i32) - (local $$inc425$i i32) - (local $$inc438$i i32) - (local $$inc468$i i32) - (local $$inc488 i32) - (local $$inc500$i i32) - (local $$incdec$ptr i32) - (local $$incdec$ptr$i i32) - (local $$incdec$ptr$i$204 i32) - (local $$incdec$ptr$i$212 i32) - (local $$incdec$ptr$i$212$lcssa i32) - (local $$incdec$ptr$i$225 i32) - (local $$incdec$ptr$i$lcssa i32) - (local $$incdec$ptr106$i i32) - (local $$incdec$ptr112$i i32) - (local $$incdec$ptr115$i i32) - (local $$incdec$ptr122$i i32) - (local $$incdec$ptr137$i i32) - (local $$incdec$ptr169 i32) - (local $$incdec$ptr169$lcssa i32) - (local $$incdec$ptr169269 i32) - (local $$incdec$ptr169271 i32) - (local $$incdec$ptr169271$lcssa414 i32) - (local $$incdec$ptr169272 i32) - (local $$incdec$ptr169274 i32) - (local $$incdec$ptr169275 i32) - (local $$incdec$ptr169276$lcssa i32) - (local $$incdec$ptr169276301 i32) - (local $$incdec$ptr217$i i32) - (local $$incdec$ptr217$i$lcssa i32) - (local $$incdec$ptr23 i32) - (local $$incdec$ptr246$i i32) - (local $$incdec$ptr288$i i32) - (local $$incdec$ptr292$570$i i32) - (local $$incdec$ptr292$a$3$571$i i32) - (local $$incdec$ptr292$a$3$i i32) - (local $$incdec$ptr292$a$3573$i i32) - (local $$incdec$ptr292$i i32) - (local $$incdec$ptr296$i i32) - (local $$incdec$ptr383 i32) - (local $$incdec$ptr410 i32) - (local $$incdec$ptr419$i i32) - (local $$incdec$ptr423$i i32) - (local $$incdec$ptr62 i32) - (local $$incdec$ptr639$i i32) - (local $$incdec$ptr645$i i32) - (local $$incdec$ptr647$i i32) - (local $$incdec$ptr681$i i32) - (local $$incdec$ptr689$i i32) - (local $$incdec$ptr698$i i32) - (local $$incdec$ptr698$i$lcssa i32) - (local $$incdec$ptr725$i i32) - (local $$incdec$ptr734$i i32) - (local $$incdec$ptr773$i i32) - (local $$incdec$ptr776$i i32) - (local $$incdec$ptr808$i i32) - (local $$isdigit i32) - (local $$isdigit$6$i i32) - (local $$isdigit$6$i$199 i32) - (local $$isdigit$i i32) - (local $$isdigit$i$207 i32) - (local $$isdigit188 i32) - (local $$isdigit190 i32) - (local $$isdigittmp i32) - (local $$isdigittmp$ i32) - (local $$isdigittmp$5$i i32) - (local $$isdigittmp$5$i$198 i32) - (local $$isdigittmp$i i32) - (local $$isdigittmp$i$206 i32) - (local $$isdigittmp187 i32) - (local $$isdigittmp189 i32) - (local $$isdigittmp8$i i32) - (local $$isdigittmp8$i$200 i32) - (local $$j$0$524$i i32) - (local $$j$0$i i32) - (local $$j$0527$i i32) - (local $$j$1513$i i32) - (local $$j$2$i i32) - (local $$l$0 i32) - (local $$l$0$i i32) - (local $$l$1$i i32) - (local $$l$1315 i32) - (local $$l$2 i32) - (local $$l10n$0 i32) - (local $$l10n$0$lcssa i32) - (local $$l10n$0$phi i32) - (local $$l10n$1 i32) - (local $$l10n$2 i32) - (local $$l10n$3 i32) - (local $$land$ext$neg$i i32) - (local $$lnot$ext i32) - (local $$lnot$i i32) - (local $$lnot455$i i32) - (local $$lnot483 i32) - (local $$lor$ext$i i32) - (local $$mb i32) - (local $$mul$i i32) - (local $$mul$i$202 i32) - (local $$mul$i$240 f64) - (local $$mul125$i f64) - (local $$mul202$i f64) - (local $$mul220$i f64) - (local $$mul286$i i32) - (local $$mul286$i$lcssa i32) - (local $$mul322$i i32) - (local $$mul328$i i32) - (local $$mul335$i i32) - (local $$mul349$i i32) - (local $$mul367$i i32) - (local $$mul406$i f64) - (local $$mul407$i f64) - (local $$mul431$i i32) - (local $$mul437$i i32) - (local $$mul499$i i32) - (local $$mul513$i i32) - (local $$mul80$i f64) - (local $$mul80$i$lcssa f64) - (local $$notlhs$i i32) - (local $$notrhs$i i32) - (local $$or i32) - (local $$or$cond i32) - (local $$or$cond$i i32) - (local $$or$cond1$not$i i32) - (local $$or$cond192 i32) - (local $$or$cond193 i32) - (local $$or$cond195 i32) - (local $$or$cond2$i i32) - (local $$or$cond384 i32) - (local $$or$cond395$i i32) - (local $$or$cond397$i i32) - (local $$or$cond401$i i32) - (local $$or$i i32) - (local $$or$i$241 i32) - (local $$or100 i32) - (local $$or120$i i32) - (local $$or246 i32) - (local $$or504$i i32) - (local $$or613$i i32) - (local $$p$0 i32) - (local $$p$1 i32) - (local $$p$2 i32) - (local $$p$2$add322 i32) - (local $$p$3 i32) - (local $$p$4365 i32) - (local $$p$5 i32) - (local $$p$addr$2$$sub514398$i i32) - (local $$p$addr$2$$sub562399$i i32) - (local $$p$addr$2$i i32) - (local $$p$addr$3$i i32) - (local $$p$addr$4$lcssa$i i32) - (local $$p$addr$4489$i i32) - (local $$p$addr$5$lcssa$i i32) - (local $$p$addr$5501$i i32) - (local $$pl$0 i32) - (local $$pl$0$i i32) - (local $$pl$1 i32) - (local $$pl$1$i i32) - (local $$pl$2 i32) - (local $$prefix$0 i32) - (local $$prefix$0$add$ptr65$i i32) - (local $$prefix$0$i i32) - (local $$prefix$1 i32) - (local $$prefix$2 i32) - (local $$r$0$a$9$i i32) - (local $$re$1482$i i32) - (local $$rem360$i i32) - (local $$rem370$i i32) - (local $$rem494$510$i i32) - (local $$rem494$i i32) - (local $$retval$0 i32) - (local $$retval$0$i i32) - (local $$round$0481$i f64) - (local $$round377$1$i f64) - (local $$s$0$i i32) - (local $$s$1$i i32) - (local $$s$1$i$lcssa i32) - (local $$s$addr$0$lcssa$i$229 i32) - (local $$s$addr$06$i i32) - (local $$s$addr$06$i$221 i32) - (local $$s35$0$i i32) - (local $$s668$0492$i i32) - (local $$s668$1$i i32) - (local $$s715$0$lcssa$i i32) - (local $$s715$0484$i i32) - (local $$s753$0$i i32) - (local $$s753$1496$i i32) - (local $$s753$2$i i32) - (local $$shl i32) - (local $$shl280$i i32) - (local $$shl60 i32) - (local $$shr i32) - (local $$shr283$i i32) - (local $$shr285$i i32) - (local $$small$0$i f64) - (local $$small$1$i f64) - (local $$st$0 i32) - (local $$st$0$lcssa415 i32) - (local $$storemerge i32) - (local $$storemerge$186282 i32) - (local $$storemerge$186309 i32) - (local $$storemerge$191 i32) - (local $$sub i32) - (local $$sub$i f64) - (local $$sub$ptr$div$i i32) - (local $$sub$ptr$div321$i i32) - (local $$sub$ptr$div347$i i32) - (local $$sub$ptr$div430$i i32) - (local $$sub$ptr$div511$i i32) - (local $$sub$ptr$lhs$cast i32) - (local $$sub$ptr$lhs$cast$i i32) - (local $$sub$ptr$lhs$cast160$i i32) - (local $$sub$ptr$lhs$cast305$i i32) - (local $$sub$ptr$lhs$cast317 i32) - (local $$sub$ptr$lhs$cast344$i i32) - (local $$sub$ptr$lhs$cast361 i32) - (local $$sub$ptr$lhs$cast431 i32) - (local $$sub$ptr$lhs$cast508$i i32) - (local $$sub$ptr$lhs$cast694$i i32) - (local $$sub$ptr$rhs$cast i32) - (local $$sub$ptr$rhs$cast$i i32) - (local $$sub$ptr$rhs$cast152$i i32) - (local $$sub$ptr$rhs$cast161$i i32) - (local $$sub$ptr$rhs$cast174$i i32) - (local $$sub$ptr$rhs$cast267 i32) - (local $$sub$ptr$rhs$cast306$i i32) - (local $$sub$ptr$rhs$cast318 i32) - (local $$sub$ptr$rhs$cast319$i i32) - (local $$sub$ptr$rhs$cast345$i i32) - (local $$sub$ptr$rhs$cast362 i32) - (local $$sub$ptr$rhs$cast428$i i32) - (local $$sub$ptr$rhs$cast432 i32) - (local $$sub$ptr$rhs$cast634$504$i i32) - (local $$sub$ptr$rhs$cast634$i i32) - (local $$sub$ptr$rhs$cast649$i i32) - (local $$sub$ptr$rhs$cast695$i i32) - (local $$sub$ptr$rhs$cast788$i i32) - (local $$sub$ptr$rhs$cast812$i i32) - (local $$sub$ptr$sub i32) - (local $$sub$ptr$sub$i i32) - (local $$sub$ptr$sub145$i i32) - (local $$sub$ptr$sub153$i i32) - (local $$sub$ptr$sub159$i i32) - (local $$sub$ptr$sub162$i i32) - (local $$sub$ptr$sub172$i i32) - (local $$sub$ptr$sub175$i i32) - (local $$sub$ptr$sub268 i32) - (local $$sub$ptr$sub307$i i32) - (local $$sub$ptr$sub319 i32) - (local $$sub$ptr$sub320$i i32) - (local $$sub$ptr$sub346$i i32) - (local $$sub$ptr$sub363 i32) - (local $$sub$ptr$sub429$i i32) - (local $$sub$ptr$sub433 i32) - (local $$sub$ptr$sub433$p$5 i32) - (local $$sub$ptr$sub510$i i32) - (local $$sub$ptr$sub635$505$i i32) - (local $$sub$ptr$sub635$i i32) - (local $$sub$ptr$sub650$i i32) - (local $$sub$ptr$sub650$pn$i i32) - (local $$sub$ptr$sub696$i i32) - (local $$sub$ptr$sub789$i i32) - (local $$sub$ptr$sub813$i i32) - (local $$sub101 i32) - (local $$sub124$i f64) - (local $$sub135 i32) - (local $$sub146$i i32) - (local $$sub164 i32) - (local $$sub175 i32) - (local $$sub181$i i32) - (local $$sub203$i i32) - (local $$sub219$i f64) - (local $$sub256$i i32) - (local $$sub264$i i32) - (local $$sub281$i i32) - (local $$sub336$i i32) - (local $$sub343$i i32) - (local $$sub357$i i32) - (local $$sub389 i32) - (local $$sub409$i i32) - (local $$sub478$i i32) - (local $$sub480$i i32) - (local $$sub514$i i32) - (local $$sub54 i32) - (local $$sub562$i i32) - (local $$sub59 i32) - (local $$sub626$le$i i32) - (local $$sub735$i i32) - (local $$sub74$i i32) - (local $$sub806$i i32) - (local $$sub84 i32) - (local $$sub85$i f64) - (local $$sub86$i f64) - (local $$sub88$i f64) - (local $$sub91$i f64) - (local $$sub97$i i32) - (local $$sum i32) - (local $$t$0 i32) - (local $$t$1 i32) - (local $$t$addr$0$i i32) - (local $$t$addr$1$i i32) - (local $$tobool i32) - (local $$tobool$i i32) - (local $$tobool$i$217 i32) - (local $$tobool$i$232 i32) - (local $$tobool$i$245 i32) - (local $$tobool$i$407$i i32) - (local $$tobool$i$413$i i32) - (local $$tobool$i$419$i i32) - (local $$tobool$i$425$i i32) - (local $$tobool$i$431$i i32) - (local $$tobool$i$437$i i32) - (local $$tobool$i$443$i i32) - (local $$tobool$i$449$i i32) - (local $$tobool$i$455$i i32) - (local $$tobool$i$461$i i32) - (local $$tobool$i$467$i i32) - (local $$tobool$i$473$i i32) - (local $$tobool$i$i i32) - (local $$tobool13$i i32) - (local $$tobool135$i i32) - (local $$tobool139$i i32) - (local $$tobool140$i i32) - (local $$tobool141 i32) - (local $$tobool178 i32) - (local $$tobool208 i32) - (local $$tobool217 i32) - (local $$tobool222$i i32) - (local $$tobool244$i i32) - (local $$tobool25 i32) - (local $$tobool255 i32) - (local $$tobool264 i32) - (local $$tobool28 i32) - (local $$tobool290 i32) - (local $$tobool290$569$i i32) - (local $$tobool290$i i32) - (local $$tobool294$i i32) - (local $$tobool295 i32) - (local $$tobool314 i32) - (local $$tobool341$i i32) - (local $$tobool349 i32) - (local $$tobool357 i32) - (local $$tobool37$i i32) - (local $$tobool371$i i32) - (local $$tobool380 i32) - (local $$tobool380$i i32) - (local $$tobool400$i i32) - (local $$tobool407 i32) - (local $$tobool459 i32) - (local $$tobool462 i32) - (local $$tobool470 i32) - (local $$tobool484$i i32) - (local $$tobool490$i i32) - (local $$tobool55 i32) - (local $$tobool56$i i32) - (local $$tobool63$i i32) - (local $$tobool76$i i32) - (local $$tobool76552$i i32) - (local $$tobool781$i i32) - (local $$tobool79$i i32) - (local $$tobool9$i i32) - (local $$tobool90 i32) - (local $$w$0 i32) - (local $$w$1 i32) - (local $$w$2 i32) - (local $$w$add165$i i32) - (local $$w$add653$i i32) - (local $$wc i32) - (local $$ws$0317 i32) - (local $$ws$1326 i32) - (local $$xor i32) - (local $$xor$i i32) - (local $$xor167$i i32) - (local $$xor186$i i32) - (local $$xor449 i32) - (local $$xor457 i32) - (local $$xor655$i i32) - (local $$xor816$i i32) - (local $$y$addr$0$i f64) - (local $$y$addr$1$i f64) - (local $$y$addr$2$i f64) - (local $$y$addr$3$i f64) - (local $$y$addr$4$i f64) - (local $$z$0$i i32) - (local $$z$0$lcssa i32) - (local $$z$0302 i32) - (local $$z$1 i32) - (local $$z$1$lcssa$i i32) - (local $$z$1548$i i32) - (local $$z$2 i32) - (local $$z$2$i i32) - (local $$z$2$i$lcssa i32) - (local $$z$3$lcssa$i i32) - (local $$z$3538$i i32) - (local $$z$4$i i32) - (local $$z$7$add$ptr742$i i32) - (local $$z$7$i i32) - (local $$z$7$i$lcssa i32) - (local $$z$7$ph$i i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 624) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$big$i - (i32.add - (local.get $sp) - (i32.const 24) - ) - ) - (local.set $$e2$i - (i32.add - (local.get $sp) - (i32.const 16) - ) - ) - (local.set $$buf$i - (i32.add - (local.get $sp) - (i32.const 588) - ) - ) - (local.set $$ebuf0$i - (i32.add - (local.get $sp) - (i32.const 576) - ) - ) - (local.set $$arg - (local.get $sp) - ) - (local.set $$buf - (i32.add - (local.get $sp) - (i32.const 536) - ) - ) - (local.set $$wc - (i32.add - (local.get $sp) - (i32.const 8) - ) - ) - (local.set $$mb - (i32.add - (local.get $sp) - (i32.const 528) - ) - ) - (local.set $$tobool25 - (i32.ne - (local.get $$f) - (i32.const 0) - ) - ) - (local.set $$add$ptr205 - (i32.add - (local.get $$buf) - (i32.const 40) - ) - ) - (local.set $$sub$ptr$lhs$cast317 - (local.get $$add$ptr205) - ) - (local.set $$add$ptr340 - (i32.add - (local.get $$buf) - (i32.const 39) - ) - ) - (local.set $$arrayidx370 - (i32.add - (local.get $$wc) - (i32.const 4) - ) - ) - (local.set $$arrayidx$i$236 - (i32.add - (local.get $$ebuf0$i) - (i32.const 12) - ) - ) - (local.set $$incdec$ptr106$i - (i32.add - (local.get $$ebuf0$i) - (i32.const 11) - ) - ) - (local.set $$sub$ptr$rhs$cast$i - (local.get $$buf$i) - ) - (local.set $$sub$ptr$lhs$cast160$i - (local.get $$arrayidx$i$236) - ) - (local.set $$sub$ptr$sub159$i - (i32.sub - (local.get $$sub$ptr$lhs$cast160$i) - (local.get $$sub$ptr$rhs$cast$i) - ) - ) - (local.set $$sub$ptr$sub145$i - (i32.sub - (i32.const -2) - (local.get $$sub$ptr$rhs$cast$i) - ) - ) - (local.set $$sub$ptr$sub153$i - (i32.add - (local.get $$sub$ptr$lhs$cast160$i) - (i32.const 2) - ) - ) - (local.set $$add$ptr213$i - (i32.add - (local.get $$big$i) - (i32.const 288) - ) - ) - (local.set $$add$ptr671$i - (i32.add - (local.get $$buf$i) - (i32.const 9) - ) - ) - (local.set $$sub$ptr$lhs$cast694$i - (local.get $$add$ptr671$i) - ) - (local.set $$incdec$ptr689$i - (i32.add - (local.get $$buf$i) - (i32.const 8) - ) - ) - (local.set $$cnt$0 - (i32.const 0) - ) - (local.set $$incdec$ptr169275 - (local.get $$fmt) - ) - (local.set $$l$0 - (i32.const 0) - ) - (local.set $$l10n$0 - (i32.const 0) - ) - (loop $label$continue$L1 - (block $label$break$L1 - (local.set $$cmp - (i32.gt_s - (local.get $$cnt$0) - (i32.const -1) - ) - ) - (block $do-once - (if - (local.get $$cmp) - (block - (local.set $$sub - (i32.sub - (i32.const 2147483647) - (local.get $$cnt$0) - ) - ) - (local.set $$cmp1 - (i32.gt_s - (local.get $$l$0) - (local.get $$sub) - ) - ) - (if - (local.get $$cmp1) - (block - (local.set $$call - (call $___errno_location) - ) - (i32.store - (local.get $$call) - (i32.const 75) - ) - (local.set $$cnt$1 - (i32.const -1) - ) - (br $do-once) - ) - (block - (local.set $$add - (i32.add - (local.get $$l$0) - (local.get $$cnt$0) - ) - ) - (local.set $$cnt$1 - (local.get $$add) - ) - (br $do-once) - ) - ) - ) - (local.set $$cnt$1 - (local.get $$cnt$0) - ) - ) - ) - (local.set $$0 - (i32.load8_s - (local.get $$incdec$ptr169275) - ) - ) - (local.set $$tobool - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$0) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (block - (local.set $$cnt$1$lcssa - (local.get $$cnt$1) - ) - (local.set $$l10n$0$lcssa - (local.get $$l10n$0) - ) - (local.set $label - (i32.const 242) - ) - (br $label$break$L1) - ) - (block - (local.set $$1 - (local.get $$0) - ) - (local.set $$incdec$ptr169274 - (local.get $$incdec$ptr169275) - ) - ) - ) - (loop $label$continue$L9 - (block $label$break$L9 - (block $switch - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case0 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default - (i32.sub - (i32.shr_s - (i32.shl - (local.get $$1) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - ) - ) - (block - (local.set $$incdec$ptr169276301 - (local.get $$incdec$ptr169274) - ) - (local.set $$z$0302 - (local.get $$incdec$ptr169274) - ) - (local.set $label - (i32.const 9) - ) - (br $label$break$L9) - (br $switch) - ) - ) - (block - (local.set $$incdec$ptr169276$lcssa - (local.get $$incdec$ptr169274) - ) - (local.set $$z$0$lcssa - (local.get $$incdec$ptr169274) - ) - (br $label$break$L9) - (br $switch) - ) - ) - (nop) - ) - (local.set $$incdec$ptr - (i32.add - (local.get $$incdec$ptr169274) - (i32.const 1) - ) - ) - (local.set $$$pre - (i32.load8_s - (local.get $$incdec$ptr) - ) - ) - (local.set $$1 - (local.get $$$pre) - ) - (local.set $$incdec$ptr169274 - (local.get $$incdec$ptr) - ) - (br $label$continue$L9) - ) - ) - (block $label$break$L12 - (if - (i32.eq - (local.get $label) - (i32.const 9) - ) - (loop $while-in - (block $while-out - (local.set $label - (i32.const 0) - ) - (local.set $$arrayidx16 - (i32.add - (local.get $$incdec$ptr169276301) - (i32.const 1) - ) - ) - (local.set $$2 - (i32.load8_s - (local.get $$arrayidx16) - ) - ) - (local.set $$cmp18 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$2) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 37) - ) - ) - (if - (i32.eqz - (local.get $$cmp18) - ) - (block - (local.set $$incdec$ptr169276$lcssa - (local.get $$incdec$ptr169276301) - ) - (local.set $$z$0$lcssa - (local.get $$z$0302) - ) - (br $label$break$L12) - ) - ) - (local.set $$incdec$ptr23 - (i32.add - (local.get $$z$0302) - (i32.const 1) - ) - ) - (local.set $$add$ptr - (i32.add - (local.get $$incdec$ptr169276301) - (i32.const 2) - ) - ) - (local.set $$3 - (i32.load8_s - (local.get $$add$ptr) - ) - ) - (local.set $$cmp13 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$3) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 37) - ) - ) - (if - (local.get $$cmp13) - (block - (local.set $$incdec$ptr169276301 - (local.get $$add$ptr) - ) - (local.set $$z$0302 - (local.get $$incdec$ptr23) - ) - (local.set $label - (i32.const 9) - ) - ) - (block - (local.set $$incdec$ptr169276$lcssa - (local.get $$add$ptr) - ) - (local.set $$z$0$lcssa - (local.get $$incdec$ptr23) - ) - (br $while-out) - ) - ) - (br $while-in) - ) - ) - ) - ) - (local.set $$sub$ptr$lhs$cast - (local.get $$z$0$lcssa) - ) - (local.set $$sub$ptr$rhs$cast - (local.get $$incdec$ptr169275) - ) - (local.set $$sub$ptr$sub - (i32.sub - (local.get $$sub$ptr$lhs$cast) - (local.get $$sub$ptr$rhs$cast) - ) - ) - (if - (local.get $$tobool25) - (block - (local.set $$4 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i - (i32.and - (local.get $$4) - (i32.const 32) - ) - ) - (local.set $$tobool$i - (i32.eq - (local.get $$and$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i) - (drop - (call $___fwritex - (local.get $$incdec$ptr169275) - (local.get $$sub$ptr$sub) - (local.get $$f) - ) - ) - ) - ) - ) - (local.set $$tobool28 - (i32.eq - (local.get $$z$0$lcssa) - (local.get $$incdec$ptr169275) - ) - ) - (if - (i32.eqz - (local.get $$tobool28) - ) - (block - (local.set $$l10n$0$phi - (local.get $$l10n$0) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169276$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$0$phi) - ) - (br $label$continue$L1) - ) - ) - (local.set $$arrayidx31 - (i32.add - (local.get $$incdec$ptr169276$lcssa) - (i32.const 1) - ) - ) - (local.set $$5 - (i32.load8_s - (local.get $$arrayidx31) - ) - ) - (local.set $$conv32 - (i32.shr_s - (i32.shl - (local.get $$5) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$isdigittmp - (i32.add - (local.get $$conv32) - (i32.const -48) - ) - ) - (local.set $$isdigit - (i32.lt_u - (local.get $$isdigittmp) - (i32.const 10) - ) - ) - (if - (local.get $$isdigit) - (block - (local.set $$arrayidx35 - (i32.add - (local.get $$incdec$ptr169276$lcssa) - (i32.const 2) - ) - ) - (local.set $$6 - (i32.load8_s - (local.get $$arrayidx35) - ) - ) - (local.set $$cmp37 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$6) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 36) - ) - ) - (local.set $$add$ptr43 - (i32.add - (local.get $$incdec$ptr169276$lcssa) - (i32.const 3) - ) - ) - (local.set $$add$ptr43$arrayidx31 - (if (result i32) - (local.get $$cmp37) - (local.get $$add$ptr43) - (local.get $$arrayidx31) - ) - ) - (local.set $$$l10n$0 - (if (result i32) - (local.get $$cmp37) - (i32.const 1) - (local.get $$l10n$0) - ) - ) - (local.set $$isdigittmp$ - (if (result i32) - (local.get $$cmp37) - (local.get $$isdigittmp) - (i32.const -1) - ) - ) - (local.set $$$pre357 - (i32.load8_s - (local.get $$add$ptr43$arrayidx31) - ) - ) - (local.set $$7 - (local.get $$$pre357) - ) - (local.set $$argpos$0 - (local.get $$isdigittmp$) - ) - (local.set $$l10n$1 - (local.get $$$l10n$0) - ) - (local.set $$storemerge - (local.get $$add$ptr43$arrayidx31) - ) - ) - (block - (local.set $$7 - (local.get $$5) - ) - (local.set $$argpos$0 - (i32.const -1) - ) - (local.set $$l10n$1 - (local.get $$l10n$0) - ) - (local.set $$storemerge - (local.get $$arrayidx31) - ) - ) - ) - (local.set $$conv48$307 - (i32.shr_s - (i32.shl - (local.get $$7) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$8 - (i32.and - (local.get $$conv48$307) - (i32.const -32) - ) - ) - (local.set $$cmp50$308 - (i32.eq - (local.get $$8) - (i32.const 32) - ) - ) - (block $label$break$L25 - (if - (local.get $$cmp50$308) - (block - (local.set $$9 - (local.get $$7) - ) - (local.set $$conv48311 - (local.get $$conv48$307) - ) - (local.set $$fl$0310 - (i32.const 0) - ) - (local.set $$storemerge$186309 - (local.get $$storemerge) - ) - (loop $while-in4 - (block $while-out3 - (local.set $$sub54 - (i32.add - (local.get $$conv48311) - (i32.const -32) - ) - ) - (local.set $$shl - (i32.shl - (i32.const 1) - (local.get $$sub54) - ) - ) - (local.set $$and - (i32.and - (local.get $$shl) - (i32.const 75913) - ) - ) - (local.set $$tobool55 - (i32.eq - (local.get $$and) - (i32.const 0) - ) - ) - (if - (local.get $$tobool55) - (block - (local.set $$12 - (local.get $$9) - ) - (local.set $$fl$0284 - (local.get $$fl$0310) - ) - (local.set $$storemerge$186282 - (local.get $$storemerge$186309) - ) - (br $label$break$L25) - ) - ) - (local.set $$conv58 - (i32.shr_s - (i32.shl - (local.get $$9) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$sub59 - (i32.add - (local.get $$conv58) - (i32.const -32) - ) - ) - (local.set $$shl60 - (i32.shl - (i32.const 1) - (local.get $$sub59) - ) - ) - (local.set $$or - (i32.or - (local.get $$shl60) - (local.get $$fl$0310) - ) - ) - (local.set $$incdec$ptr62 - (i32.add - (local.get $$storemerge$186309) - (i32.const 1) - ) - ) - (local.set $$10 - (i32.load8_s - (local.get $$incdec$ptr62) - ) - ) - (local.set $$conv48 - (i32.shr_s - (i32.shl - (local.get $$10) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$11 - (i32.and - (local.get $$conv48) - (i32.const -32) - ) - ) - (local.set $$cmp50 - (i32.eq - (local.get $$11) - (i32.const 32) - ) - ) - (if - (local.get $$cmp50) - (block - (local.set $$9 - (local.get $$10) - ) - (local.set $$conv48311 - (local.get $$conv48) - ) - (local.set $$fl$0310 - (local.get $$or) - ) - (local.set $$storemerge$186309 - (local.get $$incdec$ptr62) - ) - ) - (block - (local.set $$12 - (local.get $$10) - ) - (local.set $$fl$0284 - (local.get $$or) - ) - (local.set $$storemerge$186282 - (local.get $$incdec$ptr62) - ) - (br $while-out3) - ) - ) - (br $while-in4) - ) - ) - ) - (block - (local.set $$12 - (local.get $$7) - ) - (local.set $$fl$0284 - (i32.const 0) - ) - (local.set $$storemerge$186282 - (local.get $$storemerge) - ) - ) - ) - ) - (local.set $$cmp65 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$12) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 42) - ) - ) - (block $do-once5 - (if - (local.get $$cmp65) - (block - (local.set $$arrayidx68 - (i32.add - (local.get $$storemerge$186282) - (i32.const 1) - ) - ) - (local.set $$13 - (i32.load8_s - (local.get $$arrayidx68) - ) - ) - (local.set $$conv69 - (i32.shr_s - (i32.shl - (local.get $$13) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$isdigittmp189 - (i32.add - (local.get $$conv69) - (i32.const -48) - ) - ) - (local.set $$isdigit190 - (i32.lt_u - (local.get $$isdigittmp189) - (i32.const 10) - ) - ) - (if - (local.get $$isdigit190) - (block - (local.set $$arrayidx73 - (i32.add - (local.get $$storemerge$186282) - (i32.const 2) - ) - ) - (local.set $$14 - (i32.load8_s - (local.get $$arrayidx73) - ) - ) - (local.set $$cmp75 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$14) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 36) - ) - ) - (if - (local.get $$cmp75) - (block - (local.set $$arrayidx81 - (i32.add - (local.get $$nl_type) - (i32.shl - (local.get $$isdigittmp189) - (i32.const 2) - ) - ) - ) - (i32.store - (local.get $$arrayidx81) - (i32.const 10) - ) - (local.set $$15 - (i32.load8_s - (local.get $$arrayidx68) - ) - ) - (local.set $$conv83 - (i32.shr_s - (i32.shl - (local.get $$15) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$sub84 - (i32.add - (local.get $$conv83) - (i32.const -48) - ) - ) - (local.set $$i86 - (i32.add - (local.get $$nl_arg) - (i32.shl - (local.get $$sub84) - (i32.const 3) - ) - ) - ) - (local.set $$16 - (local.get $$i86) - ) - (local.set $$17 - (local.get $$16) - ) - (local.set $$18 - (i32.load - (local.get $$17) - ) - ) - (local.set $$19 - (i32.add - (local.get $$16) - (i32.const 4) - ) - ) - (local.set $$20 - (local.get $$19) - ) - (local.set $$21 - (i32.load - (local.get $$20) - ) - ) - (local.set $$add$ptr88 - (i32.add - (local.get $$storemerge$186282) - (i32.const 3) - ) - ) - (local.set $$l10n$2 - (i32.const 1) - ) - (local.set $$storemerge$191 - (local.get $$add$ptr88) - ) - (local.set $$w$0 - (local.get $$18) - ) - ) - (local.set $label - (i32.const 24) - ) - ) - ) - (local.set $label - (i32.const 24) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 24) - ) - (block - (local.set $label - (i32.const 0) - ) - (local.set $$tobool90 - (i32.eq - (local.get $$l10n$1) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool90) - ) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (if - (i32.eqz - (local.get $$tobool25) - ) - (block - (local.set $$fl$1 - (local.get $$fl$0284) - ) - (local.set $$incdec$ptr169269 - (local.get $$arrayidx68) - ) - (local.set $$l10n$3 - (i32.const 0) - ) - (local.set $$w$1 - (i32.const 0) - ) - (br $do-once5) - ) - ) - (local.set $$arglist_current - (i32.load - (local.get $$ap) - ) - ) - (local.set $$22 - (local.get $$arglist_current) - ) - (local.set $$23 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded4 - (local.get $$23) - ) - (local.set $$expanded - (i32.sub - (local.get $$expanded4) - (i32.const 1) - ) - ) - (local.set $$24 - (i32.add - (local.get $$22) - (local.get $$expanded) - ) - ) - (local.set $$25 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded8 - (local.get $$25) - ) - (local.set $$expanded7 - (i32.sub - (local.get $$expanded8) - (i32.const 1) - ) - ) - (local.set $$expanded6 - (i32.xor - (local.get $$expanded7) - (i32.const -1) - ) - ) - (local.set $$26 - (i32.and - (local.get $$24) - (local.get $$expanded6) - ) - ) - (local.set $$27 - (local.get $$26) - ) - (local.set $$28 - (i32.load - (local.get $$27) - ) - ) - (local.set $$arglist_next - (i32.add - (local.get $$27) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next) - ) - (local.set $$l10n$2 - (i32.const 0) - ) - (local.set $$storemerge$191 - (local.get $$arrayidx68) - ) - (local.set $$w$0 - (local.get $$28) - ) - ) - ) - (local.set $$cmp97 - (i32.lt_s - (local.get $$w$0) - (i32.const 0) - ) - ) - (if - (local.get $$cmp97) - (block - (local.set $$or100 - (i32.or - (local.get $$fl$0284) - (i32.const 8192) - ) - ) - (local.set $$sub101 - (i32.sub - (i32.const 0) - (local.get $$w$0) - ) - ) - (local.set $$fl$1 - (local.get $$or100) - ) - (local.set $$incdec$ptr169269 - (local.get $$storemerge$191) - ) - (local.set $$l10n$3 - (local.get $$l10n$2) - ) - (local.set $$w$1 - (local.get $$sub101) - ) - ) - (block - (local.set $$fl$1 - (local.get $$fl$0284) - ) - (local.set $$incdec$ptr169269 - (local.get $$storemerge$191) - ) - (local.set $$l10n$3 - (local.get $$l10n$2) - ) - (local.set $$w$1 - (local.get $$w$0) - ) - ) - ) - ) - (block - (local.set $$conv$4$i - (i32.shr_s - (i32.shl - (local.get $$12) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$isdigittmp$5$i - (i32.add - (local.get $$conv$4$i) - (i32.const -48) - ) - ) - (local.set $$isdigit$6$i - (i32.lt_u - (local.get $$isdigittmp$5$i) - (i32.const 10) - ) - ) - (if - (local.get $$isdigit$6$i) - (block - (local.set $$29 - (local.get $$storemerge$186282) - ) - (local.set $$i$07$i - (i32.const 0) - ) - (local.set $$isdigittmp8$i - (local.get $$isdigittmp$5$i) - ) - (loop $while-in8 - (block $while-out7 - (local.set $$mul$i - (i32.mul - (local.get $$i$07$i) - (i32.const 10) - ) - ) - (local.set $$add$i - (i32.add - (local.get $$mul$i) - (local.get $$isdigittmp8$i) - ) - ) - (local.set $$incdec$ptr$i - (i32.add - (local.get $$29) - (i32.const 1) - ) - ) - (local.set $$30 - (i32.load8_s - (local.get $$incdec$ptr$i) - ) - ) - (local.set $$conv$i - (i32.shr_s - (i32.shl - (local.get $$30) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$isdigittmp$i - (i32.add - (local.get $$conv$i) - (i32.const -48) - ) - ) - (local.set $$isdigit$i - (i32.lt_u - (local.get $$isdigittmp$i) - (i32.const 10) - ) - ) - (if - (local.get $$isdigit$i) - (block - (local.set $$29 - (local.get $$incdec$ptr$i) - ) - (local.set $$i$07$i - (local.get $$add$i) - ) - (local.set $$isdigittmp8$i - (local.get $$isdigittmp$i) - ) - ) - (block - (local.set $$add$i$lcssa - (local.get $$add$i) - ) - (local.set $$incdec$ptr$i$lcssa - (local.get $$incdec$ptr$i) - ) - (br $while-out7) - ) - ) - (br $while-in8) - ) - ) - (local.set $$cmp105 - (i32.lt_s - (local.get $$add$i$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$cmp105) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L1) - ) - (block - (local.set $$fl$1 - (local.get $$fl$0284) - ) - (local.set $$incdec$ptr169269 - (local.get $$incdec$ptr$i$lcssa) - ) - (local.set $$l10n$3 - (local.get $$l10n$1) - ) - (local.set $$w$1 - (local.get $$add$i$lcssa) - ) - ) - ) - ) - (block - (local.set $$fl$1 - (local.get $$fl$0284) - ) - (local.set $$incdec$ptr169269 - (local.get $$storemerge$186282) - ) - (local.set $$l10n$3 - (local.get $$l10n$1) - ) - (local.set $$w$1 - (i32.const 0) - ) - ) - ) - ) - ) - ) - (local.set $$31 - (i32.load8_s - (local.get $$incdec$ptr169269) - ) - ) - (local.set $$cmp111 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$31) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 46) - ) - ) - (block $label$break$L46 - (if - (local.get $$cmp111) - (block - (local.set $$arrayidx114 - (i32.add - (local.get $$incdec$ptr169269) - (i32.const 1) - ) - ) - (local.set $$32 - (i32.load8_s - (local.get $$arrayidx114) - ) - ) - (local.set $$cmp116 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$32) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 42) - ) - ) - (if - (i32.eqz - (local.get $$cmp116) - ) - (block - (local.set $$conv$4$i$197 - (i32.shr_s - (i32.shl - (local.get $$32) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$isdigittmp$5$i$198 - (i32.add - (local.get $$conv$4$i$197) - (i32.const -48) - ) - ) - (local.set $$isdigit$6$i$199 - (i32.lt_u - (local.get $$isdigittmp$5$i$198) - (i32.const 10) - ) - ) - (if - (local.get $$isdigit$6$i$199) - (block - (local.set $$49 - (local.get $$arrayidx114) - ) - (local.set $$i$07$i$201 - (i32.const 0) - ) - (local.set $$isdigittmp8$i$200 - (local.get $$isdigittmp$5$i$198) - ) - ) - (block - (local.set $$incdec$ptr169272 - (local.get $$arrayidx114) - ) - (local.set $$p$0 - (i32.const 0) - ) - (br $label$break$L46) - ) - ) - (loop $while-in11 - (block $while-out10 - (local.set $$mul$i$202 - (i32.mul - (local.get $$i$07$i$201) - (i32.const 10) - ) - ) - (local.set $$add$i$203 - (i32.add - (local.get $$mul$i$202) - (local.get $$isdigittmp8$i$200) - ) - ) - (local.set $$incdec$ptr$i$204 - (i32.add - (local.get $$49) - (i32.const 1) - ) - ) - (local.set $$50 - (i32.load8_s - (local.get $$incdec$ptr$i$204) - ) - ) - (local.set $$conv$i$205 - (i32.shr_s - (i32.shl - (local.get $$50) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$isdigittmp$i$206 - (i32.add - (local.get $$conv$i$205) - (i32.const -48) - ) - ) - (local.set $$isdigit$i$207 - (i32.lt_u - (local.get $$isdigittmp$i$206) - (i32.const 10) - ) - ) - (if - (local.get $$isdigit$i$207) - (block - (local.set $$49 - (local.get $$incdec$ptr$i$204) - ) - (local.set $$i$07$i$201 - (local.get $$add$i$203) - ) - (local.set $$isdigittmp8$i$200 - (local.get $$isdigittmp$i$206) - ) - ) - (block - (local.set $$incdec$ptr169272 - (local.get $$incdec$ptr$i$204) - ) - (local.set $$p$0 - (local.get $$add$i$203) - ) - (br $label$break$L46) - ) - ) - (br $while-in11) - ) - ) - ) - ) - (local.set $$arrayidx119 - (i32.add - (local.get $$incdec$ptr169269) - (i32.const 2) - ) - ) - (local.set $$33 - (i32.load8_s - (local.get $$arrayidx119) - ) - ) - (local.set $$conv120 - (i32.shr_s - (i32.shl - (local.get $$33) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$isdigittmp187 - (i32.add - (local.get $$conv120) - (i32.const -48) - ) - ) - (local.set $$isdigit188 - (i32.lt_u - (local.get $$isdigittmp187) - (i32.const 10) - ) - ) - (if - (local.get $$isdigit188) - (block - (local.set $$arrayidx124 - (i32.add - (local.get $$incdec$ptr169269) - (i32.const 3) - ) - ) - (local.set $$34 - (i32.load8_s - (local.get $$arrayidx124) - ) - ) - (local.set $$cmp126 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$34) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 36) - ) - ) - (if - (local.get $$cmp126) - (block - (local.set $$arrayidx132 - (i32.add - (local.get $$nl_type) - (i32.shl - (local.get $$isdigittmp187) - (i32.const 2) - ) - ) - ) - (i32.store - (local.get $$arrayidx132) - (i32.const 10) - ) - (local.set $$35 - (i32.load8_s - (local.get $$arrayidx119) - ) - ) - (local.set $$conv134 - (i32.shr_s - (i32.shl - (local.get $$35) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$sub135 - (i32.add - (local.get $$conv134) - (i32.const -48) - ) - ) - (local.set $$i137 - (i32.add - (local.get $$nl_arg) - (i32.shl - (local.get $$sub135) - (i32.const 3) - ) - ) - ) - (local.set $$36 - (local.get $$i137) - ) - (local.set $$37 - (local.get $$36) - ) - (local.set $$38 - (i32.load - (local.get $$37) - ) - ) - (local.set $$39 - (i32.add - (local.get $$36) - (i32.const 4) - ) - ) - (local.set $$40 - (local.get $$39) - ) - (local.set $$41 - (i32.load - (local.get $$40) - ) - ) - (local.set $$add$ptr139 - (i32.add - (local.get $$incdec$ptr169269) - (i32.const 4) - ) - ) - (local.set $$incdec$ptr169272 - (local.get $$add$ptr139) - ) - (local.set $$p$0 - (local.get $$38) - ) - (br $label$break$L46) - ) - ) - ) - ) - (local.set $$tobool141 - (i32.eq - (local.get $$l10n$3) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool141) - ) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (if - (local.get $$tobool25) - (block - (local.set $$arglist_current2 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$42 - (local.get $$arglist_current2) - ) - (local.set $$43 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded11 - (local.get $$43) - ) - (local.set $$expanded10 - (i32.sub - (local.get $$expanded11) - (i32.const 1) - ) - ) - (local.set $$44 - (i32.add - (local.get $$42) - (local.get $$expanded10) - ) - ) - (local.set $$45 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded15 - (local.get $$45) - ) - (local.set $$expanded14 - (i32.sub - (local.get $$expanded15) - (i32.const 1) - ) - ) - (local.set $$expanded13 - (i32.xor - (local.get $$expanded14) - (i32.const -1) - ) - ) - (local.set $$46 - (i32.and - (local.get $$44) - (local.get $$expanded13) - ) - ) - (local.set $$47 - (local.get $$46) - ) - (local.set $$48 - (i32.load - (local.get $$47) - ) - ) - (local.set $$arglist_next3 - (i32.add - (local.get $$47) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next3) - ) - (local.set $$incdec$ptr169272 - (local.get $$arrayidx119) - ) - (local.set $$p$0 - (local.get $$48) - ) - ) - (block - (local.set $$incdec$ptr169272 - (local.get $$arrayidx119) - ) - (local.set $$p$0 - (i32.const 0) - ) - ) - ) - ) - (block - (local.set $$incdec$ptr169272 - (local.get $$incdec$ptr169269) - ) - (local.set $$p$0 - (i32.const -1) - ) - ) - ) - ) - (local.set $$incdec$ptr169271 - (local.get $$incdec$ptr169272) - ) - (local.set $$st$0 - (i32.const 0) - ) - (loop $while-in13 - (block $while-out12 - (local.set $$51 - (i32.load8_s - (local.get $$incdec$ptr169271) - ) - ) - (local.set $$conv163 - (i32.shr_s - (i32.shl - (local.get $$51) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$sub164 - (i32.add - (local.get $$conv163) - (i32.const -65) - ) - ) - (local.set $$cmp165 - (i32.gt_u - (local.get $$sub164) - (i32.const 57) - ) - ) - (if - (local.get $$cmp165) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (local.set $$incdec$ptr169 - (i32.add - (local.get $$incdec$ptr169271) - (i32.const 1) - ) - ) - (local.set $$arrayidx173 - (i32.add - (i32.add - (i32.const 3611) - (i32.mul - (local.get $$st$0) - (i32.const 58) - ) - ) - (local.get $$sub164) - ) - ) - (local.set $$52 - (i32.load8_s - (local.get $$arrayidx173) - ) - ) - (local.set $$conv174 - (i32.and - (local.get $$52) - (i32.const 255) - ) - ) - (local.set $$sub175 - (i32.add - (local.get $$conv174) - (i32.const -1) - ) - ) - (local.set $$cmp176 - (i32.lt_u - (local.get $$sub175) - (i32.const 8) - ) - ) - (if - (local.get $$cmp176) - (block - (local.set $$incdec$ptr169271 - (local.get $$incdec$ptr169) - ) - (local.set $$st$0 - (local.get $$conv174) - ) - ) - (block - (local.set $$$lcssa - (local.get $$52) - ) - (local.set $$conv174$lcssa - (local.get $$conv174) - ) - (local.set $$incdec$ptr169$lcssa - (local.get $$incdec$ptr169) - ) - (local.set $$incdec$ptr169271$lcssa414 - (local.get $$incdec$ptr169271) - ) - (local.set $$st$0$lcssa415 - (local.get $$st$0) - ) - (br $while-out12) - ) - ) - (br $while-in13) - ) - ) - (local.set $$tobool178 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$$lcssa) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - ) - (if - (local.get $$tobool178) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (local.set $$cmp181 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$$lcssa) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 19) - ) - ) - (local.set $$cmp184 - (i32.gt_s - (local.get $$argpos$0) - (i32.const -1) - ) - ) - (block $do-once14 - (if - (local.get $$cmp181) - (if - (local.get $$cmp184) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L1) - ) - (local.set $label - (i32.const 52) - ) - ) - (block - (if - (local.get $$cmp184) - (block - (local.set $$arrayidx192 - (i32.add - (local.get $$nl_type) - (i32.shl - (local.get $$argpos$0) - (i32.const 2) - ) - ) - ) - (i32.store - (local.get $$arrayidx192) - (local.get $$conv174$lcssa) - ) - (local.set $$53 - (i32.add - (local.get $$nl_arg) - (i32.shl - (local.get $$argpos$0) - (i32.const 3) - ) - ) - ) - (local.set $$54 - (local.get $$53) - ) - (local.set $$55 - (local.get $$54) - ) - (local.set $$56 - (i32.load - (local.get $$55) - ) - ) - (local.set $$57 - (i32.add - (local.get $$54) - (i32.const 4) - ) - ) - (local.set $$58 - (local.get $$57) - ) - (local.set $$59 - (i32.load - (local.get $$58) - ) - ) - (local.set $$60 - (local.get $$arg) - ) - (local.set $$61 - (local.get $$60) - ) - (i32.store - (local.get $$61) - (local.get $$56) - ) - (local.set $$62 - (i32.add - (local.get $$60) - (i32.const 4) - ) - ) - (local.set $$63 - (local.get $$62) - ) - (i32.store - (local.get $$63) - (local.get $$59) - ) - (local.set $label - (i32.const 52) - ) - (br $do-once14) - ) - ) - (if - (i32.eqz - (local.get $$tobool25) - ) - (block - (local.set $$retval$0 - (i32.const 0) - ) - (br $label$break$L1) - ) - ) - (call $_pop_arg_336 - (local.get $$arg) - (local.get $$conv174$lcssa) - (local.get $$ap) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 52) - ) - (block - (local.set $label - (i32.const 0) - ) - (if - (i32.eqz - (local.get $$tobool25) - ) - (block - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - ) - ) - ) - ) - (local.set $$64 - (i32.load8_s - (local.get $$incdec$ptr169271$lcssa414) - ) - ) - (local.set $$conv207 - (i32.shr_s - (i32.shl - (local.get $$64) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$tobool208 - (i32.ne - (local.get $$st$0$lcssa415) - (i32.const 0) - ) - ) - (local.set $$and210 - (i32.and - (local.get $$conv207) - (i32.const 15) - ) - ) - (local.set $$cmp211 - (i32.eq - (local.get $$and210) - (i32.const 3) - ) - ) - (local.set $$or$cond192 - (i32.and - (local.get $$tobool208) - (local.get $$cmp211) - ) - ) - (local.set $$and214 - (i32.and - (local.get $$conv207) - (i32.const -33) - ) - ) - (local.set $$t$0 - (if (result i32) - (local.get $$or$cond192) - (local.get $$and214) - (local.get $$conv207) - ) - ) - (local.set $$and216 - (i32.and - (local.get $$fl$1) - (i32.const 8192) - ) - ) - (local.set $$tobool217 - (i32.eq - (local.get $$and216) - (i32.const 0) - ) - ) - (local.set $$and219 - (i32.and - (local.get $$fl$1) - (i32.const -65537) - ) - ) - (local.set $$fl$1$and219 - (if (result i32) - (local.get $$tobool217) - (local.get $$fl$1) - (local.get $$and219) - ) - ) - (block $label$break$L75 - (block $switch17 - (block $switch-default120 - (block $switch-case119 - (block $switch-case48 - (block $switch-case47 - (block $switch-case46 - (block $switch-case45 - (block $switch-case44 - (block $switch-case43 - (block $switch-case42 - (block $switch-case41 - (block $switch-case40 - (block $switch-case39 - (block $switch-case38 - (block $switch-case37 - (block $switch-case36 - (block $switch-case35 - (block $switch-case34 - (block $switch-case33 - (block $switch-case30 - (block $switch-case29 - (block $switch-case28 - (block $switch-case27 - (br_table $switch-case42 $switch-default120 $switch-case40 $switch-default120 $switch-case45 $switch-case44 $switch-case43 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case41 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case29 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case46 $switch-default120 $switch-case37 $switch-case35 $switch-case119 $switch-case48 $switch-case47 $switch-default120 $switch-case34 $switch-default120 $switch-default120 $switch-default120 $switch-case38 $switch-case27 $switch-case33 $switch-case28 $switch-default120 $switch-default120 $switch-case39 $switch-default120 $switch-case36 $switch-default120 $switch-default120 $switch-case30 $switch-default120 - (i32.sub - (local.get $$t$0) - (i32.const 65) - ) - ) - ) - (block - (block $switch18 - (block $switch-default26 - (block $switch-case25 - (block $switch-case24 - (block $switch-case23 - (block $switch-case22 - (block $switch-case21 - (block $switch-case20 - (block $switch-case19 - (br_table $switch-case19 $switch-case20 $switch-case21 $switch-case22 $switch-case23 $switch-default26 $switch-case24 $switch-case25 $switch-default26 - (i32.sub - (local.get $$st$0$lcssa415) - (i32.const 0) - ) - ) - ) - (block - (local.set $$71 - (i32.load - (local.get $$arg) - ) - ) - (i32.store - (local.get $$71) - (local.get $$cnt$1) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch18) - ) - ) - (block - (local.set $$72 - (i32.load - (local.get $$arg) - ) - ) - (i32.store - (local.get $$72) - (local.get $$cnt$1) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch18) - ) - ) - (block - (local.set $$73 - (i32.lt_s - (local.get $$cnt$1) - (i32.const 0) - ) - ) - (local.set $$74 - (i32.shr_s - (i32.shl - (local.get $$73) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$75 - (i32.load - (local.get $$arg) - ) - ) - (local.set $$76 - (local.get $$75) - ) - (local.set $$77 - (local.get $$76) - ) - (i32.store - (local.get $$77) - (local.get $$cnt$1) - ) - (local.set $$78 - (i32.add - (local.get $$76) - (i32.const 4) - ) - ) - (local.set $$79 - (local.get $$78) - ) - (i32.store - (local.get $$79) - (local.get $$74) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch18) - ) - ) - (block - (local.set $$conv229 - (i32.and - (local.get $$cnt$1) - (i32.const 65535) - ) - ) - (local.set $$80 - (i32.load - (local.get $$arg) - ) - ) - (i32.store16 - (local.get $$80) - (local.get $$conv229) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch18) - ) - ) - (block - (local.set $$conv232 - (i32.and - (local.get $$cnt$1) - (i32.const 255) - ) - ) - (local.set $$81 - (i32.load - (local.get $$arg) - ) - ) - (i32.store8 - (local.get $$81) - (local.get $$conv232) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch18) - ) - ) - (block - (local.set $$82 - (i32.load - (local.get $$arg) - ) - ) - (i32.store - (local.get $$82) - (local.get $$cnt$1) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch18) - ) - ) - (block - (local.set $$83 - (i32.lt_s - (local.get $$cnt$1) - (i32.const 0) - ) - ) - (local.set $$84 - (i32.shr_s - (i32.shl - (local.get $$83) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$85 - (i32.load - (local.get $$arg) - ) - ) - (local.set $$86 - (local.get $$85) - ) - (local.set $$87 - (local.get $$86) - ) - (i32.store - (local.get $$87) - (local.get $$cnt$1) - ) - (local.set $$88 - (i32.add - (local.get $$86) - (i32.const 4) - ) - ) - (local.set $$89 - (local.get $$88) - ) - (i32.store - (local.get $$89) - (local.get $$84) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch18) - ) - ) - (block - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - ) - ) - (br $switch17) - ) - ) - (block - (local.set $$cmp240 - (i32.gt_u - (local.get $$p$0) - (i32.const 8) - ) - ) - (local.set $$cond245 - (if (result i32) - (local.get $$cmp240) - (local.get $$p$0) - (i32.const 8) - ) - ) - (local.set $$or246 - (i32.or - (local.get $$fl$1$and219) - (i32.const 8) - ) - ) - (local.set $$fl$3 - (local.get $$or246) - ) - (local.set $$p$1 - (local.get $$cond245) - ) - (local.set $$t$1 - (i32.const 120) - ) - (local.set $label - (i32.const 64) - ) - (br $switch17) - ) - ) - (nop) - ) - (block - (local.set $$fl$3 - (local.get $$fl$1$and219) - ) - (local.set $$p$1 - (local.get $$p$0) - ) - (local.set $$t$1 - (local.get $$t$0) - ) - (local.set $label - (i32.const 64) - ) - (br $switch17) - ) - ) - (block - (local.set $$116 - (local.get $$arg) - ) - (local.set $$117 - (local.get $$116) - ) - (local.set $$118 - (i32.load - (local.get $$117) - ) - ) - (local.set $$119 - (i32.add - (local.get $$116) - (i32.const 4) - ) - ) - (local.set $$120 - (local.get $$119) - ) - (local.set $$121 - (i32.load - (local.get $$120) - ) - ) - (local.set $$122 - (i32.eq - (local.get $$118) - (i32.const 0) - ) - ) - (local.set $$123 - (i32.eq - (local.get $$121) - (i32.const 0) - ) - ) - (local.set $$124 - (i32.and - (local.get $$122) - (local.get $$123) - ) - ) - (if - (local.get $$124) - (local.set $$s$addr$0$lcssa$i$229 - (local.get $$add$ptr205) - ) - (block - (local.set $$126 - (local.get $$118) - ) - (local.set $$129 - (local.get $$121) - ) - (local.set $$s$addr$06$i$221 - (local.get $$add$ptr205) - ) - (loop $while-in32 - (block $while-out31 - (local.set $$125 - (i32.and - (local.get $$126) - (i32.const 7) - ) - ) - (local.set $$127 - (i32.or - (local.get $$125) - (i32.const 48) - ) - ) - (local.set $$128 - (i32.and - (local.get $$127) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr$i$225 - (i32.add - (local.get $$s$addr$06$i$221) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr$i$225) - (local.get $$128) - ) - (local.set $$130 - (call $_bitshift64Lshr - (local.get $$126) - (local.get $$129) - (i32.const 3) - ) - ) - (local.set $$131 - (global.get $tempRet0) - ) - (local.set $$132 - (i32.eq - (local.get $$130) - (i32.const 0) - ) - ) - (local.set $$133 - (i32.eq - (local.get $$131) - (i32.const 0) - ) - ) - (local.set $$134 - (i32.and - (local.get $$132) - (local.get $$133) - ) - ) - (if - (local.get $$134) - (block - (local.set $$s$addr$0$lcssa$i$229 - (local.get $$incdec$ptr$i$225) - ) - (br $while-out31) - ) - (block - (local.set $$126 - (local.get $$130) - ) - (local.set $$129 - (local.get $$131) - ) - (local.set $$s$addr$06$i$221 - (local.get $$incdec$ptr$i$225) - ) - ) - ) - (br $while-in32) - ) - ) - ) - ) - (local.set $$and263 - (i32.and - (local.get $$fl$1$and219) - (i32.const 8) - ) - ) - (local.set $$tobool264 - (i32.eq - (local.get $$and263) - (i32.const 0) - ) - ) - (if - (local.get $$tobool264) - (block - (local.set $$a$0 - (local.get $$s$addr$0$lcssa$i$229) - ) - (local.set $$fl$4 - (local.get $$fl$1$and219) - ) - (local.set $$p$2 - (local.get $$p$0) - ) - (local.set $$pl$1 - (i32.const 0) - ) - (local.set $$prefix$1 - (i32.const 4091) - ) - (local.set $label - (i32.const 77) - ) - ) - (block - (local.set $$sub$ptr$rhs$cast267 - (local.get $$s$addr$0$lcssa$i$229) - ) - (local.set $$sub$ptr$sub268 - (i32.sub - (local.get $$sub$ptr$lhs$cast317) - (local.get $$sub$ptr$rhs$cast267) - ) - ) - (local.set $$add269 - (i32.add - (local.get $$sub$ptr$sub268) - (i32.const 1) - ) - ) - (local.set $$cmp270 - (i32.lt_s - (local.get $$p$0) - (local.get $$add269) - ) - ) - (local.set $$add269$p$0 - (if (result i32) - (local.get $$cmp270) - (local.get $$add269) - (local.get $$p$0) - ) - ) - (local.set $$a$0 - (local.get $$s$addr$0$lcssa$i$229) - ) - (local.set $$fl$4 - (local.get $$fl$1$and219) - ) - (local.set $$p$2 - (local.get $$add269$p$0) - ) - (local.set $$pl$1 - (i32.const 0) - ) - (local.set $$prefix$1 - (i32.const 4091) - ) - (local.set $label - (i32.const 77) - ) - ) - ) - (br $switch17) - ) - ) - (nop) - ) - (block - (local.set $$135 - (local.get $$arg) - ) - (local.set $$136 - (local.get $$135) - ) - (local.set $$137 - (i32.load - (local.get $$136) - ) - ) - (local.set $$138 - (i32.add - (local.get $$135) - (i32.const 4) - ) - ) - (local.set $$139 - (local.get $$138) - ) - (local.set $$140 - (i32.load - (local.get $$139) - ) - ) - (local.set $$141 - (i32.lt_s - (local.get $$140) - (i32.const 0) - ) - ) - (if - (local.get $$141) - (block - (local.set $$142 - (call $_i64Subtract - (i32.const 0) - (i32.const 0) - (local.get $$137) - (local.get $$140) - ) - ) - (local.set $$143 - (global.get $tempRet0) - ) - (local.set $$144 - (local.get $$arg) - ) - (local.set $$145 - (local.get $$144) - ) - (i32.store - (local.get $$145) - (local.get $$142) - ) - (local.set $$146 - (i32.add - (local.get $$144) - (i32.const 4) - ) - ) - (local.set $$147 - (local.get $$146) - ) - (i32.store - (local.get $$147) - (local.get $$143) - ) - (local.set $$148 - (local.get $$142) - ) - (local.set $$149 - (local.get $$143) - ) - (local.set $$pl$0 - (i32.const 1) - ) - (local.set $$prefix$0 - (i32.const 4091) - ) - (local.set $label - (i32.const 76) - ) - (br $label$break$L75) - ) - ) - (local.set $$and289 - (i32.and - (local.get $$fl$1$and219) - (i32.const 2048) - ) - ) - (local.set $$tobool290 - (i32.eq - (local.get $$and289) - (i32.const 0) - ) - ) - (if - (local.get $$tobool290) - (block - (local.set $$and294 - (i32.and - (local.get $$fl$1$and219) - (i32.const 1) - ) - ) - (local.set $$tobool295 - (i32.eq - (local.get $$and294) - (i32.const 0) - ) - ) - (local.set $$$ - (if (result i32) - (local.get $$tobool295) - (i32.const 4091) - (i32.const 4093) - ) - ) - (local.set $$148 - (local.get $$137) - ) - (local.set $$149 - (local.get $$140) - ) - (local.set $$pl$0 - (local.get $$and294) - ) - (local.set $$prefix$0 - (local.get $$$) - ) - (local.set $label - (i32.const 76) - ) - ) - (block - (local.set $$148 - (local.get $$137) - ) - (local.set $$149 - (local.get $$140) - ) - (local.set $$pl$0 - (i32.const 1) - ) - (local.set $$prefix$0 - (i32.const 4092) - ) - (local.set $label - (i32.const 76) - ) - ) - ) - (br $switch17) - ) - ) - (block - (local.set $$65 - (local.get $$arg) - ) - (local.set $$66 - (local.get $$65) - ) - (local.set $$67 - (i32.load - (local.get $$66) - ) - ) - (local.set $$68 - (i32.add - (local.get $$65) - (i32.const 4) - ) - ) - (local.set $$69 - (local.get $$68) - ) - (local.set $$70 - (i32.load - (local.get $$69) - ) - ) - (local.set $$148 - (local.get $$67) - ) - (local.set $$149 - (local.get $$70) - ) - (local.set $$pl$0 - (i32.const 0) - ) - (local.set $$prefix$0 - (i32.const 4091) - ) - (local.set $label - (i32.const 76) - ) - (br $switch17) - ) - ) - (block - (local.set $$161 - (local.get $$arg) - ) - (local.set $$162 - (local.get $$161) - ) - (local.set $$163 - (i32.load - (local.get $$162) - ) - ) - (local.set $$164 - (i32.add - (local.get $$161) - (i32.const 4) - ) - ) - (local.set $$165 - (local.get $$164) - ) - (local.set $$166 - (i32.load - (local.get $$165) - ) - ) - (local.set $$167 - (i32.and - (local.get $$163) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $$add$ptr340) - (local.get $$167) - ) - (local.set $$a$2 - (local.get $$add$ptr340) - ) - (local.set $$fl$6 - (local.get $$and219) - ) - (local.set $$p$5 - (i32.const 1) - ) - (local.set $$pl$2 - (i32.const 0) - ) - (local.set $$prefix$2 - (i32.const 4091) - ) - (local.set $$z$2 - (local.get $$add$ptr205) - ) - (br $switch17) - ) - ) - (block - (local.set $$call344 - (call $___errno_location) - ) - (local.set $$168 - (i32.load - (local.get $$call344) - ) - ) - (local.set $$call345 - (call $_strerror - (local.get $$168) - ) - ) - (local.set $$a$1 - (local.get $$call345) - ) - (local.set $label - (i32.const 82) - ) - (br $switch17) - ) - ) - (block - (local.set $$169 - (i32.load - (local.get $$arg) - ) - ) - (local.set $$tobool349 - (i32.ne - (local.get $$169) - (i32.const 0) - ) - ) - (local.set $$cond354 - (if (result i32) - (local.get $$tobool349) - (local.get $$169) - (i32.const 4101) - ) - ) - (local.set $$a$1 - (local.get $$cond354) - ) - (local.set $label - (i32.const 82) - ) - (br $switch17) - ) - ) - (block - (local.set $$170 - (local.get $$arg) - ) - (local.set $$171 - (local.get $$170) - ) - (local.set $$172 - (i32.load - (local.get $$171) - ) - ) - (local.set $$173 - (i32.add - (local.get $$170) - (i32.const 4) - ) - ) - (local.set $$174 - (local.get $$173) - ) - (local.set $$175 - (i32.load - (local.get $$174) - ) - ) - (i32.store - (local.get $$wc) - (local.get $$172) - ) - (i32.store - (local.get $$arrayidx370) - (i32.const 0) - ) - (i32.store - (local.get $$arg) - (local.get $$wc) - ) - (local.set $$p$4365 - (i32.const -1) - ) - (local.set $label - (i32.const 86) - ) - (br $switch17) - ) - ) - (block - (local.set $$cmp377$314 - (i32.eq - (local.get $$p$0) - (i32.const 0) - ) - ) - (if - (local.get $$cmp377$314) - (block - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (i32.const 0) - (local.get $$fl$1$and219) - ) - (local.set $$i$0$lcssa368 - (i32.const 0) - ) - (local.set $label - (i32.const 98) - ) - ) - (block - (local.set $$p$4365 - (local.get $$p$0) - ) - (local.set $label - (i32.const 86) - ) - ) - ) - (br $switch17) - ) - ) - (nop) - ) - (nop) - ) - (nop) - ) - (nop) - ) - (nop) - ) - (nop) - ) - (nop) - ) - (block - (local.set $$181 - (f64.load - (local.get $$arg) - ) - ) - (i32.store - (local.get $$e2$i) - (i32.const 0) - ) - (f64.store - (global.get $tempDoublePtr) - (local.get $$181) - ) - (local.set $$182 - (i32.load - (global.get $tempDoublePtr) - ) - ) - (local.set $$183 - (i32.load - (i32.add - (global.get $tempDoublePtr) - (i32.const 4) - ) - ) - ) - (local.set $$184 - (i32.lt_s - (local.get $$183) - (i32.const 0) - ) - ) - (if - (local.get $$184) - (block - (local.set $$sub$i - (f64.neg - (local.get $$181) - ) - ) - (local.set $$pl$0$i - (i32.const 1) - ) - (local.set $$prefix$0$i - (i32.const 4108) - ) - (local.set $$y$addr$0$i - (local.get $$sub$i) - ) - ) - (block - (local.set $$and$i$238 - (i32.and - (local.get $$fl$1$and219) - (i32.const 2048) - ) - ) - (local.set $$tobool9$i - (i32.eq - (local.get $$and$i$238) - (i32.const 0) - ) - ) - (if - (local.get $$tobool9$i) - (block - (local.set $$and12$i - (i32.and - (local.get $$fl$1$and219) - (i32.const 1) - ) - ) - (local.set $$tobool13$i - (i32.eq - (local.get $$and12$i) - (i32.const 0) - ) - ) - (local.set $$$$i - (if (result i32) - (local.get $$tobool13$i) - (i32.const 4109) - (i32.const 4114) - ) - ) - (local.set $$pl$0$i - (local.get $$and12$i) - ) - (local.set $$prefix$0$i - (local.get $$$$i) - ) - (local.set $$y$addr$0$i - (local.get $$181) - ) - ) - (block - (local.set $$pl$0$i - (i32.const 1) - ) - (local.set $$prefix$0$i - (i32.const 4111) - ) - (local.set $$y$addr$0$i - (local.get $$181) - ) - ) - ) - ) - ) - (f64.store - (global.get $tempDoublePtr) - (local.get $$y$addr$0$i) - ) - (local.set $$185 - (i32.load - (global.get $tempDoublePtr) - ) - ) - (local.set $$186 - (i32.load - (i32.add - (global.get $tempDoublePtr) - (i32.const 4) - ) - ) - ) - (local.set $$187 - (i32.and - (local.get $$186) - (i32.const 2146435072) - ) - ) - (local.set $$188 - (i32.lt_u - (local.get $$187) - (i32.const 2146435072) - ) - ) - (local.set $$189 - (i32.lt_s - (i32.const 0) - (i32.const 0) - ) - ) - (local.set $$190 - (i32.eq - (local.get $$187) - (i32.const 2146435072) - ) - ) - (local.set $$191 - (i32.and - (local.get $$190) - (local.get $$189) - ) - ) - (local.set $$192 - (i32.or - (local.get $$188) - (local.get $$191) - ) - ) - (block $do-once49 - (if - (local.get $$192) - (block - (local.set $$call55$i - (call $_frexpl - (local.get $$y$addr$0$i) - (local.get $$e2$i) - ) - ) - (local.set $$mul$i$240 - (f64.mul - (local.get $$call55$i) - (f64.const 2) - ) - ) - (local.set $$tobool56$i - (f64.ne - (local.get $$mul$i$240) - (f64.const 0) - ) - ) - (if - (local.get $$tobool56$i) - (block - (local.set $$195 - (i32.load - (local.get $$e2$i) - ) - ) - (local.set $$dec$i - (i32.add - (local.get $$195) - (i32.const -1) - ) - ) - (i32.store - (local.get $$e2$i) - (local.get $$dec$i) - ) - ) - ) - (local.set $$or$i$241 - (i32.or - (local.get $$t$0) - (i32.const 32) - ) - ) - (local.set $$cmp59$i - (i32.eq - (local.get $$or$i$241) - (i32.const 97) - ) - ) - (if - (local.get $$cmp59$i) - (block - (local.set $$and62$i - (i32.and - (local.get $$t$0) - (i32.const 32) - ) - ) - (local.set $$tobool63$i - (i32.eq - (local.get $$and62$i) - (i32.const 0) - ) - ) - (local.set $$add$ptr65$i - (i32.add - (local.get $$prefix$0$i) - (i32.const 9) - ) - ) - (local.set $$prefix$0$add$ptr65$i - (if (result i32) - (local.get $$tobool63$i) - (local.get $$prefix$0$i) - (local.get $$add$ptr65$i) - ) - ) - (local.set $$add67$i - (i32.or - (local.get $$pl$0$i) - (i32.const 2) - ) - ) - (local.set $$196 - (i32.gt_u - (local.get $$p$0) - (i32.const 11) - ) - ) - (local.set $$sub74$i - (i32.sub - (i32.const 12) - (local.get $$p$0) - ) - ) - (local.set $$tobool76552$i - (i32.eq - (local.get $$sub74$i) - (i32.const 0) - ) - ) - (local.set $$tobool76$i - (i32.or - (local.get $$196) - (local.get $$tobool76552$i) - ) - ) - (block $do-once51 - (if - (local.get $$tobool76$i) - (local.set $$y$addr$1$i - (local.get $$mul$i$240) - ) - (block - (local.set $$re$1482$i - (local.get $$sub74$i) - ) - (local.set $$round$0481$i - (f64.const 8) - ) - (loop $while-in54 - (block $while-out53 - (local.set $$dec78$i - (i32.add - (local.get $$re$1482$i) - (i32.const -1) - ) - ) - (local.set $$mul80$i - (f64.mul - (local.get $$round$0481$i) - (f64.const 16) - ) - ) - (local.set $$tobool79$i - (i32.eq - (local.get $$dec78$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool79$i) - (block - (local.set $$mul80$i$lcssa - (local.get $$mul80$i) - ) - (br $while-out53) - ) - (block - (local.set $$re$1482$i - (local.get $$dec78$i) - ) - (local.set $$round$0481$i - (local.get $$mul80$i) - ) - ) - ) - (br $while-in54) - ) - ) - (local.set $$197 - (i32.load8_s - (local.get $$prefix$0$add$ptr65$i) - ) - ) - (local.set $$cmp82$i - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$197) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 45) - ) - ) - (if - (local.get $$cmp82$i) - (block - (local.set $$sub85$i - (f64.neg - (local.get $$mul$i$240) - ) - ) - (local.set $$sub86$i - (f64.sub - (local.get $$sub85$i) - (local.get $$mul80$i$lcssa) - ) - ) - (local.set $$add87$i - (f64.add - (local.get $$mul80$i$lcssa) - (local.get $$sub86$i) - ) - ) - (local.set $$sub88$i - (f64.neg - (local.get $$add87$i) - ) - ) - (local.set $$y$addr$1$i - (local.get $$sub88$i) - ) - (br $do-once51) - ) - (block - (local.set $$add90$i - (f64.add - (local.get $$mul$i$240) - (local.get $$mul80$i$lcssa) - ) - ) - (local.set $$sub91$i - (f64.sub - (local.get $$add90$i) - (local.get $$mul80$i$lcssa) - ) - ) - (local.set $$y$addr$1$i - (local.get $$sub91$i) - ) - (br $do-once51) - ) - ) - ) - ) - ) - (local.set $$198 - (i32.load - (local.get $$e2$i) - ) - ) - (local.set $$cmp94$i - (i32.lt_s - (local.get $$198) - (i32.const 0) - ) - ) - (local.set $$sub97$i - (i32.sub - (i32.const 0) - (local.get $$198) - ) - ) - (local.set $$cond100$i - (if (result i32) - (local.get $$cmp94$i) - (local.get $$sub97$i) - (local.get $$198) - ) - ) - (local.set $$199 - (i32.lt_s - (local.get $$cond100$i) - (i32.const 0) - ) - ) - (local.set $$200 - (i32.shr_s - (i32.shl - (local.get $$199) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$201 - (call $_fmt_u - (local.get $$cond100$i) - (local.get $$200) - (local.get $$arrayidx$i$236) - ) - ) - (local.set $$cmp103$i - (i32.eq - (local.get $$201) - (local.get $$arrayidx$i$236) - ) - ) - (if - (local.get $$cmp103$i) - (block - (i32.store8 - (local.get $$incdec$ptr106$i) - (i32.const 48) - ) - (local.set $$estr$0$i - (local.get $$incdec$ptr106$i) - ) - ) - (local.set $$estr$0$i - (local.get $$201) - ) - ) - (local.set $$202 - (i32.shr_s - (local.get $$198) - (i32.const 31) - ) - ) - (local.set $$203 - (i32.and - (local.get $$202) - (i32.const 2) - ) - ) - (local.set $$204 - (i32.add - (local.get $$203) - (i32.const 43) - ) - ) - (local.set $$conv111$i - (i32.and - (local.get $$204) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr112$i - (i32.add - (local.get $$estr$0$i) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr112$i) - (local.get $$conv111$i) - ) - (local.set $$add113$i - (i32.add - (local.get $$t$0) - (i32.const 15) - ) - ) - (local.set $$conv114$i - (i32.and - (local.get $$add113$i) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr115$i - (i32.add - (local.get $$estr$0$i) - (i32.const -2) - ) - ) - (i32.store8 - (local.get $$incdec$ptr115$i) - (local.get $$conv114$i) - ) - (local.set $$notrhs$i - (i32.lt_s - (local.get $$p$0) - (i32.const 1) - ) - ) - (local.set $$and134$i - (i32.and - (local.get $$fl$1$and219) - (i32.const 8) - ) - ) - (local.set $$tobool135$i - (i32.eq - (local.get $$and134$i) - (i32.const 0) - ) - ) - (local.set $$s$0$i - (local.get $$buf$i) - ) - (local.set $$y$addr$2$i - (local.get $$y$addr$1$i) - ) - (loop $while-in56 - (block $while-out55 - (local.set $$conv116$i - (i32.trunc_f64_s - (local.get $$y$addr$2$i) - ) - ) - (local.set $$arrayidx117$i - (i32.add - (i32.const 4075) - (local.get $$conv116$i) - ) - ) - (local.set $$205 - (i32.load8_s - (local.get $$arrayidx117$i) - ) - ) - (local.set $$conv118$393$i - (i32.and - (local.get $$205) - (i32.const 255) - ) - ) - (local.set $$or120$i - (i32.or - (local.get $$conv118$393$i) - (local.get $$and62$i) - ) - ) - (local.set $$conv121$i - (i32.and - (local.get $$or120$i) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr122$i - (i32.add - (local.get $$s$0$i) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $$s$0$i) - (local.get $$conv121$i) - ) - (local.set $$conv123$i - (f64.convert_i32_s - (local.get $$conv116$i) - ) - ) - (local.set $$sub124$i - (f64.sub - (local.get $$y$addr$2$i) - (local.get $$conv123$i) - ) - ) - (local.set $$mul125$i - (f64.mul - (local.get $$sub124$i) - (f64.const 16) - ) - ) - (local.set $$sub$ptr$lhs$cast$i - (local.get $$incdec$ptr122$i) - ) - (local.set $$sub$ptr$sub$i - (i32.sub - (local.get $$sub$ptr$lhs$cast$i) - (local.get $$sub$ptr$rhs$cast$i) - ) - ) - (local.set $$cmp127$i - (i32.eq - (local.get $$sub$ptr$sub$i) - (i32.const 1) - ) - ) - (block $do-once57 - (if - (local.get $$cmp127$i) - (block - (local.set $$notlhs$i - (f64.eq - (local.get $$mul125$i) - (f64.const 0) - ) - ) - (local.set $$or$cond1$not$i - (i32.and - (local.get $$notrhs$i) - (local.get $$notlhs$i) - ) - ) - (local.set $$or$cond$i - (i32.and - (local.get $$tobool135$i) - (local.get $$or$cond1$not$i) - ) - ) - (if - (local.get $$or$cond$i) - (block - (local.set $$s$1$i - (local.get $$incdec$ptr122$i) - ) - (br $do-once57) - ) - ) - (local.set $$incdec$ptr137$i - (i32.add - (local.get $$s$0$i) - (i32.const 2) - ) - ) - (i32.store8 - (local.get $$incdec$ptr122$i) - (i32.const 46) - ) - (local.set $$s$1$i - (local.get $$incdec$ptr137$i) - ) - ) - (local.set $$s$1$i - (local.get $$incdec$ptr122$i) - ) - ) - ) - (local.set $$tobool139$i - (f64.ne - (local.get $$mul125$i) - (f64.const 0) - ) - ) - (if - (local.get $$tobool139$i) - (block - (local.set $$s$0$i - (local.get $$s$1$i) - ) - (local.set $$y$addr$2$i - (local.get $$mul125$i) - ) - ) - (block - (local.set $$s$1$i$lcssa - (local.get $$s$1$i) - ) - (br $while-out55) - ) - ) - (br $while-in56) - ) - ) - (local.set $$tobool140$i - (i32.ne - (local.get $$p$0) - (i32.const 0) - ) - ) - (local.set $$$pre566$i - (local.get $$s$1$i$lcssa) - ) - (local.set $$sub146$i - (i32.add - (local.get $$sub$ptr$sub145$i) - (local.get $$$pre566$i) - ) - ) - (local.set $$cmp147$i - (i32.lt_s - (local.get $$sub146$i) - (local.get $$p$0) - ) - ) - (local.set $$or$cond384 - (i32.and - (local.get $$tobool140$i) - (local.get $$cmp147$i) - ) - ) - (local.set $$sub$ptr$rhs$cast152$i - (local.get $$incdec$ptr115$i) - ) - (local.set $$add150$i - (i32.add - (local.get $$sub$ptr$sub153$i) - (local.get $$p$0) - ) - ) - (local.set $$add154$i - (i32.sub - (local.get $$add150$i) - (local.get $$sub$ptr$rhs$cast152$i) - ) - ) - (local.set $$sub$ptr$rhs$cast161$i - (local.get $$incdec$ptr115$i) - ) - (local.set $$sub$ptr$sub162$i - (i32.sub - (local.get $$sub$ptr$sub159$i) - (local.get $$sub$ptr$rhs$cast161$i) - ) - ) - (local.set $$add163$i - (i32.add - (local.get $$sub$ptr$sub162$i) - (local.get $$$pre566$i) - ) - ) - (local.set $$l$0$i - (if (result i32) - (local.get $$or$cond384) - (local.get $$add154$i) - (local.get $$add163$i) - ) - ) - (local.set $$add165$i - (i32.add - (local.get $$l$0$i) - (local.get $$add67$i) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$add165$i) - (local.get $$fl$1$and219) - ) - (local.set $$206 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$418$i - (i32.and - (local.get $$206) - (i32.const 32) - ) - ) - (local.set $$tobool$i$419$i - (i32.eq - (local.get $$and$i$418$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$419$i) - (drop - (call $___fwritex - (local.get $$prefix$0$add$ptr65$i) - (local.get $$add67$i) - (local.get $$f) - ) - ) - ) - (local.set $$xor167$i - (i32.xor - (local.get $$fl$1$and219) - (i32.const 65536) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 48) - (local.get $$w$1) - (local.get $$add165$i) - (local.get $$xor167$i) - ) - (local.set $$sub$ptr$sub172$i - (i32.sub - (local.get $$$pre566$i) - (local.get $$sub$ptr$rhs$cast$i) - ) - ) - (local.set $$207 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$424$i - (i32.and - (local.get $$207) - (i32.const 32) - ) - ) - (local.set $$tobool$i$425$i - (i32.eq - (local.get $$and$i$424$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$425$i) - (drop - (call $___fwritex - (local.get $$buf$i) - (local.get $$sub$ptr$sub172$i) - (local.get $$f) - ) - ) - ) - (local.set $$sub$ptr$rhs$cast174$i - (local.get $$incdec$ptr115$i) - ) - (local.set $$sub$ptr$sub175$i - (i32.sub - (local.get $$sub$ptr$lhs$cast160$i) - (local.get $$sub$ptr$rhs$cast174$i) - ) - ) - (local.set $$sum - (i32.add - (local.get $$sub$ptr$sub172$i) - (local.get $$sub$ptr$sub175$i) - ) - ) - (local.set $$sub181$i - (i32.sub - (local.get $$l$0$i) - (local.get $$sum) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 48) - (local.get $$sub181$i) - (i32.const 0) - (i32.const 0) - ) - (local.set $$208 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$430$i - (i32.and - (local.get $$208) - (i32.const 32) - ) - ) - (local.set $$tobool$i$431$i - (i32.eq - (local.get $$and$i$430$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$431$i) - (drop - (call $___fwritex - (local.get $$incdec$ptr115$i) - (local.get $$sub$ptr$sub175$i) - (local.get $$f) - ) - ) - ) - (local.set $$xor186$i - (i32.xor - (local.get $$fl$1$and219) - (i32.const 8192) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$add165$i) - (local.get $$xor186$i) - ) - (local.set $$cmp188$i - (i32.lt_s - (local.get $$add165$i) - (local.get $$w$1) - ) - ) - (local.set $$w$add165$i - (if (result i32) - (local.get $$cmp188$i) - (local.get $$w$1) - (local.get $$add165$i) - ) - ) - (local.set $$retval$0$i - (local.get $$w$add165$i) - ) - (br $do-once49) - ) - ) - (local.set $$cmp196$i - (i32.lt_s - (local.get $$p$0) - (i32.const 0) - ) - ) - (local.set $$$p$i - (if (result i32) - (local.get $$cmp196$i) - (i32.const 6) - (local.get $$p$0) - ) - ) - (if - (local.get $$tobool56$i) - (block - (local.set $$mul202$i - (f64.mul - (local.get $$mul$i$240) - (f64.const 268435456) - ) - ) - (local.set $$209 - (i32.load - (local.get $$e2$i) - ) - ) - (local.set $$sub203$i - (i32.add - (local.get $$209) - (i32.const -28) - ) - ) - (i32.store - (local.get $$e2$i) - (local.get $$sub203$i) - ) - (local.set $$210 - (local.get $$sub203$i) - ) - (local.set $$y$addr$3$i - (local.get $$mul202$i) - ) - ) - (block - (local.set $$$pre564$i - (i32.load - (local.get $$e2$i) - ) - ) - (local.set $$210 - (local.get $$$pre564$i) - ) - (local.set $$y$addr$3$i - (local.get $$mul$i$240) - ) - ) - ) - (local.set $$cmp205$i - (i32.lt_s - (local.get $$210) - (i32.const 0) - ) - ) - (local.set $$arraydecay208$add$ptr213$i - (if (result i32) - (local.get $$cmp205$i) - (local.get $$big$i) - (local.get $$add$ptr213$i) - ) - ) - (local.set $$sub$ptr$rhs$cast345$i - (local.get $$arraydecay208$add$ptr213$i) - ) - (local.set $$y$addr$4$i - (local.get $$y$addr$3$i) - ) - (local.set $$z$0$i - (local.get $$arraydecay208$add$ptr213$i) - ) - (loop $while-in60 - (block $while-out59 - (local.set $$conv216$i - (i32.trunc_f64_u - (local.get $$y$addr$4$i) - ) - ) - (i32.store - (local.get $$z$0$i) - (local.get $$conv216$i) - ) - (local.set $$incdec$ptr217$i - (i32.add - (local.get $$z$0$i) - (i32.const 4) - ) - ) - (local.set $$conv218$i - (f64.convert_i32_u - (local.get $$conv216$i) - ) - ) - (local.set $$sub219$i - (f64.sub - (local.get $$y$addr$4$i) - (local.get $$conv218$i) - ) - ) - (local.set $$mul220$i - (f64.mul - (local.get $$sub219$i) - (f64.const 1e9) - ) - ) - (local.set $$tobool222$i - (f64.ne - (local.get $$mul220$i) - (f64.const 0) - ) - ) - (if - (local.get $$tobool222$i) - (block - (local.set $$y$addr$4$i - (local.get $$mul220$i) - ) - (local.set $$z$0$i - (local.get $$incdec$ptr217$i) - ) - ) - (block - (local.set $$incdec$ptr217$i$lcssa - (local.get $$incdec$ptr217$i) - ) - (br $while-out59) - ) - ) - (br $while-in60) - ) - ) - (local.set $$$pr$i - (i32.load - (local.get $$e2$i) - ) - ) - (local.set $$cmp225$547$i - (i32.gt_s - (local.get $$$pr$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp225$547$i) - (block - (local.set $$211 - (local.get $$$pr$i) - ) - (local.set $$a$1549$i - (local.get $$arraydecay208$add$ptr213$i) - ) - (local.set $$z$1548$i - (local.get $$incdec$ptr217$i$lcssa) - ) - (loop $while-in62 - (block $while-out61 - (local.set $$cmp228$i - (i32.gt_s - (local.get $$211) - (i32.const 29) - ) - ) - (local.set $$cond233$i - (if (result i32) - (local.get $$cmp228$i) - (i32.const 29) - (local.get $$211) - ) - ) - (local.set $$d$0$542$i - (i32.add - (local.get $$z$1548$i) - (i32.const -4) - ) - ) - (local.set $$cmp235$543$i - (i32.lt_u - (local.get $$d$0$542$i) - (local.get $$a$1549$i) - ) - ) - (block $do-once63 - (if - (local.get $$cmp235$543$i) - (local.set $$a$2$ph$i - (local.get $$a$1549$i) - ) - (block - (local.set $$carry$0544$i - (i32.const 0) - ) - (local.set $$d$0545$i - (local.get $$d$0$542$i) - ) - (loop $while-in66 - (block $while-out65 - (local.set $$212 - (i32.load - (local.get $$d$0545$i) - ) - ) - (local.set $$213 - (call $_bitshift64Shl - (local.get $$212) - (i32.const 0) - (local.get $$cond233$i) - ) - ) - (local.set $$214 - (global.get $tempRet0) - ) - (local.set $$215 - (call $_i64Add - (local.get $$213) - (local.get $$214) - (local.get $$carry$0544$i) - (i32.const 0) - ) - ) - (local.set $$216 - (global.get $tempRet0) - ) - (local.set $$217 - (call $___uremdi3 - (local.get $$215) - (local.get $$216) - (i32.const 1000000000) - (i32.const 0) - ) - ) - (local.set $$218 - (global.get $tempRet0) - ) - (i32.store - (local.get $$d$0545$i) - (local.get $$217) - ) - (local.set $$219 - (call $___udivdi3 - (local.get $$215) - (local.get $$216) - (i32.const 1000000000) - (i32.const 0) - ) - ) - (local.set $$220 - (global.get $tempRet0) - ) - (local.set $$d$0$i - (i32.add - (local.get $$d$0545$i) - (i32.const -4) - ) - ) - (local.set $$cmp235$i - (i32.lt_u - (local.get $$d$0$i) - (local.get $$a$1549$i) - ) - ) - (if - (local.get $$cmp235$i) - (block - (local.set $$conv242$i$lcssa - (local.get $$219) - ) - (br $while-out65) - ) - (block - (local.set $$carry$0544$i - (local.get $$219) - ) - (local.set $$d$0545$i - (local.get $$d$0$i) - ) - ) - ) - (br $while-in66) - ) - ) - (local.set $$tobool244$i - (i32.eq - (local.get $$conv242$i$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$tobool244$i) - (block - (local.set $$a$2$ph$i - (local.get $$a$1549$i) - ) - (br $do-once63) - ) - ) - (local.set $$incdec$ptr246$i - (i32.add - (local.get $$a$1549$i) - (i32.const -4) - ) - ) - (i32.store - (local.get $$incdec$ptr246$i) - (local.get $$conv242$i$lcssa) - ) - (local.set $$a$2$ph$i - (local.get $$incdec$ptr246$i) - ) - ) - ) - ) - (local.set $$z$2$i - (local.get $$z$1548$i) - ) - (loop $while-in68 - (block $while-out67 - (local.set $$cmp249$i - (i32.gt_u - (local.get $$z$2$i) - (local.get $$a$2$ph$i) - ) - ) - (if - (i32.eqz - (local.get $$cmp249$i) - ) - (block - (local.set $$z$2$i$lcssa - (local.get $$z$2$i) - ) - (br $while-out67) - ) - ) - (local.set $$arrayidx251$i - (i32.add - (local.get $$z$2$i) - (i32.const -4) - ) - ) - (local.set $$221 - (i32.load - (local.get $$arrayidx251$i) - ) - ) - (local.set $$lnot$i - (i32.eq - (local.get $$221) - (i32.const 0) - ) - ) - (if - (local.get $$lnot$i) - (local.set $$z$2$i - (local.get $$arrayidx251$i) - ) - (block - (local.set $$z$2$i$lcssa - (local.get $$z$2$i) - ) - (br $while-out67) - ) - ) - (br $while-in68) - ) - ) - (local.set $$222 - (i32.load - (local.get $$e2$i) - ) - ) - (local.set $$sub256$i - (i32.sub - (local.get $$222) - (local.get $$cond233$i) - ) - ) - (i32.store - (local.get $$e2$i) - (local.get $$sub256$i) - ) - (local.set $$cmp225$i - (i32.gt_s - (local.get $$sub256$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp225$i) - (block - (local.set $$211 - (local.get $$sub256$i) - ) - (local.set $$a$1549$i - (local.get $$a$2$ph$i) - ) - (local.set $$z$1548$i - (local.get $$z$2$i$lcssa) - ) - ) - (block - (local.set $$$pr477$i - (local.get $$sub256$i) - ) - (local.set $$a$1$lcssa$i - (local.get $$a$2$ph$i) - ) - (local.set $$z$1$lcssa$i - (local.get $$z$2$i$lcssa) - ) - (br $while-out61) - ) - ) - (br $while-in62) - ) - ) - ) - (block - (local.set $$$pr477$i - (local.get $$$pr$i) - ) - (local.set $$a$1$lcssa$i - (local.get $$arraydecay208$add$ptr213$i) - ) - (local.set $$z$1$lcssa$i - (local.get $$incdec$ptr217$i$lcssa) - ) - ) - ) - (local.set $$cmp259$537$i - (i32.lt_s - (local.get $$$pr477$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp259$537$i) - (block - (local.set $$add273$i - (i32.add - (local.get $$$p$i) - (i32.const 25) - ) - ) - (local.set $$div274$i - (i32.and - (i32.div_s - (local.get $$add273$i) - (i32.const 9) - ) - (i32.const -1) - ) - ) - (local.set $$add275$i - (i32.add - (local.get $$div274$i) - (i32.const 1) - ) - ) - (local.set $$cmp299$i - (i32.eq - (local.get $$or$i$241) - (i32.const 102) - ) - ) - (local.set $$223 - (local.get $$$pr477$i) - ) - (local.set $$a$3539$i - (local.get $$a$1$lcssa$i) - ) - (local.set $$z$3538$i - (local.get $$z$1$lcssa$i) - ) - (loop $while-in70 - (block $while-out69 - (local.set $$sub264$i - (i32.sub - (i32.const 0) - (local.get $$223) - ) - ) - (local.set $$cmp265$i - (i32.gt_s - (local.get $$sub264$i) - (i32.const 9) - ) - ) - (local.set $$cond271$i - (if (result i32) - (local.get $$cmp265$i) - (i32.const 9) - (local.get $$sub264$i) - ) - ) - (local.set $$cmp277$533$i - (i32.lt_u - (local.get $$a$3539$i) - (local.get $$z$3538$i) - ) - ) - (block $do-once71 - (if - (local.get $$cmp277$533$i) - (block - (local.set $$shl280$i - (i32.shl - (i32.const 1) - (local.get $$cond271$i) - ) - ) - (local.set $$sub281$i - (i32.add - (local.get $$shl280$i) - (i32.const -1) - ) - ) - (local.set $$shr285$i - (i32.shr_u - (i32.const 1000000000) - (local.get $$cond271$i) - ) - ) - (local.set $$carry262$0535$i - (i32.const 0) - ) - (local.set $$d$1534$i - (local.get $$a$3539$i) - ) - (loop $while-in74 - (block $while-out73 - (local.set $$225 - (i32.load - (local.get $$d$1534$i) - ) - ) - (local.set $$and282$i - (i32.and - (local.get $$225) - (local.get $$sub281$i) - ) - ) - (local.set $$shr283$i - (i32.shr_u - (local.get $$225) - (local.get $$cond271$i) - ) - ) - (local.set $$add284$i - (i32.add - (local.get $$shr283$i) - (local.get $$carry262$0535$i) - ) - ) - (i32.store - (local.get $$d$1534$i) - (local.get $$add284$i) - ) - (local.set $$mul286$i - (i32.mul - (local.get $$and282$i) - (local.get $$shr285$i) - ) - ) - (local.set $$incdec$ptr288$i - (i32.add - (local.get $$d$1534$i) - (i32.const 4) - ) - ) - (local.set $$cmp277$i - (i32.lt_u - (local.get $$incdec$ptr288$i) - (local.get $$z$3538$i) - ) - ) - (if - (local.get $$cmp277$i) - (block - (local.set $$carry262$0535$i - (local.get $$mul286$i) - ) - (local.set $$d$1534$i - (local.get $$incdec$ptr288$i) - ) - ) - (block - (local.set $$mul286$i$lcssa - (local.get $$mul286$i) - ) - (br $while-out73) - ) - ) - (br $while-in74) - ) - ) - (local.set $$226 - (i32.load - (local.get $$a$3539$i) - ) - ) - (local.set $$tobool290$i - (i32.eq - (local.get $$226) - (i32.const 0) - ) - ) - (local.set $$incdec$ptr292$i - (i32.add - (local.get $$a$3539$i) - (i32.const 4) - ) - ) - (local.set $$incdec$ptr292$a$3$i - (if (result i32) - (local.get $$tobool290$i) - (local.get $$incdec$ptr292$i) - (local.get $$a$3539$i) - ) - ) - (local.set $$tobool294$i - (i32.eq - (local.get $$mul286$i$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$tobool294$i) - (block - (local.set $$incdec$ptr292$a$3573$i - (local.get $$incdec$ptr292$a$3$i) - ) - (local.set $$z$4$i - (local.get $$z$3538$i) - ) - (br $do-once71) - ) - ) - (local.set $$incdec$ptr296$i - (i32.add - (local.get $$z$3538$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$z$3538$i) - (local.get $$mul286$i$lcssa) - ) - (local.set $$incdec$ptr292$a$3573$i - (local.get $$incdec$ptr292$a$3$i) - ) - (local.set $$z$4$i - (local.get $$incdec$ptr296$i) - ) - ) - (block - (local.set $$224 - (i32.load - (local.get $$a$3539$i) - ) - ) - (local.set $$tobool290$569$i - (i32.eq - (local.get $$224) - (i32.const 0) - ) - ) - (local.set $$incdec$ptr292$570$i - (i32.add - (local.get $$a$3539$i) - (i32.const 4) - ) - ) - (local.set $$incdec$ptr292$a$3$571$i - (if (result i32) - (local.get $$tobool290$569$i) - (local.get $$incdec$ptr292$570$i) - (local.get $$a$3539$i) - ) - ) - (local.set $$incdec$ptr292$a$3573$i - (local.get $$incdec$ptr292$a$3$571$i) - ) - (local.set $$z$4$i - (local.get $$z$3538$i) - ) - ) - ) - ) - (local.set $$cond304$i - (if (result i32) - (local.get $$cmp299$i) - (local.get $$arraydecay208$add$ptr213$i) - (local.get $$incdec$ptr292$a$3573$i) - ) - ) - (local.set $$sub$ptr$lhs$cast305$i - (local.get $$z$4$i) - ) - (local.set $$sub$ptr$rhs$cast306$i - (local.get $$cond304$i) - ) - (local.set $$sub$ptr$sub307$i - (i32.sub - (local.get $$sub$ptr$lhs$cast305$i) - (local.get $$sub$ptr$rhs$cast306$i) - ) - ) - (local.set $$sub$ptr$div$i - (i32.shr_s - (local.get $$sub$ptr$sub307$i) - (i32.const 2) - ) - ) - (local.set $$cmp308$i - (i32.gt_s - (local.get $$sub$ptr$div$i) - (local.get $$add275$i) - ) - ) - (local.set $$add$ptr311$i - (i32.add - (local.get $$cond304$i) - (i32.shl - (local.get $$add275$i) - (i32.const 2) - ) - ) - ) - (local.set $$add$ptr311$z$4$i - (if (result i32) - (local.get $$cmp308$i) - (local.get $$add$ptr311$i) - (local.get $$z$4$i) - ) - ) - (local.set $$227 - (i32.load - (local.get $$e2$i) - ) - ) - (local.set $$add313$i - (i32.add - (local.get $$227) - (local.get $$cond271$i) - ) - ) - (i32.store - (local.get $$e2$i) - (local.get $$add313$i) - ) - (local.set $$cmp259$i - (i32.lt_s - (local.get $$add313$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp259$i) - (block - (local.set $$223 - (local.get $$add313$i) - ) - (local.set $$a$3539$i - (local.get $$incdec$ptr292$a$3573$i) - ) - (local.set $$z$3538$i - (local.get $$add$ptr311$z$4$i) - ) - ) - (block - (local.set $$a$3$lcssa$i - (local.get $$incdec$ptr292$a$3573$i) - ) - (local.set $$z$3$lcssa$i - (local.get $$add$ptr311$z$4$i) - ) - (br $while-out69) - ) - ) - (br $while-in70) - ) - ) - ) - (block - (local.set $$a$3$lcssa$i - (local.get $$a$1$lcssa$i) - ) - (local.set $$z$3$lcssa$i - (local.get $$z$1$lcssa$i) - ) - ) - ) - (local.set $$cmp315$i - (i32.lt_u - (local.get $$a$3$lcssa$i) - (local.get $$z$3$lcssa$i) - ) - ) - (block $do-once75 - (if - (local.get $$cmp315$i) - (block - (local.set $$sub$ptr$rhs$cast319$i - (local.get $$a$3$lcssa$i) - ) - (local.set $$sub$ptr$sub320$i - (i32.sub - (local.get $$sub$ptr$rhs$cast345$i) - (local.get $$sub$ptr$rhs$cast319$i) - ) - ) - (local.set $$sub$ptr$div321$i - (i32.shr_s - (local.get $$sub$ptr$sub320$i) - (i32.const 2) - ) - ) - (local.set $$mul322$i - (i32.mul - (local.get $$sub$ptr$div321$i) - (i32.const 9) - ) - ) - (local.set $$228 - (i32.load - (local.get $$a$3$lcssa$i) - ) - ) - (local.set $$cmp324$529$i - (i32.lt_u - (local.get $$228) - (i32.const 10) - ) - ) - (if - (local.get $$cmp324$529$i) - (block - (local.set $$e$1$i - (local.get $$mul322$i) - ) - (br $do-once75) - ) - (block - (local.set $$e$0531$i - (local.get $$mul322$i) - ) - (local.set $$i$0530$i - (i32.const 10) - ) - ) - ) - (loop $while-in78 - (block $while-out77 - (local.set $$mul328$i - (i32.mul - (local.get $$i$0530$i) - (i32.const 10) - ) - ) - (local.set $$inc$i - (i32.add - (local.get $$e$0531$i) - (i32.const 1) - ) - ) - (local.set $$cmp324$i - (i32.lt_u - (local.get $$228) - (local.get $$mul328$i) - ) - ) - (if - (local.get $$cmp324$i) - (block - (local.set $$e$1$i - (local.get $$inc$i) - ) - (br $while-out77) - ) - (block - (local.set $$e$0531$i - (local.get $$inc$i) - ) - (local.set $$i$0530$i - (local.get $$mul328$i) - ) - ) - ) - (br $while-in78) - ) - ) - ) - (local.set $$e$1$i - (i32.const 0) - ) - ) - ) - (local.set $$cmp333$i - (i32.ne - (local.get $$or$i$241) - (i32.const 102) - ) - ) - (local.set $$mul335$i - (if (result i32) - (local.get $$cmp333$i) - (local.get $$e$1$i) - (i32.const 0) - ) - ) - (local.set $$sub336$i - (i32.sub - (local.get $$$p$i) - (local.get $$mul335$i) - ) - ) - (local.set $$cmp338$i - (i32.eq - (local.get $$or$i$241) - (i32.const 103) - ) - ) - (local.set $$tobool341$i - (i32.ne - (local.get $$$p$i) - (i32.const 0) - ) - ) - (local.set $$229 - (i32.and - (local.get $$tobool341$i) - (local.get $$cmp338$i) - ) - ) - (local.set $$land$ext$neg$i - (i32.shr_s - (i32.shl - (local.get $$229) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$sub343$i - (i32.add - (local.get $$sub336$i) - (local.get $$land$ext$neg$i) - ) - ) - (local.set $$sub$ptr$lhs$cast344$i - (local.get $$z$3$lcssa$i) - ) - (local.set $$sub$ptr$sub346$i - (i32.sub - (local.get $$sub$ptr$lhs$cast344$i) - (local.get $$sub$ptr$rhs$cast345$i) - ) - ) - (local.set $$sub$ptr$div347$i - (i32.shr_s - (local.get $$sub$ptr$sub346$i) - (i32.const 2) - ) - ) - (local.set $$230 - (i32.mul - (local.get $$sub$ptr$div347$i) - (i32.const 9) - ) - ) - (local.set $$mul349$i - (i32.add - (local.get $$230) - (i32.const -9) - ) - ) - (local.set $$cmp350$i - (i32.lt_s - (local.get $$sub343$i) - (local.get $$mul349$i) - ) - ) - (if - (local.get $$cmp350$i) - (block - (local.set $$add$ptr354$i - (i32.add - (local.get $$arraydecay208$add$ptr213$i) - (i32.const 4) - ) - ) - (local.set $$add355$i - (i32.add - (local.get $$sub343$i) - (i32.const 9216) - ) - ) - (local.set $$div356$i - (i32.and - (i32.div_s - (local.get $$add355$i) - (i32.const 9) - ) - (i32.const -1) - ) - ) - (local.set $$sub357$i - (i32.add - (local.get $$div356$i) - (i32.const -1024) - ) - ) - (local.set $$add$ptr358$i - (i32.add - (local.get $$add$ptr354$i) - (i32.shl - (local.get $$sub357$i) - (i32.const 2) - ) - ) - ) - (local.set $$rem360$i - (i32.and - (i32.rem_s - (local.get $$add355$i) - (i32.const 9) - ) - (i32.const -1) - ) - ) - (local.set $$j$0$524$i - (i32.add - (local.get $$rem360$i) - (i32.const 1) - ) - ) - (local.set $$cmp363$525$i - (i32.lt_s - (local.get $$j$0$524$i) - (i32.const 9) - ) - ) - (if - (local.get $$cmp363$525$i) - (block - (local.set $$i$1526$i - (i32.const 10) - ) - (local.set $$j$0527$i - (local.get $$j$0$524$i) - ) - (loop $while-in80 - (block $while-out79 - (local.set $$mul367$i - (i32.mul - (local.get $$i$1526$i) - (i32.const 10) - ) - ) - (local.set $$j$0$i - (i32.add - (local.get $$j$0527$i) - (i32.const 1) - ) - ) - (local.set $$exitcond$i - (i32.eq - (local.get $$j$0$i) - (i32.const 9) - ) - ) - (if - (local.get $$exitcond$i) - (block - (local.set $$i$1$lcssa$i - (local.get $$mul367$i) - ) - (br $while-out79) - ) - (block - (local.set $$i$1526$i - (local.get $$mul367$i) - ) - (local.set $$j$0527$i - (local.get $$j$0$i) - ) - ) - ) - (br $while-in80) - ) - ) - ) - (local.set $$i$1$lcssa$i - (i32.const 10) - ) - ) - (local.set $$231 - (i32.load - (local.get $$add$ptr358$i) - ) - ) - (local.set $$rem370$i - (i32.and - (i32.rem_u - (local.get $$231) - (local.get $$i$1$lcssa$i) - ) - (i32.const -1) - ) - ) - (local.set $$tobool371$i - (i32.eq - (local.get $$rem370$i) - (i32.const 0) - ) - ) - (local.set $$add$ptr373$i - (i32.add - (local.get $$add$ptr358$i) - (i32.const 4) - ) - ) - (local.set $$cmp374$i - (i32.eq - (local.get $$add$ptr373$i) - (local.get $$z$3$lcssa$i) - ) - ) - (local.set $$or$cond395$i - (i32.and - (local.get $$cmp374$i) - (local.get $$tobool371$i) - ) - ) - (block $do-once81 - (if - (local.get $$or$cond395$i) - (block - (local.set $$a$8$i - (local.get $$a$3$lcssa$i) - ) - (local.set $$d$4$i - (local.get $$add$ptr358$i) - ) - (local.set $$e$4$i - (local.get $$e$1$i) - ) - ) - (block - (local.set $$div378$i - (i32.and - (i32.div_u - (local.get $$231) - (local.get $$i$1$lcssa$i) - ) - (i32.const -1) - ) - ) - (local.set $$and379$i - (i32.and - (local.get $$div378$i) - (i32.const 1) - ) - ) - (local.set $$tobool380$i - (i32.eq - (local.get $$and379$i) - (i32.const 0) - ) - ) - (local.set $$$396$i - (if (result f64) - (local.get $$tobool380$i) - (f64.const 9007199254740992) - (f64.const 9007199254740994) - ) - ) - (local.set $$div384$i - (i32.and - (i32.div_s - (local.get $$i$1$lcssa$i) - (i32.const 2) - ) - (i32.const -1) - ) - ) - (local.set $$cmp385$i - (i32.lt_u - (local.get $$rem370$i) - (local.get $$div384$i) - ) - ) - (if - (local.get $$cmp385$i) - (local.set $$small$0$i - (f64.const 0.5) - ) - (block - (local.set $$cmp390$i - (i32.eq - (local.get $$rem370$i) - (local.get $$div384$i) - ) - ) - (local.set $$or$cond397$i - (i32.and - (local.get $$cmp374$i) - (local.get $$cmp390$i) - ) - ) - (local.set $$$404$i - (if (result f64) - (local.get $$or$cond397$i) - (f64.const 1) - (f64.const 1.5) - ) - ) - (local.set $$small$0$i - (local.get $$$404$i) - ) - ) - ) - (local.set $$tobool400$i - (i32.eq - (local.get $$pl$0$i) - (i32.const 0) - ) - ) - (block $do-once83 - (if - (local.get $$tobool400$i) - (block - (local.set $$round377$1$i - (local.get $$$396$i) - ) - (local.set $$small$1$i - (local.get $$small$0$i) - ) - ) - (block - (local.set $$232 - (i32.load8_s - (local.get $$prefix$0$i) - ) - ) - (local.set $$cmp403$i - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$232) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 45) - ) - ) - (if - (i32.eqz - (local.get $$cmp403$i) - ) - (block - (local.set $$round377$1$i - (local.get $$$396$i) - ) - (local.set $$small$1$i - (local.get $$small$0$i) - ) - (br $do-once83) - ) - ) - (local.set $$mul406$i - (f64.neg - (local.get $$$396$i) - ) - ) - (local.set $$mul407$i - (f64.neg - (local.get $$small$0$i) - ) - ) - (local.set $$round377$1$i - (local.get $$mul406$i) - ) - (local.set $$small$1$i - (local.get $$mul407$i) - ) - ) - ) - ) - (local.set $$sub409$i - (i32.sub - (local.get $$231) - (local.get $$rem370$i) - ) - ) - (i32.store - (local.get $$add$ptr358$i) - (local.get $$sub409$i) - ) - (local.set $$add410$i - (f64.add - (local.get $$round377$1$i) - (local.get $$small$1$i) - ) - ) - (local.set $$cmp411$i - (f64.ne - (local.get $$add410$i) - (local.get $$round377$1$i) - ) - ) - (if - (i32.eqz - (local.get $$cmp411$i) - ) - (block - (local.set $$a$8$i - (local.get $$a$3$lcssa$i) - ) - (local.set $$d$4$i - (local.get $$add$ptr358$i) - ) - (local.set $$e$4$i - (local.get $$e$1$i) - ) - (br $do-once81) - ) - ) - (local.set $$add414$i - (i32.add - (local.get $$sub409$i) - (local.get $$i$1$lcssa$i) - ) - ) - (i32.store - (local.get $$add$ptr358$i) - (local.get $$add414$i) - ) - (local.set $$cmp416$519$i - (i32.gt_u - (local.get $$add414$i) - (i32.const 999999999) - ) - ) - (if - (local.get $$cmp416$519$i) - (block - (local.set $$a$5521$i - (local.get $$a$3$lcssa$i) - ) - (local.set $$d$2520$i - (local.get $$add$ptr358$i) - ) - (loop $while-in86 - (block $while-out85 - (local.set $$incdec$ptr419$i - (i32.add - (local.get $$d$2520$i) - (i32.const -4) - ) - ) - (i32.store - (local.get $$d$2520$i) - (i32.const 0) - ) - (local.set $$cmp420$i - (i32.lt_u - (local.get $$incdec$ptr419$i) - (local.get $$a$5521$i) - ) - ) - (if - (local.get $$cmp420$i) - (block - (local.set $$incdec$ptr423$i - (i32.add - (local.get $$a$5521$i) - (i32.const -4) - ) - ) - (i32.store - (local.get $$incdec$ptr423$i) - (i32.const 0) - ) - (local.set $$a$6$i - (local.get $$incdec$ptr423$i) - ) - ) - (local.set $$a$6$i - (local.get $$a$5521$i) - ) - ) - (local.set $$233 - (i32.load - (local.get $$incdec$ptr419$i) - ) - ) - (local.set $$inc425$i - (i32.add - (local.get $$233) - (i32.const 1) - ) - ) - (i32.store - (local.get $$incdec$ptr419$i) - (local.get $$inc425$i) - ) - (local.set $$cmp416$i - (i32.gt_u - (local.get $$inc425$i) - (i32.const 999999999) - ) - ) - (if - (local.get $$cmp416$i) - (block - (local.set $$a$5521$i - (local.get $$a$6$i) - ) - (local.set $$d$2520$i - (local.get $$incdec$ptr419$i) - ) - ) - (block - (local.set $$a$5$lcssa$i - (local.get $$a$6$i) - ) - (local.set $$d$2$lcssa$i - (local.get $$incdec$ptr419$i) - ) - (br $while-out85) - ) - ) - (br $while-in86) - ) - ) - ) - (block - (local.set $$a$5$lcssa$i - (local.get $$a$3$lcssa$i) - ) - (local.set $$d$2$lcssa$i - (local.get $$add$ptr358$i) - ) - ) - ) - (local.set $$sub$ptr$rhs$cast428$i - (local.get $$a$5$lcssa$i) - ) - (local.set $$sub$ptr$sub429$i - (i32.sub - (local.get $$sub$ptr$rhs$cast345$i) - (local.get $$sub$ptr$rhs$cast428$i) - ) - ) - (local.set $$sub$ptr$div430$i - (i32.shr_s - (local.get $$sub$ptr$sub429$i) - (i32.const 2) - ) - ) - (local.set $$mul431$i - (i32.mul - (local.get $$sub$ptr$div430$i) - (i32.const 9) - ) - ) - (local.set $$234 - (i32.load - (local.get $$a$5$lcssa$i) - ) - ) - (local.set $$cmp433$515$i - (i32.lt_u - (local.get $$234) - (i32.const 10) - ) - ) - (if - (local.get $$cmp433$515$i) - (block - (local.set $$a$8$i - (local.get $$a$5$lcssa$i) - ) - (local.set $$d$4$i - (local.get $$d$2$lcssa$i) - ) - (local.set $$e$4$i - (local.get $$mul431$i) - ) - (br $do-once81) - ) - (block - (local.set $$e$2517$i - (local.get $$mul431$i) - ) - (local.set $$i$2516$i - (i32.const 10) - ) - ) - ) - (loop $while-in88 - (block $while-out87 - (local.set $$mul437$i - (i32.mul - (local.get $$i$2516$i) - (i32.const 10) - ) - ) - (local.set $$inc438$i - (i32.add - (local.get $$e$2517$i) - (i32.const 1) - ) - ) - (local.set $$cmp433$i - (i32.lt_u - (local.get $$234) - (local.get $$mul437$i) - ) - ) - (if - (local.get $$cmp433$i) - (block - (local.set $$a$8$i - (local.get $$a$5$lcssa$i) - ) - (local.set $$d$4$i - (local.get $$d$2$lcssa$i) - ) - (local.set $$e$4$i - (local.get $$inc438$i) - ) - (br $while-out87) - ) - (block - (local.set $$e$2517$i - (local.get $$inc438$i) - ) - (local.set $$i$2516$i - (local.get $$mul437$i) - ) - ) - ) - (br $while-in88) - ) - ) - ) - ) - ) - (local.set $$add$ptr442$i - (i32.add - (local.get $$d$4$i) - (i32.const 4) - ) - ) - (local.set $$cmp443$i - (i32.gt_u - (local.get $$z$3$lcssa$i) - (local.get $$add$ptr442$i) - ) - ) - (local.set $$add$ptr442$z$3$i - (if (result i32) - (local.get $$cmp443$i) - (local.get $$add$ptr442$i) - (local.get $$z$3$lcssa$i) - ) - ) - (local.set $$a$9$ph$i - (local.get $$a$8$i) - ) - (local.set $$e$5$ph$i - (local.get $$e$4$i) - ) - (local.set $$z$7$ph$i - (local.get $$add$ptr442$z$3$i) - ) - ) - (block - (local.set $$a$9$ph$i - (local.get $$a$3$lcssa$i) - ) - (local.set $$e$5$ph$i - (local.get $$e$1$i) - ) - (local.set $$z$7$ph$i - (local.get $$z$3$lcssa$i) - ) - ) - ) - (local.set $$sub626$le$i - (i32.sub - (i32.const 0) - (local.get $$e$5$ph$i) - ) - ) - (local.set $$z$7$i - (local.get $$z$7$ph$i) - ) - (loop $while-in90 - (block $while-out89 - (local.set $$cmp450$i - (i32.gt_u - (local.get $$z$7$i) - (local.get $$a$9$ph$i) - ) - ) - (if - (i32.eqz - (local.get $$cmp450$i) - ) - (block - (local.set $$cmp450$lcssa$i - (i32.const 0) - ) - (local.set $$z$7$i$lcssa - (local.get $$z$7$i) - ) - (br $while-out89) - ) - ) - (local.set $$arrayidx453$i - (i32.add - (local.get $$z$7$i) - (i32.const -4) - ) - ) - (local.set $$235 - (i32.load - (local.get $$arrayidx453$i) - ) - ) - (local.set $$lnot455$i - (i32.eq - (local.get $$235) - (i32.const 0) - ) - ) - (if - (local.get $$lnot455$i) - (local.set $$z$7$i - (local.get $$arrayidx453$i) - ) - (block - (local.set $$cmp450$lcssa$i - (i32.const 1) - ) - (local.set $$z$7$i$lcssa - (local.get $$z$7$i) - ) - (br $while-out89) - ) - ) - (br $while-in90) - ) - ) - (block $do-once91 - (if - (local.get $$cmp338$i) - (block - (local.set $$236 - (i32.and - (local.get $$tobool341$i) - (i32.const 1) - ) - ) - (local.set $$inc468$i - (i32.xor - (local.get $$236) - (i32.const 1) - ) - ) - (local.set $$$p$inc468$i - (i32.add - (local.get $$inc468$i) - (local.get $$$p$i) - ) - ) - (local.set $$cmp470$i - (i32.gt_s - (local.get $$$p$inc468$i) - (local.get $$e$5$ph$i) - ) - ) - (local.set $$cmp473$i - (i32.gt_s - (local.get $$e$5$ph$i) - (i32.const -5) - ) - ) - (local.set $$or$cond2$i - (i32.and - (local.get $$cmp470$i) - (local.get $$cmp473$i) - ) - ) - (if - (local.get $$or$cond2$i) - (block - (local.set $$dec476$i - (i32.add - (local.get $$t$0) - (i32.const -1) - ) - ) - (local.set $$add477$neg$i - (i32.add - (local.get $$$p$inc468$i) - (i32.const -1) - ) - ) - (local.set $$sub478$i - (i32.sub - (local.get $$add477$neg$i) - (local.get $$e$5$ph$i) - ) - ) - (local.set $$p$addr$2$i - (local.get $$sub478$i) - ) - (local.set $$t$addr$0$i - (local.get $$dec476$i) - ) - ) - (block - (local.set $$sub480$i - (i32.add - (local.get $$t$0) - (i32.const -2) - ) - ) - (local.set $$dec481$i - (i32.add - (local.get $$$p$inc468$i) - (i32.const -1) - ) - ) - (local.set $$p$addr$2$i - (local.get $$dec481$i) - ) - (local.set $$t$addr$0$i - (local.get $$sub480$i) - ) - ) - ) - (local.set $$and483$i - (i32.and - (local.get $$fl$1$and219) - (i32.const 8) - ) - ) - (local.set $$tobool484$i - (i32.eq - (local.get $$and483$i) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool484$i) - ) - (block - (local.set $$and610$pre$phi$iZ2D - (local.get $$and483$i) - ) - (local.set $$p$addr$3$i - (local.get $$p$addr$2$i) - ) - (local.set $$t$addr$1$i - (local.get $$t$addr$0$i) - ) - (br $do-once91) - ) - ) - (block $do-once93 - (if - (local.get $$cmp450$lcssa$i) - (block - (local.set $$arrayidx489$i - (i32.add - (local.get $$z$7$i$lcssa) - (i32.const -4) - ) - ) - (local.set $$237 - (i32.load - (local.get $$arrayidx489$i) - ) - ) - (local.set $$tobool490$i - (i32.eq - (local.get $$237) - (i32.const 0) - ) - ) - (if - (local.get $$tobool490$i) - (block - (local.set $$j$2$i - (i32.const 9) - ) - (br $do-once93) - ) - ) - (local.set $$rem494$510$i - (i32.and - (i32.rem_u - (local.get $$237) - (i32.const 10) - ) - (i32.const -1) - ) - ) - (local.set $$cmp495$511$i - (i32.eq - (local.get $$rem494$510$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp495$511$i) - (block - (local.set $$i$3512$i - (i32.const 10) - ) - (local.set $$j$1513$i - (i32.const 0) - ) - ) - (block - (local.set $$j$2$i - (i32.const 0) - ) - (br $do-once93) - ) - ) - (loop $while-in96 - (block $while-out95 - (local.set $$mul499$i - (i32.mul - (local.get $$i$3512$i) - (i32.const 10) - ) - ) - (local.set $$inc500$i - (i32.add - (local.get $$j$1513$i) - (i32.const 1) - ) - ) - (local.set $$rem494$i - (i32.and - (i32.rem_u - (local.get $$237) - (local.get $$mul499$i) - ) - (i32.const -1) - ) - ) - (local.set $$cmp495$i - (i32.eq - (local.get $$rem494$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp495$i) - (block - (local.set $$i$3512$i - (local.get $$mul499$i) - ) - (local.set $$j$1513$i - (local.get $$inc500$i) - ) - ) - (block - (local.set $$j$2$i - (local.get $$inc500$i) - ) - (br $while-out95) - ) - ) - (br $while-in96) - ) - ) - ) - (local.set $$j$2$i - (i32.const 9) - ) - ) - ) - (local.set $$or504$i - (i32.or - (local.get $$t$addr$0$i) - (i32.const 32) - ) - ) - (local.set $$cmp505$i - (i32.eq - (local.get $$or504$i) - (i32.const 102) - ) - ) - (local.set $$sub$ptr$lhs$cast508$i - (local.get $$z$7$i$lcssa) - ) - (local.set $$sub$ptr$sub510$i - (i32.sub - (local.get $$sub$ptr$lhs$cast508$i) - (local.get $$sub$ptr$rhs$cast345$i) - ) - ) - (local.set $$sub$ptr$div511$i - (i32.shr_s - (local.get $$sub$ptr$sub510$i) - (i32.const 2) - ) - ) - (local.set $$238 - (i32.mul - (local.get $$sub$ptr$div511$i) - (i32.const 9) - ) - ) - (local.set $$mul513$i - (i32.add - (local.get $$238) - (i32.const -9) - ) - ) - (if - (local.get $$cmp505$i) - (block - (local.set $$sub514$i - (i32.sub - (local.get $$mul513$i) - (local.get $$j$2$i) - ) - ) - (local.set $$cmp515$i - (i32.lt_s - (local.get $$sub514$i) - (i32.const 0) - ) - ) - (local.set $$$sub514$i - (if (result i32) - (local.get $$cmp515$i) - (i32.const 0) - (local.get $$sub514$i) - ) - ) - (local.set $$cmp528$i - (i32.lt_s - (local.get $$p$addr$2$i) - (local.get $$$sub514$i) - ) - ) - (local.set $$p$addr$2$$sub514398$i - (if (result i32) - (local.get $$cmp528$i) - (local.get $$p$addr$2$i) - (local.get $$$sub514$i) - ) - ) - (local.set $$and610$pre$phi$iZ2D - (i32.const 0) - ) - (local.set $$p$addr$3$i - (local.get $$p$addr$2$$sub514398$i) - ) - (local.set $$t$addr$1$i - (local.get $$t$addr$0$i) - ) - (br $do-once91) - ) - (block - (local.set $$add561$i - (i32.add - (local.get $$mul513$i) - (local.get $$e$5$ph$i) - ) - ) - (local.set $$sub562$i - (i32.sub - (local.get $$add561$i) - (local.get $$j$2$i) - ) - ) - (local.set $$cmp563$i - (i32.lt_s - (local.get $$sub562$i) - (i32.const 0) - ) - ) - (local.set $$$sub562$i - (if (result i32) - (local.get $$cmp563$i) - (i32.const 0) - (local.get $$sub562$i) - ) - ) - (local.set $$cmp577$i - (i32.lt_s - (local.get $$p$addr$2$i) - (local.get $$$sub562$i) - ) - ) - (local.set $$p$addr$2$$sub562399$i - (if (result i32) - (local.get $$cmp577$i) - (local.get $$p$addr$2$i) - (local.get $$$sub562$i) - ) - ) - (local.set $$and610$pre$phi$iZ2D - (i32.const 0) - ) - (local.set $$p$addr$3$i - (local.get $$p$addr$2$$sub562399$i) - ) - (local.set $$t$addr$1$i - (local.get $$t$addr$0$i) - ) - (br $do-once91) - ) - ) - ) - (block - (local.set $$$pre567$i - (i32.and - (local.get $$fl$1$and219) - (i32.const 8) - ) - ) - (local.set $$and610$pre$phi$iZ2D - (local.get $$$pre567$i) - ) - (local.set $$p$addr$3$i - (local.get $$$p$i) - ) - (local.set $$t$addr$1$i - (local.get $$t$0) - ) - ) - ) - ) - (local.set $$239 - (i32.or - (local.get $$p$addr$3$i) - (local.get $$and610$pre$phi$iZ2D) - ) - ) - (local.set $$240 - (i32.ne - (local.get $$239) - (i32.const 0) - ) - ) - (local.set $$lor$ext$i - (i32.and - (local.get $$240) - (i32.const 1) - ) - ) - (local.set $$or613$i - (i32.or - (local.get $$t$addr$1$i) - (i32.const 32) - ) - ) - (local.set $$cmp614$i - (i32.eq - (local.get $$or613$i) - (i32.const 102) - ) - ) - (if - (local.get $$cmp614$i) - (block - (local.set $$cmp617$i - (i32.gt_s - (local.get $$e$5$ph$i) - (i32.const 0) - ) - ) - (local.set $$add620$i - (if (result i32) - (local.get $$cmp617$i) - (local.get $$e$5$ph$i) - (i32.const 0) - ) - ) - (local.set $$estr$2$i - (i32.const 0) - ) - (local.set $$sub$ptr$sub650$pn$i - (local.get $$add620$i) - ) - ) - (block - (local.set $$cmp623$i - (i32.lt_s - (local.get $$e$5$ph$i) - (i32.const 0) - ) - ) - (local.set $$cond629$i - (if (result i32) - (local.get $$cmp623$i) - (local.get $$sub626$le$i) - (local.get $$e$5$ph$i) - ) - ) - (local.set $$241 - (i32.lt_s - (local.get $$cond629$i) - (i32.const 0) - ) - ) - (local.set $$242 - (i32.shr_s - (i32.shl - (local.get $$241) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$243 - (call $_fmt_u - (local.get $$cond629$i) - (local.get $$242) - (local.get $$arrayidx$i$236) - ) - ) - (local.set $$sub$ptr$rhs$cast634$504$i - (local.get $$243) - ) - (local.set $$sub$ptr$sub635$505$i - (i32.sub - (local.get $$sub$ptr$lhs$cast160$i) - (local.get $$sub$ptr$rhs$cast634$504$i) - ) - ) - (local.set $$cmp636$506$i - (i32.lt_s - (local.get $$sub$ptr$sub635$505$i) - (i32.const 2) - ) - ) - (if - (local.get $$cmp636$506$i) - (block - (local.set $$estr$1507$i - (local.get $$243) - ) - (loop $while-in98 - (block $while-out97 - (local.set $$incdec$ptr639$i - (i32.add - (local.get $$estr$1507$i) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr639$i) - (i32.const 48) - ) - (local.set $$sub$ptr$rhs$cast634$i - (local.get $$incdec$ptr639$i) - ) - (local.set $$sub$ptr$sub635$i - (i32.sub - (local.get $$sub$ptr$lhs$cast160$i) - (local.get $$sub$ptr$rhs$cast634$i) - ) - ) - (local.set $$cmp636$i - (i32.lt_s - (local.get $$sub$ptr$sub635$i) - (i32.const 2) - ) - ) - (if - (local.get $$cmp636$i) - (local.set $$estr$1507$i - (local.get $$incdec$ptr639$i) - ) - (block - (local.set $$estr$1$lcssa$i - (local.get $$incdec$ptr639$i) - ) - (br $while-out97) - ) - ) - (br $while-in98) - ) - ) - ) - (local.set $$estr$1$lcssa$i - (local.get $$243) - ) - ) - (local.set $$244 - (i32.shr_s - (local.get $$e$5$ph$i) - (i32.const 31) - ) - ) - (local.set $$245 - (i32.and - (local.get $$244) - (i32.const 2) - ) - ) - (local.set $$246 - (i32.add - (local.get $$245) - (i32.const 43) - ) - ) - (local.set $$conv644$i - (i32.and - (local.get $$246) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr645$i - (i32.add - (local.get $$estr$1$lcssa$i) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr645$i) - (local.get $$conv644$i) - ) - (local.set $$conv646$i - (i32.and - (local.get $$t$addr$1$i) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr647$i - (i32.add - (local.get $$estr$1$lcssa$i) - (i32.const -2) - ) - ) - (i32.store8 - (local.get $$incdec$ptr647$i) - (local.get $$conv646$i) - ) - (local.set $$sub$ptr$rhs$cast649$i - (local.get $$incdec$ptr647$i) - ) - (local.set $$sub$ptr$sub650$i - (i32.sub - (local.get $$sub$ptr$lhs$cast160$i) - (local.get $$sub$ptr$rhs$cast649$i) - ) - ) - (local.set $$estr$2$i - (local.get $$incdec$ptr647$i) - ) - (local.set $$sub$ptr$sub650$pn$i - (local.get $$sub$ptr$sub650$i) - ) - ) - ) - (local.set $$add608$i - (i32.add - (local.get $$pl$0$i) - (i32.const 1) - ) - ) - (local.set $$add612$i - (i32.add - (local.get $$add608$i) - (local.get $$p$addr$3$i) - ) - ) - (local.set $$l$1$i - (i32.add - (local.get $$add612$i) - (local.get $$lor$ext$i) - ) - ) - (local.set $$add653$i - (i32.add - (local.get $$l$1$i) - (local.get $$sub$ptr$sub650$pn$i) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$add653$i) - (local.get $$fl$1$and219) - ) - (local.set $$247 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$436$i - (i32.and - (local.get $$247) - (i32.const 32) - ) - ) - (local.set $$tobool$i$437$i - (i32.eq - (local.get $$and$i$436$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$437$i) - (drop - (call $___fwritex - (local.get $$prefix$0$i) - (local.get $$pl$0$i) - (local.get $$f) - ) - ) - ) - (local.set $$xor655$i - (i32.xor - (local.get $$fl$1$and219) - (i32.const 65536) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 48) - (local.get $$w$1) - (local.get $$add653$i) - (local.get $$xor655$i) - ) - (block $do-once99 - (if - (local.get $$cmp614$i) - (block - (local.set $$cmp660$i - (i32.gt_u - (local.get $$a$9$ph$i) - (local.get $$arraydecay208$add$ptr213$i) - ) - ) - (local.set $$r$0$a$9$i - (if (result i32) - (local.get $$cmp660$i) - (local.get $$arraydecay208$add$ptr213$i) - (local.get $$a$9$ph$i) - ) - ) - (local.set $$d$5494$i - (local.get $$r$0$a$9$i) - ) - (loop $while-in102 - (block $while-out101 - (local.set $$248 - (i32.load - (local.get $$d$5494$i) - ) - ) - (local.set $$249 - (call $_fmt_u - (local.get $$248) - (i32.const 0) - (local.get $$add$ptr671$i) - ) - ) - (local.set $$cmp673$i - (i32.eq - (local.get $$d$5494$i) - (local.get $$r$0$a$9$i) - ) - ) - (block $do-once103 - (if - (local.get $$cmp673$i) - (block - (local.set $$cmp686$i - (i32.eq - (local.get $$249) - (local.get $$add$ptr671$i) - ) - ) - (if - (i32.eqz - (local.get $$cmp686$i) - ) - (block - (local.set $$s668$1$i - (local.get $$249) - ) - (br $do-once103) - ) - ) - (i32.store8 - (local.get $$incdec$ptr689$i) - (i32.const 48) - ) - (local.set $$s668$1$i - (local.get $$incdec$ptr689$i) - ) - ) - (block - (local.set $$cmp678$491$i - (i32.gt_u - (local.get $$249) - (local.get $$buf$i) - ) - ) - (if - (local.get $$cmp678$491$i) - (local.set $$s668$0492$i - (local.get $$249) - ) - (block - (local.set $$s668$1$i - (local.get $$249) - ) - (br $do-once103) - ) - ) - (loop $while-in106 - (block $while-out105 - (local.set $$incdec$ptr681$i - (i32.add - (local.get $$s668$0492$i) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr681$i) - (i32.const 48) - ) - (local.set $$cmp678$i - (i32.gt_u - (local.get $$incdec$ptr681$i) - (local.get $$buf$i) - ) - ) - (if - (local.get $$cmp678$i) - (local.set $$s668$0492$i - (local.get $$incdec$ptr681$i) - ) - (block - (local.set $$s668$1$i - (local.get $$incdec$ptr681$i) - ) - (br $while-out105) - ) - ) - (br $while-in106) - ) - ) - ) - ) - ) - (local.set $$250 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$442$i - (i32.and - (local.get $$250) - (i32.const 32) - ) - ) - (local.set $$tobool$i$443$i - (i32.eq - (local.get $$and$i$442$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$443$i) - (block - (local.set $$sub$ptr$rhs$cast695$i - (local.get $$s668$1$i) - ) - (local.set $$sub$ptr$sub696$i - (i32.sub - (local.get $$sub$ptr$lhs$cast694$i) - (local.get $$sub$ptr$rhs$cast695$i) - ) - ) - (drop - (call $___fwritex - (local.get $$s668$1$i) - (local.get $$sub$ptr$sub696$i) - (local.get $$f) - ) - ) - ) - ) - (local.set $$incdec$ptr698$i - (i32.add - (local.get $$d$5494$i) - (i32.const 4) - ) - ) - (local.set $$cmp665$i - (i32.gt_u - (local.get $$incdec$ptr698$i) - (local.get $$arraydecay208$add$ptr213$i) - ) - ) - (if - (local.get $$cmp665$i) - (block - (local.set $$incdec$ptr698$i$lcssa - (local.get $$incdec$ptr698$i) - ) - (br $while-out101) - ) - (local.set $$d$5494$i - (local.get $$incdec$ptr698$i) - ) - ) - (br $while-in102) - ) - ) - (local.set $$251 - (i32.eq - (local.get $$239) - (i32.const 0) - ) - ) - (block $do-once107 - (if - (i32.eqz - (local.get $$251) - ) - (block - (local.set $$252 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$448$i - (i32.and - (local.get $$252) - (i32.const 32) - ) - ) - (local.set $$tobool$i$449$i - (i32.eq - (local.get $$and$i$448$i) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool$i$449$i) - ) - (br $do-once107) - ) - (drop - (call $___fwritex - (i32.const 4143) - (i32.const 1) - (local.get $$f) - ) - ) - ) - ) - ) - (local.set $$cmp707$486$i - (i32.lt_u - (local.get $$incdec$ptr698$i$lcssa) - (local.get $$z$7$i$lcssa) - ) - ) - (local.set $$cmp710$487$i - (i32.gt_s - (local.get $$p$addr$3$i) - (i32.const 0) - ) - ) - (local.set $$253 - (i32.and - (local.get $$cmp710$487$i) - (local.get $$cmp707$486$i) - ) - ) - (if - (local.get $$253) - (block - (local.set $$d$6488$i - (local.get $$incdec$ptr698$i$lcssa) - ) - (local.set $$p$addr$4489$i - (local.get $$p$addr$3$i) - ) - (loop $while-in110 - (block $while-out109 - (local.set $$254 - (i32.load - (local.get $$d$6488$i) - ) - ) - (local.set $$255 - (call $_fmt_u - (local.get $$254) - (i32.const 0) - (local.get $$add$ptr671$i) - ) - ) - (local.set $$cmp722$483$i - (i32.gt_u - (local.get $$255) - (local.get $$buf$i) - ) - ) - (if - (local.get $$cmp722$483$i) - (block - (local.set $$s715$0484$i - (local.get $$255) - ) - (loop $while-in112 - (block $while-out111 - (local.set $$incdec$ptr725$i - (i32.add - (local.get $$s715$0484$i) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr725$i) - (i32.const 48) - ) - (local.set $$cmp722$i - (i32.gt_u - (local.get $$incdec$ptr725$i) - (local.get $$buf$i) - ) - ) - (if - (local.get $$cmp722$i) - (local.set $$s715$0484$i - (local.get $$incdec$ptr725$i) - ) - (block - (local.set $$s715$0$lcssa$i - (local.get $$incdec$ptr725$i) - ) - (br $while-out111) - ) - ) - (br $while-in112) - ) - ) - ) - (local.set $$s715$0$lcssa$i - (local.get $$255) - ) - ) - (local.set $$256 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$454$i - (i32.and - (local.get $$256) - (i32.const 32) - ) - ) - (local.set $$tobool$i$455$i - (i32.eq - (local.get $$and$i$454$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$455$i) - (block - (local.set $$cmp727$i - (i32.gt_s - (local.get $$p$addr$4489$i) - (i32.const 9) - ) - ) - (local.set $$cond732$i - (if (result i32) - (local.get $$cmp727$i) - (i32.const 9) - (local.get $$p$addr$4489$i) - ) - ) - (drop - (call $___fwritex - (local.get $$s715$0$lcssa$i) - (local.get $$cond732$i) - (local.get $$f) - ) - ) - ) - ) - (local.set $$incdec$ptr734$i - (i32.add - (local.get $$d$6488$i) - (i32.const 4) - ) - ) - (local.set $$sub735$i - (i32.add - (local.get $$p$addr$4489$i) - (i32.const -9) - ) - ) - (local.set $$cmp707$i - (i32.lt_u - (local.get $$incdec$ptr734$i) - (local.get $$z$7$i$lcssa) - ) - ) - (local.set $$cmp710$i - (i32.gt_s - (local.get $$p$addr$4489$i) - (i32.const 9) - ) - ) - (local.set $$257 - (i32.and - (local.get $$cmp710$i) - (local.get $$cmp707$i) - ) - ) - (if - (local.get $$257) - (block - (local.set $$d$6488$i - (local.get $$incdec$ptr734$i) - ) - (local.set $$p$addr$4489$i - (local.get $$sub735$i) - ) - ) - (block - (local.set $$p$addr$4$lcssa$i - (local.get $$sub735$i) - ) - (br $while-out109) - ) - ) - (br $while-in110) - ) - ) - ) - (local.set $$p$addr$4$lcssa$i - (local.get $$p$addr$3$i) - ) - ) - (local.set $$add737$i - (i32.add - (local.get $$p$addr$4$lcssa$i) - (i32.const 9) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 48) - (local.get $$add737$i) - (i32.const 9) - (i32.const 0) - ) - ) - (block - (local.set $$add$ptr742$i - (i32.add - (local.get $$a$9$ph$i) - (i32.const 4) - ) - ) - (local.set $$z$7$add$ptr742$i - (if (result i32) - (local.get $$cmp450$lcssa$i) - (local.get $$z$7$i$lcssa) - (local.get $$add$ptr742$i) - ) - ) - (local.set $$cmp748$499$i - (i32.gt_s - (local.get $$p$addr$3$i) - (i32.const -1) - ) - ) - (if - (local.get $$cmp748$499$i) - (block - (local.set $$tobool781$i - (i32.eq - (local.get $$and610$pre$phi$iZ2D) - (i32.const 0) - ) - ) - (local.set $$d$7500$i - (local.get $$a$9$ph$i) - ) - (local.set $$p$addr$5501$i - (local.get $$p$addr$3$i) - ) - (loop $while-in114 - (block $while-out113 - (local.set $$258 - (i32.load - (local.get $$d$7500$i) - ) - ) - (local.set $$259 - (call $_fmt_u - (local.get $$258) - (i32.const 0) - (local.get $$add$ptr671$i) - ) - ) - (local.set $$cmp760$i - (i32.eq - (local.get $$259) - (local.get $$add$ptr671$i) - ) - ) - (if - (local.get $$cmp760$i) - (block - (i32.store8 - (local.get $$incdec$ptr689$i) - (i32.const 48) - ) - (local.set $$s753$0$i - (local.get $$incdec$ptr689$i) - ) - ) - (local.set $$s753$0$i - (local.get $$259) - ) - ) - (local.set $$cmp765$i - (i32.eq - (local.get $$d$7500$i) - (local.get $$a$9$ph$i) - ) - ) - (block $do-once115 - (if - (local.get $$cmp765$i) - (block - (local.set $$incdec$ptr776$i - (i32.add - (local.get $$s753$0$i) - (i32.const 1) - ) - ) - (local.set $$260 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$460$i - (i32.and - (local.get $$260) - (i32.const 32) - ) - ) - (local.set $$tobool$i$461$i - (i32.eq - (local.get $$and$i$460$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$461$i) - (drop - (call $___fwritex - (local.get $$s753$0$i) - (i32.const 1) - (local.get $$f) - ) - ) - ) - (local.set $$cmp777$i - (i32.lt_s - (local.get $$p$addr$5501$i) - (i32.const 1) - ) - ) - (local.set $$or$cond401$i - (i32.and - (local.get $$tobool781$i) - (local.get $$cmp777$i) - ) - ) - (if - (local.get $$or$cond401$i) - (block - (local.set $$s753$2$i - (local.get $$incdec$ptr776$i) - ) - (br $do-once115) - ) - ) - (local.set $$261 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$466$i - (i32.and - (local.get $$261) - (i32.const 32) - ) - ) - (local.set $$tobool$i$467$i - (i32.eq - (local.get $$and$i$466$i) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool$i$467$i) - ) - (block - (local.set $$s753$2$i - (local.get $$incdec$ptr776$i) - ) - (br $do-once115) - ) - ) - (drop - (call $___fwritex - (i32.const 4143) - (i32.const 1) - (local.get $$f) - ) - ) - (local.set $$s753$2$i - (local.get $$incdec$ptr776$i) - ) - ) - (block - (local.set $$cmp770$495$i - (i32.gt_u - (local.get $$s753$0$i) - (local.get $$buf$i) - ) - ) - (if - (local.get $$cmp770$495$i) - (local.set $$s753$1496$i - (local.get $$s753$0$i) - ) - (block - (local.set $$s753$2$i - (local.get $$s753$0$i) - ) - (br $do-once115) - ) - ) - (loop $while-in118 - (block $while-out117 - (local.set $$incdec$ptr773$i - (i32.add - (local.get $$s753$1496$i) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr773$i) - (i32.const 48) - ) - (local.set $$cmp770$i - (i32.gt_u - (local.get $$incdec$ptr773$i) - (local.get $$buf$i) - ) - ) - (if - (local.get $$cmp770$i) - (local.set $$s753$1496$i - (local.get $$incdec$ptr773$i) - ) - (block - (local.set $$s753$2$i - (local.get $$incdec$ptr773$i) - ) - (br $while-out117) - ) - ) - (br $while-in118) - ) - ) - ) - ) - ) - (local.set $$sub$ptr$rhs$cast788$i - (local.get $$s753$2$i) - ) - (local.set $$sub$ptr$sub789$i - (i32.sub - (local.get $$sub$ptr$lhs$cast694$i) - (local.get $$sub$ptr$rhs$cast788$i) - ) - ) - (local.set $$262 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$472$i - (i32.and - (local.get $$262) - (i32.const 32) - ) - ) - (local.set $$tobool$i$473$i - (i32.eq - (local.get $$and$i$472$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$473$i) - (block - (local.set $$cmp790$i - (i32.gt_s - (local.get $$p$addr$5501$i) - (local.get $$sub$ptr$sub789$i) - ) - ) - (local.set $$cond800$i - (if (result i32) - (local.get $$cmp790$i) - (local.get $$sub$ptr$sub789$i) - (local.get $$p$addr$5501$i) - ) - ) - (drop - (call $___fwritex - (local.get $$s753$2$i) - (local.get $$cond800$i) - (local.get $$f) - ) - ) - ) - ) - (local.set $$sub806$i - (i32.sub - (local.get $$p$addr$5501$i) - (local.get $$sub$ptr$sub789$i) - ) - ) - (local.set $$incdec$ptr808$i - (i32.add - (local.get $$d$7500$i) - (i32.const 4) - ) - ) - (local.set $$cmp745$i - (i32.lt_u - (local.get $$incdec$ptr808$i) - (local.get $$z$7$add$ptr742$i) - ) - ) - (local.set $$cmp748$i - (i32.gt_s - (local.get $$sub806$i) - (i32.const -1) - ) - ) - (local.set $$263 - (i32.and - (local.get $$cmp745$i) - (local.get $$cmp748$i) - ) - ) - (if - (local.get $$263) - (block - (local.set $$d$7500$i - (local.get $$incdec$ptr808$i) - ) - (local.set $$p$addr$5501$i - (local.get $$sub806$i) - ) - ) - (block - (local.set $$p$addr$5$lcssa$i - (local.get $$sub806$i) - ) - (br $while-out113) - ) - ) - (br $while-in114) - ) - ) - ) - (local.set $$p$addr$5$lcssa$i - (local.get $$p$addr$3$i) - ) - ) - (local.set $$add810$i - (i32.add - (local.get $$p$addr$5$lcssa$i) - (i32.const 18) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 48) - (local.get $$add810$i) - (i32.const 18) - (i32.const 0) - ) - (local.set $$264 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$i - (i32.and - (local.get $$264) - (i32.const 32) - ) - ) - (local.set $$tobool$i$i - (i32.eq - (local.get $$and$i$i) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool$i$i) - ) - (br $do-once99) - ) - (local.set $$sub$ptr$rhs$cast812$i - (local.get $$estr$2$i) - ) - (local.set $$sub$ptr$sub813$i - (i32.sub - (local.get $$sub$ptr$lhs$cast160$i) - (local.get $$sub$ptr$rhs$cast812$i) - ) - ) - (drop - (call $___fwritex - (local.get $$estr$2$i) - (local.get $$sub$ptr$sub813$i) - (local.get $$f) - ) - ) - ) - ) - ) - (local.set $$xor816$i - (i32.xor - (local.get $$fl$1$and219) - (i32.const 8192) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$add653$i) - (local.get $$xor816$i) - ) - (local.set $$cmp818$i - (i32.lt_s - (local.get $$add653$i) - (local.get $$w$1) - ) - ) - (local.set $$w$add653$i - (if (result i32) - (local.get $$cmp818$i) - (local.get $$w$1) - (local.get $$add653$i) - ) - ) - (local.set $$retval$0$i - (local.get $$w$add653$i) - ) - ) - (block - (local.set $$and36$i - (i32.and - (local.get $$t$0) - (i32.const 32) - ) - ) - (local.set $$tobool37$i - (i32.ne - (local.get $$and36$i) - (i32.const 0) - ) - ) - (local.set $$cond$i - (if (result i32) - (local.get $$tobool37$i) - (i32.const 4127) - (i32.const 4131) - ) - ) - (local.set $$cmp38$i - (i32.or - (f64.ne - (local.get $$y$addr$0$i) - (local.get $$y$addr$0$i) - ) - (f64.ne - (f64.const 0) - (f64.const 0) - ) - ) - ) - (local.set $$cond43$i - (if (result i32) - (local.get $$tobool37$i) - (i32.const 4135) - (i32.const 4139) - ) - ) - (local.set $$pl$1$i - (if (result i32) - (local.get $$cmp38$i) - (i32.const 0) - (local.get $$pl$0$i) - ) - ) - (local.set $$s35$0$i - (if (result i32) - (local.get $$cmp38$i) - (local.get $$cond43$i) - (local.get $$cond$i) - ) - ) - (local.set $$add$i$239 - (i32.add - (local.get $$pl$1$i) - (i32.const 3) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$add$i$239) - (local.get $$and219) - ) - (local.set $$193 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$406$i - (i32.and - (local.get $$193) - (i32.const 32) - ) - ) - (local.set $$tobool$i$407$i - (i32.eq - (local.get $$and$i$406$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$407$i) - (block - (drop - (call $___fwritex - (local.get $$prefix$0$i) - (local.get $$pl$1$i) - (local.get $$f) - ) - ) - (local.set $$$pre$i - (i32.load - (local.get $$f) - ) - ) - (local.set $$194 - (local.get $$$pre$i) - ) - ) - (local.set $$194 - (local.get $$193) - ) - ) - (local.set $$and$i$412$i - (i32.and - (local.get $$194) - (i32.const 32) - ) - ) - (local.set $$tobool$i$413$i - (i32.eq - (local.get $$and$i$412$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$413$i) - (drop - (call $___fwritex - (local.get $$s35$0$i) - (i32.const 3) - (local.get $$f) - ) - ) - ) - (local.set $$xor$i - (i32.xor - (local.get $$fl$1$and219) - (i32.const 8192) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$add$i$239) - (local.get $$xor$i) - ) - (local.set $$cmp48$i - (i32.lt_s - (local.get $$add$i$239) - (local.get $$w$1) - ) - ) - (local.set $$cond53$i - (if (result i32) - (local.get $$cmp48$i) - (local.get $$w$1) - (local.get $$add$i$239) - ) - ) - (local.set $$retval$0$i - (local.get $$cond53$i) - ) - ) - ) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$retval$0$i) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch17) - ) - ) - (block - (local.set $$a$2 - (local.get $$incdec$ptr169275) - ) - (local.set $$fl$6 - (local.get $$fl$1$and219) - ) - (local.set $$p$5 - (local.get $$p$0) - ) - (local.set $$pl$2 - (i32.const 0) - ) - (local.set $$prefix$2 - (i32.const 4091) - ) - (local.set $$z$2 - (local.get $$add$ptr205) - ) - ) - ) - ) - (block $label$break$L308 - (if - (i32.eq - (local.get $label) - (i32.const 64) - ) - (block - (local.set $label - (i32.const 0) - ) - (local.set $$90 - (local.get $$arg) - ) - (local.set $$91 - (local.get $$90) - ) - (local.set $$92 - (i32.load - (local.get $$91) - ) - ) - (local.set $$93 - (i32.add - (local.get $$90) - (i32.const 4) - ) - ) - (local.set $$94 - (local.get $$93) - ) - (local.set $$95 - (i32.load - (local.get $$94) - ) - ) - (local.set $$and249 - (i32.and - (local.get $$t$1) - (i32.const 32) - ) - ) - (local.set $$96 - (i32.eq - (local.get $$92) - (i32.const 0) - ) - ) - (local.set $$97 - (i32.eq - (local.get $$95) - (i32.const 0) - ) - ) - (local.set $$98 - (i32.and - (local.get $$96) - (local.get $$97) - ) - ) - (if - (local.get $$98) - (block - (local.set $$a$0 - (local.get $$add$ptr205) - ) - (local.set $$fl$4 - (local.get $$fl$3) - ) - (local.set $$p$2 - (local.get $$p$1) - ) - (local.set $$pl$1 - (i32.const 0) - ) - (local.set $$prefix$1 - (i32.const 4091) - ) - (local.set $label - (i32.const 77) - ) - ) - (block - (local.set $$101 - (local.get $$95) - ) - (local.set $$99 - (local.get $$92) - ) - (local.set $$s$addr$06$i - (local.get $$add$ptr205) - ) - (loop $while-in123 - (block $while-out122 - (local.set $$idxprom$i - (i32.and - (local.get $$99) - (i32.const 15) - ) - ) - (local.set $$arrayidx$i - (i32.add - (i32.const 4075) - (local.get $$idxprom$i) - ) - ) - (local.set $$100 - (i32.load8_s - (local.get $$arrayidx$i) - ) - ) - (local.set $$conv$4$i$211 - (i32.and - (local.get $$100) - (i32.const 255) - ) - ) - (local.set $$or$i - (i32.or - (local.get $$conv$4$i$211) - (local.get $$and249) - ) - ) - (local.set $$conv1$i - (i32.and - (local.get $$or$i) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr$i$212 - (i32.add - (local.get $$s$addr$06$i) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr$i$212) - (local.get $$conv1$i) - ) - (local.set $$102 - (call $_bitshift64Lshr - (local.get $$99) - (local.get $$101) - (i32.const 4) - ) - ) - (local.set $$103 - (global.get $tempRet0) - ) - (local.set $$104 - (i32.eq - (local.get $$102) - (i32.const 0) - ) - ) - (local.set $$105 - (i32.eq - (local.get $$103) - (i32.const 0) - ) - ) - (local.set $$106 - (i32.and - (local.get $$104) - (local.get $$105) - ) - ) - (if - (local.get $$106) - (block - (local.set $$incdec$ptr$i$212$lcssa - (local.get $$incdec$ptr$i$212) - ) - (br $while-out122) - ) - (block - (local.set $$101 - (local.get $$103) - ) - (local.set $$99 - (local.get $$102) - ) - (local.set $$s$addr$06$i - (local.get $$incdec$ptr$i$212) - ) - ) - ) - (br $while-in123) - ) - ) - (local.set $$107 - (local.get $$arg) - ) - (local.set $$108 - (local.get $$107) - ) - (local.set $$109 - (i32.load - (local.get $$108) - ) - ) - (local.set $$110 - (i32.add - (local.get $$107) - (i32.const 4) - ) - ) - (local.set $$111 - (local.get $$110) - ) - (local.set $$112 - (i32.load - (local.get $$111) - ) - ) - (local.set $$113 - (i32.eq - (local.get $$109) - (i32.const 0) - ) - ) - (local.set $$114 - (i32.eq - (local.get $$112) - (i32.const 0) - ) - ) - (local.set $$115 - (i32.and - (local.get $$113) - (local.get $$114) - ) - ) - (local.set $$and254 - (i32.and - (local.get $$fl$3) - (i32.const 8) - ) - ) - (local.set $$tobool255 - (i32.eq - (local.get $$and254) - (i32.const 0) - ) - ) - (local.set $$or$cond193 - (i32.or - (local.get $$tobool255) - (local.get $$115) - ) - ) - (if - (local.get $$or$cond193) - (block - (local.set $$a$0 - (local.get $$incdec$ptr$i$212$lcssa) - ) - (local.set $$fl$4 - (local.get $$fl$3) - ) - (local.set $$p$2 - (local.get $$p$1) - ) - (local.set $$pl$1 - (i32.const 0) - ) - (local.set $$prefix$1 - (i32.const 4091) - ) - (local.set $label - (i32.const 77) - ) - ) - (block - (local.set $$shr - (i32.shr_s - (local.get $$t$1) - (i32.const 4) - ) - ) - (local.set $$add$ptr257 - (i32.add - (i32.const 4091) - (local.get $$shr) - ) - ) - (local.set $$a$0 - (local.get $$incdec$ptr$i$212$lcssa) - ) - (local.set $$fl$4 - (local.get $$fl$3) - ) - (local.set $$p$2 - (local.get $$p$1) - ) - (local.set $$pl$1 - (i32.const 2) - ) - (local.set $$prefix$1 - (local.get $$add$ptr257) - ) - (local.set $label - (i32.const 77) - ) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 76) - ) - (block - (local.set $label - (i32.const 0) - ) - (local.set $$150 - (call $_fmt_u - (local.get $$148) - (local.get $$149) - (local.get $$add$ptr205) - ) - ) - (local.set $$a$0 - (local.get $$150) - ) - (local.set $$fl$4 - (local.get $$fl$1$and219) - ) - (local.set $$p$2 - (local.get $$p$0) - ) - (local.set $$pl$1 - (local.get $$pl$0) - ) - (local.set $$prefix$1 - (local.get $$prefix$0) - ) - (local.set $label - (i32.const 77) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 82) - ) - (block - (local.set $label - (i32.const 0) - ) - (local.set $$call356 - (call $_memchr - (local.get $$a$1) - (i32.const 0) - (local.get $$p$0) - ) - ) - (local.set $$tobool357 - (i32.eq - (local.get $$call356) - (i32.const 0) - ) - ) - (local.set $$sub$ptr$lhs$cast361 - (local.get $$call356) - ) - (local.set $$sub$ptr$rhs$cast362 - (local.get $$a$1) - ) - (local.set $$sub$ptr$sub363 - (i32.sub - (local.get $$sub$ptr$lhs$cast361) - (local.get $$sub$ptr$rhs$cast362) - ) - ) - (local.set $$add$ptr359 - (i32.add - (local.get $$a$1) - (local.get $$p$0) - ) - ) - (local.set $$z$1 - (if (result i32) - (local.get $$tobool357) - (local.get $$add$ptr359) - (local.get $$call356) - ) - ) - (local.set $$p$3 - (if (result i32) - (local.get $$tobool357) - (local.get $$p$0) - (local.get $$sub$ptr$sub363) - ) - ) - (local.set $$a$2 - (local.get $$a$1) - ) - (local.set $$fl$6 - (local.get $$and219) - ) - (local.set $$p$5 - (local.get $$p$3) - ) - (local.set $$pl$2 - (i32.const 0) - ) - (local.set $$prefix$2 - (i32.const 4091) - ) - (local.set $$z$2 - (local.get $$z$1) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 86) - ) - (block - (local.set $label - (i32.const 0) - ) - (local.set $$176 - (i32.load - (local.get $$arg) - ) - ) - (local.set $$i$0316 - (i32.const 0) - ) - (local.set $$l$1315 - (i32.const 0) - ) - (local.set $$ws$0317 - (local.get $$176) - ) - (loop $while-in125 - (block $while-out124 - (local.set $$177 - (i32.load - (local.get $$ws$0317) - ) - ) - (local.set $$tobool380 - (i32.eq - (local.get $$177) - (i32.const 0) - ) - ) - (if - (local.get $$tobool380) - (block - (local.set $$i$0$lcssa - (local.get $$i$0316) - ) - (local.set $$l$2 - (local.get $$l$1315) - ) - (br $while-out124) - ) - ) - (local.set $$call384 - (call $_wctomb - (local.get $$mb) - (local.get $$177) - ) - ) - (local.set $$cmp385 - (i32.lt_s - (local.get $$call384) - (i32.const 0) - ) - ) - (local.set $$sub389 - (i32.sub - (local.get $$p$4365) - (local.get $$i$0316) - ) - ) - (local.set $$cmp390 - (i32.gt_u - (local.get $$call384) - (local.get $$sub389) - ) - ) - (local.set $$or$cond195 - (i32.or - (local.get $$cmp385) - (local.get $$cmp390) - ) - ) - (if - (local.get $$or$cond195) - (block - (local.set $$i$0$lcssa - (local.get $$i$0316) - ) - (local.set $$l$2 - (local.get $$call384) - ) - (br $while-out124) - ) - ) - (local.set $$incdec$ptr383 - (i32.add - (local.get $$ws$0317) - (i32.const 4) - ) - ) - (local.set $$add395 - (i32.add - (local.get $$call384) - (local.get $$i$0316) - ) - ) - (local.set $$cmp377 - (i32.gt_u - (local.get $$p$4365) - (local.get $$add395) - ) - ) - (if - (local.get $$cmp377) - (block - (local.set $$i$0316 - (local.get $$add395) - ) - (local.set $$l$1315 - (local.get $$call384) - ) - (local.set $$ws$0317 - (local.get $$incdec$ptr383) - ) - ) - (block - (local.set $$i$0$lcssa - (local.get $$add395) - ) - (local.set $$l$2 - (local.get $$call384) - ) - (br $while-out124) - ) - ) - (br $while-in125) - ) - ) - (local.set $$cmp397 - (i32.lt_s - (local.get $$l$2) - (i32.const 0) - ) - ) - (if - (local.get $$cmp397) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$i$0$lcssa) - (local.get $$fl$1$and219) - ) - (local.set $$cmp404$324 - (i32.eq - (local.get $$i$0$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$cmp404$324) - (block - (local.set $$i$0$lcssa368 - (i32.const 0) - ) - (local.set $label - (i32.const 98) - ) - ) - (block - (local.set $$178 - (i32.load - (local.get $$arg) - ) - ) - (local.set $$i$1325 - (i32.const 0) - ) - (local.set $$ws$1326 - (local.get $$178) - ) - (loop $while-in127 - (block $while-out126 - (local.set $$179 - (i32.load - (local.get $$ws$1326) - ) - ) - (local.set $$tobool407 - (i32.eq - (local.get $$179) - (i32.const 0) - ) - ) - (if - (local.get $$tobool407) - (block - (local.set $$i$0$lcssa368 - (local.get $$i$0$lcssa) - ) - (local.set $label - (i32.const 98) - ) - (br $label$break$L308) - ) - ) - (local.set $$incdec$ptr410 - (i32.add - (local.get $$ws$1326) - (i32.const 4) - ) - ) - (local.set $$call411 - (call $_wctomb - (local.get $$mb) - (local.get $$179) - ) - ) - (local.set $$add412 - (i32.add - (local.get $$call411) - (local.get $$i$1325) - ) - ) - (local.set $$cmp413 - (i32.gt_s - (local.get $$add412) - (local.get $$i$0$lcssa) - ) - ) - (if - (local.get $$cmp413) - (block - (local.set $$i$0$lcssa368 - (local.get $$i$0$lcssa) - ) - (local.set $label - (i32.const 98) - ) - (br $label$break$L308) - ) - ) - (local.set $$180 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$231 - (i32.and - (local.get $$180) - (i32.const 32) - ) - ) - (local.set $$tobool$i$232 - (i32.eq - (local.get $$and$i$231) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$232) - (drop - (call $___fwritex - (local.get $$mb) - (local.get $$call411) - (local.get $$f) - ) - ) - ) - (local.set $$cmp404 - (i32.lt_u - (local.get $$add412) - (local.get $$i$0$lcssa) - ) - ) - (if - (local.get $$cmp404) - (block - (local.set $$i$1325 - (local.get $$add412) - ) - (local.set $$ws$1326 - (local.get $$incdec$ptr410) - ) - ) - (block - (local.set $$i$0$lcssa368 - (local.get $$i$0$lcssa) - ) - (local.set $label - (i32.const 98) - ) - (br $while-out126) - ) - ) - (br $while-in127) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 98) - ) - (block - (local.set $label - (i32.const 0) - ) - (local.set $$xor - (i32.xor - (local.get $$fl$1$and219) - (i32.const 8192) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$i$0$lcssa368) - (local.get $$xor) - ) - (local.set $$cmp421 - (i32.gt_s - (local.get $$w$1) - (local.get $$i$0$lcssa368) - ) - ) - (local.set $$cond426 - (if (result i32) - (local.get $$cmp421) - (local.get $$w$1) - (local.get $$i$0$lcssa368) - ) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$cond426) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 77) - ) - (block - (local.set $label - (i32.const 0) - ) - (local.set $$cmp306 - (i32.gt_s - (local.get $$p$2) - (i32.const -1) - ) - ) - (local.set $$and309 - (i32.and - (local.get $$fl$4) - (i32.const -65537) - ) - ) - (local.set $$and309$fl$4 - (if (result i32) - (local.get $$cmp306) - (local.get $$and309) - (local.get $$fl$4) - ) - ) - (local.set $$151 - (local.get $$arg) - ) - (local.set $$152 - (local.get $$151) - ) - (local.set $$153 - (i32.load - (local.get $$152) - ) - ) - (local.set $$154 - (i32.add - (local.get $$151) - (i32.const 4) - ) - ) - (local.set $$155 - (local.get $$154) - ) - (local.set $$156 - (i32.load - (local.get $$155) - ) - ) - (local.set $$157 - (i32.ne - (local.get $$153) - (i32.const 0) - ) - ) - (local.set $$158 - (i32.ne - (local.get $$156) - (i32.const 0) - ) - ) - (local.set $$159 - (i32.or - (local.get $$157) - (local.get $$158) - ) - ) - (local.set $$tobool314 - (i32.ne - (local.get $$p$2) - (i32.const 0) - ) - ) - (local.set $$or$cond - (i32.or - (local.get $$tobool314) - (local.get $$159) - ) - ) - (if - (local.get $$or$cond) - (block - (local.set $$sub$ptr$rhs$cast318 - (local.get $$a$0) - ) - (local.set $$sub$ptr$sub319 - (i32.sub - (local.get $$sub$ptr$lhs$cast317) - (local.get $$sub$ptr$rhs$cast318) - ) - ) - (local.set $$160 - (i32.and - (local.get $$159) - (i32.const 1) - ) - ) - (local.set $$lnot$ext - (i32.xor - (local.get $$160) - (i32.const 1) - ) - ) - (local.set $$add322 - (i32.add - (local.get $$lnot$ext) - (local.get $$sub$ptr$sub319) - ) - ) - (local.set $$cmp323 - (i32.gt_s - (local.get $$p$2) - (local.get $$add322) - ) - ) - (local.set $$p$2$add322 - (if (result i32) - (local.get $$cmp323) - (local.get $$p$2) - (local.get $$add322) - ) - ) - (local.set $$a$2 - (local.get $$a$0) - ) - (local.set $$fl$6 - (local.get $$and309$fl$4) - ) - (local.set $$p$5 - (local.get $$p$2$add322) - ) - (local.set $$pl$2 - (local.get $$pl$1) - ) - (local.set $$prefix$2 - (local.get $$prefix$1) - ) - (local.set $$z$2 - (local.get $$add$ptr205) - ) - ) - (block - (local.set $$a$2 - (local.get $$add$ptr205) - ) - (local.set $$fl$6 - (local.get $$and309$fl$4) - ) - (local.set $$p$5 - (i32.const 0) - ) - (local.set $$pl$2 - (local.get $$pl$1) - ) - (local.set $$prefix$2 - (local.get $$prefix$1) - ) - (local.set $$z$2 - (local.get $$add$ptr205) - ) - ) - ) - ) - ) - (local.set $$sub$ptr$lhs$cast431 - (local.get $$z$2) - ) - (local.set $$sub$ptr$rhs$cast432 - (local.get $$a$2) - ) - (local.set $$sub$ptr$sub433 - (i32.sub - (local.get $$sub$ptr$lhs$cast431) - (local.get $$sub$ptr$rhs$cast432) - ) - ) - (local.set $$cmp434 - (i32.lt_s - (local.get $$p$5) - (local.get $$sub$ptr$sub433) - ) - ) - (local.set $$sub$ptr$sub433$p$5 - (if (result i32) - (local.get $$cmp434) - (local.get $$sub$ptr$sub433) - (local.get $$p$5) - ) - ) - (local.set $$add441 - (i32.add - (local.get $$pl$2) - (local.get $$sub$ptr$sub433$p$5) - ) - ) - (local.set $$cmp442 - (i32.lt_s - (local.get $$w$1) - (local.get $$add441) - ) - ) - (local.set $$w$2 - (if (result i32) - (local.get $$cmp442) - (local.get $$add441) - (local.get $$w$1) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$2) - (local.get $$add441) - (local.get $$fl$6) - ) - (local.set $$265 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$244 - (i32.and - (local.get $$265) - (i32.const 32) - ) - ) - (local.set $$tobool$i$245 - (i32.eq - (local.get $$and$i$244) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$245) - (drop - (call $___fwritex - (local.get $$prefix$2) - (local.get $$pl$2) - (local.get $$f) - ) - ) - ) - (local.set $$xor449 - (i32.xor - (local.get $$fl$6) - (i32.const 65536) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 48) - (local.get $$w$2) - (local.get $$add441) - (local.get $$xor449) - ) - (call $_pad - (local.get $$f) - (i32.const 48) - (local.get $$sub$ptr$sub433$p$5) - (local.get $$sub$ptr$sub433) - (i32.const 0) - ) - (local.set $$266 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$216 - (i32.and - (local.get $$266) - (i32.const 32) - ) - ) - (local.set $$tobool$i$217 - (i32.eq - (local.get $$and$i$216) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$217) - (drop - (call $___fwritex - (local.get $$a$2) - (local.get $$sub$ptr$sub433) - (local.get $$f) - ) - ) - ) - (local.set $$xor457 - (i32.xor - (local.get $$fl$6) - (i32.const 8192) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$2) - (local.get $$add441) - (local.get $$xor457) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$w$2) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - ) - ) - (block $label$break$L343 - (if - (i32.eq - (local.get $label) - (i32.const 242) - ) - (block - (local.set $$tobool459 - (i32.eq - (local.get $$f) - (i32.const 0) - ) - ) - (if - (local.get $$tobool459) - (block - (local.set $$tobool462 - (i32.eq - (local.get $$l10n$0$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$tobool462) - (local.set $$retval$0 - (i32.const 0) - ) - (block - (local.set $$i$2299 - (i32.const 1) - ) - (loop $while-in130 - (block $while-out129 - (local.set $$arrayidx469 - (i32.add - (local.get $$nl_type) - (i32.shl - (local.get $$i$2299) - (i32.const 2) - ) - ) - ) - (local.set $$267 - (i32.load - (local.get $$arrayidx469) - ) - ) - (local.set $$tobool470 - (i32.eq - (local.get $$267) - (i32.const 0) - ) - ) - (if - (local.get $$tobool470) - (block - (local.set $$i$2299$lcssa - (local.get $$i$2299) - ) - (br $while-out129) - ) - ) - (local.set $$add$ptr473 - (i32.add - (local.get $$nl_arg) - (i32.shl - (local.get $$i$2299) - (i32.const 3) - ) - ) - ) - (call $_pop_arg_336 - (local.get $$add$ptr473) - (local.get $$267) - (local.get $$ap) - ) - (local.set $$inc - (i32.add - (local.get $$i$2299) - (i32.const 1) - ) - ) - (local.set $$cmp466 - (i32.lt_s - (local.get $$inc) - (i32.const 10) - ) - ) - (if - (local.get $$cmp466) - (local.set $$i$2299 - (local.get $$inc) - ) - (block - (local.set $$retval$0 - (i32.const 1) - ) - (br $label$break$L343) - ) - ) - (br $while-in130) - ) - ) - (local.set $$cmp478$295 - (i32.lt_s - (local.get $$i$2299$lcssa) - (i32.const 10) - ) - ) - (if - (local.get $$cmp478$295) - (block - (local.set $$i$3296 - (local.get $$i$2299$lcssa) - ) - (loop $while-in132 - (block $while-out131 - (local.set $$arrayidx481 - (i32.add - (local.get $$nl_type) - (i32.shl - (local.get $$i$3296) - (i32.const 2) - ) - ) - ) - (local.set $$268 - (i32.load - (local.get $$arrayidx481) - ) - ) - (local.set $$lnot483 - (i32.eq - (local.get $$268) - (i32.const 0) - ) - ) - (local.set $$inc488 - (i32.add - (local.get $$i$3296) - (i32.const 1) - ) - ) - (if - (i32.eqz - (local.get $$lnot483) - ) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L343) - ) - ) - (local.set $$cmp478 - (i32.lt_s - (local.get $$inc488) - (i32.const 10) - ) - ) - (if - (local.get $$cmp478) - (local.set $$i$3296 - (local.get $$inc488) - ) - (block - (local.set $$retval$0 - (i32.const 1) - ) - (br $while-out131) - ) - ) - (br $while-in132) - ) - ) - ) - (local.set $$retval$0 - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $$retval$0 - (local.get $$cnt$1$lcssa) - ) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_pop_arg_336 (; 50 ;) (param $$arg i32) (param $$type i32) (param $$ap i32) - (local $$0 i32) - (local $$1 i32) - (local $$10 i32) - (local $$100 i32) - (local $$101 i32) - (local $$102 i32) - (local $$103 f64) - (local $$104 i32) - (local $$105 i32) - (local $$106 i32) - (local $$107 i32) - (local $$108 i32) - (local $$109 i32) - (local $$11 i32) - (local $$110 f64) - (local $$12 i32) - (local $$13 i32) - (local $$14 i32) - (local $$15 i32) - (local $$16 i32) - (local $$17 i32) - (local $$18 i32) - (local $$19 i32) - (local $$2 i32) - (local $$20 i32) - (local $$21 i32) - (local $$22 i32) - (local $$23 i32) - (local $$24 i32) - (local $$25 i32) - (local $$26 i32) - (local $$27 i32) - (local $$28 i32) - (local $$29 i32) - (local $$3 i32) - (local $$30 i32) - (local $$31 i32) - (local $$32 i32) - (local $$33 i32) - (local $$34 i32) - (local $$35 i32) - (local $$36 i32) - (local $$37 i32) - (local $$38 i32) - (local $$39 i32) - (local $$4 i32) - (local $$40 i32) - (local $$41 i32) - (local $$42 i32) - (local $$43 i32) - (local $$44 i32) - (local $$45 i32) - (local $$46 i32) - (local $$47 i32) - (local $$48 i32) - (local $$49 i32) - (local $$5 i32) - (local $$50 i32) - (local $$51 i32) - (local $$52 i32) - (local $$53 i32) - (local $$54 i32) - (local $$55 i32) - (local $$56 i32) - (local $$57 i32) - (local $$58 i32) - (local $$59 i32) - (local $$6 i32) - (local $$60 i32) - (local $$61 i32) - (local $$62 i32) - (local $$63 i32) - (local $$64 i32) - (local $$65 i32) - (local $$66 i32) - (local $$67 i32) - (local $$68 i32) - (local $$69 i32) - (local $$7 i32) - (local $$70 i32) - (local $$71 i32) - (local $$72 i32) - (local $$73 i32) - (local $$74 i32) - (local $$75 i32) - (local $$76 i32) - (local $$77 i32) - (local $$78 i32) - (local $$79 i32) - (local $$8 i32) - (local $$80 i32) - (local $$81 i32) - (local $$82 i32) - (local $$83 i32) - (local $$84 i32) - (local $$85 i32) - (local $$86 i32) - (local $$87 i32) - (local $$88 i32) - (local $$89 i32) - (local $$9 i32) - (local $$90 i32) - (local $$91 i32) - (local $$92 i32) - (local $$93 i32) - (local $$94 i32) - (local $$95 i32) - (local $$96 i32) - (local $$97 i32) - (local $$98 i32) - (local $$99 i32) - (local $$arglist_current i32) - (local $$arglist_current11 i32) - (local $$arglist_current14 i32) - (local $$arglist_current17 i32) - (local $$arglist_current2 i32) - (local $$arglist_current20 i32) - (local $$arglist_current23 i32) - (local $$arglist_current26 i32) - (local $$arglist_current5 i32) - (local $$arglist_current8 i32) - (local $$arglist_next i32) - (local $$arglist_next12 i32) - (local $$arglist_next15 i32) - (local $$arglist_next18 i32) - (local $$arglist_next21 i32) - (local $$arglist_next24 i32) - (local $$arglist_next27 i32) - (local $$arglist_next3 i32) - (local $$arglist_next6 i32) - (local $$arglist_next9 i32) - (local $$cmp i32) - (local $$conv12 i32) - (local $$conv17$mask i32) - (local $$conv22 i32) - (local $$conv27$mask i32) - (local $$expanded i32) - (local $$expanded28 i32) - (local $$expanded30 i32) - (local $$expanded31 i32) - (local $$expanded32 i32) - (local $$expanded34 i32) - (local $$expanded35 i32) - (local $$expanded37 i32) - (local $$expanded38 i32) - (local $$expanded39 i32) - (local $$expanded41 i32) - (local $$expanded42 i32) - (local $$expanded44 i32) - (local $$expanded45 i32) - (local $$expanded46 i32) - (local $$expanded48 i32) - (local $$expanded49 i32) - (local $$expanded51 i32) - (local $$expanded52 i32) - (local $$expanded53 i32) - (local $$expanded55 i32) - (local $$expanded56 i32) - (local $$expanded58 i32) - (local $$expanded59 i32) - (local $$expanded60 i32) - (local $$expanded62 i32) - (local $$expanded63 i32) - (local $$expanded65 i32) - (local $$expanded66 i32) - (local $$expanded67 i32) - (local $$expanded69 i32) - (local $$expanded70 i32) - (local $$expanded72 i32) - (local $$expanded73 i32) - (local $$expanded74 i32) - (local $$expanded76 i32) - (local $$expanded77 i32) - (local $$expanded79 i32) - (local $$expanded80 i32) - (local $$expanded81 i32) - (local $$expanded83 i32) - (local $$expanded84 i32) - (local $$expanded86 i32) - (local $$expanded87 i32) - (local $$expanded88 i32) - (local $$expanded90 i32) - (local $$expanded91 i32) - (local $$expanded93 i32) - (local $$expanded94 i32) - (local $$expanded95 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$cmp - (i32.gt_u - (local.get $$type) - (i32.const 20) - ) - ) - (block $label$break$L1 - (if - (i32.eqz - (local.get $$cmp) - ) - (block $do-once - (block $switch - (block $switch-default - (block $switch-case9 - (block $switch-case8 - (block $switch-case7 - (block $switch-case6 - (block $switch-case5 - (block $switch-case4 - (block $switch-case3 - (block $switch-case2 - (block $switch-case1 - (block $switch-case - (br_table $switch-case $switch-case1 $switch-case2 $switch-case3 $switch-case4 $switch-case5 $switch-case6 $switch-case7 $switch-case8 $switch-case9 $switch-default - (i32.sub - (local.get $$type) - (i32.const 9) - ) - ) - ) - (block - (local.set $$arglist_current - (i32.load - (local.get $$ap) - ) - ) - (local.set $$0 - (local.get $$arglist_current) - ) - (local.set $$1 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded28 - (local.get $$1) - ) - (local.set $$expanded - (i32.sub - (local.get $$expanded28) - (i32.const 1) - ) - ) - (local.set $$2 - (i32.add - (local.get $$0) - (local.get $$expanded) - ) - ) - (local.set $$3 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded32 - (local.get $$3) - ) - (local.set $$expanded31 - (i32.sub - (local.get $$expanded32) - (i32.const 1) - ) - ) - (local.set $$expanded30 - (i32.xor - (local.get $$expanded31) - (i32.const -1) - ) - ) - (local.set $$4 - (i32.and - (local.get $$2) - (local.get $$expanded30) - ) - ) - (local.set $$5 - (local.get $$4) - ) - (local.set $$6 - (i32.load - (local.get $$5) - ) - ) - (local.set $$arglist_next - (i32.add - (local.get $$5) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next) - ) - (i32.store - (local.get $$arg) - (local.get $$6) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current2 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$7 - (local.get $$arglist_current2) - ) - (local.set $$8 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded35 - (local.get $$8) - ) - (local.set $$expanded34 - (i32.sub - (local.get $$expanded35) - (i32.const 1) - ) - ) - (local.set $$9 - (i32.add - (local.get $$7) - (local.get $$expanded34) - ) - ) - (local.set $$10 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded39 - (local.get $$10) - ) - (local.set $$expanded38 - (i32.sub - (local.get $$expanded39) - (i32.const 1) - ) - ) - (local.set $$expanded37 - (i32.xor - (local.get $$expanded38) - (i32.const -1) - ) - ) - (local.set $$11 - (i32.and - (local.get $$9) - (local.get $$expanded37) - ) - ) - (local.set $$12 - (local.get $$11) - ) - (local.set $$13 - (i32.load - (local.get $$12) - ) - ) - (local.set $$arglist_next3 - (i32.add - (local.get $$12) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next3) - ) - (local.set $$14 - (i32.lt_s - (local.get $$13) - (i32.const 0) - ) - ) - (local.set $$15 - (i32.shr_s - (i32.shl - (local.get $$14) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$16 - (local.get $$arg) - ) - (local.set $$17 - (local.get $$16) - ) - (i32.store - (local.get $$17) - (local.get $$13) - ) - (local.set $$18 - (i32.add - (local.get $$16) - (i32.const 4) - ) - ) - (local.set $$19 - (local.get $$18) - ) - (i32.store - (local.get $$19) - (local.get $$15) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current5 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$20 - (local.get $$arglist_current5) - ) - (local.set $$21 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded42 - (local.get $$21) - ) - (local.set $$expanded41 - (i32.sub - (local.get $$expanded42) - (i32.const 1) - ) - ) - (local.set $$22 - (i32.add - (local.get $$20) - (local.get $$expanded41) - ) - ) - (local.set $$23 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded46 - (local.get $$23) - ) - (local.set $$expanded45 - (i32.sub - (local.get $$expanded46) - (i32.const 1) - ) - ) - (local.set $$expanded44 - (i32.xor - (local.get $$expanded45) - (i32.const -1) - ) - ) - (local.set $$24 - (i32.and - (local.get $$22) - (local.get $$expanded44) - ) - ) - (local.set $$25 - (local.get $$24) - ) - (local.set $$26 - (i32.load - (local.get $$25) - ) - ) - (local.set $$arglist_next6 - (i32.add - (local.get $$25) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next6) - ) - (local.set $$27 - (local.get $$arg) - ) - (local.set $$28 - (local.get $$27) - ) - (i32.store - (local.get $$28) - (local.get $$26) - ) - (local.set $$29 - (i32.add - (local.get $$27) - (i32.const 4) - ) - ) - (local.set $$30 - (local.get $$29) - ) - (i32.store - (local.get $$30) - (i32.const 0) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current8 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$31 - (local.get $$arglist_current8) - ) - (local.set $$32 - (i32.add - (i32.const 0) - (i32.const 8) - ) - ) - (local.set $$expanded49 - (local.get $$32) - ) - (local.set $$expanded48 - (i32.sub - (local.get $$expanded49) - (i32.const 1) - ) - ) - (local.set $$33 - (i32.add - (local.get $$31) - (local.get $$expanded48) - ) - ) - (local.set $$34 - (i32.add - (i32.const 0) - (i32.const 8) - ) - ) - (local.set $$expanded53 - (local.get $$34) - ) - (local.set $$expanded52 - (i32.sub - (local.get $$expanded53) - (i32.const 1) - ) - ) - (local.set $$expanded51 - (i32.xor - (local.get $$expanded52) - (i32.const -1) - ) - ) - (local.set $$35 - (i32.and - (local.get $$33) - (local.get $$expanded51) - ) - ) - (local.set $$36 - (local.get $$35) - ) - (local.set $$37 - (local.get $$36) - ) - (local.set $$38 - (local.get $$37) - ) - (local.set $$39 - (i32.load - (local.get $$38) - ) - ) - (local.set $$40 - (i32.add - (local.get $$37) - (i32.const 4) - ) - ) - (local.set $$41 - (local.get $$40) - ) - (local.set $$42 - (i32.load - (local.get $$41) - ) - ) - (local.set $$arglist_next9 - (i32.add - (local.get $$36) - (i32.const 8) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next9) - ) - (local.set $$43 - (local.get $$arg) - ) - (local.set $$44 - (local.get $$43) - ) - (i32.store - (local.get $$44) - (local.get $$39) - ) - (local.set $$45 - (i32.add - (local.get $$43) - (i32.const 4) - ) - ) - (local.set $$46 - (local.get $$45) - ) - (i32.store - (local.get $$46) - (local.get $$42) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current11 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$47 - (local.get $$arglist_current11) - ) - (local.set $$48 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded56 - (local.get $$48) - ) - (local.set $$expanded55 - (i32.sub - (local.get $$expanded56) - (i32.const 1) - ) - ) - (local.set $$49 - (i32.add - (local.get $$47) - (local.get $$expanded55) - ) - ) - (local.set $$50 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded60 - (local.get $$50) - ) - (local.set $$expanded59 - (i32.sub - (local.get $$expanded60) - (i32.const 1) - ) - ) - (local.set $$expanded58 - (i32.xor - (local.get $$expanded59) - (i32.const -1) - ) - ) - (local.set $$51 - (i32.and - (local.get $$49) - (local.get $$expanded58) - ) - ) - (local.set $$52 - (local.get $$51) - ) - (local.set $$53 - (i32.load - (local.get $$52) - ) - ) - (local.set $$arglist_next12 - (i32.add - (local.get $$52) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next12) - ) - (local.set $$conv12 - (i32.and - (local.get $$53) - (i32.const 65535) - ) - ) - (local.set $$54 - (i32.shr_s - (i32.shl - (local.get $$conv12) - (i32.const 16) - ) - (i32.const 16) - ) - ) - (local.set $$55 - (i32.lt_s - (local.get $$54) - (i32.const 0) - ) - ) - (local.set $$56 - (i32.shr_s - (i32.shl - (local.get $$55) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$57 - (local.get $$arg) - ) - (local.set $$58 - (local.get $$57) - ) - (i32.store - (local.get $$58) - (local.get $$54) - ) - (local.set $$59 - (i32.add - (local.get $$57) - (i32.const 4) - ) - ) - (local.set $$60 - (local.get $$59) - ) - (i32.store - (local.get $$60) - (local.get $$56) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current14 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$61 - (local.get $$arglist_current14) - ) - (local.set $$62 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded63 - (local.get $$62) - ) - (local.set $$expanded62 - (i32.sub - (local.get $$expanded63) - (i32.const 1) - ) - ) - (local.set $$63 - (i32.add - (local.get $$61) - (local.get $$expanded62) - ) - ) - (local.set $$64 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded67 - (local.get $$64) - ) - (local.set $$expanded66 - (i32.sub - (local.get $$expanded67) - (i32.const 1) - ) - ) - (local.set $$expanded65 - (i32.xor - (local.get $$expanded66) - (i32.const -1) - ) - ) - (local.set $$65 - (i32.and - (local.get $$63) - (local.get $$expanded65) - ) - ) - (local.set $$66 - (local.get $$65) - ) - (local.set $$67 - (i32.load - (local.get $$66) - ) - ) - (local.set $$arglist_next15 - (i32.add - (local.get $$66) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next15) - ) - (local.set $$conv17$mask - (i32.and - (local.get $$67) - (i32.const 65535) - ) - ) - (local.set $$68 - (local.get $$arg) - ) - (local.set $$69 - (local.get $$68) - ) - (i32.store - (local.get $$69) - (local.get $$conv17$mask) - ) - (local.set $$70 - (i32.add - (local.get $$68) - (i32.const 4) - ) - ) - (local.set $$71 - (local.get $$70) - ) - (i32.store - (local.get $$71) - (i32.const 0) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current17 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$72 - (local.get $$arglist_current17) - ) - (local.set $$73 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded70 - (local.get $$73) - ) - (local.set $$expanded69 - (i32.sub - (local.get $$expanded70) - (i32.const 1) - ) - ) - (local.set $$74 - (i32.add - (local.get $$72) - (local.get $$expanded69) - ) - ) - (local.set $$75 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded74 - (local.get $$75) - ) - (local.set $$expanded73 - (i32.sub - (local.get $$expanded74) - (i32.const 1) - ) - ) - (local.set $$expanded72 - (i32.xor - (local.get $$expanded73) - (i32.const -1) - ) - ) - (local.set $$76 - (i32.and - (local.get $$74) - (local.get $$expanded72) - ) - ) - (local.set $$77 - (local.get $$76) - ) - (local.set $$78 - (i32.load - (local.get $$77) - ) - ) - (local.set $$arglist_next18 - (i32.add - (local.get $$77) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next18) - ) - (local.set $$conv22 - (i32.and - (local.get $$78) - (i32.const 255) - ) - ) - (local.set $$79 - (i32.shr_s - (i32.shl - (local.get $$conv22) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$80 - (i32.lt_s - (local.get $$79) - (i32.const 0) - ) - ) - (local.set $$81 - (i32.shr_s - (i32.shl - (local.get $$80) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$82 - (local.get $$arg) - ) - (local.set $$83 - (local.get $$82) - ) - (i32.store - (local.get $$83) - (local.get $$79) - ) - (local.set $$84 - (i32.add - (local.get $$82) - (i32.const 4) - ) - ) - (local.set $$85 - (local.get $$84) - ) - (i32.store - (local.get $$85) - (local.get $$81) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current20 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$86 - (local.get $$arglist_current20) - ) - (local.set $$87 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded77 - (local.get $$87) - ) - (local.set $$expanded76 - (i32.sub - (local.get $$expanded77) - (i32.const 1) - ) - ) - (local.set $$88 - (i32.add - (local.get $$86) - (local.get $$expanded76) - ) - ) - (local.set $$89 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded81 - (local.get $$89) - ) - (local.set $$expanded80 - (i32.sub - (local.get $$expanded81) - (i32.const 1) - ) - ) - (local.set $$expanded79 - (i32.xor - (local.get $$expanded80) - (i32.const -1) - ) - ) - (local.set $$90 - (i32.and - (local.get $$88) - (local.get $$expanded79) - ) - ) - (local.set $$91 - (local.get $$90) - ) - (local.set $$92 - (i32.load - (local.get $$91) - ) - ) - (local.set $$arglist_next21 - (i32.add - (local.get $$91) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next21) - ) - (local.set $$conv27$mask - (i32.and - (local.get $$92) - (i32.const 255) - ) - ) - (local.set $$93 - (local.get $$arg) - ) - (local.set $$94 - (local.get $$93) - ) - (i32.store - (local.get $$94) - (local.get $$conv27$mask) - ) - (local.set $$95 - (i32.add - (local.get $$93) - (i32.const 4) - ) - ) - (local.set $$96 - (local.get $$95) - ) - (i32.store - (local.get $$96) - (i32.const 0) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current23 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$97 - (local.get $$arglist_current23) - ) - (local.set $$98 - (i32.add - (i32.const 0) - (i32.const 8) - ) - ) - (local.set $$expanded84 - (local.get $$98) - ) - (local.set $$expanded83 - (i32.sub - (local.get $$expanded84) - (i32.const 1) - ) - ) - (local.set $$99 - (i32.add - (local.get $$97) - (local.get $$expanded83) - ) - ) - (local.set $$100 - (i32.add - (i32.const 0) - (i32.const 8) - ) - ) - (local.set $$expanded88 - (local.get $$100) - ) - (local.set $$expanded87 - (i32.sub - (local.get $$expanded88) - (i32.const 1) - ) - ) - (local.set $$expanded86 - (i32.xor - (local.get $$expanded87) - (i32.const -1) - ) - ) - (local.set $$101 - (i32.and - (local.get $$99) - (local.get $$expanded86) - ) - ) - (local.set $$102 - (local.get $$101) - ) - (local.set $$103 - (f64.load - (local.get $$102) - ) - ) - (local.set $$arglist_next24 - (i32.add - (local.get $$102) - (i32.const 8) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next24) - ) - (f64.store - (local.get $$arg) - (local.get $$103) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current26 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$104 - (local.get $$arglist_current26) - ) - (local.set $$105 - (i32.add - (i32.const 0) - (i32.const 8) - ) - ) - (local.set $$expanded91 - (local.get $$105) - ) - (local.set $$expanded90 - (i32.sub - (local.get $$expanded91) - (i32.const 1) - ) - ) - (local.set $$106 - (i32.add - (local.get $$104) - (local.get $$expanded90) - ) - ) - (local.set $$107 - (i32.add - (i32.const 0) - (i32.const 8) - ) - ) - (local.set $$expanded95 - (local.get $$107) - ) - (local.set $$expanded94 - (i32.sub - (local.get $$expanded95) - (i32.const 1) - ) - ) - (local.set $$expanded93 - (i32.xor - (local.get $$expanded94) - (i32.const -1) - ) - ) - (local.set $$108 - (i32.and - (local.get $$106) - (local.get $$expanded93) - ) - ) - (local.set $$109 - (local.get $$108) - ) - (local.set $$110 - (f64.load - (local.get $$109) - ) - ) - (local.set $$arglist_next27 - (i32.add - (local.get $$109) - (i32.const 8) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next27) - ) - (f64.store - (local.get $$arg) - (local.get $$110) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (br $label$break$L1) - ) - ) - ) - ) - (return) - ) - (func $_fmt_u (; 51 ;) (param $$0 i32) (param $$1 i32) (param $$s i32) (result i32) - (local $$10 i32) - (local $$11 i32) - (local $$12 i32) - (local $$13 i32) - (local $$14 i32) - (local $$15 i32) - (local $$16 i32) - (local $$17 i32) - (local $$18 i32) - (local $$19 i32) - (local $$2 i32) - (local $$20 i32) - (local $$21 i32) - (local $$22 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$7 i32) - (local $$8 i32) - (local $$9 i32) - (local $$add5 i32) - (local $$conv6 i32) - (local $$div9 i32) - (local $$incdec$ptr i32) - (local $$incdec$ptr$lcssa i32) - (local $$incdec$ptr7 i32) - (local $$rem4 i32) - (local $$s$addr$0$lcssa i32) - (local $$s$addr$013 i32) - (local $$s$addr$1$lcssa i32) - (local $$s$addr$19 i32) - (local $$tobool$8 i32) - (local $$x$addr$0$lcssa$off0 i32) - (local $$y$010 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$2 - (i32.gt_u - (local.get $$1) - (i32.const 0) - ) - ) - (local.set $$3 - (i32.gt_u - (local.get $$0) - (i32.const -1) - ) - ) - (local.set $$4 - (i32.eq - (local.get $$1) - (i32.const 0) - ) - ) - (local.set $$5 - (i32.and - (local.get $$4) - (local.get $$3) - ) - ) - (local.set $$6 - (i32.or - (local.get $$2) - (local.get $$5) - ) - ) - (if - (local.get $$6) - (block - (local.set $$7 - (local.get $$0) - ) - (local.set $$8 - (local.get $$1) - ) - (local.set $$s$addr$013 - (local.get $$s) - ) - (loop $while-in - (block $while-out - (local.set $$9 - (call $___uremdi3 - (local.get $$7) - (local.get $$8) - (i32.const 10) - (i32.const 0) - ) - ) - (local.set $$10 - (global.get $tempRet0) - ) - (local.set $$11 - (i32.or - (local.get $$9) - (i32.const 48) - ) - ) - (local.set $$12 - (i32.and - (local.get $$11) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr - (i32.add - (local.get $$s$addr$013) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr) - (local.get $$12) - ) - (local.set $$13 - (call $___udivdi3 - (local.get $$7) - (local.get $$8) - (i32.const 10) - (i32.const 0) - ) - ) - (local.set $$14 - (global.get $tempRet0) - ) - (local.set $$15 - (i32.gt_u - (local.get $$8) - (i32.const 9) - ) - ) - (local.set $$16 - (i32.gt_u - (local.get $$7) - (i32.const -1) - ) - ) - (local.set $$17 - (i32.eq - (local.get $$8) - (i32.const 9) - ) - ) - (local.set $$18 - (i32.and - (local.get $$17) - (local.get $$16) - ) - ) - (local.set $$19 - (i32.or - (local.get $$15) - (local.get $$18) - ) - ) - (if - (local.get $$19) - (block - (local.set $$7 - (local.get $$13) - ) - (local.set $$8 - (local.get $$14) - ) - (local.set $$s$addr$013 - (local.get $$incdec$ptr) - ) - ) - (block - (local.set $$21 - (local.get $$13) - ) - (local.set $$22 - (local.get $$14) - ) - (local.set $$incdec$ptr$lcssa - (local.get $$incdec$ptr) - ) - (br $while-out) - ) - ) - (br $while-in) - ) - ) - (local.set $$s$addr$0$lcssa - (local.get $$incdec$ptr$lcssa) - ) - (local.set $$x$addr$0$lcssa$off0 - (local.get $$21) - ) - ) - (block - (local.set $$s$addr$0$lcssa - (local.get $$s) - ) - (local.set $$x$addr$0$lcssa$off0 - (local.get $$0) - ) - ) - ) - (local.set $$tobool$8 - (i32.eq - (local.get $$x$addr$0$lcssa$off0) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$8) - (local.set $$s$addr$1$lcssa - (local.get $$s$addr$0$lcssa) - ) - (block - (local.set $$s$addr$19 - (local.get $$s$addr$0$lcssa) - ) - (local.set $$y$010 - (local.get $$x$addr$0$lcssa$off0) - ) - (loop $while-in1 - (block $while-out0 - (local.set $$rem4 - (i32.and - (i32.rem_u - (local.get $$y$010) - (i32.const 10) - ) - (i32.const -1) - ) - ) - (local.set $$add5 - (i32.or - (local.get $$rem4) - (i32.const 48) - ) - ) - (local.set $$conv6 - (i32.and - (local.get $$add5) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr7 - (i32.add - (local.get $$s$addr$19) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr7) - (local.get $$conv6) - ) - (local.set $$div9 - (i32.and - (i32.div_u - (local.get $$y$010) - (i32.const 10) - ) - (i32.const -1) - ) - ) - (local.set $$20 - (i32.lt_u - (local.get $$y$010) - (i32.const 10) - ) - ) - (if - (local.get $$20) - (block - (local.set $$s$addr$1$lcssa - (local.get $$incdec$ptr7) - ) - (br $while-out0) - ) - (block - (local.set $$s$addr$19 - (local.get $$incdec$ptr7) - ) - (local.set $$y$010 - (local.get $$div9) - ) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (return - (local.get $$s$addr$1$lcssa) - ) - ) - (func $_pad (; 52 ;) (param $$f i32) (param $$c i32) (param $$w i32) (param $$l i32) (param $$fl i32) - (local $$$pre i32) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$and i32) - (local $$and$i i32) - (local $$and$i$15 i32) - (local $$cmp i32) - (local $$cmp1 i32) - (local $$cmp3 i32) - (local $$cmp3$14 i32) - (local $$cond i32) - (local $$l$addr$0$lcssa21 i32) - (local $$l$addr$017 i32) - (local $$or$cond i32) - (local $$pad i32) - (local $$sub i32) - (local $$sub5 i32) - (local $$tobool i32) - (local $$tobool$i i32) - (local $$tobool$i$16 i32) - (local $$tobool$i18 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 256) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$pad - (local.get $sp) - ) - (local.set $$and - (i32.and - (local.get $$fl) - (i32.const 73728) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$and) - (i32.const 0) - ) - ) - (local.set $$cmp - (i32.gt_s - (local.get $$w) - (local.get $$l) - ) - ) - (local.set $$or$cond - (i32.and - (local.get $$cmp) - (local.get $$tobool) - ) - ) - (block $do-once - (if - (local.get $$or$cond) - (block - (local.set $$sub - (i32.sub - (local.get $$w) - (local.get $$l) - ) - ) - (local.set $$cmp1 - (i32.gt_u - (local.get $$sub) - (i32.const 256) - ) - ) - (local.set $$cond - (if (result i32) - (local.get $$cmp1) - (i32.const 256) - (local.get $$sub) - ) - ) - (drop - (call $_memset - (local.get $$pad) - (local.get $$c) - (local.get $$cond) - ) - ) - (local.set $$cmp3$14 - (i32.gt_u - (local.get $$sub) - (i32.const 255) - ) - ) - (local.set $$0 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$15 - (i32.and - (local.get $$0) - (i32.const 32) - ) - ) - (local.set $$tobool$i$16 - (i32.eq - (local.get $$and$i$15) - (i32.const 0) - ) - ) - (if - (local.get $$cmp3$14) - (block - (local.set $$1 - (i32.sub - (local.get $$w) - (local.get $$l) - ) - ) - (local.set $$4 - (local.get $$0) - ) - (local.set $$l$addr$017 - (local.get $$sub) - ) - (local.set $$tobool$i18 - (local.get $$tobool$i$16) - ) - (loop $while-in - (block $while-out - (if - (local.get $$tobool$i18) - (block - (drop - (call $___fwritex - (local.get $$pad) - (i32.const 256) - (local.get $$f) - ) - ) - (local.set $$$pre - (i32.load - (local.get $$f) - ) - ) - (local.set $$2 - (local.get $$$pre) - ) - ) - (local.set $$2 - (local.get $$4) - ) - ) - (local.set $$sub5 - (i32.add - (local.get $$l$addr$017) - (i32.const -256) - ) - ) - (local.set $$cmp3 - (i32.gt_u - (local.get $$sub5) - (i32.const 255) - ) - ) - (local.set $$and$i - (i32.and - (local.get $$2) - (i32.const 32) - ) - ) - (local.set $$tobool$i - (i32.eq - (local.get $$and$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp3) - (block - (local.set $$4 - (local.get $$2) - ) - (local.set $$l$addr$017 - (local.get $$sub5) - ) - (local.set $$tobool$i18 - (local.get $$tobool$i) - ) - ) - (br $while-out) - ) - (br $while-in) - ) - ) - (local.set $$3 - (i32.and - (local.get $$1) - (i32.const 255) - ) - ) - (if - (local.get $$tobool$i) - (local.set $$l$addr$0$lcssa21 - (local.get $$3) - ) - (br $do-once) - ) - ) - (if - (local.get $$tobool$i$16) - (local.set $$l$addr$0$lcssa21 - (local.get $$sub) - ) - (br $do-once) - ) - ) - (drop - (call $___fwritex - (local.get $$pad) - (local.get $$l$addr$0$lcssa21) - (local.get $$f) - ) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return) - ) - (func $_malloc (; 53 ;) (param $$bytes i32) (result i32) - (local $$$lcssa i32) - (local $$$lcssa290 i32) - (local $$$pre i32) - (local $$$pre$i i32) - (local $$$pre$i$177 i32) - (local $$$pre$i$56$i i32) - (local $$$pre$i$i i32) - (local $$$pre$phi$i$178Z2D i32) - (local $$$pre$phi$i$57$iZ2D i32) - (local $$$pre$phi$i$iZ2D i32) - (local $$$pre$phi$iZ2D i32) - (local $$$pre$phiZ2D i32) - (local $$$pre241 i32) - (local $$$pre5$i$i i32) - (local $$0 i32) - (local $$1 i32) - (local $$10 i32) - (local $$100 i32) - (local $$101 i32) - (local $$102 i32) - (local $$103 i32) - (local $$104 i32) - (local $$105 i32) - (local $$106 i32) - (local $$107 i32) - (local $$108 i32) - (local $$109 i32) - (local $$11 i32) - (local $$110 i32) - (local $$111 i32) - (local $$112 i32) - (local $$113 i32) - (local $$114 i32) - (local $$115 i32) - (local $$116 i32) - (local $$117 i32) - (local $$118 i32) - (local $$119 i32) - (local $$12 i32) - (local $$120 i32) - (local $$121 i32) - (local $$122 i32) - (local $$123 i32) - (local $$124 i32) - (local $$125 i32) - (local $$126 i32) - (local $$127 i32) - (local $$128 i32) - (local $$129 i32) - (local $$13 i32) - (local $$130 i32) - (local $$131 i32) - (local $$132 i32) - (local $$133 i32) - (local $$134 i32) - (local $$135 i32) - (local $$136 i32) - (local $$137 i32) - (local $$138 i32) - (local $$139 i32) - (local $$14 i32) - (local $$140 i32) - (local $$141 i32) - (local $$142 i32) - (local $$143 i32) - (local $$144 i32) - (local $$145 i32) - (local $$146 i32) - (local $$147 i32) - (local $$148 i32) - (local $$149 i32) - (local $$15 i32) - (local $$150 i32) - (local $$151 i32) - (local $$152 i32) - (local $$153 i32) - (local $$154 i32) - (local $$155 i32) - (local $$156 i32) - (local $$157 i32) - (local $$158 i32) - (local $$159 i32) - (local $$16 i32) - (local $$160 i32) - (local $$161 i32) - (local $$162 i32) - (local $$163 i32) - (local $$164 i32) - (local $$165 i32) - (local $$166 i32) - (local $$167 i32) - (local $$168 i32) - (local $$169 i32) - (local $$17 i32) - (local $$170 i32) - (local $$171 i32) - (local $$172 i32) - (local $$173 i32) - (local $$174 i32) - (local $$175 i32) - (local $$176 i32) - (local $$177 i32) - (local $$178 i32) - (local $$179 i32) - (local $$18 i32) - (local $$180 i32) - (local $$181 i32) - (local $$182 i32) - (local $$183 i32) - (local $$184 i32) - (local $$185 i32) - (local $$186 i32) - (local $$187 i32) - (local $$188 i32) - (local $$189 i32) - (local $$19 i32) - (local $$190 i32) - (local $$191 i32) - (local $$192 i32) - (local $$193 i32) - (local $$194 i32) - (local $$195 i32) - (local $$196 i32) - (local $$197 i32) - (local $$198 i32) - (local $$199 i32) - (local $$2 i32) - (local $$20 i32) - (local $$200 i32) - (local $$201 i32) - (local $$202 i32) - (local $$203 i32) - (local $$204 i32) - (local $$205 i32) - (local $$206 i32) - (local $$207 i32) - (local $$208 i32) - (local $$21 i32) - (local $$22 i32) - (local $$23 i32) - (local $$24 i32) - (local $$25 i32) - (local $$26 i32) - (local $$27 i32) - (local $$28 i32) - (local $$29 i32) - (local $$3 i32) - (local $$30 i32) - (local $$31 i32) - (local $$32 i32) - (local $$33 i32) - (local $$34 i32) - (local $$35 i32) - (local $$36 i32) - (local $$37 i32) - (local $$38 i32) - (local $$39 i32) - (local $$4 i32) - (local $$40 i32) - (local $$41 i32) - (local $$42 i32) - (local $$43 i32) - (local $$44 i32) - (local $$45 i32) - (local $$46 i32) - (local $$47 i32) - (local $$48 i32) - (local $$49 i32) - (local $$5 i32) - (local $$50 i32) - (local $$51 i32) - (local $$52 i32) - (local $$53 i32) - (local $$54 i32) - (local $$55 i32) - (local $$56 i32) - (local $$57 i32) - (local $$58 i32) - (local $$59 i32) - (local $$6 i32) - (local $$60 i32) - (local $$61 i32) - (local $$62 i32) - (local $$63 i32) - (local $$64 i32) - (local $$65 i32) - (local $$66 i32) - (local $$67 i32) - (local $$68 i32) - (local $$69 i32) - (local $$7 i32) - (local $$70 i32) - (local $$71 i32) - (local $$72 i32) - (local $$73 i32) - (local $$74 i32) - (local $$75 i32) - (local $$76 i32) - (local $$77 i32) - (local $$78 i32) - (local $$79 i32) - (local $$8 i32) - (local $$80 i32) - (local $$81 i32) - (local $$82 i32) - (local $$83 i32) - (local $$84 i32) - (local $$85 i32) - (local $$86 i32) - (local $$87 i32) - (local $$88 i32) - (local $$89 i32) - (local $$9 i32) - (local $$90 i32) - (local $$91 i32) - (local $$92 i32) - (local $$93 i32) - (local $$94 i32) - (local $$95 i32) - (local $$96 i32) - (local $$97 i32) - (local $$98 i32) - (local $$99 i32) - (local $$F$0$i$i i32) - (local $$F104$0 i32) - (local $$F197$0$i i32) - (local $$F224$0$i$i i32) - (local $$F290$0$i i32) - (local $$I252$0$i$i i32) - (local $$I316$0$i i32) - (local $$I57$0$i$i i32) - (local $$K105$0$i$i i32) - (local $$K305$0$i$i i32) - (local $$K373$0$i i32) - (local $$R$1$i i32) - (local $$R$1$i$168 i32) - (local $$R$1$i$168$lcssa i32) - (local $$R$1$i$i i32) - (local $$R$1$i$i$lcssa i32) - (local $$R$1$i$lcssa i32) - (local $$R$3$i i32) - (local $$R$3$i$171 i32) - (local $$R$3$i$i i32) - (local $$RP$1$i i32) - (local $$RP$1$i$167 i32) - (local $$RP$1$i$167$lcssa i32) - (local $$RP$1$i$i i32) - (local $$RP$1$i$i$lcssa i32) - (local $$RP$1$i$lcssa i32) - (local $$T$0$i i32) - (local $$T$0$i$58$i i32) - (local $$T$0$i$58$i$lcssa i32) - (local $$T$0$i$58$i$lcssa283 i32) - (local $$T$0$i$i i32) - (local $$T$0$i$i$lcssa i32) - (local $$T$0$i$i$lcssa284 i32) - (local $$T$0$i$lcssa i32) - (local $$T$0$i$lcssa293 i32) - (local $$add$i i32) - (local $$add$i$146 i32) - (local $$add$i$180 i32) - (local $$add$i$i i32) - (local $$add$ptr i32) - (local $$add$ptr$i i32) - (local $$add$ptr$i$1$i$i i32) - (local $$add$ptr$i$11$i i32) - (local $$add$ptr$i$161 i32) - (local $$add$ptr$i$193 i32) - (local $$add$ptr$i$21$i i32) - (local $$add$ptr$i$32$i i32) - (local $$add$ptr$i$i i32) - (local $$add$ptr$i$i$i i32) - (local $$add$ptr$i$i$i$lcssa i32) - (local $$add$ptr14$i$i i32) - (local $$add$ptr15$i$i i32) - (local $$add$ptr16$i$i i32) - (local $$add$ptr166 i32) - (local $$add$ptr169 i32) - (local $$add$ptr17$i$i i32) - (local $$add$ptr178 i32) - (local $$add$ptr181$i i32) - (local $$add$ptr182 i32) - (local $$add$ptr189$i i32) - (local $$add$ptr190$i i32) - (local $$add$ptr193 i32) - (local $$add$ptr199 i32) - (local $$add$ptr2$i$i i32) - (local $$add$ptr205$i$i i32) - (local $$add$ptr212$i$i i32) - (local $$add$ptr225$i i32) - (local $$add$ptr227$i i32) - (local $$add$ptr24$i$i i32) - (local $$add$ptr262$i i32) - (local $$add$ptr269$i i32) - (local $$add$ptr273$i i32) - (local $$add$ptr282$i i32) - (local $$add$ptr3$i$i i32) - (local $$add$ptr30$i$i i32) - (local $$add$ptr369$i$i i32) - (local $$add$ptr4$i$26$i i32) - (local $$add$ptr4$i$37$i i32) - (local $$add$ptr4$i$i i32) - (local $$add$ptr4$i$i$i i32) - (local $$add$ptr441$i i32) - (local $$add$ptr5$i$i i32) - (local $$add$ptr6$i$30$i i32) - (local $$add$ptr6$i$i i32) - (local $$add$ptr6$i$i$i i32) - (local $$add$ptr7$i$i i32) - (local $$add$ptr8$i122$i i32) - (local $$add$ptr95 i32) - (local $$add$ptr98 i32) - (local $$add10$i i32) - (local $$add101$i i32) - (local $$add110$i i32) - (local $$add13$i i32) - (local $$add14$i i32) - (local $$add140$i i32) - (local $$add144 i32) - (local $$add150$i i32) - (local $$add17$i i32) - (local $$add17$i$183 i32) - (local $$add177$i i32) - (local $$add18$i i32) - (local $$add19$i i32) - (local $$add2 i32) - (local $$add20$i i32) - (local $$add206$i$i i32) - (local $$add212$i i32) - (local $$add215$i i32) - (local $$add22$i i32) - (local $$add246$i i32) - (local $$add26$i$i i32) - (local $$add268$i i32) - (local $$add269$i$i i32) - (local $$add274$i$i i32) - (local $$add278$i$i i32) - (local $$add280$i$i i32) - (local $$add283$i$i i32) - (local $$add337$i i32) - (local $$add342$i i32) - (local $$add346$i i32) - (local $$add348$i i32) - (local $$add351$i i32) - (local $$add46$i i32) - (local $$add50 i32) - (local $$add51$i i32) - (local $$add54 i32) - (local $$add54$i i32) - (local $$add58 i32) - (local $$add62 i32) - (local $$add64 i32) - (local $$add74$i$i i32) - (local $$add77$i i32) - (local $$add78$i i32) - (local $$add79$i$i i32) - (local $$add8 i32) - (local $$add82$i i32) - (local $$add83$i$i i32) - (local $$add85$i$i i32) - (local $$add86$i i32) - (local $$add88$i$i i32) - (local $$add9$i i32) - (local $$add90$i i32) - (local $$add92$i i32) - (local $$and i32) - (local $$and$i i32) - (local $$and$i$12$i i32) - (local $$and$i$14$i i32) - (local $$and$i$143 i32) - (local $$and$i$22$i i32) - (local $$and$i$33$i i32) - (local $$and$i$i i32) - (local $$and$i$i$i i32) - (local $$and100$i i32) - (local $$and103$i i32) - (local $$and104$i i32) - (local $$and106 i32) - (local $$and11$i i32) - (local $$and119$i$i i32) - (local $$and12$i i32) - (local $$and13$i i32) - (local $$and13$i$i i32) - (local $$and133$i$i i32) - (local $$and14 i32) - (local $$and145 i32) - (local $$and17$i i32) - (local $$and194$i i32) - (local $$and194$i$204 i32) - (local $$and199$i i32) - (local $$and209$i$i i32) - (local $$and21$i i32) - (local $$and21$i$149 i32) - (local $$and227$i$i i32) - (local $$and236$i i32) - (local $$and264$i$i i32) - (local $$and268$i$i i32) - (local $$and273$i$i i32) - (local $$and282$i$i i32) - (local $$and29$i i32) - (local $$and292$i i32) - (local $$and295$i$i i32) - (local $$and3$i i32) - (local $$and3$i$24$i i32) - (local $$and3$i$35$i i32) - (local $$and3$i$i i32) - (local $$and3$i$i$i i32) - (local $$and30$i i32) - (local $$and318$i$i i32) - (local $$and32$i i32) - (local $$and32$i$i i32) - (local $$and33$i$i i32) - (local $$and331$i i32) - (local $$and336$i i32) - (local $$and341$i i32) - (local $$and350$i i32) - (local $$and363$i i32) - (local $$and37$i$i i32) - (local $$and387$i i32) - (local $$and4 i32) - (local $$and40$i$i i32) - (local $$and41 i32) - (local $$and42$i i32) - (local $$and43 i32) - (local $$and46 i32) - (local $$and49 i32) - (local $$and49$i i32) - (local $$and49$i$i i32) - (local $$and53 i32) - (local $$and57 i32) - (local $$and6$i i32) - (local $$and6$i$38$i i32) - (local $$and6$i$i i32) - (local $$and61 i32) - (local $$and64$i i32) - (local $$and68$i i32) - (local $$and69$i$i i32) - (local $$and7 i32) - (local $$and7$i$i i32) - (local $$and73$i i32) - (local $$and73$i$i i32) - (local $$and74 i32) - (local $$and77$i i32) - (local $$and78$i$i i32) - (local $$and8$i i32) - (local $$and80$i i32) - (local $$and81$i i32) - (local $$and85$i i32) - (local $$and87$i$i i32) - (local $$and89$i i32) - (local $$and9$i i32) - (local $$and96$i$i i32) - (local $$arrayidx i32) - (local $$arrayidx$i i32) - (local $$arrayidx$i$150 i32) - (local $$arrayidx$i$20$i i32) - (local $$arrayidx$i$48$i i32) - (local $$arrayidx$i$i i32) - (local $$arrayidx103 i32) - (local $$arrayidx103$i$i i32) - (local $$arrayidx106$i i32) - (local $$arrayidx107$i$i i32) - (local $$arrayidx113$i i32) - (local $$arrayidx113$i$159 i32) - (local $$arrayidx121$i i32) - (local $$arrayidx123$i$i i32) - (local $$arrayidx126$i$i i32) - (local $$arrayidx126$i$i$lcssa i32) - (local $$arrayidx137$i i32) - (local $$arrayidx143$i$i i32) - (local $$arrayidx148$i i32) - (local $$arrayidx151$i i32) - (local $$arrayidx151$i$i i32) - (local $$arrayidx154$i i32) - (local $$arrayidx155$i i32) - (local $$arrayidx161$i i32) - (local $$arrayidx165$i i32) - (local $$arrayidx165$i$169 i32) - (local $$arrayidx178$i$i i32) - (local $$arrayidx184$i i32) - (local $$arrayidx184$i$i i32) - (local $$arrayidx195$i$i i32) - (local $$arrayidx196$i i32) - (local $$arrayidx204$i i32) - (local $$arrayidx212$i i32) - (local $$arrayidx223$i$i i32) - (local $$arrayidx228$i i32) - (local $$arrayidx23$i i32) - (local $$arrayidx239$i i32) - (local $$arrayidx245$i i32) - (local $$arrayidx256$i i32) - (local $$arrayidx27$i i32) - (local $$arrayidx287$i$i i32) - (local $$arrayidx289$i i32) - (local $$arrayidx290$i$i i32) - (local $$arrayidx325$i$i i32) - (local $$arrayidx325$i$i$lcssa i32) - (local $$arrayidx355$i i32) - (local $$arrayidx358$i i32) - (local $$arrayidx394$i i32) - (local $$arrayidx394$i$lcssa i32) - (local $$arrayidx40$i i32) - (local $$arrayidx44$i i32) - (local $$arrayidx61$i i32) - (local $$arrayidx65$i i32) - (local $$arrayidx66 i32) - (local $$arrayidx71$i i32) - (local $$arrayidx75$i i32) - (local $$arrayidx91$i$i i32) - (local $$arrayidx92$i$i i32) - (local $$arrayidx94$i i32) - (local $$arrayidx94$i$156 i32) - (local $$arrayidx96$i$i i32) - (local $$base$i$i$lcssa i32) - (local $$base226$i$lcssa i32) - (local $$bk i32) - (local $$bk$i i32) - (local $$bk$i$163 i32) - (local $$bk$i$46$i i32) - (local $$bk$i$i i32) - (local $$bk102$i$i i32) - (local $$bk122 i32) - (local $$bk124 i32) - (local $$bk136$i i32) - (local $$bk139$i$i i32) - (local $$bk158$i$i i32) - (local $$bk161$i$i i32) - (local $$bk218$i i32) - (local $$bk220$i i32) - (local $$bk246$i$i i32) - (local $$bk248$i$i i32) - (local $$bk302$i$i i32) - (local $$bk311$i i32) - (local $$bk313$i i32) - (local $$bk338$i$i i32) - (local $$bk357$i$i i32) - (local $$bk360$i$i i32) - (local $$bk370$i i32) - (local $$bk407$i i32) - (local $$bk429$i i32) - (local $$bk43$i$i i32) - (local $$bk432$i i32) - (local $$bk47$i i32) - (local $$bk55$i$i i32) - (local $$bk67$i$i i32) - (local $$bk74$i$i i32) - (local $$bk78 i32) - (local $$bk82$i$i i32) - (local $$br$2$ph$i i32) - (local $$call$i$i i32) - (local $$call107$i i32) - (local $$call131$i i32) - (local $$call132$i i32) - (local $$call275$i i32) - (local $$call37$i i32) - (local $$call6$i$i i32) - (local $$call68$i i32) - (local $$call83$i i32) - (local $$child$i$i i32) - (local $$child166$i$i i32) - (local $$child289$i$i i32) - (local $$child357$i i32) - (local $$cmp i32) - (local $$cmp$i i32) - (local $$cmp$i$13$i i32) - (local $$cmp$i$140 i32) - (local $$cmp$i$15$i i32) - (local $$cmp$i$179 i32) - (local $$cmp$i$2$i$i i32) - (local $$cmp$i$23$i i32) - (local $$cmp$i$34$i i32) - (local $$cmp$i$9$i i32) - (local $$cmp$i$i$i i32) - (local $$cmp1 i32) - (local $$cmp1$i i32) - (local $$cmp1$i$i i32) - (local $$cmp10 i32) - (local $$cmp100$i$i i32) - (local $$cmp102$i i32) - (local $$cmp104$i$i i32) - (local $$cmp105$i i32) - (local $$cmp106$i$i i32) - (local $$cmp107$i i32) - (local $$cmp107$i$157 i32) - (local $$cmp108$i i32) - (local $$cmp108$i$i i32) - (local $$cmp112$i$i i32) - (local $$cmp113 i32) - (local $$cmp114$i i32) - (local $$cmp116$i i32) - (local $$cmp118$i i32) - (local $$cmp119$i i32) - (local $$cmp12$i i32) - (local $$cmp120$i$53$i i32) - (local $$cmp120$i$i i32) - (local $$cmp121$i i32) - (local $$cmp123$i i32) - (local $$cmp124$i$i i32) - (local $$cmp126$i i32) - (local $$cmp127$i i32) - (local $$cmp128 i32) - (local $$cmp128$i i32) - (local $$cmp128$i$i i32) - (local $$cmp130$i i32) - (local $$cmp133$i i32) - (local $$cmp133$i$196 i32) - (local $$cmp133$i$i i32) - (local $$cmp135$i i32) - (local $$cmp137$i i32) - (local $$cmp137$i$197 i32) - (local $$cmp137$i$i i32) - (local $$cmp138$i i32) - (local $$cmp139 i32) - (local $$cmp140$i i32) - (local $$cmp141$not$i i32) - (local $$cmp142$i i32) - (local $$cmp144$i$i i32) - (local $$cmp146 i32) - (local $$cmp15 i32) - (local $$cmp15$i i32) - (local $$cmp151$i i32) - (local $$cmp152$i i32) - (local $$cmp153$i$i i32) - (local $$cmp155$i i32) - (local $$cmp156 i32) - (local $$cmp156$i i32) - (local $$cmp156$i$i i32) - (local $$cmp157$i i32) - (local $$cmp159$i i32) - (local $$cmp159$i$199 i32) - (local $$cmp16 i32) - (local $$cmp160$i$i i32) - (local $$cmp162 i32) - (local $$cmp162$i i32) - (local $$cmp162$i$200 i32) - (local $$cmp166$i i32) - (local $$cmp168$i$i i32) - (local $$cmp171$i i32) - (local $$cmp172$i$i i32) - (local $$cmp174$i i32) - (local $$cmp180$i i32) - (local $$cmp185$i i32) - (local $$cmp185$i$i i32) - (local $$cmp186 i32) - (local $$cmp186$i i32) - (local $$cmp189$i$i i32) - (local $$cmp19$i i32) - (local $$cmp190$i i32) - (local $$cmp191$i i32) - (local $$cmp198$i i32) - (local $$cmp2$i$i i32) - (local $$cmp2$i$i$i i32) - (local $$cmp20$i$i i32) - (local $$cmp203$i i32) - (local $$cmp205$i i32) - (local $$cmp208$i i32) - (local $$cmp209$i i32) - (local $$cmp21$i i32) - (local $$cmp215$i$i i32) - (local $$cmp217$i i32) - (local $$cmp218$i i32) - (local $$cmp221$i i32) - (local $$cmp224$i i32) - (local $$cmp228$i i32) - (local $$cmp229$i i32) - (local $$cmp233$i i32) - (local $$cmp236$i$i i32) - (local $$cmp24$i i32) - (local $$cmp24$i$i i32) - (local $$cmp246$i i32) - (local $$cmp250$i i32) - (local $$cmp254$i$i i32) - (local $$cmp257$i i32) - (local $$cmp258$i$i i32) - (local $$cmp26$i i32) - (local $$cmp265$i i32) - (local $$cmp27$i$i i32) - (local $$cmp28$i i32) - (local $$cmp28$i$i i32) - (local $$cmp284$i i32) - (local $$cmp29 i32) - (local $$cmp3$i$i i32) - (local $$cmp301$i i32) - (local $$cmp306$i$i i32) - (local $$cmp31 i32) - (local $$cmp319$i i32) - (local $$cmp319$i$i i32) - (local $$cmp32$i i32) - (local $$cmp32$i$185 i32) - (local $$cmp323$i i32) - (local $$cmp327$i$i i32) - (local $$cmp33$i i32) - (local $$cmp332$i$i i32) - (local $$cmp34$i i32) - (local $$cmp34$i$i i32) - (local $$cmp35$i i32) - (local $$cmp350$i$i i32) - (local $$cmp36$i i32) - (local $$cmp36$i$i i32) - (local $$cmp374$i i32) - (local $$cmp38$i i32) - (local $$cmp38$i$i i32) - (local $$cmp388$i i32) - (local $$cmp396$i i32) - (local $$cmp40$i i32) - (local $$cmp401$i i32) - (local $$cmp41$i$i i32) - (local $$cmp42$i$i i32) - (local $$cmp422$i i32) - (local $$cmp43$i i32) - (local $$cmp44$i$i i32) - (local $$cmp45$i i32) - (local $$cmp45$i$155 i32) - (local $$cmp46$i i32) - (local $$cmp46$i$49$i i32) - (local $$cmp46$i$i i32) - (local $$cmp48$i i32) - (local $$cmp49$i i32) - (local $$cmp5 i32) - (local $$cmp51$i i32) - (local $$cmp54$i$i i32) - (local $$cmp55$i i32) - (local $$cmp55$i$187 i32) - (local $$cmp57$i i32) - (local $$cmp57$i$188 i32) - (local $$cmp57$i$i i32) - (local $$cmp59$i$i i32) - (local $$cmp60$i i32) - (local $$cmp60$i$i i32) - (local $$cmp62$i i32) - (local $$cmp63$i i32) - (local $$cmp63$i$i i32) - (local $$cmp65$i i32) - (local $$cmp66$i i32) - (local $$cmp66$i$190 i32) - (local $$cmp69$i i32) - (local $$cmp7$i$i i32) - (local $$cmp70 i32) - (local $$cmp72$i i32) - (local $$cmp75$i$i i32) - (local $$cmp76 i32) - (local $$cmp76$i i32) - (local $$cmp79 i32) - (local $$cmp81$i i32) - (local $$cmp81$i$191 i32) - (local $$cmp81$i$i i32) - (local $$cmp83$i$i i32) - (local $$cmp85$i i32) - (local $$cmp86$i$i i32) - (local $$cmp89$i i32) - (local $$cmp9$i$i i32) - (local $$cmp90$i i32) - (local $$cmp91$i i32) - (local $$cmp93$i i32) - (local $$cmp95$i i32) - (local $$cmp96$i i32) - (local $$cmp97$7$i i32) - (local $$cmp97$i i32) - (local $$cmp97$i$i i32) - (local $$cmp99 i32) - (local $$cond i32) - (local $$cond$i i32) - (local $$cond$i$16$i i32) - (local $$cond$i$25$i i32) - (local $$cond$i$36$i i32) - (local $$cond$i$i i32) - (local $$cond$i$i$i i32) - (local $$cond$v$0$i i32) - (local $$cond115$i$i i32) - (local $$cond13$i$i i32) - (local $$cond15$i$i i32) - (local $$cond2$i i32) - (local $$cond2$i$i i32) - (local $$cond3$i i32) - (local $$cond315$i$i i32) - (local $$cond383$i i32) - (local $$cond4$i i32) - (local $$exitcond$i$i i32) - (local $$fd$i i32) - (local $$fd$i$164 i32) - (local $$fd$i$i i32) - (local $$fd103$i$i i32) - (local $$fd123 i32) - (local $$fd139$i i32) - (local $$fd140$i$i i32) - (local $$fd148$i$i i32) - (local $$fd160$i$i i32) - (local $$fd219$i i32) - (local $$fd247$i$i i32) - (local $$fd303$i$i i32) - (local $$fd312$i i32) - (local $$fd339$i$i i32) - (local $$fd344$i$i i32) - (local $$fd359$i$i i32) - (local $$fd371$i i32) - (local $$fd408$i i32) - (local $$fd416$i i32) - (local $$fd431$i i32) - (local $$fd50$i i32) - (local $$fd54$i$i i32) - (local $$fd59$i$i i32) - (local $$fd68$pre$phi$i$iZ2D i32) - (local $$fd69 i32) - (local $$fd78$i$i i32) - (local $$fd85$i$i i32) - (local $$fd9 i32) - (local $$head i32) - (local $$head$i i32) - (local $$head$i$154 i32) - (local $$head$i$17$i i32) - (local $$head$i$29$i i32) - (local $$head$i$42$i i32) - (local $$head$i$i i32) - (local $$head$i$i$i i32) - (local $$head118$i$i i32) - (local $$head168 i32) - (local $$head173 i32) - (local $$head177 i32) - (local $$head179 i32) - (local $$head179$i i32) - (local $$head182$i i32) - (local $$head187$i i32) - (local $$head189$i i32) - (local $$head195 i32) - (local $$head198 i32) - (local $$head208$i$i i32) - (local $$head211$i$i i32) - (local $$head23$i$i i32) - (local $$head25 i32) - (local $$head265$i i32) - (local $$head268$i i32) - (local $$head271$i i32) - (local $$head274$i i32) - (local $$head279$i i32) - (local $$head281$i i32) - (local $$head29$i i32) - (local $$head29$i$i i32) - (local $$head317$i$i i32) - (local $$head32$i$i i32) - (local $$head34$i$i i32) - (local $$head386$i i32) - (local $$head7$i$31$i i32) - (local $$head7$i$i i32) - (local $$head7$i$i$i i32) - (local $$head94 i32) - (local $$head97 i32) - (local $$head99$i i32) - (local $$i$01$i$i i32) - (local $$idx$0$i i32) - (local $$inc$i$i i32) - (local $$index$i i32) - (local $$index$i$172 i32) - (local $$index$i$54$i i32) - (local $$index$i$i i32) - (local $$index288$i$i i32) - (local $$index356$i i32) - (local $$nb$0 i32) - (local $$neg i32) - (local $$neg$i i32) - (local $$neg$i$173 i32) - (local $$neg$i$182 i32) - (local $$neg$i$i i32) - (local $$neg103$i i32) - (local $$neg13 i32) - (local $$neg132$i$i i32) - (local $$neg48$i i32) - (local $$neg73 i32) - (local $$next$i i32) - (local $$next$i$i i32) - (local $$next$i$i$i i32) - (local $$next231$i i32) - (local $$not$cmp150$i$i i32) - (local $$not$cmp346$i$i i32) - (local $$not$cmp418$i i32) - (local $$oldfirst$0$i$i i32) - (local $$or$cond$i i32) - (local $$or$cond$i$189 i32) - (local $$or$cond1$i i32) - (local $$or$cond1$i$184 i32) - (local $$or$cond2$i i32) - (local $$or$cond3$i i32) - (local $$or$cond4$i i32) - (local $$or$cond5$i i32) - (local $$or$cond7$i i32) - (local $$or$cond8$i i32) - (local $$or$cond98$i i32) - (local $$or$i i32) - (local $$or$i$195 i32) - (local $$or$i$28$i i32) - (local $$or$i$i i32) - (local $$or$i$i$i i32) - (local $$or101$i$i i32) - (local $$or110 i32) - (local $$or167 i32) - (local $$or172 i32) - (local $$or176 i32) - (local $$or178$i i32) - (local $$or180 i32) - (local $$or183$i i32) - (local $$or186$i i32) - (local $$or188$i i32) - (local $$or19$i$i i32) - (local $$or194 i32) - (local $$or197 i32) - (local $$or204$i i32) - (local $$or210$i$i i32) - (local $$or22$i$i i32) - (local $$or23 i32) - (local $$or232$i$i i32) - (local $$or26 i32) - (local $$or264$i i32) - (local $$or267$i i32) - (local $$or270$i i32) - (local $$or275$i i32) - (local $$or278$i i32) - (local $$or28$i$i i32) - (local $$or280$i i32) - (local $$or297$i i32) - (local $$or300$i$i i32) - (local $$or33$i$i i32) - (local $$or368$i i32) - (local $$or40 i32) - (local $$or44$i$i i32) - (local $$or93 i32) - (local $$or96 i32) - (local $$p$0$i$i i32) - (local $$parent$i i32) - (local $$parent$i$162 i32) - (local $$parent$i$51$i i32) - (local $$parent$i$i i32) - (local $$parent135$i i32) - (local $$parent138$i$i i32) - (local $$parent149$i i32) - (local $$parent162$i$i i32) - (local $$parent165$i$i i32) - (local $$parent166$i i32) - (local $$parent179$i$i i32) - (local $$parent196$i$i i32) - (local $$parent226$i i32) - (local $$parent240$i i32) - (local $$parent257$i i32) - (local $$parent301$i$i i32) - (local $$parent337$i$i i32) - (local $$parent361$i$i i32) - (local $$parent369$i i32) - (local $$parent406$i i32) - (local $$parent433$i i32) - (local $$qsize$0$i$i i32) - (local $$retval$0 i32) - (local $$rsize$0$i i32) - (local $$rsize$0$i$152 i32) - (local $$rsize$0$i$lcssa i32) - (local $$rsize$1$i i32) - (local $$rsize$3$i i32) - (local $$rsize$4$lcssa$i i32) - (local $$rsize$49$i i32) - (local $$rst$0$i i32) - (local $$rst$1$i i32) - (local $$sflags193$i i32) - (local $$sflags235$i i32) - (local $$shl i32) - (local $$shl$i i32) - (local $$shl$i$144 i32) - (local $$shl$i$19$i i32) - (local $$shl$i$47$i i32) - (local $$shl$i$i i32) - (local $$shl102 i32) - (local $$shl105 i32) - (local $$shl116$i$i i32) - (local $$shl12 i32) - (local $$shl127$i$i i32) - (local $$shl131$i$i i32) - (local $$shl15$i i32) - (local $$shl18$i i32) - (local $$shl192$i i32) - (local $$shl195$i i32) - (local $$shl198$i i32) - (local $$shl22 i32) - (local $$shl221$i$i i32) - (local $$shl226$i$i i32) - (local $$shl265$i$i i32) - (local $$shl270$i$i i32) - (local $$shl276$i$i i32) - (local $$shl279$i$i i32) - (local $$shl288$i i32) - (local $$shl291$i i32) - (local $$shl294$i$i i32) - (local $$shl31$i i32) - (local $$shl316$i$i i32) - (local $$shl326$i$i i32) - (local $$shl333$i i32) - (local $$shl338$i i32) - (local $$shl344$i i32) - (local $$shl347$i i32) - (local $$shl35 i32) - (local $$shl362$i i32) - (local $$shl37 i32) - (local $$shl384$i i32) - (local $$shl39$i$i i32) - (local $$shl395$i i32) - (local $$shl48$i$i i32) - (local $$shl52$i i32) - (local $$shl60$i i32) - (local $$shl65 i32) - (local $$shl70$i$i i32) - (local $$shl72 i32) - (local $$shl75$i$i i32) - (local $$shl81$i$i i32) - (local $$shl84$i$i i32) - (local $$shl9$i i32) - (local $$shl90 i32) - (local $$shl95$i$i i32) - (local $$shr i32) - (local $$shr$i i32) - (local $$shr$i$139 i32) - (local $$shr$i$45$i i32) - (local $$shr$i$i i32) - (local $$shr101 i32) - (local $$shr11$i i32) - (local $$shr11$i$147 i32) - (local $$shr110$i$i i32) - (local $$shr12$i i32) - (local $$shr123$i$i i32) - (local $$shr15$i i32) - (local $$shr16$i i32) - (local $$shr16$i$148 i32) - (local $$shr19$i i32) - (local $$shr194$i i32) - (local $$shr20$i i32) - (local $$shr214$i$i i32) - (local $$shr253$i$i i32) - (local $$shr263$i$i i32) - (local $$shr267$i$i i32) - (local $$shr27$i i32) - (local $$shr272$i$i i32) - (local $$shr277$i$i i32) - (local $$shr281$i$i i32) - (local $$shr283$i i32) - (local $$shr3 i32) - (local $$shr310$i$i i32) - (local $$shr318$i i32) - (local $$shr322$i$i i32) - (local $$shr330$i i32) - (local $$shr335$i i32) - (local $$shr340$i i32) - (local $$shr345$i i32) - (local $$shr349$i i32) - (local $$shr378$i i32) - (local $$shr391$i i32) - (local $$shr4$i i32) - (local $$shr41$i i32) - (local $$shr45 i32) - (local $$shr47 i32) - (local $$shr48 i32) - (local $$shr5$i i32) - (local $$shr5$i$142 i32) - (local $$shr51 i32) - (local $$shr52 i32) - (local $$shr55 i32) - (local $$shr56 i32) - (local $$shr58$i$i i32) - (local $$shr59 i32) - (local $$shr60 i32) - (local $$shr63 i32) - (local $$shr68$i$i i32) - (local $$shr7$i i32) - (local $$shr7$i$145 i32) - (local $$shr72$i i32) - (local $$shr72$i$i i32) - (local $$shr75$i i32) - (local $$shr76$i i32) - (local $$shr77$i$i i32) - (local $$shr79$i i32) - (local $$shr8$i i32) - (local $$shr80$i i32) - (local $$shr82$i$i i32) - (local $$shr83$i i32) - (local $$shr84$i i32) - (local $$shr86$i$i i32) - (local $$shr87$i i32) - (local $$shr88$i i32) - (local $$shr91$i i32) - (local $$size$i$i i32) - (local $$size$i$i$i i32) - (local $$size$i$i$lcssa i32) - (local $$size188$i i32) - (local $$size188$i$lcssa i32) - (local $$size245$i i32) - (local $$sizebits$0$i i32) - (local $$sizebits$0$shl52$i i32) - (local $$sp$0$i$i i32) - (local $$sp$0$i$i$i i32) - (local $$sp$0108$i i32) - (local $$sp$0108$i$lcssa i32) - (local $$sp$1107$i i32) - (local $$sp$1107$i$lcssa i32) - (local $$ssize$0$i i32) - (local $$ssize$2$ph$i i32) - (local $$ssize$5$i i32) - (local $$sub i32) - (local $$sub$i i32) - (local $$sub$i$138 i32) - (local $$sub$i$181 i32) - (local $$sub$i$i i32) - (local $$sub$ptr$lhs$cast$i i32) - (local $$sub$ptr$lhs$cast$i$39$i i32) - (local $$sub$ptr$lhs$cast$i$i i32) - (local $$sub$ptr$rhs$cast$i i32) - (local $$sub$ptr$rhs$cast$i$40$i i32) - (local $$sub$ptr$rhs$cast$i$i i32) - (local $$sub$ptr$sub$i i32) - (local $$sub$ptr$sub$i$41$i i32) - (local $$sub$ptr$sub$i$i i32) - (local $$sub10$i i32) - (local $$sub101$i i32) - (local $$sub101$rsize$4$i i32) - (local $$sub112$i i32) - (local $$sub113$i$i i32) - (local $$sub118$i i32) - (local $$sub14$i i32) - (local $$sub16$i$i i32) - (local $$sub160 i32) - (local $$sub172$i i32) - (local $$sub18$i$i i32) - (local $$sub190 i32) - (local $$sub2$i i32) - (local $$sub22$i i32) - (local $$sub260$i i32) - (local $$sub262$i$i i32) - (local $$sub266$i$i i32) - (local $$sub271$i$i i32) - (local $$sub275$i$i i32) - (local $$sub30$i i32) - (local $$sub31$i i32) - (local $$sub31$rsize$0$i i32) - (local $$sub313$i$i i32) - (local $$sub329$i i32) - (local $$sub33$i i32) - (local $$sub334$i i32) - (local $$sub339$i i32) - (local $$sub343$i i32) - (local $$sub381$i i32) - (local $$sub4$i i32) - (local $$sub41$i i32) - (local $$sub42 i32) - (local $$sub44 i32) - (local $$sub5$i$27$i i32) - (local $$sub5$i$i i32) - (local $$sub5$i$i$i i32) - (local $$sub50$i i32) - (local $$sub6$i i32) - (local $$sub63$i i32) - (local $$sub67$i i32) - (local $$sub67$i$i i32) - (local $$sub70$i i32) - (local $$sub71$i$i i32) - (local $$sub76$i$i i32) - (local $$sub80$i$i i32) - (local $$sub91 i32) - (local $$sub99$i i32) - (local $$t$0$i i32) - (local $$t$0$i$151 i32) - (local $$t$2$i i32) - (local $$t$4$ph$i i32) - (local $$t$4$v$4$i i32) - (local $$t$48$i i32) - (local $$tbase$796$i i32) - (local $$tobool$i$i i32) - (local $$tobool107 i32) - (local $$tobool195$i i32) - (local $$tobool200$i i32) - (local $$tobool228$i$i i32) - (local $$tobool237$i i32) - (local $$tobool293$i i32) - (local $$tobool296$i$i i32) - (local $$tobool30$i i32) - (local $$tobool364$i i32) - (local $$tobool97$i$i i32) - (local $$tsize$795$i i32) - (local $$v$0$i i32) - (local $$v$0$i$153 i32) - (local $$v$0$i$lcssa i32) - (local $$v$1$i i32) - (local $$v$3$i i32) - (local $$v$4$lcssa$i i32) - (local $$v$410$i i32) - (local $$xor$i$i i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$cmp - (i32.lt_u - (local.get $$bytes) - (i32.const 245) - ) - ) - (block $do-once - (if - (local.get $$cmp) - (block - (local.set $$cmp1 - (i32.lt_u - (local.get $$bytes) - (i32.const 11) - ) - ) - (local.set $$add2 - (i32.add - (local.get $$bytes) - (i32.const 11) - ) - ) - (local.set $$and - (i32.and - (local.get $$add2) - (i32.const -8) - ) - ) - (local.set $$cond - (if (result i32) - (local.get $$cmp1) - (i32.const 16) - (local.get $$and) - ) - ) - (local.set $$shr - (i32.shr_u - (local.get $$cond) - (i32.const 3) - ) - ) - (local.set $$0 - (i32.load - (i32.const 176) - ) - ) - (local.set $$shr3 - (i32.shr_u - (local.get $$0) - (local.get $$shr) - ) - ) - (local.set $$and4 - (i32.and - (local.get $$shr3) - (i32.const 3) - ) - ) - (local.set $$cmp5 - (i32.eq - (local.get $$and4) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp5) - ) - (block - (local.set $$neg - (i32.and - (local.get $$shr3) - (i32.const 1) - ) - ) - (local.set $$and7 - (i32.xor - (local.get $$neg) - (i32.const 1) - ) - ) - (local.set $$add8 - (i32.add - (local.get $$and7) - (local.get $$shr) - ) - ) - (local.set $$shl - (i32.shl - (local.get $$add8) - (i32.const 1) - ) - ) - (local.set $$arrayidx - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl) - (i32.const 2) - ) - ) - ) - (local.set $$1 - (i32.add - (local.get $$arrayidx) - (i32.const 8) - ) - ) - (local.set $$2 - (i32.load - (local.get $$1) - ) - ) - (local.set $$fd9 - (i32.add - (local.get $$2) - (i32.const 8) - ) - ) - (local.set $$3 - (i32.load - (local.get $$fd9) - ) - ) - (local.set $$cmp10 - (i32.eq - (local.get $$arrayidx) - (local.get $$3) - ) - ) - (block $do-once0 - (if - (local.get $$cmp10) - (block - (local.set $$shl12 - (i32.shl - (i32.const 1) - (local.get $$add8) - ) - ) - (local.set $$neg13 - (i32.xor - (local.get $$shl12) - (i32.const -1) - ) - ) - (local.set $$and14 - (i32.and - (local.get $$0) - (local.get $$neg13) - ) - ) - (i32.store - (i32.const 176) - (local.get $$and14) - ) - ) - (block - (local.set $$4 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp15 - (i32.lt_u - (local.get $$3) - (local.get $$4) - ) - ) - (if - (local.get $$cmp15) - (call $_abort) - ) - (local.set $$bk - (i32.add - (local.get $$3) - (i32.const 12) - ) - ) - (local.set $$5 - (i32.load - (local.get $$bk) - ) - ) - (local.set $$cmp16 - (i32.eq - (local.get $$5) - (local.get $$2) - ) - ) - (if - (local.get $$cmp16) - (block - (i32.store - (local.get $$bk) - (local.get $$arrayidx) - ) - (i32.store - (local.get $$1) - (local.get $$3) - ) - (br $do-once0) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$shl22 - (i32.shl - (local.get $$add8) - (i32.const 3) - ) - ) - (local.set $$or23 - (i32.or - (local.get $$shl22) - (i32.const 3) - ) - ) - (local.set $$head - (i32.add - (local.get $$2) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head) - (local.get $$or23) - ) - (local.set $$add$ptr - (i32.add - (local.get $$2) - (local.get $$shl22) - ) - ) - (local.set $$head25 - (i32.add - (local.get $$add$ptr) - (i32.const 4) - ) - ) - (local.set $$6 - (i32.load - (local.get $$head25) - ) - ) - (local.set $$or26 - (i32.or - (local.get $$6) - (i32.const 1) - ) - ) - (i32.store - (local.get $$head25) - (local.get $$or26) - ) - (local.set $$retval$0 - (local.get $$fd9) - ) - (return - (local.get $$retval$0) - ) - ) - ) - (local.set $$7 - (i32.load - (i32.const 184) - ) - ) - (local.set $$cmp29 - (i32.gt_u - (local.get $$cond) - (local.get $$7) - ) - ) - (if - (local.get $$cmp29) - (block - (local.set $$cmp31 - (i32.eq - (local.get $$shr3) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp31) - ) - (block - (local.set $$shl35 - (i32.shl - (local.get $$shr3) - (local.get $$shr) - ) - ) - (local.set $$shl37 - (i32.shl - (i32.const 2) - (local.get $$shr) - ) - ) - (local.set $$sub - (i32.sub - (i32.const 0) - (local.get $$shl37) - ) - ) - (local.set $$or40 - (i32.or - (local.get $$shl37) - (local.get $$sub) - ) - ) - (local.set $$and41 - (i32.and - (local.get $$shl35) - (local.get $$or40) - ) - ) - (local.set $$sub42 - (i32.sub - (i32.const 0) - (local.get $$and41) - ) - ) - (local.set $$and43 - (i32.and - (local.get $$and41) - (local.get $$sub42) - ) - ) - (local.set $$sub44 - (i32.add - (local.get $$and43) - (i32.const -1) - ) - ) - (local.set $$shr45 - (i32.shr_u - (local.get $$sub44) - (i32.const 12) - ) - ) - (local.set $$and46 - (i32.and - (local.get $$shr45) - (i32.const 16) - ) - ) - (local.set $$shr47 - (i32.shr_u - (local.get $$sub44) - (local.get $$and46) - ) - ) - (local.set $$shr48 - (i32.shr_u - (local.get $$shr47) - (i32.const 5) - ) - ) - (local.set $$and49 - (i32.and - (local.get $$shr48) - (i32.const 8) - ) - ) - (local.set $$add50 - (i32.or - (local.get $$and49) - (local.get $$and46) - ) - ) - (local.set $$shr51 - (i32.shr_u - (local.get $$shr47) - (local.get $$and49) - ) - ) - (local.set $$shr52 - (i32.shr_u - (local.get $$shr51) - (i32.const 2) - ) - ) - (local.set $$and53 - (i32.and - (local.get $$shr52) - (i32.const 4) - ) - ) - (local.set $$add54 - (i32.or - (local.get $$add50) - (local.get $$and53) - ) - ) - (local.set $$shr55 - (i32.shr_u - (local.get $$shr51) - (local.get $$and53) - ) - ) - (local.set $$shr56 - (i32.shr_u - (local.get $$shr55) - (i32.const 1) - ) - ) - (local.set $$and57 - (i32.and - (local.get $$shr56) - (i32.const 2) - ) - ) - (local.set $$add58 - (i32.or - (local.get $$add54) - (local.get $$and57) - ) - ) - (local.set $$shr59 - (i32.shr_u - (local.get $$shr55) - (local.get $$and57) - ) - ) - (local.set $$shr60 - (i32.shr_u - (local.get $$shr59) - (i32.const 1) - ) - ) - (local.set $$and61 - (i32.and - (local.get $$shr60) - (i32.const 1) - ) - ) - (local.set $$add62 - (i32.or - (local.get $$add58) - (local.get $$and61) - ) - ) - (local.set $$shr63 - (i32.shr_u - (local.get $$shr59) - (local.get $$and61) - ) - ) - (local.set $$add64 - (i32.add - (local.get $$add62) - (local.get $$shr63) - ) - ) - (local.set $$shl65 - (i32.shl - (local.get $$add64) - (i32.const 1) - ) - ) - (local.set $$arrayidx66 - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl65) - (i32.const 2) - ) - ) - ) - (local.set $$8 - (i32.add - (local.get $$arrayidx66) - (i32.const 8) - ) - ) - (local.set $$9 - (i32.load - (local.get $$8) - ) - ) - (local.set $$fd69 - (i32.add - (local.get $$9) - (i32.const 8) - ) - ) - (local.set $$10 - (i32.load - (local.get $$fd69) - ) - ) - (local.set $$cmp70 - (i32.eq - (local.get $$arrayidx66) - (local.get $$10) - ) - ) - (block $do-once2 - (if - (local.get $$cmp70) - (block - (local.set $$shl72 - (i32.shl - (i32.const 1) - (local.get $$add64) - ) - ) - (local.set $$neg73 - (i32.xor - (local.get $$shl72) - (i32.const -1) - ) - ) - (local.set $$and74 - (i32.and - (local.get $$0) - (local.get $$neg73) - ) - ) - (i32.store - (i32.const 176) - (local.get $$and74) - ) - (local.set $$13 - (local.get $$7) - ) - ) - (block - (local.set $$11 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp76 - (i32.lt_u - (local.get $$10) - (local.get $$11) - ) - ) - (if - (local.get $$cmp76) - (call $_abort) - ) - (local.set $$bk78 - (i32.add - (local.get $$10) - (i32.const 12) - ) - ) - (local.set $$12 - (i32.load - (local.get $$bk78) - ) - ) - (local.set $$cmp79 - (i32.eq - (local.get $$12) - (local.get $$9) - ) - ) - (if - (local.get $$cmp79) - (block - (i32.store - (local.get $$bk78) - (local.get $$arrayidx66) - ) - (i32.store - (local.get $$8) - (local.get $$10) - ) - (local.set $$$pre - (i32.load - (i32.const 184) - ) - ) - (local.set $$13 - (local.get $$$pre) - ) - (br $do-once2) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$shl90 - (i32.shl - (local.get $$add64) - (i32.const 3) - ) - ) - (local.set $$sub91 - (i32.sub - (local.get $$shl90) - (local.get $$cond) - ) - ) - (local.set $$or93 - (i32.or - (local.get $$cond) - (i32.const 3) - ) - ) - (local.set $$head94 - (i32.add - (local.get $$9) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head94) - (local.get $$or93) - ) - (local.set $$add$ptr95 - (i32.add - (local.get $$9) - (local.get $$cond) - ) - ) - (local.set $$or96 - (i32.or - (local.get $$sub91) - (i32.const 1) - ) - ) - (local.set $$head97 - (i32.add - (local.get $$add$ptr95) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head97) - (local.get $$or96) - ) - (local.set $$add$ptr98 - (i32.add - (local.get $$add$ptr95) - (local.get $$sub91) - ) - ) - (i32.store - (local.get $$add$ptr98) - (local.get $$sub91) - ) - (local.set $$cmp99 - (i32.eq - (local.get $$13) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp99) - ) - (block - (local.set $$14 - (i32.load - (i32.const 196) - ) - ) - (local.set $$shr101 - (i32.shr_u - (local.get $$13) - (i32.const 3) - ) - ) - (local.set $$shl102 - (i32.shl - (local.get $$shr101) - (i32.const 1) - ) - ) - (local.set $$arrayidx103 - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl102) - (i32.const 2) - ) - ) - ) - (local.set $$15 - (i32.load - (i32.const 176) - ) - ) - (local.set $$shl105 - (i32.shl - (i32.const 1) - (local.get $$shr101) - ) - ) - (local.set $$and106 - (i32.and - (local.get $$15) - (local.get $$shl105) - ) - ) - (local.set $$tobool107 - (i32.eq - (local.get $$and106) - (i32.const 0) - ) - ) - (if - (local.get $$tobool107) - (block - (local.set $$or110 - (i32.or - (local.get $$15) - (local.get $$shl105) - ) - ) - (i32.store - (i32.const 176) - (local.get $$or110) - ) - (local.set $$$pre241 - (i32.add - (local.get $$arrayidx103) - (i32.const 8) - ) - ) - (local.set $$$pre$phiZ2D - (local.get $$$pre241) - ) - (local.set $$F104$0 - (local.get $$arrayidx103) - ) - ) - (block - (local.set $$16 - (i32.add - (local.get $$arrayidx103) - (i32.const 8) - ) - ) - (local.set $$17 - (i32.load - (local.get $$16) - ) - ) - (local.set $$18 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp113 - (i32.lt_u - (local.get $$17) - (local.get $$18) - ) - ) - (if - (local.get $$cmp113) - (call $_abort) - (block - (local.set $$$pre$phiZ2D - (local.get $$16) - ) - (local.set $$F104$0 - (local.get $$17) - ) - ) - ) - ) - ) - (i32.store - (local.get $$$pre$phiZ2D) - (local.get $$14) - ) - (local.set $$bk122 - (i32.add - (local.get $$F104$0) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk122) - (local.get $$14) - ) - (local.set $$fd123 - (i32.add - (local.get $$14) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd123) - (local.get $$F104$0) - ) - (local.set $$bk124 - (i32.add - (local.get $$14) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk124) - (local.get $$arrayidx103) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $$sub91) - ) - (i32.store - (i32.const 196) - (local.get $$add$ptr95) - ) - (local.set $$retval$0 - (local.get $$fd69) - ) - (return - (local.get $$retval$0) - ) - ) - ) - (local.set $$19 - (i32.load - (i32.const 180) - ) - ) - (local.set $$cmp128 - (i32.eq - (local.get $$19) - (i32.const 0) - ) - ) - (if - (local.get $$cmp128) - (local.set $$nb$0 - (local.get $$cond) - ) - (block - (local.set $$sub$i - (i32.sub - (i32.const 0) - (local.get $$19) - ) - ) - (local.set $$and$i - (i32.and - (local.get $$19) - (local.get $$sub$i) - ) - ) - (local.set $$sub2$i - (i32.add - (local.get $$and$i) - (i32.const -1) - ) - ) - (local.set $$shr$i - (i32.shr_u - (local.get $$sub2$i) - (i32.const 12) - ) - ) - (local.set $$and3$i - (i32.and - (local.get $$shr$i) - (i32.const 16) - ) - ) - (local.set $$shr4$i - (i32.shr_u - (local.get $$sub2$i) - (local.get $$and3$i) - ) - ) - (local.set $$shr5$i - (i32.shr_u - (local.get $$shr4$i) - (i32.const 5) - ) - ) - (local.set $$and6$i - (i32.and - (local.get $$shr5$i) - (i32.const 8) - ) - ) - (local.set $$add$i - (i32.or - (local.get $$and6$i) - (local.get $$and3$i) - ) - ) - (local.set $$shr7$i - (i32.shr_u - (local.get $$shr4$i) - (local.get $$and6$i) - ) - ) - (local.set $$shr8$i - (i32.shr_u - (local.get $$shr7$i) - (i32.const 2) - ) - ) - (local.set $$and9$i - (i32.and - (local.get $$shr8$i) - (i32.const 4) - ) - ) - (local.set $$add10$i - (i32.or - (local.get $$add$i) - (local.get $$and9$i) - ) - ) - (local.set $$shr11$i - (i32.shr_u - (local.get $$shr7$i) - (local.get $$and9$i) - ) - ) - (local.set $$shr12$i - (i32.shr_u - (local.get $$shr11$i) - (i32.const 1) - ) - ) - (local.set $$and13$i - (i32.and - (local.get $$shr12$i) - (i32.const 2) - ) - ) - (local.set $$add14$i - (i32.or - (local.get $$add10$i) - (local.get $$and13$i) - ) - ) - (local.set $$shr15$i - (i32.shr_u - (local.get $$shr11$i) - (local.get $$and13$i) - ) - ) - (local.set $$shr16$i - (i32.shr_u - (local.get $$shr15$i) - (i32.const 1) - ) - ) - (local.set $$and17$i - (i32.and - (local.get $$shr16$i) - (i32.const 1) - ) - ) - (local.set $$add18$i - (i32.or - (local.get $$add14$i) - (local.get $$and17$i) - ) - ) - (local.set $$shr19$i - (i32.shr_u - (local.get $$shr15$i) - (local.get $$and17$i) - ) - ) - (local.set $$add20$i - (i32.add - (local.get $$add18$i) - (local.get $$shr19$i) - ) - ) - (local.set $$arrayidx$i - (i32.add - (i32.const 480) - (i32.shl - (local.get $$add20$i) - (i32.const 2) - ) - ) - ) - (local.set $$20 - (i32.load - (local.get $$arrayidx$i) - ) - ) - (local.set $$head$i - (i32.add - (local.get $$20) - (i32.const 4) - ) - ) - (local.set $$21 - (i32.load - (local.get $$head$i) - ) - ) - (local.set $$and21$i - (i32.and - (local.get $$21) - (i32.const -8) - ) - ) - (local.set $$sub22$i - (i32.sub - (local.get $$and21$i) - (local.get $$cond) - ) - ) - (local.set $$rsize$0$i - (local.get $$sub22$i) - ) - (local.set $$t$0$i - (local.get $$20) - ) - (local.set $$v$0$i - (local.get $$20) - ) - (loop $while-in - (block $while-out - (local.set $$arrayidx23$i - (i32.add - (local.get $$t$0$i) - (i32.const 16) - ) - ) - (local.set $$22 - (i32.load - (local.get $$arrayidx23$i) - ) - ) - (local.set $$cmp$i - (i32.eq - (local.get $$22) - (i32.const 0) - ) - ) - (if - (local.get $$cmp$i) - (block - (local.set $$arrayidx27$i - (i32.add - (local.get $$t$0$i) - (i32.const 20) - ) - ) - (local.set $$23 - (i32.load - (local.get $$arrayidx27$i) - ) - ) - (local.set $$cmp28$i - (i32.eq - (local.get $$23) - (i32.const 0) - ) - ) - (if - (local.get $$cmp28$i) - (block - (local.set $$rsize$0$i$lcssa - (local.get $$rsize$0$i) - ) - (local.set $$v$0$i$lcssa - (local.get $$v$0$i) - ) - (br $while-out) - ) - (local.set $$cond4$i - (local.get $$23) - ) - ) - ) - (local.set $$cond4$i - (local.get $$22) - ) - ) - (local.set $$head29$i - (i32.add - (local.get $$cond4$i) - (i32.const 4) - ) - ) - (local.set $$24 - (i32.load - (local.get $$head29$i) - ) - ) - (local.set $$and30$i - (i32.and - (local.get $$24) - (i32.const -8) - ) - ) - (local.set $$sub31$i - (i32.sub - (local.get $$and30$i) - (local.get $$cond) - ) - ) - (local.set $$cmp32$i - (i32.lt_u - (local.get $$sub31$i) - (local.get $$rsize$0$i) - ) - ) - (local.set $$sub31$rsize$0$i - (if (result i32) - (local.get $$cmp32$i) - (local.get $$sub31$i) - (local.get $$rsize$0$i) - ) - ) - (local.set $$cond$v$0$i - (if (result i32) - (local.get $$cmp32$i) - (local.get $$cond4$i) - (local.get $$v$0$i) - ) - ) - (local.set $$rsize$0$i - (local.get $$sub31$rsize$0$i) - ) - (local.set $$t$0$i - (local.get $$cond4$i) - ) - (local.set $$v$0$i - (local.get $$cond$v$0$i) - ) - (br $while-in) - ) - ) - (local.set $$25 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp33$i - (i32.lt_u - (local.get $$v$0$i$lcssa) - (local.get $$25) - ) - ) - (if - (local.get $$cmp33$i) - (call $_abort) - ) - (local.set $$add$ptr$i - (i32.add - (local.get $$v$0$i$lcssa) - (local.get $$cond) - ) - ) - (local.set $$cmp35$i - (i32.lt_u - (local.get $$v$0$i$lcssa) - (local.get $$add$ptr$i) - ) - ) - (if - (i32.eqz - (local.get $$cmp35$i) - ) - (call $_abort) - ) - (local.set $$parent$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 24) - ) - ) - (local.set $$26 - (i32.load - (local.get $$parent$i) - ) - ) - (local.set $$bk$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 12) - ) - ) - (local.set $$27 - (i32.load - (local.get $$bk$i) - ) - ) - (local.set $$cmp40$i - (i32.eq - (local.get $$27) - (local.get $$v$0$i$lcssa) - ) - ) - (block $do-once4 - (if - (local.get $$cmp40$i) - (block - (local.set $$arrayidx61$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 20) - ) - ) - (local.set $$31 - (i32.load - (local.get $$arrayidx61$i) - ) - ) - (local.set $$cmp62$i - (i32.eq - (local.get $$31) - (i32.const 0) - ) - ) - (if - (local.get $$cmp62$i) - (block - (local.set $$arrayidx65$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 16) - ) - ) - (local.set $$32 - (i32.load - (local.get $$arrayidx65$i) - ) - ) - (local.set $$cmp66$i - (i32.eq - (local.get $$32) - (i32.const 0) - ) - ) - (if - (local.get $$cmp66$i) - (block - (local.set $$R$3$i - (i32.const 0) - ) - (br $do-once4) - ) - (block - (local.set $$R$1$i - (local.get $$32) - ) - (local.set $$RP$1$i - (local.get $$arrayidx65$i) - ) - ) - ) - ) - (block - (local.set $$R$1$i - (local.get $$31) - ) - (local.set $$RP$1$i - (local.get $$arrayidx61$i) - ) - ) - ) - (loop $while-in7 - (block $while-out6 - (local.set $$arrayidx71$i - (i32.add - (local.get $$R$1$i) - (i32.const 20) - ) - ) - (local.set $$33 - (i32.load - (local.get $$arrayidx71$i) - ) - ) - (local.set $$cmp72$i - (i32.eq - (local.get $$33) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp72$i) - ) - (block - (local.set $$R$1$i - (local.get $$33) - ) - (local.set $$RP$1$i - (local.get $$arrayidx71$i) - ) - (br $while-in7) - ) - ) - (local.set $$arrayidx75$i - (i32.add - (local.get $$R$1$i) - (i32.const 16) - ) - ) - (local.set $$34 - (i32.load - (local.get $$arrayidx75$i) - ) - ) - (local.set $$cmp76$i - (i32.eq - (local.get $$34) - (i32.const 0) - ) - ) - (if - (local.get $$cmp76$i) - (block - (local.set $$R$1$i$lcssa - (local.get $$R$1$i) - ) - (local.set $$RP$1$i$lcssa - (local.get $$RP$1$i) - ) - (br $while-out6) - ) - (block - (local.set $$R$1$i - (local.get $$34) - ) - (local.set $$RP$1$i - (local.get $$arrayidx75$i) - ) - ) - ) - (br $while-in7) - ) - ) - (local.set $$cmp81$i - (i32.lt_u - (local.get $$RP$1$i$lcssa) - (local.get $$25) - ) - ) - (if - (local.get $$cmp81$i) - (call $_abort) - (block - (i32.store - (local.get $$RP$1$i$lcssa) - (i32.const 0) - ) - (local.set $$R$3$i - (local.get $$R$1$i$lcssa) - ) - (br $do-once4) - ) - ) - ) - (block - (local.set $$fd$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 8) - ) - ) - (local.set $$28 - (i32.load - (local.get $$fd$i) - ) - ) - (local.set $$cmp45$i - (i32.lt_u - (local.get $$28) - (local.get $$25) - ) - ) - (if - (local.get $$cmp45$i) - (call $_abort) - ) - (local.set $$bk47$i - (i32.add - (local.get $$28) - (i32.const 12) - ) - ) - (local.set $$29 - (i32.load - (local.get $$bk47$i) - ) - ) - (local.set $$cmp48$i - (i32.eq - (local.get $$29) - (local.get $$v$0$i$lcssa) - ) - ) - (if - (i32.eqz - (local.get $$cmp48$i) - ) - (call $_abort) - ) - (local.set $$fd50$i - (i32.add - (local.get $$27) - (i32.const 8) - ) - ) - (local.set $$30 - (i32.load - (local.get $$fd50$i) - ) - ) - (local.set $$cmp51$i - (i32.eq - (local.get $$30) - (local.get $$v$0$i$lcssa) - ) - ) - (if - (local.get $$cmp51$i) - (block - (i32.store - (local.get $$bk47$i) - (local.get $$27) - ) - (i32.store - (local.get $$fd50$i) - (local.get $$28) - ) - (local.set $$R$3$i - (local.get $$27) - ) - (br $do-once4) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$cmp90$i - (i32.eq - (local.get $$26) - (i32.const 0) - ) - ) - (block $do-once8 - (if - (i32.eqz - (local.get $$cmp90$i) - ) - (block - (local.set $$index$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 28) - ) - ) - (local.set $$35 - (i32.load - (local.get $$index$i) - ) - ) - (local.set $$arrayidx94$i - (i32.add - (i32.const 480) - (i32.shl - (local.get $$35) - (i32.const 2) - ) - ) - ) - (local.set $$36 - (i32.load - (local.get $$arrayidx94$i) - ) - ) - (local.set $$cmp95$i - (i32.eq - (local.get $$v$0$i$lcssa) - (local.get $$36) - ) - ) - (if - (local.get $$cmp95$i) - (block - (i32.store - (local.get $$arrayidx94$i) - (local.get $$R$3$i) - ) - (local.set $$cond2$i - (i32.eq - (local.get $$R$3$i) - (i32.const 0) - ) - ) - (if - (local.get $$cond2$i) - (block - (local.set $$shl$i - (i32.shl - (i32.const 1) - (local.get $$35) - ) - ) - (local.set $$neg$i - (i32.xor - (local.get $$shl$i) - (i32.const -1) - ) - ) - (local.set $$37 - (i32.load - (i32.const 180) - ) - ) - (local.set $$and103$i - (i32.and - (local.get $$37) - (local.get $$neg$i) - ) - ) - (i32.store - (i32.const 180) - (local.get $$and103$i) - ) - (br $do-once8) - ) - ) - ) - (block - (local.set $$38 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp107$i - (i32.lt_u - (local.get $$26) - (local.get $$38) - ) - ) - (if - (local.get $$cmp107$i) - (call $_abort) - ) - (local.set $$arrayidx113$i - (i32.add - (local.get $$26) - (i32.const 16) - ) - ) - (local.set $$39 - (i32.load - (local.get $$arrayidx113$i) - ) - ) - (local.set $$cmp114$i - (i32.eq - (local.get $$39) - (local.get $$v$0$i$lcssa) - ) - ) - (if - (local.get $$cmp114$i) - (i32.store - (local.get $$arrayidx113$i) - (local.get $$R$3$i) - ) - (block - (local.set $$arrayidx121$i - (i32.add - (local.get $$26) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx121$i) - (local.get $$R$3$i) - ) - ) - ) - (local.set $$cmp126$i - (i32.eq - (local.get $$R$3$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp126$i) - (br $do-once8) - ) - ) - ) - (local.set $$40 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp130$i - (i32.lt_u - (local.get $$R$3$i) - (local.get $$40) - ) - ) - (if - (local.get $$cmp130$i) - (call $_abort) - ) - (local.set $$parent135$i - (i32.add - (local.get $$R$3$i) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent135$i) - (local.get $$26) - ) - (local.set $$arrayidx137$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 16) - ) - ) - (local.set $$41 - (i32.load - (local.get $$arrayidx137$i) - ) - ) - (local.set $$cmp138$i - (i32.eq - (local.get $$41) - (i32.const 0) - ) - ) - (block $do-once10 - (if - (i32.eqz - (local.get $$cmp138$i) - ) - (block - (local.set $$cmp142$i - (i32.lt_u - (local.get $$41) - (local.get $$40) - ) - ) - (if - (local.get $$cmp142$i) - (call $_abort) - (block - (local.set $$arrayidx148$i - (i32.add - (local.get $$R$3$i) - (i32.const 16) - ) - ) - (i32.store - (local.get $$arrayidx148$i) - (local.get $$41) - ) - (local.set $$parent149$i - (i32.add - (local.get $$41) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent149$i) - (local.get $$R$3$i) - ) - (br $do-once10) - ) - ) - ) - ) - ) - (local.set $$arrayidx154$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 20) - ) - ) - (local.set $$42 - (i32.load - (local.get $$arrayidx154$i) - ) - ) - (local.set $$cmp155$i - (i32.eq - (local.get $$42) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp155$i) - ) - (block - (local.set $$43 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp159$i - (i32.lt_u - (local.get $$42) - (local.get $$43) - ) - ) - (if - (local.get $$cmp159$i) - (call $_abort) - (block - (local.set $$arrayidx165$i - (i32.add - (local.get $$R$3$i) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx165$i) - (local.get $$42) - ) - (local.set $$parent166$i - (i32.add - (local.get $$42) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent166$i) - (local.get $$R$3$i) - ) - (br $do-once8) - ) - ) - ) - ) - ) - ) - ) - (local.set $$cmp174$i - (i32.lt_u - (local.get $$rsize$0$i$lcssa) - (i32.const 16) - ) - ) - (if - (local.get $$cmp174$i) - (block - (local.set $$add177$i - (i32.add - (local.get $$rsize$0$i$lcssa) - (local.get $$cond) - ) - ) - (local.set $$or178$i - (i32.or - (local.get $$add177$i) - (i32.const 3) - ) - ) - (local.set $$head179$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head179$i) - (local.get $$or178$i) - ) - (local.set $$add$ptr181$i - (i32.add - (local.get $$v$0$i$lcssa) - (local.get $$add177$i) - ) - ) - (local.set $$head182$i - (i32.add - (local.get $$add$ptr181$i) - (i32.const 4) - ) - ) - (local.set $$44 - (i32.load - (local.get $$head182$i) - ) - ) - (local.set $$or183$i - (i32.or - (local.get $$44) - (i32.const 1) - ) - ) - (i32.store - (local.get $$head182$i) - (local.get $$or183$i) - ) - ) - (block - (local.set $$or186$i - (i32.or - (local.get $$cond) - (i32.const 3) - ) - ) - (local.set $$head187$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head187$i) - (local.get $$or186$i) - ) - (local.set $$or188$i - (i32.or - (local.get $$rsize$0$i$lcssa) - (i32.const 1) - ) - ) - (local.set $$head189$i - (i32.add - (local.get $$add$ptr$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head189$i) - (local.get $$or188$i) - ) - (local.set $$add$ptr190$i - (i32.add - (local.get $$add$ptr$i) - (local.get $$rsize$0$i$lcssa) - ) - ) - (i32.store - (local.get $$add$ptr190$i) - (local.get $$rsize$0$i$lcssa) - ) - (local.set $$45 - (i32.load - (i32.const 184) - ) - ) - (local.set $$cmp191$i - (i32.eq - (local.get $$45) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp191$i) - ) - (block - (local.set $$46 - (i32.load - (i32.const 196) - ) - ) - (local.set $$shr194$i - (i32.shr_u - (local.get $$45) - (i32.const 3) - ) - ) - (local.set $$shl195$i - (i32.shl - (local.get $$shr194$i) - (i32.const 1) - ) - ) - (local.set $$arrayidx196$i - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl195$i) - (i32.const 2) - ) - ) - ) - (local.set $$47 - (i32.load - (i32.const 176) - ) - ) - (local.set $$shl198$i - (i32.shl - (i32.const 1) - (local.get $$shr194$i) - ) - ) - (local.set $$and199$i - (i32.and - (local.get $$47) - (local.get $$shl198$i) - ) - ) - (local.set $$tobool200$i - (i32.eq - (local.get $$and199$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool200$i) - (block - (local.set $$or204$i - (i32.or - (local.get $$47) - (local.get $$shl198$i) - ) - ) - (i32.store - (i32.const 176) - (local.get $$or204$i) - ) - (local.set $$$pre$i - (i32.add - (local.get $$arrayidx196$i) - (i32.const 8) - ) - ) - (local.set $$$pre$phi$iZ2D - (local.get $$$pre$i) - ) - (local.set $$F197$0$i - (local.get $$arrayidx196$i) - ) - ) - (block - (local.set $$48 - (i32.add - (local.get $$arrayidx196$i) - (i32.const 8) - ) - ) - (local.set $$49 - (i32.load - (local.get $$48) - ) - ) - (local.set $$50 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp208$i - (i32.lt_u - (local.get $$49) - (local.get $$50) - ) - ) - (if - (local.get $$cmp208$i) - (call $_abort) - (block - (local.set $$$pre$phi$iZ2D - (local.get $$48) - ) - (local.set $$F197$0$i - (local.get $$49) - ) - ) - ) - ) - ) - (i32.store - (local.get $$$pre$phi$iZ2D) - (local.get $$46) - ) - (local.set $$bk218$i - (i32.add - (local.get $$F197$0$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk218$i) - (local.get $$46) - ) - (local.set $$fd219$i - (i32.add - (local.get $$46) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd219$i) - (local.get $$F197$0$i) - ) - (local.set $$bk220$i - (i32.add - (local.get $$46) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk220$i) - (local.get $$arrayidx196$i) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $$rsize$0$i$lcssa) - ) - (i32.store - (i32.const 196) - (local.get $$add$ptr$i) - ) - ) - ) - (local.set $$add$ptr225$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 8) - ) - ) - (local.set $$retval$0 - (local.get $$add$ptr225$i) - ) - (return - (local.get $$retval$0) - ) - ) - ) - ) - (local.set $$nb$0 - (local.get $$cond) - ) - ) - ) - (block - (local.set $$cmp139 - (i32.gt_u - (local.get $$bytes) - (i32.const -65) - ) - ) - (if - (local.get $$cmp139) - (local.set $$nb$0 - (i32.const -1) - ) - (block - (local.set $$add144 - (i32.add - (local.get $$bytes) - (i32.const 11) - ) - ) - (local.set $$and145 - (i32.and - (local.get $$add144) - (i32.const -8) - ) - ) - (local.set $$51 - (i32.load - (i32.const 180) - ) - ) - (local.set $$cmp146 - (i32.eq - (local.get $$51) - (i32.const 0) - ) - ) - (if - (local.get $$cmp146) - (local.set $$nb$0 - (local.get $$and145) - ) - (block - (local.set $$sub$i$138 - (i32.sub - (i32.const 0) - (local.get $$and145) - ) - ) - (local.set $$shr$i$139 - (i32.shr_u - (local.get $$add144) - (i32.const 8) - ) - ) - (local.set $$cmp$i$140 - (i32.eq - (local.get $$shr$i$139) - (i32.const 0) - ) - ) - (if - (local.get $$cmp$i$140) - (local.set $$idx$0$i - (i32.const 0) - ) - (block - (local.set $$cmp1$i - (i32.gt_u - (local.get $$and145) - (i32.const 16777215) - ) - ) - (if - (local.get $$cmp1$i) - (local.set $$idx$0$i - (i32.const 31) - ) - (block - (local.set $$sub4$i - (i32.add - (local.get $$shr$i$139) - (i32.const 1048320) - ) - ) - (local.set $$shr5$i$142 - (i32.shr_u - (local.get $$sub4$i) - (i32.const 16) - ) - ) - (local.set $$and$i$143 - (i32.and - (local.get $$shr5$i$142) - (i32.const 8) - ) - ) - (local.set $$shl$i$144 - (i32.shl - (local.get $$shr$i$139) - (local.get $$and$i$143) - ) - ) - (local.set $$sub6$i - (i32.add - (local.get $$shl$i$144) - (i32.const 520192) - ) - ) - (local.set $$shr7$i$145 - (i32.shr_u - (local.get $$sub6$i) - (i32.const 16) - ) - ) - (local.set $$and8$i - (i32.and - (local.get $$shr7$i$145) - (i32.const 4) - ) - ) - (local.set $$add$i$146 - (i32.or - (local.get $$and8$i) - (local.get $$and$i$143) - ) - ) - (local.set $$shl9$i - (i32.shl - (local.get $$shl$i$144) - (local.get $$and8$i) - ) - ) - (local.set $$sub10$i - (i32.add - (local.get $$shl9$i) - (i32.const 245760) - ) - ) - (local.set $$shr11$i$147 - (i32.shr_u - (local.get $$sub10$i) - (i32.const 16) - ) - ) - (local.set $$and12$i - (i32.and - (local.get $$shr11$i$147) - (i32.const 2) - ) - ) - (local.set $$add13$i - (i32.or - (local.get $$add$i$146) - (local.get $$and12$i) - ) - ) - (local.set $$sub14$i - (i32.sub - (i32.const 14) - (local.get $$add13$i) - ) - ) - (local.set $$shl15$i - (i32.shl - (local.get $$shl9$i) - (local.get $$and12$i) - ) - ) - (local.set $$shr16$i$148 - (i32.shr_u - (local.get $$shl15$i) - (i32.const 15) - ) - ) - (local.set $$add17$i - (i32.add - (local.get $$sub14$i) - (local.get $$shr16$i$148) - ) - ) - (local.set $$shl18$i - (i32.shl - (local.get $$add17$i) - (i32.const 1) - ) - ) - (local.set $$add19$i - (i32.add - (local.get $$add17$i) - (i32.const 7) - ) - ) - (local.set $$shr20$i - (i32.shr_u - (local.get $$and145) - (local.get $$add19$i) - ) - ) - (local.set $$and21$i$149 - (i32.and - (local.get $$shr20$i) - (i32.const 1) - ) - ) - (local.set $$add22$i - (i32.or - (local.get $$and21$i$149) - (local.get $$shl18$i) - ) - ) - (local.set $$idx$0$i - (local.get $$add22$i) - ) - ) - ) - ) - ) - (local.set $$arrayidx$i$150 - (i32.add - (i32.const 480) - (i32.shl - (local.get $$idx$0$i) - (i32.const 2) - ) - ) - ) - (local.set $$52 - (i32.load - (local.get $$arrayidx$i$150) - ) - ) - (local.set $$cmp24$i - (i32.eq - (local.get $$52) - (i32.const 0) - ) - ) - (block $label$break$L123 - (if - (local.get $$cmp24$i) - (block - (local.set $$rsize$3$i - (local.get $$sub$i$138) - ) - (local.set $$t$2$i - (i32.const 0) - ) - (local.set $$v$3$i - (i32.const 0) - ) - (local.set $label - (i32.const 86) - ) - ) - (block - (local.set $$cmp26$i - (i32.eq - (local.get $$idx$0$i) - (i32.const 31) - ) - ) - (local.set $$shr27$i - (i32.shr_u - (local.get $$idx$0$i) - (i32.const 1) - ) - ) - (local.set $$sub30$i - (i32.sub - (i32.const 25) - (local.get $$shr27$i) - ) - ) - (local.set $$cond$i - (if (result i32) - (local.get $$cmp26$i) - (i32.const 0) - (local.get $$sub30$i) - ) - ) - (local.set $$shl31$i - (i32.shl - (local.get $$and145) - (local.get $$cond$i) - ) - ) - (local.set $$rsize$0$i$152 - (local.get $$sub$i$138) - ) - (local.set $$rst$0$i - (i32.const 0) - ) - (local.set $$sizebits$0$i - (local.get $$shl31$i) - ) - (local.set $$t$0$i$151 - (local.get $$52) - ) - (local.set $$v$0$i$153 - (i32.const 0) - ) - (loop $while-in14 - (block $while-out13 - (local.set $$head$i$154 - (i32.add - (local.get $$t$0$i$151) - (i32.const 4) - ) - ) - (local.set $$53 - (i32.load - (local.get $$head$i$154) - ) - ) - (local.set $$and32$i - (i32.and - (local.get $$53) - (i32.const -8) - ) - ) - (local.set $$sub33$i - (i32.sub - (local.get $$and32$i) - (local.get $$and145) - ) - ) - (local.set $$cmp34$i - (i32.lt_u - (local.get $$sub33$i) - (local.get $$rsize$0$i$152) - ) - ) - (if - (local.get $$cmp34$i) - (block - (local.set $$cmp36$i - (i32.eq - (local.get $$and32$i) - (local.get $$and145) - ) - ) - (if - (local.get $$cmp36$i) - (block - (local.set $$rsize$49$i - (local.get $$sub33$i) - ) - (local.set $$t$48$i - (local.get $$t$0$i$151) - ) - (local.set $$v$410$i - (local.get $$t$0$i$151) - ) - (local.set $label - (i32.const 90) - ) - (br $label$break$L123) - ) - (block - (local.set $$rsize$1$i - (local.get $$sub33$i) - ) - (local.set $$v$1$i - (local.get $$t$0$i$151) - ) - ) - ) - ) - (block - (local.set $$rsize$1$i - (local.get $$rsize$0$i$152) - ) - (local.set $$v$1$i - (local.get $$v$0$i$153) - ) - ) - ) - (local.set $$arrayidx40$i - (i32.add - (local.get $$t$0$i$151) - (i32.const 20) - ) - ) - (local.set $$54 - (i32.load - (local.get $$arrayidx40$i) - ) - ) - (local.set $$shr41$i - (i32.shr_u - (local.get $$sizebits$0$i) - (i32.const 31) - ) - ) - (local.set $$arrayidx44$i - (i32.add - (i32.add - (local.get $$t$0$i$151) - (i32.const 16) - ) - (i32.shl - (local.get $$shr41$i) - (i32.const 2) - ) - ) - ) - (local.set $$55 - (i32.load - (local.get $$arrayidx44$i) - ) - ) - (local.set $$cmp45$i$155 - (i32.eq - (local.get $$54) - (i32.const 0) - ) - ) - (local.set $$cmp46$i - (i32.eq - (local.get $$54) - (local.get $$55) - ) - ) - (local.set $$or$cond1$i - (i32.or - (local.get $$cmp45$i$155) - (local.get $$cmp46$i) - ) - ) - (local.set $$rst$1$i - (if (result i32) - (local.get $$or$cond1$i) - (local.get $$rst$0$i) - (local.get $$54) - ) - ) - (local.set $$cmp49$i - (i32.eq - (local.get $$55) - (i32.const 0) - ) - ) - (local.set $$56 - (i32.and - (local.get $$cmp49$i) - (i32.const 1) - ) - ) - (local.set $$shl52$i - (i32.xor - (local.get $$56) - (i32.const 1) - ) - ) - (local.set $$sizebits$0$shl52$i - (i32.shl - (local.get $$sizebits$0$i) - (local.get $$shl52$i) - ) - ) - (if - (local.get $$cmp49$i) - (block - (local.set $$rsize$3$i - (local.get $$rsize$1$i) - ) - (local.set $$t$2$i - (local.get $$rst$1$i) - ) - (local.set $$v$3$i - (local.get $$v$1$i) - ) - (local.set $label - (i32.const 86) - ) - (br $while-out13) - ) - (block - (local.set $$rsize$0$i$152 - (local.get $$rsize$1$i) - ) - (local.set $$rst$0$i - (local.get $$rst$1$i) - ) - (local.set $$sizebits$0$i - (local.get $$sizebits$0$shl52$i) - ) - (local.set $$t$0$i$151 - (local.get $$55) - ) - (local.set $$v$0$i$153 - (local.get $$v$1$i) - ) - ) - ) - (br $while-in14) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 86) - ) - (block - (local.set $$cmp55$i - (i32.eq - (local.get $$t$2$i) - (i32.const 0) - ) - ) - (local.set $$cmp57$i - (i32.eq - (local.get $$v$3$i) - (i32.const 0) - ) - ) - (local.set $$or$cond$i - (i32.and - (local.get $$cmp55$i) - (local.get $$cmp57$i) - ) - ) - (if - (local.get $$or$cond$i) - (block - (local.set $$shl60$i - (i32.shl - (i32.const 2) - (local.get $$idx$0$i) - ) - ) - (local.set $$sub63$i - (i32.sub - (i32.const 0) - (local.get $$shl60$i) - ) - ) - (local.set $$or$i - (i32.or - (local.get $$shl60$i) - (local.get $$sub63$i) - ) - ) - (local.set $$and64$i - (i32.and - (local.get $$51) - (local.get $$or$i) - ) - ) - (local.set $$cmp65$i - (i32.eq - (local.get $$and64$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp65$i) - (block - (local.set $$nb$0 - (local.get $$and145) - ) - (br $do-once) - ) - ) - (local.set $$sub67$i - (i32.sub - (i32.const 0) - (local.get $$and64$i) - ) - ) - (local.set $$and68$i - (i32.and - (local.get $$and64$i) - (local.get $$sub67$i) - ) - ) - (local.set $$sub70$i - (i32.add - (local.get $$and68$i) - (i32.const -1) - ) - ) - (local.set $$shr72$i - (i32.shr_u - (local.get $$sub70$i) - (i32.const 12) - ) - ) - (local.set $$and73$i - (i32.and - (local.get $$shr72$i) - (i32.const 16) - ) - ) - (local.set $$shr75$i - (i32.shr_u - (local.get $$sub70$i) - (local.get $$and73$i) - ) - ) - (local.set $$shr76$i - (i32.shr_u - (local.get $$shr75$i) - (i32.const 5) - ) - ) - (local.set $$and77$i - (i32.and - (local.get $$shr76$i) - (i32.const 8) - ) - ) - (local.set $$add78$i - (i32.or - (local.get $$and77$i) - (local.get $$and73$i) - ) - ) - (local.set $$shr79$i - (i32.shr_u - (local.get $$shr75$i) - (local.get $$and77$i) - ) - ) - (local.set $$shr80$i - (i32.shr_u - (local.get $$shr79$i) - (i32.const 2) - ) - ) - (local.set $$and81$i - (i32.and - (local.get $$shr80$i) - (i32.const 4) - ) - ) - (local.set $$add82$i - (i32.or - (local.get $$add78$i) - (local.get $$and81$i) - ) - ) - (local.set $$shr83$i - (i32.shr_u - (local.get $$shr79$i) - (local.get $$and81$i) - ) - ) - (local.set $$shr84$i - (i32.shr_u - (local.get $$shr83$i) - (i32.const 1) - ) - ) - (local.set $$and85$i - (i32.and - (local.get $$shr84$i) - (i32.const 2) - ) - ) - (local.set $$add86$i - (i32.or - (local.get $$add82$i) - (local.get $$and85$i) - ) - ) - (local.set $$shr87$i - (i32.shr_u - (local.get $$shr83$i) - (local.get $$and85$i) - ) - ) - (local.set $$shr88$i - (i32.shr_u - (local.get $$shr87$i) - (i32.const 1) - ) - ) - (local.set $$and89$i - (i32.and - (local.get $$shr88$i) - (i32.const 1) - ) - ) - (local.set $$add90$i - (i32.or - (local.get $$add86$i) - (local.get $$and89$i) - ) - ) - (local.set $$shr91$i - (i32.shr_u - (local.get $$shr87$i) - (local.get $$and89$i) - ) - ) - (local.set $$add92$i - (i32.add - (local.get $$add90$i) - (local.get $$shr91$i) - ) - ) - (local.set $$arrayidx94$i$156 - (i32.add - (i32.const 480) - (i32.shl - (local.get $$add92$i) - (i32.const 2) - ) - ) - ) - (local.set $$57 - (i32.load - (local.get $$arrayidx94$i$156) - ) - ) - (local.set $$t$4$ph$i - (local.get $$57) - ) - ) - (local.set $$t$4$ph$i - (local.get $$t$2$i) - ) - ) - (local.set $$cmp97$7$i - (i32.eq - (local.get $$t$4$ph$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp97$7$i) - (block - (local.set $$rsize$4$lcssa$i - (local.get $$rsize$3$i) - ) - (local.set $$v$4$lcssa$i - (local.get $$v$3$i) - ) - ) - (block - (local.set $$rsize$49$i - (local.get $$rsize$3$i) - ) - (local.set $$t$48$i - (local.get $$t$4$ph$i) - ) - (local.set $$v$410$i - (local.get $$v$3$i) - ) - (local.set $label - (i32.const 90) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 90) - ) - (loop $while-in16 - (block $while-out15 - (local.set $label - (i32.const 0) - ) - (local.set $$head99$i - (i32.add - (local.get $$t$48$i) - (i32.const 4) - ) - ) - (local.set $$58 - (i32.load - (local.get $$head99$i) - ) - ) - (local.set $$and100$i - (i32.and - (local.get $$58) - (i32.const -8) - ) - ) - (local.set $$sub101$i - (i32.sub - (local.get $$and100$i) - (local.get $$and145) - ) - ) - (local.set $$cmp102$i - (i32.lt_u - (local.get $$sub101$i) - (local.get $$rsize$49$i) - ) - ) - (local.set $$sub101$rsize$4$i - (if (result i32) - (local.get $$cmp102$i) - (local.get $$sub101$i) - (local.get $$rsize$49$i) - ) - ) - (local.set $$t$4$v$4$i - (if (result i32) - (local.get $$cmp102$i) - (local.get $$t$48$i) - (local.get $$v$410$i) - ) - ) - (local.set $$arrayidx106$i - (i32.add - (local.get $$t$48$i) - (i32.const 16) - ) - ) - (local.set $$59 - (i32.load - (local.get $$arrayidx106$i) - ) - ) - (local.set $$cmp107$i$157 - (i32.eq - (local.get $$59) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp107$i$157) - ) - (block - (local.set $$rsize$49$i - (local.get $$sub101$rsize$4$i) - ) - (local.set $$t$48$i - (local.get $$59) - ) - (local.set $$v$410$i - (local.get $$t$4$v$4$i) - ) - (local.set $label - (i32.const 90) - ) - (br $while-in16) - ) - ) - (local.set $$arrayidx113$i$159 - (i32.add - (local.get $$t$48$i) - (i32.const 20) - ) - ) - (local.set $$60 - (i32.load - (local.get $$arrayidx113$i$159) - ) - ) - (local.set $$cmp97$i - (i32.eq - (local.get $$60) - (i32.const 0) - ) - ) - (if - (local.get $$cmp97$i) - (block - (local.set $$rsize$4$lcssa$i - (local.get $$sub101$rsize$4$i) - ) - (local.set $$v$4$lcssa$i - (local.get $$t$4$v$4$i) - ) - (br $while-out15) - ) - (block - (local.set $$rsize$49$i - (local.get $$sub101$rsize$4$i) - ) - (local.set $$t$48$i - (local.get $$60) - ) - (local.set $$v$410$i - (local.get $$t$4$v$4$i) - ) - (local.set $label - (i32.const 90) - ) - ) - ) - (br $while-in16) - ) - ) - ) - (local.set $$cmp116$i - (i32.eq - (local.get $$v$4$lcssa$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp116$i) - (local.set $$nb$0 - (local.get $$and145) - ) - (block - (local.set $$61 - (i32.load - (i32.const 184) - ) - ) - (local.set $$sub118$i - (i32.sub - (local.get $$61) - (local.get $$and145) - ) - ) - (local.set $$cmp119$i - (i32.lt_u - (local.get $$rsize$4$lcssa$i) - (local.get $$sub118$i) - ) - ) - (if - (local.get $$cmp119$i) - (block - (local.set $$62 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp121$i - (i32.lt_u - (local.get $$v$4$lcssa$i) - (local.get $$62) - ) - ) - (if - (local.get $$cmp121$i) - (call $_abort) - ) - (local.set $$add$ptr$i$161 - (i32.add - (local.get $$v$4$lcssa$i) - (local.get $$and145) - ) - ) - (local.set $$cmp123$i - (i32.lt_u - (local.get $$v$4$lcssa$i) - (local.get $$add$ptr$i$161) - ) - ) - (if - (i32.eqz - (local.get $$cmp123$i) - ) - (call $_abort) - ) - (local.set $$parent$i$162 - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 24) - ) - ) - (local.set $$63 - (i32.load - (local.get $$parent$i$162) - ) - ) - (local.set $$bk$i$163 - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 12) - ) - ) - (local.set $$64 - (i32.load - (local.get $$bk$i$163) - ) - ) - (local.set $$cmp128$i - (i32.eq - (local.get $$64) - (local.get $$v$4$lcssa$i) - ) - ) - (block $do-once17 - (if - (local.get $$cmp128$i) - (block - (local.set $$arrayidx151$i - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 20) - ) - ) - (local.set $$68 - (i32.load - (local.get $$arrayidx151$i) - ) - ) - (local.set $$cmp152$i - (i32.eq - (local.get $$68) - (i32.const 0) - ) - ) - (if - (local.get $$cmp152$i) - (block - (local.set $$arrayidx155$i - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 16) - ) - ) - (local.set $$69 - (i32.load - (local.get $$arrayidx155$i) - ) - ) - (local.set $$cmp156$i - (i32.eq - (local.get $$69) - (i32.const 0) - ) - ) - (if - (local.get $$cmp156$i) - (block - (local.set $$R$3$i$171 - (i32.const 0) - ) - (br $do-once17) - ) - (block - (local.set $$R$1$i$168 - (local.get $$69) - ) - (local.set $$RP$1$i$167 - (local.get $$arrayidx155$i) - ) - ) - ) - ) - (block - (local.set $$R$1$i$168 - (local.get $$68) - ) - (local.set $$RP$1$i$167 - (local.get $$arrayidx151$i) - ) - ) - ) - (loop $while-in20 - (block $while-out19 - (local.set $$arrayidx161$i - (i32.add - (local.get $$R$1$i$168) - (i32.const 20) - ) - ) - (local.set $$70 - (i32.load - (local.get $$arrayidx161$i) - ) - ) - (local.set $$cmp162$i - (i32.eq - (local.get $$70) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp162$i) - ) - (block - (local.set $$R$1$i$168 - (local.get $$70) - ) - (local.set $$RP$1$i$167 - (local.get $$arrayidx161$i) - ) - (br $while-in20) - ) - ) - (local.set $$arrayidx165$i$169 - (i32.add - (local.get $$R$1$i$168) - (i32.const 16) - ) - ) - (local.set $$71 - (i32.load - (local.get $$arrayidx165$i$169) - ) - ) - (local.set $$cmp166$i - (i32.eq - (local.get $$71) - (i32.const 0) - ) - ) - (if - (local.get $$cmp166$i) - (block - (local.set $$R$1$i$168$lcssa - (local.get $$R$1$i$168) - ) - (local.set $$RP$1$i$167$lcssa - (local.get $$RP$1$i$167) - ) - (br $while-out19) - ) - (block - (local.set $$R$1$i$168 - (local.get $$71) - ) - (local.set $$RP$1$i$167 - (local.get $$arrayidx165$i$169) - ) - ) - ) - (br $while-in20) - ) - ) - (local.set $$cmp171$i - (i32.lt_u - (local.get $$RP$1$i$167$lcssa) - (local.get $$62) - ) - ) - (if - (local.get $$cmp171$i) - (call $_abort) - (block - (i32.store - (local.get $$RP$1$i$167$lcssa) - (i32.const 0) - ) - (local.set $$R$3$i$171 - (local.get $$R$1$i$168$lcssa) - ) - (br $do-once17) - ) - ) - ) - (block - (local.set $$fd$i$164 - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 8) - ) - ) - (local.set $$65 - (i32.load - (local.get $$fd$i$164) - ) - ) - (local.set $$cmp133$i - (i32.lt_u - (local.get $$65) - (local.get $$62) - ) - ) - (if - (local.get $$cmp133$i) - (call $_abort) - ) - (local.set $$bk136$i - (i32.add - (local.get $$65) - (i32.const 12) - ) - ) - (local.set $$66 - (i32.load - (local.get $$bk136$i) - ) - ) - (local.set $$cmp137$i - (i32.eq - (local.get $$66) - (local.get $$v$4$lcssa$i) - ) - ) - (if - (i32.eqz - (local.get $$cmp137$i) - ) - (call $_abort) - ) - (local.set $$fd139$i - (i32.add - (local.get $$64) - (i32.const 8) - ) - ) - (local.set $$67 - (i32.load - (local.get $$fd139$i) - ) - ) - (local.set $$cmp140$i - (i32.eq - (local.get $$67) - (local.get $$v$4$lcssa$i) - ) - ) - (if - (local.get $$cmp140$i) - (block - (i32.store - (local.get $$bk136$i) - (local.get $$64) - ) - (i32.store - (local.get $$fd139$i) - (local.get $$65) - ) - (local.set $$R$3$i$171 - (local.get $$64) - ) - (br $do-once17) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$cmp180$i - (i32.eq - (local.get $$63) - (i32.const 0) - ) - ) - (block $do-once21 - (if - (i32.eqz - (local.get $$cmp180$i) - ) - (block - (local.set $$index$i$172 - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 28) - ) - ) - (local.set $$72 - (i32.load - (local.get $$index$i$172) - ) - ) - (local.set $$arrayidx184$i - (i32.add - (i32.const 480) - (i32.shl - (local.get $$72) - (i32.const 2) - ) - ) - ) - (local.set $$73 - (i32.load - (local.get $$arrayidx184$i) - ) - ) - (local.set $$cmp185$i - (i32.eq - (local.get $$v$4$lcssa$i) - (local.get $$73) - ) - ) - (if - (local.get $$cmp185$i) - (block - (i32.store - (local.get $$arrayidx184$i) - (local.get $$R$3$i$171) - ) - (local.set $$cond3$i - (i32.eq - (local.get $$R$3$i$171) - (i32.const 0) - ) - ) - (if - (local.get $$cond3$i) - (block - (local.set $$shl192$i - (i32.shl - (i32.const 1) - (local.get $$72) - ) - ) - (local.set $$neg$i$173 - (i32.xor - (local.get $$shl192$i) - (i32.const -1) - ) - ) - (local.set $$74 - (i32.load - (i32.const 180) - ) - ) - (local.set $$and194$i - (i32.and - (local.get $$74) - (local.get $$neg$i$173) - ) - ) - (i32.store - (i32.const 180) - (local.get $$and194$i) - ) - (br $do-once21) - ) - ) - ) - (block - (local.set $$75 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp198$i - (i32.lt_u - (local.get $$63) - (local.get $$75) - ) - ) - (if - (local.get $$cmp198$i) - (call $_abort) - ) - (local.set $$arrayidx204$i - (i32.add - (local.get $$63) - (i32.const 16) - ) - ) - (local.set $$76 - (i32.load - (local.get $$arrayidx204$i) - ) - ) - (local.set $$cmp205$i - (i32.eq - (local.get $$76) - (local.get $$v$4$lcssa$i) - ) - ) - (if - (local.get $$cmp205$i) - (i32.store - (local.get $$arrayidx204$i) - (local.get $$R$3$i$171) - ) - (block - (local.set $$arrayidx212$i - (i32.add - (local.get $$63) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx212$i) - (local.get $$R$3$i$171) - ) - ) - ) - (local.set $$cmp217$i - (i32.eq - (local.get $$R$3$i$171) - (i32.const 0) - ) - ) - (if - (local.get $$cmp217$i) - (br $do-once21) - ) - ) - ) - (local.set $$77 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp221$i - (i32.lt_u - (local.get $$R$3$i$171) - (local.get $$77) - ) - ) - (if - (local.get $$cmp221$i) - (call $_abort) - ) - (local.set $$parent226$i - (i32.add - (local.get $$R$3$i$171) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent226$i) - (local.get $$63) - ) - (local.set $$arrayidx228$i - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 16) - ) - ) - (local.set $$78 - (i32.load - (local.get $$arrayidx228$i) - ) - ) - (local.set $$cmp229$i - (i32.eq - (local.get $$78) - (i32.const 0) - ) - ) - (block $do-once23 - (if - (i32.eqz - (local.get $$cmp229$i) - ) - (block - (local.set $$cmp233$i - (i32.lt_u - (local.get $$78) - (local.get $$77) - ) - ) - (if - (local.get $$cmp233$i) - (call $_abort) - (block - (local.set $$arrayidx239$i - (i32.add - (local.get $$R$3$i$171) - (i32.const 16) - ) - ) - (i32.store - (local.get $$arrayidx239$i) - (local.get $$78) - ) - (local.set $$parent240$i - (i32.add - (local.get $$78) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent240$i) - (local.get $$R$3$i$171) - ) - (br $do-once23) - ) - ) - ) - ) - ) - (local.set $$arrayidx245$i - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 20) - ) - ) - (local.set $$79 - (i32.load - (local.get $$arrayidx245$i) - ) - ) - (local.set $$cmp246$i - (i32.eq - (local.get $$79) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp246$i) - ) - (block - (local.set $$80 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp250$i - (i32.lt_u - (local.get $$79) - (local.get $$80) - ) - ) - (if - (local.get $$cmp250$i) - (call $_abort) - (block - (local.set $$arrayidx256$i - (i32.add - (local.get $$R$3$i$171) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx256$i) - (local.get $$79) - ) - (local.set $$parent257$i - (i32.add - (local.get $$79) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent257$i) - (local.get $$R$3$i$171) - ) - (br $do-once21) - ) - ) - ) - ) - ) - ) - ) - (local.set $$cmp265$i - (i32.lt_u - (local.get $$rsize$4$lcssa$i) - (i32.const 16) - ) - ) - (block $do-once25 - (if - (local.get $$cmp265$i) - (block - (local.set $$add268$i - (i32.add - (local.get $$rsize$4$lcssa$i) - (local.get $$and145) - ) - ) - (local.set $$or270$i - (i32.or - (local.get $$add268$i) - (i32.const 3) - ) - ) - (local.set $$head271$i - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head271$i) - (local.get $$or270$i) - ) - (local.set $$add$ptr273$i - (i32.add - (local.get $$v$4$lcssa$i) - (local.get $$add268$i) - ) - ) - (local.set $$head274$i - (i32.add - (local.get $$add$ptr273$i) - (i32.const 4) - ) - ) - (local.set $$81 - (i32.load - (local.get $$head274$i) - ) - ) - (local.set $$or275$i - (i32.or - (local.get $$81) - (i32.const 1) - ) - ) - (i32.store - (local.get $$head274$i) - (local.get $$or275$i) - ) - ) - (block - (local.set $$or278$i - (i32.or - (local.get $$and145) - (i32.const 3) - ) - ) - (local.set $$head279$i - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head279$i) - (local.get $$or278$i) - ) - (local.set $$or280$i - (i32.or - (local.get $$rsize$4$lcssa$i) - (i32.const 1) - ) - ) - (local.set $$head281$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head281$i) - (local.get $$or280$i) - ) - (local.set $$add$ptr282$i - (i32.add - (local.get $$add$ptr$i$161) - (local.get $$rsize$4$lcssa$i) - ) - ) - (i32.store - (local.get $$add$ptr282$i) - (local.get $$rsize$4$lcssa$i) - ) - (local.set $$shr283$i - (i32.shr_u - (local.get $$rsize$4$lcssa$i) - (i32.const 3) - ) - ) - (local.set $$cmp284$i - (i32.lt_u - (local.get $$rsize$4$lcssa$i) - (i32.const 256) - ) - ) - (if - (local.get $$cmp284$i) - (block - (local.set $$shl288$i - (i32.shl - (local.get $$shr283$i) - (i32.const 1) - ) - ) - (local.set $$arrayidx289$i - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl288$i) - (i32.const 2) - ) - ) - ) - (local.set $$82 - (i32.load - (i32.const 176) - ) - ) - (local.set $$shl291$i - (i32.shl - (i32.const 1) - (local.get $$shr283$i) - ) - ) - (local.set $$and292$i - (i32.and - (local.get $$82) - (local.get $$shl291$i) - ) - ) - (local.set $$tobool293$i - (i32.eq - (local.get $$and292$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool293$i) - (block - (local.set $$or297$i - (i32.or - (local.get $$82) - (local.get $$shl291$i) - ) - ) - (i32.store - (i32.const 176) - (local.get $$or297$i) - ) - (local.set $$$pre$i$177 - (i32.add - (local.get $$arrayidx289$i) - (i32.const 8) - ) - ) - (local.set $$$pre$phi$i$178Z2D - (local.get $$$pre$i$177) - ) - (local.set $$F290$0$i - (local.get $$arrayidx289$i) - ) - ) - (block - (local.set $$83 - (i32.add - (local.get $$arrayidx289$i) - (i32.const 8) - ) - ) - (local.set $$84 - (i32.load - (local.get $$83) - ) - ) - (local.set $$85 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp301$i - (i32.lt_u - (local.get $$84) - (local.get $$85) - ) - ) - (if - (local.get $$cmp301$i) - (call $_abort) - (block - (local.set $$$pre$phi$i$178Z2D - (local.get $$83) - ) - (local.set $$F290$0$i - (local.get $$84) - ) - ) - ) - ) - ) - (i32.store - (local.get $$$pre$phi$i$178Z2D) - (local.get $$add$ptr$i$161) - ) - (local.set $$bk311$i - (i32.add - (local.get $$F290$0$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk311$i) - (local.get $$add$ptr$i$161) - ) - (local.set $$fd312$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd312$i) - (local.get $$F290$0$i) - ) - (local.set $$bk313$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk313$i) - (local.get $$arrayidx289$i) - ) - (br $do-once25) - ) - ) - (local.set $$shr318$i - (i32.shr_u - (local.get $$rsize$4$lcssa$i) - (i32.const 8) - ) - ) - (local.set $$cmp319$i - (i32.eq - (local.get $$shr318$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp319$i) - (local.set $$I316$0$i - (i32.const 0) - ) - (block - (local.set $$cmp323$i - (i32.gt_u - (local.get $$rsize$4$lcssa$i) - (i32.const 16777215) - ) - ) - (if - (local.get $$cmp323$i) - (local.set $$I316$0$i - (i32.const 31) - ) - (block - (local.set $$sub329$i - (i32.add - (local.get $$shr318$i) - (i32.const 1048320) - ) - ) - (local.set $$shr330$i - (i32.shr_u - (local.get $$sub329$i) - (i32.const 16) - ) - ) - (local.set $$and331$i - (i32.and - (local.get $$shr330$i) - (i32.const 8) - ) - ) - (local.set $$shl333$i - (i32.shl - (local.get $$shr318$i) - (local.get $$and331$i) - ) - ) - (local.set $$sub334$i - (i32.add - (local.get $$shl333$i) - (i32.const 520192) - ) - ) - (local.set $$shr335$i - (i32.shr_u - (local.get $$sub334$i) - (i32.const 16) - ) - ) - (local.set $$and336$i - (i32.and - (local.get $$shr335$i) - (i32.const 4) - ) - ) - (local.set $$add337$i - (i32.or - (local.get $$and336$i) - (local.get $$and331$i) - ) - ) - (local.set $$shl338$i - (i32.shl - (local.get $$shl333$i) - (local.get $$and336$i) - ) - ) - (local.set $$sub339$i - (i32.add - (local.get $$shl338$i) - (i32.const 245760) - ) - ) - (local.set $$shr340$i - (i32.shr_u - (local.get $$sub339$i) - (i32.const 16) - ) - ) - (local.set $$and341$i - (i32.and - (local.get $$shr340$i) - (i32.const 2) - ) - ) - (local.set $$add342$i - (i32.or - (local.get $$add337$i) - (local.get $$and341$i) - ) - ) - (local.set $$sub343$i - (i32.sub - (i32.const 14) - (local.get $$add342$i) - ) - ) - (local.set $$shl344$i - (i32.shl - (local.get $$shl338$i) - (local.get $$and341$i) - ) - ) - (local.set $$shr345$i - (i32.shr_u - (local.get $$shl344$i) - (i32.const 15) - ) - ) - (local.set $$add346$i - (i32.add - (local.get $$sub343$i) - (local.get $$shr345$i) - ) - ) - (local.set $$shl347$i - (i32.shl - (local.get $$add346$i) - (i32.const 1) - ) - ) - (local.set $$add348$i - (i32.add - (local.get $$add346$i) - (i32.const 7) - ) - ) - (local.set $$shr349$i - (i32.shr_u - (local.get $$rsize$4$lcssa$i) - (local.get $$add348$i) - ) - ) - (local.set $$and350$i - (i32.and - (local.get $$shr349$i) - (i32.const 1) - ) - ) - (local.set $$add351$i - (i32.or - (local.get $$and350$i) - (local.get $$shl347$i) - ) - ) - (local.set $$I316$0$i - (local.get $$add351$i) - ) - ) - ) - ) - ) - (local.set $$arrayidx355$i - (i32.add - (i32.const 480) - (i32.shl - (local.get $$I316$0$i) - (i32.const 2) - ) - ) - ) - (local.set $$index356$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 28) - ) - ) - (i32.store - (local.get $$index356$i) - (local.get $$I316$0$i) - ) - (local.set $$child357$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 16) - ) - ) - (local.set $$arrayidx358$i - (i32.add - (local.get $$child357$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$arrayidx358$i) - (i32.const 0) - ) - (i32.store - (local.get $$child357$i) - (i32.const 0) - ) - (local.set $$86 - (i32.load - (i32.const 180) - ) - ) - (local.set $$shl362$i - (i32.shl - (i32.const 1) - (local.get $$I316$0$i) - ) - ) - (local.set $$and363$i - (i32.and - (local.get $$86) - (local.get $$shl362$i) - ) - ) - (local.set $$tobool364$i - (i32.eq - (local.get $$and363$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool364$i) - (block - (local.set $$or368$i - (i32.or - (local.get $$86) - (local.get $$shl362$i) - ) - ) - (i32.store - (i32.const 180) - (local.get $$or368$i) - ) - (i32.store - (local.get $$arrayidx355$i) - (local.get $$add$ptr$i$161) - ) - (local.set $$parent369$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent369$i) - (local.get $$arrayidx355$i) - ) - (local.set $$bk370$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk370$i) - (local.get $$add$ptr$i$161) - ) - (local.set $$fd371$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd371$i) - (local.get $$add$ptr$i$161) - ) - (br $do-once25) - ) - ) - (local.set $$87 - (i32.load - (local.get $$arrayidx355$i) - ) - ) - (local.set $$cmp374$i - (i32.eq - (local.get $$I316$0$i) - (i32.const 31) - ) - ) - (local.set $$shr378$i - (i32.shr_u - (local.get $$I316$0$i) - (i32.const 1) - ) - ) - (local.set $$sub381$i - (i32.sub - (i32.const 25) - (local.get $$shr378$i) - ) - ) - (local.set $$cond383$i - (if (result i32) - (local.get $$cmp374$i) - (i32.const 0) - (local.get $$sub381$i) - ) - ) - (local.set $$shl384$i - (i32.shl - (local.get $$rsize$4$lcssa$i) - (local.get $$cond383$i) - ) - ) - (local.set $$K373$0$i - (local.get $$shl384$i) - ) - (local.set $$T$0$i - (local.get $$87) - ) - (loop $while-in28 - (block $while-out27 - (local.set $$head386$i - (i32.add - (local.get $$T$0$i) - (i32.const 4) - ) - ) - (local.set $$88 - (i32.load - (local.get $$head386$i) - ) - ) - (local.set $$and387$i - (i32.and - (local.get $$88) - (i32.const -8) - ) - ) - (local.set $$cmp388$i - (i32.eq - (local.get $$and387$i) - (local.get $$rsize$4$lcssa$i) - ) - ) - (if - (local.get $$cmp388$i) - (block - (local.set $$T$0$i$lcssa - (local.get $$T$0$i) - ) - (local.set $label - (i32.const 148) - ) - (br $while-out27) - ) - ) - (local.set $$shr391$i - (i32.shr_u - (local.get $$K373$0$i) - (i32.const 31) - ) - ) - (local.set $$arrayidx394$i - (i32.add - (i32.add - (local.get $$T$0$i) - (i32.const 16) - ) - (i32.shl - (local.get $$shr391$i) - (i32.const 2) - ) - ) - ) - (local.set $$shl395$i - (i32.shl - (local.get $$K373$0$i) - (i32.const 1) - ) - ) - (local.set $$89 - (i32.load - (local.get $$arrayidx394$i) - ) - ) - (local.set $$cmp396$i - (i32.eq - (local.get $$89) - (i32.const 0) - ) - ) - (if - (local.get $$cmp396$i) - (block - (local.set $$T$0$i$lcssa293 - (local.get $$T$0$i) - ) - (local.set $$arrayidx394$i$lcssa - (local.get $$arrayidx394$i) - ) - (local.set $label - (i32.const 145) - ) - (br $while-out27) - ) - (block - (local.set $$K373$0$i - (local.get $$shl395$i) - ) - (local.set $$T$0$i - (local.get $$89) - ) - ) - ) - (br $while-in28) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 145) - ) - (block - (local.set $$90 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp401$i - (i32.lt_u - (local.get $$arrayidx394$i$lcssa) - (local.get $$90) - ) - ) - (if - (local.get $$cmp401$i) - (call $_abort) - (block - (i32.store - (local.get $$arrayidx394$i$lcssa) - (local.get $$add$ptr$i$161) - ) - (local.set $$parent406$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent406$i) - (local.get $$T$0$i$lcssa293) - ) - (local.set $$bk407$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk407$i) - (local.get $$add$ptr$i$161) - ) - (local.set $$fd408$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd408$i) - (local.get $$add$ptr$i$161) - ) - (br $do-once25) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 148) - ) - (block - (local.set $$fd416$i - (i32.add - (local.get $$T$0$i$lcssa) - (i32.const 8) - ) - ) - (local.set $$91 - (i32.load - (local.get $$fd416$i) - ) - ) - (local.set $$92 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp422$i - (i32.ge_u - (local.get $$91) - (local.get $$92) - ) - ) - (local.set $$not$cmp418$i - (i32.ge_u - (local.get $$T$0$i$lcssa) - (local.get $$92) - ) - ) - (local.set $$93 - (i32.and - (local.get $$cmp422$i) - (local.get $$not$cmp418$i) - ) - ) - (if - (local.get $$93) - (block - (local.set $$bk429$i - (i32.add - (local.get $$91) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk429$i) - (local.get $$add$ptr$i$161) - ) - (i32.store - (local.get $$fd416$i) - (local.get $$add$ptr$i$161) - ) - (local.set $$fd431$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd431$i) - (local.get $$91) - ) - (local.set $$bk432$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk432$i) - (local.get $$T$0$i$lcssa) - ) - (local.set $$parent433$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent433$i) - (i32.const 0) - ) - (br $do-once25) - ) - (call $_abort) - ) - ) - ) - ) - ) - ) - ) - (local.set $$add$ptr441$i - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 8) - ) - ) - (local.set $$retval$0 - (local.get $$add$ptr441$i) - ) - (return - (local.get $$retval$0) - ) - ) - (local.set $$nb$0 - (local.get $$and145) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (local.set $$94 - (i32.load - (i32.const 184) - ) - ) - (local.set $$cmp156 - (i32.lt_u - (local.get $$94) - (local.get $$nb$0) - ) - ) - (if - (i32.eqz - (local.get $$cmp156) - ) - (block - (local.set $$sub160 - (i32.sub - (local.get $$94) - (local.get $$nb$0) - ) - ) - (local.set $$95 - (i32.load - (i32.const 196) - ) - ) - (local.set $$cmp162 - (i32.gt_u - (local.get $$sub160) - (i32.const 15) - ) - ) - (if - (local.get $$cmp162) - (block - (local.set $$add$ptr166 - (i32.add - (local.get $$95) - (local.get $$nb$0) - ) - ) - (i32.store - (i32.const 196) - (local.get $$add$ptr166) - ) - (i32.store - (i32.const 184) - (local.get $$sub160) - ) - (local.set $$or167 - (i32.or - (local.get $$sub160) - (i32.const 1) - ) - ) - (local.set $$head168 - (i32.add - (local.get $$add$ptr166) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head168) - (local.get $$or167) - ) - (local.set $$add$ptr169 - (i32.add - (local.get $$add$ptr166) - (local.get $$sub160) - ) - ) - (i32.store - (local.get $$add$ptr169) - (local.get $$sub160) - ) - (local.set $$or172 - (i32.or - (local.get $$nb$0) - (i32.const 3) - ) - ) - (local.set $$head173 - (i32.add - (local.get $$95) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head173) - (local.get $$or172) - ) - ) - (block - (i32.store - (i32.const 184) - (i32.const 0) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (local.set $$or176 - (i32.or - (local.get $$94) - (i32.const 3) - ) - ) - (local.set $$head177 - (i32.add - (local.get $$95) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head177) - (local.get $$or176) - ) - (local.set $$add$ptr178 - (i32.add - (local.get $$95) - (local.get $$94) - ) - ) - (local.set $$head179 - (i32.add - (local.get $$add$ptr178) - (i32.const 4) - ) - ) - (local.set $$96 - (i32.load - (local.get $$head179) - ) - ) - (local.set $$or180 - (i32.or - (local.get $$96) - (i32.const 1) - ) - ) - (i32.store - (local.get $$head179) - (local.get $$or180) - ) - ) - ) - (local.set $$add$ptr182 - (i32.add - (local.get $$95) - (i32.const 8) - ) - ) - (local.set $$retval$0 - (local.get $$add$ptr182) - ) - (return - (local.get $$retval$0) - ) - ) - ) - (local.set $$97 - (i32.load - (i32.const 188) - ) - ) - (local.set $$cmp186 - (i32.gt_u - (local.get $$97) - (local.get $$nb$0) - ) - ) - (if - (local.get $$cmp186) - (block - (local.set $$sub190 - (i32.sub - (local.get $$97) - (local.get $$nb$0) - ) - ) - (i32.store - (i32.const 188) - (local.get $$sub190) - ) - (local.set $$98 - (i32.load - (i32.const 200) - ) - ) - (local.set $$add$ptr193 - (i32.add - (local.get $$98) - (local.get $$nb$0) - ) - ) - (i32.store - (i32.const 200) - (local.get $$add$ptr193) - ) - (local.set $$or194 - (i32.or - (local.get $$sub190) - (i32.const 1) - ) - ) - (local.set $$head195 - (i32.add - (local.get $$add$ptr193) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head195) - (local.get $$or194) - ) - (local.set $$or197 - (i32.or - (local.get $$nb$0) - (i32.const 3) - ) - ) - (local.set $$head198 - (i32.add - (local.get $$98) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head198) - (local.get $$or197) - ) - (local.set $$add$ptr199 - (i32.add - (local.get $$98) - (i32.const 8) - ) - ) - (local.set $$retval$0 - (local.get $$add$ptr199) - ) - (return - (local.get $$retval$0) - ) - ) - ) - (local.set $$99 - (i32.load - (i32.const 648) - ) - ) - (local.set $$cmp$i$179 - (i32.eq - (local.get $$99) - (i32.const 0) - ) - ) - (block $do-once29 - (if - (local.get $$cmp$i$179) - (block - (local.set $$call$i$i - (call $_sysconf - (i32.const 30) - ) - ) - (local.set $$sub$i$i - (i32.add - (local.get $$call$i$i) - (i32.const -1) - ) - ) - (local.set $$and$i$i - (i32.and - (local.get $$sub$i$i) - (local.get $$call$i$i) - ) - ) - (local.set $$cmp1$i$i - (i32.eq - (local.get $$and$i$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp1$i$i) - (block - (i32.store - (i32.const 656) - (local.get $$call$i$i) - ) - (i32.store - (i32.const 652) - (local.get $$call$i$i) - ) - (i32.store - (i32.const 660) - (i32.const -1) - ) - (i32.store - (i32.const 664) - (i32.const -1) - ) - (i32.store - (i32.const 668) - (i32.const 0) - ) - (i32.store - (i32.const 620) - (i32.const 0) - ) - (local.set $$call6$i$i - (call $_time - (i32.const 0) - ) - ) - (local.set $$xor$i$i - (i32.and - (local.get $$call6$i$i) - (i32.const -16) - ) - ) - (local.set $$and7$i$i - (i32.xor - (local.get $$xor$i$i) - (i32.const 1431655768) - ) - ) - (i32.store - (i32.const 648) - (local.get $$and7$i$i) - ) - (br $do-once29) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$add$i$180 - (i32.add - (local.get $$nb$0) - (i32.const 48) - ) - ) - (local.set $$100 - (i32.load - (i32.const 656) - ) - ) - (local.set $$sub$i$181 - (i32.add - (local.get $$nb$0) - (i32.const 47) - ) - ) - (local.set $$add9$i - (i32.add - (local.get $$100) - (local.get $$sub$i$181) - ) - ) - (local.set $$neg$i$182 - (i32.sub - (i32.const 0) - (local.get $$100) - ) - ) - (local.set $$and11$i - (i32.and - (local.get $$add9$i) - (local.get $$neg$i$182) - ) - ) - (local.set $$cmp12$i - (i32.gt_u - (local.get $$and11$i) - (local.get $$nb$0) - ) - ) - (if - (i32.eqz - (local.get $$cmp12$i) - ) - (block - (local.set $$retval$0 - (i32.const 0) - ) - (return - (local.get $$retval$0) - ) - ) - ) - (local.set $$101 - (i32.load - (i32.const 616) - ) - ) - (local.set $$cmp15$i - (i32.eq - (local.get $$101) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp15$i) - ) - (block - (local.set $$102 - (i32.load - (i32.const 608) - ) - ) - (local.set $$add17$i$183 - (i32.add - (local.get $$102) - (local.get $$and11$i) - ) - ) - (local.set $$cmp19$i - (i32.le_u - (local.get $$add17$i$183) - (local.get $$102) - ) - ) - (local.set $$cmp21$i - (i32.gt_u - (local.get $$add17$i$183) - (local.get $$101) - ) - ) - (local.set $$or$cond1$i$184 - (i32.or - (local.get $$cmp19$i) - (local.get $$cmp21$i) - ) - ) - (if - (local.get $$or$cond1$i$184) - (block - (local.set $$retval$0 - (i32.const 0) - ) - (return - (local.get $$retval$0) - ) - ) - ) - ) - ) - (local.set $$103 - (i32.load - (i32.const 620) - ) - ) - (local.set $$and29$i - (i32.and - (local.get $$103) - (i32.const 4) - ) - ) - (local.set $$tobool30$i - (i32.eq - (local.get $$and29$i) - (i32.const 0) - ) - ) - (block $label$break$L257 - (if - (local.get $$tobool30$i) - (block - (local.set $$104 - (i32.load - (i32.const 200) - ) - ) - (local.set $$cmp32$i$185 - (i32.eq - (local.get $$104) - (i32.const 0) - ) - ) - (block $label$break$L259 - (if - (local.get $$cmp32$i$185) - (local.set $label - (i32.const 173) - ) - (block - (local.set $$sp$0$i$i - (i32.const 624) - ) - (loop $while-in34 - (block $while-out33 - (local.set $$105 - (i32.load - (local.get $$sp$0$i$i) - ) - ) - (local.set $$cmp$i$9$i - (i32.gt_u - (local.get $$105) - (local.get $$104) - ) - ) - (if - (i32.eqz - (local.get $$cmp$i$9$i) - ) - (block - (local.set $$size$i$i - (i32.add - (local.get $$sp$0$i$i) - (i32.const 4) - ) - ) - (local.set $$106 - (i32.load - (local.get $$size$i$i) - ) - ) - (local.set $$add$ptr$i$i - (i32.add - (local.get $$105) - (local.get $$106) - ) - ) - (local.set $$cmp2$i$i - (i32.gt_u - (local.get $$add$ptr$i$i) - (local.get $$104) - ) - ) - (if - (local.get $$cmp2$i$i) - (block - (local.set $$base$i$i$lcssa - (local.get $$sp$0$i$i) - ) - (local.set $$size$i$i$lcssa - (local.get $$size$i$i) - ) - (br $while-out33) - ) - ) - ) - ) - (local.set $$next$i$i - (i32.add - (local.get $$sp$0$i$i) - (i32.const 8) - ) - ) - (local.set $$107 - (i32.load - (local.get $$next$i$i) - ) - ) - (local.set $$cmp3$i$i - (i32.eq - (local.get $$107) - (i32.const 0) - ) - ) - (if - (local.get $$cmp3$i$i) - (block - (local.set $label - (i32.const 173) - ) - (br $label$break$L259) - ) - (local.set $$sp$0$i$i - (local.get $$107) - ) - ) - (br $while-in34) - ) - ) - (local.set $$112 - (i32.load - (i32.const 188) - ) - ) - (local.set $$add77$i - (i32.sub - (local.get $$add9$i) - (local.get $$112) - ) - ) - (local.set $$and80$i - (i32.and - (local.get $$add77$i) - (local.get $$neg$i$182) - ) - ) - (local.set $$cmp81$i$191 - (i32.lt_u - (local.get $$and80$i) - (i32.const 2147483647) - ) - ) - (if - (local.get $$cmp81$i$191) - (block - (local.set $$call83$i - (call $_sbrk - (local.get $$and80$i) - ) - ) - (local.set $$113 - (i32.load - (local.get $$base$i$i$lcssa) - ) - ) - (local.set $$114 - (i32.load - (local.get $$size$i$i$lcssa) - ) - ) - (local.set $$add$ptr$i$193 - (i32.add - (local.get $$113) - (local.get $$114) - ) - ) - (local.set $$cmp85$i - (i32.eq - (local.get $$call83$i) - (local.get $$add$ptr$i$193) - ) - ) - (if - (local.get $$cmp85$i) - (block - (local.set $$cmp89$i - (i32.eq - (local.get $$call83$i) - (i32.const -1) - ) - ) - (if - (i32.eqz - (local.get $$cmp89$i) - ) - (block - (local.set $$tbase$796$i - (local.get $$call83$i) - ) - (local.set $$tsize$795$i - (local.get $$and80$i) - ) - (local.set $label - (i32.const 193) - ) - (br $label$break$L257) - ) - ) - ) - (block - (local.set $$br$2$ph$i - (local.get $$call83$i) - ) - (local.set $$ssize$2$ph$i - (local.get $$and80$i) - ) - (local.set $label - (i32.const 183) - ) - ) - ) - ) - ) - ) - ) - ) - (block $do-once35 - (if - (i32.eq - (local.get $label) - (i32.const 173) - ) - (block - (local.set $$call37$i - (call $_sbrk - (i32.const 0) - ) - ) - (local.set $$cmp38$i - (i32.eq - (local.get $$call37$i) - (i32.const -1) - ) - ) - (if - (i32.eqz - (local.get $$cmp38$i) - ) - (block - (local.set $$108 - (local.get $$call37$i) - ) - (local.set $$109 - (i32.load - (i32.const 652) - ) - ) - (local.set $$sub41$i - (i32.add - (local.get $$109) - (i32.const -1) - ) - ) - (local.set $$and42$i - (i32.and - (local.get $$sub41$i) - (local.get $$108) - ) - ) - (local.set $$cmp43$i - (i32.eq - (local.get $$and42$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp43$i) - (local.set $$ssize$0$i - (local.get $$and11$i) - ) - (block - (local.set $$add46$i - (i32.add - (local.get $$sub41$i) - (local.get $$108) - ) - ) - (local.set $$neg48$i - (i32.sub - (i32.const 0) - (local.get $$109) - ) - ) - (local.set $$and49$i - (i32.and - (local.get $$add46$i) - (local.get $$neg48$i) - ) - ) - (local.set $$sub50$i - (i32.sub - (local.get $$and11$i) - (local.get $$108) - ) - ) - (local.set $$add51$i - (i32.add - (local.get $$sub50$i) - (local.get $$and49$i) - ) - ) - (local.set $$ssize$0$i - (local.get $$add51$i) - ) - ) - ) - (local.set $$110 - (i32.load - (i32.const 608) - ) - ) - (local.set $$add54$i - (i32.add - (local.get $$110) - (local.get $$ssize$0$i) - ) - ) - (local.set $$cmp55$i$187 - (i32.gt_u - (local.get $$ssize$0$i) - (local.get $$nb$0) - ) - ) - (local.set $$cmp57$i$188 - (i32.lt_u - (local.get $$ssize$0$i) - (i32.const 2147483647) - ) - ) - (local.set $$or$cond$i$189 - (i32.and - (local.get $$cmp55$i$187) - (local.get $$cmp57$i$188) - ) - ) - (if - (local.get $$or$cond$i$189) - (block - (local.set $$111 - (i32.load - (i32.const 616) - ) - ) - (local.set $$cmp60$i - (i32.eq - (local.get $$111) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp60$i) - ) - (block - (local.set $$cmp63$i - (i32.le_u - (local.get $$add54$i) - (local.get $$110) - ) - ) - (local.set $$cmp66$i$190 - (i32.gt_u - (local.get $$add54$i) - (local.get $$111) - ) - ) - (local.set $$or$cond2$i - (i32.or - (local.get $$cmp63$i) - (local.get $$cmp66$i$190) - ) - ) - (if - (local.get $$or$cond2$i) - (br $do-once35) - ) - ) - ) - (local.set $$call68$i - (call $_sbrk - (local.get $$ssize$0$i) - ) - ) - (local.set $$cmp69$i - (i32.eq - (local.get $$call68$i) - (local.get $$call37$i) - ) - ) - (if - (local.get $$cmp69$i) - (block - (local.set $$tbase$796$i - (local.get $$call37$i) - ) - (local.set $$tsize$795$i - (local.get $$ssize$0$i) - ) - (local.set $label - (i32.const 193) - ) - (br $label$break$L257) - ) - (block - (local.set $$br$2$ph$i - (local.get $$call68$i) - ) - (local.set $$ssize$2$ph$i - (local.get $$ssize$0$i) - ) - (local.set $label - (i32.const 183) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (block $label$break$L279 - (if - (i32.eq - (local.get $label) - (i32.const 183) - ) - (block - (local.set $$sub112$i - (i32.sub - (i32.const 0) - (local.get $$ssize$2$ph$i) - ) - ) - (local.set $$cmp91$i - (i32.ne - (local.get $$br$2$ph$i) - (i32.const -1) - ) - ) - (local.set $$cmp93$i - (i32.lt_u - (local.get $$ssize$2$ph$i) - (i32.const 2147483647) - ) - ) - (local.set $$or$cond5$i - (i32.and - (local.get $$cmp93$i) - (local.get $$cmp91$i) - ) - ) - (local.set $$cmp96$i - (i32.gt_u - (local.get $$add$i$180) - (local.get $$ssize$2$ph$i) - ) - ) - (local.set $$or$cond3$i - (i32.and - (local.get $$cmp96$i) - (local.get $$or$cond5$i) - ) - ) - (block $do-once38 - (if - (local.get $$or$cond3$i) - (block - (local.set $$115 - (i32.load - (i32.const 656) - ) - ) - (local.set $$sub99$i - (i32.sub - (local.get $$sub$i$181) - (local.get $$ssize$2$ph$i) - ) - ) - (local.set $$add101$i - (i32.add - (local.get $$sub99$i) - (local.get $$115) - ) - ) - (local.set $$neg103$i - (i32.sub - (i32.const 0) - (local.get $$115) - ) - ) - (local.set $$and104$i - (i32.and - (local.get $$add101$i) - (local.get $$neg103$i) - ) - ) - (local.set $$cmp105$i - (i32.lt_u - (local.get $$and104$i) - (i32.const 2147483647) - ) - ) - (if - (local.get $$cmp105$i) - (block - (local.set $$call107$i - (call $_sbrk - (local.get $$and104$i) - ) - ) - (local.set $$cmp108$i - (i32.eq - (local.get $$call107$i) - (i32.const -1) - ) - ) - (if - (local.get $$cmp108$i) - (block - (drop - (call $_sbrk - (local.get $$sub112$i) - ) - ) - (br $label$break$L279) - ) - (block - (local.set $$add110$i - (i32.add - (local.get $$and104$i) - (local.get $$ssize$2$ph$i) - ) - ) - (local.set $$ssize$5$i - (local.get $$add110$i) - ) - (br $do-once38) - ) - ) - ) - (local.set $$ssize$5$i - (local.get $$ssize$2$ph$i) - ) - ) - ) - (local.set $$ssize$5$i - (local.get $$ssize$2$ph$i) - ) - ) - ) - (local.set $$cmp118$i - (i32.eq - (local.get $$br$2$ph$i) - (i32.const -1) - ) - ) - (if - (i32.eqz - (local.get $$cmp118$i) - ) - (block - (local.set $$tbase$796$i - (local.get $$br$2$ph$i) - ) - (local.set $$tsize$795$i - (local.get $$ssize$5$i) - ) - (local.set $label - (i32.const 193) - ) - (br $label$break$L257) - ) - ) - ) - ) - ) - (local.set $$116 - (i32.load - (i32.const 620) - ) - ) - (local.set $$or$i$195 - (i32.or - (local.get $$116) - (i32.const 4) - ) - ) - (i32.store - (i32.const 620) - (local.get $$or$i$195) - ) - (local.set $label - (i32.const 190) - ) - ) - (local.set $label - (i32.const 190) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 190) - ) - (block - (local.set $$cmp127$i - (i32.lt_u - (local.get $$and11$i) - (i32.const 2147483647) - ) - ) - (if - (local.get $$cmp127$i) - (block - (local.set $$call131$i - (call $_sbrk - (local.get $$and11$i) - ) - ) - (local.set $$call132$i - (call $_sbrk - (i32.const 0) - ) - ) - (local.set $$cmp133$i$196 - (i32.ne - (local.get $$call131$i) - (i32.const -1) - ) - ) - (local.set $$cmp135$i - (i32.ne - (local.get $$call132$i) - (i32.const -1) - ) - ) - (local.set $$or$cond4$i - (i32.and - (local.get $$cmp133$i$196) - (local.get $$cmp135$i) - ) - ) - (local.set $$cmp137$i$197 - (i32.lt_u - (local.get $$call131$i) - (local.get $$call132$i) - ) - ) - (local.set $$or$cond7$i - (i32.and - (local.get $$cmp137$i$197) - (local.get $$or$cond4$i) - ) - ) - (if - (local.get $$or$cond7$i) - (block - (local.set $$sub$ptr$lhs$cast$i - (local.get $$call132$i) - ) - (local.set $$sub$ptr$rhs$cast$i - (local.get $$call131$i) - ) - (local.set $$sub$ptr$sub$i - (i32.sub - (local.get $$sub$ptr$lhs$cast$i) - (local.get $$sub$ptr$rhs$cast$i) - ) - ) - (local.set $$add140$i - (i32.add - (local.get $$nb$0) - (i32.const 40) - ) - ) - (local.set $$cmp141$not$i - (i32.gt_u - (local.get $$sub$ptr$sub$i) - (local.get $$add140$i) - ) - ) - (if - (local.get $$cmp141$not$i) - (block - (local.set $$tbase$796$i - (local.get $$call131$i) - ) - (local.set $$tsize$795$i - (local.get $$sub$ptr$sub$i) - ) - (local.set $label - (i32.const 193) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 193) - ) - (block - (local.set $$117 - (i32.load - (i32.const 608) - ) - ) - (local.set $$add150$i - (i32.add - (local.get $$117) - (local.get $$tsize$795$i) - ) - ) - (i32.store - (i32.const 608) - (local.get $$add150$i) - ) - (local.set $$118 - (i32.load - (i32.const 612) - ) - ) - (local.set $$cmp151$i - (i32.gt_u - (local.get $$add150$i) - (local.get $$118) - ) - ) - (if - (local.get $$cmp151$i) - (i32.store - (i32.const 612) - (local.get $$add150$i) - ) - ) - (local.set $$119 - (i32.load - (i32.const 200) - ) - ) - (local.set $$cmp157$i - (i32.eq - (local.get $$119) - (i32.const 0) - ) - ) - (block $do-once40 - (if - (local.get $$cmp157$i) - (block - (local.set $$120 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp159$i$199 - (i32.eq - (local.get $$120) - (i32.const 0) - ) - ) - (local.set $$cmp162$i$200 - (i32.lt_u - (local.get $$tbase$796$i) - (local.get $$120) - ) - ) - (local.set $$or$cond8$i - (i32.or - (local.get $$cmp159$i$199) - (local.get $$cmp162$i$200) - ) - ) - (if - (local.get $$or$cond8$i) - (i32.store - (i32.const 192) - (local.get $$tbase$796$i) - ) - ) - (i32.store - (i32.const 624) - (local.get $$tbase$796$i) - ) - (i32.store - (i32.const 628) - (local.get $$tsize$795$i) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (local.set $$121 - (i32.load - (i32.const 648) - ) - ) - (i32.store - (i32.const 212) - (local.get $$121) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - (local.set $$i$01$i$i - (i32.const 0) - ) - (loop $while-in43 - (block $while-out42 - (local.set $$shl$i$i - (i32.shl - (local.get $$i$01$i$i) - (i32.const 1) - ) - ) - (local.set $$arrayidx$i$i - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl$i$i) - (i32.const 2) - ) - ) - ) - (local.set $$122 - (i32.add - (local.get $$arrayidx$i$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$122) - (local.get $$arrayidx$i$i) - ) - (local.set $$123 - (i32.add - (local.get $$arrayidx$i$i) - (i32.const 8) - ) - ) - (i32.store - (local.get $$123) - (local.get $$arrayidx$i$i) - ) - (local.set $$inc$i$i - (i32.add - (local.get $$i$01$i$i) - (i32.const 1) - ) - ) - (local.set $$exitcond$i$i - (i32.eq - (local.get $$inc$i$i) - (i32.const 32) - ) - ) - (if - (local.get $$exitcond$i$i) - (br $while-out42) - (local.set $$i$01$i$i - (local.get $$inc$i$i) - ) - ) - (br $while-in43) - ) - ) - (local.set $$sub172$i - (i32.add - (local.get $$tsize$795$i) - (i32.const -40) - ) - ) - (local.set $$add$ptr$i$11$i - (i32.add - (local.get $$tbase$796$i) - (i32.const 8) - ) - ) - (local.set $$124 - (local.get $$add$ptr$i$11$i) - ) - (local.set $$and$i$12$i - (i32.and - (local.get $$124) - (i32.const 7) - ) - ) - (local.set $$cmp$i$13$i - (i32.eq - (local.get $$and$i$12$i) - (i32.const 0) - ) - ) - (local.set $$125 - (i32.sub - (i32.const 0) - (local.get $$124) - ) - ) - (local.set $$and3$i$i - (i32.and - (local.get $$125) - (i32.const 7) - ) - ) - (local.set $$cond$i$i - (if (result i32) - (local.get $$cmp$i$13$i) - (i32.const 0) - (local.get $$and3$i$i) - ) - ) - (local.set $$add$ptr4$i$i - (i32.add - (local.get $$tbase$796$i) - (local.get $$cond$i$i) - ) - ) - (local.set $$sub5$i$i - (i32.sub - (local.get $$sub172$i) - (local.get $$cond$i$i) - ) - ) - (i32.store - (i32.const 200) - (local.get $$add$ptr4$i$i) - ) - (i32.store - (i32.const 188) - (local.get $$sub5$i$i) - ) - (local.set $$or$i$i - (i32.or - (local.get $$sub5$i$i) - (i32.const 1) - ) - ) - (local.set $$head$i$i - (i32.add - (local.get $$add$ptr4$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head$i$i) - (local.get $$or$i$i) - ) - (local.set $$add$ptr6$i$i - (i32.add - (local.get $$add$ptr4$i$i) - (local.get $$sub5$i$i) - ) - ) - (local.set $$head7$i$i - (i32.add - (local.get $$add$ptr6$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head7$i$i) - (i32.const 40) - ) - (local.set $$126 - (i32.load - (i32.const 664) - ) - ) - (i32.store - (i32.const 204) - (local.get $$126) - ) - ) - (block - (local.set $$sp$0108$i - (i32.const 624) - ) - (loop $while-in45 - (block $while-out44 - (local.set $$127 - (i32.load - (local.get $$sp$0108$i) - ) - ) - (local.set $$size188$i - (i32.add - (local.get $$sp$0108$i) - (i32.const 4) - ) - ) - (local.set $$128 - (i32.load - (local.get $$size188$i) - ) - ) - (local.set $$add$ptr189$i - (i32.add - (local.get $$127) - (local.get $$128) - ) - ) - (local.set $$cmp190$i - (i32.eq - (local.get $$tbase$796$i) - (local.get $$add$ptr189$i) - ) - ) - (if - (local.get $$cmp190$i) - (block - (local.set $$$lcssa - (local.get $$127) - ) - (local.set $$$lcssa290 - (local.get $$128) - ) - (local.set $$size188$i$lcssa - (local.get $$size188$i) - ) - (local.set $$sp$0108$i$lcssa - (local.get $$sp$0108$i) - ) - (local.set $label - (i32.const 203) - ) - (br $while-out44) - ) - ) - (local.set $$next$i - (i32.add - (local.get $$sp$0108$i) - (i32.const 8) - ) - ) - (local.set $$129 - (i32.load - (local.get $$next$i) - ) - ) - (local.set $$cmp186$i - (i32.eq - (local.get $$129) - (i32.const 0) - ) - ) - (if - (local.get $$cmp186$i) - (br $while-out44) - (local.set $$sp$0108$i - (local.get $$129) - ) - ) - (br $while-in45) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 203) - ) - (block - (local.set $$sflags193$i - (i32.add - (local.get $$sp$0108$i$lcssa) - (i32.const 12) - ) - ) - (local.set $$130 - (i32.load - (local.get $$sflags193$i) - ) - ) - (local.set $$and194$i$204 - (i32.and - (local.get $$130) - (i32.const 8) - ) - ) - (local.set $$tobool195$i - (i32.eq - (local.get $$and194$i$204) - (i32.const 0) - ) - ) - (if - (local.get $$tobool195$i) - (block - (local.set $$cmp203$i - (i32.ge_u - (local.get $$119) - (local.get $$$lcssa) - ) - ) - (local.set $$cmp209$i - (i32.lt_u - (local.get $$119) - (local.get $$tbase$796$i) - ) - ) - (local.set $$or$cond98$i - (i32.and - (local.get $$cmp209$i) - (local.get $$cmp203$i) - ) - ) - (if - (local.get $$or$cond98$i) - (block - (local.set $$add212$i - (i32.add - (local.get $$$lcssa290) - (local.get $$tsize$795$i) - ) - ) - (i32.store - (local.get $$size188$i$lcssa) - (local.get $$add212$i) - ) - (local.set $$131 - (i32.load - (i32.const 188) - ) - ) - (local.set $$add$ptr$i$21$i - (i32.add - (local.get $$119) - (i32.const 8) - ) - ) - (local.set $$132 - (local.get $$add$ptr$i$21$i) - ) - (local.set $$and$i$22$i - (i32.and - (local.get $$132) - (i32.const 7) - ) - ) - (local.set $$cmp$i$23$i - (i32.eq - (local.get $$and$i$22$i) - (i32.const 0) - ) - ) - (local.set $$133 - (i32.sub - (i32.const 0) - (local.get $$132) - ) - ) - (local.set $$and3$i$24$i - (i32.and - (local.get $$133) - (i32.const 7) - ) - ) - (local.set $$cond$i$25$i - (if (result i32) - (local.get $$cmp$i$23$i) - (i32.const 0) - (local.get $$and3$i$24$i) - ) - ) - (local.set $$add$ptr4$i$26$i - (i32.add - (local.get $$119) - (local.get $$cond$i$25$i) - ) - ) - (local.set $$add215$i - (i32.sub - (local.get $$tsize$795$i) - (local.get $$cond$i$25$i) - ) - ) - (local.set $$sub5$i$27$i - (i32.add - (local.get $$add215$i) - (local.get $$131) - ) - ) - (i32.store - (i32.const 200) - (local.get $$add$ptr4$i$26$i) - ) - (i32.store - (i32.const 188) - (local.get $$sub5$i$27$i) - ) - (local.set $$or$i$28$i - (i32.or - (local.get $$sub5$i$27$i) - (i32.const 1) - ) - ) - (local.set $$head$i$29$i - (i32.add - (local.get $$add$ptr4$i$26$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head$i$29$i) - (local.get $$or$i$28$i) - ) - (local.set $$add$ptr6$i$30$i - (i32.add - (local.get $$add$ptr4$i$26$i) - (local.get $$sub5$i$27$i) - ) - ) - (local.set $$head7$i$31$i - (i32.add - (local.get $$add$ptr6$i$30$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head7$i$31$i) - (i32.const 40) - ) - (local.set $$134 - (i32.load - (i32.const 664) - ) - ) - (i32.store - (i32.const 204) - (local.get $$134) - ) - (br $do-once40) - ) - ) - ) - ) - ) - ) - (local.set $$135 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp218$i - (i32.lt_u - (local.get $$tbase$796$i) - (local.get $$135) - ) - ) - (if - (local.get $$cmp218$i) - (block - (i32.store - (i32.const 192) - (local.get $$tbase$796$i) - ) - (local.set $$150 - (local.get $$tbase$796$i) - ) - ) - (local.set $$150 - (local.get $$135) - ) - ) - (local.set $$add$ptr227$i - (i32.add - (local.get $$tbase$796$i) - (local.get $$tsize$795$i) - ) - ) - (local.set $$sp$1107$i - (i32.const 624) - ) - (loop $while-in47 - (block $while-out46 - (local.set $$136 - (i32.load - (local.get $$sp$1107$i) - ) - ) - (local.set $$cmp228$i - (i32.eq - (local.get $$136) - (local.get $$add$ptr227$i) - ) - ) - (if - (local.get $$cmp228$i) - (block - (local.set $$base226$i$lcssa - (local.get $$sp$1107$i) - ) - (local.set $$sp$1107$i$lcssa - (local.get $$sp$1107$i) - ) - (local.set $label - (i32.const 211) - ) - (br $while-out46) - ) - ) - (local.set $$next231$i - (i32.add - (local.get $$sp$1107$i) - (i32.const 8) - ) - ) - (local.set $$137 - (i32.load - (local.get $$next231$i) - ) - ) - (local.set $$cmp224$i - (i32.eq - (local.get $$137) - (i32.const 0) - ) - ) - (if - (local.get $$cmp224$i) - (block - (local.set $$sp$0$i$i$i - (i32.const 624) - ) - (br $while-out46) - ) - (local.set $$sp$1107$i - (local.get $$137) - ) - ) - (br $while-in47) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 211) - ) - (block - (local.set $$sflags235$i - (i32.add - (local.get $$sp$1107$i$lcssa) - (i32.const 12) - ) - ) - (local.set $$138 - (i32.load - (local.get $$sflags235$i) - ) - ) - (local.set $$and236$i - (i32.and - (local.get $$138) - (i32.const 8) - ) - ) - (local.set $$tobool237$i - (i32.eq - (local.get $$and236$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool237$i) - (block - (i32.store - (local.get $$base226$i$lcssa) - (local.get $$tbase$796$i) - ) - (local.set $$size245$i - (i32.add - (local.get $$sp$1107$i$lcssa) - (i32.const 4) - ) - ) - (local.set $$139 - (i32.load - (local.get $$size245$i) - ) - ) - (local.set $$add246$i - (i32.add - (local.get $$139) - (local.get $$tsize$795$i) - ) - ) - (i32.store - (local.get $$size245$i) - (local.get $$add246$i) - ) - (local.set $$add$ptr$i$32$i - (i32.add - (local.get $$tbase$796$i) - (i32.const 8) - ) - ) - (local.set $$140 - (local.get $$add$ptr$i$32$i) - ) - (local.set $$and$i$33$i - (i32.and - (local.get $$140) - (i32.const 7) - ) - ) - (local.set $$cmp$i$34$i - (i32.eq - (local.get $$and$i$33$i) - (i32.const 0) - ) - ) - (local.set $$141 - (i32.sub - (i32.const 0) - (local.get $$140) - ) - ) - (local.set $$and3$i$35$i - (i32.and - (local.get $$141) - (i32.const 7) - ) - ) - (local.set $$cond$i$36$i - (if (result i32) - (local.get $$cmp$i$34$i) - (i32.const 0) - (local.get $$and3$i$35$i) - ) - ) - (local.set $$add$ptr4$i$37$i - (i32.add - (local.get $$tbase$796$i) - (local.get $$cond$i$36$i) - ) - ) - (local.set $$add$ptr5$i$i - (i32.add - (local.get $$add$ptr227$i) - (i32.const 8) - ) - ) - (local.set $$142 - (local.get $$add$ptr5$i$i) - ) - (local.set $$and6$i$38$i - (i32.and - (local.get $$142) - (i32.const 7) - ) - ) - (local.set $$cmp7$i$i - (i32.eq - (local.get $$and6$i$38$i) - (i32.const 0) - ) - ) - (local.set $$143 - (i32.sub - (i32.const 0) - (local.get $$142) - ) - ) - (local.set $$and13$i$i - (i32.and - (local.get $$143) - (i32.const 7) - ) - ) - (local.set $$cond15$i$i - (if (result i32) - (local.get $$cmp7$i$i) - (i32.const 0) - (local.get $$and13$i$i) - ) - ) - (local.set $$add$ptr16$i$i - (i32.add - (local.get $$add$ptr227$i) - (local.get $$cond15$i$i) - ) - ) - (local.set $$sub$ptr$lhs$cast$i$39$i - (local.get $$add$ptr16$i$i) - ) - (local.set $$sub$ptr$rhs$cast$i$40$i - (local.get $$add$ptr4$i$37$i) - ) - (local.set $$sub$ptr$sub$i$41$i - (i32.sub - (local.get $$sub$ptr$lhs$cast$i$39$i) - (local.get $$sub$ptr$rhs$cast$i$40$i) - ) - ) - (local.set $$add$ptr17$i$i - (i32.add - (local.get $$add$ptr4$i$37$i) - (local.get $$nb$0) - ) - ) - (local.set $$sub18$i$i - (i32.sub - (local.get $$sub$ptr$sub$i$41$i) - (local.get $$nb$0) - ) - ) - (local.set $$or19$i$i - (i32.or - (local.get $$nb$0) - (i32.const 3) - ) - ) - (local.set $$head$i$42$i - (i32.add - (local.get $$add$ptr4$i$37$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head$i$42$i) - (local.get $$or19$i$i) - ) - (local.set $$cmp20$i$i - (i32.eq - (local.get $$add$ptr16$i$i) - (local.get $$119) - ) - ) - (block $do-once48 - (if - (local.get $$cmp20$i$i) - (block - (local.set $$144 - (i32.load - (i32.const 188) - ) - ) - (local.set $$add$i$i - (i32.add - (local.get $$144) - (local.get $$sub18$i$i) - ) - ) - (i32.store - (i32.const 188) - (local.get $$add$i$i) - ) - (i32.store - (i32.const 200) - (local.get $$add$ptr17$i$i) - ) - (local.set $$or22$i$i - (i32.or - (local.get $$add$i$i) - (i32.const 1) - ) - ) - (local.set $$head23$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head23$i$i) - (local.get $$or22$i$i) - ) - ) - (block - (local.set $$145 - (i32.load - (i32.const 196) - ) - ) - (local.set $$cmp24$i$i - (i32.eq - (local.get $$add$ptr16$i$i) - (local.get $$145) - ) - ) - (if - (local.get $$cmp24$i$i) - (block - (local.set $$146 - (i32.load - (i32.const 184) - ) - ) - (local.set $$add26$i$i - (i32.add - (local.get $$146) - (local.get $$sub18$i$i) - ) - ) - (i32.store - (i32.const 184) - (local.get $$add26$i$i) - ) - (i32.store - (i32.const 196) - (local.get $$add$ptr17$i$i) - ) - (local.set $$or28$i$i - (i32.or - (local.get $$add26$i$i) - (i32.const 1) - ) - ) - (local.set $$head29$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head29$i$i) - (local.get $$or28$i$i) - ) - (local.set $$add$ptr30$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (local.get $$add26$i$i) - ) - ) - (i32.store - (local.get $$add$ptr30$i$i) - (local.get $$add26$i$i) - ) - (br $do-once48) - ) - ) - (local.set $$head32$i$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 4) - ) - ) - (local.set $$147 - (i32.load - (local.get $$head32$i$i) - ) - ) - (local.set $$and33$i$i - (i32.and - (local.get $$147) - (i32.const 3) - ) - ) - (local.set $$cmp34$i$i - (i32.eq - (local.get $$and33$i$i) - (i32.const 1) - ) - ) - (if - (local.get $$cmp34$i$i) - (block - (local.set $$and37$i$i - (i32.and - (local.get $$147) - (i32.const -8) - ) - ) - (local.set $$shr$i$45$i - (i32.shr_u - (local.get $$147) - (i32.const 3) - ) - ) - (local.set $$cmp38$i$i - (i32.lt_u - (local.get $$147) - (i32.const 256) - ) - ) - (block $label$break$L331 - (if - (local.get $$cmp38$i$i) - (block - (local.set $$fd$i$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 8) - ) - ) - (local.set $$148 - (i32.load - (local.get $$fd$i$i) - ) - ) - (local.set $$bk$i$46$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 12) - ) - ) - (local.set $$149 - (i32.load - (local.get $$bk$i$46$i) - ) - ) - (local.set $$shl$i$47$i - (i32.shl - (local.get $$shr$i$45$i) - (i32.const 1) - ) - ) - (local.set $$arrayidx$i$48$i - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl$i$47$i) - (i32.const 2) - ) - ) - ) - (local.set $$cmp41$i$i - (i32.eq - (local.get $$148) - (local.get $$arrayidx$i$48$i) - ) - ) - (block $do-once51 - (if - (i32.eqz - (local.get $$cmp41$i$i) - ) - (block - (local.set $$cmp42$i$i - (i32.lt_u - (local.get $$148) - (local.get $$150) - ) - ) - (if - (local.get $$cmp42$i$i) - (call $_abort) - ) - (local.set $$bk43$i$i - (i32.add - (local.get $$148) - (i32.const 12) - ) - ) - (local.set $$151 - (i32.load - (local.get $$bk43$i$i) - ) - ) - (local.set $$cmp44$i$i - (i32.eq - (local.get $$151) - (local.get $$add$ptr16$i$i) - ) - ) - (if - (local.get $$cmp44$i$i) - (br $do-once51) - ) - (call $_abort) - ) - ) - ) - (local.set $$cmp46$i$49$i - (i32.eq - (local.get $$149) - (local.get $$148) - ) - ) - (if - (local.get $$cmp46$i$49$i) - (block - (local.set $$shl48$i$i - (i32.shl - (i32.const 1) - (local.get $$shr$i$45$i) - ) - ) - (local.set $$neg$i$i - (i32.xor - (local.get $$shl48$i$i) - (i32.const -1) - ) - ) - (local.set $$152 - (i32.load - (i32.const 176) - ) - ) - (local.set $$and49$i$i - (i32.and - (local.get $$152) - (local.get $$neg$i$i) - ) - ) - (i32.store - (i32.const 176) - (local.get $$and49$i$i) - ) - (br $label$break$L331) - ) - ) - (local.set $$cmp54$i$i - (i32.eq - (local.get $$149) - (local.get $$arrayidx$i$48$i) - ) - ) - (block $do-once53 - (if - (local.get $$cmp54$i$i) - (block - (local.set $$$pre5$i$i - (i32.add - (local.get $$149) - (i32.const 8) - ) - ) - (local.set $$fd68$pre$phi$i$iZ2D - (local.get $$$pre5$i$i) - ) - ) - (block - (local.set $$cmp57$i$i - (i32.lt_u - (local.get $$149) - (local.get $$150) - ) - ) - (if - (local.get $$cmp57$i$i) - (call $_abort) - ) - (local.set $$fd59$i$i - (i32.add - (local.get $$149) - (i32.const 8) - ) - ) - (local.set $$153 - (i32.load - (local.get $$fd59$i$i) - ) - ) - (local.set $$cmp60$i$i - (i32.eq - (local.get $$153) - (local.get $$add$ptr16$i$i) - ) - ) - (if - (local.get $$cmp60$i$i) - (block - (local.set $$fd68$pre$phi$i$iZ2D - (local.get $$fd59$i$i) - ) - (br $do-once53) - ) - ) - (call $_abort) - ) - ) - ) - (local.set $$bk67$i$i - (i32.add - (local.get $$148) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk67$i$i) - (local.get $$149) - ) - (i32.store - (local.get $$fd68$pre$phi$i$iZ2D) - (local.get $$148) - ) - ) - (block - (local.set $$parent$i$51$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 24) - ) - ) - (local.set $$154 - (i32.load - (local.get $$parent$i$51$i) - ) - ) - (local.set $$bk74$i$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 12) - ) - ) - (local.set $$155 - (i32.load - (local.get $$bk74$i$i) - ) - ) - (local.set $$cmp75$i$i - (i32.eq - (local.get $$155) - (local.get $$add$ptr16$i$i) - ) - ) - (block $do-once55 - (if - (local.get $$cmp75$i$i) - (block - (local.set $$child$i$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 16) - ) - ) - (local.set $$arrayidx96$i$i - (i32.add - (local.get $$child$i$i) - (i32.const 4) - ) - ) - (local.set $$159 - (i32.load - (local.get $$arrayidx96$i$i) - ) - ) - (local.set $$cmp97$i$i - (i32.eq - (local.get $$159) - (i32.const 0) - ) - ) - (if - (local.get $$cmp97$i$i) - (block - (local.set $$160 - (i32.load - (local.get $$child$i$i) - ) - ) - (local.set $$cmp100$i$i - (i32.eq - (local.get $$160) - (i32.const 0) - ) - ) - (if - (local.get $$cmp100$i$i) - (block - (local.set $$R$3$i$i - (i32.const 0) - ) - (br $do-once55) - ) - (block - (local.set $$R$1$i$i - (local.get $$160) - ) - (local.set $$RP$1$i$i - (local.get $$child$i$i) - ) - ) - ) - ) - (block - (local.set $$R$1$i$i - (local.get $$159) - ) - (local.set $$RP$1$i$i - (local.get $$arrayidx96$i$i) - ) - ) - ) - (loop $while-in58 - (block $while-out57 - (local.set $$arrayidx103$i$i - (i32.add - (local.get $$R$1$i$i) - (i32.const 20) - ) - ) - (local.set $$161 - (i32.load - (local.get $$arrayidx103$i$i) - ) - ) - (local.set $$cmp104$i$i - (i32.eq - (local.get $$161) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp104$i$i) - ) - (block - (local.set $$R$1$i$i - (local.get $$161) - ) - (local.set $$RP$1$i$i - (local.get $$arrayidx103$i$i) - ) - (br $while-in58) - ) - ) - (local.set $$arrayidx107$i$i - (i32.add - (local.get $$R$1$i$i) - (i32.const 16) - ) - ) - (local.set $$162 - (i32.load - (local.get $$arrayidx107$i$i) - ) - ) - (local.set $$cmp108$i$i - (i32.eq - (local.get $$162) - (i32.const 0) - ) - ) - (if - (local.get $$cmp108$i$i) - (block - (local.set $$R$1$i$i$lcssa - (local.get $$R$1$i$i) - ) - (local.set $$RP$1$i$i$lcssa - (local.get $$RP$1$i$i) - ) - (br $while-out57) - ) - (block - (local.set $$R$1$i$i - (local.get $$162) - ) - (local.set $$RP$1$i$i - (local.get $$arrayidx107$i$i) - ) - ) - ) - (br $while-in58) - ) - ) - (local.set $$cmp112$i$i - (i32.lt_u - (local.get $$RP$1$i$i$lcssa) - (local.get $$150) - ) - ) - (if - (local.get $$cmp112$i$i) - (call $_abort) - (block - (i32.store - (local.get $$RP$1$i$i$lcssa) - (i32.const 0) - ) - (local.set $$R$3$i$i - (local.get $$R$1$i$i$lcssa) - ) - (br $do-once55) - ) - ) - ) - (block - (local.set $$fd78$i$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 8) - ) - ) - (local.set $$156 - (i32.load - (local.get $$fd78$i$i) - ) - ) - (local.set $$cmp81$i$i - (i32.lt_u - (local.get $$156) - (local.get $$150) - ) - ) - (if - (local.get $$cmp81$i$i) - (call $_abort) - ) - (local.set $$bk82$i$i - (i32.add - (local.get $$156) - (i32.const 12) - ) - ) - (local.set $$157 - (i32.load - (local.get $$bk82$i$i) - ) - ) - (local.set $$cmp83$i$i - (i32.eq - (local.get $$157) - (local.get $$add$ptr16$i$i) - ) - ) - (if - (i32.eqz - (local.get $$cmp83$i$i) - ) - (call $_abort) - ) - (local.set $$fd85$i$i - (i32.add - (local.get $$155) - (i32.const 8) - ) - ) - (local.set $$158 - (i32.load - (local.get $$fd85$i$i) - ) - ) - (local.set $$cmp86$i$i - (i32.eq - (local.get $$158) - (local.get $$add$ptr16$i$i) - ) - ) - (if - (local.get $$cmp86$i$i) - (block - (i32.store - (local.get $$bk82$i$i) - (local.get $$155) - ) - (i32.store - (local.get $$fd85$i$i) - (local.get $$156) - ) - (local.set $$R$3$i$i - (local.get $$155) - ) - (br $do-once55) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$cmp120$i$53$i - (i32.eq - (local.get $$154) - (i32.const 0) - ) - ) - (if - (local.get $$cmp120$i$53$i) - (br $label$break$L331) - ) - (local.set $$index$i$54$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 28) - ) - ) - (local.set $$163 - (i32.load - (local.get $$index$i$54$i) - ) - ) - (local.set $$arrayidx123$i$i - (i32.add - (i32.const 480) - (i32.shl - (local.get $$163) - (i32.const 2) - ) - ) - ) - (local.set $$164 - (i32.load - (local.get $$arrayidx123$i$i) - ) - ) - (local.set $$cmp124$i$i - (i32.eq - (local.get $$add$ptr16$i$i) - (local.get $$164) - ) - ) - (block $do-once59 - (if - (local.get $$cmp124$i$i) - (block - (i32.store - (local.get $$arrayidx123$i$i) - (local.get $$R$3$i$i) - ) - (local.set $$cond2$i$i - (i32.eq - (local.get $$R$3$i$i) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cond2$i$i) - ) - (br $do-once59) - ) - (local.set $$shl131$i$i - (i32.shl - (i32.const 1) - (local.get $$163) - ) - ) - (local.set $$neg132$i$i - (i32.xor - (local.get $$shl131$i$i) - (i32.const -1) - ) - ) - (local.set $$165 - (i32.load - (i32.const 180) - ) - ) - (local.set $$and133$i$i - (i32.and - (local.get $$165) - (local.get $$neg132$i$i) - ) - ) - (i32.store - (i32.const 180) - (local.get $$and133$i$i) - ) - (br $label$break$L331) - ) - (block - (local.set $$166 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp137$i$i - (i32.lt_u - (local.get $$154) - (local.get $$166) - ) - ) - (if - (local.get $$cmp137$i$i) - (call $_abort) - ) - (local.set $$arrayidx143$i$i - (i32.add - (local.get $$154) - (i32.const 16) - ) - ) - (local.set $$167 - (i32.load - (local.get $$arrayidx143$i$i) - ) - ) - (local.set $$cmp144$i$i - (i32.eq - (local.get $$167) - (local.get $$add$ptr16$i$i) - ) - ) - (if - (local.get $$cmp144$i$i) - (i32.store - (local.get $$arrayidx143$i$i) - (local.get $$R$3$i$i) - ) - (block - (local.set $$arrayidx151$i$i - (i32.add - (local.get $$154) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx151$i$i) - (local.get $$R$3$i$i) - ) - ) - ) - (local.set $$cmp156$i$i - (i32.eq - (local.get $$R$3$i$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp156$i$i) - (br $label$break$L331) - ) - ) - ) - ) - (local.set $$168 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp160$i$i - (i32.lt_u - (local.get $$R$3$i$i) - (local.get $$168) - ) - ) - (if - (local.get $$cmp160$i$i) - (call $_abort) - ) - (local.set $$parent165$i$i - (i32.add - (local.get $$R$3$i$i) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent165$i$i) - (local.get $$154) - ) - (local.set $$child166$i$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 16) - ) - ) - (local.set $$169 - (i32.load - (local.get $$child166$i$i) - ) - ) - (local.set $$cmp168$i$i - (i32.eq - (local.get $$169) - (i32.const 0) - ) - ) - (block $do-once61 - (if - (i32.eqz - (local.get $$cmp168$i$i) - ) - (block - (local.set $$cmp172$i$i - (i32.lt_u - (local.get $$169) - (local.get $$168) - ) - ) - (if - (local.get $$cmp172$i$i) - (call $_abort) - (block - (local.set $$arrayidx178$i$i - (i32.add - (local.get $$R$3$i$i) - (i32.const 16) - ) - ) - (i32.store - (local.get $$arrayidx178$i$i) - (local.get $$169) - ) - (local.set $$parent179$i$i - (i32.add - (local.get $$169) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent179$i$i) - (local.get $$R$3$i$i) - ) - (br $do-once61) - ) - ) - ) - ) - ) - (local.set $$arrayidx184$i$i - (i32.add - (local.get $$child166$i$i) - (i32.const 4) - ) - ) - (local.set $$170 - (i32.load - (local.get $$arrayidx184$i$i) - ) - ) - (local.set $$cmp185$i$i - (i32.eq - (local.get $$170) - (i32.const 0) - ) - ) - (if - (local.get $$cmp185$i$i) - (br $label$break$L331) - ) - (local.set $$171 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp189$i$i - (i32.lt_u - (local.get $$170) - (local.get $$171) - ) - ) - (if - (local.get $$cmp189$i$i) - (call $_abort) - (block - (local.set $$arrayidx195$i$i - (i32.add - (local.get $$R$3$i$i) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx195$i$i) - (local.get $$170) - ) - (local.set $$parent196$i$i - (i32.add - (local.get $$170) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent196$i$i) - (local.get $$R$3$i$i) - ) - (br $label$break$L331) - ) - ) - ) - ) - ) - (local.set $$add$ptr205$i$i - (i32.add - (local.get $$add$ptr16$i$i) - (local.get $$and37$i$i) - ) - ) - (local.set $$add206$i$i - (i32.add - (local.get $$and37$i$i) - (local.get $$sub18$i$i) - ) - ) - (local.set $$oldfirst$0$i$i - (local.get $$add$ptr205$i$i) - ) - (local.set $$qsize$0$i$i - (local.get $$add206$i$i) - ) - ) - (block - (local.set $$oldfirst$0$i$i - (local.get $$add$ptr16$i$i) - ) - (local.set $$qsize$0$i$i - (local.get $$sub18$i$i) - ) - ) - ) - (local.set $$head208$i$i - (i32.add - (local.get $$oldfirst$0$i$i) - (i32.const 4) - ) - ) - (local.set $$172 - (i32.load - (local.get $$head208$i$i) - ) - ) - (local.set $$and209$i$i - (i32.and - (local.get $$172) - (i32.const -2) - ) - ) - (i32.store - (local.get $$head208$i$i) - (local.get $$and209$i$i) - ) - (local.set $$or210$i$i - (i32.or - (local.get $$qsize$0$i$i) - (i32.const 1) - ) - ) - (local.set $$head211$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head211$i$i) - (local.get $$or210$i$i) - ) - (local.set $$add$ptr212$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (local.get $$qsize$0$i$i) - ) - ) - (i32.store - (local.get $$add$ptr212$i$i) - (local.get $$qsize$0$i$i) - ) - (local.set $$shr214$i$i - (i32.shr_u - (local.get $$qsize$0$i$i) - (i32.const 3) - ) - ) - (local.set $$cmp215$i$i - (i32.lt_u - (local.get $$qsize$0$i$i) - (i32.const 256) - ) - ) - (if - (local.get $$cmp215$i$i) - (block - (local.set $$shl221$i$i - (i32.shl - (local.get $$shr214$i$i) - (i32.const 1) - ) - ) - (local.set $$arrayidx223$i$i - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl221$i$i) - (i32.const 2) - ) - ) - ) - (local.set $$173 - (i32.load - (i32.const 176) - ) - ) - (local.set $$shl226$i$i - (i32.shl - (i32.const 1) - (local.get $$shr214$i$i) - ) - ) - (local.set $$and227$i$i - (i32.and - (local.get $$173) - (local.get $$shl226$i$i) - ) - ) - (local.set $$tobool228$i$i - (i32.eq - (local.get $$and227$i$i) - (i32.const 0) - ) - ) - (block $do-once63 - (if - (local.get $$tobool228$i$i) - (block - (local.set $$or232$i$i - (i32.or - (local.get $$173) - (local.get $$shl226$i$i) - ) - ) - (i32.store - (i32.const 176) - (local.get $$or232$i$i) - ) - (local.set $$$pre$i$56$i - (i32.add - (local.get $$arrayidx223$i$i) - (i32.const 8) - ) - ) - (local.set $$$pre$phi$i$57$iZ2D - (local.get $$$pre$i$56$i) - ) - (local.set $$F224$0$i$i - (local.get $$arrayidx223$i$i) - ) - ) - (block - (local.set $$174 - (i32.add - (local.get $$arrayidx223$i$i) - (i32.const 8) - ) - ) - (local.set $$175 - (i32.load - (local.get $$174) - ) - ) - (local.set $$176 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp236$i$i - (i32.lt_u - (local.get $$175) - (local.get $$176) - ) - ) - (if - (i32.eqz - (local.get $$cmp236$i$i) - ) - (block - (local.set $$$pre$phi$i$57$iZ2D - (local.get $$174) - ) - (local.set $$F224$0$i$i - (local.get $$175) - ) - (br $do-once63) - ) - ) - (call $_abort) - ) - ) - ) - (i32.store - (local.get $$$pre$phi$i$57$iZ2D) - (local.get $$add$ptr17$i$i) - ) - (local.set $$bk246$i$i - (i32.add - (local.get $$F224$0$i$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk246$i$i) - (local.get $$add$ptr17$i$i) - ) - (local.set $$fd247$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd247$i$i) - (local.get $$F224$0$i$i) - ) - (local.set $$bk248$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk248$i$i) - (local.get $$arrayidx223$i$i) - ) - (br $do-once48) - ) - ) - (local.set $$shr253$i$i - (i32.shr_u - (local.get $$qsize$0$i$i) - (i32.const 8) - ) - ) - (local.set $$cmp254$i$i - (i32.eq - (local.get $$shr253$i$i) - (i32.const 0) - ) - ) - (block $do-once65 - (if - (local.get $$cmp254$i$i) - (local.set $$I252$0$i$i - (i32.const 0) - ) - (block - (local.set $$cmp258$i$i - (i32.gt_u - (local.get $$qsize$0$i$i) - (i32.const 16777215) - ) - ) - (if - (local.get $$cmp258$i$i) - (block - (local.set $$I252$0$i$i - (i32.const 31) - ) - (br $do-once65) - ) - ) - (local.set $$sub262$i$i - (i32.add - (local.get $$shr253$i$i) - (i32.const 1048320) - ) - ) - (local.set $$shr263$i$i - (i32.shr_u - (local.get $$sub262$i$i) - (i32.const 16) - ) - ) - (local.set $$and264$i$i - (i32.and - (local.get $$shr263$i$i) - (i32.const 8) - ) - ) - (local.set $$shl265$i$i - (i32.shl - (local.get $$shr253$i$i) - (local.get $$and264$i$i) - ) - ) - (local.set $$sub266$i$i - (i32.add - (local.get $$shl265$i$i) - (i32.const 520192) - ) - ) - (local.set $$shr267$i$i - (i32.shr_u - (local.get $$sub266$i$i) - (i32.const 16) - ) - ) - (local.set $$and268$i$i - (i32.and - (local.get $$shr267$i$i) - (i32.const 4) - ) - ) - (local.set $$add269$i$i - (i32.or - (local.get $$and268$i$i) - (local.get $$and264$i$i) - ) - ) - (local.set $$shl270$i$i - (i32.shl - (local.get $$shl265$i$i) - (local.get $$and268$i$i) - ) - ) - (local.set $$sub271$i$i - (i32.add - (local.get $$shl270$i$i) - (i32.const 245760) - ) - ) - (local.set $$shr272$i$i - (i32.shr_u - (local.get $$sub271$i$i) - (i32.const 16) - ) - ) - (local.set $$and273$i$i - (i32.and - (local.get $$shr272$i$i) - (i32.const 2) - ) - ) - (local.set $$add274$i$i - (i32.or - (local.get $$add269$i$i) - (local.get $$and273$i$i) - ) - ) - (local.set $$sub275$i$i - (i32.sub - (i32.const 14) - (local.get $$add274$i$i) - ) - ) - (local.set $$shl276$i$i - (i32.shl - (local.get $$shl270$i$i) - (local.get $$and273$i$i) - ) - ) - (local.set $$shr277$i$i - (i32.shr_u - (local.get $$shl276$i$i) - (i32.const 15) - ) - ) - (local.set $$add278$i$i - (i32.add - (local.get $$sub275$i$i) - (local.get $$shr277$i$i) - ) - ) - (local.set $$shl279$i$i - (i32.shl - (local.get $$add278$i$i) - (i32.const 1) - ) - ) - (local.set $$add280$i$i - (i32.add - (local.get $$add278$i$i) - (i32.const 7) - ) - ) - (local.set $$shr281$i$i - (i32.shr_u - (local.get $$qsize$0$i$i) - (local.get $$add280$i$i) - ) - ) - (local.set $$and282$i$i - (i32.and - (local.get $$shr281$i$i) - (i32.const 1) - ) - ) - (local.set $$add283$i$i - (i32.or - (local.get $$and282$i$i) - (local.get $$shl279$i$i) - ) - ) - (local.set $$I252$0$i$i - (local.get $$add283$i$i) - ) - ) - ) - ) - (local.set $$arrayidx287$i$i - (i32.add - (i32.const 480) - (i32.shl - (local.get $$I252$0$i$i) - (i32.const 2) - ) - ) - ) - (local.set $$index288$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 28) - ) - ) - (i32.store - (local.get $$index288$i$i) - (local.get $$I252$0$i$i) - ) - (local.set $$child289$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 16) - ) - ) - (local.set $$arrayidx290$i$i - (i32.add - (local.get $$child289$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$arrayidx290$i$i) - (i32.const 0) - ) - (i32.store - (local.get $$child289$i$i) - (i32.const 0) - ) - (local.set $$177 - (i32.load - (i32.const 180) - ) - ) - (local.set $$shl294$i$i - (i32.shl - (i32.const 1) - (local.get $$I252$0$i$i) - ) - ) - (local.set $$and295$i$i - (i32.and - (local.get $$177) - (local.get $$shl294$i$i) - ) - ) - (local.set $$tobool296$i$i - (i32.eq - (local.get $$and295$i$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool296$i$i) - (block - (local.set $$or300$i$i - (i32.or - (local.get $$177) - (local.get $$shl294$i$i) - ) - ) - (i32.store - (i32.const 180) - (local.get $$or300$i$i) - ) - (i32.store - (local.get $$arrayidx287$i$i) - (local.get $$add$ptr17$i$i) - ) - (local.set $$parent301$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent301$i$i) - (local.get $$arrayidx287$i$i) - ) - (local.set $$bk302$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk302$i$i) - (local.get $$add$ptr17$i$i) - ) - (local.set $$fd303$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd303$i$i) - (local.get $$add$ptr17$i$i) - ) - (br $do-once48) - ) - ) - (local.set $$178 - (i32.load - (local.get $$arrayidx287$i$i) - ) - ) - (local.set $$cmp306$i$i - (i32.eq - (local.get $$I252$0$i$i) - (i32.const 31) - ) - ) - (local.set $$shr310$i$i - (i32.shr_u - (local.get $$I252$0$i$i) - (i32.const 1) - ) - ) - (local.set $$sub313$i$i - (i32.sub - (i32.const 25) - (local.get $$shr310$i$i) - ) - ) - (local.set $$cond315$i$i - (if (result i32) - (local.get $$cmp306$i$i) - (i32.const 0) - (local.get $$sub313$i$i) - ) - ) - (local.set $$shl316$i$i - (i32.shl - (local.get $$qsize$0$i$i) - (local.get $$cond315$i$i) - ) - ) - (local.set $$K305$0$i$i - (local.get $$shl316$i$i) - ) - (local.set $$T$0$i$58$i - (local.get $$178) - ) - (loop $while-in68 - (block $while-out67 - (local.set $$head317$i$i - (i32.add - (local.get $$T$0$i$58$i) - (i32.const 4) - ) - ) - (local.set $$179 - (i32.load - (local.get $$head317$i$i) - ) - ) - (local.set $$and318$i$i - (i32.and - (local.get $$179) - (i32.const -8) - ) - ) - (local.set $$cmp319$i$i - (i32.eq - (local.get $$and318$i$i) - (local.get $$qsize$0$i$i) - ) - ) - (if - (local.get $$cmp319$i$i) - (block - (local.set $$T$0$i$58$i$lcssa - (local.get $$T$0$i$58$i) - ) - (local.set $label - (i32.const 281) - ) - (br $while-out67) - ) - ) - (local.set $$shr322$i$i - (i32.shr_u - (local.get $$K305$0$i$i) - (i32.const 31) - ) - ) - (local.set $$arrayidx325$i$i - (i32.add - (i32.add - (local.get $$T$0$i$58$i) - (i32.const 16) - ) - (i32.shl - (local.get $$shr322$i$i) - (i32.const 2) - ) - ) - ) - (local.set $$shl326$i$i - (i32.shl - (local.get $$K305$0$i$i) - (i32.const 1) - ) - ) - (local.set $$180 - (i32.load - (local.get $$arrayidx325$i$i) - ) - ) - (local.set $$cmp327$i$i - (i32.eq - (local.get $$180) - (i32.const 0) - ) - ) - (if - (local.get $$cmp327$i$i) - (block - (local.set $$T$0$i$58$i$lcssa283 - (local.get $$T$0$i$58$i) - ) - (local.set $$arrayidx325$i$i$lcssa - (local.get $$arrayidx325$i$i) - ) - (local.set $label - (i32.const 278) - ) - (br $while-out67) - ) - (block - (local.set $$K305$0$i$i - (local.get $$shl326$i$i) - ) - (local.set $$T$0$i$58$i - (local.get $$180) - ) - ) - ) - (br $while-in68) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 278) - ) - (block - (local.set $$181 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp332$i$i - (i32.lt_u - (local.get $$arrayidx325$i$i$lcssa) - (local.get $$181) - ) - ) - (if - (local.get $$cmp332$i$i) - (call $_abort) - (block - (i32.store - (local.get $$arrayidx325$i$i$lcssa) - (local.get $$add$ptr17$i$i) - ) - (local.set $$parent337$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent337$i$i) - (local.get $$T$0$i$58$i$lcssa283) - ) - (local.set $$bk338$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk338$i$i) - (local.get $$add$ptr17$i$i) - ) - (local.set $$fd339$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd339$i$i) - (local.get $$add$ptr17$i$i) - ) - (br $do-once48) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 281) - ) - (block - (local.set $$fd344$i$i - (i32.add - (local.get $$T$0$i$58$i$lcssa) - (i32.const 8) - ) - ) - (local.set $$182 - (i32.load - (local.get $$fd344$i$i) - ) - ) - (local.set $$183 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp350$i$i - (i32.ge_u - (local.get $$182) - (local.get $$183) - ) - ) - (local.set $$not$cmp346$i$i - (i32.ge_u - (local.get $$T$0$i$58$i$lcssa) - (local.get $$183) - ) - ) - (local.set $$184 - (i32.and - (local.get $$cmp350$i$i) - (local.get $$not$cmp346$i$i) - ) - ) - (if - (local.get $$184) - (block - (local.set $$bk357$i$i - (i32.add - (local.get $$182) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk357$i$i) - (local.get $$add$ptr17$i$i) - ) - (i32.store - (local.get $$fd344$i$i) - (local.get $$add$ptr17$i$i) - ) - (local.set $$fd359$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd359$i$i) - (local.get $$182) - ) - (local.set $$bk360$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk360$i$i) - (local.get $$T$0$i$58$i$lcssa) - ) - (local.set $$parent361$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent361$i$i) - (i32.const 0) - ) - (br $do-once48) - ) - (call $_abort) - ) - ) - ) - ) - ) - ) - ) - (local.set $$add$ptr369$i$i - (i32.add - (local.get $$add$ptr4$i$37$i) - (i32.const 8) - ) - ) - (local.set $$retval$0 - (local.get $$add$ptr369$i$i) - ) - (return - (local.get $$retval$0) - ) - ) - (local.set $$sp$0$i$i$i - (i32.const 624) - ) - ) - ) - ) - (loop $while-in70 - (block $while-out69 - (local.set $$185 - (i32.load - (local.get $$sp$0$i$i$i) - ) - ) - (local.set $$cmp$i$i$i - (i32.gt_u - (local.get $$185) - (local.get $$119) - ) - ) - (if - (i32.eqz - (local.get $$cmp$i$i$i) - ) - (block - (local.set $$size$i$i$i - (i32.add - (local.get $$sp$0$i$i$i) - (i32.const 4) - ) - ) - (local.set $$186 - (i32.load - (local.get $$size$i$i$i) - ) - ) - (local.set $$add$ptr$i$i$i - (i32.add - (local.get $$185) - (local.get $$186) - ) - ) - (local.set $$cmp2$i$i$i - (i32.gt_u - (local.get $$add$ptr$i$i$i) - (local.get $$119) - ) - ) - (if - (local.get $$cmp2$i$i$i) - (block - (local.set $$add$ptr$i$i$i$lcssa - (local.get $$add$ptr$i$i$i) - ) - (br $while-out69) - ) - ) - ) - ) - (local.set $$next$i$i$i - (i32.add - (local.get $$sp$0$i$i$i) - (i32.const 8) - ) - ) - (local.set $$187 - (i32.load - (local.get $$next$i$i$i) - ) - ) - (local.set $$sp$0$i$i$i - (local.get $$187) - ) - (br $while-in70) - ) - ) - (local.set $$add$ptr2$i$i - (i32.add - (local.get $$add$ptr$i$i$i$lcssa) - (i32.const -47) - ) - ) - (local.set $$add$ptr3$i$i - (i32.add - (local.get $$add$ptr2$i$i) - (i32.const 8) - ) - ) - (local.set $$188 - (local.get $$add$ptr3$i$i) - ) - (local.set $$and$i$14$i - (i32.and - (local.get $$188) - (i32.const 7) - ) - ) - (local.set $$cmp$i$15$i - (i32.eq - (local.get $$and$i$14$i) - (i32.const 0) - ) - ) - (local.set $$189 - (i32.sub - (i32.const 0) - (local.get $$188) - ) - ) - (local.set $$and6$i$i - (i32.and - (local.get $$189) - (i32.const 7) - ) - ) - (local.set $$cond$i$16$i - (if (result i32) - (local.get $$cmp$i$15$i) - (i32.const 0) - (local.get $$and6$i$i) - ) - ) - (local.set $$add$ptr7$i$i - (i32.add - (local.get $$add$ptr2$i$i) - (local.get $$cond$i$16$i) - ) - ) - (local.set $$add$ptr8$i122$i - (i32.add - (local.get $$119) - (i32.const 16) - ) - ) - (local.set $$cmp9$i$i - (i32.lt_u - (local.get $$add$ptr7$i$i) - (local.get $$add$ptr8$i122$i) - ) - ) - (local.set $$cond13$i$i - (if (result i32) - (local.get $$cmp9$i$i) - (local.get $$119) - (local.get $$add$ptr7$i$i) - ) - ) - (local.set $$add$ptr14$i$i - (i32.add - (local.get $$cond13$i$i) - (i32.const 8) - ) - ) - (local.set $$add$ptr15$i$i - (i32.add - (local.get $$cond13$i$i) - (i32.const 24) - ) - ) - (local.set $$sub16$i$i - (i32.add - (local.get $$tsize$795$i) - (i32.const -40) - ) - ) - (local.set $$add$ptr$i$1$i$i - (i32.add - (local.get $$tbase$796$i) - (i32.const 8) - ) - ) - (local.set $$190 - (local.get $$add$ptr$i$1$i$i) - ) - (local.set $$and$i$i$i - (i32.and - (local.get $$190) - (i32.const 7) - ) - ) - (local.set $$cmp$i$2$i$i - (i32.eq - (local.get $$and$i$i$i) - (i32.const 0) - ) - ) - (local.set $$191 - (i32.sub - (i32.const 0) - (local.get $$190) - ) - ) - (local.set $$and3$i$i$i - (i32.and - (local.get $$191) - (i32.const 7) - ) - ) - (local.set $$cond$i$i$i - (if (result i32) - (local.get $$cmp$i$2$i$i) - (i32.const 0) - (local.get $$and3$i$i$i) - ) - ) - (local.set $$add$ptr4$i$i$i - (i32.add - (local.get $$tbase$796$i) - (local.get $$cond$i$i$i) - ) - ) - (local.set $$sub5$i$i$i - (i32.sub - (local.get $$sub16$i$i) - (local.get $$cond$i$i$i) - ) - ) - (i32.store - (i32.const 200) - (local.get $$add$ptr4$i$i$i) - ) - (i32.store - (i32.const 188) - (local.get $$sub5$i$i$i) - ) - (local.set $$or$i$i$i - (i32.or - (local.get $$sub5$i$i$i) - (i32.const 1) - ) - ) - (local.set $$head$i$i$i - (i32.add - (local.get $$add$ptr4$i$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head$i$i$i) - (local.get $$or$i$i$i) - ) - (local.set $$add$ptr6$i$i$i - (i32.add - (local.get $$add$ptr4$i$i$i) - (local.get $$sub5$i$i$i) - ) - ) - (local.set $$head7$i$i$i - (i32.add - (local.get $$add$ptr6$i$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head7$i$i$i) - (i32.const 40) - ) - (local.set $$192 - (i32.load - (i32.const 664) - ) - ) - (i32.store - (i32.const 204) - (local.get $$192) - ) - (local.set $$head$i$17$i - (i32.add - (local.get $$cond13$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head$i$17$i) - (i32.const 27) - ) - (i32.store - (local.get $$add$ptr14$i$i) - (i32.load - (i32.const 624) - ) - ) - (i32.store - (i32.add - (local.get $$add$ptr14$i$i) - (i32.const 4) - ) - (i32.load - (i32.add - (i32.const 624) - (i32.const 4) - ) - ) - ) - (i32.store - (i32.add - (local.get $$add$ptr14$i$i) - (i32.const 8) - ) - (i32.load - (i32.add - (i32.const 624) - (i32.const 8) - ) - ) - ) - (i32.store - (i32.add - (local.get $$add$ptr14$i$i) - (i32.const 12) - ) - (i32.load - (i32.add - (i32.const 624) - (i32.const 12) - ) - ) - ) - (i32.store - (i32.const 624) - (local.get $$tbase$796$i) - ) - (i32.store - (i32.const 628) - (local.get $$tsize$795$i) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (i32.store - (i32.const 632) - (local.get $$add$ptr14$i$i) - ) - (local.set $$p$0$i$i - (local.get $$add$ptr15$i$i) - ) - (loop $while-in72 - (block $while-out71 - (local.set $$add$ptr24$i$i - (i32.add - (local.get $$p$0$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$add$ptr24$i$i) - (i32.const 7) - ) - (local.set $$193 - (i32.add - (local.get $$add$ptr24$i$i) - (i32.const 4) - ) - ) - (local.set $$cmp27$i$i - (i32.lt_u - (local.get $$193) - (local.get $$add$ptr$i$i$i$lcssa) - ) - ) - (if - (local.get $$cmp27$i$i) - (local.set $$p$0$i$i - (local.get $$add$ptr24$i$i) - ) - (br $while-out71) - ) - (br $while-in72) - ) - ) - (local.set $$cmp28$i$i - (i32.eq - (local.get $$cond13$i$i) - (local.get $$119) - ) - ) - (if - (i32.eqz - (local.get $$cmp28$i$i) - ) - (block - (local.set $$sub$ptr$lhs$cast$i$i - (local.get $$cond13$i$i) - ) - (local.set $$sub$ptr$rhs$cast$i$i - (local.get $$119) - ) - (local.set $$sub$ptr$sub$i$i - (i32.sub - (local.get $$sub$ptr$lhs$cast$i$i) - (local.get $$sub$ptr$rhs$cast$i$i) - ) - ) - (local.set $$194 - (i32.load - (local.get $$head$i$17$i) - ) - ) - (local.set $$and32$i$i - (i32.and - (local.get $$194) - (i32.const -2) - ) - ) - (i32.store - (local.get $$head$i$17$i) - (local.get $$and32$i$i) - ) - (local.set $$or33$i$i - (i32.or - (local.get $$sub$ptr$sub$i$i) - (i32.const 1) - ) - ) - (local.set $$head34$i$i - (i32.add - (local.get $$119) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head34$i$i) - (local.get $$or33$i$i) - ) - (i32.store - (local.get $$cond13$i$i) - (local.get $$sub$ptr$sub$i$i) - ) - (local.set $$shr$i$i - (i32.shr_u - (local.get $$sub$ptr$sub$i$i) - (i32.const 3) - ) - ) - (local.set $$cmp36$i$i - (i32.lt_u - (local.get $$sub$ptr$sub$i$i) - (i32.const 256) - ) - ) - (if - (local.get $$cmp36$i$i) - (block - (local.set $$shl$i$19$i - (i32.shl - (local.get $$shr$i$i) - (i32.const 1) - ) - ) - (local.set $$arrayidx$i$20$i - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl$i$19$i) - (i32.const 2) - ) - ) - ) - (local.set $$195 - (i32.load - (i32.const 176) - ) - ) - (local.set $$shl39$i$i - (i32.shl - (i32.const 1) - (local.get $$shr$i$i) - ) - ) - (local.set $$and40$i$i - (i32.and - (local.get $$195) - (local.get $$shl39$i$i) - ) - ) - (local.set $$tobool$i$i - (i32.eq - (local.get $$and40$i$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$i) - (block - (local.set $$or44$i$i - (i32.or - (local.get $$195) - (local.get $$shl39$i$i) - ) - ) - (i32.store - (i32.const 176) - (local.get $$or44$i$i) - ) - (local.set $$$pre$i$i - (i32.add - (local.get $$arrayidx$i$20$i) - (i32.const 8) - ) - ) - (local.set $$$pre$phi$i$iZ2D - (local.get $$$pre$i$i) - ) - (local.set $$F$0$i$i - (local.get $$arrayidx$i$20$i) - ) - ) - (block - (local.set $$196 - (i32.add - (local.get $$arrayidx$i$20$i) - (i32.const 8) - ) - ) - (local.set $$197 - (i32.load - (local.get $$196) - ) - ) - (local.set $$198 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp46$i$i - (i32.lt_u - (local.get $$197) - (local.get $$198) - ) - ) - (if - (local.get $$cmp46$i$i) - (call $_abort) - (block - (local.set $$$pre$phi$i$iZ2D - (local.get $$196) - ) - (local.set $$F$0$i$i - (local.get $$197) - ) - ) - ) - ) - ) - (i32.store - (local.get $$$pre$phi$i$iZ2D) - (local.get $$119) - ) - (local.set $$bk$i$i - (i32.add - (local.get $$F$0$i$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk$i$i) - (local.get $$119) - ) - (local.set $$fd54$i$i - (i32.add - (local.get $$119) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd54$i$i) - (local.get $$F$0$i$i) - ) - (local.set $$bk55$i$i - (i32.add - (local.get $$119) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk55$i$i) - (local.get $$arrayidx$i$20$i) - ) - (br $do-once40) - ) - ) - (local.set $$shr58$i$i - (i32.shr_u - (local.get $$sub$ptr$sub$i$i) - (i32.const 8) - ) - ) - (local.set $$cmp59$i$i - (i32.eq - (local.get $$shr58$i$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp59$i$i) - (local.set $$I57$0$i$i - (i32.const 0) - ) - (block - (local.set $$cmp63$i$i - (i32.gt_u - (local.get $$sub$ptr$sub$i$i) - (i32.const 16777215) - ) - ) - (if - (local.get $$cmp63$i$i) - (local.set $$I57$0$i$i - (i32.const 31) - ) - (block - (local.set $$sub67$i$i - (i32.add - (local.get $$shr58$i$i) - (i32.const 1048320) - ) - ) - (local.set $$shr68$i$i - (i32.shr_u - (local.get $$sub67$i$i) - (i32.const 16) - ) - ) - (local.set $$and69$i$i - (i32.and - (local.get $$shr68$i$i) - (i32.const 8) - ) - ) - (local.set $$shl70$i$i - (i32.shl - (local.get $$shr58$i$i) - (local.get $$and69$i$i) - ) - ) - (local.set $$sub71$i$i - (i32.add - (local.get $$shl70$i$i) - (i32.const 520192) - ) - ) - (local.set $$shr72$i$i - (i32.shr_u - (local.get $$sub71$i$i) - (i32.const 16) - ) - ) - (local.set $$and73$i$i - (i32.and - (local.get $$shr72$i$i) - (i32.const 4) - ) - ) - (local.set $$add74$i$i - (i32.or - (local.get $$and73$i$i) - (local.get $$and69$i$i) - ) - ) - (local.set $$shl75$i$i - (i32.shl - (local.get $$shl70$i$i) - (local.get $$and73$i$i) - ) - ) - (local.set $$sub76$i$i - (i32.add - (local.get $$shl75$i$i) - (i32.const 245760) - ) - ) - (local.set $$shr77$i$i - (i32.shr_u - (local.get $$sub76$i$i) - (i32.const 16) - ) - ) - (local.set $$and78$i$i - (i32.and - (local.get $$shr77$i$i) - (i32.const 2) - ) - ) - (local.set $$add79$i$i - (i32.or - (local.get $$add74$i$i) - (local.get $$and78$i$i) - ) - ) - (local.set $$sub80$i$i - (i32.sub - (i32.const 14) - (local.get $$add79$i$i) - ) - ) - (local.set $$shl81$i$i - (i32.shl - (local.get $$shl75$i$i) - (local.get $$and78$i$i) - ) - ) - (local.set $$shr82$i$i - (i32.shr_u - (local.get $$shl81$i$i) - (i32.const 15) - ) - ) - (local.set $$add83$i$i - (i32.add - (local.get $$sub80$i$i) - (local.get $$shr82$i$i) - ) - ) - (local.set $$shl84$i$i - (i32.shl - (local.get $$add83$i$i) - (i32.const 1) - ) - ) - (local.set $$add85$i$i - (i32.add - (local.get $$add83$i$i) - (i32.const 7) - ) - ) - (local.set $$shr86$i$i - (i32.shr_u - (local.get $$sub$ptr$sub$i$i) - (local.get $$add85$i$i) - ) - ) - (local.set $$and87$i$i - (i32.and - (local.get $$shr86$i$i) - (i32.const 1) - ) - ) - (local.set $$add88$i$i - (i32.or - (local.get $$and87$i$i) - (local.get $$shl84$i$i) - ) - ) - (local.set $$I57$0$i$i - (local.get $$add88$i$i) - ) - ) - ) - ) - ) - (local.set $$arrayidx91$i$i - (i32.add - (i32.const 480) - (i32.shl - (local.get $$I57$0$i$i) - (i32.const 2) - ) - ) - ) - (local.set $$index$i$i - (i32.add - (local.get $$119) - (i32.const 28) - ) - ) - (i32.store - (local.get $$index$i$i) - (local.get $$I57$0$i$i) - ) - (local.set $$arrayidx92$i$i - (i32.add - (local.get $$119) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx92$i$i) - (i32.const 0) - ) - (i32.store - (local.get $$add$ptr8$i122$i) - (i32.const 0) - ) - (local.set $$199 - (i32.load - (i32.const 180) - ) - ) - (local.set $$shl95$i$i - (i32.shl - (i32.const 1) - (local.get $$I57$0$i$i) - ) - ) - (local.set $$and96$i$i - (i32.and - (local.get $$199) - (local.get $$shl95$i$i) - ) - ) - (local.set $$tobool97$i$i - (i32.eq - (local.get $$and96$i$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool97$i$i) - (block - (local.set $$or101$i$i - (i32.or - (local.get $$199) - (local.get $$shl95$i$i) - ) - ) - (i32.store - (i32.const 180) - (local.get $$or101$i$i) - ) - (i32.store - (local.get $$arrayidx91$i$i) - (local.get $$119) - ) - (local.set $$parent$i$i - (i32.add - (local.get $$119) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent$i$i) - (local.get $$arrayidx91$i$i) - ) - (local.set $$bk102$i$i - (i32.add - (local.get $$119) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk102$i$i) - (local.get $$119) - ) - (local.set $$fd103$i$i - (i32.add - (local.get $$119) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd103$i$i) - (local.get $$119) - ) - (br $do-once40) - ) - ) - (local.set $$200 - (i32.load - (local.get $$arrayidx91$i$i) - ) - ) - (local.set $$cmp106$i$i - (i32.eq - (local.get $$I57$0$i$i) - (i32.const 31) - ) - ) - (local.set $$shr110$i$i - (i32.shr_u - (local.get $$I57$0$i$i) - (i32.const 1) - ) - ) - (local.set $$sub113$i$i - (i32.sub - (i32.const 25) - (local.get $$shr110$i$i) - ) - ) - (local.set $$cond115$i$i - (if (result i32) - (local.get $$cmp106$i$i) - (i32.const 0) - (local.get $$sub113$i$i) - ) - ) - (local.set $$shl116$i$i - (i32.shl - (local.get $$sub$ptr$sub$i$i) - (local.get $$cond115$i$i) - ) - ) - (local.set $$K105$0$i$i - (local.get $$shl116$i$i) - ) - (local.set $$T$0$i$i - (local.get $$200) - ) - (loop $while-in74 - (block $while-out73 - (local.set $$head118$i$i - (i32.add - (local.get $$T$0$i$i) - (i32.const 4) - ) - ) - (local.set $$201 - (i32.load - (local.get $$head118$i$i) - ) - ) - (local.set $$and119$i$i - (i32.and - (local.get $$201) - (i32.const -8) - ) - ) - (local.set $$cmp120$i$i - (i32.eq - (local.get $$and119$i$i) - (local.get $$sub$ptr$sub$i$i) - ) - ) - (if - (local.get $$cmp120$i$i) - (block - (local.set $$T$0$i$i$lcssa - (local.get $$T$0$i$i) - ) - (local.set $label - (i32.const 307) - ) - (br $while-out73) - ) - ) - (local.set $$shr123$i$i - (i32.shr_u - (local.get $$K105$0$i$i) - (i32.const 31) - ) - ) - (local.set $$arrayidx126$i$i - (i32.add - (i32.add - (local.get $$T$0$i$i) - (i32.const 16) - ) - (i32.shl - (local.get $$shr123$i$i) - (i32.const 2) - ) - ) - ) - (local.set $$shl127$i$i - (i32.shl - (local.get $$K105$0$i$i) - (i32.const 1) - ) - ) - (local.set $$202 - (i32.load - (local.get $$arrayidx126$i$i) - ) - ) - (local.set $$cmp128$i$i - (i32.eq - (local.get $$202) - (i32.const 0) - ) - ) - (if - (local.get $$cmp128$i$i) - (block - (local.set $$T$0$i$i$lcssa284 - (local.get $$T$0$i$i) - ) - (local.set $$arrayidx126$i$i$lcssa - (local.get $$arrayidx126$i$i) - ) - (local.set $label - (i32.const 304) - ) - (br $while-out73) - ) - (block - (local.set $$K105$0$i$i - (local.get $$shl127$i$i) - ) - (local.set $$T$0$i$i - (local.get $$202) - ) - ) - ) - (br $while-in74) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 304) - ) - (block - (local.set $$203 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp133$i$i - (i32.lt_u - (local.get $$arrayidx126$i$i$lcssa) - (local.get $$203) - ) - ) - (if - (local.get $$cmp133$i$i) - (call $_abort) - (block - (i32.store - (local.get $$arrayidx126$i$i$lcssa) - (local.get $$119) - ) - (local.set $$parent138$i$i - (i32.add - (local.get $$119) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent138$i$i) - (local.get $$T$0$i$i$lcssa284) - ) - (local.set $$bk139$i$i - (i32.add - (local.get $$119) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk139$i$i) - (local.get $$119) - ) - (local.set $$fd140$i$i - (i32.add - (local.get $$119) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd140$i$i) - (local.get $$119) - ) - (br $do-once40) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 307) - ) - (block - (local.set $$fd148$i$i - (i32.add - (local.get $$T$0$i$i$lcssa) - (i32.const 8) - ) - ) - (local.set $$204 - (i32.load - (local.get $$fd148$i$i) - ) - ) - (local.set $$205 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp153$i$i - (i32.ge_u - (local.get $$204) - (local.get $$205) - ) - ) - (local.set $$not$cmp150$i$i - (i32.ge_u - (local.get $$T$0$i$i$lcssa) - (local.get $$205) - ) - ) - (local.set $$206 - (i32.and - (local.get $$cmp153$i$i) - (local.get $$not$cmp150$i$i) - ) - ) - (if - (local.get $$206) - (block - (local.set $$bk158$i$i - (i32.add - (local.get $$204) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk158$i$i) - (local.get $$119) - ) - (i32.store - (local.get $$fd148$i$i) - (local.get $$119) - ) - (local.set $$fd160$i$i - (i32.add - (local.get $$119) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd160$i$i) - (local.get $$204) - ) - (local.set $$bk161$i$i - (i32.add - (local.get $$119) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk161$i$i) - (local.get $$T$0$i$i$lcssa) - ) - (local.set $$parent162$i$i - (i32.add - (local.get $$119) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent162$i$i) - (i32.const 0) - ) - (br $do-once40) - ) - (call $_abort) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (local.set $$207 - (i32.load - (i32.const 188) - ) - ) - (local.set $$cmp257$i - (i32.gt_u - (local.get $$207) - (local.get $$nb$0) - ) - ) - (if - (local.get $$cmp257$i) - (block - (local.set $$sub260$i - (i32.sub - (local.get $$207) - (local.get $$nb$0) - ) - ) - (i32.store - (i32.const 188) - (local.get $$sub260$i) - ) - (local.set $$208 - (i32.load - (i32.const 200) - ) - ) - (local.set $$add$ptr262$i - (i32.add - (local.get $$208) - (local.get $$nb$0) - ) - ) - (i32.store - (i32.const 200) - (local.get $$add$ptr262$i) - ) - (local.set $$or264$i - (i32.or - (local.get $$sub260$i) - (i32.const 1) - ) - ) - (local.set $$head265$i - (i32.add - (local.get $$add$ptr262$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head265$i) - (local.get $$or264$i) - ) - (local.set $$or267$i - (i32.or - (local.get $$nb$0) - (i32.const 3) - ) - ) - (local.set $$head268$i - (i32.add - (local.get $$208) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head268$i) - (local.get $$or267$i) - ) - (local.set $$add$ptr269$i - (i32.add - (local.get $$208) - (i32.const 8) - ) - ) - (local.set $$retval$0 - (local.get $$add$ptr269$i) - ) - (return - (local.get $$retval$0) - ) - ) - ) - ) - ) - (local.set $$call275$i - (call $___errno_location) - ) - (i32.store - (local.get $$call275$i) - (i32.const 12) - ) - (local.set $$retval$0 - (i32.const 0) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_free (; 54 ;) (param $$mem i32) - (local $$$pre i32) - (local $$$pre$phiZ2D i32) - (local $$$pre312 i32) - (local $$$pre313 i32) - (local $$0 i32) - (local $$1 i32) - (local $$10 i32) - (local $$11 i32) - (local $$12 i32) - (local $$13 i32) - (local $$14 i32) - (local $$15 i32) - (local $$16 i32) - (local $$17 i32) - (local $$18 i32) - (local $$19 i32) - (local $$2 i32) - (local $$20 i32) - (local $$21 i32) - (local $$22 i32) - (local $$23 i32) - (local $$24 i32) - (local $$25 i32) - (local $$26 i32) - (local $$27 i32) - (local $$28 i32) - (local $$29 i32) - (local $$3 i32) - (local $$30 i32) - (local $$31 i32) - (local $$32 i32) - (local $$33 i32) - (local $$34 i32) - (local $$35 i32) - (local $$36 i32) - (local $$37 i32) - (local $$38 i32) - (local $$39 i32) - (local $$4 i32) - (local $$40 i32) - (local $$41 i32) - (local $$42 i32) - (local $$43 i32) - (local $$44 i32) - (local $$45 i32) - (local $$46 i32) - (local $$47 i32) - (local $$48 i32) - (local $$49 i32) - (local $$5 i32) - (local $$50 i32) - (local $$51 i32) - (local $$52 i32) - (local $$53 i32) - (local $$54 i32) - (local $$55 i32) - (local $$56 i32) - (local $$57 i32) - (local $$58 i32) - (local $$59 i32) - (local $$6 i32) - (local $$60 i32) - (local $$61 i32) - (local $$62 i32) - (local $$63 i32) - (local $$64 i32) - (local $$65 i32) - (local $$66 i32) - (local $$67 i32) - (local $$68 i32) - (local $$69 i32) - (local $$7 i32) - (local $$70 i32) - (local $$71 i32) - (local $$72 i32) - (local $$73 i32) - (local $$74 i32) - (local $$8 i32) - (local $$9 i32) - (local $$F510$0 i32) - (local $$I534$0 i32) - (local $$K583$0 i32) - (local $$R$1 i32) - (local $$R$1$lcssa i32) - (local $$R$3 i32) - (local $$R332$1 i32) - (local $$R332$1$lcssa i32) - (local $$R332$3 i32) - (local $$RP$1 i32) - (local $$RP$1$lcssa i32) - (local $$RP360$1 i32) - (local $$RP360$1$lcssa i32) - (local $$T$0 i32) - (local $$T$0$lcssa i32) - (local $$T$0$lcssa319 i32) - (local $$add$ptr i32) - (local $$add$ptr16 i32) - (local $$add$ptr217 i32) - (local $$add$ptr261 i32) - (local $$add$ptr482 i32) - (local $$add$ptr498 i32) - (local $$add$ptr6 i32) - (local $$add17 i32) - (local $$add246 i32) - (local $$add258 i32) - (local $$add267 i32) - (local $$add550 i32) - (local $$add555 i32) - (local $$add559 i32) - (local $$add561 i32) - (local $$add564 i32) - (local $$and i32) - (local $$and140 i32) - (local $$and210 i32) - (local $$and215 i32) - (local $$and232 i32) - (local $$and240 i32) - (local $$and266 i32) - (local $$and301 i32) - (local $$and410 i32) - (local $$and46 i32) - (local $$and495 i32) - (local $$and5 i32) - (local $$and512 i32) - (local $$and545 i32) - (local $$and549 i32) - (local $$and554 i32) - (local $$and563 i32) - (local $$and574 i32) - (local $$and592 i32) - (local $$and8 i32) - (local $$arrayidx i32) - (local $$arrayidx108 i32) - (local $$arrayidx113 i32) - (local $$arrayidx130 i32) - (local $$arrayidx149 i32) - (local $$arrayidx157 i32) - (local $$arrayidx182 i32) - (local $$arrayidx188 i32) - (local $$arrayidx198 i32) - (local $$arrayidx279 i32) - (local $$arrayidx362 i32) - (local $$arrayidx374 i32) - (local $$arrayidx379 i32) - (local $$arrayidx400 i32) - (local $$arrayidx419 i32) - (local $$arrayidx427 i32) - (local $$arrayidx454 i32) - (local $$arrayidx460 i32) - (local $$arrayidx470 i32) - (local $$arrayidx509 i32) - (local $$arrayidx567 i32) - (local $$arrayidx570 i32) - (local $$arrayidx599 i32) - (local $$arrayidx599$lcssa i32) - (local $$arrayidx99 i32) - (local $$bk i32) - (local $$bk275 i32) - (local $$bk286 i32) - (local $$bk321 i32) - (local $$bk333 i32) - (local $$bk34 i32) - (local $$bk343 i32) - (local $$bk529 i32) - (local $$bk531 i32) - (local $$bk580 i32) - (local $$bk611 i32) - (local $$bk631 i32) - (local $$bk634 i32) - (local $$bk66 i32) - (local $$bk73 i32) - (local $$bk82 i32) - (local $$child i32) - (local $$child171 i32) - (local $$child361 i32) - (local $$child443 i32) - (local $$child569 i32) - (local $$cmp i32) - (local $$cmp$i i32) - (local $$cmp1 i32) - (local $$cmp100 i32) - (local $$cmp104 i32) - (local $$cmp109 i32) - (local $$cmp114 i32) - (local $$cmp118 i32) - (local $$cmp127 i32) - (local $$cmp13 i32) - (local $$cmp131 i32) - (local $$cmp143 i32) - (local $$cmp150 i32) - (local $$cmp162 i32) - (local $$cmp165 i32) - (local $$cmp173 i32) - (local $$cmp176 i32) - (local $$cmp18 i32) - (local $$cmp189 i32) - (local $$cmp192 i32) - (local $$cmp2 i32) - (local $$cmp211 i32) - (local $$cmp22 i32) - (local $$cmp228 i32) - (local $$cmp243 i32) - (local $$cmp249 i32) - (local $$cmp25 i32) - (local $$cmp255 i32) - (local $$cmp269 i32) - (local $$cmp280 i32) - (local $$cmp283 i32) - (local $$cmp287 i32) - (local $$cmp29 i32) - (local $$cmp296 i32) - (local $$cmp305 i32) - (local $$cmp308 i32) - (local $$cmp31 i32) - (local $$cmp312 i32) - (local $$cmp334 i32) - (local $$cmp340 i32) - (local $$cmp344 i32) - (local $$cmp348 i32) - (local $$cmp35 i32) - (local $$cmp363 i32) - (local $$cmp368 i32) - (local $$cmp375 i32) - (local $$cmp380 i32) - (local $$cmp386 i32) - (local $$cmp395 i32) - (local $$cmp401 i32) - (local $$cmp413 i32) - (local $$cmp42 i32) - (local $$cmp420 i32) - (local $$cmp432 i32) - (local $$cmp435 i32) - (local $$cmp445 i32) - (local $$cmp448 i32) - (local $$cmp461 i32) - (local $$cmp464 i32) - (local $$cmp484 i32) - (local $$cmp50 i32) - (local $$cmp502 i32) - (local $$cmp519 i32) - (local $$cmp53 i32) - (local $$cmp536 i32) - (local $$cmp540 i32) - (local $$cmp57 i32) - (local $$cmp584 i32) - (local $$cmp593 i32) - (local $$cmp601 i32) - (local $$cmp605 i32) - (local $$cmp624 i32) - (local $$cmp640 i32) - (local $$cmp74 i32) - (local $$cmp80 i32) - (local $$cmp83 i32) - (local $$cmp87 i32) - (local $$cond i32) - (local $$cond291 i32) - (local $$cond292 i32) - (local $$dec i32) - (local $$fd i32) - (local $$fd273 i32) - (local $$fd311 i32) - (local $$fd322$pre$phiZ2D i32) - (local $$fd338 i32) - (local $$fd347 i32) - (local $$fd530 i32) - (local $$fd56 i32) - (local $$fd581 i32) - (local $$fd612 i32) - (local $$fd620 i32) - (local $$fd633 i32) - (local $$fd67$pre$phiZ2D i32) - (local $$fd78 i32) - (local $$fd86 i32) - (local $$head i32) - (local $$head209 i32) - (local $$head216 i32) - (local $$head231 i32) - (local $$head248 i32) - (local $$head260 i32) - (local $$head481 i32) - (local $$head497 i32) - (local $$head591 i32) - (local $$idx$neg i32) - (local $$index i32) - (local $$index399 i32) - (local $$index568 i32) - (local $$neg i32) - (local $$neg139 i32) - (local $$neg300 i32) - (local $$neg409 i32) - (local $$next4$i i32) - (local $$not$cmp621 i32) - (local $$or i32) - (local $$or247 i32) - (local $$or259 i32) - (local $$or480 i32) - (local $$or496 i32) - (local $$or516 i32) - (local $$or578 i32) - (local $$p$1 i32) - (local $$parent i32) - (local $$parent170 i32) - (local $$parent183 i32) - (local $$parent199 i32) - (local $$parent331 i32) - (local $$parent442 i32) - (local $$parent455 i32) - (local $$parent471 i32) - (local $$parent579 i32) - (local $$parent610 i32) - (local $$parent635 i32) - (local $$psize$1 i32) - (local $$psize$2 i32) - (local $$shl i32) - (local $$shl138 i32) - (local $$shl278 i32) - (local $$shl299 i32) - (local $$shl408 i32) - (local $$shl45 i32) - (local $$shl508 i32) - (local $$shl511 i32) - (local $$shl546 i32) - (local $$shl551 i32) - (local $$shl557 i32) - (local $$shl560 i32) - (local $$shl573 i32) - (local $$shl590 i32) - (local $$shl600 i32) - (local $$shr i32) - (local $$shr268 i32) - (local $$shr501 i32) - (local $$shr535 i32) - (local $$shr544 i32) - (local $$shr548 i32) - (local $$shr553 i32) - (local $$shr558 i32) - (local $$shr562 i32) - (local $$shr586 i32) - (local $$shr596 i32) - (local $$sp$0$i i32) - (local $$sp$0$in$i i32) - (local $$sub i32) - (local $$sub547 i32) - (local $$sub552 i32) - (local $$sub556 i32) - (local $$sub589 i32) - (local $$tobool233 i32) - (local $$tobool241 i32) - (local $$tobool513 i32) - (local $$tobool575 i32) - (local $$tobool9 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$cmp - (i32.eq - (local.get $$mem) - (i32.const 0) - ) - ) - (if - (local.get $$cmp) - (return) - ) - (local.set $$add$ptr - (i32.add - (local.get $$mem) - (i32.const -8) - ) - ) - (local.set $$0 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp1 - (i32.lt_u - (local.get $$add$ptr) - (local.get $$0) - ) - ) - (if - (local.get $$cmp1) - (call $_abort) - ) - (local.set $$head - (i32.add - (local.get $$mem) - (i32.const -4) - ) - ) - (local.set $$1 - (i32.load - (local.get $$head) - ) - ) - (local.set $$and - (i32.and - (local.get $$1) - (i32.const 3) - ) - ) - (local.set $$cmp2 - (i32.eq - (local.get $$and) - (i32.const 1) - ) - ) - (if - (local.get $$cmp2) - (call $_abort) - ) - (local.set $$and5 - (i32.and - (local.get $$1) - (i32.const -8) - ) - ) - (local.set $$add$ptr6 - (i32.add - (local.get $$add$ptr) - (local.get $$and5) - ) - ) - (local.set $$and8 - (i32.and - (local.get $$1) - (i32.const 1) - ) - ) - (local.set $$tobool9 - (i32.eq - (local.get $$and8) - (i32.const 0) - ) - ) - (block $do-once - (if - (local.get $$tobool9) - (block - (local.set $$2 - (i32.load - (local.get $$add$ptr) - ) - ) - (local.set $$cmp13 - (i32.eq - (local.get $$and) - (i32.const 0) - ) - ) - (if - (local.get $$cmp13) - (return) - ) - (local.set $$idx$neg - (i32.sub - (i32.const 0) - (local.get $$2) - ) - ) - (local.set $$add$ptr16 - (i32.add - (local.get $$add$ptr) - (local.get $$idx$neg) - ) - ) - (local.set $$add17 - (i32.add - (local.get $$2) - (local.get $$and5) - ) - ) - (local.set $$cmp18 - (i32.lt_u - (local.get $$add$ptr16) - (local.get $$0) - ) - ) - (if - (local.get $$cmp18) - (call $_abort) - ) - (local.set $$3 - (i32.load - (i32.const 196) - ) - ) - (local.set $$cmp22 - (i32.eq - (local.get $$add$ptr16) - (local.get $$3) - ) - ) - (if - (local.get $$cmp22) - (block - (local.set $$head209 - (i32.add - (local.get $$add$ptr6) - (i32.const 4) - ) - ) - (local.set $$27 - (i32.load - (local.get $$head209) - ) - ) - (local.set $$and210 - (i32.and - (local.get $$27) - (i32.const 3) - ) - ) - (local.set $$cmp211 - (i32.eq - (local.get $$and210) - (i32.const 3) - ) - ) - (if - (i32.eqz - (local.get $$cmp211) - ) - (block - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - (br $do-once) - ) - ) - (i32.store - (i32.const 184) - (local.get $$add17) - ) - (local.set $$and215 - (i32.and - (local.get $$27) - (i32.const -2) - ) - ) - (i32.store - (local.get $$head209) - (local.get $$and215) - ) - (local.set $$or - (i32.or - (local.get $$add17) - (i32.const 1) - ) - ) - (local.set $$head216 - (i32.add - (local.get $$add$ptr16) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head216) - (local.get $$or) - ) - (local.set $$add$ptr217 - (i32.add - (local.get $$add$ptr16) - (local.get $$add17) - ) - ) - (i32.store - (local.get $$add$ptr217) - (local.get $$add17) - ) - (return) - ) - ) - (local.set $$shr - (i32.shr_u - (local.get $$2) - (i32.const 3) - ) - ) - (local.set $$cmp25 - (i32.lt_u - (local.get $$2) - (i32.const 256) - ) - ) - (if - (local.get $$cmp25) - (block - (local.set $$fd - (i32.add - (local.get $$add$ptr16) - (i32.const 8) - ) - ) - (local.set $$4 - (i32.load - (local.get $$fd) - ) - ) - (local.set $$bk - (i32.add - (local.get $$add$ptr16) - (i32.const 12) - ) - ) - (local.set $$5 - (i32.load - (local.get $$bk) - ) - ) - (local.set $$shl - (i32.shl - (local.get $$shr) - (i32.const 1) - ) - ) - (local.set $$arrayidx - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl) - (i32.const 2) - ) - ) - ) - (local.set $$cmp29 - (i32.eq - (local.get $$4) - (local.get $$arrayidx) - ) - ) - (if - (i32.eqz - (local.get $$cmp29) - ) - (block - (local.set $$cmp31 - (i32.lt_u - (local.get $$4) - (local.get $$0) - ) - ) - (if - (local.get $$cmp31) - (call $_abort) - ) - (local.set $$bk34 - (i32.add - (local.get $$4) - (i32.const 12) - ) - ) - (local.set $$6 - (i32.load - (local.get $$bk34) - ) - ) - (local.set $$cmp35 - (i32.eq - (local.get $$6) - (local.get $$add$ptr16) - ) - ) - (if - (i32.eqz - (local.get $$cmp35) - ) - (call $_abort) - ) - ) - ) - (local.set $$cmp42 - (i32.eq - (local.get $$5) - (local.get $$4) - ) - ) - (if - (local.get $$cmp42) - (block - (local.set $$shl45 - (i32.shl - (i32.const 1) - (local.get $$shr) - ) - ) - (local.set $$neg - (i32.xor - (local.get $$shl45) - (i32.const -1) - ) - ) - (local.set $$7 - (i32.load - (i32.const 176) - ) - ) - (local.set $$and46 - (i32.and - (local.get $$7) - (local.get $$neg) - ) - ) - (i32.store - (i32.const 176) - (local.get $$and46) - ) - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - (br $do-once) - ) - ) - (local.set $$cmp50 - (i32.eq - (local.get $$5) - (local.get $$arrayidx) - ) - ) - (if - (local.get $$cmp50) - (block - (local.set $$$pre313 - (i32.add - (local.get $$5) - (i32.const 8) - ) - ) - (local.set $$fd67$pre$phiZ2D - (local.get $$$pre313) - ) - ) - (block - (local.set $$cmp53 - (i32.lt_u - (local.get $$5) - (local.get $$0) - ) - ) - (if - (local.get $$cmp53) - (call $_abort) - ) - (local.set $$fd56 - (i32.add - (local.get $$5) - (i32.const 8) - ) - ) - (local.set $$8 - (i32.load - (local.get $$fd56) - ) - ) - (local.set $$cmp57 - (i32.eq - (local.get $$8) - (local.get $$add$ptr16) - ) - ) - (if - (local.get $$cmp57) - (local.set $$fd67$pre$phiZ2D - (local.get $$fd56) - ) - (call $_abort) - ) - ) - ) - (local.set $$bk66 - (i32.add - (local.get $$4) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk66) - (local.get $$5) - ) - (i32.store - (local.get $$fd67$pre$phiZ2D) - (local.get $$4) - ) - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - (br $do-once) - ) - ) - (local.set $$parent - (i32.add - (local.get $$add$ptr16) - (i32.const 24) - ) - ) - (local.set $$9 - (i32.load - (local.get $$parent) - ) - ) - (local.set $$bk73 - (i32.add - (local.get $$add$ptr16) - (i32.const 12) - ) - ) - (local.set $$10 - (i32.load - (local.get $$bk73) - ) - ) - (local.set $$cmp74 - (i32.eq - (local.get $$10) - (local.get $$add$ptr16) - ) - ) - (block $do-once0 - (if - (local.get $$cmp74) - (block - (local.set $$child - (i32.add - (local.get $$add$ptr16) - (i32.const 16) - ) - ) - (local.set $$arrayidx99 - (i32.add - (local.get $$child) - (i32.const 4) - ) - ) - (local.set $$14 - (i32.load - (local.get $$arrayidx99) - ) - ) - (local.set $$cmp100 - (i32.eq - (local.get $$14) - (i32.const 0) - ) - ) - (if - (local.get $$cmp100) - (block - (local.set $$15 - (i32.load - (local.get $$child) - ) - ) - (local.set $$cmp104 - (i32.eq - (local.get $$15) - (i32.const 0) - ) - ) - (if - (local.get $$cmp104) - (block - (local.set $$R$3 - (i32.const 0) - ) - (br $do-once0) - ) - (block - (local.set $$R$1 - (local.get $$15) - ) - (local.set $$RP$1 - (local.get $$child) - ) - ) - ) - ) - (block - (local.set $$R$1 - (local.get $$14) - ) - (local.set $$RP$1 - (local.get $$arrayidx99) - ) - ) - ) - (loop $while-in - (block $while-out - (local.set $$arrayidx108 - (i32.add - (local.get $$R$1) - (i32.const 20) - ) - ) - (local.set $$16 - (i32.load - (local.get $$arrayidx108) - ) - ) - (local.set $$cmp109 - (i32.eq - (local.get $$16) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp109) - ) - (block - (local.set $$R$1 - (local.get $$16) - ) - (local.set $$RP$1 - (local.get $$arrayidx108) - ) - (br $while-in) - ) - ) - (local.set $$arrayidx113 - (i32.add - (local.get $$R$1) - (i32.const 16) - ) - ) - (local.set $$17 - (i32.load - (local.get $$arrayidx113) - ) - ) - (local.set $$cmp114 - (i32.eq - (local.get $$17) - (i32.const 0) - ) - ) - (if - (local.get $$cmp114) - (block - (local.set $$R$1$lcssa - (local.get $$R$1) - ) - (local.set $$RP$1$lcssa - (local.get $$RP$1) - ) - (br $while-out) - ) - (block - (local.set $$R$1 - (local.get $$17) - ) - (local.set $$RP$1 - (local.get $$arrayidx113) - ) - ) - ) - (br $while-in) - ) - ) - (local.set $$cmp118 - (i32.lt_u - (local.get $$RP$1$lcssa) - (local.get $$0) - ) - ) - (if - (local.get $$cmp118) - (call $_abort) - (block - (i32.store - (local.get $$RP$1$lcssa) - (i32.const 0) - ) - (local.set $$R$3 - (local.get $$R$1$lcssa) - ) - (br $do-once0) - ) - ) - ) - (block - (local.set $$fd78 - (i32.add - (local.get $$add$ptr16) - (i32.const 8) - ) - ) - (local.set $$11 - (i32.load - (local.get $$fd78) - ) - ) - (local.set $$cmp80 - (i32.lt_u - (local.get $$11) - (local.get $$0) - ) - ) - (if - (local.get $$cmp80) - (call $_abort) - ) - (local.set $$bk82 - (i32.add - (local.get $$11) - (i32.const 12) - ) - ) - (local.set $$12 - (i32.load - (local.get $$bk82) - ) - ) - (local.set $$cmp83 - (i32.eq - (local.get $$12) - (local.get $$add$ptr16) - ) - ) - (if - (i32.eqz - (local.get $$cmp83) - ) - (call $_abort) - ) - (local.set $$fd86 - (i32.add - (local.get $$10) - (i32.const 8) - ) - ) - (local.set $$13 - (i32.load - (local.get $$fd86) - ) - ) - (local.set $$cmp87 - (i32.eq - (local.get $$13) - (local.get $$add$ptr16) - ) - ) - (if - (local.get $$cmp87) - (block - (i32.store - (local.get $$bk82) - (local.get $$10) - ) - (i32.store - (local.get $$fd86) - (local.get $$11) - ) - (local.set $$R$3 - (local.get $$10) - ) - (br $do-once0) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$cmp127 - (i32.eq - (local.get $$9) - (i32.const 0) - ) - ) - (if - (local.get $$cmp127) - (block - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - ) - (block - (local.set $$index - (i32.add - (local.get $$add$ptr16) - (i32.const 28) - ) - ) - (local.set $$18 - (i32.load - (local.get $$index) - ) - ) - (local.set $$arrayidx130 - (i32.add - (i32.const 480) - (i32.shl - (local.get $$18) - (i32.const 2) - ) - ) - ) - (local.set $$19 - (i32.load - (local.get $$arrayidx130) - ) - ) - (local.set $$cmp131 - (i32.eq - (local.get $$add$ptr16) - (local.get $$19) - ) - ) - (if - (local.get $$cmp131) - (block - (i32.store - (local.get $$arrayidx130) - (local.get $$R$3) - ) - (local.set $$cond291 - (i32.eq - (local.get $$R$3) - (i32.const 0) - ) - ) - (if - (local.get $$cond291) - (block - (local.set $$shl138 - (i32.shl - (i32.const 1) - (local.get $$18) - ) - ) - (local.set $$neg139 - (i32.xor - (local.get $$shl138) - (i32.const -1) - ) - ) - (local.set $$20 - (i32.load - (i32.const 180) - ) - ) - (local.set $$and140 - (i32.and - (local.get $$20) - (local.get $$neg139) - ) - ) - (i32.store - (i32.const 180) - (local.get $$and140) - ) - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - (br $do-once) - ) - ) - ) - (block - (local.set $$21 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp143 - (i32.lt_u - (local.get $$9) - (local.get $$21) - ) - ) - (if - (local.get $$cmp143) - (call $_abort) - ) - (local.set $$arrayidx149 - (i32.add - (local.get $$9) - (i32.const 16) - ) - ) - (local.set $$22 - (i32.load - (local.get $$arrayidx149) - ) - ) - (local.set $$cmp150 - (i32.eq - (local.get $$22) - (local.get $$add$ptr16) - ) - ) - (if - (local.get $$cmp150) - (i32.store - (local.get $$arrayidx149) - (local.get $$R$3) - ) - (block - (local.set $$arrayidx157 - (i32.add - (local.get $$9) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx157) - (local.get $$R$3) - ) - ) - ) - (local.set $$cmp162 - (i32.eq - (local.get $$R$3) - (i32.const 0) - ) - ) - (if - (local.get $$cmp162) - (block - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - (br $do-once) - ) - ) - ) - ) - (local.set $$23 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp165 - (i32.lt_u - (local.get $$R$3) - (local.get $$23) - ) - ) - (if - (local.get $$cmp165) - (call $_abort) - ) - (local.set $$parent170 - (i32.add - (local.get $$R$3) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent170) - (local.get $$9) - ) - (local.set $$child171 - (i32.add - (local.get $$add$ptr16) - (i32.const 16) - ) - ) - (local.set $$24 - (i32.load - (local.get $$child171) - ) - ) - (local.set $$cmp173 - (i32.eq - (local.get $$24) - (i32.const 0) - ) - ) - (block $do-once2 - (if - (i32.eqz - (local.get $$cmp173) - ) - (block - (local.set $$cmp176 - (i32.lt_u - (local.get $$24) - (local.get $$23) - ) - ) - (if - (local.get $$cmp176) - (call $_abort) - (block - (local.set $$arrayidx182 - (i32.add - (local.get $$R$3) - (i32.const 16) - ) - ) - (i32.store - (local.get $$arrayidx182) - (local.get $$24) - ) - (local.set $$parent183 - (i32.add - (local.get $$24) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent183) - (local.get $$R$3) - ) - (br $do-once2) - ) - ) - ) - ) - ) - (local.set $$arrayidx188 - (i32.add - (local.get $$child171) - (i32.const 4) - ) - ) - (local.set $$25 - (i32.load - (local.get $$arrayidx188) - ) - ) - (local.set $$cmp189 - (i32.eq - (local.get $$25) - (i32.const 0) - ) - ) - (if - (local.get $$cmp189) - (block - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - ) - (block - (local.set $$26 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp192 - (i32.lt_u - (local.get $$25) - (local.get $$26) - ) - ) - (if - (local.get $$cmp192) - (call $_abort) - (block - (local.set $$arrayidx198 - (i32.add - (local.get $$R$3) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx198) - (local.get $$25) - ) - (local.set $$parent199 - (i32.add - (local.get $$25) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent199) - (local.get $$R$3) - ) - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - (br $do-once) - ) - ) - ) - ) - ) - ) - ) - (block - (local.set $$p$1 - (local.get $$add$ptr) - ) - (local.set $$psize$1 - (local.get $$and5) - ) - ) - ) - ) - (local.set $$cmp228 - (i32.lt_u - (local.get $$p$1) - (local.get $$add$ptr6) - ) - ) - (if - (i32.eqz - (local.get $$cmp228) - ) - (call $_abort) - ) - (local.set $$head231 - (i32.add - (local.get $$add$ptr6) - (i32.const 4) - ) - ) - (local.set $$28 - (i32.load - (local.get $$head231) - ) - ) - (local.set $$and232 - (i32.and - (local.get $$28) - (i32.const 1) - ) - ) - (local.set $$tobool233 - (i32.eq - (local.get $$and232) - (i32.const 0) - ) - ) - (if - (local.get $$tobool233) - (call $_abort) - ) - (local.set $$and240 - (i32.and - (local.get $$28) - (i32.const 2) - ) - ) - (local.set $$tobool241 - (i32.eq - (local.get $$and240) - (i32.const 0) - ) - ) - (if - (local.get $$tobool241) - (block - (local.set $$29 - (i32.load - (i32.const 200) - ) - ) - (local.set $$cmp243 - (i32.eq - (local.get $$add$ptr6) - (local.get $$29) - ) - ) - (if - (local.get $$cmp243) - (block - (local.set $$30 - (i32.load - (i32.const 188) - ) - ) - (local.set $$add246 - (i32.add - (local.get $$30) - (local.get $$psize$1) - ) - ) - (i32.store - (i32.const 188) - (local.get $$add246) - ) - (i32.store - (i32.const 200) - (local.get $$p$1) - ) - (local.set $$or247 - (i32.or - (local.get $$add246) - (i32.const 1) - ) - ) - (local.set $$head248 - (i32.add - (local.get $$p$1) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head248) - (local.get $$or247) - ) - (local.set $$31 - (i32.load - (i32.const 196) - ) - ) - (local.set $$cmp249 - (i32.eq - (local.get $$p$1) - (local.get $$31) - ) - ) - (if - (i32.eqz - (local.get $$cmp249) - ) - (return) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (i32.store - (i32.const 184) - (i32.const 0) - ) - (return) - ) - ) - (local.set $$32 - (i32.load - (i32.const 196) - ) - ) - (local.set $$cmp255 - (i32.eq - (local.get $$add$ptr6) - (local.get $$32) - ) - ) - (if - (local.get $$cmp255) - (block - (local.set $$33 - (i32.load - (i32.const 184) - ) - ) - (local.set $$add258 - (i32.add - (local.get $$33) - (local.get $$psize$1) - ) - ) - (i32.store - (i32.const 184) - (local.get $$add258) - ) - (i32.store - (i32.const 196) - (local.get $$p$1) - ) - (local.set $$or259 - (i32.or - (local.get $$add258) - (i32.const 1) - ) - ) - (local.set $$head260 - (i32.add - (local.get $$p$1) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head260) - (local.get $$or259) - ) - (local.set $$add$ptr261 - (i32.add - (local.get $$p$1) - (local.get $$add258) - ) - ) - (i32.store - (local.get $$add$ptr261) - (local.get $$add258) - ) - (return) - ) - ) - (local.set $$and266 - (i32.and - (local.get $$28) - (i32.const -8) - ) - ) - (local.set $$add267 - (i32.add - (local.get $$and266) - (local.get $$psize$1) - ) - ) - (local.set $$shr268 - (i32.shr_u - (local.get $$28) - (i32.const 3) - ) - ) - (local.set $$cmp269 - (i32.lt_u - (local.get $$28) - (i32.const 256) - ) - ) - (block $do-once4 - (if - (local.get $$cmp269) - (block - (local.set $$fd273 - (i32.add - (local.get $$add$ptr6) - (i32.const 8) - ) - ) - (local.set $$34 - (i32.load - (local.get $$fd273) - ) - ) - (local.set $$bk275 - (i32.add - (local.get $$add$ptr6) - (i32.const 12) - ) - ) - (local.set $$35 - (i32.load - (local.get $$bk275) - ) - ) - (local.set $$shl278 - (i32.shl - (local.get $$shr268) - (i32.const 1) - ) - ) - (local.set $$arrayidx279 - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl278) - (i32.const 2) - ) - ) - ) - (local.set $$cmp280 - (i32.eq - (local.get $$34) - (local.get $$arrayidx279) - ) - ) - (if - (i32.eqz - (local.get $$cmp280) - ) - (block - (local.set $$36 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp283 - (i32.lt_u - (local.get $$34) - (local.get $$36) - ) - ) - (if - (local.get $$cmp283) - (call $_abort) - ) - (local.set $$bk286 - (i32.add - (local.get $$34) - (i32.const 12) - ) - ) - (local.set $$37 - (i32.load - (local.get $$bk286) - ) - ) - (local.set $$cmp287 - (i32.eq - (local.get $$37) - (local.get $$add$ptr6) - ) - ) - (if - (i32.eqz - (local.get $$cmp287) - ) - (call $_abort) - ) - ) - ) - (local.set $$cmp296 - (i32.eq - (local.get $$35) - (local.get $$34) - ) - ) - (if - (local.get $$cmp296) - (block - (local.set $$shl299 - (i32.shl - (i32.const 1) - (local.get $$shr268) - ) - ) - (local.set $$neg300 - (i32.xor - (local.get $$shl299) - (i32.const -1) - ) - ) - (local.set $$38 - (i32.load - (i32.const 176) - ) - ) - (local.set $$and301 - (i32.and - (local.get $$38) - (local.get $$neg300) - ) - ) - (i32.store - (i32.const 176) - (local.get $$and301) - ) - (br $do-once4) - ) - ) - (local.set $$cmp305 - (i32.eq - (local.get $$35) - (local.get $$arrayidx279) - ) - ) - (if - (local.get $$cmp305) - (block - (local.set $$$pre312 - (i32.add - (local.get $$35) - (i32.const 8) - ) - ) - (local.set $$fd322$pre$phiZ2D - (local.get $$$pre312) - ) - ) - (block - (local.set $$39 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp308 - (i32.lt_u - (local.get $$35) - (local.get $$39) - ) - ) - (if - (local.get $$cmp308) - (call $_abort) - ) - (local.set $$fd311 - (i32.add - (local.get $$35) - (i32.const 8) - ) - ) - (local.set $$40 - (i32.load - (local.get $$fd311) - ) - ) - (local.set $$cmp312 - (i32.eq - (local.get $$40) - (local.get $$add$ptr6) - ) - ) - (if - (local.get $$cmp312) - (local.set $$fd322$pre$phiZ2D - (local.get $$fd311) - ) - (call $_abort) - ) - ) - ) - (local.set $$bk321 - (i32.add - (local.get $$34) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk321) - (local.get $$35) - ) - (i32.store - (local.get $$fd322$pre$phiZ2D) - (local.get $$34) - ) - ) - (block - (local.set $$parent331 - (i32.add - (local.get $$add$ptr6) - (i32.const 24) - ) - ) - (local.set $$41 - (i32.load - (local.get $$parent331) - ) - ) - (local.set $$bk333 - (i32.add - (local.get $$add$ptr6) - (i32.const 12) - ) - ) - (local.set $$42 - (i32.load - (local.get $$bk333) - ) - ) - (local.set $$cmp334 - (i32.eq - (local.get $$42) - (local.get $$add$ptr6) - ) - ) - (block $do-once6 - (if - (local.get $$cmp334) - (block - (local.set $$child361 - (i32.add - (local.get $$add$ptr6) - (i32.const 16) - ) - ) - (local.set $$arrayidx362 - (i32.add - (local.get $$child361) - (i32.const 4) - ) - ) - (local.set $$47 - (i32.load - (local.get $$arrayidx362) - ) - ) - (local.set $$cmp363 - (i32.eq - (local.get $$47) - (i32.const 0) - ) - ) - (if - (local.get $$cmp363) - (block - (local.set $$48 - (i32.load - (local.get $$child361) - ) - ) - (local.set $$cmp368 - (i32.eq - (local.get $$48) - (i32.const 0) - ) - ) - (if - (local.get $$cmp368) - (block - (local.set $$R332$3 - (i32.const 0) - ) - (br $do-once6) - ) - (block - (local.set $$R332$1 - (local.get $$48) - ) - (local.set $$RP360$1 - (local.get $$child361) - ) - ) - ) - ) - (block - (local.set $$R332$1 - (local.get $$47) - ) - (local.set $$RP360$1 - (local.get $$arrayidx362) - ) - ) - ) - (loop $while-in9 - (block $while-out8 - (local.set $$arrayidx374 - (i32.add - (local.get $$R332$1) - (i32.const 20) - ) - ) - (local.set $$49 - (i32.load - (local.get $$arrayidx374) - ) - ) - (local.set $$cmp375 - (i32.eq - (local.get $$49) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp375) - ) - (block - (local.set $$R332$1 - (local.get $$49) - ) - (local.set $$RP360$1 - (local.get $$arrayidx374) - ) - (br $while-in9) - ) - ) - (local.set $$arrayidx379 - (i32.add - (local.get $$R332$1) - (i32.const 16) - ) - ) - (local.set $$50 - (i32.load - (local.get $$arrayidx379) - ) - ) - (local.set $$cmp380 - (i32.eq - (local.get $$50) - (i32.const 0) - ) - ) - (if - (local.get $$cmp380) - (block - (local.set $$R332$1$lcssa - (local.get $$R332$1) - ) - (local.set $$RP360$1$lcssa - (local.get $$RP360$1) - ) - (br $while-out8) - ) - (block - (local.set $$R332$1 - (local.get $$50) - ) - (local.set $$RP360$1 - (local.get $$arrayidx379) - ) - ) - ) - (br $while-in9) - ) - ) - (local.set $$51 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp386 - (i32.lt_u - (local.get $$RP360$1$lcssa) - (local.get $$51) - ) - ) - (if - (local.get $$cmp386) - (call $_abort) - (block - (i32.store - (local.get $$RP360$1$lcssa) - (i32.const 0) - ) - (local.set $$R332$3 - (local.get $$R332$1$lcssa) - ) - (br $do-once6) - ) - ) - ) - (block - (local.set $$fd338 - (i32.add - (local.get $$add$ptr6) - (i32.const 8) - ) - ) - (local.set $$43 - (i32.load - (local.get $$fd338) - ) - ) - (local.set $$44 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp340 - (i32.lt_u - (local.get $$43) - (local.get $$44) - ) - ) - (if - (local.get $$cmp340) - (call $_abort) - ) - (local.set $$bk343 - (i32.add - (local.get $$43) - (i32.const 12) - ) - ) - (local.set $$45 - (i32.load - (local.get $$bk343) - ) - ) - (local.set $$cmp344 - (i32.eq - (local.get $$45) - (local.get $$add$ptr6) - ) - ) - (if - (i32.eqz - (local.get $$cmp344) - ) - (call $_abort) - ) - (local.set $$fd347 - (i32.add - (local.get $$42) - (i32.const 8) - ) - ) - (local.set $$46 - (i32.load - (local.get $$fd347) - ) - ) - (local.set $$cmp348 - (i32.eq - (local.get $$46) - (local.get $$add$ptr6) - ) - ) - (if - (local.get $$cmp348) - (block - (i32.store - (local.get $$bk343) - (local.get $$42) - ) - (i32.store - (local.get $$fd347) - (local.get $$43) - ) - (local.set $$R332$3 - (local.get $$42) - ) - (br $do-once6) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$cmp395 - (i32.eq - (local.get $$41) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp395) - ) - (block - (local.set $$index399 - (i32.add - (local.get $$add$ptr6) - (i32.const 28) - ) - ) - (local.set $$52 - (i32.load - (local.get $$index399) - ) - ) - (local.set $$arrayidx400 - (i32.add - (i32.const 480) - (i32.shl - (local.get $$52) - (i32.const 2) - ) - ) - ) - (local.set $$53 - (i32.load - (local.get $$arrayidx400) - ) - ) - (local.set $$cmp401 - (i32.eq - (local.get $$add$ptr6) - (local.get $$53) - ) - ) - (if - (local.get $$cmp401) - (block - (i32.store - (local.get $$arrayidx400) - (local.get $$R332$3) - ) - (local.set $$cond292 - (i32.eq - (local.get $$R332$3) - (i32.const 0) - ) - ) - (if - (local.get $$cond292) - (block - (local.set $$shl408 - (i32.shl - (i32.const 1) - (local.get $$52) - ) - ) - (local.set $$neg409 - (i32.xor - (local.get $$shl408) - (i32.const -1) - ) - ) - (local.set $$54 - (i32.load - (i32.const 180) - ) - ) - (local.set $$and410 - (i32.and - (local.get $$54) - (local.get $$neg409) - ) - ) - (i32.store - (i32.const 180) - (local.get $$and410) - ) - (br $do-once4) - ) - ) - ) - (block - (local.set $$55 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp413 - (i32.lt_u - (local.get $$41) - (local.get $$55) - ) - ) - (if - (local.get $$cmp413) - (call $_abort) - ) - (local.set $$arrayidx419 - (i32.add - (local.get $$41) - (i32.const 16) - ) - ) - (local.set $$56 - (i32.load - (local.get $$arrayidx419) - ) - ) - (local.set $$cmp420 - (i32.eq - (local.get $$56) - (local.get $$add$ptr6) - ) - ) - (if - (local.get $$cmp420) - (i32.store - (local.get $$arrayidx419) - (local.get $$R332$3) - ) - (block - (local.set $$arrayidx427 - (i32.add - (local.get $$41) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx427) - (local.get $$R332$3) - ) - ) - ) - (local.set $$cmp432 - (i32.eq - (local.get $$R332$3) - (i32.const 0) - ) - ) - (if - (local.get $$cmp432) - (br $do-once4) - ) - ) - ) - (local.set $$57 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp435 - (i32.lt_u - (local.get $$R332$3) - (local.get $$57) - ) - ) - (if - (local.get $$cmp435) - (call $_abort) - ) - (local.set $$parent442 - (i32.add - (local.get $$R332$3) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent442) - (local.get $$41) - ) - (local.set $$child443 - (i32.add - (local.get $$add$ptr6) - (i32.const 16) - ) - ) - (local.set $$58 - (i32.load - (local.get $$child443) - ) - ) - (local.set $$cmp445 - (i32.eq - (local.get $$58) - (i32.const 0) - ) - ) - (block $do-once10 - (if - (i32.eqz - (local.get $$cmp445) - ) - (block - (local.set $$cmp448 - (i32.lt_u - (local.get $$58) - (local.get $$57) - ) - ) - (if - (local.get $$cmp448) - (call $_abort) - (block - (local.set $$arrayidx454 - (i32.add - (local.get $$R332$3) - (i32.const 16) - ) - ) - (i32.store - (local.get $$arrayidx454) - (local.get $$58) - ) - (local.set $$parent455 - (i32.add - (local.get $$58) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent455) - (local.get $$R332$3) - ) - (br $do-once10) - ) - ) - ) - ) - ) - (local.set $$arrayidx460 - (i32.add - (local.get $$child443) - (i32.const 4) - ) - ) - (local.set $$59 - (i32.load - (local.get $$arrayidx460) - ) - ) - (local.set $$cmp461 - (i32.eq - (local.get $$59) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp461) - ) - (block - (local.set $$60 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp464 - (i32.lt_u - (local.get $$59) - (local.get $$60) - ) - ) - (if - (local.get $$cmp464) - (call $_abort) - (block - (local.set $$arrayidx470 - (i32.add - (local.get $$R332$3) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx470) - (local.get $$59) - ) - (local.set $$parent471 - (i32.add - (local.get $$59) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent471) - (local.get $$R332$3) - ) - (br $do-once4) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (local.set $$or480 - (i32.or - (local.get $$add267) - (i32.const 1) - ) - ) - (local.set $$head481 - (i32.add - (local.get $$p$1) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head481) - (local.get $$or480) - ) - (local.set $$add$ptr482 - (i32.add - (local.get $$p$1) - (local.get $$add267) - ) - ) - (i32.store - (local.get $$add$ptr482) - (local.get $$add267) - ) - (local.set $$61 - (i32.load - (i32.const 196) - ) - ) - (local.set $$cmp484 - (i32.eq - (local.get $$p$1) - (local.get $$61) - ) - ) - (if - (local.get $$cmp484) - (block - (i32.store - (i32.const 184) - (local.get $$add267) - ) - (return) - ) - (local.set $$psize$2 - (local.get $$add267) - ) - ) - ) - (block - (local.set $$and495 - (i32.and - (local.get $$28) - (i32.const -2) - ) - ) - (i32.store - (local.get $$head231) - (local.get $$and495) - ) - (local.set $$or496 - (i32.or - (local.get $$psize$1) - (i32.const 1) - ) - ) - (local.set $$head497 - (i32.add - (local.get $$p$1) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head497) - (local.get $$or496) - ) - (local.set $$add$ptr498 - (i32.add - (local.get $$p$1) - (local.get $$psize$1) - ) - ) - (i32.store - (local.get $$add$ptr498) - (local.get $$psize$1) - ) - (local.set $$psize$2 - (local.get $$psize$1) - ) - ) - ) - (local.set $$shr501 - (i32.shr_u - (local.get $$psize$2) - (i32.const 3) - ) - ) - (local.set $$cmp502 - (i32.lt_u - (local.get $$psize$2) - (i32.const 256) - ) - ) - (if - (local.get $$cmp502) - (block - (local.set $$shl508 - (i32.shl - (local.get $$shr501) - (i32.const 1) - ) - ) - (local.set $$arrayidx509 - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl508) - (i32.const 2) - ) - ) - ) - (local.set $$62 - (i32.load - (i32.const 176) - ) - ) - (local.set $$shl511 - (i32.shl - (i32.const 1) - (local.get $$shr501) - ) - ) - (local.set $$and512 - (i32.and - (local.get $$62) - (local.get $$shl511) - ) - ) - (local.set $$tobool513 - (i32.eq - (local.get $$and512) - (i32.const 0) - ) - ) - (if - (local.get $$tobool513) - (block - (local.set $$or516 - (i32.or - (local.get $$62) - (local.get $$shl511) - ) - ) - (i32.store - (i32.const 176) - (local.get $$or516) - ) - (local.set $$$pre - (i32.add - (local.get $$arrayidx509) - (i32.const 8) - ) - ) - (local.set $$$pre$phiZ2D - (local.get $$$pre) - ) - (local.set $$F510$0 - (local.get $$arrayidx509) - ) - ) - (block - (local.set $$63 - (i32.add - (local.get $$arrayidx509) - (i32.const 8) - ) - ) - (local.set $$64 - (i32.load - (local.get $$63) - ) - ) - (local.set $$65 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp519 - (i32.lt_u - (local.get $$64) - (local.get $$65) - ) - ) - (if - (local.get $$cmp519) - (call $_abort) - (block - (local.set $$$pre$phiZ2D - (local.get $$63) - ) - (local.set $$F510$0 - (local.get $$64) - ) - ) - ) - ) - ) - (i32.store - (local.get $$$pre$phiZ2D) - (local.get $$p$1) - ) - (local.set $$bk529 - (i32.add - (local.get $$F510$0) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk529) - (local.get $$p$1) - ) - (local.set $$fd530 - (i32.add - (local.get $$p$1) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd530) - (local.get $$F510$0) - ) - (local.set $$bk531 - (i32.add - (local.get $$p$1) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk531) - (local.get $$arrayidx509) - ) - (return) - ) - ) - (local.set $$shr535 - (i32.shr_u - (local.get $$psize$2) - (i32.const 8) - ) - ) - (local.set $$cmp536 - (i32.eq - (local.get $$shr535) - (i32.const 0) - ) - ) - (if - (local.get $$cmp536) - (local.set $$I534$0 - (i32.const 0) - ) - (block - (local.set $$cmp540 - (i32.gt_u - (local.get $$psize$2) - (i32.const 16777215) - ) - ) - (if - (local.get $$cmp540) - (local.set $$I534$0 - (i32.const 31) - ) - (block - (local.set $$sub - (i32.add - (local.get $$shr535) - (i32.const 1048320) - ) - ) - (local.set $$shr544 - (i32.shr_u - (local.get $$sub) - (i32.const 16) - ) - ) - (local.set $$and545 - (i32.and - (local.get $$shr544) - (i32.const 8) - ) - ) - (local.set $$shl546 - (i32.shl - (local.get $$shr535) - (local.get $$and545) - ) - ) - (local.set $$sub547 - (i32.add - (local.get $$shl546) - (i32.const 520192) - ) - ) - (local.set $$shr548 - (i32.shr_u - (local.get $$sub547) - (i32.const 16) - ) - ) - (local.set $$and549 - (i32.and - (local.get $$shr548) - (i32.const 4) - ) - ) - (local.set $$add550 - (i32.or - (local.get $$and549) - (local.get $$and545) - ) - ) - (local.set $$shl551 - (i32.shl - (local.get $$shl546) - (local.get $$and549) - ) - ) - (local.set $$sub552 - (i32.add - (local.get $$shl551) - (i32.const 245760) - ) - ) - (local.set $$shr553 - (i32.shr_u - (local.get $$sub552) - (i32.const 16) - ) - ) - (local.set $$and554 - (i32.and - (local.get $$shr553) - (i32.const 2) - ) - ) - (local.set $$add555 - (i32.or - (local.get $$add550) - (local.get $$and554) - ) - ) - (local.set $$sub556 - (i32.sub - (i32.const 14) - (local.get $$add555) - ) - ) - (local.set $$shl557 - (i32.shl - (local.get $$shl551) - (local.get $$and554) - ) - ) - (local.set $$shr558 - (i32.shr_u - (local.get $$shl557) - (i32.const 15) - ) - ) - (local.set $$add559 - (i32.add - (local.get $$sub556) - (local.get $$shr558) - ) - ) - (local.set $$shl560 - (i32.shl - (local.get $$add559) - (i32.const 1) - ) - ) - (local.set $$add561 - (i32.add - (local.get $$add559) - (i32.const 7) - ) - ) - (local.set $$shr562 - (i32.shr_u - (local.get $$psize$2) - (local.get $$add561) - ) - ) - (local.set $$and563 - (i32.and - (local.get $$shr562) - (i32.const 1) - ) - ) - (local.set $$add564 - (i32.or - (local.get $$and563) - (local.get $$shl560) - ) - ) - (local.set $$I534$0 - (local.get $$add564) - ) - ) - ) - ) - ) - (local.set $$arrayidx567 - (i32.add - (i32.const 480) - (i32.shl - (local.get $$I534$0) - (i32.const 2) - ) - ) - ) - (local.set $$index568 - (i32.add - (local.get $$p$1) - (i32.const 28) - ) - ) - (i32.store - (local.get $$index568) - (local.get $$I534$0) - ) - (local.set $$child569 - (i32.add - (local.get $$p$1) - (i32.const 16) - ) - ) - (local.set $$arrayidx570 - (i32.add - (local.get $$p$1) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx570) - (i32.const 0) - ) - (i32.store - (local.get $$child569) - (i32.const 0) - ) - (local.set $$66 - (i32.load - (i32.const 180) - ) - ) - (local.set $$shl573 - (i32.shl - (i32.const 1) - (local.get $$I534$0) - ) - ) - (local.set $$and574 - (i32.and - (local.get $$66) - (local.get $$shl573) - ) - ) - (local.set $$tobool575 - (i32.eq - (local.get $$and574) - (i32.const 0) - ) - ) - (block $do-once12 - (if - (local.get $$tobool575) - (block - (local.set $$or578 - (i32.or - (local.get $$66) - (local.get $$shl573) - ) - ) - (i32.store - (i32.const 180) - (local.get $$or578) - ) - (i32.store - (local.get $$arrayidx567) - (local.get $$p$1) - ) - (local.set $$parent579 - (i32.add - (local.get $$p$1) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent579) - (local.get $$arrayidx567) - ) - (local.set $$bk580 - (i32.add - (local.get $$p$1) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk580) - (local.get $$p$1) - ) - (local.set $$fd581 - (i32.add - (local.get $$p$1) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd581) - (local.get $$p$1) - ) - ) - (block - (local.set $$67 - (i32.load - (local.get $$arrayidx567) - ) - ) - (local.set $$cmp584 - (i32.eq - (local.get $$I534$0) - (i32.const 31) - ) - ) - (local.set $$shr586 - (i32.shr_u - (local.get $$I534$0) - (i32.const 1) - ) - ) - (local.set $$sub589 - (i32.sub - (i32.const 25) - (local.get $$shr586) - ) - ) - (local.set $$cond - (if (result i32) - (local.get $$cmp584) - (i32.const 0) - (local.get $$sub589) - ) - ) - (local.set $$shl590 - (i32.shl - (local.get $$psize$2) - (local.get $$cond) - ) - ) - (local.set $$K583$0 - (local.get $$shl590) - ) - (local.set $$T$0 - (local.get $$67) - ) - (loop $while-in15 - (block $while-out14 - (local.set $$head591 - (i32.add - (local.get $$T$0) - (i32.const 4) - ) - ) - (local.set $$68 - (i32.load - (local.get $$head591) - ) - ) - (local.set $$and592 - (i32.and - (local.get $$68) - (i32.const -8) - ) - ) - (local.set $$cmp593 - (i32.eq - (local.get $$and592) - (local.get $$psize$2) - ) - ) - (if - (local.get $$cmp593) - (block - (local.set $$T$0$lcssa - (local.get $$T$0) - ) - (local.set $label - (i32.const 130) - ) - (br $while-out14) - ) - ) - (local.set $$shr596 - (i32.shr_u - (local.get $$K583$0) - (i32.const 31) - ) - ) - (local.set $$arrayidx599 - (i32.add - (i32.add - (local.get $$T$0) - (i32.const 16) - ) - (i32.shl - (local.get $$shr596) - (i32.const 2) - ) - ) - ) - (local.set $$shl600 - (i32.shl - (local.get $$K583$0) - (i32.const 1) - ) - ) - (local.set $$69 - (i32.load - (local.get $$arrayidx599) - ) - ) - (local.set $$cmp601 - (i32.eq - (local.get $$69) - (i32.const 0) - ) - ) - (if - (local.get $$cmp601) - (block - (local.set $$T$0$lcssa319 - (local.get $$T$0) - ) - (local.set $$arrayidx599$lcssa - (local.get $$arrayidx599) - ) - (local.set $label - (i32.const 127) - ) - (br $while-out14) - ) - (block - (local.set $$K583$0 - (local.get $$shl600) - ) - (local.set $$T$0 - (local.get $$69) - ) - ) - ) - (br $while-in15) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 127) - ) - (block - (local.set $$70 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp605 - (i32.lt_u - (local.get $$arrayidx599$lcssa) - (local.get $$70) - ) - ) - (if - (local.get $$cmp605) - (call $_abort) - (block - (i32.store - (local.get $$arrayidx599$lcssa) - (local.get $$p$1) - ) - (local.set $$parent610 - (i32.add - (local.get $$p$1) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent610) - (local.get $$T$0$lcssa319) - ) - (local.set $$bk611 - (i32.add - (local.get $$p$1) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk611) - (local.get $$p$1) - ) - (local.set $$fd612 - (i32.add - (local.get $$p$1) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd612) - (local.get $$p$1) - ) - (br $do-once12) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 130) - ) - (block - (local.set $$fd620 - (i32.add - (local.get $$T$0$lcssa) - (i32.const 8) - ) - ) - (local.set $$71 - (i32.load - (local.get $$fd620) - ) - ) - (local.set $$72 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp624 - (i32.ge_u - (local.get $$71) - (local.get $$72) - ) - ) - (local.set $$not$cmp621 - (i32.ge_u - (local.get $$T$0$lcssa) - (local.get $$72) - ) - ) - (local.set $$73 - (i32.and - (local.get $$cmp624) - (local.get $$not$cmp621) - ) - ) - (if - (local.get $$73) - (block - (local.set $$bk631 - (i32.add - (local.get $$71) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk631) - (local.get $$p$1) - ) - (i32.store - (local.get $$fd620) - (local.get $$p$1) - ) - (local.set $$fd633 - (i32.add - (local.get $$p$1) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd633) - (local.get $$71) - ) - (local.set $$bk634 - (i32.add - (local.get $$p$1) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk634) - (local.get $$T$0$lcssa) - ) - (local.set $$parent635 - (i32.add - (local.get $$p$1) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent635) - (i32.const 0) - ) - (br $do-once12) - ) - (call $_abort) - ) - ) - ) - ) - ) - ) - ) - (local.set $$74 - (i32.load - (i32.const 208) - ) - ) - (local.set $$dec - (i32.add - (local.get $$74) - (i32.const -1) - ) - ) - (i32.store - (i32.const 208) - (local.get $$dec) - ) - (local.set $$cmp640 - (i32.eq - (local.get $$dec) - (i32.const 0) - ) - ) - (if - (local.get $$cmp640) - (local.set $$sp$0$in$i - (i32.const 632) - ) - (return) - ) - (loop $while-in17 - (block $while-out16 - (local.set $$sp$0$i - (i32.load - (local.get $$sp$0$in$i) - ) - ) - (local.set $$cmp$i - (i32.eq - (local.get $$sp$0$i) - (i32.const 0) - ) - ) - (local.set $$next4$i - (i32.add - (local.get $$sp$0$i) - (i32.const 8) - ) - ) - (if - (local.get $$cmp$i) - (br $while-out16) - (local.set $$sp$0$in$i - (local.get $$next4$i) - ) - ) - (br $while-in17) - ) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - (return) - ) - (func $runPostSets (; 55 ;) - (nop) - ) - (func $_i64Subtract (; 56 ;) (param $a i32) (param $b i32) (param $c i32) (param $d i32) (result i32) - (local $l i32) - (local $h i32) - (local.set $l - (i32.sub - (local.get $a) - (local.get $c) - ) - ) - (local.set $h - (i32.sub - (local.get $b) - (local.get $d) - ) - ) - (local.set $h - (i32.sub - (i32.sub - (local.get $b) - (local.get $d) - ) - (i32.gt_u - (local.get $c) - (local.get $a) - ) - ) - ) - (return - (block (result i32) - (block - (global.set $tempRet0 - (local.get $h) - ) - (drop - (global.get $tempRet0) - ) - ) - (local.get $l) - ) - ) - ) - (func $_i64Add (; 57 ;) (param $a i32) (param $b i32) (param $c i32) (param $d i32) (result i32) - (local $l i32) - (local $h i32) - (local.set $l - (i32.add - (local.get $a) - (local.get $c) - ) - ) - (local.set $h - (i32.add - (i32.add - (local.get $b) - (local.get $d) - ) - (i32.lt_u - (local.get $l) - (local.get $a) - ) - ) - ) - (return - (block (result i32) - (block - (global.set $tempRet0 - (local.get $h) - ) - (drop - (global.get $tempRet0) - ) - ) - (local.get $l) - ) - ) - ) - (func $_memset (; 58 ;) (param $ptr i32) (param $value i32) (param $num i32) (result i32) - (local $stop i32) - (local $value4 i32) - (local $stop4 i32) - (local $unaligned i32) - (local.set $stop - (i32.add - (local.get $ptr) - (local.get $num) - ) - ) - (if - (i32.ge_s - (local.get $num) - (i32.const 20) - ) - (block - (local.set $value - (i32.and - (local.get $value) - (i32.const 255) - ) - ) - (local.set $unaligned - (i32.and - (local.get $ptr) - (i32.const 3) - ) - ) - (local.set $value4 - (i32.or - (i32.or - (i32.or - (local.get $value) - (i32.shl - (local.get $value) - (i32.const 8) - ) - ) - (i32.shl - (local.get $value) - (i32.const 16) - ) - ) - (i32.shl - (local.get $value) - (i32.const 24) - ) - ) - ) - (local.set $stop4 - (i32.and - (local.get $stop) - (i32.xor - (i32.const 3) - (i32.const -1) - ) - ) - ) - (if - (local.get $unaligned) - (block - (local.set $unaligned - (i32.sub - (i32.add - (local.get $ptr) - (i32.const 4) - ) - (local.get $unaligned) - ) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.lt_s - (local.get $ptr) - (local.get $unaligned) - ) - ) - (br $while-out) - ) - (block - (i32.store8 - (local.get $ptr) - (local.get $value) - ) - (local.set $ptr - (i32.add - (local.get $ptr) - (i32.const 1) - ) - ) - ) - (br $while-in) - ) - ) - ) - ) - (loop $while-in1 - (block $while-out0 - (if - (i32.eqz - (i32.lt_s - (local.get $ptr) - (local.get $stop4) - ) - ) - (br $while-out0) - ) - (block - (i32.store - (local.get $ptr) - (local.get $value4) - ) - (local.set $ptr - (i32.add - (local.get $ptr) - (i32.const 4) - ) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (loop $while-in3 - (block $while-out2 - (if - (i32.eqz - (i32.lt_s - (local.get $ptr) - (local.get $stop) - ) - ) - (br $while-out2) - ) - (block - (i32.store8 - (local.get $ptr) - (local.get $value) - ) - (local.set $ptr - (i32.add - (local.get $ptr) - (i32.const 1) - ) - ) - ) - (br $while-in3) - ) - ) - (return - (i32.sub - (local.get $ptr) - (local.get $num) - ) - ) - ) - (func $_bitshift64Lshr (; 59 ;) (param $low i32) (param $high i32) (param $bits i32) (result i32) - (local $ander i32) - (if - (i32.lt_s - (local.get $bits) - (i32.const 32) - ) - (block - (local.set $ander - (i32.sub - (i32.shl - (i32.const 1) - (local.get $bits) - ) - (i32.const 1) - ) - ) - (global.set $tempRet0 - (i32.shr_u - (local.get $high) - (local.get $bits) - ) - ) - (return - (i32.or - (i32.shr_u - (local.get $low) - (local.get $bits) - ) - (i32.shl - (i32.and - (local.get $high) - (local.get $ander) - ) - (i32.sub - (i32.const 32) - (local.get $bits) - ) - ) - ) - ) - ) - ) - (global.set $tempRet0 - (i32.const 0) - ) - (return - (i32.shr_u - (local.get $high) - (i32.sub - (local.get $bits) - (i32.const 32) - ) - ) - ) - ) - (func $_bitshift64Shl (; 60 ;) (param $low i32) (param $high i32) (param $bits i32) (result i32) - (local $ander i32) - (if - (i32.lt_s - (local.get $bits) - (i32.const 32) - ) - (block - (local.set $ander - (i32.sub - (i32.shl - (i32.const 1) - (local.get $bits) - ) - (i32.const 1) - ) - ) - (global.set $tempRet0 - (i32.or - (i32.shl - (local.get $high) - (local.get $bits) - ) - (i32.shr_u - (i32.and - (local.get $low) - (i32.shl - (local.get $ander) - (i32.sub - (i32.const 32) - (local.get $bits) - ) - ) - ) - (i32.sub - (i32.const 32) - (local.get $bits) - ) - ) - ) - ) - (return - (i32.shl - (local.get $low) - (local.get $bits) - ) - ) - ) - ) - (global.set $tempRet0 - (i32.shl - (local.get $low) - (i32.sub - (local.get $bits) - (i32.const 32) - ) - ) - ) - (return - (i32.const 0) - ) - ) - (func $_memcpy (; 61 ;) (param $dest i32) (param $src i32) (param $num i32) (result i32) - (local $ret i32) - (if - (i32.ge_s - (local.get $num) - (i32.const 4096) - ) - (return - (call $_emscripten_memcpy_big - (local.get $dest) - (local.get $src) - (local.get $num) - ) - ) - ) - (local.set $ret - (local.get $dest) - ) - (if - (i32.eq - (i32.and - (local.get $dest) - (i32.const 3) - ) - (i32.and - (local.get $src) - (i32.const 3) - ) - ) - (block - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.and - (local.get $dest) - (i32.const 3) - ) - ) - (br $while-out) - ) - (block - (if - (i32.eq - (local.get $num) - (i32.const 0) - ) - (return - (local.get $ret) - ) - ) - (i32.store8 - (local.get $dest) - (i32.load8_s - (local.get $src) - ) - ) - (local.set $dest - (i32.add - (local.get $dest) - (i32.const 1) - ) - ) - (local.set $src - (i32.add - (local.get $src) - (i32.const 1) - ) - ) - (local.set $num - (i32.sub - (local.get $num) - (i32.const 1) - ) - ) - ) - (br $while-in) - ) - ) - (loop $while-in1 - (block $while-out0 - (if - (i32.eqz - (i32.ge_s - (local.get $num) - (i32.const 4) - ) - ) - (br $while-out0) - ) - (block - (i32.store - (local.get $dest) - (i32.load - (local.get $src) - ) - ) - (local.set $dest - (i32.add - (local.get $dest) - (i32.const 4) - ) - ) - (local.set $src - (i32.add - (local.get $src) - (i32.const 4) - ) - ) - (local.set $num - (i32.sub - (local.get $num) - (i32.const 4) - ) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (loop $while-in3 - (block $while-out2 - (if - (i32.eqz - (i32.gt_s - (local.get $num) - (i32.const 0) - ) - ) - (br $while-out2) - ) - (block - (i32.store8 - (local.get $dest) - (i32.load8_s - (local.get $src) - ) - ) - (local.set $dest - (i32.add - (local.get $dest) - (i32.const 1) - ) - ) - (local.set $src - (i32.add - (local.get $src) - (i32.const 1) - ) - ) - (local.set $num - (i32.sub - (local.get $num) - (i32.const 1) - ) - ) - ) - (br $while-in3) - ) - ) - (return - (local.get $ret) - ) - ) - (func $_bitshift64Ashr (; 62 ;) (param $low i32) (param $high i32) (param $bits i32) (result i32) - (local $ander i32) - (if - (i32.lt_s - (local.get $bits) - (i32.const 32) - ) - (block - (local.set $ander - (i32.sub - (i32.shl - (i32.const 1) - (local.get $bits) - ) - (i32.const 1) - ) - ) - (global.set $tempRet0 - (i32.shr_s - (local.get $high) - (local.get $bits) - ) - ) - (return - (i32.or - (i32.shr_u - (local.get $low) - (local.get $bits) - ) - (i32.shl - (i32.and - (local.get $high) - (local.get $ander) - ) - (i32.sub - (i32.const 32) - (local.get $bits) - ) - ) - ) - ) - ) - ) - (global.set $tempRet0 - (if (result i32) - (i32.lt_s - (local.get $high) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - ) - (return - (i32.shr_s - (local.get $high) - (i32.sub - (local.get $bits) - (i32.const 32) - ) - ) - ) - ) - (func $___muldsi3 (; 63 ;) (param $$a i32) (param $$b i32) (result i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$6 i32) - (local $$8 i32) - (local $$11 i32) - (local $$12 i32) - (local.set $$1 - (i32.and - (local.get $$a) - (i32.const 65535) - ) - ) - (local.set $$2 - (i32.and - (local.get $$b) - (i32.const 65535) - ) - ) - (local.set $$3 - (i32.mul - (local.get $$2) - (local.get $$1) - ) - ) - (local.set $$6 - (i32.shr_u - (local.get $$a) - (i32.const 16) - ) - ) - (local.set $$8 - (i32.add - (i32.shr_u - (local.get $$3) - (i32.const 16) - ) - (i32.mul - (local.get $$2) - (local.get $$6) - ) - ) - ) - (local.set $$11 - (i32.shr_u - (local.get $$b) - (i32.const 16) - ) - ) - (local.set $$12 - (i32.mul - (local.get $$11) - (local.get $$1) - ) - ) - (return - (block (result i32) - (block - (global.set $tempRet0 - (i32.add - (i32.add - (i32.shr_u - (local.get $$8) - (i32.const 16) - ) - (i32.mul - (local.get $$11) - (local.get $$6) - ) - ) - (i32.shr_u - (i32.add - (i32.and - (local.get $$8) - (i32.const 65535) - ) - (local.get $$12) - ) - (i32.const 16) - ) - ) - ) - (drop - (global.get $tempRet0) - ) - ) - (i32.or - (i32.const 0) - (i32.or - (i32.shl - (i32.add - (local.get $$8) - (local.get $$12) - ) - (i32.const 16) - ) - (i32.and - (local.get $$3) - (i32.const 65535) - ) - ) - ) - ) - ) - ) - (func $___divdi3 (; 64 ;) (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) - (local $$1$0 i32) - (local $$1$1 i32) - (local $$2$0 i32) - (local $$2$1 i32) - (local $$4$0 i32) - (local $$4$1 i32) - (local $$6$0 i32) - (local $$7$0 i32) - (local $$7$1 i32) - (local $$8$0 i32) - (local $$10$0 i32) - (local.set $$1$0 - (i32.or - (i32.shr_s - (local.get $$a$1) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$1$1 - (i32.or - (i32.shr_s - (if (result i32) - (i32.lt_s - (local.get $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$2$0 - (i32.or - (i32.shr_s - (local.get $$b$1) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$2$1 - (i32.or - (i32.shr_s - (if (result i32) - (i32.lt_s - (local.get $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$4$0 - (call $_i64Subtract - (i32.xor - (local.get $$1$0) - (local.get $$a$0) - ) - (i32.xor - (local.get $$1$1) - (local.get $$a$1) - ) - (local.get $$1$0) - (local.get $$1$1) - ) - ) - (local.set $$4$1 - (global.get $tempRet0) - ) - (local.set $$6$0 - (call $_i64Subtract - (i32.xor - (local.get $$2$0) - (local.get $$b$0) - ) - (i32.xor - (local.get $$2$1) - (local.get $$b$1) - ) - (local.get $$2$0) - (local.get $$2$1) - ) - ) - (local.set $$7$0 - (i32.xor - (local.get $$2$0) - (local.get $$1$0) - ) - ) - (local.set $$7$1 - (i32.xor - (local.get $$2$1) - (local.get $$1$1) - ) - ) - (local.set $$8$0 - (call $___udivmoddi4 - (local.get $$4$0) - (local.get $$4$1) - (local.get $$6$0) - (global.get $tempRet0) - (i32.const 0) - ) - ) - (local.set $$10$0 - (call $_i64Subtract - (i32.xor - (local.get $$8$0) - (local.get $$7$0) - ) - (i32.xor - (global.get $tempRet0) - (local.get $$7$1) - ) - (local.get $$7$0) - (local.get $$7$1) - ) - ) - (return - (local.get $$10$0) - ) - ) - (func $___remdi3 (; 65 ;) (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) - (local $$rem i32) - (local $$1$0 i32) - (local $$1$1 i32) - (local $$2$0 i32) - (local $$2$1 i32) - (local $$4$0 i32) - (local $$4$1 i32) - (local $$6$0 i32) - (local $$10$0 i32) - (local $$10$1 i32) - (local $__stackBase__ i32) - (local.set $__stackBase__ - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (local.set $$rem - (local.get $__stackBase__) - ) - (local.set $$1$0 - (i32.or - (i32.shr_s - (local.get $$a$1) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$1$1 - (i32.or - (i32.shr_s - (if (result i32) - (i32.lt_s - (local.get $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$2$0 - (i32.or - (i32.shr_s - (local.get $$b$1) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$2$1 - (i32.or - (i32.shr_s - (if (result i32) - (i32.lt_s - (local.get $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$4$0 - (call $_i64Subtract - (i32.xor - (local.get $$1$0) - (local.get $$a$0) - ) - (i32.xor - (local.get $$1$1) - (local.get $$a$1) - ) - (local.get $$1$0) - (local.get $$1$1) - ) - ) - (local.set $$4$1 - (global.get $tempRet0) - ) - (local.set $$6$0 - (call $_i64Subtract - (i32.xor - (local.get $$2$0) - (local.get $$b$0) - ) - (i32.xor - (local.get $$2$1) - (local.get $$b$1) - ) - (local.get $$2$0) - (local.get $$2$1) - ) - ) - (drop - (call $___udivmoddi4 - (local.get $$4$0) - (local.get $$4$1) - (local.get $$6$0) - (global.get $tempRet0) - (local.get $$rem) - ) - ) - (local.set $$10$0 - (call $_i64Subtract - (i32.xor - (i32.load - (local.get $$rem) - ) - (local.get $$1$0) - ) - (i32.xor - (i32.load - (i32.add - (local.get $$rem) - (i32.const 4) - ) - ) - (local.get $$1$1) - ) - (local.get $$1$0) - (local.get $$1$1) - ) - ) - (local.set $$10$1 - (global.get $tempRet0) - ) - (global.set $STACKTOP - (local.get $__stackBase__) - ) - (return - (block (result i32) - (block - (global.set $tempRet0 - (local.get $$10$1) - ) - (drop - (global.get $tempRet0) - ) - ) - (local.get $$10$0) - ) - ) - ) - (func $___muldi3 (; 66 ;) (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) - (local $$x_sroa_0_0_extract_trunc i32) - (local $$y_sroa_0_0_extract_trunc i32) - (local $$1$0 i32) - (local $$1$1 i32) - (local $$2 i32) - (local.set $$x_sroa_0_0_extract_trunc - (local.get $$a$0) - ) - (local.set $$y_sroa_0_0_extract_trunc - (local.get $$b$0) - ) - (local.set $$1$0 - (call $___muldsi3 - (local.get $$x_sroa_0_0_extract_trunc) - (local.get $$y_sroa_0_0_extract_trunc) - ) - ) - (local.set $$1$1 - (global.get $tempRet0) - ) - (local.set $$2 - (i32.mul - (local.get $$a$1) - (local.get $$y_sroa_0_0_extract_trunc) - ) - ) - (return - (block (result i32) - (block - (global.set $tempRet0 - (i32.or - (i32.add - (i32.add - (i32.mul - (local.get $$b$1) - (local.get $$x_sroa_0_0_extract_trunc) - ) - (local.get $$2) - ) - (local.get $$1$1) - ) - (i32.and - (local.get $$1$1) - (i32.const 0) - ) - ) - ) - (drop - (global.get $tempRet0) - ) - ) - (i32.or - (i32.const 0) - (i32.and - (local.get $$1$0) - (i32.const -1) - ) - ) - ) - ) - ) - (func $___udivdi3 (; 67 ;) (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) - (local $$1$0 i32) - (local.set $$1$0 - (call $___udivmoddi4 - (local.get $$a$0) - (local.get $$a$1) - (local.get $$b$0) - (local.get $$b$1) - (i32.const 0) - ) - ) - (return - (local.get $$1$0) - ) - ) - (func $___uremdi3 (; 68 ;) (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) - (local $$rem i32) - (local $__stackBase__ i32) - (local.set $__stackBase__ - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (local.set $$rem - (local.get $__stackBase__) - ) - (drop - (call $___udivmoddi4 - (local.get $$a$0) - (local.get $$a$1) - (local.get $$b$0) - (local.get $$b$1) - (local.get $$rem) - ) - ) - (global.set $STACKTOP - (local.get $__stackBase__) - ) - (return - (block (result i32) - (block - (global.set $tempRet0 - (i32.load - (i32.add - (local.get $$rem) - (i32.const 4) - ) - ) - ) - (drop - (global.get $tempRet0) - ) - ) - (i32.load - (local.get $$rem) - ) - ) - ) - ) - (func $___udivmoddi4 (; 69 ;) (param $xl i32) (param $xh i32) (param $yl i32) (param $yh i32) (param $r i32) (result i32) - (local $x64 i64) - (local $y64 i64) - (local.set $x64 - (i64.or - (i64.extend_i32_u - (local.get $xl) - ) - (i64.shl - (i64.extend_i32_u - (local.get $xh) - ) - (i64.const 32) - ) - ) - ) - (local.set $y64 - (i64.or - (i64.extend_i32_u - (local.get $yl) - ) - (i64.shl - (i64.extend_i32_u - (local.get $yh) - ) - (i64.const 32) - ) - ) - ) - (if - (local.get $r) - (i64.store - (local.get $r) - (i64.rem_u - (local.get $x64) - (local.get $y64) - ) - ) - ) - (local.set $x64 - (i64.div_u - (local.get $x64) - (local.get $y64) - ) - ) - (global.set $tempRet0 - (i32.wrap_i64 - (i64.shr_u - (local.get $x64) - (i64.const 32) - ) - ) - ) - (i32.wrap_i64 - (local.get $x64) - ) - ) - (func $dynCall_ii (; 70 ;) (param $index i32) (param $a1 i32) (result i32) - (return - (call_indirect (type $i32_=>_i32) - (local.get $a1) - (i32.add - (i32.and - (local.get $index) - (i32.const 1) - ) - (i32.const 0) - ) - ) - ) - ) - (func $dynCall_iiii (; 71 ;) (param $index i32) (param $a1 i32) (param $a2 i32) (param $a3 i32) (result i32) - (return - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $a1) - (local.get $a2) - (local.get $a3) - (i32.add - (i32.and - (local.get $index) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - (func $dynCall_vi (; 72 ;) (param $index i32) (param $a1 i32) - (call_indirect (type $i32_=>_none) - (local.get $a1) - (i32.add - (i32.and - (local.get $index) - (i32.const 7) - ) - (i32.const 10) - ) - ) - ) - (func $b0 (; 73 ;) (param $p0 i32) (result i32) - (call $nullFunc_ii - (i32.const 0) - ) - (return - (i32.const 0) - ) - ) - (func $b1 (; 74 ;) (param $p0 i32) (param $p1 i32) (param $p2 i32) (result i32) - (call $nullFunc_iiii - (i32.const 1) - ) - (return - (i32.const 0) - ) - ) - (func $b2 (; 75 ;) (param $p0 i32) - (call $nullFunc_vi - (i32.const 2) - ) - ) -) diff -Nru binaryen-91/test/emcc_hello_world.fromasm.no-opts binaryen-99/test/emcc_hello_world.fromasm.no-opts --- binaryen-91/test/emcc_hello_world.fromasm.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/emcc_hello_world.fromasm.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,31634 +0,0 @@ -(module - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 18 18 funcref)) - (elem (global.get $__table_base) $b0 $___stdio_close $b1 $b1 $___stdout_write $___stdio_seek $___stdio_write $b1 $b1 $b1 $b2 $b2 $b2 $b2 $b2 $_cleanup $b2 $b2) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) - (import "env" "ABORT" (global $ABORT$asm2wasm$import i32)) - (import "env" "cttz_i8" (global $cttz_i8$asm2wasm$import i32)) - (import "global" "NaN" (global $nan$asm2wasm$import f64)) - (import "global" "Infinity" (global $inf$asm2wasm$import f64)) - (import "env" "abort" (func $abort)) - (import "env" "nullFunc_ii" (func $nullFunc_ii (param i32))) - (import "env" "nullFunc_iiii" (func $nullFunc_iiii (param i32))) - (import "env" "nullFunc_vi" (func $nullFunc_vi (param i32))) - (import "env" "_pthread_cleanup_pop" (func $_pthread_cleanup_pop (param i32))) - (import "env" "___lock" (func $___lock (param i32))) - (import "env" "_pthread_self" (func $_pthread_self (result i32))) - (import "env" "_abort" (func $_abort)) - (import "env" "___syscall6" (func $___syscall6 (param i32 i32) (result i32))) - (import "env" "_sbrk" (func $_sbrk (param i32) (result i32))) - (import "env" "_time" (func $_time (param i32) (result i32))) - (import "env" "_emscripten_memcpy_big" (func $_emscripten_memcpy_big (param i32 i32 i32) (result i32))) - (import "env" "___syscall54" (func $___syscall54 (param i32 i32) (result i32))) - (import "env" "___unlock" (func $___unlock (param i32))) - (import "env" "___syscall140" (func $___syscall140 (param i32 i32) (result i32))) - (import "env" "_pthread_cleanup_push" (func $_pthread_cleanup_push (param i32 i32))) - (import "env" "_sysconf" (func $_sysconf (param i32) (result i32))) - (import "env" "___syscall146" (func $___syscall146 (param i32 i32) (result i32))) - (import "asm2wasm" "f64-to-int" (func $f64-to-int (param f64) (result i32))) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (global $STACK_MAX (mut i32) (global.get $STACK_MAX$asm2wasm$import)) - (global $tempDoublePtr (mut i32) (global.get $tempDoublePtr$asm2wasm$import)) - (global $ABORT (mut i32) (global.get $ABORT$asm2wasm$import)) - (global $cttz_i8 (mut i32) (global.get $cttz_i8$asm2wasm$import)) - (global $__THREW__ (mut i32) (i32.const 0)) - (global $threwValue (mut i32) (i32.const 0)) - (global $setjmpId (mut i32) (i32.const 0)) - (global $undef (mut i32) (i32.const 0)) - (global $nan (mut f64) (global.get $nan$asm2wasm$import)) - (global $inf (mut f64) (global.get $inf$asm2wasm$import)) - (global $tempInt (mut i32) (i32.const 0)) - (global $tempBigInt (mut i32) (i32.const 0)) - (global $tempBigIntP (mut i32) (i32.const 0)) - (global $tempBigIntS (mut i32) (i32.const 0)) - (global $tempBigIntR (mut f64) (f64.const 0)) - (global $tempBigIntI (mut i32) (i32.const 0)) - (global $tempBigIntD (mut i32) (i32.const 0)) - (global $tempValue (mut i32) (i32.const 0)) - (global $tempDouble (mut f64) (f64.const 0)) - (global $tempRet0 (mut i32) (i32.const 0)) - (global $tempRet1 (mut i32) (i32.const 0)) - (global $tempRet2 (mut i32) (i32.const 0)) - (global $tempRet3 (mut i32) (i32.const 0)) - (global $tempRet4 (mut i32) (i32.const 0)) - (global $tempRet5 (mut i32) (i32.const 0)) - (global $tempRet6 (mut i32) (i32.const 0)) - (global $tempRet7 (mut i32) (i32.const 0)) - (global $tempRet8 (mut i32) (i32.const 0)) - (global $tempRet9 (mut i32) (i32.const 0)) - (global $tempFloat (mut f64) (f64.const 0)) - (export "_i64Subtract" (func $_i64Subtract)) - (export "_free" (func $_free)) - (export "_main" (func $_main)) - (export "_i64Add" (func $_i64Add)) - (export "_memset" (func $_memset)) - (export "_malloc" (func $_malloc)) - (export "_memcpy" (func $_memcpy)) - (export "_bitshift64Lshr" (func $_bitshift64Lshr)) - (export "_fflush" (func $_fflush)) - (export "___errno_location" (func $___errno_location)) - (export "_bitshift64Shl" (func $_bitshift64Shl)) - (export "runPostSets" (func $runPostSets)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackSave" (func $stackSave)) - (export "stackRestore" (func $stackRestore)) - (export "establishStackSpace" (func $establishStackSpace)) - (export "setThrew" (func $setThrew)) - (export "setTempRet0" (func $setTempRet0)) - (export "getTempRet0" (func $getTempRet0)) - (export "dynCall_ii" (func $dynCall_ii)) - (export "dynCall_iiii" (func $dynCall_iiii)) - (export "dynCall_vi" (func $dynCall_vi)) - (export "___udivmoddi4" (func $___udivmoddi4)) - (func $stackAlloc (; 19 ;) (param $size i32) (result i32) - (local $ret i32) - (local.set $ret - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (local.get $size) - ) - ) - (global.set $STACKTOP - (i32.and - (i32.add - (global.get $STACKTOP) - (i32.const 15) - ) - (i32.const -16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (return - (local.get $ret) - ) - ) - (func $stackSave (; 20 ;) (result i32) - (return - (global.get $STACKTOP) - ) - ) - (func $stackRestore (; 21 ;) (param $top i32) - (global.set $STACKTOP - (local.get $top) - ) - ) - (func $establishStackSpace (; 22 ;) (param $stackBase i32) (param $stackMax i32) - (global.set $STACKTOP - (local.get $stackBase) - ) - (global.set $STACK_MAX - (local.get $stackMax) - ) - ) - (func $setThrew (; 23 ;) (param $threw i32) (param $value i32) - (if - (i32.eq - (global.get $__THREW__) - (i32.const 0) - ) - (block - (global.set $__THREW__ - (local.get $threw) - ) - (global.set $threwValue - (local.get $value) - ) - ) - ) - ) - (func $copyTempFloat (; 24 ;) (param $ptr i32) - (i32.store8 - (global.get $tempDoublePtr) - (i32.load8_s - (local.get $ptr) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 1) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 1) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 2) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 2) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 3) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 3) - ) - ) - ) - ) - (func $copyTempDouble (; 25 ;) (param $ptr i32) - (i32.store8 - (global.get $tempDoublePtr) - (i32.load8_s - (local.get $ptr) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 1) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 1) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 2) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 2) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 3) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 3) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 4) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 4) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 5) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 5) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 6) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 6) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 7) - ) - (i32.load8_s - (i32.add - (local.get $ptr) - (i32.const 7) - ) - ) - ) - ) - (func $setTempRet0 (; 26 ;) (param $value i32) - (global.set $tempRet0 - (local.get $value) - ) - ) - (func $getTempRet0 (; 27 ;) (result i32) - (return - (global.get $tempRet0) - ) - ) - (func $_main (; 28 ;) (result i32) - (local $$retval i32) - (local $$vararg_buffer i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$vararg_buffer - (local.get $sp) - ) - (local.set $$retval - (i32.const 0) - ) - (drop - (call $_printf - (i32.const 672) - (local.get $$vararg_buffer) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (i32.const 0) - ) - ) - (func $_frexp (; 29 ;) (param $$x f64) (param $$e i32) (result f64) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$7 f64) - (local $$call f64) - (local $$conv i32) - (local $$mul f64) - (local $$retval$0 f64) - (local $$storemerge i32) - (local $$sub i32) - (local $$sub8 i32) - (local $$tobool1 i32) - (local $$x$addr$0 f64) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (f64.store - (global.get $tempDoublePtr) - (local.get $$x) - ) - (local.set $$0 - (i32.load - (global.get $tempDoublePtr) - ) - ) - (local.set $$1 - (i32.load - (i32.add - (global.get $tempDoublePtr) - (i32.const 4) - ) - ) - ) - (local.set $$2 - (call $_bitshift64Lshr - (local.get $$0) - (local.get $$1) - (i32.const 52) - ) - ) - (local.set $$3 - (global.get $tempRet0) - ) - (local.set $$conv - (i32.and - (local.get $$2) - (i32.const 2047) - ) - ) - (block $switch - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case0 $switch-default - (i32.sub - (local.get $$conv) - (i32.const 0) - ) - ) - ) - (block - (local.set $$tobool1 - (f64.ne - (local.get $$x) - (f64.const 0) - ) - ) - (if - (local.get $$tobool1) - (block - (local.set $$mul - (f64.mul - (local.get $$x) - (f64.const 18446744073709551615) - ) - ) - (local.set $$call - (call $_frexp - (local.get $$mul) - (local.get $$e) - ) - ) - (local.set $$4 - (i32.load - (local.get $$e) - ) - ) - (local.set $$sub - (i32.add - (local.get $$4) - (i32.const -64) - ) - ) - (local.set $$storemerge - (local.get $$sub) - ) - (local.set $$x$addr$0 - (local.get $$call) - ) - ) - (block - (local.set $$storemerge - (i32.const 0) - ) - (local.set $$x$addr$0 - (local.get $$x) - ) - ) - ) - (i32.store - (local.get $$e) - (local.get $$storemerge) - ) - (local.set $$retval$0 - (local.get $$x$addr$0) - ) - (br $switch) - ) - ) - (block - (local.set $$retval$0 - (local.get $$x) - ) - (br $switch) - ) - ) - (block - (local.set $$sub8 - (i32.add - (local.get $$conv) - (i32.const -1022) - ) - ) - (i32.store - (local.get $$e) - (local.get $$sub8) - ) - (local.set $$5 - (i32.and - (local.get $$1) - (i32.const -2146435073) - ) - ) - (local.set $$6 - (i32.or - (local.get $$5) - (i32.const 1071644672) - ) - ) - (i32.store - (global.get $tempDoublePtr) - (local.get $$0) - ) - (i32.store - (i32.add - (global.get $tempDoublePtr) - (i32.const 4) - ) - (local.get $$6) - ) - (local.set $$7 - (f64.load - (global.get $tempDoublePtr) - ) - ) - (local.set $$retval$0 - (local.get $$7) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_frexpl (; 30 ;) (param $$x f64) (param $$e i32) (result f64) - (local $$call f64) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$call - (call $_frexp - (local.get $$x) - (local.get $$e) - ) - ) - (return - (local.get $$call) - ) - ) - (func $_strerror (; 31 ;) (param $$e i32) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$arrayidx i32) - (local $$cmp i32) - (local $$conv i32) - (local $$dec i32) - (local $$i$012 i32) - (local $$i$012$lcssa i32) - (local $$i$111 i32) - (local $$inc i32) - (local $$incdec$ptr i32) - (local $$incdec$ptr$lcssa i32) - (local $$s$0$lcssa i32) - (local $$s$010 i32) - (local $$s$1 i32) - (local $$tobool i32) - (local $$tobool5 i32) - (local $$tobool5$9 i32) - (local $$tobool8 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$i$012 - (i32.const 0) - ) - (loop $while-in - (block $while-out - (local.set $$arrayidx - (i32.add - (i32.const 687) - (local.get $$i$012) - ) - ) - (local.set $$0 - (i32.load8_s - (local.get $$arrayidx) - ) - ) - (local.set $$conv - (i32.and - (local.get $$0) - (i32.const 255) - ) - ) - (local.set $$cmp - (i32.eq - (local.get $$conv) - (local.get $$e) - ) - ) - (if - (local.get $$cmp) - (block - (local.set $$i$012$lcssa - (local.get $$i$012) - ) - (local.set $label - (i32.const 2) - ) - (br $while-out) - ) - ) - (local.set $$inc - (i32.add - (local.get $$i$012) - (i32.const 1) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$inc) - (i32.const 87) - ) - ) - (if - (local.get $$tobool) - (block - (local.set $$i$111 - (i32.const 87) - ) - (local.set $$s$010 - (i32.const 775) - ) - (local.set $label - (i32.const 5) - ) - (br $while-out) - ) - (local.set $$i$012 - (local.get $$inc) - ) - ) - (br $while-in) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 2) - ) - (block - (local.set $$tobool5$9 - (i32.eq - (local.get $$i$012$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$tobool5$9) - (local.set $$s$0$lcssa - (i32.const 775) - ) - (block - (local.set $$i$111 - (local.get $$i$012$lcssa) - ) - (local.set $$s$010 - (i32.const 775) - ) - (local.set $label - (i32.const 5) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 5) - ) - (loop $while-in1 - (block $while-out0 - (local.set $label - (i32.const 0) - ) - (local.set $$s$1 - (local.get $$s$010) - ) - (loop $while-in3 - (block $while-out2 - (local.set $$1 - (i32.load8_s - (local.get $$s$1) - ) - ) - (local.set $$tobool8 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$1) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - ) - (local.set $$incdec$ptr - (i32.add - (local.get $$s$1) - (i32.const 1) - ) - ) - (if - (local.get $$tobool8) - (block - (local.set $$incdec$ptr$lcssa - (local.get $$incdec$ptr) - ) - (br $while-out2) - ) - (local.set $$s$1 - (local.get $$incdec$ptr) - ) - ) - (br $while-in3) - ) - ) - (local.set $$dec - (i32.add - (local.get $$i$111) - (i32.const -1) - ) - ) - (local.set $$tobool5 - (i32.eq - (local.get $$dec) - (i32.const 0) - ) - ) - (if - (local.get $$tobool5) - (block - (local.set $$s$0$lcssa - (local.get $$incdec$ptr$lcssa) - ) - (br $while-out0) - ) - (block - (local.set $$i$111 - (local.get $$dec) - ) - (local.set $$s$010 - (local.get $$incdec$ptr$lcssa) - ) - (local.set $label - (i32.const 5) - ) - ) - ) - (br $while-in1) - ) - ) - ) - (return - (local.get $$s$0$lcssa) - ) - ) - (func $___errno_location (; 32 ;) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$call$i i32) - (local $$errno_ptr i32) - (local $$retval$0 i32) - (local $$tobool i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$0 - (i32.load - (i32.const 16) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$0) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (local.set $$retval$0 - (i32.const 60) - ) - (block - (local.set $$call$i - (call $_pthread_self) - ) - (local.set $$errno_ptr - (i32.add - (local.get $$call$i) - (i32.const 60) - ) - ) - (local.set $$1 - (i32.load - (local.get $$errno_ptr) - ) - ) - (local.set $$retval$0 - (local.get $$1) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $___stdio_close (; 33 ;) (param $$f i32) (result i32) - (local $$0 i32) - (local $$call i32) - (local $$call1 i32) - (local $$fd i32) - (local $$vararg_buffer i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$vararg_buffer - (local.get $sp) - ) - (local.set $$fd - (i32.add - (local.get $$f) - (i32.const 60) - ) - ) - (local.set $$0 - (i32.load - (local.get $$fd) - ) - ) - (i32.store - (local.get $$vararg_buffer) - (local.get $$0) - ) - (local.set $$call - (call $___syscall6 - (i32.const 6) - (local.get $$vararg_buffer) - ) - ) - (local.set $$call1 - (call $___syscall_ret - (local.get $$call) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (local.get $$call1) - ) - ) - (func $___stdout_write (; 34 ;) (param $$f i32) (param $$buf i32) (param $$len i32) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$and i32) - (local $$call i32) - (local $$call3 i32) - (local $$fd i32) - (local $$lbf i32) - (local $$tio i32) - (local $$tobool i32) - (local $$tobool2 i32) - (local $$vararg_buffer i32) - (local $$vararg_ptr1 i32) - (local $$vararg_ptr2 i32) - (local $$write i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 80) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$vararg_buffer - (local.get $sp) - ) - (local.set $$tio - (i32.add - (local.get $sp) - (i32.const 12) - ) - ) - (local.set $$write - (i32.add - (local.get $$f) - (i32.const 36) - ) - ) - (i32.store - (local.get $$write) - (i32.const 4) - ) - (local.set $$0 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and - (i32.and - (local.get $$0) - (i32.const 64) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$and) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (block - (local.set $$fd - (i32.add - (local.get $$f) - (i32.const 60) - ) - ) - (local.set $$1 - (i32.load - (local.get $$fd) - ) - ) - (i32.store - (local.get $$vararg_buffer) - (local.get $$1) - ) - (local.set $$vararg_ptr1 - (i32.add - (local.get $$vararg_buffer) - (i32.const 4) - ) - ) - (i32.store - (local.get $$vararg_ptr1) - (i32.const 21505) - ) - (local.set $$vararg_ptr2 - (i32.add - (local.get $$vararg_buffer) - (i32.const 8) - ) - ) - (i32.store - (local.get $$vararg_ptr2) - (local.get $$tio) - ) - (local.set $$call - (call $___syscall54 - (i32.const 54) - (local.get $$vararg_buffer) - ) - ) - (local.set $$tobool2 - (i32.eq - (local.get $$call) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool2) - ) - (block - (local.set $$lbf - (i32.add - (local.get $$f) - (i32.const 75) - ) - ) - (i32.store8 - (local.get $$lbf) - (i32.const -1) - ) - ) - ) - ) - ) - (local.set $$call3 - (call $___stdio_write - (local.get $$f) - (local.get $$buf) - (local.get $$len) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (local.get $$call3) - ) - ) - (func $___stdio_seek (; 35 ;) (param $$f i32) (param $$off i32) (param $$whence i32) (result i32) - (local $$$pre i32) - (local $$0 i32) - (local $$1 i32) - (local $$call i32) - (local $$call1 i32) - (local $$cmp i32) - (local $$fd i32) - (local $$ret i32) - (local $$vararg_buffer i32) - (local $$vararg_ptr1 i32) - (local $$vararg_ptr2 i32) - (local $$vararg_ptr3 i32) - (local $$vararg_ptr4 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 32) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$vararg_buffer - (local.get $sp) - ) - (local.set $$ret - (i32.add - (local.get $sp) - (i32.const 20) - ) - ) - (local.set $$fd - (i32.add - (local.get $$f) - (i32.const 60) - ) - ) - (local.set $$0 - (i32.load - (local.get $$fd) - ) - ) - (i32.store - (local.get $$vararg_buffer) - (local.get $$0) - ) - (local.set $$vararg_ptr1 - (i32.add - (local.get $$vararg_buffer) - (i32.const 4) - ) - ) - (i32.store - (local.get $$vararg_ptr1) - (i32.const 0) - ) - (local.set $$vararg_ptr2 - (i32.add - (local.get $$vararg_buffer) - (i32.const 8) - ) - ) - (i32.store - (local.get $$vararg_ptr2) - (local.get $$off) - ) - (local.set $$vararg_ptr3 - (i32.add - (local.get $$vararg_buffer) - (i32.const 12) - ) - ) - (i32.store - (local.get $$vararg_ptr3) - (local.get $$ret) - ) - (local.set $$vararg_ptr4 - (i32.add - (local.get $$vararg_buffer) - (i32.const 16) - ) - ) - (i32.store - (local.get $$vararg_ptr4) - (local.get $$whence) - ) - (local.set $$call - (call $___syscall140 - (i32.const 140) - (local.get $$vararg_buffer) - ) - ) - (local.set $$call1 - (call $___syscall_ret - (local.get $$call) - ) - ) - (local.set $$cmp - (i32.lt_s - (local.get $$call1) - (i32.const 0) - ) - ) - (if - (local.get $$cmp) - (block - (i32.store - (local.get $$ret) - (i32.const -1) - ) - (local.set $$1 - (i32.const -1) - ) - ) - (block - (local.set $$$pre - (i32.load - (local.get $$ret) - ) - ) - (local.set $$1 - (local.get $$$pre) - ) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (local.get $$1) - ) - ) - (func $_fflush (; 36 ;) (param $$f i32) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$call i32) - (local $$call1 i32) - (local $$call1$18 i32) - (local $$call16 i32) - (local $$call22 i32) - (local $$call7 i32) - (local $$cmp i32) - (local $$cmp14 i32) - (local $$cmp20 i32) - (local $$cond10 i32) - (local $$cond19 i32) - (local $$f$addr$0 i32) - (local $$f$addr$0$19 i32) - (local $$f$addr$022 i32) - (local $$lock i32) - (local $$lock13 i32) - (local $$next i32) - (local $$or i32) - (local $$phitmp i32) - (local $$r$0$lcssa i32) - (local $$r$021 i32) - (local $$r$1 i32) - (local $$retval$0 i32) - (local $$tobool i32) - (local $$tobool11 i32) - (local $$tobool11$20 i32) - (local $$tobool24 i32) - (local $$tobool5 i32) - (local $$wbase i32) - (local $$wpos i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$tobool - (i32.eq - (local.get $$f) - (i32.const 0) - ) - ) - (block $do-once - (if - (local.get $$tobool) - (block - (local.set $$1 - (i32.load - (i32.const 12) - ) - ) - (local.set $$tobool5 - (i32.eq - (local.get $$1) - (i32.const 0) - ) - ) - (if - (local.get $$tobool5) - (local.set $$cond10 - (i32.const 0) - ) - (block - (local.set $$2 - (i32.load - (i32.const 12) - ) - ) - (local.set $$call7 - (call $_fflush - (local.get $$2) - ) - ) - (local.set $$cond10 - (local.get $$call7) - ) - ) - ) - (call $___lock - (i32.const 44) - ) - (local.set $$f$addr$0$19 - (i32.load - (i32.const 40) - ) - ) - (local.set $$tobool11$20 - (i32.eq - (local.get $$f$addr$0$19) - (i32.const 0) - ) - ) - (if - (local.get $$tobool11$20) - (local.set $$r$0$lcssa - (local.get $$cond10) - ) - (block - (local.set $$f$addr$022 - (local.get $$f$addr$0$19) - ) - (local.set $$r$021 - (local.get $$cond10) - ) - (loop $while-in - (block $while-out - (local.set $$lock13 - (i32.add - (local.get $$f$addr$022) - (i32.const 76) - ) - ) - (local.set $$3 - (i32.load - (local.get $$lock13) - ) - ) - (local.set $$cmp14 - (i32.gt_s - (local.get $$3) - (i32.const -1) - ) - ) - (if - (local.get $$cmp14) - (block - (local.set $$call16 - (call $___lockfile - (local.get $$f$addr$022) - ) - ) - (local.set $$cond19 - (local.get $$call16) - ) - ) - (local.set $$cond19 - (i32.const 0) - ) - ) - (local.set $$wpos - (i32.add - (local.get $$f$addr$022) - (i32.const 20) - ) - ) - (local.set $$4 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$wbase - (i32.add - (local.get $$f$addr$022) - (i32.const 28) - ) - ) - (local.set $$5 - (i32.load - (local.get $$wbase) - ) - ) - (local.set $$cmp20 - (i32.gt_u - (local.get $$4) - (local.get $$5) - ) - ) - (if - (local.get $$cmp20) - (block - (local.set $$call22 - (call $___fflush_unlocked - (local.get $$f$addr$022) - ) - ) - (local.set $$or - (i32.or - (local.get $$call22) - (local.get $$r$021) - ) - ) - (local.set $$r$1 - (local.get $$or) - ) - ) - (local.set $$r$1 - (local.get $$r$021) - ) - ) - (local.set $$tobool24 - (i32.eq - (local.get $$cond19) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool24) - ) - (call $___unlockfile - (local.get $$f$addr$022) - ) - ) - (local.set $$next - (i32.add - (local.get $$f$addr$022) - (i32.const 56) - ) - ) - (local.set $$f$addr$0 - (i32.load - (local.get $$next) - ) - ) - (local.set $$tobool11 - (i32.eq - (local.get $$f$addr$0) - (i32.const 0) - ) - ) - (if - (local.get $$tobool11) - (block - (local.set $$r$0$lcssa - (local.get $$r$1) - ) - (br $while-out) - ) - (block - (local.set $$f$addr$022 - (local.get $$f$addr$0) - ) - (local.set $$r$021 - (local.get $$r$1) - ) - ) - ) - (br $while-in) - ) - ) - ) - ) - (call $___unlock - (i32.const 44) - ) - (local.set $$retval$0 - (local.get $$r$0$lcssa) - ) - ) - (block - (local.set $$lock - (i32.add - (local.get $$f) - (i32.const 76) - ) - ) - (local.set $$0 - (i32.load - (local.get $$lock) - ) - ) - (local.set $$cmp - (i32.gt_s - (local.get $$0) - (i32.const -1) - ) - ) - (if - (i32.eqz - (local.get $$cmp) - ) - (block - (local.set $$call1$18 - (call $___fflush_unlocked - (local.get $$f) - ) - ) - (local.set $$retval$0 - (local.get $$call1$18) - ) - (br $do-once) - ) - ) - (local.set $$call - (call $___lockfile - (local.get $$f) - ) - ) - (local.set $$phitmp - (i32.eq - (local.get $$call) - (i32.const 0) - ) - ) - (local.set $$call1 - (call $___fflush_unlocked - (local.get $$f) - ) - ) - (if - (local.get $$phitmp) - (local.set $$retval$0 - (local.get $$call1) - ) - (block - (call $___unlockfile - (local.get $$f) - ) - (local.set $$retval$0 - (local.get $$call1) - ) - ) - ) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_printf (; 37 ;) (param $$fmt i32) (param $$varargs i32) (result i32) - (local $$0 i32) - (local $$ap i32) - (local $$call i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$ap - (local.get $sp) - ) - (i32.store - (local.get $$ap) - (local.get $$varargs) - ) - (local.set $$0 - (i32.load - (i32.const 8) - ) - ) - (local.set $$call - (call $_vfprintf - (local.get $$0) - (local.get $$fmt) - (local.get $$ap) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (local.get $$call) - ) - ) - (func $___lockfile (; 38 ;) (param $$f i32) (result i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (return - (i32.const 0) - ) - ) - (func $___unlockfile (; 39 ;) (param $$f i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (return) - ) - (func $___stdio_write (; 40 ;) (param $$f i32) (param $$buf i32) (param $$len i32) (result i32) - (local $$$pre i32) - (local $$0 i32) - (local $$1 i32) - (local $$10 i32) - (local $$11 i32) - (local $$12 i32) - (local $$13 i32) - (local $$14 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$7 i32) - (local $$8 i32) - (local $$9 i32) - (local $$add i32) - (local $$add$ptr i32) - (local $$add$ptr41 i32) - (local $$add$ptr46 i32) - (local $$buf31 i32) - (local $$buf_size i32) - (local $$call i32) - (local $$call10 i32) - (local $$call7 i32) - (local $$call9 i32) - (local $$cmp i32) - (local $$cmp17 i32) - (local $$cmp22 i32) - (local $$cmp29 i32) - (local $$cmp38 i32) - (local $$cnt$0 i32) - (local $$cnt$1 i32) - (local $$dec i32) - (local $$fd8 i32) - (local $$incdec$ptr i32) - (local $$iov$0 i32) - (local $$iov$0$lcssa57 i32) - (local $$iov$1 i32) - (local $$iov_base2 i32) - (local $$iov_len i32) - (local $$iov_len24 i32) - (local $$iov_len28 i32) - (local $$iov_len3 i32) - (local $$iov_len50 i32) - (local $$iov_len50$phi$trans$insert i32) - (local $$iovcnt$0 i32) - (local $$iovcnt$0$lcssa58 i32) - (local $$iovcnt$1 i32) - (local $$iovs i32) - (local $$or i32) - (local $$rem$0 i32) - (local $$retval$0 i32) - (local $$sub i32) - (local $$sub$ptr$sub i32) - (local $$sub26 i32) - (local $$sub36 i32) - (local $$sub51 i32) - (local $$tobool i32) - (local $$vararg_buffer i32) - (local $$vararg_buffer3 i32) - (local $$vararg_ptr1 i32) - (local $$vararg_ptr2 i32) - (local $$vararg_ptr6 i32) - (local $$vararg_ptr7 i32) - (local $$wbase i32) - (local $$wend i32) - (local $$wend19 i32) - (local $$wpos i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 48) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$vararg_buffer3 - (i32.add - (local.get $sp) - (i32.const 16) - ) - ) - (local.set $$vararg_buffer - (local.get $sp) - ) - (local.set $$iovs - (i32.add - (local.get $sp) - (i32.const 32) - ) - ) - (local.set $$wbase - (i32.add - (local.get $$f) - (i32.const 28) - ) - ) - (local.set $$0 - (i32.load - (local.get $$wbase) - ) - ) - (i32.store - (local.get $$iovs) - (local.get $$0) - ) - (local.set $$iov_len - (i32.add - (local.get $$iovs) - (i32.const 4) - ) - ) - (local.set $$wpos - (i32.add - (local.get $$f) - (i32.const 20) - ) - ) - (local.set $$1 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$sub$ptr$sub - (i32.sub - (local.get $$1) - (local.get $$0) - ) - ) - (i32.store - (local.get $$iov_len) - (local.get $$sub$ptr$sub) - ) - (local.set $$iov_base2 - (i32.add - (local.get $$iovs) - (i32.const 8) - ) - ) - (i32.store - (local.get $$iov_base2) - (local.get $$buf) - ) - (local.set $$iov_len3 - (i32.add - (local.get $$iovs) - (i32.const 12) - ) - ) - (i32.store - (local.get $$iov_len3) - (local.get $$len) - ) - (local.set $$add - (i32.add - (local.get $$sub$ptr$sub) - (local.get $$len) - ) - ) - (local.set $$fd8 - (i32.add - (local.get $$f) - (i32.const 60) - ) - ) - (local.set $$buf31 - (i32.add - (local.get $$f) - (i32.const 44) - ) - ) - (local.set $$iov$0 - (local.get $$iovs) - ) - (local.set $$iovcnt$0 - (i32.const 2) - ) - (local.set $$rem$0 - (local.get $$add) - ) - (loop $while-in - (block $while-out - (local.set $$2 - (i32.load - (i32.const 16) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$2) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (block - (local.set $$4 - (i32.load - (local.get $$fd8) - ) - ) - (i32.store - (local.get $$vararg_buffer3) - (local.get $$4) - ) - (local.set $$vararg_ptr6 - (i32.add - (local.get $$vararg_buffer3) - (i32.const 4) - ) - ) - (i32.store - (local.get $$vararg_ptr6) - (local.get $$iov$0) - ) - (local.set $$vararg_ptr7 - (i32.add - (local.get $$vararg_buffer3) - (i32.const 8) - ) - ) - (i32.store - (local.get $$vararg_ptr7) - (local.get $$iovcnt$0) - ) - (local.set $$call9 - (call $___syscall146 - (i32.const 146) - (local.get $$vararg_buffer3) - ) - ) - (local.set $$call10 - (call $___syscall_ret - (local.get $$call9) - ) - ) - (local.set $$cnt$0 - (local.get $$call10) - ) - ) - (block - (call $_pthread_cleanup_push - (i32.const 5) - (local.get $$f) - ) - (local.set $$3 - (i32.load - (local.get $$fd8) - ) - ) - (i32.store - (local.get $$vararg_buffer) - (local.get $$3) - ) - (local.set $$vararg_ptr1 - (i32.add - (local.get $$vararg_buffer) - (i32.const 4) - ) - ) - (i32.store - (local.get $$vararg_ptr1) - (local.get $$iov$0) - ) - (local.set $$vararg_ptr2 - (i32.add - (local.get $$vararg_buffer) - (i32.const 8) - ) - ) - (i32.store - (local.get $$vararg_ptr2) - (local.get $$iovcnt$0) - ) - (local.set $$call - (call $___syscall146 - (i32.const 146) - (local.get $$vararg_buffer) - ) - ) - (local.set $$call7 - (call $___syscall_ret - (local.get $$call) - ) - ) - (call $_pthread_cleanup_pop - (i32.const 0) - ) - (local.set $$cnt$0 - (local.get $$call7) - ) - ) - ) - (local.set $$cmp - (i32.eq - (local.get $$rem$0) - (local.get $$cnt$0) - ) - ) - (if - (local.get $$cmp) - (block - (local.set $label - (i32.const 6) - ) - (br $while-out) - ) - ) - (local.set $$cmp17 - (i32.lt_s - (local.get $$cnt$0) - (i32.const 0) - ) - ) - (if - (local.get $$cmp17) - (block - (local.set $$iov$0$lcssa57 - (local.get $$iov$0) - ) - (local.set $$iovcnt$0$lcssa58 - (local.get $$iovcnt$0) - ) - (local.set $label - (i32.const 8) - ) - (br $while-out) - ) - ) - (local.set $$sub26 - (i32.sub - (local.get $$rem$0) - (local.get $$cnt$0) - ) - ) - (local.set $$iov_len28 - (i32.add - (local.get $$iov$0) - (i32.const 4) - ) - ) - (local.set $$10 - (i32.load - (local.get $$iov_len28) - ) - ) - (local.set $$cmp29 - (i32.gt_u - (local.get $$cnt$0) - (local.get $$10) - ) - ) - (if - (local.get $$cmp29) - (block - (local.set $$11 - (i32.load - (local.get $$buf31) - ) - ) - (i32.store - (local.get $$wbase) - (local.get $$11) - ) - (i32.store - (local.get $$wpos) - (local.get $$11) - ) - (local.set $$sub36 - (i32.sub - (local.get $$cnt$0) - (local.get $$10) - ) - ) - (local.set $$incdec$ptr - (i32.add - (local.get $$iov$0) - (i32.const 8) - ) - ) - (local.set $$dec - (i32.add - (local.get $$iovcnt$0) - (i32.const -1) - ) - ) - (local.set $$iov_len50$phi$trans$insert - (i32.add - (local.get $$iov$0) - (i32.const 12) - ) - ) - (local.set $$$pre - (i32.load - (local.get $$iov_len50$phi$trans$insert) - ) - ) - (local.set $$14 - (local.get $$$pre) - ) - (local.set $$cnt$1 - (local.get $$sub36) - ) - (local.set $$iov$1 - (local.get $$incdec$ptr) - ) - (local.set $$iovcnt$1 - (local.get $$dec) - ) - ) - (block - (local.set $$cmp38 - (i32.eq - (local.get $$iovcnt$0) - (i32.const 2) - ) - ) - (if - (local.get $$cmp38) - (block - (local.set $$12 - (i32.load - (local.get $$wbase) - ) - ) - (local.set $$add$ptr41 - (i32.add - (local.get $$12) - (local.get $$cnt$0) - ) - ) - (i32.store - (local.get $$wbase) - (local.get $$add$ptr41) - ) - (local.set $$14 - (local.get $$10) - ) - (local.set $$cnt$1 - (local.get $$cnt$0) - ) - (local.set $$iov$1 - (local.get $$iov$0) - ) - (local.set $$iovcnt$1 - (i32.const 2) - ) - ) - (block - (local.set $$14 - (local.get $$10) - ) - (local.set $$cnt$1 - (local.get $$cnt$0) - ) - (local.set $$iov$1 - (local.get $$iov$0) - ) - (local.set $$iovcnt$1 - (local.get $$iovcnt$0) - ) - ) - ) - ) - ) - (local.set $$13 - (i32.load - (local.get $$iov$1) - ) - ) - (local.set $$add$ptr46 - (i32.add - (local.get $$13) - (local.get $$cnt$1) - ) - ) - (i32.store - (local.get $$iov$1) - (local.get $$add$ptr46) - ) - (local.set $$iov_len50 - (i32.add - (local.get $$iov$1) - (i32.const 4) - ) - ) - (local.set $$sub51 - (i32.sub - (local.get $$14) - (local.get $$cnt$1) - ) - ) - (i32.store - (local.get $$iov_len50) - (local.get $$sub51) - ) - (local.set $$iov$0 - (local.get $$iov$1) - ) - (local.set $$iovcnt$0 - (local.get $$iovcnt$1) - ) - (local.set $$rem$0 - (local.get $$sub26) - ) - (br $while-in) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 6) - ) - (block - (local.set $$5 - (i32.load - (local.get $$buf31) - ) - ) - (local.set $$buf_size - (i32.add - (local.get $$f) - (i32.const 48) - ) - ) - (local.set $$6 - (i32.load - (local.get $$buf_size) - ) - ) - (local.set $$add$ptr - (i32.add - (local.get $$5) - (local.get $$6) - ) - ) - (local.set $$wend - (i32.add - (local.get $$f) - (i32.const 16) - ) - ) - (i32.store - (local.get $$wend) - (local.get $$add$ptr) - ) - (local.set $$7 - (local.get $$5) - ) - (i32.store - (local.get $$wbase) - (local.get $$7) - ) - (i32.store - (local.get $$wpos) - (local.get $$7) - ) - (local.set $$retval$0 - (local.get $$len) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 8) - ) - (block - (local.set $$wend19 - (i32.add - (local.get $$f) - (i32.const 16) - ) - ) - (i32.store - (local.get $$wend19) - (i32.const 0) - ) - (i32.store - (local.get $$wbase) - (i32.const 0) - ) - (i32.store - (local.get $$wpos) - (i32.const 0) - ) - (local.set $$8 - (i32.load - (local.get $$f) - ) - ) - (local.set $$or - (i32.or - (local.get $$8) - (i32.const 32) - ) - ) - (i32.store - (local.get $$f) - (local.get $$or) - ) - (local.set $$cmp22 - (i32.eq - (local.get $$iovcnt$0$lcssa58) - (i32.const 2) - ) - ) - (if - (local.get $$cmp22) - (local.set $$retval$0 - (i32.const 0) - ) - (block - (local.set $$iov_len24 - (i32.add - (local.get $$iov$0$lcssa57) - (i32.const 4) - ) - ) - (local.set $$9 - (i32.load - (local.get $$iov_len24) - ) - ) - (local.set $$sub - (i32.sub - (local.get $$len) - (local.get $$9) - ) - ) - (local.set $$retval$0 - (local.get $$sub) - ) - ) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_vfprintf (; 41 ;) (param $$f i32) (param $$fmt i32) (param $$ap i32) (result i32) - (local $$$call21 i32) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$7 i32) - (local $$add$ptr i32) - (local $$and i32) - (local $$and11 i32) - (local $$and36 i32) - (local $$ap2 i32) - (local $$buf i32) - (local $$buf_size i32) - (local $$call i32) - (local $$call21 i32) - (local $$call21$30 i32) - (local $$call6 i32) - (local $$cmp i32) - (local $$cmp5 i32) - (local $$cmp7 i32) - (local $$cond i32) - (local $$internal_buf i32) - (local $$lock i32) - (local $$mode i32) - (local $$nl_arg i32) - (local $$nl_type i32) - (local $$or i32) - (local $$ret$1 i32) - (local $$ret$1$ i32) - (local $$retval$0 i32) - (local $$tobool i32) - (local $$tobool22 i32) - (local $$tobool26 i32) - (local $$tobool37 i32) - (local $$tobool41 i32) - (local $$vacopy_currentptr i32) - (local $$wbase i32) - (local $$wend i32) - (local $$wpos i32) - (local $$write i32) - (local $dest i32) - (local $label i32) - (local $sp i32) - (local $stop i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 224) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$ap2 - (i32.add - (local.get $sp) - (i32.const 120) - ) - ) - (local.set $$nl_type - (i32.add - (local.get $sp) - (i32.const 80) - ) - ) - (local.set $$nl_arg - (local.get $sp) - ) - (local.set $$internal_buf - (i32.add - (local.get $sp) - (i32.const 136) - ) - ) - (local.set $dest - (local.get $$nl_type) - ) - (local.set $stop - (i32.add - (local.get $dest) - (i32.const 40) - ) - ) - (loop $do-in - (block $do-out - (i32.store - (local.get $dest) - (i32.const 0) - ) - (local.set $dest - (i32.add - (local.get $dest) - (i32.const 4) - ) - ) - (br_if $do-in - (i32.lt_s - (local.get $dest) - (local.get $stop) - ) - ) - ) - ) - (local.set $$vacopy_currentptr - (i32.load - (local.get $$ap) - ) - ) - (i32.store - (local.get $$ap2) - (local.get $$vacopy_currentptr) - ) - (local.set $$call - (call $_printf_core - (i32.const 0) - (local.get $$fmt) - (local.get $$ap2) - (local.get $$nl_arg) - (local.get $$nl_type) - ) - ) - (local.set $$cmp - (i32.lt_s - (local.get $$call) - (i32.const 0) - ) - ) - (if - (local.get $$cmp) - (local.set $$retval$0 - (i32.const -1) - ) - (block - (local.set $$lock - (i32.add - (local.get $$f) - (i32.const 76) - ) - ) - (local.set $$0 - (i32.load - (local.get $$lock) - ) - ) - (local.set $$cmp5 - (i32.gt_s - (local.get $$0) - (i32.const -1) - ) - ) - (if - (local.get $$cmp5) - (block - (local.set $$call6 - (call $___lockfile - (local.get $$f) - ) - ) - (local.set $$cond - (local.get $$call6) - ) - ) - (local.set $$cond - (i32.const 0) - ) - ) - (local.set $$1 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and - (i32.and - (local.get $$1) - (i32.const 32) - ) - ) - (local.set $$mode - (i32.add - (local.get $$f) - (i32.const 74) - ) - ) - (local.set $$2 - (i32.load8_s - (local.get $$mode) - ) - ) - (local.set $$cmp7 - (i32.lt_s - (i32.shr_s - (i32.shl - (local.get $$2) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 1) - ) - ) - (if - (local.get $$cmp7) - (block - (local.set $$and11 - (i32.and - (local.get $$1) - (i32.const -33) - ) - ) - (i32.store - (local.get $$f) - (local.get $$and11) - ) - ) - ) - (local.set $$buf_size - (i32.add - (local.get $$f) - (i32.const 48) - ) - ) - (local.set $$3 - (i32.load - (local.get $$buf_size) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$3) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (block - (local.set $$buf - (i32.add - (local.get $$f) - (i32.const 44) - ) - ) - (local.set $$4 - (i32.load - (local.get $$buf) - ) - ) - (i32.store - (local.get $$buf) - (local.get $$internal_buf) - ) - (local.set $$wbase - (i32.add - (local.get $$f) - (i32.const 28) - ) - ) - (i32.store - (local.get $$wbase) - (local.get $$internal_buf) - ) - (local.set $$wpos - (i32.add - (local.get $$f) - (i32.const 20) - ) - ) - (i32.store - (local.get $$wpos) - (local.get $$internal_buf) - ) - (i32.store - (local.get $$buf_size) - (i32.const 80) - ) - (local.set $$add$ptr - (i32.add - (local.get $$internal_buf) - (i32.const 80) - ) - ) - (local.set $$wend - (i32.add - (local.get $$f) - (i32.const 16) - ) - ) - (i32.store - (local.get $$wend) - (local.get $$add$ptr) - ) - (local.set $$call21 - (call $_printf_core - (local.get $$f) - (local.get $$fmt) - (local.get $$ap2) - (local.get $$nl_arg) - (local.get $$nl_type) - ) - ) - (local.set $$tobool22 - (i32.eq - (local.get $$4) - (i32.const 0) - ) - ) - (if - (local.get $$tobool22) - (local.set $$ret$1 - (local.get $$call21) - ) - (block - (local.set $$write - (i32.add - (local.get $$f) - (i32.const 36) - ) - ) - (local.set $$5 - (i32.load - (local.get $$write) - ) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $$f) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (local.get $$5) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (local.set $$6 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$tobool26 - (i32.eq - (local.get $$6) - (i32.const 0) - ) - ) - (local.set $$$call21 - (if (result i32) - (local.get $$tobool26) - (i32.const -1) - (local.get $$call21) - ) - ) - (i32.store - (local.get $$buf) - (local.get $$4) - ) - (i32.store - (local.get $$buf_size) - (i32.const 0) - ) - (i32.store - (local.get $$wend) - (i32.const 0) - ) - (i32.store - (local.get $$wbase) - (i32.const 0) - ) - (i32.store - (local.get $$wpos) - (i32.const 0) - ) - (local.set $$ret$1 - (local.get $$$call21) - ) - ) - ) - ) - (block - (local.set $$call21$30 - (call $_printf_core - (local.get $$f) - (local.get $$fmt) - (local.get $$ap2) - (local.get $$nl_arg) - (local.get $$nl_type) - ) - ) - (local.set $$ret$1 - (local.get $$call21$30) - ) - ) - ) - (local.set $$7 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and36 - (i32.and - (local.get $$7) - (i32.const 32) - ) - ) - (local.set $$tobool37 - (i32.eq - (local.get $$and36) - (i32.const 0) - ) - ) - (local.set $$ret$1$ - (if (result i32) - (local.get $$tobool37) - (local.get $$ret$1) - (i32.const -1) - ) - ) - (local.set $$or - (i32.or - (local.get $$7) - (local.get $$and) - ) - ) - (i32.store - (local.get $$f) - (local.get $$or) - ) - (local.set $$tobool41 - (i32.eq - (local.get $$cond) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool41) - ) - (call $___unlockfile - (local.get $$f) - ) - ) - (local.set $$retval$0 - (local.get $$ret$1$) - ) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (local.get $$retval$0) - ) - ) - (func $___fwritex (; 42 ;) (param $$s i32) (param $$l i32) (param $$f i32) (result i32) - (local $$$pre i32) - (local $$$pre31 i32) - (local $$0 i32) - (local $$1 i32) - (local $$10 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$7 i32) - (local $$8 i32) - (local $$9 i32) - (local $$add i32) - (local $$add$ptr i32) - (local $$add$ptr26 i32) - (local $$arrayidx i32) - (local $$call i32) - (local $$call16 i32) - (local $$call4 i32) - (local $$cmp i32) - (local $$cmp11 i32) - (local $$cmp17 i32) - (local $$cmp6 i32) - (local $$i$0 i32) - (local $$i$0$lcssa36 i32) - (local $$i$1 i32) - (local $$l$addr$0 i32) - (local $$lbf i32) - (local $$retval$0 i32) - (local $$s$addr$0 i32) - (local $$sub i32) - (local $$sub$ptr$sub i32) - (local $$sub21 i32) - (local $$tobool i32) - (local $$tobool1 i32) - (local $$tobool9 i32) - (local $$wend i32) - (local $$wpos i32) - (local $$write i32) - (local $$write15 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$wend - (i32.add - (local.get $$f) - (i32.const 16) - ) - ) - (local.set $$0 - (i32.load - (local.get $$wend) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$0) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (block - (local.set $$call - (call $___towrite - (local.get $$f) - ) - ) - (local.set $$tobool1 - (i32.eq - (local.get $$call) - (i32.const 0) - ) - ) - (if - (local.get $$tobool1) - (block - (local.set $$$pre - (i32.load - (local.get $$wend) - ) - ) - (local.set $$3 - (local.get $$$pre) - ) - (local.set $label - (i32.const 5) - ) - ) - (local.set $$retval$0 - (i32.const 0) - ) - ) - ) - (block - (local.set $$1 - (local.get $$0) - ) - (local.set $$3 - (local.get $$1) - ) - (local.set $label - (i32.const 5) - ) - ) - ) - (block $label$break$L5 - (if - (i32.eq - (local.get $label) - (i32.const 5) - ) - (block - (local.set $$wpos - (i32.add - (local.get $$f) - (i32.const 20) - ) - ) - (local.set $$2 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$sub$ptr$sub - (i32.sub - (local.get $$3) - (local.get $$2) - ) - ) - (local.set $$cmp - (i32.lt_u - (local.get $$sub$ptr$sub) - (local.get $$l) - ) - ) - (local.set $$4 - (local.get $$2) - ) - (if - (local.get $$cmp) - (block - (local.set $$write - (i32.add - (local.get $$f) - (i32.const 36) - ) - ) - (local.set $$5 - (i32.load - (local.get $$write) - ) - ) - (local.set $$call4 - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $$f) - (local.get $$s) - (local.get $$l) - (i32.add - (i32.and - (local.get $$5) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (local.set $$retval$0 - (local.get $$call4) - ) - (br $label$break$L5) - ) - ) - (local.set $$lbf - (i32.add - (local.get $$f) - (i32.const 75) - ) - ) - (local.set $$6 - (i32.load8_s - (local.get $$lbf) - ) - ) - (local.set $$cmp6 - (i32.gt_s - (i32.shr_s - (i32.shl - (local.get $$6) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -1) - ) - ) - (block $label$break$L10 - (if - (local.get $$cmp6) - (block - (local.set $$i$0 - (local.get $$l) - ) - (loop $while-in - (block $while-out - (local.set $$tobool9 - (i32.eq - (local.get $$i$0) - (i32.const 0) - ) - ) - (if - (local.get $$tobool9) - (block - (local.set $$9 - (local.get $$4) - ) - (local.set $$i$1 - (i32.const 0) - ) - (local.set $$l$addr$0 - (local.get $$l) - ) - (local.set $$s$addr$0 - (local.get $$s) - ) - (br $label$break$L10) - ) - ) - (local.set $$sub - (i32.add - (local.get $$i$0) - (i32.const -1) - ) - ) - (local.set $$arrayidx - (i32.add - (local.get $$s) - (local.get $$sub) - ) - ) - (local.set $$7 - (i32.load8_s - (local.get $$arrayidx) - ) - ) - (local.set $$cmp11 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$7) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 10) - ) - ) - (if - (local.get $$cmp11) - (block - (local.set $$i$0$lcssa36 - (local.get $$i$0) - ) - (br $while-out) - ) - (local.set $$i$0 - (local.get $$sub) - ) - ) - (br $while-in) - ) - ) - (local.set $$write15 - (i32.add - (local.get $$f) - (i32.const 36) - ) - ) - (local.set $$8 - (i32.load - (local.get $$write15) - ) - ) - (local.set $$call16 - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $$f) - (local.get $$s) - (local.get $$i$0$lcssa36) - (i32.add - (i32.and - (local.get $$8) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (local.set $$cmp17 - (i32.lt_u - (local.get $$call16) - (local.get $$i$0$lcssa36) - ) - ) - (if - (local.get $$cmp17) - (block - (local.set $$retval$0 - (local.get $$i$0$lcssa36) - ) - (br $label$break$L5) - ) - ) - (local.set $$add$ptr - (i32.add - (local.get $$s) - (local.get $$i$0$lcssa36) - ) - ) - (local.set $$sub21 - (i32.sub - (local.get $$l) - (local.get $$i$0$lcssa36) - ) - ) - (local.set $$$pre31 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$9 - (local.get $$$pre31) - ) - (local.set $$i$1 - (local.get $$i$0$lcssa36) - ) - (local.set $$l$addr$0 - (local.get $$sub21) - ) - (local.set $$s$addr$0 - (local.get $$add$ptr) - ) - ) - (block - (local.set $$9 - (local.get $$4) - ) - (local.set $$i$1 - (i32.const 0) - ) - (local.set $$l$addr$0 - (local.get $$l) - ) - (local.set $$s$addr$0 - (local.get $$s) - ) - ) - ) - ) - (drop - (call $_memcpy - (local.get $$9) - (local.get $$s$addr$0) - (local.get $$l$addr$0) - ) - ) - (local.set $$10 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$add$ptr26 - (i32.add - (local.get $$10) - (local.get $$l$addr$0) - ) - ) - (i32.store - (local.get $$wpos) - (local.get $$add$ptr26) - ) - (local.set $$add - (i32.add - (local.get $$i$1) - (local.get $$l$addr$0) - ) - ) - (local.set $$retval$0 - (local.get $$add) - ) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $___towrite (; 43 ;) (param $$f i32) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$add$ptr i32) - (local $$and i32) - (local $$buf i32) - (local $$buf_size i32) - (local $$conv i32) - (local $$conv3 i32) - (local $$mode i32) - (local $$or i32) - (local $$or5 i32) - (local $$rend i32) - (local $$retval$0 i32) - (local $$rpos i32) - (local $$sub i32) - (local $$tobool i32) - (local $$wbase i32) - (local $$wend i32) - (local $$wpos i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$mode - (i32.add - (local.get $$f) - (i32.const 74) - ) - ) - (local.set $$0 - (i32.load8_s - (local.get $$mode) - ) - ) - (local.set $$conv - (i32.shr_s - (i32.shl - (local.get $$0) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$sub - (i32.add - (local.get $$conv) - (i32.const 255) - ) - ) - (local.set $$or - (i32.or - (local.get $$sub) - (local.get $$conv) - ) - ) - (local.set $$conv3 - (i32.and - (local.get $$or) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $$mode) - (local.get $$conv3) - ) - (local.set $$1 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and - (i32.and - (local.get $$1) - (i32.const 8) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$and) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (block - (local.set $$rend - (i32.add - (local.get $$f) - (i32.const 8) - ) - ) - (i32.store - (local.get $$rend) - (i32.const 0) - ) - (local.set $$rpos - (i32.add - (local.get $$f) - (i32.const 4) - ) - ) - (i32.store - (local.get $$rpos) - (i32.const 0) - ) - (local.set $$buf - (i32.add - (local.get $$f) - (i32.const 44) - ) - ) - (local.set $$2 - (i32.load - (local.get $$buf) - ) - ) - (local.set $$wbase - (i32.add - (local.get $$f) - (i32.const 28) - ) - ) - (i32.store - (local.get $$wbase) - (local.get $$2) - ) - (local.set $$wpos - (i32.add - (local.get $$f) - (i32.const 20) - ) - ) - (i32.store - (local.get $$wpos) - (local.get $$2) - ) - (local.set $$3 - (local.get $$2) - ) - (local.set $$buf_size - (i32.add - (local.get $$f) - (i32.const 48) - ) - ) - (local.set $$4 - (i32.load - (local.get $$buf_size) - ) - ) - (local.set $$add$ptr - (i32.add - (local.get $$3) - (local.get $$4) - ) - ) - (local.set $$wend - (i32.add - (local.get $$f) - (i32.const 16) - ) - ) - (i32.store - (local.get $$wend) - (local.get $$add$ptr) - ) - (local.set $$retval$0 - (i32.const 0) - ) - ) - (block - (local.set $$or5 - (i32.or - (local.get $$1) - (i32.const 32) - ) - ) - (i32.store - (local.get $$f) - (local.get $$or5) - ) - (local.set $$retval$0 - (i32.const -1) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_wcrtomb (; 44 ;) (param $$s i32) (param $$wc i32) (param $$st i32) (result i32) - (local $$0 i32) - (local $$and i32) - (local $$and19 i32) - (local $$and23 i32) - (local $$and36 i32) - (local $$and41 i32) - (local $$and45 i32) - (local $$call i32) - (local $$cmp i32) - (local $$cmp11 i32) - (local $$cmp2 i32) - (local $$cmp28 i32) - (local $$cmp9 i32) - (local $$conv i32) - (local $$conv16 i32) - (local $$conv21 i32) - (local $$conv25 i32) - (local $$conv33 i32) - (local $$conv38 i32) - (local $$conv43 i32) - (local $$conv47 i32) - (local $$conv5 i32) - (local $$conv7 i32) - (local $$incdec$ptr i32) - (local $$incdec$ptr17 i32) - (local $$incdec$ptr22 i32) - (local $$incdec$ptr34 i32) - (local $$incdec$ptr39 i32) - (local $$incdec$ptr44 i32) - (local $$or i32) - (local $$or$cond i32) - (local $$or15 i32) - (local $$or20 i32) - (local $$or24 i32) - (local $$or32 i32) - (local $$or37 i32) - (local $$or42 i32) - (local $$or46 i32) - (local $$or6 i32) - (local $$retval$0 i32) - (local $$shr$28 i32) - (local $$shr14$26 i32) - (local $$shr18$27 i32) - (local $$shr31$23 i32) - (local $$shr35$24 i32) - (local $$shr40$25 i32) - (local $$sub27 i32) - (local $$tobool i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$tobool - (i32.eq - (local.get $$s) - (i32.const 0) - ) - ) - (block $do-once - (if - (local.get $$tobool) - (local.set $$retval$0 - (i32.const 1) - ) - (block - (local.set $$cmp - (i32.lt_u - (local.get $$wc) - (i32.const 128) - ) - ) - (if - (local.get $$cmp) - (block - (local.set $$conv - (i32.and - (local.get $$wc) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $$s) - (local.get $$conv) - ) - (local.set $$retval$0 - (i32.const 1) - ) - (br $do-once) - ) - ) - (local.set $$cmp2 - (i32.lt_u - (local.get $$wc) - (i32.const 2048) - ) - ) - (if - (local.get $$cmp2) - (block - (local.set $$shr$28 - (i32.shr_u - (local.get $$wc) - (i32.const 6) - ) - ) - (local.set $$or - (i32.or - (local.get $$shr$28) - (i32.const 192) - ) - ) - (local.set $$conv5 - (i32.and - (local.get $$or) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr - (i32.add - (local.get $$s) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $$s) - (local.get $$conv5) - ) - (local.set $$and - (i32.and - (local.get $$wc) - (i32.const 63) - ) - ) - (local.set $$or6 - (i32.or - (local.get $$and) - (i32.const 128) - ) - ) - (local.set $$conv7 - (i32.and - (local.get $$or6) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $$incdec$ptr) - (local.get $$conv7) - ) - (local.set $$retval$0 - (i32.const 2) - ) - (br $do-once) - ) - ) - (local.set $$cmp9 - (i32.lt_u - (local.get $$wc) - (i32.const 55296) - ) - ) - (local.set $$0 - (i32.and - (local.get $$wc) - (i32.const -8192) - ) - ) - (local.set $$cmp11 - (i32.eq - (local.get $$0) - (i32.const 57344) - ) - ) - (local.set $$or$cond - (i32.or - (local.get $$cmp9) - (local.get $$cmp11) - ) - ) - (if - (local.get $$or$cond) - (block - (local.set $$shr14$26 - (i32.shr_u - (local.get $$wc) - (i32.const 12) - ) - ) - (local.set $$or15 - (i32.or - (local.get $$shr14$26) - (i32.const 224) - ) - ) - (local.set $$conv16 - (i32.and - (local.get $$or15) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr17 - (i32.add - (local.get $$s) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $$s) - (local.get $$conv16) - ) - (local.set $$shr18$27 - (i32.shr_u - (local.get $$wc) - (i32.const 6) - ) - ) - (local.set $$and19 - (i32.and - (local.get $$shr18$27) - (i32.const 63) - ) - ) - (local.set $$or20 - (i32.or - (local.get $$and19) - (i32.const 128) - ) - ) - (local.set $$conv21 - (i32.and - (local.get $$or20) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr22 - (i32.add - (local.get $$s) - (i32.const 2) - ) - ) - (i32.store8 - (local.get $$incdec$ptr17) - (local.get $$conv21) - ) - (local.set $$and23 - (i32.and - (local.get $$wc) - (i32.const 63) - ) - ) - (local.set $$or24 - (i32.or - (local.get $$and23) - (i32.const 128) - ) - ) - (local.set $$conv25 - (i32.and - (local.get $$or24) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $$incdec$ptr22) - (local.get $$conv25) - ) - (local.set $$retval$0 - (i32.const 3) - ) - (br $do-once) - ) - ) - (local.set $$sub27 - (i32.add - (local.get $$wc) - (i32.const -65536) - ) - ) - (local.set $$cmp28 - (i32.lt_u - (local.get $$sub27) - (i32.const 1048576) - ) - ) - (if - (local.get $$cmp28) - (block - (local.set $$shr31$23 - (i32.shr_u - (local.get $$wc) - (i32.const 18) - ) - ) - (local.set $$or32 - (i32.or - (local.get $$shr31$23) - (i32.const 240) - ) - ) - (local.set $$conv33 - (i32.and - (local.get $$or32) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr34 - (i32.add - (local.get $$s) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $$s) - (local.get $$conv33) - ) - (local.set $$shr35$24 - (i32.shr_u - (local.get $$wc) - (i32.const 12) - ) - ) - (local.set $$and36 - (i32.and - (local.get $$shr35$24) - (i32.const 63) - ) - ) - (local.set $$or37 - (i32.or - (local.get $$and36) - (i32.const 128) - ) - ) - (local.set $$conv38 - (i32.and - (local.get $$or37) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr39 - (i32.add - (local.get $$s) - (i32.const 2) - ) - ) - (i32.store8 - (local.get $$incdec$ptr34) - (local.get $$conv38) - ) - (local.set $$shr40$25 - (i32.shr_u - (local.get $$wc) - (i32.const 6) - ) - ) - (local.set $$and41 - (i32.and - (local.get $$shr40$25) - (i32.const 63) - ) - ) - (local.set $$or42 - (i32.or - (local.get $$and41) - (i32.const 128) - ) - ) - (local.set $$conv43 - (i32.and - (local.get $$or42) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr44 - (i32.add - (local.get $$s) - (i32.const 3) - ) - ) - (i32.store8 - (local.get $$incdec$ptr39) - (local.get $$conv43) - ) - (local.set $$and45 - (i32.and - (local.get $$wc) - (i32.const 63) - ) - ) - (local.set $$or46 - (i32.or - (local.get $$and45) - (i32.const 128) - ) - ) - (local.set $$conv47 - (i32.and - (local.get $$or46) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $$incdec$ptr44) - (local.get $$conv47) - ) - (local.set $$retval$0 - (i32.const 4) - ) - (br $do-once) - ) - (block - (local.set $$call - (call $___errno_location) - ) - (i32.store - (local.get $$call) - (i32.const 84) - ) - (local.set $$retval$0 - (i32.const -1) - ) - (br $do-once) - ) - ) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_wctomb (; 45 ;) (param $$s i32) (param $$wc i32) (result i32) - (local $$call i32) - (local $$retval$0 i32) - (local $$tobool i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$tobool - (i32.eq - (local.get $$s) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (local.set $$retval$0 - (i32.const 0) - ) - (block - (local.set $$call - (call $_wcrtomb - (local.get $$s) - (local.get $$wc) - (i32.const 0) - ) - ) - (local.set $$retval$0 - (local.get $$call) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_memchr (; 46 ;) (param $$src i32) (param $$c i32) (param $$n i32) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$7 i32) - (local $$and i32) - (local $$and$39 i32) - (local $$and15 i32) - (local $$and16 i32) - (local $$cmp i32) - (local $$cmp11 i32) - (local $$cmp11$32 i32) - (local $$cmp28 i32) - (local $$cmp8 i32) - (local $$cond i32) - (local $$conv1 i32) - (local $$dec i32) - (local $$dec34 i32) - (local $$incdec$ptr i32) - (local $$incdec$ptr21 i32) - (local $$incdec$ptr33 i32) - (local $$lnot i32) - (local $$mul i32) - (local $$n$addr$0$lcssa i32) - (local $$n$addr$0$lcssa61 i32) - (local $$n$addr$043 i32) - (local $$n$addr$1$lcssa i32) - (local $$n$addr$133 i32) - (local $$n$addr$133$lcssa i32) - (local $$n$addr$227 i32) - (local $$n$addr$3 i32) - (local $$neg i32) - (local $$or$cond i32) - (local $$or$cond$42 i32) - (local $$s$0$lcssa i32) - (local $$s$0$lcssa60 i32) - (local $$s$044 i32) - (local $$s$128 i32) - (local $$s$2 i32) - (local $$sub i32) - (local $$sub22 i32) - (local $$tobool i32) - (local $$tobool$40 i32) - (local $$tobool2 i32) - (local $$tobool2$41 i32) - (local $$tobool2$lcssa i32) - (local $$tobool25 i32) - (local $$tobool25$26 i32) - (local $$tobool36 i32) - (local $$w$0$lcssa i32) - (local $$w$034 i32) - (local $$w$034$lcssa i32) - (local $$xor i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$conv1 - (i32.and - (local.get $$c) - (i32.const 255) - ) - ) - (local.set $$0 - (local.get $$src) - ) - (local.set $$and$39 - (i32.and - (local.get $$0) - (i32.const 3) - ) - ) - (local.set $$tobool$40 - (i32.ne - (local.get $$and$39) - (i32.const 0) - ) - ) - (local.set $$tobool2$41 - (i32.ne - (local.get $$n) - (i32.const 0) - ) - ) - (local.set $$or$cond$42 - (i32.and - (local.get $$tobool2$41) - (local.get $$tobool$40) - ) - ) - (block $label$break$L1 - (if - (local.get $$or$cond$42) - (block - (local.set $$1 - (i32.and - (local.get $$c) - (i32.const 255) - ) - ) - (local.set $$n$addr$043 - (local.get $$n) - ) - (local.set $$s$044 - (local.get $$src) - ) - (loop $while-in - (block $while-out - (local.set $$2 - (i32.load8_s - (local.get $$s$044) - ) - ) - (local.set $$cmp - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$2) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.shr_s - (i32.shl - (local.get $$1) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (if - (local.get $$cmp) - (block - (local.set $$n$addr$0$lcssa61 - (local.get $$n$addr$043) - ) - (local.set $$s$0$lcssa60 - (local.get $$s$044) - ) - (local.set $label - (i32.const 6) - ) - (br $label$break$L1) - ) - ) - (local.set $$incdec$ptr - (i32.add - (local.get $$s$044) - (i32.const 1) - ) - ) - (local.set $$dec - (i32.add - (local.get $$n$addr$043) - (i32.const -1) - ) - ) - (local.set $$3 - (local.get $$incdec$ptr) - ) - (local.set $$and - (i32.and - (local.get $$3) - (i32.const 3) - ) - ) - (local.set $$tobool - (i32.ne - (local.get $$and) - (i32.const 0) - ) - ) - (local.set $$tobool2 - (i32.ne - (local.get $$dec) - (i32.const 0) - ) - ) - (local.set $$or$cond - (i32.and - (local.get $$tobool2) - (local.get $$tobool) - ) - ) - (if - (local.get $$or$cond) - (block - (local.set $$n$addr$043 - (local.get $$dec) - ) - (local.set $$s$044 - (local.get $$incdec$ptr) - ) - ) - (block - (local.set $$n$addr$0$lcssa - (local.get $$dec) - ) - (local.set $$s$0$lcssa - (local.get $$incdec$ptr) - ) - (local.set $$tobool2$lcssa - (local.get $$tobool2) - ) - (local.set $label - (i32.const 5) - ) - (br $while-out) - ) - ) - (br $while-in) - ) - ) - ) - (block - (local.set $$n$addr$0$lcssa - (local.get $$n) - ) - (local.set $$s$0$lcssa - (local.get $$src) - ) - (local.set $$tobool2$lcssa - (local.get $$tobool2$41) - ) - (local.set $label - (i32.const 5) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 5) - ) - (if - (local.get $$tobool2$lcssa) - (block - (local.set $$n$addr$0$lcssa61 - (local.get $$n$addr$0$lcssa) - ) - (local.set $$s$0$lcssa60 - (local.get $$s$0$lcssa) - ) - (local.set $label - (i32.const 6) - ) - ) - (block - (local.set $$n$addr$3 - (i32.const 0) - ) - (local.set $$s$2 - (local.get $$s$0$lcssa) - ) - ) - ) - ) - (block $label$break$L8 - (if - (i32.eq - (local.get $label) - (i32.const 6) - ) - (block - (local.set $$4 - (i32.load8_s - (local.get $$s$0$lcssa60) - ) - ) - (local.set $$5 - (i32.and - (local.get $$c) - (i32.const 255) - ) - ) - (local.set $$cmp8 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$4) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.shr_s - (i32.shl - (local.get $$5) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (if - (local.get $$cmp8) - (block - (local.set $$n$addr$3 - (local.get $$n$addr$0$lcssa61) - ) - (local.set $$s$2 - (local.get $$s$0$lcssa60) - ) - ) - (block - (local.set $$mul - (i32.mul - (local.get $$conv1) - (i32.const 16843009) - ) - ) - (local.set $$cmp11$32 - (i32.gt_u - (local.get $$n$addr$0$lcssa61) - (i32.const 3) - ) - ) - (block $label$break$L11 - (if - (local.get $$cmp11$32) - (block - (local.set $$n$addr$133 - (local.get $$n$addr$0$lcssa61) - ) - (local.set $$w$034 - (local.get $$s$0$lcssa60) - ) - (loop $while-in3 - (block $while-out2 - (local.set $$6 - (i32.load - (local.get $$w$034) - ) - ) - (local.set $$xor - (i32.xor - (local.get $$6) - (local.get $$mul) - ) - ) - (local.set $$sub - (i32.add - (local.get $$xor) - (i32.const -16843009) - ) - ) - (local.set $$neg - (i32.and - (local.get $$xor) - (i32.const -2139062144) - ) - ) - (local.set $$and15 - (i32.xor - (local.get $$neg) - (i32.const -2139062144) - ) - ) - (local.set $$and16 - (i32.and - (local.get $$and15) - (local.get $$sub) - ) - ) - (local.set $$lnot - (i32.eq - (local.get $$and16) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$lnot) - ) - (block - (local.set $$n$addr$133$lcssa - (local.get $$n$addr$133) - ) - (local.set $$w$034$lcssa - (local.get $$w$034) - ) - (br $while-out2) - ) - ) - (local.set $$incdec$ptr21 - (i32.add - (local.get $$w$034) - (i32.const 4) - ) - ) - (local.set $$sub22 - (i32.add - (local.get $$n$addr$133) - (i32.const -4) - ) - ) - (local.set $$cmp11 - (i32.gt_u - (local.get $$sub22) - (i32.const 3) - ) - ) - (if - (local.get $$cmp11) - (block - (local.set $$n$addr$133 - (local.get $$sub22) - ) - (local.set $$w$034 - (local.get $$incdec$ptr21) - ) - ) - (block - (local.set $$n$addr$1$lcssa - (local.get $$sub22) - ) - (local.set $$w$0$lcssa - (local.get $$incdec$ptr21) - ) - (local.set $label - (i32.const 11) - ) - (br $label$break$L11) - ) - ) - (br $while-in3) - ) - ) - (local.set $$n$addr$227 - (local.get $$n$addr$133$lcssa) - ) - (local.set $$s$128 - (local.get $$w$034$lcssa) - ) - ) - (block - (local.set $$n$addr$1$lcssa - (local.get $$n$addr$0$lcssa61) - ) - (local.set $$w$0$lcssa - (local.get $$s$0$lcssa60) - ) - (local.set $label - (i32.const 11) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 11) - ) - (block - (local.set $$tobool25$26 - (i32.eq - (local.get $$n$addr$1$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$tobool25$26) - (block - (local.set $$n$addr$3 - (i32.const 0) - ) - (local.set $$s$2 - (local.get $$w$0$lcssa) - ) - (br $label$break$L8) - ) - (block - (local.set $$n$addr$227 - (local.get $$n$addr$1$lcssa) - ) - (local.set $$s$128 - (local.get $$w$0$lcssa) - ) - ) - ) - ) - ) - (loop $while-in5 - (block $while-out4 - (local.set $$7 - (i32.load8_s - (local.get $$s$128) - ) - ) - (local.set $$cmp28 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$7) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.shr_s - (i32.shl - (local.get $$5) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (if - (local.get $$cmp28) - (block - (local.set $$n$addr$3 - (local.get $$n$addr$227) - ) - (local.set $$s$2 - (local.get $$s$128) - ) - (br $label$break$L8) - ) - ) - (local.set $$incdec$ptr33 - (i32.add - (local.get $$s$128) - (i32.const 1) - ) - ) - (local.set $$dec34 - (i32.add - (local.get $$n$addr$227) - (i32.const -1) - ) - ) - (local.set $$tobool25 - (i32.eq - (local.get $$dec34) - (i32.const 0) - ) - ) - (if - (local.get $$tobool25) - (block - (local.set $$n$addr$3 - (i32.const 0) - ) - (local.set $$s$2 - (local.get $$incdec$ptr33) - ) - (br $while-out4) - ) - (block - (local.set $$n$addr$227 - (local.get $$dec34) - ) - (local.set $$s$128 - (local.get $$incdec$ptr33) - ) - ) - ) - (br $while-in5) - ) - ) - ) - ) - ) - ) - ) - (local.set $$tobool36 - (i32.ne - (local.get $$n$addr$3) - (i32.const 0) - ) - ) - (local.set $$cond - (if (result i32) - (local.get $$tobool36) - (local.get $$s$2) - (i32.const 0) - ) - ) - (return - (local.get $$cond) - ) - ) - (func $___syscall_ret (; 47 ;) (param $$r i32) (result i32) - (local $$call i32) - (local $$cmp i32) - (local $$retval$0 i32) - (local $$sub i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$cmp - (i32.gt_u - (local.get $$r) - (i32.const -4096) - ) - ) - (if - (local.get $$cmp) - (block - (local.set $$sub - (i32.sub - (i32.const 0) - (local.get $$r) - ) - ) - (local.set $$call - (call $___errno_location) - ) - (i32.store - (local.get $$call) - (local.get $$sub) - ) - (local.set $$retval$0 - (i32.const -1) - ) - ) - (local.set $$retval$0 - (local.get $$r) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $___fflush_unlocked (; 48 ;) (param $$f i32) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$cmp i32) - (local $$cmp4 i32) - (local $$rend i32) - (local $$retval$0 i32) - (local $$rpos i32) - (local $$seek i32) - (local $$sub$ptr$lhs$cast i32) - (local $$sub$ptr$rhs$cast i32) - (local $$sub$ptr$sub i32) - (local $$tobool i32) - (local $$wbase i32) - (local $$wend i32) - (local $$wpos i32) - (local $$write i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$wpos - (i32.add - (local.get $$f) - (i32.const 20) - ) - ) - (local.set $$0 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$wbase - (i32.add - (local.get $$f) - (i32.const 28) - ) - ) - (local.set $$1 - (i32.load - (local.get $$wbase) - ) - ) - (local.set $$cmp - (i32.gt_u - (local.get $$0) - (local.get $$1) - ) - ) - (if - (local.get $$cmp) - (block - (local.set $$write - (i32.add - (local.get $$f) - (i32.const 36) - ) - ) - (local.set $$2 - (i32.load - (local.get $$write) - ) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $$f) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (local.get $$2) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (local.set $$3 - (i32.load - (local.get $$wpos) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$3) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (local.set $$retval$0 - (i32.const -1) - ) - (local.set $label - (i32.const 3) - ) - ) - ) - (local.set $label - (i32.const 3) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 3) - ) - (block - (local.set $$rpos - (i32.add - (local.get $$f) - (i32.const 4) - ) - ) - (local.set $$4 - (i32.load - (local.get $$rpos) - ) - ) - (local.set $$rend - (i32.add - (local.get $$f) - (i32.const 8) - ) - ) - (local.set $$5 - (i32.load - (local.get $$rend) - ) - ) - (local.set $$cmp4 - (i32.lt_u - (local.get $$4) - (local.get $$5) - ) - ) - (if - (local.get $$cmp4) - (block - (local.set $$seek - (i32.add - (local.get $$f) - (i32.const 40) - ) - ) - (local.set $$6 - (i32.load - (local.get $$seek) - ) - ) - (local.set $$sub$ptr$lhs$cast - (local.get $$4) - ) - (local.set $$sub$ptr$rhs$cast - (local.get $$5) - ) - (local.set $$sub$ptr$sub - (i32.sub - (local.get $$sub$ptr$lhs$cast) - (local.get $$sub$ptr$rhs$cast) - ) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $$f) - (local.get $$sub$ptr$sub) - (i32.const 1) - (i32.add - (i32.and - (local.get $$6) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (local.set $$wend - (i32.add - (local.get $$f) - (i32.const 16) - ) - ) - (i32.store - (local.get $$wend) - (i32.const 0) - ) - (i32.store - (local.get $$wbase) - (i32.const 0) - ) - (i32.store - (local.get $$wpos) - (i32.const 0) - ) - (i32.store - (local.get $$rend) - (i32.const 0) - ) - (i32.store - (local.get $$rpos) - (i32.const 0) - ) - (local.set $$retval$0 - (i32.const 0) - ) - ) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_cleanup (; 49 ;) (param $$p i32) - (local $$0 i32) - (local $$lockcount i32) - (local $$tobool i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$lockcount - (i32.add - (local.get $$p) - (i32.const 68) - ) - ) - (local.set $$0 - (i32.load - (local.get $$lockcount) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$0) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (call $___unlockfile - (local.get $$p) - ) - ) - (return) - ) - (func $i32s-div (; 50 ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (i32.eqz - (local.get $1) - ) - (i32.const 0) - (if (result i32) - (i32.and - (i32.eq - (local.get $0) - (i32.const -2147483648) - ) - (i32.eq - (local.get $1) - (i32.const -1) - ) - ) - (i32.const 0) - (i32.div_s - (local.get $0) - (local.get $1) - ) - ) - ) - ) - (func $i32s-rem (; 51 ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (i32.eqz - (local.get $1) - ) - (i32.const 0) - (i32.rem_s - (local.get $0) - (local.get $1) - ) - ) - ) - (func $i32u-rem (; 52 ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (i32.eqz - (local.get $1) - ) - (i32.const 0) - (i32.rem_u - (local.get $0) - (local.get $1) - ) - ) - ) - (func $i32u-div (; 53 ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (i32.eqz - (local.get $1) - ) - (i32.const 0) - (i32.div_u - (local.get $0) - (local.get $1) - ) - ) - ) - (func $_printf_core (; 54 ;) (param $$f i32) (param $$fmt i32) (param $$ap i32) (param $$nl_arg i32) (param $$nl_type i32) (result i32) - (local $$$ i32) - (local $$$$i i32) - (local $$$396$i f64) - (local $$$404$i f64) - (local $$$l10n$0 i32) - (local $$$lcssa i32) - (local $$$p$i i32) - (local $$$p$inc468$i i32) - (local $$$pr$i i32) - (local $$$pr477$i i32) - (local $$$pre i32) - (local $$$pre$i i32) - (local $$$pre357 i32) - (local $$$pre564$i i32) - (local $$$pre566$i i32) - (local $$$pre567$i i32) - (local $$$sub514$i i32) - (local $$$sub562$i i32) - (local $$0 i32) - (local $$1 i32) - (local $$10 i32) - (local $$100 i32) - (local $$101 i32) - (local $$102 i32) - (local $$103 i32) - (local $$104 i32) - (local $$105 i32) - (local $$106 i32) - (local $$107 i32) - (local $$108 i32) - (local $$109 i32) - (local $$11 i32) - (local $$110 i32) - (local $$111 i32) - (local $$112 i32) - (local $$113 i32) - (local $$114 i32) - (local $$115 i32) - (local $$116 i32) - (local $$117 i32) - (local $$118 i32) - (local $$119 i32) - (local $$12 i32) - (local $$120 i32) - (local $$121 i32) - (local $$122 i32) - (local $$123 i32) - (local $$124 i32) - (local $$125 i32) - (local $$126 i32) - (local $$127 i32) - (local $$128 i32) - (local $$129 i32) - (local $$13 i32) - (local $$130 i32) - (local $$131 i32) - (local $$132 i32) - (local $$133 i32) - (local $$134 i32) - (local $$135 i32) - (local $$136 i32) - (local $$137 i32) - (local $$138 i32) - (local $$139 i32) - (local $$14 i32) - (local $$140 i32) - (local $$141 i32) - (local $$142 i32) - (local $$143 i32) - (local $$144 i32) - (local $$145 i32) - (local $$146 i32) - (local $$147 i32) - (local $$148 i32) - (local $$149 i32) - (local $$15 i32) - (local $$150 i32) - (local $$151 i32) - (local $$152 i32) - (local $$153 i32) - (local $$154 i32) - (local $$155 i32) - (local $$156 i32) - (local $$157 i32) - (local $$158 i32) - (local $$159 i32) - (local $$16 i32) - (local $$160 i32) - (local $$161 i32) - (local $$162 i32) - (local $$163 i32) - (local $$164 i32) - (local $$165 i32) - (local $$166 i32) - (local $$167 i32) - (local $$168 i32) - (local $$169 i32) - (local $$17 i32) - (local $$170 i32) - (local $$171 i32) - (local $$172 i32) - (local $$173 i32) - (local $$174 i32) - (local $$175 i32) - (local $$176 i32) - (local $$177 i32) - (local $$178 i32) - (local $$179 i32) - (local $$18 i32) - (local $$180 i32) - (local $$181 f64) - (local $$182 i32) - (local $$183 i32) - (local $$184 i32) - (local $$185 i32) - (local $$186 i32) - (local $$187 i32) - (local $$188 i32) - (local $$189 i32) - (local $$19 i32) - (local $$190 i32) - (local $$191 i32) - (local $$192 i32) - (local $$193 i32) - (local $$194 i32) - (local $$195 i32) - (local $$196 i32) - (local $$197 i32) - (local $$198 i32) - (local $$199 i32) - (local $$2 i32) - (local $$20 i32) - (local $$200 i32) - (local $$201 i32) - (local $$202 i32) - (local $$203 i32) - (local $$204 i32) - (local $$205 i32) - (local $$206 i32) - (local $$207 i32) - (local $$208 i32) - (local $$209 i32) - (local $$21 i32) - (local $$210 i32) - (local $$211 i32) - (local $$212 i32) - (local $$213 i32) - (local $$214 i32) - (local $$215 i32) - (local $$216 i32) - (local $$217 i32) - (local $$218 i32) - (local $$219 i32) - (local $$22 i32) - (local $$220 i32) - (local $$221 i32) - (local $$222 i32) - (local $$223 i32) - (local $$224 i32) - (local $$225 i32) - (local $$226 i32) - (local $$227 i32) - (local $$228 i32) - (local $$229 i32) - (local $$23 i32) - (local $$230 i32) - (local $$231 i32) - (local $$232 i32) - (local $$233 i32) - (local $$234 i32) - (local $$235 i32) - (local $$236 i32) - (local $$237 i32) - (local $$238 i32) - (local $$239 i32) - (local $$24 i32) - (local $$240 i32) - (local $$241 i32) - (local $$242 i32) - (local $$243 i32) - (local $$244 i32) - (local $$245 i32) - (local $$246 i32) - (local $$247 i32) - (local $$248 i32) - (local $$249 i32) - (local $$25 i32) - (local $$250 i32) - (local $$251 i32) - (local $$252 i32) - (local $$253 i32) - (local $$254 i32) - (local $$255 i32) - (local $$256 i32) - (local $$257 i32) - (local $$258 i32) - (local $$259 i32) - (local $$26 i32) - (local $$260 i32) - (local $$261 i32) - (local $$262 i32) - (local $$263 i32) - (local $$264 i32) - (local $$265 i32) - (local $$266 i32) - (local $$267 i32) - (local $$268 i32) - (local $$27 i32) - (local $$28 i32) - (local $$29 i32) - (local $$3 i32) - (local $$30 i32) - (local $$31 i32) - (local $$32 i32) - (local $$33 i32) - (local $$34 i32) - (local $$35 i32) - (local $$36 i32) - (local $$37 i32) - (local $$38 i32) - (local $$39 i32) - (local $$4 i32) - (local $$40 i32) - (local $$41 i32) - (local $$42 i32) - (local $$43 i32) - (local $$44 i32) - (local $$45 i32) - (local $$46 i32) - (local $$47 i32) - (local $$48 i32) - (local $$49 i32) - (local $$5 i32) - (local $$50 i32) - (local $$51 i32) - (local $$52 i32) - (local $$53 i32) - (local $$54 i32) - (local $$55 i32) - (local $$56 i32) - (local $$57 i32) - (local $$58 i32) - (local $$59 i32) - (local $$6 i32) - (local $$60 i32) - (local $$61 i32) - (local $$62 i32) - (local $$63 i32) - (local $$64 i32) - (local $$65 i32) - (local $$66 i32) - (local $$67 i32) - (local $$68 i32) - (local $$69 i32) - (local $$7 i32) - (local $$70 i32) - (local $$71 i32) - (local $$72 i32) - (local $$73 i32) - (local $$74 i32) - (local $$75 i32) - (local $$76 i32) - (local $$77 i32) - (local $$78 i32) - (local $$79 i32) - (local $$8 i32) - (local $$80 i32) - (local $$81 i32) - (local $$82 i32) - (local $$83 i32) - (local $$84 i32) - (local $$85 i32) - (local $$86 i32) - (local $$87 i32) - (local $$88 i32) - (local $$89 i32) - (local $$9 i32) - (local $$90 i32) - (local $$91 i32) - (local $$92 i32) - (local $$93 i32) - (local $$94 i32) - (local $$95 i32) - (local $$96 i32) - (local $$97 i32) - (local $$98 i32) - (local $$99 i32) - (local $$a$0 i32) - (local $$a$1 i32) - (local $$a$1$lcssa$i i32) - (local $$a$1549$i i32) - (local $$a$2 i32) - (local $$a$2$ph$i i32) - (local $$a$3$lcssa$i i32) - (local $$a$3539$i i32) - (local $$a$5$lcssa$i i32) - (local $$a$5521$i i32) - (local $$a$6$i i32) - (local $$a$8$i i32) - (local $$a$9$ph$i i32) - (local $$add i32) - (local $$add$i i32) - (local $$add$i$203 i32) - (local $$add$i$239 i32) - (local $$add$i$lcssa i32) - (local $$add$ptr i32) - (local $$add$ptr139 i32) - (local $$add$ptr205 i32) - (local $$add$ptr213$i i32) - (local $$add$ptr257 i32) - (local $$add$ptr311$i i32) - (local $$add$ptr311$z$4$i i32) - (local $$add$ptr340 i32) - (local $$add$ptr354$i i32) - (local $$add$ptr358$i i32) - (local $$add$ptr359 i32) - (local $$add$ptr373$i i32) - (local $$add$ptr43 i32) - (local $$add$ptr43$arrayidx31 i32) - (local $$add$ptr442$i i32) - (local $$add$ptr442$z$3$i i32) - (local $$add$ptr473 i32) - (local $$add$ptr65$i i32) - (local $$add$ptr671$i i32) - (local $$add$ptr742$i i32) - (local $$add$ptr88 i32) - (local $$add113$i i32) - (local $$add150$i i32) - (local $$add154$i i32) - (local $$add163$i i32) - (local $$add165$i i32) - (local $$add269 i32) - (local $$add269$p$0 i32) - (local $$add273$i i32) - (local $$add275$i i32) - (local $$add284$i i32) - (local $$add313$i i32) - (local $$add322 i32) - (local $$add355$i i32) - (local $$add395 i32) - (local $$add410$i f64) - (local $$add412 i32) - (local $$add414$i i32) - (local $$add441 i32) - (local $$add477$neg$i i32) - (local $$add561$i i32) - (local $$add608$i i32) - (local $$add612$i i32) - (local $$add620$i i32) - (local $$add653$i i32) - (local $$add67$i i32) - (local $$add737$i i32) - (local $$add810$i i32) - (local $$add87$i f64) - (local $$add90$i f64) - (local $$and i32) - (local $$and$i i32) - (local $$and$i$216 i32) - (local $$and$i$231 i32) - (local $$and$i$238 i32) - (local $$and$i$244 i32) - (local $$and$i$406$i i32) - (local $$and$i$412$i i32) - (local $$and$i$418$i i32) - (local $$and$i$424$i i32) - (local $$and$i$430$i i32) - (local $$and$i$436$i i32) - (local $$and$i$442$i i32) - (local $$and$i$448$i i32) - (local $$and$i$454$i i32) - (local $$and$i$460$i i32) - (local $$and$i$466$i i32) - (local $$and$i$472$i i32) - (local $$and$i$i i32) - (local $$and12$i i32) - (local $$and134$i i32) - (local $$and210 i32) - (local $$and214 i32) - (local $$and216 i32) - (local $$and219 i32) - (local $$and249 i32) - (local $$and254 i32) - (local $$and263 i32) - (local $$and282$i i32) - (local $$and289 i32) - (local $$and294 i32) - (local $$and309 i32) - (local $$and309$fl$4 i32) - (local $$and36$i i32) - (local $$and379$i i32) - (local $$and483$i i32) - (local $$and610$pre$phi$iZ2D i32) - (local $$and62$i i32) - (local $$arg i32) - (local $$arglist_current i32) - (local $$arglist_current2 i32) - (local $$arglist_next i32) - (local $$arglist_next3 i32) - (local $$argpos$0 i32) - (local $$arraydecay208$add$ptr213$i i32) - (local $$arrayidx$i i32) - (local $$arrayidx$i$236 i32) - (local $$arrayidx114 i32) - (local $$arrayidx117$i i32) - (local $$arrayidx119 i32) - (local $$arrayidx124 i32) - (local $$arrayidx132 i32) - (local $$arrayidx16 i32) - (local $$arrayidx173 i32) - (local $$arrayidx192 i32) - (local $$arrayidx251$i i32) - (local $$arrayidx31 i32) - (local $$arrayidx35 i32) - (local $$arrayidx370 i32) - (local $$arrayidx453$i i32) - (local $$arrayidx469 i32) - (local $$arrayidx481 i32) - (local $$arrayidx489$i i32) - (local $$arrayidx68 i32) - (local $$arrayidx73 i32) - (local $$arrayidx81 i32) - (local $$big$i i32) - (local $$buf i32) - (local $$buf$i i32) - (local $$call i32) - (local $$call344 i32) - (local $$call345 i32) - (local $$call356 i32) - (local $$call384 i32) - (local $$call411 i32) - (local $$call55$i f64) - (local $$carry$0544$i i32) - (local $$carry262$0535$i i32) - (local $$cmp i32) - (local $$cmp1 i32) - (local $$cmp103$i i32) - (local $$cmp105 i32) - (local $$cmp111 i32) - (local $$cmp116 i32) - (local $$cmp126 i32) - (local $$cmp127$i i32) - (local $$cmp13 i32) - (local $$cmp147$i i32) - (local $$cmp165 i32) - (local $$cmp176 i32) - (local $$cmp18 i32) - (local $$cmp181 i32) - (local $$cmp184 i32) - (local $$cmp188$i i32) - (local $$cmp196$i i32) - (local $$cmp205$i i32) - (local $$cmp211 i32) - (local $$cmp225$547$i i32) - (local $$cmp225$i i32) - (local $$cmp228$i i32) - (local $$cmp235$543$i i32) - (local $$cmp235$i i32) - (local $$cmp240 i32) - (local $$cmp249$i i32) - (local $$cmp259$537$i i32) - (local $$cmp259$i i32) - (local $$cmp265$i i32) - (local $$cmp270 i32) - (local $$cmp277$533$i i32) - (local $$cmp277$i i32) - (local $$cmp299$i i32) - (local $$cmp306 i32) - (local $$cmp308$i i32) - (local $$cmp315$i i32) - (local $$cmp323 i32) - (local $$cmp324$529$i i32) - (local $$cmp324$i i32) - (local $$cmp333$i i32) - (local $$cmp338$i i32) - (local $$cmp350$i i32) - (local $$cmp363$525$i i32) - (local $$cmp37 i32) - (local $$cmp374$i i32) - (local $$cmp377 i32) - (local $$cmp377$314 i32) - (local $$cmp38$i i32) - (local $$cmp385 i32) - (local $$cmp385$i i32) - (local $$cmp390 i32) - (local $$cmp390$i i32) - (local $$cmp397 i32) - (local $$cmp403$i i32) - (local $$cmp404 i32) - (local $$cmp404$324 i32) - (local $$cmp411$i i32) - (local $$cmp413 i32) - (local $$cmp416$519$i i32) - (local $$cmp416$i i32) - (local $$cmp420$i i32) - (local $$cmp421 i32) - (local $$cmp433$515$i i32) - (local $$cmp433$i i32) - (local $$cmp434 i32) - (local $$cmp442 i32) - (local $$cmp443$i i32) - (local $$cmp450$i i32) - (local $$cmp450$lcssa$i i32) - (local $$cmp466 i32) - (local $$cmp470$i i32) - (local $$cmp473$i i32) - (local $$cmp478 i32) - (local $$cmp478$295 i32) - (local $$cmp48$i i32) - (local $$cmp495$511$i i32) - (local $$cmp495$i i32) - (local $$cmp50 i32) - (local $$cmp50$308 i32) - (local $$cmp505$i i32) - (local $$cmp515$i i32) - (local $$cmp528$i i32) - (local $$cmp563$i i32) - (local $$cmp577$i i32) - (local $$cmp59$i i32) - (local $$cmp614$i i32) - (local $$cmp617$i i32) - (local $$cmp623$i i32) - (local $$cmp636$506$i i32) - (local $$cmp636$i i32) - (local $$cmp65 i32) - (local $$cmp660$i i32) - (local $$cmp665$i i32) - (local $$cmp673$i i32) - (local $$cmp678$491$i i32) - (local $$cmp678$i i32) - (local $$cmp686$i i32) - (local $$cmp707$486$i i32) - (local $$cmp707$i i32) - (local $$cmp710$487$i i32) - (local $$cmp710$i i32) - (local $$cmp722$483$i i32) - (local $$cmp722$i i32) - (local $$cmp727$i i32) - (local $$cmp745$i i32) - (local $$cmp748$499$i i32) - (local $$cmp748$i i32) - (local $$cmp75 i32) - (local $$cmp760$i i32) - (local $$cmp765$i i32) - (local $$cmp770$495$i i32) - (local $$cmp770$i i32) - (local $$cmp777$i i32) - (local $$cmp790$i i32) - (local $$cmp818$i i32) - (local $$cmp82$i i32) - (local $$cmp94$i i32) - (local $$cmp97 i32) - (local $$cnt$0 i32) - (local $$cnt$1 i32) - (local $$cnt$1$lcssa i32) - (local $$cond$i i32) - (local $$cond100$i i32) - (local $$cond233$i i32) - (local $$cond245 i32) - (local $$cond271$i i32) - (local $$cond304$i i32) - (local $$cond354 i32) - (local $$cond426 i32) - (local $$cond43$i i32) - (local $$cond53$i i32) - (local $$cond629$i i32) - (local $$cond732$i i32) - (local $$cond800$i i32) - (local $$conv$4$i i32) - (local $$conv$4$i$197 i32) - (local $$conv$4$i$211 i32) - (local $$conv$i i32) - (local $$conv$i$205 i32) - (local $$conv1$i i32) - (local $$conv111$i i32) - (local $$conv114$i i32) - (local $$conv116$i i32) - (local $$conv118$393$i i32) - (local $$conv120 i32) - (local $$conv121$i i32) - (local $$conv123$i f64) - (local $$conv134 i32) - (local $$conv163 i32) - (local $$conv174 i32) - (local $$conv174$lcssa i32) - (local $$conv207 i32) - (local $$conv216$i i32) - (local $$conv218$i f64) - (local $$conv229 i32) - (local $$conv232 i32) - (local $$conv242$i$lcssa i32) - (local $$conv32 i32) - (local $$conv48 i32) - (local $$conv48$307 i32) - (local $$conv48311 i32) - (local $$conv58 i32) - (local $$conv644$i i32) - (local $$conv646$i i32) - (local $$conv69 i32) - (local $$conv83 i32) - (local $$d$0$542$i i32) - (local $$d$0$i i32) - (local $$d$0545$i i32) - (local $$d$1534$i i32) - (local $$d$2$lcssa$i i32) - (local $$d$2520$i i32) - (local $$d$4$i i32) - (local $$d$5494$i i32) - (local $$d$6488$i i32) - (local $$d$7500$i i32) - (local $$dec$i i32) - (local $$dec476$i i32) - (local $$dec481$i i32) - (local $$dec78$i i32) - (local $$div274$i i32) - (local $$div356$i i32) - (local $$div378$i i32) - (local $$div384$i i32) - (local $$e$0531$i i32) - (local $$e$1$i i32) - (local $$e$2517$i i32) - (local $$e$4$i i32) - (local $$e$5$ph$i i32) - (local $$e2$i i32) - (local $$ebuf0$i i32) - (local $$estr$0$i i32) - (local $$estr$1$lcssa$i i32) - (local $$estr$1507$i i32) - (local $$estr$2$i i32) - (local $$exitcond$i i32) - (local $$expanded i32) - (local $$expanded10 i32) - (local $$expanded11 i32) - (local $$expanded13 i32) - (local $$expanded14 i32) - (local $$expanded15 i32) - (local $$expanded4 i32) - (local $$expanded6 i32) - (local $$expanded7 i32) - (local $$expanded8 i32) - (local $$fl$0284 i32) - (local $$fl$0310 i32) - (local $$fl$1 i32) - (local $$fl$1$and219 i32) - (local $$fl$3 i32) - (local $$fl$4 i32) - (local $$fl$6 i32) - (local $$i$0$lcssa i32) - (local $$i$0$lcssa368 i32) - (local $$i$0316 i32) - (local $$i$0530$i i32) - (local $$i$07$i i32) - (local $$i$07$i$201 i32) - (local $$i$1$lcssa$i i32) - (local $$i$1325 i32) - (local $$i$1526$i i32) - (local $$i$2299 i32) - (local $$i$2299$lcssa i32) - (local $$i$2516$i i32) - (local $$i$3296 i32) - (local $$i$3512$i i32) - (local $$i137 i32) - (local $$i86 i32) - (local $$idxprom$i i32) - (local $$inc i32) - (local $$inc$i i32) - (local $$inc425$i i32) - (local $$inc438$i i32) - (local $$inc468$i i32) - (local $$inc488 i32) - (local $$inc500$i i32) - (local $$incdec$ptr i32) - (local $$incdec$ptr$i i32) - (local $$incdec$ptr$i$204 i32) - (local $$incdec$ptr$i$212 i32) - (local $$incdec$ptr$i$212$lcssa i32) - (local $$incdec$ptr$i$225 i32) - (local $$incdec$ptr$i$lcssa i32) - (local $$incdec$ptr106$i i32) - (local $$incdec$ptr112$i i32) - (local $$incdec$ptr115$i i32) - (local $$incdec$ptr122$i i32) - (local $$incdec$ptr137$i i32) - (local $$incdec$ptr169 i32) - (local $$incdec$ptr169$lcssa i32) - (local $$incdec$ptr169269 i32) - (local $$incdec$ptr169271 i32) - (local $$incdec$ptr169271$lcssa414 i32) - (local $$incdec$ptr169272 i32) - (local $$incdec$ptr169274 i32) - (local $$incdec$ptr169275 i32) - (local $$incdec$ptr169276$lcssa i32) - (local $$incdec$ptr169276301 i32) - (local $$incdec$ptr217$i i32) - (local $$incdec$ptr217$i$lcssa i32) - (local $$incdec$ptr23 i32) - (local $$incdec$ptr246$i i32) - (local $$incdec$ptr288$i i32) - (local $$incdec$ptr292$570$i i32) - (local $$incdec$ptr292$a$3$571$i i32) - (local $$incdec$ptr292$a$3$i i32) - (local $$incdec$ptr292$a$3573$i i32) - (local $$incdec$ptr292$i i32) - (local $$incdec$ptr296$i i32) - (local $$incdec$ptr383 i32) - (local $$incdec$ptr410 i32) - (local $$incdec$ptr419$i i32) - (local $$incdec$ptr423$i i32) - (local $$incdec$ptr62 i32) - (local $$incdec$ptr639$i i32) - (local $$incdec$ptr645$i i32) - (local $$incdec$ptr647$i i32) - (local $$incdec$ptr681$i i32) - (local $$incdec$ptr689$i i32) - (local $$incdec$ptr698$i i32) - (local $$incdec$ptr698$i$lcssa i32) - (local $$incdec$ptr725$i i32) - (local $$incdec$ptr734$i i32) - (local $$incdec$ptr773$i i32) - (local $$incdec$ptr776$i i32) - (local $$incdec$ptr808$i i32) - (local $$isdigit i32) - (local $$isdigit$6$i i32) - (local $$isdigit$6$i$199 i32) - (local $$isdigit$i i32) - (local $$isdigit$i$207 i32) - (local $$isdigit188 i32) - (local $$isdigit190 i32) - (local $$isdigittmp i32) - (local $$isdigittmp$ i32) - (local $$isdigittmp$5$i i32) - (local $$isdigittmp$5$i$198 i32) - (local $$isdigittmp$i i32) - (local $$isdigittmp$i$206 i32) - (local $$isdigittmp187 i32) - (local $$isdigittmp189 i32) - (local $$isdigittmp8$i i32) - (local $$isdigittmp8$i$200 i32) - (local $$j$0$524$i i32) - (local $$j$0$i i32) - (local $$j$0527$i i32) - (local $$j$1513$i i32) - (local $$j$2$i i32) - (local $$l$0 i32) - (local $$l$0$i i32) - (local $$l$1$i i32) - (local $$l$1315 i32) - (local $$l$2 i32) - (local $$l10n$0 i32) - (local $$l10n$0$lcssa i32) - (local $$l10n$0$phi i32) - (local $$l10n$1 i32) - (local $$l10n$2 i32) - (local $$l10n$3 i32) - (local $$land$ext$neg$i i32) - (local $$lnot$ext i32) - (local $$lnot$i i32) - (local $$lnot455$i i32) - (local $$lnot483 i32) - (local $$lor$ext$i i32) - (local $$mb i32) - (local $$mul$i i32) - (local $$mul$i$202 i32) - (local $$mul$i$240 f64) - (local $$mul125$i f64) - (local $$mul202$i f64) - (local $$mul220$i f64) - (local $$mul286$i i32) - (local $$mul286$i$lcssa i32) - (local $$mul322$i i32) - (local $$mul328$i i32) - (local $$mul335$i i32) - (local $$mul349$i i32) - (local $$mul367$i i32) - (local $$mul406$i f64) - (local $$mul407$i f64) - (local $$mul431$i i32) - (local $$mul437$i i32) - (local $$mul499$i i32) - (local $$mul513$i i32) - (local $$mul80$i f64) - (local $$mul80$i$lcssa f64) - (local $$notlhs$i i32) - (local $$notrhs$i i32) - (local $$or i32) - (local $$or$cond i32) - (local $$or$cond$i i32) - (local $$or$cond1$not$i i32) - (local $$or$cond192 i32) - (local $$or$cond193 i32) - (local $$or$cond195 i32) - (local $$or$cond2$i i32) - (local $$or$cond384 i32) - (local $$or$cond395$i i32) - (local $$or$cond397$i i32) - (local $$or$cond401$i i32) - (local $$or$i i32) - (local $$or$i$241 i32) - (local $$or100 i32) - (local $$or120$i i32) - (local $$or246 i32) - (local $$or504$i i32) - (local $$or613$i i32) - (local $$p$0 i32) - (local $$p$1 i32) - (local $$p$2 i32) - (local $$p$2$add322 i32) - (local $$p$3 i32) - (local $$p$4365 i32) - (local $$p$5 i32) - (local $$p$addr$2$$sub514398$i i32) - (local $$p$addr$2$$sub562399$i i32) - (local $$p$addr$2$i i32) - (local $$p$addr$3$i i32) - (local $$p$addr$4$lcssa$i i32) - (local $$p$addr$4489$i i32) - (local $$p$addr$5$lcssa$i i32) - (local $$p$addr$5501$i i32) - (local $$pl$0 i32) - (local $$pl$0$i i32) - (local $$pl$1 i32) - (local $$pl$1$i i32) - (local $$pl$2 i32) - (local $$prefix$0 i32) - (local $$prefix$0$add$ptr65$i i32) - (local $$prefix$0$i i32) - (local $$prefix$1 i32) - (local $$prefix$2 i32) - (local $$r$0$a$9$i i32) - (local $$re$1482$i i32) - (local $$rem360$i i32) - (local $$rem370$i i32) - (local $$rem494$510$i i32) - (local $$rem494$i i32) - (local $$retval$0 i32) - (local $$retval$0$i i32) - (local $$round$0481$i f64) - (local $$round377$1$i f64) - (local $$s$0$i i32) - (local $$s$1$i i32) - (local $$s$1$i$lcssa i32) - (local $$s$addr$0$lcssa$i$229 i32) - (local $$s$addr$06$i i32) - (local $$s$addr$06$i$221 i32) - (local $$s35$0$i i32) - (local $$s668$0492$i i32) - (local $$s668$1$i i32) - (local $$s715$0$lcssa$i i32) - (local $$s715$0484$i i32) - (local $$s753$0$i i32) - (local $$s753$1496$i i32) - (local $$s753$2$i i32) - (local $$shl i32) - (local $$shl280$i i32) - (local $$shl60 i32) - (local $$shr i32) - (local $$shr283$i i32) - (local $$shr285$i i32) - (local $$small$0$i f64) - (local $$small$1$i f64) - (local $$st$0 i32) - (local $$st$0$lcssa415 i32) - (local $$storemerge i32) - (local $$storemerge$186282 i32) - (local $$storemerge$186309 i32) - (local $$storemerge$191 i32) - (local $$sub i32) - (local $$sub$i f64) - (local $$sub$ptr$div$i i32) - (local $$sub$ptr$div321$i i32) - (local $$sub$ptr$div347$i i32) - (local $$sub$ptr$div430$i i32) - (local $$sub$ptr$div511$i i32) - (local $$sub$ptr$lhs$cast i32) - (local $$sub$ptr$lhs$cast$i i32) - (local $$sub$ptr$lhs$cast160$i i32) - (local $$sub$ptr$lhs$cast305$i i32) - (local $$sub$ptr$lhs$cast317 i32) - (local $$sub$ptr$lhs$cast344$i i32) - (local $$sub$ptr$lhs$cast361 i32) - (local $$sub$ptr$lhs$cast431 i32) - (local $$sub$ptr$lhs$cast508$i i32) - (local $$sub$ptr$lhs$cast694$i i32) - (local $$sub$ptr$rhs$cast i32) - (local $$sub$ptr$rhs$cast$i i32) - (local $$sub$ptr$rhs$cast152$i i32) - (local $$sub$ptr$rhs$cast161$i i32) - (local $$sub$ptr$rhs$cast174$i i32) - (local $$sub$ptr$rhs$cast267 i32) - (local $$sub$ptr$rhs$cast306$i i32) - (local $$sub$ptr$rhs$cast318 i32) - (local $$sub$ptr$rhs$cast319$i i32) - (local $$sub$ptr$rhs$cast345$i i32) - (local $$sub$ptr$rhs$cast362 i32) - (local $$sub$ptr$rhs$cast428$i i32) - (local $$sub$ptr$rhs$cast432 i32) - (local $$sub$ptr$rhs$cast634$504$i i32) - (local $$sub$ptr$rhs$cast634$i i32) - (local $$sub$ptr$rhs$cast649$i i32) - (local $$sub$ptr$rhs$cast695$i i32) - (local $$sub$ptr$rhs$cast788$i i32) - (local $$sub$ptr$rhs$cast812$i i32) - (local $$sub$ptr$sub i32) - (local $$sub$ptr$sub$i i32) - (local $$sub$ptr$sub145$i i32) - (local $$sub$ptr$sub153$i i32) - (local $$sub$ptr$sub159$i i32) - (local $$sub$ptr$sub162$i i32) - (local $$sub$ptr$sub172$i i32) - (local $$sub$ptr$sub175$i i32) - (local $$sub$ptr$sub268 i32) - (local $$sub$ptr$sub307$i i32) - (local $$sub$ptr$sub319 i32) - (local $$sub$ptr$sub320$i i32) - (local $$sub$ptr$sub346$i i32) - (local $$sub$ptr$sub363 i32) - (local $$sub$ptr$sub429$i i32) - (local $$sub$ptr$sub433 i32) - (local $$sub$ptr$sub433$p$5 i32) - (local $$sub$ptr$sub510$i i32) - (local $$sub$ptr$sub635$505$i i32) - (local $$sub$ptr$sub635$i i32) - (local $$sub$ptr$sub650$i i32) - (local $$sub$ptr$sub650$pn$i i32) - (local $$sub$ptr$sub696$i i32) - (local $$sub$ptr$sub789$i i32) - (local $$sub$ptr$sub813$i i32) - (local $$sub101 i32) - (local $$sub124$i f64) - (local $$sub135 i32) - (local $$sub146$i i32) - (local $$sub164 i32) - (local $$sub175 i32) - (local $$sub181$i i32) - (local $$sub203$i i32) - (local $$sub219$i f64) - (local $$sub256$i i32) - (local $$sub264$i i32) - (local $$sub281$i i32) - (local $$sub336$i i32) - (local $$sub343$i i32) - (local $$sub357$i i32) - (local $$sub389 i32) - (local $$sub409$i i32) - (local $$sub478$i i32) - (local $$sub480$i i32) - (local $$sub514$i i32) - (local $$sub54 i32) - (local $$sub562$i i32) - (local $$sub59 i32) - (local $$sub626$le$i i32) - (local $$sub735$i i32) - (local $$sub74$i i32) - (local $$sub806$i i32) - (local $$sub84 i32) - (local $$sub85$i f64) - (local $$sub86$i f64) - (local $$sub88$i f64) - (local $$sub91$i f64) - (local $$sub97$i i32) - (local $$sum i32) - (local $$t$0 i32) - (local $$t$1 i32) - (local $$t$addr$0$i i32) - (local $$t$addr$1$i i32) - (local $$tobool i32) - (local $$tobool$i i32) - (local $$tobool$i$217 i32) - (local $$tobool$i$232 i32) - (local $$tobool$i$245 i32) - (local $$tobool$i$407$i i32) - (local $$tobool$i$413$i i32) - (local $$tobool$i$419$i i32) - (local $$tobool$i$425$i i32) - (local $$tobool$i$431$i i32) - (local $$tobool$i$437$i i32) - (local $$tobool$i$443$i i32) - (local $$tobool$i$449$i i32) - (local $$tobool$i$455$i i32) - (local $$tobool$i$461$i i32) - (local $$tobool$i$467$i i32) - (local $$tobool$i$473$i i32) - (local $$tobool$i$i i32) - (local $$tobool13$i i32) - (local $$tobool135$i i32) - (local $$tobool139$i i32) - (local $$tobool140$i i32) - (local $$tobool141 i32) - (local $$tobool178 i32) - (local $$tobool208 i32) - (local $$tobool217 i32) - (local $$tobool222$i i32) - (local $$tobool244$i i32) - (local $$tobool25 i32) - (local $$tobool255 i32) - (local $$tobool264 i32) - (local $$tobool28 i32) - (local $$tobool290 i32) - (local $$tobool290$569$i i32) - (local $$tobool290$i i32) - (local $$tobool294$i i32) - (local $$tobool295 i32) - (local $$tobool314 i32) - (local $$tobool341$i i32) - (local $$tobool349 i32) - (local $$tobool357 i32) - (local $$tobool37$i i32) - (local $$tobool371$i i32) - (local $$tobool380 i32) - (local $$tobool380$i i32) - (local $$tobool400$i i32) - (local $$tobool407 i32) - (local $$tobool459 i32) - (local $$tobool462 i32) - (local $$tobool470 i32) - (local $$tobool484$i i32) - (local $$tobool490$i i32) - (local $$tobool55 i32) - (local $$tobool56$i i32) - (local $$tobool63$i i32) - (local $$tobool76$i i32) - (local $$tobool76552$i i32) - (local $$tobool781$i i32) - (local $$tobool79$i i32) - (local $$tobool9$i i32) - (local $$tobool90 i32) - (local $$w$0 i32) - (local $$w$1 i32) - (local $$w$2 i32) - (local $$w$add165$i i32) - (local $$w$add653$i i32) - (local $$wc i32) - (local $$ws$0317 i32) - (local $$ws$1326 i32) - (local $$xor i32) - (local $$xor$i i32) - (local $$xor167$i i32) - (local $$xor186$i i32) - (local $$xor449 i32) - (local $$xor457 i32) - (local $$xor655$i i32) - (local $$xor816$i i32) - (local $$y$addr$0$i f64) - (local $$y$addr$1$i f64) - (local $$y$addr$2$i f64) - (local $$y$addr$3$i f64) - (local $$y$addr$4$i f64) - (local $$z$0$i i32) - (local $$z$0$lcssa i32) - (local $$z$0302 i32) - (local $$z$1 i32) - (local $$z$1$lcssa$i i32) - (local $$z$1548$i i32) - (local $$z$2 i32) - (local $$z$2$i i32) - (local $$z$2$i$lcssa i32) - (local $$z$3$lcssa$i i32) - (local $$z$3538$i i32) - (local $$z$4$i i32) - (local $$z$7$add$ptr742$i i32) - (local $$z$7$i i32) - (local $$z$7$i$lcssa i32) - (local $$z$7$ph$i i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 624) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$big$i - (i32.add - (local.get $sp) - (i32.const 24) - ) - ) - (local.set $$e2$i - (i32.add - (local.get $sp) - (i32.const 16) - ) - ) - (local.set $$buf$i - (i32.add - (local.get $sp) - (i32.const 588) - ) - ) - (local.set $$ebuf0$i - (i32.add - (local.get $sp) - (i32.const 576) - ) - ) - (local.set $$arg - (local.get $sp) - ) - (local.set $$buf - (i32.add - (local.get $sp) - (i32.const 536) - ) - ) - (local.set $$wc - (i32.add - (local.get $sp) - (i32.const 8) - ) - ) - (local.set $$mb - (i32.add - (local.get $sp) - (i32.const 528) - ) - ) - (local.set $$tobool25 - (i32.ne - (local.get $$f) - (i32.const 0) - ) - ) - (local.set $$add$ptr205 - (i32.add - (local.get $$buf) - (i32.const 40) - ) - ) - (local.set $$sub$ptr$lhs$cast317 - (local.get $$add$ptr205) - ) - (local.set $$add$ptr340 - (i32.add - (local.get $$buf) - (i32.const 39) - ) - ) - (local.set $$arrayidx370 - (i32.add - (local.get $$wc) - (i32.const 4) - ) - ) - (local.set $$arrayidx$i$236 - (i32.add - (local.get $$ebuf0$i) - (i32.const 12) - ) - ) - (local.set $$incdec$ptr106$i - (i32.add - (local.get $$ebuf0$i) - (i32.const 11) - ) - ) - (local.set $$sub$ptr$rhs$cast$i - (local.get $$buf$i) - ) - (local.set $$sub$ptr$lhs$cast160$i - (local.get $$arrayidx$i$236) - ) - (local.set $$sub$ptr$sub159$i - (i32.sub - (local.get $$sub$ptr$lhs$cast160$i) - (local.get $$sub$ptr$rhs$cast$i) - ) - ) - (local.set $$sub$ptr$sub145$i - (i32.sub - (i32.const -2) - (local.get $$sub$ptr$rhs$cast$i) - ) - ) - (local.set $$sub$ptr$sub153$i - (i32.add - (local.get $$sub$ptr$lhs$cast160$i) - (i32.const 2) - ) - ) - (local.set $$add$ptr213$i - (i32.add - (local.get $$big$i) - (i32.const 288) - ) - ) - (local.set $$add$ptr671$i - (i32.add - (local.get $$buf$i) - (i32.const 9) - ) - ) - (local.set $$sub$ptr$lhs$cast694$i - (local.get $$add$ptr671$i) - ) - (local.set $$incdec$ptr689$i - (i32.add - (local.get $$buf$i) - (i32.const 8) - ) - ) - (local.set $$cnt$0 - (i32.const 0) - ) - (local.set $$incdec$ptr169275 - (local.get $$fmt) - ) - (local.set $$l$0 - (i32.const 0) - ) - (local.set $$l10n$0 - (i32.const 0) - ) - (loop $label$continue$L1 - (block $label$break$L1 - (local.set $$cmp - (i32.gt_s - (local.get $$cnt$0) - (i32.const -1) - ) - ) - (block $do-once - (if - (local.get $$cmp) - (block - (local.set $$sub - (i32.sub - (i32.const 2147483647) - (local.get $$cnt$0) - ) - ) - (local.set $$cmp1 - (i32.gt_s - (local.get $$l$0) - (local.get $$sub) - ) - ) - (if - (local.get $$cmp1) - (block - (local.set $$call - (call $___errno_location) - ) - (i32.store - (local.get $$call) - (i32.const 75) - ) - (local.set $$cnt$1 - (i32.const -1) - ) - (br $do-once) - ) - (block - (local.set $$add - (i32.add - (local.get $$l$0) - (local.get $$cnt$0) - ) - ) - (local.set $$cnt$1 - (local.get $$add) - ) - (br $do-once) - ) - ) - ) - (local.set $$cnt$1 - (local.get $$cnt$0) - ) - ) - ) - (local.set $$0 - (i32.load8_s - (local.get $$incdec$ptr169275) - ) - ) - (local.set $$tobool - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$0) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - ) - (if - (local.get $$tobool) - (block - (local.set $$cnt$1$lcssa - (local.get $$cnt$1) - ) - (local.set $$l10n$0$lcssa - (local.get $$l10n$0) - ) - (local.set $label - (i32.const 242) - ) - (br $label$break$L1) - ) - (block - (local.set $$1 - (local.get $$0) - ) - (local.set $$incdec$ptr169274 - (local.get $$incdec$ptr169275) - ) - ) - ) - (loop $label$continue$L9 - (block $label$break$L9 - (block $switch - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case0 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case $switch-default - (i32.sub - (i32.shr_s - (i32.shl - (local.get $$1) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - ) - ) - (block - (local.set $$incdec$ptr169276301 - (local.get $$incdec$ptr169274) - ) - (local.set $$z$0302 - (local.get $$incdec$ptr169274) - ) - (local.set $label - (i32.const 9) - ) - (br $label$break$L9) - (br $switch) - ) - ) - (block - (local.set $$incdec$ptr169276$lcssa - (local.get $$incdec$ptr169274) - ) - (local.set $$z$0$lcssa - (local.get $$incdec$ptr169274) - ) - (br $label$break$L9) - (br $switch) - ) - ) - (nop) - ) - (local.set $$incdec$ptr - (i32.add - (local.get $$incdec$ptr169274) - (i32.const 1) - ) - ) - (local.set $$$pre - (i32.load8_s - (local.get $$incdec$ptr) - ) - ) - (local.set $$1 - (local.get $$$pre) - ) - (local.set $$incdec$ptr169274 - (local.get $$incdec$ptr) - ) - (br $label$continue$L9) - ) - ) - (block $label$break$L12 - (if - (i32.eq - (local.get $label) - (i32.const 9) - ) - (loop $while-in - (block $while-out - (local.set $label - (i32.const 0) - ) - (local.set $$arrayidx16 - (i32.add - (local.get $$incdec$ptr169276301) - (i32.const 1) - ) - ) - (local.set $$2 - (i32.load8_s - (local.get $$arrayidx16) - ) - ) - (local.set $$cmp18 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$2) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 37) - ) - ) - (if - (i32.eqz - (local.get $$cmp18) - ) - (block - (local.set $$incdec$ptr169276$lcssa - (local.get $$incdec$ptr169276301) - ) - (local.set $$z$0$lcssa - (local.get $$z$0302) - ) - (br $label$break$L12) - ) - ) - (local.set $$incdec$ptr23 - (i32.add - (local.get $$z$0302) - (i32.const 1) - ) - ) - (local.set $$add$ptr - (i32.add - (local.get $$incdec$ptr169276301) - (i32.const 2) - ) - ) - (local.set $$3 - (i32.load8_s - (local.get $$add$ptr) - ) - ) - (local.set $$cmp13 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$3) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 37) - ) - ) - (if - (local.get $$cmp13) - (block - (local.set $$incdec$ptr169276301 - (local.get $$add$ptr) - ) - (local.set $$z$0302 - (local.get $$incdec$ptr23) - ) - (local.set $label - (i32.const 9) - ) - ) - (block - (local.set $$incdec$ptr169276$lcssa - (local.get $$add$ptr) - ) - (local.set $$z$0$lcssa - (local.get $$incdec$ptr23) - ) - (br $while-out) - ) - ) - (br $while-in) - ) - ) - ) - ) - (local.set $$sub$ptr$lhs$cast - (local.get $$z$0$lcssa) - ) - (local.set $$sub$ptr$rhs$cast - (local.get $$incdec$ptr169275) - ) - (local.set $$sub$ptr$sub - (i32.sub - (local.get $$sub$ptr$lhs$cast) - (local.get $$sub$ptr$rhs$cast) - ) - ) - (if - (local.get $$tobool25) - (block - (local.set $$4 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i - (i32.and - (local.get $$4) - (i32.const 32) - ) - ) - (local.set $$tobool$i - (i32.eq - (local.get $$and$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i) - (drop - (call $___fwritex - (local.get $$incdec$ptr169275) - (local.get $$sub$ptr$sub) - (local.get $$f) - ) - ) - ) - ) - ) - (local.set $$tobool28 - (i32.eq - (local.get $$z$0$lcssa) - (local.get $$incdec$ptr169275) - ) - ) - (if - (i32.eqz - (local.get $$tobool28) - ) - (block - (local.set $$l10n$0$phi - (local.get $$l10n$0) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169276$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$0$phi) - ) - (br $label$continue$L1) - ) - ) - (local.set $$arrayidx31 - (i32.add - (local.get $$incdec$ptr169276$lcssa) - (i32.const 1) - ) - ) - (local.set $$5 - (i32.load8_s - (local.get $$arrayidx31) - ) - ) - (local.set $$conv32 - (i32.shr_s - (i32.shl - (local.get $$5) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$isdigittmp - (i32.add - (local.get $$conv32) - (i32.const -48) - ) - ) - (local.set $$isdigit - (i32.lt_u - (local.get $$isdigittmp) - (i32.const 10) - ) - ) - (if - (local.get $$isdigit) - (block - (local.set $$arrayidx35 - (i32.add - (local.get $$incdec$ptr169276$lcssa) - (i32.const 2) - ) - ) - (local.set $$6 - (i32.load8_s - (local.get $$arrayidx35) - ) - ) - (local.set $$cmp37 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$6) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 36) - ) - ) - (local.set $$add$ptr43 - (i32.add - (local.get $$incdec$ptr169276$lcssa) - (i32.const 3) - ) - ) - (local.set $$add$ptr43$arrayidx31 - (if (result i32) - (local.get $$cmp37) - (local.get $$add$ptr43) - (local.get $$arrayidx31) - ) - ) - (local.set $$$l10n$0 - (if (result i32) - (local.get $$cmp37) - (i32.const 1) - (local.get $$l10n$0) - ) - ) - (local.set $$isdigittmp$ - (if (result i32) - (local.get $$cmp37) - (local.get $$isdigittmp) - (i32.const -1) - ) - ) - (local.set $$$pre357 - (i32.load8_s - (local.get $$add$ptr43$arrayidx31) - ) - ) - (local.set $$7 - (local.get $$$pre357) - ) - (local.set $$argpos$0 - (local.get $$isdigittmp$) - ) - (local.set $$l10n$1 - (local.get $$$l10n$0) - ) - (local.set $$storemerge - (local.get $$add$ptr43$arrayidx31) - ) - ) - (block - (local.set $$7 - (local.get $$5) - ) - (local.set $$argpos$0 - (i32.const -1) - ) - (local.set $$l10n$1 - (local.get $$l10n$0) - ) - (local.set $$storemerge - (local.get $$arrayidx31) - ) - ) - ) - (local.set $$conv48$307 - (i32.shr_s - (i32.shl - (local.get $$7) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$8 - (i32.and - (local.get $$conv48$307) - (i32.const -32) - ) - ) - (local.set $$cmp50$308 - (i32.eq - (local.get $$8) - (i32.const 32) - ) - ) - (block $label$break$L25 - (if - (local.get $$cmp50$308) - (block - (local.set $$9 - (local.get $$7) - ) - (local.set $$conv48311 - (local.get $$conv48$307) - ) - (local.set $$fl$0310 - (i32.const 0) - ) - (local.set $$storemerge$186309 - (local.get $$storemerge) - ) - (loop $while-in4 - (block $while-out3 - (local.set $$sub54 - (i32.add - (local.get $$conv48311) - (i32.const -32) - ) - ) - (local.set $$shl - (i32.shl - (i32.const 1) - (local.get $$sub54) - ) - ) - (local.set $$and - (i32.and - (local.get $$shl) - (i32.const 75913) - ) - ) - (local.set $$tobool55 - (i32.eq - (local.get $$and) - (i32.const 0) - ) - ) - (if - (local.get $$tobool55) - (block - (local.set $$12 - (local.get $$9) - ) - (local.set $$fl$0284 - (local.get $$fl$0310) - ) - (local.set $$storemerge$186282 - (local.get $$storemerge$186309) - ) - (br $label$break$L25) - ) - ) - (local.set $$conv58 - (i32.shr_s - (i32.shl - (local.get $$9) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$sub59 - (i32.add - (local.get $$conv58) - (i32.const -32) - ) - ) - (local.set $$shl60 - (i32.shl - (i32.const 1) - (local.get $$sub59) - ) - ) - (local.set $$or - (i32.or - (local.get $$shl60) - (local.get $$fl$0310) - ) - ) - (local.set $$incdec$ptr62 - (i32.add - (local.get $$storemerge$186309) - (i32.const 1) - ) - ) - (local.set $$10 - (i32.load8_s - (local.get $$incdec$ptr62) - ) - ) - (local.set $$conv48 - (i32.shr_s - (i32.shl - (local.get $$10) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$11 - (i32.and - (local.get $$conv48) - (i32.const -32) - ) - ) - (local.set $$cmp50 - (i32.eq - (local.get $$11) - (i32.const 32) - ) - ) - (if - (local.get $$cmp50) - (block - (local.set $$9 - (local.get $$10) - ) - (local.set $$conv48311 - (local.get $$conv48) - ) - (local.set $$fl$0310 - (local.get $$or) - ) - (local.set $$storemerge$186309 - (local.get $$incdec$ptr62) - ) - ) - (block - (local.set $$12 - (local.get $$10) - ) - (local.set $$fl$0284 - (local.get $$or) - ) - (local.set $$storemerge$186282 - (local.get $$incdec$ptr62) - ) - (br $while-out3) - ) - ) - (br $while-in4) - ) - ) - ) - (block - (local.set $$12 - (local.get $$7) - ) - (local.set $$fl$0284 - (i32.const 0) - ) - (local.set $$storemerge$186282 - (local.get $$storemerge) - ) - ) - ) - ) - (local.set $$cmp65 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$12) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 42) - ) - ) - (block $do-once5 - (if - (local.get $$cmp65) - (block - (local.set $$arrayidx68 - (i32.add - (local.get $$storemerge$186282) - (i32.const 1) - ) - ) - (local.set $$13 - (i32.load8_s - (local.get $$arrayidx68) - ) - ) - (local.set $$conv69 - (i32.shr_s - (i32.shl - (local.get $$13) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$isdigittmp189 - (i32.add - (local.get $$conv69) - (i32.const -48) - ) - ) - (local.set $$isdigit190 - (i32.lt_u - (local.get $$isdigittmp189) - (i32.const 10) - ) - ) - (if - (local.get $$isdigit190) - (block - (local.set $$arrayidx73 - (i32.add - (local.get $$storemerge$186282) - (i32.const 2) - ) - ) - (local.set $$14 - (i32.load8_s - (local.get $$arrayidx73) - ) - ) - (local.set $$cmp75 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$14) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 36) - ) - ) - (if - (local.get $$cmp75) - (block - (local.set $$arrayidx81 - (i32.add - (local.get $$nl_type) - (i32.shl - (local.get $$isdigittmp189) - (i32.const 2) - ) - ) - ) - (i32.store - (local.get $$arrayidx81) - (i32.const 10) - ) - (local.set $$15 - (i32.load8_s - (local.get $$arrayidx68) - ) - ) - (local.set $$conv83 - (i32.shr_s - (i32.shl - (local.get $$15) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$sub84 - (i32.add - (local.get $$conv83) - (i32.const -48) - ) - ) - (local.set $$i86 - (i32.add - (local.get $$nl_arg) - (i32.shl - (local.get $$sub84) - (i32.const 3) - ) - ) - ) - (local.set $$16 - (local.get $$i86) - ) - (local.set $$17 - (local.get $$16) - ) - (local.set $$18 - (i32.load - (local.get $$17) - ) - ) - (local.set $$19 - (i32.add - (local.get $$16) - (i32.const 4) - ) - ) - (local.set $$20 - (local.get $$19) - ) - (local.set $$21 - (i32.load - (local.get $$20) - ) - ) - (local.set $$add$ptr88 - (i32.add - (local.get $$storemerge$186282) - (i32.const 3) - ) - ) - (local.set $$l10n$2 - (i32.const 1) - ) - (local.set $$storemerge$191 - (local.get $$add$ptr88) - ) - (local.set $$w$0 - (local.get $$18) - ) - ) - (local.set $label - (i32.const 24) - ) - ) - ) - (local.set $label - (i32.const 24) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 24) - ) - (block - (local.set $label - (i32.const 0) - ) - (local.set $$tobool90 - (i32.eq - (local.get $$l10n$1) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool90) - ) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (if - (i32.eqz - (local.get $$tobool25) - ) - (block - (local.set $$fl$1 - (local.get $$fl$0284) - ) - (local.set $$incdec$ptr169269 - (local.get $$arrayidx68) - ) - (local.set $$l10n$3 - (i32.const 0) - ) - (local.set $$w$1 - (i32.const 0) - ) - (br $do-once5) - ) - ) - (local.set $$arglist_current - (i32.load - (local.get $$ap) - ) - ) - (local.set $$22 - (local.get $$arglist_current) - ) - (local.set $$23 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded4 - (local.get $$23) - ) - (local.set $$expanded - (i32.sub - (local.get $$expanded4) - (i32.const 1) - ) - ) - (local.set $$24 - (i32.add - (local.get $$22) - (local.get $$expanded) - ) - ) - (local.set $$25 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded8 - (local.get $$25) - ) - (local.set $$expanded7 - (i32.sub - (local.get $$expanded8) - (i32.const 1) - ) - ) - (local.set $$expanded6 - (i32.xor - (local.get $$expanded7) - (i32.const -1) - ) - ) - (local.set $$26 - (i32.and - (local.get $$24) - (local.get $$expanded6) - ) - ) - (local.set $$27 - (local.get $$26) - ) - (local.set $$28 - (i32.load - (local.get $$27) - ) - ) - (local.set $$arglist_next - (i32.add - (local.get $$27) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next) - ) - (local.set $$l10n$2 - (i32.const 0) - ) - (local.set $$storemerge$191 - (local.get $$arrayidx68) - ) - (local.set $$w$0 - (local.get $$28) - ) - ) - ) - (local.set $$cmp97 - (i32.lt_s - (local.get $$w$0) - (i32.const 0) - ) - ) - (if - (local.get $$cmp97) - (block - (local.set $$or100 - (i32.or - (local.get $$fl$0284) - (i32.const 8192) - ) - ) - (local.set $$sub101 - (i32.sub - (i32.const 0) - (local.get $$w$0) - ) - ) - (local.set $$fl$1 - (local.get $$or100) - ) - (local.set $$incdec$ptr169269 - (local.get $$storemerge$191) - ) - (local.set $$l10n$3 - (local.get $$l10n$2) - ) - (local.set $$w$1 - (local.get $$sub101) - ) - ) - (block - (local.set $$fl$1 - (local.get $$fl$0284) - ) - (local.set $$incdec$ptr169269 - (local.get $$storemerge$191) - ) - (local.set $$l10n$3 - (local.get $$l10n$2) - ) - (local.set $$w$1 - (local.get $$w$0) - ) - ) - ) - ) - (block - (local.set $$conv$4$i - (i32.shr_s - (i32.shl - (local.get $$12) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$isdigittmp$5$i - (i32.add - (local.get $$conv$4$i) - (i32.const -48) - ) - ) - (local.set $$isdigit$6$i - (i32.lt_u - (local.get $$isdigittmp$5$i) - (i32.const 10) - ) - ) - (if - (local.get $$isdigit$6$i) - (block - (local.set $$29 - (local.get $$storemerge$186282) - ) - (local.set $$i$07$i - (i32.const 0) - ) - (local.set $$isdigittmp8$i - (local.get $$isdigittmp$5$i) - ) - (loop $while-in8 - (block $while-out7 - (local.set $$mul$i - (i32.mul - (local.get $$i$07$i) - (i32.const 10) - ) - ) - (local.set $$add$i - (i32.add - (local.get $$mul$i) - (local.get $$isdigittmp8$i) - ) - ) - (local.set $$incdec$ptr$i - (i32.add - (local.get $$29) - (i32.const 1) - ) - ) - (local.set $$30 - (i32.load8_s - (local.get $$incdec$ptr$i) - ) - ) - (local.set $$conv$i - (i32.shr_s - (i32.shl - (local.get $$30) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$isdigittmp$i - (i32.add - (local.get $$conv$i) - (i32.const -48) - ) - ) - (local.set $$isdigit$i - (i32.lt_u - (local.get $$isdigittmp$i) - (i32.const 10) - ) - ) - (if - (local.get $$isdigit$i) - (block - (local.set $$29 - (local.get $$incdec$ptr$i) - ) - (local.set $$i$07$i - (local.get $$add$i) - ) - (local.set $$isdigittmp8$i - (local.get $$isdigittmp$i) - ) - ) - (block - (local.set $$add$i$lcssa - (local.get $$add$i) - ) - (local.set $$incdec$ptr$i$lcssa - (local.get $$incdec$ptr$i) - ) - (br $while-out7) - ) - ) - (br $while-in8) - ) - ) - (local.set $$cmp105 - (i32.lt_s - (local.get $$add$i$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$cmp105) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L1) - ) - (block - (local.set $$fl$1 - (local.get $$fl$0284) - ) - (local.set $$incdec$ptr169269 - (local.get $$incdec$ptr$i$lcssa) - ) - (local.set $$l10n$3 - (local.get $$l10n$1) - ) - (local.set $$w$1 - (local.get $$add$i$lcssa) - ) - ) - ) - ) - (block - (local.set $$fl$1 - (local.get $$fl$0284) - ) - (local.set $$incdec$ptr169269 - (local.get $$storemerge$186282) - ) - (local.set $$l10n$3 - (local.get $$l10n$1) - ) - (local.set $$w$1 - (i32.const 0) - ) - ) - ) - ) - ) - ) - (local.set $$31 - (i32.load8_s - (local.get $$incdec$ptr169269) - ) - ) - (local.set $$cmp111 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$31) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 46) - ) - ) - (block $label$break$L46 - (if - (local.get $$cmp111) - (block - (local.set $$arrayidx114 - (i32.add - (local.get $$incdec$ptr169269) - (i32.const 1) - ) - ) - (local.set $$32 - (i32.load8_s - (local.get $$arrayidx114) - ) - ) - (local.set $$cmp116 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$32) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 42) - ) - ) - (if - (i32.eqz - (local.get $$cmp116) - ) - (block - (local.set $$conv$4$i$197 - (i32.shr_s - (i32.shl - (local.get $$32) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$isdigittmp$5$i$198 - (i32.add - (local.get $$conv$4$i$197) - (i32.const -48) - ) - ) - (local.set $$isdigit$6$i$199 - (i32.lt_u - (local.get $$isdigittmp$5$i$198) - (i32.const 10) - ) - ) - (if - (local.get $$isdigit$6$i$199) - (block - (local.set $$49 - (local.get $$arrayidx114) - ) - (local.set $$i$07$i$201 - (i32.const 0) - ) - (local.set $$isdigittmp8$i$200 - (local.get $$isdigittmp$5$i$198) - ) - ) - (block - (local.set $$incdec$ptr169272 - (local.get $$arrayidx114) - ) - (local.set $$p$0 - (i32.const 0) - ) - (br $label$break$L46) - ) - ) - (loop $while-in11 - (block $while-out10 - (local.set $$mul$i$202 - (i32.mul - (local.get $$i$07$i$201) - (i32.const 10) - ) - ) - (local.set $$add$i$203 - (i32.add - (local.get $$mul$i$202) - (local.get $$isdigittmp8$i$200) - ) - ) - (local.set $$incdec$ptr$i$204 - (i32.add - (local.get $$49) - (i32.const 1) - ) - ) - (local.set $$50 - (i32.load8_s - (local.get $$incdec$ptr$i$204) - ) - ) - (local.set $$conv$i$205 - (i32.shr_s - (i32.shl - (local.get $$50) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$isdigittmp$i$206 - (i32.add - (local.get $$conv$i$205) - (i32.const -48) - ) - ) - (local.set $$isdigit$i$207 - (i32.lt_u - (local.get $$isdigittmp$i$206) - (i32.const 10) - ) - ) - (if - (local.get $$isdigit$i$207) - (block - (local.set $$49 - (local.get $$incdec$ptr$i$204) - ) - (local.set $$i$07$i$201 - (local.get $$add$i$203) - ) - (local.set $$isdigittmp8$i$200 - (local.get $$isdigittmp$i$206) - ) - ) - (block - (local.set $$incdec$ptr169272 - (local.get $$incdec$ptr$i$204) - ) - (local.set $$p$0 - (local.get $$add$i$203) - ) - (br $label$break$L46) - ) - ) - (br $while-in11) - ) - ) - ) - ) - (local.set $$arrayidx119 - (i32.add - (local.get $$incdec$ptr169269) - (i32.const 2) - ) - ) - (local.set $$33 - (i32.load8_s - (local.get $$arrayidx119) - ) - ) - (local.set $$conv120 - (i32.shr_s - (i32.shl - (local.get $$33) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$isdigittmp187 - (i32.add - (local.get $$conv120) - (i32.const -48) - ) - ) - (local.set $$isdigit188 - (i32.lt_u - (local.get $$isdigittmp187) - (i32.const 10) - ) - ) - (if - (local.get $$isdigit188) - (block - (local.set $$arrayidx124 - (i32.add - (local.get $$incdec$ptr169269) - (i32.const 3) - ) - ) - (local.set $$34 - (i32.load8_s - (local.get $$arrayidx124) - ) - ) - (local.set $$cmp126 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$34) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 36) - ) - ) - (if - (local.get $$cmp126) - (block - (local.set $$arrayidx132 - (i32.add - (local.get $$nl_type) - (i32.shl - (local.get $$isdigittmp187) - (i32.const 2) - ) - ) - ) - (i32.store - (local.get $$arrayidx132) - (i32.const 10) - ) - (local.set $$35 - (i32.load8_s - (local.get $$arrayidx119) - ) - ) - (local.set $$conv134 - (i32.shr_s - (i32.shl - (local.get $$35) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$sub135 - (i32.add - (local.get $$conv134) - (i32.const -48) - ) - ) - (local.set $$i137 - (i32.add - (local.get $$nl_arg) - (i32.shl - (local.get $$sub135) - (i32.const 3) - ) - ) - ) - (local.set $$36 - (local.get $$i137) - ) - (local.set $$37 - (local.get $$36) - ) - (local.set $$38 - (i32.load - (local.get $$37) - ) - ) - (local.set $$39 - (i32.add - (local.get $$36) - (i32.const 4) - ) - ) - (local.set $$40 - (local.get $$39) - ) - (local.set $$41 - (i32.load - (local.get $$40) - ) - ) - (local.set $$add$ptr139 - (i32.add - (local.get $$incdec$ptr169269) - (i32.const 4) - ) - ) - (local.set $$incdec$ptr169272 - (local.get $$add$ptr139) - ) - (local.set $$p$0 - (local.get $$38) - ) - (br $label$break$L46) - ) - ) - ) - ) - (local.set $$tobool141 - (i32.eq - (local.get $$l10n$3) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool141) - ) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (if - (local.get $$tobool25) - (block - (local.set $$arglist_current2 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$42 - (local.get $$arglist_current2) - ) - (local.set $$43 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded11 - (local.get $$43) - ) - (local.set $$expanded10 - (i32.sub - (local.get $$expanded11) - (i32.const 1) - ) - ) - (local.set $$44 - (i32.add - (local.get $$42) - (local.get $$expanded10) - ) - ) - (local.set $$45 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded15 - (local.get $$45) - ) - (local.set $$expanded14 - (i32.sub - (local.get $$expanded15) - (i32.const 1) - ) - ) - (local.set $$expanded13 - (i32.xor - (local.get $$expanded14) - (i32.const -1) - ) - ) - (local.set $$46 - (i32.and - (local.get $$44) - (local.get $$expanded13) - ) - ) - (local.set $$47 - (local.get $$46) - ) - (local.set $$48 - (i32.load - (local.get $$47) - ) - ) - (local.set $$arglist_next3 - (i32.add - (local.get $$47) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next3) - ) - (local.set $$incdec$ptr169272 - (local.get $$arrayidx119) - ) - (local.set $$p$0 - (local.get $$48) - ) - ) - (block - (local.set $$incdec$ptr169272 - (local.get $$arrayidx119) - ) - (local.set $$p$0 - (i32.const 0) - ) - ) - ) - ) - (block - (local.set $$incdec$ptr169272 - (local.get $$incdec$ptr169269) - ) - (local.set $$p$0 - (i32.const -1) - ) - ) - ) - ) - (local.set $$incdec$ptr169271 - (local.get $$incdec$ptr169272) - ) - (local.set $$st$0 - (i32.const 0) - ) - (loop $while-in13 - (block $while-out12 - (local.set $$51 - (i32.load8_s - (local.get $$incdec$ptr169271) - ) - ) - (local.set $$conv163 - (i32.shr_s - (i32.shl - (local.get $$51) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$sub164 - (i32.add - (local.get $$conv163) - (i32.const -65) - ) - ) - (local.set $$cmp165 - (i32.gt_u - (local.get $$sub164) - (i32.const 57) - ) - ) - (if - (local.get $$cmp165) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (local.set $$incdec$ptr169 - (i32.add - (local.get $$incdec$ptr169271) - (i32.const 1) - ) - ) - (local.set $$arrayidx173 - (i32.add - (i32.add - (i32.const 3611) - (i32.mul - (local.get $$st$0) - (i32.const 58) - ) - ) - (local.get $$sub164) - ) - ) - (local.set $$52 - (i32.load8_s - (local.get $$arrayidx173) - ) - ) - (local.set $$conv174 - (i32.and - (local.get $$52) - (i32.const 255) - ) - ) - (local.set $$sub175 - (i32.add - (local.get $$conv174) - (i32.const -1) - ) - ) - (local.set $$cmp176 - (i32.lt_u - (local.get $$sub175) - (i32.const 8) - ) - ) - (if - (local.get $$cmp176) - (block - (local.set $$incdec$ptr169271 - (local.get $$incdec$ptr169) - ) - (local.set $$st$0 - (local.get $$conv174) - ) - ) - (block - (local.set $$$lcssa - (local.get $$52) - ) - (local.set $$conv174$lcssa - (local.get $$conv174) - ) - (local.set $$incdec$ptr169$lcssa - (local.get $$incdec$ptr169) - ) - (local.set $$incdec$ptr169271$lcssa414 - (local.get $$incdec$ptr169271) - ) - (local.set $$st$0$lcssa415 - (local.get $$st$0) - ) - (br $while-out12) - ) - ) - (br $while-in13) - ) - ) - (local.set $$tobool178 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$$lcssa) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 0) - ) - ) - (if - (local.get $$tobool178) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (local.set $$cmp181 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$$lcssa) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 19) - ) - ) - (local.set $$cmp184 - (i32.gt_s - (local.get $$argpos$0) - (i32.const -1) - ) - ) - (block $do-once14 - (if - (local.get $$cmp181) - (if - (local.get $$cmp184) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L1) - ) - (local.set $label - (i32.const 52) - ) - ) - (block - (if - (local.get $$cmp184) - (block - (local.set $$arrayidx192 - (i32.add - (local.get $$nl_type) - (i32.shl - (local.get $$argpos$0) - (i32.const 2) - ) - ) - ) - (i32.store - (local.get $$arrayidx192) - (local.get $$conv174$lcssa) - ) - (local.set $$53 - (i32.add - (local.get $$nl_arg) - (i32.shl - (local.get $$argpos$0) - (i32.const 3) - ) - ) - ) - (local.set $$54 - (local.get $$53) - ) - (local.set $$55 - (local.get $$54) - ) - (local.set $$56 - (i32.load - (local.get $$55) - ) - ) - (local.set $$57 - (i32.add - (local.get $$54) - (i32.const 4) - ) - ) - (local.set $$58 - (local.get $$57) - ) - (local.set $$59 - (i32.load - (local.get $$58) - ) - ) - (local.set $$60 - (local.get $$arg) - ) - (local.set $$61 - (local.get $$60) - ) - (i32.store - (local.get $$61) - (local.get $$56) - ) - (local.set $$62 - (i32.add - (local.get $$60) - (i32.const 4) - ) - ) - (local.set $$63 - (local.get $$62) - ) - (i32.store - (local.get $$63) - (local.get $$59) - ) - (local.set $label - (i32.const 52) - ) - (br $do-once14) - ) - ) - (if - (i32.eqz - (local.get $$tobool25) - ) - (block - (local.set $$retval$0 - (i32.const 0) - ) - (br $label$break$L1) - ) - ) - (call $_pop_arg_336 - (local.get $$arg) - (local.get $$conv174$lcssa) - (local.get $$ap) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 52) - ) - (block - (local.set $label - (i32.const 0) - ) - (if - (i32.eqz - (local.get $$tobool25) - ) - (block - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - ) - ) - ) - ) - (local.set $$64 - (i32.load8_s - (local.get $$incdec$ptr169271$lcssa414) - ) - ) - (local.set $$conv207 - (i32.shr_s - (i32.shl - (local.get $$64) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$tobool208 - (i32.ne - (local.get $$st$0$lcssa415) - (i32.const 0) - ) - ) - (local.set $$and210 - (i32.and - (local.get $$conv207) - (i32.const 15) - ) - ) - (local.set $$cmp211 - (i32.eq - (local.get $$and210) - (i32.const 3) - ) - ) - (local.set $$or$cond192 - (i32.and - (local.get $$tobool208) - (local.get $$cmp211) - ) - ) - (local.set $$and214 - (i32.and - (local.get $$conv207) - (i32.const -33) - ) - ) - (local.set $$t$0 - (if (result i32) - (local.get $$or$cond192) - (local.get $$and214) - (local.get $$conv207) - ) - ) - (local.set $$and216 - (i32.and - (local.get $$fl$1) - (i32.const 8192) - ) - ) - (local.set $$tobool217 - (i32.eq - (local.get $$and216) - (i32.const 0) - ) - ) - (local.set $$and219 - (i32.and - (local.get $$fl$1) - (i32.const -65537) - ) - ) - (local.set $$fl$1$and219 - (if (result i32) - (local.get $$tobool217) - (local.get $$fl$1) - (local.get $$and219) - ) - ) - (block $label$break$L75 - (block $switch17 - (block $switch-default120 - (block $switch-case119 - (block $switch-case48 - (block $switch-case47 - (block $switch-case46 - (block $switch-case45 - (block $switch-case44 - (block $switch-case43 - (block $switch-case42 - (block $switch-case41 - (block $switch-case40 - (block $switch-case39 - (block $switch-case38 - (block $switch-case37 - (block $switch-case36 - (block $switch-case35 - (block $switch-case34 - (block $switch-case33 - (block $switch-case30 - (block $switch-case29 - (block $switch-case28 - (block $switch-case27 - (br_table $switch-case42 $switch-default120 $switch-case40 $switch-default120 $switch-case45 $switch-case44 $switch-case43 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case41 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case29 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case46 $switch-default120 $switch-case37 $switch-case35 $switch-case119 $switch-case48 $switch-case47 $switch-default120 $switch-case34 $switch-default120 $switch-default120 $switch-default120 $switch-case38 $switch-case27 $switch-case33 $switch-case28 $switch-default120 $switch-default120 $switch-case39 $switch-default120 $switch-case36 $switch-default120 $switch-default120 $switch-case30 $switch-default120 - (i32.sub - (local.get $$t$0) - (i32.const 65) - ) - ) - ) - (block - (block $switch18 - (block $switch-default26 - (block $switch-case25 - (block $switch-case24 - (block $switch-case23 - (block $switch-case22 - (block $switch-case21 - (block $switch-case20 - (block $switch-case19 - (br_table $switch-case19 $switch-case20 $switch-case21 $switch-case22 $switch-case23 $switch-default26 $switch-case24 $switch-case25 $switch-default26 - (i32.sub - (local.get $$st$0$lcssa415) - (i32.const 0) - ) - ) - ) - (block - (local.set $$71 - (i32.load - (local.get $$arg) - ) - ) - (i32.store - (local.get $$71) - (local.get $$cnt$1) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch18) - ) - ) - (block - (local.set $$72 - (i32.load - (local.get $$arg) - ) - ) - (i32.store - (local.get $$72) - (local.get $$cnt$1) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch18) - ) - ) - (block - (local.set $$73 - (i32.lt_s - (local.get $$cnt$1) - (i32.const 0) - ) - ) - (local.set $$74 - (i32.shr_s - (i32.shl - (local.get $$73) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$75 - (i32.load - (local.get $$arg) - ) - ) - (local.set $$76 - (local.get $$75) - ) - (local.set $$77 - (local.get $$76) - ) - (i32.store - (local.get $$77) - (local.get $$cnt$1) - ) - (local.set $$78 - (i32.add - (local.get $$76) - (i32.const 4) - ) - ) - (local.set $$79 - (local.get $$78) - ) - (i32.store - (local.get $$79) - (local.get $$74) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch18) - ) - ) - (block - (local.set $$conv229 - (i32.and - (local.get $$cnt$1) - (i32.const 65535) - ) - ) - (local.set $$80 - (i32.load - (local.get $$arg) - ) - ) - (i32.store16 - (local.get $$80) - (local.get $$conv229) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch18) - ) - ) - (block - (local.set $$conv232 - (i32.and - (local.get $$cnt$1) - (i32.const 255) - ) - ) - (local.set $$81 - (i32.load - (local.get $$arg) - ) - ) - (i32.store8 - (local.get $$81) - (local.get $$conv232) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch18) - ) - ) - (block - (local.set $$82 - (i32.load - (local.get $$arg) - ) - ) - (i32.store - (local.get $$82) - (local.get $$cnt$1) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch18) - ) - ) - (block - (local.set $$83 - (i32.lt_s - (local.get $$cnt$1) - (i32.const 0) - ) - ) - (local.set $$84 - (i32.shr_s - (i32.shl - (local.get $$83) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$85 - (i32.load - (local.get $$arg) - ) - ) - (local.set $$86 - (local.get $$85) - ) - (local.set $$87 - (local.get $$86) - ) - (i32.store - (local.get $$87) - (local.get $$cnt$1) - ) - (local.set $$88 - (i32.add - (local.get $$86) - (i32.const 4) - ) - ) - (local.set $$89 - (local.get $$88) - ) - (i32.store - (local.get $$89) - (local.get $$84) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch18) - ) - ) - (block - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$sub$ptr$sub) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - ) - ) - (br $switch17) - ) - ) - (block - (local.set $$cmp240 - (i32.gt_u - (local.get $$p$0) - (i32.const 8) - ) - ) - (local.set $$cond245 - (if (result i32) - (local.get $$cmp240) - (local.get $$p$0) - (i32.const 8) - ) - ) - (local.set $$or246 - (i32.or - (local.get $$fl$1$and219) - (i32.const 8) - ) - ) - (local.set $$fl$3 - (local.get $$or246) - ) - (local.set $$p$1 - (local.get $$cond245) - ) - (local.set $$t$1 - (i32.const 120) - ) - (local.set $label - (i32.const 64) - ) - (br $switch17) - ) - ) - (nop) - ) - (block - (local.set $$fl$3 - (local.get $$fl$1$and219) - ) - (local.set $$p$1 - (local.get $$p$0) - ) - (local.set $$t$1 - (local.get $$t$0) - ) - (local.set $label - (i32.const 64) - ) - (br $switch17) - ) - ) - (block - (local.set $$116 - (local.get $$arg) - ) - (local.set $$117 - (local.get $$116) - ) - (local.set $$118 - (i32.load - (local.get $$117) - ) - ) - (local.set $$119 - (i32.add - (local.get $$116) - (i32.const 4) - ) - ) - (local.set $$120 - (local.get $$119) - ) - (local.set $$121 - (i32.load - (local.get $$120) - ) - ) - (local.set $$122 - (i32.eq - (local.get $$118) - (i32.const 0) - ) - ) - (local.set $$123 - (i32.eq - (local.get $$121) - (i32.const 0) - ) - ) - (local.set $$124 - (i32.and - (local.get $$122) - (local.get $$123) - ) - ) - (if - (local.get $$124) - (local.set $$s$addr$0$lcssa$i$229 - (local.get $$add$ptr205) - ) - (block - (local.set $$126 - (local.get $$118) - ) - (local.set $$129 - (local.get $$121) - ) - (local.set $$s$addr$06$i$221 - (local.get $$add$ptr205) - ) - (loop $while-in32 - (block $while-out31 - (local.set $$125 - (i32.and - (local.get $$126) - (i32.const 7) - ) - ) - (local.set $$127 - (i32.or - (local.get $$125) - (i32.const 48) - ) - ) - (local.set $$128 - (i32.and - (local.get $$127) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr$i$225 - (i32.add - (local.get $$s$addr$06$i$221) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr$i$225) - (local.get $$128) - ) - (local.set $$130 - (call $_bitshift64Lshr - (local.get $$126) - (local.get $$129) - (i32.const 3) - ) - ) - (local.set $$131 - (global.get $tempRet0) - ) - (local.set $$132 - (i32.eq - (local.get $$130) - (i32.const 0) - ) - ) - (local.set $$133 - (i32.eq - (local.get $$131) - (i32.const 0) - ) - ) - (local.set $$134 - (i32.and - (local.get $$132) - (local.get $$133) - ) - ) - (if - (local.get $$134) - (block - (local.set $$s$addr$0$lcssa$i$229 - (local.get $$incdec$ptr$i$225) - ) - (br $while-out31) - ) - (block - (local.set $$126 - (local.get $$130) - ) - (local.set $$129 - (local.get $$131) - ) - (local.set $$s$addr$06$i$221 - (local.get $$incdec$ptr$i$225) - ) - ) - ) - (br $while-in32) - ) - ) - ) - ) - (local.set $$and263 - (i32.and - (local.get $$fl$1$and219) - (i32.const 8) - ) - ) - (local.set $$tobool264 - (i32.eq - (local.get $$and263) - (i32.const 0) - ) - ) - (if - (local.get $$tobool264) - (block - (local.set $$a$0 - (local.get $$s$addr$0$lcssa$i$229) - ) - (local.set $$fl$4 - (local.get $$fl$1$and219) - ) - (local.set $$p$2 - (local.get $$p$0) - ) - (local.set $$pl$1 - (i32.const 0) - ) - (local.set $$prefix$1 - (i32.const 4091) - ) - (local.set $label - (i32.const 77) - ) - ) - (block - (local.set $$sub$ptr$rhs$cast267 - (local.get $$s$addr$0$lcssa$i$229) - ) - (local.set $$sub$ptr$sub268 - (i32.sub - (local.get $$sub$ptr$lhs$cast317) - (local.get $$sub$ptr$rhs$cast267) - ) - ) - (local.set $$add269 - (i32.add - (local.get $$sub$ptr$sub268) - (i32.const 1) - ) - ) - (local.set $$cmp270 - (i32.lt_s - (local.get $$p$0) - (local.get $$add269) - ) - ) - (local.set $$add269$p$0 - (if (result i32) - (local.get $$cmp270) - (local.get $$add269) - (local.get $$p$0) - ) - ) - (local.set $$a$0 - (local.get $$s$addr$0$lcssa$i$229) - ) - (local.set $$fl$4 - (local.get $$fl$1$and219) - ) - (local.set $$p$2 - (local.get $$add269$p$0) - ) - (local.set $$pl$1 - (i32.const 0) - ) - (local.set $$prefix$1 - (i32.const 4091) - ) - (local.set $label - (i32.const 77) - ) - ) - ) - (br $switch17) - ) - ) - (nop) - ) - (block - (local.set $$135 - (local.get $$arg) - ) - (local.set $$136 - (local.get $$135) - ) - (local.set $$137 - (i32.load - (local.get $$136) - ) - ) - (local.set $$138 - (i32.add - (local.get $$135) - (i32.const 4) - ) - ) - (local.set $$139 - (local.get $$138) - ) - (local.set $$140 - (i32.load - (local.get $$139) - ) - ) - (local.set $$141 - (i32.lt_s - (local.get $$140) - (i32.const 0) - ) - ) - (if - (local.get $$141) - (block - (local.set $$142 - (call $_i64Subtract - (i32.const 0) - (i32.const 0) - (local.get $$137) - (local.get $$140) - ) - ) - (local.set $$143 - (global.get $tempRet0) - ) - (local.set $$144 - (local.get $$arg) - ) - (local.set $$145 - (local.get $$144) - ) - (i32.store - (local.get $$145) - (local.get $$142) - ) - (local.set $$146 - (i32.add - (local.get $$144) - (i32.const 4) - ) - ) - (local.set $$147 - (local.get $$146) - ) - (i32.store - (local.get $$147) - (local.get $$143) - ) - (local.set $$148 - (local.get $$142) - ) - (local.set $$149 - (local.get $$143) - ) - (local.set $$pl$0 - (i32.const 1) - ) - (local.set $$prefix$0 - (i32.const 4091) - ) - (local.set $label - (i32.const 76) - ) - (br $label$break$L75) - ) - ) - (local.set $$and289 - (i32.and - (local.get $$fl$1$and219) - (i32.const 2048) - ) - ) - (local.set $$tobool290 - (i32.eq - (local.get $$and289) - (i32.const 0) - ) - ) - (if - (local.get $$tobool290) - (block - (local.set $$and294 - (i32.and - (local.get $$fl$1$and219) - (i32.const 1) - ) - ) - (local.set $$tobool295 - (i32.eq - (local.get $$and294) - (i32.const 0) - ) - ) - (local.set $$$ - (if (result i32) - (local.get $$tobool295) - (i32.const 4091) - (i32.const 4093) - ) - ) - (local.set $$148 - (local.get $$137) - ) - (local.set $$149 - (local.get $$140) - ) - (local.set $$pl$0 - (local.get $$and294) - ) - (local.set $$prefix$0 - (local.get $$$) - ) - (local.set $label - (i32.const 76) - ) - ) - (block - (local.set $$148 - (local.get $$137) - ) - (local.set $$149 - (local.get $$140) - ) - (local.set $$pl$0 - (i32.const 1) - ) - (local.set $$prefix$0 - (i32.const 4092) - ) - (local.set $label - (i32.const 76) - ) - ) - ) - (br $switch17) - ) - ) - (block - (local.set $$65 - (local.get $$arg) - ) - (local.set $$66 - (local.get $$65) - ) - (local.set $$67 - (i32.load - (local.get $$66) - ) - ) - (local.set $$68 - (i32.add - (local.get $$65) - (i32.const 4) - ) - ) - (local.set $$69 - (local.get $$68) - ) - (local.set $$70 - (i32.load - (local.get $$69) - ) - ) - (local.set $$148 - (local.get $$67) - ) - (local.set $$149 - (local.get $$70) - ) - (local.set $$pl$0 - (i32.const 0) - ) - (local.set $$prefix$0 - (i32.const 4091) - ) - (local.set $label - (i32.const 76) - ) - (br $switch17) - ) - ) - (block - (local.set $$161 - (local.get $$arg) - ) - (local.set $$162 - (local.get $$161) - ) - (local.set $$163 - (i32.load - (local.get $$162) - ) - ) - (local.set $$164 - (i32.add - (local.get $$161) - (i32.const 4) - ) - ) - (local.set $$165 - (local.get $$164) - ) - (local.set $$166 - (i32.load - (local.get $$165) - ) - ) - (local.set $$167 - (i32.and - (local.get $$163) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $$add$ptr340) - (local.get $$167) - ) - (local.set $$a$2 - (local.get $$add$ptr340) - ) - (local.set $$fl$6 - (local.get $$and219) - ) - (local.set $$p$5 - (i32.const 1) - ) - (local.set $$pl$2 - (i32.const 0) - ) - (local.set $$prefix$2 - (i32.const 4091) - ) - (local.set $$z$2 - (local.get $$add$ptr205) - ) - (br $switch17) - ) - ) - (block - (local.set $$call344 - (call $___errno_location) - ) - (local.set $$168 - (i32.load - (local.get $$call344) - ) - ) - (local.set $$call345 - (call $_strerror - (local.get $$168) - ) - ) - (local.set $$a$1 - (local.get $$call345) - ) - (local.set $label - (i32.const 82) - ) - (br $switch17) - ) - ) - (block - (local.set $$169 - (i32.load - (local.get $$arg) - ) - ) - (local.set $$tobool349 - (i32.ne - (local.get $$169) - (i32.const 0) - ) - ) - (local.set $$cond354 - (if (result i32) - (local.get $$tobool349) - (local.get $$169) - (i32.const 4101) - ) - ) - (local.set $$a$1 - (local.get $$cond354) - ) - (local.set $label - (i32.const 82) - ) - (br $switch17) - ) - ) - (block - (local.set $$170 - (local.get $$arg) - ) - (local.set $$171 - (local.get $$170) - ) - (local.set $$172 - (i32.load - (local.get $$171) - ) - ) - (local.set $$173 - (i32.add - (local.get $$170) - (i32.const 4) - ) - ) - (local.set $$174 - (local.get $$173) - ) - (local.set $$175 - (i32.load - (local.get $$174) - ) - ) - (i32.store - (local.get $$wc) - (local.get $$172) - ) - (i32.store - (local.get $$arrayidx370) - (i32.const 0) - ) - (i32.store - (local.get $$arg) - (local.get $$wc) - ) - (local.set $$p$4365 - (i32.const -1) - ) - (local.set $label - (i32.const 86) - ) - (br $switch17) - ) - ) - (block - (local.set $$cmp377$314 - (i32.eq - (local.get $$p$0) - (i32.const 0) - ) - ) - (if - (local.get $$cmp377$314) - (block - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (i32.const 0) - (local.get $$fl$1$and219) - ) - (local.set $$i$0$lcssa368 - (i32.const 0) - ) - (local.set $label - (i32.const 98) - ) - ) - (block - (local.set $$p$4365 - (local.get $$p$0) - ) - (local.set $label - (i32.const 86) - ) - ) - ) - (br $switch17) - ) - ) - (nop) - ) - (nop) - ) - (nop) - ) - (nop) - ) - (nop) - ) - (nop) - ) - (nop) - ) - (block - (local.set $$181 - (f64.load - (local.get $$arg) - ) - ) - (i32.store - (local.get $$e2$i) - (i32.const 0) - ) - (f64.store - (global.get $tempDoublePtr) - (local.get $$181) - ) - (local.set $$182 - (i32.load - (global.get $tempDoublePtr) - ) - ) - (local.set $$183 - (i32.load - (i32.add - (global.get $tempDoublePtr) - (i32.const 4) - ) - ) - ) - (local.set $$184 - (i32.lt_s - (local.get $$183) - (i32.const 0) - ) - ) - (if - (local.get $$184) - (block - (local.set $$sub$i - (f64.neg - (local.get $$181) - ) - ) - (local.set $$pl$0$i - (i32.const 1) - ) - (local.set $$prefix$0$i - (i32.const 4108) - ) - (local.set $$y$addr$0$i - (local.get $$sub$i) - ) - ) - (block - (local.set $$and$i$238 - (i32.and - (local.get $$fl$1$and219) - (i32.const 2048) - ) - ) - (local.set $$tobool9$i - (i32.eq - (local.get $$and$i$238) - (i32.const 0) - ) - ) - (if - (local.get $$tobool9$i) - (block - (local.set $$and12$i - (i32.and - (local.get $$fl$1$and219) - (i32.const 1) - ) - ) - (local.set $$tobool13$i - (i32.eq - (local.get $$and12$i) - (i32.const 0) - ) - ) - (local.set $$$$i - (if (result i32) - (local.get $$tobool13$i) - (i32.const 4109) - (i32.const 4114) - ) - ) - (local.set $$pl$0$i - (local.get $$and12$i) - ) - (local.set $$prefix$0$i - (local.get $$$$i) - ) - (local.set $$y$addr$0$i - (local.get $$181) - ) - ) - (block - (local.set $$pl$0$i - (i32.const 1) - ) - (local.set $$prefix$0$i - (i32.const 4111) - ) - (local.set $$y$addr$0$i - (local.get $$181) - ) - ) - ) - ) - ) - (f64.store - (global.get $tempDoublePtr) - (local.get $$y$addr$0$i) - ) - (local.set $$185 - (i32.load - (global.get $tempDoublePtr) - ) - ) - (local.set $$186 - (i32.load - (i32.add - (global.get $tempDoublePtr) - (i32.const 4) - ) - ) - ) - (local.set $$187 - (i32.and - (local.get $$186) - (i32.const 2146435072) - ) - ) - (local.set $$188 - (i32.lt_u - (local.get $$187) - (i32.const 2146435072) - ) - ) - (local.set $$189 - (i32.lt_s - (i32.const 0) - (i32.const 0) - ) - ) - (local.set $$190 - (i32.eq - (local.get $$187) - (i32.const 2146435072) - ) - ) - (local.set $$191 - (i32.and - (local.get $$190) - (local.get $$189) - ) - ) - (local.set $$192 - (i32.or - (local.get $$188) - (local.get $$191) - ) - ) - (block $do-once49 - (if - (local.get $$192) - (block - (local.set $$call55$i - (call $_frexpl - (local.get $$y$addr$0$i) - (local.get $$e2$i) - ) - ) - (local.set $$mul$i$240 - (f64.mul - (local.get $$call55$i) - (f64.const 2) - ) - ) - (local.set $$tobool56$i - (f64.ne - (local.get $$mul$i$240) - (f64.const 0) - ) - ) - (if - (local.get $$tobool56$i) - (block - (local.set $$195 - (i32.load - (local.get $$e2$i) - ) - ) - (local.set $$dec$i - (i32.add - (local.get $$195) - (i32.const -1) - ) - ) - (i32.store - (local.get $$e2$i) - (local.get $$dec$i) - ) - ) - ) - (local.set $$or$i$241 - (i32.or - (local.get $$t$0) - (i32.const 32) - ) - ) - (local.set $$cmp59$i - (i32.eq - (local.get $$or$i$241) - (i32.const 97) - ) - ) - (if - (local.get $$cmp59$i) - (block - (local.set $$and62$i - (i32.and - (local.get $$t$0) - (i32.const 32) - ) - ) - (local.set $$tobool63$i - (i32.eq - (local.get $$and62$i) - (i32.const 0) - ) - ) - (local.set $$add$ptr65$i - (i32.add - (local.get $$prefix$0$i) - (i32.const 9) - ) - ) - (local.set $$prefix$0$add$ptr65$i - (if (result i32) - (local.get $$tobool63$i) - (local.get $$prefix$0$i) - (local.get $$add$ptr65$i) - ) - ) - (local.set $$add67$i - (i32.or - (local.get $$pl$0$i) - (i32.const 2) - ) - ) - (local.set $$196 - (i32.gt_u - (local.get $$p$0) - (i32.const 11) - ) - ) - (local.set $$sub74$i - (i32.sub - (i32.const 12) - (local.get $$p$0) - ) - ) - (local.set $$tobool76552$i - (i32.eq - (local.get $$sub74$i) - (i32.const 0) - ) - ) - (local.set $$tobool76$i - (i32.or - (local.get $$196) - (local.get $$tobool76552$i) - ) - ) - (block $do-once51 - (if - (local.get $$tobool76$i) - (local.set $$y$addr$1$i - (local.get $$mul$i$240) - ) - (block - (local.set $$re$1482$i - (local.get $$sub74$i) - ) - (local.set $$round$0481$i - (f64.const 8) - ) - (loop $while-in54 - (block $while-out53 - (local.set $$dec78$i - (i32.add - (local.get $$re$1482$i) - (i32.const -1) - ) - ) - (local.set $$mul80$i - (f64.mul - (local.get $$round$0481$i) - (f64.const 16) - ) - ) - (local.set $$tobool79$i - (i32.eq - (local.get $$dec78$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool79$i) - (block - (local.set $$mul80$i$lcssa - (local.get $$mul80$i) - ) - (br $while-out53) - ) - (block - (local.set $$re$1482$i - (local.get $$dec78$i) - ) - (local.set $$round$0481$i - (local.get $$mul80$i) - ) - ) - ) - (br $while-in54) - ) - ) - (local.set $$197 - (i32.load8_s - (local.get $$prefix$0$add$ptr65$i) - ) - ) - (local.set $$cmp82$i - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$197) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 45) - ) - ) - (if - (local.get $$cmp82$i) - (block - (local.set $$sub85$i - (f64.neg - (local.get $$mul$i$240) - ) - ) - (local.set $$sub86$i - (f64.sub - (local.get $$sub85$i) - (local.get $$mul80$i$lcssa) - ) - ) - (local.set $$add87$i - (f64.add - (local.get $$mul80$i$lcssa) - (local.get $$sub86$i) - ) - ) - (local.set $$sub88$i - (f64.neg - (local.get $$add87$i) - ) - ) - (local.set $$y$addr$1$i - (local.get $$sub88$i) - ) - (br $do-once51) - ) - (block - (local.set $$add90$i - (f64.add - (local.get $$mul$i$240) - (local.get $$mul80$i$lcssa) - ) - ) - (local.set $$sub91$i - (f64.sub - (local.get $$add90$i) - (local.get $$mul80$i$lcssa) - ) - ) - (local.set $$y$addr$1$i - (local.get $$sub91$i) - ) - (br $do-once51) - ) - ) - ) - ) - ) - (local.set $$198 - (i32.load - (local.get $$e2$i) - ) - ) - (local.set $$cmp94$i - (i32.lt_s - (local.get $$198) - (i32.const 0) - ) - ) - (local.set $$sub97$i - (i32.sub - (i32.const 0) - (local.get $$198) - ) - ) - (local.set $$cond100$i - (if (result i32) - (local.get $$cmp94$i) - (local.get $$sub97$i) - (local.get $$198) - ) - ) - (local.set $$199 - (i32.lt_s - (local.get $$cond100$i) - (i32.const 0) - ) - ) - (local.set $$200 - (i32.shr_s - (i32.shl - (local.get $$199) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$201 - (call $_fmt_u - (local.get $$cond100$i) - (local.get $$200) - (local.get $$arrayidx$i$236) - ) - ) - (local.set $$cmp103$i - (i32.eq - (local.get $$201) - (local.get $$arrayidx$i$236) - ) - ) - (if - (local.get $$cmp103$i) - (block - (i32.store8 - (local.get $$incdec$ptr106$i) - (i32.const 48) - ) - (local.set $$estr$0$i - (local.get $$incdec$ptr106$i) - ) - ) - (local.set $$estr$0$i - (local.get $$201) - ) - ) - (local.set $$202 - (i32.shr_s - (local.get $$198) - (i32.const 31) - ) - ) - (local.set $$203 - (i32.and - (local.get $$202) - (i32.const 2) - ) - ) - (local.set $$204 - (i32.add - (local.get $$203) - (i32.const 43) - ) - ) - (local.set $$conv111$i - (i32.and - (local.get $$204) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr112$i - (i32.add - (local.get $$estr$0$i) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr112$i) - (local.get $$conv111$i) - ) - (local.set $$add113$i - (i32.add - (local.get $$t$0) - (i32.const 15) - ) - ) - (local.set $$conv114$i - (i32.and - (local.get $$add113$i) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr115$i - (i32.add - (local.get $$estr$0$i) - (i32.const -2) - ) - ) - (i32.store8 - (local.get $$incdec$ptr115$i) - (local.get $$conv114$i) - ) - (local.set $$notrhs$i - (i32.lt_s - (local.get $$p$0) - (i32.const 1) - ) - ) - (local.set $$and134$i - (i32.and - (local.get $$fl$1$and219) - (i32.const 8) - ) - ) - (local.set $$tobool135$i - (i32.eq - (local.get $$and134$i) - (i32.const 0) - ) - ) - (local.set $$s$0$i - (local.get $$buf$i) - ) - (local.set $$y$addr$2$i - (local.get $$y$addr$1$i) - ) - (loop $while-in56 - (block $while-out55 - (local.set $$conv116$i - (call $f64-to-int - (local.get $$y$addr$2$i) - ) - ) - (local.set $$arrayidx117$i - (i32.add - (i32.const 4075) - (local.get $$conv116$i) - ) - ) - (local.set $$205 - (i32.load8_s - (local.get $$arrayidx117$i) - ) - ) - (local.set $$conv118$393$i - (i32.and - (local.get $$205) - (i32.const 255) - ) - ) - (local.set $$or120$i - (i32.or - (local.get $$conv118$393$i) - (local.get $$and62$i) - ) - ) - (local.set $$conv121$i - (i32.and - (local.get $$or120$i) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr122$i - (i32.add - (local.get $$s$0$i) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $$s$0$i) - (local.get $$conv121$i) - ) - (local.set $$conv123$i - (f64.convert_i32_s - (local.get $$conv116$i) - ) - ) - (local.set $$sub124$i - (f64.sub - (local.get $$y$addr$2$i) - (local.get $$conv123$i) - ) - ) - (local.set $$mul125$i - (f64.mul - (local.get $$sub124$i) - (f64.const 16) - ) - ) - (local.set $$sub$ptr$lhs$cast$i - (local.get $$incdec$ptr122$i) - ) - (local.set $$sub$ptr$sub$i - (i32.sub - (local.get $$sub$ptr$lhs$cast$i) - (local.get $$sub$ptr$rhs$cast$i) - ) - ) - (local.set $$cmp127$i - (i32.eq - (local.get $$sub$ptr$sub$i) - (i32.const 1) - ) - ) - (block $do-once57 - (if - (local.get $$cmp127$i) - (block - (local.set $$notlhs$i - (f64.eq - (local.get $$mul125$i) - (f64.const 0) - ) - ) - (local.set $$or$cond1$not$i - (i32.and - (local.get $$notrhs$i) - (local.get $$notlhs$i) - ) - ) - (local.set $$or$cond$i - (i32.and - (local.get $$tobool135$i) - (local.get $$or$cond1$not$i) - ) - ) - (if - (local.get $$or$cond$i) - (block - (local.set $$s$1$i - (local.get $$incdec$ptr122$i) - ) - (br $do-once57) - ) - ) - (local.set $$incdec$ptr137$i - (i32.add - (local.get $$s$0$i) - (i32.const 2) - ) - ) - (i32.store8 - (local.get $$incdec$ptr122$i) - (i32.const 46) - ) - (local.set $$s$1$i - (local.get $$incdec$ptr137$i) - ) - ) - (local.set $$s$1$i - (local.get $$incdec$ptr122$i) - ) - ) - ) - (local.set $$tobool139$i - (f64.ne - (local.get $$mul125$i) - (f64.const 0) - ) - ) - (if - (local.get $$tobool139$i) - (block - (local.set $$s$0$i - (local.get $$s$1$i) - ) - (local.set $$y$addr$2$i - (local.get $$mul125$i) - ) - ) - (block - (local.set $$s$1$i$lcssa - (local.get $$s$1$i) - ) - (br $while-out55) - ) - ) - (br $while-in56) - ) - ) - (local.set $$tobool140$i - (i32.ne - (local.get $$p$0) - (i32.const 0) - ) - ) - (local.set $$$pre566$i - (local.get $$s$1$i$lcssa) - ) - (local.set $$sub146$i - (i32.add - (local.get $$sub$ptr$sub145$i) - (local.get $$$pre566$i) - ) - ) - (local.set $$cmp147$i - (i32.lt_s - (local.get $$sub146$i) - (local.get $$p$0) - ) - ) - (local.set $$or$cond384 - (i32.and - (local.get $$tobool140$i) - (local.get $$cmp147$i) - ) - ) - (local.set $$sub$ptr$rhs$cast152$i - (local.get $$incdec$ptr115$i) - ) - (local.set $$add150$i - (i32.add - (local.get $$sub$ptr$sub153$i) - (local.get $$p$0) - ) - ) - (local.set $$add154$i - (i32.sub - (local.get $$add150$i) - (local.get $$sub$ptr$rhs$cast152$i) - ) - ) - (local.set $$sub$ptr$rhs$cast161$i - (local.get $$incdec$ptr115$i) - ) - (local.set $$sub$ptr$sub162$i - (i32.sub - (local.get $$sub$ptr$sub159$i) - (local.get $$sub$ptr$rhs$cast161$i) - ) - ) - (local.set $$add163$i - (i32.add - (local.get $$sub$ptr$sub162$i) - (local.get $$$pre566$i) - ) - ) - (local.set $$l$0$i - (if (result i32) - (local.get $$or$cond384) - (local.get $$add154$i) - (local.get $$add163$i) - ) - ) - (local.set $$add165$i - (i32.add - (local.get $$l$0$i) - (local.get $$add67$i) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$add165$i) - (local.get $$fl$1$and219) - ) - (local.set $$206 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$418$i - (i32.and - (local.get $$206) - (i32.const 32) - ) - ) - (local.set $$tobool$i$419$i - (i32.eq - (local.get $$and$i$418$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$419$i) - (drop - (call $___fwritex - (local.get $$prefix$0$add$ptr65$i) - (local.get $$add67$i) - (local.get $$f) - ) - ) - ) - (local.set $$xor167$i - (i32.xor - (local.get $$fl$1$and219) - (i32.const 65536) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 48) - (local.get $$w$1) - (local.get $$add165$i) - (local.get $$xor167$i) - ) - (local.set $$sub$ptr$sub172$i - (i32.sub - (local.get $$$pre566$i) - (local.get $$sub$ptr$rhs$cast$i) - ) - ) - (local.set $$207 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$424$i - (i32.and - (local.get $$207) - (i32.const 32) - ) - ) - (local.set $$tobool$i$425$i - (i32.eq - (local.get $$and$i$424$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$425$i) - (drop - (call $___fwritex - (local.get $$buf$i) - (local.get $$sub$ptr$sub172$i) - (local.get $$f) - ) - ) - ) - (local.set $$sub$ptr$rhs$cast174$i - (local.get $$incdec$ptr115$i) - ) - (local.set $$sub$ptr$sub175$i - (i32.sub - (local.get $$sub$ptr$lhs$cast160$i) - (local.get $$sub$ptr$rhs$cast174$i) - ) - ) - (local.set $$sum - (i32.add - (local.get $$sub$ptr$sub172$i) - (local.get $$sub$ptr$sub175$i) - ) - ) - (local.set $$sub181$i - (i32.sub - (local.get $$l$0$i) - (local.get $$sum) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 48) - (local.get $$sub181$i) - (i32.const 0) - (i32.const 0) - ) - (local.set $$208 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$430$i - (i32.and - (local.get $$208) - (i32.const 32) - ) - ) - (local.set $$tobool$i$431$i - (i32.eq - (local.get $$and$i$430$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$431$i) - (drop - (call $___fwritex - (local.get $$incdec$ptr115$i) - (local.get $$sub$ptr$sub175$i) - (local.get $$f) - ) - ) - ) - (local.set $$xor186$i - (i32.xor - (local.get $$fl$1$and219) - (i32.const 8192) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$add165$i) - (local.get $$xor186$i) - ) - (local.set $$cmp188$i - (i32.lt_s - (local.get $$add165$i) - (local.get $$w$1) - ) - ) - (local.set $$w$add165$i - (if (result i32) - (local.get $$cmp188$i) - (local.get $$w$1) - (local.get $$add165$i) - ) - ) - (local.set $$retval$0$i - (local.get $$w$add165$i) - ) - (br $do-once49) - ) - ) - (local.set $$cmp196$i - (i32.lt_s - (local.get $$p$0) - (i32.const 0) - ) - ) - (local.set $$$p$i - (if (result i32) - (local.get $$cmp196$i) - (i32.const 6) - (local.get $$p$0) - ) - ) - (if - (local.get $$tobool56$i) - (block - (local.set $$mul202$i - (f64.mul - (local.get $$mul$i$240) - (f64.const 268435456) - ) - ) - (local.set $$209 - (i32.load - (local.get $$e2$i) - ) - ) - (local.set $$sub203$i - (i32.add - (local.get $$209) - (i32.const -28) - ) - ) - (i32.store - (local.get $$e2$i) - (local.get $$sub203$i) - ) - (local.set $$210 - (local.get $$sub203$i) - ) - (local.set $$y$addr$3$i - (local.get $$mul202$i) - ) - ) - (block - (local.set $$$pre564$i - (i32.load - (local.get $$e2$i) - ) - ) - (local.set $$210 - (local.get $$$pre564$i) - ) - (local.set $$y$addr$3$i - (local.get $$mul$i$240) - ) - ) - ) - (local.set $$cmp205$i - (i32.lt_s - (local.get $$210) - (i32.const 0) - ) - ) - (local.set $$arraydecay208$add$ptr213$i - (if (result i32) - (local.get $$cmp205$i) - (local.get $$big$i) - (local.get $$add$ptr213$i) - ) - ) - (local.set $$sub$ptr$rhs$cast345$i - (local.get $$arraydecay208$add$ptr213$i) - ) - (local.set $$y$addr$4$i - (local.get $$y$addr$3$i) - ) - (local.set $$z$0$i - (local.get $$arraydecay208$add$ptr213$i) - ) - (loop $while-in60 - (block $while-out59 - (local.set $$conv216$i - (call $f64-to-int - (local.get $$y$addr$4$i) - ) - ) - (i32.store - (local.get $$z$0$i) - (local.get $$conv216$i) - ) - (local.set $$incdec$ptr217$i - (i32.add - (local.get $$z$0$i) - (i32.const 4) - ) - ) - (local.set $$conv218$i - (f64.convert_i32_u - (local.get $$conv216$i) - ) - ) - (local.set $$sub219$i - (f64.sub - (local.get $$y$addr$4$i) - (local.get $$conv218$i) - ) - ) - (local.set $$mul220$i - (f64.mul - (local.get $$sub219$i) - (f64.const 1e9) - ) - ) - (local.set $$tobool222$i - (f64.ne - (local.get $$mul220$i) - (f64.const 0) - ) - ) - (if - (local.get $$tobool222$i) - (block - (local.set $$y$addr$4$i - (local.get $$mul220$i) - ) - (local.set $$z$0$i - (local.get $$incdec$ptr217$i) - ) - ) - (block - (local.set $$incdec$ptr217$i$lcssa - (local.get $$incdec$ptr217$i) - ) - (br $while-out59) - ) - ) - (br $while-in60) - ) - ) - (local.set $$$pr$i - (i32.load - (local.get $$e2$i) - ) - ) - (local.set $$cmp225$547$i - (i32.gt_s - (local.get $$$pr$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp225$547$i) - (block - (local.set $$211 - (local.get $$$pr$i) - ) - (local.set $$a$1549$i - (local.get $$arraydecay208$add$ptr213$i) - ) - (local.set $$z$1548$i - (local.get $$incdec$ptr217$i$lcssa) - ) - (loop $while-in62 - (block $while-out61 - (local.set $$cmp228$i - (i32.gt_s - (local.get $$211) - (i32.const 29) - ) - ) - (local.set $$cond233$i - (if (result i32) - (local.get $$cmp228$i) - (i32.const 29) - (local.get $$211) - ) - ) - (local.set $$d$0$542$i - (i32.add - (local.get $$z$1548$i) - (i32.const -4) - ) - ) - (local.set $$cmp235$543$i - (i32.lt_u - (local.get $$d$0$542$i) - (local.get $$a$1549$i) - ) - ) - (block $do-once63 - (if - (local.get $$cmp235$543$i) - (local.set $$a$2$ph$i - (local.get $$a$1549$i) - ) - (block - (local.set $$carry$0544$i - (i32.const 0) - ) - (local.set $$d$0545$i - (local.get $$d$0$542$i) - ) - (loop $while-in66 - (block $while-out65 - (local.set $$212 - (i32.load - (local.get $$d$0545$i) - ) - ) - (local.set $$213 - (call $_bitshift64Shl - (local.get $$212) - (i32.const 0) - (local.get $$cond233$i) - ) - ) - (local.set $$214 - (global.get $tempRet0) - ) - (local.set $$215 - (call $_i64Add - (local.get $$213) - (local.get $$214) - (local.get $$carry$0544$i) - (i32.const 0) - ) - ) - (local.set $$216 - (global.get $tempRet0) - ) - (local.set $$217 - (call $___uremdi3 - (local.get $$215) - (local.get $$216) - (i32.const 1000000000) - (i32.const 0) - ) - ) - (local.set $$218 - (global.get $tempRet0) - ) - (i32.store - (local.get $$d$0545$i) - (local.get $$217) - ) - (local.set $$219 - (call $___udivdi3 - (local.get $$215) - (local.get $$216) - (i32.const 1000000000) - (i32.const 0) - ) - ) - (local.set $$220 - (global.get $tempRet0) - ) - (local.set $$d$0$i - (i32.add - (local.get $$d$0545$i) - (i32.const -4) - ) - ) - (local.set $$cmp235$i - (i32.lt_u - (local.get $$d$0$i) - (local.get $$a$1549$i) - ) - ) - (if - (local.get $$cmp235$i) - (block - (local.set $$conv242$i$lcssa - (local.get $$219) - ) - (br $while-out65) - ) - (block - (local.set $$carry$0544$i - (local.get $$219) - ) - (local.set $$d$0545$i - (local.get $$d$0$i) - ) - ) - ) - (br $while-in66) - ) - ) - (local.set $$tobool244$i - (i32.eq - (local.get $$conv242$i$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$tobool244$i) - (block - (local.set $$a$2$ph$i - (local.get $$a$1549$i) - ) - (br $do-once63) - ) - ) - (local.set $$incdec$ptr246$i - (i32.add - (local.get $$a$1549$i) - (i32.const -4) - ) - ) - (i32.store - (local.get $$incdec$ptr246$i) - (local.get $$conv242$i$lcssa) - ) - (local.set $$a$2$ph$i - (local.get $$incdec$ptr246$i) - ) - ) - ) - ) - (local.set $$z$2$i - (local.get $$z$1548$i) - ) - (loop $while-in68 - (block $while-out67 - (local.set $$cmp249$i - (i32.gt_u - (local.get $$z$2$i) - (local.get $$a$2$ph$i) - ) - ) - (if - (i32.eqz - (local.get $$cmp249$i) - ) - (block - (local.set $$z$2$i$lcssa - (local.get $$z$2$i) - ) - (br $while-out67) - ) - ) - (local.set $$arrayidx251$i - (i32.add - (local.get $$z$2$i) - (i32.const -4) - ) - ) - (local.set $$221 - (i32.load - (local.get $$arrayidx251$i) - ) - ) - (local.set $$lnot$i - (i32.eq - (local.get $$221) - (i32.const 0) - ) - ) - (if - (local.get $$lnot$i) - (local.set $$z$2$i - (local.get $$arrayidx251$i) - ) - (block - (local.set $$z$2$i$lcssa - (local.get $$z$2$i) - ) - (br $while-out67) - ) - ) - (br $while-in68) - ) - ) - (local.set $$222 - (i32.load - (local.get $$e2$i) - ) - ) - (local.set $$sub256$i - (i32.sub - (local.get $$222) - (local.get $$cond233$i) - ) - ) - (i32.store - (local.get $$e2$i) - (local.get $$sub256$i) - ) - (local.set $$cmp225$i - (i32.gt_s - (local.get $$sub256$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp225$i) - (block - (local.set $$211 - (local.get $$sub256$i) - ) - (local.set $$a$1549$i - (local.get $$a$2$ph$i) - ) - (local.set $$z$1548$i - (local.get $$z$2$i$lcssa) - ) - ) - (block - (local.set $$$pr477$i - (local.get $$sub256$i) - ) - (local.set $$a$1$lcssa$i - (local.get $$a$2$ph$i) - ) - (local.set $$z$1$lcssa$i - (local.get $$z$2$i$lcssa) - ) - (br $while-out61) - ) - ) - (br $while-in62) - ) - ) - ) - (block - (local.set $$$pr477$i - (local.get $$$pr$i) - ) - (local.set $$a$1$lcssa$i - (local.get $$arraydecay208$add$ptr213$i) - ) - (local.set $$z$1$lcssa$i - (local.get $$incdec$ptr217$i$lcssa) - ) - ) - ) - (local.set $$cmp259$537$i - (i32.lt_s - (local.get $$$pr477$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp259$537$i) - (block - (local.set $$add273$i - (i32.add - (local.get $$$p$i) - (i32.const 25) - ) - ) - (local.set $$div274$i - (i32.and - (call $i32s-div - (local.get $$add273$i) - (i32.const 9) - ) - (i32.const -1) - ) - ) - (local.set $$add275$i - (i32.add - (local.get $$div274$i) - (i32.const 1) - ) - ) - (local.set $$cmp299$i - (i32.eq - (local.get $$or$i$241) - (i32.const 102) - ) - ) - (local.set $$223 - (local.get $$$pr477$i) - ) - (local.set $$a$3539$i - (local.get $$a$1$lcssa$i) - ) - (local.set $$z$3538$i - (local.get $$z$1$lcssa$i) - ) - (loop $while-in70 - (block $while-out69 - (local.set $$sub264$i - (i32.sub - (i32.const 0) - (local.get $$223) - ) - ) - (local.set $$cmp265$i - (i32.gt_s - (local.get $$sub264$i) - (i32.const 9) - ) - ) - (local.set $$cond271$i - (if (result i32) - (local.get $$cmp265$i) - (i32.const 9) - (local.get $$sub264$i) - ) - ) - (local.set $$cmp277$533$i - (i32.lt_u - (local.get $$a$3539$i) - (local.get $$z$3538$i) - ) - ) - (block $do-once71 - (if - (local.get $$cmp277$533$i) - (block - (local.set $$shl280$i - (i32.shl - (i32.const 1) - (local.get $$cond271$i) - ) - ) - (local.set $$sub281$i - (i32.add - (local.get $$shl280$i) - (i32.const -1) - ) - ) - (local.set $$shr285$i - (i32.shr_u - (i32.const 1000000000) - (local.get $$cond271$i) - ) - ) - (local.set $$carry262$0535$i - (i32.const 0) - ) - (local.set $$d$1534$i - (local.get $$a$3539$i) - ) - (loop $while-in74 - (block $while-out73 - (local.set $$225 - (i32.load - (local.get $$d$1534$i) - ) - ) - (local.set $$and282$i - (i32.and - (local.get $$225) - (local.get $$sub281$i) - ) - ) - (local.set $$shr283$i - (i32.shr_u - (local.get $$225) - (local.get $$cond271$i) - ) - ) - (local.set $$add284$i - (i32.add - (local.get $$shr283$i) - (local.get $$carry262$0535$i) - ) - ) - (i32.store - (local.get $$d$1534$i) - (local.get $$add284$i) - ) - (local.set $$mul286$i - (i32.mul - (local.get $$and282$i) - (local.get $$shr285$i) - ) - ) - (local.set $$incdec$ptr288$i - (i32.add - (local.get $$d$1534$i) - (i32.const 4) - ) - ) - (local.set $$cmp277$i - (i32.lt_u - (local.get $$incdec$ptr288$i) - (local.get $$z$3538$i) - ) - ) - (if - (local.get $$cmp277$i) - (block - (local.set $$carry262$0535$i - (local.get $$mul286$i) - ) - (local.set $$d$1534$i - (local.get $$incdec$ptr288$i) - ) - ) - (block - (local.set $$mul286$i$lcssa - (local.get $$mul286$i) - ) - (br $while-out73) - ) - ) - (br $while-in74) - ) - ) - (local.set $$226 - (i32.load - (local.get $$a$3539$i) - ) - ) - (local.set $$tobool290$i - (i32.eq - (local.get $$226) - (i32.const 0) - ) - ) - (local.set $$incdec$ptr292$i - (i32.add - (local.get $$a$3539$i) - (i32.const 4) - ) - ) - (local.set $$incdec$ptr292$a$3$i - (if (result i32) - (local.get $$tobool290$i) - (local.get $$incdec$ptr292$i) - (local.get $$a$3539$i) - ) - ) - (local.set $$tobool294$i - (i32.eq - (local.get $$mul286$i$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$tobool294$i) - (block - (local.set $$incdec$ptr292$a$3573$i - (local.get $$incdec$ptr292$a$3$i) - ) - (local.set $$z$4$i - (local.get $$z$3538$i) - ) - (br $do-once71) - ) - ) - (local.set $$incdec$ptr296$i - (i32.add - (local.get $$z$3538$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$z$3538$i) - (local.get $$mul286$i$lcssa) - ) - (local.set $$incdec$ptr292$a$3573$i - (local.get $$incdec$ptr292$a$3$i) - ) - (local.set $$z$4$i - (local.get $$incdec$ptr296$i) - ) - ) - (block - (local.set $$224 - (i32.load - (local.get $$a$3539$i) - ) - ) - (local.set $$tobool290$569$i - (i32.eq - (local.get $$224) - (i32.const 0) - ) - ) - (local.set $$incdec$ptr292$570$i - (i32.add - (local.get $$a$3539$i) - (i32.const 4) - ) - ) - (local.set $$incdec$ptr292$a$3$571$i - (if (result i32) - (local.get $$tobool290$569$i) - (local.get $$incdec$ptr292$570$i) - (local.get $$a$3539$i) - ) - ) - (local.set $$incdec$ptr292$a$3573$i - (local.get $$incdec$ptr292$a$3$571$i) - ) - (local.set $$z$4$i - (local.get $$z$3538$i) - ) - ) - ) - ) - (local.set $$cond304$i - (if (result i32) - (local.get $$cmp299$i) - (local.get $$arraydecay208$add$ptr213$i) - (local.get $$incdec$ptr292$a$3573$i) - ) - ) - (local.set $$sub$ptr$lhs$cast305$i - (local.get $$z$4$i) - ) - (local.set $$sub$ptr$rhs$cast306$i - (local.get $$cond304$i) - ) - (local.set $$sub$ptr$sub307$i - (i32.sub - (local.get $$sub$ptr$lhs$cast305$i) - (local.get $$sub$ptr$rhs$cast306$i) - ) - ) - (local.set $$sub$ptr$div$i - (i32.shr_s - (local.get $$sub$ptr$sub307$i) - (i32.const 2) - ) - ) - (local.set $$cmp308$i - (i32.gt_s - (local.get $$sub$ptr$div$i) - (local.get $$add275$i) - ) - ) - (local.set $$add$ptr311$i - (i32.add - (local.get $$cond304$i) - (i32.shl - (local.get $$add275$i) - (i32.const 2) - ) - ) - ) - (local.set $$add$ptr311$z$4$i - (if (result i32) - (local.get $$cmp308$i) - (local.get $$add$ptr311$i) - (local.get $$z$4$i) - ) - ) - (local.set $$227 - (i32.load - (local.get $$e2$i) - ) - ) - (local.set $$add313$i - (i32.add - (local.get $$227) - (local.get $$cond271$i) - ) - ) - (i32.store - (local.get $$e2$i) - (local.get $$add313$i) - ) - (local.set $$cmp259$i - (i32.lt_s - (local.get $$add313$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp259$i) - (block - (local.set $$223 - (local.get $$add313$i) - ) - (local.set $$a$3539$i - (local.get $$incdec$ptr292$a$3573$i) - ) - (local.set $$z$3538$i - (local.get $$add$ptr311$z$4$i) - ) - ) - (block - (local.set $$a$3$lcssa$i - (local.get $$incdec$ptr292$a$3573$i) - ) - (local.set $$z$3$lcssa$i - (local.get $$add$ptr311$z$4$i) - ) - (br $while-out69) - ) - ) - (br $while-in70) - ) - ) - ) - (block - (local.set $$a$3$lcssa$i - (local.get $$a$1$lcssa$i) - ) - (local.set $$z$3$lcssa$i - (local.get $$z$1$lcssa$i) - ) - ) - ) - (local.set $$cmp315$i - (i32.lt_u - (local.get $$a$3$lcssa$i) - (local.get $$z$3$lcssa$i) - ) - ) - (block $do-once75 - (if - (local.get $$cmp315$i) - (block - (local.set $$sub$ptr$rhs$cast319$i - (local.get $$a$3$lcssa$i) - ) - (local.set $$sub$ptr$sub320$i - (i32.sub - (local.get $$sub$ptr$rhs$cast345$i) - (local.get $$sub$ptr$rhs$cast319$i) - ) - ) - (local.set $$sub$ptr$div321$i - (i32.shr_s - (local.get $$sub$ptr$sub320$i) - (i32.const 2) - ) - ) - (local.set $$mul322$i - (i32.mul - (local.get $$sub$ptr$div321$i) - (i32.const 9) - ) - ) - (local.set $$228 - (i32.load - (local.get $$a$3$lcssa$i) - ) - ) - (local.set $$cmp324$529$i - (i32.lt_u - (local.get $$228) - (i32.const 10) - ) - ) - (if - (local.get $$cmp324$529$i) - (block - (local.set $$e$1$i - (local.get $$mul322$i) - ) - (br $do-once75) - ) - (block - (local.set $$e$0531$i - (local.get $$mul322$i) - ) - (local.set $$i$0530$i - (i32.const 10) - ) - ) - ) - (loop $while-in78 - (block $while-out77 - (local.set $$mul328$i - (i32.mul - (local.get $$i$0530$i) - (i32.const 10) - ) - ) - (local.set $$inc$i - (i32.add - (local.get $$e$0531$i) - (i32.const 1) - ) - ) - (local.set $$cmp324$i - (i32.lt_u - (local.get $$228) - (local.get $$mul328$i) - ) - ) - (if - (local.get $$cmp324$i) - (block - (local.set $$e$1$i - (local.get $$inc$i) - ) - (br $while-out77) - ) - (block - (local.set $$e$0531$i - (local.get $$inc$i) - ) - (local.set $$i$0530$i - (local.get $$mul328$i) - ) - ) - ) - (br $while-in78) - ) - ) - ) - (local.set $$e$1$i - (i32.const 0) - ) - ) - ) - (local.set $$cmp333$i - (i32.ne - (local.get $$or$i$241) - (i32.const 102) - ) - ) - (local.set $$mul335$i - (if (result i32) - (local.get $$cmp333$i) - (local.get $$e$1$i) - (i32.const 0) - ) - ) - (local.set $$sub336$i - (i32.sub - (local.get $$$p$i) - (local.get $$mul335$i) - ) - ) - (local.set $$cmp338$i - (i32.eq - (local.get $$or$i$241) - (i32.const 103) - ) - ) - (local.set $$tobool341$i - (i32.ne - (local.get $$$p$i) - (i32.const 0) - ) - ) - (local.set $$229 - (i32.and - (local.get $$tobool341$i) - (local.get $$cmp338$i) - ) - ) - (local.set $$land$ext$neg$i - (i32.shr_s - (i32.shl - (local.get $$229) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$sub343$i - (i32.add - (local.get $$sub336$i) - (local.get $$land$ext$neg$i) - ) - ) - (local.set $$sub$ptr$lhs$cast344$i - (local.get $$z$3$lcssa$i) - ) - (local.set $$sub$ptr$sub346$i - (i32.sub - (local.get $$sub$ptr$lhs$cast344$i) - (local.get $$sub$ptr$rhs$cast345$i) - ) - ) - (local.set $$sub$ptr$div347$i - (i32.shr_s - (local.get $$sub$ptr$sub346$i) - (i32.const 2) - ) - ) - (local.set $$230 - (i32.mul - (local.get $$sub$ptr$div347$i) - (i32.const 9) - ) - ) - (local.set $$mul349$i - (i32.add - (local.get $$230) - (i32.const -9) - ) - ) - (local.set $$cmp350$i - (i32.lt_s - (local.get $$sub343$i) - (local.get $$mul349$i) - ) - ) - (if - (local.get $$cmp350$i) - (block - (local.set $$add$ptr354$i - (i32.add - (local.get $$arraydecay208$add$ptr213$i) - (i32.const 4) - ) - ) - (local.set $$add355$i - (i32.add - (local.get $$sub343$i) - (i32.const 9216) - ) - ) - (local.set $$div356$i - (i32.and - (call $i32s-div - (local.get $$add355$i) - (i32.const 9) - ) - (i32.const -1) - ) - ) - (local.set $$sub357$i - (i32.add - (local.get $$div356$i) - (i32.const -1024) - ) - ) - (local.set $$add$ptr358$i - (i32.add - (local.get $$add$ptr354$i) - (i32.shl - (local.get $$sub357$i) - (i32.const 2) - ) - ) - ) - (local.set $$rem360$i - (i32.and - (call $i32s-rem - (local.get $$add355$i) - (i32.const 9) - ) - (i32.const -1) - ) - ) - (local.set $$j$0$524$i - (i32.add - (local.get $$rem360$i) - (i32.const 1) - ) - ) - (local.set $$cmp363$525$i - (i32.lt_s - (local.get $$j$0$524$i) - (i32.const 9) - ) - ) - (if - (local.get $$cmp363$525$i) - (block - (local.set $$i$1526$i - (i32.const 10) - ) - (local.set $$j$0527$i - (local.get $$j$0$524$i) - ) - (loop $while-in80 - (block $while-out79 - (local.set $$mul367$i - (i32.mul - (local.get $$i$1526$i) - (i32.const 10) - ) - ) - (local.set $$j$0$i - (i32.add - (local.get $$j$0527$i) - (i32.const 1) - ) - ) - (local.set $$exitcond$i - (i32.eq - (local.get $$j$0$i) - (i32.const 9) - ) - ) - (if - (local.get $$exitcond$i) - (block - (local.set $$i$1$lcssa$i - (local.get $$mul367$i) - ) - (br $while-out79) - ) - (block - (local.set $$i$1526$i - (local.get $$mul367$i) - ) - (local.set $$j$0527$i - (local.get $$j$0$i) - ) - ) - ) - (br $while-in80) - ) - ) - ) - (local.set $$i$1$lcssa$i - (i32.const 10) - ) - ) - (local.set $$231 - (i32.load - (local.get $$add$ptr358$i) - ) - ) - (local.set $$rem370$i - (i32.and - (call $i32u-rem - (local.get $$231) - (local.get $$i$1$lcssa$i) - ) - (i32.const -1) - ) - ) - (local.set $$tobool371$i - (i32.eq - (local.get $$rem370$i) - (i32.const 0) - ) - ) - (local.set $$add$ptr373$i - (i32.add - (local.get $$add$ptr358$i) - (i32.const 4) - ) - ) - (local.set $$cmp374$i - (i32.eq - (local.get $$add$ptr373$i) - (local.get $$z$3$lcssa$i) - ) - ) - (local.set $$or$cond395$i - (i32.and - (local.get $$cmp374$i) - (local.get $$tobool371$i) - ) - ) - (block $do-once81 - (if - (local.get $$or$cond395$i) - (block - (local.set $$a$8$i - (local.get $$a$3$lcssa$i) - ) - (local.set $$d$4$i - (local.get $$add$ptr358$i) - ) - (local.set $$e$4$i - (local.get $$e$1$i) - ) - ) - (block - (local.set $$div378$i - (i32.and - (call $i32u-div - (local.get $$231) - (local.get $$i$1$lcssa$i) - ) - (i32.const -1) - ) - ) - (local.set $$and379$i - (i32.and - (local.get $$div378$i) - (i32.const 1) - ) - ) - (local.set $$tobool380$i - (i32.eq - (local.get $$and379$i) - (i32.const 0) - ) - ) - (local.set $$$396$i - (if (result f64) - (local.get $$tobool380$i) - (f64.const 9007199254740992) - (f64.const 9007199254740994) - ) - ) - (local.set $$div384$i - (i32.and - (call $i32s-div - (local.get $$i$1$lcssa$i) - (i32.const 2) - ) - (i32.const -1) - ) - ) - (local.set $$cmp385$i - (i32.lt_u - (local.get $$rem370$i) - (local.get $$div384$i) - ) - ) - (if - (local.get $$cmp385$i) - (local.set $$small$0$i - (f64.const 0.5) - ) - (block - (local.set $$cmp390$i - (i32.eq - (local.get $$rem370$i) - (local.get $$div384$i) - ) - ) - (local.set $$or$cond397$i - (i32.and - (local.get $$cmp374$i) - (local.get $$cmp390$i) - ) - ) - (local.set $$$404$i - (if (result f64) - (local.get $$or$cond397$i) - (f64.const 1) - (f64.const 1.5) - ) - ) - (local.set $$small$0$i - (local.get $$$404$i) - ) - ) - ) - (local.set $$tobool400$i - (i32.eq - (local.get $$pl$0$i) - (i32.const 0) - ) - ) - (block $do-once83 - (if - (local.get $$tobool400$i) - (block - (local.set $$round377$1$i - (local.get $$$396$i) - ) - (local.set $$small$1$i - (local.get $$small$0$i) - ) - ) - (block - (local.set $$232 - (i32.load8_s - (local.get $$prefix$0$i) - ) - ) - (local.set $$cmp403$i - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$232) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 45) - ) - ) - (if - (i32.eqz - (local.get $$cmp403$i) - ) - (block - (local.set $$round377$1$i - (local.get $$$396$i) - ) - (local.set $$small$1$i - (local.get $$small$0$i) - ) - (br $do-once83) - ) - ) - (local.set $$mul406$i - (f64.neg - (local.get $$$396$i) - ) - ) - (local.set $$mul407$i - (f64.neg - (local.get $$small$0$i) - ) - ) - (local.set $$round377$1$i - (local.get $$mul406$i) - ) - (local.set $$small$1$i - (local.get $$mul407$i) - ) - ) - ) - ) - (local.set $$sub409$i - (i32.sub - (local.get $$231) - (local.get $$rem370$i) - ) - ) - (i32.store - (local.get $$add$ptr358$i) - (local.get $$sub409$i) - ) - (local.set $$add410$i - (f64.add - (local.get $$round377$1$i) - (local.get $$small$1$i) - ) - ) - (local.set $$cmp411$i - (f64.ne - (local.get $$add410$i) - (local.get $$round377$1$i) - ) - ) - (if - (i32.eqz - (local.get $$cmp411$i) - ) - (block - (local.set $$a$8$i - (local.get $$a$3$lcssa$i) - ) - (local.set $$d$4$i - (local.get $$add$ptr358$i) - ) - (local.set $$e$4$i - (local.get $$e$1$i) - ) - (br $do-once81) - ) - ) - (local.set $$add414$i - (i32.add - (local.get $$sub409$i) - (local.get $$i$1$lcssa$i) - ) - ) - (i32.store - (local.get $$add$ptr358$i) - (local.get $$add414$i) - ) - (local.set $$cmp416$519$i - (i32.gt_u - (local.get $$add414$i) - (i32.const 999999999) - ) - ) - (if - (local.get $$cmp416$519$i) - (block - (local.set $$a$5521$i - (local.get $$a$3$lcssa$i) - ) - (local.set $$d$2520$i - (local.get $$add$ptr358$i) - ) - (loop $while-in86 - (block $while-out85 - (local.set $$incdec$ptr419$i - (i32.add - (local.get $$d$2520$i) - (i32.const -4) - ) - ) - (i32.store - (local.get $$d$2520$i) - (i32.const 0) - ) - (local.set $$cmp420$i - (i32.lt_u - (local.get $$incdec$ptr419$i) - (local.get $$a$5521$i) - ) - ) - (if - (local.get $$cmp420$i) - (block - (local.set $$incdec$ptr423$i - (i32.add - (local.get $$a$5521$i) - (i32.const -4) - ) - ) - (i32.store - (local.get $$incdec$ptr423$i) - (i32.const 0) - ) - (local.set $$a$6$i - (local.get $$incdec$ptr423$i) - ) - ) - (local.set $$a$6$i - (local.get $$a$5521$i) - ) - ) - (local.set $$233 - (i32.load - (local.get $$incdec$ptr419$i) - ) - ) - (local.set $$inc425$i - (i32.add - (local.get $$233) - (i32.const 1) - ) - ) - (i32.store - (local.get $$incdec$ptr419$i) - (local.get $$inc425$i) - ) - (local.set $$cmp416$i - (i32.gt_u - (local.get $$inc425$i) - (i32.const 999999999) - ) - ) - (if - (local.get $$cmp416$i) - (block - (local.set $$a$5521$i - (local.get $$a$6$i) - ) - (local.set $$d$2520$i - (local.get $$incdec$ptr419$i) - ) - ) - (block - (local.set $$a$5$lcssa$i - (local.get $$a$6$i) - ) - (local.set $$d$2$lcssa$i - (local.get $$incdec$ptr419$i) - ) - (br $while-out85) - ) - ) - (br $while-in86) - ) - ) - ) - (block - (local.set $$a$5$lcssa$i - (local.get $$a$3$lcssa$i) - ) - (local.set $$d$2$lcssa$i - (local.get $$add$ptr358$i) - ) - ) - ) - (local.set $$sub$ptr$rhs$cast428$i - (local.get $$a$5$lcssa$i) - ) - (local.set $$sub$ptr$sub429$i - (i32.sub - (local.get $$sub$ptr$rhs$cast345$i) - (local.get $$sub$ptr$rhs$cast428$i) - ) - ) - (local.set $$sub$ptr$div430$i - (i32.shr_s - (local.get $$sub$ptr$sub429$i) - (i32.const 2) - ) - ) - (local.set $$mul431$i - (i32.mul - (local.get $$sub$ptr$div430$i) - (i32.const 9) - ) - ) - (local.set $$234 - (i32.load - (local.get $$a$5$lcssa$i) - ) - ) - (local.set $$cmp433$515$i - (i32.lt_u - (local.get $$234) - (i32.const 10) - ) - ) - (if - (local.get $$cmp433$515$i) - (block - (local.set $$a$8$i - (local.get $$a$5$lcssa$i) - ) - (local.set $$d$4$i - (local.get $$d$2$lcssa$i) - ) - (local.set $$e$4$i - (local.get $$mul431$i) - ) - (br $do-once81) - ) - (block - (local.set $$e$2517$i - (local.get $$mul431$i) - ) - (local.set $$i$2516$i - (i32.const 10) - ) - ) - ) - (loop $while-in88 - (block $while-out87 - (local.set $$mul437$i - (i32.mul - (local.get $$i$2516$i) - (i32.const 10) - ) - ) - (local.set $$inc438$i - (i32.add - (local.get $$e$2517$i) - (i32.const 1) - ) - ) - (local.set $$cmp433$i - (i32.lt_u - (local.get $$234) - (local.get $$mul437$i) - ) - ) - (if - (local.get $$cmp433$i) - (block - (local.set $$a$8$i - (local.get $$a$5$lcssa$i) - ) - (local.set $$d$4$i - (local.get $$d$2$lcssa$i) - ) - (local.set $$e$4$i - (local.get $$inc438$i) - ) - (br $while-out87) - ) - (block - (local.set $$e$2517$i - (local.get $$inc438$i) - ) - (local.set $$i$2516$i - (local.get $$mul437$i) - ) - ) - ) - (br $while-in88) - ) - ) - ) - ) - ) - (local.set $$add$ptr442$i - (i32.add - (local.get $$d$4$i) - (i32.const 4) - ) - ) - (local.set $$cmp443$i - (i32.gt_u - (local.get $$z$3$lcssa$i) - (local.get $$add$ptr442$i) - ) - ) - (local.set $$add$ptr442$z$3$i - (if (result i32) - (local.get $$cmp443$i) - (local.get $$add$ptr442$i) - (local.get $$z$3$lcssa$i) - ) - ) - (local.set $$a$9$ph$i - (local.get $$a$8$i) - ) - (local.set $$e$5$ph$i - (local.get $$e$4$i) - ) - (local.set $$z$7$ph$i - (local.get $$add$ptr442$z$3$i) - ) - ) - (block - (local.set $$a$9$ph$i - (local.get $$a$3$lcssa$i) - ) - (local.set $$e$5$ph$i - (local.get $$e$1$i) - ) - (local.set $$z$7$ph$i - (local.get $$z$3$lcssa$i) - ) - ) - ) - (local.set $$sub626$le$i - (i32.sub - (i32.const 0) - (local.get $$e$5$ph$i) - ) - ) - (local.set $$z$7$i - (local.get $$z$7$ph$i) - ) - (loop $while-in90 - (block $while-out89 - (local.set $$cmp450$i - (i32.gt_u - (local.get $$z$7$i) - (local.get $$a$9$ph$i) - ) - ) - (if - (i32.eqz - (local.get $$cmp450$i) - ) - (block - (local.set $$cmp450$lcssa$i - (i32.const 0) - ) - (local.set $$z$7$i$lcssa - (local.get $$z$7$i) - ) - (br $while-out89) - ) - ) - (local.set $$arrayidx453$i - (i32.add - (local.get $$z$7$i) - (i32.const -4) - ) - ) - (local.set $$235 - (i32.load - (local.get $$arrayidx453$i) - ) - ) - (local.set $$lnot455$i - (i32.eq - (local.get $$235) - (i32.const 0) - ) - ) - (if - (local.get $$lnot455$i) - (local.set $$z$7$i - (local.get $$arrayidx453$i) - ) - (block - (local.set $$cmp450$lcssa$i - (i32.const 1) - ) - (local.set $$z$7$i$lcssa - (local.get $$z$7$i) - ) - (br $while-out89) - ) - ) - (br $while-in90) - ) - ) - (block $do-once91 - (if - (local.get $$cmp338$i) - (block - (local.set $$236 - (i32.and - (local.get $$tobool341$i) - (i32.const 1) - ) - ) - (local.set $$inc468$i - (i32.xor - (local.get $$236) - (i32.const 1) - ) - ) - (local.set $$$p$inc468$i - (i32.add - (local.get $$inc468$i) - (local.get $$$p$i) - ) - ) - (local.set $$cmp470$i - (i32.gt_s - (local.get $$$p$inc468$i) - (local.get $$e$5$ph$i) - ) - ) - (local.set $$cmp473$i - (i32.gt_s - (local.get $$e$5$ph$i) - (i32.const -5) - ) - ) - (local.set $$or$cond2$i - (i32.and - (local.get $$cmp470$i) - (local.get $$cmp473$i) - ) - ) - (if - (local.get $$or$cond2$i) - (block - (local.set $$dec476$i - (i32.add - (local.get $$t$0) - (i32.const -1) - ) - ) - (local.set $$add477$neg$i - (i32.add - (local.get $$$p$inc468$i) - (i32.const -1) - ) - ) - (local.set $$sub478$i - (i32.sub - (local.get $$add477$neg$i) - (local.get $$e$5$ph$i) - ) - ) - (local.set $$p$addr$2$i - (local.get $$sub478$i) - ) - (local.set $$t$addr$0$i - (local.get $$dec476$i) - ) - ) - (block - (local.set $$sub480$i - (i32.add - (local.get $$t$0) - (i32.const -2) - ) - ) - (local.set $$dec481$i - (i32.add - (local.get $$$p$inc468$i) - (i32.const -1) - ) - ) - (local.set $$p$addr$2$i - (local.get $$dec481$i) - ) - (local.set $$t$addr$0$i - (local.get $$sub480$i) - ) - ) - ) - (local.set $$and483$i - (i32.and - (local.get $$fl$1$and219) - (i32.const 8) - ) - ) - (local.set $$tobool484$i - (i32.eq - (local.get $$and483$i) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool484$i) - ) - (block - (local.set $$and610$pre$phi$iZ2D - (local.get $$and483$i) - ) - (local.set $$p$addr$3$i - (local.get $$p$addr$2$i) - ) - (local.set $$t$addr$1$i - (local.get $$t$addr$0$i) - ) - (br $do-once91) - ) - ) - (block $do-once93 - (if - (local.get $$cmp450$lcssa$i) - (block - (local.set $$arrayidx489$i - (i32.add - (local.get $$z$7$i$lcssa) - (i32.const -4) - ) - ) - (local.set $$237 - (i32.load - (local.get $$arrayidx489$i) - ) - ) - (local.set $$tobool490$i - (i32.eq - (local.get $$237) - (i32.const 0) - ) - ) - (if - (local.get $$tobool490$i) - (block - (local.set $$j$2$i - (i32.const 9) - ) - (br $do-once93) - ) - ) - (local.set $$rem494$510$i - (i32.and - (call $i32u-rem - (local.get $$237) - (i32.const 10) - ) - (i32.const -1) - ) - ) - (local.set $$cmp495$511$i - (i32.eq - (local.get $$rem494$510$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp495$511$i) - (block - (local.set $$i$3512$i - (i32.const 10) - ) - (local.set $$j$1513$i - (i32.const 0) - ) - ) - (block - (local.set $$j$2$i - (i32.const 0) - ) - (br $do-once93) - ) - ) - (loop $while-in96 - (block $while-out95 - (local.set $$mul499$i - (i32.mul - (local.get $$i$3512$i) - (i32.const 10) - ) - ) - (local.set $$inc500$i - (i32.add - (local.get $$j$1513$i) - (i32.const 1) - ) - ) - (local.set $$rem494$i - (i32.and - (call $i32u-rem - (local.get $$237) - (local.get $$mul499$i) - ) - (i32.const -1) - ) - ) - (local.set $$cmp495$i - (i32.eq - (local.get $$rem494$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp495$i) - (block - (local.set $$i$3512$i - (local.get $$mul499$i) - ) - (local.set $$j$1513$i - (local.get $$inc500$i) - ) - ) - (block - (local.set $$j$2$i - (local.get $$inc500$i) - ) - (br $while-out95) - ) - ) - (br $while-in96) - ) - ) - ) - (local.set $$j$2$i - (i32.const 9) - ) - ) - ) - (local.set $$or504$i - (i32.or - (local.get $$t$addr$0$i) - (i32.const 32) - ) - ) - (local.set $$cmp505$i - (i32.eq - (local.get $$or504$i) - (i32.const 102) - ) - ) - (local.set $$sub$ptr$lhs$cast508$i - (local.get $$z$7$i$lcssa) - ) - (local.set $$sub$ptr$sub510$i - (i32.sub - (local.get $$sub$ptr$lhs$cast508$i) - (local.get $$sub$ptr$rhs$cast345$i) - ) - ) - (local.set $$sub$ptr$div511$i - (i32.shr_s - (local.get $$sub$ptr$sub510$i) - (i32.const 2) - ) - ) - (local.set $$238 - (i32.mul - (local.get $$sub$ptr$div511$i) - (i32.const 9) - ) - ) - (local.set $$mul513$i - (i32.add - (local.get $$238) - (i32.const -9) - ) - ) - (if - (local.get $$cmp505$i) - (block - (local.set $$sub514$i - (i32.sub - (local.get $$mul513$i) - (local.get $$j$2$i) - ) - ) - (local.set $$cmp515$i - (i32.lt_s - (local.get $$sub514$i) - (i32.const 0) - ) - ) - (local.set $$$sub514$i - (if (result i32) - (local.get $$cmp515$i) - (i32.const 0) - (local.get $$sub514$i) - ) - ) - (local.set $$cmp528$i - (i32.lt_s - (local.get $$p$addr$2$i) - (local.get $$$sub514$i) - ) - ) - (local.set $$p$addr$2$$sub514398$i - (if (result i32) - (local.get $$cmp528$i) - (local.get $$p$addr$2$i) - (local.get $$$sub514$i) - ) - ) - (local.set $$and610$pre$phi$iZ2D - (i32.const 0) - ) - (local.set $$p$addr$3$i - (local.get $$p$addr$2$$sub514398$i) - ) - (local.set $$t$addr$1$i - (local.get $$t$addr$0$i) - ) - (br $do-once91) - ) - (block - (local.set $$add561$i - (i32.add - (local.get $$mul513$i) - (local.get $$e$5$ph$i) - ) - ) - (local.set $$sub562$i - (i32.sub - (local.get $$add561$i) - (local.get $$j$2$i) - ) - ) - (local.set $$cmp563$i - (i32.lt_s - (local.get $$sub562$i) - (i32.const 0) - ) - ) - (local.set $$$sub562$i - (if (result i32) - (local.get $$cmp563$i) - (i32.const 0) - (local.get $$sub562$i) - ) - ) - (local.set $$cmp577$i - (i32.lt_s - (local.get $$p$addr$2$i) - (local.get $$$sub562$i) - ) - ) - (local.set $$p$addr$2$$sub562399$i - (if (result i32) - (local.get $$cmp577$i) - (local.get $$p$addr$2$i) - (local.get $$$sub562$i) - ) - ) - (local.set $$and610$pre$phi$iZ2D - (i32.const 0) - ) - (local.set $$p$addr$3$i - (local.get $$p$addr$2$$sub562399$i) - ) - (local.set $$t$addr$1$i - (local.get $$t$addr$0$i) - ) - (br $do-once91) - ) - ) - ) - (block - (local.set $$$pre567$i - (i32.and - (local.get $$fl$1$and219) - (i32.const 8) - ) - ) - (local.set $$and610$pre$phi$iZ2D - (local.get $$$pre567$i) - ) - (local.set $$p$addr$3$i - (local.get $$$p$i) - ) - (local.set $$t$addr$1$i - (local.get $$t$0) - ) - ) - ) - ) - (local.set $$239 - (i32.or - (local.get $$p$addr$3$i) - (local.get $$and610$pre$phi$iZ2D) - ) - ) - (local.set $$240 - (i32.ne - (local.get $$239) - (i32.const 0) - ) - ) - (local.set $$lor$ext$i - (i32.and - (local.get $$240) - (i32.const 1) - ) - ) - (local.set $$or613$i - (i32.or - (local.get $$t$addr$1$i) - (i32.const 32) - ) - ) - (local.set $$cmp614$i - (i32.eq - (local.get $$or613$i) - (i32.const 102) - ) - ) - (if - (local.get $$cmp614$i) - (block - (local.set $$cmp617$i - (i32.gt_s - (local.get $$e$5$ph$i) - (i32.const 0) - ) - ) - (local.set $$add620$i - (if (result i32) - (local.get $$cmp617$i) - (local.get $$e$5$ph$i) - (i32.const 0) - ) - ) - (local.set $$estr$2$i - (i32.const 0) - ) - (local.set $$sub$ptr$sub650$pn$i - (local.get $$add620$i) - ) - ) - (block - (local.set $$cmp623$i - (i32.lt_s - (local.get $$e$5$ph$i) - (i32.const 0) - ) - ) - (local.set $$cond629$i - (if (result i32) - (local.get $$cmp623$i) - (local.get $$sub626$le$i) - (local.get $$e$5$ph$i) - ) - ) - (local.set $$241 - (i32.lt_s - (local.get $$cond629$i) - (i32.const 0) - ) - ) - (local.set $$242 - (i32.shr_s - (i32.shl - (local.get $$241) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$243 - (call $_fmt_u - (local.get $$cond629$i) - (local.get $$242) - (local.get $$arrayidx$i$236) - ) - ) - (local.set $$sub$ptr$rhs$cast634$504$i - (local.get $$243) - ) - (local.set $$sub$ptr$sub635$505$i - (i32.sub - (local.get $$sub$ptr$lhs$cast160$i) - (local.get $$sub$ptr$rhs$cast634$504$i) - ) - ) - (local.set $$cmp636$506$i - (i32.lt_s - (local.get $$sub$ptr$sub635$505$i) - (i32.const 2) - ) - ) - (if - (local.get $$cmp636$506$i) - (block - (local.set $$estr$1507$i - (local.get $$243) - ) - (loop $while-in98 - (block $while-out97 - (local.set $$incdec$ptr639$i - (i32.add - (local.get $$estr$1507$i) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr639$i) - (i32.const 48) - ) - (local.set $$sub$ptr$rhs$cast634$i - (local.get $$incdec$ptr639$i) - ) - (local.set $$sub$ptr$sub635$i - (i32.sub - (local.get $$sub$ptr$lhs$cast160$i) - (local.get $$sub$ptr$rhs$cast634$i) - ) - ) - (local.set $$cmp636$i - (i32.lt_s - (local.get $$sub$ptr$sub635$i) - (i32.const 2) - ) - ) - (if - (local.get $$cmp636$i) - (local.set $$estr$1507$i - (local.get $$incdec$ptr639$i) - ) - (block - (local.set $$estr$1$lcssa$i - (local.get $$incdec$ptr639$i) - ) - (br $while-out97) - ) - ) - (br $while-in98) - ) - ) - ) - (local.set $$estr$1$lcssa$i - (local.get $$243) - ) - ) - (local.set $$244 - (i32.shr_s - (local.get $$e$5$ph$i) - (i32.const 31) - ) - ) - (local.set $$245 - (i32.and - (local.get $$244) - (i32.const 2) - ) - ) - (local.set $$246 - (i32.add - (local.get $$245) - (i32.const 43) - ) - ) - (local.set $$conv644$i - (i32.and - (local.get $$246) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr645$i - (i32.add - (local.get $$estr$1$lcssa$i) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr645$i) - (local.get $$conv644$i) - ) - (local.set $$conv646$i - (i32.and - (local.get $$t$addr$1$i) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr647$i - (i32.add - (local.get $$estr$1$lcssa$i) - (i32.const -2) - ) - ) - (i32.store8 - (local.get $$incdec$ptr647$i) - (local.get $$conv646$i) - ) - (local.set $$sub$ptr$rhs$cast649$i - (local.get $$incdec$ptr647$i) - ) - (local.set $$sub$ptr$sub650$i - (i32.sub - (local.get $$sub$ptr$lhs$cast160$i) - (local.get $$sub$ptr$rhs$cast649$i) - ) - ) - (local.set $$estr$2$i - (local.get $$incdec$ptr647$i) - ) - (local.set $$sub$ptr$sub650$pn$i - (local.get $$sub$ptr$sub650$i) - ) - ) - ) - (local.set $$add608$i - (i32.add - (local.get $$pl$0$i) - (i32.const 1) - ) - ) - (local.set $$add612$i - (i32.add - (local.get $$add608$i) - (local.get $$p$addr$3$i) - ) - ) - (local.set $$l$1$i - (i32.add - (local.get $$add612$i) - (local.get $$lor$ext$i) - ) - ) - (local.set $$add653$i - (i32.add - (local.get $$l$1$i) - (local.get $$sub$ptr$sub650$pn$i) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$add653$i) - (local.get $$fl$1$and219) - ) - (local.set $$247 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$436$i - (i32.and - (local.get $$247) - (i32.const 32) - ) - ) - (local.set $$tobool$i$437$i - (i32.eq - (local.get $$and$i$436$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$437$i) - (drop - (call $___fwritex - (local.get $$prefix$0$i) - (local.get $$pl$0$i) - (local.get $$f) - ) - ) - ) - (local.set $$xor655$i - (i32.xor - (local.get $$fl$1$and219) - (i32.const 65536) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 48) - (local.get $$w$1) - (local.get $$add653$i) - (local.get $$xor655$i) - ) - (block $do-once99 - (if - (local.get $$cmp614$i) - (block - (local.set $$cmp660$i - (i32.gt_u - (local.get $$a$9$ph$i) - (local.get $$arraydecay208$add$ptr213$i) - ) - ) - (local.set $$r$0$a$9$i - (if (result i32) - (local.get $$cmp660$i) - (local.get $$arraydecay208$add$ptr213$i) - (local.get $$a$9$ph$i) - ) - ) - (local.set $$d$5494$i - (local.get $$r$0$a$9$i) - ) - (loop $while-in102 - (block $while-out101 - (local.set $$248 - (i32.load - (local.get $$d$5494$i) - ) - ) - (local.set $$249 - (call $_fmt_u - (local.get $$248) - (i32.const 0) - (local.get $$add$ptr671$i) - ) - ) - (local.set $$cmp673$i - (i32.eq - (local.get $$d$5494$i) - (local.get $$r$0$a$9$i) - ) - ) - (block $do-once103 - (if - (local.get $$cmp673$i) - (block - (local.set $$cmp686$i - (i32.eq - (local.get $$249) - (local.get $$add$ptr671$i) - ) - ) - (if - (i32.eqz - (local.get $$cmp686$i) - ) - (block - (local.set $$s668$1$i - (local.get $$249) - ) - (br $do-once103) - ) - ) - (i32.store8 - (local.get $$incdec$ptr689$i) - (i32.const 48) - ) - (local.set $$s668$1$i - (local.get $$incdec$ptr689$i) - ) - ) - (block - (local.set $$cmp678$491$i - (i32.gt_u - (local.get $$249) - (local.get $$buf$i) - ) - ) - (if - (local.get $$cmp678$491$i) - (local.set $$s668$0492$i - (local.get $$249) - ) - (block - (local.set $$s668$1$i - (local.get $$249) - ) - (br $do-once103) - ) - ) - (loop $while-in106 - (block $while-out105 - (local.set $$incdec$ptr681$i - (i32.add - (local.get $$s668$0492$i) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr681$i) - (i32.const 48) - ) - (local.set $$cmp678$i - (i32.gt_u - (local.get $$incdec$ptr681$i) - (local.get $$buf$i) - ) - ) - (if - (local.get $$cmp678$i) - (local.set $$s668$0492$i - (local.get $$incdec$ptr681$i) - ) - (block - (local.set $$s668$1$i - (local.get $$incdec$ptr681$i) - ) - (br $while-out105) - ) - ) - (br $while-in106) - ) - ) - ) - ) - ) - (local.set $$250 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$442$i - (i32.and - (local.get $$250) - (i32.const 32) - ) - ) - (local.set $$tobool$i$443$i - (i32.eq - (local.get $$and$i$442$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$443$i) - (block - (local.set $$sub$ptr$rhs$cast695$i - (local.get $$s668$1$i) - ) - (local.set $$sub$ptr$sub696$i - (i32.sub - (local.get $$sub$ptr$lhs$cast694$i) - (local.get $$sub$ptr$rhs$cast695$i) - ) - ) - (drop - (call $___fwritex - (local.get $$s668$1$i) - (local.get $$sub$ptr$sub696$i) - (local.get $$f) - ) - ) - ) - ) - (local.set $$incdec$ptr698$i - (i32.add - (local.get $$d$5494$i) - (i32.const 4) - ) - ) - (local.set $$cmp665$i - (i32.gt_u - (local.get $$incdec$ptr698$i) - (local.get $$arraydecay208$add$ptr213$i) - ) - ) - (if - (local.get $$cmp665$i) - (block - (local.set $$incdec$ptr698$i$lcssa - (local.get $$incdec$ptr698$i) - ) - (br $while-out101) - ) - (local.set $$d$5494$i - (local.get $$incdec$ptr698$i) - ) - ) - (br $while-in102) - ) - ) - (local.set $$251 - (i32.eq - (local.get $$239) - (i32.const 0) - ) - ) - (block $do-once107 - (if - (i32.eqz - (local.get $$251) - ) - (block - (local.set $$252 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$448$i - (i32.and - (local.get $$252) - (i32.const 32) - ) - ) - (local.set $$tobool$i$449$i - (i32.eq - (local.get $$and$i$448$i) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool$i$449$i) - ) - (br $do-once107) - ) - (drop - (call $___fwritex - (i32.const 4143) - (i32.const 1) - (local.get $$f) - ) - ) - ) - ) - ) - (local.set $$cmp707$486$i - (i32.lt_u - (local.get $$incdec$ptr698$i$lcssa) - (local.get $$z$7$i$lcssa) - ) - ) - (local.set $$cmp710$487$i - (i32.gt_s - (local.get $$p$addr$3$i) - (i32.const 0) - ) - ) - (local.set $$253 - (i32.and - (local.get $$cmp710$487$i) - (local.get $$cmp707$486$i) - ) - ) - (if - (local.get $$253) - (block - (local.set $$d$6488$i - (local.get $$incdec$ptr698$i$lcssa) - ) - (local.set $$p$addr$4489$i - (local.get $$p$addr$3$i) - ) - (loop $while-in110 - (block $while-out109 - (local.set $$254 - (i32.load - (local.get $$d$6488$i) - ) - ) - (local.set $$255 - (call $_fmt_u - (local.get $$254) - (i32.const 0) - (local.get $$add$ptr671$i) - ) - ) - (local.set $$cmp722$483$i - (i32.gt_u - (local.get $$255) - (local.get $$buf$i) - ) - ) - (if - (local.get $$cmp722$483$i) - (block - (local.set $$s715$0484$i - (local.get $$255) - ) - (loop $while-in112 - (block $while-out111 - (local.set $$incdec$ptr725$i - (i32.add - (local.get $$s715$0484$i) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr725$i) - (i32.const 48) - ) - (local.set $$cmp722$i - (i32.gt_u - (local.get $$incdec$ptr725$i) - (local.get $$buf$i) - ) - ) - (if - (local.get $$cmp722$i) - (local.set $$s715$0484$i - (local.get $$incdec$ptr725$i) - ) - (block - (local.set $$s715$0$lcssa$i - (local.get $$incdec$ptr725$i) - ) - (br $while-out111) - ) - ) - (br $while-in112) - ) - ) - ) - (local.set $$s715$0$lcssa$i - (local.get $$255) - ) - ) - (local.set $$256 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$454$i - (i32.and - (local.get $$256) - (i32.const 32) - ) - ) - (local.set $$tobool$i$455$i - (i32.eq - (local.get $$and$i$454$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$455$i) - (block - (local.set $$cmp727$i - (i32.gt_s - (local.get $$p$addr$4489$i) - (i32.const 9) - ) - ) - (local.set $$cond732$i - (if (result i32) - (local.get $$cmp727$i) - (i32.const 9) - (local.get $$p$addr$4489$i) - ) - ) - (drop - (call $___fwritex - (local.get $$s715$0$lcssa$i) - (local.get $$cond732$i) - (local.get $$f) - ) - ) - ) - ) - (local.set $$incdec$ptr734$i - (i32.add - (local.get $$d$6488$i) - (i32.const 4) - ) - ) - (local.set $$sub735$i - (i32.add - (local.get $$p$addr$4489$i) - (i32.const -9) - ) - ) - (local.set $$cmp707$i - (i32.lt_u - (local.get $$incdec$ptr734$i) - (local.get $$z$7$i$lcssa) - ) - ) - (local.set $$cmp710$i - (i32.gt_s - (local.get $$p$addr$4489$i) - (i32.const 9) - ) - ) - (local.set $$257 - (i32.and - (local.get $$cmp710$i) - (local.get $$cmp707$i) - ) - ) - (if - (local.get $$257) - (block - (local.set $$d$6488$i - (local.get $$incdec$ptr734$i) - ) - (local.set $$p$addr$4489$i - (local.get $$sub735$i) - ) - ) - (block - (local.set $$p$addr$4$lcssa$i - (local.get $$sub735$i) - ) - (br $while-out109) - ) - ) - (br $while-in110) - ) - ) - ) - (local.set $$p$addr$4$lcssa$i - (local.get $$p$addr$3$i) - ) - ) - (local.set $$add737$i - (i32.add - (local.get $$p$addr$4$lcssa$i) - (i32.const 9) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 48) - (local.get $$add737$i) - (i32.const 9) - (i32.const 0) - ) - ) - (block - (local.set $$add$ptr742$i - (i32.add - (local.get $$a$9$ph$i) - (i32.const 4) - ) - ) - (local.set $$z$7$add$ptr742$i - (if (result i32) - (local.get $$cmp450$lcssa$i) - (local.get $$z$7$i$lcssa) - (local.get $$add$ptr742$i) - ) - ) - (local.set $$cmp748$499$i - (i32.gt_s - (local.get $$p$addr$3$i) - (i32.const -1) - ) - ) - (if - (local.get $$cmp748$499$i) - (block - (local.set $$tobool781$i - (i32.eq - (local.get $$and610$pre$phi$iZ2D) - (i32.const 0) - ) - ) - (local.set $$d$7500$i - (local.get $$a$9$ph$i) - ) - (local.set $$p$addr$5501$i - (local.get $$p$addr$3$i) - ) - (loop $while-in114 - (block $while-out113 - (local.set $$258 - (i32.load - (local.get $$d$7500$i) - ) - ) - (local.set $$259 - (call $_fmt_u - (local.get $$258) - (i32.const 0) - (local.get $$add$ptr671$i) - ) - ) - (local.set $$cmp760$i - (i32.eq - (local.get $$259) - (local.get $$add$ptr671$i) - ) - ) - (if - (local.get $$cmp760$i) - (block - (i32.store8 - (local.get $$incdec$ptr689$i) - (i32.const 48) - ) - (local.set $$s753$0$i - (local.get $$incdec$ptr689$i) - ) - ) - (local.set $$s753$0$i - (local.get $$259) - ) - ) - (local.set $$cmp765$i - (i32.eq - (local.get $$d$7500$i) - (local.get $$a$9$ph$i) - ) - ) - (block $do-once115 - (if - (local.get $$cmp765$i) - (block - (local.set $$incdec$ptr776$i - (i32.add - (local.get $$s753$0$i) - (i32.const 1) - ) - ) - (local.set $$260 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$460$i - (i32.and - (local.get $$260) - (i32.const 32) - ) - ) - (local.set $$tobool$i$461$i - (i32.eq - (local.get $$and$i$460$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$461$i) - (drop - (call $___fwritex - (local.get $$s753$0$i) - (i32.const 1) - (local.get $$f) - ) - ) - ) - (local.set $$cmp777$i - (i32.lt_s - (local.get $$p$addr$5501$i) - (i32.const 1) - ) - ) - (local.set $$or$cond401$i - (i32.and - (local.get $$tobool781$i) - (local.get $$cmp777$i) - ) - ) - (if - (local.get $$or$cond401$i) - (block - (local.set $$s753$2$i - (local.get $$incdec$ptr776$i) - ) - (br $do-once115) - ) - ) - (local.set $$261 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$466$i - (i32.and - (local.get $$261) - (i32.const 32) - ) - ) - (local.set $$tobool$i$467$i - (i32.eq - (local.get $$and$i$466$i) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool$i$467$i) - ) - (block - (local.set $$s753$2$i - (local.get $$incdec$ptr776$i) - ) - (br $do-once115) - ) - ) - (drop - (call $___fwritex - (i32.const 4143) - (i32.const 1) - (local.get $$f) - ) - ) - (local.set $$s753$2$i - (local.get $$incdec$ptr776$i) - ) - ) - (block - (local.set $$cmp770$495$i - (i32.gt_u - (local.get $$s753$0$i) - (local.get $$buf$i) - ) - ) - (if - (local.get $$cmp770$495$i) - (local.set $$s753$1496$i - (local.get $$s753$0$i) - ) - (block - (local.set $$s753$2$i - (local.get $$s753$0$i) - ) - (br $do-once115) - ) - ) - (loop $while-in118 - (block $while-out117 - (local.set $$incdec$ptr773$i - (i32.add - (local.get $$s753$1496$i) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr773$i) - (i32.const 48) - ) - (local.set $$cmp770$i - (i32.gt_u - (local.get $$incdec$ptr773$i) - (local.get $$buf$i) - ) - ) - (if - (local.get $$cmp770$i) - (local.set $$s753$1496$i - (local.get $$incdec$ptr773$i) - ) - (block - (local.set $$s753$2$i - (local.get $$incdec$ptr773$i) - ) - (br $while-out117) - ) - ) - (br $while-in118) - ) - ) - ) - ) - ) - (local.set $$sub$ptr$rhs$cast788$i - (local.get $$s753$2$i) - ) - (local.set $$sub$ptr$sub789$i - (i32.sub - (local.get $$sub$ptr$lhs$cast694$i) - (local.get $$sub$ptr$rhs$cast788$i) - ) - ) - (local.set $$262 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$472$i - (i32.and - (local.get $$262) - (i32.const 32) - ) - ) - (local.set $$tobool$i$473$i - (i32.eq - (local.get $$and$i$472$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$473$i) - (block - (local.set $$cmp790$i - (i32.gt_s - (local.get $$p$addr$5501$i) - (local.get $$sub$ptr$sub789$i) - ) - ) - (local.set $$cond800$i - (if (result i32) - (local.get $$cmp790$i) - (local.get $$sub$ptr$sub789$i) - (local.get $$p$addr$5501$i) - ) - ) - (drop - (call $___fwritex - (local.get $$s753$2$i) - (local.get $$cond800$i) - (local.get $$f) - ) - ) - ) - ) - (local.set $$sub806$i - (i32.sub - (local.get $$p$addr$5501$i) - (local.get $$sub$ptr$sub789$i) - ) - ) - (local.set $$incdec$ptr808$i - (i32.add - (local.get $$d$7500$i) - (i32.const 4) - ) - ) - (local.set $$cmp745$i - (i32.lt_u - (local.get $$incdec$ptr808$i) - (local.get $$z$7$add$ptr742$i) - ) - ) - (local.set $$cmp748$i - (i32.gt_s - (local.get $$sub806$i) - (i32.const -1) - ) - ) - (local.set $$263 - (i32.and - (local.get $$cmp745$i) - (local.get $$cmp748$i) - ) - ) - (if - (local.get $$263) - (block - (local.set $$d$7500$i - (local.get $$incdec$ptr808$i) - ) - (local.set $$p$addr$5501$i - (local.get $$sub806$i) - ) - ) - (block - (local.set $$p$addr$5$lcssa$i - (local.get $$sub806$i) - ) - (br $while-out113) - ) - ) - (br $while-in114) - ) - ) - ) - (local.set $$p$addr$5$lcssa$i - (local.get $$p$addr$3$i) - ) - ) - (local.set $$add810$i - (i32.add - (local.get $$p$addr$5$lcssa$i) - (i32.const 18) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 48) - (local.get $$add810$i) - (i32.const 18) - (i32.const 0) - ) - (local.set $$264 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$i - (i32.and - (local.get $$264) - (i32.const 32) - ) - ) - (local.set $$tobool$i$i - (i32.eq - (local.get $$and$i$i) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$tobool$i$i) - ) - (br $do-once99) - ) - (local.set $$sub$ptr$rhs$cast812$i - (local.get $$estr$2$i) - ) - (local.set $$sub$ptr$sub813$i - (i32.sub - (local.get $$sub$ptr$lhs$cast160$i) - (local.get $$sub$ptr$rhs$cast812$i) - ) - ) - (drop - (call $___fwritex - (local.get $$estr$2$i) - (local.get $$sub$ptr$sub813$i) - (local.get $$f) - ) - ) - ) - ) - ) - (local.set $$xor816$i - (i32.xor - (local.get $$fl$1$and219) - (i32.const 8192) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$add653$i) - (local.get $$xor816$i) - ) - (local.set $$cmp818$i - (i32.lt_s - (local.get $$add653$i) - (local.get $$w$1) - ) - ) - (local.set $$w$add653$i - (if (result i32) - (local.get $$cmp818$i) - (local.get $$w$1) - (local.get $$add653$i) - ) - ) - (local.set $$retval$0$i - (local.get $$w$add653$i) - ) - ) - (block - (local.set $$and36$i - (i32.and - (local.get $$t$0) - (i32.const 32) - ) - ) - (local.set $$tobool37$i - (i32.ne - (local.get $$and36$i) - (i32.const 0) - ) - ) - (local.set $$cond$i - (if (result i32) - (local.get $$tobool37$i) - (i32.const 4127) - (i32.const 4131) - ) - ) - (local.set $$cmp38$i - (i32.or - (f64.ne - (local.get $$y$addr$0$i) - (local.get $$y$addr$0$i) - ) - (f64.ne - (f64.const 0) - (f64.const 0) - ) - ) - ) - (local.set $$cond43$i - (if (result i32) - (local.get $$tobool37$i) - (i32.const 4135) - (i32.const 4139) - ) - ) - (local.set $$pl$1$i - (if (result i32) - (local.get $$cmp38$i) - (i32.const 0) - (local.get $$pl$0$i) - ) - ) - (local.set $$s35$0$i - (if (result i32) - (local.get $$cmp38$i) - (local.get $$cond43$i) - (local.get $$cond$i) - ) - ) - (local.set $$add$i$239 - (i32.add - (local.get $$pl$1$i) - (i32.const 3) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$add$i$239) - (local.get $$and219) - ) - (local.set $$193 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$406$i - (i32.and - (local.get $$193) - (i32.const 32) - ) - ) - (local.set $$tobool$i$407$i - (i32.eq - (local.get $$and$i$406$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$407$i) - (block - (drop - (call $___fwritex - (local.get $$prefix$0$i) - (local.get $$pl$1$i) - (local.get $$f) - ) - ) - (local.set $$$pre$i - (i32.load - (local.get $$f) - ) - ) - (local.set $$194 - (local.get $$$pre$i) - ) - ) - (local.set $$194 - (local.get $$193) - ) - ) - (local.set $$and$i$412$i - (i32.and - (local.get $$194) - (i32.const 32) - ) - ) - (local.set $$tobool$i$413$i - (i32.eq - (local.get $$and$i$412$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$413$i) - (drop - (call $___fwritex - (local.get $$s35$0$i) - (i32.const 3) - (local.get $$f) - ) - ) - ) - (local.set $$xor$i - (i32.xor - (local.get $$fl$1$and219) - (i32.const 8192) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$add$i$239) - (local.get $$xor$i) - ) - (local.set $$cmp48$i - (i32.lt_s - (local.get $$add$i$239) - (local.get $$w$1) - ) - ) - (local.set $$cond53$i - (if (result i32) - (local.get $$cmp48$i) - (local.get $$w$1) - (local.get $$add$i$239) - ) - ) - (local.set $$retval$0$i - (local.get $$cond53$i) - ) - ) - ) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$retval$0$i) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - (br $switch17) - ) - ) - (block - (local.set $$a$2 - (local.get $$incdec$ptr169275) - ) - (local.set $$fl$6 - (local.get $$fl$1$and219) - ) - (local.set $$p$5 - (local.get $$p$0) - ) - (local.set $$pl$2 - (i32.const 0) - ) - (local.set $$prefix$2 - (i32.const 4091) - ) - (local.set $$z$2 - (local.get $$add$ptr205) - ) - ) - ) - ) - (block $label$break$L308 - (if - (i32.eq - (local.get $label) - (i32.const 64) - ) - (block - (local.set $label - (i32.const 0) - ) - (local.set $$90 - (local.get $$arg) - ) - (local.set $$91 - (local.get $$90) - ) - (local.set $$92 - (i32.load - (local.get $$91) - ) - ) - (local.set $$93 - (i32.add - (local.get $$90) - (i32.const 4) - ) - ) - (local.set $$94 - (local.get $$93) - ) - (local.set $$95 - (i32.load - (local.get $$94) - ) - ) - (local.set $$and249 - (i32.and - (local.get $$t$1) - (i32.const 32) - ) - ) - (local.set $$96 - (i32.eq - (local.get $$92) - (i32.const 0) - ) - ) - (local.set $$97 - (i32.eq - (local.get $$95) - (i32.const 0) - ) - ) - (local.set $$98 - (i32.and - (local.get $$96) - (local.get $$97) - ) - ) - (if - (local.get $$98) - (block - (local.set $$a$0 - (local.get $$add$ptr205) - ) - (local.set $$fl$4 - (local.get $$fl$3) - ) - (local.set $$p$2 - (local.get $$p$1) - ) - (local.set $$pl$1 - (i32.const 0) - ) - (local.set $$prefix$1 - (i32.const 4091) - ) - (local.set $label - (i32.const 77) - ) - ) - (block - (local.set $$101 - (local.get $$95) - ) - (local.set $$99 - (local.get $$92) - ) - (local.set $$s$addr$06$i - (local.get $$add$ptr205) - ) - (loop $while-in123 - (block $while-out122 - (local.set $$idxprom$i - (i32.and - (local.get $$99) - (i32.const 15) - ) - ) - (local.set $$arrayidx$i - (i32.add - (i32.const 4075) - (local.get $$idxprom$i) - ) - ) - (local.set $$100 - (i32.load8_s - (local.get $$arrayidx$i) - ) - ) - (local.set $$conv$4$i$211 - (i32.and - (local.get $$100) - (i32.const 255) - ) - ) - (local.set $$or$i - (i32.or - (local.get $$conv$4$i$211) - (local.get $$and249) - ) - ) - (local.set $$conv1$i - (i32.and - (local.get $$or$i) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr$i$212 - (i32.add - (local.get $$s$addr$06$i) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr$i$212) - (local.get $$conv1$i) - ) - (local.set $$102 - (call $_bitshift64Lshr - (local.get $$99) - (local.get $$101) - (i32.const 4) - ) - ) - (local.set $$103 - (global.get $tempRet0) - ) - (local.set $$104 - (i32.eq - (local.get $$102) - (i32.const 0) - ) - ) - (local.set $$105 - (i32.eq - (local.get $$103) - (i32.const 0) - ) - ) - (local.set $$106 - (i32.and - (local.get $$104) - (local.get $$105) - ) - ) - (if - (local.get $$106) - (block - (local.set $$incdec$ptr$i$212$lcssa - (local.get $$incdec$ptr$i$212) - ) - (br $while-out122) - ) - (block - (local.set $$101 - (local.get $$103) - ) - (local.set $$99 - (local.get $$102) - ) - (local.set $$s$addr$06$i - (local.get $$incdec$ptr$i$212) - ) - ) - ) - (br $while-in123) - ) - ) - (local.set $$107 - (local.get $$arg) - ) - (local.set $$108 - (local.get $$107) - ) - (local.set $$109 - (i32.load - (local.get $$108) - ) - ) - (local.set $$110 - (i32.add - (local.get $$107) - (i32.const 4) - ) - ) - (local.set $$111 - (local.get $$110) - ) - (local.set $$112 - (i32.load - (local.get $$111) - ) - ) - (local.set $$113 - (i32.eq - (local.get $$109) - (i32.const 0) - ) - ) - (local.set $$114 - (i32.eq - (local.get $$112) - (i32.const 0) - ) - ) - (local.set $$115 - (i32.and - (local.get $$113) - (local.get $$114) - ) - ) - (local.set $$and254 - (i32.and - (local.get $$fl$3) - (i32.const 8) - ) - ) - (local.set $$tobool255 - (i32.eq - (local.get $$and254) - (i32.const 0) - ) - ) - (local.set $$or$cond193 - (i32.or - (local.get $$tobool255) - (local.get $$115) - ) - ) - (if - (local.get $$or$cond193) - (block - (local.set $$a$0 - (local.get $$incdec$ptr$i$212$lcssa) - ) - (local.set $$fl$4 - (local.get $$fl$3) - ) - (local.set $$p$2 - (local.get $$p$1) - ) - (local.set $$pl$1 - (i32.const 0) - ) - (local.set $$prefix$1 - (i32.const 4091) - ) - (local.set $label - (i32.const 77) - ) - ) - (block - (local.set $$shr - (i32.shr_s - (local.get $$t$1) - (i32.const 4) - ) - ) - (local.set $$add$ptr257 - (i32.add - (i32.const 4091) - (local.get $$shr) - ) - ) - (local.set $$a$0 - (local.get $$incdec$ptr$i$212$lcssa) - ) - (local.set $$fl$4 - (local.get $$fl$3) - ) - (local.set $$p$2 - (local.get $$p$1) - ) - (local.set $$pl$1 - (i32.const 2) - ) - (local.set $$prefix$1 - (local.get $$add$ptr257) - ) - (local.set $label - (i32.const 77) - ) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 76) - ) - (block - (local.set $label - (i32.const 0) - ) - (local.set $$150 - (call $_fmt_u - (local.get $$148) - (local.get $$149) - (local.get $$add$ptr205) - ) - ) - (local.set $$a$0 - (local.get $$150) - ) - (local.set $$fl$4 - (local.get $$fl$1$and219) - ) - (local.set $$p$2 - (local.get $$p$0) - ) - (local.set $$pl$1 - (local.get $$pl$0) - ) - (local.set $$prefix$1 - (local.get $$prefix$0) - ) - (local.set $label - (i32.const 77) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 82) - ) - (block - (local.set $label - (i32.const 0) - ) - (local.set $$call356 - (call $_memchr - (local.get $$a$1) - (i32.const 0) - (local.get $$p$0) - ) - ) - (local.set $$tobool357 - (i32.eq - (local.get $$call356) - (i32.const 0) - ) - ) - (local.set $$sub$ptr$lhs$cast361 - (local.get $$call356) - ) - (local.set $$sub$ptr$rhs$cast362 - (local.get $$a$1) - ) - (local.set $$sub$ptr$sub363 - (i32.sub - (local.get $$sub$ptr$lhs$cast361) - (local.get $$sub$ptr$rhs$cast362) - ) - ) - (local.set $$add$ptr359 - (i32.add - (local.get $$a$1) - (local.get $$p$0) - ) - ) - (local.set $$z$1 - (if (result i32) - (local.get $$tobool357) - (local.get $$add$ptr359) - (local.get $$call356) - ) - ) - (local.set $$p$3 - (if (result i32) - (local.get $$tobool357) - (local.get $$p$0) - (local.get $$sub$ptr$sub363) - ) - ) - (local.set $$a$2 - (local.get $$a$1) - ) - (local.set $$fl$6 - (local.get $$and219) - ) - (local.set $$p$5 - (local.get $$p$3) - ) - (local.set $$pl$2 - (i32.const 0) - ) - (local.set $$prefix$2 - (i32.const 4091) - ) - (local.set $$z$2 - (local.get $$z$1) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 86) - ) - (block - (local.set $label - (i32.const 0) - ) - (local.set $$176 - (i32.load - (local.get $$arg) - ) - ) - (local.set $$i$0316 - (i32.const 0) - ) - (local.set $$l$1315 - (i32.const 0) - ) - (local.set $$ws$0317 - (local.get $$176) - ) - (loop $while-in125 - (block $while-out124 - (local.set $$177 - (i32.load - (local.get $$ws$0317) - ) - ) - (local.set $$tobool380 - (i32.eq - (local.get $$177) - (i32.const 0) - ) - ) - (if - (local.get $$tobool380) - (block - (local.set $$i$0$lcssa - (local.get $$i$0316) - ) - (local.set $$l$2 - (local.get $$l$1315) - ) - (br $while-out124) - ) - ) - (local.set $$call384 - (call $_wctomb - (local.get $$mb) - (local.get $$177) - ) - ) - (local.set $$cmp385 - (i32.lt_s - (local.get $$call384) - (i32.const 0) - ) - ) - (local.set $$sub389 - (i32.sub - (local.get $$p$4365) - (local.get $$i$0316) - ) - ) - (local.set $$cmp390 - (i32.gt_u - (local.get $$call384) - (local.get $$sub389) - ) - ) - (local.set $$or$cond195 - (i32.or - (local.get $$cmp385) - (local.get $$cmp390) - ) - ) - (if - (local.get $$or$cond195) - (block - (local.set $$i$0$lcssa - (local.get $$i$0316) - ) - (local.set $$l$2 - (local.get $$call384) - ) - (br $while-out124) - ) - ) - (local.set $$incdec$ptr383 - (i32.add - (local.get $$ws$0317) - (i32.const 4) - ) - ) - (local.set $$add395 - (i32.add - (local.get $$call384) - (local.get $$i$0316) - ) - ) - (local.set $$cmp377 - (i32.gt_u - (local.get $$p$4365) - (local.get $$add395) - ) - ) - (if - (local.get $$cmp377) - (block - (local.set $$i$0316 - (local.get $$add395) - ) - (local.set $$l$1315 - (local.get $$call384) - ) - (local.set $$ws$0317 - (local.get $$incdec$ptr383) - ) - ) - (block - (local.set $$i$0$lcssa - (local.get $$add395) - ) - (local.set $$l$2 - (local.get $$call384) - ) - (br $while-out124) - ) - ) - (br $while-in125) - ) - ) - (local.set $$cmp397 - (i32.lt_s - (local.get $$l$2) - (i32.const 0) - ) - ) - (if - (local.get $$cmp397) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L1) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$i$0$lcssa) - (local.get $$fl$1$and219) - ) - (local.set $$cmp404$324 - (i32.eq - (local.get $$i$0$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$cmp404$324) - (block - (local.set $$i$0$lcssa368 - (i32.const 0) - ) - (local.set $label - (i32.const 98) - ) - ) - (block - (local.set $$178 - (i32.load - (local.get $$arg) - ) - ) - (local.set $$i$1325 - (i32.const 0) - ) - (local.set $$ws$1326 - (local.get $$178) - ) - (loop $while-in127 - (block $while-out126 - (local.set $$179 - (i32.load - (local.get $$ws$1326) - ) - ) - (local.set $$tobool407 - (i32.eq - (local.get $$179) - (i32.const 0) - ) - ) - (if - (local.get $$tobool407) - (block - (local.set $$i$0$lcssa368 - (local.get $$i$0$lcssa) - ) - (local.set $label - (i32.const 98) - ) - (br $label$break$L308) - ) - ) - (local.set $$incdec$ptr410 - (i32.add - (local.get $$ws$1326) - (i32.const 4) - ) - ) - (local.set $$call411 - (call $_wctomb - (local.get $$mb) - (local.get $$179) - ) - ) - (local.set $$add412 - (i32.add - (local.get $$call411) - (local.get $$i$1325) - ) - ) - (local.set $$cmp413 - (i32.gt_s - (local.get $$add412) - (local.get $$i$0$lcssa) - ) - ) - (if - (local.get $$cmp413) - (block - (local.set $$i$0$lcssa368 - (local.get $$i$0$lcssa) - ) - (local.set $label - (i32.const 98) - ) - (br $label$break$L308) - ) - ) - (local.set $$180 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$231 - (i32.and - (local.get $$180) - (i32.const 32) - ) - ) - (local.set $$tobool$i$232 - (i32.eq - (local.get $$and$i$231) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$232) - (drop - (call $___fwritex - (local.get $$mb) - (local.get $$call411) - (local.get $$f) - ) - ) - ) - (local.set $$cmp404 - (i32.lt_u - (local.get $$add412) - (local.get $$i$0$lcssa) - ) - ) - (if - (local.get $$cmp404) - (block - (local.set $$i$1325 - (local.get $$add412) - ) - (local.set $$ws$1326 - (local.get $$incdec$ptr410) - ) - ) - (block - (local.set $$i$0$lcssa368 - (local.get $$i$0$lcssa) - ) - (local.set $label - (i32.const 98) - ) - (br $while-out126) - ) - ) - (br $while-in127) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 98) - ) - (block - (local.set $label - (i32.const 0) - ) - (local.set $$xor - (i32.xor - (local.get $$fl$1$and219) - (i32.const 8192) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$1) - (local.get $$i$0$lcssa368) - (local.get $$xor) - ) - (local.set $$cmp421 - (i32.gt_s - (local.get $$w$1) - (local.get $$i$0$lcssa368) - ) - ) - (local.set $$cond426 - (if (result i32) - (local.get $$cmp421) - (local.get $$w$1) - (local.get $$i$0$lcssa368) - ) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$cond426) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 77) - ) - (block - (local.set $label - (i32.const 0) - ) - (local.set $$cmp306 - (i32.gt_s - (local.get $$p$2) - (i32.const -1) - ) - ) - (local.set $$and309 - (i32.and - (local.get $$fl$4) - (i32.const -65537) - ) - ) - (local.set $$and309$fl$4 - (if (result i32) - (local.get $$cmp306) - (local.get $$and309) - (local.get $$fl$4) - ) - ) - (local.set $$151 - (local.get $$arg) - ) - (local.set $$152 - (local.get $$151) - ) - (local.set $$153 - (i32.load - (local.get $$152) - ) - ) - (local.set $$154 - (i32.add - (local.get $$151) - (i32.const 4) - ) - ) - (local.set $$155 - (local.get $$154) - ) - (local.set $$156 - (i32.load - (local.get $$155) - ) - ) - (local.set $$157 - (i32.ne - (local.get $$153) - (i32.const 0) - ) - ) - (local.set $$158 - (i32.ne - (local.get $$156) - (i32.const 0) - ) - ) - (local.set $$159 - (i32.or - (local.get $$157) - (local.get $$158) - ) - ) - (local.set $$tobool314 - (i32.ne - (local.get $$p$2) - (i32.const 0) - ) - ) - (local.set $$or$cond - (i32.or - (local.get $$tobool314) - (local.get $$159) - ) - ) - (if - (local.get $$or$cond) - (block - (local.set $$sub$ptr$rhs$cast318 - (local.get $$a$0) - ) - (local.set $$sub$ptr$sub319 - (i32.sub - (local.get $$sub$ptr$lhs$cast317) - (local.get $$sub$ptr$rhs$cast318) - ) - ) - (local.set $$160 - (i32.and - (local.get $$159) - (i32.const 1) - ) - ) - (local.set $$lnot$ext - (i32.xor - (local.get $$160) - (i32.const 1) - ) - ) - (local.set $$add322 - (i32.add - (local.get $$lnot$ext) - (local.get $$sub$ptr$sub319) - ) - ) - (local.set $$cmp323 - (i32.gt_s - (local.get $$p$2) - (local.get $$add322) - ) - ) - (local.set $$p$2$add322 - (if (result i32) - (local.get $$cmp323) - (local.get $$p$2) - (local.get $$add322) - ) - ) - (local.set $$a$2 - (local.get $$a$0) - ) - (local.set $$fl$6 - (local.get $$and309$fl$4) - ) - (local.set $$p$5 - (local.get $$p$2$add322) - ) - (local.set $$pl$2 - (local.get $$pl$1) - ) - (local.set $$prefix$2 - (local.get $$prefix$1) - ) - (local.set $$z$2 - (local.get $$add$ptr205) - ) - ) - (block - (local.set $$a$2 - (local.get $$add$ptr205) - ) - (local.set $$fl$6 - (local.get $$and309$fl$4) - ) - (local.set $$p$5 - (i32.const 0) - ) - (local.set $$pl$2 - (local.get $$pl$1) - ) - (local.set $$prefix$2 - (local.get $$prefix$1) - ) - (local.set $$z$2 - (local.get $$add$ptr205) - ) - ) - ) - ) - ) - (local.set $$sub$ptr$lhs$cast431 - (local.get $$z$2) - ) - (local.set $$sub$ptr$rhs$cast432 - (local.get $$a$2) - ) - (local.set $$sub$ptr$sub433 - (i32.sub - (local.get $$sub$ptr$lhs$cast431) - (local.get $$sub$ptr$rhs$cast432) - ) - ) - (local.set $$cmp434 - (i32.lt_s - (local.get $$p$5) - (local.get $$sub$ptr$sub433) - ) - ) - (local.set $$sub$ptr$sub433$p$5 - (if (result i32) - (local.get $$cmp434) - (local.get $$sub$ptr$sub433) - (local.get $$p$5) - ) - ) - (local.set $$add441 - (i32.add - (local.get $$pl$2) - (local.get $$sub$ptr$sub433$p$5) - ) - ) - (local.set $$cmp442 - (i32.lt_s - (local.get $$w$1) - (local.get $$add441) - ) - ) - (local.set $$w$2 - (if (result i32) - (local.get $$cmp442) - (local.get $$add441) - (local.get $$w$1) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$2) - (local.get $$add441) - (local.get $$fl$6) - ) - (local.set $$265 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$244 - (i32.and - (local.get $$265) - (i32.const 32) - ) - ) - (local.set $$tobool$i$245 - (i32.eq - (local.get $$and$i$244) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$245) - (drop - (call $___fwritex - (local.get $$prefix$2) - (local.get $$pl$2) - (local.get $$f) - ) - ) - ) - (local.set $$xor449 - (i32.xor - (local.get $$fl$6) - (i32.const 65536) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 48) - (local.get $$w$2) - (local.get $$add441) - (local.get $$xor449) - ) - (call $_pad - (local.get $$f) - (i32.const 48) - (local.get $$sub$ptr$sub433$p$5) - (local.get $$sub$ptr$sub433) - (i32.const 0) - ) - (local.set $$266 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$216 - (i32.and - (local.get $$266) - (i32.const 32) - ) - ) - (local.set $$tobool$i$217 - (i32.eq - (local.get $$and$i$216) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$217) - (drop - (call $___fwritex - (local.get $$a$2) - (local.get $$sub$ptr$sub433) - (local.get $$f) - ) - ) - ) - (local.set $$xor457 - (i32.xor - (local.get $$fl$6) - (i32.const 8192) - ) - ) - (call $_pad - (local.get $$f) - (i32.const 32) - (local.get $$w$2) - (local.get $$add441) - (local.get $$xor457) - ) - (local.set $$cnt$0 - (local.get $$cnt$1) - ) - (local.set $$incdec$ptr169275 - (local.get $$incdec$ptr169$lcssa) - ) - (local.set $$l$0 - (local.get $$w$2) - ) - (local.set $$l10n$0 - (local.get $$l10n$3) - ) - (br $label$continue$L1) - ) - ) - (block $label$break$L343 - (if - (i32.eq - (local.get $label) - (i32.const 242) - ) - (block - (local.set $$tobool459 - (i32.eq - (local.get $$f) - (i32.const 0) - ) - ) - (if - (local.get $$tobool459) - (block - (local.set $$tobool462 - (i32.eq - (local.get $$l10n$0$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$tobool462) - (local.set $$retval$0 - (i32.const 0) - ) - (block - (local.set $$i$2299 - (i32.const 1) - ) - (loop $while-in130 - (block $while-out129 - (local.set $$arrayidx469 - (i32.add - (local.get $$nl_type) - (i32.shl - (local.get $$i$2299) - (i32.const 2) - ) - ) - ) - (local.set $$267 - (i32.load - (local.get $$arrayidx469) - ) - ) - (local.set $$tobool470 - (i32.eq - (local.get $$267) - (i32.const 0) - ) - ) - (if - (local.get $$tobool470) - (block - (local.set $$i$2299$lcssa - (local.get $$i$2299) - ) - (br $while-out129) - ) - ) - (local.set $$add$ptr473 - (i32.add - (local.get $$nl_arg) - (i32.shl - (local.get $$i$2299) - (i32.const 3) - ) - ) - ) - (call $_pop_arg_336 - (local.get $$add$ptr473) - (local.get $$267) - (local.get $$ap) - ) - (local.set $$inc - (i32.add - (local.get $$i$2299) - (i32.const 1) - ) - ) - (local.set $$cmp466 - (i32.lt_s - (local.get $$inc) - (i32.const 10) - ) - ) - (if - (local.get $$cmp466) - (local.set $$i$2299 - (local.get $$inc) - ) - (block - (local.set $$retval$0 - (i32.const 1) - ) - (br $label$break$L343) - ) - ) - (br $while-in130) - ) - ) - (local.set $$cmp478$295 - (i32.lt_s - (local.get $$i$2299$lcssa) - (i32.const 10) - ) - ) - (if - (local.get $$cmp478$295) - (block - (local.set $$i$3296 - (local.get $$i$2299$lcssa) - ) - (loop $while-in132 - (block $while-out131 - (local.set $$arrayidx481 - (i32.add - (local.get $$nl_type) - (i32.shl - (local.get $$i$3296) - (i32.const 2) - ) - ) - ) - (local.set $$268 - (i32.load - (local.get $$arrayidx481) - ) - ) - (local.set $$lnot483 - (i32.eq - (local.get $$268) - (i32.const 0) - ) - ) - (local.set $$inc488 - (i32.add - (local.get $$i$3296) - (i32.const 1) - ) - ) - (if - (i32.eqz - (local.get $$lnot483) - ) - (block - (local.set $$retval$0 - (i32.const -1) - ) - (br $label$break$L343) - ) - ) - (local.set $$cmp478 - (i32.lt_s - (local.get $$inc488) - (i32.const 10) - ) - ) - (if - (local.get $$cmp478) - (local.set $$i$3296 - (local.get $$inc488) - ) - (block - (local.set $$retval$0 - (i32.const 1) - ) - (br $while-out131) - ) - ) - (br $while-in132) - ) - ) - ) - (local.set $$retval$0 - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $$retval$0 - (local.get $$cnt$1$lcssa) - ) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_pop_arg_336 (; 55 ;) (param $$arg i32) (param $$type i32) (param $$ap i32) - (local $$0 i32) - (local $$1 i32) - (local $$10 i32) - (local $$100 i32) - (local $$101 i32) - (local $$102 i32) - (local $$103 f64) - (local $$104 i32) - (local $$105 i32) - (local $$106 i32) - (local $$107 i32) - (local $$108 i32) - (local $$109 i32) - (local $$11 i32) - (local $$110 f64) - (local $$12 i32) - (local $$13 i32) - (local $$14 i32) - (local $$15 i32) - (local $$16 i32) - (local $$17 i32) - (local $$18 i32) - (local $$19 i32) - (local $$2 i32) - (local $$20 i32) - (local $$21 i32) - (local $$22 i32) - (local $$23 i32) - (local $$24 i32) - (local $$25 i32) - (local $$26 i32) - (local $$27 i32) - (local $$28 i32) - (local $$29 i32) - (local $$3 i32) - (local $$30 i32) - (local $$31 i32) - (local $$32 i32) - (local $$33 i32) - (local $$34 i32) - (local $$35 i32) - (local $$36 i32) - (local $$37 i32) - (local $$38 i32) - (local $$39 i32) - (local $$4 i32) - (local $$40 i32) - (local $$41 i32) - (local $$42 i32) - (local $$43 i32) - (local $$44 i32) - (local $$45 i32) - (local $$46 i32) - (local $$47 i32) - (local $$48 i32) - (local $$49 i32) - (local $$5 i32) - (local $$50 i32) - (local $$51 i32) - (local $$52 i32) - (local $$53 i32) - (local $$54 i32) - (local $$55 i32) - (local $$56 i32) - (local $$57 i32) - (local $$58 i32) - (local $$59 i32) - (local $$6 i32) - (local $$60 i32) - (local $$61 i32) - (local $$62 i32) - (local $$63 i32) - (local $$64 i32) - (local $$65 i32) - (local $$66 i32) - (local $$67 i32) - (local $$68 i32) - (local $$69 i32) - (local $$7 i32) - (local $$70 i32) - (local $$71 i32) - (local $$72 i32) - (local $$73 i32) - (local $$74 i32) - (local $$75 i32) - (local $$76 i32) - (local $$77 i32) - (local $$78 i32) - (local $$79 i32) - (local $$8 i32) - (local $$80 i32) - (local $$81 i32) - (local $$82 i32) - (local $$83 i32) - (local $$84 i32) - (local $$85 i32) - (local $$86 i32) - (local $$87 i32) - (local $$88 i32) - (local $$89 i32) - (local $$9 i32) - (local $$90 i32) - (local $$91 i32) - (local $$92 i32) - (local $$93 i32) - (local $$94 i32) - (local $$95 i32) - (local $$96 i32) - (local $$97 i32) - (local $$98 i32) - (local $$99 i32) - (local $$arglist_current i32) - (local $$arglist_current11 i32) - (local $$arglist_current14 i32) - (local $$arglist_current17 i32) - (local $$arglist_current2 i32) - (local $$arglist_current20 i32) - (local $$arglist_current23 i32) - (local $$arglist_current26 i32) - (local $$arglist_current5 i32) - (local $$arglist_current8 i32) - (local $$arglist_next i32) - (local $$arglist_next12 i32) - (local $$arglist_next15 i32) - (local $$arglist_next18 i32) - (local $$arglist_next21 i32) - (local $$arglist_next24 i32) - (local $$arglist_next27 i32) - (local $$arglist_next3 i32) - (local $$arglist_next6 i32) - (local $$arglist_next9 i32) - (local $$cmp i32) - (local $$conv12 i32) - (local $$conv17$mask i32) - (local $$conv22 i32) - (local $$conv27$mask i32) - (local $$expanded i32) - (local $$expanded28 i32) - (local $$expanded30 i32) - (local $$expanded31 i32) - (local $$expanded32 i32) - (local $$expanded34 i32) - (local $$expanded35 i32) - (local $$expanded37 i32) - (local $$expanded38 i32) - (local $$expanded39 i32) - (local $$expanded41 i32) - (local $$expanded42 i32) - (local $$expanded44 i32) - (local $$expanded45 i32) - (local $$expanded46 i32) - (local $$expanded48 i32) - (local $$expanded49 i32) - (local $$expanded51 i32) - (local $$expanded52 i32) - (local $$expanded53 i32) - (local $$expanded55 i32) - (local $$expanded56 i32) - (local $$expanded58 i32) - (local $$expanded59 i32) - (local $$expanded60 i32) - (local $$expanded62 i32) - (local $$expanded63 i32) - (local $$expanded65 i32) - (local $$expanded66 i32) - (local $$expanded67 i32) - (local $$expanded69 i32) - (local $$expanded70 i32) - (local $$expanded72 i32) - (local $$expanded73 i32) - (local $$expanded74 i32) - (local $$expanded76 i32) - (local $$expanded77 i32) - (local $$expanded79 i32) - (local $$expanded80 i32) - (local $$expanded81 i32) - (local $$expanded83 i32) - (local $$expanded84 i32) - (local $$expanded86 i32) - (local $$expanded87 i32) - (local $$expanded88 i32) - (local $$expanded90 i32) - (local $$expanded91 i32) - (local $$expanded93 i32) - (local $$expanded94 i32) - (local $$expanded95 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$cmp - (i32.gt_u - (local.get $$type) - (i32.const 20) - ) - ) - (block $label$break$L1 - (if - (i32.eqz - (local.get $$cmp) - ) - (block $do-once - (block $switch - (block $switch-default - (block $switch-case9 - (block $switch-case8 - (block $switch-case7 - (block $switch-case6 - (block $switch-case5 - (block $switch-case4 - (block $switch-case3 - (block $switch-case2 - (block $switch-case1 - (block $switch-case - (br_table $switch-case $switch-case1 $switch-case2 $switch-case3 $switch-case4 $switch-case5 $switch-case6 $switch-case7 $switch-case8 $switch-case9 $switch-default - (i32.sub - (local.get $$type) - (i32.const 9) - ) - ) - ) - (block - (local.set $$arglist_current - (i32.load - (local.get $$ap) - ) - ) - (local.set $$0 - (local.get $$arglist_current) - ) - (local.set $$1 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded28 - (local.get $$1) - ) - (local.set $$expanded - (i32.sub - (local.get $$expanded28) - (i32.const 1) - ) - ) - (local.set $$2 - (i32.add - (local.get $$0) - (local.get $$expanded) - ) - ) - (local.set $$3 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded32 - (local.get $$3) - ) - (local.set $$expanded31 - (i32.sub - (local.get $$expanded32) - (i32.const 1) - ) - ) - (local.set $$expanded30 - (i32.xor - (local.get $$expanded31) - (i32.const -1) - ) - ) - (local.set $$4 - (i32.and - (local.get $$2) - (local.get $$expanded30) - ) - ) - (local.set $$5 - (local.get $$4) - ) - (local.set $$6 - (i32.load - (local.get $$5) - ) - ) - (local.set $$arglist_next - (i32.add - (local.get $$5) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next) - ) - (i32.store - (local.get $$arg) - (local.get $$6) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current2 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$7 - (local.get $$arglist_current2) - ) - (local.set $$8 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded35 - (local.get $$8) - ) - (local.set $$expanded34 - (i32.sub - (local.get $$expanded35) - (i32.const 1) - ) - ) - (local.set $$9 - (i32.add - (local.get $$7) - (local.get $$expanded34) - ) - ) - (local.set $$10 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded39 - (local.get $$10) - ) - (local.set $$expanded38 - (i32.sub - (local.get $$expanded39) - (i32.const 1) - ) - ) - (local.set $$expanded37 - (i32.xor - (local.get $$expanded38) - (i32.const -1) - ) - ) - (local.set $$11 - (i32.and - (local.get $$9) - (local.get $$expanded37) - ) - ) - (local.set $$12 - (local.get $$11) - ) - (local.set $$13 - (i32.load - (local.get $$12) - ) - ) - (local.set $$arglist_next3 - (i32.add - (local.get $$12) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next3) - ) - (local.set $$14 - (i32.lt_s - (local.get $$13) - (i32.const 0) - ) - ) - (local.set $$15 - (i32.shr_s - (i32.shl - (local.get $$14) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$16 - (local.get $$arg) - ) - (local.set $$17 - (local.get $$16) - ) - (i32.store - (local.get $$17) - (local.get $$13) - ) - (local.set $$18 - (i32.add - (local.get $$16) - (i32.const 4) - ) - ) - (local.set $$19 - (local.get $$18) - ) - (i32.store - (local.get $$19) - (local.get $$15) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current5 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$20 - (local.get $$arglist_current5) - ) - (local.set $$21 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded42 - (local.get $$21) - ) - (local.set $$expanded41 - (i32.sub - (local.get $$expanded42) - (i32.const 1) - ) - ) - (local.set $$22 - (i32.add - (local.get $$20) - (local.get $$expanded41) - ) - ) - (local.set $$23 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded46 - (local.get $$23) - ) - (local.set $$expanded45 - (i32.sub - (local.get $$expanded46) - (i32.const 1) - ) - ) - (local.set $$expanded44 - (i32.xor - (local.get $$expanded45) - (i32.const -1) - ) - ) - (local.set $$24 - (i32.and - (local.get $$22) - (local.get $$expanded44) - ) - ) - (local.set $$25 - (local.get $$24) - ) - (local.set $$26 - (i32.load - (local.get $$25) - ) - ) - (local.set $$arglist_next6 - (i32.add - (local.get $$25) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next6) - ) - (local.set $$27 - (local.get $$arg) - ) - (local.set $$28 - (local.get $$27) - ) - (i32.store - (local.get $$28) - (local.get $$26) - ) - (local.set $$29 - (i32.add - (local.get $$27) - (i32.const 4) - ) - ) - (local.set $$30 - (local.get $$29) - ) - (i32.store - (local.get $$30) - (i32.const 0) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current8 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$31 - (local.get $$arglist_current8) - ) - (local.set $$32 - (i32.add - (i32.const 0) - (i32.const 8) - ) - ) - (local.set $$expanded49 - (local.get $$32) - ) - (local.set $$expanded48 - (i32.sub - (local.get $$expanded49) - (i32.const 1) - ) - ) - (local.set $$33 - (i32.add - (local.get $$31) - (local.get $$expanded48) - ) - ) - (local.set $$34 - (i32.add - (i32.const 0) - (i32.const 8) - ) - ) - (local.set $$expanded53 - (local.get $$34) - ) - (local.set $$expanded52 - (i32.sub - (local.get $$expanded53) - (i32.const 1) - ) - ) - (local.set $$expanded51 - (i32.xor - (local.get $$expanded52) - (i32.const -1) - ) - ) - (local.set $$35 - (i32.and - (local.get $$33) - (local.get $$expanded51) - ) - ) - (local.set $$36 - (local.get $$35) - ) - (local.set $$37 - (local.get $$36) - ) - (local.set $$38 - (local.get $$37) - ) - (local.set $$39 - (i32.load - (local.get $$38) - ) - ) - (local.set $$40 - (i32.add - (local.get $$37) - (i32.const 4) - ) - ) - (local.set $$41 - (local.get $$40) - ) - (local.set $$42 - (i32.load - (local.get $$41) - ) - ) - (local.set $$arglist_next9 - (i32.add - (local.get $$36) - (i32.const 8) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next9) - ) - (local.set $$43 - (local.get $$arg) - ) - (local.set $$44 - (local.get $$43) - ) - (i32.store - (local.get $$44) - (local.get $$39) - ) - (local.set $$45 - (i32.add - (local.get $$43) - (i32.const 4) - ) - ) - (local.set $$46 - (local.get $$45) - ) - (i32.store - (local.get $$46) - (local.get $$42) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current11 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$47 - (local.get $$arglist_current11) - ) - (local.set $$48 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded56 - (local.get $$48) - ) - (local.set $$expanded55 - (i32.sub - (local.get $$expanded56) - (i32.const 1) - ) - ) - (local.set $$49 - (i32.add - (local.get $$47) - (local.get $$expanded55) - ) - ) - (local.set $$50 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded60 - (local.get $$50) - ) - (local.set $$expanded59 - (i32.sub - (local.get $$expanded60) - (i32.const 1) - ) - ) - (local.set $$expanded58 - (i32.xor - (local.get $$expanded59) - (i32.const -1) - ) - ) - (local.set $$51 - (i32.and - (local.get $$49) - (local.get $$expanded58) - ) - ) - (local.set $$52 - (local.get $$51) - ) - (local.set $$53 - (i32.load - (local.get $$52) - ) - ) - (local.set $$arglist_next12 - (i32.add - (local.get $$52) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next12) - ) - (local.set $$conv12 - (i32.and - (local.get $$53) - (i32.const 65535) - ) - ) - (local.set $$54 - (i32.shr_s - (i32.shl - (local.get $$conv12) - (i32.const 16) - ) - (i32.const 16) - ) - ) - (local.set $$55 - (i32.lt_s - (local.get $$54) - (i32.const 0) - ) - ) - (local.set $$56 - (i32.shr_s - (i32.shl - (local.get $$55) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$57 - (local.get $$arg) - ) - (local.set $$58 - (local.get $$57) - ) - (i32.store - (local.get $$58) - (local.get $$54) - ) - (local.set $$59 - (i32.add - (local.get $$57) - (i32.const 4) - ) - ) - (local.set $$60 - (local.get $$59) - ) - (i32.store - (local.get $$60) - (local.get $$56) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current14 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$61 - (local.get $$arglist_current14) - ) - (local.set $$62 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded63 - (local.get $$62) - ) - (local.set $$expanded62 - (i32.sub - (local.get $$expanded63) - (i32.const 1) - ) - ) - (local.set $$63 - (i32.add - (local.get $$61) - (local.get $$expanded62) - ) - ) - (local.set $$64 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded67 - (local.get $$64) - ) - (local.set $$expanded66 - (i32.sub - (local.get $$expanded67) - (i32.const 1) - ) - ) - (local.set $$expanded65 - (i32.xor - (local.get $$expanded66) - (i32.const -1) - ) - ) - (local.set $$65 - (i32.and - (local.get $$63) - (local.get $$expanded65) - ) - ) - (local.set $$66 - (local.get $$65) - ) - (local.set $$67 - (i32.load - (local.get $$66) - ) - ) - (local.set $$arglist_next15 - (i32.add - (local.get $$66) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next15) - ) - (local.set $$conv17$mask - (i32.and - (local.get $$67) - (i32.const 65535) - ) - ) - (local.set $$68 - (local.get $$arg) - ) - (local.set $$69 - (local.get $$68) - ) - (i32.store - (local.get $$69) - (local.get $$conv17$mask) - ) - (local.set $$70 - (i32.add - (local.get $$68) - (i32.const 4) - ) - ) - (local.set $$71 - (local.get $$70) - ) - (i32.store - (local.get $$71) - (i32.const 0) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current17 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$72 - (local.get $$arglist_current17) - ) - (local.set $$73 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded70 - (local.get $$73) - ) - (local.set $$expanded69 - (i32.sub - (local.get $$expanded70) - (i32.const 1) - ) - ) - (local.set $$74 - (i32.add - (local.get $$72) - (local.get $$expanded69) - ) - ) - (local.set $$75 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded74 - (local.get $$75) - ) - (local.set $$expanded73 - (i32.sub - (local.get $$expanded74) - (i32.const 1) - ) - ) - (local.set $$expanded72 - (i32.xor - (local.get $$expanded73) - (i32.const -1) - ) - ) - (local.set $$76 - (i32.and - (local.get $$74) - (local.get $$expanded72) - ) - ) - (local.set $$77 - (local.get $$76) - ) - (local.set $$78 - (i32.load - (local.get $$77) - ) - ) - (local.set $$arglist_next18 - (i32.add - (local.get $$77) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next18) - ) - (local.set $$conv22 - (i32.and - (local.get $$78) - (i32.const 255) - ) - ) - (local.set $$79 - (i32.shr_s - (i32.shl - (local.get $$conv22) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $$80 - (i32.lt_s - (local.get $$79) - (i32.const 0) - ) - ) - (local.set $$81 - (i32.shr_s - (i32.shl - (local.get $$80) - (i32.const 31) - ) - (i32.const 31) - ) - ) - (local.set $$82 - (local.get $$arg) - ) - (local.set $$83 - (local.get $$82) - ) - (i32.store - (local.get $$83) - (local.get $$79) - ) - (local.set $$84 - (i32.add - (local.get $$82) - (i32.const 4) - ) - ) - (local.set $$85 - (local.get $$84) - ) - (i32.store - (local.get $$85) - (local.get $$81) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current20 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$86 - (local.get $$arglist_current20) - ) - (local.set $$87 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded77 - (local.get $$87) - ) - (local.set $$expanded76 - (i32.sub - (local.get $$expanded77) - (i32.const 1) - ) - ) - (local.set $$88 - (i32.add - (local.get $$86) - (local.get $$expanded76) - ) - ) - (local.set $$89 - (i32.add - (i32.const 0) - (i32.const 4) - ) - ) - (local.set $$expanded81 - (local.get $$89) - ) - (local.set $$expanded80 - (i32.sub - (local.get $$expanded81) - (i32.const 1) - ) - ) - (local.set $$expanded79 - (i32.xor - (local.get $$expanded80) - (i32.const -1) - ) - ) - (local.set $$90 - (i32.and - (local.get $$88) - (local.get $$expanded79) - ) - ) - (local.set $$91 - (local.get $$90) - ) - (local.set $$92 - (i32.load - (local.get $$91) - ) - ) - (local.set $$arglist_next21 - (i32.add - (local.get $$91) - (i32.const 4) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next21) - ) - (local.set $$conv27$mask - (i32.and - (local.get $$92) - (i32.const 255) - ) - ) - (local.set $$93 - (local.get $$arg) - ) - (local.set $$94 - (local.get $$93) - ) - (i32.store - (local.get $$94) - (local.get $$conv27$mask) - ) - (local.set $$95 - (i32.add - (local.get $$93) - (i32.const 4) - ) - ) - (local.set $$96 - (local.get $$95) - ) - (i32.store - (local.get $$96) - (i32.const 0) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current23 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$97 - (local.get $$arglist_current23) - ) - (local.set $$98 - (i32.add - (i32.const 0) - (i32.const 8) - ) - ) - (local.set $$expanded84 - (local.get $$98) - ) - (local.set $$expanded83 - (i32.sub - (local.get $$expanded84) - (i32.const 1) - ) - ) - (local.set $$99 - (i32.add - (local.get $$97) - (local.get $$expanded83) - ) - ) - (local.set $$100 - (i32.add - (i32.const 0) - (i32.const 8) - ) - ) - (local.set $$expanded88 - (local.get $$100) - ) - (local.set $$expanded87 - (i32.sub - (local.get $$expanded88) - (i32.const 1) - ) - ) - (local.set $$expanded86 - (i32.xor - (local.get $$expanded87) - (i32.const -1) - ) - ) - (local.set $$101 - (i32.and - (local.get $$99) - (local.get $$expanded86) - ) - ) - (local.set $$102 - (local.get $$101) - ) - (local.set $$103 - (f64.load - (local.get $$102) - ) - ) - (local.set $$arglist_next24 - (i32.add - (local.get $$102) - (i32.const 8) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next24) - ) - (f64.store - (local.get $$arg) - (local.get $$103) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (block - (local.set $$arglist_current26 - (i32.load - (local.get $$ap) - ) - ) - (local.set $$104 - (local.get $$arglist_current26) - ) - (local.set $$105 - (i32.add - (i32.const 0) - (i32.const 8) - ) - ) - (local.set $$expanded91 - (local.get $$105) - ) - (local.set $$expanded90 - (i32.sub - (local.get $$expanded91) - (i32.const 1) - ) - ) - (local.set $$106 - (i32.add - (local.get $$104) - (local.get $$expanded90) - ) - ) - (local.set $$107 - (i32.add - (i32.const 0) - (i32.const 8) - ) - ) - (local.set $$expanded95 - (local.get $$107) - ) - (local.set $$expanded94 - (i32.sub - (local.get $$expanded95) - (i32.const 1) - ) - ) - (local.set $$expanded93 - (i32.xor - (local.get $$expanded94) - (i32.const -1) - ) - ) - (local.set $$108 - (i32.and - (local.get $$106) - (local.get $$expanded93) - ) - ) - (local.set $$109 - (local.get $$108) - ) - (local.set $$110 - (f64.load - (local.get $$109) - ) - ) - (local.set $$arglist_next27 - (i32.add - (local.get $$109) - (i32.const 8) - ) - ) - (i32.store - (local.get $$ap) - (local.get $$arglist_next27) - ) - (f64.store - (local.get $$arg) - (local.get $$110) - ) - (br $label$break$L1) - (br $switch) - ) - ) - (br $label$break$L1) - ) - ) - ) - ) - (return) - ) - (func $_fmt_u (; 56 ;) (param $$0 i32) (param $$1 i32) (param $$s i32) (result i32) - (local $$10 i32) - (local $$11 i32) - (local $$12 i32) - (local $$13 i32) - (local $$14 i32) - (local $$15 i32) - (local $$16 i32) - (local $$17 i32) - (local $$18 i32) - (local $$19 i32) - (local $$2 i32) - (local $$20 i32) - (local $$21 i32) - (local $$22 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$7 i32) - (local $$8 i32) - (local $$9 i32) - (local $$add5 i32) - (local $$conv6 i32) - (local $$div9 i32) - (local $$incdec$ptr i32) - (local $$incdec$ptr$lcssa i32) - (local $$incdec$ptr7 i32) - (local $$rem4 i32) - (local $$s$addr$0$lcssa i32) - (local $$s$addr$013 i32) - (local $$s$addr$1$lcssa i32) - (local $$s$addr$19 i32) - (local $$tobool$8 i32) - (local $$x$addr$0$lcssa$off0 i32) - (local $$y$010 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$2 - (i32.gt_u - (local.get $$1) - (i32.const 0) - ) - ) - (local.set $$3 - (i32.gt_u - (local.get $$0) - (i32.const -1) - ) - ) - (local.set $$4 - (i32.eq - (local.get $$1) - (i32.const 0) - ) - ) - (local.set $$5 - (i32.and - (local.get $$4) - (local.get $$3) - ) - ) - (local.set $$6 - (i32.or - (local.get $$2) - (local.get $$5) - ) - ) - (if - (local.get $$6) - (block - (local.set $$7 - (local.get $$0) - ) - (local.set $$8 - (local.get $$1) - ) - (local.set $$s$addr$013 - (local.get $$s) - ) - (loop $while-in - (block $while-out - (local.set $$9 - (call $___uremdi3 - (local.get $$7) - (local.get $$8) - (i32.const 10) - (i32.const 0) - ) - ) - (local.set $$10 - (global.get $tempRet0) - ) - (local.set $$11 - (i32.or - (local.get $$9) - (i32.const 48) - ) - ) - (local.set $$12 - (i32.and - (local.get $$11) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr - (i32.add - (local.get $$s$addr$013) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr) - (local.get $$12) - ) - (local.set $$13 - (call $___udivdi3 - (local.get $$7) - (local.get $$8) - (i32.const 10) - (i32.const 0) - ) - ) - (local.set $$14 - (global.get $tempRet0) - ) - (local.set $$15 - (i32.gt_u - (local.get $$8) - (i32.const 9) - ) - ) - (local.set $$16 - (i32.gt_u - (local.get $$7) - (i32.const -1) - ) - ) - (local.set $$17 - (i32.eq - (local.get $$8) - (i32.const 9) - ) - ) - (local.set $$18 - (i32.and - (local.get $$17) - (local.get $$16) - ) - ) - (local.set $$19 - (i32.or - (local.get $$15) - (local.get $$18) - ) - ) - (if - (local.get $$19) - (block - (local.set $$7 - (local.get $$13) - ) - (local.set $$8 - (local.get $$14) - ) - (local.set $$s$addr$013 - (local.get $$incdec$ptr) - ) - ) - (block - (local.set $$21 - (local.get $$13) - ) - (local.set $$22 - (local.get $$14) - ) - (local.set $$incdec$ptr$lcssa - (local.get $$incdec$ptr) - ) - (br $while-out) - ) - ) - (br $while-in) - ) - ) - (local.set $$s$addr$0$lcssa - (local.get $$incdec$ptr$lcssa) - ) - (local.set $$x$addr$0$lcssa$off0 - (local.get $$21) - ) - ) - (block - (local.set $$s$addr$0$lcssa - (local.get $$s) - ) - (local.set $$x$addr$0$lcssa$off0 - (local.get $$0) - ) - ) - ) - (local.set $$tobool$8 - (i32.eq - (local.get $$x$addr$0$lcssa$off0) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$8) - (local.set $$s$addr$1$lcssa - (local.get $$s$addr$0$lcssa) - ) - (block - (local.set $$s$addr$19 - (local.get $$s$addr$0$lcssa) - ) - (local.set $$y$010 - (local.get $$x$addr$0$lcssa$off0) - ) - (loop $while-in1 - (block $while-out0 - (local.set $$rem4 - (i32.and - (call $i32u-rem - (local.get $$y$010) - (i32.const 10) - ) - (i32.const -1) - ) - ) - (local.set $$add5 - (i32.or - (local.get $$rem4) - (i32.const 48) - ) - ) - (local.set $$conv6 - (i32.and - (local.get $$add5) - (i32.const 255) - ) - ) - (local.set $$incdec$ptr7 - (i32.add - (local.get $$s$addr$19) - (i32.const -1) - ) - ) - (i32.store8 - (local.get $$incdec$ptr7) - (local.get $$conv6) - ) - (local.set $$div9 - (i32.and - (call $i32u-div - (local.get $$y$010) - (i32.const 10) - ) - (i32.const -1) - ) - ) - (local.set $$20 - (i32.lt_u - (local.get $$y$010) - (i32.const 10) - ) - ) - (if - (local.get $$20) - (block - (local.set $$s$addr$1$lcssa - (local.get $$incdec$ptr7) - ) - (br $while-out0) - ) - (block - (local.set $$s$addr$19 - (local.get $$incdec$ptr7) - ) - (local.set $$y$010 - (local.get $$div9) - ) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (return - (local.get $$s$addr$1$lcssa) - ) - ) - (func $_pad (; 57 ;) (param $$f i32) (param $$c i32) (param $$w i32) (param $$l i32) (param $$fl i32) - (local $$$pre i32) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$and i32) - (local $$and$i i32) - (local $$and$i$15 i32) - (local $$cmp i32) - (local $$cmp1 i32) - (local $$cmp3 i32) - (local $$cmp3$14 i32) - (local $$cond i32) - (local $$l$addr$0$lcssa21 i32) - (local $$l$addr$017 i32) - (local $$or$cond i32) - (local $$pad i32) - (local $$sub i32) - (local $$sub5 i32) - (local $$tobool i32) - (local $$tobool$i i32) - (local $$tobool$i$16 i32) - (local $$tobool$i18 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 256) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $$pad - (local.get $sp) - ) - (local.set $$and - (i32.and - (local.get $$fl) - (i32.const 73728) - ) - ) - (local.set $$tobool - (i32.eq - (local.get $$and) - (i32.const 0) - ) - ) - (local.set $$cmp - (i32.gt_s - (local.get $$w) - (local.get $$l) - ) - ) - (local.set $$or$cond - (i32.and - (local.get $$cmp) - (local.get $$tobool) - ) - ) - (block $do-once - (if - (local.get $$or$cond) - (block - (local.set $$sub - (i32.sub - (local.get $$w) - (local.get $$l) - ) - ) - (local.set $$cmp1 - (i32.gt_u - (local.get $$sub) - (i32.const 256) - ) - ) - (local.set $$cond - (if (result i32) - (local.get $$cmp1) - (i32.const 256) - (local.get $$sub) - ) - ) - (drop - (call $_memset - (local.get $$pad) - (local.get $$c) - (local.get $$cond) - ) - ) - (local.set $$cmp3$14 - (i32.gt_u - (local.get $$sub) - (i32.const 255) - ) - ) - (local.set $$0 - (i32.load - (local.get $$f) - ) - ) - (local.set $$and$i$15 - (i32.and - (local.get $$0) - (i32.const 32) - ) - ) - (local.set $$tobool$i$16 - (i32.eq - (local.get $$and$i$15) - (i32.const 0) - ) - ) - (if - (local.get $$cmp3$14) - (block - (local.set $$1 - (i32.sub - (local.get $$w) - (local.get $$l) - ) - ) - (local.set $$4 - (local.get $$0) - ) - (local.set $$l$addr$017 - (local.get $$sub) - ) - (local.set $$tobool$i18 - (local.get $$tobool$i$16) - ) - (loop $while-in - (block $while-out - (if - (local.get $$tobool$i18) - (block - (drop - (call $___fwritex - (local.get $$pad) - (i32.const 256) - (local.get $$f) - ) - ) - (local.set $$$pre - (i32.load - (local.get $$f) - ) - ) - (local.set $$2 - (local.get $$$pre) - ) - ) - (local.set $$2 - (local.get $$4) - ) - ) - (local.set $$sub5 - (i32.add - (local.get $$l$addr$017) - (i32.const -256) - ) - ) - (local.set $$cmp3 - (i32.gt_u - (local.get $$sub5) - (i32.const 255) - ) - ) - (local.set $$and$i - (i32.and - (local.get $$2) - (i32.const 32) - ) - ) - (local.set $$tobool$i - (i32.eq - (local.get $$and$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp3) - (block - (local.set $$4 - (local.get $$2) - ) - (local.set $$l$addr$017 - (local.get $$sub5) - ) - (local.set $$tobool$i18 - (local.get $$tobool$i) - ) - ) - (br $while-out) - ) - (br $while-in) - ) - ) - (local.set $$3 - (i32.and - (local.get $$1) - (i32.const 255) - ) - ) - (if - (local.get $$tobool$i) - (local.set $$l$addr$0$lcssa21 - (local.get $$3) - ) - (br $do-once) - ) - ) - (if - (local.get $$tobool$i$16) - (local.set $$l$addr$0$lcssa21 - (local.get $$sub) - ) - (br $do-once) - ) - ) - (drop - (call $___fwritex - (local.get $$pad) - (local.get $$l$addr$0$lcssa21) - (local.get $$f) - ) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $sp) - ) - (return) - ) - (func $_malloc (; 58 ;) (param $$bytes i32) (result i32) - (local $$$lcssa i32) - (local $$$lcssa290 i32) - (local $$$pre i32) - (local $$$pre$i i32) - (local $$$pre$i$177 i32) - (local $$$pre$i$56$i i32) - (local $$$pre$i$i i32) - (local $$$pre$phi$i$178Z2D i32) - (local $$$pre$phi$i$57$iZ2D i32) - (local $$$pre$phi$i$iZ2D i32) - (local $$$pre$phi$iZ2D i32) - (local $$$pre$phiZ2D i32) - (local $$$pre241 i32) - (local $$$pre5$i$i i32) - (local $$0 i32) - (local $$1 i32) - (local $$10 i32) - (local $$100 i32) - (local $$101 i32) - (local $$102 i32) - (local $$103 i32) - (local $$104 i32) - (local $$105 i32) - (local $$106 i32) - (local $$107 i32) - (local $$108 i32) - (local $$109 i32) - (local $$11 i32) - (local $$110 i32) - (local $$111 i32) - (local $$112 i32) - (local $$113 i32) - (local $$114 i32) - (local $$115 i32) - (local $$116 i32) - (local $$117 i32) - (local $$118 i32) - (local $$119 i32) - (local $$12 i32) - (local $$120 i32) - (local $$121 i32) - (local $$122 i32) - (local $$123 i32) - (local $$124 i32) - (local $$125 i32) - (local $$126 i32) - (local $$127 i32) - (local $$128 i32) - (local $$129 i32) - (local $$13 i32) - (local $$130 i32) - (local $$131 i32) - (local $$132 i32) - (local $$133 i32) - (local $$134 i32) - (local $$135 i32) - (local $$136 i32) - (local $$137 i32) - (local $$138 i32) - (local $$139 i32) - (local $$14 i32) - (local $$140 i32) - (local $$141 i32) - (local $$142 i32) - (local $$143 i32) - (local $$144 i32) - (local $$145 i32) - (local $$146 i32) - (local $$147 i32) - (local $$148 i32) - (local $$149 i32) - (local $$15 i32) - (local $$150 i32) - (local $$151 i32) - (local $$152 i32) - (local $$153 i32) - (local $$154 i32) - (local $$155 i32) - (local $$156 i32) - (local $$157 i32) - (local $$158 i32) - (local $$159 i32) - (local $$16 i32) - (local $$160 i32) - (local $$161 i32) - (local $$162 i32) - (local $$163 i32) - (local $$164 i32) - (local $$165 i32) - (local $$166 i32) - (local $$167 i32) - (local $$168 i32) - (local $$169 i32) - (local $$17 i32) - (local $$170 i32) - (local $$171 i32) - (local $$172 i32) - (local $$173 i32) - (local $$174 i32) - (local $$175 i32) - (local $$176 i32) - (local $$177 i32) - (local $$178 i32) - (local $$179 i32) - (local $$18 i32) - (local $$180 i32) - (local $$181 i32) - (local $$182 i32) - (local $$183 i32) - (local $$184 i32) - (local $$185 i32) - (local $$186 i32) - (local $$187 i32) - (local $$188 i32) - (local $$189 i32) - (local $$19 i32) - (local $$190 i32) - (local $$191 i32) - (local $$192 i32) - (local $$193 i32) - (local $$194 i32) - (local $$195 i32) - (local $$196 i32) - (local $$197 i32) - (local $$198 i32) - (local $$199 i32) - (local $$2 i32) - (local $$20 i32) - (local $$200 i32) - (local $$201 i32) - (local $$202 i32) - (local $$203 i32) - (local $$204 i32) - (local $$205 i32) - (local $$206 i32) - (local $$207 i32) - (local $$208 i32) - (local $$21 i32) - (local $$22 i32) - (local $$23 i32) - (local $$24 i32) - (local $$25 i32) - (local $$26 i32) - (local $$27 i32) - (local $$28 i32) - (local $$29 i32) - (local $$3 i32) - (local $$30 i32) - (local $$31 i32) - (local $$32 i32) - (local $$33 i32) - (local $$34 i32) - (local $$35 i32) - (local $$36 i32) - (local $$37 i32) - (local $$38 i32) - (local $$39 i32) - (local $$4 i32) - (local $$40 i32) - (local $$41 i32) - (local $$42 i32) - (local $$43 i32) - (local $$44 i32) - (local $$45 i32) - (local $$46 i32) - (local $$47 i32) - (local $$48 i32) - (local $$49 i32) - (local $$5 i32) - (local $$50 i32) - (local $$51 i32) - (local $$52 i32) - (local $$53 i32) - (local $$54 i32) - (local $$55 i32) - (local $$56 i32) - (local $$57 i32) - (local $$58 i32) - (local $$59 i32) - (local $$6 i32) - (local $$60 i32) - (local $$61 i32) - (local $$62 i32) - (local $$63 i32) - (local $$64 i32) - (local $$65 i32) - (local $$66 i32) - (local $$67 i32) - (local $$68 i32) - (local $$69 i32) - (local $$7 i32) - (local $$70 i32) - (local $$71 i32) - (local $$72 i32) - (local $$73 i32) - (local $$74 i32) - (local $$75 i32) - (local $$76 i32) - (local $$77 i32) - (local $$78 i32) - (local $$79 i32) - (local $$8 i32) - (local $$80 i32) - (local $$81 i32) - (local $$82 i32) - (local $$83 i32) - (local $$84 i32) - (local $$85 i32) - (local $$86 i32) - (local $$87 i32) - (local $$88 i32) - (local $$89 i32) - (local $$9 i32) - (local $$90 i32) - (local $$91 i32) - (local $$92 i32) - (local $$93 i32) - (local $$94 i32) - (local $$95 i32) - (local $$96 i32) - (local $$97 i32) - (local $$98 i32) - (local $$99 i32) - (local $$F$0$i$i i32) - (local $$F104$0 i32) - (local $$F197$0$i i32) - (local $$F224$0$i$i i32) - (local $$F290$0$i i32) - (local $$I252$0$i$i i32) - (local $$I316$0$i i32) - (local $$I57$0$i$i i32) - (local $$K105$0$i$i i32) - (local $$K305$0$i$i i32) - (local $$K373$0$i i32) - (local $$R$1$i i32) - (local $$R$1$i$168 i32) - (local $$R$1$i$168$lcssa i32) - (local $$R$1$i$i i32) - (local $$R$1$i$i$lcssa i32) - (local $$R$1$i$lcssa i32) - (local $$R$3$i i32) - (local $$R$3$i$171 i32) - (local $$R$3$i$i i32) - (local $$RP$1$i i32) - (local $$RP$1$i$167 i32) - (local $$RP$1$i$167$lcssa i32) - (local $$RP$1$i$i i32) - (local $$RP$1$i$i$lcssa i32) - (local $$RP$1$i$lcssa i32) - (local $$T$0$i i32) - (local $$T$0$i$58$i i32) - (local $$T$0$i$58$i$lcssa i32) - (local $$T$0$i$58$i$lcssa283 i32) - (local $$T$0$i$i i32) - (local $$T$0$i$i$lcssa i32) - (local $$T$0$i$i$lcssa284 i32) - (local $$T$0$i$lcssa i32) - (local $$T$0$i$lcssa293 i32) - (local $$add$i i32) - (local $$add$i$146 i32) - (local $$add$i$180 i32) - (local $$add$i$i i32) - (local $$add$ptr i32) - (local $$add$ptr$i i32) - (local $$add$ptr$i$1$i$i i32) - (local $$add$ptr$i$11$i i32) - (local $$add$ptr$i$161 i32) - (local $$add$ptr$i$193 i32) - (local $$add$ptr$i$21$i i32) - (local $$add$ptr$i$32$i i32) - (local $$add$ptr$i$i i32) - (local $$add$ptr$i$i$i i32) - (local $$add$ptr$i$i$i$lcssa i32) - (local $$add$ptr14$i$i i32) - (local $$add$ptr15$i$i i32) - (local $$add$ptr16$i$i i32) - (local $$add$ptr166 i32) - (local $$add$ptr169 i32) - (local $$add$ptr17$i$i i32) - (local $$add$ptr178 i32) - (local $$add$ptr181$i i32) - (local $$add$ptr182 i32) - (local $$add$ptr189$i i32) - (local $$add$ptr190$i i32) - (local $$add$ptr193 i32) - (local $$add$ptr199 i32) - (local $$add$ptr2$i$i i32) - (local $$add$ptr205$i$i i32) - (local $$add$ptr212$i$i i32) - (local $$add$ptr225$i i32) - (local $$add$ptr227$i i32) - (local $$add$ptr24$i$i i32) - (local $$add$ptr262$i i32) - (local $$add$ptr269$i i32) - (local $$add$ptr273$i i32) - (local $$add$ptr282$i i32) - (local $$add$ptr3$i$i i32) - (local $$add$ptr30$i$i i32) - (local $$add$ptr369$i$i i32) - (local $$add$ptr4$i$26$i i32) - (local $$add$ptr4$i$37$i i32) - (local $$add$ptr4$i$i i32) - (local $$add$ptr4$i$i$i i32) - (local $$add$ptr441$i i32) - (local $$add$ptr5$i$i i32) - (local $$add$ptr6$i$30$i i32) - (local $$add$ptr6$i$i i32) - (local $$add$ptr6$i$i$i i32) - (local $$add$ptr7$i$i i32) - (local $$add$ptr8$i122$i i32) - (local $$add$ptr95 i32) - (local $$add$ptr98 i32) - (local $$add10$i i32) - (local $$add101$i i32) - (local $$add110$i i32) - (local $$add13$i i32) - (local $$add14$i i32) - (local $$add140$i i32) - (local $$add144 i32) - (local $$add150$i i32) - (local $$add17$i i32) - (local $$add17$i$183 i32) - (local $$add177$i i32) - (local $$add18$i i32) - (local $$add19$i i32) - (local $$add2 i32) - (local $$add20$i i32) - (local $$add206$i$i i32) - (local $$add212$i i32) - (local $$add215$i i32) - (local $$add22$i i32) - (local $$add246$i i32) - (local $$add26$i$i i32) - (local $$add268$i i32) - (local $$add269$i$i i32) - (local $$add274$i$i i32) - (local $$add278$i$i i32) - (local $$add280$i$i i32) - (local $$add283$i$i i32) - (local $$add337$i i32) - (local $$add342$i i32) - (local $$add346$i i32) - (local $$add348$i i32) - (local $$add351$i i32) - (local $$add46$i i32) - (local $$add50 i32) - (local $$add51$i i32) - (local $$add54 i32) - (local $$add54$i i32) - (local $$add58 i32) - (local $$add62 i32) - (local $$add64 i32) - (local $$add74$i$i i32) - (local $$add77$i i32) - (local $$add78$i i32) - (local $$add79$i$i i32) - (local $$add8 i32) - (local $$add82$i i32) - (local $$add83$i$i i32) - (local $$add85$i$i i32) - (local $$add86$i i32) - (local $$add88$i$i i32) - (local $$add9$i i32) - (local $$add90$i i32) - (local $$add92$i i32) - (local $$and i32) - (local $$and$i i32) - (local $$and$i$12$i i32) - (local $$and$i$14$i i32) - (local $$and$i$143 i32) - (local $$and$i$22$i i32) - (local $$and$i$33$i i32) - (local $$and$i$i i32) - (local $$and$i$i$i i32) - (local $$and100$i i32) - (local $$and103$i i32) - (local $$and104$i i32) - (local $$and106 i32) - (local $$and11$i i32) - (local $$and119$i$i i32) - (local $$and12$i i32) - (local $$and13$i i32) - (local $$and13$i$i i32) - (local $$and133$i$i i32) - (local $$and14 i32) - (local $$and145 i32) - (local $$and17$i i32) - (local $$and194$i i32) - (local $$and194$i$204 i32) - (local $$and199$i i32) - (local $$and209$i$i i32) - (local $$and21$i i32) - (local $$and21$i$149 i32) - (local $$and227$i$i i32) - (local $$and236$i i32) - (local $$and264$i$i i32) - (local $$and268$i$i i32) - (local $$and273$i$i i32) - (local $$and282$i$i i32) - (local $$and29$i i32) - (local $$and292$i i32) - (local $$and295$i$i i32) - (local $$and3$i i32) - (local $$and3$i$24$i i32) - (local $$and3$i$35$i i32) - (local $$and3$i$i i32) - (local $$and3$i$i$i i32) - (local $$and30$i i32) - (local $$and318$i$i i32) - (local $$and32$i i32) - (local $$and32$i$i i32) - (local $$and33$i$i i32) - (local $$and331$i i32) - (local $$and336$i i32) - (local $$and341$i i32) - (local $$and350$i i32) - (local $$and363$i i32) - (local $$and37$i$i i32) - (local $$and387$i i32) - (local $$and4 i32) - (local $$and40$i$i i32) - (local $$and41 i32) - (local $$and42$i i32) - (local $$and43 i32) - (local $$and46 i32) - (local $$and49 i32) - (local $$and49$i i32) - (local $$and49$i$i i32) - (local $$and53 i32) - (local $$and57 i32) - (local $$and6$i i32) - (local $$and6$i$38$i i32) - (local $$and6$i$i i32) - (local $$and61 i32) - (local $$and64$i i32) - (local $$and68$i i32) - (local $$and69$i$i i32) - (local $$and7 i32) - (local $$and7$i$i i32) - (local $$and73$i i32) - (local $$and73$i$i i32) - (local $$and74 i32) - (local $$and77$i i32) - (local $$and78$i$i i32) - (local $$and8$i i32) - (local $$and80$i i32) - (local $$and81$i i32) - (local $$and85$i i32) - (local $$and87$i$i i32) - (local $$and89$i i32) - (local $$and9$i i32) - (local $$and96$i$i i32) - (local $$arrayidx i32) - (local $$arrayidx$i i32) - (local $$arrayidx$i$150 i32) - (local $$arrayidx$i$20$i i32) - (local $$arrayidx$i$48$i i32) - (local $$arrayidx$i$i i32) - (local $$arrayidx103 i32) - (local $$arrayidx103$i$i i32) - (local $$arrayidx106$i i32) - (local $$arrayidx107$i$i i32) - (local $$arrayidx113$i i32) - (local $$arrayidx113$i$159 i32) - (local $$arrayidx121$i i32) - (local $$arrayidx123$i$i i32) - (local $$arrayidx126$i$i i32) - (local $$arrayidx126$i$i$lcssa i32) - (local $$arrayidx137$i i32) - (local $$arrayidx143$i$i i32) - (local $$arrayidx148$i i32) - (local $$arrayidx151$i i32) - (local $$arrayidx151$i$i i32) - (local $$arrayidx154$i i32) - (local $$arrayidx155$i i32) - (local $$arrayidx161$i i32) - (local $$arrayidx165$i i32) - (local $$arrayidx165$i$169 i32) - (local $$arrayidx178$i$i i32) - (local $$arrayidx184$i i32) - (local $$arrayidx184$i$i i32) - (local $$arrayidx195$i$i i32) - (local $$arrayidx196$i i32) - (local $$arrayidx204$i i32) - (local $$arrayidx212$i i32) - (local $$arrayidx223$i$i i32) - (local $$arrayidx228$i i32) - (local $$arrayidx23$i i32) - (local $$arrayidx239$i i32) - (local $$arrayidx245$i i32) - (local $$arrayidx256$i i32) - (local $$arrayidx27$i i32) - (local $$arrayidx287$i$i i32) - (local $$arrayidx289$i i32) - (local $$arrayidx290$i$i i32) - (local $$arrayidx325$i$i i32) - (local $$arrayidx325$i$i$lcssa i32) - (local $$arrayidx355$i i32) - (local $$arrayidx358$i i32) - (local $$arrayidx394$i i32) - (local $$arrayidx394$i$lcssa i32) - (local $$arrayidx40$i i32) - (local $$arrayidx44$i i32) - (local $$arrayidx61$i i32) - (local $$arrayidx65$i i32) - (local $$arrayidx66 i32) - (local $$arrayidx71$i i32) - (local $$arrayidx75$i i32) - (local $$arrayidx91$i$i i32) - (local $$arrayidx92$i$i i32) - (local $$arrayidx94$i i32) - (local $$arrayidx94$i$156 i32) - (local $$arrayidx96$i$i i32) - (local $$base$i$i$lcssa i32) - (local $$base226$i$lcssa i32) - (local $$bk i32) - (local $$bk$i i32) - (local $$bk$i$163 i32) - (local $$bk$i$46$i i32) - (local $$bk$i$i i32) - (local $$bk102$i$i i32) - (local $$bk122 i32) - (local $$bk124 i32) - (local $$bk136$i i32) - (local $$bk139$i$i i32) - (local $$bk158$i$i i32) - (local $$bk161$i$i i32) - (local $$bk218$i i32) - (local $$bk220$i i32) - (local $$bk246$i$i i32) - (local $$bk248$i$i i32) - (local $$bk302$i$i i32) - (local $$bk311$i i32) - (local $$bk313$i i32) - (local $$bk338$i$i i32) - (local $$bk357$i$i i32) - (local $$bk360$i$i i32) - (local $$bk370$i i32) - (local $$bk407$i i32) - (local $$bk429$i i32) - (local $$bk43$i$i i32) - (local $$bk432$i i32) - (local $$bk47$i i32) - (local $$bk55$i$i i32) - (local $$bk67$i$i i32) - (local $$bk74$i$i i32) - (local $$bk78 i32) - (local $$bk82$i$i i32) - (local $$br$2$ph$i i32) - (local $$call$i$i i32) - (local $$call107$i i32) - (local $$call131$i i32) - (local $$call132$i i32) - (local $$call275$i i32) - (local $$call37$i i32) - (local $$call6$i$i i32) - (local $$call68$i i32) - (local $$call83$i i32) - (local $$child$i$i i32) - (local $$child166$i$i i32) - (local $$child289$i$i i32) - (local $$child357$i i32) - (local $$cmp i32) - (local $$cmp$i i32) - (local $$cmp$i$13$i i32) - (local $$cmp$i$140 i32) - (local $$cmp$i$15$i i32) - (local $$cmp$i$179 i32) - (local $$cmp$i$2$i$i i32) - (local $$cmp$i$23$i i32) - (local $$cmp$i$34$i i32) - (local $$cmp$i$9$i i32) - (local $$cmp$i$i$i i32) - (local $$cmp1 i32) - (local $$cmp1$i i32) - (local $$cmp1$i$i i32) - (local $$cmp10 i32) - (local $$cmp100$i$i i32) - (local $$cmp102$i i32) - (local $$cmp104$i$i i32) - (local $$cmp105$i i32) - (local $$cmp106$i$i i32) - (local $$cmp107$i i32) - (local $$cmp107$i$157 i32) - (local $$cmp108$i i32) - (local $$cmp108$i$i i32) - (local $$cmp112$i$i i32) - (local $$cmp113 i32) - (local $$cmp114$i i32) - (local $$cmp116$i i32) - (local $$cmp118$i i32) - (local $$cmp119$i i32) - (local $$cmp12$i i32) - (local $$cmp120$i$53$i i32) - (local $$cmp120$i$i i32) - (local $$cmp121$i i32) - (local $$cmp123$i i32) - (local $$cmp124$i$i i32) - (local $$cmp126$i i32) - (local $$cmp127$i i32) - (local $$cmp128 i32) - (local $$cmp128$i i32) - (local $$cmp128$i$i i32) - (local $$cmp130$i i32) - (local $$cmp133$i i32) - (local $$cmp133$i$196 i32) - (local $$cmp133$i$i i32) - (local $$cmp135$i i32) - (local $$cmp137$i i32) - (local $$cmp137$i$197 i32) - (local $$cmp137$i$i i32) - (local $$cmp138$i i32) - (local $$cmp139 i32) - (local $$cmp140$i i32) - (local $$cmp141$not$i i32) - (local $$cmp142$i i32) - (local $$cmp144$i$i i32) - (local $$cmp146 i32) - (local $$cmp15 i32) - (local $$cmp15$i i32) - (local $$cmp151$i i32) - (local $$cmp152$i i32) - (local $$cmp153$i$i i32) - (local $$cmp155$i i32) - (local $$cmp156 i32) - (local $$cmp156$i i32) - (local $$cmp156$i$i i32) - (local $$cmp157$i i32) - (local $$cmp159$i i32) - (local $$cmp159$i$199 i32) - (local $$cmp16 i32) - (local $$cmp160$i$i i32) - (local $$cmp162 i32) - (local $$cmp162$i i32) - (local $$cmp162$i$200 i32) - (local $$cmp166$i i32) - (local $$cmp168$i$i i32) - (local $$cmp171$i i32) - (local $$cmp172$i$i i32) - (local $$cmp174$i i32) - (local $$cmp180$i i32) - (local $$cmp185$i i32) - (local $$cmp185$i$i i32) - (local $$cmp186 i32) - (local $$cmp186$i i32) - (local $$cmp189$i$i i32) - (local $$cmp19$i i32) - (local $$cmp190$i i32) - (local $$cmp191$i i32) - (local $$cmp198$i i32) - (local $$cmp2$i$i i32) - (local $$cmp2$i$i$i i32) - (local $$cmp20$i$i i32) - (local $$cmp203$i i32) - (local $$cmp205$i i32) - (local $$cmp208$i i32) - (local $$cmp209$i i32) - (local $$cmp21$i i32) - (local $$cmp215$i$i i32) - (local $$cmp217$i i32) - (local $$cmp218$i i32) - (local $$cmp221$i i32) - (local $$cmp224$i i32) - (local $$cmp228$i i32) - (local $$cmp229$i i32) - (local $$cmp233$i i32) - (local $$cmp236$i$i i32) - (local $$cmp24$i i32) - (local $$cmp24$i$i i32) - (local $$cmp246$i i32) - (local $$cmp250$i i32) - (local $$cmp254$i$i i32) - (local $$cmp257$i i32) - (local $$cmp258$i$i i32) - (local $$cmp26$i i32) - (local $$cmp265$i i32) - (local $$cmp27$i$i i32) - (local $$cmp28$i i32) - (local $$cmp28$i$i i32) - (local $$cmp284$i i32) - (local $$cmp29 i32) - (local $$cmp3$i$i i32) - (local $$cmp301$i i32) - (local $$cmp306$i$i i32) - (local $$cmp31 i32) - (local $$cmp319$i i32) - (local $$cmp319$i$i i32) - (local $$cmp32$i i32) - (local $$cmp32$i$185 i32) - (local $$cmp323$i i32) - (local $$cmp327$i$i i32) - (local $$cmp33$i i32) - (local $$cmp332$i$i i32) - (local $$cmp34$i i32) - (local $$cmp34$i$i i32) - (local $$cmp35$i i32) - (local $$cmp350$i$i i32) - (local $$cmp36$i i32) - (local $$cmp36$i$i i32) - (local $$cmp374$i i32) - (local $$cmp38$i i32) - (local $$cmp38$i$i i32) - (local $$cmp388$i i32) - (local $$cmp396$i i32) - (local $$cmp40$i i32) - (local $$cmp401$i i32) - (local $$cmp41$i$i i32) - (local $$cmp42$i$i i32) - (local $$cmp422$i i32) - (local $$cmp43$i i32) - (local $$cmp44$i$i i32) - (local $$cmp45$i i32) - (local $$cmp45$i$155 i32) - (local $$cmp46$i i32) - (local $$cmp46$i$49$i i32) - (local $$cmp46$i$i i32) - (local $$cmp48$i i32) - (local $$cmp49$i i32) - (local $$cmp5 i32) - (local $$cmp51$i i32) - (local $$cmp54$i$i i32) - (local $$cmp55$i i32) - (local $$cmp55$i$187 i32) - (local $$cmp57$i i32) - (local $$cmp57$i$188 i32) - (local $$cmp57$i$i i32) - (local $$cmp59$i$i i32) - (local $$cmp60$i i32) - (local $$cmp60$i$i i32) - (local $$cmp62$i i32) - (local $$cmp63$i i32) - (local $$cmp63$i$i i32) - (local $$cmp65$i i32) - (local $$cmp66$i i32) - (local $$cmp66$i$190 i32) - (local $$cmp69$i i32) - (local $$cmp7$i$i i32) - (local $$cmp70 i32) - (local $$cmp72$i i32) - (local $$cmp75$i$i i32) - (local $$cmp76 i32) - (local $$cmp76$i i32) - (local $$cmp79 i32) - (local $$cmp81$i i32) - (local $$cmp81$i$191 i32) - (local $$cmp81$i$i i32) - (local $$cmp83$i$i i32) - (local $$cmp85$i i32) - (local $$cmp86$i$i i32) - (local $$cmp89$i i32) - (local $$cmp9$i$i i32) - (local $$cmp90$i i32) - (local $$cmp91$i i32) - (local $$cmp93$i i32) - (local $$cmp95$i i32) - (local $$cmp96$i i32) - (local $$cmp97$7$i i32) - (local $$cmp97$i i32) - (local $$cmp97$i$i i32) - (local $$cmp99 i32) - (local $$cond i32) - (local $$cond$i i32) - (local $$cond$i$16$i i32) - (local $$cond$i$25$i i32) - (local $$cond$i$36$i i32) - (local $$cond$i$i i32) - (local $$cond$i$i$i i32) - (local $$cond$v$0$i i32) - (local $$cond115$i$i i32) - (local $$cond13$i$i i32) - (local $$cond15$i$i i32) - (local $$cond2$i i32) - (local $$cond2$i$i i32) - (local $$cond3$i i32) - (local $$cond315$i$i i32) - (local $$cond383$i i32) - (local $$cond4$i i32) - (local $$exitcond$i$i i32) - (local $$fd$i i32) - (local $$fd$i$164 i32) - (local $$fd$i$i i32) - (local $$fd103$i$i i32) - (local $$fd123 i32) - (local $$fd139$i i32) - (local $$fd140$i$i i32) - (local $$fd148$i$i i32) - (local $$fd160$i$i i32) - (local $$fd219$i i32) - (local $$fd247$i$i i32) - (local $$fd303$i$i i32) - (local $$fd312$i i32) - (local $$fd339$i$i i32) - (local $$fd344$i$i i32) - (local $$fd359$i$i i32) - (local $$fd371$i i32) - (local $$fd408$i i32) - (local $$fd416$i i32) - (local $$fd431$i i32) - (local $$fd50$i i32) - (local $$fd54$i$i i32) - (local $$fd59$i$i i32) - (local $$fd68$pre$phi$i$iZ2D i32) - (local $$fd69 i32) - (local $$fd78$i$i i32) - (local $$fd85$i$i i32) - (local $$fd9 i32) - (local $$head i32) - (local $$head$i i32) - (local $$head$i$154 i32) - (local $$head$i$17$i i32) - (local $$head$i$29$i i32) - (local $$head$i$42$i i32) - (local $$head$i$i i32) - (local $$head$i$i$i i32) - (local $$head118$i$i i32) - (local $$head168 i32) - (local $$head173 i32) - (local $$head177 i32) - (local $$head179 i32) - (local $$head179$i i32) - (local $$head182$i i32) - (local $$head187$i i32) - (local $$head189$i i32) - (local $$head195 i32) - (local $$head198 i32) - (local $$head208$i$i i32) - (local $$head211$i$i i32) - (local $$head23$i$i i32) - (local $$head25 i32) - (local $$head265$i i32) - (local $$head268$i i32) - (local $$head271$i i32) - (local $$head274$i i32) - (local $$head279$i i32) - (local $$head281$i i32) - (local $$head29$i i32) - (local $$head29$i$i i32) - (local $$head317$i$i i32) - (local $$head32$i$i i32) - (local $$head34$i$i i32) - (local $$head386$i i32) - (local $$head7$i$31$i i32) - (local $$head7$i$i i32) - (local $$head7$i$i$i i32) - (local $$head94 i32) - (local $$head97 i32) - (local $$head99$i i32) - (local $$i$01$i$i i32) - (local $$idx$0$i i32) - (local $$inc$i$i i32) - (local $$index$i i32) - (local $$index$i$172 i32) - (local $$index$i$54$i i32) - (local $$index$i$i i32) - (local $$index288$i$i i32) - (local $$index356$i i32) - (local $$nb$0 i32) - (local $$neg i32) - (local $$neg$i i32) - (local $$neg$i$173 i32) - (local $$neg$i$182 i32) - (local $$neg$i$i i32) - (local $$neg103$i i32) - (local $$neg13 i32) - (local $$neg132$i$i i32) - (local $$neg48$i i32) - (local $$neg73 i32) - (local $$next$i i32) - (local $$next$i$i i32) - (local $$next$i$i$i i32) - (local $$next231$i i32) - (local $$not$cmp150$i$i i32) - (local $$not$cmp346$i$i i32) - (local $$not$cmp418$i i32) - (local $$oldfirst$0$i$i i32) - (local $$or$cond$i i32) - (local $$or$cond$i$189 i32) - (local $$or$cond1$i i32) - (local $$or$cond1$i$184 i32) - (local $$or$cond2$i i32) - (local $$or$cond3$i i32) - (local $$or$cond4$i i32) - (local $$or$cond5$i i32) - (local $$or$cond7$i i32) - (local $$or$cond8$i i32) - (local $$or$cond98$i i32) - (local $$or$i i32) - (local $$or$i$195 i32) - (local $$or$i$28$i i32) - (local $$or$i$i i32) - (local $$or$i$i$i i32) - (local $$or101$i$i i32) - (local $$or110 i32) - (local $$or167 i32) - (local $$or172 i32) - (local $$or176 i32) - (local $$or178$i i32) - (local $$or180 i32) - (local $$or183$i i32) - (local $$or186$i i32) - (local $$or188$i i32) - (local $$or19$i$i i32) - (local $$or194 i32) - (local $$or197 i32) - (local $$or204$i i32) - (local $$or210$i$i i32) - (local $$or22$i$i i32) - (local $$or23 i32) - (local $$or232$i$i i32) - (local $$or26 i32) - (local $$or264$i i32) - (local $$or267$i i32) - (local $$or270$i i32) - (local $$or275$i i32) - (local $$or278$i i32) - (local $$or28$i$i i32) - (local $$or280$i i32) - (local $$or297$i i32) - (local $$or300$i$i i32) - (local $$or33$i$i i32) - (local $$or368$i i32) - (local $$or40 i32) - (local $$or44$i$i i32) - (local $$or93 i32) - (local $$or96 i32) - (local $$p$0$i$i i32) - (local $$parent$i i32) - (local $$parent$i$162 i32) - (local $$parent$i$51$i i32) - (local $$parent$i$i i32) - (local $$parent135$i i32) - (local $$parent138$i$i i32) - (local $$parent149$i i32) - (local $$parent162$i$i i32) - (local $$parent165$i$i i32) - (local $$parent166$i i32) - (local $$parent179$i$i i32) - (local $$parent196$i$i i32) - (local $$parent226$i i32) - (local $$parent240$i i32) - (local $$parent257$i i32) - (local $$parent301$i$i i32) - (local $$parent337$i$i i32) - (local $$parent361$i$i i32) - (local $$parent369$i i32) - (local $$parent406$i i32) - (local $$parent433$i i32) - (local $$qsize$0$i$i i32) - (local $$retval$0 i32) - (local $$rsize$0$i i32) - (local $$rsize$0$i$152 i32) - (local $$rsize$0$i$lcssa i32) - (local $$rsize$1$i i32) - (local $$rsize$3$i i32) - (local $$rsize$4$lcssa$i i32) - (local $$rsize$49$i i32) - (local $$rst$0$i i32) - (local $$rst$1$i i32) - (local $$sflags193$i i32) - (local $$sflags235$i i32) - (local $$shl i32) - (local $$shl$i i32) - (local $$shl$i$144 i32) - (local $$shl$i$19$i i32) - (local $$shl$i$47$i i32) - (local $$shl$i$i i32) - (local $$shl102 i32) - (local $$shl105 i32) - (local $$shl116$i$i i32) - (local $$shl12 i32) - (local $$shl127$i$i i32) - (local $$shl131$i$i i32) - (local $$shl15$i i32) - (local $$shl18$i i32) - (local $$shl192$i i32) - (local $$shl195$i i32) - (local $$shl198$i i32) - (local $$shl22 i32) - (local $$shl221$i$i i32) - (local $$shl226$i$i i32) - (local $$shl265$i$i i32) - (local $$shl270$i$i i32) - (local $$shl276$i$i i32) - (local $$shl279$i$i i32) - (local $$shl288$i i32) - (local $$shl291$i i32) - (local $$shl294$i$i i32) - (local $$shl31$i i32) - (local $$shl316$i$i i32) - (local $$shl326$i$i i32) - (local $$shl333$i i32) - (local $$shl338$i i32) - (local $$shl344$i i32) - (local $$shl347$i i32) - (local $$shl35 i32) - (local $$shl362$i i32) - (local $$shl37 i32) - (local $$shl384$i i32) - (local $$shl39$i$i i32) - (local $$shl395$i i32) - (local $$shl48$i$i i32) - (local $$shl52$i i32) - (local $$shl60$i i32) - (local $$shl65 i32) - (local $$shl70$i$i i32) - (local $$shl72 i32) - (local $$shl75$i$i i32) - (local $$shl81$i$i i32) - (local $$shl84$i$i i32) - (local $$shl9$i i32) - (local $$shl90 i32) - (local $$shl95$i$i i32) - (local $$shr i32) - (local $$shr$i i32) - (local $$shr$i$139 i32) - (local $$shr$i$45$i i32) - (local $$shr$i$i i32) - (local $$shr101 i32) - (local $$shr11$i i32) - (local $$shr11$i$147 i32) - (local $$shr110$i$i i32) - (local $$shr12$i i32) - (local $$shr123$i$i i32) - (local $$shr15$i i32) - (local $$shr16$i i32) - (local $$shr16$i$148 i32) - (local $$shr19$i i32) - (local $$shr194$i i32) - (local $$shr20$i i32) - (local $$shr214$i$i i32) - (local $$shr253$i$i i32) - (local $$shr263$i$i i32) - (local $$shr267$i$i i32) - (local $$shr27$i i32) - (local $$shr272$i$i i32) - (local $$shr277$i$i i32) - (local $$shr281$i$i i32) - (local $$shr283$i i32) - (local $$shr3 i32) - (local $$shr310$i$i i32) - (local $$shr318$i i32) - (local $$shr322$i$i i32) - (local $$shr330$i i32) - (local $$shr335$i i32) - (local $$shr340$i i32) - (local $$shr345$i i32) - (local $$shr349$i i32) - (local $$shr378$i i32) - (local $$shr391$i i32) - (local $$shr4$i i32) - (local $$shr41$i i32) - (local $$shr45 i32) - (local $$shr47 i32) - (local $$shr48 i32) - (local $$shr5$i i32) - (local $$shr5$i$142 i32) - (local $$shr51 i32) - (local $$shr52 i32) - (local $$shr55 i32) - (local $$shr56 i32) - (local $$shr58$i$i i32) - (local $$shr59 i32) - (local $$shr60 i32) - (local $$shr63 i32) - (local $$shr68$i$i i32) - (local $$shr7$i i32) - (local $$shr7$i$145 i32) - (local $$shr72$i i32) - (local $$shr72$i$i i32) - (local $$shr75$i i32) - (local $$shr76$i i32) - (local $$shr77$i$i i32) - (local $$shr79$i i32) - (local $$shr8$i i32) - (local $$shr80$i i32) - (local $$shr82$i$i i32) - (local $$shr83$i i32) - (local $$shr84$i i32) - (local $$shr86$i$i i32) - (local $$shr87$i i32) - (local $$shr88$i i32) - (local $$shr91$i i32) - (local $$size$i$i i32) - (local $$size$i$i$i i32) - (local $$size$i$i$lcssa i32) - (local $$size188$i i32) - (local $$size188$i$lcssa i32) - (local $$size245$i i32) - (local $$sizebits$0$i i32) - (local $$sizebits$0$shl52$i i32) - (local $$sp$0$i$i i32) - (local $$sp$0$i$i$i i32) - (local $$sp$0108$i i32) - (local $$sp$0108$i$lcssa i32) - (local $$sp$1107$i i32) - (local $$sp$1107$i$lcssa i32) - (local $$ssize$0$i i32) - (local $$ssize$2$ph$i i32) - (local $$ssize$5$i i32) - (local $$sub i32) - (local $$sub$i i32) - (local $$sub$i$138 i32) - (local $$sub$i$181 i32) - (local $$sub$i$i i32) - (local $$sub$ptr$lhs$cast$i i32) - (local $$sub$ptr$lhs$cast$i$39$i i32) - (local $$sub$ptr$lhs$cast$i$i i32) - (local $$sub$ptr$rhs$cast$i i32) - (local $$sub$ptr$rhs$cast$i$40$i i32) - (local $$sub$ptr$rhs$cast$i$i i32) - (local $$sub$ptr$sub$i i32) - (local $$sub$ptr$sub$i$41$i i32) - (local $$sub$ptr$sub$i$i i32) - (local $$sub10$i i32) - (local $$sub101$i i32) - (local $$sub101$rsize$4$i i32) - (local $$sub112$i i32) - (local $$sub113$i$i i32) - (local $$sub118$i i32) - (local $$sub14$i i32) - (local $$sub16$i$i i32) - (local $$sub160 i32) - (local $$sub172$i i32) - (local $$sub18$i$i i32) - (local $$sub190 i32) - (local $$sub2$i i32) - (local $$sub22$i i32) - (local $$sub260$i i32) - (local $$sub262$i$i i32) - (local $$sub266$i$i i32) - (local $$sub271$i$i i32) - (local $$sub275$i$i i32) - (local $$sub30$i i32) - (local $$sub31$i i32) - (local $$sub31$rsize$0$i i32) - (local $$sub313$i$i i32) - (local $$sub329$i i32) - (local $$sub33$i i32) - (local $$sub334$i i32) - (local $$sub339$i i32) - (local $$sub343$i i32) - (local $$sub381$i i32) - (local $$sub4$i i32) - (local $$sub41$i i32) - (local $$sub42 i32) - (local $$sub44 i32) - (local $$sub5$i$27$i i32) - (local $$sub5$i$i i32) - (local $$sub5$i$i$i i32) - (local $$sub50$i i32) - (local $$sub6$i i32) - (local $$sub63$i i32) - (local $$sub67$i i32) - (local $$sub67$i$i i32) - (local $$sub70$i i32) - (local $$sub71$i$i i32) - (local $$sub76$i$i i32) - (local $$sub80$i$i i32) - (local $$sub91 i32) - (local $$sub99$i i32) - (local $$t$0$i i32) - (local $$t$0$i$151 i32) - (local $$t$2$i i32) - (local $$t$4$ph$i i32) - (local $$t$4$v$4$i i32) - (local $$t$48$i i32) - (local $$tbase$796$i i32) - (local $$tobool$i$i i32) - (local $$tobool107 i32) - (local $$tobool195$i i32) - (local $$tobool200$i i32) - (local $$tobool228$i$i i32) - (local $$tobool237$i i32) - (local $$tobool293$i i32) - (local $$tobool296$i$i i32) - (local $$tobool30$i i32) - (local $$tobool364$i i32) - (local $$tobool97$i$i i32) - (local $$tsize$795$i i32) - (local $$v$0$i i32) - (local $$v$0$i$153 i32) - (local $$v$0$i$lcssa i32) - (local $$v$1$i i32) - (local $$v$3$i i32) - (local $$v$4$lcssa$i i32) - (local $$v$410$i i32) - (local $$xor$i$i i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$cmp - (i32.lt_u - (local.get $$bytes) - (i32.const 245) - ) - ) - (block $do-once - (if - (local.get $$cmp) - (block - (local.set $$cmp1 - (i32.lt_u - (local.get $$bytes) - (i32.const 11) - ) - ) - (local.set $$add2 - (i32.add - (local.get $$bytes) - (i32.const 11) - ) - ) - (local.set $$and - (i32.and - (local.get $$add2) - (i32.const -8) - ) - ) - (local.set $$cond - (if (result i32) - (local.get $$cmp1) - (i32.const 16) - (local.get $$and) - ) - ) - (local.set $$shr - (i32.shr_u - (local.get $$cond) - (i32.const 3) - ) - ) - (local.set $$0 - (i32.load - (i32.const 176) - ) - ) - (local.set $$shr3 - (i32.shr_u - (local.get $$0) - (local.get $$shr) - ) - ) - (local.set $$and4 - (i32.and - (local.get $$shr3) - (i32.const 3) - ) - ) - (local.set $$cmp5 - (i32.eq - (local.get $$and4) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp5) - ) - (block - (local.set $$neg - (i32.and - (local.get $$shr3) - (i32.const 1) - ) - ) - (local.set $$and7 - (i32.xor - (local.get $$neg) - (i32.const 1) - ) - ) - (local.set $$add8 - (i32.add - (local.get $$and7) - (local.get $$shr) - ) - ) - (local.set $$shl - (i32.shl - (local.get $$add8) - (i32.const 1) - ) - ) - (local.set $$arrayidx - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl) - (i32.const 2) - ) - ) - ) - (local.set $$1 - (i32.add - (local.get $$arrayidx) - (i32.const 8) - ) - ) - (local.set $$2 - (i32.load - (local.get $$1) - ) - ) - (local.set $$fd9 - (i32.add - (local.get $$2) - (i32.const 8) - ) - ) - (local.set $$3 - (i32.load - (local.get $$fd9) - ) - ) - (local.set $$cmp10 - (i32.eq - (local.get $$arrayidx) - (local.get $$3) - ) - ) - (block $do-once0 - (if - (local.get $$cmp10) - (block - (local.set $$shl12 - (i32.shl - (i32.const 1) - (local.get $$add8) - ) - ) - (local.set $$neg13 - (i32.xor - (local.get $$shl12) - (i32.const -1) - ) - ) - (local.set $$and14 - (i32.and - (local.get $$0) - (local.get $$neg13) - ) - ) - (i32.store - (i32.const 176) - (local.get $$and14) - ) - ) - (block - (local.set $$4 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp15 - (i32.lt_u - (local.get $$3) - (local.get $$4) - ) - ) - (if - (local.get $$cmp15) - (call $_abort) - ) - (local.set $$bk - (i32.add - (local.get $$3) - (i32.const 12) - ) - ) - (local.set $$5 - (i32.load - (local.get $$bk) - ) - ) - (local.set $$cmp16 - (i32.eq - (local.get $$5) - (local.get $$2) - ) - ) - (if - (local.get $$cmp16) - (block - (i32.store - (local.get $$bk) - (local.get $$arrayidx) - ) - (i32.store - (local.get $$1) - (local.get $$3) - ) - (br $do-once0) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$shl22 - (i32.shl - (local.get $$add8) - (i32.const 3) - ) - ) - (local.set $$or23 - (i32.or - (local.get $$shl22) - (i32.const 3) - ) - ) - (local.set $$head - (i32.add - (local.get $$2) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head) - (local.get $$or23) - ) - (local.set $$add$ptr - (i32.add - (local.get $$2) - (local.get $$shl22) - ) - ) - (local.set $$head25 - (i32.add - (local.get $$add$ptr) - (i32.const 4) - ) - ) - (local.set $$6 - (i32.load - (local.get $$head25) - ) - ) - (local.set $$or26 - (i32.or - (local.get $$6) - (i32.const 1) - ) - ) - (i32.store - (local.get $$head25) - (local.get $$or26) - ) - (local.set $$retval$0 - (local.get $$fd9) - ) - (return - (local.get $$retval$0) - ) - ) - ) - (local.set $$7 - (i32.load - (i32.const 184) - ) - ) - (local.set $$cmp29 - (i32.gt_u - (local.get $$cond) - (local.get $$7) - ) - ) - (if - (local.get $$cmp29) - (block - (local.set $$cmp31 - (i32.eq - (local.get $$shr3) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp31) - ) - (block - (local.set $$shl35 - (i32.shl - (local.get $$shr3) - (local.get $$shr) - ) - ) - (local.set $$shl37 - (i32.shl - (i32.const 2) - (local.get $$shr) - ) - ) - (local.set $$sub - (i32.sub - (i32.const 0) - (local.get $$shl37) - ) - ) - (local.set $$or40 - (i32.or - (local.get $$shl37) - (local.get $$sub) - ) - ) - (local.set $$and41 - (i32.and - (local.get $$shl35) - (local.get $$or40) - ) - ) - (local.set $$sub42 - (i32.sub - (i32.const 0) - (local.get $$and41) - ) - ) - (local.set $$and43 - (i32.and - (local.get $$and41) - (local.get $$sub42) - ) - ) - (local.set $$sub44 - (i32.add - (local.get $$and43) - (i32.const -1) - ) - ) - (local.set $$shr45 - (i32.shr_u - (local.get $$sub44) - (i32.const 12) - ) - ) - (local.set $$and46 - (i32.and - (local.get $$shr45) - (i32.const 16) - ) - ) - (local.set $$shr47 - (i32.shr_u - (local.get $$sub44) - (local.get $$and46) - ) - ) - (local.set $$shr48 - (i32.shr_u - (local.get $$shr47) - (i32.const 5) - ) - ) - (local.set $$and49 - (i32.and - (local.get $$shr48) - (i32.const 8) - ) - ) - (local.set $$add50 - (i32.or - (local.get $$and49) - (local.get $$and46) - ) - ) - (local.set $$shr51 - (i32.shr_u - (local.get $$shr47) - (local.get $$and49) - ) - ) - (local.set $$shr52 - (i32.shr_u - (local.get $$shr51) - (i32.const 2) - ) - ) - (local.set $$and53 - (i32.and - (local.get $$shr52) - (i32.const 4) - ) - ) - (local.set $$add54 - (i32.or - (local.get $$add50) - (local.get $$and53) - ) - ) - (local.set $$shr55 - (i32.shr_u - (local.get $$shr51) - (local.get $$and53) - ) - ) - (local.set $$shr56 - (i32.shr_u - (local.get $$shr55) - (i32.const 1) - ) - ) - (local.set $$and57 - (i32.and - (local.get $$shr56) - (i32.const 2) - ) - ) - (local.set $$add58 - (i32.or - (local.get $$add54) - (local.get $$and57) - ) - ) - (local.set $$shr59 - (i32.shr_u - (local.get $$shr55) - (local.get $$and57) - ) - ) - (local.set $$shr60 - (i32.shr_u - (local.get $$shr59) - (i32.const 1) - ) - ) - (local.set $$and61 - (i32.and - (local.get $$shr60) - (i32.const 1) - ) - ) - (local.set $$add62 - (i32.or - (local.get $$add58) - (local.get $$and61) - ) - ) - (local.set $$shr63 - (i32.shr_u - (local.get $$shr59) - (local.get $$and61) - ) - ) - (local.set $$add64 - (i32.add - (local.get $$add62) - (local.get $$shr63) - ) - ) - (local.set $$shl65 - (i32.shl - (local.get $$add64) - (i32.const 1) - ) - ) - (local.set $$arrayidx66 - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl65) - (i32.const 2) - ) - ) - ) - (local.set $$8 - (i32.add - (local.get $$arrayidx66) - (i32.const 8) - ) - ) - (local.set $$9 - (i32.load - (local.get $$8) - ) - ) - (local.set $$fd69 - (i32.add - (local.get $$9) - (i32.const 8) - ) - ) - (local.set $$10 - (i32.load - (local.get $$fd69) - ) - ) - (local.set $$cmp70 - (i32.eq - (local.get $$arrayidx66) - (local.get $$10) - ) - ) - (block $do-once2 - (if - (local.get $$cmp70) - (block - (local.set $$shl72 - (i32.shl - (i32.const 1) - (local.get $$add64) - ) - ) - (local.set $$neg73 - (i32.xor - (local.get $$shl72) - (i32.const -1) - ) - ) - (local.set $$and74 - (i32.and - (local.get $$0) - (local.get $$neg73) - ) - ) - (i32.store - (i32.const 176) - (local.get $$and74) - ) - (local.set $$13 - (local.get $$7) - ) - ) - (block - (local.set $$11 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp76 - (i32.lt_u - (local.get $$10) - (local.get $$11) - ) - ) - (if - (local.get $$cmp76) - (call $_abort) - ) - (local.set $$bk78 - (i32.add - (local.get $$10) - (i32.const 12) - ) - ) - (local.set $$12 - (i32.load - (local.get $$bk78) - ) - ) - (local.set $$cmp79 - (i32.eq - (local.get $$12) - (local.get $$9) - ) - ) - (if - (local.get $$cmp79) - (block - (i32.store - (local.get $$bk78) - (local.get $$arrayidx66) - ) - (i32.store - (local.get $$8) - (local.get $$10) - ) - (local.set $$$pre - (i32.load - (i32.const 184) - ) - ) - (local.set $$13 - (local.get $$$pre) - ) - (br $do-once2) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$shl90 - (i32.shl - (local.get $$add64) - (i32.const 3) - ) - ) - (local.set $$sub91 - (i32.sub - (local.get $$shl90) - (local.get $$cond) - ) - ) - (local.set $$or93 - (i32.or - (local.get $$cond) - (i32.const 3) - ) - ) - (local.set $$head94 - (i32.add - (local.get $$9) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head94) - (local.get $$or93) - ) - (local.set $$add$ptr95 - (i32.add - (local.get $$9) - (local.get $$cond) - ) - ) - (local.set $$or96 - (i32.or - (local.get $$sub91) - (i32.const 1) - ) - ) - (local.set $$head97 - (i32.add - (local.get $$add$ptr95) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head97) - (local.get $$or96) - ) - (local.set $$add$ptr98 - (i32.add - (local.get $$add$ptr95) - (local.get $$sub91) - ) - ) - (i32.store - (local.get $$add$ptr98) - (local.get $$sub91) - ) - (local.set $$cmp99 - (i32.eq - (local.get $$13) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp99) - ) - (block - (local.set $$14 - (i32.load - (i32.const 196) - ) - ) - (local.set $$shr101 - (i32.shr_u - (local.get $$13) - (i32.const 3) - ) - ) - (local.set $$shl102 - (i32.shl - (local.get $$shr101) - (i32.const 1) - ) - ) - (local.set $$arrayidx103 - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl102) - (i32.const 2) - ) - ) - ) - (local.set $$15 - (i32.load - (i32.const 176) - ) - ) - (local.set $$shl105 - (i32.shl - (i32.const 1) - (local.get $$shr101) - ) - ) - (local.set $$and106 - (i32.and - (local.get $$15) - (local.get $$shl105) - ) - ) - (local.set $$tobool107 - (i32.eq - (local.get $$and106) - (i32.const 0) - ) - ) - (if - (local.get $$tobool107) - (block - (local.set $$or110 - (i32.or - (local.get $$15) - (local.get $$shl105) - ) - ) - (i32.store - (i32.const 176) - (local.get $$or110) - ) - (local.set $$$pre241 - (i32.add - (local.get $$arrayidx103) - (i32.const 8) - ) - ) - (local.set $$$pre$phiZ2D - (local.get $$$pre241) - ) - (local.set $$F104$0 - (local.get $$arrayidx103) - ) - ) - (block - (local.set $$16 - (i32.add - (local.get $$arrayidx103) - (i32.const 8) - ) - ) - (local.set $$17 - (i32.load - (local.get $$16) - ) - ) - (local.set $$18 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp113 - (i32.lt_u - (local.get $$17) - (local.get $$18) - ) - ) - (if - (local.get $$cmp113) - (call $_abort) - (block - (local.set $$$pre$phiZ2D - (local.get $$16) - ) - (local.set $$F104$0 - (local.get $$17) - ) - ) - ) - ) - ) - (i32.store - (local.get $$$pre$phiZ2D) - (local.get $$14) - ) - (local.set $$bk122 - (i32.add - (local.get $$F104$0) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk122) - (local.get $$14) - ) - (local.set $$fd123 - (i32.add - (local.get $$14) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd123) - (local.get $$F104$0) - ) - (local.set $$bk124 - (i32.add - (local.get $$14) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk124) - (local.get $$arrayidx103) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $$sub91) - ) - (i32.store - (i32.const 196) - (local.get $$add$ptr95) - ) - (local.set $$retval$0 - (local.get $$fd69) - ) - (return - (local.get $$retval$0) - ) - ) - ) - (local.set $$19 - (i32.load - (i32.const 180) - ) - ) - (local.set $$cmp128 - (i32.eq - (local.get $$19) - (i32.const 0) - ) - ) - (if - (local.get $$cmp128) - (local.set $$nb$0 - (local.get $$cond) - ) - (block - (local.set $$sub$i - (i32.sub - (i32.const 0) - (local.get $$19) - ) - ) - (local.set $$and$i - (i32.and - (local.get $$19) - (local.get $$sub$i) - ) - ) - (local.set $$sub2$i - (i32.add - (local.get $$and$i) - (i32.const -1) - ) - ) - (local.set $$shr$i - (i32.shr_u - (local.get $$sub2$i) - (i32.const 12) - ) - ) - (local.set $$and3$i - (i32.and - (local.get $$shr$i) - (i32.const 16) - ) - ) - (local.set $$shr4$i - (i32.shr_u - (local.get $$sub2$i) - (local.get $$and3$i) - ) - ) - (local.set $$shr5$i - (i32.shr_u - (local.get $$shr4$i) - (i32.const 5) - ) - ) - (local.set $$and6$i - (i32.and - (local.get $$shr5$i) - (i32.const 8) - ) - ) - (local.set $$add$i - (i32.or - (local.get $$and6$i) - (local.get $$and3$i) - ) - ) - (local.set $$shr7$i - (i32.shr_u - (local.get $$shr4$i) - (local.get $$and6$i) - ) - ) - (local.set $$shr8$i - (i32.shr_u - (local.get $$shr7$i) - (i32.const 2) - ) - ) - (local.set $$and9$i - (i32.and - (local.get $$shr8$i) - (i32.const 4) - ) - ) - (local.set $$add10$i - (i32.or - (local.get $$add$i) - (local.get $$and9$i) - ) - ) - (local.set $$shr11$i - (i32.shr_u - (local.get $$shr7$i) - (local.get $$and9$i) - ) - ) - (local.set $$shr12$i - (i32.shr_u - (local.get $$shr11$i) - (i32.const 1) - ) - ) - (local.set $$and13$i - (i32.and - (local.get $$shr12$i) - (i32.const 2) - ) - ) - (local.set $$add14$i - (i32.or - (local.get $$add10$i) - (local.get $$and13$i) - ) - ) - (local.set $$shr15$i - (i32.shr_u - (local.get $$shr11$i) - (local.get $$and13$i) - ) - ) - (local.set $$shr16$i - (i32.shr_u - (local.get $$shr15$i) - (i32.const 1) - ) - ) - (local.set $$and17$i - (i32.and - (local.get $$shr16$i) - (i32.const 1) - ) - ) - (local.set $$add18$i - (i32.or - (local.get $$add14$i) - (local.get $$and17$i) - ) - ) - (local.set $$shr19$i - (i32.shr_u - (local.get $$shr15$i) - (local.get $$and17$i) - ) - ) - (local.set $$add20$i - (i32.add - (local.get $$add18$i) - (local.get $$shr19$i) - ) - ) - (local.set $$arrayidx$i - (i32.add - (i32.const 480) - (i32.shl - (local.get $$add20$i) - (i32.const 2) - ) - ) - ) - (local.set $$20 - (i32.load - (local.get $$arrayidx$i) - ) - ) - (local.set $$head$i - (i32.add - (local.get $$20) - (i32.const 4) - ) - ) - (local.set $$21 - (i32.load - (local.get $$head$i) - ) - ) - (local.set $$and21$i - (i32.and - (local.get $$21) - (i32.const -8) - ) - ) - (local.set $$sub22$i - (i32.sub - (local.get $$and21$i) - (local.get $$cond) - ) - ) - (local.set $$rsize$0$i - (local.get $$sub22$i) - ) - (local.set $$t$0$i - (local.get $$20) - ) - (local.set $$v$0$i - (local.get $$20) - ) - (loop $while-in - (block $while-out - (local.set $$arrayidx23$i - (i32.add - (local.get $$t$0$i) - (i32.const 16) - ) - ) - (local.set $$22 - (i32.load - (local.get $$arrayidx23$i) - ) - ) - (local.set $$cmp$i - (i32.eq - (local.get $$22) - (i32.const 0) - ) - ) - (if - (local.get $$cmp$i) - (block - (local.set $$arrayidx27$i - (i32.add - (local.get $$t$0$i) - (i32.const 20) - ) - ) - (local.set $$23 - (i32.load - (local.get $$arrayidx27$i) - ) - ) - (local.set $$cmp28$i - (i32.eq - (local.get $$23) - (i32.const 0) - ) - ) - (if - (local.get $$cmp28$i) - (block - (local.set $$rsize$0$i$lcssa - (local.get $$rsize$0$i) - ) - (local.set $$v$0$i$lcssa - (local.get $$v$0$i) - ) - (br $while-out) - ) - (local.set $$cond4$i - (local.get $$23) - ) - ) - ) - (local.set $$cond4$i - (local.get $$22) - ) - ) - (local.set $$head29$i - (i32.add - (local.get $$cond4$i) - (i32.const 4) - ) - ) - (local.set $$24 - (i32.load - (local.get $$head29$i) - ) - ) - (local.set $$and30$i - (i32.and - (local.get $$24) - (i32.const -8) - ) - ) - (local.set $$sub31$i - (i32.sub - (local.get $$and30$i) - (local.get $$cond) - ) - ) - (local.set $$cmp32$i - (i32.lt_u - (local.get $$sub31$i) - (local.get $$rsize$0$i) - ) - ) - (local.set $$sub31$rsize$0$i - (if (result i32) - (local.get $$cmp32$i) - (local.get $$sub31$i) - (local.get $$rsize$0$i) - ) - ) - (local.set $$cond$v$0$i - (if (result i32) - (local.get $$cmp32$i) - (local.get $$cond4$i) - (local.get $$v$0$i) - ) - ) - (local.set $$rsize$0$i - (local.get $$sub31$rsize$0$i) - ) - (local.set $$t$0$i - (local.get $$cond4$i) - ) - (local.set $$v$0$i - (local.get $$cond$v$0$i) - ) - (br $while-in) - ) - ) - (local.set $$25 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp33$i - (i32.lt_u - (local.get $$v$0$i$lcssa) - (local.get $$25) - ) - ) - (if - (local.get $$cmp33$i) - (call $_abort) - ) - (local.set $$add$ptr$i - (i32.add - (local.get $$v$0$i$lcssa) - (local.get $$cond) - ) - ) - (local.set $$cmp35$i - (i32.lt_u - (local.get $$v$0$i$lcssa) - (local.get $$add$ptr$i) - ) - ) - (if - (i32.eqz - (local.get $$cmp35$i) - ) - (call $_abort) - ) - (local.set $$parent$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 24) - ) - ) - (local.set $$26 - (i32.load - (local.get $$parent$i) - ) - ) - (local.set $$bk$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 12) - ) - ) - (local.set $$27 - (i32.load - (local.get $$bk$i) - ) - ) - (local.set $$cmp40$i - (i32.eq - (local.get $$27) - (local.get $$v$0$i$lcssa) - ) - ) - (block $do-once4 - (if - (local.get $$cmp40$i) - (block - (local.set $$arrayidx61$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 20) - ) - ) - (local.set $$31 - (i32.load - (local.get $$arrayidx61$i) - ) - ) - (local.set $$cmp62$i - (i32.eq - (local.get $$31) - (i32.const 0) - ) - ) - (if - (local.get $$cmp62$i) - (block - (local.set $$arrayidx65$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 16) - ) - ) - (local.set $$32 - (i32.load - (local.get $$arrayidx65$i) - ) - ) - (local.set $$cmp66$i - (i32.eq - (local.get $$32) - (i32.const 0) - ) - ) - (if - (local.get $$cmp66$i) - (block - (local.set $$R$3$i - (i32.const 0) - ) - (br $do-once4) - ) - (block - (local.set $$R$1$i - (local.get $$32) - ) - (local.set $$RP$1$i - (local.get $$arrayidx65$i) - ) - ) - ) - ) - (block - (local.set $$R$1$i - (local.get $$31) - ) - (local.set $$RP$1$i - (local.get $$arrayidx61$i) - ) - ) - ) - (loop $while-in7 - (block $while-out6 - (local.set $$arrayidx71$i - (i32.add - (local.get $$R$1$i) - (i32.const 20) - ) - ) - (local.set $$33 - (i32.load - (local.get $$arrayidx71$i) - ) - ) - (local.set $$cmp72$i - (i32.eq - (local.get $$33) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp72$i) - ) - (block - (local.set $$R$1$i - (local.get $$33) - ) - (local.set $$RP$1$i - (local.get $$arrayidx71$i) - ) - (br $while-in7) - ) - ) - (local.set $$arrayidx75$i - (i32.add - (local.get $$R$1$i) - (i32.const 16) - ) - ) - (local.set $$34 - (i32.load - (local.get $$arrayidx75$i) - ) - ) - (local.set $$cmp76$i - (i32.eq - (local.get $$34) - (i32.const 0) - ) - ) - (if - (local.get $$cmp76$i) - (block - (local.set $$R$1$i$lcssa - (local.get $$R$1$i) - ) - (local.set $$RP$1$i$lcssa - (local.get $$RP$1$i) - ) - (br $while-out6) - ) - (block - (local.set $$R$1$i - (local.get $$34) - ) - (local.set $$RP$1$i - (local.get $$arrayidx75$i) - ) - ) - ) - (br $while-in7) - ) - ) - (local.set $$cmp81$i - (i32.lt_u - (local.get $$RP$1$i$lcssa) - (local.get $$25) - ) - ) - (if - (local.get $$cmp81$i) - (call $_abort) - (block - (i32.store - (local.get $$RP$1$i$lcssa) - (i32.const 0) - ) - (local.set $$R$3$i - (local.get $$R$1$i$lcssa) - ) - (br $do-once4) - ) - ) - ) - (block - (local.set $$fd$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 8) - ) - ) - (local.set $$28 - (i32.load - (local.get $$fd$i) - ) - ) - (local.set $$cmp45$i - (i32.lt_u - (local.get $$28) - (local.get $$25) - ) - ) - (if - (local.get $$cmp45$i) - (call $_abort) - ) - (local.set $$bk47$i - (i32.add - (local.get $$28) - (i32.const 12) - ) - ) - (local.set $$29 - (i32.load - (local.get $$bk47$i) - ) - ) - (local.set $$cmp48$i - (i32.eq - (local.get $$29) - (local.get $$v$0$i$lcssa) - ) - ) - (if - (i32.eqz - (local.get $$cmp48$i) - ) - (call $_abort) - ) - (local.set $$fd50$i - (i32.add - (local.get $$27) - (i32.const 8) - ) - ) - (local.set $$30 - (i32.load - (local.get $$fd50$i) - ) - ) - (local.set $$cmp51$i - (i32.eq - (local.get $$30) - (local.get $$v$0$i$lcssa) - ) - ) - (if - (local.get $$cmp51$i) - (block - (i32.store - (local.get $$bk47$i) - (local.get $$27) - ) - (i32.store - (local.get $$fd50$i) - (local.get $$28) - ) - (local.set $$R$3$i - (local.get $$27) - ) - (br $do-once4) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$cmp90$i - (i32.eq - (local.get $$26) - (i32.const 0) - ) - ) - (block $do-once8 - (if - (i32.eqz - (local.get $$cmp90$i) - ) - (block - (local.set $$index$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 28) - ) - ) - (local.set $$35 - (i32.load - (local.get $$index$i) - ) - ) - (local.set $$arrayidx94$i - (i32.add - (i32.const 480) - (i32.shl - (local.get $$35) - (i32.const 2) - ) - ) - ) - (local.set $$36 - (i32.load - (local.get $$arrayidx94$i) - ) - ) - (local.set $$cmp95$i - (i32.eq - (local.get $$v$0$i$lcssa) - (local.get $$36) - ) - ) - (if - (local.get $$cmp95$i) - (block - (i32.store - (local.get $$arrayidx94$i) - (local.get $$R$3$i) - ) - (local.set $$cond2$i - (i32.eq - (local.get $$R$3$i) - (i32.const 0) - ) - ) - (if - (local.get $$cond2$i) - (block - (local.set $$shl$i - (i32.shl - (i32.const 1) - (local.get $$35) - ) - ) - (local.set $$neg$i - (i32.xor - (local.get $$shl$i) - (i32.const -1) - ) - ) - (local.set $$37 - (i32.load - (i32.const 180) - ) - ) - (local.set $$and103$i - (i32.and - (local.get $$37) - (local.get $$neg$i) - ) - ) - (i32.store - (i32.const 180) - (local.get $$and103$i) - ) - (br $do-once8) - ) - ) - ) - (block - (local.set $$38 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp107$i - (i32.lt_u - (local.get $$26) - (local.get $$38) - ) - ) - (if - (local.get $$cmp107$i) - (call $_abort) - ) - (local.set $$arrayidx113$i - (i32.add - (local.get $$26) - (i32.const 16) - ) - ) - (local.set $$39 - (i32.load - (local.get $$arrayidx113$i) - ) - ) - (local.set $$cmp114$i - (i32.eq - (local.get $$39) - (local.get $$v$0$i$lcssa) - ) - ) - (if - (local.get $$cmp114$i) - (i32.store - (local.get $$arrayidx113$i) - (local.get $$R$3$i) - ) - (block - (local.set $$arrayidx121$i - (i32.add - (local.get $$26) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx121$i) - (local.get $$R$3$i) - ) - ) - ) - (local.set $$cmp126$i - (i32.eq - (local.get $$R$3$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp126$i) - (br $do-once8) - ) - ) - ) - (local.set $$40 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp130$i - (i32.lt_u - (local.get $$R$3$i) - (local.get $$40) - ) - ) - (if - (local.get $$cmp130$i) - (call $_abort) - ) - (local.set $$parent135$i - (i32.add - (local.get $$R$3$i) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent135$i) - (local.get $$26) - ) - (local.set $$arrayidx137$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 16) - ) - ) - (local.set $$41 - (i32.load - (local.get $$arrayidx137$i) - ) - ) - (local.set $$cmp138$i - (i32.eq - (local.get $$41) - (i32.const 0) - ) - ) - (block $do-once10 - (if - (i32.eqz - (local.get $$cmp138$i) - ) - (block - (local.set $$cmp142$i - (i32.lt_u - (local.get $$41) - (local.get $$40) - ) - ) - (if - (local.get $$cmp142$i) - (call $_abort) - (block - (local.set $$arrayidx148$i - (i32.add - (local.get $$R$3$i) - (i32.const 16) - ) - ) - (i32.store - (local.get $$arrayidx148$i) - (local.get $$41) - ) - (local.set $$parent149$i - (i32.add - (local.get $$41) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent149$i) - (local.get $$R$3$i) - ) - (br $do-once10) - ) - ) - ) - ) - ) - (local.set $$arrayidx154$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 20) - ) - ) - (local.set $$42 - (i32.load - (local.get $$arrayidx154$i) - ) - ) - (local.set $$cmp155$i - (i32.eq - (local.get $$42) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp155$i) - ) - (block - (local.set $$43 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp159$i - (i32.lt_u - (local.get $$42) - (local.get $$43) - ) - ) - (if - (local.get $$cmp159$i) - (call $_abort) - (block - (local.set $$arrayidx165$i - (i32.add - (local.get $$R$3$i) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx165$i) - (local.get $$42) - ) - (local.set $$parent166$i - (i32.add - (local.get $$42) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent166$i) - (local.get $$R$3$i) - ) - (br $do-once8) - ) - ) - ) - ) - ) - ) - ) - (local.set $$cmp174$i - (i32.lt_u - (local.get $$rsize$0$i$lcssa) - (i32.const 16) - ) - ) - (if - (local.get $$cmp174$i) - (block - (local.set $$add177$i - (i32.add - (local.get $$rsize$0$i$lcssa) - (local.get $$cond) - ) - ) - (local.set $$or178$i - (i32.or - (local.get $$add177$i) - (i32.const 3) - ) - ) - (local.set $$head179$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head179$i) - (local.get $$or178$i) - ) - (local.set $$add$ptr181$i - (i32.add - (local.get $$v$0$i$lcssa) - (local.get $$add177$i) - ) - ) - (local.set $$head182$i - (i32.add - (local.get $$add$ptr181$i) - (i32.const 4) - ) - ) - (local.set $$44 - (i32.load - (local.get $$head182$i) - ) - ) - (local.set $$or183$i - (i32.or - (local.get $$44) - (i32.const 1) - ) - ) - (i32.store - (local.get $$head182$i) - (local.get $$or183$i) - ) - ) - (block - (local.set $$or186$i - (i32.or - (local.get $$cond) - (i32.const 3) - ) - ) - (local.set $$head187$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head187$i) - (local.get $$or186$i) - ) - (local.set $$or188$i - (i32.or - (local.get $$rsize$0$i$lcssa) - (i32.const 1) - ) - ) - (local.set $$head189$i - (i32.add - (local.get $$add$ptr$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head189$i) - (local.get $$or188$i) - ) - (local.set $$add$ptr190$i - (i32.add - (local.get $$add$ptr$i) - (local.get $$rsize$0$i$lcssa) - ) - ) - (i32.store - (local.get $$add$ptr190$i) - (local.get $$rsize$0$i$lcssa) - ) - (local.set $$45 - (i32.load - (i32.const 184) - ) - ) - (local.set $$cmp191$i - (i32.eq - (local.get $$45) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp191$i) - ) - (block - (local.set $$46 - (i32.load - (i32.const 196) - ) - ) - (local.set $$shr194$i - (i32.shr_u - (local.get $$45) - (i32.const 3) - ) - ) - (local.set $$shl195$i - (i32.shl - (local.get $$shr194$i) - (i32.const 1) - ) - ) - (local.set $$arrayidx196$i - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl195$i) - (i32.const 2) - ) - ) - ) - (local.set $$47 - (i32.load - (i32.const 176) - ) - ) - (local.set $$shl198$i - (i32.shl - (i32.const 1) - (local.get $$shr194$i) - ) - ) - (local.set $$and199$i - (i32.and - (local.get $$47) - (local.get $$shl198$i) - ) - ) - (local.set $$tobool200$i - (i32.eq - (local.get $$and199$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool200$i) - (block - (local.set $$or204$i - (i32.or - (local.get $$47) - (local.get $$shl198$i) - ) - ) - (i32.store - (i32.const 176) - (local.get $$or204$i) - ) - (local.set $$$pre$i - (i32.add - (local.get $$arrayidx196$i) - (i32.const 8) - ) - ) - (local.set $$$pre$phi$iZ2D - (local.get $$$pre$i) - ) - (local.set $$F197$0$i - (local.get $$arrayidx196$i) - ) - ) - (block - (local.set $$48 - (i32.add - (local.get $$arrayidx196$i) - (i32.const 8) - ) - ) - (local.set $$49 - (i32.load - (local.get $$48) - ) - ) - (local.set $$50 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp208$i - (i32.lt_u - (local.get $$49) - (local.get $$50) - ) - ) - (if - (local.get $$cmp208$i) - (call $_abort) - (block - (local.set $$$pre$phi$iZ2D - (local.get $$48) - ) - (local.set $$F197$0$i - (local.get $$49) - ) - ) - ) - ) - ) - (i32.store - (local.get $$$pre$phi$iZ2D) - (local.get $$46) - ) - (local.set $$bk218$i - (i32.add - (local.get $$F197$0$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk218$i) - (local.get $$46) - ) - (local.set $$fd219$i - (i32.add - (local.get $$46) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd219$i) - (local.get $$F197$0$i) - ) - (local.set $$bk220$i - (i32.add - (local.get $$46) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk220$i) - (local.get $$arrayidx196$i) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $$rsize$0$i$lcssa) - ) - (i32.store - (i32.const 196) - (local.get $$add$ptr$i) - ) - ) - ) - (local.set $$add$ptr225$i - (i32.add - (local.get $$v$0$i$lcssa) - (i32.const 8) - ) - ) - (local.set $$retval$0 - (local.get $$add$ptr225$i) - ) - (return - (local.get $$retval$0) - ) - ) - ) - ) - (local.set $$nb$0 - (local.get $$cond) - ) - ) - ) - (block - (local.set $$cmp139 - (i32.gt_u - (local.get $$bytes) - (i32.const -65) - ) - ) - (if - (local.get $$cmp139) - (local.set $$nb$0 - (i32.const -1) - ) - (block - (local.set $$add144 - (i32.add - (local.get $$bytes) - (i32.const 11) - ) - ) - (local.set $$and145 - (i32.and - (local.get $$add144) - (i32.const -8) - ) - ) - (local.set $$51 - (i32.load - (i32.const 180) - ) - ) - (local.set $$cmp146 - (i32.eq - (local.get $$51) - (i32.const 0) - ) - ) - (if - (local.get $$cmp146) - (local.set $$nb$0 - (local.get $$and145) - ) - (block - (local.set $$sub$i$138 - (i32.sub - (i32.const 0) - (local.get $$and145) - ) - ) - (local.set $$shr$i$139 - (i32.shr_u - (local.get $$add144) - (i32.const 8) - ) - ) - (local.set $$cmp$i$140 - (i32.eq - (local.get $$shr$i$139) - (i32.const 0) - ) - ) - (if - (local.get $$cmp$i$140) - (local.set $$idx$0$i - (i32.const 0) - ) - (block - (local.set $$cmp1$i - (i32.gt_u - (local.get $$and145) - (i32.const 16777215) - ) - ) - (if - (local.get $$cmp1$i) - (local.set $$idx$0$i - (i32.const 31) - ) - (block - (local.set $$sub4$i - (i32.add - (local.get $$shr$i$139) - (i32.const 1048320) - ) - ) - (local.set $$shr5$i$142 - (i32.shr_u - (local.get $$sub4$i) - (i32.const 16) - ) - ) - (local.set $$and$i$143 - (i32.and - (local.get $$shr5$i$142) - (i32.const 8) - ) - ) - (local.set $$shl$i$144 - (i32.shl - (local.get $$shr$i$139) - (local.get $$and$i$143) - ) - ) - (local.set $$sub6$i - (i32.add - (local.get $$shl$i$144) - (i32.const 520192) - ) - ) - (local.set $$shr7$i$145 - (i32.shr_u - (local.get $$sub6$i) - (i32.const 16) - ) - ) - (local.set $$and8$i - (i32.and - (local.get $$shr7$i$145) - (i32.const 4) - ) - ) - (local.set $$add$i$146 - (i32.or - (local.get $$and8$i) - (local.get $$and$i$143) - ) - ) - (local.set $$shl9$i - (i32.shl - (local.get $$shl$i$144) - (local.get $$and8$i) - ) - ) - (local.set $$sub10$i - (i32.add - (local.get $$shl9$i) - (i32.const 245760) - ) - ) - (local.set $$shr11$i$147 - (i32.shr_u - (local.get $$sub10$i) - (i32.const 16) - ) - ) - (local.set $$and12$i - (i32.and - (local.get $$shr11$i$147) - (i32.const 2) - ) - ) - (local.set $$add13$i - (i32.or - (local.get $$add$i$146) - (local.get $$and12$i) - ) - ) - (local.set $$sub14$i - (i32.sub - (i32.const 14) - (local.get $$add13$i) - ) - ) - (local.set $$shl15$i - (i32.shl - (local.get $$shl9$i) - (local.get $$and12$i) - ) - ) - (local.set $$shr16$i$148 - (i32.shr_u - (local.get $$shl15$i) - (i32.const 15) - ) - ) - (local.set $$add17$i - (i32.add - (local.get $$sub14$i) - (local.get $$shr16$i$148) - ) - ) - (local.set $$shl18$i - (i32.shl - (local.get $$add17$i) - (i32.const 1) - ) - ) - (local.set $$add19$i - (i32.add - (local.get $$add17$i) - (i32.const 7) - ) - ) - (local.set $$shr20$i - (i32.shr_u - (local.get $$and145) - (local.get $$add19$i) - ) - ) - (local.set $$and21$i$149 - (i32.and - (local.get $$shr20$i) - (i32.const 1) - ) - ) - (local.set $$add22$i - (i32.or - (local.get $$and21$i$149) - (local.get $$shl18$i) - ) - ) - (local.set $$idx$0$i - (local.get $$add22$i) - ) - ) - ) - ) - ) - (local.set $$arrayidx$i$150 - (i32.add - (i32.const 480) - (i32.shl - (local.get $$idx$0$i) - (i32.const 2) - ) - ) - ) - (local.set $$52 - (i32.load - (local.get $$arrayidx$i$150) - ) - ) - (local.set $$cmp24$i - (i32.eq - (local.get $$52) - (i32.const 0) - ) - ) - (block $label$break$L123 - (if - (local.get $$cmp24$i) - (block - (local.set $$rsize$3$i - (local.get $$sub$i$138) - ) - (local.set $$t$2$i - (i32.const 0) - ) - (local.set $$v$3$i - (i32.const 0) - ) - (local.set $label - (i32.const 86) - ) - ) - (block - (local.set $$cmp26$i - (i32.eq - (local.get $$idx$0$i) - (i32.const 31) - ) - ) - (local.set $$shr27$i - (i32.shr_u - (local.get $$idx$0$i) - (i32.const 1) - ) - ) - (local.set $$sub30$i - (i32.sub - (i32.const 25) - (local.get $$shr27$i) - ) - ) - (local.set $$cond$i - (if (result i32) - (local.get $$cmp26$i) - (i32.const 0) - (local.get $$sub30$i) - ) - ) - (local.set $$shl31$i - (i32.shl - (local.get $$and145) - (local.get $$cond$i) - ) - ) - (local.set $$rsize$0$i$152 - (local.get $$sub$i$138) - ) - (local.set $$rst$0$i - (i32.const 0) - ) - (local.set $$sizebits$0$i - (local.get $$shl31$i) - ) - (local.set $$t$0$i$151 - (local.get $$52) - ) - (local.set $$v$0$i$153 - (i32.const 0) - ) - (loop $while-in14 - (block $while-out13 - (local.set $$head$i$154 - (i32.add - (local.get $$t$0$i$151) - (i32.const 4) - ) - ) - (local.set $$53 - (i32.load - (local.get $$head$i$154) - ) - ) - (local.set $$and32$i - (i32.and - (local.get $$53) - (i32.const -8) - ) - ) - (local.set $$sub33$i - (i32.sub - (local.get $$and32$i) - (local.get $$and145) - ) - ) - (local.set $$cmp34$i - (i32.lt_u - (local.get $$sub33$i) - (local.get $$rsize$0$i$152) - ) - ) - (if - (local.get $$cmp34$i) - (block - (local.set $$cmp36$i - (i32.eq - (local.get $$and32$i) - (local.get $$and145) - ) - ) - (if - (local.get $$cmp36$i) - (block - (local.set $$rsize$49$i - (local.get $$sub33$i) - ) - (local.set $$t$48$i - (local.get $$t$0$i$151) - ) - (local.set $$v$410$i - (local.get $$t$0$i$151) - ) - (local.set $label - (i32.const 90) - ) - (br $label$break$L123) - ) - (block - (local.set $$rsize$1$i - (local.get $$sub33$i) - ) - (local.set $$v$1$i - (local.get $$t$0$i$151) - ) - ) - ) - ) - (block - (local.set $$rsize$1$i - (local.get $$rsize$0$i$152) - ) - (local.set $$v$1$i - (local.get $$v$0$i$153) - ) - ) - ) - (local.set $$arrayidx40$i - (i32.add - (local.get $$t$0$i$151) - (i32.const 20) - ) - ) - (local.set $$54 - (i32.load - (local.get $$arrayidx40$i) - ) - ) - (local.set $$shr41$i - (i32.shr_u - (local.get $$sizebits$0$i) - (i32.const 31) - ) - ) - (local.set $$arrayidx44$i - (i32.add - (i32.add - (local.get $$t$0$i$151) - (i32.const 16) - ) - (i32.shl - (local.get $$shr41$i) - (i32.const 2) - ) - ) - ) - (local.set $$55 - (i32.load - (local.get $$arrayidx44$i) - ) - ) - (local.set $$cmp45$i$155 - (i32.eq - (local.get $$54) - (i32.const 0) - ) - ) - (local.set $$cmp46$i - (i32.eq - (local.get $$54) - (local.get $$55) - ) - ) - (local.set $$or$cond1$i - (i32.or - (local.get $$cmp45$i$155) - (local.get $$cmp46$i) - ) - ) - (local.set $$rst$1$i - (if (result i32) - (local.get $$or$cond1$i) - (local.get $$rst$0$i) - (local.get $$54) - ) - ) - (local.set $$cmp49$i - (i32.eq - (local.get $$55) - (i32.const 0) - ) - ) - (local.set $$56 - (i32.and - (local.get $$cmp49$i) - (i32.const 1) - ) - ) - (local.set $$shl52$i - (i32.xor - (local.get $$56) - (i32.const 1) - ) - ) - (local.set $$sizebits$0$shl52$i - (i32.shl - (local.get $$sizebits$0$i) - (local.get $$shl52$i) - ) - ) - (if - (local.get $$cmp49$i) - (block - (local.set $$rsize$3$i - (local.get $$rsize$1$i) - ) - (local.set $$t$2$i - (local.get $$rst$1$i) - ) - (local.set $$v$3$i - (local.get $$v$1$i) - ) - (local.set $label - (i32.const 86) - ) - (br $while-out13) - ) - (block - (local.set $$rsize$0$i$152 - (local.get $$rsize$1$i) - ) - (local.set $$rst$0$i - (local.get $$rst$1$i) - ) - (local.set $$sizebits$0$i - (local.get $$sizebits$0$shl52$i) - ) - (local.set $$t$0$i$151 - (local.get $$55) - ) - (local.set $$v$0$i$153 - (local.get $$v$1$i) - ) - ) - ) - (br $while-in14) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 86) - ) - (block - (local.set $$cmp55$i - (i32.eq - (local.get $$t$2$i) - (i32.const 0) - ) - ) - (local.set $$cmp57$i - (i32.eq - (local.get $$v$3$i) - (i32.const 0) - ) - ) - (local.set $$or$cond$i - (i32.and - (local.get $$cmp55$i) - (local.get $$cmp57$i) - ) - ) - (if - (local.get $$or$cond$i) - (block - (local.set $$shl60$i - (i32.shl - (i32.const 2) - (local.get $$idx$0$i) - ) - ) - (local.set $$sub63$i - (i32.sub - (i32.const 0) - (local.get $$shl60$i) - ) - ) - (local.set $$or$i - (i32.or - (local.get $$shl60$i) - (local.get $$sub63$i) - ) - ) - (local.set $$and64$i - (i32.and - (local.get $$51) - (local.get $$or$i) - ) - ) - (local.set $$cmp65$i - (i32.eq - (local.get $$and64$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp65$i) - (block - (local.set $$nb$0 - (local.get $$and145) - ) - (br $do-once) - ) - ) - (local.set $$sub67$i - (i32.sub - (i32.const 0) - (local.get $$and64$i) - ) - ) - (local.set $$and68$i - (i32.and - (local.get $$and64$i) - (local.get $$sub67$i) - ) - ) - (local.set $$sub70$i - (i32.add - (local.get $$and68$i) - (i32.const -1) - ) - ) - (local.set $$shr72$i - (i32.shr_u - (local.get $$sub70$i) - (i32.const 12) - ) - ) - (local.set $$and73$i - (i32.and - (local.get $$shr72$i) - (i32.const 16) - ) - ) - (local.set $$shr75$i - (i32.shr_u - (local.get $$sub70$i) - (local.get $$and73$i) - ) - ) - (local.set $$shr76$i - (i32.shr_u - (local.get $$shr75$i) - (i32.const 5) - ) - ) - (local.set $$and77$i - (i32.and - (local.get $$shr76$i) - (i32.const 8) - ) - ) - (local.set $$add78$i - (i32.or - (local.get $$and77$i) - (local.get $$and73$i) - ) - ) - (local.set $$shr79$i - (i32.shr_u - (local.get $$shr75$i) - (local.get $$and77$i) - ) - ) - (local.set $$shr80$i - (i32.shr_u - (local.get $$shr79$i) - (i32.const 2) - ) - ) - (local.set $$and81$i - (i32.and - (local.get $$shr80$i) - (i32.const 4) - ) - ) - (local.set $$add82$i - (i32.or - (local.get $$add78$i) - (local.get $$and81$i) - ) - ) - (local.set $$shr83$i - (i32.shr_u - (local.get $$shr79$i) - (local.get $$and81$i) - ) - ) - (local.set $$shr84$i - (i32.shr_u - (local.get $$shr83$i) - (i32.const 1) - ) - ) - (local.set $$and85$i - (i32.and - (local.get $$shr84$i) - (i32.const 2) - ) - ) - (local.set $$add86$i - (i32.or - (local.get $$add82$i) - (local.get $$and85$i) - ) - ) - (local.set $$shr87$i - (i32.shr_u - (local.get $$shr83$i) - (local.get $$and85$i) - ) - ) - (local.set $$shr88$i - (i32.shr_u - (local.get $$shr87$i) - (i32.const 1) - ) - ) - (local.set $$and89$i - (i32.and - (local.get $$shr88$i) - (i32.const 1) - ) - ) - (local.set $$add90$i - (i32.or - (local.get $$add86$i) - (local.get $$and89$i) - ) - ) - (local.set $$shr91$i - (i32.shr_u - (local.get $$shr87$i) - (local.get $$and89$i) - ) - ) - (local.set $$add92$i - (i32.add - (local.get $$add90$i) - (local.get $$shr91$i) - ) - ) - (local.set $$arrayidx94$i$156 - (i32.add - (i32.const 480) - (i32.shl - (local.get $$add92$i) - (i32.const 2) - ) - ) - ) - (local.set $$57 - (i32.load - (local.get $$arrayidx94$i$156) - ) - ) - (local.set $$t$4$ph$i - (local.get $$57) - ) - ) - (local.set $$t$4$ph$i - (local.get $$t$2$i) - ) - ) - (local.set $$cmp97$7$i - (i32.eq - (local.get $$t$4$ph$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp97$7$i) - (block - (local.set $$rsize$4$lcssa$i - (local.get $$rsize$3$i) - ) - (local.set $$v$4$lcssa$i - (local.get $$v$3$i) - ) - ) - (block - (local.set $$rsize$49$i - (local.get $$rsize$3$i) - ) - (local.set $$t$48$i - (local.get $$t$4$ph$i) - ) - (local.set $$v$410$i - (local.get $$v$3$i) - ) - (local.set $label - (i32.const 90) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 90) - ) - (loop $while-in16 - (block $while-out15 - (local.set $label - (i32.const 0) - ) - (local.set $$head99$i - (i32.add - (local.get $$t$48$i) - (i32.const 4) - ) - ) - (local.set $$58 - (i32.load - (local.get $$head99$i) - ) - ) - (local.set $$and100$i - (i32.and - (local.get $$58) - (i32.const -8) - ) - ) - (local.set $$sub101$i - (i32.sub - (local.get $$and100$i) - (local.get $$and145) - ) - ) - (local.set $$cmp102$i - (i32.lt_u - (local.get $$sub101$i) - (local.get $$rsize$49$i) - ) - ) - (local.set $$sub101$rsize$4$i - (if (result i32) - (local.get $$cmp102$i) - (local.get $$sub101$i) - (local.get $$rsize$49$i) - ) - ) - (local.set $$t$4$v$4$i - (if (result i32) - (local.get $$cmp102$i) - (local.get $$t$48$i) - (local.get $$v$410$i) - ) - ) - (local.set $$arrayidx106$i - (i32.add - (local.get $$t$48$i) - (i32.const 16) - ) - ) - (local.set $$59 - (i32.load - (local.get $$arrayidx106$i) - ) - ) - (local.set $$cmp107$i$157 - (i32.eq - (local.get $$59) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp107$i$157) - ) - (block - (local.set $$rsize$49$i - (local.get $$sub101$rsize$4$i) - ) - (local.set $$t$48$i - (local.get $$59) - ) - (local.set $$v$410$i - (local.get $$t$4$v$4$i) - ) - (local.set $label - (i32.const 90) - ) - (br $while-in16) - ) - ) - (local.set $$arrayidx113$i$159 - (i32.add - (local.get $$t$48$i) - (i32.const 20) - ) - ) - (local.set $$60 - (i32.load - (local.get $$arrayidx113$i$159) - ) - ) - (local.set $$cmp97$i - (i32.eq - (local.get $$60) - (i32.const 0) - ) - ) - (if - (local.get $$cmp97$i) - (block - (local.set $$rsize$4$lcssa$i - (local.get $$sub101$rsize$4$i) - ) - (local.set $$v$4$lcssa$i - (local.get $$t$4$v$4$i) - ) - (br $while-out15) - ) - (block - (local.set $$rsize$49$i - (local.get $$sub101$rsize$4$i) - ) - (local.set $$t$48$i - (local.get $$60) - ) - (local.set $$v$410$i - (local.get $$t$4$v$4$i) - ) - (local.set $label - (i32.const 90) - ) - ) - ) - (br $while-in16) - ) - ) - ) - (local.set $$cmp116$i - (i32.eq - (local.get $$v$4$lcssa$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp116$i) - (local.set $$nb$0 - (local.get $$and145) - ) - (block - (local.set $$61 - (i32.load - (i32.const 184) - ) - ) - (local.set $$sub118$i - (i32.sub - (local.get $$61) - (local.get $$and145) - ) - ) - (local.set $$cmp119$i - (i32.lt_u - (local.get $$rsize$4$lcssa$i) - (local.get $$sub118$i) - ) - ) - (if - (local.get $$cmp119$i) - (block - (local.set $$62 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp121$i - (i32.lt_u - (local.get $$v$4$lcssa$i) - (local.get $$62) - ) - ) - (if - (local.get $$cmp121$i) - (call $_abort) - ) - (local.set $$add$ptr$i$161 - (i32.add - (local.get $$v$4$lcssa$i) - (local.get $$and145) - ) - ) - (local.set $$cmp123$i - (i32.lt_u - (local.get $$v$4$lcssa$i) - (local.get $$add$ptr$i$161) - ) - ) - (if - (i32.eqz - (local.get $$cmp123$i) - ) - (call $_abort) - ) - (local.set $$parent$i$162 - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 24) - ) - ) - (local.set $$63 - (i32.load - (local.get $$parent$i$162) - ) - ) - (local.set $$bk$i$163 - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 12) - ) - ) - (local.set $$64 - (i32.load - (local.get $$bk$i$163) - ) - ) - (local.set $$cmp128$i - (i32.eq - (local.get $$64) - (local.get $$v$4$lcssa$i) - ) - ) - (block $do-once17 - (if - (local.get $$cmp128$i) - (block - (local.set $$arrayidx151$i - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 20) - ) - ) - (local.set $$68 - (i32.load - (local.get $$arrayidx151$i) - ) - ) - (local.set $$cmp152$i - (i32.eq - (local.get $$68) - (i32.const 0) - ) - ) - (if - (local.get $$cmp152$i) - (block - (local.set $$arrayidx155$i - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 16) - ) - ) - (local.set $$69 - (i32.load - (local.get $$arrayidx155$i) - ) - ) - (local.set $$cmp156$i - (i32.eq - (local.get $$69) - (i32.const 0) - ) - ) - (if - (local.get $$cmp156$i) - (block - (local.set $$R$3$i$171 - (i32.const 0) - ) - (br $do-once17) - ) - (block - (local.set $$R$1$i$168 - (local.get $$69) - ) - (local.set $$RP$1$i$167 - (local.get $$arrayidx155$i) - ) - ) - ) - ) - (block - (local.set $$R$1$i$168 - (local.get $$68) - ) - (local.set $$RP$1$i$167 - (local.get $$arrayidx151$i) - ) - ) - ) - (loop $while-in20 - (block $while-out19 - (local.set $$arrayidx161$i - (i32.add - (local.get $$R$1$i$168) - (i32.const 20) - ) - ) - (local.set $$70 - (i32.load - (local.get $$arrayidx161$i) - ) - ) - (local.set $$cmp162$i - (i32.eq - (local.get $$70) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp162$i) - ) - (block - (local.set $$R$1$i$168 - (local.get $$70) - ) - (local.set $$RP$1$i$167 - (local.get $$arrayidx161$i) - ) - (br $while-in20) - ) - ) - (local.set $$arrayidx165$i$169 - (i32.add - (local.get $$R$1$i$168) - (i32.const 16) - ) - ) - (local.set $$71 - (i32.load - (local.get $$arrayidx165$i$169) - ) - ) - (local.set $$cmp166$i - (i32.eq - (local.get $$71) - (i32.const 0) - ) - ) - (if - (local.get $$cmp166$i) - (block - (local.set $$R$1$i$168$lcssa - (local.get $$R$1$i$168) - ) - (local.set $$RP$1$i$167$lcssa - (local.get $$RP$1$i$167) - ) - (br $while-out19) - ) - (block - (local.set $$R$1$i$168 - (local.get $$71) - ) - (local.set $$RP$1$i$167 - (local.get $$arrayidx165$i$169) - ) - ) - ) - (br $while-in20) - ) - ) - (local.set $$cmp171$i - (i32.lt_u - (local.get $$RP$1$i$167$lcssa) - (local.get $$62) - ) - ) - (if - (local.get $$cmp171$i) - (call $_abort) - (block - (i32.store - (local.get $$RP$1$i$167$lcssa) - (i32.const 0) - ) - (local.set $$R$3$i$171 - (local.get $$R$1$i$168$lcssa) - ) - (br $do-once17) - ) - ) - ) - (block - (local.set $$fd$i$164 - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 8) - ) - ) - (local.set $$65 - (i32.load - (local.get $$fd$i$164) - ) - ) - (local.set $$cmp133$i - (i32.lt_u - (local.get $$65) - (local.get $$62) - ) - ) - (if - (local.get $$cmp133$i) - (call $_abort) - ) - (local.set $$bk136$i - (i32.add - (local.get $$65) - (i32.const 12) - ) - ) - (local.set $$66 - (i32.load - (local.get $$bk136$i) - ) - ) - (local.set $$cmp137$i - (i32.eq - (local.get $$66) - (local.get $$v$4$lcssa$i) - ) - ) - (if - (i32.eqz - (local.get $$cmp137$i) - ) - (call $_abort) - ) - (local.set $$fd139$i - (i32.add - (local.get $$64) - (i32.const 8) - ) - ) - (local.set $$67 - (i32.load - (local.get $$fd139$i) - ) - ) - (local.set $$cmp140$i - (i32.eq - (local.get $$67) - (local.get $$v$4$lcssa$i) - ) - ) - (if - (local.get $$cmp140$i) - (block - (i32.store - (local.get $$bk136$i) - (local.get $$64) - ) - (i32.store - (local.get $$fd139$i) - (local.get $$65) - ) - (local.set $$R$3$i$171 - (local.get $$64) - ) - (br $do-once17) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$cmp180$i - (i32.eq - (local.get $$63) - (i32.const 0) - ) - ) - (block $do-once21 - (if - (i32.eqz - (local.get $$cmp180$i) - ) - (block - (local.set $$index$i$172 - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 28) - ) - ) - (local.set $$72 - (i32.load - (local.get $$index$i$172) - ) - ) - (local.set $$arrayidx184$i - (i32.add - (i32.const 480) - (i32.shl - (local.get $$72) - (i32.const 2) - ) - ) - ) - (local.set $$73 - (i32.load - (local.get $$arrayidx184$i) - ) - ) - (local.set $$cmp185$i - (i32.eq - (local.get $$v$4$lcssa$i) - (local.get $$73) - ) - ) - (if - (local.get $$cmp185$i) - (block - (i32.store - (local.get $$arrayidx184$i) - (local.get $$R$3$i$171) - ) - (local.set $$cond3$i - (i32.eq - (local.get $$R$3$i$171) - (i32.const 0) - ) - ) - (if - (local.get $$cond3$i) - (block - (local.set $$shl192$i - (i32.shl - (i32.const 1) - (local.get $$72) - ) - ) - (local.set $$neg$i$173 - (i32.xor - (local.get $$shl192$i) - (i32.const -1) - ) - ) - (local.set $$74 - (i32.load - (i32.const 180) - ) - ) - (local.set $$and194$i - (i32.and - (local.get $$74) - (local.get $$neg$i$173) - ) - ) - (i32.store - (i32.const 180) - (local.get $$and194$i) - ) - (br $do-once21) - ) - ) - ) - (block - (local.set $$75 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp198$i - (i32.lt_u - (local.get $$63) - (local.get $$75) - ) - ) - (if - (local.get $$cmp198$i) - (call $_abort) - ) - (local.set $$arrayidx204$i - (i32.add - (local.get $$63) - (i32.const 16) - ) - ) - (local.set $$76 - (i32.load - (local.get $$arrayidx204$i) - ) - ) - (local.set $$cmp205$i - (i32.eq - (local.get $$76) - (local.get $$v$4$lcssa$i) - ) - ) - (if - (local.get $$cmp205$i) - (i32.store - (local.get $$arrayidx204$i) - (local.get $$R$3$i$171) - ) - (block - (local.set $$arrayidx212$i - (i32.add - (local.get $$63) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx212$i) - (local.get $$R$3$i$171) - ) - ) - ) - (local.set $$cmp217$i - (i32.eq - (local.get $$R$3$i$171) - (i32.const 0) - ) - ) - (if - (local.get $$cmp217$i) - (br $do-once21) - ) - ) - ) - (local.set $$77 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp221$i - (i32.lt_u - (local.get $$R$3$i$171) - (local.get $$77) - ) - ) - (if - (local.get $$cmp221$i) - (call $_abort) - ) - (local.set $$parent226$i - (i32.add - (local.get $$R$3$i$171) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent226$i) - (local.get $$63) - ) - (local.set $$arrayidx228$i - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 16) - ) - ) - (local.set $$78 - (i32.load - (local.get $$arrayidx228$i) - ) - ) - (local.set $$cmp229$i - (i32.eq - (local.get $$78) - (i32.const 0) - ) - ) - (block $do-once23 - (if - (i32.eqz - (local.get $$cmp229$i) - ) - (block - (local.set $$cmp233$i - (i32.lt_u - (local.get $$78) - (local.get $$77) - ) - ) - (if - (local.get $$cmp233$i) - (call $_abort) - (block - (local.set $$arrayidx239$i - (i32.add - (local.get $$R$3$i$171) - (i32.const 16) - ) - ) - (i32.store - (local.get $$arrayidx239$i) - (local.get $$78) - ) - (local.set $$parent240$i - (i32.add - (local.get $$78) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent240$i) - (local.get $$R$3$i$171) - ) - (br $do-once23) - ) - ) - ) - ) - ) - (local.set $$arrayidx245$i - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 20) - ) - ) - (local.set $$79 - (i32.load - (local.get $$arrayidx245$i) - ) - ) - (local.set $$cmp246$i - (i32.eq - (local.get $$79) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp246$i) - ) - (block - (local.set $$80 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp250$i - (i32.lt_u - (local.get $$79) - (local.get $$80) - ) - ) - (if - (local.get $$cmp250$i) - (call $_abort) - (block - (local.set $$arrayidx256$i - (i32.add - (local.get $$R$3$i$171) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx256$i) - (local.get $$79) - ) - (local.set $$parent257$i - (i32.add - (local.get $$79) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent257$i) - (local.get $$R$3$i$171) - ) - (br $do-once21) - ) - ) - ) - ) - ) - ) - ) - (local.set $$cmp265$i - (i32.lt_u - (local.get $$rsize$4$lcssa$i) - (i32.const 16) - ) - ) - (block $do-once25 - (if - (local.get $$cmp265$i) - (block - (local.set $$add268$i - (i32.add - (local.get $$rsize$4$lcssa$i) - (local.get $$and145) - ) - ) - (local.set $$or270$i - (i32.or - (local.get $$add268$i) - (i32.const 3) - ) - ) - (local.set $$head271$i - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head271$i) - (local.get $$or270$i) - ) - (local.set $$add$ptr273$i - (i32.add - (local.get $$v$4$lcssa$i) - (local.get $$add268$i) - ) - ) - (local.set $$head274$i - (i32.add - (local.get $$add$ptr273$i) - (i32.const 4) - ) - ) - (local.set $$81 - (i32.load - (local.get $$head274$i) - ) - ) - (local.set $$or275$i - (i32.or - (local.get $$81) - (i32.const 1) - ) - ) - (i32.store - (local.get $$head274$i) - (local.get $$or275$i) - ) - ) - (block - (local.set $$or278$i - (i32.or - (local.get $$and145) - (i32.const 3) - ) - ) - (local.set $$head279$i - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head279$i) - (local.get $$or278$i) - ) - (local.set $$or280$i - (i32.or - (local.get $$rsize$4$lcssa$i) - (i32.const 1) - ) - ) - (local.set $$head281$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head281$i) - (local.get $$or280$i) - ) - (local.set $$add$ptr282$i - (i32.add - (local.get $$add$ptr$i$161) - (local.get $$rsize$4$lcssa$i) - ) - ) - (i32.store - (local.get $$add$ptr282$i) - (local.get $$rsize$4$lcssa$i) - ) - (local.set $$shr283$i - (i32.shr_u - (local.get $$rsize$4$lcssa$i) - (i32.const 3) - ) - ) - (local.set $$cmp284$i - (i32.lt_u - (local.get $$rsize$4$lcssa$i) - (i32.const 256) - ) - ) - (if - (local.get $$cmp284$i) - (block - (local.set $$shl288$i - (i32.shl - (local.get $$shr283$i) - (i32.const 1) - ) - ) - (local.set $$arrayidx289$i - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl288$i) - (i32.const 2) - ) - ) - ) - (local.set $$82 - (i32.load - (i32.const 176) - ) - ) - (local.set $$shl291$i - (i32.shl - (i32.const 1) - (local.get $$shr283$i) - ) - ) - (local.set $$and292$i - (i32.and - (local.get $$82) - (local.get $$shl291$i) - ) - ) - (local.set $$tobool293$i - (i32.eq - (local.get $$and292$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool293$i) - (block - (local.set $$or297$i - (i32.or - (local.get $$82) - (local.get $$shl291$i) - ) - ) - (i32.store - (i32.const 176) - (local.get $$or297$i) - ) - (local.set $$$pre$i$177 - (i32.add - (local.get $$arrayidx289$i) - (i32.const 8) - ) - ) - (local.set $$$pre$phi$i$178Z2D - (local.get $$$pre$i$177) - ) - (local.set $$F290$0$i - (local.get $$arrayidx289$i) - ) - ) - (block - (local.set $$83 - (i32.add - (local.get $$arrayidx289$i) - (i32.const 8) - ) - ) - (local.set $$84 - (i32.load - (local.get $$83) - ) - ) - (local.set $$85 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp301$i - (i32.lt_u - (local.get $$84) - (local.get $$85) - ) - ) - (if - (local.get $$cmp301$i) - (call $_abort) - (block - (local.set $$$pre$phi$i$178Z2D - (local.get $$83) - ) - (local.set $$F290$0$i - (local.get $$84) - ) - ) - ) - ) - ) - (i32.store - (local.get $$$pre$phi$i$178Z2D) - (local.get $$add$ptr$i$161) - ) - (local.set $$bk311$i - (i32.add - (local.get $$F290$0$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk311$i) - (local.get $$add$ptr$i$161) - ) - (local.set $$fd312$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd312$i) - (local.get $$F290$0$i) - ) - (local.set $$bk313$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk313$i) - (local.get $$arrayidx289$i) - ) - (br $do-once25) - ) - ) - (local.set $$shr318$i - (i32.shr_u - (local.get $$rsize$4$lcssa$i) - (i32.const 8) - ) - ) - (local.set $$cmp319$i - (i32.eq - (local.get $$shr318$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp319$i) - (local.set $$I316$0$i - (i32.const 0) - ) - (block - (local.set $$cmp323$i - (i32.gt_u - (local.get $$rsize$4$lcssa$i) - (i32.const 16777215) - ) - ) - (if - (local.get $$cmp323$i) - (local.set $$I316$0$i - (i32.const 31) - ) - (block - (local.set $$sub329$i - (i32.add - (local.get $$shr318$i) - (i32.const 1048320) - ) - ) - (local.set $$shr330$i - (i32.shr_u - (local.get $$sub329$i) - (i32.const 16) - ) - ) - (local.set $$and331$i - (i32.and - (local.get $$shr330$i) - (i32.const 8) - ) - ) - (local.set $$shl333$i - (i32.shl - (local.get $$shr318$i) - (local.get $$and331$i) - ) - ) - (local.set $$sub334$i - (i32.add - (local.get $$shl333$i) - (i32.const 520192) - ) - ) - (local.set $$shr335$i - (i32.shr_u - (local.get $$sub334$i) - (i32.const 16) - ) - ) - (local.set $$and336$i - (i32.and - (local.get $$shr335$i) - (i32.const 4) - ) - ) - (local.set $$add337$i - (i32.or - (local.get $$and336$i) - (local.get $$and331$i) - ) - ) - (local.set $$shl338$i - (i32.shl - (local.get $$shl333$i) - (local.get $$and336$i) - ) - ) - (local.set $$sub339$i - (i32.add - (local.get $$shl338$i) - (i32.const 245760) - ) - ) - (local.set $$shr340$i - (i32.shr_u - (local.get $$sub339$i) - (i32.const 16) - ) - ) - (local.set $$and341$i - (i32.and - (local.get $$shr340$i) - (i32.const 2) - ) - ) - (local.set $$add342$i - (i32.or - (local.get $$add337$i) - (local.get $$and341$i) - ) - ) - (local.set $$sub343$i - (i32.sub - (i32.const 14) - (local.get $$add342$i) - ) - ) - (local.set $$shl344$i - (i32.shl - (local.get $$shl338$i) - (local.get $$and341$i) - ) - ) - (local.set $$shr345$i - (i32.shr_u - (local.get $$shl344$i) - (i32.const 15) - ) - ) - (local.set $$add346$i - (i32.add - (local.get $$sub343$i) - (local.get $$shr345$i) - ) - ) - (local.set $$shl347$i - (i32.shl - (local.get $$add346$i) - (i32.const 1) - ) - ) - (local.set $$add348$i - (i32.add - (local.get $$add346$i) - (i32.const 7) - ) - ) - (local.set $$shr349$i - (i32.shr_u - (local.get $$rsize$4$lcssa$i) - (local.get $$add348$i) - ) - ) - (local.set $$and350$i - (i32.and - (local.get $$shr349$i) - (i32.const 1) - ) - ) - (local.set $$add351$i - (i32.or - (local.get $$and350$i) - (local.get $$shl347$i) - ) - ) - (local.set $$I316$0$i - (local.get $$add351$i) - ) - ) - ) - ) - ) - (local.set $$arrayidx355$i - (i32.add - (i32.const 480) - (i32.shl - (local.get $$I316$0$i) - (i32.const 2) - ) - ) - ) - (local.set $$index356$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 28) - ) - ) - (i32.store - (local.get $$index356$i) - (local.get $$I316$0$i) - ) - (local.set $$child357$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 16) - ) - ) - (local.set $$arrayidx358$i - (i32.add - (local.get $$child357$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$arrayidx358$i) - (i32.const 0) - ) - (i32.store - (local.get $$child357$i) - (i32.const 0) - ) - (local.set $$86 - (i32.load - (i32.const 180) - ) - ) - (local.set $$shl362$i - (i32.shl - (i32.const 1) - (local.get $$I316$0$i) - ) - ) - (local.set $$and363$i - (i32.and - (local.get $$86) - (local.get $$shl362$i) - ) - ) - (local.set $$tobool364$i - (i32.eq - (local.get $$and363$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool364$i) - (block - (local.set $$or368$i - (i32.or - (local.get $$86) - (local.get $$shl362$i) - ) - ) - (i32.store - (i32.const 180) - (local.get $$or368$i) - ) - (i32.store - (local.get $$arrayidx355$i) - (local.get $$add$ptr$i$161) - ) - (local.set $$parent369$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent369$i) - (local.get $$arrayidx355$i) - ) - (local.set $$bk370$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk370$i) - (local.get $$add$ptr$i$161) - ) - (local.set $$fd371$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd371$i) - (local.get $$add$ptr$i$161) - ) - (br $do-once25) - ) - ) - (local.set $$87 - (i32.load - (local.get $$arrayidx355$i) - ) - ) - (local.set $$cmp374$i - (i32.eq - (local.get $$I316$0$i) - (i32.const 31) - ) - ) - (local.set $$shr378$i - (i32.shr_u - (local.get $$I316$0$i) - (i32.const 1) - ) - ) - (local.set $$sub381$i - (i32.sub - (i32.const 25) - (local.get $$shr378$i) - ) - ) - (local.set $$cond383$i - (if (result i32) - (local.get $$cmp374$i) - (i32.const 0) - (local.get $$sub381$i) - ) - ) - (local.set $$shl384$i - (i32.shl - (local.get $$rsize$4$lcssa$i) - (local.get $$cond383$i) - ) - ) - (local.set $$K373$0$i - (local.get $$shl384$i) - ) - (local.set $$T$0$i - (local.get $$87) - ) - (loop $while-in28 - (block $while-out27 - (local.set $$head386$i - (i32.add - (local.get $$T$0$i) - (i32.const 4) - ) - ) - (local.set $$88 - (i32.load - (local.get $$head386$i) - ) - ) - (local.set $$and387$i - (i32.and - (local.get $$88) - (i32.const -8) - ) - ) - (local.set $$cmp388$i - (i32.eq - (local.get $$and387$i) - (local.get $$rsize$4$lcssa$i) - ) - ) - (if - (local.get $$cmp388$i) - (block - (local.set $$T$0$i$lcssa - (local.get $$T$0$i) - ) - (local.set $label - (i32.const 148) - ) - (br $while-out27) - ) - ) - (local.set $$shr391$i - (i32.shr_u - (local.get $$K373$0$i) - (i32.const 31) - ) - ) - (local.set $$arrayidx394$i - (i32.add - (i32.add - (local.get $$T$0$i) - (i32.const 16) - ) - (i32.shl - (local.get $$shr391$i) - (i32.const 2) - ) - ) - ) - (local.set $$shl395$i - (i32.shl - (local.get $$K373$0$i) - (i32.const 1) - ) - ) - (local.set $$89 - (i32.load - (local.get $$arrayidx394$i) - ) - ) - (local.set $$cmp396$i - (i32.eq - (local.get $$89) - (i32.const 0) - ) - ) - (if - (local.get $$cmp396$i) - (block - (local.set $$T$0$i$lcssa293 - (local.get $$T$0$i) - ) - (local.set $$arrayidx394$i$lcssa - (local.get $$arrayidx394$i) - ) - (local.set $label - (i32.const 145) - ) - (br $while-out27) - ) - (block - (local.set $$K373$0$i - (local.get $$shl395$i) - ) - (local.set $$T$0$i - (local.get $$89) - ) - ) - ) - (br $while-in28) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 145) - ) - (block - (local.set $$90 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp401$i - (i32.lt_u - (local.get $$arrayidx394$i$lcssa) - (local.get $$90) - ) - ) - (if - (local.get $$cmp401$i) - (call $_abort) - (block - (i32.store - (local.get $$arrayidx394$i$lcssa) - (local.get $$add$ptr$i$161) - ) - (local.set $$parent406$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent406$i) - (local.get $$T$0$i$lcssa293) - ) - (local.set $$bk407$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk407$i) - (local.get $$add$ptr$i$161) - ) - (local.set $$fd408$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd408$i) - (local.get $$add$ptr$i$161) - ) - (br $do-once25) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 148) - ) - (block - (local.set $$fd416$i - (i32.add - (local.get $$T$0$i$lcssa) - (i32.const 8) - ) - ) - (local.set $$91 - (i32.load - (local.get $$fd416$i) - ) - ) - (local.set $$92 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp422$i - (i32.ge_u - (local.get $$91) - (local.get $$92) - ) - ) - (local.set $$not$cmp418$i - (i32.ge_u - (local.get $$T$0$i$lcssa) - (local.get $$92) - ) - ) - (local.set $$93 - (i32.and - (local.get $$cmp422$i) - (local.get $$not$cmp418$i) - ) - ) - (if - (local.get $$93) - (block - (local.set $$bk429$i - (i32.add - (local.get $$91) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk429$i) - (local.get $$add$ptr$i$161) - ) - (i32.store - (local.get $$fd416$i) - (local.get $$add$ptr$i$161) - ) - (local.set $$fd431$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd431$i) - (local.get $$91) - ) - (local.set $$bk432$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk432$i) - (local.get $$T$0$i$lcssa) - ) - (local.set $$parent433$i - (i32.add - (local.get $$add$ptr$i$161) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent433$i) - (i32.const 0) - ) - (br $do-once25) - ) - (call $_abort) - ) - ) - ) - ) - ) - ) - ) - (local.set $$add$ptr441$i - (i32.add - (local.get $$v$4$lcssa$i) - (i32.const 8) - ) - ) - (local.set $$retval$0 - (local.get $$add$ptr441$i) - ) - (return - (local.get $$retval$0) - ) - ) - (local.set $$nb$0 - (local.get $$and145) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (local.set $$94 - (i32.load - (i32.const 184) - ) - ) - (local.set $$cmp156 - (i32.lt_u - (local.get $$94) - (local.get $$nb$0) - ) - ) - (if - (i32.eqz - (local.get $$cmp156) - ) - (block - (local.set $$sub160 - (i32.sub - (local.get $$94) - (local.get $$nb$0) - ) - ) - (local.set $$95 - (i32.load - (i32.const 196) - ) - ) - (local.set $$cmp162 - (i32.gt_u - (local.get $$sub160) - (i32.const 15) - ) - ) - (if - (local.get $$cmp162) - (block - (local.set $$add$ptr166 - (i32.add - (local.get $$95) - (local.get $$nb$0) - ) - ) - (i32.store - (i32.const 196) - (local.get $$add$ptr166) - ) - (i32.store - (i32.const 184) - (local.get $$sub160) - ) - (local.set $$or167 - (i32.or - (local.get $$sub160) - (i32.const 1) - ) - ) - (local.set $$head168 - (i32.add - (local.get $$add$ptr166) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head168) - (local.get $$or167) - ) - (local.set $$add$ptr169 - (i32.add - (local.get $$add$ptr166) - (local.get $$sub160) - ) - ) - (i32.store - (local.get $$add$ptr169) - (local.get $$sub160) - ) - (local.set $$or172 - (i32.or - (local.get $$nb$0) - (i32.const 3) - ) - ) - (local.set $$head173 - (i32.add - (local.get $$95) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head173) - (local.get $$or172) - ) - ) - (block - (i32.store - (i32.const 184) - (i32.const 0) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (local.set $$or176 - (i32.or - (local.get $$94) - (i32.const 3) - ) - ) - (local.set $$head177 - (i32.add - (local.get $$95) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head177) - (local.get $$or176) - ) - (local.set $$add$ptr178 - (i32.add - (local.get $$95) - (local.get $$94) - ) - ) - (local.set $$head179 - (i32.add - (local.get $$add$ptr178) - (i32.const 4) - ) - ) - (local.set $$96 - (i32.load - (local.get $$head179) - ) - ) - (local.set $$or180 - (i32.or - (local.get $$96) - (i32.const 1) - ) - ) - (i32.store - (local.get $$head179) - (local.get $$or180) - ) - ) - ) - (local.set $$add$ptr182 - (i32.add - (local.get $$95) - (i32.const 8) - ) - ) - (local.set $$retval$0 - (local.get $$add$ptr182) - ) - (return - (local.get $$retval$0) - ) - ) - ) - (local.set $$97 - (i32.load - (i32.const 188) - ) - ) - (local.set $$cmp186 - (i32.gt_u - (local.get $$97) - (local.get $$nb$0) - ) - ) - (if - (local.get $$cmp186) - (block - (local.set $$sub190 - (i32.sub - (local.get $$97) - (local.get $$nb$0) - ) - ) - (i32.store - (i32.const 188) - (local.get $$sub190) - ) - (local.set $$98 - (i32.load - (i32.const 200) - ) - ) - (local.set $$add$ptr193 - (i32.add - (local.get $$98) - (local.get $$nb$0) - ) - ) - (i32.store - (i32.const 200) - (local.get $$add$ptr193) - ) - (local.set $$or194 - (i32.or - (local.get $$sub190) - (i32.const 1) - ) - ) - (local.set $$head195 - (i32.add - (local.get $$add$ptr193) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head195) - (local.get $$or194) - ) - (local.set $$or197 - (i32.or - (local.get $$nb$0) - (i32.const 3) - ) - ) - (local.set $$head198 - (i32.add - (local.get $$98) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head198) - (local.get $$or197) - ) - (local.set $$add$ptr199 - (i32.add - (local.get $$98) - (i32.const 8) - ) - ) - (local.set $$retval$0 - (local.get $$add$ptr199) - ) - (return - (local.get $$retval$0) - ) - ) - ) - (local.set $$99 - (i32.load - (i32.const 648) - ) - ) - (local.set $$cmp$i$179 - (i32.eq - (local.get $$99) - (i32.const 0) - ) - ) - (block $do-once29 - (if - (local.get $$cmp$i$179) - (block - (local.set $$call$i$i - (call $_sysconf - (i32.const 30) - ) - ) - (local.set $$sub$i$i - (i32.add - (local.get $$call$i$i) - (i32.const -1) - ) - ) - (local.set $$and$i$i - (i32.and - (local.get $$sub$i$i) - (local.get $$call$i$i) - ) - ) - (local.set $$cmp1$i$i - (i32.eq - (local.get $$and$i$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp1$i$i) - (block - (i32.store - (i32.const 656) - (local.get $$call$i$i) - ) - (i32.store - (i32.const 652) - (local.get $$call$i$i) - ) - (i32.store - (i32.const 660) - (i32.const -1) - ) - (i32.store - (i32.const 664) - (i32.const -1) - ) - (i32.store - (i32.const 668) - (i32.const 0) - ) - (i32.store - (i32.const 620) - (i32.const 0) - ) - (local.set $$call6$i$i - (call $_time - (i32.const 0) - ) - ) - (local.set $$xor$i$i - (i32.and - (local.get $$call6$i$i) - (i32.const -16) - ) - ) - (local.set $$and7$i$i - (i32.xor - (local.get $$xor$i$i) - (i32.const 1431655768) - ) - ) - (i32.store - (i32.const 648) - (local.get $$and7$i$i) - ) - (br $do-once29) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$add$i$180 - (i32.add - (local.get $$nb$0) - (i32.const 48) - ) - ) - (local.set $$100 - (i32.load - (i32.const 656) - ) - ) - (local.set $$sub$i$181 - (i32.add - (local.get $$nb$0) - (i32.const 47) - ) - ) - (local.set $$add9$i - (i32.add - (local.get $$100) - (local.get $$sub$i$181) - ) - ) - (local.set $$neg$i$182 - (i32.sub - (i32.const 0) - (local.get $$100) - ) - ) - (local.set $$and11$i - (i32.and - (local.get $$add9$i) - (local.get $$neg$i$182) - ) - ) - (local.set $$cmp12$i - (i32.gt_u - (local.get $$and11$i) - (local.get $$nb$0) - ) - ) - (if - (i32.eqz - (local.get $$cmp12$i) - ) - (block - (local.set $$retval$0 - (i32.const 0) - ) - (return - (local.get $$retval$0) - ) - ) - ) - (local.set $$101 - (i32.load - (i32.const 616) - ) - ) - (local.set $$cmp15$i - (i32.eq - (local.get $$101) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp15$i) - ) - (block - (local.set $$102 - (i32.load - (i32.const 608) - ) - ) - (local.set $$add17$i$183 - (i32.add - (local.get $$102) - (local.get $$and11$i) - ) - ) - (local.set $$cmp19$i - (i32.le_u - (local.get $$add17$i$183) - (local.get $$102) - ) - ) - (local.set $$cmp21$i - (i32.gt_u - (local.get $$add17$i$183) - (local.get $$101) - ) - ) - (local.set $$or$cond1$i$184 - (i32.or - (local.get $$cmp19$i) - (local.get $$cmp21$i) - ) - ) - (if - (local.get $$or$cond1$i$184) - (block - (local.set $$retval$0 - (i32.const 0) - ) - (return - (local.get $$retval$0) - ) - ) - ) - ) - ) - (local.set $$103 - (i32.load - (i32.const 620) - ) - ) - (local.set $$and29$i - (i32.and - (local.get $$103) - (i32.const 4) - ) - ) - (local.set $$tobool30$i - (i32.eq - (local.get $$and29$i) - (i32.const 0) - ) - ) - (block $label$break$L257 - (if - (local.get $$tobool30$i) - (block - (local.set $$104 - (i32.load - (i32.const 200) - ) - ) - (local.set $$cmp32$i$185 - (i32.eq - (local.get $$104) - (i32.const 0) - ) - ) - (block $label$break$L259 - (if - (local.get $$cmp32$i$185) - (local.set $label - (i32.const 173) - ) - (block - (local.set $$sp$0$i$i - (i32.const 624) - ) - (loop $while-in34 - (block $while-out33 - (local.set $$105 - (i32.load - (local.get $$sp$0$i$i) - ) - ) - (local.set $$cmp$i$9$i - (i32.gt_u - (local.get $$105) - (local.get $$104) - ) - ) - (if - (i32.eqz - (local.get $$cmp$i$9$i) - ) - (block - (local.set $$size$i$i - (i32.add - (local.get $$sp$0$i$i) - (i32.const 4) - ) - ) - (local.set $$106 - (i32.load - (local.get $$size$i$i) - ) - ) - (local.set $$add$ptr$i$i - (i32.add - (local.get $$105) - (local.get $$106) - ) - ) - (local.set $$cmp2$i$i - (i32.gt_u - (local.get $$add$ptr$i$i) - (local.get $$104) - ) - ) - (if - (local.get $$cmp2$i$i) - (block - (local.set $$base$i$i$lcssa - (local.get $$sp$0$i$i) - ) - (local.set $$size$i$i$lcssa - (local.get $$size$i$i) - ) - (br $while-out33) - ) - ) - ) - ) - (local.set $$next$i$i - (i32.add - (local.get $$sp$0$i$i) - (i32.const 8) - ) - ) - (local.set $$107 - (i32.load - (local.get $$next$i$i) - ) - ) - (local.set $$cmp3$i$i - (i32.eq - (local.get $$107) - (i32.const 0) - ) - ) - (if - (local.get $$cmp3$i$i) - (block - (local.set $label - (i32.const 173) - ) - (br $label$break$L259) - ) - (local.set $$sp$0$i$i - (local.get $$107) - ) - ) - (br $while-in34) - ) - ) - (local.set $$112 - (i32.load - (i32.const 188) - ) - ) - (local.set $$add77$i - (i32.sub - (local.get $$add9$i) - (local.get $$112) - ) - ) - (local.set $$and80$i - (i32.and - (local.get $$add77$i) - (local.get $$neg$i$182) - ) - ) - (local.set $$cmp81$i$191 - (i32.lt_u - (local.get $$and80$i) - (i32.const 2147483647) - ) - ) - (if - (local.get $$cmp81$i$191) - (block - (local.set $$call83$i - (call $_sbrk - (local.get $$and80$i) - ) - ) - (local.set $$113 - (i32.load - (local.get $$base$i$i$lcssa) - ) - ) - (local.set $$114 - (i32.load - (local.get $$size$i$i$lcssa) - ) - ) - (local.set $$add$ptr$i$193 - (i32.add - (local.get $$113) - (local.get $$114) - ) - ) - (local.set $$cmp85$i - (i32.eq - (local.get $$call83$i) - (local.get $$add$ptr$i$193) - ) - ) - (if - (local.get $$cmp85$i) - (block - (local.set $$cmp89$i - (i32.eq - (local.get $$call83$i) - (i32.const -1) - ) - ) - (if - (i32.eqz - (local.get $$cmp89$i) - ) - (block - (local.set $$tbase$796$i - (local.get $$call83$i) - ) - (local.set $$tsize$795$i - (local.get $$and80$i) - ) - (local.set $label - (i32.const 193) - ) - (br $label$break$L257) - ) - ) - ) - (block - (local.set $$br$2$ph$i - (local.get $$call83$i) - ) - (local.set $$ssize$2$ph$i - (local.get $$and80$i) - ) - (local.set $label - (i32.const 183) - ) - ) - ) - ) - ) - ) - ) - ) - (block $do-once35 - (if - (i32.eq - (local.get $label) - (i32.const 173) - ) - (block - (local.set $$call37$i - (call $_sbrk - (i32.const 0) - ) - ) - (local.set $$cmp38$i - (i32.eq - (local.get $$call37$i) - (i32.const -1) - ) - ) - (if - (i32.eqz - (local.get $$cmp38$i) - ) - (block - (local.set $$108 - (local.get $$call37$i) - ) - (local.set $$109 - (i32.load - (i32.const 652) - ) - ) - (local.set $$sub41$i - (i32.add - (local.get $$109) - (i32.const -1) - ) - ) - (local.set $$and42$i - (i32.and - (local.get $$sub41$i) - (local.get $$108) - ) - ) - (local.set $$cmp43$i - (i32.eq - (local.get $$and42$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp43$i) - (local.set $$ssize$0$i - (local.get $$and11$i) - ) - (block - (local.set $$add46$i - (i32.add - (local.get $$sub41$i) - (local.get $$108) - ) - ) - (local.set $$neg48$i - (i32.sub - (i32.const 0) - (local.get $$109) - ) - ) - (local.set $$and49$i - (i32.and - (local.get $$add46$i) - (local.get $$neg48$i) - ) - ) - (local.set $$sub50$i - (i32.sub - (local.get $$and11$i) - (local.get $$108) - ) - ) - (local.set $$add51$i - (i32.add - (local.get $$sub50$i) - (local.get $$and49$i) - ) - ) - (local.set $$ssize$0$i - (local.get $$add51$i) - ) - ) - ) - (local.set $$110 - (i32.load - (i32.const 608) - ) - ) - (local.set $$add54$i - (i32.add - (local.get $$110) - (local.get $$ssize$0$i) - ) - ) - (local.set $$cmp55$i$187 - (i32.gt_u - (local.get $$ssize$0$i) - (local.get $$nb$0) - ) - ) - (local.set $$cmp57$i$188 - (i32.lt_u - (local.get $$ssize$0$i) - (i32.const 2147483647) - ) - ) - (local.set $$or$cond$i$189 - (i32.and - (local.get $$cmp55$i$187) - (local.get $$cmp57$i$188) - ) - ) - (if - (local.get $$or$cond$i$189) - (block - (local.set $$111 - (i32.load - (i32.const 616) - ) - ) - (local.set $$cmp60$i - (i32.eq - (local.get $$111) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp60$i) - ) - (block - (local.set $$cmp63$i - (i32.le_u - (local.get $$add54$i) - (local.get $$110) - ) - ) - (local.set $$cmp66$i$190 - (i32.gt_u - (local.get $$add54$i) - (local.get $$111) - ) - ) - (local.set $$or$cond2$i - (i32.or - (local.get $$cmp63$i) - (local.get $$cmp66$i$190) - ) - ) - (if - (local.get $$or$cond2$i) - (br $do-once35) - ) - ) - ) - (local.set $$call68$i - (call $_sbrk - (local.get $$ssize$0$i) - ) - ) - (local.set $$cmp69$i - (i32.eq - (local.get $$call68$i) - (local.get $$call37$i) - ) - ) - (if - (local.get $$cmp69$i) - (block - (local.set $$tbase$796$i - (local.get $$call37$i) - ) - (local.set $$tsize$795$i - (local.get $$ssize$0$i) - ) - (local.set $label - (i32.const 193) - ) - (br $label$break$L257) - ) - (block - (local.set $$br$2$ph$i - (local.get $$call68$i) - ) - (local.set $$ssize$2$ph$i - (local.get $$ssize$0$i) - ) - (local.set $label - (i32.const 183) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (block $label$break$L279 - (if - (i32.eq - (local.get $label) - (i32.const 183) - ) - (block - (local.set $$sub112$i - (i32.sub - (i32.const 0) - (local.get $$ssize$2$ph$i) - ) - ) - (local.set $$cmp91$i - (i32.ne - (local.get $$br$2$ph$i) - (i32.const -1) - ) - ) - (local.set $$cmp93$i - (i32.lt_u - (local.get $$ssize$2$ph$i) - (i32.const 2147483647) - ) - ) - (local.set $$or$cond5$i - (i32.and - (local.get $$cmp93$i) - (local.get $$cmp91$i) - ) - ) - (local.set $$cmp96$i - (i32.gt_u - (local.get $$add$i$180) - (local.get $$ssize$2$ph$i) - ) - ) - (local.set $$or$cond3$i - (i32.and - (local.get $$cmp96$i) - (local.get $$or$cond5$i) - ) - ) - (block $do-once38 - (if - (local.get $$or$cond3$i) - (block - (local.set $$115 - (i32.load - (i32.const 656) - ) - ) - (local.set $$sub99$i - (i32.sub - (local.get $$sub$i$181) - (local.get $$ssize$2$ph$i) - ) - ) - (local.set $$add101$i - (i32.add - (local.get $$sub99$i) - (local.get $$115) - ) - ) - (local.set $$neg103$i - (i32.sub - (i32.const 0) - (local.get $$115) - ) - ) - (local.set $$and104$i - (i32.and - (local.get $$add101$i) - (local.get $$neg103$i) - ) - ) - (local.set $$cmp105$i - (i32.lt_u - (local.get $$and104$i) - (i32.const 2147483647) - ) - ) - (if - (local.get $$cmp105$i) - (block - (local.set $$call107$i - (call $_sbrk - (local.get $$and104$i) - ) - ) - (local.set $$cmp108$i - (i32.eq - (local.get $$call107$i) - (i32.const -1) - ) - ) - (if - (local.get $$cmp108$i) - (block - (drop - (call $_sbrk - (local.get $$sub112$i) - ) - ) - (br $label$break$L279) - ) - (block - (local.set $$add110$i - (i32.add - (local.get $$and104$i) - (local.get $$ssize$2$ph$i) - ) - ) - (local.set $$ssize$5$i - (local.get $$add110$i) - ) - (br $do-once38) - ) - ) - ) - (local.set $$ssize$5$i - (local.get $$ssize$2$ph$i) - ) - ) - ) - (local.set $$ssize$5$i - (local.get $$ssize$2$ph$i) - ) - ) - ) - (local.set $$cmp118$i - (i32.eq - (local.get $$br$2$ph$i) - (i32.const -1) - ) - ) - (if - (i32.eqz - (local.get $$cmp118$i) - ) - (block - (local.set $$tbase$796$i - (local.get $$br$2$ph$i) - ) - (local.set $$tsize$795$i - (local.get $$ssize$5$i) - ) - (local.set $label - (i32.const 193) - ) - (br $label$break$L257) - ) - ) - ) - ) - ) - (local.set $$116 - (i32.load - (i32.const 620) - ) - ) - (local.set $$or$i$195 - (i32.or - (local.get $$116) - (i32.const 4) - ) - ) - (i32.store - (i32.const 620) - (local.get $$or$i$195) - ) - (local.set $label - (i32.const 190) - ) - ) - (local.set $label - (i32.const 190) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 190) - ) - (block - (local.set $$cmp127$i - (i32.lt_u - (local.get $$and11$i) - (i32.const 2147483647) - ) - ) - (if - (local.get $$cmp127$i) - (block - (local.set $$call131$i - (call $_sbrk - (local.get $$and11$i) - ) - ) - (local.set $$call132$i - (call $_sbrk - (i32.const 0) - ) - ) - (local.set $$cmp133$i$196 - (i32.ne - (local.get $$call131$i) - (i32.const -1) - ) - ) - (local.set $$cmp135$i - (i32.ne - (local.get $$call132$i) - (i32.const -1) - ) - ) - (local.set $$or$cond4$i - (i32.and - (local.get $$cmp133$i$196) - (local.get $$cmp135$i) - ) - ) - (local.set $$cmp137$i$197 - (i32.lt_u - (local.get $$call131$i) - (local.get $$call132$i) - ) - ) - (local.set $$or$cond7$i - (i32.and - (local.get $$cmp137$i$197) - (local.get $$or$cond4$i) - ) - ) - (if - (local.get $$or$cond7$i) - (block - (local.set $$sub$ptr$lhs$cast$i - (local.get $$call132$i) - ) - (local.set $$sub$ptr$rhs$cast$i - (local.get $$call131$i) - ) - (local.set $$sub$ptr$sub$i - (i32.sub - (local.get $$sub$ptr$lhs$cast$i) - (local.get $$sub$ptr$rhs$cast$i) - ) - ) - (local.set $$add140$i - (i32.add - (local.get $$nb$0) - (i32.const 40) - ) - ) - (local.set $$cmp141$not$i - (i32.gt_u - (local.get $$sub$ptr$sub$i) - (local.get $$add140$i) - ) - ) - (if - (local.get $$cmp141$not$i) - (block - (local.set $$tbase$796$i - (local.get $$call131$i) - ) - (local.set $$tsize$795$i - (local.get $$sub$ptr$sub$i) - ) - (local.set $label - (i32.const 193) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 193) - ) - (block - (local.set $$117 - (i32.load - (i32.const 608) - ) - ) - (local.set $$add150$i - (i32.add - (local.get $$117) - (local.get $$tsize$795$i) - ) - ) - (i32.store - (i32.const 608) - (local.get $$add150$i) - ) - (local.set $$118 - (i32.load - (i32.const 612) - ) - ) - (local.set $$cmp151$i - (i32.gt_u - (local.get $$add150$i) - (local.get $$118) - ) - ) - (if - (local.get $$cmp151$i) - (i32.store - (i32.const 612) - (local.get $$add150$i) - ) - ) - (local.set $$119 - (i32.load - (i32.const 200) - ) - ) - (local.set $$cmp157$i - (i32.eq - (local.get $$119) - (i32.const 0) - ) - ) - (block $do-once40 - (if - (local.get $$cmp157$i) - (block - (local.set $$120 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp159$i$199 - (i32.eq - (local.get $$120) - (i32.const 0) - ) - ) - (local.set $$cmp162$i$200 - (i32.lt_u - (local.get $$tbase$796$i) - (local.get $$120) - ) - ) - (local.set $$or$cond8$i - (i32.or - (local.get $$cmp159$i$199) - (local.get $$cmp162$i$200) - ) - ) - (if - (local.get $$or$cond8$i) - (i32.store - (i32.const 192) - (local.get $$tbase$796$i) - ) - ) - (i32.store - (i32.const 624) - (local.get $$tbase$796$i) - ) - (i32.store - (i32.const 628) - (local.get $$tsize$795$i) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (local.set $$121 - (i32.load - (i32.const 648) - ) - ) - (i32.store - (i32.const 212) - (local.get $$121) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - (local.set $$i$01$i$i - (i32.const 0) - ) - (loop $while-in43 - (block $while-out42 - (local.set $$shl$i$i - (i32.shl - (local.get $$i$01$i$i) - (i32.const 1) - ) - ) - (local.set $$arrayidx$i$i - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl$i$i) - (i32.const 2) - ) - ) - ) - (local.set $$122 - (i32.add - (local.get $$arrayidx$i$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$122) - (local.get $$arrayidx$i$i) - ) - (local.set $$123 - (i32.add - (local.get $$arrayidx$i$i) - (i32.const 8) - ) - ) - (i32.store - (local.get $$123) - (local.get $$arrayidx$i$i) - ) - (local.set $$inc$i$i - (i32.add - (local.get $$i$01$i$i) - (i32.const 1) - ) - ) - (local.set $$exitcond$i$i - (i32.eq - (local.get $$inc$i$i) - (i32.const 32) - ) - ) - (if - (local.get $$exitcond$i$i) - (br $while-out42) - (local.set $$i$01$i$i - (local.get $$inc$i$i) - ) - ) - (br $while-in43) - ) - ) - (local.set $$sub172$i - (i32.add - (local.get $$tsize$795$i) - (i32.const -40) - ) - ) - (local.set $$add$ptr$i$11$i - (i32.add - (local.get $$tbase$796$i) - (i32.const 8) - ) - ) - (local.set $$124 - (local.get $$add$ptr$i$11$i) - ) - (local.set $$and$i$12$i - (i32.and - (local.get $$124) - (i32.const 7) - ) - ) - (local.set $$cmp$i$13$i - (i32.eq - (local.get $$and$i$12$i) - (i32.const 0) - ) - ) - (local.set $$125 - (i32.sub - (i32.const 0) - (local.get $$124) - ) - ) - (local.set $$and3$i$i - (i32.and - (local.get $$125) - (i32.const 7) - ) - ) - (local.set $$cond$i$i - (if (result i32) - (local.get $$cmp$i$13$i) - (i32.const 0) - (local.get $$and3$i$i) - ) - ) - (local.set $$add$ptr4$i$i - (i32.add - (local.get $$tbase$796$i) - (local.get $$cond$i$i) - ) - ) - (local.set $$sub5$i$i - (i32.sub - (local.get $$sub172$i) - (local.get $$cond$i$i) - ) - ) - (i32.store - (i32.const 200) - (local.get $$add$ptr4$i$i) - ) - (i32.store - (i32.const 188) - (local.get $$sub5$i$i) - ) - (local.set $$or$i$i - (i32.or - (local.get $$sub5$i$i) - (i32.const 1) - ) - ) - (local.set $$head$i$i - (i32.add - (local.get $$add$ptr4$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head$i$i) - (local.get $$or$i$i) - ) - (local.set $$add$ptr6$i$i - (i32.add - (local.get $$add$ptr4$i$i) - (local.get $$sub5$i$i) - ) - ) - (local.set $$head7$i$i - (i32.add - (local.get $$add$ptr6$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head7$i$i) - (i32.const 40) - ) - (local.set $$126 - (i32.load - (i32.const 664) - ) - ) - (i32.store - (i32.const 204) - (local.get $$126) - ) - ) - (block - (local.set $$sp$0108$i - (i32.const 624) - ) - (loop $while-in45 - (block $while-out44 - (local.set $$127 - (i32.load - (local.get $$sp$0108$i) - ) - ) - (local.set $$size188$i - (i32.add - (local.get $$sp$0108$i) - (i32.const 4) - ) - ) - (local.set $$128 - (i32.load - (local.get $$size188$i) - ) - ) - (local.set $$add$ptr189$i - (i32.add - (local.get $$127) - (local.get $$128) - ) - ) - (local.set $$cmp190$i - (i32.eq - (local.get $$tbase$796$i) - (local.get $$add$ptr189$i) - ) - ) - (if - (local.get $$cmp190$i) - (block - (local.set $$$lcssa - (local.get $$127) - ) - (local.set $$$lcssa290 - (local.get $$128) - ) - (local.set $$size188$i$lcssa - (local.get $$size188$i) - ) - (local.set $$sp$0108$i$lcssa - (local.get $$sp$0108$i) - ) - (local.set $label - (i32.const 203) - ) - (br $while-out44) - ) - ) - (local.set $$next$i - (i32.add - (local.get $$sp$0108$i) - (i32.const 8) - ) - ) - (local.set $$129 - (i32.load - (local.get $$next$i) - ) - ) - (local.set $$cmp186$i - (i32.eq - (local.get $$129) - (i32.const 0) - ) - ) - (if - (local.get $$cmp186$i) - (br $while-out44) - (local.set $$sp$0108$i - (local.get $$129) - ) - ) - (br $while-in45) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 203) - ) - (block - (local.set $$sflags193$i - (i32.add - (local.get $$sp$0108$i$lcssa) - (i32.const 12) - ) - ) - (local.set $$130 - (i32.load - (local.get $$sflags193$i) - ) - ) - (local.set $$and194$i$204 - (i32.and - (local.get $$130) - (i32.const 8) - ) - ) - (local.set $$tobool195$i - (i32.eq - (local.get $$and194$i$204) - (i32.const 0) - ) - ) - (if - (local.get $$tobool195$i) - (block - (local.set $$cmp203$i - (i32.ge_u - (local.get $$119) - (local.get $$$lcssa) - ) - ) - (local.set $$cmp209$i - (i32.lt_u - (local.get $$119) - (local.get $$tbase$796$i) - ) - ) - (local.set $$or$cond98$i - (i32.and - (local.get $$cmp209$i) - (local.get $$cmp203$i) - ) - ) - (if - (local.get $$or$cond98$i) - (block - (local.set $$add212$i - (i32.add - (local.get $$$lcssa290) - (local.get $$tsize$795$i) - ) - ) - (i32.store - (local.get $$size188$i$lcssa) - (local.get $$add212$i) - ) - (local.set $$131 - (i32.load - (i32.const 188) - ) - ) - (local.set $$add$ptr$i$21$i - (i32.add - (local.get $$119) - (i32.const 8) - ) - ) - (local.set $$132 - (local.get $$add$ptr$i$21$i) - ) - (local.set $$and$i$22$i - (i32.and - (local.get $$132) - (i32.const 7) - ) - ) - (local.set $$cmp$i$23$i - (i32.eq - (local.get $$and$i$22$i) - (i32.const 0) - ) - ) - (local.set $$133 - (i32.sub - (i32.const 0) - (local.get $$132) - ) - ) - (local.set $$and3$i$24$i - (i32.and - (local.get $$133) - (i32.const 7) - ) - ) - (local.set $$cond$i$25$i - (if (result i32) - (local.get $$cmp$i$23$i) - (i32.const 0) - (local.get $$and3$i$24$i) - ) - ) - (local.set $$add$ptr4$i$26$i - (i32.add - (local.get $$119) - (local.get $$cond$i$25$i) - ) - ) - (local.set $$add215$i - (i32.sub - (local.get $$tsize$795$i) - (local.get $$cond$i$25$i) - ) - ) - (local.set $$sub5$i$27$i - (i32.add - (local.get $$add215$i) - (local.get $$131) - ) - ) - (i32.store - (i32.const 200) - (local.get $$add$ptr4$i$26$i) - ) - (i32.store - (i32.const 188) - (local.get $$sub5$i$27$i) - ) - (local.set $$or$i$28$i - (i32.or - (local.get $$sub5$i$27$i) - (i32.const 1) - ) - ) - (local.set $$head$i$29$i - (i32.add - (local.get $$add$ptr4$i$26$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head$i$29$i) - (local.get $$or$i$28$i) - ) - (local.set $$add$ptr6$i$30$i - (i32.add - (local.get $$add$ptr4$i$26$i) - (local.get $$sub5$i$27$i) - ) - ) - (local.set $$head7$i$31$i - (i32.add - (local.get $$add$ptr6$i$30$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head7$i$31$i) - (i32.const 40) - ) - (local.set $$134 - (i32.load - (i32.const 664) - ) - ) - (i32.store - (i32.const 204) - (local.get $$134) - ) - (br $do-once40) - ) - ) - ) - ) - ) - ) - (local.set $$135 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp218$i - (i32.lt_u - (local.get $$tbase$796$i) - (local.get $$135) - ) - ) - (if - (local.get $$cmp218$i) - (block - (i32.store - (i32.const 192) - (local.get $$tbase$796$i) - ) - (local.set $$150 - (local.get $$tbase$796$i) - ) - ) - (local.set $$150 - (local.get $$135) - ) - ) - (local.set $$add$ptr227$i - (i32.add - (local.get $$tbase$796$i) - (local.get $$tsize$795$i) - ) - ) - (local.set $$sp$1107$i - (i32.const 624) - ) - (loop $while-in47 - (block $while-out46 - (local.set $$136 - (i32.load - (local.get $$sp$1107$i) - ) - ) - (local.set $$cmp228$i - (i32.eq - (local.get $$136) - (local.get $$add$ptr227$i) - ) - ) - (if - (local.get $$cmp228$i) - (block - (local.set $$base226$i$lcssa - (local.get $$sp$1107$i) - ) - (local.set $$sp$1107$i$lcssa - (local.get $$sp$1107$i) - ) - (local.set $label - (i32.const 211) - ) - (br $while-out46) - ) - ) - (local.set $$next231$i - (i32.add - (local.get $$sp$1107$i) - (i32.const 8) - ) - ) - (local.set $$137 - (i32.load - (local.get $$next231$i) - ) - ) - (local.set $$cmp224$i - (i32.eq - (local.get $$137) - (i32.const 0) - ) - ) - (if - (local.get $$cmp224$i) - (block - (local.set $$sp$0$i$i$i - (i32.const 624) - ) - (br $while-out46) - ) - (local.set $$sp$1107$i - (local.get $$137) - ) - ) - (br $while-in47) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 211) - ) - (block - (local.set $$sflags235$i - (i32.add - (local.get $$sp$1107$i$lcssa) - (i32.const 12) - ) - ) - (local.set $$138 - (i32.load - (local.get $$sflags235$i) - ) - ) - (local.set $$and236$i - (i32.and - (local.get $$138) - (i32.const 8) - ) - ) - (local.set $$tobool237$i - (i32.eq - (local.get $$and236$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool237$i) - (block - (i32.store - (local.get $$base226$i$lcssa) - (local.get $$tbase$796$i) - ) - (local.set $$size245$i - (i32.add - (local.get $$sp$1107$i$lcssa) - (i32.const 4) - ) - ) - (local.set $$139 - (i32.load - (local.get $$size245$i) - ) - ) - (local.set $$add246$i - (i32.add - (local.get $$139) - (local.get $$tsize$795$i) - ) - ) - (i32.store - (local.get $$size245$i) - (local.get $$add246$i) - ) - (local.set $$add$ptr$i$32$i - (i32.add - (local.get $$tbase$796$i) - (i32.const 8) - ) - ) - (local.set $$140 - (local.get $$add$ptr$i$32$i) - ) - (local.set $$and$i$33$i - (i32.and - (local.get $$140) - (i32.const 7) - ) - ) - (local.set $$cmp$i$34$i - (i32.eq - (local.get $$and$i$33$i) - (i32.const 0) - ) - ) - (local.set $$141 - (i32.sub - (i32.const 0) - (local.get $$140) - ) - ) - (local.set $$and3$i$35$i - (i32.and - (local.get $$141) - (i32.const 7) - ) - ) - (local.set $$cond$i$36$i - (if (result i32) - (local.get $$cmp$i$34$i) - (i32.const 0) - (local.get $$and3$i$35$i) - ) - ) - (local.set $$add$ptr4$i$37$i - (i32.add - (local.get $$tbase$796$i) - (local.get $$cond$i$36$i) - ) - ) - (local.set $$add$ptr5$i$i - (i32.add - (local.get $$add$ptr227$i) - (i32.const 8) - ) - ) - (local.set $$142 - (local.get $$add$ptr5$i$i) - ) - (local.set $$and6$i$38$i - (i32.and - (local.get $$142) - (i32.const 7) - ) - ) - (local.set $$cmp7$i$i - (i32.eq - (local.get $$and6$i$38$i) - (i32.const 0) - ) - ) - (local.set $$143 - (i32.sub - (i32.const 0) - (local.get $$142) - ) - ) - (local.set $$and13$i$i - (i32.and - (local.get $$143) - (i32.const 7) - ) - ) - (local.set $$cond15$i$i - (if (result i32) - (local.get $$cmp7$i$i) - (i32.const 0) - (local.get $$and13$i$i) - ) - ) - (local.set $$add$ptr16$i$i - (i32.add - (local.get $$add$ptr227$i) - (local.get $$cond15$i$i) - ) - ) - (local.set $$sub$ptr$lhs$cast$i$39$i - (local.get $$add$ptr16$i$i) - ) - (local.set $$sub$ptr$rhs$cast$i$40$i - (local.get $$add$ptr4$i$37$i) - ) - (local.set $$sub$ptr$sub$i$41$i - (i32.sub - (local.get $$sub$ptr$lhs$cast$i$39$i) - (local.get $$sub$ptr$rhs$cast$i$40$i) - ) - ) - (local.set $$add$ptr17$i$i - (i32.add - (local.get $$add$ptr4$i$37$i) - (local.get $$nb$0) - ) - ) - (local.set $$sub18$i$i - (i32.sub - (local.get $$sub$ptr$sub$i$41$i) - (local.get $$nb$0) - ) - ) - (local.set $$or19$i$i - (i32.or - (local.get $$nb$0) - (i32.const 3) - ) - ) - (local.set $$head$i$42$i - (i32.add - (local.get $$add$ptr4$i$37$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head$i$42$i) - (local.get $$or19$i$i) - ) - (local.set $$cmp20$i$i - (i32.eq - (local.get $$add$ptr16$i$i) - (local.get $$119) - ) - ) - (block $do-once48 - (if - (local.get $$cmp20$i$i) - (block - (local.set $$144 - (i32.load - (i32.const 188) - ) - ) - (local.set $$add$i$i - (i32.add - (local.get $$144) - (local.get $$sub18$i$i) - ) - ) - (i32.store - (i32.const 188) - (local.get $$add$i$i) - ) - (i32.store - (i32.const 200) - (local.get $$add$ptr17$i$i) - ) - (local.set $$or22$i$i - (i32.or - (local.get $$add$i$i) - (i32.const 1) - ) - ) - (local.set $$head23$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head23$i$i) - (local.get $$or22$i$i) - ) - ) - (block - (local.set $$145 - (i32.load - (i32.const 196) - ) - ) - (local.set $$cmp24$i$i - (i32.eq - (local.get $$add$ptr16$i$i) - (local.get $$145) - ) - ) - (if - (local.get $$cmp24$i$i) - (block - (local.set $$146 - (i32.load - (i32.const 184) - ) - ) - (local.set $$add26$i$i - (i32.add - (local.get $$146) - (local.get $$sub18$i$i) - ) - ) - (i32.store - (i32.const 184) - (local.get $$add26$i$i) - ) - (i32.store - (i32.const 196) - (local.get $$add$ptr17$i$i) - ) - (local.set $$or28$i$i - (i32.or - (local.get $$add26$i$i) - (i32.const 1) - ) - ) - (local.set $$head29$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head29$i$i) - (local.get $$or28$i$i) - ) - (local.set $$add$ptr30$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (local.get $$add26$i$i) - ) - ) - (i32.store - (local.get $$add$ptr30$i$i) - (local.get $$add26$i$i) - ) - (br $do-once48) - ) - ) - (local.set $$head32$i$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 4) - ) - ) - (local.set $$147 - (i32.load - (local.get $$head32$i$i) - ) - ) - (local.set $$and33$i$i - (i32.and - (local.get $$147) - (i32.const 3) - ) - ) - (local.set $$cmp34$i$i - (i32.eq - (local.get $$and33$i$i) - (i32.const 1) - ) - ) - (if - (local.get $$cmp34$i$i) - (block - (local.set $$and37$i$i - (i32.and - (local.get $$147) - (i32.const -8) - ) - ) - (local.set $$shr$i$45$i - (i32.shr_u - (local.get $$147) - (i32.const 3) - ) - ) - (local.set $$cmp38$i$i - (i32.lt_u - (local.get $$147) - (i32.const 256) - ) - ) - (block $label$break$L331 - (if - (local.get $$cmp38$i$i) - (block - (local.set $$fd$i$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 8) - ) - ) - (local.set $$148 - (i32.load - (local.get $$fd$i$i) - ) - ) - (local.set $$bk$i$46$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 12) - ) - ) - (local.set $$149 - (i32.load - (local.get $$bk$i$46$i) - ) - ) - (local.set $$shl$i$47$i - (i32.shl - (local.get $$shr$i$45$i) - (i32.const 1) - ) - ) - (local.set $$arrayidx$i$48$i - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl$i$47$i) - (i32.const 2) - ) - ) - ) - (local.set $$cmp41$i$i - (i32.eq - (local.get $$148) - (local.get $$arrayidx$i$48$i) - ) - ) - (block $do-once51 - (if - (i32.eqz - (local.get $$cmp41$i$i) - ) - (block - (local.set $$cmp42$i$i - (i32.lt_u - (local.get $$148) - (local.get $$150) - ) - ) - (if - (local.get $$cmp42$i$i) - (call $_abort) - ) - (local.set $$bk43$i$i - (i32.add - (local.get $$148) - (i32.const 12) - ) - ) - (local.set $$151 - (i32.load - (local.get $$bk43$i$i) - ) - ) - (local.set $$cmp44$i$i - (i32.eq - (local.get $$151) - (local.get $$add$ptr16$i$i) - ) - ) - (if - (local.get $$cmp44$i$i) - (br $do-once51) - ) - (call $_abort) - ) - ) - ) - (local.set $$cmp46$i$49$i - (i32.eq - (local.get $$149) - (local.get $$148) - ) - ) - (if - (local.get $$cmp46$i$49$i) - (block - (local.set $$shl48$i$i - (i32.shl - (i32.const 1) - (local.get $$shr$i$45$i) - ) - ) - (local.set $$neg$i$i - (i32.xor - (local.get $$shl48$i$i) - (i32.const -1) - ) - ) - (local.set $$152 - (i32.load - (i32.const 176) - ) - ) - (local.set $$and49$i$i - (i32.and - (local.get $$152) - (local.get $$neg$i$i) - ) - ) - (i32.store - (i32.const 176) - (local.get $$and49$i$i) - ) - (br $label$break$L331) - ) - ) - (local.set $$cmp54$i$i - (i32.eq - (local.get $$149) - (local.get $$arrayidx$i$48$i) - ) - ) - (block $do-once53 - (if - (local.get $$cmp54$i$i) - (block - (local.set $$$pre5$i$i - (i32.add - (local.get $$149) - (i32.const 8) - ) - ) - (local.set $$fd68$pre$phi$i$iZ2D - (local.get $$$pre5$i$i) - ) - ) - (block - (local.set $$cmp57$i$i - (i32.lt_u - (local.get $$149) - (local.get $$150) - ) - ) - (if - (local.get $$cmp57$i$i) - (call $_abort) - ) - (local.set $$fd59$i$i - (i32.add - (local.get $$149) - (i32.const 8) - ) - ) - (local.set $$153 - (i32.load - (local.get $$fd59$i$i) - ) - ) - (local.set $$cmp60$i$i - (i32.eq - (local.get $$153) - (local.get $$add$ptr16$i$i) - ) - ) - (if - (local.get $$cmp60$i$i) - (block - (local.set $$fd68$pre$phi$i$iZ2D - (local.get $$fd59$i$i) - ) - (br $do-once53) - ) - ) - (call $_abort) - ) - ) - ) - (local.set $$bk67$i$i - (i32.add - (local.get $$148) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk67$i$i) - (local.get $$149) - ) - (i32.store - (local.get $$fd68$pre$phi$i$iZ2D) - (local.get $$148) - ) - ) - (block - (local.set $$parent$i$51$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 24) - ) - ) - (local.set $$154 - (i32.load - (local.get $$parent$i$51$i) - ) - ) - (local.set $$bk74$i$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 12) - ) - ) - (local.set $$155 - (i32.load - (local.get $$bk74$i$i) - ) - ) - (local.set $$cmp75$i$i - (i32.eq - (local.get $$155) - (local.get $$add$ptr16$i$i) - ) - ) - (block $do-once55 - (if - (local.get $$cmp75$i$i) - (block - (local.set $$child$i$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 16) - ) - ) - (local.set $$arrayidx96$i$i - (i32.add - (local.get $$child$i$i) - (i32.const 4) - ) - ) - (local.set $$159 - (i32.load - (local.get $$arrayidx96$i$i) - ) - ) - (local.set $$cmp97$i$i - (i32.eq - (local.get $$159) - (i32.const 0) - ) - ) - (if - (local.get $$cmp97$i$i) - (block - (local.set $$160 - (i32.load - (local.get $$child$i$i) - ) - ) - (local.set $$cmp100$i$i - (i32.eq - (local.get $$160) - (i32.const 0) - ) - ) - (if - (local.get $$cmp100$i$i) - (block - (local.set $$R$3$i$i - (i32.const 0) - ) - (br $do-once55) - ) - (block - (local.set $$R$1$i$i - (local.get $$160) - ) - (local.set $$RP$1$i$i - (local.get $$child$i$i) - ) - ) - ) - ) - (block - (local.set $$R$1$i$i - (local.get $$159) - ) - (local.set $$RP$1$i$i - (local.get $$arrayidx96$i$i) - ) - ) - ) - (loop $while-in58 - (block $while-out57 - (local.set $$arrayidx103$i$i - (i32.add - (local.get $$R$1$i$i) - (i32.const 20) - ) - ) - (local.set $$161 - (i32.load - (local.get $$arrayidx103$i$i) - ) - ) - (local.set $$cmp104$i$i - (i32.eq - (local.get $$161) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp104$i$i) - ) - (block - (local.set $$R$1$i$i - (local.get $$161) - ) - (local.set $$RP$1$i$i - (local.get $$arrayidx103$i$i) - ) - (br $while-in58) - ) - ) - (local.set $$arrayidx107$i$i - (i32.add - (local.get $$R$1$i$i) - (i32.const 16) - ) - ) - (local.set $$162 - (i32.load - (local.get $$arrayidx107$i$i) - ) - ) - (local.set $$cmp108$i$i - (i32.eq - (local.get $$162) - (i32.const 0) - ) - ) - (if - (local.get $$cmp108$i$i) - (block - (local.set $$R$1$i$i$lcssa - (local.get $$R$1$i$i) - ) - (local.set $$RP$1$i$i$lcssa - (local.get $$RP$1$i$i) - ) - (br $while-out57) - ) - (block - (local.set $$R$1$i$i - (local.get $$162) - ) - (local.set $$RP$1$i$i - (local.get $$arrayidx107$i$i) - ) - ) - ) - (br $while-in58) - ) - ) - (local.set $$cmp112$i$i - (i32.lt_u - (local.get $$RP$1$i$i$lcssa) - (local.get $$150) - ) - ) - (if - (local.get $$cmp112$i$i) - (call $_abort) - (block - (i32.store - (local.get $$RP$1$i$i$lcssa) - (i32.const 0) - ) - (local.set $$R$3$i$i - (local.get $$R$1$i$i$lcssa) - ) - (br $do-once55) - ) - ) - ) - (block - (local.set $$fd78$i$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 8) - ) - ) - (local.set $$156 - (i32.load - (local.get $$fd78$i$i) - ) - ) - (local.set $$cmp81$i$i - (i32.lt_u - (local.get $$156) - (local.get $$150) - ) - ) - (if - (local.get $$cmp81$i$i) - (call $_abort) - ) - (local.set $$bk82$i$i - (i32.add - (local.get $$156) - (i32.const 12) - ) - ) - (local.set $$157 - (i32.load - (local.get $$bk82$i$i) - ) - ) - (local.set $$cmp83$i$i - (i32.eq - (local.get $$157) - (local.get $$add$ptr16$i$i) - ) - ) - (if - (i32.eqz - (local.get $$cmp83$i$i) - ) - (call $_abort) - ) - (local.set $$fd85$i$i - (i32.add - (local.get $$155) - (i32.const 8) - ) - ) - (local.set $$158 - (i32.load - (local.get $$fd85$i$i) - ) - ) - (local.set $$cmp86$i$i - (i32.eq - (local.get $$158) - (local.get $$add$ptr16$i$i) - ) - ) - (if - (local.get $$cmp86$i$i) - (block - (i32.store - (local.get $$bk82$i$i) - (local.get $$155) - ) - (i32.store - (local.get $$fd85$i$i) - (local.get $$156) - ) - (local.set $$R$3$i$i - (local.get $$155) - ) - (br $do-once55) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$cmp120$i$53$i - (i32.eq - (local.get $$154) - (i32.const 0) - ) - ) - (if - (local.get $$cmp120$i$53$i) - (br $label$break$L331) - ) - (local.set $$index$i$54$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 28) - ) - ) - (local.set $$163 - (i32.load - (local.get $$index$i$54$i) - ) - ) - (local.set $$arrayidx123$i$i - (i32.add - (i32.const 480) - (i32.shl - (local.get $$163) - (i32.const 2) - ) - ) - ) - (local.set $$164 - (i32.load - (local.get $$arrayidx123$i$i) - ) - ) - (local.set $$cmp124$i$i - (i32.eq - (local.get $$add$ptr16$i$i) - (local.get $$164) - ) - ) - (block $do-once59 - (if - (local.get $$cmp124$i$i) - (block - (i32.store - (local.get $$arrayidx123$i$i) - (local.get $$R$3$i$i) - ) - (local.set $$cond2$i$i - (i32.eq - (local.get $$R$3$i$i) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cond2$i$i) - ) - (br $do-once59) - ) - (local.set $$shl131$i$i - (i32.shl - (i32.const 1) - (local.get $$163) - ) - ) - (local.set $$neg132$i$i - (i32.xor - (local.get $$shl131$i$i) - (i32.const -1) - ) - ) - (local.set $$165 - (i32.load - (i32.const 180) - ) - ) - (local.set $$and133$i$i - (i32.and - (local.get $$165) - (local.get $$neg132$i$i) - ) - ) - (i32.store - (i32.const 180) - (local.get $$and133$i$i) - ) - (br $label$break$L331) - ) - (block - (local.set $$166 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp137$i$i - (i32.lt_u - (local.get $$154) - (local.get $$166) - ) - ) - (if - (local.get $$cmp137$i$i) - (call $_abort) - ) - (local.set $$arrayidx143$i$i - (i32.add - (local.get $$154) - (i32.const 16) - ) - ) - (local.set $$167 - (i32.load - (local.get $$arrayidx143$i$i) - ) - ) - (local.set $$cmp144$i$i - (i32.eq - (local.get $$167) - (local.get $$add$ptr16$i$i) - ) - ) - (if - (local.get $$cmp144$i$i) - (i32.store - (local.get $$arrayidx143$i$i) - (local.get $$R$3$i$i) - ) - (block - (local.set $$arrayidx151$i$i - (i32.add - (local.get $$154) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx151$i$i) - (local.get $$R$3$i$i) - ) - ) - ) - (local.set $$cmp156$i$i - (i32.eq - (local.get $$R$3$i$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp156$i$i) - (br $label$break$L331) - ) - ) - ) - ) - (local.set $$168 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp160$i$i - (i32.lt_u - (local.get $$R$3$i$i) - (local.get $$168) - ) - ) - (if - (local.get $$cmp160$i$i) - (call $_abort) - ) - (local.set $$parent165$i$i - (i32.add - (local.get $$R$3$i$i) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent165$i$i) - (local.get $$154) - ) - (local.set $$child166$i$i - (i32.add - (local.get $$add$ptr16$i$i) - (i32.const 16) - ) - ) - (local.set $$169 - (i32.load - (local.get $$child166$i$i) - ) - ) - (local.set $$cmp168$i$i - (i32.eq - (local.get $$169) - (i32.const 0) - ) - ) - (block $do-once61 - (if - (i32.eqz - (local.get $$cmp168$i$i) - ) - (block - (local.set $$cmp172$i$i - (i32.lt_u - (local.get $$169) - (local.get $$168) - ) - ) - (if - (local.get $$cmp172$i$i) - (call $_abort) - (block - (local.set $$arrayidx178$i$i - (i32.add - (local.get $$R$3$i$i) - (i32.const 16) - ) - ) - (i32.store - (local.get $$arrayidx178$i$i) - (local.get $$169) - ) - (local.set $$parent179$i$i - (i32.add - (local.get $$169) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent179$i$i) - (local.get $$R$3$i$i) - ) - (br $do-once61) - ) - ) - ) - ) - ) - (local.set $$arrayidx184$i$i - (i32.add - (local.get $$child166$i$i) - (i32.const 4) - ) - ) - (local.set $$170 - (i32.load - (local.get $$arrayidx184$i$i) - ) - ) - (local.set $$cmp185$i$i - (i32.eq - (local.get $$170) - (i32.const 0) - ) - ) - (if - (local.get $$cmp185$i$i) - (br $label$break$L331) - ) - (local.set $$171 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp189$i$i - (i32.lt_u - (local.get $$170) - (local.get $$171) - ) - ) - (if - (local.get $$cmp189$i$i) - (call $_abort) - (block - (local.set $$arrayidx195$i$i - (i32.add - (local.get $$R$3$i$i) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx195$i$i) - (local.get $$170) - ) - (local.set $$parent196$i$i - (i32.add - (local.get $$170) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent196$i$i) - (local.get $$R$3$i$i) - ) - (br $label$break$L331) - ) - ) - ) - ) - ) - (local.set $$add$ptr205$i$i - (i32.add - (local.get $$add$ptr16$i$i) - (local.get $$and37$i$i) - ) - ) - (local.set $$add206$i$i - (i32.add - (local.get $$and37$i$i) - (local.get $$sub18$i$i) - ) - ) - (local.set $$oldfirst$0$i$i - (local.get $$add$ptr205$i$i) - ) - (local.set $$qsize$0$i$i - (local.get $$add206$i$i) - ) - ) - (block - (local.set $$oldfirst$0$i$i - (local.get $$add$ptr16$i$i) - ) - (local.set $$qsize$0$i$i - (local.get $$sub18$i$i) - ) - ) - ) - (local.set $$head208$i$i - (i32.add - (local.get $$oldfirst$0$i$i) - (i32.const 4) - ) - ) - (local.set $$172 - (i32.load - (local.get $$head208$i$i) - ) - ) - (local.set $$and209$i$i - (i32.and - (local.get $$172) - (i32.const -2) - ) - ) - (i32.store - (local.get $$head208$i$i) - (local.get $$and209$i$i) - ) - (local.set $$or210$i$i - (i32.or - (local.get $$qsize$0$i$i) - (i32.const 1) - ) - ) - (local.set $$head211$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head211$i$i) - (local.get $$or210$i$i) - ) - (local.set $$add$ptr212$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (local.get $$qsize$0$i$i) - ) - ) - (i32.store - (local.get $$add$ptr212$i$i) - (local.get $$qsize$0$i$i) - ) - (local.set $$shr214$i$i - (i32.shr_u - (local.get $$qsize$0$i$i) - (i32.const 3) - ) - ) - (local.set $$cmp215$i$i - (i32.lt_u - (local.get $$qsize$0$i$i) - (i32.const 256) - ) - ) - (if - (local.get $$cmp215$i$i) - (block - (local.set $$shl221$i$i - (i32.shl - (local.get $$shr214$i$i) - (i32.const 1) - ) - ) - (local.set $$arrayidx223$i$i - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl221$i$i) - (i32.const 2) - ) - ) - ) - (local.set $$173 - (i32.load - (i32.const 176) - ) - ) - (local.set $$shl226$i$i - (i32.shl - (i32.const 1) - (local.get $$shr214$i$i) - ) - ) - (local.set $$and227$i$i - (i32.and - (local.get $$173) - (local.get $$shl226$i$i) - ) - ) - (local.set $$tobool228$i$i - (i32.eq - (local.get $$and227$i$i) - (i32.const 0) - ) - ) - (block $do-once63 - (if - (local.get $$tobool228$i$i) - (block - (local.set $$or232$i$i - (i32.or - (local.get $$173) - (local.get $$shl226$i$i) - ) - ) - (i32.store - (i32.const 176) - (local.get $$or232$i$i) - ) - (local.set $$$pre$i$56$i - (i32.add - (local.get $$arrayidx223$i$i) - (i32.const 8) - ) - ) - (local.set $$$pre$phi$i$57$iZ2D - (local.get $$$pre$i$56$i) - ) - (local.set $$F224$0$i$i - (local.get $$arrayidx223$i$i) - ) - ) - (block - (local.set $$174 - (i32.add - (local.get $$arrayidx223$i$i) - (i32.const 8) - ) - ) - (local.set $$175 - (i32.load - (local.get $$174) - ) - ) - (local.set $$176 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp236$i$i - (i32.lt_u - (local.get $$175) - (local.get $$176) - ) - ) - (if - (i32.eqz - (local.get $$cmp236$i$i) - ) - (block - (local.set $$$pre$phi$i$57$iZ2D - (local.get $$174) - ) - (local.set $$F224$0$i$i - (local.get $$175) - ) - (br $do-once63) - ) - ) - (call $_abort) - ) - ) - ) - (i32.store - (local.get $$$pre$phi$i$57$iZ2D) - (local.get $$add$ptr17$i$i) - ) - (local.set $$bk246$i$i - (i32.add - (local.get $$F224$0$i$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk246$i$i) - (local.get $$add$ptr17$i$i) - ) - (local.set $$fd247$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd247$i$i) - (local.get $$F224$0$i$i) - ) - (local.set $$bk248$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk248$i$i) - (local.get $$arrayidx223$i$i) - ) - (br $do-once48) - ) - ) - (local.set $$shr253$i$i - (i32.shr_u - (local.get $$qsize$0$i$i) - (i32.const 8) - ) - ) - (local.set $$cmp254$i$i - (i32.eq - (local.get $$shr253$i$i) - (i32.const 0) - ) - ) - (block $do-once65 - (if - (local.get $$cmp254$i$i) - (local.set $$I252$0$i$i - (i32.const 0) - ) - (block - (local.set $$cmp258$i$i - (i32.gt_u - (local.get $$qsize$0$i$i) - (i32.const 16777215) - ) - ) - (if - (local.get $$cmp258$i$i) - (block - (local.set $$I252$0$i$i - (i32.const 31) - ) - (br $do-once65) - ) - ) - (local.set $$sub262$i$i - (i32.add - (local.get $$shr253$i$i) - (i32.const 1048320) - ) - ) - (local.set $$shr263$i$i - (i32.shr_u - (local.get $$sub262$i$i) - (i32.const 16) - ) - ) - (local.set $$and264$i$i - (i32.and - (local.get $$shr263$i$i) - (i32.const 8) - ) - ) - (local.set $$shl265$i$i - (i32.shl - (local.get $$shr253$i$i) - (local.get $$and264$i$i) - ) - ) - (local.set $$sub266$i$i - (i32.add - (local.get $$shl265$i$i) - (i32.const 520192) - ) - ) - (local.set $$shr267$i$i - (i32.shr_u - (local.get $$sub266$i$i) - (i32.const 16) - ) - ) - (local.set $$and268$i$i - (i32.and - (local.get $$shr267$i$i) - (i32.const 4) - ) - ) - (local.set $$add269$i$i - (i32.or - (local.get $$and268$i$i) - (local.get $$and264$i$i) - ) - ) - (local.set $$shl270$i$i - (i32.shl - (local.get $$shl265$i$i) - (local.get $$and268$i$i) - ) - ) - (local.set $$sub271$i$i - (i32.add - (local.get $$shl270$i$i) - (i32.const 245760) - ) - ) - (local.set $$shr272$i$i - (i32.shr_u - (local.get $$sub271$i$i) - (i32.const 16) - ) - ) - (local.set $$and273$i$i - (i32.and - (local.get $$shr272$i$i) - (i32.const 2) - ) - ) - (local.set $$add274$i$i - (i32.or - (local.get $$add269$i$i) - (local.get $$and273$i$i) - ) - ) - (local.set $$sub275$i$i - (i32.sub - (i32.const 14) - (local.get $$add274$i$i) - ) - ) - (local.set $$shl276$i$i - (i32.shl - (local.get $$shl270$i$i) - (local.get $$and273$i$i) - ) - ) - (local.set $$shr277$i$i - (i32.shr_u - (local.get $$shl276$i$i) - (i32.const 15) - ) - ) - (local.set $$add278$i$i - (i32.add - (local.get $$sub275$i$i) - (local.get $$shr277$i$i) - ) - ) - (local.set $$shl279$i$i - (i32.shl - (local.get $$add278$i$i) - (i32.const 1) - ) - ) - (local.set $$add280$i$i - (i32.add - (local.get $$add278$i$i) - (i32.const 7) - ) - ) - (local.set $$shr281$i$i - (i32.shr_u - (local.get $$qsize$0$i$i) - (local.get $$add280$i$i) - ) - ) - (local.set $$and282$i$i - (i32.and - (local.get $$shr281$i$i) - (i32.const 1) - ) - ) - (local.set $$add283$i$i - (i32.or - (local.get $$and282$i$i) - (local.get $$shl279$i$i) - ) - ) - (local.set $$I252$0$i$i - (local.get $$add283$i$i) - ) - ) - ) - ) - (local.set $$arrayidx287$i$i - (i32.add - (i32.const 480) - (i32.shl - (local.get $$I252$0$i$i) - (i32.const 2) - ) - ) - ) - (local.set $$index288$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 28) - ) - ) - (i32.store - (local.get $$index288$i$i) - (local.get $$I252$0$i$i) - ) - (local.set $$child289$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 16) - ) - ) - (local.set $$arrayidx290$i$i - (i32.add - (local.get $$child289$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$arrayidx290$i$i) - (i32.const 0) - ) - (i32.store - (local.get $$child289$i$i) - (i32.const 0) - ) - (local.set $$177 - (i32.load - (i32.const 180) - ) - ) - (local.set $$shl294$i$i - (i32.shl - (i32.const 1) - (local.get $$I252$0$i$i) - ) - ) - (local.set $$and295$i$i - (i32.and - (local.get $$177) - (local.get $$shl294$i$i) - ) - ) - (local.set $$tobool296$i$i - (i32.eq - (local.get $$and295$i$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool296$i$i) - (block - (local.set $$or300$i$i - (i32.or - (local.get $$177) - (local.get $$shl294$i$i) - ) - ) - (i32.store - (i32.const 180) - (local.get $$or300$i$i) - ) - (i32.store - (local.get $$arrayidx287$i$i) - (local.get $$add$ptr17$i$i) - ) - (local.set $$parent301$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent301$i$i) - (local.get $$arrayidx287$i$i) - ) - (local.set $$bk302$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk302$i$i) - (local.get $$add$ptr17$i$i) - ) - (local.set $$fd303$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd303$i$i) - (local.get $$add$ptr17$i$i) - ) - (br $do-once48) - ) - ) - (local.set $$178 - (i32.load - (local.get $$arrayidx287$i$i) - ) - ) - (local.set $$cmp306$i$i - (i32.eq - (local.get $$I252$0$i$i) - (i32.const 31) - ) - ) - (local.set $$shr310$i$i - (i32.shr_u - (local.get $$I252$0$i$i) - (i32.const 1) - ) - ) - (local.set $$sub313$i$i - (i32.sub - (i32.const 25) - (local.get $$shr310$i$i) - ) - ) - (local.set $$cond315$i$i - (if (result i32) - (local.get $$cmp306$i$i) - (i32.const 0) - (local.get $$sub313$i$i) - ) - ) - (local.set $$shl316$i$i - (i32.shl - (local.get $$qsize$0$i$i) - (local.get $$cond315$i$i) - ) - ) - (local.set $$K305$0$i$i - (local.get $$shl316$i$i) - ) - (local.set $$T$0$i$58$i - (local.get $$178) - ) - (loop $while-in68 - (block $while-out67 - (local.set $$head317$i$i - (i32.add - (local.get $$T$0$i$58$i) - (i32.const 4) - ) - ) - (local.set $$179 - (i32.load - (local.get $$head317$i$i) - ) - ) - (local.set $$and318$i$i - (i32.and - (local.get $$179) - (i32.const -8) - ) - ) - (local.set $$cmp319$i$i - (i32.eq - (local.get $$and318$i$i) - (local.get $$qsize$0$i$i) - ) - ) - (if - (local.get $$cmp319$i$i) - (block - (local.set $$T$0$i$58$i$lcssa - (local.get $$T$0$i$58$i) - ) - (local.set $label - (i32.const 281) - ) - (br $while-out67) - ) - ) - (local.set $$shr322$i$i - (i32.shr_u - (local.get $$K305$0$i$i) - (i32.const 31) - ) - ) - (local.set $$arrayidx325$i$i - (i32.add - (i32.add - (local.get $$T$0$i$58$i) - (i32.const 16) - ) - (i32.shl - (local.get $$shr322$i$i) - (i32.const 2) - ) - ) - ) - (local.set $$shl326$i$i - (i32.shl - (local.get $$K305$0$i$i) - (i32.const 1) - ) - ) - (local.set $$180 - (i32.load - (local.get $$arrayidx325$i$i) - ) - ) - (local.set $$cmp327$i$i - (i32.eq - (local.get $$180) - (i32.const 0) - ) - ) - (if - (local.get $$cmp327$i$i) - (block - (local.set $$T$0$i$58$i$lcssa283 - (local.get $$T$0$i$58$i) - ) - (local.set $$arrayidx325$i$i$lcssa - (local.get $$arrayidx325$i$i) - ) - (local.set $label - (i32.const 278) - ) - (br $while-out67) - ) - (block - (local.set $$K305$0$i$i - (local.get $$shl326$i$i) - ) - (local.set $$T$0$i$58$i - (local.get $$180) - ) - ) - ) - (br $while-in68) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 278) - ) - (block - (local.set $$181 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp332$i$i - (i32.lt_u - (local.get $$arrayidx325$i$i$lcssa) - (local.get $$181) - ) - ) - (if - (local.get $$cmp332$i$i) - (call $_abort) - (block - (i32.store - (local.get $$arrayidx325$i$i$lcssa) - (local.get $$add$ptr17$i$i) - ) - (local.set $$parent337$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent337$i$i) - (local.get $$T$0$i$58$i$lcssa283) - ) - (local.set $$bk338$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk338$i$i) - (local.get $$add$ptr17$i$i) - ) - (local.set $$fd339$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd339$i$i) - (local.get $$add$ptr17$i$i) - ) - (br $do-once48) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 281) - ) - (block - (local.set $$fd344$i$i - (i32.add - (local.get $$T$0$i$58$i$lcssa) - (i32.const 8) - ) - ) - (local.set $$182 - (i32.load - (local.get $$fd344$i$i) - ) - ) - (local.set $$183 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp350$i$i - (i32.ge_u - (local.get $$182) - (local.get $$183) - ) - ) - (local.set $$not$cmp346$i$i - (i32.ge_u - (local.get $$T$0$i$58$i$lcssa) - (local.get $$183) - ) - ) - (local.set $$184 - (i32.and - (local.get $$cmp350$i$i) - (local.get $$not$cmp346$i$i) - ) - ) - (if - (local.get $$184) - (block - (local.set $$bk357$i$i - (i32.add - (local.get $$182) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk357$i$i) - (local.get $$add$ptr17$i$i) - ) - (i32.store - (local.get $$fd344$i$i) - (local.get $$add$ptr17$i$i) - ) - (local.set $$fd359$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd359$i$i) - (local.get $$182) - ) - (local.set $$bk360$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk360$i$i) - (local.get $$T$0$i$58$i$lcssa) - ) - (local.set $$parent361$i$i - (i32.add - (local.get $$add$ptr17$i$i) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent361$i$i) - (i32.const 0) - ) - (br $do-once48) - ) - (call $_abort) - ) - ) - ) - ) - ) - ) - ) - (local.set $$add$ptr369$i$i - (i32.add - (local.get $$add$ptr4$i$37$i) - (i32.const 8) - ) - ) - (local.set $$retval$0 - (local.get $$add$ptr369$i$i) - ) - (return - (local.get $$retval$0) - ) - ) - (local.set $$sp$0$i$i$i - (i32.const 624) - ) - ) - ) - ) - (loop $while-in70 - (block $while-out69 - (local.set $$185 - (i32.load - (local.get $$sp$0$i$i$i) - ) - ) - (local.set $$cmp$i$i$i - (i32.gt_u - (local.get $$185) - (local.get $$119) - ) - ) - (if - (i32.eqz - (local.get $$cmp$i$i$i) - ) - (block - (local.set $$size$i$i$i - (i32.add - (local.get $$sp$0$i$i$i) - (i32.const 4) - ) - ) - (local.set $$186 - (i32.load - (local.get $$size$i$i$i) - ) - ) - (local.set $$add$ptr$i$i$i - (i32.add - (local.get $$185) - (local.get $$186) - ) - ) - (local.set $$cmp2$i$i$i - (i32.gt_u - (local.get $$add$ptr$i$i$i) - (local.get $$119) - ) - ) - (if - (local.get $$cmp2$i$i$i) - (block - (local.set $$add$ptr$i$i$i$lcssa - (local.get $$add$ptr$i$i$i) - ) - (br $while-out69) - ) - ) - ) - ) - (local.set $$next$i$i$i - (i32.add - (local.get $$sp$0$i$i$i) - (i32.const 8) - ) - ) - (local.set $$187 - (i32.load - (local.get $$next$i$i$i) - ) - ) - (local.set $$sp$0$i$i$i - (local.get $$187) - ) - (br $while-in70) - ) - ) - (local.set $$add$ptr2$i$i - (i32.add - (local.get $$add$ptr$i$i$i$lcssa) - (i32.const -47) - ) - ) - (local.set $$add$ptr3$i$i - (i32.add - (local.get $$add$ptr2$i$i) - (i32.const 8) - ) - ) - (local.set $$188 - (local.get $$add$ptr3$i$i) - ) - (local.set $$and$i$14$i - (i32.and - (local.get $$188) - (i32.const 7) - ) - ) - (local.set $$cmp$i$15$i - (i32.eq - (local.get $$and$i$14$i) - (i32.const 0) - ) - ) - (local.set $$189 - (i32.sub - (i32.const 0) - (local.get $$188) - ) - ) - (local.set $$and6$i$i - (i32.and - (local.get $$189) - (i32.const 7) - ) - ) - (local.set $$cond$i$16$i - (if (result i32) - (local.get $$cmp$i$15$i) - (i32.const 0) - (local.get $$and6$i$i) - ) - ) - (local.set $$add$ptr7$i$i - (i32.add - (local.get $$add$ptr2$i$i) - (local.get $$cond$i$16$i) - ) - ) - (local.set $$add$ptr8$i122$i - (i32.add - (local.get $$119) - (i32.const 16) - ) - ) - (local.set $$cmp9$i$i - (i32.lt_u - (local.get $$add$ptr7$i$i) - (local.get $$add$ptr8$i122$i) - ) - ) - (local.set $$cond13$i$i - (if (result i32) - (local.get $$cmp9$i$i) - (local.get $$119) - (local.get $$add$ptr7$i$i) - ) - ) - (local.set $$add$ptr14$i$i - (i32.add - (local.get $$cond13$i$i) - (i32.const 8) - ) - ) - (local.set $$add$ptr15$i$i - (i32.add - (local.get $$cond13$i$i) - (i32.const 24) - ) - ) - (local.set $$sub16$i$i - (i32.add - (local.get $$tsize$795$i) - (i32.const -40) - ) - ) - (local.set $$add$ptr$i$1$i$i - (i32.add - (local.get $$tbase$796$i) - (i32.const 8) - ) - ) - (local.set $$190 - (local.get $$add$ptr$i$1$i$i) - ) - (local.set $$and$i$i$i - (i32.and - (local.get $$190) - (i32.const 7) - ) - ) - (local.set $$cmp$i$2$i$i - (i32.eq - (local.get $$and$i$i$i) - (i32.const 0) - ) - ) - (local.set $$191 - (i32.sub - (i32.const 0) - (local.get $$190) - ) - ) - (local.set $$and3$i$i$i - (i32.and - (local.get $$191) - (i32.const 7) - ) - ) - (local.set $$cond$i$i$i - (if (result i32) - (local.get $$cmp$i$2$i$i) - (i32.const 0) - (local.get $$and3$i$i$i) - ) - ) - (local.set $$add$ptr4$i$i$i - (i32.add - (local.get $$tbase$796$i) - (local.get $$cond$i$i$i) - ) - ) - (local.set $$sub5$i$i$i - (i32.sub - (local.get $$sub16$i$i) - (local.get $$cond$i$i$i) - ) - ) - (i32.store - (i32.const 200) - (local.get $$add$ptr4$i$i$i) - ) - (i32.store - (i32.const 188) - (local.get $$sub5$i$i$i) - ) - (local.set $$or$i$i$i - (i32.or - (local.get $$sub5$i$i$i) - (i32.const 1) - ) - ) - (local.set $$head$i$i$i - (i32.add - (local.get $$add$ptr4$i$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head$i$i$i) - (local.get $$or$i$i$i) - ) - (local.set $$add$ptr6$i$i$i - (i32.add - (local.get $$add$ptr4$i$i$i) - (local.get $$sub5$i$i$i) - ) - ) - (local.set $$head7$i$i$i - (i32.add - (local.get $$add$ptr6$i$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head7$i$i$i) - (i32.const 40) - ) - (local.set $$192 - (i32.load - (i32.const 664) - ) - ) - (i32.store - (i32.const 204) - (local.get $$192) - ) - (local.set $$head$i$17$i - (i32.add - (local.get $$cond13$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head$i$17$i) - (i32.const 27) - ) - (i32.store - (local.get $$add$ptr14$i$i) - (i32.load - (i32.const 624) - ) - ) - (i32.store - (i32.add - (local.get $$add$ptr14$i$i) - (i32.const 4) - ) - (i32.load - (i32.add - (i32.const 624) - (i32.const 4) - ) - ) - ) - (i32.store - (i32.add - (local.get $$add$ptr14$i$i) - (i32.const 8) - ) - (i32.load - (i32.add - (i32.const 624) - (i32.const 8) - ) - ) - ) - (i32.store - (i32.add - (local.get $$add$ptr14$i$i) - (i32.const 12) - ) - (i32.load - (i32.add - (i32.const 624) - (i32.const 12) - ) - ) - ) - (i32.store - (i32.const 624) - (local.get $$tbase$796$i) - ) - (i32.store - (i32.const 628) - (local.get $$tsize$795$i) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (i32.store - (i32.const 632) - (local.get $$add$ptr14$i$i) - ) - (local.set $$p$0$i$i - (local.get $$add$ptr15$i$i) - ) - (loop $while-in72 - (block $while-out71 - (local.set $$add$ptr24$i$i - (i32.add - (local.get $$p$0$i$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$add$ptr24$i$i) - (i32.const 7) - ) - (local.set $$193 - (i32.add - (local.get $$add$ptr24$i$i) - (i32.const 4) - ) - ) - (local.set $$cmp27$i$i - (i32.lt_u - (local.get $$193) - (local.get $$add$ptr$i$i$i$lcssa) - ) - ) - (if - (local.get $$cmp27$i$i) - (local.set $$p$0$i$i - (local.get $$add$ptr24$i$i) - ) - (br $while-out71) - ) - (br $while-in72) - ) - ) - (local.set $$cmp28$i$i - (i32.eq - (local.get $$cond13$i$i) - (local.get $$119) - ) - ) - (if - (i32.eqz - (local.get $$cmp28$i$i) - ) - (block - (local.set $$sub$ptr$lhs$cast$i$i - (local.get $$cond13$i$i) - ) - (local.set $$sub$ptr$rhs$cast$i$i - (local.get $$119) - ) - (local.set $$sub$ptr$sub$i$i - (i32.sub - (local.get $$sub$ptr$lhs$cast$i$i) - (local.get $$sub$ptr$rhs$cast$i$i) - ) - ) - (local.set $$194 - (i32.load - (local.get $$head$i$17$i) - ) - ) - (local.set $$and32$i$i - (i32.and - (local.get $$194) - (i32.const -2) - ) - ) - (i32.store - (local.get $$head$i$17$i) - (local.get $$and32$i$i) - ) - (local.set $$or33$i$i - (i32.or - (local.get $$sub$ptr$sub$i$i) - (i32.const 1) - ) - ) - (local.set $$head34$i$i - (i32.add - (local.get $$119) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head34$i$i) - (local.get $$or33$i$i) - ) - (i32.store - (local.get $$cond13$i$i) - (local.get $$sub$ptr$sub$i$i) - ) - (local.set $$shr$i$i - (i32.shr_u - (local.get $$sub$ptr$sub$i$i) - (i32.const 3) - ) - ) - (local.set $$cmp36$i$i - (i32.lt_u - (local.get $$sub$ptr$sub$i$i) - (i32.const 256) - ) - ) - (if - (local.get $$cmp36$i$i) - (block - (local.set $$shl$i$19$i - (i32.shl - (local.get $$shr$i$i) - (i32.const 1) - ) - ) - (local.set $$arrayidx$i$20$i - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl$i$19$i) - (i32.const 2) - ) - ) - ) - (local.set $$195 - (i32.load - (i32.const 176) - ) - ) - (local.set $$shl39$i$i - (i32.shl - (i32.const 1) - (local.get $$shr$i$i) - ) - ) - (local.set $$and40$i$i - (i32.and - (local.get $$195) - (local.get $$shl39$i$i) - ) - ) - (local.set $$tobool$i$i - (i32.eq - (local.get $$and40$i$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool$i$i) - (block - (local.set $$or44$i$i - (i32.or - (local.get $$195) - (local.get $$shl39$i$i) - ) - ) - (i32.store - (i32.const 176) - (local.get $$or44$i$i) - ) - (local.set $$$pre$i$i - (i32.add - (local.get $$arrayidx$i$20$i) - (i32.const 8) - ) - ) - (local.set $$$pre$phi$i$iZ2D - (local.get $$$pre$i$i) - ) - (local.set $$F$0$i$i - (local.get $$arrayidx$i$20$i) - ) - ) - (block - (local.set $$196 - (i32.add - (local.get $$arrayidx$i$20$i) - (i32.const 8) - ) - ) - (local.set $$197 - (i32.load - (local.get $$196) - ) - ) - (local.set $$198 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp46$i$i - (i32.lt_u - (local.get $$197) - (local.get $$198) - ) - ) - (if - (local.get $$cmp46$i$i) - (call $_abort) - (block - (local.set $$$pre$phi$i$iZ2D - (local.get $$196) - ) - (local.set $$F$0$i$i - (local.get $$197) - ) - ) - ) - ) - ) - (i32.store - (local.get $$$pre$phi$i$iZ2D) - (local.get $$119) - ) - (local.set $$bk$i$i - (i32.add - (local.get $$F$0$i$i) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk$i$i) - (local.get $$119) - ) - (local.set $$fd54$i$i - (i32.add - (local.get $$119) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd54$i$i) - (local.get $$F$0$i$i) - ) - (local.set $$bk55$i$i - (i32.add - (local.get $$119) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk55$i$i) - (local.get $$arrayidx$i$20$i) - ) - (br $do-once40) - ) - ) - (local.set $$shr58$i$i - (i32.shr_u - (local.get $$sub$ptr$sub$i$i) - (i32.const 8) - ) - ) - (local.set $$cmp59$i$i - (i32.eq - (local.get $$shr58$i$i) - (i32.const 0) - ) - ) - (if - (local.get $$cmp59$i$i) - (local.set $$I57$0$i$i - (i32.const 0) - ) - (block - (local.set $$cmp63$i$i - (i32.gt_u - (local.get $$sub$ptr$sub$i$i) - (i32.const 16777215) - ) - ) - (if - (local.get $$cmp63$i$i) - (local.set $$I57$0$i$i - (i32.const 31) - ) - (block - (local.set $$sub67$i$i - (i32.add - (local.get $$shr58$i$i) - (i32.const 1048320) - ) - ) - (local.set $$shr68$i$i - (i32.shr_u - (local.get $$sub67$i$i) - (i32.const 16) - ) - ) - (local.set $$and69$i$i - (i32.and - (local.get $$shr68$i$i) - (i32.const 8) - ) - ) - (local.set $$shl70$i$i - (i32.shl - (local.get $$shr58$i$i) - (local.get $$and69$i$i) - ) - ) - (local.set $$sub71$i$i - (i32.add - (local.get $$shl70$i$i) - (i32.const 520192) - ) - ) - (local.set $$shr72$i$i - (i32.shr_u - (local.get $$sub71$i$i) - (i32.const 16) - ) - ) - (local.set $$and73$i$i - (i32.and - (local.get $$shr72$i$i) - (i32.const 4) - ) - ) - (local.set $$add74$i$i - (i32.or - (local.get $$and73$i$i) - (local.get $$and69$i$i) - ) - ) - (local.set $$shl75$i$i - (i32.shl - (local.get $$shl70$i$i) - (local.get $$and73$i$i) - ) - ) - (local.set $$sub76$i$i - (i32.add - (local.get $$shl75$i$i) - (i32.const 245760) - ) - ) - (local.set $$shr77$i$i - (i32.shr_u - (local.get $$sub76$i$i) - (i32.const 16) - ) - ) - (local.set $$and78$i$i - (i32.and - (local.get $$shr77$i$i) - (i32.const 2) - ) - ) - (local.set $$add79$i$i - (i32.or - (local.get $$add74$i$i) - (local.get $$and78$i$i) - ) - ) - (local.set $$sub80$i$i - (i32.sub - (i32.const 14) - (local.get $$add79$i$i) - ) - ) - (local.set $$shl81$i$i - (i32.shl - (local.get $$shl75$i$i) - (local.get $$and78$i$i) - ) - ) - (local.set $$shr82$i$i - (i32.shr_u - (local.get $$shl81$i$i) - (i32.const 15) - ) - ) - (local.set $$add83$i$i - (i32.add - (local.get $$sub80$i$i) - (local.get $$shr82$i$i) - ) - ) - (local.set $$shl84$i$i - (i32.shl - (local.get $$add83$i$i) - (i32.const 1) - ) - ) - (local.set $$add85$i$i - (i32.add - (local.get $$add83$i$i) - (i32.const 7) - ) - ) - (local.set $$shr86$i$i - (i32.shr_u - (local.get $$sub$ptr$sub$i$i) - (local.get $$add85$i$i) - ) - ) - (local.set $$and87$i$i - (i32.and - (local.get $$shr86$i$i) - (i32.const 1) - ) - ) - (local.set $$add88$i$i - (i32.or - (local.get $$and87$i$i) - (local.get $$shl84$i$i) - ) - ) - (local.set $$I57$0$i$i - (local.get $$add88$i$i) - ) - ) - ) - ) - ) - (local.set $$arrayidx91$i$i - (i32.add - (i32.const 480) - (i32.shl - (local.get $$I57$0$i$i) - (i32.const 2) - ) - ) - ) - (local.set $$index$i$i - (i32.add - (local.get $$119) - (i32.const 28) - ) - ) - (i32.store - (local.get $$index$i$i) - (local.get $$I57$0$i$i) - ) - (local.set $$arrayidx92$i$i - (i32.add - (local.get $$119) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx92$i$i) - (i32.const 0) - ) - (i32.store - (local.get $$add$ptr8$i122$i) - (i32.const 0) - ) - (local.set $$199 - (i32.load - (i32.const 180) - ) - ) - (local.set $$shl95$i$i - (i32.shl - (i32.const 1) - (local.get $$I57$0$i$i) - ) - ) - (local.set $$and96$i$i - (i32.and - (local.get $$199) - (local.get $$shl95$i$i) - ) - ) - (local.set $$tobool97$i$i - (i32.eq - (local.get $$and96$i$i) - (i32.const 0) - ) - ) - (if - (local.get $$tobool97$i$i) - (block - (local.set $$or101$i$i - (i32.or - (local.get $$199) - (local.get $$shl95$i$i) - ) - ) - (i32.store - (i32.const 180) - (local.get $$or101$i$i) - ) - (i32.store - (local.get $$arrayidx91$i$i) - (local.get $$119) - ) - (local.set $$parent$i$i - (i32.add - (local.get $$119) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent$i$i) - (local.get $$arrayidx91$i$i) - ) - (local.set $$bk102$i$i - (i32.add - (local.get $$119) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk102$i$i) - (local.get $$119) - ) - (local.set $$fd103$i$i - (i32.add - (local.get $$119) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd103$i$i) - (local.get $$119) - ) - (br $do-once40) - ) - ) - (local.set $$200 - (i32.load - (local.get $$arrayidx91$i$i) - ) - ) - (local.set $$cmp106$i$i - (i32.eq - (local.get $$I57$0$i$i) - (i32.const 31) - ) - ) - (local.set $$shr110$i$i - (i32.shr_u - (local.get $$I57$0$i$i) - (i32.const 1) - ) - ) - (local.set $$sub113$i$i - (i32.sub - (i32.const 25) - (local.get $$shr110$i$i) - ) - ) - (local.set $$cond115$i$i - (if (result i32) - (local.get $$cmp106$i$i) - (i32.const 0) - (local.get $$sub113$i$i) - ) - ) - (local.set $$shl116$i$i - (i32.shl - (local.get $$sub$ptr$sub$i$i) - (local.get $$cond115$i$i) - ) - ) - (local.set $$K105$0$i$i - (local.get $$shl116$i$i) - ) - (local.set $$T$0$i$i - (local.get $$200) - ) - (loop $while-in74 - (block $while-out73 - (local.set $$head118$i$i - (i32.add - (local.get $$T$0$i$i) - (i32.const 4) - ) - ) - (local.set $$201 - (i32.load - (local.get $$head118$i$i) - ) - ) - (local.set $$and119$i$i - (i32.and - (local.get $$201) - (i32.const -8) - ) - ) - (local.set $$cmp120$i$i - (i32.eq - (local.get $$and119$i$i) - (local.get $$sub$ptr$sub$i$i) - ) - ) - (if - (local.get $$cmp120$i$i) - (block - (local.set $$T$0$i$i$lcssa - (local.get $$T$0$i$i) - ) - (local.set $label - (i32.const 307) - ) - (br $while-out73) - ) - ) - (local.set $$shr123$i$i - (i32.shr_u - (local.get $$K105$0$i$i) - (i32.const 31) - ) - ) - (local.set $$arrayidx126$i$i - (i32.add - (i32.add - (local.get $$T$0$i$i) - (i32.const 16) - ) - (i32.shl - (local.get $$shr123$i$i) - (i32.const 2) - ) - ) - ) - (local.set $$shl127$i$i - (i32.shl - (local.get $$K105$0$i$i) - (i32.const 1) - ) - ) - (local.set $$202 - (i32.load - (local.get $$arrayidx126$i$i) - ) - ) - (local.set $$cmp128$i$i - (i32.eq - (local.get $$202) - (i32.const 0) - ) - ) - (if - (local.get $$cmp128$i$i) - (block - (local.set $$T$0$i$i$lcssa284 - (local.get $$T$0$i$i) - ) - (local.set $$arrayidx126$i$i$lcssa - (local.get $$arrayidx126$i$i) - ) - (local.set $label - (i32.const 304) - ) - (br $while-out73) - ) - (block - (local.set $$K105$0$i$i - (local.get $$shl127$i$i) - ) - (local.set $$T$0$i$i - (local.get $$202) - ) - ) - ) - (br $while-in74) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 304) - ) - (block - (local.set $$203 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp133$i$i - (i32.lt_u - (local.get $$arrayidx126$i$i$lcssa) - (local.get $$203) - ) - ) - (if - (local.get $$cmp133$i$i) - (call $_abort) - (block - (i32.store - (local.get $$arrayidx126$i$i$lcssa) - (local.get $$119) - ) - (local.set $$parent138$i$i - (i32.add - (local.get $$119) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent138$i$i) - (local.get $$T$0$i$i$lcssa284) - ) - (local.set $$bk139$i$i - (i32.add - (local.get $$119) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk139$i$i) - (local.get $$119) - ) - (local.set $$fd140$i$i - (i32.add - (local.get $$119) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd140$i$i) - (local.get $$119) - ) - (br $do-once40) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 307) - ) - (block - (local.set $$fd148$i$i - (i32.add - (local.get $$T$0$i$i$lcssa) - (i32.const 8) - ) - ) - (local.set $$204 - (i32.load - (local.get $$fd148$i$i) - ) - ) - (local.set $$205 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp153$i$i - (i32.ge_u - (local.get $$204) - (local.get $$205) - ) - ) - (local.set $$not$cmp150$i$i - (i32.ge_u - (local.get $$T$0$i$i$lcssa) - (local.get $$205) - ) - ) - (local.set $$206 - (i32.and - (local.get $$cmp153$i$i) - (local.get $$not$cmp150$i$i) - ) - ) - (if - (local.get $$206) - (block - (local.set $$bk158$i$i - (i32.add - (local.get $$204) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk158$i$i) - (local.get $$119) - ) - (i32.store - (local.get $$fd148$i$i) - (local.get $$119) - ) - (local.set $$fd160$i$i - (i32.add - (local.get $$119) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd160$i$i) - (local.get $$204) - ) - (local.set $$bk161$i$i - (i32.add - (local.get $$119) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk161$i$i) - (local.get $$T$0$i$i$lcssa) - ) - (local.set $$parent162$i$i - (i32.add - (local.get $$119) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent162$i$i) - (i32.const 0) - ) - (br $do-once40) - ) - (call $_abort) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (local.set $$207 - (i32.load - (i32.const 188) - ) - ) - (local.set $$cmp257$i - (i32.gt_u - (local.get $$207) - (local.get $$nb$0) - ) - ) - (if - (local.get $$cmp257$i) - (block - (local.set $$sub260$i - (i32.sub - (local.get $$207) - (local.get $$nb$0) - ) - ) - (i32.store - (i32.const 188) - (local.get $$sub260$i) - ) - (local.set $$208 - (i32.load - (i32.const 200) - ) - ) - (local.set $$add$ptr262$i - (i32.add - (local.get $$208) - (local.get $$nb$0) - ) - ) - (i32.store - (i32.const 200) - (local.get $$add$ptr262$i) - ) - (local.set $$or264$i - (i32.or - (local.get $$sub260$i) - (i32.const 1) - ) - ) - (local.set $$head265$i - (i32.add - (local.get $$add$ptr262$i) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head265$i) - (local.get $$or264$i) - ) - (local.set $$or267$i - (i32.or - (local.get $$nb$0) - (i32.const 3) - ) - ) - (local.set $$head268$i - (i32.add - (local.get $$208) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head268$i) - (local.get $$or267$i) - ) - (local.set $$add$ptr269$i - (i32.add - (local.get $$208) - (i32.const 8) - ) - ) - (local.set $$retval$0 - (local.get $$add$ptr269$i) - ) - (return - (local.get $$retval$0) - ) - ) - ) - ) - ) - (local.set $$call275$i - (call $___errno_location) - ) - (i32.store - (local.get $$call275$i) - (i32.const 12) - ) - (local.set $$retval$0 - (i32.const 0) - ) - (return - (local.get $$retval$0) - ) - ) - (func $_free (; 59 ;) (param $$mem i32) - (local $$$pre i32) - (local $$$pre$phiZ2D i32) - (local $$$pre312 i32) - (local $$$pre313 i32) - (local $$0 i32) - (local $$1 i32) - (local $$10 i32) - (local $$11 i32) - (local $$12 i32) - (local $$13 i32) - (local $$14 i32) - (local $$15 i32) - (local $$16 i32) - (local $$17 i32) - (local $$18 i32) - (local $$19 i32) - (local $$2 i32) - (local $$20 i32) - (local $$21 i32) - (local $$22 i32) - (local $$23 i32) - (local $$24 i32) - (local $$25 i32) - (local $$26 i32) - (local $$27 i32) - (local $$28 i32) - (local $$29 i32) - (local $$3 i32) - (local $$30 i32) - (local $$31 i32) - (local $$32 i32) - (local $$33 i32) - (local $$34 i32) - (local $$35 i32) - (local $$36 i32) - (local $$37 i32) - (local $$38 i32) - (local $$39 i32) - (local $$4 i32) - (local $$40 i32) - (local $$41 i32) - (local $$42 i32) - (local $$43 i32) - (local $$44 i32) - (local $$45 i32) - (local $$46 i32) - (local $$47 i32) - (local $$48 i32) - (local $$49 i32) - (local $$5 i32) - (local $$50 i32) - (local $$51 i32) - (local $$52 i32) - (local $$53 i32) - (local $$54 i32) - (local $$55 i32) - (local $$56 i32) - (local $$57 i32) - (local $$58 i32) - (local $$59 i32) - (local $$6 i32) - (local $$60 i32) - (local $$61 i32) - (local $$62 i32) - (local $$63 i32) - (local $$64 i32) - (local $$65 i32) - (local $$66 i32) - (local $$67 i32) - (local $$68 i32) - (local $$69 i32) - (local $$7 i32) - (local $$70 i32) - (local $$71 i32) - (local $$72 i32) - (local $$73 i32) - (local $$74 i32) - (local $$8 i32) - (local $$9 i32) - (local $$F510$0 i32) - (local $$I534$0 i32) - (local $$K583$0 i32) - (local $$R$1 i32) - (local $$R$1$lcssa i32) - (local $$R$3 i32) - (local $$R332$1 i32) - (local $$R332$1$lcssa i32) - (local $$R332$3 i32) - (local $$RP$1 i32) - (local $$RP$1$lcssa i32) - (local $$RP360$1 i32) - (local $$RP360$1$lcssa i32) - (local $$T$0 i32) - (local $$T$0$lcssa i32) - (local $$T$0$lcssa319 i32) - (local $$add$ptr i32) - (local $$add$ptr16 i32) - (local $$add$ptr217 i32) - (local $$add$ptr261 i32) - (local $$add$ptr482 i32) - (local $$add$ptr498 i32) - (local $$add$ptr6 i32) - (local $$add17 i32) - (local $$add246 i32) - (local $$add258 i32) - (local $$add267 i32) - (local $$add550 i32) - (local $$add555 i32) - (local $$add559 i32) - (local $$add561 i32) - (local $$add564 i32) - (local $$and i32) - (local $$and140 i32) - (local $$and210 i32) - (local $$and215 i32) - (local $$and232 i32) - (local $$and240 i32) - (local $$and266 i32) - (local $$and301 i32) - (local $$and410 i32) - (local $$and46 i32) - (local $$and495 i32) - (local $$and5 i32) - (local $$and512 i32) - (local $$and545 i32) - (local $$and549 i32) - (local $$and554 i32) - (local $$and563 i32) - (local $$and574 i32) - (local $$and592 i32) - (local $$and8 i32) - (local $$arrayidx i32) - (local $$arrayidx108 i32) - (local $$arrayidx113 i32) - (local $$arrayidx130 i32) - (local $$arrayidx149 i32) - (local $$arrayidx157 i32) - (local $$arrayidx182 i32) - (local $$arrayidx188 i32) - (local $$arrayidx198 i32) - (local $$arrayidx279 i32) - (local $$arrayidx362 i32) - (local $$arrayidx374 i32) - (local $$arrayidx379 i32) - (local $$arrayidx400 i32) - (local $$arrayidx419 i32) - (local $$arrayidx427 i32) - (local $$arrayidx454 i32) - (local $$arrayidx460 i32) - (local $$arrayidx470 i32) - (local $$arrayidx509 i32) - (local $$arrayidx567 i32) - (local $$arrayidx570 i32) - (local $$arrayidx599 i32) - (local $$arrayidx599$lcssa i32) - (local $$arrayidx99 i32) - (local $$bk i32) - (local $$bk275 i32) - (local $$bk286 i32) - (local $$bk321 i32) - (local $$bk333 i32) - (local $$bk34 i32) - (local $$bk343 i32) - (local $$bk529 i32) - (local $$bk531 i32) - (local $$bk580 i32) - (local $$bk611 i32) - (local $$bk631 i32) - (local $$bk634 i32) - (local $$bk66 i32) - (local $$bk73 i32) - (local $$bk82 i32) - (local $$child i32) - (local $$child171 i32) - (local $$child361 i32) - (local $$child443 i32) - (local $$child569 i32) - (local $$cmp i32) - (local $$cmp$i i32) - (local $$cmp1 i32) - (local $$cmp100 i32) - (local $$cmp104 i32) - (local $$cmp109 i32) - (local $$cmp114 i32) - (local $$cmp118 i32) - (local $$cmp127 i32) - (local $$cmp13 i32) - (local $$cmp131 i32) - (local $$cmp143 i32) - (local $$cmp150 i32) - (local $$cmp162 i32) - (local $$cmp165 i32) - (local $$cmp173 i32) - (local $$cmp176 i32) - (local $$cmp18 i32) - (local $$cmp189 i32) - (local $$cmp192 i32) - (local $$cmp2 i32) - (local $$cmp211 i32) - (local $$cmp22 i32) - (local $$cmp228 i32) - (local $$cmp243 i32) - (local $$cmp249 i32) - (local $$cmp25 i32) - (local $$cmp255 i32) - (local $$cmp269 i32) - (local $$cmp280 i32) - (local $$cmp283 i32) - (local $$cmp287 i32) - (local $$cmp29 i32) - (local $$cmp296 i32) - (local $$cmp305 i32) - (local $$cmp308 i32) - (local $$cmp31 i32) - (local $$cmp312 i32) - (local $$cmp334 i32) - (local $$cmp340 i32) - (local $$cmp344 i32) - (local $$cmp348 i32) - (local $$cmp35 i32) - (local $$cmp363 i32) - (local $$cmp368 i32) - (local $$cmp375 i32) - (local $$cmp380 i32) - (local $$cmp386 i32) - (local $$cmp395 i32) - (local $$cmp401 i32) - (local $$cmp413 i32) - (local $$cmp42 i32) - (local $$cmp420 i32) - (local $$cmp432 i32) - (local $$cmp435 i32) - (local $$cmp445 i32) - (local $$cmp448 i32) - (local $$cmp461 i32) - (local $$cmp464 i32) - (local $$cmp484 i32) - (local $$cmp50 i32) - (local $$cmp502 i32) - (local $$cmp519 i32) - (local $$cmp53 i32) - (local $$cmp536 i32) - (local $$cmp540 i32) - (local $$cmp57 i32) - (local $$cmp584 i32) - (local $$cmp593 i32) - (local $$cmp601 i32) - (local $$cmp605 i32) - (local $$cmp624 i32) - (local $$cmp640 i32) - (local $$cmp74 i32) - (local $$cmp80 i32) - (local $$cmp83 i32) - (local $$cmp87 i32) - (local $$cond i32) - (local $$cond291 i32) - (local $$cond292 i32) - (local $$dec i32) - (local $$fd i32) - (local $$fd273 i32) - (local $$fd311 i32) - (local $$fd322$pre$phiZ2D i32) - (local $$fd338 i32) - (local $$fd347 i32) - (local $$fd530 i32) - (local $$fd56 i32) - (local $$fd581 i32) - (local $$fd612 i32) - (local $$fd620 i32) - (local $$fd633 i32) - (local $$fd67$pre$phiZ2D i32) - (local $$fd78 i32) - (local $$fd86 i32) - (local $$head i32) - (local $$head209 i32) - (local $$head216 i32) - (local $$head231 i32) - (local $$head248 i32) - (local $$head260 i32) - (local $$head481 i32) - (local $$head497 i32) - (local $$head591 i32) - (local $$idx$neg i32) - (local $$index i32) - (local $$index399 i32) - (local $$index568 i32) - (local $$neg i32) - (local $$neg139 i32) - (local $$neg300 i32) - (local $$neg409 i32) - (local $$next4$i i32) - (local $$not$cmp621 i32) - (local $$or i32) - (local $$or247 i32) - (local $$or259 i32) - (local $$or480 i32) - (local $$or496 i32) - (local $$or516 i32) - (local $$or578 i32) - (local $$p$1 i32) - (local $$parent i32) - (local $$parent170 i32) - (local $$parent183 i32) - (local $$parent199 i32) - (local $$parent331 i32) - (local $$parent442 i32) - (local $$parent455 i32) - (local $$parent471 i32) - (local $$parent579 i32) - (local $$parent610 i32) - (local $$parent635 i32) - (local $$psize$1 i32) - (local $$psize$2 i32) - (local $$shl i32) - (local $$shl138 i32) - (local $$shl278 i32) - (local $$shl299 i32) - (local $$shl408 i32) - (local $$shl45 i32) - (local $$shl508 i32) - (local $$shl511 i32) - (local $$shl546 i32) - (local $$shl551 i32) - (local $$shl557 i32) - (local $$shl560 i32) - (local $$shl573 i32) - (local $$shl590 i32) - (local $$shl600 i32) - (local $$shr i32) - (local $$shr268 i32) - (local $$shr501 i32) - (local $$shr535 i32) - (local $$shr544 i32) - (local $$shr548 i32) - (local $$shr553 i32) - (local $$shr558 i32) - (local $$shr562 i32) - (local $$shr586 i32) - (local $$shr596 i32) - (local $$sp$0$i i32) - (local $$sp$0$in$i i32) - (local $$sub i32) - (local $$sub547 i32) - (local $$sub552 i32) - (local $$sub556 i32) - (local $$sub589 i32) - (local $$tobool233 i32) - (local $$tobool241 i32) - (local $$tobool513 i32) - (local $$tobool575 i32) - (local $$tobool9 i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$cmp - (i32.eq - (local.get $$mem) - (i32.const 0) - ) - ) - (if - (local.get $$cmp) - (return) - ) - (local.set $$add$ptr - (i32.add - (local.get $$mem) - (i32.const -8) - ) - ) - (local.set $$0 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp1 - (i32.lt_u - (local.get $$add$ptr) - (local.get $$0) - ) - ) - (if - (local.get $$cmp1) - (call $_abort) - ) - (local.set $$head - (i32.add - (local.get $$mem) - (i32.const -4) - ) - ) - (local.set $$1 - (i32.load - (local.get $$head) - ) - ) - (local.set $$and - (i32.and - (local.get $$1) - (i32.const 3) - ) - ) - (local.set $$cmp2 - (i32.eq - (local.get $$and) - (i32.const 1) - ) - ) - (if - (local.get $$cmp2) - (call $_abort) - ) - (local.set $$and5 - (i32.and - (local.get $$1) - (i32.const -8) - ) - ) - (local.set $$add$ptr6 - (i32.add - (local.get $$add$ptr) - (local.get $$and5) - ) - ) - (local.set $$and8 - (i32.and - (local.get $$1) - (i32.const 1) - ) - ) - (local.set $$tobool9 - (i32.eq - (local.get $$and8) - (i32.const 0) - ) - ) - (block $do-once - (if - (local.get $$tobool9) - (block - (local.set $$2 - (i32.load - (local.get $$add$ptr) - ) - ) - (local.set $$cmp13 - (i32.eq - (local.get $$and) - (i32.const 0) - ) - ) - (if - (local.get $$cmp13) - (return) - ) - (local.set $$idx$neg - (i32.sub - (i32.const 0) - (local.get $$2) - ) - ) - (local.set $$add$ptr16 - (i32.add - (local.get $$add$ptr) - (local.get $$idx$neg) - ) - ) - (local.set $$add17 - (i32.add - (local.get $$2) - (local.get $$and5) - ) - ) - (local.set $$cmp18 - (i32.lt_u - (local.get $$add$ptr16) - (local.get $$0) - ) - ) - (if - (local.get $$cmp18) - (call $_abort) - ) - (local.set $$3 - (i32.load - (i32.const 196) - ) - ) - (local.set $$cmp22 - (i32.eq - (local.get $$add$ptr16) - (local.get $$3) - ) - ) - (if - (local.get $$cmp22) - (block - (local.set $$head209 - (i32.add - (local.get $$add$ptr6) - (i32.const 4) - ) - ) - (local.set $$27 - (i32.load - (local.get $$head209) - ) - ) - (local.set $$and210 - (i32.and - (local.get $$27) - (i32.const 3) - ) - ) - (local.set $$cmp211 - (i32.eq - (local.get $$and210) - (i32.const 3) - ) - ) - (if - (i32.eqz - (local.get $$cmp211) - ) - (block - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - (br $do-once) - ) - ) - (i32.store - (i32.const 184) - (local.get $$add17) - ) - (local.set $$and215 - (i32.and - (local.get $$27) - (i32.const -2) - ) - ) - (i32.store - (local.get $$head209) - (local.get $$and215) - ) - (local.set $$or - (i32.or - (local.get $$add17) - (i32.const 1) - ) - ) - (local.set $$head216 - (i32.add - (local.get $$add$ptr16) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head216) - (local.get $$or) - ) - (local.set $$add$ptr217 - (i32.add - (local.get $$add$ptr16) - (local.get $$add17) - ) - ) - (i32.store - (local.get $$add$ptr217) - (local.get $$add17) - ) - (return) - ) - ) - (local.set $$shr - (i32.shr_u - (local.get $$2) - (i32.const 3) - ) - ) - (local.set $$cmp25 - (i32.lt_u - (local.get $$2) - (i32.const 256) - ) - ) - (if - (local.get $$cmp25) - (block - (local.set $$fd - (i32.add - (local.get $$add$ptr16) - (i32.const 8) - ) - ) - (local.set $$4 - (i32.load - (local.get $$fd) - ) - ) - (local.set $$bk - (i32.add - (local.get $$add$ptr16) - (i32.const 12) - ) - ) - (local.set $$5 - (i32.load - (local.get $$bk) - ) - ) - (local.set $$shl - (i32.shl - (local.get $$shr) - (i32.const 1) - ) - ) - (local.set $$arrayidx - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl) - (i32.const 2) - ) - ) - ) - (local.set $$cmp29 - (i32.eq - (local.get $$4) - (local.get $$arrayidx) - ) - ) - (if - (i32.eqz - (local.get $$cmp29) - ) - (block - (local.set $$cmp31 - (i32.lt_u - (local.get $$4) - (local.get $$0) - ) - ) - (if - (local.get $$cmp31) - (call $_abort) - ) - (local.set $$bk34 - (i32.add - (local.get $$4) - (i32.const 12) - ) - ) - (local.set $$6 - (i32.load - (local.get $$bk34) - ) - ) - (local.set $$cmp35 - (i32.eq - (local.get $$6) - (local.get $$add$ptr16) - ) - ) - (if - (i32.eqz - (local.get $$cmp35) - ) - (call $_abort) - ) - ) - ) - (local.set $$cmp42 - (i32.eq - (local.get $$5) - (local.get $$4) - ) - ) - (if - (local.get $$cmp42) - (block - (local.set $$shl45 - (i32.shl - (i32.const 1) - (local.get $$shr) - ) - ) - (local.set $$neg - (i32.xor - (local.get $$shl45) - (i32.const -1) - ) - ) - (local.set $$7 - (i32.load - (i32.const 176) - ) - ) - (local.set $$and46 - (i32.and - (local.get $$7) - (local.get $$neg) - ) - ) - (i32.store - (i32.const 176) - (local.get $$and46) - ) - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - (br $do-once) - ) - ) - (local.set $$cmp50 - (i32.eq - (local.get $$5) - (local.get $$arrayidx) - ) - ) - (if - (local.get $$cmp50) - (block - (local.set $$$pre313 - (i32.add - (local.get $$5) - (i32.const 8) - ) - ) - (local.set $$fd67$pre$phiZ2D - (local.get $$$pre313) - ) - ) - (block - (local.set $$cmp53 - (i32.lt_u - (local.get $$5) - (local.get $$0) - ) - ) - (if - (local.get $$cmp53) - (call $_abort) - ) - (local.set $$fd56 - (i32.add - (local.get $$5) - (i32.const 8) - ) - ) - (local.set $$8 - (i32.load - (local.get $$fd56) - ) - ) - (local.set $$cmp57 - (i32.eq - (local.get $$8) - (local.get $$add$ptr16) - ) - ) - (if - (local.get $$cmp57) - (local.set $$fd67$pre$phiZ2D - (local.get $$fd56) - ) - (call $_abort) - ) - ) - ) - (local.set $$bk66 - (i32.add - (local.get $$4) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk66) - (local.get $$5) - ) - (i32.store - (local.get $$fd67$pre$phiZ2D) - (local.get $$4) - ) - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - (br $do-once) - ) - ) - (local.set $$parent - (i32.add - (local.get $$add$ptr16) - (i32.const 24) - ) - ) - (local.set $$9 - (i32.load - (local.get $$parent) - ) - ) - (local.set $$bk73 - (i32.add - (local.get $$add$ptr16) - (i32.const 12) - ) - ) - (local.set $$10 - (i32.load - (local.get $$bk73) - ) - ) - (local.set $$cmp74 - (i32.eq - (local.get $$10) - (local.get $$add$ptr16) - ) - ) - (block $do-once0 - (if - (local.get $$cmp74) - (block - (local.set $$child - (i32.add - (local.get $$add$ptr16) - (i32.const 16) - ) - ) - (local.set $$arrayidx99 - (i32.add - (local.get $$child) - (i32.const 4) - ) - ) - (local.set $$14 - (i32.load - (local.get $$arrayidx99) - ) - ) - (local.set $$cmp100 - (i32.eq - (local.get $$14) - (i32.const 0) - ) - ) - (if - (local.get $$cmp100) - (block - (local.set $$15 - (i32.load - (local.get $$child) - ) - ) - (local.set $$cmp104 - (i32.eq - (local.get $$15) - (i32.const 0) - ) - ) - (if - (local.get $$cmp104) - (block - (local.set $$R$3 - (i32.const 0) - ) - (br $do-once0) - ) - (block - (local.set $$R$1 - (local.get $$15) - ) - (local.set $$RP$1 - (local.get $$child) - ) - ) - ) - ) - (block - (local.set $$R$1 - (local.get $$14) - ) - (local.set $$RP$1 - (local.get $$arrayidx99) - ) - ) - ) - (loop $while-in - (block $while-out - (local.set $$arrayidx108 - (i32.add - (local.get $$R$1) - (i32.const 20) - ) - ) - (local.set $$16 - (i32.load - (local.get $$arrayidx108) - ) - ) - (local.set $$cmp109 - (i32.eq - (local.get $$16) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp109) - ) - (block - (local.set $$R$1 - (local.get $$16) - ) - (local.set $$RP$1 - (local.get $$arrayidx108) - ) - (br $while-in) - ) - ) - (local.set $$arrayidx113 - (i32.add - (local.get $$R$1) - (i32.const 16) - ) - ) - (local.set $$17 - (i32.load - (local.get $$arrayidx113) - ) - ) - (local.set $$cmp114 - (i32.eq - (local.get $$17) - (i32.const 0) - ) - ) - (if - (local.get $$cmp114) - (block - (local.set $$R$1$lcssa - (local.get $$R$1) - ) - (local.set $$RP$1$lcssa - (local.get $$RP$1) - ) - (br $while-out) - ) - (block - (local.set $$R$1 - (local.get $$17) - ) - (local.set $$RP$1 - (local.get $$arrayidx113) - ) - ) - ) - (br $while-in) - ) - ) - (local.set $$cmp118 - (i32.lt_u - (local.get $$RP$1$lcssa) - (local.get $$0) - ) - ) - (if - (local.get $$cmp118) - (call $_abort) - (block - (i32.store - (local.get $$RP$1$lcssa) - (i32.const 0) - ) - (local.set $$R$3 - (local.get $$R$1$lcssa) - ) - (br $do-once0) - ) - ) - ) - (block - (local.set $$fd78 - (i32.add - (local.get $$add$ptr16) - (i32.const 8) - ) - ) - (local.set $$11 - (i32.load - (local.get $$fd78) - ) - ) - (local.set $$cmp80 - (i32.lt_u - (local.get $$11) - (local.get $$0) - ) - ) - (if - (local.get $$cmp80) - (call $_abort) - ) - (local.set $$bk82 - (i32.add - (local.get $$11) - (i32.const 12) - ) - ) - (local.set $$12 - (i32.load - (local.get $$bk82) - ) - ) - (local.set $$cmp83 - (i32.eq - (local.get $$12) - (local.get $$add$ptr16) - ) - ) - (if - (i32.eqz - (local.get $$cmp83) - ) - (call $_abort) - ) - (local.set $$fd86 - (i32.add - (local.get $$10) - (i32.const 8) - ) - ) - (local.set $$13 - (i32.load - (local.get $$fd86) - ) - ) - (local.set $$cmp87 - (i32.eq - (local.get $$13) - (local.get $$add$ptr16) - ) - ) - (if - (local.get $$cmp87) - (block - (i32.store - (local.get $$bk82) - (local.get $$10) - ) - (i32.store - (local.get $$fd86) - (local.get $$11) - ) - (local.set $$R$3 - (local.get $$10) - ) - (br $do-once0) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$cmp127 - (i32.eq - (local.get $$9) - (i32.const 0) - ) - ) - (if - (local.get $$cmp127) - (block - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - ) - (block - (local.set $$index - (i32.add - (local.get $$add$ptr16) - (i32.const 28) - ) - ) - (local.set $$18 - (i32.load - (local.get $$index) - ) - ) - (local.set $$arrayidx130 - (i32.add - (i32.const 480) - (i32.shl - (local.get $$18) - (i32.const 2) - ) - ) - ) - (local.set $$19 - (i32.load - (local.get $$arrayidx130) - ) - ) - (local.set $$cmp131 - (i32.eq - (local.get $$add$ptr16) - (local.get $$19) - ) - ) - (if - (local.get $$cmp131) - (block - (i32.store - (local.get $$arrayidx130) - (local.get $$R$3) - ) - (local.set $$cond291 - (i32.eq - (local.get $$R$3) - (i32.const 0) - ) - ) - (if - (local.get $$cond291) - (block - (local.set $$shl138 - (i32.shl - (i32.const 1) - (local.get $$18) - ) - ) - (local.set $$neg139 - (i32.xor - (local.get $$shl138) - (i32.const -1) - ) - ) - (local.set $$20 - (i32.load - (i32.const 180) - ) - ) - (local.set $$and140 - (i32.and - (local.get $$20) - (local.get $$neg139) - ) - ) - (i32.store - (i32.const 180) - (local.get $$and140) - ) - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - (br $do-once) - ) - ) - ) - (block - (local.set $$21 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp143 - (i32.lt_u - (local.get $$9) - (local.get $$21) - ) - ) - (if - (local.get $$cmp143) - (call $_abort) - ) - (local.set $$arrayidx149 - (i32.add - (local.get $$9) - (i32.const 16) - ) - ) - (local.set $$22 - (i32.load - (local.get $$arrayidx149) - ) - ) - (local.set $$cmp150 - (i32.eq - (local.get $$22) - (local.get $$add$ptr16) - ) - ) - (if - (local.get $$cmp150) - (i32.store - (local.get $$arrayidx149) - (local.get $$R$3) - ) - (block - (local.set $$arrayidx157 - (i32.add - (local.get $$9) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx157) - (local.get $$R$3) - ) - ) - ) - (local.set $$cmp162 - (i32.eq - (local.get $$R$3) - (i32.const 0) - ) - ) - (if - (local.get $$cmp162) - (block - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - (br $do-once) - ) - ) - ) - ) - (local.set $$23 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp165 - (i32.lt_u - (local.get $$R$3) - (local.get $$23) - ) - ) - (if - (local.get $$cmp165) - (call $_abort) - ) - (local.set $$parent170 - (i32.add - (local.get $$R$3) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent170) - (local.get $$9) - ) - (local.set $$child171 - (i32.add - (local.get $$add$ptr16) - (i32.const 16) - ) - ) - (local.set $$24 - (i32.load - (local.get $$child171) - ) - ) - (local.set $$cmp173 - (i32.eq - (local.get $$24) - (i32.const 0) - ) - ) - (block $do-once2 - (if - (i32.eqz - (local.get $$cmp173) - ) - (block - (local.set $$cmp176 - (i32.lt_u - (local.get $$24) - (local.get $$23) - ) - ) - (if - (local.get $$cmp176) - (call $_abort) - (block - (local.set $$arrayidx182 - (i32.add - (local.get $$R$3) - (i32.const 16) - ) - ) - (i32.store - (local.get $$arrayidx182) - (local.get $$24) - ) - (local.set $$parent183 - (i32.add - (local.get $$24) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent183) - (local.get $$R$3) - ) - (br $do-once2) - ) - ) - ) - ) - ) - (local.set $$arrayidx188 - (i32.add - (local.get $$child171) - (i32.const 4) - ) - ) - (local.set $$25 - (i32.load - (local.get $$arrayidx188) - ) - ) - (local.set $$cmp189 - (i32.eq - (local.get $$25) - (i32.const 0) - ) - ) - (if - (local.get $$cmp189) - (block - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - ) - (block - (local.set $$26 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp192 - (i32.lt_u - (local.get $$25) - (local.get $$26) - ) - ) - (if - (local.get $$cmp192) - (call $_abort) - (block - (local.set $$arrayidx198 - (i32.add - (local.get $$R$3) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx198) - (local.get $$25) - ) - (local.set $$parent199 - (i32.add - (local.get $$25) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent199) - (local.get $$R$3) - ) - (local.set $$p$1 - (local.get $$add$ptr16) - ) - (local.set $$psize$1 - (local.get $$add17) - ) - (br $do-once) - ) - ) - ) - ) - ) - ) - ) - (block - (local.set $$p$1 - (local.get $$add$ptr) - ) - (local.set $$psize$1 - (local.get $$and5) - ) - ) - ) - ) - (local.set $$cmp228 - (i32.lt_u - (local.get $$p$1) - (local.get $$add$ptr6) - ) - ) - (if - (i32.eqz - (local.get $$cmp228) - ) - (call $_abort) - ) - (local.set $$head231 - (i32.add - (local.get $$add$ptr6) - (i32.const 4) - ) - ) - (local.set $$28 - (i32.load - (local.get $$head231) - ) - ) - (local.set $$and232 - (i32.and - (local.get $$28) - (i32.const 1) - ) - ) - (local.set $$tobool233 - (i32.eq - (local.get $$and232) - (i32.const 0) - ) - ) - (if - (local.get $$tobool233) - (call $_abort) - ) - (local.set $$and240 - (i32.and - (local.get $$28) - (i32.const 2) - ) - ) - (local.set $$tobool241 - (i32.eq - (local.get $$and240) - (i32.const 0) - ) - ) - (if - (local.get $$tobool241) - (block - (local.set $$29 - (i32.load - (i32.const 200) - ) - ) - (local.set $$cmp243 - (i32.eq - (local.get $$add$ptr6) - (local.get $$29) - ) - ) - (if - (local.get $$cmp243) - (block - (local.set $$30 - (i32.load - (i32.const 188) - ) - ) - (local.set $$add246 - (i32.add - (local.get $$30) - (local.get $$psize$1) - ) - ) - (i32.store - (i32.const 188) - (local.get $$add246) - ) - (i32.store - (i32.const 200) - (local.get $$p$1) - ) - (local.set $$or247 - (i32.or - (local.get $$add246) - (i32.const 1) - ) - ) - (local.set $$head248 - (i32.add - (local.get $$p$1) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head248) - (local.get $$or247) - ) - (local.set $$31 - (i32.load - (i32.const 196) - ) - ) - (local.set $$cmp249 - (i32.eq - (local.get $$p$1) - (local.get $$31) - ) - ) - (if - (i32.eqz - (local.get $$cmp249) - ) - (return) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (i32.store - (i32.const 184) - (i32.const 0) - ) - (return) - ) - ) - (local.set $$32 - (i32.load - (i32.const 196) - ) - ) - (local.set $$cmp255 - (i32.eq - (local.get $$add$ptr6) - (local.get $$32) - ) - ) - (if - (local.get $$cmp255) - (block - (local.set $$33 - (i32.load - (i32.const 184) - ) - ) - (local.set $$add258 - (i32.add - (local.get $$33) - (local.get $$psize$1) - ) - ) - (i32.store - (i32.const 184) - (local.get $$add258) - ) - (i32.store - (i32.const 196) - (local.get $$p$1) - ) - (local.set $$or259 - (i32.or - (local.get $$add258) - (i32.const 1) - ) - ) - (local.set $$head260 - (i32.add - (local.get $$p$1) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head260) - (local.get $$or259) - ) - (local.set $$add$ptr261 - (i32.add - (local.get $$p$1) - (local.get $$add258) - ) - ) - (i32.store - (local.get $$add$ptr261) - (local.get $$add258) - ) - (return) - ) - ) - (local.set $$and266 - (i32.and - (local.get $$28) - (i32.const -8) - ) - ) - (local.set $$add267 - (i32.add - (local.get $$and266) - (local.get $$psize$1) - ) - ) - (local.set $$shr268 - (i32.shr_u - (local.get $$28) - (i32.const 3) - ) - ) - (local.set $$cmp269 - (i32.lt_u - (local.get $$28) - (i32.const 256) - ) - ) - (block $do-once4 - (if - (local.get $$cmp269) - (block - (local.set $$fd273 - (i32.add - (local.get $$add$ptr6) - (i32.const 8) - ) - ) - (local.set $$34 - (i32.load - (local.get $$fd273) - ) - ) - (local.set $$bk275 - (i32.add - (local.get $$add$ptr6) - (i32.const 12) - ) - ) - (local.set $$35 - (i32.load - (local.get $$bk275) - ) - ) - (local.set $$shl278 - (i32.shl - (local.get $$shr268) - (i32.const 1) - ) - ) - (local.set $$arrayidx279 - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl278) - (i32.const 2) - ) - ) - ) - (local.set $$cmp280 - (i32.eq - (local.get $$34) - (local.get $$arrayidx279) - ) - ) - (if - (i32.eqz - (local.get $$cmp280) - ) - (block - (local.set $$36 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp283 - (i32.lt_u - (local.get $$34) - (local.get $$36) - ) - ) - (if - (local.get $$cmp283) - (call $_abort) - ) - (local.set $$bk286 - (i32.add - (local.get $$34) - (i32.const 12) - ) - ) - (local.set $$37 - (i32.load - (local.get $$bk286) - ) - ) - (local.set $$cmp287 - (i32.eq - (local.get $$37) - (local.get $$add$ptr6) - ) - ) - (if - (i32.eqz - (local.get $$cmp287) - ) - (call $_abort) - ) - ) - ) - (local.set $$cmp296 - (i32.eq - (local.get $$35) - (local.get $$34) - ) - ) - (if - (local.get $$cmp296) - (block - (local.set $$shl299 - (i32.shl - (i32.const 1) - (local.get $$shr268) - ) - ) - (local.set $$neg300 - (i32.xor - (local.get $$shl299) - (i32.const -1) - ) - ) - (local.set $$38 - (i32.load - (i32.const 176) - ) - ) - (local.set $$and301 - (i32.and - (local.get $$38) - (local.get $$neg300) - ) - ) - (i32.store - (i32.const 176) - (local.get $$and301) - ) - (br $do-once4) - ) - ) - (local.set $$cmp305 - (i32.eq - (local.get $$35) - (local.get $$arrayidx279) - ) - ) - (if - (local.get $$cmp305) - (block - (local.set $$$pre312 - (i32.add - (local.get $$35) - (i32.const 8) - ) - ) - (local.set $$fd322$pre$phiZ2D - (local.get $$$pre312) - ) - ) - (block - (local.set $$39 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp308 - (i32.lt_u - (local.get $$35) - (local.get $$39) - ) - ) - (if - (local.get $$cmp308) - (call $_abort) - ) - (local.set $$fd311 - (i32.add - (local.get $$35) - (i32.const 8) - ) - ) - (local.set $$40 - (i32.load - (local.get $$fd311) - ) - ) - (local.set $$cmp312 - (i32.eq - (local.get $$40) - (local.get $$add$ptr6) - ) - ) - (if - (local.get $$cmp312) - (local.set $$fd322$pre$phiZ2D - (local.get $$fd311) - ) - (call $_abort) - ) - ) - ) - (local.set $$bk321 - (i32.add - (local.get $$34) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk321) - (local.get $$35) - ) - (i32.store - (local.get $$fd322$pre$phiZ2D) - (local.get $$34) - ) - ) - (block - (local.set $$parent331 - (i32.add - (local.get $$add$ptr6) - (i32.const 24) - ) - ) - (local.set $$41 - (i32.load - (local.get $$parent331) - ) - ) - (local.set $$bk333 - (i32.add - (local.get $$add$ptr6) - (i32.const 12) - ) - ) - (local.set $$42 - (i32.load - (local.get $$bk333) - ) - ) - (local.set $$cmp334 - (i32.eq - (local.get $$42) - (local.get $$add$ptr6) - ) - ) - (block $do-once6 - (if - (local.get $$cmp334) - (block - (local.set $$child361 - (i32.add - (local.get $$add$ptr6) - (i32.const 16) - ) - ) - (local.set $$arrayidx362 - (i32.add - (local.get $$child361) - (i32.const 4) - ) - ) - (local.set $$47 - (i32.load - (local.get $$arrayidx362) - ) - ) - (local.set $$cmp363 - (i32.eq - (local.get $$47) - (i32.const 0) - ) - ) - (if - (local.get $$cmp363) - (block - (local.set $$48 - (i32.load - (local.get $$child361) - ) - ) - (local.set $$cmp368 - (i32.eq - (local.get $$48) - (i32.const 0) - ) - ) - (if - (local.get $$cmp368) - (block - (local.set $$R332$3 - (i32.const 0) - ) - (br $do-once6) - ) - (block - (local.set $$R332$1 - (local.get $$48) - ) - (local.set $$RP360$1 - (local.get $$child361) - ) - ) - ) - ) - (block - (local.set $$R332$1 - (local.get $$47) - ) - (local.set $$RP360$1 - (local.get $$arrayidx362) - ) - ) - ) - (loop $while-in9 - (block $while-out8 - (local.set $$arrayidx374 - (i32.add - (local.get $$R332$1) - (i32.const 20) - ) - ) - (local.set $$49 - (i32.load - (local.get $$arrayidx374) - ) - ) - (local.set $$cmp375 - (i32.eq - (local.get $$49) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp375) - ) - (block - (local.set $$R332$1 - (local.get $$49) - ) - (local.set $$RP360$1 - (local.get $$arrayidx374) - ) - (br $while-in9) - ) - ) - (local.set $$arrayidx379 - (i32.add - (local.get $$R332$1) - (i32.const 16) - ) - ) - (local.set $$50 - (i32.load - (local.get $$arrayidx379) - ) - ) - (local.set $$cmp380 - (i32.eq - (local.get $$50) - (i32.const 0) - ) - ) - (if - (local.get $$cmp380) - (block - (local.set $$R332$1$lcssa - (local.get $$R332$1) - ) - (local.set $$RP360$1$lcssa - (local.get $$RP360$1) - ) - (br $while-out8) - ) - (block - (local.set $$R332$1 - (local.get $$50) - ) - (local.set $$RP360$1 - (local.get $$arrayidx379) - ) - ) - ) - (br $while-in9) - ) - ) - (local.set $$51 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp386 - (i32.lt_u - (local.get $$RP360$1$lcssa) - (local.get $$51) - ) - ) - (if - (local.get $$cmp386) - (call $_abort) - (block - (i32.store - (local.get $$RP360$1$lcssa) - (i32.const 0) - ) - (local.set $$R332$3 - (local.get $$R332$1$lcssa) - ) - (br $do-once6) - ) - ) - ) - (block - (local.set $$fd338 - (i32.add - (local.get $$add$ptr6) - (i32.const 8) - ) - ) - (local.set $$43 - (i32.load - (local.get $$fd338) - ) - ) - (local.set $$44 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp340 - (i32.lt_u - (local.get $$43) - (local.get $$44) - ) - ) - (if - (local.get $$cmp340) - (call $_abort) - ) - (local.set $$bk343 - (i32.add - (local.get $$43) - (i32.const 12) - ) - ) - (local.set $$45 - (i32.load - (local.get $$bk343) - ) - ) - (local.set $$cmp344 - (i32.eq - (local.get $$45) - (local.get $$add$ptr6) - ) - ) - (if - (i32.eqz - (local.get $$cmp344) - ) - (call $_abort) - ) - (local.set $$fd347 - (i32.add - (local.get $$42) - (i32.const 8) - ) - ) - (local.set $$46 - (i32.load - (local.get $$fd347) - ) - ) - (local.set $$cmp348 - (i32.eq - (local.get $$46) - (local.get $$add$ptr6) - ) - ) - (if - (local.get $$cmp348) - (block - (i32.store - (local.get $$bk343) - (local.get $$42) - ) - (i32.store - (local.get $$fd347) - (local.get $$43) - ) - (local.set $$R332$3 - (local.get $$42) - ) - (br $do-once6) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $$cmp395 - (i32.eq - (local.get $$41) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp395) - ) - (block - (local.set $$index399 - (i32.add - (local.get $$add$ptr6) - (i32.const 28) - ) - ) - (local.set $$52 - (i32.load - (local.get $$index399) - ) - ) - (local.set $$arrayidx400 - (i32.add - (i32.const 480) - (i32.shl - (local.get $$52) - (i32.const 2) - ) - ) - ) - (local.set $$53 - (i32.load - (local.get $$arrayidx400) - ) - ) - (local.set $$cmp401 - (i32.eq - (local.get $$add$ptr6) - (local.get $$53) - ) - ) - (if - (local.get $$cmp401) - (block - (i32.store - (local.get $$arrayidx400) - (local.get $$R332$3) - ) - (local.set $$cond292 - (i32.eq - (local.get $$R332$3) - (i32.const 0) - ) - ) - (if - (local.get $$cond292) - (block - (local.set $$shl408 - (i32.shl - (i32.const 1) - (local.get $$52) - ) - ) - (local.set $$neg409 - (i32.xor - (local.get $$shl408) - (i32.const -1) - ) - ) - (local.set $$54 - (i32.load - (i32.const 180) - ) - ) - (local.set $$and410 - (i32.and - (local.get $$54) - (local.get $$neg409) - ) - ) - (i32.store - (i32.const 180) - (local.get $$and410) - ) - (br $do-once4) - ) - ) - ) - (block - (local.set $$55 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp413 - (i32.lt_u - (local.get $$41) - (local.get $$55) - ) - ) - (if - (local.get $$cmp413) - (call $_abort) - ) - (local.set $$arrayidx419 - (i32.add - (local.get $$41) - (i32.const 16) - ) - ) - (local.set $$56 - (i32.load - (local.get $$arrayidx419) - ) - ) - (local.set $$cmp420 - (i32.eq - (local.get $$56) - (local.get $$add$ptr6) - ) - ) - (if - (local.get $$cmp420) - (i32.store - (local.get $$arrayidx419) - (local.get $$R332$3) - ) - (block - (local.set $$arrayidx427 - (i32.add - (local.get $$41) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx427) - (local.get $$R332$3) - ) - ) - ) - (local.set $$cmp432 - (i32.eq - (local.get $$R332$3) - (i32.const 0) - ) - ) - (if - (local.get $$cmp432) - (br $do-once4) - ) - ) - ) - (local.set $$57 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp435 - (i32.lt_u - (local.get $$R332$3) - (local.get $$57) - ) - ) - (if - (local.get $$cmp435) - (call $_abort) - ) - (local.set $$parent442 - (i32.add - (local.get $$R332$3) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent442) - (local.get $$41) - ) - (local.set $$child443 - (i32.add - (local.get $$add$ptr6) - (i32.const 16) - ) - ) - (local.set $$58 - (i32.load - (local.get $$child443) - ) - ) - (local.set $$cmp445 - (i32.eq - (local.get $$58) - (i32.const 0) - ) - ) - (block $do-once10 - (if - (i32.eqz - (local.get $$cmp445) - ) - (block - (local.set $$cmp448 - (i32.lt_u - (local.get $$58) - (local.get $$57) - ) - ) - (if - (local.get $$cmp448) - (call $_abort) - (block - (local.set $$arrayidx454 - (i32.add - (local.get $$R332$3) - (i32.const 16) - ) - ) - (i32.store - (local.get $$arrayidx454) - (local.get $$58) - ) - (local.set $$parent455 - (i32.add - (local.get $$58) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent455) - (local.get $$R332$3) - ) - (br $do-once10) - ) - ) - ) - ) - ) - (local.set $$arrayidx460 - (i32.add - (local.get $$child443) - (i32.const 4) - ) - ) - (local.set $$59 - (i32.load - (local.get $$arrayidx460) - ) - ) - (local.set $$cmp461 - (i32.eq - (local.get $$59) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$cmp461) - ) - (block - (local.set $$60 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp464 - (i32.lt_u - (local.get $$59) - (local.get $$60) - ) - ) - (if - (local.get $$cmp464) - (call $_abort) - (block - (local.set $$arrayidx470 - (i32.add - (local.get $$R332$3) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx470) - (local.get $$59) - ) - (local.set $$parent471 - (i32.add - (local.get $$59) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent471) - (local.get $$R332$3) - ) - (br $do-once4) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (local.set $$or480 - (i32.or - (local.get $$add267) - (i32.const 1) - ) - ) - (local.set $$head481 - (i32.add - (local.get $$p$1) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head481) - (local.get $$or480) - ) - (local.set $$add$ptr482 - (i32.add - (local.get $$p$1) - (local.get $$add267) - ) - ) - (i32.store - (local.get $$add$ptr482) - (local.get $$add267) - ) - (local.set $$61 - (i32.load - (i32.const 196) - ) - ) - (local.set $$cmp484 - (i32.eq - (local.get $$p$1) - (local.get $$61) - ) - ) - (if - (local.get $$cmp484) - (block - (i32.store - (i32.const 184) - (local.get $$add267) - ) - (return) - ) - (local.set $$psize$2 - (local.get $$add267) - ) - ) - ) - (block - (local.set $$and495 - (i32.and - (local.get $$28) - (i32.const -2) - ) - ) - (i32.store - (local.get $$head231) - (local.get $$and495) - ) - (local.set $$or496 - (i32.or - (local.get $$psize$1) - (i32.const 1) - ) - ) - (local.set $$head497 - (i32.add - (local.get $$p$1) - (i32.const 4) - ) - ) - (i32.store - (local.get $$head497) - (local.get $$or496) - ) - (local.set $$add$ptr498 - (i32.add - (local.get $$p$1) - (local.get $$psize$1) - ) - ) - (i32.store - (local.get $$add$ptr498) - (local.get $$psize$1) - ) - (local.set $$psize$2 - (local.get $$psize$1) - ) - ) - ) - (local.set $$shr501 - (i32.shr_u - (local.get $$psize$2) - (i32.const 3) - ) - ) - (local.set $$cmp502 - (i32.lt_u - (local.get $$psize$2) - (i32.const 256) - ) - ) - (if - (local.get $$cmp502) - (block - (local.set $$shl508 - (i32.shl - (local.get $$shr501) - (i32.const 1) - ) - ) - (local.set $$arrayidx509 - (i32.add - (i32.const 216) - (i32.shl - (local.get $$shl508) - (i32.const 2) - ) - ) - ) - (local.set $$62 - (i32.load - (i32.const 176) - ) - ) - (local.set $$shl511 - (i32.shl - (i32.const 1) - (local.get $$shr501) - ) - ) - (local.set $$and512 - (i32.and - (local.get $$62) - (local.get $$shl511) - ) - ) - (local.set $$tobool513 - (i32.eq - (local.get $$and512) - (i32.const 0) - ) - ) - (if - (local.get $$tobool513) - (block - (local.set $$or516 - (i32.or - (local.get $$62) - (local.get $$shl511) - ) - ) - (i32.store - (i32.const 176) - (local.get $$or516) - ) - (local.set $$$pre - (i32.add - (local.get $$arrayidx509) - (i32.const 8) - ) - ) - (local.set $$$pre$phiZ2D - (local.get $$$pre) - ) - (local.set $$F510$0 - (local.get $$arrayidx509) - ) - ) - (block - (local.set $$63 - (i32.add - (local.get $$arrayidx509) - (i32.const 8) - ) - ) - (local.set $$64 - (i32.load - (local.get $$63) - ) - ) - (local.set $$65 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp519 - (i32.lt_u - (local.get $$64) - (local.get $$65) - ) - ) - (if - (local.get $$cmp519) - (call $_abort) - (block - (local.set $$$pre$phiZ2D - (local.get $$63) - ) - (local.set $$F510$0 - (local.get $$64) - ) - ) - ) - ) - ) - (i32.store - (local.get $$$pre$phiZ2D) - (local.get $$p$1) - ) - (local.set $$bk529 - (i32.add - (local.get $$F510$0) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk529) - (local.get $$p$1) - ) - (local.set $$fd530 - (i32.add - (local.get $$p$1) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd530) - (local.get $$F510$0) - ) - (local.set $$bk531 - (i32.add - (local.get $$p$1) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk531) - (local.get $$arrayidx509) - ) - (return) - ) - ) - (local.set $$shr535 - (i32.shr_u - (local.get $$psize$2) - (i32.const 8) - ) - ) - (local.set $$cmp536 - (i32.eq - (local.get $$shr535) - (i32.const 0) - ) - ) - (if - (local.get $$cmp536) - (local.set $$I534$0 - (i32.const 0) - ) - (block - (local.set $$cmp540 - (i32.gt_u - (local.get $$psize$2) - (i32.const 16777215) - ) - ) - (if - (local.get $$cmp540) - (local.set $$I534$0 - (i32.const 31) - ) - (block - (local.set $$sub - (i32.add - (local.get $$shr535) - (i32.const 1048320) - ) - ) - (local.set $$shr544 - (i32.shr_u - (local.get $$sub) - (i32.const 16) - ) - ) - (local.set $$and545 - (i32.and - (local.get $$shr544) - (i32.const 8) - ) - ) - (local.set $$shl546 - (i32.shl - (local.get $$shr535) - (local.get $$and545) - ) - ) - (local.set $$sub547 - (i32.add - (local.get $$shl546) - (i32.const 520192) - ) - ) - (local.set $$shr548 - (i32.shr_u - (local.get $$sub547) - (i32.const 16) - ) - ) - (local.set $$and549 - (i32.and - (local.get $$shr548) - (i32.const 4) - ) - ) - (local.set $$add550 - (i32.or - (local.get $$and549) - (local.get $$and545) - ) - ) - (local.set $$shl551 - (i32.shl - (local.get $$shl546) - (local.get $$and549) - ) - ) - (local.set $$sub552 - (i32.add - (local.get $$shl551) - (i32.const 245760) - ) - ) - (local.set $$shr553 - (i32.shr_u - (local.get $$sub552) - (i32.const 16) - ) - ) - (local.set $$and554 - (i32.and - (local.get $$shr553) - (i32.const 2) - ) - ) - (local.set $$add555 - (i32.or - (local.get $$add550) - (local.get $$and554) - ) - ) - (local.set $$sub556 - (i32.sub - (i32.const 14) - (local.get $$add555) - ) - ) - (local.set $$shl557 - (i32.shl - (local.get $$shl551) - (local.get $$and554) - ) - ) - (local.set $$shr558 - (i32.shr_u - (local.get $$shl557) - (i32.const 15) - ) - ) - (local.set $$add559 - (i32.add - (local.get $$sub556) - (local.get $$shr558) - ) - ) - (local.set $$shl560 - (i32.shl - (local.get $$add559) - (i32.const 1) - ) - ) - (local.set $$add561 - (i32.add - (local.get $$add559) - (i32.const 7) - ) - ) - (local.set $$shr562 - (i32.shr_u - (local.get $$psize$2) - (local.get $$add561) - ) - ) - (local.set $$and563 - (i32.and - (local.get $$shr562) - (i32.const 1) - ) - ) - (local.set $$add564 - (i32.or - (local.get $$and563) - (local.get $$shl560) - ) - ) - (local.set $$I534$0 - (local.get $$add564) - ) - ) - ) - ) - ) - (local.set $$arrayidx567 - (i32.add - (i32.const 480) - (i32.shl - (local.get $$I534$0) - (i32.const 2) - ) - ) - ) - (local.set $$index568 - (i32.add - (local.get $$p$1) - (i32.const 28) - ) - ) - (i32.store - (local.get $$index568) - (local.get $$I534$0) - ) - (local.set $$child569 - (i32.add - (local.get $$p$1) - (i32.const 16) - ) - ) - (local.set $$arrayidx570 - (i32.add - (local.get $$p$1) - (i32.const 20) - ) - ) - (i32.store - (local.get $$arrayidx570) - (i32.const 0) - ) - (i32.store - (local.get $$child569) - (i32.const 0) - ) - (local.set $$66 - (i32.load - (i32.const 180) - ) - ) - (local.set $$shl573 - (i32.shl - (i32.const 1) - (local.get $$I534$0) - ) - ) - (local.set $$and574 - (i32.and - (local.get $$66) - (local.get $$shl573) - ) - ) - (local.set $$tobool575 - (i32.eq - (local.get $$and574) - (i32.const 0) - ) - ) - (block $do-once12 - (if - (local.get $$tobool575) - (block - (local.set $$or578 - (i32.or - (local.get $$66) - (local.get $$shl573) - ) - ) - (i32.store - (i32.const 180) - (local.get $$or578) - ) - (i32.store - (local.get $$arrayidx567) - (local.get $$p$1) - ) - (local.set $$parent579 - (i32.add - (local.get $$p$1) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent579) - (local.get $$arrayidx567) - ) - (local.set $$bk580 - (i32.add - (local.get $$p$1) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk580) - (local.get $$p$1) - ) - (local.set $$fd581 - (i32.add - (local.get $$p$1) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd581) - (local.get $$p$1) - ) - ) - (block - (local.set $$67 - (i32.load - (local.get $$arrayidx567) - ) - ) - (local.set $$cmp584 - (i32.eq - (local.get $$I534$0) - (i32.const 31) - ) - ) - (local.set $$shr586 - (i32.shr_u - (local.get $$I534$0) - (i32.const 1) - ) - ) - (local.set $$sub589 - (i32.sub - (i32.const 25) - (local.get $$shr586) - ) - ) - (local.set $$cond - (if (result i32) - (local.get $$cmp584) - (i32.const 0) - (local.get $$sub589) - ) - ) - (local.set $$shl590 - (i32.shl - (local.get $$psize$2) - (local.get $$cond) - ) - ) - (local.set $$K583$0 - (local.get $$shl590) - ) - (local.set $$T$0 - (local.get $$67) - ) - (loop $while-in15 - (block $while-out14 - (local.set $$head591 - (i32.add - (local.get $$T$0) - (i32.const 4) - ) - ) - (local.set $$68 - (i32.load - (local.get $$head591) - ) - ) - (local.set $$and592 - (i32.and - (local.get $$68) - (i32.const -8) - ) - ) - (local.set $$cmp593 - (i32.eq - (local.get $$and592) - (local.get $$psize$2) - ) - ) - (if - (local.get $$cmp593) - (block - (local.set $$T$0$lcssa - (local.get $$T$0) - ) - (local.set $label - (i32.const 130) - ) - (br $while-out14) - ) - ) - (local.set $$shr596 - (i32.shr_u - (local.get $$K583$0) - (i32.const 31) - ) - ) - (local.set $$arrayidx599 - (i32.add - (i32.add - (local.get $$T$0) - (i32.const 16) - ) - (i32.shl - (local.get $$shr596) - (i32.const 2) - ) - ) - ) - (local.set $$shl600 - (i32.shl - (local.get $$K583$0) - (i32.const 1) - ) - ) - (local.set $$69 - (i32.load - (local.get $$arrayidx599) - ) - ) - (local.set $$cmp601 - (i32.eq - (local.get $$69) - (i32.const 0) - ) - ) - (if - (local.get $$cmp601) - (block - (local.set $$T$0$lcssa319 - (local.get $$T$0) - ) - (local.set $$arrayidx599$lcssa - (local.get $$arrayidx599) - ) - (local.set $label - (i32.const 127) - ) - (br $while-out14) - ) - (block - (local.set $$K583$0 - (local.get $$shl600) - ) - (local.set $$T$0 - (local.get $$69) - ) - ) - ) - (br $while-in15) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 127) - ) - (block - (local.set $$70 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp605 - (i32.lt_u - (local.get $$arrayidx599$lcssa) - (local.get $$70) - ) - ) - (if - (local.get $$cmp605) - (call $_abort) - (block - (i32.store - (local.get $$arrayidx599$lcssa) - (local.get $$p$1) - ) - (local.set $$parent610 - (i32.add - (local.get $$p$1) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent610) - (local.get $$T$0$lcssa319) - ) - (local.set $$bk611 - (i32.add - (local.get $$p$1) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk611) - (local.get $$p$1) - ) - (local.set $$fd612 - (i32.add - (local.get $$p$1) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd612) - (local.get $$p$1) - ) - (br $do-once12) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 130) - ) - (block - (local.set $$fd620 - (i32.add - (local.get $$T$0$lcssa) - (i32.const 8) - ) - ) - (local.set $$71 - (i32.load - (local.get $$fd620) - ) - ) - (local.set $$72 - (i32.load - (i32.const 192) - ) - ) - (local.set $$cmp624 - (i32.ge_u - (local.get $$71) - (local.get $$72) - ) - ) - (local.set $$not$cmp621 - (i32.ge_u - (local.get $$T$0$lcssa) - (local.get $$72) - ) - ) - (local.set $$73 - (i32.and - (local.get $$cmp624) - (local.get $$not$cmp621) - ) - ) - (if - (local.get $$73) - (block - (local.set $$bk631 - (i32.add - (local.get $$71) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk631) - (local.get $$p$1) - ) - (i32.store - (local.get $$fd620) - (local.get $$p$1) - ) - (local.set $$fd633 - (i32.add - (local.get $$p$1) - (i32.const 8) - ) - ) - (i32.store - (local.get $$fd633) - (local.get $$71) - ) - (local.set $$bk634 - (i32.add - (local.get $$p$1) - (i32.const 12) - ) - ) - (i32.store - (local.get $$bk634) - (local.get $$T$0$lcssa) - ) - (local.set $$parent635 - (i32.add - (local.get $$p$1) - (i32.const 24) - ) - ) - (i32.store - (local.get $$parent635) - (i32.const 0) - ) - (br $do-once12) - ) - (call $_abort) - ) - ) - ) - ) - ) - ) - ) - (local.set $$74 - (i32.load - (i32.const 208) - ) - ) - (local.set $$dec - (i32.add - (local.get $$74) - (i32.const -1) - ) - ) - (i32.store - (i32.const 208) - (local.get $$dec) - ) - (local.set $$cmp640 - (i32.eq - (local.get $$dec) - (i32.const 0) - ) - ) - (if - (local.get $$cmp640) - (local.set $$sp$0$in$i - (i32.const 632) - ) - (return) - ) - (loop $while-in17 - (block $while-out16 - (local.set $$sp$0$i - (i32.load - (local.get $$sp$0$in$i) - ) - ) - (local.set $$cmp$i - (i32.eq - (local.get $$sp$0$i) - (i32.const 0) - ) - ) - (local.set $$next4$i - (i32.add - (local.get $$sp$0$i) - (i32.const 8) - ) - ) - (if - (local.get $$cmp$i) - (br $while-out16) - (local.set $$sp$0$in$i - (local.get $$next4$i) - ) - ) - (br $while-in17) - ) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - (return) - ) - (func $runPostSets (; 60 ;) - (nop) - ) - (func $_i64Subtract (; 61 ;) (param $a i32) (param $b i32) (param $c i32) (param $d i32) (result i32) - (local $l i32) - (local $h i32) - (local.set $l - (i32.sub - (local.get $a) - (local.get $c) - ) - ) - (local.set $h - (i32.sub - (local.get $b) - (local.get $d) - ) - ) - (local.set $h - (i32.sub - (i32.sub - (local.get $b) - (local.get $d) - ) - (i32.gt_u - (local.get $c) - (local.get $a) - ) - ) - ) - (return - (block (result i32) - (block - (global.set $tempRet0 - (local.get $h) - ) - (drop - (global.get $tempRet0) - ) - ) - (local.get $l) - ) - ) - ) - (func $_i64Add (; 62 ;) (param $a i32) (param $b i32) (param $c i32) (param $d i32) (result i32) - (local $l i32) - (local $h i32) - (local.set $l - (i32.add - (local.get $a) - (local.get $c) - ) - ) - (local.set $h - (i32.add - (i32.add - (local.get $b) - (local.get $d) - ) - (i32.lt_u - (local.get $l) - (local.get $a) - ) - ) - ) - (return - (block (result i32) - (block - (global.set $tempRet0 - (local.get $h) - ) - (drop - (global.get $tempRet0) - ) - ) - (local.get $l) - ) - ) - ) - (func $_memset (; 63 ;) (param $ptr i32) (param $value i32) (param $num i32) (result i32) - (local $stop i32) - (local $value4 i32) - (local $stop4 i32) - (local $unaligned i32) - (local.set $stop - (i32.add - (local.get $ptr) - (local.get $num) - ) - ) - (if - (i32.ge_s - (local.get $num) - (i32.const 20) - ) - (block - (local.set $value - (i32.and - (local.get $value) - (i32.const 255) - ) - ) - (local.set $unaligned - (i32.and - (local.get $ptr) - (i32.const 3) - ) - ) - (local.set $value4 - (i32.or - (i32.or - (i32.or - (local.get $value) - (i32.shl - (local.get $value) - (i32.const 8) - ) - ) - (i32.shl - (local.get $value) - (i32.const 16) - ) - ) - (i32.shl - (local.get $value) - (i32.const 24) - ) - ) - ) - (local.set $stop4 - (i32.and - (local.get $stop) - (i32.xor - (i32.const 3) - (i32.const -1) - ) - ) - ) - (if - (local.get $unaligned) - (block - (local.set $unaligned - (i32.sub - (i32.add - (local.get $ptr) - (i32.const 4) - ) - (local.get $unaligned) - ) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.lt_s - (local.get $ptr) - (local.get $unaligned) - ) - ) - (br $while-out) - ) - (block - (i32.store8 - (local.get $ptr) - (local.get $value) - ) - (local.set $ptr - (i32.add - (local.get $ptr) - (i32.const 1) - ) - ) - ) - (br $while-in) - ) - ) - ) - ) - (loop $while-in1 - (block $while-out0 - (if - (i32.eqz - (i32.lt_s - (local.get $ptr) - (local.get $stop4) - ) - ) - (br $while-out0) - ) - (block - (i32.store - (local.get $ptr) - (local.get $value4) - ) - (local.set $ptr - (i32.add - (local.get $ptr) - (i32.const 4) - ) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (loop $while-in3 - (block $while-out2 - (if - (i32.eqz - (i32.lt_s - (local.get $ptr) - (local.get $stop) - ) - ) - (br $while-out2) - ) - (block - (i32.store8 - (local.get $ptr) - (local.get $value) - ) - (local.set $ptr - (i32.add - (local.get $ptr) - (i32.const 1) - ) - ) - ) - (br $while-in3) - ) - ) - (return - (i32.sub - (local.get $ptr) - (local.get $num) - ) - ) - ) - (func $_bitshift64Lshr (; 64 ;) (param $low i32) (param $high i32) (param $bits i32) (result i32) - (local $ander i32) - (if - (i32.lt_s - (local.get $bits) - (i32.const 32) - ) - (block - (local.set $ander - (i32.sub - (i32.shl - (i32.const 1) - (local.get $bits) - ) - (i32.const 1) - ) - ) - (global.set $tempRet0 - (i32.shr_u - (local.get $high) - (local.get $bits) - ) - ) - (return - (i32.or - (i32.shr_u - (local.get $low) - (local.get $bits) - ) - (i32.shl - (i32.and - (local.get $high) - (local.get $ander) - ) - (i32.sub - (i32.const 32) - (local.get $bits) - ) - ) - ) - ) - ) - ) - (global.set $tempRet0 - (i32.const 0) - ) - (return - (i32.shr_u - (local.get $high) - (i32.sub - (local.get $bits) - (i32.const 32) - ) - ) - ) - ) - (func $_bitshift64Shl (; 65 ;) (param $low i32) (param $high i32) (param $bits i32) (result i32) - (local $ander i32) - (if - (i32.lt_s - (local.get $bits) - (i32.const 32) - ) - (block - (local.set $ander - (i32.sub - (i32.shl - (i32.const 1) - (local.get $bits) - ) - (i32.const 1) - ) - ) - (global.set $tempRet0 - (i32.or - (i32.shl - (local.get $high) - (local.get $bits) - ) - (i32.shr_u - (i32.and - (local.get $low) - (i32.shl - (local.get $ander) - (i32.sub - (i32.const 32) - (local.get $bits) - ) - ) - ) - (i32.sub - (i32.const 32) - (local.get $bits) - ) - ) - ) - ) - (return - (i32.shl - (local.get $low) - (local.get $bits) - ) - ) - ) - ) - (global.set $tempRet0 - (i32.shl - (local.get $low) - (i32.sub - (local.get $bits) - (i32.const 32) - ) - ) - ) - (return - (i32.const 0) - ) - ) - (func $_memcpy (; 66 ;) (param $dest i32) (param $src i32) (param $num i32) (result i32) - (local $ret i32) - (if - (i32.ge_s - (local.get $num) - (i32.const 4096) - ) - (return - (call $_emscripten_memcpy_big - (local.get $dest) - (local.get $src) - (local.get $num) - ) - ) - ) - (local.set $ret - (local.get $dest) - ) - (if - (i32.eq - (i32.and - (local.get $dest) - (i32.const 3) - ) - (i32.and - (local.get $src) - (i32.const 3) - ) - ) - (block - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.and - (local.get $dest) - (i32.const 3) - ) - ) - (br $while-out) - ) - (block - (if - (i32.eq - (local.get $num) - (i32.const 0) - ) - (return - (local.get $ret) - ) - ) - (i32.store8 - (local.get $dest) - (i32.load8_s - (local.get $src) - ) - ) - (local.set $dest - (i32.add - (local.get $dest) - (i32.const 1) - ) - ) - (local.set $src - (i32.add - (local.get $src) - (i32.const 1) - ) - ) - (local.set $num - (i32.sub - (local.get $num) - (i32.const 1) - ) - ) - ) - (br $while-in) - ) - ) - (loop $while-in1 - (block $while-out0 - (if - (i32.eqz - (i32.ge_s - (local.get $num) - (i32.const 4) - ) - ) - (br $while-out0) - ) - (block - (i32.store - (local.get $dest) - (i32.load - (local.get $src) - ) - ) - (local.set $dest - (i32.add - (local.get $dest) - (i32.const 4) - ) - ) - (local.set $src - (i32.add - (local.get $src) - (i32.const 4) - ) - ) - (local.set $num - (i32.sub - (local.get $num) - (i32.const 4) - ) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (loop $while-in3 - (block $while-out2 - (if - (i32.eqz - (i32.gt_s - (local.get $num) - (i32.const 0) - ) - ) - (br $while-out2) - ) - (block - (i32.store8 - (local.get $dest) - (i32.load8_s - (local.get $src) - ) - ) - (local.set $dest - (i32.add - (local.get $dest) - (i32.const 1) - ) - ) - (local.set $src - (i32.add - (local.get $src) - (i32.const 1) - ) - ) - (local.set $num - (i32.sub - (local.get $num) - (i32.const 1) - ) - ) - ) - (br $while-in3) - ) - ) - (return - (local.get $ret) - ) - ) - (func $_bitshift64Ashr (; 67 ;) (param $low i32) (param $high i32) (param $bits i32) (result i32) - (local $ander i32) - (if - (i32.lt_s - (local.get $bits) - (i32.const 32) - ) - (block - (local.set $ander - (i32.sub - (i32.shl - (i32.const 1) - (local.get $bits) - ) - (i32.const 1) - ) - ) - (global.set $tempRet0 - (i32.shr_s - (local.get $high) - (local.get $bits) - ) - ) - (return - (i32.or - (i32.shr_u - (local.get $low) - (local.get $bits) - ) - (i32.shl - (i32.and - (local.get $high) - (local.get $ander) - ) - (i32.sub - (i32.const 32) - (local.get $bits) - ) - ) - ) - ) - ) - ) - (global.set $tempRet0 - (if (result i32) - (i32.lt_s - (local.get $high) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - ) - (return - (i32.shr_s - (local.get $high) - (i32.sub - (local.get $bits) - (i32.const 32) - ) - ) - ) - ) - (func $___muldsi3 (; 68 ;) (param $$a i32) (param $$b i32) (result i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$6 i32) - (local $$8 i32) - (local $$11 i32) - (local $$12 i32) - (local.set $$1 - (i32.and - (local.get $$a) - (i32.const 65535) - ) - ) - (local.set $$2 - (i32.and - (local.get $$b) - (i32.const 65535) - ) - ) - (local.set $$3 - (i32.mul - (local.get $$2) - (local.get $$1) - ) - ) - (local.set $$6 - (i32.shr_u - (local.get $$a) - (i32.const 16) - ) - ) - (local.set $$8 - (i32.add - (i32.shr_u - (local.get $$3) - (i32.const 16) - ) - (i32.mul - (local.get $$2) - (local.get $$6) - ) - ) - ) - (local.set $$11 - (i32.shr_u - (local.get $$b) - (i32.const 16) - ) - ) - (local.set $$12 - (i32.mul - (local.get $$11) - (local.get $$1) - ) - ) - (return - (block (result i32) - (block - (global.set $tempRet0 - (i32.add - (i32.add - (i32.shr_u - (local.get $$8) - (i32.const 16) - ) - (i32.mul - (local.get $$11) - (local.get $$6) - ) - ) - (i32.shr_u - (i32.add - (i32.and - (local.get $$8) - (i32.const 65535) - ) - (local.get $$12) - ) - (i32.const 16) - ) - ) - ) - (drop - (global.get $tempRet0) - ) - ) - (i32.or - (i32.const 0) - (i32.or - (i32.shl - (i32.add - (local.get $$8) - (local.get $$12) - ) - (i32.const 16) - ) - (i32.and - (local.get $$3) - (i32.const 65535) - ) - ) - ) - ) - ) - ) - (func $___divdi3 (; 69 ;) (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) - (local $$1$0 i32) - (local $$1$1 i32) - (local $$2$0 i32) - (local $$2$1 i32) - (local $$4$0 i32) - (local $$4$1 i32) - (local $$6$0 i32) - (local $$7$0 i32) - (local $$7$1 i32) - (local $$8$0 i32) - (local $$10$0 i32) - (local.set $$1$0 - (i32.or - (i32.shr_s - (local.get $$a$1) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$1$1 - (i32.or - (i32.shr_s - (if (result i32) - (i32.lt_s - (local.get $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$2$0 - (i32.or - (i32.shr_s - (local.get $$b$1) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$2$1 - (i32.or - (i32.shr_s - (if (result i32) - (i32.lt_s - (local.get $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$4$0 - (call $_i64Subtract - (i32.xor - (local.get $$1$0) - (local.get $$a$0) - ) - (i32.xor - (local.get $$1$1) - (local.get $$a$1) - ) - (local.get $$1$0) - (local.get $$1$1) - ) - ) - (local.set $$4$1 - (global.get $tempRet0) - ) - (local.set $$6$0 - (call $_i64Subtract - (i32.xor - (local.get $$2$0) - (local.get $$b$0) - ) - (i32.xor - (local.get $$2$1) - (local.get $$b$1) - ) - (local.get $$2$0) - (local.get $$2$1) - ) - ) - (local.set $$7$0 - (i32.xor - (local.get $$2$0) - (local.get $$1$0) - ) - ) - (local.set $$7$1 - (i32.xor - (local.get $$2$1) - (local.get $$1$1) - ) - ) - (local.set $$8$0 - (call $___udivmoddi4 - (local.get $$4$0) - (local.get $$4$1) - (local.get $$6$0) - (global.get $tempRet0) - (i32.const 0) - ) - ) - (local.set $$10$0 - (call $_i64Subtract - (i32.xor - (local.get $$8$0) - (local.get $$7$0) - ) - (i32.xor - (global.get $tempRet0) - (local.get $$7$1) - ) - (local.get $$7$0) - (local.get $$7$1) - ) - ) - (return - (local.get $$10$0) - ) - ) - (func $___remdi3 (; 70 ;) (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) - (local $$rem i32) - (local $$1$0 i32) - (local $$1$1 i32) - (local $$2$0 i32) - (local $$2$1 i32) - (local $$4$0 i32) - (local $$4$1 i32) - (local $$6$0 i32) - (local $$10$0 i32) - (local $$10$1 i32) - (local $__stackBase__ i32) - (local.set $__stackBase__ - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (local.set $$rem - (local.get $__stackBase__) - ) - (local.set $$1$0 - (i32.or - (i32.shr_s - (local.get $$a$1) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$1$1 - (i32.or - (i32.shr_s - (if (result i32) - (i32.lt_s - (local.get $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$2$0 - (i32.or - (i32.shr_s - (local.get $$b$1) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$2$1 - (i32.or - (i32.shr_s - (if (result i32) - (i32.lt_s - (local.get $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.shl - (if (result i32) - (i32.lt_s - (local.get $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (local.set $$4$0 - (call $_i64Subtract - (i32.xor - (local.get $$1$0) - (local.get $$a$0) - ) - (i32.xor - (local.get $$1$1) - (local.get $$a$1) - ) - (local.get $$1$0) - (local.get $$1$1) - ) - ) - (local.set $$4$1 - (global.get $tempRet0) - ) - (local.set $$6$0 - (call $_i64Subtract - (i32.xor - (local.get $$2$0) - (local.get $$b$0) - ) - (i32.xor - (local.get $$2$1) - (local.get $$b$1) - ) - (local.get $$2$0) - (local.get $$2$1) - ) - ) - (drop - (call $___udivmoddi4 - (local.get $$4$0) - (local.get $$4$1) - (local.get $$6$0) - (global.get $tempRet0) - (local.get $$rem) - ) - ) - (local.set $$10$0 - (call $_i64Subtract - (i32.xor - (i32.load - (local.get $$rem) - ) - (local.get $$1$0) - ) - (i32.xor - (i32.load - (i32.add - (local.get $$rem) - (i32.const 4) - ) - ) - (local.get $$1$1) - ) - (local.get $$1$0) - (local.get $$1$1) - ) - ) - (local.set $$10$1 - (global.get $tempRet0) - ) - (global.set $STACKTOP - (local.get $__stackBase__) - ) - (return - (block (result i32) - (block - (global.set $tempRet0 - (local.get $$10$1) - ) - (drop - (global.get $tempRet0) - ) - ) - (local.get $$10$0) - ) - ) - ) - (func $___muldi3 (; 71 ;) (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) - (local $$x_sroa_0_0_extract_trunc i32) - (local $$y_sroa_0_0_extract_trunc i32) - (local $$1$0 i32) - (local $$1$1 i32) - (local $$2 i32) - (local.set $$x_sroa_0_0_extract_trunc - (local.get $$a$0) - ) - (local.set $$y_sroa_0_0_extract_trunc - (local.get $$b$0) - ) - (local.set $$1$0 - (call $___muldsi3 - (local.get $$x_sroa_0_0_extract_trunc) - (local.get $$y_sroa_0_0_extract_trunc) - ) - ) - (local.set $$1$1 - (global.get $tempRet0) - ) - (local.set $$2 - (i32.mul - (local.get $$a$1) - (local.get $$y_sroa_0_0_extract_trunc) - ) - ) - (return - (block (result i32) - (block - (global.set $tempRet0 - (i32.or - (i32.add - (i32.add - (i32.mul - (local.get $$b$1) - (local.get $$x_sroa_0_0_extract_trunc) - ) - (local.get $$2) - ) - (local.get $$1$1) - ) - (i32.and - (local.get $$1$1) - (i32.const 0) - ) - ) - ) - (drop - (global.get $tempRet0) - ) - ) - (i32.or - (i32.const 0) - (i32.and - (local.get $$1$0) - (i32.const -1) - ) - ) - ) - ) - ) - (func $___udivdi3 (; 72 ;) (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) - (local $$1$0 i32) - (local.set $$1$0 - (call $___udivmoddi4 - (local.get $$a$0) - (local.get $$a$1) - (local.get $$b$0) - (local.get $$b$1) - (i32.const 0) - ) - ) - (return - (local.get $$1$0) - ) - ) - (func $___uremdi3 (; 73 ;) (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) - (local $$rem i32) - (local $__stackBase__ i32) - (local.set $__stackBase__ - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (local.set $$rem - (local.get $__stackBase__) - ) - (drop - (call $___udivmoddi4 - (local.get $$a$0) - (local.get $$a$1) - (local.get $$b$0) - (local.get $$b$1) - (local.get $$rem) - ) - ) - (global.set $STACKTOP - (local.get $__stackBase__) - ) - (return - (block (result i32) - (block - (global.set $tempRet0 - (i32.load - (i32.add - (local.get $$rem) - (i32.const 4) - ) - ) - ) - (drop - (global.get $tempRet0) - ) - ) - (i32.load - (local.get $$rem) - ) - ) - ) - ) - (func $___udivmoddi4 (; 74 ;) (param $xl i32) (param $xh i32) (param $yl i32) (param $yh i32) (param $r i32) (result i32) - (local $x64 i64) - (local $y64 i64) - (local.set $x64 - (i64.or - (i64.extend_i32_u - (local.get $xl) - ) - (i64.shl - (i64.extend_i32_u - (local.get $xh) - ) - (i64.const 32) - ) - ) - ) - (local.set $y64 - (i64.or - (i64.extend_i32_u - (local.get $yl) - ) - (i64.shl - (i64.extend_i32_u - (local.get $yh) - ) - (i64.const 32) - ) - ) - ) - (if - (local.get $r) - (i64.store - (local.get $r) - (i64.rem_u - (local.get $x64) - (local.get $y64) - ) - ) - ) - (local.set $x64 - (i64.div_u - (local.get $x64) - (local.get $y64) - ) - ) - (global.set $tempRet0 - (i32.wrap_i64 - (i64.shr_u - (local.get $x64) - (i64.const 32) - ) - ) - ) - (i32.wrap_i64 - (local.get $x64) - ) - ) - (func $dynCall_ii (; 75 ;) (param $index i32) (param $a1 i32) (result i32) - (return - (call_indirect (type $i32_=>_i32) - (local.get $a1) - (i32.add - (i32.and - (local.get $index) - (i32.const 1) - ) - (i32.const 0) - ) - ) - ) - ) - (func $dynCall_iiii (; 76 ;) (param $index i32) (param $a1 i32) (param $a2 i32) (param $a3 i32) (result i32) - (return - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $a1) - (local.get $a2) - (local.get $a3) - (i32.add - (i32.and - (local.get $index) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - (func $dynCall_vi (; 77 ;) (param $index i32) (param $a1 i32) - (call_indirect (type $i32_=>_none) - (local.get $a1) - (i32.add - (i32.and - (local.get $index) - (i32.const 7) - ) - (i32.const 10) - ) - ) - ) - (func $b0 (; 78 ;) (param $p0 i32) (result i32) - (call $nullFunc_ii - (i32.const 0) - ) - (return - (i32.const 0) - ) - ) - (func $b1 (; 79 ;) (param $p0 i32) (param $p1 i32) (param $p2 i32) (result i32) - (call $nullFunc_iiii - (i32.const 1) - ) - (return - (i32.const 0) - ) - ) - (func $b2 (; 80 ;) (param $p0 i32) - (call $nullFunc_vi - (i32.const 2) - ) - ) -) diff -Nru binaryen-91/test/emcc_O2_hello_world.asm.js binaryen-99/test/emcc_O2_hello_world.asm.js --- binaryen-91/test/emcc_O2_hello_world.asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/emcc_O2_hello_world.asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,2293 +0,0 @@ -Module["asm"] = (function(global,env,buffer) { - - 'use asm'; - - - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - - - var STACKTOP=env.STACKTOP|0; - var STACK_MAX=env.STACK_MAX|0; - var tempDoublePtr=env.tempDoublePtr|0; - var ABORT=env.ABORT|0; - - var __THREW__ = 0; - var threwValue = 0; - var setjmpId = 0; - var undef = 0; - var nan = global.NaN, inf = global.Infinity; - var tempInt = 0, tempBigInt = 0, tempBigIntP = 0, tempBigIntS = 0, tempBigIntR = 0.0, tempBigIntI = 0, tempBigIntD = 0, tempValue = 0, tempDouble = 0.0; - - var tempRet0 = 0; - var tempRet1 = 0; - var tempRet2 = 0; - var tempRet3 = 0; - var tempRet4 = 0; - var tempRet5 = 0; - var tempRet6 = 0; - var tempRet7 = 0; - var tempRet8 = 0; - var tempRet9 = 0; - var Math_floor=global.Math.floor; - var Math_abs=global.Math.abs; - var Math_sqrt=global.Math.sqrt; - var Math_pow=global.Math.pow; - var Math_cos=global.Math.cos; - var Math_sin=global.Math.sin; - var Math_tan=global.Math.tan; - var Math_acos=global.Math.acos; - var Math_asin=global.Math.asin; - var Math_atan=global.Math.atan; - var Math_atan2=global.Math.atan2; - var Math_exp=global.Math.exp; - var Math_log=global.Math.log; - var Math_ceil=global.Math.ceil; - var Math_imul=global.Math.imul; - var Math_min=global.Math.min; - var Math_clz32=global.Math.clz32; - var abort=env.abort; - var assert=env.assert; - var invoke_ii=env.invoke_ii; - var invoke_iiii=env.invoke_iiii; - var invoke_vi=env.invoke_vi; - var _pthread_cleanup_pop=env._pthread_cleanup_pop; - var _pthread_self=env._pthread_self; - var _sysconf=env._sysconf; - var ___lock=env.___lock; - var ___syscall6=env.___syscall6; - var ___setErrNo=env.___setErrNo; - var _abort=env._abort; - var _sbrk=env._sbrk; - var _time=env._time; - var _pthread_cleanup_push=env._pthread_cleanup_push; - var _emscripten_memcpy_big=env._emscripten_memcpy_big; - var ___syscall54=env.___syscall54; - var ___unlock=env.___unlock; - var ___syscall140=env.___syscall140; - var _emscripten_set_main_loop_timing=env._emscripten_set_main_loop_timing; - var _emscripten_set_main_loop=env._emscripten_set_main_loop; - var ___syscall146=env.___syscall146; - var tempFloat = 0.0; - -// EMSCRIPTEN_START_FUNCS - -function _malloc(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, i36 = 0, i37 = 0, i38 = 0, i39 = 0, i40 = 0, i41 = 0, i42 = 0, i43 = 0, i44 = 0, i45 = 0, i46 = 0, i47 = 0, i48 = 0, i49 = 0, i50 = 0, i51 = 0, i52 = 0, i53 = 0, i54 = 0, i55 = 0, i56 = 0, i57 = 0, i58 = 0, i59 = 0, i60 = 0, i61 = 0, i62 = 0, i63 = 0, i64 = 0, i65 = 0, i66 = 0, i67 = 0, i68 = 0, i69 = 0, i70 = 0, i71 = 0, i72 = 0, i73 = 0, i74 = 0, i75 = 0, i76 = 0, i77 = 0, i78 = 0, i79 = 0, i80 = 0, i81 = 0, i82 = 0, i83 = 0, i84 = 0, i85 = 0, i86 = 0, i87 = 0, i88 = 0, i89 = 0, i90 = 0, i91 = 0, i92 = 0; - do if (i1 >>> 0 < 245) { - i2 = i1 >>> 0 < 11 ? 16 : i1 + 11 & -8; - i3 = i2 >>> 3; - i4 = HEAP32[44] | 0; - i5 = i4 >>> i3; - if (i5 & 3) { - i6 = (i5 & 1 ^ 1) + i3 | 0; - i7 = 216 + (i6 << 1 << 2) | 0; - i8 = i7 + 8 | 0; - i9 = HEAP32[i8 >> 2] | 0; - i10 = i9 + 8 | 0; - i11 = HEAP32[i10 >> 2] | 0; - do if ((i7 | 0) != (i11 | 0)) { - if (i11 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); - i12 = i11 + 12 | 0; - if ((HEAP32[i12 >> 2] | 0) == (i9 | 0)) { - HEAP32[i12 >> 2] = i7; - HEAP32[i8 >> 2] = i11; - break; - } else _abort(); - } else HEAP32[44] = i4 & ~(1 << i6); while (0); - i11 = i6 << 3; - HEAP32[i9 + 4 >> 2] = i11 | 3; - i8 = i9 + i11 + 4 | 0; - HEAP32[i8 >> 2] = HEAP32[i8 >> 2] | 1; - i13 = i10; - return i13 | 0; - } - i8 = HEAP32[46] | 0; - if (i2 >>> 0 > i8 >>> 0) { - if (i5) { - i11 = 2 << i3; - i7 = i5 << i3 & (i11 | 0 - i11); - i11 = (i7 & 0 - i7) + -1 | 0; - i7 = i11 >>> 12 & 16; - i12 = i11 >>> i7; - i11 = i12 >>> 5 & 8; - i14 = i12 >>> i11; - i12 = i14 >>> 2 & 4; - i15 = i14 >>> i12; - i14 = i15 >>> 1 & 2; - i16 = i15 >>> i14; - i15 = i16 >>> 1 & 1; - i17 = (i11 | i7 | i12 | i14 | i15) + (i16 >>> i15) | 0; - i15 = 216 + (i17 << 1 << 2) | 0; - i16 = i15 + 8 | 0; - i14 = HEAP32[i16 >> 2] | 0; - i12 = i14 + 8 | 0; - i7 = HEAP32[i12 >> 2] | 0; - do if ((i15 | 0) != (i7 | 0)) { - if (i7 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); - i11 = i7 + 12 | 0; - if ((HEAP32[i11 >> 2] | 0) == (i14 | 0)) { - HEAP32[i11 >> 2] = i15; - HEAP32[i16 >> 2] = i7; - i18 = HEAP32[46] | 0; - break; - } else _abort(); - } else { - HEAP32[44] = i4 & ~(1 << i17); - i18 = i8; - } while (0); - i8 = (i17 << 3) - i2 | 0; - HEAP32[i14 + 4 >> 2] = i2 | 3; - i4 = i14 + i2 | 0; - HEAP32[i4 + 4 >> 2] = i8 | 1; - HEAP32[i4 + i8 >> 2] = i8; - if (i18) { - i7 = HEAP32[49] | 0; - i16 = i18 >>> 3; - i15 = 216 + (i16 << 1 << 2) | 0; - i3 = HEAP32[44] | 0; - i5 = 1 << i16; - if (i3 & i5) { - i16 = i15 + 8 | 0; - i10 = HEAP32[i16 >> 2] | 0; - if (i10 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); else { - i19 = i16; - i20 = i10; - } - } else { - HEAP32[44] = i3 | i5; - i19 = i15 + 8 | 0; - i20 = i15; - } - HEAP32[i19 >> 2] = i7; - HEAP32[i20 + 12 >> 2] = i7; - HEAP32[i7 + 8 >> 2] = i20; - HEAP32[i7 + 12 >> 2] = i15; - } - HEAP32[46] = i8; - HEAP32[49] = i4; - i13 = i12; - return i13 | 0; - } - i4 = HEAP32[45] | 0; - if (i4) { - i8 = (i4 & 0 - i4) + -1 | 0; - i4 = i8 >>> 12 & 16; - i15 = i8 >>> i4; - i8 = i15 >>> 5 & 8; - i7 = i15 >>> i8; - i15 = i7 >>> 2 & 4; - i5 = i7 >>> i15; - i7 = i5 >>> 1 & 2; - i3 = i5 >>> i7; - i5 = i3 >>> 1 & 1; - i10 = HEAP32[480 + ((i8 | i4 | i15 | i7 | i5) + (i3 >>> i5) << 2) >> 2] | 0; - i5 = (HEAP32[i10 + 4 >> 2] & -8) - i2 | 0; - i3 = i10; - i7 = i10; - while (1) { - i10 = HEAP32[i3 + 16 >> 2] | 0; - if (!i10) { - i15 = HEAP32[i3 + 20 >> 2] | 0; - if (!i15) { - i21 = i5; - i22 = i7; - break; - } else i23 = i15; - } else i23 = i10; - i10 = (HEAP32[i23 + 4 >> 2] & -8) - i2 | 0; - i15 = i10 >>> 0 < i5 >>> 0; - i5 = i15 ? i10 : i5; - i3 = i23; - i7 = i15 ? i23 : i7; - } - i7 = HEAP32[48] | 0; - if (i22 >>> 0 < i7 >>> 0) _abort(); - i3 = i22 + i2 | 0; - if (i22 >>> 0 >= i3 >>> 0) _abort(); - i5 = HEAP32[i22 + 24 >> 2] | 0; - i12 = HEAP32[i22 + 12 >> 2] | 0; - do if ((i12 | 0) == (i22 | 0)) { - i14 = i22 + 20 | 0; - i17 = HEAP32[i14 >> 2] | 0; - if (!i17) { - i15 = i22 + 16 | 0; - i10 = HEAP32[i15 >> 2] | 0; - if (!i10) { - i24 = 0; - break; - } else { - i25 = i10; - i26 = i15; - } - } else { - i25 = i17; - i26 = i14; - } - while (1) { - i14 = i25 + 20 | 0; - i17 = HEAP32[i14 >> 2] | 0; - if (i17) { - i25 = i17; - i26 = i14; - continue; - } - i14 = i25 + 16 | 0; - i17 = HEAP32[i14 >> 2] | 0; - if (!i17) { - i27 = i25; - i28 = i26; - break; - } else { - i25 = i17; - i26 = i14; - } - } - if (i28 >>> 0 < i7 >>> 0) _abort(); else { - HEAP32[i28 >> 2] = 0; - i24 = i27; - break; - } - } else { - i14 = HEAP32[i22 + 8 >> 2] | 0; - if (i14 >>> 0 < i7 >>> 0) _abort(); - i17 = i14 + 12 | 0; - if ((HEAP32[i17 >> 2] | 0) != (i22 | 0)) _abort(); - i15 = i12 + 8 | 0; - if ((HEAP32[i15 >> 2] | 0) == (i22 | 0)) { - HEAP32[i17 >> 2] = i12; - HEAP32[i15 >> 2] = i14; - i24 = i12; - break; - } else _abort(); - } while (0); - do if (i5) { - i12 = HEAP32[i22 + 28 >> 2] | 0; - i7 = 480 + (i12 << 2) | 0; - if ((i22 | 0) == (HEAP32[i7 >> 2] | 0)) { - HEAP32[i7 >> 2] = i24; - if (!i24) { - HEAP32[45] = HEAP32[45] & ~(1 << i12); - break; - } - } else { - if (i5 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); - i12 = i5 + 16 | 0; - if ((HEAP32[i12 >> 2] | 0) == (i22 | 0)) HEAP32[i12 >> 2] = i24; else HEAP32[i5 + 20 >> 2] = i24; - if (!i24) break; - } - i12 = HEAP32[48] | 0; - if (i24 >>> 0 < i12 >>> 0) _abort(); - HEAP32[i24 + 24 >> 2] = i5; - i7 = HEAP32[i22 + 16 >> 2] | 0; - do if (i7) if (i7 >>> 0 < i12 >>> 0) _abort(); else { - HEAP32[i24 + 16 >> 2] = i7; - HEAP32[i7 + 24 >> 2] = i24; - break; - } while (0); - i7 = HEAP32[i22 + 20 >> 2] | 0; - if (i7) if (i7 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); else { - HEAP32[i24 + 20 >> 2] = i7; - HEAP32[i7 + 24 >> 2] = i24; - break; - } - } while (0); - if (i21 >>> 0 < 16) { - i5 = i21 + i2 | 0; - HEAP32[i22 + 4 >> 2] = i5 | 3; - i7 = i22 + i5 + 4 | 0; - HEAP32[i7 >> 2] = HEAP32[i7 >> 2] | 1; - } else { - HEAP32[i22 + 4 >> 2] = i2 | 3; - HEAP32[i3 + 4 >> 2] = i21 | 1; - HEAP32[i3 + i21 >> 2] = i21; - i7 = HEAP32[46] | 0; - if (i7) { - i5 = HEAP32[49] | 0; - i12 = i7 >>> 3; - i7 = 216 + (i12 << 1 << 2) | 0; - i14 = HEAP32[44] | 0; - i15 = 1 << i12; - if (i14 & i15) { - i12 = i7 + 8 | 0; - i17 = HEAP32[i12 >> 2] | 0; - if (i17 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); else { - i29 = i12; - i30 = i17; - } - } else { - HEAP32[44] = i14 | i15; - i29 = i7 + 8 | 0; - i30 = i7; - } - HEAP32[i29 >> 2] = i5; - HEAP32[i30 + 12 >> 2] = i5; - HEAP32[i5 + 8 >> 2] = i30; - HEAP32[i5 + 12 >> 2] = i7; - } - HEAP32[46] = i21; - HEAP32[49] = i3; - } - i13 = i22 + 8 | 0; - return i13 | 0; - } else i31 = i2; - } else i31 = i2; - } else if (i1 >>> 0 <= 4294967231) { - i7 = i1 + 11 | 0; - i5 = i7 & -8; - i15 = HEAP32[45] | 0; - if (i15) { - i14 = 0 - i5 | 0; - i17 = i7 >>> 8; - if (i17) if (i5 >>> 0 > 16777215) i32 = 31; else { - i7 = (i17 + 1048320 | 0) >>> 16 & 8; - i12 = i17 << i7; - i17 = (i12 + 520192 | 0) >>> 16 & 4; - i10 = i12 << i17; - i12 = (i10 + 245760 | 0) >>> 16 & 2; - i4 = 14 - (i17 | i7 | i12) + (i10 << i12 >>> 15) | 0; - i32 = i5 >>> (i4 + 7 | 0) & 1 | i4 << 1; - } else i32 = 0; - i4 = HEAP32[480 + (i32 << 2) >> 2] | 0; - L123 : do if (!i4) { - i33 = i14; - i34 = 0; - i35 = 0; - i36 = 86; - } else { - i12 = i14; - i10 = 0; - i7 = i5 << ((i32 | 0) == 31 ? 0 : 25 - (i32 >>> 1) | 0); - i17 = i4; - i8 = 0; - while (1) { - i16 = HEAP32[i17 + 4 >> 2] & -8; - i9 = i16 - i5 | 0; - if (i9 >>> 0 < i12 >>> 0) if ((i16 | 0) == (i5 | 0)) { - i37 = i9; - i38 = i17; - i39 = i17; - i36 = 90; - break L123; - } else { - i40 = i9; - i41 = i17; - } else { - i40 = i12; - i41 = i8; - } - i9 = HEAP32[i17 + 20 >> 2] | 0; - i17 = HEAP32[i17 + 16 + (i7 >>> 31 << 2) >> 2] | 0; - i16 = (i9 | 0) == 0 | (i9 | 0) == (i17 | 0) ? i10 : i9; - i9 = (i17 | 0) == 0; - if (i9) { - i33 = i40; - i34 = i16; - i35 = i41; - i36 = 86; - break; - } else { - i12 = i40; - i10 = i16; - i7 = i7 << (i9 & 1 ^ 1); - i8 = i41; - } - } - } while (0); - if ((i36 | 0) == 86) { - if ((i34 | 0) == 0 & (i35 | 0) == 0) { - i4 = 2 << i32; - i14 = i15 & (i4 | 0 - i4); - if (!i14) { - i31 = i5; - break; - } - i4 = (i14 & 0 - i14) + -1 | 0; - i14 = i4 >>> 12 & 16; - i2 = i4 >>> i14; - i4 = i2 >>> 5 & 8; - i3 = i2 >>> i4; - i2 = i3 >>> 2 & 4; - i8 = i3 >>> i2; - i3 = i8 >>> 1 & 2; - i7 = i8 >>> i3; - i8 = i7 >>> 1 & 1; - i42 = HEAP32[480 + ((i4 | i14 | i2 | i3 | i8) + (i7 >>> i8) << 2) >> 2] | 0; - } else i42 = i34; - if (!i42) { - i43 = i33; - i44 = i35; - } else { - i37 = i33; - i38 = i42; - i39 = i35; - i36 = 90; - } - } - if ((i36 | 0) == 90) while (1) { - i36 = 0; - i8 = (HEAP32[i38 + 4 >> 2] & -8) - i5 | 0; - i7 = i8 >>> 0 < i37 >>> 0; - i3 = i7 ? i8 : i37; - i8 = i7 ? i38 : i39; - i7 = HEAP32[i38 + 16 >> 2] | 0; - if (i7) { - i37 = i3; - i38 = i7; - i39 = i8; - i36 = 90; - continue; - } - i38 = HEAP32[i38 + 20 >> 2] | 0; - if (!i38) { - i43 = i3; - i44 = i8; - break; - } else { - i37 = i3; - i39 = i8; - i36 = 90; - } - } - if ((i44 | 0) != 0 ? i43 >>> 0 < ((HEAP32[46] | 0) - i5 | 0) >>> 0 : 0) { - i15 = HEAP32[48] | 0; - if (i44 >>> 0 < i15 >>> 0) _abort(); - i8 = i44 + i5 | 0; - if (i44 >>> 0 >= i8 >>> 0) _abort(); - i3 = HEAP32[i44 + 24 >> 2] | 0; - i7 = HEAP32[i44 + 12 >> 2] | 0; - do if ((i7 | 0) == (i44 | 0)) { - i2 = i44 + 20 | 0; - i14 = HEAP32[i2 >> 2] | 0; - if (!i14) { - i4 = i44 + 16 | 0; - i10 = HEAP32[i4 >> 2] | 0; - if (!i10) { - i45 = 0; - break; - } else { - i46 = i10; - i47 = i4; - } - } else { - i46 = i14; - i47 = i2; - } - while (1) { - i2 = i46 + 20 | 0; - i14 = HEAP32[i2 >> 2] | 0; - if (i14) { - i46 = i14; - i47 = i2; - continue; - } - i2 = i46 + 16 | 0; - i14 = HEAP32[i2 >> 2] | 0; - if (!i14) { - i48 = i46; - i49 = i47; - break; - } else { - i46 = i14; - i47 = i2; - } - } - if (i49 >>> 0 < i15 >>> 0) _abort(); else { - HEAP32[i49 >> 2] = 0; - i45 = i48; - break; - } - } else { - i2 = HEAP32[i44 + 8 >> 2] | 0; - if (i2 >>> 0 < i15 >>> 0) _abort(); - i14 = i2 + 12 | 0; - if ((HEAP32[i14 >> 2] | 0) != (i44 | 0)) _abort(); - i4 = i7 + 8 | 0; - if ((HEAP32[i4 >> 2] | 0) == (i44 | 0)) { - HEAP32[i14 >> 2] = i7; - HEAP32[i4 >> 2] = i2; - i45 = i7; - break; - } else _abort(); - } while (0); - do if (i3) { - i7 = HEAP32[i44 + 28 >> 2] | 0; - i15 = 480 + (i7 << 2) | 0; - if ((i44 | 0) == (HEAP32[i15 >> 2] | 0)) { - HEAP32[i15 >> 2] = i45; - if (!i45) { - HEAP32[45] = HEAP32[45] & ~(1 << i7); - break; - } - } else { - if (i3 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); - i7 = i3 + 16 | 0; - if ((HEAP32[i7 >> 2] | 0) == (i44 | 0)) HEAP32[i7 >> 2] = i45; else HEAP32[i3 + 20 >> 2] = i45; - if (!i45) break; - } - i7 = HEAP32[48] | 0; - if (i45 >>> 0 < i7 >>> 0) _abort(); - HEAP32[i45 + 24 >> 2] = i3; - i15 = HEAP32[i44 + 16 >> 2] | 0; - do if (i15) if (i15 >>> 0 < i7 >>> 0) _abort(); else { - HEAP32[i45 + 16 >> 2] = i15; - HEAP32[i15 + 24 >> 2] = i45; - break; - } while (0); - i15 = HEAP32[i44 + 20 >> 2] | 0; - if (i15) if (i15 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); else { - HEAP32[i45 + 20 >> 2] = i15; - HEAP32[i15 + 24 >> 2] = i45; - break; - } - } while (0); - do if (i43 >>> 0 >= 16) { - HEAP32[i44 + 4 >> 2] = i5 | 3; - HEAP32[i8 + 4 >> 2] = i43 | 1; - HEAP32[i8 + i43 >> 2] = i43; - i3 = i43 >>> 3; - if (i43 >>> 0 < 256) { - i15 = 216 + (i3 << 1 << 2) | 0; - i7 = HEAP32[44] | 0; - i2 = 1 << i3; - if (i7 & i2) { - i3 = i15 + 8 | 0; - i4 = HEAP32[i3 >> 2] | 0; - if (i4 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); else { - i50 = i3; - i51 = i4; - } - } else { - HEAP32[44] = i7 | i2; - i50 = i15 + 8 | 0; - i51 = i15; - } - HEAP32[i50 >> 2] = i8; - HEAP32[i51 + 12 >> 2] = i8; - HEAP32[i8 + 8 >> 2] = i51; - HEAP32[i8 + 12 >> 2] = i15; - break; - } - i15 = i43 >>> 8; - if (i15) if (i43 >>> 0 > 16777215) i52 = 31; else { - i2 = (i15 + 1048320 | 0) >>> 16 & 8; - i7 = i15 << i2; - i15 = (i7 + 520192 | 0) >>> 16 & 4; - i4 = i7 << i15; - i7 = (i4 + 245760 | 0) >>> 16 & 2; - i3 = 14 - (i15 | i2 | i7) + (i4 << i7 >>> 15) | 0; - i52 = i43 >>> (i3 + 7 | 0) & 1 | i3 << 1; - } else i52 = 0; - i3 = 480 + (i52 << 2) | 0; - HEAP32[i8 + 28 >> 2] = i52; - i7 = i8 + 16 | 0; - HEAP32[i7 + 4 >> 2] = 0; - HEAP32[i7 >> 2] = 0; - i7 = HEAP32[45] | 0; - i4 = 1 << i52; - if (!(i7 & i4)) { - HEAP32[45] = i7 | i4; - HEAP32[i3 >> 2] = i8; - HEAP32[i8 + 24 >> 2] = i3; - HEAP32[i8 + 12 >> 2] = i8; - HEAP32[i8 + 8 >> 2] = i8; - break; - } - i4 = i43 << ((i52 | 0) == 31 ? 0 : 25 - (i52 >>> 1) | 0); - i7 = HEAP32[i3 >> 2] | 0; - while (1) { - if ((HEAP32[i7 + 4 >> 2] & -8 | 0) == (i43 | 0)) { - i53 = i7; - i36 = 148; - break; - } - i3 = i7 + 16 + (i4 >>> 31 << 2) | 0; - i2 = HEAP32[i3 >> 2] | 0; - if (!i2) { - i54 = i3; - i55 = i7; - i36 = 145; - break; - } else { - i4 = i4 << 1; - i7 = i2; - } - } - if ((i36 | 0) == 145) if (i54 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); else { - HEAP32[i54 >> 2] = i8; - HEAP32[i8 + 24 >> 2] = i55; - HEAP32[i8 + 12 >> 2] = i8; - HEAP32[i8 + 8 >> 2] = i8; - break; - } else if ((i36 | 0) == 148) { - i7 = i53 + 8 | 0; - i4 = HEAP32[i7 >> 2] | 0; - i2 = HEAP32[48] | 0; - if (i4 >>> 0 >= i2 >>> 0 & i53 >>> 0 >= i2 >>> 0) { - HEAP32[i4 + 12 >> 2] = i8; - HEAP32[i7 >> 2] = i8; - HEAP32[i8 + 8 >> 2] = i4; - HEAP32[i8 + 12 >> 2] = i53; - HEAP32[i8 + 24 >> 2] = 0; - break; - } else _abort(); - } - } else { - i4 = i43 + i5 | 0; - HEAP32[i44 + 4 >> 2] = i4 | 3; - i7 = i44 + i4 + 4 | 0; - HEAP32[i7 >> 2] = HEAP32[i7 >> 2] | 1; - } while (0); - i13 = i44 + 8 | 0; - return i13 | 0; - } else i31 = i5; - } else i31 = i5; - } else i31 = -1; while (0); - i44 = HEAP32[46] | 0; - if (i44 >>> 0 >= i31 >>> 0) { - i43 = i44 - i31 | 0; - i53 = HEAP32[49] | 0; - if (i43 >>> 0 > 15) { - i55 = i53 + i31 | 0; - HEAP32[49] = i55; - HEAP32[46] = i43; - HEAP32[i55 + 4 >> 2] = i43 | 1; - HEAP32[i55 + i43 >> 2] = i43; - HEAP32[i53 + 4 >> 2] = i31 | 3; - } else { - HEAP32[46] = 0; - HEAP32[49] = 0; - HEAP32[i53 + 4 >> 2] = i44 | 3; - i43 = i53 + i44 + 4 | 0; - HEAP32[i43 >> 2] = HEAP32[i43 >> 2] | 1; - } - i13 = i53 + 8 | 0; - return i13 | 0; - } - i53 = HEAP32[47] | 0; - if (i53 >>> 0 > i31 >>> 0) { - i43 = i53 - i31 | 0; - HEAP32[47] = i43; - i53 = HEAP32[50] | 0; - i44 = i53 + i31 | 0; - HEAP32[50] = i44; - HEAP32[i44 + 4 >> 2] = i43 | 1; - HEAP32[i53 + 4 >> 2] = i31 | 3; - i13 = i53 + 8 | 0; - return i13 | 0; - } - do if (!(HEAP32[162] | 0)) { - i53 = _sysconf(30) | 0; - if (!(i53 + -1 & i53)) { - HEAP32[164] = i53; - HEAP32[163] = i53; - HEAP32[165] = -1; - HEAP32[166] = -1; - HEAP32[167] = 0; - HEAP32[155] = 0; - HEAP32[162] = (_time(0) | 0) & -16 ^ 1431655768; - break; - } else _abort(); - } while (0); - i53 = i31 + 48 | 0; - i43 = HEAP32[164] | 0; - i44 = i31 + 47 | 0; - i55 = i43 + i44 | 0; - i54 = 0 - i43 | 0; - i43 = i55 & i54; - if (i43 >>> 0 <= i31 >>> 0) { - i13 = 0; - return i13 | 0; - } - i52 = HEAP32[154] | 0; - if ((i52 | 0) != 0 ? (i51 = HEAP32[152] | 0, i50 = i51 + i43 | 0, i50 >>> 0 <= i51 >>> 0 | i50 >>> 0 > i52 >>> 0) : 0) { - i13 = 0; - return i13 | 0; - } - L257 : do if (!(HEAP32[155] & 4)) { - i52 = HEAP32[50] | 0; - L259 : do if (i52) { - i50 = 624; - while (1) { - i51 = HEAP32[i50 >> 2] | 0; - if (i51 >>> 0 <= i52 >>> 0 ? (i45 = i50 + 4 | 0, (i51 + (HEAP32[i45 >> 2] | 0) | 0) >>> 0 > i52 >>> 0) : 0) { - i56 = i50; - i57 = i45; - break; - } - i50 = HEAP32[i50 + 8 >> 2] | 0; - if (!i50) { - i36 = 173; - break L259; - } - } - i50 = i55 - (HEAP32[47] | 0) & i54; - if (i50 >>> 0 < 2147483647) { - i45 = _sbrk(i50 | 0) | 0; - if ((i45 | 0) == ((HEAP32[i56 >> 2] | 0) + (HEAP32[i57 >> 2] | 0) | 0)) { - if ((i45 | 0) != (-1 | 0)) { - i58 = i45; - i59 = i50; - i36 = 193; - break L257; - } - } else { - i60 = i45; - i61 = i50; - i36 = 183; - } - } - } else i36 = 173; while (0); - do if ((i36 | 0) == 173 ? (i52 = _sbrk(0) | 0, (i52 | 0) != (-1 | 0)) : 0) { - i5 = i52; - i50 = HEAP32[163] | 0; - i45 = i50 + -1 | 0; - if (!(i45 & i5)) i62 = i43; else i62 = i43 - i5 + (i45 + i5 & 0 - i50) | 0; - i50 = HEAP32[152] | 0; - i5 = i50 + i62 | 0; - if (i62 >>> 0 > i31 >>> 0 & i62 >>> 0 < 2147483647) { - i45 = HEAP32[154] | 0; - if ((i45 | 0) != 0 ? i5 >>> 0 <= i50 >>> 0 | i5 >>> 0 > i45 >>> 0 : 0) break; - i45 = _sbrk(i62 | 0) | 0; - if ((i45 | 0) == (i52 | 0)) { - i58 = i52; - i59 = i62; - i36 = 193; - break L257; - } else { - i60 = i45; - i61 = i62; - i36 = 183; - } - } - } while (0); - L279 : do if ((i36 | 0) == 183) { - i45 = 0 - i61 | 0; - do if (i53 >>> 0 > i61 >>> 0 & (i61 >>> 0 < 2147483647 & (i60 | 0) != (-1 | 0)) ? (i52 = HEAP32[164] | 0, i5 = i44 - i61 + i52 & 0 - i52, i5 >>> 0 < 2147483647) : 0) if ((_sbrk(i5 | 0) | 0) == (-1 | 0)) { - _sbrk(i45 | 0) | 0; - break L279; - } else { - i63 = i5 + i61 | 0; - break; - } else i63 = i61; while (0); - if ((i60 | 0) != (-1 | 0)) { - i58 = i60; - i59 = i63; - i36 = 193; - break L257; - } - } while (0); - HEAP32[155] = HEAP32[155] | 4; - i36 = 190; - } else i36 = 190; while (0); - if ((((i36 | 0) == 190 ? i43 >>> 0 < 2147483647 : 0) ? (i63 = _sbrk(i43 | 0) | 0, i43 = _sbrk(0) | 0, i63 >>> 0 < i43 >>> 0 & ((i63 | 0) != (-1 | 0) & (i43 | 0) != (-1 | 0))) : 0) ? (i60 = i43 - i63 | 0, i60 >>> 0 > (i31 + 40 | 0) >>> 0) : 0) { - i58 = i63; - i59 = i60; - i36 = 193; - } - if ((i36 | 0) == 193) { - i60 = (HEAP32[152] | 0) + i59 | 0; - HEAP32[152] = i60; - if (i60 >>> 0 > (HEAP32[153] | 0) >>> 0) HEAP32[153] = i60; - i60 = HEAP32[50] | 0; - do if (i60) { - i63 = 624; - do { - i43 = HEAP32[i63 >> 2] | 0; - i61 = i63 + 4 | 0; - i44 = HEAP32[i61 >> 2] | 0; - if ((i58 | 0) == (i43 + i44 | 0)) { - i64 = i43; - i65 = i61; - i66 = i44; - i67 = i63; - i36 = 203; - break; - } - i63 = HEAP32[i63 + 8 >> 2] | 0; - } while ((i63 | 0) != 0); - if (((i36 | 0) == 203 ? (HEAP32[i67 + 12 >> 2] & 8 | 0) == 0 : 0) ? i60 >>> 0 < i58 >>> 0 & i60 >>> 0 >= i64 >>> 0 : 0) { - HEAP32[i65 >> 2] = i66 + i59; - i63 = i60 + 8 | 0; - i44 = (i63 & 7 | 0) == 0 ? 0 : 0 - i63 & 7; - i63 = i60 + i44 | 0; - i61 = i59 - i44 + (HEAP32[47] | 0) | 0; - HEAP32[50] = i63; - HEAP32[47] = i61; - HEAP32[i63 + 4 >> 2] = i61 | 1; - HEAP32[i63 + i61 + 4 >> 2] = 40; - HEAP32[51] = HEAP32[166]; - break; - } - i61 = HEAP32[48] | 0; - if (i58 >>> 0 < i61 >>> 0) { - HEAP32[48] = i58; - i68 = i58; - } else i68 = i61; - i61 = i58 + i59 | 0; - i63 = 624; - while (1) { - if ((HEAP32[i63 >> 2] | 0) == (i61 | 0)) { - i69 = i63; - i70 = i63; - i36 = 211; - break; - } - i63 = HEAP32[i63 + 8 >> 2] | 0; - if (!i63) { - i71 = 624; - break; - } - } - if ((i36 | 0) == 211) if (!(HEAP32[i70 + 12 >> 2] & 8)) { - HEAP32[i69 >> 2] = i58; - i63 = i70 + 4 | 0; - HEAP32[i63 >> 2] = (HEAP32[i63 >> 2] | 0) + i59; - i63 = i58 + 8 | 0; - i44 = i58 + ((i63 & 7 | 0) == 0 ? 0 : 0 - i63 & 7) | 0; - i63 = i61 + 8 | 0; - i43 = i61 + ((i63 & 7 | 0) == 0 ? 0 : 0 - i63 & 7) | 0; - i63 = i44 + i31 | 0; - i53 = i43 - i44 - i31 | 0; - HEAP32[i44 + 4 >> 2] = i31 | 3; - do if ((i43 | 0) != (i60 | 0)) { - if ((i43 | 0) == (HEAP32[49] | 0)) { - i62 = (HEAP32[46] | 0) + i53 | 0; - HEAP32[46] = i62; - HEAP32[49] = i63; - HEAP32[i63 + 4 >> 2] = i62 | 1; - HEAP32[i63 + i62 >> 2] = i62; - break; - } - i62 = HEAP32[i43 + 4 >> 2] | 0; - if ((i62 & 3 | 0) == 1) { - i57 = i62 & -8; - i56 = i62 >>> 3; - L331 : do if (i62 >>> 0 >= 256) { - i54 = HEAP32[i43 + 24 >> 2] | 0; - i55 = HEAP32[i43 + 12 >> 2] | 0; - do if ((i55 | 0) == (i43 | 0)) { - i45 = i43 + 16 | 0; - i5 = i45 + 4 | 0; - i52 = HEAP32[i5 >> 2] | 0; - if (!i52) { - i50 = HEAP32[i45 >> 2] | 0; - if (!i50) { - i72 = 0; - break; - } else { - i73 = i50; - i74 = i45; - } - } else { - i73 = i52; - i74 = i5; - } - while (1) { - i5 = i73 + 20 | 0; - i52 = HEAP32[i5 >> 2] | 0; - if (i52) { - i73 = i52; - i74 = i5; - continue; - } - i5 = i73 + 16 | 0; - i52 = HEAP32[i5 >> 2] | 0; - if (!i52) { - i75 = i73; - i76 = i74; - break; - } else { - i73 = i52; - i74 = i5; - } - } - if (i76 >>> 0 < i68 >>> 0) _abort(); else { - HEAP32[i76 >> 2] = 0; - i72 = i75; - break; - } - } else { - i5 = HEAP32[i43 + 8 >> 2] | 0; - if (i5 >>> 0 < i68 >>> 0) _abort(); - i52 = i5 + 12 | 0; - if ((HEAP32[i52 >> 2] | 0) != (i43 | 0)) _abort(); - i45 = i55 + 8 | 0; - if ((HEAP32[i45 >> 2] | 0) == (i43 | 0)) { - HEAP32[i52 >> 2] = i55; - HEAP32[i45 >> 2] = i5; - i72 = i55; - break; - } else _abort(); - } while (0); - if (!i54) break; - i55 = HEAP32[i43 + 28 >> 2] | 0; - i5 = 480 + (i55 << 2) | 0; - do if ((i43 | 0) != (HEAP32[i5 >> 2] | 0)) { - if (i54 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); - i45 = i54 + 16 | 0; - if ((HEAP32[i45 >> 2] | 0) == (i43 | 0)) HEAP32[i45 >> 2] = i72; else HEAP32[i54 + 20 >> 2] = i72; - if (!i72) break L331; - } else { - HEAP32[i5 >> 2] = i72; - if (i72) break; - HEAP32[45] = HEAP32[45] & ~(1 << i55); - break L331; - } while (0); - i55 = HEAP32[48] | 0; - if (i72 >>> 0 < i55 >>> 0) _abort(); - HEAP32[i72 + 24 >> 2] = i54; - i5 = i43 + 16 | 0; - i45 = HEAP32[i5 >> 2] | 0; - do if (i45) if (i45 >>> 0 < i55 >>> 0) _abort(); else { - HEAP32[i72 + 16 >> 2] = i45; - HEAP32[i45 + 24 >> 2] = i72; - break; - } while (0); - i45 = HEAP32[i5 + 4 >> 2] | 0; - if (!i45) break; - if (i45 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); else { - HEAP32[i72 + 20 >> 2] = i45; - HEAP32[i45 + 24 >> 2] = i72; - break; - } - } else { - i45 = HEAP32[i43 + 8 >> 2] | 0; - i55 = HEAP32[i43 + 12 >> 2] | 0; - i54 = 216 + (i56 << 1 << 2) | 0; - do if ((i45 | 0) != (i54 | 0)) { - if (i45 >>> 0 < i68 >>> 0) _abort(); - if ((HEAP32[i45 + 12 >> 2] | 0) == (i43 | 0)) break; - _abort(); - } while (0); - if ((i55 | 0) == (i45 | 0)) { - HEAP32[44] = HEAP32[44] & ~(1 << i56); - break; - } - do if ((i55 | 0) == (i54 | 0)) i77 = i55 + 8 | 0; else { - if (i55 >>> 0 < i68 >>> 0) _abort(); - i5 = i55 + 8 | 0; - if ((HEAP32[i5 >> 2] | 0) == (i43 | 0)) { - i77 = i5; - break; - } - _abort(); - } while (0); - HEAP32[i45 + 12 >> 2] = i55; - HEAP32[i77 >> 2] = i45; - } while (0); - i78 = i43 + i57 | 0; - i79 = i57 + i53 | 0; - } else { - i78 = i43; - i79 = i53; - } - i56 = i78 + 4 | 0; - HEAP32[i56 >> 2] = HEAP32[i56 >> 2] & -2; - HEAP32[i63 + 4 >> 2] = i79 | 1; - HEAP32[i63 + i79 >> 2] = i79; - i56 = i79 >>> 3; - if (i79 >>> 0 < 256) { - i62 = 216 + (i56 << 1 << 2) | 0; - i54 = HEAP32[44] | 0; - i5 = 1 << i56; - do if (!(i54 & i5)) { - HEAP32[44] = i54 | i5; - i80 = i62 + 8 | 0; - i81 = i62; - } else { - i56 = i62 + 8 | 0; - i52 = HEAP32[i56 >> 2] | 0; - if (i52 >>> 0 >= (HEAP32[48] | 0) >>> 0) { - i80 = i56; - i81 = i52; - break; - } - _abort(); - } while (0); - HEAP32[i80 >> 2] = i63; - HEAP32[i81 + 12 >> 2] = i63; - HEAP32[i63 + 8 >> 2] = i81; - HEAP32[i63 + 12 >> 2] = i62; - break; - } - i5 = i79 >>> 8; - do if (!i5) i82 = 0; else { - if (i79 >>> 0 > 16777215) { - i82 = 31; - break; - } - i54 = (i5 + 1048320 | 0) >>> 16 & 8; - i57 = i5 << i54; - i52 = (i57 + 520192 | 0) >>> 16 & 4; - i56 = i57 << i52; - i57 = (i56 + 245760 | 0) >>> 16 & 2; - i50 = 14 - (i52 | i54 | i57) + (i56 << i57 >>> 15) | 0; - i82 = i79 >>> (i50 + 7 | 0) & 1 | i50 << 1; - } while (0); - i5 = 480 + (i82 << 2) | 0; - HEAP32[i63 + 28 >> 2] = i82; - i62 = i63 + 16 | 0; - HEAP32[i62 + 4 >> 2] = 0; - HEAP32[i62 >> 2] = 0; - i62 = HEAP32[45] | 0; - i50 = 1 << i82; - if (!(i62 & i50)) { - HEAP32[45] = i62 | i50; - HEAP32[i5 >> 2] = i63; - HEAP32[i63 + 24 >> 2] = i5; - HEAP32[i63 + 12 >> 2] = i63; - HEAP32[i63 + 8 >> 2] = i63; - break; - } - i50 = i79 << ((i82 | 0) == 31 ? 0 : 25 - (i82 >>> 1) | 0); - i62 = HEAP32[i5 >> 2] | 0; - while (1) { - if ((HEAP32[i62 + 4 >> 2] & -8 | 0) == (i79 | 0)) { - i83 = i62; - i36 = 281; - break; - } - i5 = i62 + 16 + (i50 >>> 31 << 2) | 0; - i57 = HEAP32[i5 >> 2] | 0; - if (!i57) { - i84 = i5; - i85 = i62; - i36 = 278; - break; - } else { - i50 = i50 << 1; - i62 = i57; - } - } - if ((i36 | 0) == 278) if (i84 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); else { - HEAP32[i84 >> 2] = i63; - HEAP32[i63 + 24 >> 2] = i85; - HEAP32[i63 + 12 >> 2] = i63; - HEAP32[i63 + 8 >> 2] = i63; - break; - } else if ((i36 | 0) == 281) { - i62 = i83 + 8 | 0; - i50 = HEAP32[i62 >> 2] | 0; - i57 = HEAP32[48] | 0; - if (i50 >>> 0 >= i57 >>> 0 & i83 >>> 0 >= i57 >>> 0) { - HEAP32[i50 + 12 >> 2] = i63; - HEAP32[i62 >> 2] = i63; - HEAP32[i63 + 8 >> 2] = i50; - HEAP32[i63 + 12 >> 2] = i83; - HEAP32[i63 + 24 >> 2] = 0; - break; - } else _abort(); - } - } else { - i50 = (HEAP32[47] | 0) + i53 | 0; - HEAP32[47] = i50; - HEAP32[50] = i63; - HEAP32[i63 + 4 >> 2] = i50 | 1; - } while (0); - i13 = i44 + 8 | 0; - return i13 | 0; - } else i71 = 624; - while (1) { - i63 = HEAP32[i71 >> 2] | 0; - if (i63 >>> 0 <= i60 >>> 0 ? (i53 = i63 + (HEAP32[i71 + 4 >> 2] | 0) | 0, i53 >>> 0 > i60 >>> 0) : 0) { - i86 = i53; - break; - } - i71 = HEAP32[i71 + 8 >> 2] | 0; - } - i44 = i86 + -47 | 0; - i53 = i44 + 8 | 0; - i63 = i44 + ((i53 & 7 | 0) == 0 ? 0 : 0 - i53 & 7) | 0; - i53 = i60 + 16 | 0; - i44 = i63 >>> 0 < i53 >>> 0 ? i60 : i63; - i63 = i44 + 8 | 0; - i43 = i58 + 8 | 0; - i61 = (i43 & 7 | 0) == 0 ? 0 : 0 - i43 & 7; - i43 = i58 + i61 | 0; - i50 = i59 + -40 - i61 | 0; - HEAP32[50] = i43; - HEAP32[47] = i50; - HEAP32[i43 + 4 >> 2] = i50 | 1; - HEAP32[i43 + i50 + 4 >> 2] = 40; - HEAP32[51] = HEAP32[166]; - i50 = i44 + 4 | 0; - HEAP32[i50 >> 2] = 27; - HEAP32[i63 >> 2] = HEAP32[156]; - HEAP32[i63 + 4 >> 2] = HEAP32[157]; - HEAP32[i63 + 8 >> 2] = HEAP32[158]; - HEAP32[i63 + 12 >> 2] = HEAP32[159]; - HEAP32[156] = i58; - HEAP32[157] = i59; - HEAP32[159] = 0; - HEAP32[158] = i63; - i63 = i44 + 24 | 0; - do { - i63 = i63 + 4 | 0; - HEAP32[i63 >> 2] = 7; - } while ((i63 + 4 | 0) >>> 0 < i86 >>> 0); - if ((i44 | 0) != (i60 | 0)) { - i63 = i44 - i60 | 0; - HEAP32[i50 >> 2] = HEAP32[i50 >> 2] & -2; - HEAP32[i60 + 4 >> 2] = i63 | 1; - HEAP32[i44 >> 2] = i63; - i43 = i63 >>> 3; - if (i63 >>> 0 < 256) { - i61 = 216 + (i43 << 1 << 2) | 0; - i62 = HEAP32[44] | 0; - i57 = 1 << i43; - if (i62 & i57) { - i43 = i61 + 8 | 0; - i5 = HEAP32[i43 >> 2] | 0; - if (i5 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); else { - i87 = i43; - i88 = i5; - } - } else { - HEAP32[44] = i62 | i57; - i87 = i61 + 8 | 0; - i88 = i61; - } - HEAP32[i87 >> 2] = i60; - HEAP32[i88 + 12 >> 2] = i60; - HEAP32[i60 + 8 >> 2] = i88; - HEAP32[i60 + 12 >> 2] = i61; - break; - } - i61 = i63 >>> 8; - if (i61) if (i63 >>> 0 > 16777215) i89 = 31; else { - i57 = (i61 + 1048320 | 0) >>> 16 & 8; - i62 = i61 << i57; - i61 = (i62 + 520192 | 0) >>> 16 & 4; - i5 = i62 << i61; - i62 = (i5 + 245760 | 0) >>> 16 & 2; - i43 = 14 - (i61 | i57 | i62) + (i5 << i62 >>> 15) | 0; - i89 = i63 >>> (i43 + 7 | 0) & 1 | i43 << 1; - } else i89 = 0; - i43 = 480 + (i89 << 2) | 0; - HEAP32[i60 + 28 >> 2] = i89; - HEAP32[i60 + 20 >> 2] = 0; - HEAP32[i53 >> 2] = 0; - i62 = HEAP32[45] | 0; - i5 = 1 << i89; - if (!(i62 & i5)) { - HEAP32[45] = i62 | i5; - HEAP32[i43 >> 2] = i60; - HEAP32[i60 + 24 >> 2] = i43; - HEAP32[i60 + 12 >> 2] = i60; - HEAP32[i60 + 8 >> 2] = i60; - break; - } - i5 = i63 << ((i89 | 0) == 31 ? 0 : 25 - (i89 >>> 1) | 0); - i62 = HEAP32[i43 >> 2] | 0; - while (1) { - if ((HEAP32[i62 + 4 >> 2] & -8 | 0) == (i63 | 0)) { - i90 = i62; - i36 = 307; - break; - } - i43 = i62 + 16 + (i5 >>> 31 << 2) | 0; - i57 = HEAP32[i43 >> 2] | 0; - if (!i57) { - i91 = i43; - i92 = i62; - i36 = 304; - break; - } else { - i5 = i5 << 1; - i62 = i57; - } - } - if ((i36 | 0) == 304) if (i91 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); else { - HEAP32[i91 >> 2] = i60; - HEAP32[i60 + 24 >> 2] = i92; - HEAP32[i60 + 12 >> 2] = i60; - HEAP32[i60 + 8 >> 2] = i60; - break; - } else if ((i36 | 0) == 307) { - i62 = i90 + 8 | 0; - i5 = HEAP32[i62 >> 2] | 0; - i63 = HEAP32[48] | 0; - if (i5 >>> 0 >= i63 >>> 0 & i90 >>> 0 >= i63 >>> 0) { - HEAP32[i5 + 12 >> 2] = i60; - HEAP32[i62 >> 2] = i60; - HEAP32[i60 + 8 >> 2] = i5; - HEAP32[i60 + 12 >> 2] = i90; - HEAP32[i60 + 24 >> 2] = 0; - break; - } else _abort(); - } - } - } else { - i5 = HEAP32[48] | 0; - if ((i5 | 0) == 0 | i58 >>> 0 < i5 >>> 0) HEAP32[48] = i58; - HEAP32[156] = i58; - HEAP32[157] = i59; - HEAP32[159] = 0; - HEAP32[53] = HEAP32[162]; - HEAP32[52] = -1; - i5 = 0; - do { - i62 = 216 + (i5 << 1 << 2) | 0; - HEAP32[i62 + 12 >> 2] = i62; - HEAP32[i62 + 8 >> 2] = i62; - i5 = i5 + 1 | 0; - } while ((i5 | 0) != 32); - i5 = i58 + 8 | 0; - i62 = (i5 & 7 | 0) == 0 ? 0 : 0 - i5 & 7; - i5 = i58 + i62 | 0; - i63 = i59 + -40 - i62 | 0; - HEAP32[50] = i5; - HEAP32[47] = i63; - HEAP32[i5 + 4 >> 2] = i63 | 1; - HEAP32[i5 + i63 + 4 >> 2] = 40; - HEAP32[51] = HEAP32[166]; - } while (0); - i59 = HEAP32[47] | 0; - if (i59 >>> 0 > i31 >>> 0) { - i58 = i59 - i31 | 0; - HEAP32[47] = i58; - i59 = HEAP32[50] | 0; - i60 = i59 + i31 | 0; - HEAP32[50] = i60; - HEAP32[i60 + 4 >> 2] = i58 | 1; - HEAP32[i59 + 4 >> 2] = i31 | 3; - i13 = i59 + 8 | 0; - return i13 | 0; - } - } - HEAP32[(___errno_location() | 0) >> 2] = 12; - i13 = 0; - return i13 | 0; -} - -function _free(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, i36 = 0, i37 = 0; - if (!i1) return; - i2 = i1 + -8 | 0; - i3 = HEAP32[48] | 0; - if (i2 >>> 0 < i3 >>> 0) _abort(); - i4 = HEAP32[i1 + -4 >> 2] | 0; - i1 = i4 & 3; - if ((i1 | 0) == 1) _abort(); - i5 = i4 & -8; - i6 = i2 + i5 | 0; - do if (!(i4 & 1)) { - i7 = HEAP32[i2 >> 2] | 0; - if (!i1) return; - i8 = i2 + (0 - i7) | 0; - i9 = i7 + i5 | 0; - if (i8 >>> 0 < i3 >>> 0) _abort(); - if ((i8 | 0) == (HEAP32[49] | 0)) { - i10 = i6 + 4 | 0; - i11 = HEAP32[i10 >> 2] | 0; - if ((i11 & 3 | 0) != 3) { - i12 = i8; - i13 = i9; - break; - } - HEAP32[46] = i9; - HEAP32[i10 >> 2] = i11 & -2; - HEAP32[i8 + 4 >> 2] = i9 | 1; - HEAP32[i8 + i9 >> 2] = i9; - return; - } - i11 = i7 >>> 3; - if (i7 >>> 0 < 256) { - i7 = HEAP32[i8 + 8 >> 2] | 0; - i10 = HEAP32[i8 + 12 >> 2] | 0; - i14 = 216 + (i11 << 1 << 2) | 0; - if ((i7 | 0) != (i14 | 0)) { - if (i7 >>> 0 < i3 >>> 0) _abort(); - if ((HEAP32[i7 + 12 >> 2] | 0) != (i8 | 0)) _abort(); - } - if ((i10 | 0) == (i7 | 0)) { - HEAP32[44] = HEAP32[44] & ~(1 << i11); - i12 = i8; - i13 = i9; - break; - } - if ((i10 | 0) != (i14 | 0)) { - if (i10 >>> 0 < i3 >>> 0) _abort(); - i14 = i10 + 8 | 0; - if ((HEAP32[i14 >> 2] | 0) == (i8 | 0)) i15 = i14; else _abort(); - } else i15 = i10 + 8 | 0; - HEAP32[i7 + 12 >> 2] = i10; - HEAP32[i15 >> 2] = i7; - i12 = i8; - i13 = i9; - break; - } - i7 = HEAP32[i8 + 24 >> 2] | 0; - i10 = HEAP32[i8 + 12 >> 2] | 0; - do if ((i10 | 0) == (i8 | 0)) { - i14 = i8 + 16 | 0; - i11 = i14 + 4 | 0; - i16 = HEAP32[i11 >> 2] | 0; - if (!i16) { - i17 = HEAP32[i14 >> 2] | 0; - if (!i17) { - i18 = 0; - break; - } else { - i19 = i17; - i20 = i14; - } - } else { - i19 = i16; - i20 = i11; - } - while (1) { - i11 = i19 + 20 | 0; - i16 = HEAP32[i11 >> 2] | 0; - if (i16) { - i19 = i16; - i20 = i11; - continue; - } - i11 = i19 + 16 | 0; - i16 = HEAP32[i11 >> 2] | 0; - if (!i16) { - i21 = i19; - i22 = i20; - break; - } else { - i19 = i16; - i20 = i11; - } - } - if (i22 >>> 0 < i3 >>> 0) _abort(); else { - HEAP32[i22 >> 2] = 0; - i18 = i21; - break; - } - } else { - i11 = HEAP32[i8 + 8 >> 2] | 0; - if (i11 >>> 0 < i3 >>> 0) _abort(); - i16 = i11 + 12 | 0; - if ((HEAP32[i16 >> 2] | 0) != (i8 | 0)) _abort(); - i14 = i10 + 8 | 0; - if ((HEAP32[i14 >> 2] | 0) == (i8 | 0)) { - HEAP32[i16 >> 2] = i10; - HEAP32[i14 >> 2] = i11; - i18 = i10; - break; - } else _abort(); - } while (0); - if (i7) { - i10 = HEAP32[i8 + 28 >> 2] | 0; - i11 = 480 + (i10 << 2) | 0; - if ((i8 | 0) == (HEAP32[i11 >> 2] | 0)) { - HEAP32[i11 >> 2] = i18; - if (!i18) { - HEAP32[45] = HEAP32[45] & ~(1 << i10); - i12 = i8; - i13 = i9; - break; - } - } else { - if (i7 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); - i10 = i7 + 16 | 0; - if ((HEAP32[i10 >> 2] | 0) == (i8 | 0)) HEAP32[i10 >> 2] = i18; else HEAP32[i7 + 20 >> 2] = i18; - if (!i18) { - i12 = i8; - i13 = i9; - break; - } - } - i10 = HEAP32[48] | 0; - if (i18 >>> 0 < i10 >>> 0) _abort(); - HEAP32[i18 + 24 >> 2] = i7; - i11 = i8 + 16 | 0; - i14 = HEAP32[i11 >> 2] | 0; - do if (i14) if (i14 >>> 0 < i10 >>> 0) _abort(); else { - HEAP32[i18 + 16 >> 2] = i14; - HEAP32[i14 + 24 >> 2] = i18; - break; - } while (0); - i14 = HEAP32[i11 + 4 >> 2] | 0; - if (i14) if (i14 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); else { - HEAP32[i18 + 20 >> 2] = i14; - HEAP32[i14 + 24 >> 2] = i18; - i12 = i8; - i13 = i9; - break; - } else { - i12 = i8; - i13 = i9; - } - } else { - i12 = i8; - i13 = i9; - } - } else { - i12 = i2; - i13 = i5; - } while (0); - if (i12 >>> 0 >= i6 >>> 0) _abort(); - i5 = i6 + 4 | 0; - i2 = HEAP32[i5 >> 2] | 0; - if (!(i2 & 1)) _abort(); - if (!(i2 & 2)) { - if ((i6 | 0) == (HEAP32[50] | 0)) { - i18 = (HEAP32[47] | 0) + i13 | 0; - HEAP32[47] = i18; - HEAP32[50] = i12; - HEAP32[i12 + 4 >> 2] = i18 | 1; - if ((i12 | 0) != (HEAP32[49] | 0)) return; - HEAP32[49] = 0; - HEAP32[46] = 0; - return; - } - if ((i6 | 0) == (HEAP32[49] | 0)) { - i18 = (HEAP32[46] | 0) + i13 | 0; - HEAP32[46] = i18; - HEAP32[49] = i12; - HEAP32[i12 + 4 >> 2] = i18 | 1; - HEAP32[i12 + i18 >> 2] = i18; - return; - } - i18 = (i2 & -8) + i13 | 0; - i3 = i2 >>> 3; - do if (i2 >>> 0 >= 256) { - i21 = HEAP32[i6 + 24 >> 2] | 0; - i22 = HEAP32[i6 + 12 >> 2] | 0; - do if ((i22 | 0) == (i6 | 0)) { - i20 = i6 + 16 | 0; - i19 = i20 + 4 | 0; - i15 = HEAP32[i19 >> 2] | 0; - if (!i15) { - i1 = HEAP32[i20 >> 2] | 0; - if (!i1) { - i23 = 0; - break; - } else { - i24 = i1; - i25 = i20; - } - } else { - i24 = i15; - i25 = i19; - } - while (1) { - i19 = i24 + 20 | 0; - i15 = HEAP32[i19 >> 2] | 0; - if (i15) { - i24 = i15; - i25 = i19; - continue; - } - i19 = i24 + 16 | 0; - i15 = HEAP32[i19 >> 2] | 0; - if (!i15) { - i26 = i24; - i27 = i25; - break; - } else { - i24 = i15; - i25 = i19; - } - } - if (i27 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); else { - HEAP32[i27 >> 2] = 0; - i23 = i26; - break; - } - } else { - i19 = HEAP32[i6 + 8 >> 2] | 0; - if (i19 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); - i15 = i19 + 12 | 0; - if ((HEAP32[i15 >> 2] | 0) != (i6 | 0)) _abort(); - i20 = i22 + 8 | 0; - if ((HEAP32[i20 >> 2] | 0) == (i6 | 0)) { - HEAP32[i15 >> 2] = i22; - HEAP32[i20 >> 2] = i19; - i23 = i22; - break; - } else _abort(); - } while (0); - if (i21) { - i22 = HEAP32[i6 + 28 >> 2] | 0; - i9 = 480 + (i22 << 2) | 0; - if ((i6 | 0) == (HEAP32[i9 >> 2] | 0)) { - HEAP32[i9 >> 2] = i23; - if (!i23) { - HEAP32[45] = HEAP32[45] & ~(1 << i22); - break; - } - } else { - if (i21 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); - i22 = i21 + 16 | 0; - if ((HEAP32[i22 >> 2] | 0) == (i6 | 0)) HEAP32[i22 >> 2] = i23; else HEAP32[i21 + 20 >> 2] = i23; - if (!i23) break; - } - i22 = HEAP32[48] | 0; - if (i23 >>> 0 < i22 >>> 0) _abort(); - HEAP32[i23 + 24 >> 2] = i21; - i9 = i6 + 16 | 0; - i8 = HEAP32[i9 >> 2] | 0; - do if (i8) if (i8 >>> 0 < i22 >>> 0) _abort(); else { - HEAP32[i23 + 16 >> 2] = i8; - HEAP32[i8 + 24 >> 2] = i23; - break; - } while (0); - i8 = HEAP32[i9 + 4 >> 2] | 0; - if (i8) if (i8 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); else { - HEAP32[i23 + 20 >> 2] = i8; - HEAP32[i8 + 24 >> 2] = i23; - break; - } - } - } else { - i8 = HEAP32[i6 + 8 >> 2] | 0; - i22 = HEAP32[i6 + 12 >> 2] | 0; - i21 = 216 + (i3 << 1 << 2) | 0; - if ((i8 | 0) != (i21 | 0)) { - if (i8 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); - if ((HEAP32[i8 + 12 >> 2] | 0) != (i6 | 0)) _abort(); - } - if ((i22 | 0) == (i8 | 0)) { - HEAP32[44] = HEAP32[44] & ~(1 << i3); - break; - } - if ((i22 | 0) != (i21 | 0)) { - if (i22 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); - i21 = i22 + 8 | 0; - if ((HEAP32[i21 >> 2] | 0) == (i6 | 0)) i28 = i21; else _abort(); - } else i28 = i22 + 8 | 0; - HEAP32[i8 + 12 >> 2] = i22; - HEAP32[i28 >> 2] = i8; - } while (0); - HEAP32[i12 + 4 >> 2] = i18 | 1; - HEAP32[i12 + i18 >> 2] = i18; - if ((i12 | 0) == (HEAP32[49] | 0)) { - HEAP32[46] = i18; - return; - } else i29 = i18; - } else { - HEAP32[i5 >> 2] = i2 & -2; - HEAP32[i12 + 4 >> 2] = i13 | 1; - HEAP32[i12 + i13 >> 2] = i13; - i29 = i13; - } - i13 = i29 >>> 3; - if (i29 >>> 0 < 256) { - i2 = 216 + (i13 << 1 << 2) | 0; - i5 = HEAP32[44] | 0; - i18 = 1 << i13; - if (i5 & i18) { - i13 = i2 + 8 | 0; - i28 = HEAP32[i13 >> 2] | 0; - if (i28 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); else { - i30 = i13; - i31 = i28; - } - } else { - HEAP32[44] = i5 | i18; - i30 = i2 + 8 | 0; - i31 = i2; - } - HEAP32[i30 >> 2] = i12; - HEAP32[i31 + 12 >> 2] = i12; - HEAP32[i12 + 8 >> 2] = i31; - HEAP32[i12 + 12 >> 2] = i2; - return; - } - i2 = i29 >>> 8; - if (i2) if (i29 >>> 0 > 16777215) i32 = 31; else { - i31 = (i2 + 1048320 | 0) >>> 16 & 8; - i30 = i2 << i31; - i2 = (i30 + 520192 | 0) >>> 16 & 4; - i18 = i30 << i2; - i30 = (i18 + 245760 | 0) >>> 16 & 2; - i5 = 14 - (i2 | i31 | i30) + (i18 << i30 >>> 15) | 0; - i32 = i29 >>> (i5 + 7 | 0) & 1 | i5 << 1; - } else i32 = 0; - i5 = 480 + (i32 << 2) | 0; - HEAP32[i12 + 28 >> 2] = i32; - HEAP32[i12 + 20 >> 2] = 0; - HEAP32[i12 + 16 >> 2] = 0; - i30 = HEAP32[45] | 0; - i18 = 1 << i32; - do if (i30 & i18) { - i31 = i29 << ((i32 | 0) == 31 ? 0 : 25 - (i32 >>> 1) | 0); - i2 = HEAP32[i5 >> 2] | 0; - while (1) { - if ((HEAP32[i2 + 4 >> 2] & -8 | 0) == (i29 | 0)) { - i33 = i2; - i34 = 130; - break; - } - i28 = i2 + 16 + (i31 >>> 31 << 2) | 0; - i13 = HEAP32[i28 >> 2] | 0; - if (!i13) { - i35 = i28; - i36 = i2; - i34 = 127; - break; - } else { - i31 = i31 << 1; - i2 = i13; - } - } - if ((i34 | 0) == 127) if (i35 >>> 0 < (HEAP32[48] | 0) >>> 0) _abort(); else { - HEAP32[i35 >> 2] = i12; - HEAP32[i12 + 24 >> 2] = i36; - HEAP32[i12 + 12 >> 2] = i12; - HEAP32[i12 + 8 >> 2] = i12; - break; - } else if ((i34 | 0) == 130) { - i2 = i33 + 8 | 0; - i31 = HEAP32[i2 >> 2] | 0; - i9 = HEAP32[48] | 0; - if (i31 >>> 0 >= i9 >>> 0 & i33 >>> 0 >= i9 >>> 0) { - HEAP32[i31 + 12 >> 2] = i12; - HEAP32[i2 >> 2] = i12; - HEAP32[i12 + 8 >> 2] = i31; - HEAP32[i12 + 12 >> 2] = i33; - HEAP32[i12 + 24 >> 2] = 0; - break; - } else _abort(); - } - } else { - HEAP32[45] = i30 | i18; - HEAP32[i5 >> 2] = i12; - HEAP32[i12 + 24 >> 2] = i5; - HEAP32[i12 + 12 >> 2] = i12; - HEAP32[i12 + 8 >> 2] = i12; - } while (0); - i12 = (HEAP32[52] | 0) + -1 | 0; - HEAP32[52] = i12; - if (!i12) i37 = 632; else return; - while (1) { - i12 = HEAP32[i37 >> 2] | 0; - if (!i12) break; else i37 = i12 + 8 | 0; - } - HEAP32[52] = -1; - return; -} - -function ___stdio_write(i1, i2, i3) { - i1 = i1 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - var i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0; - i4 = STACKTOP; - STACKTOP = STACKTOP + 48 | 0; - i5 = i4 + 16 | 0; - i6 = i4; - i7 = i4 + 32 | 0; - i8 = i1 + 28 | 0; - i9 = HEAP32[i8 >> 2] | 0; - HEAP32[i7 >> 2] = i9; - i10 = i1 + 20 | 0; - i11 = (HEAP32[i10 >> 2] | 0) - i9 | 0; - HEAP32[i7 + 4 >> 2] = i11; - HEAP32[i7 + 8 >> 2] = i2; - HEAP32[i7 + 12 >> 2] = i3; - i2 = i1 + 60 | 0; - i9 = i1 + 44 | 0; - i12 = i7; - i7 = 2; - i13 = i11 + i3 | 0; - while (1) { - if (!(HEAP32[2] | 0)) { - HEAP32[i5 >> 2] = HEAP32[i2 >> 2]; - HEAP32[i5 + 4 >> 2] = i12; - HEAP32[i5 + 8 >> 2] = i7; - i14 = ___syscall_ret(___syscall146(146, i5 | 0) | 0) | 0; - } else { - _pthread_cleanup_push(4, i1 | 0); - HEAP32[i6 >> 2] = HEAP32[i2 >> 2]; - HEAP32[i6 + 4 >> 2] = i12; - HEAP32[i6 + 8 >> 2] = i7; - i11 = ___syscall_ret(___syscall146(146, i6 | 0) | 0) | 0; - _pthread_cleanup_pop(0); - i14 = i11; - } - if ((i13 | 0) == (i14 | 0)) { - i15 = 6; - break; - } - if ((i14 | 0) < 0) { - i16 = i12; - i17 = i7; - i15 = 8; - break; - } - i11 = i13 - i14 | 0; - i18 = HEAP32[i12 + 4 >> 2] | 0; - if (i14 >>> 0 <= i18 >>> 0) if ((i7 | 0) == 2) { - HEAP32[i8 >> 2] = (HEAP32[i8 >> 2] | 0) + i14; - i19 = i18; - i20 = i14; - i21 = i12; - i22 = 2; - } else { - i19 = i18; - i20 = i14; - i21 = i12; - i22 = i7; - } else { - i23 = HEAP32[i9 >> 2] | 0; - HEAP32[i8 >> 2] = i23; - HEAP32[i10 >> 2] = i23; - i19 = HEAP32[i12 + 12 >> 2] | 0; - i20 = i14 - i18 | 0; - i21 = i12 + 8 | 0; - i22 = i7 + -1 | 0; - } - HEAP32[i21 >> 2] = (HEAP32[i21 >> 2] | 0) + i20; - HEAP32[i21 + 4 >> 2] = i19 - i20; - i12 = i21; - i7 = i22; - i13 = i11; - } - if ((i15 | 0) == 6) { - i13 = HEAP32[i9 >> 2] | 0; - HEAP32[i1 + 16 >> 2] = i13 + (HEAP32[i1 + 48 >> 2] | 0); - i9 = i13; - HEAP32[i8 >> 2] = i9; - HEAP32[i10 >> 2] = i9; - i24 = i3; - } else if ((i15 | 0) == 8) { - HEAP32[i1 + 16 >> 2] = 0; - HEAP32[i8 >> 2] = 0; - HEAP32[i10 >> 2] = 0; - HEAP32[i1 >> 2] = HEAP32[i1 >> 2] | 32; - if ((i17 | 0) == 2) i24 = 0; else i24 = i3 - (HEAP32[i16 + 4 >> 2] | 0) | 0; - } - STACKTOP = i4; - return i24 | 0; -} - -function ___fwritex(i1, i2, i3) { - i1 = i1 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - var i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0; - i4 = i3 + 16 | 0; - i5 = HEAP32[i4 >> 2] | 0; - if (!i5) if (!(___towrite(i3) | 0)) { - i6 = HEAP32[i4 >> 2] | 0; - i7 = 5; - } else i8 = 0; else { - i6 = i5; - i7 = 5; - } - L5 : do if ((i7 | 0) == 5) { - i5 = i3 + 20 | 0; - i4 = HEAP32[i5 >> 2] | 0; - i9 = i4; - if ((i6 - i4 | 0) >>> 0 < i2 >>> 0) { - i8 = FUNCTION_TABLE_iiii[HEAP32[i3 + 36 >> 2] & 7](i3, i1, i2) | 0; - break; - } - L10 : do if ((HEAP8[i3 + 75 >> 0] | 0) > -1) { - i4 = i2; - while (1) { - if (!i4) { - i10 = i2; - i11 = i1; - i12 = i9; - i13 = 0; - break L10; - } - i14 = i4 + -1 | 0; - if ((HEAP8[i1 + i14 >> 0] | 0) == 10) { - i15 = i4; - break; - } else i4 = i14; - } - if ((FUNCTION_TABLE_iiii[HEAP32[i3 + 36 >> 2] & 7](i3, i1, i15) | 0) >>> 0 < i15 >>> 0) { - i8 = i15; - break L5; - } - i10 = i2 - i15 | 0; - i11 = i1 + i15 | 0; - i12 = HEAP32[i5 >> 2] | 0; - i13 = i15; - } else { - i10 = i2; - i11 = i1; - i12 = i9; - i13 = 0; - } while (0); - _memcpy(i12 | 0, i11 | 0, i10 | 0) | 0; - HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + i10; - i8 = i13 + i10 | 0; - } while (0); - return i8 | 0; -} - -function _fflush(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0; - do if (i1) { - if ((HEAP32[i1 + 76 >> 2] | 0) <= -1) { - i2 = ___fflush_unlocked(i1) | 0; - break; - } - i3 = (___lockfile(i1) | 0) == 0; - i4 = ___fflush_unlocked(i1) | 0; - if (i3) i2 = i4; else { - ___unlockfile(i1); - i2 = i4; - } - } else { - if (!(HEAP32[14] | 0)) i5 = 0; else i5 = _fflush(HEAP32[14] | 0) | 0; - ___lock(36); - i4 = HEAP32[8] | 0; - if (!i4) i6 = i5; else { - i3 = i4; - i4 = i5; - while (1) { - if ((HEAP32[i3 + 76 >> 2] | 0) > -1) i7 = ___lockfile(i3) | 0; else i7 = 0; - if ((HEAP32[i3 + 20 >> 2] | 0) >>> 0 > (HEAP32[i3 + 28 >> 2] | 0) >>> 0) i8 = ___fflush_unlocked(i3) | 0 | i4; else i8 = i4; - if (i7) ___unlockfile(i3); - i3 = HEAP32[i3 + 56 >> 2] | 0; - if (!i3) { - i6 = i8; - break; - } else i4 = i8; - } - } - ___unlock(36); - i2 = i6; - } while (0); - return i2 | 0; -} - -function _strlen(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0; - i2 = i1; - L1 : do if (!(i2 & 3)) { - i3 = i1; - i4 = 4; - } else { - i5 = i1; - i6 = i2; - while (1) { - if (!(HEAP8[i5 >> 0] | 0)) { - i7 = i6; - break L1; - } - i8 = i5 + 1 | 0; - i6 = i8; - if (!(i6 & 3)) { - i3 = i8; - i4 = 4; - break; - } else i5 = i8; - } - } while (0); - if ((i4 | 0) == 4) { - i4 = i3; - while (1) { - i3 = HEAP32[i4 >> 2] | 0; - if (!((i3 & -2139062144 ^ -2139062144) & i3 + -16843009)) i4 = i4 + 4 | 0; else { - i9 = i3; - i10 = i4; - break; - } - } - if (!((i9 & 255) << 24 >> 24)) i11 = i10; else { - i9 = i10; - while (1) { - i10 = i9 + 1 | 0; - if (!(HEAP8[i10 >> 0] | 0)) { - i11 = i10; - break; - } else i9 = i10; - } - } - i7 = i11; - } - return i7 - i2 | 0; -} - -function ___overflow(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0; - i3 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i4 = i3; - i5 = i2 & 255; - HEAP8[i4 >> 0] = i5; - i6 = i1 + 16 | 0; - i7 = HEAP32[i6 >> 2] | 0; - if (!i7) if (!(___towrite(i1) | 0)) { - i8 = HEAP32[i6 >> 2] | 0; - i9 = 4; - } else i10 = -1; else { - i8 = i7; - i9 = 4; - } - do if ((i9 | 0) == 4) { - i7 = i1 + 20 | 0; - i6 = HEAP32[i7 >> 2] | 0; - if (i6 >>> 0 < i8 >>> 0 ? (i11 = i2 & 255, (i11 | 0) != (HEAP8[i1 + 75 >> 0] | 0)) : 0) { - HEAP32[i7 >> 2] = i6 + 1; - HEAP8[i6 >> 0] = i5; - i10 = i11; - break; - } - if ((FUNCTION_TABLE_iiii[HEAP32[i1 + 36 >> 2] & 7](i1, i4, 1) | 0) == 1) i10 = HEAPU8[i4 >> 0] | 0; else i10 = -1; - } while (0); - STACKTOP = i3; - return i10 | 0; -} - -function ___fflush_unlocked(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0; - i2 = i1 + 20 | 0; - i3 = i1 + 28 | 0; - if ((HEAP32[i2 >> 2] | 0) >>> 0 > (HEAP32[i3 >> 2] | 0) >>> 0 ? (FUNCTION_TABLE_iiii[HEAP32[i1 + 36 >> 2] & 7](i1, 0, 0) | 0, (HEAP32[i2 >> 2] | 0) == 0) : 0) i4 = -1; else { - i5 = i1 + 4 | 0; - i6 = HEAP32[i5 >> 2] | 0; - i7 = i1 + 8 | 0; - i8 = HEAP32[i7 >> 2] | 0; - if (i6 >>> 0 < i8 >>> 0) FUNCTION_TABLE_iiii[HEAP32[i1 + 40 >> 2] & 7](i1, i6 - i8 | 0, 1) | 0; - HEAP32[i1 + 16 >> 2] = 0; - HEAP32[i3 >> 2] = 0; - HEAP32[i2 >> 2] = 0; - HEAP32[i7 >> 2] = 0; - HEAP32[i5 >> 2] = 0; - i4 = 0; - } - return i4 | 0; -} - -function _memcpy(i1, i2, i3) { - i1 = i1 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - var i4 = 0; - if ((i3 | 0) >= 4096) return _emscripten_memcpy_big(i1 | 0, i2 | 0, i3 | 0) | 0; - i4 = i1 | 0; - if ((i1 & 3) == (i2 & 3)) { - while (i1 & 3) { - if (!i3) return i4 | 0; - HEAP8[i1 >> 0] = HEAP8[i2 >> 0] | 0; - i1 = i1 + 1 | 0; - i2 = i2 + 1 | 0; - i3 = i3 - 1 | 0; - } - while ((i3 | 0) >= 4) { - HEAP32[i1 >> 2] = HEAP32[i2 >> 2]; - i1 = i1 + 4 | 0; - i2 = i2 + 4 | 0; - i3 = i3 - 4 | 0; - } - } - while ((i3 | 0) > 0) { - HEAP8[i1 >> 0] = HEAP8[i2 >> 0] | 0; - i1 = i1 + 1 | 0; - i2 = i2 + 1 | 0; - i3 = i3 - 1 | 0; - } - return i4 | 0; -} - -function runPostSets() {} -function _memset(i1, i2, i3) { - i1 = i1 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - var i4 = 0, i5 = 0, i6 = 0, i7 = 0; - i4 = i1 + i3 | 0; - if ((i3 | 0) >= 20) { - i2 = i2 & 255; - i5 = i1 & 3; - i6 = i2 | i2 << 8 | i2 << 16 | i2 << 24; - i7 = i4 & ~3; - if (i5) { - i5 = i1 + 4 - i5 | 0; - while ((i1 | 0) < (i5 | 0)) { - HEAP8[i1 >> 0] = i2; - i1 = i1 + 1 | 0; - } - } - while ((i1 | 0) < (i7 | 0)) { - HEAP32[i1 >> 2] = i6; - i1 = i1 + 4 | 0; - } - } - while ((i1 | 0) < (i4 | 0)) { - HEAP8[i1 >> 0] = i2; - i1 = i1 + 1 | 0; - } - return i1 - i3 | 0; -} - -function _puts(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0; - i2 = HEAP32[13] | 0; - if ((HEAP32[i2 + 76 >> 2] | 0) > -1) i3 = ___lockfile(i2) | 0; else i3 = 0; - do if ((_fputs(i1, i2) | 0) < 0) i4 = 1; else { - if ((HEAP8[i2 + 75 >> 0] | 0) != 10 ? (i5 = i2 + 20 | 0, i6 = HEAP32[i5 >> 2] | 0, i6 >>> 0 < (HEAP32[i2 + 16 >> 2] | 0) >>> 0) : 0) { - HEAP32[i5 >> 2] = i6 + 1; - HEAP8[i6 >> 0] = 10; - i4 = 0; - break; - } - i4 = (___overflow(i2, 10) | 0) < 0; - } while (0); - if (i3) ___unlockfile(i2); - return i4 << 31 >> 31 | 0; -} - -function ___stdio_seek(i1, i2, i3) { - i1 = i1 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - var i4 = 0, i5 = 0, i6 = 0, i7 = 0; - i4 = STACKTOP; - STACKTOP = STACKTOP + 32 | 0; - i5 = i4; - i6 = i4 + 20 | 0; - HEAP32[i5 >> 2] = HEAP32[i1 + 60 >> 2]; - HEAP32[i5 + 4 >> 2] = 0; - HEAP32[i5 + 8 >> 2] = i2; - HEAP32[i5 + 12 >> 2] = i6; - HEAP32[i5 + 16 >> 2] = i3; - if ((___syscall_ret(___syscall140(140, i5 | 0) | 0) | 0) < 0) { - HEAP32[i6 >> 2] = -1; - i7 = -1; - } else i7 = HEAP32[i6 >> 2] | 0; - STACKTOP = i4; - return i7 | 0; -} - -function ___towrite(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0, i4 = 0; - i2 = i1 + 74 | 0; - i3 = HEAP8[i2 >> 0] | 0; - HEAP8[i2 >> 0] = i3 + 255 | i3; - i3 = HEAP32[i1 >> 2] | 0; - if (!(i3 & 8)) { - HEAP32[i1 + 8 >> 2] = 0; - HEAP32[i1 + 4 >> 2] = 0; - i2 = HEAP32[i1 + 44 >> 2] | 0; - HEAP32[i1 + 28 >> 2] = i2; - HEAP32[i1 + 20 >> 2] = i2; - HEAP32[i1 + 16 >> 2] = i2 + (HEAP32[i1 + 48 >> 2] | 0); - i4 = 0; - } else { - HEAP32[i1 >> 2] = i3 | 32; - i4 = -1; - } - return i4 | 0; -} - -function _fwrite(i1, i2, i3, i4) { - i1 = i1 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - var i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0; - i5 = Math_imul(i3, i2) | 0; - if ((HEAP32[i4 + 76 >> 2] | 0) > -1) { - i6 = (___lockfile(i4) | 0) == 0; - i7 = ___fwritex(i1, i5, i4) | 0; - if (i6) i8 = i7; else { - ___unlockfile(i4); - i8 = i7; - } - } else i8 = ___fwritex(i1, i5, i4) | 0; - if ((i8 | 0) == (i5 | 0)) i9 = i3; else i9 = (i8 >>> 0) / (i2 >>> 0) | 0; - return i9 | 0; -} - -function ___stdout_write(i1, i2, i3) { - i1 = i1 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - var i4 = 0, i5 = 0; - i4 = STACKTOP; - STACKTOP = STACKTOP + 80 | 0; - i5 = i4; - HEAP32[i1 + 36 >> 2] = 5; - if ((HEAP32[i1 >> 2] & 64 | 0) == 0 ? (HEAP32[i5 >> 2] = HEAP32[i1 + 60 >> 2], HEAP32[i5 + 4 >> 2] = 21505, HEAP32[i5 + 8 >> 2] = i4 + 12, (___syscall54(54, i5 | 0) | 0) != 0) : 0) HEAP8[i1 + 75 >> 0] = -1; - i5 = ___stdio_write(i1, i2, i3) | 0; - STACKTOP = i4; - return i5 | 0; -} - -function copyTempDouble(i1) { - i1 = i1 | 0; - HEAP8[tempDoublePtr >> 0] = HEAP8[i1 >> 0]; - HEAP8[tempDoublePtr + 1 >> 0] = HEAP8[i1 + 1 >> 0]; - HEAP8[tempDoublePtr + 2 >> 0] = HEAP8[i1 + 2 >> 0]; - HEAP8[tempDoublePtr + 3 >> 0] = HEAP8[i1 + 3 >> 0]; - HEAP8[tempDoublePtr + 4 >> 0] = HEAP8[i1 + 4 >> 0]; - HEAP8[tempDoublePtr + 5 >> 0] = HEAP8[i1 + 5 >> 0]; - HEAP8[tempDoublePtr + 6 >> 0] = HEAP8[i1 + 6 >> 0]; - HEAP8[tempDoublePtr + 7 >> 0] = HEAP8[i1 + 7 >> 0]; -} - -function ___stdio_close(i1) { - i1 = i1 | 0; - var i2 = 0, i3 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + 16 | 0; - i3 = i2; - HEAP32[i3 >> 2] = HEAP32[i1 + 60 >> 2]; - i1 = ___syscall_ret(___syscall6(6, i3 | 0) | 0) | 0; - STACKTOP = i2; - return i1 | 0; -} - -function copyTempFloat(i1) { - i1 = i1 | 0; - HEAP8[tempDoublePtr >> 0] = HEAP8[i1 >> 0]; - HEAP8[tempDoublePtr + 1 >> 0] = HEAP8[i1 + 1 >> 0]; - HEAP8[tempDoublePtr + 2 >> 0] = HEAP8[i1 + 2 >> 0]; - HEAP8[tempDoublePtr + 3 >> 0] = HEAP8[i1 + 3 >> 0]; -} - -function ___syscall_ret(i1) { - i1 = i1 | 0; - var i2 = 0; - if (i1 >>> 0 > 4294963200) { - HEAP32[(___errno_location() | 0) >> 2] = 0 - i1; - i2 = -1; - } else i2 = i1; - return i2 | 0; -} - -function dynCall_iiii(i1, i2, i3, i4) { - i1 = i1 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - return FUNCTION_TABLE_iiii[i1 & 7](i2 | 0, i3 | 0, i4 | 0) | 0; -} -function stackAlloc(i1) { - i1 = i1 | 0; - var i2 = 0; - i2 = STACKTOP; - STACKTOP = STACKTOP + i1 | 0; - STACKTOP = STACKTOP + 15 & -16; - return i2 | 0; -} - -function ___errno_location() { - var i1 = 0; - if (!(HEAP32[2] | 0)) i1 = 60; else i1 = HEAP32[(_pthread_self() | 0) + 60 >> 2] | 0; - return i1 | 0; -} - -function setThrew(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - if (!__THREW__) { - __THREW__ = i1; - threwValue = i2; - } -} - -function _fputs(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - return (_fwrite(i1, _strlen(i1) | 0, 1, i2) | 0) + -1 | 0; -} - -function dynCall_ii(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - return FUNCTION_TABLE_ii[i1 & 1](i2 | 0) | 0; -} - -function _cleanup_418(i1) { - i1 = i1 | 0; - if (!(HEAP32[i1 + 68 >> 2] | 0)) ___unlockfile(i1); - return; -} - -function establishStackSpace(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - STACKTOP = i1; - STACK_MAX = i2; -} - -function dynCall_vi(i1, i2) { - i1 = i1 | 0; - i2 = i2 | 0; - FUNCTION_TABLE_vi[i1 & 7](i2 | 0); -} - -function b1(i1, i2, i3) { - i1 = i1 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - abort(1); - return 0; -} - -function stackRestore(i1) { - i1 = i1 | 0; - STACKTOP = i1; -} - -function setTempRet0(i1) { - i1 = i1 | 0; - tempRet0 = i1; -} - -function b0(i1) { - i1 = i1 | 0; - abort(0); - return 0; -} - -function ___unlockfile(i1) { - i1 = i1 | 0; - return; -} - -function ___lockfile(i1) { - i1 = i1 | 0; - return 0; -} - -function getTempRet0() { - return tempRet0 | 0; -} - -function _main() { - _puts(672) | 0; - return 0; -} - -function stackSave() { - return STACKTOP | 0; -} - -function b2(i1) { - i1 = i1 | 0; - abort(2); -} - -// EMSCRIPTEN_END_FUNCS -var FUNCTION_TABLE_ii = [b0,___stdio_close]; -var FUNCTION_TABLE_iiii = [b1,b1,___stdout_write,___stdio_seek,b1,___stdio_write,b1,b1]; -var FUNCTION_TABLE_vi = [b2,b2,b2,b2,_cleanup_418,b2,b2,b2]; - - return { _free: _free, _main: _main, _memset: _memset, _malloc: _malloc, _memcpy: _memcpy, _fflush: _fflush, ___errno_location: ___errno_location, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, establishStackSpace: establishStackSpace, setThrew: setThrew, setTempRet0: setTempRet0, getTempRet0: getTempRet0, dynCall_ii: dynCall_ii, dynCall_iiii: dynCall_iiii, dynCall_vi: dynCall_vi }; -}) -; \ No newline at end of file diff -Nru binaryen-91/test/emcc_O2_hello_world.fromasm binaryen-99/test/emcc_O2_hello_world.fromasm --- binaryen-91/test/emcc_O2_hello_world.fromasm 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/emcc_O2_hello_world.fromasm 1970-01-01 00:00:00.000000000 +0000 @@ -1,9058 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (data (i32.const 1024) "emcc_O2_hello_world.asm.js") - (import "env" "table" (table $table 18 18 funcref)) - (elem (global.get $__table_base) $b0 $___stdio_close $b1 $b1 $___stdout_write $___stdio_seek $b1 $___stdio_write $b1 $b1 $b2 $b2 $b2 $b2 $_cleanup_418 $b2 $b2 $b2) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) - (import "env" "abort" (func $abort (param i32))) - (import "env" "_pthread_cleanup_pop" (func $_pthread_cleanup_pop (param i32))) - (import "env" "_pthread_self" (func $_pthread_self (result i32))) - (import "env" "_sysconf" (func $_sysconf (param i32) (result i32))) - (import "env" "___lock" (func $___lock (param i32))) - (import "env" "___syscall6" (func $___syscall6 (param i32 i32) (result i32))) - (import "env" "_abort" (func $_abort)) - (import "env" "_sbrk" (func $_sbrk (param i32) (result i32))) - (import "env" "_time" (func $_time (param i32) (result i32))) - (import "env" "_pthread_cleanup_push" (func $_pthread_cleanup_push (param i32 i32))) - (import "env" "_emscripten_memcpy_big" (func $_emscripten_memcpy_big (param i32 i32 i32) (result i32))) - (import "env" "___syscall54" (func $___syscall54 (param i32 i32) (result i32))) - (import "env" "___unlock" (func $___unlock (param i32))) - (import "env" "___syscall140" (func $___syscall140 (param i32 i32) (result i32))) - (import "env" "___syscall146" (func $___syscall146 (param i32 i32) (result i32))) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (global $STACK_MAX (mut i32) (global.get $STACK_MAX$asm2wasm$import)) - (global $__THREW__ (mut i32) (i32.const 0)) - (global $threwValue (mut i32) (i32.const 0)) - (global $tempRet0 (mut i32) (i32.const 0)) - (export "_free" (func $_free)) - (export "_main" (func $_main)) - (export "_memset" (func $_memset)) - (export "_malloc" (func $_malloc)) - (export "_memcpy" (func $_memcpy)) - (export "_fflush" (func $_fflush)) - (export "___errno_location" (func $___errno_location)) - (export "runPostSets" (func $runPostSets)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackSave" (func $stackSave)) - (export "stackRestore" (func $stackRestore)) - (export "establishStackSpace" (func $establishStackSpace)) - (export "setThrew" (func $setThrew)) - (export "setTempRet0" (func $setTempRet0)) - (export "getTempRet0" (func $getTempRet0)) - (export "dynCall_ii" (func $dynCall_ii)) - (export "dynCall_iiii" (func $dynCall_iiii)) - (export "dynCall_vi" (func $dynCall_vi)) - (func $_malloc (; 15 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i32) - (local $44 i32) - (local $45 i32) - (local $46 i32) - (local $47 i32) - (if - (i32.lt_u - (local.get $0) - (i32.const 245) - ) - (block - (if - (i32.and - (local.tee $5 - (i32.shr_u - (local.tee $18 - (i32.load - (i32.const 176) - ) - ) - (local.tee $6 - (i32.shr_u - (local.tee $4 - (select - (i32.const 16) - (i32.and - (i32.add - (local.get $0) - (i32.const 11) - ) - (i32.const -8) - ) - (i32.lt_u - (local.get $0) - (i32.const 11) - ) - ) - ) - (i32.const 3) - ) - ) - ) - ) - (i32.const 3) - ) - (block - (local.set $0 - (i32.load - (local.tee $6 - (i32.add - (local.tee $4 - (i32.load offset=8 - (local.tee $1 - (i32.add - (i32.shl - (local.tee $3 - (i32.add - (local.get $6) - (i32.xor - (i32.and - (local.get $5) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.ne - (local.get $0) - (local.get $1) - ) - (block - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $4) - (i32.load offset=12 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $0) - (local.get $1) - ) - (i32.store offset=8 - (local.get $1) - (local.get $0) - ) - ) - (call $_abort) - ) - ) - (i32.store - (i32.const 176) - (i32.and - (i32.xor - (i32.shl - (i32.const 1) - (local.get $3) - ) - (i32.const -1) - ) - (local.get $18) - ) - ) - ) - (i32.store offset=4 - (local.get $4) - (i32.or - (local.tee $0 - (i32.shl - (local.get $3) - (i32.const 3) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $4) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - (return - (local.get $6) - ) - ) - ) - (if - (i32.gt_u - (local.get $4) - (local.tee $0 - (i32.load - (i32.const 184) - ) - ) - ) - (block - (if - (local.get $5) - (block - (local.set $1 - (i32.and - (i32.shr_u - (local.tee $3 - (i32.add - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.and - (i32.or - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.shl - (i32.const 2) - (local.get $6) - ) - ) - ) - (local.get $1) - ) - (i32.shl - (local.get $5) - (local.get $6) - ) - ) - ) - ) - (local.get $1) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $3 - (i32.and - (i32.shr_u - (local.tee $6 - (i32.shr_u - (local.get $3) - (local.get $1) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $6 - (i32.and - (i32.shr_u - (local.tee $2 - (i32.shr_u - (local.get $6) - (local.get $3) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $2 - (i32.and - (i32.shr_u - (local.tee $5 - (i32.shr_u - (local.get $2) - (local.get $6) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $1 - (i32.load - (local.tee $10 - (i32.add - (local.tee $6 - (i32.load offset=8 - (local.tee $3 - (i32.add - (i32.shl - (local.tee $2 - (i32.add - (i32.or - (local.tee $10 - (i32.and - (i32.shr_u - (local.tee $5 - (i32.shr_u - (local.get $5) - (local.get $2) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (i32.or - (local.get $2) - (i32.or - (local.get $6) - (i32.or - (local.get $1) - (local.get $3) - ) - ) - ) - ) - (i32.shr_u - (local.get $5) - (local.get $10) - ) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.ne - (local.get $1) - (local.get $3) - ) - (block - (if - (i32.lt_u - (local.get $1) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $6) - (i32.load offset=12 - (local.get $1) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $1) - ) - (local.set $13 - (i32.load - (i32.const 184) - ) - ) - ) - (call $_abort) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.xor - (i32.shl - (i32.const 1) - (local.get $2) - ) - (i32.const -1) - ) - (local.get $18) - ) - ) - (local.set $13 - (local.get $0) - ) - ) - ) - (i32.store offset=4 - (local.get $6) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $5 - (i32.add - (local.get $4) - (local.get $6) - ) - ) - (i32.or - (local.tee $6 - (i32.sub - (i32.shl - (local.get $2) - (i32.const 3) - ) - (local.get $4) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $5) - (local.get $6) - ) - (local.get $6) - ) - (if - (local.get $13) - (block - (local.set $3 - (i32.load - (i32.const 196) - ) - ) - (local.set $0 - (i32.add - (i32.shl - (local.tee $1 - (i32.shr_u - (local.get $13) - (i32.const 3) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 176) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $25 - (local.get $1) - ) - (local.set $8 - (local.get $4) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $25 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $8 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $25) - (local.get $3) - ) - (i32.store offset=12 - (local.get $8) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $8) - ) - (i32.store offset=12 - (local.get $3) - (local.get $0) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $6) - ) - (i32.store - (i32.const 196) - (local.get $5) - ) - (return - (local.get $10) - ) - ) - ) - (if - (local.tee $0 - (i32.load - (i32.const 180) - ) - ) - (block - (local.set $0 - (i32.and - (i32.shr_u - (local.tee $1 - (i32.add - (i32.and - (i32.sub - (i32.const 0) - (local.get $0) - ) - (local.get $0) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $1 - (i32.and - (i32.shr_u - (local.tee $3 - (i32.shr_u - (local.get $1) - (local.get $0) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $3 - (i32.and - (i32.shr_u - (local.tee $6 - (i32.shr_u - (local.get $3) - (local.get $1) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $6 - (i32.and - (i32.shr_u - (local.tee $8 - (i32.shr_u - (local.get $6) - (local.get $3) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $5 - (i32.sub - (i32.and - (i32.load offset=4 - (local.tee $1 - (i32.load offset=480 - (i32.shl - (i32.add - (i32.or - (local.tee $5 - (i32.and - (i32.shr_u - (local.tee $8 - (i32.shr_u - (local.get $8) - (local.get $6) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (i32.or - (local.get $6) - (i32.or - (local.get $3) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - ) - (i32.shr_u - (local.get $8) - (local.get $5) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const -8) - ) - (local.get $4) - ) - ) - (local.set $0 - (local.get $1) - ) - (loop $while-in - (block $while-out - (if - (local.tee $3 - (i32.load offset=16 - (local.get $1) - ) - ) - (local.set $1 - (local.get $3) - ) - (if - (i32.eqz - (local.tee $1 - (i32.load offset=20 - (local.get $1) - ) - ) - ) - (block - (local.set $8 - (local.get $0) - ) - (br $while-out) - ) - ) - ) - (local.set $3 - (i32.lt_u - (local.tee $6 - (i32.sub - (i32.and - (i32.load offset=4 - (local.get $1) - ) - (i32.const -8) - ) - (local.get $4) - ) - ) - (local.get $5) - ) - ) - (local.set $5 - (select - (local.get $6) - (local.get $5) - (local.get $3) - ) - ) - (local.set $0 - (select - (local.get $1) - (local.get $0) - (local.get $3) - ) - ) - (br $while-in) - ) - ) - (if - (i32.lt_u - (local.get $8) - (local.tee $18 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (if - (i32.ge_u - (local.get $8) - (local.tee $14 - (i32.add - (local.get $4) - (local.get $8) - ) - ) - ) - (call $_abort) - ) - (local.set $10 - (i32.load offset=24 - (local.get $8) - ) - ) - (if - (i32.eq - (local.get $8) - (local.tee $0 - (i32.load offset=12 - (local.get $8) - ) - ) - ) - (block $do-once4 - (if - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $8) - (i32.const 20) - ) - ) - ) - ) - ) - (br_if $do-once4 - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $8) - (i32.const 16) - ) - ) - ) - ) - ) - ) - ) - (loop $while-in7 - (if - (local.tee $6 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $6) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in7) - ) - ) - (if - (local.tee $6 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $6) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in7) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $18) - ) - (call $_abort) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $2 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $8) - ) - ) - (local.get $18) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $8) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $8) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $10) - (block $do-once8 - (if - (i32.eq - (i32.load offset=480 - (local.tee $1 - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $8) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $8) - ) - (block - (i32.store offset=480 - (local.get $1) - (local.get $2) - ) - (if - (i32.eqz - (local.get $2) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $do-once8) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $10) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $8) - (i32.load offset=16 - (local.get $10) - ) - ) - (i32.store offset=16 - (local.get $10) - (local.get $2) - ) - (i32.store offset=20 - (local.get $10) - (local.get $2) - ) - ) - (br_if $do-once8 - (i32.eqz - (local.get $2) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $2) - (local.tee $1 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $2) - (local.get $10) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $8) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $2) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $2) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $8) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $2) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $2) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $5) - (i32.const 16) - ) - (block - (i32.store offset=4 - (local.get $8) - (i32.or - (local.tee $0 - (i32.add - (local.get $4) - (local.get $5) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $8) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - ) - (block - (i32.store offset=4 - (local.get $8) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.get $14) - (i32.or - (local.get $5) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $5) - (local.get $14) - ) - (local.get $5) - ) - (if - (local.tee $0 - (i32.load - (i32.const 184) - ) - ) - (block - (local.set $3 - (i32.load - (i32.const 196) - ) - ) - (local.set $0 - (i32.add - (i32.shl - (local.tee $1 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 176) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $19 - (local.get $1) - ) - (local.set $7 - (local.get $4) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $19 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $7 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $19) - (local.get $3) - ) - (i32.store offset=12 - (local.get $7) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $7) - ) - (i32.store offset=12 - (local.get $3) - (local.get $0) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $5) - ) - (i32.store - (i32.const 196) - (local.get $14) - ) - ) - ) - (return - (i32.add - (local.get $8) - (i32.const 8) - ) - ) - ) - ) - ) - ) - ) - (local.set $4 - (if (result i32) - (i32.le_u - (local.get $0) - (i32.const -65) - ) - (block $do-once (result i32) - (local.set $5 - (i32.and - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 11) - ) - ) - (i32.const -8) - ) - ) - (if (result i32) - (local.tee $39 - (i32.load - (i32.const 180) - ) - ) - (block (result i32) - (local.set $19 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $0) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $5) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $8 - (i32.shl - (local.get $0) - (local.tee $2 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $5) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $7 - (i32.and - (i32.shr_u - (i32.add - (local.tee $8 - (i32.shl - (local.get $8) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $2) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $8) - (local.get $7) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (local.set $2 - (i32.sub - (i32.const 0) - (local.get $5) - ) - ) - (if - (local.tee $7 - (i32.load offset=480 - (i32.shl - (local.get $19) - (i32.const 2) - ) - ) - ) - (block $label$break$L123 - (local.set $0 - (i32.shl - (local.get $5) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $19) - (i32.const 1) - ) - ) - (i32.eq - (local.get $19) - (i32.const 31) - ) - ) - ) - ) - (local.set $8 - (i32.const 0) - ) - (local.set $18 - (loop $while-in14 (result i32) - (if - (i32.lt_u - (local.tee $13 - (i32.sub - (local.tee $9 - (i32.and - (i32.load offset=4 - (local.get $7) - ) - (i32.const -8) - ) - ) - (local.get $5) - ) - ) - (local.get $2) - ) - (local.set $2 - (if (result i32) - (i32.eq - (local.get $5) - (local.get $9) - ) - (block - (local.set $4 - (local.get $13) - ) - (local.set $20 - (local.get $7) - ) - (local.set $6 - (local.get $7) - ) - (local.set $9 - (i32.const 90) - ) - (br $label$break$L123) - ) - (block (result i32) - (local.set $8 - (local.get $7) - ) - (local.get $13) - ) - ) - ) - ) - (local.set $13 - (select - (local.get $25) - (local.tee $13 - (i32.load offset=20 - (local.get $7) - ) - ) - (i32.or - (i32.eqz - (local.get $13) - ) - (i32.eq - (local.tee $7 - (i32.load - (i32.add - (i32.add - (local.get $7) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $0) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - (local.get $13) - ) - ) - ) - ) - (if (result i32) - (local.tee $9 - (i32.eqz - (local.get $7) - ) - ) - (block (result i32) - (local.set $21 - (local.get $13) - ) - (local.set $26 - (local.get $8) - ) - (local.set $9 - (i32.const 86) - ) - (local.get $2) - ) - (block - (local.set $25 - (local.get $13) - ) - (local.set $0 - (i32.shl - (local.get $0) - (i32.xor - (local.get $9) - (i32.const 1) - ) - ) - ) - (br $while-in14) - ) - ) - ) - ) - ) - (block - (local.set $18 - (local.get $2) - ) - (local.set $9 - (i32.const 86) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 86) - ) - (block - (if - (i32.eqz - (i32.or - (local.get $21) - (local.get $26) - ) - ) - (block - (drop - (br_if $do-once - (local.get $5) - (i32.eqz - (local.tee $0 - (i32.and - (i32.or - (i32.sub - (i32.const 0) - (local.tee $0 - (i32.shl - (i32.const 2) - (local.get $19) - ) - ) - ) - (local.get $0) - ) - (local.get $39) - ) - ) - ) - ) - ) - (local.set $0 - (i32.and - (i32.shr_u - (local.tee $2 - (i32.add - (i32.and - (i32.sub - (i32.const 0) - (local.get $0) - ) - (local.get $0) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $2 - (i32.and - (i32.shr_u - (local.tee $8 - (i32.shr_u - (local.get $2) - (local.get $0) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $8 - (i32.and - (i32.shr_u - (local.tee $7 - (i32.shr_u - (local.get $8) - (local.get $2) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $7 - (i32.and - (i32.shr_u - (local.tee $13 - (i32.shr_u - (local.get $7) - (local.get $8) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $21 - (i32.load offset=480 - (i32.shl - (i32.add - (i32.or - (local.tee $21 - (i32.and - (i32.shr_u - (local.tee $13 - (i32.shr_u - (local.get $13) - (local.get $7) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (i32.or - (local.get $7) - (i32.or - (local.get $8) - (i32.or - (local.get $0) - (local.get $2) - ) - ) - ) - ) - (i32.shr_u - (local.get $13) - (local.get $21) - ) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (if - (local.get $21) - (block - (local.set $4 - (local.get $18) - ) - (local.set $20 - (local.get $21) - ) - (local.set $6 - (local.get $26) - ) - (local.set $9 - (i32.const 90) - ) - ) - (block - (local.set $11 - (local.get $18) - ) - (local.set $12 - (local.get $26) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 90) - ) - (local.set $11 - (loop $while-in16 (result i32) - (local.set $9 - (i32.const 0) - ) - (local.set $0 - (i32.lt_u - (local.tee $2 - (i32.sub - (i32.and - (i32.load offset=4 - (local.get $20) - ) - (i32.const -8) - ) - (local.get $5) - ) - ) - (local.get $4) - ) - ) - (local.set $4 - (select - (local.get $2) - (local.get $4) - (local.get $0) - ) - ) - (local.set $6 - (select - (local.get $20) - (local.get $6) - (local.get $0) - ) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $20) - ) - ) - (block - (local.set $20 - (local.get $0) - ) - (br $while-in16) - ) - ) - (br_if $while-in16 - (local.tee $20 - (i32.load offset=20 - (local.get $20) - ) - ) - ) - (local.set $12 - (local.get $6) - ) - (local.get $4) - ) - ) - ) - (if (result i32) - (if (result i32) - (local.get $12) - (i32.lt_u - (local.get $11) - (i32.sub - (i32.load - (i32.const 184) - ) - (local.get $5) - ) - ) - (i32.const 0) - ) - (block - (if - (i32.lt_u - (local.get $12) - (local.tee $8 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (if - (i32.ge_u - (local.get $12) - (local.tee $2 - (i32.add - (local.get $5) - (local.get $12) - ) - ) - ) - (call $_abort) - ) - (local.set $6 - (i32.load offset=24 - (local.get $12) - ) - ) - (if - (i32.eq - (local.get $12) - (local.tee $0 - (i32.load offset=12 - (local.get $12) - ) - ) - ) - (block $do-once17 - (if - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $12) - (i32.const 20) - ) - ) - ) - ) - ) - (br_if $do-once17 - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $12) - (i32.const 16) - ) - ) - ) - ) - ) - ) - ) - (loop $while-in20 - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in20) - ) - ) - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in20) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $8) - ) - (call $_abort) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $15 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $12) - ) - ) - (local.get $8) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $12) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $12) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $15 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $6) - (block $do-once21 - (if - (i32.eq - (i32.load offset=480 - (local.tee $1 - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $12) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $12) - ) - (block - (i32.store offset=480 - (local.get $1) - (local.get $15) - ) - (if - (i32.eqz - (local.get $15) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $do-once21) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $6) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $12) - (i32.load offset=16 - (local.get $6) - ) - ) - (i32.store offset=16 - (local.get $6) - (local.get $15) - ) - (i32.store offset=20 - (local.get $6) - (local.get $15) - ) - ) - (br_if $do-once21 - (i32.eqz - (local.get $15) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $15) - (local.tee $1 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $15) - (local.get $6) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $12) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $15) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $15) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $12) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $15) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $15) - ) - ) - ) - ) - ) - ) - (if - (i32.ge_u - (local.get $11) - (i32.const 16) - ) - (block $do-once25 - (i32.store offset=4 - (local.get $12) - (i32.or - (local.get $5) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $11) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $2) - (local.get $11) - ) - (local.get $11) - ) - (local.set $1 - (i32.shr_u - (local.get $11) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $11) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 176) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $17 - (local.get $1) - ) - (local.set $27 - (local.get $4) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $17 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $27 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $17) - (local.get $2) - ) - (i32.store offset=12 - (local.get $27) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $27) - ) - (i32.store offset=12 - (local.get $2) - (local.get $0) - ) - (br $do-once25) - ) - ) - (local.set $1 - (i32.add - (local.tee $0 - (i32.shl - (local.tee $6 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $11) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $11) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $11) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $3 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $4) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $4) - (local.get $3) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $2) - (local.get $6) - ) - (i32.store offset=20 - (local.get $2) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $2) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $4 - (i32.load - (i32.const 180) - ) - ) - (local.tee $3 - (i32.shl - (i32.const 1) - (local.get $6) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $3) - (local.get $4) - ) - ) - (i32.store offset=480 - (local.get $0) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $1) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - (br $do-once25) - ) - ) - (local.set $3 - (i32.shl - (local.get $11) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $6) - (i32.const 1) - ) - ) - (i32.eq - (local.get $6) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load offset=480 - (local.get $0) - ) - ) - (loop $while-in28 - (block $while-out27 - (if - (i32.eq - (local.get $11) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $22 - (local.get $0) - ) - (local.set $9 - (i32.const 148) - ) - (br $while-out27) - ) - ) - (local.set $31 - (if (result i32) - (local.tee $1 - (i32.load - (local.tee $4 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $3) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $3 - (i32.shl - (local.get $3) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in28) - ) - (block (result i32) - (local.set $40 - (local.get $0) - ) - (local.set $9 - (i32.const 145) - ) - (local.get $4) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 145) - ) - (if - (i32.lt_u - (local.get $31) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $31) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $40) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 148) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $22) - ) - ) - ) - (local.tee $4 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $4) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $2) - ) - (i32.store offset=8 - (local.get $0) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $1) - ) - (i32.store offset=12 - (local.get $2) - (local.get $22) - ) - (i32.store offset=24 - (local.get $2) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (block - (i32.store offset=4 - (local.get $12) - (i32.or - (local.tee $0 - (i32.add - (local.get $5) - (local.get $11) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $12) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - ) - ) - (return - (i32.add - (local.get $12) - (i32.const 8) - ) - ) - ) - (local.get $5) - ) - ) - (local.get $5) - ) - ) - (i32.const -1) - ) - ) - ) - (if - (i32.ge_u - (local.tee $6 - (i32.load - (i32.const 184) - ) - ) - (local.get $4) - ) - (block - (local.set $0 - (i32.load - (i32.const 196) - ) - ) - (if - (i32.gt_u - (local.tee $1 - (i32.sub - (local.get $6) - (local.get $4) - ) - ) - (i32.const 15) - ) - (block - (i32.store - (i32.const 196) - (local.tee $3 - (i32.add - (local.get $0) - (local.get $4) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $1) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $1) - (local.get $3) - ) - (local.get $1) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - ) - (block - (i32.store - (i32.const 184) - (i32.const 0) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $6) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $1 - (i32.add - (local.get $0) - (local.get $6) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $1) - ) - (i32.const 1) - ) - ) - ) - ) - (return - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (block $folding-inner0 - (br_if $folding-inner0 - (i32.gt_u - (local.tee $0 - (i32.load - (i32.const 188) - ) - ) - (local.get $4) - ) - ) - (if - (i32.eqz - (i32.load - (i32.const 648) - ) - ) - (if - (i32.and - (local.tee $0 - (call $_sysconf - (i32.const 30) - ) - ) - (i32.add - (local.get $0) - (i32.const -1) - ) - ) - (call $_abort) - (block - (i32.store - (i32.const 656) - (local.get $0) - ) - (i32.store - (i32.const 652) - (local.get $0) - ) - (i32.store - (i32.const 660) - (i32.const -1) - ) - (i32.store - (i32.const 664) - (i32.const -1) - ) - (i32.store - (i32.const 668) - (i32.const 0) - ) - (i32.store - (i32.const 620) - (i32.const 0) - ) - (i32.store - (i32.const 648) - (i32.xor - (i32.and - (call $_time - (i32.const 0) - ) - (i32.const -16) - ) - (i32.const 1431655768) - ) - ) - ) - ) - ) - (local.set $22 - (i32.add - (local.get $4) - (i32.const 48) - ) - ) - (if - (i32.le_u - (local.tee $11 - (i32.and - (local.tee $2 - (i32.add - (local.tee $0 - (i32.load - (i32.const 656) - ) - ) - (local.tee $8 - (i32.add - (local.get $4) - (i32.const 47) - ) - ) - ) - ) - (local.tee $0 - (i32.sub - (i32.const 0) - (local.get $0) - ) - ) - ) - ) - (local.get $4) - ) - (return - (i32.const 0) - ) - ) - (if - (if (result i32) - (local.tee $6 - (i32.load - (i32.const 616) - ) - ) - (i32.or - (i32.le_u - (local.tee $18 - (i32.add - (local.get $11) - (local.tee $7 - (i32.load - (i32.const 608) - ) - ) - ) - ) - (local.get $7) - ) - (i32.gt_u - (local.get $18) - (local.get $6) - ) - ) - (i32.const 0) - ) - (return - (i32.const 0) - ) - ) - (if - (if (result i32) - (if (result i32) - (select - (i32.lt_u - (local.get $11) - (i32.const 2147483647) - ) - (i32.const 0) - (i32.eq - (local.tee $9 - (if (result i32) - (i32.and - (i32.load - (i32.const 620) - ) - (i32.const 4) - ) - (i32.const 190) - (block $label$break$L257 (result i32) - (if - (local.tee $6 - (i32.load - (i32.const 200) - ) - ) - (block $label$break$L259 - (local.set $17 - (i32.const 624) - ) - (loop $while-in34 - (if - (i32.eqz - (if (result i32) - (i32.le_u - (local.tee $7 - (i32.load - (local.get $17) - ) - ) - (local.get $6) - ) - (i32.gt_u - (i32.add - (i32.load - (local.tee $15 - (i32.add - (local.get $17) - (i32.const 4) - ) - ) - ) - (local.get $7) - ) - (local.get $6) - ) - (i32.const 0) - ) - ) - (block - (br_if $while-in34 - (local.tee $17 - (i32.load offset=8 - (local.get $17) - ) - ) - ) - (local.set $9 - (i32.const 173) - ) - (br $label$break$L259) - ) - ) - ) - (if - (i32.lt_u - (local.tee $2 - (i32.and - (local.get $0) - (i32.sub - (local.get $2) - (i32.load - (i32.const 188) - ) - ) - ) - ) - (i32.const 2147483647) - ) - (block - (local.set $0 - (call $_sbrk - (local.get $2) - ) - ) - (if - (i32.eq - (i32.add - (i32.load - (local.get $17) - ) - (i32.load - (local.get $15) - ) - ) - (local.get $0) - ) - (if - (i32.ne - (local.get $0) - (i32.const -1) - ) - (block - (local.set $3 - (local.get $0) - ) - (local.set $10 - (local.get $2) - ) - (br $label$break$L257 - (i32.const 193) - ) - ) - ) - (block - (local.set $14 - (local.get $0) - ) - (local.set $23 - (local.get $2) - ) - (local.set $9 - (i32.const 183) - ) - ) - ) - ) - ) - ) - (local.set $9 - (i32.const 173) - ) - ) - (if - (if (result i32) - (i32.eq - (local.get $9) - (i32.const 173) - ) - (i32.ne - (local.tee $6 - (call $_sbrk - (i32.const 0) - ) - ) - (i32.const -1) - ) - (i32.const 0) - ) - (block $do-once35 - (local.set $5 - (i32.add - (local.tee $0 - (if (result i32) - (i32.and - (local.tee $0 - (local.get $6) - ) - (local.tee $5 - (i32.add - (local.tee $2 - (i32.load - (i32.const 652) - ) - ) - (i32.const -1) - ) - ) - ) - (i32.add - (i32.sub - (local.get $11) - (local.get $0) - ) - (i32.and - (i32.add - (local.get $0) - (local.get $5) - ) - (i32.sub - (i32.const 0) - (local.get $2) - ) - ) - ) - (local.get $11) - ) - ) - (local.tee $2 - (i32.load - (i32.const 608) - ) - ) - ) - ) - (if - (i32.and - (i32.lt_u - (local.get $0) - (i32.const 2147483647) - ) - (i32.gt_u - (local.get $0) - (local.get $4) - ) - ) - (block - (br_if $do-once35 - (select - (i32.or - (i32.le_u - (local.get $5) - (local.get $2) - ) - (i32.gt_u - (local.get $5) - (local.tee $2 - (i32.load - (i32.const 616) - ) - ) - ) - ) - (i32.const 0) - (local.get $2) - ) - ) - (local.set $14 - (if (result i32) - (i32.eq - (local.get $6) - (local.tee $2 - (call $_sbrk - (local.get $0) - ) - ) - ) - (block - (local.set $3 - (local.get $6) - ) - (local.set $10 - (local.get $0) - ) - (br $label$break$L257 - (i32.const 193) - ) - ) - (block (result i32) - (local.set $23 - (local.get $0) - ) - (local.set $9 - (i32.const 183) - ) - (local.get $2) - ) - ) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 183) - ) - (block $label$break$L279 - (local.set $0 - (i32.sub - (i32.const 0) - (local.get $23) - ) - ) - (local.set $1 - (if (result i32) - (if (result i32) - (i32.and - (i32.and - (i32.ne - (local.get $14) - (i32.const -1) - ) - (i32.lt_u - (local.get $23) - (i32.const 2147483647) - ) - ) - (i32.gt_u - (local.get $22) - (local.get $23) - ) - ) - (i32.lt_u - (local.tee $5 - (i32.and - (i32.add - (local.tee $6 - (i32.load - (i32.const 656) - ) - ) - (i32.sub - (local.get $8) - (local.get $23) - ) - ) - (i32.sub - (i32.const 0) - (local.get $6) - ) - ) - ) - (i32.const 2147483647) - ) - (i32.const 0) - ) - (if (result i32) - (i32.eq - (call $_sbrk - (local.get $5) - ) - (i32.const -1) - ) - (block - (drop - (call $_sbrk - (local.get $0) - ) - ) - (br $label$break$L279) - ) - (i32.add - (local.get $5) - (local.get $23) - ) - ) - (local.get $23) - ) - ) - (if - (i32.ne - (local.get $14) - (i32.const -1) - ) - (block - (local.set $3 - (local.get $14) - ) - (local.set $10 - (local.get $1) - ) - (br $label$break$L257 - (i32.const 193) - ) - ) - ) - ) - ) - (i32.store - (i32.const 620) - (i32.or - (i32.load - (i32.const 620) - ) - (i32.const 4) - ) - ) - (i32.const 190) - ) - ) - ) - (i32.const 190) - ) - ) - (i32.and - (i32.and - (i32.ne - (local.tee $1 - (call $_sbrk - (local.get $11) - ) - ) - (i32.const -1) - ) - (i32.ne - (local.tee $11 - (call $_sbrk - (i32.const 0) - ) - ) - (i32.const -1) - ) - ) - (i32.lt_u - (local.get $1) - (local.get $11) - ) - ) - (i32.const 0) - ) - (i32.gt_u - (local.tee $14 - (i32.sub - (local.get $11) - (local.get $1) - ) - ) - (i32.add - (local.get $4) - (i32.const 40) - ) - ) - (i32.const 0) - ) - (block - (local.set $10 - (local.get $14) - ) - (local.set $9 - (i32.const 193) - ) - (local.set $3 - (local.get $1) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 193) - ) - (block - (i32.store - (i32.const 608) - (local.tee $0 - (i32.add - (local.get $10) - (i32.load - (i32.const 608) - ) - ) - ) - ) - (if - (i32.gt_u - (local.get $0) - (i32.load - (i32.const 612) - ) - ) - (i32.store - (i32.const 612) - (local.get $0) - ) - ) - (if - (local.tee $7 - (i32.load - (i32.const 200) - ) - ) - (block $do-once40 - (local.set $1 - (i32.const 624) - ) - (loop $do-in - (block $do-out - (if - (i32.eq - (i32.add - (local.tee $0 - (i32.load - (local.get $1) - ) - ) - (local.tee $2 - (i32.load - (local.tee $6 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - ) - ) - ) - (local.get $3) - ) - (block - (local.set $41 - (local.get $0) - ) - (local.set $42 - (local.get $6) - ) - (local.set $43 - (local.get $2) - ) - (local.set $44 - (local.get $1) - ) - (local.set $9 - (i32.const 203) - ) - (br $do-out) - ) - ) - (br_if $do-in - (local.tee $1 - (i32.load offset=8 - (local.get $1) - ) - ) - ) - ) - ) - (if - (if (result i32) - (if (result i32) - (i32.eq - (local.get $9) - (i32.const 203) - ) - (i32.eqz - (i32.and - (i32.load offset=12 - (local.get $44) - ) - (i32.const 8) - ) - ) - (i32.const 0) - ) - (i32.and - (i32.lt_u - (local.get $7) - (local.get $3) - ) - (i32.ge_u - (local.get $7) - (local.get $41) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (local.get $42) - (i32.add - (local.get $10) - (local.get $43) - ) - ) - (local.set $0 - (i32.add - (local.get $7) - (local.tee $1 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $0 - (i32.add - (local.get $7) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $0) - (i32.const 7) - ) - ) - ) - ) - ) - (local.set $1 - (i32.add - (i32.load - (i32.const 188) - ) - (i32.sub - (local.get $10) - (local.get $1) - ) - ) - ) - (i32.store - (i32.const 200) - (local.get $0) - ) - (i32.store - (i32.const 188) - (local.get $1) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $0) - (local.get $1) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - (br $do-once40) - ) - ) - (if - (i32.lt_u - (local.get $3) - (local.tee $6 - (i32.load - (i32.const 192) - ) - ) - ) - (block - (i32.store - (i32.const 192) - (local.get $3) - ) - (local.set $6 - (local.get $3) - ) - ) - ) - (local.set $0 - (i32.add - (local.get $3) - (local.get $10) - ) - ) - (local.set $1 - (i32.const 624) - ) - (loop $while-in43 - (block $while-out42 - (if - (i32.eq - (local.get $0) - (i32.load - (local.get $1) - ) - ) - (block - (local.set $45 - (local.get $1) - ) - (local.set $28 - (local.get $1) - ) - (local.set $9 - (i32.const 211) - ) - (br $while-out42) - ) - ) - (br_if $while-in43 - (local.tee $1 - (i32.load offset=8 - (local.get $1) - ) - ) - ) - (local.set $24 - (i32.const 624) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 211) - ) - (local.set $24 - (if (result i32) - (i32.and - (i32.load offset=12 - (local.get $28) - ) - (i32.const 8) - ) - (i32.const 624) - (block - (i32.store - (local.get $45) - (local.get $3) - ) - (i32.store offset=4 - (local.get $28) - (i32.add - (local.get $10) - (i32.load offset=4 - (local.get $28) - ) - ) - ) - (local.set $5 - (i32.add - (local.get $4) - (local.tee $14 - (i32.add - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - (local.get $3) - ) - ) - ) - ) - (local.set $8 - (i32.sub - (i32.sub - (local.tee $2 - (i32.add - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - (local.get $0) - ) - ) - (local.get $14) - ) - (local.get $4) - ) - ) - (i32.store offset=4 - (local.get $14) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - (if - (i32.ne - (local.get $2) - (local.get $7) - ) - (block $do-once44 - (if - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $2) - ) - (block - (i32.store - (i32.const 184) - (local.tee $0 - (i32.add - (local.get $8) - (i32.load - (i32.const 184) - ) - ) - ) - ) - (i32.store - (i32.const 196) - (local.get $5) - ) - (i32.store offset=4 - (local.get $5) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $5) - ) - (local.get $0) - ) - (br $do-once44) - ) - ) - (local.set $4 - (if (result i32) - (i32.eq - (i32.and - (local.tee $0 - (i32.load offset=4 - (local.get $2) - ) - ) - (i32.const 3) - ) - (i32.const 1) - ) - (block (result i32) - (local.set $7 - (i32.and - (local.get $0) - (i32.const -8) - ) - ) - (local.set $3 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (block $label$break$L331 - (if - (i32.ge_u - (local.get $0) - (i32.const 256) - ) - (block - (local.set $10 - (i32.load offset=24 - (local.get $2) - ) - ) - (if - (i32.eq - (local.get $2) - (local.tee $0 - (i32.load offset=12 - (local.get $2) - ) - ) - ) - (block $do-once47 - (if - (local.tee $0 - (i32.load - (local.tee $4 - (i32.add - (local.tee $1 - (i32.add - (local.get $2) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - (local.set $1 - (local.get $4) - ) - (br_if $do-once47 - (i32.eqz - (local.tee $0 - (i32.load - (local.get $1) - ) - ) - ) - ) - ) - (loop $while-in50 - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in50) - ) - ) - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in50) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $6) - ) - (call $_abort) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $16 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $2) - ) - ) - (local.get $6) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $2) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $2) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $16 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (br_if $label$break$L331 - (i32.eqz - (local.get $10) - ) - ) - (if - (i32.ne - (i32.load offset=480 - (local.tee $1 - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $2) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $2) - ) - (block - (if - (i32.lt_u - (local.get $10) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $2) - (i32.load offset=16 - (local.get $10) - ) - ) - (i32.store offset=16 - (local.get $10) - (local.get $16) - ) - (i32.store offset=20 - (local.get $10) - (local.get $16) - ) - ) - (br_if $label$break$L331 - (i32.eqz - (local.get $16) - ) - ) - ) - (block $do-once51 - (i32.store offset=480 - (local.get $1) - (local.get $16) - ) - (br_if $do-once51 - (local.get $16) - ) - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$L331) - ) - ) - (if - (i32.lt_u - (local.get $16) - (local.tee $1 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $16) - (local.get $10) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $2) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $16) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $16) - ) - ) - ) - ) - (br_if $label$break$L331 - (i32.eqz - (local.tee $0 - (i32.load offset=20 - (local.get $2) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $16) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $16) - ) - ) - ) - ) - (block - (local.set $1 - (i32.load offset=12 - (local.get $2) - ) - ) - (if - (i32.ne - (local.tee $4 - (i32.load offset=8 - (local.get $2) - ) - ) - (local.tee $0 - (i32.add - (i32.shl - (local.get $3) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - (block $do-once55 - (if - (i32.lt_u - (local.get $4) - (local.get $6) - ) - (call $_abort) - ) - (br_if $do-once55 - (i32.eq - (local.get $2) - (i32.load offset=12 - (local.get $4) - ) - ) - ) - (call $_abort) - ) - ) - (if - (i32.eq - (local.get $1) - (local.get $4) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $3) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$L331) - ) - ) - (if - (i32.eq - (local.get $0) - (local.get $1) - ) - (local.set $32 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (block $do-once57 - (if - (i32.lt_u - (local.get $1) - (local.get $6) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $2) - (i32.load - (local.tee $0 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - ) - (block - (local.set $32 - (local.get $0) - ) - (br $do-once57) - ) - ) - (call $_abort) - ) - ) - (i32.store offset=12 - (local.get $4) - (local.get $1) - ) - (i32.store - (local.get $32) - (local.get $4) - ) - ) - ) - ) - (local.set $2 - (i32.add - (local.get $2) - (local.get $7) - ) - ) - (i32.add - (local.get $7) - (local.get $8) - ) - ) - (local.get $8) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.and - (i32.load offset=4 - (local.get $2) - ) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $5) - (i32.or - (local.get $4) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $4) - (local.get $5) - ) - (local.get $4) - ) - (local.set $1 - (i32.shr_u - (local.get $4) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $4) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 176) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (block $do-once59 - (if - (i32.ge_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (block - (local.set $33 - (local.get $1) - ) - (local.set $29 - (local.get $4) - ) - (br $do-once59) - ) - ) - (call $_abort) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $33 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $29 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $33) - (local.get $5) - ) - (i32.store offset=12 - (local.get $29) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $29) - ) - (i32.store offset=12 - (local.get $5) - (local.get $0) - ) - (br $do-once44) - ) - ) - (local.set $3 - (i32.add - (local.tee $1 - (i32.shl - (local.tee $0 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $4) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $4) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $4) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $6 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $3) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $3) - (local.get $6) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $5) - (local.get $0) - ) - (i32.store offset=20 - (local.get $5) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $5) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $6 - (i32.load - (i32.const 180) - ) - ) - (local.tee $2 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $2) - (local.get $6) - ) - ) - (i32.store offset=480 - (local.get $1) - (local.get $5) - ) - (i32.store offset=24 - (local.get $5) - (local.get $3) - ) - (i32.store offset=12 - (local.get $5) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $5) - ) - (br $do-once44) - ) - ) - (local.set $17 - (i32.shl - (local.get $4) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $0) - (i32.const 1) - ) - ) - (i32.eq - (local.get $0) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load offset=480 - (local.get $1) - ) - ) - (loop $while-in64 - (block $while-out63 - (if - (i32.eq - (local.get $4) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $34 - (local.get $0) - ) - (local.set $9 - (i32.const 281) - ) - (br $while-out63) - ) - ) - (local.set $35 - (if (result i32) - (local.tee $1 - (i32.load - (local.tee $3 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $17) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $17 - (i32.shl - (local.get $17) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in64) - ) - (block (result i32) - (local.set $46 - (local.get $0) - ) - (local.set $9 - (i32.const 278) - ) - (local.get $3) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 278) - ) - (if - (i32.lt_u - (local.get $35) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $35) - (local.get $5) - ) - (i32.store offset=24 - (local.get $5) - (local.get $46) - ) - (i32.store offset=12 - (local.get $5) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $5) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 281) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $34) - ) - ) - ) - (local.tee $4 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $4) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $5) - ) - (i32.store offset=8 - (local.get $0) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $1) - ) - (i32.store offset=12 - (local.get $5) - (local.get $34) - ) - (i32.store offset=24 - (local.get $5) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (block - (i32.store - (i32.const 188) - (local.tee $0 - (i32.add - (local.get $8) - (i32.load - (i32.const 188) - ) - ) - ) - ) - (i32.store - (i32.const 200) - (local.get $5) - ) - (i32.store offset=4 - (local.get $5) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (return - (i32.add - (local.get $14) - (i32.const 8) - ) - ) - ) - ) - ) - ) - (loop $while-in66 - (if - (i32.eqz - (if (result i32) - (i32.le_u - (local.tee $0 - (i32.load - (local.get $24) - ) - ) - (local.get $7) - ) - (i32.gt_u - (local.tee $22 - (i32.add - (i32.load offset=4 - (local.get $24) - ) - (local.get $0) - ) - ) - (local.get $7) - ) - (i32.const 0) - ) - ) - (block - (local.set $24 - (i32.load offset=8 - (local.get $24) - ) - ) - (br $while-in66) - ) - ) - ) - (i32.store - (i32.const 200) - (local.tee $0 - (i32.add - (local.get $3) - (local.tee $1 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $0 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $0) - (i32.const 7) - ) - ) - ) - ) - ) - ) - (i32.store - (i32.const 188) - (local.tee $1 - (i32.sub - (i32.add - (local.get $10) - (i32.const -40) - ) - (local.get $1) - ) - ) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $0) - (local.get $1) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - (i32.store offset=4 - (local.tee $0 - (select - (local.get $7) - (local.tee $0 - (i32.add - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.tee $0 - (i32.add - (local.get $22) - (i32.const -47) - ) - ) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - (local.get $0) - ) - ) - (i32.lt_u - (local.get $0) - (local.tee $2 - (i32.add - (local.get $7) - (i32.const 16) - ) - ) - ) - ) - ) - (i32.const 27) - ) - (i32.store offset=8 - (local.get $0) - (i32.load - (i32.const 624) - ) - ) - (i32.store offset=12 - (local.get $0) - (i32.load - (i32.const 628) - ) - ) - (i32.store offset=16 - (local.get $0) - (i32.load - (i32.const 632) - ) - ) - (i32.store offset=20 - (local.get $0) - (i32.load - (i32.const 636) - ) - ) - (i32.store - (i32.const 624) - (local.get $3) - ) - (i32.store - (i32.const 628) - (local.get $10) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (i32.store - (i32.const 632) - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $1 - (i32.add - (local.get $0) - (i32.const 24) - ) - ) - (loop $do-in68 - (i32.store - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.const 7) - ) - (br_if $do-in68 - (i32.lt_u - (i32.add - (local.get $1) - (i32.const 4) - ) - (local.get $22) - ) - ) - ) - (if - (i32.ne - (local.get $0) - (local.get $7) - ) - (block - (i32.store offset=4 - (local.get $0) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $7) - (i32.or - (local.tee $6 - (i32.sub - (local.get $0) - (local.get $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (local.get $0) - (local.get $6) - ) - (local.set $1 - (i32.shr_u - (local.get $6) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $6) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $3 - (i32.load - (i32.const 176) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $3 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $36 - (local.get $1) - ) - (local.set $30 - (local.get $3) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $1) - (local.get $3) - ) - ) - (local.set $36 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $30 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $36) - (local.get $7) - ) - (i32.store offset=12 - (local.get $30) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $30) - ) - (i32.store offset=12 - (local.get $7) - (local.get $0) - ) - (br $do-once40) - ) - ) - (local.set $3 - (i32.add - (local.tee $1 - (i32.shl - (local.tee $0 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $6) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $6) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $6) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $8 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $3) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $3) - (local.get $8) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $7) - (local.get $0) - ) - (i32.store offset=20 - (local.get $7) - (i32.const 0) - ) - (i32.store - (local.get $2) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $2 - (i32.load - (i32.const 180) - ) - ) - (local.tee $8 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $2) - (local.get $8) - ) - ) - (i32.store offset=480 - (local.get $1) - (local.get $7) - ) - (i32.store offset=24 - (local.get $7) - (local.get $3) - ) - (i32.store offset=12 - (local.get $7) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $7) - ) - (br $do-once40) - ) - ) - (local.set $5 - (i32.shl - (local.get $6) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $0) - (i32.const 1) - ) - ) - (i32.eq - (local.get $0) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load offset=480 - (local.get $1) - ) - ) - (loop $while-in70 - (block $while-out69 - (if - (i32.eq - (local.get $6) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $37 - (local.get $0) - ) - (local.set $9 - (i32.const 307) - ) - (br $while-out69) - ) - ) - (local.set $38 - (if (result i32) - (local.tee $1 - (i32.load - (local.tee $3 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $5) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $5 - (i32.shl - (local.get $5) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in70) - ) - (block (result i32) - (local.set $47 - (local.get $0) - ) - (local.set $9 - (i32.const 304) - ) - (local.get $3) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 304) - ) - (if - (i32.lt_u - (local.get $38) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $38) - (local.get $7) - ) - (i32.store offset=24 - (local.get $7) - (local.get $47) - ) - (i32.store offset=12 - (local.get $7) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $7) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 307) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $37) - ) - ) - ) - (local.tee $3 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $3) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $7) - ) - (i32.store offset=8 - (local.get $0) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $1) - ) - (i32.store offset=12 - (local.get $7) - (local.get $37) - ) - (i32.store offset=24 - (local.get $7) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - ) - ) - (block - (if - (i32.or - (i32.eqz - (local.tee $0 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.lt_u - (local.get $3) - (local.get $0) - ) - ) - (i32.store - (i32.const 192) - (local.get $3) - ) - ) - (i32.store - (i32.const 624) - (local.get $3) - ) - (i32.store - (i32.const 628) - (local.get $10) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (i32.store - (i32.const 212) - (i32.load - (i32.const 648) - ) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - (local.set $5 - (i32.const 0) - ) - (loop $do-in72 - (local.set $1 - (i32.add - (local.tee $0 - (i32.shl - (local.get $5) - (i32.const 3) - ) - ) - (i32.const 216) - ) - ) - (i32.store offset=228 - (local.get $0) - (local.get $1) - ) - (i32.store offset=224 - (local.get $0) - (local.get $1) - ) - (br_if $do-in72 - (i32.ne - (local.tee $5 - (i32.add - (local.get $5) - (i32.const 1) - ) - ) - (i32.const 32) - ) - ) - ) - (i32.store - (i32.const 200) - (local.tee $0 - (i32.add - (local.get $3) - (local.tee $1 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $0 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $0) - (i32.const 7) - ) - ) - ) - ) - ) - ) - (i32.store - (i32.const 188) - (local.tee $1 - (i32.sub - (i32.add - (local.get $10) - (i32.const -40) - ) - (local.get $1) - ) - ) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $0) - (local.get $1) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - ) - ) - (br_if $folding-inner0 - (i32.gt_u - (local.tee $0 - (i32.load - (i32.const 188) - ) - ) - (local.get $4) - ) - ) - ) - ) - (i32.store - (call $___errno_location) - (i32.const 12) - ) - (return - (i32.const 0) - ) - ) - (i32.store - (i32.const 188) - (local.tee $1 - (i32.sub - (local.get $0) - (local.get $4) - ) - ) - ) - (i32.store - (i32.const 200) - (local.tee $3 - (i32.add - (local.get $4) - (local.tee $0 - (i32.load - (i32.const 200) - ) - ) - ) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (func $_free (; 16 ;) (; has Stack IR ;) (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (if - (i32.eqz - (local.get $0) - ) - (return) - ) - (if - (i32.lt_u - (local.tee $3 - (i32.add - (local.get $0) - (i32.const -8) - ) - ) - (local.tee $13 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.tee $10 - (i32.and - (local.tee $0 - (i32.load - (i32.add - (local.get $0) - (i32.const -4) - ) - ) - ) - (i32.const 3) - ) - ) - (i32.const 1) - ) - (call $_abort) - ) - (local.set $6 - (i32.add - (local.get $3) - (local.tee $4 - (i32.and - (local.get $0) - (i32.const -8) - ) - ) - ) - ) - (if - (i32.and - (local.get $0) - (i32.const 1) - ) - (block - (local.set $2 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - ) - (block $do-once - (local.set $9 - (i32.load - (local.get $3) - ) - ) - (if - (i32.eqz - (local.get $10) - ) - (return) - ) - (if - (i32.lt_u - (local.tee $0 - (i32.sub - (local.get $3) - (local.get $9) - ) - ) - (local.get $13) - ) - (call $_abort) - ) - (local.set $3 - (i32.add - (local.get $4) - (local.get $9) - ) - ) - (if - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $0) - ) - (block - (if - (i32.ne - (i32.and - (local.tee $1 - (i32.load offset=4 - (local.get $6) - ) - ) - (i32.const 3) - ) - (i32.const 3) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - (i32.store - (i32.const 184) - (local.get $3) - ) - (i32.store offset=4 - (local.get $6) - (i32.and - (local.get $1) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $3) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $3) - ) - (local.get $3) - ) - (return) - ) - ) - (local.set $10 - (i32.shr_u - (local.get $9) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $9) - (i32.const 256) - ) - (block - (local.set $2 - (i32.load offset=12 - (local.get $0) - ) - ) - (if - (i32.ne - (local.tee $4 - (i32.load offset=8 - (local.get $0) - ) - ) - (local.tee $1 - (i32.add - (i32.shl - (local.get $10) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $4) - (local.get $13) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $0) - (i32.load offset=12 - (local.get $4) - ) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (local.get $2) - (local.get $4) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $10) - ) - (i32.const -1) - ) - ) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - (if - (i32.ne - (local.get $1) - (local.get $2) - ) - (block - (if - (i32.lt_u - (local.get $2) - (local.get $13) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $0) - (i32.load - (local.tee $1 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - ) - ) - (local.set $5 - (local.get $1) - ) - (call $_abort) - ) - ) - (local.set $5 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - ) - (i32.store offset=12 - (local.get $4) - (local.get $2) - ) - (i32.store - (local.get $5) - (local.get $4) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - (local.set $12 - (i32.load offset=24 - (local.get $0) - ) - ) - (if - (i32.eq - (local.get $0) - (local.tee $4 - (i32.load offset=12 - (local.get $0) - ) - ) - ) - (block $do-once0 - (if - (local.tee $4 - (i32.load - (local.tee $9 - (i32.add - (local.tee $5 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - (local.set $5 - (local.get $9) - ) - (br_if $do-once0 - (i32.eqz - (local.tee $4 - (i32.load - (local.get $5) - ) - ) - ) - ) - ) - (loop $while-in - (if - (local.tee $10 - (i32.load - (local.tee $9 - (i32.add - (local.get $4) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $10) - ) - (local.set $5 - (local.get $9) - ) - (br $while-in) - ) - ) - (if - (local.tee $10 - (i32.load - (local.tee $9 - (i32.add - (local.get $4) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $10) - ) - (local.set $5 - (local.get $9) - ) - (br $while-in) - ) - ) - ) - (if - (i32.lt_u - (local.get $5) - (local.get $13) - ) - (call $_abort) - (block - (i32.store - (local.get $5) - (i32.const 0) - ) - (local.set $7 - (local.get $4) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $5 - (i32.load offset=8 - (local.get $0) - ) - ) - (local.get $13) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $0) - (i32.load offset=12 - (local.get $5) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $0) - (i32.load offset=8 - (local.get $4) - ) - ) - (block - (i32.store offset=12 - (local.get $5) - (local.get $4) - ) - (i32.store offset=8 - (local.get $4) - (local.get $5) - ) - (local.set $7 - (local.get $4) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $12) - (block - (if - (i32.eq - (i32.load offset=480 - (local.tee $5 - (i32.shl - (local.tee $4 - (i32.load offset=28 - (local.get $0) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $0) - ) - (block - (i32.store offset=480 - (local.get $5) - (local.get $7) - ) - (if - (i32.eqz - (local.get $7) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $12) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $0) - (i32.load offset=16 - (local.get $12) - ) - ) - (i32.store offset=16 - (local.get $12) - (local.get $7) - ) - (i32.store offset=20 - (local.get $12) - (local.get $7) - ) - ) - (if - (i32.eqz - (local.get $7) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $7) - (local.tee $5 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $7) - (local.get $12) - ) - (if - (local.tee $4 - (i32.load offset=16 - (local.get $0) - ) - ) - (if - (i32.lt_u - (local.get $4) - (local.get $5) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $7) - (local.get $4) - ) - (i32.store offset=24 - (local.get $4) - (local.get $7) - ) - ) - ) - ) - (if - (local.tee $4 - (i32.load offset=20 - (local.get $0) - ) - ) - (if - (i32.lt_u - (local.get $4) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $7) - (local.get $4) - ) - (i32.store offset=24 - (local.get $4) - (local.get $7) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - ) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - ) - ) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - ) - ) - ) - ) - (if - (i32.ge_u - (local.get $2) - (local.get $6) - ) - (call $_abort) - ) - (if - (i32.eqz - (i32.and - (local.tee $0 - (i32.load offset=4 - (local.get $6) - ) - ) - (i32.const 1) - ) - ) - (call $_abort) - ) - (if - (i32.and - (local.get $0) - (i32.const 2) - ) - (block - (i32.store offset=4 - (local.get $6) - (i32.and - (local.get $0) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $1) - (local.get $2) - ) - (local.get $1) - ) - ) - (block - (if - (i32.eq - (i32.load - (i32.const 200) - ) - (local.get $6) - ) - (block - (i32.store - (i32.const 188) - (local.tee $0 - (i32.add - (local.get $1) - (i32.load - (i32.const 188) - ) - ) - ) - ) - (i32.store - (i32.const 200) - (local.get $2) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (if - (i32.ne - (i32.load - (i32.const 196) - ) - (local.get $2) - ) - (return) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (i32.store - (i32.const 184) - (i32.const 0) - ) - (return) - ) - ) - (if - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $6) - ) - (block - (i32.store - (i32.const 184) - (local.tee $0 - (i32.add - (local.get $1) - (i32.load - (i32.const 184) - ) - ) - ) - ) - (i32.store - (i32.const 196) - (local.get $2) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $2) - ) - (local.get $0) - ) - (return) - ) - ) - (local.set $5 - (i32.add - (local.get $1) - (i32.and - (local.get $0) - (i32.const -8) - ) - ) - ) - (local.set $4 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (block $do-once4 - (if - (i32.ge_u - (local.get $0) - (i32.const 256) - ) - (block - (local.set $7 - (i32.load offset=24 - (local.get $6) - ) - ) - (if - (i32.eq - (local.get $6) - (local.tee $0 - (i32.load offset=12 - (local.get $6) - ) - ) - ) - (block $do-once6 - (if - (local.tee $0 - (i32.load - (local.tee $3 - (i32.add - (local.tee $1 - (i32.add - (local.get $6) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - (local.set $1 - (local.get $3) - ) - (br_if $do-once6 - (i32.eqz - (local.tee $0 - (i32.load - (local.get $1) - ) - ) - ) - ) - ) - (loop $while-in9 - (if - (local.tee $4 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $4) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in9) - ) - ) - (if - (local.tee $4 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $4) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in9) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $8 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $6) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $6) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $6) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $8 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $7) - (block - (if - (i32.eq - (i32.load offset=480 - (local.tee $1 - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $6) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $6) - ) - (block - (i32.store offset=480 - (local.get $1) - (local.get $8) - ) - (if - (i32.eqz - (local.get $8) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $7) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $6) - (i32.load offset=16 - (local.get $7) - ) - ) - (i32.store offset=16 - (local.get $7) - (local.get $8) - ) - (i32.store offset=20 - (local.get $7) - (local.get $8) - ) - ) - (br_if $do-once4 - (i32.eqz - (local.get $8) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $8) - (local.tee $1 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $8) - (local.get $7) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $6) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $8) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $8) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $6) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $8) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $8) - ) - ) - ) - ) - ) - ) - ) - (block - (local.set $1 - (i32.load offset=12 - (local.get $6) - ) - ) - (if - (i32.ne - (local.tee $3 - (i32.load offset=8 - (local.get $6) - ) - ) - (local.tee $0 - (i32.add - (i32.shl - (local.get $4) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $3) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $6) - (i32.load offset=12 - (local.get $3) - ) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (local.get $1) - (local.get $3) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - (if - (i32.ne - (local.get $0) - (local.get $1) - ) - (block - (if - (i32.lt_u - (local.get $1) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $6) - (i32.load - (local.tee $0 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - ) - (local.set $14 - (local.get $0) - ) - (call $_abort) - ) - ) - (local.set $14 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - (i32.store offset=12 - (local.get $3) - (local.get $1) - ) - (i32.store - (local.get $14) - (local.get $3) - ) - ) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $5) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $2) - (local.get $5) - ) - (local.get $5) - ) - (local.set $1 - (if (result i32) - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $2) - ) - (block - (i32.store - (i32.const 184) - (local.get $5) - ) - (return) - ) - (local.get $5) - ) - ) - ) - ) - (local.set $3 - (i32.shr_u - (local.get $1) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $1) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $3) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $1 - (i32.load - (i32.const 176) - ) - ) - (local.tee $3 - (i32.shl - (i32.const 1) - (local.get $3) - ) - ) - ) - (if - (i32.lt_u - (local.tee $3 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $15 - (local.get $1) - ) - (local.set $11 - (local.get $3) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $1) - (local.get $3) - ) - ) - (local.set $15 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $11 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $15) - (local.get $2) - ) - (i32.store offset=12 - (local.get $11) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $11) - ) - (i32.store offset=12 - (local.get $2) - (local.get $0) - ) - (return) - ) - ) - (local.set $4 - (i32.add - (local.tee $3 - (i32.shl - (local.tee $0 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $1) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $1) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $0) - (local.tee $3 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $1) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $5 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $4) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $3) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $4) - (local.get $5) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $2) - (local.get $0) - ) - (i32.store offset=20 - (local.get $2) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $2) - (i32.const 0) - ) - (if - (i32.and - (local.tee $5 - (i32.load - (i32.const 180) - ) - ) - (local.tee $7 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - (block - (local.set $11 - (i32.shl - (local.get $1) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $0) - (i32.const 1) - ) - ) - (i32.eq - (local.get $0) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load offset=480 - (local.get $3) - ) - ) - (if - (i32.eq - (local.tee $0 - (loop $while-in15 (result i32) - (block $while-out14 (result i32) - (if - (i32.eq - (local.get $1) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $16 - (local.get $0) - ) - (br $while-out14 - (i32.const 130) - ) - ) - ) - (if (result i32) - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $11) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $11 - (i32.shl - (local.get $11) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $3) - ) - (br $while-in15) - ) - (block (result i32) - (local.set $17 - (local.get $4) - ) - (local.set $18 - (local.get $0) - ) - (i32.const 127) - ) - ) - ) - ) - ) - (i32.const 127) - ) - (if - (i32.lt_u - (local.get $17) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $17) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $18) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - ) - ) - (if - (i32.eq - (local.get $0) - (i32.const 130) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $16) - ) - ) - ) - (local.tee $3 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $3) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $2) - ) - (i32.store offset=8 - (local.get $0) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $1) - ) - (i32.store offset=12 - (local.get $2) - (local.get $16) - ) - (i32.store offset=24 - (local.get $2) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $5) - (local.get $7) - ) - ) - (i32.store offset=480 - (local.get $3) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $4) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - ) - ) - (i32.store - (i32.const 208) - (local.tee $0 - (i32.add - (i32.load - (i32.const 208) - ) - (i32.const -1) - ) - ) - ) - (local.set $0 - (if (result i32) - (local.get $0) - (return) - (i32.const 632) - ) - ) - (loop $while-in17 - (if - (local.tee $0 - (i32.load - (local.get $0) - ) - ) - (block - (local.set $0 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (br $while-in17) - ) - ) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - ) - (func $___stdio_write (; 17 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local.set $9 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 48) - ) - ) - (local.set $7 - (i32.add - (local.get $9) - (i32.const 16) - ) - ) - (i32.store - (local.tee $4 - (i32.add - (local.tee $8 - (local.get $9) - ) - (i32.const 32) - ) - ) - (local.tee $3 - (i32.load offset=28 - (local.get $0) - ) - ) - ) - (i32.store offset=4 - (local.get $4) - (local.tee $3 - (i32.sub - (i32.load offset=20 - (local.get $0) - ) - (local.get $3) - ) - ) - ) - (i32.store offset=8 - (local.get $4) - (local.get $1) - ) - (i32.store offset=12 - (local.get $4) - (local.get $2) - ) - (local.set $1 - (local.get $4) - ) - (local.set $4 - (i32.const 2) - ) - (local.set $10 - (i32.add - (local.get $2) - (local.get $3) - ) - ) - (loop $while-in - (block $while-out - (if - (i32.load - (i32.const 8) - ) - (block - (call $_pthread_cleanup_push - (i32.const 4) - (local.get $0) - ) - (i32.store - (local.get $8) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $8) - (local.get $1) - ) - (i32.store offset=8 - (local.get $8) - (local.get $4) - ) - (local.set $3 - (call $___syscall_ret - (call $___syscall146 - (i32.const 146) - (local.get $8) - ) - ) - ) - (call $_pthread_cleanup_pop - (i32.const 0) - ) - ) - (block - (i32.store - (local.get $7) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $7) - (local.get $1) - ) - (i32.store offset=8 - (local.get $7) - (local.get $4) - ) - (local.set $3 - (call $___syscall_ret - (call $___syscall146 - (i32.const 146) - (local.get $7) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $3) - (local.get $10) - ) - (block - (local.set $1 - (i32.const 6) - ) - (br $while-out) - ) - ) - (if - (i32.lt_s - (local.get $3) - (i32.const 0) - ) - (block - (local.set $12 - (local.get $1) - ) - (local.set $13 - (local.get $4) - ) - (local.set $1 - (i32.const 8) - ) - ) - (block - (local.set $5 - (if (result i32) - (i32.le_u - (local.get $3) - (local.tee $5 - (i32.load offset=4 - (local.get $1) - ) - ) - ) - (block (result i32) - (if - (i32.eq - (local.get $4) - (i32.const 2) - ) - (block - (i32.store offset=28 - (local.get $0) - (i32.add - (local.get $3) - (i32.load offset=28 - (local.get $0) - ) - ) - ) - (local.set $6 - (local.get $5) - ) - (local.set $4 - (i32.const 2) - ) - ) - (local.set $6 - (local.get $5) - ) - ) - (local.get $3) - ) - (block (result i32) - (i32.store offset=28 - (local.get $0) - (local.tee $6 - (i32.load offset=44 - (local.get $0) - ) - ) - ) - (i32.store offset=20 - (local.get $0) - (local.get $6) - ) - (local.set $6 - (i32.load offset=12 - (local.get $1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (local.set $4 - (i32.add - (local.get $4) - (i32.const -1) - ) - ) - (i32.sub - (local.get $3) - (local.get $5) - ) - ) - ) - ) - (i32.store - (local.get $1) - (i32.add - (local.get $5) - (i32.load - (local.get $1) - ) - ) - ) - (i32.store offset=4 - (local.get $1) - (i32.sub - (local.get $6) - (local.get $5) - ) - ) - (local.set $10 - (i32.sub - (local.get $10) - (local.get $3) - ) - ) - (br $while-in) - ) - ) - ) - ) - (local.set $11 - (if (result i32) - (i32.eq - (local.get $1) - (i32.const 6) - ) - (block (result i32) - (i32.store offset=16 - (local.get $0) - (i32.add - (local.tee $1 - (i32.load offset=44 - (local.get $0) - ) - ) - (i32.load offset=48 - (local.get $0) - ) - ) - ) - (i32.store offset=28 - (local.get $0) - (local.get $1) - ) - (i32.store offset=20 - (local.get $0) - (local.get $1) - ) - (local.get $2) - ) - (if (result i32) - (i32.eq - (local.get $1) - (i32.const 8) - ) - (block (result i32) - (i32.store offset=16 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=20 - (local.get $0) - (i32.const 0) - ) - (i32.store - (local.get $0) - (i32.or - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (if (result i32) - (i32.eq - (local.get $13) - (i32.const 2) - ) - (i32.const 0) - (i32.sub - (local.get $2) - (i32.load offset=4 - (local.get $12) - ) - ) - ) - ) - (local.get $11) - ) - ) - ) - (global.set $STACKTOP - (local.get $9) - ) - (local.get $11) - ) - (func $___fwritex (; 18 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local.set $5 - (i32.const 672) - ) - (local.set $3 - (if (result i32) - (local.tee $4 - (i32.load offset=16 - (local.get $1) - ) - ) - (block (result i32) - (local.set $6 - (i32.const 5) - ) - (local.get $4) - ) - (if (result i32) - (call $___towrite - (local.get $1) - ) - (local.get $3) - (block (result i32) - (local.set $6 - (i32.const 5) - ) - (i32.load offset=16 - (local.get $1) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $6) - (i32.const 5) - ) - (block $label$break$L5 - (if - (i32.lt_u - (i32.sub - (local.get $3) - (local.tee $3 - (i32.load offset=20 - (local.get $1) - ) - ) - ) - (local.get $0) - ) - (block - (local.set $2 - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $1) - (i32.const 672) - (local.get $0) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $1) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (br $label$break$L5) - ) - ) - (if - (i32.gt_s - (i32.load8_s offset=75 - (local.get $1) - ) - (i32.const -1) - ) - (block $label$break$L10 - (local.set $2 - (local.get $0) - ) - (loop $while-in - (if - (i32.eqz - (local.get $2) - ) - (block - (local.set $2 - (i32.const 0) - ) - (br $label$break$L10) - ) - ) - (if - (i32.ne - (i32.load8_s offset=672 - (local.tee $4 - (i32.add - (local.get $2) - (i32.const -1) - ) - ) - ) - (i32.const 10) - ) - (block - (local.set $2 - (local.get $4) - ) - (br $while-in) - ) - ) - ) - (br_if $label$break$L5 - (i32.lt_u - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $1) - (i32.const 672) - (local.get $2) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $1) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - (local.get $2) - ) - ) - (local.set $0 - (i32.sub - (local.get $0) - (local.get $2) - ) - ) - (local.set $5 - (i32.add - (local.get $2) - (i32.const 672) - ) - ) - (local.set $3 - (i32.load offset=20 - (local.get $1) - ) - ) - ) - ) - (drop - (call $_memcpy - (local.get $3) - (local.get $5) - (local.get $0) - ) - ) - (i32.store offset=20 - (local.get $1) - (i32.add - (local.get $0) - (i32.load offset=20 - (local.get $1) - ) - ) - ) - (local.set $2 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - ) - ) - (local.get $2) - ) - (func $_fflush (; 19 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (if - (local.get $0) - (local.set $0 - (block $do-once (result i32) - (if - (i32.le_s - (i32.load offset=76 - (local.get $0) - ) - (i32.const -1) - ) - (br $do-once - (call $___fflush_unlocked - (local.get $0) - ) - ) - ) - (call $___fflush_unlocked - (local.get $0) - ) - ) - ) - (block - (local.set $0 - (if (result i32) - (i32.load - (i32.const 56) - ) - (call $_fflush - (i32.load - (i32.const 56) - ) - ) - (i32.const 0) - ) - ) - (call $___lock - (i32.const 36) - ) - (if - (local.tee $1 - (i32.load - (i32.const 32) - ) - ) - (loop $while-in - (drop - (i32.load offset=76 - (local.get $1) - ) - ) - (if - (i32.gt_u - (i32.load offset=20 - (local.get $1) - ) - (i32.load offset=28 - (local.get $1) - ) - ) - (local.set $0 - (i32.or - (call $___fflush_unlocked - (local.get $1) - ) - (local.get $0) - ) - ) - ) - (br_if $while-in - (local.tee $1 - (i32.load offset=56 - (local.get $1) - ) - ) - ) - ) - ) - (call $___unlock - (i32.const 36) - ) - ) - ) - (local.get $0) - ) - (func $_strlen (; 20 ;) (; has Stack IR ;) (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local.set $0 - (i32.const 672) - ) - (block - (local.set $4 - (i32.const 672) - ) - (local.set $1 - (i32.const 4) - ) - ) - (i32.sub - (if (result i32) - (i32.eq - (local.get $1) - (i32.const 4) - ) - (block (result i32) - (local.set $1 - (local.get $4) - ) - (local.set $0 - (loop $while-in1 (result i32) - (if (result i32) - (i32.and - (i32.add - (local.tee $2 - (i32.load - (local.get $1) - ) - ) - (i32.const -16843009) - ) - (i32.xor - (i32.and - (local.get $2) - (i32.const -2139062144) - ) - (i32.const -2139062144) - ) - ) - (local.get $1) - (block - (local.set $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (if - (i32.and - (local.get $2) - (i32.const 255) - ) - (loop $while-in3 - (br_if $while-in3 - (i32.load8_s - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.get $0) - ) - (local.get $2) - ) - (i32.const 672) - ) - ) - (func $___overflow (; 21 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local.set $3 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (i32.store8 - (local.tee $4 - (local.get $3) - ) - (i32.const 10) - ) - (if - (local.tee $1 - (i32.load offset=16 - (local.get $0) - ) - ) - (block - (local.set $5 - (local.get $1) - ) - (local.set $6 - (i32.const 4) - ) - ) - (if - (call $___towrite - (local.get $0) - ) - (local.set $2 - (i32.const -1) - ) - (block - (local.set $5 - (i32.load offset=16 - (local.get $0) - ) - ) - (local.set $6 - (i32.const 4) - ) - ) - ) - ) - (if - (i32.eq - (local.get $6) - (i32.const 4) - ) - (local.set $2 - (block $do-once (result i32) - (if - (if (result i32) - (i32.lt_u - (local.tee $1 - (i32.load offset=20 - (local.get $0) - ) - ) - (local.get $5) - ) - (i32.ne - (local.tee $7 - (i32.const 10) - ) - (i32.load8_s offset=75 - (local.get $0) - ) - ) - (i32.const 0) - ) - (block - (i32.store offset=20 - (local.get $0) - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $1) - (i32.const 10) - ) - (br $do-once - (local.get $7) - ) - ) - ) - (if (result i32) - (i32.eq - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (local.get $4) - (i32.const 1) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $0) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - (i32.const 1) - ) - (i32.load8_u - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $3) - ) - (local.get $2) - ) - (func $___fflush_unlocked (; 22 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (if (result i32) - (if (result i32) - (i32.gt_u - (i32.load offset=20 - (local.get $0) - ) - (i32.load offset=28 - (local.get $0) - ) - ) - (block (result i32) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $0) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (i32.eqz - (i32.load offset=20 - (local.get $0) - ) - ) - ) - (i32.const 0) - ) - (i32.const -1) - (block (result i32) - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=4 - (local.get $0) - ) - ) - (local.tee $2 - (i32.load offset=8 - (local.get $0) - ) - ) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (i32.sub - (local.get $1) - (local.get $2) - ) - (i32.const 1) - (i32.add - (i32.and - (i32.load offset=40 - (local.get $0) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.store offset=16 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=20 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=8 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - (func $_memcpy (; 23 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (if - (i32.ge_s - (local.get $2) - (i32.const 4096) - ) - (return - (call $_emscripten_memcpy_big - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - ) - (local.set $3 - (local.get $0) - ) - (if - (i32.eq - (i32.and - (local.get $0) - (i32.const 3) - ) - (i32.and - (local.get $1) - (i32.const 3) - ) - ) - (block - (loop $while-in - (if - (i32.and - (local.get $0) - (i32.const 3) - ) - (block - (if - (i32.eqz - (local.get $2) - ) - (return - (local.get $3) - ) - ) - (i32.store8 - (local.get $0) - (i32.load8_s - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (loop $while-in1 - (if - (i32.ge_s - (local.get $2) - (i32.const 4) - ) - (block - (i32.store - (local.get $0) - (i32.load - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 4) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - ) - (loop $while-in3 - (if - (i32.gt_s - (local.get $2) - (i32.const 0) - ) - (block - (i32.store8 - (local.get $0) - (i32.load8_s - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (local.get $3) - ) - (func $runPostSets (; 24 ;) (; has Stack IR ;) - (nop) - ) - (func $_memset (; 25 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local.set $4 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - (if - (i32.ge_s - (local.get $2) - (i32.const 20) - ) - (block - (local.set $1 - (i32.and - (local.get $1) - (i32.const 255) - ) - ) - (if - (local.tee $3 - (i32.and - (local.get $0) - (i32.const 3) - ) - ) - (block - (local.set $3 - (i32.sub - (i32.add - (local.get $0) - (i32.const 4) - ) - (local.get $3) - ) - ) - (loop $while-in - (if - (i32.lt_s - (local.get $0) - (local.get $3) - ) - (block - (i32.store8 - (local.get $0) - (local.get $1) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - ) - (local.set $3 - (i32.or - (i32.or - (i32.or - (i32.shl - (local.get $1) - (i32.const 8) - ) - (local.get $1) - ) - (i32.shl - (local.get $1) - (i32.const 16) - ) - ) - (i32.shl - (local.get $1) - (i32.const 24) - ) - ) - ) - (local.set $5 - (i32.and - (local.get $4) - (i32.const -4) - ) - ) - (loop $while-in1 - (if - (i32.lt_s - (local.get $0) - (local.get $5) - ) - (block - (i32.store - (local.get $0) - (local.get $3) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - ) - (loop $while-in3 - (if - (i32.lt_s - (local.get $0) - (local.get $4) - ) - (block - (i32.store8 - (local.get $0) - (local.get $1) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (i32.sub - (local.get $0) - (local.get $2) - ) - ) - (func $_puts (; 26 ;) (; has Stack IR ;) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (drop - (i32.load offset=76 - (local.tee $0 - (i32.load - (i32.const 52) - ) - ) - ) - ) - (drop - (if (result i32) - (i32.lt_s - (i32.add - (call $_fwrite - (call $_strlen) - (local.get $0) - ) - (i32.const -1) - ) - (i32.const 0) - ) - (i32.const 1) - (block $do-once (result i32) - (if - (if (result i32) - (i32.ne - (i32.load8_s offset=75 - (local.get $0) - ) - (i32.const 10) - ) - (block (result i32) - (local.set $2 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - (i32.lt_u - (local.tee $1 - (i32.load offset=20 - (local.get $0) - ) - ) - (i32.load offset=16 - (local.get $0) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $1) - (i32.const 10) - ) - (br $do-once - (i32.const 0) - ) - ) - ) - (call $___overflow - (local.get $0) - ) - ) - ) - ) - ) - (func $___stdio_seek (; 27 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local.set $3 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 32) - ) - ) - (i32.store - (local.get $3) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.const 0) - ) - (i32.store offset=8 - (local.get $3) - (local.get $1) - ) - (i32.store offset=12 - (local.get $3) - (i32.add - (local.get $3) - (i32.const 20) - ) - ) - (i32.store offset=16 - (local.get $3) - (local.get $2) - ) - (local.set $0 - (if (result i32) - (i32.lt_s - (call $___syscall_ret - (call $___syscall140 - (i32.const 140) - (local.get $3) - ) - ) - (i32.const 0) - ) - (block (result i32) - (i32.store offset=20 - (local.get $3) - (i32.const -1) - ) - (i32.const -1) - ) - (i32.load offset=20 - (local.get $3) - ) - ) - ) - (global.set $STACKTOP - (local.get $3) - ) - (local.get $0) - ) - (func $___towrite (; 28 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (i32.store8 offset=74 - (local.get $0) - (i32.or - (local.tee $1 - (i32.load8_s offset=74 - (local.get $0) - ) - ) - (i32.add - (local.get $1) - (i32.const 255) - ) - ) - ) - (if (result i32) - (i32.and - (local.tee $1 - (i32.load - (local.get $0) - ) - ) - (i32.const 8) - ) - (block (result i32) - (i32.store - (local.get $0) - (i32.or - (local.get $1) - (i32.const 32) - ) - ) - (i32.const -1) - ) - (block (result i32) - (i32.store offset=8 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (local.tee $1 - (i32.load offset=44 - (local.get $0) - ) - ) - ) - (i32.store offset=20 - (local.get $0) - (local.get $1) - ) - (i32.store offset=16 - (local.get $0) - (i32.add - (i32.load offset=48 - (local.get $0) - ) - (local.get $1) - ) - ) - (i32.const 0) - ) - ) - ) - (func $_fwrite (; 29 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local.set $2 - (local.get $0) - ) - (if (result i32) - (block (result i32) - (drop - (i32.load offset=76 - (local.get $1) - ) - ) - (i32.ne - (local.get $2) - (local.tee $1 - (call $___fwritex - (local.get $2) - (local.get $1) - ) - ) - ) - ) - (if (result i32) - (local.get $0) - (i32.div_u - (local.get $1) - (local.get $0) - ) - (i32.const 0) - ) - (i32.const 1) - ) - ) - (func $___stdout_write (; 30 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local.set $4 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 80) - ) - ) - (local.set $3 - (local.get $4) - ) - (i32.store offset=36 - (local.get $0) - (i32.const 5) - ) - (if - (if (result i32) - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 64) - ) - (i32.const 0) - (block (result i32) - (i32.store - (local.get $3) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.const 21505) - ) - (i32.store offset=8 - (local.get $3) - (i32.add - (local.get $4) - (i32.const 12) - ) - ) - (call $___syscall54 - (i32.const 54) - (local.get $3) - ) - ) - ) - (i32.store8 offset=75 - (local.get $0) - (i32.const -1) - ) - ) - (local.set $0 - (call $___stdio_write - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - (global.set $STACKTOP - (local.get $4) - ) - (local.get $0) - ) - (func $___stdio_close (; 31 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local.set $1 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (local.get $1) - (i32.load offset=60 - (local.get $0) - ) - ) - (local.set $0 - (call $___syscall_ret - (call $___syscall6 - (i32.const 6) - (local.get $1) - ) - ) - ) - (global.set $STACKTOP - (local.get $1) - ) - (local.get $0) - ) - (func $___syscall_ret (; 32 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (if - (i32.gt_u - (local.get $0) - (i32.const -4096) - ) - (block - (i32.store - (call $___errno_location) - (i32.sub - (i32.const 0) - (local.get $0) - ) - ) - (local.set $0 - (i32.const -1) - ) - ) - ) - (local.get $0) - ) - (func $dynCall_iiii (; 33 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $1) - (local.get $2) - (local.get $3) - (i32.add - (i32.and - (local.get $0) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (func $stackAlloc (; 34 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local.set $1 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (local.get $0) - (global.get $STACKTOP) - ) - ) - (global.set $STACKTOP - (i32.and - (i32.add - (global.get $STACKTOP) - (i32.const 15) - ) - (i32.const -16) - ) - ) - (local.get $1) - ) - (func $___errno_location (; 35 ;) (; has Stack IR ;) (result i32) - (if (result i32) - (i32.load - (i32.const 8) - ) - (i32.load offset=60 - (call $_pthread_self) - ) - (i32.const 60) - ) - ) - (func $setThrew (; 36 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (if - (i32.eqz - (global.get $__THREW__) - ) - (block - (global.set $__THREW__ - (local.get $0) - ) - (global.set $threwValue - (local.get $1) - ) - ) - ) - ) - (func $dynCall_ii (; 37 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (call_indirect (type $i32_=>_i32) - (local.get $1) - (i32.and - (local.get $0) - (i32.const 1) - ) - ) - ) - (func $_cleanup_418 (; 38 ;) (; has Stack IR ;) (param $0 i32) - (drop - (i32.load offset=68 - (local.get $0) - ) - ) - ) - (func $establishStackSpace (; 39 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (global.set $STACKTOP - (local.get $0) - ) - (global.set $STACK_MAX - (local.get $1) - ) - ) - (func $dynCall_vi (; 40 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (call_indirect (type $i32_=>_none) - (local.get $1) - (i32.add - (i32.and - (local.get $0) - (i32.const 7) - ) - (i32.const 10) - ) - ) - ) - (func $b1 (; 41 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $abort - (i32.const 1) - ) - (i32.const 0) - ) - (func $stackRestore (; 42 ;) (; has Stack IR ;) (param $0 i32) - (global.set $STACKTOP - (local.get $0) - ) - ) - (func $setTempRet0 (; 43 ;) (; has Stack IR ;) (param $0 i32) - (global.set $tempRet0 - (local.get $0) - ) - ) - (func $b0 (; 44 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (call $abort - (i32.const 0) - ) - (i32.const 0) - ) - (func $getTempRet0 (; 45 ;) (; has Stack IR ;) (result i32) - (global.get $tempRet0) - ) - (func $_main (; 46 ;) (; has Stack IR ;) (result i32) - (call $_puts) - (i32.const 0) - ) - (func $stackSave (; 47 ;) (; has Stack IR ;) (result i32) - (global.get $STACKTOP) - ) - (func $b2 (; 48 ;) (; has Stack IR ;) (param $0 i32) - (call $abort - (i32.const 2) - ) - ) -) diff -Nru binaryen-91/test/emcc_O2_hello_world.fromasm.clamp binaryen-99/test/emcc_O2_hello_world.fromasm.clamp --- binaryen-91/test/emcc_O2_hello_world.fromasm.clamp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/emcc_O2_hello_world.fromasm.clamp 1970-01-01 00:00:00.000000000 +0000 @@ -1,9058 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (data (i32.const 1024) "emcc_O2_hello_world.asm.js") - (import "env" "table" (table $table 18 18 funcref)) - (elem (global.get $__table_base) $b0 $___stdio_close $b1 $b1 $___stdout_write $___stdio_seek $b1 $___stdio_write $b1 $b1 $b2 $b2 $b2 $b2 $_cleanup_418 $b2 $b2 $b2) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) - (import "env" "abort" (func $abort (param i32))) - (import "env" "_pthread_cleanup_pop" (func $_pthread_cleanup_pop (param i32))) - (import "env" "_pthread_self" (func $_pthread_self (result i32))) - (import "env" "_sysconf" (func $_sysconf (param i32) (result i32))) - (import "env" "___lock" (func $___lock (param i32))) - (import "env" "___syscall6" (func $___syscall6 (param i32 i32) (result i32))) - (import "env" "_abort" (func $_abort)) - (import "env" "_sbrk" (func $_sbrk (param i32) (result i32))) - (import "env" "_time" (func $_time (param i32) (result i32))) - (import "env" "_pthread_cleanup_push" (func $_pthread_cleanup_push (param i32 i32))) - (import "env" "_emscripten_memcpy_big" (func $_emscripten_memcpy_big (param i32 i32 i32) (result i32))) - (import "env" "___syscall54" (func $___syscall54 (param i32 i32) (result i32))) - (import "env" "___unlock" (func $___unlock (param i32))) - (import "env" "___syscall140" (func $___syscall140 (param i32 i32) (result i32))) - (import "env" "___syscall146" (func $___syscall146 (param i32 i32) (result i32))) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (global $STACK_MAX (mut i32) (global.get $STACK_MAX$asm2wasm$import)) - (global $__THREW__ (mut i32) (i32.const 0)) - (global $threwValue (mut i32) (i32.const 0)) - (global $tempRet0 (mut i32) (i32.const 0)) - (export "_free" (func $_free)) - (export "_main" (func $_main)) - (export "_memset" (func $_memset)) - (export "_malloc" (func $_malloc)) - (export "_memcpy" (func $_memcpy)) - (export "_fflush" (func $_fflush)) - (export "___errno_location" (func $___errno_location)) - (export "runPostSets" (func $runPostSets)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackSave" (func $stackSave)) - (export "stackRestore" (func $stackRestore)) - (export "establishStackSpace" (func $establishStackSpace)) - (export "setThrew" (func $setThrew)) - (export "setTempRet0" (func $setTempRet0)) - (export "getTempRet0" (func $getTempRet0)) - (export "dynCall_ii" (func $dynCall_ii)) - (export "dynCall_iiii" (func $dynCall_iiii)) - (export "dynCall_vi" (func $dynCall_vi)) - (func $_malloc (; 15 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i32) - (local $44 i32) - (local $45 i32) - (local $46 i32) - (local $47 i32) - (if - (i32.lt_u - (local.get $0) - (i32.const 245) - ) - (block - (if - (i32.and - (local.tee $5 - (i32.shr_u - (local.tee $18 - (i32.load - (i32.const 176) - ) - ) - (local.tee $6 - (i32.shr_u - (local.tee $4 - (select - (i32.const 16) - (i32.and - (i32.add - (local.get $0) - (i32.const 11) - ) - (i32.const -8) - ) - (i32.lt_u - (local.get $0) - (i32.const 11) - ) - ) - ) - (i32.const 3) - ) - ) - ) - ) - (i32.const 3) - ) - (block - (local.set $0 - (i32.load - (local.tee $6 - (i32.add - (local.tee $4 - (i32.load offset=8 - (local.tee $1 - (i32.add - (i32.shl - (local.tee $3 - (i32.add - (local.get $6) - (i32.xor - (i32.and - (local.get $5) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.ne - (local.get $0) - (local.get $1) - ) - (block - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $4) - (i32.load offset=12 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $0) - (local.get $1) - ) - (i32.store offset=8 - (local.get $1) - (local.get $0) - ) - ) - (call $_abort) - ) - ) - (i32.store - (i32.const 176) - (i32.and - (i32.xor - (i32.shl - (i32.const 1) - (local.get $3) - ) - (i32.const -1) - ) - (local.get $18) - ) - ) - ) - (i32.store offset=4 - (local.get $4) - (i32.or - (local.tee $0 - (i32.shl - (local.get $3) - (i32.const 3) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $4) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - (return - (local.get $6) - ) - ) - ) - (if - (i32.gt_u - (local.get $4) - (local.tee $0 - (i32.load - (i32.const 184) - ) - ) - ) - (block - (if - (local.get $5) - (block - (local.set $1 - (i32.and - (i32.shr_u - (local.tee $3 - (i32.add - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.and - (i32.or - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.shl - (i32.const 2) - (local.get $6) - ) - ) - ) - (local.get $1) - ) - (i32.shl - (local.get $5) - (local.get $6) - ) - ) - ) - ) - (local.get $1) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $3 - (i32.and - (i32.shr_u - (local.tee $6 - (i32.shr_u - (local.get $3) - (local.get $1) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $6 - (i32.and - (i32.shr_u - (local.tee $2 - (i32.shr_u - (local.get $6) - (local.get $3) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $2 - (i32.and - (i32.shr_u - (local.tee $5 - (i32.shr_u - (local.get $2) - (local.get $6) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $1 - (i32.load - (local.tee $10 - (i32.add - (local.tee $6 - (i32.load offset=8 - (local.tee $3 - (i32.add - (i32.shl - (local.tee $2 - (i32.add - (i32.or - (local.tee $10 - (i32.and - (i32.shr_u - (local.tee $5 - (i32.shr_u - (local.get $5) - (local.get $2) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (i32.or - (local.get $2) - (i32.or - (local.get $6) - (i32.or - (local.get $1) - (local.get $3) - ) - ) - ) - ) - (i32.shr_u - (local.get $5) - (local.get $10) - ) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.ne - (local.get $1) - (local.get $3) - ) - (block - (if - (i32.lt_u - (local.get $1) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $6) - (i32.load offset=12 - (local.get $1) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $1) - ) - (local.set $13 - (i32.load - (i32.const 184) - ) - ) - ) - (call $_abort) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.xor - (i32.shl - (i32.const 1) - (local.get $2) - ) - (i32.const -1) - ) - (local.get $18) - ) - ) - (local.set $13 - (local.get $0) - ) - ) - ) - (i32.store offset=4 - (local.get $6) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $5 - (i32.add - (local.get $4) - (local.get $6) - ) - ) - (i32.or - (local.tee $6 - (i32.sub - (i32.shl - (local.get $2) - (i32.const 3) - ) - (local.get $4) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $5) - (local.get $6) - ) - (local.get $6) - ) - (if - (local.get $13) - (block - (local.set $3 - (i32.load - (i32.const 196) - ) - ) - (local.set $0 - (i32.add - (i32.shl - (local.tee $1 - (i32.shr_u - (local.get $13) - (i32.const 3) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 176) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $25 - (local.get $1) - ) - (local.set $8 - (local.get $4) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $25 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $8 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $25) - (local.get $3) - ) - (i32.store offset=12 - (local.get $8) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $8) - ) - (i32.store offset=12 - (local.get $3) - (local.get $0) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $6) - ) - (i32.store - (i32.const 196) - (local.get $5) - ) - (return - (local.get $10) - ) - ) - ) - (if - (local.tee $0 - (i32.load - (i32.const 180) - ) - ) - (block - (local.set $0 - (i32.and - (i32.shr_u - (local.tee $1 - (i32.add - (i32.and - (i32.sub - (i32.const 0) - (local.get $0) - ) - (local.get $0) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $1 - (i32.and - (i32.shr_u - (local.tee $3 - (i32.shr_u - (local.get $1) - (local.get $0) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $3 - (i32.and - (i32.shr_u - (local.tee $6 - (i32.shr_u - (local.get $3) - (local.get $1) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $6 - (i32.and - (i32.shr_u - (local.tee $8 - (i32.shr_u - (local.get $6) - (local.get $3) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $5 - (i32.sub - (i32.and - (i32.load offset=4 - (local.tee $1 - (i32.load offset=480 - (i32.shl - (i32.add - (i32.or - (local.tee $5 - (i32.and - (i32.shr_u - (local.tee $8 - (i32.shr_u - (local.get $8) - (local.get $6) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (i32.or - (local.get $6) - (i32.or - (local.get $3) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - ) - (i32.shr_u - (local.get $8) - (local.get $5) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const -8) - ) - (local.get $4) - ) - ) - (local.set $0 - (local.get $1) - ) - (loop $while-in - (block $while-out - (if - (local.tee $3 - (i32.load offset=16 - (local.get $1) - ) - ) - (local.set $1 - (local.get $3) - ) - (if - (i32.eqz - (local.tee $1 - (i32.load offset=20 - (local.get $1) - ) - ) - ) - (block - (local.set $8 - (local.get $0) - ) - (br $while-out) - ) - ) - ) - (local.set $3 - (i32.lt_u - (local.tee $6 - (i32.sub - (i32.and - (i32.load offset=4 - (local.get $1) - ) - (i32.const -8) - ) - (local.get $4) - ) - ) - (local.get $5) - ) - ) - (local.set $5 - (select - (local.get $6) - (local.get $5) - (local.get $3) - ) - ) - (local.set $0 - (select - (local.get $1) - (local.get $0) - (local.get $3) - ) - ) - (br $while-in) - ) - ) - (if - (i32.lt_u - (local.get $8) - (local.tee $18 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (if - (i32.ge_u - (local.get $8) - (local.tee $14 - (i32.add - (local.get $4) - (local.get $8) - ) - ) - ) - (call $_abort) - ) - (local.set $10 - (i32.load offset=24 - (local.get $8) - ) - ) - (if - (i32.eq - (local.get $8) - (local.tee $0 - (i32.load offset=12 - (local.get $8) - ) - ) - ) - (block $do-once4 - (if - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $8) - (i32.const 20) - ) - ) - ) - ) - ) - (br_if $do-once4 - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $8) - (i32.const 16) - ) - ) - ) - ) - ) - ) - ) - (loop $while-in7 - (if - (local.tee $6 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $6) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in7) - ) - ) - (if - (local.tee $6 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $6) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in7) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $18) - ) - (call $_abort) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $2 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $8) - ) - ) - (local.get $18) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $8) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $8) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $10) - (block $do-once8 - (if - (i32.eq - (i32.load offset=480 - (local.tee $1 - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $8) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $8) - ) - (block - (i32.store offset=480 - (local.get $1) - (local.get $2) - ) - (if - (i32.eqz - (local.get $2) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $do-once8) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $10) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $8) - (i32.load offset=16 - (local.get $10) - ) - ) - (i32.store offset=16 - (local.get $10) - (local.get $2) - ) - (i32.store offset=20 - (local.get $10) - (local.get $2) - ) - ) - (br_if $do-once8 - (i32.eqz - (local.get $2) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $2) - (local.tee $1 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $2) - (local.get $10) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $8) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $2) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $2) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $8) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $2) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $2) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $5) - (i32.const 16) - ) - (block - (i32.store offset=4 - (local.get $8) - (i32.or - (local.tee $0 - (i32.add - (local.get $4) - (local.get $5) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $8) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - ) - (block - (i32.store offset=4 - (local.get $8) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.get $14) - (i32.or - (local.get $5) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $5) - (local.get $14) - ) - (local.get $5) - ) - (if - (local.tee $0 - (i32.load - (i32.const 184) - ) - ) - (block - (local.set $3 - (i32.load - (i32.const 196) - ) - ) - (local.set $0 - (i32.add - (i32.shl - (local.tee $1 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 176) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $19 - (local.get $1) - ) - (local.set $7 - (local.get $4) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $19 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $7 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $19) - (local.get $3) - ) - (i32.store offset=12 - (local.get $7) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $7) - ) - (i32.store offset=12 - (local.get $3) - (local.get $0) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $5) - ) - (i32.store - (i32.const 196) - (local.get $14) - ) - ) - ) - (return - (i32.add - (local.get $8) - (i32.const 8) - ) - ) - ) - ) - ) - ) - ) - (local.set $4 - (if (result i32) - (i32.le_u - (local.get $0) - (i32.const -65) - ) - (block $do-once (result i32) - (local.set $5 - (i32.and - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 11) - ) - ) - (i32.const -8) - ) - ) - (if (result i32) - (local.tee $39 - (i32.load - (i32.const 180) - ) - ) - (block (result i32) - (local.set $19 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $0) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $5) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $8 - (i32.shl - (local.get $0) - (local.tee $2 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $5) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $7 - (i32.and - (i32.shr_u - (i32.add - (local.tee $8 - (i32.shl - (local.get $8) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $2) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $8) - (local.get $7) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (local.set $2 - (i32.sub - (i32.const 0) - (local.get $5) - ) - ) - (if - (local.tee $7 - (i32.load offset=480 - (i32.shl - (local.get $19) - (i32.const 2) - ) - ) - ) - (block $label$break$L123 - (local.set $0 - (i32.shl - (local.get $5) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $19) - (i32.const 1) - ) - ) - (i32.eq - (local.get $19) - (i32.const 31) - ) - ) - ) - ) - (local.set $8 - (i32.const 0) - ) - (local.set $18 - (loop $while-in14 (result i32) - (if - (i32.lt_u - (local.tee $13 - (i32.sub - (local.tee $9 - (i32.and - (i32.load offset=4 - (local.get $7) - ) - (i32.const -8) - ) - ) - (local.get $5) - ) - ) - (local.get $2) - ) - (local.set $2 - (if (result i32) - (i32.eq - (local.get $5) - (local.get $9) - ) - (block - (local.set $4 - (local.get $13) - ) - (local.set $20 - (local.get $7) - ) - (local.set $6 - (local.get $7) - ) - (local.set $9 - (i32.const 90) - ) - (br $label$break$L123) - ) - (block (result i32) - (local.set $8 - (local.get $7) - ) - (local.get $13) - ) - ) - ) - ) - (local.set $13 - (select - (local.get $25) - (local.tee $13 - (i32.load offset=20 - (local.get $7) - ) - ) - (i32.or - (i32.eqz - (local.get $13) - ) - (i32.eq - (local.tee $7 - (i32.load - (i32.add - (i32.add - (local.get $7) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $0) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - (local.get $13) - ) - ) - ) - ) - (if (result i32) - (local.tee $9 - (i32.eqz - (local.get $7) - ) - ) - (block (result i32) - (local.set $21 - (local.get $13) - ) - (local.set $26 - (local.get $8) - ) - (local.set $9 - (i32.const 86) - ) - (local.get $2) - ) - (block - (local.set $25 - (local.get $13) - ) - (local.set $0 - (i32.shl - (local.get $0) - (i32.xor - (local.get $9) - (i32.const 1) - ) - ) - ) - (br $while-in14) - ) - ) - ) - ) - ) - (block - (local.set $18 - (local.get $2) - ) - (local.set $9 - (i32.const 86) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 86) - ) - (block - (if - (i32.eqz - (i32.or - (local.get $21) - (local.get $26) - ) - ) - (block - (drop - (br_if $do-once - (local.get $5) - (i32.eqz - (local.tee $0 - (i32.and - (i32.or - (i32.sub - (i32.const 0) - (local.tee $0 - (i32.shl - (i32.const 2) - (local.get $19) - ) - ) - ) - (local.get $0) - ) - (local.get $39) - ) - ) - ) - ) - ) - (local.set $0 - (i32.and - (i32.shr_u - (local.tee $2 - (i32.add - (i32.and - (i32.sub - (i32.const 0) - (local.get $0) - ) - (local.get $0) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $2 - (i32.and - (i32.shr_u - (local.tee $8 - (i32.shr_u - (local.get $2) - (local.get $0) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $8 - (i32.and - (i32.shr_u - (local.tee $7 - (i32.shr_u - (local.get $8) - (local.get $2) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $7 - (i32.and - (i32.shr_u - (local.tee $13 - (i32.shr_u - (local.get $7) - (local.get $8) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $21 - (i32.load offset=480 - (i32.shl - (i32.add - (i32.or - (local.tee $21 - (i32.and - (i32.shr_u - (local.tee $13 - (i32.shr_u - (local.get $13) - (local.get $7) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (i32.or - (local.get $7) - (i32.or - (local.get $8) - (i32.or - (local.get $0) - (local.get $2) - ) - ) - ) - ) - (i32.shr_u - (local.get $13) - (local.get $21) - ) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (if - (local.get $21) - (block - (local.set $4 - (local.get $18) - ) - (local.set $20 - (local.get $21) - ) - (local.set $6 - (local.get $26) - ) - (local.set $9 - (i32.const 90) - ) - ) - (block - (local.set $11 - (local.get $18) - ) - (local.set $12 - (local.get $26) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 90) - ) - (local.set $11 - (loop $while-in16 (result i32) - (local.set $9 - (i32.const 0) - ) - (local.set $0 - (i32.lt_u - (local.tee $2 - (i32.sub - (i32.and - (i32.load offset=4 - (local.get $20) - ) - (i32.const -8) - ) - (local.get $5) - ) - ) - (local.get $4) - ) - ) - (local.set $4 - (select - (local.get $2) - (local.get $4) - (local.get $0) - ) - ) - (local.set $6 - (select - (local.get $20) - (local.get $6) - (local.get $0) - ) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $20) - ) - ) - (block - (local.set $20 - (local.get $0) - ) - (br $while-in16) - ) - ) - (br_if $while-in16 - (local.tee $20 - (i32.load offset=20 - (local.get $20) - ) - ) - ) - (local.set $12 - (local.get $6) - ) - (local.get $4) - ) - ) - ) - (if (result i32) - (if (result i32) - (local.get $12) - (i32.lt_u - (local.get $11) - (i32.sub - (i32.load - (i32.const 184) - ) - (local.get $5) - ) - ) - (i32.const 0) - ) - (block - (if - (i32.lt_u - (local.get $12) - (local.tee $8 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (if - (i32.ge_u - (local.get $12) - (local.tee $2 - (i32.add - (local.get $5) - (local.get $12) - ) - ) - ) - (call $_abort) - ) - (local.set $6 - (i32.load offset=24 - (local.get $12) - ) - ) - (if - (i32.eq - (local.get $12) - (local.tee $0 - (i32.load offset=12 - (local.get $12) - ) - ) - ) - (block $do-once17 - (if - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $12) - (i32.const 20) - ) - ) - ) - ) - ) - (br_if $do-once17 - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $12) - (i32.const 16) - ) - ) - ) - ) - ) - ) - ) - (loop $while-in20 - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in20) - ) - ) - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in20) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $8) - ) - (call $_abort) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $15 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $12) - ) - ) - (local.get $8) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $12) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $12) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $15 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $6) - (block $do-once21 - (if - (i32.eq - (i32.load offset=480 - (local.tee $1 - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $12) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $12) - ) - (block - (i32.store offset=480 - (local.get $1) - (local.get $15) - ) - (if - (i32.eqz - (local.get $15) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $do-once21) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $6) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $12) - (i32.load offset=16 - (local.get $6) - ) - ) - (i32.store offset=16 - (local.get $6) - (local.get $15) - ) - (i32.store offset=20 - (local.get $6) - (local.get $15) - ) - ) - (br_if $do-once21 - (i32.eqz - (local.get $15) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $15) - (local.tee $1 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $15) - (local.get $6) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $12) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $15) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $15) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $12) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $15) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $15) - ) - ) - ) - ) - ) - ) - (if - (i32.ge_u - (local.get $11) - (i32.const 16) - ) - (block $do-once25 - (i32.store offset=4 - (local.get $12) - (i32.or - (local.get $5) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $11) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $2) - (local.get $11) - ) - (local.get $11) - ) - (local.set $1 - (i32.shr_u - (local.get $11) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $11) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 176) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $17 - (local.get $1) - ) - (local.set $27 - (local.get $4) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $17 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $27 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $17) - (local.get $2) - ) - (i32.store offset=12 - (local.get $27) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $27) - ) - (i32.store offset=12 - (local.get $2) - (local.get $0) - ) - (br $do-once25) - ) - ) - (local.set $1 - (i32.add - (local.tee $0 - (i32.shl - (local.tee $6 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $11) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $11) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $11) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $3 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $4) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $4) - (local.get $3) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $2) - (local.get $6) - ) - (i32.store offset=20 - (local.get $2) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $2) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $4 - (i32.load - (i32.const 180) - ) - ) - (local.tee $3 - (i32.shl - (i32.const 1) - (local.get $6) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $3) - (local.get $4) - ) - ) - (i32.store offset=480 - (local.get $0) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $1) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - (br $do-once25) - ) - ) - (local.set $3 - (i32.shl - (local.get $11) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $6) - (i32.const 1) - ) - ) - (i32.eq - (local.get $6) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load offset=480 - (local.get $0) - ) - ) - (loop $while-in28 - (block $while-out27 - (if - (i32.eq - (local.get $11) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $22 - (local.get $0) - ) - (local.set $9 - (i32.const 148) - ) - (br $while-out27) - ) - ) - (local.set $31 - (if (result i32) - (local.tee $1 - (i32.load - (local.tee $4 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $3) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $3 - (i32.shl - (local.get $3) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in28) - ) - (block (result i32) - (local.set $40 - (local.get $0) - ) - (local.set $9 - (i32.const 145) - ) - (local.get $4) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 145) - ) - (if - (i32.lt_u - (local.get $31) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $31) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $40) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 148) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $22) - ) - ) - ) - (local.tee $4 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $4) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $2) - ) - (i32.store offset=8 - (local.get $0) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $1) - ) - (i32.store offset=12 - (local.get $2) - (local.get $22) - ) - (i32.store offset=24 - (local.get $2) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (block - (i32.store offset=4 - (local.get $12) - (i32.or - (local.tee $0 - (i32.add - (local.get $5) - (local.get $11) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $12) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - ) - ) - (return - (i32.add - (local.get $12) - (i32.const 8) - ) - ) - ) - (local.get $5) - ) - ) - (local.get $5) - ) - ) - (i32.const -1) - ) - ) - ) - (if - (i32.ge_u - (local.tee $6 - (i32.load - (i32.const 184) - ) - ) - (local.get $4) - ) - (block - (local.set $0 - (i32.load - (i32.const 196) - ) - ) - (if - (i32.gt_u - (local.tee $1 - (i32.sub - (local.get $6) - (local.get $4) - ) - ) - (i32.const 15) - ) - (block - (i32.store - (i32.const 196) - (local.tee $3 - (i32.add - (local.get $0) - (local.get $4) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $1) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $1) - (local.get $3) - ) - (local.get $1) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - ) - (block - (i32.store - (i32.const 184) - (i32.const 0) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $6) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $1 - (i32.add - (local.get $0) - (local.get $6) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $1) - ) - (i32.const 1) - ) - ) - ) - ) - (return - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (block $folding-inner0 - (br_if $folding-inner0 - (i32.gt_u - (local.tee $0 - (i32.load - (i32.const 188) - ) - ) - (local.get $4) - ) - ) - (if - (i32.eqz - (i32.load - (i32.const 648) - ) - ) - (if - (i32.and - (local.tee $0 - (call $_sysconf - (i32.const 30) - ) - ) - (i32.add - (local.get $0) - (i32.const -1) - ) - ) - (call $_abort) - (block - (i32.store - (i32.const 656) - (local.get $0) - ) - (i32.store - (i32.const 652) - (local.get $0) - ) - (i32.store - (i32.const 660) - (i32.const -1) - ) - (i32.store - (i32.const 664) - (i32.const -1) - ) - (i32.store - (i32.const 668) - (i32.const 0) - ) - (i32.store - (i32.const 620) - (i32.const 0) - ) - (i32.store - (i32.const 648) - (i32.xor - (i32.and - (call $_time - (i32.const 0) - ) - (i32.const -16) - ) - (i32.const 1431655768) - ) - ) - ) - ) - ) - (local.set $22 - (i32.add - (local.get $4) - (i32.const 48) - ) - ) - (if - (i32.le_u - (local.tee $11 - (i32.and - (local.tee $2 - (i32.add - (local.tee $0 - (i32.load - (i32.const 656) - ) - ) - (local.tee $8 - (i32.add - (local.get $4) - (i32.const 47) - ) - ) - ) - ) - (local.tee $0 - (i32.sub - (i32.const 0) - (local.get $0) - ) - ) - ) - ) - (local.get $4) - ) - (return - (i32.const 0) - ) - ) - (if - (if (result i32) - (local.tee $6 - (i32.load - (i32.const 616) - ) - ) - (i32.or - (i32.le_u - (local.tee $18 - (i32.add - (local.get $11) - (local.tee $7 - (i32.load - (i32.const 608) - ) - ) - ) - ) - (local.get $7) - ) - (i32.gt_u - (local.get $18) - (local.get $6) - ) - ) - (i32.const 0) - ) - (return - (i32.const 0) - ) - ) - (if - (if (result i32) - (if (result i32) - (select - (i32.lt_u - (local.get $11) - (i32.const 2147483647) - ) - (i32.const 0) - (i32.eq - (local.tee $9 - (if (result i32) - (i32.and - (i32.load - (i32.const 620) - ) - (i32.const 4) - ) - (i32.const 190) - (block $label$break$L257 (result i32) - (if - (local.tee $6 - (i32.load - (i32.const 200) - ) - ) - (block $label$break$L259 - (local.set $17 - (i32.const 624) - ) - (loop $while-in34 - (if - (i32.eqz - (if (result i32) - (i32.le_u - (local.tee $7 - (i32.load - (local.get $17) - ) - ) - (local.get $6) - ) - (i32.gt_u - (i32.add - (i32.load - (local.tee $15 - (i32.add - (local.get $17) - (i32.const 4) - ) - ) - ) - (local.get $7) - ) - (local.get $6) - ) - (i32.const 0) - ) - ) - (block - (br_if $while-in34 - (local.tee $17 - (i32.load offset=8 - (local.get $17) - ) - ) - ) - (local.set $9 - (i32.const 173) - ) - (br $label$break$L259) - ) - ) - ) - (if - (i32.lt_u - (local.tee $2 - (i32.and - (local.get $0) - (i32.sub - (local.get $2) - (i32.load - (i32.const 188) - ) - ) - ) - ) - (i32.const 2147483647) - ) - (block - (local.set $0 - (call $_sbrk - (local.get $2) - ) - ) - (if - (i32.eq - (i32.add - (i32.load - (local.get $17) - ) - (i32.load - (local.get $15) - ) - ) - (local.get $0) - ) - (if - (i32.ne - (local.get $0) - (i32.const -1) - ) - (block - (local.set $3 - (local.get $0) - ) - (local.set $10 - (local.get $2) - ) - (br $label$break$L257 - (i32.const 193) - ) - ) - ) - (block - (local.set $14 - (local.get $0) - ) - (local.set $23 - (local.get $2) - ) - (local.set $9 - (i32.const 183) - ) - ) - ) - ) - ) - ) - (local.set $9 - (i32.const 173) - ) - ) - (if - (if (result i32) - (i32.eq - (local.get $9) - (i32.const 173) - ) - (i32.ne - (local.tee $6 - (call $_sbrk - (i32.const 0) - ) - ) - (i32.const -1) - ) - (i32.const 0) - ) - (block $do-once35 - (local.set $5 - (i32.add - (local.tee $0 - (if (result i32) - (i32.and - (local.tee $0 - (local.get $6) - ) - (local.tee $5 - (i32.add - (local.tee $2 - (i32.load - (i32.const 652) - ) - ) - (i32.const -1) - ) - ) - ) - (i32.add - (i32.sub - (local.get $11) - (local.get $0) - ) - (i32.and - (i32.add - (local.get $0) - (local.get $5) - ) - (i32.sub - (i32.const 0) - (local.get $2) - ) - ) - ) - (local.get $11) - ) - ) - (local.tee $2 - (i32.load - (i32.const 608) - ) - ) - ) - ) - (if - (i32.and - (i32.lt_u - (local.get $0) - (i32.const 2147483647) - ) - (i32.gt_u - (local.get $0) - (local.get $4) - ) - ) - (block - (br_if $do-once35 - (select - (i32.or - (i32.le_u - (local.get $5) - (local.get $2) - ) - (i32.gt_u - (local.get $5) - (local.tee $2 - (i32.load - (i32.const 616) - ) - ) - ) - ) - (i32.const 0) - (local.get $2) - ) - ) - (local.set $14 - (if (result i32) - (i32.eq - (local.get $6) - (local.tee $2 - (call $_sbrk - (local.get $0) - ) - ) - ) - (block - (local.set $3 - (local.get $6) - ) - (local.set $10 - (local.get $0) - ) - (br $label$break$L257 - (i32.const 193) - ) - ) - (block (result i32) - (local.set $23 - (local.get $0) - ) - (local.set $9 - (i32.const 183) - ) - (local.get $2) - ) - ) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 183) - ) - (block $label$break$L279 - (local.set $0 - (i32.sub - (i32.const 0) - (local.get $23) - ) - ) - (local.set $1 - (if (result i32) - (if (result i32) - (i32.and - (i32.and - (i32.ne - (local.get $14) - (i32.const -1) - ) - (i32.lt_u - (local.get $23) - (i32.const 2147483647) - ) - ) - (i32.gt_u - (local.get $22) - (local.get $23) - ) - ) - (i32.lt_u - (local.tee $5 - (i32.and - (i32.add - (local.tee $6 - (i32.load - (i32.const 656) - ) - ) - (i32.sub - (local.get $8) - (local.get $23) - ) - ) - (i32.sub - (i32.const 0) - (local.get $6) - ) - ) - ) - (i32.const 2147483647) - ) - (i32.const 0) - ) - (if (result i32) - (i32.eq - (call $_sbrk - (local.get $5) - ) - (i32.const -1) - ) - (block - (drop - (call $_sbrk - (local.get $0) - ) - ) - (br $label$break$L279) - ) - (i32.add - (local.get $5) - (local.get $23) - ) - ) - (local.get $23) - ) - ) - (if - (i32.ne - (local.get $14) - (i32.const -1) - ) - (block - (local.set $3 - (local.get $14) - ) - (local.set $10 - (local.get $1) - ) - (br $label$break$L257 - (i32.const 193) - ) - ) - ) - ) - ) - (i32.store - (i32.const 620) - (i32.or - (i32.load - (i32.const 620) - ) - (i32.const 4) - ) - ) - (i32.const 190) - ) - ) - ) - (i32.const 190) - ) - ) - (i32.and - (i32.and - (i32.ne - (local.tee $1 - (call $_sbrk - (local.get $11) - ) - ) - (i32.const -1) - ) - (i32.ne - (local.tee $11 - (call $_sbrk - (i32.const 0) - ) - ) - (i32.const -1) - ) - ) - (i32.lt_u - (local.get $1) - (local.get $11) - ) - ) - (i32.const 0) - ) - (i32.gt_u - (local.tee $14 - (i32.sub - (local.get $11) - (local.get $1) - ) - ) - (i32.add - (local.get $4) - (i32.const 40) - ) - ) - (i32.const 0) - ) - (block - (local.set $10 - (local.get $14) - ) - (local.set $9 - (i32.const 193) - ) - (local.set $3 - (local.get $1) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 193) - ) - (block - (i32.store - (i32.const 608) - (local.tee $0 - (i32.add - (local.get $10) - (i32.load - (i32.const 608) - ) - ) - ) - ) - (if - (i32.gt_u - (local.get $0) - (i32.load - (i32.const 612) - ) - ) - (i32.store - (i32.const 612) - (local.get $0) - ) - ) - (if - (local.tee $7 - (i32.load - (i32.const 200) - ) - ) - (block $do-once40 - (local.set $1 - (i32.const 624) - ) - (loop $do-in - (block $do-out - (if - (i32.eq - (i32.add - (local.tee $0 - (i32.load - (local.get $1) - ) - ) - (local.tee $2 - (i32.load - (local.tee $6 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - ) - ) - ) - (local.get $3) - ) - (block - (local.set $41 - (local.get $0) - ) - (local.set $42 - (local.get $6) - ) - (local.set $43 - (local.get $2) - ) - (local.set $44 - (local.get $1) - ) - (local.set $9 - (i32.const 203) - ) - (br $do-out) - ) - ) - (br_if $do-in - (local.tee $1 - (i32.load offset=8 - (local.get $1) - ) - ) - ) - ) - ) - (if - (if (result i32) - (if (result i32) - (i32.eq - (local.get $9) - (i32.const 203) - ) - (i32.eqz - (i32.and - (i32.load offset=12 - (local.get $44) - ) - (i32.const 8) - ) - ) - (i32.const 0) - ) - (i32.and - (i32.lt_u - (local.get $7) - (local.get $3) - ) - (i32.ge_u - (local.get $7) - (local.get $41) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (local.get $42) - (i32.add - (local.get $10) - (local.get $43) - ) - ) - (local.set $0 - (i32.add - (local.get $7) - (local.tee $1 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $0 - (i32.add - (local.get $7) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $0) - (i32.const 7) - ) - ) - ) - ) - ) - (local.set $1 - (i32.add - (i32.load - (i32.const 188) - ) - (i32.sub - (local.get $10) - (local.get $1) - ) - ) - ) - (i32.store - (i32.const 200) - (local.get $0) - ) - (i32.store - (i32.const 188) - (local.get $1) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $0) - (local.get $1) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - (br $do-once40) - ) - ) - (if - (i32.lt_u - (local.get $3) - (local.tee $6 - (i32.load - (i32.const 192) - ) - ) - ) - (block - (i32.store - (i32.const 192) - (local.get $3) - ) - (local.set $6 - (local.get $3) - ) - ) - ) - (local.set $0 - (i32.add - (local.get $3) - (local.get $10) - ) - ) - (local.set $1 - (i32.const 624) - ) - (loop $while-in43 - (block $while-out42 - (if - (i32.eq - (local.get $0) - (i32.load - (local.get $1) - ) - ) - (block - (local.set $45 - (local.get $1) - ) - (local.set $28 - (local.get $1) - ) - (local.set $9 - (i32.const 211) - ) - (br $while-out42) - ) - ) - (br_if $while-in43 - (local.tee $1 - (i32.load offset=8 - (local.get $1) - ) - ) - ) - (local.set $24 - (i32.const 624) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 211) - ) - (local.set $24 - (if (result i32) - (i32.and - (i32.load offset=12 - (local.get $28) - ) - (i32.const 8) - ) - (i32.const 624) - (block - (i32.store - (local.get $45) - (local.get $3) - ) - (i32.store offset=4 - (local.get $28) - (i32.add - (local.get $10) - (i32.load offset=4 - (local.get $28) - ) - ) - ) - (local.set $5 - (i32.add - (local.get $4) - (local.tee $14 - (i32.add - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - (local.get $3) - ) - ) - ) - ) - (local.set $8 - (i32.sub - (i32.sub - (local.tee $2 - (i32.add - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - (local.get $0) - ) - ) - (local.get $14) - ) - (local.get $4) - ) - ) - (i32.store offset=4 - (local.get $14) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - (if - (i32.ne - (local.get $2) - (local.get $7) - ) - (block $do-once44 - (if - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $2) - ) - (block - (i32.store - (i32.const 184) - (local.tee $0 - (i32.add - (local.get $8) - (i32.load - (i32.const 184) - ) - ) - ) - ) - (i32.store - (i32.const 196) - (local.get $5) - ) - (i32.store offset=4 - (local.get $5) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $5) - ) - (local.get $0) - ) - (br $do-once44) - ) - ) - (local.set $4 - (if (result i32) - (i32.eq - (i32.and - (local.tee $0 - (i32.load offset=4 - (local.get $2) - ) - ) - (i32.const 3) - ) - (i32.const 1) - ) - (block (result i32) - (local.set $7 - (i32.and - (local.get $0) - (i32.const -8) - ) - ) - (local.set $3 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (block $label$break$L331 - (if - (i32.ge_u - (local.get $0) - (i32.const 256) - ) - (block - (local.set $10 - (i32.load offset=24 - (local.get $2) - ) - ) - (if - (i32.eq - (local.get $2) - (local.tee $0 - (i32.load offset=12 - (local.get $2) - ) - ) - ) - (block $do-once47 - (if - (local.tee $0 - (i32.load - (local.tee $4 - (i32.add - (local.tee $1 - (i32.add - (local.get $2) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - (local.set $1 - (local.get $4) - ) - (br_if $do-once47 - (i32.eqz - (local.tee $0 - (i32.load - (local.get $1) - ) - ) - ) - ) - ) - (loop $while-in50 - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in50) - ) - ) - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in50) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $6) - ) - (call $_abort) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $16 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $2) - ) - ) - (local.get $6) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $2) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $2) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $16 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (br_if $label$break$L331 - (i32.eqz - (local.get $10) - ) - ) - (if - (i32.ne - (i32.load offset=480 - (local.tee $1 - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $2) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $2) - ) - (block - (if - (i32.lt_u - (local.get $10) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $2) - (i32.load offset=16 - (local.get $10) - ) - ) - (i32.store offset=16 - (local.get $10) - (local.get $16) - ) - (i32.store offset=20 - (local.get $10) - (local.get $16) - ) - ) - (br_if $label$break$L331 - (i32.eqz - (local.get $16) - ) - ) - ) - (block $do-once51 - (i32.store offset=480 - (local.get $1) - (local.get $16) - ) - (br_if $do-once51 - (local.get $16) - ) - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$L331) - ) - ) - (if - (i32.lt_u - (local.get $16) - (local.tee $1 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $16) - (local.get $10) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $2) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $16) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $16) - ) - ) - ) - ) - (br_if $label$break$L331 - (i32.eqz - (local.tee $0 - (i32.load offset=20 - (local.get $2) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $16) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $16) - ) - ) - ) - ) - (block - (local.set $1 - (i32.load offset=12 - (local.get $2) - ) - ) - (if - (i32.ne - (local.tee $4 - (i32.load offset=8 - (local.get $2) - ) - ) - (local.tee $0 - (i32.add - (i32.shl - (local.get $3) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - (block $do-once55 - (if - (i32.lt_u - (local.get $4) - (local.get $6) - ) - (call $_abort) - ) - (br_if $do-once55 - (i32.eq - (local.get $2) - (i32.load offset=12 - (local.get $4) - ) - ) - ) - (call $_abort) - ) - ) - (if - (i32.eq - (local.get $1) - (local.get $4) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $3) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$L331) - ) - ) - (if - (i32.eq - (local.get $0) - (local.get $1) - ) - (local.set $32 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (block $do-once57 - (if - (i32.lt_u - (local.get $1) - (local.get $6) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $2) - (i32.load - (local.tee $0 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - ) - (block - (local.set $32 - (local.get $0) - ) - (br $do-once57) - ) - ) - (call $_abort) - ) - ) - (i32.store offset=12 - (local.get $4) - (local.get $1) - ) - (i32.store - (local.get $32) - (local.get $4) - ) - ) - ) - ) - (local.set $2 - (i32.add - (local.get $2) - (local.get $7) - ) - ) - (i32.add - (local.get $7) - (local.get $8) - ) - ) - (local.get $8) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.and - (i32.load offset=4 - (local.get $2) - ) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $5) - (i32.or - (local.get $4) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $4) - (local.get $5) - ) - (local.get $4) - ) - (local.set $1 - (i32.shr_u - (local.get $4) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $4) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 176) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (block $do-once59 - (if - (i32.ge_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (block - (local.set $33 - (local.get $1) - ) - (local.set $29 - (local.get $4) - ) - (br $do-once59) - ) - ) - (call $_abort) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $33 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $29 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $33) - (local.get $5) - ) - (i32.store offset=12 - (local.get $29) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $29) - ) - (i32.store offset=12 - (local.get $5) - (local.get $0) - ) - (br $do-once44) - ) - ) - (local.set $3 - (i32.add - (local.tee $1 - (i32.shl - (local.tee $0 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $4) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $4) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $4) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $6 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $3) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $3) - (local.get $6) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $5) - (local.get $0) - ) - (i32.store offset=20 - (local.get $5) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $5) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $6 - (i32.load - (i32.const 180) - ) - ) - (local.tee $2 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $2) - (local.get $6) - ) - ) - (i32.store offset=480 - (local.get $1) - (local.get $5) - ) - (i32.store offset=24 - (local.get $5) - (local.get $3) - ) - (i32.store offset=12 - (local.get $5) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $5) - ) - (br $do-once44) - ) - ) - (local.set $17 - (i32.shl - (local.get $4) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $0) - (i32.const 1) - ) - ) - (i32.eq - (local.get $0) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load offset=480 - (local.get $1) - ) - ) - (loop $while-in64 - (block $while-out63 - (if - (i32.eq - (local.get $4) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $34 - (local.get $0) - ) - (local.set $9 - (i32.const 281) - ) - (br $while-out63) - ) - ) - (local.set $35 - (if (result i32) - (local.tee $1 - (i32.load - (local.tee $3 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $17) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $17 - (i32.shl - (local.get $17) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in64) - ) - (block (result i32) - (local.set $46 - (local.get $0) - ) - (local.set $9 - (i32.const 278) - ) - (local.get $3) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 278) - ) - (if - (i32.lt_u - (local.get $35) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $35) - (local.get $5) - ) - (i32.store offset=24 - (local.get $5) - (local.get $46) - ) - (i32.store offset=12 - (local.get $5) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $5) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 281) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $34) - ) - ) - ) - (local.tee $4 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $4) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $5) - ) - (i32.store offset=8 - (local.get $0) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $1) - ) - (i32.store offset=12 - (local.get $5) - (local.get $34) - ) - (i32.store offset=24 - (local.get $5) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (block - (i32.store - (i32.const 188) - (local.tee $0 - (i32.add - (local.get $8) - (i32.load - (i32.const 188) - ) - ) - ) - ) - (i32.store - (i32.const 200) - (local.get $5) - ) - (i32.store offset=4 - (local.get $5) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (return - (i32.add - (local.get $14) - (i32.const 8) - ) - ) - ) - ) - ) - ) - (loop $while-in66 - (if - (i32.eqz - (if (result i32) - (i32.le_u - (local.tee $0 - (i32.load - (local.get $24) - ) - ) - (local.get $7) - ) - (i32.gt_u - (local.tee $22 - (i32.add - (i32.load offset=4 - (local.get $24) - ) - (local.get $0) - ) - ) - (local.get $7) - ) - (i32.const 0) - ) - ) - (block - (local.set $24 - (i32.load offset=8 - (local.get $24) - ) - ) - (br $while-in66) - ) - ) - ) - (i32.store - (i32.const 200) - (local.tee $0 - (i32.add - (local.get $3) - (local.tee $1 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $0 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $0) - (i32.const 7) - ) - ) - ) - ) - ) - ) - (i32.store - (i32.const 188) - (local.tee $1 - (i32.sub - (i32.add - (local.get $10) - (i32.const -40) - ) - (local.get $1) - ) - ) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $0) - (local.get $1) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - (i32.store offset=4 - (local.tee $0 - (select - (local.get $7) - (local.tee $0 - (i32.add - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.tee $0 - (i32.add - (local.get $22) - (i32.const -47) - ) - ) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - (local.get $0) - ) - ) - (i32.lt_u - (local.get $0) - (local.tee $2 - (i32.add - (local.get $7) - (i32.const 16) - ) - ) - ) - ) - ) - (i32.const 27) - ) - (i32.store offset=8 - (local.get $0) - (i32.load - (i32.const 624) - ) - ) - (i32.store offset=12 - (local.get $0) - (i32.load - (i32.const 628) - ) - ) - (i32.store offset=16 - (local.get $0) - (i32.load - (i32.const 632) - ) - ) - (i32.store offset=20 - (local.get $0) - (i32.load - (i32.const 636) - ) - ) - (i32.store - (i32.const 624) - (local.get $3) - ) - (i32.store - (i32.const 628) - (local.get $10) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (i32.store - (i32.const 632) - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $1 - (i32.add - (local.get $0) - (i32.const 24) - ) - ) - (loop $do-in68 - (i32.store - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.const 7) - ) - (br_if $do-in68 - (i32.lt_u - (i32.add - (local.get $1) - (i32.const 4) - ) - (local.get $22) - ) - ) - ) - (if - (i32.ne - (local.get $0) - (local.get $7) - ) - (block - (i32.store offset=4 - (local.get $0) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $7) - (i32.or - (local.tee $6 - (i32.sub - (local.get $0) - (local.get $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (local.get $0) - (local.get $6) - ) - (local.set $1 - (i32.shr_u - (local.get $6) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $6) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $3 - (i32.load - (i32.const 176) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $3 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $36 - (local.get $1) - ) - (local.set $30 - (local.get $3) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $1) - (local.get $3) - ) - ) - (local.set $36 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $30 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $36) - (local.get $7) - ) - (i32.store offset=12 - (local.get $30) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $30) - ) - (i32.store offset=12 - (local.get $7) - (local.get $0) - ) - (br $do-once40) - ) - ) - (local.set $3 - (i32.add - (local.tee $1 - (i32.shl - (local.tee $0 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $6) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $6) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $6) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $8 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $3) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $3) - (local.get $8) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $7) - (local.get $0) - ) - (i32.store offset=20 - (local.get $7) - (i32.const 0) - ) - (i32.store - (local.get $2) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $2 - (i32.load - (i32.const 180) - ) - ) - (local.tee $8 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $2) - (local.get $8) - ) - ) - (i32.store offset=480 - (local.get $1) - (local.get $7) - ) - (i32.store offset=24 - (local.get $7) - (local.get $3) - ) - (i32.store offset=12 - (local.get $7) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $7) - ) - (br $do-once40) - ) - ) - (local.set $5 - (i32.shl - (local.get $6) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $0) - (i32.const 1) - ) - ) - (i32.eq - (local.get $0) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load offset=480 - (local.get $1) - ) - ) - (loop $while-in70 - (block $while-out69 - (if - (i32.eq - (local.get $6) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $37 - (local.get $0) - ) - (local.set $9 - (i32.const 307) - ) - (br $while-out69) - ) - ) - (local.set $38 - (if (result i32) - (local.tee $1 - (i32.load - (local.tee $3 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $5) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $5 - (i32.shl - (local.get $5) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in70) - ) - (block (result i32) - (local.set $47 - (local.get $0) - ) - (local.set $9 - (i32.const 304) - ) - (local.get $3) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 304) - ) - (if - (i32.lt_u - (local.get $38) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $38) - (local.get $7) - ) - (i32.store offset=24 - (local.get $7) - (local.get $47) - ) - (i32.store offset=12 - (local.get $7) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $7) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 307) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $37) - ) - ) - ) - (local.tee $3 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $3) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $7) - ) - (i32.store offset=8 - (local.get $0) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $1) - ) - (i32.store offset=12 - (local.get $7) - (local.get $37) - ) - (i32.store offset=24 - (local.get $7) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - ) - ) - (block - (if - (i32.or - (i32.eqz - (local.tee $0 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.lt_u - (local.get $3) - (local.get $0) - ) - ) - (i32.store - (i32.const 192) - (local.get $3) - ) - ) - (i32.store - (i32.const 624) - (local.get $3) - ) - (i32.store - (i32.const 628) - (local.get $10) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (i32.store - (i32.const 212) - (i32.load - (i32.const 648) - ) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - (local.set $5 - (i32.const 0) - ) - (loop $do-in72 - (local.set $1 - (i32.add - (local.tee $0 - (i32.shl - (local.get $5) - (i32.const 3) - ) - ) - (i32.const 216) - ) - ) - (i32.store offset=228 - (local.get $0) - (local.get $1) - ) - (i32.store offset=224 - (local.get $0) - (local.get $1) - ) - (br_if $do-in72 - (i32.ne - (local.tee $5 - (i32.add - (local.get $5) - (i32.const 1) - ) - ) - (i32.const 32) - ) - ) - ) - (i32.store - (i32.const 200) - (local.tee $0 - (i32.add - (local.get $3) - (local.tee $1 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $0 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $0) - (i32.const 7) - ) - ) - ) - ) - ) - ) - (i32.store - (i32.const 188) - (local.tee $1 - (i32.sub - (i32.add - (local.get $10) - (i32.const -40) - ) - (local.get $1) - ) - ) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $0) - (local.get $1) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - ) - ) - (br_if $folding-inner0 - (i32.gt_u - (local.tee $0 - (i32.load - (i32.const 188) - ) - ) - (local.get $4) - ) - ) - ) - ) - (i32.store - (call $___errno_location) - (i32.const 12) - ) - (return - (i32.const 0) - ) - ) - (i32.store - (i32.const 188) - (local.tee $1 - (i32.sub - (local.get $0) - (local.get $4) - ) - ) - ) - (i32.store - (i32.const 200) - (local.tee $3 - (i32.add - (local.get $4) - (local.tee $0 - (i32.load - (i32.const 200) - ) - ) - ) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (func $_free (; 16 ;) (; has Stack IR ;) (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (if - (i32.eqz - (local.get $0) - ) - (return) - ) - (if - (i32.lt_u - (local.tee $3 - (i32.add - (local.get $0) - (i32.const -8) - ) - ) - (local.tee $13 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.tee $10 - (i32.and - (local.tee $0 - (i32.load - (i32.add - (local.get $0) - (i32.const -4) - ) - ) - ) - (i32.const 3) - ) - ) - (i32.const 1) - ) - (call $_abort) - ) - (local.set $6 - (i32.add - (local.get $3) - (local.tee $4 - (i32.and - (local.get $0) - (i32.const -8) - ) - ) - ) - ) - (if - (i32.and - (local.get $0) - (i32.const 1) - ) - (block - (local.set $2 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - ) - (block $do-once - (local.set $9 - (i32.load - (local.get $3) - ) - ) - (if - (i32.eqz - (local.get $10) - ) - (return) - ) - (if - (i32.lt_u - (local.tee $0 - (i32.sub - (local.get $3) - (local.get $9) - ) - ) - (local.get $13) - ) - (call $_abort) - ) - (local.set $3 - (i32.add - (local.get $4) - (local.get $9) - ) - ) - (if - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $0) - ) - (block - (if - (i32.ne - (i32.and - (local.tee $1 - (i32.load offset=4 - (local.get $6) - ) - ) - (i32.const 3) - ) - (i32.const 3) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - (i32.store - (i32.const 184) - (local.get $3) - ) - (i32.store offset=4 - (local.get $6) - (i32.and - (local.get $1) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $3) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $3) - ) - (local.get $3) - ) - (return) - ) - ) - (local.set $10 - (i32.shr_u - (local.get $9) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $9) - (i32.const 256) - ) - (block - (local.set $2 - (i32.load offset=12 - (local.get $0) - ) - ) - (if - (i32.ne - (local.tee $4 - (i32.load offset=8 - (local.get $0) - ) - ) - (local.tee $1 - (i32.add - (i32.shl - (local.get $10) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $4) - (local.get $13) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $0) - (i32.load offset=12 - (local.get $4) - ) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (local.get $2) - (local.get $4) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $10) - ) - (i32.const -1) - ) - ) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - (if - (i32.ne - (local.get $1) - (local.get $2) - ) - (block - (if - (i32.lt_u - (local.get $2) - (local.get $13) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $0) - (i32.load - (local.tee $1 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - ) - ) - (local.set $5 - (local.get $1) - ) - (call $_abort) - ) - ) - (local.set $5 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - ) - (i32.store offset=12 - (local.get $4) - (local.get $2) - ) - (i32.store - (local.get $5) - (local.get $4) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - (local.set $12 - (i32.load offset=24 - (local.get $0) - ) - ) - (if - (i32.eq - (local.get $0) - (local.tee $4 - (i32.load offset=12 - (local.get $0) - ) - ) - ) - (block $do-once0 - (if - (local.tee $4 - (i32.load - (local.tee $9 - (i32.add - (local.tee $5 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - (local.set $5 - (local.get $9) - ) - (br_if $do-once0 - (i32.eqz - (local.tee $4 - (i32.load - (local.get $5) - ) - ) - ) - ) - ) - (loop $while-in - (if - (local.tee $10 - (i32.load - (local.tee $9 - (i32.add - (local.get $4) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $10) - ) - (local.set $5 - (local.get $9) - ) - (br $while-in) - ) - ) - (if - (local.tee $10 - (i32.load - (local.tee $9 - (i32.add - (local.get $4) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $10) - ) - (local.set $5 - (local.get $9) - ) - (br $while-in) - ) - ) - ) - (if - (i32.lt_u - (local.get $5) - (local.get $13) - ) - (call $_abort) - (block - (i32.store - (local.get $5) - (i32.const 0) - ) - (local.set $7 - (local.get $4) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $5 - (i32.load offset=8 - (local.get $0) - ) - ) - (local.get $13) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $0) - (i32.load offset=12 - (local.get $5) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $0) - (i32.load offset=8 - (local.get $4) - ) - ) - (block - (i32.store offset=12 - (local.get $5) - (local.get $4) - ) - (i32.store offset=8 - (local.get $4) - (local.get $5) - ) - (local.set $7 - (local.get $4) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $12) - (block - (if - (i32.eq - (i32.load offset=480 - (local.tee $5 - (i32.shl - (local.tee $4 - (i32.load offset=28 - (local.get $0) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $0) - ) - (block - (i32.store offset=480 - (local.get $5) - (local.get $7) - ) - (if - (i32.eqz - (local.get $7) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $12) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $0) - (i32.load offset=16 - (local.get $12) - ) - ) - (i32.store offset=16 - (local.get $12) - (local.get $7) - ) - (i32.store offset=20 - (local.get $12) - (local.get $7) - ) - ) - (if - (i32.eqz - (local.get $7) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $7) - (local.tee $5 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $7) - (local.get $12) - ) - (if - (local.tee $4 - (i32.load offset=16 - (local.get $0) - ) - ) - (if - (i32.lt_u - (local.get $4) - (local.get $5) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $7) - (local.get $4) - ) - (i32.store offset=24 - (local.get $4) - (local.get $7) - ) - ) - ) - ) - (if - (local.tee $4 - (i32.load offset=20 - (local.get $0) - ) - ) - (if - (i32.lt_u - (local.get $4) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $7) - (local.get $4) - ) - (i32.store offset=24 - (local.get $4) - (local.get $7) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - ) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - ) - ) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - ) - ) - ) - ) - (if - (i32.ge_u - (local.get $2) - (local.get $6) - ) - (call $_abort) - ) - (if - (i32.eqz - (i32.and - (local.tee $0 - (i32.load offset=4 - (local.get $6) - ) - ) - (i32.const 1) - ) - ) - (call $_abort) - ) - (if - (i32.and - (local.get $0) - (i32.const 2) - ) - (block - (i32.store offset=4 - (local.get $6) - (i32.and - (local.get $0) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $1) - (local.get $2) - ) - (local.get $1) - ) - ) - (block - (if - (i32.eq - (i32.load - (i32.const 200) - ) - (local.get $6) - ) - (block - (i32.store - (i32.const 188) - (local.tee $0 - (i32.add - (local.get $1) - (i32.load - (i32.const 188) - ) - ) - ) - ) - (i32.store - (i32.const 200) - (local.get $2) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (if - (i32.ne - (i32.load - (i32.const 196) - ) - (local.get $2) - ) - (return) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (i32.store - (i32.const 184) - (i32.const 0) - ) - (return) - ) - ) - (if - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $6) - ) - (block - (i32.store - (i32.const 184) - (local.tee $0 - (i32.add - (local.get $1) - (i32.load - (i32.const 184) - ) - ) - ) - ) - (i32.store - (i32.const 196) - (local.get $2) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $2) - ) - (local.get $0) - ) - (return) - ) - ) - (local.set $5 - (i32.add - (local.get $1) - (i32.and - (local.get $0) - (i32.const -8) - ) - ) - ) - (local.set $4 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (block $do-once4 - (if - (i32.ge_u - (local.get $0) - (i32.const 256) - ) - (block - (local.set $7 - (i32.load offset=24 - (local.get $6) - ) - ) - (if - (i32.eq - (local.get $6) - (local.tee $0 - (i32.load offset=12 - (local.get $6) - ) - ) - ) - (block $do-once6 - (if - (local.tee $0 - (i32.load - (local.tee $3 - (i32.add - (local.tee $1 - (i32.add - (local.get $6) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - (local.set $1 - (local.get $3) - ) - (br_if $do-once6 - (i32.eqz - (local.tee $0 - (i32.load - (local.get $1) - ) - ) - ) - ) - ) - (loop $while-in9 - (if - (local.tee $4 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $4) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in9) - ) - ) - (if - (local.tee $4 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $4) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in9) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $8 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $6) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $6) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $6) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $8 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $7) - (block - (if - (i32.eq - (i32.load offset=480 - (local.tee $1 - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $6) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $6) - ) - (block - (i32.store offset=480 - (local.get $1) - (local.get $8) - ) - (if - (i32.eqz - (local.get $8) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $7) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $6) - (i32.load offset=16 - (local.get $7) - ) - ) - (i32.store offset=16 - (local.get $7) - (local.get $8) - ) - (i32.store offset=20 - (local.get $7) - (local.get $8) - ) - ) - (br_if $do-once4 - (i32.eqz - (local.get $8) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $8) - (local.tee $1 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $8) - (local.get $7) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $6) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $8) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $8) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $6) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $8) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $8) - ) - ) - ) - ) - ) - ) - ) - (block - (local.set $1 - (i32.load offset=12 - (local.get $6) - ) - ) - (if - (i32.ne - (local.tee $3 - (i32.load offset=8 - (local.get $6) - ) - ) - (local.tee $0 - (i32.add - (i32.shl - (local.get $4) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $3) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $6) - (i32.load offset=12 - (local.get $3) - ) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (local.get $1) - (local.get $3) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - (if - (i32.ne - (local.get $0) - (local.get $1) - ) - (block - (if - (i32.lt_u - (local.get $1) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $6) - (i32.load - (local.tee $0 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - ) - (local.set $14 - (local.get $0) - ) - (call $_abort) - ) - ) - (local.set $14 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - (i32.store offset=12 - (local.get $3) - (local.get $1) - ) - (i32.store - (local.get $14) - (local.get $3) - ) - ) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $5) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $2) - (local.get $5) - ) - (local.get $5) - ) - (local.set $1 - (if (result i32) - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $2) - ) - (block - (i32.store - (i32.const 184) - (local.get $5) - ) - (return) - ) - (local.get $5) - ) - ) - ) - ) - (local.set $3 - (i32.shr_u - (local.get $1) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $1) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $3) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $1 - (i32.load - (i32.const 176) - ) - ) - (local.tee $3 - (i32.shl - (i32.const 1) - (local.get $3) - ) - ) - ) - (if - (i32.lt_u - (local.tee $3 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $15 - (local.get $1) - ) - (local.set $11 - (local.get $3) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $1) - (local.get $3) - ) - ) - (local.set $15 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $11 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $15) - (local.get $2) - ) - (i32.store offset=12 - (local.get $11) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $11) - ) - (i32.store offset=12 - (local.get $2) - (local.get $0) - ) - (return) - ) - ) - (local.set $4 - (i32.add - (local.tee $3 - (i32.shl - (local.tee $0 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $1) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $1) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $0) - (local.tee $3 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $1) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $5 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $4) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $3) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $4) - (local.get $5) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $2) - (local.get $0) - ) - (i32.store offset=20 - (local.get $2) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $2) - (i32.const 0) - ) - (if - (i32.and - (local.tee $5 - (i32.load - (i32.const 180) - ) - ) - (local.tee $7 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - (block - (local.set $11 - (i32.shl - (local.get $1) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $0) - (i32.const 1) - ) - ) - (i32.eq - (local.get $0) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load offset=480 - (local.get $3) - ) - ) - (if - (i32.eq - (local.tee $0 - (loop $while-in15 (result i32) - (block $while-out14 (result i32) - (if - (i32.eq - (local.get $1) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $16 - (local.get $0) - ) - (br $while-out14 - (i32.const 130) - ) - ) - ) - (if (result i32) - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $11) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $11 - (i32.shl - (local.get $11) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $3) - ) - (br $while-in15) - ) - (block (result i32) - (local.set $17 - (local.get $4) - ) - (local.set $18 - (local.get $0) - ) - (i32.const 127) - ) - ) - ) - ) - ) - (i32.const 127) - ) - (if - (i32.lt_u - (local.get $17) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $17) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $18) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - ) - ) - (if - (i32.eq - (local.get $0) - (i32.const 130) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $16) - ) - ) - ) - (local.tee $3 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $3) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $2) - ) - (i32.store offset=8 - (local.get $0) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $1) - ) - (i32.store offset=12 - (local.get $2) - (local.get $16) - ) - (i32.store offset=24 - (local.get $2) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $5) - (local.get $7) - ) - ) - (i32.store offset=480 - (local.get $3) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $4) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - ) - ) - (i32.store - (i32.const 208) - (local.tee $0 - (i32.add - (i32.load - (i32.const 208) - ) - (i32.const -1) - ) - ) - ) - (local.set $0 - (if (result i32) - (local.get $0) - (return) - (i32.const 632) - ) - ) - (loop $while-in17 - (if - (local.tee $0 - (i32.load - (local.get $0) - ) - ) - (block - (local.set $0 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (br $while-in17) - ) - ) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - ) - (func $___stdio_write (; 17 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local.set $9 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 48) - ) - ) - (local.set $7 - (i32.add - (local.get $9) - (i32.const 16) - ) - ) - (i32.store - (local.tee $4 - (i32.add - (local.tee $8 - (local.get $9) - ) - (i32.const 32) - ) - ) - (local.tee $3 - (i32.load offset=28 - (local.get $0) - ) - ) - ) - (i32.store offset=4 - (local.get $4) - (local.tee $3 - (i32.sub - (i32.load offset=20 - (local.get $0) - ) - (local.get $3) - ) - ) - ) - (i32.store offset=8 - (local.get $4) - (local.get $1) - ) - (i32.store offset=12 - (local.get $4) - (local.get $2) - ) - (local.set $1 - (local.get $4) - ) - (local.set $4 - (i32.const 2) - ) - (local.set $10 - (i32.add - (local.get $2) - (local.get $3) - ) - ) - (loop $while-in - (block $while-out - (if - (i32.load - (i32.const 8) - ) - (block - (call $_pthread_cleanup_push - (i32.const 4) - (local.get $0) - ) - (i32.store - (local.get $8) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $8) - (local.get $1) - ) - (i32.store offset=8 - (local.get $8) - (local.get $4) - ) - (local.set $3 - (call $___syscall_ret - (call $___syscall146 - (i32.const 146) - (local.get $8) - ) - ) - ) - (call $_pthread_cleanup_pop - (i32.const 0) - ) - ) - (block - (i32.store - (local.get $7) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $7) - (local.get $1) - ) - (i32.store offset=8 - (local.get $7) - (local.get $4) - ) - (local.set $3 - (call $___syscall_ret - (call $___syscall146 - (i32.const 146) - (local.get $7) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $3) - (local.get $10) - ) - (block - (local.set $1 - (i32.const 6) - ) - (br $while-out) - ) - ) - (if - (i32.lt_s - (local.get $3) - (i32.const 0) - ) - (block - (local.set $12 - (local.get $1) - ) - (local.set $13 - (local.get $4) - ) - (local.set $1 - (i32.const 8) - ) - ) - (block - (local.set $5 - (if (result i32) - (i32.le_u - (local.get $3) - (local.tee $5 - (i32.load offset=4 - (local.get $1) - ) - ) - ) - (block (result i32) - (if - (i32.eq - (local.get $4) - (i32.const 2) - ) - (block - (i32.store offset=28 - (local.get $0) - (i32.add - (local.get $3) - (i32.load offset=28 - (local.get $0) - ) - ) - ) - (local.set $6 - (local.get $5) - ) - (local.set $4 - (i32.const 2) - ) - ) - (local.set $6 - (local.get $5) - ) - ) - (local.get $3) - ) - (block (result i32) - (i32.store offset=28 - (local.get $0) - (local.tee $6 - (i32.load offset=44 - (local.get $0) - ) - ) - ) - (i32.store offset=20 - (local.get $0) - (local.get $6) - ) - (local.set $6 - (i32.load offset=12 - (local.get $1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (local.set $4 - (i32.add - (local.get $4) - (i32.const -1) - ) - ) - (i32.sub - (local.get $3) - (local.get $5) - ) - ) - ) - ) - (i32.store - (local.get $1) - (i32.add - (local.get $5) - (i32.load - (local.get $1) - ) - ) - ) - (i32.store offset=4 - (local.get $1) - (i32.sub - (local.get $6) - (local.get $5) - ) - ) - (local.set $10 - (i32.sub - (local.get $10) - (local.get $3) - ) - ) - (br $while-in) - ) - ) - ) - ) - (local.set $11 - (if (result i32) - (i32.eq - (local.get $1) - (i32.const 6) - ) - (block (result i32) - (i32.store offset=16 - (local.get $0) - (i32.add - (local.tee $1 - (i32.load offset=44 - (local.get $0) - ) - ) - (i32.load offset=48 - (local.get $0) - ) - ) - ) - (i32.store offset=28 - (local.get $0) - (local.get $1) - ) - (i32.store offset=20 - (local.get $0) - (local.get $1) - ) - (local.get $2) - ) - (if (result i32) - (i32.eq - (local.get $1) - (i32.const 8) - ) - (block (result i32) - (i32.store offset=16 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=20 - (local.get $0) - (i32.const 0) - ) - (i32.store - (local.get $0) - (i32.or - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (if (result i32) - (i32.eq - (local.get $13) - (i32.const 2) - ) - (i32.const 0) - (i32.sub - (local.get $2) - (i32.load offset=4 - (local.get $12) - ) - ) - ) - ) - (local.get $11) - ) - ) - ) - (global.set $STACKTOP - (local.get $9) - ) - (local.get $11) - ) - (func $___fwritex (; 18 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local.set $5 - (i32.const 672) - ) - (local.set $3 - (if (result i32) - (local.tee $4 - (i32.load offset=16 - (local.get $1) - ) - ) - (block (result i32) - (local.set $6 - (i32.const 5) - ) - (local.get $4) - ) - (if (result i32) - (call $___towrite - (local.get $1) - ) - (local.get $3) - (block (result i32) - (local.set $6 - (i32.const 5) - ) - (i32.load offset=16 - (local.get $1) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $6) - (i32.const 5) - ) - (block $label$break$L5 - (if - (i32.lt_u - (i32.sub - (local.get $3) - (local.tee $3 - (i32.load offset=20 - (local.get $1) - ) - ) - ) - (local.get $0) - ) - (block - (local.set $2 - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $1) - (i32.const 672) - (local.get $0) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $1) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (br $label$break$L5) - ) - ) - (if - (i32.gt_s - (i32.load8_s offset=75 - (local.get $1) - ) - (i32.const -1) - ) - (block $label$break$L10 - (local.set $2 - (local.get $0) - ) - (loop $while-in - (if - (i32.eqz - (local.get $2) - ) - (block - (local.set $2 - (i32.const 0) - ) - (br $label$break$L10) - ) - ) - (if - (i32.ne - (i32.load8_s offset=672 - (local.tee $4 - (i32.add - (local.get $2) - (i32.const -1) - ) - ) - ) - (i32.const 10) - ) - (block - (local.set $2 - (local.get $4) - ) - (br $while-in) - ) - ) - ) - (br_if $label$break$L5 - (i32.lt_u - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $1) - (i32.const 672) - (local.get $2) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $1) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - (local.get $2) - ) - ) - (local.set $0 - (i32.sub - (local.get $0) - (local.get $2) - ) - ) - (local.set $5 - (i32.add - (local.get $2) - (i32.const 672) - ) - ) - (local.set $3 - (i32.load offset=20 - (local.get $1) - ) - ) - ) - ) - (drop - (call $_memcpy - (local.get $3) - (local.get $5) - (local.get $0) - ) - ) - (i32.store offset=20 - (local.get $1) - (i32.add - (local.get $0) - (i32.load offset=20 - (local.get $1) - ) - ) - ) - (local.set $2 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - ) - ) - (local.get $2) - ) - (func $_fflush (; 19 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (if - (local.get $0) - (local.set $0 - (block $do-once (result i32) - (if - (i32.le_s - (i32.load offset=76 - (local.get $0) - ) - (i32.const -1) - ) - (br $do-once - (call $___fflush_unlocked - (local.get $0) - ) - ) - ) - (call $___fflush_unlocked - (local.get $0) - ) - ) - ) - (block - (local.set $0 - (if (result i32) - (i32.load - (i32.const 56) - ) - (call $_fflush - (i32.load - (i32.const 56) - ) - ) - (i32.const 0) - ) - ) - (call $___lock - (i32.const 36) - ) - (if - (local.tee $1 - (i32.load - (i32.const 32) - ) - ) - (loop $while-in - (drop - (i32.load offset=76 - (local.get $1) - ) - ) - (if - (i32.gt_u - (i32.load offset=20 - (local.get $1) - ) - (i32.load offset=28 - (local.get $1) - ) - ) - (local.set $0 - (i32.or - (call $___fflush_unlocked - (local.get $1) - ) - (local.get $0) - ) - ) - ) - (br_if $while-in - (local.tee $1 - (i32.load offset=56 - (local.get $1) - ) - ) - ) - ) - ) - (call $___unlock - (i32.const 36) - ) - ) - ) - (local.get $0) - ) - (func $_strlen (; 20 ;) (; has Stack IR ;) (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local.set $0 - (i32.const 672) - ) - (block - (local.set $4 - (i32.const 672) - ) - (local.set $1 - (i32.const 4) - ) - ) - (i32.sub - (if (result i32) - (i32.eq - (local.get $1) - (i32.const 4) - ) - (block (result i32) - (local.set $1 - (local.get $4) - ) - (local.set $0 - (loop $while-in1 (result i32) - (if (result i32) - (i32.and - (i32.add - (local.tee $2 - (i32.load - (local.get $1) - ) - ) - (i32.const -16843009) - ) - (i32.xor - (i32.and - (local.get $2) - (i32.const -2139062144) - ) - (i32.const -2139062144) - ) - ) - (local.get $1) - (block - (local.set $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (if - (i32.and - (local.get $2) - (i32.const 255) - ) - (loop $while-in3 - (br_if $while-in3 - (i32.load8_s - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.get $0) - ) - (local.get $2) - ) - (i32.const 672) - ) - ) - (func $___overflow (; 21 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local.set $3 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (i32.store8 - (local.tee $4 - (local.get $3) - ) - (i32.const 10) - ) - (if - (local.tee $1 - (i32.load offset=16 - (local.get $0) - ) - ) - (block - (local.set $5 - (local.get $1) - ) - (local.set $6 - (i32.const 4) - ) - ) - (if - (call $___towrite - (local.get $0) - ) - (local.set $2 - (i32.const -1) - ) - (block - (local.set $5 - (i32.load offset=16 - (local.get $0) - ) - ) - (local.set $6 - (i32.const 4) - ) - ) - ) - ) - (if - (i32.eq - (local.get $6) - (i32.const 4) - ) - (local.set $2 - (block $do-once (result i32) - (if - (if (result i32) - (i32.lt_u - (local.tee $1 - (i32.load offset=20 - (local.get $0) - ) - ) - (local.get $5) - ) - (i32.ne - (local.tee $7 - (i32.const 10) - ) - (i32.load8_s offset=75 - (local.get $0) - ) - ) - (i32.const 0) - ) - (block - (i32.store offset=20 - (local.get $0) - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $1) - (i32.const 10) - ) - (br $do-once - (local.get $7) - ) - ) - ) - (if (result i32) - (i32.eq - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (local.get $4) - (i32.const 1) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $0) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - (i32.const 1) - ) - (i32.load8_u - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $3) - ) - (local.get $2) - ) - (func $___fflush_unlocked (; 22 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (if (result i32) - (if (result i32) - (i32.gt_u - (i32.load offset=20 - (local.get $0) - ) - (i32.load offset=28 - (local.get $0) - ) - ) - (block (result i32) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $0) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (i32.eqz - (i32.load offset=20 - (local.get $0) - ) - ) - ) - (i32.const 0) - ) - (i32.const -1) - (block (result i32) - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=4 - (local.get $0) - ) - ) - (local.tee $2 - (i32.load offset=8 - (local.get $0) - ) - ) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (i32.sub - (local.get $1) - (local.get $2) - ) - (i32.const 1) - (i32.add - (i32.and - (i32.load offset=40 - (local.get $0) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.store offset=16 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=20 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=8 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - (func $_memcpy (; 23 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (if - (i32.ge_s - (local.get $2) - (i32.const 4096) - ) - (return - (call $_emscripten_memcpy_big - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - ) - (local.set $3 - (local.get $0) - ) - (if - (i32.eq - (i32.and - (local.get $0) - (i32.const 3) - ) - (i32.and - (local.get $1) - (i32.const 3) - ) - ) - (block - (loop $while-in - (if - (i32.and - (local.get $0) - (i32.const 3) - ) - (block - (if - (i32.eqz - (local.get $2) - ) - (return - (local.get $3) - ) - ) - (i32.store8 - (local.get $0) - (i32.load8_s - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (loop $while-in1 - (if - (i32.ge_s - (local.get $2) - (i32.const 4) - ) - (block - (i32.store - (local.get $0) - (i32.load - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 4) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - ) - (loop $while-in3 - (if - (i32.gt_s - (local.get $2) - (i32.const 0) - ) - (block - (i32.store8 - (local.get $0) - (i32.load8_s - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (local.get $3) - ) - (func $runPostSets (; 24 ;) (; has Stack IR ;) - (nop) - ) - (func $_memset (; 25 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local.set $4 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - (if - (i32.ge_s - (local.get $2) - (i32.const 20) - ) - (block - (local.set $1 - (i32.and - (local.get $1) - (i32.const 255) - ) - ) - (if - (local.tee $3 - (i32.and - (local.get $0) - (i32.const 3) - ) - ) - (block - (local.set $3 - (i32.sub - (i32.add - (local.get $0) - (i32.const 4) - ) - (local.get $3) - ) - ) - (loop $while-in - (if - (i32.lt_s - (local.get $0) - (local.get $3) - ) - (block - (i32.store8 - (local.get $0) - (local.get $1) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - ) - (local.set $3 - (i32.or - (i32.or - (i32.or - (i32.shl - (local.get $1) - (i32.const 8) - ) - (local.get $1) - ) - (i32.shl - (local.get $1) - (i32.const 16) - ) - ) - (i32.shl - (local.get $1) - (i32.const 24) - ) - ) - ) - (local.set $5 - (i32.and - (local.get $4) - (i32.const -4) - ) - ) - (loop $while-in1 - (if - (i32.lt_s - (local.get $0) - (local.get $5) - ) - (block - (i32.store - (local.get $0) - (local.get $3) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - ) - (loop $while-in3 - (if - (i32.lt_s - (local.get $0) - (local.get $4) - ) - (block - (i32.store8 - (local.get $0) - (local.get $1) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (i32.sub - (local.get $0) - (local.get $2) - ) - ) - (func $_puts (; 26 ;) (; has Stack IR ;) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (drop - (i32.load offset=76 - (local.tee $0 - (i32.load - (i32.const 52) - ) - ) - ) - ) - (drop - (if (result i32) - (i32.lt_s - (i32.add - (call $_fwrite - (call $_strlen) - (local.get $0) - ) - (i32.const -1) - ) - (i32.const 0) - ) - (i32.const 1) - (block $do-once (result i32) - (if - (if (result i32) - (i32.ne - (i32.load8_s offset=75 - (local.get $0) - ) - (i32.const 10) - ) - (block (result i32) - (local.set $2 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - (i32.lt_u - (local.tee $1 - (i32.load offset=20 - (local.get $0) - ) - ) - (i32.load offset=16 - (local.get $0) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (local.get $2) - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $1) - (i32.const 10) - ) - (br $do-once - (i32.const 0) - ) - ) - ) - (call $___overflow - (local.get $0) - ) - ) - ) - ) - ) - (func $___stdio_seek (; 27 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local.set $3 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 32) - ) - ) - (i32.store - (local.get $3) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.const 0) - ) - (i32.store offset=8 - (local.get $3) - (local.get $1) - ) - (i32.store offset=12 - (local.get $3) - (i32.add - (local.get $3) - (i32.const 20) - ) - ) - (i32.store offset=16 - (local.get $3) - (local.get $2) - ) - (local.set $0 - (if (result i32) - (i32.lt_s - (call $___syscall_ret - (call $___syscall140 - (i32.const 140) - (local.get $3) - ) - ) - (i32.const 0) - ) - (block (result i32) - (i32.store offset=20 - (local.get $3) - (i32.const -1) - ) - (i32.const -1) - ) - (i32.load offset=20 - (local.get $3) - ) - ) - ) - (global.set $STACKTOP - (local.get $3) - ) - (local.get $0) - ) - (func $___towrite (; 28 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (i32.store8 offset=74 - (local.get $0) - (i32.or - (local.tee $1 - (i32.load8_s offset=74 - (local.get $0) - ) - ) - (i32.add - (local.get $1) - (i32.const 255) - ) - ) - ) - (if (result i32) - (i32.and - (local.tee $1 - (i32.load - (local.get $0) - ) - ) - (i32.const 8) - ) - (block (result i32) - (i32.store - (local.get $0) - (i32.or - (local.get $1) - (i32.const 32) - ) - ) - (i32.const -1) - ) - (block (result i32) - (i32.store offset=8 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (local.tee $1 - (i32.load offset=44 - (local.get $0) - ) - ) - ) - (i32.store offset=20 - (local.get $0) - (local.get $1) - ) - (i32.store offset=16 - (local.get $0) - (i32.add - (i32.load offset=48 - (local.get $0) - ) - (local.get $1) - ) - ) - (i32.const 0) - ) - ) - ) - (func $_fwrite (; 29 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local.set $2 - (local.get $0) - ) - (if (result i32) - (block (result i32) - (drop - (i32.load offset=76 - (local.get $1) - ) - ) - (i32.ne - (local.get $2) - (local.tee $1 - (call $___fwritex - (local.get $2) - (local.get $1) - ) - ) - ) - ) - (if (result i32) - (local.get $0) - (i32.div_u - (local.get $1) - (local.get $0) - ) - (i32.const 0) - ) - (i32.const 1) - ) - ) - (func $___stdout_write (; 30 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local.set $4 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 80) - ) - ) - (local.set $3 - (local.get $4) - ) - (i32.store offset=36 - (local.get $0) - (i32.const 5) - ) - (if - (if (result i32) - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 64) - ) - (i32.const 0) - (block (result i32) - (i32.store - (local.get $3) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.const 21505) - ) - (i32.store offset=8 - (local.get $3) - (i32.add - (local.get $4) - (i32.const 12) - ) - ) - (call $___syscall54 - (i32.const 54) - (local.get $3) - ) - ) - ) - (i32.store8 offset=75 - (local.get $0) - (i32.const -1) - ) - ) - (local.set $0 - (call $___stdio_write - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - (global.set $STACKTOP - (local.get $4) - ) - (local.get $0) - ) - (func $___stdio_close (; 31 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local.set $1 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (local.get $1) - (i32.load offset=60 - (local.get $0) - ) - ) - (local.set $0 - (call $___syscall_ret - (call $___syscall6 - (i32.const 6) - (local.get $1) - ) - ) - ) - (global.set $STACKTOP - (local.get $1) - ) - (local.get $0) - ) - (func $___syscall_ret (; 32 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (if - (i32.gt_u - (local.get $0) - (i32.const -4096) - ) - (block - (i32.store - (call $___errno_location) - (i32.sub - (i32.const 0) - (local.get $0) - ) - ) - (local.set $0 - (i32.const -1) - ) - ) - ) - (local.get $0) - ) - (func $dynCall_iiii (; 33 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $1) - (local.get $2) - (local.get $3) - (i32.add - (i32.and - (local.get $0) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (func $stackAlloc (; 34 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local.set $1 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (local.get $0) - (global.get $STACKTOP) - ) - ) - (global.set $STACKTOP - (i32.and - (i32.add - (global.get $STACKTOP) - (i32.const 15) - ) - (i32.const -16) - ) - ) - (local.get $1) - ) - (func $___errno_location (; 35 ;) (; has Stack IR ;) (result i32) - (if (result i32) - (i32.load - (i32.const 8) - ) - (i32.load offset=60 - (call $_pthread_self) - ) - (i32.const 60) - ) - ) - (func $setThrew (; 36 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (if - (i32.eqz - (global.get $__THREW__) - ) - (block - (global.set $__THREW__ - (local.get $0) - ) - (global.set $threwValue - (local.get $1) - ) - ) - ) - ) - (func $dynCall_ii (; 37 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (call_indirect (type $i32_=>_i32) - (local.get $1) - (i32.and - (local.get $0) - (i32.const 1) - ) - ) - ) - (func $_cleanup_418 (; 38 ;) (; has Stack IR ;) (param $0 i32) - (drop - (i32.load offset=68 - (local.get $0) - ) - ) - ) - (func $establishStackSpace (; 39 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (global.set $STACKTOP - (local.get $0) - ) - (global.set $STACK_MAX - (local.get $1) - ) - ) - (func $dynCall_vi (; 40 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (call_indirect (type $i32_=>_none) - (local.get $1) - (i32.add - (i32.and - (local.get $0) - (i32.const 7) - ) - (i32.const 10) - ) - ) - ) - (func $b1 (; 41 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $abort - (i32.const 1) - ) - (i32.const 0) - ) - (func $stackRestore (; 42 ;) (; has Stack IR ;) (param $0 i32) - (global.set $STACKTOP - (local.get $0) - ) - ) - (func $setTempRet0 (; 43 ;) (; has Stack IR ;) (param $0 i32) - (global.set $tempRet0 - (local.get $0) - ) - ) - (func $b0 (; 44 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (call $abort - (i32.const 0) - ) - (i32.const 0) - ) - (func $getTempRet0 (; 45 ;) (; has Stack IR ;) (result i32) - (global.get $tempRet0) - ) - (func $_main (; 46 ;) (; has Stack IR ;) (result i32) - (call $_puts) - (i32.const 0) - ) - (func $stackSave (; 47 ;) (; has Stack IR ;) (result i32) - (global.get $STACKTOP) - ) - (func $b2 (; 48 ;) (; has Stack IR ;) (param $0 i32) - (call $abort - (i32.const 2) - ) - ) -) diff -Nru binaryen-91/test/emcc_O2_hello_world.fromasm.clamp.no-opts binaryen-99/test/emcc_O2_hello_world.fromasm.clamp.no-opts --- binaryen-91/test/emcc_O2_hello_world.fromasm.clamp.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/emcc_O2_hello_world.fromasm.clamp.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,11943 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 18 18 funcref)) - (elem (global.get $__table_base) $b0 $___stdio_close $b1 $b1 $___stdout_write $___stdio_seek $b1 $___stdio_write $b1 $b1 $b2 $b2 $b2 $b2 $_cleanup_418 $b2 $b2 $b2) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) - (import "env" "ABORT" (global $ABORT$asm2wasm$import i32)) - (import "global" "NaN" (global $nan$asm2wasm$import f64)) - (import "global" "Infinity" (global $inf$asm2wasm$import f64)) - (import "env" "abort" (func $abort (param i32))) - (import "env" "_pthread_cleanup_pop" (func $_pthread_cleanup_pop (param i32))) - (import "env" "_pthread_self" (func $_pthread_self (result i32))) - (import "env" "_sysconf" (func $_sysconf (param i32) (result i32))) - (import "env" "___lock" (func $___lock (param i32))) - (import "env" "___syscall6" (func $___syscall6 (param i32 i32) (result i32))) - (import "env" "_abort" (func $_abort)) - (import "env" "_sbrk" (func $_sbrk (param i32) (result i32))) - (import "env" "_time" (func $_time (param i32) (result i32))) - (import "env" "_pthread_cleanup_push" (func $_pthread_cleanup_push (param i32 i32))) - (import "env" "_emscripten_memcpy_big" (func $_emscripten_memcpy_big (param i32 i32 i32) (result i32))) - (import "env" "___syscall54" (func $___syscall54 (param i32 i32) (result i32))) - (import "env" "___unlock" (func $___unlock (param i32))) - (import "env" "___syscall140" (func $___syscall140 (param i32 i32) (result i32))) - (import "env" "___syscall146" (func $___syscall146 (param i32 i32) (result i32))) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (global $STACK_MAX (mut i32) (global.get $STACK_MAX$asm2wasm$import)) - (global $tempDoublePtr (mut i32) (global.get $tempDoublePtr$asm2wasm$import)) - (global $ABORT (mut i32) (global.get $ABORT$asm2wasm$import)) - (global $__THREW__ (mut i32) (i32.const 0)) - (global $threwValue (mut i32) (i32.const 0)) - (global $setjmpId (mut i32) (i32.const 0)) - (global $undef (mut i32) (i32.const 0)) - (global $nan (mut f64) (global.get $nan$asm2wasm$import)) - (global $inf (mut f64) (global.get $inf$asm2wasm$import)) - (global $tempInt (mut i32) (i32.const 0)) - (global $tempBigInt (mut i32) (i32.const 0)) - (global $tempBigIntP (mut i32) (i32.const 0)) - (global $tempBigIntS (mut i32) (i32.const 0)) - (global $tempBigIntR (mut f64) (f64.const 0)) - (global $tempBigIntI (mut i32) (i32.const 0)) - (global $tempBigIntD (mut i32) (i32.const 0)) - (global $tempValue (mut i32) (i32.const 0)) - (global $tempDouble (mut f64) (f64.const 0)) - (global $tempRet0 (mut i32) (i32.const 0)) - (global $tempRet1 (mut i32) (i32.const 0)) - (global $tempRet2 (mut i32) (i32.const 0)) - (global $tempRet3 (mut i32) (i32.const 0)) - (global $tempRet4 (mut i32) (i32.const 0)) - (global $tempRet5 (mut i32) (i32.const 0)) - (global $tempRet6 (mut i32) (i32.const 0)) - (global $tempRet7 (mut i32) (i32.const 0)) - (global $tempRet8 (mut i32) (i32.const 0)) - (global $tempRet9 (mut i32) (i32.const 0)) - (global $tempFloat (mut f64) (f64.const 0)) - (export "_free" (func $_free)) - (export "_main" (func $_main)) - (export "_memset" (func $_memset)) - (export "_malloc" (func $_malloc)) - (export "_memcpy" (func $_memcpy)) - (export "_fflush" (func $_fflush)) - (export "___errno_location" (func $___errno_location)) - (export "runPostSets" (func $runPostSets)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackSave" (func $stackSave)) - (export "stackRestore" (func $stackRestore)) - (export "establishStackSpace" (func $establishStackSpace)) - (export "setThrew" (func $setThrew)) - (export "setTempRet0" (func $setTempRet0)) - (export "getTempRet0" (func $getTempRet0)) - (export "dynCall_ii" (func $dynCall_ii)) - (export "dynCall_iiii" (func $dynCall_iiii)) - (export "dynCall_vi" (func $dynCall_vi)) - (func $_malloc (; 15 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local $i3 i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local $i9 i32) - (local $i10 i32) - (local $i11 i32) - (local $i12 i32) - (local $i13 i32) - (local $i14 i32) - (local $i15 i32) - (local $i16 i32) - (local $i17 i32) - (local $i18 i32) - (local $i19 i32) - (local $i20 i32) - (local $i21 i32) - (local $i22 i32) - (local $i23 i32) - (local $i24 i32) - (local $i25 i32) - (local $i26 i32) - (local $i27 i32) - (local $i28 i32) - (local $i29 i32) - (local $i30 i32) - (local $i31 i32) - (local $i32 i32) - (local $i33 i32) - (local $i34 i32) - (local $i35 i32) - (local $i36 i32) - (local $i37 i32) - (local $i38 i32) - (local $i39 i32) - (local $i40 i32) - (local $i41 i32) - (local $i42 i32) - (local $i43 i32) - (local $i44 i32) - (local $i45 i32) - (local $i46 i32) - (local $i47 i32) - (local $i48 i32) - (local $i49 i32) - (local $i50 i32) - (local $i51 i32) - (local $i52 i32) - (local $i53 i32) - (local $i54 i32) - (local $i55 i32) - (local $i56 i32) - (local $i57 i32) - (local $i58 i32) - (local $i59 i32) - (local $i60 i32) - (local $i61 i32) - (local $i62 i32) - (local $i63 i32) - (local $i64 i32) - (local $i65 i32) - (local $i66 i32) - (local $i67 i32) - (local $i68 i32) - (local $i69 i32) - (local $i70 i32) - (local $i71 i32) - (local $i72 i32) - (local $i73 i32) - (local $i74 i32) - (local $i75 i32) - (local $i76 i32) - (local $i77 i32) - (local $i78 i32) - (local $i79 i32) - (local $i80 i32) - (local $i81 i32) - (local $i82 i32) - (local $i83 i32) - (local $i84 i32) - (local $i85 i32) - (local $i86 i32) - (local $i87 i32) - (local $i88 i32) - (local $i89 i32) - (local $i90 i32) - (local $i91 i32) - (local $i92 i32) - (block $do-once - (if - (i32.lt_u - (local.get $i1) - (i32.const 245) - ) - (block - (local.set $i2 - (if (result i32) - (i32.lt_u - (local.get $i1) - (i32.const 11) - ) - (i32.const 16) - (i32.and - (i32.add - (local.get $i1) - (i32.const 11) - ) - (i32.const -8) - ) - ) - ) - (local.set $i3 - (i32.shr_u - (local.get $i2) - (i32.const 3) - ) - ) - (local.set $i4 - (i32.load - (i32.const 176) - ) - ) - (local.set $i5 - (i32.shr_u - (local.get $i4) - (local.get $i3) - ) - ) - (if - (i32.and - (local.get $i5) - (i32.const 3) - ) - (block - (local.set $i6 - (i32.add - (i32.xor - (i32.and - (local.get $i5) - (i32.const 1) - ) - (i32.const 1) - ) - (local.get $i3) - ) - ) - (local.set $i7 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i6) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i8 - (i32.add - (local.get $i7) - (i32.const 8) - ) - ) - (local.set $i9 - (i32.load - (local.get $i8) - ) - ) - (local.set $i10 - (i32.add - (local.get $i9) - (i32.const 8) - ) - ) - (local.set $i11 - (i32.load - (local.get $i10) - ) - ) - (block $do-once0 - (if - (i32.ne - (local.get $i7) - (local.get $i11) - ) - (block - (if - (i32.lt_u - (local.get $i11) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i12 - (i32.add - (local.get $i11) - (i32.const 12) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i12) - ) - (local.get $i9) - ) - (block - (i32.store - (local.get $i12) - (local.get $i7) - ) - (i32.store - (local.get $i8) - (local.get $i11) - ) - (br $do-once0) - ) - (call $_abort) - ) - ) - (i32.store - (i32.const 176) - (i32.and - (local.get $i4) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i6) - ) - (i32.const -1) - ) - ) - ) - ) - ) - (local.set $i11 - (i32.shl - (local.get $i6) - (i32.const 3) - ) - ) - (i32.store - (i32.add - (local.get $i9) - (i32.const 4) - ) - (i32.or - (local.get $i11) - (i32.const 3) - ) - ) - (local.set $i8 - (i32.add - (i32.add - (local.get $i9) - (local.get $i11) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $i8) - (i32.or - (i32.load - (local.get $i8) - ) - (i32.const 1) - ) - ) - (local.set $i13 - (local.get $i10) - ) - (return - (local.get $i13) - ) - ) - ) - (local.set $i8 - (i32.load - (i32.const 184) - ) - ) - (if - (i32.gt_u - (local.get $i2) - (local.get $i8) - ) - (block - (if - (local.get $i5) - (block - (local.set $i11 - (i32.shl - (i32.const 2) - (local.get $i3) - ) - ) - (local.set $i7 - (i32.and - (i32.shl - (local.get $i5) - (local.get $i3) - ) - (i32.or - (local.get $i11) - (i32.sub - (i32.const 0) - (local.get $i11) - ) - ) - ) - ) - (local.set $i11 - (i32.add - (i32.and - (local.get $i7) - (i32.sub - (i32.const 0) - (local.get $i7) - ) - ) - (i32.const -1) - ) - ) - (local.set $i7 - (i32.and - (i32.shr_u - (local.get $i11) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $i12 - (i32.shr_u - (local.get $i11) - (local.get $i7) - ) - ) - (local.set $i11 - (i32.and - (i32.shr_u - (local.get $i12) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $i14 - (i32.shr_u - (local.get $i12) - (local.get $i11) - ) - ) - (local.set $i12 - (i32.and - (i32.shr_u - (local.get $i14) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $i15 - (i32.shr_u - (local.get $i14) - (local.get $i12) - ) - ) - (local.set $i14 - (i32.and - (i32.shr_u - (local.get $i15) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $i16 - (i32.shr_u - (local.get $i15) - (local.get $i14) - ) - ) - (local.set $i15 - (i32.and - (i32.shr_u - (local.get $i16) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (local.set $i17 - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.get $i11) - (local.get $i7) - ) - (local.get $i12) - ) - (local.get $i14) - ) - (local.get $i15) - ) - (i32.shr_u - (local.get $i16) - (local.get $i15) - ) - ) - ) - (local.set $i15 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i17) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i16 - (i32.add - (local.get $i15) - (i32.const 8) - ) - ) - (local.set $i14 - (i32.load - (local.get $i16) - ) - ) - (local.set $i12 - (i32.add - (local.get $i14) - (i32.const 8) - ) - ) - (local.set $i7 - (i32.load - (local.get $i12) - ) - ) - (block $do-once2 - (if - (i32.ne - (local.get $i15) - (local.get $i7) - ) - (block - (if - (i32.lt_u - (local.get $i7) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i11 - (i32.add - (local.get $i7) - (i32.const 12) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i11) - ) - (local.get $i14) - ) - (block - (i32.store - (local.get $i11) - (local.get $i15) - ) - (i32.store - (local.get $i16) - (local.get $i7) - ) - (local.set $i18 - (i32.load - (i32.const 184) - ) - ) - (br $do-once2) - ) - (call $_abort) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (local.get $i4) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i17) - ) - (i32.const -1) - ) - ) - ) - (local.set $i18 - (local.get $i8) - ) - ) - ) - ) - (local.set $i8 - (i32.sub - (i32.shl - (local.get $i17) - (i32.const 3) - ) - (local.get $i2) - ) - ) - (i32.store - (i32.add - (local.get $i14) - (i32.const 4) - ) - (i32.or - (local.get $i2) - (i32.const 3) - ) - ) - (local.set $i4 - (i32.add - (local.get $i14) - (local.get $i2) - ) - ) - (i32.store - (i32.add - (local.get $i4) - (i32.const 4) - ) - (i32.or - (local.get $i8) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i4) - (local.get $i8) - ) - (local.get $i8) - ) - (if - (local.get $i18) - (block - (local.set $i7 - (i32.load - (i32.const 196) - ) - ) - (local.set $i16 - (i32.shr_u - (local.get $i18) - (i32.const 3) - ) - ) - (local.set $i15 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i16) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i3 - (i32.load - (i32.const 176) - ) - ) - (local.set $i5 - (i32.shl - (i32.const 1) - (local.get $i16) - ) - ) - (if - (i32.and - (local.get $i3) - (local.get $i5) - ) - (block - (local.set $i16 - (i32.add - (local.get $i15) - (i32.const 8) - ) - ) - (local.set $i10 - (i32.load - (local.get $i16) - ) - ) - (if - (i32.lt_u - (local.get $i10) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $i19 - (local.get $i16) - ) - (local.set $i20 - (local.get $i10) - ) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $i3) - (local.get $i5) - ) - ) - (local.set $i19 - (i32.add - (local.get $i15) - (i32.const 8) - ) - ) - (local.set $i20 - (local.get $i15) - ) - ) - ) - (i32.store - (local.get $i19) - (local.get $i7) - ) - (i32.store - (i32.add - (local.get $i20) - (i32.const 12) - ) - (local.get $i7) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 8) - ) - (local.get $i20) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 12) - ) - (local.get $i15) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $i8) - ) - (i32.store - (i32.const 196) - (local.get $i4) - ) - (local.set $i13 - (local.get $i12) - ) - (return - (local.get $i13) - ) - ) - ) - (local.set $i4 - (i32.load - (i32.const 180) - ) - ) - (if - (local.get $i4) - (block - (local.set $i8 - (i32.add - (i32.and - (local.get $i4) - (i32.sub - (i32.const 0) - (local.get $i4) - ) - ) - (i32.const -1) - ) - ) - (local.set $i4 - (i32.and - (i32.shr_u - (local.get $i8) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $i15 - (i32.shr_u - (local.get $i8) - (local.get $i4) - ) - ) - (local.set $i8 - (i32.and - (i32.shr_u - (local.get $i15) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $i7 - (i32.shr_u - (local.get $i15) - (local.get $i8) - ) - ) - (local.set $i15 - (i32.and - (i32.shr_u - (local.get $i7) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $i5 - (i32.shr_u - (local.get $i7) - (local.get $i15) - ) - ) - (local.set $i7 - (i32.and - (i32.shr_u - (local.get $i5) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $i3 - (i32.shr_u - (local.get $i5) - (local.get $i7) - ) - ) - (local.set $i5 - (i32.and - (i32.shr_u - (local.get $i3) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (local.set $i10 - (i32.load - (i32.add - (i32.const 480) - (i32.shl - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.get $i8) - (local.get $i4) - ) - (local.get $i15) - ) - (local.get $i7) - ) - (local.get $i5) - ) - (i32.shr_u - (local.get $i3) - (local.get $i5) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (local.set $i5 - (i32.sub - (i32.and - (i32.load - (i32.add - (local.get $i10) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $i2) - ) - ) - (local.set $i3 - (local.get $i10) - ) - (local.set $i7 - (local.get $i10) - ) - (loop $while-in - (block $while-out - (local.set $i10 - (i32.load - (i32.add - (local.get $i3) - (i32.const 16) - ) - ) - ) - (if - (i32.eqz - (local.get $i10) - ) - (block - (local.set $i15 - (i32.load - (i32.add - (local.get $i3) - (i32.const 20) - ) - ) - ) - (if - (i32.eqz - (local.get $i15) - ) - (block - (local.set $i21 - (local.get $i5) - ) - (local.set $i22 - (local.get $i7) - ) - (br $while-out) - ) - (local.set $i23 - (local.get $i15) - ) - ) - ) - (local.set $i23 - (local.get $i10) - ) - ) - (local.set $i10 - (i32.sub - (i32.and - (i32.load - (i32.add - (local.get $i23) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $i2) - ) - ) - (local.set $i15 - (i32.lt_u - (local.get $i10) - (local.get $i5) - ) - ) - (local.set $i5 - (if (result i32) - (local.get $i15) - (local.get $i10) - (local.get $i5) - ) - ) - (local.set $i3 - (local.get $i23) - ) - (local.set $i7 - (if (result i32) - (local.get $i15) - (local.get $i23) - (local.get $i7) - ) - ) - (br $while-in) - ) - ) - (local.set $i7 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i22) - (local.get $i7) - ) - (call $_abort) - ) - (local.set $i3 - (i32.add - (local.get $i22) - (local.get $i2) - ) - ) - (if - (i32.ge_u - (local.get $i22) - (local.get $i3) - ) - (call $_abort) - ) - (local.set $i5 - (i32.load - (i32.add - (local.get $i22) - (i32.const 24) - ) - ) - ) - (local.set $i12 - (i32.load - (i32.add - (local.get $i22) - (i32.const 12) - ) - ) - ) - (block $do-once4 - (if - (i32.eq - (local.get $i12) - (local.get $i22) - ) - (block - (local.set $i14 - (i32.add - (local.get $i22) - (i32.const 20) - ) - ) - (local.set $i17 - (i32.load - (local.get $i14) - ) - ) - (if - (i32.eqz - (local.get $i17) - ) - (block - (local.set $i15 - (i32.add - (local.get $i22) - (i32.const 16) - ) - ) - (local.set $i10 - (i32.load - (local.get $i15) - ) - ) - (if - (i32.eqz - (local.get $i10) - ) - (block - (local.set $i24 - (i32.const 0) - ) - (br $do-once4) - ) - (block - (local.set $i25 - (local.get $i10) - ) - (local.set $i26 - (local.get $i15) - ) - ) - ) - ) - (block - (local.set $i25 - (local.get $i17) - ) - (local.set $i26 - (local.get $i14) - ) - ) - ) - (loop $while-in7 - (block $while-out6 - (local.set $i14 - (i32.add - (local.get $i25) - (i32.const 20) - ) - ) - (local.set $i17 - (i32.load - (local.get $i14) - ) - ) - (if - (local.get $i17) - (block - (local.set $i25 - (local.get $i17) - ) - (local.set $i26 - (local.get $i14) - ) - (br $while-in7) - ) - ) - (local.set $i14 - (i32.add - (local.get $i25) - (i32.const 16) - ) - ) - (local.set $i17 - (i32.load - (local.get $i14) - ) - ) - (if - (i32.eqz - (local.get $i17) - ) - (block - (local.set $i27 - (local.get $i25) - ) - (local.set $i28 - (local.get $i26) - ) - (br $while-out6) - ) - (block - (local.set $i25 - (local.get $i17) - ) - (local.set $i26 - (local.get $i14) - ) - ) - ) - (br $while-in7) - ) - ) - (if - (i32.lt_u - (local.get $i28) - (local.get $i7) - ) - (call $_abort) - (block - (i32.store - (local.get $i28) - (i32.const 0) - ) - (local.set $i24 - (local.get $i27) - ) - (br $do-once4) - ) - ) - ) - (block - (local.set $i14 - (i32.load - (i32.add - (local.get $i22) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $i14) - (local.get $i7) - ) - (call $_abort) - ) - (local.set $i17 - (i32.add - (local.get $i14) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $i17) - ) - (local.get $i22) - ) - (call $_abort) - ) - (local.set $i15 - (i32.add - (local.get $i12) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i15) - ) - (local.get $i22) - ) - (block - (i32.store - (local.get $i17) - (local.get $i12) - ) - (i32.store - (local.get $i15) - (local.get $i14) - ) - (local.set $i24 - (local.get $i12) - ) - (br $do-once4) - ) - (call $_abort) - ) - ) - ) - ) - (block $do-once8 - (if - (local.get $i5) - (block - (local.set $i12 - (i32.load - (i32.add - (local.get $i22) - (i32.const 28) - ) - ) - ) - (local.set $i7 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i12) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $i22) - (i32.load - (local.get $i7) - ) - ) - (block - (i32.store - (local.get $i7) - (local.get $i24) - ) - (if - (i32.eqz - (local.get $i24) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i12) - ) - (i32.const -1) - ) - ) - ) - (br $do-once8) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $i5) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i12 - (i32.add - (local.get $i5) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i12) - ) - (local.get $i22) - ) - (i32.store - (local.get $i12) - (local.get $i24) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 20) - ) - (local.get $i24) - ) - ) - (if - (i32.eqz - (local.get $i24) - ) - (br $do-once8) - ) - ) - ) - (local.set $i12 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i24) - (local.get $i12) - ) - (call $_abort) - ) - (i32.store - (i32.add - (local.get $i24) - (i32.const 24) - ) - (local.get $i5) - ) - (local.set $i7 - (i32.load - (i32.add - (local.get $i22) - (i32.const 16) - ) - ) - ) - (block $do-once10 - (if - (local.get $i7) - (if - (i32.lt_u - (local.get $i7) - (local.get $i12) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i24) - (i32.const 16) - ) - (local.get $i7) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 24) - ) - (local.get $i24) - ) - (br $do-once10) - ) - ) - ) - ) - (local.set $i7 - (i32.load - (i32.add - (local.get $i22) - (i32.const 20) - ) - ) - ) - (if - (local.get $i7) - (if - (i32.lt_u - (local.get $i7) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i24) - (i32.const 20) - ) - (local.get $i7) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 24) - ) - (local.get $i24) - ) - (br $do-once8) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $i21) - (i32.const 16) - ) - (block - (local.set $i5 - (i32.add - (local.get $i21) - (local.get $i2) - ) - ) - (i32.store - (i32.add - (local.get $i22) - (i32.const 4) - ) - (i32.or - (local.get $i5) - (i32.const 3) - ) - ) - (local.set $i7 - (i32.add - (i32.add - (local.get $i22) - (local.get $i5) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $i7) - (i32.or - (i32.load - (local.get $i7) - ) - (i32.const 1) - ) - ) - ) - (block - (i32.store - (i32.add - (local.get $i22) - (i32.const 4) - ) - (i32.or - (local.get $i2) - (i32.const 3) - ) - ) - (i32.store - (i32.add - (local.get $i3) - (i32.const 4) - ) - (i32.or - (local.get $i21) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i3) - (local.get $i21) - ) - (local.get $i21) - ) - (local.set $i7 - (i32.load - (i32.const 184) - ) - ) - (if - (local.get $i7) - (block - (local.set $i5 - (i32.load - (i32.const 196) - ) - ) - (local.set $i12 - (i32.shr_u - (local.get $i7) - (i32.const 3) - ) - ) - (local.set $i7 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i12) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i14 - (i32.load - (i32.const 176) - ) - ) - (local.set $i15 - (i32.shl - (i32.const 1) - (local.get $i12) - ) - ) - (if - (i32.and - (local.get $i14) - (local.get $i15) - ) - (block - (local.set $i12 - (i32.add - (local.get $i7) - (i32.const 8) - ) - ) - (local.set $i17 - (i32.load - (local.get $i12) - ) - ) - (if - (i32.lt_u - (local.get $i17) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $i29 - (local.get $i12) - ) - (local.set $i30 - (local.get $i17) - ) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $i14) - (local.get $i15) - ) - ) - (local.set $i29 - (i32.add - (local.get $i7) - (i32.const 8) - ) - ) - (local.set $i30 - (local.get $i7) - ) - ) - ) - (i32.store - (local.get $i29) - (local.get $i5) - ) - (i32.store - (i32.add - (local.get $i30) - (i32.const 12) - ) - (local.get $i5) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 8) - ) - (local.get $i30) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 12) - ) - (local.get $i7) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $i21) - ) - (i32.store - (i32.const 196) - (local.get $i3) - ) - ) - ) - (local.set $i13 - (i32.add - (local.get $i22) - (i32.const 8) - ) - ) - (return - (local.get $i13) - ) - ) - (local.set $i31 - (local.get $i2) - ) - ) - ) - (local.set $i31 - (local.get $i2) - ) - ) - ) - (if - (i32.le_u - (local.get $i1) - (i32.const -65) - ) - (block - (local.set $i7 - (i32.add - (local.get $i1) - (i32.const 11) - ) - ) - (local.set $i5 - (i32.and - (local.get $i7) - (i32.const -8) - ) - ) - (local.set $i15 - (i32.load - (i32.const 180) - ) - ) - (if - (local.get $i15) - (block - (local.set $i14 - (i32.sub - (i32.const 0) - (local.get $i5) - ) - ) - (local.set $i17 - (i32.shr_u - (local.get $i7) - (i32.const 8) - ) - ) - (if - (local.get $i17) - (if - (i32.gt_u - (local.get $i5) - (i32.const 16777215) - ) - (local.set $i32 - (i32.const 31) - ) - (block - (local.set $i7 - (i32.and - (i32.shr_u - (i32.add - (local.get $i17) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $i12 - (i32.shl - (local.get $i17) - (local.get $i7) - ) - ) - (local.set $i17 - (i32.and - (i32.shr_u - (i32.add - (local.get $i12) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $i10 - (i32.shl - (local.get $i12) - (local.get $i17) - ) - ) - (local.set $i12 - (i32.and - (i32.shr_u - (i32.add - (local.get $i10) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $i4 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $i17) - (local.get $i7) - ) - (local.get $i12) - ) - ) - (i32.shr_u - (i32.shl - (local.get $i10) - (local.get $i12) - ) - (i32.const 15) - ) - ) - ) - (local.set $i32 - (i32.or - (i32.and - (i32.shr_u - (local.get $i5) - (i32.add - (local.get $i4) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $i4) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i32 - (i32.const 0) - ) - ) - (local.set $i4 - (i32.load - (i32.add - (i32.const 480) - (i32.shl - (local.get $i32) - (i32.const 2) - ) - ) - ) - ) - (block $label$break$L123 - (if - (i32.eqz - (local.get $i4) - ) - (block - (local.set $i33 - (local.get $i14) - ) - (local.set $i34 - (i32.const 0) - ) - (local.set $i35 - (i32.const 0) - ) - (local.set $i36 - (i32.const 86) - ) - ) - (block - (local.set $i12 - (local.get $i14) - ) - (local.set $i10 - (i32.const 0) - ) - (local.set $i7 - (i32.shl - (local.get $i5) - (if (result i32) - (i32.eq - (local.get $i32) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $i32) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i17 - (local.get $i4) - ) - (local.set $i8 - (i32.const 0) - ) - (loop $while-in14 - (block $while-out13 - (local.set $i16 - (i32.and - (i32.load - (i32.add - (local.get $i17) - (i32.const 4) - ) - ) - (i32.const -8) - ) - ) - (local.set $i9 - (i32.sub - (local.get $i16) - (local.get $i5) - ) - ) - (if - (i32.lt_u - (local.get $i9) - (local.get $i12) - ) - (if - (i32.eq - (local.get $i16) - (local.get $i5) - ) - (block - (local.set $i37 - (local.get $i9) - ) - (local.set $i38 - (local.get $i17) - ) - (local.set $i39 - (local.get $i17) - ) - (local.set $i36 - (i32.const 90) - ) - (br $label$break$L123) - ) - (block - (local.set $i40 - (local.get $i9) - ) - (local.set $i41 - (local.get $i17) - ) - ) - ) - (block - (local.set $i40 - (local.get $i12) - ) - (local.set $i41 - (local.get $i8) - ) - ) - ) - (local.set $i9 - (i32.load - (i32.add - (local.get $i17) - (i32.const 20) - ) - ) - ) - (local.set $i17 - (i32.load - (i32.add - (i32.add - (local.get $i17) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $i7) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - (local.set $i16 - (if (result i32) - (i32.or - (i32.eq - (local.get $i9) - (i32.const 0) - ) - (i32.eq - (local.get $i9) - (local.get $i17) - ) - ) - (local.get $i10) - (local.get $i9) - ) - ) - (local.set $i9 - (i32.eq - (local.get $i17) - (i32.const 0) - ) - ) - (if - (local.get $i9) - (block - (local.set $i33 - (local.get $i40) - ) - (local.set $i34 - (local.get $i16) - ) - (local.set $i35 - (local.get $i41) - ) - (local.set $i36 - (i32.const 86) - ) - (br $while-out13) - ) - (block - (local.set $i12 - (local.get $i40) - ) - (local.set $i10 - (local.get $i16) - ) - (local.set $i7 - (i32.shl - (local.get $i7) - (i32.xor - (i32.and - (local.get $i9) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (local.set $i8 - (local.get $i41) - ) - ) - ) - (br $while-in14) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 86) - ) - (block - (if - (i32.and - (i32.eq - (local.get $i34) - (i32.const 0) - ) - (i32.eq - (local.get $i35) - (i32.const 0) - ) - ) - (block - (local.set $i4 - (i32.shl - (i32.const 2) - (local.get $i32) - ) - ) - (local.set $i14 - (i32.and - (local.get $i15) - (i32.or - (local.get $i4) - (i32.sub - (i32.const 0) - (local.get $i4) - ) - ) - ) - ) - (if - (i32.eqz - (local.get $i14) - ) - (block - (local.set $i31 - (local.get $i5) - ) - (br $do-once) - ) - ) - (local.set $i4 - (i32.add - (i32.and - (local.get $i14) - (i32.sub - (i32.const 0) - (local.get $i14) - ) - ) - (i32.const -1) - ) - ) - (local.set $i14 - (i32.and - (i32.shr_u - (local.get $i4) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $i2 - (i32.shr_u - (local.get $i4) - (local.get $i14) - ) - ) - (local.set $i4 - (i32.and - (i32.shr_u - (local.get $i2) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $i3 - (i32.shr_u - (local.get $i2) - (local.get $i4) - ) - ) - (local.set $i2 - (i32.and - (i32.shr_u - (local.get $i3) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $i8 - (i32.shr_u - (local.get $i3) - (local.get $i2) - ) - ) - (local.set $i3 - (i32.and - (i32.shr_u - (local.get $i8) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $i7 - (i32.shr_u - (local.get $i8) - (local.get $i3) - ) - ) - (local.set $i8 - (i32.and - (i32.shr_u - (local.get $i7) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (local.set $i42 - (i32.load - (i32.add - (i32.const 480) - (i32.shl - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.get $i4) - (local.get $i14) - ) - (local.get $i2) - ) - (local.get $i3) - ) - (local.get $i8) - ) - (i32.shr_u - (local.get $i7) - (local.get $i8) - ) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (local.set $i42 - (local.get $i34) - ) - ) - (if - (i32.eqz - (local.get $i42) - ) - (block - (local.set $i43 - (local.get $i33) - ) - (local.set $i44 - (local.get $i35) - ) - ) - (block - (local.set $i37 - (local.get $i33) - ) - (local.set $i38 - (local.get $i42) - ) - (local.set $i39 - (local.get $i35) - ) - (local.set $i36 - (i32.const 90) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 90) - ) - (loop $while-in16 - (block $while-out15 - (local.set $i36 - (i32.const 0) - ) - (local.set $i8 - (i32.sub - (i32.and - (i32.load - (i32.add - (local.get $i38) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $i5) - ) - ) - (local.set $i7 - (i32.lt_u - (local.get $i8) - (local.get $i37) - ) - ) - (local.set $i3 - (if (result i32) - (local.get $i7) - (local.get $i8) - (local.get $i37) - ) - ) - (local.set $i8 - (if (result i32) - (local.get $i7) - (local.get $i38) - (local.get $i39) - ) - ) - (local.set $i7 - (i32.load - (i32.add - (local.get $i38) - (i32.const 16) - ) - ) - ) - (if - (local.get $i7) - (block - (local.set $i37 - (local.get $i3) - ) - (local.set $i38 - (local.get $i7) - ) - (local.set $i39 - (local.get $i8) - ) - (local.set $i36 - (i32.const 90) - ) - (br $while-in16) - ) - ) - (local.set $i38 - (i32.load - (i32.add - (local.get $i38) - (i32.const 20) - ) - ) - ) - (if - (i32.eqz - (local.get $i38) - ) - (block - (local.set $i43 - (local.get $i3) - ) - (local.set $i44 - (local.get $i8) - ) - (br $while-out15) - ) - (block - (local.set $i37 - (local.get $i3) - ) - (local.set $i39 - (local.get $i8) - ) - (local.set $i36 - (i32.const 90) - ) - ) - ) - (br $while-in16) - ) - ) - ) - (if - (if (result i32) - (i32.ne - (local.get $i44) - (i32.const 0) - ) - (i32.lt_u - (local.get $i43) - (i32.sub - (i32.load - (i32.const 184) - ) - (local.get $i5) - ) - ) - (i32.const 0) - ) - (block - (local.set $i15 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i44) - (local.get $i15) - ) - (call $_abort) - ) - (local.set $i8 - (i32.add - (local.get $i44) - (local.get $i5) - ) - ) - (if - (i32.ge_u - (local.get $i44) - (local.get $i8) - ) - (call $_abort) - ) - (local.set $i3 - (i32.load - (i32.add - (local.get $i44) - (i32.const 24) - ) - ) - ) - (local.set $i7 - (i32.load - (i32.add - (local.get $i44) - (i32.const 12) - ) - ) - ) - (block $do-once17 - (if - (i32.eq - (local.get $i7) - (local.get $i44) - ) - (block - (local.set $i2 - (i32.add - (local.get $i44) - (i32.const 20) - ) - ) - (local.set $i14 - (i32.load - (local.get $i2) - ) - ) - (if - (i32.eqz - (local.get $i14) - ) - (block - (local.set $i4 - (i32.add - (local.get $i44) - (i32.const 16) - ) - ) - (local.set $i10 - (i32.load - (local.get $i4) - ) - ) - (if - (i32.eqz - (local.get $i10) - ) - (block - (local.set $i45 - (i32.const 0) - ) - (br $do-once17) - ) - (block - (local.set $i46 - (local.get $i10) - ) - (local.set $i47 - (local.get $i4) - ) - ) - ) - ) - (block - (local.set $i46 - (local.get $i14) - ) - (local.set $i47 - (local.get $i2) - ) - ) - ) - (loop $while-in20 - (block $while-out19 - (local.set $i2 - (i32.add - (local.get $i46) - (i32.const 20) - ) - ) - (local.set $i14 - (i32.load - (local.get $i2) - ) - ) - (if - (local.get $i14) - (block - (local.set $i46 - (local.get $i14) - ) - (local.set $i47 - (local.get $i2) - ) - (br $while-in20) - ) - ) - (local.set $i2 - (i32.add - (local.get $i46) - (i32.const 16) - ) - ) - (local.set $i14 - (i32.load - (local.get $i2) - ) - ) - (if - (i32.eqz - (local.get $i14) - ) - (block - (local.set $i48 - (local.get $i46) - ) - (local.set $i49 - (local.get $i47) - ) - (br $while-out19) - ) - (block - (local.set $i46 - (local.get $i14) - ) - (local.set $i47 - (local.get $i2) - ) - ) - ) - (br $while-in20) - ) - ) - (if - (i32.lt_u - (local.get $i49) - (local.get $i15) - ) - (call $_abort) - (block - (i32.store - (local.get $i49) - (i32.const 0) - ) - (local.set $i45 - (local.get $i48) - ) - (br $do-once17) - ) - ) - ) - (block - (local.set $i2 - (i32.load - (i32.add - (local.get $i44) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $i2) - (local.get $i15) - ) - (call $_abort) - ) - (local.set $i14 - (i32.add - (local.get $i2) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $i14) - ) - (local.get $i44) - ) - (call $_abort) - ) - (local.set $i4 - (i32.add - (local.get $i7) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i4) - ) - (local.get $i44) - ) - (block - (i32.store - (local.get $i14) - (local.get $i7) - ) - (i32.store - (local.get $i4) - (local.get $i2) - ) - (local.set $i45 - (local.get $i7) - ) - (br $do-once17) - ) - (call $_abort) - ) - ) - ) - ) - (block $do-once21 - (if - (local.get $i3) - (block - (local.set $i7 - (i32.load - (i32.add - (local.get $i44) - (i32.const 28) - ) - ) - ) - (local.set $i15 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i7) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $i44) - (i32.load - (local.get $i15) - ) - ) - (block - (i32.store - (local.get $i15) - (local.get $i45) - ) - (if - (i32.eqz - (local.get $i45) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i7) - ) - (i32.const -1) - ) - ) - ) - (br $do-once21) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $i3) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i7 - (i32.add - (local.get $i3) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i7) - ) - (local.get $i44) - ) - (i32.store - (local.get $i7) - (local.get $i45) - ) - (i32.store - (i32.add - (local.get $i3) - (i32.const 20) - ) - (local.get $i45) - ) - ) - (if - (i32.eqz - (local.get $i45) - ) - (br $do-once21) - ) - ) - ) - (local.set $i7 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i45) - (local.get $i7) - ) - (call $_abort) - ) - (i32.store - (i32.add - (local.get $i45) - (i32.const 24) - ) - (local.get $i3) - ) - (local.set $i15 - (i32.load - (i32.add - (local.get $i44) - (i32.const 16) - ) - ) - ) - (block $do-once23 - (if - (local.get $i15) - (if - (i32.lt_u - (local.get $i15) - (local.get $i7) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i45) - (i32.const 16) - ) - (local.get $i15) - ) - (i32.store - (i32.add - (local.get $i15) - (i32.const 24) - ) - (local.get $i45) - ) - (br $do-once23) - ) - ) - ) - ) - (local.set $i15 - (i32.load - (i32.add - (local.get $i44) - (i32.const 20) - ) - ) - ) - (if - (local.get $i15) - (if - (i32.lt_u - (local.get $i15) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i45) - (i32.const 20) - ) - (local.get $i15) - ) - (i32.store - (i32.add - (local.get $i15) - (i32.const 24) - ) - (local.get $i45) - ) - (br $do-once21) - ) - ) - ) - ) - ) - ) - (block $do-once25 - (if - (i32.ge_u - (local.get $i43) - (i32.const 16) - ) - (block - (i32.store - (i32.add - (local.get $i44) - (i32.const 4) - ) - (i32.or - (local.get $i5) - (i32.const 3) - ) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 4) - ) - (i32.or - (local.get $i43) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i8) - (local.get $i43) - ) - (local.get $i43) - ) - (local.set $i3 - (i32.shr_u - (local.get $i43) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $i43) - (i32.const 256) - ) - (block - (local.set $i15 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i3) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i7 - (i32.load - (i32.const 176) - ) - ) - (local.set $i2 - (i32.shl - (i32.const 1) - (local.get $i3) - ) - ) - (if - (i32.and - (local.get $i7) - (local.get $i2) - ) - (block - (local.set $i3 - (i32.add - (local.get $i15) - (i32.const 8) - ) - ) - (local.set $i4 - (i32.load - (local.get $i3) - ) - ) - (if - (i32.lt_u - (local.get $i4) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $i50 - (local.get $i3) - ) - (local.set $i51 - (local.get $i4) - ) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $i7) - (local.get $i2) - ) - ) - (local.set $i50 - (i32.add - (local.get $i15) - (i32.const 8) - ) - ) - (local.set $i51 - (local.get $i15) - ) - ) - ) - (i32.store - (local.get $i50) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i51) - (i32.const 12) - ) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 8) - ) - (local.get $i51) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 12) - ) - (local.get $i15) - ) - (br $do-once25) - ) - ) - (local.set $i15 - (i32.shr_u - (local.get $i43) - (i32.const 8) - ) - ) - (if - (local.get $i15) - (if - (i32.gt_u - (local.get $i43) - (i32.const 16777215) - ) - (local.set $i52 - (i32.const 31) - ) - (block - (local.set $i2 - (i32.and - (i32.shr_u - (i32.add - (local.get $i15) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $i7 - (i32.shl - (local.get $i15) - (local.get $i2) - ) - ) - (local.set $i15 - (i32.and - (i32.shr_u - (i32.add - (local.get $i7) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $i4 - (i32.shl - (local.get $i7) - (local.get $i15) - ) - ) - (local.set $i7 - (i32.and - (i32.shr_u - (i32.add - (local.get $i4) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $i3 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $i15) - (local.get $i2) - ) - (local.get $i7) - ) - ) - (i32.shr_u - (i32.shl - (local.get $i4) - (local.get $i7) - ) - (i32.const 15) - ) - ) - ) - (local.set $i52 - (i32.or - (i32.and - (i32.shr_u - (local.get $i43) - (i32.add - (local.get $i3) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $i3) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i52 - (i32.const 0) - ) - ) - (local.set $i3 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i52) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 28) - ) - (local.get $i52) - ) - (local.set $i7 - (i32.add - (local.get $i8) - (i32.const 16) - ) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 4) - ) - (i32.const 0) - ) - (i32.store - (local.get $i7) - (i32.const 0) - ) - (local.set $i7 - (i32.load - (i32.const 180) - ) - ) - (local.set $i4 - (i32.shl - (i32.const 1) - (local.get $i52) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $i7) - (local.get $i4) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $i7) - (local.get $i4) - ) - ) - (i32.store - (local.get $i3) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 24) - ) - (local.get $i3) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 12) - ) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 8) - ) - (local.get $i8) - ) - (br $do-once25) - ) - ) - (local.set $i4 - (i32.shl - (local.get $i43) - (if (result i32) - (i32.eq - (local.get $i52) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $i52) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i7 - (i32.load - (local.get $i3) - ) - ) - (loop $while-in28 - (block $while-out27 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $i7) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $i43) - ) - (block - (local.set $i53 - (local.get $i7) - ) - (local.set $i36 - (i32.const 148) - ) - (br $while-out27) - ) - ) - (local.set $i3 - (i32.add - (i32.add - (local.get $i7) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $i4) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $i2 - (i32.load - (local.get $i3) - ) - ) - (if - (i32.eqz - (local.get $i2) - ) - (block - (local.set $i54 - (local.get $i3) - ) - (local.set $i55 - (local.get $i7) - ) - (local.set $i36 - (i32.const 145) - ) - (br $while-out27) - ) - (block - (local.set $i4 - (i32.shl - (local.get $i4) - (i32.const 1) - ) - ) - (local.set $i7 - (local.get $i2) - ) - ) - ) - (br $while-in28) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 145) - ) - (if - (i32.lt_u - (local.get $i54) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $i54) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 24) - ) - (local.get $i55) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 12) - ) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 8) - ) - (local.get $i8) - ) - (br $do-once25) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 148) - ) - (block - (local.set $i7 - (i32.add - (local.get $i53) - (i32.const 8) - ) - ) - (local.set $i4 - (i32.load - (local.get $i7) - ) - ) - (local.set $i2 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $i4) - (local.get $i2) - ) - (i32.ge_u - (local.get $i53) - (local.get $i2) - ) - ) - (block - (i32.store - (i32.add - (local.get $i4) - (i32.const 12) - ) - (local.get $i8) - ) - (i32.store - (local.get $i7) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 8) - ) - (local.get $i4) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 12) - ) - (local.get $i53) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once25) - ) - (call $_abort) - ) - ) - ) - ) - ) - (block - (local.set $i4 - (i32.add - (local.get $i43) - (local.get $i5) - ) - ) - (i32.store - (i32.add - (local.get $i44) - (i32.const 4) - ) - (i32.or - (local.get $i4) - (i32.const 3) - ) - ) - (local.set $i7 - (i32.add - (i32.add - (local.get $i44) - (local.get $i4) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $i7) - (i32.or - (i32.load - (local.get $i7) - ) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i13 - (i32.add - (local.get $i44) - (i32.const 8) - ) - ) - (return - (local.get $i13) - ) - ) - (local.set $i31 - (local.get $i5) - ) - ) - ) - (local.set $i31 - (local.get $i5) - ) - ) - ) - (local.set $i31 - (i32.const -1) - ) - ) - ) - ) - (local.set $i44 - (i32.load - (i32.const 184) - ) - ) - (if - (i32.ge_u - (local.get $i44) - (local.get $i31) - ) - (block - (local.set $i43 - (i32.sub - (local.get $i44) - (local.get $i31) - ) - ) - (local.set $i53 - (i32.load - (i32.const 196) - ) - ) - (if - (i32.gt_u - (local.get $i43) - (i32.const 15) - ) - (block - (local.set $i55 - (i32.add - (local.get $i53) - (local.get $i31) - ) - ) - (i32.store - (i32.const 196) - (local.get $i55) - ) - (i32.store - (i32.const 184) - (local.get $i43) - ) - (i32.store - (i32.add - (local.get $i55) - (i32.const 4) - ) - (i32.or - (local.get $i43) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i55) - (local.get $i43) - ) - (local.get $i43) - ) - (i32.store - (i32.add - (local.get $i53) - (i32.const 4) - ) - (i32.or - (local.get $i31) - (i32.const 3) - ) - ) - ) - (block - (i32.store - (i32.const 184) - (i32.const 0) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $i53) - (i32.const 4) - ) - (i32.or - (local.get $i44) - (i32.const 3) - ) - ) - (local.set $i43 - (i32.add - (i32.add - (local.get $i53) - (local.get $i44) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $i43) - (i32.or - (i32.load - (local.get $i43) - ) - (i32.const 1) - ) - ) - ) - ) - (local.set $i13 - (i32.add - (local.get $i53) - (i32.const 8) - ) - ) - (return - (local.get $i13) - ) - ) - ) - (local.set $i53 - (i32.load - (i32.const 188) - ) - ) - (if - (i32.gt_u - (local.get $i53) - (local.get $i31) - ) - (block - (local.set $i43 - (i32.sub - (local.get $i53) - (local.get $i31) - ) - ) - (i32.store - (i32.const 188) - (local.get $i43) - ) - (local.set $i53 - (i32.load - (i32.const 200) - ) - ) - (local.set $i44 - (i32.add - (local.get $i53) - (local.get $i31) - ) - ) - (i32.store - (i32.const 200) - (local.get $i44) - ) - (i32.store - (i32.add - (local.get $i44) - (i32.const 4) - ) - (i32.or - (local.get $i43) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i53) - (i32.const 4) - ) - (i32.or - (local.get $i31) - (i32.const 3) - ) - ) - (local.set $i13 - (i32.add - (local.get $i53) - (i32.const 8) - ) - ) - (return - (local.get $i13) - ) - ) - ) - (block $do-once29 - (if - (i32.eqz - (i32.load - (i32.const 648) - ) - ) - (block - (local.set $i53 - (call $_sysconf - (i32.const 30) - ) - ) - (if - (i32.eqz - (i32.and - (i32.add - (local.get $i53) - (i32.const -1) - ) - (local.get $i53) - ) - ) - (block - (i32.store - (i32.const 656) - (local.get $i53) - ) - (i32.store - (i32.const 652) - (local.get $i53) - ) - (i32.store - (i32.const 660) - (i32.const -1) - ) - (i32.store - (i32.const 664) - (i32.const -1) - ) - (i32.store - (i32.const 668) - (i32.const 0) - ) - (i32.store - (i32.const 620) - (i32.const 0) - ) - (i32.store - (i32.const 648) - (i32.xor - (i32.and - (call $_time - (i32.const 0) - ) - (i32.const -16) - ) - (i32.const 1431655768) - ) - ) - (br $do-once29) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $i53 - (i32.add - (local.get $i31) - (i32.const 48) - ) - ) - (local.set $i43 - (i32.load - (i32.const 656) - ) - ) - (local.set $i44 - (i32.add - (local.get $i31) - (i32.const 47) - ) - ) - (local.set $i55 - (i32.add - (local.get $i43) - (local.get $i44) - ) - ) - (local.set $i54 - (i32.sub - (i32.const 0) - (local.get $i43) - ) - ) - (local.set $i43 - (i32.and - (local.get $i55) - (local.get $i54) - ) - ) - (if - (i32.le_u - (local.get $i43) - (local.get $i31) - ) - (block - (local.set $i13 - (i32.const 0) - ) - (return - (local.get $i13) - ) - ) - ) - (local.set $i52 - (i32.load - (i32.const 616) - ) - ) - (if - (if (result i32) - (i32.ne - (local.get $i52) - (i32.const 0) - ) - (block (result i32) - (local.set $i51 - (i32.load - (i32.const 608) - ) - ) - (block (result i32) - (local.set $i50 - (i32.add - (local.get $i51) - (local.get $i43) - ) - ) - (i32.or - (i32.le_u - (local.get $i50) - (local.get $i51) - ) - (i32.gt_u - (local.get $i50) - (local.get $i52) - ) - ) - ) - ) - (i32.const 0) - ) - (block - (local.set $i13 - (i32.const 0) - ) - (return - (local.get $i13) - ) - ) - ) - (block $label$break$L257 - (if - (i32.eqz - (i32.and - (i32.load - (i32.const 620) - ) - (i32.const 4) - ) - ) - (block - (local.set $i52 - (i32.load - (i32.const 200) - ) - ) - (block $label$break$L259 - (if - (local.get $i52) - (block - (local.set $i50 - (i32.const 624) - ) - (loop $while-in34 - (block $while-out33 - (local.set $i51 - (i32.load - (local.get $i50) - ) - ) - (if - (if (result i32) - (i32.le_u - (local.get $i51) - (local.get $i52) - ) - (block (result i32) - (local.set $i45 - (i32.add - (local.get $i50) - (i32.const 4) - ) - ) - (i32.gt_u - (i32.add - (local.get $i51) - (i32.load - (local.get $i45) - ) - ) - (local.get $i52) - ) - ) - (i32.const 0) - ) - (block - (local.set $i56 - (local.get $i50) - ) - (local.set $i57 - (local.get $i45) - ) - (br $while-out33) - ) - ) - (local.set $i50 - (i32.load - (i32.add - (local.get $i50) - (i32.const 8) - ) - ) - ) - (if - (i32.eqz - (local.get $i50) - ) - (block - (local.set $i36 - (i32.const 173) - ) - (br $label$break$L259) - ) - ) - (br $while-in34) - ) - ) - (local.set $i50 - (i32.and - (i32.sub - (local.get $i55) - (i32.load - (i32.const 188) - ) - ) - (local.get $i54) - ) - ) - (if - (i32.lt_u - (local.get $i50) - (i32.const 2147483647) - ) - (block - (local.set $i45 - (call $_sbrk - (local.get $i50) - ) - ) - (if - (i32.eq - (local.get $i45) - (i32.add - (i32.load - (local.get $i56) - ) - (i32.load - (local.get $i57) - ) - ) - ) - (if - (i32.ne - (local.get $i45) - (i32.const -1) - ) - (block - (local.set $i58 - (local.get $i45) - ) - (local.set $i59 - (local.get $i50) - ) - (local.set $i36 - (i32.const 193) - ) - (br $label$break$L257) - ) - ) - (block - (local.set $i60 - (local.get $i45) - ) - (local.set $i61 - (local.get $i50) - ) - (local.set $i36 - (i32.const 183) - ) - ) - ) - ) - ) - ) - (local.set $i36 - (i32.const 173) - ) - ) - ) - (block $do-once35 - (if - (if (result i32) - (i32.eq - (local.get $i36) - (i32.const 173) - ) - (block (result i32) - (local.set $i52 - (call $_sbrk - (i32.const 0) - ) - ) - (i32.ne - (local.get $i52) - (i32.const -1) - ) - ) - (i32.const 0) - ) - (block - (local.set $i5 - (local.get $i52) - ) - (local.set $i50 - (i32.load - (i32.const 652) - ) - ) - (local.set $i45 - (i32.add - (local.get $i50) - (i32.const -1) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $i45) - (local.get $i5) - ) - ) - (local.set $i62 - (local.get $i43) - ) - (local.set $i62 - (i32.add - (i32.sub - (local.get $i43) - (local.get $i5) - ) - (i32.and - (i32.add - (local.get $i45) - (local.get $i5) - ) - (i32.sub - (i32.const 0) - (local.get $i50) - ) - ) - ) - ) - ) - (local.set $i50 - (i32.load - (i32.const 608) - ) - ) - (local.set $i5 - (i32.add - (local.get $i50) - (local.get $i62) - ) - ) - (if - (i32.and - (i32.gt_u - (local.get $i62) - (local.get $i31) - ) - (i32.lt_u - (local.get $i62) - (i32.const 2147483647) - ) - ) - (block - (local.set $i45 - (i32.load - (i32.const 616) - ) - ) - (if - (if (result i32) - (i32.ne - (local.get $i45) - (i32.const 0) - ) - (i32.or - (i32.le_u - (local.get $i5) - (local.get $i50) - ) - (i32.gt_u - (local.get $i5) - (local.get $i45) - ) - ) - (i32.const 0) - ) - (br $do-once35) - ) - (local.set $i45 - (call $_sbrk - (local.get $i62) - ) - ) - (if - (i32.eq - (local.get $i45) - (local.get $i52) - ) - (block - (local.set $i58 - (local.get $i52) - ) - (local.set $i59 - (local.get $i62) - ) - (local.set $i36 - (i32.const 193) - ) - (br $label$break$L257) - ) - (block - (local.set $i60 - (local.get $i45) - ) - (local.set $i61 - (local.get $i62) - ) - (local.set $i36 - (i32.const 183) - ) - ) - ) - ) - ) - ) - ) - ) - (block $label$break$L279 - (if - (i32.eq - (local.get $i36) - (i32.const 183) - ) - (block - (local.set $i45 - (i32.sub - (i32.const 0) - (local.get $i61) - ) - ) - (block $do-once38 - (if - (if (result i32) - (i32.and - (i32.gt_u - (local.get $i53) - (local.get $i61) - ) - (i32.and - (i32.lt_u - (local.get $i61) - (i32.const 2147483647) - ) - (i32.ne - (local.get $i60) - (i32.const -1) - ) - ) - ) - (block (result i32) - (local.set $i52 - (i32.load - (i32.const 656) - ) - ) - (block (result i32) - (local.set $i5 - (i32.and - (i32.add - (i32.sub - (local.get $i44) - (local.get $i61) - ) - (local.get $i52) - ) - (i32.sub - (i32.const 0) - (local.get $i52) - ) - ) - ) - (i32.lt_u - (local.get $i5) - (i32.const 2147483647) - ) - ) - ) - (i32.const 0) - ) - (if - (i32.eq - (call $_sbrk - (local.get $i5) - ) - (i32.const -1) - ) - (block - (drop - (call $_sbrk - (local.get $i45) - ) - ) - (br $label$break$L279) - ) - (block - (local.set $i63 - (i32.add - (local.get $i5) - (local.get $i61) - ) - ) - (br $do-once38) - ) - ) - (local.set $i63 - (local.get $i61) - ) - ) - ) - (if - (i32.ne - (local.get $i60) - (i32.const -1) - ) - (block - (local.set $i58 - (local.get $i60) - ) - (local.set $i59 - (local.get $i63) - ) - (local.set $i36 - (i32.const 193) - ) - (br $label$break$L257) - ) - ) - ) - ) - ) - (i32.store - (i32.const 620) - (i32.or - (i32.load - (i32.const 620) - ) - (i32.const 4) - ) - ) - (local.set $i36 - (i32.const 190) - ) - ) - (local.set $i36 - (i32.const 190) - ) - ) - ) - (if - (if (result i32) - (if (result i32) - (if (result i32) - (i32.eq - (local.get $i36) - (i32.const 190) - ) - (i32.lt_u - (local.get $i43) - (i32.const 2147483647) - ) - (i32.const 0) - ) - (block (result i32) - (local.set $i63 - (call $_sbrk - (local.get $i43) - ) - ) - (block (result i32) - (local.set $i43 - (call $_sbrk - (i32.const 0) - ) - ) - (i32.and - (i32.lt_u - (local.get $i63) - (local.get $i43) - ) - (i32.and - (i32.ne - (local.get $i63) - (i32.const -1) - ) - (i32.ne - (local.get $i43) - (i32.const -1) - ) - ) - ) - ) - ) - (i32.const 0) - ) - (block (result i32) - (local.set $i60 - (i32.sub - (local.get $i43) - (local.get $i63) - ) - ) - (i32.gt_u - (local.get $i60) - (i32.add - (local.get $i31) - (i32.const 40) - ) - ) - ) - (i32.const 0) - ) - (block - (local.set $i58 - (local.get $i63) - ) - (local.set $i59 - (local.get $i60) - ) - (local.set $i36 - (i32.const 193) - ) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 193) - ) - (block - (local.set $i60 - (i32.add - (i32.load - (i32.const 608) - ) - (local.get $i59) - ) - ) - (i32.store - (i32.const 608) - (local.get $i60) - ) - (if - (i32.gt_u - (local.get $i60) - (i32.load - (i32.const 612) - ) - ) - (i32.store - (i32.const 612) - (local.get $i60) - ) - ) - (local.set $i60 - (i32.load - (i32.const 200) - ) - ) - (block $do-once40 - (if - (local.get $i60) - (block - (local.set $i63 - (i32.const 624) - ) - (loop $do-in - (block $do-out - (local.set $i43 - (i32.load - (local.get $i63) - ) - ) - (local.set $i61 - (i32.add - (local.get $i63) - (i32.const 4) - ) - ) - (local.set $i44 - (i32.load - (local.get $i61) - ) - ) - (if - (i32.eq - (local.get $i58) - (i32.add - (local.get $i43) - (local.get $i44) - ) - ) - (block - (local.set $i64 - (local.get $i43) - ) - (local.set $i65 - (local.get $i61) - ) - (local.set $i66 - (local.get $i44) - ) - (local.set $i67 - (local.get $i63) - ) - (local.set $i36 - (i32.const 203) - ) - (br $do-out) - ) - ) - (local.set $i63 - (i32.load - (i32.add - (local.get $i63) - (i32.const 8) - ) - ) - ) - (br_if $do-in - (i32.ne - (local.get $i63) - (i32.const 0) - ) - ) - ) - ) - (if - (if (result i32) - (if (result i32) - (i32.eq - (local.get $i36) - (i32.const 203) - ) - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $i67) - (i32.const 12) - ) - ) - (i32.const 8) - ) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.and - (i32.lt_u - (local.get $i60) - (local.get $i58) - ) - (i32.ge_u - (local.get $i60) - (local.get $i64) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (local.get $i65) - (i32.add - (local.get $i66) - (local.get $i59) - ) - ) - (local.set $i63 - (i32.add - (local.get $i60) - (i32.const 8) - ) - ) - (local.set $i44 - (if (result i32) - (i32.eq - (i32.and - (local.get $i63) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $i63) - ) - (i32.const 7) - ) - ) - ) - (local.set $i63 - (i32.add - (local.get $i60) - (local.get $i44) - ) - ) - (local.set $i61 - (i32.add - (i32.sub - (local.get $i59) - (local.get $i44) - ) - (i32.load - (i32.const 188) - ) - ) - ) - (i32.store - (i32.const 200) - (local.get $i63) - ) - (i32.store - (i32.const 188) - (local.get $i61) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 4) - ) - (i32.or - (local.get $i61) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (i32.add - (local.get $i63) - (local.get $i61) - ) - (i32.const 4) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - (br $do-once40) - ) - ) - (local.set $i61 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i58) - (local.get $i61) - ) - (block - (i32.store - (i32.const 192) - (local.get $i58) - ) - (local.set $i68 - (local.get $i58) - ) - ) - (local.set $i68 - (local.get $i61) - ) - ) - (local.set $i61 - (i32.add - (local.get $i58) - (local.get $i59) - ) - ) - (local.set $i63 - (i32.const 624) - ) - (loop $while-in43 - (block $while-out42 - (if - (i32.eq - (i32.load - (local.get $i63) - ) - (local.get $i61) - ) - (block - (local.set $i69 - (local.get $i63) - ) - (local.set $i70 - (local.get $i63) - ) - (local.set $i36 - (i32.const 211) - ) - (br $while-out42) - ) - ) - (local.set $i63 - (i32.load - (i32.add - (local.get $i63) - (i32.const 8) - ) - ) - ) - (if - (i32.eqz - (local.get $i63) - ) - (block - (local.set $i71 - (i32.const 624) - ) - (br $while-out42) - ) - ) - (br $while-in43) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 211) - ) - (if - (i32.eqz - (i32.and - (i32.load - (i32.add - (local.get $i70) - (i32.const 12) - ) - ) - (i32.const 8) - ) - ) - (block - (i32.store - (local.get $i69) - (local.get $i58) - ) - (local.set $i63 - (i32.add - (local.get $i70) - (i32.const 4) - ) - ) - (i32.store - (local.get $i63) - (i32.add - (i32.load - (local.get $i63) - ) - (local.get $i59) - ) - ) - (local.set $i63 - (i32.add - (local.get $i58) - (i32.const 8) - ) - ) - (local.set $i44 - (i32.add - (local.get $i58) - (if (result i32) - (i32.eq - (i32.and - (local.get $i63) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $i63) - ) - (i32.const 7) - ) - ) - ) - ) - (local.set $i63 - (i32.add - (local.get $i61) - (i32.const 8) - ) - ) - (local.set $i43 - (i32.add - (local.get $i61) - (if (result i32) - (i32.eq - (i32.and - (local.get $i63) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $i63) - ) - (i32.const 7) - ) - ) - ) - ) - (local.set $i63 - (i32.add - (local.get $i44) - (local.get $i31) - ) - ) - (local.set $i53 - (i32.sub - (i32.sub - (local.get $i43) - (local.get $i44) - ) - (local.get $i31) - ) - ) - (i32.store - (i32.add - (local.get $i44) - (i32.const 4) - ) - (i32.or - (local.get $i31) - (i32.const 3) - ) - ) - (block $do-once44 - (if - (i32.ne - (local.get $i43) - (local.get $i60) - ) - (block - (if - (i32.eq - (local.get $i43) - (i32.load - (i32.const 196) - ) - ) - (block - (local.set $i62 - (i32.add - (i32.load - (i32.const 184) - ) - (local.get $i53) - ) - ) - (i32.store - (i32.const 184) - (local.get $i62) - ) - (i32.store - (i32.const 196) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 4) - ) - (i32.or - (local.get $i62) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i63) - (local.get $i62) - ) - (local.get $i62) - ) - (br $do-once44) - ) - ) - (local.set $i62 - (i32.load - (i32.add - (local.get $i43) - (i32.const 4) - ) - ) - ) - (if - (i32.eq - (i32.and - (local.get $i62) - (i32.const 3) - ) - (i32.const 1) - ) - (block - (local.set $i57 - (i32.and - (local.get $i62) - (i32.const -8) - ) - ) - (local.set $i56 - (i32.shr_u - (local.get $i62) - (i32.const 3) - ) - ) - (block $label$break$L331 - (if - (i32.ge_u - (local.get $i62) - (i32.const 256) - ) - (block - (local.set $i54 - (i32.load - (i32.add - (local.get $i43) - (i32.const 24) - ) - ) - ) - (local.set $i55 - (i32.load - (i32.add - (local.get $i43) - (i32.const 12) - ) - ) - ) - (block $do-once47 - (if - (i32.eq - (local.get $i55) - (local.get $i43) - ) - (block - (local.set $i45 - (i32.add - (local.get $i43) - (i32.const 16) - ) - ) - (local.set $i5 - (i32.add - (local.get $i45) - (i32.const 4) - ) - ) - (local.set $i52 - (i32.load - (local.get $i5) - ) - ) - (if - (i32.eqz - (local.get $i52) - ) - (block - (local.set $i50 - (i32.load - (local.get $i45) - ) - ) - (if - (i32.eqz - (local.get $i50) - ) - (block - (local.set $i72 - (i32.const 0) - ) - (br $do-once47) - ) - (block - (local.set $i73 - (local.get $i50) - ) - (local.set $i74 - (local.get $i45) - ) - ) - ) - ) - (block - (local.set $i73 - (local.get $i52) - ) - (local.set $i74 - (local.get $i5) - ) - ) - ) - (loop $while-in50 - (block $while-out49 - (local.set $i5 - (i32.add - (local.get $i73) - (i32.const 20) - ) - ) - (local.set $i52 - (i32.load - (local.get $i5) - ) - ) - (if - (local.get $i52) - (block - (local.set $i73 - (local.get $i52) - ) - (local.set $i74 - (local.get $i5) - ) - (br $while-in50) - ) - ) - (local.set $i5 - (i32.add - (local.get $i73) - (i32.const 16) - ) - ) - (local.set $i52 - (i32.load - (local.get $i5) - ) - ) - (if - (i32.eqz - (local.get $i52) - ) - (block - (local.set $i75 - (local.get $i73) - ) - (local.set $i76 - (local.get $i74) - ) - (br $while-out49) - ) - (block - (local.set $i73 - (local.get $i52) - ) - (local.set $i74 - (local.get $i5) - ) - ) - ) - (br $while-in50) - ) - ) - (if - (i32.lt_u - (local.get $i76) - (local.get $i68) - ) - (call $_abort) - (block - (i32.store - (local.get $i76) - (i32.const 0) - ) - (local.set $i72 - (local.get $i75) - ) - (br $do-once47) - ) - ) - ) - (block - (local.set $i5 - (i32.load - (i32.add - (local.get $i43) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $i5) - (local.get $i68) - ) - (call $_abort) - ) - (local.set $i52 - (i32.add - (local.get $i5) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $i52) - ) - (local.get $i43) - ) - (call $_abort) - ) - (local.set $i45 - (i32.add - (local.get $i55) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i45) - ) - (local.get $i43) - ) - (block - (i32.store - (local.get $i52) - (local.get $i55) - ) - (i32.store - (local.get $i45) - (local.get $i5) - ) - (local.set $i72 - (local.get $i55) - ) - (br $do-once47) - ) - (call $_abort) - ) - ) - ) - ) - (if - (i32.eqz - (local.get $i54) - ) - (br $label$break$L331) - ) - (local.set $i55 - (i32.load - (i32.add - (local.get $i43) - (i32.const 28) - ) - ) - ) - (local.set $i5 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i55) - (i32.const 2) - ) - ) - ) - (block $do-once51 - (if - (i32.ne - (local.get $i43) - (i32.load - (local.get $i5) - ) - ) - (block - (if - (i32.lt_u - (local.get $i54) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i45 - (i32.add - (local.get $i54) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i45) - ) - (local.get $i43) - ) - (i32.store - (local.get $i45) - (local.get $i72) - ) - (i32.store - (i32.add - (local.get $i54) - (i32.const 20) - ) - (local.get $i72) - ) - ) - (if - (i32.eqz - (local.get $i72) - ) - (br $label$break$L331) - ) - ) - (block - (i32.store - (local.get $i5) - (local.get $i72) - ) - (if - (local.get $i72) - (br $do-once51) - ) - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i55) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$L331) - ) - ) - ) - (local.set $i55 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i72) - (local.get $i55) - ) - (call $_abort) - ) - (i32.store - (i32.add - (local.get $i72) - (i32.const 24) - ) - (local.get $i54) - ) - (local.set $i5 - (i32.add - (local.get $i43) - (i32.const 16) - ) - ) - (local.set $i45 - (i32.load - (local.get $i5) - ) - ) - (block $do-once53 - (if - (local.get $i45) - (if - (i32.lt_u - (local.get $i45) - (local.get $i55) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i72) - (i32.const 16) - ) - (local.get $i45) - ) - (i32.store - (i32.add - (local.get $i45) - (i32.const 24) - ) - (local.get $i72) - ) - (br $do-once53) - ) - ) - ) - ) - (local.set $i45 - (i32.load - (i32.add - (local.get $i5) - (i32.const 4) - ) - ) - ) - (if - (i32.eqz - (local.get $i45) - ) - (br $label$break$L331) - ) - (if - (i32.lt_u - (local.get $i45) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i72) - (i32.const 20) - ) - (local.get $i45) - ) - (i32.store - (i32.add - (local.get $i45) - (i32.const 24) - ) - (local.get $i72) - ) - (br $label$break$L331) - ) - ) - ) - (block - (local.set $i45 - (i32.load - (i32.add - (local.get $i43) - (i32.const 8) - ) - ) - ) - (local.set $i55 - (i32.load - (i32.add - (local.get $i43) - (i32.const 12) - ) - ) - ) - (local.set $i54 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i56) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (block $do-once55 - (if - (i32.ne - (local.get $i45) - (local.get $i54) - ) - (block - (if - (i32.lt_u - (local.get $i45) - (local.get $i68) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (i32.add - (local.get $i45) - (i32.const 12) - ) - ) - (local.get $i43) - ) - (br $do-once55) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (local.get $i55) - (local.get $i45) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i56) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$L331) - ) - ) - (block $do-once57 - (if - (i32.eq - (local.get $i55) - (local.get $i54) - ) - (local.set $i77 - (i32.add - (local.get $i55) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $i55) - (local.get $i68) - ) - (call $_abort) - ) - (local.set $i5 - (i32.add - (local.get $i55) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i5) - ) - (local.get $i43) - ) - (block - (local.set $i77 - (local.get $i5) - ) - (br $do-once57) - ) - ) - (call $_abort) - ) - ) - ) - (i32.store - (i32.add - (local.get $i45) - (i32.const 12) - ) - (local.get $i55) - ) - (i32.store - (local.get $i77) - (local.get $i45) - ) - ) - ) - ) - (local.set $i78 - (i32.add - (local.get $i43) - (local.get $i57) - ) - ) - (local.set $i79 - (i32.add - (local.get $i57) - (local.get $i53) - ) - ) - ) - (block - (local.set $i78 - (local.get $i43) - ) - (local.set $i79 - (local.get $i53) - ) - ) - ) - (local.set $i56 - (i32.add - (local.get $i78) - (i32.const 4) - ) - ) - (i32.store - (local.get $i56) - (i32.and - (i32.load - (local.get $i56) - ) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 4) - ) - (i32.or - (local.get $i79) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i63) - (local.get $i79) - ) - (local.get $i79) - ) - (local.set $i56 - (i32.shr_u - (local.get $i79) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $i79) - (i32.const 256) - ) - (block - (local.set $i62 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i56) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i54 - (i32.load - (i32.const 176) - ) - ) - (local.set $i5 - (i32.shl - (i32.const 1) - (local.get $i56) - ) - ) - (block $do-once59 - (if - (i32.eqz - (i32.and - (local.get $i54) - (local.get $i5) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $i54) - (local.get $i5) - ) - ) - (local.set $i80 - (i32.add - (local.get $i62) - (i32.const 8) - ) - ) - (local.set $i81 - (local.get $i62) - ) - ) - (block - (local.set $i56 - (i32.add - (local.get $i62) - (i32.const 8) - ) - ) - (local.set $i52 - (i32.load - (local.get $i56) - ) - ) - (if - (i32.ge_u - (local.get $i52) - (i32.load - (i32.const 192) - ) - ) - (block - (local.set $i80 - (local.get $i56) - ) - (local.set $i81 - (local.get $i52) - ) - (br $do-once59) - ) - ) - (call $_abort) - ) - ) - ) - (i32.store - (local.get $i80) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i81) - (i32.const 12) - ) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 8) - ) - (local.get $i81) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 12) - ) - (local.get $i62) - ) - (br $do-once44) - ) - ) - (local.set $i5 - (i32.shr_u - (local.get $i79) - (i32.const 8) - ) - ) - (block $do-once61 - (if - (i32.eqz - (local.get $i5) - ) - (local.set $i82 - (i32.const 0) - ) - (block - (if - (i32.gt_u - (local.get $i79) - (i32.const 16777215) - ) - (block - (local.set $i82 - (i32.const 31) - ) - (br $do-once61) - ) - ) - (local.set $i54 - (i32.and - (i32.shr_u - (i32.add - (local.get $i5) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $i57 - (i32.shl - (local.get $i5) - (local.get $i54) - ) - ) - (local.set $i52 - (i32.and - (i32.shr_u - (i32.add - (local.get $i57) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $i56 - (i32.shl - (local.get $i57) - (local.get $i52) - ) - ) - (local.set $i57 - (i32.and - (i32.shr_u - (i32.add - (local.get $i56) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $i50 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $i52) - (local.get $i54) - ) - (local.get $i57) - ) - ) - (i32.shr_u - (i32.shl - (local.get $i56) - (local.get $i57) - ) - (i32.const 15) - ) - ) - ) - (local.set $i82 - (i32.or - (i32.and - (i32.shr_u - (local.get $i79) - (i32.add - (local.get $i50) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $i50) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.set $i5 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i82) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 28) - ) - (local.get $i82) - ) - (local.set $i62 - (i32.add - (local.get $i63) - (i32.const 16) - ) - ) - (i32.store - (i32.add - (local.get $i62) - (i32.const 4) - ) - (i32.const 0) - ) - (i32.store - (local.get $i62) - (i32.const 0) - ) - (local.set $i62 - (i32.load - (i32.const 180) - ) - ) - (local.set $i50 - (i32.shl - (i32.const 1) - (local.get $i82) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $i62) - (local.get $i50) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $i62) - (local.get $i50) - ) - ) - (i32.store - (local.get $i5) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 24) - ) - (local.get $i5) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 12) - ) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 8) - ) - (local.get $i63) - ) - (br $do-once44) - ) - ) - (local.set $i50 - (i32.shl - (local.get $i79) - (if (result i32) - (i32.eq - (local.get $i82) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $i82) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i62 - (i32.load - (local.get $i5) - ) - ) - (loop $while-in64 - (block $while-out63 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $i62) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $i79) - ) - (block - (local.set $i83 - (local.get $i62) - ) - (local.set $i36 - (i32.const 281) - ) - (br $while-out63) - ) - ) - (local.set $i5 - (i32.add - (i32.add - (local.get $i62) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $i50) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $i57 - (i32.load - (local.get $i5) - ) - ) - (if - (i32.eqz - (local.get $i57) - ) - (block - (local.set $i84 - (local.get $i5) - ) - (local.set $i85 - (local.get $i62) - ) - (local.set $i36 - (i32.const 278) - ) - (br $while-out63) - ) - (block - (local.set $i50 - (i32.shl - (local.get $i50) - (i32.const 1) - ) - ) - (local.set $i62 - (local.get $i57) - ) - ) - ) - (br $while-in64) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 278) - ) - (if - (i32.lt_u - (local.get $i84) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $i84) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 24) - ) - (local.get $i85) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 12) - ) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 8) - ) - (local.get $i63) - ) - (br $do-once44) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 281) - ) - (block - (local.set $i62 - (i32.add - (local.get $i83) - (i32.const 8) - ) - ) - (local.set $i50 - (i32.load - (local.get $i62) - ) - ) - (local.set $i57 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $i50) - (local.get $i57) - ) - (i32.ge_u - (local.get $i83) - (local.get $i57) - ) - ) - (block - (i32.store - (i32.add - (local.get $i50) - (i32.const 12) - ) - (local.get $i63) - ) - (i32.store - (local.get $i62) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 8) - ) - (local.get $i50) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 12) - ) - (local.get $i83) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once44) - ) - (call $_abort) - ) - ) - ) - ) - ) - (block - (local.set $i50 - (i32.add - (i32.load - (i32.const 188) - ) - (local.get $i53) - ) - ) - (i32.store - (i32.const 188) - (local.get $i50) - ) - (i32.store - (i32.const 200) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 4) - ) - (i32.or - (local.get $i50) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i13 - (i32.add - (local.get $i44) - (i32.const 8) - ) - ) - (return - (local.get $i13) - ) - ) - (local.set $i71 - (i32.const 624) - ) - ) - ) - (loop $while-in66 - (block $while-out65 - (local.set $i63 - (i32.load - (local.get $i71) - ) - ) - (if - (if (result i32) - (i32.le_u - (local.get $i63) - (local.get $i60) - ) - (block (result i32) - (local.set $i53 - (i32.add - (local.get $i63) - (i32.load - (i32.add - (local.get $i71) - (i32.const 4) - ) - ) - ) - ) - (i32.gt_u - (local.get $i53) - (local.get $i60) - ) - ) - (i32.const 0) - ) - (block - (local.set $i86 - (local.get $i53) - ) - (br $while-out65) - ) - ) - (local.set $i71 - (i32.load - (i32.add - (local.get $i71) - (i32.const 8) - ) - ) - ) - (br $while-in66) - ) - ) - (local.set $i44 - (i32.add - (local.get $i86) - (i32.const -47) - ) - ) - (local.set $i53 - (i32.add - (local.get $i44) - (i32.const 8) - ) - ) - (local.set $i63 - (i32.add - (local.get $i44) - (if (result i32) - (i32.eq - (i32.and - (local.get $i53) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $i53) - ) - (i32.const 7) - ) - ) - ) - ) - (local.set $i53 - (i32.add - (local.get $i60) - (i32.const 16) - ) - ) - (local.set $i44 - (if (result i32) - (i32.lt_u - (local.get $i63) - (local.get $i53) - ) - (local.get $i60) - (local.get $i63) - ) - ) - (local.set $i63 - (i32.add - (local.get $i44) - (i32.const 8) - ) - ) - (local.set $i43 - (i32.add - (local.get $i58) - (i32.const 8) - ) - ) - (local.set $i61 - (if (result i32) - (i32.eq - (i32.and - (local.get $i43) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $i43) - ) - (i32.const 7) - ) - ) - ) - (local.set $i43 - (i32.add - (local.get $i58) - (local.get $i61) - ) - ) - (local.set $i50 - (i32.sub - (i32.add - (local.get $i59) - (i32.const -40) - ) - (local.get $i61) - ) - ) - (i32.store - (i32.const 200) - (local.get $i43) - ) - (i32.store - (i32.const 188) - (local.get $i50) - ) - (i32.store - (i32.add - (local.get $i43) - (i32.const 4) - ) - (i32.or - (local.get $i50) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (i32.add - (local.get $i43) - (local.get $i50) - ) - (i32.const 4) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - (local.set $i50 - (i32.add - (local.get $i44) - (i32.const 4) - ) - ) - (i32.store - (local.get $i50) - (i32.const 27) - ) - (i32.store - (local.get $i63) - (i32.load - (i32.const 624) - ) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 4) - ) - (i32.load - (i32.const 628) - ) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 8) - ) - (i32.load - (i32.const 632) - ) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 12) - ) - (i32.load - (i32.const 636) - ) - ) - (i32.store - (i32.const 624) - (local.get $i58) - ) - (i32.store - (i32.const 628) - (local.get $i59) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (i32.store - (i32.const 632) - (local.get $i63) - ) - (local.set $i63 - (i32.add - (local.get $i44) - (i32.const 24) - ) - ) - (loop $do-in68 - (block $do-out67 - (local.set $i63 - (i32.add - (local.get $i63) - (i32.const 4) - ) - ) - (i32.store - (local.get $i63) - (i32.const 7) - ) - (br_if $do-in68 - (i32.lt_u - (i32.add - (local.get $i63) - (i32.const 4) - ) - (local.get $i86) - ) - ) - ) - ) - (if - (i32.ne - (local.get $i44) - (local.get $i60) - ) - (block - (local.set $i63 - (i32.sub - (local.get $i44) - (local.get $i60) - ) - ) - (i32.store - (local.get $i50) - (i32.and - (i32.load - (local.get $i50) - ) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 4) - ) - (i32.or - (local.get $i63) - (i32.const 1) - ) - ) - (i32.store - (local.get $i44) - (local.get $i63) - ) - (local.set $i43 - (i32.shr_u - (local.get $i63) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $i63) - (i32.const 256) - ) - (block - (local.set $i61 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i43) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i62 - (i32.load - (i32.const 176) - ) - ) - (local.set $i57 - (i32.shl - (i32.const 1) - (local.get $i43) - ) - ) - (if - (i32.and - (local.get $i62) - (local.get $i57) - ) - (block - (local.set $i43 - (i32.add - (local.get $i61) - (i32.const 8) - ) - ) - (local.set $i5 - (i32.load - (local.get $i43) - ) - ) - (if - (i32.lt_u - (local.get $i5) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $i87 - (local.get $i43) - ) - (local.set $i88 - (local.get $i5) - ) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $i62) - (local.get $i57) - ) - ) - (local.set $i87 - (i32.add - (local.get $i61) - (i32.const 8) - ) - ) - (local.set $i88 - (local.get $i61) - ) - ) - ) - (i32.store - (local.get $i87) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i88) - (i32.const 12) - ) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 8) - ) - (local.get $i88) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 12) - ) - (local.get $i61) - ) - (br $do-once40) - ) - ) - (local.set $i61 - (i32.shr_u - (local.get $i63) - (i32.const 8) - ) - ) - (if - (local.get $i61) - (if - (i32.gt_u - (local.get $i63) - (i32.const 16777215) - ) - (local.set $i89 - (i32.const 31) - ) - (block - (local.set $i57 - (i32.and - (i32.shr_u - (i32.add - (local.get $i61) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $i62 - (i32.shl - (local.get $i61) - (local.get $i57) - ) - ) - (local.set $i61 - (i32.and - (i32.shr_u - (i32.add - (local.get $i62) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $i5 - (i32.shl - (local.get $i62) - (local.get $i61) - ) - ) - (local.set $i62 - (i32.and - (i32.shr_u - (i32.add - (local.get $i5) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $i43 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $i61) - (local.get $i57) - ) - (local.get $i62) - ) - ) - (i32.shr_u - (i32.shl - (local.get $i5) - (local.get $i62) - ) - (i32.const 15) - ) - ) - ) - (local.set $i89 - (i32.or - (i32.and - (i32.shr_u - (local.get $i63) - (i32.add - (local.get $i43) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $i43) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i89 - (i32.const 0) - ) - ) - (local.set $i43 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i89) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 28) - ) - (local.get $i89) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 20) - ) - (i32.const 0) - ) - (i32.store - (local.get $i53) - (i32.const 0) - ) - (local.set $i62 - (i32.load - (i32.const 180) - ) - ) - (local.set $i5 - (i32.shl - (i32.const 1) - (local.get $i89) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $i62) - (local.get $i5) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $i62) - (local.get $i5) - ) - ) - (i32.store - (local.get $i43) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 24) - ) - (local.get $i43) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 12) - ) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 8) - ) - (local.get $i60) - ) - (br $do-once40) - ) - ) - (local.set $i5 - (i32.shl - (local.get $i63) - (if (result i32) - (i32.eq - (local.get $i89) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $i89) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i62 - (i32.load - (local.get $i43) - ) - ) - (loop $while-in70 - (block $while-out69 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $i62) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $i63) - ) - (block - (local.set $i90 - (local.get $i62) - ) - (local.set $i36 - (i32.const 307) - ) - (br $while-out69) - ) - ) - (local.set $i43 - (i32.add - (i32.add - (local.get $i62) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $i5) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $i57 - (i32.load - (local.get $i43) - ) - ) - (if - (i32.eqz - (local.get $i57) - ) - (block - (local.set $i91 - (local.get $i43) - ) - (local.set $i92 - (local.get $i62) - ) - (local.set $i36 - (i32.const 304) - ) - (br $while-out69) - ) - (block - (local.set $i5 - (i32.shl - (local.get $i5) - (i32.const 1) - ) - ) - (local.set $i62 - (local.get $i57) - ) - ) - ) - (br $while-in70) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 304) - ) - (if - (i32.lt_u - (local.get $i91) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $i91) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 24) - ) - (local.get $i92) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 12) - ) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 8) - ) - (local.get $i60) - ) - (br $do-once40) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 307) - ) - (block - (local.set $i62 - (i32.add - (local.get $i90) - (i32.const 8) - ) - ) - (local.set $i5 - (i32.load - (local.get $i62) - ) - ) - (local.set $i63 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $i5) - (local.get $i63) - ) - (i32.ge_u - (local.get $i90) - (local.get $i63) - ) - ) - (block - (i32.store - (i32.add - (local.get $i5) - (i32.const 12) - ) - (local.get $i60) - ) - (i32.store - (local.get $i62) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 8) - ) - (local.get $i5) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 12) - ) - (local.get $i90) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once40) - ) - (call $_abort) - ) - ) - ) - ) - ) - ) - ) - (block - (local.set $i5 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.or - (i32.eq - (local.get $i5) - (i32.const 0) - ) - (i32.lt_u - (local.get $i58) - (local.get $i5) - ) - ) - (i32.store - (i32.const 192) - (local.get $i58) - ) - ) - (i32.store - (i32.const 624) - (local.get $i58) - ) - (i32.store - (i32.const 628) - (local.get $i59) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (i32.store - (i32.const 212) - (i32.load - (i32.const 648) - ) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - (local.set $i5 - (i32.const 0) - ) - (loop $do-in72 - (block $do-out71 - (local.set $i62 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i5) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $i62) - (i32.const 12) - ) - (local.get $i62) - ) - (i32.store - (i32.add - (local.get $i62) - (i32.const 8) - ) - (local.get $i62) - ) - (local.set $i5 - (i32.add - (local.get $i5) - (i32.const 1) - ) - ) - (br_if $do-in72 - (i32.ne - (local.get $i5) - (i32.const 32) - ) - ) - ) - ) - (local.set $i5 - (i32.add - (local.get $i58) - (i32.const 8) - ) - ) - (local.set $i62 - (if (result i32) - (i32.eq - (i32.and - (local.get $i5) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $i5) - ) - (i32.const 7) - ) - ) - ) - (local.set $i5 - (i32.add - (local.get $i58) - (local.get $i62) - ) - ) - (local.set $i63 - (i32.sub - (i32.add - (local.get $i59) - (i32.const -40) - ) - (local.get $i62) - ) - ) - (i32.store - (i32.const 200) - (local.get $i5) - ) - (i32.store - (i32.const 188) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 4) - ) - (i32.or - (local.get $i63) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (i32.add - (local.get $i5) - (local.get $i63) - ) - (i32.const 4) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - ) - ) - ) - (local.set $i59 - (i32.load - (i32.const 188) - ) - ) - (if - (i32.gt_u - (local.get $i59) - (local.get $i31) - ) - (block - (local.set $i58 - (i32.sub - (local.get $i59) - (local.get $i31) - ) - ) - (i32.store - (i32.const 188) - (local.get $i58) - ) - (local.set $i59 - (i32.load - (i32.const 200) - ) - ) - (local.set $i60 - (i32.add - (local.get $i59) - (local.get $i31) - ) - ) - (i32.store - (i32.const 200) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 4) - ) - (i32.or - (local.get $i58) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i59) - (i32.const 4) - ) - (i32.or - (local.get $i31) - (i32.const 3) - ) - ) - (local.set $i13 - (i32.add - (local.get $i59) - (i32.const 8) - ) - ) - (return - (local.get $i13) - ) - ) - ) - ) - ) - (i32.store - (call $___errno_location) - (i32.const 12) - ) - (local.set $i13 - (i32.const 0) - ) - (return - (local.get $i13) - ) - ) - (func $_free (; 16 ;) (param $i1 i32) - (local $i2 i32) - (local $i3 i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local $i9 i32) - (local $i10 i32) - (local $i11 i32) - (local $i12 i32) - (local $i13 i32) - (local $i14 i32) - (local $i15 i32) - (local $i16 i32) - (local $i17 i32) - (local $i18 i32) - (local $i19 i32) - (local $i20 i32) - (local $i21 i32) - (local $i22 i32) - (local $i23 i32) - (local $i24 i32) - (local $i25 i32) - (local $i26 i32) - (local $i27 i32) - (local $i28 i32) - (local $i29 i32) - (local $i30 i32) - (local $i31 i32) - (local $i32 i32) - (local $i33 i32) - (local $i34 i32) - (local $i35 i32) - (local $i36 i32) - (local $i37 i32) - (if - (i32.eqz - (local.get $i1) - ) - (return) - ) - (local.set $i2 - (i32.add - (local.get $i1) - (i32.const -8) - ) - ) - (local.set $i3 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i2) - (local.get $i3) - ) - (call $_abort) - ) - (local.set $i4 - (i32.load - (i32.add - (local.get $i1) - (i32.const -4) - ) - ) - ) - (local.set $i1 - (i32.and - (local.get $i4) - (i32.const 3) - ) - ) - (if - (i32.eq - (local.get $i1) - (i32.const 1) - ) - (call $_abort) - ) - (local.set $i5 - (i32.and - (local.get $i4) - (i32.const -8) - ) - ) - (local.set $i6 - (i32.add - (local.get $i2) - (local.get $i5) - ) - ) - (block $do-once - (if - (i32.eqz - (i32.and - (local.get $i4) - (i32.const 1) - ) - ) - (block - (local.set $i7 - (i32.load - (local.get $i2) - ) - ) - (if - (i32.eqz - (local.get $i1) - ) - (return) - ) - (local.set $i8 - (i32.add - (local.get $i2) - (i32.sub - (i32.const 0) - (local.get $i7) - ) - ) - ) - (local.set $i9 - (i32.add - (local.get $i7) - (local.get $i5) - ) - ) - (if - (i32.lt_u - (local.get $i8) - (local.get $i3) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $i8) - (i32.load - (i32.const 196) - ) - ) - (block - (local.set $i10 - (i32.add - (local.get $i6) - (i32.const 4) - ) - ) - (local.set $i11 - (i32.load - (local.get $i10) - ) - ) - (if - (i32.ne - (i32.and - (local.get $i11) - (i32.const 3) - ) - (i32.const 3) - ) - (block - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - (br $do-once) - ) - ) - (i32.store - (i32.const 184) - (local.get $i9) - ) - (i32.store - (local.get $i10) - (i32.and - (local.get $i11) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 4) - ) - (i32.or - (local.get $i9) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i8) - (local.get $i9) - ) - (local.get $i9) - ) - (return) - ) - ) - (local.set $i11 - (i32.shr_u - (local.get $i7) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $i7) - (i32.const 256) - ) - (block - (local.set $i7 - (i32.load - (i32.add - (local.get $i8) - (i32.const 8) - ) - ) - ) - (local.set $i10 - (i32.load - (i32.add - (local.get $i8) - (i32.const 12) - ) - ) - ) - (local.set $i14 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i11) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (if - (i32.ne - (local.get $i7) - (local.get $i14) - ) - (block - (if - (i32.lt_u - (local.get $i7) - (local.get $i3) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load - (i32.add - (local.get $i7) - (i32.const 12) - ) - ) - (local.get $i8) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (local.get $i10) - (local.get $i7) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i11) - ) - (i32.const -1) - ) - ) - ) - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - (br $do-once) - ) - ) - (if - (i32.ne - (local.get $i10) - (local.get $i14) - ) - (block - (if - (i32.lt_u - (local.get $i10) - (local.get $i3) - ) - (call $_abort) - ) - (local.set $i14 - (i32.add - (local.get $i10) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i14) - ) - (local.get $i8) - ) - (local.set $i15 - (local.get $i14) - ) - (call $_abort) - ) - ) - (local.set $i15 - (i32.add - (local.get $i10) - (i32.const 8) - ) - ) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 12) - ) - (local.get $i10) - ) - (i32.store - (local.get $i15) - (local.get $i7) - ) - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - (br $do-once) - ) - ) - (local.set $i7 - (i32.load - (i32.add - (local.get $i8) - (i32.const 24) - ) - ) - ) - (local.set $i10 - (i32.load - (i32.add - (local.get $i8) - (i32.const 12) - ) - ) - ) - (block $do-once0 - (if - (i32.eq - (local.get $i10) - (local.get $i8) - ) - (block - (local.set $i14 - (i32.add - (local.get $i8) - (i32.const 16) - ) - ) - (local.set $i11 - (i32.add - (local.get $i14) - (i32.const 4) - ) - ) - (local.set $i16 - (i32.load - (local.get $i11) - ) - ) - (if - (i32.eqz - (local.get $i16) - ) - (block - (local.set $i17 - (i32.load - (local.get $i14) - ) - ) - (if - (i32.eqz - (local.get $i17) - ) - (block - (local.set $i18 - (i32.const 0) - ) - (br $do-once0) - ) - (block - (local.set $i19 - (local.get $i17) - ) - (local.set $i20 - (local.get $i14) - ) - ) - ) - ) - (block - (local.set $i19 - (local.get $i16) - ) - (local.set $i20 - (local.get $i11) - ) - ) - ) - (loop $while-in - (block $while-out - (local.set $i11 - (i32.add - (local.get $i19) - (i32.const 20) - ) - ) - (local.set $i16 - (i32.load - (local.get $i11) - ) - ) - (if - (local.get $i16) - (block - (local.set $i19 - (local.get $i16) - ) - (local.set $i20 - (local.get $i11) - ) - (br $while-in) - ) - ) - (local.set $i11 - (i32.add - (local.get $i19) - (i32.const 16) - ) - ) - (local.set $i16 - (i32.load - (local.get $i11) - ) - ) - (if - (i32.eqz - (local.get $i16) - ) - (block - (local.set $i21 - (local.get $i19) - ) - (local.set $i22 - (local.get $i20) - ) - (br $while-out) - ) - (block - (local.set $i19 - (local.get $i16) - ) - (local.set $i20 - (local.get $i11) - ) - ) - ) - (br $while-in) - ) - ) - (if - (i32.lt_u - (local.get $i22) - (local.get $i3) - ) - (call $_abort) - (block - (i32.store - (local.get $i22) - (i32.const 0) - ) - (local.set $i18 - (local.get $i21) - ) - (br $do-once0) - ) - ) - ) - (block - (local.set $i11 - (i32.load - (i32.add - (local.get $i8) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $i11) - (local.get $i3) - ) - (call $_abort) - ) - (local.set $i16 - (i32.add - (local.get $i11) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $i16) - ) - (local.get $i8) - ) - (call $_abort) - ) - (local.set $i14 - (i32.add - (local.get $i10) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i14) - ) - (local.get $i8) - ) - (block - (i32.store - (local.get $i16) - (local.get $i10) - ) - (i32.store - (local.get $i14) - (local.get $i11) - ) - (local.set $i18 - (local.get $i10) - ) - (br $do-once0) - ) - (call $_abort) - ) - ) - ) - ) - (if - (local.get $i7) - (block - (local.set $i10 - (i32.load - (i32.add - (local.get $i8) - (i32.const 28) - ) - ) - ) - (local.set $i11 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i10) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $i8) - (i32.load - (local.get $i11) - ) - ) - (block - (i32.store - (local.get $i11) - (local.get $i18) - ) - (if - (i32.eqz - (local.get $i18) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i10) - ) - (i32.const -1) - ) - ) - ) - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - (br $do-once) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $i7) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i10 - (i32.add - (local.get $i7) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i10) - ) - (local.get $i8) - ) - (i32.store - (local.get $i10) - (local.get $i18) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 20) - ) - (local.get $i18) - ) - ) - (if - (i32.eqz - (local.get $i18) - ) - (block - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - (br $do-once) - ) - ) - ) - ) - (local.set $i10 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i18) - (local.get $i10) - ) - (call $_abort) - ) - (i32.store - (i32.add - (local.get $i18) - (i32.const 24) - ) - (local.get $i7) - ) - (local.set $i11 - (i32.add - (local.get $i8) - (i32.const 16) - ) - ) - (local.set $i14 - (i32.load - (local.get $i11) - ) - ) - (block $do-once2 - (if - (local.get $i14) - (if - (i32.lt_u - (local.get $i14) - (local.get $i10) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i18) - (i32.const 16) - ) - (local.get $i14) - ) - (i32.store - (i32.add - (local.get $i14) - (i32.const 24) - ) - (local.get $i18) - ) - (br $do-once2) - ) - ) - ) - ) - (local.set $i14 - (i32.load - (i32.add - (local.get $i11) - (i32.const 4) - ) - ) - ) - (if - (local.get $i14) - (if - (i32.lt_u - (local.get $i14) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i18) - (i32.const 20) - ) - (local.get $i14) - ) - (i32.store - (i32.add - (local.get $i14) - (i32.const 24) - ) - (local.get $i18) - ) - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - (br $do-once) - ) - ) - (block - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - ) - ) - ) - (block - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - ) - ) - ) - (block - (local.set $i12 - (local.get $i2) - ) - (local.set $i13 - (local.get $i5) - ) - ) - ) - ) - (if - (i32.ge_u - (local.get $i12) - (local.get $i6) - ) - (call $_abort) - ) - (local.set $i5 - (i32.add - (local.get $i6) - (i32.const 4) - ) - ) - (local.set $i2 - (i32.load - (local.get $i5) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $i2) - (i32.const 1) - ) - ) - (call $_abort) - ) - (if - (i32.eqz - (i32.and - (local.get $i2) - (i32.const 2) - ) - ) - (block - (if - (i32.eq - (local.get $i6) - (i32.load - (i32.const 200) - ) - ) - (block - (local.set $i18 - (i32.add - (i32.load - (i32.const 188) - ) - (local.get $i13) - ) - ) - (i32.store - (i32.const 188) - (local.get $i18) - ) - (i32.store - (i32.const 200) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 4) - ) - (i32.or - (local.get $i18) - (i32.const 1) - ) - ) - (if - (i32.ne - (local.get $i12) - (i32.load - (i32.const 196) - ) - ) - (return) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (i32.store - (i32.const 184) - (i32.const 0) - ) - (return) - ) - ) - (if - (i32.eq - (local.get $i6) - (i32.load - (i32.const 196) - ) - ) - (block - (local.set $i18 - (i32.add - (i32.load - (i32.const 184) - ) - (local.get $i13) - ) - ) - (i32.store - (i32.const 184) - (local.get $i18) - ) - (i32.store - (i32.const 196) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 4) - ) - (i32.or - (local.get $i18) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i12) - (local.get $i18) - ) - (local.get $i18) - ) - (return) - ) - ) - (local.set $i18 - (i32.add - (i32.and - (local.get $i2) - (i32.const -8) - ) - (local.get $i13) - ) - ) - (local.set $i3 - (i32.shr_u - (local.get $i2) - (i32.const 3) - ) - ) - (block $do-once4 - (if - (i32.ge_u - (local.get $i2) - (i32.const 256) - ) - (block - (local.set $i21 - (i32.load - (i32.add - (local.get $i6) - (i32.const 24) - ) - ) - ) - (local.set $i22 - (i32.load - (i32.add - (local.get $i6) - (i32.const 12) - ) - ) - ) - (block $do-once6 - (if - (i32.eq - (local.get $i22) - (local.get $i6) - ) - (block - (local.set $i20 - (i32.add - (local.get $i6) - (i32.const 16) - ) - ) - (local.set $i19 - (i32.add - (local.get $i20) - (i32.const 4) - ) - ) - (local.set $i15 - (i32.load - (local.get $i19) - ) - ) - (if - (i32.eqz - (local.get $i15) - ) - (block - (local.set $i1 - (i32.load - (local.get $i20) - ) - ) - (if - (i32.eqz - (local.get $i1) - ) - (block - (local.set $i23 - (i32.const 0) - ) - (br $do-once6) - ) - (block - (local.set $i24 - (local.get $i1) - ) - (local.set $i25 - (local.get $i20) - ) - ) - ) - ) - (block - (local.set $i24 - (local.get $i15) - ) - (local.set $i25 - (local.get $i19) - ) - ) - ) - (loop $while-in9 - (block $while-out8 - (local.set $i19 - (i32.add - (local.get $i24) - (i32.const 20) - ) - ) - (local.set $i15 - (i32.load - (local.get $i19) - ) - ) - (if - (local.get $i15) - (block - (local.set $i24 - (local.get $i15) - ) - (local.set $i25 - (local.get $i19) - ) - (br $while-in9) - ) - ) - (local.set $i19 - (i32.add - (local.get $i24) - (i32.const 16) - ) - ) - (local.set $i15 - (i32.load - (local.get $i19) - ) - ) - (if - (i32.eqz - (local.get $i15) - ) - (block - (local.set $i26 - (local.get $i24) - ) - (local.set $i27 - (local.get $i25) - ) - (br $while-out8) - ) - (block - (local.set $i24 - (local.get $i15) - ) - (local.set $i25 - (local.get $i19) - ) - ) - ) - (br $while-in9) - ) - ) - (if - (i32.lt_u - (local.get $i27) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $i27) - (i32.const 0) - ) - (local.set $i23 - (local.get $i26) - ) - (br $do-once6) - ) - ) - ) - (block - (local.set $i19 - (i32.load - (i32.add - (local.get $i6) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $i19) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i15 - (i32.add - (local.get $i19) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $i15) - ) - (local.get $i6) - ) - (call $_abort) - ) - (local.set $i20 - (i32.add - (local.get $i22) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i20) - ) - (local.get $i6) - ) - (block - (i32.store - (local.get $i15) - (local.get $i22) - ) - (i32.store - (local.get $i20) - (local.get $i19) - ) - (local.set $i23 - (local.get $i22) - ) - (br $do-once6) - ) - (call $_abort) - ) - ) - ) - ) - (if - (local.get $i21) - (block - (local.set $i22 - (i32.load - (i32.add - (local.get $i6) - (i32.const 28) - ) - ) - ) - (local.set $i9 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i22) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $i6) - (i32.load - (local.get $i9) - ) - ) - (block - (i32.store - (local.get $i9) - (local.get $i23) - ) - (if - (i32.eqz - (local.get $i23) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i22) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $i21) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i22 - (i32.add - (local.get $i21) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i22) - ) - (local.get $i6) - ) - (i32.store - (local.get $i22) - (local.get $i23) - ) - (i32.store - (i32.add - (local.get $i21) - (i32.const 20) - ) - (local.get $i23) - ) - ) - (if - (i32.eqz - (local.get $i23) - ) - (br $do-once4) - ) - ) - ) - (local.set $i22 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i23) - (local.get $i22) - ) - (call $_abort) - ) - (i32.store - (i32.add - (local.get $i23) - (i32.const 24) - ) - (local.get $i21) - ) - (local.set $i9 - (i32.add - (local.get $i6) - (i32.const 16) - ) - ) - (local.set $i8 - (i32.load - (local.get $i9) - ) - ) - (block $do-once10 - (if - (local.get $i8) - (if - (i32.lt_u - (local.get $i8) - (local.get $i22) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i23) - (i32.const 16) - ) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 24) - ) - (local.get $i23) - ) - (br $do-once10) - ) - ) - ) - ) - (local.set $i8 - (i32.load - (i32.add - (local.get $i9) - (i32.const 4) - ) - ) - ) - (if - (local.get $i8) - (if - (i32.lt_u - (local.get $i8) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i23) - (i32.const 20) - ) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 24) - ) - (local.get $i23) - ) - (br $do-once4) - ) - ) - ) - ) - ) - ) - (block - (local.set $i8 - (i32.load - (i32.add - (local.get $i6) - (i32.const 8) - ) - ) - ) - (local.set $i22 - (i32.load - (i32.add - (local.get $i6) - (i32.const 12) - ) - ) - ) - (local.set $i21 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i3) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (if - (i32.ne - (local.get $i8) - (local.get $i21) - ) - (block - (if - (i32.lt_u - (local.get $i8) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load - (i32.add - (local.get $i8) - (i32.const 12) - ) - ) - (local.get $i6) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (local.get $i22) - (local.get $i8) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i3) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - (if - (i32.ne - (local.get $i22) - (local.get $i21) - ) - (block - (if - (i32.lt_u - (local.get $i22) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i21 - (i32.add - (local.get $i22) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i21) - ) - (local.get $i6) - ) - (local.set $i28 - (local.get $i21) - ) - (call $_abort) - ) - ) - (local.set $i28 - (i32.add - (local.get $i22) - (i32.const 8) - ) - ) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 12) - ) - (local.get $i22) - ) - (i32.store - (local.get $i28) - (local.get $i8) - ) - ) - ) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 4) - ) - (i32.or - (local.get $i18) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i12) - (local.get $i18) - ) - (local.get $i18) - ) - (if - (i32.eq - (local.get $i12) - (i32.load - (i32.const 196) - ) - ) - (block - (i32.store - (i32.const 184) - (local.get $i18) - ) - (return) - ) - (local.set $i29 - (local.get $i18) - ) - ) - ) - (block - (i32.store - (local.get $i5) - (i32.and - (local.get $i2) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 4) - ) - (i32.or - (local.get $i13) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i12) - (local.get $i13) - ) - (local.get $i13) - ) - (local.set $i29 - (local.get $i13) - ) - ) - ) - (local.set $i13 - (i32.shr_u - (local.get $i29) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $i29) - (i32.const 256) - ) - (block - (local.set $i2 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i13) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i5 - (i32.load - (i32.const 176) - ) - ) - (local.set $i18 - (i32.shl - (i32.const 1) - (local.get $i13) - ) - ) - (if - (i32.and - (local.get $i5) - (local.get $i18) - ) - (block - (local.set $i13 - (i32.add - (local.get $i2) - (i32.const 8) - ) - ) - (local.set $i28 - (i32.load - (local.get $i13) - ) - ) - (if - (i32.lt_u - (local.get $i28) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $i30 - (local.get $i13) - ) - (local.set $i31 - (local.get $i28) - ) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $i5) - (local.get $i18) - ) - ) - (local.set $i30 - (i32.add - (local.get $i2) - (i32.const 8) - ) - ) - (local.set $i31 - (local.get $i2) - ) - ) - ) - (i32.store - (local.get $i30) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i31) - (i32.const 12) - ) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 8) - ) - (local.get $i31) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 12) - ) - (local.get $i2) - ) - (return) - ) - ) - (local.set $i2 - (i32.shr_u - (local.get $i29) - (i32.const 8) - ) - ) - (if - (local.get $i2) - (if - (i32.gt_u - (local.get $i29) - (i32.const 16777215) - ) - (local.set $i32 - (i32.const 31) - ) - (block - (local.set $i31 - (i32.and - (i32.shr_u - (i32.add - (local.get $i2) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $i30 - (i32.shl - (local.get $i2) - (local.get $i31) - ) - ) - (local.set $i2 - (i32.and - (i32.shr_u - (i32.add - (local.get $i30) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $i18 - (i32.shl - (local.get $i30) - (local.get $i2) - ) - ) - (local.set $i30 - (i32.and - (i32.shr_u - (i32.add - (local.get $i18) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $i5 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $i2) - (local.get $i31) - ) - (local.get $i30) - ) - ) - (i32.shr_u - (i32.shl - (local.get $i18) - (local.get $i30) - ) - (i32.const 15) - ) - ) - ) - (local.set $i32 - (i32.or - (i32.and - (i32.shr_u - (local.get $i29) - (i32.add - (local.get $i5) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $i5) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i32 - (i32.const 0) - ) - ) - (local.set $i5 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i32) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 28) - ) - (local.get $i32) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 20) - ) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 16) - ) - (i32.const 0) - ) - (local.set $i30 - (i32.load - (i32.const 180) - ) - ) - (local.set $i18 - (i32.shl - (i32.const 1) - (local.get $i32) - ) - ) - (block $do-once12 - (if - (i32.and - (local.get $i30) - (local.get $i18) - ) - (block - (local.set $i31 - (i32.shl - (local.get $i29) - (if (result i32) - (i32.eq - (local.get $i32) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $i32) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i2 - (i32.load - (local.get $i5) - ) - ) - (loop $while-in15 - (block $while-out14 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $i2) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $i29) - ) - (block - (local.set $i33 - (local.get $i2) - ) - (local.set $i34 - (i32.const 130) - ) - (br $while-out14) - ) - ) - (local.set $i28 - (i32.add - (i32.add - (local.get $i2) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $i31) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $i13 - (i32.load - (local.get $i28) - ) - ) - (if - (i32.eqz - (local.get $i13) - ) - (block - (local.set $i35 - (local.get $i28) - ) - (local.set $i36 - (local.get $i2) - ) - (local.set $i34 - (i32.const 127) - ) - (br $while-out14) - ) - (block - (local.set $i31 - (i32.shl - (local.get $i31) - (i32.const 1) - ) - ) - (local.set $i2 - (local.get $i13) - ) - ) - ) - (br $while-in15) - ) - ) - (if - (i32.eq - (local.get $i34) - (i32.const 127) - ) - (if - (i32.lt_u - (local.get $i35) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $i35) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 24) - ) - (local.get $i36) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 12) - ) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 8) - ) - (local.get $i12) - ) - (br $do-once12) - ) - ) - (if - (i32.eq - (local.get $i34) - (i32.const 130) - ) - (block - (local.set $i2 - (i32.add - (local.get $i33) - (i32.const 8) - ) - ) - (local.set $i31 - (i32.load - (local.get $i2) - ) - ) - (local.set $i9 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $i31) - (local.get $i9) - ) - (i32.ge_u - (local.get $i33) - (local.get $i9) - ) - ) - (block - (i32.store - (i32.add - (local.get $i31) - (i32.const 12) - ) - (local.get $i12) - ) - (i32.store - (local.get $i2) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 8) - ) - (local.get $i31) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 12) - ) - (local.get $i33) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once12) - ) - (call $_abort) - ) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $i30) - (local.get $i18) - ) - ) - (i32.store - (local.get $i5) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 24) - ) - (local.get $i5) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 12) - ) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 8) - ) - (local.get $i12) - ) - ) - ) - ) - (local.set $i12 - (i32.add - (i32.load - (i32.const 208) - ) - (i32.const -1) - ) - ) - (i32.store - (i32.const 208) - (local.get $i12) - ) - (if - (i32.eqz - (local.get $i12) - ) - (local.set $i37 - (i32.const 632) - ) - (return) - ) - (loop $while-in17 - (block $while-out16 - (local.set $i12 - (i32.load - (local.get $i37) - ) - ) - (if - (i32.eqz - (local.get $i12) - ) - (br $while-out16) - (local.set $i37 - (i32.add - (local.get $i12) - (i32.const 8) - ) - ) - ) - (br $while-in17) - ) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - (return) - ) - (func $___stdio_write (; 17 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local $i9 i32) - (local $i10 i32) - (local $i11 i32) - (local $i12 i32) - (local $i13 i32) - (local $i14 i32) - (local $i15 i32) - (local $i16 i32) - (local $i17 i32) - (local $i18 i32) - (local $i19 i32) - (local $i20 i32) - (local $i21 i32) - (local $i22 i32) - (local $i23 i32) - (local $i24 i32) - (local.set $i4 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 48) - ) - ) - (local.set $i5 - (i32.add - (local.get $i4) - (i32.const 16) - ) - ) - (local.set $i6 - (local.get $i4) - ) - (local.set $i7 - (i32.add - (local.get $i4) - (i32.const 32) - ) - ) - (local.set $i8 - (i32.add - (local.get $i1) - (i32.const 28) - ) - ) - (local.set $i9 - (i32.load - (local.get $i8) - ) - ) - (i32.store - (local.get $i7) - (local.get $i9) - ) - (local.set $i10 - (i32.add - (local.get $i1) - (i32.const 20) - ) - ) - (local.set $i11 - (i32.sub - (i32.load - (local.get $i10) - ) - (local.get $i9) - ) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 4) - ) - (local.get $i11) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 8) - ) - (local.get $i2) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 12) - ) - (local.get $i3) - ) - (local.set $i2 - (i32.add - (local.get $i1) - (i32.const 60) - ) - ) - (local.set $i9 - (i32.add - (local.get $i1) - (i32.const 44) - ) - ) - (local.set $i12 - (local.get $i7) - ) - (local.set $i7 - (i32.const 2) - ) - (local.set $i13 - (i32.add - (local.get $i11) - (local.get $i3) - ) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.load - (i32.const 8) - ) - ) - (block - (i32.store - (local.get $i5) - (i32.load - (local.get $i2) - ) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 4) - ) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 8) - ) - (local.get $i7) - ) - (local.set $i14 - (call $___syscall_ret - (call $___syscall146 - (i32.const 146) - (local.get $i5) - ) - ) - ) - ) - (block - (call $_pthread_cleanup_push - (i32.const 4) - (local.get $i1) - ) - (i32.store - (local.get $i6) - (i32.load - (local.get $i2) - ) - ) - (i32.store - (i32.add - (local.get $i6) - (i32.const 4) - ) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i6) - (i32.const 8) - ) - (local.get $i7) - ) - (local.set $i11 - (call $___syscall_ret - (call $___syscall146 - (i32.const 146) - (local.get $i6) - ) - ) - ) - (call $_pthread_cleanup_pop - (i32.const 0) - ) - (local.set $i14 - (local.get $i11) - ) - ) - ) - (if - (i32.eq - (local.get $i13) - (local.get $i14) - ) - (block - (local.set $i15 - (i32.const 6) - ) - (br $while-out) - ) - ) - (if - (i32.lt_s - (local.get $i14) - (i32.const 0) - ) - (block - (local.set $i16 - (local.get $i12) - ) - (local.set $i17 - (local.get $i7) - ) - (local.set $i15 - (i32.const 8) - ) - (br $while-out) - ) - ) - (local.set $i11 - (i32.sub - (local.get $i13) - (local.get $i14) - ) - ) - (local.set $i18 - (i32.load - (i32.add - (local.get $i12) - (i32.const 4) - ) - ) - ) - (if - (i32.le_u - (local.get $i14) - (local.get $i18) - ) - (if - (i32.eq - (local.get $i7) - (i32.const 2) - ) - (block - (i32.store - (local.get $i8) - (i32.add - (i32.load - (local.get $i8) - ) - (local.get $i14) - ) - ) - (local.set $i19 - (local.get $i18) - ) - (local.set $i20 - (local.get $i14) - ) - (local.set $i21 - (local.get $i12) - ) - (local.set $i22 - (i32.const 2) - ) - ) - (block - (local.set $i19 - (local.get $i18) - ) - (local.set $i20 - (local.get $i14) - ) - (local.set $i21 - (local.get $i12) - ) - (local.set $i22 - (local.get $i7) - ) - ) - ) - (block - (local.set $i23 - (i32.load - (local.get $i9) - ) - ) - (i32.store - (local.get $i8) - (local.get $i23) - ) - (i32.store - (local.get $i10) - (local.get $i23) - ) - (local.set $i19 - (i32.load - (i32.add - (local.get $i12) - (i32.const 12) - ) - ) - ) - (local.set $i20 - (i32.sub - (local.get $i14) - (local.get $i18) - ) - ) - (local.set $i21 - (i32.add - (local.get $i12) - (i32.const 8) - ) - ) - (local.set $i22 - (i32.add - (local.get $i7) - (i32.const -1) - ) - ) - ) - ) - (i32.store - (local.get $i21) - (i32.add - (i32.load - (local.get $i21) - ) - (local.get $i20) - ) - ) - (i32.store - (i32.add - (local.get $i21) - (i32.const 4) - ) - (i32.sub - (local.get $i19) - (local.get $i20) - ) - ) - (local.set $i12 - (local.get $i21) - ) - (local.set $i7 - (local.get $i22) - ) - (local.set $i13 - (local.get $i11) - ) - (br $while-in) - ) - ) - (if - (i32.eq - (local.get $i15) - (i32.const 6) - ) - (block - (local.set $i13 - (i32.load - (local.get $i9) - ) - ) - (i32.store - (i32.add - (local.get $i1) - (i32.const 16) - ) - (i32.add - (local.get $i13) - (i32.load - (i32.add - (local.get $i1) - (i32.const 48) - ) - ) - ) - ) - (local.set $i9 - (local.get $i13) - ) - (i32.store - (local.get $i8) - (local.get $i9) - ) - (i32.store - (local.get $i10) - (local.get $i9) - ) - (local.set $i24 - (local.get $i3) - ) - ) - (if - (i32.eq - (local.get $i15) - (i32.const 8) - ) - (block - (i32.store - (i32.add - (local.get $i1) - (i32.const 16) - ) - (i32.const 0) - ) - (i32.store - (local.get $i8) - (i32.const 0) - ) - (i32.store - (local.get $i10) - (i32.const 0) - ) - (i32.store - (local.get $i1) - (i32.or - (i32.load - (local.get $i1) - ) - (i32.const 32) - ) - ) - (if - (i32.eq - (local.get $i17) - (i32.const 2) - ) - (local.set $i24 - (i32.const 0) - ) - (local.set $i24 - (i32.sub - (local.get $i3) - (i32.load - (i32.add - (local.get $i16) - (i32.const 4) - ) - ) - ) - ) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $i4) - ) - (return - (local.get $i24) - ) - ) - (func $___fwritex (; 18 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local $i9 i32) - (local $i10 i32) - (local $i11 i32) - (local $i12 i32) - (local $i13 i32) - (local $i14 i32) - (local $i15 i32) - (local.set $i4 - (i32.add - (local.get $i3) - (i32.const 16) - ) - ) - (local.set $i5 - (i32.load - (local.get $i4) - ) - ) - (if - (i32.eqz - (local.get $i5) - ) - (if - (i32.eqz - (call $___towrite - (local.get $i3) - ) - ) - (block - (local.set $i6 - (i32.load - (local.get $i4) - ) - ) - (local.set $i7 - (i32.const 5) - ) - ) - (local.set $i8 - (i32.const 0) - ) - ) - (block - (local.set $i6 - (local.get $i5) - ) - (local.set $i7 - (i32.const 5) - ) - ) - ) - (block $label$break$L5 - (if - (i32.eq - (local.get $i7) - (i32.const 5) - ) - (block - (local.set $i5 - (i32.add - (local.get $i3) - (i32.const 20) - ) - ) - (local.set $i4 - (i32.load - (local.get $i5) - ) - ) - (local.set $i9 - (local.get $i4) - ) - (if - (i32.lt_u - (i32.sub - (local.get $i6) - (local.get $i4) - ) - (local.get $i2) - ) - (block - (local.set $i8 - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $i3) - (local.get $i1) - (local.get $i2) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $i3) - (i32.const 36) - ) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (br $label$break$L5) - ) - ) - (block $label$break$L10 - (if - (i32.gt_s - (i32.load8_s - (i32.add - (local.get $i3) - (i32.const 75) - ) - ) - (i32.const -1) - ) - (block - (local.set $i4 - (local.get $i2) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (local.get $i4) - ) - (block - (local.set $i10 - (local.get $i2) - ) - (local.set $i11 - (local.get $i1) - ) - (local.set $i12 - (local.get $i9) - ) - (local.set $i13 - (i32.const 0) - ) - (br $label$break$L10) - ) - ) - (local.set $i14 - (i32.add - (local.get $i4) - (i32.const -1) - ) - ) - (if - (i32.eq - (i32.load8_s - (i32.add - (local.get $i1) - (local.get $i14) - ) - ) - (i32.const 10) - ) - (block - (local.set $i15 - (local.get $i4) - ) - (br $while-out) - ) - (local.set $i4 - (local.get $i14) - ) - ) - (br $while-in) - ) - ) - (if - (i32.lt_u - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $i3) - (local.get $i1) - (local.get $i15) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $i3) - (i32.const 36) - ) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - (local.get $i15) - ) - (block - (local.set $i8 - (local.get $i15) - ) - (br $label$break$L5) - ) - ) - (local.set $i10 - (i32.sub - (local.get $i2) - (local.get $i15) - ) - ) - (local.set $i11 - (i32.add - (local.get $i1) - (local.get $i15) - ) - ) - (local.set $i12 - (i32.load - (local.get $i5) - ) - ) - (local.set $i13 - (local.get $i15) - ) - ) - (block - (local.set $i10 - (local.get $i2) - ) - (local.set $i11 - (local.get $i1) - ) - (local.set $i12 - (local.get $i9) - ) - (local.set $i13 - (i32.const 0) - ) - ) - ) - ) - (drop - (call $_memcpy - (local.get $i12) - (local.get $i11) - (local.get $i10) - ) - ) - (i32.store - (local.get $i5) - (i32.add - (i32.load - (local.get $i5) - ) - (local.get $i10) - ) - ) - (local.set $i8 - (i32.add - (local.get $i13) - (local.get $i10) - ) - ) - ) - ) - ) - (return - (local.get $i8) - ) - ) - (func $_fflush (; 19 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local $i3 i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (block $do-once - (if - (local.get $i1) - (block - (if - (i32.le_s - (i32.load - (i32.add - (local.get $i1) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (block - (local.set $i2 - (call $___fflush_unlocked - (local.get $i1) - ) - ) - (br $do-once) - ) - ) - (local.set $i3 - (i32.eq - (call $___lockfile - (local.get $i1) - ) - (i32.const 0) - ) - ) - (local.set $i4 - (call $___fflush_unlocked - (local.get $i1) - ) - ) - (if - (local.get $i3) - (local.set $i2 - (local.get $i4) - ) - (block - (call $___unlockfile - (local.get $i1) - ) - (local.set $i2 - (local.get $i4) - ) - ) - ) - ) - (block - (if - (i32.eqz - (i32.load - (i32.const 56) - ) - ) - (local.set $i5 - (i32.const 0) - ) - (local.set $i5 - (call $_fflush - (i32.load - (i32.const 56) - ) - ) - ) - ) - (call $___lock - (i32.const 36) - ) - (local.set $i4 - (i32.load - (i32.const 32) - ) - ) - (if - (i32.eqz - (local.get $i4) - ) - (local.set $i6 - (local.get $i5) - ) - (block - (local.set $i3 - (local.get $i4) - ) - (local.set $i4 - (local.get $i5) - ) - (loop $while-in - (block $while-out - (if - (i32.gt_s - (i32.load - (i32.add - (local.get $i3) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (local.set $i7 - (call $___lockfile - (local.get $i3) - ) - ) - (local.set $i7 - (i32.const 0) - ) - ) - (if - (i32.gt_u - (i32.load - (i32.add - (local.get $i3) - (i32.const 20) - ) - ) - (i32.load - (i32.add - (local.get $i3) - (i32.const 28) - ) - ) - ) - (local.set $i8 - (i32.or - (call $___fflush_unlocked - (local.get $i3) - ) - (local.get $i4) - ) - ) - (local.set $i8 - (local.get $i4) - ) - ) - (if - (local.get $i7) - (call $___unlockfile - (local.get $i3) - ) - ) - (local.set $i3 - (i32.load - (i32.add - (local.get $i3) - (i32.const 56) - ) - ) - ) - (if - (i32.eqz - (local.get $i3) - ) - (block - (local.set $i6 - (local.get $i8) - ) - (br $while-out) - ) - (local.set $i4 - (local.get $i8) - ) - ) - (br $while-in) - ) - ) - ) - ) - (call $___unlock - (i32.const 36) - ) - (local.set $i2 - (local.get $i6) - ) - ) - ) - ) - (return - (local.get $i2) - ) - ) - (func $_strlen (; 20 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local $i3 i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local $i9 i32) - (local $i10 i32) - (local $i11 i32) - (local.set $i2 - (local.get $i1) - ) - (block $label$break$L1 - (if - (i32.eqz - (i32.and - (local.get $i2) - (i32.const 3) - ) - ) - (block - (local.set $i3 - (local.get $i1) - ) - (local.set $i4 - (i32.const 4) - ) - ) - (block - (local.set $i5 - (local.get $i1) - ) - (local.set $i6 - (local.get $i2) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.load8_s - (local.get $i5) - ) - ) - (block - (local.set $i7 - (local.get $i6) - ) - (br $label$break$L1) - ) - ) - (local.set $i8 - (i32.add - (local.get $i5) - (i32.const 1) - ) - ) - (local.set $i6 - (local.get $i8) - ) - (if - (i32.eqz - (i32.and - (local.get $i6) - (i32.const 3) - ) - ) - (block - (local.set $i3 - (local.get $i8) - ) - (local.set $i4 - (i32.const 4) - ) - (br $while-out) - ) - (local.set $i5 - (local.get $i8) - ) - ) - (br $while-in) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $i4) - (i32.const 4) - ) - (block - (local.set $i4 - (local.get $i3) - ) - (loop $while-in1 - (block $while-out0 - (local.set $i3 - (i32.load - (local.get $i4) - ) - ) - (if - (i32.eqz - (i32.and - (i32.xor - (i32.and - (local.get $i3) - (i32.const -2139062144) - ) - (i32.const -2139062144) - ) - (i32.add - (local.get $i3) - (i32.const -16843009) - ) - ) - ) - (local.set $i4 - (i32.add - (local.get $i4) - (i32.const 4) - ) - ) - (block - (local.set $i9 - (local.get $i3) - ) - (local.set $i10 - (local.get $i4) - ) - (br $while-out0) - ) - ) - (br $while-in1) - ) - ) - (if - (i32.eqz - (i32.shr_s - (i32.shl - (i32.and - (local.get $i9) - (i32.const 255) - ) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $i11 - (local.get $i10) - ) - (block - (local.set $i9 - (local.get $i10) - ) - (loop $while-in3 - (block $while-out2 - (local.set $i10 - (i32.add - (local.get $i9) - (i32.const 1) - ) - ) - (if - (i32.eqz - (i32.load8_s - (local.get $i10) - ) - ) - (block - (local.set $i11 - (local.get $i10) - ) - (br $while-out2) - ) - (local.set $i9 - (local.get $i10) - ) - ) - (br $while-in3) - ) - ) - ) - ) - (local.set $i7 - (local.get $i11) - ) - ) - ) - (return - (i32.sub - (local.get $i7) - (local.get $i2) - ) - ) - ) - (func $___overflow (; 21 ;) (param $i1 i32) (param $i2 i32) (result i32) - (local $i3 i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local $i9 i32) - (local $i10 i32) - (local $i11 i32) - (local.set $i3 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (local.set $i4 - (local.get $i3) - ) - (local.set $i5 - (i32.and - (local.get $i2) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $i4) - (local.get $i5) - ) - (local.set $i6 - (i32.add - (local.get $i1) - (i32.const 16) - ) - ) - (local.set $i7 - (i32.load - (local.get $i6) - ) - ) - (if - (i32.eqz - (local.get $i7) - ) - (if - (i32.eqz - (call $___towrite - (local.get $i1) - ) - ) - (block - (local.set $i8 - (i32.load - (local.get $i6) - ) - ) - (local.set $i9 - (i32.const 4) - ) - ) - (local.set $i10 - (i32.const -1) - ) - ) - (block - (local.set $i8 - (local.get $i7) - ) - (local.set $i9 - (i32.const 4) - ) - ) - ) - (block $do-once - (if - (i32.eq - (local.get $i9) - (i32.const 4) - ) - (block - (local.set $i7 - (i32.add - (local.get $i1) - (i32.const 20) - ) - ) - (local.set $i6 - (i32.load - (local.get $i7) - ) - ) - (if - (if (result i32) - (i32.lt_u - (local.get $i6) - (local.get $i8) - ) - (block (result i32) - (local.set $i11 - (i32.and - (local.get $i2) - (i32.const 255) - ) - ) - (i32.ne - (local.get $i11) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 75) - ) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (local.get $i7) - (i32.add - (local.get $i6) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $i6) - (local.get $i5) - ) - (local.set $i10 - (local.get $i11) - ) - (br $do-once) - ) - ) - (if - (i32.eq - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $i1) - (local.get $i4) - (i32.const 1) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $i1) - (i32.const 36) - ) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - (i32.const 1) - ) - (local.set $i10 - (i32.load8_u - (local.get $i4) - ) - ) - (local.set $i10 - (i32.const -1) - ) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $i3) - ) - (return - (local.get $i10) - ) - ) - (func $___fflush_unlocked (; 22 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local $i3 i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local.set $i2 - (i32.add - (local.get $i1) - (i32.const 20) - ) - ) - (local.set $i3 - (i32.add - (local.get $i1) - (i32.const 28) - ) - ) - (if - (if (result i32) - (i32.gt_u - (i32.load - (local.get $i2) - ) - (i32.load - (local.get $i3) - ) - ) - (block (result i32) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $i1) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $i1) - (i32.const 36) - ) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (i32.eq - (i32.load - (local.get $i2) - ) - (i32.const 0) - ) - ) - (i32.const 0) - ) - (local.set $i4 - (i32.const -1) - ) - (block - (local.set $i5 - (i32.add - (local.get $i1) - (i32.const 4) - ) - ) - (local.set $i6 - (i32.load - (local.get $i5) - ) - ) - (local.set $i7 - (i32.add - (local.get $i1) - (i32.const 8) - ) - ) - (local.set $i8 - (i32.load - (local.get $i7) - ) - ) - (if - (i32.lt_u - (local.get $i6) - (local.get $i8) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $i1) - (i32.sub - (local.get $i6) - (local.get $i8) - ) - (i32.const 1) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $i1) - (i32.const 40) - ) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.store - (i32.add - (local.get $i1) - (i32.const 16) - ) - (i32.const 0) - ) - (i32.store - (local.get $i3) - (i32.const 0) - ) - (i32.store - (local.get $i2) - (i32.const 0) - ) - (i32.store - (local.get $i7) - (i32.const 0) - ) - (i32.store - (local.get $i5) - (i32.const 0) - ) - (local.set $i4 - (i32.const 0) - ) - ) - ) - (return - (local.get $i4) - ) - ) - (func $_memcpy (; 23 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) - (local $i4 i32) - (if - (i32.ge_s - (local.get $i3) - (i32.const 4096) - ) - (return - (call $_emscripten_memcpy_big - (local.get $i1) - (local.get $i2) - (local.get $i3) - ) - ) - ) - (local.set $i4 - (local.get $i1) - ) - (if - (i32.eq - (i32.and - (local.get $i1) - (i32.const 3) - ) - (i32.and - (local.get $i2) - (i32.const 3) - ) - ) - (block - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.and - (local.get $i1) - (i32.const 3) - ) - ) - (br $while-out) - ) - (block - (if - (i32.eqz - (local.get $i3) - ) - (return - (local.get $i4) - ) - ) - (i32.store8 - (local.get $i1) - (i32.load8_s - (local.get $i2) - ) - ) - (local.set $i1 - (i32.add - (local.get $i1) - (i32.const 1) - ) - ) - (local.set $i2 - (i32.add - (local.get $i2) - (i32.const 1) - ) - ) - (local.set $i3 - (i32.sub - (local.get $i3) - (i32.const 1) - ) - ) - ) - (br $while-in) - ) - ) - (loop $while-in1 - (block $while-out0 - (if - (i32.eqz - (i32.ge_s - (local.get $i3) - (i32.const 4) - ) - ) - (br $while-out0) - ) - (block - (i32.store - (local.get $i1) - (i32.load - (local.get $i2) - ) - ) - (local.set $i1 - (i32.add - (local.get $i1) - (i32.const 4) - ) - ) - (local.set $i2 - (i32.add - (local.get $i2) - (i32.const 4) - ) - ) - (local.set $i3 - (i32.sub - (local.get $i3) - (i32.const 4) - ) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (loop $while-in3 - (block $while-out2 - (if - (i32.eqz - (i32.gt_s - (local.get $i3) - (i32.const 0) - ) - ) - (br $while-out2) - ) - (block - (i32.store8 - (local.get $i1) - (i32.load8_s - (local.get $i2) - ) - ) - (local.set $i1 - (i32.add - (local.get $i1) - (i32.const 1) - ) - ) - (local.set $i2 - (i32.add - (local.get $i2) - (i32.const 1) - ) - ) - (local.set $i3 - (i32.sub - (local.get $i3) - (i32.const 1) - ) - ) - ) - (br $while-in3) - ) - ) - (return - (local.get $i4) - ) - ) - (func $runPostSets (; 24 ;) - (nop) - ) - (func $_memset (; 25 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local.set $i4 - (i32.add - (local.get $i1) - (local.get $i3) - ) - ) - (if - (i32.ge_s - (local.get $i3) - (i32.const 20) - ) - (block - (local.set $i2 - (i32.and - (local.get $i2) - (i32.const 255) - ) - ) - (local.set $i5 - (i32.and - (local.get $i1) - (i32.const 3) - ) - ) - (local.set $i6 - (i32.or - (i32.or - (i32.or - (local.get $i2) - (i32.shl - (local.get $i2) - (i32.const 8) - ) - ) - (i32.shl - (local.get $i2) - (i32.const 16) - ) - ) - (i32.shl - (local.get $i2) - (i32.const 24) - ) - ) - ) - (local.set $i7 - (i32.and - (local.get $i4) - (i32.xor - (i32.const 3) - (i32.const -1) - ) - ) - ) - (if - (local.get $i5) - (block - (local.set $i5 - (i32.sub - (i32.add - (local.get $i1) - (i32.const 4) - ) - (local.get $i5) - ) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.lt_s - (local.get $i1) - (local.get $i5) - ) - ) - (br $while-out) - ) - (block - (i32.store8 - (local.get $i1) - (local.get $i2) - ) - (local.set $i1 - (i32.add - (local.get $i1) - (i32.const 1) - ) - ) - ) - (br $while-in) - ) - ) - ) - ) - (loop $while-in1 - (block $while-out0 - (if - (i32.eqz - (i32.lt_s - (local.get $i1) - (local.get $i7) - ) - ) - (br $while-out0) - ) - (block - (i32.store - (local.get $i1) - (local.get $i6) - ) - (local.set $i1 - (i32.add - (local.get $i1) - (i32.const 4) - ) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (loop $while-in3 - (block $while-out2 - (if - (i32.eqz - (i32.lt_s - (local.get $i1) - (local.get $i4) - ) - ) - (br $while-out2) - ) - (block - (i32.store8 - (local.get $i1) - (local.get $i2) - ) - (local.set $i1 - (i32.add - (local.get $i1) - (i32.const 1) - ) - ) - ) - (br $while-in3) - ) - ) - (return - (i32.sub - (local.get $i1) - (local.get $i3) - ) - ) - ) - (func $_puts (; 26 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local $i3 i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local.set $i2 - (i32.load - (i32.const 52) - ) - ) - (if - (i32.gt_s - (i32.load - (i32.add - (local.get $i2) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (local.set $i3 - (call $___lockfile - (local.get $i2) - ) - ) - (local.set $i3 - (i32.const 0) - ) - ) - (block $do-once - (if - (i32.lt_s - (call $_fputs - (local.get $i1) - (local.get $i2) - ) - (i32.const 0) - ) - (local.set $i4 - (i32.const 1) - ) - (block - (if - (if (result i32) - (i32.ne - (i32.load8_s - (i32.add - (local.get $i2) - (i32.const 75) - ) - ) - (i32.const 10) - ) - (block (result i32) - (local.set $i5 - (i32.add - (local.get $i2) - (i32.const 20) - ) - ) - (block (result i32) - (local.set $i6 - (i32.load - (local.get $i5) - ) - ) - (i32.lt_u - (local.get $i6) - (i32.load - (i32.add - (local.get $i2) - (i32.const 16) - ) - ) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (local.get $i5) - (i32.add - (local.get $i6) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $i6) - (i32.const 10) - ) - (local.set $i4 - (i32.const 0) - ) - (br $do-once) - ) - ) - (local.set $i4 - (i32.lt_s - (call $___overflow - (local.get $i2) - (i32.const 10) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (if - (local.get $i3) - (call $___unlockfile - (local.get $i2) - ) - ) - (return - (i32.shr_s - (i32.shl - (local.get $i4) - (i32.const 31) - ) - (i32.const 31) - ) - ) - ) - (func $___stdio_seek (; 27 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local.set $i4 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 32) - ) - ) - (local.set $i5 - (local.get $i4) - ) - (local.set $i6 - (i32.add - (local.get $i4) - (i32.const 20) - ) - ) - (i32.store - (local.get $i5) - (i32.load - (i32.add - (local.get $i1) - (i32.const 60) - ) - ) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 4) - ) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 8) - ) - (local.get $i2) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 12) - ) - (local.get $i6) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 16) - ) - (local.get $i3) - ) - (if - (i32.lt_s - (call $___syscall_ret - (call $___syscall140 - (i32.const 140) - (local.get $i5) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (local.get $i6) - (i32.const -1) - ) - (local.set $i7 - (i32.const -1) - ) - ) - (local.set $i7 - (i32.load - (local.get $i6) - ) - ) - ) - (global.set $STACKTOP - (local.get $i4) - ) - (return - (local.get $i7) - ) - ) - (func $___towrite (; 28 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local $i3 i32) - (local $i4 i32) - (local.set $i2 - (i32.add - (local.get $i1) - (i32.const 74) - ) - ) - (local.set $i3 - (i32.load8_s - (local.get $i2) - ) - ) - (i32.store8 - (local.get $i2) - (i32.or - (i32.add - (local.get $i3) - (i32.const 255) - ) - (local.get $i3) - ) - ) - (local.set $i3 - (i32.load - (local.get $i1) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $i3) - (i32.const 8) - ) - ) - (block - (i32.store - (i32.add - (local.get $i1) - (i32.const 8) - ) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $i1) - (i32.const 4) - ) - (i32.const 0) - ) - (local.set $i2 - (i32.load - (i32.add - (local.get $i1) - (i32.const 44) - ) - ) - ) - (i32.store - (i32.add - (local.get $i1) - (i32.const 28) - ) - (local.get $i2) - ) - (i32.store - (i32.add - (local.get $i1) - (i32.const 20) - ) - (local.get $i2) - ) - (i32.store - (i32.add - (local.get $i1) - (i32.const 16) - ) - (i32.add - (local.get $i2) - (i32.load - (i32.add - (local.get $i1) - (i32.const 48) - ) - ) - ) - ) - (local.set $i4 - (i32.const 0) - ) - ) - (block - (i32.store - (local.get $i1) - (i32.or - (local.get $i3) - (i32.const 32) - ) - ) - (local.set $i4 - (i32.const -1) - ) - ) - ) - (return - (local.get $i4) - ) - ) - (func $i32u-div (; 29 ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (i32.eqz - (local.get $1) - ) - (i32.const 0) - (i32.div_u - (local.get $0) - (local.get $1) - ) - ) - ) - (func $_fwrite (; 30 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (param $i4 i32) (result i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local $i9 i32) - (local.set $i5 - (i32.mul - (local.get $i3) - (local.get $i2) - ) - ) - (if - (i32.gt_s - (i32.load - (i32.add - (local.get $i4) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (block - (local.set $i6 - (i32.eq - (call $___lockfile - (local.get $i4) - ) - (i32.const 0) - ) - ) - (local.set $i7 - (call $___fwritex - (local.get $i1) - (local.get $i5) - (local.get $i4) - ) - ) - (if - (local.get $i6) - (local.set $i8 - (local.get $i7) - ) - (block - (call $___unlockfile - (local.get $i4) - ) - (local.set $i8 - (local.get $i7) - ) - ) - ) - ) - (local.set $i8 - (call $___fwritex - (local.get $i1) - (local.get $i5) - (local.get $i4) - ) - ) - ) - (if - (i32.eq - (local.get $i8) - (local.get $i5) - ) - (local.set $i9 - (local.get $i3) - ) - (local.set $i9 - (call $i32u-div - (local.get $i8) - (local.get $i2) - ) - ) - ) - (return - (local.get $i9) - ) - ) - (func $___stdout_write (; 31 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) - (local $i4 i32) - (local $i5 i32) - (local.set $i4 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 80) - ) - ) - (local.set $i5 - (local.get $i4) - ) - (i32.store - (i32.add - (local.get $i1) - (i32.const 36) - ) - (i32.const 5) - ) - (if - (if (result i32) - (i32.eq - (i32.and - (i32.load - (local.get $i1) - ) - (i32.const 64) - ) - (i32.const 0) - ) - (block (result i32) - (i32.store - (local.get $i5) - (i32.load - (i32.add - (local.get $i1) - (i32.const 60) - ) - ) - ) - (block (result i32) - (i32.store - (i32.add - (local.get $i5) - (i32.const 4) - ) - (i32.const 21505) - ) - (block (result i32) - (i32.store - (i32.add - (local.get $i5) - (i32.const 8) - ) - (i32.add - (local.get $i4) - (i32.const 12) - ) - ) - (i32.ne - (call $___syscall54 - (i32.const 54) - (local.get $i5) - ) - (i32.const 0) - ) - ) - ) - ) - (i32.const 0) - ) - (i32.store8 - (i32.add - (local.get $i1) - (i32.const 75) - ) - (i32.const -1) - ) - ) - (local.set $i5 - (call $___stdio_write - (local.get $i1) - (local.get $i2) - (local.get $i3) - ) - ) - (global.set $STACKTOP - (local.get $i4) - ) - (return - (local.get $i5) - ) - ) - (func $copyTempDouble (; 32 ;) (param $i1 i32) - (i32.store8 - (global.get $tempDoublePtr) - (i32.load8_s - (local.get $i1) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 1) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 1) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 2) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 2) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 3) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 3) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 4) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 4) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 5) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 5) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 6) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 6) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 7) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 7) - ) - ) - ) - ) - (func $___stdio_close (; 33 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local $i3 i32) - (local.set $i2 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (local.set $i3 - (local.get $i2) - ) - (i32.store - (local.get $i3) - (i32.load - (i32.add - (local.get $i1) - (i32.const 60) - ) - ) - ) - (local.set $i1 - (call $___syscall_ret - (call $___syscall6 - (i32.const 6) - (local.get $i3) - ) - ) - ) - (global.set $STACKTOP - (local.get $i2) - ) - (return - (local.get $i1) - ) - ) - (func $copyTempFloat (; 34 ;) (param $i1 i32) - (i32.store8 - (global.get $tempDoublePtr) - (i32.load8_s - (local.get $i1) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 1) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 1) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 2) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 2) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 3) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 3) - ) - ) - ) - ) - (func $___syscall_ret (; 35 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (if - (i32.gt_u - (local.get $i1) - (i32.const -4096) - ) - (block - (i32.store - (call $___errno_location) - (i32.sub - (i32.const 0) - (local.get $i1) - ) - ) - (local.set $i2 - (i32.const -1) - ) - ) - (local.set $i2 - (local.get $i1) - ) - ) - (return - (local.get $i2) - ) - ) - (func $dynCall_iiii (; 36 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (param $i4 i32) (result i32) - (return - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $i2) - (local.get $i3) - (local.get $i4) - (i32.add - (i32.and - (local.get $i1) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - (func $stackAlloc (; 37 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local.set $i2 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (local.get $i1) - ) - ) - (global.set $STACKTOP - (i32.and - (i32.add - (global.get $STACKTOP) - (i32.const 15) - ) - (i32.const -16) - ) - ) - (return - (local.get $i2) - ) - ) - (func $___errno_location (; 38 ;) (result i32) - (local $i1 i32) - (if - (i32.eqz - (i32.load - (i32.const 8) - ) - ) - (local.set $i1 - (i32.const 60) - ) - (local.set $i1 - (i32.load - (i32.add - (call $_pthread_self) - (i32.const 60) - ) - ) - ) - ) - (return - (local.get $i1) - ) - ) - (func $setThrew (; 39 ;) (param $i1 i32) (param $i2 i32) - (if - (i32.eqz - (global.get $__THREW__) - ) - (block - (global.set $__THREW__ - (local.get $i1) - ) - (global.set $threwValue - (local.get $i2) - ) - ) - ) - ) - (func $_fputs (; 40 ;) (param $i1 i32) (param $i2 i32) (result i32) - (return - (i32.add - (call $_fwrite - (local.get $i1) - (call $_strlen - (local.get $i1) - ) - (i32.const 1) - (local.get $i2) - ) - (i32.const -1) - ) - ) - ) - (func $dynCall_ii (; 41 ;) (param $i1 i32) (param $i2 i32) (result i32) - (return - (call_indirect (type $i32_=>_i32) - (local.get $i2) - (i32.add - (i32.and - (local.get $i1) - (i32.const 1) - ) - (i32.const 0) - ) - ) - ) - ) - (func $_cleanup_418 (; 42 ;) (param $i1 i32) - (if - (i32.eqz - (i32.load - (i32.add - (local.get $i1) - (i32.const 68) - ) - ) - ) - (call $___unlockfile - (local.get $i1) - ) - ) - (return) - ) - (func $establishStackSpace (; 43 ;) (param $i1 i32) (param $i2 i32) - (global.set $STACKTOP - (local.get $i1) - ) - (global.set $STACK_MAX - (local.get $i2) - ) - ) - (func $dynCall_vi (; 44 ;) (param $i1 i32) (param $i2 i32) - (call_indirect (type $i32_=>_none) - (local.get $i2) - (i32.add - (i32.and - (local.get $i1) - (i32.const 7) - ) - (i32.const 10) - ) - ) - ) - (func $b1 (; 45 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) - (call $abort - (i32.const 1) - ) - (return - (i32.const 0) - ) - ) - (func $stackRestore (; 46 ;) (param $i1 i32) - (global.set $STACKTOP - (local.get $i1) - ) - ) - (func $setTempRet0 (; 47 ;) (param $i1 i32) - (global.set $tempRet0 - (local.get $i1) - ) - ) - (func $b0 (; 48 ;) (param $i1 i32) (result i32) - (call $abort - (i32.const 0) - ) - (return - (i32.const 0) - ) - ) - (func $___unlockfile (; 49 ;) (param $i1 i32) - (return) - ) - (func $___lockfile (; 50 ;) (param $i1 i32) (result i32) - (return - (i32.const 0) - ) - ) - (func $getTempRet0 (; 51 ;) (result i32) - (return - (global.get $tempRet0) - ) - ) - (func $_main (; 52 ;) (result i32) - (drop - (call $_puts - (i32.const 672) - ) - ) - (return - (i32.const 0) - ) - ) - (func $stackSave (; 53 ;) (result i32) - (return - (global.get $STACKTOP) - ) - ) - (func $b2 (; 54 ;) (param $i1 i32) - (call $abort - (i32.const 2) - ) - ) -) diff -Nru binaryen-91/test/emcc_O2_hello_world.fromasm.imprecise binaryen-99/test/emcc_O2_hello_world.fromasm.imprecise --- binaryen-91/test/emcc_O2_hello_world.fromasm.imprecise 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/emcc_O2_hello_world.fromasm.imprecise 1970-01-01 00:00:00.000000000 +0000 @@ -1,9032 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 18 18 funcref)) - (elem (global.get $__table_base) $b0 $___stdio_close $b1 $b1 $___stdout_write $___stdio_seek $b1 $___stdio_write $b1 $b1 $b2 $b2 $b2 $b2 $_cleanup_418 $b2 $b2 $b2) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) - (import "env" "abort" (func $abort (param i32))) - (import "env" "_pthread_cleanup_pop" (func $_pthread_cleanup_pop (param i32))) - (import "env" "_pthread_self" (func $_pthread_self (result i32))) - (import "env" "_sysconf" (func $_sysconf (param i32) (result i32))) - (import "env" "___lock" (func $___lock (param i32))) - (import "env" "___syscall6" (func $___syscall6 (param i32 i32) (result i32))) - (import "env" "_abort" (func $_abort)) - (import "env" "_sbrk" (func $_sbrk (param i32) (result i32))) - (import "env" "_time" (func $_time (param i32) (result i32))) - (import "env" "_pthread_cleanup_push" (func $_pthread_cleanup_push (param i32 i32))) - (import "env" "_emscripten_memcpy_big" (func $_emscripten_memcpy_big (param i32 i32 i32) (result i32))) - (import "env" "___syscall54" (func $___syscall54 (param i32 i32) (result i32))) - (import "env" "___unlock" (func $___unlock (param i32))) - (import "env" "___syscall140" (func $___syscall140 (param i32 i32) (result i32))) - (import "env" "___syscall146" (func $___syscall146 (param i32 i32) (result i32))) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (global $STACK_MAX (mut i32) (global.get $STACK_MAX$asm2wasm$import)) - (global $__THREW__ (mut i32) (i32.const 0)) - (global $threwValue (mut i32) (i32.const 0)) - (global $tempRet0 (mut i32) (i32.const 0)) - (export "_free" (func $_free)) - (export "_main" (func $_main)) - (export "_memset" (func $_memset)) - (export "_malloc" (func $_malloc)) - (export "_memcpy" (func $_memcpy)) - (export "_fflush" (func $_fflush)) - (export "___errno_location" (func $___errno_location)) - (export "runPostSets" (func $runPostSets)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackSave" (func $stackSave)) - (export "stackRestore" (func $stackRestore)) - (export "establishStackSpace" (func $establishStackSpace)) - (export "setThrew" (func $setThrew)) - (export "setTempRet0" (func $setTempRet0)) - (export "getTempRet0" (func $getTempRet0)) - (export "dynCall_ii" (func $dynCall_ii)) - (export "dynCall_iiii" (func $dynCall_iiii)) - (export "dynCall_vi" (func $dynCall_vi)) - (func $_malloc (; 15 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i32) - (local $44 i32) - (local $45 i32) - (local $46 i32) - (local $47 i32) - (if - (i32.lt_u - (local.get $0) - (i32.const 245) - ) - (block - (if - (i32.and - (local.tee $5 - (i32.shr_u - (local.tee $18 - (i32.load - (i32.const 176) - ) - ) - (local.tee $6 - (i32.shr_u - (local.tee $4 - (select - (i32.const 16) - (i32.and - (i32.add - (local.get $0) - (i32.const 11) - ) - (i32.const -8) - ) - (i32.lt_u - (local.get $0) - (i32.const 11) - ) - ) - ) - (i32.const 3) - ) - ) - ) - ) - (i32.const 3) - ) - (block - (local.set $0 - (i32.load - (local.tee $6 - (i32.add - (local.tee $4 - (i32.load offset=8 - (local.tee $1 - (i32.add - (i32.shl - (local.tee $3 - (i32.add - (local.get $6) - (i32.xor - (i32.and - (local.get $5) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.ne - (local.get $0) - (local.get $1) - ) - (block - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $4) - (i32.load offset=12 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $0) - (local.get $1) - ) - (i32.store offset=8 - (local.get $1) - (local.get $0) - ) - ) - (call $_abort) - ) - ) - (i32.store - (i32.const 176) - (i32.and - (i32.xor - (i32.shl - (i32.const 1) - (local.get $3) - ) - (i32.const -1) - ) - (local.get $18) - ) - ) - ) - (i32.store offset=4 - (local.get $4) - (i32.or - (local.tee $0 - (i32.shl - (local.get $3) - (i32.const 3) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $4) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - (return - (local.get $6) - ) - ) - ) - (if - (i32.gt_u - (local.get $4) - (local.tee $0 - (i32.load - (i32.const 184) - ) - ) - ) - (block - (if - (local.get $5) - (block - (local.set $1 - (i32.and - (i32.shr_u - (local.tee $3 - (i32.add - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.and - (i32.or - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.shl - (i32.const 2) - (local.get $6) - ) - ) - ) - (local.get $1) - ) - (i32.shl - (local.get $5) - (local.get $6) - ) - ) - ) - ) - (local.get $1) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $3 - (i32.and - (i32.shr_u - (local.tee $6 - (i32.shr_u - (local.get $3) - (local.get $1) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $6 - (i32.and - (i32.shr_u - (local.tee $2 - (i32.shr_u - (local.get $6) - (local.get $3) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $2 - (i32.and - (i32.shr_u - (local.tee $5 - (i32.shr_u - (local.get $2) - (local.get $6) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $1 - (i32.load - (local.tee $10 - (i32.add - (local.tee $6 - (i32.load offset=8 - (local.tee $3 - (i32.add - (i32.shl - (local.tee $2 - (i32.add - (i32.or - (local.tee $10 - (i32.and - (i32.shr_u - (local.tee $5 - (i32.shr_u - (local.get $5) - (local.get $2) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (i32.or - (local.get $2) - (i32.or - (local.get $6) - (i32.or - (local.get $1) - (local.get $3) - ) - ) - ) - ) - (i32.shr_u - (local.get $5) - (local.get $10) - ) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.ne - (local.get $1) - (local.get $3) - ) - (block - (if - (i32.lt_u - (local.get $1) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $6) - (i32.load offset=12 - (local.get $1) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $1) - ) - (local.set $13 - (i32.load - (i32.const 184) - ) - ) - ) - (call $_abort) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.xor - (i32.shl - (i32.const 1) - (local.get $2) - ) - (i32.const -1) - ) - (local.get $18) - ) - ) - (local.set $13 - (local.get $0) - ) - ) - ) - (i32.store offset=4 - (local.get $6) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $5 - (i32.add - (local.get $4) - (local.get $6) - ) - ) - (i32.or - (local.tee $6 - (i32.sub - (i32.shl - (local.get $2) - (i32.const 3) - ) - (local.get $4) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $5) - (local.get $6) - ) - (local.get $6) - ) - (if - (local.get $13) - (block - (local.set $3 - (i32.load - (i32.const 196) - ) - ) - (local.set $0 - (i32.add - (i32.shl - (local.tee $1 - (i32.shr_u - (local.get $13) - (i32.const 3) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 176) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $25 - (local.get $1) - ) - (local.set $8 - (local.get $4) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $25 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $8 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $25) - (local.get $3) - ) - (i32.store offset=12 - (local.get $8) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $8) - ) - (i32.store offset=12 - (local.get $3) - (local.get $0) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $6) - ) - (i32.store - (i32.const 196) - (local.get $5) - ) - (return - (local.get $10) - ) - ) - ) - (if - (local.tee $0 - (i32.load - (i32.const 180) - ) - ) - (block - (local.set $0 - (i32.and - (i32.shr_u - (local.tee $1 - (i32.add - (i32.and - (i32.sub - (i32.const 0) - (local.get $0) - ) - (local.get $0) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $1 - (i32.and - (i32.shr_u - (local.tee $3 - (i32.shr_u - (local.get $1) - (local.get $0) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $3 - (i32.and - (i32.shr_u - (local.tee $6 - (i32.shr_u - (local.get $3) - (local.get $1) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $6 - (i32.and - (i32.shr_u - (local.tee $8 - (i32.shr_u - (local.get $6) - (local.get $3) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $5 - (i32.sub - (i32.and - (i32.load offset=4 - (local.tee $1 - (i32.load offset=480 - (i32.shl - (i32.add - (i32.or - (local.tee $5 - (i32.and - (i32.shr_u - (local.tee $8 - (i32.shr_u - (local.get $8) - (local.get $6) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (i32.or - (local.get $6) - (i32.or - (local.get $3) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - ) - (i32.shr_u - (local.get $8) - (local.get $5) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.const -8) - ) - (local.get $4) - ) - ) - (local.set $0 - (local.get $1) - ) - (loop $while-in - (block $while-out - (if - (local.tee $3 - (i32.load offset=16 - (local.get $1) - ) - ) - (local.set $1 - (local.get $3) - ) - (if - (i32.eqz - (local.tee $1 - (i32.load offset=20 - (local.get $1) - ) - ) - ) - (block - (local.set $8 - (local.get $0) - ) - (br $while-out) - ) - ) - ) - (local.set $3 - (i32.lt_u - (local.tee $6 - (i32.sub - (i32.and - (i32.load offset=4 - (local.get $1) - ) - (i32.const -8) - ) - (local.get $4) - ) - ) - (local.get $5) - ) - ) - (local.set $5 - (select - (local.get $6) - (local.get $5) - (local.get $3) - ) - ) - (local.set $0 - (select - (local.get $1) - (local.get $0) - (local.get $3) - ) - ) - (br $while-in) - ) - ) - (if - (i32.lt_u - (local.get $8) - (local.tee $18 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (if - (i32.ge_u - (local.get $8) - (local.tee $14 - (i32.add - (local.get $4) - (local.get $8) - ) - ) - ) - (call $_abort) - ) - (local.set $10 - (i32.load offset=24 - (local.get $8) - ) - ) - (if - (i32.eq - (local.get $8) - (local.tee $0 - (i32.load offset=12 - (local.get $8) - ) - ) - ) - (block $do-once4 - (if - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $8) - (i32.const 20) - ) - ) - ) - ) - ) - (br_if $do-once4 - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $8) - (i32.const 16) - ) - ) - ) - ) - ) - ) - ) - (loop $while-in7 - (if - (local.tee $6 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $6) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in7) - ) - ) - (if - (local.tee $6 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $6) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in7) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $18) - ) - (call $_abort) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $2 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $8) - ) - ) - (local.get $18) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $8) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $8) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $2 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $10) - (block $do-once8 - (if - (i32.eq - (i32.load offset=480 - (local.tee $1 - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $8) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $8) - ) - (block - (i32.store offset=480 - (local.get $1) - (local.get $2) - ) - (if - (i32.eqz - (local.get $2) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $do-once8) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $10) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $8) - (i32.load offset=16 - (local.get $10) - ) - ) - (i32.store offset=16 - (local.get $10) - (local.get $2) - ) - (i32.store offset=20 - (local.get $10) - (local.get $2) - ) - ) - (br_if $do-once8 - (i32.eqz - (local.get $2) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $2) - (local.tee $1 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $2) - (local.get $10) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $8) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $2) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $2) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $8) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $2) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $2) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $5) - (i32.const 16) - ) - (block - (i32.store offset=4 - (local.get $8) - (i32.or - (local.tee $0 - (i32.add - (local.get $4) - (local.get $5) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $8) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - ) - (block - (i32.store offset=4 - (local.get $8) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.get $14) - (i32.or - (local.get $5) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $5) - (local.get $14) - ) - (local.get $5) - ) - (if - (local.tee $0 - (i32.load - (i32.const 184) - ) - ) - (block - (local.set $3 - (i32.load - (i32.const 196) - ) - ) - (local.set $0 - (i32.add - (i32.shl - (local.tee $1 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 176) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $19 - (local.get $1) - ) - (local.set $7 - (local.get $4) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $19 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $7 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $19) - (local.get $3) - ) - (i32.store offset=12 - (local.get $7) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $7) - ) - (i32.store offset=12 - (local.get $3) - (local.get $0) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $5) - ) - (i32.store - (i32.const 196) - (local.get $14) - ) - ) - ) - (return - (i32.add - (local.get $8) - (i32.const 8) - ) - ) - ) - ) - ) - ) - ) - (local.set $4 - (if (result i32) - (i32.le_u - (local.get $0) - (i32.const -65) - ) - (block $do-once (result i32) - (local.set $5 - (i32.and - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 11) - ) - ) - (i32.const -8) - ) - ) - (if (result i32) - (local.tee $39 - (i32.load - (i32.const 180) - ) - ) - (block (result i32) - (local.set $19 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $0) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $5) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $8 - (i32.shl - (local.get $0) - (local.tee $2 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $5) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $7 - (i32.and - (i32.shr_u - (i32.add - (local.tee $8 - (i32.shl - (local.get $8) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $2) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $8) - (local.get $7) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (local.set $2 - (i32.sub - (i32.const 0) - (local.get $5) - ) - ) - (if - (local.tee $7 - (i32.load offset=480 - (i32.shl - (local.get $19) - (i32.const 2) - ) - ) - ) - (block $label$break$L123 - (local.set $0 - (i32.shl - (local.get $5) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $19) - (i32.const 1) - ) - ) - (i32.eq - (local.get $19) - (i32.const 31) - ) - ) - ) - ) - (local.set $8 - (i32.const 0) - ) - (local.set $18 - (loop $while-in14 (result i32) - (if - (i32.lt_u - (local.tee $13 - (i32.sub - (local.tee $9 - (i32.and - (i32.load offset=4 - (local.get $7) - ) - (i32.const -8) - ) - ) - (local.get $5) - ) - ) - (local.get $2) - ) - (local.set $2 - (if (result i32) - (i32.eq - (local.get $5) - (local.get $9) - ) - (block - (local.set $4 - (local.get $13) - ) - (local.set $20 - (local.get $7) - ) - (local.set $6 - (local.get $7) - ) - (local.set $9 - (i32.const 90) - ) - (br $label$break$L123) - ) - (block (result i32) - (local.set $8 - (local.get $7) - ) - (local.get $13) - ) - ) - ) - ) - (local.set $13 - (select - (local.get $25) - (local.tee $13 - (i32.load offset=20 - (local.get $7) - ) - ) - (i32.or - (i32.eqz - (local.get $13) - ) - (i32.eq - (local.tee $7 - (i32.load - (i32.add - (i32.add - (local.get $7) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $0) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - (local.get $13) - ) - ) - ) - ) - (if (result i32) - (local.tee $9 - (i32.eqz - (local.get $7) - ) - ) - (block (result i32) - (local.set $21 - (local.get $13) - ) - (local.set $26 - (local.get $8) - ) - (local.set $9 - (i32.const 86) - ) - (local.get $2) - ) - (block - (local.set $25 - (local.get $13) - ) - (local.set $0 - (i32.shl - (local.get $0) - (i32.xor - (local.get $9) - (i32.const 1) - ) - ) - ) - (br $while-in14) - ) - ) - ) - ) - ) - (block - (local.set $18 - (local.get $2) - ) - (local.set $9 - (i32.const 86) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 86) - ) - (block - (if - (i32.eqz - (i32.or - (local.get $21) - (local.get $26) - ) - ) - (block - (drop - (br_if $do-once - (local.get $5) - (i32.eqz - (local.tee $0 - (i32.and - (i32.or - (i32.sub - (i32.const 0) - (local.tee $0 - (i32.shl - (i32.const 2) - (local.get $19) - ) - ) - ) - (local.get $0) - ) - (local.get $39) - ) - ) - ) - ) - ) - (local.set $0 - (i32.and - (i32.shr_u - (local.tee $2 - (i32.add - (i32.and - (i32.sub - (i32.const 0) - (local.get $0) - ) - (local.get $0) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $2 - (i32.and - (i32.shr_u - (local.tee $8 - (i32.shr_u - (local.get $2) - (local.get $0) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $8 - (i32.and - (i32.shr_u - (local.tee $7 - (i32.shr_u - (local.get $8) - (local.get $2) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $7 - (i32.and - (i32.shr_u - (local.tee $13 - (i32.shr_u - (local.get $7) - (local.get $8) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $21 - (i32.load offset=480 - (i32.shl - (i32.add - (i32.or - (local.tee $21 - (i32.and - (i32.shr_u - (local.tee $13 - (i32.shr_u - (local.get $13) - (local.get $7) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (i32.or - (local.get $7) - (i32.or - (local.get $8) - (i32.or - (local.get $0) - (local.get $2) - ) - ) - ) - ) - (i32.shr_u - (local.get $13) - (local.get $21) - ) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (if - (local.get $21) - (block - (local.set $4 - (local.get $18) - ) - (local.set $20 - (local.get $21) - ) - (local.set $6 - (local.get $26) - ) - (local.set $9 - (i32.const 90) - ) - ) - (block - (local.set $11 - (local.get $18) - ) - (local.set $12 - (local.get $26) - ) - ) - ) - ) - ) - (if (result i32) - (select - (block (result i32) - (if - (i32.eq - (local.get $9) - (i32.const 90) - ) - (local.set $11 - (loop $while-in16 (result i32) - (local.set $9 - (i32.const 0) - ) - (local.set $0 - (i32.lt_u - (local.tee $2 - (i32.sub - (i32.and - (i32.load offset=4 - (local.get $20) - ) - (i32.const -8) - ) - (local.get $5) - ) - ) - (local.get $4) - ) - ) - (local.set $4 - (select - (local.get $2) - (local.get $4) - (local.get $0) - ) - ) - (local.set $6 - (select - (local.get $20) - (local.get $6) - (local.get $0) - ) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $20) - ) - ) - (block - (local.set $20 - (local.get $0) - ) - (br $while-in16) - ) - ) - (br_if $while-in16 - (local.tee $20 - (i32.load offset=20 - (local.get $20) - ) - ) - ) - (local.set $12 - (local.get $6) - ) - (local.get $4) - ) - ) - ) - (i32.lt_u - (local.get $11) - (i32.sub - (i32.load - (i32.const 184) - ) - (local.get $5) - ) - ) - ) - (i32.const 0) - (local.get $12) - ) - (block - (if - (i32.lt_u - (local.get $12) - (local.tee $8 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (if - (i32.ge_u - (local.get $12) - (local.tee $2 - (i32.add - (local.get $5) - (local.get $12) - ) - ) - ) - (call $_abort) - ) - (local.set $6 - (i32.load offset=24 - (local.get $12) - ) - ) - (if - (i32.eq - (local.get $12) - (local.tee $0 - (i32.load offset=12 - (local.get $12) - ) - ) - ) - (block $do-once17 - (if - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $12) - (i32.const 20) - ) - ) - ) - ) - ) - (br_if $do-once17 - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $12) - (i32.const 16) - ) - ) - ) - ) - ) - ) - ) - (loop $while-in20 - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in20) - ) - ) - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in20) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $8) - ) - (call $_abort) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $15 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $12) - ) - ) - (local.get $8) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $12) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $12) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $15 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $6) - (block $do-once21 - (if - (i32.eq - (i32.load offset=480 - (local.tee $1 - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $12) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $12) - ) - (block - (i32.store offset=480 - (local.get $1) - (local.get $15) - ) - (if - (i32.eqz - (local.get $15) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $do-once21) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $6) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $12) - (i32.load offset=16 - (local.get $6) - ) - ) - (i32.store offset=16 - (local.get $6) - (local.get $15) - ) - (i32.store offset=20 - (local.get $6) - (local.get $15) - ) - ) - (br_if $do-once21 - (i32.eqz - (local.get $15) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $15) - (local.tee $1 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $15) - (local.get $6) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $12) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $15) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $15) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $12) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $15) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $15) - ) - ) - ) - ) - ) - ) - (if - (i32.ge_u - (local.get $11) - (i32.const 16) - ) - (block $do-once25 - (i32.store offset=4 - (local.get $12) - (i32.or - (local.get $5) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $11) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $2) - (local.get $11) - ) - (local.get $11) - ) - (local.set $1 - (i32.shr_u - (local.get $11) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $11) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 176) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $17 - (local.get $1) - ) - (local.set $27 - (local.get $4) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $17 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $27 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $17) - (local.get $2) - ) - (i32.store offset=12 - (local.get $27) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $27) - ) - (i32.store offset=12 - (local.get $2) - (local.get $0) - ) - (br $do-once25) - ) - ) - (local.set $1 - (i32.add - (local.tee $0 - (i32.shl - (local.tee $6 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $11) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $11) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $11) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $3 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $4) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $4) - (local.get $3) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $2) - (local.get $6) - ) - (i32.store offset=20 - (local.get $2) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $2) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $4 - (i32.load - (i32.const 180) - ) - ) - (local.tee $3 - (i32.shl - (i32.const 1) - (local.get $6) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $3) - (local.get $4) - ) - ) - (i32.store offset=480 - (local.get $0) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $1) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - (br $do-once25) - ) - ) - (local.set $3 - (i32.shl - (local.get $11) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $6) - (i32.const 1) - ) - ) - (i32.eq - (local.get $6) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load offset=480 - (local.get $0) - ) - ) - (loop $while-in28 - (block $while-out27 - (if - (i32.eq - (local.get $11) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $22 - (local.get $0) - ) - (local.set $9 - (i32.const 148) - ) - (br $while-out27) - ) - ) - (local.set $31 - (if (result i32) - (local.tee $1 - (i32.load - (local.tee $4 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $3) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $3 - (i32.shl - (local.get $3) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in28) - ) - (block (result i32) - (local.set $40 - (local.get $0) - ) - (local.set $9 - (i32.const 145) - ) - (local.get $4) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 145) - ) - (if - (i32.lt_u - (local.get $31) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $31) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $40) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 148) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $22) - ) - ) - ) - (local.tee $4 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $4) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $2) - ) - (i32.store offset=8 - (local.get $0) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $1) - ) - (i32.store offset=12 - (local.get $2) - (local.get $22) - ) - (i32.store offset=24 - (local.get $2) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (block - (i32.store offset=4 - (local.get $12) - (i32.or - (local.tee $0 - (i32.add - (local.get $5) - (local.get $11) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $12) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - ) - ) - (return - (i32.add - (local.get $12) - (i32.const 8) - ) - ) - ) - (local.get $5) - ) - ) - (local.get $5) - ) - ) - (i32.const -1) - ) - ) - ) - (if - (i32.ge_u - (local.tee $6 - (i32.load - (i32.const 184) - ) - ) - (local.get $4) - ) - (block - (local.set $0 - (i32.load - (i32.const 196) - ) - ) - (if - (i32.gt_u - (local.tee $1 - (i32.sub - (local.get $6) - (local.get $4) - ) - ) - (i32.const 15) - ) - (block - (i32.store - (i32.const 196) - (local.tee $3 - (i32.add - (local.get $0) - (local.get $4) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $1) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $1) - (local.get $3) - ) - (local.get $1) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - ) - (block - (i32.store - (i32.const 184) - (i32.const 0) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $6) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $1 - (i32.add - (local.get $0) - (local.get $6) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $1) - ) - (i32.const 1) - ) - ) - ) - ) - (return - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (block $folding-inner0 - (br_if $folding-inner0 - (i32.gt_u - (local.tee $0 - (i32.load - (i32.const 188) - ) - ) - (local.get $4) - ) - ) - (if - (i32.eqz - (i32.load - (i32.const 648) - ) - ) - (if - (i32.and - (local.tee $0 - (call $_sysconf - (i32.const 30) - ) - ) - (i32.add - (local.get $0) - (i32.const -1) - ) - ) - (call $_abort) - (block - (i32.store - (i32.const 656) - (local.get $0) - ) - (i32.store - (i32.const 652) - (local.get $0) - ) - (i32.store - (i32.const 660) - (i32.const -1) - ) - (i32.store - (i32.const 664) - (i32.const -1) - ) - (i32.store - (i32.const 668) - (i32.const 0) - ) - (i32.store - (i32.const 620) - (i32.const 0) - ) - (i32.store - (i32.const 648) - (i32.xor - (i32.and - (call $_time - (i32.const 0) - ) - (i32.const -16) - ) - (i32.const 1431655768) - ) - ) - ) - ) - ) - (local.set $22 - (i32.add - (local.get $4) - (i32.const 48) - ) - ) - (if - (i32.le_u - (local.tee $11 - (i32.and - (local.tee $2 - (i32.add - (local.tee $0 - (i32.load - (i32.const 656) - ) - ) - (local.tee $8 - (i32.add - (local.get $4) - (i32.const 47) - ) - ) - ) - ) - (local.tee $0 - (i32.sub - (i32.const 0) - (local.get $0) - ) - ) - ) - ) - (local.get $4) - ) - (return - (i32.const 0) - ) - ) - (if - (if (result i32) - (local.tee $6 - (i32.load - (i32.const 616) - ) - ) - (i32.or - (i32.le_u - (local.tee $18 - (i32.add - (local.get $11) - (local.tee $7 - (i32.load - (i32.const 608) - ) - ) - ) - ) - (local.get $7) - ) - (i32.gt_u - (local.get $18) - (local.get $6) - ) - ) - (i32.const 0) - ) - (return - (i32.const 0) - ) - ) - (if - (if (result i32) - (if (result i32) - (select - (i32.lt_u - (local.get $11) - (i32.const 2147483647) - ) - (i32.const 0) - (i32.eq - (local.tee $9 - (if (result i32) - (i32.and - (i32.load - (i32.const 620) - ) - (i32.const 4) - ) - (i32.const 190) - (block $label$break$L257 (result i32) - (if - (local.tee $6 - (i32.load - (i32.const 200) - ) - ) - (block $label$break$L259 - (local.set $17 - (i32.const 624) - ) - (loop $while-in34 - (if - (i32.eqz - (if (result i32) - (i32.le_u - (local.tee $7 - (i32.load - (local.get $17) - ) - ) - (local.get $6) - ) - (i32.gt_u - (i32.add - (i32.load - (local.tee $15 - (i32.add - (local.get $17) - (i32.const 4) - ) - ) - ) - (local.get $7) - ) - (local.get $6) - ) - (i32.const 0) - ) - ) - (block - (br_if $while-in34 - (local.tee $17 - (i32.load offset=8 - (local.get $17) - ) - ) - ) - (local.set $9 - (i32.const 173) - ) - (br $label$break$L259) - ) - ) - ) - (if - (i32.lt_u - (local.tee $2 - (i32.and - (local.get $0) - (i32.sub - (local.get $2) - (i32.load - (i32.const 188) - ) - ) - ) - ) - (i32.const 2147483647) - ) - (block - (local.set $0 - (call $_sbrk - (local.get $2) - ) - ) - (if - (i32.eq - (i32.add - (i32.load - (local.get $17) - ) - (i32.load - (local.get $15) - ) - ) - (local.get $0) - ) - (if - (i32.ne - (local.get $0) - (i32.const -1) - ) - (block - (local.set $3 - (local.get $0) - ) - (local.set $10 - (local.get $2) - ) - (br $label$break$L257 - (i32.const 193) - ) - ) - ) - (block - (local.set $14 - (local.get $0) - ) - (local.set $23 - (local.get $2) - ) - (local.set $9 - (i32.const 183) - ) - ) - ) - ) - ) - ) - (local.set $9 - (i32.const 173) - ) - ) - (if - (if (result i32) - (i32.eq - (local.get $9) - (i32.const 173) - ) - (i32.ne - (local.tee $6 - (call $_sbrk - (i32.const 0) - ) - ) - (i32.const -1) - ) - (i32.const 0) - ) - (block $do-once35 - (local.set $5 - (i32.add - (local.tee $0 - (if (result i32) - (i32.and - (local.tee $0 - (local.get $6) - ) - (local.tee $5 - (i32.add - (local.tee $2 - (i32.load - (i32.const 652) - ) - ) - (i32.const -1) - ) - ) - ) - (i32.add - (i32.sub - (local.get $11) - (local.get $0) - ) - (i32.and - (i32.add - (local.get $0) - (local.get $5) - ) - (i32.sub - (i32.const 0) - (local.get $2) - ) - ) - ) - (local.get $11) - ) - ) - (local.tee $2 - (i32.load - (i32.const 608) - ) - ) - ) - ) - (if - (i32.and - (i32.lt_u - (local.get $0) - (i32.const 2147483647) - ) - (i32.gt_u - (local.get $0) - (local.get $4) - ) - ) - (block - (br_if $do-once35 - (select - (i32.or - (i32.le_u - (local.get $5) - (local.get $2) - ) - (i32.gt_u - (local.get $5) - (local.tee $2 - (i32.load - (i32.const 616) - ) - ) - ) - ) - (i32.const 0) - (local.get $2) - ) - ) - (local.set $14 - (if (result i32) - (i32.eq - (local.get $6) - (local.tee $2 - (call $_sbrk - (local.get $0) - ) - ) - ) - (block - (local.set $3 - (local.get $6) - ) - (local.set $10 - (local.get $0) - ) - (br $label$break$L257 - (i32.const 193) - ) - ) - (block (result i32) - (local.set $23 - (local.get $0) - ) - (local.set $9 - (i32.const 183) - ) - (local.get $2) - ) - ) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 183) - ) - (block $label$break$L279 - (local.set $0 - (i32.sub - (i32.const 0) - (local.get $23) - ) - ) - (local.set $1 - (if (result i32) - (if (result i32) - (i32.and - (i32.and - (i32.ne - (local.get $14) - (i32.const -1) - ) - (i32.lt_u - (local.get $23) - (i32.const 2147483647) - ) - ) - (i32.gt_u - (local.get $22) - (local.get $23) - ) - ) - (i32.lt_u - (local.tee $5 - (i32.and - (i32.add - (local.tee $6 - (i32.load - (i32.const 656) - ) - ) - (i32.sub - (local.get $8) - (local.get $23) - ) - ) - (i32.sub - (i32.const 0) - (local.get $6) - ) - ) - ) - (i32.const 2147483647) - ) - (i32.const 0) - ) - (if (result i32) - (i32.eq - (call $_sbrk - (local.get $5) - ) - (i32.const -1) - ) - (block - (drop - (call $_sbrk - (local.get $0) - ) - ) - (br $label$break$L279) - ) - (i32.add - (local.get $5) - (local.get $23) - ) - ) - (local.get $23) - ) - ) - (if - (i32.ne - (local.get $14) - (i32.const -1) - ) - (block - (local.set $3 - (local.get $14) - ) - (local.set $10 - (local.get $1) - ) - (br $label$break$L257 - (i32.const 193) - ) - ) - ) - ) - ) - (i32.store - (i32.const 620) - (i32.or - (i32.load - (i32.const 620) - ) - (i32.const 4) - ) - ) - (i32.const 190) - ) - ) - ) - (i32.const 190) - ) - ) - (i32.and - (i32.and - (i32.ne - (local.tee $1 - (call $_sbrk - (local.get $11) - ) - ) - (i32.const -1) - ) - (i32.ne - (local.tee $11 - (call $_sbrk - (i32.const 0) - ) - ) - (i32.const -1) - ) - ) - (i32.lt_u - (local.get $1) - (local.get $11) - ) - ) - (i32.const 0) - ) - (i32.gt_u - (local.tee $14 - (i32.sub - (local.get $11) - (local.get $1) - ) - ) - (i32.add - (local.get $4) - (i32.const 40) - ) - ) - (i32.const 0) - ) - (block - (local.set $10 - (local.get $14) - ) - (local.set $9 - (i32.const 193) - ) - (local.set $3 - (local.get $1) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 193) - ) - (block - (i32.store - (i32.const 608) - (local.tee $0 - (i32.add - (local.get $10) - (i32.load - (i32.const 608) - ) - ) - ) - ) - (if - (i32.gt_u - (local.get $0) - (i32.load - (i32.const 612) - ) - ) - (i32.store - (i32.const 612) - (local.get $0) - ) - ) - (if - (local.tee $7 - (i32.load - (i32.const 200) - ) - ) - (block $do-once40 - (local.set $1 - (i32.const 624) - ) - (loop $do-in - (block $do-out - (if - (i32.eq - (i32.add - (local.tee $0 - (i32.load - (local.get $1) - ) - ) - (local.tee $2 - (i32.load - (local.tee $6 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - ) - ) - ) - (local.get $3) - ) - (block - (local.set $41 - (local.get $0) - ) - (local.set $42 - (local.get $6) - ) - (local.set $43 - (local.get $2) - ) - (local.set $44 - (local.get $1) - ) - (local.set $9 - (i32.const 203) - ) - (br $do-out) - ) - ) - (br_if $do-in - (local.tee $1 - (i32.load offset=8 - (local.get $1) - ) - ) - ) - ) - ) - (if - (select - (i32.and - (i32.lt_u - (local.get $7) - (local.get $3) - ) - (i32.ge_u - (local.get $7) - (local.get $41) - ) - ) - (i32.const 0) - (select - (i32.eqz - (i32.and - (i32.load offset=12 - (local.get $44) - ) - (i32.const 8) - ) - ) - (i32.const 0) - (i32.eq - (local.get $9) - (i32.const 203) - ) - ) - ) - (block - (i32.store - (local.get $42) - (i32.add - (local.get $10) - (local.get $43) - ) - ) - (local.set $0 - (i32.add - (local.get $7) - (local.tee $1 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $0 - (i32.add - (local.get $7) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $0) - (i32.const 7) - ) - ) - ) - ) - ) - (local.set $1 - (i32.add - (i32.load - (i32.const 188) - ) - (i32.sub - (local.get $10) - (local.get $1) - ) - ) - ) - (i32.store - (i32.const 200) - (local.get $0) - ) - (i32.store - (i32.const 188) - (local.get $1) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $0) - (local.get $1) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - (br $do-once40) - ) - ) - (if - (i32.lt_u - (local.get $3) - (local.tee $6 - (i32.load - (i32.const 192) - ) - ) - ) - (block - (i32.store - (i32.const 192) - (local.get $3) - ) - (local.set $6 - (local.get $3) - ) - ) - ) - (local.set $0 - (i32.add - (local.get $3) - (local.get $10) - ) - ) - (local.set $1 - (i32.const 624) - ) - (loop $while-in43 - (block $while-out42 - (if - (i32.eq - (local.get $0) - (i32.load - (local.get $1) - ) - ) - (block - (local.set $45 - (local.get $1) - ) - (local.set $28 - (local.get $1) - ) - (local.set $9 - (i32.const 211) - ) - (br $while-out42) - ) - ) - (br_if $while-in43 - (local.tee $1 - (i32.load offset=8 - (local.get $1) - ) - ) - ) - (local.set $24 - (i32.const 624) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 211) - ) - (local.set $24 - (if (result i32) - (i32.and - (i32.load offset=12 - (local.get $28) - ) - (i32.const 8) - ) - (i32.const 624) - (block - (i32.store - (local.get $45) - (local.get $3) - ) - (i32.store offset=4 - (local.get $28) - (i32.add - (local.get $10) - (i32.load offset=4 - (local.get $28) - ) - ) - ) - (local.set $5 - (i32.add - (local.get $4) - (local.tee $14 - (i32.add - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - (local.get $3) - ) - ) - ) - ) - (local.set $8 - (i32.sub - (i32.sub - (local.tee $2 - (i32.add - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - (local.get $0) - ) - ) - (local.get $14) - ) - (local.get $4) - ) - ) - (i32.store offset=4 - (local.get $14) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - (if - (i32.ne - (local.get $2) - (local.get $7) - ) - (block $do-once44 - (if - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $2) - ) - (block - (i32.store - (i32.const 184) - (local.tee $0 - (i32.add - (local.get $8) - (i32.load - (i32.const 184) - ) - ) - ) - ) - (i32.store - (i32.const 196) - (local.get $5) - ) - (i32.store offset=4 - (local.get $5) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $5) - ) - (local.get $0) - ) - (br $do-once44) - ) - ) - (local.set $4 - (if (result i32) - (i32.eq - (i32.and - (local.tee $0 - (i32.load offset=4 - (local.get $2) - ) - ) - (i32.const 3) - ) - (i32.const 1) - ) - (block (result i32) - (local.set $7 - (i32.and - (local.get $0) - (i32.const -8) - ) - ) - (local.set $3 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (block $label$break$L331 - (if - (i32.ge_u - (local.get $0) - (i32.const 256) - ) - (block - (local.set $10 - (i32.load offset=24 - (local.get $2) - ) - ) - (if - (i32.eq - (local.get $2) - (local.tee $0 - (i32.load offset=12 - (local.get $2) - ) - ) - ) - (block $do-once47 - (if - (local.tee $0 - (i32.load - (local.tee $4 - (i32.add - (local.tee $1 - (i32.add - (local.get $2) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - (local.set $1 - (local.get $4) - ) - (br_if $do-once47 - (i32.eqz - (local.tee $0 - (i32.load - (local.get $1) - ) - ) - ) - ) - ) - (loop $while-in50 - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in50) - ) - ) - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in50) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $6) - ) - (call $_abort) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $16 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $2) - ) - ) - (local.get $6) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $2) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $2) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $16 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (br_if $label$break$L331 - (i32.eqz - (local.get $10) - ) - ) - (if - (i32.ne - (i32.load offset=480 - (local.tee $1 - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $2) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $2) - ) - (block - (if - (i32.lt_u - (local.get $10) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $2) - (i32.load offset=16 - (local.get $10) - ) - ) - (i32.store offset=16 - (local.get $10) - (local.get $16) - ) - (i32.store offset=20 - (local.get $10) - (local.get $16) - ) - ) - (br_if $label$break$L331 - (i32.eqz - (local.get $16) - ) - ) - ) - (block $do-once51 - (i32.store offset=480 - (local.get $1) - (local.get $16) - ) - (br_if $do-once51 - (local.get $16) - ) - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$L331) - ) - ) - (if - (i32.lt_u - (local.get $16) - (local.tee $1 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $16) - (local.get $10) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $2) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $16) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $16) - ) - ) - ) - ) - (br_if $label$break$L331 - (i32.eqz - (local.tee $0 - (i32.load offset=20 - (local.get $2) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $16) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $16) - ) - ) - ) - ) - (block - (local.set $1 - (i32.load offset=12 - (local.get $2) - ) - ) - (if - (i32.ne - (local.tee $4 - (i32.load offset=8 - (local.get $2) - ) - ) - (local.tee $0 - (i32.add - (i32.shl - (local.get $3) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - (block $do-once55 - (if - (i32.lt_u - (local.get $4) - (local.get $6) - ) - (call $_abort) - ) - (br_if $do-once55 - (i32.eq - (local.get $2) - (i32.load offset=12 - (local.get $4) - ) - ) - ) - (call $_abort) - ) - ) - (if - (i32.eq - (local.get $1) - (local.get $4) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $3) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$L331) - ) - ) - (if - (i32.eq - (local.get $0) - (local.get $1) - ) - (local.set $32 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (block $do-once57 - (if - (i32.lt_u - (local.get $1) - (local.get $6) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $2) - (i32.load - (local.tee $0 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - ) - (block - (local.set $32 - (local.get $0) - ) - (br $do-once57) - ) - ) - (call $_abort) - ) - ) - (i32.store offset=12 - (local.get $4) - (local.get $1) - ) - (i32.store - (local.get $32) - (local.get $4) - ) - ) - ) - ) - (local.set $2 - (i32.add - (local.get $2) - (local.get $7) - ) - ) - (i32.add - (local.get $7) - (local.get $8) - ) - ) - (local.get $8) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.and - (i32.load offset=4 - (local.get $2) - ) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $5) - (i32.or - (local.get $4) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $4) - (local.get $5) - ) - (local.get $4) - ) - (local.set $1 - (i32.shr_u - (local.get $4) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $4) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 176) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (block $do-once59 - (if - (i32.ge_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (block - (local.set $33 - (local.get $1) - ) - (local.set $29 - (local.get $4) - ) - (br $do-once59) - ) - ) - (call $_abort) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $33 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $29 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $33) - (local.get $5) - ) - (i32.store offset=12 - (local.get $29) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $29) - ) - (i32.store offset=12 - (local.get $5) - (local.get $0) - ) - (br $do-once44) - ) - ) - (local.set $3 - (i32.add - (local.tee $1 - (i32.shl - (local.tee $0 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $4) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $4) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $4) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $6 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $3) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $3) - (local.get $6) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $5) - (local.get $0) - ) - (i32.store offset=20 - (local.get $5) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $5) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $6 - (i32.load - (i32.const 180) - ) - ) - (local.tee $2 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $2) - (local.get $6) - ) - ) - (i32.store offset=480 - (local.get $1) - (local.get $5) - ) - (i32.store offset=24 - (local.get $5) - (local.get $3) - ) - (i32.store offset=12 - (local.get $5) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $5) - ) - (br $do-once44) - ) - ) - (local.set $17 - (i32.shl - (local.get $4) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $0) - (i32.const 1) - ) - ) - (i32.eq - (local.get $0) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load offset=480 - (local.get $1) - ) - ) - (loop $while-in64 - (block $while-out63 - (if - (i32.eq - (local.get $4) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $34 - (local.get $0) - ) - (local.set $9 - (i32.const 281) - ) - (br $while-out63) - ) - ) - (local.set $35 - (if (result i32) - (local.tee $1 - (i32.load - (local.tee $3 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $17) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $17 - (i32.shl - (local.get $17) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in64) - ) - (block (result i32) - (local.set $46 - (local.get $0) - ) - (local.set $9 - (i32.const 278) - ) - (local.get $3) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 278) - ) - (if - (i32.lt_u - (local.get $35) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $35) - (local.get $5) - ) - (i32.store offset=24 - (local.get $5) - (local.get $46) - ) - (i32.store offset=12 - (local.get $5) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $5) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 281) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $34) - ) - ) - ) - (local.tee $4 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $4) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $5) - ) - (i32.store offset=8 - (local.get $0) - (local.get $5) - ) - (i32.store offset=8 - (local.get $5) - (local.get $1) - ) - (i32.store offset=12 - (local.get $5) - (local.get $34) - ) - (i32.store offset=24 - (local.get $5) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (block - (i32.store - (i32.const 188) - (local.tee $0 - (i32.add - (local.get $8) - (i32.load - (i32.const 188) - ) - ) - ) - ) - (i32.store - (i32.const 200) - (local.get $5) - ) - (i32.store offset=4 - (local.get $5) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (return - (i32.add - (local.get $14) - (i32.const 8) - ) - ) - ) - ) - ) - ) - (loop $while-in66 - (if - (i32.eqz - (if (result i32) - (i32.le_u - (local.tee $0 - (i32.load - (local.get $24) - ) - ) - (local.get $7) - ) - (i32.gt_u - (local.tee $22 - (i32.add - (i32.load offset=4 - (local.get $24) - ) - (local.get $0) - ) - ) - (local.get $7) - ) - (i32.const 0) - ) - ) - (block - (local.set $24 - (i32.load offset=8 - (local.get $24) - ) - ) - (br $while-in66) - ) - ) - ) - (i32.store - (i32.const 200) - (local.tee $0 - (i32.add - (local.get $3) - (local.tee $1 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $0 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $0) - (i32.const 7) - ) - ) - ) - ) - ) - ) - (i32.store - (i32.const 188) - (local.tee $1 - (i32.sub - (i32.add - (local.get $10) - (i32.const -40) - ) - (local.get $1) - ) - ) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $0) - (local.get $1) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - (i32.store offset=4 - (local.tee $0 - (select - (local.get $7) - (local.tee $0 - (i32.add - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.tee $0 - (i32.add - (local.get $22) - (i32.const -47) - ) - ) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - (local.get $0) - ) - ) - (i32.lt_u - (local.get $0) - (local.tee $2 - (i32.add - (local.get $7) - (i32.const 16) - ) - ) - ) - ) - ) - (i32.const 27) - ) - (i32.store offset=8 - (local.get $0) - (i32.load - (i32.const 624) - ) - ) - (i32.store offset=12 - (local.get $0) - (i32.load - (i32.const 628) - ) - ) - (i32.store offset=16 - (local.get $0) - (i32.load - (i32.const 632) - ) - ) - (i32.store offset=20 - (local.get $0) - (i32.load - (i32.const 636) - ) - ) - (i32.store - (i32.const 624) - (local.get $3) - ) - (i32.store - (i32.const 628) - (local.get $10) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (i32.store - (i32.const 632) - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $1 - (i32.add - (local.get $0) - (i32.const 24) - ) - ) - (loop $do-in68 - (i32.store - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.const 7) - ) - (br_if $do-in68 - (i32.lt_u - (i32.add - (local.get $1) - (i32.const 4) - ) - (local.get $22) - ) - ) - ) - (if - (i32.ne - (local.get $0) - (local.get $7) - ) - (block - (i32.store offset=4 - (local.get $0) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $7) - (i32.or - (local.tee $6 - (i32.sub - (local.get $0) - (local.get $7) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (local.get $0) - (local.get $6) - ) - (local.set $1 - (i32.shr_u - (local.get $6) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $6) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $3 - (i32.load - (i32.const 176) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $3 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $36 - (local.get $1) - ) - (local.set $30 - (local.get $3) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $1) - (local.get $3) - ) - ) - (local.set $36 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $30 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $36) - (local.get $7) - ) - (i32.store offset=12 - (local.get $30) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $30) - ) - (i32.store offset=12 - (local.get $7) - (local.get $0) - ) - (br $do-once40) - ) - ) - (local.set $3 - (i32.add - (local.tee $1 - (i32.shl - (local.tee $0 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $6) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $6) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $6) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $8 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $3) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $3) - (local.get $8) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $7) - (local.get $0) - ) - (i32.store offset=20 - (local.get $7) - (i32.const 0) - ) - (i32.store - (local.get $2) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $2 - (i32.load - (i32.const 180) - ) - ) - (local.tee $8 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $2) - (local.get $8) - ) - ) - (i32.store offset=480 - (local.get $1) - (local.get $7) - ) - (i32.store offset=24 - (local.get $7) - (local.get $3) - ) - (i32.store offset=12 - (local.get $7) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $7) - ) - (br $do-once40) - ) - ) - (local.set $5 - (i32.shl - (local.get $6) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $0) - (i32.const 1) - ) - ) - (i32.eq - (local.get $0) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load offset=480 - (local.get $1) - ) - ) - (loop $while-in70 - (block $while-out69 - (if - (i32.eq - (local.get $6) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $37 - (local.get $0) - ) - (local.set $9 - (i32.const 307) - ) - (br $while-out69) - ) - ) - (local.set $38 - (if (result i32) - (local.tee $1 - (i32.load - (local.tee $3 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $5) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $5 - (i32.shl - (local.get $5) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in70) - ) - (block (result i32) - (local.set $47 - (local.get $0) - ) - (local.set $9 - (i32.const 304) - ) - (local.get $3) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 304) - ) - (if - (i32.lt_u - (local.get $38) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $38) - (local.get $7) - ) - (i32.store offset=24 - (local.get $7) - (local.get $47) - ) - (i32.store offset=12 - (local.get $7) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $7) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 307) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $37) - ) - ) - ) - (local.tee $3 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $3) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $7) - ) - (i32.store offset=8 - (local.get $0) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $1) - ) - (i32.store offset=12 - (local.get $7) - (local.get $37) - ) - (i32.store offset=24 - (local.get $7) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - ) - ) - (block - (if - (i32.or - (i32.eqz - (local.tee $0 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.lt_u - (local.get $3) - (local.get $0) - ) - ) - (i32.store - (i32.const 192) - (local.get $3) - ) - ) - (i32.store - (i32.const 624) - (local.get $3) - ) - (i32.store - (i32.const 628) - (local.get $10) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (i32.store - (i32.const 212) - (i32.load - (i32.const 648) - ) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - (local.set $5 - (i32.const 0) - ) - (loop $do-in72 - (local.set $1 - (i32.add - (local.tee $0 - (i32.shl - (local.get $5) - (i32.const 3) - ) - ) - (i32.const 216) - ) - ) - (i32.store offset=228 - (local.get $0) - (local.get $1) - ) - (i32.store offset=224 - (local.get $0) - (local.get $1) - ) - (br_if $do-in72 - (i32.ne - (local.tee $5 - (i32.add - (local.get $5) - (i32.const 1) - ) - ) - (i32.const 32) - ) - ) - ) - (i32.store - (i32.const 200) - (local.tee $0 - (i32.add - (local.get $3) - (local.tee $1 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $0 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $0) - (i32.const 7) - ) - ) - ) - ) - ) - ) - (i32.store - (i32.const 188) - (local.tee $1 - (i32.sub - (i32.add - (local.get $10) - (i32.const -40) - ) - (local.get $1) - ) - ) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $0) - (local.get $1) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - ) - ) - (br_if $folding-inner0 - (i32.gt_u - (local.tee $0 - (i32.load - (i32.const 188) - ) - ) - (local.get $4) - ) - ) - ) - ) - (i32.store - (call $___errno_location) - (i32.const 12) - ) - (return - (i32.const 0) - ) - ) - (i32.store - (i32.const 188) - (local.tee $1 - (i32.sub - (local.get $0) - (local.get $4) - ) - ) - ) - (i32.store - (i32.const 200) - (local.tee $3 - (i32.add - (local.get $4) - (local.tee $0 - (i32.load - (i32.const 200) - ) - ) - ) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (func $_free (; 16 ;) (; has Stack IR ;) (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (if - (i32.eqz - (local.get $0) - ) - (return) - ) - (if - (i32.lt_u - (local.tee $3 - (i32.add - (local.get $0) - (i32.const -8) - ) - ) - (local.tee $13 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.tee $9 - (i32.and - (local.tee $0 - (i32.load - (i32.add - (local.get $0) - (i32.const -4) - ) - ) - ) - (i32.const 3) - ) - ) - (i32.const 1) - ) - (call $_abort) - ) - (local.set $6 - (i32.add - (local.get $3) - (local.tee $4 - (i32.and - (local.get $0) - (i32.const -8) - ) - ) - ) - ) - (if - (i32.and - (local.get $0) - (i32.const 1) - ) - (block - (local.set $2 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - ) - (block $do-once - (if - (i32.eqz - (local.get $9) - ) - (return) - ) - (if - (i32.lt_u - (local.tee $0 - (i32.sub - (local.get $3) - (local.tee $9 - (i32.load - (local.get $3) - ) - ) - ) - ) - (local.get $13) - ) - (call $_abort) - ) - (local.set $3 - (i32.add - (local.get $4) - (local.get $9) - ) - ) - (if - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $0) - ) - (block - (if - (i32.ne - (i32.and - (local.tee $1 - (i32.load offset=4 - (local.get $6) - ) - ) - (i32.const 3) - ) - (i32.const 3) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - (i32.store - (i32.const 184) - (local.get $3) - ) - (i32.store offset=4 - (local.get $6) - (i32.and - (local.get $1) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $3) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $3) - ) - (local.get $3) - ) - (return) - ) - ) - (local.set $11 - (i32.shr_u - (local.get $9) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $9) - (i32.const 256) - ) - (block - (local.set $2 - (i32.load offset=12 - (local.get $0) - ) - ) - (if - (i32.ne - (local.tee $4 - (i32.load offset=8 - (local.get $0) - ) - ) - (local.tee $1 - (i32.add - (i32.shl - (local.get $11) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $4) - (local.get $13) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $0) - (i32.load offset=12 - (local.get $4) - ) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (local.get $2) - (local.get $4) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $11) - ) - (i32.const -1) - ) - ) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - (if - (i32.ne - (local.get $1) - (local.get $2) - ) - (block - (if - (i32.lt_u - (local.get $2) - (local.get $13) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $0) - (i32.load - (local.tee $1 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - ) - ) - (local.set $5 - (local.get $1) - ) - (call $_abort) - ) - ) - (local.set $5 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - ) - (i32.store offset=12 - (local.get $4) - (local.get $2) - ) - (i32.store - (local.get $5) - (local.get $4) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - (local.set $12 - (i32.load offset=24 - (local.get $0) - ) - ) - (if - (i32.eq - (local.get $0) - (local.tee $4 - (i32.load offset=12 - (local.get $0) - ) - ) - ) - (block $do-once0 - (if - (local.tee $4 - (i32.load - (local.tee $9 - (i32.add - (local.tee $5 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - (local.set $5 - (local.get $9) - ) - (br_if $do-once0 - (i32.eqz - (local.tee $4 - (i32.load - (local.get $5) - ) - ) - ) - ) - ) - (loop $while-in - (if - (local.tee $11 - (i32.load - (local.tee $9 - (i32.add - (local.get $4) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $11) - ) - (local.set $5 - (local.get $9) - ) - (br $while-in) - ) - ) - (if - (local.tee $11 - (i32.load - (local.tee $9 - (i32.add - (local.get $4) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $11) - ) - (local.set $5 - (local.get $9) - ) - (br $while-in) - ) - ) - ) - (if - (i32.lt_u - (local.get $5) - (local.get $13) - ) - (call $_abort) - (block - (i32.store - (local.get $5) - (i32.const 0) - ) - (local.set $7 - (local.get $4) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $5 - (i32.load offset=8 - (local.get $0) - ) - ) - (local.get $13) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $0) - (i32.load offset=12 - (local.get $5) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $0) - (i32.load offset=8 - (local.get $4) - ) - ) - (block - (i32.store offset=12 - (local.get $5) - (local.get $4) - ) - (i32.store offset=8 - (local.get $4) - (local.get $5) - ) - (local.set $7 - (local.get $4) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $12) - (block - (if - (i32.eq - (i32.load offset=480 - (local.tee $5 - (i32.shl - (local.tee $4 - (i32.load offset=28 - (local.get $0) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $0) - ) - (block - (i32.store offset=480 - (local.get $5) - (local.get $7) - ) - (if - (i32.eqz - (local.get $7) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $12) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $0) - (i32.load offset=16 - (local.get $12) - ) - ) - (i32.store offset=16 - (local.get $12) - (local.get $7) - ) - (i32.store offset=20 - (local.get $12) - (local.get $7) - ) - ) - (if - (i32.eqz - (local.get $7) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $7) - (local.tee $5 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $7) - (local.get $12) - ) - (if - (local.tee $4 - (i32.load offset=16 - (local.get $0) - ) - ) - (if - (i32.lt_u - (local.get $4) - (local.get $5) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $7) - (local.get $4) - ) - (i32.store offset=24 - (local.get $4) - (local.get $7) - ) - ) - ) - ) - (if - (local.tee $4 - (i32.load offset=20 - (local.get $0) - ) - ) - (if - (i32.lt_u - (local.get $4) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $7) - (local.get $4) - ) - (i32.store offset=24 - (local.get $4) - (local.get $7) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - ) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - ) - ) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - ) - ) - ) - ) - (if - (i32.ge_u - (local.get $2) - (local.get $6) - ) - (call $_abort) - ) - (if - (i32.eqz - (i32.and - (local.tee $0 - (i32.load offset=4 - (local.get $6) - ) - ) - (i32.const 1) - ) - ) - (call $_abort) - ) - (if - (i32.and - (local.get $0) - (i32.const 2) - ) - (block - (i32.store offset=4 - (local.get $6) - (i32.and - (local.get $0) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $1) - (local.get $2) - ) - (local.get $1) - ) - ) - (block - (if - (i32.eq - (i32.load - (i32.const 200) - ) - (local.get $6) - ) - (block - (i32.store - (i32.const 188) - (local.tee $0 - (i32.add - (local.get $1) - (i32.load - (i32.const 188) - ) - ) - ) - ) - (i32.store - (i32.const 200) - (local.get $2) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (if - (i32.ne - (i32.load - (i32.const 196) - ) - (local.get $2) - ) - (return) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (i32.store - (i32.const 184) - (i32.const 0) - ) - (return) - ) - ) - (if - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $6) - ) - (block - (i32.store - (i32.const 184) - (local.tee $0 - (i32.add - (local.get $1) - (i32.load - (i32.const 184) - ) - ) - ) - ) - (i32.store - (i32.const 196) - (local.get $2) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $2) - ) - (local.get $0) - ) - (return) - ) - ) - (local.set $5 - (i32.add - (local.get $1) - (i32.and - (local.get $0) - (i32.const -8) - ) - ) - ) - (local.set $4 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (block $do-once4 - (if - (i32.ge_u - (local.get $0) - (i32.const 256) - ) - (block - (local.set $7 - (i32.load offset=24 - (local.get $6) - ) - ) - (if - (i32.eq - (local.get $6) - (local.tee $0 - (i32.load offset=12 - (local.get $6) - ) - ) - ) - (block $do-once6 - (if - (local.tee $0 - (i32.load - (local.tee $3 - (i32.add - (local.tee $1 - (i32.add - (local.get $6) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - (local.set $1 - (local.get $3) - ) - (br_if $do-once6 - (i32.eqz - (local.tee $0 - (i32.load - (local.get $1) - ) - ) - ) - ) - ) - (loop $while-in9 - (if - (local.tee $4 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $4) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in9) - ) - ) - (if - (local.tee $4 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $4) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in9) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $8 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $6) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $6) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $6) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $8 - (local.get $0) - ) - ) - (call $_abort) - ) - ) - ) - (if - (local.get $7) - (block - (if - (i32.eq - (i32.load offset=480 - (local.tee $1 - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $6) - ) - ) - (i32.const 2) - ) - ) - ) - (local.get $6) - ) - (block - (i32.store offset=480 - (local.get $1) - (local.get $8) - ) - (if - (i32.eqz - (local.get $8) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $7) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $6) - (i32.load offset=16 - (local.get $7) - ) - ) - (i32.store offset=16 - (local.get $7) - (local.get $8) - ) - (i32.store offset=20 - (local.get $7) - (local.get $8) - ) - ) - (br_if $do-once4 - (i32.eqz - (local.get $8) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $8) - (local.tee $1 - (i32.load - (i32.const 192) - ) - ) - ) - (call $_abort) - ) - (i32.store offset=24 - (local.get $8) - (local.get $7) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $6) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $_abort) - (block - (i32.store offset=16 - (local.get $8) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $8) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $6) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store offset=20 - (local.get $8) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $8) - ) - ) - ) - ) - ) - ) - ) - (block - (local.set $1 - (i32.load offset=12 - (local.get $6) - ) - ) - (if - (i32.ne - (local.tee $3 - (i32.load offset=8 - (local.get $6) - ) - ) - (local.tee $0 - (i32.add - (i32.shl - (local.get $4) - (i32.const 3) - ) - (i32.const 216) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $3) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.ne - (local.get $6) - (i32.load offset=12 - (local.get $3) - ) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (local.get $1) - (local.get $3) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - (if - (i32.ne - (local.get $0) - (local.get $1) - ) - (block - (if - (i32.lt_u - (local.get $1) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $6) - (i32.load - (local.tee $0 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - ) - (local.set $14 - (local.get $0) - ) - (call $_abort) - ) - ) - (local.set $14 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - (i32.store offset=12 - (local.get $3) - (local.get $1) - ) - (i32.store - (local.get $14) - (local.get $3) - ) - ) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $5) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $2) - (local.get $5) - ) - (local.get $5) - ) - (local.set $1 - (if (result i32) - (i32.eq - (i32.load - (i32.const 196) - ) - (local.get $2) - ) - (block - (i32.store - (i32.const 184) - (local.get $5) - ) - (return) - ) - (local.get $5) - ) - ) - ) - ) - (local.set $3 - (i32.shr_u - (local.get $1) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $1) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $3) - (i32.const 3) - ) - (i32.const 216) - ) - ) - (if - (i32.and - (local.tee $1 - (i32.load - (i32.const 176) - ) - ) - (local.tee $3 - (i32.shl - (i32.const 1) - (local.get $3) - ) - ) - ) - (if - (i32.lt_u - (local.tee $3 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $15 - (local.get $1) - ) - (local.set $10 - (local.get $3) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $1) - (local.get $3) - ) - ) - (local.set $15 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $10 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $15) - (local.get $2) - ) - (i32.store offset=12 - (local.get $10) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $10) - ) - (i32.store offset=12 - (local.get $2) - (local.get $0) - ) - (return) - ) - ) - (local.set $4 - (i32.add - (local.tee $3 - (i32.shl - (local.tee $0 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $1) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $1) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $0) - (local.tee $3 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $1) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $5 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $4) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $3) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $4) - (local.get $5) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - ) - (i32.const 480) - ) - ) - (i32.store offset=28 - (local.get $2) - (local.get $0) - ) - (i32.store offset=20 - (local.get $2) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $2) - (i32.const 0) - ) - (if - (i32.and - (local.tee $5 - (i32.load - (i32.const 180) - ) - ) - (local.tee $7 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - (block - (local.set $10 - (i32.shl - (local.get $1) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $0) - (i32.const 1) - ) - ) - (i32.eq - (local.get $0) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load offset=480 - (local.get $3) - ) - ) - (if - (i32.eq - (local.tee $0 - (loop $while-in15 (result i32) - (block $while-out14 (result i32) - (if - (i32.eq - (local.get $1) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $16 - (local.get $0) - ) - (br $while-out14 - (i32.const 130) - ) - ) - ) - (if (result i32) - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $10) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $10 - (i32.shl - (local.get $10) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $3) - ) - (br $while-in15) - ) - (block (result i32) - (local.set $17 - (local.get $4) - ) - (local.set $18 - (local.get $0) - ) - (i32.const 127) - ) - ) - ) - ) - ) - (i32.const 127) - ) - (if - (i32.lt_u - (local.get $17) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $17) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $18) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - ) - ) - (if - (i32.eq - (local.get $0) - (i32.const 130) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $16) - ) - ) - ) - (local.tee $3 - (i32.load - (i32.const 192) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $3) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $2) - ) - (i32.store offset=8 - (local.get $0) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $1) - ) - (i32.store offset=12 - (local.get $2) - (local.get $16) - ) - (i32.store offset=24 - (local.get $2) - (i32.const 0) - ) - ) - (call $_abort) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $5) - (local.get $7) - ) - ) - (i32.store offset=480 - (local.get $3) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $4) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - ) - ) - (i32.store - (i32.const 208) - (local.tee $0 - (i32.add - (i32.load - (i32.const 208) - ) - (i32.const -1) - ) - ) - ) - (local.set $0 - (if (result i32) - (local.get $0) - (return) - (i32.const 632) - ) - ) - (loop $while-in17 - (if - (local.tee $0 - (i32.load - (local.get $0) - ) - ) - (block - (local.set $0 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (br $while-in17) - ) - ) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - ) - (func $___stdio_write (; 17 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local.set $9 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 48) - ) - ) - (local.set $7 - (i32.add - (local.get $9) - (i32.const 16) - ) - ) - (i32.store - (local.tee $4 - (i32.add - (local.tee $8 - (local.get $9) - ) - (i32.const 32) - ) - ) - (local.tee $3 - (i32.load offset=28 - (local.get $0) - ) - ) - ) - (i32.store offset=4 - (local.get $4) - (local.tee $3 - (i32.sub - (i32.load offset=20 - (local.get $0) - ) - (local.get $3) - ) - ) - ) - (i32.store offset=8 - (local.get $4) - (local.get $1) - ) - (i32.store offset=12 - (local.get $4) - (local.get $2) - ) - (local.set $1 - (local.get $4) - ) - (local.set $4 - (i32.const 2) - ) - (local.set $10 - (i32.add - (local.get $2) - (local.get $3) - ) - ) - (loop $while-in - (block $while-out - (if - (i32.load - (i32.const 8) - ) - (block - (call $_pthread_cleanup_push - (i32.const 4) - (local.get $0) - ) - (i32.store - (local.get $8) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $8) - (local.get $1) - ) - (i32.store offset=8 - (local.get $8) - (local.get $4) - ) - (local.set $3 - (call $___syscall_ret - (call $___syscall146 - (i32.const 146) - (local.get $8) - ) - ) - ) - (call $_pthread_cleanup_pop - (i32.const 0) - ) - ) - (block - (i32.store - (local.get $7) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $7) - (local.get $1) - ) - (i32.store offset=8 - (local.get $7) - (local.get $4) - ) - (local.set $3 - (call $___syscall_ret - (call $___syscall146 - (i32.const 146) - (local.get $7) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $3) - (local.get $10) - ) - (block - (local.set $1 - (i32.const 6) - ) - (br $while-out) - ) - ) - (if - (i32.lt_s - (local.get $3) - (i32.const 0) - ) - (block - (local.set $11 - (local.get $1) - ) - (local.set $12 - (local.get $4) - ) - (local.set $1 - (i32.const 8) - ) - ) - (block - (local.set $5 - (if (result i32) - (i32.le_u - (local.get $3) - (local.tee $5 - (i32.load offset=4 - (local.get $1) - ) - ) - ) - (block (result i32) - (if - (i32.eq - (local.get $4) - (i32.const 2) - ) - (block - (i32.store offset=28 - (local.get $0) - (i32.add - (local.get $3) - (i32.load offset=28 - (local.get $0) - ) - ) - ) - (local.set $6 - (local.get $5) - ) - (local.set $4 - (i32.const 2) - ) - ) - (local.set $6 - (local.get $5) - ) - ) - (local.get $3) - ) - (block (result i32) - (i32.store offset=28 - (local.get $0) - (local.tee $6 - (i32.load offset=44 - (local.get $0) - ) - ) - ) - (i32.store offset=20 - (local.get $0) - (local.get $6) - ) - (local.set $6 - (i32.load offset=12 - (local.get $1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (local.set $4 - (i32.add - (local.get $4) - (i32.const -1) - ) - ) - (i32.sub - (local.get $3) - (local.get $5) - ) - ) - ) - ) - (i32.store - (local.get $1) - (i32.add - (local.get $5) - (i32.load - (local.get $1) - ) - ) - ) - (i32.store offset=4 - (local.get $1) - (i32.sub - (local.get $6) - (local.get $5) - ) - ) - (local.set $10 - (i32.sub - (local.get $10) - (local.get $3) - ) - ) - (br $while-in) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $9) - ) - (if (result i32) - (i32.eq - (local.get $1) - (i32.const 6) - ) - (block (result i32) - (i32.store offset=16 - (local.get $0) - (i32.add - (local.tee $1 - (i32.load offset=44 - (local.get $0) - ) - ) - (i32.load offset=48 - (local.get $0) - ) - ) - ) - (i32.store offset=28 - (local.get $0) - (local.get $1) - ) - (i32.store offset=20 - (local.get $0) - (local.get $1) - ) - (local.get $2) - ) - (if (result i32) - (i32.eq - (local.get $1) - (i32.const 8) - ) - (block (result i32) - (i32.store offset=16 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=20 - (local.get $0) - (i32.const 0) - ) - (i32.store - (local.get $0) - (i32.or - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (select - (i32.const 0) - (i32.sub - (local.get $2) - (i32.load offset=4 - (local.get $11) - ) - ) - (i32.eq - (local.get $12) - (i32.const 2) - ) - ) - ) - (local.get $13) - ) - ) - ) - (func $___fwritex (; 18 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local.set $5 - (i32.const 672) - ) - (local.set $3 - (if (result i32) - (local.tee $4 - (i32.load offset=16 - (local.get $1) - ) - ) - (block (result i32) - (local.set $6 - (i32.const 5) - ) - (local.get $4) - ) - (if (result i32) - (call $___towrite - (local.get $1) - ) - (local.get $3) - (block (result i32) - (local.set $6 - (i32.const 5) - ) - (i32.load offset=16 - (local.get $1) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $6) - (i32.const 5) - ) - (block $label$break$L5 - (if - (i32.lt_u - (i32.sub - (local.get $3) - (local.tee $3 - (i32.load offset=20 - (local.get $1) - ) - ) - ) - (local.get $0) - ) - (block - (local.set $2 - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $1) - (i32.const 672) - (local.get $0) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $1) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (br $label$break$L5) - ) - ) - (if - (i32.gt_s - (i32.load8_s offset=75 - (local.get $1) - ) - (i32.const -1) - ) - (block $label$break$L10 - (local.set $2 - (local.get $0) - ) - (loop $while-in - (if - (i32.eqz - (local.get $2) - ) - (block - (local.set $2 - (i32.const 0) - ) - (br $label$break$L10) - ) - ) - (if - (i32.ne - (i32.load8_s offset=672 - (local.tee $4 - (i32.add - (local.get $2) - (i32.const -1) - ) - ) - ) - (i32.const 10) - ) - (block - (local.set $2 - (local.get $4) - ) - (br $while-in) - ) - ) - ) - (br_if $label$break$L5 - (i32.lt_u - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $1) - (i32.const 672) - (local.get $2) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $1) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - (local.get $2) - ) - ) - (local.set $0 - (i32.sub - (local.get $0) - (local.get $2) - ) - ) - (local.set $5 - (i32.add - (local.get $2) - (i32.const 672) - ) - ) - (local.set $3 - (i32.load offset=20 - (local.get $1) - ) - ) - ) - ) - (drop - (call $_memcpy - (local.get $3) - (local.get $5) - (local.get $0) - ) - ) - (i32.store offset=20 - (local.get $1) - (i32.add - (local.get $0) - (i32.load offset=20 - (local.get $1) - ) - ) - ) - (local.set $2 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - ) - ) - (local.get $2) - ) - (func $_fflush (; 19 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (if - (local.get $0) - (local.set $0 - (block $do-once (result i32) - (if - (i32.le_s - (i32.load offset=76 - (local.get $0) - ) - (i32.const -1) - ) - (br $do-once - (call $___fflush_unlocked - (local.get $0) - ) - ) - ) - (call $___fflush_unlocked - (local.get $0) - ) - ) - ) - (block - (local.set $0 - (if (result i32) - (i32.load - (i32.const 56) - ) - (call $_fflush - (i32.load - (i32.const 56) - ) - ) - (i32.const 0) - ) - ) - (call $___lock - (i32.const 36) - ) - (if - (local.tee $1 - (i32.load - (i32.const 32) - ) - ) - (loop $while-in - (if - (i32.gt_u - (i32.load offset=20 - (local.get $1) - ) - (i32.load offset=28 - (local.get $1) - ) - ) - (local.set $0 - (i32.or - (call $___fflush_unlocked - (local.get $1) - ) - (local.get $0) - ) - ) - ) - (br_if $while-in - (local.tee $1 - (i32.load offset=56 - (local.get $1) - ) - ) - ) - ) - ) - (call $___unlock - (i32.const 36) - ) - ) - ) - (local.get $0) - ) - (func $_strlen (; 20 ;) (; has Stack IR ;) (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local.set $0 - (i32.const 672) - ) - (block - (local.set $4 - (i32.const 672) - ) - (local.set $1 - (i32.const 4) - ) - ) - (i32.sub - (if (result i32) - (i32.eq - (local.get $1) - (i32.const 4) - ) - (block (result i32) - (local.set $1 - (local.get $4) - ) - (local.set $0 - (loop $while-in1 (result i32) - (if (result i32) - (i32.and - (i32.add - (local.tee $2 - (i32.load - (local.get $1) - ) - ) - (i32.const -16843009) - ) - (i32.xor - (i32.and - (local.get $2) - (i32.const -2139062144) - ) - (i32.const -2139062144) - ) - ) - (local.get $1) - (block - (local.set $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (if - (i32.and - (local.get $2) - (i32.const 255) - ) - (loop $while-in3 - (br_if $while-in3 - (i32.load8_s - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.get $0) - ) - (local.get $2) - ) - (i32.const 672) - ) - ) - (func $___overflow (; 21 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local.set $3 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (i32.store8 - (local.tee $4 - (local.get $3) - ) - (i32.const 10) - ) - (if - (local.tee $1 - (i32.load offset=16 - (local.get $0) - ) - ) - (block - (local.set $5 - (local.get $1) - ) - (local.set $6 - (i32.const 4) - ) - ) - (if - (call $___towrite - (local.get $0) - ) - (local.set $2 - (i32.const -1) - ) - (block - (local.set $5 - (i32.load offset=16 - (local.get $0) - ) - ) - (local.set $6 - (i32.const 4) - ) - ) - ) - ) - (if - (i32.eq - (local.get $6) - (i32.const 4) - ) - (local.set $2 - (block $do-once (result i32) - (if - (if (result i32) - (i32.lt_u - (local.tee $1 - (i32.load offset=20 - (local.get $0) - ) - ) - (local.get $5) - ) - (i32.ne - (local.tee $7 - (i32.const 10) - ) - (i32.load8_s offset=75 - (local.get $0) - ) - ) - (i32.const 0) - ) - (block - (i32.store offset=20 - (local.get $0) - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $1) - (i32.const 10) - ) - (br $do-once - (local.get $7) - ) - ) - ) - (if (result i32) - (i32.eq - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (local.get $4) - (i32.const 1) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $0) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - (i32.const 1) - ) - (i32.load8_u - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $3) - ) - (local.get $2) - ) - (func $___fflush_unlocked (; 22 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (if (result i32) - (if (result i32) - (i32.gt_u - (i32.load offset=20 - (local.get $0) - ) - (i32.load offset=28 - (local.get $0) - ) - ) - (block (result i32) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $0) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (i32.eqz - (i32.load offset=20 - (local.get $0) - ) - ) - ) - (i32.const 0) - ) - (i32.const -1) - (block (result i32) - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=4 - (local.get $0) - ) - ) - (local.tee $2 - (i32.load offset=8 - (local.get $0) - ) - ) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (i32.sub - (local.get $1) - (local.get $2) - ) - (i32.const 1) - (i32.add - (i32.and - (i32.load offset=40 - (local.get $0) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.store offset=16 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=20 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=8 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - (func $_memcpy (; 23 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (if - (i32.ge_s - (local.get $2) - (i32.const 4096) - ) - (return - (call $_emscripten_memcpy_big - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - ) - (local.set $3 - (local.get $0) - ) - (if - (i32.eq - (i32.and - (local.get $0) - (i32.const 3) - ) - (i32.and - (local.get $1) - (i32.const 3) - ) - ) - (block - (loop $while-in - (if - (i32.and - (local.get $0) - (i32.const 3) - ) - (block - (if - (i32.eqz - (local.get $2) - ) - (return - (local.get $3) - ) - ) - (i32.store8 - (local.get $0) - (i32.load8_s - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (loop $while-in1 - (if - (i32.ge_s - (local.get $2) - (i32.const 4) - ) - (block - (i32.store - (local.get $0) - (i32.load - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 4) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - ) - (loop $while-in3 - (if - (i32.gt_s - (local.get $2) - (i32.const 0) - ) - (block - (i32.store8 - (local.get $0) - (i32.load8_s - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (local.get $3) - ) - (func $runPostSets (; 24 ;) (; has Stack IR ;) - (nop) - ) - (func $_memset (; 25 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local.set $4 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - (if - (i32.ge_s - (local.get $2) - (i32.const 20) - ) - (block - (local.set $1 - (i32.and - (local.get $1) - (i32.const 255) - ) - ) - (if - (local.tee $3 - (i32.and - (local.get $0) - (i32.const 3) - ) - ) - (block - (local.set $3 - (i32.sub - (i32.add - (local.get $0) - (i32.const 4) - ) - (local.get $3) - ) - ) - (loop $while-in - (if - (i32.lt_s - (local.get $0) - (local.get $3) - ) - (block - (i32.store8 - (local.get $0) - (local.get $1) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - ) - (local.set $3 - (i32.or - (i32.or - (i32.or - (i32.shl - (local.get $1) - (i32.const 8) - ) - (local.get $1) - ) - (i32.shl - (local.get $1) - (i32.const 16) - ) - ) - (i32.shl - (local.get $1) - (i32.const 24) - ) - ) - ) - (local.set $5 - (i32.and - (local.get $4) - (i32.const -4) - ) - ) - (loop $while-in1 - (if - (i32.lt_s - (local.get $0) - (local.get $5) - ) - (block - (i32.store - (local.get $0) - (local.get $3) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - ) - (loop $while-in3 - (if - (i32.lt_s - (local.get $0) - (local.get $4) - ) - (block - (i32.store8 - (local.get $0) - (local.get $1) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (i32.sub - (local.get $0) - (local.get $2) - ) - ) - (func $_puts (; 26 ;) (; has Stack IR ;) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (drop - (i32.load offset=76 - (local.tee $0 - (i32.load - (i32.const 52) - ) - ) - ) - ) - (drop - (if (result i32) - (i32.lt_s - (i32.add - (select - (i32.div_u - (local.tee $4 - (call $___fwritex - (local.tee $3 - (local.tee $2 - (call $_strlen) - ) - ) - (local.get $0) - ) - ) - (local.get $2) - ) - (i32.const 1) - (i32.ne - (local.get $3) - (local.get $4) - ) - ) - (i32.const -1) - ) - (i32.const 0) - ) - (i32.const 1) - (block $do-once (result i32) - (if - (if (result i32) - (i32.ne - (i32.load8_s offset=75 - (local.get $0) - ) - (i32.const 10) - ) - (block (result i32) - (local.set $5 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - (i32.lt_u - (local.tee $1 - (i32.load offset=20 - (local.get $0) - ) - ) - (i32.load offset=16 - (local.get $0) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (local.get $5) - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $1) - (i32.const 10) - ) - (br $do-once - (i32.const 0) - ) - ) - ) - (call $___overflow - (local.get $0) - ) - ) - ) - ) - ) - (func $___stdio_seek (; 27 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local.set $3 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 32) - ) - ) - (i32.store - (local.get $3) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.const 0) - ) - (i32.store offset=8 - (local.get $3) - (local.get $1) - ) - (i32.store offset=12 - (local.get $3) - (i32.add - (local.get $3) - (i32.const 20) - ) - ) - (i32.store offset=16 - (local.get $3) - (local.get $2) - ) - (local.set $0 - (if (result i32) - (i32.lt_s - (call $___syscall_ret - (call $___syscall140 - (i32.const 140) - (local.get $3) - ) - ) - (i32.const 0) - ) - (block (result i32) - (i32.store offset=20 - (local.get $3) - (i32.const -1) - ) - (i32.const -1) - ) - (i32.load offset=20 - (local.get $3) - ) - ) - ) - (global.set $STACKTOP - (local.get $3) - ) - (local.get $0) - ) - (func $___towrite (; 28 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (i32.store8 offset=74 - (local.get $0) - (i32.or - (local.tee $1 - (i32.load8_s offset=74 - (local.get $0) - ) - ) - (i32.add - (local.get $1) - (i32.const 255) - ) - ) - ) - (if (result i32) - (i32.and - (local.tee $1 - (i32.load - (local.get $0) - ) - ) - (i32.const 8) - ) - (block (result i32) - (i32.store - (local.get $0) - (i32.or - (local.get $1) - (i32.const 32) - ) - ) - (i32.const -1) - ) - (block (result i32) - (i32.store offset=8 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (local.tee $1 - (i32.load offset=44 - (local.get $0) - ) - ) - ) - (i32.store offset=20 - (local.get $0) - (local.get $1) - ) - (i32.store offset=16 - (local.get $0) - (i32.add - (i32.load offset=48 - (local.get $0) - ) - (local.get $1) - ) - ) - (i32.const 0) - ) - ) - ) - (func $___stdout_write (; 29 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local.set $4 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 80) - ) - ) - (local.set $3 - (local.get $4) - ) - (i32.store offset=36 - (local.get $0) - (i32.const 5) - ) - (if - (if (result i32) - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 64) - ) - (i32.const 0) - (block (result i32) - (i32.store - (local.get $3) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.const 21505) - ) - (i32.store offset=8 - (local.get $3) - (i32.add - (local.get $4) - (i32.const 12) - ) - ) - (call $___syscall54 - (i32.const 54) - (local.get $3) - ) - ) - ) - (i32.store8 offset=75 - (local.get $0) - (i32.const -1) - ) - ) - (local.set $0 - (call $___stdio_write - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - (global.set $STACKTOP - (local.get $4) - ) - (local.get $0) - ) - (func $___stdio_close (; 30 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local.set $1 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (i32.store - (local.get $1) - (i32.load offset=60 - (local.get $0) - ) - ) - (local.set $0 - (call $___syscall_ret - (call $___syscall6 - (i32.const 6) - (local.get $1) - ) - ) - ) - (global.set $STACKTOP - (local.get $1) - ) - (local.get $0) - ) - (func $___syscall_ret (; 31 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (if - (i32.gt_u - (local.get $0) - (i32.const -4096) - ) - (block - (i32.store - (call $___errno_location) - (i32.sub - (i32.const 0) - (local.get $0) - ) - ) - (local.set $0 - (i32.const -1) - ) - ) - ) - (local.get $0) - ) - (func $dynCall_iiii (; 32 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $1) - (local.get $2) - (local.get $3) - (i32.add - (i32.and - (local.get $0) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (func $stackAlloc (; 33 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local.set $1 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (local.get $0) - (global.get $STACKTOP) - ) - ) - (global.set $STACKTOP - (i32.and - (i32.add - (global.get $STACKTOP) - (i32.const 15) - ) - (i32.const -16) - ) - ) - (local.get $1) - ) - (func $___errno_location (; 34 ;) (; has Stack IR ;) (result i32) - (if (result i32) - (i32.load - (i32.const 8) - ) - (i32.load offset=60 - (call $_pthread_self) - ) - (i32.const 60) - ) - ) - (func $setThrew (; 35 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (if - (i32.eqz - (global.get $__THREW__) - ) - (block - (global.set $__THREW__ - (local.get $0) - ) - (global.set $threwValue - (local.get $1) - ) - ) - ) - ) - (func $dynCall_ii (; 36 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (call_indirect (type $i32_=>_i32) - (local.get $1) - (i32.and - (local.get $0) - (i32.const 1) - ) - ) - ) - (func $_cleanup_418 (; 37 ;) (; has Stack IR ;) (param $0 i32) - (nop) - ) - (func $establishStackSpace (; 38 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (global.set $STACKTOP - (local.get $0) - ) - (global.set $STACK_MAX - (local.get $1) - ) - ) - (func $dynCall_vi (; 39 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (call_indirect (type $i32_=>_none) - (local.get $1) - (i32.add - (i32.and - (local.get $0) - (i32.const 7) - ) - (i32.const 10) - ) - ) - ) - (func $b1 (; 40 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $abort - (i32.const 1) - ) - (i32.const 0) - ) - (func $stackRestore (; 41 ;) (; has Stack IR ;) (param $0 i32) - (global.set $STACKTOP - (local.get $0) - ) - ) - (func $setTempRet0 (; 42 ;) (; has Stack IR ;) (param $0 i32) - (global.set $tempRet0 - (local.get $0) - ) - ) - (func $b0 (; 43 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (call $abort - (i32.const 0) - ) - (i32.const 0) - ) - (func $getTempRet0 (; 44 ;) (; has Stack IR ;) (result i32) - (global.get $tempRet0) - ) - (func $_main (; 45 ;) (; has Stack IR ;) (result i32) - (call $_puts) - (i32.const 0) - ) - (func $stackSave (; 46 ;) (; has Stack IR ;) (result i32) - (global.get $STACKTOP) - ) - (func $b2 (; 47 ;) (; has Stack IR ;) (param $0 i32) - (call $abort - (i32.const 2) - ) - ) -) diff -Nru binaryen-91/test/emcc_O2_hello_world.fromasm.imprecise.no-opts binaryen-99/test/emcc_O2_hello_world.fromasm.imprecise.no-opts --- binaryen-91/test/emcc_O2_hello_world.fromasm.imprecise.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/emcc_O2_hello_world.fromasm.imprecise.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,11931 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 18 18 funcref)) - (elem (global.get $__table_base) $b0 $___stdio_close $b1 $b1 $___stdout_write $___stdio_seek $b1 $___stdio_write $b1 $b1 $b2 $b2 $b2 $b2 $_cleanup_418 $b2 $b2 $b2) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) - (import "env" "ABORT" (global $ABORT$asm2wasm$import i32)) - (import "global" "NaN" (global $nan$asm2wasm$import f64)) - (import "global" "Infinity" (global $inf$asm2wasm$import f64)) - (import "env" "abort" (func $abort (param i32))) - (import "env" "_pthread_cleanup_pop" (func $_pthread_cleanup_pop (param i32))) - (import "env" "_pthread_self" (func $_pthread_self (result i32))) - (import "env" "_sysconf" (func $_sysconf (param i32) (result i32))) - (import "env" "___lock" (func $___lock (param i32))) - (import "env" "___syscall6" (func $___syscall6 (param i32 i32) (result i32))) - (import "env" "_abort" (func $_abort)) - (import "env" "_sbrk" (func $_sbrk (param i32) (result i32))) - (import "env" "_time" (func $_time (param i32) (result i32))) - (import "env" "_pthread_cleanup_push" (func $_pthread_cleanup_push (param i32 i32))) - (import "env" "_emscripten_memcpy_big" (func $_emscripten_memcpy_big (param i32 i32 i32) (result i32))) - (import "env" "___syscall54" (func $___syscall54 (param i32 i32) (result i32))) - (import "env" "___unlock" (func $___unlock (param i32))) - (import "env" "___syscall140" (func $___syscall140 (param i32 i32) (result i32))) - (import "env" "___syscall146" (func $___syscall146 (param i32 i32) (result i32))) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (global $STACK_MAX (mut i32) (global.get $STACK_MAX$asm2wasm$import)) - (global $tempDoublePtr (mut i32) (global.get $tempDoublePtr$asm2wasm$import)) - (global $ABORT (mut i32) (global.get $ABORT$asm2wasm$import)) - (global $__THREW__ (mut i32) (i32.const 0)) - (global $threwValue (mut i32) (i32.const 0)) - (global $setjmpId (mut i32) (i32.const 0)) - (global $undef (mut i32) (i32.const 0)) - (global $nan (mut f64) (global.get $nan$asm2wasm$import)) - (global $inf (mut f64) (global.get $inf$asm2wasm$import)) - (global $tempInt (mut i32) (i32.const 0)) - (global $tempBigInt (mut i32) (i32.const 0)) - (global $tempBigIntP (mut i32) (i32.const 0)) - (global $tempBigIntS (mut i32) (i32.const 0)) - (global $tempBigIntR (mut f64) (f64.const 0)) - (global $tempBigIntI (mut i32) (i32.const 0)) - (global $tempBigIntD (mut i32) (i32.const 0)) - (global $tempValue (mut i32) (i32.const 0)) - (global $tempDouble (mut f64) (f64.const 0)) - (global $tempRet0 (mut i32) (i32.const 0)) - (global $tempRet1 (mut i32) (i32.const 0)) - (global $tempRet2 (mut i32) (i32.const 0)) - (global $tempRet3 (mut i32) (i32.const 0)) - (global $tempRet4 (mut i32) (i32.const 0)) - (global $tempRet5 (mut i32) (i32.const 0)) - (global $tempRet6 (mut i32) (i32.const 0)) - (global $tempRet7 (mut i32) (i32.const 0)) - (global $tempRet8 (mut i32) (i32.const 0)) - (global $tempRet9 (mut i32) (i32.const 0)) - (global $tempFloat (mut f64) (f64.const 0)) - (export "_free" (func $_free)) - (export "_main" (func $_main)) - (export "_memset" (func $_memset)) - (export "_malloc" (func $_malloc)) - (export "_memcpy" (func $_memcpy)) - (export "_fflush" (func $_fflush)) - (export "___errno_location" (func $___errno_location)) - (export "runPostSets" (func $runPostSets)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackSave" (func $stackSave)) - (export "stackRestore" (func $stackRestore)) - (export "establishStackSpace" (func $establishStackSpace)) - (export "setThrew" (func $setThrew)) - (export "setTempRet0" (func $setTempRet0)) - (export "getTempRet0" (func $getTempRet0)) - (export "dynCall_ii" (func $dynCall_ii)) - (export "dynCall_iiii" (func $dynCall_iiii)) - (export "dynCall_vi" (func $dynCall_vi)) - (func $_malloc (; 15 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local $i3 i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local $i9 i32) - (local $i10 i32) - (local $i11 i32) - (local $i12 i32) - (local $i13 i32) - (local $i14 i32) - (local $i15 i32) - (local $i16 i32) - (local $i17 i32) - (local $i18 i32) - (local $i19 i32) - (local $i20 i32) - (local $i21 i32) - (local $i22 i32) - (local $i23 i32) - (local $i24 i32) - (local $i25 i32) - (local $i26 i32) - (local $i27 i32) - (local $i28 i32) - (local $i29 i32) - (local $i30 i32) - (local $i31 i32) - (local $i32 i32) - (local $i33 i32) - (local $i34 i32) - (local $i35 i32) - (local $i36 i32) - (local $i37 i32) - (local $i38 i32) - (local $i39 i32) - (local $i40 i32) - (local $i41 i32) - (local $i42 i32) - (local $i43 i32) - (local $i44 i32) - (local $i45 i32) - (local $i46 i32) - (local $i47 i32) - (local $i48 i32) - (local $i49 i32) - (local $i50 i32) - (local $i51 i32) - (local $i52 i32) - (local $i53 i32) - (local $i54 i32) - (local $i55 i32) - (local $i56 i32) - (local $i57 i32) - (local $i58 i32) - (local $i59 i32) - (local $i60 i32) - (local $i61 i32) - (local $i62 i32) - (local $i63 i32) - (local $i64 i32) - (local $i65 i32) - (local $i66 i32) - (local $i67 i32) - (local $i68 i32) - (local $i69 i32) - (local $i70 i32) - (local $i71 i32) - (local $i72 i32) - (local $i73 i32) - (local $i74 i32) - (local $i75 i32) - (local $i76 i32) - (local $i77 i32) - (local $i78 i32) - (local $i79 i32) - (local $i80 i32) - (local $i81 i32) - (local $i82 i32) - (local $i83 i32) - (local $i84 i32) - (local $i85 i32) - (local $i86 i32) - (local $i87 i32) - (local $i88 i32) - (local $i89 i32) - (local $i90 i32) - (local $i91 i32) - (local $i92 i32) - (block $do-once - (if - (i32.lt_u - (local.get $i1) - (i32.const 245) - ) - (block - (local.set $i2 - (if (result i32) - (i32.lt_u - (local.get $i1) - (i32.const 11) - ) - (i32.const 16) - (i32.and - (i32.add - (local.get $i1) - (i32.const 11) - ) - (i32.const -8) - ) - ) - ) - (local.set $i3 - (i32.shr_u - (local.get $i2) - (i32.const 3) - ) - ) - (local.set $i4 - (i32.load - (i32.const 176) - ) - ) - (local.set $i5 - (i32.shr_u - (local.get $i4) - (local.get $i3) - ) - ) - (if - (i32.and - (local.get $i5) - (i32.const 3) - ) - (block - (local.set $i6 - (i32.add - (i32.xor - (i32.and - (local.get $i5) - (i32.const 1) - ) - (i32.const 1) - ) - (local.get $i3) - ) - ) - (local.set $i7 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i6) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i8 - (i32.add - (local.get $i7) - (i32.const 8) - ) - ) - (local.set $i9 - (i32.load - (local.get $i8) - ) - ) - (local.set $i10 - (i32.add - (local.get $i9) - (i32.const 8) - ) - ) - (local.set $i11 - (i32.load - (local.get $i10) - ) - ) - (block $do-once0 - (if - (i32.ne - (local.get $i7) - (local.get $i11) - ) - (block - (if - (i32.lt_u - (local.get $i11) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i12 - (i32.add - (local.get $i11) - (i32.const 12) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i12) - ) - (local.get $i9) - ) - (block - (i32.store - (local.get $i12) - (local.get $i7) - ) - (i32.store - (local.get $i8) - (local.get $i11) - ) - (br $do-once0) - ) - (call $_abort) - ) - ) - (i32.store - (i32.const 176) - (i32.and - (local.get $i4) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i6) - ) - (i32.const -1) - ) - ) - ) - ) - ) - (local.set $i11 - (i32.shl - (local.get $i6) - (i32.const 3) - ) - ) - (i32.store - (i32.add - (local.get $i9) - (i32.const 4) - ) - (i32.or - (local.get $i11) - (i32.const 3) - ) - ) - (local.set $i8 - (i32.add - (i32.add - (local.get $i9) - (local.get $i11) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $i8) - (i32.or - (i32.load - (local.get $i8) - ) - (i32.const 1) - ) - ) - (local.set $i13 - (local.get $i10) - ) - (return - (local.get $i13) - ) - ) - ) - (local.set $i8 - (i32.load - (i32.const 184) - ) - ) - (if - (i32.gt_u - (local.get $i2) - (local.get $i8) - ) - (block - (if - (local.get $i5) - (block - (local.set $i11 - (i32.shl - (i32.const 2) - (local.get $i3) - ) - ) - (local.set $i7 - (i32.and - (i32.shl - (local.get $i5) - (local.get $i3) - ) - (i32.or - (local.get $i11) - (i32.sub - (i32.const 0) - (local.get $i11) - ) - ) - ) - ) - (local.set $i11 - (i32.add - (i32.and - (local.get $i7) - (i32.sub - (i32.const 0) - (local.get $i7) - ) - ) - (i32.const -1) - ) - ) - (local.set $i7 - (i32.and - (i32.shr_u - (local.get $i11) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $i12 - (i32.shr_u - (local.get $i11) - (local.get $i7) - ) - ) - (local.set $i11 - (i32.and - (i32.shr_u - (local.get $i12) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $i14 - (i32.shr_u - (local.get $i12) - (local.get $i11) - ) - ) - (local.set $i12 - (i32.and - (i32.shr_u - (local.get $i14) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $i15 - (i32.shr_u - (local.get $i14) - (local.get $i12) - ) - ) - (local.set $i14 - (i32.and - (i32.shr_u - (local.get $i15) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $i16 - (i32.shr_u - (local.get $i15) - (local.get $i14) - ) - ) - (local.set $i15 - (i32.and - (i32.shr_u - (local.get $i16) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (local.set $i17 - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.get $i11) - (local.get $i7) - ) - (local.get $i12) - ) - (local.get $i14) - ) - (local.get $i15) - ) - (i32.shr_u - (local.get $i16) - (local.get $i15) - ) - ) - ) - (local.set $i15 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i17) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i16 - (i32.add - (local.get $i15) - (i32.const 8) - ) - ) - (local.set $i14 - (i32.load - (local.get $i16) - ) - ) - (local.set $i12 - (i32.add - (local.get $i14) - (i32.const 8) - ) - ) - (local.set $i7 - (i32.load - (local.get $i12) - ) - ) - (block $do-once2 - (if - (i32.ne - (local.get $i15) - (local.get $i7) - ) - (block - (if - (i32.lt_u - (local.get $i7) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i11 - (i32.add - (local.get $i7) - (i32.const 12) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i11) - ) - (local.get $i14) - ) - (block - (i32.store - (local.get $i11) - (local.get $i15) - ) - (i32.store - (local.get $i16) - (local.get $i7) - ) - (local.set $i18 - (i32.load - (i32.const 184) - ) - ) - (br $do-once2) - ) - (call $_abort) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (local.get $i4) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i17) - ) - (i32.const -1) - ) - ) - ) - (local.set $i18 - (local.get $i8) - ) - ) - ) - ) - (local.set $i8 - (i32.sub - (i32.shl - (local.get $i17) - (i32.const 3) - ) - (local.get $i2) - ) - ) - (i32.store - (i32.add - (local.get $i14) - (i32.const 4) - ) - (i32.or - (local.get $i2) - (i32.const 3) - ) - ) - (local.set $i4 - (i32.add - (local.get $i14) - (local.get $i2) - ) - ) - (i32.store - (i32.add - (local.get $i4) - (i32.const 4) - ) - (i32.or - (local.get $i8) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i4) - (local.get $i8) - ) - (local.get $i8) - ) - (if - (local.get $i18) - (block - (local.set $i7 - (i32.load - (i32.const 196) - ) - ) - (local.set $i16 - (i32.shr_u - (local.get $i18) - (i32.const 3) - ) - ) - (local.set $i15 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i16) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i3 - (i32.load - (i32.const 176) - ) - ) - (local.set $i5 - (i32.shl - (i32.const 1) - (local.get $i16) - ) - ) - (if - (i32.and - (local.get $i3) - (local.get $i5) - ) - (block - (local.set $i16 - (i32.add - (local.get $i15) - (i32.const 8) - ) - ) - (local.set $i10 - (i32.load - (local.get $i16) - ) - ) - (if - (i32.lt_u - (local.get $i10) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $i19 - (local.get $i16) - ) - (local.set $i20 - (local.get $i10) - ) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $i3) - (local.get $i5) - ) - ) - (local.set $i19 - (i32.add - (local.get $i15) - (i32.const 8) - ) - ) - (local.set $i20 - (local.get $i15) - ) - ) - ) - (i32.store - (local.get $i19) - (local.get $i7) - ) - (i32.store - (i32.add - (local.get $i20) - (i32.const 12) - ) - (local.get $i7) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 8) - ) - (local.get $i20) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 12) - ) - (local.get $i15) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $i8) - ) - (i32.store - (i32.const 196) - (local.get $i4) - ) - (local.set $i13 - (local.get $i12) - ) - (return - (local.get $i13) - ) - ) - ) - (local.set $i4 - (i32.load - (i32.const 180) - ) - ) - (if - (local.get $i4) - (block - (local.set $i8 - (i32.add - (i32.and - (local.get $i4) - (i32.sub - (i32.const 0) - (local.get $i4) - ) - ) - (i32.const -1) - ) - ) - (local.set $i4 - (i32.and - (i32.shr_u - (local.get $i8) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $i15 - (i32.shr_u - (local.get $i8) - (local.get $i4) - ) - ) - (local.set $i8 - (i32.and - (i32.shr_u - (local.get $i15) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $i7 - (i32.shr_u - (local.get $i15) - (local.get $i8) - ) - ) - (local.set $i15 - (i32.and - (i32.shr_u - (local.get $i7) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $i5 - (i32.shr_u - (local.get $i7) - (local.get $i15) - ) - ) - (local.set $i7 - (i32.and - (i32.shr_u - (local.get $i5) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $i3 - (i32.shr_u - (local.get $i5) - (local.get $i7) - ) - ) - (local.set $i5 - (i32.and - (i32.shr_u - (local.get $i3) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (local.set $i10 - (i32.load - (i32.add - (i32.const 480) - (i32.shl - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.get $i8) - (local.get $i4) - ) - (local.get $i15) - ) - (local.get $i7) - ) - (local.get $i5) - ) - (i32.shr_u - (local.get $i3) - (local.get $i5) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (local.set $i5 - (i32.sub - (i32.and - (i32.load - (i32.add - (local.get $i10) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $i2) - ) - ) - (local.set $i3 - (local.get $i10) - ) - (local.set $i7 - (local.get $i10) - ) - (loop $while-in - (block $while-out - (local.set $i10 - (i32.load - (i32.add - (local.get $i3) - (i32.const 16) - ) - ) - ) - (if - (i32.eqz - (local.get $i10) - ) - (block - (local.set $i15 - (i32.load - (i32.add - (local.get $i3) - (i32.const 20) - ) - ) - ) - (if - (i32.eqz - (local.get $i15) - ) - (block - (local.set $i21 - (local.get $i5) - ) - (local.set $i22 - (local.get $i7) - ) - (br $while-out) - ) - (local.set $i23 - (local.get $i15) - ) - ) - ) - (local.set $i23 - (local.get $i10) - ) - ) - (local.set $i10 - (i32.sub - (i32.and - (i32.load - (i32.add - (local.get $i23) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $i2) - ) - ) - (local.set $i15 - (i32.lt_u - (local.get $i10) - (local.get $i5) - ) - ) - (local.set $i5 - (if (result i32) - (local.get $i15) - (local.get $i10) - (local.get $i5) - ) - ) - (local.set $i3 - (local.get $i23) - ) - (local.set $i7 - (if (result i32) - (local.get $i15) - (local.get $i23) - (local.get $i7) - ) - ) - (br $while-in) - ) - ) - (local.set $i7 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i22) - (local.get $i7) - ) - (call $_abort) - ) - (local.set $i3 - (i32.add - (local.get $i22) - (local.get $i2) - ) - ) - (if - (i32.ge_u - (local.get $i22) - (local.get $i3) - ) - (call $_abort) - ) - (local.set $i5 - (i32.load - (i32.add - (local.get $i22) - (i32.const 24) - ) - ) - ) - (local.set $i12 - (i32.load - (i32.add - (local.get $i22) - (i32.const 12) - ) - ) - ) - (block $do-once4 - (if - (i32.eq - (local.get $i12) - (local.get $i22) - ) - (block - (local.set $i14 - (i32.add - (local.get $i22) - (i32.const 20) - ) - ) - (local.set $i17 - (i32.load - (local.get $i14) - ) - ) - (if - (i32.eqz - (local.get $i17) - ) - (block - (local.set $i15 - (i32.add - (local.get $i22) - (i32.const 16) - ) - ) - (local.set $i10 - (i32.load - (local.get $i15) - ) - ) - (if - (i32.eqz - (local.get $i10) - ) - (block - (local.set $i24 - (i32.const 0) - ) - (br $do-once4) - ) - (block - (local.set $i25 - (local.get $i10) - ) - (local.set $i26 - (local.get $i15) - ) - ) - ) - ) - (block - (local.set $i25 - (local.get $i17) - ) - (local.set $i26 - (local.get $i14) - ) - ) - ) - (loop $while-in7 - (block $while-out6 - (local.set $i14 - (i32.add - (local.get $i25) - (i32.const 20) - ) - ) - (local.set $i17 - (i32.load - (local.get $i14) - ) - ) - (if - (local.get $i17) - (block - (local.set $i25 - (local.get $i17) - ) - (local.set $i26 - (local.get $i14) - ) - (br $while-in7) - ) - ) - (local.set $i14 - (i32.add - (local.get $i25) - (i32.const 16) - ) - ) - (local.set $i17 - (i32.load - (local.get $i14) - ) - ) - (if - (i32.eqz - (local.get $i17) - ) - (block - (local.set $i27 - (local.get $i25) - ) - (local.set $i28 - (local.get $i26) - ) - (br $while-out6) - ) - (block - (local.set $i25 - (local.get $i17) - ) - (local.set $i26 - (local.get $i14) - ) - ) - ) - (br $while-in7) - ) - ) - (if - (i32.lt_u - (local.get $i28) - (local.get $i7) - ) - (call $_abort) - (block - (i32.store - (local.get $i28) - (i32.const 0) - ) - (local.set $i24 - (local.get $i27) - ) - (br $do-once4) - ) - ) - ) - (block - (local.set $i14 - (i32.load - (i32.add - (local.get $i22) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $i14) - (local.get $i7) - ) - (call $_abort) - ) - (local.set $i17 - (i32.add - (local.get $i14) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $i17) - ) - (local.get $i22) - ) - (call $_abort) - ) - (local.set $i15 - (i32.add - (local.get $i12) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i15) - ) - (local.get $i22) - ) - (block - (i32.store - (local.get $i17) - (local.get $i12) - ) - (i32.store - (local.get $i15) - (local.get $i14) - ) - (local.set $i24 - (local.get $i12) - ) - (br $do-once4) - ) - (call $_abort) - ) - ) - ) - ) - (block $do-once8 - (if - (local.get $i5) - (block - (local.set $i12 - (i32.load - (i32.add - (local.get $i22) - (i32.const 28) - ) - ) - ) - (local.set $i7 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i12) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $i22) - (i32.load - (local.get $i7) - ) - ) - (block - (i32.store - (local.get $i7) - (local.get $i24) - ) - (if - (i32.eqz - (local.get $i24) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i12) - ) - (i32.const -1) - ) - ) - ) - (br $do-once8) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $i5) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i12 - (i32.add - (local.get $i5) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i12) - ) - (local.get $i22) - ) - (i32.store - (local.get $i12) - (local.get $i24) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 20) - ) - (local.get $i24) - ) - ) - (if - (i32.eqz - (local.get $i24) - ) - (br $do-once8) - ) - ) - ) - (local.set $i12 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i24) - (local.get $i12) - ) - (call $_abort) - ) - (i32.store - (i32.add - (local.get $i24) - (i32.const 24) - ) - (local.get $i5) - ) - (local.set $i7 - (i32.load - (i32.add - (local.get $i22) - (i32.const 16) - ) - ) - ) - (block $do-once10 - (if - (local.get $i7) - (if - (i32.lt_u - (local.get $i7) - (local.get $i12) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i24) - (i32.const 16) - ) - (local.get $i7) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 24) - ) - (local.get $i24) - ) - (br $do-once10) - ) - ) - ) - ) - (local.set $i7 - (i32.load - (i32.add - (local.get $i22) - (i32.const 20) - ) - ) - ) - (if - (local.get $i7) - (if - (i32.lt_u - (local.get $i7) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i24) - (i32.const 20) - ) - (local.get $i7) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 24) - ) - (local.get $i24) - ) - (br $do-once8) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $i21) - (i32.const 16) - ) - (block - (local.set $i5 - (i32.add - (local.get $i21) - (local.get $i2) - ) - ) - (i32.store - (i32.add - (local.get $i22) - (i32.const 4) - ) - (i32.or - (local.get $i5) - (i32.const 3) - ) - ) - (local.set $i7 - (i32.add - (i32.add - (local.get $i22) - (local.get $i5) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $i7) - (i32.or - (i32.load - (local.get $i7) - ) - (i32.const 1) - ) - ) - ) - (block - (i32.store - (i32.add - (local.get $i22) - (i32.const 4) - ) - (i32.or - (local.get $i2) - (i32.const 3) - ) - ) - (i32.store - (i32.add - (local.get $i3) - (i32.const 4) - ) - (i32.or - (local.get $i21) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i3) - (local.get $i21) - ) - (local.get $i21) - ) - (local.set $i7 - (i32.load - (i32.const 184) - ) - ) - (if - (local.get $i7) - (block - (local.set $i5 - (i32.load - (i32.const 196) - ) - ) - (local.set $i12 - (i32.shr_u - (local.get $i7) - (i32.const 3) - ) - ) - (local.set $i7 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i12) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i14 - (i32.load - (i32.const 176) - ) - ) - (local.set $i15 - (i32.shl - (i32.const 1) - (local.get $i12) - ) - ) - (if - (i32.and - (local.get $i14) - (local.get $i15) - ) - (block - (local.set $i12 - (i32.add - (local.get $i7) - (i32.const 8) - ) - ) - (local.set $i17 - (i32.load - (local.get $i12) - ) - ) - (if - (i32.lt_u - (local.get $i17) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $i29 - (local.get $i12) - ) - (local.set $i30 - (local.get $i17) - ) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $i14) - (local.get $i15) - ) - ) - (local.set $i29 - (i32.add - (local.get $i7) - (i32.const 8) - ) - ) - (local.set $i30 - (local.get $i7) - ) - ) - ) - (i32.store - (local.get $i29) - (local.get $i5) - ) - (i32.store - (i32.add - (local.get $i30) - (i32.const 12) - ) - (local.get $i5) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 8) - ) - (local.get $i30) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 12) - ) - (local.get $i7) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $i21) - ) - (i32.store - (i32.const 196) - (local.get $i3) - ) - ) - ) - (local.set $i13 - (i32.add - (local.get $i22) - (i32.const 8) - ) - ) - (return - (local.get $i13) - ) - ) - (local.set $i31 - (local.get $i2) - ) - ) - ) - (local.set $i31 - (local.get $i2) - ) - ) - ) - (if - (i32.le_u - (local.get $i1) - (i32.const -65) - ) - (block - (local.set $i7 - (i32.add - (local.get $i1) - (i32.const 11) - ) - ) - (local.set $i5 - (i32.and - (local.get $i7) - (i32.const -8) - ) - ) - (local.set $i15 - (i32.load - (i32.const 180) - ) - ) - (if - (local.get $i15) - (block - (local.set $i14 - (i32.sub - (i32.const 0) - (local.get $i5) - ) - ) - (local.set $i17 - (i32.shr_u - (local.get $i7) - (i32.const 8) - ) - ) - (if - (local.get $i17) - (if - (i32.gt_u - (local.get $i5) - (i32.const 16777215) - ) - (local.set $i32 - (i32.const 31) - ) - (block - (local.set $i7 - (i32.and - (i32.shr_u - (i32.add - (local.get $i17) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $i12 - (i32.shl - (local.get $i17) - (local.get $i7) - ) - ) - (local.set $i17 - (i32.and - (i32.shr_u - (i32.add - (local.get $i12) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $i10 - (i32.shl - (local.get $i12) - (local.get $i17) - ) - ) - (local.set $i12 - (i32.and - (i32.shr_u - (i32.add - (local.get $i10) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $i4 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $i17) - (local.get $i7) - ) - (local.get $i12) - ) - ) - (i32.shr_u - (i32.shl - (local.get $i10) - (local.get $i12) - ) - (i32.const 15) - ) - ) - ) - (local.set $i32 - (i32.or - (i32.and - (i32.shr_u - (local.get $i5) - (i32.add - (local.get $i4) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $i4) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i32 - (i32.const 0) - ) - ) - (local.set $i4 - (i32.load - (i32.add - (i32.const 480) - (i32.shl - (local.get $i32) - (i32.const 2) - ) - ) - ) - ) - (block $label$break$L123 - (if - (i32.eqz - (local.get $i4) - ) - (block - (local.set $i33 - (local.get $i14) - ) - (local.set $i34 - (i32.const 0) - ) - (local.set $i35 - (i32.const 0) - ) - (local.set $i36 - (i32.const 86) - ) - ) - (block - (local.set $i12 - (local.get $i14) - ) - (local.set $i10 - (i32.const 0) - ) - (local.set $i7 - (i32.shl - (local.get $i5) - (if (result i32) - (i32.eq - (local.get $i32) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $i32) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i17 - (local.get $i4) - ) - (local.set $i8 - (i32.const 0) - ) - (loop $while-in14 - (block $while-out13 - (local.set $i16 - (i32.and - (i32.load - (i32.add - (local.get $i17) - (i32.const 4) - ) - ) - (i32.const -8) - ) - ) - (local.set $i9 - (i32.sub - (local.get $i16) - (local.get $i5) - ) - ) - (if - (i32.lt_u - (local.get $i9) - (local.get $i12) - ) - (if - (i32.eq - (local.get $i16) - (local.get $i5) - ) - (block - (local.set $i37 - (local.get $i9) - ) - (local.set $i38 - (local.get $i17) - ) - (local.set $i39 - (local.get $i17) - ) - (local.set $i36 - (i32.const 90) - ) - (br $label$break$L123) - ) - (block - (local.set $i40 - (local.get $i9) - ) - (local.set $i41 - (local.get $i17) - ) - ) - ) - (block - (local.set $i40 - (local.get $i12) - ) - (local.set $i41 - (local.get $i8) - ) - ) - ) - (local.set $i9 - (i32.load - (i32.add - (local.get $i17) - (i32.const 20) - ) - ) - ) - (local.set $i17 - (i32.load - (i32.add - (i32.add - (local.get $i17) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $i7) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - (local.set $i16 - (if (result i32) - (i32.or - (i32.eq - (local.get $i9) - (i32.const 0) - ) - (i32.eq - (local.get $i9) - (local.get $i17) - ) - ) - (local.get $i10) - (local.get $i9) - ) - ) - (local.set $i9 - (i32.eq - (local.get $i17) - (i32.const 0) - ) - ) - (if - (local.get $i9) - (block - (local.set $i33 - (local.get $i40) - ) - (local.set $i34 - (local.get $i16) - ) - (local.set $i35 - (local.get $i41) - ) - (local.set $i36 - (i32.const 86) - ) - (br $while-out13) - ) - (block - (local.set $i12 - (local.get $i40) - ) - (local.set $i10 - (local.get $i16) - ) - (local.set $i7 - (i32.shl - (local.get $i7) - (i32.xor - (i32.and - (local.get $i9) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (local.set $i8 - (local.get $i41) - ) - ) - ) - (br $while-in14) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 86) - ) - (block - (if - (i32.and - (i32.eq - (local.get $i34) - (i32.const 0) - ) - (i32.eq - (local.get $i35) - (i32.const 0) - ) - ) - (block - (local.set $i4 - (i32.shl - (i32.const 2) - (local.get $i32) - ) - ) - (local.set $i14 - (i32.and - (local.get $i15) - (i32.or - (local.get $i4) - (i32.sub - (i32.const 0) - (local.get $i4) - ) - ) - ) - ) - (if - (i32.eqz - (local.get $i14) - ) - (block - (local.set $i31 - (local.get $i5) - ) - (br $do-once) - ) - ) - (local.set $i4 - (i32.add - (i32.and - (local.get $i14) - (i32.sub - (i32.const 0) - (local.get $i14) - ) - ) - (i32.const -1) - ) - ) - (local.set $i14 - (i32.and - (i32.shr_u - (local.get $i4) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $i2 - (i32.shr_u - (local.get $i4) - (local.get $i14) - ) - ) - (local.set $i4 - (i32.and - (i32.shr_u - (local.get $i2) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $i3 - (i32.shr_u - (local.get $i2) - (local.get $i4) - ) - ) - (local.set $i2 - (i32.and - (i32.shr_u - (local.get $i3) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $i8 - (i32.shr_u - (local.get $i3) - (local.get $i2) - ) - ) - (local.set $i3 - (i32.and - (i32.shr_u - (local.get $i8) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $i7 - (i32.shr_u - (local.get $i8) - (local.get $i3) - ) - ) - (local.set $i8 - (i32.and - (i32.shr_u - (local.get $i7) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (local.set $i42 - (i32.load - (i32.add - (i32.const 480) - (i32.shl - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.get $i4) - (local.get $i14) - ) - (local.get $i2) - ) - (local.get $i3) - ) - (local.get $i8) - ) - (i32.shr_u - (local.get $i7) - (local.get $i8) - ) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (local.set $i42 - (local.get $i34) - ) - ) - (if - (i32.eqz - (local.get $i42) - ) - (block - (local.set $i43 - (local.get $i33) - ) - (local.set $i44 - (local.get $i35) - ) - ) - (block - (local.set $i37 - (local.get $i33) - ) - (local.set $i38 - (local.get $i42) - ) - (local.set $i39 - (local.get $i35) - ) - (local.set $i36 - (i32.const 90) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 90) - ) - (loop $while-in16 - (block $while-out15 - (local.set $i36 - (i32.const 0) - ) - (local.set $i8 - (i32.sub - (i32.and - (i32.load - (i32.add - (local.get $i38) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $i5) - ) - ) - (local.set $i7 - (i32.lt_u - (local.get $i8) - (local.get $i37) - ) - ) - (local.set $i3 - (if (result i32) - (local.get $i7) - (local.get $i8) - (local.get $i37) - ) - ) - (local.set $i8 - (if (result i32) - (local.get $i7) - (local.get $i38) - (local.get $i39) - ) - ) - (local.set $i7 - (i32.load - (i32.add - (local.get $i38) - (i32.const 16) - ) - ) - ) - (if - (local.get $i7) - (block - (local.set $i37 - (local.get $i3) - ) - (local.set $i38 - (local.get $i7) - ) - (local.set $i39 - (local.get $i8) - ) - (local.set $i36 - (i32.const 90) - ) - (br $while-in16) - ) - ) - (local.set $i38 - (i32.load - (i32.add - (local.get $i38) - (i32.const 20) - ) - ) - ) - (if - (i32.eqz - (local.get $i38) - ) - (block - (local.set $i43 - (local.get $i3) - ) - (local.set $i44 - (local.get $i8) - ) - (br $while-out15) - ) - (block - (local.set $i37 - (local.get $i3) - ) - (local.set $i39 - (local.get $i8) - ) - (local.set $i36 - (i32.const 90) - ) - ) - ) - (br $while-in16) - ) - ) - ) - (if - (if (result i32) - (i32.ne - (local.get $i44) - (i32.const 0) - ) - (i32.lt_u - (local.get $i43) - (i32.sub - (i32.load - (i32.const 184) - ) - (local.get $i5) - ) - ) - (i32.const 0) - ) - (block - (local.set $i15 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i44) - (local.get $i15) - ) - (call $_abort) - ) - (local.set $i8 - (i32.add - (local.get $i44) - (local.get $i5) - ) - ) - (if - (i32.ge_u - (local.get $i44) - (local.get $i8) - ) - (call $_abort) - ) - (local.set $i3 - (i32.load - (i32.add - (local.get $i44) - (i32.const 24) - ) - ) - ) - (local.set $i7 - (i32.load - (i32.add - (local.get $i44) - (i32.const 12) - ) - ) - ) - (block $do-once17 - (if - (i32.eq - (local.get $i7) - (local.get $i44) - ) - (block - (local.set $i2 - (i32.add - (local.get $i44) - (i32.const 20) - ) - ) - (local.set $i14 - (i32.load - (local.get $i2) - ) - ) - (if - (i32.eqz - (local.get $i14) - ) - (block - (local.set $i4 - (i32.add - (local.get $i44) - (i32.const 16) - ) - ) - (local.set $i10 - (i32.load - (local.get $i4) - ) - ) - (if - (i32.eqz - (local.get $i10) - ) - (block - (local.set $i45 - (i32.const 0) - ) - (br $do-once17) - ) - (block - (local.set $i46 - (local.get $i10) - ) - (local.set $i47 - (local.get $i4) - ) - ) - ) - ) - (block - (local.set $i46 - (local.get $i14) - ) - (local.set $i47 - (local.get $i2) - ) - ) - ) - (loop $while-in20 - (block $while-out19 - (local.set $i2 - (i32.add - (local.get $i46) - (i32.const 20) - ) - ) - (local.set $i14 - (i32.load - (local.get $i2) - ) - ) - (if - (local.get $i14) - (block - (local.set $i46 - (local.get $i14) - ) - (local.set $i47 - (local.get $i2) - ) - (br $while-in20) - ) - ) - (local.set $i2 - (i32.add - (local.get $i46) - (i32.const 16) - ) - ) - (local.set $i14 - (i32.load - (local.get $i2) - ) - ) - (if - (i32.eqz - (local.get $i14) - ) - (block - (local.set $i48 - (local.get $i46) - ) - (local.set $i49 - (local.get $i47) - ) - (br $while-out19) - ) - (block - (local.set $i46 - (local.get $i14) - ) - (local.set $i47 - (local.get $i2) - ) - ) - ) - (br $while-in20) - ) - ) - (if - (i32.lt_u - (local.get $i49) - (local.get $i15) - ) - (call $_abort) - (block - (i32.store - (local.get $i49) - (i32.const 0) - ) - (local.set $i45 - (local.get $i48) - ) - (br $do-once17) - ) - ) - ) - (block - (local.set $i2 - (i32.load - (i32.add - (local.get $i44) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $i2) - (local.get $i15) - ) - (call $_abort) - ) - (local.set $i14 - (i32.add - (local.get $i2) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $i14) - ) - (local.get $i44) - ) - (call $_abort) - ) - (local.set $i4 - (i32.add - (local.get $i7) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i4) - ) - (local.get $i44) - ) - (block - (i32.store - (local.get $i14) - (local.get $i7) - ) - (i32.store - (local.get $i4) - (local.get $i2) - ) - (local.set $i45 - (local.get $i7) - ) - (br $do-once17) - ) - (call $_abort) - ) - ) - ) - ) - (block $do-once21 - (if - (local.get $i3) - (block - (local.set $i7 - (i32.load - (i32.add - (local.get $i44) - (i32.const 28) - ) - ) - ) - (local.set $i15 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i7) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $i44) - (i32.load - (local.get $i15) - ) - ) - (block - (i32.store - (local.get $i15) - (local.get $i45) - ) - (if - (i32.eqz - (local.get $i45) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i7) - ) - (i32.const -1) - ) - ) - ) - (br $do-once21) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $i3) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i7 - (i32.add - (local.get $i3) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i7) - ) - (local.get $i44) - ) - (i32.store - (local.get $i7) - (local.get $i45) - ) - (i32.store - (i32.add - (local.get $i3) - (i32.const 20) - ) - (local.get $i45) - ) - ) - (if - (i32.eqz - (local.get $i45) - ) - (br $do-once21) - ) - ) - ) - (local.set $i7 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i45) - (local.get $i7) - ) - (call $_abort) - ) - (i32.store - (i32.add - (local.get $i45) - (i32.const 24) - ) - (local.get $i3) - ) - (local.set $i15 - (i32.load - (i32.add - (local.get $i44) - (i32.const 16) - ) - ) - ) - (block $do-once23 - (if - (local.get $i15) - (if - (i32.lt_u - (local.get $i15) - (local.get $i7) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i45) - (i32.const 16) - ) - (local.get $i15) - ) - (i32.store - (i32.add - (local.get $i15) - (i32.const 24) - ) - (local.get $i45) - ) - (br $do-once23) - ) - ) - ) - ) - (local.set $i15 - (i32.load - (i32.add - (local.get $i44) - (i32.const 20) - ) - ) - ) - (if - (local.get $i15) - (if - (i32.lt_u - (local.get $i15) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i45) - (i32.const 20) - ) - (local.get $i15) - ) - (i32.store - (i32.add - (local.get $i15) - (i32.const 24) - ) - (local.get $i45) - ) - (br $do-once21) - ) - ) - ) - ) - ) - ) - (block $do-once25 - (if - (i32.ge_u - (local.get $i43) - (i32.const 16) - ) - (block - (i32.store - (i32.add - (local.get $i44) - (i32.const 4) - ) - (i32.or - (local.get $i5) - (i32.const 3) - ) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 4) - ) - (i32.or - (local.get $i43) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i8) - (local.get $i43) - ) - (local.get $i43) - ) - (local.set $i3 - (i32.shr_u - (local.get $i43) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $i43) - (i32.const 256) - ) - (block - (local.set $i15 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i3) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i7 - (i32.load - (i32.const 176) - ) - ) - (local.set $i2 - (i32.shl - (i32.const 1) - (local.get $i3) - ) - ) - (if - (i32.and - (local.get $i7) - (local.get $i2) - ) - (block - (local.set $i3 - (i32.add - (local.get $i15) - (i32.const 8) - ) - ) - (local.set $i4 - (i32.load - (local.get $i3) - ) - ) - (if - (i32.lt_u - (local.get $i4) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $i50 - (local.get $i3) - ) - (local.set $i51 - (local.get $i4) - ) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $i7) - (local.get $i2) - ) - ) - (local.set $i50 - (i32.add - (local.get $i15) - (i32.const 8) - ) - ) - (local.set $i51 - (local.get $i15) - ) - ) - ) - (i32.store - (local.get $i50) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i51) - (i32.const 12) - ) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 8) - ) - (local.get $i51) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 12) - ) - (local.get $i15) - ) - (br $do-once25) - ) - ) - (local.set $i15 - (i32.shr_u - (local.get $i43) - (i32.const 8) - ) - ) - (if - (local.get $i15) - (if - (i32.gt_u - (local.get $i43) - (i32.const 16777215) - ) - (local.set $i52 - (i32.const 31) - ) - (block - (local.set $i2 - (i32.and - (i32.shr_u - (i32.add - (local.get $i15) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $i7 - (i32.shl - (local.get $i15) - (local.get $i2) - ) - ) - (local.set $i15 - (i32.and - (i32.shr_u - (i32.add - (local.get $i7) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $i4 - (i32.shl - (local.get $i7) - (local.get $i15) - ) - ) - (local.set $i7 - (i32.and - (i32.shr_u - (i32.add - (local.get $i4) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $i3 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $i15) - (local.get $i2) - ) - (local.get $i7) - ) - ) - (i32.shr_u - (i32.shl - (local.get $i4) - (local.get $i7) - ) - (i32.const 15) - ) - ) - ) - (local.set $i52 - (i32.or - (i32.and - (i32.shr_u - (local.get $i43) - (i32.add - (local.get $i3) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $i3) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i52 - (i32.const 0) - ) - ) - (local.set $i3 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i52) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 28) - ) - (local.get $i52) - ) - (local.set $i7 - (i32.add - (local.get $i8) - (i32.const 16) - ) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 4) - ) - (i32.const 0) - ) - (i32.store - (local.get $i7) - (i32.const 0) - ) - (local.set $i7 - (i32.load - (i32.const 180) - ) - ) - (local.set $i4 - (i32.shl - (i32.const 1) - (local.get $i52) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $i7) - (local.get $i4) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $i7) - (local.get $i4) - ) - ) - (i32.store - (local.get $i3) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 24) - ) - (local.get $i3) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 12) - ) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 8) - ) - (local.get $i8) - ) - (br $do-once25) - ) - ) - (local.set $i4 - (i32.shl - (local.get $i43) - (if (result i32) - (i32.eq - (local.get $i52) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $i52) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i7 - (i32.load - (local.get $i3) - ) - ) - (loop $while-in28 - (block $while-out27 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $i7) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $i43) - ) - (block - (local.set $i53 - (local.get $i7) - ) - (local.set $i36 - (i32.const 148) - ) - (br $while-out27) - ) - ) - (local.set $i3 - (i32.add - (i32.add - (local.get $i7) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $i4) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $i2 - (i32.load - (local.get $i3) - ) - ) - (if - (i32.eqz - (local.get $i2) - ) - (block - (local.set $i54 - (local.get $i3) - ) - (local.set $i55 - (local.get $i7) - ) - (local.set $i36 - (i32.const 145) - ) - (br $while-out27) - ) - (block - (local.set $i4 - (i32.shl - (local.get $i4) - (i32.const 1) - ) - ) - (local.set $i7 - (local.get $i2) - ) - ) - ) - (br $while-in28) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 145) - ) - (if - (i32.lt_u - (local.get $i54) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $i54) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 24) - ) - (local.get $i55) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 12) - ) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 8) - ) - (local.get $i8) - ) - (br $do-once25) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 148) - ) - (block - (local.set $i7 - (i32.add - (local.get $i53) - (i32.const 8) - ) - ) - (local.set $i4 - (i32.load - (local.get $i7) - ) - ) - (local.set $i2 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $i4) - (local.get $i2) - ) - (i32.ge_u - (local.get $i53) - (local.get $i2) - ) - ) - (block - (i32.store - (i32.add - (local.get $i4) - (i32.const 12) - ) - (local.get $i8) - ) - (i32.store - (local.get $i7) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 8) - ) - (local.get $i4) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 12) - ) - (local.get $i53) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once25) - ) - (call $_abort) - ) - ) - ) - ) - ) - (block - (local.set $i4 - (i32.add - (local.get $i43) - (local.get $i5) - ) - ) - (i32.store - (i32.add - (local.get $i44) - (i32.const 4) - ) - (i32.or - (local.get $i4) - (i32.const 3) - ) - ) - (local.set $i7 - (i32.add - (i32.add - (local.get $i44) - (local.get $i4) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $i7) - (i32.or - (i32.load - (local.get $i7) - ) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i13 - (i32.add - (local.get $i44) - (i32.const 8) - ) - ) - (return - (local.get $i13) - ) - ) - (local.set $i31 - (local.get $i5) - ) - ) - ) - (local.set $i31 - (local.get $i5) - ) - ) - ) - (local.set $i31 - (i32.const -1) - ) - ) - ) - ) - (local.set $i44 - (i32.load - (i32.const 184) - ) - ) - (if - (i32.ge_u - (local.get $i44) - (local.get $i31) - ) - (block - (local.set $i43 - (i32.sub - (local.get $i44) - (local.get $i31) - ) - ) - (local.set $i53 - (i32.load - (i32.const 196) - ) - ) - (if - (i32.gt_u - (local.get $i43) - (i32.const 15) - ) - (block - (local.set $i55 - (i32.add - (local.get $i53) - (local.get $i31) - ) - ) - (i32.store - (i32.const 196) - (local.get $i55) - ) - (i32.store - (i32.const 184) - (local.get $i43) - ) - (i32.store - (i32.add - (local.get $i55) - (i32.const 4) - ) - (i32.or - (local.get $i43) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i55) - (local.get $i43) - ) - (local.get $i43) - ) - (i32.store - (i32.add - (local.get $i53) - (i32.const 4) - ) - (i32.or - (local.get $i31) - (i32.const 3) - ) - ) - ) - (block - (i32.store - (i32.const 184) - (i32.const 0) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $i53) - (i32.const 4) - ) - (i32.or - (local.get $i44) - (i32.const 3) - ) - ) - (local.set $i43 - (i32.add - (i32.add - (local.get $i53) - (local.get $i44) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $i43) - (i32.or - (i32.load - (local.get $i43) - ) - (i32.const 1) - ) - ) - ) - ) - (local.set $i13 - (i32.add - (local.get $i53) - (i32.const 8) - ) - ) - (return - (local.get $i13) - ) - ) - ) - (local.set $i53 - (i32.load - (i32.const 188) - ) - ) - (if - (i32.gt_u - (local.get $i53) - (local.get $i31) - ) - (block - (local.set $i43 - (i32.sub - (local.get $i53) - (local.get $i31) - ) - ) - (i32.store - (i32.const 188) - (local.get $i43) - ) - (local.set $i53 - (i32.load - (i32.const 200) - ) - ) - (local.set $i44 - (i32.add - (local.get $i53) - (local.get $i31) - ) - ) - (i32.store - (i32.const 200) - (local.get $i44) - ) - (i32.store - (i32.add - (local.get $i44) - (i32.const 4) - ) - (i32.or - (local.get $i43) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i53) - (i32.const 4) - ) - (i32.or - (local.get $i31) - (i32.const 3) - ) - ) - (local.set $i13 - (i32.add - (local.get $i53) - (i32.const 8) - ) - ) - (return - (local.get $i13) - ) - ) - ) - (block $do-once29 - (if - (i32.eqz - (i32.load - (i32.const 648) - ) - ) - (block - (local.set $i53 - (call $_sysconf - (i32.const 30) - ) - ) - (if - (i32.eqz - (i32.and - (i32.add - (local.get $i53) - (i32.const -1) - ) - (local.get $i53) - ) - ) - (block - (i32.store - (i32.const 656) - (local.get $i53) - ) - (i32.store - (i32.const 652) - (local.get $i53) - ) - (i32.store - (i32.const 660) - (i32.const -1) - ) - (i32.store - (i32.const 664) - (i32.const -1) - ) - (i32.store - (i32.const 668) - (i32.const 0) - ) - (i32.store - (i32.const 620) - (i32.const 0) - ) - (i32.store - (i32.const 648) - (i32.xor - (i32.and - (call $_time - (i32.const 0) - ) - (i32.const -16) - ) - (i32.const 1431655768) - ) - ) - (br $do-once29) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $i53 - (i32.add - (local.get $i31) - (i32.const 48) - ) - ) - (local.set $i43 - (i32.load - (i32.const 656) - ) - ) - (local.set $i44 - (i32.add - (local.get $i31) - (i32.const 47) - ) - ) - (local.set $i55 - (i32.add - (local.get $i43) - (local.get $i44) - ) - ) - (local.set $i54 - (i32.sub - (i32.const 0) - (local.get $i43) - ) - ) - (local.set $i43 - (i32.and - (local.get $i55) - (local.get $i54) - ) - ) - (if - (i32.le_u - (local.get $i43) - (local.get $i31) - ) - (block - (local.set $i13 - (i32.const 0) - ) - (return - (local.get $i13) - ) - ) - ) - (local.set $i52 - (i32.load - (i32.const 616) - ) - ) - (if - (if (result i32) - (i32.ne - (local.get $i52) - (i32.const 0) - ) - (block (result i32) - (local.set $i51 - (i32.load - (i32.const 608) - ) - ) - (block (result i32) - (local.set $i50 - (i32.add - (local.get $i51) - (local.get $i43) - ) - ) - (i32.or - (i32.le_u - (local.get $i50) - (local.get $i51) - ) - (i32.gt_u - (local.get $i50) - (local.get $i52) - ) - ) - ) - ) - (i32.const 0) - ) - (block - (local.set $i13 - (i32.const 0) - ) - (return - (local.get $i13) - ) - ) - ) - (block $label$break$L257 - (if - (i32.eqz - (i32.and - (i32.load - (i32.const 620) - ) - (i32.const 4) - ) - ) - (block - (local.set $i52 - (i32.load - (i32.const 200) - ) - ) - (block $label$break$L259 - (if - (local.get $i52) - (block - (local.set $i50 - (i32.const 624) - ) - (loop $while-in34 - (block $while-out33 - (local.set $i51 - (i32.load - (local.get $i50) - ) - ) - (if - (if (result i32) - (i32.le_u - (local.get $i51) - (local.get $i52) - ) - (block (result i32) - (local.set $i45 - (i32.add - (local.get $i50) - (i32.const 4) - ) - ) - (i32.gt_u - (i32.add - (local.get $i51) - (i32.load - (local.get $i45) - ) - ) - (local.get $i52) - ) - ) - (i32.const 0) - ) - (block - (local.set $i56 - (local.get $i50) - ) - (local.set $i57 - (local.get $i45) - ) - (br $while-out33) - ) - ) - (local.set $i50 - (i32.load - (i32.add - (local.get $i50) - (i32.const 8) - ) - ) - ) - (if - (i32.eqz - (local.get $i50) - ) - (block - (local.set $i36 - (i32.const 173) - ) - (br $label$break$L259) - ) - ) - (br $while-in34) - ) - ) - (local.set $i50 - (i32.and - (i32.sub - (local.get $i55) - (i32.load - (i32.const 188) - ) - ) - (local.get $i54) - ) - ) - (if - (i32.lt_u - (local.get $i50) - (i32.const 2147483647) - ) - (block - (local.set $i45 - (call $_sbrk - (local.get $i50) - ) - ) - (if - (i32.eq - (local.get $i45) - (i32.add - (i32.load - (local.get $i56) - ) - (i32.load - (local.get $i57) - ) - ) - ) - (if - (i32.ne - (local.get $i45) - (i32.const -1) - ) - (block - (local.set $i58 - (local.get $i45) - ) - (local.set $i59 - (local.get $i50) - ) - (local.set $i36 - (i32.const 193) - ) - (br $label$break$L257) - ) - ) - (block - (local.set $i60 - (local.get $i45) - ) - (local.set $i61 - (local.get $i50) - ) - (local.set $i36 - (i32.const 183) - ) - ) - ) - ) - ) - ) - (local.set $i36 - (i32.const 173) - ) - ) - ) - (block $do-once35 - (if - (if (result i32) - (i32.eq - (local.get $i36) - (i32.const 173) - ) - (block (result i32) - (local.set $i52 - (call $_sbrk - (i32.const 0) - ) - ) - (i32.ne - (local.get $i52) - (i32.const -1) - ) - ) - (i32.const 0) - ) - (block - (local.set $i5 - (local.get $i52) - ) - (local.set $i50 - (i32.load - (i32.const 652) - ) - ) - (local.set $i45 - (i32.add - (local.get $i50) - (i32.const -1) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $i45) - (local.get $i5) - ) - ) - (local.set $i62 - (local.get $i43) - ) - (local.set $i62 - (i32.add - (i32.sub - (local.get $i43) - (local.get $i5) - ) - (i32.and - (i32.add - (local.get $i45) - (local.get $i5) - ) - (i32.sub - (i32.const 0) - (local.get $i50) - ) - ) - ) - ) - ) - (local.set $i50 - (i32.load - (i32.const 608) - ) - ) - (local.set $i5 - (i32.add - (local.get $i50) - (local.get $i62) - ) - ) - (if - (i32.and - (i32.gt_u - (local.get $i62) - (local.get $i31) - ) - (i32.lt_u - (local.get $i62) - (i32.const 2147483647) - ) - ) - (block - (local.set $i45 - (i32.load - (i32.const 616) - ) - ) - (if - (if (result i32) - (i32.ne - (local.get $i45) - (i32.const 0) - ) - (i32.or - (i32.le_u - (local.get $i5) - (local.get $i50) - ) - (i32.gt_u - (local.get $i5) - (local.get $i45) - ) - ) - (i32.const 0) - ) - (br $do-once35) - ) - (local.set $i45 - (call $_sbrk - (local.get $i62) - ) - ) - (if - (i32.eq - (local.get $i45) - (local.get $i52) - ) - (block - (local.set $i58 - (local.get $i52) - ) - (local.set $i59 - (local.get $i62) - ) - (local.set $i36 - (i32.const 193) - ) - (br $label$break$L257) - ) - (block - (local.set $i60 - (local.get $i45) - ) - (local.set $i61 - (local.get $i62) - ) - (local.set $i36 - (i32.const 183) - ) - ) - ) - ) - ) - ) - ) - ) - (block $label$break$L279 - (if - (i32.eq - (local.get $i36) - (i32.const 183) - ) - (block - (local.set $i45 - (i32.sub - (i32.const 0) - (local.get $i61) - ) - ) - (block $do-once38 - (if - (if (result i32) - (i32.and - (i32.gt_u - (local.get $i53) - (local.get $i61) - ) - (i32.and - (i32.lt_u - (local.get $i61) - (i32.const 2147483647) - ) - (i32.ne - (local.get $i60) - (i32.const -1) - ) - ) - ) - (block (result i32) - (local.set $i52 - (i32.load - (i32.const 656) - ) - ) - (block (result i32) - (local.set $i5 - (i32.and - (i32.add - (i32.sub - (local.get $i44) - (local.get $i61) - ) - (local.get $i52) - ) - (i32.sub - (i32.const 0) - (local.get $i52) - ) - ) - ) - (i32.lt_u - (local.get $i5) - (i32.const 2147483647) - ) - ) - ) - (i32.const 0) - ) - (if - (i32.eq - (call $_sbrk - (local.get $i5) - ) - (i32.const -1) - ) - (block - (drop - (call $_sbrk - (local.get $i45) - ) - ) - (br $label$break$L279) - ) - (block - (local.set $i63 - (i32.add - (local.get $i5) - (local.get $i61) - ) - ) - (br $do-once38) - ) - ) - (local.set $i63 - (local.get $i61) - ) - ) - ) - (if - (i32.ne - (local.get $i60) - (i32.const -1) - ) - (block - (local.set $i58 - (local.get $i60) - ) - (local.set $i59 - (local.get $i63) - ) - (local.set $i36 - (i32.const 193) - ) - (br $label$break$L257) - ) - ) - ) - ) - ) - (i32.store - (i32.const 620) - (i32.or - (i32.load - (i32.const 620) - ) - (i32.const 4) - ) - ) - (local.set $i36 - (i32.const 190) - ) - ) - (local.set $i36 - (i32.const 190) - ) - ) - ) - (if - (if (result i32) - (if (result i32) - (if (result i32) - (i32.eq - (local.get $i36) - (i32.const 190) - ) - (i32.lt_u - (local.get $i43) - (i32.const 2147483647) - ) - (i32.const 0) - ) - (block (result i32) - (local.set $i63 - (call $_sbrk - (local.get $i43) - ) - ) - (block (result i32) - (local.set $i43 - (call $_sbrk - (i32.const 0) - ) - ) - (i32.and - (i32.lt_u - (local.get $i63) - (local.get $i43) - ) - (i32.and - (i32.ne - (local.get $i63) - (i32.const -1) - ) - (i32.ne - (local.get $i43) - (i32.const -1) - ) - ) - ) - ) - ) - (i32.const 0) - ) - (block (result i32) - (local.set $i60 - (i32.sub - (local.get $i43) - (local.get $i63) - ) - ) - (i32.gt_u - (local.get $i60) - (i32.add - (local.get $i31) - (i32.const 40) - ) - ) - ) - (i32.const 0) - ) - (block - (local.set $i58 - (local.get $i63) - ) - (local.set $i59 - (local.get $i60) - ) - (local.set $i36 - (i32.const 193) - ) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 193) - ) - (block - (local.set $i60 - (i32.add - (i32.load - (i32.const 608) - ) - (local.get $i59) - ) - ) - (i32.store - (i32.const 608) - (local.get $i60) - ) - (if - (i32.gt_u - (local.get $i60) - (i32.load - (i32.const 612) - ) - ) - (i32.store - (i32.const 612) - (local.get $i60) - ) - ) - (local.set $i60 - (i32.load - (i32.const 200) - ) - ) - (block $do-once40 - (if - (local.get $i60) - (block - (local.set $i63 - (i32.const 624) - ) - (loop $do-in - (block $do-out - (local.set $i43 - (i32.load - (local.get $i63) - ) - ) - (local.set $i61 - (i32.add - (local.get $i63) - (i32.const 4) - ) - ) - (local.set $i44 - (i32.load - (local.get $i61) - ) - ) - (if - (i32.eq - (local.get $i58) - (i32.add - (local.get $i43) - (local.get $i44) - ) - ) - (block - (local.set $i64 - (local.get $i43) - ) - (local.set $i65 - (local.get $i61) - ) - (local.set $i66 - (local.get $i44) - ) - (local.set $i67 - (local.get $i63) - ) - (local.set $i36 - (i32.const 203) - ) - (br $do-out) - ) - ) - (local.set $i63 - (i32.load - (i32.add - (local.get $i63) - (i32.const 8) - ) - ) - ) - (br_if $do-in - (i32.ne - (local.get $i63) - (i32.const 0) - ) - ) - ) - ) - (if - (if (result i32) - (if (result i32) - (i32.eq - (local.get $i36) - (i32.const 203) - ) - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $i67) - (i32.const 12) - ) - ) - (i32.const 8) - ) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.and - (i32.lt_u - (local.get $i60) - (local.get $i58) - ) - (i32.ge_u - (local.get $i60) - (local.get $i64) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (local.get $i65) - (i32.add - (local.get $i66) - (local.get $i59) - ) - ) - (local.set $i63 - (i32.add - (local.get $i60) - (i32.const 8) - ) - ) - (local.set $i44 - (if (result i32) - (i32.eq - (i32.and - (local.get $i63) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $i63) - ) - (i32.const 7) - ) - ) - ) - (local.set $i63 - (i32.add - (local.get $i60) - (local.get $i44) - ) - ) - (local.set $i61 - (i32.add - (i32.sub - (local.get $i59) - (local.get $i44) - ) - (i32.load - (i32.const 188) - ) - ) - ) - (i32.store - (i32.const 200) - (local.get $i63) - ) - (i32.store - (i32.const 188) - (local.get $i61) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 4) - ) - (i32.or - (local.get $i61) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (i32.add - (local.get $i63) - (local.get $i61) - ) - (i32.const 4) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - (br $do-once40) - ) - ) - (local.set $i61 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i58) - (local.get $i61) - ) - (block - (i32.store - (i32.const 192) - (local.get $i58) - ) - (local.set $i68 - (local.get $i58) - ) - ) - (local.set $i68 - (local.get $i61) - ) - ) - (local.set $i61 - (i32.add - (local.get $i58) - (local.get $i59) - ) - ) - (local.set $i63 - (i32.const 624) - ) - (loop $while-in43 - (block $while-out42 - (if - (i32.eq - (i32.load - (local.get $i63) - ) - (local.get $i61) - ) - (block - (local.set $i69 - (local.get $i63) - ) - (local.set $i70 - (local.get $i63) - ) - (local.set $i36 - (i32.const 211) - ) - (br $while-out42) - ) - ) - (local.set $i63 - (i32.load - (i32.add - (local.get $i63) - (i32.const 8) - ) - ) - ) - (if - (i32.eqz - (local.get $i63) - ) - (block - (local.set $i71 - (i32.const 624) - ) - (br $while-out42) - ) - ) - (br $while-in43) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 211) - ) - (if - (i32.eqz - (i32.and - (i32.load - (i32.add - (local.get $i70) - (i32.const 12) - ) - ) - (i32.const 8) - ) - ) - (block - (i32.store - (local.get $i69) - (local.get $i58) - ) - (local.set $i63 - (i32.add - (local.get $i70) - (i32.const 4) - ) - ) - (i32.store - (local.get $i63) - (i32.add - (i32.load - (local.get $i63) - ) - (local.get $i59) - ) - ) - (local.set $i63 - (i32.add - (local.get $i58) - (i32.const 8) - ) - ) - (local.set $i44 - (i32.add - (local.get $i58) - (if (result i32) - (i32.eq - (i32.and - (local.get $i63) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $i63) - ) - (i32.const 7) - ) - ) - ) - ) - (local.set $i63 - (i32.add - (local.get $i61) - (i32.const 8) - ) - ) - (local.set $i43 - (i32.add - (local.get $i61) - (if (result i32) - (i32.eq - (i32.and - (local.get $i63) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $i63) - ) - (i32.const 7) - ) - ) - ) - ) - (local.set $i63 - (i32.add - (local.get $i44) - (local.get $i31) - ) - ) - (local.set $i53 - (i32.sub - (i32.sub - (local.get $i43) - (local.get $i44) - ) - (local.get $i31) - ) - ) - (i32.store - (i32.add - (local.get $i44) - (i32.const 4) - ) - (i32.or - (local.get $i31) - (i32.const 3) - ) - ) - (block $do-once44 - (if - (i32.ne - (local.get $i43) - (local.get $i60) - ) - (block - (if - (i32.eq - (local.get $i43) - (i32.load - (i32.const 196) - ) - ) - (block - (local.set $i62 - (i32.add - (i32.load - (i32.const 184) - ) - (local.get $i53) - ) - ) - (i32.store - (i32.const 184) - (local.get $i62) - ) - (i32.store - (i32.const 196) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 4) - ) - (i32.or - (local.get $i62) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i63) - (local.get $i62) - ) - (local.get $i62) - ) - (br $do-once44) - ) - ) - (local.set $i62 - (i32.load - (i32.add - (local.get $i43) - (i32.const 4) - ) - ) - ) - (if - (i32.eq - (i32.and - (local.get $i62) - (i32.const 3) - ) - (i32.const 1) - ) - (block - (local.set $i57 - (i32.and - (local.get $i62) - (i32.const -8) - ) - ) - (local.set $i56 - (i32.shr_u - (local.get $i62) - (i32.const 3) - ) - ) - (block $label$break$L331 - (if - (i32.ge_u - (local.get $i62) - (i32.const 256) - ) - (block - (local.set $i54 - (i32.load - (i32.add - (local.get $i43) - (i32.const 24) - ) - ) - ) - (local.set $i55 - (i32.load - (i32.add - (local.get $i43) - (i32.const 12) - ) - ) - ) - (block $do-once47 - (if - (i32.eq - (local.get $i55) - (local.get $i43) - ) - (block - (local.set $i45 - (i32.add - (local.get $i43) - (i32.const 16) - ) - ) - (local.set $i5 - (i32.add - (local.get $i45) - (i32.const 4) - ) - ) - (local.set $i52 - (i32.load - (local.get $i5) - ) - ) - (if - (i32.eqz - (local.get $i52) - ) - (block - (local.set $i50 - (i32.load - (local.get $i45) - ) - ) - (if - (i32.eqz - (local.get $i50) - ) - (block - (local.set $i72 - (i32.const 0) - ) - (br $do-once47) - ) - (block - (local.set $i73 - (local.get $i50) - ) - (local.set $i74 - (local.get $i45) - ) - ) - ) - ) - (block - (local.set $i73 - (local.get $i52) - ) - (local.set $i74 - (local.get $i5) - ) - ) - ) - (loop $while-in50 - (block $while-out49 - (local.set $i5 - (i32.add - (local.get $i73) - (i32.const 20) - ) - ) - (local.set $i52 - (i32.load - (local.get $i5) - ) - ) - (if - (local.get $i52) - (block - (local.set $i73 - (local.get $i52) - ) - (local.set $i74 - (local.get $i5) - ) - (br $while-in50) - ) - ) - (local.set $i5 - (i32.add - (local.get $i73) - (i32.const 16) - ) - ) - (local.set $i52 - (i32.load - (local.get $i5) - ) - ) - (if - (i32.eqz - (local.get $i52) - ) - (block - (local.set $i75 - (local.get $i73) - ) - (local.set $i76 - (local.get $i74) - ) - (br $while-out49) - ) - (block - (local.set $i73 - (local.get $i52) - ) - (local.set $i74 - (local.get $i5) - ) - ) - ) - (br $while-in50) - ) - ) - (if - (i32.lt_u - (local.get $i76) - (local.get $i68) - ) - (call $_abort) - (block - (i32.store - (local.get $i76) - (i32.const 0) - ) - (local.set $i72 - (local.get $i75) - ) - (br $do-once47) - ) - ) - ) - (block - (local.set $i5 - (i32.load - (i32.add - (local.get $i43) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $i5) - (local.get $i68) - ) - (call $_abort) - ) - (local.set $i52 - (i32.add - (local.get $i5) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $i52) - ) - (local.get $i43) - ) - (call $_abort) - ) - (local.set $i45 - (i32.add - (local.get $i55) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i45) - ) - (local.get $i43) - ) - (block - (i32.store - (local.get $i52) - (local.get $i55) - ) - (i32.store - (local.get $i45) - (local.get $i5) - ) - (local.set $i72 - (local.get $i55) - ) - (br $do-once47) - ) - (call $_abort) - ) - ) - ) - ) - (if - (i32.eqz - (local.get $i54) - ) - (br $label$break$L331) - ) - (local.set $i55 - (i32.load - (i32.add - (local.get $i43) - (i32.const 28) - ) - ) - ) - (local.set $i5 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i55) - (i32.const 2) - ) - ) - ) - (block $do-once51 - (if - (i32.ne - (local.get $i43) - (i32.load - (local.get $i5) - ) - ) - (block - (if - (i32.lt_u - (local.get $i54) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i45 - (i32.add - (local.get $i54) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i45) - ) - (local.get $i43) - ) - (i32.store - (local.get $i45) - (local.get $i72) - ) - (i32.store - (i32.add - (local.get $i54) - (i32.const 20) - ) - (local.get $i72) - ) - ) - (if - (i32.eqz - (local.get $i72) - ) - (br $label$break$L331) - ) - ) - (block - (i32.store - (local.get $i5) - (local.get $i72) - ) - (if - (local.get $i72) - (br $do-once51) - ) - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i55) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$L331) - ) - ) - ) - (local.set $i55 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i72) - (local.get $i55) - ) - (call $_abort) - ) - (i32.store - (i32.add - (local.get $i72) - (i32.const 24) - ) - (local.get $i54) - ) - (local.set $i5 - (i32.add - (local.get $i43) - (i32.const 16) - ) - ) - (local.set $i45 - (i32.load - (local.get $i5) - ) - ) - (block $do-once53 - (if - (local.get $i45) - (if - (i32.lt_u - (local.get $i45) - (local.get $i55) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i72) - (i32.const 16) - ) - (local.get $i45) - ) - (i32.store - (i32.add - (local.get $i45) - (i32.const 24) - ) - (local.get $i72) - ) - (br $do-once53) - ) - ) - ) - ) - (local.set $i45 - (i32.load - (i32.add - (local.get $i5) - (i32.const 4) - ) - ) - ) - (if - (i32.eqz - (local.get $i45) - ) - (br $label$break$L331) - ) - (if - (i32.lt_u - (local.get $i45) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i72) - (i32.const 20) - ) - (local.get $i45) - ) - (i32.store - (i32.add - (local.get $i45) - (i32.const 24) - ) - (local.get $i72) - ) - (br $label$break$L331) - ) - ) - ) - (block - (local.set $i45 - (i32.load - (i32.add - (local.get $i43) - (i32.const 8) - ) - ) - ) - (local.set $i55 - (i32.load - (i32.add - (local.get $i43) - (i32.const 12) - ) - ) - ) - (local.set $i54 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i56) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (block $do-once55 - (if - (i32.ne - (local.get $i45) - (local.get $i54) - ) - (block - (if - (i32.lt_u - (local.get $i45) - (local.get $i68) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (i32.add - (local.get $i45) - (i32.const 12) - ) - ) - (local.get $i43) - ) - (br $do-once55) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (local.get $i55) - (local.get $i45) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i56) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$L331) - ) - ) - (block $do-once57 - (if - (i32.eq - (local.get $i55) - (local.get $i54) - ) - (local.set $i77 - (i32.add - (local.get $i55) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $i55) - (local.get $i68) - ) - (call $_abort) - ) - (local.set $i5 - (i32.add - (local.get $i55) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i5) - ) - (local.get $i43) - ) - (block - (local.set $i77 - (local.get $i5) - ) - (br $do-once57) - ) - ) - (call $_abort) - ) - ) - ) - (i32.store - (i32.add - (local.get $i45) - (i32.const 12) - ) - (local.get $i55) - ) - (i32.store - (local.get $i77) - (local.get $i45) - ) - ) - ) - ) - (local.set $i78 - (i32.add - (local.get $i43) - (local.get $i57) - ) - ) - (local.set $i79 - (i32.add - (local.get $i57) - (local.get $i53) - ) - ) - ) - (block - (local.set $i78 - (local.get $i43) - ) - (local.set $i79 - (local.get $i53) - ) - ) - ) - (local.set $i56 - (i32.add - (local.get $i78) - (i32.const 4) - ) - ) - (i32.store - (local.get $i56) - (i32.and - (i32.load - (local.get $i56) - ) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 4) - ) - (i32.or - (local.get $i79) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i63) - (local.get $i79) - ) - (local.get $i79) - ) - (local.set $i56 - (i32.shr_u - (local.get $i79) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $i79) - (i32.const 256) - ) - (block - (local.set $i62 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i56) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i54 - (i32.load - (i32.const 176) - ) - ) - (local.set $i5 - (i32.shl - (i32.const 1) - (local.get $i56) - ) - ) - (block $do-once59 - (if - (i32.eqz - (i32.and - (local.get $i54) - (local.get $i5) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $i54) - (local.get $i5) - ) - ) - (local.set $i80 - (i32.add - (local.get $i62) - (i32.const 8) - ) - ) - (local.set $i81 - (local.get $i62) - ) - ) - (block - (local.set $i56 - (i32.add - (local.get $i62) - (i32.const 8) - ) - ) - (local.set $i52 - (i32.load - (local.get $i56) - ) - ) - (if - (i32.ge_u - (local.get $i52) - (i32.load - (i32.const 192) - ) - ) - (block - (local.set $i80 - (local.get $i56) - ) - (local.set $i81 - (local.get $i52) - ) - (br $do-once59) - ) - ) - (call $_abort) - ) - ) - ) - (i32.store - (local.get $i80) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i81) - (i32.const 12) - ) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 8) - ) - (local.get $i81) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 12) - ) - (local.get $i62) - ) - (br $do-once44) - ) - ) - (local.set $i5 - (i32.shr_u - (local.get $i79) - (i32.const 8) - ) - ) - (block $do-once61 - (if - (i32.eqz - (local.get $i5) - ) - (local.set $i82 - (i32.const 0) - ) - (block - (if - (i32.gt_u - (local.get $i79) - (i32.const 16777215) - ) - (block - (local.set $i82 - (i32.const 31) - ) - (br $do-once61) - ) - ) - (local.set $i54 - (i32.and - (i32.shr_u - (i32.add - (local.get $i5) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $i57 - (i32.shl - (local.get $i5) - (local.get $i54) - ) - ) - (local.set $i52 - (i32.and - (i32.shr_u - (i32.add - (local.get $i57) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $i56 - (i32.shl - (local.get $i57) - (local.get $i52) - ) - ) - (local.set $i57 - (i32.and - (i32.shr_u - (i32.add - (local.get $i56) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $i50 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $i52) - (local.get $i54) - ) - (local.get $i57) - ) - ) - (i32.shr_u - (i32.shl - (local.get $i56) - (local.get $i57) - ) - (i32.const 15) - ) - ) - ) - (local.set $i82 - (i32.or - (i32.and - (i32.shr_u - (local.get $i79) - (i32.add - (local.get $i50) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $i50) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.set $i5 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i82) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 28) - ) - (local.get $i82) - ) - (local.set $i62 - (i32.add - (local.get $i63) - (i32.const 16) - ) - ) - (i32.store - (i32.add - (local.get $i62) - (i32.const 4) - ) - (i32.const 0) - ) - (i32.store - (local.get $i62) - (i32.const 0) - ) - (local.set $i62 - (i32.load - (i32.const 180) - ) - ) - (local.set $i50 - (i32.shl - (i32.const 1) - (local.get $i82) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $i62) - (local.get $i50) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $i62) - (local.get $i50) - ) - ) - (i32.store - (local.get $i5) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 24) - ) - (local.get $i5) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 12) - ) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 8) - ) - (local.get $i63) - ) - (br $do-once44) - ) - ) - (local.set $i50 - (i32.shl - (local.get $i79) - (if (result i32) - (i32.eq - (local.get $i82) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $i82) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i62 - (i32.load - (local.get $i5) - ) - ) - (loop $while-in64 - (block $while-out63 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $i62) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $i79) - ) - (block - (local.set $i83 - (local.get $i62) - ) - (local.set $i36 - (i32.const 281) - ) - (br $while-out63) - ) - ) - (local.set $i5 - (i32.add - (i32.add - (local.get $i62) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $i50) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $i57 - (i32.load - (local.get $i5) - ) - ) - (if - (i32.eqz - (local.get $i57) - ) - (block - (local.set $i84 - (local.get $i5) - ) - (local.set $i85 - (local.get $i62) - ) - (local.set $i36 - (i32.const 278) - ) - (br $while-out63) - ) - (block - (local.set $i50 - (i32.shl - (local.get $i50) - (i32.const 1) - ) - ) - (local.set $i62 - (local.get $i57) - ) - ) - ) - (br $while-in64) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 278) - ) - (if - (i32.lt_u - (local.get $i84) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $i84) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 24) - ) - (local.get $i85) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 12) - ) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 8) - ) - (local.get $i63) - ) - (br $do-once44) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 281) - ) - (block - (local.set $i62 - (i32.add - (local.get $i83) - (i32.const 8) - ) - ) - (local.set $i50 - (i32.load - (local.get $i62) - ) - ) - (local.set $i57 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $i50) - (local.get $i57) - ) - (i32.ge_u - (local.get $i83) - (local.get $i57) - ) - ) - (block - (i32.store - (i32.add - (local.get $i50) - (i32.const 12) - ) - (local.get $i63) - ) - (i32.store - (local.get $i62) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 8) - ) - (local.get $i50) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 12) - ) - (local.get $i83) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once44) - ) - (call $_abort) - ) - ) - ) - ) - ) - (block - (local.set $i50 - (i32.add - (i32.load - (i32.const 188) - ) - (local.get $i53) - ) - ) - (i32.store - (i32.const 188) - (local.get $i50) - ) - (i32.store - (i32.const 200) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 4) - ) - (i32.or - (local.get $i50) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i13 - (i32.add - (local.get $i44) - (i32.const 8) - ) - ) - (return - (local.get $i13) - ) - ) - (local.set $i71 - (i32.const 624) - ) - ) - ) - (loop $while-in66 - (block $while-out65 - (local.set $i63 - (i32.load - (local.get $i71) - ) - ) - (if - (if (result i32) - (i32.le_u - (local.get $i63) - (local.get $i60) - ) - (block (result i32) - (local.set $i53 - (i32.add - (local.get $i63) - (i32.load - (i32.add - (local.get $i71) - (i32.const 4) - ) - ) - ) - ) - (i32.gt_u - (local.get $i53) - (local.get $i60) - ) - ) - (i32.const 0) - ) - (block - (local.set $i86 - (local.get $i53) - ) - (br $while-out65) - ) - ) - (local.set $i71 - (i32.load - (i32.add - (local.get $i71) - (i32.const 8) - ) - ) - ) - (br $while-in66) - ) - ) - (local.set $i44 - (i32.add - (local.get $i86) - (i32.const -47) - ) - ) - (local.set $i53 - (i32.add - (local.get $i44) - (i32.const 8) - ) - ) - (local.set $i63 - (i32.add - (local.get $i44) - (if (result i32) - (i32.eq - (i32.and - (local.get $i53) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $i53) - ) - (i32.const 7) - ) - ) - ) - ) - (local.set $i53 - (i32.add - (local.get $i60) - (i32.const 16) - ) - ) - (local.set $i44 - (if (result i32) - (i32.lt_u - (local.get $i63) - (local.get $i53) - ) - (local.get $i60) - (local.get $i63) - ) - ) - (local.set $i63 - (i32.add - (local.get $i44) - (i32.const 8) - ) - ) - (local.set $i43 - (i32.add - (local.get $i58) - (i32.const 8) - ) - ) - (local.set $i61 - (if (result i32) - (i32.eq - (i32.and - (local.get $i43) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $i43) - ) - (i32.const 7) - ) - ) - ) - (local.set $i43 - (i32.add - (local.get $i58) - (local.get $i61) - ) - ) - (local.set $i50 - (i32.sub - (i32.add - (local.get $i59) - (i32.const -40) - ) - (local.get $i61) - ) - ) - (i32.store - (i32.const 200) - (local.get $i43) - ) - (i32.store - (i32.const 188) - (local.get $i50) - ) - (i32.store - (i32.add - (local.get $i43) - (i32.const 4) - ) - (i32.or - (local.get $i50) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (i32.add - (local.get $i43) - (local.get $i50) - ) - (i32.const 4) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - (local.set $i50 - (i32.add - (local.get $i44) - (i32.const 4) - ) - ) - (i32.store - (local.get $i50) - (i32.const 27) - ) - (i32.store - (local.get $i63) - (i32.load - (i32.const 624) - ) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 4) - ) - (i32.load - (i32.const 628) - ) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 8) - ) - (i32.load - (i32.const 632) - ) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 12) - ) - (i32.load - (i32.const 636) - ) - ) - (i32.store - (i32.const 624) - (local.get $i58) - ) - (i32.store - (i32.const 628) - (local.get $i59) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (i32.store - (i32.const 632) - (local.get $i63) - ) - (local.set $i63 - (i32.add - (local.get $i44) - (i32.const 24) - ) - ) - (loop $do-in68 - (block $do-out67 - (local.set $i63 - (i32.add - (local.get $i63) - (i32.const 4) - ) - ) - (i32.store - (local.get $i63) - (i32.const 7) - ) - (br_if $do-in68 - (i32.lt_u - (i32.add - (local.get $i63) - (i32.const 4) - ) - (local.get $i86) - ) - ) - ) - ) - (if - (i32.ne - (local.get $i44) - (local.get $i60) - ) - (block - (local.set $i63 - (i32.sub - (local.get $i44) - (local.get $i60) - ) - ) - (i32.store - (local.get $i50) - (i32.and - (i32.load - (local.get $i50) - ) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 4) - ) - (i32.or - (local.get $i63) - (i32.const 1) - ) - ) - (i32.store - (local.get $i44) - (local.get $i63) - ) - (local.set $i43 - (i32.shr_u - (local.get $i63) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $i63) - (i32.const 256) - ) - (block - (local.set $i61 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i43) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i62 - (i32.load - (i32.const 176) - ) - ) - (local.set $i57 - (i32.shl - (i32.const 1) - (local.get $i43) - ) - ) - (if - (i32.and - (local.get $i62) - (local.get $i57) - ) - (block - (local.set $i43 - (i32.add - (local.get $i61) - (i32.const 8) - ) - ) - (local.set $i5 - (i32.load - (local.get $i43) - ) - ) - (if - (i32.lt_u - (local.get $i5) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $i87 - (local.get $i43) - ) - (local.set $i88 - (local.get $i5) - ) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $i62) - (local.get $i57) - ) - ) - (local.set $i87 - (i32.add - (local.get $i61) - (i32.const 8) - ) - ) - (local.set $i88 - (local.get $i61) - ) - ) - ) - (i32.store - (local.get $i87) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i88) - (i32.const 12) - ) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 8) - ) - (local.get $i88) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 12) - ) - (local.get $i61) - ) - (br $do-once40) - ) - ) - (local.set $i61 - (i32.shr_u - (local.get $i63) - (i32.const 8) - ) - ) - (if - (local.get $i61) - (if - (i32.gt_u - (local.get $i63) - (i32.const 16777215) - ) - (local.set $i89 - (i32.const 31) - ) - (block - (local.set $i57 - (i32.and - (i32.shr_u - (i32.add - (local.get $i61) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $i62 - (i32.shl - (local.get $i61) - (local.get $i57) - ) - ) - (local.set $i61 - (i32.and - (i32.shr_u - (i32.add - (local.get $i62) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $i5 - (i32.shl - (local.get $i62) - (local.get $i61) - ) - ) - (local.set $i62 - (i32.and - (i32.shr_u - (i32.add - (local.get $i5) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $i43 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $i61) - (local.get $i57) - ) - (local.get $i62) - ) - ) - (i32.shr_u - (i32.shl - (local.get $i5) - (local.get $i62) - ) - (i32.const 15) - ) - ) - ) - (local.set $i89 - (i32.or - (i32.and - (i32.shr_u - (local.get $i63) - (i32.add - (local.get $i43) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $i43) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i89 - (i32.const 0) - ) - ) - (local.set $i43 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i89) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 28) - ) - (local.get $i89) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 20) - ) - (i32.const 0) - ) - (i32.store - (local.get $i53) - (i32.const 0) - ) - (local.set $i62 - (i32.load - (i32.const 180) - ) - ) - (local.set $i5 - (i32.shl - (i32.const 1) - (local.get $i89) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $i62) - (local.get $i5) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $i62) - (local.get $i5) - ) - ) - (i32.store - (local.get $i43) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 24) - ) - (local.get $i43) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 12) - ) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 8) - ) - (local.get $i60) - ) - (br $do-once40) - ) - ) - (local.set $i5 - (i32.shl - (local.get $i63) - (if (result i32) - (i32.eq - (local.get $i89) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $i89) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i62 - (i32.load - (local.get $i43) - ) - ) - (loop $while-in70 - (block $while-out69 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $i62) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $i63) - ) - (block - (local.set $i90 - (local.get $i62) - ) - (local.set $i36 - (i32.const 307) - ) - (br $while-out69) - ) - ) - (local.set $i43 - (i32.add - (i32.add - (local.get $i62) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $i5) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $i57 - (i32.load - (local.get $i43) - ) - ) - (if - (i32.eqz - (local.get $i57) - ) - (block - (local.set $i91 - (local.get $i43) - ) - (local.set $i92 - (local.get $i62) - ) - (local.set $i36 - (i32.const 304) - ) - (br $while-out69) - ) - (block - (local.set $i5 - (i32.shl - (local.get $i5) - (i32.const 1) - ) - ) - (local.set $i62 - (local.get $i57) - ) - ) - ) - (br $while-in70) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 304) - ) - (if - (i32.lt_u - (local.get $i91) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $i91) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 24) - ) - (local.get $i92) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 12) - ) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 8) - ) - (local.get $i60) - ) - (br $do-once40) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 307) - ) - (block - (local.set $i62 - (i32.add - (local.get $i90) - (i32.const 8) - ) - ) - (local.set $i5 - (i32.load - (local.get $i62) - ) - ) - (local.set $i63 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $i5) - (local.get $i63) - ) - (i32.ge_u - (local.get $i90) - (local.get $i63) - ) - ) - (block - (i32.store - (i32.add - (local.get $i5) - (i32.const 12) - ) - (local.get $i60) - ) - (i32.store - (local.get $i62) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 8) - ) - (local.get $i5) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 12) - ) - (local.get $i90) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once40) - ) - (call $_abort) - ) - ) - ) - ) - ) - ) - ) - (block - (local.set $i5 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.or - (i32.eq - (local.get $i5) - (i32.const 0) - ) - (i32.lt_u - (local.get $i58) - (local.get $i5) - ) - ) - (i32.store - (i32.const 192) - (local.get $i58) - ) - ) - (i32.store - (i32.const 624) - (local.get $i58) - ) - (i32.store - (i32.const 628) - (local.get $i59) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (i32.store - (i32.const 212) - (i32.load - (i32.const 648) - ) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - (local.set $i5 - (i32.const 0) - ) - (loop $do-in72 - (block $do-out71 - (local.set $i62 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i5) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $i62) - (i32.const 12) - ) - (local.get $i62) - ) - (i32.store - (i32.add - (local.get $i62) - (i32.const 8) - ) - (local.get $i62) - ) - (local.set $i5 - (i32.add - (local.get $i5) - (i32.const 1) - ) - ) - (br_if $do-in72 - (i32.ne - (local.get $i5) - (i32.const 32) - ) - ) - ) - ) - (local.set $i5 - (i32.add - (local.get $i58) - (i32.const 8) - ) - ) - (local.set $i62 - (if (result i32) - (i32.eq - (i32.and - (local.get $i5) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $i5) - ) - (i32.const 7) - ) - ) - ) - (local.set $i5 - (i32.add - (local.get $i58) - (local.get $i62) - ) - ) - (local.set $i63 - (i32.sub - (i32.add - (local.get $i59) - (i32.const -40) - ) - (local.get $i62) - ) - ) - (i32.store - (i32.const 200) - (local.get $i5) - ) - (i32.store - (i32.const 188) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 4) - ) - (i32.or - (local.get $i63) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (i32.add - (local.get $i5) - (local.get $i63) - ) - (i32.const 4) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - ) - ) - ) - (local.set $i59 - (i32.load - (i32.const 188) - ) - ) - (if - (i32.gt_u - (local.get $i59) - (local.get $i31) - ) - (block - (local.set $i58 - (i32.sub - (local.get $i59) - (local.get $i31) - ) - ) - (i32.store - (i32.const 188) - (local.get $i58) - ) - (local.set $i59 - (i32.load - (i32.const 200) - ) - ) - (local.set $i60 - (i32.add - (local.get $i59) - (local.get $i31) - ) - ) - (i32.store - (i32.const 200) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 4) - ) - (i32.or - (local.get $i58) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i59) - (i32.const 4) - ) - (i32.or - (local.get $i31) - (i32.const 3) - ) - ) - (local.set $i13 - (i32.add - (local.get $i59) - (i32.const 8) - ) - ) - (return - (local.get $i13) - ) - ) - ) - ) - ) - (i32.store - (call $___errno_location) - (i32.const 12) - ) - (local.set $i13 - (i32.const 0) - ) - (return - (local.get $i13) - ) - ) - (func $_free (; 16 ;) (param $i1 i32) - (local $i2 i32) - (local $i3 i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local $i9 i32) - (local $i10 i32) - (local $i11 i32) - (local $i12 i32) - (local $i13 i32) - (local $i14 i32) - (local $i15 i32) - (local $i16 i32) - (local $i17 i32) - (local $i18 i32) - (local $i19 i32) - (local $i20 i32) - (local $i21 i32) - (local $i22 i32) - (local $i23 i32) - (local $i24 i32) - (local $i25 i32) - (local $i26 i32) - (local $i27 i32) - (local $i28 i32) - (local $i29 i32) - (local $i30 i32) - (local $i31 i32) - (local $i32 i32) - (local $i33 i32) - (local $i34 i32) - (local $i35 i32) - (local $i36 i32) - (local $i37 i32) - (if - (i32.eqz - (local.get $i1) - ) - (return) - ) - (local.set $i2 - (i32.add - (local.get $i1) - (i32.const -8) - ) - ) - (local.set $i3 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i2) - (local.get $i3) - ) - (call $_abort) - ) - (local.set $i4 - (i32.load - (i32.add - (local.get $i1) - (i32.const -4) - ) - ) - ) - (local.set $i1 - (i32.and - (local.get $i4) - (i32.const 3) - ) - ) - (if - (i32.eq - (local.get $i1) - (i32.const 1) - ) - (call $_abort) - ) - (local.set $i5 - (i32.and - (local.get $i4) - (i32.const -8) - ) - ) - (local.set $i6 - (i32.add - (local.get $i2) - (local.get $i5) - ) - ) - (block $do-once - (if - (i32.eqz - (i32.and - (local.get $i4) - (i32.const 1) - ) - ) - (block - (local.set $i7 - (i32.load - (local.get $i2) - ) - ) - (if - (i32.eqz - (local.get $i1) - ) - (return) - ) - (local.set $i8 - (i32.add - (local.get $i2) - (i32.sub - (i32.const 0) - (local.get $i7) - ) - ) - ) - (local.set $i9 - (i32.add - (local.get $i7) - (local.get $i5) - ) - ) - (if - (i32.lt_u - (local.get $i8) - (local.get $i3) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $i8) - (i32.load - (i32.const 196) - ) - ) - (block - (local.set $i10 - (i32.add - (local.get $i6) - (i32.const 4) - ) - ) - (local.set $i11 - (i32.load - (local.get $i10) - ) - ) - (if - (i32.ne - (i32.and - (local.get $i11) - (i32.const 3) - ) - (i32.const 3) - ) - (block - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - (br $do-once) - ) - ) - (i32.store - (i32.const 184) - (local.get $i9) - ) - (i32.store - (local.get $i10) - (i32.and - (local.get $i11) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 4) - ) - (i32.or - (local.get $i9) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i8) - (local.get $i9) - ) - (local.get $i9) - ) - (return) - ) - ) - (local.set $i11 - (i32.shr_u - (local.get $i7) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $i7) - (i32.const 256) - ) - (block - (local.set $i7 - (i32.load - (i32.add - (local.get $i8) - (i32.const 8) - ) - ) - ) - (local.set $i10 - (i32.load - (i32.add - (local.get $i8) - (i32.const 12) - ) - ) - ) - (local.set $i14 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i11) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (if - (i32.ne - (local.get $i7) - (local.get $i14) - ) - (block - (if - (i32.lt_u - (local.get $i7) - (local.get $i3) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load - (i32.add - (local.get $i7) - (i32.const 12) - ) - ) - (local.get $i8) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (local.get $i10) - (local.get $i7) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i11) - ) - (i32.const -1) - ) - ) - ) - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - (br $do-once) - ) - ) - (if - (i32.ne - (local.get $i10) - (local.get $i14) - ) - (block - (if - (i32.lt_u - (local.get $i10) - (local.get $i3) - ) - (call $_abort) - ) - (local.set $i14 - (i32.add - (local.get $i10) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i14) - ) - (local.get $i8) - ) - (local.set $i15 - (local.get $i14) - ) - (call $_abort) - ) - ) - (local.set $i15 - (i32.add - (local.get $i10) - (i32.const 8) - ) - ) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 12) - ) - (local.get $i10) - ) - (i32.store - (local.get $i15) - (local.get $i7) - ) - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - (br $do-once) - ) - ) - (local.set $i7 - (i32.load - (i32.add - (local.get $i8) - (i32.const 24) - ) - ) - ) - (local.set $i10 - (i32.load - (i32.add - (local.get $i8) - (i32.const 12) - ) - ) - ) - (block $do-once0 - (if - (i32.eq - (local.get $i10) - (local.get $i8) - ) - (block - (local.set $i14 - (i32.add - (local.get $i8) - (i32.const 16) - ) - ) - (local.set $i11 - (i32.add - (local.get $i14) - (i32.const 4) - ) - ) - (local.set $i16 - (i32.load - (local.get $i11) - ) - ) - (if - (i32.eqz - (local.get $i16) - ) - (block - (local.set $i17 - (i32.load - (local.get $i14) - ) - ) - (if - (i32.eqz - (local.get $i17) - ) - (block - (local.set $i18 - (i32.const 0) - ) - (br $do-once0) - ) - (block - (local.set $i19 - (local.get $i17) - ) - (local.set $i20 - (local.get $i14) - ) - ) - ) - ) - (block - (local.set $i19 - (local.get $i16) - ) - (local.set $i20 - (local.get $i11) - ) - ) - ) - (loop $while-in - (block $while-out - (local.set $i11 - (i32.add - (local.get $i19) - (i32.const 20) - ) - ) - (local.set $i16 - (i32.load - (local.get $i11) - ) - ) - (if - (local.get $i16) - (block - (local.set $i19 - (local.get $i16) - ) - (local.set $i20 - (local.get $i11) - ) - (br $while-in) - ) - ) - (local.set $i11 - (i32.add - (local.get $i19) - (i32.const 16) - ) - ) - (local.set $i16 - (i32.load - (local.get $i11) - ) - ) - (if - (i32.eqz - (local.get $i16) - ) - (block - (local.set $i21 - (local.get $i19) - ) - (local.set $i22 - (local.get $i20) - ) - (br $while-out) - ) - (block - (local.set $i19 - (local.get $i16) - ) - (local.set $i20 - (local.get $i11) - ) - ) - ) - (br $while-in) - ) - ) - (if - (i32.lt_u - (local.get $i22) - (local.get $i3) - ) - (call $_abort) - (block - (i32.store - (local.get $i22) - (i32.const 0) - ) - (local.set $i18 - (local.get $i21) - ) - (br $do-once0) - ) - ) - ) - (block - (local.set $i11 - (i32.load - (i32.add - (local.get $i8) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $i11) - (local.get $i3) - ) - (call $_abort) - ) - (local.set $i16 - (i32.add - (local.get $i11) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $i16) - ) - (local.get $i8) - ) - (call $_abort) - ) - (local.set $i14 - (i32.add - (local.get $i10) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i14) - ) - (local.get $i8) - ) - (block - (i32.store - (local.get $i16) - (local.get $i10) - ) - (i32.store - (local.get $i14) - (local.get $i11) - ) - (local.set $i18 - (local.get $i10) - ) - (br $do-once0) - ) - (call $_abort) - ) - ) - ) - ) - (if - (local.get $i7) - (block - (local.set $i10 - (i32.load - (i32.add - (local.get $i8) - (i32.const 28) - ) - ) - ) - (local.set $i11 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i10) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $i8) - (i32.load - (local.get $i11) - ) - ) - (block - (i32.store - (local.get $i11) - (local.get $i18) - ) - (if - (i32.eqz - (local.get $i18) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i10) - ) - (i32.const -1) - ) - ) - ) - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - (br $do-once) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $i7) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i10 - (i32.add - (local.get $i7) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i10) - ) - (local.get $i8) - ) - (i32.store - (local.get $i10) - (local.get $i18) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 20) - ) - (local.get $i18) - ) - ) - (if - (i32.eqz - (local.get $i18) - ) - (block - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - (br $do-once) - ) - ) - ) - ) - (local.set $i10 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i18) - (local.get $i10) - ) - (call $_abort) - ) - (i32.store - (i32.add - (local.get $i18) - (i32.const 24) - ) - (local.get $i7) - ) - (local.set $i11 - (i32.add - (local.get $i8) - (i32.const 16) - ) - ) - (local.set $i14 - (i32.load - (local.get $i11) - ) - ) - (block $do-once2 - (if - (local.get $i14) - (if - (i32.lt_u - (local.get $i14) - (local.get $i10) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i18) - (i32.const 16) - ) - (local.get $i14) - ) - (i32.store - (i32.add - (local.get $i14) - (i32.const 24) - ) - (local.get $i18) - ) - (br $do-once2) - ) - ) - ) - ) - (local.set $i14 - (i32.load - (i32.add - (local.get $i11) - (i32.const 4) - ) - ) - ) - (if - (local.get $i14) - (if - (i32.lt_u - (local.get $i14) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i18) - (i32.const 20) - ) - (local.get $i14) - ) - (i32.store - (i32.add - (local.get $i14) - (i32.const 24) - ) - (local.get $i18) - ) - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - (br $do-once) - ) - ) - (block - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - ) - ) - ) - (block - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - ) - ) - ) - (block - (local.set $i12 - (local.get $i2) - ) - (local.set $i13 - (local.get $i5) - ) - ) - ) - ) - (if - (i32.ge_u - (local.get $i12) - (local.get $i6) - ) - (call $_abort) - ) - (local.set $i5 - (i32.add - (local.get $i6) - (i32.const 4) - ) - ) - (local.set $i2 - (i32.load - (local.get $i5) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $i2) - (i32.const 1) - ) - ) - (call $_abort) - ) - (if - (i32.eqz - (i32.and - (local.get $i2) - (i32.const 2) - ) - ) - (block - (if - (i32.eq - (local.get $i6) - (i32.load - (i32.const 200) - ) - ) - (block - (local.set $i18 - (i32.add - (i32.load - (i32.const 188) - ) - (local.get $i13) - ) - ) - (i32.store - (i32.const 188) - (local.get $i18) - ) - (i32.store - (i32.const 200) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 4) - ) - (i32.or - (local.get $i18) - (i32.const 1) - ) - ) - (if - (i32.ne - (local.get $i12) - (i32.load - (i32.const 196) - ) - ) - (return) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (i32.store - (i32.const 184) - (i32.const 0) - ) - (return) - ) - ) - (if - (i32.eq - (local.get $i6) - (i32.load - (i32.const 196) - ) - ) - (block - (local.set $i18 - (i32.add - (i32.load - (i32.const 184) - ) - (local.get $i13) - ) - ) - (i32.store - (i32.const 184) - (local.get $i18) - ) - (i32.store - (i32.const 196) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 4) - ) - (i32.or - (local.get $i18) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i12) - (local.get $i18) - ) - (local.get $i18) - ) - (return) - ) - ) - (local.set $i18 - (i32.add - (i32.and - (local.get $i2) - (i32.const -8) - ) - (local.get $i13) - ) - ) - (local.set $i3 - (i32.shr_u - (local.get $i2) - (i32.const 3) - ) - ) - (block $do-once4 - (if - (i32.ge_u - (local.get $i2) - (i32.const 256) - ) - (block - (local.set $i21 - (i32.load - (i32.add - (local.get $i6) - (i32.const 24) - ) - ) - ) - (local.set $i22 - (i32.load - (i32.add - (local.get $i6) - (i32.const 12) - ) - ) - ) - (block $do-once6 - (if - (i32.eq - (local.get $i22) - (local.get $i6) - ) - (block - (local.set $i20 - (i32.add - (local.get $i6) - (i32.const 16) - ) - ) - (local.set $i19 - (i32.add - (local.get $i20) - (i32.const 4) - ) - ) - (local.set $i15 - (i32.load - (local.get $i19) - ) - ) - (if - (i32.eqz - (local.get $i15) - ) - (block - (local.set $i1 - (i32.load - (local.get $i20) - ) - ) - (if - (i32.eqz - (local.get $i1) - ) - (block - (local.set $i23 - (i32.const 0) - ) - (br $do-once6) - ) - (block - (local.set $i24 - (local.get $i1) - ) - (local.set $i25 - (local.get $i20) - ) - ) - ) - ) - (block - (local.set $i24 - (local.get $i15) - ) - (local.set $i25 - (local.get $i19) - ) - ) - ) - (loop $while-in9 - (block $while-out8 - (local.set $i19 - (i32.add - (local.get $i24) - (i32.const 20) - ) - ) - (local.set $i15 - (i32.load - (local.get $i19) - ) - ) - (if - (local.get $i15) - (block - (local.set $i24 - (local.get $i15) - ) - (local.set $i25 - (local.get $i19) - ) - (br $while-in9) - ) - ) - (local.set $i19 - (i32.add - (local.get $i24) - (i32.const 16) - ) - ) - (local.set $i15 - (i32.load - (local.get $i19) - ) - ) - (if - (i32.eqz - (local.get $i15) - ) - (block - (local.set $i26 - (local.get $i24) - ) - (local.set $i27 - (local.get $i25) - ) - (br $while-out8) - ) - (block - (local.set $i24 - (local.get $i15) - ) - (local.set $i25 - (local.get $i19) - ) - ) - ) - (br $while-in9) - ) - ) - (if - (i32.lt_u - (local.get $i27) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $i27) - (i32.const 0) - ) - (local.set $i23 - (local.get $i26) - ) - (br $do-once6) - ) - ) - ) - (block - (local.set $i19 - (i32.load - (i32.add - (local.get $i6) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $i19) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i15 - (i32.add - (local.get $i19) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $i15) - ) - (local.get $i6) - ) - (call $_abort) - ) - (local.set $i20 - (i32.add - (local.get $i22) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i20) - ) - (local.get $i6) - ) - (block - (i32.store - (local.get $i15) - (local.get $i22) - ) - (i32.store - (local.get $i20) - (local.get $i19) - ) - (local.set $i23 - (local.get $i22) - ) - (br $do-once6) - ) - (call $_abort) - ) - ) - ) - ) - (if - (local.get $i21) - (block - (local.set $i22 - (i32.load - (i32.add - (local.get $i6) - (i32.const 28) - ) - ) - ) - (local.set $i9 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i22) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $i6) - (i32.load - (local.get $i9) - ) - ) - (block - (i32.store - (local.get $i9) - (local.get $i23) - ) - (if - (i32.eqz - (local.get $i23) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i22) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $i21) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i22 - (i32.add - (local.get $i21) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i22) - ) - (local.get $i6) - ) - (i32.store - (local.get $i22) - (local.get $i23) - ) - (i32.store - (i32.add - (local.get $i21) - (i32.const 20) - ) - (local.get $i23) - ) - ) - (if - (i32.eqz - (local.get $i23) - ) - (br $do-once4) - ) - ) - ) - (local.set $i22 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i23) - (local.get $i22) - ) - (call $_abort) - ) - (i32.store - (i32.add - (local.get $i23) - (i32.const 24) - ) - (local.get $i21) - ) - (local.set $i9 - (i32.add - (local.get $i6) - (i32.const 16) - ) - ) - (local.set $i8 - (i32.load - (local.get $i9) - ) - ) - (block $do-once10 - (if - (local.get $i8) - (if - (i32.lt_u - (local.get $i8) - (local.get $i22) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i23) - (i32.const 16) - ) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 24) - ) - (local.get $i23) - ) - (br $do-once10) - ) - ) - ) - ) - (local.set $i8 - (i32.load - (i32.add - (local.get $i9) - (i32.const 4) - ) - ) - ) - (if - (local.get $i8) - (if - (i32.lt_u - (local.get $i8) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i23) - (i32.const 20) - ) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 24) - ) - (local.get $i23) - ) - (br $do-once4) - ) - ) - ) - ) - ) - ) - (block - (local.set $i8 - (i32.load - (i32.add - (local.get $i6) - (i32.const 8) - ) - ) - ) - (local.set $i22 - (i32.load - (i32.add - (local.get $i6) - (i32.const 12) - ) - ) - ) - (local.set $i21 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i3) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (if - (i32.ne - (local.get $i8) - (local.get $i21) - ) - (block - (if - (i32.lt_u - (local.get $i8) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load - (i32.add - (local.get $i8) - (i32.const 12) - ) - ) - (local.get $i6) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (local.get $i22) - (local.get $i8) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i3) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - (if - (i32.ne - (local.get $i22) - (local.get $i21) - ) - (block - (if - (i32.lt_u - (local.get $i22) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i21 - (i32.add - (local.get $i22) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i21) - ) - (local.get $i6) - ) - (local.set $i28 - (local.get $i21) - ) - (call $_abort) - ) - ) - (local.set $i28 - (i32.add - (local.get $i22) - (i32.const 8) - ) - ) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 12) - ) - (local.get $i22) - ) - (i32.store - (local.get $i28) - (local.get $i8) - ) - ) - ) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 4) - ) - (i32.or - (local.get $i18) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i12) - (local.get $i18) - ) - (local.get $i18) - ) - (if - (i32.eq - (local.get $i12) - (i32.load - (i32.const 196) - ) - ) - (block - (i32.store - (i32.const 184) - (local.get $i18) - ) - (return) - ) - (local.set $i29 - (local.get $i18) - ) - ) - ) - (block - (i32.store - (local.get $i5) - (i32.and - (local.get $i2) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 4) - ) - (i32.or - (local.get $i13) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i12) - (local.get $i13) - ) - (local.get $i13) - ) - (local.set $i29 - (local.get $i13) - ) - ) - ) - (local.set $i13 - (i32.shr_u - (local.get $i29) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $i29) - (i32.const 256) - ) - (block - (local.set $i2 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i13) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i5 - (i32.load - (i32.const 176) - ) - ) - (local.set $i18 - (i32.shl - (i32.const 1) - (local.get $i13) - ) - ) - (if - (i32.and - (local.get $i5) - (local.get $i18) - ) - (block - (local.set $i13 - (i32.add - (local.get $i2) - (i32.const 8) - ) - ) - (local.set $i28 - (i32.load - (local.get $i13) - ) - ) - (if - (i32.lt_u - (local.get $i28) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $i30 - (local.get $i13) - ) - (local.set $i31 - (local.get $i28) - ) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $i5) - (local.get $i18) - ) - ) - (local.set $i30 - (i32.add - (local.get $i2) - (i32.const 8) - ) - ) - (local.set $i31 - (local.get $i2) - ) - ) - ) - (i32.store - (local.get $i30) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i31) - (i32.const 12) - ) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 8) - ) - (local.get $i31) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 12) - ) - (local.get $i2) - ) - (return) - ) - ) - (local.set $i2 - (i32.shr_u - (local.get $i29) - (i32.const 8) - ) - ) - (if - (local.get $i2) - (if - (i32.gt_u - (local.get $i29) - (i32.const 16777215) - ) - (local.set $i32 - (i32.const 31) - ) - (block - (local.set $i31 - (i32.and - (i32.shr_u - (i32.add - (local.get $i2) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $i30 - (i32.shl - (local.get $i2) - (local.get $i31) - ) - ) - (local.set $i2 - (i32.and - (i32.shr_u - (i32.add - (local.get $i30) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $i18 - (i32.shl - (local.get $i30) - (local.get $i2) - ) - ) - (local.set $i30 - (i32.and - (i32.shr_u - (i32.add - (local.get $i18) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $i5 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $i2) - (local.get $i31) - ) - (local.get $i30) - ) - ) - (i32.shr_u - (i32.shl - (local.get $i18) - (local.get $i30) - ) - (i32.const 15) - ) - ) - ) - (local.set $i32 - (i32.or - (i32.and - (i32.shr_u - (local.get $i29) - (i32.add - (local.get $i5) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $i5) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i32 - (i32.const 0) - ) - ) - (local.set $i5 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i32) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 28) - ) - (local.get $i32) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 20) - ) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 16) - ) - (i32.const 0) - ) - (local.set $i30 - (i32.load - (i32.const 180) - ) - ) - (local.set $i18 - (i32.shl - (i32.const 1) - (local.get $i32) - ) - ) - (block $do-once12 - (if - (i32.and - (local.get $i30) - (local.get $i18) - ) - (block - (local.set $i31 - (i32.shl - (local.get $i29) - (if (result i32) - (i32.eq - (local.get $i32) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $i32) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i2 - (i32.load - (local.get $i5) - ) - ) - (loop $while-in15 - (block $while-out14 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $i2) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $i29) - ) - (block - (local.set $i33 - (local.get $i2) - ) - (local.set $i34 - (i32.const 130) - ) - (br $while-out14) - ) - ) - (local.set $i28 - (i32.add - (i32.add - (local.get $i2) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $i31) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $i13 - (i32.load - (local.get $i28) - ) - ) - (if - (i32.eqz - (local.get $i13) - ) - (block - (local.set $i35 - (local.get $i28) - ) - (local.set $i36 - (local.get $i2) - ) - (local.set $i34 - (i32.const 127) - ) - (br $while-out14) - ) - (block - (local.set $i31 - (i32.shl - (local.get $i31) - (i32.const 1) - ) - ) - (local.set $i2 - (local.get $i13) - ) - ) - ) - (br $while-in15) - ) - ) - (if - (i32.eq - (local.get $i34) - (i32.const 127) - ) - (if - (i32.lt_u - (local.get $i35) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $i35) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 24) - ) - (local.get $i36) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 12) - ) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 8) - ) - (local.get $i12) - ) - (br $do-once12) - ) - ) - (if - (i32.eq - (local.get $i34) - (i32.const 130) - ) - (block - (local.set $i2 - (i32.add - (local.get $i33) - (i32.const 8) - ) - ) - (local.set $i31 - (i32.load - (local.get $i2) - ) - ) - (local.set $i9 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $i31) - (local.get $i9) - ) - (i32.ge_u - (local.get $i33) - (local.get $i9) - ) - ) - (block - (i32.store - (i32.add - (local.get $i31) - (i32.const 12) - ) - (local.get $i12) - ) - (i32.store - (local.get $i2) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 8) - ) - (local.get $i31) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 12) - ) - (local.get $i33) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once12) - ) - (call $_abort) - ) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $i30) - (local.get $i18) - ) - ) - (i32.store - (local.get $i5) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 24) - ) - (local.get $i5) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 12) - ) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 8) - ) - (local.get $i12) - ) - ) - ) - ) - (local.set $i12 - (i32.add - (i32.load - (i32.const 208) - ) - (i32.const -1) - ) - ) - (i32.store - (i32.const 208) - (local.get $i12) - ) - (if - (i32.eqz - (local.get $i12) - ) - (local.set $i37 - (i32.const 632) - ) - (return) - ) - (loop $while-in17 - (block $while-out16 - (local.set $i12 - (i32.load - (local.get $i37) - ) - ) - (if - (i32.eqz - (local.get $i12) - ) - (br $while-out16) - (local.set $i37 - (i32.add - (local.get $i12) - (i32.const 8) - ) - ) - ) - (br $while-in17) - ) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - (return) - ) - (func $___stdio_write (; 17 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local $i9 i32) - (local $i10 i32) - (local $i11 i32) - (local $i12 i32) - (local $i13 i32) - (local $i14 i32) - (local $i15 i32) - (local $i16 i32) - (local $i17 i32) - (local $i18 i32) - (local $i19 i32) - (local $i20 i32) - (local $i21 i32) - (local $i22 i32) - (local $i23 i32) - (local $i24 i32) - (local.set $i4 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 48) - ) - ) - (local.set $i5 - (i32.add - (local.get $i4) - (i32.const 16) - ) - ) - (local.set $i6 - (local.get $i4) - ) - (local.set $i7 - (i32.add - (local.get $i4) - (i32.const 32) - ) - ) - (local.set $i8 - (i32.add - (local.get $i1) - (i32.const 28) - ) - ) - (local.set $i9 - (i32.load - (local.get $i8) - ) - ) - (i32.store - (local.get $i7) - (local.get $i9) - ) - (local.set $i10 - (i32.add - (local.get $i1) - (i32.const 20) - ) - ) - (local.set $i11 - (i32.sub - (i32.load - (local.get $i10) - ) - (local.get $i9) - ) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 4) - ) - (local.get $i11) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 8) - ) - (local.get $i2) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 12) - ) - (local.get $i3) - ) - (local.set $i2 - (i32.add - (local.get $i1) - (i32.const 60) - ) - ) - (local.set $i9 - (i32.add - (local.get $i1) - (i32.const 44) - ) - ) - (local.set $i12 - (local.get $i7) - ) - (local.set $i7 - (i32.const 2) - ) - (local.set $i13 - (i32.add - (local.get $i11) - (local.get $i3) - ) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.load - (i32.const 8) - ) - ) - (block - (i32.store - (local.get $i5) - (i32.load - (local.get $i2) - ) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 4) - ) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 8) - ) - (local.get $i7) - ) - (local.set $i14 - (call $___syscall_ret - (call $___syscall146 - (i32.const 146) - (local.get $i5) - ) - ) - ) - ) - (block - (call $_pthread_cleanup_push - (i32.const 4) - (local.get $i1) - ) - (i32.store - (local.get $i6) - (i32.load - (local.get $i2) - ) - ) - (i32.store - (i32.add - (local.get $i6) - (i32.const 4) - ) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i6) - (i32.const 8) - ) - (local.get $i7) - ) - (local.set $i11 - (call $___syscall_ret - (call $___syscall146 - (i32.const 146) - (local.get $i6) - ) - ) - ) - (call $_pthread_cleanup_pop - (i32.const 0) - ) - (local.set $i14 - (local.get $i11) - ) - ) - ) - (if - (i32.eq - (local.get $i13) - (local.get $i14) - ) - (block - (local.set $i15 - (i32.const 6) - ) - (br $while-out) - ) - ) - (if - (i32.lt_s - (local.get $i14) - (i32.const 0) - ) - (block - (local.set $i16 - (local.get $i12) - ) - (local.set $i17 - (local.get $i7) - ) - (local.set $i15 - (i32.const 8) - ) - (br $while-out) - ) - ) - (local.set $i11 - (i32.sub - (local.get $i13) - (local.get $i14) - ) - ) - (local.set $i18 - (i32.load - (i32.add - (local.get $i12) - (i32.const 4) - ) - ) - ) - (if - (i32.le_u - (local.get $i14) - (local.get $i18) - ) - (if - (i32.eq - (local.get $i7) - (i32.const 2) - ) - (block - (i32.store - (local.get $i8) - (i32.add - (i32.load - (local.get $i8) - ) - (local.get $i14) - ) - ) - (local.set $i19 - (local.get $i18) - ) - (local.set $i20 - (local.get $i14) - ) - (local.set $i21 - (local.get $i12) - ) - (local.set $i22 - (i32.const 2) - ) - ) - (block - (local.set $i19 - (local.get $i18) - ) - (local.set $i20 - (local.get $i14) - ) - (local.set $i21 - (local.get $i12) - ) - (local.set $i22 - (local.get $i7) - ) - ) - ) - (block - (local.set $i23 - (i32.load - (local.get $i9) - ) - ) - (i32.store - (local.get $i8) - (local.get $i23) - ) - (i32.store - (local.get $i10) - (local.get $i23) - ) - (local.set $i19 - (i32.load - (i32.add - (local.get $i12) - (i32.const 12) - ) - ) - ) - (local.set $i20 - (i32.sub - (local.get $i14) - (local.get $i18) - ) - ) - (local.set $i21 - (i32.add - (local.get $i12) - (i32.const 8) - ) - ) - (local.set $i22 - (i32.add - (local.get $i7) - (i32.const -1) - ) - ) - ) - ) - (i32.store - (local.get $i21) - (i32.add - (i32.load - (local.get $i21) - ) - (local.get $i20) - ) - ) - (i32.store - (i32.add - (local.get $i21) - (i32.const 4) - ) - (i32.sub - (local.get $i19) - (local.get $i20) - ) - ) - (local.set $i12 - (local.get $i21) - ) - (local.set $i7 - (local.get $i22) - ) - (local.set $i13 - (local.get $i11) - ) - (br $while-in) - ) - ) - (if - (i32.eq - (local.get $i15) - (i32.const 6) - ) - (block - (local.set $i13 - (i32.load - (local.get $i9) - ) - ) - (i32.store - (i32.add - (local.get $i1) - (i32.const 16) - ) - (i32.add - (local.get $i13) - (i32.load - (i32.add - (local.get $i1) - (i32.const 48) - ) - ) - ) - ) - (local.set $i9 - (local.get $i13) - ) - (i32.store - (local.get $i8) - (local.get $i9) - ) - (i32.store - (local.get $i10) - (local.get $i9) - ) - (local.set $i24 - (local.get $i3) - ) - ) - (if - (i32.eq - (local.get $i15) - (i32.const 8) - ) - (block - (i32.store - (i32.add - (local.get $i1) - (i32.const 16) - ) - (i32.const 0) - ) - (i32.store - (local.get $i8) - (i32.const 0) - ) - (i32.store - (local.get $i10) - (i32.const 0) - ) - (i32.store - (local.get $i1) - (i32.or - (i32.load - (local.get $i1) - ) - (i32.const 32) - ) - ) - (if - (i32.eq - (local.get $i17) - (i32.const 2) - ) - (local.set $i24 - (i32.const 0) - ) - (local.set $i24 - (i32.sub - (local.get $i3) - (i32.load - (i32.add - (local.get $i16) - (i32.const 4) - ) - ) - ) - ) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $i4) - ) - (return - (local.get $i24) - ) - ) - (func $___fwritex (; 18 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local $i9 i32) - (local $i10 i32) - (local $i11 i32) - (local $i12 i32) - (local $i13 i32) - (local $i14 i32) - (local $i15 i32) - (local.set $i4 - (i32.add - (local.get $i3) - (i32.const 16) - ) - ) - (local.set $i5 - (i32.load - (local.get $i4) - ) - ) - (if - (i32.eqz - (local.get $i5) - ) - (if - (i32.eqz - (call $___towrite - (local.get $i3) - ) - ) - (block - (local.set $i6 - (i32.load - (local.get $i4) - ) - ) - (local.set $i7 - (i32.const 5) - ) - ) - (local.set $i8 - (i32.const 0) - ) - ) - (block - (local.set $i6 - (local.get $i5) - ) - (local.set $i7 - (i32.const 5) - ) - ) - ) - (block $label$break$L5 - (if - (i32.eq - (local.get $i7) - (i32.const 5) - ) - (block - (local.set $i5 - (i32.add - (local.get $i3) - (i32.const 20) - ) - ) - (local.set $i4 - (i32.load - (local.get $i5) - ) - ) - (local.set $i9 - (local.get $i4) - ) - (if - (i32.lt_u - (i32.sub - (local.get $i6) - (local.get $i4) - ) - (local.get $i2) - ) - (block - (local.set $i8 - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $i3) - (local.get $i1) - (local.get $i2) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $i3) - (i32.const 36) - ) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (br $label$break$L5) - ) - ) - (block $label$break$L10 - (if - (i32.gt_s - (i32.load8_s - (i32.add - (local.get $i3) - (i32.const 75) - ) - ) - (i32.const -1) - ) - (block - (local.set $i4 - (local.get $i2) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (local.get $i4) - ) - (block - (local.set $i10 - (local.get $i2) - ) - (local.set $i11 - (local.get $i1) - ) - (local.set $i12 - (local.get $i9) - ) - (local.set $i13 - (i32.const 0) - ) - (br $label$break$L10) - ) - ) - (local.set $i14 - (i32.add - (local.get $i4) - (i32.const -1) - ) - ) - (if - (i32.eq - (i32.load8_s - (i32.add - (local.get $i1) - (local.get $i14) - ) - ) - (i32.const 10) - ) - (block - (local.set $i15 - (local.get $i4) - ) - (br $while-out) - ) - (local.set $i4 - (local.get $i14) - ) - ) - (br $while-in) - ) - ) - (if - (i32.lt_u - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $i3) - (local.get $i1) - (local.get $i15) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $i3) - (i32.const 36) - ) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - (local.get $i15) - ) - (block - (local.set $i8 - (local.get $i15) - ) - (br $label$break$L5) - ) - ) - (local.set $i10 - (i32.sub - (local.get $i2) - (local.get $i15) - ) - ) - (local.set $i11 - (i32.add - (local.get $i1) - (local.get $i15) - ) - ) - (local.set $i12 - (i32.load - (local.get $i5) - ) - ) - (local.set $i13 - (local.get $i15) - ) - ) - (block - (local.set $i10 - (local.get $i2) - ) - (local.set $i11 - (local.get $i1) - ) - (local.set $i12 - (local.get $i9) - ) - (local.set $i13 - (i32.const 0) - ) - ) - ) - ) - (drop - (call $_memcpy - (local.get $i12) - (local.get $i11) - (local.get $i10) - ) - ) - (i32.store - (local.get $i5) - (i32.add - (i32.load - (local.get $i5) - ) - (local.get $i10) - ) - ) - (local.set $i8 - (i32.add - (local.get $i13) - (local.get $i10) - ) - ) - ) - ) - ) - (return - (local.get $i8) - ) - ) - (func $_fflush (; 19 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local $i3 i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (block $do-once - (if - (local.get $i1) - (block - (if - (i32.le_s - (i32.load - (i32.add - (local.get $i1) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (block - (local.set $i2 - (call $___fflush_unlocked - (local.get $i1) - ) - ) - (br $do-once) - ) - ) - (local.set $i3 - (i32.eq - (call $___lockfile - (local.get $i1) - ) - (i32.const 0) - ) - ) - (local.set $i4 - (call $___fflush_unlocked - (local.get $i1) - ) - ) - (if - (local.get $i3) - (local.set $i2 - (local.get $i4) - ) - (block - (call $___unlockfile - (local.get $i1) - ) - (local.set $i2 - (local.get $i4) - ) - ) - ) - ) - (block - (if - (i32.eqz - (i32.load - (i32.const 56) - ) - ) - (local.set $i5 - (i32.const 0) - ) - (local.set $i5 - (call $_fflush - (i32.load - (i32.const 56) - ) - ) - ) - ) - (call $___lock - (i32.const 36) - ) - (local.set $i4 - (i32.load - (i32.const 32) - ) - ) - (if - (i32.eqz - (local.get $i4) - ) - (local.set $i6 - (local.get $i5) - ) - (block - (local.set $i3 - (local.get $i4) - ) - (local.set $i4 - (local.get $i5) - ) - (loop $while-in - (block $while-out - (if - (i32.gt_s - (i32.load - (i32.add - (local.get $i3) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (local.set $i7 - (call $___lockfile - (local.get $i3) - ) - ) - (local.set $i7 - (i32.const 0) - ) - ) - (if - (i32.gt_u - (i32.load - (i32.add - (local.get $i3) - (i32.const 20) - ) - ) - (i32.load - (i32.add - (local.get $i3) - (i32.const 28) - ) - ) - ) - (local.set $i8 - (i32.or - (call $___fflush_unlocked - (local.get $i3) - ) - (local.get $i4) - ) - ) - (local.set $i8 - (local.get $i4) - ) - ) - (if - (local.get $i7) - (call $___unlockfile - (local.get $i3) - ) - ) - (local.set $i3 - (i32.load - (i32.add - (local.get $i3) - (i32.const 56) - ) - ) - ) - (if - (i32.eqz - (local.get $i3) - ) - (block - (local.set $i6 - (local.get $i8) - ) - (br $while-out) - ) - (local.set $i4 - (local.get $i8) - ) - ) - (br $while-in) - ) - ) - ) - ) - (call $___unlock - (i32.const 36) - ) - (local.set $i2 - (local.get $i6) - ) - ) - ) - ) - (return - (local.get $i2) - ) - ) - (func $_strlen (; 20 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local $i3 i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local $i9 i32) - (local $i10 i32) - (local $i11 i32) - (local.set $i2 - (local.get $i1) - ) - (block $label$break$L1 - (if - (i32.eqz - (i32.and - (local.get $i2) - (i32.const 3) - ) - ) - (block - (local.set $i3 - (local.get $i1) - ) - (local.set $i4 - (i32.const 4) - ) - ) - (block - (local.set $i5 - (local.get $i1) - ) - (local.set $i6 - (local.get $i2) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.load8_s - (local.get $i5) - ) - ) - (block - (local.set $i7 - (local.get $i6) - ) - (br $label$break$L1) - ) - ) - (local.set $i8 - (i32.add - (local.get $i5) - (i32.const 1) - ) - ) - (local.set $i6 - (local.get $i8) - ) - (if - (i32.eqz - (i32.and - (local.get $i6) - (i32.const 3) - ) - ) - (block - (local.set $i3 - (local.get $i8) - ) - (local.set $i4 - (i32.const 4) - ) - (br $while-out) - ) - (local.set $i5 - (local.get $i8) - ) - ) - (br $while-in) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $i4) - (i32.const 4) - ) - (block - (local.set $i4 - (local.get $i3) - ) - (loop $while-in1 - (block $while-out0 - (local.set $i3 - (i32.load - (local.get $i4) - ) - ) - (if - (i32.eqz - (i32.and - (i32.xor - (i32.and - (local.get $i3) - (i32.const -2139062144) - ) - (i32.const -2139062144) - ) - (i32.add - (local.get $i3) - (i32.const -16843009) - ) - ) - ) - (local.set $i4 - (i32.add - (local.get $i4) - (i32.const 4) - ) - ) - (block - (local.set $i9 - (local.get $i3) - ) - (local.set $i10 - (local.get $i4) - ) - (br $while-out0) - ) - ) - (br $while-in1) - ) - ) - (if - (i32.eqz - (i32.shr_s - (i32.shl - (i32.and - (local.get $i9) - (i32.const 255) - ) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $i11 - (local.get $i10) - ) - (block - (local.set $i9 - (local.get $i10) - ) - (loop $while-in3 - (block $while-out2 - (local.set $i10 - (i32.add - (local.get $i9) - (i32.const 1) - ) - ) - (if - (i32.eqz - (i32.load8_s - (local.get $i10) - ) - ) - (block - (local.set $i11 - (local.get $i10) - ) - (br $while-out2) - ) - (local.set $i9 - (local.get $i10) - ) - ) - (br $while-in3) - ) - ) - ) - ) - (local.set $i7 - (local.get $i11) - ) - ) - ) - (return - (i32.sub - (local.get $i7) - (local.get $i2) - ) - ) - ) - (func $___overflow (; 21 ;) (param $i1 i32) (param $i2 i32) (result i32) - (local $i3 i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local $i9 i32) - (local $i10 i32) - (local $i11 i32) - (local.set $i3 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (local.set $i4 - (local.get $i3) - ) - (local.set $i5 - (i32.and - (local.get $i2) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $i4) - (local.get $i5) - ) - (local.set $i6 - (i32.add - (local.get $i1) - (i32.const 16) - ) - ) - (local.set $i7 - (i32.load - (local.get $i6) - ) - ) - (if - (i32.eqz - (local.get $i7) - ) - (if - (i32.eqz - (call $___towrite - (local.get $i1) - ) - ) - (block - (local.set $i8 - (i32.load - (local.get $i6) - ) - ) - (local.set $i9 - (i32.const 4) - ) - ) - (local.set $i10 - (i32.const -1) - ) - ) - (block - (local.set $i8 - (local.get $i7) - ) - (local.set $i9 - (i32.const 4) - ) - ) - ) - (block $do-once - (if - (i32.eq - (local.get $i9) - (i32.const 4) - ) - (block - (local.set $i7 - (i32.add - (local.get $i1) - (i32.const 20) - ) - ) - (local.set $i6 - (i32.load - (local.get $i7) - ) - ) - (if - (if (result i32) - (i32.lt_u - (local.get $i6) - (local.get $i8) - ) - (block (result i32) - (local.set $i11 - (i32.and - (local.get $i2) - (i32.const 255) - ) - ) - (i32.ne - (local.get $i11) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 75) - ) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (local.get $i7) - (i32.add - (local.get $i6) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $i6) - (local.get $i5) - ) - (local.set $i10 - (local.get $i11) - ) - (br $do-once) - ) - ) - (if - (i32.eq - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $i1) - (local.get $i4) - (i32.const 1) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $i1) - (i32.const 36) - ) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - (i32.const 1) - ) - (local.set $i10 - (i32.load8_u - (local.get $i4) - ) - ) - (local.set $i10 - (i32.const -1) - ) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $i3) - ) - (return - (local.get $i10) - ) - ) - (func $___fflush_unlocked (; 22 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local $i3 i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local.set $i2 - (i32.add - (local.get $i1) - (i32.const 20) - ) - ) - (local.set $i3 - (i32.add - (local.get $i1) - (i32.const 28) - ) - ) - (if - (if (result i32) - (i32.gt_u - (i32.load - (local.get $i2) - ) - (i32.load - (local.get $i3) - ) - ) - (block (result i32) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $i1) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $i1) - (i32.const 36) - ) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (i32.eq - (i32.load - (local.get $i2) - ) - (i32.const 0) - ) - ) - (i32.const 0) - ) - (local.set $i4 - (i32.const -1) - ) - (block - (local.set $i5 - (i32.add - (local.get $i1) - (i32.const 4) - ) - ) - (local.set $i6 - (i32.load - (local.get $i5) - ) - ) - (local.set $i7 - (i32.add - (local.get $i1) - (i32.const 8) - ) - ) - (local.set $i8 - (i32.load - (local.get $i7) - ) - ) - (if - (i32.lt_u - (local.get $i6) - (local.get $i8) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $i1) - (i32.sub - (local.get $i6) - (local.get $i8) - ) - (i32.const 1) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $i1) - (i32.const 40) - ) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.store - (i32.add - (local.get $i1) - (i32.const 16) - ) - (i32.const 0) - ) - (i32.store - (local.get $i3) - (i32.const 0) - ) - (i32.store - (local.get $i2) - (i32.const 0) - ) - (i32.store - (local.get $i7) - (i32.const 0) - ) - (i32.store - (local.get $i5) - (i32.const 0) - ) - (local.set $i4 - (i32.const 0) - ) - ) - ) - (return - (local.get $i4) - ) - ) - (func $_memcpy (; 23 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) - (local $i4 i32) - (if - (i32.ge_s - (local.get $i3) - (i32.const 4096) - ) - (return - (call $_emscripten_memcpy_big - (local.get $i1) - (local.get $i2) - (local.get $i3) - ) - ) - ) - (local.set $i4 - (local.get $i1) - ) - (if - (i32.eq - (i32.and - (local.get $i1) - (i32.const 3) - ) - (i32.and - (local.get $i2) - (i32.const 3) - ) - ) - (block - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.and - (local.get $i1) - (i32.const 3) - ) - ) - (br $while-out) - ) - (block - (if - (i32.eqz - (local.get $i3) - ) - (return - (local.get $i4) - ) - ) - (i32.store8 - (local.get $i1) - (i32.load8_s - (local.get $i2) - ) - ) - (local.set $i1 - (i32.add - (local.get $i1) - (i32.const 1) - ) - ) - (local.set $i2 - (i32.add - (local.get $i2) - (i32.const 1) - ) - ) - (local.set $i3 - (i32.sub - (local.get $i3) - (i32.const 1) - ) - ) - ) - (br $while-in) - ) - ) - (loop $while-in1 - (block $while-out0 - (if - (i32.eqz - (i32.ge_s - (local.get $i3) - (i32.const 4) - ) - ) - (br $while-out0) - ) - (block - (i32.store - (local.get $i1) - (i32.load - (local.get $i2) - ) - ) - (local.set $i1 - (i32.add - (local.get $i1) - (i32.const 4) - ) - ) - (local.set $i2 - (i32.add - (local.get $i2) - (i32.const 4) - ) - ) - (local.set $i3 - (i32.sub - (local.get $i3) - (i32.const 4) - ) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (loop $while-in3 - (block $while-out2 - (if - (i32.eqz - (i32.gt_s - (local.get $i3) - (i32.const 0) - ) - ) - (br $while-out2) - ) - (block - (i32.store8 - (local.get $i1) - (i32.load8_s - (local.get $i2) - ) - ) - (local.set $i1 - (i32.add - (local.get $i1) - (i32.const 1) - ) - ) - (local.set $i2 - (i32.add - (local.get $i2) - (i32.const 1) - ) - ) - (local.set $i3 - (i32.sub - (local.get $i3) - (i32.const 1) - ) - ) - ) - (br $while-in3) - ) - ) - (return - (local.get $i4) - ) - ) - (func $runPostSets (; 24 ;) - (nop) - ) - (func $_memset (; 25 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local.set $i4 - (i32.add - (local.get $i1) - (local.get $i3) - ) - ) - (if - (i32.ge_s - (local.get $i3) - (i32.const 20) - ) - (block - (local.set $i2 - (i32.and - (local.get $i2) - (i32.const 255) - ) - ) - (local.set $i5 - (i32.and - (local.get $i1) - (i32.const 3) - ) - ) - (local.set $i6 - (i32.or - (i32.or - (i32.or - (local.get $i2) - (i32.shl - (local.get $i2) - (i32.const 8) - ) - ) - (i32.shl - (local.get $i2) - (i32.const 16) - ) - ) - (i32.shl - (local.get $i2) - (i32.const 24) - ) - ) - ) - (local.set $i7 - (i32.and - (local.get $i4) - (i32.xor - (i32.const 3) - (i32.const -1) - ) - ) - ) - (if - (local.get $i5) - (block - (local.set $i5 - (i32.sub - (i32.add - (local.get $i1) - (i32.const 4) - ) - (local.get $i5) - ) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.lt_s - (local.get $i1) - (local.get $i5) - ) - ) - (br $while-out) - ) - (block - (i32.store8 - (local.get $i1) - (local.get $i2) - ) - (local.set $i1 - (i32.add - (local.get $i1) - (i32.const 1) - ) - ) - ) - (br $while-in) - ) - ) - ) - ) - (loop $while-in1 - (block $while-out0 - (if - (i32.eqz - (i32.lt_s - (local.get $i1) - (local.get $i7) - ) - ) - (br $while-out0) - ) - (block - (i32.store - (local.get $i1) - (local.get $i6) - ) - (local.set $i1 - (i32.add - (local.get $i1) - (i32.const 4) - ) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (loop $while-in3 - (block $while-out2 - (if - (i32.eqz - (i32.lt_s - (local.get $i1) - (local.get $i4) - ) - ) - (br $while-out2) - ) - (block - (i32.store8 - (local.get $i1) - (local.get $i2) - ) - (local.set $i1 - (i32.add - (local.get $i1) - (i32.const 1) - ) - ) - ) - (br $while-in3) - ) - ) - (return - (i32.sub - (local.get $i1) - (local.get $i3) - ) - ) - ) - (func $_puts (; 26 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local $i3 i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local.set $i2 - (i32.load - (i32.const 52) - ) - ) - (if - (i32.gt_s - (i32.load - (i32.add - (local.get $i2) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (local.set $i3 - (call $___lockfile - (local.get $i2) - ) - ) - (local.set $i3 - (i32.const 0) - ) - ) - (block $do-once - (if - (i32.lt_s - (call $_fputs - (local.get $i1) - (local.get $i2) - ) - (i32.const 0) - ) - (local.set $i4 - (i32.const 1) - ) - (block - (if - (if (result i32) - (i32.ne - (i32.load8_s - (i32.add - (local.get $i2) - (i32.const 75) - ) - ) - (i32.const 10) - ) - (block (result i32) - (local.set $i5 - (i32.add - (local.get $i2) - (i32.const 20) - ) - ) - (block (result i32) - (local.set $i6 - (i32.load - (local.get $i5) - ) - ) - (i32.lt_u - (local.get $i6) - (i32.load - (i32.add - (local.get $i2) - (i32.const 16) - ) - ) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (local.get $i5) - (i32.add - (local.get $i6) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $i6) - (i32.const 10) - ) - (local.set $i4 - (i32.const 0) - ) - (br $do-once) - ) - ) - (local.set $i4 - (i32.lt_s - (call $___overflow - (local.get $i2) - (i32.const 10) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (if - (local.get $i3) - (call $___unlockfile - (local.get $i2) - ) - ) - (return - (i32.shr_s - (i32.shl - (local.get $i4) - (i32.const 31) - ) - (i32.const 31) - ) - ) - ) - (func $___stdio_seek (; 27 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local.set $i4 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 32) - ) - ) - (local.set $i5 - (local.get $i4) - ) - (local.set $i6 - (i32.add - (local.get $i4) - (i32.const 20) - ) - ) - (i32.store - (local.get $i5) - (i32.load - (i32.add - (local.get $i1) - (i32.const 60) - ) - ) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 4) - ) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 8) - ) - (local.get $i2) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 12) - ) - (local.get $i6) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 16) - ) - (local.get $i3) - ) - (if - (i32.lt_s - (call $___syscall_ret - (call $___syscall140 - (i32.const 140) - (local.get $i5) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (local.get $i6) - (i32.const -1) - ) - (local.set $i7 - (i32.const -1) - ) - ) - (local.set $i7 - (i32.load - (local.get $i6) - ) - ) - ) - (global.set $STACKTOP - (local.get $i4) - ) - (return - (local.get $i7) - ) - ) - (func $___towrite (; 28 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local $i3 i32) - (local $i4 i32) - (local.set $i2 - (i32.add - (local.get $i1) - (i32.const 74) - ) - ) - (local.set $i3 - (i32.load8_s - (local.get $i2) - ) - ) - (i32.store8 - (local.get $i2) - (i32.or - (i32.add - (local.get $i3) - (i32.const 255) - ) - (local.get $i3) - ) - ) - (local.set $i3 - (i32.load - (local.get $i1) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $i3) - (i32.const 8) - ) - ) - (block - (i32.store - (i32.add - (local.get $i1) - (i32.const 8) - ) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $i1) - (i32.const 4) - ) - (i32.const 0) - ) - (local.set $i2 - (i32.load - (i32.add - (local.get $i1) - (i32.const 44) - ) - ) - ) - (i32.store - (i32.add - (local.get $i1) - (i32.const 28) - ) - (local.get $i2) - ) - (i32.store - (i32.add - (local.get $i1) - (i32.const 20) - ) - (local.get $i2) - ) - (i32.store - (i32.add - (local.get $i1) - (i32.const 16) - ) - (i32.add - (local.get $i2) - (i32.load - (i32.add - (local.get $i1) - (i32.const 48) - ) - ) - ) - ) - (local.set $i4 - (i32.const 0) - ) - ) - (block - (i32.store - (local.get $i1) - (i32.or - (local.get $i3) - (i32.const 32) - ) - ) - (local.set $i4 - (i32.const -1) - ) - ) - ) - (return - (local.get $i4) - ) - ) - (func $_fwrite (; 29 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (param $i4 i32) (result i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local $i9 i32) - (local.set $i5 - (i32.mul - (local.get $i3) - (local.get $i2) - ) - ) - (if - (i32.gt_s - (i32.load - (i32.add - (local.get $i4) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (block - (local.set $i6 - (i32.eq - (call $___lockfile - (local.get $i4) - ) - (i32.const 0) - ) - ) - (local.set $i7 - (call $___fwritex - (local.get $i1) - (local.get $i5) - (local.get $i4) - ) - ) - (if - (local.get $i6) - (local.set $i8 - (local.get $i7) - ) - (block - (call $___unlockfile - (local.get $i4) - ) - (local.set $i8 - (local.get $i7) - ) - ) - ) - ) - (local.set $i8 - (call $___fwritex - (local.get $i1) - (local.get $i5) - (local.get $i4) - ) - ) - ) - (if - (i32.eq - (local.get $i8) - (local.get $i5) - ) - (local.set $i9 - (local.get $i3) - ) - (local.set $i9 - (i32.div_u - (local.get $i8) - (local.get $i2) - ) - ) - ) - (return - (local.get $i9) - ) - ) - (func $___stdout_write (; 30 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) - (local $i4 i32) - (local $i5 i32) - (local.set $i4 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 80) - ) - ) - (local.set $i5 - (local.get $i4) - ) - (i32.store - (i32.add - (local.get $i1) - (i32.const 36) - ) - (i32.const 5) - ) - (if - (if (result i32) - (i32.eq - (i32.and - (i32.load - (local.get $i1) - ) - (i32.const 64) - ) - (i32.const 0) - ) - (block (result i32) - (i32.store - (local.get $i5) - (i32.load - (i32.add - (local.get $i1) - (i32.const 60) - ) - ) - ) - (block (result i32) - (i32.store - (i32.add - (local.get $i5) - (i32.const 4) - ) - (i32.const 21505) - ) - (block (result i32) - (i32.store - (i32.add - (local.get $i5) - (i32.const 8) - ) - (i32.add - (local.get $i4) - (i32.const 12) - ) - ) - (i32.ne - (call $___syscall54 - (i32.const 54) - (local.get $i5) - ) - (i32.const 0) - ) - ) - ) - ) - (i32.const 0) - ) - (i32.store8 - (i32.add - (local.get $i1) - (i32.const 75) - ) - (i32.const -1) - ) - ) - (local.set $i5 - (call $___stdio_write - (local.get $i1) - (local.get $i2) - (local.get $i3) - ) - ) - (global.set $STACKTOP - (local.get $i4) - ) - (return - (local.get $i5) - ) - ) - (func $copyTempDouble (; 31 ;) (param $i1 i32) - (i32.store8 - (global.get $tempDoublePtr) - (i32.load8_s - (local.get $i1) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 1) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 1) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 2) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 2) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 3) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 3) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 4) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 4) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 5) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 5) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 6) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 6) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 7) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 7) - ) - ) - ) - ) - (func $___stdio_close (; 32 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local $i3 i32) - (local.set $i2 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (local.set $i3 - (local.get $i2) - ) - (i32.store - (local.get $i3) - (i32.load - (i32.add - (local.get $i1) - (i32.const 60) - ) - ) - ) - (local.set $i1 - (call $___syscall_ret - (call $___syscall6 - (i32.const 6) - (local.get $i3) - ) - ) - ) - (global.set $STACKTOP - (local.get $i2) - ) - (return - (local.get $i1) - ) - ) - (func $copyTempFloat (; 33 ;) (param $i1 i32) - (i32.store8 - (global.get $tempDoublePtr) - (i32.load8_s - (local.get $i1) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 1) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 1) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 2) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 2) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 3) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 3) - ) - ) - ) - ) - (func $___syscall_ret (; 34 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (if - (i32.gt_u - (local.get $i1) - (i32.const -4096) - ) - (block - (i32.store - (call $___errno_location) - (i32.sub - (i32.const 0) - (local.get $i1) - ) - ) - (local.set $i2 - (i32.const -1) - ) - ) - (local.set $i2 - (local.get $i1) - ) - ) - (return - (local.get $i2) - ) - ) - (func $dynCall_iiii (; 35 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (param $i4 i32) (result i32) - (return - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $i2) - (local.get $i3) - (local.get $i4) - (i32.add - (i32.and - (local.get $i1) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - (func $stackAlloc (; 36 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local.set $i2 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (local.get $i1) - ) - ) - (global.set $STACKTOP - (i32.and - (i32.add - (global.get $STACKTOP) - (i32.const 15) - ) - (i32.const -16) - ) - ) - (return - (local.get $i2) - ) - ) - (func $___errno_location (; 37 ;) (result i32) - (local $i1 i32) - (if - (i32.eqz - (i32.load - (i32.const 8) - ) - ) - (local.set $i1 - (i32.const 60) - ) - (local.set $i1 - (i32.load - (i32.add - (call $_pthread_self) - (i32.const 60) - ) - ) - ) - ) - (return - (local.get $i1) - ) - ) - (func $setThrew (; 38 ;) (param $i1 i32) (param $i2 i32) - (if - (i32.eqz - (global.get $__THREW__) - ) - (block - (global.set $__THREW__ - (local.get $i1) - ) - (global.set $threwValue - (local.get $i2) - ) - ) - ) - ) - (func $_fputs (; 39 ;) (param $i1 i32) (param $i2 i32) (result i32) - (return - (i32.add - (call $_fwrite - (local.get $i1) - (call $_strlen - (local.get $i1) - ) - (i32.const 1) - (local.get $i2) - ) - (i32.const -1) - ) - ) - ) - (func $dynCall_ii (; 40 ;) (param $i1 i32) (param $i2 i32) (result i32) - (return - (call_indirect (type $i32_=>_i32) - (local.get $i2) - (i32.add - (i32.and - (local.get $i1) - (i32.const 1) - ) - (i32.const 0) - ) - ) - ) - ) - (func $_cleanup_418 (; 41 ;) (param $i1 i32) - (if - (i32.eqz - (i32.load - (i32.add - (local.get $i1) - (i32.const 68) - ) - ) - ) - (call $___unlockfile - (local.get $i1) - ) - ) - (return) - ) - (func $establishStackSpace (; 42 ;) (param $i1 i32) (param $i2 i32) - (global.set $STACKTOP - (local.get $i1) - ) - (global.set $STACK_MAX - (local.get $i2) - ) - ) - (func $dynCall_vi (; 43 ;) (param $i1 i32) (param $i2 i32) - (call_indirect (type $i32_=>_none) - (local.get $i2) - (i32.add - (i32.and - (local.get $i1) - (i32.const 7) - ) - (i32.const 10) - ) - ) - ) - (func $b1 (; 44 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) - (call $abort - (i32.const 1) - ) - (return - (i32.const 0) - ) - ) - (func $stackRestore (; 45 ;) (param $i1 i32) - (global.set $STACKTOP - (local.get $i1) - ) - ) - (func $setTempRet0 (; 46 ;) (param $i1 i32) - (global.set $tempRet0 - (local.get $i1) - ) - ) - (func $b0 (; 47 ;) (param $i1 i32) (result i32) - (call $abort - (i32.const 0) - ) - (return - (i32.const 0) - ) - ) - (func $___unlockfile (; 48 ;) (param $i1 i32) - (return) - ) - (func $___lockfile (; 49 ;) (param $i1 i32) (result i32) - (return - (i32.const 0) - ) - ) - (func $getTempRet0 (; 50 ;) (result i32) - (return - (global.get $tempRet0) - ) - ) - (func $_main (; 51 ;) (result i32) - (drop - (call $_puts - (i32.const 672) - ) - ) - (return - (i32.const 0) - ) - ) - (func $stackSave (; 52 ;) (result i32) - (return - (global.get $STACKTOP) - ) - ) - (func $b2 (; 53 ;) (param $i1 i32) - (call $abort - (i32.const 2) - ) - ) -) diff -Nru binaryen-91/test/emcc_O2_hello_world.fromasm.no-opts binaryen-99/test/emcc_O2_hello_world.fromasm.no-opts --- binaryen-91/test/emcc_O2_hello_world.fromasm.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/emcc_O2_hello_world.fromasm.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,11943 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 18 18 funcref)) - (elem (global.get $__table_base) $b0 $___stdio_close $b1 $b1 $___stdout_write $___stdio_seek $b1 $___stdio_write $b1 $b1 $b2 $b2 $b2 $b2 $_cleanup_418 $b2 $b2 $b2) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) - (import "env" "ABORT" (global $ABORT$asm2wasm$import i32)) - (import "global" "NaN" (global $nan$asm2wasm$import f64)) - (import "global" "Infinity" (global $inf$asm2wasm$import f64)) - (import "env" "abort" (func $abort (param i32))) - (import "env" "_pthread_cleanup_pop" (func $_pthread_cleanup_pop (param i32))) - (import "env" "_pthread_self" (func $_pthread_self (result i32))) - (import "env" "_sysconf" (func $_sysconf (param i32) (result i32))) - (import "env" "___lock" (func $___lock (param i32))) - (import "env" "___syscall6" (func $___syscall6 (param i32 i32) (result i32))) - (import "env" "_abort" (func $_abort)) - (import "env" "_sbrk" (func $_sbrk (param i32) (result i32))) - (import "env" "_time" (func $_time (param i32) (result i32))) - (import "env" "_pthread_cleanup_push" (func $_pthread_cleanup_push (param i32 i32))) - (import "env" "_emscripten_memcpy_big" (func $_emscripten_memcpy_big (param i32 i32 i32) (result i32))) - (import "env" "___syscall54" (func $___syscall54 (param i32 i32) (result i32))) - (import "env" "___unlock" (func $___unlock (param i32))) - (import "env" "___syscall140" (func $___syscall140 (param i32 i32) (result i32))) - (import "env" "___syscall146" (func $___syscall146 (param i32 i32) (result i32))) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (global $STACK_MAX (mut i32) (global.get $STACK_MAX$asm2wasm$import)) - (global $tempDoublePtr (mut i32) (global.get $tempDoublePtr$asm2wasm$import)) - (global $ABORT (mut i32) (global.get $ABORT$asm2wasm$import)) - (global $__THREW__ (mut i32) (i32.const 0)) - (global $threwValue (mut i32) (i32.const 0)) - (global $setjmpId (mut i32) (i32.const 0)) - (global $undef (mut i32) (i32.const 0)) - (global $nan (mut f64) (global.get $nan$asm2wasm$import)) - (global $inf (mut f64) (global.get $inf$asm2wasm$import)) - (global $tempInt (mut i32) (i32.const 0)) - (global $tempBigInt (mut i32) (i32.const 0)) - (global $tempBigIntP (mut i32) (i32.const 0)) - (global $tempBigIntS (mut i32) (i32.const 0)) - (global $tempBigIntR (mut f64) (f64.const 0)) - (global $tempBigIntI (mut i32) (i32.const 0)) - (global $tempBigIntD (mut i32) (i32.const 0)) - (global $tempValue (mut i32) (i32.const 0)) - (global $tempDouble (mut f64) (f64.const 0)) - (global $tempRet0 (mut i32) (i32.const 0)) - (global $tempRet1 (mut i32) (i32.const 0)) - (global $tempRet2 (mut i32) (i32.const 0)) - (global $tempRet3 (mut i32) (i32.const 0)) - (global $tempRet4 (mut i32) (i32.const 0)) - (global $tempRet5 (mut i32) (i32.const 0)) - (global $tempRet6 (mut i32) (i32.const 0)) - (global $tempRet7 (mut i32) (i32.const 0)) - (global $tempRet8 (mut i32) (i32.const 0)) - (global $tempRet9 (mut i32) (i32.const 0)) - (global $tempFloat (mut f64) (f64.const 0)) - (export "_free" (func $_free)) - (export "_main" (func $_main)) - (export "_memset" (func $_memset)) - (export "_malloc" (func $_malloc)) - (export "_memcpy" (func $_memcpy)) - (export "_fflush" (func $_fflush)) - (export "___errno_location" (func $___errno_location)) - (export "runPostSets" (func $runPostSets)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackSave" (func $stackSave)) - (export "stackRestore" (func $stackRestore)) - (export "establishStackSpace" (func $establishStackSpace)) - (export "setThrew" (func $setThrew)) - (export "setTempRet0" (func $setTempRet0)) - (export "getTempRet0" (func $getTempRet0)) - (export "dynCall_ii" (func $dynCall_ii)) - (export "dynCall_iiii" (func $dynCall_iiii)) - (export "dynCall_vi" (func $dynCall_vi)) - (func $_malloc (; 15 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local $i3 i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local $i9 i32) - (local $i10 i32) - (local $i11 i32) - (local $i12 i32) - (local $i13 i32) - (local $i14 i32) - (local $i15 i32) - (local $i16 i32) - (local $i17 i32) - (local $i18 i32) - (local $i19 i32) - (local $i20 i32) - (local $i21 i32) - (local $i22 i32) - (local $i23 i32) - (local $i24 i32) - (local $i25 i32) - (local $i26 i32) - (local $i27 i32) - (local $i28 i32) - (local $i29 i32) - (local $i30 i32) - (local $i31 i32) - (local $i32 i32) - (local $i33 i32) - (local $i34 i32) - (local $i35 i32) - (local $i36 i32) - (local $i37 i32) - (local $i38 i32) - (local $i39 i32) - (local $i40 i32) - (local $i41 i32) - (local $i42 i32) - (local $i43 i32) - (local $i44 i32) - (local $i45 i32) - (local $i46 i32) - (local $i47 i32) - (local $i48 i32) - (local $i49 i32) - (local $i50 i32) - (local $i51 i32) - (local $i52 i32) - (local $i53 i32) - (local $i54 i32) - (local $i55 i32) - (local $i56 i32) - (local $i57 i32) - (local $i58 i32) - (local $i59 i32) - (local $i60 i32) - (local $i61 i32) - (local $i62 i32) - (local $i63 i32) - (local $i64 i32) - (local $i65 i32) - (local $i66 i32) - (local $i67 i32) - (local $i68 i32) - (local $i69 i32) - (local $i70 i32) - (local $i71 i32) - (local $i72 i32) - (local $i73 i32) - (local $i74 i32) - (local $i75 i32) - (local $i76 i32) - (local $i77 i32) - (local $i78 i32) - (local $i79 i32) - (local $i80 i32) - (local $i81 i32) - (local $i82 i32) - (local $i83 i32) - (local $i84 i32) - (local $i85 i32) - (local $i86 i32) - (local $i87 i32) - (local $i88 i32) - (local $i89 i32) - (local $i90 i32) - (local $i91 i32) - (local $i92 i32) - (block $do-once - (if - (i32.lt_u - (local.get $i1) - (i32.const 245) - ) - (block - (local.set $i2 - (if (result i32) - (i32.lt_u - (local.get $i1) - (i32.const 11) - ) - (i32.const 16) - (i32.and - (i32.add - (local.get $i1) - (i32.const 11) - ) - (i32.const -8) - ) - ) - ) - (local.set $i3 - (i32.shr_u - (local.get $i2) - (i32.const 3) - ) - ) - (local.set $i4 - (i32.load - (i32.const 176) - ) - ) - (local.set $i5 - (i32.shr_u - (local.get $i4) - (local.get $i3) - ) - ) - (if - (i32.and - (local.get $i5) - (i32.const 3) - ) - (block - (local.set $i6 - (i32.add - (i32.xor - (i32.and - (local.get $i5) - (i32.const 1) - ) - (i32.const 1) - ) - (local.get $i3) - ) - ) - (local.set $i7 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i6) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i8 - (i32.add - (local.get $i7) - (i32.const 8) - ) - ) - (local.set $i9 - (i32.load - (local.get $i8) - ) - ) - (local.set $i10 - (i32.add - (local.get $i9) - (i32.const 8) - ) - ) - (local.set $i11 - (i32.load - (local.get $i10) - ) - ) - (block $do-once0 - (if - (i32.ne - (local.get $i7) - (local.get $i11) - ) - (block - (if - (i32.lt_u - (local.get $i11) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i12 - (i32.add - (local.get $i11) - (i32.const 12) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i12) - ) - (local.get $i9) - ) - (block - (i32.store - (local.get $i12) - (local.get $i7) - ) - (i32.store - (local.get $i8) - (local.get $i11) - ) - (br $do-once0) - ) - (call $_abort) - ) - ) - (i32.store - (i32.const 176) - (i32.and - (local.get $i4) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i6) - ) - (i32.const -1) - ) - ) - ) - ) - ) - (local.set $i11 - (i32.shl - (local.get $i6) - (i32.const 3) - ) - ) - (i32.store - (i32.add - (local.get $i9) - (i32.const 4) - ) - (i32.or - (local.get $i11) - (i32.const 3) - ) - ) - (local.set $i8 - (i32.add - (i32.add - (local.get $i9) - (local.get $i11) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $i8) - (i32.or - (i32.load - (local.get $i8) - ) - (i32.const 1) - ) - ) - (local.set $i13 - (local.get $i10) - ) - (return - (local.get $i13) - ) - ) - ) - (local.set $i8 - (i32.load - (i32.const 184) - ) - ) - (if - (i32.gt_u - (local.get $i2) - (local.get $i8) - ) - (block - (if - (local.get $i5) - (block - (local.set $i11 - (i32.shl - (i32.const 2) - (local.get $i3) - ) - ) - (local.set $i7 - (i32.and - (i32.shl - (local.get $i5) - (local.get $i3) - ) - (i32.or - (local.get $i11) - (i32.sub - (i32.const 0) - (local.get $i11) - ) - ) - ) - ) - (local.set $i11 - (i32.add - (i32.and - (local.get $i7) - (i32.sub - (i32.const 0) - (local.get $i7) - ) - ) - (i32.const -1) - ) - ) - (local.set $i7 - (i32.and - (i32.shr_u - (local.get $i11) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $i12 - (i32.shr_u - (local.get $i11) - (local.get $i7) - ) - ) - (local.set $i11 - (i32.and - (i32.shr_u - (local.get $i12) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $i14 - (i32.shr_u - (local.get $i12) - (local.get $i11) - ) - ) - (local.set $i12 - (i32.and - (i32.shr_u - (local.get $i14) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $i15 - (i32.shr_u - (local.get $i14) - (local.get $i12) - ) - ) - (local.set $i14 - (i32.and - (i32.shr_u - (local.get $i15) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $i16 - (i32.shr_u - (local.get $i15) - (local.get $i14) - ) - ) - (local.set $i15 - (i32.and - (i32.shr_u - (local.get $i16) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (local.set $i17 - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.get $i11) - (local.get $i7) - ) - (local.get $i12) - ) - (local.get $i14) - ) - (local.get $i15) - ) - (i32.shr_u - (local.get $i16) - (local.get $i15) - ) - ) - ) - (local.set $i15 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i17) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i16 - (i32.add - (local.get $i15) - (i32.const 8) - ) - ) - (local.set $i14 - (i32.load - (local.get $i16) - ) - ) - (local.set $i12 - (i32.add - (local.get $i14) - (i32.const 8) - ) - ) - (local.set $i7 - (i32.load - (local.get $i12) - ) - ) - (block $do-once2 - (if - (i32.ne - (local.get $i15) - (local.get $i7) - ) - (block - (if - (i32.lt_u - (local.get $i7) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i11 - (i32.add - (local.get $i7) - (i32.const 12) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i11) - ) - (local.get $i14) - ) - (block - (i32.store - (local.get $i11) - (local.get $i15) - ) - (i32.store - (local.get $i16) - (local.get $i7) - ) - (local.set $i18 - (i32.load - (i32.const 184) - ) - ) - (br $do-once2) - ) - (call $_abort) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (local.get $i4) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i17) - ) - (i32.const -1) - ) - ) - ) - (local.set $i18 - (local.get $i8) - ) - ) - ) - ) - (local.set $i8 - (i32.sub - (i32.shl - (local.get $i17) - (i32.const 3) - ) - (local.get $i2) - ) - ) - (i32.store - (i32.add - (local.get $i14) - (i32.const 4) - ) - (i32.or - (local.get $i2) - (i32.const 3) - ) - ) - (local.set $i4 - (i32.add - (local.get $i14) - (local.get $i2) - ) - ) - (i32.store - (i32.add - (local.get $i4) - (i32.const 4) - ) - (i32.or - (local.get $i8) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i4) - (local.get $i8) - ) - (local.get $i8) - ) - (if - (local.get $i18) - (block - (local.set $i7 - (i32.load - (i32.const 196) - ) - ) - (local.set $i16 - (i32.shr_u - (local.get $i18) - (i32.const 3) - ) - ) - (local.set $i15 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i16) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i3 - (i32.load - (i32.const 176) - ) - ) - (local.set $i5 - (i32.shl - (i32.const 1) - (local.get $i16) - ) - ) - (if - (i32.and - (local.get $i3) - (local.get $i5) - ) - (block - (local.set $i16 - (i32.add - (local.get $i15) - (i32.const 8) - ) - ) - (local.set $i10 - (i32.load - (local.get $i16) - ) - ) - (if - (i32.lt_u - (local.get $i10) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $i19 - (local.get $i16) - ) - (local.set $i20 - (local.get $i10) - ) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $i3) - (local.get $i5) - ) - ) - (local.set $i19 - (i32.add - (local.get $i15) - (i32.const 8) - ) - ) - (local.set $i20 - (local.get $i15) - ) - ) - ) - (i32.store - (local.get $i19) - (local.get $i7) - ) - (i32.store - (i32.add - (local.get $i20) - (i32.const 12) - ) - (local.get $i7) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 8) - ) - (local.get $i20) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 12) - ) - (local.get $i15) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $i8) - ) - (i32.store - (i32.const 196) - (local.get $i4) - ) - (local.set $i13 - (local.get $i12) - ) - (return - (local.get $i13) - ) - ) - ) - (local.set $i4 - (i32.load - (i32.const 180) - ) - ) - (if - (local.get $i4) - (block - (local.set $i8 - (i32.add - (i32.and - (local.get $i4) - (i32.sub - (i32.const 0) - (local.get $i4) - ) - ) - (i32.const -1) - ) - ) - (local.set $i4 - (i32.and - (i32.shr_u - (local.get $i8) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $i15 - (i32.shr_u - (local.get $i8) - (local.get $i4) - ) - ) - (local.set $i8 - (i32.and - (i32.shr_u - (local.get $i15) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $i7 - (i32.shr_u - (local.get $i15) - (local.get $i8) - ) - ) - (local.set $i15 - (i32.and - (i32.shr_u - (local.get $i7) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $i5 - (i32.shr_u - (local.get $i7) - (local.get $i15) - ) - ) - (local.set $i7 - (i32.and - (i32.shr_u - (local.get $i5) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $i3 - (i32.shr_u - (local.get $i5) - (local.get $i7) - ) - ) - (local.set $i5 - (i32.and - (i32.shr_u - (local.get $i3) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (local.set $i10 - (i32.load - (i32.add - (i32.const 480) - (i32.shl - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.get $i8) - (local.get $i4) - ) - (local.get $i15) - ) - (local.get $i7) - ) - (local.get $i5) - ) - (i32.shr_u - (local.get $i3) - (local.get $i5) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (local.set $i5 - (i32.sub - (i32.and - (i32.load - (i32.add - (local.get $i10) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $i2) - ) - ) - (local.set $i3 - (local.get $i10) - ) - (local.set $i7 - (local.get $i10) - ) - (loop $while-in - (block $while-out - (local.set $i10 - (i32.load - (i32.add - (local.get $i3) - (i32.const 16) - ) - ) - ) - (if - (i32.eqz - (local.get $i10) - ) - (block - (local.set $i15 - (i32.load - (i32.add - (local.get $i3) - (i32.const 20) - ) - ) - ) - (if - (i32.eqz - (local.get $i15) - ) - (block - (local.set $i21 - (local.get $i5) - ) - (local.set $i22 - (local.get $i7) - ) - (br $while-out) - ) - (local.set $i23 - (local.get $i15) - ) - ) - ) - (local.set $i23 - (local.get $i10) - ) - ) - (local.set $i10 - (i32.sub - (i32.and - (i32.load - (i32.add - (local.get $i23) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $i2) - ) - ) - (local.set $i15 - (i32.lt_u - (local.get $i10) - (local.get $i5) - ) - ) - (local.set $i5 - (if (result i32) - (local.get $i15) - (local.get $i10) - (local.get $i5) - ) - ) - (local.set $i3 - (local.get $i23) - ) - (local.set $i7 - (if (result i32) - (local.get $i15) - (local.get $i23) - (local.get $i7) - ) - ) - (br $while-in) - ) - ) - (local.set $i7 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i22) - (local.get $i7) - ) - (call $_abort) - ) - (local.set $i3 - (i32.add - (local.get $i22) - (local.get $i2) - ) - ) - (if - (i32.ge_u - (local.get $i22) - (local.get $i3) - ) - (call $_abort) - ) - (local.set $i5 - (i32.load - (i32.add - (local.get $i22) - (i32.const 24) - ) - ) - ) - (local.set $i12 - (i32.load - (i32.add - (local.get $i22) - (i32.const 12) - ) - ) - ) - (block $do-once4 - (if - (i32.eq - (local.get $i12) - (local.get $i22) - ) - (block - (local.set $i14 - (i32.add - (local.get $i22) - (i32.const 20) - ) - ) - (local.set $i17 - (i32.load - (local.get $i14) - ) - ) - (if - (i32.eqz - (local.get $i17) - ) - (block - (local.set $i15 - (i32.add - (local.get $i22) - (i32.const 16) - ) - ) - (local.set $i10 - (i32.load - (local.get $i15) - ) - ) - (if - (i32.eqz - (local.get $i10) - ) - (block - (local.set $i24 - (i32.const 0) - ) - (br $do-once4) - ) - (block - (local.set $i25 - (local.get $i10) - ) - (local.set $i26 - (local.get $i15) - ) - ) - ) - ) - (block - (local.set $i25 - (local.get $i17) - ) - (local.set $i26 - (local.get $i14) - ) - ) - ) - (loop $while-in7 - (block $while-out6 - (local.set $i14 - (i32.add - (local.get $i25) - (i32.const 20) - ) - ) - (local.set $i17 - (i32.load - (local.get $i14) - ) - ) - (if - (local.get $i17) - (block - (local.set $i25 - (local.get $i17) - ) - (local.set $i26 - (local.get $i14) - ) - (br $while-in7) - ) - ) - (local.set $i14 - (i32.add - (local.get $i25) - (i32.const 16) - ) - ) - (local.set $i17 - (i32.load - (local.get $i14) - ) - ) - (if - (i32.eqz - (local.get $i17) - ) - (block - (local.set $i27 - (local.get $i25) - ) - (local.set $i28 - (local.get $i26) - ) - (br $while-out6) - ) - (block - (local.set $i25 - (local.get $i17) - ) - (local.set $i26 - (local.get $i14) - ) - ) - ) - (br $while-in7) - ) - ) - (if - (i32.lt_u - (local.get $i28) - (local.get $i7) - ) - (call $_abort) - (block - (i32.store - (local.get $i28) - (i32.const 0) - ) - (local.set $i24 - (local.get $i27) - ) - (br $do-once4) - ) - ) - ) - (block - (local.set $i14 - (i32.load - (i32.add - (local.get $i22) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $i14) - (local.get $i7) - ) - (call $_abort) - ) - (local.set $i17 - (i32.add - (local.get $i14) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $i17) - ) - (local.get $i22) - ) - (call $_abort) - ) - (local.set $i15 - (i32.add - (local.get $i12) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i15) - ) - (local.get $i22) - ) - (block - (i32.store - (local.get $i17) - (local.get $i12) - ) - (i32.store - (local.get $i15) - (local.get $i14) - ) - (local.set $i24 - (local.get $i12) - ) - (br $do-once4) - ) - (call $_abort) - ) - ) - ) - ) - (block $do-once8 - (if - (local.get $i5) - (block - (local.set $i12 - (i32.load - (i32.add - (local.get $i22) - (i32.const 28) - ) - ) - ) - (local.set $i7 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i12) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $i22) - (i32.load - (local.get $i7) - ) - ) - (block - (i32.store - (local.get $i7) - (local.get $i24) - ) - (if - (i32.eqz - (local.get $i24) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i12) - ) - (i32.const -1) - ) - ) - ) - (br $do-once8) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $i5) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i12 - (i32.add - (local.get $i5) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i12) - ) - (local.get $i22) - ) - (i32.store - (local.get $i12) - (local.get $i24) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 20) - ) - (local.get $i24) - ) - ) - (if - (i32.eqz - (local.get $i24) - ) - (br $do-once8) - ) - ) - ) - (local.set $i12 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i24) - (local.get $i12) - ) - (call $_abort) - ) - (i32.store - (i32.add - (local.get $i24) - (i32.const 24) - ) - (local.get $i5) - ) - (local.set $i7 - (i32.load - (i32.add - (local.get $i22) - (i32.const 16) - ) - ) - ) - (block $do-once10 - (if - (local.get $i7) - (if - (i32.lt_u - (local.get $i7) - (local.get $i12) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i24) - (i32.const 16) - ) - (local.get $i7) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 24) - ) - (local.get $i24) - ) - (br $do-once10) - ) - ) - ) - ) - (local.set $i7 - (i32.load - (i32.add - (local.get $i22) - (i32.const 20) - ) - ) - ) - (if - (local.get $i7) - (if - (i32.lt_u - (local.get $i7) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i24) - (i32.const 20) - ) - (local.get $i7) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 24) - ) - (local.get $i24) - ) - (br $do-once8) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $i21) - (i32.const 16) - ) - (block - (local.set $i5 - (i32.add - (local.get $i21) - (local.get $i2) - ) - ) - (i32.store - (i32.add - (local.get $i22) - (i32.const 4) - ) - (i32.or - (local.get $i5) - (i32.const 3) - ) - ) - (local.set $i7 - (i32.add - (i32.add - (local.get $i22) - (local.get $i5) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $i7) - (i32.or - (i32.load - (local.get $i7) - ) - (i32.const 1) - ) - ) - ) - (block - (i32.store - (i32.add - (local.get $i22) - (i32.const 4) - ) - (i32.or - (local.get $i2) - (i32.const 3) - ) - ) - (i32.store - (i32.add - (local.get $i3) - (i32.const 4) - ) - (i32.or - (local.get $i21) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i3) - (local.get $i21) - ) - (local.get $i21) - ) - (local.set $i7 - (i32.load - (i32.const 184) - ) - ) - (if - (local.get $i7) - (block - (local.set $i5 - (i32.load - (i32.const 196) - ) - ) - (local.set $i12 - (i32.shr_u - (local.get $i7) - (i32.const 3) - ) - ) - (local.set $i7 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i12) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i14 - (i32.load - (i32.const 176) - ) - ) - (local.set $i15 - (i32.shl - (i32.const 1) - (local.get $i12) - ) - ) - (if - (i32.and - (local.get $i14) - (local.get $i15) - ) - (block - (local.set $i12 - (i32.add - (local.get $i7) - (i32.const 8) - ) - ) - (local.set $i17 - (i32.load - (local.get $i12) - ) - ) - (if - (i32.lt_u - (local.get $i17) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $i29 - (local.get $i12) - ) - (local.set $i30 - (local.get $i17) - ) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $i14) - (local.get $i15) - ) - ) - (local.set $i29 - (i32.add - (local.get $i7) - (i32.const 8) - ) - ) - (local.set $i30 - (local.get $i7) - ) - ) - ) - (i32.store - (local.get $i29) - (local.get $i5) - ) - (i32.store - (i32.add - (local.get $i30) - (i32.const 12) - ) - (local.get $i5) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 8) - ) - (local.get $i30) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 12) - ) - (local.get $i7) - ) - ) - ) - (i32.store - (i32.const 184) - (local.get $i21) - ) - (i32.store - (i32.const 196) - (local.get $i3) - ) - ) - ) - (local.set $i13 - (i32.add - (local.get $i22) - (i32.const 8) - ) - ) - (return - (local.get $i13) - ) - ) - (local.set $i31 - (local.get $i2) - ) - ) - ) - (local.set $i31 - (local.get $i2) - ) - ) - ) - (if - (i32.le_u - (local.get $i1) - (i32.const -65) - ) - (block - (local.set $i7 - (i32.add - (local.get $i1) - (i32.const 11) - ) - ) - (local.set $i5 - (i32.and - (local.get $i7) - (i32.const -8) - ) - ) - (local.set $i15 - (i32.load - (i32.const 180) - ) - ) - (if - (local.get $i15) - (block - (local.set $i14 - (i32.sub - (i32.const 0) - (local.get $i5) - ) - ) - (local.set $i17 - (i32.shr_u - (local.get $i7) - (i32.const 8) - ) - ) - (if - (local.get $i17) - (if - (i32.gt_u - (local.get $i5) - (i32.const 16777215) - ) - (local.set $i32 - (i32.const 31) - ) - (block - (local.set $i7 - (i32.and - (i32.shr_u - (i32.add - (local.get $i17) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $i12 - (i32.shl - (local.get $i17) - (local.get $i7) - ) - ) - (local.set $i17 - (i32.and - (i32.shr_u - (i32.add - (local.get $i12) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $i10 - (i32.shl - (local.get $i12) - (local.get $i17) - ) - ) - (local.set $i12 - (i32.and - (i32.shr_u - (i32.add - (local.get $i10) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $i4 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $i17) - (local.get $i7) - ) - (local.get $i12) - ) - ) - (i32.shr_u - (i32.shl - (local.get $i10) - (local.get $i12) - ) - (i32.const 15) - ) - ) - ) - (local.set $i32 - (i32.or - (i32.and - (i32.shr_u - (local.get $i5) - (i32.add - (local.get $i4) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $i4) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i32 - (i32.const 0) - ) - ) - (local.set $i4 - (i32.load - (i32.add - (i32.const 480) - (i32.shl - (local.get $i32) - (i32.const 2) - ) - ) - ) - ) - (block $label$break$L123 - (if - (i32.eqz - (local.get $i4) - ) - (block - (local.set $i33 - (local.get $i14) - ) - (local.set $i34 - (i32.const 0) - ) - (local.set $i35 - (i32.const 0) - ) - (local.set $i36 - (i32.const 86) - ) - ) - (block - (local.set $i12 - (local.get $i14) - ) - (local.set $i10 - (i32.const 0) - ) - (local.set $i7 - (i32.shl - (local.get $i5) - (if (result i32) - (i32.eq - (local.get $i32) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $i32) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i17 - (local.get $i4) - ) - (local.set $i8 - (i32.const 0) - ) - (loop $while-in14 - (block $while-out13 - (local.set $i16 - (i32.and - (i32.load - (i32.add - (local.get $i17) - (i32.const 4) - ) - ) - (i32.const -8) - ) - ) - (local.set $i9 - (i32.sub - (local.get $i16) - (local.get $i5) - ) - ) - (if - (i32.lt_u - (local.get $i9) - (local.get $i12) - ) - (if - (i32.eq - (local.get $i16) - (local.get $i5) - ) - (block - (local.set $i37 - (local.get $i9) - ) - (local.set $i38 - (local.get $i17) - ) - (local.set $i39 - (local.get $i17) - ) - (local.set $i36 - (i32.const 90) - ) - (br $label$break$L123) - ) - (block - (local.set $i40 - (local.get $i9) - ) - (local.set $i41 - (local.get $i17) - ) - ) - ) - (block - (local.set $i40 - (local.get $i12) - ) - (local.set $i41 - (local.get $i8) - ) - ) - ) - (local.set $i9 - (i32.load - (i32.add - (local.get $i17) - (i32.const 20) - ) - ) - ) - (local.set $i17 - (i32.load - (i32.add - (i32.add - (local.get $i17) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $i7) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - (local.set $i16 - (if (result i32) - (i32.or - (i32.eq - (local.get $i9) - (i32.const 0) - ) - (i32.eq - (local.get $i9) - (local.get $i17) - ) - ) - (local.get $i10) - (local.get $i9) - ) - ) - (local.set $i9 - (i32.eq - (local.get $i17) - (i32.const 0) - ) - ) - (if - (local.get $i9) - (block - (local.set $i33 - (local.get $i40) - ) - (local.set $i34 - (local.get $i16) - ) - (local.set $i35 - (local.get $i41) - ) - (local.set $i36 - (i32.const 86) - ) - (br $while-out13) - ) - (block - (local.set $i12 - (local.get $i40) - ) - (local.set $i10 - (local.get $i16) - ) - (local.set $i7 - (i32.shl - (local.get $i7) - (i32.xor - (i32.and - (local.get $i9) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (local.set $i8 - (local.get $i41) - ) - ) - ) - (br $while-in14) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 86) - ) - (block - (if - (i32.and - (i32.eq - (local.get $i34) - (i32.const 0) - ) - (i32.eq - (local.get $i35) - (i32.const 0) - ) - ) - (block - (local.set $i4 - (i32.shl - (i32.const 2) - (local.get $i32) - ) - ) - (local.set $i14 - (i32.and - (local.get $i15) - (i32.or - (local.get $i4) - (i32.sub - (i32.const 0) - (local.get $i4) - ) - ) - ) - ) - (if - (i32.eqz - (local.get $i14) - ) - (block - (local.set $i31 - (local.get $i5) - ) - (br $do-once) - ) - ) - (local.set $i4 - (i32.add - (i32.and - (local.get $i14) - (i32.sub - (i32.const 0) - (local.get $i14) - ) - ) - (i32.const -1) - ) - ) - (local.set $i14 - (i32.and - (i32.shr_u - (local.get $i4) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $i2 - (i32.shr_u - (local.get $i4) - (local.get $i14) - ) - ) - (local.set $i4 - (i32.and - (i32.shr_u - (local.get $i2) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $i3 - (i32.shr_u - (local.get $i2) - (local.get $i4) - ) - ) - (local.set $i2 - (i32.and - (i32.shr_u - (local.get $i3) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $i8 - (i32.shr_u - (local.get $i3) - (local.get $i2) - ) - ) - (local.set $i3 - (i32.and - (i32.shr_u - (local.get $i8) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $i7 - (i32.shr_u - (local.get $i8) - (local.get $i3) - ) - ) - (local.set $i8 - (i32.and - (i32.shr_u - (local.get $i7) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (local.set $i42 - (i32.load - (i32.add - (i32.const 480) - (i32.shl - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.get $i4) - (local.get $i14) - ) - (local.get $i2) - ) - (local.get $i3) - ) - (local.get $i8) - ) - (i32.shr_u - (local.get $i7) - (local.get $i8) - ) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (local.set $i42 - (local.get $i34) - ) - ) - (if - (i32.eqz - (local.get $i42) - ) - (block - (local.set $i43 - (local.get $i33) - ) - (local.set $i44 - (local.get $i35) - ) - ) - (block - (local.set $i37 - (local.get $i33) - ) - (local.set $i38 - (local.get $i42) - ) - (local.set $i39 - (local.get $i35) - ) - (local.set $i36 - (i32.const 90) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 90) - ) - (loop $while-in16 - (block $while-out15 - (local.set $i36 - (i32.const 0) - ) - (local.set $i8 - (i32.sub - (i32.and - (i32.load - (i32.add - (local.get $i38) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $i5) - ) - ) - (local.set $i7 - (i32.lt_u - (local.get $i8) - (local.get $i37) - ) - ) - (local.set $i3 - (if (result i32) - (local.get $i7) - (local.get $i8) - (local.get $i37) - ) - ) - (local.set $i8 - (if (result i32) - (local.get $i7) - (local.get $i38) - (local.get $i39) - ) - ) - (local.set $i7 - (i32.load - (i32.add - (local.get $i38) - (i32.const 16) - ) - ) - ) - (if - (local.get $i7) - (block - (local.set $i37 - (local.get $i3) - ) - (local.set $i38 - (local.get $i7) - ) - (local.set $i39 - (local.get $i8) - ) - (local.set $i36 - (i32.const 90) - ) - (br $while-in16) - ) - ) - (local.set $i38 - (i32.load - (i32.add - (local.get $i38) - (i32.const 20) - ) - ) - ) - (if - (i32.eqz - (local.get $i38) - ) - (block - (local.set $i43 - (local.get $i3) - ) - (local.set $i44 - (local.get $i8) - ) - (br $while-out15) - ) - (block - (local.set $i37 - (local.get $i3) - ) - (local.set $i39 - (local.get $i8) - ) - (local.set $i36 - (i32.const 90) - ) - ) - ) - (br $while-in16) - ) - ) - ) - (if - (if (result i32) - (i32.ne - (local.get $i44) - (i32.const 0) - ) - (i32.lt_u - (local.get $i43) - (i32.sub - (i32.load - (i32.const 184) - ) - (local.get $i5) - ) - ) - (i32.const 0) - ) - (block - (local.set $i15 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i44) - (local.get $i15) - ) - (call $_abort) - ) - (local.set $i8 - (i32.add - (local.get $i44) - (local.get $i5) - ) - ) - (if - (i32.ge_u - (local.get $i44) - (local.get $i8) - ) - (call $_abort) - ) - (local.set $i3 - (i32.load - (i32.add - (local.get $i44) - (i32.const 24) - ) - ) - ) - (local.set $i7 - (i32.load - (i32.add - (local.get $i44) - (i32.const 12) - ) - ) - ) - (block $do-once17 - (if - (i32.eq - (local.get $i7) - (local.get $i44) - ) - (block - (local.set $i2 - (i32.add - (local.get $i44) - (i32.const 20) - ) - ) - (local.set $i14 - (i32.load - (local.get $i2) - ) - ) - (if - (i32.eqz - (local.get $i14) - ) - (block - (local.set $i4 - (i32.add - (local.get $i44) - (i32.const 16) - ) - ) - (local.set $i10 - (i32.load - (local.get $i4) - ) - ) - (if - (i32.eqz - (local.get $i10) - ) - (block - (local.set $i45 - (i32.const 0) - ) - (br $do-once17) - ) - (block - (local.set $i46 - (local.get $i10) - ) - (local.set $i47 - (local.get $i4) - ) - ) - ) - ) - (block - (local.set $i46 - (local.get $i14) - ) - (local.set $i47 - (local.get $i2) - ) - ) - ) - (loop $while-in20 - (block $while-out19 - (local.set $i2 - (i32.add - (local.get $i46) - (i32.const 20) - ) - ) - (local.set $i14 - (i32.load - (local.get $i2) - ) - ) - (if - (local.get $i14) - (block - (local.set $i46 - (local.get $i14) - ) - (local.set $i47 - (local.get $i2) - ) - (br $while-in20) - ) - ) - (local.set $i2 - (i32.add - (local.get $i46) - (i32.const 16) - ) - ) - (local.set $i14 - (i32.load - (local.get $i2) - ) - ) - (if - (i32.eqz - (local.get $i14) - ) - (block - (local.set $i48 - (local.get $i46) - ) - (local.set $i49 - (local.get $i47) - ) - (br $while-out19) - ) - (block - (local.set $i46 - (local.get $i14) - ) - (local.set $i47 - (local.get $i2) - ) - ) - ) - (br $while-in20) - ) - ) - (if - (i32.lt_u - (local.get $i49) - (local.get $i15) - ) - (call $_abort) - (block - (i32.store - (local.get $i49) - (i32.const 0) - ) - (local.set $i45 - (local.get $i48) - ) - (br $do-once17) - ) - ) - ) - (block - (local.set $i2 - (i32.load - (i32.add - (local.get $i44) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $i2) - (local.get $i15) - ) - (call $_abort) - ) - (local.set $i14 - (i32.add - (local.get $i2) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $i14) - ) - (local.get $i44) - ) - (call $_abort) - ) - (local.set $i4 - (i32.add - (local.get $i7) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i4) - ) - (local.get $i44) - ) - (block - (i32.store - (local.get $i14) - (local.get $i7) - ) - (i32.store - (local.get $i4) - (local.get $i2) - ) - (local.set $i45 - (local.get $i7) - ) - (br $do-once17) - ) - (call $_abort) - ) - ) - ) - ) - (block $do-once21 - (if - (local.get $i3) - (block - (local.set $i7 - (i32.load - (i32.add - (local.get $i44) - (i32.const 28) - ) - ) - ) - (local.set $i15 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i7) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $i44) - (i32.load - (local.get $i15) - ) - ) - (block - (i32.store - (local.get $i15) - (local.get $i45) - ) - (if - (i32.eqz - (local.get $i45) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i7) - ) - (i32.const -1) - ) - ) - ) - (br $do-once21) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $i3) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i7 - (i32.add - (local.get $i3) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i7) - ) - (local.get $i44) - ) - (i32.store - (local.get $i7) - (local.get $i45) - ) - (i32.store - (i32.add - (local.get $i3) - (i32.const 20) - ) - (local.get $i45) - ) - ) - (if - (i32.eqz - (local.get $i45) - ) - (br $do-once21) - ) - ) - ) - (local.set $i7 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i45) - (local.get $i7) - ) - (call $_abort) - ) - (i32.store - (i32.add - (local.get $i45) - (i32.const 24) - ) - (local.get $i3) - ) - (local.set $i15 - (i32.load - (i32.add - (local.get $i44) - (i32.const 16) - ) - ) - ) - (block $do-once23 - (if - (local.get $i15) - (if - (i32.lt_u - (local.get $i15) - (local.get $i7) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i45) - (i32.const 16) - ) - (local.get $i15) - ) - (i32.store - (i32.add - (local.get $i15) - (i32.const 24) - ) - (local.get $i45) - ) - (br $do-once23) - ) - ) - ) - ) - (local.set $i15 - (i32.load - (i32.add - (local.get $i44) - (i32.const 20) - ) - ) - ) - (if - (local.get $i15) - (if - (i32.lt_u - (local.get $i15) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i45) - (i32.const 20) - ) - (local.get $i15) - ) - (i32.store - (i32.add - (local.get $i15) - (i32.const 24) - ) - (local.get $i45) - ) - (br $do-once21) - ) - ) - ) - ) - ) - ) - (block $do-once25 - (if - (i32.ge_u - (local.get $i43) - (i32.const 16) - ) - (block - (i32.store - (i32.add - (local.get $i44) - (i32.const 4) - ) - (i32.or - (local.get $i5) - (i32.const 3) - ) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 4) - ) - (i32.or - (local.get $i43) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i8) - (local.get $i43) - ) - (local.get $i43) - ) - (local.set $i3 - (i32.shr_u - (local.get $i43) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $i43) - (i32.const 256) - ) - (block - (local.set $i15 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i3) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i7 - (i32.load - (i32.const 176) - ) - ) - (local.set $i2 - (i32.shl - (i32.const 1) - (local.get $i3) - ) - ) - (if - (i32.and - (local.get $i7) - (local.get $i2) - ) - (block - (local.set $i3 - (i32.add - (local.get $i15) - (i32.const 8) - ) - ) - (local.set $i4 - (i32.load - (local.get $i3) - ) - ) - (if - (i32.lt_u - (local.get $i4) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $i50 - (local.get $i3) - ) - (local.set $i51 - (local.get $i4) - ) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $i7) - (local.get $i2) - ) - ) - (local.set $i50 - (i32.add - (local.get $i15) - (i32.const 8) - ) - ) - (local.set $i51 - (local.get $i15) - ) - ) - ) - (i32.store - (local.get $i50) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i51) - (i32.const 12) - ) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 8) - ) - (local.get $i51) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 12) - ) - (local.get $i15) - ) - (br $do-once25) - ) - ) - (local.set $i15 - (i32.shr_u - (local.get $i43) - (i32.const 8) - ) - ) - (if - (local.get $i15) - (if - (i32.gt_u - (local.get $i43) - (i32.const 16777215) - ) - (local.set $i52 - (i32.const 31) - ) - (block - (local.set $i2 - (i32.and - (i32.shr_u - (i32.add - (local.get $i15) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $i7 - (i32.shl - (local.get $i15) - (local.get $i2) - ) - ) - (local.set $i15 - (i32.and - (i32.shr_u - (i32.add - (local.get $i7) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $i4 - (i32.shl - (local.get $i7) - (local.get $i15) - ) - ) - (local.set $i7 - (i32.and - (i32.shr_u - (i32.add - (local.get $i4) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $i3 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $i15) - (local.get $i2) - ) - (local.get $i7) - ) - ) - (i32.shr_u - (i32.shl - (local.get $i4) - (local.get $i7) - ) - (i32.const 15) - ) - ) - ) - (local.set $i52 - (i32.or - (i32.and - (i32.shr_u - (local.get $i43) - (i32.add - (local.get $i3) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $i3) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i52 - (i32.const 0) - ) - ) - (local.set $i3 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i52) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 28) - ) - (local.get $i52) - ) - (local.set $i7 - (i32.add - (local.get $i8) - (i32.const 16) - ) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 4) - ) - (i32.const 0) - ) - (i32.store - (local.get $i7) - (i32.const 0) - ) - (local.set $i7 - (i32.load - (i32.const 180) - ) - ) - (local.set $i4 - (i32.shl - (i32.const 1) - (local.get $i52) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $i7) - (local.get $i4) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $i7) - (local.get $i4) - ) - ) - (i32.store - (local.get $i3) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 24) - ) - (local.get $i3) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 12) - ) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 8) - ) - (local.get $i8) - ) - (br $do-once25) - ) - ) - (local.set $i4 - (i32.shl - (local.get $i43) - (if (result i32) - (i32.eq - (local.get $i52) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $i52) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i7 - (i32.load - (local.get $i3) - ) - ) - (loop $while-in28 - (block $while-out27 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $i7) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $i43) - ) - (block - (local.set $i53 - (local.get $i7) - ) - (local.set $i36 - (i32.const 148) - ) - (br $while-out27) - ) - ) - (local.set $i3 - (i32.add - (i32.add - (local.get $i7) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $i4) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $i2 - (i32.load - (local.get $i3) - ) - ) - (if - (i32.eqz - (local.get $i2) - ) - (block - (local.set $i54 - (local.get $i3) - ) - (local.set $i55 - (local.get $i7) - ) - (local.set $i36 - (i32.const 145) - ) - (br $while-out27) - ) - (block - (local.set $i4 - (i32.shl - (local.get $i4) - (i32.const 1) - ) - ) - (local.set $i7 - (local.get $i2) - ) - ) - ) - (br $while-in28) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 145) - ) - (if - (i32.lt_u - (local.get $i54) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $i54) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 24) - ) - (local.get $i55) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 12) - ) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 8) - ) - (local.get $i8) - ) - (br $do-once25) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 148) - ) - (block - (local.set $i7 - (i32.add - (local.get $i53) - (i32.const 8) - ) - ) - (local.set $i4 - (i32.load - (local.get $i7) - ) - ) - (local.set $i2 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $i4) - (local.get $i2) - ) - (i32.ge_u - (local.get $i53) - (local.get $i2) - ) - ) - (block - (i32.store - (i32.add - (local.get $i4) - (i32.const 12) - ) - (local.get $i8) - ) - (i32.store - (local.get $i7) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 8) - ) - (local.get $i4) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 12) - ) - (local.get $i53) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once25) - ) - (call $_abort) - ) - ) - ) - ) - ) - (block - (local.set $i4 - (i32.add - (local.get $i43) - (local.get $i5) - ) - ) - (i32.store - (i32.add - (local.get $i44) - (i32.const 4) - ) - (i32.or - (local.get $i4) - (i32.const 3) - ) - ) - (local.set $i7 - (i32.add - (i32.add - (local.get $i44) - (local.get $i4) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $i7) - (i32.or - (i32.load - (local.get $i7) - ) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i13 - (i32.add - (local.get $i44) - (i32.const 8) - ) - ) - (return - (local.get $i13) - ) - ) - (local.set $i31 - (local.get $i5) - ) - ) - ) - (local.set $i31 - (local.get $i5) - ) - ) - ) - (local.set $i31 - (i32.const -1) - ) - ) - ) - ) - (local.set $i44 - (i32.load - (i32.const 184) - ) - ) - (if - (i32.ge_u - (local.get $i44) - (local.get $i31) - ) - (block - (local.set $i43 - (i32.sub - (local.get $i44) - (local.get $i31) - ) - ) - (local.set $i53 - (i32.load - (i32.const 196) - ) - ) - (if - (i32.gt_u - (local.get $i43) - (i32.const 15) - ) - (block - (local.set $i55 - (i32.add - (local.get $i53) - (local.get $i31) - ) - ) - (i32.store - (i32.const 196) - (local.get $i55) - ) - (i32.store - (i32.const 184) - (local.get $i43) - ) - (i32.store - (i32.add - (local.get $i55) - (i32.const 4) - ) - (i32.or - (local.get $i43) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i55) - (local.get $i43) - ) - (local.get $i43) - ) - (i32.store - (i32.add - (local.get $i53) - (i32.const 4) - ) - (i32.or - (local.get $i31) - (i32.const 3) - ) - ) - ) - (block - (i32.store - (i32.const 184) - (i32.const 0) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $i53) - (i32.const 4) - ) - (i32.or - (local.get $i44) - (i32.const 3) - ) - ) - (local.set $i43 - (i32.add - (i32.add - (local.get $i53) - (local.get $i44) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $i43) - (i32.or - (i32.load - (local.get $i43) - ) - (i32.const 1) - ) - ) - ) - ) - (local.set $i13 - (i32.add - (local.get $i53) - (i32.const 8) - ) - ) - (return - (local.get $i13) - ) - ) - ) - (local.set $i53 - (i32.load - (i32.const 188) - ) - ) - (if - (i32.gt_u - (local.get $i53) - (local.get $i31) - ) - (block - (local.set $i43 - (i32.sub - (local.get $i53) - (local.get $i31) - ) - ) - (i32.store - (i32.const 188) - (local.get $i43) - ) - (local.set $i53 - (i32.load - (i32.const 200) - ) - ) - (local.set $i44 - (i32.add - (local.get $i53) - (local.get $i31) - ) - ) - (i32.store - (i32.const 200) - (local.get $i44) - ) - (i32.store - (i32.add - (local.get $i44) - (i32.const 4) - ) - (i32.or - (local.get $i43) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i53) - (i32.const 4) - ) - (i32.or - (local.get $i31) - (i32.const 3) - ) - ) - (local.set $i13 - (i32.add - (local.get $i53) - (i32.const 8) - ) - ) - (return - (local.get $i13) - ) - ) - ) - (block $do-once29 - (if - (i32.eqz - (i32.load - (i32.const 648) - ) - ) - (block - (local.set $i53 - (call $_sysconf - (i32.const 30) - ) - ) - (if - (i32.eqz - (i32.and - (i32.add - (local.get $i53) - (i32.const -1) - ) - (local.get $i53) - ) - ) - (block - (i32.store - (i32.const 656) - (local.get $i53) - ) - (i32.store - (i32.const 652) - (local.get $i53) - ) - (i32.store - (i32.const 660) - (i32.const -1) - ) - (i32.store - (i32.const 664) - (i32.const -1) - ) - (i32.store - (i32.const 668) - (i32.const 0) - ) - (i32.store - (i32.const 620) - (i32.const 0) - ) - (i32.store - (i32.const 648) - (i32.xor - (i32.and - (call $_time - (i32.const 0) - ) - (i32.const -16) - ) - (i32.const 1431655768) - ) - ) - (br $do-once29) - ) - (call $_abort) - ) - ) - ) - ) - (local.set $i53 - (i32.add - (local.get $i31) - (i32.const 48) - ) - ) - (local.set $i43 - (i32.load - (i32.const 656) - ) - ) - (local.set $i44 - (i32.add - (local.get $i31) - (i32.const 47) - ) - ) - (local.set $i55 - (i32.add - (local.get $i43) - (local.get $i44) - ) - ) - (local.set $i54 - (i32.sub - (i32.const 0) - (local.get $i43) - ) - ) - (local.set $i43 - (i32.and - (local.get $i55) - (local.get $i54) - ) - ) - (if - (i32.le_u - (local.get $i43) - (local.get $i31) - ) - (block - (local.set $i13 - (i32.const 0) - ) - (return - (local.get $i13) - ) - ) - ) - (local.set $i52 - (i32.load - (i32.const 616) - ) - ) - (if - (if (result i32) - (i32.ne - (local.get $i52) - (i32.const 0) - ) - (block (result i32) - (local.set $i51 - (i32.load - (i32.const 608) - ) - ) - (block (result i32) - (local.set $i50 - (i32.add - (local.get $i51) - (local.get $i43) - ) - ) - (i32.or - (i32.le_u - (local.get $i50) - (local.get $i51) - ) - (i32.gt_u - (local.get $i50) - (local.get $i52) - ) - ) - ) - ) - (i32.const 0) - ) - (block - (local.set $i13 - (i32.const 0) - ) - (return - (local.get $i13) - ) - ) - ) - (block $label$break$L257 - (if - (i32.eqz - (i32.and - (i32.load - (i32.const 620) - ) - (i32.const 4) - ) - ) - (block - (local.set $i52 - (i32.load - (i32.const 200) - ) - ) - (block $label$break$L259 - (if - (local.get $i52) - (block - (local.set $i50 - (i32.const 624) - ) - (loop $while-in34 - (block $while-out33 - (local.set $i51 - (i32.load - (local.get $i50) - ) - ) - (if - (if (result i32) - (i32.le_u - (local.get $i51) - (local.get $i52) - ) - (block (result i32) - (local.set $i45 - (i32.add - (local.get $i50) - (i32.const 4) - ) - ) - (i32.gt_u - (i32.add - (local.get $i51) - (i32.load - (local.get $i45) - ) - ) - (local.get $i52) - ) - ) - (i32.const 0) - ) - (block - (local.set $i56 - (local.get $i50) - ) - (local.set $i57 - (local.get $i45) - ) - (br $while-out33) - ) - ) - (local.set $i50 - (i32.load - (i32.add - (local.get $i50) - (i32.const 8) - ) - ) - ) - (if - (i32.eqz - (local.get $i50) - ) - (block - (local.set $i36 - (i32.const 173) - ) - (br $label$break$L259) - ) - ) - (br $while-in34) - ) - ) - (local.set $i50 - (i32.and - (i32.sub - (local.get $i55) - (i32.load - (i32.const 188) - ) - ) - (local.get $i54) - ) - ) - (if - (i32.lt_u - (local.get $i50) - (i32.const 2147483647) - ) - (block - (local.set $i45 - (call $_sbrk - (local.get $i50) - ) - ) - (if - (i32.eq - (local.get $i45) - (i32.add - (i32.load - (local.get $i56) - ) - (i32.load - (local.get $i57) - ) - ) - ) - (if - (i32.ne - (local.get $i45) - (i32.const -1) - ) - (block - (local.set $i58 - (local.get $i45) - ) - (local.set $i59 - (local.get $i50) - ) - (local.set $i36 - (i32.const 193) - ) - (br $label$break$L257) - ) - ) - (block - (local.set $i60 - (local.get $i45) - ) - (local.set $i61 - (local.get $i50) - ) - (local.set $i36 - (i32.const 183) - ) - ) - ) - ) - ) - ) - (local.set $i36 - (i32.const 173) - ) - ) - ) - (block $do-once35 - (if - (if (result i32) - (i32.eq - (local.get $i36) - (i32.const 173) - ) - (block (result i32) - (local.set $i52 - (call $_sbrk - (i32.const 0) - ) - ) - (i32.ne - (local.get $i52) - (i32.const -1) - ) - ) - (i32.const 0) - ) - (block - (local.set $i5 - (local.get $i52) - ) - (local.set $i50 - (i32.load - (i32.const 652) - ) - ) - (local.set $i45 - (i32.add - (local.get $i50) - (i32.const -1) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $i45) - (local.get $i5) - ) - ) - (local.set $i62 - (local.get $i43) - ) - (local.set $i62 - (i32.add - (i32.sub - (local.get $i43) - (local.get $i5) - ) - (i32.and - (i32.add - (local.get $i45) - (local.get $i5) - ) - (i32.sub - (i32.const 0) - (local.get $i50) - ) - ) - ) - ) - ) - (local.set $i50 - (i32.load - (i32.const 608) - ) - ) - (local.set $i5 - (i32.add - (local.get $i50) - (local.get $i62) - ) - ) - (if - (i32.and - (i32.gt_u - (local.get $i62) - (local.get $i31) - ) - (i32.lt_u - (local.get $i62) - (i32.const 2147483647) - ) - ) - (block - (local.set $i45 - (i32.load - (i32.const 616) - ) - ) - (if - (if (result i32) - (i32.ne - (local.get $i45) - (i32.const 0) - ) - (i32.or - (i32.le_u - (local.get $i5) - (local.get $i50) - ) - (i32.gt_u - (local.get $i5) - (local.get $i45) - ) - ) - (i32.const 0) - ) - (br $do-once35) - ) - (local.set $i45 - (call $_sbrk - (local.get $i62) - ) - ) - (if - (i32.eq - (local.get $i45) - (local.get $i52) - ) - (block - (local.set $i58 - (local.get $i52) - ) - (local.set $i59 - (local.get $i62) - ) - (local.set $i36 - (i32.const 193) - ) - (br $label$break$L257) - ) - (block - (local.set $i60 - (local.get $i45) - ) - (local.set $i61 - (local.get $i62) - ) - (local.set $i36 - (i32.const 183) - ) - ) - ) - ) - ) - ) - ) - ) - (block $label$break$L279 - (if - (i32.eq - (local.get $i36) - (i32.const 183) - ) - (block - (local.set $i45 - (i32.sub - (i32.const 0) - (local.get $i61) - ) - ) - (block $do-once38 - (if - (if (result i32) - (i32.and - (i32.gt_u - (local.get $i53) - (local.get $i61) - ) - (i32.and - (i32.lt_u - (local.get $i61) - (i32.const 2147483647) - ) - (i32.ne - (local.get $i60) - (i32.const -1) - ) - ) - ) - (block (result i32) - (local.set $i52 - (i32.load - (i32.const 656) - ) - ) - (block (result i32) - (local.set $i5 - (i32.and - (i32.add - (i32.sub - (local.get $i44) - (local.get $i61) - ) - (local.get $i52) - ) - (i32.sub - (i32.const 0) - (local.get $i52) - ) - ) - ) - (i32.lt_u - (local.get $i5) - (i32.const 2147483647) - ) - ) - ) - (i32.const 0) - ) - (if - (i32.eq - (call $_sbrk - (local.get $i5) - ) - (i32.const -1) - ) - (block - (drop - (call $_sbrk - (local.get $i45) - ) - ) - (br $label$break$L279) - ) - (block - (local.set $i63 - (i32.add - (local.get $i5) - (local.get $i61) - ) - ) - (br $do-once38) - ) - ) - (local.set $i63 - (local.get $i61) - ) - ) - ) - (if - (i32.ne - (local.get $i60) - (i32.const -1) - ) - (block - (local.set $i58 - (local.get $i60) - ) - (local.set $i59 - (local.get $i63) - ) - (local.set $i36 - (i32.const 193) - ) - (br $label$break$L257) - ) - ) - ) - ) - ) - (i32.store - (i32.const 620) - (i32.or - (i32.load - (i32.const 620) - ) - (i32.const 4) - ) - ) - (local.set $i36 - (i32.const 190) - ) - ) - (local.set $i36 - (i32.const 190) - ) - ) - ) - (if - (if (result i32) - (if (result i32) - (if (result i32) - (i32.eq - (local.get $i36) - (i32.const 190) - ) - (i32.lt_u - (local.get $i43) - (i32.const 2147483647) - ) - (i32.const 0) - ) - (block (result i32) - (local.set $i63 - (call $_sbrk - (local.get $i43) - ) - ) - (block (result i32) - (local.set $i43 - (call $_sbrk - (i32.const 0) - ) - ) - (i32.and - (i32.lt_u - (local.get $i63) - (local.get $i43) - ) - (i32.and - (i32.ne - (local.get $i63) - (i32.const -1) - ) - (i32.ne - (local.get $i43) - (i32.const -1) - ) - ) - ) - ) - ) - (i32.const 0) - ) - (block (result i32) - (local.set $i60 - (i32.sub - (local.get $i43) - (local.get $i63) - ) - ) - (i32.gt_u - (local.get $i60) - (i32.add - (local.get $i31) - (i32.const 40) - ) - ) - ) - (i32.const 0) - ) - (block - (local.set $i58 - (local.get $i63) - ) - (local.set $i59 - (local.get $i60) - ) - (local.set $i36 - (i32.const 193) - ) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 193) - ) - (block - (local.set $i60 - (i32.add - (i32.load - (i32.const 608) - ) - (local.get $i59) - ) - ) - (i32.store - (i32.const 608) - (local.get $i60) - ) - (if - (i32.gt_u - (local.get $i60) - (i32.load - (i32.const 612) - ) - ) - (i32.store - (i32.const 612) - (local.get $i60) - ) - ) - (local.set $i60 - (i32.load - (i32.const 200) - ) - ) - (block $do-once40 - (if - (local.get $i60) - (block - (local.set $i63 - (i32.const 624) - ) - (loop $do-in - (block $do-out - (local.set $i43 - (i32.load - (local.get $i63) - ) - ) - (local.set $i61 - (i32.add - (local.get $i63) - (i32.const 4) - ) - ) - (local.set $i44 - (i32.load - (local.get $i61) - ) - ) - (if - (i32.eq - (local.get $i58) - (i32.add - (local.get $i43) - (local.get $i44) - ) - ) - (block - (local.set $i64 - (local.get $i43) - ) - (local.set $i65 - (local.get $i61) - ) - (local.set $i66 - (local.get $i44) - ) - (local.set $i67 - (local.get $i63) - ) - (local.set $i36 - (i32.const 203) - ) - (br $do-out) - ) - ) - (local.set $i63 - (i32.load - (i32.add - (local.get $i63) - (i32.const 8) - ) - ) - ) - (br_if $do-in - (i32.ne - (local.get $i63) - (i32.const 0) - ) - ) - ) - ) - (if - (if (result i32) - (if (result i32) - (i32.eq - (local.get $i36) - (i32.const 203) - ) - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $i67) - (i32.const 12) - ) - ) - (i32.const 8) - ) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.and - (i32.lt_u - (local.get $i60) - (local.get $i58) - ) - (i32.ge_u - (local.get $i60) - (local.get $i64) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (local.get $i65) - (i32.add - (local.get $i66) - (local.get $i59) - ) - ) - (local.set $i63 - (i32.add - (local.get $i60) - (i32.const 8) - ) - ) - (local.set $i44 - (if (result i32) - (i32.eq - (i32.and - (local.get $i63) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $i63) - ) - (i32.const 7) - ) - ) - ) - (local.set $i63 - (i32.add - (local.get $i60) - (local.get $i44) - ) - ) - (local.set $i61 - (i32.add - (i32.sub - (local.get $i59) - (local.get $i44) - ) - (i32.load - (i32.const 188) - ) - ) - ) - (i32.store - (i32.const 200) - (local.get $i63) - ) - (i32.store - (i32.const 188) - (local.get $i61) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 4) - ) - (i32.or - (local.get $i61) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (i32.add - (local.get $i63) - (local.get $i61) - ) - (i32.const 4) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - (br $do-once40) - ) - ) - (local.set $i61 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i58) - (local.get $i61) - ) - (block - (i32.store - (i32.const 192) - (local.get $i58) - ) - (local.set $i68 - (local.get $i58) - ) - ) - (local.set $i68 - (local.get $i61) - ) - ) - (local.set $i61 - (i32.add - (local.get $i58) - (local.get $i59) - ) - ) - (local.set $i63 - (i32.const 624) - ) - (loop $while-in43 - (block $while-out42 - (if - (i32.eq - (i32.load - (local.get $i63) - ) - (local.get $i61) - ) - (block - (local.set $i69 - (local.get $i63) - ) - (local.set $i70 - (local.get $i63) - ) - (local.set $i36 - (i32.const 211) - ) - (br $while-out42) - ) - ) - (local.set $i63 - (i32.load - (i32.add - (local.get $i63) - (i32.const 8) - ) - ) - ) - (if - (i32.eqz - (local.get $i63) - ) - (block - (local.set $i71 - (i32.const 624) - ) - (br $while-out42) - ) - ) - (br $while-in43) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 211) - ) - (if - (i32.eqz - (i32.and - (i32.load - (i32.add - (local.get $i70) - (i32.const 12) - ) - ) - (i32.const 8) - ) - ) - (block - (i32.store - (local.get $i69) - (local.get $i58) - ) - (local.set $i63 - (i32.add - (local.get $i70) - (i32.const 4) - ) - ) - (i32.store - (local.get $i63) - (i32.add - (i32.load - (local.get $i63) - ) - (local.get $i59) - ) - ) - (local.set $i63 - (i32.add - (local.get $i58) - (i32.const 8) - ) - ) - (local.set $i44 - (i32.add - (local.get $i58) - (if (result i32) - (i32.eq - (i32.and - (local.get $i63) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $i63) - ) - (i32.const 7) - ) - ) - ) - ) - (local.set $i63 - (i32.add - (local.get $i61) - (i32.const 8) - ) - ) - (local.set $i43 - (i32.add - (local.get $i61) - (if (result i32) - (i32.eq - (i32.and - (local.get $i63) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $i63) - ) - (i32.const 7) - ) - ) - ) - ) - (local.set $i63 - (i32.add - (local.get $i44) - (local.get $i31) - ) - ) - (local.set $i53 - (i32.sub - (i32.sub - (local.get $i43) - (local.get $i44) - ) - (local.get $i31) - ) - ) - (i32.store - (i32.add - (local.get $i44) - (i32.const 4) - ) - (i32.or - (local.get $i31) - (i32.const 3) - ) - ) - (block $do-once44 - (if - (i32.ne - (local.get $i43) - (local.get $i60) - ) - (block - (if - (i32.eq - (local.get $i43) - (i32.load - (i32.const 196) - ) - ) - (block - (local.set $i62 - (i32.add - (i32.load - (i32.const 184) - ) - (local.get $i53) - ) - ) - (i32.store - (i32.const 184) - (local.get $i62) - ) - (i32.store - (i32.const 196) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 4) - ) - (i32.or - (local.get $i62) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i63) - (local.get $i62) - ) - (local.get $i62) - ) - (br $do-once44) - ) - ) - (local.set $i62 - (i32.load - (i32.add - (local.get $i43) - (i32.const 4) - ) - ) - ) - (if - (i32.eq - (i32.and - (local.get $i62) - (i32.const 3) - ) - (i32.const 1) - ) - (block - (local.set $i57 - (i32.and - (local.get $i62) - (i32.const -8) - ) - ) - (local.set $i56 - (i32.shr_u - (local.get $i62) - (i32.const 3) - ) - ) - (block $label$break$L331 - (if - (i32.ge_u - (local.get $i62) - (i32.const 256) - ) - (block - (local.set $i54 - (i32.load - (i32.add - (local.get $i43) - (i32.const 24) - ) - ) - ) - (local.set $i55 - (i32.load - (i32.add - (local.get $i43) - (i32.const 12) - ) - ) - ) - (block $do-once47 - (if - (i32.eq - (local.get $i55) - (local.get $i43) - ) - (block - (local.set $i45 - (i32.add - (local.get $i43) - (i32.const 16) - ) - ) - (local.set $i5 - (i32.add - (local.get $i45) - (i32.const 4) - ) - ) - (local.set $i52 - (i32.load - (local.get $i5) - ) - ) - (if - (i32.eqz - (local.get $i52) - ) - (block - (local.set $i50 - (i32.load - (local.get $i45) - ) - ) - (if - (i32.eqz - (local.get $i50) - ) - (block - (local.set $i72 - (i32.const 0) - ) - (br $do-once47) - ) - (block - (local.set $i73 - (local.get $i50) - ) - (local.set $i74 - (local.get $i45) - ) - ) - ) - ) - (block - (local.set $i73 - (local.get $i52) - ) - (local.set $i74 - (local.get $i5) - ) - ) - ) - (loop $while-in50 - (block $while-out49 - (local.set $i5 - (i32.add - (local.get $i73) - (i32.const 20) - ) - ) - (local.set $i52 - (i32.load - (local.get $i5) - ) - ) - (if - (local.get $i52) - (block - (local.set $i73 - (local.get $i52) - ) - (local.set $i74 - (local.get $i5) - ) - (br $while-in50) - ) - ) - (local.set $i5 - (i32.add - (local.get $i73) - (i32.const 16) - ) - ) - (local.set $i52 - (i32.load - (local.get $i5) - ) - ) - (if - (i32.eqz - (local.get $i52) - ) - (block - (local.set $i75 - (local.get $i73) - ) - (local.set $i76 - (local.get $i74) - ) - (br $while-out49) - ) - (block - (local.set $i73 - (local.get $i52) - ) - (local.set $i74 - (local.get $i5) - ) - ) - ) - (br $while-in50) - ) - ) - (if - (i32.lt_u - (local.get $i76) - (local.get $i68) - ) - (call $_abort) - (block - (i32.store - (local.get $i76) - (i32.const 0) - ) - (local.set $i72 - (local.get $i75) - ) - (br $do-once47) - ) - ) - ) - (block - (local.set $i5 - (i32.load - (i32.add - (local.get $i43) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $i5) - (local.get $i68) - ) - (call $_abort) - ) - (local.set $i52 - (i32.add - (local.get $i5) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $i52) - ) - (local.get $i43) - ) - (call $_abort) - ) - (local.set $i45 - (i32.add - (local.get $i55) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i45) - ) - (local.get $i43) - ) - (block - (i32.store - (local.get $i52) - (local.get $i55) - ) - (i32.store - (local.get $i45) - (local.get $i5) - ) - (local.set $i72 - (local.get $i55) - ) - (br $do-once47) - ) - (call $_abort) - ) - ) - ) - ) - (if - (i32.eqz - (local.get $i54) - ) - (br $label$break$L331) - ) - (local.set $i55 - (i32.load - (i32.add - (local.get $i43) - (i32.const 28) - ) - ) - ) - (local.set $i5 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i55) - (i32.const 2) - ) - ) - ) - (block $do-once51 - (if - (i32.ne - (local.get $i43) - (i32.load - (local.get $i5) - ) - ) - (block - (if - (i32.lt_u - (local.get $i54) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i45 - (i32.add - (local.get $i54) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i45) - ) - (local.get $i43) - ) - (i32.store - (local.get $i45) - (local.get $i72) - ) - (i32.store - (i32.add - (local.get $i54) - (i32.const 20) - ) - (local.get $i72) - ) - ) - (if - (i32.eqz - (local.get $i72) - ) - (br $label$break$L331) - ) - ) - (block - (i32.store - (local.get $i5) - (local.get $i72) - ) - (if - (local.get $i72) - (br $do-once51) - ) - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i55) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$L331) - ) - ) - ) - (local.set $i55 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i72) - (local.get $i55) - ) - (call $_abort) - ) - (i32.store - (i32.add - (local.get $i72) - (i32.const 24) - ) - (local.get $i54) - ) - (local.set $i5 - (i32.add - (local.get $i43) - (i32.const 16) - ) - ) - (local.set $i45 - (i32.load - (local.get $i5) - ) - ) - (block $do-once53 - (if - (local.get $i45) - (if - (i32.lt_u - (local.get $i45) - (local.get $i55) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i72) - (i32.const 16) - ) - (local.get $i45) - ) - (i32.store - (i32.add - (local.get $i45) - (i32.const 24) - ) - (local.get $i72) - ) - (br $do-once53) - ) - ) - ) - ) - (local.set $i45 - (i32.load - (i32.add - (local.get $i5) - (i32.const 4) - ) - ) - ) - (if - (i32.eqz - (local.get $i45) - ) - (br $label$break$L331) - ) - (if - (i32.lt_u - (local.get $i45) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i72) - (i32.const 20) - ) - (local.get $i45) - ) - (i32.store - (i32.add - (local.get $i45) - (i32.const 24) - ) - (local.get $i72) - ) - (br $label$break$L331) - ) - ) - ) - (block - (local.set $i45 - (i32.load - (i32.add - (local.get $i43) - (i32.const 8) - ) - ) - ) - (local.set $i55 - (i32.load - (i32.add - (local.get $i43) - (i32.const 12) - ) - ) - ) - (local.set $i54 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i56) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (block $do-once55 - (if - (i32.ne - (local.get $i45) - (local.get $i54) - ) - (block - (if - (i32.lt_u - (local.get $i45) - (local.get $i68) - ) - (call $_abort) - ) - (if - (i32.eq - (i32.load - (i32.add - (local.get $i45) - (i32.const 12) - ) - ) - (local.get $i43) - ) - (br $do-once55) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (local.get $i55) - (local.get $i45) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i56) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$L331) - ) - ) - (block $do-once57 - (if - (i32.eq - (local.get $i55) - (local.get $i54) - ) - (local.set $i77 - (i32.add - (local.get $i55) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $i55) - (local.get $i68) - ) - (call $_abort) - ) - (local.set $i5 - (i32.add - (local.get $i55) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i5) - ) - (local.get $i43) - ) - (block - (local.set $i77 - (local.get $i5) - ) - (br $do-once57) - ) - ) - (call $_abort) - ) - ) - ) - (i32.store - (i32.add - (local.get $i45) - (i32.const 12) - ) - (local.get $i55) - ) - (i32.store - (local.get $i77) - (local.get $i45) - ) - ) - ) - ) - (local.set $i78 - (i32.add - (local.get $i43) - (local.get $i57) - ) - ) - (local.set $i79 - (i32.add - (local.get $i57) - (local.get $i53) - ) - ) - ) - (block - (local.set $i78 - (local.get $i43) - ) - (local.set $i79 - (local.get $i53) - ) - ) - ) - (local.set $i56 - (i32.add - (local.get $i78) - (i32.const 4) - ) - ) - (i32.store - (local.get $i56) - (i32.and - (i32.load - (local.get $i56) - ) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 4) - ) - (i32.or - (local.get $i79) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i63) - (local.get $i79) - ) - (local.get $i79) - ) - (local.set $i56 - (i32.shr_u - (local.get $i79) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $i79) - (i32.const 256) - ) - (block - (local.set $i62 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i56) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i54 - (i32.load - (i32.const 176) - ) - ) - (local.set $i5 - (i32.shl - (i32.const 1) - (local.get $i56) - ) - ) - (block $do-once59 - (if - (i32.eqz - (i32.and - (local.get $i54) - (local.get $i5) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $i54) - (local.get $i5) - ) - ) - (local.set $i80 - (i32.add - (local.get $i62) - (i32.const 8) - ) - ) - (local.set $i81 - (local.get $i62) - ) - ) - (block - (local.set $i56 - (i32.add - (local.get $i62) - (i32.const 8) - ) - ) - (local.set $i52 - (i32.load - (local.get $i56) - ) - ) - (if - (i32.ge_u - (local.get $i52) - (i32.load - (i32.const 192) - ) - ) - (block - (local.set $i80 - (local.get $i56) - ) - (local.set $i81 - (local.get $i52) - ) - (br $do-once59) - ) - ) - (call $_abort) - ) - ) - ) - (i32.store - (local.get $i80) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i81) - (i32.const 12) - ) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 8) - ) - (local.get $i81) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 12) - ) - (local.get $i62) - ) - (br $do-once44) - ) - ) - (local.set $i5 - (i32.shr_u - (local.get $i79) - (i32.const 8) - ) - ) - (block $do-once61 - (if - (i32.eqz - (local.get $i5) - ) - (local.set $i82 - (i32.const 0) - ) - (block - (if - (i32.gt_u - (local.get $i79) - (i32.const 16777215) - ) - (block - (local.set $i82 - (i32.const 31) - ) - (br $do-once61) - ) - ) - (local.set $i54 - (i32.and - (i32.shr_u - (i32.add - (local.get $i5) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $i57 - (i32.shl - (local.get $i5) - (local.get $i54) - ) - ) - (local.set $i52 - (i32.and - (i32.shr_u - (i32.add - (local.get $i57) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $i56 - (i32.shl - (local.get $i57) - (local.get $i52) - ) - ) - (local.set $i57 - (i32.and - (i32.shr_u - (i32.add - (local.get $i56) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $i50 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $i52) - (local.get $i54) - ) - (local.get $i57) - ) - ) - (i32.shr_u - (i32.shl - (local.get $i56) - (local.get $i57) - ) - (i32.const 15) - ) - ) - ) - (local.set $i82 - (i32.or - (i32.and - (i32.shr_u - (local.get $i79) - (i32.add - (local.get $i50) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $i50) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.set $i5 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i82) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 28) - ) - (local.get $i82) - ) - (local.set $i62 - (i32.add - (local.get $i63) - (i32.const 16) - ) - ) - (i32.store - (i32.add - (local.get $i62) - (i32.const 4) - ) - (i32.const 0) - ) - (i32.store - (local.get $i62) - (i32.const 0) - ) - (local.set $i62 - (i32.load - (i32.const 180) - ) - ) - (local.set $i50 - (i32.shl - (i32.const 1) - (local.get $i82) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $i62) - (local.get $i50) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $i62) - (local.get $i50) - ) - ) - (i32.store - (local.get $i5) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 24) - ) - (local.get $i5) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 12) - ) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 8) - ) - (local.get $i63) - ) - (br $do-once44) - ) - ) - (local.set $i50 - (i32.shl - (local.get $i79) - (if (result i32) - (i32.eq - (local.get $i82) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $i82) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i62 - (i32.load - (local.get $i5) - ) - ) - (loop $while-in64 - (block $while-out63 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $i62) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $i79) - ) - (block - (local.set $i83 - (local.get $i62) - ) - (local.set $i36 - (i32.const 281) - ) - (br $while-out63) - ) - ) - (local.set $i5 - (i32.add - (i32.add - (local.get $i62) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $i50) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $i57 - (i32.load - (local.get $i5) - ) - ) - (if - (i32.eqz - (local.get $i57) - ) - (block - (local.set $i84 - (local.get $i5) - ) - (local.set $i85 - (local.get $i62) - ) - (local.set $i36 - (i32.const 278) - ) - (br $while-out63) - ) - (block - (local.set $i50 - (i32.shl - (local.get $i50) - (i32.const 1) - ) - ) - (local.set $i62 - (local.get $i57) - ) - ) - ) - (br $while-in64) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 278) - ) - (if - (i32.lt_u - (local.get $i84) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $i84) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 24) - ) - (local.get $i85) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 12) - ) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 8) - ) - (local.get $i63) - ) - (br $do-once44) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 281) - ) - (block - (local.set $i62 - (i32.add - (local.get $i83) - (i32.const 8) - ) - ) - (local.set $i50 - (i32.load - (local.get $i62) - ) - ) - (local.set $i57 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $i50) - (local.get $i57) - ) - (i32.ge_u - (local.get $i83) - (local.get $i57) - ) - ) - (block - (i32.store - (i32.add - (local.get $i50) - (i32.const 12) - ) - (local.get $i63) - ) - (i32.store - (local.get $i62) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 8) - ) - (local.get $i50) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 12) - ) - (local.get $i83) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once44) - ) - (call $_abort) - ) - ) - ) - ) - ) - (block - (local.set $i50 - (i32.add - (i32.load - (i32.const 188) - ) - (local.get $i53) - ) - ) - (i32.store - (i32.const 188) - (local.get $i50) - ) - (i32.store - (i32.const 200) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 4) - ) - (i32.or - (local.get $i50) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i13 - (i32.add - (local.get $i44) - (i32.const 8) - ) - ) - (return - (local.get $i13) - ) - ) - (local.set $i71 - (i32.const 624) - ) - ) - ) - (loop $while-in66 - (block $while-out65 - (local.set $i63 - (i32.load - (local.get $i71) - ) - ) - (if - (if (result i32) - (i32.le_u - (local.get $i63) - (local.get $i60) - ) - (block (result i32) - (local.set $i53 - (i32.add - (local.get $i63) - (i32.load - (i32.add - (local.get $i71) - (i32.const 4) - ) - ) - ) - ) - (i32.gt_u - (local.get $i53) - (local.get $i60) - ) - ) - (i32.const 0) - ) - (block - (local.set $i86 - (local.get $i53) - ) - (br $while-out65) - ) - ) - (local.set $i71 - (i32.load - (i32.add - (local.get $i71) - (i32.const 8) - ) - ) - ) - (br $while-in66) - ) - ) - (local.set $i44 - (i32.add - (local.get $i86) - (i32.const -47) - ) - ) - (local.set $i53 - (i32.add - (local.get $i44) - (i32.const 8) - ) - ) - (local.set $i63 - (i32.add - (local.get $i44) - (if (result i32) - (i32.eq - (i32.and - (local.get $i53) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $i53) - ) - (i32.const 7) - ) - ) - ) - ) - (local.set $i53 - (i32.add - (local.get $i60) - (i32.const 16) - ) - ) - (local.set $i44 - (if (result i32) - (i32.lt_u - (local.get $i63) - (local.get $i53) - ) - (local.get $i60) - (local.get $i63) - ) - ) - (local.set $i63 - (i32.add - (local.get $i44) - (i32.const 8) - ) - ) - (local.set $i43 - (i32.add - (local.get $i58) - (i32.const 8) - ) - ) - (local.set $i61 - (if (result i32) - (i32.eq - (i32.and - (local.get $i43) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $i43) - ) - (i32.const 7) - ) - ) - ) - (local.set $i43 - (i32.add - (local.get $i58) - (local.get $i61) - ) - ) - (local.set $i50 - (i32.sub - (i32.add - (local.get $i59) - (i32.const -40) - ) - (local.get $i61) - ) - ) - (i32.store - (i32.const 200) - (local.get $i43) - ) - (i32.store - (i32.const 188) - (local.get $i50) - ) - (i32.store - (i32.add - (local.get $i43) - (i32.const 4) - ) - (i32.or - (local.get $i50) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (i32.add - (local.get $i43) - (local.get $i50) - ) - (i32.const 4) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - (local.set $i50 - (i32.add - (local.get $i44) - (i32.const 4) - ) - ) - (i32.store - (local.get $i50) - (i32.const 27) - ) - (i32.store - (local.get $i63) - (i32.load - (i32.const 624) - ) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 4) - ) - (i32.load - (i32.const 628) - ) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 8) - ) - (i32.load - (i32.const 632) - ) - ) - (i32.store - (i32.add - (local.get $i63) - (i32.const 12) - ) - (i32.load - (i32.const 636) - ) - ) - (i32.store - (i32.const 624) - (local.get $i58) - ) - (i32.store - (i32.const 628) - (local.get $i59) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (i32.store - (i32.const 632) - (local.get $i63) - ) - (local.set $i63 - (i32.add - (local.get $i44) - (i32.const 24) - ) - ) - (loop $do-in68 - (block $do-out67 - (local.set $i63 - (i32.add - (local.get $i63) - (i32.const 4) - ) - ) - (i32.store - (local.get $i63) - (i32.const 7) - ) - (br_if $do-in68 - (i32.lt_u - (i32.add - (local.get $i63) - (i32.const 4) - ) - (local.get $i86) - ) - ) - ) - ) - (if - (i32.ne - (local.get $i44) - (local.get $i60) - ) - (block - (local.set $i63 - (i32.sub - (local.get $i44) - (local.get $i60) - ) - ) - (i32.store - (local.get $i50) - (i32.and - (i32.load - (local.get $i50) - ) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 4) - ) - (i32.or - (local.get $i63) - (i32.const 1) - ) - ) - (i32.store - (local.get $i44) - (local.get $i63) - ) - (local.set $i43 - (i32.shr_u - (local.get $i63) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $i63) - (i32.const 256) - ) - (block - (local.set $i61 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i43) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i62 - (i32.load - (i32.const 176) - ) - ) - (local.set $i57 - (i32.shl - (i32.const 1) - (local.get $i43) - ) - ) - (if - (i32.and - (local.get $i62) - (local.get $i57) - ) - (block - (local.set $i43 - (i32.add - (local.get $i61) - (i32.const 8) - ) - ) - (local.set $i5 - (i32.load - (local.get $i43) - ) - ) - (if - (i32.lt_u - (local.get $i5) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $i87 - (local.get $i43) - ) - (local.set $i88 - (local.get $i5) - ) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $i62) - (local.get $i57) - ) - ) - (local.set $i87 - (i32.add - (local.get $i61) - (i32.const 8) - ) - ) - (local.set $i88 - (local.get $i61) - ) - ) - ) - (i32.store - (local.get $i87) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i88) - (i32.const 12) - ) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 8) - ) - (local.get $i88) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 12) - ) - (local.get $i61) - ) - (br $do-once40) - ) - ) - (local.set $i61 - (i32.shr_u - (local.get $i63) - (i32.const 8) - ) - ) - (if - (local.get $i61) - (if - (i32.gt_u - (local.get $i63) - (i32.const 16777215) - ) - (local.set $i89 - (i32.const 31) - ) - (block - (local.set $i57 - (i32.and - (i32.shr_u - (i32.add - (local.get $i61) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $i62 - (i32.shl - (local.get $i61) - (local.get $i57) - ) - ) - (local.set $i61 - (i32.and - (i32.shr_u - (i32.add - (local.get $i62) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $i5 - (i32.shl - (local.get $i62) - (local.get $i61) - ) - ) - (local.set $i62 - (i32.and - (i32.shr_u - (i32.add - (local.get $i5) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $i43 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $i61) - (local.get $i57) - ) - (local.get $i62) - ) - ) - (i32.shr_u - (i32.shl - (local.get $i5) - (local.get $i62) - ) - (i32.const 15) - ) - ) - ) - (local.set $i89 - (i32.or - (i32.and - (i32.shr_u - (local.get $i63) - (i32.add - (local.get $i43) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $i43) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i89 - (i32.const 0) - ) - ) - (local.set $i43 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i89) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 28) - ) - (local.get $i89) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 20) - ) - (i32.const 0) - ) - (i32.store - (local.get $i53) - (i32.const 0) - ) - (local.set $i62 - (i32.load - (i32.const 180) - ) - ) - (local.set $i5 - (i32.shl - (i32.const 1) - (local.get $i89) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $i62) - (local.get $i5) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $i62) - (local.get $i5) - ) - ) - (i32.store - (local.get $i43) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 24) - ) - (local.get $i43) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 12) - ) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 8) - ) - (local.get $i60) - ) - (br $do-once40) - ) - ) - (local.set $i5 - (i32.shl - (local.get $i63) - (if (result i32) - (i32.eq - (local.get $i89) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $i89) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i62 - (i32.load - (local.get $i43) - ) - ) - (loop $while-in70 - (block $while-out69 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $i62) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $i63) - ) - (block - (local.set $i90 - (local.get $i62) - ) - (local.set $i36 - (i32.const 307) - ) - (br $while-out69) - ) - ) - (local.set $i43 - (i32.add - (i32.add - (local.get $i62) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $i5) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $i57 - (i32.load - (local.get $i43) - ) - ) - (if - (i32.eqz - (local.get $i57) - ) - (block - (local.set $i91 - (local.get $i43) - ) - (local.set $i92 - (local.get $i62) - ) - (local.set $i36 - (i32.const 304) - ) - (br $while-out69) - ) - (block - (local.set $i5 - (i32.shl - (local.get $i5) - (i32.const 1) - ) - ) - (local.set $i62 - (local.get $i57) - ) - ) - ) - (br $while-in70) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 304) - ) - (if - (i32.lt_u - (local.get $i91) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $i91) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 24) - ) - (local.get $i92) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 12) - ) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 8) - ) - (local.get $i60) - ) - (br $do-once40) - ) - ) - (if - (i32.eq - (local.get $i36) - (i32.const 307) - ) - (block - (local.set $i62 - (i32.add - (local.get $i90) - (i32.const 8) - ) - ) - (local.set $i5 - (i32.load - (local.get $i62) - ) - ) - (local.set $i63 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $i5) - (local.get $i63) - ) - (i32.ge_u - (local.get $i90) - (local.get $i63) - ) - ) - (block - (i32.store - (i32.add - (local.get $i5) - (i32.const 12) - ) - (local.get $i60) - ) - (i32.store - (local.get $i62) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 8) - ) - (local.get $i5) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 12) - ) - (local.get $i90) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once40) - ) - (call $_abort) - ) - ) - ) - ) - ) - ) - ) - (block - (local.set $i5 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.or - (i32.eq - (local.get $i5) - (i32.const 0) - ) - (i32.lt_u - (local.get $i58) - (local.get $i5) - ) - ) - (i32.store - (i32.const 192) - (local.get $i58) - ) - ) - (i32.store - (i32.const 624) - (local.get $i58) - ) - (i32.store - (i32.const 628) - (local.get $i59) - ) - (i32.store - (i32.const 636) - (i32.const 0) - ) - (i32.store - (i32.const 212) - (i32.load - (i32.const 648) - ) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - (local.set $i5 - (i32.const 0) - ) - (loop $do-in72 - (block $do-out71 - (local.set $i62 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i5) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $i62) - (i32.const 12) - ) - (local.get $i62) - ) - (i32.store - (i32.add - (local.get $i62) - (i32.const 8) - ) - (local.get $i62) - ) - (local.set $i5 - (i32.add - (local.get $i5) - (i32.const 1) - ) - ) - (br_if $do-in72 - (i32.ne - (local.get $i5) - (i32.const 32) - ) - ) - ) - ) - (local.set $i5 - (i32.add - (local.get $i58) - (i32.const 8) - ) - ) - (local.set $i62 - (if (result i32) - (i32.eq - (i32.and - (local.get $i5) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $i5) - ) - (i32.const 7) - ) - ) - ) - (local.set $i5 - (i32.add - (local.get $i58) - (local.get $i62) - ) - ) - (local.set $i63 - (i32.sub - (i32.add - (local.get $i59) - (i32.const -40) - ) - (local.get $i62) - ) - ) - (i32.store - (i32.const 200) - (local.get $i5) - ) - (i32.store - (i32.const 188) - (local.get $i63) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 4) - ) - (i32.or - (local.get $i63) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (i32.add - (local.get $i5) - (local.get $i63) - ) - (i32.const 4) - ) - (i32.const 40) - ) - (i32.store - (i32.const 204) - (i32.load - (i32.const 664) - ) - ) - ) - ) - ) - (local.set $i59 - (i32.load - (i32.const 188) - ) - ) - (if - (i32.gt_u - (local.get $i59) - (local.get $i31) - ) - (block - (local.set $i58 - (i32.sub - (local.get $i59) - (local.get $i31) - ) - ) - (i32.store - (i32.const 188) - (local.get $i58) - ) - (local.set $i59 - (i32.load - (i32.const 200) - ) - ) - (local.set $i60 - (i32.add - (local.get $i59) - (local.get $i31) - ) - ) - (i32.store - (i32.const 200) - (local.get $i60) - ) - (i32.store - (i32.add - (local.get $i60) - (i32.const 4) - ) - (i32.or - (local.get $i58) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i59) - (i32.const 4) - ) - (i32.or - (local.get $i31) - (i32.const 3) - ) - ) - (local.set $i13 - (i32.add - (local.get $i59) - (i32.const 8) - ) - ) - (return - (local.get $i13) - ) - ) - ) - ) - ) - (i32.store - (call $___errno_location) - (i32.const 12) - ) - (local.set $i13 - (i32.const 0) - ) - (return - (local.get $i13) - ) - ) - (func $_free (; 16 ;) (param $i1 i32) - (local $i2 i32) - (local $i3 i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local $i9 i32) - (local $i10 i32) - (local $i11 i32) - (local $i12 i32) - (local $i13 i32) - (local $i14 i32) - (local $i15 i32) - (local $i16 i32) - (local $i17 i32) - (local $i18 i32) - (local $i19 i32) - (local $i20 i32) - (local $i21 i32) - (local $i22 i32) - (local $i23 i32) - (local $i24 i32) - (local $i25 i32) - (local $i26 i32) - (local $i27 i32) - (local $i28 i32) - (local $i29 i32) - (local $i30 i32) - (local $i31 i32) - (local $i32 i32) - (local $i33 i32) - (local $i34 i32) - (local $i35 i32) - (local $i36 i32) - (local $i37 i32) - (if - (i32.eqz - (local.get $i1) - ) - (return) - ) - (local.set $i2 - (i32.add - (local.get $i1) - (i32.const -8) - ) - ) - (local.set $i3 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i2) - (local.get $i3) - ) - (call $_abort) - ) - (local.set $i4 - (i32.load - (i32.add - (local.get $i1) - (i32.const -4) - ) - ) - ) - (local.set $i1 - (i32.and - (local.get $i4) - (i32.const 3) - ) - ) - (if - (i32.eq - (local.get $i1) - (i32.const 1) - ) - (call $_abort) - ) - (local.set $i5 - (i32.and - (local.get $i4) - (i32.const -8) - ) - ) - (local.set $i6 - (i32.add - (local.get $i2) - (local.get $i5) - ) - ) - (block $do-once - (if - (i32.eqz - (i32.and - (local.get $i4) - (i32.const 1) - ) - ) - (block - (local.set $i7 - (i32.load - (local.get $i2) - ) - ) - (if - (i32.eqz - (local.get $i1) - ) - (return) - ) - (local.set $i8 - (i32.add - (local.get $i2) - (i32.sub - (i32.const 0) - (local.get $i7) - ) - ) - ) - (local.set $i9 - (i32.add - (local.get $i7) - (local.get $i5) - ) - ) - (if - (i32.lt_u - (local.get $i8) - (local.get $i3) - ) - (call $_abort) - ) - (if - (i32.eq - (local.get $i8) - (i32.load - (i32.const 196) - ) - ) - (block - (local.set $i10 - (i32.add - (local.get $i6) - (i32.const 4) - ) - ) - (local.set $i11 - (i32.load - (local.get $i10) - ) - ) - (if - (i32.ne - (i32.and - (local.get $i11) - (i32.const 3) - ) - (i32.const 3) - ) - (block - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - (br $do-once) - ) - ) - (i32.store - (i32.const 184) - (local.get $i9) - ) - (i32.store - (local.get $i10) - (i32.and - (local.get $i11) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 4) - ) - (i32.or - (local.get $i9) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i8) - (local.get $i9) - ) - (local.get $i9) - ) - (return) - ) - ) - (local.set $i11 - (i32.shr_u - (local.get $i7) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $i7) - (i32.const 256) - ) - (block - (local.set $i7 - (i32.load - (i32.add - (local.get $i8) - (i32.const 8) - ) - ) - ) - (local.set $i10 - (i32.load - (i32.add - (local.get $i8) - (i32.const 12) - ) - ) - ) - (local.set $i14 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i11) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (if - (i32.ne - (local.get $i7) - (local.get $i14) - ) - (block - (if - (i32.lt_u - (local.get $i7) - (local.get $i3) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load - (i32.add - (local.get $i7) - (i32.const 12) - ) - ) - (local.get $i8) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (local.get $i10) - (local.get $i7) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i11) - ) - (i32.const -1) - ) - ) - ) - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - (br $do-once) - ) - ) - (if - (i32.ne - (local.get $i10) - (local.get $i14) - ) - (block - (if - (i32.lt_u - (local.get $i10) - (local.get $i3) - ) - (call $_abort) - ) - (local.set $i14 - (i32.add - (local.get $i10) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i14) - ) - (local.get $i8) - ) - (local.set $i15 - (local.get $i14) - ) - (call $_abort) - ) - ) - (local.set $i15 - (i32.add - (local.get $i10) - (i32.const 8) - ) - ) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 12) - ) - (local.get $i10) - ) - (i32.store - (local.get $i15) - (local.get $i7) - ) - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - (br $do-once) - ) - ) - (local.set $i7 - (i32.load - (i32.add - (local.get $i8) - (i32.const 24) - ) - ) - ) - (local.set $i10 - (i32.load - (i32.add - (local.get $i8) - (i32.const 12) - ) - ) - ) - (block $do-once0 - (if - (i32.eq - (local.get $i10) - (local.get $i8) - ) - (block - (local.set $i14 - (i32.add - (local.get $i8) - (i32.const 16) - ) - ) - (local.set $i11 - (i32.add - (local.get $i14) - (i32.const 4) - ) - ) - (local.set $i16 - (i32.load - (local.get $i11) - ) - ) - (if - (i32.eqz - (local.get $i16) - ) - (block - (local.set $i17 - (i32.load - (local.get $i14) - ) - ) - (if - (i32.eqz - (local.get $i17) - ) - (block - (local.set $i18 - (i32.const 0) - ) - (br $do-once0) - ) - (block - (local.set $i19 - (local.get $i17) - ) - (local.set $i20 - (local.get $i14) - ) - ) - ) - ) - (block - (local.set $i19 - (local.get $i16) - ) - (local.set $i20 - (local.get $i11) - ) - ) - ) - (loop $while-in - (block $while-out - (local.set $i11 - (i32.add - (local.get $i19) - (i32.const 20) - ) - ) - (local.set $i16 - (i32.load - (local.get $i11) - ) - ) - (if - (local.get $i16) - (block - (local.set $i19 - (local.get $i16) - ) - (local.set $i20 - (local.get $i11) - ) - (br $while-in) - ) - ) - (local.set $i11 - (i32.add - (local.get $i19) - (i32.const 16) - ) - ) - (local.set $i16 - (i32.load - (local.get $i11) - ) - ) - (if - (i32.eqz - (local.get $i16) - ) - (block - (local.set $i21 - (local.get $i19) - ) - (local.set $i22 - (local.get $i20) - ) - (br $while-out) - ) - (block - (local.set $i19 - (local.get $i16) - ) - (local.set $i20 - (local.get $i11) - ) - ) - ) - (br $while-in) - ) - ) - (if - (i32.lt_u - (local.get $i22) - (local.get $i3) - ) - (call $_abort) - (block - (i32.store - (local.get $i22) - (i32.const 0) - ) - (local.set $i18 - (local.get $i21) - ) - (br $do-once0) - ) - ) - ) - (block - (local.set $i11 - (i32.load - (i32.add - (local.get $i8) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $i11) - (local.get $i3) - ) - (call $_abort) - ) - (local.set $i16 - (i32.add - (local.get $i11) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $i16) - ) - (local.get $i8) - ) - (call $_abort) - ) - (local.set $i14 - (i32.add - (local.get $i10) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i14) - ) - (local.get $i8) - ) - (block - (i32.store - (local.get $i16) - (local.get $i10) - ) - (i32.store - (local.get $i14) - (local.get $i11) - ) - (local.set $i18 - (local.get $i10) - ) - (br $do-once0) - ) - (call $_abort) - ) - ) - ) - ) - (if - (local.get $i7) - (block - (local.set $i10 - (i32.load - (i32.add - (local.get $i8) - (i32.const 28) - ) - ) - ) - (local.set $i11 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i10) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $i8) - (i32.load - (local.get $i11) - ) - ) - (block - (i32.store - (local.get $i11) - (local.get $i18) - ) - (if - (i32.eqz - (local.get $i18) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i10) - ) - (i32.const -1) - ) - ) - ) - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - (br $do-once) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $i7) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i10 - (i32.add - (local.get $i7) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i10) - ) - (local.get $i8) - ) - (i32.store - (local.get $i10) - (local.get $i18) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 20) - ) - (local.get $i18) - ) - ) - (if - (i32.eqz - (local.get $i18) - ) - (block - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - (br $do-once) - ) - ) - ) - ) - (local.set $i10 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i18) - (local.get $i10) - ) - (call $_abort) - ) - (i32.store - (i32.add - (local.get $i18) - (i32.const 24) - ) - (local.get $i7) - ) - (local.set $i11 - (i32.add - (local.get $i8) - (i32.const 16) - ) - ) - (local.set $i14 - (i32.load - (local.get $i11) - ) - ) - (block $do-once2 - (if - (local.get $i14) - (if - (i32.lt_u - (local.get $i14) - (local.get $i10) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i18) - (i32.const 16) - ) - (local.get $i14) - ) - (i32.store - (i32.add - (local.get $i14) - (i32.const 24) - ) - (local.get $i18) - ) - (br $do-once2) - ) - ) - ) - ) - (local.set $i14 - (i32.load - (i32.add - (local.get $i11) - (i32.const 4) - ) - ) - ) - (if - (local.get $i14) - (if - (i32.lt_u - (local.get $i14) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i18) - (i32.const 20) - ) - (local.get $i14) - ) - (i32.store - (i32.add - (local.get $i14) - (i32.const 24) - ) - (local.get $i18) - ) - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - (br $do-once) - ) - ) - (block - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - ) - ) - ) - (block - (local.set $i12 - (local.get $i8) - ) - (local.set $i13 - (local.get $i9) - ) - ) - ) - ) - (block - (local.set $i12 - (local.get $i2) - ) - (local.set $i13 - (local.get $i5) - ) - ) - ) - ) - (if - (i32.ge_u - (local.get $i12) - (local.get $i6) - ) - (call $_abort) - ) - (local.set $i5 - (i32.add - (local.get $i6) - (i32.const 4) - ) - ) - (local.set $i2 - (i32.load - (local.get $i5) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $i2) - (i32.const 1) - ) - ) - (call $_abort) - ) - (if - (i32.eqz - (i32.and - (local.get $i2) - (i32.const 2) - ) - ) - (block - (if - (i32.eq - (local.get $i6) - (i32.load - (i32.const 200) - ) - ) - (block - (local.set $i18 - (i32.add - (i32.load - (i32.const 188) - ) - (local.get $i13) - ) - ) - (i32.store - (i32.const 188) - (local.get $i18) - ) - (i32.store - (i32.const 200) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 4) - ) - (i32.or - (local.get $i18) - (i32.const 1) - ) - ) - (if - (i32.ne - (local.get $i12) - (i32.load - (i32.const 196) - ) - ) - (return) - ) - (i32.store - (i32.const 196) - (i32.const 0) - ) - (i32.store - (i32.const 184) - (i32.const 0) - ) - (return) - ) - ) - (if - (i32.eq - (local.get $i6) - (i32.load - (i32.const 196) - ) - ) - (block - (local.set $i18 - (i32.add - (i32.load - (i32.const 184) - ) - (local.get $i13) - ) - ) - (i32.store - (i32.const 184) - (local.get $i18) - ) - (i32.store - (i32.const 196) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 4) - ) - (i32.or - (local.get $i18) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i12) - (local.get $i18) - ) - (local.get $i18) - ) - (return) - ) - ) - (local.set $i18 - (i32.add - (i32.and - (local.get $i2) - (i32.const -8) - ) - (local.get $i13) - ) - ) - (local.set $i3 - (i32.shr_u - (local.get $i2) - (i32.const 3) - ) - ) - (block $do-once4 - (if - (i32.ge_u - (local.get $i2) - (i32.const 256) - ) - (block - (local.set $i21 - (i32.load - (i32.add - (local.get $i6) - (i32.const 24) - ) - ) - ) - (local.set $i22 - (i32.load - (i32.add - (local.get $i6) - (i32.const 12) - ) - ) - ) - (block $do-once6 - (if - (i32.eq - (local.get $i22) - (local.get $i6) - ) - (block - (local.set $i20 - (i32.add - (local.get $i6) - (i32.const 16) - ) - ) - (local.set $i19 - (i32.add - (local.get $i20) - (i32.const 4) - ) - ) - (local.set $i15 - (i32.load - (local.get $i19) - ) - ) - (if - (i32.eqz - (local.get $i15) - ) - (block - (local.set $i1 - (i32.load - (local.get $i20) - ) - ) - (if - (i32.eqz - (local.get $i1) - ) - (block - (local.set $i23 - (i32.const 0) - ) - (br $do-once6) - ) - (block - (local.set $i24 - (local.get $i1) - ) - (local.set $i25 - (local.get $i20) - ) - ) - ) - ) - (block - (local.set $i24 - (local.get $i15) - ) - (local.set $i25 - (local.get $i19) - ) - ) - ) - (loop $while-in9 - (block $while-out8 - (local.set $i19 - (i32.add - (local.get $i24) - (i32.const 20) - ) - ) - (local.set $i15 - (i32.load - (local.get $i19) - ) - ) - (if - (local.get $i15) - (block - (local.set $i24 - (local.get $i15) - ) - (local.set $i25 - (local.get $i19) - ) - (br $while-in9) - ) - ) - (local.set $i19 - (i32.add - (local.get $i24) - (i32.const 16) - ) - ) - (local.set $i15 - (i32.load - (local.get $i19) - ) - ) - (if - (i32.eqz - (local.get $i15) - ) - (block - (local.set $i26 - (local.get $i24) - ) - (local.set $i27 - (local.get $i25) - ) - (br $while-out8) - ) - (block - (local.set $i24 - (local.get $i15) - ) - (local.set $i25 - (local.get $i19) - ) - ) - ) - (br $while-in9) - ) - ) - (if - (i32.lt_u - (local.get $i27) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $i27) - (i32.const 0) - ) - (local.set $i23 - (local.get $i26) - ) - (br $do-once6) - ) - ) - ) - (block - (local.set $i19 - (i32.load - (i32.add - (local.get $i6) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $i19) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i15 - (i32.add - (local.get $i19) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $i15) - ) - (local.get $i6) - ) - (call $_abort) - ) - (local.set $i20 - (i32.add - (local.get $i22) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i20) - ) - (local.get $i6) - ) - (block - (i32.store - (local.get $i15) - (local.get $i22) - ) - (i32.store - (local.get $i20) - (local.get $i19) - ) - (local.set $i23 - (local.get $i22) - ) - (br $do-once6) - ) - (call $_abort) - ) - ) - ) - ) - (if - (local.get $i21) - (block - (local.set $i22 - (i32.load - (i32.add - (local.get $i6) - (i32.const 28) - ) - ) - ) - (local.set $i9 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i22) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $i6) - (i32.load - (local.get $i9) - ) - ) - (block - (i32.store - (local.get $i9) - (local.get $i23) - ) - (if - (i32.eqz - (local.get $i23) - ) - (block - (i32.store - (i32.const 180) - (i32.and - (i32.load - (i32.const 180) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i22) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $i21) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i22 - (i32.add - (local.get $i21) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i22) - ) - (local.get $i6) - ) - (i32.store - (local.get $i22) - (local.get $i23) - ) - (i32.store - (i32.add - (local.get $i21) - (i32.const 20) - ) - (local.get $i23) - ) - ) - (if - (i32.eqz - (local.get $i23) - ) - (br $do-once4) - ) - ) - ) - (local.set $i22 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.lt_u - (local.get $i23) - (local.get $i22) - ) - (call $_abort) - ) - (i32.store - (i32.add - (local.get $i23) - (i32.const 24) - ) - (local.get $i21) - ) - (local.set $i9 - (i32.add - (local.get $i6) - (i32.const 16) - ) - ) - (local.set $i8 - (i32.load - (local.get $i9) - ) - ) - (block $do-once10 - (if - (local.get $i8) - (if - (i32.lt_u - (local.get $i8) - (local.get $i22) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i23) - (i32.const 16) - ) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 24) - ) - (local.get $i23) - ) - (br $do-once10) - ) - ) - ) - ) - (local.set $i8 - (i32.load - (i32.add - (local.get $i9) - (i32.const 4) - ) - ) - ) - (if - (local.get $i8) - (if - (i32.lt_u - (local.get $i8) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (i32.add - (local.get $i23) - (i32.const 20) - ) - (local.get $i8) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 24) - ) - (local.get $i23) - ) - (br $do-once4) - ) - ) - ) - ) - ) - ) - (block - (local.set $i8 - (i32.load - (i32.add - (local.get $i6) - (i32.const 8) - ) - ) - ) - (local.set $i22 - (i32.load - (i32.add - (local.get $i6) - (i32.const 12) - ) - ) - ) - (local.set $i21 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i3) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (if - (i32.ne - (local.get $i8) - (local.get $i21) - ) - (block - (if - (i32.lt_u - (local.get $i8) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (if - (i32.ne - (i32.load - (i32.add - (local.get $i8) - (i32.const 12) - ) - ) - (local.get $i6) - ) - (call $_abort) - ) - ) - ) - (if - (i32.eq - (local.get $i22) - (local.get $i8) - ) - (block - (i32.store - (i32.const 176) - (i32.and - (i32.load - (i32.const 176) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $i3) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - (if - (i32.ne - (local.get $i22) - (local.get $i21) - ) - (block - (if - (i32.lt_u - (local.get $i22) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - ) - (local.set $i21 - (i32.add - (local.get $i22) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $i21) - ) - (local.get $i6) - ) - (local.set $i28 - (local.get $i21) - ) - (call $_abort) - ) - ) - (local.set $i28 - (i32.add - (local.get $i22) - (i32.const 8) - ) - ) - ) - (i32.store - (i32.add - (local.get $i8) - (i32.const 12) - ) - (local.get $i22) - ) - (i32.store - (local.get $i28) - (local.get $i8) - ) - ) - ) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 4) - ) - (i32.or - (local.get $i18) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i12) - (local.get $i18) - ) - (local.get $i18) - ) - (if - (i32.eq - (local.get $i12) - (i32.load - (i32.const 196) - ) - ) - (block - (i32.store - (i32.const 184) - (local.get $i18) - ) - (return) - ) - (local.set $i29 - (local.get $i18) - ) - ) - ) - (block - (i32.store - (local.get $i5) - (i32.and - (local.get $i2) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 4) - ) - (i32.or - (local.get $i13) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i12) - (local.get $i13) - ) - (local.get $i13) - ) - (local.set $i29 - (local.get $i13) - ) - ) - ) - (local.set $i13 - (i32.shr_u - (local.get $i29) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $i29) - (i32.const 256) - ) - (block - (local.set $i2 - (i32.add - (i32.const 216) - (i32.shl - (i32.shl - (local.get $i13) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $i5 - (i32.load - (i32.const 176) - ) - ) - (local.set $i18 - (i32.shl - (i32.const 1) - (local.get $i13) - ) - ) - (if - (i32.and - (local.get $i5) - (local.get $i18) - ) - (block - (local.set $i13 - (i32.add - (local.get $i2) - (i32.const 8) - ) - ) - (local.set $i28 - (i32.load - (local.get $i13) - ) - ) - (if - (i32.lt_u - (local.get $i28) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (local.set $i30 - (local.get $i13) - ) - (local.set $i31 - (local.get $i28) - ) - ) - ) - ) - (block - (i32.store - (i32.const 176) - (i32.or - (local.get $i5) - (local.get $i18) - ) - ) - (local.set $i30 - (i32.add - (local.get $i2) - (i32.const 8) - ) - ) - (local.set $i31 - (local.get $i2) - ) - ) - ) - (i32.store - (local.get $i30) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i31) - (i32.const 12) - ) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 8) - ) - (local.get $i31) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 12) - ) - (local.get $i2) - ) - (return) - ) - ) - (local.set $i2 - (i32.shr_u - (local.get $i29) - (i32.const 8) - ) - ) - (if - (local.get $i2) - (if - (i32.gt_u - (local.get $i29) - (i32.const 16777215) - ) - (local.set $i32 - (i32.const 31) - ) - (block - (local.set $i31 - (i32.and - (i32.shr_u - (i32.add - (local.get $i2) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $i30 - (i32.shl - (local.get $i2) - (local.get $i31) - ) - ) - (local.set $i2 - (i32.and - (i32.shr_u - (i32.add - (local.get $i30) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $i18 - (i32.shl - (local.get $i30) - (local.get $i2) - ) - ) - (local.set $i30 - (i32.and - (i32.shr_u - (i32.add - (local.get $i18) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $i5 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $i2) - (local.get $i31) - ) - (local.get $i30) - ) - ) - (i32.shr_u - (i32.shl - (local.get $i18) - (local.get $i30) - ) - (i32.const 15) - ) - ) - ) - (local.set $i32 - (i32.or - (i32.and - (i32.shr_u - (local.get $i29) - (i32.add - (local.get $i5) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $i5) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i32 - (i32.const 0) - ) - ) - (local.set $i5 - (i32.add - (i32.const 480) - (i32.shl - (local.get $i32) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 28) - ) - (local.get $i32) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 20) - ) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 16) - ) - (i32.const 0) - ) - (local.set $i30 - (i32.load - (i32.const 180) - ) - ) - (local.set $i18 - (i32.shl - (i32.const 1) - (local.get $i32) - ) - ) - (block $do-once12 - (if - (i32.and - (local.get $i30) - (local.get $i18) - ) - (block - (local.set $i31 - (i32.shl - (local.get $i29) - (if (result i32) - (i32.eq - (local.get $i32) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $i32) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $i2 - (i32.load - (local.get $i5) - ) - ) - (loop $while-in15 - (block $while-out14 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $i2) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $i29) - ) - (block - (local.set $i33 - (local.get $i2) - ) - (local.set $i34 - (i32.const 130) - ) - (br $while-out14) - ) - ) - (local.set $i28 - (i32.add - (i32.add - (local.get $i2) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $i31) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $i13 - (i32.load - (local.get $i28) - ) - ) - (if - (i32.eqz - (local.get $i13) - ) - (block - (local.set $i35 - (local.get $i28) - ) - (local.set $i36 - (local.get $i2) - ) - (local.set $i34 - (i32.const 127) - ) - (br $while-out14) - ) - (block - (local.set $i31 - (i32.shl - (local.get $i31) - (i32.const 1) - ) - ) - (local.set $i2 - (local.get $i13) - ) - ) - ) - (br $while-in15) - ) - ) - (if - (i32.eq - (local.get $i34) - (i32.const 127) - ) - (if - (i32.lt_u - (local.get $i35) - (i32.load - (i32.const 192) - ) - ) - (call $_abort) - (block - (i32.store - (local.get $i35) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 24) - ) - (local.get $i36) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 12) - ) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 8) - ) - (local.get $i12) - ) - (br $do-once12) - ) - ) - (if - (i32.eq - (local.get $i34) - (i32.const 130) - ) - (block - (local.set $i2 - (i32.add - (local.get $i33) - (i32.const 8) - ) - ) - (local.set $i31 - (i32.load - (local.get $i2) - ) - ) - (local.set $i9 - (i32.load - (i32.const 192) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $i31) - (local.get $i9) - ) - (i32.ge_u - (local.get $i33) - (local.get $i9) - ) - ) - (block - (i32.store - (i32.add - (local.get $i31) - (i32.const 12) - ) - (local.get $i12) - ) - (i32.store - (local.get $i2) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 8) - ) - (local.get $i31) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 12) - ) - (local.get $i33) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once12) - ) - (call $_abort) - ) - ) - ) - ) - ) - (block - (i32.store - (i32.const 180) - (i32.or - (local.get $i30) - (local.get $i18) - ) - ) - (i32.store - (local.get $i5) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 24) - ) - (local.get $i5) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 12) - ) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i12) - (i32.const 8) - ) - (local.get $i12) - ) - ) - ) - ) - (local.set $i12 - (i32.add - (i32.load - (i32.const 208) - ) - (i32.const -1) - ) - ) - (i32.store - (i32.const 208) - (local.get $i12) - ) - (if - (i32.eqz - (local.get $i12) - ) - (local.set $i37 - (i32.const 632) - ) - (return) - ) - (loop $while-in17 - (block $while-out16 - (local.set $i12 - (i32.load - (local.get $i37) - ) - ) - (if - (i32.eqz - (local.get $i12) - ) - (br $while-out16) - (local.set $i37 - (i32.add - (local.get $i12) - (i32.const 8) - ) - ) - ) - (br $while-in17) - ) - ) - (i32.store - (i32.const 208) - (i32.const -1) - ) - (return) - ) - (func $___stdio_write (; 17 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local $i9 i32) - (local $i10 i32) - (local $i11 i32) - (local $i12 i32) - (local $i13 i32) - (local $i14 i32) - (local $i15 i32) - (local $i16 i32) - (local $i17 i32) - (local $i18 i32) - (local $i19 i32) - (local $i20 i32) - (local $i21 i32) - (local $i22 i32) - (local $i23 i32) - (local $i24 i32) - (local.set $i4 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 48) - ) - ) - (local.set $i5 - (i32.add - (local.get $i4) - (i32.const 16) - ) - ) - (local.set $i6 - (local.get $i4) - ) - (local.set $i7 - (i32.add - (local.get $i4) - (i32.const 32) - ) - ) - (local.set $i8 - (i32.add - (local.get $i1) - (i32.const 28) - ) - ) - (local.set $i9 - (i32.load - (local.get $i8) - ) - ) - (i32.store - (local.get $i7) - (local.get $i9) - ) - (local.set $i10 - (i32.add - (local.get $i1) - (i32.const 20) - ) - ) - (local.set $i11 - (i32.sub - (i32.load - (local.get $i10) - ) - (local.get $i9) - ) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 4) - ) - (local.get $i11) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 8) - ) - (local.get $i2) - ) - (i32.store - (i32.add - (local.get $i7) - (i32.const 12) - ) - (local.get $i3) - ) - (local.set $i2 - (i32.add - (local.get $i1) - (i32.const 60) - ) - ) - (local.set $i9 - (i32.add - (local.get $i1) - (i32.const 44) - ) - ) - (local.set $i12 - (local.get $i7) - ) - (local.set $i7 - (i32.const 2) - ) - (local.set $i13 - (i32.add - (local.get $i11) - (local.get $i3) - ) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.load - (i32.const 8) - ) - ) - (block - (i32.store - (local.get $i5) - (i32.load - (local.get $i2) - ) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 4) - ) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 8) - ) - (local.get $i7) - ) - (local.set $i14 - (call $___syscall_ret - (call $___syscall146 - (i32.const 146) - (local.get $i5) - ) - ) - ) - ) - (block - (call $_pthread_cleanup_push - (i32.const 4) - (local.get $i1) - ) - (i32.store - (local.get $i6) - (i32.load - (local.get $i2) - ) - ) - (i32.store - (i32.add - (local.get $i6) - (i32.const 4) - ) - (local.get $i12) - ) - (i32.store - (i32.add - (local.get $i6) - (i32.const 8) - ) - (local.get $i7) - ) - (local.set $i11 - (call $___syscall_ret - (call $___syscall146 - (i32.const 146) - (local.get $i6) - ) - ) - ) - (call $_pthread_cleanup_pop - (i32.const 0) - ) - (local.set $i14 - (local.get $i11) - ) - ) - ) - (if - (i32.eq - (local.get $i13) - (local.get $i14) - ) - (block - (local.set $i15 - (i32.const 6) - ) - (br $while-out) - ) - ) - (if - (i32.lt_s - (local.get $i14) - (i32.const 0) - ) - (block - (local.set $i16 - (local.get $i12) - ) - (local.set $i17 - (local.get $i7) - ) - (local.set $i15 - (i32.const 8) - ) - (br $while-out) - ) - ) - (local.set $i11 - (i32.sub - (local.get $i13) - (local.get $i14) - ) - ) - (local.set $i18 - (i32.load - (i32.add - (local.get $i12) - (i32.const 4) - ) - ) - ) - (if - (i32.le_u - (local.get $i14) - (local.get $i18) - ) - (if - (i32.eq - (local.get $i7) - (i32.const 2) - ) - (block - (i32.store - (local.get $i8) - (i32.add - (i32.load - (local.get $i8) - ) - (local.get $i14) - ) - ) - (local.set $i19 - (local.get $i18) - ) - (local.set $i20 - (local.get $i14) - ) - (local.set $i21 - (local.get $i12) - ) - (local.set $i22 - (i32.const 2) - ) - ) - (block - (local.set $i19 - (local.get $i18) - ) - (local.set $i20 - (local.get $i14) - ) - (local.set $i21 - (local.get $i12) - ) - (local.set $i22 - (local.get $i7) - ) - ) - ) - (block - (local.set $i23 - (i32.load - (local.get $i9) - ) - ) - (i32.store - (local.get $i8) - (local.get $i23) - ) - (i32.store - (local.get $i10) - (local.get $i23) - ) - (local.set $i19 - (i32.load - (i32.add - (local.get $i12) - (i32.const 12) - ) - ) - ) - (local.set $i20 - (i32.sub - (local.get $i14) - (local.get $i18) - ) - ) - (local.set $i21 - (i32.add - (local.get $i12) - (i32.const 8) - ) - ) - (local.set $i22 - (i32.add - (local.get $i7) - (i32.const -1) - ) - ) - ) - ) - (i32.store - (local.get $i21) - (i32.add - (i32.load - (local.get $i21) - ) - (local.get $i20) - ) - ) - (i32.store - (i32.add - (local.get $i21) - (i32.const 4) - ) - (i32.sub - (local.get $i19) - (local.get $i20) - ) - ) - (local.set $i12 - (local.get $i21) - ) - (local.set $i7 - (local.get $i22) - ) - (local.set $i13 - (local.get $i11) - ) - (br $while-in) - ) - ) - (if - (i32.eq - (local.get $i15) - (i32.const 6) - ) - (block - (local.set $i13 - (i32.load - (local.get $i9) - ) - ) - (i32.store - (i32.add - (local.get $i1) - (i32.const 16) - ) - (i32.add - (local.get $i13) - (i32.load - (i32.add - (local.get $i1) - (i32.const 48) - ) - ) - ) - ) - (local.set $i9 - (local.get $i13) - ) - (i32.store - (local.get $i8) - (local.get $i9) - ) - (i32.store - (local.get $i10) - (local.get $i9) - ) - (local.set $i24 - (local.get $i3) - ) - ) - (if - (i32.eq - (local.get $i15) - (i32.const 8) - ) - (block - (i32.store - (i32.add - (local.get $i1) - (i32.const 16) - ) - (i32.const 0) - ) - (i32.store - (local.get $i8) - (i32.const 0) - ) - (i32.store - (local.get $i10) - (i32.const 0) - ) - (i32.store - (local.get $i1) - (i32.or - (i32.load - (local.get $i1) - ) - (i32.const 32) - ) - ) - (if - (i32.eq - (local.get $i17) - (i32.const 2) - ) - (local.set $i24 - (i32.const 0) - ) - (local.set $i24 - (i32.sub - (local.get $i3) - (i32.load - (i32.add - (local.get $i16) - (i32.const 4) - ) - ) - ) - ) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $i4) - ) - (return - (local.get $i24) - ) - ) - (func $___fwritex (; 18 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local $i9 i32) - (local $i10 i32) - (local $i11 i32) - (local $i12 i32) - (local $i13 i32) - (local $i14 i32) - (local $i15 i32) - (local.set $i4 - (i32.add - (local.get $i3) - (i32.const 16) - ) - ) - (local.set $i5 - (i32.load - (local.get $i4) - ) - ) - (if - (i32.eqz - (local.get $i5) - ) - (if - (i32.eqz - (call $___towrite - (local.get $i3) - ) - ) - (block - (local.set $i6 - (i32.load - (local.get $i4) - ) - ) - (local.set $i7 - (i32.const 5) - ) - ) - (local.set $i8 - (i32.const 0) - ) - ) - (block - (local.set $i6 - (local.get $i5) - ) - (local.set $i7 - (i32.const 5) - ) - ) - ) - (block $label$break$L5 - (if - (i32.eq - (local.get $i7) - (i32.const 5) - ) - (block - (local.set $i5 - (i32.add - (local.get $i3) - (i32.const 20) - ) - ) - (local.set $i4 - (i32.load - (local.get $i5) - ) - ) - (local.set $i9 - (local.get $i4) - ) - (if - (i32.lt_u - (i32.sub - (local.get $i6) - (local.get $i4) - ) - (local.get $i2) - ) - (block - (local.set $i8 - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $i3) - (local.get $i1) - (local.get $i2) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $i3) - (i32.const 36) - ) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (br $label$break$L5) - ) - ) - (block $label$break$L10 - (if - (i32.gt_s - (i32.load8_s - (i32.add - (local.get $i3) - (i32.const 75) - ) - ) - (i32.const -1) - ) - (block - (local.set $i4 - (local.get $i2) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (local.get $i4) - ) - (block - (local.set $i10 - (local.get $i2) - ) - (local.set $i11 - (local.get $i1) - ) - (local.set $i12 - (local.get $i9) - ) - (local.set $i13 - (i32.const 0) - ) - (br $label$break$L10) - ) - ) - (local.set $i14 - (i32.add - (local.get $i4) - (i32.const -1) - ) - ) - (if - (i32.eq - (i32.load8_s - (i32.add - (local.get $i1) - (local.get $i14) - ) - ) - (i32.const 10) - ) - (block - (local.set $i15 - (local.get $i4) - ) - (br $while-out) - ) - (local.set $i4 - (local.get $i14) - ) - ) - (br $while-in) - ) - ) - (if - (i32.lt_u - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $i3) - (local.get $i1) - (local.get $i15) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $i3) - (i32.const 36) - ) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - (local.get $i15) - ) - (block - (local.set $i8 - (local.get $i15) - ) - (br $label$break$L5) - ) - ) - (local.set $i10 - (i32.sub - (local.get $i2) - (local.get $i15) - ) - ) - (local.set $i11 - (i32.add - (local.get $i1) - (local.get $i15) - ) - ) - (local.set $i12 - (i32.load - (local.get $i5) - ) - ) - (local.set $i13 - (local.get $i15) - ) - ) - (block - (local.set $i10 - (local.get $i2) - ) - (local.set $i11 - (local.get $i1) - ) - (local.set $i12 - (local.get $i9) - ) - (local.set $i13 - (i32.const 0) - ) - ) - ) - ) - (drop - (call $_memcpy - (local.get $i12) - (local.get $i11) - (local.get $i10) - ) - ) - (i32.store - (local.get $i5) - (i32.add - (i32.load - (local.get $i5) - ) - (local.get $i10) - ) - ) - (local.set $i8 - (i32.add - (local.get $i13) - (local.get $i10) - ) - ) - ) - ) - ) - (return - (local.get $i8) - ) - ) - (func $_fflush (; 19 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local $i3 i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (block $do-once - (if - (local.get $i1) - (block - (if - (i32.le_s - (i32.load - (i32.add - (local.get $i1) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (block - (local.set $i2 - (call $___fflush_unlocked - (local.get $i1) - ) - ) - (br $do-once) - ) - ) - (local.set $i3 - (i32.eq - (call $___lockfile - (local.get $i1) - ) - (i32.const 0) - ) - ) - (local.set $i4 - (call $___fflush_unlocked - (local.get $i1) - ) - ) - (if - (local.get $i3) - (local.set $i2 - (local.get $i4) - ) - (block - (call $___unlockfile - (local.get $i1) - ) - (local.set $i2 - (local.get $i4) - ) - ) - ) - ) - (block - (if - (i32.eqz - (i32.load - (i32.const 56) - ) - ) - (local.set $i5 - (i32.const 0) - ) - (local.set $i5 - (call $_fflush - (i32.load - (i32.const 56) - ) - ) - ) - ) - (call $___lock - (i32.const 36) - ) - (local.set $i4 - (i32.load - (i32.const 32) - ) - ) - (if - (i32.eqz - (local.get $i4) - ) - (local.set $i6 - (local.get $i5) - ) - (block - (local.set $i3 - (local.get $i4) - ) - (local.set $i4 - (local.get $i5) - ) - (loop $while-in - (block $while-out - (if - (i32.gt_s - (i32.load - (i32.add - (local.get $i3) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (local.set $i7 - (call $___lockfile - (local.get $i3) - ) - ) - (local.set $i7 - (i32.const 0) - ) - ) - (if - (i32.gt_u - (i32.load - (i32.add - (local.get $i3) - (i32.const 20) - ) - ) - (i32.load - (i32.add - (local.get $i3) - (i32.const 28) - ) - ) - ) - (local.set $i8 - (i32.or - (call $___fflush_unlocked - (local.get $i3) - ) - (local.get $i4) - ) - ) - (local.set $i8 - (local.get $i4) - ) - ) - (if - (local.get $i7) - (call $___unlockfile - (local.get $i3) - ) - ) - (local.set $i3 - (i32.load - (i32.add - (local.get $i3) - (i32.const 56) - ) - ) - ) - (if - (i32.eqz - (local.get $i3) - ) - (block - (local.set $i6 - (local.get $i8) - ) - (br $while-out) - ) - (local.set $i4 - (local.get $i8) - ) - ) - (br $while-in) - ) - ) - ) - ) - (call $___unlock - (i32.const 36) - ) - (local.set $i2 - (local.get $i6) - ) - ) - ) - ) - (return - (local.get $i2) - ) - ) - (func $_strlen (; 20 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local $i3 i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local $i9 i32) - (local $i10 i32) - (local $i11 i32) - (local.set $i2 - (local.get $i1) - ) - (block $label$break$L1 - (if - (i32.eqz - (i32.and - (local.get $i2) - (i32.const 3) - ) - ) - (block - (local.set $i3 - (local.get $i1) - ) - (local.set $i4 - (i32.const 4) - ) - ) - (block - (local.set $i5 - (local.get $i1) - ) - (local.set $i6 - (local.get $i2) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.load8_s - (local.get $i5) - ) - ) - (block - (local.set $i7 - (local.get $i6) - ) - (br $label$break$L1) - ) - ) - (local.set $i8 - (i32.add - (local.get $i5) - (i32.const 1) - ) - ) - (local.set $i6 - (local.get $i8) - ) - (if - (i32.eqz - (i32.and - (local.get $i6) - (i32.const 3) - ) - ) - (block - (local.set $i3 - (local.get $i8) - ) - (local.set $i4 - (i32.const 4) - ) - (br $while-out) - ) - (local.set $i5 - (local.get $i8) - ) - ) - (br $while-in) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $i4) - (i32.const 4) - ) - (block - (local.set $i4 - (local.get $i3) - ) - (loop $while-in1 - (block $while-out0 - (local.set $i3 - (i32.load - (local.get $i4) - ) - ) - (if - (i32.eqz - (i32.and - (i32.xor - (i32.and - (local.get $i3) - (i32.const -2139062144) - ) - (i32.const -2139062144) - ) - (i32.add - (local.get $i3) - (i32.const -16843009) - ) - ) - ) - (local.set $i4 - (i32.add - (local.get $i4) - (i32.const 4) - ) - ) - (block - (local.set $i9 - (local.get $i3) - ) - (local.set $i10 - (local.get $i4) - ) - (br $while-out0) - ) - ) - (br $while-in1) - ) - ) - (if - (i32.eqz - (i32.shr_s - (i32.shl - (i32.and - (local.get $i9) - (i32.const 255) - ) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $i11 - (local.get $i10) - ) - (block - (local.set $i9 - (local.get $i10) - ) - (loop $while-in3 - (block $while-out2 - (local.set $i10 - (i32.add - (local.get $i9) - (i32.const 1) - ) - ) - (if - (i32.eqz - (i32.load8_s - (local.get $i10) - ) - ) - (block - (local.set $i11 - (local.get $i10) - ) - (br $while-out2) - ) - (local.set $i9 - (local.get $i10) - ) - ) - (br $while-in3) - ) - ) - ) - ) - (local.set $i7 - (local.get $i11) - ) - ) - ) - (return - (i32.sub - (local.get $i7) - (local.get $i2) - ) - ) - ) - (func $___overflow (; 21 ;) (param $i1 i32) (param $i2 i32) (result i32) - (local $i3 i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local $i9 i32) - (local $i10 i32) - (local $i11 i32) - (local.set $i3 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (local.set $i4 - (local.get $i3) - ) - (local.set $i5 - (i32.and - (local.get $i2) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $i4) - (local.get $i5) - ) - (local.set $i6 - (i32.add - (local.get $i1) - (i32.const 16) - ) - ) - (local.set $i7 - (i32.load - (local.get $i6) - ) - ) - (if - (i32.eqz - (local.get $i7) - ) - (if - (i32.eqz - (call $___towrite - (local.get $i1) - ) - ) - (block - (local.set $i8 - (i32.load - (local.get $i6) - ) - ) - (local.set $i9 - (i32.const 4) - ) - ) - (local.set $i10 - (i32.const -1) - ) - ) - (block - (local.set $i8 - (local.get $i7) - ) - (local.set $i9 - (i32.const 4) - ) - ) - ) - (block $do-once - (if - (i32.eq - (local.get $i9) - (i32.const 4) - ) - (block - (local.set $i7 - (i32.add - (local.get $i1) - (i32.const 20) - ) - ) - (local.set $i6 - (i32.load - (local.get $i7) - ) - ) - (if - (if (result i32) - (i32.lt_u - (local.get $i6) - (local.get $i8) - ) - (block (result i32) - (local.set $i11 - (i32.and - (local.get $i2) - (i32.const 255) - ) - ) - (i32.ne - (local.get $i11) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 75) - ) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (local.get $i7) - (i32.add - (local.get $i6) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $i6) - (local.get $i5) - ) - (local.set $i10 - (local.get $i11) - ) - (br $do-once) - ) - ) - (if - (i32.eq - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $i1) - (local.get $i4) - (i32.const 1) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $i1) - (i32.const 36) - ) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - (i32.const 1) - ) - (local.set $i10 - (i32.load8_u - (local.get $i4) - ) - ) - (local.set $i10 - (i32.const -1) - ) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $i3) - ) - (return - (local.get $i10) - ) - ) - (func $___fflush_unlocked (; 22 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local $i3 i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local.set $i2 - (i32.add - (local.get $i1) - (i32.const 20) - ) - ) - (local.set $i3 - (i32.add - (local.get $i1) - (i32.const 28) - ) - ) - (if - (if (result i32) - (i32.gt_u - (i32.load - (local.get $i2) - ) - (i32.load - (local.get $i3) - ) - ) - (block (result i32) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $i1) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $i1) - (i32.const 36) - ) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (i32.eq - (i32.load - (local.get $i2) - ) - (i32.const 0) - ) - ) - (i32.const 0) - ) - (local.set $i4 - (i32.const -1) - ) - (block - (local.set $i5 - (i32.add - (local.get $i1) - (i32.const 4) - ) - ) - (local.set $i6 - (i32.load - (local.get $i5) - ) - ) - (local.set $i7 - (i32.add - (local.get $i1) - (i32.const 8) - ) - ) - (local.set $i8 - (i32.load - (local.get $i7) - ) - ) - (if - (i32.lt_u - (local.get $i6) - (local.get $i8) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $i1) - (i32.sub - (local.get $i6) - (local.get $i8) - ) - (i32.const 1) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $i1) - (i32.const 40) - ) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.store - (i32.add - (local.get $i1) - (i32.const 16) - ) - (i32.const 0) - ) - (i32.store - (local.get $i3) - (i32.const 0) - ) - (i32.store - (local.get $i2) - (i32.const 0) - ) - (i32.store - (local.get $i7) - (i32.const 0) - ) - (i32.store - (local.get $i5) - (i32.const 0) - ) - (local.set $i4 - (i32.const 0) - ) - ) - ) - (return - (local.get $i4) - ) - ) - (func $_memcpy (; 23 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) - (local $i4 i32) - (if - (i32.ge_s - (local.get $i3) - (i32.const 4096) - ) - (return - (call $_emscripten_memcpy_big - (local.get $i1) - (local.get $i2) - (local.get $i3) - ) - ) - ) - (local.set $i4 - (local.get $i1) - ) - (if - (i32.eq - (i32.and - (local.get $i1) - (i32.const 3) - ) - (i32.and - (local.get $i2) - (i32.const 3) - ) - ) - (block - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.and - (local.get $i1) - (i32.const 3) - ) - ) - (br $while-out) - ) - (block - (if - (i32.eqz - (local.get $i3) - ) - (return - (local.get $i4) - ) - ) - (i32.store8 - (local.get $i1) - (i32.load8_s - (local.get $i2) - ) - ) - (local.set $i1 - (i32.add - (local.get $i1) - (i32.const 1) - ) - ) - (local.set $i2 - (i32.add - (local.get $i2) - (i32.const 1) - ) - ) - (local.set $i3 - (i32.sub - (local.get $i3) - (i32.const 1) - ) - ) - ) - (br $while-in) - ) - ) - (loop $while-in1 - (block $while-out0 - (if - (i32.eqz - (i32.ge_s - (local.get $i3) - (i32.const 4) - ) - ) - (br $while-out0) - ) - (block - (i32.store - (local.get $i1) - (i32.load - (local.get $i2) - ) - ) - (local.set $i1 - (i32.add - (local.get $i1) - (i32.const 4) - ) - ) - (local.set $i2 - (i32.add - (local.get $i2) - (i32.const 4) - ) - ) - (local.set $i3 - (i32.sub - (local.get $i3) - (i32.const 4) - ) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (loop $while-in3 - (block $while-out2 - (if - (i32.eqz - (i32.gt_s - (local.get $i3) - (i32.const 0) - ) - ) - (br $while-out2) - ) - (block - (i32.store8 - (local.get $i1) - (i32.load8_s - (local.get $i2) - ) - ) - (local.set $i1 - (i32.add - (local.get $i1) - (i32.const 1) - ) - ) - (local.set $i2 - (i32.add - (local.get $i2) - (i32.const 1) - ) - ) - (local.set $i3 - (i32.sub - (local.get $i3) - (i32.const 1) - ) - ) - ) - (br $while-in3) - ) - ) - (return - (local.get $i4) - ) - ) - (func $runPostSets (; 24 ;) - (nop) - ) - (func $_memset (; 25 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local.set $i4 - (i32.add - (local.get $i1) - (local.get $i3) - ) - ) - (if - (i32.ge_s - (local.get $i3) - (i32.const 20) - ) - (block - (local.set $i2 - (i32.and - (local.get $i2) - (i32.const 255) - ) - ) - (local.set $i5 - (i32.and - (local.get $i1) - (i32.const 3) - ) - ) - (local.set $i6 - (i32.or - (i32.or - (i32.or - (local.get $i2) - (i32.shl - (local.get $i2) - (i32.const 8) - ) - ) - (i32.shl - (local.get $i2) - (i32.const 16) - ) - ) - (i32.shl - (local.get $i2) - (i32.const 24) - ) - ) - ) - (local.set $i7 - (i32.and - (local.get $i4) - (i32.xor - (i32.const 3) - (i32.const -1) - ) - ) - ) - (if - (local.get $i5) - (block - (local.set $i5 - (i32.sub - (i32.add - (local.get $i1) - (i32.const 4) - ) - (local.get $i5) - ) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.lt_s - (local.get $i1) - (local.get $i5) - ) - ) - (br $while-out) - ) - (block - (i32.store8 - (local.get $i1) - (local.get $i2) - ) - (local.set $i1 - (i32.add - (local.get $i1) - (i32.const 1) - ) - ) - ) - (br $while-in) - ) - ) - ) - ) - (loop $while-in1 - (block $while-out0 - (if - (i32.eqz - (i32.lt_s - (local.get $i1) - (local.get $i7) - ) - ) - (br $while-out0) - ) - (block - (i32.store - (local.get $i1) - (local.get $i6) - ) - (local.set $i1 - (i32.add - (local.get $i1) - (i32.const 4) - ) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (loop $while-in3 - (block $while-out2 - (if - (i32.eqz - (i32.lt_s - (local.get $i1) - (local.get $i4) - ) - ) - (br $while-out2) - ) - (block - (i32.store8 - (local.get $i1) - (local.get $i2) - ) - (local.set $i1 - (i32.add - (local.get $i1) - (i32.const 1) - ) - ) - ) - (br $while-in3) - ) - ) - (return - (i32.sub - (local.get $i1) - (local.get $i3) - ) - ) - ) - (func $_puts (; 26 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local $i3 i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local.set $i2 - (i32.load - (i32.const 52) - ) - ) - (if - (i32.gt_s - (i32.load - (i32.add - (local.get $i2) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (local.set $i3 - (call $___lockfile - (local.get $i2) - ) - ) - (local.set $i3 - (i32.const 0) - ) - ) - (block $do-once - (if - (i32.lt_s - (call $_fputs - (local.get $i1) - (local.get $i2) - ) - (i32.const 0) - ) - (local.set $i4 - (i32.const 1) - ) - (block - (if - (if (result i32) - (i32.ne - (i32.load8_s - (i32.add - (local.get $i2) - (i32.const 75) - ) - ) - (i32.const 10) - ) - (block (result i32) - (local.set $i5 - (i32.add - (local.get $i2) - (i32.const 20) - ) - ) - (block (result i32) - (local.set $i6 - (i32.load - (local.get $i5) - ) - ) - (i32.lt_u - (local.get $i6) - (i32.load - (i32.add - (local.get $i2) - (i32.const 16) - ) - ) - ) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (local.get $i5) - (i32.add - (local.get $i6) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $i6) - (i32.const 10) - ) - (local.set $i4 - (i32.const 0) - ) - (br $do-once) - ) - ) - (local.set $i4 - (i32.lt_s - (call $___overflow - (local.get $i2) - (i32.const 10) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (if - (local.get $i3) - (call $___unlockfile - (local.get $i2) - ) - ) - (return - (i32.shr_s - (i32.shl - (local.get $i4) - (i32.const 31) - ) - (i32.const 31) - ) - ) - ) - (func $___stdio_seek (; 27 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) - (local $i4 i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local.set $i4 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 32) - ) - ) - (local.set $i5 - (local.get $i4) - ) - (local.set $i6 - (i32.add - (local.get $i4) - (i32.const 20) - ) - ) - (i32.store - (local.get $i5) - (i32.load - (i32.add - (local.get $i1) - (i32.const 60) - ) - ) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 4) - ) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 8) - ) - (local.get $i2) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 12) - ) - (local.get $i6) - ) - (i32.store - (i32.add - (local.get $i5) - (i32.const 16) - ) - (local.get $i3) - ) - (if - (i32.lt_s - (call $___syscall_ret - (call $___syscall140 - (i32.const 140) - (local.get $i5) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (local.get $i6) - (i32.const -1) - ) - (local.set $i7 - (i32.const -1) - ) - ) - (local.set $i7 - (i32.load - (local.get $i6) - ) - ) - ) - (global.set $STACKTOP - (local.get $i4) - ) - (return - (local.get $i7) - ) - ) - (func $___towrite (; 28 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local $i3 i32) - (local $i4 i32) - (local.set $i2 - (i32.add - (local.get $i1) - (i32.const 74) - ) - ) - (local.set $i3 - (i32.load8_s - (local.get $i2) - ) - ) - (i32.store8 - (local.get $i2) - (i32.or - (i32.add - (local.get $i3) - (i32.const 255) - ) - (local.get $i3) - ) - ) - (local.set $i3 - (i32.load - (local.get $i1) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $i3) - (i32.const 8) - ) - ) - (block - (i32.store - (i32.add - (local.get $i1) - (i32.const 8) - ) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $i1) - (i32.const 4) - ) - (i32.const 0) - ) - (local.set $i2 - (i32.load - (i32.add - (local.get $i1) - (i32.const 44) - ) - ) - ) - (i32.store - (i32.add - (local.get $i1) - (i32.const 28) - ) - (local.get $i2) - ) - (i32.store - (i32.add - (local.get $i1) - (i32.const 20) - ) - (local.get $i2) - ) - (i32.store - (i32.add - (local.get $i1) - (i32.const 16) - ) - (i32.add - (local.get $i2) - (i32.load - (i32.add - (local.get $i1) - (i32.const 48) - ) - ) - ) - ) - (local.set $i4 - (i32.const 0) - ) - ) - (block - (i32.store - (local.get $i1) - (i32.or - (local.get $i3) - (i32.const 32) - ) - ) - (local.set $i4 - (i32.const -1) - ) - ) - ) - (return - (local.get $i4) - ) - ) - (func $i32u-div (; 29 ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (i32.eqz - (local.get $1) - ) - (i32.const 0) - (i32.div_u - (local.get $0) - (local.get $1) - ) - ) - ) - (func $_fwrite (; 30 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (param $i4 i32) (result i32) - (local $i5 i32) - (local $i6 i32) - (local $i7 i32) - (local $i8 i32) - (local $i9 i32) - (local.set $i5 - (i32.mul - (local.get $i3) - (local.get $i2) - ) - ) - (if - (i32.gt_s - (i32.load - (i32.add - (local.get $i4) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (block - (local.set $i6 - (i32.eq - (call $___lockfile - (local.get $i4) - ) - (i32.const 0) - ) - ) - (local.set $i7 - (call $___fwritex - (local.get $i1) - (local.get $i5) - (local.get $i4) - ) - ) - (if - (local.get $i6) - (local.set $i8 - (local.get $i7) - ) - (block - (call $___unlockfile - (local.get $i4) - ) - (local.set $i8 - (local.get $i7) - ) - ) - ) - ) - (local.set $i8 - (call $___fwritex - (local.get $i1) - (local.get $i5) - (local.get $i4) - ) - ) - ) - (if - (i32.eq - (local.get $i8) - (local.get $i5) - ) - (local.set $i9 - (local.get $i3) - ) - (local.set $i9 - (call $i32u-div - (local.get $i8) - (local.get $i2) - ) - ) - ) - (return - (local.get $i9) - ) - ) - (func $___stdout_write (; 31 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) - (local $i4 i32) - (local $i5 i32) - (local.set $i4 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 80) - ) - ) - (local.set $i5 - (local.get $i4) - ) - (i32.store - (i32.add - (local.get $i1) - (i32.const 36) - ) - (i32.const 5) - ) - (if - (if (result i32) - (i32.eq - (i32.and - (i32.load - (local.get $i1) - ) - (i32.const 64) - ) - (i32.const 0) - ) - (block (result i32) - (i32.store - (local.get $i5) - (i32.load - (i32.add - (local.get $i1) - (i32.const 60) - ) - ) - ) - (block (result i32) - (i32.store - (i32.add - (local.get $i5) - (i32.const 4) - ) - (i32.const 21505) - ) - (block (result i32) - (i32.store - (i32.add - (local.get $i5) - (i32.const 8) - ) - (i32.add - (local.get $i4) - (i32.const 12) - ) - ) - (i32.ne - (call $___syscall54 - (i32.const 54) - (local.get $i5) - ) - (i32.const 0) - ) - ) - ) - ) - (i32.const 0) - ) - (i32.store8 - (i32.add - (local.get $i1) - (i32.const 75) - ) - (i32.const -1) - ) - ) - (local.set $i5 - (call $___stdio_write - (local.get $i1) - (local.get $i2) - (local.get $i3) - ) - ) - (global.set $STACKTOP - (local.get $i4) - ) - (return - (local.get $i5) - ) - ) - (func $copyTempDouble (; 32 ;) (param $i1 i32) - (i32.store8 - (global.get $tempDoublePtr) - (i32.load8_s - (local.get $i1) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 1) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 1) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 2) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 2) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 3) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 3) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 4) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 4) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 5) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 5) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 6) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 6) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 7) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 7) - ) - ) - ) - ) - (func $___stdio_close (; 33 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local $i3 i32) - (local.set $i2 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (local.set $i3 - (local.get $i2) - ) - (i32.store - (local.get $i3) - (i32.load - (i32.add - (local.get $i1) - (i32.const 60) - ) - ) - ) - (local.set $i1 - (call $___syscall_ret - (call $___syscall6 - (i32.const 6) - (local.get $i3) - ) - ) - ) - (global.set $STACKTOP - (local.get $i2) - ) - (return - (local.get $i1) - ) - ) - (func $copyTempFloat (; 34 ;) (param $i1 i32) - (i32.store8 - (global.get $tempDoublePtr) - (i32.load8_s - (local.get $i1) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 1) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 1) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 2) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 2) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $tempDoublePtr) - (i32.const 3) - ) - (i32.load8_s - (i32.add - (local.get $i1) - (i32.const 3) - ) - ) - ) - ) - (func $___syscall_ret (; 35 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (if - (i32.gt_u - (local.get $i1) - (i32.const -4096) - ) - (block - (i32.store - (call $___errno_location) - (i32.sub - (i32.const 0) - (local.get $i1) - ) - ) - (local.set $i2 - (i32.const -1) - ) - ) - (local.set $i2 - (local.get $i1) - ) - ) - (return - (local.get $i2) - ) - ) - (func $dynCall_iiii (; 36 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (param $i4 i32) (result i32) - (return - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $i2) - (local.get $i3) - (local.get $i4) - (i32.add - (i32.and - (local.get $i1) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - ) - (func $stackAlloc (; 37 ;) (param $i1 i32) (result i32) - (local $i2 i32) - (local.set $i2 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (local.get $i1) - ) - ) - (global.set $STACKTOP - (i32.and - (i32.add - (global.get $STACKTOP) - (i32.const 15) - ) - (i32.const -16) - ) - ) - (return - (local.get $i2) - ) - ) - (func $___errno_location (; 38 ;) (result i32) - (local $i1 i32) - (if - (i32.eqz - (i32.load - (i32.const 8) - ) - ) - (local.set $i1 - (i32.const 60) - ) - (local.set $i1 - (i32.load - (i32.add - (call $_pthread_self) - (i32.const 60) - ) - ) - ) - ) - (return - (local.get $i1) - ) - ) - (func $setThrew (; 39 ;) (param $i1 i32) (param $i2 i32) - (if - (i32.eqz - (global.get $__THREW__) - ) - (block - (global.set $__THREW__ - (local.get $i1) - ) - (global.set $threwValue - (local.get $i2) - ) - ) - ) - ) - (func $_fputs (; 40 ;) (param $i1 i32) (param $i2 i32) (result i32) - (return - (i32.add - (call $_fwrite - (local.get $i1) - (call $_strlen - (local.get $i1) - ) - (i32.const 1) - (local.get $i2) - ) - (i32.const -1) - ) - ) - ) - (func $dynCall_ii (; 41 ;) (param $i1 i32) (param $i2 i32) (result i32) - (return - (call_indirect (type $i32_=>_i32) - (local.get $i2) - (i32.add - (i32.and - (local.get $i1) - (i32.const 1) - ) - (i32.const 0) - ) - ) - ) - ) - (func $_cleanup_418 (; 42 ;) (param $i1 i32) - (if - (i32.eqz - (i32.load - (i32.add - (local.get $i1) - (i32.const 68) - ) - ) - ) - (call $___unlockfile - (local.get $i1) - ) - ) - (return) - ) - (func $establishStackSpace (; 43 ;) (param $i1 i32) (param $i2 i32) - (global.set $STACKTOP - (local.get $i1) - ) - (global.set $STACK_MAX - (local.get $i2) - ) - ) - (func $dynCall_vi (; 44 ;) (param $i1 i32) (param $i2 i32) - (call_indirect (type $i32_=>_none) - (local.get $i2) - (i32.add - (i32.and - (local.get $i1) - (i32.const 7) - ) - (i32.const 10) - ) - ) - ) - (func $b1 (; 45 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) - (call $abort - (i32.const 1) - ) - (return - (i32.const 0) - ) - ) - (func $stackRestore (; 46 ;) (param $i1 i32) - (global.set $STACKTOP - (local.get $i1) - ) - ) - (func $setTempRet0 (; 47 ;) (param $i1 i32) - (global.set $tempRet0 - (local.get $i1) - ) - ) - (func $b0 (; 48 ;) (param $i1 i32) (result i32) - (call $abort - (i32.const 0) - ) - (return - (i32.const 0) - ) - ) - (func $___unlockfile (; 49 ;) (param $i1 i32) - (return) - ) - (func $___lockfile (; 50 ;) (param $i1 i32) (result i32) - (return - (i32.const 0) - ) - ) - (func $getTempRet0 (; 51 ;) (result i32) - (return - (global.get $tempRet0) - ) - ) - (func $_main (; 52 ;) (result i32) - (drop - (call $_puts - (i32.const 672) - ) - ) - (return - (i32.const 0) - ) - ) - (func $stackSave (; 53 ;) (result i32) - (return - (global.get $STACKTOP) - ) - ) - (func $b2 (; 54 ;) (param $i1 i32) - (call $abort - (i32.const 2) - ) - ) -) diff -Nru binaryen-91/test/empty_4GB.asm.js binaryen-99/test/empty_4GB.asm.js --- binaryen-91/test/empty_4GB.asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/empty_4GB.asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -function EmptyModule() { - 'use asm'; - return {}; -} diff -Nru binaryen-91/test/empty_4GB.fromasm binaryen-99/test/empty_4GB.fromasm --- binaryen-91/test/empty_4GB.fromasm 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/empty_4GB.fromasm 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -(module - (import "env" "memory" (memory $memory 256 65536)) - (data (i32.const 1024) "empty_4GB.asm.js") -) diff -Nru binaryen-91/test/empty_4GB.fromasm.clamp binaryen-99/test/empty_4GB.fromasm.clamp --- binaryen-91/test/empty_4GB.fromasm.clamp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/empty_4GB.fromasm.clamp 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -(module - (import "env" "memory" (memory $memory 256 65536)) - (data (i32.const 1024) "empty_4GB.asm.js") -) diff -Nru binaryen-91/test/empty_4GB.fromasm.clamp.no-opts binaryen-99/test/empty_4GB.fromasm.clamp.no-opts --- binaryen-91/test/empty_4GB.fromasm.clamp.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/empty_4GB.fromasm.clamp.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -(module - (import "env" "memory" (memory $memory 256 65536)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) -) diff -Nru binaryen-91/test/empty_4GB.fromasm.imprecise binaryen-99/test/empty_4GB.fromasm.imprecise --- binaryen-91/test/empty_4GB.fromasm.imprecise 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/empty_4GB.fromasm.imprecise 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -(module -) diff -Nru binaryen-91/test/empty_4GB.fromasm.imprecise.no-opts binaryen-99/test/empty_4GB.fromasm.imprecise.no-opts --- binaryen-91/test/empty_4GB.fromasm.imprecise.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/empty_4GB.fromasm.imprecise.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -(module - (import "env" "memory" (memory $memory 256 65536)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) -) diff -Nru binaryen-91/test/empty_4GB.fromasm.no-opts binaryen-99/test/empty_4GB.fromasm.no-opts --- binaryen-91/test/empty_4GB.fromasm.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/empty_4GB.fromasm.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -(module - (import "env" "memory" (memory $memory 256 65536)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) -) diff -Nru binaryen-91/test/empty.asm.js binaryen-99/test/empty.asm.js --- binaryen-91/test/empty.asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/empty.asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -function EmptyModule() { - 'use asm'; - return {}; -} diff -Nru binaryen-91/test/empty.fromasm binaryen-99/test/empty.fromasm --- binaryen-91/test/empty.fromasm 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/empty.fromasm 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -(module - (import "env" "memory" (memory $memory 256 256)) - (data (i32.const 1024) "empty.asm.js") -) diff -Nru binaryen-91/test/empty.fromasm.clamp binaryen-99/test/empty.fromasm.clamp --- binaryen-91/test/empty.fromasm.clamp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/empty.fromasm.clamp 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -(module - (import "env" "memory" (memory $memory 256 256)) - (data (i32.const 1024) "empty.asm.js") -) diff -Nru binaryen-91/test/empty.fromasm.clamp.no-opts binaryen-99/test/empty.fromasm.clamp.no-opts --- binaryen-91/test/empty.fromasm.clamp.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/empty.fromasm.clamp.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -(module - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) -) diff -Nru binaryen-91/test/empty.fromasm.imprecise binaryen-99/test/empty.fromasm.imprecise --- binaryen-91/test/empty.fromasm.imprecise 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/empty.fromasm.imprecise 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -(module -) diff -Nru binaryen-91/test/empty.fromasm.imprecise.no-opts binaryen-99/test/empty.fromasm.imprecise.no-opts --- binaryen-91/test/empty.fromasm.imprecise.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/empty.fromasm.imprecise.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -(module - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) -) diff -Nru binaryen-91/test/empty.fromasm.no-opts binaryen-99/test/empty.fromasm.no-opts --- binaryen-91/test/empty.fromasm.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/empty.fromasm.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -(module - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) -) diff -Nru binaryen-91/test/empty_imported_table.wast.from-wast binaryen-99/test/empty_imported_table.wast.from-wast --- binaryen-91/test/empty_imported_table.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/empty_imported_table.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,4 +1,4 @@ (module - (import "env" "table" (table $0 0 0 funcref)) + (import "env" "table" (table $timport$0 0 0 funcref)) (memory $0 0) ) diff -Nru binaryen-91/test/events.wast.from-wast binaryen-99/test/events.wast.from-wast --- binaryen-91/test/events.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/events.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -3,7 +3,7 @@ (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) (import "env" "im0" (event $e-import (attr 0) (param i32))) - (import "env" "im1" (event $import$event1 (attr 0) (param i32 f32))) + (import "env" "im1" (event $eimport$1 (attr 0) (param i32 f32))) (event $2 (attr 0) (param i32)) (event $e (attr 0) (param i32 f32)) (event $empty (attr 0) (param)) diff -Nru binaryen-91/test/example/c-api-hello-world.txt binaryen-99/test/example/c-api-hello-world.txt --- binaryen-91/test/example/c-api-hello-world.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/example/c-api-hello-world.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (func $adder (; 0 ;) (param $0 i32) (param $1 i32) (result i32) + (func $adder (param $0 i32) (param $1 i32) (result i32) (i32.add (local.get $0) (local.get $1) diff -Nru binaryen-91/test/example/c-api-kitchen-sink.c binaryen-99/test/example/c-api-kitchen-sink.c --- binaryen-91/test/example/c-api-kitchen-sink.c 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/example/c-api-kitchen-sink.c 2021-01-07 20:01:06.000000000 +0000 @@ -199,17 +199,11 @@ BinaryenTypeExpand(funcref, &valueType); assert(valueType == funcref); - BinaryenType anyref = BinaryenTypeAnyref(); - printf(" // BinaryenTypeAnyref: %d\n", anyref); - assert(BinaryenTypeArity(anyref) == 1); - BinaryenTypeExpand(anyref, &valueType); - assert(valueType == anyref); - - BinaryenType nullref = BinaryenTypeNullref(); - printf(" // BinaryenTypeNullref: %d\n", nullref); - assert(BinaryenTypeArity(nullref) == 1); - BinaryenTypeExpand(nullref, &valueType); - assert(valueType == nullref); + BinaryenType externref = BinaryenTypeExternref(); + printf(" // BinaryenTypeExternref: %d\n", externref); + assert(BinaryenTypeArity(externref) == 1); + BinaryenTypeExpand(externref, &valueType); + assert(valueType == externref); BinaryenType exnref = BinaryenTypeExnref(); printf(" // BinaryenTypeExnref: %d\n", exnref); @@ -217,6 +211,24 @@ BinaryenTypeExpand(exnref, &valueType); assert(valueType == exnref); + BinaryenType anyref = BinaryenTypeAnyref(); + printf(" // BinaryenTypeAnyref: %d\n", anyref); + assert(BinaryenTypeArity(anyref) == 1); + BinaryenTypeExpand(anyref, &valueType); + assert(valueType == anyref); + + BinaryenType eqref = BinaryenTypeEqref(); + printf(" // BinaryenTypeEqref: %d\n", eqref); + assert(BinaryenTypeArity(eqref) == 1); + BinaryenTypeExpand(eqref, &valueType); + assert(valueType == eqref); + + BinaryenType i31ref = BinaryenTypeI31ref(); + printf(" // BinaryenTypeI31ref: %d\n", i31ref); + assert(BinaryenTypeArity(i31ref) == 1); + BinaryenTypeExpand(i31ref, &valueType); + assert(valueType == i31ref); + printf(" // BinaryenTypeAuto: %d\n", BinaryenTypeAuto()); BinaryenType pair[] = {i32, i32}; @@ -246,6 +258,9 @@ printf("BinaryenFeatureExceptionHandling: %d\n", BinaryenFeatureExceptionHandling()); printf("BinaryenFeatureTailCall: %d\n", BinaryenFeatureTailCall()); printf("BinaryenFeatureReferenceTypes: %d\n", BinaryenFeatureReferenceTypes()); + printf("BinaryenFeatureMultivalue: %d\n", BinaryenFeatureMultivalue()); + printf("BinaryenFeatureGC: %d\n", BinaryenFeatureGC()); + printf("BinaryenFeatureMemory64: %d\n", BinaryenFeatureMemory64()); printf("BinaryenFeatureAll: %d\n", BinaryenFeatureAll()); } @@ -271,6 +286,14 @@ BinaryenExpressionRef callOperands2[] = { makeInt32(module, 13), makeFloat64(module, 3.7) }; BinaryenExpressionRef callOperands4[] = { makeInt32(module, 13), makeInt64(module, 37), makeFloat32(module, 1.3f), makeFloat64(module, 3.7) }; BinaryenExpressionRef callOperands4b[] = { makeInt32(module, 13), makeInt64(module, 37), makeFloat32(module, 1.3f), makeFloat64(module, 3.7) }; + BinaryenExpressionRef tupleElements4a[] = {makeInt32(module, 13), + makeInt64(module, 37), + makeFloat32(module, 1.3f), + makeFloat64(module, 3.7)}; + BinaryenExpressionRef tupleElements4b[] = {makeInt32(module, 13), + makeInt64(module, 37), + makeFloat32(module, 1.3f), + makeFloat64(module, 3.7)}; BinaryenType iIfF_[4] = {BinaryenTypeInt32(), BinaryenTypeInt64(), @@ -285,9 +308,12 @@ temp10 = makeInt32(module, 1), temp11 = makeInt32(module, 3), temp12 = makeInt32(module, 5), temp13 = makeInt32(module, 10), temp14 = makeInt32(module, 11), temp15 = makeInt32(module, 110), temp16 = makeInt64(module, 111); - BinaryenExpressionRef nullrefExpr = BinaryenRefNull(module); - BinaryenExpressionRef funcrefExpr = - BinaryenRefFunc(module, "kitchen()sinker"); + BinaryenExpressionRef externrefExpr = BinaryenRefNull(module, BinaryenTypeExternref()); + BinaryenExpressionRef funcrefExpr = BinaryenRefNull(module, BinaryenTypeFuncref()); + funcrefExpr = + BinaryenRefFunc(module, "kitchen()sinker", BinaryenTypeFuncref()); + BinaryenExpressionRef exnrefExpr = BinaryenRefNull(module, BinaryenTypeExnref()); + BinaryenExpressionRef i31refExpr = BinaryenI31New(module, makeInt32(module, 1)); // Events BinaryenAddEvent( @@ -296,7 +322,9 @@ // Exception handling // (try - // (throw $a-event (i32.const 0)) + // (do + // (throw $a-event (i32.const 0)) + // ) // (catch // ;; We don't support multi-value yet. Use locals instead. // (local.set 0 (exnref.pop)) @@ -391,18 +419,22 @@ makeUnary(module, BinaryenSplatVecF32x4(), f32), makeUnary(module, BinaryenSplatVecF64x2(), f64), makeUnary(module, BinaryenNotVec128(), v128), + makeUnary(module, BinaryenAbsVecI8x16(), v128), makeUnary(module, BinaryenNegVecI8x16(), v128), makeUnary(module, BinaryenAnyTrueVecI8x16(), v128), makeUnary(module, BinaryenAllTrueVecI8x16(), v128), + makeUnary(module, BinaryenBitmaskVecI8x16(), v128), + makeUnary(module, BinaryenAbsVecI16x8(), v128), makeUnary(module, BinaryenNegVecI16x8(), v128), makeUnary(module, BinaryenAnyTrueVecI16x8(), v128), makeUnary(module, BinaryenAllTrueVecI16x8(), v128), + makeUnary(module, BinaryenBitmaskVecI16x8(), v128), + makeUnary(module, BinaryenAbsVecI32x4(), v128), makeUnary(module, BinaryenNegVecI32x4(), v128), makeUnary(module, BinaryenAnyTrueVecI32x4(), v128), makeUnary(module, BinaryenAllTrueVecI32x4(), v128), + makeUnary(module, BinaryenBitmaskVecI32x4(), v128), makeUnary(module, BinaryenNegVecI64x2(), v128), - makeUnary(module, BinaryenAnyTrueVecI64x2(), v128), - makeUnary(module, BinaryenAllTrueVecI64x2(), v128), makeUnary(module, BinaryenAbsVecF32x4(), v128), makeUnary(module, BinaryenNegVecF32x4(), v128), makeUnary(module, BinaryenSqrtVecF32x4(), v128), @@ -533,6 +565,7 @@ makeBinary(module, BinaryenMulVecI32x4(), v128), makeBinary(module, BinaryenAddVecI64x2(), v128), makeBinary(module, BinaryenSubVecI64x2(), v128), + makeBinary(module, BinaryenMulVecI64x2(), v128), makeBinary(module, BinaryenAddVecF32x4(), v128), makeBinary(module, BinaryenSubVecF32x4(), v128), makeBinary(module, BinaryenMulVecF32x4(), v128), @@ -544,12 +577,24 @@ makeBinary(module, BinaryenDivVecF32x4(), v128), makeBinary(module, BinaryenMinVecF32x4(), v128), makeBinary(module, BinaryenMaxVecF32x4(), v128), + makeBinary(module, BinaryenPMinVecF32x4(), v128), + makeBinary(module, BinaryenPMaxVecF32x4(), v128), + makeUnary(module, BinaryenCeilVecF32x4(), v128), + makeUnary(module, BinaryenFloorVecF32x4(), v128), + makeUnary(module, BinaryenTruncVecF32x4(), v128), + makeUnary(module, BinaryenNearestVecF32x4(), v128), makeBinary(module, BinaryenAddVecF64x2(), v128), makeBinary(module, BinaryenSubVecF64x2(), v128), makeBinary(module, BinaryenMulVecF64x2(), v128), makeBinary(module, BinaryenDivVecF64x2(), v128), makeBinary(module, BinaryenMinVecF64x2(), v128), makeBinary(module, BinaryenMaxVecF64x2(), v128), + makeBinary(module, BinaryenPMinVecF64x2(), v128), + makeBinary(module, BinaryenPMaxVecF64x2(), v128), + makeUnary(module, BinaryenCeilVecF64x2(), v128), + makeUnary(module, BinaryenFloorVecF64x2(), v128), + makeUnary(module, BinaryenTruncVecF64x2(), v128), + makeUnary(module, BinaryenNearestVecF64x2(), v128), makeBinary(module, BinaryenNarrowSVecI16x8ToVecI8x16(), v128), makeBinary(module, BinaryenNarrowUVecI16x8ToVecI8x16(), v128), makeBinary(module, BinaryenNarrowSVecI32x4ToVecI16x8(), v128), @@ -688,10 +733,19 @@ iIfF, BinaryenTypeInt32()), // Reference types - BinaryenRefIsNull(module, nullrefExpr), + BinaryenRefIsNull(module, externrefExpr), BinaryenRefIsNull(module, funcrefExpr), + BinaryenRefIsNull(module, exnrefExpr), BinaryenSelect( - module, temp10, nullrefExpr, funcrefExpr, BinaryenTypeFuncref()), + module, + temp10, + BinaryenRefNull(module, BinaryenTypeFuncref()), + BinaryenRefFunc(module, "kitchen()sinker", BinaryenTypeFuncref()), + BinaryenTypeFuncref()), + // GC + BinaryenRefEq(module, + BinaryenRefNull(module, BinaryenTypeEqref()), + BinaryenRefNull(module, BinaryenTypeEqref())), // Exception handling BinaryenTry(module, tryBody, catchBody), // Atomics @@ -707,20 +761,27 @@ BinaryenAtomicWait(module, temp6, temp6, temp16, BinaryenTypeInt32())), BinaryenDrop(module, BinaryenAtomicNotify(module, temp6, temp6)), BinaryenAtomicFence(module), - // Push and pop - BinaryenPush(module, BinaryenPop(module, BinaryenTypeInt32())), - BinaryenPush(module, BinaryenPop(module, BinaryenTypeInt64())), - BinaryenPush(module, BinaryenPop(module, BinaryenTypeFloat32())), - BinaryenPush(module, BinaryenPop(module, BinaryenTypeFloat64())), - BinaryenPush(module, BinaryenPop(module, BinaryenTypeFuncref())), - BinaryenPush(module, BinaryenPop(module, BinaryenTypeAnyref())), - BinaryenPush(module, BinaryenPop(module, BinaryenTypeNullref())), - BinaryenPush(module, BinaryenPop(module, BinaryenTypeExnref())), - BinaryenPush(module, BinaryenPop(module, BinaryenTypeFuncref())), - BinaryenPush(module, BinaryenPop(module, BinaryenTypeNullref())), - BinaryenPush(module, BinaryenPop(module, BinaryenTypeExnref())), - - // TODO: Host + // Tuples + BinaryenTupleMake(module, tupleElements4a, 4), + BinaryenTupleExtract( + module, BinaryenTupleMake(module, tupleElements4b, 4), 2), + // Pop + BinaryenPop(module, BinaryenTypeInt32()), + BinaryenPop(module, BinaryenTypeInt64()), + BinaryenPop(module, BinaryenTypeFloat32()), + BinaryenPop(module, BinaryenTypeFloat64()), + BinaryenPop(module, BinaryenTypeFuncref()), + BinaryenPop(module, BinaryenTypeExternref()), + BinaryenPop(module, BinaryenTypeExnref()), + BinaryenPop(module, iIfF), + // Memory + BinaryenMemorySize(module), + BinaryenMemoryGrow(module, makeInt32(module, 0)), + // GC + BinaryenI31New(module, makeInt32(module, 0)), + BinaryenI31Get(module, i31refExpr, 1), + BinaryenI31Get(module, BinaryenI31New(module, makeInt32(module, 2)), 0), + // Other BinaryenNop(module), BinaryenUnreachable(module), }; @@ -728,11 +789,17 @@ BinaryenExpressionPrint(valueList[3]); // test printing a standalone expression // Make the main body of the function. and one block with a return value, one without - BinaryenExpressionRef value = BinaryenBlock(module, "the-value", valueList, sizeof(valueList) / sizeof(BinaryenExpressionRef), -1); + BinaryenExpressionRef value = + BinaryenBlock(module, + "the-value", + valueList, + sizeof(valueList) / sizeof(BinaryenExpressionRef), + BinaryenTypeAuto()); BinaryenExpressionRef droppedValue = BinaryenDrop(module, value); BinaryenExpressionRef nothing = BinaryenBlock(module, "the-nothing", &droppedValue, 1, -1); BinaryenExpressionRef bodyList[] = { nothing, makeInt32(module, 42) }; - BinaryenExpressionRef body = BinaryenBlock(module, "the-body", bodyList, 2, -1); + BinaryenExpressionRef body = + BinaryenBlock(module, "the-body", bodyList, 2, BinaryenTypeAuto()); // Create the function BinaryenType localTypes[] = {BinaryenTypeInt32(), BinaryenTypeExnref()}; @@ -1201,14 +1268,6 @@ } } -void test_tracing() { - BinaryenSetAPITracing(1); - test_core(); - test_relooper(); - test_types(); - BinaryenSetAPITracing(0); -} - void test_color_status() { int i; @@ -1306,9 +1365,32 @@ BinaryenModuleDispose(module); } +void test_func_opt() { + BinaryenModuleRef module = BinaryenModuleCreate(); + BinaryenType ii_[2] = {BinaryenTypeInt32(), BinaryenTypeInt32()}; + BinaryenType ii = BinaryenTypeCreate(ii_, 2); + BinaryenExpressionRef x = BinaryenConst(module, BinaryenLiteralInt32(1)), + y = BinaryenConst(module, BinaryenLiteralInt32(3)); + BinaryenExpressionRef add = BinaryenBinary(module, BinaryenAddInt32(), x, y); + BinaryenFunctionRef adder = BinaryenAddFunction( + module, "adder", BinaryenTypeNone(), BinaryenTypeInt32(), NULL, 0, add); + + puts("module with a function to optimize:"); + BinaryenModulePrint(module); + + assert(BinaryenModuleValidate(module)); + + BinaryenFunctionOptimize(adder, module); + + assert(BinaryenModuleValidate(module)); + + puts("optimized:"); + BinaryenModulePrint(module); + + BinaryenModuleDispose(module); +} + int main() { - // Tracing must be first so it starts with a fresh set of interned types - test_tracing(); test_types(); test_features(); test_core(); @@ -1319,6 +1401,7 @@ test_nonvalid(); test_color_status(); test_for_each(); + test_func_opt(); return 0; } diff -Nru binaryen-91/test/example/c-api-kitchen-sink.txt binaryen-99/test/example/c-api-kitchen-sink.txt --- binaryen-91/test/example/c-api-kitchen-sink.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/example/c-api-kitchen-sink.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,4446 +1,3 @@ -// beginning a Binaryen API trace -#include -#include -#include "binaryen-c.h" -int main() { - std::map expressions; - std::map functions; - std::map globals; - std::map events; - std::map exports; - std::map relooperBlocks; - BinaryenModuleRef the_module = NULL; - RelooperRef the_relooper = NULL; - the_module = BinaryenModuleCreate(); - expressions[size_t(NULL)] = BinaryenExpressionRef(NULL); - expressions[1] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[2] = BinaryenConst(the_module, BinaryenLiteralInt64(2)); - expressions[3] = BinaryenConst(the_module, BinaryenLiteralFloat32(3.14)); - expressions[4] = BinaryenConst(the_module, BinaryenLiteralFloat64(2.1828)); - expressions[5] = BinaryenConst(the_module, BinaryenLiteralFloat32(NAN)); - expressions[6] = BinaryenConst(the_module, BinaryenLiteralFloat64(NAN)); - { - uint8_t t0[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[7] = BinaryenConst(the_module, BinaryenLiteralVec128(t0)); - } - expressions[8] = BinaryenConst(the_module, BinaryenLiteralInt32(13)); - expressions[9] = BinaryenConst(the_module, BinaryenLiteralFloat64(3.7)); - expressions[10] = BinaryenConst(the_module, BinaryenLiteralInt32(13)); - expressions[11] = BinaryenConst(the_module, BinaryenLiteralInt64(37)); - expressions[12] = BinaryenConst(the_module, BinaryenLiteralFloat32(1.3)); - expressions[13] = BinaryenConst(the_module, BinaryenLiteralFloat64(3.7)); - expressions[14] = BinaryenConst(the_module, BinaryenLiteralInt32(13)); - expressions[15] = BinaryenConst(the_module, BinaryenLiteralInt64(37)); - expressions[16] = BinaryenConst(the_module, BinaryenLiteralFloat32(1.3)); - expressions[17] = BinaryenConst(the_module, BinaryenLiteralFloat64(3.7)); - { - BinaryenType t1[] = {2, 3, 4, 5}; - BinaryenTypeCreate(t1, 4); // 11 - } - expressions[18] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[19] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - expressions[20] = BinaryenConst(the_module, BinaryenLiteralInt32(3)); - expressions[21] = BinaryenConst(the_module, BinaryenLiteralInt32(4)); - expressions[22] = BinaryenConst(the_module, BinaryenLiteralInt32(5)); - expressions[23] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - expressions[24] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[25] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - expressions[26] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[27] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[28] = BinaryenConst(the_module, BinaryenLiteralInt32(3)); - expressions[29] = BinaryenConst(the_module, BinaryenLiteralInt32(5)); - expressions[30] = BinaryenConst(the_module, BinaryenLiteralInt32(10)); - expressions[31] = BinaryenConst(the_module, BinaryenLiteralInt32(11)); - expressions[32] = BinaryenConst(the_module, BinaryenLiteralInt32(110)); - expressions[33] = BinaryenConst(the_module, BinaryenLiteralInt64(111)); - expressions[34] = BinaryenRefNull(the_module); - expressions[35] = BinaryenRefFunc(the_module, "kitchen()sinker"); - BinaryenAddEvent(the_module, "a-event", 0, 2, 0); - expressions[36] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[36] }; - expressions[37] = BinaryenThrow(the_module, "a-event", operands, 1); - } - expressions[38] = BinaryenPop(the_module, 10); - expressions[39] = BinaryenLocalSet(the_module, 5, expressions[38]); - expressions[40] = BinaryenLocalGet(the_module, 5, 10); - expressions[41] = BinaryenBrOnExn(the_module, "try-block", "a-event", expressions[40]); - expressions[42] = BinaryenRethrow(the_module, expressions[41]); - { - BinaryenExpressionRef children[] = { expressions[42] }; - expressions[43] = BinaryenBlock(the_module, "try-block", children, 1, 2); - } - expressions[44] = BinaryenDrop(the_module, expressions[43]); - { - BinaryenExpressionRef children[] = { expressions[39], expressions[44] }; - expressions[45] = BinaryenBlock(the_module, NULL, children, 2, 0); - } - expressions[46] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[47] = BinaryenUnary(the_module, 0, expressions[46]); - expressions[48] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[49] = BinaryenUnary(the_module, 3, expressions[48]); - expressions[50] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[51] = BinaryenUnary(the_module, 4, expressions[50]); - expressions[52] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[53] = BinaryenUnary(the_module, 6, expressions[52]); - expressions[54] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[55] = BinaryenUnary(the_module, 9, expressions[54]); - expressions[56] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[57] = BinaryenUnary(the_module, 10, expressions[56]); - expressions[58] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[59] = BinaryenUnary(the_module, 13, expressions[58]); - expressions[60] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[61] = BinaryenUnary(the_module, 14, expressions[60]); - expressions[62] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[63] = BinaryenUnary(the_module, 16, expressions[62]); - expressions[64] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[65] = BinaryenUnary(the_module, 19, expressions[64]); - expressions[66] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[67] = BinaryenUnary(the_module, 20, expressions[66]); - expressions[68] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[69] = BinaryenUnary(the_module, 22, expressions[68]); - expressions[70] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[71] = BinaryenUnary(the_module, 23, expressions[70]); - expressions[72] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[73] = BinaryenUnary(the_module, 24, expressions[72]); - expressions[74] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[75] = BinaryenUnary(the_module, 25, expressions[74]); - expressions[76] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[77] = BinaryenUnary(the_module, 26, expressions[76]); - expressions[78] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[79] = BinaryenUnary(the_module, 27, expressions[78]); - expressions[80] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[81] = BinaryenUnary(the_module, 28, expressions[80]); - expressions[82] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[83] = BinaryenUnary(the_module, 29, expressions[82]); - expressions[84] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[85] = BinaryenUnary(the_module, 30, expressions[84]); - expressions[86] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[87] = BinaryenUnary(the_module, 31, expressions[86]); - expressions[88] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[89] = BinaryenUnary(the_module, 32, expressions[88]); - expressions[90] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[91] = BinaryenUnary(the_module, 52, expressions[90]); - expressions[92] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[93] = BinaryenUnary(the_module, 56, expressions[92]); - expressions[94] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[95] = BinaryenUnary(the_module, 53, expressions[94]); - expressions[96] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[97] = BinaryenUnary(the_module, 57, expressions[96]); - expressions[98] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[99] = BinaryenUnary(the_module, 54, expressions[98]); - expressions[100] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[101] = BinaryenUnary(the_module, 58, expressions[100]); - expressions[102] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[103] = BinaryenUnary(the_module, 55, expressions[102]); - expressions[104] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[105] = BinaryenUnary(the_module, 59, expressions[104]); - expressions[106] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[107] = BinaryenUnary(the_module, 33, expressions[106]); - expressions[108] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[109] = BinaryenUnary(the_module, 34, expressions[108]); - expressions[110] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[111] = BinaryenUnary(the_module, 35, expressions[110]); - expressions[112] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[113] = BinaryenUnary(the_module, 36, expressions[112]); - expressions[114] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[115] = BinaryenUnary(the_module, 37, expressions[114]); - expressions[116] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[117] = BinaryenUnary(the_module, 38, expressions[116]); - expressions[118] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[119] = BinaryenUnary(the_module, 39, expressions[118]); - expressions[120] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[121] = BinaryenUnary(the_module, 40, expressions[120]); - expressions[122] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[123] = BinaryenUnary(the_module, 41, expressions[122]); - expressions[124] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[125] = BinaryenUnary(the_module, 42, expressions[124]); - expressions[126] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[127] = BinaryenUnary(the_module, 43, expressions[126]); - expressions[128] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[129] = BinaryenUnary(the_module, 44, expressions[128]); - expressions[130] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[131] = BinaryenUnary(the_module, 45, expressions[130]); - expressions[132] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[133] = BinaryenUnary(the_module, 46, expressions[132]); - expressions[134] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[135] = BinaryenUnary(the_module, 60, expressions[134]); - expressions[136] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[137] = BinaryenUnary(the_module, 61, expressions[136]); - expressions[138] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[139] = BinaryenUnary(the_module, 62, expressions[138]); - expressions[140] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[141] = BinaryenUnary(the_module, 63, expressions[140]); - expressions[142] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[143] = BinaryenUnary(the_module, 64, expressions[142]); - expressions[144] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[145] = BinaryenUnary(the_module, 65, expressions[144]); - { - uint8_t t2[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[146] = BinaryenConst(the_module, BinaryenLiteralVec128(t2)); - } - expressions[147] = BinaryenUnary(the_module, 66, expressions[146]); - { - uint8_t t3[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[148] = BinaryenConst(the_module, BinaryenLiteralVec128(t3)); - } - expressions[149] = BinaryenUnary(the_module, 67, expressions[148]); - { - uint8_t t4[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[150] = BinaryenConst(the_module, BinaryenLiteralVec128(t4)); - } - expressions[151] = BinaryenUnary(the_module, 68, expressions[150]); - { - uint8_t t5[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[152] = BinaryenConst(the_module, BinaryenLiteralVec128(t5)); - } - expressions[153] = BinaryenUnary(the_module, 69, expressions[152]); - { - uint8_t t6[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[154] = BinaryenConst(the_module, BinaryenLiteralVec128(t6)); - } - expressions[155] = BinaryenUnary(the_module, 70, expressions[154]); - { - uint8_t t7[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[156] = BinaryenConst(the_module, BinaryenLiteralVec128(t7)); - } - expressions[157] = BinaryenUnary(the_module, 71, expressions[156]); - { - uint8_t t8[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[158] = BinaryenConst(the_module, BinaryenLiteralVec128(t8)); - } - expressions[159] = BinaryenUnary(the_module, 72, expressions[158]); - { - uint8_t t9[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[160] = BinaryenConst(the_module, BinaryenLiteralVec128(t9)); - } - expressions[161] = BinaryenUnary(the_module, 73, expressions[160]); - { - uint8_t t10[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[162] = BinaryenConst(the_module, BinaryenLiteralVec128(t10)); - } - expressions[163] = BinaryenUnary(the_module, 74, expressions[162]); - { - uint8_t t11[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[164] = BinaryenConst(the_module, BinaryenLiteralVec128(t11)); - } - expressions[165] = BinaryenUnary(the_module, 75, expressions[164]); - { - uint8_t t12[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[166] = BinaryenConst(the_module, BinaryenLiteralVec128(t12)); - } - expressions[167] = BinaryenUnary(the_module, 76, expressions[166]); - { - uint8_t t13[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[168] = BinaryenConst(the_module, BinaryenLiteralVec128(t13)); - } - expressions[169] = BinaryenUnary(the_module, 77, expressions[168]); - { - uint8_t t14[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[170] = BinaryenConst(the_module, BinaryenLiteralVec128(t14)); - } - expressions[171] = BinaryenUnary(the_module, 78, expressions[170]); - { - uint8_t t15[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[172] = BinaryenConst(the_module, BinaryenLiteralVec128(t15)); - } - expressions[173] = BinaryenUnary(the_module, 79, expressions[172]); - { - uint8_t t16[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[174] = BinaryenConst(the_module, BinaryenLiteralVec128(t16)); - } - expressions[175] = BinaryenUnary(the_module, 80, expressions[174]); - { - uint8_t t17[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[176] = BinaryenConst(the_module, BinaryenLiteralVec128(t17)); - } - expressions[177] = BinaryenUnary(the_module, 81, expressions[176]); - { - uint8_t t18[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[178] = BinaryenConst(the_module, BinaryenLiteralVec128(t18)); - } - expressions[179] = BinaryenUnary(the_module, 82, expressions[178]); - { - uint8_t t19[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[180] = BinaryenConst(the_module, BinaryenLiteralVec128(t19)); - } - expressions[181] = BinaryenUnary(the_module, 83, expressions[180]); - { - uint8_t t20[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[182] = BinaryenConst(the_module, BinaryenLiteralVec128(t20)); - } - expressions[183] = BinaryenUnary(the_module, 84, expressions[182]); - { - uint8_t t21[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[184] = BinaryenConst(the_module, BinaryenLiteralVec128(t21)); - } - expressions[185] = BinaryenUnary(the_module, 85, expressions[184]); - { - uint8_t t22[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[186] = BinaryenConst(the_module, BinaryenLiteralVec128(t22)); - } - expressions[187] = BinaryenUnary(the_module, 86, expressions[186]); - { - uint8_t t23[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[188] = BinaryenConst(the_module, BinaryenLiteralVec128(t23)); - } - expressions[189] = BinaryenUnary(the_module, 87, expressions[188]); - { - uint8_t t24[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[190] = BinaryenConst(the_module, BinaryenLiteralVec128(t24)); - } - expressions[191] = BinaryenUnary(the_module, 88, expressions[190]); - { - uint8_t t25[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[192] = BinaryenConst(the_module, BinaryenLiteralVec128(t25)); - } - expressions[193] = BinaryenUnary(the_module, 89, expressions[192]); - { - uint8_t t26[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[194] = BinaryenConst(the_module, BinaryenLiteralVec128(t26)); - } - expressions[195] = BinaryenUnary(the_module, 90, expressions[194]); - { - uint8_t t27[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[196] = BinaryenConst(the_module, BinaryenLiteralVec128(t27)); - } - expressions[197] = BinaryenUnary(the_module, 91, expressions[196]); - { - uint8_t t28[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[198] = BinaryenConst(the_module, BinaryenLiteralVec128(t28)); - } - expressions[199] = BinaryenUnary(the_module, 92, expressions[198]); - { - uint8_t t29[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[200] = BinaryenConst(the_module, BinaryenLiteralVec128(t29)); - } - expressions[201] = BinaryenUnary(the_module, 93, expressions[200]); - { - uint8_t t30[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[202] = BinaryenConst(the_module, BinaryenLiteralVec128(t30)); - } - expressions[203] = BinaryenUnary(the_module, 94, expressions[202]); - { - uint8_t t31[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[204] = BinaryenConst(the_module, BinaryenLiteralVec128(t31)); - } - expressions[205] = BinaryenUnary(the_module, 95, expressions[204]); - { - uint8_t t32[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[206] = BinaryenConst(the_module, BinaryenLiteralVec128(t32)); - } - expressions[207] = BinaryenUnary(the_module, 96, expressions[206]); - { - uint8_t t33[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[208] = BinaryenConst(the_module, BinaryenLiteralVec128(t33)); - } - expressions[209] = BinaryenUnary(the_module, 97, expressions[208]); - { - uint8_t t34[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[210] = BinaryenConst(the_module, BinaryenLiteralVec128(t34)); - } - expressions[211] = BinaryenUnary(the_module, 98, expressions[210]); - { - uint8_t t35[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[212] = BinaryenConst(the_module, BinaryenLiteralVec128(t35)); - } - expressions[213] = BinaryenUnary(the_module, 99, expressions[212]); - { - uint8_t t36[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[214] = BinaryenConst(the_module, BinaryenLiteralVec128(t36)); - } - expressions[215] = BinaryenUnary(the_module, 100, expressions[214]); - expressions[216] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[217] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[218] = BinaryenBinary(the_module, 0, expressions[217], expressions[216]); - expressions[219] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9007.33)); - expressions[220] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[221] = BinaryenBinary(the_module, 64, expressions[220], expressions[219]); - expressions[222] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[223] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[224] = BinaryenBinary(the_module, 3, expressions[223], expressions[222]); - expressions[225] = BinaryenConst(the_module, BinaryenLiteralInt64(-23)); - expressions[226] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[227] = BinaryenBinary(the_module, 29, expressions[226], expressions[225]); - expressions[228] = BinaryenConst(the_module, BinaryenLiteralInt64(-23)); - expressions[229] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[230] = BinaryenBinary(the_module, 30, expressions[229], expressions[228]); - expressions[231] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[232] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[233] = BinaryenBinary(the_module, 6, expressions[232], expressions[231]); - expressions[234] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[235] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[236] = BinaryenBinary(the_module, 7, expressions[235], expressions[234]); - expressions[237] = BinaryenConst(the_module, BinaryenLiteralInt64(-23)); - expressions[238] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[239] = BinaryenBinary(the_module, 33, expressions[238], expressions[237]); - expressions[240] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[241] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[242] = BinaryenBinary(the_module, 9, expressions[241], expressions[240]); - expressions[243] = BinaryenConst(the_module, BinaryenLiteralInt64(-23)); - expressions[244] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[245] = BinaryenBinary(the_module, 35, expressions[244], expressions[243]); - expressions[246] = BinaryenConst(the_module, BinaryenLiteralInt64(-23)); - expressions[247] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[248] = BinaryenBinary(the_module, 36, expressions[247], expressions[246]); - expressions[249] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[250] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[251] = BinaryenBinary(the_module, 12, expressions[250], expressions[249]); - expressions[252] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[253] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[254] = BinaryenBinary(the_module, 13, expressions[253], expressions[252]); - expressions[255] = BinaryenConst(the_module, BinaryenLiteralInt64(-23)); - expressions[256] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[257] = BinaryenBinary(the_module, 39, expressions[256], expressions[255]); - expressions[258] = BinaryenConst(the_module, BinaryenLiteralFloat32(-62.5)); - expressions[259] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[260] = BinaryenBinary(the_module, 53, expressions[259], expressions[258]); - expressions[261] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9007.33)); - expressions[262] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[263] = BinaryenBinary(the_module, 67, expressions[262], expressions[261]); - expressions[264] = BinaryenConst(the_module, BinaryenLiteralFloat32(-62.5)); - expressions[265] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[266] = BinaryenBinary(the_module, 55, expressions[265], expressions[264]); - expressions[267] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9007.33)); - expressions[268] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[269] = BinaryenBinary(the_module, 69, expressions[268], expressions[267]); - expressions[270] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[271] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[272] = BinaryenBinary(the_module, 15, expressions[271], expressions[270]); - expressions[273] = BinaryenConst(the_module, BinaryenLiteralFloat32(-62.5)); - expressions[274] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[275] = BinaryenBinary(the_module, 58, expressions[274], expressions[273]); - expressions[276] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[277] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[278] = BinaryenBinary(the_module, 17, expressions[277], expressions[276]); - expressions[279] = BinaryenConst(the_module, BinaryenLiteralInt64(-23)); - expressions[280] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[281] = BinaryenBinary(the_module, 43, expressions[280], expressions[279]); - expressions[282] = BinaryenConst(the_module, BinaryenLiteralInt64(-23)); - expressions[283] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[284] = BinaryenBinary(the_module, 44, expressions[283], expressions[282]); - expressions[285] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[286] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[287] = BinaryenBinary(the_module, 20, expressions[286], expressions[285]); - expressions[288] = BinaryenConst(the_module, BinaryenLiteralInt64(-23)); - expressions[289] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[290] = BinaryenBinary(the_module, 46, expressions[289], expressions[288]); - expressions[291] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[292] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[293] = BinaryenBinary(the_module, 22, expressions[292], expressions[291]); - expressions[294] = BinaryenConst(the_module, BinaryenLiteralInt32(-11)); - expressions[295] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - expressions[296] = BinaryenBinary(the_module, 23, expressions[295], expressions[294]); - expressions[297] = BinaryenConst(the_module, BinaryenLiteralInt64(-23)); - expressions[298] = BinaryenConst(the_module, BinaryenLiteralInt64(-22)); - expressions[299] = BinaryenBinary(the_module, 49, expressions[298], expressions[297]); - expressions[300] = BinaryenConst(the_module, BinaryenLiteralFloat32(-62.5)); - expressions[301] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[302] = BinaryenBinary(the_module, 59, expressions[301], expressions[300]); - expressions[303] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9007.33)); - expressions[304] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[305] = BinaryenBinary(the_module, 73, expressions[304], expressions[303]); - expressions[306] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9007.33)); - expressions[307] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84)); - expressions[308] = BinaryenBinary(the_module, 74, expressions[307], expressions[306]); - expressions[309] = BinaryenConst(the_module, BinaryenLiteralFloat32(-62.5)); - expressions[310] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612)); - expressions[311] = BinaryenBinary(the_module, 62, expressions[310], expressions[309]); - { - uint8_t t37[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[312] = BinaryenConst(the_module, BinaryenLiteralVec128(t37)); - } - { - uint8_t t38[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[313] = BinaryenConst(the_module, BinaryenLiteralVec128(t38)); - } - expressions[314] = BinaryenBinary(the_module, 76, expressions[313], expressions[312]); - { - uint8_t t39[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[315] = BinaryenConst(the_module, BinaryenLiteralVec128(t39)); - } - { - uint8_t t40[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[316] = BinaryenConst(the_module, BinaryenLiteralVec128(t40)); - } - expressions[317] = BinaryenBinary(the_module, 77, expressions[316], expressions[315]); - { - uint8_t t41[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[318] = BinaryenConst(the_module, BinaryenLiteralVec128(t41)); - } - { - uint8_t t42[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[319] = BinaryenConst(the_module, BinaryenLiteralVec128(t42)); - } - expressions[320] = BinaryenBinary(the_module, 78, expressions[319], expressions[318]); - { - uint8_t t43[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[321] = BinaryenConst(the_module, BinaryenLiteralVec128(t43)); - } - { - uint8_t t44[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[322] = BinaryenConst(the_module, BinaryenLiteralVec128(t44)); - } - expressions[323] = BinaryenBinary(the_module, 79, expressions[322], expressions[321]); - { - uint8_t t45[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[324] = BinaryenConst(the_module, BinaryenLiteralVec128(t45)); - } - { - uint8_t t46[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[325] = BinaryenConst(the_module, BinaryenLiteralVec128(t46)); - } - expressions[326] = BinaryenBinary(the_module, 80, expressions[325], expressions[324]); - { - uint8_t t47[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[327] = BinaryenConst(the_module, BinaryenLiteralVec128(t47)); - } - { - uint8_t t48[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[328] = BinaryenConst(the_module, BinaryenLiteralVec128(t48)); - } - expressions[329] = BinaryenBinary(the_module, 81, expressions[328], expressions[327]); - { - uint8_t t49[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[330] = BinaryenConst(the_module, BinaryenLiteralVec128(t49)); - } - { - uint8_t t50[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[331] = BinaryenConst(the_module, BinaryenLiteralVec128(t50)); - } - expressions[332] = BinaryenBinary(the_module, 82, expressions[331], expressions[330]); - { - uint8_t t51[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[333] = BinaryenConst(the_module, BinaryenLiteralVec128(t51)); - } - { - uint8_t t52[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[334] = BinaryenConst(the_module, BinaryenLiteralVec128(t52)); - } - expressions[335] = BinaryenBinary(the_module, 83, expressions[334], expressions[333]); - { - uint8_t t53[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[336] = BinaryenConst(the_module, BinaryenLiteralVec128(t53)); - } - { - uint8_t t54[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[337] = BinaryenConst(the_module, BinaryenLiteralVec128(t54)); - } - expressions[338] = BinaryenBinary(the_module, 84, expressions[337], expressions[336]); - { - uint8_t t55[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[339] = BinaryenConst(the_module, BinaryenLiteralVec128(t55)); - } - { - uint8_t t56[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[340] = BinaryenConst(the_module, BinaryenLiteralVec128(t56)); - } - expressions[341] = BinaryenBinary(the_module, 85, expressions[340], expressions[339]); - { - uint8_t t57[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[342] = BinaryenConst(the_module, BinaryenLiteralVec128(t57)); - } - { - uint8_t t58[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[343] = BinaryenConst(the_module, BinaryenLiteralVec128(t58)); - } - expressions[344] = BinaryenBinary(the_module, 86, expressions[343], expressions[342]); - { - uint8_t t59[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[345] = BinaryenConst(the_module, BinaryenLiteralVec128(t59)); - } - { - uint8_t t60[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[346] = BinaryenConst(the_module, BinaryenLiteralVec128(t60)); - } - expressions[347] = BinaryenBinary(the_module, 87, expressions[346], expressions[345]); - { - uint8_t t61[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[348] = BinaryenConst(the_module, BinaryenLiteralVec128(t61)); - } - { - uint8_t t62[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[349] = BinaryenConst(the_module, BinaryenLiteralVec128(t62)); - } - expressions[350] = BinaryenBinary(the_module, 88, expressions[349], expressions[348]); - { - uint8_t t63[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[351] = BinaryenConst(the_module, BinaryenLiteralVec128(t63)); - } - { - uint8_t t64[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[352] = BinaryenConst(the_module, BinaryenLiteralVec128(t64)); - } - expressions[353] = BinaryenBinary(the_module, 89, expressions[352], expressions[351]); - { - uint8_t t65[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[354] = BinaryenConst(the_module, BinaryenLiteralVec128(t65)); - } - { - uint8_t t66[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[355] = BinaryenConst(the_module, BinaryenLiteralVec128(t66)); - } - expressions[356] = BinaryenBinary(the_module, 90, expressions[355], expressions[354]); - { - uint8_t t67[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[357] = BinaryenConst(the_module, BinaryenLiteralVec128(t67)); - } - { - uint8_t t68[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[358] = BinaryenConst(the_module, BinaryenLiteralVec128(t68)); - } - expressions[359] = BinaryenBinary(the_module, 91, expressions[358], expressions[357]); - { - uint8_t t69[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[360] = BinaryenConst(the_module, BinaryenLiteralVec128(t69)); - } - { - uint8_t t70[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[361] = BinaryenConst(the_module, BinaryenLiteralVec128(t70)); - } - expressions[362] = BinaryenBinary(the_module, 92, expressions[361], expressions[360]); - { - uint8_t t71[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[363] = BinaryenConst(the_module, BinaryenLiteralVec128(t71)); - } - { - uint8_t t72[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[364] = BinaryenConst(the_module, BinaryenLiteralVec128(t72)); - } - expressions[365] = BinaryenBinary(the_module, 93, expressions[364], expressions[363]); - { - uint8_t t73[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[366] = BinaryenConst(the_module, BinaryenLiteralVec128(t73)); - } - { - uint8_t t74[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[367] = BinaryenConst(the_module, BinaryenLiteralVec128(t74)); - } - expressions[368] = BinaryenBinary(the_module, 94, expressions[367], expressions[366]); - { - uint8_t t75[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[369] = BinaryenConst(the_module, BinaryenLiteralVec128(t75)); - } - { - uint8_t t76[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[370] = BinaryenConst(the_module, BinaryenLiteralVec128(t76)); - } - expressions[371] = BinaryenBinary(the_module, 95, expressions[370], expressions[369]); - { - uint8_t t77[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[372] = BinaryenConst(the_module, BinaryenLiteralVec128(t77)); - } - { - uint8_t t78[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[373] = BinaryenConst(the_module, BinaryenLiteralVec128(t78)); - } - expressions[374] = BinaryenBinary(the_module, 96, expressions[373], expressions[372]); - { - uint8_t t79[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[375] = BinaryenConst(the_module, BinaryenLiteralVec128(t79)); - } - { - uint8_t t80[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[376] = BinaryenConst(the_module, BinaryenLiteralVec128(t80)); - } - expressions[377] = BinaryenBinary(the_module, 97, expressions[376], expressions[375]); - { - uint8_t t81[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[378] = BinaryenConst(the_module, BinaryenLiteralVec128(t81)); - } - { - uint8_t t82[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[379] = BinaryenConst(the_module, BinaryenLiteralVec128(t82)); - } - expressions[380] = BinaryenBinary(the_module, 98, expressions[379], expressions[378]); - { - uint8_t t83[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[381] = BinaryenConst(the_module, BinaryenLiteralVec128(t83)); - } - { - uint8_t t84[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[382] = BinaryenConst(the_module, BinaryenLiteralVec128(t84)); - } - expressions[383] = BinaryenBinary(the_module, 99, expressions[382], expressions[381]); - { - uint8_t t85[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[384] = BinaryenConst(the_module, BinaryenLiteralVec128(t85)); - } - { - uint8_t t86[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[385] = BinaryenConst(the_module, BinaryenLiteralVec128(t86)); - } - expressions[386] = BinaryenBinary(the_module, 100, expressions[385], expressions[384]); - { - uint8_t t87[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[387] = BinaryenConst(the_module, BinaryenLiteralVec128(t87)); - } - { - uint8_t t88[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[388] = BinaryenConst(the_module, BinaryenLiteralVec128(t88)); - } - expressions[389] = BinaryenBinary(the_module, 101, expressions[388], expressions[387]); - { - uint8_t t89[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[390] = BinaryenConst(the_module, BinaryenLiteralVec128(t89)); - } - { - uint8_t t90[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[391] = BinaryenConst(the_module, BinaryenLiteralVec128(t90)); - } - expressions[392] = BinaryenBinary(the_module, 102, expressions[391], expressions[390]); - { - uint8_t t91[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[393] = BinaryenConst(the_module, BinaryenLiteralVec128(t91)); - } - { - uint8_t t92[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[394] = BinaryenConst(the_module, BinaryenLiteralVec128(t92)); - } - expressions[395] = BinaryenBinary(the_module, 103, expressions[394], expressions[393]); - { - uint8_t t93[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[396] = BinaryenConst(the_module, BinaryenLiteralVec128(t93)); - } - { - uint8_t t94[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[397] = BinaryenConst(the_module, BinaryenLiteralVec128(t94)); - } - expressions[398] = BinaryenBinary(the_module, 104, expressions[397], expressions[396]); - { - uint8_t t95[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[399] = BinaryenConst(the_module, BinaryenLiteralVec128(t95)); - } - { - uint8_t t96[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[400] = BinaryenConst(the_module, BinaryenLiteralVec128(t96)); - } - expressions[401] = BinaryenBinary(the_module, 105, expressions[400], expressions[399]); - { - uint8_t t97[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[402] = BinaryenConst(the_module, BinaryenLiteralVec128(t97)); - } - { - uint8_t t98[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[403] = BinaryenConst(the_module, BinaryenLiteralVec128(t98)); - } - expressions[404] = BinaryenBinary(the_module, 106, expressions[403], expressions[402]); - { - uint8_t t99[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[405] = BinaryenConst(the_module, BinaryenLiteralVec128(t99)); - } - { - uint8_t t100[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[406] = BinaryenConst(the_module, BinaryenLiteralVec128(t100)); - } - expressions[407] = BinaryenBinary(the_module, 107, expressions[406], expressions[405]); - { - uint8_t t101[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[408] = BinaryenConst(the_module, BinaryenLiteralVec128(t101)); - } - { - uint8_t t102[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[409] = BinaryenConst(the_module, BinaryenLiteralVec128(t102)); - } - expressions[410] = BinaryenBinary(the_module, 108, expressions[409], expressions[408]); - { - uint8_t t103[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[411] = BinaryenConst(the_module, BinaryenLiteralVec128(t103)); - } - { - uint8_t t104[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[412] = BinaryenConst(the_module, BinaryenLiteralVec128(t104)); - } - expressions[413] = BinaryenBinary(the_module, 109, expressions[412], expressions[411]); - { - uint8_t t105[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[414] = BinaryenConst(the_module, BinaryenLiteralVec128(t105)); - } - { - uint8_t t106[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[415] = BinaryenConst(the_module, BinaryenLiteralVec128(t106)); - } - expressions[416] = BinaryenBinary(the_module, 110, expressions[415], expressions[414]); - { - uint8_t t107[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[417] = BinaryenConst(the_module, BinaryenLiteralVec128(t107)); - } - { - uint8_t t108[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[418] = BinaryenConst(the_module, BinaryenLiteralVec128(t108)); - } - expressions[419] = BinaryenBinary(the_module, 111, expressions[418], expressions[417]); - { - uint8_t t109[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[420] = BinaryenConst(the_module, BinaryenLiteralVec128(t109)); - } - { - uint8_t t110[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[421] = BinaryenConst(the_module, BinaryenLiteralVec128(t110)); - } - expressions[422] = BinaryenBinary(the_module, 112, expressions[421], expressions[420]); - { - uint8_t t111[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[423] = BinaryenConst(the_module, BinaryenLiteralVec128(t111)); - } - { - uint8_t t112[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[424] = BinaryenConst(the_module, BinaryenLiteralVec128(t112)); - } - expressions[425] = BinaryenBinary(the_module, 113, expressions[424], expressions[423]); - { - uint8_t t113[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[426] = BinaryenConst(the_module, BinaryenLiteralVec128(t113)); - } - { - uint8_t t114[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[427] = BinaryenConst(the_module, BinaryenLiteralVec128(t114)); - } - expressions[428] = BinaryenBinary(the_module, 114, expressions[427], expressions[426]); - { - uint8_t t115[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[429] = BinaryenConst(the_module, BinaryenLiteralVec128(t115)); - } - { - uint8_t t116[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[430] = BinaryenConst(the_module, BinaryenLiteralVec128(t116)); - } - expressions[431] = BinaryenBinary(the_module, 115, expressions[430], expressions[429]); - { - uint8_t t117[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[432] = BinaryenConst(the_module, BinaryenLiteralVec128(t117)); - } - { - uint8_t t118[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[433] = BinaryenConst(the_module, BinaryenLiteralVec128(t118)); - } - expressions[434] = BinaryenBinary(the_module, 116, expressions[433], expressions[432]); - { - uint8_t t119[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[435] = BinaryenConst(the_module, BinaryenLiteralVec128(t119)); - } - { - uint8_t t120[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[436] = BinaryenConst(the_module, BinaryenLiteralVec128(t120)); - } - expressions[437] = BinaryenBinary(the_module, 117, expressions[436], expressions[435]); - { - uint8_t t121[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[438] = BinaryenConst(the_module, BinaryenLiteralVec128(t121)); - } - { - uint8_t t122[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[439] = BinaryenConst(the_module, BinaryenLiteralVec128(t122)); - } - expressions[440] = BinaryenBinary(the_module, 118, expressions[439], expressions[438]); - { - uint8_t t123[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[441] = BinaryenConst(the_module, BinaryenLiteralVec128(t123)); - } - { - uint8_t t124[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[442] = BinaryenConst(the_module, BinaryenLiteralVec128(t124)); - } - expressions[443] = BinaryenBinary(the_module, 119, expressions[442], expressions[441]); - { - uint8_t t125[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[444] = BinaryenConst(the_module, BinaryenLiteralVec128(t125)); - } - { - uint8_t t126[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[445] = BinaryenConst(the_module, BinaryenLiteralVec128(t126)); - } - expressions[446] = BinaryenBinary(the_module, 120, expressions[445], expressions[444]); - { - uint8_t t127[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[447] = BinaryenConst(the_module, BinaryenLiteralVec128(t127)); - } - { - uint8_t t128[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[448] = BinaryenConst(the_module, BinaryenLiteralVec128(t128)); - } - expressions[449] = BinaryenBinary(the_module, 121, expressions[448], expressions[447]); - { - uint8_t t129[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[450] = BinaryenConst(the_module, BinaryenLiteralVec128(t129)); - } - { - uint8_t t130[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[451] = BinaryenConst(the_module, BinaryenLiteralVec128(t130)); - } - expressions[452] = BinaryenBinary(the_module, 122, expressions[451], expressions[450]); - { - uint8_t t131[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[453] = BinaryenConst(the_module, BinaryenLiteralVec128(t131)); - } - { - uint8_t t132[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[454] = BinaryenConst(the_module, BinaryenLiteralVec128(t132)); - } - expressions[455] = BinaryenBinary(the_module, 123, expressions[454], expressions[453]); - { - uint8_t t133[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[456] = BinaryenConst(the_module, BinaryenLiteralVec128(t133)); - } - { - uint8_t t134[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[457] = BinaryenConst(the_module, BinaryenLiteralVec128(t134)); - } - expressions[458] = BinaryenBinary(the_module, 124, expressions[457], expressions[456]); - { - uint8_t t135[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[459] = BinaryenConst(the_module, BinaryenLiteralVec128(t135)); - } - { - uint8_t t136[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[460] = BinaryenConst(the_module, BinaryenLiteralVec128(t136)); - } - expressions[461] = BinaryenBinary(the_module, 125, expressions[460], expressions[459]); - { - uint8_t t137[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[462] = BinaryenConst(the_module, BinaryenLiteralVec128(t137)); - } - { - uint8_t t138[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[463] = BinaryenConst(the_module, BinaryenLiteralVec128(t138)); - } - expressions[464] = BinaryenBinary(the_module, 126, expressions[463], expressions[462]); - { - uint8_t t139[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[465] = BinaryenConst(the_module, BinaryenLiteralVec128(t139)); - } - { - uint8_t t140[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[466] = BinaryenConst(the_module, BinaryenLiteralVec128(t140)); - } - expressions[467] = BinaryenBinary(the_module, 127, expressions[466], expressions[465]); - { - uint8_t t141[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[468] = BinaryenConst(the_module, BinaryenLiteralVec128(t141)); - } - { - uint8_t t142[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[469] = BinaryenConst(the_module, BinaryenLiteralVec128(t142)); - } - expressions[470] = BinaryenBinary(the_module, 128, expressions[469], expressions[468]); - { - uint8_t t143[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[471] = BinaryenConst(the_module, BinaryenLiteralVec128(t143)); - } - { - uint8_t t144[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[472] = BinaryenConst(the_module, BinaryenLiteralVec128(t144)); - } - expressions[473] = BinaryenBinary(the_module, 129, expressions[472], expressions[471]); - { - uint8_t t145[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[474] = BinaryenConst(the_module, BinaryenLiteralVec128(t145)); - } - { - uint8_t t146[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[475] = BinaryenConst(the_module, BinaryenLiteralVec128(t146)); - } - expressions[476] = BinaryenBinary(the_module, 130, expressions[475], expressions[474]); - { - uint8_t t147[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[477] = BinaryenConst(the_module, BinaryenLiteralVec128(t147)); - } - { - uint8_t t148[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[478] = BinaryenConst(the_module, BinaryenLiteralVec128(t148)); - } - expressions[479] = BinaryenBinary(the_module, 131, expressions[478], expressions[477]); - { - uint8_t t149[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[480] = BinaryenConst(the_module, BinaryenLiteralVec128(t149)); - } - { - uint8_t t150[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[481] = BinaryenConst(the_module, BinaryenLiteralVec128(t150)); - } - expressions[482] = BinaryenBinary(the_module, 132, expressions[481], expressions[480]); - { - uint8_t t151[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[483] = BinaryenConst(the_module, BinaryenLiteralVec128(t151)); - } - { - uint8_t t152[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[484] = BinaryenConst(the_module, BinaryenLiteralVec128(t152)); - } - expressions[485] = BinaryenBinary(the_module, 133, expressions[484], expressions[483]); - { - uint8_t t153[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[486] = BinaryenConst(the_module, BinaryenLiteralVec128(t153)); - } - { - uint8_t t154[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[487] = BinaryenConst(the_module, BinaryenLiteralVec128(t154)); - } - expressions[488] = BinaryenBinary(the_module, 134, expressions[487], expressions[486]); - { - uint8_t t155[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[489] = BinaryenConst(the_module, BinaryenLiteralVec128(t155)); - } - { - uint8_t t156[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[490] = BinaryenConst(the_module, BinaryenLiteralVec128(t156)); - } - expressions[491] = BinaryenBinary(the_module, 135, expressions[490], expressions[489]); - { - uint8_t t157[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[492] = BinaryenConst(the_module, BinaryenLiteralVec128(t157)); - } - { - uint8_t t158[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[493] = BinaryenConst(the_module, BinaryenLiteralVec128(t158)); - } - expressions[494] = BinaryenBinary(the_module, 136, expressions[493], expressions[492]); - { - uint8_t t159[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[495] = BinaryenConst(the_module, BinaryenLiteralVec128(t159)); - } - { - uint8_t t160[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[496] = BinaryenConst(the_module, BinaryenLiteralVec128(t160)); - } - expressions[497] = BinaryenBinary(the_module, 137, expressions[496], expressions[495]); - { - uint8_t t161[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[498] = BinaryenConst(the_module, BinaryenLiteralVec128(t161)); - } - { - uint8_t t162[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[499] = BinaryenConst(the_module, BinaryenLiteralVec128(t162)); - } - expressions[500] = BinaryenBinary(the_module, 138, expressions[499], expressions[498]); - { - uint8_t t163[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[501] = BinaryenConst(the_module, BinaryenLiteralVec128(t163)); - } - { - uint8_t t164[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[502] = BinaryenConst(the_module, BinaryenLiteralVec128(t164)); - } - expressions[503] = BinaryenBinary(the_module, 139, expressions[502], expressions[501]); - { - uint8_t t165[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[504] = BinaryenConst(the_module, BinaryenLiteralVec128(t165)); - } - { - uint8_t t166[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[505] = BinaryenConst(the_module, BinaryenLiteralVec128(t166)); - } - expressions[506] = BinaryenBinary(the_module, 140, expressions[505], expressions[504]); - { - uint8_t t167[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[507] = BinaryenConst(the_module, BinaryenLiteralVec128(t167)); - } - { - uint8_t t168[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[508] = BinaryenConst(the_module, BinaryenLiteralVec128(t168)); - } - expressions[509] = BinaryenBinary(the_module, 141, expressions[508], expressions[507]); - { - uint8_t t169[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[510] = BinaryenConst(the_module, BinaryenLiteralVec128(t169)); - } - { - uint8_t t170[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[511] = BinaryenConst(the_module, BinaryenLiteralVec128(t170)); - } - expressions[512] = BinaryenBinary(the_module, 142, expressions[511], expressions[510]); - { - uint8_t t171[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[513] = BinaryenConst(the_module, BinaryenLiteralVec128(t171)); - } - { - uint8_t t172[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[514] = BinaryenConst(the_module, BinaryenLiteralVec128(t172)); - } - expressions[515] = BinaryenBinary(the_module, 143, expressions[514], expressions[513]); - { - uint8_t t173[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[516] = BinaryenConst(the_module, BinaryenLiteralVec128(t173)); - } - { - uint8_t t174[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[517] = BinaryenConst(the_module, BinaryenLiteralVec128(t174)); - } - expressions[518] = BinaryenBinary(the_module, 144, expressions[517], expressions[516]); - { - uint8_t t175[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[519] = BinaryenConst(the_module, BinaryenLiteralVec128(t175)); - } - { - uint8_t t176[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[520] = BinaryenConst(the_module, BinaryenLiteralVec128(t176)); - } - expressions[521] = BinaryenBinary(the_module, 145, expressions[520], expressions[519]); - { - uint8_t t177[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[522] = BinaryenConst(the_module, BinaryenLiteralVec128(t177)); - } - { - uint8_t t178[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[523] = BinaryenConst(the_module, BinaryenLiteralVec128(t178)); - } - expressions[524] = BinaryenBinary(the_module, 146, expressions[523], expressions[522]); - { - uint8_t t179[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[525] = BinaryenConst(the_module, BinaryenLiteralVec128(t179)); - } - { - uint8_t t180[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[526] = BinaryenConst(the_module, BinaryenLiteralVec128(t180)); - } - expressions[527] = BinaryenBinary(the_module, 147, expressions[526], expressions[525]); - { - uint8_t t181[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[528] = BinaryenConst(the_module, BinaryenLiteralVec128(t181)); - } - { - uint8_t t182[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[529] = BinaryenConst(the_module, BinaryenLiteralVec128(t182)); - } - expressions[530] = BinaryenBinary(the_module, 148, expressions[529], expressions[528]); - { - uint8_t t183[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[531] = BinaryenConst(the_module, BinaryenLiteralVec128(t183)); - } - { - uint8_t t184[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[532] = BinaryenConst(the_module, BinaryenLiteralVec128(t184)); - } - expressions[533] = BinaryenBinary(the_module, 154, expressions[532], expressions[531]); - { - uint8_t t185[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[534] = BinaryenConst(the_module, BinaryenLiteralVec128(t185)); - } - { - uint8_t t186[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[535] = BinaryenConst(the_module, BinaryenLiteralVec128(t186)); - } - expressions[536] = BinaryenBinary(the_module, 155, expressions[535], expressions[534]); - { - uint8_t t187[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[537] = BinaryenConst(the_module, BinaryenLiteralVec128(t187)); - } - { - uint8_t t188[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[538] = BinaryenConst(the_module, BinaryenLiteralVec128(t188)); - } - expressions[539] = BinaryenBinary(the_module, 156, expressions[538], expressions[537]); - { - uint8_t t189[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[540] = BinaryenConst(the_module, BinaryenLiteralVec128(t189)); - } - { - uint8_t t190[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[541] = BinaryenConst(the_module, BinaryenLiteralVec128(t190)); - } - expressions[542] = BinaryenBinary(the_module, 157, expressions[541], expressions[540]); - { - uint8_t t191[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[543] = BinaryenConst(the_module, BinaryenLiteralVec128(t191)); - } - { - uint8_t t192[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[544] = BinaryenConst(the_module, BinaryenLiteralVec128(t192)); - } - expressions[545] = BinaryenBinary(the_module, 158, expressions[544], expressions[543]); - { - uint8_t t193[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[546] = BinaryenConst(the_module, BinaryenLiteralVec128(t193)); - } - { - uint8_t t194[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[547] = BinaryenConst(the_module, BinaryenLiteralVec128(t194)); - } - expressions[548] = BinaryenBinary(the_module, 149, expressions[547], expressions[546]); - { - uint8_t t195[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[549] = BinaryenConst(the_module, BinaryenLiteralVec128(t195)); - } - { - uint8_t t196[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[550] = BinaryenConst(the_module, BinaryenLiteralVec128(t196)); - } - expressions[551] = BinaryenBinary(the_module, 150, expressions[550], expressions[549]); - { - uint8_t t197[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[552] = BinaryenConst(the_module, BinaryenLiteralVec128(t197)); - } - { - uint8_t t198[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[553] = BinaryenConst(the_module, BinaryenLiteralVec128(t198)); - } - expressions[554] = BinaryenBinary(the_module, 151, expressions[553], expressions[552]); - { - uint8_t t199[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[555] = BinaryenConst(the_module, BinaryenLiteralVec128(t199)); - } - { - uint8_t t200[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[556] = BinaryenConst(the_module, BinaryenLiteralVec128(t200)); - } - expressions[557] = BinaryenBinary(the_module, 152, expressions[556], expressions[555]); - { - uint8_t t201[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[558] = BinaryenConst(the_module, BinaryenLiteralVec128(t201)); - } - { - uint8_t t202[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[559] = BinaryenConst(the_module, BinaryenLiteralVec128(t202)); - } - expressions[560] = BinaryenBinary(the_module, 153, expressions[559], expressions[558]); - { - uint8_t t203[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[561] = BinaryenConst(the_module, BinaryenLiteralVec128(t203)); - } - { - uint8_t t204[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[562] = BinaryenConst(the_module, BinaryenLiteralVec128(t204)); - } - expressions[563] = BinaryenBinary(the_module, 159, expressions[562], expressions[561]); - { - uint8_t t205[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[564] = BinaryenConst(the_module, BinaryenLiteralVec128(t205)); - } - { - uint8_t t206[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[565] = BinaryenConst(the_module, BinaryenLiteralVec128(t206)); - } - expressions[566] = BinaryenBinary(the_module, 160, expressions[565], expressions[564]); - { - uint8_t t207[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[567] = BinaryenConst(the_module, BinaryenLiteralVec128(t207)); - } - { - uint8_t t208[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[568] = BinaryenConst(the_module, BinaryenLiteralVec128(t208)); - } - expressions[569] = BinaryenBinary(the_module, 161, expressions[568], expressions[567]); - { - uint8_t t209[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[570] = BinaryenConst(the_module, BinaryenLiteralVec128(t209)); - } - { - uint8_t t210[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[571] = BinaryenConst(the_module, BinaryenLiteralVec128(t210)); - } - expressions[572] = BinaryenBinary(the_module, 162, expressions[571], expressions[570]); - { - uint8_t t211[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[573] = BinaryenConst(the_module, BinaryenLiteralVec128(t211)); - } - { - uint8_t t212[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[574] = BinaryenConst(the_module, BinaryenLiteralVec128(t212)); - } - expressions[575] = BinaryenBinary(the_module, 163, expressions[574], expressions[573]); - { - uint8_t t213[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[576] = BinaryenConst(the_module, BinaryenLiteralVec128(t213)); - } - { - uint8_t t214[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[577] = BinaryenConst(the_module, BinaryenLiteralVec128(t214)); - } - expressions[578] = BinaryenBinary(the_module, 164, expressions[577], expressions[576]); - { - uint8_t t215[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[579] = BinaryenConst(the_module, BinaryenLiteralVec128(t215)); - } - { - uint8_t t216[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[580] = BinaryenConst(the_module, BinaryenLiteralVec128(t216)); - } - expressions[581] = BinaryenBinary(the_module, 165, expressions[580], expressions[579]); - { - uint8_t t217[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[582] = BinaryenConst(the_module, BinaryenLiteralVec128(t217)); - } - { - uint8_t t218[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[583] = BinaryenConst(the_module, BinaryenLiteralVec128(t218)); - } - expressions[584] = BinaryenBinary(the_module, 166, expressions[583], expressions[582]); - { - uint8_t t219[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[585] = BinaryenConst(the_module, BinaryenLiteralVec128(t219)); - } - { - uint8_t t220[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[586] = BinaryenConst(the_module, BinaryenLiteralVec128(t220)); - } - expressions[587] = BinaryenBinary(the_module, 167, expressions[586], expressions[585]); - { - uint8_t t221[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[588] = BinaryenConst(the_module, BinaryenLiteralVec128(t221)); - } - { - uint8_t t222[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[589] = BinaryenConst(the_module, BinaryenLiteralVec128(t222)); - } - expressions[590] = BinaryenBinary(the_module, 168, expressions[589], expressions[588]); - { - uint8_t t223[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[591] = BinaryenConst(the_module, BinaryenLiteralVec128(t223)); - } - { - uint8_t t224[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[592] = BinaryenConst(the_module, BinaryenLiteralVec128(t224)); - } - expressions[593] = BinaryenBinary(the_module, 169, expressions[592], expressions[591]); - { - uint8_t t225[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[594] = BinaryenConst(the_module, BinaryenLiteralVec128(t225)); - } - { - uint8_t t226[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[595] = BinaryenConst(the_module, BinaryenLiteralVec128(t226)); - } - expressions[596] = BinaryenBinary(the_module, 170, expressions[595], expressions[594]); - { - uint8_t t227[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[597] = BinaryenConst(the_module, BinaryenLiteralVec128(t227)); - } - { - uint8_t t228[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[598] = BinaryenConst(the_module, BinaryenLiteralVec128(t228)); - } - expressions[599] = BinaryenBinary(the_module, 171, expressions[598], expressions[597]); - { - uint8_t t229[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[600] = BinaryenConst(the_module, BinaryenLiteralVec128(t229)); - } - { - uint8_t t230[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[601] = BinaryenConst(the_module, BinaryenLiteralVec128(t230)); - } - expressions[602] = BinaryenBinary(the_module, 172, expressions[601], expressions[600]); - { - uint8_t t231[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[603] = BinaryenConst(the_module, BinaryenLiteralVec128(t231)); - } - expressions[604] = BinaryenSIMDExtract(the_module, 0, expressions[603], 0); - { - uint8_t t232[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[605] = BinaryenConst(the_module, BinaryenLiteralVec128(t232)); - } - expressions[606] = BinaryenSIMDExtract(the_module, 1, expressions[605], 0); - { - uint8_t t233[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[607] = BinaryenConst(the_module, BinaryenLiteralVec128(t233)); - } - expressions[608] = BinaryenSIMDExtract(the_module, 2, expressions[607], 0); - { - uint8_t t234[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[609] = BinaryenConst(the_module, BinaryenLiteralVec128(t234)); - } - expressions[610] = BinaryenSIMDExtract(the_module, 3, expressions[609], 0); - { - uint8_t t235[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[611] = BinaryenConst(the_module, BinaryenLiteralVec128(t235)); - } - expressions[612] = BinaryenSIMDExtract(the_module, 4, expressions[611], 0); - { - uint8_t t236[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[613] = BinaryenConst(the_module, BinaryenLiteralVec128(t236)); - } - expressions[614] = BinaryenSIMDExtract(the_module, 5, expressions[613], 0); - { - uint8_t t237[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[615] = BinaryenConst(the_module, BinaryenLiteralVec128(t237)); - } - expressions[616] = BinaryenSIMDExtract(the_module, 6, expressions[615], 0); - { - uint8_t t238[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[617] = BinaryenConst(the_module, BinaryenLiteralVec128(t238)); - } - expressions[618] = BinaryenSIMDExtract(the_module, 7, expressions[617], 0); - expressions[619] = BinaryenConst(the_module, BinaryenLiteralInt32(42)); - { - uint8_t t239[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[620] = BinaryenConst(the_module, BinaryenLiteralVec128(t239)); - } - expressions[621] = BinaryenSIMDReplace(the_module, 0, expressions[620], 0, expressions[619]); - expressions[622] = BinaryenConst(the_module, BinaryenLiteralInt32(42)); - { - uint8_t t240[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[623] = BinaryenConst(the_module, BinaryenLiteralVec128(t240)); - } - expressions[624] = BinaryenSIMDReplace(the_module, 1, expressions[623], 0, expressions[622]); - expressions[625] = BinaryenConst(the_module, BinaryenLiteralInt32(42)); - { - uint8_t t241[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[626] = BinaryenConst(the_module, BinaryenLiteralVec128(t241)); - } - expressions[627] = BinaryenSIMDReplace(the_module, 2, expressions[626], 0, expressions[625]); - expressions[628] = BinaryenConst(the_module, BinaryenLiteralInt64(42)); - { - uint8_t t242[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[629] = BinaryenConst(the_module, BinaryenLiteralVec128(t242)); - } - expressions[630] = BinaryenSIMDReplace(the_module, 3, expressions[629], 0, expressions[628]); - expressions[631] = BinaryenConst(the_module, BinaryenLiteralFloat32(42)); - { - uint8_t t243[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[632] = BinaryenConst(the_module, BinaryenLiteralVec128(t243)); - } - expressions[633] = BinaryenSIMDReplace(the_module, 4, expressions[632], 0, expressions[631]); - expressions[634] = BinaryenConst(the_module, BinaryenLiteralFloat64(42)); - { - uint8_t t244[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[635] = BinaryenConst(the_module, BinaryenLiteralVec128(t244)); - } - expressions[636] = BinaryenSIMDReplace(the_module, 5, expressions[635], 0, expressions[634]); - { - uint8_t t245[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[637] = BinaryenConst(the_module, BinaryenLiteralVec128(t245)); - } - expressions[638] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[639] = BinaryenSIMDShift(the_module, 0, expressions[637], expressions[638]); - { - uint8_t t246[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[640] = BinaryenConst(the_module, BinaryenLiteralVec128(t246)); - } - expressions[641] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[642] = BinaryenSIMDShift(the_module, 1, expressions[640], expressions[641]); - { - uint8_t t247[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[643] = BinaryenConst(the_module, BinaryenLiteralVec128(t247)); - } - expressions[644] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[645] = BinaryenSIMDShift(the_module, 2, expressions[643], expressions[644]); - { - uint8_t t248[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[646] = BinaryenConst(the_module, BinaryenLiteralVec128(t248)); - } - expressions[647] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[648] = BinaryenSIMDShift(the_module, 3, expressions[646], expressions[647]); - { - uint8_t t249[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[649] = BinaryenConst(the_module, BinaryenLiteralVec128(t249)); - } - expressions[650] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[651] = BinaryenSIMDShift(the_module, 4, expressions[649], expressions[650]); - { - uint8_t t250[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[652] = BinaryenConst(the_module, BinaryenLiteralVec128(t250)); - } - expressions[653] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[654] = BinaryenSIMDShift(the_module, 5, expressions[652], expressions[653]); - { - uint8_t t251[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[655] = BinaryenConst(the_module, BinaryenLiteralVec128(t251)); - } - expressions[656] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[657] = BinaryenSIMDShift(the_module, 6, expressions[655], expressions[656]); - { - uint8_t t252[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[658] = BinaryenConst(the_module, BinaryenLiteralVec128(t252)); - } - expressions[659] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[660] = BinaryenSIMDShift(the_module, 7, expressions[658], expressions[659]); - { - uint8_t t253[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[661] = BinaryenConst(the_module, BinaryenLiteralVec128(t253)); - } - expressions[662] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[663] = BinaryenSIMDShift(the_module, 8, expressions[661], expressions[662]); - { - uint8_t t254[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[664] = BinaryenConst(the_module, BinaryenLiteralVec128(t254)); - } - expressions[665] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[666] = BinaryenSIMDShift(the_module, 9, expressions[664], expressions[665]); - { - uint8_t t255[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[667] = BinaryenConst(the_module, BinaryenLiteralVec128(t255)); - } - expressions[668] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[669] = BinaryenSIMDShift(the_module, 10, expressions[667], expressions[668]); - { - uint8_t t256[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[670] = BinaryenConst(the_module, BinaryenLiteralVec128(t256)); - } - expressions[671] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[672] = BinaryenSIMDShift(the_module, 11, expressions[670], expressions[671]); - expressions[673] = BinaryenConst(the_module, BinaryenLiteralInt32(128)); - expressions[674] = BinaryenSIMDLoad(the_module, 0, 0, 1, expressions[673]); - expressions[675] = BinaryenConst(the_module, BinaryenLiteralInt32(128)); - expressions[676] = BinaryenSIMDLoad(the_module, 1, 16, 1, expressions[675]); - expressions[677] = BinaryenConst(the_module, BinaryenLiteralInt32(128)); - expressions[678] = BinaryenSIMDLoad(the_module, 2, 16, 4, expressions[677]); - expressions[679] = BinaryenConst(the_module, BinaryenLiteralInt32(128)); - expressions[680] = BinaryenSIMDLoad(the_module, 3, 0, 4, expressions[679]); - expressions[681] = BinaryenConst(the_module, BinaryenLiteralInt32(128)); - expressions[682] = BinaryenSIMDLoad(the_module, 4, 0, 8, expressions[681]); - expressions[683] = BinaryenConst(the_module, BinaryenLiteralInt32(128)); - expressions[684] = BinaryenSIMDLoad(the_module, 5, 0, 8, expressions[683]); - expressions[685] = BinaryenConst(the_module, BinaryenLiteralInt32(128)); - expressions[686] = BinaryenSIMDLoad(the_module, 6, 0, 8, expressions[685]); - expressions[687] = BinaryenConst(the_module, BinaryenLiteralInt32(128)); - expressions[688] = BinaryenSIMDLoad(the_module, 7, 0, 8, expressions[687]); - expressions[689] = BinaryenConst(the_module, BinaryenLiteralInt32(128)); - expressions[690] = BinaryenSIMDLoad(the_module, 8, 0, 8, expressions[689]); - expressions[691] = BinaryenConst(the_module, BinaryenLiteralInt32(128)); - expressions[692] = BinaryenSIMDLoad(the_module, 9, 0, 8, expressions[691]); - { - uint8_t t257[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[693] = BinaryenConst(the_module, BinaryenLiteralVec128(t257)); - } - { - uint8_t t258[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[694] = BinaryenConst(the_module, BinaryenLiteralVec128(t258)); - } - { - uint8_t mask[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - expressions[695] = BinaryenSIMDShuffle(the_module, expressions[693], expressions[694], mask); - } - { - uint8_t t259[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[696] = BinaryenConst(the_module, BinaryenLiteralVec128(t259)); - } - { - uint8_t t260[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[697] = BinaryenConst(the_module, BinaryenLiteralVec128(t260)); - } - { - uint8_t t261[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[698] = BinaryenConst(the_module, BinaryenLiteralVec128(t261)); - } - expressions[699] = BinaryenSIMDTernary(the_module, 0, expressions[696], expressions[697], expressions[698]); - { - uint8_t t262[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[700] = BinaryenConst(the_module, BinaryenLiteralVec128(t262)); - } - { - uint8_t t263[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[701] = BinaryenConst(the_module, BinaryenLiteralVec128(t263)); - } - { - uint8_t t264[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[702] = BinaryenConst(the_module, BinaryenLiteralVec128(t264)); - } - expressions[703] = BinaryenSIMDTernary(the_module, 1, expressions[700], expressions[701], expressions[702]); - { - uint8_t t265[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[704] = BinaryenConst(the_module, BinaryenLiteralVec128(t265)); - } - { - uint8_t t266[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[705] = BinaryenConst(the_module, BinaryenLiteralVec128(t266)); - } - { - uint8_t t267[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[706] = BinaryenConst(the_module, BinaryenLiteralVec128(t267)); - } - expressions[707] = BinaryenSIMDTernary(the_module, 2, expressions[704], expressions[705], expressions[706]); - { - uint8_t t268[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[708] = BinaryenConst(the_module, BinaryenLiteralVec128(t268)); - } - { - uint8_t t269[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[709] = BinaryenConst(the_module, BinaryenLiteralVec128(t269)); - } - { - uint8_t t270[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[710] = BinaryenConst(the_module, BinaryenLiteralVec128(t270)); - } - expressions[711] = BinaryenSIMDTernary(the_module, 3, expressions[708], expressions[709], expressions[710]); - { - uint8_t t271[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[712] = BinaryenConst(the_module, BinaryenLiteralVec128(t271)); - } - { - uint8_t t272[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[713] = BinaryenConst(the_module, BinaryenLiteralVec128(t272)); - } - { - uint8_t t273[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - expressions[714] = BinaryenConst(the_module, BinaryenLiteralVec128(t273)); - } - expressions[715] = BinaryenSIMDTernary(the_module, 4, expressions[712], expressions[713], expressions[714]); - expressions[716] = BinaryenConst(the_module, BinaryenLiteralInt32(1024)); - expressions[717] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - expressions[718] = BinaryenConst(the_module, BinaryenLiteralInt32(12)); - expressions[719] = BinaryenMemoryInit(the_module, 0, expressions[716], expressions[717], expressions[718]); - expressions[720] = BinaryenDataDrop(the_module, 0); - expressions[721] = BinaryenConst(the_module, BinaryenLiteralInt32(2048)); - expressions[722] = BinaryenConst(the_module, BinaryenLiteralInt32(1024)); - expressions[723] = BinaryenConst(the_module, BinaryenLiteralInt32(12)); - expressions[724] = BinaryenMemoryCopy(the_module, expressions[721], expressions[722], expressions[723]); - expressions[725] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - expressions[726] = BinaryenConst(the_module, BinaryenLiteralInt32(42)); - expressions[727] = BinaryenConst(the_module, BinaryenLiteralInt32(1024)); - expressions[728] = BinaryenMemoryFill(the_module, expressions[725], expressions[726], expressions[727]); - { - BinaryenExpressionRef children[] = { 0 }; - expressions[729] = BinaryenBlock(the_module, NULL, children, 0, BinaryenTypeAuto()); - } - expressions[730] = BinaryenIf(the_module, expressions[18], expressions[19], expressions[20]); - expressions[731] = BinaryenIf(the_module, expressions[21], expressions[22], expressions[0]); - expressions[732] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - expressions[733] = BinaryenLoop(the_module, "in", expressions[732]); - expressions[734] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - expressions[735] = BinaryenLoop(the_module, NULL, expressions[734]); - expressions[736] = BinaryenBreak(the_module, "the-value", expressions[23], expressions[24]); - expressions[737] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - expressions[738] = BinaryenBreak(the_module, "the-nothing", expressions[737], expressions[0]); - expressions[739] = BinaryenConst(the_module, BinaryenLiteralInt32(3)); - expressions[740] = BinaryenBreak(the_module, "the-value", expressions[0], expressions[739]); - expressions[741] = BinaryenBreak(the_module, "the-nothing", expressions[0], expressions[0]); - { - const char* names[] = { "the-value" }; - expressions[742] = BinaryenSwitch(the_module, names, 1, "the-value", expressions[25], expressions[26]); - } - expressions[743] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - { - const char* names[] = { "the-nothing" }; - expressions[744] = BinaryenSwitch(the_module, names, 1, "the-nothing", expressions[743], expressions[0]); - } - { - BinaryenExpressionRef operands[] = { expressions[10], expressions[11], expressions[12], expressions[13] }; - expressions[745] = BinaryenCall(the_module, "kitchen()sinker", operands, 4, 2); - } - expressions[746] = BinaryenUnary(the_module, 20, expressions[745]); - { - BinaryenExpressionRef operands[] = { expressions[8], expressions[9] }; - expressions[747] = BinaryenCall(the_module, "an-imported", operands, 2, 4); - } - expressions[748] = BinaryenUnary(the_module, 25, expressions[747]); - expressions[749] = BinaryenUnary(the_module, 20, expressions[748]); - expressions[750] = BinaryenConst(the_module, BinaryenLiteralInt32(2449)); - { - BinaryenExpressionRef operands[] = { expressions[14], expressions[15], expressions[16], expressions[17] }; - expressions[751] = BinaryenCallIndirect(the_module, expressions[750], operands, 4, 11, 2); - } - expressions[752] = BinaryenUnary(the_module, 20, expressions[751]); - expressions[753] = BinaryenLocalGet(the_module, 0, 2); - expressions[754] = BinaryenDrop(the_module, expressions[753]); - expressions[755] = BinaryenConst(the_module, BinaryenLiteralInt32(101)); - expressions[756] = BinaryenLocalSet(the_module, 0, expressions[755]); - expressions[757] = BinaryenConst(the_module, BinaryenLiteralInt32(102)); - expressions[758] = BinaryenLocalTee(the_module, 0, expressions[757], 2); - expressions[759] = BinaryenDrop(the_module, expressions[758]); - expressions[760] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - expressions[761] = BinaryenLoad(the_module, 4, 0, 0, 0, 2, expressions[760]); - expressions[762] = BinaryenConst(the_module, BinaryenLiteralInt32(8)); - expressions[763] = BinaryenLoad(the_module, 2, 1, 2, 1, 3, expressions[762]); - expressions[764] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - expressions[765] = BinaryenLoad(the_module, 4, 0, 0, 0, 4, expressions[764]); - expressions[766] = BinaryenConst(the_module, BinaryenLiteralInt32(9)); - expressions[767] = BinaryenLoad(the_module, 8, 0, 2, 8, 5, expressions[766]); - expressions[768] = BinaryenStore(the_module, 4, 0, 0, expressions[30], expressions[31], 2); - expressions[769] = BinaryenStore(the_module, 8, 2, 4, expressions[32], expressions[33], 3); - expressions[770] = BinaryenSelect(the_module, expressions[27], expressions[28], expressions[29], BinaryenTypeAuto()); - expressions[771] = BinaryenConst(the_module, BinaryenLiteralInt32(1337)); - expressions[772] = BinaryenReturn(the_module, expressions[771]); - { - BinaryenExpressionRef operands[] = { expressions[10], expressions[11], expressions[12], expressions[13] }; - expressions[773] = BinaryenReturnCall(the_module, "kitchen()sinker", operands, 4, 2); - } - expressions[774] = BinaryenConst(the_module, BinaryenLiteralInt32(2449)); - { - BinaryenExpressionRef operands[] = { expressions[14], expressions[15], expressions[16], expressions[17] }; - expressions[775] = BinaryenReturnCallIndirect(the_module, expressions[774], operands, 4, 11, 2); - } - expressions[776] = BinaryenRefIsNull(the_module, expressions[34]); - expressions[777] = BinaryenRefIsNull(the_module, expressions[35]); - expressions[778] = BinaryenSelect(the_module, expressions[27], expressions[34], expressions[35], 7); - expressions[779] = BinaryenTry(the_module, expressions[37], expressions[45]); - expressions[780] = BinaryenAtomicLoad(the_module, 4, 0, 2, expressions[23]); - expressions[781] = BinaryenAtomicStore(the_module, 4, 0, expressions[23], expressions[780], 2); - expressions[782] = BinaryenAtomicWait(the_module, expressions[23], expressions[23], expressions[33], 2); - expressions[783] = BinaryenDrop(the_module, expressions[782]); - expressions[784] = BinaryenAtomicNotify(the_module, expressions[23], expressions[23]); - expressions[785] = BinaryenDrop(the_module, expressions[784]); - expressions[786] = BinaryenAtomicFence(the_module); - expressions[787] = BinaryenPop(the_module, 2); - expressions[788] = BinaryenPush(the_module, expressions[787]); - expressions[789] = BinaryenPop(the_module, 3); - expressions[790] = BinaryenPush(the_module, expressions[789]); - expressions[791] = BinaryenPop(the_module, 4); - expressions[792] = BinaryenPush(the_module, expressions[791]); - expressions[793] = BinaryenPop(the_module, 5); - expressions[794] = BinaryenPush(the_module, expressions[793]); - expressions[795] = BinaryenPop(the_module, 7); - expressions[796] = BinaryenPush(the_module, expressions[795]); - expressions[797] = BinaryenPop(the_module, 8); - expressions[798] = BinaryenPush(the_module, expressions[797]); - expressions[799] = BinaryenPop(the_module, 9); - expressions[800] = BinaryenPush(the_module, expressions[799]); - expressions[801] = BinaryenPop(the_module, 10); - expressions[802] = BinaryenPush(the_module, expressions[801]); - expressions[803] = BinaryenPop(the_module, 7); - expressions[804] = BinaryenPush(the_module, expressions[803]); - expressions[805] = BinaryenPop(the_module, 9); - expressions[806] = BinaryenPush(the_module, expressions[805]); - expressions[807] = BinaryenPop(the_module, 10); - expressions[808] = BinaryenPush(the_module, expressions[807]); - expressions[809] = BinaryenNop(the_module); - expressions[810] = BinaryenUnreachable(the_module); - BinaryenExpressionPrint(expressions[53]); -(f32.neg - (f32.const -33.61199951171875) -) - { - BinaryenExpressionRef children[] = { expressions[47], expressions[49], expressions[51], expressions[53], expressions[55], - expressions[57], expressions[59], expressions[61], expressions[63], expressions[65], expressions[67], - expressions[69], expressions[71], expressions[73], expressions[75], expressions[77], expressions[79], - expressions[81], expressions[83], expressions[85], expressions[87], expressions[89], expressions[91], - expressions[93], expressions[95], expressions[97], expressions[99], expressions[101], expressions[103], - expressions[105], expressions[107], expressions[109], expressions[111], expressions[113], expressions[115], - expressions[117], expressions[119], expressions[121], expressions[123], expressions[125], expressions[127], - expressions[129], expressions[131], expressions[133], expressions[135], expressions[137], expressions[139], - expressions[141], expressions[143], expressions[145], expressions[147], expressions[149], expressions[151], - expressions[153], expressions[155], expressions[157], expressions[159], expressions[161], expressions[163], - expressions[165], expressions[167], expressions[169], expressions[171], expressions[173], expressions[175], - expressions[177], expressions[179], expressions[181], expressions[183], expressions[185], expressions[187], - expressions[189], expressions[191], expressions[193], expressions[195], expressions[197], expressions[199], - expressions[201], expressions[203], expressions[205], expressions[207], expressions[209], expressions[211], - expressions[213], expressions[215], expressions[218], expressions[221], expressions[224], expressions[227], - expressions[230], expressions[233], expressions[236], expressions[239], expressions[242], expressions[245], - expressions[248], expressions[251], expressions[254], expressions[257], expressions[260], expressions[263], - expressions[266], expressions[269], expressions[272], expressions[275], expressions[278], expressions[281], - expressions[284], expressions[287], expressions[290], expressions[293], expressions[296], expressions[299], - expressions[302], expressions[305], expressions[308], expressions[311], expressions[314], expressions[317], - expressions[320], expressions[323], expressions[326], expressions[329], expressions[332], expressions[335], - expressions[338], expressions[341], expressions[344], expressions[347], expressions[350], expressions[353], - expressions[356], expressions[359], expressions[362], expressions[365], expressions[368], expressions[371], - expressions[374], expressions[377], expressions[380], expressions[383], expressions[386], expressions[389], - expressions[392], expressions[395], expressions[398], expressions[401], expressions[404], expressions[407], - expressions[410], expressions[413], expressions[416], expressions[419], expressions[422], expressions[425], - expressions[428], expressions[431], expressions[434], expressions[437], expressions[440], expressions[443], - expressions[446], expressions[449], expressions[452], expressions[455], expressions[458], expressions[461], - expressions[464], expressions[467], expressions[470], expressions[473], expressions[476], expressions[479], - expressions[482], expressions[485], expressions[488], expressions[491], expressions[494], expressions[497], - expressions[500], expressions[503], expressions[506], expressions[509], expressions[512], expressions[515], - expressions[518], expressions[521], expressions[524], expressions[527], expressions[530], expressions[533], - expressions[536], expressions[539], expressions[542], expressions[545], expressions[548], expressions[551], - expressions[554], expressions[557], expressions[560], expressions[563], expressions[566], expressions[569], - expressions[572], expressions[575], expressions[578], expressions[581], expressions[584], expressions[587], - expressions[590], expressions[593], expressions[596], expressions[599], expressions[602], expressions[604], - expressions[606], expressions[608], expressions[610], expressions[612], expressions[614], expressions[616], - expressions[618], expressions[621], expressions[624], expressions[627], expressions[630], expressions[633], - expressions[636], expressions[639], expressions[642], expressions[645], expressions[648], expressions[651], - expressions[654], expressions[657], expressions[660], expressions[663], expressions[666], expressions[669], - expressions[672], expressions[674], expressions[676], expressions[678], expressions[680], expressions[682], - expressions[684], expressions[686], expressions[688], expressions[690], expressions[692], expressions[695], - expressions[699], expressions[703], expressions[707], expressions[711], expressions[715], expressions[719], - expressions[720], expressions[724], expressions[728], expressions[729], expressions[730], expressions[731], - expressions[733], expressions[735], expressions[736], expressions[738], expressions[740], expressions[741], - expressions[742], expressions[744], expressions[746], expressions[749], expressions[752], expressions[754], - expressions[756], expressions[759], expressions[761], expressions[763], expressions[765], expressions[767], - expressions[768], expressions[769], expressions[770], expressions[772], expressions[773], expressions[775], - expressions[776], expressions[777], expressions[778], expressions[779], expressions[781], expressions[783], - expressions[785], expressions[786], expressions[788], expressions[790], expressions[792], expressions[794], - expressions[796], expressions[798], expressions[800], expressions[802], expressions[804], expressions[806], - expressions[808], expressions[809], expressions[810] }; - expressions[811] = BinaryenBlock(the_module, "the-value", children, 308, BinaryenTypeAuto()); - } - expressions[812] = BinaryenDrop(the_module, expressions[811]); - { - BinaryenExpressionRef children[] = { expressions[812] }; - expressions[813] = BinaryenBlock(the_module, "the-nothing", children, 1, BinaryenTypeAuto()); - } - expressions[814] = BinaryenConst(the_module, BinaryenLiteralInt32(42)); - { - BinaryenExpressionRef children[] = { expressions[813], expressions[814] }; - expressions[815] = BinaryenBlock(the_module, "the-body", children, 2, BinaryenTypeAuto()); - } - { - BinaryenType varTypes[] = { 2, 10 }; - functions[0] = BinaryenAddFunction(the_module, "kitchen()sinker", 11, 2, varTypes, 2, expressions[815]); - } - expressions[816] = BinaryenConst(the_module, BinaryenLiteralInt32(7)); - globals[0] = BinaryenAddGlobal(the_module, "a-global", 2, 0, expressions[816]); - expressions[817] = BinaryenConst(the_module, BinaryenLiteralFloat32(7.5)); - globals[1] = BinaryenAddGlobal(the_module, "a-mutable-global", 4, 1, expressions[817]); - { - BinaryenType t274[] = {2, 5}; - BinaryenTypeCreate(t274, 2); // 12 - } - BinaryenAddFunctionImport(the_module, "an-imported", "module", "base", 12, 4); - exports[0] = BinaryenAddFunctionExport(the_module, "kitchen()sinker", "kitchen_sinker"); - BinaryenFunctionGetName(functions[0]); - expressions[818] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - const char* funcNames[] = { "kitchen()sinker" }; - BinaryenSetFunctionTable(the_module, 1, 1, funcNames, 1, expressions[818]); - } - expressions[819] = BinaryenConst(the_module, BinaryenLiteralInt32(10)); - { - const char segment0[] = { 104, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100 }; - const char segment1[] = { 73, 32, 97, 109, 32, 112, 97, 115, 115, 105, 118, 101 }; - const char* segments[] = { segment0, segment1 }; - int8_t segmentPassive[] = { 0, 1 }; - BinaryenExpressionRef segmentOffsets[] = { expressions[819], expressions[0] }; - BinaryenIndex segmentSizes[] = { 12, 12 }; - BinaryenSetMemory(the_module, 1, 256, "mem", segments, segmentPassive, segmentOffsets, segmentSizes, 2, 1); - } - expressions[820] = BinaryenNop(the_module); - { - BinaryenType varTypes[] = { 0 }; - functions[1] = BinaryenAddFunction(the_module, "starter", 0, 0, varTypes, 0, expressions[820]); - } - BinaryenSetStart(the_module, functions[1]); - BinaryenModuleAutoDrop(the_module); - BinaryenModuleSetFeatures(the_module, 511); - BinaryenModuleGetFeatures(the_module); - BinaryenModuleValidate(the_module); - BinaryenModulePrint(the_module); -(module - (type $i32_i64_f32_f64_=>_i32 (func (param i32 i64 f32 f64) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_f64_=>_f32 (func (param i32 f64) (result f32))) - (import "module" "base" (func $an-imported (param i32 f64) (result f32))) - (memory $0 (shared 1 256)) - (data (i32.const 10) "hello, world") - (data passive "I am passive") - (table $0 1 1 funcref) - (elem (i32.const 0) "$kitchen()sinker") - (global $a-global i32 (i32.const 7)) - (global $a-mutable-global (mut f32) (f32.const 7.5)) - (event $a-event (attr 0) (param i32)) - (export "kitchen_sinker" (func "$kitchen()sinker")) - (export "mem" (memory $0)) - (start $starter) - (func "$kitchen()sinker" (; 1 ;) (param $0 i32) (param $1 i64) (param $2 f32) (param $3 f64) (result i32) - (local $4 i32) - (local $5 exnref) - (block $the-body (result i32) - (block $the-nothing - (drop - (block $the-value (result i32) - (drop - (i32.clz - (i32.const -10) - ) - ) - (drop - (i64.ctz - (i64.const -22) - ) - ) - (drop - (i32.popcnt - (i32.const -10) - ) - ) - (drop - (f32.neg - (f32.const -33.61199951171875) - ) - ) - (drop - (f64.abs - (f64.const -9005.841) - ) - ) - (drop - (f32.ceil - (f32.const -33.61199951171875) - ) - ) - (drop - (f64.floor - (f64.const -9005.841) - ) - ) - (drop - (f32.trunc - (f32.const -33.61199951171875) - ) - ) - (drop - (f32.nearest - (f32.const -33.61199951171875) - ) - ) - (drop - (f64.sqrt - (f64.const -9005.841) - ) - ) - (drop - (i32.eqz - (i32.const -10) - ) - ) - (drop - (i64.extend_i32_s - (i32.const -10) - ) - ) - (drop - (i64.extend_i32_u - (i32.const -10) - ) - ) - (drop - (i32.wrap_i64 - (i64.const -22) - ) - ) - (drop - (i32.trunc_f32_s - (f32.const -33.61199951171875) - ) - ) - (drop - (i64.trunc_f32_s - (f32.const -33.61199951171875) - ) - ) - (drop - (i32.trunc_f32_u - (f32.const -33.61199951171875) - ) - ) - (drop - (i64.trunc_f32_u - (f32.const -33.61199951171875) - ) - ) - (drop - (i32.trunc_f64_s - (f64.const -9005.841) - ) - ) - (drop - (i64.trunc_f64_s - (f64.const -9005.841) - ) - ) - (drop - (i32.trunc_f64_u - (f64.const -9005.841) - ) - ) - (drop - (i64.trunc_f64_u - (f64.const -9005.841) - ) - ) - (drop - (i32.trunc_sat_f32_s - (f32.const -33.61199951171875) - ) - ) - (drop - (i64.trunc_sat_f32_s - (f32.const -33.61199951171875) - ) - ) - (drop - (i32.trunc_sat_f32_u - (f32.const -33.61199951171875) - ) - ) - (drop - (i64.trunc_sat_f32_u - (f32.const -33.61199951171875) - ) - ) - (drop - (i32.trunc_sat_f64_s - (f64.const -9005.841) - ) - ) - (drop - (i64.trunc_sat_f64_s - (f64.const -9005.841) - ) - ) - (drop - (i32.trunc_sat_f64_u - (f64.const -9005.841) - ) - ) - (drop - (i64.trunc_sat_f64_u - (f64.const -9005.841) - ) - ) - (drop - (i32.reinterpret_f32 - (f32.const -33.61199951171875) - ) - ) - (drop - (i64.reinterpret_f64 - (f64.const -9005.841) - ) - ) - (drop - (f32.convert_i32_s - (i32.const -10) - ) - ) - (drop - (f64.convert_i32_s - (i32.const -10) - ) - ) - (drop - (f32.convert_i32_u - (i32.const -10) - ) - ) - (drop - (f64.convert_i32_u - (i32.const -10) - ) - ) - (drop - (f32.convert_i64_s - (i64.const -22) - ) - ) - (drop - (f64.convert_i64_s - (i64.const -22) - ) - ) - (drop - (f32.convert_i64_u - (i64.const -22) - ) - ) - (drop - (f64.convert_i64_u - (i64.const -22) - ) - ) - (drop - (f64.promote_f32 - (f32.const -33.61199951171875) - ) - ) - (drop - (f32.demote_f64 - (f64.const -9005.841) - ) - ) - (drop - (f32.reinterpret_i32 - (i32.const -10) - ) - ) - (drop - (f64.reinterpret_i64 - (i64.const -22) - ) - ) - (drop - (i8x16.splat - (i32.const -10) - ) - ) - (drop - (i16x8.splat - (i32.const -10) - ) - ) - (drop - (i32x4.splat - (i32.const -10) - ) - ) - (drop - (i64x2.splat - (i64.const -22) - ) - ) - (drop - (f32x4.splat - (f32.const -33.61199951171875) - ) - ) - (drop - (f64x2.splat - (f64.const -9005.841) - ) - ) - (drop - (v128.not - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.any_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.all_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.any_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.all_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.any_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.all_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.any_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.all_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.abs - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.sqrt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.abs - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.sqrt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.trunc_sat_f32x4_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.trunc_sat_f32x4_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.trunc_sat_f64x2_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.trunc_sat_f64x2_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.convert_i32x4_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.convert_i32x4_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.convert_i64x2_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.convert_i64x2_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.widen_low_i8x16_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.widen_high_i8x16_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.widen_low_i8x16_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.widen_high_i8x16_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.widen_low_i16x8_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.widen_high_i16x8_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.widen_low_i16x8_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.widen_high_i16x8_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32.add - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (f64.sub - (f64.const -9005.841) - (f64.const -9007.333) - ) - ) - (drop - (i32.div_s - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.div_u - (i64.const -22) - (i64.const -23) - ) - ) - (drop - (i64.rem_s - (i64.const -22) - (i64.const -23) - ) - ) - (drop - (i32.rem_u - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i32.and - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.or - (i64.const -22) - (i64.const -23) - ) - ) - (drop - (i32.xor - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.shl - (i64.const -22) - (i64.const -23) - ) - ) - (drop - (i64.shr_u - (i64.const -22) - (i64.const -23) - ) - ) - (drop - (i32.shr_s - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i32.rotl - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.rotr - (i64.const -22) - (i64.const -23) - ) - ) - (drop - (f32.div - (f32.const -33.61199951171875) - (f32.const -62.5) - ) - ) - (drop - (f64.copysign - (f64.const -9005.841) - (f64.const -9007.333) - ) - ) - (drop - (f32.min - (f32.const -33.61199951171875) - (f32.const -62.5) - ) - ) - (drop - (f64.max - (f64.const -9005.841) - (f64.const -9007.333) - ) - ) - (drop - (i32.eq - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (f32.ne - (f32.const -33.61199951171875) - (f32.const -62.5) - ) - ) - (drop - (i32.lt_s - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.lt_u - (i64.const -22) - (i64.const -23) - ) - ) - (drop - (i64.le_s - (i64.const -22) - (i64.const -23) - ) - ) - (drop - (i32.le_u - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.gt_s - (i64.const -22) - (i64.const -23) - ) - ) - (drop - (i32.gt_u - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i32.ge_s - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.ge_u - (i64.const -22) - (i64.const -23) - ) - ) - (drop - (f32.lt - (f32.const -33.61199951171875) - (f32.const -62.5) - ) - ) - (drop - (f64.le - (f64.const -9005.841) - (f64.const -9007.333) - ) - ) - (drop - (f64.gt - (f64.const -9005.841) - (f64.const -9007.333) - ) - ) - (drop - (f32.ge - (f32.const -33.61199951171875) - (f32.const -62.5) - ) - ) - (drop - (i8x16.eq - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.ne - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.lt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.lt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.gt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.gt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.le_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.le_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.ge_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.ge_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.eq - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.ne - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.lt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.lt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.gt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.gt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.le_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.le_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.ge_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.ge_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.eq - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.ne - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.lt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.lt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.gt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.gt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.le_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.le_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.ge_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.ge_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.eq - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.ne - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.lt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.gt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.le - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.ge - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.eq - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.ne - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.lt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.gt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.le - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.ge - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v128.and - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v128.or - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v128.xor - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v128.andnot - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.add_saturate_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.add_saturate_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.sub_saturate_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.sub_saturate_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.mul - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.min_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.min_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.max_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.max_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.avgr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.add_saturate_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.add_saturate_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.sub_saturate_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.sub_saturate_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.mul - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.min_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.min_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.max_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.max_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.avgr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.mul - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.mul - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.min_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.min_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.max_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.max_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.dot_i16x8_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.div - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.min - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.max - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.mul - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.div - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.min - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.max - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.narrow_i16x8_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.narrow_i16x8_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.narrow_i32x4_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.narrow_i32x4_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v8x16.swizzle - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.extract_lane_s 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.extract_lane_u 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.extract_lane_s 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.extract_lane_u 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.extract_lane 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.extract_lane 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.extract_lane 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.extract_lane 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.replace_lane 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 42) - ) - ) - (drop - (i16x8.replace_lane 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 42) - ) - ) - (drop - (i32x4.replace_lane 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 42) - ) - ) - (drop - (i64x2.replace_lane 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i64.const 42) - ) - ) - (drop - (f32x4.replace_lane 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (f32.const 42) - ) - ) - (drop - (f64x2.replace_lane 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (f64.const 42) - ) - ) - (drop - (i8x16.shl - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i8x16.shr_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i8x16.shr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i16x8.shl - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i16x8.shr_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i16x8.shr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i32x4.shl - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i32x4.shr_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i32x4.shr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i64x2.shl - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i64x2.shr_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i64x2.shr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (v8x16.load_splat - (i32.const 128) - ) - ) - (drop - (v16x8.load_splat offset=16 align=1 - (i32.const 128) - ) - ) - (drop - (v32x4.load_splat offset=16 - (i32.const 128) - ) - ) - (drop - (v64x2.load_splat align=4 - (i32.const 128) - ) - ) - (drop - (i16x8.load8x8_s - (i32.const 128) - ) - ) - (drop - (i16x8.load8x8_u - (i32.const 128) - ) - ) - (drop - (i32x4.load16x4_s - (i32.const 128) - ) - ) - (drop - (i32x4.load16x4_u - (i32.const 128) - ) - ) - (drop - (i64x2.load32x2_s - (i32.const 128) - ) - ) - (drop - (i64x2.load32x2_u - (i32.const 128) - ) - ) - (drop - (v8x16.shuffle 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v128.bitselect - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.qfma - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.qfms - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.qfma - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.qfms - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (memory.init 0 - (i32.const 1024) - (i32.const 0) - (i32.const 12) - ) - (data.drop 0) - (memory.copy - (i32.const 2048) - (i32.const 1024) - (i32.const 12) - ) - (memory.fill - (i32.const 0) - (i32.const 42) - (i32.const 1024) - ) - (block - ) - (if - (i32.const 1) - (drop - (i32.const 2) - ) - (drop - (i32.const 3) - ) - ) - (if - (i32.const 4) - (drop - (i32.const 5) - ) - ) - (drop - (loop $in (result i32) - (i32.const 0) - ) - ) - (drop - (loop (result i32) - (i32.const 0) - ) - ) - (drop - (br_if $the-value - (i32.const 1) - (i32.const 0) - ) - ) - (br_if $the-nothing - (i32.const 2) - ) - (br $the-value - (i32.const 3) - ) - (br $the-nothing) - (br_table $the-value $the-value - (i32.const 1) - (i32.const 0) - ) - (br_table $the-nothing $the-nothing - (i32.const 2) - ) - (drop - (i32.eqz - (call "$kitchen()sinker" - (i32.const 13) - (i64.const 37) - (f32.const 1.2999999523162842) - (f64.const 3.7) - ) - ) - ) - (drop - (i32.eqz - (i32.trunc_f32_s - (call $an-imported - (i32.const 13) - (f64.const 3.7) - ) - ) - ) - ) - (drop - (i32.eqz - (call_indirect (type $i32_i64_f32_f64_=>_i32) - (i32.const 13) - (i64.const 37) - (f32.const 1.2999999523162842) - (f64.const 3.7) - (i32.const 2449) - ) - ) - ) - (drop - (local.get $0) - ) - (local.set $0 - (i32.const 101) - ) - (drop - (local.tee $0 - (i32.const 102) - ) - ) - (drop - (i32.load - (i32.const 1) - ) - ) - (drop - (i64.load16_s offset=2 align=1 - (i32.const 8) - ) - ) - (drop - (f32.load - (i32.const 2) - ) - ) - (drop - (f64.load offset=2 - (i32.const 9) - ) - ) - (i32.store - (i32.const 10) - (i32.const 11) - ) - (i64.store offset=2 align=4 - (i32.const 110) - (i64.const 111) - ) - (drop - (select - (i32.const 3) - (i32.const 5) - (i32.const 1) - ) - ) - (return - (i32.const 1337) - ) - (return_call "$kitchen()sinker" - (i32.const 13) - (i64.const 37) - (f32.const 1.2999999523162842) - (f64.const 3.7) - ) - (return_call_indirect (type $i32_i64_f32_f64_=>_i32) - (i32.const 13) - (i64.const 37) - (f32.const 1.2999999523162842) - (f64.const 3.7) - (i32.const 2449) - ) - (drop - (ref.is_null - (ref.null) - ) - ) - (drop - (ref.is_null - (ref.func "$kitchen()sinker") - ) - ) - (drop - (select (result funcref) - (ref.null) - (ref.func "$kitchen()sinker") - (i32.const 1) - ) - ) - (try - (throw $a-event - (i32.const 0) - ) - (catch - (local.set $5 - (exnref.pop) - ) - (drop - (block $try-block (result i32) - (rethrow - (br_on_exn $try-block $a-event - (local.get $5) - ) - ) - ) - ) - ) - ) - (i32.atomic.store - (i32.const 0) - (i32.atomic.load - (i32.const 0) - ) - ) - (drop - (i32.atomic.wait - (i32.const 0) - (i32.const 0) - (i64.const 111) - ) - ) - (drop - (atomic.notify - (i32.const 0) - (i32.const 0) - ) - ) - (atomic.fence) - (push - (i32.pop) - ) - (push - (i64.pop) - ) - (push - (f32.pop) - ) - (push - (f64.pop) - ) - (push - (funcref.pop) - ) - (push - (anyref.pop) - ) - (push - (nullref.pop) - ) - (push - (exnref.pop) - ) - (push - (funcref.pop) - ) - (push - (nullref.pop) - ) - (push - (exnref.pop) - ) - (nop) - (unreachable) - ) - ) - ) - (i32.const 42) - ) - ) - (func $starter (; 2 ;) - (nop) - ) -) - BinaryenModuleDispose(the_module); - expressions.clear(); - functions.clear(); - globals.clear(); - events.clear(); - exports.clear(); - relooperBlocks.clear(); - the_module = BinaryenModuleCreate(); - expressions[size_t(NULL)] = BinaryenExpressionRef(NULL); - BinaryenAddFunctionImport(the_module, "check", "module", "check", 2, 0); - the_relooper = RelooperCreate(the_module); - expressions[1] = BinaryenConst(the_module, BinaryenLiteralInt32(1337)); - { - BinaryenExpressionRef operands[] = { expressions[1] }; - expressions[2] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[2]); - expressions[3] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[0] = BinaryenAddFunction(the_module, "just-one-block", 0, 0, varTypes, 1, expressions[3]); - } - the_relooper = RelooperCreate(the_module); - expressions[4] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[4] }; - expressions[5] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[5]); - expressions[6] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[6] }; - expressions[7] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[7]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]); - expressions[8] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[1] = BinaryenAddFunction(the_module, "two-blocks", 0, 0, varTypes, 1, expressions[8]); - } - the_relooper = RelooperCreate(the_module); - expressions[9] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[9] }; - expressions[10] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[10]); - expressions[11] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[11] }; - expressions[12] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[12]); - expressions[13] = BinaryenConst(the_module, BinaryenLiteralInt32(77)); - expressions[14] = BinaryenDrop(the_module, expressions[13]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[14]); - expressions[15] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[2] = BinaryenAddFunction(the_module, "two-blocks-plus-code", 0, 0, varTypes, 1, expressions[15]); - } - the_relooper = RelooperCreate(the_module); - expressions[16] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[16] }; - expressions[17] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[17]); - expressions[18] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[18] }; - expressions[19] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[19]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]); - RelooperAddBranch(relooperBlocks[1], relooperBlocks[0], expressions[0], expressions[0]); - expressions[20] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[3] = BinaryenAddFunction(the_module, "loop", 0, 0, varTypes, 1, expressions[20]); - } - the_relooper = RelooperCreate(the_module); - expressions[21] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[21] }; - expressions[22] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[22]); - expressions[23] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[23] }; - expressions[24] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[24]); - expressions[25] = BinaryenConst(the_module, BinaryenLiteralInt32(33)); - expressions[26] = BinaryenDrop(the_module, expressions[25]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[26]); - expressions[27] = BinaryenConst(the_module, BinaryenLiteralInt32(-66)); - expressions[28] = BinaryenDrop(the_module, expressions[27]); - RelooperAddBranch(relooperBlocks[1], relooperBlocks[0], expressions[0], expressions[28]); - expressions[29] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[4] = BinaryenAddFunction(the_module, "loop-plus-code", 0, 0, varTypes, 1, expressions[29]); - } - the_relooper = RelooperCreate(the_module); - expressions[30] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[30] }; - expressions[31] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[31]); - expressions[32] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[32] }; - expressions[33] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[33]); - expressions[34] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - { - BinaryenExpressionRef operands[] = { expressions[34] }; - expressions[35] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[35]); - expressions[36] = BinaryenConst(the_module, BinaryenLiteralInt32(55)); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[36], expressions[0]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[2], expressions[0], expressions[0]); - expressions[37] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[5] = BinaryenAddFunction(the_module, "split", 0, 0, varTypes, 1, expressions[37]); - } - the_relooper = RelooperCreate(the_module); - expressions[38] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[38] }; - expressions[39] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[39]); - expressions[40] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[40] }; - expressions[41] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[41]); - expressions[42] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - { - BinaryenExpressionRef operands[] = { expressions[42] }; - expressions[43] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[43]); - expressions[44] = BinaryenConst(the_module, BinaryenLiteralInt32(10)); - expressions[45] = BinaryenDrop(the_module, expressions[44]); - expressions[46] = BinaryenConst(the_module, BinaryenLiteralInt32(55)); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[46], expressions[45]); - expressions[47] = BinaryenConst(the_module, BinaryenLiteralInt32(20)); - expressions[48] = BinaryenDrop(the_module, expressions[47]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[2], expressions[0], expressions[48]); - expressions[49] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[6] = BinaryenAddFunction(the_module, "split-plus-code", 0, 0, varTypes, 1, expressions[49]); - } - the_relooper = RelooperCreate(the_module); - expressions[50] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[50] }; - expressions[51] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[51]); - expressions[52] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[52] }; - expressions[53] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[53]); - expressions[54] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - { - BinaryenExpressionRef operands[] = { expressions[54] }; - expressions[55] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[55]); - expressions[56] = BinaryenConst(the_module, BinaryenLiteralInt32(55)); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[56], expressions[0]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[2], expressions[0], expressions[0]); - RelooperAddBranch(relooperBlocks[1], relooperBlocks[2], expressions[0], expressions[0]); - expressions[57] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[7] = BinaryenAddFunction(the_module, "if", 0, 0, varTypes, 1, expressions[57]); - } - the_relooper = RelooperCreate(the_module); - expressions[58] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[58] }; - expressions[59] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[59]); - expressions[60] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[60] }; - expressions[61] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[61]); - expressions[62] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - { - BinaryenExpressionRef operands[] = { expressions[62] }; - expressions[63] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[63]); - expressions[64] = BinaryenConst(the_module, BinaryenLiteralInt32(-1)); - expressions[65] = BinaryenDrop(the_module, expressions[64]); - expressions[66] = BinaryenConst(the_module, BinaryenLiteralInt32(55)); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[66], expressions[65]); - expressions[67] = BinaryenConst(the_module, BinaryenLiteralInt32(-2)); - expressions[68] = BinaryenDrop(the_module, expressions[67]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[2], expressions[0], expressions[68]); - expressions[69] = BinaryenConst(the_module, BinaryenLiteralInt32(-3)); - expressions[70] = BinaryenDrop(the_module, expressions[69]); - RelooperAddBranch(relooperBlocks[1], relooperBlocks[2], expressions[0], expressions[70]); - expressions[71] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[8] = BinaryenAddFunction(the_module, "if-plus-code", 0, 0, varTypes, 1, expressions[71]); - } - the_relooper = RelooperCreate(the_module); - expressions[72] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[72] }; - expressions[73] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[73]); - expressions[74] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[74] }; - expressions[75] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[75]); - expressions[76] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - { - BinaryenExpressionRef operands[] = { expressions[76] }; - expressions[77] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[77]); - expressions[78] = BinaryenConst(the_module, BinaryenLiteralInt32(3)); - { - BinaryenExpressionRef operands[] = { expressions[78] }; - expressions[79] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[3] = RelooperAddBlock(the_relooper, expressions[79]); - expressions[80] = BinaryenConst(the_module, BinaryenLiteralInt32(55)); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[80], expressions[0]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[2], expressions[0], expressions[0]); - RelooperAddBranch(relooperBlocks[1], relooperBlocks[3], expressions[0], expressions[0]); - RelooperAddBranch(relooperBlocks[2], relooperBlocks[3], expressions[0], expressions[0]); - expressions[81] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[9] = BinaryenAddFunction(the_module, "if-else", 0, 0, varTypes, 1, expressions[81]); - } - the_relooper = RelooperCreate(the_module); - expressions[82] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[82] }; - expressions[83] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[83]); - expressions[84] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[84] }; - expressions[85] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[85]); - expressions[86] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - { - BinaryenExpressionRef operands[] = { expressions[86] }; - expressions[87] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[87]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]); - expressions[88] = BinaryenConst(the_module, BinaryenLiteralInt32(10)); - RelooperAddBranch(relooperBlocks[1], relooperBlocks[0], expressions[88], expressions[0]); - RelooperAddBranch(relooperBlocks[1], relooperBlocks[2], expressions[0], expressions[0]); - expressions[89] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[10] = BinaryenAddFunction(the_module, "loop-tail", 0, 0, varTypes, 1, expressions[89]); - } - the_relooper = RelooperCreate(the_module); - expressions[90] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[90] }; - expressions[91] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[91]); - expressions[92] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[92] }; - expressions[93] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[93]); - expressions[94] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - { - BinaryenExpressionRef operands[] = { expressions[94] }; - expressions[95] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[95]); - expressions[96] = BinaryenConst(the_module, BinaryenLiteralInt32(3)); - { - BinaryenExpressionRef operands[] = { expressions[96] }; - expressions[97] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[3] = RelooperAddBlock(the_relooper, expressions[97]); - expressions[98] = BinaryenConst(the_module, BinaryenLiteralInt32(4)); - { - BinaryenExpressionRef operands[] = { expressions[98] }; - expressions[99] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[4] = RelooperAddBlock(the_relooper, expressions[99]); - expressions[100] = BinaryenConst(the_module, BinaryenLiteralInt32(5)); - { - BinaryenExpressionRef operands[] = { expressions[100] }; - expressions[101] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[5] = RelooperAddBlock(the_relooper, expressions[101]); - expressions[102] = BinaryenConst(the_module, BinaryenLiteralInt32(6)); - { - BinaryenExpressionRef operands[] = { expressions[102] }; - expressions[103] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[6] = RelooperAddBlock(the_relooper, expressions[103]); - expressions[104] = BinaryenConst(the_module, BinaryenLiteralInt32(10)); - expressions[105] = BinaryenDrop(the_module, expressions[104]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[105]); - expressions[106] = BinaryenConst(the_module, BinaryenLiteralInt32(-2)); - RelooperAddBranch(relooperBlocks[1], relooperBlocks[2], expressions[106], expressions[0]); - expressions[107] = BinaryenConst(the_module, BinaryenLiteralInt32(20)); - expressions[108] = BinaryenDrop(the_module, expressions[107]); - RelooperAddBranch(relooperBlocks[1], relooperBlocks[6], expressions[0], expressions[108]); - expressions[109] = BinaryenConst(the_module, BinaryenLiteralInt32(-6)); - RelooperAddBranch(relooperBlocks[2], relooperBlocks[3], expressions[109], expressions[0]); - expressions[110] = BinaryenConst(the_module, BinaryenLiteralInt32(30)); - expressions[111] = BinaryenDrop(the_module, expressions[110]); - RelooperAddBranch(relooperBlocks[2], relooperBlocks[1], expressions[0], expressions[111]); - expressions[112] = BinaryenConst(the_module, BinaryenLiteralInt32(-10)); - RelooperAddBranch(relooperBlocks[3], relooperBlocks[4], expressions[112], expressions[0]); - RelooperAddBranch(relooperBlocks[3], relooperBlocks[5], expressions[0], expressions[0]); - RelooperAddBranch(relooperBlocks[4], relooperBlocks[5], expressions[0], expressions[0]); - expressions[113] = BinaryenConst(the_module, BinaryenLiteralInt32(40)); - expressions[114] = BinaryenDrop(the_module, expressions[113]); - RelooperAddBranch(relooperBlocks[5], relooperBlocks[6], expressions[0], expressions[114]); - expressions[115] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[11] = BinaryenAddFunction(the_module, "nontrivial-loop-plus-phi-to-head", 0, 0, varTypes, 1, expressions[115]); - } - the_relooper = RelooperCreate(the_module); - expressions[116] = BinaryenConst(the_module, BinaryenLiteralInt32(-99)); - expressions[117] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[117] }; - expressions[118] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlockWithSwitch(the_relooper, expressions[118], expressions[116]); - expressions[119] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[119] }; - expressions[120] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[120]); - expressions[121] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - { - BinaryenExpressionRef operands[] = { expressions[121] }; - expressions[122] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[122]); - expressions[123] = BinaryenConst(the_module, BinaryenLiteralInt32(3)); - { - BinaryenExpressionRef operands[] = { expressions[123] }; - expressions[124] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[3] = RelooperAddBlock(the_relooper, expressions[124]); - { - BinaryenIndex indexes[] = { 2, 5 }; - RelooperAddBranchForSwitch(relooperBlocks[0], relooperBlocks[1], indexes, 2, expressions[0]); - } - expressions[125] = BinaryenConst(the_module, BinaryenLiteralInt32(55)); - expressions[126] = BinaryenDrop(the_module, expressions[125]); - { - BinaryenIndex indexes[] = { 4 }; - RelooperAddBranchForSwitch(relooperBlocks[0], relooperBlocks[2], indexes, 1, expressions[126]); - } - { - BinaryenIndex indexes[] = { 0 }; - RelooperAddBranchForSwitch(relooperBlocks[0], relooperBlocks[3], indexes, 0, expressions[0]); - } - expressions[127] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[12] = BinaryenAddFunction(the_module, "switch", 0, 0, varTypes, 1, expressions[127]); - } - the_relooper = RelooperCreate(the_module); - expressions[128] = BinaryenConst(the_module, BinaryenLiteralInt32(0)); - { - BinaryenExpressionRef operands[] = { expressions[128] }; - expressions[129] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[129]); - expressions[130] = BinaryenConst(the_module, BinaryenLiteralInt32(1)); - { - BinaryenExpressionRef operands[] = { expressions[130] }; - expressions[131] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[131]); - expressions[132] = BinaryenConst(the_module, BinaryenLiteralInt32(2)); - { - BinaryenExpressionRef operands[] = { expressions[132] }; - expressions[133] = BinaryenCall(the_module, "check", operands, 1, 0); - } - relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[133]); - expressions[134] = BinaryenConst(the_module, BinaryenLiteralInt32(10)); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[134], expressions[0]); - RelooperAddBranch(relooperBlocks[0], relooperBlocks[2], expressions[0], expressions[0]); - RelooperAddBranch(relooperBlocks[1], relooperBlocks[2], expressions[0], expressions[0]); - RelooperAddBranch(relooperBlocks[2], relooperBlocks[1], expressions[0], expressions[0]); - expressions[135] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 3); - { - BinaryenType varTypes[] = { 2, 2, 3, 2, 4, 5, 2 }; - functions[13] = BinaryenAddFunction(the_module, "duffs-device", 0, 0, varTypes, 7, expressions[135]); - } - the_relooper = RelooperCreate(the_module); - expressions[136] = BinaryenConst(the_module, BinaryenLiteralInt32(42)); - { - BinaryenExpressionRef operands[] = { expressions[136] }; - expressions[137] = BinaryenCall(the_module, "check", operands, 1, 0); - } - expressions[138] = BinaryenConst(the_module, BinaryenLiteralInt32(1337)); - expressions[139] = BinaryenReturn(the_module, expressions[138]); - { - BinaryenExpressionRef children[] = { expressions[137], expressions[139] }; - expressions[140] = BinaryenBlock(the_module, "the-list", children, 2, BinaryenTypeAuto()); - } - relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[140]); - expressions[141] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0); - { - BinaryenType varTypes[] = { 2 }; - functions[14] = BinaryenAddFunction(the_module, "return", 0, 2, varTypes, 1, expressions[141]); - } -raw: - BinaryenModulePrint(the_module); -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (import "module" "check" (func $check (param i32))) - (func $just-one-block (; 1 ;) - (local $0 i32) - (call $check - (i32.const 1337) - ) - ) - (func $two-blocks (; 2 ;) - (local $0 i32) - (block - (call $check - (i32.const 0) - ) - (call $check - (i32.const 1) - ) - ) - ) - (func $two-blocks-plus-code (; 3 ;) - (local $0 i32) - (block - (block - (call $check - (i32.const 0) - ) - (drop - (i32.const 77) - ) - ) - (call $check - (i32.const 1) - ) - ) - ) - (func $loop (; 4 ;) - (local $0 i32) - (loop $shape$0$continue - (block - (call $check - (i32.const 0) - ) - (call $check - (i32.const 1) - ) - ) - (block - (br $shape$0$continue) - ) - ) - ) - (func $loop-plus-code (; 5 ;) - (local $0 i32) - (loop $shape$0$continue - (block - (block - (call $check - (i32.const 0) - ) - (drop - (i32.const 33) - ) - ) - (call $check - (i32.const 1) - ) - ) - (block - (drop - (i32.const -66) - ) - (br $shape$0$continue) - ) - ) - ) - (func $split (; 6 ;) - (local $0 i32) - (call $check - (i32.const 0) - ) - (if - (i32.const 55) - (block - (call $check - (i32.const 1) - ) - ) - (block - (call $check - (i32.const 2) - ) - ) - ) - ) - (func $split-plus-code (; 7 ;) - (local $0 i32) - (call $check - (i32.const 0) - ) - (if - (i32.const 55) - (block - (drop - (i32.const 10) - ) - (block - (call $check - (i32.const 1) - ) - ) - ) - (block - (drop - (i32.const 20) - ) - (block - (call $check - (i32.const 2) - ) - ) - ) - ) - ) - (func $if (; 8 ;) - (local $0 i32) - (block $block$3$break - (call $check - (i32.const 0) - ) - (if - (i32.const 55) - (block - (call $check - (i32.const 1) - ) - (block - (br $block$3$break) - ) - ) - (br $block$3$break) - ) - ) - (block - (call $check - (i32.const 2) - ) - ) - ) - (func $if-plus-code (; 9 ;) - (local $0 i32) - (block $block$3$break - (call $check - (i32.const 0) - ) - (if - (i32.const 55) - (block - (drop - (i32.const -1) - ) - (block - (call $check - (i32.const 1) - ) - (block - (drop - (i32.const -3) - ) - (br $block$3$break) - ) - ) - ) - (block - (drop - (i32.const -2) - ) - (br $block$3$break) - ) - ) - ) - (block - (call $check - (i32.const 2) - ) - ) - ) - (func $if-else (; 10 ;) - (local $0 i32) - (block $block$4$break - (call $check - (i32.const 0) - ) - (if - (i32.const 55) - (block - (call $check - (i32.const 1) - ) - (block - (br $block$4$break) - ) - ) - (block - (call $check - (i32.const 2) - ) - (block - (br $block$4$break) - ) - ) - ) - ) - (block - (call $check - (i32.const 3) - ) - ) - ) - (func $loop-tail (; 11 ;) - (local $0 i32) - (block $block$3$break - (loop $shape$0$continue - (block - (call $check - (i32.const 0) - ) - (call $check - (i32.const 1) - ) - ) - (if - (i32.const 10) - (br $shape$0$continue) - (br $block$3$break) - ) - ) - ) - (block - (call $check - (i32.const 2) - ) - ) - ) - (func $nontrivial-loop-plus-phi-to-head (; 12 ;) - (local $0 i32) - (block $block$2$break - (call $check - (i32.const 0) - ) - (block - (drop - (i32.const 10) - ) - (br $block$2$break) - ) - ) - (block - (block $block$7$break - (block $block$4$break - (loop $shape$1$continue - (block $block$3$break - (call $check - (i32.const 1) - ) - (if - (i32.const -2) - (br $block$3$break) - (block - (drop - (i32.const 20) - ) - (br $block$7$break) - ) - ) - ) - (block - (call $check - (i32.const 2) - ) - (if - (i32.const -6) - (br $block$4$break) - (block - (drop - (i32.const 30) - ) - (br $shape$1$continue) - ) - ) - ) - ) - ) - (block - (block $block$6$break - (call $check - (i32.const 3) - ) - (if - (i32.const -10) - (block - (call $check - (i32.const 4) - ) - (block - (br $block$6$break) - ) - ) - (br $block$6$break) - ) - ) - (block - (call $check - (i32.const 5) - ) - (block - (drop - (i32.const 40) - ) - (br $block$7$break) - ) - ) - ) - ) - (block - (call $check - (i32.const 6) - ) - ) - ) - ) - (func $switch (; 13 ;) - (local $0 i32) - (call $check - (i32.const 0) - ) - (block $switch$1$leave - (block $switch$1$default - (block $switch$1$case$3 - (block $switch$1$case$2 - (br_table $switch$1$default $switch$1$default $switch$1$case$2 $switch$1$default $switch$1$case$3 $switch$1$case$2 $switch$1$default - (i32.const -99) - ) - ) - (block - (block - (call $check - (i32.const 1) - ) - ) - ) - (br $switch$1$leave) - ) - (block - (drop - (i32.const 55) - ) - (block - (call $check - (i32.const 2) - ) - ) - ) - (br $switch$1$leave) - ) - (block - (block - (call $check - (i32.const 3) - ) - ) - ) - (br $switch$1$leave) - ) - ) - (func $duffs-device (; 14 ;) - (local $0 i32) - (local $1 i32) - (local $2 i64) - (local $3 i32) - (local $4 f32) - (local $5 f64) - (local $6 i32) - (block - (block $block$3$break - (block $block$2$break - (call $check - (i32.const 0) - ) - (if - (i32.const 10) - (block - (local.set $3 - (i32.const 2) - ) - (br $block$2$break) - ) - (block - (local.set $3 - (i32.const 3) - ) - (br $block$3$break) - ) - ) - ) - ) - ) - (loop $shape$1$continue - (if - (i32.eq - (local.get $3) - (i32.const 2) - ) - (block - (local.set $3 - (i32.const 0) - ) - (call $check - (i32.const 1) - ) - (block - (local.set $3 - (i32.const 3) - ) - (br $shape$1$continue) - ) - ) - (if - (i32.eq - (local.get $3) - (i32.const 3) - ) - (block - (local.set $3 - (i32.const 0) - ) - (call $check - (i32.const 2) - ) - (block - (local.set $3 - (i32.const 2) - ) - (br $shape$1$continue) - ) - ) - ) - ) - ) - ) - (func $return (; 15 ;) (result i32) - (local $0 i32) - (block - (call $check - (i32.const 42) - ) - (return - (i32.const 1337) - ) - ) - ) -) - BinaryenModuleValidate(the_module); - BinaryenModuleOptimize(the_module); - BinaryenModuleValidate(the_module); -optimized: - BinaryenModulePrint(the_module); -(module -) - BinaryenModuleDispose(the_module); - expressions.clear(); - functions.clear(); - globals.clear(); - events.clear(); - exports.clear(); - relooperBlocks.clear(); // BinaryenTypeNone: 0 // BinaryenTypeUnreachable: 1 // BinaryenTypeInt32: 2 @@ -4449,36 +6,11 @@ // BinaryenTypeFloat64: 5 // BinaryenTypeVec128: 6 // BinaryenTypeFuncref: 7 - // BinaryenTypeAnyref: 8 - // BinaryenTypeNullref: 9 - // BinaryenTypeExnref: 10 - // BinaryenTypeAuto: -1 - { - BinaryenType t275[] = {2, 2}; - BinaryenTypeCreate(t275, 2); // 13 - } - { - BinaryenType t276[] = {2, 2}; - BinaryenTypeCreate(t276, 2); // 13 - } - { - BinaryenType t277[] = {4, 4}; - BinaryenTypeCreate(t277, 2); // 14 - } - return 0; -} -// ending a Binaryen API trace - // BinaryenTypeNone: 0 - // BinaryenTypeUnreachable: 1 - // BinaryenTypeInt32: 2 - // BinaryenTypeInt64: 3 - // BinaryenTypeFloat32: 4 - // BinaryenTypeFloat64: 5 - // BinaryenTypeVec128: 6 - // BinaryenTypeFuncref: 7 - // BinaryenTypeAnyref: 8 - // BinaryenTypeNullref: 9 - // BinaryenTypeExnref: 10 + // BinaryenTypeExternref: 8 + // BinaryenTypeExnref: 9 + // BinaryenTypeAnyref: 10 + // BinaryenTypeEqref: 11 + // BinaryenTypeI31ref: 12 // BinaryenTypeAuto: -1 BinaryenFeatureMVP: 0 BinaryenFeatureAtomics: 1 @@ -4490,7 +22,10 @@ BinaryenFeatureExceptionHandling: 64 BinaryenFeatureTailCall: 128 BinaryenFeatureReferenceTypes: 256 -BinaryenFeatureAll: 511 +BinaryenFeatureMultivalue: 512 +BinaryenFeatureGC: 1024 +BinaryenFeatureMemory64: 2048 +BinaryenFeatureAll: 8191 (f32.neg (f32.const -33.61199951171875) ) @@ -4511,7 +46,7 @@ (export "kitchen_sinker" (func "$kitchen()sinker")) (export "mem" (memory $0)) (start $starter) - (func "$kitchen()sinker" (; 1 ;) (param $0 i32) (param $1 i64) (param $2 f32) (param $3 f64) (result i32) + (func "$kitchen()sinker" (param $0 i32) (param $1 i64) (param $2 f32) (param $3 f64) (result i32) (local $4 i32) (local $5 exnref) (block $the-body (result i32) @@ -4774,6 +309,11 @@ ) ) (drop + (i8x16.abs + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop (i8x16.neg (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) @@ -4789,6 +329,16 @@ ) ) (drop + (i8x16.bitmask + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i16x8.abs + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop (i16x8.neg (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) @@ -4804,32 +354,37 @@ ) ) (drop - (i32x4.neg + (i16x8.bitmask (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop - (i32x4.any_true + (i32x4.abs (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop - (i32x4.all_true + (i32x4.neg (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop - (i64x2.neg + (i32x4.any_true + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (i32x4.all_true (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop - (i64x2.any_true + (i32x4.bitmask (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) (drop - (i64x2.all_true + (i64x2.neg (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) ) @@ -5586,6 +1141,12 @@ ) ) (drop + (i64x2.mul + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop (f32x4.add (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) @@ -5652,6 +1213,38 @@ ) ) (drop + (f32x4.pmin + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.pmax + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.ceil + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.floor + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.trunc + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f32x4.nearest + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop (f64x2.add (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) @@ -5688,6 +1281,38 @@ ) ) (drop + (f64x2.pmin + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.pmax + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.ceil + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.floor + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.trunc + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop + (f64x2.nearest + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + ) + (drop (i8x16.narrow_i16x8_s (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) @@ -6114,7 +1739,7 @@ ) (drop (ref.is_null - (ref.null) + (ref.null extern) ) ) (drop @@ -6123,19 +1748,32 @@ ) ) (drop + (ref.is_null + (ref.null exn) + ) + ) + (drop (select (result funcref) - (ref.null) + (ref.null func) (ref.func "$kitchen()sinker") (i32.const 1) ) ) + (drop + (ref.eq + (ref.null eq) + (ref.null eq) + ) + ) (try - (throw $a-event - (i32.const 0) + (do + (throw $a-event + (i32.const 0) + ) ) (catch (local.set $5 - (exnref.pop) + (pop exnref) ) (drop (block $try-block (result i32) @@ -6155,51 +1793,87 @@ ) ) (drop - (i32.atomic.wait + (memory.atomic.wait32 (i32.const 0) (i32.const 0) (i64.const 111) ) ) (drop - (atomic.notify + (memory.atomic.notify (i32.const 0) (i32.const 0) ) ) (atomic.fence) - (push - (i32.pop) + (drop + (tuple.make + (i32.const 13) + (i64.const 37) + (f32.const 1.2999999523162842) + (f64.const 3.7) + ) + ) + (drop + (tuple.extract 2 + (tuple.make + (i32.const 13) + (i64.const 37) + (f32.const 1.2999999523162842) + (f64.const 3.7) + ) + ) + ) + (drop + (pop i32) + ) + (drop + (pop i64) + ) + (drop + (pop f32) ) - (push - (i64.pop) + (drop + (pop f64) ) - (push - (f32.pop) + (drop + (pop funcref) ) - (push - (f64.pop) + (drop + (pop externref) ) - (push - (funcref.pop) + (drop + (pop exnref) ) - (push - (anyref.pop) + (drop + (pop i32 i64 f32 f64) ) - (push - (nullref.pop) + (drop + (memory.size) ) - (push - (exnref.pop) + (drop + (memory.grow + (i32.const 0) + ) ) - (push - (funcref.pop) + (drop + (i31.new + (i32.const 0) + ) ) - (push - (nullref.pop) + (drop + (i31.get_s + (i31.new + (i32.const 1) + ) + ) ) - (push - (exnref.pop) + (drop + (i31.get_u + (i31.new + (i32.const 2) + ) + ) ) (nop) (unreachable) @@ -6209,14 +1883,14 @@ (i32.const 42) ) ) - (func $starter (; 2 ;) + (func $starter (nop) ) ) (module (type $none_=>_i32 (func (result i32))) (type $none_=>_i64 (func (result i64))) - (func $unreachable-fn (; 0 ;) (result i32) + (func $unreachable-fn (result i32) (call_indirect (type $none_=>_i64) (unreachable) ) @@ -6228,13 +1902,13 @@ (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) (import "module" "check" (func $check (param i32))) - (func $just-one-block (; 1 ;) + (func $just-one-block (local $0 i32) (call $check (i32.const 1337) ) ) - (func $two-blocks (; 2 ;) + (func $two-blocks (local $0 i32) (block (call $check @@ -6245,7 +1919,7 @@ ) ) ) - (func $two-blocks-plus-code (; 3 ;) + (func $two-blocks-plus-code (local $0 i32) (block (block @@ -6261,7 +1935,7 @@ ) ) ) - (func $loop (; 4 ;) + (func $loop (local $0 i32) (loop $shape$0$continue (block @@ -6277,7 +1951,7 @@ ) ) ) - (func $loop-plus-code (; 5 ;) + (func $loop-plus-code (local $0 i32) (loop $shape$0$continue (block @@ -6301,7 +1975,7 @@ ) ) ) - (func $split (; 6 ;) + (func $split (local $0 i32) (call $check (i32.const 0) @@ -6320,7 +1994,7 @@ ) ) ) - (func $split-plus-code (; 7 ;) + (func $split-plus-code (local $0 i32) (call $check (i32.const 0) @@ -6349,7 +2023,7 @@ ) ) ) - (func $if (; 8 ;) + (func $if (local $0 i32) (block $block$3$break (call $check @@ -6374,7 +2048,7 @@ ) ) ) - (func $if-plus-code (; 9 ;) + (func $if-plus-code (local $0 i32) (block $block$3$break (call $check @@ -6412,7 +2086,7 @@ ) ) ) - (func $if-else (; 10 ;) + (func $if-else (local $0 i32) (block $block$4$break (call $check @@ -6444,7 +2118,7 @@ ) ) ) - (func $loop-tail (; 11 ;) + (func $loop-tail (local $0 i32) (block $block$3$break (loop $shape$0$continue @@ -6469,7 +2143,7 @@ ) ) ) - (func $nontrivial-loop-plus-phi-to-head (; 12 ;) + (func $nontrivial-loop-plus-phi-to-head (local $0 i32) (block $block$2$break (call $check @@ -6556,7 +2230,7 @@ ) ) ) - (func $switch (; 13 ;) + (func $switch (local $0 i32) (call $check (i32.const 0) @@ -6600,7 +2274,7 @@ (br $switch$1$leave) ) ) - (func $duffs-device (; 14 ;) + (func $duffs-device (local $0 i32) (local $1 i32) (local $2 i64) @@ -6675,7 +2349,7 @@ ) ) ) - (func $return (; 15 ;) (result i32) + (func $return (result i32) (local $0 i32) (block (call $check @@ -6693,7 +2367,7 @@ module loaded from binary form: (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (func $adder (; 0 ;) (param $0 i32) (param $1 i32) (result i32) + (func $adder (param $0 i32) (param $1 i32) (result i32) (i32.add (local.get $0) (local.get $1) @@ -6703,7 +2377,7 @@ module s-expr printed (in memory): (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (func $adder (; 0 ;) (param $0 i32) (param $1 i32) (result i32) + (func $adder (param $0 i32) (param $1 i32) (result i32) (i32.add (local.get $0) (local.get $1) @@ -6714,7 +2388,7 @@ module s-expr printed (in memory, caller-owned): (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (func $adder (; 0 ;) (param $0 i32) (param $1 i32) (result i32) + (func $adder (param $0 i32) (param $1 i32) (result i32) (i32.add (local.get $0) (local.get $1) @@ -6727,7 +2401,7 @@ (type $i32_=>_none (func (param i32))) (import "spectest" "print" (func $print-i32 (param i32))) (start $starter) - (func $starter (; 1 ;) + (func $starter (call $print-i32 (i32.const 1234) ) @@ -6736,7 +2410,7 @@ 1234 : i32 (module (type $none_=>_none (func)) - (func $func (; 0 ;) + (func $func (local $0 i32) (local.set $0 (i64.const 1234) @@ -6756,13 +2430,30 @@ (export "export1" (func $fn1)) (export "export2" (func $fn2)) (export "mem" (memory $0)) - (func $fn0 (; 0 ;) + (func $fn0 (nop) ) - (func $fn1 (; 1 ;) + (func $fn1 (nop) ) - (func $fn2 (; 2 ;) + (func $fn2 (nop) ) ) +module with a function to optimize: +(module + (type $none_=>_i32 (func (result i32))) + (func $adder (result i32) + (i32.add + (i32.const 1) + (i32.const 3) + ) + ) +) +optimized: +(module + (type $none_=>_i32 (func (result i32))) + (func $adder (result i32) + (i32.const 4) + ) +) diff -Nru binaryen-91/test/example/c-api-kitchen-sink.txt.txt binaryen-99/test/example/c-api-kitchen-sink.txt.txt --- binaryen-91/test/example/c-api-kitchen-sink.txt.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/example/c-api-kitchen-sink.txt.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,2188 +0,0 @@ -(f32.neg - (f32.const -33.61199951171875) -) -(module - (type $i32_i64_f32_f64_=>_i32 (func (param i32 i64 f32 f64) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_f64_=>_f32 (func (param i32 f64) (result f32))) - (import "module" "base" (func $an-imported (param i32 f64) (result f32))) - (memory $0 (shared 1 256)) - (data (i32.const 10) "hello, world") - (data passive "I am passive") - (table $0 1 1 funcref) - (elem (i32.const 0) "$kitchen()sinker") - (global $a-global i32 (i32.const 7)) - (global $a-mutable-global (mut f32) (f32.const 7.5)) - (event $a-event (attr 0) (param i32)) - (export "kitchen_sinker" (func "$kitchen()sinker")) - (export "mem" (memory $0)) - (start $starter) - (func "$kitchen()sinker" (; 1 ;) (param $0 i32) (param $1 i64) (param $2 f32) (param $3 f64) (result i32) - (local $4 i32) - (local $5 exnref) - (block $the-body (result i32) - (block $the-nothing - (drop - (block $the-value (result i32) - (drop - (i32.clz - (i32.const -10) - ) - ) - (drop - (i64.ctz - (i64.const -22) - ) - ) - (drop - (i32.popcnt - (i32.const -10) - ) - ) - (drop - (f32.neg - (f32.const -33.61199951171875) - ) - ) - (drop - (f64.abs - (f64.const -9005.84) - ) - ) - (drop - (f32.ceil - (f32.const -33.61199951171875) - ) - ) - (drop - (f64.floor - (f64.const -9005.84) - ) - ) - (drop - (f32.trunc - (f32.const -33.61199951171875) - ) - ) - (drop - (f32.nearest - (f32.const -33.61199951171875) - ) - ) - (drop - (f64.sqrt - (f64.const -9005.84) - ) - ) - (drop - (i32.eqz - (i32.const -10) - ) - ) - (drop - (i64.extend_i32_s - (i32.const -10) - ) - ) - (drop - (i64.extend_i32_u - (i32.const -10) - ) - ) - (drop - (i32.wrap_i64 - (i64.const -22) - ) - ) - (drop - (i32.trunc_f32_s - (f32.const -33.61199951171875) - ) - ) - (drop - (i64.trunc_f32_s - (f32.const -33.61199951171875) - ) - ) - (drop - (i32.trunc_f32_u - (f32.const -33.61199951171875) - ) - ) - (drop - (i64.trunc_f32_u - (f32.const -33.61199951171875) - ) - ) - (drop - (i32.trunc_f64_s - (f64.const -9005.84) - ) - ) - (drop - (i64.trunc_f64_s - (f64.const -9005.84) - ) - ) - (drop - (i32.trunc_f64_u - (f64.const -9005.84) - ) - ) - (drop - (i64.trunc_f64_u - (f64.const -9005.84) - ) - ) - (drop - (i32.trunc_sat_f32_s - (f32.const -33.61199951171875) - ) - ) - (drop - (i64.trunc_sat_f32_s - (f32.const -33.61199951171875) - ) - ) - (drop - (i32.trunc_sat_f32_u - (f32.const -33.61199951171875) - ) - ) - (drop - (i64.trunc_sat_f32_u - (f32.const -33.61199951171875) - ) - ) - (drop - (i32.trunc_sat_f64_s - (f64.const -9005.84) - ) - ) - (drop - (i64.trunc_sat_f64_s - (f64.const -9005.84) - ) - ) - (drop - (i32.trunc_sat_f64_u - (f64.const -9005.84) - ) - ) - (drop - (i64.trunc_sat_f64_u - (f64.const -9005.84) - ) - ) - (drop - (i32.reinterpret_f32 - (f32.const -33.61199951171875) - ) - ) - (drop - (i64.reinterpret_f64 - (f64.const -9005.84) - ) - ) - (drop - (f32.convert_i32_s - (i32.const -10) - ) - ) - (drop - (f64.convert_i32_s - (i32.const -10) - ) - ) - (drop - (f32.convert_i32_u - (i32.const -10) - ) - ) - (drop - (f64.convert_i32_u - (i32.const -10) - ) - ) - (drop - (f32.convert_i64_s - (i64.const -22) - ) - ) - (drop - (f64.convert_i64_s - (i64.const -22) - ) - ) - (drop - (f32.convert_i64_u - (i64.const -22) - ) - ) - (drop - (f64.convert_i64_u - (i64.const -22) - ) - ) - (drop - (f64.promote_f32 - (f32.const -33.61199951171875) - ) - ) - (drop - (f32.demote_f64 - (f64.const -9005.84) - ) - ) - (drop - (f32.reinterpret_i32 - (i32.const -10) - ) - ) - (drop - (f64.reinterpret_i64 - (i64.const -22) - ) - ) - (drop - (i8x16.splat - (i32.const -10) - ) - ) - (drop - (i16x8.splat - (i32.const -10) - ) - ) - (drop - (i32x4.splat - (i32.const -10) - ) - ) - (drop - (i64x2.splat - (i64.const -22) - ) - ) - (drop - (f32x4.splat - (f32.const -33.61199951171875) - ) - ) - (drop - (f64x2.splat - (f64.const -9005.84) - ) - ) - (drop - (v128.not - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.any_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.all_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.any_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.all_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.any_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.all_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.any_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.all_true - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.abs - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.sqrt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.abs - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.neg - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.sqrt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.trunc_sat_f32x4_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.trunc_sat_f32x4_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.trunc_sat_f64x2_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.trunc_sat_f64x2_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.convert_i32x4_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.convert_i32x4_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.convert_i64x2_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.convert_i64x2_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.widen_low_i8x16_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.widen_high_i8x16_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.widen_low_i8x16_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.widen_high_i8x16_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.widen_low_i16x8_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.widen_high_i16x8_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.widen_low_i16x8_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.widen_high_i16x8_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32.add - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (f64.sub - (f64.const -9005.84) - (f64.const -9007.33) - ) - ) - (drop - (i32.div_s - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.div_u - (i64.const -22) - (i64.const -23) - ) - ) - (drop - (i64.rem_s - (i64.const -22) - (i64.const -23) - ) - ) - (drop - (i32.rem_u - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i32.and - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.or - (i64.const -22) - (i64.const -23) - ) - ) - (drop - (i32.xor - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.shl - (i64.const -22) - (i64.const -23) - ) - ) - (drop - (i64.shr_u - (i64.const -22) - (i64.const -23) - ) - ) - (drop - (i32.shr_s - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i32.rotl - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.rotr - (i64.const -22) - (i64.const -23) - ) - ) - (drop - (f32.div - (f32.const -33.61199951171875) - (f32.const -62.5) - ) - ) - (drop - (f64.copysign - (f64.const -9005.84) - (f64.const -9007.33) - ) - ) - (drop - (f32.min - (f32.const -33.61199951171875) - (f32.const -62.5) - ) - ) - (drop - (f64.max - (f64.const -9005.84) - (f64.const -9007.33) - ) - ) - (drop - (i32.eq - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (f32.ne - (f32.const -33.61199951171875) - (f32.const -62.5) - ) - ) - (drop - (i32.lt_s - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.lt_u - (i64.const -22) - (i64.const -23) - ) - ) - (drop - (i64.le_s - (i64.const -22) - (i64.const -23) - ) - ) - (drop - (i32.le_u - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.gt_s - (i64.const -22) - (i64.const -23) - ) - ) - (drop - (i32.gt_u - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i32.ge_s - (i32.const -10) - (i32.const -11) - ) - ) - (drop - (i64.ge_u - (i64.const -22) - (i64.const -23) - ) - ) - (drop - (f32.lt - (f32.const -33.61199951171875) - (f32.const -62.5) - ) - ) - (drop - (f64.le - (f64.const -9005.84) - (f64.const -9007.33) - ) - ) - (drop - (f64.gt - (f64.const -9005.84) - (f64.const -9007.33) - ) - ) - (drop - (f32.ge - (f32.const -33.61199951171875) - (f32.const -62.5) - ) - ) - (drop - (i8x16.eq - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.ne - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.lt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.lt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.gt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.gt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.le_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.le_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.ge_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.ge_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.eq - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.ne - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.lt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.lt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.gt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.gt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.le_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.le_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.ge_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.ge_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.eq - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.ne - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.lt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.lt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.gt_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.gt_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.le_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.le_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.ge_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.ge_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.eq - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.ne - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.lt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.gt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.le - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.ge - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.eq - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.ne - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.lt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.gt - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.le - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.ge - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v128.and - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v128.or - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v128.xor - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v128.andnot - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.add_saturate_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.add_saturate_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.sub_saturate_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.sub_saturate_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.mul - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.min_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.min_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.max_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.max_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.avgr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.add_saturate_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.add_saturate_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.sub_saturate_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.sub_saturate_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.mul - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.min_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.min_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.max_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.max_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.avgr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.mul - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.mul - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.min_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.min_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.max_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.max_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.dot_i16x8_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.div - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.min - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.max - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.add - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.sub - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.mul - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.div - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.min - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.max - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.narrow_i16x8_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.narrow_i16x8_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.narrow_i32x4_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.narrow_i32x4_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v8x16.swizzle - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.extract_lane_s 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.extract_lane_u 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.extract_lane_s 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i16x8.extract_lane_u 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i32x4.extract_lane 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i64x2.extract_lane 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.extract_lane 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.extract_lane 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (i8x16.replace_lane 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 42) - ) - ) - (drop - (i16x8.replace_lane 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 42) - ) - ) - (drop - (i32x4.replace_lane 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 42) - ) - ) - (drop - (i64x2.replace_lane 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i64.const 42) - ) - ) - (drop - (f32x4.replace_lane 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (f32.const 42) - ) - ) - (drop - (f64x2.replace_lane 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (f64.const 42) - ) - ) - (drop - (i8x16.shl - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i8x16.shr_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i8x16.shr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i16x8.shl - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i16x8.shr_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i16x8.shr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i32x4.shl - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i32x4.shr_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i32x4.shr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i64x2.shl - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i64x2.shr_s - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (i64x2.shr_u - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (i32.const 1) - ) - ) - (drop - (v8x16.load_splat - (i32.const 128) - ) - ) - (drop - (v16x8.load_splat offset=16 align=1 - (i32.const 128) - ) - ) - (drop - (v32x4.load_splat offset=16 - (i32.const 128) - ) - ) - (drop - (v64x2.load_splat align=4 - (i32.const 128) - ) - ) - (drop - (i16x8.load8x8_s - (i32.const 128) - ) - ) - (drop - (i16x8.load8x8_u - (i32.const 128) - ) - ) - (drop - (i32x4.load16x4_s - (i32.const 128) - ) - ) - (drop - (i32x4.load16x4_u - (i32.const 128) - ) - ) - (drop - (i64x2.load32x2_s - (i32.const 128) - ) - ) - (drop - (i64x2.load32x2_u - (i32.const 128) - ) - ) - (drop - (v8x16.shuffle 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (v128.bitselect - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.qfma - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f32x4.qfms - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.qfma - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (drop - (f64x2.qfms - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) - ) - ) - (memory.init 0 - (i32.const 1024) - (i32.const 0) - (i32.const 12) - ) - (data.drop 0) - (memory.copy - (i32.const 2048) - (i32.const 1024) - (i32.const 12) - ) - (memory.fill - (i32.const 0) - (i32.const 42) - (i32.const 1024) - ) - (block - ) - (if - (i32.const 1) - (drop - (i32.const 2) - ) - (drop - (i32.const 3) - ) - ) - (if - (i32.const 4) - (drop - (i32.const 5) - ) - ) - (drop - (loop $in (result i32) - (i32.const 0) - ) - ) - (drop - (loop (result i32) - (i32.const 0) - ) - ) - (drop - (br_if $the-value - (i32.const 1) - (i32.const 0) - ) - ) - (br_if $the-nothing - (i32.const 2) - ) - (br $the-value - (i32.const 3) - ) - (br $the-nothing) - (br_table $the-value $the-value - (i32.const 1) - (i32.const 0) - ) - (br_table $the-nothing $the-nothing - (i32.const 2) - ) - (drop - (i32.eqz - (call "$kitchen()sinker" - (i32.const 13) - (i64.const 37) - (f32.const 1.2999999523162842) - (f64.const 3.7) - ) - ) - ) - (drop - (i32.eqz - (i32.trunc_f32_s - (call $an-imported - (i32.const 13) - (f64.const 3.7) - ) - ) - ) - ) - (drop - (i32.eqz - (call_indirect (type $i32_i64_f32_f64_=>_i32) - (i32.const 13) - (i64.const 37) - (f32.const 1.2999999523162842) - (f64.const 3.7) - (i32.const 2449) - ) - ) - ) - (drop - (local.get $0) - ) - (local.set $0 - (i32.const 101) - ) - (drop - (local.tee $0 - (i32.const 102) - ) - ) - (drop - (i32.load - (i32.const 1) - ) - ) - (drop - (i64.load16_s offset=2 align=1 - (i32.const 8) - ) - ) - (drop - (f32.load - (i32.const 2) - ) - ) - (drop - (f64.load offset=2 - (i32.const 9) - ) - ) - (i32.store - (i32.const 10) - (i32.const 11) - ) - (i64.store offset=2 align=4 - (i32.const 110) - (i64.const 111) - ) - (drop - (select - (i32.const 3) - (i32.const 5) - (i32.const 1) - ) - ) - (return - (i32.const 1337) - ) - (return_call "$kitchen()sinker" - (i32.const 13) - (i64.const 37) - (f32.const 1.2999999523162842) - (f64.const 3.7) - ) - (return_call_indirect (type $i32_i64_f32_f64_=>_i32) - (i32.const 13) - (i64.const 37) - (f32.const 1.2999999523162842) - (f64.const 3.7) - (i32.const 2449) - ) - (drop - (ref.is_null - (ref.null) - ) - ) - (drop - (ref.is_null - (ref.func "$kitchen()sinker") - ) - ) - (drop - (select (result funcref) - (ref.null) - (ref.func "$kitchen()sinker") - (i32.const 1) - ) - ) - (try - (throw $a-event - (i32.const 0) - ) - (catch - (local.set $5 - (exnref.pop) - ) - (drop - (block $try-block (result i32) - (rethrow - (br_on_exn $try-block $a-event - (local.get $5) - ) - ) - ) - ) - ) - ) - (i32.atomic.store - (i32.const 0) - (i32.atomic.load - (i32.const 0) - ) - ) - (drop - (i32.atomic.wait - (i32.const 0) - (i32.const 0) - (i64.const 111) - ) - ) - (drop - (atomic.notify - (i32.const 0) - (i32.const 0) - ) - ) - (atomic.fence) - (push - (i32.pop) - ) - (push - (i64.pop) - ) - (push - (f32.pop) - ) - (push - (f64.pop) - ) - (push - (funcref.pop) - ) - (push - (anyref.pop) - ) - (push - (nullref.pop) - ) - (push - (exnref.pop) - ) - (push - (funcref.pop) - ) - (push - (nullref.pop) - ) - (push - (exnref.pop) - ) - (nop) - (unreachable) - ) - ) - ) - (i32.const 42) - ) - ) - (func $starter (; 2 ;) - (nop) - ) -) -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (import "module" "check" (func $check (param i32))) - (func $just-one-block (; 1 ;) - (local $0 i32) - (call $check - (i32.const 1337) - ) - ) - (func $two-blocks (; 2 ;) - (local $0 i32) - (block - (call $check - (i32.const 0) - ) - (call $check - (i32.const 1) - ) - ) - ) - (func $two-blocks-plus-code (; 3 ;) - (local $0 i32) - (block - (block - (call $check - (i32.const 0) - ) - (drop - (i32.const 77) - ) - ) - (call $check - (i32.const 1) - ) - ) - ) - (func $loop (; 4 ;) - (local $0 i32) - (loop $shape$0$continue - (block - (call $check - (i32.const 0) - ) - (call $check - (i32.const 1) - ) - ) - (block - (br $shape$0$continue) - ) - ) - ) - (func $loop-plus-code (; 5 ;) - (local $0 i32) - (loop $shape$0$continue - (block - (block - (call $check - (i32.const 0) - ) - (drop - (i32.const 33) - ) - ) - (call $check - (i32.const 1) - ) - ) - (block - (drop - (i32.const -66) - ) - (br $shape$0$continue) - ) - ) - ) - (func $split (; 6 ;) - (local $0 i32) - (call $check - (i32.const 0) - ) - (if - (i32.const 55) - (block - (call $check - (i32.const 1) - ) - ) - (block - (call $check - (i32.const 2) - ) - ) - ) - ) - (func $split-plus-code (; 7 ;) - (local $0 i32) - (call $check - (i32.const 0) - ) - (if - (i32.const 55) - (block - (drop - (i32.const 10) - ) - (block - (call $check - (i32.const 1) - ) - ) - ) - (block - (drop - (i32.const 20) - ) - (block - (call $check - (i32.const 2) - ) - ) - ) - ) - ) - (func $if (; 8 ;) - (local $0 i32) - (block $block$3$break - (call $check - (i32.const 0) - ) - (if - (i32.const 55) - (block - (call $check - (i32.const 1) - ) - (block - (br $block$3$break) - ) - ) - (br $block$3$break) - ) - ) - (block - (call $check - (i32.const 2) - ) - ) - ) - (func $if-plus-code (; 9 ;) - (local $0 i32) - (block $block$3$break - (call $check - (i32.const 0) - ) - (if - (i32.const 55) - (block - (drop - (i32.const -1) - ) - (block - (call $check - (i32.const 1) - ) - (block - (drop - (i32.const -3) - ) - (br $block$3$break) - ) - ) - ) - (block - (drop - (i32.const -2) - ) - (br $block$3$break) - ) - ) - ) - (block - (call $check - (i32.const 2) - ) - ) - ) - (func $if-else (; 10 ;) - (local $0 i32) - (block $block$4$break - (call $check - (i32.const 0) - ) - (if - (i32.const 55) - (block - (call $check - (i32.const 1) - ) - (block - (br $block$4$break) - ) - ) - (block - (call $check - (i32.const 2) - ) - (block - (br $block$4$break) - ) - ) - ) - ) - (block - (call $check - (i32.const 3) - ) - ) - ) - (func $loop-tail (; 11 ;) - (local $0 i32) - (block $block$3$break - (loop $shape$0$continue - (block - (call $check - (i32.const 0) - ) - (call $check - (i32.const 1) - ) - ) - (if - (i32.const 10) - (br $shape$0$continue) - (br $block$3$break) - ) - ) - ) - (block - (call $check - (i32.const 2) - ) - ) - ) - (func $nontrivial-loop-plus-phi-to-head (; 12 ;) - (local $0 i32) - (block $block$2$break - (call $check - (i32.const 0) - ) - (block - (drop - (i32.const 10) - ) - (br $block$2$break) - ) - ) - (block - (block $block$7$break - (block $block$4$break - (loop $shape$1$continue - (block $block$3$break - (call $check - (i32.const 1) - ) - (if - (i32.const -2) - (br $block$3$break) - (block - (drop - (i32.const 20) - ) - (br $block$7$break) - ) - ) - ) - (block - (call $check - (i32.const 2) - ) - (if - (i32.const -6) - (br $block$4$break) - (block - (drop - (i32.const 30) - ) - (br $shape$1$continue) - ) - ) - ) - ) - ) - (block - (block $block$6$break - (call $check - (i32.const 3) - ) - (if - (i32.const -10) - (block - (call $check - (i32.const 4) - ) - (block - (br $block$6$break) - ) - ) - (br $block$6$break) - ) - ) - (block - (call $check - (i32.const 5) - ) - (block - (drop - (i32.const 40) - ) - (br $block$7$break) - ) - ) - ) - ) - (block - (call $check - (i32.const 6) - ) - ) - ) - ) - (func $switch (; 13 ;) - (local $0 i32) - (call $check - (i32.const 0) - ) - (block $switch$1$leave - (block $switch$1$default - (block $switch$1$case$3 - (block $switch$1$case$2 - (br_table $switch$1$default $switch$1$default $switch$1$case$2 $switch$1$default $switch$1$case$3 $switch$1$case$2 $switch$1$default - (i32.const -99) - ) - ) - (block - (block - (call $check - (i32.const 1) - ) - ) - ) - (br $switch$1$leave) - ) - (block - (drop - (i32.const 55) - ) - (block - (call $check - (i32.const 2) - ) - ) - ) - (br $switch$1$leave) - ) - (block - (block - (call $check - (i32.const 3) - ) - ) - ) - (br $switch$1$leave) - ) - ) - (func $duffs-device (; 14 ;) - (local $0 i32) - (local $1 i32) - (local $2 i64) - (local $3 i32) - (local $4 f32) - (local $5 f64) - (local $6 i32) - (block - (block $block$3$break - (block $block$2$break - (call $check - (i32.const 0) - ) - (if - (i32.const 10) - (block - (local.set $3 - (i32.const 2) - ) - (br $block$2$break) - ) - (block - (local.set $3 - (i32.const 3) - ) - (br $block$3$break) - ) - ) - ) - ) - ) - (loop $shape$1$continue - (if - (i32.eq - (local.get $3) - (i32.const 2) - ) - (block - (local.set $3 - (i32.const 0) - ) - (call $check - (i32.const 1) - ) - (block - (local.set $3 - (i32.const 3) - ) - (br $shape$1$continue) - ) - ) - (if - (i32.eq - (local.get $3) - (i32.const 3) - ) - (block - (local.set $3 - (i32.const 0) - ) - (call $check - (i32.const 2) - ) - (block - (local.set $3 - (i32.const 2) - ) - (br $shape$1$continue) - ) - ) - ) - ) - ) - ) - (func $return (; 15 ;) (result i32) - (local $0 i32) - (block - (call $check - (i32.const 42) - ) - (return - (i32.const 1337) - ) - ) - ) -) -(module -) diff -Nru binaryen-91/test/example/c-api-unused-mem.txt binaryen-99/test/example/c-api-unused-mem.txt --- binaryen-91/test/example/c-api-unused-mem.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/example/c-api-unused-mem.txt 2021-01-07 20:01:06.000000000 +0000 @@ -4,7 +4,7 @@ (export "memory" (memory $0)) (export "main" (func $main)) (export "rust_entry" (func $__wasm_start)) - (func $main (; 0 ;) + (func $main (local $0 i32) (local $1 i32) (local $2 i64) @@ -28,7 +28,7 @@ ) ) ) - (func $__wasm_start (; 1 ;) + (func $__wasm_start (i32.store (i32.const 0) (i32.const 65535) @@ -36,14 +36,14 @@ (call $main) ) ) -148 +145 (module (type $none_=>_none (func)) (memory $0 1024 1024) (export "memory" (memory $0)) (export "main" (func $main)) (export "rust_entry" (func $__wasm_start)) - (func $main (; 0 ;) + (func $main (local $0 i32) (local $1 i32) (local $2 i64) @@ -68,7 +68,7 @@ (unreachable) ) ) - (func $__wasm_start (; 1 ;) + (func $__wasm_start (i32.store (i32.const 0) (i32.const 65535) diff -Nru binaryen-91/test/example/cpp-unit.cpp binaryen-99/test/example/cpp-unit.cpp --- binaryen-91/test/example/cpp-unit.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/example/cpp-unit.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -1,18 +1,570 @@ // test multiple uses of the threadPool -#include +#include -#include +#include #include +#include +#include +#include using namespace wasm; +using namespace Bits; + +#define RESET "\x1b[0m" + +#define FG_BLACK "\x1b[30m" +#define FG_RED "\x1b[31m" +#define FG_GREEN "\x1b[32m" +#define FG_YELLOW "\x1b[33m" + +#define BG_BLACK "\x1b[40m" +#define BG_RED "\x1b[41m" + +static int failsCount = 0; + +template +void assert_equal_(T a, U b, int line, const char* file) { + if (a != b) { + std::cerr << '\n' + << BG_RED FG_BLACK << " ASSERTION ERROR " + << ++failsCount << " " + << RESET FG_RED << "\n" + << FG_RED << " Actual: " << a << '\n' + << FG_GREEN << " Expected: " << b << "\n\n" + << FG_YELLOW << " Line: " << line << '\n' + << FG_YELLOW << " File: " << file << '\n' + << RESET << std::endl; + + std::cout << "actual: " << a + << ", expected: " << b + << ", line " << line + << ", file " << file + << std::endl; + } +} + +#define assert_equal(a, b) assert_equal_((a), (b), __LINE__, __FILE__) + +void test_bits() { + Const c0, c1; + Binary b; + + b.left = &c0; + b.right = &c1; + + // --- // + // i32 // + // --- // + + c0.type = Type::i32; + c1.type = Type::i32; + b.type = Type::i32; + + c0.value = Literal(int32_t(0)); + assert_equal(getMaxBits(&c0), 0); + c0.value = Literal(int32_t(1)); + assert_equal(getMaxBits(&c0), 1); + c0.value = Literal(int32_t(2)); + assert_equal(getMaxBits(&c0), 2); + c0.value = Literal(int32_t(0x80000)); + assert_equal(getMaxBits(&c0), 20); + c0.value = Literal(int32_t(-1)); + assert_equal(getMaxBits(&c0), 32); + + b.op = AddInt32; + c0.value = Literal(int32_t(0xFFFF)); + c1.value = Literal(int32_t(0x11)); + assert_equal(getMaxBits(&b), 17); + c0.value = Literal(int32_t(-1)); + c1.value = Literal(int32_t(2)); + assert_equal(getMaxBits(&b), 32); + c0.value = Literal(int32_t(-1)); + c1.value = Literal(int32_t(-1)); + assert_equal(getMaxBits(&b), 32); + + b.op = SubInt32; + c0.value = Literal(int32_t(0xFFFF)); + c1.value = Literal(int32_t(0x11)); + assert_equal(getMaxBits(&b), 32); + c0.value = Literal(int32_t(-1)); + c1.value = Literal(int32_t(2)); + assert_equal(getMaxBits(&b), 32); + c0.value = Literal(int32_t(2)); + c1.value = Literal(int32_t(-1)); + assert_equal(getMaxBits(&b), 32); + c0.value = Literal(int32_t(0)); + c1.value = Literal(int32_t(1)); + assert_equal(getMaxBits(&b), 32); + c0.value = Literal(int32_t(0x7FFFFFF0)); + c1.value = Literal(int32_t(0x7FFFFFFF)); + assert_equal(getMaxBits(&b), 32); + c0.value = Literal(int32_t(1)); + c1.value = Literal(int32_t(1)); + assert_equal(getMaxBits(&b), 32); + c0.value = Literal(int32_t(0)); + c1.value = Literal(int32_t(0x7FFFFFFF)); + assert_equal(getMaxBits(&b), 32); + + b.op = MulInt32; + c0.value = Literal(int32_t(0xFFFF)); + c1.value = Literal(int32_t(0x11)); + assert_equal(getMaxBits(&b), 21); + c0.value = Literal(int32_t(0)); + c1.value = Literal(int32_t(1)); + assert_equal(getMaxBits(&b), 1); + c0.value = Literal(int32_t(1)); + c1.value = Literal(int32_t(0)); + assert_equal(getMaxBits(&b), 1); + c0.value = Literal(int32_t(3)); + c1.value = Literal(int32_t(3)); + assert_equal(getMaxBits(&b), 4); + c0.value = Literal(int32_t(2)); + c1.value = Literal(int32_t(-2)); + assert_equal(getMaxBits(&b), 32); + + b.op = DivSInt32; + c0.value = Literal(int32_t(0)); + c1.value = Literal(int32_t(0xF)); + assert_equal(getMaxBits(&b), 0); + c0.value = Literal(int32_t( 1)); + c1.value = Literal(int32_t( 2)); + assert_equal(getMaxBits(&b), 0); + c0.value = Literal(int32_t(0xFF)); + c1.value = Literal(int32_t(0xFF)); + assert_equal(getMaxBits(&b), 1); + c0.value = Literal(int32_t(-1)); + c1.value = Literal(int32_t( 1)); + assert_equal(getMaxBits(&b), 32); + c0.value = Literal(int32_t(-1)); + c1.value = Literal(int32_t( 2)); + assert_equal(getMaxBits(&b), 32); + c0.value = Literal(int32_t(0x7FFFFFFF)); + c1.value = Literal(int32_t(3)); + assert_equal(getMaxBits(&b), 30); + c0.value = Literal(int32_t(0x0000FFFF)); + c1.value = Literal(int32_t(0xFF)); + assert_equal(getMaxBits(&b), 9); + c0.value = Literal(int32_t(0x00001000)); + c1.value = Literal(int32_t(0x00000FFF)); + assert_equal(getMaxBits(&b), 2); + c0.value = Literal(int32_t(0x80000000)); + c1.value = Literal(int32_t(-1)); + assert_equal(getMaxBits(&b), 32); + c0.value = Literal(int32_t(2)); + c1.value = Literal(int32_t(-2)); + assert_equal(getMaxBits(&b), 32); + + + b.op = DivUInt32; + c0.value = Literal(uint32_t(0)); + c1.value = Literal(uint32_t(0xF)); + assert_equal(getMaxBits(&b), 0); + c0.value = Literal(uint32_t( 1)); + c1.value = Literal(uint32_t( 2)); + assert_equal(getMaxBits(&b), 0); + c0.value = Literal(uint32_t(0xFF)); + c1.value = Literal(uint32_t(0xFF)); + assert_equal(getMaxBits(&b), 1); + c0.value = Literal(uint32_t(-1)); + c1.value = Literal(uint32_t( 1)); + assert_equal(getMaxBits(&b), 32); + c0.value = Literal(uint32_t(-1)); + c1.value = Literal(uint32_t( 2)); + assert_equal(getMaxBits(&b), 31); + c0.value = Literal(uint32_t(0x7FFFFFFF)); + c1.value = Literal(uint32_t(3)); + assert_equal(getMaxBits(&b), 30); + c0.value = Literal(int32_t(0x0000FFFF)); + c1.value = Literal(int32_t(0xFF)); + assert_equal(getMaxBits(&b), 9); + c0.value = Literal(int32_t(0x00001000)); + c1.value = Literal(int32_t(0x00000FFF)); + assert_equal(getMaxBits(&b), 2); + c0.value = Literal(uint32_t(0x80000000)); + c1.value = Literal(uint32_t(-1)); + assert_equal(getMaxBits(&b), 1); + c0.value = Literal(uint32_t(2)); + c1.value = Literal(uint32_t(-2)); + assert_equal(getMaxBits(&b), 0); + + b.op = RemSInt32; + c0.value = Literal(int32_t(0)); + c1.value = Literal(int32_t(0xF)); + assert_equal(getMaxBits(&b), 0); + c0.value = Literal(int32_t(0)); + c1.value = Literal(int32_t(-1)); + assert_equal(getMaxBits(&b), 0); + c0.value = Literal(int32_t( 1)); + c1.value = Literal(int32_t( 2)); + assert_equal(getMaxBits(&b), 1); + c0.value = Literal(int32_t(-1)); + c1.value = Literal(int32_t( 2)); + assert_equal(getMaxBits(&b), 32); + c0.value = Literal(int32_t(3)); + c1.value = Literal(int32_t(-1)); + assert_equal(getMaxBits(&b), 2); + c0.value = Literal(int32_t(0x7FFFFFFF)); + c1.value = Literal(int32_t(0x7FFFFFFF)); + assert_equal(getMaxBits(&b), 31); + + b.op = RemUInt32; + c0.value = Literal(uint32_t(0)); + c1.value = Literal(uint32_t(0xF)); + assert_equal(getMaxBits(&b), 0); + c0.value = Literal(uint32_t(0)); + c1.value = Literal(uint32_t(-1)); + assert_equal(getMaxBits(&b), 0); + c0.value = Literal(uint32_t( 1)); + c1.value = Literal(uint32_t( 2)); + assert_equal(getMaxBits(&b), 1); + c0.value = Literal(uint32_t(-1)); + c1.value = Literal(uint32_t( 2)); + assert_equal(getMaxBits(&b), 1); + c0.value = Literal(uint32_t(3)); + c1.value = Literal(uint32_t(-1)); + assert_equal(getMaxBits(&b), 2); + c0.value = Literal(uint32_t(0x7FFFFFFF)); + c1.value = Literal(uint32_t(0x7FFFFFFF)); + assert_equal(getMaxBits(&b), 31); + + b.op = AndInt32; + c0.value = Literal(int32_t(0)); + c1.value = Literal(int32_t(0xF)); + assert_equal(getMaxBits(&b), 0); + c0.value = Literal(int32_t(0xF)); + c1.value = Literal(int32_t(0)); + assert_equal(getMaxBits(&b), 0); + c0.value = Literal(int32_t(3)); + c1.value = Literal(int32_t(3)); + assert_equal(getMaxBits(&b), 2); + c0.value = Literal(int32_t(-1)); + c1.value = Literal(int32_t(3)); + assert_equal(getMaxBits(&b), 2); + c0.value = Literal(int32_t(3)); + c1.value = Literal(int32_t(-1)); + assert_equal(getMaxBits(&b), 2); + + b.op = OrInt32; + c0.value = Literal(int32_t(0)); + c1.value = Literal(int32_t(0xF)); + assert_equal(getMaxBits(&b), 4); + c0.value = Literal(int32_t(0xF)); + c1.value = Literal(int32_t(0)); + assert_equal(getMaxBits(&b), 4); + c0.value = Literal(int32_t(3)); + c1.value = Literal(int32_t(3)); + assert_equal(getMaxBits(&b), 2); + c0.value = Literal(int32_t(-1)); + c1.value = Literal(int32_t(3)); + assert_equal(getMaxBits(&b), 32); + c0.value = Literal(int32_t(3)); + c1.value = Literal(int32_t(-1)); + assert_equal(getMaxBits(&b), 32); + + b.op = XorInt32; + c0.value = Literal(int32_t(0)); + c1.value = Literal(int32_t(0xF)); + assert_equal(getMaxBits(&b), 4); + c0.value = Literal(int32_t(0xF)); + c1.value = Literal(int32_t(0)); + assert_equal(getMaxBits(&b), 4); + c0.value = Literal(int32_t(3)); + c1.value = Literal(int32_t(3)); + assert_equal(getMaxBits(&b), 2); + c0.value = Literal(int32_t(-1)); + c1.value = Literal(int32_t(3)); + assert_equal(getMaxBits(&b), 32); + c0.value = Literal(int32_t(3)); + c1.value = Literal(int32_t(-1)); + assert_equal(getMaxBits(&b), 32); -int main() -{ + // --- // + // i64 // + // --- // + + c0.type = Type::i64; + c1.type = Type::i64; + b.type = Type::i64; + + c0.value = Literal(int64_t(0)); + assert_equal(getMaxBits(&c0), 0); + c0.value = Literal(int64_t(1)); + assert_equal(getMaxBits(&c0), 1); + c0.value = Literal(int64_t(2)); + assert_equal(getMaxBits(&c0), 2); + c0.value = Literal(int64_t(0x80000)); + assert_equal(getMaxBits(&c0), 20); + c0.value = Literal(int64_t(-1)); + assert_equal(getMaxBits(&c0), 64); + + b.op = AddInt64; + c0.value = Literal(int64_t(0xFFFF)); + c1.value = Literal(int64_t(0x11)); + assert_equal(getMaxBits(&b), 17); + c0.value = Literal(int64_t(-1)); + c1.value = Literal(int64_t(2)); + assert_equal(getMaxBits(&b), 64); + c0.value = Literal(int64_t(-1)); + c1.value = Literal(int64_t(-1)); + assert_equal(getMaxBits(&b), 64); + + b.op = SubInt64; + c0.value = Literal(int64_t(0xFFFF)); + c1.value = Literal(int64_t(0x11)); + assert_equal(getMaxBits(&b), 64); + c0.value = Literal(int64_t(-1)); + c1.value = Literal(int64_t(2)); + assert_equal(getMaxBits(&b), 64); + c0.value = Literal(int64_t(2)); + c1.value = Literal(int64_t(-1)); + assert_equal(getMaxBits(&b), 64); + c0.value = Literal(int64_t(0)); + c1.value = Literal(int64_t(1)); + assert_equal(getMaxBits(&b), 64); + c0.value = Literal(int64_t(0x7FFFFFFFFFFFFFF0)); + c1.value = Literal(int64_t(0x7FFFFFFFFFFFFFFF)); + assert_equal(getMaxBits(&b), 64); + c0.value = Literal(int64_t(1)); + c1.value = Literal(int64_t(1)); + assert_equal(getMaxBits(&b), 64); + c0.value = Literal(int64_t(0)); + c1.value = Literal(int64_t(0x7FFFFFFFFFFFFFFF)); + assert_equal(getMaxBits(&b), 64); + + b.op = MulInt64; + c0.value = Literal(int64_t(0xFFFF)); + c1.value = Literal(int64_t(0x11)); + assert_equal(getMaxBits(&b), 21); + c0.value = Literal(int64_t(0)); + c1.value = Literal(int64_t(1)); + assert_equal(getMaxBits(&b), 1); + c0.value = Literal(int64_t(1)); + c1.value = Literal(int64_t(0)); + assert_equal(getMaxBits(&b), 1); + c0.value = Literal(int64_t(3)); + c1.value = Literal(int64_t(3)); + assert_equal(getMaxBits(&b), 4); + c0.value = Literal(int64_t(2)); + c1.value = Literal(int64_t(-2)); + assert_equal(getMaxBits(&b), 64); + + b.op = DivSInt64; + c0.value = Literal(int64_t(0)); + c1.value = Literal(int64_t(0xF)); + assert_equal(getMaxBits(&b), 0); + c0.value = Literal(int64_t( 1)); + c1.value = Literal(int64_t( 2)); + assert_equal(getMaxBits(&b), 0); + c0.value = Literal(int64_t(0xFF)); + c1.value = Literal(int64_t(0xFF)); + assert_equal(getMaxBits(&b), 1); + c0.value = Literal(int64_t(-1)); + c1.value = Literal(int64_t( 1)); + assert_equal(getMaxBits(&b), 64); + c0.value = Literal(int64_t(-1)); + c1.value = Literal(int64_t( 2)); + assert_equal(getMaxBits(&b), 64); + c0.value = Literal(int64_t(0x7FFFFFFFFFFFFFFF)); + c1.value = Literal(int64_t(3)); + assert_equal(getMaxBits(&b), 62); + c0.value = Literal(int64_t(0x8000000000000000)); + c1.value = Literal(int64_t(-1)); + assert_equal(getMaxBits(&b), 64); + c0.value = Literal(int64_t(2)); + c1.value = Literal(int64_t(-2)); + assert_equal(getMaxBits(&b), 64); + + b.op = DivUInt64; + c0.value = Literal(uint64_t(0)); + c1.value = Literal(uint64_t(0xF)); + assert_equal(getMaxBits(&b), 0); + c0.value = Literal(uint64_t( 1)); + c1.value = Literal(uint64_t( 2)); + assert_equal(getMaxBits(&b), 0); + c0.value = Literal(uint64_t(0xFF)); + c1.value = Literal(uint64_t(0xFF)); + assert_equal(getMaxBits(&b), 1); + c0.value = Literal(uint64_t(-1)); + c1.value = Literal(uint64_t( 1)); + assert_equal(getMaxBits(&b), 64); + c0.value = Literal(uint64_t(-1)); + c1.value = Literal(uint64_t( 2)); + assert_equal(getMaxBits(&b), 63); + c0.value = Literal(uint64_t(0x7FFFFFFFFFFFFFFF)); + c1.value = Literal(uint64_t(3)); + assert_equal(getMaxBits(&b), 62); + c0.value = Literal(uint64_t(0x8000000000000000)); + c1.value = Literal(uint64_t(-1)); + assert_equal(getMaxBits(&b), 1); + c0.value = Literal(uint64_t(2)); + c1.value = Literal(uint64_t(-2)); + assert_equal(getMaxBits(&b), 0); + + b.op = RemSInt64; + c0.value = Literal(int64_t(0)); + c1.value = Literal(int64_t(0xF)); + assert_equal(getMaxBits(&b), 0); + c0.value = Literal(int64_t(0)); + c1.value = Literal(int64_t(-1)); + assert_equal(getMaxBits(&b), 0); + c0.value = Literal(int64_t( 1)); + c1.value = Literal(int64_t( 2)); + assert_equal(getMaxBits(&b), 1); + c0.value = Literal(int64_t(-1)); + c1.value = Literal(int64_t( 2)); + assert_equal(getMaxBits(&b), 64); + c0.value = Literal(int64_t(3)); + c1.value = Literal(int64_t(-1)); + assert_equal(getMaxBits(&b), 2); + c0.value = Literal(int64_t(0x7FFFFFFFFFFFFFFF)); + c1.value = Literal(int64_t(0x7FFFFFFFFFFFFFFF)); + assert_equal(getMaxBits(&b), 63); + + b.op = RemUInt64; + c0.value = Literal(uint64_t(0)); + c1.value = Literal(uint64_t(0xF)); + assert_equal(getMaxBits(&b), 0); + c0.value = Literal(uint64_t(0)); + c1.value = Literal(uint64_t(-1)); + assert_equal(getMaxBits(&b), 0); + c0.value = Literal(uint64_t( 1)); + c1.value = Literal(uint64_t( 2)); + assert_equal(getMaxBits(&b), 1); + c0.value = Literal(uint64_t(-1)); + c1.value = Literal(uint64_t( 2)); + assert_equal(getMaxBits(&b), 1); + c0.value = Literal(uint64_t(3)); + c1.value = Literal(uint64_t(-1)); + assert_equal(getMaxBits(&b), 2); + c0.value = Literal(uint64_t(0x7FFFFFFFFFFFFFFF)); + c1.value = Literal(uint64_t(0x7FFFFFFFFFFFFFFF)); + assert_equal(getMaxBits(&b), 63); + + b.op = AndInt64; + c0.value = Literal(int64_t(0)); + c1.value = Literal(int64_t(0xF)); + assert_equal(getMaxBits(&b), 0); + c0.value = Literal(int64_t(0xF)); + c1.value = Literal(int64_t(0)); + assert_equal(getMaxBits(&b), 0); + c0.value = Literal(int64_t(3)); + c1.value = Literal(int64_t(3)); + assert_equal(getMaxBits(&b), 2); + c0.value = Literal(int64_t(-1)); + c1.value = Literal(int64_t(3)); + assert_equal(getMaxBits(&b), 2); + c0.value = Literal(int64_t(3)); + c1.value = Literal(int64_t(-1)); + assert_equal(getMaxBits(&b), 2); + + b.op = OrInt64; + c0.value = Literal(int64_t(0)); + c1.value = Literal(int64_t(0xF)); + assert_equal(getMaxBits(&b), 4); + c0.value = Literal(int64_t(0xF)); + c1.value = Literal(int64_t(0)); + assert_equal(getMaxBits(&b), 4); + c0.value = Literal(int64_t(3)); + c1.value = Literal(int64_t(3)); + assert_equal(getMaxBits(&b), 2); + c0.value = Literal(int64_t(-1)); + c1.value = Literal(int64_t(3)); + assert_equal(getMaxBits(&b), 64); + c0.value = Literal(int64_t(3)); + c1.value = Literal(int64_t(-1)); + assert_equal(getMaxBits(&b), 64); + + b.op = XorInt64; + c0.value = Literal(int64_t(0)); + c1.value = Literal(int64_t(0xF)); + assert_equal(getMaxBits(&b), 4); + c0.value = Literal(int64_t(0xF)); + c1.value = Literal(int64_t(0)); + assert_equal(getMaxBits(&b), 4); + c0.value = Literal(int64_t(3)); + c1.value = Literal(int64_t(3)); + assert_equal(getMaxBits(&b), 2); + c0.value = Literal(int64_t(-1)); + c1.value = Literal(int64_t(3)); + assert_equal(getMaxBits(&b), 64); + c0.value = Literal(int64_t(3)); + c1.value = Literal(int64_t(-1)); + assert_equal(getMaxBits(&b), 64); + + Unary u; + c0.type = Type::i32; + u.value = &c0; + + u.type = Type::i64; + + u.op = ExtendUInt32; + c0.value = Literal(int32_t(0)); + assert_equal(getMaxBits(&u), 0); + c0.value = Literal(int32_t(1)); + assert_equal(getMaxBits(&u), 1); + c0.value = Literal(int32_t(0xF)); + assert_equal(getMaxBits(&u), 4); + c0.value = Literal(int32_t(-1)); + assert_equal(getMaxBits(&u), 32); + + u.op = ExtendSInt32; + c0.value = Literal(int32_t(0)); + assert_equal(getMaxBits(&u), 0); + c0.value = Literal(int32_t(1)); + assert_equal(getMaxBits(&u), 1); + c0.value = Literal(int32_t(0xF)); + assert_equal(getMaxBits(&u), 4); + c0.value = Literal(int32_t(0x7FFFFFFF)); + assert_equal(getMaxBits(&u), 31); + c0.value = Literal(int32_t(0x80000000)); + assert_equal(getMaxBits(&u), 64); + c0.value = Literal(int32_t(-1)); + assert_equal(getMaxBits(&u), 64); + + u.type = Type::i32; + c0.type = Type::i64; + + u.op = WrapInt64; + c0.value = Literal(int64_t(0)); + assert_equal(getMaxBits(&u), 0); + c0.value = Literal(int64_t(0x7FFFFFFF)); + assert_equal(getMaxBits(&u), 31); + c0.value = Literal(int64_t(0xFFFFFFFF)); + assert_equal(getMaxBits(&u), 32); + c0.value = Literal(int64_t(0xFFFFFFFFFF)); + assert_equal(getMaxBits(&u), 32); + c0.value = Literal(int64_t(-1)); + assert_equal(getMaxBits(&u), 32); + +} + +void test_cost() { // Some optimizations assume that the cost of a get is zero, e.g. local-cse. LocalGet get; - assert(CostAnalyzer(&get).cost == 0); + assert_equal(CostAnalyzer(&get).cost, 0); +} + +void test_effects() { + PassOptions options; + FeatureSet features; + // Unreachables trap. + Unreachable unreachable; + assert_equal(EffectAnalyzer(options, features, &unreachable).trap, true); + // Nops... do not. + Nop nop; + assert_equal(EffectAnalyzer(options, features, &nop).trap, false); +} + +int main() { + test_bits(); + test_cost(); + test_effects(); - std::cout << "Success.\n"; + if (failsCount > 0) { + abort(); + } else { + std::cout << "Success" << std::endl; + } return 0; } diff -Nru binaryen-91/test/example/cpp-unit.txt binaryen-99/test/example/cpp-unit.txt --- binaryen-91/test/example/cpp-unit.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/example/cpp-unit.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1 +1 @@ -Success. +Success diff -Nru binaryen-91/test/example/hash.cpp binaryen-99/test/example/hash.cpp --- binaryen-91/test/example/hash.cpp 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/example/hash.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,142 @@ +#include +#include + +#include + +using namespace wasm; + +#define assertEqual(left, right) \ + assert(ExpressionAnalyzer::hash(&left) == ExpressionAnalyzer::hash(&right)); + +#define assertNotEqual(left, right) \ + assert(ExpressionAnalyzer::hash(&left) != ExpressionAnalyzer::hash(&right)); + +int main() { + { + Const x, y; + x.set(Literal(int32_t(10))); + y.set(Literal(int32_t(10))); + assertEqual(x, y); + } + { + // The value matters (with extremely high probability...) + Const x, y; + x.set(Literal(int32_t(10))); + y.set(Literal(int32_t(11))); + assertNotEqual(x, y); + } + { + // The type matters. + Const x, y; + x.set(Literal(int32_t(10))); + y.set(Literal(int64_t(10))); + assertNotEqual(x, y); + } + { + // Nested child. + Drop dx, dy; + Const x, y; + x.set(Literal(int32_t(10))); + y.set(Literal(int32_t(10))); + dx.value = &x; + dy.value = &y; + assertEqual(dx, dy); + } + { + // Nested child. + Drop dx, dy; + Const x, y; + x.set(Literal(int32_t(10))); + y.set(Literal(int32_t(11))); + dx.value = &x; + dy.value = &y; + assertNotEqual(dx, dy); + } + MixedArena arena; + { + // Blocks + Block x(arena); + Block y(arena); + assertEqual(x, y); + } + { + // Blocks with contents. + Block x(arena); + Block y(arena); + Nop n; + y.list.push_back(&n); + assertNotEqual(x, y); + } + { + // Blocks with names. + Block x(arena); + x.name = "foo"; + Block y(arena); + y.name = "foo"; + assertEqual(x, y); + } + { + // Different block names hash equally - we ignore internal name differences + // intentionally. + Block x(arena); + x.name = "foo"; + Block y(arena); + y.name = "bar"; + assertEqual(x, y); + } + { + // Different br names are checked relatively as well. + Break x; + x.name = "foo"; + Break y; + y.name = "bar"; + Block z(arena); + z.name = "foo"; + z.list.push_back(&x); + Block w(arena); + w.name = "bar"; + w.list.push_back(&y); + Block outer1(arena); + outer1.name = "outer1"; + outer1.list.push_back(&z); + Block outer2(arena); + outer2.name = "outer2"; + outer2.list.push_back(&w); + assertEqual(outer1, outer2); + } + { + // But referring to different relative names leads to a difference. + Break x; + x.name = "outer1"; // instead of x, go to the outer label this time + Break y; + y.name = "bar"; + Block z(arena); + z.name = "foo"; + z.list.push_back(&x); + Block w(arena); + w.name = "bar"; + w.list.push_back(&y); + Block outer1(arena); + outer1.name = "outer1"; + outer1.list.push_back(&z); + Block outer2(arena); + outer2.name = "outer2"; + outer2.list.push_back(&w); + assertNotEqual(outer1, outer2); + } + { + // Indexes. + LocalGet x, y; + x.index = 10; + y.index = 10; + assertEqual(x, y); + } + { + // Indexes. + LocalGet x, y; + x.index = 10; + y.index = 11; + assertNotEqual(x, y); + } + std::cout << "success.\n"; +} diff -Nru binaryen-91/test/example/hash.txt binaryen-99/test/example/hash.txt --- binaryen-91/test/example/hash.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/example/hash.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +success. diff -Nru binaryen-91/test/example/match.cpp binaryen-99/test/example/match.cpp --- binaryen-91/test/example/match.cpp 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/example/match.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,499 @@ +#include +#include + +#include "literal.h" +#include "wasm-builder.h" +#include + +using namespace wasm; +using namespace wasm::Match; + +Module module; +Builder builder(module); + +void test_internal_any() { + std::cout << "Testing Internal::Any\n"; + + assert(Internal::Any(nullptr).matches(0)); + assert(Internal::Any(nullptr).matches(1)); + assert(Internal::Any(nullptr).matches(-1)); + assert(Internal::Any(nullptr).matches(42LL)); + assert(Internal::Any(nullptr).matches(4.2f)); + + assert(Internal::Any(nullptr).matches(0)); + assert(Internal::Any(nullptr).matches(1)); + assert(Internal::Any(nullptr).matches(-1)); + assert(Internal::Any(nullptr).matches(42LL)); + assert(Internal::Any(nullptr).matches(4.2f)); + + assert(Internal::Any(nullptr).matches(0)); + assert(Internal::Any(nullptr).matches(1)); + assert(Internal::Any(nullptr).matches(-1)); + assert(Internal::Any(nullptr).matches(42LL)); + assert(Internal::Any(nullptr).matches(4.2f)); + + assert(Internal::Any(nullptr).matches(0)); + assert(Internal::Any(nullptr).matches(1)); + assert(Internal::Any(nullptr).matches(-1)); + assert(Internal::Any(nullptr).matches(42LL)); + assert(Internal::Any(nullptr).matches(4.2f)); + + // Working as intended: cannot convert `const char [6]' to double + // assert(Internal::Any(nullptr).matches("hello")); + + { + int32_t val = 0xffffffff; + assert(Internal::Any(&val).matches(0)); + assert(val == 0); + assert(Internal::Any(&val).matches(1)); + assert(val == 1); + assert(Internal::Any(&val).matches(-1)); + assert(val == -1); + assert(Internal::Any(&val).matches(42LL)); + assert(val == 42); + assert(Internal::Any(&val).matches(4.2f)); + assert(val == 4); + } + + { + Expression* expr = nullptr; + Nop* nop = nullptr; + + Expression* builtExpr = builder.makeNop(); + Nop* builtNop = builder.makeNop(); + AtomicFence* builtFence = builder.makeAtomicFence(); + + assert(Internal::Any(&expr).matches(builtExpr)); + assert(expr == builtExpr); + + assert(Internal::Any(&expr).matches(builtNop)); + assert(expr == builtNop); + + assert(Internal::Any(&expr).matches(builtFence)); + assert(expr == builtFence); + + assert(Internal::Any(&nop).matches(builtExpr)); + assert(nop == builtExpr); + + assert(Internal::Any(&nop).matches(builtNop)); + assert(nop == builtNop); + + // Does NOT match sibling expression types. Bound variable unchanged. + assert(!Internal::Any(&nop).matches(builtFence)); + assert(nop == builtNop); + + // Working as intended: invalid conversion from Expression** to Nop** + // assert(Internal::Any(&expr).matches(builtExpr)); + } +} + +void test_internal_exact() { + std::cout << "Testing Internal::Exact\n"; + + assert(Internal::Exact(nullptr, 0).matches(0)); + assert(Internal::Exact(nullptr, 1).matches(1)); + assert(Internal::Exact(nullptr, -1).matches(-1)); + assert(Internal::Exact(nullptr, 42).matches(42LL)); + assert(Internal::Exact(nullptr, 4).matches(4.2f)); + + assert(!Internal::Exact(nullptr, 1).matches(0)); + assert(!Internal::Exact(nullptr, -1).matches(1)); + assert(!Internal::Exact(nullptr, 42).matches(-1)); + assert(!Internal::Exact(nullptr, 4).matches(42LL)); + assert(!Internal::Exact(nullptr, 0).matches(4.2f)); + + { + Expression* expr = nullptr; + Nop* nop = nullptr; + + Nop* builtNop = builder.makeNop(); + Expression* builtExpr = builtNop; + + assert(!Internal::Exact(&expr, expr).matches(builtExpr)); + assert(Internal::Exact(&expr, builtExpr).matches(builtExpr)); + assert(expr == builtExpr); + + assert(!Internal::Exact(&nop, nop).matches(builtNop)); + assert(Internal::Exact(&nop, builtNop).matches(builtNop)); + assert(nop == builtNop); + nop = nullptr; + assert(Internal::Exact(&nop, builtNop).matches(builtExpr)); + assert(nop == builtNop); + } +} + +void test_internal_literal() { + std::cout << "Testing Internal::{I32,I64,Int,F32,F64,Float}Lit\n"; + + Literal i32Zero(int32_t(0)); + Literal i32One(int32_t(1)); + Literal f32Zero(float(0)); + Literal f32One(float(1)); + Literal i64Zero(int64_t(0)); + Literal i64One(int64_t(1)); + Literal f64Zero(double(0)); + Literal f64One(double(1)); + + auto anyi32 = Internal::I32Lit(nullptr, Internal::Any(nullptr)); + assert(anyi32.matches(i32Zero)); + assert(anyi32.matches(i32One)); + assert(!anyi32.matches(f32Zero)); + assert(!anyi32.matches(f32One)); + assert(!anyi32.matches(i64Zero)); + assert(!anyi32.matches(i64One)); + assert(!anyi32.matches(f64Zero)); + assert(!anyi32.matches(f64One)); + + auto onei32 = Internal::I32Lit(nullptr, Internal::Exact(nullptr, 1)); + assert(!onei32.matches(i32Zero)); + assert(onei32.matches(i32One)); + assert(!onei32.matches(f32Zero)); + assert(!onei32.matches(f32One)); + assert(!onei32.matches(i64Zero)); + assert(!onei32.matches(i64One)); + assert(!onei32.matches(f64Zero)); + assert(!onei32.matches(f64One)); + + auto anyi64 = Internal::I64Lit(nullptr, Internal::Any(nullptr)); + assert(!anyi64.matches(i32Zero)); + assert(!anyi64.matches(i32One)); + assert(!anyi64.matches(f32Zero)); + assert(!anyi64.matches(f32One)); + assert(anyi64.matches(i64Zero)); + assert(anyi64.matches(i64One)); + assert(!anyi64.matches(f64Zero)); + assert(!anyi64.matches(f64One)); + + auto onei64 = Internal::I64Lit(nullptr, Internal::Exact(nullptr, 1)); + assert(!onei64.matches(i32Zero)); + assert(!onei64.matches(i32One)); + assert(!onei64.matches(f32Zero)); + assert(!onei64.matches(f32One)); + assert(!onei64.matches(i64Zero)); + assert(onei64.matches(i64One)); + assert(!onei64.matches(f64Zero)); + assert(!onei64.matches(f64One)); + + auto anyint = Internal::IntLit(nullptr, Internal::Any(nullptr)); + assert(anyint.matches(i32Zero)); + assert(anyint.matches(i32One)); + assert(!anyint.matches(f32Zero)); + assert(!anyint.matches(f32One)); + assert(anyint.matches(i64Zero)); + assert(anyint.matches(i64One)); + assert(!anyint.matches(f64Zero)); + assert(!anyint.matches(f64One)); + + auto oneint = Internal::IntLit(nullptr, Internal::Exact(nullptr, 1)); + assert(!oneint.matches(i32Zero)); + assert(oneint.matches(i32One)); + assert(!oneint.matches(f32Zero)); + assert(!oneint.matches(f32One)); + assert(!oneint.matches(i64Zero)); + assert(oneint.matches(i64One)); + assert(!oneint.matches(f64Zero)); + assert(!oneint.matches(f64One)); + + auto anyf32 = Internal::F32Lit(nullptr, Internal::Any(nullptr)); + assert(!anyf32.matches(i32Zero)); + assert(!anyf32.matches(i32One)); + assert(anyf32.matches(f32Zero)); + assert(anyf32.matches(f32One)); + assert(!anyf32.matches(i64Zero)); + assert(!anyf32.matches(i64One)); + assert(!anyf32.matches(f64Zero)); + assert(!anyf32.matches(f64One)); + + auto onef32 = Internal::F32Lit(nullptr, Internal::Exact(nullptr, 1)); + assert(!onef32.matches(i32Zero)); + assert(!onef32.matches(i32One)); + assert(!onef32.matches(f32Zero)); + assert(onef32.matches(f32One)); + assert(!onef32.matches(i64Zero)); + assert(!onef32.matches(i64One)); + assert(!onef32.matches(f64Zero)); + assert(!onef32.matches(f64One)); + + auto anyf64 = Internal::F64Lit(nullptr, Internal::Any(nullptr)); + assert(!anyf64.matches(i32Zero)); + assert(!anyf64.matches(i32One)); + assert(!anyf64.matches(f32Zero)); + assert(!anyf64.matches(f32One)); + assert(!anyf64.matches(i64Zero)); + assert(!anyf64.matches(i64One)); + assert(anyf64.matches(f64Zero)); + assert(anyf64.matches(f64One)); + + auto onef64 = Internal::F64Lit(nullptr, Internal::Exact(nullptr, 1)); + assert(!onef64.matches(i32Zero)); + assert(!onef64.matches(i32One)); + assert(!onef64.matches(f32Zero)); + assert(!onef64.matches(f32One)); + assert(!onef64.matches(i64Zero)); + assert(!onef64.matches(i64One)); + assert(!onef64.matches(f64Zero)); + assert(onef64.matches(f64One)); + + auto anyfp = Internal::FloatLit(nullptr, Internal::Any(nullptr)); + assert(!anyfp.matches(i32Zero)); + assert(!anyfp.matches(i32One)); + assert(anyfp.matches(f32Zero)); + assert(anyfp.matches(f32One)); + assert(!anyfp.matches(i64Zero)); + assert(!anyfp.matches(i64One)); + assert(anyfp.matches(f64Zero)); + assert(anyfp.matches(f64One)); + + auto onefp = Internal::FloatLit(nullptr, Internal::Exact(nullptr, 1)); + assert(!onefp.matches(i32Zero)); + assert(!onefp.matches(i32One)); + assert(!onefp.matches(f32Zero)); + assert(onefp.matches(f32One)); + assert(!onefp.matches(i64Zero)); + assert(!onefp.matches(i64One)); + assert(!onefp.matches(f64Zero)); + assert(onefp.matches(f64One)); + + auto number = Internal::NumberLit(nullptr, 1); + assert(!number.matches(i32Zero)); + assert(number.matches(i32One)); + assert(!number.matches(f32Zero)); + assert(number.matches(f32One)); + assert(!number.matches(i64Zero)); + assert(number.matches(i64One)); + assert(!number.matches(f64Zero)); + assert(number.matches(f64One)); + + int64_t x = 0; + Literal xLit; + Literal imatched(int32_t(42)); + assert(Internal::IntLit(&xLit, Internal::Any(&x)).matches(imatched)); + assert(xLit == imatched); + assert(x == 42); + + double f = 0; + Literal fLit; + Literal fmatched(double(42)); + assert(Internal::FloatLit(&fLit, Internal::Any(&f)).matches(fmatched)); + assert(fLit == fmatched); + assert(f == 42.0); + + Literal numLit; + Literal numMatched(1.0f); + assert(Internal::NumberLit(&numLit, 1).matches(numMatched)); + assert(numLit == numMatched); +} + +void test_internal_const() { + std::cout << "Testing Internal::ConstantMatcher\n"; + + Const* c = builder.makeConst(Literal(int32_t(42))); + Expression* constExpr = builder.makeConst(Literal(int32_t(43))); + Expression* nop = builder.makeNop(); + + Const* extractedConst = nullptr; + Literal extractedLit; + int32_t extractedInt = 0; + + auto matcher = Internal::ConstMatcher( + &extractedConst, + Internal::I32Lit(&extractedLit, Internal::Any(&extractedInt))); + + assert(matcher.matches(c)); + assert(extractedConst == c); + assert(extractedLit == Literal(int32_t(42))); + assert(extractedInt == 42); + + assert(matcher.matches(constExpr)); + assert(extractedConst == constExpr); + assert(extractedLit == Literal(int32_t(43))); + assert(extractedInt == 43); + + assert(!matcher.matches(nop)); +} + +void test_internal_unary() { + Expression* eqz32 = + builder.makeUnary(EqZInt32, builder.makeConst(Literal(int32_t(0)))); + Expression* eqz64 = + builder.makeUnary(EqZInt64, builder.makeConst(Literal(int64_t(0)))); + Expression* clz = + builder.makeUnary(ClzInt32, builder.makeConst(Literal(int32_t(0)))); + Expression* nop = builder.makeNop(); + + std::cout << "Testing Internal::UnaryMatcher\n"; + + Unary* out = nullptr; + UnaryOp op; + + auto unMatcher = Internal::UnaryMatcher( + &out, Internal::Any(&op), Internal::Any(nullptr)); + assert(unMatcher.matches(eqz32)); + assert(out == eqz32); + assert(op == EqZInt32); + assert(unMatcher.matches(eqz64)); + assert(out == eqz64); + assert(op == EqZInt64); + assert(unMatcher.matches(clz)); + assert(out == clz); + assert(op == ClzInt32); + assert(!unMatcher.matches(nop)); + + assert(matches(clz, unary(any()))); + assert(matches(eqz64, unary(&out, any()))); + assert(out == eqz64); + assert(matches(eqz32, unary(&op, any()))); + assert(op == EqZInt32); + + std::cout << "Testing Internal::UnaryOpMatcher\n"; + + out = nullptr; + + auto eqz32Matcher = Internal::UnaryOpMatcher( + &out, EqZInt32, Internal::Any(nullptr)); + assert(eqz32Matcher.matches(eqz32)); + assert(out == eqz32); + assert(!eqz32Matcher.matches(eqz64)); + assert(!eqz32Matcher.matches(clz)); + assert(!eqz32Matcher.matches(nop)); + + std::cout << "Testing Internal::AbstractUnaryOpMatcher\n"; + + out = nullptr; + + auto eqzMatcher = Internal::AbstractUnaryOpMatcher( + &out, Abstract::EqZ, Internal::Any(nullptr)); + assert(eqzMatcher.matches(eqz32)); + assert(out == eqz32); + assert(eqzMatcher.matches(eqz64)); + assert(out == eqz64); + assert(!eqzMatcher.matches(clz)); + assert(!eqzMatcher.matches(nop)); +} + +void test_internal_binary() { + Expression* eq32 = builder.makeBinary(EqInt32, + builder.makeConst(Literal(int32_t(0))), + builder.makeConst(Literal(int32_t(0)))); + Expression* eq64 = builder.makeBinary(EqInt64, + builder.makeConst(Literal(int64_t(0))), + builder.makeConst(Literal(int64_t(0)))); + Expression* add = builder.makeBinary(AddInt32, + builder.makeConst(Literal(int32_t(0))), + builder.makeConst(Literal(int32_t(0)))); + Expression* nop = builder.makeNop(); + + std::cout << "Testing Internal::BinaryMatcher\n"; + + Binary* out = nullptr; + BinaryOp op; + + auto binMatcher = + Internal::BinaryMatcher(&out, + Internal::Any(&op), + Internal::Any(nullptr), + Internal::Any(nullptr)); + assert(binMatcher.matches(eq32)); + assert(out == eq32); + assert(op == EqInt32); + assert(binMatcher.matches(eq64)); + assert(out == eq64); + assert(op == EqInt64); + assert(binMatcher.matches(add)); + assert(out == add); + assert(op == AddInt32); + assert(!binMatcher.matches(nop)); + + assert(matches(add, binary(any(), any()))); + assert(matches(eq64, binary(&out, any(), any()))); + assert(out == eq64); + assert(matches(eq32, binary(&op, any(), any()))); + assert(op == EqInt32); + + std::cout << "Testing Internal::BinaryOpMatcher\n"; + + out = nullptr; + + auto eq32Matcher = + Internal::BinaryOpMatcher(&out, + EqInt32, + Internal::Any(nullptr), + Internal::Any(nullptr)); + assert(eq32Matcher.matches(eq32)); + assert(out == eq32); + assert(!eq32Matcher.matches(eq64)); + assert(!eq32Matcher.matches(add)); + assert(!eq32Matcher.matches(nop)); + + std::cout << "Testing Internal::AbstractBinaryOpMatcher\n"; + + out = nullptr; + + auto eqMatcher = + Internal::AbstractBinaryOpMatcher(&out, + Abstract::Eq, + Internal::Any(nullptr), + Internal::Any(nullptr)); + assert(eqMatcher.matches(eq32)); + assert(out == eq32); + assert(eqMatcher.matches(eq64)); + assert(out == eq64); + assert(!eqMatcher.matches(add)); + assert(!eqMatcher.matches(nop)); +} + +void test_internal_select() { + std::cout << "Testing Internal::SelectMatcher\n"; + + auto zero = [&]() { return builder.makeConst(Literal(int32_t(0))); }; + auto one = [&]() { return builder.makeConst(Literal(int32_t(1))); }; + + auto constMatcher = [](int32_t c) { + return Internal::ConstMatcher( + nullptr, Internal::I32Lit(nullptr, Internal::Exact(nullptr, c))); + }; + + // NB: `makeSelect` takes the condition first for some reason + Expression* leftOne = builder.makeSelect(zero(), one(), zero()); + Expression* rightOne = builder.makeSelect(zero(), zero(), one()); + Expression* condOne = builder.makeSelect(one(), zero(), zero()); + + Select* out = nullptr; + + auto zeroesMatcher = Internal::SelectMatcher( + &out, constMatcher(0), constMatcher(0), constMatcher(0)); + assert(!zeroesMatcher.matches(leftOne)); + assert(!zeroesMatcher.matches(rightOne)); + assert(!zeroesMatcher.matches(condOne)); + + auto leftMatcher = Internal::SelectMatcher( + &out, constMatcher(1), constMatcher(0), constMatcher(0)); + assert(leftMatcher.matches(leftOne)); + assert(out == leftOne); + assert(!leftMatcher.matches(rightOne)); + assert(!leftMatcher.matches(condOne)); + + auto rightMatcher = Internal::SelectMatcher( + &out, constMatcher(0), constMatcher(1), constMatcher(0)); + assert(!rightMatcher.matches(leftOne)); + assert(rightMatcher.matches(rightOne)); + assert(out == rightOne); + assert(!rightMatcher.matches(condOne)); + + auto condMatcher = Internal::SelectMatcher( + &out, constMatcher(0), constMatcher(0), constMatcher(1)); + assert(!condMatcher.matches(leftOne)); + assert(!condMatcher.matches(rightOne)); + assert(condMatcher.matches(condOne)); + assert(out == condOne); +} + +int main() { + test_internal_any(); + test_internal_exact(); + test_internal_literal(); + test_internal_const(); + test_internal_unary(); + test_internal_binary(); + test_internal_select(); +} diff -Nru binaryen-91/test/example/match.txt binaryen-99/test/example/match.txt --- binaryen-91/test/example/match.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/example/match.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,11 @@ +Testing Internal::Any +Testing Internal::Exact +Testing Internal::{I32,I64,Int,F32,F64,Float}Lit +Testing Internal::ConstantMatcher +Testing Internal::UnaryMatcher +Testing Internal::UnaryOpMatcher +Testing Internal::AbstractUnaryOpMatcher +Testing Internal::BinaryMatcher +Testing Internal::BinaryOpMatcher +Testing Internal::AbstractBinaryOpMatcher +Testing Internal::SelectMatcher diff -Nru binaryen-91/test/example/module-splitting.cpp binaryen-99/test/example/module-splitting.cpp --- binaryen-91/test/example/module-splitting.cpp 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/example/module-splitting.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,397 @@ +#include +#include + +#include "ir/module-splitting.h" +#include "ir/stack-utils.h" +#include "wasm-features.h" +#include "wasm-s-parser.h" +#include "wasm-validator.h" +#include "wasm.h" + +using namespace wasm; + +std::unique_ptr parse(char* module) { + auto wasm = std::make_unique(); + wasm->features = FeatureSet::All; + try { + SExpressionParser parser(module); + Element& root = *parser.root; + SExpressionWasmBuilder builder(*wasm, *root[0], IRProfile::Normal); + } catch (ParseException& p) { + p.dump(std::cerr); + Fatal() << "error in parsing wasm text"; + } + return wasm; +} + +void do_test(const std::set& keptFuncs, std::string&& module) { + WasmValidator validator; + bool valid; + + auto primary = parse(&module.front()); + valid = validator.validate(*primary); + assert(valid && "before invalid!"); + + std::cout << "Before:\n"; + std::cout << *primary.get(); + + std::cout << "Keeping: "; + if (keptFuncs.size()) { + auto it = keptFuncs.begin(); + std::cout << *it++; + while (it != keptFuncs.end()) { + std::cout << ", " << *it++; + } + } else { + std::cout << ""; + } + std::cout << "\n"; + + ModuleSplitting::Config config; + config.primaryFuncs = keptFuncs; + config.newExportPrefix = "%"; + auto secondary = splitFunctions(*primary, config); + + std::cout << "After:\n"; + std::cout << *primary.get(); + std::cout << "Secondary:\n"; + std::cout << *secondary.get(); + std::cout << "\n\n"; + + valid = validator.validate(*primary); + assert(valid && "after invalid!"); + valid = validator.validate(*secondary); + assert(valid && "secondary invalid!"); +} + +int main() { + // Trivial module + do_test({}, "(module)"); + + // Global stuff + do_test({}, R"( + (module + (memory $mem (shared 3 42)) + (table $tab 3 42 funcref) + (global $glob (mut i32) (i32.const 7)) + (event $e (attr 0) (param i32)) + ))"); + + // Imported global stuff + do_test({}, R"( + (module + (import "env" "mem" (memory $mem (shared 3 42))) + (import "env" "tab" (table $tab 3 42 funcref)) + (import "env" "glob" (global $glob (mut i32))) + (import "env" "e" (event $e (attr 0) (param i32))) + ))"); + + // Exported global stuff + do_test({}, R"( + (module + (memory $mem (shared 3 42)) + (table $tab 3 42 funcref) + (global $glob (mut i32) (i32.const 7)) + (event $e (attr 0) (param i32)) + (export "mem" (memory $mem)) + (export "tab" (table $tab)) + (export "glob" (global $glob)) + (export "e" (event $e)) + ))"); + + // Non-deferred function + do_test({"foo"}, R"( + (module + (func $foo (param i32) (result i32) + (local.get 0) + ) + ))"); + + // Non-deferred exported function + do_test({"foo"}, R"( + (module + (export "foo" (func $foo)) + (func $foo (param i32) (result i32) + (local.get 0) + ) + ))"); + + // Non-deferred function in table + do_test({"foo"}, R"( + (module + (table $table 1 funcref) + (elem (i32.const 0) $foo) + (func $foo (param i32) (result i32) + (local.get 0) + ) + ))"); + + // Non-deferred function in table at non-const offset + do_test({"foo"}, R"( + (module + (import "env" "base" (global $base i32)) + (table $table 1 funcref) + (elem (global.get $base) $foo) + (func $foo (param i32) (result i32) + (local.get 0) + ) + ))"); + + // Non-deferred imported function + do_test({"foo"}, R"( + (module + (import "env" "foo" (func $foo (param i32) (result i32))) + ))"); + + // Non-deferred exported imported function in table at a weird offset + do_test({"foo"}, R"( + (module + (import "env" "foo" (func $foo (param i32) (result i32))) + (table $table 1000 funcref) + (elem (i32.const 42) $foo) + (export "foo" (func $foo)) + ))"); + + // Non-deferred exported imported function in table at a non-const offset + do_test({"foo"}, R"( + (module + (import "env" "base" (global $base i32)) + (import "env" "foo" (func $foo (param i32) (result i32))) + (table $table 1000 funcref) + (elem (global.get $base) $foo) + (export "foo" (func $foo)) + ))"); + + // Deferred function + do_test({}, R"( + (module + (func $foo (param i32) (result i32) + (local.get 0) + ) + ))"); + + // Deferred exported function + do_test({}, R"( + (module + (export "foo" (func $foo)) + (func $foo (param i32) (result i32) + (local.get 0) + ) + ))"); + + // Deferred function in table + do_test({}, R"( + (module + (table $table 1 funcref) + (elem (i32.const 0) $foo) + (func $foo (param i32) (result i32) + (local.get 0) + ) + ))"); + + // Deferred exported function in table at a weird offset + do_test({}, R"( + (module + (table $table 1000 funcref) + (elem (i32.const 42) $foo) + (export "foo" (func $foo)) + (func $foo (param i32) (result i32) + (local.get 0) + ) + ))"); + + // Deferred exported function in table at a non-const offset + do_test({}, R"( + (module + (import "env" "base" (global $base i32)) + (table $table 1000 funcref) + (elem (global.get $base) $foo) + (export "foo" (func $foo)) + (func $foo (param i32) (result i32) + (local.get 0) + ) + ))"); + + // Deferred exported function in table at an offset from a non-const base + do_test({"null"}, R"( + (module + (import "env" "base" (global $base i32)) + (table $table 1000 funcref) + (elem (global.get $base) $null $foo) + (export "foo" (func $foo)) + (func $null) + (func $foo (param i32) (result i32) + (local.get 0) + ) + ))"); + + // Non-deferred function calling non-deferred function + do_test({"foo", "bar"}, R"( + (module + (func $foo + (call $bar) + ) + (func $bar + (nop) + ) + ))"); + + // Deferred function calling non-deferred function + do_test({"bar"}, R"( + (module + (func $foo + (call $bar) + ) + (func $bar + (nop) + ) + ))"); + + // Non-deferred function calling deferred function + do_test({"foo"}, R"( + (module + (func $foo + (call $bar) + ) + (func $bar + (nop) + ) + ))"); + + // Deferred function calling deferred function + do_test({}, R"( + (module + (func $foo + (call $bar) + ) + (func $bar + (nop) + ) + ))"); + + // Deferred function calling non-deferred function with clashing export name + do_test({"foo"}, R"( + (module + (export "%foo" (func $bar)) + (func $foo + (nop) + ) + (func $bar + (call $foo) + ) + ))"); + + // Mixed table 1 + do_test({"bar", "quux"}, R"( + (module + (table $table 4 funcref) + (elem (i32.const 0) $foo $bar $baz $quux) + (func $foo + (nop) + ) + (func $bar + (nop) + ) + (func $baz + (nop) + ) + (func $quux + (nop) + ) + ))"); + + // Mixed table 1 with non-const offset + do_test({"bar", "quux"}, R"( + (module + (import "env" "base" (global $base i32)) + (table $table 4 funcref) + (elem (global.get $base) $foo $bar $baz $quux) + (func $foo + (nop) + ) + (func $bar + (nop) + ) + (func $baz + (nop) + ) + (func $quux + (nop) + ) + ))"); + + // Mixed table 2 + do_test({"baz"}, R"( + (module + (table $table 4 funcref) + (elem (i32.const 0) $foo $bar $baz $quux) + (func $foo + (nop) + ) + (func $bar + (nop) + ) + (func $baz + (nop) + ) + (func $quux + (nop) + ) + ))"); + + // Mixed table 2 with non-const offset + do_test({"baz"}, R"( + (module + (import "env" "base" (global $base i32)) + (table $table 4 funcref) + (elem (global.get $base) $foo $bar $baz $quux) + (func $foo + (nop) + ) + (func $bar + (nop) + ) + (func $baz + (nop) + ) + (func $quux + (nop) + ) + ))"); + + // `foo` is exported both because it is called by `bar` and because it is in a + // table gap + do_test({"foo"}, R"( + (module + (import "env" "base" (global $base i32)) + (table $table 2 funcref) + (elem (global.get $base) $foo $bar) + (func $foo + (nop) + ) + (func $bar + (call $foo) + ) + ))"); + + // Mutual recursion with table growth + do_test({"foo"}, R"( + (module + (table $table 1 1 funcref) + (elem (i32.const 0) $foo) + (func $foo (param i32) (result i32) + (call $bar (i32.const 0)) + ) + (func $bar (param i32) (result i32) + (call $foo (i32.const 1)) + ) + ))"); + + // Multiple exports of a secondary function + do_test({}, R"( + (module + (export "foo1" (func $foo)) + (export "foo2" (func $foo)) + (func $foo) + ))"); +} diff -Nru binaryen-91/test/example/module-splitting.txt binaryen-99/test/example/module-splitting.txt --- binaryen-91/test/example/module-splitting.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/example/module-splitting.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,981 @@ +Before: +(module +) +Keeping: +After: +(module +) +Secondary: +(module +) + + +Before: +(module + (type $i32_=>_none (func (param i32))) + (memory $mem (shared 3 42)) + (table $tab 3 42 funcref) + (global $glob (mut i32) (i32.const 7)) + (event $e (attr 0) (param i32)) +) +Keeping: +After: +(module + (type $i32_=>_none (func (param i32))) + (memory $mem (shared 3 42)) + (table $tab 3 42 funcref) + (global $glob (mut i32) (i32.const 7)) + (event $e (attr 0) (param i32)) + (export "%memory" (memory $mem)) + (export "%table" (table $tab)) + (export "%global" (global $glob)) + (export "%event" (event $e)) +) +Secondary: +(module + (type $i32_=>_none (func (param i32))) + (import "primary" "%memory" (memory $mem (shared 3 42))) + (import "primary" "%table" (table $tab 3 42 funcref)) + (import "primary" "%global" (global $glob (mut i32))) + (import "primary" "%event" (event $e (attr 0) (param i32))) +) + + +Before: +(module + (type $i32_=>_none (func (param i32))) + (import "env" "mem" (memory $mem (shared 3 42))) + (import "env" "tab" (table $tab 3 42 funcref)) + (import "env" "glob" (global $glob (mut i32))) + (import "env" "e" (event $e (attr 0) (param i32))) +) +Keeping: +After: +(module + (type $i32_=>_none (func (param i32))) + (import "env" "mem" (memory $mem (shared 3 42))) + (import "env" "tab" (table $tab 3 42 funcref)) + (import "env" "glob" (global $glob (mut i32))) + (import "env" "e" (event $e (attr 0) (param i32))) + (export "%memory" (memory $mem)) + (export "%table" (table $tab)) + (export "%global" (global $glob)) + (export "%event" (event $e)) +) +Secondary: +(module + (type $i32_=>_none (func (param i32))) + (import "primary" "%memory" (memory $mem (shared 3 42))) + (import "primary" "%table" (table $tab 3 42 funcref)) + (import "primary" "%global" (global $glob (mut i32))) + (import "primary" "%event" (event $e (attr 0) (param i32))) +) + + +Before: +(module + (type $i32_=>_none (func (param i32))) + (memory $mem (shared 3 42)) + (table $tab 3 42 funcref) + (global $glob (mut i32) (i32.const 7)) + (event $e (attr 0) (param i32)) + (export "mem" (memory $mem)) + (export "tab" (table $tab)) + (export "glob" (global $glob)) + (export "e" (event $e)) +) +Keeping: +After: +(module + (type $i32_=>_none (func (param i32))) + (memory $mem (shared 3 42)) + (table $tab 3 42 funcref) + (global $glob (mut i32) (i32.const 7)) + (event $e (attr 0) (param i32)) + (export "mem" (memory $mem)) + (export "tab" (table $tab)) + (export "glob" (global $glob)) + (export "e" (event $e)) +) +Secondary: +(module + (type $i32_=>_none (func (param i32))) + (import "primary" "mem" (memory $mem (shared 3 42))) + (import "primary" "tab" (table $tab 3 42 funcref)) + (import "primary" "glob" (global $glob (mut i32))) + (import "primary" "e" (event $e (attr 0) (param i32))) +) + + +Before: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (func $foo (param $0 i32) (result i32) + (local.get $0) + ) +) +Keeping: foo +After: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (func $foo (param $0 i32) (result i32) + (local.get $0) + ) +) +Secondary: +(module +) + + +Before: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (export "foo" (func $foo)) + (func $foo (param $0 i32) (result i32) + (local.get $0) + ) +) +Keeping: foo +After: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (export "foo" (func $foo)) + (func $foo (param $0 i32) (result i32) + (local.get $0) + ) +) +Secondary: +(module +) + + +Before: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (table $table 1 funcref) + (elem (i32.const 0) $foo) + (func $foo (param $0 i32) (result i32) + (local.get $0) + ) +) +Keeping: foo +After: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (table $table 1 funcref) + (elem (i32.const 0) $foo) + (export "%table" (table $table)) + (func $foo (param $0 i32) (result i32) + (local.get $0) + ) +) +Secondary: +(module + (import "primary" "%table" (table $table 1 funcref)) +) + + +Before: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "env" "base" (global $base i32)) + (table $table 1 funcref) + (elem (global.get $base) $foo) + (func $foo (param $0 i32) (result i32) + (local.get $0) + ) +) +Keeping: foo +After: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "env" "base" (global $base i32)) + (table $table 1 funcref) + (elem (global.get $base) $foo) + (export "%table" (table $table)) + (export "%global" (global $base)) + (func $foo (param $0 i32) (result i32) + (local.get $0) + ) +) +Secondary: +(module + (import "primary" "%table" (table $table 1 funcref)) + (import "primary" "%global" (global $base i32)) +) + + +Before: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "env" "foo" (func $foo (param i32) (result i32))) +) +Keeping: foo +After: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "env" "foo" (func $foo (param i32) (result i32))) +) +Secondary: +(module +) + + +Before: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "env" "foo" (func $foo (param i32) (result i32))) + (table $table 1000 funcref) + (elem (i32.const 42) $foo) + (export "foo" (func $foo)) +) +Keeping: foo +After: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "env" "foo" (func $foo (param i32) (result i32))) + (table $table 1000 funcref) + (elem (i32.const 42) $foo) + (export "foo" (func $foo)) + (export "%table" (table $table)) +) +Secondary: +(module + (import "primary" "%table" (table $table 1000 funcref)) +) + + +Before: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "env" "base" (global $base i32)) + (import "env" "foo" (func $foo (param i32) (result i32))) + (table $table 1000 funcref) + (elem (global.get $base) $foo) + (export "foo" (func $foo)) +) +Keeping: foo +After: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "env" "base" (global $base i32)) + (import "env" "foo" (func $foo (param i32) (result i32))) + (table $table 1000 funcref) + (elem (global.get $base) $foo) + (export "foo" (func $foo)) + (export "%table" (table $table)) + (export "%global" (global $base)) +) +Secondary: +(module + (import "primary" "%table" (table $table 1000 funcref)) + (import "primary" "%global" (global $base i32)) +) + + +Before: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (func $foo (param $0 i32) (result i32) + (local.get $0) + ) +) +Keeping: +After: +(module +) +Secondary: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (func $foo (param $0 i32) (result i32) + (local.get $0) + ) +) + + +Before: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (export "foo" (func $foo)) + (func $foo (param $0 i32) (result i32) + (local.get $0) + ) +) +Keeping: +After: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "placeholder" "0" (func $placeholder_0 (param i32) (result i32))) + (table $0 1 funcref) + (elem (i32.const 0) $placeholder_0) + (export "foo" (func $foo)) + (export "%table" (table $0)) + (func $foo (param $0 i32) (result i32) + (call_indirect (type $i32_=>_i32) + (local.get $0) + (i32.const 0) + ) + ) +) +Secondary: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "primary" "%table" (table $0 1 funcref)) + (elem (i32.const 0) $foo) + (func $foo (param $0 i32) (result i32) + (local.get $0) + ) +) + + +Before: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (table $table 1 funcref) + (elem (i32.const 0) $foo) + (func $foo (param $0 i32) (result i32) + (local.get $0) + ) +) +Keeping: +After: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "placeholder" "0" (func $placeholder_0 (param i32) (result i32))) + (table $table 1 funcref) + (elem (i32.const 0) $placeholder_0) + (export "%table" (table $table)) +) +Secondary: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "primary" "%table" (table $table 1 funcref)) + (elem (i32.const 0) $foo) + (func $foo (param $0 i32) (result i32) + (local.get $0) + ) +) + + +Before: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (table $table 1000 funcref) + (elem (i32.const 42) $foo) + (export "foo" (func $foo)) + (func $foo (param $0 i32) (result i32) + (local.get $0) + ) +) +Keeping: +After: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "placeholder" "42" (func $placeholder_42 (param i32) (result i32))) + (table $table 1000 funcref) + (elem (i32.const 42) $placeholder_42) + (export "foo" (func $foo)) + (export "%table" (table $table)) + (func $foo (param $0 i32) (result i32) + (call_indirect (type $i32_=>_i32) + (local.get $0) + (i32.const 42) + ) + ) +) +Secondary: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "primary" "%table" (table $table 1000 funcref)) + (elem (i32.const 42) $foo) + (func $foo (param $0 i32) (result i32) + (local.get $0) + ) +) + + +Before: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "env" "base" (global $base i32)) + (table $table 1000 funcref) + (elem (global.get $base) $foo) + (export "foo" (func $foo)) + (func $foo (param $0 i32) (result i32) + (local.get $0) + ) +) +Keeping: +After: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "env" "base" (global $base i32)) + (import "placeholder" "0" (func $placeholder_0 (param i32) (result i32))) + (table $table 1000 funcref) + (elem (global.get $base) $placeholder_0) + (export "foo" (func $foo)) + (export "%table" (table $table)) + (export "%global" (global $base)) + (func $foo (param $0 i32) (result i32) + (call_indirect (type $i32_=>_i32) + (local.get $0) + (global.get $base) + ) + ) +) +Secondary: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "primary" "%table" (table $table 1000 funcref)) + (elem (global.get $base) $foo) + (import "primary" "%global" (global $base i32)) + (func $foo (param $0 i32) (result i32) + (local.get $0) + ) +) + + +Before: +(module + (type $none_=>_none (func)) + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "env" "base" (global $base i32)) + (table $table 1000 funcref) + (elem (global.get $base) $null $foo) + (export "foo" (func $foo)) + (func $null + (nop) + ) + (func $foo (param $0 i32) (result i32) + (local.get $0) + ) +) +Keeping: null +After: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_none (func)) + (import "env" "base" (global $base i32)) + (import "placeholder" "1" (func $placeholder_1 (param i32) (result i32))) + (table $table 1000 funcref) + (elem (global.get $base) $null $placeholder_1) + (export "foo" (func $foo)) + (export "%null" (func $null)) + (export "%table" (table $table)) + (export "%global" (global $base)) + (func $null + (nop) + ) + (func $foo (param $0 i32) (result i32) + (call_indirect (type $i32_=>_i32) + (local.get $0) + (i32.add + (global.get $base) + (i32.const 1) + ) + ) + ) +) +Secondary: +(module + (type $none_=>_none (func)) + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "primary" "%table" (table $table 1000 funcref)) + (elem (global.get $base) $null $foo) + (import "primary" "%global" (global $base i32)) + (import "primary" "%null" (func $null)) + (func $foo (param $0 i32) (result i32) + (local.get $0) + ) +) + + +Before: +(module + (type $none_=>_none (func)) + (func $foo + (call $bar) + ) + (func $bar + (nop) + ) +) +Keeping: bar, foo +After: +(module + (type $none_=>_none (func)) + (func $foo + (call $bar) + ) + (func $bar + (nop) + ) +) +Secondary: +(module +) + + +Before: +(module + (type $none_=>_none (func)) + (func $foo + (call $bar) + ) + (func $bar + (nop) + ) +) +Keeping: bar +After: +(module + (type $none_=>_none (func)) + (export "%bar" (func $bar)) + (func $bar + (nop) + ) +) +Secondary: +(module + (type $none_=>_none (func)) + (import "primary" "%bar" (func $bar)) + (func $foo + (call $bar) + ) +) + + +Before: +(module + (type $none_=>_none (func)) + (func $foo + (call $bar) + ) + (func $bar + (nop) + ) +) +Keeping: foo +After: +(module + (type $none_=>_none (func)) + (import "placeholder" "0" (func $placeholder_0)) + (table $0 1 funcref) + (elem (i32.const 0) $placeholder_0) + (export "%table" (table $0)) + (func $foo + (call_indirect (type $none_=>_none) + (i32.const 0) + ) + ) +) +Secondary: +(module + (type $none_=>_none (func)) + (import "primary" "%table" (table $0 1 funcref)) + (elem (i32.const 0) $bar) + (func $bar + (nop) + ) +) + + +Before: +(module + (type $none_=>_none (func)) + (func $foo + (call $bar) + ) + (func $bar + (nop) + ) +) +Keeping: +After: +(module +) +Secondary: +(module + (type $none_=>_none (func)) + (func $bar + (nop) + ) + (func $foo + (call $bar) + ) +) + + +Before: +(module + (type $none_=>_none (func)) + (export "%foo" (func $bar)) + (func $foo + (nop) + ) + (func $bar + (call $foo) + ) +) +Keeping: foo +After: +(module + (type $none_=>_none (func)) + (import "placeholder" "0" (func $placeholder_0)) + (table $0 1 funcref) + (elem (i32.const 0) $placeholder_0) + (export "%foo" (func $bar)) + (export "%foo_0" (func $foo)) + (export "%table" (table $0)) + (func $foo + (nop) + ) + (func $bar + (call_indirect (type $none_=>_none) + (i32.const 0) + ) + ) +) +Secondary: +(module + (type $none_=>_none (func)) + (import "primary" "%table" (table $0 1 funcref)) + (elem (i32.const 0) $bar) + (import "primary" "%foo_0" (func $foo)) + (func $bar + (call $foo) + ) +) + + +Before: +(module + (type $none_=>_none (func)) + (table $table 4 funcref) + (elem (i32.const 0) $foo $bar $baz $quux) + (func $foo + (nop) + ) + (func $bar + (nop) + ) + (func $baz + (nop) + ) + (func $quux + (nop) + ) +) +Keeping: bar, quux +After: +(module + (type $none_=>_none (func)) + (import "placeholder" "0" (func $placeholder_0)) + (import "placeholder" "2" (func $placeholder_2)) + (table $table 4 funcref) + (elem (i32.const 0) $placeholder_0 $bar $placeholder_2 $quux) + (export "%table" (table $table)) + (func $bar + (nop) + ) + (func $quux + (nop) + ) +) +Secondary: +(module + (type $none_=>_none (func)) + (import "primary" "%table" (table $table 4 funcref)) + (elem (i32.const 0) $foo) + (elem (i32.const 2) $baz) + (func $baz + (nop) + ) + (func $foo + (nop) + ) +) + + +Before: +(module + (type $none_=>_none (func)) + (import "env" "base" (global $base i32)) + (table $table 4 funcref) + (elem (global.get $base) $foo $bar $baz $quux) + (func $foo + (nop) + ) + (func $bar + (nop) + ) + (func $baz + (nop) + ) + (func $quux + (nop) + ) +) +Keeping: bar, quux +After: +(module + (type $none_=>_none (func)) + (import "env" "base" (global $base i32)) + (import "placeholder" "0" (func $placeholder_0)) + (import "placeholder" "2" (func $placeholder_2)) + (table $table 4 funcref) + (elem (global.get $base) $placeholder_0 $bar $placeholder_2 $quux) + (export "%bar" (func $bar)) + (export "%table" (table $table)) + (export "%global" (global $base)) + (func $bar + (nop) + ) + (func $quux + (nop) + ) +) +Secondary: +(module + (type $none_=>_none (func)) + (import "primary" "%table" (table $table 4 funcref)) + (elem (global.get $base) $foo $bar $baz) + (import "primary" "%global" (global $base i32)) + (import "primary" "%bar" (func $bar)) + (func $baz + (nop) + ) + (func $foo + (nop) + ) +) + + +Before: +(module + (type $none_=>_none (func)) + (table $table 4 funcref) + (elem (i32.const 0) $foo $bar $baz $quux) + (func $foo + (nop) + ) + (func $bar + (nop) + ) + (func $baz + (nop) + ) + (func $quux + (nop) + ) +) +Keeping: baz +After: +(module + (type $none_=>_none (func)) + (import "placeholder" "0" (func $placeholder_0)) + (import "placeholder" "1" (func $placeholder_1)) + (import "placeholder" "3" (func $placeholder_3)) + (table $table 4 funcref) + (elem (i32.const 0) $placeholder_0 $placeholder_1 $baz $placeholder_3) + (export "%table" (table $table)) + (func $baz + (nop) + ) +) +Secondary: +(module + (type $none_=>_none (func)) + (import "primary" "%table" (table $table 4 funcref)) + (elem (i32.const 0) $foo $bar) + (elem (i32.const 3) $quux) + (func $bar + (nop) + ) + (func $foo + (nop) + ) + (func $quux + (nop) + ) +) + + +Before: +(module + (type $none_=>_none (func)) + (import "env" "base" (global $base i32)) + (table $table 4 funcref) + (elem (global.get $base) $foo $bar $baz $quux) + (func $foo + (nop) + ) + (func $bar + (nop) + ) + (func $baz + (nop) + ) + (func $quux + (nop) + ) +) +Keeping: baz +After: +(module + (type $none_=>_none (func)) + (import "env" "base" (global $base i32)) + (import "placeholder" "0" (func $placeholder_0)) + (import "placeholder" "1" (func $placeholder_1)) + (import "placeholder" "3" (func $placeholder_3)) + (table $table 4 funcref) + (elem (global.get $base) $placeholder_0 $placeholder_1 $baz $placeholder_3) + (export "%baz" (func $baz)) + (export "%table" (table $table)) + (export "%global" (global $base)) + (func $baz + (nop) + ) +) +Secondary: +(module + (type $none_=>_none (func)) + (import "primary" "%table" (table $table 4 funcref)) + (elem (global.get $base) $foo $bar $baz $quux) + (import "primary" "%global" (global $base i32)) + (import "primary" "%baz" (func $baz)) + (func $bar + (nop) + ) + (func $foo + (nop) + ) + (func $quux + (nop) + ) +) + + +Before: +(module + (type $none_=>_none (func)) + (import "env" "base" (global $base i32)) + (table $table 2 funcref) + (elem (global.get $base) $foo $bar) + (func $foo + (nop) + ) + (func $bar + (call $foo) + ) +) +Keeping: foo +After: +(module + (type $none_=>_none (func)) + (import "env" "base" (global $base i32)) + (import "placeholder" "1" (func $placeholder_1)) + (table $table 2 funcref) + (elem (global.get $base) $foo $placeholder_1) + (export "%foo" (func $foo)) + (export "%table" (table $table)) + (export "%global" (global $base)) + (func $foo + (nop) + ) +) +Secondary: +(module + (type $none_=>_none (func)) + (import "primary" "%table" (table $table 2 funcref)) + (elem (global.get $base) $foo $bar) + (import "primary" "%global" (global $base i32)) + (import "primary" "%foo" (func $foo)) + (func $bar + (call $foo) + ) +) + + +Before: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (table $table 1 1 funcref) + (elem (i32.const 0) $foo) + (func $foo (param $0 i32) (result i32) + (call $bar + (i32.const 0) + ) + ) + (func $bar (param $0 i32) (result i32) + (call $foo + (i32.const 1) + ) + ) +) +Keeping: foo +After: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "placeholder" "1" (func $placeholder_1 (param i32) (result i32))) + (table $table 2 2 funcref) + (elem (i32.const 0) $foo $placeholder_1) + (export "%foo" (func $foo)) + (export "%table" (table $table)) + (func $foo (param $0 i32) (result i32) + (call_indirect (type $i32_=>_i32) + (i32.const 0) + (i32.const 1) + ) + ) +) +Secondary: +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "primary" "%table" (table $table 2 2 funcref)) + (elem (i32.const 1) $bar) + (import "primary" "%foo" (func $foo (param i32) (result i32))) + (func $bar (param $0 i32) (result i32) + (call $foo + (i32.const 1) + ) + ) +) + + +Before: +(module + (type $none_=>_none (func)) + (export "foo1" (func $foo)) + (export "foo2" (func $foo)) + (func $foo + (nop) + ) +) +Keeping: +After: +(module + (type $none_=>_none (func)) + (import "placeholder" "0" (func $placeholder_0)) + (table $0 1 funcref) + (elem (i32.const 0) $placeholder_0) + (export "foo1" (func $foo)) + (export "foo2" (func $foo)) + (export "%table" (table $0)) + (func $foo + (call_indirect (type $none_=>_none) + (i32.const 0) + ) + ) +) +Secondary: +(module + (type $none_=>_none (func)) + (import "primary" "%table" (table $0 1 funcref)) + (elem (i32.const 0) $foo) + (func $foo + (nop) + ) +) + + diff -Nru binaryen-91/test/example/relooper-fuzz1.txt binaryen-99/test/example/relooper-fuzz1.txt --- binaryen-91/test/example/relooper-fuzz1.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/example/relooper-fuzz1.txt 2021-01-07 20:01:06.000000000 +0000 @@ -6,7 +6,7 @@ (memory $0 1 1) (export "mem" (memory $0)) (start $main) - (func $check (; 1 ;) (result i32) + (func $check (result i32) (if (i32.eq (i32.load @@ -41,7 +41,7 @@ ) ) ) - (func $main (; 2 ;) + (func $main (local $0 i32) (local $1 i32) (i32.store @@ -275,7 +275,7 @@ (memory $0 1 1) (export "mem" (memory $0)) (start $main) - (func $check (; 1 ;) (; has Stack IR ;) (result i32) + (func $check (; has Stack IR ;) (result i32) (if (i32.eq (i32.load @@ -310,7 +310,7 @@ ) ) ) - (func $main (; 2 ;) (; has Stack IR ;) + (func $main (; has Stack IR ;) (local $0 i32) (i32.store (i32.const 8) diff -Nru binaryen-91/test/example/relooper-fuzz2.txt binaryen-99/test/example/relooper-fuzz2.txt --- binaryen-91/test/example/relooper-fuzz2.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/example/relooper-fuzz2.txt 2021-01-07 20:01:06.000000000 +0000 @@ -6,7 +6,7 @@ (memory $0 1 1) (export "mem" (memory $0)) (start $main) - (func $check (; 1 ;) (result i32) + (func $check (result i32) (if (i32.ge_u (i32.load @@ -41,7 +41,7 @@ ) ) ) - (func $main (; 2 ;) + (func $main (local $0 i32) (local $1 i32) (i32.store diff -Nru binaryen-91/test/example/relooper-fuzz.txt binaryen-99/test/example/relooper-fuzz.txt --- binaryen-91/test/example/relooper-fuzz.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/example/relooper-fuzz.txt 2021-01-07 20:01:06.000000000 +0000 @@ -6,7 +6,7 @@ (memory $0 1 1) (export "mem" (memory $0)) (start $main) - (func $check (; 1 ;) (result i32) + (func $check (result i32) (if (i32.eq (i32.load @@ -41,7 +41,7 @@ ) ) ) - (func $main (; 2 ;) + (func $main (local $0 i32) (local $1 i32) (i32.store @@ -299,7 +299,7 @@ (memory $0 1 1) (export "mem" (memory $0)) (start $main) - (func $check (; 1 ;) (; has Stack IR ;) (result i32) + (func $check (; has Stack IR ;) (result i32) (if (i32.eq (i32.load @@ -334,7 +334,7 @@ ) ) ) - (func $main (; 2 ;) (; has Stack IR ;) + (func $main (; has Stack IR ;) (local $0 i32) (local $1 i32) (i32.store diff -Nru binaryen-91/test/example/relooper-merge1.txt binaryen-99/test/example/relooper-merge1.txt --- binaryen-91/test/example/relooper-merge1.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/example/relooper-merge1.txt 2021-01-07 20:01:06.000000000 +0000 @@ -6,7 +6,7 @@ (memory $0 1 1) (export "mem" (memory $0)) (start $main) - (func $check (; 1 ;) (result i32) + (func $check (result i32) (if (i32.ge_u (i32.load @@ -41,7 +41,7 @@ ) ) ) - (func $main (; 2 ;) + (func $main (local $0 i32) (local $1 i32) (block diff -Nru binaryen-91/test/example/relooper-merge2.txt binaryen-99/test/example/relooper-merge2.txt --- binaryen-91/test/example/relooper-merge2.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/example/relooper-merge2.txt 2021-01-07 20:01:06.000000000 +0000 @@ -6,7 +6,7 @@ (memory $0 1 1) (export "mem" (memory $0)) (start $main) - (func $check (; 1 ;) (result i32) + (func $check (result i32) (if (i32.ge_u (i32.load @@ -41,7 +41,7 @@ ) ) ) - (func $main (; 2 ;) + (func $main (local $0 i32) (local $1 i32) (block diff -Nru binaryen-91/test/example/relooper-merge3.txt binaryen-99/test/example/relooper-merge3.txt --- binaryen-91/test/example/relooper-merge3.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/example/relooper-merge3.txt 2021-01-07 20:01:06.000000000 +0000 @@ -6,7 +6,7 @@ (memory $0 1 1) (export "mem" (memory $0)) (start $main) - (func $check (; 1 ;) (result i32) + (func $check (result i32) (if (i32.ge_u (i32.load @@ -41,7 +41,7 @@ ) ) ) - (func $main (; 2 ;) + (func $main (local $0 i32) (local $1 i32) (block diff -Nru binaryen-91/test/example/relooper-merge4.txt binaryen-99/test/example/relooper-merge4.txt --- binaryen-91/test/example/relooper-merge4.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/example/relooper-merge4.txt 2021-01-07 20:01:06.000000000 +0000 @@ -6,7 +6,7 @@ (memory $0 1 1) (export "mem" (memory $0)) (start $main) - (func $check (; 1 ;) (result i32) + (func $check (result i32) (if (i32.ge_u (i32.load @@ -41,7 +41,7 @@ ) ) ) - (func $main (; 2 ;) + (func $main (local $0 i32) (local $1 i32) (block diff -Nru binaryen-91/test/example/relooper-merge5.txt binaryen-99/test/example/relooper-merge5.txt --- binaryen-91/test/example/relooper-merge5.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/example/relooper-merge5.txt 2021-01-07 20:01:06.000000000 +0000 @@ -6,7 +6,7 @@ (memory $0 1 1) (export "mem" (memory $0)) (start $main) - (func $check (; 1 ;) (result i32) + (func $check (result i32) (if (i32.ge_u (i32.load @@ -41,7 +41,7 @@ ) ) ) - (func $main (; 2 ;) + (func $main (local $0 i32) (local $1 i32) (block diff -Nru binaryen-91/test/example/relooper-merge6.txt binaryen-99/test/example/relooper-merge6.txt --- binaryen-91/test/example/relooper-merge6.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/example/relooper-merge6.txt 2021-01-07 20:01:06.000000000 +0000 @@ -6,7 +6,7 @@ (memory $0 1 1) (export "mem" (memory $0)) (start $main) - (func $check (; 1 ;) (result i32) + (func $check (result i32) (if (i32.ge_u (i32.load @@ -41,7 +41,7 @@ ) ) ) - (func $main (; 2 ;) + (func $main (local $0 i32) (local $1 i32) (block diff -Nru binaryen-91/test/example/space.cpp binaryen-99/test/example/space.cpp --- binaryen-91/test/example/space.cpp 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/example/space.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,115 @@ +#include +#include + +#include + +using namespace wasm; + +using Span = DisjointSpans::Span; + +int main() { + // No spans + { + DisjointSpans root; + // Nothing in root + assert(!root.checkOverlap(Span{0, 100})); + } + // One span + { + DisjointSpans root; + root.add(Span{0, 100}); + // It is there + assert(root.checkOverlap(Span{0, 100})); + } + { + DisjointSpans root; + root.add(Span{40, 60}); + // Exact match + assert(root.checkOverlap(Span{40, 60})); + // No overlap + assert(!root.checkOverlap(Span{20, 30})); + // Touching, but no overlap + assert(!root.checkOverlap(Span{20, 40})); + // Overlap + assert(root.checkOverlap(Span{20, 41})); + assert(root.checkOverlap(Span{40, 41})); + // Internal + assert(root.checkOverlap(Span{45, 50})); + // Touches other side + assert(root.checkOverlap(Span{45, 60})); + // Overlaps on other side + assert(root.checkOverlap(Span{45, 70})); + // Just inside. + assert(root.checkOverlap(Span{59, 60})); + // Just outside + assert(!root.checkOverlap(Span{60, 61})); + // Totally outside + assert(!root.checkOverlap(Span{70, 80})); + } + // Two spans, different subtrees + { + DisjointSpans root; + root.add(Span{30, 40}); + root.add(Span{60, 70}); + assert(!root.checkOverlap(Span{10, 20})); + assert(!root.checkOverlap(Span{10, 30})); + assert(root.checkOverlap(Span{10, 40})); + assert(root.checkOverlap(Span{35, 40})); + assert(!root.checkOverlap(Span{40, 60})); + assert(!root.checkOverlap(Span{45, 55})); + assert(root.checkOverlap(Span{50, 61})); + assert(root.checkOverlap(Span{50, 100})); + assert(root.checkOverlap(Span{60, 70})); + assert(root.checkOverlap(Span{60, 61})); + assert(!root.checkOverlap(Span{70, 80})); + assert(!root.checkOverlap(Span{70, 100})); + } + // Two spans, same subtree + { + DisjointSpans root; + root.add(Span{30, 40}); + root.add(Span{40, 45}); + assert(!root.checkOverlap(Span{10, 20})); + assert(!root.checkOverlap(Span{10, 30})); + assert(root.checkOverlap(Span{10, 40})); + assert(root.checkOverlap(Span{35, 40})); + assert(root.checkOverlap(Span{40, 41})); + assert(root.checkOverlap(Span{35, 45})); + assert(!root.checkOverlap(Span{45, 100})); + } + // "Pixels" + { + const int N = 40; + for (int i = 0; i < N; i++) { + DisjointSpans root; + for (int j = 0; j < N; j++) { + // add all pixels but the i-th + if (j != i) { + root.add(Span{j, j + 1}); + } + } + for (int j = 0; j < N; j++) { + if (j != i) { + assert(root.checkOverlap(Span{j, j + 1})); + } else { + assert(!root.checkOverlap(Span{j, j + 1})); + } + } + assert(root.checkOverlap(Span{10, N + 10})); + assert(!root.checkOverlap(Span{N + 10, N + 20})); + } + } + // Large numbers. + { + DisjointSpans root; + assert(!root.checkOverlap(Span{2948, 2949})); + root.add(Span{2948, 2949}); + assert(root.checkOverlap(Span{2948, 2949})); + assert(root.checkOverlap(Span{2940, 2949})); + assert(root.checkOverlap(Span{2948, 2959})); + assert(root.checkOverlap(Span{0, 18766})); + assert(!root.checkOverlap(Span{2000, 2001})); + assert(!root.checkOverlap(Span{3000, 3001})); + } + std::cout << "success.\n"; +} diff -Nru binaryen-91/test/example/space.txt binaryen-99/test/example/space.txt --- binaryen-91/test/example/space.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/example/space.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +success. diff -Nru binaryen-91/test/example/stack-utils.cpp binaryen-99/test/example/stack-utils.cpp --- binaryen-91/test/example/stack-utils.cpp 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/example/stack-utils.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,440 @@ +#include +#include + +#include "ir/stack-utils.h" +#include "literal.h" +#include "mixed_arena.h" +#include "wasm-builder.h" +#include "wasm-type.h" +#include "wasm.h" + +using namespace wasm; + +Module module; +Builder builder(module); + +void test_remove_nops() { + std::cout << ";; Test removeNops\n"; + auto* block = builder.makeBlock( + { + builder.makeNop(), + builder.makeConst(Literal(int32_t(0))), + builder.makeNop(), + builder.makeConst(Literal(int64_t(0))), + builder.makeNop(), + builder.makeNop(), + }, + {Type::i32, Type::i64}); + std::cout << *block << '\n'; + StackUtils::removeNops(block); + std::cout << *block << '\n'; +} + +void test_stack_signatures() { + std::cout << ";; Test stack signatures\n"; + // Typed block + auto* block = builder.makeBlock({builder.makeUnreachable()}, Type::f32); + assert(StackSignature(block) == + (StackSignature{Type::none, Type::f32, false})); + // Unreachable block + auto* unreachable = + builder.makeBlock({builder.makeUnreachable()}, Type::unreachable); + assert(StackSignature(unreachable) == + (StackSignature{Type::none, Type::none, true})); + { + // Typed loop + auto* loop = builder.makeLoop("loop", unreachable, Type::f32); + assert(StackSignature(loop) == + (StackSignature{Type::none, Type::f32, false})); + } + { + // Unreachable loop + auto* loop = builder.makeLoop("loop", unreachable, Type::unreachable); + assert(StackSignature(loop) == + (StackSignature{Type::none, Type::none, true})); + } + { + // If (no else) + auto* if_ = builder.makeIf( + builder.makePop(Type::i32), unreachable, nullptr, Type::none); + assert(StackSignature(if_) == + (StackSignature{Type::i32, Type::none, false})); + } + { + // If (with else) + auto* if_ = + builder.makeIf(builder.makePop(Type::i32), block, block, Type::f32); + assert(StackSignature(if_) == + (StackSignature{Type::i32, Type::f32, false})); + } + { + // Call + auto* call = + builder.makeCall("foo", + {builder.makePop(Type::i32), builder.makePop(Type::f32)}, + {Type::i64, Type::f64}); + assert( + StackSignature(call) == + (StackSignature{{Type::i32, Type::f32}, {Type::i64, Type::f64}, false})); + } + { + // Return Call + auto* call = + builder.makeCall("bar", + {builder.makePop(Type::i32), builder.makePop(Type::f32)}, + Type::unreachable, + true); + assert(StackSignature(call) == + (StackSignature{{Type::i32, Type::f32}, Type::none, true})); + } + { + // Return + auto* ret = builder.makeReturn(builder.makePop(Type::i32)); + assert(StackSignature(ret) == + (StackSignature{Type::i32, Type::none, true})); + } + { + // Multivalue return + auto* ret = builder.makeReturn(builder.makePop({Type::i32, Type::f32})); + assert(StackSignature(ret) == + (StackSignature{{Type::i32, Type::f32}, Type::none, true})); + } +} + +void test_signature_composition() { + std::cout << ";; Test stack signature composition\n"; + // No unreachables + { + StackSignature a{Type::none, {Type::f32, Type::i32}, false}; + StackSignature b{{Type::f32, Type::i32}, Type::none, false}; + assert(a.composes(b)); + assert(a + b == (StackSignature{Type::none, Type::none, false})); + } + { + StackSignature a{Type::none, Type::i32, false}; + StackSignature b{{Type::f32, Type::i32}, Type::none, false}; + assert(a.composes(b)); + assert(a + b == StackSignature(Type::f32, Type::none, false)); + } + { + StackSignature a{Type::none, {Type::f32, Type::i32}, false}; + StackSignature b{Type::i32, Type::none, false}; + assert(a.composes(b)); + assert(a + b == (StackSignature{Type::none, Type::f32, false})); + } + { + StackSignature a{Type::none, Type::f32, false}; + StackSignature b{{Type::f32, Type::i32}, Type::none, false}; + assert(!a.composes(b)); + } + { + StackSignature a{Type::none, {Type::f32, Type::i32}, false}; + StackSignature b{Type::f32, Type::none, false}; + assert(!a.composes(b)); + } + // First unreachable + { + StackSignature a{Type::none, {Type::f32, Type::i32}, true}; + StackSignature b{{Type::f32, Type::i32}, Type::none, false}; + assert(a.composes(b)); + assert(a + b == (StackSignature{Type::none, Type::none, true})); + } + { + StackSignature a{Type::none, Type::i32, true}; + StackSignature b{{Type::f32, Type::i32}, Type::none, false}; + assert(a.composes(b)); + assert(a + b == StackSignature(Type::none, Type::none, true)); + } + { + StackSignature a{Type::none, {Type::f32, Type::i32}, true}; + StackSignature b{Type::i32, Type::none, false}; + assert(a.composes(b)); + assert(a + b == (StackSignature{Type::none, Type::f32, true})); + } + { + StackSignature a{Type::none, Type::f32, true}; + StackSignature b{{Type::f32, Type::i32}, Type::none, false}; + assert(!a.composes(b)); + } + { + StackSignature a{Type::none, {Type::f32, Type::i32}, true}; + StackSignature b{Type::f32, Type::none, false}; + assert(!a.composes(b)); + } + // Second unreachable + { + StackSignature a{Type::none, {Type::f32, Type::i32}, false}; + StackSignature b{{Type::f32, Type::i32}, Type::none, true}; + assert(a.composes(b)); + assert(a + b == (StackSignature{Type::none, Type::none, true})); + } + { + StackSignature a{Type::none, Type::i32, false}; + StackSignature b{{Type::f32, Type::i32}, Type::none, true}; + assert(a.composes(b)); + assert(a + b == StackSignature(Type::f32, Type::none, true)); + } + { + StackSignature a{Type::none, {Type::f32, Type::i32}, false}; + StackSignature b{Type::i32, Type::none, true}; + assert(a.composes(b)); + assert(a + b == (StackSignature{Type::none, Type::none, true})); + } + { + StackSignature a{Type::none, Type::f32, false}; + StackSignature b{{Type::f32, Type::i32}, Type::none, true}; + assert(!a.composes(b)); + } + { + StackSignature a{Type::none, {Type::f32, Type::i32}, false}; + StackSignature b{Type::f32, Type::none, true}; + assert(!a.composes(b)); + } + // Both unreachable + { + StackSignature a{Type::none, {Type::f32, Type::i32}, true}; + StackSignature b{{Type::f32, Type::i32}, Type::none, true}; + assert(a.composes(b)); + assert(a + b == (StackSignature{Type::none, Type::none, true})); + } + { + StackSignature a{Type::none, Type::i32, true}; + StackSignature b{{Type::f32, Type::i32}, Type::none, true}; + assert(a.composes(b)); + assert(a + b == StackSignature(Type::none, Type::none, true)); + } + { + StackSignature a{Type::none, {Type::f32, Type::i32}, true}; + StackSignature b{Type::i32, Type::none, true}; + assert(a.composes(b)); + assert(a + b == (StackSignature{Type::none, Type::none, true})); + } + { + StackSignature a{Type::none, Type::f32, true}; + StackSignature b{{Type::f32, Type::i32}, Type::none, true}; + assert(!a.composes(b)); + } + { + StackSignature a{Type::none, {Type::f32, Type::i32}, true}; + StackSignature b{Type::f32, Type::none, true}; + assert(!a.composes(b)); + } +} + +void test_signature_satisfaction() { + std::cout << ";; Test stack signature satisfaction\n"; + // No unreachable + { + StackSignature a{Type::i32, Type::f32, false}; + Signature b(Type::i32, Type::f32); + assert(a.satisfies(b)); + } + { + StackSignature a{Type::i32, Type::f32, false}; + Signature b({Type::i64, Type::i32}, {Type::i64, Type::f32}); + assert(a.satisfies(b)); + } + { + StackSignature a{Type::i32, Type::f32, false}; + Signature b({Type::i64, Type::i32}, {Type::i64, Type::i64, Type::f32}); + assert(!a.satisfies(b)); + } + { + StackSignature a{Type::i32, Type::f32, false}; + Signature b({Type::i64, Type::i32}, {Type::f64, Type::f32}); + assert(!a.satisfies(b)); + } + { + StackSignature a{Type::i32, Type::f32, false}; + Signature b(Type::none, Type::f32); + assert(!a.satisfies(b)); + } + { + StackSignature a{Type::i32, Type::f32, false}; + Signature b(Type::i32, Type::none); + assert(!a.satisfies(b)); + } + { + StackSignature a{Type::i32, Type::f32, false}; + Signature b(Type::f32, Type::i32); + assert(!a.satisfies(b)); + } + // With unreachable + { + StackSignature a{Type::i32, Type::f32, true}; + Signature b(Type::i32, Type::f32); + assert(a.satisfies(b)); + } + { + StackSignature a{Type::i32, Type::f32, true}; + Signature b({Type::i64, Type::i32}, {Type::i64, Type::f32}); + assert(a.satisfies(b)); + } + { + StackSignature a{Type::i32, Type::f32, true}; + Signature b({Type::i64, Type::i32}, {Type::i64, Type::i64, Type::f32}); + assert(a.satisfies(b)); + } + { + StackSignature a{Type::i32, Type::f32, true}; + Signature b({Type::i64, Type::i32}, {Type::f64, Type::f32}); + assert(a.satisfies(b)); + } + { + StackSignature a{Type::i32, Type::f32, true}; + Signature b(Type::none, Type::f32); + assert(!a.satisfies(b)); + } + { + StackSignature a{Type::i32, Type::f32, true}; + Signature b(Type::i32, Type::none); + assert(!a.satisfies(b)); + } + { + StackSignature a{Type::i32, Type::f32, true}; + Signature b(Type::f32, Type::i32); + assert(!a.satisfies(b)); + } +} + +void test_stack_flow() { + std::cout << ";; Test stack flow\n"; + { + // Simple case: + // foo + // │i32 + // bar + // │f32 + // end + auto* foo = builder.makeCall("foo", {}, Type::i32); + auto* bar = + builder.makeCall("bar", {builder.makePop(Type::i32)}, Type::f32); + auto* block = builder.makeBlock({foo, bar}, Type::f32); + StackFlow flow(block); + + auto fooSrcs = flow.srcs.find(foo); + assert(fooSrcs != flow.srcs.end()); + assert(fooSrcs->second.size() == 0); + + auto fooDests = flow.dests.find(foo); + assert(fooDests != flow.dests.end()); + assert(fooDests->second.size() == 1); + assert(fooDests->second[0] == + (StackFlow::Location{bar, 0, Type::i32, false})); + + auto barSrcs = flow.srcs.find(bar); + assert(barSrcs != flow.dests.end()); + assert(barSrcs->second.size() == 1); + assert(barSrcs->second[0] == + (StackFlow::Location{foo, 0, Type::i32, false})); + + auto barDests = flow.dests.find(bar); + assert(barDests != flow.dests.end()); + assert(barDests->second.size() == 1); + assert(barDests->second[0] == + (StackFlow::Location{block, 0, Type::f32, false})); + + auto blockSrcs = flow.srcs.find(block); + assert(blockSrcs != flow.srcs.end()); + assert(blockSrcs->second.size() == 1); + assert(blockSrcs->second[0] == + (StackFlow::Location{bar, 0, Type::f32, false})); + } + { + // Interesting case: + // foo + // ├─────┬─────┐ + // │i32 │f32 │i64 + // │ │ bar + // │ │ │f64 + // │ baz╶───┘ + // │ ├─────┐ + // ╵ ╵i64 │f32 + // ret╶─────────┘ + // ╷ ╷ ╷ + // │i64 │f64 │i32 + // │ quux╶──┘ + // end + auto* foo = builder.makeCall("foo", {}, {Type::i32, Type::f32, Type::i64}); + auto* bar = + builder.makeCall("bar", {builder.makePop(Type::i64)}, Type::f64); + auto* baz = + builder.makeCall("baz", + {builder.makePop(Type::f32), builder.makePop(Type::f64)}, + {Type::i64, Type::f32}); + auto* ret = builder.makeReturn(builder.makePop(Type::f32)); + auto* quux = + builder.makeCall("quux", + {builder.makePop(Type::f64), builder.makePop(Type::i32)}, + Type::none); + auto* block = builder.makeBlock({foo, bar, baz, ret, quux}, Type::i64); + StackFlow flow(block); + + assert(flow.srcs.find(foo)->second.size() == 0); + + const auto& fooDests = flow.dests[foo]; + assert(fooDests.size() == 3); + assert(fooDests[0] == (StackFlow::Location{ret, 0, Type::i32, true})); + assert(fooDests[1] == (StackFlow::Location{baz, 0, Type::f32, false})); + assert(fooDests[2] == (StackFlow::Location{bar, 0, Type::i64, false})); + + const auto& barSrcs = flow.srcs[bar]; + assert(barSrcs.size() == 1); + assert(barSrcs[0] == (StackFlow::Location{foo, 2, Type::i64, false})); + + const auto& barDests = flow.dests[bar]; + assert(barDests.size() == 1); + assert(barDests[0] == (StackFlow::Location{baz, 1, Type::f64, false})); + + const auto& bazSrcs = flow.srcs[baz]; + assert(bazSrcs.size() == 2); + assert(bazSrcs[0] == (StackFlow::Location{foo, 1, Type::f32, false})); + assert(bazSrcs[1] == (StackFlow::Location{bar, 0, Type::f64, false})); + + const auto& bazDests = flow.dests[baz]; + assert(bazDests.size() == 2); + assert(bazDests[0] == (StackFlow::Location{ret, 1, Type::i64, true})); + assert(bazDests[1] == (StackFlow::Location{ret, 2, Type::f32, false})); + + const auto& retSrcs = flow.srcs[ret]; + assert(retSrcs.size() == 3); + assert(retSrcs[0] == (StackFlow::Location{foo, 0, Type::i32, false})); + assert(retSrcs[1] == (StackFlow::Location{baz, 0, Type::i64, false})); + assert(retSrcs[2] == (StackFlow::Location{baz, 1, Type::f32, false})); + + const auto& retDests = flow.dests[ret]; + assert(retDests.size() == 3); + assert(retDests[0] == (StackFlow::Location{block, 0, Type::i64, false})); + assert(retDests[1] == (StackFlow::Location{quux, 0, Type::f64, false})); + assert(retDests[2] == (StackFlow::Location{quux, 1, Type::i32, false})); + + const auto& quuxSrcs = flow.srcs[quux]; + assert(quuxSrcs.size() == 2); + assert(quuxSrcs[0] == (StackFlow::Location{ret, 1, Type::f64, true})); + assert(quuxSrcs[1] == (StackFlow::Location{ret, 2, Type::i32, true})); + + const auto& quuxDests = flow.dests[quux]; + assert(quuxDests.size() == 0); + + const auto& blockSrcs = flow.srcs[block]; + assert(blockSrcs.size() == 1); + assert(blockSrcs[0] == (StackFlow::Location{ret, 0, Type::i64, true})); + + assert(flow.getSignature(foo) == StackSignature(foo)); + assert(flow.getSignature(bar) == StackSignature(bar)); + assert(flow.getSignature(baz) == StackSignature(baz)); + assert(flow.getSignature(ret) == + (StackSignature{{Type::i32, Type::i64, Type::f32}, + {Type::i64, Type::f64, Type::i32}, + true})); + assert(flow.getSignature(quux) == StackSignature(quux)); + } +} + +int main() { + test_remove_nops(); + test_stack_signatures(); + test_signature_composition(); + test_signature_satisfaction(); + test_stack_flow(); +} diff -Nru binaryen-91/test/example/stack-utils.txt binaryen-99/test/example/stack-utils.txt --- binaryen-91/test/example/stack-utils.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/example/stack-utils.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,17 @@ +;; Test removeNops +(block (result i32 i64) + (nop) + (i32.const 0) + (nop) + (i64.const 0) + (nop) + (nop) +) +(block (result i32 i64) + (i32.const 0) + (i64.const 0) +) +;; Test stack signatures +;; Test stack signature composition +;; Test stack signature satisfaction +;; Test stack flow diff -Nru binaryen-91/test/example/type-builder.cpp binaryen-99/test/example/type-builder.cpp --- binaryen-91/test/example/type-builder.cpp 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/example/type-builder.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,142 @@ +#include +#include + +#include "wasm-type.h" + +using namespace wasm; + +// Construct Signature, Struct, and Array heap types using undefined types. +void test_builder() { + std::cout << ";; Test TypeBuilder\n"; + + // (type $sig (func (param (ref $struct)) (result (ref $array) i32))) + // (type $struct (struct (field (ref null $array) (mut rtt 0 $array)))) + // (type $array (array (mut externref))) + + TypeBuilder builder(3); + + Type refSig = builder.getTempRefType(0, NonNullable); + Type refStruct = builder.getTempRefType(1, NonNullable); + Type refArray = builder.getTempRefType(2, NonNullable); + Type refNullArray = builder.getTempRefType(2, Nullable); + Type rttArray = builder.getTempRttType(2, 0); + Type refNullExt(HeapType::ext, Nullable); + + Signature sig(refStruct, builder.getTempTupleType({refArray, Type::i32})); + Struct struct_({Field(refNullArray, Immutable), Field(rttArray, Mutable)}); + Array array(Field(refNullExt, Mutable)); + + std::cout << "Before setting heap types:\n"; + std::cout << "(ref $sig) => " << refSig << "\n"; + std::cout << "(ref $struct) => " << refStruct << "\n"; + std::cout << "(ref $array) => " << refArray << "\n"; + std::cout << "(ref null $array) => " << refNullArray << "\n"; + std::cout << "(rtt 0 $array) => " << rttArray << "\n\n"; + + builder.setHeapType(0, sig); + builder.setHeapType(1, struct_); + builder.setHeapType(2, array); + + std::cout << "After setting heap types:\n"; + std::cout << "(ref $sig) => " << refSig << "\n"; + std::cout << "(ref $struct) => " << refStruct << "\n"; + std::cout << "(ref $array) => " << refArray << "\n"; + std::cout << "(ref null $array) => " << refNullArray << "\n"; + std::cout << "(rtt 0 $array) => " << rttArray << "\n\n"; + + std::vector built = builder.build(); + + Type newRefSig = Type(built[0], NonNullable); + Type newRefStruct = Type(built[1], NonNullable); + Type newRefArray = Type(built[2], NonNullable); + Type newRefNullArray = Type(built[2], Nullable); + Type newRttArray = Type(Rtt(0, built[2])); + + assert(refSig != newRefSig); + assert(refStruct != newRefStruct); + assert(refArray != newRefArray); + assert(refNullArray != newRefNullArray); + assert(rttArray != newRttArray); + + std::cout << "After building types:\n"; + std::cout << "(ref $sig) => " << newRefSig << "\n"; + std::cout << "(ref $struct) => " << newRefStruct << "\n"; + std::cout << "(ref $array) => " << newRefArray << "\n"; + std::cout << "(ref null $array) => " << newRefNullArray << "\n"; + std::cout << "(rtt 0 $array) => " << newRttArray << "\n\n"; +} + +// Check that the builder works when there are duplicate definitions +void test_canonicalization() { + std::cout << ";; Test canonicalization\n"; + + // (type $struct (struct (field (ref null $sig)))) + // (type $sig (func)) + HeapType sig = Signature(Type::none, Type::none); + HeapType struct_ = Struct({Field(Type(sig, Nullable), Immutable)}); + + TypeBuilder builder(4); + + Type tempSigRef1 = builder.getTempRefType(2, Nullable); + Type tempSigRef2 = builder.getTempRefType(3, Nullable); + + assert(tempSigRef1 != tempSigRef2); + assert(tempSigRef1 != Type(sig, Nullable)); + assert(tempSigRef2 != Type(sig, Nullable)); + + builder.setHeapType(0, Struct({Field(tempSigRef1, Immutable)})); + builder.setHeapType(1, Struct({Field(tempSigRef2, Immutable)})); + builder.setHeapType(2, Signature(Type::none, Type::none)); + builder.setHeapType(3, Signature(Type::none, Type::none)); + + std::vector built = builder.build(); + + assert(built[0] == struct_); + assert(built[1] == struct_); + assert(built[2] == sig); + assert(built[3] == sig); +} + +void test_recursive() { + std::cout << ";; Test recursive types\n"; + + { + // Trivial recursion + TypeBuilder builder(1); + Type temp = builder.getTempRefType(0, Nullable); + builder.setHeapType(0, Signature(Type::none, temp)); + // std::vector built = builder.build(); + } + + { + // Mutual recursion + TypeBuilder builder(2); + Type temp0 = builder.getTempRefType(0, Nullable); + Type temp1 = builder.getTempRefType(1, Nullable); + builder.setHeapType(0, Signature(Type::none, temp1)); + builder.setHeapType(1, Signature(Type::none, temp0)); + // std::vector built = builder.build(); + } + + { + // A longer chain of recursion + TypeBuilder builder(5); + Type temp0 = builder.getTempRefType(0, Nullable); + Type temp1 = builder.getTempRefType(1, Nullable); + Type temp2 = builder.getTempRefType(2, Nullable); + Type temp3 = builder.getTempRefType(3, Nullable); + Type temp4 = builder.getTempRefType(4, Nullable); + builder.setHeapType(0, Signature(Type::none, temp1)); + builder.setHeapType(1, Signature(Type::none, temp2)); + builder.setHeapType(2, Signature(Type::none, temp3)); + builder.setHeapType(3, Signature(Type::none, temp4)); + builder.setHeapType(4, Signature(Type::none, temp0)); + // std::vector built = builder.build(); + } +} + +int main() { + test_builder(); + test_canonicalization(); + test_recursive(); +} diff -Nru binaryen-91/test/example/type-builder.txt binaryen-99/test/example/type-builder.txt --- binaryen-91/test/example/type-builder.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/example/type-builder.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,24 @@ +;; Test TypeBuilder +Before setting heap types: +(ref $sig) => (ref (func)) +(ref $struct) => (ref (func)) +(ref $array) => (ref (func)) +(ref null $array) => (ref null (func)) +(rtt 0 $array) => (rtt 0 (func)) + +After setting heap types: +(ref $sig) => (ref (func (param (ref (struct (field (ref null (array (mut externref))) (mut (rtt 0 (array (mut externref)))))))) (result (ref (array (mut externref))) i32))) +(ref $struct) => (ref (struct (field (ref null (array (mut externref))) (mut (rtt 0 (array (mut externref))))))) +(ref $array) => (ref (array (mut externref))) +(ref null $array) => (ref null (array (mut externref))) +(rtt 0 $array) => (rtt 0 (array (mut externref))) + +After building types: +(ref $sig) => (ref (func (param (ref (struct (field (ref null (array (mut externref))) (mut (rtt 0 (array (mut externref)))))))) (result (ref (array (mut externref))) i32))) +(ref $struct) => (ref (struct (field (ref null (array (mut externref))) (mut (rtt 0 (array (mut externref))))))) +(ref $array) => (ref (array (mut externref))) +(ref null $array) => (ref null (array (mut externref))) +(rtt 0 $array) => (rtt 0 (array (mut externref))) + +;; Test canonicalization +;; Test recursive types diff -Nru binaryen-91/test/example/typeinfo.cpp binaryen-99/test/example/typeinfo.cpp --- binaryen-91/test/example/typeinfo.cpp 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/example/typeinfo.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,354 @@ +#include +#include + +#include "wasm-type.h" + +using namespace wasm; + +void test_compound() { + { + HeapType func(HeapType::func); + assert(Type(func, Nullable).getID() == Type::funcref); + assert(Type(func, NonNullable).getID() == Type(func, NonNullable).getID()); + assert(Type(func, NonNullable).getID() != Type(func, Nullable).getID()); + HeapType sameFunc(HeapType::func); + assert(Type(func, NonNullable).getID() == + Type(sameFunc, NonNullable).getID()); + + HeapType extern_(HeapType::ext); + assert(Type(extern_, Nullable).getID() == Type::externref); + assert(Type(extern_, NonNullable).getID() == + Type(extern_, NonNullable).getID()); + assert(Type(extern_, NonNullable).getID() != + Type(extern_, Nullable).getID()); + HeapType sameExtern(HeapType::ext); + assert(Type(extern_, NonNullable).getID() == + Type(sameExtern, NonNullable).getID()); + + HeapType exn(HeapType::exn); + assert(Type(exn, Nullable).getID() == Type::exnref); + assert(Type(exn, NonNullable).getID() == Type(exn, NonNullable).getID()); + assert(Type(exn, NonNullable).getID() != Type(exn, Nullable).getID()); + HeapType sameExn(HeapType::exn); + assert(Type(exn, NonNullable).getID() == + Type(sameExn, NonNullable).getID()); + + HeapType any(HeapType::any); + assert(Type(any, Nullable).getID() == Type::anyref); + assert(Type(any, NonNullable).getID() == Type(any, NonNullable).getID()); + assert(Type(any, NonNullable).getID() != Type(any, Nullable).getID()); + HeapType sameAny(HeapType::any); + assert(Type(any, NonNullable).getID() == + Type(sameAny, NonNullable).getID()); + + HeapType eq(HeapType::eq); + // assert(Type(eq, Nullable).getID() == Type::eqref); + assert(Type(eq, NonNullable).getID() == Type(eq, NonNullable).getID()); + assert(Type(eq, NonNullable).getID() != Type(eq, Nullable).getID()); + HeapType sameEq(HeapType::eq); + assert(Type(eq, NonNullable).getID() == Type(sameEq, NonNullable).getID()); + + HeapType i31(HeapType::i31); + // assert(Type(i31, NonNullable).getID() == Type::i31ref); + assert(Type(i31, NonNullable).getID() == Type(i31, NonNullable).getID()); + assert(Type(i31, NonNullable).getID() != Type(i31, Nullable).getID()); + HeapType sameI31(HeapType::i31); + assert(Type(i31, NonNullable).getID() == + Type(sameI31, NonNullable).getID()); + } + { + Signature signature(Type::i32, Type::none); + assert(Type(signature, NonNullable).getID() == + Type(signature, NonNullable).getID()); + assert(Type(signature, NonNullable).getID() != + Type(signature, Nullable).getID()); + + Signature sameSignature(Type::i32, Type::none); + assert(Type(signature, NonNullable).getID() == + Type(sameSignature, NonNullable).getID()); + + Signature otherSignature(Type::f64, Type::none); + assert(Type(signature, NonNullable).getID() != + Type(otherSignature, NonNullable).getID()); + } + { + Struct struct_({}); + assert(Type(struct_, NonNullable).getID() == + Type(struct_, NonNullable).getID()); + assert(Type(struct_, NonNullable).getID() != + Type(struct_, Nullable).getID()); + + Struct sameStruct({}); + assert(Type(struct_, NonNullable).getID() == + Type(sameStruct, NonNullable).getID()); + + Struct otherStruct({{Type::i32, Immutable}}); + assert(Type(struct_, NonNullable).getID() != + Type(otherStruct, NonNullable).getID()); + } + { + Array array({Type::i32, Immutable}); + assert(Type(array, NonNullable).getID() == + Type(array, NonNullable).getID()); + assert(Type(array, NonNullable).getID() != Type(array, Nullable).getID()); + + Array sameArray({Type::i32, Immutable}); + assert(Type(array, NonNullable).getID() == + Type(sameArray, NonNullable).getID()); + + Array otherArray({Type::f64, Mutable}); + assert(Type(array, NonNullable).getID() != + Type(otherArray, NonNullable).getID()); + } + { + Tuple singleTuple({Type::i32}); + assert(Type(singleTuple).getID() == Type::i32); + + Tuple tuple({Type::i32, Type::f64}); + assert(Type(tuple).getID() == Type(tuple).getID()); + + Tuple sameTuple({Type::i32, Type::f64}); + assert(Type(tuple).getID() == Type(sameTuple).getID()); + + Tuple otherTuple({Type::f64, Type::externref}); + assert(Type(tuple).getID() != Type(otherTuple).getID()); + } + { + Rtt rtt(0, HeapType::func); + assert(Type(rtt).getID() == Type(rtt).getID()); + + Rtt sameRtt(0, HeapType::func); + assert(rtt == sameRtt); + assert(Type(rtt).getID() == Type(sameRtt).getID()); + + Rtt otherDepthRtt(1, HeapType::func); + assert(rtt != otherDepthRtt); + assert(Type(rtt).getID() != Type(otherDepthRtt).getID()); + + Rtt otherHeapTypeRtt(0, HeapType::any); + assert(rtt != otherHeapTypeRtt); + assert(Type(rtt).getID() != Type(otherHeapTypeRtt).getID()); + + Rtt structRtt(0, Struct({})); + assert(Type(structRtt).getID() == Type(structRtt).getID()); + + Rtt sameStructRtt(0, Struct({})); + assert(structRtt == sameStructRtt); + assert(Type(structRtt).getID() == Type(sameStructRtt).getID()); + + Rtt otherStructRtt(0, Struct({{Type::i32, Immutable}})); + assert(structRtt != otherStructRtt); + assert(Type(structRtt).getID() != Type(otherStructRtt).getID()); + } +} + +void test_printing() { + { + std::cout << ";; Heap types\n"; + std::cout << HeapType(HeapType::func) << "\n"; + std::cout << Type(HeapType::func, Nullable) << "\n"; + std::cout << Type(HeapType::func, NonNullable) << "\n"; + std::cout << HeapType(HeapType::ext) << "\n"; + std::cout << Type(HeapType::ext, Nullable) << "\n"; + std::cout << Type(HeapType::ext, NonNullable) << "\n"; + std::cout << HeapType(HeapType::any) << "\n"; + std::cout << Type(HeapType::any, Nullable) << "\n"; + std::cout << Type(HeapType::any, NonNullable) << "\n"; + std::cout << HeapType(HeapType::eq) << "\n"; + std::cout << Type(HeapType::eq, Nullable) << "\n"; + std::cout << Type(HeapType::eq, NonNullable) << "\n"; + std::cout << HeapType(HeapType::i31) << "\n"; + std::cout << Type(HeapType::i31, Nullable) << "\n"; + std::cout << Type(HeapType::i31, NonNullable) << "\n"; + std::cout << HeapType(HeapType::exn) << "\n"; + std::cout << Type(HeapType::exn, Nullable) << "\n"; + std::cout << Type(HeapType::exn, NonNullable) << "\n"; + std::cout << HeapType(Signature(Type::none, Type::none)) << "\n"; + std::cout << HeapType(Struct({})) << "\n"; + std::cout << HeapType(Array({Type::i32, Immutable})) << "\n"; + } + { + std::cout << "\n;; Signature\n"; + Signature emptySignature(Type::none, Type::none); + std::cout << emptySignature << "\n"; + std::cout << Type(emptySignature, NonNullable) << "\n"; + std::cout << Type(emptySignature, Nullable) << "\n"; + Signature signature(Type::i32, Type::f64); + std::cout << signature << "\n"; + std::cout << Type(signature, NonNullable) << "\n"; + std::cout << Type(signature, Nullable) << "\n"; + } + { + std::cout << "\n;; Struct\n"; + Struct emptyStruct({}); + std::cout << emptyStruct << "\n"; + std::cout << Type(emptyStruct, NonNullable) << "\n"; + std::cout << Type(emptyStruct, Nullable) << "\n"; + Struct struct_({ + {Type::i32, Immutable}, + {Type::i64, Immutable}, + {Type::f32, Mutable}, + {Type::f64, Mutable}, + {Type::externref, Immutable}, + }); + std::cout << struct_ << "\n"; + std::cout << Type(struct_, NonNullable) << "\n"; + std::cout << Type(struct_, Nullable) << "\n"; + } + { + std::cout << "\n;; Array\n"; + Array array({Type::i32, Immutable}); + std::cout << array << "\n"; + std::cout << Type(array, NonNullable) << "\n"; + std::cout << Type(array, Nullable) << "\n"; + Array arrayMut({Type::externref, Mutable}); + std::cout << arrayMut << "\n"; + std::cout << Type(arrayMut, NonNullable) << "\n"; + std::cout << Type(arrayMut, Nullable) << "\n"; + } + { + std::cout << "\n;; Tuple\n"; + Tuple emptyTuple({}); + std::cout << emptyTuple << "\n"; + std::cout << Type(emptyTuple) << "\n"; + Tuple tuple({ + Type::i32, + Type::f64, + Type::externref, + }); + std::cout << tuple << "\n"; + std::cout << Type(tuple) << "\n"; + } + { + std::cout << "\n;; Rtt\n"; + std::cout << Rtt(0, HeapType::func) << "\n"; + std::cout << Type(Rtt(0, HeapType::func)) << "\n"; + std::cout << Rtt(1, HeapType::ext) << "\n"; + std::cout << Type(Rtt(1, HeapType::ext)) << "\n"; + std::cout << Rtt(2, HeapType::any) << "\n"; + std::cout << Type(Rtt(2, HeapType::any)) << "\n"; + std::cout << Rtt(3, HeapType::eq) << "\n"; + std::cout << Type(Rtt(3, HeapType::eq)) << "\n"; + std::cout << Rtt(4, HeapType::i31) << "\n"; + std::cout << Type(Rtt(4, HeapType::i31)) << "\n"; + std::cout << Rtt(5, HeapType::exn) << "\n"; + std::cout << Type(Rtt(5, HeapType::exn)) << "\n"; + Rtt signatureRtt(6, Signature(Type::none, Type::none)); + std::cout << signatureRtt << "\n"; + std::cout << Type(signatureRtt) << "\n"; + Rtt structRtt(7, Struct({})); + std::cout << structRtt << "\n"; + std::cout << Type(structRtt) << "\n"; + Rtt arrayRtt(8, Array({Type::i32, Immutable})); + std::cout << arrayRtt << "\n"; + std::cout << Type(arrayRtt) << "\n"; + } + { + std::cout << "\n;; Signature of references (param/result)\n"; + Signature signature(Type(Struct({}), Nullable), + Type(Array({Type::i32, Mutable}), NonNullable)); + std::cout << signature << "\n"; + } + { + std::cout << "\n;; Signature of references (params/results)\n"; + Signature signature(Type({ + Type(Struct({}), Nullable), + Type(Array({Type::i32, Mutable}), NonNullable), + }), + Type({ + Type(Struct({}), NonNullable), + Type(Array({Type::i32, Immutable}), Nullable), + })); + std::cout << signature << "\n"; + } + { + std::cout << "\n;; Struct of references\n"; + Struct structOfSignature({ + {Type(Signature(Type::none, Type::none), NonNullable), Immutable}, + {Type(Signature(Type::none, Type::none), NonNullable), Mutable}, + {Type(Signature(Type::none, Type::none), Nullable), Immutable}, + {Type(Signature(Type::none, Type::none), Nullable), Mutable}, + }); + std::cout << structOfSignature << "\n"; + std::cout << Type(structOfSignature, NonNullable) << "\n"; + std::cout << Type(structOfSignature, Nullable) << "\n"; + Struct structOfStruct({ + {Type(Struct({}), NonNullable), Immutable}, + {Type(Struct({}), NonNullable), Mutable}, + {Type(Struct({}), Nullable), Immutable}, + {Type(Struct({}), Nullable), Mutable}, + }); + std::cout << structOfStruct << "\n"; + std::cout << Type(structOfStruct, NonNullable) << "\n"; + std::cout << Type(structOfStruct, Nullable) << "\n"; + Struct structOfArray({ + {Type(Array({Type::i32, Immutable}), NonNullable), Immutable}, + {Type(Array({Type::i32, Immutable}), NonNullable), Mutable}, + {Type(Array({Type::i32, Immutable}), Nullable), Immutable}, + {Type(Array({Type::i32, Immutable}), Nullable), Mutable}, + }); + std::cout << structOfArray << "\n"; + std::cout << Type(structOfArray, NonNullable) << "\n"; + std::cout << Type(structOfArray, Nullable) << "\n"; + Struct structOfEverything({ + {Type::i32, Mutable}, + {Type(Signature(Type::none, Type::none), Nullable), Mutable}, + {Type(Struct({}), Nullable), Mutable}, + {Type(Array({Type::i32, Mutable}), Nullable), Mutable}, + }); + std::cout << structOfEverything << "\n"; + std::cout << Type(structOfEverything, NonNullable) << "\n"; + std::cout << Type(structOfEverything, Nullable) << "\n"; + } + { + std::cout << "\n;; Array of references\n"; + Array arrayOfSignature( + {Type(Signature(Type::none, Type::none), Nullable), Immutable}); + std::cout << arrayOfSignature << "\n"; + std::cout << Type(arrayOfSignature, NonNullable) << "\n"; + std::cout << Type(arrayOfSignature, Nullable) << "\n"; + Array arrayOfStruct({Type(Struct({}), Nullable), Mutable}); + std::cout << arrayOfStruct << "\n"; + std::cout << Type(arrayOfStruct, NonNullable) << "\n"; + std::cout << Type(arrayOfStruct, Nullable) << "\n"; + Array arrayOfArray( + {Type(Array({Type::i32, Immutable}), Nullable), Immutable}); + std::cout << arrayOfArray << "\n"; + std::cout << Type(arrayOfArray, NonNullable) << "\n"; + std::cout << Type(arrayOfArray, Nullable) << "\n"; + } + { + std::cout << "\n;; Tuple of references\n"; + Tuple tuple({ + Type(Signature(Type::none, Type::none), NonNullable), + Type(Signature(Type::none, Type::none), Nullable), + Type(Struct({}), NonNullable), + Type(Struct({}), Nullable), + Type(Array({Type::i32, Immutable}), NonNullable), + Type(Array({Type::i32, Immutable}), Nullable), + }); + std::cout << tuple << "\n"; + std::cout << Type(tuple) << "\n"; + } + // TODO: Think about recursive types. Currently impossible to construct. + { + std::cout << "\n;; Recursive (not really)\n"; + Signature signatureSignature(Type::none, Type::none); + signatureSignature.params = Type(signatureSignature, NonNullable); + // ^ copies + std::cout << signatureSignature << "\n"; + std::cout << Type(signatureSignature, NonNullable) << "\n"; + Signature signatureArraySignature(Type::none, Type::none); + signatureArraySignature.params = + Type(Array({Type(signatureArraySignature, NonNullable), Immutable}), + NonNullable); + // ^ copies + std::cout << signatureArraySignature << "\n"; + std::cout << Type(signatureArraySignature, NonNullable) << "\n"; + } +} + +int main() { + test_compound(); + test_printing(); +} diff -Nru binaryen-91/test/example/typeinfo.txt binaryen-99/test/example/typeinfo.txt --- binaryen-91/test/example/typeinfo.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/example/typeinfo.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,113 @@ +;; Heap types +func +funcref +(ref func) +extern +externref +(ref extern) +any +anyref +(ref any) +eq +eqref +(ref eq) +i31 +(ref null i31) +i31ref +exn +exnref +(ref exn) +(func) +(struct) +(array i32) + +;; Signature +(func) +(ref (func)) +(ref null (func)) +(func (param i32) (result f64)) +(ref (func (param i32) (result f64))) +(ref null (func (param i32) (result f64))) + +;; Struct +(struct) +(ref (struct)) +(ref null (struct)) +(struct (field i32 i64 (mut f32) (mut f64) externref)) +(ref (struct (field i32 i64 (mut f32) (mut f64) externref))) +(ref null (struct (field i32 i64 (mut f32) (mut f64) externref))) + +;; Array +(array i32) +(ref (array i32)) +(ref null (array i32)) +(array (mut externref)) +(ref (array (mut externref))) +(ref null (array (mut externref))) + +;; Tuple +() +none +(i32 f64 externref) +(i32 f64 externref) + +;; Rtt +(rtt 0 func) +(rtt 0 func) +(rtt 1 extern) +(rtt 1 extern) +(rtt 2 any) +(rtt 2 any) +(rtt 3 eq) +(rtt 3 eq) +(rtt 4 i31) +(rtt 4 i31) +(rtt 5 exn) +(rtt 5 exn) +(rtt 6 (func)) +(rtt 6 (func)) +(rtt 7 (struct)) +(rtt 7 (struct)) +(rtt 8 (array i32)) +(rtt 8 (array i32)) + +;; Signature of references (param/result) +(func (param (ref null (struct))) (result (ref (array (mut i32))))) + +;; Signature of references (params/results) +(func (param (ref null (struct)) (ref (array (mut i32)))) (result (ref (struct)) (ref null (array i32)))) + +;; Struct of references +(struct (field (ref (func)) (mut (ref (func))) (ref null (func)) (mut (ref null (func))))) +(ref (struct (field (ref (func)) (mut (ref (func))) (ref null (func)) (mut (ref null (func)))))) +(ref null (struct (field (ref (func)) (mut (ref (func))) (ref null (func)) (mut (ref null (func)))))) +(struct (field (ref (struct)) (mut (ref (struct))) (ref null (struct)) (mut (ref null (struct))))) +(ref (struct (field (ref (struct)) (mut (ref (struct))) (ref null (struct)) (mut (ref null (struct)))))) +(ref null (struct (field (ref (struct)) (mut (ref (struct))) (ref null (struct)) (mut (ref null (struct)))))) +(struct (field (ref (array i32)) (mut (ref (array i32))) (ref null (array i32)) (mut (ref null (array i32))))) +(ref (struct (field (ref (array i32)) (mut (ref (array i32))) (ref null (array i32)) (mut (ref null (array i32)))))) +(ref null (struct (field (ref (array i32)) (mut (ref (array i32))) (ref null (array i32)) (mut (ref null (array i32)))))) +(struct (field (mut i32) (mut (ref null (func))) (mut (ref null (struct))) (mut (ref null (array (mut i32)))))) +(ref (struct (field (mut i32) (mut (ref null (func))) (mut (ref null (struct))) (mut (ref null (array (mut i32))))))) +(ref null (struct (field (mut i32) (mut (ref null (func))) (mut (ref null (struct))) (mut (ref null (array (mut i32))))))) + +;; Array of references +(array (ref null (func))) +(ref (array (ref null (func)))) +(ref null (array (ref null (func)))) +(array (mut (ref null (struct)))) +(ref (array (mut (ref null (struct))))) +(ref null (array (mut (ref null (struct))))) +(array (ref null (array i32))) +(ref (array (ref null (array i32)))) +(ref null (array (ref null (array i32)))) + +;; Tuple of references +((ref (func)) (ref null (func)) (ref (struct)) (ref null (struct)) (ref (array i32)) (ref null (array i32))) +((ref (func)) (ref null (func)) (ref (struct)) (ref null (struct)) (ref (array i32)) (ref null (array i32))) + +;; Recursive (not really) +(func (param (ref (func)))) +(ref (func (param (ref (func))))) +(func (param (ref (array (ref (func)))))) +(ref (func (param (ref (array (ref (func))))))) diff -Nru binaryen-91/test/exception-handling.wast binaryen-99/test/exception-handling.wast --- binaryen-91/test/exception-handling.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/exception-handling.wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ (module (event $e0 (attr 0) (param i32)) - (event $e1 (attr 0) (param anyref)) + (event $e1 (attr 0) (param externref)) (func $exnref_test (param $0 exnref) (result exnref) (local.get $0) @@ -11,11 +11,13 @@ (func $eh_test (local $exn exnref) (try - (throw $e0 (i32.const 0)) + (do + (throw $e0 (i32.const 0)) + ) (catch ;; Multi-value is not available yet, so block can't take a value from ;; stack. So this uses locals for now. - (local.set $exn (exnref.pop)) + (local.set $exn (pop exnref)) (drop (block $l0 (result i32) (rethrow @@ -28,7 +30,9 @@ ;; Try with a block label (try $l1 - (br $l1) + (do + (br $l1) + ) (catch (br $l1) ) @@ -36,40 +40,23 @@ ;; Empty try body (try + (do) (catch - (drop (exnref.pop)) + (drop (pop exnref)) ) ) ;; Multiple instructions within try and catch bodies (try - (block + (do (call $foo) (call $bar) ) (catch - (drop (exnref.pop)) + (drop (pop exnref)) (call $foo) (call $bar) ) ) ) - - ;; Test subtype relationship - (func $subtype_test - (try - (catch - (drop (exnref.pop)) - (drop - (block $l0 (result i32) - (rethrow - (br_on_exn $l0 $e0 (ref.null)) - ) - ) - ) - ) - ) - - (throw $e1 (ref.null)) - ) ) diff -Nru binaryen-91/test/exception-handling.wast.fromBinary binaryen-99/test/exception-handling.wast.fromBinary --- binaryen-91/test/exception-handling.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/exception-handling.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,34 +1,36 @@ (module (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) - (type $anyref_=>_none (func (param anyref))) + (type $externref_=>_none (func (param externref))) (type $exnref_=>_exnref (func (param exnref) (result exnref))) (event $event$0 (attr 0) (param i32)) - (event $event$1 (attr 0) (param anyref)) - (func $exnref_test (; 0 ;) (param $0 exnref) (result exnref) + (event $event$1 (attr 0) (param externref)) + (func $exnref_test (param $0 exnref) (result exnref) (local.get $0) ) - (func $foo (; 1 ;) + (func $foo (nop) ) - (func $bar (; 2 ;) + (func $bar (nop) ) - (func $eh_test (; 3 ;) - (local $0 exnref) + (func $eh_test + (local $exn exnref) (try - (throw $event$0 - (i32.const 0) + (do + (throw $event$0 + (i32.const 0) + ) ) (catch - (local.set $0 - (exnref.pop) + (local.set $exn + (pop exnref) ) (drop (block $label$3 (result i32) (rethrow (br_on_exn $label$3 $event$0 - (local.get $0) + (local.get $exn) ) ) ) @@ -37,58 +39,40 @@ ) (block $label$4 (try - (br $label$4) + (do + (br $label$4) + ) (catch (drop - (exnref.pop) + (pop exnref) ) (br $label$4) ) ) ) (try - (nop) + (do + (nop) + ) (catch (drop - (exnref.pop) + (pop exnref) ) ) ) (try - (block + (do (call $foo) (call $bar) ) (catch (drop - (exnref.pop) + (pop exnref) ) (call $foo) (call $bar) ) ) ) - (func $subtype_test (; 4 ;) - (try - (nop) - (catch - (drop - (exnref.pop) - ) - (drop - (block $label$3 (result i32) - (rethrow - (br_on_exn $label$3 $event$0 - (ref.null) - ) - ) - ) - ) - ) - ) - (throw $event$1 - (ref.null) - ) - ) ) diff -Nru binaryen-91/test/exception-handling.wast.fromBinary.noDebugInfo binaryen-99/test/exception-handling.wast.fromBinary.noDebugInfo --- binaryen-91/test/exception-handling.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/exception-handling.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -1,28 +1,30 @@ (module (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) - (type $anyref_=>_none (func (param anyref))) + (type $externref_=>_none (func (param externref))) (type $exnref_=>_exnref (func (param exnref) (result exnref))) (event $event$0 (attr 0) (param i32)) - (event $event$1 (attr 0) (param anyref)) - (func $0 (; 0 ;) (param $0 exnref) (result exnref) + (event $event$1 (attr 0) (param externref)) + (func $0 (param $0 exnref) (result exnref) (local.get $0) ) - (func $1 (; 1 ;) + (func $1 (nop) ) - (func $2 (; 2 ;) + (func $2 (nop) ) - (func $3 (; 3 ;) + (func $3 (local $0 exnref) (try - (throw $event$0 - (i32.const 0) + (do + (throw $event$0 + (i32.const 0) + ) ) (catch (local.set $0 - (exnref.pop) + (pop exnref) ) (drop (block $label$3 (result i32) @@ -37,58 +39,40 @@ ) (block $label$4 (try - (br $label$4) + (do + (br $label$4) + ) (catch (drop - (exnref.pop) + (pop exnref) ) (br $label$4) ) ) ) (try - (nop) + (do + (nop) + ) (catch (drop - (exnref.pop) + (pop exnref) ) ) ) (try - (block + (do (call $1) (call $2) ) (catch (drop - (exnref.pop) + (pop exnref) ) (call $1) (call $2) ) ) ) - (func $4 (; 4 ;) - (try - (nop) - (catch - (drop - (exnref.pop) - ) - (drop - (block $label$3 (result i32) - (rethrow - (br_on_exn $label$3 $event$0 - (ref.null) - ) - ) - ) - ) - ) - ) - (throw $event$1 - (ref.null) - ) - ) ) diff -Nru binaryen-91/test/exception-handling.wast.from-wast binaryen-99/test/exception-handling.wast.from-wast --- binaryen-91/test/exception-handling.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/exception-handling.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,28 +1,30 @@ (module (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) - (type $anyref_=>_none (func (param anyref))) + (type $externref_=>_none (func (param externref))) (type $exnref_=>_exnref (func (param exnref) (result exnref))) (event $e0 (attr 0) (param i32)) - (event $e1 (attr 0) (param anyref)) - (func $exnref_test (; 0 ;) (param $0 exnref) (result exnref) + (event $e1 (attr 0) (param externref)) + (func $exnref_test (param $0 exnref) (result exnref) (local.get $0) ) - (func $foo (; 1 ;) + (func $foo (nop) ) - (func $bar (; 2 ;) + (func $bar (nop) ) - (func $eh_test (; 3 ;) + (func $eh_test (local $exn exnref) (try - (throw $e0 - (i32.const 0) + (do + (throw $e0 + (i32.const 0) + ) ) (catch (local.set $exn - (exnref.pop) + (pop exnref) ) (drop (block $l0 (result i32) @@ -37,54 +39,36 @@ ) (block $l1 (try - (br $l1) + (do + (br $l1) + ) (catch (br $l1) ) ) ) (try - (nop) + (do + (nop) + ) (catch (drop - (exnref.pop) + (pop exnref) ) ) ) (try - (block $block + (do (call $foo) (call $bar) ) (catch (drop - (exnref.pop) + (pop exnref) ) (call $foo) (call $bar) ) ) ) - (func $subtype_test (; 4 ;) - (try - (nop) - (catch - (drop - (exnref.pop) - ) - (drop - (block $l0 (result i32) - (rethrow - (br_on_exn $l0 $e0 - (ref.null) - ) - ) - ) - ) - ) - ) - (throw $e1 - (ref.null) - ) - ) ) diff -Nru binaryen-91/test/export-import.wast.fromBinary binaryen-99/test/export-import.wast.fromBinary --- binaryen-91/test/export-import.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/export-import.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (import "env" "test2" (global $gimport$1 i32)) + (import "env" "test2" (global $test2 i32)) (import "env" "test1" (func $test1)) (export "test1" (func $test1)) - (export "test2" (global $gimport$1)) + (export "test2" (global $test2)) ) diff -Nru binaryen-91/test/export-import.wast.fromBinary.noDebugInfo binaryen-99/test/export-import.wast.fromBinary.noDebugInfo --- binaryen-91/test/export-import.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/export-import.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) - (import "env" "test2" (global $gimport$1 i32)) + (import "env" "test2" (global $gimport$0 i32)) (import "env" "test1" (func $fimport$0)) (export "test1" (func $fimport$0)) - (export "test2" (global $gimport$1)) + (export "test2" (global $gimport$0)) ) diff -Nru binaryen-91/test/extended-names.wast binaryen-99/test/extended-names.wast --- binaryen-91/test/extended-names.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/extended-names.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,6 @@ +(module $foo + (table $t1 1 funcref) + (memory $m1 1 1) + (data $mydata (i32.const 0) "a") + (data $passive_data passive "b") +) diff -Nru binaryen-91/test/extended-names.wast.fromBinary binaryen-99/test/extended-names.wast.fromBinary --- binaryen-91/test/extended-names.wast.fromBinary 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/extended-names.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,7 @@ +(module $foo + (memory $m1 1 1) + (data $mydata (i32.const 0) "a") + (data $passive_data passive "b") + (table $t1 1 funcref) +) + diff -Nru binaryen-91/test/extended-names.wast.fromBinary.noDebugInfo binaryen-99/test/extended-names.wast.fromBinary.noDebugInfo --- binaryen-91/test/extended-names.wast.fromBinary.noDebugInfo 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/extended-names.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,7 @@ +(module + (memory $0 1 1) + (data (i32.const 0) "a") + (data passive "b") + (table $0 1 funcref) +) + diff -Nru binaryen-91/test/extended-names.wast.from-wast binaryen-99/test/extended-names.wast.from-wast --- binaryen-91/test/extended-names.wast.from-wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/extended-names.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,6 @@ +(module $foo + (memory $m1 1 1) + (data $mydata (i32.const 0) "a") + (data $passive_data passive "b") + (table $t1 1 funcref) +) diff -Nru binaryen-91/test/externref.wast.fromBinary binaryen-99/test/externref.wast.fromBinary --- binaryen-91/test/externref.wast.fromBinary 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/externref.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,20 @@ +(module + (type $externref_=>_externref (func (param externref) (result externref))) + (import "env" "test2" (global $gimport$1 externref)) + (import "env" "test1" (func $test1 (param externref) (result externref))) + (memory $0 1 1) + (export "test1" (func $test1)) + (export "test2" (global $gimport$1)) + (func $externref_test (; 1 ;) (param $0 externref) (result externref) + (local $1 externref) + (local.set $1 + (call $test1 + (local.get $0) + ) + ) + (return + (local.get $1) + ) + ) +) + diff -Nru binaryen-91/test/externref.wast.fromBinary.noDebugInfo binaryen-99/test/externref.wast.fromBinary.noDebugInfo --- binaryen-91/test/externref.wast.fromBinary.noDebugInfo 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/externref.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,20 @@ +(module + (type $externref_=>_externref (func (param externref) (result externref))) + (import "env" "test2" (global $gimport$1 externref)) + (import "env" "test1" (func $fimport$0 (param externref) (result externref))) + (memory $0 1 1) + (export "test1" (func $fimport$0)) + (export "test2" (global $gimport$1)) + (func $0 (; 1 ;) (param $0 externref) (result externref) + (local $1 externref) + (local.set $1 + (call $fimport$0 + (local.get $0) + ) + ) + (return + (local.get $1) + ) + ) +) + diff -Nru binaryen-91/test/externref.wast.from-wast binaryen-99/test/externref.wast.from-wast --- binaryen-91/test/externref.wast.from-wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/externref.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,19 @@ +(module + (type $externref_=>_externref (func (param externref) (result externref))) + (import "env" "test2" (global $test2 externref)) + (import "env" "test1" (func $test1 (param externref) (result externref))) + (memory $0 1 1) + (export "test1" (func $test1)) + (export "test2" (global $test2)) + (func $externref_test (; 1 ;) (param $0 externref) (result externref) + (local $1 externref) + (local.set $1 + (call $test1 + (local.get $0) + ) + ) + (return + (local.get $1) + ) + ) +) diff -Nru binaryen-91/test/extra-unreachable.wast binaryen-99/test/extra-unreachable.wast --- binaryen-91/test/extra-unreachable.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/extra-unreachable.wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,5 +1,5 @@ (module - (type $ii (param i32) (result i32)) + (type $ii (func (param i32) (result i32))) (memory (shared 1 1)) (table 0 funcref) (global $g (mut f32) (f32.const 0)) @@ -43,7 +43,9 @@ ;; If a try is unreachable, i.e., both the 'try' and 'catch' bodies are ;; unreachable, we emit an extra unreachable after the try. (try - (unreachable) + (do + (unreachable) + ) (catch (unreachable) ) @@ -84,7 +86,7 @@ (call $foo (unreachable)) ) (global.set $g - (call_indirect (type $ii) (unreachable)) + (call_indirect (type $ii) (unreachable) (unreachable)) ) ;; unary @@ -136,16 +138,16 @@ ;; atomic.wait (global.set $g - (i32.atomic.wait + (memory.atomic.wait32 (unreachable) (i32.const 0) (i64.const 0) ) ) - ;; atomic.notify + ;; memory.atomic.notify (global.set $g - (atomic.notify + (memory.atomic.notify (unreachable) (i32.const 0) ) diff -Nru binaryen-91/test/extra-unreachable.wast.fromBinary binaryen-99/test/extra-unreachable.wast.fromBinary --- binaryen-91/test/extra-unreachable.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/extra-unreachable.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -4,15 +4,15 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (memory $0 (shared 1 1)) (table $0 0 funcref) - (global $global$0 (mut f32) (f32.const 0)) + (global $g (mut f32) (f32.const 0)) (event $event$0 (attr 0) (param i32)) - (func $foo (; 0 ;) (param $0 i32) (result i32) + (func $foo (param $0 i32) (result i32) (i32.const 0) ) - (func $test_function_block (; 1 ;) + (func $test_function_block (unreachable) ) - (func $test (; 2 ;) + (func $test (block $label$1 (unreachable) ) diff -Nru binaryen-91/test/extra-unreachable.wast.fromBinary.noDebugInfo binaryen-99/test/extra-unreachable.wast.fromBinary.noDebugInfo --- binaryen-91/test/extra-unreachable.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/extra-unreachable.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -6,13 +6,13 @@ (table $0 0 funcref) (global $global$0 (mut f32) (f32.const 0)) (event $event$0 (attr 0) (param i32)) - (func $0 (; 0 ;) (param $0 i32) (result i32) + (func $0 (param $0 i32) (result i32) (i32.const 0) ) - (func $1 (; 1 ;) + (func $1 (unreachable) ) - (func $2 (; 2 ;) + (func $2 (block $label$1 (unreachable) ) diff -Nru binaryen-91/test/extra-unreachable.wast.from-wast binaryen-99/test/extra-unreachable.wast.from-wast --- binaryen-91/test/extra-unreachable.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/extra-unreachable.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,21 +1,21 @@ (module (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_=>_none (func (param i32))) (memory $0 (shared 1 1)) (table $0 0 funcref) (global $g (mut f32) (f32.const 0)) (event $e (attr 0) (param i32)) - (func $foo (; 0 ;) (param $0 i32) (result i32) + (func $foo (param $0 i32) (result i32) (i32.const 0) ) - (func $test_function_block (; 1 ;) + (func $test_function_block (block $block (unreachable) (nop) ) ) - (func $test (; 2 ;) + (func $test (block $block (i32.eqz (unreachable) @@ -32,7 +32,9 @@ (unreachable) ) (try - (unreachable) + (do + (unreachable) + ) (catch (unreachable) ) @@ -62,7 +64,8 @@ ) ) (global.set $g - (call_indirect (type $none_=>_none) + (call_indirect (type $i32_=>_i32) + (unreachable) (unreachable) ) ) @@ -108,14 +111,14 @@ ) ) (global.set $g - (i32.atomic.wait + (memory.atomic.wait32 (unreachable) (i32.const 0) (i64.const 0) ) ) (global.set $g - (atomic.notify + (memory.atomic.notify (unreachable) (i32.const 0) ) diff -Nru binaryen-91/test/fib-dbg.wasm.fromBinary binaryen-99/test/fib-dbg.wasm.fromBinary --- binaryen-91/test/fib-dbg.wasm.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/fib-dbg.wasm.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -4,8 +4,8 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) - (import "env" "memory" (memory $9 256 256)) - (import "env" "table" (table $timport$10 0 0 funcref)) + (import "env" "memory" (memory $mimport$0 256 256)) + (import "env" "table" (table $timport$0 0 0 funcref)) (import "env" "DYNAMICTOP_PTR" (global $gimport$0 i32)) (import "env" "tempDoublePtr" (global $gimport$1 i32)) (import "env" "ABORT" (global $gimport$2 i32)) @@ -15,8 +15,8 @@ (import "env" "fb" (global $gimport$6 i32)) (import "global" "NaN" (global $gimport$7 f64)) (import "global" "Infinity" (global $gimport$8 f64)) - (import "env" "memoryBase" (global $gimport$11 i32)) - (import "env" "tableBase" (global $gimport$12 i32)) + (import "env" "memoryBase" (global $gimport$9 i32)) + (import "env" "tableBase" (global $gimport$10 i32)) (global $global$0 (mut i32) (global.get $gimport$0)) (global $global$1 (mut i32) (global.get $gimport$1)) (global $global$2 (mut i32) (global.get $gimport$2)) @@ -48,7 +48,7 @@ (export "stackRestore" (func $stackRestore)) (export "_fib" (func $_fib)) (export "stackAlloc" (func $stackAlloc)) - (func $stackAlloc (; 0 ;) (param $0 i32) (result i32) + (func $stackAlloc (param $0 i32) (result i32) (local $1 i32) (block $label$1 (local.set $1 @@ -74,17 +74,17 @@ ) ) ) - (func $stackSave (; 1 ;) (result i32) + (func $stackSave (result i32) (return (global.get $global$3) ) ) - (func $stackRestore (; 2 ;) (param $0 i32) + (func $stackRestore (param $0 i32) (global.set $global$3 (local.get $0) ) ) - (func $establishStackSpace (; 3 ;) (param $0 i32) (param $1 i32) + (func $establishStackSpace (param $0 i32) (param $1 i32) (block $label$1 (global.set $global$3 (local.get $0) @@ -94,7 +94,7 @@ ) ) ) - (func $setThrew (; 4 ;) (param $0 i32) (param $1 i32) + (func $setThrew (param $0 i32) (param $1 i32) (if (i32.eq (global.get $global$7) @@ -110,7 +110,7 @@ ) ) ) - (func $_fib (; 5 ;) (param $0 i32) (result i32) + (func $_fib (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -210,7 +210,7 @@ ) ) ) - (func $runPostSets (; 6 ;) + (func $runPostSets (local $0 i32) (nop) ) diff -Nru binaryen-91/test/fn_prolog_epilog.debugInfo.wasm.fromBinary binaryen-99/test/fn_prolog_epilog.debugInfo.wasm.fromBinary --- binaryen-91/test/fn_prolog_epilog.debugInfo.wasm.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/fn_prolog_epilog.debugInfo.wasm.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) ;;@ src.cpp:1:1 - (func $0 (; 0 ;) + (func $0 (nop) ;;@ src.cpp:2:1 (block $label$1 diff -Nru binaryen-91/test/fn_prolog_epilog.debugInfo.wast.fromBinary binaryen-99/test/fn_prolog_epilog.debugInfo.wast.fromBinary --- binaryen-91/test/fn_prolog_epilog.debugInfo.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/fn_prolog_epilog.debugInfo.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ (module (type $none_=>_none (func)) - (func $0 (; 0 ;) + (func $0 (nop) (block $label$1 (block $label$2 diff -Nru binaryen-91/test/fn_prolog_epilog.debugInfo.wast.fromBinary.noDebugInfo binaryen-99/test/fn_prolog_epilog.debugInfo.wast.fromBinary.noDebugInfo --- binaryen-91/test/fn_prolog_epilog.debugInfo.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/fn_prolog_epilog.debugInfo.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ (module (type $none_=>_none (func)) - (func $0 (; 0 ;) + (func $0 (nop) (block $label$1 (block $label$2 diff -Nru binaryen-91/test/fn_prolog_epilog.debugInfo.wast.from-wast binaryen-99/test/fn_prolog_epilog.debugInfo.wast.from-wast --- binaryen-91/test/fn_prolog_epilog.debugInfo.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/fn_prolog_epilog.debugInfo.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) ;;@ src.cpp:1:1 - (func $0 (; 0 ;) + (func $0 (nop) ;;@ src.cpp:2:1 (block $l0 diff -Nru binaryen-91/test/gc.wast binaryen-99/test/gc.wast --- binaryen-91/test/gc.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/gc.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,76 @@ +;; A preliminary test for prototype GC types and instructions. +;; TODO: Move subtype tests from reference-types.wast here? +;; TODO: The test assumes that `(i31.new (i32.const N))` is a valid constant +;; initializer for i31ref types globals, which isn't yet specified. + +(module + ;; Test global initializer expressions + (global $global_anyref (mut anyref) (ref.null any)) + (global $global_eqref (mut eqref) (ref.null eq)) + (global $global_i31ref (mut i31ref) (i31.new (i32.const 0))) + + ;; Test subtype relationship in global initializer expressions + (global $global_anyref2 (mut anyref) (ref.null eq)) + (global $global_anyref3 (mut anyref) (i31.new (i32.const 0))) + (global $global_eqref2 (mut eqref) (i31.new (i32.const 0))) + + (func $test + (local $local_i32 i32) + (local $local_anyref anyref) + (local $local_eqref eqref) + (local $local_i31ref i31ref) + + ;; Test types for local.get/set + (local.set $local_anyref (local.get $local_anyref)) + (local.set $local_anyref (global.get $global_anyref)) + (local.set $local_anyref (ref.null any)) + (local.set $local_eqref (local.get $local_eqref)) + (local.set $local_eqref (global.get $global_eqref)) + (local.set $local_eqref (ref.null eq)) + (local.set $local_i31ref (local.get $local_i31ref)) + (local.set $local_i31ref (global.get $global_i31ref)) + (local.set $local_i31ref (i31.new (i32.const 0))) + + ;; Test subtype relationship for local.set + (local.set $local_anyref (local.get $local_eqref)) + (local.set $local_anyref (global.get $global_eqref)) + (local.set $local_anyref (ref.null eq)) + (local.set $local_anyref (local.get $local_i31ref)) + (local.set $local_anyref (global.get $global_i31ref)) + (local.set $local_anyref (i31.new (i32.const 0))) + (local.set $local_eqref (local.get $local_i31ref)) + (local.set $local_eqref (global.get $global_i31ref)) + (local.set $local_eqref (i31.new (i32.const 0))) + + ;; Test types for global.get/set + (global.set $global_anyref (local.get $local_anyref)) + (global.set $global_anyref (global.get $global_anyref)) + (global.set $global_anyref (ref.null any)) + (global.set $global_eqref (local.get $local_eqref)) + (global.set $global_eqref (global.get $global_eqref)) + (global.set $global_eqref (ref.null eq)) + (global.set $global_i31ref (local.get $local_i31ref)) + (global.set $global_i31ref (global.get $global_i31ref)) + (global.set $global_i31ref (i31.new (i32.const 0))) + + ;; Test subtype relationship for global.set + (global.set $global_anyref (local.get $local_eqref)) + (global.set $global_anyref (global.get $global_eqref)) + (global.set $global_anyref (ref.null eq)) + (global.set $global_anyref (local.get $local_i31ref)) + (global.set $global_anyref (global.get $global_i31ref)) + (global.set $global_anyref (i31.new (i32.const 0))) + (global.set $global_eqref (local.get $local_i31ref)) + (global.set $global_eqref (global.get $global_i31ref)) + (global.set $global_eqref (i31.new (i32.const 0))) + + ;; Test i31.get_s/u + (local.set $local_i32 (i31.get_s (local.get $local_i31ref))) + (local.set $local_i32 (i31.get_u (local.get $local_i31ref))) + ) + + (func $test-variants + (local $local_i31refnull (ref null i31)) + (local $local_i31refnonnull (ref i31)) + ) +) diff -Nru binaryen-91/test/gc.wast.fromBinary binaryen-99/test/gc.wast.fromBinary --- binaryen-91/test/gc.wast.fromBinary 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/gc.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,157 @@ +(module + (type $none_=>_none (func)) + (global $global_anyref (mut anyref) (ref.null any)) + (global $global_eqref (mut eqref) (ref.null eq)) + (global $global_i31ref (mut (ref null i31)) (i31.new + (i32.const 0) + )) + (global $global_anyref2 (mut anyref) (ref.null eq)) + (global $global_anyref3 (mut anyref) (i31.new + (i32.const 0) + )) + (global $global_eqref2 (mut eqref) (i31.new + (i32.const 0) + )) + (func $test + (local $local_i32 i32) + (local $local_anyref anyref) + (local $local_eqref eqref) + (local $local_i31ref (ref null i31)) + (local.set $local_anyref + (local.get $local_anyref) + ) + (local.set $local_anyref + (global.get $global_anyref) + ) + (local.set $local_anyref + (ref.null any) + ) + (local.set $local_eqref + (local.get $local_eqref) + ) + (local.set $local_eqref + (global.get $global_eqref) + ) + (local.set $local_eqref + (ref.null eq) + ) + (local.set $local_i31ref + (local.get $local_i31ref) + ) + (local.set $local_i31ref + (global.get $global_i31ref) + ) + (local.set $local_i31ref + (i31.new + (i32.const 0) + ) + ) + (local.set $local_anyref + (local.get $local_eqref) + ) + (local.set $local_anyref + (global.get $global_eqref) + ) + (local.set $local_anyref + (ref.null eq) + ) + (local.set $local_anyref + (local.get $local_i31ref) + ) + (local.set $local_anyref + (global.get $global_i31ref) + ) + (local.set $local_anyref + (i31.new + (i32.const 0) + ) + ) + (local.set $local_eqref + (local.get $local_i31ref) + ) + (local.set $local_eqref + (global.get $global_i31ref) + ) + (local.set $local_eqref + (i31.new + (i32.const 0) + ) + ) + (global.set $global_anyref + (local.get $local_anyref) + ) + (global.set $global_anyref + (global.get $global_anyref) + ) + (global.set $global_anyref + (ref.null any) + ) + (global.set $global_eqref + (local.get $local_eqref) + ) + (global.set $global_eqref + (global.get $global_eqref) + ) + (global.set $global_eqref + (ref.null eq) + ) + (global.set $global_i31ref + (local.get $local_i31ref) + ) + (global.set $global_i31ref + (global.get $global_i31ref) + ) + (global.set $global_i31ref + (i31.new + (i32.const 0) + ) + ) + (global.set $global_anyref + (local.get $local_eqref) + ) + (global.set $global_anyref + (global.get $global_eqref) + ) + (global.set $global_anyref + (ref.null eq) + ) + (global.set $global_anyref + (local.get $local_i31ref) + ) + (global.set $global_anyref + (global.get $global_i31ref) + ) + (global.set $global_anyref + (i31.new + (i32.const 0) + ) + ) + (global.set $global_eqref + (local.get $local_i31ref) + ) + (global.set $global_eqref + (global.get $global_i31ref) + ) + (global.set $global_eqref + (i31.new + (i32.const 0) + ) + ) + (local.set $local_i32 + (i31.get_s + (local.get $local_i31ref) + ) + ) + (local.set $local_i32 + (i31.get_u + (local.get $local_i31ref) + ) + ) + ) + (func $test-variants + (local $local_i31refnull (ref null i31)) + (local $local_i31refnonnull (ref null i31)) + (nop) + ) +) + diff -Nru binaryen-91/test/gc.wast.fromBinary.noDebugInfo binaryen-99/test/gc.wast.fromBinary.noDebugInfo --- binaryen-91/test/gc.wast.fromBinary.noDebugInfo 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/gc.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,157 @@ +(module + (type $none_=>_none (func)) + (global $global$0 (mut anyref) (ref.null any)) + (global $global$1 (mut eqref) (ref.null eq)) + (global $global$2 (mut (ref null i31)) (i31.new + (i32.const 0) + )) + (global $global$3 (mut anyref) (ref.null eq)) + (global $global$4 (mut anyref) (i31.new + (i32.const 0) + )) + (global $global$5 (mut eqref) (i31.new + (i32.const 0) + )) + (func $0 + (local $0 i32) + (local $1 anyref) + (local $2 eqref) + (local $3 (ref null i31)) + (local.set $1 + (local.get $1) + ) + (local.set $1 + (global.get $global$0) + ) + (local.set $1 + (ref.null any) + ) + (local.set $2 + (local.get $2) + ) + (local.set $2 + (global.get $global$1) + ) + (local.set $2 + (ref.null eq) + ) + (local.set $3 + (local.get $3) + ) + (local.set $3 + (global.get $global$2) + ) + (local.set $3 + (i31.new + (i32.const 0) + ) + ) + (local.set $1 + (local.get $2) + ) + (local.set $1 + (global.get $global$1) + ) + (local.set $1 + (ref.null eq) + ) + (local.set $1 + (local.get $3) + ) + (local.set $1 + (global.get $global$2) + ) + (local.set $1 + (i31.new + (i32.const 0) + ) + ) + (local.set $2 + (local.get $3) + ) + (local.set $2 + (global.get $global$2) + ) + (local.set $2 + (i31.new + (i32.const 0) + ) + ) + (global.set $global$0 + (local.get $1) + ) + (global.set $global$0 + (global.get $global$0) + ) + (global.set $global$0 + (ref.null any) + ) + (global.set $global$1 + (local.get $2) + ) + (global.set $global$1 + (global.get $global$1) + ) + (global.set $global$1 + (ref.null eq) + ) + (global.set $global$2 + (local.get $3) + ) + (global.set $global$2 + (global.get $global$2) + ) + (global.set $global$2 + (i31.new + (i32.const 0) + ) + ) + (global.set $global$0 + (local.get $2) + ) + (global.set $global$0 + (global.get $global$1) + ) + (global.set $global$0 + (ref.null eq) + ) + (global.set $global$0 + (local.get $3) + ) + (global.set $global$0 + (global.get $global$2) + ) + (global.set $global$0 + (i31.new + (i32.const 0) + ) + ) + (global.set $global$1 + (local.get $3) + ) + (global.set $global$1 + (global.get $global$2) + ) + (global.set $global$1 + (i31.new + (i32.const 0) + ) + ) + (local.set $0 + (i31.get_s + (local.get $3) + ) + ) + (local.set $0 + (i31.get_u + (local.get $3) + ) + ) + ) + (func $1 + (local $0 (ref null i31)) + (local $1 (ref null i31)) + (nop) + ) +) + diff -Nru binaryen-91/test/gc.wast.from-wast binaryen-99/test/gc.wast.from-wast --- binaryen-91/test/gc.wast.from-wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/gc.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,156 @@ +(module + (type $none_=>_none (func)) + (global $global_anyref (mut anyref) (ref.null any)) + (global $global_eqref (mut eqref) (ref.null eq)) + (global $global_i31ref (mut (ref null i31)) (i31.new + (i32.const 0) + )) + (global $global_anyref2 (mut anyref) (ref.null eq)) + (global $global_anyref3 (mut anyref) (i31.new + (i32.const 0) + )) + (global $global_eqref2 (mut eqref) (i31.new + (i32.const 0) + )) + (func $test + (local $local_i32 i32) + (local $local_anyref anyref) + (local $local_eqref eqref) + (local $local_i31ref (ref null i31)) + (local.set $local_anyref + (local.get $local_anyref) + ) + (local.set $local_anyref + (global.get $global_anyref) + ) + (local.set $local_anyref + (ref.null any) + ) + (local.set $local_eqref + (local.get $local_eqref) + ) + (local.set $local_eqref + (global.get $global_eqref) + ) + (local.set $local_eqref + (ref.null eq) + ) + (local.set $local_i31ref + (local.get $local_i31ref) + ) + (local.set $local_i31ref + (global.get $global_i31ref) + ) + (local.set $local_i31ref + (i31.new + (i32.const 0) + ) + ) + (local.set $local_anyref + (local.get $local_eqref) + ) + (local.set $local_anyref + (global.get $global_eqref) + ) + (local.set $local_anyref + (ref.null eq) + ) + (local.set $local_anyref + (local.get $local_i31ref) + ) + (local.set $local_anyref + (global.get $global_i31ref) + ) + (local.set $local_anyref + (i31.new + (i32.const 0) + ) + ) + (local.set $local_eqref + (local.get $local_i31ref) + ) + (local.set $local_eqref + (global.get $global_i31ref) + ) + (local.set $local_eqref + (i31.new + (i32.const 0) + ) + ) + (global.set $global_anyref + (local.get $local_anyref) + ) + (global.set $global_anyref + (global.get $global_anyref) + ) + (global.set $global_anyref + (ref.null any) + ) + (global.set $global_eqref + (local.get $local_eqref) + ) + (global.set $global_eqref + (global.get $global_eqref) + ) + (global.set $global_eqref + (ref.null eq) + ) + (global.set $global_i31ref + (local.get $local_i31ref) + ) + (global.set $global_i31ref + (global.get $global_i31ref) + ) + (global.set $global_i31ref + (i31.new + (i32.const 0) + ) + ) + (global.set $global_anyref + (local.get $local_eqref) + ) + (global.set $global_anyref + (global.get $global_eqref) + ) + (global.set $global_anyref + (ref.null eq) + ) + (global.set $global_anyref + (local.get $local_i31ref) + ) + (global.set $global_anyref + (global.get $global_i31ref) + ) + (global.set $global_anyref + (i31.new + (i32.const 0) + ) + ) + (global.set $global_eqref + (local.get $local_i31ref) + ) + (global.set $global_eqref + (global.get $global_i31ref) + ) + (global.set $global_eqref + (i31.new + (i32.const 0) + ) + ) + (local.set $local_i32 + (i31.get_s + (local.get $local_i31ref) + ) + ) + (local.set $local_i32 + (i31.get_u + (local.get $local_i31ref) + ) + ) + ) + (func $test-variants + (local $local_i31refnull (ref null i31)) + (local $local_i31refnonnull (ref null i31)) + (nop) + ) +) diff -Nru binaryen-91/test/grow_memory.wast.fromBinary binaryen-99/test/grow_memory.wast.fromBinary --- binaryen-91/test/grow_memory.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/grow_memory.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -5,12 +5,12 @@ (export "memory" (memory $0)) (export "grow" (func $0)) (export "current" (func $1)) - (func $0 (; 0 ;) (param $0 i32) (result i32) + (func $0 (param $var$0 i32) (result i32) (memory.grow - (local.get $0) + (local.get $var$0) ) ) - (func $1 (; 1 ;) (result i32) + (func $1 (result i32) (memory.size) ) ) diff -Nru binaryen-91/test/grow_memory.wast.fromBinary.noDebugInfo binaryen-99/test/grow_memory.wast.fromBinary.noDebugInfo --- binaryen-91/test/grow_memory.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/grow_memory.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -5,12 +5,12 @@ (export "memory" (memory $0)) (export "grow" (func $0)) (export "current" (func $1)) - (func $0 (; 0 ;) (param $0 i32) (result i32) + (func $0 (param $0 i32) (result i32) (memory.grow (local.get $0) ) ) - (func $1 (; 1 ;) (result i32) + (func $1 (result i32) (memory.size) ) ) diff -Nru binaryen-91/test/grow_memory.wast.from-wast binaryen-99/test/grow_memory.wast.from-wast --- binaryen-91/test/grow_memory.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/grow_memory.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -5,12 +5,12 @@ (export "memory" (memory $0)) (export "grow" (func $0)) (export "current" (func $1)) - (func $0 (; 0 ;) (param $var$0 i32) (result i32) + (func $0 (param $var$0 i32) (result i32) (memory.grow (local.get $var$0) ) ) - (func $1 (; 1 ;) (result i32) + (func $1 (result i32) (memory.size) ) ) diff -Nru binaryen-91/test/heap-types.wast binaryen-99/test/heap-types.wast --- binaryen-91/test/heap-types.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/heap-types.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,185 @@ +;; Test that we can roundtrip struct and array types +(module + ;; Structs + (type $struct.A (struct + i32 + (field f32) + (field $named f64) + )) + (type $struct.B (struct + (field i8) + (field (mut i16)) + (field (ref $struct.A)) + (field (mut (ref $struct.A))) + )) + (type $struct.C (struct + (field $named-mut (mut f32)) + )) + + ;; Arrays + (type $vector (array (mut f64))) + (type $matrix (array (ref $vector))) + (type $bytes (array (mut i8))) + (type $words (array (mut i32))) + + ;; RTT + (type $parent (struct)) + (type $child (struct i32)) + (type $grandchild (struct i32 i64)) + (global $rttparent (rtt 0 $parent) (rtt.canon $parent)) + (global $rttchild (rtt 1 $child) (rtt.sub $child (global.get $rttparent))) + (global $rttgrandchild (rtt 2 $grandchild) (rtt.sub $grandchild (global.get $rttchild))) + + (func $structs (param $x (ref $struct.A)) (result (ref $struct.B)) + (local $tA (ref null $struct.A)) + (local $tB (ref null $struct.B)) + (local $tc (ref null $struct.C)) + (local $tv (ref null $vector)) + (local $tm (ref null $matrix)) + (drop + (local.get $x) + ) + (drop + (struct.get $struct.A 0 (local.get $x)) + ) + (drop + (struct.get $struct.A 1 (local.get $x)) + ) + (drop + (struct.get $struct.A 2 (local.get $x)) + ) + (drop + (struct.get $struct.A $named (local.get $x)) + ) + (drop + (struct.get_u $struct.B 0 (local.get $tB)) + ) + (drop + (struct.get_s $struct.B 0 (local.get $tB)) + ) + (drop + (ref.null $struct.A) + ) + (drop + (block (result (ref null $struct.A)) + (local.get $x) + ) + ) + (drop + (if (result (ref null $struct.A)) + (i32.const 1) + (local.get $x) + (local.get $x) + ) + ) + (drop + (loop (result (ref null $struct.A)) + (local.get $x) + ) + ) + (drop + (select (result (ref null $struct.A)) + (local.get $x) + (local.get $x) + (i32.const 1) + ) + ) + (struct.set $struct.A 0 + (local.get $x) + (i32.const 100) + ) + (drop + (struct.new_default_with_rtt $struct.A + (rtt.canon $struct.A) + ) + ) + (drop + (struct.new_with_rtt $struct.A + (rtt.canon $struct.A) + (i32.const 1) + (f32.const 2.345) + (f64.const 3.14159) + ) + ) + (unreachable) + ) + (func $arrays (param $x (ref $vector)) (result (ref $matrix)) + (local $tv (ref null $vector)) + (local $tm (ref null $matrix)) + (local $tb (ref null $bytes)) + (local $tw (ref null $words)) + (drop + (array.new_with_rtt $vector + (rtt.canon $vector) + (i32.const 3) + (f64.const 3.14159) + ) + ) + (drop + (array.new_default_with_rtt $matrix + (rtt.canon $matrix) + (i32.const 10) + ) + ) + (drop + (array.get $vector + (local.get $x) + (i32.const 2) + ) + ) + (array.set $vector + (local.get $x) + (i32.const 2) + (f64.const 2.18281828) + ) + (drop + (array.len $vector + (local.get $x) + ) + ) + (drop + (array.get $words + (local.get $tw) + (i32.const 1) + ) + ) + (drop + (array.get_u $bytes + (local.get $tb) + (i32.const 2) + ) + ) + (drop + (array.get_s $bytes + (local.get $tb) + (i32.const 3) + ) + ) + (unreachable) + ) + ;; RTT types as parameters + (func $rtt-param-with-depth (param $rtt (rtt 1 $parent))) + (func $rtt-param-without-depth (param $rtt (rtt $parent))) + (func $rtt-operations + (local $temp.A (ref null $struct.A)) + (drop + (ref.test $struct.B (ref.null $struct.A) (rtt.canon $struct.B)) + ) + (drop + (ref.cast $struct.B (ref.null $struct.A) (rtt.canon $struct.B)) + ) + (drop + (block $out (result (ref $struct.B)) + ;; set the value to a local with type $struct.A, showing that the value + ;; flowing out has the right type + (local.set $temp.A + (br_on_cast $out $struct.B (ref.null $struct.A) (rtt.canon $struct.B)) + ) + ;; an untaken br_on_cast, with unreachable rtt - so we cannot use the + ;; RTT in binaryen IR to find the cast type. + (br_on_cast $out $struct.B (ref.null $struct.A) (unreachable)) + (unreachable) + ) + ) + ) +) diff -Nru binaryen-91/test/heap-types.wast.fromBinary binaryen-99/test/heap-types.wast.fromBinary --- binaryen-91/test/heap-types.wast.fromBinary 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/heap-types.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,196 @@ +(module + (type ${i32_f32_f64} (struct (field i32) (field f32) (field f64))) + (type $[mut:f64] (array (mut f64))) + (type ${} (struct )) + (type $none_=>_none (func)) + (type ${i32} (struct (field i32))) + (type ${i32_i64} (struct (field i32) (field i64))) + (type ${mut:f32} (struct (field (mut f32)))) + (type $[mut:i32] (array (mut i32))) + (type $[mut:i8] (array (mut i8))) + (type ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|} (struct (field i8) (field (mut i16)) (field (ref null ${i32_f32_f64})) (field (mut (ref null ${i32_f32_f64}))))) + (type $[ref?|[mut:f64]|] (array (ref null $[mut:f64]))) + (type $rtt_1_${}_=>_none (func (param (rtt 1 ${})))) + (type $rtt_${}_=>_none (func (param (rtt ${})))) + (type $ref?|{i32_f32_f64}|_=>_ref?|{i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|}| (func (param (ref null ${i32_f32_f64})) (result (ref null ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|})))) + (type $ref?|[mut:f64]|_=>_ref?|[ref?|[mut:f64]|]| (func (param (ref null $[mut:f64])) (result (ref null $[ref?|[mut:f64]|])))) + (global $rttparent (rtt 0 ${}) (rtt.canon ${})) + (global $rttchild (rtt 1 ${i32}) (rtt.sub ${i32} + (global.get $rttparent) + )) + (global $rttgrandchild (rtt 2 ${i32_i64}) (rtt.sub ${i32_i64} + (global.get $rttchild) + )) + (func $structs (param $x (ref null ${i32_f32_f64})) (result (ref null ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|})) + (local $tA (ref null ${i32_f32_f64})) + (local $tB (ref null ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|})) + (local $tc (ref null ${mut:f32})) + (local $tv (ref null $[ref?|[mut:f64]|])) + (local $tm (ref null $[mut:f64])) + (drop + (local.get $x) + ) + (drop + (struct.get ${i32_f32_f64} 0 + (local.get $x) + ) + ) + (drop + (struct.get ${i32_f32_f64} 1 + (local.get $x) + ) + ) + (drop + (struct.get ${i32_f32_f64} 2 + (local.get $x) + ) + ) + (drop + (struct.get ${i32_f32_f64} 2 + (local.get $x) + ) + ) + (drop + (struct.get_u ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|} 0 + (local.get $tB) + ) + ) + (drop + (struct.get_s ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|} 0 + (local.get $tB) + ) + ) + (drop + (ref.null ${i32_f32_f64}) + ) + (drop + (block $label$1 (result (ref null ${i32_f32_f64})) + (local.get $x) + ) + ) + (drop + (if (result (ref null ${i32_f32_f64})) + (i32.const 1) + (local.get $x) + (local.get $x) + ) + ) + (drop + (loop $label$4 (result (ref null ${i32_f32_f64})) + (local.get $x) + ) + ) + (drop + (select (result (ref null ${i32_f32_f64})) + (local.get $x) + (local.get $x) + (i32.const 1) + ) + ) + (struct.set ${i32_f32_f64} 0 + (local.get $x) + (i32.const 100) + ) + (drop + (struct.new_default_with_rtt ${i32_f32_f64} + (rtt.canon ${i32_f32_f64}) + ) + ) + (drop + (struct.new_with_rtt ${i32_f32_f64} + (rtt.canon ${i32_f32_f64}) + (i32.const 1) + (f32.const 2.3450000286102295) + (f64.const 3.14159) + ) + ) + (unreachable) + ) + (func $arrays (param $x (ref null $[mut:f64])) (result (ref null $[ref?|[mut:f64]|])) + (local $tv (ref null $[ref?|[mut:f64]|])) + (local $tm (ref null $[mut:i32])) + (local $tb (ref null $[mut:i8])) + (local $tw (ref null $[mut:f64])) + (drop + (array.new_with_rtt $[mut:f64] + (rtt.canon $[mut:f64]) + (i32.const 3) + (f64.const 3.14159) + ) + ) + (drop + (array.new_default_with_rtt $[ref?|[mut:f64]|] + (rtt.canon $[ref?|[mut:f64]|]) + (i32.const 10) + ) + ) + (drop + (array.get $[mut:f64] + (local.get $x) + (i32.const 2) + ) + ) + (array.set $[mut:f64] + (local.get $x) + (i32.const 2) + (f64.const 2.18281828) + ) + (drop + (array.len $[mut:f64] + (local.get $x) + ) + ) + (drop + (array.get $[mut:i32] + (local.get $tm) + (i32.const 1) + ) + ) + (drop + (array.get_u $[mut:i8] + (local.get $tb) + (i32.const 2) + ) + ) + (drop + (array.get_s $[mut:i8] + (local.get $tb) + (i32.const 3) + ) + ) + (unreachable) + ) + (func $rtt-param-with-depth (param $rtt (rtt 1 ${})) + (nop) + ) + (func $rtt-param-without-depth (param $rtt (rtt ${})) + (nop) + ) + (func $rtt-operations + (local $temp.A (ref null ${i32_f32_f64})) + (drop + (ref.test ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|} + (ref.null ${i32_f32_f64}) + (rtt.canon ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|}) + ) + ) + (drop + (ref.cast ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|} + (ref.null ${i32_f32_f64}) + (rtt.canon ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|}) + ) + ) + (drop + (block $label$1 (result (ref null ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|})) + (local.set $temp.A + (br_on_cast $label$1 ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|} + (ref.null ${i32_f32_f64}) + (rtt.canon ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|}) + ) + ) + (unreachable) + ) + ) + ) +) + diff -Nru binaryen-91/test/heap-types.wast.fromBinary.noDebugInfo binaryen-99/test/heap-types.wast.fromBinary.noDebugInfo --- binaryen-91/test/heap-types.wast.fromBinary.noDebugInfo 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/heap-types.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,196 @@ +(module + (type ${i32_f32_f64} (struct (field i32) (field f32) (field f64))) + (type $[mut:f64] (array (mut f64))) + (type ${} (struct )) + (type $none_=>_none (func)) + (type ${i32} (struct (field i32))) + (type ${i32_i64} (struct (field i32) (field i64))) + (type ${mut:f32} (struct (field (mut f32)))) + (type $[mut:i32] (array (mut i32))) + (type $[mut:i8] (array (mut i8))) + (type ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|} (struct (field i8) (field (mut i16)) (field (ref null ${i32_f32_f64})) (field (mut (ref null ${i32_f32_f64}))))) + (type $[ref?|[mut:f64]|] (array (ref null $[mut:f64]))) + (type $rtt_1_${}_=>_none (func (param (rtt 1 ${})))) + (type $rtt_${}_=>_none (func (param (rtt ${})))) + (type $ref?|{i32_f32_f64}|_=>_ref?|{i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|}| (func (param (ref null ${i32_f32_f64})) (result (ref null ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|})))) + (type $ref?|[mut:f64]|_=>_ref?|[ref?|[mut:f64]|]| (func (param (ref null $[mut:f64])) (result (ref null $[ref?|[mut:f64]|])))) + (global $global$0 (rtt 0 ${}) (rtt.canon ${})) + (global $global$1 (rtt 1 ${i32}) (rtt.sub ${i32} + (global.get $global$0) + )) + (global $global$2 (rtt 2 ${i32_i64}) (rtt.sub ${i32_i64} + (global.get $global$1) + )) + (func $0 (param $0 (ref null ${i32_f32_f64})) (result (ref null ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|})) + (local $1 (ref null ${i32_f32_f64})) + (local $2 (ref null ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|})) + (local $3 (ref null ${mut:f32})) + (local $4 (ref null $[ref?|[mut:f64]|])) + (local $5 (ref null $[mut:f64])) + (drop + (local.get $0) + ) + (drop + (struct.get ${i32_f32_f64} 0 + (local.get $0) + ) + ) + (drop + (struct.get ${i32_f32_f64} 1 + (local.get $0) + ) + ) + (drop + (struct.get ${i32_f32_f64} 2 + (local.get $0) + ) + ) + (drop + (struct.get ${i32_f32_f64} 2 + (local.get $0) + ) + ) + (drop + (struct.get_u ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|} 0 + (local.get $2) + ) + ) + (drop + (struct.get_s ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|} 0 + (local.get $2) + ) + ) + (drop + (ref.null ${i32_f32_f64}) + ) + (drop + (block $label$1 (result (ref null ${i32_f32_f64})) + (local.get $0) + ) + ) + (drop + (if (result (ref null ${i32_f32_f64})) + (i32.const 1) + (local.get $0) + (local.get $0) + ) + ) + (drop + (loop $label$4 (result (ref null ${i32_f32_f64})) + (local.get $0) + ) + ) + (drop + (select (result (ref null ${i32_f32_f64})) + (local.get $0) + (local.get $0) + (i32.const 1) + ) + ) + (struct.set ${i32_f32_f64} 0 + (local.get $0) + (i32.const 100) + ) + (drop + (struct.new_default_with_rtt ${i32_f32_f64} + (rtt.canon ${i32_f32_f64}) + ) + ) + (drop + (struct.new_with_rtt ${i32_f32_f64} + (rtt.canon ${i32_f32_f64}) + (i32.const 1) + (f32.const 2.3450000286102295) + (f64.const 3.14159) + ) + ) + (unreachable) + ) + (func $1 (param $0 (ref null $[mut:f64])) (result (ref null $[ref?|[mut:f64]|])) + (local $1 (ref null $[ref?|[mut:f64]|])) + (local $2 (ref null $[mut:i32])) + (local $3 (ref null $[mut:i8])) + (local $4 (ref null $[mut:f64])) + (drop + (array.new_with_rtt $[mut:f64] + (rtt.canon $[mut:f64]) + (i32.const 3) + (f64.const 3.14159) + ) + ) + (drop + (array.new_default_with_rtt $[ref?|[mut:f64]|] + (rtt.canon $[ref?|[mut:f64]|]) + (i32.const 10) + ) + ) + (drop + (array.get $[mut:f64] + (local.get $0) + (i32.const 2) + ) + ) + (array.set $[mut:f64] + (local.get $0) + (i32.const 2) + (f64.const 2.18281828) + ) + (drop + (array.len $[mut:f64] + (local.get $0) + ) + ) + (drop + (array.get $[mut:i32] + (local.get $2) + (i32.const 1) + ) + ) + (drop + (array.get_u $[mut:i8] + (local.get $3) + (i32.const 2) + ) + ) + (drop + (array.get_s $[mut:i8] + (local.get $3) + (i32.const 3) + ) + ) + (unreachable) + ) + (func $2 (param $0 (rtt 1 ${})) + (nop) + ) + (func $3 (param $0 (rtt ${})) + (nop) + ) + (func $4 + (local $0 (ref null ${i32_f32_f64})) + (drop + (ref.test ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|} + (ref.null ${i32_f32_f64}) + (rtt.canon ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|}) + ) + ) + (drop + (ref.cast ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|} + (ref.null ${i32_f32_f64}) + (rtt.canon ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|}) + ) + ) + (drop + (block $label$1 (result (ref null ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|})) + (local.set $0 + (br_on_cast $label$1 ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|} + (ref.null ${i32_f32_f64}) + (rtt.canon ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|}) + ) + ) + (unreachable) + ) + ) + ) +) + diff -Nru binaryen-91/test/heap-types.wast.from-wast binaryen-99/test/heap-types.wast.from-wast --- binaryen-91/test/heap-types.wast.from-wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/heap-types.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,199 @@ +(module + (type ${i32_f32_f64} (struct (field i32) (field f32) (field f64))) + (type $[mut:f64] (array (mut f64))) + (type ${} (struct )) + (type $none_=>_none (func)) + (type ${i32} (struct (field i32))) + (type ${i32_i64} (struct (field i32) (field i64))) + (type ${mut:f32} (struct (field (mut f32)))) + (type $[mut:i32] (array (mut i32))) + (type $[mut:i8] (array (mut i8))) + (type ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|} (struct (field i8) (field (mut i16)) (field (ref null ${i32_f32_f64})) (field (mut (ref null ${i32_f32_f64}))))) + (type $[ref?|[mut:f64]|] (array (ref null $[mut:f64]))) + (type $rtt_1_${}_=>_none (func (param (rtt 1 ${})))) + (type $rtt_${}_=>_none (func (param (rtt ${})))) + (type $ref?|{i32_f32_f64}|_=>_ref?|{i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|}| (func (param (ref null ${i32_f32_f64})) (result (ref null ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|})))) + (type $ref?|[mut:f64]|_=>_ref?|[ref?|[mut:f64]|]| (func (param (ref null $[mut:f64])) (result (ref null $[ref?|[mut:f64]|])))) + (global $rttparent (rtt 0 ${}) (rtt.canon ${})) + (global $rttchild (rtt 1 ${i32}) (rtt.sub ${i32} + (global.get $rttparent) + )) + (global $rttgrandchild (rtt 2 ${i32_i64}) (rtt.sub ${i32_i64} + (global.get $rttchild) + )) + (func $structs (param $x (ref null ${i32_f32_f64})) (result (ref null ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|})) + (local $tA (ref null ${i32_f32_f64})) + (local $tB (ref null ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|})) + (local $tc (ref null ${mut:f32})) + (local $tv (ref null $[mut:f64])) + (local $tm (ref null $[ref?|[mut:f64]|])) + (drop + (local.get $x) + ) + (drop + (struct.get ${i32_f32_f64} 0 + (local.get $x) + ) + ) + (drop + (struct.get ${i32_f32_f64} 1 + (local.get $x) + ) + ) + (drop + (struct.get ${i32_f32_f64} 2 + (local.get $x) + ) + ) + (drop + (struct.get ${i32_f32_f64} 2 + (local.get $x) + ) + ) + (drop + (struct.get_u ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|} 0 + (local.get $tB) + ) + ) + (drop + (struct.get_s ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|} 0 + (local.get $tB) + ) + ) + (drop + (ref.null ${i32_f32_f64}) + ) + (drop + (block $block (result (ref null ${i32_f32_f64})) + (local.get $x) + ) + ) + (drop + (if (result (ref null ${i32_f32_f64})) + (i32.const 1) + (local.get $x) + (local.get $x) + ) + ) + (drop + (loop $loop-in (result (ref null ${i32_f32_f64})) + (local.get $x) + ) + ) + (drop + (select (result (ref null ${i32_f32_f64})) + (local.get $x) + (local.get $x) + (i32.const 1) + ) + ) + (struct.set ${i32_f32_f64} 0 + (local.get $x) + (i32.const 100) + ) + (drop + (struct.new_default_with_rtt ${i32_f32_f64} + (rtt.canon ${i32_f32_f64}) + ) + ) + (drop + (struct.new_with_rtt ${i32_f32_f64} + (rtt.canon ${i32_f32_f64}) + (i32.const 1) + (f32.const 2.3450000286102295) + (f64.const 3.14159) + ) + ) + (unreachable) + ) + (func $arrays (param $x (ref null $[mut:f64])) (result (ref null $[ref?|[mut:f64]|])) + (local $tv (ref null $[mut:f64])) + (local $tm (ref null $[ref?|[mut:f64]|])) + (local $tb (ref null $[mut:i8])) + (local $tw (ref null $[mut:i32])) + (drop + (array.new_with_rtt $[mut:f64] + (rtt.canon $[mut:f64]) + (i32.const 3) + (f64.const 3.14159) + ) + ) + (drop + (array.new_default_with_rtt $[ref?|[mut:f64]|] + (rtt.canon $[ref?|[mut:f64]|]) + (i32.const 10) + ) + ) + (drop + (array.get $[mut:f64] + (local.get $x) + (i32.const 2) + ) + ) + (array.set $[mut:f64] + (local.get $x) + (i32.const 2) + (f64.const 2.18281828) + ) + (drop + (array.len $[mut:f64] + (local.get $x) + ) + ) + (drop + (array.get $[mut:i32] + (local.get $tw) + (i32.const 1) + ) + ) + (drop + (array.get_u $[mut:i8] + (local.get $tb) + (i32.const 2) + ) + ) + (drop + (array.get_s $[mut:i8] + (local.get $tb) + (i32.const 3) + ) + ) + (unreachable) + ) + (func $rtt-param-with-depth (param $rtt (rtt 1 ${})) + (nop) + ) + (func $rtt-param-without-depth (param $rtt (rtt ${})) + (nop) + ) + (func $rtt-operations + (local $temp.A (ref null ${i32_f32_f64})) + (drop + (ref.test ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|} + (ref.null ${i32_f32_f64}) + (rtt.canon ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|}) + ) + ) + (drop + (ref.cast ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|} + (ref.null ${i32_f32_f64}) + (rtt.canon ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|}) + ) + ) + (drop + (block $out (result (ref null ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|})) + (local.set $temp.A + (br_on_cast $out ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|} + (ref.null ${i32_f32_f64}) + (rtt.canon ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|}) + ) + ) + (br_on_cast $out ${i8_mut:i16_ref?|{i32_f32_f64}|_mut:ref?|{i32_f32_f64}|} + (ref.null ${i32_f32_f64}) + (unreachable) + ) + (unreachable) + ) + ) + ) +) diff -Nru binaryen-91/test/hello_world.asm.js binaryen-99/test/hello_world.asm.js --- binaryen-91/test/hello_world.asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/hello_world.asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -function () { - "use asm"; - function add(x, y) { - x = x | 0; - y = y | 0; - return x + y | 0; - } - return { add: add }; -} - diff -Nru binaryen-91/test/hello_world.fromasm binaryen-99/test/hello_world.fromasm --- binaryen-91/test/hello_world.fromasm 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/hello_world.fromasm 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "hello_world.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (export "add" (func $add)) - (func $add (; 0 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (i32.add - (local.get $0) - (local.get $1) - ) - ) -) diff -Nru binaryen-91/test/hello_world.fromasm.clamp binaryen-99/test/hello_world.fromasm.clamp --- binaryen-91/test/hello_world.fromasm.clamp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/hello_world.fromasm.clamp 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "hello_world.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (export "add" (func $add)) - (func $add (; 0 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (i32.add - (local.get $0) - (local.get $1) - ) - ) -) diff -Nru binaryen-91/test/hello_world.fromasm.clamp.no-opts binaryen-99/test/hello_world.fromasm.clamp.no-opts --- binaryen-91/test/hello_world.fromasm.clamp.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/hello_world.fromasm.clamp.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (export "add" (func $add)) - (func $add (; 0 ;) (param $x i32) (param $y i32) (result i32) - (return - (i32.add - (local.get $x) - (local.get $y) - ) - ) - ) -) diff -Nru binaryen-91/test/hello_world.fromasm.imprecise binaryen-99/test/hello_world.fromasm.imprecise --- binaryen-91/test/hello_world.fromasm.imprecise 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/hello_world.fromasm.imprecise 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (export "add" (func $add)) - (func $add (; 0 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (i32.add - (local.get $0) - (local.get $1) - ) - ) -) diff -Nru binaryen-91/test/hello_world.fromasm.imprecise.no-opts binaryen-99/test/hello_world.fromasm.imprecise.no-opts --- binaryen-91/test/hello_world.fromasm.imprecise.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/hello_world.fromasm.imprecise.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (export "add" (func $add)) - (func $add (; 0 ;) (param $x i32) (param $y i32) (result i32) - (return - (i32.add - (local.get $x) - (local.get $y) - ) - ) - ) -) diff -Nru binaryen-91/test/hello_world.fromasm.no-opts binaryen-99/test/hello_world.fromasm.no-opts --- binaryen-91/test/hello_world.fromasm.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/hello_world.fromasm.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (export "add" (func $add)) - (func $add (; 0 ;) (param $x i32) (param $y i32) (result i32) - (return - (i32.add - (local.get $x) - (local.get $y) - ) - ) - ) -) diff -Nru binaryen-91/test/hello_world.wat binaryen-99/test/hello_world.wat --- binaryen-91/test/hello_world.wat 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/hello_world.wat 2021-01-07 20:01:06.000000000 +0000 @@ -2,7 +2,7 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (memory $0 256 256) (export "add" (func $add)) - (func $add (; 0 ;) (param $x i32) (param $y i32) (result i32) + (func $add (param $x i32) (param $y i32) (result i32) (i32.add (local.get $x) (local.get $y) diff -Nru binaryen-91/test/i64-setTempRet0.asm.js binaryen-99/test/i64-setTempRet0.asm.js --- binaryen-91/test/i64-setTempRet0.asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/i64-setTempRet0.asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -// -// Test i64 support in wasm-only builds. In this case, fastcomp emits code that is -// not asm.js, it will only ever run as wasm, and contains special intrinsics for -// asm2wasm that map LLVM IR into i64s. -// - -function asm(global, env, buffer) { - "use asm"; - - var illegalImportResult = env.illegalImportResult; - - var tempRet0 = 0; // this should be used to legalize the illegal result - - function illegalResult() { // illegal result, exported - return i64_const(1, 2); - } - - function imports() { - return i64_trunc(i64(illegalImportResult())) | 0; - } - - return { illegalResult: illegalResult, imports: imports }; -} - diff -Nru binaryen-91/test/i64-setTempRet0.fromasm binaryen-99/test/i64-setTempRet0.fromasm --- binaryen-91/test/i64-setTempRet0.fromasm 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/i64-setTempRet0.fromasm 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_none (func (param i32))) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "i64-setTempRet0.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "setTempRet0" (func $setTempRet0 (param i32))) - (import "env" "getTempRet0" (func $getTempRet0 (result i32))) - (import "env" "illegalImportResult" (func $legalimport$illegalImportResult (result i32))) - (export "illegalResult" (func $legalstub$illegalResult)) - (export "imports" (func $imports)) - (func $imports (; 3 ;) (; has Stack IR ;) (result i32) - (i32.wrap_i64 - (i64.or - (i64.extend_i32_u - (call $legalimport$illegalImportResult) - ) - (i64.shl - (i64.extend_i32_u - (call $getTempRet0) - ) - (i64.const 32) - ) - ) - ) - ) - (func $legalstub$illegalResult (; 4 ;) (; has Stack IR ;) (result i32) - (call $setTempRet0 - (i32.const 2) - ) - (i32.const 1) - ) -) diff -Nru binaryen-91/test/i64-setTempRet0.fromasm.clamp binaryen-99/test/i64-setTempRet0.fromasm.clamp --- binaryen-91/test/i64-setTempRet0.fromasm.clamp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/i64-setTempRet0.fromasm.clamp 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_none (func (param i32))) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "i64-setTempRet0.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "setTempRet0" (func $setTempRet0 (param i32))) - (import "env" "getTempRet0" (func $getTempRet0 (result i32))) - (import "env" "illegalImportResult" (func $legalimport$illegalImportResult (result i32))) - (export "illegalResult" (func $legalstub$illegalResult)) - (export "imports" (func $imports)) - (func $imports (; 3 ;) (; has Stack IR ;) (result i32) - (i32.wrap_i64 - (i64.or - (i64.extend_i32_u - (call $legalimport$illegalImportResult) - ) - (i64.shl - (i64.extend_i32_u - (call $getTempRet0) - ) - (i64.const 32) - ) - ) - ) - ) - (func $legalstub$illegalResult (; 4 ;) (; has Stack IR ;) (result i32) - (call $setTempRet0 - (i32.const 2) - ) - (i32.const 1) - ) -) diff -Nru binaryen-91/test/i64-setTempRet0.fromasm.clamp.no-opts binaryen-99/test/i64-setTempRet0.fromasm.clamp.no-opts --- binaryen-91/test/i64-setTempRet0.fromasm.clamp.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/i64-setTempRet0.fromasm.clamp.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $none_=>_i64 (func (result i64))) - (type $i32_=>_none (func (param i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "setTempRet0" (func $setTempRet0 (param i32))) - (import "env" "getTempRet0" (func $getTempRet0 (result i32))) - (import "env" "illegalImportResult" (func $legalimport$illegalImportResult (result i32))) - (global $tempRet0 (mut i32) (i32.const 0)) - (export "illegalResult" (func $legalstub$illegalResult)) - (export "imports" (func $imports)) - (func $illegalResult (; 3 ;) (result i64) - (return - (i64.const 8589934593) - ) - ) - (func $imports (; 4 ;) (result i32) - (return - (i32.wrap_i64 - (call $legalfunc$illegalImportResult) - ) - ) - ) - (func $legalstub$illegalResult (; 5 ;) (result i32) - (local $0 i64) - (local.set $0 - (call $illegalResult) - ) - (call $setTempRet0 - (i32.wrap_i64 - (i64.shr_u - (local.get $0) - (i64.const 32) - ) - ) - ) - (i32.wrap_i64 - (local.get $0) - ) - ) - (func $legalfunc$illegalImportResult (; 6 ;) (result i64) - (i64.or - (i64.extend_i32_u - (call $legalimport$illegalImportResult) - ) - (i64.shl - (i64.extend_i32_u - (call $getTempRet0) - ) - (i64.const 32) - ) - ) - ) -) diff -Nru binaryen-91/test/i64-setTempRet0.fromasm.imprecise binaryen-99/test/i64-setTempRet0.fromasm.imprecise --- binaryen-91/test/i64-setTempRet0.fromasm.imprecise 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/i64-setTempRet0.fromasm.imprecise 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_none (func (param i32))) - (import "env" "setTempRet0" (func $setTempRet0 (param i32))) - (import "env" "getTempRet0" (func $getTempRet0 (result i32))) - (import "env" "illegalImportResult" (func $legalimport$illegalImportResult (result i32))) - (export "illegalResult" (func $legalstub$illegalResult)) - (export "imports" (func $imports)) - (func $imports (; 3 ;) (; has Stack IR ;) (result i32) - (i32.wrap_i64 - (i64.or - (i64.extend_i32_u - (call $legalimport$illegalImportResult) - ) - (i64.shl - (i64.extend_i32_u - (call $getTempRet0) - ) - (i64.const 32) - ) - ) - ) - ) - (func $legalstub$illegalResult (; 4 ;) (; has Stack IR ;) (result i32) - (call $setTempRet0 - (i32.const 2) - ) - (i32.const 1) - ) -) diff -Nru binaryen-91/test/i64-setTempRet0.fromasm.imprecise.no-opts binaryen-99/test/i64-setTempRet0.fromasm.imprecise.no-opts --- binaryen-91/test/i64-setTempRet0.fromasm.imprecise.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/i64-setTempRet0.fromasm.imprecise.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $none_=>_i64 (func (result i64))) - (type $i32_=>_none (func (param i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "setTempRet0" (func $setTempRet0 (param i32))) - (import "env" "getTempRet0" (func $getTempRet0 (result i32))) - (import "env" "illegalImportResult" (func $legalimport$illegalImportResult (result i32))) - (global $tempRet0 (mut i32) (i32.const 0)) - (export "illegalResult" (func $legalstub$illegalResult)) - (export "imports" (func $imports)) - (func $illegalResult (; 3 ;) (result i64) - (return - (i64.const 8589934593) - ) - ) - (func $imports (; 4 ;) (result i32) - (return - (i32.wrap_i64 - (call $legalfunc$illegalImportResult) - ) - ) - ) - (func $legalstub$illegalResult (; 5 ;) (result i32) - (local $0 i64) - (local.set $0 - (call $illegalResult) - ) - (call $setTempRet0 - (i32.wrap_i64 - (i64.shr_u - (local.get $0) - (i64.const 32) - ) - ) - ) - (i32.wrap_i64 - (local.get $0) - ) - ) - (func $legalfunc$illegalImportResult (; 6 ;) (result i64) - (i64.or - (i64.extend_i32_u - (call $legalimport$illegalImportResult) - ) - (i64.shl - (i64.extend_i32_u - (call $getTempRet0) - ) - (i64.const 32) - ) - ) - ) -) diff -Nru binaryen-91/test/i64-setTempRet0.fromasm.no-opts binaryen-99/test/i64-setTempRet0.fromasm.no-opts --- binaryen-91/test/i64-setTempRet0.fromasm.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/i64-setTempRet0.fromasm.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $none_=>_i64 (func (result i64))) - (type $i32_=>_none (func (param i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "setTempRet0" (func $setTempRet0 (param i32))) - (import "env" "getTempRet0" (func $getTempRet0 (result i32))) - (import "env" "illegalImportResult" (func $legalimport$illegalImportResult (result i32))) - (global $tempRet0 (mut i32) (i32.const 0)) - (export "illegalResult" (func $legalstub$illegalResult)) - (export "imports" (func $imports)) - (func $illegalResult (; 3 ;) (result i64) - (return - (i64.const 8589934593) - ) - ) - (func $imports (; 4 ;) (result i32) - (return - (i32.wrap_i64 - (call $legalfunc$illegalImportResult) - ) - ) - ) - (func $legalstub$illegalResult (; 5 ;) (result i32) - (local $0 i64) - (local.set $0 - (call $illegalResult) - ) - (call $setTempRet0 - (i32.wrap_i64 - (i64.shr_u - (local.get $0) - (i64.const 32) - ) - ) - ) - (i32.wrap_i64 - (local.get $0) - ) - ) - (func $legalfunc$illegalImportResult (; 6 ;) (result i64) - (i64.or - (i64.extend_i32_u - (call $legalimport$illegalImportResult) - ) - (i64.shl - (i64.extend_i32_u - (call $getTempRet0) - ) - (i64.const 32) - ) - ) - ) -) diff -Nru binaryen-91/test/imported_memory_growth.wast.fromBinary binaryen-99/test/imported_memory_growth.wast.fromBinary --- binaryen-91/test/imported_memory_growth.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/imported_memory_growth.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,5 +1,5 @@ (module (import "env" "memory" (memory $0 256)) - (import "env" "table" (table $timport$1 256 funcref)) + (import "env" "table" (table $timport$0 256 funcref)) ) diff -Nru binaryen-91/test/imported_memory_growth.wast.fromBinary.noDebugInfo binaryen-99/test/imported_memory_growth.wast.fromBinary.noDebugInfo --- binaryen-91/test/imported_memory_growth.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/imported_memory_growth.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -1,5 +1,5 @@ (module - (import "env" "memory" (memory $0 256)) - (import "env" "table" (table $timport$1 256 funcref)) + (import "env" "memory" (memory $mimport$0 256)) + (import "env" "table" (table $timport$0 256 funcref)) ) diff -Nru binaryen-91/test/imported_memory_growth.wast.from-wast binaryen-99/test/imported_memory_growth.wast.from-wast --- binaryen-91/test/imported_memory_growth.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/imported_memory_growth.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,4 +1,4 @@ (module (import "env" "memory" (memory $0 256)) - (import "env" "table" (table $0 256 funcref)) + (import "env" "table" (table $timport$0 256 funcref)) ) diff -Nru binaryen-91/test/imported_memory.wast.fromBinary binaryen-99/test/imported_memory.wast.fromBinary --- binaryen-91/test/imported_memory.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/imported_memory.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,5 +1,5 @@ (module (import "env" "memory" (memory $0 256 256)) - (import "env" "table" (table $timport$1 256 256 funcref)) + (import "env" "table" (table $timport$0 256 256 funcref)) ) diff -Nru binaryen-91/test/imported_memory.wast.fromBinary.noDebugInfo binaryen-99/test/imported_memory.wast.fromBinary.noDebugInfo --- binaryen-91/test/imported_memory.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/imported_memory.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -1,5 +1,5 @@ (module - (import "env" "memory" (memory $0 256 256)) - (import "env" "table" (table $timport$1 256 256 funcref)) + (import "env" "memory" (memory $mimport$0 256 256)) + (import "env" "table" (table $timport$0 256 256 funcref)) ) diff -Nru binaryen-91/test/imported_memory.wast.from-wast binaryen-99/test/imported_memory.wast.from-wast --- binaryen-91/test/imported_memory.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/imported_memory.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,4 +1,4 @@ (module (import "env" "memory" (memory $0 256 256)) - (import "env" "table" (table $0 256 256 funcref)) + (import "env" "table" (table $timport$0 256 256 funcref)) ) diff -Nru binaryen-91/test/importedSignCast.asm.js binaryen-99/test/importedSignCast.asm.js --- binaryen-91/test/importedSignCast.asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/importedSignCast.asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -function asm(global, env, buffer) { - "use asm"; - - var gm = env._emscripten_glIsTexture; - - function func() { - gm(0) << 24 >> 24; - } - - var FUNCTION_TABLE_a = [ gm ]; - - return { func: func }; -} - diff -Nru binaryen-91/test/importedSignCast.fromasm binaryen-99/test/importedSignCast.fromasm --- binaryen-91/test/importedSignCast.fromasm 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/importedSignCast.fromasm 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "importedSignCast.asm.js") - (import "env" "table" (table $table 1 1 funcref)) - (elem (global.get $__table_base) $gm) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "_emscripten_glIsTexture" (func $gm (param i32) (result i32))) - (export "func" (func $func)) - (func $func (; 1 ;) (; has Stack IR ;) - (drop - (call $gm - (i32.const 0) - ) - ) - ) -) diff -Nru binaryen-91/test/importedSignCast.fromasm.clamp binaryen-99/test/importedSignCast.fromasm.clamp --- binaryen-91/test/importedSignCast.fromasm.clamp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/importedSignCast.fromasm.clamp 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "importedSignCast.asm.js") - (import "env" "table" (table $table 1 1 funcref)) - (elem (global.get $__table_base) $gm) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "_emscripten_glIsTexture" (func $gm (param i32) (result i32))) - (export "func" (func $func)) - (func $func (; 1 ;) (; has Stack IR ;) - (drop - (call $gm - (i32.const 0) - ) - ) - ) -) diff -Nru binaryen-91/test/importedSignCast.fromasm.clamp.no-opts binaryen-99/test/importedSignCast.fromasm.clamp.no-opts --- binaryen-91/test/importedSignCast.fromasm.clamp.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/importedSignCast.fromasm.clamp.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 1 1 funcref)) - (elem (global.get $__table_base) $gm) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "_emscripten_glIsTexture" (func $gm (param i32) (result i32))) - (export "func" (func $func)) - (func $func (; 1 ;) - (drop - (i32.shr_s - (i32.shl - (call $gm - (i32.const 0) - ) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) -) diff -Nru binaryen-91/test/importedSignCast.fromasm.imprecise binaryen-99/test/importedSignCast.fromasm.imprecise --- binaryen-91/test/importedSignCast.fromasm.imprecise 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/importedSignCast.fromasm.imprecise 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "table" (table $table 1 1 funcref)) - (elem (global.get $__table_base) $gm) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "_emscripten_glIsTexture" (func $gm (param i32) (result i32))) - (export "func" (func $func)) - (func $func (; 1 ;) (; has Stack IR ;) - (drop - (call $gm - (i32.const 0) - ) - ) - ) -) diff -Nru binaryen-91/test/importedSignCast.fromasm.imprecise.no-opts binaryen-99/test/importedSignCast.fromasm.imprecise.no-opts --- binaryen-91/test/importedSignCast.fromasm.imprecise.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/importedSignCast.fromasm.imprecise.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 1 1 funcref)) - (elem (global.get $__table_base) $gm) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "_emscripten_glIsTexture" (func $gm (param i32) (result i32))) - (export "func" (func $func)) - (func $func (; 1 ;) - (drop - (i32.shr_s - (i32.shl - (call $gm - (i32.const 0) - ) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) -) diff -Nru binaryen-91/test/importedSignCast.fromasm.no-opts binaryen-99/test/importedSignCast.fromasm.no-opts --- binaryen-91/test/importedSignCast.fromasm.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/importedSignCast.fromasm.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 1 1 funcref)) - (elem (global.get $__table_base) $gm) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "_emscripten_glIsTexture" (func $gm (param i32) (result i32))) - (export "func" (func $func)) - (func $func (; 1 ;) - (drop - (i32.shr_s - (i32.shl - (call $gm - (i32.const 0) - ) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) -) diff -Nru binaryen-91/test/kitchen_sink.wast.fromBinary binaryen-99/test/kitchen_sink.wast.fromBinary --- binaryen-91/test/kitchen_sink.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/kitchen_sink.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -2,7 +2,7 @@ (type $none_=>_i32 (func (result i32))) (memory $0 4096 4096) (data (i32.const 1026) "\14\00") - (func $kitchensink (; 0 ;) (result i32) + (func $kitchensink (result i32) (drop (i32.add (i32.const 10) diff -Nru binaryen-91/test/kitchen_sink.wast.fromBinary.noDebugInfo binaryen-99/test/kitchen_sink.wast.fromBinary.noDebugInfo --- binaryen-91/test/kitchen_sink.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/kitchen_sink.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -2,7 +2,7 @@ (type $none_=>_i32 (func (result i32))) (memory $0 4096 4096) (data (i32.const 1026) "\14\00") - (func $0 (; 0 ;) (result i32) + (func $0 (result i32) (drop (i32.add (i32.const 10) diff -Nru binaryen-91/test/kitchen_sink.wast.from-wast binaryen-99/test/kitchen_sink.wast.from-wast --- binaryen-91/test/kitchen_sink.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/kitchen_sink.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -2,7 +2,7 @@ (type $none_=>_i32 (func (result i32))) (memory $0 4096 4096) (data (i32.const 1026) "\14\00") - (func $kitchensink (; 0 ;) (result i32) + (func $kitchensink (result i32) (block $block0 (result i32) (drop (i32.add diff -Nru binaryen-91/test/lit/CMakeLists.txt binaryen-99/test/lit/CMakeLists.txt --- binaryen-91/test/lit/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lit/CMakeLists.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +configure_file(lit.site.cfg.py.in lit.site.cfg.py @ONLY) diff -Nru binaryen-91/test/lit/lit.cfg.py binaryen-99/test/lit/lit.cfg.py --- binaryen-91/test/lit/lit.cfg.py 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lit/lit.cfg.py 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,21 @@ +import lit.formats + +config.name = "Binaryen lit tests" +config.test_format = lit.formats.ShTest(True) + +config.suffixes = ['.wat', '.wast'] + +config.test_source_root = os.path.dirname(__file__) +config.test_exec_root = os.path.join(config.binaryen_build_root, 'test') + +# Replace all Binaryen tools with their absolute paths +bin_dir = os.path.join(config.binaryen_build_root, 'bin') +for tool_file in os.listdir(bin_dir): + tool_path = config.binaryen_build_root + '/bin/' + tool_file + tool = tool_file[:-4] if tool_file.endswith('.exe') else tool_file + config.substitutions.append((tool, tool_path)) + +# Also make the `not` command available +not_file = config.binaryen_src_root + '/scripts/not.py' +python = sys.executable.replace('\\', '/') +config.substitutions.append(('not', python + ' ' + not_file)) diff -Nru binaryen-91/test/lit/lit.site.cfg.py.in binaryen-99/test/lit/lit.site.cfg.py.in --- binaryen-91/test/lit/lit.site.cfg.py.in 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lit/lit.site.cfg.py.in 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,7 @@ +import os + +config.binaryen_src_root = r'@CMAKE_SOURCE_DIR@' +config.binaryen_build_root = r'@CMAKE_BINARY_DIR@' + +lit_config.load_config( + config, os.path.join(config.binaryen_src_root, 'test', 'lit', 'lit.cfg.py')) diff -Nru binaryen-91/test/lit/parse-error.wast binaryen-99/test/lit/parse-error.wast --- binaryen-91/test/lit/parse-error.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lit/parse-error.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,10 @@ +;; Test that parse errors have helpful messages + +;; RUN: not wasm-opt %s 2>&1 | filecheck %s +;; CHECK: [parse exception: abc (at 8:4)] + +(module + (func $foo + (abc) + ) +) diff -Nru binaryen-91/test/lit/validation/shared-memory.wast binaryen-99/test/lit/validation/shared-memory.wast --- binaryen-91/test/lit/validation/shared-memory.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lit/validation/shared-memory.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,11 @@ +;; Test that shared memory requires atomics + +;; RUN: not wasm-opt %s 2>&1 | filecheck %s --check-prefix NO-ATOMICS +;; RUN: wasm-opt %s --enable-threads -o - -S | filecheck %s --check-prefix ATOMICS + +;; NO-ATOMICS: memory is shared, but atomics are disabled +;; ATOMICS: (memory $0 (shared 10 20)) + +(module + (memory (shared 10 20)) +) diff -Nru binaryen-91/test/lit/wasm-emscripten-finalize/bigint.wat binaryen-99/test/lit/wasm-emscripten-finalize/bigint.wat --- binaryen-91/test/lit/wasm-emscripten-finalize/bigint.wat 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lit/wasm-emscripten-finalize/bigint.wat 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,22 @@ +;; Test that the --bigint option prevents i64s from being split up + +;; Run without --bigint to get a baseline +;; RUN: wasm-emscripten-finalize %s -S | filecheck %s --check-prefix MVP + +;; Then run with --bigint to see the difference +;; RUN: wasm-emscripten-finalize %s -S --bigint | filecheck %s --check-prefix BIGINT + +;; MVP: (export "dynCall_jj" (func $legalstub$dynCall_jj)) +;; MVP: (func $legalstub$dynCall_jj (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + +;; BIGINT-NOT: legalstub +;; BIGINT: (export "dynCall_jj" (func $dynCall_jj)) +;; BIGINT: (func $dynCall_jj (param $fptr i32) (param $0 i64) (result i64) + +(module + (table $0 1 1 funcref) + (elem (i32.const 1) $foo) + (func $foo (param i64) (result i64) + (unreachable) + ) +) diff -Nru binaryen-91/test/lit/wasm-emscripten-finalize/passive-pic.wat binaryen-99/test/lit/wasm-emscripten-finalize/passive-pic.wat --- binaryen-91/test/lit/wasm-emscripten-finalize/passive-pic.wat 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lit/wasm-emscripten-finalize/passive-pic.wat 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,38 @@ +;; Test that wasm-emscripten-finalize can locate data within passive segments +;; even when compiled with PIC, which means that segment addresses are non-constant. + +;; RUN: wasm-emscripten-finalize --enable-bulk-memory %s -o out.wasm | filecheck %s + +;; CHECK: "asmConsts": { +;; CHECK: "3": ["hello", ["iii"], [""]] +;; CHECK: }, + +(module + (import "env" "memory" (memory $memory 1 1)) + (import "env" "__memory_base" (global $__memory_base i32)) + (import "env" "emscripten_asm_const_int" (func $emscripten_asm_const_int (param i32 i32 i32) (result i32))) + (data passive "xxxhello\00yyy") + ;; memory init function similar to those generated by wasm-ld + (start $__wasm_init_memory) + (func $__wasm_init_memory + (memory.init 0 + (i32.add + (i32.const 0) + (global.get $__memory_base) + ) + (i32.const 0) + (i32.const 12) + ) + ) + ;; EM_ASM call passing string at address 3 in the passive segment + (func $foo (result i32) + (call $emscripten_asm_const_int + (i32.add + (global.get $__memory_base) + (i32.const 3) + ) + (i32.const 0) + (i32.const 0) + ) + ) +) diff -Nru binaryen-91/test/lit/wasm-split/basic.wast binaryen-99/test/lit/wasm-split/basic.wast --- binaryen-91/test/lit/wasm-split/basic.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lit/wasm-split/basic.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,141 @@ +;; RUN: wasm-split %s --export-prefix='%' -o1 %t.none.1.wasm -o2 %t.none.2.wasm -v 2>&1 \ +;; RUN: | filecheck %s --check-prefix KEEP-NONE +;; RUN: wasm-dis %t.none.1.wasm | filecheck %s --check-prefix KEEP-NONE-PRIMARY +;; RUN: wasm-dis %t.none.2.wasm | filecheck %s --check-prefix KEEP-NONE-SECONDARY + +;; RUN: wasm-split %s --export-prefix='%' -o1 %t.foo.1.wasm -o2 %t.foo.2.wasm --keep-funcs=foo -v 2>&1 \ +;; RUN: | filecheck %s --check-prefix KEEP-FOO +;; RUN: wasm-dis %t.foo.1.wasm | filecheck %s --check-prefix KEEP-FOO-PRIMARY +;; RUN: wasm-dis %t.foo.2.wasm | filecheck %s --check-prefix KEEP-FOO-SECONDARY + +;; RUN: wasm-split %s --export-prefix='%' -o1 %t.bar.1.wasm -o2 %t.bar.2.wasm --keep-funcs=bar -v 2>&1 \ +;; RUN: | filecheck %s --check-prefix KEEP-BAR +;; RUN: wasm-dis %t.bar.1.wasm | filecheck %s --check-prefix KEEP-BAR-PRIMARY +;; RUN: wasm-dis %t.bar.2.wasm | filecheck %s --check-prefix KEEP-BAR-SECONDARY + +;; RUN: wasm-split %s --export-prefix='%' -o1 %t.both.1.wasm -o2 %t.both.2.wasm --keep-funcs=foo,bar -v 2>&1 \ +;; RUN: | filecheck %s --check-prefix KEEP-BOTH +;; RUN: wasm-dis %t.both.1.wasm | filecheck %s --check-prefix KEEP-BOTH-PRIMARY +;; RUN: wasm-dis %t.both.2.wasm | filecheck %s --check-prefix KEEP-BOTH-SECONDARY + +(module + (table $table 1 1 funcref) + (elem (i32.const 0) $foo) + (func $foo (param i32) (result i32) + (call $bar (i32.const 0)) + ) + (func $bar (param i32) (result i32) + (call $foo (i32.const 1)) + ) +) + +;; KEEP-NONE: warning: not keeping any functions in the primary module + +;; KEEP-NONE-PRIMARY: (module +;; KEEP-NONE-PRIMARY-NEXT: (type $i32_=>_i32 (func (param i32) (result i32))) +;; KEEP-NONE-PRIMARY-NEXT: (import "placeholder" "0" (func $fimport$0 (param i32) (result i32))) +;; KEEP-NONE-PRIMARY-NEXT: (table $0 1 1 funcref) +;; KEEP-NONE-PRIMARY-NEXT: (elem (i32.const 0) $fimport$0) +;; KEEP-NONE-PRIMARY-NEXT: (export "%table" (table $0)) +;; KEEP-NONE-PRIMARY-NEXT: ) + +;; KEEP-NONE-SECONDARY: (module +;; KEEP-NONE-SECONDARY-NEXT: (type $i32_=>_i32 (func (param i32) (result i32))) +;; KEEP-NONE-SECONDARY-NEXT: (import "primary" "%table" (table $timport$0 1 1 funcref)) +;; KEEP-NONE-SECONDARY-NEXT: (elem (i32.const 0) $1) +;; KEEP-NONE-SECONDARY-NEXT: (func $0 (param $0 i32) (result i32) +;; KEEP-NONE-SECONDARY-NEXT: (call $1 +;; KEEP-NONE-SECONDARY-NEXT: (i32.const 1) +;; KEEP-NONE-SECONDARY-NEXT: ) +;; KEEP-NONE-SECONDARY-NEXT: ) +;; KEEP-NONE-SECONDARY-NEXT: (func $1 (param $0 i32) (result i32) +;; KEEP-NONE-SECONDARY-NEXT: (call $0 +;; KEEP-NONE-SECONDARY-NEXT: (i32.const 0) +;; KEEP-NONE-SECONDARY-NEXT: ) +;; KEEP-NONE-SECONDARY-NEXT: ) +;; KEEP-NONE-SECONDARY-NEXT: ) + +;; KEEP-FOO: Keeping functions: foo{{$}} +;; KEEP-FOO-NEXT: Splitting out functions: bar{{$}} + +;; KEEP-FOO-PRIMARY: (module +;; KEEP-FOO-PRIMARY-NEXT: (type $i32_=>_i32 (func (param i32) (result i32))) +;; KEEP-FOO-PRIMARY-NEXT: (import "placeholder" "1" (func $fimport$0 (param i32) (result i32))) +;; KEEP-FOO-PRIMARY-NEXT: (table $0 2 2 funcref) +;; KEEP-FOO-PRIMARY-NEXT: (elem (i32.const 0) $0 $fimport$0) +;; KEEP-FOO-PRIMARY-NEXT: (export "%foo" (func $0)) +;; KEEP-FOO-PRIMARY-NEXT: (export "%table" (table $0)) +;; KEEP-FOO-PRIMARY-NEXT: (func $0 (param $0 i32) (result i32) +;; KEEP-FOO-PRIMARY-NEXT: (call_indirect (type $i32_=>_i32) +;; KEEP-FOO-PRIMARY-NEXT: (i32.const 0) +;; KEEP-FOO-PRIMARY-NEXT: (i32.const 1) +;; KEEP-FOO-PRIMARY-NEXT: ) +;; KEEP-FOO-PRIMARY-NEXT: ) +;; KEEP-FOO-PRIMARY-NEXT: ) + +;; KEEP-FOO-SECONDARY: (module +;; KEEP-FOO-SECONDARY-NEXT: (type $i32_=>_i32 (func (param i32) (result i32))) +;; KEEP-FOO-SECONDARY-NEXT: (import "primary" "%table" (table $timport$0 2 2 funcref)) +;; KEEP-FOO-SECONDARY-NEXT: (elem (i32.const 1) $0) +;; KEEP-FOO-SECONDARY-NEXT: (import "primary" "%foo" (func $fimport$0 (param i32) (result i32))) +;; KEEP-FOO-SECONDARY-NEXT: (func $0 (param $0 i32) (result i32) +;; KEEP-FOO-SECONDARY-NEXT: (call $fimport$0 +;; KEEP-FOO-SECONDARY-NEXT: (i32.const 1) +;; KEEP-FOO-SECONDARY-NEXT: ) +;; KEEP-FOO-SECONDARY-NEXT: ) +;; KEEP-FOO-SECONDARY-NEXT: ) + +;; KEEP-BAR: Keeping functions: bar{{$}} +;; KEEP-BAR-NEXT: Splitting out functions: foo{{$}} + +;; KEEP-BAR-PRIMARY: (module +;; KEEP-BAR-PRIMARY-NEXT: (type $i32_=>_i32 (func (param i32) (result i32))) +;; KEEP-BAR-PRIMARY-NEXT: (import "placeholder" "0" (func $fimport$0 (param i32) (result i32))) +;; KEEP-BAR-PRIMARY-NEXT: (table $0 1 1 funcref) +;; KEEP-BAR-PRIMARY-NEXT: (elem (i32.const 0) $fimport$0) +;; KEEP-BAR-PRIMARY-NEXT: (export "%bar" (func $0)) +;; KEEP-BAR-PRIMARY-NEXT: (export "%table" (table $0)) +;; KEEP-BAR-PRIMARY-NEXT: (func $0 (param $0 i32) (result i32) +;; KEEP-BAR-PRIMARY-NEXT: (call_indirect (type $i32_=>_i32) +;; KEEP-BAR-PRIMARY-NEXT: (i32.const 1) +;; KEEP-BAR-PRIMARY-NEXT: (i32.const 0) +;; KEEP-BAR-PRIMARY-NEXT: ) +;; KEEP-BAR-PRIMARY-NEXT: ) +;; KEEP-BAR-PRIMARY-NEXT: ) + +;; KEEP-BAR-SECONDARY: (module +;; KEEP-BAR-SECONDARY-NEXT: (type $i32_=>_i32 (func (param i32) (result i32))) +;; KEEP-BAR-SECONDARY-NEXT: (import "primary" "%table" (table $timport$0 1 1 funcref)) +;; KEEP-BAR-SECONDARY-NEXT: (elem (i32.const 0) $0) +;; KEEP-BAR-SECONDARY-NEXT: (import "primary" "%bar" (func $fimport$0 (param i32) (result i32))) +;; KEEP-BAR-SECONDARY-NEXT: (func $0 (param $0 i32) (result i32) +;; KEEP-BAR-SECONDARY-NEXT: (call $fimport$0 +;; KEEP-BAR-SECONDARY-NEXT: (i32.const 0) +;; KEEP-BAR-SECONDARY-NEXT: ) +;; KEEP-BAR-SECONDARY-NEXT: ) +;; KEEP-BAR-SECONDARY-NEXT: ) + +;; KEEP-BOTH: warning: not splitting any functions out to the secondary module +;; KEEP-BOTH-NEXT: Keeping functions: bar, foo{{$}} +;; KEEP-BOTH-NEXT: Splitting out functions:{{$}} + +;; KEEP-BOTH-PRIMARY: (module +;; KEEP-BOTH-PRIMARY-NEXT: (type $i32_=>_i32 (func (param i32) (result i32))) +;; KEEP-BOTH-PRIMARY-NEXT: (table $0 1 1 funcref) +;; KEEP-BOTH-PRIMARY-NEXT: (elem (i32.const 0) $0) +;; KEEP-BOTH-PRIMARY-NEXT: (export "%table" (table $0)) +;; KEEP-BOTH-PRIMARY-NEXT: (func $0 (param $0 i32) (result i32) +;; KEEP-BOTH-PRIMARY-NEXT: (call $1 +;; KEEP-BOTH-PRIMARY-NEXT: (i32.const 0) +;; KEEP-BOTH-PRIMARY-NEXT: ) +;; KEEP-BOTH-PRIMARY-NEXT: ) +;; KEEP-BOTH-PRIMARY-NEXT: (func $1 (param $0 i32) (result i32) +;; KEEP-BOTH-PRIMARY-NEXT: (call $0 +;; KEEP-BOTH-PRIMARY-NEXT: (i32.const 1) +;; KEEP-BOTH-PRIMARY-NEXT: ) +;; KEEP-BOTH-PRIMARY-NEXT: ) +;; KEEP-BOTH-PRIMARY-NEXT: ) + +;; KEEP-BOTH-SECONDARY: (module +;; KEEP-BOTH-SECONDARY-NEXT: (import "primary" "%table" (table $timport$0 1 1 funcref)) +;; KEEP-BOTH-SECONDARY-NEXT: ) diff -Nru binaryen-91/test/lit/wasm-split/call_exports.mjs binaryen-99/test/lit/wasm-split/call_exports.mjs --- binaryen-91/test/lit/wasm-split/call_exports.mjs 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lit/wasm-split/call_exports.mjs 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,25 @@ +// Instantiates an instrumented module, calls the given exports, then collects +// its wasm-split profile and writes it to a given file. +// +// Usage: +// +// node call_exports.mjs * + +import * as fs from 'fs'; + +let wasm = process.argv[2]; +let outFile = process.argv[3]; + +// Create the Wasm instance +let { _, instance } = await WebAssembly.instantiate(fs.readFileSync(wasm)); + +// Call the specified exports +for (let i = 4; i < process.argv.length; i++) { + console.log('calling', process.argv[i]); + instance.exports[process.argv[i]](); +} + +// Create and read the profile +let profileSize = instance.exports['__write_profile'](0, 2**32 - 1); +let profileData = Buffer.from(instance.exports.memory.buffer, 0, profileSize); +fs.writeFileSync(outFile, profileData); diff -Nru binaryen-91/test/lit/wasm-split/export-name-already-exists.wast binaryen-99/test/lit/wasm-split/export-name-already-exists.wast --- binaryen-91/test/lit/wasm-split/export-name-already-exists.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lit/wasm-split/export-name-already-exists.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,8 @@ +;; RUN: not wasm-split %s --instrument --profile-export=foo 2>&1 \ +;; RUN: | filecheck %s + +;; CHECK: error: Export foo already exists. + +(module + (export "foo" (memory 0 0)) +) diff -Nru binaryen-91/test/lit/wasm-split/initial-table.wast binaryen-99/test/lit/wasm-split/initial-table.wast --- binaryen-91/test/lit/wasm-split/initial-table.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lit/wasm-split/initial-table.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,13 @@ +;; Test that the --initial-table flag works as expected + +;; RUN: wasm-split %s --instrument --initial-table=1234 -S | filecheck %s + +;; RUN: wasm-split %s -g -o1 %t.1.wasm -o2 %t.2.wasm --initial-table=1234 +;; RUN: wasm-dis %t.1.wasm | filecheck %s +;; RUN: wasm-dis %t.2.wasm | filecheck %s + +;; CHECK: (table $table 1234 funcref) + +(module + (table $table 3 funcref) +) diff -Nru binaryen-91/test/lit/wasm-split/instrument-funcs.wast binaryen-99/test/lit/wasm-split/instrument-funcs.wast --- binaryen-91/test/lit/wasm-split/instrument-funcs.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lit/wasm-split/instrument-funcs.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,75 @@ +;; RUN: wasm-split %s --instrument -S -o - | filecheck %s + +;; Check that the output round trips and validates as well +;; RUN: wasm-split %s --instrument -g -o %t +;; RUN: wasm-opt %t --print | filecheck %s + +(module + (import "env" "foo" (func $foo)) + (export "bar" (func $bar)) + (func $bar + (call $foo) + ) + (func $baz (param i32) (result i32) + (local.get 0) + ) +) + +;; Check that a memory has been added +;; CHECK: (memory $0 1 1) + +;; Check that the counter and timestamps have been added +;; CHECK: (global $monotonic_counter (mut i32) (i32.const 0)) +;; CHECK: (global $bar_timestamp (mut i32) (i32.const 0)) +;; CHECK: (global $baz_timestamp (mut i32) (i32.const 0)) + +;; And the profiling function exported +;; CHECK: (export "__write_profile" (func $__write_profile)) + +;; Check that the function instrumentation is correct + +;; CHECK: (func $baz (param $0 i32) (result i32) +;; CHECK-NEXT: (if +;; CHECK-NEXT: (i32.eqz +;; CHECK-NEXT: (global.get $baz_timestamp) +;; CHECK-NEXT: ) +;; CHECK-NEXT: (block +;; CHECK-NEXT: (global.set $monotonic_counter +;; CHECK-NEXT: (i32.add +;; CHECK-NEXT: (global.get $monotonic_counter) +;; CHECK-NEXT: (i32.const 1) +;; CHECK-NEXT: ) +;; CHECK-NEXT: ) +;; CHECK-NEXT: (global.set $baz_timestamp +;; CHECK-NEXT: (global.get $monotonic_counter) +;; CHECK-NEXT: ) +;; CHECK-NEXT: ) +;; CHECK-NEXT: ) +;; CHECK-NEXT: (local.get $0) +;; CHECK-NEXT: ) + +;; Check that the profiling function is correct. + +;; CHECK: (func $__write_profile (param $addr i32) (param $size i32) (result i32) +;; CHECK-NEXT: (if +;; CHECK-NEXT: (i32.ge_u +;; CHECK-NEXT: (local.get $size) +;; CHECK-NEXT: (i32.const 16) +;; CHECK-NEXT: ) +;; CHECK-NEXT: (block +;; CHECK-NEXT: (i64.store align=1 +;; CHECK-NEXT: (local.get $addr) +;; CHECK-NEXT: (i64.const {{.*}}) +;; CHECK-NEXT: ) +;; CHECK-NEXT: (i32.store offset=8 align=1 +;; CHECK-NEXT: (local.get $addr) +;; CHECK-NEXT: (global.get $bar_timestamp) +;; CHECK-NEXT: ) +;; CHECK-NEXT: (i32.store offset=12 align=1 +;; CHECK-NEXT: (local.get $addr) +;; CHECK-NEXT: (global.get $baz_timestamp) +;; CHECK-NEXT: ) +;; CHECK-NEXT: ) +;; CHECK-NEXT: ) +;; CHECK-NEXT: (i32.const 16) +;; CHECK-NEXT: ) diff -Nru binaryen-91/test/lit/wasm-split/instrument-memory-too-small.wast binaryen-99/test/lit/wasm-split/instrument-memory-too-small.wast --- binaryen-91/test/lit/wasm-split/instrument-memory-too-small.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lit/wasm-split/instrument-memory-too-small.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,10 @@ +;; Test that the instrumentation increases the memory bounds if necessary + +;; RUN: wasm-split %s --instrument -S -o - | filecheck %s + +;; CHECK: (memory $0 1 1) +;; CHECK: (export "__write_profile" (func $__write_profile)) + +(module + (memory $0 0 0) +) diff -Nru binaryen-91/test/lit/wasm-split/invalid-options.wast binaryen-99/test/lit/wasm-split/invalid-options.wast --- binaryen-91/test/lit/wasm-split/invalid-options.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lit/wasm-split/invalid-options.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,64 @@ +;; Test that invalid command line option combinations are properly rejected with +;; helpful error messages. + +;; --instrument cannot be used with --profile +;; RUN: not wasm-split %s --instrument --profile %t 2>&1 \ +;; RUN: | filecheck %s --check-prefix INSTRUMENT-PROFILE + +;; --instrument cannot be used with -o1 +;; RUN: not wasm-split %s --instrument -o1 %t 2>&1 \ +;; RUN: | filecheck %s --check-prefix INSTRUMENT-OUT1 + +;; --instrument cannot be used with -o2 +;; RUN: not wasm-split %s --instrument -o2 %t 2>&1 \ +;; RUN: | filecheck %s --check-prefix INSTRUMENT-OUT2 + +;; --instrument cannot be used with --import-namespace +;; RUN: not wasm-split %s --instrument --import-namespace=foo 2>&1 \ +;; RUN: | filecheck %s --check-prefix INSTRUMENT-IMPORT-NS + +;; --instrument cannot be used with --placeholder-namespace +;; RUN: not wasm-split %s --instrument --placeholder-namespace=foo 2>&1 \ +;; RUN: | filecheck %s --check-prefix INSTRUMENT-PLACEHOLDER-NS + +;; --instrument cannot be used with --export-prefix +;; RUN: not wasm-split %s --instrument --export-prefix=foo 2>&1 \ +;; RUN: | filecheck %s --check-prefix INSTRUMENT-EXPORT-PREFIX + +;; --instrument cannot be used with --keep-funcs +;; RUN: not wasm-split %s --instrument --keep-funcs=foo 2>&1 \ +;; RUN: | filecheck %s --check-prefix INSTRUMENT-KEEP-FUNCS + +;; --instrument cannot be used with --split-funcs +;; RUN: not wasm-split %s --instrument --split-funcs=foo 2>&1 \ +;; RUN: | filecheck %s --check-prefix INSTRUMENT-SPLIT-FUNCS + +;; Split mode requires -o1 and -o2 rather than -o +;; RUN: not wasm-split %s -o %t 2>&1 \ +;; RUN: | filecheck %s --check-prefix NO-INSTRUMENT-OUT + +;; --instrument is required to use --profile-export +;; RUN: not wasm-split %s --profile-export=foo 2>&1 \ +;; RUN: | filecheck %s --check-prefix NO-INSTRUMENT-PROFILE-EXPORT + +;; INSTRUMENT-PROFILE: error: --profile cannot be used with --instrument + +;; INSTRUMENT-OUT1: error: primary output cannot be used with --instrument + +;; INSTRUMENT-OUT2: error: secondary output cannot be used with --instrument + +;; INSTRUMENT-IMPORT-NS: error: --import-namespace cannot be used with --instrument + +;; INSTRUMENT-PLACEHOLDER-NS: error: --placeholder-namespace cannot be used with --instrument + +;; INSTRUMENT-EXPORT-PREFIX: error: --export-prefix cannot be used with --instrument + +;; INSTRUMENT-KEEP-FUNCS: error: --keep-funcs cannot be used with --instrument + +;; INSTRUMENT-SPLIT-FUNCS: error: --split-funcs cannot be used with --instrument + +;; NO-INSTRUMENT-OUT: error: must provide separate primary and secondary output with -o1 and -o2 + +;; NO-INSTRUMENT-PROFILE-EXPORT: error: --profile-export must be used with --instrument + +(module) diff -Nru binaryen-91/test/lit/wasm-split/mismatched-hashes.wast binaryen-99/test/lit/wasm-split/mismatched-hashes.wast --- binaryen-91/test/lit/wasm-split/mismatched-hashes.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lit/wasm-split/mismatched-hashes.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,23 @@ +;; Check that using different inputs for the instrumentation and splitting steps +;; results in an error. + +;; Instrument the module +;; RUN: wasm-split --instrument %s -o %t.instrumented.wasm + +;; Generate a profile +;; RUN: node %S/call_exports.mjs %t.instrumented.wasm %t.prof + +;; Attempt to split the instrumented module +;; RUN: not wasm-split %t.instrumented.wasm --profile=%t.prof -o1 %t.1.wasm -o2 %t.2.wasm \ +;; RUN: 2>&1 | filecheck %s + +;; CHECK: error: checksum in profile does not match module checksum. +;; CHECK-SAME: The split module must be the original module that was instrumented +;; CHECK-SAME: to generate the profile. + +;; Check that the matching module succeeds +;; RUN: wasm-split %s --profile=%t.prof -o1 %t.1.wasm -o2 %t.2.wasm + +(module + (export "memory" (memory 0 0)) +) diff -Nru binaryen-91/test/lit/wasm-split/name-collision.wast binaryen-99/test/lit/wasm-split/name-collision.wast --- binaryen-91/test/lit/wasm-split/name-collision.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lit/wasm-split/name-collision.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,16 @@ +;; Regression test for a bug in which colliding internal names between +;; non-function exports would result in the wrong import names being used in the +;; secondary module. + +;; RUN: wasm-split %s -o1 %t.1.wasm -o2 %t.2.wasm +;; RUN: wasm-dis %t.2.wasm | filecheck %s + +;; CHECK-NOT: (import "primary" "memory" (table +;; CHECK: (import "primary" "table" (table + +(module + (table $collide 1 funcref) + (memory $collide 1 1) + (export "table" (table $collide)) + (export "memory" (memory $collide)) +) diff -Nru binaryen-91/test/lit/wasm-split/profile-guided.wast binaryen-99/test/lit/wasm-split/profile-guided.wast --- binaryen-91/test/lit/wasm-split/profile-guided.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lit/wasm-split/profile-guided.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,67 @@ +;; Instrument the binary + +;; RUN: wasm-split --instrument %s -o %t.instrumented.wasm + +;; Create profiles + +;; RUN: node %S/call_exports.mjs %t.instrumented.wasm %t.foo.prof foo +;; RUN: node %S/call_exports.mjs %t.instrumented.wasm %t.bar.prof bar +;; RUN: node %S/call_exports.mjs %t.instrumented.wasm %t.both.prof foo bar +;; RUN: node %S/call_exports.mjs %t.instrumented.wasm %t.none.prof + +;; Create profile-guided splits + +;; RUN: wasm-split %s --profile=%t.foo.prof -v -o1 %t.foo.1.wasm -o2 %t.foo.2.wasm \ +;; RUN: | filecheck %s --check-prefix FOO + +;; FOO: Keeping functions: deep_foo_callee, foo, foo_callee, shared_callee +;; FOO: Splitting out functions: bar, bar_callee, uncalled + +;; RUN: wasm-split %s --profile=%t.bar.prof -v -o1 %t.bar.1.wasm -o2 %t.bar.2.wasm \ +;; RUN: | filecheck %s --check-prefix BAR + +;; BAR: Keeping functions: bar, bar_callee, shared_callee +;; BAR: Splitting out functions: deep_foo_callee, foo, foo_callee, uncalled + +;; RUN: wasm-split %s --profile=%t.both.prof -v -o1 %t.both.1.wasm -o2 %t.both.2.wasm \ +;; RUN: | filecheck %s --check-prefix BOTH + +;; BOTH: Keeping functions: bar, bar_callee, deep_foo_callee, foo, foo_callee, shared_callee +;; BOTH: Splitting out functions: uncalled + +;; RUN: wasm-split %s --profile=%t.none.prof -v -o1 %t.none.1.wasm -o2 %t.none.2.wasm \ +;; RUN: | filecheck %s --check-prefix NONE + +;; NONE: Keeping functions: +;; NONE: Splitting out functions: bar, bar_callee, deep_foo_callee, foo, foo_callee, shared_callee, uncalled + + +(module + (memory $mem 1 1) + (export "memory" (memory $mem)) + (export "foo" (func $foo)) + (export "bar" (func $bar)) + (export "uncalled" (func $uncalled)) + + (func $foo + (call $foo_callee) + (call $shared_callee) + ) + + (func $bar + (call $shared_callee) + (call $bar_callee) + ) + + (func $uncalled) + + (func $foo_callee + (call $deep_foo_callee) + ) + + (func $bar_callee) + + (func $shared_callee) + + (func $deep_foo_callee) +) diff -Nru binaryen-91/test/lit/wasm-split/verbose.wast binaryen-99/test/lit/wasm-split/verbose.wast --- binaryen-91/test/lit/wasm-split/verbose.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lit/wasm-split/verbose.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,14 @@ +;; Test that --verbose mode correctly prints the kept and split funcs + +;; RUN: wasm-split %s --keep-funcs=foo,bar --split-funcs=baz --verbose \ +;; RUN: -o1 %t1.wasm -o2 %t2.wasm | filecheck %s + +;; CHECK: Keeping functions: bar, foo{{$}} +;; CHECK: Splitting out functions: baz, quux{{$}} + +(module + (func $foo) + (func $bar) + (func $baz) + (func $quux) +) diff -Nru binaryen-91/test/lld/basic_safe_stack.s binaryen-99/test/lld/basic_safe_stack.s --- binaryen-91/test/lld/basic_safe_stack.s 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lld/basic_safe_stack.s 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,38 @@ +# Test that wasm-binaryen-finalize --check-stack-overflow correctly +# inserts stack chekc handlers. + +.globl stackRestore +.globl stackAlloc + +.globaltype __stack_pointer, i32 + +stackRestore: + .functype stackRestore(i32) -> () + local.get 0 + global.set __stack_pointer + end_function + +stackAlloc: + .functype stackAlloc(i32) -> (i32) + .local i32, i32 + global.get __stack_pointer + # Get arg 0 -> number of bytes to allocate + local.get 0 + # Stack grows down. Subtract arg0 from __stack_pointer + i32.sub + # Align result by anding with ~15 + i32.const 0xfffffff0 + i32.and + local.tee 1 + global.set __stack_pointer + local.get 1 + end_function + +.globl main +main: + .functype main () -> () + end_function + +.export_name stackAlloc, stackAlloc +.export_name stackSave, stackSave +.export_name stackRestore, stackRestore diff -Nru binaryen-91/test/lld/basic_safe_stack.wat binaryen-99/test/lld/basic_safe_stack.wat --- binaryen-91/test/lld/basic_safe_stack.wat 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lld/basic_safe_stack.wat 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,39 @@ +(module + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (memory $0 2) + (table $0 1 1 funcref) + (global $global$0 (mut i32) (i32.const 66112)) + (export "memory" (memory $0)) + (export "__wasm_call_ctors" (func $__wasm_call_ctors)) + (export "stackRestore" (func $stackRestore)) + (export "stackAlloc" (func $stackAlloc)) + (export "main" (func $main)) + (func $__wasm_call_ctors + ) + (func $stackRestore (param $0 i32) + (global.set $global$0 + (local.get $0) + ) + ) + (func $stackAlloc (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (global.set $global$0 + (local.tee $1 + (i32.and + (i32.sub + (global.get $global$0) + (local.get $0) + ) + (i32.const -16) + ) + ) + ) + (local.get $1) + ) + (func $main + ) +) + diff -Nru binaryen-91/test/lld/basic_safe_stack.wat.out binaryen-99/test/lld/basic_safe_stack.wat.out --- binaryen-91/test/lld/basic_safe_stack.wat.out 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lld/basic_safe_stack.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,116 @@ +(module + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "env" "__handle_stack_overflow" (func $__handle_stack_overflow)) + (memory $0 2) + (table $0 1 1 funcref) + (global $global$0 (mut i32) (i32.const 66112)) + (global $__stack_base (mut i32) (i32.const 0)) + (global $__stack_limit (mut i32) (i32.const 0)) + (export "memory" (memory $0)) + (export "__wasm_call_ctors" (func $__wasm_call_ctors)) + (export "stackRestore" (func $stackRestore)) + (export "stackAlloc" (func $stackAlloc)) + (export "main" (func $main)) + (export "__set_stack_limits" (func $__set_stack_limits)) + (func $__wasm_call_ctors + (nop) + ) + (func $stackRestore (param $0 i32) + (local $1 i32) + (if + (i32.or + (i32.gt_u + (local.tee $1 + (local.get $0) + ) + (global.get $__stack_base) + ) + (i32.lt_u + (local.get $1) + (global.get $__stack_limit) + ) + ) + (call $__handle_stack_overflow) + ) + (global.set $global$0 + (local.get $1) + ) + ) + (func $stackAlloc (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (block + (if + (i32.or + (i32.gt_u + (local.tee $3 + (local.tee $1 + (i32.and + (i32.sub + (global.get $global$0) + (local.get $0) + ) + (i32.const -16) + ) + ) + ) + (global.get $__stack_base) + ) + (i32.lt_u + (local.get $3) + (global.get $__stack_limit) + ) + ) + (call $__handle_stack_overflow) + ) + (global.set $global$0 + (local.get $3) + ) + ) + (local.get $1) + ) + (func $main + (nop) + ) + (func $__set_stack_limits (param $0 i32) (param $1 i32) + (global.set $__stack_base + (local.get $0) + ) + (global.set $__stack_limit + (local.get $1) + ) + ) +) +(; +--BEGIN METADATA -- +{ + "tableSize": 1, + "initializers": [ + "__wasm_call_ctors" + ], + "declares": [ + "__handle_stack_overflow" + ], + "externs": [ + ], + "exports": [ + "__wasm_call_ctors", + "stackRestore", + "stackAlloc", + "main", + "__set_stack_limits" + ], + "namedGlobals": { + }, + "invokeFuncs": [ + ], + "mainReadsParams": 1, + "features": [ + ] +} +-- END METADATA -- +;) diff -Nru binaryen-91/test/lld/duplicate_imports.wat.out binaryen-99/test/lld/duplicate_imports.wat.out --- binaryen-91/test/lld/duplicate_imports.wat.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/duplicate_imports.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -1,12 +1,13 @@ (module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i64_=>_i32 (func (param i64) (result i32))) (type $i32_f32_f64_=>_f32 (func (param i32 f32 f64) (result f32))) (type $i32_f64_f64_=>_f32 (func (param i32 f64 f64) (result f32))) + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i64_=>_i32 (func (param i64) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $f32_f64_=>_f32 (func (param f32 f64) (result f32))) + (type $f64_f64_=>_f32 (func (param f64 f64) (result f32))) (import "env" "puts" (func $puts1 (param i32) (result i32))) (import "env" "invoke_ffd" (func $invoke_ffd (param i32 f32 f64) (result f32))) (import "env" "invoke_ffd" (func $invoke_ffd2 (param i32 f64 f64) (result f32))) @@ -22,11 +23,9 @@ (export "main" (func $main)) (export "__heap_base" (global $global$1)) (export "__data_end" (global $global$2)) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (func $main (; 4 ;) (result i32) + (export "dynCall_ffd" (func $dynCall_ffd)) + (export "dynCall_fdd" (func $dynCall_fdd)) + (func $main (result i32) (drop (call $puts1 (i32.const 568) @@ -34,38 +33,24 @@ ) (i32.const 0) ) - (func $__wasm_call_ctors (; 5 ;) + (func $__wasm_call_ctors (nop) ) - (func $stackSave (; 6 ;) (result i32) - (global.get $global$0) - ) - (func $stackAlloc (; 7 ;) (param $0 i32) (result i32) - (local $1 i32) - (global.set $global$0 - (local.tee $1 - (i32.and - (i32.sub - (global.get $global$0) - (local.get $0) - ) - (i32.const -16) - ) - ) - ) - (local.get $1) - ) - (func $stackRestore (; 8 ;) (param $0 i32) - (global.set $global$0 + (func $dynCall_ffd (param $fptr i32) (param $0 f32) (param $1 f64) (result f32) + (call_indirect (type $f32_f64_=>_f32) (local.get $0) + (local.get $1) + (local.get $fptr) ) ) - (func $__growWasmMemory (; 9 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) + (func $dynCall_fdd (param $fptr i32) (param $0 f64) (param $1 f64) (result f32) + (call_indirect (type $f64_f64_=>_f32) + (local.get $0) + (local.get $1) + (local.get $fptr) ) ) - (func $legalfunc$puts2 (; 10 ;) (param $0 i64) (result i32) + (func $legalfunc$puts2 (param $0 i64) (result i32) (call $legalimport$puts2 (i32.wrap_i64 (local.get $0) @@ -82,7 +67,6 @@ (; --BEGIN METADATA -- { - "staticBump": 13, "tableSize": 1, "initializers": [ "__wasm_call_ctors" @@ -92,21 +76,11 @@ ], "externs": [ ], - "implementedFunctions": [ - "___wasm_call_ctors", - "_main", - "_stackSave", - "_stackAlloc", - "_stackRestore", - "___growWasmMemory" - ], "exports": [ "__wasm_call_ctors", "main", - "stackSave", - "stackAlloc", - "stackRestore", - "__growWasmMemory" + "dynCall_ffd", + "dynCall_fdd" ], "namedGlobals": { "__heap_base" : "66128", @@ -115,9 +89,9 @@ "invokeFuncs": [ "invoke_ffd" ], + "mainReadsParams": 1, "features": [ - ], - "mainReadsParams": 1 + ] } -- END METADATA -- ;) diff -Nru binaryen-91/test/lld/em_asm64.cpp binaryen-99/test/lld/em_asm64.cpp --- binaryen-91/test/lld/em_asm64.cpp 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lld/em_asm64.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,8 @@ +#include + +int main() { + EM_ASM({ Module.print("Hello world"); }); + int x = EM_ASM_INT({ return $0 + $1; }, 13, 27); + EM_ASM_({ Module.print("Got " + $0); }, x); + return 0; +} diff -Nru binaryen-91/test/lld/em_asm64.wat binaryen-99/test/lld/em_asm64.wat --- binaryen-91/test/lld/em_asm64.wat 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lld/em_asm64.wat 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,68 @@ +(module + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) + (type $i64_i64_i64_=>_i32 (func (param i64 i64 i64) (result i32))) + (import "env" "emscripten_asm_const_int" (func $emscripten_asm_const_int (param i64 i64 i64) (result i32))) + (memory $0 i64 2) + (data (i32.const 568) "{ Module.print(\"Hello world\"); }\00\00{ return $0 + $1; }\00ii\00{ Module.print(\"Got \" + $0); }\00i\00") + (table $0 1 1 funcref) + (global $__stack_pointer (mut i64) (i64.const 66208)) + (export "memory" (memory $0)) + (export "__wasm_call_ctors" (func $__wasm_call_ctors)) + (export "main" (func $main)) + (func $__wasm_call_ctors + ) + (func $__original_main (result i32) + (local $0 i64) + (global.set $__stack_pointer + (local.tee $0 + (i64.sub + (global.get $__stack_pointer) + (i64.const 32) + ) + ) + ) + (drop + (call $emscripten_asm_const_int + (i64.const 568) + (i64.const 601) + (i64.const 0) + ) + ) + (i64.store offset=16 + (local.get $0) + (i64.const 115964117005) + ) + (i32.store + (local.get $0) + (call $emscripten_asm_const_int + (i64.const 602) + (i64.const 622) + (i64.add + (local.get $0) + (i64.const 16) + ) + ) + ) + (drop + (call $emscripten_asm_const_int + (i64.const 625) + (i64.const 656) + (local.get $0) + ) + ) + (global.set $__stack_pointer + (i64.add + (local.get $0) + (i64.const 32) + ) + ) + (i32.const 0) + ) + (func $main (param $0 i32) (param $1 i64) (result i32) + (call $__original_main) + ) + ;; custom section "producers", size 112 +) + diff -Nru binaryen-91/test/lld/em_asm64.wat.out binaryen-99/test/lld/em_asm64.wat.out --- binaryen-91/test/lld/em_asm64.wat.out 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lld/em_asm64.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,99 @@ +(module + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) + (type $i64_i64_i64_=>_i32 (func (param i64 i64 i64) (result i32))) + (import "env" "emscripten_asm_const_int" (func $emscripten_asm_const_int (param i64 i64 i64) (result i32))) + (memory $0 i64 2) + (data (i32.const 568) "{ Module.print(\"Hello world\"); }\00\00{ return $0 + $1; }\00ii\00{ Module.print(\"Got \" + $0); }\00i\00") + (table $0 1 1 funcref) + (global $__stack_pointer (mut i64) (i64.const 66208)) + (export "memory" (memory $0)) + (export "__wasm_call_ctors" (func $__wasm_call_ctors)) + (export "main" (func $main)) + (func $__wasm_call_ctors + (nop) + ) + (func $__original_main (result i32) + (local $0 i64) + (global.set $__stack_pointer + (local.tee $0 + (i64.sub + (global.get $__stack_pointer) + (i64.const 32) + ) + ) + ) + (drop + (call $emscripten_asm_const_int + (i64.const 568) + (i64.const 601) + (i64.const 0) + ) + ) + (i64.store offset=16 + (local.get $0) + (i64.const 115964117005) + ) + (i32.store + (local.get $0) + (call $emscripten_asm_const_int + (i64.const 602) + (i64.const 622) + (i64.add + (local.get $0) + (i64.const 16) + ) + ) + ) + (drop + (call $emscripten_asm_const_int + (i64.const 625) + (i64.const 656) + (local.get $0) + ) + ) + (global.set $__stack_pointer + (i64.add + (local.get $0) + (i64.const 32) + ) + ) + (i32.const 0) + ) + (func $main (param $0 i32) (param $1 i64) (result i32) + (call $__original_main) + ) +) +(; +--BEGIN METADATA -- +{ + "asmConsts": { + "568": ["{ Module.print(\"Hello world\"); }", ["ijj"], [""]], + "602": ["{ return $0 + $1; }", ["ijj"], [""]], + "625": ["{ Module.print(\"Got \" + $0); }", ["ijj"], [""]] + }, + "tableSize": 1, + "initializers": [ + "__wasm_call_ctors" + ], + "declares": [ + "emscripten_asm_const_int" + ], + "externs": [ + ], + "exports": [ + "__wasm_call_ctors", + "main" + ], + "namedGlobals": { + }, + "invokeFuncs": [ + ], + "mainReadsParams": 0, + "features": [ + "--enable-memory64" + ] +} +-- END METADATA -- +;) diff -Nru binaryen-91/test/lld/em_asm_main_thread.wat.out binaryen-99/test/lld/em_asm_main_thread.wat.out --- binaryen-91/test/lld/em_asm_main_thread.wat.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/em_asm_main_thread.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -1,13 +1,12 @@ (module (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "emscripten_asm_const_sync_on_main_thread_iii" (func $emscripten_asm_const_sync_on_main_thread_iii (param i32 i32 i32) (result i32))) + (import "env" "emscripten_asm_const_int_sync_on_main_thread" (func $emscripten_asm_const_int_sync_on_main_thread (param i32 i32 i32) (result i32))) (memory $0 2) (data (i32.const 568) "{ Module.print(\"Hello world\"); }\00{ return $0 + $1; }\00{ Module.print(\"Got \" + $0); }\00") (table $0 1 1 funcref) @@ -19,14 +18,10 @@ (export "__heap_base" (global $global$1)) (export "__data_end" (global $global$2)) (export "main" (func $main)) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (func $__wasm_call_ctors (; 1 ;) + (func $__wasm_call_ctors (nop) ) - (func $__original_main (; 2 ;) (result i32) + (func $__original_main (result i32) (local $0 i32) (local $1 i32) (global.set $global$0 @@ -42,7 +37,7 @@ (call $__em_asm_sig_builder::inner<>\20const\20__em_asm_sig_builder::__em_asm_sig<>\28\29) ) (drop - (call $emscripten_asm_const_sync_on_main_thread_iii + (call $emscripten_asm_const_int_sync_on_main_thread (i32.const 568) (i32.add (local.get $0) @@ -69,7 +64,7 @@ (i32.const 24) ) (local.tee $1 - (call $emscripten_asm_const_sync_on_main_thread_iii + (call $emscripten_asm_const_int_sync_on_main_thread (i32.const 601) (i32.add (local.get $0) @@ -87,7 +82,7 @@ (local.get $1) ) (drop - (call $emscripten_asm_const_sync_on_main_thread_iii + (call $emscripten_asm_const_int_sync_on_main_thread (i32.const 621) (i32.add (local.get $0) @@ -104,10 +99,10 @@ ) (i32.const 0) ) - (func $__em_asm_sig_builder::inner<>\20const\20__em_asm_sig_builder::__em_asm_sig<>\28\29 (; 3 ;) (result i32) + (func $__em_asm_sig_builder::inner<>\20const\20__em_asm_sig_builder::__em_asm_sig<>\28\29 (result i32) (i32.const 0) ) - (func $__em_asm_sig_builder::inner\20const\20__em_asm_sig_builder::__em_asm_sig\28int\2c\20int\29 (; 4 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $__em_asm_sig_builder::inner\20const\20__em_asm_sig_builder::__em_asm_sig\28int\2c\20int\29 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (global.set $global$0 (local.tee $3 @@ -152,7 +147,7 @@ ) ) ) - (func $__em_asm_sig_builder::inner\20const\20__em_asm_sig_builder::__em_asm_sig\28int\29 (; 5 ;) (param $0 i32) (param $1 i32) + (func $__em_asm_sig_builder::inner\20const\20__em_asm_sig_builder::__em_asm_sig\28int\29 (param $0 i32) (param $1 i32) (local $2 i32) (global.set $global$0 (local.tee $2 @@ -188,40 +183,12 @@ ) ) ) - (func $__em_asm_sig_builder::sig_char\28int\29 (; 6 ;) (param $0 i32) (result i32) + (func $__em_asm_sig_builder::sig_char\28int\29 (param $0 i32) (result i32) (i32.const 105) ) - (func $main (; 7 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) - (func $stackSave (; 8 ;) (result i32) - (global.get $global$0) - ) - (func $stackAlloc (; 9 ;) (param $0 i32) (result i32) - (local $1 i32) - (global.set $global$0 - (local.tee $1 - (i32.and - (i32.sub - (global.get $global$0) - (local.get $0) - ) - (i32.const -16) - ) - ) - ) - (local.get $1) - ) - (func $stackRestore (; 10 ;) (param $0 i32) - (global.set $global$0 - (local.get $0) - ) - ) - (func $__growWasmMemory (; 11 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) ) (; --BEGIN METADATA -- @@ -231,30 +198,18 @@ "601": ["{ return $0 + $1; }", ["iii"], ["sync_on_main_thread_"]], "621": ["{ Module.print(\"Got \" + $0); }", ["iii"], ["sync_on_main_thread_"]] }, - "staticBump": 84, "tableSize": 1, "initializers": [ "__wasm_call_ctors" ], "declares": [ + "emscripten_asm_const_int_sync_on_main_thread" ], "externs": [ ], - "implementedFunctions": [ - "___wasm_call_ctors", - "_main", - "_stackSave", - "_stackAlloc", - "_stackRestore", - "___growWasmMemory" - ], "exports": [ "__wasm_call_ctors", - "main", - "stackSave", - "stackAlloc", - "stackRestore", - "__growWasmMemory" + "main" ], "namedGlobals": { "__heap_base" : "66192", @@ -262,9 +217,9 @@ }, "invokeFuncs": [ ], + "mainReadsParams": 0, "features": [ - ], - "mainReadsParams": 0 + ] } -- END METADATA -- ;) diff -Nru binaryen-91/test/lld/em_asm_O0.c binaryen-99/test/lld/em_asm_O0.c --- binaryen-91/test/lld/em_asm_O0.c 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lld/em_asm_O0.c 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,8 @@ +#include + +int main(int argc, char **argv) { + EM_ASM({ Module.print("Hello world"); }); + int ret = EM_ASM_INT({ return $0 + $1; }, 20, 30); + EM_ASM({ Module.print("Got " + $0); }, 42); + return ret; +} diff -Nru binaryen-91/test/lld/em_asm_O0.wat binaryen-99/test/lld/em_asm_O0.wat --- binaryen-91/test/lld/em_asm_O0.wat 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/em_asm_O0.wat 2021-01-07 20:01:06.000000000 +0000 @@ -1,47 +1,93 @@ (module - (type $0 (func (param i32) (result i32))) - (type $1 (func (param i32 i32 i32) (result i32))) - (type $2 (func (param i32 i32) (result i32))) - (type $3 (func (result i32))) - (type $4 (func)) - (import "env" "_Z24emscripten_asm_const_intIJEEiPKcDpT_" (func $_Z24emscripten_asm_const_intIJEEiPKcDpT_ (param i32) (result i32))) - (import "env" "_Z24emscripten_asm_const_intIJiiEEiPKcDpT_" (func $_Z24emscripten_asm_const_intIJiiEEiPKcDpT_ (param i32 i32 i32) (result i32))) - (import "env" "_Z24emscripten_asm_const_intIJiEEiPKcDpT_" (func $_Z24emscripten_asm_const_intIJiEEiPKcDpT_ (param i32 i32) (result i32))) - (global $global$0 (mut i32) (i32.const 66192)) - (global $global$1 i32 (i32.const 66192)) - (global $global$2 i32 (i32.const 652)) - (table 1 1 funcref) + (type $none_=>_none (func)) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (import "env" "emscripten_asm_const_int" (func $emscripten_asm_const_int (param i32 i32 i32) (result i32))) (memory $0 2) (data (i32.const 568) "{ Module.print(\"Hello world\"); }\00{ return $0 + $1; }\00{ Module.print(\"Got \" + $0); }\00") + (table $0 1 1 funcref) + (global $global$0 (mut i32) (i32.const 66192)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) (export "main" (func $main)) - (export "__heap_base" (global $global$1)) - (export "__data_end" (global $global$2)) - (func $main (; 3 ;) (type $3) (result i32) - (local $t1 i32) - (local $t2 i32) + (func $__wasm_call_ctors + ) + (func $main (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (global.set $global$0 + (local.tee $2 + (i32.sub + (global.get $global$0) + (i32.const 32) + ) + ) + ) + (i32.store8 offset=31 + (local.get $2) + (i32.const 0) + ) (drop - (call $_Z24emscripten_asm_const_intIJEEiPKcDpT_ + (call $emscripten_asm_const_int (i32.const 568) + (i32.add + (local.get $2) + (i32.const 31) + ) + (i32.const 0) + ) + ) + (i32.store8 offset=30 + (local.get $2) + (i32.const 0) + ) + (i32.store16 offset=28 align=1 + (local.get $2) + (i32.const 26985) + ) + (i64.store offset=16 + (local.get $2) + (i64.const 128849018900) + ) + (local.set $3 + (call $emscripten_asm_const_int + (i32.const 601) + (i32.add + (local.get $2) + (i32.const 28) + ) + (i32.add + (local.get $2) + (i32.const 16) + ) ) ) - (local.set $t1 (i32.const 621)) - (local.set $t2 (i32.const 601)) + (i32.store16 offset=26 align=1 + (local.get $2) + (i32.const 105) + ) + (i32.store + (local.get $2) + (i32.const 42) + ) (drop - (call $_Z24emscripten_asm_const_intIJiEEiPKcDpT_ - (local.get $t1) - (call $_Z24emscripten_asm_const_intIJiiEEiPKcDpT_ - (local.get $t2) - (i32.const 13) - (i32.const 27) + (call $emscripten_asm_const_int + (i32.const 621) + (i32.add + (local.get $2) + (i32.const 26) ) + (local.get $2) ) ) - (i32.const 0) - ) - (func $__wasm_call_ctors (; 4 ;) (type $4) + (global.set $global$0 + (i32.add + (local.get $2) + (i32.const 32) + ) + ) + (local.get $3) ) - ;; custom section "linking", size 3 + ;; custom section "producers", size 112 ) diff -Nru binaryen-91/test/lld/em_asm_O0.wat.out binaryen-99/test/lld/em_asm_O0.wat.out --- binaryen-91/test/lld/em_asm_O0.wat.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/em_asm_O0.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -1,128 +1,123 @@ (module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_i32 (func (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "emscripten_asm_const_i" (func $emscripten_asm_const_i (param i32) (result i32))) - (import "env" "emscripten_asm_const_iii" (func $emscripten_asm_const_iii (param i32 i32 i32) (result i32))) - (import "env" "emscripten_asm_const_ii" (func $emscripten_asm_const_ii (param i32 i32) (result i32))) + (import "env" "emscripten_asm_const_int" (func $emscripten_asm_const_int (param i32 i32 i32) (result i32))) (memory $0 2) (data (i32.const 568) "{ Module.print(\"Hello world\"); }\00{ return $0 + $1; }\00{ Module.print(\"Got \" + $0); }\00") (table $0 1 1 funcref) (global $global$0 (mut i32) (i32.const 66192)) - (global $global$1 i32 (i32.const 66192)) - (global $global$2 i32 (i32.const 652)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) (export "main" (func $main)) - (export "__heap_base" (global $global$1)) - (export "__data_end" (global $global$2)) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (func $main (; 3 ;) (result i32) - (local $t1 i32) - (local $t2 i32) + (func $__wasm_call_ctors + (nop) + ) + (func $main (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (global.set $global$0 + (local.tee $2 + (i32.sub + (global.get $global$0) + (i32.const 32) + ) + ) + ) + (i32.store8 offset=31 + (local.get $2) + (i32.const 0) + ) (drop - (call $emscripten_asm_const_i + (call $emscripten_asm_const_int (i32.const 568) + (i32.add + (local.get $2) + (i32.const 31) + ) + (i32.const 0) ) ) - (local.set $t1 - (i32.const 621) + (i32.store8 offset=30 + (local.get $2) + (i32.const 0) + ) + (i32.store16 offset=28 align=1 + (local.get $2) + (i32.const 26985) + ) + (i64.store offset=16 + (local.get $2) + (i64.const 128849018900) + ) + (local.set $3 + (call $emscripten_asm_const_int + (i32.const 601) + (i32.add + (local.get $2) + (i32.const 28) + ) + (i32.add + (local.get $2) + (i32.const 16) + ) + ) ) - (local.set $t2 - (i32.const 601) + (i32.store16 offset=26 align=1 + (local.get $2) + (i32.const 105) + ) + (i32.store + (local.get $2) + (i32.const 42) ) (drop - (call $emscripten_asm_const_ii - (local.get $t1) - (call $emscripten_asm_const_iii - (local.get $t2) - (i32.const 13) - (i32.const 27) + (call $emscripten_asm_const_int + (i32.const 621) + (i32.add + (local.get $2) + (i32.const 26) ) + (local.get $2) ) ) - (i32.const 0) - ) - (func $__wasm_call_ctors (; 4 ;) - (nop) - ) - (func $stackSave (; 5 ;) (result i32) - (global.get $global$0) - ) - (func $stackAlloc (; 6 ;) (param $0 i32) (result i32) - (local $1 i32) (global.set $global$0 - (local.tee $1 - (i32.and - (i32.sub - (global.get $global$0) - (local.get $0) - ) - (i32.const -16) - ) + (i32.add + (local.get $2) + (i32.const 32) ) ) - (local.get $1) - ) - (func $stackRestore (; 7 ;) (param $0 i32) - (global.set $global$0 - (local.get $0) - ) - ) - (func $__growWasmMemory (; 8 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) + (local.get $3) ) ) (; --BEGIN METADATA -- { "asmConsts": { - "568": ["{ Module.print(\"Hello world\"); }", ["i"], [""]], + "568": ["{ Module.print(\"Hello world\"); }", ["iii"], [""]], "601": ["{ return $0 + $1; }", ["iii"], [""]], - "621": ["{ Module.print(\"Got \" + $0); }", ["ii"], [""]] + "621": ["{ Module.print(\"Got \" + $0); }", ["iii"], [""]] }, - "staticBump": 84, "tableSize": 1, "initializers": [ "__wasm_call_ctors" ], "declares": [ + "emscripten_asm_const_int" ], "externs": [ ], - "implementedFunctions": [ - "___wasm_call_ctors", - "_main", - "_stackSave", - "_stackAlloc", - "_stackRestore", - "___growWasmMemory" - ], "exports": [ "__wasm_call_ctors", - "main", - "stackSave", - "stackAlloc", - "stackRestore", - "__growWasmMemory" + "main" ], "namedGlobals": { - "__heap_base" : "66192", - "__data_end" : "652" }, "invokeFuncs": [ ], + "mainReadsParams": 1, "features": [ - ], - "mainReadsParams": 1 + ] } -- END METADATA -- ;) diff -Nru binaryen-91/test/lld/em_asm_shared.wat binaryen-99/test/lld/em_asm_shared.wat --- binaryen-91/test/lld/em_asm_shared.wat 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/em_asm_shared.wat 2021-01-07 20:01:06.000000000 +0000 @@ -1,17 +1,17 @@ (module - (type $0 (func (param i32 i32 i32) (result i32))) - (type $1 (func)) - (type $2 (func (result i32))) - (type $3 (func (param i32 i32) (result i32))) - (import "env" "memory" (memory $0 0)) - (data (global.get $gimport$3) "{ Module.print(\"Hello world\"); }\00\00{ return $0 + $1; }\00ii\00{ Module.print(\"Got \" + $0); }\00i\00") - (import "env" "__indirect_function_table" (table $timport$1 0 funcref)) - (import "env" "__stack_pointer" (global $gimport$2 (mut i32))) - (import "env" "__memory_base" (global $gimport$3 i32)) - (import "env" "__table_base" (global $gimport$4 i32)) - (import "GOT.mem" "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJEEE6bufferE" (global $gimport$6 (mut i32))) - (import "GOT.mem" "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiiEEE6bufferE" (global $gimport$7 (mut i32))) - (import "GOT.mem" "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiEEE6bufferE" (global $gimport$8 (mut i32))) + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (import "env" "memory" (memory $mimport$0 0)) + (data (global.get $gimport$1) "{ Module.print(\"Hello world\"); }\00\00{ return $0 + $1; }\00ii\00{ Module.print(\"Got \" + $0); }\00i\00") + (import "env" "__indirect_function_table" (table $timport$0 0 funcref)) + (import "env" "__stack_pointer" (global $gimport$0 (mut i32))) + (import "env" "__memory_base" (global $gimport$1 i32)) + (import "env" "__table_base" (global $gimport$2 i32)) + (import "GOT.mem" "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJEEE6bufferE" (global $gimport$3 (mut i32))) + (import "GOT.mem" "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiiEEE6bufferE" (global $gimport$4 (mut i32))) + (import "GOT.mem" "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiEEE6bufferE" (global $gimport$5 (mut i32))) (import "env" "emscripten_asm_const_int" (func $emscripten_asm_const_int (param i32 i32 i32) (result i32))) (global $global$0 i32 (i32.const 33)) (global $global$1 i32 (i32.const 54)) @@ -22,18 +22,18 @@ (export "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiiEEE6bufferE" (global $global$1)) (export "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiEEE6bufferE" (global $global$2)) (export "main" (func $main)) - (func $__wasm_call_ctors (; 1 ;) (type $1) + (func $__wasm_call_ctors (call $__wasm_apply_relocs) ) - (func $__wasm_apply_relocs (; 2 ;) (type $1) + (func $__wasm_apply_relocs ) - (func $__original_main (; 3 ;) (type $2) (result i32) + (func $__original_main (result i32) (local $0 i32) (local $1 i32) - (global.set $gimport$2 + (global.set $gimport$0 (local.tee $0 (i32.sub - (global.get $gimport$2) + (global.get $gimport$0) (i32.const 32) ) ) @@ -42,11 +42,11 @@ (call $emscripten_asm_const_int (i32.add (local.tee $1 - (global.get $gimport$3) + (global.get $gimport$1) ) (i32.const 0) ) - (global.get $gimport$6) + (global.get $gimport$3) (i32.const 0) ) ) @@ -61,7 +61,7 @@ (local.get $1) (i32.const 34) ) - (global.get $gimport$7) + (global.get $gimport$4) (i32.add (local.get $0) (i32.const 16) @@ -74,11 +74,11 @@ (local.get $1) (i32.const 57) ) - (global.get $gimport$8) + (global.get $gimport$5) (local.get $0) ) ) - (global.set $gimport$2 + (global.set $gimport$0 (i32.add (local.get $0) (i32.const 32) @@ -86,10 +86,14 @@ ) (i32.const 0) ) - (func $main (; 4 ;) (type $3) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) - ;; custom section "dylink", size 5 + ;; dylink section + ;; memorysize: 90 + ;; memoryalignment: 0 + ;; tablesize: 0 + ;; tablealignment: 0 ;; custom section "producers", size 112 ) diff -Nru binaryen-91/test/lld/em_asm_shared.wat.out binaryen-99/test/lld/em_asm_shared.wat.out --- binaryen-91/test/lld/em_asm_shared.wat.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/em_asm_shared.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -1,58 +1,53 @@ (module - (type $none_=>_i32 (func (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "memory" (memory $0 0)) - (data (global.get $gimport$3) "{ Module.print(\"Hello world\"); }\00\00{ return $0 + $1; }\00ii\00{ Module.print(\"Got \" + $0); }\00i\00") - (import "env" "table" (table $0 0 funcref)) - (import "env" "__memory_base" (global $gimport$3 i32)) - (import "env" "__table_base" (global $gimport$4 i32)) - (import "env" "stackSave" (func $stackSave (result i32))) - (import "env" "stackRestore" (func $stackRestore (param i32))) - (import "env" "g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJEEE6bufferE" (func $g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJEEE6bufferE (result i32))) - (import "env" "g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiiEEE6bufferE" (func $g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiiEEE6bufferE (result i32))) - (import "env" "g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiEEE6bufferE" (func $g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiEEE6bufferE (result i32))) - (import "env" "emscripten_asm_const_iii" (func $emscripten_asm_const_iii (param i32 i32 i32) (result i32))) - (global $gimport$6 (mut i32) (i32.const 0)) - (global $gimport$7 (mut i32) (i32.const 0)) - (global $gimport$8 (mut i32) (i32.const 0)) + (import "env" "memory" (memory $mimport$0 0)) + (data (global.get $gimport$1) "{ Module.print(\"Hello world\"); }\00\00{ return $0 + $1; }\00ii\00{ Module.print(\"Got \" + $0); }\00i\00") + (import "env" "__indirect_function_table" (table $timport$0 0 funcref)) + (import "env" "__stack_pointer" (global $gimport$0 (mut i32))) + (import "env" "__memory_base" (global $gimport$1 i32)) + (import "env" "__table_base" (global $gimport$2 i32)) + (import "GOT.mem" "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJEEE6bufferE" (global $gimport$3 (mut i32))) + (import "GOT.mem" "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiiEEE6bufferE" (global $gimport$4 (mut i32))) + (import "GOT.mem" "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiEEE6bufferE" (global $gimport$5 (mut i32))) + (import "env" "emscripten_asm_const_int" (func $emscripten_asm_const_int (param i32 i32 i32) (result i32))) (global $global$0 i32 (i32.const 33)) (global $global$1 i32 (i32.const 54)) (global $global$2 i32 (i32.const 88)) + (export "__post_instantiate" (func $__wasm_call_ctors)) (export "__original_main" (func $__original_main)) (export "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJEEE6bufferE" (global $global$0)) (export "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiiEEE6bufferE" (global $global$1)) (export "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiEEE6bufferE" (global $global$2)) (export "main" (func $main)) - (export "__post_instantiate" (func $__post_instantiate)) - (func $__wasm_call_ctors (; 6 ;) + (func $__wasm_call_ctors (call $__wasm_apply_relocs) ) - (func $__wasm_apply_relocs (; 7 ;) + (func $__wasm_apply_relocs (nop) ) - (func $__original_main (; 8 ;) (result i32) + (func $__original_main (result i32) (local $0 i32) (local $1 i32) - (call $stackRestore + (global.set $gimport$0 (local.tee $0 (i32.sub - (call $stackSave) + (global.get $gimport$0) (i32.const 32) ) ) ) (drop - (call $emscripten_asm_const_iii + (call $emscripten_asm_const_int (i32.add (local.tee $1 - (global.get $gimport$3) + (global.get $gimport$1) ) (i32.const 0) ) - (global.get $gimport$6) + (global.get $gimport$3) (i32.const 0) ) ) @@ -62,12 +57,12 @@ ) (i32.store (local.get $0) - (call $emscripten_asm_const_iii + (call $emscripten_asm_const_int (i32.add (local.get $1) (i32.const 34) ) - (global.get $gimport$7) + (global.get $gimport$4) (i32.add (local.get $0) (i32.const 16) @@ -75,16 +70,16 @@ ) ) (drop - (call $emscripten_asm_const_iii + (call $emscripten_asm_const_int (i32.add (local.get $1) (i32.const 57) ) - (global.get $gimport$8) + (global.get $gimport$5) (local.get $0) ) ) - (call $stackRestore + (global.set $gimport$0 (i32.add (local.get $0) (i32.const 32) @@ -92,24 +87,9 @@ ) (i32.const 0) ) - (func $main (; 9 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) - (func $__post_instantiate (; 10 ;) - (call $__assign_got_enties) - (call $__wasm_call_ctors) - ) - (func $__assign_got_enties (; 11 ;) - (global.set $gimport$6 - (call $g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJEEE6bufferE) - ) - (global.set $gimport$7 - (call $g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiiEEE6bufferE) - ) - (global.set $gimport$8 - (call $g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiEEE6bufferE) - ) - ) ) (; --BEGIN METADATA -- @@ -119,28 +99,22 @@ "34": ["{ return $0 + $1; }", ["iii"], [""]], "57": ["{ Module.print(\"Got \" + $0); }", ["iii"], [""]] }, - "staticBump": 0, "tableSize": 0, "declares": [ - "stackSave", - "stackRestore", - "g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJEEE6bufferE", - "g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiiEEE6bufferE", - "g$_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiEEE6bufferE" + "emscripten_asm_const_int" ], "externs": [ + "___stack_pointer", "___memory_base", - "___table_base" - ], - "implementedFunctions": [ - "___original_main", - "_main", - "___post_instantiate" + "___table_base", + "__ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJEEE6bufferE", + "__ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiiEEE6bufferE", + "__ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJiEEE6bufferE" ], "exports": [ + "__post_instantiate", "__original_main", - "main", - "__post_instantiate" + "main" ], "namedGlobals": { "_ZN20__em_asm_sig_builderI19__em_asm_type_tupleIJEEE6bufferE" : "33", @@ -149,9 +123,9 @@ }, "invokeFuncs": [ ], + "mainReadsParams": 0, "features": [ - ], - "mainReadsParams": 0 + ] } -- END METADATA -- ;) diff -Nru binaryen-91/test/lld/em_asm_table.wat.out binaryen-99/test/lld/em_asm_table.wat.out --- binaryen-91/test/lld/em_asm_table.wat.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/em_asm_table.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -1,61 +1,26 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (import "env" "memory" (memory $0 8192)) + (import "env" "memory" (memory $2 8192)) (import "env" "emscripten_log" (func $fimport$0 (param i32 i32))) - (import "env" "emscripten_asm_const_iii" (func $emscripten_asm_const_iii (param i32 i32 i32) (result i32))) + (import "env" "emscripten_asm_const_int" (func $fimport$1 (param i32 i32 i32) (result i32))) (table $0 159609 funcref) - (elem (i32.const 1) $fimport$0 $emscripten_asm_const_iii) + (elem (i32.const 1) $fimport$0 $fimport$1) (global $global$0 (mut i32) (i32.const 1024)) (global $global$1 i32 (i32.const 1048)) (export "__data_end" (global $global$1)) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) - (export "__growWasmMemory" (func $__growWasmMemory)) (export "dynCall_vii" (func $dynCall_vii)) (export "dynCall_iiii" (func $dynCall_iiii)) - (func $stackSave (; 2 ;) (result i32) - (global.get $global$0) - ) - (func $stackAlloc (; 3 ;) (param $0 i32) (result i32) - (local $1 i32) - (global.set $global$0 - (local.tee $1 - (i32.and - (i32.sub - (global.get $global$0) - (local.get $0) - ) - (i32.const -16) - ) - ) - ) - (local.get $1) - ) - (func $stackRestore (; 4 ;) (param $0 i32) - (global.set $global$0 - (local.get $0) - ) - ) - (func $__growWasmMemory (; 5 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) - (func $dynCall_vii (; 6 ;) (param $fptr i32) (param $0 i32) (param $1 i32) + (func $dynCall_vii (param $fptr i32) (param $0 i32) (param $1 i32) (call_indirect (type $i32_i32_=>_none) (local.get $0) (local.get $1) (local.get $fptr) ) ) - (func $dynCall_iiii (; 7 ;) (param $fptr i32) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $dynCall_iiii (param $fptr i32) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (call_indirect (type $i32_i32_i32_=>_i32) (local.get $0) (local.get $1) @@ -67,26 +32,14 @@ (; --BEGIN METADATA -- { - "staticBump": 480, "tableSize": 159609, "declares": [ - "emscripten_log" + "emscripten_log", + "emscripten_asm_const_int" ], "externs": [ ], - "implementedFunctions": [ - "_stackSave", - "_stackAlloc", - "_stackRestore", - "___growWasmMemory", - "_dynCall_vii", - "_dynCall_iiii" - ], "exports": [ - "stackSave", - "stackAlloc", - "stackRestore", - "__growWasmMemory", "dynCall_vii", "dynCall_iiii" ], @@ -95,9 +48,9 @@ }, "invokeFuncs": [ ], + "mainReadsParams": 0, "features": [ - ], - "mainReadsParams": 0 + ] } -- END METADATA -- ;) diff -Nru binaryen-91/test/lld/em_asm.wat binaryen-99/test/lld/em_asm.wat --- binaryen-91/test/lld/em_asm.wat 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/em_asm.wat 2021-01-07 20:01:06.000000000 +0000 @@ -1,21 +1,19 @@ (module - (type $0 (func (param i32 i32 i32) (result i32))) - (type $1 (func)) - (type $2 (func (result i32))) - (type $3 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "emscripten_asm_const_int" (func $emscripten_asm_const_int (param i32 i32 i32) (result i32))) (memory $0 2) (data (i32.const 568) "{ Module.print(\"Hello world\"); }\00\00{ return $0 + $1; }\00ii\00{ Module.print(\"Got \" + $0); }\00i\00") (table $0 1 1 funcref) (global $global$0 (mut i32) (i32.const 66208)) - (global $global$1 i32 (i32.const 658)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) (export "main" (func $main)) - (export "__data_end" (global $global$1)) - (func $__wasm_call_ctors (; 1 ;) (type $1) + (func $__wasm_call_ctors ) - (func $__original_main (; 2 ;) (type $2) (result i32) + (func $__original_main (result i32) (local $0 i32) (global.set $global$0 (local.tee $0 @@ -62,7 +60,7 @@ ) (i32.const 0) ) - (func $main (; 3 ;) (type $3) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) ;; custom section "producers", size 112 diff -Nru binaryen-91/test/lld/em_asm.wat.mem.out binaryen-99/test/lld/em_asm.wat.mem.out --- binaryen-91/test/lld/em_asm.wat.mem.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/em_asm.wat.mem.out 2021-01-07 20:01:06.000000000 +0000 @@ -1,27 +1,19 @@ (module - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "emscripten_asm_const_iii" (func $emscripten_asm_const_iii (param i32 i32 i32) (result i32))) + (import "env" "emscripten_asm_const_int" (func $emscripten_asm_const_int (param i32 i32 i32) (result i32))) (memory $0 2) (table $0 1 1 funcref) (global $global$0 (mut i32) (i32.const 66208)) - (global $global$1 i32 (i32.const 658)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) (export "main" (func $main)) - (export "__data_end" (global $global$1)) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (func $__wasm_call_ctors (; 1 ;) + (func $__wasm_call_ctors (nop) ) - (func $__original_main (; 2 ;) (result i32) + (func $__original_main (result i32) (local $0 i32) (global.set $global$0 (local.tee $0 @@ -32,7 +24,7 @@ ) ) (drop - (call $emscripten_asm_const_iii + (call $emscripten_asm_const_int (i32.const 568) (i32.const 601) (i32.const 0) @@ -44,7 +36,7 @@ ) (i32.store (local.get $0) - (call $emscripten_asm_const_iii + (call $emscripten_asm_const_int (i32.const 602) (i32.const 622) (i32.add @@ -54,7 +46,7 @@ ) ) (drop - (call $emscripten_asm_const_iii + (call $emscripten_asm_const_int (i32.const 625) (i32.const 656) (local.get $0) @@ -68,37 +60,9 @@ ) (i32.const 0) ) - (func $main (; 3 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) - (func $stackSave (; 4 ;) (result i32) - (global.get $global$0) - ) - (func $stackAlloc (; 5 ;) (param $0 i32) (result i32) - (local $1 i32) - (global.set $global$0 - (local.tee $1 - (i32.and - (i32.sub - (global.get $global$0) - (local.get $0) - ) - (i32.const -16) - ) - ) - ) - (local.get $1) - ) - (func $stackRestore (; 6 ;) (param $0 i32) - (global.set $global$0 - (local.get $0) - ) - ) - (func $__growWasmMemory (; 7 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) ) (; --BEGIN METADATA -- @@ -108,39 +72,26 @@ "602": ["{ return $0 + $1; }", ["iii"], [""]], "625": ["{ Module.print(\"Got \" + $0); }", ["iii"], [""]] }, - "staticBump": 90, "tableSize": 1, "initializers": [ "__wasm_call_ctors" ], "declares": [ + "emscripten_asm_const_int" ], "externs": [ ], - "implementedFunctions": [ - "___wasm_call_ctors", - "_main", - "_stackSave", - "_stackAlloc", - "_stackRestore", - "___growWasmMemory" - ], "exports": [ "__wasm_call_ctors", - "main", - "stackSave", - "stackAlloc", - "stackRestore", - "__growWasmMemory" + "main" ], "namedGlobals": { - "__data_end" : "658" }, "invokeFuncs": [ ], + "mainReadsParams": 0, "features": [ - ], - "mainReadsParams": 0 + ] } -- END METADATA -- ;) diff -Nru binaryen-91/test/lld/em_asm.wat.out binaryen-99/test/lld/em_asm.wat.out --- binaryen-91/test/lld/em_asm.wat.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/em_asm.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -1,28 +1,20 @@ (module - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "emscripten_asm_const_iii" (func $emscripten_asm_const_iii (param i32 i32 i32) (result i32))) + (import "env" "emscripten_asm_const_int" (func $emscripten_asm_const_int (param i32 i32 i32) (result i32))) (memory $0 2) (data (i32.const 568) "{ Module.print(\"Hello world\"); }\00\00{ return $0 + $1; }\00ii\00{ Module.print(\"Got \" + $0); }\00i\00") (table $0 1 1 funcref) (global $global$0 (mut i32) (i32.const 66208)) - (global $global$1 i32 (i32.const 658)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) (export "main" (func $main)) - (export "__data_end" (global $global$1)) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (func $__wasm_call_ctors (; 1 ;) + (func $__wasm_call_ctors (nop) ) - (func $__original_main (; 2 ;) (result i32) + (func $__original_main (result i32) (local $0 i32) (global.set $global$0 (local.tee $0 @@ -33,7 +25,7 @@ ) ) (drop - (call $emscripten_asm_const_iii + (call $emscripten_asm_const_int (i32.const 568) (i32.const 601) (i32.const 0) @@ -45,7 +37,7 @@ ) (i32.store (local.get $0) - (call $emscripten_asm_const_iii + (call $emscripten_asm_const_int (i32.const 602) (i32.const 622) (i32.add @@ -55,7 +47,7 @@ ) ) (drop - (call $emscripten_asm_const_iii + (call $emscripten_asm_const_int (i32.const 625) (i32.const 656) (local.get $0) @@ -69,37 +61,9 @@ ) (i32.const 0) ) - (func $main (; 3 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) - (func $stackSave (; 4 ;) (result i32) - (global.get $global$0) - ) - (func $stackAlloc (; 5 ;) (param $0 i32) (result i32) - (local $1 i32) - (global.set $global$0 - (local.tee $1 - (i32.and - (i32.sub - (global.get $global$0) - (local.get $0) - ) - (i32.const -16) - ) - ) - ) - (local.get $1) - ) - (func $stackRestore (; 6 ;) (param $0 i32) - (global.set $global$0 - (local.get $0) - ) - ) - (func $__growWasmMemory (; 7 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) ) (; --BEGIN METADATA -- @@ -109,39 +73,26 @@ "602": ["{ return $0 + $1; }", ["iii"], [""]], "625": ["{ Module.print(\"Got \" + $0); }", ["iii"], [""]] }, - "staticBump": 90, "tableSize": 1, "initializers": [ "__wasm_call_ctors" ], "declares": [ + "emscripten_asm_const_int" ], "externs": [ ], - "implementedFunctions": [ - "___wasm_call_ctors", - "_main", - "_stackSave", - "_stackAlloc", - "_stackRestore", - "___growWasmMemory" - ], "exports": [ "__wasm_call_ctors", - "main", - "stackSave", - "stackAlloc", - "stackRestore", - "__growWasmMemory" + "main" ], "namedGlobals": { - "__data_end" : "658" }, "invokeFuncs": [ ], + "mainReadsParams": 0, "features": [ - ], - "mainReadsParams": 0 + ] } -- END METADATA -- ;) diff -Nru binaryen-91/test/lld/em_js_O0.wat.out binaryen-99/test/lld/em_js_O0.wat.out --- binaryen-91/test/lld/em_js_O0.wat.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/em_js_O0.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,4 @@ (module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) (import "env" "memory" (memory $0 256 256)) (data (i32.const 1024) "(void)<::>{ out(\"no args works\"); }\00(void)<::>{ out(\"no args returning int\"); return 12; }\00(void)<::>{ out(\"no args returning double\"); return 12.25; }\00(int x)<::>{ out(\" takes ints: \" + x);}\00(double d)<::>{ out(\" takes doubles: \" + d);}\00(char* str)<::>{ out(\" takes strings: \" + UTF8ToString(str)); return 7.75; }\00(int x, int y)<::>{ out(\" takes multiple ints: \" + x + \", \" + y); return 6; }\00(int x, const char* str, double d)<::>{ out(\" mixed arg types: \" + x + \", \" + UTF8ToString(str) + \", \" + d); return 8.125; }\00(int unused)<::>{ out(\" ignores unused args\"); return 5.5; }\00(int x, int y)<::>{ out(\" skips unused args: \" + y); return 6; }\00(double x, double y, double z)<::>{ out(\" \" + x + \" + \" + z); return x + z; }\00(void)<::>{ out(\" can use <::> separator in user code\"); return 15; }\00(void)<::>{ var x, y; x = {}; y = 3; x[y] = [1, 2, 3]; out(\" can have commas in user code: \" + x[y]); return x[y][1]; }\00(void)<::>{ var jsString = \'\e3\81\93\e3\82\93\e3\81\ab\e3\81\a1\e3\81\af\'; var lengthBytes = lengthBytesUTF8(jsString); var stringOnWasmHeap = _malloc(lengthBytes); stringToUTF8(jsString, stringOnWasmHeap, lengthBytes+1); return stringOnWasmHeap; }\00(void)<::>{ var jsString = \'hello from js\'; var lengthBytes = jsString.length+1; var stringOnWasmHeap = _malloc(lengthBytes); stringToUTF8(jsString, stringOnWasmHeap, lengthBytes+1); return stringOnWasmHeap; }\00BEGIN\n\00 noarg_int returned: %d\n\00 noarg_double returned: %f\n\00 stringarg returned: %f\n\00string arg\00 multi_intarg returned: %d\n\00 multi_mixedarg returned: %f\n\00hello\00 unused_args returned: %d\n\00 skip_args returned: %f\n\00 add_outer returned: %f\n\00 user_separator returned: %d\n\00 user_comma returned: %d\n\00 return_str returned: %s\n\00 return_utf8_str returned: %s\n\00END\n\00\00\cc\1a\00\00\00\00\00\00\00\00\00\00\00\00\00\00T!\"\19\0d\01\02\03\11K\1c\0c\10\04\0b\1d\12\1e\'hnopqb \05\06\0f\13\14\15\1a\08\16\07($\17\18\t\n\0e\1b\1f%#\83\82}&*+<=>?CGJMXYZ[\\]^_`acdefgijklrstyz{|\00\00\00\00\00\00\00\00\00Illegal byte sequence\00Domain error\00Result not representable\00Not a tty\00Permission denied\00Operation not permitted\00No such file or directory\00No such process\00File exists\00Value too large for data type\00No space left on device\00Out of memory\00Resource busy\00Interrupted system call\00Resource temporarily unavailable\00Invalid seek\00Cross-device link\00Read-only file system\00Directory not empty\00Connection reset by peer\00Operation timed out\00Connection refused\00Host is down\00Host is unreachable\00Address in use\00Broken pipe\00I/O error\00No such device or address\00Block device required\00No such device\00Not a directory\00Is a directory\00Text file busy\00Exec format error\00Invalid argument\00Argument list too long\00Symbolic link loop\00Filename too long\00Too many open files in system\00No file descriptors available\00Bad file descriptor\00No child process\00Bad address\00File too large\00Too many links\00No locks available\00Resource deadlock would occur\00State not recoverable\00Previous owner died\00Operation canceled\00Function not implemented\00No message of desired type\00Identifier removed\00Device not a stream\00No data available\00Device timeout\00Out of streams resources\00Link has been severed\00Protocol error\00Bad message\00File descriptor in bad state\00Not a socket\00Destination address required\00Message too large\00Protocol wrong type for socket\00Protocol not available\00Protocol not supported\00Socket type not supported\00Not supported\00Protocol family not supported\00Address family not supported by protocol\00Address not available\00Network is down\00Network unreachable\00Connection reset by network\00Connection aborted\00No buffer space available\00Socket is connected\00Socket not connected\00Cannot send after socket shutdown\00Operation already in progress\00Operation in progress\00Stale file handle\00Remote I/O error\00Quota exceeded\00No medium found\00Wrong medium type\00No error information\00\00-+ 0X0x\00(null)\00\00\00\00\11\00\n\00\11\11\11\00\00\00\00\05\00\00\00\00\00\00\t\00\00\00\00\0b\00\00\00\00\00\00\00\00\11\00\0f\n\11\11\11\03\n\07\00\01\13\t\0b\0b\00\00\t\06\0b\00\00\0b\00\06\11\00\00\00\11\11\11\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\00\00\00\00\00\11\00\n\n\11\11\11\00\n\00\00\02\00\t\0b\00\00\00\t\00\0b\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\0c\00\00\00\00\t\0c\00\00\00\00\00\0c\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\04\0d\00\00\00\00\t\0e\00\00\00\00\00\0e\00\00\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\00\0f\00\00\00\00\t\10\00\00\00\00\00\10\00\00\10\00\00\12\00\00\00\12\12\12\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\12\12\12\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\00\n\00\00\00\00\t\0b\00\00\00\00\00\0b\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\0c\00\00\00\00\t\0c\00\00\00\00\00\0c\00\00\0c\00\000123456789ABCDEF-0X+0X 0X-0x+0x 0x\00inf\00INF\00nan\00NAN\00.\00") (data (i32.const 5232) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") @@ -11,38 +8,6 @@ (global $global$2 i32 (i32.const 7232)) (export "__heap_base" (global $global$1)) (export "__data_end" (global $global$2)) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (func $stackSave (; 0 ;) (result i32) - (global.get $global$0) - ) - (func $stackAlloc (; 1 ;) (param $0 i32) (result i32) - (local $1 i32) - (global.set $global$0 - (local.tee $1 - (i32.and - (i32.sub - (global.get $global$0) - (local.get $0) - ) - (i32.const -16) - ) - ) - ) - (local.get $1) - ) - (func $stackRestore (; 2 ;) (param $0 i32) - (global.set $global$0 - (local.get $0) - ) - ) - (func $__growWasmMemory (; 3 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) ) (; --BEGIN METADATA -- @@ -50,23 +15,12 @@ "emJsFuncs": { "noarg": "(void)<::>{ out(\"no args works\"); }" }, - "staticBump": 6664, "tableSize": 0, "declares": [ ], "externs": [ ], - "implementedFunctions": [ - "_stackSave", - "_stackAlloc", - "_stackRestore", - "___growWasmMemory" - ], "exports": [ - "stackSave", - "stackAlloc", - "stackRestore", - "__growWasmMemory" ], "namedGlobals": { "__heap_base" : "5250112", @@ -74,9 +28,9 @@ }, "invokeFuncs": [ ], + "mainReadsParams": 0, "features": [ - ], - "mainReadsParams": 0 + ] } -- END METADATA -- ;) diff -Nru binaryen-91/test/lld/hello_world.passive.wat.out binaryen-99/test/lld/hello_world.passive.wat.out --- binaryen-91/test/lld/hello_world.passive.wat.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/hello_world.passive.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -1,8 +1,7 @@ (module - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) - (type $i32_=>_none (func (param i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "puts" (func $puts (param i32) (result i32))) (memory $0 2) @@ -16,21 +15,17 @@ (export "__heap_base" (global $global$1)) (export "__data_end" (global $global$2)) (export "main" (func $main)) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (func $__wasm_call_ctors (; 1 ;) + (func $__wasm_call_ctors (call $__wasm_init_memory) ) - (func $__wasm_init_memory (; 2 ;) + (func $__wasm_init_memory (memory.init 0 (i32.const 568) (i32.const 0) (i32.const 14) ) ) - (func $__original_main (; 3 ;) (result i32) + (func $__original_main (result i32) (drop (call $puts (i32.const 568) @@ -38,42 +33,13 @@ ) (i32.const 0) ) - (func $main (; 4 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) - (func $stackSave (; 5 ;) (result i32) - (global.get $global$0) - ) - (func $stackAlloc (; 6 ;) (param $0 i32) (result i32) - (local $1 i32) - (global.set $global$0 - (local.tee $1 - (i32.and - (i32.sub - (global.get $global$0) - (local.get $0) - ) - (i32.const -16) - ) - ) - ) - (local.get $1) - ) - (func $stackRestore (; 7 ;) (param $0 i32) - (global.set $global$0 - (local.get $0) - ) - ) - (func $__growWasmMemory (; 8 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) ) (; --BEGIN METADATA -- { - "staticBump": 13, "tableSize": 1, "initializers": [ "__wasm_call_ctors" @@ -83,21 +49,9 @@ ], "externs": [ ], - "implementedFunctions": [ - "___wasm_call_ctors", - "_main", - "_stackSave", - "_stackAlloc", - "_stackRestore", - "___growWasmMemory" - ], "exports": [ "__wasm_call_ctors", - "main", - "stackSave", - "stackAlloc", - "stackRestore", - "__growWasmMemory" + "main" ], "namedGlobals": { "__heap_base" : "66128", @@ -105,9 +59,9 @@ }, "invokeFuncs": [ ], + "mainReadsParams": 0, "features": [ - ], - "mainReadsParams": 0 + ] } -- END METADATA -- ;) diff -Nru binaryen-91/test/lld/hello_world.wat binaryen-99/test/lld/hello_world.wat --- binaryen-91/test/lld/hello_world.wat 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/hello_world.wat 2021-01-07 20:01:06.000000000 +0000 @@ -1,21 +1,19 @@ (module - (type $0 (func (param i32) (result i32))) - (type $1 (func)) - (type $2 (func (result i32))) - (type $3 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "puts" (func $puts (param i32) (result i32))) (memory $0 2) (data (i32.const 568) "Hello, world\00") (table $0 1 1 funcref) (global $global$0 (mut i32) (i32.const 66128)) - (global $global$1 i32 (i32.const 581)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) (export "main" (func $main)) - (export "__data_end" (global $global$1)) - (func $__wasm_call_ctors (; 1 ;) (type $1) + (func $__wasm_call_ctors ) - (func $__original_main (; 2 ;) (type $2) (result i32) + (func $__original_main (result i32) (drop (call $puts (i32.const 568) @@ -23,7 +21,7 @@ ) (i32.const 0) ) - (func $main (; 3 ;) (type $3) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) ;; custom section "producers", size 112 diff -Nru binaryen-91/test/lld/hello_world.wat.mem.out binaryen-99/test/lld/hello_world.wat.mem.out --- binaryen-91/test/lld/hello_world.wat.mem.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/hello_world.wat.mem.out 2021-01-07 20:01:06.000000000 +0000 @@ -1,26 +1,19 @@ (module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_i32 (func (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "puts" (func $puts (param i32) (result i32))) (memory $0 2) (table $0 1 1 funcref) (global $global$0 (mut i32) (i32.const 66128)) - (global $global$1 i32 (i32.const 581)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) (export "main" (func $main)) - (export "__data_end" (global $global$1)) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (func $__wasm_call_ctors (; 1 ;) + (func $__wasm_call_ctors (nop) ) - (func $__original_main (; 2 ;) (result i32) + (func $__original_main (result i32) (drop (call $puts (i32.const 568) @@ -28,42 +21,13 @@ ) (i32.const 0) ) - (func $main (; 3 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) - (func $stackSave (; 4 ;) (result i32) - (global.get $global$0) - ) - (func $stackAlloc (; 5 ;) (param $0 i32) (result i32) - (local $1 i32) - (global.set $global$0 - (local.tee $1 - (i32.and - (i32.sub - (global.get $global$0) - (local.get $0) - ) - (i32.const -16) - ) - ) - ) - (local.get $1) - ) - (func $stackRestore (; 6 ;) (param $0 i32) - (global.set $global$0 - (local.get $0) - ) - ) - (func $__growWasmMemory (; 7 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) ) (; --BEGIN METADATA -- { - "staticBump": 13, "tableSize": 1, "initializers": [ "__wasm_call_ctors" @@ -73,30 +37,17 @@ ], "externs": [ ], - "implementedFunctions": [ - "___wasm_call_ctors", - "_main", - "_stackSave", - "_stackAlloc", - "_stackRestore", - "___growWasmMemory" - ], "exports": [ "__wasm_call_ctors", - "main", - "stackSave", - "stackAlloc", - "stackRestore", - "__growWasmMemory" + "main" ], "namedGlobals": { - "__data_end" : "581" }, "invokeFuncs": [ ], + "mainReadsParams": 0, "features": [ - ], - "mainReadsParams": 0 + ] } -- END METADATA -- ;) diff -Nru binaryen-91/test/lld/hello_world.wat.out binaryen-99/test/lld/hello_world.wat.out --- binaryen-91/test/lld/hello_world.wat.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/hello_world.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -1,27 +1,20 @@ (module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_i32 (func (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "puts" (func $puts (param i32) (result i32))) (memory $0 2) (data (i32.const 568) "Hello, world\00") (table $0 1 1 funcref) (global $global$0 (mut i32) (i32.const 66128)) - (global $global$1 i32 (i32.const 581)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) (export "main" (func $main)) - (export "__data_end" (global $global$1)) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (func $__wasm_call_ctors (; 1 ;) + (func $__wasm_call_ctors (nop) ) - (func $__original_main (; 2 ;) (result i32) + (func $__original_main (result i32) (drop (call $puts (i32.const 568) @@ -29,42 +22,13 @@ ) (i32.const 0) ) - (func $main (; 3 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) - (func $stackSave (; 4 ;) (result i32) - (global.get $global$0) - ) - (func $stackAlloc (; 5 ;) (param $0 i32) (result i32) - (local $1 i32) - (global.set $global$0 - (local.tee $1 - (i32.and - (i32.sub - (global.get $global$0) - (local.get $0) - ) - (i32.const -16) - ) - ) - ) - (local.get $1) - ) - (func $stackRestore (; 6 ;) (param $0 i32) - (global.set $global$0 - (local.get $0) - ) - ) - (func $__growWasmMemory (; 7 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) ) (; --BEGIN METADATA -- { - "staticBump": 13, "tableSize": 1, "initializers": [ "__wasm_call_ctors" @@ -74,30 +38,17 @@ ], "externs": [ ], - "implementedFunctions": [ - "___wasm_call_ctors", - "_main", - "_stackSave", - "_stackAlloc", - "_stackRestore", - "___growWasmMemory" - ], "exports": [ "__wasm_call_ctors", - "main", - "stackSave", - "stackAlloc", - "stackRestore", - "__growWasmMemory" + "main" ], "namedGlobals": { - "__data_end" : "581" }, "invokeFuncs": [ ], + "mainReadsParams": 0, "features": [ - ], - "mainReadsParams": 0 + ] } -- END METADATA -- ;) diff -Nru binaryen-91/test/lld/init.wat binaryen-99/test/lld/init.wat --- binaryen-91/test/lld/init.wat 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/init.wat 2021-01-07 20:01:06.000000000 +0000 @@ -1,32 +1,30 @@ (module - (type $0 (func)) - (type $1 (func (result i32))) - (type $2 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (memory $0 2) (table $0 1 1 funcref) (global $global$0 (mut i32) (i32.const 66112)) - (global $global$1 i32 (i32.const 576)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) (export "main" (func $main)) - (export "__data_end" (global $global$1)) - (func $__wasm_call_ctors (; 0 ;) (type $0) + (func $__wasm_call_ctors (call $init_x) (call $init_y) ) - (func $init_x (; 1 ;) (type $0) + (func $init_x (i32.store offset=568 (i32.const 0) (i32.const 14) ) ) - (func $init_y (; 2 ;) (type $0) + (func $init_y (i32.store offset=572 (i32.const 0) (i32.const 144) ) ) - (func $__original_main (; 3 ;) (type $1) (result i32) + (func $__original_main (result i32) (i32.add (i32.load offset=568 (i32.const 0) @@ -36,7 +34,7 @@ ) ) ) - (func $main (; 4 ;) (type $2) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) ;; custom section "producers", size 112 diff -Nru binaryen-91/test/lld/init.wat.out binaryen-99/test/lld/init.wat.out --- binaryen-91/test/lld/init.wat.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/init.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -1,38 +1,30 @@ (module (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (memory $0 2) (table $0 1 1 funcref) (global $global$0 (mut i32) (i32.const 66112)) - (global $global$1 i32 (i32.const 576)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) (export "main" (func $main)) - (export "__data_end" (global $global$1)) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (func $__wasm_call_ctors (; 0 ;) + (func $__wasm_call_ctors (call $init_x) (call $init_y) ) - (func $init_x (; 1 ;) + (func $init_x (i32.store offset=568 (i32.const 0) (i32.const 14) ) ) - (func $init_y (; 2 ;) + (func $init_y (i32.store offset=572 (i32.const 0) (i32.const 144) ) ) - (func $__original_main (; 3 ;) (result i32) + (func $__original_main (result i32) (i32.add (i32.load offset=568 (i32.const 0) @@ -42,42 +34,13 @@ ) ) ) - (func $main (; 4 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) - (func $stackSave (; 5 ;) (result i32) - (global.get $global$0) - ) - (func $stackAlloc (; 6 ;) (param $0 i32) (result i32) - (local $1 i32) - (global.set $global$0 - (local.tee $1 - (i32.and - (i32.sub - (global.get $global$0) - (local.get $0) - ) - (i32.const -16) - ) - ) - ) - (local.get $1) - ) - (func $stackRestore (; 7 ;) (param $0 i32) - (global.set $global$0 - (local.get $0) - ) - ) - (func $__growWasmMemory (; 8 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) ) (; --BEGIN METADATA -- { - "staticBump": 8, "tableSize": 1, "initializers": [ "__wasm_call_ctors" @@ -86,30 +49,17 @@ ], "externs": [ ], - "implementedFunctions": [ - "___wasm_call_ctors", - "_main", - "_stackSave", - "_stackAlloc", - "_stackRestore", - "___growWasmMemory" - ], "exports": [ "__wasm_call_ctors", - "main", - "stackSave", - "stackAlloc", - "stackRestore", - "__growWasmMemory" + "main" ], "namedGlobals": { - "__data_end" : "576" }, "invokeFuncs": [ ], + "mainReadsParams": 0, "features": [ - ], - "mainReadsParams": 0 + ] } -- END METADATA -- ;) diff -Nru binaryen-91/test/lld/longjmp.wat binaryen-99/test/lld/longjmp.wat --- binaryen-91/test/lld/longjmp.wat 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/longjmp.wat 2021-01-07 20:01:06.000000000 +0000 @@ -1,8 +1,8 @@ (module (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) @@ -11,24 +11,21 @@ (import "env" "malloc" (func $fimport$0 (param i32) (result i32))) (import "env" "saveSetjmp" (func $fimport$1 (param i32 i32 i32 i32) (result i32))) (import "env" "getTempRet0" (func $fimport$2 (result i32))) - (import "env" "emscripten_longjmp_jmpbuf" (func $fimport$3 (param i32 i32))) - (import "env" "__invoke_void_i32_i32" (func $fimport$4 (param i32 i32 i32))) + (import "env" "emscripten_longjmp" (func $fimport$3 (param i32 i32))) + (import "env" "invoke_vii" (func $fimport$4 (param i32 i32 i32))) (import "env" "testSetjmp" (func $fimport$5 (param i32 i32 i32) (result i32))) (import "env" "setTempRet0" (func $fimport$6 (param i32))) (import "env" "free" (func $fimport$7 (param i32))) - (import "env" "emscripten_longjmp" (func $fimport$8 (param i32 i32))) (memory $0 2) (table $0 2 2 funcref) (elem (i32.const 1) $fimport$3) (global $global$0 (mut i32) (i32.const 66112)) - (global $global$1 i32 (i32.const 576)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $0)) (export "main" (func $2)) - (export "__data_end" (global $global$1)) - (func $0 (; 9 ;) + (func $0 ) - (func $1 (; 10 ;) (result i32) + (func $1 (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -122,13 +119,13 @@ (i32.const 0) ) ) - (call $fimport$8 + (call $fimport$3 (local.get $0) (local.get $3) ) (unreachable) ) - (func $2 (; 11 ;) (param $0 i32) (param $1 i32) (result i32) + (func $2 (param $0 i32) (param $1 i32) (result i32) (call $1) ) ;; custom section "producers", size 112 diff -Nru binaryen-91/test/lld/longjmp.wat.out binaryen-99/test/lld/longjmp.wat.out --- binaryen-91/test/lld/longjmp.wat.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/longjmp.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -1,39 +1,33 @@ (module (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $none_=>_none (func)) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (import "env" "malloc" (func $fimport$0 (param i32) (result i32))) (import "env" "saveSetjmp" (func $fimport$1 (param i32 i32 i32 i32) (result i32))) (import "env" "getTempRet0" (func $fimport$2 (result i32))) + (import "env" "emscripten_longjmp" (func $fimport$3 (param i32 i32))) (import "env" "invoke_vii" (func $fimport$4 (param i32 i32 i32))) (import "env" "testSetjmp" (func $fimport$5 (param i32 i32 i32) (result i32))) (import "env" "setTempRet0" (func $fimport$6 (param i32))) (import "env" "free" (func $fimport$7 (param i32))) - (import "env" "emscripten_longjmp" (func $fimport$8 (param i32 i32))) (memory $0 2) (table $0 2 2 funcref) - (elem (i32.const 1) $fimport$8) + (elem (i32.const 1) $fimport$3) (global $global$0 (mut i32) (i32.const 66112)) - (global $global$1 i32 (i32.const 576)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $0)) (export "main" (func $2)) - (export "__data_end" (global $global$1)) (export "dynCall_vii" (func $dynCall_vii)) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (func $0 (; 8 ;) + (func $0 (nop) ) - (func $1 (; 9 ;) (result i32) + (func $1 (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -127,55 +121,26 @@ (i32.const 0) ) ) - (call $fimport$8 + (call $fimport$3 (local.get $0) (local.get $3) ) (unreachable) ) - (func $2 (; 10 ;) (param $0 i32) (param $1 i32) (result i32) + (func $2 (param $0 i32) (param $1 i32) (result i32) (call $1) ) - (func $dynCall_vii (; 11 ;) (param $fptr i32) (param $0 i32) (param $1 i32) + (func $dynCall_vii (param $fptr i32) (param $0 i32) (param $1 i32) (call_indirect (type $i32_i32_=>_none) (local.get $0) (local.get $1) (local.get $fptr) ) ) - (func $stackSave (; 12 ;) (result i32) - (global.get $global$0) - ) - (func $stackAlloc (; 13 ;) (param $0 i32) (result i32) - (local $1 i32) - (global.set $global$0 - (local.tee $1 - (i32.and - (i32.sub - (global.get $global$0) - (local.get $0) - ) - (i32.const -16) - ) - ) - ) - (local.get $1) - ) - (func $stackRestore (; 14 ;) (param $0 i32) - (global.set $global$0 - (local.get $0) - ) - ) - (func $__growWasmMemory (; 15 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) ) (; --BEGIN METADATA -- { - "staticBump": 8, "tableSize": 2, "initializers": [ "__wasm_call_ctors" @@ -184,40 +149,26 @@ "malloc", "saveSetjmp", "getTempRet0", + "emscripten_longjmp", "testSetjmp", "setTempRet0", - "free", - "emscripten_longjmp" + "free" ], "externs": [ ], - "implementedFunctions": [ - "___wasm_call_ctors", - "_main", - "_dynCall_vii", - "_stackSave", - "_stackAlloc", - "_stackRestore", - "___growWasmMemory" - ], "exports": [ "__wasm_call_ctors", "main", - "dynCall_vii", - "stackSave", - "stackAlloc", - "stackRestore", - "__growWasmMemory" + "dynCall_vii" ], "namedGlobals": { - "__data_end" : "576" }, "invokeFuncs": [ "invoke_vii" ], + "mainReadsParams": 0, "features": [ - ], - "mainReadsParams": 0 + ] } -- END METADATA -- ;) diff -Nru binaryen-91/test/lld/main_module_table_2.wat binaryen-99/test/lld/main_module_table_2.wat --- binaryen-91/test/lld/main_module_table_2.wat 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lld/main_module_table_2.wat 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,10 @@ +(module + (import "env" "__stack_pointer" (global $sp (mut i32))) + (import "GOT.func" "__stdio_write" (global $gimport$9 (mut i32))) + (import "env" "table" (table $timport$9 1 funcref)) + (global $global i32 (i32.const 42)) + (export "__stdio_write" (func $__stdio_write)) + (export "__data_end" (global $global)) + (func $__stdio_write + ) +) diff -Nru binaryen-91/test/lld/main_module_table_2.wat.out binaryen-99/test/lld/main_module_table_2.wat.out --- binaryen-91/test/lld/main_module_table_2.wat.out 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lld/main_module_table_2.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,36 @@ +(module + (type $none_=>_none (func)) + (import "env" "table" (table $timport$9 1 funcref)) + (import "env" "__stack_pointer" (global $sp (mut i32))) + (import "GOT.func" "__stdio_write" (global $gimport$9 (mut i32))) + (global $global i32 (i32.const 42)) + (export "__stdio_write" (func $__stdio_write)) + (export "__data_end" (global $global)) + (func $__stdio_write + (nop) + ) +) +(; +--BEGIN METADATA -- +{ + "tableSize": 1, + "declares": [ + ], + "externs": [ + "___stack_pointer", + "___stdio_write" + ], + "exports": [ + "__stdio_write" + ], + "namedGlobals": { + "__data_end" : "42" + }, + "invokeFuncs": [ + ], + "mainReadsParams": 0, + "features": [ + ] +} +-- END METADATA -- +;) diff -Nru binaryen-91/test/lld/main_module_table_3.wat binaryen-99/test/lld/main_module_table_3.wat --- binaryen-91/test/lld/main_module_table_3.wat 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lld/main_module_table_3.wat 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,11 @@ +(module + (import "env" "__stack_pointer" (global $sp (mut i32))) + (import "GOT.func" "__stdio_write" (global $gimport$9 (mut i32))) + (import "env" "table" (table $timport$9 1 funcref)) + (elem (i32.const 0)) + (global $global i32 (i32.const 42)) + (export "__stdio_write" (func $__stdio_write)) + (export "__data_end" (global $global)) + (func $__stdio_write + ) +) diff -Nru binaryen-91/test/lld/main_module_table_3.wat.out binaryen-99/test/lld/main_module_table_3.wat.out --- binaryen-91/test/lld/main_module_table_3.wat.out 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lld/main_module_table_3.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,36 @@ +(module + (type $none_=>_none (func)) + (import "env" "table" (table $timport$9 1 funcref)) + (import "env" "__stack_pointer" (global $sp (mut i32))) + (import "GOT.func" "__stdio_write" (global $gimport$9 (mut i32))) + (global $global i32 (i32.const 42)) + (export "__stdio_write" (func $__stdio_write)) + (export "__data_end" (global $global)) + (func $__stdio_write + (nop) + ) +) +(; +--BEGIN METADATA -- +{ + "tableSize": 1, + "declares": [ + ], + "externs": [ + "___stack_pointer", + "___stdio_write" + ], + "exports": [ + "__stdio_write" + ], + "namedGlobals": { + "__data_end" : "42" + }, + "invokeFuncs": [ + ], + "mainReadsParams": 0, + "features": [ + ] +} +-- END METADATA -- +;) diff -Nru binaryen-91/test/lld/main_module_table_4.wat binaryen-99/test/lld/main_module_table_4.wat --- binaryen-91/test/lld/main_module_table_4.wat 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lld/main_module_table_4.wat 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,12 @@ +(module + (import "env" "__stack_pointer" (global $sp (mut i32))) + (import "GOT.func" "__stdio_write" (global $gimport$9 (mut i32))) + (import "env" "__table_base" (global $tb i32)) + (import "env" "table" (table $timport$9 1 funcref)) + (elem (global.get $tb)) + (global $global i32 (i32.const 42)) + (export "__stdio_write" (func $__stdio_write)) + (export "__data_end" (global $global)) + (func $__stdio_write + ) +) diff -Nru binaryen-91/test/lld/main_module_table_4.wat.out binaryen-99/test/lld/main_module_table_4.wat.out --- binaryen-91/test/lld/main_module_table_4.wat.out 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lld/main_module_table_4.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,38 @@ +(module + (type $none_=>_none (func)) + (import "env" "table" (table $timport$9 1 funcref)) + (import "env" "__stack_pointer" (global $sp (mut i32))) + (import "GOT.func" "__stdio_write" (global $gimport$9 (mut i32))) + (import "env" "__table_base" (global $tb i32)) + (global $global i32 (i32.const 42)) + (export "__stdio_write" (func $__stdio_write)) + (export "__data_end" (global $global)) + (func $__stdio_write + (nop) + ) +) +(; +--BEGIN METADATA -- +{ + "tableSize": 1, + "declares": [ + ], + "externs": [ + "___stack_pointer", + "___stdio_write", + "___table_base" + ], + "exports": [ + "__stdio_write" + ], + "namedGlobals": { + "__data_end" : "42" + }, + "invokeFuncs": [ + ], + "mainReadsParams": 0, + "features": [ + ] +} +-- END METADATA -- +;) diff -Nru binaryen-91/test/lld/main_module_table_5.wat binaryen-99/test/lld/main_module_table_5.wat --- binaryen-91/test/lld/main_module_table_5.wat 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lld/main_module_table_5.wat 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,16 @@ +(module + (import "env" "__stack_pointer" (global $sp (mut i32))) + (import "GOT.func" "__stdio_write" (global $gimport$9 (mut i32))) + (import "env" "__table_base" (global $tb i32)) + (import "env" "table" (table $timport$9 1 funcref)) + (elem (global.get $tb) $other $stuff) + (global $global i32 (i32.const 42)) + (export "__stdio_write" (func $__stdio_write)) + (export "__data_end" (global $global)) + (func $__stdio_write + ) + (func $other + ) + (func $stuff + ) +) diff -Nru binaryen-91/test/lld/main_module_table_5.wat.out binaryen-99/test/lld/main_module_table_5.wat.out --- binaryen-91/test/lld/main_module_table_5.wat.out 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lld/main_module_table_5.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,53 @@ +(module + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (import "env" "table" (table $timport$9 1 funcref)) + (elem (global.get $tb) $other $stuff) + (import "env" "__stack_pointer" (global $sp (mut i32))) + (import "GOT.func" "__stdio_write" (global $gimport$9 (mut i32))) + (import "env" "__table_base" (global $tb i32)) + (global $global i32 (i32.const 42)) + (export "__stdio_write" (func $__stdio_write)) + (export "__data_end" (global $global)) + (export "dynCall_v" (func $dynCall_v)) + (func $__stdio_write + (nop) + ) + (func $other + (nop) + ) + (func $stuff + (nop) + ) + (func $dynCall_v (param $fptr i32) + (call_indirect (type $none_=>_none) + (local.get $fptr) + ) + ) +) +(; +--BEGIN METADATA -- +{ + "tableSize": 1, + "declares": [ + ], + "externs": [ + "___stack_pointer", + "___stdio_write", + "___table_base" + ], + "exports": [ + "__stdio_write", + "dynCall_v" + ], + "namedGlobals": { + "__data_end" : "42" + }, + "invokeFuncs": [ + ], + "mainReadsParams": 0, + "features": [ + ] +} +-- END METADATA -- +;) diff -Nru binaryen-91/test/lld/main_module_table.wat binaryen-99/test/lld/main_module_table.wat --- binaryen-91/test/lld/main_module_table.wat 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lld/main_module_table.wat 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,9 @@ +(module + (import "env" "__stack_pointer" (global $sp (mut i32))) + (import "GOT.func" "__stdio_write" (global $gimport$9 (mut i32))) + (global $global i32 (i32.const 42)) + (export "__stdio_write" (func $__stdio_write)) + (export "__data_end" (global $global)) + (func $__stdio_write + ) +) diff -Nru binaryen-91/test/lld/main_module_table.wat.out binaryen-99/test/lld/main_module_table.wat.out --- binaryen-91/test/lld/main_module_table.wat.out 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lld/main_module_table.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,35 @@ +(module + (type $none_=>_none (func)) + (import "env" "__stack_pointer" (global $sp (mut i32))) + (import "GOT.func" "__stdio_write" (global $gimport$9 (mut i32))) + (global $global i32 (i32.const 42)) + (export "__stdio_write" (func $__stdio_write)) + (export "__data_end" (global $global)) + (func $__stdio_write + (nop) + ) +) +(; +--BEGIN METADATA -- +{ + "tableSize": 0, + "declares": [ + ], + "externs": [ + "___stack_pointer", + "___stdio_write" + ], + "exports": [ + "__stdio_write" + ], + "namedGlobals": { + "__data_end" : "42" + }, + "invokeFuncs": [ + ], + "mainReadsParams": 0, + "features": [ + ] +} +-- END METADATA -- +;) diff -Nru binaryen-91/test/lld/main_module.wat binaryen-99/test/lld/main_module.wat --- binaryen-91/test/lld/main_module.wat 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lld/main_module.wat 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,58 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func)) + (type $2 (func (result i32))) + (import "env" "memory" (memory $0 0)) + (data (global.get $gimport$2) "Hello, world\00\00\00\00\00\00\00\00\00\00\00\00") + (import "env" "__stack_pointer" (global $sp (mut i32))) + (import "env" "__indirect_function_table" (table $timport$1 0 funcref)) + (import "env" "__memory_base" (global $gimport$2 i32)) + (import "env" "__table_base" (global $gimport$3 i32)) + (import "GOT.mem" "external_var" (global $gimport$5 (mut i32))) + (import "GOT.func" "puts" (global $gimport$6 (mut i32))) + (import "GOT.func" "_Z13print_messagev" (global $gimport$7 (mut i32))) + (import "env" "puts" (func $puts (param i32) (result i32))) + (global $global$0 i32 (i32.const 16)) + (global $global$1 i32 (i32.const 20)) + (global $global i32 (i32.const 42)) + (export "__wasm_call_ctors" (func $__wasm_call_ctors)) + (export "_Z13print_messagev" (func $print_message\28\29)) + (export "ptr_puts" (global $global$0)) + (export "ptr_local_func" (global $global$1)) + (export "__data_end" (global $global)) + (func $__wasm_call_ctors (; 1 ;) (type $1) + (call $__wasm_apply_relocs) + ) + (func $__wasm_apply_relocs (; 2 ;) (type $1) + (i32.store + (i32.add + (global.get $gimport$2) + (i32.const 16) + ) + (global.get $gimport$6) + ) + (i32.store + (i32.add + (global.get $gimport$2) + (i32.const 20) + ) + (global.get $gimport$7) + ) + ) + (func $print_message\28\29 (; 3 ;) (type $2) (result i32) + (drop + (call $puts + (i32.add + (global.get $gimport$2) + (i32.const 0) + ) + ) + ) + (i32.load + (global.get $gimport$5) + ) + ) + ;; custom section "dylink", size 5 + ;; custom section "producers", size 112 +) + diff -Nru binaryen-91/test/lld/main_module.wat.out binaryen-99/test/lld/main_module.wat.out --- binaryen-91/test/lld/main_module.wat.out 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lld/main_module.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,90 @@ +(module + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "env" "memory" (memory $0 0)) + (data (global.get $gimport$2) "Hello, world\00\00\00\00\00\00\00\00\00\00\00\00") + (import "env" "__indirect_function_table" (table $timport$1 0 funcref)) + (import "env" "__stack_pointer" (global $sp (mut i32))) + (import "env" "__memory_base" (global $gimport$2 i32)) + (import "env" "__table_base" (global $gimport$3 i32)) + (import "GOT.mem" "external_var" (global $gimport$5 (mut i32))) + (import "GOT.func" "puts" (global $gimport$6 (mut i32))) + (import "GOT.func" "_Z13print_messagev" (global $gimport$7 (mut i32))) + (import "env" "puts" (func $puts (param i32) (result i32))) + (global $global$0 i32 (i32.const 16)) + (global $global$1 i32 (i32.const 20)) + (global $global i32 (i32.const 42)) + (export "__wasm_call_ctors" (func $__wasm_call_ctors)) + (export "_Z13print_messagev" (func $print_message\28\29)) + (export "ptr_puts" (global $global$0)) + (export "ptr_local_func" (global $global$1)) + (export "__data_end" (global $global)) + (func $__wasm_call_ctors + (call $__wasm_apply_relocs) + ) + (func $__wasm_apply_relocs + (i32.store + (i32.add + (global.get $gimport$2) + (i32.const 16) + ) + (global.get $gimport$6) + ) + (i32.store + (i32.add + (global.get $gimport$2) + (i32.const 20) + ) + (global.get $gimport$7) + ) + ) + (func $print_message\28\29 (result i32) + (drop + (call $puts + (i32.add + (global.get $gimport$2) + (i32.const 0) + ) + ) + ) + (i32.load + (global.get $gimport$5) + ) + ) +) +(; +--BEGIN METADATA -- +{ + "tableSize": 0, + "initializers": [ + "__wasm_call_ctors" + ], + "declares": [ + "puts" + ], + "externs": [ + "___stack_pointer", + "___memory_base", + "___table_base", + "_external_var", + "_puts", + "__Z13print_messagev" + ], + "exports": [ + "__wasm_call_ctors", + "_Z13print_messagev" + ], + "namedGlobals": { + "ptr_puts" : "16", + "ptr_local_func" : "20", + "__data_end" : "42" + }, + "invokeFuncs": [ + ], + "mainReadsParams": 0, + "features": [ + ] +} +-- END METADATA -- +;) diff -Nru binaryen-91/test/lld/recursive_safe_stack.wat.out binaryen-99/test/lld/recursive_safe_stack.wat.out --- binaryen-91/test/lld/recursive_safe_stack.wat.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/recursive_safe_stack.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -1,9 +1,8 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "printf" (func $printf (param i32 i32) (result i32))) (import "env" "__handle_stack_overflow" (func $__handle_stack_overflow)) (memory $0 2) @@ -12,36 +11,39 @@ (global $global$0 (mut i32) (i32.const 66128)) (global $global$1 i32 (i32.const 66128)) (global $global$2 i32 (i32.const 587)) + (global $__stack_base (mut i32) (i32.const 0)) (global $__stack_limit (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) (export "__heap_base" (global $global$1)) (export "__data_end" (global $global$2)) (export "main" (func $main)) - (export "__set_stack_limit" (func $__set_stack_limit)) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (func $__wasm_call_ctors (; 2 ;) + (export "__set_stack_limits" (func $__set_stack_limits)) + (func $__wasm_call_ctors (nop) ) - (func $foo (; 3 ;) (param $0 i32) (param $1 i32) (result i32) + (func $foo (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (block (if - (i32.lt_u - (local.tee $3 - (local.tee $2 - (i32.sub - (global.get $global$0) - (i32.const 16) + (i32.or + (i32.gt_u + (local.tee $3 + (local.tee $2 + (i32.sub + (global.get $global$0) + (i32.const 16) + ) ) ) + (global.get $__stack_base) + ) + (i32.lt_u + (local.get $3) + (global.get $__stack_limit) ) - (global.get $__stack_limit) ) (call $__handle_stack_overflow) ) @@ -65,14 +67,20 @@ ) (block (if - (i32.lt_u - (local.tee $4 - (i32.add - (local.get $2) - (i32.const 16) + (i32.or + (i32.gt_u + (local.tee $4 + (i32.add + (local.get $2) + (i32.const 16) + ) ) + (global.get $__stack_base) + ) + (i32.lt_u + (local.get $4) + (global.get $__stack_limit) ) - (global.get $__stack_limit) ) (call $__handle_stack_overflow) ) @@ -85,22 +93,28 @@ (local.get $0) ) ) - (func $__original_main (; 4 ;) (result i32) + (func $__original_main (result i32) (local $0 i32) (local $1 i32) (local $2 i32) (block (if - (i32.lt_u - (local.tee $1 - (local.tee $0 - (i32.sub - (global.get $global$0) - (i32.const 16) + (i32.or + (i32.gt_u + (local.tee $1 + (local.tee $0 + (i32.sub + (global.get $global$0) + (i32.const 16) + ) ) ) + (global.get $__stack_base) + ) + (i32.lt_u + (local.get $1) + (global.get $__stack_limit) ) - (global.get $__stack_limit) ) (call $__handle_stack_overflow) ) @@ -123,14 +137,20 @@ ) (block (if - (i32.lt_u - (local.tee $2 - (i32.add - (local.get $0) - (i32.const 16) + (i32.or + (i32.gt_u + (local.tee $2 + (i32.add + (local.get $0) + (i32.const 16) + ) ) + (global.get $__stack_base) + ) + (i32.lt_u + (local.get $2) + (global.get $__stack_limit) ) - (global.get $__stack_limit) ) (call $__handle_stack_overflow) ) @@ -140,69 +160,21 @@ ) (i32.const 0) ) - (func $main (; 5 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) - (func $__set_stack_limit (; 6 ;) (param $0 i32) - (global.set $__stack_limit + (func $__set_stack_limits (param $0 i32) (param $1 i32) + (global.set $__stack_base (local.get $0) ) - ) - (func $stackSave (; 7 ;) (result i32) - (global.get $global$0) - ) - (func $stackAlloc (; 8 ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (block - (if - (i32.lt_u - (local.tee $2 - (local.tee $1 - (i32.and - (i32.sub - (global.get $global$0) - (local.get $0) - ) - (i32.const -16) - ) - ) - ) - (global.get $__stack_limit) - ) - (call $__handle_stack_overflow) - ) - (global.set $global$0 - (local.get $2) - ) - ) - (local.get $1) - ) - (func $stackRestore (; 9 ;) (param $0 i32) - (local $1 i32) - (if - (i32.lt_u - (local.tee $1 - (local.get $0) - ) - (global.get $__stack_limit) - ) - (call $__handle_stack_overflow) - ) - (global.set $global$0 + (global.set $__stack_limit (local.get $1) ) ) - (func $__growWasmMemory (; 10 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) ) (; --BEGIN METADATA -- { - "staticBump": 19, "tableSize": 1, "initializers": [ "__wasm_call_ctors" @@ -213,23 +185,10 @@ ], "externs": [ ], - "implementedFunctions": [ - "___wasm_call_ctors", - "_main", - "___set_stack_limit", - "_stackSave", - "_stackAlloc", - "_stackRestore", - "___growWasmMemory" - ], "exports": [ "__wasm_call_ctors", "main", - "__set_stack_limit", - "stackSave", - "stackAlloc", - "stackRestore", - "__growWasmMemory" + "__set_stack_limits" ], "namedGlobals": { "__heap_base" : "66128", @@ -237,9 +196,9 @@ }, "invokeFuncs": [ ], + "mainReadsParams": 0, "features": [ - ], - "mainReadsParams": 0 + ] } -- END METADATA -- ;) diff -Nru binaryen-91/test/lld/recursive.wat binaryen-99/test/lld/recursive.wat --- binaryen-91/test/lld/recursive.wat 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/recursive.wat 2021-01-07 20:01:06.000000000 +0000 @@ -1,20 +1,18 @@ (module - (type $0 (func (param i32 i32) (result i32))) - (type $1 (func)) - (type $2 (func (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) (import "env" "iprintf" (func $iprintf (param i32 i32) (result i32))) (memory $0 2) (data (i32.const 568) "%d:%d\n\00Result: %d\n\00") (table $0 1 1 funcref) (global $global$0 (mut i32) (i32.const 66128)) - (global $global$1 i32 (i32.const 587)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) (export "main" (func $main)) - (export "__data_end" (global $global$1)) - (func $__wasm_call_ctors (; 1 ;) (type $1) + (func $__wasm_call_ctors ) - (func $foo (; 2 ;) (type $0) (param $0 i32) (param $1 i32) (result i32) + (func $foo (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (global.set $global$0 (local.tee $2 @@ -49,7 +47,7 @@ (local.get $0) ) ) - (func $__original_main (; 3 ;) (type $2) (result i32) + (func $__original_main (result i32) (local $0 i32) (global.set $global$0 (local.tee $0 @@ -80,7 +78,7 @@ ) (i32.const 0) ) - (func $main (; 4 ;) (type $0) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) ;; custom section "producers", size 112 diff -Nru binaryen-91/test/lld/recursive.wat.out binaryen-99/test/lld/recursive.wat.out --- binaryen-91/test/lld/recursive.wat.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/recursive.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -1,27 +1,19 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "iprintf" (func $iprintf (param i32 i32) (result i32))) (memory $0 2) (data (i32.const 568) "%d:%d\n\00Result: %d\n\00") (table $0 1 1 funcref) (global $global$0 (mut i32) (i32.const 66128)) - (global $global$1 i32 (i32.const 587)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) (export "main" (func $main)) - (export "__data_end" (global $global$1)) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (func $__wasm_call_ctors (; 1 ;) + (func $__wasm_call_ctors (nop) ) - (func $foo (; 2 ;) (param $0 i32) (param $1 i32) (result i32) + (func $foo (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (global.set $global$0 (local.tee $2 @@ -56,7 +48,7 @@ (local.get $0) ) ) - (func $__original_main (; 3 ;) (result i32) + (func $__original_main (result i32) (local $0 i32) (global.set $global$0 (local.tee $0 @@ -87,42 +79,13 @@ ) (i32.const 0) ) - (func $main (; 4 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) - (func $stackSave (; 5 ;) (result i32) - (global.get $global$0) - ) - (func $stackAlloc (; 6 ;) (param $0 i32) (result i32) - (local $1 i32) - (global.set $global$0 - (local.tee $1 - (i32.and - (i32.sub - (global.get $global$0) - (local.get $0) - ) - (i32.const -16) - ) - ) - ) - (local.get $1) - ) - (func $stackRestore (; 7 ;) (param $0 i32) - (global.set $global$0 - (local.get $0) - ) - ) - (func $__growWasmMemory (; 8 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) ) (; --BEGIN METADATA -- { - "staticBump": 19, "tableSize": 1, "initializers": [ "__wasm_call_ctors" @@ -132,30 +95,17 @@ ], "externs": [ ], - "implementedFunctions": [ - "___wasm_call_ctors", - "_main", - "_stackSave", - "_stackAlloc", - "_stackRestore", - "___growWasmMemory" - ], "exports": [ "__wasm_call_ctors", - "main", - "stackSave", - "stackAlloc", - "stackRestore", - "__growWasmMemory" + "main" ], "namedGlobals": { - "__data_end" : "587" }, "invokeFuncs": [ ], + "mainReadsParams": 0, "features": [ - ], - "mainReadsParams": 0 + ] } -- END METADATA -- ;) diff -Nru binaryen-91/test/lld/reserved_func_ptr.wat binaryen-99/test/lld/reserved_func_ptr.wat --- binaryen-91/test/lld/reserved_func_ptr.wat 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/reserved_func_ptr.wat 2021-01-07 20:01:06.000000000 +0000 @@ -1,28 +1,26 @@ (module - (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32) (result i32))) - (type $3 (func (param f32 f32 i32) (result f32))) - (type $4 (func (param f64 i32) (result f64))) - (type $5 (func (param i32 i32 i32))) - (type $6 (func (param i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_none (func)) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $f32_f32_i32_=>_f32 (func (param f32 f32 i32) (result f32))) + (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) (import "env" "_Z4atoiPKc" (func $atoi\28char\20const*\29 (param i32) (result i32))) (memory $0 2) (table $0 3 3 funcref) (elem (i32.const 1) $address_taken_func\28int\2c\20int\2c\20int\29 $address_taken_func2\28int\2c\20int\2c\20int\29) (global $global$0 (mut i32) (i32.const 66112)) - (global $global$1 i32 (i32.const 568)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) (export "main" (func $main)) - (export "__data_end" (global $global$1)) - (func $__wasm_call_ctors (; 1 ;) (type $0) + (func $__wasm_call_ctors ) - (func $address_taken_func\28int\2c\20int\2c\20int\29 (; 2 ;) (type $5) (param $0 i32) (param $1 i32) (param $2 i32) + (func $address_taken_func\28int\2c\20int\2c\20int\29 (param $0 i32) (param $1 i32) (param $2 i32) ) - (func $address_taken_func2\28int\2c\20int\2c\20int\29 (; 3 ;) (type $5) (param $0 i32) (param $1 i32) (param $2 i32) + (func $address_taken_func2\28int\2c\20int\2c\20int\29 (param $0 i32) (param $1 i32) (param $2 i32) ) - (func $main (; 4 ;) (type $2) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -62,22 +60,22 @@ ) ) ) - (call_indirect (type $0) + (call_indirect (type $none_=>_none) (local.get $2) ) - (call_indirect (type $1) + (call_indirect (type $i32_=>_none) (i32.const 3) (local.get $3) ) (drop - (call_indirect (type $2) + (call_indirect (type $i32_i32_=>_i32) (i32.const 4) (i32.const 5) (local.get $4) ) ) (drop - (call_indirect (type $3) + (call_indirect (type $f32_f32_i32_=>_f32) (f32.const 3.0999999046325684) (f32.const 4.199999809265137) (i32.const 5) @@ -85,13 +83,13 @@ ) ) (drop - (call_indirect (type $4) + (call_indirect (type $f64_i32_=>_f64) (f64.const 4.2) (i32.const 5) (local.get $1) ) ) - (call_indirect (type $5) + (call_indirect (type $i32_i32_i32_=>_none) (i32.const 1) (i32.const 2) (i32.const 3) diff -Nru binaryen-91/test/lld/reserved_func_ptr.wat.out binaryen-99/test/lld/reserved_func_ptr.wat.out --- binaryen-91/test/lld/reserved_func_ptr.wat.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/reserved_func_ptr.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -1,11 +1,10 @@ (module (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $f32_f32_i32_=>_f32 (func (param f32 f32 i32) (result f32))) (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) (import "env" "_Z4atoiPKc" (func $atoi\28char\20const*\29 (param i32) (result i32))) @@ -13,26 +12,20 @@ (table $0 3 3 funcref) (elem (i32.const 1) $address_taken_func\28int\2c\20int\2c\20int\29 $address_taken_func2\28int\2c\20int\2c\20int\29) (global $global$0 (mut i32) (i32.const 66112)) - (global $global$1 i32 (i32.const 568)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) (export "main" (func $main)) - (export "__data_end" (global $global$1)) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) - (export "__growWasmMemory" (func $__growWasmMemory)) (export "dynCall_viii" (func $dynCall_viii)) - (func $__wasm_call_ctors (; 1 ;) + (func $__wasm_call_ctors (nop) ) - (func $address_taken_func\28int\2c\20int\2c\20int\29 (; 2 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $address_taken_func\28int\2c\20int\2c\20int\29 (param $0 i32) (param $1 i32) (param $2 i32) (nop) ) - (func $address_taken_func2\28int\2c\20int\2c\20int\29 (; 3 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $address_taken_func2\28int\2c\20int\2c\20int\29 (param $0 i32) (param $1 i32) (param $2 i32) (nop) ) - (func $main (; 4 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -116,35 +109,7 @@ ) (i32.const 0) ) - (func $stackSave (; 5 ;) (result i32) - (global.get $global$0) - ) - (func $stackAlloc (; 6 ;) (param $0 i32) (result i32) - (local $1 i32) - (global.set $global$0 - (local.tee $1 - (i32.and - (i32.sub - (global.get $global$0) - (local.get $0) - ) - (i32.const -16) - ) - ) - ) - (local.get $1) - ) - (func $stackRestore (; 7 ;) (param $0 i32) - (global.set $global$0 - (local.get $0) - ) - ) - (func $__growWasmMemory (; 8 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) - (func $dynCall_viii (; 9 ;) (param $fptr i32) (param $0 i32) (param $1 i32) (param $2 i32) + (func $dynCall_viii (param $fptr i32) (param $0 i32) (param $1 i32) (param $2 i32) (call_indirect (type $i32_i32_i32_=>_none) (local.get $0) (local.get $1) @@ -156,7 +121,6 @@ (; --BEGIN METADATA -- { - "staticBump": 0, "tableSize": 3, "initializers": [ "__wasm_call_ctors" @@ -166,32 +130,18 @@ ], "externs": [ ], - "implementedFunctions": [ - "___wasm_call_ctors", - "_main", - "_stackSave", - "_stackAlloc", - "_stackRestore", - "___growWasmMemory", - "_dynCall_viii" - ], "exports": [ "__wasm_call_ctors", "main", - "stackSave", - "stackAlloc", - "stackRestore", - "__growWasmMemory", "dynCall_viii" ], "namedGlobals": { - "__data_end" : "568" }, "invokeFuncs": [ ], + "mainReadsParams": 1, "features": [ - ], - "mainReadsParams": 1 + ] } -- END METADATA -- ;) diff -Nru binaryen-91/test/lld/safe_stack_standalone-wasm.wat.out binaryen-99/test/lld/safe_stack_standalone-wasm.wat.out --- binaryen-91/test/lld/safe_stack_standalone-wasm.wat.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/safe_stack_standalone-wasm.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -1,9 +1,8 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "printf" (func $printf (param i32 i32) (result i32))) (memory $0 2) (data (i32.const 568) "%d:%d\n\00Result: %d\n\00") @@ -11,37 +10,39 @@ (global $global$0 (mut i32) (i32.const 66128)) (global $global$1 i32 (i32.const 66128)) (global $global$2 i32 (i32.const 587)) + (global $__stack_base (mut i32) (i32.const 0)) (global $__stack_limit (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) (export "__heap_base" (global $global$1)) (export "__data_end" (global $global$2)) (export "main" (func $main)) - (export "__set_stack_limit" (func $__set_stack_limit)) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (export "_start" (func $_start)) - (func $__wasm_call_ctors (; 1 ;) + (export "__set_stack_limits" (func $__set_stack_limits)) + (func $__wasm_call_ctors (nop) ) - (func $foo (; 2 ;) (param $0 i32) (param $1 i32) (result i32) + (func $foo (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) (block (if - (i32.lt_u - (local.tee $3 - (local.tee $2 - (i32.sub - (global.get $global$0) - (i32.const 16) + (i32.or + (i32.gt_u + (local.tee $3 + (local.tee $2 + (i32.sub + (global.get $global$0) + (i32.const 16) + ) ) ) + (global.get $__stack_base) + ) + (i32.lt_u + (local.get $3) + (global.get $__stack_limit) ) - (global.get $__stack_limit) ) (unreachable) ) @@ -65,14 +66,20 @@ ) (block (if - (i32.lt_u - (local.tee $4 - (i32.add - (local.get $2) - (i32.const 16) + (i32.or + (i32.gt_u + (local.tee $4 + (i32.add + (local.get $2) + (i32.const 16) + ) ) + (global.get $__stack_base) + ) + (i32.lt_u + (local.get $4) + (global.get $__stack_limit) ) - (global.get $__stack_limit) ) (unreachable) ) @@ -85,22 +92,28 @@ (local.get $0) ) ) - (func $__original_main (; 3 ;) (result i32) + (func $__original_main (result i32) (local $0 i32) (local $1 i32) (local $2 i32) (block (if - (i32.lt_u - (local.tee $1 - (local.tee $0 - (i32.sub - (global.get $global$0) - (i32.const 16) + (i32.or + (i32.gt_u + (local.tee $1 + (local.tee $0 + (i32.sub + (global.get $global$0) + (i32.const 16) + ) ) ) + (global.get $__stack_base) + ) + (i32.lt_u + (local.get $1) + (global.get $__stack_limit) ) - (global.get $__stack_limit) ) (unreachable) ) @@ -123,14 +136,20 @@ ) (block (if - (i32.lt_u - (local.tee $2 - (i32.add - (local.get $0) - (i32.const 16) + (i32.or + (i32.gt_u + (local.tee $2 + (i32.add + (local.get $0) + (i32.const 16) + ) ) + (global.get $__stack_base) + ) + (i32.lt_u + (local.get $2) + (global.get $__stack_limit) ) - (global.get $__stack_limit) ) (unreachable) ) @@ -140,77 +159,21 @@ ) (i32.const 0) ) - (func $main (; 4 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) - (func $__set_stack_limit (; 5 ;) (param $0 i32) - (global.set $__stack_limit + (func $__set_stack_limits (param $0 i32) (param $1 i32) + (global.set $__stack_base (local.get $0) ) - ) - (func $stackSave (; 6 ;) (result i32) - (global.get $global$0) - ) - (func $stackAlloc (; 7 ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (block - (if - (i32.lt_u - (local.tee $2 - (local.tee $1 - (i32.and - (i32.sub - (global.get $global$0) - (local.get $0) - ) - (i32.const -16) - ) - ) - ) - (global.get $__stack_limit) - ) - (unreachable) - ) - (global.set $global$0 - (local.get $2) - ) - ) - (local.get $1) - ) - (func $stackRestore (; 8 ;) (param $0 i32) - (local $1 i32) - (if - (i32.lt_u - (local.tee $1 - (local.get $0) - ) - (global.get $__stack_limit) - ) - (unreachable) - ) - (global.set $global$0 + (global.set $__stack_limit (local.get $1) ) ) - (func $__growWasmMemory (; 9 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) - (func $_start (; 10 ;) - (drop - (call $main - (i32.const 0) - (i32.const 0) - ) - ) - ) ) (; --BEGIN METADATA -- { - "staticBump": 19, "tableSize": 1, "initializers": [ "__wasm_call_ctors" @@ -220,25 +183,10 @@ ], "externs": [ ], - "implementedFunctions": [ - "___wasm_call_ctors", - "_main", - "___set_stack_limit", - "_stackSave", - "_stackAlloc", - "_stackRestore", - "___growWasmMemory", - "__start" - ], "exports": [ "__wasm_call_ctors", "main", - "__set_stack_limit", - "stackSave", - "stackAlloc", - "stackRestore", - "__growWasmMemory", - "_start" + "__set_stack_limits" ], "namedGlobals": { "__heap_base" : "66128", @@ -247,8 +195,7 @@ "invokeFuncs": [ ], "features": [ - ], - "mainReadsParams": 0 + ] } -- END METADATA -- ;) Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/lld/shared_add_to_table.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/lld/shared_add_to_table.wasm differ diff -Nru binaryen-91/test/lld/shared_add_to_table.wasm.out binaryen-99/test/lld/shared_add_to_table.wasm.out --- binaryen-91/test/lld/shared_add_to_table.wasm.out 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/lld/shared_add_to_table.wasm.out 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,105 @@ +(module + (type $none_=>_none (func)) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (import "env" "memory" (memory $mimport$0 0)) + (data (global.get $gimport$1) "*\00\00\00") + (import "env" "__indirect_function_table" (table $timport$0 0 funcref)) + (import "env" "__stack_pointer" (global $gimport$0 (mut i32))) + (import "env" "__memory_base" (global $gimport$1 i32)) + (import "env" "__table_base" (global $gimport$2 i32)) + (import "GOT.func" "_Z16waka_func_theirsi" (global $gimport$3 (mut i32))) + (import "GOT.func" "_Z14waka_func_minei" (global $gimport$4 (mut i32))) + (import "GOT.mem" "waka_mine" (global $gimport$5 (mut i32))) + (import "GOT.mem" "waka_others" (global $gimport$6 (mut i32))) + (import "env" "_Z16waka_func_theirsi" (func $waka_func_theirs\28int\29 (param i32) (result i32))) + (global $global$0 i32 (i32.const 0)) + (global $global$1 i32 (i32.const 0)) + (export "__post_instantiate" (func $__wasm_call_ctors)) + (export "__wasm_apply_relocs" (func $__wasm_apply_relocs)) + (export "_Z14waka_func_minei" (func $waka_func_mine\28int\29)) + (export "__original_main" (func $__original_main)) + (export "waka_mine" (global $global$0)) + (export "main" (func $main)) + (export "__dso_handle" (global $global$1)) + (func $__wasm_call_ctors + (call $__wasm_apply_relocs) + ) + (func $__wasm_apply_relocs + ) + (func $waka_func_mine\28int\29 (param $0 i32) (result i32) + (i32.add + (local.get $0) + (i32.const 1) + ) + ) + (func $__original_main (result i32) + (local $0 i32) + (local $1 i32) + (local.set $0 + (global.get $gimport$3) + ) + (local.set $1 + (global.get $gimport$4) + ) + (i32.add + (i32.add + (i32.load + (global.get $gimport$5) + ) + (i32.add + (local.get $1) + (local.get $0) + ) + ) + (i32.load + (global.get $gimport$6) + ) + ) + ) + (func $main (param $0 i32) (param $1 i32) (result i32) + (call $__original_main) + ) + ;; dylink section + ;; memorysize: 4 + ;; memoryalignment: 2 + ;; tablesize: 0 + ;; tablealignment: 0 + ;; custom section "producers", size 157 +) +(; +--BEGIN METADATA -- +{ + "tableSize": 0, + "declares": [ + "_Z16waka_func_theirsi" + ], + "externs": [ + "___stack_pointer", + "___memory_base", + "___table_base", + "__Z16waka_func_theirsi", + "__Z14waka_func_minei", + "_waka_mine", + "_waka_others" + ], + "exports": [ + "__post_instantiate", + "__wasm_apply_relocs", + "_Z14waka_func_minei", + "__original_main", + "main" + ], + "namedGlobals": { + "waka_mine" : "0", + "__dso_handle" : "0" + }, + "invokeFuncs": [ + ], + "mainReadsParams": 0, + "features": [ + ] +} +-- END METADATA -- +;) diff -Nru binaryen-91/test/lld/shared_longjmp.wat binaryen-99/test/lld/shared_longjmp.wat --- binaryen-91/test/lld/shared_longjmp.wat 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/shared_longjmp.wat 2021-01-07 20:01:06.000000000 +0000 @@ -1,55 +1,54 @@ (module - (type $0 (func (param i32) (result i32))) - (type $1 (func (param i32 i32 i32 i32) (result i32))) - (type $2 (func (result i32))) - (type $3 (func (param i32 i32))) - (type $4 (func (param i32 i32 i32))) - (type $5 (func (param i32 i32 i32) (result i32))) - (type $6 (func (param i32))) - (type $7 (func)) - (import "env" "memory" (memory $0 0)) - (data (global.get $gimport$2) "\00\00\00\00\00\00\00\00") - (import "env" "__indirect_function_table" (table $timport$1 0 funcref)) - (import "env" "__memory_base" (global $gimport$2 i32)) - (import "env" "__table_base" (global $gimport$3 i32)) - (import "GOT.mem" "__THREW__" (global $gimport$13 (mut i32))) - (import "GOT.func" "emscripten_longjmp_jmpbuf" (global $gimport$14 (mut i32))) - (import "GOT.mem" "__threwValue" (global $gimport$15 (mut i32))) - (import "env" "malloc" (func $fimport$4 (param i32) (result i32))) - (import "env" "saveSetjmp" (func $fimport$5 (param i32 i32 i32 i32) (result i32))) - (import "env" "getTempRet0" (func $fimport$6 (result i32))) - (import "env" "emscripten_longjmp_jmpbuf" (func $fimport$7 (param i32 i32))) - (import "env" "__invoke_void_i32_i32" (func $fimport$8 (param i32 i32 i32))) - (import "env" "testSetjmp" (func $fimport$9 (param i32 i32 i32) (result i32))) - (import "env" "setTempRet0" (func $fimport$10 (param i32))) - (import "env" "free" (func $fimport$11 (param i32))) - (import "env" "emscripten_longjmp" (func $fimport$12 (param i32 i32))) + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (import "env" "memory" (memory $mimport$0 0)) + (data (global.get $gimport$0) "\00\00\00\00\00\00\00\00") + (import "env" "__indirect_function_table" (table $timport$0 0 funcref)) + (import "env" "__memory_base" (global $gimport$0 i32)) + (import "env" "__table_base" (global $gimport$1 i32)) + (import "GOT.mem" "__THREW__" (global $gimport$2 (mut i32))) + (import "GOT.func" "emscripten_longjmp" (global $gimport$3 (mut i32))) + (import "GOT.mem" "__threwValue" (global $gimport$4 (mut i32))) + (import "env" "malloc" (func $fimport$0 (param i32) (result i32))) + (import "env" "saveSetjmp" (func $fimport$1 (param i32 i32 i32 i32) (result i32))) + (import "env" "getTempRet0" (func $fimport$2 (result i32))) + (import "env" "emscripten_longjmp" (func $fimport$3 (param i32 i32))) + (import "env" "invoke_vii" (func $fimport$4 (param i32 i32 i32))) + (import "env" "testSetjmp" (func $fimport$5 (param i32 i32 i32) (result i32))) + (import "env" "setTempRet0" (func $fimport$6 (param i32))) + (import "env" "free" (func $fimport$7 (param i32))) (global $global$0 i32 (i32.const 0)) (global $global$1 i32 (i32.const 4)) (export "__wasm_call_ctors" (func $0)) (export "_start" (func $2)) (export "__THREW__" (global $global$0)) (export "__threwValue" (global $global$1)) - (func $0 (; 9 ;) (type $7) + (func $0 (call $1) ) - (func $1 (; 10 ;) (type $7) + (func $1 ) - (func $2 (; 11 ;) (type $7) + (func $2 (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (i32.store (local.tee $0 - (call $fimport$4 + (call $fimport$0 (i32.const 40) ) ) (i32.const 0) ) (local.set $1 - (call $fimport$5 + (call $fimport$1 (local.get $0) (i32.const 1) (local.get $0) @@ -57,7 +56,7 @@ ) ) (local.set $2 - (call $fimport$6) + (call $fimport$2) ) (local.set $0 (i32.const 0) @@ -70,12 +69,12 @@ ) (i32.store (local.tee $0 - (global.get $gimport$13) + (global.get $gimport$2) ) (i32.const 0) ) - (call $fimport$8 - (global.get $gimport$14) + (call $fimport$4 + (global.get $gimport$3) (local.get $0) (i32.const 1) ) @@ -89,7 +88,7 @@ (i32.const 0) ) (local.set $0 - (global.get $gimport$15) + (global.get $gimport$4) ) (block $label$4 (br_if $label$4 @@ -108,7 +107,7 @@ ) (br_if $label$1 (i32.eqz - (call $fimport$9 + (call $fimport$5 (i32.load (local.get $3) ) @@ -117,28 +116,32 @@ ) ) ) - (call $fimport$10 + (call $fimport$6 (local.get $0) ) ) (local.set $0 - (call $fimport$6) + (call $fimport$2) ) (br $label$3) ) ) - (call $fimport$11 + (call $fimport$7 (local.get $1) ) (return) ) - (call $fimport$12 + (call $fimport$3 (local.get $3) (local.get $0) ) (unreachable) ) - ;; custom section "dylink", size 5 + ;; dylink section + ;; memorysize: 8 + ;; memoryalignment: 2 + ;; tablesize: 0 + ;; tablealignment: 0 ;; custom section "producers", size 112 ) diff -Nru binaryen-91/test/lld/shared_longjmp.wat.out binaryen-99/test/lld/shared_longjmp.wat.out --- binaryen-91/test/lld/shared_longjmp.wat.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/shared_longjmp.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -1,59 +1,56 @@ (module (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (import "env" "memory" (memory $0 0)) - (data (global.get $gimport$2) "\00\00\00\00\00\00\00\00") - (import "env" "table" (table $0 0 funcref)) - (import "env" "__memory_base" (global $gimport$2 i32)) - (import "env" "__table_base" (global $gimport$3 i32)) - (import "env" "malloc" (func $fimport$4 (param i32) (result i32))) - (import "env" "saveSetjmp" (func $fimport$5 (param i32 i32 i32 i32) (result i32))) - (import "env" "getTempRet0" (func $fimport$6 (result i32))) - (import "env" "invoke_vii" (func $fimport$8 (param i32 i32 i32))) - (import "env" "testSetjmp" (func $fimport$9 (param i32 i32 i32) (result i32))) - (import "env" "setTempRet0" (func $fimport$10 (param i32))) - (import "env" "free" (func $fimport$11 (param i32))) - (import "env" "emscripten_longjmp" (func $fimport$12 (param i32 i32))) - (import "env" "g$__THREW__" (func $g$__THREW__ (result i32))) - (import "env" "g$__threwValue" (func $g$__threwValue (result i32))) - (import "env" "fp$emscripten_longjmp$vii" (func $fp$emscripten_longjmp$vii (result i32))) - (global $gimport$13 (mut i32) (i32.const 0)) - (global $gimport$14 (mut i32) (i32.const 0)) - (global $gimport$15 (mut i32) (i32.const 0)) + (import "env" "memory" (memory $mimport$0 0)) + (data (global.get $gimport$0) "\00\00\00\00\00\00\00\00") + (import "env" "__indirect_function_table" (table $timport$0 0 funcref)) + (import "env" "__memory_base" (global $gimport$0 i32)) + (import "env" "__table_base" (global $gimport$1 i32)) + (import "GOT.mem" "__THREW__" (global $gimport$2 (mut i32))) + (import "GOT.func" "emscripten_longjmp" (global $gimport$3 (mut i32))) + (import "GOT.mem" "__threwValue" (global $gimport$4 (mut i32))) + (import "env" "malloc" (func $fimport$0 (param i32) (result i32))) + (import "env" "saveSetjmp" (func $fimport$1 (param i32 i32 i32 i32) (result i32))) + (import "env" "getTempRet0" (func $fimport$2 (result i32))) + (import "env" "emscripten_longjmp" (func $fimport$3 (param i32 i32))) + (import "env" "invoke_vii" (func $fimport$4 (param i32 i32 i32))) + (import "env" "testSetjmp" (func $fimport$5 (param i32 i32 i32) (result i32))) + (import "env" "setTempRet0" (func $fimport$6 (param i32))) + (import "env" "free" (func $fimport$7 (param i32))) (global $global$0 i32 (i32.const 0)) (global $global$1 i32 (i32.const 4)) + (export "__post_instantiate" (func $0)) (export "_start" (func $2)) (export "__THREW__" (global $global$0)) (export "__threwValue" (global $global$1)) (export "dynCall_vii" (func $dynCall_vii)) - (export "__post_instantiate" (func $__post_instantiate)) - (func $0 (; 11 ;) + (func $0 (call $1) ) - (func $1 (; 12 ;) + (func $1 (nop) ) - (func $2 (; 13 ;) + (func $2 (local $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) (i32.store (local.tee $0 - (call $fimport$4 + (call $fimport$0 (i32.const 40) ) ) (i32.const 0) ) (local.set $1 - (call $fimport$5 + (call $fimport$1 (local.get $0) (i32.const 1) (local.get $0) @@ -61,7 +58,7 @@ ) ) (local.set $2 - (call $fimport$6) + (call $fimport$2) ) (local.set $0 (i32.const 0) @@ -74,12 +71,12 @@ ) (i32.store (local.tee $0 - (global.get $gimport$13) + (global.get $gimport$2) ) (i32.const 0) ) - (call $fimport$8 - (global.get $gimport$14) + (call $fimport$4 + (global.get $gimport$3) (local.get $0) (i32.const 1) ) @@ -93,7 +90,7 @@ (i32.const 0) ) (local.set $0 - (global.get $gimport$15) + (global.get $gimport$4) ) (block $label$4 (br_if $label$4 @@ -112,7 +109,7 @@ ) (br_if $label$1 (i32.eqz - (call $fimport$9 + (call $fimport$5 (i32.load (local.get $3) ) @@ -121,80 +118,59 @@ ) ) ) - (call $fimport$10 + (call $fimport$6 (local.get $0) ) ) (local.set $0 - (call $fimport$6) + (call $fimport$2) ) (br $label$3) ) ) - (call $fimport$11 + (call $fimport$7 (local.get $1) ) (return) ) - (call $fimport$12 + (call $fimport$3 (local.get $3) (local.get $0) ) (unreachable) ) - (func $dynCall_vii (; 14 ;) (param $fptr i32) (param $0 i32) (param $1 i32) + (func $dynCall_vii (param $fptr i32) (param $0 i32) (param $1 i32) (call_indirect (type $i32_i32_=>_none) (local.get $0) (local.get $1) (local.get $fptr) ) ) - (func $__post_instantiate (; 15 ;) - (call $__assign_got_enties) - (call $0) - ) - (func $__assign_got_enties (; 16 ;) - (global.set $gimport$13 - (call $g$__THREW__) - ) - (global.set $gimport$15 - (call $g$__threwValue) - ) - (global.set $gimport$14 - (call $fp$emscripten_longjmp$vii) - ) - ) ) (; --BEGIN METADATA -- { - "staticBump": 0, "tableSize": 0, "declares": [ "malloc", "saveSetjmp", "getTempRet0", + "emscripten_longjmp", "testSetjmp", "setTempRet0", - "free", - "emscripten_longjmp", - "g$__THREW__", - "g$__threwValue", - "fp$emscripten_longjmp$vii" + "free" ], "externs": [ "___memory_base", - "___table_base" - ], - "implementedFunctions": [ - "__start", - "_dynCall_vii", - "___post_instantiate" + "___table_base", + "___THREW__", + "_emscripten_longjmp", + "___threwValue" ], "exports": [ + "__post_instantiate", "_start", - "dynCall_vii", - "__post_instantiate" + "dynCall_vii" ], "namedGlobals": { "__THREW__" : "0", @@ -203,9 +179,9 @@ "invokeFuncs": [ "invoke_vii" ], + "mainReadsParams": 0, "features": [ - ], - "mainReadsParams": 0 + ] } -- END METADATA -- ;) diff -Nru binaryen-91/test/lld/shared.wat binaryen-99/test/lld/shared.wat --- binaryen-91/test/lld/shared.wat 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/shared.wat 2021-01-07 20:01:06.000000000 +0000 @@ -1,15 +1,15 @@ (module - (type $0 (func (param i32) (result i32))) - (type $1 (func)) - (type $2 (func (result i32))) - (import "env" "memory" (memory $0 0)) - (data (global.get $gimport$2) "Hello, world\00\00\00\00\00\00\00\00\00\00\00\00") - (import "env" "__indirect_function_table" (table $timport$1 0 funcref)) - (import "env" "__memory_base" (global $gimport$2 i32)) - (import "env" "__table_base" (global $gimport$3 i32)) - (import "GOT.mem" "external_var" (global $gimport$5 (mut i32))) - (import "GOT.func" "puts" (global $gimport$6 (mut i32))) - (import "GOT.func" "_Z13print_messagev" (global $gimport$7 (mut i32))) + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "env" "memory" (memory $mimport$0 0)) + (data (global.get $gimport$0) "Hello, world\00\00\00\00\00\00\00\00\00\00\00\00") + (import "env" "__indirect_function_table" (table $timport$0 0 funcref)) + (import "env" "__memory_base" (global $gimport$0 i32)) + (import "env" "__table_base" (global $gimport$1 i32)) + (import "GOT.mem" "external_var" (global $gimport$2 (mut i32))) + (import "GOT.func" "puts" (global $gimport$3 (mut i32))) + (import "GOT.func" "_Z13print_messagev" (global $gimport$4 (mut i32))) (import "env" "puts" (func $puts (param i32) (result i32))) (global $global$0 i32 (i32.const 16)) (global $global$1 i32 (i32.const 20)) @@ -17,39 +17,43 @@ (export "_Z13print_messagev" (func $print_message\28\29)) (export "ptr_puts" (global $global$0)) (export "ptr_local_func" (global $global$1)) - (func $__wasm_call_ctors (; 1 ;) (type $1) + (func $__wasm_call_ctors (call $__wasm_apply_relocs) ) - (func $__wasm_apply_relocs (; 2 ;) (type $1) + (func $__wasm_apply_relocs (i32.store (i32.add - (global.get $gimport$2) + (global.get $gimport$0) (i32.const 16) ) - (global.get $gimport$6) + (global.get $gimport$3) ) (i32.store (i32.add - (global.get $gimport$2) + (global.get $gimport$0) (i32.const 20) ) - (global.get $gimport$7) + (global.get $gimport$4) ) ) - (func $print_message\28\29 (; 3 ;) (type $2) (result i32) + (func $print_message\28\29 (result i32) (drop (call $puts (i32.add - (global.get $gimport$2) + (global.get $gimport$0) (i32.const 0) ) ) ) (i32.load - (global.get $gimport$5) + (global.get $gimport$2) ) ) - ;; custom section "dylink", size 5 + ;; dylink section + ;; memorysize: 24 + ;; memoryalignment: 2 + ;; tablesize: 0 + ;; tablealignment: 0 ;; custom section "producers", size 112 ) diff -Nru binaryen-91/test/lld/shared.wat.out binaryen-99/test/lld/shared.wat.out --- binaryen-91/test/lld/shared.wat.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/shared.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -2,94 +2,71 @@ (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "memory" (memory $0 0)) - (data (global.get $gimport$2) "Hello, world\00\00\00\00\00\00\00\00\00\00\00\00") - (import "env" "table" (table $0 0 funcref)) - (import "env" "__memory_base" (global $gimport$2 i32)) - (import "env" "__table_base" (global $gimport$3 i32)) + (import "env" "memory" (memory $mimport$0 0)) + (data (global.get $gimport$0) "Hello, world\00\00\00\00\00\00\00\00\00\00\00\00") + (import "env" "__indirect_function_table" (table $timport$0 0 funcref)) + (import "env" "__memory_base" (global $gimport$0 i32)) + (import "env" "__table_base" (global $gimport$1 i32)) + (import "GOT.mem" "external_var" (global $gimport$2 (mut i32))) + (import "GOT.func" "puts" (global $gimport$3 (mut i32))) + (import "GOT.func" "_Z13print_messagev" (global $gimport$4 (mut i32))) (import "env" "puts" (func $puts (param i32) (result i32))) - (import "env" "g$external_var" (func $g$external_var (result i32))) - (import "env" "fp$puts$ii" (func $fp$puts$ii (result i32))) - (import "env" "fp$_Z13print_messagev$i" (func $fp$_Z13print_messagev$i (result i32))) - (global $gimport$5 (mut i32) (i32.const 0)) - (global $gimport$6 (mut i32) (i32.const 0)) - (global $gimport$7 (mut i32) (i32.const 0)) (global $global$0 i32 (i32.const 16)) (global $global$1 i32 (i32.const 20)) + (export "__post_instantiate" (func $__wasm_call_ctors)) (export "_Z13print_messagev" (func $print_message\28\29)) (export "ptr_puts" (global $global$0)) (export "ptr_local_func" (global $global$1)) - (export "__post_instantiate" (func $__post_instantiate)) - (func $__wasm_call_ctors (; 4 ;) + (func $__wasm_call_ctors (call $__wasm_apply_relocs) ) - (func $__wasm_apply_relocs (; 5 ;) + (func $__wasm_apply_relocs (i32.store (i32.add - (global.get $gimport$2) + (global.get $gimport$0) (i32.const 16) ) - (global.get $gimport$6) + (global.get $gimport$3) ) (i32.store (i32.add - (global.get $gimport$2) + (global.get $gimport$0) (i32.const 20) ) - (global.get $gimport$7) + (global.get $gimport$4) ) ) - (func $print_message\28\29 (; 6 ;) (result i32) + (func $print_message\28\29 (result i32) (drop (call $puts (i32.add - (global.get $gimport$2) + (global.get $gimport$0) (i32.const 0) ) ) ) (i32.load - (global.get $gimport$5) - ) - ) - (func $__post_instantiate (; 7 ;) - (call $__assign_got_enties) - (call $__wasm_call_ctors) - ) - (func $__assign_got_enties (; 8 ;) - (global.set $gimport$5 - (call $g$external_var) - ) - (global.set $gimport$6 - (call $fp$puts$ii) - ) - (global.set $gimport$7 - (call $fp$_Z13print_messagev$i) + (global.get $gimport$2) ) ) ) (; --BEGIN METADATA -- { - "staticBump": 0, "tableSize": 0, "declares": [ - "puts", - "g$external_var", - "fp$puts$ii", - "fp$_Z13print_messagev$i" + "puts" ], "externs": [ "___memory_base", - "___table_base" - ], - "implementedFunctions": [ - "__Z13print_messagev", - "___post_instantiate" + "___table_base", + "_external_var", + "_puts", + "__Z13print_messagev" ], "exports": [ - "_Z13print_messagev", - "__post_instantiate" + "__post_instantiate", + "_Z13print_messagev" ], "namedGlobals": { "ptr_puts" : "16", @@ -97,9 +74,9 @@ }, "invokeFuncs": [ ], + "mainReadsParams": 0, "features": [ - ], - "mainReadsParams": 0 + ] } -- END METADATA -- ;) diff -Nru binaryen-91/test/lld/standalone-wasm2.wat.out binaryen-99/test/lld/standalone-wasm2.wat.out --- binaryen-91/test/lld/standalone-wasm2.wat.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/standalone-wasm2.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -1,9 +1,5 @@ (module - (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) (memory $0 2) (global $global$0 (mut i32) (i32.const 66112)) (global $global$1 i32 (i32.const 66112)) @@ -12,81 +8,26 @@ (export "main" (func $main)) (export "__heap_base" (global $global$1)) (export "__data_end" (global $global$2)) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (export "_start" (func $_start)) - (func $__original_main (; 0 ;) (param $0 i32) (param $1 i32) (result i32) + (func $__original_main (param $0 i32) (param $1 i32) (result i32) (nop) ) - (func $main (; 1 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (call $__original_main (local.get $0) (local.get $1) ) ) - (func $stackSave (; 2 ;) (result i32) - (global.get $global$0) - ) - (func $stackAlloc (; 3 ;) (param $0 i32) (result i32) - (local $1 i32) - (global.set $global$0 - (local.tee $1 - (i32.and - (i32.sub - (global.get $global$0) - (local.get $0) - ) - (i32.const -16) - ) - ) - ) - (local.get $1) - ) - (func $stackRestore (; 4 ;) (param $0 i32) - (global.set $global$0 - (local.get $0) - ) - ) - (func $__growWasmMemory (; 5 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) - (func $_start (; 6 ;) - (drop - (call $main - (i32.const 0) - (i32.const 0) - ) - ) - ) ) (; --BEGIN METADATA -- { - "staticBump": 8, "tableSize": 0, "declares": [ ], "externs": [ ], - "implementedFunctions": [ - "_main", - "_stackSave", - "_stackAlloc", - "_stackRestore", - "___growWasmMemory", - "__start" - ], "exports": [ - "main", - "stackSave", - "stackAlloc", - "stackRestore", - "__growWasmMemory", - "_start" + "main" ], "namedGlobals": { "__heap_base" : "66112", @@ -95,8 +36,7 @@ "invokeFuncs": [ ], "features": [ - ], - "mainReadsParams": 1 + ] } -- END METADATA -- ;) diff -Nru binaryen-91/test/lld/standalone-wasm3.wat.out binaryen-99/test/lld/standalone-wasm3.wat.out --- binaryen-91/test/lld/standalone-wasm3.wat.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/standalone-wasm3.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,4 @@ (module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (memory $0 2) (global $global$0 (mut i32) (i32.const 66112)) @@ -10,62 +7,19 @@ (export "memory" (memory $0)) (export "__heap_base" (global $global$1)) (export "__data_end" (global $global$2)) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (func $__original_main (; 0 ;) (param $0 i32) (param $1 i32) (result i32) + (func $__original_main (param $0 i32) (param $1 i32) (result i32) (nop) ) - (func $stackSave (; 1 ;) (result i32) - (global.get $global$0) - ) - (func $stackAlloc (; 2 ;) (param $0 i32) (result i32) - (local $1 i32) - (global.set $global$0 - (local.tee $1 - (i32.and - (i32.sub - (global.get $global$0) - (local.get $0) - ) - (i32.const -16) - ) - ) - ) - (local.get $1) - ) - (func $stackRestore (; 3 ;) (param $0 i32) - (global.set $global$0 - (local.get $0) - ) - ) - (func $__growWasmMemory (; 4 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) ) (; --BEGIN METADATA -- { - "staticBump": 8, "tableSize": 0, "declares": [ ], "externs": [ ], - "implementedFunctions": [ - "_stackSave", - "_stackAlloc", - "_stackRestore", - "___growWasmMemory" - ], "exports": [ - "stackSave", - "stackAlloc", - "stackRestore", - "__growWasmMemory" ], "namedGlobals": { "__heap_base" : "66112", @@ -74,8 +28,7 @@ "invokeFuncs": [ ], "features": [ - ], - "mainReadsParams": 0 + ] } -- END METADATA -- ;) diff -Nru binaryen-91/test/lld/standalone-wasm.wat.out binaryen-99/test/lld/standalone-wasm.wat.out --- binaryen-91/test/lld/standalone-wasm.wat.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/standalone-wasm.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -1,8 +1,5 @@ (module (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (memory $0 2) (table $0 1 1 funcref) @@ -14,81 +11,26 @@ (export "main" (func $main)) (export "__heap_base" (global $global$1)) (export "__data_end" (global $global$2)) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (export "_start" (func $_start)) - (func $__original_main (; 0 ;) (result i32) + (func $__original_main (result i32) (nop) ) - (func $main (; 1 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) - (func $foo (; 2 ;) (result i32) + (func $foo (result i32) (nop) ) - (func $stackSave (; 3 ;) (result i32) - (global.get $global$0) - ) - (func $stackAlloc (; 4 ;) (param $0 i32) (result i32) - (local $1 i32) - (global.set $global$0 - (local.tee $1 - (i32.and - (i32.sub - (global.get $global$0) - (local.get $0) - ) - (i32.const -16) - ) - ) - ) - (local.get $1) - ) - (func $stackRestore (; 5 ;) (param $0 i32) - (global.set $global$0 - (local.get $0) - ) - ) - (func $__growWasmMemory (; 6 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) - (func $_start (; 7 ;) - (drop - (call $main - (i32.const 0) - (i32.const 0) - ) - ) - ) ) (; --BEGIN METADATA -- { - "staticBump": 8, "tableSize": 1, "declares": [ ], "externs": [ ], - "implementedFunctions": [ - "_main", - "_stackSave", - "_stackAlloc", - "_stackRestore", - "___growWasmMemory", - "__start" - ], "exports": [ - "main", - "stackSave", - "stackAlloc", - "stackRestore", - "__growWasmMemory", - "_start" + "main" ], "namedGlobals": { "__heap_base" : "66112", @@ -97,8 +39,7 @@ "invokeFuncs": [ ], "features": [ - ], - "mainReadsParams": 0 + ] } -- END METADATA -- ;) diff -Nru binaryen-91/test/lld/standalone-wasm-with-start.wat.out binaryen-99/test/lld/standalone-wasm-with-start.wat.out --- binaryen-91/test/lld/standalone-wasm-with-start.wat.out 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/lld/standalone-wasm-with-start.wat.out 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,5 @@ (module (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (memory $0 2) (table $0 1 1 funcref) (elem (i32.const 0) $foo) @@ -12,67 +10,23 @@ (export "_start" (func $_start)) (export "__heap_base" (global $global$1)) (export "__data_end" (global $global$2)) - (export "stackSave" (func $stackSave)) - (export "stackAlloc" (func $stackAlloc)) - (export "stackRestore" (func $stackRestore)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (func $_start (; 0 ;) (result i32) + (func $_start (result i32) (nop) ) - (func $foo (; 1 ;) (result i32) + (func $foo (result i32) (nop) ) - (func $stackSave (; 2 ;) (result i32) - (global.get $global$0) - ) - (func $stackAlloc (; 3 ;) (param $0 i32) (result i32) - (local $1 i32) - (global.set $global$0 - (local.tee $1 - (i32.and - (i32.sub - (global.get $global$0) - (local.get $0) - ) - (i32.const -16) - ) - ) - ) - (local.get $1) - ) - (func $stackRestore (; 4 ;) (param $0 i32) - (global.set $global$0 - (local.get $0) - ) - ) - (func $__growWasmMemory (; 5 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) ) (; --BEGIN METADATA -- { - "staticBump": 8, "tableSize": 1, "declares": [ ], "externs": [ ], - "implementedFunctions": [ - "__start", - "_stackSave", - "_stackAlloc", - "_stackRestore", - "___growWasmMemory" - ], "exports": [ - "_start", - "stackSave", - "stackAlloc", - "stackRestore", - "__growWasmMemory" + "_start" ], "namedGlobals": { "__heap_base" : "66112", @@ -81,8 +35,7 @@ "invokeFuncs": [ ], "features": [ - ], - "mainReadsParams": 0 + ] } -- END METADATA -- ;) diff -Nru binaryen-91/test/memorygrowth.asm.js binaryen-99/test/memorygrowth.asm.js --- binaryen-91/test/memorygrowth.asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/memorygrowth.asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,2387 +0,0 @@ -Module["asm"] = (function(global,env,buffer) { - - "almost asm"; - var a = global.Int8Array; - var b = global.Int16Array; - var c = global.Int32Array; - var d = global.Uint8Array; - var e = global.Uint16Array; - var f = global.Uint32Array; - var g = global.Float32Array; - var h = global.Float64Array; - var i = new a(buffer); - var j = new b(buffer); - var k = new c(buffer); - var l = new d(buffer); - var m = new e(buffer); - var n = new f(buffer); - var o = new g(buffer); - var p = new h(buffer); - var q = global.byteLength; - var r = env.STACKTOP | 0; - var s = env.STACK_MAX | 0; - var t = env.tempDoublePtr | 0; - var u = env.ABORT | 0; - var v = 0; - var w = 0; - var x = 0; - var y = 0; - var z = global.NaN, A = global.Infinity; - var B = 0, C = 0, D = 0, E = 0, F = 0.0, G = 0, H = 0, I = 0, J = 0.0; - var K = 0; - var L = 0; - var M = 0; - var N = 0; - var O = 0; - var P = 0; - var Q = 0; - var R = 0; - var S = 0; - var T = 0; - var U = global.Math.floor; - var V = global.Math.abs; - var W = global.Math.sqrt; - var X = global.Math.pow; - var Y = global.Math.cos; - var Z = global.Math.sin; - var _ = global.Math.tan; - var $ = global.Math.acos; - var aa = global.Math.asin; - var ba = global.Math.atan; - var ca = global.Math.atan2; - var da = global.Math.exp; - var ea = global.Math.log; - var fa = global.Math.ceil; - var ga = global.Math.imul; - var ha = global.Math.min; - var ia = global.Math.clz32; - var ja = env.abort; - var ka = env.assert; - var la = env.invoke_ii; - var ma = env.invoke_iiii; - var na = env.invoke_vi; - var oa = env._pthread_cleanup_pop; - var pa = env.___lock; - var qa = env._abort; - var ra = env._pthread_cleanup_push; - var sa = env.___syscall6; - var ta = env._sbrk; - var ua = env.___syscall140; - var va = env._emscripten_memcpy_big; - var wa = env.___syscall54; - var xa = env.___unlock; - var ya = env.___syscall146; - var za = 0.0; - function Aa(newBuffer) { - if (q(newBuffer) & 16777215 || q(newBuffer) <= 16777215 || q(newBuffer) > 2147483648) return false; - i = new a(newBuffer); - j = new b(newBuffer); - k = new c(newBuffer); - l = new d(newBuffer); - m = new e(newBuffer); - n = new f(newBuffer); - o = new g(newBuffer); - p = new h(newBuffer); - buffer = newBuffer; - return true; - } - -// EMSCRIPTEN_START_FUNCS - -function eb(a) { - a = a | 0; - var b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0, M = 0, N = 0, O = 0, P = 0, Q = 0, R = 0, S = 0, T = 0, U = 0, V = 0, W = 0, X = 0, Y = 0, Z = 0, _ = 0, $ = 0, aa = 0, ba = 0, ca = 0, da = 0, ea = 0, fa = 0, ga = 0, ha = 0, ia = 0, ja = 0, ka = 0, la = 0, ma = 0, na = 0, oa = 0, pa = 0, ra = 0, sa = 0, ua = 0, va = 0, wa = 0, xa = 0, ya = 0, za = 0, Aa = 0, Ba = 0, Ca = 0, Da = 0, Ea = 0, Fa = 0, Ga = 0, Ha = 0, Ia = 0, Ja = 0, Ka = 0, La = 0, Ma = 0, Na = 0, Oa = 0, Pa = 0, Ra = 0, Sa = 0; - b = r; - r = r + 16 | 0; - c = b; - do if (a >>> 0 < 245) { - d = a >>> 0 < 11 ? 16 : a + 11 & -8; - e = d >>> 3; - f = k[302] | 0; - g = f >>> e; - if (g & 3 | 0) { - h = (g & 1 ^ 1) + e | 0; - i = 1248 + (h << 1 << 2) | 0; - j = i + 8 | 0; - l = k[j >> 2] | 0; - m = l + 8 | 0; - n = k[m >> 2] | 0; - do if ((i | 0) == (n | 0)) k[302] = f & ~(1 << h); else { - if (n >>> 0 < (k[306] | 0) >>> 0) qa(); - o = n + 12 | 0; - if ((k[o >> 2] | 0) == (l | 0)) { - k[o >> 2] = i; - k[j >> 2] = n; - break; - } else qa(); - } while (0); - n = h << 3; - k[l + 4 >> 2] = n | 3; - j = l + n + 4 | 0; - k[j >> 2] = k[j >> 2] | 1; - p = m; - r = b; - return p | 0; - } - j = k[304] | 0; - if (d >>> 0 > j >>> 0) { - if (g | 0) { - n = 2 << e; - i = g << e & (n | 0 - n); - n = (i & 0 - i) + -1 | 0; - i = n >>> 12 & 16; - o = n >>> i; - n = o >>> 5 & 8; - q = o >>> n; - o = q >>> 2 & 4; - s = q >>> o; - q = s >>> 1 & 2; - t = s >>> q; - s = t >>> 1 & 1; - u = (n | i | o | q | s) + (t >>> s) | 0; - s = 1248 + (u << 1 << 2) | 0; - t = s + 8 | 0; - q = k[t >> 2] | 0; - o = q + 8 | 0; - i = k[o >> 2] | 0; - do if ((s | 0) == (i | 0)) { - k[302] = f & ~(1 << u); - v = j; - } else { - if (i >>> 0 < (k[306] | 0) >>> 0) qa(); - n = i + 12 | 0; - if ((k[n >> 2] | 0) == (q | 0)) { - k[n >> 2] = s; - k[t >> 2] = i; - v = k[304] | 0; - break; - } else qa(); - } while (0); - i = (u << 3) - d | 0; - k[q + 4 >> 2] = d | 3; - t = q + d | 0; - k[t + 4 >> 2] = i | 1; - k[t + i >> 2] = i; - if (v | 0) { - s = k[307] | 0; - j = v >>> 3; - f = 1248 + (j << 1 << 2) | 0; - e = k[302] | 0; - g = 1 << j; - if (!(e & g)) { - k[302] = e | g; - w = f + 8 | 0; - x = f; - } else { - g = f + 8 | 0; - e = k[g >> 2] | 0; - if (e >>> 0 < (k[306] | 0) >>> 0) qa(); else { - w = g; - x = e; - } - } - k[w >> 2] = s; - k[x + 12 >> 2] = s; - k[s + 8 >> 2] = x; - k[s + 12 >> 2] = f; - } - k[304] = i; - k[307] = t; - p = o; - r = b; - return p | 0; - } - t = k[303] | 0; - if (!t) y = d; else { - i = (t & 0 - t) + -1 | 0; - t = i >>> 12 & 16; - f = i >>> t; - i = f >>> 5 & 8; - s = f >>> i; - f = s >>> 2 & 4; - e = s >>> f; - s = e >>> 1 & 2; - g = e >>> s; - e = g >>> 1 & 1; - j = k[1512 + ((i | t | f | s | e) + (g >>> e) << 2) >> 2] | 0; - e = (k[j + 4 >> 2] & -8) - d | 0; - g = j; - s = j; - while (1) { - j = k[g + 16 >> 2] | 0; - if (!j) { - f = k[g + 20 >> 2] | 0; - if (!f) { - z = e; - A = s; - break; - } else B = f; - } else B = j; - j = (k[B + 4 >> 2] & -8) - d | 0; - f = j >>> 0 < e >>> 0; - e = f ? j : e; - g = B; - s = f ? B : s; - } - s = k[306] | 0; - if (A >>> 0 < s >>> 0) qa(); - g = A + d | 0; - if (A >>> 0 >= g >>> 0) qa(); - e = k[A + 24 >> 2] | 0; - o = k[A + 12 >> 2] | 0; - do if ((o | 0) == (A | 0)) { - q = A + 20 | 0; - u = k[q >> 2] | 0; - if (!u) { - f = A + 16 | 0; - j = k[f >> 2] | 0; - if (!j) { - C = 0; - break; - } else { - D = j; - E = f; - } - } else { - D = u; - E = q; - } - while (1) { - q = D + 20 | 0; - u = k[q >> 2] | 0; - if (u | 0) { - D = u; - E = q; - continue; - } - q = D + 16 | 0; - u = k[q >> 2] | 0; - if (!u) { - F = D; - G = E; - break; - } else { - D = u; - E = q; - } - } - if (G >>> 0 < s >>> 0) qa(); else { - k[G >> 2] = 0; - C = F; - break; - } - } else { - q = k[A + 8 >> 2] | 0; - if (q >>> 0 < s >>> 0) qa(); - u = q + 12 | 0; - if ((k[u >> 2] | 0) != (A | 0)) qa(); - f = o + 8 | 0; - if ((k[f >> 2] | 0) == (A | 0)) { - k[u >> 2] = o; - k[f >> 2] = q; - C = o; - break; - } else qa(); - } while (0); - do if (e | 0) { - o = k[A + 28 >> 2] | 0; - s = 1512 + (o << 2) | 0; - if ((A | 0) == (k[s >> 2] | 0)) { - k[s >> 2] = C; - if (!C) { - k[303] = k[303] & ~(1 << o); - break; - } - } else { - if (e >>> 0 < (k[306] | 0) >>> 0) qa(); - o = e + 16 | 0; - if ((k[o >> 2] | 0) == (A | 0)) k[o >> 2] = C; else k[e + 20 >> 2] = C; - if (!C) break; - } - o = k[306] | 0; - if (C >>> 0 < o >>> 0) qa(); - k[C + 24 >> 2] = e; - s = k[A + 16 >> 2] | 0; - do if (s | 0) if (s >>> 0 < o >>> 0) qa(); else { - k[C + 16 >> 2] = s; - k[s + 24 >> 2] = C; - break; - } while (0); - s = k[A + 20 >> 2] | 0; - if (s | 0) if (s >>> 0 < (k[306] | 0) >>> 0) qa(); else { - k[C + 20 >> 2] = s; - k[s + 24 >> 2] = C; - break; - } - } while (0); - if (z >>> 0 < 16) { - e = z + d | 0; - k[A + 4 >> 2] = e | 3; - s = A + e + 4 | 0; - k[s >> 2] = k[s >> 2] | 1; - } else { - k[A + 4 >> 2] = d | 3; - k[g + 4 >> 2] = z | 1; - k[g + z >> 2] = z; - s = k[304] | 0; - if (s | 0) { - e = k[307] | 0; - o = s >>> 3; - s = 1248 + (o << 1 << 2) | 0; - q = k[302] | 0; - f = 1 << o; - if (!(q & f)) { - k[302] = q | f; - H = s + 8 | 0; - I = s; - } else { - f = s + 8 | 0; - q = k[f >> 2] | 0; - if (q >>> 0 < (k[306] | 0) >>> 0) qa(); else { - H = f; - I = q; - } - } - k[H >> 2] = e; - k[I + 12 >> 2] = e; - k[e + 8 >> 2] = I; - k[e + 12 >> 2] = s; - } - k[304] = z; - k[307] = g; - } - p = A + 8 | 0; - r = b; - return p | 0; - } - } else y = d; - } else if (a >>> 0 > 4294967231) y = -1; else { - s = a + 11 | 0; - e = s & -8; - q = k[303] | 0; - if (!q) y = e; else { - f = 0 - e | 0; - o = s >>> 8; - if (!o) J = 0; else if (e >>> 0 > 16777215) J = 31; else { - s = (o + 1048320 | 0) >>> 16 & 8; - u = o << s; - o = (u + 520192 | 0) >>> 16 & 4; - j = u << o; - u = (j + 245760 | 0) >>> 16 & 2; - t = 14 - (o | s | u) + (j << u >>> 15) | 0; - J = e >>> (t + 7 | 0) & 1 | t << 1; - } - t = k[1512 + (J << 2) >> 2] | 0; - a : do if (!t) { - K = f; - L = 0; - M = 0; - N = 86; - } else { - u = f; - j = 0; - s = e << ((J | 0) == 31 ? 0 : 25 - (J >>> 1) | 0); - o = t; - i = 0; - while (1) { - m = k[o + 4 >> 2] & -8; - l = m - e | 0; - if (l >>> 0 < u >>> 0) if ((m | 0) == (e | 0)) { - O = l; - P = o; - Q = o; - N = 90; - break a; - } else { - R = l; - S = o; - } else { - R = u; - S = i; - } - l = k[o + 20 >> 2] | 0; - o = k[o + 16 + (s >>> 31 << 2) >> 2] | 0; - m = (l | 0) == 0 | (l | 0) == (o | 0) ? j : l; - l = (o | 0) == 0; - if (l) { - K = R; - L = m; - M = S; - N = 86; - break; - } else { - u = R; - j = m; - s = s << (l & 1 ^ 1); - i = S; - } - } - } while (0); - if ((N | 0) == 86) { - if ((L | 0) == 0 & (M | 0) == 0) { - t = 2 << J; - f = q & (t | 0 - t); - if (!f) { - y = e; - break; - } - t = (f & 0 - f) + -1 | 0; - f = t >>> 12 & 16; - d = t >>> f; - t = d >>> 5 & 8; - g = d >>> t; - d = g >>> 2 & 4; - i = g >>> d; - g = i >>> 1 & 2; - s = i >>> g; - i = s >>> 1 & 1; - T = k[1512 + ((t | f | d | g | i) + (s >>> i) << 2) >> 2] | 0; - } else T = L; - if (!T) { - U = K; - V = M; - } else { - O = K; - P = T; - Q = M; - N = 90; - } - } - if ((N | 0) == 90) while (1) { - N = 0; - i = (k[P + 4 >> 2] & -8) - e | 0; - s = i >>> 0 < O >>> 0; - g = s ? i : O; - i = s ? P : Q; - s = k[P + 16 >> 2] | 0; - if (s | 0) { - O = g; - P = s; - Q = i; - N = 90; - continue; - } - P = k[P + 20 >> 2] | 0; - if (!P) { - U = g; - V = i; - break; - } else { - O = g; - Q = i; - N = 90; - } - } - if (!V) y = e; else if (U >>> 0 < ((k[304] | 0) - e | 0) >>> 0) { - q = k[306] | 0; - if (V >>> 0 < q >>> 0) qa(); - i = V + e | 0; - if (V >>> 0 >= i >>> 0) qa(); - g = k[V + 24 >> 2] | 0; - s = k[V + 12 >> 2] | 0; - do if ((s | 0) == (V | 0)) { - d = V + 20 | 0; - f = k[d >> 2] | 0; - if (!f) { - t = V + 16 | 0; - j = k[t >> 2] | 0; - if (!j) { - W = 0; - break; - } else { - X = j; - Y = t; - } - } else { - X = f; - Y = d; - } - while (1) { - d = X + 20 | 0; - f = k[d >> 2] | 0; - if (f | 0) { - X = f; - Y = d; - continue; - } - d = X + 16 | 0; - f = k[d >> 2] | 0; - if (!f) { - Z = X; - _ = Y; - break; - } else { - X = f; - Y = d; - } - } - if (_ >>> 0 < q >>> 0) qa(); else { - k[_ >> 2] = 0; - W = Z; - break; - } - } else { - d = k[V + 8 >> 2] | 0; - if (d >>> 0 < q >>> 0) qa(); - f = d + 12 | 0; - if ((k[f >> 2] | 0) != (V | 0)) qa(); - t = s + 8 | 0; - if ((k[t >> 2] | 0) == (V | 0)) { - k[f >> 2] = s; - k[t >> 2] = d; - W = s; - break; - } else qa(); - } while (0); - do if (g | 0) { - s = k[V + 28 >> 2] | 0; - q = 1512 + (s << 2) | 0; - if ((V | 0) == (k[q >> 2] | 0)) { - k[q >> 2] = W; - if (!W) { - k[303] = k[303] & ~(1 << s); - break; - } - } else { - if (g >>> 0 < (k[306] | 0) >>> 0) qa(); - s = g + 16 | 0; - if ((k[s >> 2] | 0) == (V | 0)) k[s >> 2] = W; else k[g + 20 >> 2] = W; - if (!W) break; - } - s = k[306] | 0; - if (W >>> 0 < s >>> 0) qa(); - k[W + 24 >> 2] = g; - q = k[V + 16 >> 2] | 0; - do if (q | 0) if (q >>> 0 < s >>> 0) qa(); else { - k[W + 16 >> 2] = q; - k[q + 24 >> 2] = W; - break; - } while (0); - q = k[V + 20 >> 2] | 0; - if (q | 0) if (q >>> 0 < (k[306] | 0) >>> 0) qa(); else { - k[W + 20 >> 2] = q; - k[q + 24 >> 2] = W; - break; - } - } while (0); - do if (U >>> 0 < 16) { - g = U + e | 0; - k[V + 4 >> 2] = g | 3; - q = V + g + 4 | 0; - k[q >> 2] = k[q >> 2] | 1; - } else { - k[V + 4 >> 2] = e | 3; - k[i + 4 >> 2] = U | 1; - k[i + U >> 2] = U; - q = U >>> 3; - if (U >>> 0 < 256) { - g = 1248 + (q << 1 << 2) | 0; - s = k[302] | 0; - d = 1 << q; - if (!(s & d)) { - k[302] = s | d; - $ = g + 8 | 0; - aa = g; - } else { - d = g + 8 | 0; - s = k[d >> 2] | 0; - if (s >>> 0 < (k[306] | 0) >>> 0) qa(); else { - $ = d; - aa = s; - } - } - k[$ >> 2] = i; - k[aa + 12 >> 2] = i; - k[i + 8 >> 2] = aa; - k[i + 12 >> 2] = g; - break; - } - g = U >>> 8; - if (!g) ba = 0; else if (U >>> 0 > 16777215) ba = 31; else { - s = (g + 1048320 | 0) >>> 16 & 8; - d = g << s; - g = (d + 520192 | 0) >>> 16 & 4; - q = d << g; - d = (q + 245760 | 0) >>> 16 & 2; - t = 14 - (g | s | d) + (q << d >>> 15) | 0; - ba = U >>> (t + 7 | 0) & 1 | t << 1; - } - t = 1512 + (ba << 2) | 0; - k[i + 28 >> 2] = ba; - d = i + 16 | 0; - k[d + 4 >> 2] = 0; - k[d >> 2] = 0; - d = k[303] | 0; - q = 1 << ba; - if (!(d & q)) { - k[303] = d | q; - k[t >> 2] = i; - k[i + 24 >> 2] = t; - k[i + 12 >> 2] = i; - k[i + 8 >> 2] = i; - break; - } - q = U << ((ba | 0) == 31 ? 0 : 25 - (ba >>> 1) | 0); - d = k[t >> 2] | 0; - while (1) { - if ((k[d + 4 >> 2] & -8 | 0) == (U | 0)) { - ca = d; - N = 148; - break; - } - t = d + 16 + (q >>> 31 << 2) | 0; - s = k[t >> 2] | 0; - if (!s) { - da = t; - ea = d; - N = 145; - break; - } else { - q = q << 1; - d = s; - } - } - if ((N | 0) == 145) if (da >>> 0 < (k[306] | 0) >>> 0) qa(); else { - k[da >> 2] = i; - k[i + 24 >> 2] = ea; - k[i + 12 >> 2] = i; - k[i + 8 >> 2] = i; - break; - } else if ((N | 0) == 148) { - d = ca + 8 | 0; - q = k[d >> 2] | 0; - s = k[306] | 0; - if (q >>> 0 >= s >>> 0 & ca >>> 0 >= s >>> 0) { - k[q + 12 >> 2] = i; - k[d >> 2] = i; - k[i + 8 >> 2] = q; - k[i + 12 >> 2] = ca; - k[i + 24 >> 2] = 0; - break; - } else qa(); - } - } while (0); - p = V + 8 | 0; - r = b; - return p | 0; - } else y = e; - } - } while (0); - V = k[304] | 0; - if (V >>> 0 >= y >>> 0) { - ca = V - y | 0; - ea = k[307] | 0; - if (ca >>> 0 > 15) { - da = ea + y | 0; - k[307] = da; - k[304] = ca; - k[da + 4 >> 2] = ca | 1; - k[da + ca >> 2] = ca; - k[ea + 4 >> 2] = y | 3; - } else { - k[304] = 0; - k[307] = 0; - k[ea + 4 >> 2] = V | 3; - ca = ea + V + 4 | 0; - k[ca >> 2] = k[ca >> 2] | 1; - } - p = ea + 8 | 0; - r = b; - return p | 0; - } - ea = k[305] | 0; - if (ea >>> 0 > y >>> 0) { - ca = ea - y | 0; - k[305] = ca; - ea = k[308] | 0; - V = ea + y | 0; - k[308] = V; - k[V + 4 >> 2] = ca | 1; - k[ea + 4 >> 2] = y | 3; - p = ea + 8 | 0; - r = b; - return p | 0; - } - if (!(k[420] | 0)) { - k[422] = 4096; - k[421] = 4096; - k[423] = -1; - k[424] = -1; - k[425] = 0; - k[413] = 0; - ea = c & -16 ^ 1431655768; - k[c >> 2] = ea; - k[420] = ea; - } - ea = y + 48 | 0; - c = k[422] | 0; - ca = y + 47 | 0; - V = c + ca | 0; - da = 0 - c | 0; - c = V & da; - if (c >>> 0 <= y >>> 0) { - p = 0; - r = b; - return p | 0; - } - U = k[412] | 0; - if (U | 0) { - ba = k[410] | 0; - aa = ba + c | 0; - if (aa >>> 0 <= ba >>> 0 | aa >>> 0 > U >>> 0) { - p = 0; - r = b; - return p | 0; - } - } - b : do if (!(k[413] & 4)) { - U = k[308] | 0; - c : do if (!U) N = 171; else { - aa = 1656; - while (1) { - ba = k[aa >> 2] | 0; - if (ba >>> 0 <= U >>> 0) { - $ = aa + 4 | 0; - if ((ba + (k[$ >> 2] | 0) | 0) >>> 0 > U >>> 0) { - fa = aa; - ga = $; - break; - } - } - aa = k[aa + 8 >> 2] | 0; - if (!aa) { - N = 171; - break c; - } - } - aa = V - (k[305] | 0) & da; - if (aa >>> 0 < 2147483647) { - $ = ta(aa | 0) | 0; - if (($ | 0) == ((k[fa >> 2] | 0) + (k[ga >> 2] | 0) | 0)) { - if (($ | 0) != (-1 | 0)) { - ha = $; - ia = aa; - N = 191; - break b; - } - } else { - ja = $; - ka = aa; - N = 181; - } - } - } while (0); - do if ((N | 0) == 171) { - U = ta(0) | 0; - if ((U | 0) != (-1 | 0)) { - e = U; - aa = k[421] | 0; - $ = aa + -1 | 0; - if (!($ & e)) la = c; else la = c - e + ($ + e & 0 - aa) | 0; - aa = k[410] | 0; - e = aa + la | 0; - if (la >>> 0 > y >>> 0 & la >>> 0 < 2147483647) { - $ = k[412] | 0; - if ($ | 0) if (e >>> 0 <= aa >>> 0 | e >>> 0 > $ >>> 0) break; - $ = ta(la | 0) | 0; - if (($ | 0) == (U | 0)) { - ha = U; - ia = la; - N = 191; - break b; - } else { - ja = $; - ka = la; - N = 181; - } - } - } - } while (0); - d : do if ((N | 0) == 181) { - $ = 0 - ka | 0; - do if (ea >>> 0 > ka >>> 0 & (ka >>> 0 < 2147483647 & (ja | 0) != (-1 | 0))) { - U = k[422] | 0; - e = ca - ka + U & 0 - U; - if (e >>> 0 < 2147483647) if ((ta(e | 0) | 0) == (-1 | 0)) { - ta($ | 0) | 0; - break d; - } else { - ma = e + ka | 0; - break; - } else ma = ka; - } else ma = ka; while (0); - if ((ja | 0) != (-1 | 0)) { - ha = ja; - ia = ma; - N = 191; - break b; - } - } while (0); - k[413] = k[413] | 4; - N = 188; - } else N = 188; while (0); - if ((N | 0) == 188) if (c >>> 0 < 2147483647) { - ma = ta(c | 0) | 0; - c = ta(0) | 0; - if (ma >>> 0 < c >>> 0 & ((ma | 0) != (-1 | 0) & (c | 0) != (-1 | 0))) { - ja = c - ma | 0; - if (ja >>> 0 > (y + 40 | 0) >>> 0) { - ha = ma; - ia = ja; - N = 191; - } - } - } - if ((N | 0) == 191) { - ja = (k[410] | 0) + ia | 0; - k[410] = ja; - if (ja >>> 0 > (k[411] | 0) >>> 0) k[411] = ja; - ja = k[308] | 0; - do if (!ja) { - ma = k[306] | 0; - if ((ma | 0) == 0 | ha >>> 0 < ma >>> 0) k[306] = ha; - k[414] = ha; - k[415] = ia; - k[417] = 0; - k[311] = k[420]; - k[310] = -1; - ma = 0; - do { - c = 1248 + (ma << 1 << 2) | 0; - k[c + 12 >> 2] = c; - k[c + 8 >> 2] = c; - ma = ma + 1 | 0; - } while ((ma | 0) != 32); - ma = ha + 8 | 0; - c = (ma & 7 | 0) == 0 ? 0 : 0 - ma & 7; - ma = ha + c | 0; - ka = ia + -40 - c | 0; - k[308] = ma; - k[305] = ka; - k[ma + 4 >> 2] = ka | 1; - k[ma + ka + 4 >> 2] = 40; - k[309] = k[424]; - } else { - ka = 1656; - do { - ma = k[ka >> 2] | 0; - c = ka + 4 | 0; - ca = k[c >> 2] | 0; - if ((ha | 0) == (ma + ca | 0)) { - na = ma; - oa = c; - pa = ca; - ra = ka; - N = 201; - break; - } - ka = k[ka + 8 >> 2] | 0; - } while ((ka | 0) != 0); - if ((N | 0) == 201) if (!(k[ra + 12 >> 2] & 8)) if (ja >>> 0 < ha >>> 0 & ja >>> 0 >= na >>> 0) { - k[oa >> 2] = pa + ia; - ka = ja + 8 | 0; - ca = (ka & 7 | 0) == 0 ? 0 : 0 - ka & 7; - ka = ja + ca | 0; - c = ia - ca + (k[305] | 0) | 0; - k[308] = ka; - k[305] = c; - k[ka + 4 >> 2] = c | 1; - k[ka + c + 4 >> 2] = 40; - k[309] = k[424]; - break; - } - c = k[306] | 0; - if (ha >>> 0 < c >>> 0) { - k[306] = ha; - sa = ha; - } else sa = c; - c = ha + ia | 0; - ka = 1656; - while (1) { - if ((k[ka >> 2] | 0) == (c | 0)) { - ua = ka; - va = ka; - N = 209; - break; - } - ka = k[ka + 8 >> 2] | 0; - if (!ka) { - wa = 1656; - break; - } - } - if ((N | 0) == 209) if (!(k[va + 12 >> 2] & 8)) { - k[ua >> 2] = ha; - ka = va + 4 | 0; - k[ka >> 2] = (k[ka >> 2] | 0) + ia; - ka = ha + 8 | 0; - ca = ha + ((ka & 7 | 0) == 0 ? 0 : 0 - ka & 7) | 0; - ka = c + 8 | 0; - ma = c + ((ka & 7 | 0) == 0 ? 0 : 0 - ka & 7) | 0; - ka = ca + y | 0; - ea = ma - ca - y | 0; - k[ca + 4 >> 2] = y | 3; - do if ((ma | 0) == (ja | 0)) { - la = (k[305] | 0) + ea | 0; - k[305] = la; - k[308] = ka; - k[ka + 4 >> 2] = la | 1; - } else { - if ((ma | 0) == (k[307] | 0)) { - la = (k[304] | 0) + ea | 0; - k[304] = la; - k[307] = ka; - k[ka + 4 >> 2] = la | 1; - k[ka + la >> 2] = la; - break; - } - la = k[ma + 4 >> 2] | 0; - if ((la & 3 | 0) == 1) { - ga = la & -8; - fa = la >>> 3; - e : do if (la >>> 0 < 256) { - da = k[ma + 8 >> 2] | 0; - V = k[ma + 12 >> 2] | 0; - $ = 1248 + (fa << 1 << 2) | 0; - do if ((da | 0) != ($ | 0)) { - if (da >>> 0 < sa >>> 0) qa(); - if ((k[da + 12 >> 2] | 0) == (ma | 0)) break; - qa(); - } while (0); - if ((V | 0) == (da | 0)) { - k[302] = k[302] & ~(1 << fa); - break; - } - do if ((V | 0) == ($ | 0)) xa = V + 8 | 0; else { - if (V >>> 0 < sa >>> 0) qa(); - e = V + 8 | 0; - if ((k[e >> 2] | 0) == (ma | 0)) { - xa = e; - break; - } - qa(); - } while (0); - k[da + 12 >> 2] = V; - k[xa >> 2] = da; - } else { - $ = k[ma + 24 >> 2] | 0; - e = k[ma + 12 >> 2] | 0; - do if ((e | 0) == (ma | 0)) { - U = ma + 16 | 0; - aa = U + 4 | 0; - ba = k[aa >> 2] | 0; - if (!ba) { - W = k[U >> 2] | 0; - if (!W) { - ya = 0; - break; - } else { - za = W; - Aa = U; - } - } else { - za = ba; - Aa = aa; - } - while (1) { - aa = za + 20 | 0; - ba = k[aa >> 2] | 0; - if (ba | 0) { - za = ba; - Aa = aa; - continue; - } - aa = za + 16 | 0; - ba = k[aa >> 2] | 0; - if (!ba) { - Ba = za; - Ca = Aa; - break; - } else { - za = ba; - Aa = aa; - } - } - if (Ca >>> 0 < sa >>> 0) qa(); else { - k[Ca >> 2] = 0; - ya = Ba; - break; - } - } else { - aa = k[ma + 8 >> 2] | 0; - if (aa >>> 0 < sa >>> 0) qa(); - ba = aa + 12 | 0; - if ((k[ba >> 2] | 0) != (ma | 0)) qa(); - U = e + 8 | 0; - if ((k[U >> 2] | 0) == (ma | 0)) { - k[ba >> 2] = e; - k[U >> 2] = aa; - ya = e; - break; - } else qa(); - } while (0); - if (!$) break; - e = k[ma + 28 >> 2] | 0; - da = 1512 + (e << 2) | 0; - do if ((ma | 0) == (k[da >> 2] | 0)) { - k[da >> 2] = ya; - if (ya | 0) break; - k[303] = k[303] & ~(1 << e); - break e; - } else { - if ($ >>> 0 < (k[306] | 0) >>> 0) qa(); - V = $ + 16 | 0; - if ((k[V >> 2] | 0) == (ma | 0)) k[V >> 2] = ya; else k[$ + 20 >> 2] = ya; - if (!ya) break e; - } while (0); - e = k[306] | 0; - if (ya >>> 0 < e >>> 0) qa(); - k[ya + 24 >> 2] = $; - da = ma + 16 | 0; - V = k[da >> 2] | 0; - do if (V | 0) if (V >>> 0 < e >>> 0) qa(); else { - k[ya + 16 >> 2] = V; - k[V + 24 >> 2] = ya; - break; - } while (0); - V = k[da + 4 >> 2] | 0; - if (!V) break; - if (V >>> 0 < (k[306] | 0) >>> 0) qa(); else { - k[ya + 20 >> 2] = V; - k[V + 24 >> 2] = ya; - break; - } - } while (0); - Da = ma + ga | 0; - Ea = ga + ea | 0; - } else { - Da = ma; - Ea = ea; - } - fa = Da + 4 | 0; - k[fa >> 2] = k[fa >> 2] & -2; - k[ka + 4 >> 2] = Ea | 1; - k[ka + Ea >> 2] = Ea; - fa = Ea >>> 3; - if (Ea >>> 0 < 256) { - la = 1248 + (fa << 1 << 2) | 0; - V = k[302] | 0; - e = 1 << fa; - do if (!(V & e)) { - k[302] = V | e; - Fa = la + 8 | 0; - Ga = la; - } else { - fa = la + 8 | 0; - $ = k[fa >> 2] | 0; - if ($ >>> 0 >= (k[306] | 0) >>> 0) { - Fa = fa; - Ga = $; - break; - } - qa(); - } while (0); - k[Fa >> 2] = ka; - k[Ga + 12 >> 2] = ka; - k[ka + 8 >> 2] = Ga; - k[ka + 12 >> 2] = la; - break; - } - e = Ea >>> 8; - do if (!e) Ha = 0; else { - if (Ea >>> 0 > 16777215) { - Ha = 31; - break; - } - V = (e + 1048320 | 0) >>> 16 & 8; - ga = e << V; - $ = (ga + 520192 | 0) >>> 16 & 4; - fa = ga << $; - ga = (fa + 245760 | 0) >>> 16 & 2; - aa = 14 - ($ | V | ga) + (fa << ga >>> 15) | 0; - Ha = Ea >>> (aa + 7 | 0) & 1 | aa << 1; - } while (0); - e = 1512 + (Ha << 2) | 0; - k[ka + 28 >> 2] = Ha; - la = ka + 16 | 0; - k[la + 4 >> 2] = 0; - k[la >> 2] = 0; - la = k[303] | 0; - aa = 1 << Ha; - if (!(la & aa)) { - k[303] = la | aa; - k[e >> 2] = ka; - k[ka + 24 >> 2] = e; - k[ka + 12 >> 2] = ka; - k[ka + 8 >> 2] = ka; - break; - } - aa = Ea << ((Ha | 0) == 31 ? 0 : 25 - (Ha >>> 1) | 0); - la = k[e >> 2] | 0; - while (1) { - if ((k[la + 4 >> 2] & -8 | 0) == (Ea | 0)) { - Ia = la; - N = 279; - break; - } - e = la + 16 + (aa >>> 31 << 2) | 0; - ga = k[e >> 2] | 0; - if (!ga) { - Ja = e; - Ka = la; - N = 276; - break; - } else { - aa = aa << 1; - la = ga; - } - } - if ((N | 0) == 276) if (Ja >>> 0 < (k[306] | 0) >>> 0) qa(); else { - k[Ja >> 2] = ka; - k[ka + 24 >> 2] = Ka; - k[ka + 12 >> 2] = ka; - k[ka + 8 >> 2] = ka; - break; - } else if ((N | 0) == 279) { - la = Ia + 8 | 0; - aa = k[la >> 2] | 0; - ga = k[306] | 0; - if (aa >>> 0 >= ga >>> 0 & Ia >>> 0 >= ga >>> 0) { - k[aa + 12 >> 2] = ka; - k[la >> 2] = ka; - k[ka + 8 >> 2] = aa; - k[ka + 12 >> 2] = Ia; - k[ka + 24 >> 2] = 0; - break; - } else qa(); - } - } while (0); - p = ca + 8 | 0; - r = b; - return p | 0; - } else wa = 1656; - while (1) { - ka = k[wa >> 2] | 0; - if (ka >>> 0 <= ja >>> 0) { - ea = ka + (k[wa + 4 >> 2] | 0) | 0; - if (ea >>> 0 > ja >>> 0) { - La = ea; - break; - } - } - wa = k[wa + 8 >> 2] | 0; - } - ca = La + -47 | 0; - ea = ca + 8 | 0; - ka = ca + ((ea & 7 | 0) == 0 ? 0 : 0 - ea & 7) | 0; - ea = ja + 16 | 0; - ca = ka >>> 0 < ea >>> 0 ? ja : ka; - ka = ca + 8 | 0; - ma = ha + 8 | 0; - c = (ma & 7 | 0) == 0 ? 0 : 0 - ma & 7; - ma = ha + c | 0; - aa = ia + -40 - c | 0; - k[308] = ma; - k[305] = aa; - k[ma + 4 >> 2] = aa | 1; - k[ma + aa + 4 >> 2] = 40; - k[309] = k[424]; - aa = ca + 4 | 0; - k[aa >> 2] = 27; - k[ka >> 2] = k[414]; - k[ka + 4 >> 2] = k[415]; - k[ka + 8 >> 2] = k[416]; - k[ka + 12 >> 2] = k[417]; - k[414] = ha; - k[415] = ia; - k[417] = 0; - k[416] = ka; - ka = ca + 24 | 0; - do { - ka = ka + 4 | 0; - k[ka >> 2] = 7; - } while ((ka + 4 | 0) >>> 0 < La >>> 0); - if ((ca | 0) != (ja | 0)) { - ka = ca - ja | 0; - k[aa >> 2] = k[aa >> 2] & -2; - k[ja + 4 >> 2] = ka | 1; - k[ca >> 2] = ka; - ma = ka >>> 3; - if (ka >>> 0 < 256) { - c = 1248 + (ma << 1 << 2) | 0; - la = k[302] | 0; - ga = 1 << ma; - if (!(la & ga)) { - k[302] = la | ga; - Ma = c + 8 | 0; - Na = c; - } else { - ga = c + 8 | 0; - la = k[ga >> 2] | 0; - if (la >>> 0 < (k[306] | 0) >>> 0) qa(); else { - Ma = ga; - Na = la; - } - } - k[Ma >> 2] = ja; - k[Na + 12 >> 2] = ja; - k[ja + 8 >> 2] = Na; - k[ja + 12 >> 2] = c; - break; - } - c = ka >>> 8; - if (!c) Oa = 0; else if (ka >>> 0 > 16777215) Oa = 31; else { - la = (c + 1048320 | 0) >>> 16 & 8; - ga = c << la; - c = (ga + 520192 | 0) >>> 16 & 4; - ma = ga << c; - ga = (ma + 245760 | 0) >>> 16 & 2; - e = 14 - (c | la | ga) + (ma << ga >>> 15) | 0; - Oa = ka >>> (e + 7 | 0) & 1 | e << 1; - } - e = 1512 + (Oa << 2) | 0; - k[ja + 28 >> 2] = Oa; - k[ja + 20 >> 2] = 0; - k[ea >> 2] = 0; - ga = k[303] | 0; - ma = 1 << Oa; - if (!(ga & ma)) { - k[303] = ga | ma; - k[e >> 2] = ja; - k[ja + 24 >> 2] = e; - k[ja + 12 >> 2] = ja; - k[ja + 8 >> 2] = ja; - break; - } - ma = ka << ((Oa | 0) == 31 ? 0 : 25 - (Oa >>> 1) | 0); - ga = k[e >> 2] | 0; - while (1) { - if ((k[ga + 4 >> 2] & -8 | 0) == (ka | 0)) { - Pa = ga; - N = 305; - break; - } - e = ga + 16 + (ma >>> 31 << 2) | 0; - la = k[e >> 2] | 0; - if (!la) { - Ra = e; - Sa = ga; - N = 302; - break; - } else { - ma = ma << 1; - ga = la; - } - } - if ((N | 0) == 302) if (Ra >>> 0 < (k[306] | 0) >>> 0) qa(); else { - k[Ra >> 2] = ja; - k[ja + 24 >> 2] = Sa; - k[ja + 12 >> 2] = ja; - k[ja + 8 >> 2] = ja; - break; - } else if ((N | 0) == 305) { - ga = Pa + 8 | 0; - ma = k[ga >> 2] | 0; - ka = k[306] | 0; - if (ma >>> 0 >= ka >>> 0 & Pa >>> 0 >= ka >>> 0) { - k[ma + 12 >> 2] = ja; - k[ga >> 2] = ja; - k[ja + 8 >> 2] = ma; - k[ja + 12 >> 2] = Pa; - k[ja + 24 >> 2] = 0; - break; - } else qa(); - } - } - } while (0); - ja = k[305] | 0; - if (ja >>> 0 > y >>> 0) { - Pa = ja - y | 0; - k[305] = Pa; - ja = k[308] | 0; - N = ja + y | 0; - k[308] = N; - k[N + 4 >> 2] = Pa | 1; - k[ja + 4 >> 2] = y | 3; - p = ja + 8 | 0; - r = b; - return p | 0; - } - } - ja = Qa() | 0; - k[ja >> 2] = 12; - p = 0; - r = b; - return p | 0; -} - -function fb(a) { - a = a | 0; - var b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0, A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0, H = 0, I = 0, J = 0, K = 0, L = 0; - if (!a) return; - b = a + -8 | 0; - c = k[306] | 0; - if (b >>> 0 < c >>> 0) qa(); - d = k[a + -4 >> 2] | 0; - a = d & 3; - if ((a | 0) == 1) qa(); - e = d & -8; - f = b + e | 0; - do if (!(d & 1)) { - g = k[b >> 2] | 0; - if (!a) return; - h = b + (0 - g) | 0; - i = g + e | 0; - if (h >>> 0 < c >>> 0) qa(); - if ((h | 0) == (k[307] | 0)) { - j = f + 4 | 0; - l = k[j >> 2] | 0; - if ((l & 3 | 0) != 3) { - m = h; - n = i; - break; - } - k[304] = i; - k[j >> 2] = l & -2; - k[h + 4 >> 2] = i | 1; - k[h + i >> 2] = i; - return; - } - l = g >>> 3; - if (g >>> 0 < 256) { - g = k[h + 8 >> 2] | 0; - j = k[h + 12 >> 2] | 0; - o = 1248 + (l << 1 << 2) | 0; - if ((g | 0) != (o | 0)) { - if (g >>> 0 < c >>> 0) qa(); - if ((k[g + 12 >> 2] | 0) != (h | 0)) qa(); - } - if ((j | 0) == (g | 0)) { - k[302] = k[302] & ~(1 << l); - m = h; - n = i; - break; - } - if ((j | 0) == (o | 0)) p = j + 8 | 0; else { - if (j >>> 0 < c >>> 0) qa(); - o = j + 8 | 0; - if ((k[o >> 2] | 0) == (h | 0)) p = o; else qa(); - } - k[g + 12 >> 2] = j; - k[p >> 2] = g; - m = h; - n = i; - break; - } - g = k[h + 24 >> 2] | 0; - j = k[h + 12 >> 2] | 0; - do if ((j | 0) == (h | 0)) { - o = h + 16 | 0; - l = o + 4 | 0; - q = k[l >> 2] | 0; - if (!q) { - r = k[o >> 2] | 0; - if (!r) { - s = 0; - break; - } else { - t = r; - u = o; - } - } else { - t = q; - u = l; - } - while (1) { - l = t + 20 | 0; - q = k[l >> 2] | 0; - if (q | 0) { - t = q; - u = l; - continue; - } - l = t + 16 | 0; - q = k[l >> 2] | 0; - if (!q) { - v = t; - w = u; - break; - } else { - t = q; - u = l; - } - } - if (w >>> 0 < c >>> 0) qa(); else { - k[w >> 2] = 0; - s = v; - break; - } - } else { - l = k[h + 8 >> 2] | 0; - if (l >>> 0 < c >>> 0) qa(); - q = l + 12 | 0; - if ((k[q >> 2] | 0) != (h | 0)) qa(); - o = j + 8 | 0; - if ((k[o >> 2] | 0) == (h | 0)) { - k[q >> 2] = j; - k[o >> 2] = l; - s = j; - break; - } else qa(); - } while (0); - if (!g) { - m = h; - n = i; - } else { - j = k[h + 28 >> 2] | 0; - l = 1512 + (j << 2) | 0; - if ((h | 0) == (k[l >> 2] | 0)) { - k[l >> 2] = s; - if (!s) { - k[303] = k[303] & ~(1 << j); - m = h; - n = i; - break; - } - } else { - if (g >>> 0 < (k[306] | 0) >>> 0) qa(); - j = g + 16 | 0; - if ((k[j >> 2] | 0) == (h | 0)) k[j >> 2] = s; else k[g + 20 >> 2] = s; - if (!s) { - m = h; - n = i; - break; - } - } - j = k[306] | 0; - if (s >>> 0 < j >>> 0) qa(); - k[s + 24 >> 2] = g; - l = h + 16 | 0; - o = k[l >> 2] | 0; - do if (o | 0) if (o >>> 0 < j >>> 0) qa(); else { - k[s + 16 >> 2] = o; - k[o + 24 >> 2] = s; - break; - } while (0); - o = k[l + 4 >> 2] | 0; - if (!o) { - m = h; - n = i; - } else if (o >>> 0 < (k[306] | 0) >>> 0) qa(); else { - k[s + 20 >> 2] = o; - k[o + 24 >> 2] = s; - m = h; - n = i; - break; - } - } - } else { - m = b; - n = e; - } while (0); - if (m >>> 0 >= f >>> 0) qa(); - e = f + 4 | 0; - b = k[e >> 2] | 0; - if (!(b & 1)) qa(); - if (!(b & 2)) { - if ((f | 0) == (k[308] | 0)) { - s = (k[305] | 0) + n | 0; - k[305] = s; - k[308] = m; - k[m + 4 >> 2] = s | 1; - if ((m | 0) != (k[307] | 0)) return; - k[307] = 0; - k[304] = 0; - return; - } - if ((f | 0) == (k[307] | 0)) { - s = (k[304] | 0) + n | 0; - k[304] = s; - k[307] = m; - k[m + 4 >> 2] = s | 1; - k[m + s >> 2] = s; - return; - } - s = (b & -8) + n | 0; - c = b >>> 3; - do if (b >>> 0 < 256) { - v = k[f + 8 >> 2] | 0; - w = k[f + 12 >> 2] | 0; - u = 1248 + (c << 1 << 2) | 0; - if ((v | 0) != (u | 0)) { - if (v >>> 0 < (k[306] | 0) >>> 0) qa(); - if ((k[v + 12 >> 2] | 0) != (f | 0)) qa(); - } - if ((w | 0) == (v | 0)) { - k[302] = k[302] & ~(1 << c); - break; - } - if ((w | 0) == (u | 0)) x = w + 8 | 0; else { - if (w >>> 0 < (k[306] | 0) >>> 0) qa(); - u = w + 8 | 0; - if ((k[u >> 2] | 0) == (f | 0)) x = u; else qa(); - } - k[v + 12 >> 2] = w; - k[x >> 2] = v; - } else { - v = k[f + 24 >> 2] | 0; - w = k[f + 12 >> 2] | 0; - do if ((w | 0) == (f | 0)) { - u = f + 16 | 0; - t = u + 4 | 0; - p = k[t >> 2] | 0; - if (!p) { - a = k[u >> 2] | 0; - if (!a) { - y = 0; - break; - } else { - z = a; - A = u; - } - } else { - z = p; - A = t; - } - while (1) { - t = z + 20 | 0; - p = k[t >> 2] | 0; - if (p | 0) { - z = p; - A = t; - continue; - } - t = z + 16 | 0; - p = k[t >> 2] | 0; - if (!p) { - B = z; - C = A; - break; - } else { - z = p; - A = t; - } - } - if (C >>> 0 < (k[306] | 0) >>> 0) qa(); else { - k[C >> 2] = 0; - y = B; - break; - } - } else { - t = k[f + 8 >> 2] | 0; - if (t >>> 0 < (k[306] | 0) >>> 0) qa(); - p = t + 12 | 0; - if ((k[p >> 2] | 0) != (f | 0)) qa(); - u = w + 8 | 0; - if ((k[u >> 2] | 0) == (f | 0)) { - k[p >> 2] = w; - k[u >> 2] = t; - y = w; - break; - } else qa(); - } while (0); - if (v | 0) { - w = k[f + 28 >> 2] | 0; - i = 1512 + (w << 2) | 0; - if ((f | 0) == (k[i >> 2] | 0)) { - k[i >> 2] = y; - if (!y) { - k[303] = k[303] & ~(1 << w); - break; - } - } else { - if (v >>> 0 < (k[306] | 0) >>> 0) qa(); - w = v + 16 | 0; - if ((k[w >> 2] | 0) == (f | 0)) k[w >> 2] = y; else k[v + 20 >> 2] = y; - if (!y) break; - } - w = k[306] | 0; - if (y >>> 0 < w >>> 0) qa(); - k[y + 24 >> 2] = v; - i = f + 16 | 0; - h = k[i >> 2] | 0; - do if (h | 0) if (h >>> 0 < w >>> 0) qa(); else { - k[y + 16 >> 2] = h; - k[h + 24 >> 2] = y; - break; - } while (0); - h = k[i + 4 >> 2] | 0; - if (h | 0) if (h >>> 0 < (k[306] | 0) >>> 0) qa(); else { - k[y + 20 >> 2] = h; - k[h + 24 >> 2] = y; - break; - } - } - } while (0); - k[m + 4 >> 2] = s | 1; - k[m + s >> 2] = s; - if ((m | 0) == (k[307] | 0)) { - k[304] = s; - return; - } else D = s; - } else { - k[e >> 2] = b & -2; - k[m + 4 >> 2] = n | 1; - k[m + n >> 2] = n; - D = n; - } - n = D >>> 3; - if (D >>> 0 < 256) { - b = 1248 + (n << 1 << 2) | 0; - e = k[302] | 0; - s = 1 << n; - if (!(e & s)) { - k[302] = e | s; - E = b + 8 | 0; - F = b; - } else { - s = b + 8 | 0; - e = k[s >> 2] | 0; - if (e >>> 0 < (k[306] | 0) >>> 0) qa(); else { - E = s; - F = e; - } - } - k[E >> 2] = m; - k[F + 12 >> 2] = m; - k[m + 8 >> 2] = F; - k[m + 12 >> 2] = b; - return; - } - b = D >>> 8; - if (!b) G = 0; else if (D >>> 0 > 16777215) G = 31; else { - F = (b + 1048320 | 0) >>> 16 & 8; - E = b << F; - b = (E + 520192 | 0) >>> 16 & 4; - e = E << b; - E = (e + 245760 | 0) >>> 16 & 2; - s = 14 - (b | F | E) + (e << E >>> 15) | 0; - G = D >>> (s + 7 | 0) & 1 | s << 1; - } - s = 1512 + (G << 2) | 0; - k[m + 28 >> 2] = G; - k[m + 20 >> 2] = 0; - k[m + 16 >> 2] = 0; - E = k[303] | 0; - e = 1 << G; - do if (!(E & e)) { - k[303] = E | e; - k[s >> 2] = m; - k[m + 24 >> 2] = s; - k[m + 12 >> 2] = m; - k[m + 8 >> 2] = m; - } else { - F = D << ((G | 0) == 31 ? 0 : 25 - (G >>> 1) | 0); - b = k[s >> 2] | 0; - while (1) { - if ((k[b + 4 >> 2] & -8 | 0) == (D | 0)) { - H = b; - I = 130; - break; - } - n = b + 16 + (F >>> 31 << 2) | 0; - y = k[n >> 2] | 0; - if (!y) { - J = n; - K = b; - I = 127; - break; - } else { - F = F << 1; - b = y; - } - } - if ((I | 0) == 127) if (J >>> 0 < (k[306] | 0) >>> 0) qa(); else { - k[J >> 2] = m; - k[m + 24 >> 2] = K; - k[m + 12 >> 2] = m; - k[m + 8 >> 2] = m; - break; - } else if ((I | 0) == 130) { - b = H + 8 | 0; - F = k[b >> 2] | 0; - i = k[306] | 0; - if (F >>> 0 >= i >>> 0 & H >>> 0 >= i >>> 0) { - k[F + 12 >> 2] = m; - k[b >> 2] = m; - k[m + 8 >> 2] = F; - k[m + 12 >> 2] = H; - k[m + 24 >> 2] = 0; - break; - } else qa(); - } - } while (0); - m = (k[310] | 0) + -1 | 0; - k[310] = m; - if (!m) L = 1664; else return; - while (1) { - m = k[L >> 2] | 0; - if (!m) break; else L = m + 8 | 0; - } - k[310] = -1; - return; -} - -function Ra(a, b, c) { - a = a | 0; - b = b | 0; - c = c | 0; - var d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, s = 0, t = 0, u = 0, v = 0, w = 0, x = 0, y = 0, z = 0; - d = r; - r = r + 48 | 0; - e = d + 16 | 0; - f = d; - g = d + 32 | 0; - h = a + 28 | 0; - i = k[h >> 2] | 0; - k[g >> 2] = i; - j = a + 20 | 0; - l = (k[j >> 2] | 0) - i | 0; - k[g + 4 >> 2] = l; - k[g + 8 >> 2] = b; - k[g + 12 >> 2] = c; - b = a + 60 | 0; - i = a + 44 | 0; - m = g; - g = 2; - n = l + c | 0; - while (1) { - if (!(k[290] | 0)) { - k[e >> 2] = k[b >> 2]; - k[e + 4 >> 2] = m; - k[e + 8 >> 2] = g; - o = Pa(ya(146, e | 0) | 0) | 0; - } else { - ra(1, a | 0); - k[f >> 2] = k[b >> 2]; - k[f + 4 >> 2] = m; - k[f + 8 >> 2] = g; - l = Pa(ya(146, f | 0) | 0) | 0; - oa(0); - o = l; - } - if ((n | 0) == (o | 0)) { - p = 6; - break; - } - if ((o | 0) < 0) { - q = m; - s = g; - p = 8; - break; - } - l = n - o | 0; - t = k[m + 4 >> 2] | 0; - if (o >>> 0 > t >>> 0) { - u = k[i >> 2] | 0; - k[h >> 2] = u; - k[j >> 2] = u; - v = k[m + 12 >> 2] | 0; - w = o - t | 0; - x = m + 8 | 0; - y = g + -1 | 0; - } else if ((g | 0) == 2) { - k[h >> 2] = (k[h >> 2] | 0) + o; - v = t; - w = o; - x = m; - y = 2; - } else { - v = t; - w = o; - x = m; - y = g; - } - k[x >> 2] = (k[x >> 2] | 0) + w; - k[x + 4 >> 2] = v - w; - m = x; - g = y; - n = l; - } - if ((p | 0) == 6) { - n = k[i >> 2] | 0; - k[a + 16 >> 2] = n + (k[a + 48 >> 2] | 0); - i = n; - k[h >> 2] = i; - k[j >> 2] = i; - z = c; - } else if ((p | 0) == 8) { - k[a + 16 >> 2] = 0; - k[h >> 2] = 0; - k[j >> 2] = 0; - k[a >> 2] = k[a >> 2] | 32; - if ((s | 0) == 2) z = 0; else z = c - (k[q + 4 >> 2] | 0) | 0; - } - r = d; - return z | 0; -} - -function Wa(a, b, c) { - a = a | 0; - b = b | 0; - c = c | 0; - var d = 0, e = 0, f = 0, g = 0, h = 0, j = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0; - d = c + 16 | 0; - e = k[d >> 2] | 0; - if (!e) if (!(Xa(c) | 0)) { - f = k[d >> 2] | 0; - g = 5; - } else h = 0; else { - f = e; - g = 5; - } - a : do if ((g | 0) == 5) { - e = c + 20 | 0; - d = k[e >> 2] | 0; - j = d; - if ((f - d | 0) >>> 0 < b >>> 0) { - h = Ca[k[c + 36 >> 2] & 3](c, a, b) | 0; - break; - } - b : do if ((i[c + 75 >> 0] | 0) > -1) { - d = b; - while (1) { - if (!d) { - l = b; - m = a; - n = j; - o = 0; - break b; - } - p = d + -1 | 0; - if ((i[a + p >> 0] | 0) == 10) { - q = d; - break; - } else d = p; - } - if ((Ca[k[c + 36 >> 2] & 3](c, a, q) | 0) >>> 0 < q >>> 0) { - h = q; - break a; - } - l = b - q | 0; - m = a + q | 0; - n = k[e >> 2] | 0; - o = q; - } else { - l = b; - m = a; - n = j; - o = 0; - } while (0); - jb(n | 0, m | 0, l | 0) | 0; - k[e >> 2] = (k[e >> 2] | 0) + l; - h = o + l | 0; - } while (0); - return h | 0; -} - -function Za(a) { - a = a | 0; - var b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, j = 0, l = 0, m = 0; - b = a; - a : do if (!(b & 3)) { - c = a; - d = 4; - } else { - e = a; - f = b; - while (1) { - if (!(i[e >> 0] | 0)) { - g = f; - break a; - } - h = e + 1 | 0; - f = h; - if (!(f & 3)) { - c = h; - d = 4; - break; - } else e = h; - } - } while (0); - if ((d | 0) == 4) { - d = c; - while (1) { - c = k[d >> 2] | 0; - if (!((c & -2139062144 ^ -2139062144) & c + -16843009)) d = d + 4 | 0; else { - j = c; - l = d; - break; - } - } - if (!((j & 255) << 24 >> 24)) m = l; else { - j = l; - while (1) { - l = j + 1 | 0; - if (!(i[l >> 0] | 0)) { - m = l; - break; - } else j = l; - } - } - g = m; - } - return g - b | 0; -} - -function _a(a) { - a = a | 0; - var b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0; - do if (!a) { - if (!(k[285] | 0)) b = 0; else b = _a(k[285] | 0) | 0; - pa(1188); - c = k[296] | 0; - if (!c) d = b; else { - e = c; - c = b; - while (1) { - if ((k[e + 76 >> 2] | 0) > -1) f = Ya(e) | 0; else f = 0; - if ((k[e + 20 >> 2] | 0) >>> 0 > (k[e + 28 >> 2] | 0) >>> 0) g = $a(e) | 0 | c; else g = c; - if (f | 0) Ta(e); - e = k[e + 56 >> 2] | 0; - if (!e) { - d = g; - break; - } else c = g; - } - } - xa(1188); - h = d; - } else { - if ((k[a + 76 >> 2] | 0) <= -1) { - h = $a(a) | 0; - break; - } - c = (Ya(a) | 0) == 0; - e = $a(a) | 0; - if (c) h = e; else { - Ta(a); - h = e; - } - } while (0); - return h | 0; -} - -function ab(a, b) { - a = a | 0; - b = b | 0; - var c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, j = 0, m = 0, n = 0; - c = r; - r = r + 16 | 0; - d = c; - e = b & 255; - i[d >> 0] = e; - f = a + 16 | 0; - g = k[f >> 2] | 0; - if (!g) if (!(Xa(a) | 0)) { - h = k[f >> 2] | 0; - j = 4; - } else m = -1; else { - h = g; - j = 4; - } - do if ((j | 0) == 4) { - g = a + 20 | 0; - f = k[g >> 2] | 0; - if (f >>> 0 < h >>> 0) { - n = b & 255; - if ((n | 0) != (i[a + 75 >> 0] | 0)) { - k[g >> 2] = f + 1; - i[f >> 0] = e; - m = n; - break; - } - } - if ((Ca[k[a + 36 >> 2] & 3](a, d, 1) | 0) == 1) m = l[d >> 0] | 0; else m = -1; - } while (0); - r = c; - return m | 0; -} - -function $a(a) { - a = a | 0; - var b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0; - b = a + 20 | 0; - c = a + 28 | 0; - if ((k[b >> 2] | 0) >>> 0 > (k[c >> 2] | 0) >>> 0) { - Ca[k[a + 36 >> 2] & 3](a, 0, 0) | 0; - if (!(k[b >> 2] | 0)) d = -1; else e = 3; - } else e = 3; - if ((e | 0) == 3) { - e = a + 4 | 0; - f = k[e >> 2] | 0; - g = a + 8 | 0; - h = k[g >> 2] | 0; - if (f >>> 0 < h >>> 0) Ca[k[a + 40 >> 2] & 3](a, f - h | 0, 1) | 0; - k[a + 16 >> 2] = 0; - k[c >> 2] = 0; - k[b >> 2] = 0; - k[g >> 2] = 0; - k[e >> 2] = 0; - d = 0; - } - return d | 0; -} - -function jb(a, b, c) { - a = a | 0; - b = b | 0; - c = c | 0; - var d = 0; - if ((c | 0) >= 4096) return va(a | 0, b | 0, c | 0) | 0; - d = a | 0; - if ((a & 3) == (b & 3)) { - while (a & 3) { - if (!c) return d | 0; - i[a >> 0] = i[b >> 0] | 0; - a = a + 1 | 0; - b = b + 1 | 0; - c = c - 1 | 0; - } - while ((c | 0) >= 4) { - k[a >> 2] = k[b >> 2]; - a = a + 4 | 0; - b = b + 4 | 0; - c = c - 4 | 0; - } - } - while ((c | 0) > 0) { - i[a >> 0] = i[b >> 0] | 0; - a = a + 1 | 0; - b = b + 1 | 0; - c = c - 1 | 0; - } - return d | 0; -} - -function gb() {} -function hb(a, b, c) { - a = a | 0; - b = b | 0; - c = c | 0; - var d = 0, e = 0, f = 0, g = 0; - d = a + c | 0; - if ((c | 0) >= 20) { - b = b & 255; - e = a & 3; - f = b | b << 8 | b << 16 | b << 24; - g = d & ~3; - if (e) { - e = a + 4 - e | 0; - while ((a | 0) < (e | 0)) { - i[a >> 0] = b; - a = a + 1 | 0; - } - } - while ((a | 0) < (g | 0)) { - k[a >> 2] = f; - a = a + 4 | 0; - } - } - while ((a | 0) < (d | 0)) { - i[a >> 0] = b; - a = a + 1 | 0; - } - return a - c | 0; -} - -function db(a) { - a = a | 0; - var b = 0, c = 0, d = 0, e = 0, f = 0; - b = k[256] | 0; - if ((k[b + 76 >> 2] | 0) > -1) c = Ya(b) | 0; else c = 0; - do if ((cb(a, b) | 0) < 0) d = 1; else { - if ((i[b + 75 >> 0] | 0) != 10) { - e = b + 20 | 0; - f = k[e >> 2] | 0; - if (f >>> 0 < (k[b + 16 >> 2] | 0) >>> 0) { - k[e >> 2] = f + 1; - i[f >> 0] = 10; - d = 0; - break; - } - } - d = (ab(b, 10) | 0) < 0; - } while (0); - if (c | 0) Ta(b); - return d << 31 >> 31 | 0; -} - -function Xa(a) { - a = a | 0; - var b = 0, c = 0, d = 0; - b = a + 74 | 0; - c = i[b >> 0] | 0; - i[b >> 0] = c + 255 | c; - c = k[a >> 2] | 0; - if (!(c & 8)) { - k[a + 8 >> 2] = 0; - k[a + 4 >> 2] = 0; - b = k[a + 44 >> 2] | 0; - k[a + 28 >> 2] = b; - k[a + 20 >> 2] = b; - k[a + 16 >> 2] = b + (k[a + 48 >> 2] | 0); - d = 0; - } else { - k[a >> 2] = c | 32; - d = -1; - } - return d | 0; -} - -function bb(a, b, c, d) { - a = a | 0; - b = b | 0; - c = c | 0; - d = d | 0; - var e = 0, f = 0, g = 0, h = 0, i = 0; - e = ga(c, b) | 0; - if ((k[d + 76 >> 2] | 0) > -1) { - f = (Ya(d) | 0) == 0; - g = Wa(a, e, d) | 0; - if (f) h = g; else { - Ta(d); - h = g; - } - } else h = Wa(a, e, d) | 0; - if ((h | 0) == (e | 0)) i = c; else i = (h >>> 0) / (b >>> 0) | 0; - return i | 0; -} - -function Ua(a, b, c) { - a = a | 0; - b = b | 0; - c = c | 0; - var d = 0, e = 0, f = 0, g = 0; - d = r; - r = r + 32 | 0; - e = d; - f = d + 20 | 0; - k[e >> 2] = k[a + 60 >> 2]; - k[e + 4 >> 2] = 0; - k[e + 8 >> 2] = b; - k[e + 12 >> 2] = f; - k[e + 16 >> 2] = c; - if ((Pa(ua(140, e | 0) | 0) | 0) < 0) { - k[f >> 2] = -1; - g = -1; - } else g = k[f >> 2] | 0; - r = d; - return g | 0; -} - -function Va(a, b, c) { - a = a | 0; - b = b | 0; - c = c | 0; - var d = 0, e = 0; - d = r; - r = r + 80 | 0; - e = d; - k[a + 36 >> 2] = 3; - if (!(k[a >> 2] & 64)) { - k[e >> 2] = k[a + 60 >> 2]; - k[e + 4 >> 2] = 21505; - k[e + 8 >> 2] = d + 12; - if (wa(54, e | 0) | 0) i[a + 75 >> 0] = -1; - } - e = Ra(a, b, c) | 0; - r = d; - return e | 0; -} - -function Ka(a) { - a = a | 0; - i[t >> 0] = i[a >> 0]; - i[t + 1 >> 0] = i[a + 1 >> 0]; - i[t + 2 >> 0] = i[a + 2 >> 0]; - i[t + 3 >> 0] = i[a + 3 >> 0]; - i[t + 4 >> 0] = i[a + 4 >> 0]; - i[t + 5 >> 0] = i[a + 5 >> 0]; - i[t + 6 >> 0] = i[a + 6 >> 0]; - i[t + 7 >> 0] = i[a + 7 >> 0]; -} - -function Oa(a) { - a = a | 0; - var b = 0, c = 0; - b = r; - r = r + 16 | 0; - c = b; - k[c >> 2] = k[a + 60 >> 2]; - a = Pa(sa(6, c | 0) | 0) | 0; - r = b; - return a | 0; -} - -function Pa(a) { - a = a | 0; - var b = 0, c = 0; - if (a >>> 0 > 4294963200) { - b = Qa() | 0; - k[b >> 2] = 0 - a; - c = -1; - } else c = a; - return c | 0; -} - -function Ja(a) { - a = a | 0; - i[t >> 0] = i[a >> 0]; - i[t + 1 >> 0] = i[a + 1 >> 0]; - i[t + 2 >> 0] = i[a + 2 >> 0]; - i[t + 3 >> 0] = i[a + 3 >> 0]; -} - -function Qa() { - var a = 0, b = 0; - if (!(k[290] | 0)) a = 1204; else { - b = (ib() | 0) + 64 | 0; - a = k[b >> 2] | 0; - } - return a | 0; -} - -function lb(a, b, c, d) { - a = a | 0; - b = b | 0; - c = c | 0; - d = d | 0; - return Ca[a & 3](b | 0, c | 0, d | 0) | 0; -} -function Ea(a) { - a = a | 0; - var b = 0; - b = r; - r = r + a | 0; - r = r + 15 & -16; - return b | 0; -} - -function cb(a, b) { - a = a | 0; - b = b | 0; - return (bb(a, Za(a) | 0, 1, b) | 0) + -1 | 0; -} - -function ob(a, b, c) { - a = a | 0; - b = b | 0; - c = c | 0; - ja(1); - return 0; -} - -function Ia(a, b) { - a = a | 0; - b = b | 0; - if (!v) { - v = a; - w = b; - } -} - -function kb(a, b) { - a = a | 0; - b = b | 0; - return Ba[a & 1](b | 0) | 0; -} - -function Sa(a) { - a = a | 0; - if (!(k[a + 68 >> 2] | 0)) Ta(a); - return; -} - -function mb(a, b) { - a = a | 0; - b = b | 0; - Da[a & 1](b | 0); -} - -function Ha(a, b) { - a = a | 0; - b = b | 0; - r = a; - s = b; -} - -function nb(a) { - a = a | 0; - ja(0); - return 0; -} - -function Na() { - db(1144) | 0; - return 0; -} - -function Ya(a) { - a = a | 0; - return 0; -} - -function Ta(a) { - a = a | 0; - return; -} - -function pb(a) { - a = a | 0; - ja(2); -} - -function La(a) { - a = a | 0; - K = a; -} - -function Ga(a) { - a = a | 0; - r = a; -} - -function Ma() { - return K | 0; -} - -function Fa() { - return r | 0; -} - -function ib() { - return 0; -} - -// EMSCRIPTEN_END_FUNCS - - var Ba = [ nb, Oa ]; - var Ca = [ ob, Va, Ua, Ra ]; - var Da = [ pb, Sa ]; - return { - _free: fb, - _main: Na, - _pthread_self: ib, - _memset: hb, - _malloc: eb, - _memcpy: jb, - _fflush: _a, - ___errno_location: Qa, - runPostSets: gb, - _emscripten_replace_memory: Aa, - stackAlloc: Ea, - stackSave: Fa, - stackRestore: Ga, - establishStackSpace: Ha, - setThrew: Ia, - setTempRet0: La, - getTempRet0: Ma, - dynCall_ii: kb, - dynCall_iiii: lb, - dynCall_vi: mb - }; -}) - - -; \ No newline at end of file diff -Nru binaryen-91/test/memorygrowth.fromasm binaryen-99/test/memorygrowth.fromasm --- binaryen-91/test/memorygrowth.fromasm 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/memorygrowth.fromasm 1970-01-01 00:00:00.000000000 +0000 @@ -1,9095 +0,0 @@ -(module - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (import "env" "memory" (memory $memory 256)) - (data (global.get $__memory_base) "memorygrowth.asm.js") - (import "env" "table" (table $table 8 8 funcref)) - (elem (global.get $__table_base) $nb $Oa $ob $Va $Ua $Ra $pb $Sa) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $r$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $s$asm2wasm$import i32)) - (import "env" "abort" (func $ja (param i32))) - (import "env" "_pthread_cleanup_pop" (func $oa (param i32))) - (import "env" "___lock" (func $pa (param i32))) - (import "env" "_abort" (func $qa)) - (import "env" "_pthread_cleanup_push" (func $ra (param i32 i32))) - (import "env" "___syscall6" (func $sa (param i32 i32) (result i32))) - (import "env" "_sbrk" (func $ta (param i32) (result i32))) - (import "env" "___syscall140" (func $ua (param i32 i32) (result i32))) - (import "env" "_emscripten_memcpy_big" (func $va (param i32 i32 i32) (result i32))) - (import "env" "___syscall54" (func $wa (param i32 i32) (result i32))) - (import "env" "___unlock" (func $xa (param i32))) - (import "env" "___syscall146" (func $ya (param i32 i32) (result i32))) - (global $r (mut i32) (global.get $r$asm2wasm$import)) - (global $s (mut i32) (global.get $s$asm2wasm$import)) - (global $v (mut i32) (i32.const 0)) - (global $w (mut i32) (i32.const 0)) - (global $K (mut i32) (i32.const 0)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (export "_free" (func $fb)) - (export "_main" (func $Na)) - (export "_pthread_self" (func $ib)) - (export "_memset" (func $hb)) - (export "_malloc" (func $eb)) - (export "_memcpy" (func $jb)) - (export "_fflush" (func $_a)) - (export "___errno_location" (func $Qa)) - (export "runPostSets" (func $gb)) - (export "stackAlloc" (func $Ea)) - (export "stackSave" (func $Fa)) - (export "stackRestore" (func $Ga)) - (export "establishStackSpace" (func $Ha)) - (export "setThrew" (func $Ia)) - (export "setTempRet0" (func $La)) - (export "getTempRet0" (func $Ma)) - (export "dynCall_ii" (func $kb)) - (export "dynCall_iiii" (func $lb)) - (export "dynCall_vi" (func $mb)) - (func $__growWasmMemory (; 12 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (memory.grow - (local.get $0) - ) - ) - (func $eb (; 13 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i32) - (local $44 i32) - (local $45 i32) - (local $46 i32) - (local $47 i32) - (local.set $18 - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 16) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.const 245) - ) - (block - (if - (i32.and - (local.tee $10 - (i32.shr_u - (local.tee $12 - (i32.load - (i32.const 1208) - ) - ) - (local.tee $2 - (i32.shr_u - (local.tee $4 - (select - (i32.const 16) - (i32.and - (i32.add - (local.get $0) - (i32.const 11) - ) - (i32.const -8) - ) - (i32.lt_u - (local.get $0) - (i32.const 11) - ) - ) - ) - (i32.const 3) - ) - ) - ) - ) - (i32.const 3) - ) - (block - (local.set $0 - (i32.load - (local.tee $2 - (i32.add - (local.tee $4 - (i32.load offset=8 - (local.tee $1 - (i32.add - (i32.shl - (local.tee $3 - (i32.add - (local.get $2) - (i32.xor - (i32.and - (local.get $10) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.eq - (local.get $0) - (local.get $1) - ) - (i32.store - (i32.const 1208) - (i32.and - (i32.xor - (i32.shl - (i32.const 1) - (local.get $3) - ) - (i32.const -1) - ) - (local.get $12) - ) - ) - (block - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $4) - (i32.load offset=12 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $0) - (local.get $1) - ) - (i32.store offset=8 - (local.get $1) - (local.get $0) - ) - ) - (call $qa) - ) - ) - ) - (i32.store offset=4 - (local.get $4) - (i32.or - (local.tee $0 - (i32.shl - (local.get $3) - (i32.const 3) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $4) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - (global.set $r - (local.get $18) - ) - (return - (local.get $2) - ) - ) - ) - (if - (i32.gt_u - (local.get $4) - (local.tee $0 - (i32.load - (i32.const 1216) - ) - ) - ) - (block - (if - (local.get $10) - (block - (local.set $1 - (i32.and - (i32.shr_u - (local.tee $3 - (i32.add - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.and - (i32.or - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.shl - (i32.const 2) - (local.get $2) - ) - ) - ) - (local.get $1) - ) - (i32.shl - (local.get $10) - (local.get $2) - ) - ) - ) - ) - (local.get $1) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $3 - (i32.and - (i32.shr_u - (local.tee $2 - (i32.shr_u - (local.get $3) - (local.get $1) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $2 - (i32.and - (i32.shr_u - (local.tee $5 - (i32.shr_u - (local.get $2) - (local.get $3) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $5 - (i32.and - (i32.shr_u - (local.tee $7 - (i32.shr_u - (local.get $5) - (local.get $2) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $1 - (i32.load - (local.tee $6 - (i32.add - (local.tee $2 - (i32.load offset=8 - (local.tee $3 - (i32.add - (i32.shl - (local.tee $5 - (i32.add - (i32.or - (local.tee $6 - (i32.and - (i32.shr_u - (local.tee $7 - (i32.shr_u - (local.get $7) - (local.get $5) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (i32.or - (local.get $5) - (i32.or - (local.get $2) - (i32.or - (local.get $1) - (local.get $3) - ) - ) - ) - ) - (i32.shr_u - (local.get $7) - (local.get $6) - ) - ) - ) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.eq - (local.get $1) - (local.get $3) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (i32.xor - (i32.shl - (i32.const 1) - (local.get $5) - ) - (i32.const -1) - ) - (local.get $12) - ) - ) - (local.set $13 - (local.get $0) - ) - ) - (block - (if - (i32.lt_u - (local.get $1) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $2) - (i32.load offset=12 - (local.get $1) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $1) - ) - (local.set $13 - (i32.load - (i32.const 1216) - ) - ) - ) - (call $qa) - ) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $7 - (i32.add - (local.get $2) - (local.get $4) - ) - ) - (i32.or - (local.tee $2 - (i32.sub - (i32.shl - (local.get $5) - (i32.const 3) - ) - (local.get $4) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $2) - (local.get $7) - ) - (local.get $2) - ) - (if - (local.get $13) - (block - (local.set $3 - (i32.load - (i32.const 1228) - ) - ) - (local.set $0 - (i32.add - (i32.shl - (local.tee $1 - (i32.shr_u - (local.get $13) - (i32.const 3) - ) - ) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 1208) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $20 - (local.get $1) - ) - (local.set $8 - (local.get $4) - ) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $20 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $8 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $20) - (local.get $3) - ) - (i32.store offset=12 - (local.get $8) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $8) - ) - (i32.store offset=12 - (local.get $3) - (local.get $0) - ) - ) - ) - (i32.store - (i32.const 1216) - (local.get $2) - ) - (i32.store - (i32.const 1228) - (local.get $7) - ) - (global.set $r - (local.get $18) - ) - (return - (local.get $6) - ) - ) - ) - (if - (local.tee $0 - (i32.load - (i32.const 1212) - ) - ) - (block - (local.set $0 - (i32.and - (i32.shr_u - (local.tee $1 - (i32.add - (i32.and - (i32.sub - (i32.const 0) - (local.get $0) - ) - (local.get $0) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $1 - (i32.and - (i32.shr_u - (local.tee $3 - (i32.shr_u - (local.get $1) - (local.get $0) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $3 - (i32.and - (i32.shr_u - (local.tee $2 - (i32.shr_u - (local.get $3) - (local.get $1) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $2 - (i32.and - (i32.shr_u - (local.tee $8 - (i32.shr_u - (local.get $2) - (local.get $3) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $7 - (i32.sub - (i32.and - (i32.load offset=4 - (local.tee $0 - (i32.load - (i32.add - (i32.shl - (i32.add - (i32.or - (local.tee $7 - (i32.and - (i32.shr_u - (local.tee $8 - (i32.shr_u - (local.get $8) - (local.get $2) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (i32.or - (local.get $2) - (i32.or - (local.get $3) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - ) - (i32.shr_u - (local.get $8) - (local.get $7) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - ) - (i32.const -8) - ) - (local.get $4) - ) - ) - (local.set $9 - (local.get $0) - ) - (loop $while-in - (block $while-out - (if - (local.tee $1 - (i32.load offset=16 - (local.get $0) - ) - ) - (local.set $0 - (local.get $1) - ) - (if - (i32.eqz - (local.tee $0 - (i32.load offset=20 - (local.get $0) - ) - ) - ) - (block - (local.set $8 - (local.get $9) - ) - (br $while-out) - ) - ) - ) - (local.set $1 - (i32.lt_u - (local.tee $3 - (i32.sub - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - (local.get $4) - ) - ) - (local.get $7) - ) - ) - (local.set $7 - (select - (local.get $3) - (local.get $7) - (local.get $1) - ) - ) - (local.set $9 - (select - (local.get $0) - (local.get $9) - (local.get $1) - ) - ) - (br $while-in) - ) - ) - (if - (i32.lt_u - (local.get $8) - (local.tee $14 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (if - (i32.ge_u - (local.get $8) - (local.tee $12 - (i32.add - (local.get $4) - (local.get $8) - ) - ) - ) - (call $qa) - ) - (local.set $10 - (i32.load offset=24 - (local.get $8) - ) - ) - (if - (i32.eq - (local.get $8) - (local.tee $0 - (i32.load offset=12 - (local.get $8) - ) - ) - ) - (block $do-once4 - (if - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $8) - (i32.const 20) - ) - ) - ) - ) - ) - (br_if $do-once4 - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $8) - (i32.const 16) - ) - ) - ) - ) - ) - ) - ) - (loop $while-in7 - (if - (local.tee $2 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $2) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in7) - ) - ) - (if - (local.tee $2 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $2) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in7) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $14) - ) - (call $qa) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $5 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $8) - ) - ) - (local.get $14) - ) - (call $qa) - ) - (if - (i32.ne - (local.get $8) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $8) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $5 - (local.get $0) - ) - ) - (call $qa) - ) - ) - ) - (if - (local.get $10) - (block $do-once8 - (if - (i32.eq - (i32.load - (local.tee $1 - (i32.add - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $8) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - (local.get $8) - ) - (block - (i32.store - (local.get $1) - (local.get $5) - ) - (if - (i32.eqz - (local.get $5) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $do-once8) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $10) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $8) - (i32.load offset=16 - (local.get $10) - ) - ) - (i32.store offset=16 - (local.get $10) - (local.get $5) - ) - (i32.store offset=20 - (local.get $10) - (local.get $5) - ) - ) - (br_if $do-once8 - (i32.eqz - (local.get $5) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $5) - (local.tee $1 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (i32.store offset=24 - (local.get $5) - (local.get $10) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $8) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $qa) - (block - (i32.store offset=16 - (local.get $5) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $5) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $8) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store offset=20 - (local.get $5) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $5) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $7) - (i32.const 16) - ) - (block - (i32.store offset=4 - (local.get $8) - (i32.or - (local.tee $0 - (i32.add - (local.get $4) - (local.get $7) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $8) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - ) - (block - (i32.store offset=4 - (local.get $8) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.get $12) - (i32.or - (local.get $7) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $7) - (local.get $12) - ) - (local.get $7) - ) - (if - (local.tee $0 - (i32.load - (i32.const 1216) - ) - ) - (block - (local.set $3 - (i32.load - (i32.const 1228) - ) - ) - (local.set $0 - (i32.add - (i32.shl - (local.tee $1 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 1208) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $21 - (local.get $1) - ) - (local.set $6 - (local.get $4) - ) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $21 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $6 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $21) - (local.get $3) - ) - (i32.store offset=12 - (local.get $6) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $6) - ) - (i32.store offset=12 - (local.get $3) - (local.get $0) - ) - ) - ) - (i32.store - (i32.const 1216) - (local.get $7) - ) - (i32.store - (i32.const 1228) - (local.get $12) - ) - ) - ) - (global.set $r - (local.get $18) - ) - (return - (i32.add - (local.get $8) - (i32.const 8) - ) - ) - ) - ) - ) - ) - ) - (local.set $4 - (if (result i32) - (i32.gt_u - (local.get $0) - (i32.const -65) - ) - (i32.const -1) - (block $do-once (result i32) - (local.set $8 - (i32.and - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 11) - ) - ) - (i32.const -8) - ) - ) - (if (result i32) - (local.tee $39 - (i32.load - (i32.const 1212) - ) - ) - (block (result i32) - (local.set $21 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $0) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $8) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $6 - (i32.shl - (local.get $0) - (local.tee $5 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $8) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $13 - (i32.and - (i32.shr_u - (i32.add - (local.tee $6 - (i32.shl - (local.get $6) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $5) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $6) - (local.get $13) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (local.set $0 - (i32.sub - (i32.const 0) - (local.get $8) - ) - ) - (if - (local.tee $6 - (i32.load - (i32.add - (i32.shl - (local.get $21) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - (block $label$break$a - (local.set $9 - (i32.shl - (local.get $8) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $21) - (i32.const 1) - ) - ) - (i32.eq - (local.get $21) - (i32.const 31) - ) - ) - ) - ) - (local.set $5 - (i32.const 0) - ) - (local.set $10 - (loop $while-in14 (result i32) - (if - (i32.lt_u - (local.tee $13 - (i32.sub - (local.tee $25 - (i32.and - (i32.load offset=4 - (local.get $6) - ) - (i32.const -8) - ) - ) - (local.get $8) - ) - ) - (local.get $0) - ) - (local.set $0 - (if (result i32) - (i32.eq - (local.get $8) - (local.get $25) - ) - (block - (local.set $4 - (local.get $13) - ) - (local.set $12 - (local.get $6) - ) - (local.set $2 - (local.get $6) - ) - (local.set $9 - (i32.const 90) - ) - (br $label$break$a) - ) - (block (result i32) - (local.set $5 - (local.get $6) - ) - (local.get $13) - ) - ) - ) - ) - (local.set $13 - (select - (local.get $20) - (local.tee $13 - (i32.load offset=20 - (local.get $6) - ) - ) - (i32.or - (i32.eqz - (local.get $13) - ) - (i32.eq - (local.tee $6 - (i32.load - (i32.add - (i32.add - (local.get $6) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $9) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - (local.get $13) - ) - ) - ) - ) - (if (result i32) - (local.tee $25 - (i32.eqz - (local.get $6) - ) - ) - (block (result i32) - (local.set $19 - (local.get $13) - ) - (local.set $22 - (local.get $5) - ) - (local.set $9 - (i32.const 86) - ) - (local.get $0) - ) - (block - (local.set $20 - (local.get $13) - ) - (local.set $9 - (i32.shl - (local.get $9) - (i32.xor - (local.get $25) - (i32.const 1) - ) - ) - ) - (br $while-in14) - ) - ) - ) - ) - ) - (block - (local.set $10 - (local.get $0) - ) - (local.set $9 - (i32.const 86) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 86) - ) - (block - (if - (i32.eqz - (i32.or - (local.get $19) - (local.get $22) - ) - ) - (block - (drop - (br_if $do-once - (local.get $8) - (i32.eqz - (local.tee $0 - (i32.and - (i32.or - (i32.sub - (i32.const 0) - (local.tee $0 - (i32.shl - (i32.const 2) - (local.get $21) - ) - ) - ) - (local.get $0) - ) - (local.get $39) - ) - ) - ) - ) - ) - (local.set $0 - (i32.and - (i32.shr_u - (local.tee $5 - (i32.add - (i32.and - (i32.sub - (i32.const 0) - (local.get $0) - ) - (local.get $0) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $5 - (i32.and - (i32.shr_u - (local.tee $6 - (i32.shr_u - (local.get $5) - (local.get $0) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $6 - (i32.and - (i32.shr_u - (local.tee $13 - (i32.shr_u - (local.get $6) - (local.get $5) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $13 - (i32.and - (i32.shr_u - (local.tee $19 - (i32.shr_u - (local.get $13) - (local.get $6) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $19 - (i32.load - (i32.add - (i32.shl - (i32.add - (i32.or - (local.tee $20 - (i32.and - (i32.shr_u - (local.tee $19 - (i32.shr_u - (local.get $19) - (local.get $13) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (i32.or - (local.get $13) - (i32.or - (local.get $6) - (i32.or - (local.get $0) - (local.get $5) - ) - ) - ) - ) - (i32.shr_u - (local.get $19) - (local.get $20) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - ) - ) - (if - (local.get $19) - (block - (local.set $4 - (local.get $10) - ) - (local.set $12 - (local.get $19) - ) - (local.set $2 - (local.get $22) - ) - (local.set $9 - (i32.const 90) - ) - ) - (block - (local.set $15 - (local.get $10) - ) - (local.set $11 - (local.get $22) - ) - ) - ) - ) - ) - (if (result i32) - (block (result i32) - (if - (i32.eq - (local.get $9) - (i32.const 90) - ) - (local.set $11 - (loop $while-in16 (result i32) - (local.set $9 - (i32.const 0) - ) - (local.set $0 - (i32.lt_u - (local.tee $5 - (i32.sub - (i32.and - (i32.load offset=4 - (local.get $12) - ) - (i32.const -8) - ) - (local.get $8) - ) - ) - (local.get $4) - ) - ) - (local.set $4 - (select - (local.get $5) - (local.get $4) - (local.get $0) - ) - ) - (local.set $2 - (select - (local.get $12) - (local.get $2) - (local.get $0) - ) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $12) - ) - ) - (block - (local.set $12 - (local.get $0) - ) - (br $while-in16) - ) - ) - (br_if $while-in16 - (local.tee $12 - (i32.load offset=20 - (local.get $12) - ) - ) - ) - (local.set $15 - (local.get $4) - ) - (local.get $2) - ) - ) - ) - (local.get $11) - ) - (if (result i32) - (i32.lt_u - (local.get $15) - (i32.sub - (i32.load - (i32.const 1216) - ) - (local.get $8) - ) - ) - (block - (if - (i32.lt_u - (local.get $11) - (local.tee $7 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (if - (i32.ge_u - (local.get $11) - (local.tee $2 - (i32.add - (local.get $8) - (local.get $11) - ) - ) - ) - (call $qa) - ) - (local.set $5 - (i32.load offset=24 - (local.get $11) - ) - ) - (if - (i32.eq - (local.get $11) - (local.tee $0 - (i32.load offset=12 - (local.get $11) - ) - ) - ) - (block $do-once17 - (if - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $11) - (i32.const 20) - ) - ) - ) - ) - ) - (br_if $do-once17 - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $11) - (i32.const 16) - ) - ) - ) - ) - ) - ) - ) - (loop $while-in20 - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in20) - ) - ) - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in20) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $7) - ) - (call $qa) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $16 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $11) - ) - ) - (local.get $7) - ) - (call $qa) - ) - (if - (i32.ne - (local.get $11) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $11) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $16 - (local.get $0) - ) - ) - (call $qa) - ) - ) - ) - (if - (local.get $5) - (block $do-once21 - (if - (i32.eq - (i32.load - (local.tee $1 - (i32.add - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $11) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - (local.get $11) - ) - (block - (i32.store - (local.get $1) - (local.get $16) - ) - (if - (i32.eqz - (local.get $16) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $do-once21) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $5) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $11) - (i32.load offset=16 - (local.get $5) - ) - ) - (i32.store offset=16 - (local.get $5) - (local.get $16) - ) - (i32.store offset=20 - (local.get $5) - (local.get $16) - ) - ) - (br_if $do-once21 - (i32.eqz - (local.get $16) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $16) - (local.tee $1 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (i32.store offset=24 - (local.get $16) - (local.get $5) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $11) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $qa) - (block - (i32.store offset=16 - (local.get $16) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $16) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $11) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store offset=20 - (local.get $16) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $16) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $15) - (i32.const 16) - ) - (block - (i32.store offset=4 - (local.get $11) - (i32.or - (local.tee $0 - (i32.add - (local.get $8) - (local.get $15) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $11) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - ) - (block $do-once25 - (i32.store offset=4 - (local.get $11) - (i32.or - (local.get $8) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $15) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $2) - (local.get $15) - ) - (local.get $15) - ) - (local.set $1 - (i32.shr_u - (local.get $15) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $15) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 1208) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $29 - (local.get $1) - ) - (local.set $14 - (local.get $4) - ) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $29 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $14 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $29) - (local.get $2) - ) - (i32.store offset=12 - (local.get $14) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $14) - ) - (i32.store offset=12 - (local.get $2) - (local.get $0) - ) - (br $do-once25) - ) - ) - (local.set $1 - (i32.add - (i32.shl - (local.tee $0 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $15) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $15) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $15) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $3 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $4) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $4) - (local.get $3) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - (i32.store offset=28 - (local.get $2) - (local.get $0) - ) - (i32.store offset=20 - (local.get $2) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $2) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $4 - (i32.load - (i32.const 1212) - ) - ) - (local.tee $3 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $3) - (local.get $4) - ) - ) - (i32.store - (local.get $1) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $1) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - (br $do-once25) - ) - ) - (local.set $3 - (i32.shl - (local.get $15) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $0) - (i32.const 1) - ) - ) - (i32.eq - (local.get $0) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load - (local.get $1) - ) - ) - (if - (i32.eq - (local.tee $9 - (loop $while-in28 (result i32) - (block $while-out27 (result i32) - (if - (i32.eq - (local.get $15) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $30 - (local.get $0) - ) - (br $while-out27 - (i32.const 148) - ) - ) - ) - (if (result i32) - (local.tee $1 - (i32.load - (local.tee $4 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $3) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $3 - (i32.shl - (local.get $3) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in28) - ) - (block (result i32) - (local.set $31 - (local.get $4) - ) - (local.set $40 - (local.get $0) - ) - (i32.const 145) - ) - ) - ) - ) - ) - (i32.const 145) - ) - (if - (i32.lt_u - (local.get $31) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $31) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $40) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 148) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $30) - ) - ) - ) - (local.tee $4 - (i32.load - (i32.const 1224) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $4) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $2) - ) - (i32.store offset=8 - (local.get $0) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $1) - ) - (i32.store offset=12 - (local.get $2) - (local.get $30) - ) - (i32.store offset=24 - (local.get $2) - (i32.const 0) - ) - ) - (call $qa) - ) - ) - ) - ) - ) - (global.set $r - (local.get $18) - ) - (return - (i32.add - (local.get $11) - (i32.const 8) - ) - ) - ) - (local.get $8) - ) - (local.get $8) - ) - ) - (local.get $8) - ) - ) - ) - ) - ) - (block $folding-inner1 - (if - (i32.ge_u - (local.tee $2 - (i32.load - (i32.const 1216) - ) - ) - (local.get $4) - ) - (block - (local.set $0 - (i32.load - (i32.const 1228) - ) - ) - (if - (i32.gt_u - (local.tee $1 - (i32.sub - (local.get $2) - (local.get $4) - ) - ) - (i32.const 15) - ) - (block - (i32.store - (i32.const 1228) - (local.tee $3 - (i32.add - (local.get $0) - (local.get $4) - ) - ) - ) - (i32.store - (i32.const 1216) - (local.get $1) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $1) - (local.get $3) - ) - (local.get $1) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - ) - (block - (i32.store - (i32.const 1216) - (i32.const 0) - ) - (i32.store - (i32.const 1228) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $2) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $1 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $1) - ) - (i32.const 1) - ) - ) - ) - ) - (br $folding-inner1) - ) - ) - (block $folding-inner0 - (br_if $folding-inner0 - (i32.gt_u - (local.tee $0 - (i32.load - (i32.const 1220) - ) - ) - (local.get $4) - ) - ) - (local.set $0 - (local.get $18) - ) - (if - (i32.eqz - (i32.load - (i32.const 1680) - ) - ) - (block - (i32.store - (i32.const 1688) - (i32.const 4096) - ) - (i32.store - (i32.const 1684) - (i32.const 4096) - ) - (i32.store - (i32.const 1692) - (i32.const -1) - ) - (i32.store - (i32.const 1696) - (i32.const -1) - ) - (i32.store - (i32.const 1700) - (i32.const 0) - ) - (i32.store - (i32.const 1652) - (i32.const 0) - ) - (i32.store - (local.get $0) - (local.tee $0 - (i32.xor - (i32.and - (local.get $0) - (i32.const -16) - ) - (i32.const 1431655768) - ) - ) - ) - (i32.store - (i32.const 1680) - (local.get $0) - ) - ) - ) - (if - (i32.le_u - (local.tee $5 - (i32.and - (local.tee $10 - (i32.add - (local.tee $0 - (i32.load - (i32.const 1688) - ) - ) - (local.tee $6 - (i32.add - (local.get $4) - (i32.const 47) - ) - ) - ) - ) - (local.tee $12 - (i32.sub - (i32.const 0) - (local.get $0) - ) - ) - ) - ) - (local.get $4) - ) - (block - (global.set $r - (local.get $18) - ) - (return - (i32.const 0) - ) - ) - ) - (if - (local.tee $0 - (i32.load - (i32.const 1648) - ) - ) - (if - (i32.or - (i32.le_u - (local.tee $8 - (i32.add - (local.get $5) - (local.tee $2 - (i32.load - (i32.const 1640) - ) - ) - ) - ) - (local.get $2) - ) - (i32.gt_u - (local.get $8) - (local.get $0) - ) - ) - (block - (global.set $r - (local.get $18) - ) - (return - (i32.const 0) - ) - ) - ) - ) - (local.set $22 - (i32.add - (local.get $4) - (i32.const 48) - ) - ) - (if - (i32.eq - (local.tee $9 - (if (result i32) - (i32.and - (i32.load - (i32.const 1652) - ) - (i32.const 4) - ) - (i32.const 188) - (block $label$break$b (result i32) - (if - (local.tee $2 - (i32.load - (i32.const 1232) - ) - ) - (block $label$break$c - (local.set $14 - (i32.const 1656) - ) - (loop $while-in32 - (block $while-out31 - (if - (i32.le_u - (local.tee $8 - (i32.load - (local.get $14) - ) - ) - (local.get $2) - ) - (if - (i32.gt_u - (i32.add - (i32.load - (local.tee $0 - (i32.add - (local.get $14) - (i32.const 4) - ) - ) - ) - (local.get $8) - ) - (local.get $2) - ) - (block - (local.set $8 - (local.get $0) - ) - (br $while-out31) - ) - ) - ) - (br_if $while-in32 - (local.tee $14 - (i32.load offset=8 - (local.get $14) - ) - ) - ) - (local.set $9 - (i32.const 171) - ) - (br $label$break$c) - ) - ) - (if - (i32.lt_u - (local.tee $2 - (i32.and - (local.get $12) - (i32.sub - (local.get $10) - (i32.load - (i32.const 1220) - ) - ) - ) - ) - (i32.const 2147483647) - ) - (block - (local.set $0 - (call $ta - (local.get $2) - ) - ) - (if - (i32.eq - (i32.add - (i32.load - (local.get $14) - ) - (i32.load - (local.get $8) - ) - ) - (local.get $0) - ) - (if - (i32.ne - (local.get $0) - (i32.const -1) - ) - (block - (local.set $3 - (local.get $0) - ) - (local.set $7 - (local.get $2) - ) - (br $label$break$b - (i32.const 191) - ) - ) - ) - (block - (local.set $24 - (local.get $0) - ) - (local.set $1 - (local.get $2) - ) - (local.set $9 - (i32.const 181) - ) - ) - ) - ) - ) - ) - (local.set $9 - (i32.const 171) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 171) - ) - (if - (i32.ne - (local.tee $2 - (call $ta - (i32.const 0) - ) - ) - (i32.const -1) - ) - (block $do-once33 - (local.set $8 - (i32.add - (local.tee $0 - (if (result i32) - (i32.and - (local.tee $0 - (local.get $2) - ) - (local.tee $10 - (i32.add - (local.tee $8 - (i32.load - (i32.const 1684) - ) - ) - (i32.const -1) - ) - ) - ) - (i32.add - (i32.sub - (local.get $5) - (local.get $0) - ) - (i32.and - (i32.add - (local.get $0) - (local.get $10) - ) - (i32.sub - (i32.const 0) - (local.get $8) - ) - ) - ) - (local.get $5) - ) - ) - (local.tee $10 - (i32.load - (i32.const 1640) - ) - ) - ) - ) - (if - (i32.and - (i32.lt_u - (local.get $0) - (i32.const 2147483647) - ) - (i32.gt_u - (local.get $0) - (local.get $4) - ) - ) - (block - (br_if $do-once33 - (select - (local.tee $12 - (i32.load - (i32.const 1648) - ) - ) - (i32.const 0) - (i32.or - (i32.le_u - (local.get $8) - (local.get $10) - ) - (i32.gt_u - (local.get $8) - (local.get $12) - ) - ) - ) - ) - (local.set $1 - (if (result i32) - (i32.eq - (local.get $2) - (local.tee $24 - (call $ta - (local.get $0) - ) - ) - ) - (block - (local.set $3 - (local.get $2) - ) - (local.set $7 - (local.get $0) - ) - (br $label$break$b - (i32.const 191) - ) - ) - (block (result i32) - (local.set $9 - (i32.const 181) - ) - (local.get $0) - ) - ) - ) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 181) - ) - (block $label$break$d - (local.set $2 - (i32.sub - (i32.const 0) - (local.get $1) - ) - ) - (if - (i32.and - (i32.and - (i32.ne - (local.get $24) - (i32.const -1) - ) - (i32.lt_u - (local.get $1) - (i32.const 2147483647) - ) - ) - (i32.gt_u - (local.get $22) - (local.get $1) - ) - ) - (if - (i32.lt_u - (local.tee $0 - (i32.and - (i32.add - (local.tee $0 - (i32.load - (i32.const 1688) - ) - ) - (i32.sub - (local.get $6) - (local.get $1) - ) - ) - (i32.sub - (i32.const 0) - (local.get $0) - ) - ) - ) - (i32.const 2147483647) - ) - (local.set $1 - (if (result i32) - (i32.eq - (call $ta - (local.get $0) - ) - (i32.const -1) - ) - (block - (drop - (call $ta - (local.get $2) - ) - ) - (br $label$break$d) - ) - (i32.add - (local.get $0) - (local.get $1) - ) - ) - ) - ) - ) - (if - (i32.ne - (local.get $24) - (i32.const -1) - ) - (block - (local.set $3 - (local.get $24) - ) - (local.set $7 - (local.get $1) - ) - (br $label$break$b - (i32.const 191) - ) - ) - ) - ) - ) - (i32.store - (i32.const 1652) - (i32.or - (i32.load - (i32.const 1652) - ) - (i32.const 4) - ) - ) - (i32.const 188) - ) - ) - ) - (i32.const 188) - ) - (if - (i32.lt_u - (local.get $5) - (i32.const 2147483647) - ) - (if - (i32.and - (i32.and - (i32.ne - (local.tee $0 - (call $ta - (local.get $5) - ) - ) - (i32.const -1) - ) - (i32.ne - (local.tee $1 - (call $ta - (i32.const 0) - ) - ) - (i32.const -1) - ) - ) - (i32.lt_u - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.gt_u - (local.tee $1 - (i32.sub - (local.get $1) - (local.get $0) - ) - ) - (i32.add - (local.get $4) - (i32.const 40) - ) - ) - (block - (local.set $7 - (local.get $1) - ) - (local.set $9 - (i32.const 191) - ) - (local.set $3 - (local.get $0) - ) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 191) - ) - (block - (i32.store - (i32.const 1640) - (local.tee $0 - (i32.add - (local.get $7) - (i32.load - (i32.const 1640) - ) - ) - ) - ) - (if - (i32.gt_u - (local.get $0) - (i32.load - (i32.const 1644) - ) - ) - (i32.store - (i32.const 1644) - (local.get $0) - ) - ) - (if - (local.tee $6 - (i32.load - (i32.const 1232) - ) - ) - (block $do-once38 - (local.set $1 - (i32.const 1656) - ) - (loop $do-in41 - (block $do-out40 - (if - (i32.eq - (i32.add - (local.tee $0 - (i32.load - (local.get $1) - ) - ) - (local.tee $5 - (i32.load - (local.tee $2 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - ) - ) - ) - (local.get $3) - ) - (block - (local.set $41 - (local.get $0) - ) - (local.set $42 - (local.get $2) - ) - (local.set $43 - (local.get $5) - ) - (local.set $44 - (local.get $1) - ) - (local.set $9 - (i32.const 201) - ) - (br $do-out40) - ) - ) - (br_if $do-in41 - (local.tee $1 - (i32.load offset=8 - (local.get $1) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 201) - ) - (if - (i32.eqz - (i32.and - (i32.load offset=12 - (local.get $44) - ) - (i32.const 8) - ) - ) - (if - (i32.and - (i32.lt_u - (local.get $6) - (local.get $3) - ) - (i32.ge_u - (local.get $6) - (local.get $41) - ) - ) - (block - (i32.store - (local.get $42) - (i32.add - (local.get $7) - (local.get $43) - ) - ) - (local.set $0 - (i32.add - (local.get $6) - (local.tee $1 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $0 - (i32.add - (local.get $6) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $0) - (i32.const 7) - ) - ) - ) - ) - ) - (local.set $1 - (i32.add - (i32.load - (i32.const 1220) - ) - (i32.sub - (local.get $7) - (local.get $1) - ) - ) - ) - (i32.store - (i32.const 1232) - (local.get $0) - ) - (i32.store - (i32.const 1220) - (local.get $1) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $0) - (local.get $1) - ) - (i32.const 40) - ) - (i32.store - (i32.const 1236) - (i32.load - (i32.const 1696) - ) - ) - (br $do-once38) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $3) - (local.tee $2 - (i32.load - (i32.const 1224) - ) - ) - ) - (block - (i32.store - (i32.const 1224) - (local.get $3) - ) - (local.set $2 - (local.get $3) - ) - ) - ) - (local.set $0 - (i32.add - (local.get $3) - (local.get $7) - ) - ) - (local.set $1 - (i32.const 1656) - ) - (loop $while-in43 - (block $while-out42 - (if - (i32.eq - (local.get $0) - (i32.load - (local.get $1) - ) - ) - (block - (local.set $45 - (local.get $1) - ) - (local.set $26 - (local.get $1) - ) - (local.set $9 - (i32.const 209) - ) - (br $while-out42) - ) - ) - (br_if $while-in43 - (local.tee $1 - (i32.load offset=8 - (local.get $1) - ) - ) - ) - (local.set $23 - (i32.const 1656) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 209) - ) - (local.set $23 - (if (result i32) - (i32.and - (i32.load offset=12 - (local.get $26) - ) - (i32.const 8) - ) - (i32.const 1656) - (block - (i32.store - (local.get $45) - (local.get $3) - ) - (i32.store offset=4 - (local.get $26) - (i32.add - (local.get $7) - (i32.load offset=4 - (local.get $26) - ) - ) - ) - (local.set $7 - (i32.add - (local.get $4) - (local.tee $10 - (i32.add - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - (local.get $3) - ) - ) - ) - ) - (local.set $8 - (i32.sub - (i32.sub - (local.tee $5 - (i32.add - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - (local.get $0) - ) - ) - (local.get $10) - ) - (local.get $4) - ) - ) - (i32.store offset=4 - (local.get $10) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - (if - (i32.eq - (local.get $5) - (local.get $6) - ) - (block - (i32.store - (i32.const 1220) - (local.tee $0 - (i32.add - (local.get $8) - (i32.load - (i32.const 1220) - ) - ) - ) - ) - (i32.store - (i32.const 1232) - (local.get $7) - ) - (i32.store offset=4 - (local.get $7) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - ) - (block $do-once44 - (if - (i32.eq - (i32.load - (i32.const 1228) - ) - (local.get $5) - ) - (block - (i32.store - (i32.const 1216) - (local.tee $0 - (i32.add - (local.get $8) - (i32.load - (i32.const 1216) - ) - ) - ) - ) - (i32.store - (i32.const 1228) - (local.get $7) - ) - (i32.store offset=4 - (local.get $7) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $7) - ) - (local.get $0) - ) - (br $do-once44) - ) - ) - (local.set $4 - (if (result i32) - (i32.eq - (i32.and - (local.tee $0 - (i32.load offset=4 - (local.get $5) - ) - ) - (i32.const 3) - ) - (i32.const 1) - ) - (block (result i32) - (local.set $12 - (i32.and - (local.get $0) - (i32.const -8) - ) - ) - (local.set $3 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (block $label$break$e - (if - (i32.lt_u - (local.get $0) - (i32.const 256) - ) - (block - (local.set $1 - (i32.load offset=12 - (local.get $5) - ) - ) - (if - (i32.ne - (local.tee $4 - (i32.load offset=8 - (local.get $5) - ) - ) - (local.tee $0 - (i32.add - (i32.shl - (local.get $3) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - ) - (block $do-once47 - (if - (i32.lt_u - (local.get $4) - (local.get $2) - ) - (call $qa) - ) - (br_if $do-once47 - (i32.eq - (local.get $5) - (i32.load offset=12 - (local.get $4) - ) - ) - ) - (call $qa) - ) - ) - (if - (i32.eq - (local.get $1) - (local.get $4) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (i32.load - (i32.const 1208) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $3) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$e) - ) - ) - (if - (i32.eq - (local.get $0) - (local.get $1) - ) - (local.set $32 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (block $do-once49 - (if - (i32.lt_u - (local.get $1) - (local.get $2) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $5) - (i32.load - (local.tee $0 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - ) - (block - (local.set $32 - (local.get $0) - ) - (br $do-once49) - ) - ) - (call $qa) - ) - ) - (i32.store offset=12 - (local.get $4) - (local.get $1) - ) - (i32.store - (local.get $32) - (local.get $4) - ) - ) - (block - (local.set $6 - (i32.load offset=24 - (local.get $5) - ) - ) - (if - (i32.eq - (local.get $5) - (local.tee $0 - (i32.load offset=12 - (local.get $5) - ) - ) - ) - (block $do-once51 - (if - (local.tee $0 - (i32.load - (local.tee $4 - (i32.add - (local.tee $1 - (i32.add - (local.get $5) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - (local.set $1 - (local.get $4) - ) - (br_if $do-once51 - (i32.eqz - (local.tee $0 - (i32.load - (local.get $1) - ) - ) - ) - ) - ) - (loop $while-in54 - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in54) - ) - ) - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in54) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $2) - ) - (call $qa) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $17 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $5) - ) - ) - (local.get $2) - ) - (call $qa) - ) - (if - (i32.ne - (local.get $5) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $5) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $17 - (local.get $0) - ) - ) - (call $qa) - ) - ) - ) - (br_if $label$break$e - (i32.eqz - (local.get $6) - ) - ) - (if - (i32.eq - (i32.load - (local.tee $1 - (i32.add - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $5) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - (local.get $5) - ) - (block $do-once55 - (i32.store - (local.get $1) - (local.get $17) - ) - (br_if $do-once55 - (local.get $17) - ) - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$e) - ) - (block - (if - (i32.lt_u - (local.get $6) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $5) - (i32.load offset=16 - (local.get $6) - ) - ) - (i32.store offset=16 - (local.get $6) - (local.get $17) - ) - (i32.store offset=20 - (local.get $6) - (local.get $17) - ) - ) - (br_if $label$break$e - (i32.eqz - (local.get $17) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $17) - (local.tee $1 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (i32.store offset=24 - (local.get $17) - (local.get $6) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $5) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $qa) - (block - (i32.store offset=16 - (local.get $17) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $17) - ) - ) - ) - ) - (br_if $label$break$e - (i32.eqz - (local.tee $0 - (i32.load offset=20 - (local.get $5) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store offset=20 - (local.get $17) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $17) - ) - ) - ) - ) - ) - ) - (local.set $5 - (i32.add - (local.get $5) - (local.get $12) - ) - ) - (i32.add - (local.get $8) - (local.get $12) - ) - ) - (local.get $8) - ) - ) - (i32.store offset=4 - (local.get $5) - (i32.and - (i32.load offset=4 - (local.get $5) - ) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $7) - (i32.or - (local.get $4) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $4) - (local.get $7) - ) - (local.get $4) - ) - (local.set $1 - (i32.shr_u - (local.get $4) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $4) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 1208) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (block $do-once59 - (if - (i32.ge_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 1224) - ) - ) - (block - (local.set $33 - (local.get $1) - ) - (local.set $27 - (local.get $4) - ) - (br $do-once59) - ) - ) - (call $qa) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $33 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $27 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $33) - (local.get $7) - ) - (i32.store offset=12 - (local.get $27) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $27) - ) - (i32.store offset=12 - (local.get $7) - (local.get $0) - ) - (br $do-once44) - ) - ) - (local.set $1 - (i32.add - (i32.shl - (local.tee $0 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $4) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $4) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $4) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $2 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $3) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $3) - (local.get $2) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - (i32.store offset=28 - (local.get $7) - (local.get $0) - ) - (i32.store offset=20 - (local.get $7) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $7) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $3 - (i32.load - (i32.const 1212) - ) - ) - (local.tee $2 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $2) - (local.get $3) - ) - ) - (i32.store - (local.get $1) - (local.get $7) - ) - (i32.store offset=24 - (local.get $7) - (local.get $1) - ) - (i32.store offset=12 - (local.get $7) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $7) - ) - (br $do-once44) - ) - ) - (local.set $14 - (i32.shl - (local.get $4) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $0) - (i32.const 1) - ) - ) - (i32.eq - (local.get $0) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load - (local.get $1) - ) - ) - (if - (i32.eq - (local.tee $9 - (loop $while-in64 (result i32) - (block $while-out63 (result i32) - (if - (i32.eq - (local.get $4) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $34 - (local.get $0) - ) - (br $while-out63 - (i32.const 279) - ) - ) - ) - (if (result i32) - (local.tee $1 - (i32.load - (local.tee $3 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $14) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $14 - (i32.shl - (local.get $14) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in64) - ) - (block (result i32) - (local.set $35 - (local.get $3) - ) - (local.set $46 - (local.get $0) - ) - (i32.const 276) - ) - ) - ) - ) - ) - (i32.const 276) - ) - (if - (i32.lt_u - (local.get $35) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $35) - (local.get $7) - ) - (i32.store offset=24 - (local.get $7) - (local.get $46) - ) - (i32.store offset=12 - (local.get $7) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $7) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 279) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $34) - ) - ) - ) - (local.tee $4 - (i32.load - (i32.const 1224) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $4) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $7) - ) - (i32.store offset=8 - (local.get $0) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $1) - ) - (i32.store offset=12 - (local.get $7) - (local.get $34) - ) - (i32.store offset=24 - (local.get $7) - (i32.const 0) - ) - ) - (call $qa) - ) - ) - ) - ) - ) - (global.set $r - (local.get $18) - ) - (return - (i32.add - (local.get $10) - (i32.const 8) - ) - ) - ) - ) - ) - ) - (loop $while-in66 - (block $while-out65 - (if - (i32.le_u - (local.tee $0 - (i32.load - (local.get $23) - ) - ) - (local.get $6) - ) - (br_if $while-out65 - (i32.gt_u - (local.tee $0 - (i32.add - (i32.load offset=4 - (local.get $23) - ) - (local.get $0) - ) - ) - (local.get $6) - ) - ) - ) - (local.set $23 - (i32.load offset=8 - (local.get $23) - ) - ) - (br $while-in66) - ) - ) - (i32.store - (i32.const 1232) - (local.tee $1 - (i32.add - (local.get $3) - (local.tee $2 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - ) - ) - ) - ) - (i32.store - (i32.const 1220) - (local.tee $2 - (i32.sub - (i32.add - (local.get $7) - (i32.const -40) - ) - (local.get $2) - ) - ) - ) - (i32.store offset=4 - (local.get $1) - (i32.or - (local.get $2) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $1) - (local.get $2) - ) - (i32.const 40) - ) - (i32.store - (i32.const 1236) - (i32.load - (i32.const 1696) - ) - ) - (i32.store offset=4 - (local.tee $2 - (select - (local.get $6) - (local.tee $1 - (i32.add - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $2 - (i32.add - (local.tee $1 - (i32.add - (local.get $0) - (i32.const -47) - ) - ) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $2) - (i32.const 7) - ) - ) - (local.get $1) - ) - ) - (i32.lt_u - (local.get $1) - (local.tee $8 - (i32.add - (local.get $6) - (i32.const 16) - ) - ) - ) - ) - ) - (i32.const 27) - ) - (i32.store offset=8 - (local.get $2) - (i32.load - (i32.const 1656) - ) - ) - (i32.store offset=12 - (local.get $2) - (i32.load - (i32.const 1660) - ) - ) - (i32.store offset=16 - (local.get $2) - (i32.load - (i32.const 1664) - ) - ) - (i32.store offset=20 - (local.get $2) - (i32.load - (i32.const 1668) - ) - ) - (i32.store - (i32.const 1656) - (local.get $3) - ) - (i32.store - (i32.const 1660) - (local.get $7) - ) - (i32.store - (i32.const 1668) - (i32.const 0) - ) - (i32.store - (i32.const 1664) - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - (local.set $1 - (i32.add - (local.get $2) - (i32.const 24) - ) - ) - (loop $do-in68 - (i32.store - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.const 7) - ) - (br_if $do-in68 - (i32.lt_u - (i32.add - (local.get $1) - (i32.const 4) - ) - (local.get $0) - ) - ) - ) - (if - (i32.ne - (local.get $2) - (local.get $6) - ) - (block - (i32.store offset=4 - (local.get $2) - (i32.and - (i32.load offset=4 - (local.get $2) - ) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $6) - (i32.or - (local.tee $5 - (i32.sub - (local.get $2) - (local.get $6) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (local.get $2) - (local.get $5) - ) - (local.set $1 - (i32.shr_u - (local.get $5) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $5) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - (if - (i32.and - (local.tee $3 - (i32.load - (i32.const 1208) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $3 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $36 - (local.get $1) - ) - (local.set $28 - (local.get $3) - ) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $1) - (local.get $3) - ) - ) - (local.set $36 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $28 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $36) - (local.get $6) - ) - (i32.store offset=12 - (local.get $28) - (local.get $6) - ) - (i32.store offset=8 - (local.get $6) - (local.get $28) - ) - (i32.store offset=12 - (local.get $6) - (local.get $0) - ) - (br $do-once38) - ) - ) - (local.set $3 - (i32.add - (i32.shl - (local.tee $0 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $5) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $5) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $5) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $2 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $3) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $3) - (local.get $2) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - (i32.store offset=28 - (local.get $6) - (local.get $0) - ) - (i32.store offset=20 - (local.get $6) - (i32.const 0) - ) - (i32.store - (local.get $8) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $1 - (i32.load - (i32.const 1212) - ) - ) - (local.tee $2 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $1) - (local.get $2) - ) - ) - (i32.store - (local.get $3) - (local.get $6) - ) - (i32.store offset=24 - (local.get $6) - (local.get $3) - ) - (i32.store offset=12 - (local.get $6) - (local.get $6) - ) - (i32.store offset=8 - (local.get $6) - (local.get $6) - ) - (br $do-once38) - ) - ) - (local.set $1 - (i32.shl - (local.get $5) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $0) - (i32.const 1) - ) - ) - (i32.eq - (local.get $0) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load - (local.get $3) - ) - ) - (if - (i32.eq - (local.tee $9 - (loop $while-in70 (result i32) - (block $while-out69 (result i32) - (if - (i32.eq - (local.get $5) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $37 - (local.get $0) - ) - (br $while-out69 - (i32.const 305) - ) - ) - ) - (if (result i32) - (local.tee $3 - (i32.load - (local.tee $2 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $1) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $1 - (i32.shl - (local.get $1) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $3) - ) - (br $while-in70) - ) - (block (result i32) - (local.set $38 - (local.get $2) - ) - (local.set $47 - (local.get $0) - ) - (i32.const 302) - ) - ) - ) - ) - ) - (i32.const 302) - ) - (if - (i32.lt_u - (local.get $38) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $38) - (local.get $6) - ) - (i32.store offset=24 - (local.get $6) - (local.get $47) - ) - (i32.store offset=12 - (local.get $6) - (local.get $6) - ) - (i32.store offset=8 - (local.get $6) - (local.get $6) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 305) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $37) - ) - ) - ) - (local.tee $3 - (i32.load - (i32.const 1224) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $3) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $6) - ) - (i32.store offset=8 - (local.get $0) - (local.get $6) - ) - (i32.store offset=8 - (local.get $6) - (local.get $1) - ) - (i32.store offset=12 - (local.get $6) - (local.get $37) - ) - (i32.store offset=24 - (local.get $6) - (i32.const 0) - ) - ) - (call $qa) - ) - ) - ) - ) - ) - ) - (block - (if - (i32.or - (i32.eqz - (local.tee $0 - (i32.load - (i32.const 1224) - ) - ) - ) - (i32.lt_u - (local.get $3) - (local.get $0) - ) - ) - (i32.store - (i32.const 1224) - (local.get $3) - ) - ) - (i32.store - (i32.const 1656) - (local.get $3) - ) - (i32.store - (i32.const 1660) - (local.get $7) - ) - (i32.store - (i32.const 1668) - (i32.const 0) - ) - (i32.store - (i32.const 1244) - (i32.load - (i32.const 1680) - ) - ) - (i32.store - (i32.const 1240) - (i32.const -1) - ) - (local.set $1 - (i32.const 0) - ) - (loop $do-in - (i32.store offset=12 - (local.tee $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $0) - ) - (br_if $do-in - (i32.ne - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.const 32) - ) - ) - ) - (i32.store - (i32.const 1232) - (local.tee $0 - (i32.add - (local.get $3) - (local.tee $1 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $0 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $0) - (i32.const 7) - ) - ) - ) - ) - ) - ) - (i32.store - (i32.const 1220) - (local.tee $1 - (i32.sub - (i32.add - (local.get $7) - (i32.const -40) - ) - (local.get $1) - ) - ) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $0) - (local.get $1) - ) - (i32.const 40) - ) - (i32.store - (i32.const 1236) - (i32.load - (i32.const 1696) - ) - ) - ) - ) - (br_if $folding-inner0 - (i32.gt_u - (local.tee $0 - (i32.load - (i32.const 1220) - ) - ) - (local.get $4) - ) - ) - ) - ) - (i32.store - (call $Qa) - (i32.const 12) - ) - (global.set $r - (local.get $18) - ) - (return - (i32.const 0) - ) - ) - (i32.store - (i32.const 1220) - (local.tee $1 - (i32.sub - (local.get $0) - (local.get $4) - ) - ) - ) - (i32.store - (i32.const 1232) - (local.tee $3 - (i32.add - (local.get $4) - (local.tee $0 - (i32.load - (i32.const 1232) - ) - ) - ) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - ) - (global.set $r - (local.get $18) - ) - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (func $fb (; 14 ;) (; has Stack IR ;) (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (if - (i32.eqz - (local.get $0) - ) - (return) - ) - (if - (i32.lt_u - (local.tee $3 - (i32.add - (local.get $0) - (i32.const -8) - ) - ) - (local.tee $13 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.tee $10 - (i32.and - (local.tee $0 - (i32.load - (i32.add - (local.get $0) - (i32.const -4) - ) - ) - ) - (i32.const 3) - ) - ) - (i32.const 1) - ) - (call $qa) - ) - (local.set $6 - (i32.add - (local.get $3) - (local.tee $4 - (i32.and - (local.get $0) - (i32.const -8) - ) - ) - ) - ) - (if - (i32.and - (local.get $0) - (i32.const 1) - ) - (block - (local.set $2 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - ) - (block $do-once - (local.set $9 - (i32.load - (local.get $3) - ) - ) - (if - (i32.eqz - (local.get $10) - ) - (return) - ) - (if - (i32.lt_u - (local.tee $0 - (i32.sub - (local.get $3) - (local.get $9) - ) - ) - (local.get $13) - ) - (call $qa) - ) - (local.set $3 - (i32.add - (local.get $4) - (local.get $9) - ) - ) - (if - (i32.eq - (i32.load - (i32.const 1228) - ) - (local.get $0) - ) - (block - (if - (i32.ne - (i32.and - (local.tee $1 - (i32.load offset=4 - (local.get $6) - ) - ) - (i32.const 3) - ) - (i32.const 3) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - (i32.store - (i32.const 1216) - (local.get $3) - ) - (i32.store offset=4 - (local.get $6) - (i32.and - (local.get $1) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $3) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $3) - ) - (local.get $3) - ) - (return) - ) - ) - (local.set $10 - (i32.shr_u - (local.get $9) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $9) - (i32.const 256) - ) - (block - (local.set $2 - (i32.load offset=12 - (local.get $0) - ) - ) - (if - (i32.ne - (local.tee $4 - (i32.load offset=8 - (local.get $0) - ) - ) - (local.tee $1 - (i32.add - (i32.shl - (local.get $10) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $4) - (local.get $13) - ) - (call $qa) - ) - (if - (i32.ne - (local.get $0) - (i32.load offset=12 - (local.get $4) - ) - ) - (call $qa) - ) - ) - ) - (if - (i32.eq - (local.get $2) - (local.get $4) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (i32.load - (i32.const 1208) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $10) - ) - (i32.const -1) - ) - ) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - (if - (i32.eq - (local.get $1) - (local.get $2) - ) - (local.set $5 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $2) - (local.get $13) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $0) - (i32.load - (local.tee $1 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - ) - ) - (local.set $5 - (local.get $1) - ) - (call $qa) - ) - ) - ) - (i32.store offset=12 - (local.get $4) - (local.get $2) - ) - (i32.store - (local.get $5) - (local.get $4) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - (local.set $12 - (i32.load offset=24 - (local.get $0) - ) - ) - (if - (i32.eq - (local.get $0) - (local.tee $4 - (i32.load offset=12 - (local.get $0) - ) - ) - ) - (block $do-once0 - (if - (local.tee $4 - (i32.load - (local.tee $9 - (i32.add - (local.tee $5 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - (local.set $5 - (local.get $9) - ) - (br_if $do-once0 - (i32.eqz - (local.tee $4 - (i32.load - (local.get $5) - ) - ) - ) - ) - ) - (loop $while-in - (if - (local.tee $10 - (i32.load - (local.tee $9 - (i32.add - (local.get $4) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $10) - ) - (local.set $5 - (local.get $9) - ) - (br $while-in) - ) - ) - (if - (local.tee $10 - (i32.load - (local.tee $9 - (i32.add - (local.get $4) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $10) - ) - (local.set $5 - (local.get $9) - ) - (br $while-in) - ) - ) - ) - (if - (i32.lt_u - (local.get $5) - (local.get $13) - ) - (call $qa) - (block - (i32.store - (local.get $5) - (i32.const 0) - ) - (local.set $7 - (local.get $4) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $5 - (i32.load offset=8 - (local.get $0) - ) - ) - (local.get $13) - ) - (call $qa) - ) - (if - (i32.ne - (local.get $0) - (i32.load offset=12 - (local.get $5) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $0) - (i32.load offset=8 - (local.get $4) - ) - ) - (block - (i32.store offset=12 - (local.get $5) - (local.get $4) - ) - (i32.store offset=8 - (local.get $4) - (local.get $5) - ) - (local.set $7 - (local.get $4) - ) - ) - (call $qa) - ) - ) - ) - (if - (local.get $12) - (block - (if - (i32.eq - (i32.load - (local.tee $5 - (i32.add - (i32.shl - (local.tee $4 - (i32.load offset=28 - (local.get $0) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - (local.get $0) - ) - (block - (i32.store - (local.get $5) - (local.get $7) - ) - (if - (i32.eqz - (local.get $7) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $12) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $0) - (i32.load offset=16 - (local.get $12) - ) - ) - (i32.store offset=16 - (local.get $12) - (local.get $7) - ) - (i32.store offset=20 - (local.get $12) - (local.get $7) - ) - ) - (if - (i32.eqz - (local.get $7) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $7) - (local.tee $5 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (i32.store offset=24 - (local.get $7) - (local.get $12) - ) - (if - (local.tee $4 - (i32.load offset=16 - (local.get $0) - ) - ) - (if - (i32.lt_u - (local.get $4) - (local.get $5) - ) - (call $qa) - (block - (i32.store offset=16 - (local.get $7) - (local.get $4) - ) - (i32.store offset=24 - (local.get $4) - (local.get $7) - ) - ) - ) - ) - (if - (local.tee $4 - (i32.load offset=20 - (local.get $0) - ) - ) - (if - (i32.lt_u - (local.get $4) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store offset=20 - (local.get $7) - (local.get $4) - ) - (i32.store offset=24 - (local.get $4) - (local.get $7) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - ) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - ) - ) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - ) - ) - ) - ) - (if - (i32.ge_u - (local.get $2) - (local.get $6) - ) - (call $qa) - ) - (if - (i32.eqz - (i32.and - (local.tee $0 - (i32.load offset=4 - (local.get $6) - ) - ) - (i32.const 1) - ) - ) - (call $qa) - ) - (if - (i32.and - (local.get $0) - (i32.const 2) - ) - (block - (i32.store offset=4 - (local.get $6) - (i32.and - (local.get $0) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $1) - (local.get $2) - ) - (local.get $1) - ) - ) - (block - (if - (i32.eq - (i32.load - (i32.const 1232) - ) - (local.get $6) - ) - (block - (i32.store - (i32.const 1220) - (local.tee $0 - (i32.add - (local.get $1) - (i32.load - (i32.const 1220) - ) - ) - ) - ) - (i32.store - (i32.const 1232) - (local.get $2) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (if - (i32.ne - (i32.load - (i32.const 1228) - ) - (local.get $2) - ) - (return) - ) - (i32.store - (i32.const 1228) - (i32.const 0) - ) - (i32.store - (i32.const 1216) - (i32.const 0) - ) - (return) - ) - ) - (if - (i32.eq - (i32.load - (i32.const 1228) - ) - (local.get $6) - ) - (block - (i32.store - (i32.const 1216) - (local.tee $0 - (i32.add - (local.get $1) - (i32.load - (i32.const 1216) - ) - ) - ) - ) - (i32.store - (i32.const 1228) - (local.get $2) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $2) - ) - (local.get $0) - ) - (return) - ) - ) - (local.set $5 - (i32.add - (local.get $1) - (i32.and - (local.get $0) - (i32.const -8) - ) - ) - ) - (local.set $4 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (block $do-once4 - (if - (i32.lt_u - (local.get $0) - (i32.const 256) - ) - (block - (local.set $1 - (i32.load offset=12 - (local.get $6) - ) - ) - (if - (i32.ne - (local.tee $3 - (i32.load offset=8 - (local.get $6) - ) - ) - (local.tee $0 - (i32.add - (i32.shl - (local.get $4) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $3) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.ne - (local.get $6) - (i32.load offset=12 - (local.get $3) - ) - ) - (call $qa) - ) - ) - ) - (if - (i32.eq - (local.get $1) - (local.get $3) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (i32.load - (i32.const 1208) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - (if - (i32.eq - (local.get $0) - (local.get $1) - ) - (local.set $14 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $1) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $6) - (i32.load - (local.tee $0 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - ) - (local.set $14 - (local.get $0) - ) - (call $qa) - ) - ) - ) - (i32.store offset=12 - (local.get $3) - (local.get $1) - ) - (i32.store - (local.get $14) - (local.get $3) - ) - ) - (block - (local.set $7 - (i32.load offset=24 - (local.get $6) - ) - ) - (if - (i32.eq - (local.get $6) - (local.tee $0 - (i32.load offset=12 - (local.get $6) - ) - ) - ) - (block $do-once6 - (if - (local.tee $0 - (i32.load - (local.tee $3 - (i32.add - (local.tee $1 - (i32.add - (local.get $6) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - (local.set $1 - (local.get $3) - ) - (br_if $do-once6 - (i32.eqz - (local.tee $0 - (i32.load - (local.get $1) - ) - ) - ) - ) - ) - (loop $while-in9 - (if - (local.tee $4 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $4) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in9) - ) - ) - (if - (local.tee $4 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $4) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in9) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $8 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $6) - ) - ) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.ne - (local.get $6) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $6) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $8 - (local.get $0) - ) - ) - (call $qa) - ) - ) - ) - (if - (local.get $7) - (block - (if - (i32.eq - (i32.load - (local.tee $1 - (i32.add - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $6) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - (local.get $6) - ) - (block - (i32.store - (local.get $1) - (local.get $8) - ) - (if - (i32.eqz - (local.get $8) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $7) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $6) - (i32.load offset=16 - (local.get $7) - ) - ) - (i32.store offset=16 - (local.get $7) - (local.get $8) - ) - (i32.store offset=20 - (local.get $7) - (local.get $8) - ) - ) - (br_if $do-once4 - (i32.eqz - (local.get $8) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $8) - (local.tee $1 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (i32.store offset=24 - (local.get $8) - (local.get $7) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $6) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $qa) - (block - (i32.store offset=16 - (local.get $8) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $8) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $6) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store offset=20 - (local.get $8) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $8) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $5) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $2) - (local.get $5) - ) - (local.get $5) - ) - (local.set $1 - (if (result i32) - (i32.eq - (i32.load - (i32.const 1228) - ) - (local.get $2) - ) - (block - (i32.store - (i32.const 1216) - (local.get $5) - ) - (return) - ) - (local.get $5) - ) - ) - ) - ) - (local.set $3 - (i32.shr_u - (local.get $1) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $1) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $3) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - (if - (i32.and - (local.tee $1 - (i32.load - (i32.const 1208) - ) - ) - (local.tee $3 - (i32.shl - (i32.const 1) - (local.get $3) - ) - ) - ) - (if - (i32.lt_u - (local.tee $3 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $15 - (local.get $1) - ) - (local.set $11 - (local.get $3) - ) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $1) - (local.get $3) - ) - ) - (local.set $15 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $11 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $15) - (local.get $2) - ) - (i32.store offset=12 - (local.get $11) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $11) - ) - (i32.store offset=12 - (local.get $2) - (local.get $0) - ) - (return) - ) - ) - (local.set $3 - (i32.add - (i32.shl - (local.tee $0 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $1) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $1) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $0) - (local.tee $3 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $1) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $5 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $4) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $3) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $4) - (local.get $5) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - (i32.store offset=28 - (local.get $2) - (local.get $0) - ) - (i32.store offset=20 - (local.get $2) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $2) - (i32.const 0) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 1212) - ) - ) - (local.tee $5 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - (block - (local.set $11 - (i32.shl - (local.get $1) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $0) - (i32.const 1) - ) - ) - (i32.eq - (local.get $0) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load - (local.get $3) - ) - ) - (if - (i32.eq - (local.tee $0 - (loop $while-in15 (result i32) - (block $while-out14 (result i32) - (if - (i32.eq - (local.get $1) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $16 - (local.get $0) - ) - (br $while-out14 - (i32.const 130) - ) - ) - ) - (if (result i32) - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $11) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $11 - (i32.shl - (local.get $11) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $3) - ) - (br $while-in15) - ) - (block (result i32) - (local.set $17 - (local.get $4) - ) - (local.set $18 - (local.get $0) - ) - (i32.const 127) - ) - ) - ) - ) - ) - (i32.const 127) - ) - (if - (i32.lt_u - (local.get $17) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $17) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $18) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - ) - ) - (if - (i32.eq - (local.get $0) - (i32.const 130) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $16) - ) - ) - ) - (local.tee $3 - (i32.load - (i32.const 1224) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $3) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $2) - ) - (i32.store offset=8 - (local.get $0) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $1) - ) - (i32.store offset=12 - (local.get $2) - (local.get $16) - ) - (i32.store offset=24 - (local.get $2) - (i32.const 0) - ) - ) - (call $qa) - ) - ) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $4) - (local.get $5) - ) - ) - (i32.store - (local.get $3) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $3) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - ) - ) - (i32.store - (i32.const 1240) - (local.tee $0 - (i32.add - (i32.load - (i32.const 1240) - ) - (i32.const -1) - ) - ) - ) - (local.set $0 - (if (result i32) - (local.get $0) - (return) - (i32.const 1664) - ) - ) - (loop $while-in17 - (if - (local.tee $0 - (i32.load - (local.get $0) - ) - ) - (block - (local.set $0 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (br $while-in17) - ) - ) - ) - (i32.store - (i32.const 1240) - (i32.const -1) - ) - ) - (func $Ra (; 15 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local.set $9 - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 48) - ) - ) - (local.set $7 - (i32.add - (local.get $9) - (i32.const 16) - ) - ) - (i32.store - (local.tee $4 - (i32.add - (local.tee $8 - (local.get $9) - ) - (i32.const 32) - ) - ) - (local.tee $3 - (i32.load offset=28 - (local.get $0) - ) - ) - ) - (i32.store offset=4 - (local.get $4) - (local.tee $3 - (i32.sub - (i32.load offset=20 - (local.get $0) - ) - (local.get $3) - ) - ) - ) - (i32.store offset=8 - (local.get $4) - (local.get $1) - ) - (i32.store offset=12 - (local.get $4) - (local.get $2) - ) - (local.set $1 - (local.get $4) - ) - (local.set $4 - (i32.const 2) - ) - (local.set $10 - (i32.add - (local.get $2) - (local.get $3) - ) - ) - (loop $while-in - (block $while-out - (if - (i32.load - (i32.const 1160) - ) - (block - (call $ra - (i32.const 1) - (local.get $0) - ) - (i32.store - (local.get $8) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $8) - (local.get $1) - ) - (i32.store offset=8 - (local.get $8) - (local.get $4) - ) - (local.set $3 - (call $Pa - (call $ya - (i32.const 146) - (local.get $8) - ) - ) - ) - (call $oa - (i32.const 0) - ) - ) - (block - (i32.store - (local.get $7) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $7) - (local.get $1) - ) - (i32.store offset=8 - (local.get $7) - (local.get $4) - ) - (local.set $3 - (call $Pa - (call $ya - (i32.const 146) - (local.get $7) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $3) - (local.get $10) - ) - (block - (local.set $1 - (i32.const 6) - ) - (br $while-out) - ) - ) - (if - (i32.lt_s - (local.get $3) - (i32.const 0) - ) - (block - (local.set $12 - (local.get $1) - ) - (local.set $13 - (local.get $4) - ) - (local.set $1 - (i32.const 8) - ) - ) - (block - (local.set $5 - (if (result i32) - (i32.gt_u - (local.get $3) - (local.tee $5 - (i32.load offset=4 - (local.get $1) - ) - ) - ) - (block (result i32) - (i32.store offset=28 - (local.get $0) - (local.tee $6 - (i32.load offset=44 - (local.get $0) - ) - ) - ) - (i32.store offset=20 - (local.get $0) - (local.get $6) - ) - (local.set $6 - (i32.load offset=12 - (local.get $1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (local.set $4 - (i32.add - (local.get $4) - (i32.const -1) - ) - ) - (i32.sub - (local.get $3) - (local.get $5) - ) - ) - (block (result i32) - (if - (i32.eq - (local.get $4) - (i32.const 2) - ) - (block - (i32.store offset=28 - (local.get $0) - (i32.add - (local.get $3) - (i32.load offset=28 - (local.get $0) - ) - ) - ) - (local.set $6 - (local.get $5) - ) - (local.set $4 - (i32.const 2) - ) - ) - (local.set $6 - (local.get $5) - ) - ) - (local.get $3) - ) - ) - ) - (i32.store - (local.get $1) - (i32.add - (local.get $5) - (i32.load - (local.get $1) - ) - ) - ) - (i32.store offset=4 - (local.get $1) - (i32.sub - (local.get $6) - (local.get $5) - ) - ) - (local.set $10 - (i32.sub - (local.get $10) - (local.get $3) - ) - ) - (br $while-in) - ) - ) - ) - ) - (local.set $11 - (if (result i32) - (i32.eq - (local.get $1) - (i32.const 6) - ) - (block (result i32) - (i32.store offset=16 - (local.get $0) - (i32.add - (local.tee $1 - (i32.load offset=44 - (local.get $0) - ) - ) - (i32.load offset=48 - (local.get $0) - ) - ) - ) - (i32.store offset=28 - (local.get $0) - (local.get $1) - ) - (i32.store offset=20 - (local.get $0) - (local.get $1) - ) - (local.get $2) - ) - (if (result i32) - (i32.eq - (local.get $1) - (i32.const 8) - ) - (block (result i32) - (i32.store offset=16 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=20 - (local.get $0) - (i32.const 0) - ) - (i32.store - (local.get $0) - (i32.or - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (if (result i32) - (i32.eq - (local.get $13) - (i32.const 2) - ) - (i32.const 0) - (i32.sub - (local.get $2) - (i32.load offset=4 - (local.get $12) - ) - ) - ) - ) - (local.get $11) - ) - ) - ) - (global.set $r - (local.get $9) - ) - (local.get $11) - ) - (func $Wa (; 16 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local.set $5 - (i32.const 1144) - ) - (local.set $3 - (if (result i32) - (local.tee $4 - (i32.load offset=16 - (local.get $1) - ) - ) - (block (result i32) - (local.set $6 - (i32.const 5) - ) - (local.get $4) - ) - (if (result i32) - (call $Xa - (local.get $1) - ) - (local.get $3) - (block (result i32) - (local.set $6 - (i32.const 5) - ) - (i32.load offset=16 - (local.get $1) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $6) - (i32.const 5) - ) - (block $label$break$a - (if - (i32.lt_u - (i32.sub - (local.get $3) - (local.tee $3 - (i32.load offset=20 - (local.get $1) - ) - ) - ) - (local.get $0) - ) - (block - (local.set $2 - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $1) - (i32.const 1144) - (local.get $0) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $1) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - (br $label$break$a) - ) - ) - (if - (i32.gt_s - (i32.load8_s offset=75 - (local.get $1) - ) - (i32.const -1) - ) - (block $label$break$b - (local.set $2 - (local.get $0) - ) - (loop $while-in - (if - (i32.eqz - (local.get $2) - ) - (block - (local.set $2 - (i32.const 0) - ) - (br $label$break$b) - ) - ) - (if - (i32.ne - (i32.load8_s - (i32.add - (local.tee $4 - (i32.add - (local.get $2) - (i32.const -1) - ) - ) - (i32.const 1144) - ) - ) - (i32.const 10) - ) - (block - (local.set $2 - (local.get $4) - ) - (br $while-in) - ) - ) - ) - (br_if $label$break$a - (i32.lt_u - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $1) - (i32.const 1144) - (local.get $2) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $1) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - (local.get $2) - ) - ) - (local.set $0 - (i32.sub - (local.get $0) - (local.get $2) - ) - ) - (local.set $5 - (i32.add - (local.get $2) - (i32.const 1144) - ) - ) - (local.set $3 - (i32.load offset=20 - (local.get $1) - ) - ) - ) - ) - (drop - (call $jb - (local.get $3) - (local.get $5) - (local.get $0) - ) - ) - (i32.store offset=20 - (local.get $1) - (i32.add - (local.get $0) - (i32.load offset=20 - (local.get $1) - ) - ) - ) - (local.set $2 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - ) - ) - (local.get $2) - ) - (func $Za (; 17 ;) (; has Stack IR ;) (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local.set $0 - (i32.const 1144) - ) - (block - (local.set $4 - (i32.const 1144) - ) - (local.set $1 - (i32.const 4) - ) - ) - (i32.sub - (if (result i32) - (i32.eq - (local.get $1) - (i32.const 4) - ) - (block (result i32) - (local.set $1 - (local.get $4) - ) - (local.set $0 - (loop $while-in1 (result i32) - (if (result i32) - (i32.and - (i32.add - (local.tee $2 - (i32.load - (local.get $1) - ) - ) - (i32.const -16843009) - ) - (i32.xor - (i32.and - (local.get $2) - (i32.const -2139062144) - ) - (i32.const -2139062144) - ) - ) - (local.get $1) - (block - (local.set $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (if - (i32.and - (local.get $2) - (i32.const 255) - ) - (loop $while-in3 - (br_if $while-in3 - (i32.load8_s - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.get $0) - ) - (local.get $2) - ) - (i32.const 1144) - ) - ) - (func $_a (; 18 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (if - (local.get $0) - (local.set $0 - (block $do-once (result i32) - (if - (i32.le_s - (i32.load offset=76 - (local.get $0) - ) - (i32.const -1) - ) - (br $do-once - (call $$a - (local.get $0) - ) - ) - ) - (call $$a - (local.get $0) - ) - ) - ) - (block - (local.set $0 - (if (result i32) - (i32.load - (i32.const 1140) - ) - (call $_a - (i32.load - (i32.const 1140) - ) - ) - (i32.const 0) - ) - ) - (call $pa - (i32.const 1188) - ) - (if - (local.tee $1 - (i32.load - (i32.const 1184) - ) - ) - (loop $while-in - (drop - (i32.load offset=76 - (local.get $1) - ) - ) - (if - (i32.gt_u - (i32.load offset=20 - (local.get $1) - ) - (i32.load offset=28 - (local.get $1) - ) - ) - (local.set $0 - (i32.or - (call $$a - (local.get $1) - ) - (local.get $0) - ) - ) - ) - (br_if $while-in - (local.tee $1 - (i32.load offset=56 - (local.get $1) - ) - ) - ) - ) - ) - (call $xa - (i32.const 1188) - ) - ) - ) - (local.get $0) - ) - (func $ab (; 19 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local.set $3 - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 16) - ) - ) - (i32.store8 - (local.tee $4 - (local.get $3) - ) - (i32.const 10) - ) - (if - (local.tee $1 - (i32.load offset=16 - (local.get $0) - ) - ) - (block - (local.set $5 - (local.get $1) - ) - (local.set $6 - (i32.const 4) - ) - ) - (if - (call $Xa - (local.get $0) - ) - (local.set $2 - (i32.const -1) - ) - (block - (local.set $5 - (i32.load offset=16 - (local.get $0) - ) - ) - (local.set $6 - (i32.const 4) - ) - ) - ) - ) - (if - (i32.eq - (local.get $6) - (i32.const 4) - ) - (block $do-once - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=20 - (local.get $0) - ) - ) - (local.get $5) - ) - (if - (i32.ne - (local.tee $2 - (i32.const 10) - ) - (i32.load8_s offset=75 - (local.get $0) - ) - ) - (block - (i32.store offset=20 - (local.get $0) - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $1) - (i32.const 10) - ) - (br $do-once) - ) - ) - ) - (local.set $2 - (if (result i32) - (i32.eq - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (local.get $4) - (i32.const 1) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $0) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - (i32.const 1) - ) - (i32.load8_u - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - ) - (global.set $r - (local.get $3) - ) - (local.get $2) - ) - (func $$a (; 20 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (if - (i32.gt_u - (i32.load offset=20 - (local.get $0) - ) - (i32.load offset=28 - (local.get $0) - ) - ) - (block - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $0) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - (if - (i32.load offset=20 - (local.get $0) - ) - (local.set $1 - (i32.const 3) - ) - (local.set $2 - (i32.const -1) - ) - ) - ) - (local.set $1 - (i32.const 3) - ) - ) - (if (result i32) - (i32.eq - (local.get $1) - (i32.const 3) - ) - (block (result i32) - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=4 - (local.get $0) - ) - ) - (local.tee $2 - (i32.load offset=8 - (local.get $0) - ) - ) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (i32.sub - (local.get $1) - (local.get $2) - ) - (i32.const 1) - (i32.add - (i32.and - (i32.load offset=40 - (local.get $0) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.store offset=16 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=20 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=8 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.const 0) - ) - (i32.const 0) - ) - (local.get $2) - ) - ) - (func $jb (; 21 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (if - (i32.ge_s - (local.get $2) - (i32.const 4096) - ) - (return - (call $va - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - ) - (local.set $3 - (local.get $0) - ) - (if - (i32.eq - (i32.and - (local.get $0) - (i32.const 3) - ) - (i32.and - (local.get $1) - (i32.const 3) - ) - ) - (block - (loop $while-in - (if - (i32.and - (local.get $0) - (i32.const 3) - ) - (block - (if - (i32.eqz - (local.get $2) - ) - (return - (local.get $3) - ) - ) - (i32.store8 - (local.get $0) - (i32.load8_s - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (loop $while-in1 - (if - (i32.ge_s - (local.get $2) - (i32.const 4) - ) - (block - (i32.store - (local.get $0) - (i32.load - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 4) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - ) - (loop $while-in3 - (if - (i32.gt_s - (local.get $2) - (i32.const 0) - ) - (block - (i32.store8 - (local.get $0) - (i32.load8_s - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (local.get $3) - ) - (func $gb (; 22 ;) (; has Stack IR ;) - (nop) - ) - (func $hb (; 23 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local.set $4 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - (if - (i32.ge_s - (local.get $2) - (i32.const 20) - ) - (block - (local.set $1 - (i32.and - (local.get $1) - (i32.const 255) - ) - ) - (if - (local.tee $3 - (i32.and - (local.get $0) - (i32.const 3) - ) - ) - (block - (local.set $3 - (i32.sub - (i32.add - (local.get $0) - (i32.const 4) - ) - (local.get $3) - ) - ) - (loop $while-in - (if - (i32.lt_s - (local.get $0) - (local.get $3) - ) - (block - (i32.store8 - (local.get $0) - (local.get $1) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - ) - (local.set $3 - (i32.or - (i32.or - (i32.or - (i32.shl - (local.get $1) - (i32.const 8) - ) - (local.get $1) - ) - (i32.shl - (local.get $1) - (i32.const 16) - ) - ) - (i32.shl - (local.get $1) - (i32.const 24) - ) - ) - ) - (local.set $5 - (i32.and - (local.get $4) - (i32.const -4) - ) - ) - (loop $while-in1 - (if - (i32.lt_s - (local.get $0) - (local.get $5) - ) - (block - (i32.store - (local.get $0) - (local.get $3) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - ) - (loop $while-in3 - (if - (i32.lt_s - (local.get $0) - (local.get $4) - ) - (block - (i32.store8 - (local.get $0) - (local.get $1) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (i32.sub - (local.get $0) - (local.get $2) - ) - ) - (func $db (; 24 ;) (; has Stack IR ;) - (local $0 i32) - (local $1 i32) - (drop - (i32.load offset=76 - (local.tee $0 - (i32.load - (i32.const 1024) - ) - ) - ) - ) - (drop - (if (result i32) - (i32.lt_s - (i32.add - (call $bb - (call $Za) - (local.get $0) - ) - (i32.const -1) - ) - (i32.const 0) - ) - (i32.const 1) - (block $do-once (result i32) - (if - (i32.ne - (i32.load8_s offset=75 - (local.get $0) - ) - (i32.const 10) - ) - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=20 - (local.get $0) - ) - ) - (i32.load offset=16 - (local.get $0) - ) - ) - (block - (i32.store offset=20 - (local.get $0) - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $1) - (i32.const 10) - ) - (br $do-once - (i32.const 0) - ) - ) - ) - ) - (call $ab - (local.get $0) - ) - ) - ) - ) - ) - (func $Xa (; 25 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (i32.store8 offset=74 - (local.get $0) - (i32.or - (local.tee $1 - (i32.load8_s offset=74 - (local.get $0) - ) - ) - (i32.add - (local.get $1) - (i32.const 255) - ) - ) - ) - (if (result i32) - (i32.and - (local.tee $1 - (i32.load - (local.get $0) - ) - ) - (i32.const 8) - ) - (block (result i32) - (i32.store - (local.get $0) - (i32.or - (local.get $1) - (i32.const 32) - ) - ) - (i32.const -1) - ) - (block (result i32) - (i32.store offset=8 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (local.tee $1 - (i32.load offset=44 - (local.get $0) - ) - ) - ) - (i32.store offset=20 - (local.get $0) - (local.get $1) - ) - (i32.store offset=16 - (local.get $0) - (i32.add - (i32.load offset=48 - (local.get $0) - ) - (local.get $1) - ) - ) - (i32.const 0) - ) - ) - ) - (func $bb (; 26 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local.set $2 - (local.get $0) - ) - (if (result i32) - (block (result i32) - (drop - (i32.load offset=76 - (local.get $1) - ) - ) - (i32.ne - (local.get $2) - (local.tee $1 - (call $Wa - (local.get $2) - (local.get $1) - ) - ) - ) - ) - (if (result i32) - (local.get $0) - (i32.div_u - (local.get $1) - (local.get $0) - ) - (i32.const 0) - ) - (i32.const 1) - ) - ) - (func $Ua (; 27 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local.set $3 - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 32) - ) - ) - (i32.store - (local.get $3) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.const 0) - ) - (i32.store offset=8 - (local.get $3) - (local.get $1) - ) - (i32.store offset=12 - (local.get $3) - (i32.add - (local.get $3) - (i32.const 20) - ) - ) - (i32.store offset=16 - (local.get $3) - (local.get $2) - ) - (local.set $0 - (if (result i32) - (i32.lt_s - (call $Pa - (call $ua - (i32.const 140) - (local.get $3) - ) - ) - (i32.const 0) - ) - (block (result i32) - (i32.store offset=20 - (local.get $3) - (i32.const -1) - ) - (i32.const -1) - ) - (i32.load offset=20 - (local.get $3) - ) - ) - ) - (global.set $r - (local.get $3) - ) - (local.get $0) - ) - (func $Va (; 28 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local.set $4 - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 80) - ) - ) - (local.set $3 - (local.get $4) - ) - (i32.store offset=36 - (local.get $0) - (i32.const 3) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 64) - ) - ) - (block - (i32.store - (local.get $3) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.const 21505) - ) - (i32.store offset=8 - (local.get $3) - (i32.add - (local.get $4) - (i32.const 12) - ) - ) - (if - (call $wa - (i32.const 54) - (local.get $3) - ) - (i32.store8 offset=75 - (local.get $0) - (i32.const -1) - ) - ) - ) - ) - (local.set $0 - (call $Ra - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - (global.set $r - (local.get $4) - ) - (local.get $0) - ) - (func $Oa (; 29 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local.set $1 - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 16) - ) - ) - (i32.store - (local.get $1) - (i32.load offset=60 - (local.get $0) - ) - ) - (local.set $0 - (call $Pa - (call $sa - (i32.const 6) - (local.get $1) - ) - ) - ) - (global.set $r - (local.get $1) - ) - (local.get $0) - ) - (func $Pa (; 30 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (if - (i32.gt_u - (local.get $0) - (i32.const -4096) - ) - (block - (i32.store - (call $Qa) - (i32.sub - (i32.const 0) - (local.get $0) - ) - ) - (local.set $0 - (i32.const -1) - ) - ) - ) - (local.get $0) - ) - (func $Qa (; 31 ;) (; has Stack IR ;) (result i32) - (if (result i32) - (i32.load - (i32.const 1160) - ) - (i32.load - (i32.const 64) - ) - (i32.const 1204) - ) - ) - (func $lb (; 32 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $1) - (local.get $2) - (local.get $3) - (i32.add - (i32.and - (local.get $0) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - (func $Ea (; 33 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local.set $1 - (global.get $r) - ) - (global.set $r - (i32.add - (local.get $0) - (global.get $r) - ) - ) - (global.set $r - (i32.and - (i32.add - (global.get $r) - (i32.const 15) - ) - (i32.const -16) - ) - ) - (local.get $1) - ) - (func $ob (; 34 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $ja - (i32.const 1) - ) - (i32.const 0) - ) - (func $Ia (; 35 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (if - (i32.eqz - (global.get $v) - ) - (block - (global.set $v - (local.get $0) - ) - (global.set $w - (local.get $1) - ) - ) - ) - ) - (func $kb (; 36 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (call_indirect (type $i32_=>_i32) - (local.get $1) - (i32.and - (local.get $0) - (i32.const 1) - ) - ) - ) - (func $Sa (; 37 ;) (; has Stack IR ;) (param $0 i32) - (drop - (i32.load offset=68 - (local.get $0) - ) - ) - ) - (func $mb (; 38 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (call_indirect (type $i32_=>_none) - (local.get $1) - (i32.add - (i32.and - (local.get $0) - (i32.const 1) - ) - (i32.const 6) - ) - ) - ) - (func $Ha (; 39 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (global.set $r - (local.get $0) - ) - (global.set $s - (local.get $1) - ) - ) - (func $nb (; 40 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (call $ja - (i32.const 0) - ) - (i32.const 0) - ) - (func $Na (; 41 ;) (; has Stack IR ;) (result i32) - (call $db) - (i32.const 0) - ) - (func $pb (; 42 ;) (; has Stack IR ;) (param $0 i32) - (call $ja - (i32.const 2) - ) - ) - (func $La (; 43 ;) (; has Stack IR ;) (param $0 i32) - (global.set $K - (local.get $0) - ) - ) - (func $Ga (; 44 ;) (; has Stack IR ;) (param $0 i32) - (global.set $r - (local.get $0) - ) - ) - (func $Ma (; 45 ;) (; has Stack IR ;) (result i32) - (global.get $K) - ) - (func $Fa (; 46 ;) (; has Stack IR ;) (result i32) - (global.get $r) - ) - (func $ib (; 47 ;) (; has Stack IR ;) (result i32) - (i32.const 0) - ) -) diff -Nru binaryen-91/test/memorygrowth.fromasm.clamp binaryen-99/test/memorygrowth.fromasm.clamp --- binaryen-91/test/memorygrowth.fromasm.clamp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/memorygrowth.fromasm.clamp 1970-01-01 00:00:00.000000000 +0000 @@ -1,9095 +0,0 @@ -(module - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (import "env" "memory" (memory $memory 256)) - (data (global.get $__memory_base) "memorygrowth.asm.js") - (import "env" "table" (table $table 8 8 funcref)) - (elem (global.get $__table_base) $nb $Oa $ob $Va $Ua $Ra $pb $Sa) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $r$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $s$asm2wasm$import i32)) - (import "env" "abort" (func $ja (param i32))) - (import "env" "_pthread_cleanup_pop" (func $oa (param i32))) - (import "env" "___lock" (func $pa (param i32))) - (import "env" "_abort" (func $qa)) - (import "env" "_pthread_cleanup_push" (func $ra (param i32 i32))) - (import "env" "___syscall6" (func $sa (param i32 i32) (result i32))) - (import "env" "_sbrk" (func $ta (param i32) (result i32))) - (import "env" "___syscall140" (func $ua (param i32 i32) (result i32))) - (import "env" "_emscripten_memcpy_big" (func $va (param i32 i32 i32) (result i32))) - (import "env" "___syscall54" (func $wa (param i32 i32) (result i32))) - (import "env" "___unlock" (func $xa (param i32))) - (import "env" "___syscall146" (func $ya (param i32 i32) (result i32))) - (global $r (mut i32) (global.get $r$asm2wasm$import)) - (global $s (mut i32) (global.get $s$asm2wasm$import)) - (global $v (mut i32) (i32.const 0)) - (global $w (mut i32) (i32.const 0)) - (global $K (mut i32) (i32.const 0)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (export "_free" (func $fb)) - (export "_main" (func $Na)) - (export "_pthread_self" (func $ib)) - (export "_memset" (func $hb)) - (export "_malloc" (func $eb)) - (export "_memcpy" (func $jb)) - (export "_fflush" (func $_a)) - (export "___errno_location" (func $Qa)) - (export "runPostSets" (func $gb)) - (export "stackAlloc" (func $Ea)) - (export "stackSave" (func $Fa)) - (export "stackRestore" (func $Ga)) - (export "establishStackSpace" (func $Ha)) - (export "setThrew" (func $Ia)) - (export "setTempRet0" (func $La)) - (export "getTempRet0" (func $Ma)) - (export "dynCall_ii" (func $kb)) - (export "dynCall_iiii" (func $lb)) - (export "dynCall_vi" (func $mb)) - (func $__growWasmMemory (; 12 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (memory.grow - (local.get $0) - ) - ) - (func $eb (; 13 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i32) - (local $44 i32) - (local $45 i32) - (local $46 i32) - (local $47 i32) - (local.set $18 - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 16) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.const 245) - ) - (block - (if - (i32.and - (local.tee $10 - (i32.shr_u - (local.tee $12 - (i32.load - (i32.const 1208) - ) - ) - (local.tee $2 - (i32.shr_u - (local.tee $4 - (select - (i32.const 16) - (i32.and - (i32.add - (local.get $0) - (i32.const 11) - ) - (i32.const -8) - ) - (i32.lt_u - (local.get $0) - (i32.const 11) - ) - ) - ) - (i32.const 3) - ) - ) - ) - ) - (i32.const 3) - ) - (block - (local.set $0 - (i32.load - (local.tee $2 - (i32.add - (local.tee $4 - (i32.load offset=8 - (local.tee $1 - (i32.add - (i32.shl - (local.tee $3 - (i32.add - (local.get $2) - (i32.xor - (i32.and - (local.get $10) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.eq - (local.get $0) - (local.get $1) - ) - (i32.store - (i32.const 1208) - (i32.and - (i32.xor - (i32.shl - (i32.const 1) - (local.get $3) - ) - (i32.const -1) - ) - (local.get $12) - ) - ) - (block - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $4) - (i32.load offset=12 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $0) - (local.get $1) - ) - (i32.store offset=8 - (local.get $1) - (local.get $0) - ) - ) - (call $qa) - ) - ) - ) - (i32.store offset=4 - (local.get $4) - (i32.or - (local.tee $0 - (i32.shl - (local.get $3) - (i32.const 3) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $4) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - (global.set $r - (local.get $18) - ) - (return - (local.get $2) - ) - ) - ) - (if - (i32.gt_u - (local.get $4) - (local.tee $0 - (i32.load - (i32.const 1216) - ) - ) - ) - (block - (if - (local.get $10) - (block - (local.set $1 - (i32.and - (i32.shr_u - (local.tee $3 - (i32.add - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.and - (i32.or - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.shl - (i32.const 2) - (local.get $2) - ) - ) - ) - (local.get $1) - ) - (i32.shl - (local.get $10) - (local.get $2) - ) - ) - ) - ) - (local.get $1) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $3 - (i32.and - (i32.shr_u - (local.tee $2 - (i32.shr_u - (local.get $3) - (local.get $1) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $2 - (i32.and - (i32.shr_u - (local.tee $5 - (i32.shr_u - (local.get $2) - (local.get $3) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $5 - (i32.and - (i32.shr_u - (local.tee $7 - (i32.shr_u - (local.get $5) - (local.get $2) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $1 - (i32.load - (local.tee $6 - (i32.add - (local.tee $2 - (i32.load offset=8 - (local.tee $3 - (i32.add - (i32.shl - (local.tee $5 - (i32.add - (i32.or - (local.tee $6 - (i32.and - (i32.shr_u - (local.tee $7 - (i32.shr_u - (local.get $7) - (local.get $5) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (i32.or - (local.get $5) - (i32.or - (local.get $2) - (i32.or - (local.get $1) - (local.get $3) - ) - ) - ) - ) - (i32.shr_u - (local.get $7) - (local.get $6) - ) - ) - ) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.eq - (local.get $1) - (local.get $3) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (i32.xor - (i32.shl - (i32.const 1) - (local.get $5) - ) - (i32.const -1) - ) - (local.get $12) - ) - ) - (local.set $13 - (local.get $0) - ) - ) - (block - (if - (i32.lt_u - (local.get $1) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $2) - (i32.load offset=12 - (local.get $1) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $1) - ) - (local.set $13 - (i32.load - (i32.const 1216) - ) - ) - ) - (call $qa) - ) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $7 - (i32.add - (local.get $2) - (local.get $4) - ) - ) - (i32.or - (local.tee $2 - (i32.sub - (i32.shl - (local.get $5) - (i32.const 3) - ) - (local.get $4) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $2) - (local.get $7) - ) - (local.get $2) - ) - (if - (local.get $13) - (block - (local.set $3 - (i32.load - (i32.const 1228) - ) - ) - (local.set $0 - (i32.add - (i32.shl - (local.tee $1 - (i32.shr_u - (local.get $13) - (i32.const 3) - ) - ) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 1208) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $20 - (local.get $1) - ) - (local.set $8 - (local.get $4) - ) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $20 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $8 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $20) - (local.get $3) - ) - (i32.store offset=12 - (local.get $8) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $8) - ) - (i32.store offset=12 - (local.get $3) - (local.get $0) - ) - ) - ) - (i32.store - (i32.const 1216) - (local.get $2) - ) - (i32.store - (i32.const 1228) - (local.get $7) - ) - (global.set $r - (local.get $18) - ) - (return - (local.get $6) - ) - ) - ) - (if - (local.tee $0 - (i32.load - (i32.const 1212) - ) - ) - (block - (local.set $0 - (i32.and - (i32.shr_u - (local.tee $1 - (i32.add - (i32.and - (i32.sub - (i32.const 0) - (local.get $0) - ) - (local.get $0) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $1 - (i32.and - (i32.shr_u - (local.tee $3 - (i32.shr_u - (local.get $1) - (local.get $0) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $3 - (i32.and - (i32.shr_u - (local.tee $2 - (i32.shr_u - (local.get $3) - (local.get $1) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $2 - (i32.and - (i32.shr_u - (local.tee $8 - (i32.shr_u - (local.get $2) - (local.get $3) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $7 - (i32.sub - (i32.and - (i32.load offset=4 - (local.tee $0 - (i32.load - (i32.add - (i32.shl - (i32.add - (i32.or - (local.tee $7 - (i32.and - (i32.shr_u - (local.tee $8 - (i32.shr_u - (local.get $8) - (local.get $2) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (i32.or - (local.get $2) - (i32.or - (local.get $3) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - ) - (i32.shr_u - (local.get $8) - (local.get $7) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - ) - (i32.const -8) - ) - (local.get $4) - ) - ) - (local.set $9 - (local.get $0) - ) - (loop $while-in - (block $while-out - (if - (local.tee $1 - (i32.load offset=16 - (local.get $0) - ) - ) - (local.set $0 - (local.get $1) - ) - (if - (i32.eqz - (local.tee $0 - (i32.load offset=20 - (local.get $0) - ) - ) - ) - (block - (local.set $8 - (local.get $9) - ) - (br $while-out) - ) - ) - ) - (local.set $1 - (i32.lt_u - (local.tee $3 - (i32.sub - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - (local.get $4) - ) - ) - (local.get $7) - ) - ) - (local.set $7 - (select - (local.get $3) - (local.get $7) - (local.get $1) - ) - ) - (local.set $9 - (select - (local.get $0) - (local.get $9) - (local.get $1) - ) - ) - (br $while-in) - ) - ) - (if - (i32.lt_u - (local.get $8) - (local.tee $14 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (if - (i32.ge_u - (local.get $8) - (local.tee $12 - (i32.add - (local.get $4) - (local.get $8) - ) - ) - ) - (call $qa) - ) - (local.set $10 - (i32.load offset=24 - (local.get $8) - ) - ) - (if - (i32.eq - (local.get $8) - (local.tee $0 - (i32.load offset=12 - (local.get $8) - ) - ) - ) - (block $do-once4 - (if - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $8) - (i32.const 20) - ) - ) - ) - ) - ) - (br_if $do-once4 - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $8) - (i32.const 16) - ) - ) - ) - ) - ) - ) - ) - (loop $while-in7 - (if - (local.tee $2 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $2) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in7) - ) - ) - (if - (local.tee $2 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $2) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in7) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $14) - ) - (call $qa) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $5 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $8) - ) - ) - (local.get $14) - ) - (call $qa) - ) - (if - (i32.ne - (local.get $8) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $8) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $5 - (local.get $0) - ) - ) - (call $qa) - ) - ) - ) - (if - (local.get $10) - (block $do-once8 - (if - (i32.eq - (i32.load - (local.tee $1 - (i32.add - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $8) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - (local.get $8) - ) - (block - (i32.store - (local.get $1) - (local.get $5) - ) - (if - (i32.eqz - (local.get $5) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $do-once8) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $10) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $8) - (i32.load offset=16 - (local.get $10) - ) - ) - (i32.store offset=16 - (local.get $10) - (local.get $5) - ) - (i32.store offset=20 - (local.get $10) - (local.get $5) - ) - ) - (br_if $do-once8 - (i32.eqz - (local.get $5) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $5) - (local.tee $1 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (i32.store offset=24 - (local.get $5) - (local.get $10) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $8) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $qa) - (block - (i32.store offset=16 - (local.get $5) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $5) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $8) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store offset=20 - (local.get $5) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $5) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $7) - (i32.const 16) - ) - (block - (i32.store offset=4 - (local.get $8) - (i32.or - (local.tee $0 - (i32.add - (local.get $4) - (local.get $7) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $8) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - ) - (block - (i32.store offset=4 - (local.get $8) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.get $12) - (i32.or - (local.get $7) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $7) - (local.get $12) - ) - (local.get $7) - ) - (if - (local.tee $0 - (i32.load - (i32.const 1216) - ) - ) - (block - (local.set $3 - (i32.load - (i32.const 1228) - ) - ) - (local.set $0 - (i32.add - (i32.shl - (local.tee $1 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 1208) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $21 - (local.get $1) - ) - (local.set $6 - (local.get $4) - ) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $21 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $6 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $21) - (local.get $3) - ) - (i32.store offset=12 - (local.get $6) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $6) - ) - (i32.store offset=12 - (local.get $3) - (local.get $0) - ) - ) - ) - (i32.store - (i32.const 1216) - (local.get $7) - ) - (i32.store - (i32.const 1228) - (local.get $12) - ) - ) - ) - (global.set $r - (local.get $18) - ) - (return - (i32.add - (local.get $8) - (i32.const 8) - ) - ) - ) - ) - ) - ) - ) - (local.set $4 - (if (result i32) - (i32.gt_u - (local.get $0) - (i32.const -65) - ) - (i32.const -1) - (block $do-once (result i32) - (local.set $8 - (i32.and - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 11) - ) - ) - (i32.const -8) - ) - ) - (if (result i32) - (local.tee $39 - (i32.load - (i32.const 1212) - ) - ) - (block (result i32) - (local.set $21 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $0) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $8) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $6 - (i32.shl - (local.get $0) - (local.tee $5 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $8) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $13 - (i32.and - (i32.shr_u - (i32.add - (local.tee $6 - (i32.shl - (local.get $6) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $5) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $6) - (local.get $13) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (local.set $0 - (i32.sub - (i32.const 0) - (local.get $8) - ) - ) - (if - (local.tee $6 - (i32.load - (i32.add - (i32.shl - (local.get $21) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - (block $label$break$a - (local.set $9 - (i32.shl - (local.get $8) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $21) - (i32.const 1) - ) - ) - (i32.eq - (local.get $21) - (i32.const 31) - ) - ) - ) - ) - (local.set $5 - (i32.const 0) - ) - (local.set $10 - (loop $while-in14 (result i32) - (if - (i32.lt_u - (local.tee $13 - (i32.sub - (local.tee $25 - (i32.and - (i32.load offset=4 - (local.get $6) - ) - (i32.const -8) - ) - ) - (local.get $8) - ) - ) - (local.get $0) - ) - (local.set $0 - (if (result i32) - (i32.eq - (local.get $8) - (local.get $25) - ) - (block - (local.set $4 - (local.get $13) - ) - (local.set $12 - (local.get $6) - ) - (local.set $2 - (local.get $6) - ) - (local.set $9 - (i32.const 90) - ) - (br $label$break$a) - ) - (block (result i32) - (local.set $5 - (local.get $6) - ) - (local.get $13) - ) - ) - ) - ) - (local.set $13 - (select - (local.get $20) - (local.tee $13 - (i32.load offset=20 - (local.get $6) - ) - ) - (i32.or - (i32.eqz - (local.get $13) - ) - (i32.eq - (local.tee $6 - (i32.load - (i32.add - (i32.add - (local.get $6) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $9) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - (local.get $13) - ) - ) - ) - ) - (if (result i32) - (local.tee $25 - (i32.eqz - (local.get $6) - ) - ) - (block (result i32) - (local.set $19 - (local.get $13) - ) - (local.set $22 - (local.get $5) - ) - (local.set $9 - (i32.const 86) - ) - (local.get $0) - ) - (block - (local.set $20 - (local.get $13) - ) - (local.set $9 - (i32.shl - (local.get $9) - (i32.xor - (local.get $25) - (i32.const 1) - ) - ) - ) - (br $while-in14) - ) - ) - ) - ) - ) - (block - (local.set $10 - (local.get $0) - ) - (local.set $9 - (i32.const 86) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 86) - ) - (block - (if - (i32.eqz - (i32.or - (local.get $19) - (local.get $22) - ) - ) - (block - (drop - (br_if $do-once - (local.get $8) - (i32.eqz - (local.tee $0 - (i32.and - (i32.or - (i32.sub - (i32.const 0) - (local.tee $0 - (i32.shl - (i32.const 2) - (local.get $21) - ) - ) - ) - (local.get $0) - ) - (local.get $39) - ) - ) - ) - ) - ) - (local.set $0 - (i32.and - (i32.shr_u - (local.tee $5 - (i32.add - (i32.and - (i32.sub - (i32.const 0) - (local.get $0) - ) - (local.get $0) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $5 - (i32.and - (i32.shr_u - (local.tee $6 - (i32.shr_u - (local.get $5) - (local.get $0) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $6 - (i32.and - (i32.shr_u - (local.tee $13 - (i32.shr_u - (local.get $6) - (local.get $5) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $13 - (i32.and - (i32.shr_u - (local.tee $19 - (i32.shr_u - (local.get $13) - (local.get $6) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $19 - (i32.load - (i32.add - (i32.shl - (i32.add - (i32.or - (local.tee $20 - (i32.and - (i32.shr_u - (local.tee $19 - (i32.shr_u - (local.get $19) - (local.get $13) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (i32.or - (local.get $13) - (i32.or - (local.get $6) - (i32.or - (local.get $0) - (local.get $5) - ) - ) - ) - ) - (i32.shr_u - (local.get $19) - (local.get $20) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - ) - ) - (if - (local.get $19) - (block - (local.set $4 - (local.get $10) - ) - (local.set $12 - (local.get $19) - ) - (local.set $2 - (local.get $22) - ) - (local.set $9 - (i32.const 90) - ) - ) - (block - (local.set $15 - (local.get $10) - ) - (local.set $11 - (local.get $22) - ) - ) - ) - ) - ) - (if (result i32) - (block (result i32) - (if - (i32.eq - (local.get $9) - (i32.const 90) - ) - (local.set $11 - (loop $while-in16 (result i32) - (local.set $9 - (i32.const 0) - ) - (local.set $0 - (i32.lt_u - (local.tee $5 - (i32.sub - (i32.and - (i32.load offset=4 - (local.get $12) - ) - (i32.const -8) - ) - (local.get $8) - ) - ) - (local.get $4) - ) - ) - (local.set $4 - (select - (local.get $5) - (local.get $4) - (local.get $0) - ) - ) - (local.set $2 - (select - (local.get $12) - (local.get $2) - (local.get $0) - ) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $12) - ) - ) - (block - (local.set $12 - (local.get $0) - ) - (br $while-in16) - ) - ) - (br_if $while-in16 - (local.tee $12 - (i32.load offset=20 - (local.get $12) - ) - ) - ) - (local.set $15 - (local.get $4) - ) - (local.get $2) - ) - ) - ) - (local.get $11) - ) - (if (result i32) - (i32.lt_u - (local.get $15) - (i32.sub - (i32.load - (i32.const 1216) - ) - (local.get $8) - ) - ) - (block - (if - (i32.lt_u - (local.get $11) - (local.tee $7 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (if - (i32.ge_u - (local.get $11) - (local.tee $2 - (i32.add - (local.get $8) - (local.get $11) - ) - ) - ) - (call $qa) - ) - (local.set $5 - (i32.load offset=24 - (local.get $11) - ) - ) - (if - (i32.eq - (local.get $11) - (local.tee $0 - (i32.load offset=12 - (local.get $11) - ) - ) - ) - (block $do-once17 - (if - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $11) - (i32.const 20) - ) - ) - ) - ) - ) - (br_if $do-once17 - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $11) - (i32.const 16) - ) - ) - ) - ) - ) - ) - ) - (loop $while-in20 - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in20) - ) - ) - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in20) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $7) - ) - (call $qa) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $16 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $11) - ) - ) - (local.get $7) - ) - (call $qa) - ) - (if - (i32.ne - (local.get $11) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $11) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $16 - (local.get $0) - ) - ) - (call $qa) - ) - ) - ) - (if - (local.get $5) - (block $do-once21 - (if - (i32.eq - (i32.load - (local.tee $1 - (i32.add - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $11) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - (local.get $11) - ) - (block - (i32.store - (local.get $1) - (local.get $16) - ) - (if - (i32.eqz - (local.get $16) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $do-once21) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $5) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $11) - (i32.load offset=16 - (local.get $5) - ) - ) - (i32.store offset=16 - (local.get $5) - (local.get $16) - ) - (i32.store offset=20 - (local.get $5) - (local.get $16) - ) - ) - (br_if $do-once21 - (i32.eqz - (local.get $16) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $16) - (local.tee $1 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (i32.store offset=24 - (local.get $16) - (local.get $5) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $11) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $qa) - (block - (i32.store offset=16 - (local.get $16) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $16) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $11) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store offset=20 - (local.get $16) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $16) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $15) - (i32.const 16) - ) - (block - (i32.store offset=4 - (local.get $11) - (i32.or - (local.tee $0 - (i32.add - (local.get $8) - (local.get $15) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $11) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - ) - (block $do-once25 - (i32.store offset=4 - (local.get $11) - (i32.or - (local.get $8) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $15) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $2) - (local.get $15) - ) - (local.get $15) - ) - (local.set $1 - (i32.shr_u - (local.get $15) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $15) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 1208) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $29 - (local.get $1) - ) - (local.set $14 - (local.get $4) - ) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $29 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $14 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $29) - (local.get $2) - ) - (i32.store offset=12 - (local.get $14) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $14) - ) - (i32.store offset=12 - (local.get $2) - (local.get $0) - ) - (br $do-once25) - ) - ) - (local.set $1 - (i32.add - (i32.shl - (local.tee $0 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $15) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $15) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $15) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $3 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $4) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $4) - (local.get $3) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - (i32.store offset=28 - (local.get $2) - (local.get $0) - ) - (i32.store offset=20 - (local.get $2) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $2) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $4 - (i32.load - (i32.const 1212) - ) - ) - (local.tee $3 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $3) - (local.get $4) - ) - ) - (i32.store - (local.get $1) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $1) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - (br $do-once25) - ) - ) - (local.set $3 - (i32.shl - (local.get $15) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $0) - (i32.const 1) - ) - ) - (i32.eq - (local.get $0) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load - (local.get $1) - ) - ) - (if - (i32.eq - (local.tee $9 - (loop $while-in28 (result i32) - (block $while-out27 (result i32) - (if - (i32.eq - (local.get $15) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $30 - (local.get $0) - ) - (br $while-out27 - (i32.const 148) - ) - ) - ) - (if (result i32) - (local.tee $1 - (i32.load - (local.tee $4 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $3) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $3 - (i32.shl - (local.get $3) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in28) - ) - (block (result i32) - (local.set $31 - (local.get $4) - ) - (local.set $40 - (local.get $0) - ) - (i32.const 145) - ) - ) - ) - ) - ) - (i32.const 145) - ) - (if - (i32.lt_u - (local.get $31) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $31) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $40) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 148) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $30) - ) - ) - ) - (local.tee $4 - (i32.load - (i32.const 1224) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $4) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $2) - ) - (i32.store offset=8 - (local.get $0) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $1) - ) - (i32.store offset=12 - (local.get $2) - (local.get $30) - ) - (i32.store offset=24 - (local.get $2) - (i32.const 0) - ) - ) - (call $qa) - ) - ) - ) - ) - ) - (global.set $r - (local.get $18) - ) - (return - (i32.add - (local.get $11) - (i32.const 8) - ) - ) - ) - (local.get $8) - ) - (local.get $8) - ) - ) - (local.get $8) - ) - ) - ) - ) - ) - (block $folding-inner1 - (if - (i32.ge_u - (local.tee $2 - (i32.load - (i32.const 1216) - ) - ) - (local.get $4) - ) - (block - (local.set $0 - (i32.load - (i32.const 1228) - ) - ) - (if - (i32.gt_u - (local.tee $1 - (i32.sub - (local.get $2) - (local.get $4) - ) - ) - (i32.const 15) - ) - (block - (i32.store - (i32.const 1228) - (local.tee $3 - (i32.add - (local.get $0) - (local.get $4) - ) - ) - ) - (i32.store - (i32.const 1216) - (local.get $1) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $1) - (local.get $3) - ) - (local.get $1) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - ) - (block - (i32.store - (i32.const 1216) - (i32.const 0) - ) - (i32.store - (i32.const 1228) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $2) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $1 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $1) - ) - (i32.const 1) - ) - ) - ) - ) - (br $folding-inner1) - ) - ) - (block $folding-inner0 - (br_if $folding-inner0 - (i32.gt_u - (local.tee $0 - (i32.load - (i32.const 1220) - ) - ) - (local.get $4) - ) - ) - (local.set $0 - (local.get $18) - ) - (if - (i32.eqz - (i32.load - (i32.const 1680) - ) - ) - (block - (i32.store - (i32.const 1688) - (i32.const 4096) - ) - (i32.store - (i32.const 1684) - (i32.const 4096) - ) - (i32.store - (i32.const 1692) - (i32.const -1) - ) - (i32.store - (i32.const 1696) - (i32.const -1) - ) - (i32.store - (i32.const 1700) - (i32.const 0) - ) - (i32.store - (i32.const 1652) - (i32.const 0) - ) - (i32.store - (local.get $0) - (local.tee $0 - (i32.xor - (i32.and - (local.get $0) - (i32.const -16) - ) - (i32.const 1431655768) - ) - ) - ) - (i32.store - (i32.const 1680) - (local.get $0) - ) - ) - ) - (if - (i32.le_u - (local.tee $5 - (i32.and - (local.tee $10 - (i32.add - (local.tee $0 - (i32.load - (i32.const 1688) - ) - ) - (local.tee $6 - (i32.add - (local.get $4) - (i32.const 47) - ) - ) - ) - ) - (local.tee $12 - (i32.sub - (i32.const 0) - (local.get $0) - ) - ) - ) - ) - (local.get $4) - ) - (block - (global.set $r - (local.get $18) - ) - (return - (i32.const 0) - ) - ) - ) - (if - (local.tee $0 - (i32.load - (i32.const 1648) - ) - ) - (if - (i32.or - (i32.le_u - (local.tee $8 - (i32.add - (local.get $5) - (local.tee $2 - (i32.load - (i32.const 1640) - ) - ) - ) - ) - (local.get $2) - ) - (i32.gt_u - (local.get $8) - (local.get $0) - ) - ) - (block - (global.set $r - (local.get $18) - ) - (return - (i32.const 0) - ) - ) - ) - ) - (local.set $22 - (i32.add - (local.get $4) - (i32.const 48) - ) - ) - (if - (i32.eq - (local.tee $9 - (if (result i32) - (i32.and - (i32.load - (i32.const 1652) - ) - (i32.const 4) - ) - (i32.const 188) - (block $label$break$b (result i32) - (if - (local.tee $2 - (i32.load - (i32.const 1232) - ) - ) - (block $label$break$c - (local.set $14 - (i32.const 1656) - ) - (loop $while-in32 - (block $while-out31 - (if - (i32.le_u - (local.tee $8 - (i32.load - (local.get $14) - ) - ) - (local.get $2) - ) - (if - (i32.gt_u - (i32.add - (i32.load - (local.tee $0 - (i32.add - (local.get $14) - (i32.const 4) - ) - ) - ) - (local.get $8) - ) - (local.get $2) - ) - (block - (local.set $8 - (local.get $0) - ) - (br $while-out31) - ) - ) - ) - (br_if $while-in32 - (local.tee $14 - (i32.load offset=8 - (local.get $14) - ) - ) - ) - (local.set $9 - (i32.const 171) - ) - (br $label$break$c) - ) - ) - (if - (i32.lt_u - (local.tee $2 - (i32.and - (local.get $12) - (i32.sub - (local.get $10) - (i32.load - (i32.const 1220) - ) - ) - ) - ) - (i32.const 2147483647) - ) - (block - (local.set $0 - (call $ta - (local.get $2) - ) - ) - (if - (i32.eq - (i32.add - (i32.load - (local.get $14) - ) - (i32.load - (local.get $8) - ) - ) - (local.get $0) - ) - (if - (i32.ne - (local.get $0) - (i32.const -1) - ) - (block - (local.set $3 - (local.get $0) - ) - (local.set $7 - (local.get $2) - ) - (br $label$break$b - (i32.const 191) - ) - ) - ) - (block - (local.set $24 - (local.get $0) - ) - (local.set $1 - (local.get $2) - ) - (local.set $9 - (i32.const 181) - ) - ) - ) - ) - ) - ) - (local.set $9 - (i32.const 171) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 171) - ) - (if - (i32.ne - (local.tee $2 - (call $ta - (i32.const 0) - ) - ) - (i32.const -1) - ) - (block $do-once33 - (local.set $8 - (i32.add - (local.tee $0 - (if (result i32) - (i32.and - (local.tee $0 - (local.get $2) - ) - (local.tee $10 - (i32.add - (local.tee $8 - (i32.load - (i32.const 1684) - ) - ) - (i32.const -1) - ) - ) - ) - (i32.add - (i32.sub - (local.get $5) - (local.get $0) - ) - (i32.and - (i32.add - (local.get $0) - (local.get $10) - ) - (i32.sub - (i32.const 0) - (local.get $8) - ) - ) - ) - (local.get $5) - ) - ) - (local.tee $10 - (i32.load - (i32.const 1640) - ) - ) - ) - ) - (if - (i32.and - (i32.lt_u - (local.get $0) - (i32.const 2147483647) - ) - (i32.gt_u - (local.get $0) - (local.get $4) - ) - ) - (block - (br_if $do-once33 - (select - (local.tee $12 - (i32.load - (i32.const 1648) - ) - ) - (i32.const 0) - (i32.or - (i32.le_u - (local.get $8) - (local.get $10) - ) - (i32.gt_u - (local.get $8) - (local.get $12) - ) - ) - ) - ) - (local.set $1 - (if (result i32) - (i32.eq - (local.get $2) - (local.tee $24 - (call $ta - (local.get $0) - ) - ) - ) - (block - (local.set $3 - (local.get $2) - ) - (local.set $7 - (local.get $0) - ) - (br $label$break$b - (i32.const 191) - ) - ) - (block (result i32) - (local.set $9 - (i32.const 181) - ) - (local.get $0) - ) - ) - ) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 181) - ) - (block $label$break$d - (local.set $2 - (i32.sub - (i32.const 0) - (local.get $1) - ) - ) - (if - (i32.and - (i32.and - (i32.ne - (local.get $24) - (i32.const -1) - ) - (i32.lt_u - (local.get $1) - (i32.const 2147483647) - ) - ) - (i32.gt_u - (local.get $22) - (local.get $1) - ) - ) - (if - (i32.lt_u - (local.tee $0 - (i32.and - (i32.add - (local.tee $0 - (i32.load - (i32.const 1688) - ) - ) - (i32.sub - (local.get $6) - (local.get $1) - ) - ) - (i32.sub - (i32.const 0) - (local.get $0) - ) - ) - ) - (i32.const 2147483647) - ) - (local.set $1 - (if (result i32) - (i32.eq - (call $ta - (local.get $0) - ) - (i32.const -1) - ) - (block - (drop - (call $ta - (local.get $2) - ) - ) - (br $label$break$d) - ) - (i32.add - (local.get $0) - (local.get $1) - ) - ) - ) - ) - ) - (if - (i32.ne - (local.get $24) - (i32.const -1) - ) - (block - (local.set $3 - (local.get $24) - ) - (local.set $7 - (local.get $1) - ) - (br $label$break$b - (i32.const 191) - ) - ) - ) - ) - ) - (i32.store - (i32.const 1652) - (i32.or - (i32.load - (i32.const 1652) - ) - (i32.const 4) - ) - ) - (i32.const 188) - ) - ) - ) - (i32.const 188) - ) - (if - (i32.lt_u - (local.get $5) - (i32.const 2147483647) - ) - (if - (i32.and - (i32.and - (i32.ne - (local.tee $0 - (call $ta - (local.get $5) - ) - ) - (i32.const -1) - ) - (i32.ne - (local.tee $1 - (call $ta - (i32.const 0) - ) - ) - (i32.const -1) - ) - ) - (i32.lt_u - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.gt_u - (local.tee $1 - (i32.sub - (local.get $1) - (local.get $0) - ) - ) - (i32.add - (local.get $4) - (i32.const 40) - ) - ) - (block - (local.set $7 - (local.get $1) - ) - (local.set $9 - (i32.const 191) - ) - (local.set $3 - (local.get $0) - ) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 191) - ) - (block - (i32.store - (i32.const 1640) - (local.tee $0 - (i32.add - (local.get $7) - (i32.load - (i32.const 1640) - ) - ) - ) - ) - (if - (i32.gt_u - (local.get $0) - (i32.load - (i32.const 1644) - ) - ) - (i32.store - (i32.const 1644) - (local.get $0) - ) - ) - (if - (local.tee $6 - (i32.load - (i32.const 1232) - ) - ) - (block $do-once38 - (local.set $1 - (i32.const 1656) - ) - (loop $do-in41 - (block $do-out40 - (if - (i32.eq - (i32.add - (local.tee $0 - (i32.load - (local.get $1) - ) - ) - (local.tee $5 - (i32.load - (local.tee $2 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - ) - ) - ) - (local.get $3) - ) - (block - (local.set $41 - (local.get $0) - ) - (local.set $42 - (local.get $2) - ) - (local.set $43 - (local.get $5) - ) - (local.set $44 - (local.get $1) - ) - (local.set $9 - (i32.const 201) - ) - (br $do-out40) - ) - ) - (br_if $do-in41 - (local.tee $1 - (i32.load offset=8 - (local.get $1) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 201) - ) - (if - (i32.eqz - (i32.and - (i32.load offset=12 - (local.get $44) - ) - (i32.const 8) - ) - ) - (if - (i32.and - (i32.lt_u - (local.get $6) - (local.get $3) - ) - (i32.ge_u - (local.get $6) - (local.get $41) - ) - ) - (block - (i32.store - (local.get $42) - (i32.add - (local.get $7) - (local.get $43) - ) - ) - (local.set $0 - (i32.add - (local.get $6) - (local.tee $1 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $0 - (i32.add - (local.get $6) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $0) - (i32.const 7) - ) - ) - ) - ) - ) - (local.set $1 - (i32.add - (i32.load - (i32.const 1220) - ) - (i32.sub - (local.get $7) - (local.get $1) - ) - ) - ) - (i32.store - (i32.const 1232) - (local.get $0) - ) - (i32.store - (i32.const 1220) - (local.get $1) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $0) - (local.get $1) - ) - (i32.const 40) - ) - (i32.store - (i32.const 1236) - (i32.load - (i32.const 1696) - ) - ) - (br $do-once38) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $3) - (local.tee $2 - (i32.load - (i32.const 1224) - ) - ) - ) - (block - (i32.store - (i32.const 1224) - (local.get $3) - ) - (local.set $2 - (local.get $3) - ) - ) - ) - (local.set $0 - (i32.add - (local.get $3) - (local.get $7) - ) - ) - (local.set $1 - (i32.const 1656) - ) - (loop $while-in43 - (block $while-out42 - (if - (i32.eq - (local.get $0) - (i32.load - (local.get $1) - ) - ) - (block - (local.set $45 - (local.get $1) - ) - (local.set $26 - (local.get $1) - ) - (local.set $9 - (i32.const 209) - ) - (br $while-out42) - ) - ) - (br_if $while-in43 - (local.tee $1 - (i32.load offset=8 - (local.get $1) - ) - ) - ) - (local.set $23 - (i32.const 1656) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 209) - ) - (local.set $23 - (if (result i32) - (i32.and - (i32.load offset=12 - (local.get $26) - ) - (i32.const 8) - ) - (i32.const 1656) - (block - (i32.store - (local.get $45) - (local.get $3) - ) - (i32.store offset=4 - (local.get $26) - (i32.add - (local.get $7) - (i32.load offset=4 - (local.get $26) - ) - ) - ) - (local.set $7 - (i32.add - (local.get $4) - (local.tee $10 - (i32.add - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - (local.get $3) - ) - ) - ) - ) - (local.set $8 - (i32.sub - (i32.sub - (local.tee $5 - (i32.add - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - (local.get $0) - ) - ) - (local.get $10) - ) - (local.get $4) - ) - ) - (i32.store offset=4 - (local.get $10) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - (if - (i32.eq - (local.get $5) - (local.get $6) - ) - (block - (i32.store - (i32.const 1220) - (local.tee $0 - (i32.add - (local.get $8) - (i32.load - (i32.const 1220) - ) - ) - ) - ) - (i32.store - (i32.const 1232) - (local.get $7) - ) - (i32.store offset=4 - (local.get $7) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - ) - (block $do-once44 - (if - (i32.eq - (i32.load - (i32.const 1228) - ) - (local.get $5) - ) - (block - (i32.store - (i32.const 1216) - (local.tee $0 - (i32.add - (local.get $8) - (i32.load - (i32.const 1216) - ) - ) - ) - ) - (i32.store - (i32.const 1228) - (local.get $7) - ) - (i32.store offset=4 - (local.get $7) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $7) - ) - (local.get $0) - ) - (br $do-once44) - ) - ) - (local.set $4 - (if (result i32) - (i32.eq - (i32.and - (local.tee $0 - (i32.load offset=4 - (local.get $5) - ) - ) - (i32.const 3) - ) - (i32.const 1) - ) - (block (result i32) - (local.set $12 - (i32.and - (local.get $0) - (i32.const -8) - ) - ) - (local.set $3 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (block $label$break$e - (if - (i32.lt_u - (local.get $0) - (i32.const 256) - ) - (block - (local.set $1 - (i32.load offset=12 - (local.get $5) - ) - ) - (if - (i32.ne - (local.tee $4 - (i32.load offset=8 - (local.get $5) - ) - ) - (local.tee $0 - (i32.add - (i32.shl - (local.get $3) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - ) - (block $do-once47 - (if - (i32.lt_u - (local.get $4) - (local.get $2) - ) - (call $qa) - ) - (br_if $do-once47 - (i32.eq - (local.get $5) - (i32.load offset=12 - (local.get $4) - ) - ) - ) - (call $qa) - ) - ) - (if - (i32.eq - (local.get $1) - (local.get $4) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (i32.load - (i32.const 1208) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $3) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$e) - ) - ) - (if - (i32.eq - (local.get $0) - (local.get $1) - ) - (local.set $32 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (block $do-once49 - (if - (i32.lt_u - (local.get $1) - (local.get $2) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $5) - (i32.load - (local.tee $0 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - ) - (block - (local.set $32 - (local.get $0) - ) - (br $do-once49) - ) - ) - (call $qa) - ) - ) - (i32.store offset=12 - (local.get $4) - (local.get $1) - ) - (i32.store - (local.get $32) - (local.get $4) - ) - ) - (block - (local.set $6 - (i32.load offset=24 - (local.get $5) - ) - ) - (if - (i32.eq - (local.get $5) - (local.tee $0 - (i32.load offset=12 - (local.get $5) - ) - ) - ) - (block $do-once51 - (if - (local.tee $0 - (i32.load - (local.tee $4 - (i32.add - (local.tee $1 - (i32.add - (local.get $5) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - (local.set $1 - (local.get $4) - ) - (br_if $do-once51 - (i32.eqz - (local.tee $0 - (i32.load - (local.get $1) - ) - ) - ) - ) - ) - (loop $while-in54 - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in54) - ) - ) - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in54) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $2) - ) - (call $qa) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $17 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $5) - ) - ) - (local.get $2) - ) - (call $qa) - ) - (if - (i32.ne - (local.get $5) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $5) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $17 - (local.get $0) - ) - ) - (call $qa) - ) - ) - ) - (br_if $label$break$e - (i32.eqz - (local.get $6) - ) - ) - (if - (i32.eq - (i32.load - (local.tee $1 - (i32.add - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $5) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - (local.get $5) - ) - (block $do-once55 - (i32.store - (local.get $1) - (local.get $17) - ) - (br_if $do-once55 - (local.get $17) - ) - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$e) - ) - (block - (if - (i32.lt_u - (local.get $6) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $5) - (i32.load offset=16 - (local.get $6) - ) - ) - (i32.store offset=16 - (local.get $6) - (local.get $17) - ) - (i32.store offset=20 - (local.get $6) - (local.get $17) - ) - ) - (br_if $label$break$e - (i32.eqz - (local.get $17) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $17) - (local.tee $1 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (i32.store offset=24 - (local.get $17) - (local.get $6) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $5) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $qa) - (block - (i32.store offset=16 - (local.get $17) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $17) - ) - ) - ) - ) - (br_if $label$break$e - (i32.eqz - (local.tee $0 - (i32.load offset=20 - (local.get $5) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store offset=20 - (local.get $17) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $17) - ) - ) - ) - ) - ) - ) - (local.set $5 - (i32.add - (local.get $5) - (local.get $12) - ) - ) - (i32.add - (local.get $8) - (local.get $12) - ) - ) - (local.get $8) - ) - ) - (i32.store offset=4 - (local.get $5) - (i32.and - (i32.load offset=4 - (local.get $5) - ) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $7) - (i32.or - (local.get $4) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $4) - (local.get $7) - ) - (local.get $4) - ) - (local.set $1 - (i32.shr_u - (local.get $4) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $4) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 1208) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (block $do-once59 - (if - (i32.ge_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 1224) - ) - ) - (block - (local.set $33 - (local.get $1) - ) - (local.set $27 - (local.get $4) - ) - (br $do-once59) - ) - ) - (call $qa) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $33 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $27 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $33) - (local.get $7) - ) - (i32.store offset=12 - (local.get $27) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $27) - ) - (i32.store offset=12 - (local.get $7) - (local.get $0) - ) - (br $do-once44) - ) - ) - (local.set $1 - (i32.add - (i32.shl - (local.tee $0 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $4) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $4) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $4) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $2 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $3) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $3) - (local.get $2) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - (i32.store offset=28 - (local.get $7) - (local.get $0) - ) - (i32.store offset=20 - (local.get $7) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $7) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $3 - (i32.load - (i32.const 1212) - ) - ) - (local.tee $2 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $2) - (local.get $3) - ) - ) - (i32.store - (local.get $1) - (local.get $7) - ) - (i32.store offset=24 - (local.get $7) - (local.get $1) - ) - (i32.store offset=12 - (local.get $7) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $7) - ) - (br $do-once44) - ) - ) - (local.set $14 - (i32.shl - (local.get $4) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $0) - (i32.const 1) - ) - ) - (i32.eq - (local.get $0) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load - (local.get $1) - ) - ) - (if - (i32.eq - (local.tee $9 - (loop $while-in64 (result i32) - (block $while-out63 (result i32) - (if - (i32.eq - (local.get $4) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $34 - (local.get $0) - ) - (br $while-out63 - (i32.const 279) - ) - ) - ) - (if (result i32) - (local.tee $1 - (i32.load - (local.tee $3 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $14) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $14 - (i32.shl - (local.get $14) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in64) - ) - (block (result i32) - (local.set $35 - (local.get $3) - ) - (local.set $46 - (local.get $0) - ) - (i32.const 276) - ) - ) - ) - ) - ) - (i32.const 276) - ) - (if - (i32.lt_u - (local.get $35) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $35) - (local.get $7) - ) - (i32.store offset=24 - (local.get $7) - (local.get $46) - ) - (i32.store offset=12 - (local.get $7) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $7) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 279) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $34) - ) - ) - ) - (local.tee $4 - (i32.load - (i32.const 1224) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $4) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $7) - ) - (i32.store offset=8 - (local.get $0) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $1) - ) - (i32.store offset=12 - (local.get $7) - (local.get $34) - ) - (i32.store offset=24 - (local.get $7) - (i32.const 0) - ) - ) - (call $qa) - ) - ) - ) - ) - ) - (global.set $r - (local.get $18) - ) - (return - (i32.add - (local.get $10) - (i32.const 8) - ) - ) - ) - ) - ) - ) - (loop $while-in66 - (block $while-out65 - (if - (i32.le_u - (local.tee $0 - (i32.load - (local.get $23) - ) - ) - (local.get $6) - ) - (br_if $while-out65 - (i32.gt_u - (local.tee $0 - (i32.add - (i32.load offset=4 - (local.get $23) - ) - (local.get $0) - ) - ) - (local.get $6) - ) - ) - ) - (local.set $23 - (i32.load offset=8 - (local.get $23) - ) - ) - (br $while-in66) - ) - ) - (i32.store - (i32.const 1232) - (local.tee $1 - (i32.add - (local.get $3) - (local.tee $2 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - ) - ) - ) - ) - (i32.store - (i32.const 1220) - (local.tee $2 - (i32.sub - (i32.add - (local.get $7) - (i32.const -40) - ) - (local.get $2) - ) - ) - ) - (i32.store offset=4 - (local.get $1) - (i32.or - (local.get $2) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $1) - (local.get $2) - ) - (i32.const 40) - ) - (i32.store - (i32.const 1236) - (i32.load - (i32.const 1696) - ) - ) - (i32.store offset=4 - (local.tee $2 - (select - (local.get $6) - (local.tee $1 - (i32.add - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $2 - (i32.add - (local.tee $1 - (i32.add - (local.get $0) - (i32.const -47) - ) - ) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $2) - (i32.const 7) - ) - ) - (local.get $1) - ) - ) - (i32.lt_u - (local.get $1) - (local.tee $8 - (i32.add - (local.get $6) - (i32.const 16) - ) - ) - ) - ) - ) - (i32.const 27) - ) - (i32.store offset=8 - (local.get $2) - (i32.load - (i32.const 1656) - ) - ) - (i32.store offset=12 - (local.get $2) - (i32.load - (i32.const 1660) - ) - ) - (i32.store offset=16 - (local.get $2) - (i32.load - (i32.const 1664) - ) - ) - (i32.store offset=20 - (local.get $2) - (i32.load - (i32.const 1668) - ) - ) - (i32.store - (i32.const 1656) - (local.get $3) - ) - (i32.store - (i32.const 1660) - (local.get $7) - ) - (i32.store - (i32.const 1668) - (i32.const 0) - ) - (i32.store - (i32.const 1664) - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - (local.set $1 - (i32.add - (local.get $2) - (i32.const 24) - ) - ) - (loop $do-in68 - (i32.store - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.const 7) - ) - (br_if $do-in68 - (i32.lt_u - (i32.add - (local.get $1) - (i32.const 4) - ) - (local.get $0) - ) - ) - ) - (if - (i32.ne - (local.get $2) - (local.get $6) - ) - (block - (i32.store offset=4 - (local.get $2) - (i32.and - (i32.load offset=4 - (local.get $2) - ) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $6) - (i32.or - (local.tee $5 - (i32.sub - (local.get $2) - (local.get $6) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (local.get $2) - (local.get $5) - ) - (local.set $1 - (i32.shr_u - (local.get $5) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $5) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - (if - (i32.and - (local.tee $3 - (i32.load - (i32.const 1208) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $3 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $36 - (local.get $1) - ) - (local.set $28 - (local.get $3) - ) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $1) - (local.get $3) - ) - ) - (local.set $36 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $28 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $36) - (local.get $6) - ) - (i32.store offset=12 - (local.get $28) - (local.get $6) - ) - (i32.store offset=8 - (local.get $6) - (local.get $28) - ) - (i32.store offset=12 - (local.get $6) - (local.get $0) - ) - (br $do-once38) - ) - ) - (local.set $3 - (i32.add - (i32.shl - (local.tee $0 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $5) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $5) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $5) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $2 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $3) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $3) - (local.get $2) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - (i32.store offset=28 - (local.get $6) - (local.get $0) - ) - (i32.store offset=20 - (local.get $6) - (i32.const 0) - ) - (i32.store - (local.get $8) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $1 - (i32.load - (i32.const 1212) - ) - ) - (local.tee $2 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $1) - (local.get $2) - ) - ) - (i32.store - (local.get $3) - (local.get $6) - ) - (i32.store offset=24 - (local.get $6) - (local.get $3) - ) - (i32.store offset=12 - (local.get $6) - (local.get $6) - ) - (i32.store offset=8 - (local.get $6) - (local.get $6) - ) - (br $do-once38) - ) - ) - (local.set $1 - (i32.shl - (local.get $5) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $0) - (i32.const 1) - ) - ) - (i32.eq - (local.get $0) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load - (local.get $3) - ) - ) - (if - (i32.eq - (local.tee $9 - (loop $while-in70 (result i32) - (block $while-out69 (result i32) - (if - (i32.eq - (local.get $5) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $37 - (local.get $0) - ) - (br $while-out69 - (i32.const 305) - ) - ) - ) - (if (result i32) - (local.tee $3 - (i32.load - (local.tee $2 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $1) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $1 - (i32.shl - (local.get $1) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $3) - ) - (br $while-in70) - ) - (block (result i32) - (local.set $38 - (local.get $2) - ) - (local.set $47 - (local.get $0) - ) - (i32.const 302) - ) - ) - ) - ) - ) - (i32.const 302) - ) - (if - (i32.lt_u - (local.get $38) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $38) - (local.get $6) - ) - (i32.store offset=24 - (local.get $6) - (local.get $47) - ) - (i32.store offset=12 - (local.get $6) - (local.get $6) - ) - (i32.store offset=8 - (local.get $6) - (local.get $6) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 305) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $37) - ) - ) - ) - (local.tee $3 - (i32.load - (i32.const 1224) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $3) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $6) - ) - (i32.store offset=8 - (local.get $0) - (local.get $6) - ) - (i32.store offset=8 - (local.get $6) - (local.get $1) - ) - (i32.store offset=12 - (local.get $6) - (local.get $37) - ) - (i32.store offset=24 - (local.get $6) - (i32.const 0) - ) - ) - (call $qa) - ) - ) - ) - ) - ) - ) - (block - (if - (i32.or - (i32.eqz - (local.tee $0 - (i32.load - (i32.const 1224) - ) - ) - ) - (i32.lt_u - (local.get $3) - (local.get $0) - ) - ) - (i32.store - (i32.const 1224) - (local.get $3) - ) - ) - (i32.store - (i32.const 1656) - (local.get $3) - ) - (i32.store - (i32.const 1660) - (local.get $7) - ) - (i32.store - (i32.const 1668) - (i32.const 0) - ) - (i32.store - (i32.const 1244) - (i32.load - (i32.const 1680) - ) - ) - (i32.store - (i32.const 1240) - (i32.const -1) - ) - (local.set $1 - (i32.const 0) - ) - (loop $do-in - (i32.store offset=12 - (local.tee $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $0) - ) - (br_if $do-in - (i32.ne - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.const 32) - ) - ) - ) - (i32.store - (i32.const 1232) - (local.tee $0 - (i32.add - (local.get $3) - (local.tee $1 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $0 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $0) - (i32.const 7) - ) - ) - ) - ) - ) - ) - (i32.store - (i32.const 1220) - (local.tee $1 - (i32.sub - (i32.add - (local.get $7) - (i32.const -40) - ) - (local.get $1) - ) - ) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $0) - (local.get $1) - ) - (i32.const 40) - ) - (i32.store - (i32.const 1236) - (i32.load - (i32.const 1696) - ) - ) - ) - ) - (br_if $folding-inner0 - (i32.gt_u - (local.tee $0 - (i32.load - (i32.const 1220) - ) - ) - (local.get $4) - ) - ) - ) - ) - (i32.store - (call $Qa) - (i32.const 12) - ) - (global.set $r - (local.get $18) - ) - (return - (i32.const 0) - ) - ) - (i32.store - (i32.const 1220) - (local.tee $1 - (i32.sub - (local.get $0) - (local.get $4) - ) - ) - ) - (i32.store - (i32.const 1232) - (local.tee $3 - (i32.add - (local.get $4) - (local.tee $0 - (i32.load - (i32.const 1232) - ) - ) - ) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - ) - (global.set $r - (local.get $18) - ) - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (func $fb (; 14 ;) (; has Stack IR ;) (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (if - (i32.eqz - (local.get $0) - ) - (return) - ) - (if - (i32.lt_u - (local.tee $3 - (i32.add - (local.get $0) - (i32.const -8) - ) - ) - (local.tee $13 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.tee $10 - (i32.and - (local.tee $0 - (i32.load - (i32.add - (local.get $0) - (i32.const -4) - ) - ) - ) - (i32.const 3) - ) - ) - (i32.const 1) - ) - (call $qa) - ) - (local.set $6 - (i32.add - (local.get $3) - (local.tee $4 - (i32.and - (local.get $0) - (i32.const -8) - ) - ) - ) - ) - (if - (i32.and - (local.get $0) - (i32.const 1) - ) - (block - (local.set $2 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - ) - (block $do-once - (local.set $9 - (i32.load - (local.get $3) - ) - ) - (if - (i32.eqz - (local.get $10) - ) - (return) - ) - (if - (i32.lt_u - (local.tee $0 - (i32.sub - (local.get $3) - (local.get $9) - ) - ) - (local.get $13) - ) - (call $qa) - ) - (local.set $3 - (i32.add - (local.get $4) - (local.get $9) - ) - ) - (if - (i32.eq - (i32.load - (i32.const 1228) - ) - (local.get $0) - ) - (block - (if - (i32.ne - (i32.and - (local.tee $1 - (i32.load offset=4 - (local.get $6) - ) - ) - (i32.const 3) - ) - (i32.const 3) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - (i32.store - (i32.const 1216) - (local.get $3) - ) - (i32.store offset=4 - (local.get $6) - (i32.and - (local.get $1) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $3) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $3) - ) - (local.get $3) - ) - (return) - ) - ) - (local.set $10 - (i32.shr_u - (local.get $9) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $9) - (i32.const 256) - ) - (block - (local.set $2 - (i32.load offset=12 - (local.get $0) - ) - ) - (if - (i32.ne - (local.tee $4 - (i32.load offset=8 - (local.get $0) - ) - ) - (local.tee $1 - (i32.add - (i32.shl - (local.get $10) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $4) - (local.get $13) - ) - (call $qa) - ) - (if - (i32.ne - (local.get $0) - (i32.load offset=12 - (local.get $4) - ) - ) - (call $qa) - ) - ) - ) - (if - (i32.eq - (local.get $2) - (local.get $4) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (i32.load - (i32.const 1208) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $10) - ) - (i32.const -1) - ) - ) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - (if - (i32.eq - (local.get $1) - (local.get $2) - ) - (local.set $5 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $2) - (local.get $13) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $0) - (i32.load - (local.tee $1 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - ) - ) - (local.set $5 - (local.get $1) - ) - (call $qa) - ) - ) - ) - (i32.store offset=12 - (local.get $4) - (local.get $2) - ) - (i32.store - (local.get $5) - (local.get $4) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - (local.set $12 - (i32.load offset=24 - (local.get $0) - ) - ) - (if - (i32.eq - (local.get $0) - (local.tee $4 - (i32.load offset=12 - (local.get $0) - ) - ) - ) - (block $do-once0 - (if - (local.tee $4 - (i32.load - (local.tee $9 - (i32.add - (local.tee $5 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - (local.set $5 - (local.get $9) - ) - (br_if $do-once0 - (i32.eqz - (local.tee $4 - (i32.load - (local.get $5) - ) - ) - ) - ) - ) - (loop $while-in - (if - (local.tee $10 - (i32.load - (local.tee $9 - (i32.add - (local.get $4) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $10) - ) - (local.set $5 - (local.get $9) - ) - (br $while-in) - ) - ) - (if - (local.tee $10 - (i32.load - (local.tee $9 - (i32.add - (local.get $4) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $10) - ) - (local.set $5 - (local.get $9) - ) - (br $while-in) - ) - ) - ) - (if - (i32.lt_u - (local.get $5) - (local.get $13) - ) - (call $qa) - (block - (i32.store - (local.get $5) - (i32.const 0) - ) - (local.set $7 - (local.get $4) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $5 - (i32.load offset=8 - (local.get $0) - ) - ) - (local.get $13) - ) - (call $qa) - ) - (if - (i32.ne - (local.get $0) - (i32.load offset=12 - (local.get $5) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $0) - (i32.load offset=8 - (local.get $4) - ) - ) - (block - (i32.store offset=12 - (local.get $5) - (local.get $4) - ) - (i32.store offset=8 - (local.get $4) - (local.get $5) - ) - (local.set $7 - (local.get $4) - ) - ) - (call $qa) - ) - ) - ) - (if - (local.get $12) - (block - (if - (i32.eq - (i32.load - (local.tee $5 - (i32.add - (i32.shl - (local.tee $4 - (i32.load offset=28 - (local.get $0) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - (local.get $0) - ) - (block - (i32.store - (local.get $5) - (local.get $7) - ) - (if - (i32.eqz - (local.get $7) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $12) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $0) - (i32.load offset=16 - (local.get $12) - ) - ) - (i32.store offset=16 - (local.get $12) - (local.get $7) - ) - (i32.store offset=20 - (local.get $12) - (local.get $7) - ) - ) - (if - (i32.eqz - (local.get $7) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $7) - (local.tee $5 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (i32.store offset=24 - (local.get $7) - (local.get $12) - ) - (if - (local.tee $4 - (i32.load offset=16 - (local.get $0) - ) - ) - (if - (i32.lt_u - (local.get $4) - (local.get $5) - ) - (call $qa) - (block - (i32.store offset=16 - (local.get $7) - (local.get $4) - ) - (i32.store offset=24 - (local.get $4) - (local.get $7) - ) - ) - ) - ) - (if - (local.tee $4 - (i32.load offset=20 - (local.get $0) - ) - ) - (if - (i32.lt_u - (local.get $4) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store offset=20 - (local.get $7) - (local.get $4) - ) - (i32.store offset=24 - (local.get $4) - (local.get $7) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - ) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - ) - ) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - ) - ) - ) - ) - (if - (i32.ge_u - (local.get $2) - (local.get $6) - ) - (call $qa) - ) - (if - (i32.eqz - (i32.and - (local.tee $0 - (i32.load offset=4 - (local.get $6) - ) - ) - (i32.const 1) - ) - ) - (call $qa) - ) - (if - (i32.and - (local.get $0) - (i32.const 2) - ) - (block - (i32.store offset=4 - (local.get $6) - (i32.and - (local.get $0) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $1) - (local.get $2) - ) - (local.get $1) - ) - ) - (block - (if - (i32.eq - (i32.load - (i32.const 1232) - ) - (local.get $6) - ) - (block - (i32.store - (i32.const 1220) - (local.tee $0 - (i32.add - (local.get $1) - (i32.load - (i32.const 1220) - ) - ) - ) - ) - (i32.store - (i32.const 1232) - (local.get $2) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (if - (i32.ne - (i32.load - (i32.const 1228) - ) - (local.get $2) - ) - (return) - ) - (i32.store - (i32.const 1228) - (i32.const 0) - ) - (i32.store - (i32.const 1216) - (i32.const 0) - ) - (return) - ) - ) - (if - (i32.eq - (i32.load - (i32.const 1228) - ) - (local.get $6) - ) - (block - (i32.store - (i32.const 1216) - (local.tee $0 - (i32.add - (local.get $1) - (i32.load - (i32.const 1216) - ) - ) - ) - ) - (i32.store - (i32.const 1228) - (local.get $2) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $2) - ) - (local.get $0) - ) - (return) - ) - ) - (local.set $5 - (i32.add - (local.get $1) - (i32.and - (local.get $0) - (i32.const -8) - ) - ) - ) - (local.set $4 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (block $do-once4 - (if - (i32.lt_u - (local.get $0) - (i32.const 256) - ) - (block - (local.set $1 - (i32.load offset=12 - (local.get $6) - ) - ) - (if - (i32.ne - (local.tee $3 - (i32.load offset=8 - (local.get $6) - ) - ) - (local.tee $0 - (i32.add - (i32.shl - (local.get $4) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $3) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.ne - (local.get $6) - (i32.load offset=12 - (local.get $3) - ) - ) - (call $qa) - ) - ) - ) - (if - (i32.eq - (local.get $1) - (local.get $3) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (i32.load - (i32.const 1208) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - (if - (i32.eq - (local.get $0) - (local.get $1) - ) - (local.set $14 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $1) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $6) - (i32.load - (local.tee $0 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - ) - (local.set $14 - (local.get $0) - ) - (call $qa) - ) - ) - ) - (i32.store offset=12 - (local.get $3) - (local.get $1) - ) - (i32.store - (local.get $14) - (local.get $3) - ) - ) - (block - (local.set $7 - (i32.load offset=24 - (local.get $6) - ) - ) - (if - (i32.eq - (local.get $6) - (local.tee $0 - (i32.load offset=12 - (local.get $6) - ) - ) - ) - (block $do-once6 - (if - (local.tee $0 - (i32.load - (local.tee $3 - (i32.add - (local.tee $1 - (i32.add - (local.get $6) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - (local.set $1 - (local.get $3) - ) - (br_if $do-once6 - (i32.eqz - (local.tee $0 - (i32.load - (local.get $1) - ) - ) - ) - ) - ) - (loop $while-in9 - (if - (local.tee $4 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $4) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in9) - ) - ) - (if - (local.tee $4 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $4) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in9) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $8 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $6) - ) - ) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.ne - (local.get $6) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $6) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $8 - (local.get $0) - ) - ) - (call $qa) - ) - ) - ) - (if - (local.get $7) - (block - (if - (i32.eq - (i32.load - (local.tee $1 - (i32.add - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $6) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - (local.get $6) - ) - (block - (i32.store - (local.get $1) - (local.get $8) - ) - (if - (i32.eqz - (local.get $8) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $7) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $6) - (i32.load offset=16 - (local.get $7) - ) - ) - (i32.store offset=16 - (local.get $7) - (local.get $8) - ) - (i32.store offset=20 - (local.get $7) - (local.get $8) - ) - ) - (br_if $do-once4 - (i32.eqz - (local.get $8) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $8) - (local.tee $1 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (i32.store offset=24 - (local.get $8) - (local.get $7) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $6) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $qa) - (block - (i32.store offset=16 - (local.get $8) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $8) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $6) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store offset=20 - (local.get $8) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $8) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $5) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $2) - (local.get $5) - ) - (local.get $5) - ) - (local.set $1 - (if (result i32) - (i32.eq - (i32.load - (i32.const 1228) - ) - (local.get $2) - ) - (block - (i32.store - (i32.const 1216) - (local.get $5) - ) - (return) - ) - (local.get $5) - ) - ) - ) - ) - (local.set $3 - (i32.shr_u - (local.get $1) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $1) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $3) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - (if - (i32.and - (local.tee $1 - (i32.load - (i32.const 1208) - ) - ) - (local.tee $3 - (i32.shl - (i32.const 1) - (local.get $3) - ) - ) - ) - (if - (i32.lt_u - (local.tee $3 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $15 - (local.get $1) - ) - (local.set $11 - (local.get $3) - ) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $1) - (local.get $3) - ) - ) - (local.set $15 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $11 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $15) - (local.get $2) - ) - (i32.store offset=12 - (local.get $11) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $11) - ) - (i32.store offset=12 - (local.get $2) - (local.get $0) - ) - (return) - ) - ) - (local.set $3 - (i32.add - (i32.shl - (local.tee $0 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $1) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $1) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $0) - (local.tee $3 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $1) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $5 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $4) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $3) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $4) - (local.get $5) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - (i32.store offset=28 - (local.get $2) - (local.get $0) - ) - (i32.store offset=20 - (local.get $2) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $2) - (i32.const 0) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 1212) - ) - ) - (local.tee $5 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - (block - (local.set $11 - (i32.shl - (local.get $1) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $0) - (i32.const 1) - ) - ) - (i32.eq - (local.get $0) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load - (local.get $3) - ) - ) - (if - (i32.eq - (local.tee $0 - (loop $while-in15 (result i32) - (block $while-out14 (result i32) - (if - (i32.eq - (local.get $1) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $16 - (local.get $0) - ) - (br $while-out14 - (i32.const 130) - ) - ) - ) - (if (result i32) - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $11) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $11 - (i32.shl - (local.get $11) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $3) - ) - (br $while-in15) - ) - (block (result i32) - (local.set $17 - (local.get $4) - ) - (local.set $18 - (local.get $0) - ) - (i32.const 127) - ) - ) - ) - ) - ) - (i32.const 127) - ) - (if - (i32.lt_u - (local.get $17) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $17) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $18) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - ) - ) - (if - (i32.eq - (local.get $0) - (i32.const 130) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $16) - ) - ) - ) - (local.tee $3 - (i32.load - (i32.const 1224) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $3) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $2) - ) - (i32.store offset=8 - (local.get $0) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $1) - ) - (i32.store offset=12 - (local.get $2) - (local.get $16) - ) - (i32.store offset=24 - (local.get $2) - (i32.const 0) - ) - ) - (call $qa) - ) - ) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $4) - (local.get $5) - ) - ) - (i32.store - (local.get $3) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $3) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - ) - ) - (i32.store - (i32.const 1240) - (local.tee $0 - (i32.add - (i32.load - (i32.const 1240) - ) - (i32.const -1) - ) - ) - ) - (local.set $0 - (if (result i32) - (local.get $0) - (return) - (i32.const 1664) - ) - ) - (loop $while-in17 - (if - (local.tee $0 - (i32.load - (local.get $0) - ) - ) - (block - (local.set $0 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (br $while-in17) - ) - ) - ) - (i32.store - (i32.const 1240) - (i32.const -1) - ) - ) - (func $Ra (; 15 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local.set $9 - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 48) - ) - ) - (local.set $7 - (i32.add - (local.get $9) - (i32.const 16) - ) - ) - (i32.store - (local.tee $4 - (i32.add - (local.tee $8 - (local.get $9) - ) - (i32.const 32) - ) - ) - (local.tee $3 - (i32.load offset=28 - (local.get $0) - ) - ) - ) - (i32.store offset=4 - (local.get $4) - (local.tee $3 - (i32.sub - (i32.load offset=20 - (local.get $0) - ) - (local.get $3) - ) - ) - ) - (i32.store offset=8 - (local.get $4) - (local.get $1) - ) - (i32.store offset=12 - (local.get $4) - (local.get $2) - ) - (local.set $1 - (local.get $4) - ) - (local.set $4 - (i32.const 2) - ) - (local.set $10 - (i32.add - (local.get $2) - (local.get $3) - ) - ) - (loop $while-in - (block $while-out - (if - (i32.load - (i32.const 1160) - ) - (block - (call $ra - (i32.const 1) - (local.get $0) - ) - (i32.store - (local.get $8) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $8) - (local.get $1) - ) - (i32.store offset=8 - (local.get $8) - (local.get $4) - ) - (local.set $3 - (call $Pa - (call $ya - (i32.const 146) - (local.get $8) - ) - ) - ) - (call $oa - (i32.const 0) - ) - ) - (block - (i32.store - (local.get $7) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $7) - (local.get $1) - ) - (i32.store offset=8 - (local.get $7) - (local.get $4) - ) - (local.set $3 - (call $Pa - (call $ya - (i32.const 146) - (local.get $7) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $3) - (local.get $10) - ) - (block - (local.set $1 - (i32.const 6) - ) - (br $while-out) - ) - ) - (if - (i32.lt_s - (local.get $3) - (i32.const 0) - ) - (block - (local.set $12 - (local.get $1) - ) - (local.set $13 - (local.get $4) - ) - (local.set $1 - (i32.const 8) - ) - ) - (block - (local.set $5 - (if (result i32) - (i32.gt_u - (local.get $3) - (local.tee $5 - (i32.load offset=4 - (local.get $1) - ) - ) - ) - (block (result i32) - (i32.store offset=28 - (local.get $0) - (local.tee $6 - (i32.load offset=44 - (local.get $0) - ) - ) - ) - (i32.store offset=20 - (local.get $0) - (local.get $6) - ) - (local.set $6 - (i32.load offset=12 - (local.get $1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (local.set $4 - (i32.add - (local.get $4) - (i32.const -1) - ) - ) - (i32.sub - (local.get $3) - (local.get $5) - ) - ) - (block (result i32) - (if - (i32.eq - (local.get $4) - (i32.const 2) - ) - (block - (i32.store offset=28 - (local.get $0) - (i32.add - (local.get $3) - (i32.load offset=28 - (local.get $0) - ) - ) - ) - (local.set $6 - (local.get $5) - ) - (local.set $4 - (i32.const 2) - ) - ) - (local.set $6 - (local.get $5) - ) - ) - (local.get $3) - ) - ) - ) - (i32.store - (local.get $1) - (i32.add - (local.get $5) - (i32.load - (local.get $1) - ) - ) - ) - (i32.store offset=4 - (local.get $1) - (i32.sub - (local.get $6) - (local.get $5) - ) - ) - (local.set $10 - (i32.sub - (local.get $10) - (local.get $3) - ) - ) - (br $while-in) - ) - ) - ) - ) - (local.set $11 - (if (result i32) - (i32.eq - (local.get $1) - (i32.const 6) - ) - (block (result i32) - (i32.store offset=16 - (local.get $0) - (i32.add - (local.tee $1 - (i32.load offset=44 - (local.get $0) - ) - ) - (i32.load offset=48 - (local.get $0) - ) - ) - ) - (i32.store offset=28 - (local.get $0) - (local.get $1) - ) - (i32.store offset=20 - (local.get $0) - (local.get $1) - ) - (local.get $2) - ) - (if (result i32) - (i32.eq - (local.get $1) - (i32.const 8) - ) - (block (result i32) - (i32.store offset=16 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=20 - (local.get $0) - (i32.const 0) - ) - (i32.store - (local.get $0) - (i32.or - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (if (result i32) - (i32.eq - (local.get $13) - (i32.const 2) - ) - (i32.const 0) - (i32.sub - (local.get $2) - (i32.load offset=4 - (local.get $12) - ) - ) - ) - ) - (local.get $11) - ) - ) - ) - (global.set $r - (local.get $9) - ) - (local.get $11) - ) - (func $Wa (; 16 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local.set $5 - (i32.const 1144) - ) - (local.set $3 - (if (result i32) - (local.tee $4 - (i32.load offset=16 - (local.get $1) - ) - ) - (block (result i32) - (local.set $6 - (i32.const 5) - ) - (local.get $4) - ) - (if (result i32) - (call $Xa - (local.get $1) - ) - (local.get $3) - (block (result i32) - (local.set $6 - (i32.const 5) - ) - (i32.load offset=16 - (local.get $1) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $6) - (i32.const 5) - ) - (block $label$break$a - (if - (i32.lt_u - (i32.sub - (local.get $3) - (local.tee $3 - (i32.load offset=20 - (local.get $1) - ) - ) - ) - (local.get $0) - ) - (block - (local.set $2 - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $1) - (i32.const 1144) - (local.get $0) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $1) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - (br $label$break$a) - ) - ) - (if - (i32.gt_s - (i32.load8_s offset=75 - (local.get $1) - ) - (i32.const -1) - ) - (block $label$break$b - (local.set $2 - (local.get $0) - ) - (loop $while-in - (if - (i32.eqz - (local.get $2) - ) - (block - (local.set $2 - (i32.const 0) - ) - (br $label$break$b) - ) - ) - (if - (i32.ne - (i32.load8_s - (i32.add - (local.tee $4 - (i32.add - (local.get $2) - (i32.const -1) - ) - ) - (i32.const 1144) - ) - ) - (i32.const 10) - ) - (block - (local.set $2 - (local.get $4) - ) - (br $while-in) - ) - ) - ) - (br_if $label$break$a - (i32.lt_u - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $1) - (i32.const 1144) - (local.get $2) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $1) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - (local.get $2) - ) - ) - (local.set $0 - (i32.sub - (local.get $0) - (local.get $2) - ) - ) - (local.set $5 - (i32.add - (local.get $2) - (i32.const 1144) - ) - ) - (local.set $3 - (i32.load offset=20 - (local.get $1) - ) - ) - ) - ) - (drop - (call $jb - (local.get $3) - (local.get $5) - (local.get $0) - ) - ) - (i32.store offset=20 - (local.get $1) - (i32.add - (local.get $0) - (i32.load offset=20 - (local.get $1) - ) - ) - ) - (local.set $2 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - ) - ) - (local.get $2) - ) - (func $Za (; 17 ;) (; has Stack IR ;) (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local.set $0 - (i32.const 1144) - ) - (block - (local.set $4 - (i32.const 1144) - ) - (local.set $1 - (i32.const 4) - ) - ) - (i32.sub - (if (result i32) - (i32.eq - (local.get $1) - (i32.const 4) - ) - (block (result i32) - (local.set $1 - (local.get $4) - ) - (local.set $0 - (loop $while-in1 (result i32) - (if (result i32) - (i32.and - (i32.add - (local.tee $2 - (i32.load - (local.get $1) - ) - ) - (i32.const -16843009) - ) - (i32.xor - (i32.and - (local.get $2) - (i32.const -2139062144) - ) - (i32.const -2139062144) - ) - ) - (local.get $1) - (block - (local.set $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (if - (i32.and - (local.get $2) - (i32.const 255) - ) - (loop $while-in3 - (br_if $while-in3 - (i32.load8_s - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.get $0) - ) - (local.get $2) - ) - (i32.const 1144) - ) - ) - (func $_a (; 18 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (if - (local.get $0) - (local.set $0 - (block $do-once (result i32) - (if - (i32.le_s - (i32.load offset=76 - (local.get $0) - ) - (i32.const -1) - ) - (br $do-once - (call $$a - (local.get $0) - ) - ) - ) - (call $$a - (local.get $0) - ) - ) - ) - (block - (local.set $0 - (if (result i32) - (i32.load - (i32.const 1140) - ) - (call $_a - (i32.load - (i32.const 1140) - ) - ) - (i32.const 0) - ) - ) - (call $pa - (i32.const 1188) - ) - (if - (local.tee $1 - (i32.load - (i32.const 1184) - ) - ) - (loop $while-in - (drop - (i32.load offset=76 - (local.get $1) - ) - ) - (if - (i32.gt_u - (i32.load offset=20 - (local.get $1) - ) - (i32.load offset=28 - (local.get $1) - ) - ) - (local.set $0 - (i32.or - (call $$a - (local.get $1) - ) - (local.get $0) - ) - ) - ) - (br_if $while-in - (local.tee $1 - (i32.load offset=56 - (local.get $1) - ) - ) - ) - ) - ) - (call $xa - (i32.const 1188) - ) - ) - ) - (local.get $0) - ) - (func $ab (; 19 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local.set $3 - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 16) - ) - ) - (i32.store8 - (local.tee $4 - (local.get $3) - ) - (i32.const 10) - ) - (if - (local.tee $1 - (i32.load offset=16 - (local.get $0) - ) - ) - (block - (local.set $5 - (local.get $1) - ) - (local.set $6 - (i32.const 4) - ) - ) - (if - (call $Xa - (local.get $0) - ) - (local.set $2 - (i32.const -1) - ) - (block - (local.set $5 - (i32.load offset=16 - (local.get $0) - ) - ) - (local.set $6 - (i32.const 4) - ) - ) - ) - ) - (if - (i32.eq - (local.get $6) - (i32.const 4) - ) - (block $do-once - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=20 - (local.get $0) - ) - ) - (local.get $5) - ) - (if - (i32.ne - (local.tee $2 - (i32.const 10) - ) - (i32.load8_s offset=75 - (local.get $0) - ) - ) - (block - (i32.store offset=20 - (local.get $0) - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $1) - (i32.const 10) - ) - (br $do-once) - ) - ) - ) - (local.set $2 - (if (result i32) - (i32.eq - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (local.get $4) - (i32.const 1) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $0) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - (i32.const 1) - ) - (i32.load8_u - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - ) - (global.set $r - (local.get $3) - ) - (local.get $2) - ) - (func $$a (; 20 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (if - (i32.gt_u - (i32.load offset=20 - (local.get $0) - ) - (i32.load offset=28 - (local.get $0) - ) - ) - (block - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $0) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - (if - (i32.load offset=20 - (local.get $0) - ) - (local.set $1 - (i32.const 3) - ) - (local.set $2 - (i32.const -1) - ) - ) - ) - (local.set $1 - (i32.const 3) - ) - ) - (if (result i32) - (i32.eq - (local.get $1) - (i32.const 3) - ) - (block (result i32) - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=4 - (local.get $0) - ) - ) - (local.tee $2 - (i32.load offset=8 - (local.get $0) - ) - ) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (i32.sub - (local.get $1) - (local.get $2) - ) - (i32.const 1) - (i32.add - (i32.and - (i32.load offset=40 - (local.get $0) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.store offset=16 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=20 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=8 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.const 0) - ) - (i32.const 0) - ) - (local.get $2) - ) - ) - (func $jb (; 21 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (if - (i32.ge_s - (local.get $2) - (i32.const 4096) - ) - (return - (call $va - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - ) - (local.set $3 - (local.get $0) - ) - (if - (i32.eq - (i32.and - (local.get $0) - (i32.const 3) - ) - (i32.and - (local.get $1) - (i32.const 3) - ) - ) - (block - (loop $while-in - (if - (i32.and - (local.get $0) - (i32.const 3) - ) - (block - (if - (i32.eqz - (local.get $2) - ) - (return - (local.get $3) - ) - ) - (i32.store8 - (local.get $0) - (i32.load8_s - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (loop $while-in1 - (if - (i32.ge_s - (local.get $2) - (i32.const 4) - ) - (block - (i32.store - (local.get $0) - (i32.load - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 4) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - ) - (loop $while-in3 - (if - (i32.gt_s - (local.get $2) - (i32.const 0) - ) - (block - (i32.store8 - (local.get $0) - (i32.load8_s - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (local.get $3) - ) - (func $gb (; 22 ;) (; has Stack IR ;) - (nop) - ) - (func $hb (; 23 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local.set $4 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - (if - (i32.ge_s - (local.get $2) - (i32.const 20) - ) - (block - (local.set $1 - (i32.and - (local.get $1) - (i32.const 255) - ) - ) - (if - (local.tee $3 - (i32.and - (local.get $0) - (i32.const 3) - ) - ) - (block - (local.set $3 - (i32.sub - (i32.add - (local.get $0) - (i32.const 4) - ) - (local.get $3) - ) - ) - (loop $while-in - (if - (i32.lt_s - (local.get $0) - (local.get $3) - ) - (block - (i32.store8 - (local.get $0) - (local.get $1) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - ) - (local.set $3 - (i32.or - (i32.or - (i32.or - (i32.shl - (local.get $1) - (i32.const 8) - ) - (local.get $1) - ) - (i32.shl - (local.get $1) - (i32.const 16) - ) - ) - (i32.shl - (local.get $1) - (i32.const 24) - ) - ) - ) - (local.set $5 - (i32.and - (local.get $4) - (i32.const -4) - ) - ) - (loop $while-in1 - (if - (i32.lt_s - (local.get $0) - (local.get $5) - ) - (block - (i32.store - (local.get $0) - (local.get $3) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - ) - (loop $while-in3 - (if - (i32.lt_s - (local.get $0) - (local.get $4) - ) - (block - (i32.store8 - (local.get $0) - (local.get $1) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (i32.sub - (local.get $0) - (local.get $2) - ) - ) - (func $db (; 24 ;) (; has Stack IR ;) - (local $0 i32) - (local $1 i32) - (drop - (i32.load offset=76 - (local.tee $0 - (i32.load - (i32.const 1024) - ) - ) - ) - ) - (drop - (if (result i32) - (i32.lt_s - (i32.add - (call $bb - (call $Za) - (local.get $0) - ) - (i32.const -1) - ) - (i32.const 0) - ) - (i32.const 1) - (block $do-once (result i32) - (if - (i32.ne - (i32.load8_s offset=75 - (local.get $0) - ) - (i32.const 10) - ) - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=20 - (local.get $0) - ) - ) - (i32.load offset=16 - (local.get $0) - ) - ) - (block - (i32.store offset=20 - (local.get $0) - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $1) - (i32.const 10) - ) - (br $do-once - (i32.const 0) - ) - ) - ) - ) - (call $ab - (local.get $0) - ) - ) - ) - ) - ) - (func $Xa (; 25 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (i32.store8 offset=74 - (local.get $0) - (i32.or - (local.tee $1 - (i32.load8_s offset=74 - (local.get $0) - ) - ) - (i32.add - (local.get $1) - (i32.const 255) - ) - ) - ) - (if (result i32) - (i32.and - (local.tee $1 - (i32.load - (local.get $0) - ) - ) - (i32.const 8) - ) - (block (result i32) - (i32.store - (local.get $0) - (i32.or - (local.get $1) - (i32.const 32) - ) - ) - (i32.const -1) - ) - (block (result i32) - (i32.store offset=8 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (local.tee $1 - (i32.load offset=44 - (local.get $0) - ) - ) - ) - (i32.store offset=20 - (local.get $0) - (local.get $1) - ) - (i32.store offset=16 - (local.get $0) - (i32.add - (i32.load offset=48 - (local.get $0) - ) - (local.get $1) - ) - ) - (i32.const 0) - ) - ) - ) - (func $bb (; 26 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local.set $2 - (local.get $0) - ) - (if (result i32) - (block (result i32) - (drop - (i32.load offset=76 - (local.get $1) - ) - ) - (i32.ne - (local.get $2) - (local.tee $1 - (call $Wa - (local.get $2) - (local.get $1) - ) - ) - ) - ) - (if (result i32) - (local.get $0) - (i32.div_u - (local.get $1) - (local.get $0) - ) - (i32.const 0) - ) - (i32.const 1) - ) - ) - (func $Ua (; 27 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local.set $3 - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 32) - ) - ) - (i32.store - (local.get $3) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.const 0) - ) - (i32.store offset=8 - (local.get $3) - (local.get $1) - ) - (i32.store offset=12 - (local.get $3) - (i32.add - (local.get $3) - (i32.const 20) - ) - ) - (i32.store offset=16 - (local.get $3) - (local.get $2) - ) - (local.set $0 - (if (result i32) - (i32.lt_s - (call $Pa - (call $ua - (i32.const 140) - (local.get $3) - ) - ) - (i32.const 0) - ) - (block (result i32) - (i32.store offset=20 - (local.get $3) - (i32.const -1) - ) - (i32.const -1) - ) - (i32.load offset=20 - (local.get $3) - ) - ) - ) - (global.set $r - (local.get $3) - ) - (local.get $0) - ) - (func $Va (; 28 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local.set $4 - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 80) - ) - ) - (local.set $3 - (local.get $4) - ) - (i32.store offset=36 - (local.get $0) - (i32.const 3) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 64) - ) - ) - (block - (i32.store - (local.get $3) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.const 21505) - ) - (i32.store offset=8 - (local.get $3) - (i32.add - (local.get $4) - (i32.const 12) - ) - ) - (if - (call $wa - (i32.const 54) - (local.get $3) - ) - (i32.store8 offset=75 - (local.get $0) - (i32.const -1) - ) - ) - ) - ) - (local.set $0 - (call $Ra - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - (global.set $r - (local.get $4) - ) - (local.get $0) - ) - (func $Oa (; 29 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local.set $1 - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 16) - ) - ) - (i32.store - (local.get $1) - (i32.load offset=60 - (local.get $0) - ) - ) - (local.set $0 - (call $Pa - (call $sa - (i32.const 6) - (local.get $1) - ) - ) - ) - (global.set $r - (local.get $1) - ) - (local.get $0) - ) - (func $Pa (; 30 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (if - (i32.gt_u - (local.get $0) - (i32.const -4096) - ) - (block - (i32.store - (call $Qa) - (i32.sub - (i32.const 0) - (local.get $0) - ) - ) - (local.set $0 - (i32.const -1) - ) - ) - ) - (local.get $0) - ) - (func $Qa (; 31 ;) (; has Stack IR ;) (result i32) - (if (result i32) - (i32.load - (i32.const 1160) - ) - (i32.load - (i32.const 64) - ) - (i32.const 1204) - ) - ) - (func $lb (; 32 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $1) - (local.get $2) - (local.get $3) - (i32.add - (i32.and - (local.get $0) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - (func $Ea (; 33 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local.set $1 - (global.get $r) - ) - (global.set $r - (i32.add - (local.get $0) - (global.get $r) - ) - ) - (global.set $r - (i32.and - (i32.add - (global.get $r) - (i32.const 15) - ) - (i32.const -16) - ) - ) - (local.get $1) - ) - (func $ob (; 34 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $ja - (i32.const 1) - ) - (i32.const 0) - ) - (func $Ia (; 35 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (if - (i32.eqz - (global.get $v) - ) - (block - (global.set $v - (local.get $0) - ) - (global.set $w - (local.get $1) - ) - ) - ) - ) - (func $kb (; 36 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (call_indirect (type $i32_=>_i32) - (local.get $1) - (i32.and - (local.get $0) - (i32.const 1) - ) - ) - ) - (func $Sa (; 37 ;) (; has Stack IR ;) (param $0 i32) - (drop - (i32.load offset=68 - (local.get $0) - ) - ) - ) - (func $mb (; 38 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (call_indirect (type $i32_=>_none) - (local.get $1) - (i32.add - (i32.and - (local.get $0) - (i32.const 1) - ) - (i32.const 6) - ) - ) - ) - (func $Ha (; 39 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (global.set $r - (local.get $0) - ) - (global.set $s - (local.get $1) - ) - ) - (func $nb (; 40 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (call $ja - (i32.const 0) - ) - (i32.const 0) - ) - (func $Na (; 41 ;) (; has Stack IR ;) (result i32) - (call $db) - (i32.const 0) - ) - (func $pb (; 42 ;) (; has Stack IR ;) (param $0 i32) - (call $ja - (i32.const 2) - ) - ) - (func $La (; 43 ;) (; has Stack IR ;) (param $0 i32) - (global.set $K - (local.get $0) - ) - ) - (func $Ga (; 44 ;) (; has Stack IR ;) (param $0 i32) - (global.set $r - (local.get $0) - ) - ) - (func $Ma (; 45 ;) (; has Stack IR ;) (result i32) - (global.get $K) - ) - (func $Fa (; 46 ;) (; has Stack IR ;) (result i32) - (global.get $r) - ) - (func $ib (; 47 ;) (; has Stack IR ;) (result i32) - (i32.const 0) - ) -) diff -Nru binaryen-91/test/memorygrowth.fromasm.clamp.no-opts binaryen-99/test/memorygrowth.fromasm.clamp.no-opts --- binaryen-91/test/memorygrowth.fromasm.clamp.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/memorygrowth.fromasm.clamp.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,12006 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (import "env" "memory" (memory $memory 256)) - (import "env" "table" (table $table 8 8 funcref)) - (elem (global.get $__table_base) $nb $Oa $ob $Va $Ua $Ra $pb $Sa) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $r$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $s$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $t$asm2wasm$import i32)) - (import "env" "ABORT" (global $u$asm2wasm$import i32)) - (import "global" "NaN" (global $z$asm2wasm$import f64)) - (import "global" "Infinity" (global $A$asm2wasm$import f64)) - (import "env" "abort" (func $ja (param i32))) - (import "env" "_pthread_cleanup_pop" (func $oa (param i32))) - (import "env" "___lock" (func $pa (param i32))) - (import "env" "_abort" (func $qa)) - (import "env" "_pthread_cleanup_push" (func $ra (param i32 i32))) - (import "env" "___syscall6" (func $sa (param i32 i32) (result i32))) - (import "env" "_sbrk" (func $ta (param i32) (result i32))) - (import "env" "___syscall140" (func $ua (param i32 i32) (result i32))) - (import "env" "_emscripten_memcpy_big" (func $va (param i32 i32 i32) (result i32))) - (import "env" "___syscall54" (func $wa (param i32 i32) (result i32))) - (import "env" "___unlock" (func $xa (param i32))) - (import "env" "___syscall146" (func $ya (param i32 i32) (result i32))) - (global $r (mut i32) (global.get $r$asm2wasm$import)) - (global $s (mut i32) (global.get $s$asm2wasm$import)) - (global $t (mut i32) (global.get $t$asm2wasm$import)) - (global $u (mut i32) (global.get $u$asm2wasm$import)) - (global $v (mut i32) (i32.const 0)) - (global $w (mut i32) (i32.const 0)) - (global $x (mut i32) (i32.const 0)) - (global $y (mut i32) (i32.const 0)) - (global $z (mut f64) (global.get $z$asm2wasm$import)) - (global $A (mut f64) (global.get $A$asm2wasm$import)) - (global $B (mut i32) (i32.const 0)) - (global $C (mut i32) (i32.const 0)) - (global $D (mut i32) (i32.const 0)) - (global $E (mut i32) (i32.const 0)) - (global $F (mut f64) (f64.const 0)) - (global $G (mut i32) (i32.const 0)) - (global $H (mut i32) (i32.const 0)) - (global $I (mut i32) (i32.const 0)) - (global $J (mut f64) (f64.const 0)) - (global $K (mut i32) (i32.const 0)) - (global $L (mut i32) (i32.const 0)) - (global $M (mut i32) (i32.const 0)) - (global $N (mut i32) (i32.const 0)) - (global $O (mut i32) (i32.const 0)) - (global $P (mut i32) (i32.const 0)) - (global $Q (mut i32) (i32.const 0)) - (global $R (mut i32) (i32.const 0)) - (global $S (mut i32) (i32.const 0)) - (global $T (mut i32) (i32.const 0)) - (global $za (mut f64) (f64.const 0)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (export "_free" (func $fb)) - (export "_main" (func $Na)) - (export "_pthread_self" (func $ib)) - (export "_memset" (func $hb)) - (export "_malloc" (func $eb)) - (export "_memcpy" (func $jb)) - (export "_fflush" (func $_a)) - (export "___errno_location" (func $Qa)) - (export "runPostSets" (func $gb)) - (export "stackAlloc" (func $Ea)) - (export "stackSave" (func $Fa)) - (export "stackRestore" (func $Ga)) - (export "establishStackSpace" (func $Ha)) - (export "setThrew" (func $Ia)) - (export "setTempRet0" (func $La)) - (export "getTempRet0" (func $Ma)) - (export "dynCall_ii" (func $kb)) - (export "dynCall_iiii" (func $lb)) - (export "dynCall_vi" (func $mb)) - (func $__growWasmMemory (; 12 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) - (func $eb (; 13 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local $i i32) - (local $j i32) - (local $l i32) - (local $m i32) - (local $n i32) - (local $o i32) - (local $p i32) - (local $q i32) - (local $s i32) - (local $t i32) - (local $u i32) - (local $v i32) - (local $w i32) - (local $x i32) - (local $y i32) - (local $z i32) - (local $A i32) - (local $B i32) - (local $C i32) - (local $D i32) - (local $E i32) - (local $F i32) - (local $G i32) - (local $H i32) - (local $I i32) - (local $J i32) - (local $K i32) - (local $L i32) - (local $M i32) - (local $N i32) - (local $O i32) - (local $P i32) - (local $Q i32) - (local $R i32) - (local $S i32) - (local $T i32) - (local $U i32) - (local $V i32) - (local $W i32) - (local $X i32) - (local $Y i32) - (local $Z i32) - (local $_ i32) - (local $$ i32) - (local $aa i32) - (local $ba i32) - (local $ca i32) - (local $da i32) - (local $ea i32) - (local $fa i32) - (local $ga i32) - (local $ha i32) - (local $ia i32) - (local $ja i32) - (local $ka i32) - (local $la i32) - (local $ma i32) - (local $na i32) - (local $oa i32) - (local $pa i32) - (local $ra i32) - (local $sa i32) - (local $ua i32) - (local $va i32) - (local $wa i32) - (local $xa i32) - (local $ya i32) - (local $za i32) - (local $Aa i32) - (local $Ba i32) - (local $Ca i32) - (local $Da i32) - (local $Ea i32) - (local $Fa i32) - (local $Ga i32) - (local $Ha i32) - (local $Ia i32) - (local $Ja i32) - (local $Ka i32) - (local $La i32) - (local $Ma i32) - (local $Na i32) - (local $Oa i32) - (local $Pa i32) - (local $Ra i32) - (local $Sa i32) - (local.set $b - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 16) - ) - ) - (local.set $c - (local.get $b) - ) - (block $do-once - (if - (i32.lt_u - (local.get $a) - (i32.const 245) - ) - (block - (local.set $d - (if (result i32) - (i32.lt_u - (local.get $a) - (i32.const 11) - ) - (i32.const 16) - (i32.and - (i32.add - (local.get $a) - (i32.const 11) - ) - (i32.const -8) - ) - ) - ) - (local.set $e - (i32.shr_u - (local.get $d) - (i32.const 3) - ) - ) - (local.set $f - (i32.load - (i32.const 1208) - ) - ) - (local.set $g - (i32.shr_u - (local.get $f) - (local.get $e) - ) - ) - (if - (i32.and - (local.get $g) - (i32.const 3) - ) - (block - (local.set $h - (i32.add - (i32.xor - (i32.and - (local.get $g) - (i32.const 1) - ) - (i32.const 1) - ) - (local.get $e) - ) - ) - (local.set $i - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $h) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $j - (i32.add - (local.get $i) - (i32.const 8) - ) - ) - (local.set $l - (i32.load - (local.get $j) - ) - ) - (local.set $m - (i32.add - (local.get $l) - (i32.const 8) - ) - ) - (local.set $n - (i32.load - (local.get $m) - ) - ) - (block $do-once0 - (if - (i32.eq - (local.get $i) - (local.get $n) - ) - (i32.store - (i32.const 1208) - (i32.and - (local.get $f) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $h) - ) - (i32.const -1) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $n) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $o - (i32.add - (local.get $n) - (i32.const 12) - ) - ) - (if - (i32.eq - (i32.load - (local.get $o) - ) - (local.get $l) - ) - (block - (i32.store - (local.get $o) - (local.get $i) - ) - (i32.store - (local.get $j) - (local.get $n) - ) - (br $do-once0) - ) - (call $qa) - ) - ) - ) - ) - (local.set $n - (i32.shl - (local.get $h) - (i32.const 3) - ) - ) - (i32.store - (i32.add - (local.get $l) - (i32.const 4) - ) - (i32.or - (local.get $n) - (i32.const 3) - ) - ) - (local.set $j - (i32.add - (i32.add - (local.get $l) - (local.get $n) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $j) - (i32.or - (i32.load - (local.get $j) - ) - (i32.const 1) - ) - ) - (local.set $p - (local.get $m) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - (local.set $j - (i32.load - (i32.const 1216) - ) - ) - (if - (i32.gt_u - (local.get $d) - (local.get $j) - ) - (block - (if - (local.get $g) - (block - (local.set $n - (i32.shl - (i32.const 2) - (local.get $e) - ) - ) - (local.set $i - (i32.and - (i32.shl - (local.get $g) - (local.get $e) - ) - (i32.or - (local.get $n) - (i32.sub - (i32.const 0) - (local.get $n) - ) - ) - ) - ) - (local.set $n - (i32.add - (i32.and - (local.get $i) - (i32.sub - (i32.const 0) - (local.get $i) - ) - ) - (i32.const -1) - ) - ) - (local.set $i - (i32.and - (i32.shr_u - (local.get $n) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $o - (i32.shr_u - (local.get $n) - (local.get $i) - ) - ) - (local.set $n - (i32.and - (i32.shr_u - (local.get $o) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $q - (i32.shr_u - (local.get $o) - (local.get $n) - ) - ) - (local.set $o - (i32.and - (i32.shr_u - (local.get $q) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $s - (i32.shr_u - (local.get $q) - (local.get $o) - ) - ) - (local.set $q - (i32.and - (i32.shr_u - (local.get $s) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $t - (i32.shr_u - (local.get $s) - (local.get $q) - ) - ) - (local.set $s - (i32.and - (i32.shr_u - (local.get $t) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (local.set $u - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.get $n) - (local.get $i) - ) - (local.get $o) - ) - (local.get $q) - ) - (local.get $s) - ) - (i32.shr_u - (local.get $t) - (local.get $s) - ) - ) - ) - (local.set $s - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $u) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $t - (i32.add - (local.get $s) - (i32.const 8) - ) - ) - (local.set $q - (i32.load - (local.get $t) - ) - ) - (local.set $o - (i32.add - (local.get $q) - (i32.const 8) - ) - ) - (local.set $i - (i32.load - (local.get $o) - ) - ) - (block $do-once2 - (if - (i32.eq - (local.get $s) - (local.get $i) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (local.get $f) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $u) - ) - (i32.const -1) - ) - ) - ) - (local.set $v - (local.get $j) - ) - ) - (block - (if - (i32.lt_u - (local.get $i) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $n - (i32.add - (local.get $i) - (i32.const 12) - ) - ) - (if - (i32.eq - (i32.load - (local.get $n) - ) - (local.get $q) - ) - (block - (i32.store - (local.get $n) - (local.get $s) - ) - (i32.store - (local.get $t) - (local.get $i) - ) - (local.set $v - (i32.load - (i32.const 1216) - ) - ) - (br $do-once2) - ) - (call $qa) - ) - ) - ) - ) - (local.set $i - (i32.sub - (i32.shl - (local.get $u) - (i32.const 3) - ) - (local.get $d) - ) - ) - (i32.store - (i32.add - (local.get $q) - (i32.const 4) - ) - (i32.or - (local.get $d) - (i32.const 3) - ) - ) - (local.set $t - (i32.add - (local.get $q) - (local.get $d) - ) - ) - (i32.store - (i32.add - (local.get $t) - (i32.const 4) - ) - (i32.or - (local.get $i) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $t) - (local.get $i) - ) - (local.get $i) - ) - (if - (local.get $v) - (block - (local.set $s - (i32.load - (i32.const 1228) - ) - ) - (local.set $j - (i32.shr_u - (local.get $v) - (i32.const 3) - ) - ) - (local.set $f - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $j) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $e - (i32.load - (i32.const 1208) - ) - ) - (local.set $g - (i32.shl - (i32.const 1) - (local.get $j) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $e) - (local.get $g) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $e) - (local.get $g) - ) - ) - (local.set $w - (i32.add - (local.get $f) - (i32.const 8) - ) - ) - (local.set $x - (local.get $f) - ) - ) - (block - (local.set $g - (i32.add - (local.get $f) - (i32.const 8) - ) - ) - (local.set $e - (i32.load - (local.get $g) - ) - ) - (if - (i32.lt_u - (local.get $e) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $w - (local.get $g) - ) - (local.set $x - (local.get $e) - ) - ) - ) - ) - ) - (i32.store - (local.get $w) - (local.get $s) - ) - (i32.store - (i32.add - (local.get $x) - (i32.const 12) - ) - (local.get $s) - ) - (i32.store - (i32.add - (local.get $s) - (i32.const 8) - ) - (local.get $x) - ) - (i32.store - (i32.add - (local.get $s) - (i32.const 12) - ) - (local.get $f) - ) - ) - ) - (i32.store - (i32.const 1216) - (local.get $i) - ) - (i32.store - (i32.const 1228) - (local.get $t) - ) - (local.set $p - (local.get $o) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - (local.set $t - (i32.load - (i32.const 1212) - ) - ) - (if - (i32.eqz - (local.get $t) - ) - (local.set $y - (local.get $d) - ) - (block - (local.set $i - (i32.add - (i32.and - (local.get $t) - (i32.sub - (i32.const 0) - (local.get $t) - ) - ) - (i32.const -1) - ) - ) - (local.set $t - (i32.and - (i32.shr_u - (local.get $i) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $f - (i32.shr_u - (local.get $i) - (local.get $t) - ) - ) - (local.set $i - (i32.and - (i32.shr_u - (local.get $f) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $s - (i32.shr_u - (local.get $f) - (local.get $i) - ) - ) - (local.set $f - (i32.and - (i32.shr_u - (local.get $s) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $e - (i32.shr_u - (local.get $s) - (local.get $f) - ) - ) - (local.set $s - (i32.and - (i32.shr_u - (local.get $e) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $g - (i32.shr_u - (local.get $e) - (local.get $s) - ) - ) - (local.set $e - (i32.and - (i32.shr_u - (local.get $g) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (local.set $j - (i32.load - (i32.add - (i32.const 1512) - (i32.shl - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.get $i) - (local.get $t) - ) - (local.get $f) - ) - (local.get $s) - ) - (local.get $e) - ) - (i32.shr_u - (local.get $g) - (local.get $e) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (local.set $e - (i32.sub - (i32.and - (i32.load - (i32.add - (local.get $j) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $d) - ) - ) - (local.set $g - (local.get $j) - ) - (local.set $s - (local.get $j) - ) - (loop $while-in - (block $while-out - (local.set $j - (i32.load - (i32.add - (local.get $g) - (i32.const 16) - ) - ) - ) - (if - (i32.eqz - (local.get $j) - ) - (block - (local.set $f - (i32.load - (i32.add - (local.get $g) - (i32.const 20) - ) - ) - ) - (if - (i32.eqz - (local.get $f) - ) - (block - (local.set $z - (local.get $e) - ) - (local.set $A - (local.get $s) - ) - (br $while-out) - ) - (local.set $B - (local.get $f) - ) - ) - ) - (local.set $B - (local.get $j) - ) - ) - (local.set $j - (i32.sub - (i32.and - (i32.load - (i32.add - (local.get $B) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $d) - ) - ) - (local.set $f - (i32.lt_u - (local.get $j) - (local.get $e) - ) - ) - (local.set $e - (if (result i32) - (local.get $f) - (local.get $j) - (local.get $e) - ) - ) - (local.set $g - (local.get $B) - ) - (local.set $s - (if (result i32) - (local.get $f) - (local.get $B) - (local.get $s) - ) - ) - (br $while-in) - ) - ) - (local.set $s - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $A) - (local.get $s) - ) - (call $qa) - ) - (local.set $g - (i32.add - (local.get $A) - (local.get $d) - ) - ) - (if - (i32.ge_u - (local.get $A) - (local.get $g) - ) - (call $qa) - ) - (local.set $e - (i32.load - (i32.add - (local.get $A) - (i32.const 24) - ) - ) - ) - (local.set $o - (i32.load - (i32.add - (local.get $A) - (i32.const 12) - ) - ) - ) - (block $do-once4 - (if - (i32.eq - (local.get $o) - (local.get $A) - ) - (block - (local.set $q - (i32.add - (local.get $A) - (i32.const 20) - ) - ) - (local.set $u - (i32.load - (local.get $q) - ) - ) - (if - (i32.eqz - (local.get $u) - ) - (block - (local.set $f - (i32.add - (local.get $A) - (i32.const 16) - ) - ) - (local.set $j - (i32.load - (local.get $f) - ) - ) - (if - (i32.eqz - (local.get $j) - ) - (block - (local.set $C - (i32.const 0) - ) - (br $do-once4) - ) - (block - (local.set $D - (local.get $j) - ) - (local.set $E - (local.get $f) - ) - ) - ) - ) - (block - (local.set $D - (local.get $u) - ) - (local.set $E - (local.get $q) - ) - ) - ) - (loop $while-in7 - (block $while-out6 - (local.set $q - (i32.add - (local.get $D) - (i32.const 20) - ) - ) - (local.set $u - (i32.load - (local.get $q) - ) - ) - (if - (local.get $u) - (block - (local.set $D - (local.get $u) - ) - (local.set $E - (local.get $q) - ) - (br $while-in7) - ) - ) - (local.set $q - (i32.add - (local.get $D) - (i32.const 16) - ) - ) - (local.set $u - (i32.load - (local.get $q) - ) - ) - (if - (i32.eqz - (local.get $u) - ) - (block - (local.set $F - (local.get $D) - ) - (local.set $G - (local.get $E) - ) - (br $while-out6) - ) - (block - (local.set $D - (local.get $u) - ) - (local.set $E - (local.get $q) - ) - ) - ) - (br $while-in7) - ) - ) - (if - (i32.lt_u - (local.get $G) - (local.get $s) - ) - (call $qa) - (block - (i32.store - (local.get $G) - (i32.const 0) - ) - (local.set $C - (local.get $F) - ) - (br $do-once4) - ) - ) - ) - (block - (local.set $q - (i32.load - (i32.add - (local.get $A) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $q) - (local.get $s) - ) - (call $qa) - ) - (local.set $u - (i32.add - (local.get $q) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $u) - ) - (local.get $A) - ) - (call $qa) - ) - (local.set $f - (i32.add - (local.get $o) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $f) - ) - (local.get $A) - ) - (block - (i32.store - (local.get $u) - (local.get $o) - ) - (i32.store - (local.get $f) - (local.get $q) - ) - (local.set $C - (local.get $o) - ) - (br $do-once4) - ) - (call $qa) - ) - ) - ) - ) - (block $do-once8 - (if - (local.get $e) - (block - (local.set $o - (i32.load - (i32.add - (local.get $A) - (i32.const 28) - ) - ) - ) - (local.set $s - (i32.add - (i32.const 1512) - (i32.shl - (local.get $o) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $A) - (i32.load - (local.get $s) - ) - ) - (block - (i32.store - (local.get $s) - (local.get $C) - ) - (if - (i32.eqz - (local.get $C) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $o) - ) - (i32.const -1) - ) - ) - ) - (br $do-once8) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $e) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $o - (i32.add - (local.get $e) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $o) - ) - (local.get $A) - ) - (i32.store - (local.get $o) - (local.get $C) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 20) - ) - (local.get $C) - ) - ) - (if - (i32.eqz - (local.get $C) - ) - (br $do-once8) - ) - ) - ) - (local.set $o - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $C) - (local.get $o) - ) - (call $qa) - ) - (i32.store - (i32.add - (local.get $C) - (i32.const 24) - ) - (local.get $e) - ) - (local.set $s - (i32.load - (i32.add - (local.get $A) - (i32.const 16) - ) - ) - ) - (block $do-once10 - (if - (local.get $s) - (if - (i32.lt_u - (local.get $s) - (local.get $o) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $C) - (i32.const 16) - ) - (local.get $s) - ) - (i32.store - (i32.add - (local.get $s) - (i32.const 24) - ) - (local.get $C) - ) - (br $do-once10) - ) - ) - ) - ) - (local.set $s - (i32.load - (i32.add - (local.get $A) - (i32.const 20) - ) - ) - ) - (if - (local.get $s) - (if - (i32.lt_u - (local.get $s) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $C) - (i32.const 20) - ) - (local.get $s) - ) - (i32.store - (i32.add - (local.get $s) - (i32.const 24) - ) - (local.get $C) - ) - (br $do-once8) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $z) - (i32.const 16) - ) - (block - (local.set $e - (i32.add - (local.get $z) - (local.get $d) - ) - ) - (i32.store - (i32.add - (local.get $A) - (i32.const 4) - ) - (i32.or - (local.get $e) - (i32.const 3) - ) - ) - (local.set $s - (i32.add - (i32.add - (local.get $A) - (local.get $e) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $s) - (i32.or - (i32.load - (local.get $s) - ) - (i32.const 1) - ) - ) - ) - (block - (i32.store - (i32.add - (local.get $A) - (i32.const 4) - ) - (i32.or - (local.get $d) - (i32.const 3) - ) - ) - (i32.store - (i32.add - (local.get $g) - (i32.const 4) - ) - (i32.or - (local.get $z) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $g) - (local.get $z) - ) - (local.get $z) - ) - (local.set $s - (i32.load - (i32.const 1216) - ) - ) - (if - (local.get $s) - (block - (local.set $e - (i32.load - (i32.const 1228) - ) - ) - (local.set $o - (i32.shr_u - (local.get $s) - (i32.const 3) - ) - ) - (local.set $s - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $o) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $q - (i32.load - (i32.const 1208) - ) - ) - (local.set $f - (i32.shl - (i32.const 1) - (local.get $o) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $q) - (local.get $f) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $q) - (local.get $f) - ) - ) - (local.set $H - (i32.add - (local.get $s) - (i32.const 8) - ) - ) - (local.set $I - (local.get $s) - ) - ) - (block - (local.set $f - (i32.add - (local.get $s) - (i32.const 8) - ) - ) - (local.set $q - (i32.load - (local.get $f) - ) - ) - (if - (i32.lt_u - (local.get $q) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $H - (local.get $f) - ) - (local.set $I - (local.get $q) - ) - ) - ) - ) - ) - (i32.store - (local.get $H) - (local.get $e) - ) - (i32.store - (i32.add - (local.get $I) - (i32.const 12) - ) - (local.get $e) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 8) - ) - (local.get $I) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 12) - ) - (local.get $s) - ) - ) - ) - (i32.store - (i32.const 1216) - (local.get $z) - ) - (i32.store - (i32.const 1228) - (local.get $g) - ) - ) - ) - (local.set $p - (i32.add - (local.get $A) - (i32.const 8) - ) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - ) - (local.set $y - (local.get $d) - ) - ) - ) - (if - (i32.gt_u - (local.get $a) - (i32.const -65) - ) - (local.set $y - (i32.const -1) - ) - (block - (local.set $s - (i32.add - (local.get $a) - (i32.const 11) - ) - ) - (local.set $e - (i32.and - (local.get $s) - (i32.const -8) - ) - ) - (local.set $q - (i32.load - (i32.const 1212) - ) - ) - (if - (i32.eqz - (local.get $q) - ) - (local.set $y - (local.get $e) - ) - (block - (local.set $f - (i32.sub - (i32.const 0) - (local.get $e) - ) - ) - (local.set $o - (i32.shr_u - (local.get $s) - (i32.const 8) - ) - ) - (if - (i32.eqz - (local.get $o) - ) - (local.set $J - (i32.const 0) - ) - (if - (i32.gt_u - (local.get $e) - (i32.const 16777215) - ) - (local.set $J - (i32.const 31) - ) - (block - (local.set $s - (i32.and - (i32.shr_u - (i32.add - (local.get $o) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $u - (i32.shl - (local.get $o) - (local.get $s) - ) - ) - (local.set $o - (i32.and - (i32.shr_u - (i32.add - (local.get $u) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $j - (i32.shl - (local.get $u) - (local.get $o) - ) - ) - (local.set $u - (i32.and - (i32.shr_u - (i32.add - (local.get $j) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $t - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $o) - (local.get $s) - ) - (local.get $u) - ) - ) - (i32.shr_u - (i32.shl - (local.get $j) - (local.get $u) - ) - (i32.const 15) - ) - ) - ) - (local.set $J - (i32.or - (i32.and - (i32.shr_u - (local.get $e) - (i32.add - (local.get $t) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $t) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.set $t - (i32.load - (i32.add - (i32.const 1512) - (i32.shl - (local.get $J) - (i32.const 2) - ) - ) - ) - ) - (block $label$break$a - (if - (i32.eqz - (local.get $t) - ) - (block - (local.set $K - (local.get $f) - ) - (local.set $L - (i32.const 0) - ) - (local.set $M - (i32.const 0) - ) - (local.set $N - (i32.const 86) - ) - ) - (block - (local.set $u - (local.get $f) - ) - (local.set $j - (i32.const 0) - ) - (local.set $s - (i32.shl - (local.get $e) - (if (result i32) - (i32.eq - (local.get $J) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $J) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $o - (local.get $t) - ) - (local.set $i - (i32.const 0) - ) - (loop $while-in14 - (block $while-out13 - (local.set $m - (i32.and - (i32.load - (i32.add - (local.get $o) - (i32.const 4) - ) - ) - (i32.const -8) - ) - ) - (local.set $l - (i32.sub - (local.get $m) - (local.get $e) - ) - ) - (if - (i32.lt_u - (local.get $l) - (local.get $u) - ) - (if - (i32.eq - (local.get $m) - (local.get $e) - ) - (block - (local.set $O - (local.get $l) - ) - (local.set $P - (local.get $o) - ) - (local.set $Q - (local.get $o) - ) - (local.set $N - (i32.const 90) - ) - (br $label$break$a) - ) - (block - (local.set $R - (local.get $l) - ) - (local.set $S - (local.get $o) - ) - ) - ) - (block - (local.set $R - (local.get $u) - ) - (local.set $S - (local.get $i) - ) - ) - ) - (local.set $l - (i32.load - (i32.add - (local.get $o) - (i32.const 20) - ) - ) - ) - (local.set $o - (i32.load - (i32.add - (i32.add - (local.get $o) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $s) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - (local.set $m - (if (result i32) - (i32.or - (i32.eq - (local.get $l) - (i32.const 0) - ) - (i32.eq - (local.get $l) - (local.get $o) - ) - ) - (local.get $j) - (local.get $l) - ) - ) - (local.set $l - (i32.eq - (local.get $o) - (i32.const 0) - ) - ) - (if - (local.get $l) - (block - (local.set $K - (local.get $R) - ) - (local.set $L - (local.get $m) - ) - (local.set $M - (local.get $S) - ) - (local.set $N - (i32.const 86) - ) - (br $while-out13) - ) - (block - (local.set $u - (local.get $R) - ) - (local.set $j - (local.get $m) - ) - (local.set $s - (i32.shl - (local.get $s) - (i32.xor - (i32.and - (local.get $l) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (local.set $i - (local.get $S) - ) - ) - ) - (br $while-in14) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 86) - ) - (block - (if - (i32.and - (i32.eq - (local.get $L) - (i32.const 0) - ) - (i32.eq - (local.get $M) - (i32.const 0) - ) - ) - (block - (local.set $t - (i32.shl - (i32.const 2) - (local.get $J) - ) - ) - (local.set $f - (i32.and - (local.get $q) - (i32.or - (local.get $t) - (i32.sub - (i32.const 0) - (local.get $t) - ) - ) - ) - ) - (if - (i32.eqz - (local.get $f) - ) - (block - (local.set $y - (local.get $e) - ) - (br $do-once) - ) - ) - (local.set $t - (i32.add - (i32.and - (local.get $f) - (i32.sub - (i32.const 0) - (local.get $f) - ) - ) - (i32.const -1) - ) - ) - (local.set $f - (i32.and - (i32.shr_u - (local.get $t) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $d - (i32.shr_u - (local.get $t) - (local.get $f) - ) - ) - (local.set $t - (i32.and - (i32.shr_u - (local.get $d) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $g - (i32.shr_u - (local.get $d) - (local.get $t) - ) - ) - (local.set $d - (i32.and - (i32.shr_u - (local.get $g) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $i - (i32.shr_u - (local.get $g) - (local.get $d) - ) - ) - (local.set $g - (i32.and - (i32.shr_u - (local.get $i) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $s - (i32.shr_u - (local.get $i) - (local.get $g) - ) - ) - (local.set $i - (i32.and - (i32.shr_u - (local.get $s) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (local.set $T - (i32.load - (i32.add - (i32.const 1512) - (i32.shl - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.get $t) - (local.get $f) - ) - (local.get $d) - ) - (local.get $g) - ) - (local.get $i) - ) - (i32.shr_u - (local.get $s) - (local.get $i) - ) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (local.set $T - (local.get $L) - ) - ) - (if - (i32.eqz - (local.get $T) - ) - (block - (local.set $U - (local.get $K) - ) - (local.set $V - (local.get $M) - ) - ) - (block - (local.set $O - (local.get $K) - ) - (local.set $P - (local.get $T) - ) - (local.set $Q - (local.get $M) - ) - (local.set $N - (i32.const 90) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 90) - ) - (loop $while-in16 - (block $while-out15 - (local.set $N - (i32.const 0) - ) - (local.set $i - (i32.sub - (i32.and - (i32.load - (i32.add - (local.get $P) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $e) - ) - ) - (local.set $s - (i32.lt_u - (local.get $i) - (local.get $O) - ) - ) - (local.set $g - (if (result i32) - (local.get $s) - (local.get $i) - (local.get $O) - ) - ) - (local.set $i - (if (result i32) - (local.get $s) - (local.get $P) - (local.get $Q) - ) - ) - (local.set $s - (i32.load - (i32.add - (local.get $P) - (i32.const 16) - ) - ) - ) - (if - (local.get $s) - (block - (local.set $O - (local.get $g) - ) - (local.set $P - (local.get $s) - ) - (local.set $Q - (local.get $i) - ) - (local.set $N - (i32.const 90) - ) - (br $while-in16) - ) - ) - (local.set $P - (i32.load - (i32.add - (local.get $P) - (i32.const 20) - ) - ) - ) - (if - (i32.eqz - (local.get $P) - ) - (block - (local.set $U - (local.get $g) - ) - (local.set $V - (local.get $i) - ) - (br $while-out15) - ) - (block - (local.set $O - (local.get $g) - ) - (local.set $Q - (local.get $i) - ) - (local.set $N - (i32.const 90) - ) - ) - ) - (br $while-in16) - ) - ) - ) - (if - (i32.eqz - (local.get $V) - ) - (local.set $y - (local.get $e) - ) - (if - (i32.lt_u - (local.get $U) - (i32.sub - (i32.load - (i32.const 1216) - ) - (local.get $e) - ) - ) - (block - (local.set $q - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $V) - (local.get $q) - ) - (call $qa) - ) - (local.set $i - (i32.add - (local.get $V) - (local.get $e) - ) - ) - (if - (i32.ge_u - (local.get $V) - (local.get $i) - ) - (call $qa) - ) - (local.set $g - (i32.load - (i32.add - (local.get $V) - (i32.const 24) - ) - ) - ) - (local.set $s - (i32.load - (i32.add - (local.get $V) - (i32.const 12) - ) - ) - ) - (block $do-once17 - (if - (i32.eq - (local.get $s) - (local.get $V) - ) - (block - (local.set $d - (i32.add - (local.get $V) - (i32.const 20) - ) - ) - (local.set $f - (i32.load - (local.get $d) - ) - ) - (if - (i32.eqz - (local.get $f) - ) - (block - (local.set $t - (i32.add - (local.get $V) - (i32.const 16) - ) - ) - (local.set $j - (i32.load - (local.get $t) - ) - ) - (if - (i32.eqz - (local.get $j) - ) - (block - (local.set $W - (i32.const 0) - ) - (br $do-once17) - ) - (block - (local.set $X - (local.get $j) - ) - (local.set $Y - (local.get $t) - ) - ) - ) - ) - (block - (local.set $X - (local.get $f) - ) - (local.set $Y - (local.get $d) - ) - ) - ) - (loop $while-in20 - (block $while-out19 - (local.set $d - (i32.add - (local.get $X) - (i32.const 20) - ) - ) - (local.set $f - (i32.load - (local.get $d) - ) - ) - (if - (local.get $f) - (block - (local.set $X - (local.get $f) - ) - (local.set $Y - (local.get $d) - ) - (br $while-in20) - ) - ) - (local.set $d - (i32.add - (local.get $X) - (i32.const 16) - ) - ) - (local.set $f - (i32.load - (local.get $d) - ) - ) - (if - (i32.eqz - (local.get $f) - ) - (block - (local.set $Z - (local.get $X) - ) - (local.set $_ - (local.get $Y) - ) - (br $while-out19) - ) - (block - (local.set $X - (local.get $f) - ) - (local.set $Y - (local.get $d) - ) - ) - ) - (br $while-in20) - ) - ) - (if - (i32.lt_u - (local.get $_) - (local.get $q) - ) - (call $qa) - (block - (i32.store - (local.get $_) - (i32.const 0) - ) - (local.set $W - (local.get $Z) - ) - (br $do-once17) - ) - ) - ) - (block - (local.set $d - (i32.load - (i32.add - (local.get $V) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $d) - (local.get $q) - ) - (call $qa) - ) - (local.set $f - (i32.add - (local.get $d) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $f) - ) - (local.get $V) - ) - (call $qa) - ) - (local.set $t - (i32.add - (local.get $s) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $t) - ) - (local.get $V) - ) - (block - (i32.store - (local.get $f) - (local.get $s) - ) - (i32.store - (local.get $t) - (local.get $d) - ) - (local.set $W - (local.get $s) - ) - (br $do-once17) - ) - (call $qa) - ) - ) - ) - ) - (block $do-once21 - (if - (local.get $g) - (block - (local.set $s - (i32.load - (i32.add - (local.get $V) - (i32.const 28) - ) - ) - ) - (local.set $q - (i32.add - (i32.const 1512) - (i32.shl - (local.get $s) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $V) - (i32.load - (local.get $q) - ) - ) - (block - (i32.store - (local.get $q) - (local.get $W) - ) - (if - (i32.eqz - (local.get $W) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $s) - ) - (i32.const -1) - ) - ) - ) - (br $do-once21) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $g) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $s - (i32.add - (local.get $g) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $s) - ) - (local.get $V) - ) - (i32.store - (local.get $s) - (local.get $W) - ) - (i32.store - (i32.add - (local.get $g) - (i32.const 20) - ) - (local.get $W) - ) - ) - (if - (i32.eqz - (local.get $W) - ) - (br $do-once21) - ) - ) - ) - (local.set $s - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $W) - (local.get $s) - ) - (call $qa) - ) - (i32.store - (i32.add - (local.get $W) - (i32.const 24) - ) - (local.get $g) - ) - (local.set $q - (i32.load - (i32.add - (local.get $V) - (i32.const 16) - ) - ) - ) - (block $do-once23 - (if - (local.get $q) - (if - (i32.lt_u - (local.get $q) - (local.get $s) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $W) - (i32.const 16) - ) - (local.get $q) - ) - (i32.store - (i32.add - (local.get $q) - (i32.const 24) - ) - (local.get $W) - ) - (br $do-once23) - ) - ) - ) - ) - (local.set $q - (i32.load - (i32.add - (local.get $V) - (i32.const 20) - ) - ) - ) - (if - (local.get $q) - (if - (i32.lt_u - (local.get $q) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $W) - (i32.const 20) - ) - (local.get $q) - ) - (i32.store - (i32.add - (local.get $q) - (i32.const 24) - ) - (local.get $W) - ) - (br $do-once21) - ) - ) - ) - ) - ) - ) - (block $do-once25 - (if - (i32.lt_u - (local.get $U) - (i32.const 16) - ) - (block - (local.set $g - (i32.add - (local.get $U) - (local.get $e) - ) - ) - (i32.store - (i32.add - (local.get $V) - (i32.const 4) - ) - (i32.or - (local.get $g) - (i32.const 3) - ) - ) - (local.set $q - (i32.add - (i32.add - (local.get $V) - (local.get $g) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $q) - (i32.or - (i32.load - (local.get $q) - ) - (i32.const 1) - ) - ) - ) - (block - (i32.store - (i32.add - (local.get $V) - (i32.const 4) - ) - (i32.or - (local.get $e) - (i32.const 3) - ) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 4) - ) - (i32.or - (local.get $U) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i) - (local.get $U) - ) - (local.get $U) - ) - (local.set $q - (i32.shr_u - (local.get $U) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $U) - (i32.const 256) - ) - (block - (local.set $g - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $q) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $s - (i32.load - (i32.const 1208) - ) - ) - (local.set $d - (i32.shl - (i32.const 1) - (local.get $q) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $s) - (local.get $d) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $s) - (local.get $d) - ) - ) - (local.set $$ - (i32.add - (local.get $g) - (i32.const 8) - ) - ) - (local.set $aa - (local.get $g) - ) - ) - (block - (local.set $d - (i32.add - (local.get $g) - (i32.const 8) - ) - ) - (local.set $s - (i32.load - (local.get $d) - ) - ) - (if - (i32.lt_u - (local.get $s) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $$ - (local.get $d) - ) - (local.set $aa - (local.get $s) - ) - ) - ) - ) - ) - (i32.store - (local.get $$) - (local.get $i) - ) - (i32.store - (i32.add - (local.get $aa) - (i32.const 12) - ) - (local.get $i) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 8) - ) - (local.get $aa) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 12) - ) - (local.get $g) - ) - (br $do-once25) - ) - ) - (local.set $g - (i32.shr_u - (local.get $U) - (i32.const 8) - ) - ) - (if - (i32.eqz - (local.get $g) - ) - (local.set $ba - (i32.const 0) - ) - (if - (i32.gt_u - (local.get $U) - (i32.const 16777215) - ) - (local.set $ba - (i32.const 31) - ) - (block - (local.set $s - (i32.and - (i32.shr_u - (i32.add - (local.get $g) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $d - (i32.shl - (local.get $g) - (local.get $s) - ) - ) - (local.set $g - (i32.and - (i32.shr_u - (i32.add - (local.get $d) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $q - (i32.shl - (local.get $d) - (local.get $g) - ) - ) - (local.set $d - (i32.and - (i32.shr_u - (i32.add - (local.get $q) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $t - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $g) - (local.get $s) - ) - (local.get $d) - ) - ) - (i32.shr_u - (i32.shl - (local.get $q) - (local.get $d) - ) - (i32.const 15) - ) - ) - ) - (local.set $ba - (i32.or - (i32.and - (i32.shr_u - (local.get $U) - (i32.add - (local.get $t) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $t) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.set $t - (i32.add - (i32.const 1512) - (i32.shl - (local.get $ba) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 28) - ) - (local.get $ba) - ) - (local.set $d - (i32.add - (local.get $i) - (i32.const 16) - ) - ) - (i32.store - (i32.add - (local.get $d) - (i32.const 4) - ) - (i32.const 0) - ) - (i32.store - (local.get $d) - (i32.const 0) - ) - (local.set $d - (i32.load - (i32.const 1212) - ) - ) - (local.set $q - (i32.shl - (i32.const 1) - (local.get $ba) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $d) - (local.get $q) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $d) - (local.get $q) - ) - ) - (i32.store - (local.get $t) - (local.get $i) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 24) - ) - (local.get $t) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 12) - ) - (local.get $i) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 8) - ) - (local.get $i) - ) - (br $do-once25) - ) - ) - (local.set $q - (i32.shl - (local.get $U) - (if (result i32) - (i32.eq - (local.get $ba) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $ba) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $d - (i32.load - (local.get $t) - ) - ) - (loop $while-in28 - (block $while-out27 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $d) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $U) - ) - (block - (local.set $ca - (local.get $d) - ) - (local.set $N - (i32.const 148) - ) - (br $while-out27) - ) - ) - (local.set $t - (i32.add - (i32.add - (local.get $d) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $q) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $s - (i32.load - (local.get $t) - ) - ) - (if - (i32.eqz - (local.get $s) - ) - (block - (local.set $da - (local.get $t) - ) - (local.set $ea - (local.get $d) - ) - (local.set $N - (i32.const 145) - ) - (br $while-out27) - ) - (block - (local.set $q - (i32.shl - (local.get $q) - (i32.const 1) - ) - ) - (local.set $d - (local.get $s) - ) - ) - ) - (br $while-in28) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 145) - ) - (if - (i32.lt_u - (local.get $da) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $da) - (local.get $i) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 24) - ) - (local.get $ea) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 12) - ) - (local.get $i) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 8) - ) - (local.get $i) - ) - (br $do-once25) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 148) - ) - (block - (local.set $d - (i32.add - (local.get $ca) - (i32.const 8) - ) - ) - (local.set $q - (i32.load - (local.get $d) - ) - ) - (local.set $s - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $q) - (local.get $s) - ) - (i32.ge_u - (local.get $ca) - (local.get $s) - ) - ) - (block - (i32.store - (i32.add - (local.get $q) - (i32.const 12) - ) - (local.get $i) - ) - (i32.store - (local.get $d) - (local.get $i) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 8) - ) - (local.get $q) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 12) - ) - (local.get $ca) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once25) - ) - (call $qa) - ) - ) - ) - ) - ) - ) - ) - (local.set $p - (i32.add - (local.get $V) - (i32.const 8) - ) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - (local.set $y - (local.get $e) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (local.set $V - (i32.load - (i32.const 1216) - ) - ) - (if - (i32.ge_u - (local.get $V) - (local.get $y) - ) - (block - (local.set $ca - (i32.sub - (local.get $V) - (local.get $y) - ) - ) - (local.set $ea - (i32.load - (i32.const 1228) - ) - ) - (if - (i32.gt_u - (local.get $ca) - (i32.const 15) - ) - (block - (local.set $da - (i32.add - (local.get $ea) - (local.get $y) - ) - ) - (i32.store - (i32.const 1228) - (local.get $da) - ) - (i32.store - (i32.const 1216) - (local.get $ca) - ) - (i32.store - (i32.add - (local.get $da) - (i32.const 4) - ) - (i32.or - (local.get $ca) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $da) - (local.get $ca) - ) - (local.get $ca) - ) - (i32.store - (i32.add - (local.get $ea) - (i32.const 4) - ) - (i32.or - (local.get $y) - (i32.const 3) - ) - ) - ) - (block - (i32.store - (i32.const 1216) - (i32.const 0) - ) - (i32.store - (i32.const 1228) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $ea) - (i32.const 4) - ) - (i32.or - (local.get $V) - (i32.const 3) - ) - ) - (local.set $ca - (i32.add - (i32.add - (local.get $ea) - (local.get $V) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $ca) - (i32.or - (i32.load - (local.get $ca) - ) - (i32.const 1) - ) - ) - ) - ) - (local.set $p - (i32.add - (local.get $ea) - (i32.const 8) - ) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - (local.set $ea - (i32.load - (i32.const 1220) - ) - ) - (if - (i32.gt_u - (local.get $ea) - (local.get $y) - ) - (block - (local.set $ca - (i32.sub - (local.get $ea) - (local.get $y) - ) - ) - (i32.store - (i32.const 1220) - (local.get $ca) - ) - (local.set $ea - (i32.load - (i32.const 1232) - ) - ) - (local.set $V - (i32.add - (local.get $ea) - (local.get $y) - ) - ) - (i32.store - (i32.const 1232) - (local.get $V) - ) - (i32.store - (i32.add - (local.get $V) - (i32.const 4) - ) - (i32.or - (local.get $ca) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $ea) - (i32.const 4) - ) - (i32.or - (local.get $y) - (i32.const 3) - ) - ) - (local.set $p - (i32.add - (local.get $ea) - (i32.const 8) - ) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - (if - (i32.eqz - (i32.load - (i32.const 1680) - ) - ) - (block - (i32.store - (i32.const 1688) - (i32.const 4096) - ) - (i32.store - (i32.const 1684) - (i32.const 4096) - ) - (i32.store - (i32.const 1692) - (i32.const -1) - ) - (i32.store - (i32.const 1696) - (i32.const -1) - ) - (i32.store - (i32.const 1700) - (i32.const 0) - ) - (i32.store - (i32.const 1652) - (i32.const 0) - ) - (local.set $ea - (i32.xor - (i32.and - (local.get $c) - (i32.const -16) - ) - (i32.const 1431655768) - ) - ) - (i32.store - (local.get $c) - (local.get $ea) - ) - (i32.store - (i32.const 1680) - (local.get $ea) - ) - ) - ) - (local.set $ea - (i32.add - (local.get $y) - (i32.const 48) - ) - ) - (local.set $c - (i32.load - (i32.const 1688) - ) - ) - (local.set $ca - (i32.add - (local.get $y) - (i32.const 47) - ) - ) - (local.set $V - (i32.add - (local.get $c) - (local.get $ca) - ) - ) - (local.set $da - (i32.sub - (i32.const 0) - (local.get $c) - ) - ) - (local.set $c - (i32.and - (local.get $V) - (local.get $da) - ) - ) - (if - (i32.le_u - (local.get $c) - (local.get $y) - ) - (block - (local.set $p - (i32.const 0) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - (local.set $U - (i32.load - (i32.const 1648) - ) - ) - (if - (local.get $U) - (block - (local.set $ba - (i32.load - (i32.const 1640) - ) - ) - (local.set $aa - (i32.add - (local.get $ba) - (local.get $c) - ) - ) - (if - (i32.or - (i32.le_u - (local.get $aa) - (local.get $ba) - ) - (i32.gt_u - (local.get $aa) - (local.get $U) - ) - ) - (block - (local.set $p - (i32.const 0) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - ) - ) - (block $label$break$b - (if - (i32.eqz - (i32.and - (i32.load - (i32.const 1652) - ) - (i32.const 4) - ) - ) - (block - (local.set $U - (i32.load - (i32.const 1232) - ) - ) - (block $label$break$c - (if - (i32.eqz - (local.get $U) - ) - (local.set $N - (i32.const 171) - ) - (block - (local.set $aa - (i32.const 1656) - ) - (loop $while-in32 - (block $while-out31 - (local.set $ba - (i32.load - (local.get $aa) - ) - ) - (if - (i32.le_u - (local.get $ba) - (local.get $U) - ) - (block - (local.set $$ - (i32.add - (local.get $aa) - (i32.const 4) - ) - ) - (if - (i32.gt_u - (i32.add - (local.get $ba) - (i32.load - (local.get $$) - ) - ) - (local.get $U) - ) - (block - (local.set $fa - (local.get $aa) - ) - (local.set $ga - (local.get $$) - ) - (br $while-out31) - ) - ) - ) - ) - (local.set $aa - (i32.load - (i32.add - (local.get $aa) - (i32.const 8) - ) - ) - ) - (if - (i32.eqz - (local.get $aa) - ) - (block - (local.set $N - (i32.const 171) - ) - (br $label$break$c) - ) - ) - (br $while-in32) - ) - ) - (local.set $aa - (i32.and - (i32.sub - (local.get $V) - (i32.load - (i32.const 1220) - ) - ) - (local.get $da) - ) - ) - (if - (i32.lt_u - (local.get $aa) - (i32.const 2147483647) - ) - (block - (local.set $$ - (call $ta - (local.get $aa) - ) - ) - (if - (i32.eq - (local.get $$) - (i32.add - (i32.load - (local.get $fa) - ) - (i32.load - (local.get $ga) - ) - ) - ) - (if - (i32.ne - (local.get $$) - (i32.const -1) - ) - (block - (local.set $ha - (local.get $$) - ) - (local.set $ia - (local.get $aa) - ) - (local.set $N - (i32.const 191) - ) - (br $label$break$b) - ) - ) - (block - (local.set $ja - (local.get $$) - ) - (local.set $ka - (local.get $aa) - ) - (local.set $N - (i32.const 181) - ) - ) - ) - ) - ) - ) - ) - ) - (block $do-once33 - (if - (i32.eq - (local.get $N) - (i32.const 171) - ) - (block - (local.set $U - (call $ta - (i32.const 0) - ) - ) - (if - (i32.ne - (local.get $U) - (i32.const -1) - ) - (block - (local.set $e - (local.get $U) - ) - (local.set $aa - (i32.load - (i32.const 1684) - ) - ) - (local.set $$ - (i32.add - (local.get $aa) - (i32.const -1) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $$) - (local.get $e) - ) - ) - (local.set $la - (local.get $c) - ) - (local.set $la - (i32.add - (i32.sub - (local.get $c) - (local.get $e) - ) - (i32.and - (i32.add - (local.get $$) - (local.get $e) - ) - (i32.sub - (i32.const 0) - (local.get $aa) - ) - ) - ) - ) - ) - (local.set $aa - (i32.load - (i32.const 1640) - ) - ) - (local.set $e - (i32.add - (local.get $aa) - (local.get $la) - ) - ) - (if - (i32.and - (i32.gt_u - (local.get $la) - (local.get $y) - ) - (i32.lt_u - (local.get $la) - (i32.const 2147483647) - ) - ) - (block - (local.set $$ - (i32.load - (i32.const 1648) - ) - ) - (if - (local.get $$) - (if - (i32.or - (i32.le_u - (local.get $e) - (local.get $aa) - ) - (i32.gt_u - (local.get $e) - (local.get $$) - ) - ) - (br $do-once33) - ) - ) - (local.set $$ - (call $ta - (local.get $la) - ) - ) - (if - (i32.eq - (local.get $$) - (local.get $U) - ) - (block - (local.set $ha - (local.get $U) - ) - (local.set $ia - (local.get $la) - ) - (local.set $N - (i32.const 191) - ) - (br $label$break$b) - ) - (block - (local.set $ja - (local.get $$) - ) - (local.set $ka - (local.get $la) - ) - (local.set $N - (i32.const 181) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (block $label$break$d - (if - (i32.eq - (local.get $N) - (i32.const 181) - ) - (block - (local.set $$ - (i32.sub - (i32.const 0) - (local.get $ka) - ) - ) - (block $do-once36 - (if - (i32.and - (i32.gt_u - (local.get $ea) - (local.get $ka) - ) - (i32.and - (i32.lt_u - (local.get $ka) - (i32.const 2147483647) - ) - (i32.ne - (local.get $ja) - (i32.const -1) - ) - ) - ) - (block - (local.set $U - (i32.load - (i32.const 1688) - ) - ) - (local.set $e - (i32.and - (i32.add - (i32.sub - (local.get $ca) - (local.get $ka) - ) - (local.get $U) - ) - (i32.sub - (i32.const 0) - (local.get $U) - ) - ) - ) - (if - (i32.lt_u - (local.get $e) - (i32.const 2147483647) - ) - (if - (i32.eq - (call $ta - (local.get $e) - ) - (i32.const -1) - ) - (block - (drop - (call $ta - (local.get $$) - ) - ) - (br $label$break$d) - ) - (block - (local.set $ma - (i32.add - (local.get $e) - (local.get $ka) - ) - ) - (br $do-once36) - ) - ) - (local.set $ma - (local.get $ka) - ) - ) - ) - (local.set $ma - (local.get $ka) - ) - ) - ) - (if - (i32.ne - (local.get $ja) - (i32.const -1) - ) - (block - (local.set $ha - (local.get $ja) - ) - (local.set $ia - (local.get $ma) - ) - (local.set $N - (i32.const 191) - ) - (br $label$break$b) - ) - ) - ) - ) - ) - (i32.store - (i32.const 1652) - (i32.or - (i32.load - (i32.const 1652) - ) - (i32.const 4) - ) - ) - (local.set $N - (i32.const 188) - ) - ) - (local.set $N - (i32.const 188) - ) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 188) - ) - (if - (i32.lt_u - (local.get $c) - (i32.const 2147483647) - ) - (block - (local.set $ma - (call $ta - (local.get $c) - ) - ) - (local.set $c - (call $ta - (i32.const 0) - ) - ) - (if - (i32.and - (i32.lt_u - (local.get $ma) - (local.get $c) - ) - (i32.and - (i32.ne - (local.get $ma) - (i32.const -1) - ) - (i32.ne - (local.get $c) - (i32.const -1) - ) - ) - ) - (block - (local.set $ja - (i32.sub - (local.get $c) - (local.get $ma) - ) - ) - (if - (i32.gt_u - (local.get $ja) - (i32.add - (local.get $y) - (i32.const 40) - ) - ) - (block - (local.set $ha - (local.get $ma) - ) - (local.set $ia - (local.get $ja) - ) - (local.set $N - (i32.const 191) - ) - ) - ) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 191) - ) - (block - (local.set $ja - (i32.add - (i32.load - (i32.const 1640) - ) - (local.get $ia) - ) - ) - (i32.store - (i32.const 1640) - (local.get $ja) - ) - (if - (i32.gt_u - (local.get $ja) - (i32.load - (i32.const 1644) - ) - ) - (i32.store - (i32.const 1644) - (local.get $ja) - ) - ) - (local.set $ja - (i32.load - (i32.const 1232) - ) - ) - (block $do-once38 - (if - (i32.eqz - (local.get $ja) - ) - (block - (local.set $ma - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.or - (i32.eq - (local.get $ma) - (i32.const 0) - ) - (i32.lt_u - (local.get $ha) - (local.get $ma) - ) - ) - (i32.store - (i32.const 1224) - (local.get $ha) - ) - ) - (i32.store - (i32.const 1656) - (local.get $ha) - ) - (i32.store - (i32.const 1660) - (local.get $ia) - ) - (i32.store - (i32.const 1668) - (i32.const 0) - ) - (i32.store - (i32.const 1244) - (i32.load - (i32.const 1680) - ) - ) - (i32.store - (i32.const 1240) - (i32.const -1) - ) - (local.set $ma - (i32.const 0) - ) - (loop $do-in - (block $do-out - (local.set $c - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $ma) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $c) - (i32.const 12) - ) - (local.get $c) - ) - (i32.store - (i32.add - (local.get $c) - (i32.const 8) - ) - (local.get $c) - ) - (local.set $ma - (i32.add - (local.get $ma) - (i32.const 1) - ) - ) - (br_if $do-in - (i32.ne - (local.get $ma) - (i32.const 32) - ) - ) - ) - ) - (local.set $ma - (i32.add - (local.get $ha) - (i32.const 8) - ) - ) - (local.set $c - (if (result i32) - (i32.eq - (i32.and - (local.get $ma) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $ma) - ) - (i32.const 7) - ) - ) - ) - (local.set $ma - (i32.add - (local.get $ha) - (local.get $c) - ) - ) - (local.set $ka - (i32.sub - (i32.add - (local.get $ia) - (i32.const -40) - ) - (local.get $c) - ) - ) - (i32.store - (i32.const 1232) - (local.get $ma) - ) - (i32.store - (i32.const 1220) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ma) - (i32.const 4) - ) - (i32.or - (local.get $ka) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (i32.add - (local.get $ma) - (local.get $ka) - ) - (i32.const 4) - ) - (i32.const 40) - ) - (i32.store - (i32.const 1236) - (i32.load - (i32.const 1696) - ) - ) - ) - (block - (local.set $ka - (i32.const 1656) - ) - (loop $do-in41 - (block $do-out40 - (local.set $ma - (i32.load - (local.get $ka) - ) - ) - (local.set $c - (i32.add - (local.get $ka) - (i32.const 4) - ) - ) - (local.set $ca - (i32.load - (local.get $c) - ) - ) - (if - (i32.eq - (local.get $ha) - (i32.add - (local.get $ma) - (local.get $ca) - ) - ) - (block - (local.set $na - (local.get $ma) - ) - (local.set $oa - (local.get $c) - ) - (local.set $pa - (local.get $ca) - ) - (local.set $ra - (local.get $ka) - ) - (local.set $N - (i32.const 201) - ) - (br $do-out40) - ) - ) - (local.set $ka - (i32.load - (i32.add - (local.get $ka) - (i32.const 8) - ) - ) - ) - (br_if $do-in41 - (i32.ne - (local.get $ka) - (i32.const 0) - ) - ) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 201) - ) - (if - (i32.eqz - (i32.and - (i32.load - (i32.add - (local.get $ra) - (i32.const 12) - ) - ) - (i32.const 8) - ) - ) - (if - (i32.and - (i32.lt_u - (local.get $ja) - (local.get $ha) - ) - (i32.ge_u - (local.get $ja) - (local.get $na) - ) - ) - (block - (i32.store - (local.get $oa) - (i32.add - (local.get $pa) - (local.get $ia) - ) - ) - (local.set $ka - (i32.add - (local.get $ja) - (i32.const 8) - ) - ) - (local.set $ca - (if (result i32) - (i32.eq - (i32.and - (local.get $ka) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $ka) - ) - (i32.const 7) - ) - ) - ) - (local.set $ka - (i32.add - (local.get $ja) - (local.get $ca) - ) - ) - (local.set $c - (i32.add - (i32.sub - (local.get $ia) - (local.get $ca) - ) - (i32.load - (i32.const 1220) - ) - ) - ) - (i32.store - (i32.const 1232) - (local.get $ka) - ) - (i32.store - (i32.const 1220) - (local.get $c) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 4) - ) - (i32.or - (local.get $c) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (i32.add - (local.get $ka) - (local.get $c) - ) - (i32.const 4) - ) - (i32.const 40) - ) - (i32.store - (i32.const 1236) - (i32.load - (i32.const 1696) - ) - ) - (br $do-once38) - ) - ) - ) - ) - (local.set $c - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $ha) - (local.get $c) - ) - (block - (i32.store - (i32.const 1224) - (local.get $ha) - ) - (local.set $sa - (local.get $ha) - ) - ) - (local.set $sa - (local.get $c) - ) - ) - (local.set $c - (i32.add - (local.get $ha) - (local.get $ia) - ) - ) - (local.set $ka - (i32.const 1656) - ) - (loop $while-in43 - (block $while-out42 - (if - (i32.eq - (i32.load - (local.get $ka) - ) - (local.get $c) - ) - (block - (local.set $ua - (local.get $ka) - ) - (local.set $va - (local.get $ka) - ) - (local.set $N - (i32.const 209) - ) - (br $while-out42) - ) - ) - (local.set $ka - (i32.load - (i32.add - (local.get $ka) - (i32.const 8) - ) - ) - ) - (if - (i32.eqz - (local.get $ka) - ) - (block - (local.set $wa - (i32.const 1656) - ) - (br $while-out42) - ) - ) - (br $while-in43) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 209) - ) - (if - (i32.eqz - (i32.and - (i32.load - (i32.add - (local.get $va) - (i32.const 12) - ) - ) - (i32.const 8) - ) - ) - (block - (i32.store - (local.get $ua) - (local.get $ha) - ) - (local.set $ka - (i32.add - (local.get $va) - (i32.const 4) - ) - ) - (i32.store - (local.get $ka) - (i32.add - (i32.load - (local.get $ka) - ) - (local.get $ia) - ) - ) - (local.set $ka - (i32.add - (local.get $ha) - (i32.const 8) - ) - ) - (local.set $ca - (i32.add - (local.get $ha) - (if (result i32) - (i32.eq - (i32.and - (local.get $ka) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $ka) - ) - (i32.const 7) - ) - ) - ) - ) - (local.set $ka - (i32.add - (local.get $c) - (i32.const 8) - ) - ) - (local.set $ma - (i32.add - (local.get $c) - (if (result i32) - (i32.eq - (i32.and - (local.get $ka) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $ka) - ) - (i32.const 7) - ) - ) - ) - ) - (local.set $ka - (i32.add - (local.get $ca) - (local.get $y) - ) - ) - (local.set $ea - (i32.sub - (i32.sub - (local.get $ma) - (local.get $ca) - ) - (local.get $y) - ) - ) - (i32.store - (i32.add - (local.get $ca) - (i32.const 4) - ) - (i32.or - (local.get $y) - (i32.const 3) - ) - ) - (block $do-once44 - (if - (i32.eq - (local.get $ma) - (local.get $ja) - ) - (block - (local.set $la - (i32.add - (i32.load - (i32.const 1220) - ) - (local.get $ea) - ) - ) - (i32.store - (i32.const 1220) - (local.get $la) - ) - (i32.store - (i32.const 1232) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 4) - ) - (i32.or - (local.get $la) - (i32.const 1) - ) - ) - ) - (block - (if - (i32.eq - (local.get $ma) - (i32.load - (i32.const 1228) - ) - ) - (block - (local.set $la - (i32.add - (i32.load - (i32.const 1216) - ) - (local.get $ea) - ) - ) - (i32.store - (i32.const 1216) - (local.get $la) - ) - (i32.store - (i32.const 1228) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 4) - ) - (i32.or - (local.get $la) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $ka) - (local.get $la) - ) - (local.get $la) - ) - (br $do-once44) - ) - ) - (local.set $la - (i32.load - (i32.add - (local.get $ma) - (i32.const 4) - ) - ) - ) - (if - (i32.eq - (i32.and - (local.get $la) - (i32.const 3) - ) - (i32.const 1) - ) - (block - (local.set $ga - (i32.and - (local.get $la) - (i32.const -8) - ) - ) - (local.set $fa - (i32.shr_u - (local.get $la) - (i32.const 3) - ) - ) - (block $label$break$e - (if - (i32.lt_u - (local.get $la) - (i32.const 256) - ) - (block - (local.set $da - (i32.load - (i32.add - (local.get $ma) - (i32.const 8) - ) - ) - ) - (local.set $V - (i32.load - (i32.add - (local.get $ma) - (i32.const 12) - ) - ) - ) - (local.set $$ - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $fa) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (block $do-once47 - (if - (i32.ne - (local.get $da) - (local.get $$) - ) - (block - (if - (i32.lt_u - (local.get $da) - (local.get $sa) - ) - (call $qa) - ) - (if - (i32.eq - (i32.load - (i32.add - (local.get $da) - (i32.const 12) - ) - ) - (local.get $ma) - ) - (br $do-once47) - ) - (call $qa) - ) - ) - ) - (if - (i32.eq - (local.get $V) - (local.get $da) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (i32.load - (i32.const 1208) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $fa) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$e) - ) - ) - (block $do-once49 - (if - (i32.eq - (local.get $V) - (local.get $$) - ) - (local.set $xa - (i32.add - (local.get $V) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $V) - (local.get $sa) - ) - (call $qa) - ) - (local.set $e - (i32.add - (local.get $V) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $e) - ) - (local.get $ma) - ) - (block - (local.set $xa - (local.get $e) - ) - (br $do-once49) - ) - ) - (call $qa) - ) - ) - ) - (i32.store - (i32.add - (local.get $da) - (i32.const 12) - ) - (local.get $V) - ) - (i32.store - (local.get $xa) - (local.get $da) - ) - ) - (block - (local.set $$ - (i32.load - (i32.add - (local.get $ma) - (i32.const 24) - ) - ) - ) - (local.set $e - (i32.load - (i32.add - (local.get $ma) - (i32.const 12) - ) - ) - ) - (block $do-once51 - (if - (i32.eq - (local.get $e) - (local.get $ma) - ) - (block - (local.set $U - (i32.add - (local.get $ma) - (i32.const 16) - ) - ) - (local.set $aa - (i32.add - (local.get $U) - (i32.const 4) - ) - ) - (local.set $ba - (i32.load - (local.get $aa) - ) - ) - (if - (i32.eqz - (local.get $ba) - ) - (block - (local.set $W - (i32.load - (local.get $U) - ) - ) - (if - (i32.eqz - (local.get $W) - ) - (block - (local.set $ya - (i32.const 0) - ) - (br $do-once51) - ) - (block - (local.set $za - (local.get $W) - ) - (local.set $Aa - (local.get $U) - ) - ) - ) - ) - (block - (local.set $za - (local.get $ba) - ) - (local.set $Aa - (local.get $aa) - ) - ) - ) - (loop $while-in54 - (block $while-out53 - (local.set $aa - (i32.add - (local.get $za) - (i32.const 20) - ) - ) - (local.set $ba - (i32.load - (local.get $aa) - ) - ) - (if - (local.get $ba) - (block - (local.set $za - (local.get $ba) - ) - (local.set $Aa - (local.get $aa) - ) - (br $while-in54) - ) - ) - (local.set $aa - (i32.add - (local.get $za) - (i32.const 16) - ) - ) - (local.set $ba - (i32.load - (local.get $aa) - ) - ) - (if - (i32.eqz - (local.get $ba) - ) - (block - (local.set $Ba - (local.get $za) - ) - (local.set $Ca - (local.get $Aa) - ) - (br $while-out53) - ) - (block - (local.set $za - (local.get $ba) - ) - (local.set $Aa - (local.get $aa) - ) - ) - ) - (br $while-in54) - ) - ) - (if - (i32.lt_u - (local.get $Ca) - (local.get $sa) - ) - (call $qa) - (block - (i32.store - (local.get $Ca) - (i32.const 0) - ) - (local.set $ya - (local.get $Ba) - ) - (br $do-once51) - ) - ) - ) - (block - (local.set $aa - (i32.load - (i32.add - (local.get $ma) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $aa) - (local.get $sa) - ) - (call $qa) - ) - (local.set $ba - (i32.add - (local.get $aa) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $ba) - ) - (local.get $ma) - ) - (call $qa) - ) - (local.set $U - (i32.add - (local.get $e) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $U) - ) - (local.get $ma) - ) - (block - (i32.store - (local.get $ba) - (local.get $e) - ) - (i32.store - (local.get $U) - (local.get $aa) - ) - (local.set $ya - (local.get $e) - ) - (br $do-once51) - ) - (call $qa) - ) - ) - ) - ) - (if - (i32.eqz - (local.get $$) - ) - (br $label$break$e) - ) - (local.set $e - (i32.load - (i32.add - (local.get $ma) - (i32.const 28) - ) - ) - ) - (local.set $da - (i32.add - (i32.const 1512) - (i32.shl - (local.get $e) - (i32.const 2) - ) - ) - ) - (block $do-once55 - (if - (i32.eq - (local.get $ma) - (i32.load - (local.get $da) - ) - ) - (block - (i32.store - (local.get $da) - (local.get $ya) - ) - (if - (local.get $ya) - (br $do-once55) - ) - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $e) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$e) - ) - (block - (if - (i32.lt_u - (local.get $$) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $V - (i32.add - (local.get $$) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $V) - ) - (local.get $ma) - ) - (i32.store - (local.get $V) - (local.get $ya) - ) - (i32.store - (i32.add - (local.get $$) - (i32.const 20) - ) - (local.get $ya) - ) - ) - (if - (i32.eqz - (local.get $ya) - ) - (br $label$break$e) - ) - ) - ) - ) - (local.set $e - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $ya) - (local.get $e) - ) - (call $qa) - ) - (i32.store - (i32.add - (local.get $ya) - (i32.const 24) - ) - (local.get $$) - ) - (local.set $da - (i32.add - (local.get $ma) - (i32.const 16) - ) - ) - (local.set $V - (i32.load - (local.get $da) - ) - ) - (block $do-once57 - (if - (local.get $V) - (if - (i32.lt_u - (local.get $V) - (local.get $e) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $ya) - (i32.const 16) - ) - (local.get $V) - ) - (i32.store - (i32.add - (local.get $V) - (i32.const 24) - ) - (local.get $ya) - ) - (br $do-once57) - ) - ) - ) - ) - (local.set $V - (i32.load - (i32.add - (local.get $da) - (i32.const 4) - ) - ) - ) - (if - (i32.eqz - (local.get $V) - ) - (br $label$break$e) - ) - (if - (i32.lt_u - (local.get $V) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $ya) - (i32.const 20) - ) - (local.get $V) - ) - (i32.store - (i32.add - (local.get $V) - (i32.const 24) - ) - (local.get $ya) - ) - (br $label$break$e) - ) - ) - ) - ) - ) - (local.set $Da - (i32.add - (local.get $ma) - (local.get $ga) - ) - ) - (local.set $Ea - (i32.add - (local.get $ga) - (local.get $ea) - ) - ) - ) - (block - (local.set $Da - (local.get $ma) - ) - (local.set $Ea - (local.get $ea) - ) - ) - ) - (local.set $fa - (i32.add - (local.get $Da) - (i32.const 4) - ) - ) - (i32.store - (local.get $fa) - (i32.and - (i32.load - (local.get $fa) - ) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 4) - ) - (i32.or - (local.get $Ea) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $ka) - (local.get $Ea) - ) - (local.get $Ea) - ) - (local.set $fa - (i32.shr_u - (local.get $Ea) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $Ea) - (i32.const 256) - ) - (block - (local.set $la - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $fa) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $V - (i32.load - (i32.const 1208) - ) - ) - (local.set $e - (i32.shl - (i32.const 1) - (local.get $fa) - ) - ) - (block $do-once59 - (if - (i32.eqz - (i32.and - (local.get $V) - (local.get $e) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $V) - (local.get $e) - ) - ) - (local.set $Fa - (i32.add - (local.get $la) - (i32.const 8) - ) - ) - (local.set $Ga - (local.get $la) - ) - ) - (block - (local.set $fa - (i32.add - (local.get $la) - (i32.const 8) - ) - ) - (local.set $$ - (i32.load - (local.get $fa) - ) - ) - (if - (i32.ge_u - (local.get $$) - (i32.load - (i32.const 1224) - ) - ) - (block - (local.set $Fa - (local.get $fa) - ) - (local.set $Ga - (local.get $$) - ) - (br $do-once59) - ) - ) - (call $qa) - ) - ) - ) - (i32.store - (local.get $Fa) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $Ga) - (i32.const 12) - ) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 8) - ) - (local.get $Ga) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 12) - ) - (local.get $la) - ) - (br $do-once44) - ) - ) - (local.set $e - (i32.shr_u - (local.get $Ea) - (i32.const 8) - ) - ) - (block $do-once61 - (if - (i32.eqz - (local.get $e) - ) - (local.set $Ha - (i32.const 0) - ) - (block - (if - (i32.gt_u - (local.get $Ea) - (i32.const 16777215) - ) - (block - (local.set $Ha - (i32.const 31) - ) - (br $do-once61) - ) - ) - (local.set $V - (i32.and - (i32.shr_u - (i32.add - (local.get $e) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $ga - (i32.shl - (local.get $e) - (local.get $V) - ) - ) - (local.set $$ - (i32.and - (i32.shr_u - (i32.add - (local.get $ga) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $fa - (i32.shl - (local.get $ga) - (local.get $$) - ) - ) - (local.set $ga - (i32.and - (i32.shr_u - (i32.add - (local.get $fa) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $aa - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $$) - (local.get $V) - ) - (local.get $ga) - ) - ) - (i32.shr_u - (i32.shl - (local.get $fa) - (local.get $ga) - ) - (i32.const 15) - ) - ) - ) - (local.set $Ha - (i32.or - (i32.and - (i32.shr_u - (local.get $Ea) - (i32.add - (local.get $aa) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $aa) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.set $e - (i32.add - (i32.const 1512) - (i32.shl - (local.get $Ha) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 28) - ) - (local.get $Ha) - ) - (local.set $la - (i32.add - (local.get $ka) - (i32.const 16) - ) - ) - (i32.store - (i32.add - (local.get $la) - (i32.const 4) - ) - (i32.const 0) - ) - (i32.store - (local.get $la) - (i32.const 0) - ) - (local.set $la - (i32.load - (i32.const 1212) - ) - ) - (local.set $aa - (i32.shl - (i32.const 1) - (local.get $Ha) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $la) - (local.get $aa) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $la) - (local.get $aa) - ) - ) - (i32.store - (local.get $e) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 24) - ) - (local.get $e) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 12) - ) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 8) - ) - (local.get $ka) - ) - (br $do-once44) - ) - ) - (local.set $aa - (i32.shl - (local.get $Ea) - (if (result i32) - (i32.eq - (local.get $Ha) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $Ha) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $la - (i32.load - (local.get $e) - ) - ) - (loop $while-in64 - (block $while-out63 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $la) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $Ea) - ) - (block - (local.set $Ia - (local.get $la) - ) - (local.set $N - (i32.const 279) - ) - (br $while-out63) - ) - ) - (local.set $e - (i32.add - (i32.add - (local.get $la) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $aa) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $ga - (i32.load - (local.get $e) - ) - ) - (if - (i32.eqz - (local.get $ga) - ) - (block - (local.set $Ja - (local.get $e) - ) - (local.set $Ka - (local.get $la) - ) - (local.set $N - (i32.const 276) - ) - (br $while-out63) - ) - (block - (local.set $aa - (i32.shl - (local.get $aa) - (i32.const 1) - ) - ) - (local.set $la - (local.get $ga) - ) - ) - ) - (br $while-in64) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 276) - ) - (if - (i32.lt_u - (local.get $Ja) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $Ja) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 24) - ) - (local.get $Ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 12) - ) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 8) - ) - (local.get $ka) - ) - (br $do-once44) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 279) - ) - (block - (local.set $la - (i32.add - (local.get $Ia) - (i32.const 8) - ) - ) - (local.set $aa - (i32.load - (local.get $la) - ) - ) - (local.set $ga - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $aa) - (local.get $ga) - ) - (i32.ge_u - (local.get $Ia) - (local.get $ga) - ) - ) - (block - (i32.store - (i32.add - (local.get $aa) - (i32.const 12) - ) - (local.get $ka) - ) - (i32.store - (local.get $la) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 8) - ) - (local.get $aa) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 12) - ) - (local.get $Ia) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once44) - ) - (call $qa) - ) - ) - ) - ) - ) - ) - ) - (local.set $p - (i32.add - (local.get $ca) - (i32.const 8) - ) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - (local.set $wa - (i32.const 1656) - ) - ) - ) - (loop $while-in66 - (block $while-out65 - (local.set $ka - (i32.load - (local.get $wa) - ) - ) - (if - (i32.le_u - (local.get $ka) - (local.get $ja) - ) - (block - (local.set $ea - (i32.add - (local.get $ka) - (i32.load - (i32.add - (local.get $wa) - (i32.const 4) - ) - ) - ) - ) - (if - (i32.gt_u - (local.get $ea) - (local.get $ja) - ) - (block - (local.set $La - (local.get $ea) - ) - (br $while-out65) - ) - ) - ) - ) - (local.set $wa - (i32.load - (i32.add - (local.get $wa) - (i32.const 8) - ) - ) - ) - (br $while-in66) - ) - ) - (local.set $ca - (i32.add - (local.get $La) - (i32.const -47) - ) - ) - (local.set $ea - (i32.add - (local.get $ca) - (i32.const 8) - ) - ) - (local.set $ka - (i32.add - (local.get $ca) - (if (result i32) - (i32.eq - (i32.and - (local.get $ea) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $ea) - ) - (i32.const 7) - ) - ) - ) - ) - (local.set $ea - (i32.add - (local.get $ja) - (i32.const 16) - ) - ) - (local.set $ca - (if (result i32) - (i32.lt_u - (local.get $ka) - (local.get $ea) - ) - (local.get $ja) - (local.get $ka) - ) - ) - (local.set $ka - (i32.add - (local.get $ca) - (i32.const 8) - ) - ) - (local.set $ma - (i32.add - (local.get $ha) - (i32.const 8) - ) - ) - (local.set $c - (if (result i32) - (i32.eq - (i32.and - (local.get $ma) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $ma) - ) - (i32.const 7) - ) - ) - ) - (local.set $ma - (i32.add - (local.get $ha) - (local.get $c) - ) - ) - (local.set $aa - (i32.sub - (i32.add - (local.get $ia) - (i32.const -40) - ) - (local.get $c) - ) - ) - (i32.store - (i32.const 1232) - (local.get $ma) - ) - (i32.store - (i32.const 1220) - (local.get $aa) - ) - (i32.store - (i32.add - (local.get $ma) - (i32.const 4) - ) - (i32.or - (local.get $aa) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (i32.add - (local.get $ma) - (local.get $aa) - ) - (i32.const 4) - ) - (i32.const 40) - ) - (i32.store - (i32.const 1236) - (i32.load - (i32.const 1696) - ) - ) - (local.set $aa - (i32.add - (local.get $ca) - (i32.const 4) - ) - ) - (i32.store - (local.get $aa) - (i32.const 27) - ) - (i32.store - (local.get $ka) - (i32.load - (i32.const 1656) - ) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 4) - ) - (i32.load - (i32.const 1660) - ) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 8) - ) - (i32.load - (i32.const 1664) - ) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 12) - ) - (i32.load - (i32.const 1668) - ) - ) - (i32.store - (i32.const 1656) - (local.get $ha) - ) - (i32.store - (i32.const 1660) - (local.get $ia) - ) - (i32.store - (i32.const 1668) - (i32.const 0) - ) - (i32.store - (i32.const 1664) - (local.get $ka) - ) - (local.set $ka - (i32.add - (local.get $ca) - (i32.const 24) - ) - ) - (loop $do-in68 - (block $do-out67 - (local.set $ka - (i32.add - (local.get $ka) - (i32.const 4) - ) - ) - (i32.store - (local.get $ka) - (i32.const 7) - ) - (br_if $do-in68 - (i32.lt_u - (i32.add - (local.get $ka) - (i32.const 4) - ) - (local.get $La) - ) - ) - ) - ) - (if - (i32.ne - (local.get $ca) - (local.get $ja) - ) - (block - (local.set $ka - (i32.sub - (local.get $ca) - (local.get $ja) - ) - ) - (i32.store - (local.get $aa) - (i32.and - (i32.load - (local.get $aa) - ) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 4) - ) - (i32.or - (local.get $ka) - (i32.const 1) - ) - ) - (i32.store - (local.get $ca) - (local.get $ka) - ) - (local.set $ma - (i32.shr_u - (local.get $ka) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $ka) - (i32.const 256) - ) - (block - (local.set $c - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $ma) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $la - (i32.load - (i32.const 1208) - ) - ) - (local.set $ga - (i32.shl - (i32.const 1) - (local.get $ma) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $la) - (local.get $ga) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $la) - (local.get $ga) - ) - ) - (local.set $Ma - (i32.add - (local.get $c) - (i32.const 8) - ) - ) - (local.set $Na - (local.get $c) - ) - ) - (block - (local.set $ga - (i32.add - (local.get $c) - (i32.const 8) - ) - ) - (local.set $la - (i32.load - (local.get $ga) - ) - ) - (if - (i32.lt_u - (local.get $la) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $Ma - (local.get $ga) - ) - (local.set $Na - (local.get $la) - ) - ) - ) - ) - ) - (i32.store - (local.get $Ma) - (local.get $ja) - ) - (i32.store - (i32.add - (local.get $Na) - (i32.const 12) - ) - (local.get $ja) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 8) - ) - (local.get $Na) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 12) - ) - (local.get $c) - ) - (br $do-once38) - ) - ) - (local.set $c - (i32.shr_u - (local.get $ka) - (i32.const 8) - ) - ) - (if - (i32.eqz - (local.get $c) - ) - (local.set $Oa - (i32.const 0) - ) - (if - (i32.gt_u - (local.get $ka) - (i32.const 16777215) - ) - (local.set $Oa - (i32.const 31) - ) - (block - (local.set $la - (i32.and - (i32.shr_u - (i32.add - (local.get $c) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $ga - (i32.shl - (local.get $c) - (local.get $la) - ) - ) - (local.set $c - (i32.and - (i32.shr_u - (i32.add - (local.get $ga) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $ma - (i32.shl - (local.get $ga) - (local.get $c) - ) - ) - (local.set $ga - (i32.and - (i32.shr_u - (i32.add - (local.get $ma) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $e - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $c) - (local.get $la) - ) - (local.get $ga) - ) - ) - (i32.shr_u - (i32.shl - (local.get $ma) - (local.get $ga) - ) - (i32.const 15) - ) - ) - ) - (local.set $Oa - (i32.or - (i32.and - (i32.shr_u - (local.get $ka) - (i32.add - (local.get $e) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $e) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.set $e - (i32.add - (i32.const 1512) - (i32.shl - (local.get $Oa) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 28) - ) - (local.get $Oa) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 20) - ) - (i32.const 0) - ) - (i32.store - (local.get $ea) - (i32.const 0) - ) - (local.set $ga - (i32.load - (i32.const 1212) - ) - ) - (local.set $ma - (i32.shl - (i32.const 1) - (local.get $Oa) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $ga) - (local.get $ma) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $ga) - (local.get $ma) - ) - ) - (i32.store - (local.get $e) - (local.get $ja) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 24) - ) - (local.get $e) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 12) - ) - (local.get $ja) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 8) - ) - (local.get $ja) - ) - (br $do-once38) - ) - ) - (local.set $ma - (i32.shl - (local.get $ka) - (if (result i32) - (i32.eq - (local.get $Oa) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $Oa) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $ga - (i32.load - (local.get $e) - ) - ) - (loop $while-in70 - (block $while-out69 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $ga) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $ka) - ) - (block - (local.set $Pa - (local.get $ga) - ) - (local.set $N - (i32.const 305) - ) - (br $while-out69) - ) - ) - (local.set $e - (i32.add - (i32.add - (local.get $ga) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $ma) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $la - (i32.load - (local.get $e) - ) - ) - (if - (i32.eqz - (local.get $la) - ) - (block - (local.set $Ra - (local.get $e) - ) - (local.set $Sa - (local.get $ga) - ) - (local.set $N - (i32.const 302) - ) - (br $while-out69) - ) - (block - (local.set $ma - (i32.shl - (local.get $ma) - (i32.const 1) - ) - ) - (local.set $ga - (local.get $la) - ) - ) - ) - (br $while-in70) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 302) - ) - (if - (i32.lt_u - (local.get $Ra) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $Ra) - (local.get $ja) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 24) - ) - (local.get $Sa) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 12) - ) - (local.get $ja) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 8) - ) - (local.get $ja) - ) - (br $do-once38) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 305) - ) - (block - (local.set $ga - (i32.add - (local.get $Pa) - (i32.const 8) - ) - ) - (local.set $ma - (i32.load - (local.get $ga) - ) - ) - (local.set $ka - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $ma) - (local.get $ka) - ) - (i32.ge_u - (local.get $Pa) - (local.get $ka) - ) - ) - (block - (i32.store - (i32.add - (local.get $ma) - (i32.const 12) - ) - (local.get $ja) - ) - (i32.store - (local.get $ga) - (local.get $ja) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 8) - ) - (local.get $ma) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 12) - ) - (local.get $Pa) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once38) - ) - (call $qa) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (local.set $ja - (i32.load - (i32.const 1220) - ) - ) - (if - (i32.gt_u - (local.get $ja) - (local.get $y) - ) - (block - (local.set $Pa - (i32.sub - (local.get $ja) - (local.get $y) - ) - ) - (i32.store - (i32.const 1220) - (local.get $Pa) - ) - (local.set $ja - (i32.load - (i32.const 1232) - ) - ) - (local.set $N - (i32.add - (local.get $ja) - (local.get $y) - ) - ) - (i32.store - (i32.const 1232) - (local.get $N) - ) - (i32.store - (i32.add - (local.get $N) - (i32.const 4) - ) - (i32.or - (local.get $Pa) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 4) - ) - (i32.or - (local.get $y) - (i32.const 3) - ) - ) - (local.set $p - (i32.add - (local.get $ja) - (i32.const 8) - ) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - ) - ) - (local.set $ja - (call $Qa) - ) - (i32.store - (local.get $ja) - (i32.const 12) - ) - (local.set $p - (i32.const 0) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - (func $fb (; 14 ;) (param $a i32) - (local $b i32) - (local $c i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local $i i32) - (local $j i32) - (local $l i32) - (local $m i32) - (local $n i32) - (local $o i32) - (local $p i32) - (local $q i32) - (local $r i32) - (local $s i32) - (local $t i32) - (local $u i32) - (local $v i32) - (local $w i32) - (local $x i32) - (local $y i32) - (local $z i32) - (local $A i32) - (local $B i32) - (local $C i32) - (local $D i32) - (local $E i32) - (local $F i32) - (local $G i32) - (local $H i32) - (local $I i32) - (local $J i32) - (local $K i32) - (local $L i32) - (if - (i32.eqz - (local.get $a) - ) - (return) - ) - (local.set $b - (i32.add - (local.get $a) - (i32.const -8) - ) - ) - (local.set $c - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $b) - (local.get $c) - ) - (call $qa) - ) - (local.set $d - (i32.load - (i32.add - (local.get $a) - (i32.const -4) - ) - ) - ) - (local.set $a - (i32.and - (local.get $d) - (i32.const 3) - ) - ) - (if - (i32.eq - (local.get $a) - (i32.const 1) - ) - (call $qa) - ) - (local.set $e - (i32.and - (local.get $d) - (i32.const -8) - ) - ) - (local.set $f - (i32.add - (local.get $b) - (local.get $e) - ) - ) - (block $do-once - (if - (i32.eqz - (i32.and - (local.get $d) - (i32.const 1) - ) - ) - (block - (local.set $g - (i32.load - (local.get $b) - ) - ) - (if - (i32.eqz - (local.get $a) - ) - (return) - ) - (local.set $h - (i32.add - (local.get $b) - (i32.sub - (i32.const 0) - (local.get $g) - ) - ) - ) - (local.set $i - (i32.add - (local.get $g) - (local.get $e) - ) - ) - (if - (i32.lt_u - (local.get $h) - (local.get $c) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $h) - (i32.load - (i32.const 1228) - ) - ) - (block - (local.set $j - (i32.add - (local.get $f) - (i32.const 4) - ) - ) - (local.set $l - (i32.load - (local.get $j) - ) - ) - (if - (i32.ne - (i32.and - (local.get $l) - (i32.const 3) - ) - (i32.const 3) - ) - (block - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - (br $do-once) - ) - ) - (i32.store - (i32.const 1216) - (local.get $i) - ) - (i32.store - (local.get $j) - (i32.and - (local.get $l) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $h) - (i32.const 4) - ) - (i32.or - (local.get $i) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $h) - (local.get $i) - ) - (local.get $i) - ) - (return) - ) - ) - (local.set $l - (i32.shr_u - (local.get $g) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $g) - (i32.const 256) - ) - (block - (local.set $g - (i32.load - (i32.add - (local.get $h) - (i32.const 8) - ) - ) - ) - (local.set $j - (i32.load - (i32.add - (local.get $h) - (i32.const 12) - ) - ) - ) - (local.set $o - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $l) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (if - (i32.ne - (local.get $g) - (local.get $o) - ) - (block - (if - (i32.lt_u - (local.get $g) - (local.get $c) - ) - (call $qa) - ) - (if - (i32.ne - (i32.load - (i32.add - (local.get $g) - (i32.const 12) - ) - ) - (local.get $h) - ) - (call $qa) - ) - ) - ) - (if - (i32.eq - (local.get $j) - (local.get $g) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (i32.load - (i32.const 1208) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $l) - ) - (i32.const -1) - ) - ) - ) - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - (br $do-once) - ) - ) - (if - (i32.eq - (local.get $j) - (local.get $o) - ) - (local.set $p - (i32.add - (local.get $j) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $j) - (local.get $c) - ) - (call $qa) - ) - (local.set $o - (i32.add - (local.get $j) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $o) - ) - (local.get $h) - ) - (local.set $p - (local.get $o) - ) - (call $qa) - ) - ) - ) - (i32.store - (i32.add - (local.get $g) - (i32.const 12) - ) - (local.get $j) - ) - (i32.store - (local.get $p) - (local.get $g) - ) - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - (br $do-once) - ) - ) - (local.set $g - (i32.load - (i32.add - (local.get $h) - (i32.const 24) - ) - ) - ) - (local.set $j - (i32.load - (i32.add - (local.get $h) - (i32.const 12) - ) - ) - ) - (block $do-once0 - (if - (i32.eq - (local.get $j) - (local.get $h) - ) - (block - (local.set $o - (i32.add - (local.get $h) - (i32.const 16) - ) - ) - (local.set $l - (i32.add - (local.get $o) - (i32.const 4) - ) - ) - (local.set $q - (i32.load - (local.get $l) - ) - ) - (if - (i32.eqz - (local.get $q) - ) - (block - (local.set $r - (i32.load - (local.get $o) - ) - ) - (if - (i32.eqz - (local.get $r) - ) - (block - (local.set $s - (i32.const 0) - ) - (br $do-once0) - ) - (block - (local.set $t - (local.get $r) - ) - (local.set $u - (local.get $o) - ) - ) - ) - ) - (block - (local.set $t - (local.get $q) - ) - (local.set $u - (local.get $l) - ) - ) - ) - (loop $while-in - (block $while-out - (local.set $l - (i32.add - (local.get $t) - (i32.const 20) - ) - ) - (local.set $q - (i32.load - (local.get $l) - ) - ) - (if - (local.get $q) - (block - (local.set $t - (local.get $q) - ) - (local.set $u - (local.get $l) - ) - (br $while-in) - ) - ) - (local.set $l - (i32.add - (local.get $t) - (i32.const 16) - ) - ) - (local.set $q - (i32.load - (local.get $l) - ) - ) - (if - (i32.eqz - (local.get $q) - ) - (block - (local.set $v - (local.get $t) - ) - (local.set $w - (local.get $u) - ) - (br $while-out) - ) - (block - (local.set $t - (local.get $q) - ) - (local.set $u - (local.get $l) - ) - ) - ) - (br $while-in) - ) - ) - (if - (i32.lt_u - (local.get $w) - (local.get $c) - ) - (call $qa) - (block - (i32.store - (local.get $w) - (i32.const 0) - ) - (local.set $s - (local.get $v) - ) - (br $do-once0) - ) - ) - ) - (block - (local.set $l - (i32.load - (i32.add - (local.get $h) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $l) - (local.get $c) - ) - (call $qa) - ) - (local.set $q - (i32.add - (local.get $l) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $q) - ) - (local.get $h) - ) - (call $qa) - ) - (local.set $o - (i32.add - (local.get $j) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $o) - ) - (local.get $h) - ) - (block - (i32.store - (local.get $q) - (local.get $j) - ) - (i32.store - (local.get $o) - (local.get $l) - ) - (local.set $s - (local.get $j) - ) - (br $do-once0) - ) - (call $qa) - ) - ) - ) - ) - (if - (i32.eqz - (local.get $g) - ) - (block - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - ) - (block - (local.set $j - (i32.load - (i32.add - (local.get $h) - (i32.const 28) - ) - ) - ) - (local.set $l - (i32.add - (i32.const 1512) - (i32.shl - (local.get $j) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $h) - (i32.load - (local.get $l) - ) - ) - (block - (i32.store - (local.get $l) - (local.get $s) - ) - (if - (i32.eqz - (local.get $s) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $j) - ) - (i32.const -1) - ) - ) - ) - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - (br $do-once) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $g) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $j - (i32.add - (local.get $g) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $j) - ) - (local.get $h) - ) - (i32.store - (local.get $j) - (local.get $s) - ) - (i32.store - (i32.add - (local.get $g) - (i32.const 20) - ) - (local.get $s) - ) - ) - (if - (i32.eqz - (local.get $s) - ) - (block - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - (br $do-once) - ) - ) - ) - ) - (local.set $j - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $s) - (local.get $j) - ) - (call $qa) - ) - (i32.store - (i32.add - (local.get $s) - (i32.const 24) - ) - (local.get $g) - ) - (local.set $l - (i32.add - (local.get $h) - (i32.const 16) - ) - ) - (local.set $o - (i32.load - (local.get $l) - ) - ) - (block $do-once2 - (if - (local.get $o) - (if - (i32.lt_u - (local.get $o) - (local.get $j) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $s) - (i32.const 16) - ) - (local.get $o) - ) - (i32.store - (i32.add - (local.get $o) - (i32.const 24) - ) - (local.get $s) - ) - (br $do-once2) - ) - ) - ) - ) - (local.set $o - (i32.load - (i32.add - (local.get $l) - (i32.const 4) - ) - ) - ) - (if - (i32.eqz - (local.get $o) - ) - (block - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - ) - (if - (i32.lt_u - (local.get $o) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $s) - (i32.const 20) - ) - (local.get $o) - ) - (i32.store - (i32.add - (local.get $o) - (i32.const 24) - ) - (local.get $s) - ) - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - (br $do-once) - ) - ) - ) - ) - ) - ) - (block - (local.set $m - (local.get $b) - ) - (local.set $n - (local.get $e) - ) - ) - ) - ) - (if - (i32.ge_u - (local.get $m) - (local.get $f) - ) - (call $qa) - ) - (local.set $e - (i32.add - (local.get $f) - (i32.const 4) - ) - ) - (local.set $b - (i32.load - (local.get $e) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $b) - (i32.const 1) - ) - ) - (call $qa) - ) - (if - (i32.eqz - (i32.and - (local.get $b) - (i32.const 2) - ) - ) - (block - (if - (i32.eq - (local.get $f) - (i32.load - (i32.const 1232) - ) - ) - (block - (local.set $s - (i32.add - (i32.load - (i32.const 1220) - ) - (local.get $n) - ) - ) - (i32.store - (i32.const 1220) - (local.get $s) - ) - (i32.store - (i32.const 1232) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 4) - ) - (i32.or - (local.get $s) - (i32.const 1) - ) - ) - (if - (i32.ne - (local.get $m) - (i32.load - (i32.const 1228) - ) - ) - (return) - ) - (i32.store - (i32.const 1228) - (i32.const 0) - ) - (i32.store - (i32.const 1216) - (i32.const 0) - ) - (return) - ) - ) - (if - (i32.eq - (local.get $f) - (i32.load - (i32.const 1228) - ) - ) - (block - (local.set $s - (i32.add - (i32.load - (i32.const 1216) - ) - (local.get $n) - ) - ) - (i32.store - (i32.const 1216) - (local.get $s) - ) - (i32.store - (i32.const 1228) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 4) - ) - (i32.or - (local.get $s) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $m) - (local.get $s) - ) - (local.get $s) - ) - (return) - ) - ) - (local.set $s - (i32.add - (i32.and - (local.get $b) - (i32.const -8) - ) - (local.get $n) - ) - ) - (local.set $c - (i32.shr_u - (local.get $b) - (i32.const 3) - ) - ) - (block $do-once4 - (if - (i32.lt_u - (local.get $b) - (i32.const 256) - ) - (block - (local.set $v - (i32.load - (i32.add - (local.get $f) - (i32.const 8) - ) - ) - ) - (local.set $w - (i32.load - (i32.add - (local.get $f) - (i32.const 12) - ) - ) - ) - (local.set $u - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $c) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (if - (i32.ne - (local.get $v) - (local.get $u) - ) - (block - (if - (i32.lt_u - (local.get $v) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.ne - (i32.load - (i32.add - (local.get $v) - (i32.const 12) - ) - ) - (local.get $f) - ) - (call $qa) - ) - ) - ) - (if - (i32.eq - (local.get $w) - (local.get $v) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (i32.load - (i32.const 1208) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $c) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - (if - (i32.eq - (local.get $w) - (local.get $u) - ) - (local.set $x - (i32.add - (local.get $w) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $w) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $u - (i32.add - (local.get $w) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $u) - ) - (local.get $f) - ) - (local.set $x - (local.get $u) - ) - (call $qa) - ) - ) - ) - (i32.store - (i32.add - (local.get $v) - (i32.const 12) - ) - (local.get $w) - ) - (i32.store - (local.get $x) - (local.get $v) - ) - ) - (block - (local.set $v - (i32.load - (i32.add - (local.get $f) - (i32.const 24) - ) - ) - ) - (local.set $w - (i32.load - (i32.add - (local.get $f) - (i32.const 12) - ) - ) - ) - (block $do-once6 - (if - (i32.eq - (local.get $w) - (local.get $f) - ) - (block - (local.set $u - (i32.add - (local.get $f) - (i32.const 16) - ) - ) - (local.set $t - (i32.add - (local.get $u) - (i32.const 4) - ) - ) - (local.set $p - (i32.load - (local.get $t) - ) - ) - (if - (i32.eqz - (local.get $p) - ) - (block - (local.set $a - (i32.load - (local.get $u) - ) - ) - (if - (i32.eqz - (local.get $a) - ) - (block - (local.set $y - (i32.const 0) - ) - (br $do-once6) - ) - (block - (local.set $z - (local.get $a) - ) - (local.set $A - (local.get $u) - ) - ) - ) - ) - (block - (local.set $z - (local.get $p) - ) - (local.set $A - (local.get $t) - ) - ) - ) - (loop $while-in9 - (block $while-out8 - (local.set $t - (i32.add - (local.get $z) - (i32.const 20) - ) - ) - (local.set $p - (i32.load - (local.get $t) - ) - ) - (if - (local.get $p) - (block - (local.set $z - (local.get $p) - ) - (local.set $A - (local.get $t) - ) - (br $while-in9) - ) - ) - (local.set $t - (i32.add - (local.get $z) - (i32.const 16) - ) - ) - (local.set $p - (i32.load - (local.get $t) - ) - ) - (if - (i32.eqz - (local.get $p) - ) - (block - (local.set $B - (local.get $z) - ) - (local.set $C - (local.get $A) - ) - (br $while-out8) - ) - (block - (local.set $z - (local.get $p) - ) - (local.set $A - (local.get $t) - ) - ) - ) - (br $while-in9) - ) - ) - (if - (i32.lt_u - (local.get $C) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $C) - (i32.const 0) - ) - (local.set $y - (local.get $B) - ) - (br $do-once6) - ) - ) - ) - (block - (local.set $t - (i32.load - (i32.add - (local.get $f) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $t) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $p - (i32.add - (local.get $t) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $p) - ) - (local.get $f) - ) - (call $qa) - ) - (local.set $u - (i32.add - (local.get $w) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $u) - ) - (local.get $f) - ) - (block - (i32.store - (local.get $p) - (local.get $w) - ) - (i32.store - (local.get $u) - (local.get $t) - ) - (local.set $y - (local.get $w) - ) - (br $do-once6) - ) - (call $qa) - ) - ) - ) - ) - (if - (local.get $v) - (block - (local.set $w - (i32.load - (i32.add - (local.get $f) - (i32.const 28) - ) - ) - ) - (local.set $i - (i32.add - (i32.const 1512) - (i32.shl - (local.get $w) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $f) - (i32.load - (local.get $i) - ) - ) - (block - (i32.store - (local.get $i) - (local.get $y) - ) - (if - (i32.eqz - (local.get $y) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $w) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $v) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $w - (i32.add - (local.get $v) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $w) - ) - (local.get $f) - ) - (i32.store - (local.get $w) - (local.get $y) - ) - (i32.store - (i32.add - (local.get $v) - (i32.const 20) - ) - (local.get $y) - ) - ) - (if - (i32.eqz - (local.get $y) - ) - (br $do-once4) - ) - ) - ) - (local.set $w - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $y) - (local.get $w) - ) - (call $qa) - ) - (i32.store - (i32.add - (local.get $y) - (i32.const 24) - ) - (local.get $v) - ) - (local.set $i - (i32.add - (local.get $f) - (i32.const 16) - ) - ) - (local.set $h - (i32.load - (local.get $i) - ) - ) - (block $do-once10 - (if - (local.get $h) - (if - (i32.lt_u - (local.get $h) - (local.get $w) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $y) - (i32.const 16) - ) - (local.get $h) - ) - (i32.store - (i32.add - (local.get $h) - (i32.const 24) - ) - (local.get $y) - ) - (br $do-once10) - ) - ) - ) - ) - (local.set $h - (i32.load - (i32.add - (local.get $i) - (i32.const 4) - ) - ) - ) - (if - (local.get $h) - (if - (i32.lt_u - (local.get $h) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $y) - (i32.const 20) - ) - (local.get $h) - ) - (i32.store - (i32.add - (local.get $h) - (i32.const 24) - ) - (local.get $y) - ) - (br $do-once4) - ) - ) - ) - ) - ) - ) - ) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 4) - ) - (i32.or - (local.get $s) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $m) - (local.get $s) - ) - (local.get $s) - ) - (if - (i32.eq - (local.get $m) - (i32.load - (i32.const 1228) - ) - ) - (block - (i32.store - (i32.const 1216) - (local.get $s) - ) - (return) - ) - (local.set $D - (local.get $s) - ) - ) - ) - (block - (i32.store - (local.get $e) - (i32.and - (local.get $b) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 4) - ) - (i32.or - (local.get $n) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $m) - (local.get $n) - ) - (local.get $n) - ) - (local.set $D - (local.get $n) - ) - ) - ) - (local.set $n - (i32.shr_u - (local.get $D) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $D) - (i32.const 256) - ) - (block - (local.set $b - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $n) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $e - (i32.load - (i32.const 1208) - ) - ) - (local.set $s - (i32.shl - (i32.const 1) - (local.get $n) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $e) - (local.get $s) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $e) - (local.get $s) - ) - ) - (local.set $E - (i32.add - (local.get $b) - (i32.const 8) - ) - ) - (local.set $F - (local.get $b) - ) - ) - (block - (local.set $s - (i32.add - (local.get $b) - (i32.const 8) - ) - ) - (local.set $e - (i32.load - (local.get $s) - ) - ) - (if - (i32.lt_u - (local.get $e) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $E - (local.get $s) - ) - (local.set $F - (local.get $e) - ) - ) - ) - ) - ) - (i32.store - (local.get $E) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $F) - (i32.const 12) - ) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 8) - ) - (local.get $F) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 12) - ) - (local.get $b) - ) - (return) - ) - ) - (local.set $b - (i32.shr_u - (local.get $D) - (i32.const 8) - ) - ) - (if - (i32.eqz - (local.get $b) - ) - (local.set $G - (i32.const 0) - ) - (if - (i32.gt_u - (local.get $D) - (i32.const 16777215) - ) - (local.set $G - (i32.const 31) - ) - (block - (local.set $F - (i32.and - (i32.shr_u - (i32.add - (local.get $b) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $E - (i32.shl - (local.get $b) - (local.get $F) - ) - ) - (local.set $b - (i32.and - (i32.shr_u - (i32.add - (local.get $E) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $e - (i32.shl - (local.get $E) - (local.get $b) - ) - ) - (local.set $E - (i32.and - (i32.shr_u - (i32.add - (local.get $e) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $s - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $b) - (local.get $F) - ) - (local.get $E) - ) - ) - (i32.shr_u - (i32.shl - (local.get $e) - (local.get $E) - ) - (i32.const 15) - ) - ) - ) - (local.set $G - (i32.or - (i32.and - (i32.shr_u - (local.get $D) - (i32.add - (local.get $s) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $s) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.set $s - (i32.add - (i32.const 1512) - (i32.shl - (local.get $G) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 28) - ) - (local.get $G) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 20) - ) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 16) - ) - (i32.const 0) - ) - (local.set $E - (i32.load - (i32.const 1212) - ) - ) - (local.set $e - (i32.shl - (i32.const 1) - (local.get $G) - ) - ) - (block $do-once12 - (if - (i32.eqz - (i32.and - (local.get $E) - (local.get $e) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $E) - (local.get $e) - ) - ) - (i32.store - (local.get $s) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 24) - ) - (local.get $s) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 12) - ) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 8) - ) - (local.get $m) - ) - ) - (block - (local.set $F - (i32.shl - (local.get $D) - (if (result i32) - (i32.eq - (local.get $G) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $G) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $b - (i32.load - (local.get $s) - ) - ) - (loop $while-in15 - (block $while-out14 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $b) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $D) - ) - (block - (local.set $H - (local.get $b) - ) - (local.set $I - (i32.const 130) - ) - (br $while-out14) - ) - ) - (local.set $n - (i32.add - (i32.add - (local.get $b) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $F) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $y - (i32.load - (local.get $n) - ) - ) - (if - (i32.eqz - (local.get $y) - ) - (block - (local.set $J - (local.get $n) - ) - (local.set $K - (local.get $b) - ) - (local.set $I - (i32.const 127) - ) - (br $while-out14) - ) - (block - (local.set $F - (i32.shl - (local.get $F) - (i32.const 1) - ) - ) - (local.set $b - (local.get $y) - ) - ) - ) - (br $while-in15) - ) - ) - (if - (i32.eq - (local.get $I) - (i32.const 127) - ) - (if - (i32.lt_u - (local.get $J) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $J) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 24) - ) - (local.get $K) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 12) - ) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 8) - ) - (local.get $m) - ) - (br $do-once12) - ) - ) - (if - (i32.eq - (local.get $I) - (i32.const 130) - ) - (block - (local.set $b - (i32.add - (local.get $H) - (i32.const 8) - ) - ) - (local.set $F - (i32.load - (local.get $b) - ) - ) - (local.set $i - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $F) - (local.get $i) - ) - (i32.ge_u - (local.get $H) - (local.get $i) - ) - ) - (block - (i32.store - (i32.add - (local.get $F) - (i32.const 12) - ) - (local.get $m) - ) - (i32.store - (local.get $b) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 8) - ) - (local.get $F) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 12) - ) - (local.get $H) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once12) - ) - (call $qa) - ) - ) - ) - ) - ) - ) - ) - (local.set $m - (i32.add - (i32.load - (i32.const 1240) - ) - (i32.const -1) - ) - ) - (i32.store - (i32.const 1240) - (local.get $m) - ) - (if - (i32.eqz - (local.get $m) - ) - (local.set $L - (i32.const 1664) - ) - (return) - ) - (loop $while-in17 - (block $while-out16 - (local.set $m - (i32.load - (local.get $L) - ) - ) - (if - (i32.eqz - (local.get $m) - ) - (br $while-out16) - (local.set $L - (i32.add - (local.get $m) - (i32.const 8) - ) - ) - ) - (br $while-in17) - ) - ) - (i32.store - (i32.const 1240) - (i32.const -1) - ) - (return) - ) - (func $Ra (; 15 ;) (param $a i32) (param $b i32) (param $c i32) (result i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local $i i32) - (local $j i32) - (local $l i32) - (local $m i32) - (local $n i32) - (local $o i32) - (local $p i32) - (local $q i32) - (local $s i32) - (local $t i32) - (local $u i32) - (local $v i32) - (local $w i32) - (local $x i32) - (local $y i32) - (local $z i32) - (local.set $d - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 48) - ) - ) - (local.set $e - (i32.add - (local.get $d) - (i32.const 16) - ) - ) - (local.set $f - (local.get $d) - ) - (local.set $g - (i32.add - (local.get $d) - (i32.const 32) - ) - ) - (local.set $h - (i32.add - (local.get $a) - (i32.const 28) - ) - ) - (local.set $i - (i32.load - (local.get $h) - ) - ) - (i32.store - (local.get $g) - (local.get $i) - ) - (local.set $j - (i32.add - (local.get $a) - (i32.const 20) - ) - ) - (local.set $l - (i32.sub - (i32.load - (local.get $j) - ) - (local.get $i) - ) - ) - (i32.store - (i32.add - (local.get $g) - (i32.const 4) - ) - (local.get $l) - ) - (i32.store - (i32.add - (local.get $g) - (i32.const 8) - ) - (local.get $b) - ) - (i32.store - (i32.add - (local.get $g) - (i32.const 12) - ) - (local.get $c) - ) - (local.set $b - (i32.add - (local.get $a) - (i32.const 60) - ) - ) - (local.set $i - (i32.add - (local.get $a) - (i32.const 44) - ) - ) - (local.set $m - (local.get $g) - ) - (local.set $g - (i32.const 2) - ) - (local.set $n - (i32.add - (local.get $l) - (local.get $c) - ) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.load - (i32.const 1160) - ) - ) - (block - (i32.store - (local.get $e) - (i32.load - (local.get $b) - ) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 4) - ) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 8) - ) - (local.get $g) - ) - (local.set $o - (call $Pa - (call $ya - (i32.const 146) - (local.get $e) - ) - ) - ) - ) - (block - (call $ra - (i32.const 1) - (local.get $a) - ) - (i32.store - (local.get $f) - (i32.load - (local.get $b) - ) - ) - (i32.store - (i32.add - (local.get $f) - (i32.const 4) - ) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $f) - (i32.const 8) - ) - (local.get $g) - ) - (local.set $l - (call $Pa - (call $ya - (i32.const 146) - (local.get $f) - ) - ) - ) - (call $oa - (i32.const 0) - ) - (local.set $o - (local.get $l) - ) - ) - ) - (if - (i32.eq - (local.get $n) - (local.get $o) - ) - (block - (local.set $p - (i32.const 6) - ) - (br $while-out) - ) - ) - (if - (i32.lt_s - (local.get $o) - (i32.const 0) - ) - (block - (local.set $q - (local.get $m) - ) - (local.set $s - (local.get $g) - ) - (local.set $p - (i32.const 8) - ) - (br $while-out) - ) - ) - (local.set $l - (i32.sub - (local.get $n) - (local.get $o) - ) - ) - (local.set $t - (i32.load - (i32.add - (local.get $m) - (i32.const 4) - ) - ) - ) - (if - (i32.gt_u - (local.get $o) - (local.get $t) - ) - (block - (local.set $u - (i32.load - (local.get $i) - ) - ) - (i32.store - (local.get $h) - (local.get $u) - ) - (i32.store - (local.get $j) - (local.get $u) - ) - (local.set $v - (i32.load - (i32.add - (local.get $m) - (i32.const 12) - ) - ) - ) - (local.set $w - (i32.sub - (local.get $o) - (local.get $t) - ) - ) - (local.set $x - (i32.add - (local.get $m) - (i32.const 8) - ) - ) - (local.set $y - (i32.add - (local.get $g) - (i32.const -1) - ) - ) - ) - (if - (i32.eq - (local.get $g) - (i32.const 2) - ) - (block - (i32.store - (local.get $h) - (i32.add - (i32.load - (local.get $h) - ) - (local.get $o) - ) - ) - (local.set $v - (local.get $t) - ) - (local.set $w - (local.get $o) - ) - (local.set $x - (local.get $m) - ) - (local.set $y - (i32.const 2) - ) - ) - (block - (local.set $v - (local.get $t) - ) - (local.set $w - (local.get $o) - ) - (local.set $x - (local.get $m) - ) - (local.set $y - (local.get $g) - ) - ) - ) - ) - (i32.store - (local.get $x) - (i32.add - (i32.load - (local.get $x) - ) - (local.get $w) - ) - ) - (i32.store - (i32.add - (local.get $x) - (i32.const 4) - ) - (i32.sub - (local.get $v) - (local.get $w) - ) - ) - (local.set $m - (local.get $x) - ) - (local.set $g - (local.get $y) - ) - (local.set $n - (local.get $l) - ) - (br $while-in) - ) - ) - (if - (i32.eq - (local.get $p) - (i32.const 6) - ) - (block - (local.set $n - (i32.load - (local.get $i) - ) - ) - (i32.store - (i32.add - (local.get $a) - (i32.const 16) - ) - (i32.add - (local.get $n) - (i32.load - (i32.add - (local.get $a) - (i32.const 48) - ) - ) - ) - ) - (local.set $i - (local.get $n) - ) - (i32.store - (local.get $h) - (local.get $i) - ) - (i32.store - (local.get $j) - (local.get $i) - ) - (local.set $z - (local.get $c) - ) - ) - (if - (i32.eq - (local.get $p) - (i32.const 8) - ) - (block - (i32.store - (i32.add - (local.get $a) - (i32.const 16) - ) - (i32.const 0) - ) - (i32.store - (local.get $h) - (i32.const 0) - ) - (i32.store - (local.get $j) - (i32.const 0) - ) - (i32.store - (local.get $a) - (i32.or - (i32.load - (local.get $a) - ) - (i32.const 32) - ) - ) - (if - (i32.eq - (local.get $s) - (i32.const 2) - ) - (local.set $z - (i32.const 0) - ) - (local.set $z - (i32.sub - (local.get $c) - (i32.load - (i32.add - (local.get $q) - (i32.const 4) - ) - ) - ) - ) - ) - ) - ) - ) - (global.set $r - (local.get $d) - ) - (return - (local.get $z) - ) - ) - (func $Wa (; 16 ;) (param $a i32) (param $b i32) (param $c i32) (result i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local $j i32) - (local $l i32) - (local $m i32) - (local $n i32) - (local $o i32) - (local $p i32) - (local $q i32) - (local.set $d - (i32.add - (local.get $c) - (i32.const 16) - ) - ) - (local.set $e - (i32.load - (local.get $d) - ) - ) - (if - (i32.eqz - (local.get $e) - ) - (if - (i32.eqz - (call $Xa - (local.get $c) - ) - ) - (block - (local.set $f - (i32.load - (local.get $d) - ) - ) - (local.set $g - (i32.const 5) - ) - ) - (local.set $h - (i32.const 0) - ) - ) - (block - (local.set $f - (local.get $e) - ) - (local.set $g - (i32.const 5) - ) - ) - ) - (block $label$break$a - (if - (i32.eq - (local.get $g) - (i32.const 5) - ) - (block - (local.set $e - (i32.add - (local.get $c) - (i32.const 20) - ) - ) - (local.set $d - (i32.load - (local.get $e) - ) - ) - (local.set $j - (local.get $d) - ) - (if - (i32.lt_u - (i32.sub - (local.get $f) - (local.get $d) - ) - (local.get $b) - ) - (block - (local.set $h - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $c) - (local.get $a) - (local.get $b) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $c) - (i32.const 36) - ) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - (br $label$break$a) - ) - ) - (block $label$break$b - (if - (i32.gt_s - (i32.load8_s - (i32.add - (local.get $c) - (i32.const 75) - ) - ) - (i32.const -1) - ) - (block - (local.set $d - (local.get $b) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (local.get $d) - ) - (block - (local.set $l - (local.get $b) - ) - (local.set $m - (local.get $a) - ) - (local.set $n - (local.get $j) - ) - (local.set $o - (i32.const 0) - ) - (br $label$break$b) - ) - ) - (local.set $p - (i32.add - (local.get $d) - (i32.const -1) - ) - ) - (if - (i32.eq - (i32.load8_s - (i32.add - (local.get $a) - (local.get $p) - ) - ) - (i32.const 10) - ) - (block - (local.set $q - (local.get $d) - ) - (br $while-out) - ) - (local.set $d - (local.get $p) - ) - ) - (br $while-in) - ) - ) - (if - (i32.lt_u - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $c) - (local.get $a) - (local.get $q) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $c) - (i32.const 36) - ) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - (local.get $q) - ) - (block - (local.set $h - (local.get $q) - ) - (br $label$break$a) - ) - ) - (local.set $l - (i32.sub - (local.get $b) - (local.get $q) - ) - ) - (local.set $m - (i32.add - (local.get $a) - (local.get $q) - ) - ) - (local.set $n - (i32.load - (local.get $e) - ) - ) - (local.set $o - (local.get $q) - ) - ) - (block - (local.set $l - (local.get $b) - ) - (local.set $m - (local.get $a) - ) - (local.set $n - (local.get $j) - ) - (local.set $o - (i32.const 0) - ) - ) - ) - ) - (drop - (call $jb - (local.get $n) - (local.get $m) - (local.get $l) - ) - ) - (i32.store - (local.get $e) - (i32.add - (i32.load - (local.get $e) - ) - (local.get $l) - ) - ) - (local.set $h - (i32.add - (local.get $o) - (local.get $l) - ) - ) - ) - ) - ) - (return - (local.get $h) - ) - ) - (func $Za (; 17 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local $j i32) - (local $l i32) - (local $m i32) - (local.set $b - (local.get $a) - ) - (block $label$break$a - (if - (i32.eqz - (i32.and - (local.get $b) - (i32.const 3) - ) - ) - (block - (local.set $c - (local.get $a) - ) - (local.set $d - (i32.const 4) - ) - ) - (block - (local.set $e - (local.get $a) - ) - (local.set $f - (local.get $b) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.load8_s - (local.get $e) - ) - ) - (block - (local.set $g - (local.get $f) - ) - (br $label$break$a) - ) - ) - (local.set $h - (i32.add - (local.get $e) - (i32.const 1) - ) - ) - (local.set $f - (local.get $h) - ) - (if - (i32.eqz - (i32.and - (local.get $f) - (i32.const 3) - ) - ) - (block - (local.set $c - (local.get $h) - ) - (local.set $d - (i32.const 4) - ) - (br $while-out) - ) - (local.set $e - (local.get $h) - ) - ) - (br $while-in) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $d) - (i32.const 4) - ) - (block - (local.set $d - (local.get $c) - ) - (loop $while-in1 - (block $while-out0 - (local.set $c - (i32.load - (local.get $d) - ) - ) - (if - (i32.eqz - (i32.and - (i32.xor - (i32.and - (local.get $c) - (i32.const -2139062144) - ) - (i32.const -2139062144) - ) - (i32.add - (local.get $c) - (i32.const -16843009) - ) - ) - ) - (local.set $d - (i32.add - (local.get $d) - (i32.const 4) - ) - ) - (block - (local.set $j - (local.get $c) - ) - (local.set $l - (local.get $d) - ) - (br $while-out0) - ) - ) - (br $while-in1) - ) - ) - (if - (i32.eqz - (i32.shr_s - (i32.shl - (i32.and - (local.get $j) - (i32.const 255) - ) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $m - (local.get $l) - ) - (block - (local.set $j - (local.get $l) - ) - (loop $while-in3 - (block $while-out2 - (local.set $l - (i32.add - (local.get $j) - (i32.const 1) - ) - ) - (if - (i32.eqz - (i32.load8_s - (local.get $l) - ) - ) - (block - (local.set $m - (local.get $l) - ) - (br $while-out2) - ) - (local.set $j - (local.get $l) - ) - ) - (br $while-in3) - ) - ) - ) - ) - (local.set $g - (local.get $m) - ) - ) - ) - (return - (i32.sub - (local.get $g) - (local.get $b) - ) - ) - ) - (func $_a (; 18 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (block $do-once - (if - (i32.eqz - (local.get $a) - ) - (block - (if - (i32.eqz - (i32.load - (i32.const 1140) - ) - ) - (local.set $b - (i32.const 0) - ) - (local.set $b - (call $_a - (i32.load - (i32.const 1140) - ) - ) - ) - ) - (call $pa - (i32.const 1188) - ) - (local.set $c - (i32.load - (i32.const 1184) - ) - ) - (if - (i32.eqz - (local.get $c) - ) - (local.set $d - (local.get $b) - ) - (block - (local.set $e - (local.get $c) - ) - (local.set $c - (local.get $b) - ) - (loop $while-in - (block $while-out - (if - (i32.gt_s - (i32.load - (i32.add - (local.get $e) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (local.set $f - (call $Ya - (local.get $e) - ) - ) - (local.set $f - (i32.const 0) - ) - ) - (if - (i32.gt_u - (i32.load - (i32.add - (local.get $e) - (i32.const 20) - ) - ) - (i32.load - (i32.add - (local.get $e) - (i32.const 28) - ) - ) - ) - (local.set $g - (i32.or - (call $$a - (local.get $e) - ) - (local.get $c) - ) - ) - (local.set $g - (local.get $c) - ) - ) - (if - (local.get $f) - (call $Ta - (local.get $e) - ) - ) - (local.set $e - (i32.load - (i32.add - (local.get $e) - (i32.const 56) - ) - ) - ) - (if - (i32.eqz - (local.get $e) - ) - (block - (local.set $d - (local.get $g) - ) - (br $while-out) - ) - (local.set $c - (local.get $g) - ) - ) - (br $while-in) - ) - ) - ) - ) - (call $xa - (i32.const 1188) - ) - (local.set $h - (local.get $d) - ) - ) - (block - (if - (i32.le_s - (i32.load - (i32.add - (local.get $a) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (block - (local.set $h - (call $$a - (local.get $a) - ) - ) - (br $do-once) - ) - ) - (local.set $c - (i32.eq - (call $Ya - (local.get $a) - ) - (i32.const 0) - ) - ) - (local.set $e - (call $$a - (local.get $a) - ) - ) - (if - (local.get $c) - (local.set $h - (local.get $e) - ) - (block - (call $Ta - (local.get $a) - ) - (local.set $h - (local.get $e) - ) - ) - ) - ) - ) - ) - (return - (local.get $h) - ) - ) - (func $ab (; 19 ;) (param $a i32) (param $b i32) (result i32) - (local $c i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local $j i32) - (local $m i32) - (local $n i32) - (local.set $c - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 16) - ) - ) - (local.set $d - (local.get $c) - ) - (local.set $e - (i32.and - (local.get $b) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $d) - (local.get $e) - ) - (local.set $f - (i32.add - (local.get $a) - (i32.const 16) - ) - ) - (local.set $g - (i32.load - (local.get $f) - ) - ) - (if - (i32.eqz - (local.get $g) - ) - (if - (i32.eqz - (call $Xa - (local.get $a) - ) - ) - (block - (local.set $h - (i32.load - (local.get $f) - ) - ) - (local.set $j - (i32.const 4) - ) - ) - (local.set $m - (i32.const -1) - ) - ) - (block - (local.set $h - (local.get $g) - ) - (local.set $j - (i32.const 4) - ) - ) - ) - (block $do-once - (if - (i32.eq - (local.get $j) - (i32.const 4) - ) - (block - (local.set $g - (i32.add - (local.get $a) - (i32.const 20) - ) - ) - (local.set $f - (i32.load - (local.get $g) - ) - ) - (if - (i32.lt_u - (local.get $f) - (local.get $h) - ) - (block - (local.set $n - (i32.and - (local.get $b) - (i32.const 255) - ) - ) - (if - (i32.ne - (local.get $n) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 75) - ) - ) - ) - (block - (i32.store - (local.get $g) - (i32.add - (local.get $f) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $f) - (local.get $e) - ) - (local.set $m - (local.get $n) - ) - (br $do-once) - ) - ) - ) - ) - (if - (i32.eq - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $a) - (local.get $d) - (i32.const 1) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $a) - (i32.const 36) - ) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - (i32.const 1) - ) - (local.set $m - (i32.load8_u - (local.get $d) - ) - ) - (local.set $m - (i32.const -1) - ) - ) - ) - ) - ) - (global.set $r - (local.get $c) - ) - (return - (local.get $m) - ) - ) - (func $$a (; 20 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local.set $b - (i32.add - (local.get $a) - (i32.const 20) - ) - ) - (local.set $c - (i32.add - (local.get $a) - (i32.const 28) - ) - ) - (if - (i32.gt_u - (i32.load - (local.get $b) - ) - (i32.load - (local.get $c) - ) - ) - (block - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $a) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $a) - (i32.const 36) - ) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - (if - (i32.eqz - (i32.load - (local.get $b) - ) - ) - (local.set $d - (i32.const -1) - ) - (local.set $e - (i32.const 3) - ) - ) - ) - (local.set $e - (i32.const 3) - ) - ) - (if - (i32.eq - (local.get $e) - (i32.const 3) - ) - (block - (local.set $e - (i32.add - (local.get $a) - (i32.const 4) - ) - ) - (local.set $f - (i32.load - (local.get $e) - ) - ) - (local.set $g - (i32.add - (local.get $a) - (i32.const 8) - ) - ) - (local.set $h - (i32.load - (local.get $g) - ) - ) - (if - (i32.lt_u - (local.get $f) - (local.get $h) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $a) - (i32.sub - (local.get $f) - (local.get $h) - ) - (i32.const 1) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $a) - (i32.const 40) - ) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.store - (i32.add - (local.get $a) - (i32.const 16) - ) - (i32.const 0) - ) - (i32.store - (local.get $c) - (i32.const 0) - ) - (i32.store - (local.get $b) - (i32.const 0) - ) - (i32.store - (local.get $g) - (i32.const 0) - ) - (i32.store - (local.get $e) - (i32.const 0) - ) - (local.set $d - (i32.const 0) - ) - ) - ) - (return - (local.get $d) - ) - ) - (func $jb (; 21 ;) (param $a i32) (param $b i32) (param $c i32) (result i32) - (local $d i32) - (if - (i32.ge_s - (local.get $c) - (i32.const 4096) - ) - (return - (call $va - (local.get $a) - (local.get $b) - (local.get $c) - ) - ) - ) - (local.set $d - (local.get $a) - ) - (if - (i32.eq - (i32.and - (local.get $a) - (i32.const 3) - ) - (i32.and - (local.get $b) - (i32.const 3) - ) - ) - (block - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.and - (local.get $a) - (i32.const 3) - ) - ) - (br $while-out) - ) - (block - (if - (i32.eqz - (local.get $c) - ) - (return - (local.get $d) - ) - ) - (i32.store8 - (local.get $a) - (i32.load8_s - (local.get $b) - ) - ) - (local.set $a - (i32.add - (local.get $a) - (i32.const 1) - ) - ) - (local.set $b - (i32.add - (local.get $b) - (i32.const 1) - ) - ) - (local.set $c - (i32.sub - (local.get $c) - (i32.const 1) - ) - ) - ) - (br $while-in) - ) - ) - (loop $while-in1 - (block $while-out0 - (if - (i32.eqz - (i32.ge_s - (local.get $c) - (i32.const 4) - ) - ) - (br $while-out0) - ) - (block - (i32.store - (local.get $a) - (i32.load - (local.get $b) - ) - ) - (local.set $a - (i32.add - (local.get $a) - (i32.const 4) - ) - ) - (local.set $b - (i32.add - (local.get $b) - (i32.const 4) - ) - ) - (local.set $c - (i32.sub - (local.get $c) - (i32.const 4) - ) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (loop $while-in3 - (block $while-out2 - (if - (i32.eqz - (i32.gt_s - (local.get $c) - (i32.const 0) - ) - ) - (br $while-out2) - ) - (block - (i32.store8 - (local.get $a) - (i32.load8_s - (local.get $b) - ) - ) - (local.set $a - (i32.add - (local.get $a) - (i32.const 1) - ) - ) - (local.set $b - (i32.add - (local.get $b) - (i32.const 1) - ) - ) - (local.set $c - (i32.sub - (local.get $c) - (i32.const 1) - ) - ) - ) - (br $while-in3) - ) - ) - (return - (local.get $d) - ) - ) - (func $gb (; 22 ;) - (nop) - ) - (func $hb (; 23 ;) (param $a i32) (param $b i32) (param $c i32) (result i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local.set $d - (i32.add - (local.get $a) - (local.get $c) - ) - ) - (if - (i32.ge_s - (local.get $c) - (i32.const 20) - ) - (block - (local.set $b - (i32.and - (local.get $b) - (i32.const 255) - ) - ) - (local.set $e - (i32.and - (local.get $a) - (i32.const 3) - ) - ) - (local.set $f - (i32.or - (i32.or - (i32.or - (local.get $b) - (i32.shl - (local.get $b) - (i32.const 8) - ) - ) - (i32.shl - (local.get $b) - (i32.const 16) - ) - ) - (i32.shl - (local.get $b) - (i32.const 24) - ) - ) - ) - (local.set $g - (i32.and - (local.get $d) - (i32.xor - (i32.const 3) - (i32.const -1) - ) - ) - ) - (if - (local.get $e) - (block - (local.set $e - (i32.sub - (i32.add - (local.get $a) - (i32.const 4) - ) - (local.get $e) - ) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.lt_s - (local.get $a) - (local.get $e) - ) - ) - (br $while-out) - ) - (block - (i32.store8 - (local.get $a) - (local.get $b) - ) - (local.set $a - (i32.add - (local.get $a) - (i32.const 1) - ) - ) - ) - (br $while-in) - ) - ) - ) - ) - (loop $while-in1 - (block $while-out0 - (if - (i32.eqz - (i32.lt_s - (local.get $a) - (local.get $g) - ) - ) - (br $while-out0) - ) - (block - (i32.store - (local.get $a) - (local.get $f) - ) - (local.set $a - (i32.add - (local.get $a) - (i32.const 4) - ) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (loop $while-in3 - (block $while-out2 - (if - (i32.eqz - (i32.lt_s - (local.get $a) - (local.get $d) - ) - ) - (br $while-out2) - ) - (block - (i32.store8 - (local.get $a) - (local.get $b) - ) - (local.set $a - (i32.add - (local.get $a) - (i32.const 1) - ) - ) - ) - (br $while-in3) - ) - ) - (return - (i32.sub - (local.get $a) - (local.get $c) - ) - ) - ) - (func $db (; 24 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local.set $b - (i32.load - (i32.const 1024) - ) - ) - (if - (i32.gt_s - (i32.load - (i32.add - (local.get $b) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (local.set $c - (call $Ya - (local.get $b) - ) - ) - (local.set $c - (i32.const 0) - ) - ) - (block $do-once - (if - (i32.lt_s - (call $cb - (local.get $a) - (local.get $b) - ) - (i32.const 0) - ) - (local.set $d - (i32.const 1) - ) - (block - (if - (i32.ne - (i32.load8_s - (i32.add - (local.get $b) - (i32.const 75) - ) - ) - (i32.const 10) - ) - (block - (local.set $e - (i32.add - (local.get $b) - (i32.const 20) - ) - ) - (local.set $f - (i32.load - (local.get $e) - ) - ) - (if - (i32.lt_u - (local.get $f) - (i32.load - (i32.add - (local.get $b) - (i32.const 16) - ) - ) - ) - (block - (i32.store - (local.get $e) - (i32.add - (local.get $f) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $f) - (i32.const 10) - ) - (local.set $d - (i32.const 0) - ) - (br $do-once) - ) - ) - ) - ) - (local.set $d - (i32.lt_s - (call $ab - (local.get $b) - (i32.const 10) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (if - (local.get $c) - (call $Ta - (local.get $b) - ) - ) - (return - (i32.shr_s - (i32.shl - (local.get $d) - (i32.const 31) - ) - (i32.const 31) - ) - ) - ) - (func $Xa (; 25 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (local $d i32) - (local.set $b - (i32.add - (local.get $a) - (i32.const 74) - ) - ) - (local.set $c - (i32.load8_s - (local.get $b) - ) - ) - (i32.store8 - (local.get $b) - (i32.or - (i32.add - (local.get $c) - (i32.const 255) - ) - (local.get $c) - ) - ) - (local.set $c - (i32.load - (local.get $a) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $c) - (i32.const 8) - ) - ) - (block - (i32.store - (i32.add - (local.get $a) - (i32.const 8) - ) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $a) - (i32.const 4) - ) - (i32.const 0) - ) - (local.set $b - (i32.load - (i32.add - (local.get $a) - (i32.const 44) - ) - ) - ) - (i32.store - (i32.add - (local.get $a) - (i32.const 28) - ) - (local.get $b) - ) - (i32.store - (i32.add - (local.get $a) - (i32.const 20) - ) - (local.get $b) - ) - (i32.store - (i32.add - (local.get $a) - (i32.const 16) - ) - (i32.add - (local.get $b) - (i32.load - (i32.add - (local.get $a) - (i32.const 48) - ) - ) - ) - ) - (local.set $d - (i32.const 0) - ) - ) - (block - (i32.store - (local.get $a) - (i32.or - (local.get $c) - (i32.const 32) - ) - ) - (local.set $d - (i32.const -1) - ) - ) - ) - (return - (local.get $d) - ) - ) - (func $i32u-div (; 26 ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (i32.eqz - (local.get $1) - ) - (i32.const 0) - (i32.div_u - (local.get $0) - (local.get $1) - ) - ) - ) - (func $bb (; 27 ;) (param $a i32) (param $b i32) (param $c i32) (param $d i32) (result i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local $i i32) - (local.set $e - (i32.mul - (local.get $c) - (local.get $b) - ) - ) - (if - (i32.gt_s - (i32.load - (i32.add - (local.get $d) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (block - (local.set $f - (i32.eq - (call $Ya - (local.get $d) - ) - (i32.const 0) - ) - ) - (local.set $g - (call $Wa - (local.get $a) - (local.get $e) - (local.get $d) - ) - ) - (if - (local.get $f) - (local.set $h - (local.get $g) - ) - (block - (call $Ta - (local.get $d) - ) - (local.set $h - (local.get $g) - ) - ) - ) - ) - (local.set $h - (call $Wa - (local.get $a) - (local.get $e) - (local.get $d) - ) - ) - ) - (if - (i32.eq - (local.get $h) - (local.get $e) - ) - (local.set $i - (local.get $c) - ) - (local.set $i - (call $i32u-div - (local.get $h) - (local.get $b) - ) - ) - ) - (return - (local.get $i) - ) - ) - (func $Ua (; 28 ;) (param $a i32) (param $b i32) (param $c i32) (result i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local.set $d - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 32) - ) - ) - (local.set $e - (local.get $d) - ) - (local.set $f - (i32.add - (local.get $d) - (i32.const 20) - ) - ) - (i32.store - (local.get $e) - (i32.load - (i32.add - (local.get $a) - (i32.const 60) - ) - ) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 4) - ) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 8) - ) - (local.get $b) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 12) - ) - (local.get $f) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 16) - ) - (local.get $c) - ) - (if - (i32.lt_s - (call $Pa - (call $ua - (i32.const 140) - (local.get $e) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (local.get $f) - (i32.const -1) - ) - (local.set $g - (i32.const -1) - ) - ) - (local.set $g - (i32.load - (local.get $f) - ) - ) - ) - (global.set $r - (local.get $d) - ) - (return - (local.get $g) - ) - ) - (func $Va (; 29 ;) (param $a i32) (param $b i32) (param $c i32) (result i32) - (local $d i32) - (local $e i32) - (local.set $d - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 80) - ) - ) - (local.set $e - (local.get $d) - ) - (i32.store - (i32.add - (local.get $a) - (i32.const 36) - ) - (i32.const 3) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $a) - ) - (i32.const 64) - ) - ) - (block - (i32.store - (local.get $e) - (i32.load - (i32.add - (local.get $a) - (i32.const 60) - ) - ) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 4) - ) - (i32.const 21505) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 8) - ) - (i32.add - (local.get $d) - (i32.const 12) - ) - ) - (if - (call $wa - (i32.const 54) - (local.get $e) - ) - (i32.store8 - (i32.add - (local.get $a) - (i32.const 75) - ) - (i32.const -1) - ) - ) - ) - ) - (local.set $e - (call $Ra - (local.get $a) - (local.get $b) - (local.get $c) - ) - ) - (global.set $r - (local.get $d) - ) - (return - (local.get $e) - ) - ) - (func $Ka (; 30 ;) (param $a i32) - (i32.store8 - (global.get $t) - (i32.load8_s - (local.get $a) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 1) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 1) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 2) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 2) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 3) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 3) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 4) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 4) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 5) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 5) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 6) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 6) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 7) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 7) - ) - ) - ) - ) - (func $Oa (; 31 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (local.set $b - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 16) - ) - ) - (local.set $c - (local.get $b) - ) - (i32.store - (local.get $c) - (i32.load - (i32.add - (local.get $a) - (i32.const 60) - ) - ) - ) - (local.set $a - (call $Pa - (call $sa - (i32.const 6) - (local.get $c) - ) - ) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $a) - ) - ) - (func $Pa (; 32 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (if - (i32.gt_u - (local.get $a) - (i32.const -4096) - ) - (block - (local.set $b - (call $Qa) - ) - (i32.store - (local.get $b) - (i32.sub - (i32.const 0) - (local.get $a) - ) - ) - (local.set $c - (i32.const -1) - ) - ) - (local.set $c - (local.get $a) - ) - ) - (return - (local.get $c) - ) - ) - (func $Ja (; 33 ;) (param $a i32) - (i32.store8 - (global.get $t) - (i32.load8_s - (local.get $a) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 1) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 1) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 2) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 2) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 3) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 3) - ) - ) - ) - ) - (func $Qa (; 34 ;) (result i32) - (local $a i32) - (local $b i32) - (if - (i32.eqz - (i32.load - (i32.const 1160) - ) - ) - (local.set $a - (i32.const 1204) - ) - (block - (local.set $b - (i32.add - (call $ib) - (i32.const 64) - ) - ) - (local.set $a - (i32.load - (local.get $b) - ) - ) - ) - ) - (return - (local.get $a) - ) - ) - (func $lb (; 35 ;) (param $a i32) (param $b i32) (param $c i32) (param $d i32) (result i32) - (return - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $b) - (local.get $c) - (local.get $d) - (i32.add - (i32.and - (local.get $a) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - ) - (func $Ea (; 36 ;) (param $a i32) (result i32) - (local $b i32) - (local.set $b - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (local.get $a) - ) - ) - (global.set $r - (i32.and - (i32.add - (global.get $r) - (i32.const 15) - ) - (i32.const -16) - ) - ) - (return - (local.get $b) - ) - ) - (func $cb (; 37 ;) (param $a i32) (param $b i32) (result i32) - (return - (i32.add - (call $bb - (local.get $a) - (call $Za - (local.get $a) - ) - (i32.const 1) - (local.get $b) - ) - (i32.const -1) - ) - ) - ) - (func $ob (; 38 ;) (param $a i32) (param $b i32) (param $c i32) (result i32) - (call $ja - (i32.const 1) - ) - (return - (i32.const 0) - ) - ) - (func $Ia (; 39 ;) (param $a i32) (param $b i32) - (if - (i32.eqz - (global.get $v) - ) - (block - (global.set $v - (local.get $a) - ) - (global.set $w - (local.get $b) - ) - ) - ) - ) - (func $kb (; 40 ;) (param $a i32) (param $b i32) (result i32) - (return - (call_indirect (type $i32_=>_i32) - (local.get $b) - (i32.add - (i32.and - (local.get $a) - (i32.const 1) - ) - (i32.const 0) - ) - ) - ) - ) - (func $Sa (; 41 ;) (param $a i32) - (if - (i32.eqz - (i32.load - (i32.add - (local.get $a) - (i32.const 68) - ) - ) - ) - (call $Ta - (local.get $a) - ) - ) - (return) - ) - (func $mb (; 42 ;) (param $a i32) (param $b i32) - (call_indirect (type $i32_=>_none) - (local.get $b) - (i32.add - (i32.and - (local.get $a) - (i32.const 1) - ) - (i32.const 6) - ) - ) - ) - (func $Ha (; 43 ;) (param $a i32) (param $b i32) - (global.set $r - (local.get $a) - ) - (global.set $s - (local.get $b) - ) - ) - (func $nb (; 44 ;) (param $a i32) (result i32) - (call $ja - (i32.const 0) - ) - (return - (i32.const 0) - ) - ) - (func $Na (; 45 ;) (result i32) - (drop - (call $db - (i32.const 1144) - ) - ) - (return - (i32.const 0) - ) - ) - (func $Ya (; 46 ;) (param $a i32) (result i32) - (return - (i32.const 0) - ) - ) - (func $Ta (; 47 ;) (param $a i32) - (return) - ) - (func $pb (; 48 ;) (param $a i32) - (call $ja - (i32.const 2) - ) - ) - (func $La (; 49 ;) (param $a i32) - (global.set $K - (local.get $a) - ) - ) - (func $Ga (; 50 ;) (param $a i32) - (global.set $r - (local.get $a) - ) - ) - (func $Ma (; 51 ;) (result i32) - (return - (global.get $K) - ) - ) - (func $Fa (; 52 ;) (result i32) - (return - (global.get $r) - ) - ) - (func $ib (; 53 ;) (result i32) - (return - (i32.const 0) - ) - ) -) diff -Nru binaryen-91/test/memorygrowth.fromasm.imprecise binaryen-99/test/memorygrowth.fromasm.imprecise --- binaryen-91/test/memorygrowth.fromasm.imprecise 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/memorygrowth.fromasm.imprecise 1970-01-01 00:00:00.000000000 +0000 @@ -1,9065 +0,0 @@ -(module - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (import "env" "memory" (memory $memory 256)) - (import "env" "table" (table $table 8 8 funcref)) - (elem (global.get $__table_base) $nb $Oa $ob $Va $Ua $Ra $pb $Sa) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $r$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $s$asm2wasm$import i32)) - (import "env" "abort" (func $ja (param i32))) - (import "env" "_pthread_cleanup_pop" (func $oa (param i32))) - (import "env" "___lock" (func $pa (param i32))) - (import "env" "_abort" (func $qa)) - (import "env" "_pthread_cleanup_push" (func $ra (param i32 i32))) - (import "env" "___syscall6" (func $sa (param i32 i32) (result i32))) - (import "env" "_sbrk" (func $ta (param i32) (result i32))) - (import "env" "___syscall140" (func $ua (param i32 i32) (result i32))) - (import "env" "_emscripten_memcpy_big" (func $va (param i32 i32 i32) (result i32))) - (import "env" "___syscall54" (func $wa (param i32 i32) (result i32))) - (import "env" "___unlock" (func $xa (param i32))) - (import "env" "___syscall146" (func $ya (param i32 i32) (result i32))) - (global $r (mut i32) (global.get $r$asm2wasm$import)) - (global $s (mut i32) (global.get $s$asm2wasm$import)) - (global $v (mut i32) (i32.const 0)) - (global $w (mut i32) (i32.const 0)) - (global $K (mut i32) (i32.const 0)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (export "_free" (func $fb)) - (export "_main" (func $Na)) - (export "_pthread_self" (func $ib)) - (export "_memset" (func $hb)) - (export "_malloc" (func $eb)) - (export "_memcpy" (func $jb)) - (export "_fflush" (func $_a)) - (export "___errno_location" (func $Qa)) - (export "runPostSets" (func $gb)) - (export "stackAlloc" (func $Ea)) - (export "stackSave" (func $Fa)) - (export "stackRestore" (func $Ga)) - (export "establishStackSpace" (func $Ha)) - (export "setThrew" (func $Ia)) - (export "setTempRet0" (func $La)) - (export "getTempRet0" (func $Ma)) - (export "dynCall_ii" (func $kb)) - (export "dynCall_iiii" (func $lb)) - (export "dynCall_vi" (func $mb)) - (func $__growWasmMemory (; 12 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (memory.grow - (local.get $0) - ) - ) - (func $eb (; 13 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i32) - (local $44 i32) - (local $45 i32) - (local $46 i32) - (local $47 i32) - (local.set $18 - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 16) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.const 245) - ) - (block - (if - (i32.and - (local.tee $10 - (i32.shr_u - (local.tee $12 - (i32.load - (i32.const 1208) - ) - ) - (local.tee $2 - (i32.shr_u - (local.tee $4 - (select - (i32.const 16) - (i32.and - (i32.add - (local.get $0) - (i32.const 11) - ) - (i32.const -8) - ) - (i32.lt_u - (local.get $0) - (i32.const 11) - ) - ) - ) - (i32.const 3) - ) - ) - ) - ) - (i32.const 3) - ) - (block - (local.set $0 - (i32.load - (local.tee $2 - (i32.add - (local.tee $4 - (i32.load offset=8 - (local.tee $1 - (i32.add - (i32.shl - (local.tee $3 - (i32.add - (local.get $2) - (i32.xor - (i32.and - (local.get $10) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.eq - (local.get $0) - (local.get $1) - ) - (i32.store - (i32.const 1208) - (i32.and - (i32.xor - (i32.shl - (i32.const 1) - (local.get $3) - ) - (i32.const -1) - ) - (local.get $12) - ) - ) - (block - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $4) - (i32.load offset=12 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $0) - (local.get $1) - ) - (i32.store offset=8 - (local.get $1) - (local.get $0) - ) - ) - (call $qa) - ) - ) - ) - (i32.store offset=4 - (local.get $4) - (i32.or - (local.tee $0 - (i32.shl - (local.get $3) - (i32.const 3) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $4) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - (global.set $r - (local.get $18) - ) - (return - (local.get $2) - ) - ) - ) - (if - (i32.gt_u - (local.get $4) - (local.tee $0 - (i32.load - (i32.const 1216) - ) - ) - ) - (block - (if - (local.get $10) - (block - (local.set $1 - (i32.and - (i32.shr_u - (local.tee $3 - (i32.add - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.and - (i32.or - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.shl - (i32.const 2) - (local.get $2) - ) - ) - ) - (local.get $1) - ) - (i32.shl - (local.get $10) - (local.get $2) - ) - ) - ) - ) - (local.get $1) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $3 - (i32.and - (i32.shr_u - (local.tee $2 - (i32.shr_u - (local.get $3) - (local.get $1) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $2 - (i32.and - (i32.shr_u - (local.tee $5 - (i32.shr_u - (local.get $2) - (local.get $3) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $5 - (i32.and - (i32.shr_u - (local.tee $7 - (i32.shr_u - (local.get $5) - (local.get $2) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $1 - (i32.load - (local.tee $6 - (i32.add - (local.tee $2 - (i32.load offset=8 - (local.tee $3 - (i32.add - (i32.shl - (local.tee $5 - (i32.add - (i32.or - (local.tee $6 - (i32.and - (i32.shr_u - (local.tee $7 - (i32.shr_u - (local.get $7) - (local.get $5) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (i32.or - (local.get $5) - (i32.or - (local.get $2) - (i32.or - (local.get $1) - (local.get $3) - ) - ) - ) - ) - (i32.shr_u - (local.get $7) - (local.get $6) - ) - ) - ) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - ) - ) - (i32.const 8) - ) - ) - ) - ) - (if - (i32.eq - (local.get $1) - (local.get $3) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (i32.xor - (i32.shl - (i32.const 1) - (local.get $5) - ) - (i32.const -1) - ) - (local.get $12) - ) - ) - (local.set $13 - (local.get $0) - ) - ) - (block - (if - (i32.lt_u - (local.get $1) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $2) - (i32.load offset=12 - (local.get $1) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $1) - ) - (local.set $13 - (i32.load - (i32.const 1216) - ) - ) - ) - (call $qa) - ) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $7 - (i32.add - (local.get $2) - (local.get $4) - ) - ) - (i32.or - (local.tee $2 - (i32.sub - (i32.shl - (local.get $5) - (i32.const 3) - ) - (local.get $4) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $2) - (local.get $7) - ) - (local.get $2) - ) - (if - (local.get $13) - (block - (local.set $3 - (i32.load - (i32.const 1228) - ) - ) - (local.set $0 - (i32.add - (i32.shl - (local.tee $1 - (i32.shr_u - (local.get $13) - (i32.const 3) - ) - ) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 1208) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $20 - (local.get $1) - ) - (local.set $8 - (local.get $4) - ) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $20 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $8 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $20) - (local.get $3) - ) - (i32.store offset=12 - (local.get $8) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $8) - ) - (i32.store offset=12 - (local.get $3) - (local.get $0) - ) - ) - ) - (i32.store - (i32.const 1216) - (local.get $2) - ) - (i32.store - (i32.const 1228) - (local.get $7) - ) - (global.set $r - (local.get $18) - ) - (return - (local.get $6) - ) - ) - ) - (if - (local.tee $0 - (i32.load - (i32.const 1212) - ) - ) - (block - (local.set $0 - (i32.and - (i32.shr_u - (local.tee $1 - (i32.add - (i32.and - (i32.sub - (i32.const 0) - (local.get $0) - ) - (local.get $0) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $1 - (i32.and - (i32.shr_u - (local.tee $3 - (i32.shr_u - (local.get $1) - (local.get $0) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $3 - (i32.and - (i32.shr_u - (local.tee $2 - (i32.shr_u - (local.get $3) - (local.get $1) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $2 - (i32.and - (i32.shr_u - (local.tee $8 - (i32.shr_u - (local.get $2) - (local.get $3) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $7 - (i32.sub - (i32.and - (i32.load offset=4 - (local.tee $0 - (i32.load - (i32.add - (i32.shl - (i32.add - (i32.or - (local.tee $7 - (i32.and - (i32.shr_u - (local.tee $8 - (i32.shr_u - (local.get $8) - (local.get $2) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (i32.or - (local.get $2) - (i32.or - (local.get $3) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - ) - (i32.shr_u - (local.get $8) - (local.get $7) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - ) - (i32.const -8) - ) - (local.get $4) - ) - ) - (local.set $9 - (local.get $0) - ) - (loop $while-in - (block $while-out - (if - (local.tee $1 - (i32.load offset=16 - (local.get $0) - ) - ) - (local.set $0 - (local.get $1) - ) - (if - (i32.eqz - (local.tee $0 - (i32.load offset=20 - (local.get $0) - ) - ) - ) - (block - (local.set $8 - (local.get $9) - ) - (br $while-out) - ) - ) - ) - (local.set $1 - (i32.lt_u - (local.tee $3 - (i32.sub - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - (local.get $4) - ) - ) - (local.get $7) - ) - ) - (local.set $7 - (select - (local.get $3) - (local.get $7) - (local.get $1) - ) - ) - (local.set $9 - (select - (local.get $0) - (local.get $9) - (local.get $1) - ) - ) - (br $while-in) - ) - ) - (if - (i32.lt_u - (local.get $8) - (local.tee $14 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (if - (i32.ge_u - (local.get $8) - (local.tee $12 - (i32.add - (local.get $4) - (local.get $8) - ) - ) - ) - (call $qa) - ) - (local.set $10 - (i32.load offset=24 - (local.get $8) - ) - ) - (if - (i32.eq - (local.get $8) - (local.tee $0 - (i32.load offset=12 - (local.get $8) - ) - ) - ) - (block $do-once4 - (if - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $8) - (i32.const 20) - ) - ) - ) - ) - ) - (br_if $do-once4 - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $8) - (i32.const 16) - ) - ) - ) - ) - ) - ) - ) - (loop $while-in7 - (if - (local.tee $2 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $2) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in7) - ) - ) - (if - (local.tee $2 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $2) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in7) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $14) - ) - (call $qa) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $5 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $8) - ) - ) - (local.get $14) - ) - (call $qa) - ) - (if - (i32.ne - (local.get $8) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $8) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $5 - (local.get $0) - ) - ) - (call $qa) - ) - ) - ) - (if - (local.get $10) - (block $do-once8 - (if - (i32.eq - (i32.load - (local.tee $1 - (i32.add - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $8) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - (local.get $8) - ) - (block - (i32.store - (local.get $1) - (local.get $5) - ) - (if - (i32.eqz - (local.get $5) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $do-once8) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $10) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $8) - (i32.load offset=16 - (local.get $10) - ) - ) - (i32.store offset=16 - (local.get $10) - (local.get $5) - ) - (i32.store offset=20 - (local.get $10) - (local.get $5) - ) - ) - (br_if $do-once8 - (i32.eqz - (local.get $5) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $5) - (local.tee $1 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (i32.store offset=24 - (local.get $5) - (local.get $10) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $8) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $qa) - (block - (i32.store offset=16 - (local.get $5) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $5) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $8) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store offset=20 - (local.get $5) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $5) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $7) - (i32.const 16) - ) - (block - (i32.store offset=4 - (local.get $8) - (i32.or - (local.tee $0 - (i32.add - (local.get $4) - (local.get $7) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $8) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - ) - (block - (i32.store offset=4 - (local.get $8) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.get $12) - (i32.or - (local.get $7) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $7) - (local.get $12) - ) - (local.get $7) - ) - (if - (local.tee $0 - (i32.load - (i32.const 1216) - ) - ) - (block - (local.set $3 - (i32.load - (i32.const 1228) - ) - ) - (local.set $0 - (i32.add - (i32.shl - (local.tee $1 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 1208) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $21 - (local.get $1) - ) - (local.set $6 - (local.get $4) - ) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $21 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $6 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $21) - (local.get $3) - ) - (i32.store offset=12 - (local.get $6) - (local.get $3) - ) - (i32.store offset=8 - (local.get $3) - (local.get $6) - ) - (i32.store offset=12 - (local.get $3) - (local.get $0) - ) - ) - ) - (i32.store - (i32.const 1216) - (local.get $7) - ) - (i32.store - (i32.const 1228) - (local.get $12) - ) - ) - ) - (global.set $r - (local.get $18) - ) - (return - (i32.add - (local.get $8) - (i32.const 8) - ) - ) - ) - ) - ) - ) - ) - (local.set $4 - (if (result i32) - (i32.gt_u - (local.get $0) - (i32.const -65) - ) - (i32.const -1) - (block $do-once (result i32) - (local.set $8 - (i32.and - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 11) - ) - ) - (i32.const -8) - ) - ) - (if (result i32) - (local.tee $39 - (i32.load - (i32.const 1212) - ) - ) - (block (result i32) - (local.set $21 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $0) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $8) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $6 - (i32.shl - (local.get $0) - (local.tee $5 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $8) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $13 - (i32.and - (i32.shr_u - (i32.add - (local.tee $6 - (i32.shl - (local.get $6) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $5) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $6) - (local.get $13) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (local.set $0 - (i32.sub - (i32.const 0) - (local.get $8) - ) - ) - (if - (local.tee $6 - (i32.load - (i32.add - (i32.shl - (local.get $21) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - (block $label$break$a - (local.set $9 - (i32.shl - (local.get $8) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $21) - (i32.const 1) - ) - ) - (i32.eq - (local.get $21) - (i32.const 31) - ) - ) - ) - ) - (local.set $5 - (i32.const 0) - ) - (local.set $10 - (loop $while-in14 (result i32) - (if - (i32.lt_u - (local.tee $13 - (i32.sub - (local.tee $25 - (i32.and - (i32.load offset=4 - (local.get $6) - ) - (i32.const -8) - ) - ) - (local.get $8) - ) - ) - (local.get $0) - ) - (local.set $0 - (if (result i32) - (i32.eq - (local.get $8) - (local.get $25) - ) - (block - (local.set $4 - (local.get $13) - ) - (local.set $12 - (local.get $6) - ) - (local.set $2 - (local.get $6) - ) - (local.set $9 - (i32.const 90) - ) - (br $label$break$a) - ) - (block (result i32) - (local.set $5 - (local.get $6) - ) - (local.get $13) - ) - ) - ) - ) - (local.set $13 - (select - (local.get $20) - (local.tee $13 - (i32.load offset=20 - (local.get $6) - ) - ) - (i32.or - (i32.eqz - (local.get $13) - ) - (i32.eq - (local.tee $6 - (i32.load - (i32.add - (i32.add - (local.get $6) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $9) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - (local.get $13) - ) - ) - ) - ) - (if (result i32) - (local.tee $25 - (i32.eqz - (local.get $6) - ) - ) - (block (result i32) - (local.set $19 - (local.get $13) - ) - (local.set $22 - (local.get $5) - ) - (local.set $9 - (i32.const 86) - ) - (local.get $0) - ) - (block - (local.set $20 - (local.get $13) - ) - (local.set $9 - (i32.shl - (local.get $9) - (i32.xor - (local.get $25) - (i32.const 1) - ) - ) - ) - (br $while-in14) - ) - ) - ) - ) - ) - (block - (local.set $10 - (local.get $0) - ) - (local.set $9 - (i32.const 86) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 86) - ) - (block - (if - (i32.eqz - (i32.or - (local.get $19) - (local.get $22) - ) - ) - (block - (drop - (br_if $do-once - (local.get $8) - (i32.eqz - (local.tee $0 - (i32.and - (i32.or - (i32.sub - (i32.const 0) - (local.tee $0 - (i32.shl - (i32.const 2) - (local.get $21) - ) - ) - ) - (local.get $0) - ) - (local.get $39) - ) - ) - ) - ) - ) - (local.set $0 - (i32.and - (i32.shr_u - (local.tee $5 - (i32.add - (i32.and - (i32.sub - (i32.const 0) - (local.get $0) - ) - (local.get $0) - ) - (i32.const -1) - ) - ) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $5 - (i32.and - (i32.shr_u - (local.tee $6 - (i32.shr_u - (local.get $5) - (local.get $0) - ) - ) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $6 - (i32.and - (i32.shr_u - (local.tee $13 - (i32.shr_u - (local.get $6) - (local.get $5) - ) - ) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $13 - (i32.and - (i32.shr_u - (local.tee $19 - (i32.shr_u - (local.get $13) - (local.get $6) - ) - ) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $19 - (i32.load - (i32.add - (i32.shl - (i32.add - (i32.or - (local.tee $20 - (i32.and - (i32.shr_u - (local.tee $19 - (i32.shr_u - (local.get $19) - (local.get $13) - ) - ) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (i32.or - (local.get $13) - (i32.or - (local.get $6) - (i32.or - (local.get $0) - (local.get $5) - ) - ) - ) - ) - (i32.shr_u - (local.get $19) - (local.get $20) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - ) - ) - (if - (local.get $19) - (block - (local.set $4 - (local.get $10) - ) - (local.set $12 - (local.get $19) - ) - (local.set $2 - (local.get $22) - ) - (local.set $9 - (i32.const 90) - ) - ) - (block - (local.set $15 - (local.get $10) - ) - (local.set $11 - (local.get $22) - ) - ) - ) - ) - ) - (if (result i32) - (block (result i32) - (if - (i32.eq - (local.get $9) - (i32.const 90) - ) - (local.set $11 - (loop $while-in16 (result i32) - (local.set $9 - (i32.const 0) - ) - (local.set $0 - (i32.lt_u - (local.tee $5 - (i32.sub - (i32.and - (i32.load offset=4 - (local.get $12) - ) - (i32.const -8) - ) - (local.get $8) - ) - ) - (local.get $4) - ) - ) - (local.set $4 - (select - (local.get $5) - (local.get $4) - (local.get $0) - ) - ) - (local.set $2 - (select - (local.get $12) - (local.get $2) - (local.get $0) - ) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $12) - ) - ) - (block - (local.set $12 - (local.get $0) - ) - (br $while-in16) - ) - ) - (br_if $while-in16 - (local.tee $12 - (i32.load offset=20 - (local.get $12) - ) - ) - ) - (local.set $15 - (local.get $4) - ) - (local.get $2) - ) - ) - ) - (local.get $11) - ) - (if (result i32) - (i32.lt_u - (local.get $15) - (i32.sub - (i32.load - (i32.const 1216) - ) - (local.get $8) - ) - ) - (block - (if - (i32.lt_u - (local.get $11) - (local.tee $7 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (if - (i32.ge_u - (local.get $11) - (local.tee $2 - (i32.add - (local.get $8) - (local.get $11) - ) - ) - ) - (call $qa) - ) - (local.set $5 - (i32.load offset=24 - (local.get $11) - ) - ) - (if - (i32.eq - (local.get $11) - (local.tee $0 - (i32.load offset=12 - (local.get $11) - ) - ) - ) - (block $do-once17 - (if - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $11) - (i32.const 20) - ) - ) - ) - ) - ) - (br_if $do-once17 - (i32.eqz - (local.tee $0 - (i32.load - (local.tee $1 - (i32.add - (local.get $11) - (i32.const 16) - ) - ) - ) - ) - ) - ) - ) - (loop $while-in20 - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in20) - ) - ) - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in20) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $7) - ) - (call $qa) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $16 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $11) - ) - ) - (local.get $7) - ) - (call $qa) - ) - (if - (i32.ne - (local.get $11) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $11) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $16 - (local.get $0) - ) - ) - (call $qa) - ) - ) - ) - (if - (local.get $5) - (block $do-once21 - (if - (i32.eq - (i32.load - (local.tee $1 - (i32.add - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $11) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - (local.get $11) - ) - (block - (i32.store - (local.get $1) - (local.get $16) - ) - (if - (i32.eqz - (local.get $16) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $do-once21) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $5) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $11) - (i32.load offset=16 - (local.get $5) - ) - ) - (i32.store offset=16 - (local.get $5) - (local.get $16) - ) - (i32.store offset=20 - (local.get $5) - (local.get $16) - ) - ) - (br_if $do-once21 - (i32.eqz - (local.get $16) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $16) - (local.tee $1 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (i32.store offset=24 - (local.get $16) - (local.get $5) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $11) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $qa) - (block - (i32.store offset=16 - (local.get $16) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $16) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $11) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store offset=20 - (local.get $16) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $16) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $15) - (i32.const 16) - ) - (block - (i32.store offset=4 - (local.get $11) - (i32.or - (local.tee $0 - (i32.add - (local.get $8) - (local.get $15) - ) - ) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $0 - (i32.add - (local.get $0) - (local.get $11) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $0) - ) - (i32.const 1) - ) - ) - ) - (block $do-once25 - (i32.store offset=4 - (local.get $11) - (i32.or - (local.get $8) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $15) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $2) - (local.get $15) - ) - (local.get $15) - ) - (local.set $1 - (i32.shr_u - (local.get $15) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $15) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 1208) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $29 - (local.get $1) - ) - (local.set $14 - (local.get $4) - ) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $29 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $14 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $29) - (local.get $2) - ) - (i32.store offset=12 - (local.get $14) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $14) - ) - (i32.store offset=12 - (local.get $2) - (local.get $0) - ) - (br $do-once25) - ) - ) - (local.set $1 - (i32.add - (i32.shl - (local.tee $0 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $15) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $15) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $15) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $3 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $4) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $4) - (local.get $3) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - (i32.store offset=28 - (local.get $2) - (local.get $0) - ) - (i32.store offset=20 - (local.get $2) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $2) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $4 - (i32.load - (i32.const 1212) - ) - ) - (local.tee $3 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $3) - (local.get $4) - ) - ) - (i32.store - (local.get $1) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $1) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - (br $do-once25) - ) - ) - (local.set $3 - (i32.shl - (local.get $15) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $0) - (i32.const 1) - ) - ) - (i32.eq - (local.get $0) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load - (local.get $1) - ) - ) - (if - (i32.eq - (local.tee $9 - (loop $while-in28 (result i32) - (block $while-out27 (result i32) - (if - (i32.eq - (local.get $15) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $30 - (local.get $0) - ) - (br $while-out27 - (i32.const 148) - ) - ) - ) - (if (result i32) - (local.tee $1 - (i32.load - (local.tee $4 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $3) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $3 - (i32.shl - (local.get $3) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in28) - ) - (block (result i32) - (local.set $31 - (local.get $4) - ) - (local.set $40 - (local.get $0) - ) - (i32.const 145) - ) - ) - ) - ) - ) - (i32.const 145) - ) - (if - (i32.lt_u - (local.get $31) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $31) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $40) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 148) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $30) - ) - ) - ) - (local.tee $4 - (i32.load - (i32.const 1224) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $4) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $2) - ) - (i32.store offset=8 - (local.get $0) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $1) - ) - (i32.store offset=12 - (local.get $2) - (local.get $30) - ) - (i32.store offset=24 - (local.get $2) - (i32.const 0) - ) - ) - (call $qa) - ) - ) - ) - ) - ) - (global.set $r - (local.get $18) - ) - (return - (i32.add - (local.get $11) - (i32.const 8) - ) - ) - ) - (local.get $8) - ) - (local.get $8) - ) - ) - (local.get $8) - ) - ) - ) - ) - ) - (block $folding-inner1 - (if - (i32.ge_u - (local.tee $2 - (i32.load - (i32.const 1216) - ) - ) - (local.get $4) - ) - (block - (local.set $0 - (i32.load - (i32.const 1228) - ) - ) - (if - (i32.gt_u - (local.tee $1 - (i32.sub - (local.get $2) - (local.get $4) - ) - ) - (i32.const 15) - ) - (block - (i32.store - (i32.const 1228) - (local.tee $3 - (i32.add - (local.get $0) - (local.get $4) - ) - ) - ) - (i32.store - (i32.const 1216) - (local.get $1) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $1) - (local.get $3) - ) - (local.get $1) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - ) - (block - (i32.store - (i32.const 1216) - (i32.const 0) - ) - (i32.store - (i32.const 1228) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $2) - (i32.const 3) - ) - ) - (i32.store offset=4 - (local.tee $1 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - (i32.or - (i32.load offset=4 - (local.get $1) - ) - (i32.const 1) - ) - ) - ) - ) - (br $folding-inner1) - ) - ) - (block $folding-inner0 - (br_if $folding-inner0 - (i32.gt_u - (local.tee $0 - (i32.load - (i32.const 1220) - ) - ) - (local.get $4) - ) - ) - (local.set $0 - (local.get $18) - ) - (if - (i32.eqz - (i32.load - (i32.const 1680) - ) - ) - (block - (i32.store - (i32.const 1688) - (i32.const 4096) - ) - (i32.store - (i32.const 1684) - (i32.const 4096) - ) - (i32.store - (i32.const 1692) - (i32.const -1) - ) - (i32.store - (i32.const 1696) - (i32.const -1) - ) - (i32.store - (i32.const 1700) - (i32.const 0) - ) - (i32.store - (i32.const 1652) - (i32.const 0) - ) - (i32.store - (local.get $0) - (local.tee $0 - (i32.xor - (i32.and - (local.get $0) - (i32.const -16) - ) - (i32.const 1431655768) - ) - ) - ) - (i32.store - (i32.const 1680) - (local.get $0) - ) - ) - ) - (if - (i32.le_u - (local.tee $5 - (i32.and - (local.tee $10 - (i32.add - (local.tee $0 - (i32.load - (i32.const 1688) - ) - ) - (local.tee $6 - (i32.add - (local.get $4) - (i32.const 47) - ) - ) - ) - ) - (local.tee $12 - (i32.sub - (i32.const 0) - (local.get $0) - ) - ) - ) - ) - (local.get $4) - ) - (block - (global.set $r - (local.get $18) - ) - (return - (i32.const 0) - ) - ) - ) - (if - (local.tee $0 - (i32.load - (i32.const 1648) - ) - ) - (if - (i32.or - (i32.le_u - (local.tee $8 - (i32.add - (local.get $5) - (local.tee $2 - (i32.load - (i32.const 1640) - ) - ) - ) - ) - (local.get $2) - ) - (i32.gt_u - (local.get $8) - (local.get $0) - ) - ) - (block - (global.set $r - (local.get $18) - ) - (return - (i32.const 0) - ) - ) - ) - ) - (local.set $22 - (i32.add - (local.get $4) - (i32.const 48) - ) - ) - (if - (i32.eq - (local.tee $9 - (if (result i32) - (i32.and - (i32.load - (i32.const 1652) - ) - (i32.const 4) - ) - (i32.const 188) - (block $label$break$b (result i32) - (if - (local.tee $2 - (i32.load - (i32.const 1232) - ) - ) - (block $label$break$c - (local.set $14 - (i32.const 1656) - ) - (loop $while-in32 - (block $while-out31 - (if - (i32.le_u - (local.tee $8 - (i32.load - (local.get $14) - ) - ) - (local.get $2) - ) - (if - (i32.gt_u - (i32.add - (i32.load - (local.tee $0 - (i32.add - (local.get $14) - (i32.const 4) - ) - ) - ) - (local.get $8) - ) - (local.get $2) - ) - (block - (local.set $8 - (local.get $0) - ) - (br $while-out31) - ) - ) - ) - (br_if $while-in32 - (local.tee $14 - (i32.load offset=8 - (local.get $14) - ) - ) - ) - (local.set $9 - (i32.const 171) - ) - (br $label$break$c) - ) - ) - (if - (i32.lt_u - (local.tee $2 - (i32.and - (local.get $12) - (i32.sub - (local.get $10) - (i32.load - (i32.const 1220) - ) - ) - ) - ) - (i32.const 2147483647) - ) - (block - (local.set $0 - (call $ta - (local.get $2) - ) - ) - (if - (i32.eq - (i32.add - (i32.load - (local.get $14) - ) - (i32.load - (local.get $8) - ) - ) - (local.get $0) - ) - (if - (i32.ne - (local.get $0) - (i32.const -1) - ) - (block - (local.set $3 - (local.get $0) - ) - (local.set $7 - (local.get $2) - ) - (br $label$break$b - (i32.const 191) - ) - ) - ) - (block - (local.set $24 - (local.get $0) - ) - (local.set $1 - (local.get $2) - ) - (local.set $9 - (i32.const 181) - ) - ) - ) - ) - ) - ) - (local.set $9 - (i32.const 171) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 171) - ) - (if - (i32.ne - (local.tee $2 - (call $ta - (i32.const 0) - ) - ) - (i32.const -1) - ) - (block $do-once33 - (local.set $8 - (i32.add - (local.tee $0 - (if (result i32) - (i32.and - (local.tee $0 - (local.get $2) - ) - (local.tee $10 - (i32.add - (local.tee $8 - (i32.load - (i32.const 1684) - ) - ) - (i32.const -1) - ) - ) - ) - (i32.add - (i32.sub - (local.get $5) - (local.get $0) - ) - (i32.and - (i32.add - (local.get $0) - (local.get $10) - ) - (i32.sub - (i32.const 0) - (local.get $8) - ) - ) - ) - (local.get $5) - ) - ) - (local.tee $10 - (i32.load - (i32.const 1640) - ) - ) - ) - ) - (if - (i32.and - (i32.lt_u - (local.get $0) - (i32.const 2147483647) - ) - (i32.gt_u - (local.get $0) - (local.get $4) - ) - ) - (block - (br_if $do-once33 - (select - (local.tee $12 - (i32.load - (i32.const 1648) - ) - ) - (i32.const 0) - (i32.or - (i32.le_u - (local.get $8) - (local.get $10) - ) - (i32.gt_u - (local.get $8) - (local.get $12) - ) - ) - ) - ) - (local.set $1 - (if (result i32) - (i32.eq - (local.get $2) - (local.tee $24 - (call $ta - (local.get $0) - ) - ) - ) - (block - (local.set $3 - (local.get $2) - ) - (local.set $7 - (local.get $0) - ) - (br $label$break$b - (i32.const 191) - ) - ) - (block (result i32) - (local.set $9 - (i32.const 181) - ) - (local.get $0) - ) - ) - ) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 181) - ) - (block $label$break$d - (local.set $2 - (i32.sub - (i32.const 0) - (local.get $1) - ) - ) - (if - (i32.and - (i32.and - (i32.ne - (local.get $24) - (i32.const -1) - ) - (i32.lt_u - (local.get $1) - (i32.const 2147483647) - ) - ) - (i32.gt_u - (local.get $22) - (local.get $1) - ) - ) - (if - (i32.lt_u - (local.tee $0 - (i32.and - (i32.add - (local.tee $0 - (i32.load - (i32.const 1688) - ) - ) - (i32.sub - (local.get $6) - (local.get $1) - ) - ) - (i32.sub - (i32.const 0) - (local.get $0) - ) - ) - ) - (i32.const 2147483647) - ) - (local.set $1 - (if (result i32) - (i32.eq - (call $ta - (local.get $0) - ) - (i32.const -1) - ) - (block - (drop - (call $ta - (local.get $2) - ) - ) - (br $label$break$d) - ) - (i32.add - (local.get $0) - (local.get $1) - ) - ) - ) - ) - ) - (if - (i32.ne - (local.get $24) - (i32.const -1) - ) - (block - (local.set $3 - (local.get $24) - ) - (local.set $7 - (local.get $1) - ) - (br $label$break$b - (i32.const 191) - ) - ) - ) - ) - ) - (i32.store - (i32.const 1652) - (i32.or - (i32.load - (i32.const 1652) - ) - (i32.const 4) - ) - ) - (i32.const 188) - ) - ) - ) - (i32.const 188) - ) - (if - (i32.lt_u - (local.get $5) - (i32.const 2147483647) - ) - (if - (i32.and - (i32.and - (i32.ne - (local.tee $0 - (call $ta - (local.get $5) - ) - ) - (i32.const -1) - ) - (i32.ne - (local.tee $1 - (call $ta - (i32.const 0) - ) - ) - (i32.const -1) - ) - ) - (i32.lt_u - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.gt_u - (local.tee $1 - (i32.sub - (local.get $1) - (local.get $0) - ) - ) - (i32.add - (local.get $4) - (i32.const 40) - ) - ) - (block - (local.set $7 - (local.get $1) - ) - (local.set $9 - (i32.const 191) - ) - (local.set $3 - (local.get $0) - ) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 191) - ) - (block - (i32.store - (i32.const 1640) - (local.tee $0 - (i32.add - (local.get $7) - (i32.load - (i32.const 1640) - ) - ) - ) - ) - (if - (i32.gt_u - (local.get $0) - (i32.load - (i32.const 1644) - ) - ) - (i32.store - (i32.const 1644) - (local.get $0) - ) - ) - (if - (local.tee $6 - (i32.load - (i32.const 1232) - ) - ) - (block $do-once38 - (local.set $1 - (i32.const 1656) - ) - (loop $do-in41 - (block $do-out40 - (if - (i32.eq - (i32.add - (local.tee $0 - (i32.load - (local.get $1) - ) - ) - (local.tee $5 - (i32.load - (local.tee $2 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - ) - ) - ) - (local.get $3) - ) - (block - (local.set $41 - (local.get $0) - ) - (local.set $42 - (local.get $2) - ) - (local.set $43 - (local.get $5) - ) - (local.set $44 - (local.get $1) - ) - (local.set $9 - (i32.const 201) - ) - (br $do-out40) - ) - ) - (br_if $do-in41 - (local.tee $1 - (i32.load offset=8 - (local.get $1) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 201) - ) - (if - (i32.eqz - (i32.and - (i32.load offset=12 - (local.get $44) - ) - (i32.const 8) - ) - ) - (if - (i32.and - (i32.lt_u - (local.get $6) - (local.get $3) - ) - (i32.ge_u - (local.get $6) - (local.get $41) - ) - ) - (block - (i32.store - (local.get $42) - (i32.add - (local.get $7) - (local.get $43) - ) - ) - (local.set $0 - (i32.add - (local.get $6) - (local.tee $1 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $0 - (i32.add - (local.get $6) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $0) - (i32.const 7) - ) - ) - ) - ) - ) - (local.set $1 - (i32.add - (i32.load - (i32.const 1220) - ) - (i32.sub - (local.get $7) - (local.get $1) - ) - ) - ) - (i32.store - (i32.const 1232) - (local.get $0) - ) - (i32.store - (i32.const 1220) - (local.get $1) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $0) - (local.get $1) - ) - (i32.const 40) - ) - (i32.store - (i32.const 1236) - (i32.load - (i32.const 1696) - ) - ) - (br $do-once38) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $3) - (local.tee $2 - (i32.load - (i32.const 1224) - ) - ) - ) - (block - (i32.store - (i32.const 1224) - (local.get $3) - ) - (local.set $2 - (local.get $3) - ) - ) - ) - (local.set $0 - (i32.add - (local.get $3) - (local.get $7) - ) - ) - (local.set $1 - (i32.const 1656) - ) - (loop $while-in43 - (block $while-out42 - (if - (i32.eq - (local.get $0) - (i32.load - (local.get $1) - ) - ) - (block - (local.set $45 - (local.get $1) - ) - (local.set $26 - (local.get $1) - ) - (local.set $9 - (i32.const 209) - ) - (br $while-out42) - ) - ) - (br_if $while-in43 - (local.tee $1 - (i32.load offset=8 - (local.get $1) - ) - ) - ) - (local.set $23 - (i32.const 1656) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 209) - ) - (local.set $23 - (if (result i32) - (i32.and - (i32.load offset=12 - (local.get $26) - ) - (i32.const 8) - ) - (i32.const 1656) - (block - (i32.store - (local.get $45) - (local.get $3) - ) - (i32.store offset=4 - (local.get $26) - (i32.add - (local.get $7) - (i32.load offset=4 - (local.get $26) - ) - ) - ) - (local.set $7 - (i32.add - (local.get $4) - (local.tee $10 - (i32.add - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - (local.get $3) - ) - ) - ) - ) - (local.set $8 - (i32.sub - (i32.sub - (local.tee $5 - (i32.add - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - (local.get $0) - ) - ) - (local.get $10) - ) - (local.get $4) - ) - ) - (i32.store offset=4 - (local.get $10) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - (if - (i32.eq - (local.get $5) - (local.get $6) - ) - (block - (i32.store - (i32.const 1220) - (local.tee $0 - (i32.add - (local.get $8) - (i32.load - (i32.const 1220) - ) - ) - ) - ) - (i32.store - (i32.const 1232) - (local.get $7) - ) - (i32.store offset=4 - (local.get $7) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - ) - (block $do-once44 - (if - (i32.eq - (i32.load - (i32.const 1228) - ) - (local.get $5) - ) - (block - (i32.store - (i32.const 1216) - (local.tee $0 - (i32.add - (local.get $8) - (i32.load - (i32.const 1216) - ) - ) - ) - ) - (i32.store - (i32.const 1228) - (local.get $7) - ) - (i32.store offset=4 - (local.get $7) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $7) - ) - (local.get $0) - ) - (br $do-once44) - ) - ) - (local.set $4 - (if (result i32) - (i32.eq - (i32.and - (local.tee $0 - (i32.load offset=4 - (local.get $5) - ) - ) - (i32.const 3) - ) - (i32.const 1) - ) - (block (result i32) - (local.set $12 - (i32.and - (local.get $0) - (i32.const -8) - ) - ) - (local.set $3 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (block $label$break$e - (if - (i32.lt_u - (local.get $0) - (i32.const 256) - ) - (block - (local.set $1 - (i32.load offset=12 - (local.get $5) - ) - ) - (if - (i32.ne - (local.tee $4 - (i32.load offset=8 - (local.get $5) - ) - ) - (local.tee $0 - (i32.add - (i32.shl - (local.get $3) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - ) - (block $do-once47 - (if - (i32.lt_u - (local.get $4) - (local.get $2) - ) - (call $qa) - ) - (br_if $do-once47 - (i32.eq - (local.get $5) - (i32.load offset=12 - (local.get $4) - ) - ) - ) - (call $qa) - ) - ) - (if - (i32.eq - (local.get $1) - (local.get $4) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (i32.load - (i32.const 1208) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $3) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$e) - ) - ) - (if - (i32.eq - (local.get $0) - (local.get $1) - ) - (local.set $32 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (block $do-once49 - (if - (i32.lt_u - (local.get $1) - (local.get $2) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $5) - (i32.load - (local.tee $0 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - ) - (block - (local.set $32 - (local.get $0) - ) - (br $do-once49) - ) - ) - (call $qa) - ) - ) - (i32.store offset=12 - (local.get $4) - (local.get $1) - ) - (i32.store - (local.get $32) - (local.get $4) - ) - ) - (block - (local.set $6 - (i32.load offset=24 - (local.get $5) - ) - ) - (if - (i32.eq - (local.get $5) - (local.tee $0 - (i32.load offset=12 - (local.get $5) - ) - ) - ) - (block $do-once51 - (if - (local.tee $0 - (i32.load - (local.tee $4 - (i32.add - (local.tee $1 - (i32.add - (local.get $5) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - (local.set $1 - (local.get $4) - ) - (br_if $do-once51 - (i32.eqz - (local.tee $0 - (i32.load - (local.get $1) - ) - ) - ) - ) - ) - (loop $while-in54 - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in54) - ) - ) - (if - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in54) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (local.get $2) - ) - (call $qa) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $17 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $5) - ) - ) - (local.get $2) - ) - (call $qa) - ) - (if - (i32.ne - (local.get $5) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $5) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $17 - (local.get $0) - ) - ) - (call $qa) - ) - ) - ) - (br_if $label$break$e - (i32.eqz - (local.get $6) - ) - ) - (if - (i32.eq - (i32.load - (local.tee $1 - (i32.add - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $5) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - (local.get $5) - ) - (block $do-once55 - (i32.store - (local.get $1) - (local.get $17) - ) - (br_if $do-once55 - (local.get $17) - ) - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$e) - ) - (block - (if - (i32.lt_u - (local.get $6) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $5) - (i32.load offset=16 - (local.get $6) - ) - ) - (i32.store offset=16 - (local.get $6) - (local.get $17) - ) - (i32.store offset=20 - (local.get $6) - (local.get $17) - ) - ) - (br_if $label$break$e - (i32.eqz - (local.get $17) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $17) - (local.tee $1 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (i32.store offset=24 - (local.get $17) - (local.get $6) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $5) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $qa) - (block - (i32.store offset=16 - (local.get $17) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $17) - ) - ) - ) - ) - (br_if $label$break$e - (i32.eqz - (local.tee $0 - (i32.load offset=20 - (local.get $5) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store offset=20 - (local.get $17) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $17) - ) - ) - ) - ) - ) - ) - (local.set $5 - (i32.add - (local.get $5) - (local.get $12) - ) - ) - (i32.add - (local.get $8) - (local.get $12) - ) - ) - (local.get $8) - ) - ) - (i32.store offset=4 - (local.get $5) - (i32.and - (i32.load offset=4 - (local.get $5) - ) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $7) - (i32.or - (local.get $4) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $4) - (local.get $7) - ) - (local.get $4) - ) - (local.set $1 - (i32.shr_u - (local.get $4) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $4) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 1208) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (block $do-once59 - (if - (i32.ge_u - (local.tee $4 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 1224) - ) - ) - (block - (local.set $33 - (local.get $1) - ) - (local.set $27 - (local.get $4) - ) - (br $do-once59) - ) - ) - (call $qa) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $1) - (local.get $4) - ) - ) - (local.set $33 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $27 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $33) - (local.get $7) - ) - (i32.store offset=12 - (local.get $27) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $27) - ) - (i32.store offset=12 - (local.get $7) - (local.get $0) - ) - (br $do-once44) - ) - ) - (local.set $1 - (i32.add - (i32.shl - (local.tee $0 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $4) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $4) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $4) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $2 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $3) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $3) - (local.get $2) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - (i32.store offset=28 - (local.get $7) - (local.get $0) - ) - (i32.store offset=20 - (local.get $7) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $7) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $3 - (i32.load - (i32.const 1212) - ) - ) - (local.tee $2 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $2) - (local.get $3) - ) - ) - (i32.store - (local.get $1) - (local.get $7) - ) - (i32.store offset=24 - (local.get $7) - (local.get $1) - ) - (i32.store offset=12 - (local.get $7) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $7) - ) - (br $do-once44) - ) - ) - (local.set $14 - (i32.shl - (local.get $4) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $0) - (i32.const 1) - ) - ) - (i32.eq - (local.get $0) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load - (local.get $1) - ) - ) - (if - (i32.eq - (local.tee $9 - (loop $while-in64 (result i32) - (block $while-out63 (result i32) - (if - (i32.eq - (local.get $4) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $34 - (local.get $0) - ) - (br $while-out63 - (i32.const 279) - ) - ) - ) - (if (result i32) - (local.tee $1 - (i32.load - (local.tee $3 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $14) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $14 - (i32.shl - (local.get $14) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $1) - ) - (br $while-in64) - ) - (block (result i32) - (local.set $35 - (local.get $3) - ) - (local.set $46 - (local.get $0) - ) - (i32.const 276) - ) - ) - ) - ) - ) - (i32.const 276) - ) - (if - (i32.lt_u - (local.get $35) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $35) - (local.get $7) - ) - (i32.store offset=24 - (local.get $7) - (local.get $46) - ) - (i32.store offset=12 - (local.get $7) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $7) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 279) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $34) - ) - ) - ) - (local.tee $4 - (i32.load - (i32.const 1224) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $4) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $7) - ) - (i32.store offset=8 - (local.get $0) - (local.get $7) - ) - (i32.store offset=8 - (local.get $7) - (local.get $1) - ) - (i32.store offset=12 - (local.get $7) - (local.get $34) - ) - (i32.store offset=24 - (local.get $7) - (i32.const 0) - ) - ) - (call $qa) - ) - ) - ) - ) - ) - (global.set $r - (local.get $18) - ) - (return - (i32.add - (local.get $10) - (i32.const 8) - ) - ) - ) - ) - ) - ) - (loop $while-in66 - (block $while-out65 - (if - (i32.le_u - (local.tee $0 - (i32.load - (local.get $23) - ) - ) - (local.get $6) - ) - (br_if $while-out65 - (i32.gt_u - (local.tee $0 - (i32.add - (i32.load offset=4 - (local.get $23) - ) - (local.get $0) - ) - ) - (local.get $6) - ) - ) - ) - (local.set $23 - (i32.load offset=8 - (local.get $23) - ) - ) - (br $while-in66) - ) - ) - (i32.store - (i32.const 1232) - (local.tee $1 - (i32.add - (local.get $3) - (local.tee $2 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $1 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $1) - (i32.const 7) - ) - ) - ) - ) - ) - ) - (i32.store - (i32.const 1220) - (local.tee $2 - (i32.sub - (i32.add - (local.get $7) - (i32.const -40) - ) - (local.get $2) - ) - ) - ) - (i32.store offset=4 - (local.get $1) - (i32.or - (local.get $2) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $1) - (local.get $2) - ) - (i32.const 40) - ) - (i32.store - (i32.const 1236) - (i32.load - (i32.const 1696) - ) - ) - (i32.store offset=4 - (local.tee $2 - (select - (local.get $6) - (local.tee $1 - (i32.add - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $2 - (i32.add - (local.tee $1 - (i32.add - (local.get $0) - (i32.const -47) - ) - ) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $2) - (i32.const 7) - ) - ) - (local.get $1) - ) - ) - (i32.lt_u - (local.get $1) - (local.tee $8 - (i32.add - (local.get $6) - (i32.const 16) - ) - ) - ) - ) - ) - (i32.const 27) - ) - (i32.store offset=8 - (local.get $2) - (i32.load - (i32.const 1656) - ) - ) - (i32.store offset=12 - (local.get $2) - (i32.load - (i32.const 1660) - ) - ) - (i32.store offset=16 - (local.get $2) - (i32.load - (i32.const 1664) - ) - ) - (i32.store offset=20 - (local.get $2) - (i32.load - (i32.const 1668) - ) - ) - (i32.store - (i32.const 1656) - (local.get $3) - ) - (i32.store - (i32.const 1660) - (local.get $7) - ) - (i32.store - (i32.const 1668) - (i32.const 0) - ) - (i32.store - (i32.const 1664) - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - (local.set $1 - (i32.add - (local.get $2) - (i32.const 24) - ) - ) - (loop $do-in68 - (i32.store - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (i32.const 7) - ) - (br_if $do-in68 - (i32.lt_u - (i32.add - (local.get $1) - (i32.const 4) - ) - (local.get $0) - ) - ) - ) - (if - (i32.ne - (local.get $2) - (local.get $6) - ) - (block - (i32.store offset=4 - (local.get $2) - (i32.and - (i32.load offset=4 - (local.get $2) - ) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $6) - (i32.or - (local.tee $5 - (i32.sub - (local.get $2) - (local.get $6) - ) - ) - (i32.const 1) - ) - ) - (i32.store - (local.get $2) - (local.get $5) - ) - (local.set $1 - (i32.shr_u - (local.get $5) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $5) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - (if - (i32.and - (local.tee $3 - (i32.load - (i32.const 1208) - ) - ) - (local.tee $1 - (i32.shl - (i32.const 1) - (local.get $1) - ) - ) - ) - (if - (i32.lt_u - (local.tee $3 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $36 - (local.get $1) - ) - (local.set $28 - (local.get $3) - ) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $1) - (local.get $3) - ) - ) - (local.set $36 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $28 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $36) - (local.get $6) - ) - (i32.store offset=12 - (local.get $28) - (local.get $6) - ) - (i32.store offset=8 - (local.get $6) - (local.get $28) - ) - (i32.store offset=12 - (local.get $6) - (local.get $0) - ) - (br $do-once38) - ) - ) - (local.set $3 - (i32.add - (i32.shl - (local.tee $0 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $5) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $5) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $0) - (local.tee $1 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $5) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $2 - (i32.and - (i32.shr_u - (i32.add - (local.tee $3 - (i32.shl - (local.get $3) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $1) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $3) - (local.get $2) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - (i32.store offset=28 - (local.get $6) - (local.get $0) - ) - (i32.store offset=20 - (local.get $6) - (i32.const 0) - ) - (i32.store - (local.get $8) - (i32.const 0) - ) - (if - (i32.eqz - (i32.and - (local.tee $1 - (i32.load - (i32.const 1212) - ) - ) - (local.tee $2 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $1) - (local.get $2) - ) - ) - (i32.store - (local.get $3) - (local.get $6) - ) - (i32.store offset=24 - (local.get $6) - (local.get $3) - ) - (i32.store offset=12 - (local.get $6) - (local.get $6) - ) - (i32.store offset=8 - (local.get $6) - (local.get $6) - ) - (br $do-once38) - ) - ) - (local.set $1 - (i32.shl - (local.get $5) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $0) - (i32.const 1) - ) - ) - (i32.eq - (local.get $0) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load - (local.get $3) - ) - ) - (if - (i32.eq - (local.tee $9 - (loop $while-in70 (result i32) - (block $while-out69 (result i32) - (if - (i32.eq - (local.get $5) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $37 - (local.get $0) - ) - (br $while-out69 - (i32.const 305) - ) - ) - ) - (if (result i32) - (local.tee $3 - (i32.load - (local.tee $2 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $1) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $1 - (i32.shl - (local.get $1) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $3) - ) - (br $while-in70) - ) - (block (result i32) - (local.set $38 - (local.get $2) - ) - (local.set $47 - (local.get $0) - ) - (i32.const 302) - ) - ) - ) - ) - ) - (i32.const 302) - ) - (if - (i32.lt_u - (local.get $38) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $38) - (local.get $6) - ) - (i32.store offset=24 - (local.get $6) - (local.get $47) - ) - (i32.store offset=12 - (local.get $6) - (local.get $6) - ) - (i32.store offset=8 - (local.get $6) - (local.get $6) - ) - ) - ) - (if - (i32.eq - (local.get $9) - (i32.const 305) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $37) - ) - ) - ) - (local.tee $3 - (i32.load - (i32.const 1224) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $3) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $6) - ) - (i32.store offset=8 - (local.get $0) - (local.get $6) - ) - (i32.store offset=8 - (local.get $6) - (local.get $1) - ) - (i32.store offset=12 - (local.get $6) - (local.get $37) - ) - (i32.store offset=24 - (local.get $6) - (i32.const 0) - ) - ) - (call $qa) - ) - ) - ) - ) - ) - ) - (block - (if - (i32.or - (i32.eqz - (local.tee $0 - (i32.load - (i32.const 1224) - ) - ) - ) - (i32.lt_u - (local.get $3) - (local.get $0) - ) - ) - (i32.store - (i32.const 1224) - (local.get $3) - ) - ) - (i32.store - (i32.const 1656) - (local.get $3) - ) - (i32.store - (i32.const 1660) - (local.get $7) - ) - (i32.store - (i32.const 1668) - (i32.const 0) - ) - (i32.store - (i32.const 1244) - (i32.load - (i32.const 1680) - ) - ) - (i32.store - (i32.const 1240) - (i32.const -1) - ) - (local.set $1 - (i32.const 0) - ) - (loop $do-in - (i32.store offset=12 - (local.tee $0 - (i32.add - (i32.shl - (local.get $1) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $0) - ) - (br_if $do-in - (i32.ne - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.const 32) - ) - ) - ) - (i32.store - (i32.const 1232) - (local.tee $0 - (i32.add - (local.get $3) - (local.tee $1 - (select - (i32.and - (i32.sub - (i32.const 0) - (local.tee $0 - (i32.add - (local.get $3) - (i32.const 8) - ) - ) - ) - (i32.const 7) - ) - (i32.const 0) - (i32.and - (local.get $0) - (i32.const 7) - ) - ) - ) - ) - ) - ) - (i32.store - (i32.const 1220) - (local.tee $1 - (i32.sub - (i32.add - (local.get $7) - (i32.const -40) - ) - (local.get $1) - ) - ) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (i32.add - (local.get $0) - (local.get $1) - ) - (i32.const 40) - ) - (i32.store - (i32.const 1236) - (i32.load - (i32.const 1696) - ) - ) - ) - ) - (br_if $folding-inner0 - (i32.gt_u - (local.tee $0 - (i32.load - (i32.const 1220) - ) - ) - (local.get $4) - ) - ) - ) - ) - (i32.store - (call $Qa) - (i32.const 12) - ) - (global.set $r - (local.get $18) - ) - (return - (i32.const 0) - ) - ) - (i32.store - (i32.const 1220) - (local.tee $1 - (i32.sub - (local.get $0) - (local.get $4) - ) - ) - ) - (i32.store - (i32.const 1232) - (local.tee $3 - (i32.add - (local.get $4) - (local.tee $0 - (i32.load - (i32.const 1232) - ) - ) - ) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $4) - (i32.const 3) - ) - ) - ) - (global.set $r - (local.get $18) - ) - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (func $fb (; 14 ;) (; has Stack IR ;) (param $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (if - (i32.eqz - (local.get $0) - ) - (return) - ) - (if - (i32.lt_u - (local.tee $3 - (i32.add - (local.get $0) - (i32.const -8) - ) - ) - (local.tee $13 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.tee $9 - (i32.and - (local.tee $0 - (i32.load - (i32.add - (local.get $0) - (i32.const -4) - ) - ) - ) - (i32.const 3) - ) - ) - (i32.const 1) - ) - (call $qa) - ) - (local.set $6 - (i32.add - (local.get $3) - (local.tee $4 - (i32.and - (local.get $0) - (i32.const -8) - ) - ) - ) - ) - (if - (i32.and - (local.get $0) - (i32.const 1) - ) - (block - (local.set $2 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - ) - (block $do-once - (if - (i32.eqz - (local.get $9) - ) - (return) - ) - (if - (i32.lt_u - (local.tee $0 - (i32.sub - (local.get $3) - (local.tee $9 - (i32.load - (local.get $3) - ) - ) - ) - ) - (local.get $13) - ) - (call $qa) - ) - (local.set $3 - (i32.add - (local.get $4) - (local.get $9) - ) - ) - (if - (i32.eq - (i32.load - (i32.const 1228) - ) - (local.get $0) - ) - (block - (if - (i32.ne - (i32.and - (local.tee $1 - (i32.load offset=4 - (local.get $6) - ) - ) - (i32.const 3) - ) - (i32.const 3) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - (i32.store - (i32.const 1216) - (local.get $3) - ) - (i32.store offset=4 - (local.get $6) - (i32.and - (local.get $1) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $0) - (i32.or - (local.get $3) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $3) - ) - (local.get $3) - ) - (return) - ) - ) - (local.set $11 - (i32.shr_u - (local.get $9) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $9) - (i32.const 256) - ) - (block - (local.set $2 - (i32.load offset=12 - (local.get $0) - ) - ) - (if - (i32.ne - (local.tee $4 - (i32.load offset=8 - (local.get $0) - ) - ) - (local.tee $1 - (i32.add - (i32.shl - (local.get $11) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $4) - (local.get $13) - ) - (call $qa) - ) - (if - (i32.ne - (local.get $0) - (i32.load offset=12 - (local.get $4) - ) - ) - (call $qa) - ) - ) - ) - (if - (i32.eq - (local.get $2) - (local.get $4) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (i32.load - (i32.const 1208) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $11) - ) - (i32.const -1) - ) - ) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - (if - (i32.eq - (local.get $1) - (local.get $2) - ) - (local.set $5 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $2) - (local.get $13) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $0) - (i32.load - (local.tee $1 - (i32.add - (local.get $2) - (i32.const 8) - ) - ) - ) - ) - (local.set $5 - (local.get $1) - ) - (call $qa) - ) - ) - ) - (i32.store offset=12 - (local.get $4) - (local.get $2) - ) - (i32.store - (local.get $5) - (local.get $4) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - (local.set $12 - (i32.load offset=24 - (local.get $0) - ) - ) - (if - (i32.eq - (local.get $0) - (local.tee $4 - (i32.load offset=12 - (local.get $0) - ) - ) - ) - (block $do-once0 - (if - (local.tee $4 - (i32.load - (local.tee $9 - (i32.add - (local.tee $5 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - (local.set $5 - (local.get $9) - ) - (br_if $do-once0 - (i32.eqz - (local.tee $4 - (i32.load - (local.get $5) - ) - ) - ) - ) - ) - (loop $while-in - (if - (local.tee $11 - (i32.load - (local.tee $9 - (i32.add - (local.get $4) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $11) - ) - (local.set $5 - (local.get $9) - ) - (br $while-in) - ) - ) - (if - (local.tee $11 - (i32.load - (local.tee $9 - (i32.add - (local.get $4) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $4 - (local.get $11) - ) - (local.set $5 - (local.get $9) - ) - (br $while-in) - ) - ) - ) - (if - (i32.lt_u - (local.get $5) - (local.get $13) - ) - (call $qa) - (block - (i32.store - (local.get $5) - (i32.const 0) - ) - (local.set $7 - (local.get $4) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $5 - (i32.load offset=8 - (local.get $0) - ) - ) - (local.get $13) - ) - (call $qa) - ) - (if - (i32.ne - (local.get $0) - (i32.load offset=12 - (local.get $5) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $0) - (i32.load offset=8 - (local.get $4) - ) - ) - (block - (i32.store offset=12 - (local.get $5) - (local.get $4) - ) - (i32.store offset=8 - (local.get $4) - (local.get $5) - ) - (local.set $7 - (local.get $4) - ) - ) - (call $qa) - ) - ) - ) - (if - (local.get $12) - (block - (if - (i32.eq - (i32.load - (local.tee $5 - (i32.add - (i32.shl - (local.tee $4 - (i32.load offset=28 - (local.get $0) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - (local.get $0) - ) - (block - (i32.store - (local.get $5) - (local.get $7) - ) - (if - (i32.eqz - (local.get $7) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $12) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $0) - (i32.load offset=16 - (local.get $12) - ) - ) - (i32.store offset=16 - (local.get $12) - (local.get $7) - ) - (i32.store offset=20 - (local.get $12) - (local.get $7) - ) - ) - (if - (i32.eqz - (local.get $7) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (br $do-once) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $7) - (local.tee $5 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (i32.store offset=24 - (local.get $7) - (local.get $12) - ) - (if - (local.tee $4 - (i32.load offset=16 - (local.get $0) - ) - ) - (if - (i32.lt_u - (local.get $4) - (local.get $5) - ) - (call $qa) - (block - (i32.store offset=16 - (local.get $7) - (local.get $4) - ) - (i32.store offset=24 - (local.get $4) - (local.get $7) - ) - ) - ) - ) - (if - (local.tee $4 - (i32.load offset=20 - (local.get $0) - ) - ) - (if - (i32.lt_u - (local.get $4) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store offset=20 - (local.get $7) - (local.get $4) - ) - (i32.store offset=24 - (local.get $4) - (local.get $7) - ) - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - ) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - ) - ) - ) - (block - (local.set $2 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - ) - ) - ) - ) - (if - (i32.ge_u - (local.get $2) - (local.get $6) - ) - (call $qa) - ) - (if - (i32.eqz - (i32.and - (local.tee $0 - (i32.load offset=4 - (local.get $6) - ) - ) - (i32.const 1) - ) - ) - (call $qa) - ) - (if - (i32.and - (local.get $0) - (i32.const 2) - ) - (block - (i32.store offset=4 - (local.get $6) - (i32.and - (local.get $0) - (i32.const -2) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $1) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $1) - (local.get $2) - ) - (local.get $1) - ) - ) - (block - (if - (i32.eq - (i32.load - (i32.const 1232) - ) - (local.get $6) - ) - (block - (i32.store - (i32.const 1220) - (local.tee $0 - (i32.add - (local.get $1) - (i32.load - (i32.const 1220) - ) - ) - ) - ) - (i32.store - (i32.const 1232) - (local.get $2) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (if - (i32.ne - (i32.load - (i32.const 1228) - ) - (local.get $2) - ) - (return) - ) - (i32.store - (i32.const 1228) - (i32.const 0) - ) - (i32.store - (i32.const 1216) - (i32.const 0) - ) - (return) - ) - ) - (if - (i32.eq - (i32.load - (i32.const 1228) - ) - (local.get $6) - ) - (block - (i32.store - (i32.const 1216) - (local.tee $0 - (i32.add - (local.get $1) - (i32.load - (i32.const 1216) - ) - ) - ) - ) - (i32.store - (i32.const 1228) - (local.get $2) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $0) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $0) - (local.get $2) - ) - (local.get $0) - ) - (return) - ) - ) - (local.set $5 - (i32.add - (local.get $1) - (i32.and - (local.get $0) - (i32.const -8) - ) - ) - ) - (local.set $4 - (i32.shr_u - (local.get $0) - (i32.const 3) - ) - ) - (block $do-once4 - (if - (i32.lt_u - (local.get $0) - (i32.const 256) - ) - (block - (local.set $1 - (i32.load offset=12 - (local.get $6) - ) - ) - (if - (i32.ne - (local.tee $3 - (i32.load offset=8 - (local.get $6) - ) - ) - (local.tee $0 - (i32.add - (i32.shl - (local.get $4) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $3) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.ne - (local.get $6) - (i32.load offset=12 - (local.get $3) - ) - ) - (call $qa) - ) - ) - ) - (if - (i32.eq - (local.get $1) - (local.get $3) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (i32.load - (i32.const 1208) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - (if - (i32.eq - (local.get $0) - (local.get $1) - ) - (local.set $14 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $1) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $6) - (i32.load - (local.tee $0 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - ) - ) - (local.set $14 - (local.get $0) - ) - (call $qa) - ) - ) - ) - (i32.store offset=12 - (local.get $3) - (local.get $1) - ) - (i32.store - (local.get $14) - (local.get $3) - ) - ) - (block - (local.set $7 - (i32.load offset=24 - (local.get $6) - ) - ) - (if - (i32.eq - (local.get $6) - (local.tee $0 - (i32.load offset=12 - (local.get $6) - ) - ) - ) - (block $do-once6 - (if - (local.tee $0 - (i32.load - (local.tee $3 - (i32.add - (local.tee $1 - (i32.add - (local.get $6) - (i32.const 16) - ) - ) - (i32.const 4) - ) - ) - ) - ) - (local.set $1 - (local.get $3) - ) - (br_if $do-once6 - (i32.eqz - (local.tee $0 - (i32.load - (local.get $1) - ) - ) - ) - ) - ) - (loop $while-in9 - (if - (local.tee $4 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $4) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in9) - ) - ) - (if - (local.tee $4 - (i32.load - (local.tee $3 - (i32.add - (local.get $0) - (i32.const 16) - ) - ) - ) - ) - (block - (local.set $0 - (local.get $4) - ) - (local.set $1 - (local.get $3) - ) - (br $while-in9) - ) - ) - ) - (if - (i32.lt_u - (local.get $1) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $1) - (i32.const 0) - ) - (local.set $8 - (local.get $0) - ) - ) - ) - ) - (block - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=8 - (local.get $6) - ) - ) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.ne - (local.get $6) - (i32.load offset=12 - (local.get $1) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $6) - (i32.load offset=8 - (local.get $0) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $0) - ) - (i32.store offset=8 - (local.get $0) - (local.get $1) - ) - (local.set $8 - (local.get $0) - ) - ) - (call $qa) - ) - ) - ) - (if - (local.get $7) - (block - (if - (i32.eq - (i32.load - (local.tee $1 - (i32.add - (i32.shl - (local.tee $0 - (i32.load offset=28 - (local.get $6) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - ) - (local.get $6) - ) - (block - (i32.store - (local.get $1) - (local.get $8) - ) - (if - (i32.eqz - (local.get $8) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $0) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $7) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $6) - (i32.load offset=16 - (local.get $7) - ) - ) - (i32.store offset=16 - (local.get $7) - (local.get $8) - ) - (i32.store offset=20 - (local.get $7) - (local.get $8) - ) - ) - (br_if $do-once4 - (i32.eqz - (local.get $8) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $8) - (local.tee $1 - (i32.load - (i32.const 1224) - ) - ) - ) - (call $qa) - ) - (i32.store offset=24 - (local.get $8) - (local.get $7) - ) - (if - (local.tee $0 - (i32.load offset=16 - (local.get $6) - ) - ) - (if - (i32.lt_u - (local.get $0) - (local.get $1) - ) - (call $qa) - (block - (i32.store offset=16 - (local.get $8) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $8) - ) - ) - ) - ) - (if - (local.tee $0 - (i32.load offset=20 - (local.get $6) - ) - ) - (if - (i32.lt_u - (local.get $0) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store offset=20 - (local.get $8) - (local.get $0) - ) - (i32.store offset=24 - (local.get $0) - (local.get $8) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (i32.store offset=4 - (local.get $2) - (i32.or - (local.get $5) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $2) - (local.get $5) - ) - (local.get $5) - ) - (local.set $1 - (if (result i32) - (i32.eq - (i32.load - (i32.const 1228) - ) - (local.get $2) - ) - (block - (i32.store - (i32.const 1216) - (local.get $5) - ) - (return) - ) - (local.get $5) - ) - ) - ) - ) - (local.set $3 - (i32.shr_u - (local.get $1) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $1) - (i32.const 256) - ) - (block - (local.set $0 - (i32.add - (i32.shl - (local.get $3) - (i32.const 3) - ) - (i32.const 1248) - ) - ) - (if - (i32.and - (local.tee $1 - (i32.load - (i32.const 1208) - ) - ) - (local.tee $3 - (i32.shl - (i32.const 1) - (local.get $3) - ) - ) - ) - (if - (i32.lt_u - (local.tee $3 - (i32.load - (local.tee $1 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - ) - ) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $15 - (local.get $1) - ) - (local.set $10 - (local.get $3) - ) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $1) - (local.get $3) - ) - ) - (local.set $15 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (local.set $10 - (local.get $0) - ) - ) - ) - (i32.store - (local.get $15) - (local.get $2) - ) - (i32.store offset=12 - (local.get $10) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $10) - ) - (i32.store offset=12 - (local.get $2) - (local.get $0) - ) - (return) - ) - ) - (local.set $3 - (i32.add - (i32.shl - (local.tee $0 - (if (result i32) - (local.tee $0 - (i32.shr_u - (local.get $1) - (i32.const 8) - ) - ) - (if (result i32) - (i32.gt_u - (local.get $1) - (i32.const 16777215) - ) - (i32.const 31) - (block (result i32) - (local.set $0 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $0) - (local.tee $3 - (i32.and - (i32.shr_u - (i32.add - (local.get $0) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - ) - ) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (i32.or - (i32.and - (i32.shr_u - (local.get $1) - (i32.add - (local.tee $0 - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (local.tee $5 - (i32.and - (i32.shr_u - (i32.add - (local.tee $4 - (i32.shl - (local.get $4) - (local.get $0) - ) - ) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (i32.or - (local.get $0) - (local.get $3) - ) - ) - ) - (i32.shr_u - (i32.shl - (local.get $4) - (local.get $5) - ) - (i32.const 15) - ) - ) - ) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (i32.const 2) - ) - (i32.const 1512) - ) - ) - (i32.store offset=28 - (local.get $2) - (local.get $0) - ) - (i32.store offset=20 - (local.get $2) - (i32.const 0) - ) - (i32.store offset=16 - (local.get $2) - (i32.const 0) - ) - (if - (i32.and - (local.tee $4 - (i32.load - (i32.const 1212) - ) - ) - (local.tee $5 - (i32.shl - (i32.const 1) - (local.get $0) - ) - ) - ) - (block - (local.set $10 - (i32.shl - (local.get $1) - (select - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $0) - (i32.const 1) - ) - ) - (i32.eq - (local.get $0) - (i32.const 31) - ) - ) - ) - ) - (local.set $0 - (i32.load - (local.get $3) - ) - ) - (if - (i32.eq - (local.tee $0 - (loop $while-in15 (result i32) - (block $while-out14 (result i32) - (if - (i32.eq - (local.get $1) - (i32.and - (i32.load offset=4 - (local.get $0) - ) - (i32.const -8) - ) - ) - (block - (local.set $16 - (local.get $0) - ) - (br $while-out14 - (i32.const 130) - ) - ) - ) - (if (result i32) - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (i32.add - (local.get $0) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $10) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (block - (local.set $10 - (i32.shl - (local.get $10) - (i32.const 1) - ) - ) - (local.set $0 - (local.get $3) - ) - (br $while-in15) - ) - (block (result i32) - (local.set $17 - (local.get $4) - ) - (local.set $18 - (local.get $0) - ) - (i32.const 127) - ) - ) - ) - ) - ) - (i32.const 127) - ) - (if - (i32.lt_u - (local.get $17) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $17) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $18) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - ) - ) - (if - (i32.eq - (local.get $0) - (i32.const 130) - ) - (if - (i32.and - (i32.ge_u - (local.tee $1 - (i32.load offset=8 - (local.tee $0 - (local.get $16) - ) - ) - ) - (local.tee $3 - (i32.load - (i32.const 1224) - ) - ) - ) - (i32.ge_u - (local.get $0) - (local.get $3) - ) - ) - (block - (i32.store offset=12 - (local.get $1) - (local.get $2) - ) - (i32.store offset=8 - (local.get $0) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $1) - ) - (i32.store offset=12 - (local.get $2) - (local.get $16) - ) - (i32.store offset=24 - (local.get $2) - (i32.const 0) - ) - ) - (call $qa) - ) - ) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $4) - (local.get $5) - ) - ) - (i32.store - (local.get $3) - (local.get $2) - ) - (i32.store offset=24 - (local.get $2) - (local.get $3) - ) - (i32.store offset=12 - (local.get $2) - (local.get $2) - ) - (i32.store offset=8 - (local.get $2) - (local.get $2) - ) - ) - ) - (i32.store - (i32.const 1240) - (local.tee $0 - (i32.add - (i32.load - (i32.const 1240) - ) - (i32.const -1) - ) - ) - ) - (local.set $0 - (if (result i32) - (local.get $0) - (return) - (i32.const 1664) - ) - ) - (loop $while-in17 - (if - (local.tee $0 - (i32.load - (local.get $0) - ) - ) - (block - (local.set $0 - (i32.add - (local.get $0) - (i32.const 8) - ) - ) - (br $while-in17) - ) - ) - ) - (i32.store - (i32.const 1240) - (i32.const -1) - ) - ) - (func $Ra (; 15 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local.set $9 - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 48) - ) - ) - (local.set $7 - (i32.add - (local.get $9) - (i32.const 16) - ) - ) - (i32.store - (local.tee $4 - (i32.add - (local.tee $8 - (local.get $9) - ) - (i32.const 32) - ) - ) - (local.tee $3 - (i32.load offset=28 - (local.get $0) - ) - ) - ) - (i32.store offset=4 - (local.get $4) - (local.tee $3 - (i32.sub - (i32.load offset=20 - (local.get $0) - ) - (local.get $3) - ) - ) - ) - (i32.store offset=8 - (local.get $4) - (local.get $1) - ) - (i32.store offset=12 - (local.get $4) - (local.get $2) - ) - (local.set $1 - (local.get $4) - ) - (local.set $4 - (i32.const 2) - ) - (local.set $10 - (i32.add - (local.get $2) - (local.get $3) - ) - ) - (loop $while-in - (block $while-out - (if - (i32.load - (i32.const 1160) - ) - (block - (call $ra - (i32.const 1) - (local.get $0) - ) - (i32.store - (local.get $8) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $8) - (local.get $1) - ) - (i32.store offset=8 - (local.get $8) - (local.get $4) - ) - (local.set $3 - (call $Pa - (call $ya - (i32.const 146) - (local.get $8) - ) - ) - ) - (call $oa - (i32.const 0) - ) - ) - (block - (i32.store - (local.get $7) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $7) - (local.get $1) - ) - (i32.store offset=8 - (local.get $7) - (local.get $4) - ) - (local.set $3 - (call $Pa - (call $ya - (i32.const 146) - (local.get $7) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $3) - (local.get $10) - ) - (block - (local.set $1 - (i32.const 6) - ) - (br $while-out) - ) - ) - (if - (i32.lt_s - (local.get $3) - (i32.const 0) - ) - (block - (local.set $11 - (local.get $1) - ) - (local.set $12 - (local.get $4) - ) - (local.set $1 - (i32.const 8) - ) - ) - (block - (local.set $5 - (if (result i32) - (i32.gt_u - (local.get $3) - (local.tee $5 - (i32.load offset=4 - (local.get $1) - ) - ) - ) - (block (result i32) - (i32.store offset=28 - (local.get $0) - (local.tee $6 - (i32.load offset=44 - (local.get $0) - ) - ) - ) - (i32.store offset=20 - (local.get $0) - (local.get $6) - ) - (local.set $6 - (i32.load offset=12 - (local.get $1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (local.set $4 - (i32.add - (local.get $4) - (i32.const -1) - ) - ) - (i32.sub - (local.get $3) - (local.get $5) - ) - ) - (block (result i32) - (if - (i32.eq - (local.get $4) - (i32.const 2) - ) - (block - (i32.store offset=28 - (local.get $0) - (i32.add - (local.get $3) - (i32.load offset=28 - (local.get $0) - ) - ) - ) - (local.set $6 - (local.get $5) - ) - (local.set $4 - (i32.const 2) - ) - ) - (local.set $6 - (local.get $5) - ) - ) - (local.get $3) - ) - ) - ) - (i32.store - (local.get $1) - (i32.add - (local.get $5) - (i32.load - (local.get $1) - ) - ) - ) - (i32.store offset=4 - (local.get $1) - (i32.sub - (local.get $6) - (local.get $5) - ) - ) - (local.set $10 - (i32.sub - (local.get $10) - (local.get $3) - ) - ) - (br $while-in) - ) - ) - ) - ) - (global.set $r - (local.get $9) - ) - (if (result i32) - (i32.eq - (local.get $1) - (i32.const 6) - ) - (block (result i32) - (i32.store offset=16 - (local.get $0) - (i32.add - (local.tee $1 - (i32.load offset=44 - (local.get $0) - ) - ) - (i32.load offset=48 - (local.get $0) - ) - ) - ) - (i32.store offset=28 - (local.get $0) - (local.get $1) - ) - (i32.store offset=20 - (local.get $0) - (local.get $1) - ) - (local.get $2) - ) - (if (result i32) - (i32.eq - (local.get $1) - (i32.const 8) - ) - (block (result i32) - (i32.store offset=16 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=20 - (local.get $0) - (i32.const 0) - ) - (i32.store - (local.get $0) - (i32.or - (i32.load - (local.get $0) - ) - (i32.const 32) - ) - ) - (select - (i32.const 0) - (i32.sub - (local.get $2) - (i32.load offset=4 - (local.get $11) - ) - ) - (i32.eq - (local.get $12) - (i32.const 2) - ) - ) - ) - (local.get $13) - ) - ) - ) - (func $Wa (; 16 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local.set $5 - (i32.const 1144) - ) - (local.set $3 - (if (result i32) - (local.tee $4 - (i32.load offset=16 - (local.get $1) - ) - ) - (block (result i32) - (local.set $6 - (i32.const 5) - ) - (local.get $4) - ) - (if (result i32) - (call $Xa - (local.get $1) - ) - (local.get $3) - (block (result i32) - (local.set $6 - (i32.const 5) - ) - (i32.load offset=16 - (local.get $1) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $6) - (i32.const 5) - ) - (block $label$break$a - (if - (i32.lt_u - (i32.sub - (local.get $3) - (local.tee $3 - (i32.load offset=20 - (local.get $1) - ) - ) - ) - (local.get $0) - ) - (block - (local.set $2 - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $1) - (i32.const 1144) - (local.get $0) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $1) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - (br $label$break$a) - ) - ) - (if - (i32.gt_s - (i32.load8_s offset=75 - (local.get $1) - ) - (i32.const -1) - ) - (block $label$break$b - (local.set $2 - (local.get $0) - ) - (loop $while-in - (if - (i32.eqz - (local.get $2) - ) - (block - (local.set $2 - (i32.const 0) - ) - (br $label$break$b) - ) - ) - (if - (i32.ne - (i32.load8_s - (i32.add - (local.tee $4 - (i32.add - (local.get $2) - (i32.const -1) - ) - ) - (i32.const 1144) - ) - ) - (i32.const 10) - ) - (block - (local.set $2 - (local.get $4) - ) - (br $while-in) - ) - ) - ) - (br_if $label$break$a - (i32.lt_u - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $1) - (i32.const 1144) - (local.get $2) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $1) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - (local.get $2) - ) - ) - (local.set $0 - (i32.sub - (local.get $0) - (local.get $2) - ) - ) - (local.set $5 - (i32.add - (local.get $2) - (i32.const 1144) - ) - ) - (local.set $3 - (i32.load offset=20 - (local.get $1) - ) - ) - ) - ) - (drop - (call $jb - (local.get $3) - (local.get $5) - (local.get $0) - ) - ) - (i32.store offset=20 - (local.get $1) - (i32.add - (local.get $0) - (i32.load offset=20 - (local.get $1) - ) - ) - ) - (local.set $2 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - ) - ) - (local.get $2) - ) - (func $Za (; 17 ;) (; has Stack IR ;) (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local.set $0 - (i32.const 1144) - ) - (block - (local.set $4 - (i32.const 1144) - ) - (local.set $1 - (i32.const 4) - ) - ) - (i32.sub - (if (result i32) - (i32.eq - (local.get $1) - (i32.const 4) - ) - (block (result i32) - (local.set $1 - (local.get $4) - ) - (local.set $0 - (loop $while-in1 (result i32) - (if (result i32) - (i32.and - (i32.add - (local.tee $2 - (i32.load - (local.get $1) - ) - ) - (i32.const -16843009) - ) - (i32.xor - (i32.and - (local.get $2) - (i32.const -2139062144) - ) - (i32.const -2139062144) - ) - ) - (local.get $1) - (block - (local.set $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (if - (i32.and - (local.get $2) - (i32.const 255) - ) - (loop $while-in3 - (br_if $while-in3 - (i32.load8_s - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.get $0) - ) - (local.get $2) - ) - (i32.const 1144) - ) - ) - (func $_a (; 18 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (if - (local.get $0) - (local.set $0 - (block $do-once (result i32) - (if - (i32.le_s - (i32.load offset=76 - (local.get $0) - ) - (i32.const -1) - ) - (br $do-once - (call $$a - (local.get $0) - ) - ) - ) - (call $$a - (local.get $0) - ) - ) - ) - (block - (local.set $0 - (if (result i32) - (i32.load - (i32.const 1140) - ) - (call $_a - (i32.load - (i32.const 1140) - ) - ) - (i32.const 0) - ) - ) - (call $pa - (i32.const 1188) - ) - (if - (local.tee $1 - (i32.load - (i32.const 1184) - ) - ) - (loop $while-in - (if - (i32.gt_u - (i32.load offset=20 - (local.get $1) - ) - (i32.load offset=28 - (local.get $1) - ) - ) - (local.set $0 - (i32.or - (call $$a - (local.get $1) - ) - (local.get $0) - ) - ) - ) - (br_if $while-in - (local.tee $1 - (i32.load offset=56 - (local.get $1) - ) - ) - ) - ) - ) - (call $xa - (i32.const 1188) - ) - ) - ) - (local.get $0) - ) - (func $ab (; 19 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local.set $3 - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 16) - ) - ) - (i32.store8 - (local.tee $4 - (local.get $3) - ) - (i32.const 10) - ) - (if - (local.tee $1 - (i32.load offset=16 - (local.get $0) - ) - ) - (block - (local.set $5 - (local.get $1) - ) - (local.set $6 - (i32.const 4) - ) - ) - (if - (call $Xa - (local.get $0) - ) - (local.set $2 - (i32.const -1) - ) - (block - (local.set $5 - (i32.load offset=16 - (local.get $0) - ) - ) - (local.set $6 - (i32.const 4) - ) - ) - ) - ) - (if - (i32.eq - (local.get $6) - (i32.const 4) - ) - (block $do-once - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=20 - (local.get $0) - ) - ) - (local.get $5) - ) - (if - (i32.ne - (local.tee $2 - (i32.const 10) - ) - (i32.load8_s offset=75 - (local.get $0) - ) - ) - (block - (i32.store offset=20 - (local.get $0) - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $1) - (i32.const 10) - ) - (br $do-once) - ) - ) - ) - (local.set $2 - (if (result i32) - (i32.eq - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (local.get $4) - (i32.const 1) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $0) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - (i32.const 1) - ) - (i32.load8_u - (local.get $4) - ) - (i32.const -1) - ) - ) - ) - ) - (global.set $r - (local.get $3) - ) - (local.get $2) - ) - (func $$a (; 20 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (if - (i32.gt_u - (i32.load offset=20 - (local.get $0) - ) - (i32.load offset=28 - (local.get $0) - ) - ) - (block - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $0) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - (if - (i32.load offset=20 - (local.get $0) - ) - (local.set $1 - (i32.const 3) - ) - (local.set $2 - (i32.const -1) - ) - ) - ) - (local.set $1 - (i32.const 3) - ) - ) - (if (result i32) - (i32.eq - (local.get $1) - (i32.const 3) - ) - (block (result i32) - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=4 - (local.get $0) - ) - ) - (local.tee $2 - (i32.load offset=8 - (local.get $0) - ) - ) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $0) - (i32.sub - (local.get $1) - (local.get $2) - ) - (i32.const 1) - (i32.add - (i32.and - (i32.load offset=40 - (local.get $0) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.store offset=16 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=20 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=8 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.const 0) - ) - (i32.const 0) - ) - (local.get $2) - ) - ) - (func $jb (; 21 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (if - (i32.ge_s - (local.get $2) - (i32.const 4096) - ) - (return - (call $va - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - ) - (local.set $3 - (local.get $0) - ) - (if - (i32.eq - (i32.and - (local.get $0) - (i32.const 3) - ) - (i32.and - (local.get $1) - (i32.const 3) - ) - ) - (block - (loop $while-in - (if - (i32.and - (local.get $0) - (i32.const 3) - ) - (block - (if - (i32.eqz - (local.get $2) - ) - (return - (local.get $3) - ) - ) - (i32.store8 - (local.get $0) - (i32.load8_s - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - (loop $while-in1 - (if - (i32.ge_s - (local.get $2) - (i32.const 4) - ) - (block - (i32.store - (local.get $0) - (i32.load - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 4) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 4) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - ) - (loop $while-in3 - (if - (i32.gt_s - (local.get $2) - (i32.const 0) - ) - (block - (i32.store8 - (local.get $0) - (i32.load8_s - (local.get $1) - ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (local.set $2 - (i32.sub - (local.get $2) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (local.get $3) - ) - (func $gb (; 22 ;) (; has Stack IR ;) - (nop) - ) - (func $hb (; 23 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local.set $4 - (i32.add - (local.get $0) - (local.get $2) - ) - ) - (if - (i32.ge_s - (local.get $2) - (i32.const 20) - ) - (block - (local.set $1 - (i32.and - (local.get $1) - (i32.const 255) - ) - ) - (if - (local.tee $3 - (i32.and - (local.get $0) - (i32.const 3) - ) - ) - (block - (local.set $3 - (i32.sub - (i32.add - (local.get $0) - (i32.const 4) - ) - (local.get $3) - ) - ) - (loop $while-in - (if - (i32.lt_s - (local.get $0) - (local.get $3) - ) - (block - (i32.store8 - (local.get $0) - (local.get $1) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (br $while-in) - ) - ) - ) - ) - ) - (local.set $3 - (i32.or - (i32.or - (i32.or - (i32.shl - (local.get $1) - (i32.const 8) - ) - (local.get $1) - ) - (i32.shl - (local.get $1) - (i32.const 16) - ) - ) - (i32.shl - (local.get $1) - (i32.const 24) - ) - ) - ) - (local.set $5 - (i32.and - (local.get $4) - (i32.const -4) - ) - ) - (loop $while-in1 - (if - (i32.lt_s - (local.get $0) - (local.get $5) - ) - (block - (i32.store - (local.get $0) - (local.get $3) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 4) - ) - ) - (br $while-in1) - ) - ) - ) - ) - ) - (loop $while-in3 - (if - (i32.lt_s - (local.get $0) - (local.get $4) - ) - (block - (i32.store8 - (local.get $0) - (local.get $1) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (br $while-in3) - ) - ) - ) - (i32.sub - (local.get $0) - (local.get $2) - ) - ) - (func $db (; 24 ;) (; has Stack IR ;) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (drop - (i32.load offset=76 - (local.tee $0 - (i32.load - (i32.const 1024) - ) - ) - ) - ) - (drop - (if (result i32) - (i32.lt_s - (i32.add - (select - (i32.div_u - (local.tee $3 - (call $Wa - (local.tee $2 - (local.tee $1 - (call $Za) - ) - ) - (local.get $0) - ) - ) - (local.get $1) - ) - (i32.const 1) - (i32.ne - (local.get $2) - (local.get $3) - ) - ) - (i32.const -1) - ) - (i32.const 0) - ) - (i32.const 1) - (block $do-once (result i32) - (if - (i32.ne - (i32.load8_s offset=75 - (local.get $0) - ) - (i32.const 10) - ) - (if - (i32.lt_u - (local.tee $1 - (i32.load offset=20 - (local.get $0) - ) - ) - (i32.load offset=16 - (local.get $0) - ) - ) - (block - (i32.store offset=20 - (local.get $0) - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $1) - (i32.const 10) - ) - (br $do-once - (i32.const 0) - ) - ) - ) - ) - (call $ab - (local.get $0) - ) - ) - ) - ) - ) - (func $Xa (; 25 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (i32.store8 offset=74 - (local.get $0) - (i32.or - (local.tee $1 - (i32.load8_s offset=74 - (local.get $0) - ) - ) - (i32.add - (local.get $1) - (i32.const 255) - ) - ) - ) - (if (result i32) - (i32.and - (local.tee $1 - (i32.load - (local.get $0) - ) - ) - (i32.const 8) - ) - (block (result i32) - (i32.store - (local.get $0) - (i32.or - (local.get $1) - (i32.const 32) - ) - ) - (i32.const -1) - ) - (block (result i32) - (i32.store offset=8 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (local.tee $1 - (i32.load offset=44 - (local.get $0) - ) - ) - ) - (i32.store offset=20 - (local.get $0) - (local.get $1) - ) - (i32.store offset=16 - (local.get $0) - (i32.add - (i32.load offset=48 - (local.get $0) - ) - (local.get $1) - ) - ) - (i32.const 0) - ) - ) - ) - (func $Ua (; 26 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local.set $3 - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 32) - ) - ) - (i32.store - (local.get $3) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.const 0) - ) - (i32.store offset=8 - (local.get $3) - (local.get $1) - ) - (i32.store offset=12 - (local.get $3) - (i32.add - (local.get $3) - (i32.const 20) - ) - ) - (i32.store offset=16 - (local.get $3) - (local.get $2) - ) - (local.set $0 - (if (result i32) - (i32.lt_s - (call $Pa - (call $ua - (i32.const 140) - (local.get $3) - ) - ) - (i32.const 0) - ) - (block (result i32) - (i32.store offset=20 - (local.get $3) - (i32.const -1) - ) - (i32.const -1) - ) - (i32.load offset=20 - (local.get $3) - ) - ) - ) - (global.set $r - (local.get $3) - ) - (local.get $0) - ) - (func $Va (; 27 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local.set $4 - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 80) - ) - ) - (local.set $3 - (local.get $4) - ) - (i32.store offset=36 - (local.get $0) - (i32.const 3) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $0) - ) - (i32.const 64) - ) - ) - (block - (i32.store - (local.get $3) - (i32.load offset=60 - (local.get $0) - ) - ) - (i32.store offset=4 - (local.get $3) - (i32.const 21505) - ) - (i32.store offset=8 - (local.get $3) - (i32.add - (local.get $4) - (i32.const 12) - ) - ) - (if - (call $wa - (i32.const 54) - (local.get $3) - ) - (i32.store8 offset=75 - (local.get $0) - (i32.const -1) - ) - ) - ) - ) - (local.set $0 - (call $Ra - (local.get $0) - (local.get $1) - (local.get $2) - ) - ) - (global.set $r - (local.get $4) - ) - (local.get $0) - ) - (func $Oa (; 28 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local.set $1 - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 16) - ) - ) - (i32.store - (local.get $1) - (i32.load offset=60 - (local.get $0) - ) - ) - (local.set $0 - (call $Pa - (call $sa - (i32.const 6) - (local.get $1) - ) - ) - ) - (global.set $r - (local.get $1) - ) - (local.get $0) - ) - (func $Pa (; 29 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (if - (i32.gt_u - (local.get $0) - (i32.const -4096) - ) - (block - (i32.store - (call $Qa) - (i32.sub - (i32.const 0) - (local.get $0) - ) - ) - (local.set $0 - (i32.const -1) - ) - ) - ) - (local.get $0) - ) - (func $Qa (; 30 ;) (; has Stack IR ;) (result i32) - (select - (i32.load - (i32.const 64) - ) - (i32.const 1204) - (i32.load - (i32.const 1160) - ) - ) - ) - (func $lb (; 31 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $1) - (local.get $2) - (local.get $3) - (i32.add - (i32.and - (local.get $0) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - (func $Ea (; 32 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local.set $1 - (global.get $r) - ) - (global.set $r - (i32.add - (local.get $0) - (global.get $r) - ) - ) - (global.set $r - (i32.and - (i32.add - (global.get $r) - (i32.const 15) - ) - (i32.const -16) - ) - ) - (local.get $1) - ) - (func $ob (; 33 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (call $ja - (i32.const 1) - ) - (i32.const 0) - ) - (func $Ia (; 34 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (if - (i32.eqz - (global.get $v) - ) - (block - (global.set $v - (local.get $0) - ) - (global.set $w - (local.get $1) - ) - ) - ) - ) - (func $kb (; 35 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (call_indirect (type $i32_=>_i32) - (local.get $1) - (i32.and - (local.get $0) - (i32.const 1) - ) - ) - ) - (func $Sa (; 36 ;) (; has Stack IR ;) (param $0 i32) - (nop) - ) - (func $mb (; 37 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (call_indirect (type $i32_=>_none) - (local.get $1) - (i32.add - (i32.and - (local.get $0) - (i32.const 1) - ) - (i32.const 6) - ) - ) - ) - (func $Ha (; 38 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (global.set $r - (local.get $0) - ) - (global.set $s - (local.get $1) - ) - ) - (func $nb (; 39 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (call $ja - (i32.const 0) - ) - (i32.const 0) - ) - (func $Na (; 40 ;) (; has Stack IR ;) (result i32) - (call $db) - (i32.const 0) - ) - (func $pb (; 41 ;) (; has Stack IR ;) (param $0 i32) - (call $ja - (i32.const 2) - ) - ) - (func $La (; 42 ;) (; has Stack IR ;) (param $0 i32) - (global.set $K - (local.get $0) - ) - ) - (func $Ga (; 43 ;) (; has Stack IR ;) (param $0 i32) - (global.set $r - (local.get $0) - ) - ) - (func $Ma (; 44 ;) (; has Stack IR ;) (result i32) - (global.get $K) - ) - (func $Fa (; 45 ;) (; has Stack IR ;) (result i32) - (global.get $r) - ) - (func $ib (; 46 ;) (; has Stack IR ;) (result i32) - (i32.const 0) - ) -) diff -Nru binaryen-91/test/memorygrowth.fromasm.imprecise.no-opts binaryen-99/test/memorygrowth.fromasm.imprecise.no-opts --- binaryen-91/test/memorygrowth.fromasm.imprecise.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/memorygrowth.fromasm.imprecise.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,11994 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (import "env" "memory" (memory $memory 256)) - (import "env" "table" (table $table 8 8 funcref)) - (elem (global.get $__table_base) $nb $Oa $ob $Va $Ua $Ra $pb $Sa) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $r$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $s$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $t$asm2wasm$import i32)) - (import "env" "ABORT" (global $u$asm2wasm$import i32)) - (import "global" "NaN" (global $z$asm2wasm$import f64)) - (import "global" "Infinity" (global $A$asm2wasm$import f64)) - (import "env" "abort" (func $ja (param i32))) - (import "env" "_pthread_cleanup_pop" (func $oa (param i32))) - (import "env" "___lock" (func $pa (param i32))) - (import "env" "_abort" (func $qa)) - (import "env" "_pthread_cleanup_push" (func $ra (param i32 i32))) - (import "env" "___syscall6" (func $sa (param i32 i32) (result i32))) - (import "env" "_sbrk" (func $ta (param i32) (result i32))) - (import "env" "___syscall140" (func $ua (param i32 i32) (result i32))) - (import "env" "_emscripten_memcpy_big" (func $va (param i32 i32 i32) (result i32))) - (import "env" "___syscall54" (func $wa (param i32 i32) (result i32))) - (import "env" "___unlock" (func $xa (param i32))) - (import "env" "___syscall146" (func $ya (param i32 i32) (result i32))) - (global $r (mut i32) (global.get $r$asm2wasm$import)) - (global $s (mut i32) (global.get $s$asm2wasm$import)) - (global $t (mut i32) (global.get $t$asm2wasm$import)) - (global $u (mut i32) (global.get $u$asm2wasm$import)) - (global $v (mut i32) (i32.const 0)) - (global $w (mut i32) (i32.const 0)) - (global $x (mut i32) (i32.const 0)) - (global $y (mut i32) (i32.const 0)) - (global $z (mut f64) (global.get $z$asm2wasm$import)) - (global $A (mut f64) (global.get $A$asm2wasm$import)) - (global $B (mut i32) (i32.const 0)) - (global $C (mut i32) (i32.const 0)) - (global $D (mut i32) (i32.const 0)) - (global $E (mut i32) (i32.const 0)) - (global $F (mut f64) (f64.const 0)) - (global $G (mut i32) (i32.const 0)) - (global $H (mut i32) (i32.const 0)) - (global $I (mut i32) (i32.const 0)) - (global $J (mut f64) (f64.const 0)) - (global $K (mut i32) (i32.const 0)) - (global $L (mut i32) (i32.const 0)) - (global $M (mut i32) (i32.const 0)) - (global $N (mut i32) (i32.const 0)) - (global $O (mut i32) (i32.const 0)) - (global $P (mut i32) (i32.const 0)) - (global $Q (mut i32) (i32.const 0)) - (global $R (mut i32) (i32.const 0)) - (global $S (mut i32) (i32.const 0)) - (global $T (mut i32) (i32.const 0)) - (global $za (mut f64) (f64.const 0)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (export "_free" (func $fb)) - (export "_main" (func $Na)) - (export "_pthread_self" (func $ib)) - (export "_memset" (func $hb)) - (export "_malloc" (func $eb)) - (export "_memcpy" (func $jb)) - (export "_fflush" (func $_a)) - (export "___errno_location" (func $Qa)) - (export "runPostSets" (func $gb)) - (export "stackAlloc" (func $Ea)) - (export "stackSave" (func $Fa)) - (export "stackRestore" (func $Ga)) - (export "establishStackSpace" (func $Ha)) - (export "setThrew" (func $Ia)) - (export "setTempRet0" (func $La)) - (export "getTempRet0" (func $Ma)) - (export "dynCall_ii" (func $kb)) - (export "dynCall_iiii" (func $lb)) - (export "dynCall_vi" (func $mb)) - (func $__growWasmMemory (; 12 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) - (func $eb (; 13 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local $i i32) - (local $j i32) - (local $l i32) - (local $m i32) - (local $n i32) - (local $o i32) - (local $p i32) - (local $q i32) - (local $s i32) - (local $t i32) - (local $u i32) - (local $v i32) - (local $w i32) - (local $x i32) - (local $y i32) - (local $z i32) - (local $A i32) - (local $B i32) - (local $C i32) - (local $D i32) - (local $E i32) - (local $F i32) - (local $G i32) - (local $H i32) - (local $I i32) - (local $J i32) - (local $K i32) - (local $L i32) - (local $M i32) - (local $N i32) - (local $O i32) - (local $P i32) - (local $Q i32) - (local $R i32) - (local $S i32) - (local $T i32) - (local $U i32) - (local $V i32) - (local $W i32) - (local $X i32) - (local $Y i32) - (local $Z i32) - (local $_ i32) - (local $$ i32) - (local $aa i32) - (local $ba i32) - (local $ca i32) - (local $da i32) - (local $ea i32) - (local $fa i32) - (local $ga i32) - (local $ha i32) - (local $ia i32) - (local $ja i32) - (local $ka i32) - (local $la i32) - (local $ma i32) - (local $na i32) - (local $oa i32) - (local $pa i32) - (local $ra i32) - (local $sa i32) - (local $ua i32) - (local $va i32) - (local $wa i32) - (local $xa i32) - (local $ya i32) - (local $za i32) - (local $Aa i32) - (local $Ba i32) - (local $Ca i32) - (local $Da i32) - (local $Ea i32) - (local $Fa i32) - (local $Ga i32) - (local $Ha i32) - (local $Ia i32) - (local $Ja i32) - (local $Ka i32) - (local $La i32) - (local $Ma i32) - (local $Na i32) - (local $Oa i32) - (local $Pa i32) - (local $Ra i32) - (local $Sa i32) - (local.set $b - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 16) - ) - ) - (local.set $c - (local.get $b) - ) - (block $do-once - (if - (i32.lt_u - (local.get $a) - (i32.const 245) - ) - (block - (local.set $d - (if (result i32) - (i32.lt_u - (local.get $a) - (i32.const 11) - ) - (i32.const 16) - (i32.and - (i32.add - (local.get $a) - (i32.const 11) - ) - (i32.const -8) - ) - ) - ) - (local.set $e - (i32.shr_u - (local.get $d) - (i32.const 3) - ) - ) - (local.set $f - (i32.load - (i32.const 1208) - ) - ) - (local.set $g - (i32.shr_u - (local.get $f) - (local.get $e) - ) - ) - (if - (i32.and - (local.get $g) - (i32.const 3) - ) - (block - (local.set $h - (i32.add - (i32.xor - (i32.and - (local.get $g) - (i32.const 1) - ) - (i32.const 1) - ) - (local.get $e) - ) - ) - (local.set $i - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $h) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $j - (i32.add - (local.get $i) - (i32.const 8) - ) - ) - (local.set $l - (i32.load - (local.get $j) - ) - ) - (local.set $m - (i32.add - (local.get $l) - (i32.const 8) - ) - ) - (local.set $n - (i32.load - (local.get $m) - ) - ) - (block $do-once0 - (if - (i32.eq - (local.get $i) - (local.get $n) - ) - (i32.store - (i32.const 1208) - (i32.and - (local.get $f) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $h) - ) - (i32.const -1) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $n) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $o - (i32.add - (local.get $n) - (i32.const 12) - ) - ) - (if - (i32.eq - (i32.load - (local.get $o) - ) - (local.get $l) - ) - (block - (i32.store - (local.get $o) - (local.get $i) - ) - (i32.store - (local.get $j) - (local.get $n) - ) - (br $do-once0) - ) - (call $qa) - ) - ) - ) - ) - (local.set $n - (i32.shl - (local.get $h) - (i32.const 3) - ) - ) - (i32.store - (i32.add - (local.get $l) - (i32.const 4) - ) - (i32.or - (local.get $n) - (i32.const 3) - ) - ) - (local.set $j - (i32.add - (i32.add - (local.get $l) - (local.get $n) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $j) - (i32.or - (i32.load - (local.get $j) - ) - (i32.const 1) - ) - ) - (local.set $p - (local.get $m) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - (local.set $j - (i32.load - (i32.const 1216) - ) - ) - (if - (i32.gt_u - (local.get $d) - (local.get $j) - ) - (block - (if - (local.get $g) - (block - (local.set $n - (i32.shl - (i32.const 2) - (local.get $e) - ) - ) - (local.set $i - (i32.and - (i32.shl - (local.get $g) - (local.get $e) - ) - (i32.or - (local.get $n) - (i32.sub - (i32.const 0) - (local.get $n) - ) - ) - ) - ) - (local.set $n - (i32.add - (i32.and - (local.get $i) - (i32.sub - (i32.const 0) - (local.get $i) - ) - ) - (i32.const -1) - ) - ) - (local.set $i - (i32.and - (i32.shr_u - (local.get $n) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $o - (i32.shr_u - (local.get $n) - (local.get $i) - ) - ) - (local.set $n - (i32.and - (i32.shr_u - (local.get $o) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $q - (i32.shr_u - (local.get $o) - (local.get $n) - ) - ) - (local.set $o - (i32.and - (i32.shr_u - (local.get $q) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $s - (i32.shr_u - (local.get $q) - (local.get $o) - ) - ) - (local.set $q - (i32.and - (i32.shr_u - (local.get $s) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $t - (i32.shr_u - (local.get $s) - (local.get $q) - ) - ) - (local.set $s - (i32.and - (i32.shr_u - (local.get $t) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (local.set $u - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.get $n) - (local.get $i) - ) - (local.get $o) - ) - (local.get $q) - ) - (local.get $s) - ) - (i32.shr_u - (local.get $t) - (local.get $s) - ) - ) - ) - (local.set $s - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $u) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $t - (i32.add - (local.get $s) - (i32.const 8) - ) - ) - (local.set $q - (i32.load - (local.get $t) - ) - ) - (local.set $o - (i32.add - (local.get $q) - (i32.const 8) - ) - ) - (local.set $i - (i32.load - (local.get $o) - ) - ) - (block $do-once2 - (if - (i32.eq - (local.get $s) - (local.get $i) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (local.get $f) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $u) - ) - (i32.const -1) - ) - ) - ) - (local.set $v - (local.get $j) - ) - ) - (block - (if - (i32.lt_u - (local.get $i) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $n - (i32.add - (local.get $i) - (i32.const 12) - ) - ) - (if - (i32.eq - (i32.load - (local.get $n) - ) - (local.get $q) - ) - (block - (i32.store - (local.get $n) - (local.get $s) - ) - (i32.store - (local.get $t) - (local.get $i) - ) - (local.set $v - (i32.load - (i32.const 1216) - ) - ) - (br $do-once2) - ) - (call $qa) - ) - ) - ) - ) - (local.set $i - (i32.sub - (i32.shl - (local.get $u) - (i32.const 3) - ) - (local.get $d) - ) - ) - (i32.store - (i32.add - (local.get $q) - (i32.const 4) - ) - (i32.or - (local.get $d) - (i32.const 3) - ) - ) - (local.set $t - (i32.add - (local.get $q) - (local.get $d) - ) - ) - (i32.store - (i32.add - (local.get $t) - (i32.const 4) - ) - (i32.or - (local.get $i) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $t) - (local.get $i) - ) - (local.get $i) - ) - (if - (local.get $v) - (block - (local.set $s - (i32.load - (i32.const 1228) - ) - ) - (local.set $j - (i32.shr_u - (local.get $v) - (i32.const 3) - ) - ) - (local.set $f - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $j) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $e - (i32.load - (i32.const 1208) - ) - ) - (local.set $g - (i32.shl - (i32.const 1) - (local.get $j) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $e) - (local.get $g) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $e) - (local.get $g) - ) - ) - (local.set $w - (i32.add - (local.get $f) - (i32.const 8) - ) - ) - (local.set $x - (local.get $f) - ) - ) - (block - (local.set $g - (i32.add - (local.get $f) - (i32.const 8) - ) - ) - (local.set $e - (i32.load - (local.get $g) - ) - ) - (if - (i32.lt_u - (local.get $e) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $w - (local.get $g) - ) - (local.set $x - (local.get $e) - ) - ) - ) - ) - ) - (i32.store - (local.get $w) - (local.get $s) - ) - (i32.store - (i32.add - (local.get $x) - (i32.const 12) - ) - (local.get $s) - ) - (i32.store - (i32.add - (local.get $s) - (i32.const 8) - ) - (local.get $x) - ) - (i32.store - (i32.add - (local.get $s) - (i32.const 12) - ) - (local.get $f) - ) - ) - ) - (i32.store - (i32.const 1216) - (local.get $i) - ) - (i32.store - (i32.const 1228) - (local.get $t) - ) - (local.set $p - (local.get $o) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - (local.set $t - (i32.load - (i32.const 1212) - ) - ) - (if - (i32.eqz - (local.get $t) - ) - (local.set $y - (local.get $d) - ) - (block - (local.set $i - (i32.add - (i32.and - (local.get $t) - (i32.sub - (i32.const 0) - (local.get $t) - ) - ) - (i32.const -1) - ) - ) - (local.set $t - (i32.and - (i32.shr_u - (local.get $i) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $f - (i32.shr_u - (local.get $i) - (local.get $t) - ) - ) - (local.set $i - (i32.and - (i32.shr_u - (local.get $f) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $s - (i32.shr_u - (local.get $f) - (local.get $i) - ) - ) - (local.set $f - (i32.and - (i32.shr_u - (local.get $s) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $e - (i32.shr_u - (local.get $s) - (local.get $f) - ) - ) - (local.set $s - (i32.and - (i32.shr_u - (local.get $e) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $g - (i32.shr_u - (local.get $e) - (local.get $s) - ) - ) - (local.set $e - (i32.and - (i32.shr_u - (local.get $g) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (local.set $j - (i32.load - (i32.add - (i32.const 1512) - (i32.shl - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.get $i) - (local.get $t) - ) - (local.get $f) - ) - (local.get $s) - ) - (local.get $e) - ) - (i32.shr_u - (local.get $g) - (local.get $e) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (local.set $e - (i32.sub - (i32.and - (i32.load - (i32.add - (local.get $j) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $d) - ) - ) - (local.set $g - (local.get $j) - ) - (local.set $s - (local.get $j) - ) - (loop $while-in - (block $while-out - (local.set $j - (i32.load - (i32.add - (local.get $g) - (i32.const 16) - ) - ) - ) - (if - (i32.eqz - (local.get $j) - ) - (block - (local.set $f - (i32.load - (i32.add - (local.get $g) - (i32.const 20) - ) - ) - ) - (if - (i32.eqz - (local.get $f) - ) - (block - (local.set $z - (local.get $e) - ) - (local.set $A - (local.get $s) - ) - (br $while-out) - ) - (local.set $B - (local.get $f) - ) - ) - ) - (local.set $B - (local.get $j) - ) - ) - (local.set $j - (i32.sub - (i32.and - (i32.load - (i32.add - (local.get $B) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $d) - ) - ) - (local.set $f - (i32.lt_u - (local.get $j) - (local.get $e) - ) - ) - (local.set $e - (if (result i32) - (local.get $f) - (local.get $j) - (local.get $e) - ) - ) - (local.set $g - (local.get $B) - ) - (local.set $s - (if (result i32) - (local.get $f) - (local.get $B) - (local.get $s) - ) - ) - (br $while-in) - ) - ) - (local.set $s - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $A) - (local.get $s) - ) - (call $qa) - ) - (local.set $g - (i32.add - (local.get $A) - (local.get $d) - ) - ) - (if - (i32.ge_u - (local.get $A) - (local.get $g) - ) - (call $qa) - ) - (local.set $e - (i32.load - (i32.add - (local.get $A) - (i32.const 24) - ) - ) - ) - (local.set $o - (i32.load - (i32.add - (local.get $A) - (i32.const 12) - ) - ) - ) - (block $do-once4 - (if - (i32.eq - (local.get $o) - (local.get $A) - ) - (block - (local.set $q - (i32.add - (local.get $A) - (i32.const 20) - ) - ) - (local.set $u - (i32.load - (local.get $q) - ) - ) - (if - (i32.eqz - (local.get $u) - ) - (block - (local.set $f - (i32.add - (local.get $A) - (i32.const 16) - ) - ) - (local.set $j - (i32.load - (local.get $f) - ) - ) - (if - (i32.eqz - (local.get $j) - ) - (block - (local.set $C - (i32.const 0) - ) - (br $do-once4) - ) - (block - (local.set $D - (local.get $j) - ) - (local.set $E - (local.get $f) - ) - ) - ) - ) - (block - (local.set $D - (local.get $u) - ) - (local.set $E - (local.get $q) - ) - ) - ) - (loop $while-in7 - (block $while-out6 - (local.set $q - (i32.add - (local.get $D) - (i32.const 20) - ) - ) - (local.set $u - (i32.load - (local.get $q) - ) - ) - (if - (local.get $u) - (block - (local.set $D - (local.get $u) - ) - (local.set $E - (local.get $q) - ) - (br $while-in7) - ) - ) - (local.set $q - (i32.add - (local.get $D) - (i32.const 16) - ) - ) - (local.set $u - (i32.load - (local.get $q) - ) - ) - (if - (i32.eqz - (local.get $u) - ) - (block - (local.set $F - (local.get $D) - ) - (local.set $G - (local.get $E) - ) - (br $while-out6) - ) - (block - (local.set $D - (local.get $u) - ) - (local.set $E - (local.get $q) - ) - ) - ) - (br $while-in7) - ) - ) - (if - (i32.lt_u - (local.get $G) - (local.get $s) - ) - (call $qa) - (block - (i32.store - (local.get $G) - (i32.const 0) - ) - (local.set $C - (local.get $F) - ) - (br $do-once4) - ) - ) - ) - (block - (local.set $q - (i32.load - (i32.add - (local.get $A) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $q) - (local.get $s) - ) - (call $qa) - ) - (local.set $u - (i32.add - (local.get $q) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $u) - ) - (local.get $A) - ) - (call $qa) - ) - (local.set $f - (i32.add - (local.get $o) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $f) - ) - (local.get $A) - ) - (block - (i32.store - (local.get $u) - (local.get $o) - ) - (i32.store - (local.get $f) - (local.get $q) - ) - (local.set $C - (local.get $o) - ) - (br $do-once4) - ) - (call $qa) - ) - ) - ) - ) - (block $do-once8 - (if - (local.get $e) - (block - (local.set $o - (i32.load - (i32.add - (local.get $A) - (i32.const 28) - ) - ) - ) - (local.set $s - (i32.add - (i32.const 1512) - (i32.shl - (local.get $o) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $A) - (i32.load - (local.get $s) - ) - ) - (block - (i32.store - (local.get $s) - (local.get $C) - ) - (if - (i32.eqz - (local.get $C) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $o) - ) - (i32.const -1) - ) - ) - ) - (br $do-once8) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $e) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $o - (i32.add - (local.get $e) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $o) - ) - (local.get $A) - ) - (i32.store - (local.get $o) - (local.get $C) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 20) - ) - (local.get $C) - ) - ) - (if - (i32.eqz - (local.get $C) - ) - (br $do-once8) - ) - ) - ) - (local.set $o - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $C) - (local.get $o) - ) - (call $qa) - ) - (i32.store - (i32.add - (local.get $C) - (i32.const 24) - ) - (local.get $e) - ) - (local.set $s - (i32.load - (i32.add - (local.get $A) - (i32.const 16) - ) - ) - ) - (block $do-once10 - (if - (local.get $s) - (if - (i32.lt_u - (local.get $s) - (local.get $o) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $C) - (i32.const 16) - ) - (local.get $s) - ) - (i32.store - (i32.add - (local.get $s) - (i32.const 24) - ) - (local.get $C) - ) - (br $do-once10) - ) - ) - ) - ) - (local.set $s - (i32.load - (i32.add - (local.get $A) - (i32.const 20) - ) - ) - ) - (if - (local.get $s) - (if - (i32.lt_u - (local.get $s) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $C) - (i32.const 20) - ) - (local.get $s) - ) - (i32.store - (i32.add - (local.get $s) - (i32.const 24) - ) - (local.get $C) - ) - (br $do-once8) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $z) - (i32.const 16) - ) - (block - (local.set $e - (i32.add - (local.get $z) - (local.get $d) - ) - ) - (i32.store - (i32.add - (local.get $A) - (i32.const 4) - ) - (i32.or - (local.get $e) - (i32.const 3) - ) - ) - (local.set $s - (i32.add - (i32.add - (local.get $A) - (local.get $e) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $s) - (i32.or - (i32.load - (local.get $s) - ) - (i32.const 1) - ) - ) - ) - (block - (i32.store - (i32.add - (local.get $A) - (i32.const 4) - ) - (i32.or - (local.get $d) - (i32.const 3) - ) - ) - (i32.store - (i32.add - (local.get $g) - (i32.const 4) - ) - (i32.or - (local.get $z) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $g) - (local.get $z) - ) - (local.get $z) - ) - (local.set $s - (i32.load - (i32.const 1216) - ) - ) - (if - (local.get $s) - (block - (local.set $e - (i32.load - (i32.const 1228) - ) - ) - (local.set $o - (i32.shr_u - (local.get $s) - (i32.const 3) - ) - ) - (local.set $s - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $o) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $q - (i32.load - (i32.const 1208) - ) - ) - (local.set $f - (i32.shl - (i32.const 1) - (local.get $o) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $q) - (local.get $f) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $q) - (local.get $f) - ) - ) - (local.set $H - (i32.add - (local.get $s) - (i32.const 8) - ) - ) - (local.set $I - (local.get $s) - ) - ) - (block - (local.set $f - (i32.add - (local.get $s) - (i32.const 8) - ) - ) - (local.set $q - (i32.load - (local.get $f) - ) - ) - (if - (i32.lt_u - (local.get $q) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $H - (local.get $f) - ) - (local.set $I - (local.get $q) - ) - ) - ) - ) - ) - (i32.store - (local.get $H) - (local.get $e) - ) - (i32.store - (i32.add - (local.get $I) - (i32.const 12) - ) - (local.get $e) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 8) - ) - (local.get $I) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 12) - ) - (local.get $s) - ) - ) - ) - (i32.store - (i32.const 1216) - (local.get $z) - ) - (i32.store - (i32.const 1228) - (local.get $g) - ) - ) - ) - (local.set $p - (i32.add - (local.get $A) - (i32.const 8) - ) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - ) - (local.set $y - (local.get $d) - ) - ) - ) - (if - (i32.gt_u - (local.get $a) - (i32.const -65) - ) - (local.set $y - (i32.const -1) - ) - (block - (local.set $s - (i32.add - (local.get $a) - (i32.const 11) - ) - ) - (local.set $e - (i32.and - (local.get $s) - (i32.const -8) - ) - ) - (local.set $q - (i32.load - (i32.const 1212) - ) - ) - (if - (i32.eqz - (local.get $q) - ) - (local.set $y - (local.get $e) - ) - (block - (local.set $f - (i32.sub - (i32.const 0) - (local.get $e) - ) - ) - (local.set $o - (i32.shr_u - (local.get $s) - (i32.const 8) - ) - ) - (if - (i32.eqz - (local.get $o) - ) - (local.set $J - (i32.const 0) - ) - (if - (i32.gt_u - (local.get $e) - (i32.const 16777215) - ) - (local.set $J - (i32.const 31) - ) - (block - (local.set $s - (i32.and - (i32.shr_u - (i32.add - (local.get $o) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $u - (i32.shl - (local.get $o) - (local.get $s) - ) - ) - (local.set $o - (i32.and - (i32.shr_u - (i32.add - (local.get $u) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $j - (i32.shl - (local.get $u) - (local.get $o) - ) - ) - (local.set $u - (i32.and - (i32.shr_u - (i32.add - (local.get $j) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $t - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $o) - (local.get $s) - ) - (local.get $u) - ) - ) - (i32.shr_u - (i32.shl - (local.get $j) - (local.get $u) - ) - (i32.const 15) - ) - ) - ) - (local.set $J - (i32.or - (i32.and - (i32.shr_u - (local.get $e) - (i32.add - (local.get $t) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $t) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.set $t - (i32.load - (i32.add - (i32.const 1512) - (i32.shl - (local.get $J) - (i32.const 2) - ) - ) - ) - ) - (block $label$break$a - (if - (i32.eqz - (local.get $t) - ) - (block - (local.set $K - (local.get $f) - ) - (local.set $L - (i32.const 0) - ) - (local.set $M - (i32.const 0) - ) - (local.set $N - (i32.const 86) - ) - ) - (block - (local.set $u - (local.get $f) - ) - (local.set $j - (i32.const 0) - ) - (local.set $s - (i32.shl - (local.get $e) - (if (result i32) - (i32.eq - (local.get $J) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $J) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $o - (local.get $t) - ) - (local.set $i - (i32.const 0) - ) - (loop $while-in14 - (block $while-out13 - (local.set $m - (i32.and - (i32.load - (i32.add - (local.get $o) - (i32.const 4) - ) - ) - (i32.const -8) - ) - ) - (local.set $l - (i32.sub - (local.get $m) - (local.get $e) - ) - ) - (if - (i32.lt_u - (local.get $l) - (local.get $u) - ) - (if - (i32.eq - (local.get $m) - (local.get $e) - ) - (block - (local.set $O - (local.get $l) - ) - (local.set $P - (local.get $o) - ) - (local.set $Q - (local.get $o) - ) - (local.set $N - (i32.const 90) - ) - (br $label$break$a) - ) - (block - (local.set $R - (local.get $l) - ) - (local.set $S - (local.get $o) - ) - ) - ) - (block - (local.set $R - (local.get $u) - ) - (local.set $S - (local.get $i) - ) - ) - ) - (local.set $l - (i32.load - (i32.add - (local.get $o) - (i32.const 20) - ) - ) - ) - (local.set $o - (i32.load - (i32.add - (i32.add - (local.get $o) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $s) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - (local.set $m - (if (result i32) - (i32.or - (i32.eq - (local.get $l) - (i32.const 0) - ) - (i32.eq - (local.get $l) - (local.get $o) - ) - ) - (local.get $j) - (local.get $l) - ) - ) - (local.set $l - (i32.eq - (local.get $o) - (i32.const 0) - ) - ) - (if - (local.get $l) - (block - (local.set $K - (local.get $R) - ) - (local.set $L - (local.get $m) - ) - (local.set $M - (local.get $S) - ) - (local.set $N - (i32.const 86) - ) - (br $while-out13) - ) - (block - (local.set $u - (local.get $R) - ) - (local.set $j - (local.get $m) - ) - (local.set $s - (i32.shl - (local.get $s) - (i32.xor - (i32.and - (local.get $l) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (local.set $i - (local.get $S) - ) - ) - ) - (br $while-in14) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 86) - ) - (block - (if - (i32.and - (i32.eq - (local.get $L) - (i32.const 0) - ) - (i32.eq - (local.get $M) - (i32.const 0) - ) - ) - (block - (local.set $t - (i32.shl - (i32.const 2) - (local.get $J) - ) - ) - (local.set $f - (i32.and - (local.get $q) - (i32.or - (local.get $t) - (i32.sub - (i32.const 0) - (local.get $t) - ) - ) - ) - ) - (if - (i32.eqz - (local.get $f) - ) - (block - (local.set $y - (local.get $e) - ) - (br $do-once) - ) - ) - (local.set $t - (i32.add - (i32.and - (local.get $f) - (i32.sub - (i32.const 0) - (local.get $f) - ) - ) - (i32.const -1) - ) - ) - (local.set $f - (i32.and - (i32.shr_u - (local.get $t) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $d - (i32.shr_u - (local.get $t) - (local.get $f) - ) - ) - (local.set $t - (i32.and - (i32.shr_u - (local.get $d) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $g - (i32.shr_u - (local.get $d) - (local.get $t) - ) - ) - (local.set $d - (i32.and - (i32.shr_u - (local.get $g) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $i - (i32.shr_u - (local.get $g) - (local.get $d) - ) - ) - (local.set $g - (i32.and - (i32.shr_u - (local.get $i) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $s - (i32.shr_u - (local.get $i) - (local.get $g) - ) - ) - (local.set $i - (i32.and - (i32.shr_u - (local.get $s) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (local.set $T - (i32.load - (i32.add - (i32.const 1512) - (i32.shl - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.get $t) - (local.get $f) - ) - (local.get $d) - ) - (local.get $g) - ) - (local.get $i) - ) - (i32.shr_u - (local.get $s) - (local.get $i) - ) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (local.set $T - (local.get $L) - ) - ) - (if - (i32.eqz - (local.get $T) - ) - (block - (local.set $U - (local.get $K) - ) - (local.set $V - (local.get $M) - ) - ) - (block - (local.set $O - (local.get $K) - ) - (local.set $P - (local.get $T) - ) - (local.set $Q - (local.get $M) - ) - (local.set $N - (i32.const 90) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 90) - ) - (loop $while-in16 - (block $while-out15 - (local.set $N - (i32.const 0) - ) - (local.set $i - (i32.sub - (i32.and - (i32.load - (i32.add - (local.get $P) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $e) - ) - ) - (local.set $s - (i32.lt_u - (local.get $i) - (local.get $O) - ) - ) - (local.set $g - (if (result i32) - (local.get $s) - (local.get $i) - (local.get $O) - ) - ) - (local.set $i - (if (result i32) - (local.get $s) - (local.get $P) - (local.get $Q) - ) - ) - (local.set $s - (i32.load - (i32.add - (local.get $P) - (i32.const 16) - ) - ) - ) - (if - (local.get $s) - (block - (local.set $O - (local.get $g) - ) - (local.set $P - (local.get $s) - ) - (local.set $Q - (local.get $i) - ) - (local.set $N - (i32.const 90) - ) - (br $while-in16) - ) - ) - (local.set $P - (i32.load - (i32.add - (local.get $P) - (i32.const 20) - ) - ) - ) - (if - (i32.eqz - (local.get $P) - ) - (block - (local.set $U - (local.get $g) - ) - (local.set $V - (local.get $i) - ) - (br $while-out15) - ) - (block - (local.set $O - (local.get $g) - ) - (local.set $Q - (local.get $i) - ) - (local.set $N - (i32.const 90) - ) - ) - ) - (br $while-in16) - ) - ) - ) - (if - (i32.eqz - (local.get $V) - ) - (local.set $y - (local.get $e) - ) - (if - (i32.lt_u - (local.get $U) - (i32.sub - (i32.load - (i32.const 1216) - ) - (local.get $e) - ) - ) - (block - (local.set $q - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $V) - (local.get $q) - ) - (call $qa) - ) - (local.set $i - (i32.add - (local.get $V) - (local.get $e) - ) - ) - (if - (i32.ge_u - (local.get $V) - (local.get $i) - ) - (call $qa) - ) - (local.set $g - (i32.load - (i32.add - (local.get $V) - (i32.const 24) - ) - ) - ) - (local.set $s - (i32.load - (i32.add - (local.get $V) - (i32.const 12) - ) - ) - ) - (block $do-once17 - (if - (i32.eq - (local.get $s) - (local.get $V) - ) - (block - (local.set $d - (i32.add - (local.get $V) - (i32.const 20) - ) - ) - (local.set $f - (i32.load - (local.get $d) - ) - ) - (if - (i32.eqz - (local.get $f) - ) - (block - (local.set $t - (i32.add - (local.get $V) - (i32.const 16) - ) - ) - (local.set $j - (i32.load - (local.get $t) - ) - ) - (if - (i32.eqz - (local.get $j) - ) - (block - (local.set $W - (i32.const 0) - ) - (br $do-once17) - ) - (block - (local.set $X - (local.get $j) - ) - (local.set $Y - (local.get $t) - ) - ) - ) - ) - (block - (local.set $X - (local.get $f) - ) - (local.set $Y - (local.get $d) - ) - ) - ) - (loop $while-in20 - (block $while-out19 - (local.set $d - (i32.add - (local.get $X) - (i32.const 20) - ) - ) - (local.set $f - (i32.load - (local.get $d) - ) - ) - (if - (local.get $f) - (block - (local.set $X - (local.get $f) - ) - (local.set $Y - (local.get $d) - ) - (br $while-in20) - ) - ) - (local.set $d - (i32.add - (local.get $X) - (i32.const 16) - ) - ) - (local.set $f - (i32.load - (local.get $d) - ) - ) - (if - (i32.eqz - (local.get $f) - ) - (block - (local.set $Z - (local.get $X) - ) - (local.set $_ - (local.get $Y) - ) - (br $while-out19) - ) - (block - (local.set $X - (local.get $f) - ) - (local.set $Y - (local.get $d) - ) - ) - ) - (br $while-in20) - ) - ) - (if - (i32.lt_u - (local.get $_) - (local.get $q) - ) - (call $qa) - (block - (i32.store - (local.get $_) - (i32.const 0) - ) - (local.set $W - (local.get $Z) - ) - (br $do-once17) - ) - ) - ) - (block - (local.set $d - (i32.load - (i32.add - (local.get $V) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $d) - (local.get $q) - ) - (call $qa) - ) - (local.set $f - (i32.add - (local.get $d) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $f) - ) - (local.get $V) - ) - (call $qa) - ) - (local.set $t - (i32.add - (local.get $s) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $t) - ) - (local.get $V) - ) - (block - (i32.store - (local.get $f) - (local.get $s) - ) - (i32.store - (local.get $t) - (local.get $d) - ) - (local.set $W - (local.get $s) - ) - (br $do-once17) - ) - (call $qa) - ) - ) - ) - ) - (block $do-once21 - (if - (local.get $g) - (block - (local.set $s - (i32.load - (i32.add - (local.get $V) - (i32.const 28) - ) - ) - ) - (local.set $q - (i32.add - (i32.const 1512) - (i32.shl - (local.get $s) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $V) - (i32.load - (local.get $q) - ) - ) - (block - (i32.store - (local.get $q) - (local.get $W) - ) - (if - (i32.eqz - (local.get $W) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $s) - ) - (i32.const -1) - ) - ) - ) - (br $do-once21) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $g) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $s - (i32.add - (local.get $g) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $s) - ) - (local.get $V) - ) - (i32.store - (local.get $s) - (local.get $W) - ) - (i32.store - (i32.add - (local.get $g) - (i32.const 20) - ) - (local.get $W) - ) - ) - (if - (i32.eqz - (local.get $W) - ) - (br $do-once21) - ) - ) - ) - (local.set $s - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $W) - (local.get $s) - ) - (call $qa) - ) - (i32.store - (i32.add - (local.get $W) - (i32.const 24) - ) - (local.get $g) - ) - (local.set $q - (i32.load - (i32.add - (local.get $V) - (i32.const 16) - ) - ) - ) - (block $do-once23 - (if - (local.get $q) - (if - (i32.lt_u - (local.get $q) - (local.get $s) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $W) - (i32.const 16) - ) - (local.get $q) - ) - (i32.store - (i32.add - (local.get $q) - (i32.const 24) - ) - (local.get $W) - ) - (br $do-once23) - ) - ) - ) - ) - (local.set $q - (i32.load - (i32.add - (local.get $V) - (i32.const 20) - ) - ) - ) - (if - (local.get $q) - (if - (i32.lt_u - (local.get $q) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $W) - (i32.const 20) - ) - (local.get $q) - ) - (i32.store - (i32.add - (local.get $q) - (i32.const 24) - ) - (local.get $W) - ) - (br $do-once21) - ) - ) - ) - ) - ) - ) - (block $do-once25 - (if - (i32.lt_u - (local.get $U) - (i32.const 16) - ) - (block - (local.set $g - (i32.add - (local.get $U) - (local.get $e) - ) - ) - (i32.store - (i32.add - (local.get $V) - (i32.const 4) - ) - (i32.or - (local.get $g) - (i32.const 3) - ) - ) - (local.set $q - (i32.add - (i32.add - (local.get $V) - (local.get $g) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $q) - (i32.or - (i32.load - (local.get $q) - ) - (i32.const 1) - ) - ) - ) - (block - (i32.store - (i32.add - (local.get $V) - (i32.const 4) - ) - (i32.or - (local.get $e) - (i32.const 3) - ) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 4) - ) - (i32.or - (local.get $U) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i) - (local.get $U) - ) - (local.get $U) - ) - (local.set $q - (i32.shr_u - (local.get $U) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $U) - (i32.const 256) - ) - (block - (local.set $g - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $q) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $s - (i32.load - (i32.const 1208) - ) - ) - (local.set $d - (i32.shl - (i32.const 1) - (local.get $q) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $s) - (local.get $d) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $s) - (local.get $d) - ) - ) - (local.set $$ - (i32.add - (local.get $g) - (i32.const 8) - ) - ) - (local.set $aa - (local.get $g) - ) - ) - (block - (local.set $d - (i32.add - (local.get $g) - (i32.const 8) - ) - ) - (local.set $s - (i32.load - (local.get $d) - ) - ) - (if - (i32.lt_u - (local.get $s) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $$ - (local.get $d) - ) - (local.set $aa - (local.get $s) - ) - ) - ) - ) - ) - (i32.store - (local.get $$) - (local.get $i) - ) - (i32.store - (i32.add - (local.get $aa) - (i32.const 12) - ) - (local.get $i) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 8) - ) - (local.get $aa) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 12) - ) - (local.get $g) - ) - (br $do-once25) - ) - ) - (local.set $g - (i32.shr_u - (local.get $U) - (i32.const 8) - ) - ) - (if - (i32.eqz - (local.get $g) - ) - (local.set $ba - (i32.const 0) - ) - (if - (i32.gt_u - (local.get $U) - (i32.const 16777215) - ) - (local.set $ba - (i32.const 31) - ) - (block - (local.set $s - (i32.and - (i32.shr_u - (i32.add - (local.get $g) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $d - (i32.shl - (local.get $g) - (local.get $s) - ) - ) - (local.set $g - (i32.and - (i32.shr_u - (i32.add - (local.get $d) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $q - (i32.shl - (local.get $d) - (local.get $g) - ) - ) - (local.set $d - (i32.and - (i32.shr_u - (i32.add - (local.get $q) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $t - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $g) - (local.get $s) - ) - (local.get $d) - ) - ) - (i32.shr_u - (i32.shl - (local.get $q) - (local.get $d) - ) - (i32.const 15) - ) - ) - ) - (local.set $ba - (i32.or - (i32.and - (i32.shr_u - (local.get $U) - (i32.add - (local.get $t) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $t) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.set $t - (i32.add - (i32.const 1512) - (i32.shl - (local.get $ba) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 28) - ) - (local.get $ba) - ) - (local.set $d - (i32.add - (local.get $i) - (i32.const 16) - ) - ) - (i32.store - (i32.add - (local.get $d) - (i32.const 4) - ) - (i32.const 0) - ) - (i32.store - (local.get $d) - (i32.const 0) - ) - (local.set $d - (i32.load - (i32.const 1212) - ) - ) - (local.set $q - (i32.shl - (i32.const 1) - (local.get $ba) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $d) - (local.get $q) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $d) - (local.get $q) - ) - ) - (i32.store - (local.get $t) - (local.get $i) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 24) - ) - (local.get $t) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 12) - ) - (local.get $i) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 8) - ) - (local.get $i) - ) - (br $do-once25) - ) - ) - (local.set $q - (i32.shl - (local.get $U) - (if (result i32) - (i32.eq - (local.get $ba) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $ba) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $d - (i32.load - (local.get $t) - ) - ) - (loop $while-in28 - (block $while-out27 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $d) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $U) - ) - (block - (local.set $ca - (local.get $d) - ) - (local.set $N - (i32.const 148) - ) - (br $while-out27) - ) - ) - (local.set $t - (i32.add - (i32.add - (local.get $d) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $q) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $s - (i32.load - (local.get $t) - ) - ) - (if - (i32.eqz - (local.get $s) - ) - (block - (local.set $da - (local.get $t) - ) - (local.set $ea - (local.get $d) - ) - (local.set $N - (i32.const 145) - ) - (br $while-out27) - ) - (block - (local.set $q - (i32.shl - (local.get $q) - (i32.const 1) - ) - ) - (local.set $d - (local.get $s) - ) - ) - ) - (br $while-in28) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 145) - ) - (if - (i32.lt_u - (local.get $da) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $da) - (local.get $i) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 24) - ) - (local.get $ea) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 12) - ) - (local.get $i) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 8) - ) - (local.get $i) - ) - (br $do-once25) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 148) - ) - (block - (local.set $d - (i32.add - (local.get $ca) - (i32.const 8) - ) - ) - (local.set $q - (i32.load - (local.get $d) - ) - ) - (local.set $s - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $q) - (local.get $s) - ) - (i32.ge_u - (local.get $ca) - (local.get $s) - ) - ) - (block - (i32.store - (i32.add - (local.get $q) - (i32.const 12) - ) - (local.get $i) - ) - (i32.store - (local.get $d) - (local.get $i) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 8) - ) - (local.get $q) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 12) - ) - (local.get $ca) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once25) - ) - (call $qa) - ) - ) - ) - ) - ) - ) - ) - (local.set $p - (i32.add - (local.get $V) - (i32.const 8) - ) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - (local.set $y - (local.get $e) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (local.set $V - (i32.load - (i32.const 1216) - ) - ) - (if - (i32.ge_u - (local.get $V) - (local.get $y) - ) - (block - (local.set $ca - (i32.sub - (local.get $V) - (local.get $y) - ) - ) - (local.set $ea - (i32.load - (i32.const 1228) - ) - ) - (if - (i32.gt_u - (local.get $ca) - (i32.const 15) - ) - (block - (local.set $da - (i32.add - (local.get $ea) - (local.get $y) - ) - ) - (i32.store - (i32.const 1228) - (local.get $da) - ) - (i32.store - (i32.const 1216) - (local.get $ca) - ) - (i32.store - (i32.add - (local.get $da) - (i32.const 4) - ) - (i32.or - (local.get $ca) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $da) - (local.get $ca) - ) - (local.get $ca) - ) - (i32.store - (i32.add - (local.get $ea) - (i32.const 4) - ) - (i32.or - (local.get $y) - (i32.const 3) - ) - ) - ) - (block - (i32.store - (i32.const 1216) - (i32.const 0) - ) - (i32.store - (i32.const 1228) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $ea) - (i32.const 4) - ) - (i32.or - (local.get $V) - (i32.const 3) - ) - ) - (local.set $ca - (i32.add - (i32.add - (local.get $ea) - (local.get $V) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $ca) - (i32.or - (i32.load - (local.get $ca) - ) - (i32.const 1) - ) - ) - ) - ) - (local.set $p - (i32.add - (local.get $ea) - (i32.const 8) - ) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - (local.set $ea - (i32.load - (i32.const 1220) - ) - ) - (if - (i32.gt_u - (local.get $ea) - (local.get $y) - ) - (block - (local.set $ca - (i32.sub - (local.get $ea) - (local.get $y) - ) - ) - (i32.store - (i32.const 1220) - (local.get $ca) - ) - (local.set $ea - (i32.load - (i32.const 1232) - ) - ) - (local.set $V - (i32.add - (local.get $ea) - (local.get $y) - ) - ) - (i32.store - (i32.const 1232) - (local.get $V) - ) - (i32.store - (i32.add - (local.get $V) - (i32.const 4) - ) - (i32.or - (local.get $ca) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $ea) - (i32.const 4) - ) - (i32.or - (local.get $y) - (i32.const 3) - ) - ) - (local.set $p - (i32.add - (local.get $ea) - (i32.const 8) - ) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - (if - (i32.eqz - (i32.load - (i32.const 1680) - ) - ) - (block - (i32.store - (i32.const 1688) - (i32.const 4096) - ) - (i32.store - (i32.const 1684) - (i32.const 4096) - ) - (i32.store - (i32.const 1692) - (i32.const -1) - ) - (i32.store - (i32.const 1696) - (i32.const -1) - ) - (i32.store - (i32.const 1700) - (i32.const 0) - ) - (i32.store - (i32.const 1652) - (i32.const 0) - ) - (local.set $ea - (i32.xor - (i32.and - (local.get $c) - (i32.const -16) - ) - (i32.const 1431655768) - ) - ) - (i32.store - (local.get $c) - (local.get $ea) - ) - (i32.store - (i32.const 1680) - (local.get $ea) - ) - ) - ) - (local.set $ea - (i32.add - (local.get $y) - (i32.const 48) - ) - ) - (local.set $c - (i32.load - (i32.const 1688) - ) - ) - (local.set $ca - (i32.add - (local.get $y) - (i32.const 47) - ) - ) - (local.set $V - (i32.add - (local.get $c) - (local.get $ca) - ) - ) - (local.set $da - (i32.sub - (i32.const 0) - (local.get $c) - ) - ) - (local.set $c - (i32.and - (local.get $V) - (local.get $da) - ) - ) - (if - (i32.le_u - (local.get $c) - (local.get $y) - ) - (block - (local.set $p - (i32.const 0) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - (local.set $U - (i32.load - (i32.const 1648) - ) - ) - (if - (local.get $U) - (block - (local.set $ba - (i32.load - (i32.const 1640) - ) - ) - (local.set $aa - (i32.add - (local.get $ba) - (local.get $c) - ) - ) - (if - (i32.or - (i32.le_u - (local.get $aa) - (local.get $ba) - ) - (i32.gt_u - (local.get $aa) - (local.get $U) - ) - ) - (block - (local.set $p - (i32.const 0) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - ) - ) - (block $label$break$b - (if - (i32.eqz - (i32.and - (i32.load - (i32.const 1652) - ) - (i32.const 4) - ) - ) - (block - (local.set $U - (i32.load - (i32.const 1232) - ) - ) - (block $label$break$c - (if - (i32.eqz - (local.get $U) - ) - (local.set $N - (i32.const 171) - ) - (block - (local.set $aa - (i32.const 1656) - ) - (loop $while-in32 - (block $while-out31 - (local.set $ba - (i32.load - (local.get $aa) - ) - ) - (if - (i32.le_u - (local.get $ba) - (local.get $U) - ) - (block - (local.set $$ - (i32.add - (local.get $aa) - (i32.const 4) - ) - ) - (if - (i32.gt_u - (i32.add - (local.get $ba) - (i32.load - (local.get $$) - ) - ) - (local.get $U) - ) - (block - (local.set $fa - (local.get $aa) - ) - (local.set $ga - (local.get $$) - ) - (br $while-out31) - ) - ) - ) - ) - (local.set $aa - (i32.load - (i32.add - (local.get $aa) - (i32.const 8) - ) - ) - ) - (if - (i32.eqz - (local.get $aa) - ) - (block - (local.set $N - (i32.const 171) - ) - (br $label$break$c) - ) - ) - (br $while-in32) - ) - ) - (local.set $aa - (i32.and - (i32.sub - (local.get $V) - (i32.load - (i32.const 1220) - ) - ) - (local.get $da) - ) - ) - (if - (i32.lt_u - (local.get $aa) - (i32.const 2147483647) - ) - (block - (local.set $$ - (call $ta - (local.get $aa) - ) - ) - (if - (i32.eq - (local.get $$) - (i32.add - (i32.load - (local.get $fa) - ) - (i32.load - (local.get $ga) - ) - ) - ) - (if - (i32.ne - (local.get $$) - (i32.const -1) - ) - (block - (local.set $ha - (local.get $$) - ) - (local.set $ia - (local.get $aa) - ) - (local.set $N - (i32.const 191) - ) - (br $label$break$b) - ) - ) - (block - (local.set $ja - (local.get $$) - ) - (local.set $ka - (local.get $aa) - ) - (local.set $N - (i32.const 181) - ) - ) - ) - ) - ) - ) - ) - ) - (block $do-once33 - (if - (i32.eq - (local.get $N) - (i32.const 171) - ) - (block - (local.set $U - (call $ta - (i32.const 0) - ) - ) - (if - (i32.ne - (local.get $U) - (i32.const -1) - ) - (block - (local.set $e - (local.get $U) - ) - (local.set $aa - (i32.load - (i32.const 1684) - ) - ) - (local.set $$ - (i32.add - (local.get $aa) - (i32.const -1) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $$) - (local.get $e) - ) - ) - (local.set $la - (local.get $c) - ) - (local.set $la - (i32.add - (i32.sub - (local.get $c) - (local.get $e) - ) - (i32.and - (i32.add - (local.get $$) - (local.get $e) - ) - (i32.sub - (i32.const 0) - (local.get $aa) - ) - ) - ) - ) - ) - (local.set $aa - (i32.load - (i32.const 1640) - ) - ) - (local.set $e - (i32.add - (local.get $aa) - (local.get $la) - ) - ) - (if - (i32.and - (i32.gt_u - (local.get $la) - (local.get $y) - ) - (i32.lt_u - (local.get $la) - (i32.const 2147483647) - ) - ) - (block - (local.set $$ - (i32.load - (i32.const 1648) - ) - ) - (if - (local.get $$) - (if - (i32.or - (i32.le_u - (local.get $e) - (local.get $aa) - ) - (i32.gt_u - (local.get $e) - (local.get $$) - ) - ) - (br $do-once33) - ) - ) - (local.set $$ - (call $ta - (local.get $la) - ) - ) - (if - (i32.eq - (local.get $$) - (local.get $U) - ) - (block - (local.set $ha - (local.get $U) - ) - (local.set $ia - (local.get $la) - ) - (local.set $N - (i32.const 191) - ) - (br $label$break$b) - ) - (block - (local.set $ja - (local.get $$) - ) - (local.set $ka - (local.get $la) - ) - (local.set $N - (i32.const 181) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (block $label$break$d - (if - (i32.eq - (local.get $N) - (i32.const 181) - ) - (block - (local.set $$ - (i32.sub - (i32.const 0) - (local.get $ka) - ) - ) - (block $do-once36 - (if - (i32.and - (i32.gt_u - (local.get $ea) - (local.get $ka) - ) - (i32.and - (i32.lt_u - (local.get $ka) - (i32.const 2147483647) - ) - (i32.ne - (local.get $ja) - (i32.const -1) - ) - ) - ) - (block - (local.set $U - (i32.load - (i32.const 1688) - ) - ) - (local.set $e - (i32.and - (i32.add - (i32.sub - (local.get $ca) - (local.get $ka) - ) - (local.get $U) - ) - (i32.sub - (i32.const 0) - (local.get $U) - ) - ) - ) - (if - (i32.lt_u - (local.get $e) - (i32.const 2147483647) - ) - (if - (i32.eq - (call $ta - (local.get $e) - ) - (i32.const -1) - ) - (block - (drop - (call $ta - (local.get $$) - ) - ) - (br $label$break$d) - ) - (block - (local.set $ma - (i32.add - (local.get $e) - (local.get $ka) - ) - ) - (br $do-once36) - ) - ) - (local.set $ma - (local.get $ka) - ) - ) - ) - (local.set $ma - (local.get $ka) - ) - ) - ) - (if - (i32.ne - (local.get $ja) - (i32.const -1) - ) - (block - (local.set $ha - (local.get $ja) - ) - (local.set $ia - (local.get $ma) - ) - (local.set $N - (i32.const 191) - ) - (br $label$break$b) - ) - ) - ) - ) - ) - (i32.store - (i32.const 1652) - (i32.or - (i32.load - (i32.const 1652) - ) - (i32.const 4) - ) - ) - (local.set $N - (i32.const 188) - ) - ) - (local.set $N - (i32.const 188) - ) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 188) - ) - (if - (i32.lt_u - (local.get $c) - (i32.const 2147483647) - ) - (block - (local.set $ma - (call $ta - (local.get $c) - ) - ) - (local.set $c - (call $ta - (i32.const 0) - ) - ) - (if - (i32.and - (i32.lt_u - (local.get $ma) - (local.get $c) - ) - (i32.and - (i32.ne - (local.get $ma) - (i32.const -1) - ) - (i32.ne - (local.get $c) - (i32.const -1) - ) - ) - ) - (block - (local.set $ja - (i32.sub - (local.get $c) - (local.get $ma) - ) - ) - (if - (i32.gt_u - (local.get $ja) - (i32.add - (local.get $y) - (i32.const 40) - ) - ) - (block - (local.set $ha - (local.get $ma) - ) - (local.set $ia - (local.get $ja) - ) - (local.set $N - (i32.const 191) - ) - ) - ) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 191) - ) - (block - (local.set $ja - (i32.add - (i32.load - (i32.const 1640) - ) - (local.get $ia) - ) - ) - (i32.store - (i32.const 1640) - (local.get $ja) - ) - (if - (i32.gt_u - (local.get $ja) - (i32.load - (i32.const 1644) - ) - ) - (i32.store - (i32.const 1644) - (local.get $ja) - ) - ) - (local.set $ja - (i32.load - (i32.const 1232) - ) - ) - (block $do-once38 - (if - (i32.eqz - (local.get $ja) - ) - (block - (local.set $ma - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.or - (i32.eq - (local.get $ma) - (i32.const 0) - ) - (i32.lt_u - (local.get $ha) - (local.get $ma) - ) - ) - (i32.store - (i32.const 1224) - (local.get $ha) - ) - ) - (i32.store - (i32.const 1656) - (local.get $ha) - ) - (i32.store - (i32.const 1660) - (local.get $ia) - ) - (i32.store - (i32.const 1668) - (i32.const 0) - ) - (i32.store - (i32.const 1244) - (i32.load - (i32.const 1680) - ) - ) - (i32.store - (i32.const 1240) - (i32.const -1) - ) - (local.set $ma - (i32.const 0) - ) - (loop $do-in - (block $do-out - (local.set $c - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $ma) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $c) - (i32.const 12) - ) - (local.get $c) - ) - (i32.store - (i32.add - (local.get $c) - (i32.const 8) - ) - (local.get $c) - ) - (local.set $ma - (i32.add - (local.get $ma) - (i32.const 1) - ) - ) - (br_if $do-in - (i32.ne - (local.get $ma) - (i32.const 32) - ) - ) - ) - ) - (local.set $ma - (i32.add - (local.get $ha) - (i32.const 8) - ) - ) - (local.set $c - (if (result i32) - (i32.eq - (i32.and - (local.get $ma) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $ma) - ) - (i32.const 7) - ) - ) - ) - (local.set $ma - (i32.add - (local.get $ha) - (local.get $c) - ) - ) - (local.set $ka - (i32.sub - (i32.add - (local.get $ia) - (i32.const -40) - ) - (local.get $c) - ) - ) - (i32.store - (i32.const 1232) - (local.get $ma) - ) - (i32.store - (i32.const 1220) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ma) - (i32.const 4) - ) - (i32.or - (local.get $ka) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (i32.add - (local.get $ma) - (local.get $ka) - ) - (i32.const 4) - ) - (i32.const 40) - ) - (i32.store - (i32.const 1236) - (i32.load - (i32.const 1696) - ) - ) - ) - (block - (local.set $ka - (i32.const 1656) - ) - (loop $do-in41 - (block $do-out40 - (local.set $ma - (i32.load - (local.get $ka) - ) - ) - (local.set $c - (i32.add - (local.get $ka) - (i32.const 4) - ) - ) - (local.set $ca - (i32.load - (local.get $c) - ) - ) - (if - (i32.eq - (local.get $ha) - (i32.add - (local.get $ma) - (local.get $ca) - ) - ) - (block - (local.set $na - (local.get $ma) - ) - (local.set $oa - (local.get $c) - ) - (local.set $pa - (local.get $ca) - ) - (local.set $ra - (local.get $ka) - ) - (local.set $N - (i32.const 201) - ) - (br $do-out40) - ) - ) - (local.set $ka - (i32.load - (i32.add - (local.get $ka) - (i32.const 8) - ) - ) - ) - (br_if $do-in41 - (i32.ne - (local.get $ka) - (i32.const 0) - ) - ) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 201) - ) - (if - (i32.eqz - (i32.and - (i32.load - (i32.add - (local.get $ra) - (i32.const 12) - ) - ) - (i32.const 8) - ) - ) - (if - (i32.and - (i32.lt_u - (local.get $ja) - (local.get $ha) - ) - (i32.ge_u - (local.get $ja) - (local.get $na) - ) - ) - (block - (i32.store - (local.get $oa) - (i32.add - (local.get $pa) - (local.get $ia) - ) - ) - (local.set $ka - (i32.add - (local.get $ja) - (i32.const 8) - ) - ) - (local.set $ca - (if (result i32) - (i32.eq - (i32.and - (local.get $ka) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $ka) - ) - (i32.const 7) - ) - ) - ) - (local.set $ka - (i32.add - (local.get $ja) - (local.get $ca) - ) - ) - (local.set $c - (i32.add - (i32.sub - (local.get $ia) - (local.get $ca) - ) - (i32.load - (i32.const 1220) - ) - ) - ) - (i32.store - (i32.const 1232) - (local.get $ka) - ) - (i32.store - (i32.const 1220) - (local.get $c) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 4) - ) - (i32.or - (local.get $c) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (i32.add - (local.get $ka) - (local.get $c) - ) - (i32.const 4) - ) - (i32.const 40) - ) - (i32.store - (i32.const 1236) - (i32.load - (i32.const 1696) - ) - ) - (br $do-once38) - ) - ) - ) - ) - (local.set $c - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $ha) - (local.get $c) - ) - (block - (i32.store - (i32.const 1224) - (local.get $ha) - ) - (local.set $sa - (local.get $ha) - ) - ) - (local.set $sa - (local.get $c) - ) - ) - (local.set $c - (i32.add - (local.get $ha) - (local.get $ia) - ) - ) - (local.set $ka - (i32.const 1656) - ) - (loop $while-in43 - (block $while-out42 - (if - (i32.eq - (i32.load - (local.get $ka) - ) - (local.get $c) - ) - (block - (local.set $ua - (local.get $ka) - ) - (local.set $va - (local.get $ka) - ) - (local.set $N - (i32.const 209) - ) - (br $while-out42) - ) - ) - (local.set $ka - (i32.load - (i32.add - (local.get $ka) - (i32.const 8) - ) - ) - ) - (if - (i32.eqz - (local.get $ka) - ) - (block - (local.set $wa - (i32.const 1656) - ) - (br $while-out42) - ) - ) - (br $while-in43) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 209) - ) - (if - (i32.eqz - (i32.and - (i32.load - (i32.add - (local.get $va) - (i32.const 12) - ) - ) - (i32.const 8) - ) - ) - (block - (i32.store - (local.get $ua) - (local.get $ha) - ) - (local.set $ka - (i32.add - (local.get $va) - (i32.const 4) - ) - ) - (i32.store - (local.get $ka) - (i32.add - (i32.load - (local.get $ka) - ) - (local.get $ia) - ) - ) - (local.set $ka - (i32.add - (local.get $ha) - (i32.const 8) - ) - ) - (local.set $ca - (i32.add - (local.get $ha) - (if (result i32) - (i32.eq - (i32.and - (local.get $ka) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $ka) - ) - (i32.const 7) - ) - ) - ) - ) - (local.set $ka - (i32.add - (local.get $c) - (i32.const 8) - ) - ) - (local.set $ma - (i32.add - (local.get $c) - (if (result i32) - (i32.eq - (i32.and - (local.get $ka) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $ka) - ) - (i32.const 7) - ) - ) - ) - ) - (local.set $ka - (i32.add - (local.get $ca) - (local.get $y) - ) - ) - (local.set $ea - (i32.sub - (i32.sub - (local.get $ma) - (local.get $ca) - ) - (local.get $y) - ) - ) - (i32.store - (i32.add - (local.get $ca) - (i32.const 4) - ) - (i32.or - (local.get $y) - (i32.const 3) - ) - ) - (block $do-once44 - (if - (i32.eq - (local.get $ma) - (local.get $ja) - ) - (block - (local.set $la - (i32.add - (i32.load - (i32.const 1220) - ) - (local.get $ea) - ) - ) - (i32.store - (i32.const 1220) - (local.get $la) - ) - (i32.store - (i32.const 1232) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 4) - ) - (i32.or - (local.get $la) - (i32.const 1) - ) - ) - ) - (block - (if - (i32.eq - (local.get $ma) - (i32.load - (i32.const 1228) - ) - ) - (block - (local.set $la - (i32.add - (i32.load - (i32.const 1216) - ) - (local.get $ea) - ) - ) - (i32.store - (i32.const 1216) - (local.get $la) - ) - (i32.store - (i32.const 1228) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 4) - ) - (i32.or - (local.get $la) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $ka) - (local.get $la) - ) - (local.get $la) - ) - (br $do-once44) - ) - ) - (local.set $la - (i32.load - (i32.add - (local.get $ma) - (i32.const 4) - ) - ) - ) - (if - (i32.eq - (i32.and - (local.get $la) - (i32.const 3) - ) - (i32.const 1) - ) - (block - (local.set $ga - (i32.and - (local.get $la) - (i32.const -8) - ) - ) - (local.set $fa - (i32.shr_u - (local.get $la) - (i32.const 3) - ) - ) - (block $label$break$e - (if - (i32.lt_u - (local.get $la) - (i32.const 256) - ) - (block - (local.set $da - (i32.load - (i32.add - (local.get $ma) - (i32.const 8) - ) - ) - ) - (local.set $V - (i32.load - (i32.add - (local.get $ma) - (i32.const 12) - ) - ) - ) - (local.set $$ - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $fa) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (block $do-once47 - (if - (i32.ne - (local.get $da) - (local.get $$) - ) - (block - (if - (i32.lt_u - (local.get $da) - (local.get $sa) - ) - (call $qa) - ) - (if - (i32.eq - (i32.load - (i32.add - (local.get $da) - (i32.const 12) - ) - ) - (local.get $ma) - ) - (br $do-once47) - ) - (call $qa) - ) - ) - ) - (if - (i32.eq - (local.get $V) - (local.get $da) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (i32.load - (i32.const 1208) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $fa) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$e) - ) - ) - (block $do-once49 - (if - (i32.eq - (local.get $V) - (local.get $$) - ) - (local.set $xa - (i32.add - (local.get $V) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $V) - (local.get $sa) - ) - (call $qa) - ) - (local.set $e - (i32.add - (local.get $V) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $e) - ) - (local.get $ma) - ) - (block - (local.set $xa - (local.get $e) - ) - (br $do-once49) - ) - ) - (call $qa) - ) - ) - ) - (i32.store - (i32.add - (local.get $da) - (i32.const 12) - ) - (local.get $V) - ) - (i32.store - (local.get $xa) - (local.get $da) - ) - ) - (block - (local.set $$ - (i32.load - (i32.add - (local.get $ma) - (i32.const 24) - ) - ) - ) - (local.set $e - (i32.load - (i32.add - (local.get $ma) - (i32.const 12) - ) - ) - ) - (block $do-once51 - (if - (i32.eq - (local.get $e) - (local.get $ma) - ) - (block - (local.set $U - (i32.add - (local.get $ma) - (i32.const 16) - ) - ) - (local.set $aa - (i32.add - (local.get $U) - (i32.const 4) - ) - ) - (local.set $ba - (i32.load - (local.get $aa) - ) - ) - (if - (i32.eqz - (local.get $ba) - ) - (block - (local.set $W - (i32.load - (local.get $U) - ) - ) - (if - (i32.eqz - (local.get $W) - ) - (block - (local.set $ya - (i32.const 0) - ) - (br $do-once51) - ) - (block - (local.set $za - (local.get $W) - ) - (local.set $Aa - (local.get $U) - ) - ) - ) - ) - (block - (local.set $za - (local.get $ba) - ) - (local.set $Aa - (local.get $aa) - ) - ) - ) - (loop $while-in54 - (block $while-out53 - (local.set $aa - (i32.add - (local.get $za) - (i32.const 20) - ) - ) - (local.set $ba - (i32.load - (local.get $aa) - ) - ) - (if - (local.get $ba) - (block - (local.set $za - (local.get $ba) - ) - (local.set $Aa - (local.get $aa) - ) - (br $while-in54) - ) - ) - (local.set $aa - (i32.add - (local.get $za) - (i32.const 16) - ) - ) - (local.set $ba - (i32.load - (local.get $aa) - ) - ) - (if - (i32.eqz - (local.get $ba) - ) - (block - (local.set $Ba - (local.get $za) - ) - (local.set $Ca - (local.get $Aa) - ) - (br $while-out53) - ) - (block - (local.set $za - (local.get $ba) - ) - (local.set $Aa - (local.get $aa) - ) - ) - ) - (br $while-in54) - ) - ) - (if - (i32.lt_u - (local.get $Ca) - (local.get $sa) - ) - (call $qa) - (block - (i32.store - (local.get $Ca) - (i32.const 0) - ) - (local.set $ya - (local.get $Ba) - ) - (br $do-once51) - ) - ) - ) - (block - (local.set $aa - (i32.load - (i32.add - (local.get $ma) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $aa) - (local.get $sa) - ) - (call $qa) - ) - (local.set $ba - (i32.add - (local.get $aa) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $ba) - ) - (local.get $ma) - ) - (call $qa) - ) - (local.set $U - (i32.add - (local.get $e) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $U) - ) - (local.get $ma) - ) - (block - (i32.store - (local.get $ba) - (local.get $e) - ) - (i32.store - (local.get $U) - (local.get $aa) - ) - (local.set $ya - (local.get $e) - ) - (br $do-once51) - ) - (call $qa) - ) - ) - ) - ) - (if - (i32.eqz - (local.get $$) - ) - (br $label$break$e) - ) - (local.set $e - (i32.load - (i32.add - (local.get $ma) - (i32.const 28) - ) - ) - ) - (local.set $da - (i32.add - (i32.const 1512) - (i32.shl - (local.get $e) - (i32.const 2) - ) - ) - ) - (block $do-once55 - (if - (i32.eq - (local.get $ma) - (i32.load - (local.get $da) - ) - ) - (block - (i32.store - (local.get $da) - (local.get $ya) - ) - (if - (local.get $ya) - (br $do-once55) - ) - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $e) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$e) - ) - (block - (if - (i32.lt_u - (local.get $$) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $V - (i32.add - (local.get $$) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $V) - ) - (local.get $ma) - ) - (i32.store - (local.get $V) - (local.get $ya) - ) - (i32.store - (i32.add - (local.get $$) - (i32.const 20) - ) - (local.get $ya) - ) - ) - (if - (i32.eqz - (local.get $ya) - ) - (br $label$break$e) - ) - ) - ) - ) - (local.set $e - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $ya) - (local.get $e) - ) - (call $qa) - ) - (i32.store - (i32.add - (local.get $ya) - (i32.const 24) - ) - (local.get $$) - ) - (local.set $da - (i32.add - (local.get $ma) - (i32.const 16) - ) - ) - (local.set $V - (i32.load - (local.get $da) - ) - ) - (block $do-once57 - (if - (local.get $V) - (if - (i32.lt_u - (local.get $V) - (local.get $e) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $ya) - (i32.const 16) - ) - (local.get $V) - ) - (i32.store - (i32.add - (local.get $V) - (i32.const 24) - ) - (local.get $ya) - ) - (br $do-once57) - ) - ) - ) - ) - (local.set $V - (i32.load - (i32.add - (local.get $da) - (i32.const 4) - ) - ) - ) - (if - (i32.eqz - (local.get $V) - ) - (br $label$break$e) - ) - (if - (i32.lt_u - (local.get $V) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $ya) - (i32.const 20) - ) - (local.get $V) - ) - (i32.store - (i32.add - (local.get $V) - (i32.const 24) - ) - (local.get $ya) - ) - (br $label$break$e) - ) - ) - ) - ) - ) - (local.set $Da - (i32.add - (local.get $ma) - (local.get $ga) - ) - ) - (local.set $Ea - (i32.add - (local.get $ga) - (local.get $ea) - ) - ) - ) - (block - (local.set $Da - (local.get $ma) - ) - (local.set $Ea - (local.get $ea) - ) - ) - ) - (local.set $fa - (i32.add - (local.get $Da) - (i32.const 4) - ) - ) - (i32.store - (local.get $fa) - (i32.and - (i32.load - (local.get $fa) - ) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 4) - ) - (i32.or - (local.get $Ea) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $ka) - (local.get $Ea) - ) - (local.get $Ea) - ) - (local.set $fa - (i32.shr_u - (local.get $Ea) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $Ea) - (i32.const 256) - ) - (block - (local.set $la - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $fa) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $V - (i32.load - (i32.const 1208) - ) - ) - (local.set $e - (i32.shl - (i32.const 1) - (local.get $fa) - ) - ) - (block $do-once59 - (if - (i32.eqz - (i32.and - (local.get $V) - (local.get $e) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $V) - (local.get $e) - ) - ) - (local.set $Fa - (i32.add - (local.get $la) - (i32.const 8) - ) - ) - (local.set $Ga - (local.get $la) - ) - ) - (block - (local.set $fa - (i32.add - (local.get $la) - (i32.const 8) - ) - ) - (local.set $$ - (i32.load - (local.get $fa) - ) - ) - (if - (i32.ge_u - (local.get $$) - (i32.load - (i32.const 1224) - ) - ) - (block - (local.set $Fa - (local.get $fa) - ) - (local.set $Ga - (local.get $$) - ) - (br $do-once59) - ) - ) - (call $qa) - ) - ) - ) - (i32.store - (local.get $Fa) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $Ga) - (i32.const 12) - ) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 8) - ) - (local.get $Ga) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 12) - ) - (local.get $la) - ) - (br $do-once44) - ) - ) - (local.set $e - (i32.shr_u - (local.get $Ea) - (i32.const 8) - ) - ) - (block $do-once61 - (if - (i32.eqz - (local.get $e) - ) - (local.set $Ha - (i32.const 0) - ) - (block - (if - (i32.gt_u - (local.get $Ea) - (i32.const 16777215) - ) - (block - (local.set $Ha - (i32.const 31) - ) - (br $do-once61) - ) - ) - (local.set $V - (i32.and - (i32.shr_u - (i32.add - (local.get $e) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $ga - (i32.shl - (local.get $e) - (local.get $V) - ) - ) - (local.set $$ - (i32.and - (i32.shr_u - (i32.add - (local.get $ga) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $fa - (i32.shl - (local.get $ga) - (local.get $$) - ) - ) - (local.set $ga - (i32.and - (i32.shr_u - (i32.add - (local.get $fa) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $aa - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $$) - (local.get $V) - ) - (local.get $ga) - ) - ) - (i32.shr_u - (i32.shl - (local.get $fa) - (local.get $ga) - ) - (i32.const 15) - ) - ) - ) - (local.set $Ha - (i32.or - (i32.and - (i32.shr_u - (local.get $Ea) - (i32.add - (local.get $aa) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $aa) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.set $e - (i32.add - (i32.const 1512) - (i32.shl - (local.get $Ha) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 28) - ) - (local.get $Ha) - ) - (local.set $la - (i32.add - (local.get $ka) - (i32.const 16) - ) - ) - (i32.store - (i32.add - (local.get $la) - (i32.const 4) - ) - (i32.const 0) - ) - (i32.store - (local.get $la) - (i32.const 0) - ) - (local.set $la - (i32.load - (i32.const 1212) - ) - ) - (local.set $aa - (i32.shl - (i32.const 1) - (local.get $Ha) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $la) - (local.get $aa) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $la) - (local.get $aa) - ) - ) - (i32.store - (local.get $e) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 24) - ) - (local.get $e) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 12) - ) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 8) - ) - (local.get $ka) - ) - (br $do-once44) - ) - ) - (local.set $aa - (i32.shl - (local.get $Ea) - (if (result i32) - (i32.eq - (local.get $Ha) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $Ha) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $la - (i32.load - (local.get $e) - ) - ) - (loop $while-in64 - (block $while-out63 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $la) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $Ea) - ) - (block - (local.set $Ia - (local.get $la) - ) - (local.set $N - (i32.const 279) - ) - (br $while-out63) - ) - ) - (local.set $e - (i32.add - (i32.add - (local.get $la) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $aa) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $ga - (i32.load - (local.get $e) - ) - ) - (if - (i32.eqz - (local.get $ga) - ) - (block - (local.set $Ja - (local.get $e) - ) - (local.set $Ka - (local.get $la) - ) - (local.set $N - (i32.const 276) - ) - (br $while-out63) - ) - (block - (local.set $aa - (i32.shl - (local.get $aa) - (i32.const 1) - ) - ) - (local.set $la - (local.get $ga) - ) - ) - ) - (br $while-in64) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 276) - ) - (if - (i32.lt_u - (local.get $Ja) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $Ja) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 24) - ) - (local.get $Ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 12) - ) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 8) - ) - (local.get $ka) - ) - (br $do-once44) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 279) - ) - (block - (local.set $la - (i32.add - (local.get $Ia) - (i32.const 8) - ) - ) - (local.set $aa - (i32.load - (local.get $la) - ) - ) - (local.set $ga - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $aa) - (local.get $ga) - ) - (i32.ge_u - (local.get $Ia) - (local.get $ga) - ) - ) - (block - (i32.store - (i32.add - (local.get $aa) - (i32.const 12) - ) - (local.get $ka) - ) - (i32.store - (local.get $la) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 8) - ) - (local.get $aa) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 12) - ) - (local.get $Ia) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once44) - ) - (call $qa) - ) - ) - ) - ) - ) - ) - ) - (local.set $p - (i32.add - (local.get $ca) - (i32.const 8) - ) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - (local.set $wa - (i32.const 1656) - ) - ) - ) - (loop $while-in66 - (block $while-out65 - (local.set $ka - (i32.load - (local.get $wa) - ) - ) - (if - (i32.le_u - (local.get $ka) - (local.get $ja) - ) - (block - (local.set $ea - (i32.add - (local.get $ka) - (i32.load - (i32.add - (local.get $wa) - (i32.const 4) - ) - ) - ) - ) - (if - (i32.gt_u - (local.get $ea) - (local.get $ja) - ) - (block - (local.set $La - (local.get $ea) - ) - (br $while-out65) - ) - ) - ) - ) - (local.set $wa - (i32.load - (i32.add - (local.get $wa) - (i32.const 8) - ) - ) - ) - (br $while-in66) - ) - ) - (local.set $ca - (i32.add - (local.get $La) - (i32.const -47) - ) - ) - (local.set $ea - (i32.add - (local.get $ca) - (i32.const 8) - ) - ) - (local.set $ka - (i32.add - (local.get $ca) - (if (result i32) - (i32.eq - (i32.and - (local.get $ea) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $ea) - ) - (i32.const 7) - ) - ) - ) - ) - (local.set $ea - (i32.add - (local.get $ja) - (i32.const 16) - ) - ) - (local.set $ca - (if (result i32) - (i32.lt_u - (local.get $ka) - (local.get $ea) - ) - (local.get $ja) - (local.get $ka) - ) - ) - (local.set $ka - (i32.add - (local.get $ca) - (i32.const 8) - ) - ) - (local.set $ma - (i32.add - (local.get $ha) - (i32.const 8) - ) - ) - (local.set $c - (if (result i32) - (i32.eq - (i32.and - (local.get $ma) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $ma) - ) - (i32.const 7) - ) - ) - ) - (local.set $ma - (i32.add - (local.get $ha) - (local.get $c) - ) - ) - (local.set $aa - (i32.sub - (i32.add - (local.get $ia) - (i32.const -40) - ) - (local.get $c) - ) - ) - (i32.store - (i32.const 1232) - (local.get $ma) - ) - (i32.store - (i32.const 1220) - (local.get $aa) - ) - (i32.store - (i32.add - (local.get $ma) - (i32.const 4) - ) - (i32.or - (local.get $aa) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (i32.add - (local.get $ma) - (local.get $aa) - ) - (i32.const 4) - ) - (i32.const 40) - ) - (i32.store - (i32.const 1236) - (i32.load - (i32.const 1696) - ) - ) - (local.set $aa - (i32.add - (local.get $ca) - (i32.const 4) - ) - ) - (i32.store - (local.get $aa) - (i32.const 27) - ) - (i32.store - (local.get $ka) - (i32.load - (i32.const 1656) - ) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 4) - ) - (i32.load - (i32.const 1660) - ) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 8) - ) - (i32.load - (i32.const 1664) - ) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 12) - ) - (i32.load - (i32.const 1668) - ) - ) - (i32.store - (i32.const 1656) - (local.get $ha) - ) - (i32.store - (i32.const 1660) - (local.get $ia) - ) - (i32.store - (i32.const 1668) - (i32.const 0) - ) - (i32.store - (i32.const 1664) - (local.get $ka) - ) - (local.set $ka - (i32.add - (local.get $ca) - (i32.const 24) - ) - ) - (loop $do-in68 - (block $do-out67 - (local.set $ka - (i32.add - (local.get $ka) - (i32.const 4) - ) - ) - (i32.store - (local.get $ka) - (i32.const 7) - ) - (br_if $do-in68 - (i32.lt_u - (i32.add - (local.get $ka) - (i32.const 4) - ) - (local.get $La) - ) - ) - ) - ) - (if - (i32.ne - (local.get $ca) - (local.get $ja) - ) - (block - (local.set $ka - (i32.sub - (local.get $ca) - (local.get $ja) - ) - ) - (i32.store - (local.get $aa) - (i32.and - (i32.load - (local.get $aa) - ) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 4) - ) - (i32.or - (local.get $ka) - (i32.const 1) - ) - ) - (i32.store - (local.get $ca) - (local.get $ka) - ) - (local.set $ma - (i32.shr_u - (local.get $ka) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $ka) - (i32.const 256) - ) - (block - (local.set $c - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $ma) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $la - (i32.load - (i32.const 1208) - ) - ) - (local.set $ga - (i32.shl - (i32.const 1) - (local.get $ma) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $la) - (local.get $ga) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $la) - (local.get $ga) - ) - ) - (local.set $Ma - (i32.add - (local.get $c) - (i32.const 8) - ) - ) - (local.set $Na - (local.get $c) - ) - ) - (block - (local.set $ga - (i32.add - (local.get $c) - (i32.const 8) - ) - ) - (local.set $la - (i32.load - (local.get $ga) - ) - ) - (if - (i32.lt_u - (local.get $la) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $Ma - (local.get $ga) - ) - (local.set $Na - (local.get $la) - ) - ) - ) - ) - ) - (i32.store - (local.get $Ma) - (local.get $ja) - ) - (i32.store - (i32.add - (local.get $Na) - (i32.const 12) - ) - (local.get $ja) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 8) - ) - (local.get $Na) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 12) - ) - (local.get $c) - ) - (br $do-once38) - ) - ) - (local.set $c - (i32.shr_u - (local.get $ka) - (i32.const 8) - ) - ) - (if - (i32.eqz - (local.get $c) - ) - (local.set $Oa - (i32.const 0) - ) - (if - (i32.gt_u - (local.get $ka) - (i32.const 16777215) - ) - (local.set $Oa - (i32.const 31) - ) - (block - (local.set $la - (i32.and - (i32.shr_u - (i32.add - (local.get $c) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $ga - (i32.shl - (local.get $c) - (local.get $la) - ) - ) - (local.set $c - (i32.and - (i32.shr_u - (i32.add - (local.get $ga) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $ma - (i32.shl - (local.get $ga) - (local.get $c) - ) - ) - (local.set $ga - (i32.and - (i32.shr_u - (i32.add - (local.get $ma) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $e - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $c) - (local.get $la) - ) - (local.get $ga) - ) - ) - (i32.shr_u - (i32.shl - (local.get $ma) - (local.get $ga) - ) - (i32.const 15) - ) - ) - ) - (local.set $Oa - (i32.or - (i32.and - (i32.shr_u - (local.get $ka) - (i32.add - (local.get $e) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $e) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.set $e - (i32.add - (i32.const 1512) - (i32.shl - (local.get $Oa) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 28) - ) - (local.get $Oa) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 20) - ) - (i32.const 0) - ) - (i32.store - (local.get $ea) - (i32.const 0) - ) - (local.set $ga - (i32.load - (i32.const 1212) - ) - ) - (local.set $ma - (i32.shl - (i32.const 1) - (local.get $Oa) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $ga) - (local.get $ma) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $ga) - (local.get $ma) - ) - ) - (i32.store - (local.get $e) - (local.get $ja) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 24) - ) - (local.get $e) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 12) - ) - (local.get $ja) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 8) - ) - (local.get $ja) - ) - (br $do-once38) - ) - ) - (local.set $ma - (i32.shl - (local.get $ka) - (if (result i32) - (i32.eq - (local.get $Oa) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $Oa) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $ga - (i32.load - (local.get $e) - ) - ) - (loop $while-in70 - (block $while-out69 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $ga) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $ka) - ) - (block - (local.set $Pa - (local.get $ga) - ) - (local.set $N - (i32.const 305) - ) - (br $while-out69) - ) - ) - (local.set $e - (i32.add - (i32.add - (local.get $ga) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $ma) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $la - (i32.load - (local.get $e) - ) - ) - (if - (i32.eqz - (local.get $la) - ) - (block - (local.set $Ra - (local.get $e) - ) - (local.set $Sa - (local.get $ga) - ) - (local.set $N - (i32.const 302) - ) - (br $while-out69) - ) - (block - (local.set $ma - (i32.shl - (local.get $ma) - (i32.const 1) - ) - ) - (local.set $ga - (local.get $la) - ) - ) - ) - (br $while-in70) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 302) - ) - (if - (i32.lt_u - (local.get $Ra) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $Ra) - (local.get $ja) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 24) - ) - (local.get $Sa) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 12) - ) - (local.get $ja) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 8) - ) - (local.get $ja) - ) - (br $do-once38) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 305) - ) - (block - (local.set $ga - (i32.add - (local.get $Pa) - (i32.const 8) - ) - ) - (local.set $ma - (i32.load - (local.get $ga) - ) - ) - (local.set $ka - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $ma) - (local.get $ka) - ) - (i32.ge_u - (local.get $Pa) - (local.get $ka) - ) - ) - (block - (i32.store - (i32.add - (local.get $ma) - (i32.const 12) - ) - (local.get $ja) - ) - (i32.store - (local.get $ga) - (local.get $ja) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 8) - ) - (local.get $ma) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 12) - ) - (local.get $Pa) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once38) - ) - (call $qa) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (local.set $ja - (i32.load - (i32.const 1220) - ) - ) - (if - (i32.gt_u - (local.get $ja) - (local.get $y) - ) - (block - (local.set $Pa - (i32.sub - (local.get $ja) - (local.get $y) - ) - ) - (i32.store - (i32.const 1220) - (local.get $Pa) - ) - (local.set $ja - (i32.load - (i32.const 1232) - ) - ) - (local.set $N - (i32.add - (local.get $ja) - (local.get $y) - ) - ) - (i32.store - (i32.const 1232) - (local.get $N) - ) - (i32.store - (i32.add - (local.get $N) - (i32.const 4) - ) - (i32.or - (local.get $Pa) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 4) - ) - (i32.or - (local.get $y) - (i32.const 3) - ) - ) - (local.set $p - (i32.add - (local.get $ja) - (i32.const 8) - ) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - ) - ) - (local.set $ja - (call $Qa) - ) - (i32.store - (local.get $ja) - (i32.const 12) - ) - (local.set $p - (i32.const 0) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - (func $fb (; 14 ;) (param $a i32) - (local $b i32) - (local $c i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local $i i32) - (local $j i32) - (local $l i32) - (local $m i32) - (local $n i32) - (local $o i32) - (local $p i32) - (local $q i32) - (local $r i32) - (local $s i32) - (local $t i32) - (local $u i32) - (local $v i32) - (local $w i32) - (local $x i32) - (local $y i32) - (local $z i32) - (local $A i32) - (local $B i32) - (local $C i32) - (local $D i32) - (local $E i32) - (local $F i32) - (local $G i32) - (local $H i32) - (local $I i32) - (local $J i32) - (local $K i32) - (local $L i32) - (if - (i32.eqz - (local.get $a) - ) - (return) - ) - (local.set $b - (i32.add - (local.get $a) - (i32.const -8) - ) - ) - (local.set $c - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $b) - (local.get $c) - ) - (call $qa) - ) - (local.set $d - (i32.load - (i32.add - (local.get $a) - (i32.const -4) - ) - ) - ) - (local.set $a - (i32.and - (local.get $d) - (i32.const 3) - ) - ) - (if - (i32.eq - (local.get $a) - (i32.const 1) - ) - (call $qa) - ) - (local.set $e - (i32.and - (local.get $d) - (i32.const -8) - ) - ) - (local.set $f - (i32.add - (local.get $b) - (local.get $e) - ) - ) - (block $do-once - (if - (i32.eqz - (i32.and - (local.get $d) - (i32.const 1) - ) - ) - (block - (local.set $g - (i32.load - (local.get $b) - ) - ) - (if - (i32.eqz - (local.get $a) - ) - (return) - ) - (local.set $h - (i32.add - (local.get $b) - (i32.sub - (i32.const 0) - (local.get $g) - ) - ) - ) - (local.set $i - (i32.add - (local.get $g) - (local.get $e) - ) - ) - (if - (i32.lt_u - (local.get $h) - (local.get $c) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $h) - (i32.load - (i32.const 1228) - ) - ) - (block - (local.set $j - (i32.add - (local.get $f) - (i32.const 4) - ) - ) - (local.set $l - (i32.load - (local.get $j) - ) - ) - (if - (i32.ne - (i32.and - (local.get $l) - (i32.const 3) - ) - (i32.const 3) - ) - (block - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - (br $do-once) - ) - ) - (i32.store - (i32.const 1216) - (local.get $i) - ) - (i32.store - (local.get $j) - (i32.and - (local.get $l) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $h) - (i32.const 4) - ) - (i32.or - (local.get $i) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $h) - (local.get $i) - ) - (local.get $i) - ) - (return) - ) - ) - (local.set $l - (i32.shr_u - (local.get $g) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $g) - (i32.const 256) - ) - (block - (local.set $g - (i32.load - (i32.add - (local.get $h) - (i32.const 8) - ) - ) - ) - (local.set $j - (i32.load - (i32.add - (local.get $h) - (i32.const 12) - ) - ) - ) - (local.set $o - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $l) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (if - (i32.ne - (local.get $g) - (local.get $o) - ) - (block - (if - (i32.lt_u - (local.get $g) - (local.get $c) - ) - (call $qa) - ) - (if - (i32.ne - (i32.load - (i32.add - (local.get $g) - (i32.const 12) - ) - ) - (local.get $h) - ) - (call $qa) - ) - ) - ) - (if - (i32.eq - (local.get $j) - (local.get $g) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (i32.load - (i32.const 1208) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $l) - ) - (i32.const -1) - ) - ) - ) - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - (br $do-once) - ) - ) - (if - (i32.eq - (local.get $j) - (local.get $o) - ) - (local.set $p - (i32.add - (local.get $j) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $j) - (local.get $c) - ) - (call $qa) - ) - (local.set $o - (i32.add - (local.get $j) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $o) - ) - (local.get $h) - ) - (local.set $p - (local.get $o) - ) - (call $qa) - ) - ) - ) - (i32.store - (i32.add - (local.get $g) - (i32.const 12) - ) - (local.get $j) - ) - (i32.store - (local.get $p) - (local.get $g) - ) - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - (br $do-once) - ) - ) - (local.set $g - (i32.load - (i32.add - (local.get $h) - (i32.const 24) - ) - ) - ) - (local.set $j - (i32.load - (i32.add - (local.get $h) - (i32.const 12) - ) - ) - ) - (block $do-once0 - (if - (i32.eq - (local.get $j) - (local.get $h) - ) - (block - (local.set $o - (i32.add - (local.get $h) - (i32.const 16) - ) - ) - (local.set $l - (i32.add - (local.get $o) - (i32.const 4) - ) - ) - (local.set $q - (i32.load - (local.get $l) - ) - ) - (if - (i32.eqz - (local.get $q) - ) - (block - (local.set $r - (i32.load - (local.get $o) - ) - ) - (if - (i32.eqz - (local.get $r) - ) - (block - (local.set $s - (i32.const 0) - ) - (br $do-once0) - ) - (block - (local.set $t - (local.get $r) - ) - (local.set $u - (local.get $o) - ) - ) - ) - ) - (block - (local.set $t - (local.get $q) - ) - (local.set $u - (local.get $l) - ) - ) - ) - (loop $while-in - (block $while-out - (local.set $l - (i32.add - (local.get $t) - (i32.const 20) - ) - ) - (local.set $q - (i32.load - (local.get $l) - ) - ) - (if - (local.get $q) - (block - (local.set $t - (local.get $q) - ) - (local.set $u - (local.get $l) - ) - (br $while-in) - ) - ) - (local.set $l - (i32.add - (local.get $t) - (i32.const 16) - ) - ) - (local.set $q - (i32.load - (local.get $l) - ) - ) - (if - (i32.eqz - (local.get $q) - ) - (block - (local.set $v - (local.get $t) - ) - (local.set $w - (local.get $u) - ) - (br $while-out) - ) - (block - (local.set $t - (local.get $q) - ) - (local.set $u - (local.get $l) - ) - ) - ) - (br $while-in) - ) - ) - (if - (i32.lt_u - (local.get $w) - (local.get $c) - ) - (call $qa) - (block - (i32.store - (local.get $w) - (i32.const 0) - ) - (local.set $s - (local.get $v) - ) - (br $do-once0) - ) - ) - ) - (block - (local.set $l - (i32.load - (i32.add - (local.get $h) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $l) - (local.get $c) - ) - (call $qa) - ) - (local.set $q - (i32.add - (local.get $l) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $q) - ) - (local.get $h) - ) - (call $qa) - ) - (local.set $o - (i32.add - (local.get $j) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $o) - ) - (local.get $h) - ) - (block - (i32.store - (local.get $q) - (local.get $j) - ) - (i32.store - (local.get $o) - (local.get $l) - ) - (local.set $s - (local.get $j) - ) - (br $do-once0) - ) - (call $qa) - ) - ) - ) - ) - (if - (i32.eqz - (local.get $g) - ) - (block - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - ) - (block - (local.set $j - (i32.load - (i32.add - (local.get $h) - (i32.const 28) - ) - ) - ) - (local.set $l - (i32.add - (i32.const 1512) - (i32.shl - (local.get $j) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $h) - (i32.load - (local.get $l) - ) - ) - (block - (i32.store - (local.get $l) - (local.get $s) - ) - (if - (i32.eqz - (local.get $s) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $j) - ) - (i32.const -1) - ) - ) - ) - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - (br $do-once) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $g) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $j - (i32.add - (local.get $g) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $j) - ) - (local.get $h) - ) - (i32.store - (local.get $j) - (local.get $s) - ) - (i32.store - (i32.add - (local.get $g) - (i32.const 20) - ) - (local.get $s) - ) - ) - (if - (i32.eqz - (local.get $s) - ) - (block - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - (br $do-once) - ) - ) - ) - ) - (local.set $j - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $s) - (local.get $j) - ) - (call $qa) - ) - (i32.store - (i32.add - (local.get $s) - (i32.const 24) - ) - (local.get $g) - ) - (local.set $l - (i32.add - (local.get $h) - (i32.const 16) - ) - ) - (local.set $o - (i32.load - (local.get $l) - ) - ) - (block $do-once2 - (if - (local.get $o) - (if - (i32.lt_u - (local.get $o) - (local.get $j) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $s) - (i32.const 16) - ) - (local.get $o) - ) - (i32.store - (i32.add - (local.get $o) - (i32.const 24) - ) - (local.get $s) - ) - (br $do-once2) - ) - ) - ) - ) - (local.set $o - (i32.load - (i32.add - (local.get $l) - (i32.const 4) - ) - ) - ) - (if - (i32.eqz - (local.get $o) - ) - (block - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - ) - (if - (i32.lt_u - (local.get $o) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $s) - (i32.const 20) - ) - (local.get $o) - ) - (i32.store - (i32.add - (local.get $o) - (i32.const 24) - ) - (local.get $s) - ) - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - (br $do-once) - ) - ) - ) - ) - ) - ) - (block - (local.set $m - (local.get $b) - ) - (local.set $n - (local.get $e) - ) - ) - ) - ) - (if - (i32.ge_u - (local.get $m) - (local.get $f) - ) - (call $qa) - ) - (local.set $e - (i32.add - (local.get $f) - (i32.const 4) - ) - ) - (local.set $b - (i32.load - (local.get $e) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $b) - (i32.const 1) - ) - ) - (call $qa) - ) - (if - (i32.eqz - (i32.and - (local.get $b) - (i32.const 2) - ) - ) - (block - (if - (i32.eq - (local.get $f) - (i32.load - (i32.const 1232) - ) - ) - (block - (local.set $s - (i32.add - (i32.load - (i32.const 1220) - ) - (local.get $n) - ) - ) - (i32.store - (i32.const 1220) - (local.get $s) - ) - (i32.store - (i32.const 1232) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 4) - ) - (i32.or - (local.get $s) - (i32.const 1) - ) - ) - (if - (i32.ne - (local.get $m) - (i32.load - (i32.const 1228) - ) - ) - (return) - ) - (i32.store - (i32.const 1228) - (i32.const 0) - ) - (i32.store - (i32.const 1216) - (i32.const 0) - ) - (return) - ) - ) - (if - (i32.eq - (local.get $f) - (i32.load - (i32.const 1228) - ) - ) - (block - (local.set $s - (i32.add - (i32.load - (i32.const 1216) - ) - (local.get $n) - ) - ) - (i32.store - (i32.const 1216) - (local.get $s) - ) - (i32.store - (i32.const 1228) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 4) - ) - (i32.or - (local.get $s) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $m) - (local.get $s) - ) - (local.get $s) - ) - (return) - ) - ) - (local.set $s - (i32.add - (i32.and - (local.get $b) - (i32.const -8) - ) - (local.get $n) - ) - ) - (local.set $c - (i32.shr_u - (local.get $b) - (i32.const 3) - ) - ) - (block $do-once4 - (if - (i32.lt_u - (local.get $b) - (i32.const 256) - ) - (block - (local.set $v - (i32.load - (i32.add - (local.get $f) - (i32.const 8) - ) - ) - ) - (local.set $w - (i32.load - (i32.add - (local.get $f) - (i32.const 12) - ) - ) - ) - (local.set $u - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $c) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (if - (i32.ne - (local.get $v) - (local.get $u) - ) - (block - (if - (i32.lt_u - (local.get $v) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.ne - (i32.load - (i32.add - (local.get $v) - (i32.const 12) - ) - ) - (local.get $f) - ) - (call $qa) - ) - ) - ) - (if - (i32.eq - (local.get $w) - (local.get $v) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (i32.load - (i32.const 1208) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $c) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - (if - (i32.eq - (local.get $w) - (local.get $u) - ) - (local.set $x - (i32.add - (local.get $w) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $w) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $u - (i32.add - (local.get $w) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $u) - ) - (local.get $f) - ) - (local.set $x - (local.get $u) - ) - (call $qa) - ) - ) - ) - (i32.store - (i32.add - (local.get $v) - (i32.const 12) - ) - (local.get $w) - ) - (i32.store - (local.get $x) - (local.get $v) - ) - ) - (block - (local.set $v - (i32.load - (i32.add - (local.get $f) - (i32.const 24) - ) - ) - ) - (local.set $w - (i32.load - (i32.add - (local.get $f) - (i32.const 12) - ) - ) - ) - (block $do-once6 - (if - (i32.eq - (local.get $w) - (local.get $f) - ) - (block - (local.set $u - (i32.add - (local.get $f) - (i32.const 16) - ) - ) - (local.set $t - (i32.add - (local.get $u) - (i32.const 4) - ) - ) - (local.set $p - (i32.load - (local.get $t) - ) - ) - (if - (i32.eqz - (local.get $p) - ) - (block - (local.set $a - (i32.load - (local.get $u) - ) - ) - (if - (i32.eqz - (local.get $a) - ) - (block - (local.set $y - (i32.const 0) - ) - (br $do-once6) - ) - (block - (local.set $z - (local.get $a) - ) - (local.set $A - (local.get $u) - ) - ) - ) - ) - (block - (local.set $z - (local.get $p) - ) - (local.set $A - (local.get $t) - ) - ) - ) - (loop $while-in9 - (block $while-out8 - (local.set $t - (i32.add - (local.get $z) - (i32.const 20) - ) - ) - (local.set $p - (i32.load - (local.get $t) - ) - ) - (if - (local.get $p) - (block - (local.set $z - (local.get $p) - ) - (local.set $A - (local.get $t) - ) - (br $while-in9) - ) - ) - (local.set $t - (i32.add - (local.get $z) - (i32.const 16) - ) - ) - (local.set $p - (i32.load - (local.get $t) - ) - ) - (if - (i32.eqz - (local.get $p) - ) - (block - (local.set $B - (local.get $z) - ) - (local.set $C - (local.get $A) - ) - (br $while-out8) - ) - (block - (local.set $z - (local.get $p) - ) - (local.set $A - (local.get $t) - ) - ) - ) - (br $while-in9) - ) - ) - (if - (i32.lt_u - (local.get $C) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $C) - (i32.const 0) - ) - (local.set $y - (local.get $B) - ) - (br $do-once6) - ) - ) - ) - (block - (local.set $t - (i32.load - (i32.add - (local.get $f) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $t) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $p - (i32.add - (local.get $t) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $p) - ) - (local.get $f) - ) - (call $qa) - ) - (local.set $u - (i32.add - (local.get $w) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $u) - ) - (local.get $f) - ) - (block - (i32.store - (local.get $p) - (local.get $w) - ) - (i32.store - (local.get $u) - (local.get $t) - ) - (local.set $y - (local.get $w) - ) - (br $do-once6) - ) - (call $qa) - ) - ) - ) - ) - (if - (local.get $v) - (block - (local.set $w - (i32.load - (i32.add - (local.get $f) - (i32.const 28) - ) - ) - ) - (local.set $i - (i32.add - (i32.const 1512) - (i32.shl - (local.get $w) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $f) - (i32.load - (local.get $i) - ) - ) - (block - (i32.store - (local.get $i) - (local.get $y) - ) - (if - (i32.eqz - (local.get $y) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $w) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $v) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $w - (i32.add - (local.get $v) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $w) - ) - (local.get $f) - ) - (i32.store - (local.get $w) - (local.get $y) - ) - (i32.store - (i32.add - (local.get $v) - (i32.const 20) - ) - (local.get $y) - ) - ) - (if - (i32.eqz - (local.get $y) - ) - (br $do-once4) - ) - ) - ) - (local.set $w - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $y) - (local.get $w) - ) - (call $qa) - ) - (i32.store - (i32.add - (local.get $y) - (i32.const 24) - ) - (local.get $v) - ) - (local.set $i - (i32.add - (local.get $f) - (i32.const 16) - ) - ) - (local.set $h - (i32.load - (local.get $i) - ) - ) - (block $do-once10 - (if - (local.get $h) - (if - (i32.lt_u - (local.get $h) - (local.get $w) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $y) - (i32.const 16) - ) - (local.get $h) - ) - (i32.store - (i32.add - (local.get $h) - (i32.const 24) - ) - (local.get $y) - ) - (br $do-once10) - ) - ) - ) - ) - (local.set $h - (i32.load - (i32.add - (local.get $i) - (i32.const 4) - ) - ) - ) - (if - (local.get $h) - (if - (i32.lt_u - (local.get $h) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $y) - (i32.const 20) - ) - (local.get $h) - ) - (i32.store - (i32.add - (local.get $h) - (i32.const 24) - ) - (local.get $y) - ) - (br $do-once4) - ) - ) - ) - ) - ) - ) - ) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 4) - ) - (i32.or - (local.get $s) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $m) - (local.get $s) - ) - (local.get $s) - ) - (if - (i32.eq - (local.get $m) - (i32.load - (i32.const 1228) - ) - ) - (block - (i32.store - (i32.const 1216) - (local.get $s) - ) - (return) - ) - (local.set $D - (local.get $s) - ) - ) - ) - (block - (i32.store - (local.get $e) - (i32.and - (local.get $b) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 4) - ) - (i32.or - (local.get $n) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $m) - (local.get $n) - ) - (local.get $n) - ) - (local.set $D - (local.get $n) - ) - ) - ) - (local.set $n - (i32.shr_u - (local.get $D) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $D) - (i32.const 256) - ) - (block - (local.set $b - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $n) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $e - (i32.load - (i32.const 1208) - ) - ) - (local.set $s - (i32.shl - (i32.const 1) - (local.get $n) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $e) - (local.get $s) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $e) - (local.get $s) - ) - ) - (local.set $E - (i32.add - (local.get $b) - (i32.const 8) - ) - ) - (local.set $F - (local.get $b) - ) - ) - (block - (local.set $s - (i32.add - (local.get $b) - (i32.const 8) - ) - ) - (local.set $e - (i32.load - (local.get $s) - ) - ) - (if - (i32.lt_u - (local.get $e) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $E - (local.get $s) - ) - (local.set $F - (local.get $e) - ) - ) - ) - ) - ) - (i32.store - (local.get $E) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $F) - (i32.const 12) - ) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 8) - ) - (local.get $F) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 12) - ) - (local.get $b) - ) - (return) - ) - ) - (local.set $b - (i32.shr_u - (local.get $D) - (i32.const 8) - ) - ) - (if - (i32.eqz - (local.get $b) - ) - (local.set $G - (i32.const 0) - ) - (if - (i32.gt_u - (local.get $D) - (i32.const 16777215) - ) - (local.set $G - (i32.const 31) - ) - (block - (local.set $F - (i32.and - (i32.shr_u - (i32.add - (local.get $b) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $E - (i32.shl - (local.get $b) - (local.get $F) - ) - ) - (local.set $b - (i32.and - (i32.shr_u - (i32.add - (local.get $E) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $e - (i32.shl - (local.get $E) - (local.get $b) - ) - ) - (local.set $E - (i32.and - (i32.shr_u - (i32.add - (local.get $e) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $s - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $b) - (local.get $F) - ) - (local.get $E) - ) - ) - (i32.shr_u - (i32.shl - (local.get $e) - (local.get $E) - ) - (i32.const 15) - ) - ) - ) - (local.set $G - (i32.or - (i32.and - (i32.shr_u - (local.get $D) - (i32.add - (local.get $s) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $s) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.set $s - (i32.add - (i32.const 1512) - (i32.shl - (local.get $G) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 28) - ) - (local.get $G) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 20) - ) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 16) - ) - (i32.const 0) - ) - (local.set $E - (i32.load - (i32.const 1212) - ) - ) - (local.set $e - (i32.shl - (i32.const 1) - (local.get $G) - ) - ) - (block $do-once12 - (if - (i32.eqz - (i32.and - (local.get $E) - (local.get $e) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $E) - (local.get $e) - ) - ) - (i32.store - (local.get $s) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 24) - ) - (local.get $s) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 12) - ) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 8) - ) - (local.get $m) - ) - ) - (block - (local.set $F - (i32.shl - (local.get $D) - (if (result i32) - (i32.eq - (local.get $G) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $G) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $b - (i32.load - (local.get $s) - ) - ) - (loop $while-in15 - (block $while-out14 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $b) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $D) - ) - (block - (local.set $H - (local.get $b) - ) - (local.set $I - (i32.const 130) - ) - (br $while-out14) - ) - ) - (local.set $n - (i32.add - (i32.add - (local.get $b) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $F) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $y - (i32.load - (local.get $n) - ) - ) - (if - (i32.eqz - (local.get $y) - ) - (block - (local.set $J - (local.get $n) - ) - (local.set $K - (local.get $b) - ) - (local.set $I - (i32.const 127) - ) - (br $while-out14) - ) - (block - (local.set $F - (i32.shl - (local.get $F) - (i32.const 1) - ) - ) - (local.set $b - (local.get $y) - ) - ) - ) - (br $while-in15) - ) - ) - (if - (i32.eq - (local.get $I) - (i32.const 127) - ) - (if - (i32.lt_u - (local.get $J) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $J) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 24) - ) - (local.get $K) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 12) - ) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 8) - ) - (local.get $m) - ) - (br $do-once12) - ) - ) - (if - (i32.eq - (local.get $I) - (i32.const 130) - ) - (block - (local.set $b - (i32.add - (local.get $H) - (i32.const 8) - ) - ) - (local.set $F - (i32.load - (local.get $b) - ) - ) - (local.set $i - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $F) - (local.get $i) - ) - (i32.ge_u - (local.get $H) - (local.get $i) - ) - ) - (block - (i32.store - (i32.add - (local.get $F) - (i32.const 12) - ) - (local.get $m) - ) - (i32.store - (local.get $b) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 8) - ) - (local.get $F) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 12) - ) - (local.get $H) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once12) - ) - (call $qa) - ) - ) - ) - ) - ) - ) - ) - (local.set $m - (i32.add - (i32.load - (i32.const 1240) - ) - (i32.const -1) - ) - ) - (i32.store - (i32.const 1240) - (local.get $m) - ) - (if - (i32.eqz - (local.get $m) - ) - (local.set $L - (i32.const 1664) - ) - (return) - ) - (loop $while-in17 - (block $while-out16 - (local.set $m - (i32.load - (local.get $L) - ) - ) - (if - (i32.eqz - (local.get $m) - ) - (br $while-out16) - (local.set $L - (i32.add - (local.get $m) - (i32.const 8) - ) - ) - ) - (br $while-in17) - ) - ) - (i32.store - (i32.const 1240) - (i32.const -1) - ) - (return) - ) - (func $Ra (; 15 ;) (param $a i32) (param $b i32) (param $c i32) (result i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local $i i32) - (local $j i32) - (local $l i32) - (local $m i32) - (local $n i32) - (local $o i32) - (local $p i32) - (local $q i32) - (local $s i32) - (local $t i32) - (local $u i32) - (local $v i32) - (local $w i32) - (local $x i32) - (local $y i32) - (local $z i32) - (local.set $d - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 48) - ) - ) - (local.set $e - (i32.add - (local.get $d) - (i32.const 16) - ) - ) - (local.set $f - (local.get $d) - ) - (local.set $g - (i32.add - (local.get $d) - (i32.const 32) - ) - ) - (local.set $h - (i32.add - (local.get $a) - (i32.const 28) - ) - ) - (local.set $i - (i32.load - (local.get $h) - ) - ) - (i32.store - (local.get $g) - (local.get $i) - ) - (local.set $j - (i32.add - (local.get $a) - (i32.const 20) - ) - ) - (local.set $l - (i32.sub - (i32.load - (local.get $j) - ) - (local.get $i) - ) - ) - (i32.store - (i32.add - (local.get $g) - (i32.const 4) - ) - (local.get $l) - ) - (i32.store - (i32.add - (local.get $g) - (i32.const 8) - ) - (local.get $b) - ) - (i32.store - (i32.add - (local.get $g) - (i32.const 12) - ) - (local.get $c) - ) - (local.set $b - (i32.add - (local.get $a) - (i32.const 60) - ) - ) - (local.set $i - (i32.add - (local.get $a) - (i32.const 44) - ) - ) - (local.set $m - (local.get $g) - ) - (local.set $g - (i32.const 2) - ) - (local.set $n - (i32.add - (local.get $l) - (local.get $c) - ) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.load - (i32.const 1160) - ) - ) - (block - (i32.store - (local.get $e) - (i32.load - (local.get $b) - ) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 4) - ) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 8) - ) - (local.get $g) - ) - (local.set $o - (call $Pa - (call $ya - (i32.const 146) - (local.get $e) - ) - ) - ) - ) - (block - (call $ra - (i32.const 1) - (local.get $a) - ) - (i32.store - (local.get $f) - (i32.load - (local.get $b) - ) - ) - (i32.store - (i32.add - (local.get $f) - (i32.const 4) - ) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $f) - (i32.const 8) - ) - (local.get $g) - ) - (local.set $l - (call $Pa - (call $ya - (i32.const 146) - (local.get $f) - ) - ) - ) - (call $oa - (i32.const 0) - ) - (local.set $o - (local.get $l) - ) - ) - ) - (if - (i32.eq - (local.get $n) - (local.get $o) - ) - (block - (local.set $p - (i32.const 6) - ) - (br $while-out) - ) - ) - (if - (i32.lt_s - (local.get $o) - (i32.const 0) - ) - (block - (local.set $q - (local.get $m) - ) - (local.set $s - (local.get $g) - ) - (local.set $p - (i32.const 8) - ) - (br $while-out) - ) - ) - (local.set $l - (i32.sub - (local.get $n) - (local.get $o) - ) - ) - (local.set $t - (i32.load - (i32.add - (local.get $m) - (i32.const 4) - ) - ) - ) - (if - (i32.gt_u - (local.get $o) - (local.get $t) - ) - (block - (local.set $u - (i32.load - (local.get $i) - ) - ) - (i32.store - (local.get $h) - (local.get $u) - ) - (i32.store - (local.get $j) - (local.get $u) - ) - (local.set $v - (i32.load - (i32.add - (local.get $m) - (i32.const 12) - ) - ) - ) - (local.set $w - (i32.sub - (local.get $o) - (local.get $t) - ) - ) - (local.set $x - (i32.add - (local.get $m) - (i32.const 8) - ) - ) - (local.set $y - (i32.add - (local.get $g) - (i32.const -1) - ) - ) - ) - (if - (i32.eq - (local.get $g) - (i32.const 2) - ) - (block - (i32.store - (local.get $h) - (i32.add - (i32.load - (local.get $h) - ) - (local.get $o) - ) - ) - (local.set $v - (local.get $t) - ) - (local.set $w - (local.get $o) - ) - (local.set $x - (local.get $m) - ) - (local.set $y - (i32.const 2) - ) - ) - (block - (local.set $v - (local.get $t) - ) - (local.set $w - (local.get $o) - ) - (local.set $x - (local.get $m) - ) - (local.set $y - (local.get $g) - ) - ) - ) - ) - (i32.store - (local.get $x) - (i32.add - (i32.load - (local.get $x) - ) - (local.get $w) - ) - ) - (i32.store - (i32.add - (local.get $x) - (i32.const 4) - ) - (i32.sub - (local.get $v) - (local.get $w) - ) - ) - (local.set $m - (local.get $x) - ) - (local.set $g - (local.get $y) - ) - (local.set $n - (local.get $l) - ) - (br $while-in) - ) - ) - (if - (i32.eq - (local.get $p) - (i32.const 6) - ) - (block - (local.set $n - (i32.load - (local.get $i) - ) - ) - (i32.store - (i32.add - (local.get $a) - (i32.const 16) - ) - (i32.add - (local.get $n) - (i32.load - (i32.add - (local.get $a) - (i32.const 48) - ) - ) - ) - ) - (local.set $i - (local.get $n) - ) - (i32.store - (local.get $h) - (local.get $i) - ) - (i32.store - (local.get $j) - (local.get $i) - ) - (local.set $z - (local.get $c) - ) - ) - (if - (i32.eq - (local.get $p) - (i32.const 8) - ) - (block - (i32.store - (i32.add - (local.get $a) - (i32.const 16) - ) - (i32.const 0) - ) - (i32.store - (local.get $h) - (i32.const 0) - ) - (i32.store - (local.get $j) - (i32.const 0) - ) - (i32.store - (local.get $a) - (i32.or - (i32.load - (local.get $a) - ) - (i32.const 32) - ) - ) - (if - (i32.eq - (local.get $s) - (i32.const 2) - ) - (local.set $z - (i32.const 0) - ) - (local.set $z - (i32.sub - (local.get $c) - (i32.load - (i32.add - (local.get $q) - (i32.const 4) - ) - ) - ) - ) - ) - ) - ) - ) - (global.set $r - (local.get $d) - ) - (return - (local.get $z) - ) - ) - (func $Wa (; 16 ;) (param $a i32) (param $b i32) (param $c i32) (result i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local $j i32) - (local $l i32) - (local $m i32) - (local $n i32) - (local $o i32) - (local $p i32) - (local $q i32) - (local.set $d - (i32.add - (local.get $c) - (i32.const 16) - ) - ) - (local.set $e - (i32.load - (local.get $d) - ) - ) - (if - (i32.eqz - (local.get $e) - ) - (if - (i32.eqz - (call $Xa - (local.get $c) - ) - ) - (block - (local.set $f - (i32.load - (local.get $d) - ) - ) - (local.set $g - (i32.const 5) - ) - ) - (local.set $h - (i32.const 0) - ) - ) - (block - (local.set $f - (local.get $e) - ) - (local.set $g - (i32.const 5) - ) - ) - ) - (block $label$break$a - (if - (i32.eq - (local.get $g) - (i32.const 5) - ) - (block - (local.set $e - (i32.add - (local.get $c) - (i32.const 20) - ) - ) - (local.set $d - (i32.load - (local.get $e) - ) - ) - (local.set $j - (local.get $d) - ) - (if - (i32.lt_u - (i32.sub - (local.get $f) - (local.get $d) - ) - (local.get $b) - ) - (block - (local.set $h - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $c) - (local.get $a) - (local.get $b) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $c) - (i32.const 36) - ) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - (br $label$break$a) - ) - ) - (block $label$break$b - (if - (i32.gt_s - (i32.load8_s - (i32.add - (local.get $c) - (i32.const 75) - ) - ) - (i32.const -1) - ) - (block - (local.set $d - (local.get $b) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (local.get $d) - ) - (block - (local.set $l - (local.get $b) - ) - (local.set $m - (local.get $a) - ) - (local.set $n - (local.get $j) - ) - (local.set $o - (i32.const 0) - ) - (br $label$break$b) - ) - ) - (local.set $p - (i32.add - (local.get $d) - (i32.const -1) - ) - ) - (if - (i32.eq - (i32.load8_s - (i32.add - (local.get $a) - (local.get $p) - ) - ) - (i32.const 10) - ) - (block - (local.set $q - (local.get $d) - ) - (br $while-out) - ) - (local.set $d - (local.get $p) - ) - ) - (br $while-in) - ) - ) - (if - (i32.lt_u - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $c) - (local.get $a) - (local.get $q) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $c) - (i32.const 36) - ) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - (local.get $q) - ) - (block - (local.set $h - (local.get $q) - ) - (br $label$break$a) - ) - ) - (local.set $l - (i32.sub - (local.get $b) - (local.get $q) - ) - ) - (local.set $m - (i32.add - (local.get $a) - (local.get $q) - ) - ) - (local.set $n - (i32.load - (local.get $e) - ) - ) - (local.set $o - (local.get $q) - ) - ) - (block - (local.set $l - (local.get $b) - ) - (local.set $m - (local.get $a) - ) - (local.set $n - (local.get $j) - ) - (local.set $o - (i32.const 0) - ) - ) - ) - ) - (drop - (call $jb - (local.get $n) - (local.get $m) - (local.get $l) - ) - ) - (i32.store - (local.get $e) - (i32.add - (i32.load - (local.get $e) - ) - (local.get $l) - ) - ) - (local.set $h - (i32.add - (local.get $o) - (local.get $l) - ) - ) - ) - ) - ) - (return - (local.get $h) - ) - ) - (func $Za (; 17 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local $j i32) - (local $l i32) - (local $m i32) - (local.set $b - (local.get $a) - ) - (block $label$break$a - (if - (i32.eqz - (i32.and - (local.get $b) - (i32.const 3) - ) - ) - (block - (local.set $c - (local.get $a) - ) - (local.set $d - (i32.const 4) - ) - ) - (block - (local.set $e - (local.get $a) - ) - (local.set $f - (local.get $b) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.load8_s - (local.get $e) - ) - ) - (block - (local.set $g - (local.get $f) - ) - (br $label$break$a) - ) - ) - (local.set $h - (i32.add - (local.get $e) - (i32.const 1) - ) - ) - (local.set $f - (local.get $h) - ) - (if - (i32.eqz - (i32.and - (local.get $f) - (i32.const 3) - ) - ) - (block - (local.set $c - (local.get $h) - ) - (local.set $d - (i32.const 4) - ) - (br $while-out) - ) - (local.set $e - (local.get $h) - ) - ) - (br $while-in) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $d) - (i32.const 4) - ) - (block - (local.set $d - (local.get $c) - ) - (loop $while-in1 - (block $while-out0 - (local.set $c - (i32.load - (local.get $d) - ) - ) - (if - (i32.eqz - (i32.and - (i32.xor - (i32.and - (local.get $c) - (i32.const -2139062144) - ) - (i32.const -2139062144) - ) - (i32.add - (local.get $c) - (i32.const -16843009) - ) - ) - ) - (local.set $d - (i32.add - (local.get $d) - (i32.const 4) - ) - ) - (block - (local.set $j - (local.get $c) - ) - (local.set $l - (local.get $d) - ) - (br $while-out0) - ) - ) - (br $while-in1) - ) - ) - (if - (i32.eqz - (i32.shr_s - (i32.shl - (i32.and - (local.get $j) - (i32.const 255) - ) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $m - (local.get $l) - ) - (block - (local.set $j - (local.get $l) - ) - (loop $while-in3 - (block $while-out2 - (local.set $l - (i32.add - (local.get $j) - (i32.const 1) - ) - ) - (if - (i32.eqz - (i32.load8_s - (local.get $l) - ) - ) - (block - (local.set $m - (local.get $l) - ) - (br $while-out2) - ) - (local.set $j - (local.get $l) - ) - ) - (br $while-in3) - ) - ) - ) - ) - (local.set $g - (local.get $m) - ) - ) - ) - (return - (i32.sub - (local.get $g) - (local.get $b) - ) - ) - ) - (func $_a (; 18 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (block $do-once - (if - (i32.eqz - (local.get $a) - ) - (block - (if - (i32.eqz - (i32.load - (i32.const 1140) - ) - ) - (local.set $b - (i32.const 0) - ) - (local.set $b - (call $_a - (i32.load - (i32.const 1140) - ) - ) - ) - ) - (call $pa - (i32.const 1188) - ) - (local.set $c - (i32.load - (i32.const 1184) - ) - ) - (if - (i32.eqz - (local.get $c) - ) - (local.set $d - (local.get $b) - ) - (block - (local.set $e - (local.get $c) - ) - (local.set $c - (local.get $b) - ) - (loop $while-in - (block $while-out - (if - (i32.gt_s - (i32.load - (i32.add - (local.get $e) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (local.set $f - (call $Ya - (local.get $e) - ) - ) - (local.set $f - (i32.const 0) - ) - ) - (if - (i32.gt_u - (i32.load - (i32.add - (local.get $e) - (i32.const 20) - ) - ) - (i32.load - (i32.add - (local.get $e) - (i32.const 28) - ) - ) - ) - (local.set $g - (i32.or - (call $$a - (local.get $e) - ) - (local.get $c) - ) - ) - (local.set $g - (local.get $c) - ) - ) - (if - (local.get $f) - (call $Ta - (local.get $e) - ) - ) - (local.set $e - (i32.load - (i32.add - (local.get $e) - (i32.const 56) - ) - ) - ) - (if - (i32.eqz - (local.get $e) - ) - (block - (local.set $d - (local.get $g) - ) - (br $while-out) - ) - (local.set $c - (local.get $g) - ) - ) - (br $while-in) - ) - ) - ) - ) - (call $xa - (i32.const 1188) - ) - (local.set $h - (local.get $d) - ) - ) - (block - (if - (i32.le_s - (i32.load - (i32.add - (local.get $a) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (block - (local.set $h - (call $$a - (local.get $a) - ) - ) - (br $do-once) - ) - ) - (local.set $c - (i32.eq - (call $Ya - (local.get $a) - ) - (i32.const 0) - ) - ) - (local.set $e - (call $$a - (local.get $a) - ) - ) - (if - (local.get $c) - (local.set $h - (local.get $e) - ) - (block - (call $Ta - (local.get $a) - ) - (local.set $h - (local.get $e) - ) - ) - ) - ) - ) - ) - (return - (local.get $h) - ) - ) - (func $ab (; 19 ;) (param $a i32) (param $b i32) (result i32) - (local $c i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local $j i32) - (local $m i32) - (local $n i32) - (local.set $c - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 16) - ) - ) - (local.set $d - (local.get $c) - ) - (local.set $e - (i32.and - (local.get $b) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $d) - (local.get $e) - ) - (local.set $f - (i32.add - (local.get $a) - (i32.const 16) - ) - ) - (local.set $g - (i32.load - (local.get $f) - ) - ) - (if - (i32.eqz - (local.get $g) - ) - (if - (i32.eqz - (call $Xa - (local.get $a) - ) - ) - (block - (local.set $h - (i32.load - (local.get $f) - ) - ) - (local.set $j - (i32.const 4) - ) - ) - (local.set $m - (i32.const -1) - ) - ) - (block - (local.set $h - (local.get $g) - ) - (local.set $j - (i32.const 4) - ) - ) - ) - (block $do-once - (if - (i32.eq - (local.get $j) - (i32.const 4) - ) - (block - (local.set $g - (i32.add - (local.get $a) - (i32.const 20) - ) - ) - (local.set $f - (i32.load - (local.get $g) - ) - ) - (if - (i32.lt_u - (local.get $f) - (local.get $h) - ) - (block - (local.set $n - (i32.and - (local.get $b) - (i32.const 255) - ) - ) - (if - (i32.ne - (local.get $n) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 75) - ) - ) - ) - (block - (i32.store - (local.get $g) - (i32.add - (local.get $f) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $f) - (local.get $e) - ) - (local.set $m - (local.get $n) - ) - (br $do-once) - ) - ) - ) - ) - (if - (i32.eq - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $a) - (local.get $d) - (i32.const 1) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $a) - (i32.const 36) - ) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - (i32.const 1) - ) - (local.set $m - (i32.load8_u - (local.get $d) - ) - ) - (local.set $m - (i32.const -1) - ) - ) - ) - ) - ) - (global.set $r - (local.get $c) - ) - (return - (local.get $m) - ) - ) - (func $$a (; 20 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local.set $b - (i32.add - (local.get $a) - (i32.const 20) - ) - ) - (local.set $c - (i32.add - (local.get $a) - (i32.const 28) - ) - ) - (if - (i32.gt_u - (i32.load - (local.get $b) - ) - (i32.load - (local.get $c) - ) - ) - (block - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $a) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $a) - (i32.const 36) - ) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - (if - (i32.eqz - (i32.load - (local.get $b) - ) - ) - (local.set $d - (i32.const -1) - ) - (local.set $e - (i32.const 3) - ) - ) - ) - (local.set $e - (i32.const 3) - ) - ) - (if - (i32.eq - (local.get $e) - (i32.const 3) - ) - (block - (local.set $e - (i32.add - (local.get $a) - (i32.const 4) - ) - ) - (local.set $f - (i32.load - (local.get $e) - ) - ) - (local.set $g - (i32.add - (local.get $a) - (i32.const 8) - ) - ) - (local.set $h - (i32.load - (local.get $g) - ) - ) - (if - (i32.lt_u - (local.get $f) - (local.get $h) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $a) - (i32.sub - (local.get $f) - (local.get $h) - ) - (i32.const 1) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $a) - (i32.const 40) - ) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.store - (i32.add - (local.get $a) - (i32.const 16) - ) - (i32.const 0) - ) - (i32.store - (local.get $c) - (i32.const 0) - ) - (i32.store - (local.get $b) - (i32.const 0) - ) - (i32.store - (local.get $g) - (i32.const 0) - ) - (i32.store - (local.get $e) - (i32.const 0) - ) - (local.set $d - (i32.const 0) - ) - ) - ) - (return - (local.get $d) - ) - ) - (func $jb (; 21 ;) (param $a i32) (param $b i32) (param $c i32) (result i32) - (local $d i32) - (if - (i32.ge_s - (local.get $c) - (i32.const 4096) - ) - (return - (call $va - (local.get $a) - (local.get $b) - (local.get $c) - ) - ) - ) - (local.set $d - (local.get $a) - ) - (if - (i32.eq - (i32.and - (local.get $a) - (i32.const 3) - ) - (i32.and - (local.get $b) - (i32.const 3) - ) - ) - (block - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.and - (local.get $a) - (i32.const 3) - ) - ) - (br $while-out) - ) - (block - (if - (i32.eqz - (local.get $c) - ) - (return - (local.get $d) - ) - ) - (i32.store8 - (local.get $a) - (i32.load8_s - (local.get $b) - ) - ) - (local.set $a - (i32.add - (local.get $a) - (i32.const 1) - ) - ) - (local.set $b - (i32.add - (local.get $b) - (i32.const 1) - ) - ) - (local.set $c - (i32.sub - (local.get $c) - (i32.const 1) - ) - ) - ) - (br $while-in) - ) - ) - (loop $while-in1 - (block $while-out0 - (if - (i32.eqz - (i32.ge_s - (local.get $c) - (i32.const 4) - ) - ) - (br $while-out0) - ) - (block - (i32.store - (local.get $a) - (i32.load - (local.get $b) - ) - ) - (local.set $a - (i32.add - (local.get $a) - (i32.const 4) - ) - ) - (local.set $b - (i32.add - (local.get $b) - (i32.const 4) - ) - ) - (local.set $c - (i32.sub - (local.get $c) - (i32.const 4) - ) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (loop $while-in3 - (block $while-out2 - (if - (i32.eqz - (i32.gt_s - (local.get $c) - (i32.const 0) - ) - ) - (br $while-out2) - ) - (block - (i32.store8 - (local.get $a) - (i32.load8_s - (local.get $b) - ) - ) - (local.set $a - (i32.add - (local.get $a) - (i32.const 1) - ) - ) - (local.set $b - (i32.add - (local.get $b) - (i32.const 1) - ) - ) - (local.set $c - (i32.sub - (local.get $c) - (i32.const 1) - ) - ) - ) - (br $while-in3) - ) - ) - (return - (local.get $d) - ) - ) - (func $gb (; 22 ;) - (nop) - ) - (func $hb (; 23 ;) (param $a i32) (param $b i32) (param $c i32) (result i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local.set $d - (i32.add - (local.get $a) - (local.get $c) - ) - ) - (if - (i32.ge_s - (local.get $c) - (i32.const 20) - ) - (block - (local.set $b - (i32.and - (local.get $b) - (i32.const 255) - ) - ) - (local.set $e - (i32.and - (local.get $a) - (i32.const 3) - ) - ) - (local.set $f - (i32.or - (i32.or - (i32.or - (local.get $b) - (i32.shl - (local.get $b) - (i32.const 8) - ) - ) - (i32.shl - (local.get $b) - (i32.const 16) - ) - ) - (i32.shl - (local.get $b) - (i32.const 24) - ) - ) - ) - (local.set $g - (i32.and - (local.get $d) - (i32.xor - (i32.const 3) - (i32.const -1) - ) - ) - ) - (if - (local.get $e) - (block - (local.set $e - (i32.sub - (i32.add - (local.get $a) - (i32.const 4) - ) - (local.get $e) - ) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.lt_s - (local.get $a) - (local.get $e) - ) - ) - (br $while-out) - ) - (block - (i32.store8 - (local.get $a) - (local.get $b) - ) - (local.set $a - (i32.add - (local.get $a) - (i32.const 1) - ) - ) - ) - (br $while-in) - ) - ) - ) - ) - (loop $while-in1 - (block $while-out0 - (if - (i32.eqz - (i32.lt_s - (local.get $a) - (local.get $g) - ) - ) - (br $while-out0) - ) - (block - (i32.store - (local.get $a) - (local.get $f) - ) - (local.set $a - (i32.add - (local.get $a) - (i32.const 4) - ) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (loop $while-in3 - (block $while-out2 - (if - (i32.eqz - (i32.lt_s - (local.get $a) - (local.get $d) - ) - ) - (br $while-out2) - ) - (block - (i32.store8 - (local.get $a) - (local.get $b) - ) - (local.set $a - (i32.add - (local.get $a) - (i32.const 1) - ) - ) - ) - (br $while-in3) - ) - ) - (return - (i32.sub - (local.get $a) - (local.get $c) - ) - ) - ) - (func $db (; 24 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local.set $b - (i32.load - (i32.const 1024) - ) - ) - (if - (i32.gt_s - (i32.load - (i32.add - (local.get $b) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (local.set $c - (call $Ya - (local.get $b) - ) - ) - (local.set $c - (i32.const 0) - ) - ) - (block $do-once - (if - (i32.lt_s - (call $cb - (local.get $a) - (local.get $b) - ) - (i32.const 0) - ) - (local.set $d - (i32.const 1) - ) - (block - (if - (i32.ne - (i32.load8_s - (i32.add - (local.get $b) - (i32.const 75) - ) - ) - (i32.const 10) - ) - (block - (local.set $e - (i32.add - (local.get $b) - (i32.const 20) - ) - ) - (local.set $f - (i32.load - (local.get $e) - ) - ) - (if - (i32.lt_u - (local.get $f) - (i32.load - (i32.add - (local.get $b) - (i32.const 16) - ) - ) - ) - (block - (i32.store - (local.get $e) - (i32.add - (local.get $f) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $f) - (i32.const 10) - ) - (local.set $d - (i32.const 0) - ) - (br $do-once) - ) - ) - ) - ) - (local.set $d - (i32.lt_s - (call $ab - (local.get $b) - (i32.const 10) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (if - (local.get $c) - (call $Ta - (local.get $b) - ) - ) - (return - (i32.shr_s - (i32.shl - (local.get $d) - (i32.const 31) - ) - (i32.const 31) - ) - ) - ) - (func $Xa (; 25 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (local $d i32) - (local.set $b - (i32.add - (local.get $a) - (i32.const 74) - ) - ) - (local.set $c - (i32.load8_s - (local.get $b) - ) - ) - (i32.store8 - (local.get $b) - (i32.or - (i32.add - (local.get $c) - (i32.const 255) - ) - (local.get $c) - ) - ) - (local.set $c - (i32.load - (local.get $a) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $c) - (i32.const 8) - ) - ) - (block - (i32.store - (i32.add - (local.get $a) - (i32.const 8) - ) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $a) - (i32.const 4) - ) - (i32.const 0) - ) - (local.set $b - (i32.load - (i32.add - (local.get $a) - (i32.const 44) - ) - ) - ) - (i32.store - (i32.add - (local.get $a) - (i32.const 28) - ) - (local.get $b) - ) - (i32.store - (i32.add - (local.get $a) - (i32.const 20) - ) - (local.get $b) - ) - (i32.store - (i32.add - (local.get $a) - (i32.const 16) - ) - (i32.add - (local.get $b) - (i32.load - (i32.add - (local.get $a) - (i32.const 48) - ) - ) - ) - ) - (local.set $d - (i32.const 0) - ) - ) - (block - (i32.store - (local.get $a) - (i32.or - (local.get $c) - (i32.const 32) - ) - ) - (local.set $d - (i32.const -1) - ) - ) - ) - (return - (local.get $d) - ) - ) - (func $bb (; 26 ;) (param $a i32) (param $b i32) (param $c i32) (param $d i32) (result i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local $i i32) - (local.set $e - (i32.mul - (local.get $c) - (local.get $b) - ) - ) - (if - (i32.gt_s - (i32.load - (i32.add - (local.get $d) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (block - (local.set $f - (i32.eq - (call $Ya - (local.get $d) - ) - (i32.const 0) - ) - ) - (local.set $g - (call $Wa - (local.get $a) - (local.get $e) - (local.get $d) - ) - ) - (if - (local.get $f) - (local.set $h - (local.get $g) - ) - (block - (call $Ta - (local.get $d) - ) - (local.set $h - (local.get $g) - ) - ) - ) - ) - (local.set $h - (call $Wa - (local.get $a) - (local.get $e) - (local.get $d) - ) - ) - ) - (if - (i32.eq - (local.get $h) - (local.get $e) - ) - (local.set $i - (local.get $c) - ) - (local.set $i - (i32.div_u - (local.get $h) - (local.get $b) - ) - ) - ) - (return - (local.get $i) - ) - ) - (func $Ua (; 27 ;) (param $a i32) (param $b i32) (param $c i32) (result i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local.set $d - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 32) - ) - ) - (local.set $e - (local.get $d) - ) - (local.set $f - (i32.add - (local.get $d) - (i32.const 20) - ) - ) - (i32.store - (local.get $e) - (i32.load - (i32.add - (local.get $a) - (i32.const 60) - ) - ) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 4) - ) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 8) - ) - (local.get $b) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 12) - ) - (local.get $f) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 16) - ) - (local.get $c) - ) - (if - (i32.lt_s - (call $Pa - (call $ua - (i32.const 140) - (local.get $e) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (local.get $f) - (i32.const -1) - ) - (local.set $g - (i32.const -1) - ) - ) - (local.set $g - (i32.load - (local.get $f) - ) - ) - ) - (global.set $r - (local.get $d) - ) - (return - (local.get $g) - ) - ) - (func $Va (; 28 ;) (param $a i32) (param $b i32) (param $c i32) (result i32) - (local $d i32) - (local $e i32) - (local.set $d - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 80) - ) - ) - (local.set $e - (local.get $d) - ) - (i32.store - (i32.add - (local.get $a) - (i32.const 36) - ) - (i32.const 3) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $a) - ) - (i32.const 64) - ) - ) - (block - (i32.store - (local.get $e) - (i32.load - (i32.add - (local.get $a) - (i32.const 60) - ) - ) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 4) - ) - (i32.const 21505) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 8) - ) - (i32.add - (local.get $d) - (i32.const 12) - ) - ) - (if - (call $wa - (i32.const 54) - (local.get $e) - ) - (i32.store8 - (i32.add - (local.get $a) - (i32.const 75) - ) - (i32.const -1) - ) - ) - ) - ) - (local.set $e - (call $Ra - (local.get $a) - (local.get $b) - (local.get $c) - ) - ) - (global.set $r - (local.get $d) - ) - (return - (local.get $e) - ) - ) - (func $Ka (; 29 ;) (param $a i32) - (i32.store8 - (global.get $t) - (i32.load8_s - (local.get $a) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 1) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 1) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 2) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 2) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 3) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 3) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 4) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 4) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 5) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 5) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 6) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 6) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 7) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 7) - ) - ) - ) - ) - (func $Oa (; 30 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (local.set $b - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 16) - ) - ) - (local.set $c - (local.get $b) - ) - (i32.store - (local.get $c) - (i32.load - (i32.add - (local.get $a) - (i32.const 60) - ) - ) - ) - (local.set $a - (call $Pa - (call $sa - (i32.const 6) - (local.get $c) - ) - ) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $a) - ) - ) - (func $Pa (; 31 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (if - (i32.gt_u - (local.get $a) - (i32.const -4096) - ) - (block - (local.set $b - (call $Qa) - ) - (i32.store - (local.get $b) - (i32.sub - (i32.const 0) - (local.get $a) - ) - ) - (local.set $c - (i32.const -1) - ) - ) - (local.set $c - (local.get $a) - ) - ) - (return - (local.get $c) - ) - ) - (func $Ja (; 32 ;) (param $a i32) - (i32.store8 - (global.get $t) - (i32.load8_s - (local.get $a) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 1) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 1) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 2) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 2) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 3) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 3) - ) - ) - ) - ) - (func $Qa (; 33 ;) (result i32) - (local $a i32) - (local $b i32) - (if - (i32.eqz - (i32.load - (i32.const 1160) - ) - ) - (local.set $a - (i32.const 1204) - ) - (block - (local.set $b - (i32.add - (call $ib) - (i32.const 64) - ) - ) - (local.set $a - (i32.load - (local.get $b) - ) - ) - ) - ) - (return - (local.get $a) - ) - ) - (func $lb (; 34 ;) (param $a i32) (param $b i32) (param $c i32) (param $d i32) (result i32) - (return - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $b) - (local.get $c) - (local.get $d) - (i32.add - (i32.and - (local.get $a) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - ) - (func $Ea (; 35 ;) (param $a i32) (result i32) - (local $b i32) - (local.set $b - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (local.get $a) - ) - ) - (global.set $r - (i32.and - (i32.add - (global.get $r) - (i32.const 15) - ) - (i32.const -16) - ) - ) - (return - (local.get $b) - ) - ) - (func $cb (; 36 ;) (param $a i32) (param $b i32) (result i32) - (return - (i32.add - (call $bb - (local.get $a) - (call $Za - (local.get $a) - ) - (i32.const 1) - (local.get $b) - ) - (i32.const -1) - ) - ) - ) - (func $ob (; 37 ;) (param $a i32) (param $b i32) (param $c i32) (result i32) - (call $ja - (i32.const 1) - ) - (return - (i32.const 0) - ) - ) - (func $Ia (; 38 ;) (param $a i32) (param $b i32) - (if - (i32.eqz - (global.get $v) - ) - (block - (global.set $v - (local.get $a) - ) - (global.set $w - (local.get $b) - ) - ) - ) - ) - (func $kb (; 39 ;) (param $a i32) (param $b i32) (result i32) - (return - (call_indirect (type $i32_=>_i32) - (local.get $b) - (i32.add - (i32.and - (local.get $a) - (i32.const 1) - ) - (i32.const 0) - ) - ) - ) - ) - (func $Sa (; 40 ;) (param $a i32) - (if - (i32.eqz - (i32.load - (i32.add - (local.get $a) - (i32.const 68) - ) - ) - ) - (call $Ta - (local.get $a) - ) - ) - (return) - ) - (func $mb (; 41 ;) (param $a i32) (param $b i32) - (call_indirect (type $i32_=>_none) - (local.get $b) - (i32.add - (i32.and - (local.get $a) - (i32.const 1) - ) - (i32.const 6) - ) - ) - ) - (func $Ha (; 42 ;) (param $a i32) (param $b i32) - (global.set $r - (local.get $a) - ) - (global.set $s - (local.get $b) - ) - ) - (func $nb (; 43 ;) (param $a i32) (result i32) - (call $ja - (i32.const 0) - ) - (return - (i32.const 0) - ) - ) - (func $Na (; 44 ;) (result i32) - (drop - (call $db - (i32.const 1144) - ) - ) - (return - (i32.const 0) - ) - ) - (func $Ya (; 45 ;) (param $a i32) (result i32) - (return - (i32.const 0) - ) - ) - (func $Ta (; 46 ;) (param $a i32) - (return) - ) - (func $pb (; 47 ;) (param $a i32) - (call $ja - (i32.const 2) - ) - ) - (func $La (; 48 ;) (param $a i32) - (global.set $K - (local.get $a) - ) - ) - (func $Ga (; 49 ;) (param $a i32) - (global.set $r - (local.get $a) - ) - ) - (func $Ma (; 50 ;) (result i32) - (return - (global.get $K) - ) - ) - (func $Fa (; 51 ;) (result i32) - (return - (global.get $r) - ) - ) - (func $ib (; 52 ;) (result i32) - (return - (i32.const 0) - ) - ) -) diff -Nru binaryen-91/test/memorygrowth.fromasm.no-opts binaryen-99/test/memorygrowth.fromasm.no-opts --- binaryen-91/test/memorygrowth.fromasm.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/memorygrowth.fromasm.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,12006 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $none_=>_none (func)) - (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) - (import "env" "memory" (memory $memory 256)) - (import "env" "table" (table $table 8 8 funcref)) - (elem (global.get $__table_base) $nb $Oa $ob $Va $Ua $Ra $pb $Sa) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $r$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $s$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $t$asm2wasm$import i32)) - (import "env" "ABORT" (global $u$asm2wasm$import i32)) - (import "global" "NaN" (global $z$asm2wasm$import f64)) - (import "global" "Infinity" (global $A$asm2wasm$import f64)) - (import "env" "abort" (func $ja (param i32))) - (import "env" "_pthread_cleanup_pop" (func $oa (param i32))) - (import "env" "___lock" (func $pa (param i32))) - (import "env" "_abort" (func $qa)) - (import "env" "_pthread_cleanup_push" (func $ra (param i32 i32))) - (import "env" "___syscall6" (func $sa (param i32 i32) (result i32))) - (import "env" "_sbrk" (func $ta (param i32) (result i32))) - (import "env" "___syscall140" (func $ua (param i32 i32) (result i32))) - (import "env" "_emscripten_memcpy_big" (func $va (param i32 i32 i32) (result i32))) - (import "env" "___syscall54" (func $wa (param i32 i32) (result i32))) - (import "env" "___unlock" (func $xa (param i32))) - (import "env" "___syscall146" (func $ya (param i32 i32) (result i32))) - (global $r (mut i32) (global.get $r$asm2wasm$import)) - (global $s (mut i32) (global.get $s$asm2wasm$import)) - (global $t (mut i32) (global.get $t$asm2wasm$import)) - (global $u (mut i32) (global.get $u$asm2wasm$import)) - (global $v (mut i32) (i32.const 0)) - (global $w (mut i32) (i32.const 0)) - (global $x (mut i32) (i32.const 0)) - (global $y (mut i32) (i32.const 0)) - (global $z (mut f64) (global.get $z$asm2wasm$import)) - (global $A (mut f64) (global.get $A$asm2wasm$import)) - (global $B (mut i32) (i32.const 0)) - (global $C (mut i32) (i32.const 0)) - (global $D (mut i32) (i32.const 0)) - (global $E (mut i32) (i32.const 0)) - (global $F (mut f64) (f64.const 0)) - (global $G (mut i32) (i32.const 0)) - (global $H (mut i32) (i32.const 0)) - (global $I (mut i32) (i32.const 0)) - (global $J (mut f64) (f64.const 0)) - (global $K (mut i32) (i32.const 0)) - (global $L (mut i32) (i32.const 0)) - (global $M (mut i32) (i32.const 0)) - (global $N (mut i32) (i32.const 0)) - (global $O (mut i32) (i32.const 0)) - (global $P (mut i32) (i32.const 0)) - (global $Q (mut i32) (i32.const 0)) - (global $R (mut i32) (i32.const 0)) - (global $S (mut i32) (i32.const 0)) - (global $T (mut i32) (i32.const 0)) - (global $za (mut f64) (f64.const 0)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (export "_free" (func $fb)) - (export "_main" (func $Na)) - (export "_pthread_self" (func $ib)) - (export "_memset" (func $hb)) - (export "_malloc" (func $eb)) - (export "_memcpy" (func $jb)) - (export "_fflush" (func $_a)) - (export "___errno_location" (func $Qa)) - (export "runPostSets" (func $gb)) - (export "stackAlloc" (func $Ea)) - (export "stackSave" (func $Fa)) - (export "stackRestore" (func $Ga)) - (export "establishStackSpace" (func $Ha)) - (export "setThrew" (func $Ia)) - (export "setTempRet0" (func $La)) - (export "getTempRet0" (func $Ma)) - (export "dynCall_ii" (func $kb)) - (export "dynCall_iiii" (func $lb)) - (export "dynCall_vi" (func $mb)) - (func $__growWasmMemory (; 12 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) - (func $eb (; 13 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local $i i32) - (local $j i32) - (local $l i32) - (local $m i32) - (local $n i32) - (local $o i32) - (local $p i32) - (local $q i32) - (local $s i32) - (local $t i32) - (local $u i32) - (local $v i32) - (local $w i32) - (local $x i32) - (local $y i32) - (local $z i32) - (local $A i32) - (local $B i32) - (local $C i32) - (local $D i32) - (local $E i32) - (local $F i32) - (local $G i32) - (local $H i32) - (local $I i32) - (local $J i32) - (local $K i32) - (local $L i32) - (local $M i32) - (local $N i32) - (local $O i32) - (local $P i32) - (local $Q i32) - (local $R i32) - (local $S i32) - (local $T i32) - (local $U i32) - (local $V i32) - (local $W i32) - (local $X i32) - (local $Y i32) - (local $Z i32) - (local $_ i32) - (local $$ i32) - (local $aa i32) - (local $ba i32) - (local $ca i32) - (local $da i32) - (local $ea i32) - (local $fa i32) - (local $ga i32) - (local $ha i32) - (local $ia i32) - (local $ja i32) - (local $ka i32) - (local $la i32) - (local $ma i32) - (local $na i32) - (local $oa i32) - (local $pa i32) - (local $ra i32) - (local $sa i32) - (local $ua i32) - (local $va i32) - (local $wa i32) - (local $xa i32) - (local $ya i32) - (local $za i32) - (local $Aa i32) - (local $Ba i32) - (local $Ca i32) - (local $Da i32) - (local $Ea i32) - (local $Fa i32) - (local $Ga i32) - (local $Ha i32) - (local $Ia i32) - (local $Ja i32) - (local $Ka i32) - (local $La i32) - (local $Ma i32) - (local $Na i32) - (local $Oa i32) - (local $Pa i32) - (local $Ra i32) - (local $Sa i32) - (local.set $b - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 16) - ) - ) - (local.set $c - (local.get $b) - ) - (block $do-once - (if - (i32.lt_u - (local.get $a) - (i32.const 245) - ) - (block - (local.set $d - (if (result i32) - (i32.lt_u - (local.get $a) - (i32.const 11) - ) - (i32.const 16) - (i32.and - (i32.add - (local.get $a) - (i32.const 11) - ) - (i32.const -8) - ) - ) - ) - (local.set $e - (i32.shr_u - (local.get $d) - (i32.const 3) - ) - ) - (local.set $f - (i32.load - (i32.const 1208) - ) - ) - (local.set $g - (i32.shr_u - (local.get $f) - (local.get $e) - ) - ) - (if - (i32.and - (local.get $g) - (i32.const 3) - ) - (block - (local.set $h - (i32.add - (i32.xor - (i32.and - (local.get $g) - (i32.const 1) - ) - (i32.const 1) - ) - (local.get $e) - ) - ) - (local.set $i - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $h) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $j - (i32.add - (local.get $i) - (i32.const 8) - ) - ) - (local.set $l - (i32.load - (local.get $j) - ) - ) - (local.set $m - (i32.add - (local.get $l) - (i32.const 8) - ) - ) - (local.set $n - (i32.load - (local.get $m) - ) - ) - (block $do-once0 - (if - (i32.eq - (local.get $i) - (local.get $n) - ) - (i32.store - (i32.const 1208) - (i32.and - (local.get $f) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $h) - ) - (i32.const -1) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $n) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $o - (i32.add - (local.get $n) - (i32.const 12) - ) - ) - (if - (i32.eq - (i32.load - (local.get $o) - ) - (local.get $l) - ) - (block - (i32.store - (local.get $o) - (local.get $i) - ) - (i32.store - (local.get $j) - (local.get $n) - ) - (br $do-once0) - ) - (call $qa) - ) - ) - ) - ) - (local.set $n - (i32.shl - (local.get $h) - (i32.const 3) - ) - ) - (i32.store - (i32.add - (local.get $l) - (i32.const 4) - ) - (i32.or - (local.get $n) - (i32.const 3) - ) - ) - (local.set $j - (i32.add - (i32.add - (local.get $l) - (local.get $n) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $j) - (i32.or - (i32.load - (local.get $j) - ) - (i32.const 1) - ) - ) - (local.set $p - (local.get $m) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - (local.set $j - (i32.load - (i32.const 1216) - ) - ) - (if - (i32.gt_u - (local.get $d) - (local.get $j) - ) - (block - (if - (local.get $g) - (block - (local.set $n - (i32.shl - (i32.const 2) - (local.get $e) - ) - ) - (local.set $i - (i32.and - (i32.shl - (local.get $g) - (local.get $e) - ) - (i32.or - (local.get $n) - (i32.sub - (i32.const 0) - (local.get $n) - ) - ) - ) - ) - (local.set $n - (i32.add - (i32.and - (local.get $i) - (i32.sub - (i32.const 0) - (local.get $i) - ) - ) - (i32.const -1) - ) - ) - (local.set $i - (i32.and - (i32.shr_u - (local.get $n) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $o - (i32.shr_u - (local.get $n) - (local.get $i) - ) - ) - (local.set $n - (i32.and - (i32.shr_u - (local.get $o) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $q - (i32.shr_u - (local.get $o) - (local.get $n) - ) - ) - (local.set $o - (i32.and - (i32.shr_u - (local.get $q) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $s - (i32.shr_u - (local.get $q) - (local.get $o) - ) - ) - (local.set $q - (i32.and - (i32.shr_u - (local.get $s) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $t - (i32.shr_u - (local.get $s) - (local.get $q) - ) - ) - (local.set $s - (i32.and - (i32.shr_u - (local.get $t) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (local.set $u - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.get $n) - (local.get $i) - ) - (local.get $o) - ) - (local.get $q) - ) - (local.get $s) - ) - (i32.shr_u - (local.get $t) - (local.get $s) - ) - ) - ) - (local.set $s - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $u) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $t - (i32.add - (local.get $s) - (i32.const 8) - ) - ) - (local.set $q - (i32.load - (local.get $t) - ) - ) - (local.set $o - (i32.add - (local.get $q) - (i32.const 8) - ) - ) - (local.set $i - (i32.load - (local.get $o) - ) - ) - (block $do-once2 - (if - (i32.eq - (local.get $s) - (local.get $i) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (local.get $f) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $u) - ) - (i32.const -1) - ) - ) - ) - (local.set $v - (local.get $j) - ) - ) - (block - (if - (i32.lt_u - (local.get $i) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $n - (i32.add - (local.get $i) - (i32.const 12) - ) - ) - (if - (i32.eq - (i32.load - (local.get $n) - ) - (local.get $q) - ) - (block - (i32.store - (local.get $n) - (local.get $s) - ) - (i32.store - (local.get $t) - (local.get $i) - ) - (local.set $v - (i32.load - (i32.const 1216) - ) - ) - (br $do-once2) - ) - (call $qa) - ) - ) - ) - ) - (local.set $i - (i32.sub - (i32.shl - (local.get $u) - (i32.const 3) - ) - (local.get $d) - ) - ) - (i32.store - (i32.add - (local.get $q) - (i32.const 4) - ) - (i32.or - (local.get $d) - (i32.const 3) - ) - ) - (local.set $t - (i32.add - (local.get $q) - (local.get $d) - ) - ) - (i32.store - (i32.add - (local.get $t) - (i32.const 4) - ) - (i32.or - (local.get $i) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $t) - (local.get $i) - ) - (local.get $i) - ) - (if - (local.get $v) - (block - (local.set $s - (i32.load - (i32.const 1228) - ) - ) - (local.set $j - (i32.shr_u - (local.get $v) - (i32.const 3) - ) - ) - (local.set $f - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $j) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $e - (i32.load - (i32.const 1208) - ) - ) - (local.set $g - (i32.shl - (i32.const 1) - (local.get $j) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $e) - (local.get $g) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $e) - (local.get $g) - ) - ) - (local.set $w - (i32.add - (local.get $f) - (i32.const 8) - ) - ) - (local.set $x - (local.get $f) - ) - ) - (block - (local.set $g - (i32.add - (local.get $f) - (i32.const 8) - ) - ) - (local.set $e - (i32.load - (local.get $g) - ) - ) - (if - (i32.lt_u - (local.get $e) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $w - (local.get $g) - ) - (local.set $x - (local.get $e) - ) - ) - ) - ) - ) - (i32.store - (local.get $w) - (local.get $s) - ) - (i32.store - (i32.add - (local.get $x) - (i32.const 12) - ) - (local.get $s) - ) - (i32.store - (i32.add - (local.get $s) - (i32.const 8) - ) - (local.get $x) - ) - (i32.store - (i32.add - (local.get $s) - (i32.const 12) - ) - (local.get $f) - ) - ) - ) - (i32.store - (i32.const 1216) - (local.get $i) - ) - (i32.store - (i32.const 1228) - (local.get $t) - ) - (local.set $p - (local.get $o) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - (local.set $t - (i32.load - (i32.const 1212) - ) - ) - (if - (i32.eqz - (local.get $t) - ) - (local.set $y - (local.get $d) - ) - (block - (local.set $i - (i32.add - (i32.and - (local.get $t) - (i32.sub - (i32.const 0) - (local.get $t) - ) - ) - (i32.const -1) - ) - ) - (local.set $t - (i32.and - (i32.shr_u - (local.get $i) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $f - (i32.shr_u - (local.get $i) - (local.get $t) - ) - ) - (local.set $i - (i32.and - (i32.shr_u - (local.get $f) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $s - (i32.shr_u - (local.get $f) - (local.get $i) - ) - ) - (local.set $f - (i32.and - (i32.shr_u - (local.get $s) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $e - (i32.shr_u - (local.get $s) - (local.get $f) - ) - ) - (local.set $s - (i32.and - (i32.shr_u - (local.get $e) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $g - (i32.shr_u - (local.get $e) - (local.get $s) - ) - ) - (local.set $e - (i32.and - (i32.shr_u - (local.get $g) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (local.set $j - (i32.load - (i32.add - (i32.const 1512) - (i32.shl - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.get $i) - (local.get $t) - ) - (local.get $f) - ) - (local.get $s) - ) - (local.get $e) - ) - (i32.shr_u - (local.get $g) - (local.get $e) - ) - ) - (i32.const 2) - ) - ) - ) - ) - (local.set $e - (i32.sub - (i32.and - (i32.load - (i32.add - (local.get $j) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $d) - ) - ) - (local.set $g - (local.get $j) - ) - (local.set $s - (local.get $j) - ) - (loop $while-in - (block $while-out - (local.set $j - (i32.load - (i32.add - (local.get $g) - (i32.const 16) - ) - ) - ) - (if - (i32.eqz - (local.get $j) - ) - (block - (local.set $f - (i32.load - (i32.add - (local.get $g) - (i32.const 20) - ) - ) - ) - (if - (i32.eqz - (local.get $f) - ) - (block - (local.set $z - (local.get $e) - ) - (local.set $A - (local.get $s) - ) - (br $while-out) - ) - (local.set $B - (local.get $f) - ) - ) - ) - (local.set $B - (local.get $j) - ) - ) - (local.set $j - (i32.sub - (i32.and - (i32.load - (i32.add - (local.get $B) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $d) - ) - ) - (local.set $f - (i32.lt_u - (local.get $j) - (local.get $e) - ) - ) - (local.set $e - (if (result i32) - (local.get $f) - (local.get $j) - (local.get $e) - ) - ) - (local.set $g - (local.get $B) - ) - (local.set $s - (if (result i32) - (local.get $f) - (local.get $B) - (local.get $s) - ) - ) - (br $while-in) - ) - ) - (local.set $s - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $A) - (local.get $s) - ) - (call $qa) - ) - (local.set $g - (i32.add - (local.get $A) - (local.get $d) - ) - ) - (if - (i32.ge_u - (local.get $A) - (local.get $g) - ) - (call $qa) - ) - (local.set $e - (i32.load - (i32.add - (local.get $A) - (i32.const 24) - ) - ) - ) - (local.set $o - (i32.load - (i32.add - (local.get $A) - (i32.const 12) - ) - ) - ) - (block $do-once4 - (if - (i32.eq - (local.get $o) - (local.get $A) - ) - (block - (local.set $q - (i32.add - (local.get $A) - (i32.const 20) - ) - ) - (local.set $u - (i32.load - (local.get $q) - ) - ) - (if - (i32.eqz - (local.get $u) - ) - (block - (local.set $f - (i32.add - (local.get $A) - (i32.const 16) - ) - ) - (local.set $j - (i32.load - (local.get $f) - ) - ) - (if - (i32.eqz - (local.get $j) - ) - (block - (local.set $C - (i32.const 0) - ) - (br $do-once4) - ) - (block - (local.set $D - (local.get $j) - ) - (local.set $E - (local.get $f) - ) - ) - ) - ) - (block - (local.set $D - (local.get $u) - ) - (local.set $E - (local.get $q) - ) - ) - ) - (loop $while-in7 - (block $while-out6 - (local.set $q - (i32.add - (local.get $D) - (i32.const 20) - ) - ) - (local.set $u - (i32.load - (local.get $q) - ) - ) - (if - (local.get $u) - (block - (local.set $D - (local.get $u) - ) - (local.set $E - (local.get $q) - ) - (br $while-in7) - ) - ) - (local.set $q - (i32.add - (local.get $D) - (i32.const 16) - ) - ) - (local.set $u - (i32.load - (local.get $q) - ) - ) - (if - (i32.eqz - (local.get $u) - ) - (block - (local.set $F - (local.get $D) - ) - (local.set $G - (local.get $E) - ) - (br $while-out6) - ) - (block - (local.set $D - (local.get $u) - ) - (local.set $E - (local.get $q) - ) - ) - ) - (br $while-in7) - ) - ) - (if - (i32.lt_u - (local.get $G) - (local.get $s) - ) - (call $qa) - (block - (i32.store - (local.get $G) - (i32.const 0) - ) - (local.set $C - (local.get $F) - ) - (br $do-once4) - ) - ) - ) - (block - (local.set $q - (i32.load - (i32.add - (local.get $A) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $q) - (local.get $s) - ) - (call $qa) - ) - (local.set $u - (i32.add - (local.get $q) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $u) - ) - (local.get $A) - ) - (call $qa) - ) - (local.set $f - (i32.add - (local.get $o) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $f) - ) - (local.get $A) - ) - (block - (i32.store - (local.get $u) - (local.get $o) - ) - (i32.store - (local.get $f) - (local.get $q) - ) - (local.set $C - (local.get $o) - ) - (br $do-once4) - ) - (call $qa) - ) - ) - ) - ) - (block $do-once8 - (if - (local.get $e) - (block - (local.set $o - (i32.load - (i32.add - (local.get $A) - (i32.const 28) - ) - ) - ) - (local.set $s - (i32.add - (i32.const 1512) - (i32.shl - (local.get $o) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $A) - (i32.load - (local.get $s) - ) - ) - (block - (i32.store - (local.get $s) - (local.get $C) - ) - (if - (i32.eqz - (local.get $C) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $o) - ) - (i32.const -1) - ) - ) - ) - (br $do-once8) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $e) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $o - (i32.add - (local.get $e) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $o) - ) - (local.get $A) - ) - (i32.store - (local.get $o) - (local.get $C) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 20) - ) - (local.get $C) - ) - ) - (if - (i32.eqz - (local.get $C) - ) - (br $do-once8) - ) - ) - ) - (local.set $o - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $C) - (local.get $o) - ) - (call $qa) - ) - (i32.store - (i32.add - (local.get $C) - (i32.const 24) - ) - (local.get $e) - ) - (local.set $s - (i32.load - (i32.add - (local.get $A) - (i32.const 16) - ) - ) - ) - (block $do-once10 - (if - (local.get $s) - (if - (i32.lt_u - (local.get $s) - (local.get $o) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $C) - (i32.const 16) - ) - (local.get $s) - ) - (i32.store - (i32.add - (local.get $s) - (i32.const 24) - ) - (local.get $C) - ) - (br $do-once10) - ) - ) - ) - ) - (local.set $s - (i32.load - (i32.add - (local.get $A) - (i32.const 20) - ) - ) - ) - (if - (local.get $s) - (if - (i32.lt_u - (local.get $s) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $C) - (i32.const 20) - ) - (local.get $s) - ) - (i32.store - (i32.add - (local.get $s) - (i32.const 24) - ) - (local.get $C) - ) - (br $do-once8) - ) - ) - ) - ) - ) - ) - (if - (i32.lt_u - (local.get $z) - (i32.const 16) - ) - (block - (local.set $e - (i32.add - (local.get $z) - (local.get $d) - ) - ) - (i32.store - (i32.add - (local.get $A) - (i32.const 4) - ) - (i32.or - (local.get $e) - (i32.const 3) - ) - ) - (local.set $s - (i32.add - (i32.add - (local.get $A) - (local.get $e) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $s) - (i32.or - (i32.load - (local.get $s) - ) - (i32.const 1) - ) - ) - ) - (block - (i32.store - (i32.add - (local.get $A) - (i32.const 4) - ) - (i32.or - (local.get $d) - (i32.const 3) - ) - ) - (i32.store - (i32.add - (local.get $g) - (i32.const 4) - ) - (i32.or - (local.get $z) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $g) - (local.get $z) - ) - (local.get $z) - ) - (local.set $s - (i32.load - (i32.const 1216) - ) - ) - (if - (local.get $s) - (block - (local.set $e - (i32.load - (i32.const 1228) - ) - ) - (local.set $o - (i32.shr_u - (local.get $s) - (i32.const 3) - ) - ) - (local.set $s - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $o) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $q - (i32.load - (i32.const 1208) - ) - ) - (local.set $f - (i32.shl - (i32.const 1) - (local.get $o) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $q) - (local.get $f) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $q) - (local.get $f) - ) - ) - (local.set $H - (i32.add - (local.get $s) - (i32.const 8) - ) - ) - (local.set $I - (local.get $s) - ) - ) - (block - (local.set $f - (i32.add - (local.get $s) - (i32.const 8) - ) - ) - (local.set $q - (i32.load - (local.get $f) - ) - ) - (if - (i32.lt_u - (local.get $q) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $H - (local.get $f) - ) - (local.set $I - (local.get $q) - ) - ) - ) - ) - ) - (i32.store - (local.get $H) - (local.get $e) - ) - (i32.store - (i32.add - (local.get $I) - (i32.const 12) - ) - (local.get $e) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 8) - ) - (local.get $I) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 12) - ) - (local.get $s) - ) - ) - ) - (i32.store - (i32.const 1216) - (local.get $z) - ) - (i32.store - (i32.const 1228) - (local.get $g) - ) - ) - ) - (local.set $p - (i32.add - (local.get $A) - (i32.const 8) - ) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - ) - (local.set $y - (local.get $d) - ) - ) - ) - (if - (i32.gt_u - (local.get $a) - (i32.const -65) - ) - (local.set $y - (i32.const -1) - ) - (block - (local.set $s - (i32.add - (local.get $a) - (i32.const 11) - ) - ) - (local.set $e - (i32.and - (local.get $s) - (i32.const -8) - ) - ) - (local.set $q - (i32.load - (i32.const 1212) - ) - ) - (if - (i32.eqz - (local.get $q) - ) - (local.set $y - (local.get $e) - ) - (block - (local.set $f - (i32.sub - (i32.const 0) - (local.get $e) - ) - ) - (local.set $o - (i32.shr_u - (local.get $s) - (i32.const 8) - ) - ) - (if - (i32.eqz - (local.get $o) - ) - (local.set $J - (i32.const 0) - ) - (if - (i32.gt_u - (local.get $e) - (i32.const 16777215) - ) - (local.set $J - (i32.const 31) - ) - (block - (local.set $s - (i32.and - (i32.shr_u - (i32.add - (local.get $o) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $u - (i32.shl - (local.get $o) - (local.get $s) - ) - ) - (local.set $o - (i32.and - (i32.shr_u - (i32.add - (local.get $u) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $j - (i32.shl - (local.get $u) - (local.get $o) - ) - ) - (local.set $u - (i32.and - (i32.shr_u - (i32.add - (local.get $j) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $t - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $o) - (local.get $s) - ) - (local.get $u) - ) - ) - (i32.shr_u - (i32.shl - (local.get $j) - (local.get $u) - ) - (i32.const 15) - ) - ) - ) - (local.set $J - (i32.or - (i32.and - (i32.shr_u - (local.get $e) - (i32.add - (local.get $t) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $t) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.set $t - (i32.load - (i32.add - (i32.const 1512) - (i32.shl - (local.get $J) - (i32.const 2) - ) - ) - ) - ) - (block $label$break$a - (if - (i32.eqz - (local.get $t) - ) - (block - (local.set $K - (local.get $f) - ) - (local.set $L - (i32.const 0) - ) - (local.set $M - (i32.const 0) - ) - (local.set $N - (i32.const 86) - ) - ) - (block - (local.set $u - (local.get $f) - ) - (local.set $j - (i32.const 0) - ) - (local.set $s - (i32.shl - (local.get $e) - (if (result i32) - (i32.eq - (local.get $J) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $J) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $o - (local.get $t) - ) - (local.set $i - (i32.const 0) - ) - (loop $while-in14 - (block $while-out13 - (local.set $m - (i32.and - (i32.load - (i32.add - (local.get $o) - (i32.const 4) - ) - ) - (i32.const -8) - ) - ) - (local.set $l - (i32.sub - (local.get $m) - (local.get $e) - ) - ) - (if - (i32.lt_u - (local.get $l) - (local.get $u) - ) - (if - (i32.eq - (local.get $m) - (local.get $e) - ) - (block - (local.set $O - (local.get $l) - ) - (local.set $P - (local.get $o) - ) - (local.set $Q - (local.get $o) - ) - (local.set $N - (i32.const 90) - ) - (br $label$break$a) - ) - (block - (local.set $R - (local.get $l) - ) - (local.set $S - (local.get $o) - ) - ) - ) - (block - (local.set $R - (local.get $u) - ) - (local.set $S - (local.get $i) - ) - ) - ) - (local.set $l - (i32.load - (i32.add - (local.get $o) - (i32.const 20) - ) - ) - ) - (local.set $o - (i32.load - (i32.add - (i32.add - (local.get $o) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $s) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - ) - (local.set $m - (if (result i32) - (i32.or - (i32.eq - (local.get $l) - (i32.const 0) - ) - (i32.eq - (local.get $l) - (local.get $o) - ) - ) - (local.get $j) - (local.get $l) - ) - ) - (local.set $l - (i32.eq - (local.get $o) - (i32.const 0) - ) - ) - (if - (local.get $l) - (block - (local.set $K - (local.get $R) - ) - (local.set $L - (local.get $m) - ) - (local.set $M - (local.get $S) - ) - (local.set $N - (i32.const 86) - ) - (br $while-out13) - ) - (block - (local.set $u - (local.get $R) - ) - (local.set $j - (local.get $m) - ) - (local.set $s - (i32.shl - (local.get $s) - (i32.xor - (i32.and - (local.get $l) - (i32.const 1) - ) - (i32.const 1) - ) - ) - ) - (local.set $i - (local.get $S) - ) - ) - ) - (br $while-in14) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 86) - ) - (block - (if - (i32.and - (i32.eq - (local.get $L) - (i32.const 0) - ) - (i32.eq - (local.get $M) - (i32.const 0) - ) - ) - (block - (local.set $t - (i32.shl - (i32.const 2) - (local.get $J) - ) - ) - (local.set $f - (i32.and - (local.get $q) - (i32.or - (local.get $t) - (i32.sub - (i32.const 0) - (local.get $t) - ) - ) - ) - ) - (if - (i32.eqz - (local.get $f) - ) - (block - (local.set $y - (local.get $e) - ) - (br $do-once) - ) - ) - (local.set $t - (i32.add - (i32.and - (local.get $f) - (i32.sub - (i32.const 0) - (local.get $f) - ) - ) - (i32.const -1) - ) - ) - (local.set $f - (i32.and - (i32.shr_u - (local.get $t) - (i32.const 12) - ) - (i32.const 16) - ) - ) - (local.set $d - (i32.shr_u - (local.get $t) - (local.get $f) - ) - ) - (local.set $t - (i32.and - (i32.shr_u - (local.get $d) - (i32.const 5) - ) - (i32.const 8) - ) - ) - (local.set $g - (i32.shr_u - (local.get $d) - (local.get $t) - ) - ) - (local.set $d - (i32.and - (i32.shr_u - (local.get $g) - (i32.const 2) - ) - (i32.const 4) - ) - ) - (local.set $i - (i32.shr_u - (local.get $g) - (local.get $d) - ) - ) - (local.set $g - (i32.and - (i32.shr_u - (local.get $i) - (i32.const 1) - ) - (i32.const 2) - ) - ) - (local.set $s - (i32.shr_u - (local.get $i) - (local.get $g) - ) - ) - (local.set $i - (i32.and - (i32.shr_u - (local.get $s) - (i32.const 1) - ) - (i32.const 1) - ) - ) - (local.set $T - (i32.load - (i32.add - (i32.const 1512) - (i32.shl - (i32.add - (i32.or - (i32.or - (i32.or - (i32.or - (local.get $t) - (local.get $f) - ) - (local.get $d) - ) - (local.get $g) - ) - (local.get $i) - ) - (i32.shr_u - (local.get $s) - (local.get $i) - ) - ) - (i32.const 2) - ) - ) - ) - ) - ) - (local.set $T - (local.get $L) - ) - ) - (if - (i32.eqz - (local.get $T) - ) - (block - (local.set $U - (local.get $K) - ) - (local.set $V - (local.get $M) - ) - ) - (block - (local.set $O - (local.get $K) - ) - (local.set $P - (local.get $T) - ) - (local.set $Q - (local.get $M) - ) - (local.set $N - (i32.const 90) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 90) - ) - (loop $while-in16 - (block $while-out15 - (local.set $N - (i32.const 0) - ) - (local.set $i - (i32.sub - (i32.and - (i32.load - (i32.add - (local.get $P) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $e) - ) - ) - (local.set $s - (i32.lt_u - (local.get $i) - (local.get $O) - ) - ) - (local.set $g - (if (result i32) - (local.get $s) - (local.get $i) - (local.get $O) - ) - ) - (local.set $i - (if (result i32) - (local.get $s) - (local.get $P) - (local.get $Q) - ) - ) - (local.set $s - (i32.load - (i32.add - (local.get $P) - (i32.const 16) - ) - ) - ) - (if - (local.get $s) - (block - (local.set $O - (local.get $g) - ) - (local.set $P - (local.get $s) - ) - (local.set $Q - (local.get $i) - ) - (local.set $N - (i32.const 90) - ) - (br $while-in16) - ) - ) - (local.set $P - (i32.load - (i32.add - (local.get $P) - (i32.const 20) - ) - ) - ) - (if - (i32.eqz - (local.get $P) - ) - (block - (local.set $U - (local.get $g) - ) - (local.set $V - (local.get $i) - ) - (br $while-out15) - ) - (block - (local.set $O - (local.get $g) - ) - (local.set $Q - (local.get $i) - ) - (local.set $N - (i32.const 90) - ) - ) - ) - (br $while-in16) - ) - ) - ) - (if - (i32.eqz - (local.get $V) - ) - (local.set $y - (local.get $e) - ) - (if - (i32.lt_u - (local.get $U) - (i32.sub - (i32.load - (i32.const 1216) - ) - (local.get $e) - ) - ) - (block - (local.set $q - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $V) - (local.get $q) - ) - (call $qa) - ) - (local.set $i - (i32.add - (local.get $V) - (local.get $e) - ) - ) - (if - (i32.ge_u - (local.get $V) - (local.get $i) - ) - (call $qa) - ) - (local.set $g - (i32.load - (i32.add - (local.get $V) - (i32.const 24) - ) - ) - ) - (local.set $s - (i32.load - (i32.add - (local.get $V) - (i32.const 12) - ) - ) - ) - (block $do-once17 - (if - (i32.eq - (local.get $s) - (local.get $V) - ) - (block - (local.set $d - (i32.add - (local.get $V) - (i32.const 20) - ) - ) - (local.set $f - (i32.load - (local.get $d) - ) - ) - (if - (i32.eqz - (local.get $f) - ) - (block - (local.set $t - (i32.add - (local.get $V) - (i32.const 16) - ) - ) - (local.set $j - (i32.load - (local.get $t) - ) - ) - (if - (i32.eqz - (local.get $j) - ) - (block - (local.set $W - (i32.const 0) - ) - (br $do-once17) - ) - (block - (local.set $X - (local.get $j) - ) - (local.set $Y - (local.get $t) - ) - ) - ) - ) - (block - (local.set $X - (local.get $f) - ) - (local.set $Y - (local.get $d) - ) - ) - ) - (loop $while-in20 - (block $while-out19 - (local.set $d - (i32.add - (local.get $X) - (i32.const 20) - ) - ) - (local.set $f - (i32.load - (local.get $d) - ) - ) - (if - (local.get $f) - (block - (local.set $X - (local.get $f) - ) - (local.set $Y - (local.get $d) - ) - (br $while-in20) - ) - ) - (local.set $d - (i32.add - (local.get $X) - (i32.const 16) - ) - ) - (local.set $f - (i32.load - (local.get $d) - ) - ) - (if - (i32.eqz - (local.get $f) - ) - (block - (local.set $Z - (local.get $X) - ) - (local.set $_ - (local.get $Y) - ) - (br $while-out19) - ) - (block - (local.set $X - (local.get $f) - ) - (local.set $Y - (local.get $d) - ) - ) - ) - (br $while-in20) - ) - ) - (if - (i32.lt_u - (local.get $_) - (local.get $q) - ) - (call $qa) - (block - (i32.store - (local.get $_) - (i32.const 0) - ) - (local.set $W - (local.get $Z) - ) - (br $do-once17) - ) - ) - ) - (block - (local.set $d - (i32.load - (i32.add - (local.get $V) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $d) - (local.get $q) - ) - (call $qa) - ) - (local.set $f - (i32.add - (local.get $d) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $f) - ) - (local.get $V) - ) - (call $qa) - ) - (local.set $t - (i32.add - (local.get $s) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $t) - ) - (local.get $V) - ) - (block - (i32.store - (local.get $f) - (local.get $s) - ) - (i32.store - (local.get $t) - (local.get $d) - ) - (local.set $W - (local.get $s) - ) - (br $do-once17) - ) - (call $qa) - ) - ) - ) - ) - (block $do-once21 - (if - (local.get $g) - (block - (local.set $s - (i32.load - (i32.add - (local.get $V) - (i32.const 28) - ) - ) - ) - (local.set $q - (i32.add - (i32.const 1512) - (i32.shl - (local.get $s) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $V) - (i32.load - (local.get $q) - ) - ) - (block - (i32.store - (local.get $q) - (local.get $W) - ) - (if - (i32.eqz - (local.get $W) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $s) - ) - (i32.const -1) - ) - ) - ) - (br $do-once21) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $g) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $s - (i32.add - (local.get $g) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $s) - ) - (local.get $V) - ) - (i32.store - (local.get $s) - (local.get $W) - ) - (i32.store - (i32.add - (local.get $g) - (i32.const 20) - ) - (local.get $W) - ) - ) - (if - (i32.eqz - (local.get $W) - ) - (br $do-once21) - ) - ) - ) - (local.set $s - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $W) - (local.get $s) - ) - (call $qa) - ) - (i32.store - (i32.add - (local.get $W) - (i32.const 24) - ) - (local.get $g) - ) - (local.set $q - (i32.load - (i32.add - (local.get $V) - (i32.const 16) - ) - ) - ) - (block $do-once23 - (if - (local.get $q) - (if - (i32.lt_u - (local.get $q) - (local.get $s) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $W) - (i32.const 16) - ) - (local.get $q) - ) - (i32.store - (i32.add - (local.get $q) - (i32.const 24) - ) - (local.get $W) - ) - (br $do-once23) - ) - ) - ) - ) - (local.set $q - (i32.load - (i32.add - (local.get $V) - (i32.const 20) - ) - ) - ) - (if - (local.get $q) - (if - (i32.lt_u - (local.get $q) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $W) - (i32.const 20) - ) - (local.get $q) - ) - (i32.store - (i32.add - (local.get $q) - (i32.const 24) - ) - (local.get $W) - ) - (br $do-once21) - ) - ) - ) - ) - ) - ) - (block $do-once25 - (if - (i32.lt_u - (local.get $U) - (i32.const 16) - ) - (block - (local.set $g - (i32.add - (local.get $U) - (local.get $e) - ) - ) - (i32.store - (i32.add - (local.get $V) - (i32.const 4) - ) - (i32.or - (local.get $g) - (i32.const 3) - ) - ) - (local.set $q - (i32.add - (i32.add - (local.get $V) - (local.get $g) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $q) - (i32.or - (i32.load - (local.get $q) - ) - (i32.const 1) - ) - ) - ) - (block - (i32.store - (i32.add - (local.get $V) - (i32.const 4) - ) - (i32.or - (local.get $e) - (i32.const 3) - ) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 4) - ) - (i32.or - (local.get $U) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $i) - (local.get $U) - ) - (local.get $U) - ) - (local.set $q - (i32.shr_u - (local.get $U) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $U) - (i32.const 256) - ) - (block - (local.set $g - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $q) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $s - (i32.load - (i32.const 1208) - ) - ) - (local.set $d - (i32.shl - (i32.const 1) - (local.get $q) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $s) - (local.get $d) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $s) - (local.get $d) - ) - ) - (local.set $$ - (i32.add - (local.get $g) - (i32.const 8) - ) - ) - (local.set $aa - (local.get $g) - ) - ) - (block - (local.set $d - (i32.add - (local.get $g) - (i32.const 8) - ) - ) - (local.set $s - (i32.load - (local.get $d) - ) - ) - (if - (i32.lt_u - (local.get $s) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $$ - (local.get $d) - ) - (local.set $aa - (local.get $s) - ) - ) - ) - ) - ) - (i32.store - (local.get $$) - (local.get $i) - ) - (i32.store - (i32.add - (local.get $aa) - (i32.const 12) - ) - (local.get $i) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 8) - ) - (local.get $aa) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 12) - ) - (local.get $g) - ) - (br $do-once25) - ) - ) - (local.set $g - (i32.shr_u - (local.get $U) - (i32.const 8) - ) - ) - (if - (i32.eqz - (local.get $g) - ) - (local.set $ba - (i32.const 0) - ) - (if - (i32.gt_u - (local.get $U) - (i32.const 16777215) - ) - (local.set $ba - (i32.const 31) - ) - (block - (local.set $s - (i32.and - (i32.shr_u - (i32.add - (local.get $g) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $d - (i32.shl - (local.get $g) - (local.get $s) - ) - ) - (local.set $g - (i32.and - (i32.shr_u - (i32.add - (local.get $d) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $q - (i32.shl - (local.get $d) - (local.get $g) - ) - ) - (local.set $d - (i32.and - (i32.shr_u - (i32.add - (local.get $q) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $t - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $g) - (local.get $s) - ) - (local.get $d) - ) - ) - (i32.shr_u - (i32.shl - (local.get $q) - (local.get $d) - ) - (i32.const 15) - ) - ) - ) - (local.set $ba - (i32.or - (i32.and - (i32.shr_u - (local.get $U) - (i32.add - (local.get $t) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $t) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.set $t - (i32.add - (i32.const 1512) - (i32.shl - (local.get $ba) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 28) - ) - (local.get $ba) - ) - (local.set $d - (i32.add - (local.get $i) - (i32.const 16) - ) - ) - (i32.store - (i32.add - (local.get $d) - (i32.const 4) - ) - (i32.const 0) - ) - (i32.store - (local.get $d) - (i32.const 0) - ) - (local.set $d - (i32.load - (i32.const 1212) - ) - ) - (local.set $q - (i32.shl - (i32.const 1) - (local.get $ba) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $d) - (local.get $q) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $d) - (local.get $q) - ) - ) - (i32.store - (local.get $t) - (local.get $i) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 24) - ) - (local.get $t) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 12) - ) - (local.get $i) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 8) - ) - (local.get $i) - ) - (br $do-once25) - ) - ) - (local.set $q - (i32.shl - (local.get $U) - (if (result i32) - (i32.eq - (local.get $ba) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $ba) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $d - (i32.load - (local.get $t) - ) - ) - (loop $while-in28 - (block $while-out27 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $d) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $U) - ) - (block - (local.set $ca - (local.get $d) - ) - (local.set $N - (i32.const 148) - ) - (br $while-out27) - ) - ) - (local.set $t - (i32.add - (i32.add - (local.get $d) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $q) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $s - (i32.load - (local.get $t) - ) - ) - (if - (i32.eqz - (local.get $s) - ) - (block - (local.set $da - (local.get $t) - ) - (local.set $ea - (local.get $d) - ) - (local.set $N - (i32.const 145) - ) - (br $while-out27) - ) - (block - (local.set $q - (i32.shl - (local.get $q) - (i32.const 1) - ) - ) - (local.set $d - (local.get $s) - ) - ) - ) - (br $while-in28) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 145) - ) - (if - (i32.lt_u - (local.get $da) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $da) - (local.get $i) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 24) - ) - (local.get $ea) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 12) - ) - (local.get $i) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 8) - ) - (local.get $i) - ) - (br $do-once25) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 148) - ) - (block - (local.set $d - (i32.add - (local.get $ca) - (i32.const 8) - ) - ) - (local.set $q - (i32.load - (local.get $d) - ) - ) - (local.set $s - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $q) - (local.get $s) - ) - (i32.ge_u - (local.get $ca) - (local.get $s) - ) - ) - (block - (i32.store - (i32.add - (local.get $q) - (i32.const 12) - ) - (local.get $i) - ) - (i32.store - (local.get $d) - (local.get $i) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 8) - ) - (local.get $q) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 12) - ) - (local.get $ca) - ) - (i32.store - (i32.add - (local.get $i) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once25) - ) - (call $qa) - ) - ) - ) - ) - ) - ) - ) - (local.set $p - (i32.add - (local.get $V) - (i32.const 8) - ) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - (local.set $y - (local.get $e) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (local.set $V - (i32.load - (i32.const 1216) - ) - ) - (if - (i32.ge_u - (local.get $V) - (local.get $y) - ) - (block - (local.set $ca - (i32.sub - (local.get $V) - (local.get $y) - ) - ) - (local.set $ea - (i32.load - (i32.const 1228) - ) - ) - (if - (i32.gt_u - (local.get $ca) - (i32.const 15) - ) - (block - (local.set $da - (i32.add - (local.get $ea) - (local.get $y) - ) - ) - (i32.store - (i32.const 1228) - (local.get $da) - ) - (i32.store - (i32.const 1216) - (local.get $ca) - ) - (i32.store - (i32.add - (local.get $da) - (i32.const 4) - ) - (i32.or - (local.get $ca) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $da) - (local.get $ca) - ) - (local.get $ca) - ) - (i32.store - (i32.add - (local.get $ea) - (i32.const 4) - ) - (i32.or - (local.get $y) - (i32.const 3) - ) - ) - ) - (block - (i32.store - (i32.const 1216) - (i32.const 0) - ) - (i32.store - (i32.const 1228) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $ea) - (i32.const 4) - ) - (i32.or - (local.get $V) - (i32.const 3) - ) - ) - (local.set $ca - (i32.add - (i32.add - (local.get $ea) - (local.get $V) - ) - (i32.const 4) - ) - ) - (i32.store - (local.get $ca) - (i32.or - (i32.load - (local.get $ca) - ) - (i32.const 1) - ) - ) - ) - ) - (local.set $p - (i32.add - (local.get $ea) - (i32.const 8) - ) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - (local.set $ea - (i32.load - (i32.const 1220) - ) - ) - (if - (i32.gt_u - (local.get $ea) - (local.get $y) - ) - (block - (local.set $ca - (i32.sub - (local.get $ea) - (local.get $y) - ) - ) - (i32.store - (i32.const 1220) - (local.get $ca) - ) - (local.set $ea - (i32.load - (i32.const 1232) - ) - ) - (local.set $V - (i32.add - (local.get $ea) - (local.get $y) - ) - ) - (i32.store - (i32.const 1232) - (local.get $V) - ) - (i32.store - (i32.add - (local.get $V) - (i32.const 4) - ) - (i32.or - (local.get $ca) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $ea) - (i32.const 4) - ) - (i32.or - (local.get $y) - (i32.const 3) - ) - ) - (local.set $p - (i32.add - (local.get $ea) - (i32.const 8) - ) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - (if - (i32.eqz - (i32.load - (i32.const 1680) - ) - ) - (block - (i32.store - (i32.const 1688) - (i32.const 4096) - ) - (i32.store - (i32.const 1684) - (i32.const 4096) - ) - (i32.store - (i32.const 1692) - (i32.const -1) - ) - (i32.store - (i32.const 1696) - (i32.const -1) - ) - (i32.store - (i32.const 1700) - (i32.const 0) - ) - (i32.store - (i32.const 1652) - (i32.const 0) - ) - (local.set $ea - (i32.xor - (i32.and - (local.get $c) - (i32.const -16) - ) - (i32.const 1431655768) - ) - ) - (i32.store - (local.get $c) - (local.get $ea) - ) - (i32.store - (i32.const 1680) - (local.get $ea) - ) - ) - ) - (local.set $ea - (i32.add - (local.get $y) - (i32.const 48) - ) - ) - (local.set $c - (i32.load - (i32.const 1688) - ) - ) - (local.set $ca - (i32.add - (local.get $y) - (i32.const 47) - ) - ) - (local.set $V - (i32.add - (local.get $c) - (local.get $ca) - ) - ) - (local.set $da - (i32.sub - (i32.const 0) - (local.get $c) - ) - ) - (local.set $c - (i32.and - (local.get $V) - (local.get $da) - ) - ) - (if - (i32.le_u - (local.get $c) - (local.get $y) - ) - (block - (local.set $p - (i32.const 0) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - (local.set $U - (i32.load - (i32.const 1648) - ) - ) - (if - (local.get $U) - (block - (local.set $ba - (i32.load - (i32.const 1640) - ) - ) - (local.set $aa - (i32.add - (local.get $ba) - (local.get $c) - ) - ) - (if - (i32.or - (i32.le_u - (local.get $aa) - (local.get $ba) - ) - (i32.gt_u - (local.get $aa) - (local.get $U) - ) - ) - (block - (local.set $p - (i32.const 0) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - ) - ) - (block $label$break$b - (if - (i32.eqz - (i32.and - (i32.load - (i32.const 1652) - ) - (i32.const 4) - ) - ) - (block - (local.set $U - (i32.load - (i32.const 1232) - ) - ) - (block $label$break$c - (if - (i32.eqz - (local.get $U) - ) - (local.set $N - (i32.const 171) - ) - (block - (local.set $aa - (i32.const 1656) - ) - (loop $while-in32 - (block $while-out31 - (local.set $ba - (i32.load - (local.get $aa) - ) - ) - (if - (i32.le_u - (local.get $ba) - (local.get $U) - ) - (block - (local.set $$ - (i32.add - (local.get $aa) - (i32.const 4) - ) - ) - (if - (i32.gt_u - (i32.add - (local.get $ba) - (i32.load - (local.get $$) - ) - ) - (local.get $U) - ) - (block - (local.set $fa - (local.get $aa) - ) - (local.set $ga - (local.get $$) - ) - (br $while-out31) - ) - ) - ) - ) - (local.set $aa - (i32.load - (i32.add - (local.get $aa) - (i32.const 8) - ) - ) - ) - (if - (i32.eqz - (local.get $aa) - ) - (block - (local.set $N - (i32.const 171) - ) - (br $label$break$c) - ) - ) - (br $while-in32) - ) - ) - (local.set $aa - (i32.and - (i32.sub - (local.get $V) - (i32.load - (i32.const 1220) - ) - ) - (local.get $da) - ) - ) - (if - (i32.lt_u - (local.get $aa) - (i32.const 2147483647) - ) - (block - (local.set $$ - (call $ta - (local.get $aa) - ) - ) - (if - (i32.eq - (local.get $$) - (i32.add - (i32.load - (local.get $fa) - ) - (i32.load - (local.get $ga) - ) - ) - ) - (if - (i32.ne - (local.get $$) - (i32.const -1) - ) - (block - (local.set $ha - (local.get $$) - ) - (local.set $ia - (local.get $aa) - ) - (local.set $N - (i32.const 191) - ) - (br $label$break$b) - ) - ) - (block - (local.set $ja - (local.get $$) - ) - (local.set $ka - (local.get $aa) - ) - (local.set $N - (i32.const 181) - ) - ) - ) - ) - ) - ) - ) - ) - (block $do-once33 - (if - (i32.eq - (local.get $N) - (i32.const 171) - ) - (block - (local.set $U - (call $ta - (i32.const 0) - ) - ) - (if - (i32.ne - (local.get $U) - (i32.const -1) - ) - (block - (local.set $e - (local.get $U) - ) - (local.set $aa - (i32.load - (i32.const 1684) - ) - ) - (local.set $$ - (i32.add - (local.get $aa) - (i32.const -1) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $$) - (local.get $e) - ) - ) - (local.set $la - (local.get $c) - ) - (local.set $la - (i32.add - (i32.sub - (local.get $c) - (local.get $e) - ) - (i32.and - (i32.add - (local.get $$) - (local.get $e) - ) - (i32.sub - (i32.const 0) - (local.get $aa) - ) - ) - ) - ) - ) - (local.set $aa - (i32.load - (i32.const 1640) - ) - ) - (local.set $e - (i32.add - (local.get $aa) - (local.get $la) - ) - ) - (if - (i32.and - (i32.gt_u - (local.get $la) - (local.get $y) - ) - (i32.lt_u - (local.get $la) - (i32.const 2147483647) - ) - ) - (block - (local.set $$ - (i32.load - (i32.const 1648) - ) - ) - (if - (local.get $$) - (if - (i32.or - (i32.le_u - (local.get $e) - (local.get $aa) - ) - (i32.gt_u - (local.get $e) - (local.get $$) - ) - ) - (br $do-once33) - ) - ) - (local.set $$ - (call $ta - (local.get $la) - ) - ) - (if - (i32.eq - (local.get $$) - (local.get $U) - ) - (block - (local.set $ha - (local.get $U) - ) - (local.set $ia - (local.get $la) - ) - (local.set $N - (i32.const 191) - ) - (br $label$break$b) - ) - (block - (local.set $ja - (local.get $$) - ) - (local.set $ka - (local.get $la) - ) - (local.set $N - (i32.const 181) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (block $label$break$d - (if - (i32.eq - (local.get $N) - (i32.const 181) - ) - (block - (local.set $$ - (i32.sub - (i32.const 0) - (local.get $ka) - ) - ) - (block $do-once36 - (if - (i32.and - (i32.gt_u - (local.get $ea) - (local.get $ka) - ) - (i32.and - (i32.lt_u - (local.get $ka) - (i32.const 2147483647) - ) - (i32.ne - (local.get $ja) - (i32.const -1) - ) - ) - ) - (block - (local.set $U - (i32.load - (i32.const 1688) - ) - ) - (local.set $e - (i32.and - (i32.add - (i32.sub - (local.get $ca) - (local.get $ka) - ) - (local.get $U) - ) - (i32.sub - (i32.const 0) - (local.get $U) - ) - ) - ) - (if - (i32.lt_u - (local.get $e) - (i32.const 2147483647) - ) - (if - (i32.eq - (call $ta - (local.get $e) - ) - (i32.const -1) - ) - (block - (drop - (call $ta - (local.get $$) - ) - ) - (br $label$break$d) - ) - (block - (local.set $ma - (i32.add - (local.get $e) - (local.get $ka) - ) - ) - (br $do-once36) - ) - ) - (local.set $ma - (local.get $ka) - ) - ) - ) - (local.set $ma - (local.get $ka) - ) - ) - ) - (if - (i32.ne - (local.get $ja) - (i32.const -1) - ) - (block - (local.set $ha - (local.get $ja) - ) - (local.set $ia - (local.get $ma) - ) - (local.set $N - (i32.const 191) - ) - (br $label$break$b) - ) - ) - ) - ) - ) - (i32.store - (i32.const 1652) - (i32.or - (i32.load - (i32.const 1652) - ) - (i32.const 4) - ) - ) - (local.set $N - (i32.const 188) - ) - ) - (local.set $N - (i32.const 188) - ) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 188) - ) - (if - (i32.lt_u - (local.get $c) - (i32.const 2147483647) - ) - (block - (local.set $ma - (call $ta - (local.get $c) - ) - ) - (local.set $c - (call $ta - (i32.const 0) - ) - ) - (if - (i32.and - (i32.lt_u - (local.get $ma) - (local.get $c) - ) - (i32.and - (i32.ne - (local.get $ma) - (i32.const -1) - ) - (i32.ne - (local.get $c) - (i32.const -1) - ) - ) - ) - (block - (local.set $ja - (i32.sub - (local.get $c) - (local.get $ma) - ) - ) - (if - (i32.gt_u - (local.get $ja) - (i32.add - (local.get $y) - (i32.const 40) - ) - ) - (block - (local.set $ha - (local.get $ma) - ) - (local.set $ia - (local.get $ja) - ) - (local.set $N - (i32.const 191) - ) - ) - ) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 191) - ) - (block - (local.set $ja - (i32.add - (i32.load - (i32.const 1640) - ) - (local.get $ia) - ) - ) - (i32.store - (i32.const 1640) - (local.get $ja) - ) - (if - (i32.gt_u - (local.get $ja) - (i32.load - (i32.const 1644) - ) - ) - (i32.store - (i32.const 1644) - (local.get $ja) - ) - ) - (local.set $ja - (i32.load - (i32.const 1232) - ) - ) - (block $do-once38 - (if - (i32.eqz - (local.get $ja) - ) - (block - (local.set $ma - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.or - (i32.eq - (local.get $ma) - (i32.const 0) - ) - (i32.lt_u - (local.get $ha) - (local.get $ma) - ) - ) - (i32.store - (i32.const 1224) - (local.get $ha) - ) - ) - (i32.store - (i32.const 1656) - (local.get $ha) - ) - (i32.store - (i32.const 1660) - (local.get $ia) - ) - (i32.store - (i32.const 1668) - (i32.const 0) - ) - (i32.store - (i32.const 1244) - (i32.load - (i32.const 1680) - ) - ) - (i32.store - (i32.const 1240) - (i32.const -1) - ) - (local.set $ma - (i32.const 0) - ) - (loop $do-in - (block $do-out - (local.set $c - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $ma) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $c) - (i32.const 12) - ) - (local.get $c) - ) - (i32.store - (i32.add - (local.get $c) - (i32.const 8) - ) - (local.get $c) - ) - (local.set $ma - (i32.add - (local.get $ma) - (i32.const 1) - ) - ) - (br_if $do-in - (i32.ne - (local.get $ma) - (i32.const 32) - ) - ) - ) - ) - (local.set $ma - (i32.add - (local.get $ha) - (i32.const 8) - ) - ) - (local.set $c - (if (result i32) - (i32.eq - (i32.and - (local.get $ma) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $ma) - ) - (i32.const 7) - ) - ) - ) - (local.set $ma - (i32.add - (local.get $ha) - (local.get $c) - ) - ) - (local.set $ka - (i32.sub - (i32.add - (local.get $ia) - (i32.const -40) - ) - (local.get $c) - ) - ) - (i32.store - (i32.const 1232) - (local.get $ma) - ) - (i32.store - (i32.const 1220) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ma) - (i32.const 4) - ) - (i32.or - (local.get $ka) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (i32.add - (local.get $ma) - (local.get $ka) - ) - (i32.const 4) - ) - (i32.const 40) - ) - (i32.store - (i32.const 1236) - (i32.load - (i32.const 1696) - ) - ) - ) - (block - (local.set $ka - (i32.const 1656) - ) - (loop $do-in41 - (block $do-out40 - (local.set $ma - (i32.load - (local.get $ka) - ) - ) - (local.set $c - (i32.add - (local.get $ka) - (i32.const 4) - ) - ) - (local.set $ca - (i32.load - (local.get $c) - ) - ) - (if - (i32.eq - (local.get $ha) - (i32.add - (local.get $ma) - (local.get $ca) - ) - ) - (block - (local.set $na - (local.get $ma) - ) - (local.set $oa - (local.get $c) - ) - (local.set $pa - (local.get $ca) - ) - (local.set $ra - (local.get $ka) - ) - (local.set $N - (i32.const 201) - ) - (br $do-out40) - ) - ) - (local.set $ka - (i32.load - (i32.add - (local.get $ka) - (i32.const 8) - ) - ) - ) - (br_if $do-in41 - (i32.ne - (local.get $ka) - (i32.const 0) - ) - ) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 201) - ) - (if - (i32.eqz - (i32.and - (i32.load - (i32.add - (local.get $ra) - (i32.const 12) - ) - ) - (i32.const 8) - ) - ) - (if - (i32.and - (i32.lt_u - (local.get $ja) - (local.get $ha) - ) - (i32.ge_u - (local.get $ja) - (local.get $na) - ) - ) - (block - (i32.store - (local.get $oa) - (i32.add - (local.get $pa) - (local.get $ia) - ) - ) - (local.set $ka - (i32.add - (local.get $ja) - (i32.const 8) - ) - ) - (local.set $ca - (if (result i32) - (i32.eq - (i32.and - (local.get $ka) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $ka) - ) - (i32.const 7) - ) - ) - ) - (local.set $ka - (i32.add - (local.get $ja) - (local.get $ca) - ) - ) - (local.set $c - (i32.add - (i32.sub - (local.get $ia) - (local.get $ca) - ) - (i32.load - (i32.const 1220) - ) - ) - ) - (i32.store - (i32.const 1232) - (local.get $ka) - ) - (i32.store - (i32.const 1220) - (local.get $c) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 4) - ) - (i32.or - (local.get $c) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (i32.add - (local.get $ka) - (local.get $c) - ) - (i32.const 4) - ) - (i32.const 40) - ) - (i32.store - (i32.const 1236) - (i32.load - (i32.const 1696) - ) - ) - (br $do-once38) - ) - ) - ) - ) - (local.set $c - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $ha) - (local.get $c) - ) - (block - (i32.store - (i32.const 1224) - (local.get $ha) - ) - (local.set $sa - (local.get $ha) - ) - ) - (local.set $sa - (local.get $c) - ) - ) - (local.set $c - (i32.add - (local.get $ha) - (local.get $ia) - ) - ) - (local.set $ka - (i32.const 1656) - ) - (loop $while-in43 - (block $while-out42 - (if - (i32.eq - (i32.load - (local.get $ka) - ) - (local.get $c) - ) - (block - (local.set $ua - (local.get $ka) - ) - (local.set $va - (local.get $ka) - ) - (local.set $N - (i32.const 209) - ) - (br $while-out42) - ) - ) - (local.set $ka - (i32.load - (i32.add - (local.get $ka) - (i32.const 8) - ) - ) - ) - (if - (i32.eqz - (local.get $ka) - ) - (block - (local.set $wa - (i32.const 1656) - ) - (br $while-out42) - ) - ) - (br $while-in43) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 209) - ) - (if - (i32.eqz - (i32.and - (i32.load - (i32.add - (local.get $va) - (i32.const 12) - ) - ) - (i32.const 8) - ) - ) - (block - (i32.store - (local.get $ua) - (local.get $ha) - ) - (local.set $ka - (i32.add - (local.get $va) - (i32.const 4) - ) - ) - (i32.store - (local.get $ka) - (i32.add - (i32.load - (local.get $ka) - ) - (local.get $ia) - ) - ) - (local.set $ka - (i32.add - (local.get $ha) - (i32.const 8) - ) - ) - (local.set $ca - (i32.add - (local.get $ha) - (if (result i32) - (i32.eq - (i32.and - (local.get $ka) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $ka) - ) - (i32.const 7) - ) - ) - ) - ) - (local.set $ka - (i32.add - (local.get $c) - (i32.const 8) - ) - ) - (local.set $ma - (i32.add - (local.get $c) - (if (result i32) - (i32.eq - (i32.and - (local.get $ka) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $ka) - ) - (i32.const 7) - ) - ) - ) - ) - (local.set $ka - (i32.add - (local.get $ca) - (local.get $y) - ) - ) - (local.set $ea - (i32.sub - (i32.sub - (local.get $ma) - (local.get $ca) - ) - (local.get $y) - ) - ) - (i32.store - (i32.add - (local.get $ca) - (i32.const 4) - ) - (i32.or - (local.get $y) - (i32.const 3) - ) - ) - (block $do-once44 - (if - (i32.eq - (local.get $ma) - (local.get $ja) - ) - (block - (local.set $la - (i32.add - (i32.load - (i32.const 1220) - ) - (local.get $ea) - ) - ) - (i32.store - (i32.const 1220) - (local.get $la) - ) - (i32.store - (i32.const 1232) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 4) - ) - (i32.or - (local.get $la) - (i32.const 1) - ) - ) - ) - (block - (if - (i32.eq - (local.get $ma) - (i32.load - (i32.const 1228) - ) - ) - (block - (local.set $la - (i32.add - (i32.load - (i32.const 1216) - ) - (local.get $ea) - ) - ) - (i32.store - (i32.const 1216) - (local.get $la) - ) - (i32.store - (i32.const 1228) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 4) - ) - (i32.or - (local.get $la) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $ka) - (local.get $la) - ) - (local.get $la) - ) - (br $do-once44) - ) - ) - (local.set $la - (i32.load - (i32.add - (local.get $ma) - (i32.const 4) - ) - ) - ) - (if - (i32.eq - (i32.and - (local.get $la) - (i32.const 3) - ) - (i32.const 1) - ) - (block - (local.set $ga - (i32.and - (local.get $la) - (i32.const -8) - ) - ) - (local.set $fa - (i32.shr_u - (local.get $la) - (i32.const 3) - ) - ) - (block $label$break$e - (if - (i32.lt_u - (local.get $la) - (i32.const 256) - ) - (block - (local.set $da - (i32.load - (i32.add - (local.get $ma) - (i32.const 8) - ) - ) - ) - (local.set $V - (i32.load - (i32.add - (local.get $ma) - (i32.const 12) - ) - ) - ) - (local.set $$ - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $fa) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (block $do-once47 - (if - (i32.ne - (local.get $da) - (local.get $$) - ) - (block - (if - (i32.lt_u - (local.get $da) - (local.get $sa) - ) - (call $qa) - ) - (if - (i32.eq - (i32.load - (i32.add - (local.get $da) - (i32.const 12) - ) - ) - (local.get $ma) - ) - (br $do-once47) - ) - (call $qa) - ) - ) - ) - (if - (i32.eq - (local.get $V) - (local.get $da) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (i32.load - (i32.const 1208) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $fa) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$e) - ) - ) - (block $do-once49 - (if - (i32.eq - (local.get $V) - (local.get $$) - ) - (local.set $xa - (i32.add - (local.get $V) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $V) - (local.get $sa) - ) - (call $qa) - ) - (local.set $e - (i32.add - (local.get $V) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $e) - ) - (local.get $ma) - ) - (block - (local.set $xa - (local.get $e) - ) - (br $do-once49) - ) - ) - (call $qa) - ) - ) - ) - (i32.store - (i32.add - (local.get $da) - (i32.const 12) - ) - (local.get $V) - ) - (i32.store - (local.get $xa) - (local.get $da) - ) - ) - (block - (local.set $$ - (i32.load - (i32.add - (local.get $ma) - (i32.const 24) - ) - ) - ) - (local.set $e - (i32.load - (i32.add - (local.get $ma) - (i32.const 12) - ) - ) - ) - (block $do-once51 - (if - (i32.eq - (local.get $e) - (local.get $ma) - ) - (block - (local.set $U - (i32.add - (local.get $ma) - (i32.const 16) - ) - ) - (local.set $aa - (i32.add - (local.get $U) - (i32.const 4) - ) - ) - (local.set $ba - (i32.load - (local.get $aa) - ) - ) - (if - (i32.eqz - (local.get $ba) - ) - (block - (local.set $W - (i32.load - (local.get $U) - ) - ) - (if - (i32.eqz - (local.get $W) - ) - (block - (local.set $ya - (i32.const 0) - ) - (br $do-once51) - ) - (block - (local.set $za - (local.get $W) - ) - (local.set $Aa - (local.get $U) - ) - ) - ) - ) - (block - (local.set $za - (local.get $ba) - ) - (local.set $Aa - (local.get $aa) - ) - ) - ) - (loop $while-in54 - (block $while-out53 - (local.set $aa - (i32.add - (local.get $za) - (i32.const 20) - ) - ) - (local.set $ba - (i32.load - (local.get $aa) - ) - ) - (if - (local.get $ba) - (block - (local.set $za - (local.get $ba) - ) - (local.set $Aa - (local.get $aa) - ) - (br $while-in54) - ) - ) - (local.set $aa - (i32.add - (local.get $za) - (i32.const 16) - ) - ) - (local.set $ba - (i32.load - (local.get $aa) - ) - ) - (if - (i32.eqz - (local.get $ba) - ) - (block - (local.set $Ba - (local.get $za) - ) - (local.set $Ca - (local.get $Aa) - ) - (br $while-out53) - ) - (block - (local.set $za - (local.get $ba) - ) - (local.set $Aa - (local.get $aa) - ) - ) - ) - (br $while-in54) - ) - ) - (if - (i32.lt_u - (local.get $Ca) - (local.get $sa) - ) - (call $qa) - (block - (i32.store - (local.get $Ca) - (i32.const 0) - ) - (local.set $ya - (local.get $Ba) - ) - (br $do-once51) - ) - ) - ) - (block - (local.set $aa - (i32.load - (i32.add - (local.get $ma) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $aa) - (local.get $sa) - ) - (call $qa) - ) - (local.set $ba - (i32.add - (local.get $aa) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $ba) - ) - (local.get $ma) - ) - (call $qa) - ) - (local.set $U - (i32.add - (local.get $e) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $U) - ) - (local.get $ma) - ) - (block - (i32.store - (local.get $ba) - (local.get $e) - ) - (i32.store - (local.get $U) - (local.get $aa) - ) - (local.set $ya - (local.get $e) - ) - (br $do-once51) - ) - (call $qa) - ) - ) - ) - ) - (if - (i32.eqz - (local.get $$) - ) - (br $label$break$e) - ) - (local.set $e - (i32.load - (i32.add - (local.get $ma) - (i32.const 28) - ) - ) - ) - (local.set $da - (i32.add - (i32.const 1512) - (i32.shl - (local.get $e) - (i32.const 2) - ) - ) - ) - (block $do-once55 - (if - (i32.eq - (local.get $ma) - (i32.load - (local.get $da) - ) - ) - (block - (i32.store - (local.get $da) - (local.get $ya) - ) - (if - (local.get $ya) - (br $do-once55) - ) - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $e) - ) - (i32.const -1) - ) - ) - ) - (br $label$break$e) - ) - (block - (if - (i32.lt_u - (local.get $$) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $V - (i32.add - (local.get $$) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $V) - ) - (local.get $ma) - ) - (i32.store - (local.get $V) - (local.get $ya) - ) - (i32.store - (i32.add - (local.get $$) - (i32.const 20) - ) - (local.get $ya) - ) - ) - (if - (i32.eqz - (local.get $ya) - ) - (br $label$break$e) - ) - ) - ) - ) - (local.set $e - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $ya) - (local.get $e) - ) - (call $qa) - ) - (i32.store - (i32.add - (local.get $ya) - (i32.const 24) - ) - (local.get $$) - ) - (local.set $da - (i32.add - (local.get $ma) - (i32.const 16) - ) - ) - (local.set $V - (i32.load - (local.get $da) - ) - ) - (block $do-once57 - (if - (local.get $V) - (if - (i32.lt_u - (local.get $V) - (local.get $e) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $ya) - (i32.const 16) - ) - (local.get $V) - ) - (i32.store - (i32.add - (local.get $V) - (i32.const 24) - ) - (local.get $ya) - ) - (br $do-once57) - ) - ) - ) - ) - (local.set $V - (i32.load - (i32.add - (local.get $da) - (i32.const 4) - ) - ) - ) - (if - (i32.eqz - (local.get $V) - ) - (br $label$break$e) - ) - (if - (i32.lt_u - (local.get $V) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $ya) - (i32.const 20) - ) - (local.get $V) - ) - (i32.store - (i32.add - (local.get $V) - (i32.const 24) - ) - (local.get $ya) - ) - (br $label$break$e) - ) - ) - ) - ) - ) - (local.set $Da - (i32.add - (local.get $ma) - (local.get $ga) - ) - ) - (local.set $Ea - (i32.add - (local.get $ga) - (local.get $ea) - ) - ) - ) - (block - (local.set $Da - (local.get $ma) - ) - (local.set $Ea - (local.get $ea) - ) - ) - ) - (local.set $fa - (i32.add - (local.get $Da) - (i32.const 4) - ) - ) - (i32.store - (local.get $fa) - (i32.and - (i32.load - (local.get $fa) - ) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 4) - ) - (i32.or - (local.get $Ea) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $ka) - (local.get $Ea) - ) - (local.get $Ea) - ) - (local.set $fa - (i32.shr_u - (local.get $Ea) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $Ea) - (i32.const 256) - ) - (block - (local.set $la - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $fa) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $V - (i32.load - (i32.const 1208) - ) - ) - (local.set $e - (i32.shl - (i32.const 1) - (local.get $fa) - ) - ) - (block $do-once59 - (if - (i32.eqz - (i32.and - (local.get $V) - (local.get $e) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $V) - (local.get $e) - ) - ) - (local.set $Fa - (i32.add - (local.get $la) - (i32.const 8) - ) - ) - (local.set $Ga - (local.get $la) - ) - ) - (block - (local.set $fa - (i32.add - (local.get $la) - (i32.const 8) - ) - ) - (local.set $$ - (i32.load - (local.get $fa) - ) - ) - (if - (i32.ge_u - (local.get $$) - (i32.load - (i32.const 1224) - ) - ) - (block - (local.set $Fa - (local.get $fa) - ) - (local.set $Ga - (local.get $$) - ) - (br $do-once59) - ) - ) - (call $qa) - ) - ) - ) - (i32.store - (local.get $Fa) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $Ga) - (i32.const 12) - ) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 8) - ) - (local.get $Ga) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 12) - ) - (local.get $la) - ) - (br $do-once44) - ) - ) - (local.set $e - (i32.shr_u - (local.get $Ea) - (i32.const 8) - ) - ) - (block $do-once61 - (if - (i32.eqz - (local.get $e) - ) - (local.set $Ha - (i32.const 0) - ) - (block - (if - (i32.gt_u - (local.get $Ea) - (i32.const 16777215) - ) - (block - (local.set $Ha - (i32.const 31) - ) - (br $do-once61) - ) - ) - (local.set $V - (i32.and - (i32.shr_u - (i32.add - (local.get $e) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $ga - (i32.shl - (local.get $e) - (local.get $V) - ) - ) - (local.set $$ - (i32.and - (i32.shr_u - (i32.add - (local.get $ga) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $fa - (i32.shl - (local.get $ga) - (local.get $$) - ) - ) - (local.set $ga - (i32.and - (i32.shr_u - (i32.add - (local.get $fa) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $aa - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $$) - (local.get $V) - ) - (local.get $ga) - ) - ) - (i32.shr_u - (i32.shl - (local.get $fa) - (local.get $ga) - ) - (i32.const 15) - ) - ) - ) - (local.set $Ha - (i32.or - (i32.and - (i32.shr_u - (local.get $Ea) - (i32.add - (local.get $aa) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $aa) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.set $e - (i32.add - (i32.const 1512) - (i32.shl - (local.get $Ha) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 28) - ) - (local.get $Ha) - ) - (local.set $la - (i32.add - (local.get $ka) - (i32.const 16) - ) - ) - (i32.store - (i32.add - (local.get $la) - (i32.const 4) - ) - (i32.const 0) - ) - (i32.store - (local.get $la) - (i32.const 0) - ) - (local.set $la - (i32.load - (i32.const 1212) - ) - ) - (local.set $aa - (i32.shl - (i32.const 1) - (local.get $Ha) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $la) - (local.get $aa) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $la) - (local.get $aa) - ) - ) - (i32.store - (local.get $e) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 24) - ) - (local.get $e) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 12) - ) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 8) - ) - (local.get $ka) - ) - (br $do-once44) - ) - ) - (local.set $aa - (i32.shl - (local.get $Ea) - (if (result i32) - (i32.eq - (local.get $Ha) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $Ha) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $la - (i32.load - (local.get $e) - ) - ) - (loop $while-in64 - (block $while-out63 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $la) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $Ea) - ) - (block - (local.set $Ia - (local.get $la) - ) - (local.set $N - (i32.const 279) - ) - (br $while-out63) - ) - ) - (local.set $e - (i32.add - (i32.add - (local.get $la) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $aa) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $ga - (i32.load - (local.get $e) - ) - ) - (if - (i32.eqz - (local.get $ga) - ) - (block - (local.set $Ja - (local.get $e) - ) - (local.set $Ka - (local.get $la) - ) - (local.set $N - (i32.const 276) - ) - (br $while-out63) - ) - (block - (local.set $aa - (i32.shl - (local.get $aa) - (i32.const 1) - ) - ) - (local.set $la - (local.get $ga) - ) - ) - ) - (br $while-in64) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 276) - ) - (if - (i32.lt_u - (local.get $Ja) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $Ja) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 24) - ) - (local.get $Ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 12) - ) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 8) - ) - (local.get $ka) - ) - (br $do-once44) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 279) - ) - (block - (local.set $la - (i32.add - (local.get $Ia) - (i32.const 8) - ) - ) - (local.set $aa - (i32.load - (local.get $la) - ) - ) - (local.set $ga - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $aa) - (local.get $ga) - ) - (i32.ge_u - (local.get $Ia) - (local.get $ga) - ) - ) - (block - (i32.store - (i32.add - (local.get $aa) - (i32.const 12) - ) - (local.get $ka) - ) - (i32.store - (local.get $la) - (local.get $ka) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 8) - ) - (local.get $aa) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 12) - ) - (local.get $Ia) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once44) - ) - (call $qa) - ) - ) - ) - ) - ) - ) - ) - (local.set $p - (i32.add - (local.get $ca) - (i32.const 8) - ) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - (local.set $wa - (i32.const 1656) - ) - ) - ) - (loop $while-in66 - (block $while-out65 - (local.set $ka - (i32.load - (local.get $wa) - ) - ) - (if - (i32.le_u - (local.get $ka) - (local.get $ja) - ) - (block - (local.set $ea - (i32.add - (local.get $ka) - (i32.load - (i32.add - (local.get $wa) - (i32.const 4) - ) - ) - ) - ) - (if - (i32.gt_u - (local.get $ea) - (local.get $ja) - ) - (block - (local.set $La - (local.get $ea) - ) - (br $while-out65) - ) - ) - ) - ) - (local.set $wa - (i32.load - (i32.add - (local.get $wa) - (i32.const 8) - ) - ) - ) - (br $while-in66) - ) - ) - (local.set $ca - (i32.add - (local.get $La) - (i32.const -47) - ) - ) - (local.set $ea - (i32.add - (local.get $ca) - (i32.const 8) - ) - ) - (local.set $ka - (i32.add - (local.get $ca) - (if (result i32) - (i32.eq - (i32.and - (local.get $ea) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $ea) - ) - (i32.const 7) - ) - ) - ) - ) - (local.set $ea - (i32.add - (local.get $ja) - (i32.const 16) - ) - ) - (local.set $ca - (if (result i32) - (i32.lt_u - (local.get $ka) - (local.get $ea) - ) - (local.get $ja) - (local.get $ka) - ) - ) - (local.set $ka - (i32.add - (local.get $ca) - (i32.const 8) - ) - ) - (local.set $ma - (i32.add - (local.get $ha) - (i32.const 8) - ) - ) - (local.set $c - (if (result i32) - (i32.eq - (i32.and - (local.get $ma) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (local.get $ma) - ) - (i32.const 7) - ) - ) - ) - (local.set $ma - (i32.add - (local.get $ha) - (local.get $c) - ) - ) - (local.set $aa - (i32.sub - (i32.add - (local.get $ia) - (i32.const -40) - ) - (local.get $c) - ) - ) - (i32.store - (i32.const 1232) - (local.get $ma) - ) - (i32.store - (i32.const 1220) - (local.get $aa) - ) - (i32.store - (i32.add - (local.get $ma) - (i32.const 4) - ) - (i32.or - (local.get $aa) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (i32.add - (local.get $ma) - (local.get $aa) - ) - (i32.const 4) - ) - (i32.const 40) - ) - (i32.store - (i32.const 1236) - (i32.load - (i32.const 1696) - ) - ) - (local.set $aa - (i32.add - (local.get $ca) - (i32.const 4) - ) - ) - (i32.store - (local.get $aa) - (i32.const 27) - ) - (i32.store - (local.get $ka) - (i32.load - (i32.const 1656) - ) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 4) - ) - (i32.load - (i32.const 1660) - ) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 8) - ) - (i32.load - (i32.const 1664) - ) - ) - (i32.store - (i32.add - (local.get $ka) - (i32.const 12) - ) - (i32.load - (i32.const 1668) - ) - ) - (i32.store - (i32.const 1656) - (local.get $ha) - ) - (i32.store - (i32.const 1660) - (local.get $ia) - ) - (i32.store - (i32.const 1668) - (i32.const 0) - ) - (i32.store - (i32.const 1664) - (local.get $ka) - ) - (local.set $ka - (i32.add - (local.get $ca) - (i32.const 24) - ) - ) - (loop $do-in68 - (block $do-out67 - (local.set $ka - (i32.add - (local.get $ka) - (i32.const 4) - ) - ) - (i32.store - (local.get $ka) - (i32.const 7) - ) - (br_if $do-in68 - (i32.lt_u - (i32.add - (local.get $ka) - (i32.const 4) - ) - (local.get $La) - ) - ) - ) - ) - (if - (i32.ne - (local.get $ca) - (local.get $ja) - ) - (block - (local.set $ka - (i32.sub - (local.get $ca) - (local.get $ja) - ) - ) - (i32.store - (local.get $aa) - (i32.and - (i32.load - (local.get $aa) - ) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 4) - ) - (i32.or - (local.get $ka) - (i32.const 1) - ) - ) - (i32.store - (local.get $ca) - (local.get $ka) - ) - (local.set $ma - (i32.shr_u - (local.get $ka) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $ka) - (i32.const 256) - ) - (block - (local.set $c - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $ma) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $la - (i32.load - (i32.const 1208) - ) - ) - (local.set $ga - (i32.shl - (i32.const 1) - (local.get $ma) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $la) - (local.get $ga) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $la) - (local.get $ga) - ) - ) - (local.set $Ma - (i32.add - (local.get $c) - (i32.const 8) - ) - ) - (local.set $Na - (local.get $c) - ) - ) - (block - (local.set $ga - (i32.add - (local.get $c) - (i32.const 8) - ) - ) - (local.set $la - (i32.load - (local.get $ga) - ) - ) - (if - (i32.lt_u - (local.get $la) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $Ma - (local.get $ga) - ) - (local.set $Na - (local.get $la) - ) - ) - ) - ) - ) - (i32.store - (local.get $Ma) - (local.get $ja) - ) - (i32.store - (i32.add - (local.get $Na) - (i32.const 12) - ) - (local.get $ja) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 8) - ) - (local.get $Na) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 12) - ) - (local.get $c) - ) - (br $do-once38) - ) - ) - (local.set $c - (i32.shr_u - (local.get $ka) - (i32.const 8) - ) - ) - (if - (i32.eqz - (local.get $c) - ) - (local.set $Oa - (i32.const 0) - ) - (if - (i32.gt_u - (local.get $ka) - (i32.const 16777215) - ) - (local.set $Oa - (i32.const 31) - ) - (block - (local.set $la - (i32.and - (i32.shr_u - (i32.add - (local.get $c) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $ga - (i32.shl - (local.get $c) - (local.get $la) - ) - ) - (local.set $c - (i32.and - (i32.shr_u - (i32.add - (local.get $ga) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $ma - (i32.shl - (local.get $ga) - (local.get $c) - ) - ) - (local.set $ga - (i32.and - (i32.shr_u - (i32.add - (local.get $ma) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $e - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $c) - (local.get $la) - ) - (local.get $ga) - ) - ) - (i32.shr_u - (i32.shl - (local.get $ma) - (local.get $ga) - ) - (i32.const 15) - ) - ) - ) - (local.set $Oa - (i32.or - (i32.and - (i32.shr_u - (local.get $ka) - (i32.add - (local.get $e) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $e) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.set $e - (i32.add - (i32.const 1512) - (i32.shl - (local.get $Oa) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 28) - ) - (local.get $Oa) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 20) - ) - (i32.const 0) - ) - (i32.store - (local.get $ea) - (i32.const 0) - ) - (local.set $ga - (i32.load - (i32.const 1212) - ) - ) - (local.set $ma - (i32.shl - (i32.const 1) - (local.get $Oa) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $ga) - (local.get $ma) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $ga) - (local.get $ma) - ) - ) - (i32.store - (local.get $e) - (local.get $ja) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 24) - ) - (local.get $e) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 12) - ) - (local.get $ja) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 8) - ) - (local.get $ja) - ) - (br $do-once38) - ) - ) - (local.set $ma - (i32.shl - (local.get $ka) - (if (result i32) - (i32.eq - (local.get $Oa) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $Oa) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $ga - (i32.load - (local.get $e) - ) - ) - (loop $while-in70 - (block $while-out69 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $ga) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $ka) - ) - (block - (local.set $Pa - (local.get $ga) - ) - (local.set $N - (i32.const 305) - ) - (br $while-out69) - ) - ) - (local.set $e - (i32.add - (i32.add - (local.get $ga) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $ma) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $la - (i32.load - (local.get $e) - ) - ) - (if - (i32.eqz - (local.get $la) - ) - (block - (local.set $Ra - (local.get $e) - ) - (local.set $Sa - (local.get $ga) - ) - (local.set $N - (i32.const 302) - ) - (br $while-out69) - ) - (block - (local.set $ma - (i32.shl - (local.get $ma) - (i32.const 1) - ) - ) - (local.set $ga - (local.get $la) - ) - ) - ) - (br $while-in70) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 302) - ) - (if - (i32.lt_u - (local.get $Ra) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $Ra) - (local.get $ja) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 24) - ) - (local.get $Sa) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 12) - ) - (local.get $ja) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 8) - ) - (local.get $ja) - ) - (br $do-once38) - ) - ) - (if - (i32.eq - (local.get $N) - (i32.const 305) - ) - (block - (local.set $ga - (i32.add - (local.get $Pa) - (i32.const 8) - ) - ) - (local.set $ma - (i32.load - (local.get $ga) - ) - ) - (local.set $ka - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $ma) - (local.get $ka) - ) - (i32.ge_u - (local.get $Pa) - (local.get $ka) - ) - ) - (block - (i32.store - (i32.add - (local.get $ma) - (i32.const 12) - ) - (local.get $ja) - ) - (i32.store - (local.get $ga) - (local.get $ja) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 8) - ) - (local.get $ma) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 12) - ) - (local.get $Pa) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once38) - ) - (call $qa) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (local.set $ja - (i32.load - (i32.const 1220) - ) - ) - (if - (i32.gt_u - (local.get $ja) - (local.get $y) - ) - (block - (local.set $Pa - (i32.sub - (local.get $ja) - (local.get $y) - ) - ) - (i32.store - (i32.const 1220) - (local.get $Pa) - ) - (local.set $ja - (i32.load - (i32.const 1232) - ) - ) - (local.set $N - (i32.add - (local.get $ja) - (local.get $y) - ) - ) - (i32.store - (i32.const 1232) - (local.get $N) - ) - (i32.store - (i32.add - (local.get $N) - (i32.const 4) - ) - (i32.or - (local.get $Pa) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $ja) - (i32.const 4) - ) - (i32.or - (local.get $y) - (i32.const 3) - ) - ) - (local.set $p - (i32.add - (local.get $ja) - (i32.const 8) - ) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - ) - ) - ) - (local.set $ja - (call $Qa) - ) - (i32.store - (local.get $ja) - (i32.const 12) - ) - (local.set $p - (i32.const 0) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $p) - ) - ) - (func $fb (; 14 ;) (param $a i32) - (local $b i32) - (local $c i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local $i i32) - (local $j i32) - (local $l i32) - (local $m i32) - (local $n i32) - (local $o i32) - (local $p i32) - (local $q i32) - (local $r i32) - (local $s i32) - (local $t i32) - (local $u i32) - (local $v i32) - (local $w i32) - (local $x i32) - (local $y i32) - (local $z i32) - (local $A i32) - (local $B i32) - (local $C i32) - (local $D i32) - (local $E i32) - (local $F i32) - (local $G i32) - (local $H i32) - (local $I i32) - (local $J i32) - (local $K i32) - (local $L i32) - (if - (i32.eqz - (local.get $a) - ) - (return) - ) - (local.set $b - (i32.add - (local.get $a) - (i32.const -8) - ) - ) - (local.set $c - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $b) - (local.get $c) - ) - (call $qa) - ) - (local.set $d - (i32.load - (i32.add - (local.get $a) - (i32.const -4) - ) - ) - ) - (local.set $a - (i32.and - (local.get $d) - (i32.const 3) - ) - ) - (if - (i32.eq - (local.get $a) - (i32.const 1) - ) - (call $qa) - ) - (local.set $e - (i32.and - (local.get $d) - (i32.const -8) - ) - ) - (local.set $f - (i32.add - (local.get $b) - (local.get $e) - ) - ) - (block $do-once - (if - (i32.eqz - (i32.and - (local.get $d) - (i32.const 1) - ) - ) - (block - (local.set $g - (i32.load - (local.get $b) - ) - ) - (if - (i32.eqz - (local.get $a) - ) - (return) - ) - (local.set $h - (i32.add - (local.get $b) - (i32.sub - (i32.const 0) - (local.get $g) - ) - ) - ) - (local.set $i - (i32.add - (local.get $g) - (local.get $e) - ) - ) - (if - (i32.lt_u - (local.get $h) - (local.get $c) - ) - (call $qa) - ) - (if - (i32.eq - (local.get $h) - (i32.load - (i32.const 1228) - ) - ) - (block - (local.set $j - (i32.add - (local.get $f) - (i32.const 4) - ) - ) - (local.set $l - (i32.load - (local.get $j) - ) - ) - (if - (i32.ne - (i32.and - (local.get $l) - (i32.const 3) - ) - (i32.const 3) - ) - (block - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - (br $do-once) - ) - ) - (i32.store - (i32.const 1216) - (local.get $i) - ) - (i32.store - (local.get $j) - (i32.and - (local.get $l) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $h) - (i32.const 4) - ) - (i32.or - (local.get $i) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $h) - (local.get $i) - ) - (local.get $i) - ) - (return) - ) - ) - (local.set $l - (i32.shr_u - (local.get $g) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $g) - (i32.const 256) - ) - (block - (local.set $g - (i32.load - (i32.add - (local.get $h) - (i32.const 8) - ) - ) - ) - (local.set $j - (i32.load - (i32.add - (local.get $h) - (i32.const 12) - ) - ) - ) - (local.set $o - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $l) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (if - (i32.ne - (local.get $g) - (local.get $o) - ) - (block - (if - (i32.lt_u - (local.get $g) - (local.get $c) - ) - (call $qa) - ) - (if - (i32.ne - (i32.load - (i32.add - (local.get $g) - (i32.const 12) - ) - ) - (local.get $h) - ) - (call $qa) - ) - ) - ) - (if - (i32.eq - (local.get $j) - (local.get $g) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (i32.load - (i32.const 1208) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $l) - ) - (i32.const -1) - ) - ) - ) - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - (br $do-once) - ) - ) - (if - (i32.eq - (local.get $j) - (local.get $o) - ) - (local.set $p - (i32.add - (local.get $j) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $j) - (local.get $c) - ) - (call $qa) - ) - (local.set $o - (i32.add - (local.get $j) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $o) - ) - (local.get $h) - ) - (local.set $p - (local.get $o) - ) - (call $qa) - ) - ) - ) - (i32.store - (i32.add - (local.get $g) - (i32.const 12) - ) - (local.get $j) - ) - (i32.store - (local.get $p) - (local.get $g) - ) - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - (br $do-once) - ) - ) - (local.set $g - (i32.load - (i32.add - (local.get $h) - (i32.const 24) - ) - ) - ) - (local.set $j - (i32.load - (i32.add - (local.get $h) - (i32.const 12) - ) - ) - ) - (block $do-once0 - (if - (i32.eq - (local.get $j) - (local.get $h) - ) - (block - (local.set $o - (i32.add - (local.get $h) - (i32.const 16) - ) - ) - (local.set $l - (i32.add - (local.get $o) - (i32.const 4) - ) - ) - (local.set $q - (i32.load - (local.get $l) - ) - ) - (if - (i32.eqz - (local.get $q) - ) - (block - (local.set $r - (i32.load - (local.get $o) - ) - ) - (if - (i32.eqz - (local.get $r) - ) - (block - (local.set $s - (i32.const 0) - ) - (br $do-once0) - ) - (block - (local.set $t - (local.get $r) - ) - (local.set $u - (local.get $o) - ) - ) - ) - ) - (block - (local.set $t - (local.get $q) - ) - (local.set $u - (local.get $l) - ) - ) - ) - (loop $while-in - (block $while-out - (local.set $l - (i32.add - (local.get $t) - (i32.const 20) - ) - ) - (local.set $q - (i32.load - (local.get $l) - ) - ) - (if - (local.get $q) - (block - (local.set $t - (local.get $q) - ) - (local.set $u - (local.get $l) - ) - (br $while-in) - ) - ) - (local.set $l - (i32.add - (local.get $t) - (i32.const 16) - ) - ) - (local.set $q - (i32.load - (local.get $l) - ) - ) - (if - (i32.eqz - (local.get $q) - ) - (block - (local.set $v - (local.get $t) - ) - (local.set $w - (local.get $u) - ) - (br $while-out) - ) - (block - (local.set $t - (local.get $q) - ) - (local.set $u - (local.get $l) - ) - ) - ) - (br $while-in) - ) - ) - (if - (i32.lt_u - (local.get $w) - (local.get $c) - ) - (call $qa) - (block - (i32.store - (local.get $w) - (i32.const 0) - ) - (local.set $s - (local.get $v) - ) - (br $do-once0) - ) - ) - ) - (block - (local.set $l - (i32.load - (i32.add - (local.get $h) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $l) - (local.get $c) - ) - (call $qa) - ) - (local.set $q - (i32.add - (local.get $l) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $q) - ) - (local.get $h) - ) - (call $qa) - ) - (local.set $o - (i32.add - (local.get $j) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $o) - ) - (local.get $h) - ) - (block - (i32.store - (local.get $q) - (local.get $j) - ) - (i32.store - (local.get $o) - (local.get $l) - ) - (local.set $s - (local.get $j) - ) - (br $do-once0) - ) - (call $qa) - ) - ) - ) - ) - (if - (i32.eqz - (local.get $g) - ) - (block - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - ) - (block - (local.set $j - (i32.load - (i32.add - (local.get $h) - (i32.const 28) - ) - ) - ) - (local.set $l - (i32.add - (i32.const 1512) - (i32.shl - (local.get $j) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $h) - (i32.load - (local.get $l) - ) - ) - (block - (i32.store - (local.get $l) - (local.get $s) - ) - (if - (i32.eqz - (local.get $s) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $j) - ) - (i32.const -1) - ) - ) - ) - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - (br $do-once) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $g) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $j - (i32.add - (local.get $g) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $j) - ) - (local.get $h) - ) - (i32.store - (local.get $j) - (local.get $s) - ) - (i32.store - (i32.add - (local.get $g) - (i32.const 20) - ) - (local.get $s) - ) - ) - (if - (i32.eqz - (local.get $s) - ) - (block - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - (br $do-once) - ) - ) - ) - ) - (local.set $j - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $s) - (local.get $j) - ) - (call $qa) - ) - (i32.store - (i32.add - (local.get $s) - (i32.const 24) - ) - (local.get $g) - ) - (local.set $l - (i32.add - (local.get $h) - (i32.const 16) - ) - ) - (local.set $o - (i32.load - (local.get $l) - ) - ) - (block $do-once2 - (if - (local.get $o) - (if - (i32.lt_u - (local.get $o) - (local.get $j) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $s) - (i32.const 16) - ) - (local.get $o) - ) - (i32.store - (i32.add - (local.get $o) - (i32.const 24) - ) - (local.get $s) - ) - (br $do-once2) - ) - ) - ) - ) - (local.set $o - (i32.load - (i32.add - (local.get $l) - (i32.const 4) - ) - ) - ) - (if - (i32.eqz - (local.get $o) - ) - (block - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - ) - (if - (i32.lt_u - (local.get $o) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $s) - (i32.const 20) - ) - (local.get $o) - ) - (i32.store - (i32.add - (local.get $o) - (i32.const 24) - ) - (local.get $s) - ) - (local.set $m - (local.get $h) - ) - (local.set $n - (local.get $i) - ) - (br $do-once) - ) - ) - ) - ) - ) - ) - (block - (local.set $m - (local.get $b) - ) - (local.set $n - (local.get $e) - ) - ) - ) - ) - (if - (i32.ge_u - (local.get $m) - (local.get $f) - ) - (call $qa) - ) - (local.set $e - (i32.add - (local.get $f) - (i32.const 4) - ) - ) - (local.set $b - (i32.load - (local.get $e) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $b) - (i32.const 1) - ) - ) - (call $qa) - ) - (if - (i32.eqz - (i32.and - (local.get $b) - (i32.const 2) - ) - ) - (block - (if - (i32.eq - (local.get $f) - (i32.load - (i32.const 1232) - ) - ) - (block - (local.set $s - (i32.add - (i32.load - (i32.const 1220) - ) - (local.get $n) - ) - ) - (i32.store - (i32.const 1220) - (local.get $s) - ) - (i32.store - (i32.const 1232) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 4) - ) - (i32.or - (local.get $s) - (i32.const 1) - ) - ) - (if - (i32.ne - (local.get $m) - (i32.load - (i32.const 1228) - ) - ) - (return) - ) - (i32.store - (i32.const 1228) - (i32.const 0) - ) - (i32.store - (i32.const 1216) - (i32.const 0) - ) - (return) - ) - ) - (if - (i32.eq - (local.get $f) - (i32.load - (i32.const 1228) - ) - ) - (block - (local.set $s - (i32.add - (i32.load - (i32.const 1216) - ) - (local.get $n) - ) - ) - (i32.store - (i32.const 1216) - (local.get $s) - ) - (i32.store - (i32.const 1228) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 4) - ) - (i32.or - (local.get $s) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $m) - (local.get $s) - ) - (local.get $s) - ) - (return) - ) - ) - (local.set $s - (i32.add - (i32.and - (local.get $b) - (i32.const -8) - ) - (local.get $n) - ) - ) - (local.set $c - (i32.shr_u - (local.get $b) - (i32.const 3) - ) - ) - (block $do-once4 - (if - (i32.lt_u - (local.get $b) - (i32.const 256) - ) - (block - (local.set $v - (i32.load - (i32.add - (local.get $f) - (i32.const 8) - ) - ) - ) - (local.set $w - (i32.load - (i32.add - (local.get $f) - (i32.const 12) - ) - ) - ) - (local.set $u - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $c) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (if - (i32.ne - (local.get $v) - (local.get $u) - ) - (block - (if - (i32.lt_u - (local.get $v) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (if - (i32.ne - (i32.load - (i32.add - (local.get $v) - (i32.const 12) - ) - ) - (local.get $f) - ) - (call $qa) - ) - ) - ) - (if - (i32.eq - (local.get $w) - (local.get $v) - ) - (block - (i32.store - (i32.const 1208) - (i32.and - (i32.load - (i32.const 1208) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $c) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - (if - (i32.eq - (local.get $w) - (local.get $u) - ) - (local.set $x - (i32.add - (local.get $w) - (i32.const 8) - ) - ) - (block - (if - (i32.lt_u - (local.get $w) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $u - (i32.add - (local.get $w) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $u) - ) - (local.get $f) - ) - (local.set $x - (local.get $u) - ) - (call $qa) - ) - ) - ) - (i32.store - (i32.add - (local.get $v) - (i32.const 12) - ) - (local.get $w) - ) - (i32.store - (local.get $x) - (local.get $v) - ) - ) - (block - (local.set $v - (i32.load - (i32.add - (local.get $f) - (i32.const 24) - ) - ) - ) - (local.set $w - (i32.load - (i32.add - (local.get $f) - (i32.const 12) - ) - ) - ) - (block $do-once6 - (if - (i32.eq - (local.get $w) - (local.get $f) - ) - (block - (local.set $u - (i32.add - (local.get $f) - (i32.const 16) - ) - ) - (local.set $t - (i32.add - (local.get $u) - (i32.const 4) - ) - ) - (local.set $p - (i32.load - (local.get $t) - ) - ) - (if - (i32.eqz - (local.get $p) - ) - (block - (local.set $a - (i32.load - (local.get $u) - ) - ) - (if - (i32.eqz - (local.get $a) - ) - (block - (local.set $y - (i32.const 0) - ) - (br $do-once6) - ) - (block - (local.set $z - (local.get $a) - ) - (local.set $A - (local.get $u) - ) - ) - ) - ) - (block - (local.set $z - (local.get $p) - ) - (local.set $A - (local.get $t) - ) - ) - ) - (loop $while-in9 - (block $while-out8 - (local.set $t - (i32.add - (local.get $z) - (i32.const 20) - ) - ) - (local.set $p - (i32.load - (local.get $t) - ) - ) - (if - (local.get $p) - (block - (local.set $z - (local.get $p) - ) - (local.set $A - (local.get $t) - ) - (br $while-in9) - ) - ) - (local.set $t - (i32.add - (local.get $z) - (i32.const 16) - ) - ) - (local.set $p - (i32.load - (local.get $t) - ) - ) - (if - (i32.eqz - (local.get $p) - ) - (block - (local.set $B - (local.get $z) - ) - (local.set $C - (local.get $A) - ) - (br $while-out8) - ) - (block - (local.set $z - (local.get $p) - ) - (local.set $A - (local.get $t) - ) - ) - ) - (br $while-in9) - ) - ) - (if - (i32.lt_u - (local.get $C) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $C) - (i32.const 0) - ) - (local.set $y - (local.get $B) - ) - (br $do-once6) - ) - ) - ) - (block - (local.set $t - (i32.load - (i32.add - (local.get $f) - (i32.const 8) - ) - ) - ) - (if - (i32.lt_u - (local.get $t) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $p - (i32.add - (local.get $t) - (i32.const 12) - ) - ) - (if - (i32.ne - (i32.load - (local.get $p) - ) - (local.get $f) - ) - (call $qa) - ) - (local.set $u - (i32.add - (local.get $w) - (i32.const 8) - ) - ) - (if - (i32.eq - (i32.load - (local.get $u) - ) - (local.get $f) - ) - (block - (i32.store - (local.get $p) - (local.get $w) - ) - (i32.store - (local.get $u) - (local.get $t) - ) - (local.set $y - (local.get $w) - ) - (br $do-once6) - ) - (call $qa) - ) - ) - ) - ) - (if - (local.get $v) - (block - (local.set $w - (i32.load - (i32.add - (local.get $f) - (i32.const 28) - ) - ) - ) - (local.set $i - (i32.add - (i32.const 1512) - (i32.shl - (local.get $w) - (i32.const 2) - ) - ) - ) - (if - (i32.eq - (local.get $f) - (i32.load - (local.get $i) - ) - ) - (block - (i32.store - (local.get $i) - (local.get $y) - ) - (if - (i32.eqz - (local.get $y) - ) - (block - (i32.store - (i32.const 1212) - (i32.and - (i32.load - (i32.const 1212) - ) - (i32.xor - (i32.shl - (i32.const 1) - (local.get $w) - ) - (i32.const -1) - ) - ) - ) - (br $do-once4) - ) - ) - ) - (block - (if - (i32.lt_u - (local.get $v) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - ) - (local.set $w - (i32.add - (local.get $v) - (i32.const 16) - ) - ) - (if - (i32.eq - (i32.load - (local.get $w) - ) - (local.get $f) - ) - (i32.store - (local.get $w) - (local.get $y) - ) - (i32.store - (i32.add - (local.get $v) - (i32.const 20) - ) - (local.get $y) - ) - ) - (if - (i32.eqz - (local.get $y) - ) - (br $do-once4) - ) - ) - ) - (local.set $w - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.lt_u - (local.get $y) - (local.get $w) - ) - (call $qa) - ) - (i32.store - (i32.add - (local.get $y) - (i32.const 24) - ) - (local.get $v) - ) - (local.set $i - (i32.add - (local.get $f) - (i32.const 16) - ) - ) - (local.set $h - (i32.load - (local.get $i) - ) - ) - (block $do-once10 - (if - (local.get $h) - (if - (i32.lt_u - (local.get $h) - (local.get $w) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $y) - (i32.const 16) - ) - (local.get $h) - ) - (i32.store - (i32.add - (local.get $h) - (i32.const 24) - ) - (local.get $y) - ) - (br $do-once10) - ) - ) - ) - ) - (local.set $h - (i32.load - (i32.add - (local.get $i) - (i32.const 4) - ) - ) - ) - (if - (local.get $h) - (if - (i32.lt_u - (local.get $h) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (i32.add - (local.get $y) - (i32.const 20) - ) - (local.get $h) - ) - (i32.store - (i32.add - (local.get $h) - (i32.const 24) - ) - (local.get $y) - ) - (br $do-once4) - ) - ) - ) - ) - ) - ) - ) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 4) - ) - (i32.or - (local.get $s) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $m) - (local.get $s) - ) - (local.get $s) - ) - (if - (i32.eq - (local.get $m) - (i32.load - (i32.const 1228) - ) - ) - (block - (i32.store - (i32.const 1216) - (local.get $s) - ) - (return) - ) - (local.set $D - (local.get $s) - ) - ) - ) - (block - (i32.store - (local.get $e) - (i32.and - (local.get $b) - (i32.const -2) - ) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 4) - ) - (i32.or - (local.get $n) - (i32.const 1) - ) - ) - (i32.store - (i32.add - (local.get $m) - (local.get $n) - ) - (local.get $n) - ) - (local.set $D - (local.get $n) - ) - ) - ) - (local.set $n - (i32.shr_u - (local.get $D) - (i32.const 3) - ) - ) - (if - (i32.lt_u - (local.get $D) - (i32.const 256) - ) - (block - (local.set $b - (i32.add - (i32.const 1248) - (i32.shl - (i32.shl - (local.get $n) - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - (local.set $e - (i32.load - (i32.const 1208) - ) - ) - (local.set $s - (i32.shl - (i32.const 1) - (local.get $n) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $e) - (local.get $s) - ) - ) - (block - (i32.store - (i32.const 1208) - (i32.or - (local.get $e) - (local.get $s) - ) - ) - (local.set $E - (i32.add - (local.get $b) - (i32.const 8) - ) - ) - (local.set $F - (local.get $b) - ) - ) - (block - (local.set $s - (i32.add - (local.get $b) - (i32.const 8) - ) - ) - (local.set $e - (i32.load - (local.get $s) - ) - ) - (if - (i32.lt_u - (local.get $e) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (local.set $E - (local.get $s) - ) - (local.set $F - (local.get $e) - ) - ) - ) - ) - ) - (i32.store - (local.get $E) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $F) - (i32.const 12) - ) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 8) - ) - (local.get $F) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 12) - ) - (local.get $b) - ) - (return) - ) - ) - (local.set $b - (i32.shr_u - (local.get $D) - (i32.const 8) - ) - ) - (if - (i32.eqz - (local.get $b) - ) - (local.set $G - (i32.const 0) - ) - (if - (i32.gt_u - (local.get $D) - (i32.const 16777215) - ) - (local.set $G - (i32.const 31) - ) - (block - (local.set $F - (i32.and - (i32.shr_u - (i32.add - (local.get $b) - (i32.const 1048320) - ) - (i32.const 16) - ) - (i32.const 8) - ) - ) - (local.set $E - (i32.shl - (local.get $b) - (local.get $F) - ) - ) - (local.set $b - (i32.and - (i32.shr_u - (i32.add - (local.get $E) - (i32.const 520192) - ) - (i32.const 16) - ) - (i32.const 4) - ) - ) - (local.set $e - (i32.shl - (local.get $E) - (local.get $b) - ) - ) - (local.set $E - (i32.and - (i32.shr_u - (i32.add - (local.get $e) - (i32.const 245760) - ) - (i32.const 16) - ) - (i32.const 2) - ) - ) - (local.set $s - (i32.add - (i32.sub - (i32.const 14) - (i32.or - (i32.or - (local.get $b) - (local.get $F) - ) - (local.get $E) - ) - ) - (i32.shr_u - (i32.shl - (local.get $e) - (local.get $E) - ) - (i32.const 15) - ) - ) - ) - (local.set $G - (i32.or - (i32.and - (i32.shr_u - (local.get $D) - (i32.add - (local.get $s) - (i32.const 7) - ) - ) - (i32.const 1) - ) - (i32.shl - (local.get $s) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (local.set $s - (i32.add - (i32.const 1512) - (i32.shl - (local.get $G) - (i32.const 2) - ) - ) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 28) - ) - (local.get $G) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 20) - ) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 16) - ) - (i32.const 0) - ) - (local.set $E - (i32.load - (i32.const 1212) - ) - ) - (local.set $e - (i32.shl - (i32.const 1) - (local.get $G) - ) - ) - (block $do-once12 - (if - (i32.eqz - (i32.and - (local.get $E) - (local.get $e) - ) - ) - (block - (i32.store - (i32.const 1212) - (i32.or - (local.get $E) - (local.get $e) - ) - ) - (i32.store - (local.get $s) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 24) - ) - (local.get $s) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 12) - ) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 8) - ) - (local.get $m) - ) - ) - (block - (local.set $F - (i32.shl - (local.get $D) - (if (result i32) - (i32.eq - (local.get $G) - (i32.const 31) - ) - (i32.const 0) - (i32.sub - (i32.const 25) - (i32.shr_u - (local.get $G) - (i32.const 1) - ) - ) - ) - ) - ) - (local.set $b - (i32.load - (local.get $s) - ) - ) - (loop $while-in15 - (block $while-out14 - (if - (i32.eq - (i32.and - (i32.load - (i32.add - (local.get $b) - (i32.const 4) - ) - ) - (i32.const -8) - ) - (local.get $D) - ) - (block - (local.set $H - (local.get $b) - ) - (local.set $I - (i32.const 130) - ) - (br $while-out14) - ) - ) - (local.set $n - (i32.add - (i32.add - (local.get $b) - (i32.const 16) - ) - (i32.shl - (i32.shr_u - (local.get $F) - (i32.const 31) - ) - (i32.const 2) - ) - ) - ) - (local.set $y - (i32.load - (local.get $n) - ) - ) - (if - (i32.eqz - (local.get $y) - ) - (block - (local.set $J - (local.get $n) - ) - (local.set $K - (local.get $b) - ) - (local.set $I - (i32.const 127) - ) - (br $while-out14) - ) - (block - (local.set $F - (i32.shl - (local.get $F) - (i32.const 1) - ) - ) - (local.set $b - (local.get $y) - ) - ) - ) - (br $while-in15) - ) - ) - (if - (i32.eq - (local.get $I) - (i32.const 127) - ) - (if - (i32.lt_u - (local.get $J) - (i32.load - (i32.const 1224) - ) - ) - (call $qa) - (block - (i32.store - (local.get $J) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 24) - ) - (local.get $K) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 12) - ) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 8) - ) - (local.get $m) - ) - (br $do-once12) - ) - ) - (if - (i32.eq - (local.get $I) - (i32.const 130) - ) - (block - (local.set $b - (i32.add - (local.get $H) - (i32.const 8) - ) - ) - (local.set $F - (i32.load - (local.get $b) - ) - ) - (local.set $i - (i32.load - (i32.const 1224) - ) - ) - (if - (i32.and - (i32.ge_u - (local.get $F) - (local.get $i) - ) - (i32.ge_u - (local.get $H) - (local.get $i) - ) - ) - (block - (i32.store - (i32.add - (local.get $F) - (i32.const 12) - ) - (local.get $m) - ) - (i32.store - (local.get $b) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 8) - ) - (local.get $F) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 12) - ) - (local.get $H) - ) - (i32.store - (i32.add - (local.get $m) - (i32.const 24) - ) - (i32.const 0) - ) - (br $do-once12) - ) - (call $qa) - ) - ) - ) - ) - ) - ) - ) - (local.set $m - (i32.add - (i32.load - (i32.const 1240) - ) - (i32.const -1) - ) - ) - (i32.store - (i32.const 1240) - (local.get $m) - ) - (if - (i32.eqz - (local.get $m) - ) - (local.set $L - (i32.const 1664) - ) - (return) - ) - (loop $while-in17 - (block $while-out16 - (local.set $m - (i32.load - (local.get $L) - ) - ) - (if - (i32.eqz - (local.get $m) - ) - (br $while-out16) - (local.set $L - (i32.add - (local.get $m) - (i32.const 8) - ) - ) - ) - (br $while-in17) - ) - ) - (i32.store - (i32.const 1240) - (i32.const -1) - ) - (return) - ) - (func $Ra (; 15 ;) (param $a i32) (param $b i32) (param $c i32) (result i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local $i i32) - (local $j i32) - (local $l i32) - (local $m i32) - (local $n i32) - (local $o i32) - (local $p i32) - (local $q i32) - (local $s i32) - (local $t i32) - (local $u i32) - (local $v i32) - (local $w i32) - (local $x i32) - (local $y i32) - (local $z i32) - (local.set $d - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 48) - ) - ) - (local.set $e - (i32.add - (local.get $d) - (i32.const 16) - ) - ) - (local.set $f - (local.get $d) - ) - (local.set $g - (i32.add - (local.get $d) - (i32.const 32) - ) - ) - (local.set $h - (i32.add - (local.get $a) - (i32.const 28) - ) - ) - (local.set $i - (i32.load - (local.get $h) - ) - ) - (i32.store - (local.get $g) - (local.get $i) - ) - (local.set $j - (i32.add - (local.get $a) - (i32.const 20) - ) - ) - (local.set $l - (i32.sub - (i32.load - (local.get $j) - ) - (local.get $i) - ) - ) - (i32.store - (i32.add - (local.get $g) - (i32.const 4) - ) - (local.get $l) - ) - (i32.store - (i32.add - (local.get $g) - (i32.const 8) - ) - (local.get $b) - ) - (i32.store - (i32.add - (local.get $g) - (i32.const 12) - ) - (local.get $c) - ) - (local.set $b - (i32.add - (local.get $a) - (i32.const 60) - ) - ) - (local.set $i - (i32.add - (local.get $a) - (i32.const 44) - ) - ) - (local.set $m - (local.get $g) - ) - (local.set $g - (i32.const 2) - ) - (local.set $n - (i32.add - (local.get $l) - (local.get $c) - ) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.load - (i32.const 1160) - ) - ) - (block - (i32.store - (local.get $e) - (i32.load - (local.get $b) - ) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 4) - ) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 8) - ) - (local.get $g) - ) - (local.set $o - (call $Pa - (call $ya - (i32.const 146) - (local.get $e) - ) - ) - ) - ) - (block - (call $ra - (i32.const 1) - (local.get $a) - ) - (i32.store - (local.get $f) - (i32.load - (local.get $b) - ) - ) - (i32.store - (i32.add - (local.get $f) - (i32.const 4) - ) - (local.get $m) - ) - (i32.store - (i32.add - (local.get $f) - (i32.const 8) - ) - (local.get $g) - ) - (local.set $l - (call $Pa - (call $ya - (i32.const 146) - (local.get $f) - ) - ) - ) - (call $oa - (i32.const 0) - ) - (local.set $o - (local.get $l) - ) - ) - ) - (if - (i32.eq - (local.get $n) - (local.get $o) - ) - (block - (local.set $p - (i32.const 6) - ) - (br $while-out) - ) - ) - (if - (i32.lt_s - (local.get $o) - (i32.const 0) - ) - (block - (local.set $q - (local.get $m) - ) - (local.set $s - (local.get $g) - ) - (local.set $p - (i32.const 8) - ) - (br $while-out) - ) - ) - (local.set $l - (i32.sub - (local.get $n) - (local.get $o) - ) - ) - (local.set $t - (i32.load - (i32.add - (local.get $m) - (i32.const 4) - ) - ) - ) - (if - (i32.gt_u - (local.get $o) - (local.get $t) - ) - (block - (local.set $u - (i32.load - (local.get $i) - ) - ) - (i32.store - (local.get $h) - (local.get $u) - ) - (i32.store - (local.get $j) - (local.get $u) - ) - (local.set $v - (i32.load - (i32.add - (local.get $m) - (i32.const 12) - ) - ) - ) - (local.set $w - (i32.sub - (local.get $o) - (local.get $t) - ) - ) - (local.set $x - (i32.add - (local.get $m) - (i32.const 8) - ) - ) - (local.set $y - (i32.add - (local.get $g) - (i32.const -1) - ) - ) - ) - (if - (i32.eq - (local.get $g) - (i32.const 2) - ) - (block - (i32.store - (local.get $h) - (i32.add - (i32.load - (local.get $h) - ) - (local.get $o) - ) - ) - (local.set $v - (local.get $t) - ) - (local.set $w - (local.get $o) - ) - (local.set $x - (local.get $m) - ) - (local.set $y - (i32.const 2) - ) - ) - (block - (local.set $v - (local.get $t) - ) - (local.set $w - (local.get $o) - ) - (local.set $x - (local.get $m) - ) - (local.set $y - (local.get $g) - ) - ) - ) - ) - (i32.store - (local.get $x) - (i32.add - (i32.load - (local.get $x) - ) - (local.get $w) - ) - ) - (i32.store - (i32.add - (local.get $x) - (i32.const 4) - ) - (i32.sub - (local.get $v) - (local.get $w) - ) - ) - (local.set $m - (local.get $x) - ) - (local.set $g - (local.get $y) - ) - (local.set $n - (local.get $l) - ) - (br $while-in) - ) - ) - (if - (i32.eq - (local.get $p) - (i32.const 6) - ) - (block - (local.set $n - (i32.load - (local.get $i) - ) - ) - (i32.store - (i32.add - (local.get $a) - (i32.const 16) - ) - (i32.add - (local.get $n) - (i32.load - (i32.add - (local.get $a) - (i32.const 48) - ) - ) - ) - ) - (local.set $i - (local.get $n) - ) - (i32.store - (local.get $h) - (local.get $i) - ) - (i32.store - (local.get $j) - (local.get $i) - ) - (local.set $z - (local.get $c) - ) - ) - (if - (i32.eq - (local.get $p) - (i32.const 8) - ) - (block - (i32.store - (i32.add - (local.get $a) - (i32.const 16) - ) - (i32.const 0) - ) - (i32.store - (local.get $h) - (i32.const 0) - ) - (i32.store - (local.get $j) - (i32.const 0) - ) - (i32.store - (local.get $a) - (i32.or - (i32.load - (local.get $a) - ) - (i32.const 32) - ) - ) - (if - (i32.eq - (local.get $s) - (i32.const 2) - ) - (local.set $z - (i32.const 0) - ) - (local.set $z - (i32.sub - (local.get $c) - (i32.load - (i32.add - (local.get $q) - (i32.const 4) - ) - ) - ) - ) - ) - ) - ) - ) - (global.set $r - (local.get $d) - ) - (return - (local.get $z) - ) - ) - (func $Wa (; 16 ;) (param $a i32) (param $b i32) (param $c i32) (result i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local $j i32) - (local $l i32) - (local $m i32) - (local $n i32) - (local $o i32) - (local $p i32) - (local $q i32) - (local.set $d - (i32.add - (local.get $c) - (i32.const 16) - ) - ) - (local.set $e - (i32.load - (local.get $d) - ) - ) - (if - (i32.eqz - (local.get $e) - ) - (if - (i32.eqz - (call $Xa - (local.get $c) - ) - ) - (block - (local.set $f - (i32.load - (local.get $d) - ) - ) - (local.set $g - (i32.const 5) - ) - ) - (local.set $h - (i32.const 0) - ) - ) - (block - (local.set $f - (local.get $e) - ) - (local.set $g - (i32.const 5) - ) - ) - ) - (block $label$break$a - (if - (i32.eq - (local.get $g) - (i32.const 5) - ) - (block - (local.set $e - (i32.add - (local.get $c) - (i32.const 20) - ) - ) - (local.set $d - (i32.load - (local.get $e) - ) - ) - (local.set $j - (local.get $d) - ) - (if - (i32.lt_u - (i32.sub - (local.get $f) - (local.get $d) - ) - (local.get $b) - ) - (block - (local.set $h - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $c) - (local.get $a) - (local.get $b) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $c) - (i32.const 36) - ) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - (br $label$break$a) - ) - ) - (block $label$break$b - (if - (i32.gt_s - (i32.load8_s - (i32.add - (local.get $c) - (i32.const 75) - ) - ) - (i32.const -1) - ) - (block - (local.set $d - (local.get $b) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (local.get $d) - ) - (block - (local.set $l - (local.get $b) - ) - (local.set $m - (local.get $a) - ) - (local.set $n - (local.get $j) - ) - (local.set $o - (i32.const 0) - ) - (br $label$break$b) - ) - ) - (local.set $p - (i32.add - (local.get $d) - (i32.const -1) - ) - ) - (if - (i32.eq - (i32.load8_s - (i32.add - (local.get $a) - (local.get $p) - ) - ) - (i32.const 10) - ) - (block - (local.set $q - (local.get $d) - ) - (br $while-out) - ) - (local.set $d - (local.get $p) - ) - ) - (br $while-in) - ) - ) - (if - (i32.lt_u - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $c) - (local.get $a) - (local.get $q) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $c) - (i32.const 36) - ) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - (local.get $q) - ) - (block - (local.set $h - (local.get $q) - ) - (br $label$break$a) - ) - ) - (local.set $l - (i32.sub - (local.get $b) - (local.get $q) - ) - ) - (local.set $m - (i32.add - (local.get $a) - (local.get $q) - ) - ) - (local.set $n - (i32.load - (local.get $e) - ) - ) - (local.set $o - (local.get $q) - ) - ) - (block - (local.set $l - (local.get $b) - ) - (local.set $m - (local.get $a) - ) - (local.set $n - (local.get $j) - ) - (local.set $o - (i32.const 0) - ) - ) - ) - ) - (drop - (call $jb - (local.get $n) - (local.get $m) - (local.get $l) - ) - ) - (i32.store - (local.get $e) - (i32.add - (i32.load - (local.get $e) - ) - (local.get $l) - ) - ) - (local.set $h - (i32.add - (local.get $o) - (local.get $l) - ) - ) - ) - ) - ) - (return - (local.get $h) - ) - ) - (func $Za (; 17 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local $j i32) - (local $l i32) - (local $m i32) - (local.set $b - (local.get $a) - ) - (block $label$break$a - (if - (i32.eqz - (i32.and - (local.get $b) - (i32.const 3) - ) - ) - (block - (local.set $c - (local.get $a) - ) - (local.set $d - (i32.const 4) - ) - ) - (block - (local.set $e - (local.get $a) - ) - (local.set $f - (local.get $b) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.load8_s - (local.get $e) - ) - ) - (block - (local.set $g - (local.get $f) - ) - (br $label$break$a) - ) - ) - (local.set $h - (i32.add - (local.get $e) - (i32.const 1) - ) - ) - (local.set $f - (local.get $h) - ) - (if - (i32.eqz - (i32.and - (local.get $f) - (i32.const 3) - ) - ) - (block - (local.set $c - (local.get $h) - ) - (local.set $d - (i32.const 4) - ) - (br $while-out) - ) - (local.set $e - (local.get $h) - ) - ) - (br $while-in) - ) - ) - ) - ) - ) - (if - (i32.eq - (local.get $d) - (i32.const 4) - ) - (block - (local.set $d - (local.get $c) - ) - (loop $while-in1 - (block $while-out0 - (local.set $c - (i32.load - (local.get $d) - ) - ) - (if - (i32.eqz - (i32.and - (i32.xor - (i32.and - (local.get $c) - (i32.const -2139062144) - ) - (i32.const -2139062144) - ) - (i32.add - (local.get $c) - (i32.const -16843009) - ) - ) - ) - (local.set $d - (i32.add - (local.get $d) - (i32.const 4) - ) - ) - (block - (local.set $j - (local.get $c) - ) - (local.set $l - (local.get $d) - ) - (br $while-out0) - ) - ) - (br $while-in1) - ) - ) - (if - (i32.eqz - (i32.shr_s - (i32.shl - (i32.and - (local.get $j) - (i32.const 255) - ) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (local.set $m - (local.get $l) - ) - (block - (local.set $j - (local.get $l) - ) - (loop $while-in3 - (block $while-out2 - (local.set $l - (i32.add - (local.get $j) - (i32.const 1) - ) - ) - (if - (i32.eqz - (i32.load8_s - (local.get $l) - ) - ) - (block - (local.set $m - (local.get $l) - ) - (br $while-out2) - ) - (local.set $j - (local.get $l) - ) - ) - (br $while-in3) - ) - ) - ) - ) - (local.set $g - (local.get $m) - ) - ) - ) - (return - (i32.sub - (local.get $g) - (local.get $b) - ) - ) - ) - (func $_a (; 18 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (block $do-once - (if - (i32.eqz - (local.get $a) - ) - (block - (if - (i32.eqz - (i32.load - (i32.const 1140) - ) - ) - (local.set $b - (i32.const 0) - ) - (local.set $b - (call $_a - (i32.load - (i32.const 1140) - ) - ) - ) - ) - (call $pa - (i32.const 1188) - ) - (local.set $c - (i32.load - (i32.const 1184) - ) - ) - (if - (i32.eqz - (local.get $c) - ) - (local.set $d - (local.get $b) - ) - (block - (local.set $e - (local.get $c) - ) - (local.set $c - (local.get $b) - ) - (loop $while-in - (block $while-out - (if - (i32.gt_s - (i32.load - (i32.add - (local.get $e) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (local.set $f - (call $Ya - (local.get $e) - ) - ) - (local.set $f - (i32.const 0) - ) - ) - (if - (i32.gt_u - (i32.load - (i32.add - (local.get $e) - (i32.const 20) - ) - ) - (i32.load - (i32.add - (local.get $e) - (i32.const 28) - ) - ) - ) - (local.set $g - (i32.or - (call $$a - (local.get $e) - ) - (local.get $c) - ) - ) - (local.set $g - (local.get $c) - ) - ) - (if - (local.get $f) - (call $Ta - (local.get $e) - ) - ) - (local.set $e - (i32.load - (i32.add - (local.get $e) - (i32.const 56) - ) - ) - ) - (if - (i32.eqz - (local.get $e) - ) - (block - (local.set $d - (local.get $g) - ) - (br $while-out) - ) - (local.set $c - (local.get $g) - ) - ) - (br $while-in) - ) - ) - ) - ) - (call $xa - (i32.const 1188) - ) - (local.set $h - (local.get $d) - ) - ) - (block - (if - (i32.le_s - (i32.load - (i32.add - (local.get $a) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (block - (local.set $h - (call $$a - (local.get $a) - ) - ) - (br $do-once) - ) - ) - (local.set $c - (i32.eq - (call $Ya - (local.get $a) - ) - (i32.const 0) - ) - ) - (local.set $e - (call $$a - (local.get $a) - ) - ) - (if - (local.get $c) - (local.set $h - (local.get $e) - ) - (block - (call $Ta - (local.get $a) - ) - (local.set $h - (local.get $e) - ) - ) - ) - ) - ) - ) - (return - (local.get $h) - ) - ) - (func $ab (; 19 ;) (param $a i32) (param $b i32) (result i32) - (local $c i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local $j i32) - (local $m i32) - (local $n i32) - (local.set $c - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 16) - ) - ) - (local.set $d - (local.get $c) - ) - (local.set $e - (i32.and - (local.get $b) - (i32.const 255) - ) - ) - (i32.store8 - (local.get $d) - (local.get $e) - ) - (local.set $f - (i32.add - (local.get $a) - (i32.const 16) - ) - ) - (local.set $g - (i32.load - (local.get $f) - ) - ) - (if - (i32.eqz - (local.get $g) - ) - (if - (i32.eqz - (call $Xa - (local.get $a) - ) - ) - (block - (local.set $h - (i32.load - (local.get $f) - ) - ) - (local.set $j - (i32.const 4) - ) - ) - (local.set $m - (i32.const -1) - ) - ) - (block - (local.set $h - (local.get $g) - ) - (local.set $j - (i32.const 4) - ) - ) - ) - (block $do-once - (if - (i32.eq - (local.get $j) - (i32.const 4) - ) - (block - (local.set $g - (i32.add - (local.get $a) - (i32.const 20) - ) - ) - (local.set $f - (i32.load - (local.get $g) - ) - ) - (if - (i32.lt_u - (local.get $f) - (local.get $h) - ) - (block - (local.set $n - (i32.and - (local.get $b) - (i32.const 255) - ) - ) - (if - (i32.ne - (local.get $n) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 75) - ) - ) - ) - (block - (i32.store - (local.get $g) - (i32.add - (local.get $f) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $f) - (local.get $e) - ) - (local.set $m - (local.get $n) - ) - (br $do-once) - ) - ) - ) - ) - (if - (i32.eq - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $a) - (local.get $d) - (i32.const 1) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $a) - (i32.const 36) - ) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - (i32.const 1) - ) - (local.set $m - (i32.load8_u - (local.get $d) - ) - ) - (local.set $m - (i32.const -1) - ) - ) - ) - ) - ) - (global.set $r - (local.get $c) - ) - (return - (local.get $m) - ) - ) - (func $$a (; 20 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local.set $b - (i32.add - (local.get $a) - (i32.const 20) - ) - ) - (local.set $c - (i32.add - (local.get $a) - (i32.const 28) - ) - ) - (if - (i32.gt_u - (i32.load - (local.get $b) - ) - (i32.load - (local.get $c) - ) - ) - (block - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $a) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $a) - (i32.const 36) - ) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - (if - (i32.eqz - (i32.load - (local.get $b) - ) - ) - (local.set $d - (i32.const -1) - ) - (local.set $e - (i32.const 3) - ) - ) - ) - (local.set $e - (i32.const 3) - ) - ) - (if - (i32.eq - (local.get $e) - (i32.const 3) - ) - (block - (local.set $e - (i32.add - (local.get $a) - (i32.const 4) - ) - ) - (local.set $f - (i32.load - (local.get $e) - ) - ) - (local.set $g - (i32.add - (local.get $a) - (i32.const 8) - ) - ) - (local.set $h - (i32.load - (local.get $g) - ) - ) - (if - (i32.lt_u - (local.get $f) - (local.get $h) - ) - (drop - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $a) - (i32.sub - (local.get $f) - (local.get $h) - ) - (i32.const 1) - (i32.add - (i32.and - (i32.load - (i32.add - (local.get $a) - (i32.const 40) - ) - ) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - ) - (i32.store - (i32.add - (local.get $a) - (i32.const 16) - ) - (i32.const 0) - ) - (i32.store - (local.get $c) - (i32.const 0) - ) - (i32.store - (local.get $b) - (i32.const 0) - ) - (i32.store - (local.get $g) - (i32.const 0) - ) - (i32.store - (local.get $e) - (i32.const 0) - ) - (local.set $d - (i32.const 0) - ) - ) - ) - (return - (local.get $d) - ) - ) - (func $jb (; 21 ;) (param $a i32) (param $b i32) (param $c i32) (result i32) - (local $d i32) - (if - (i32.ge_s - (local.get $c) - (i32.const 4096) - ) - (return - (call $va - (local.get $a) - (local.get $b) - (local.get $c) - ) - ) - ) - (local.set $d - (local.get $a) - ) - (if - (i32.eq - (i32.and - (local.get $a) - (i32.const 3) - ) - (i32.and - (local.get $b) - (i32.const 3) - ) - ) - (block - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.and - (local.get $a) - (i32.const 3) - ) - ) - (br $while-out) - ) - (block - (if - (i32.eqz - (local.get $c) - ) - (return - (local.get $d) - ) - ) - (i32.store8 - (local.get $a) - (i32.load8_s - (local.get $b) - ) - ) - (local.set $a - (i32.add - (local.get $a) - (i32.const 1) - ) - ) - (local.set $b - (i32.add - (local.get $b) - (i32.const 1) - ) - ) - (local.set $c - (i32.sub - (local.get $c) - (i32.const 1) - ) - ) - ) - (br $while-in) - ) - ) - (loop $while-in1 - (block $while-out0 - (if - (i32.eqz - (i32.ge_s - (local.get $c) - (i32.const 4) - ) - ) - (br $while-out0) - ) - (block - (i32.store - (local.get $a) - (i32.load - (local.get $b) - ) - ) - (local.set $a - (i32.add - (local.get $a) - (i32.const 4) - ) - ) - (local.set $b - (i32.add - (local.get $b) - (i32.const 4) - ) - ) - (local.set $c - (i32.sub - (local.get $c) - (i32.const 4) - ) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (loop $while-in3 - (block $while-out2 - (if - (i32.eqz - (i32.gt_s - (local.get $c) - (i32.const 0) - ) - ) - (br $while-out2) - ) - (block - (i32.store8 - (local.get $a) - (i32.load8_s - (local.get $b) - ) - ) - (local.set $a - (i32.add - (local.get $a) - (i32.const 1) - ) - ) - (local.set $b - (i32.add - (local.get $b) - (i32.const 1) - ) - ) - (local.set $c - (i32.sub - (local.get $c) - (i32.const 1) - ) - ) - ) - (br $while-in3) - ) - ) - (return - (local.get $d) - ) - ) - (func $gb (; 22 ;) - (nop) - ) - (func $hb (; 23 ;) (param $a i32) (param $b i32) (param $c i32) (result i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local.set $d - (i32.add - (local.get $a) - (local.get $c) - ) - ) - (if - (i32.ge_s - (local.get $c) - (i32.const 20) - ) - (block - (local.set $b - (i32.and - (local.get $b) - (i32.const 255) - ) - ) - (local.set $e - (i32.and - (local.get $a) - (i32.const 3) - ) - ) - (local.set $f - (i32.or - (i32.or - (i32.or - (local.get $b) - (i32.shl - (local.get $b) - (i32.const 8) - ) - ) - (i32.shl - (local.get $b) - (i32.const 16) - ) - ) - (i32.shl - (local.get $b) - (i32.const 24) - ) - ) - ) - (local.set $g - (i32.and - (local.get $d) - (i32.xor - (i32.const 3) - (i32.const -1) - ) - ) - ) - (if - (local.get $e) - (block - (local.set $e - (i32.sub - (i32.add - (local.get $a) - (i32.const 4) - ) - (local.get $e) - ) - ) - (loop $while-in - (block $while-out - (if - (i32.eqz - (i32.lt_s - (local.get $a) - (local.get $e) - ) - ) - (br $while-out) - ) - (block - (i32.store8 - (local.get $a) - (local.get $b) - ) - (local.set $a - (i32.add - (local.get $a) - (i32.const 1) - ) - ) - ) - (br $while-in) - ) - ) - ) - ) - (loop $while-in1 - (block $while-out0 - (if - (i32.eqz - (i32.lt_s - (local.get $a) - (local.get $g) - ) - ) - (br $while-out0) - ) - (block - (i32.store - (local.get $a) - (local.get $f) - ) - (local.set $a - (i32.add - (local.get $a) - (i32.const 4) - ) - ) - ) - (br $while-in1) - ) - ) - ) - ) - (loop $while-in3 - (block $while-out2 - (if - (i32.eqz - (i32.lt_s - (local.get $a) - (local.get $d) - ) - ) - (br $while-out2) - ) - (block - (i32.store8 - (local.get $a) - (local.get $b) - ) - (local.set $a - (i32.add - (local.get $a) - (i32.const 1) - ) - ) - ) - (br $while-in3) - ) - ) - (return - (i32.sub - (local.get $a) - (local.get $c) - ) - ) - ) - (func $db (; 24 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local.set $b - (i32.load - (i32.const 1024) - ) - ) - (if - (i32.gt_s - (i32.load - (i32.add - (local.get $b) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (local.set $c - (call $Ya - (local.get $b) - ) - ) - (local.set $c - (i32.const 0) - ) - ) - (block $do-once - (if - (i32.lt_s - (call $cb - (local.get $a) - (local.get $b) - ) - (i32.const 0) - ) - (local.set $d - (i32.const 1) - ) - (block - (if - (i32.ne - (i32.load8_s - (i32.add - (local.get $b) - (i32.const 75) - ) - ) - (i32.const 10) - ) - (block - (local.set $e - (i32.add - (local.get $b) - (i32.const 20) - ) - ) - (local.set $f - (i32.load - (local.get $e) - ) - ) - (if - (i32.lt_u - (local.get $f) - (i32.load - (i32.add - (local.get $b) - (i32.const 16) - ) - ) - ) - (block - (i32.store - (local.get $e) - (i32.add - (local.get $f) - (i32.const 1) - ) - ) - (i32.store8 - (local.get $f) - (i32.const 10) - ) - (local.set $d - (i32.const 0) - ) - (br $do-once) - ) - ) - ) - ) - (local.set $d - (i32.lt_s - (call $ab - (local.get $b) - (i32.const 10) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (if - (local.get $c) - (call $Ta - (local.get $b) - ) - ) - (return - (i32.shr_s - (i32.shl - (local.get $d) - (i32.const 31) - ) - (i32.const 31) - ) - ) - ) - (func $Xa (; 25 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (local $d i32) - (local.set $b - (i32.add - (local.get $a) - (i32.const 74) - ) - ) - (local.set $c - (i32.load8_s - (local.get $b) - ) - ) - (i32.store8 - (local.get $b) - (i32.or - (i32.add - (local.get $c) - (i32.const 255) - ) - (local.get $c) - ) - ) - (local.set $c - (i32.load - (local.get $a) - ) - ) - (if - (i32.eqz - (i32.and - (local.get $c) - (i32.const 8) - ) - ) - (block - (i32.store - (i32.add - (local.get $a) - (i32.const 8) - ) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $a) - (i32.const 4) - ) - (i32.const 0) - ) - (local.set $b - (i32.load - (i32.add - (local.get $a) - (i32.const 44) - ) - ) - ) - (i32.store - (i32.add - (local.get $a) - (i32.const 28) - ) - (local.get $b) - ) - (i32.store - (i32.add - (local.get $a) - (i32.const 20) - ) - (local.get $b) - ) - (i32.store - (i32.add - (local.get $a) - (i32.const 16) - ) - (i32.add - (local.get $b) - (i32.load - (i32.add - (local.get $a) - (i32.const 48) - ) - ) - ) - ) - (local.set $d - (i32.const 0) - ) - ) - (block - (i32.store - (local.get $a) - (i32.or - (local.get $c) - (i32.const 32) - ) - ) - (local.set $d - (i32.const -1) - ) - ) - ) - (return - (local.get $d) - ) - ) - (func $i32u-div (; 26 ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (i32.eqz - (local.get $1) - ) - (i32.const 0) - (i32.div_u - (local.get $0) - (local.get $1) - ) - ) - ) - (func $bb (; 27 ;) (param $a i32) (param $b i32) (param $c i32) (param $d i32) (result i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local $h i32) - (local $i i32) - (local.set $e - (i32.mul - (local.get $c) - (local.get $b) - ) - ) - (if - (i32.gt_s - (i32.load - (i32.add - (local.get $d) - (i32.const 76) - ) - ) - (i32.const -1) - ) - (block - (local.set $f - (i32.eq - (call $Ya - (local.get $d) - ) - (i32.const 0) - ) - ) - (local.set $g - (call $Wa - (local.get $a) - (local.get $e) - (local.get $d) - ) - ) - (if - (local.get $f) - (local.set $h - (local.get $g) - ) - (block - (call $Ta - (local.get $d) - ) - (local.set $h - (local.get $g) - ) - ) - ) - ) - (local.set $h - (call $Wa - (local.get $a) - (local.get $e) - (local.get $d) - ) - ) - ) - (if - (i32.eq - (local.get $h) - (local.get $e) - ) - (local.set $i - (local.get $c) - ) - (local.set $i - (call $i32u-div - (local.get $h) - (local.get $b) - ) - ) - ) - (return - (local.get $i) - ) - ) - (func $Ua (; 28 ;) (param $a i32) (param $b i32) (param $c i32) (result i32) - (local $d i32) - (local $e i32) - (local $f i32) - (local $g i32) - (local.set $d - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 32) - ) - ) - (local.set $e - (local.get $d) - ) - (local.set $f - (i32.add - (local.get $d) - (i32.const 20) - ) - ) - (i32.store - (local.get $e) - (i32.load - (i32.add - (local.get $a) - (i32.const 60) - ) - ) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 4) - ) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 8) - ) - (local.get $b) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 12) - ) - (local.get $f) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 16) - ) - (local.get $c) - ) - (if - (i32.lt_s - (call $Pa - (call $ua - (i32.const 140) - (local.get $e) - ) - ) - (i32.const 0) - ) - (block - (i32.store - (local.get $f) - (i32.const -1) - ) - (local.set $g - (i32.const -1) - ) - ) - (local.set $g - (i32.load - (local.get $f) - ) - ) - ) - (global.set $r - (local.get $d) - ) - (return - (local.get $g) - ) - ) - (func $Va (; 29 ;) (param $a i32) (param $b i32) (param $c i32) (result i32) - (local $d i32) - (local $e i32) - (local.set $d - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 80) - ) - ) - (local.set $e - (local.get $d) - ) - (i32.store - (i32.add - (local.get $a) - (i32.const 36) - ) - (i32.const 3) - ) - (if - (i32.eqz - (i32.and - (i32.load - (local.get $a) - ) - (i32.const 64) - ) - ) - (block - (i32.store - (local.get $e) - (i32.load - (i32.add - (local.get $a) - (i32.const 60) - ) - ) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 4) - ) - (i32.const 21505) - ) - (i32.store - (i32.add - (local.get $e) - (i32.const 8) - ) - (i32.add - (local.get $d) - (i32.const 12) - ) - ) - (if - (call $wa - (i32.const 54) - (local.get $e) - ) - (i32.store8 - (i32.add - (local.get $a) - (i32.const 75) - ) - (i32.const -1) - ) - ) - ) - ) - (local.set $e - (call $Ra - (local.get $a) - (local.get $b) - (local.get $c) - ) - ) - (global.set $r - (local.get $d) - ) - (return - (local.get $e) - ) - ) - (func $Ka (; 30 ;) (param $a i32) - (i32.store8 - (global.get $t) - (i32.load8_s - (local.get $a) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 1) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 1) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 2) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 2) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 3) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 3) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 4) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 4) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 5) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 5) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 6) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 6) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 7) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 7) - ) - ) - ) - ) - (func $Oa (; 31 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (local.set $b - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (i32.const 16) - ) - ) - (local.set $c - (local.get $b) - ) - (i32.store - (local.get $c) - (i32.load - (i32.add - (local.get $a) - (i32.const 60) - ) - ) - ) - (local.set $a - (call $Pa - (call $sa - (i32.const 6) - (local.get $c) - ) - ) - ) - (global.set $r - (local.get $b) - ) - (return - (local.get $a) - ) - ) - (func $Pa (; 32 ;) (param $a i32) (result i32) - (local $b i32) - (local $c i32) - (if - (i32.gt_u - (local.get $a) - (i32.const -4096) - ) - (block - (local.set $b - (call $Qa) - ) - (i32.store - (local.get $b) - (i32.sub - (i32.const 0) - (local.get $a) - ) - ) - (local.set $c - (i32.const -1) - ) - ) - (local.set $c - (local.get $a) - ) - ) - (return - (local.get $c) - ) - ) - (func $Ja (; 33 ;) (param $a i32) - (i32.store8 - (global.get $t) - (i32.load8_s - (local.get $a) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 1) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 1) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 2) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 2) - ) - ) - ) - (i32.store8 - (i32.add - (global.get $t) - (i32.const 3) - ) - (i32.load8_s - (i32.add - (local.get $a) - (i32.const 3) - ) - ) - ) - ) - (func $Qa (; 34 ;) (result i32) - (local $a i32) - (local $b i32) - (if - (i32.eqz - (i32.load - (i32.const 1160) - ) - ) - (local.set $a - (i32.const 1204) - ) - (block - (local.set $b - (i32.add - (call $ib) - (i32.const 64) - ) - ) - (local.set $a - (i32.load - (local.get $b) - ) - ) - ) - ) - (return - (local.get $a) - ) - ) - (func $lb (; 35 ;) (param $a i32) (param $b i32) (param $c i32) (param $d i32) (result i32) - (return - (call_indirect (type $i32_i32_i32_=>_i32) - (local.get $b) - (local.get $c) - (local.get $d) - (i32.add - (i32.and - (local.get $a) - (i32.const 3) - ) - (i32.const 2) - ) - ) - ) - ) - (func $Ea (; 36 ;) (param $a i32) (result i32) - (local $b i32) - (local.set $b - (global.get $r) - ) - (global.set $r - (i32.add - (global.get $r) - (local.get $a) - ) - ) - (global.set $r - (i32.and - (i32.add - (global.get $r) - (i32.const 15) - ) - (i32.const -16) - ) - ) - (return - (local.get $b) - ) - ) - (func $cb (; 37 ;) (param $a i32) (param $b i32) (result i32) - (return - (i32.add - (call $bb - (local.get $a) - (call $Za - (local.get $a) - ) - (i32.const 1) - (local.get $b) - ) - (i32.const -1) - ) - ) - ) - (func $ob (; 38 ;) (param $a i32) (param $b i32) (param $c i32) (result i32) - (call $ja - (i32.const 1) - ) - (return - (i32.const 0) - ) - ) - (func $Ia (; 39 ;) (param $a i32) (param $b i32) - (if - (i32.eqz - (global.get $v) - ) - (block - (global.set $v - (local.get $a) - ) - (global.set $w - (local.get $b) - ) - ) - ) - ) - (func $kb (; 40 ;) (param $a i32) (param $b i32) (result i32) - (return - (call_indirect (type $i32_=>_i32) - (local.get $b) - (i32.add - (i32.and - (local.get $a) - (i32.const 1) - ) - (i32.const 0) - ) - ) - ) - ) - (func $Sa (; 41 ;) (param $a i32) - (if - (i32.eqz - (i32.load - (i32.add - (local.get $a) - (i32.const 68) - ) - ) - ) - (call $Ta - (local.get $a) - ) - ) - (return) - ) - (func $mb (; 42 ;) (param $a i32) (param $b i32) - (call_indirect (type $i32_=>_none) - (local.get $b) - (i32.add - (i32.and - (local.get $a) - (i32.const 1) - ) - (i32.const 6) - ) - ) - ) - (func $Ha (; 43 ;) (param $a i32) (param $b i32) - (global.set $r - (local.get $a) - ) - (global.set $s - (local.get $b) - ) - ) - (func $nb (; 44 ;) (param $a i32) (result i32) - (call $ja - (i32.const 0) - ) - (return - (i32.const 0) - ) - ) - (func $Na (; 45 ;) (result i32) - (drop - (call $db - (i32.const 1144) - ) - ) - (return - (i32.const 0) - ) - ) - (func $Ya (; 46 ;) (param $a i32) (result i32) - (return - (i32.const 0) - ) - ) - (func $Ta (; 47 ;) (param $a i32) - (return) - ) - (func $pb (; 48 ;) (param $a i32) - (call $ja - (i32.const 2) - ) - ) - (func $La (; 49 ;) (param $a i32) - (global.set $K - (local.get $a) - ) - ) - (func $Ga (; 50 ;) (param $a i32) - (global.set $r - (local.get $a) - ) - ) - (func $Ma (; 51 ;) (result i32) - (return - (global.get $K) - ) - ) - (func $Fa (; 52 ;) (result i32) - (return - (global.get $r) - ) - ) - (func $ib (; 53 ;) (result i32) - (return - (i32.const 0) - ) - ) -) diff -Nru binaryen-91/test/memorygrowth-minimal.asm.js binaryen-99/test/memorygrowth-minimal.asm.js --- binaryen-91/test/memorygrowth-minimal.asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/memorygrowth-minimal.asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ -Module["asm"] = (function(global,env,buffer) { - - "almost asm"; - var a = global.Int8Array; - var b = global.Int16Array; - var c = global.Int32Array; - var d = global.Uint8Array; - var e = global.Uint16Array; - var f = global.Uint32Array; - var g = global.Float32Array; - var h = global.Float64Array; - var i = new a(buffer); - var j = new b(buffer); - var k = new c(buffer); - var l = new d(buffer); - var m = new e(buffer); - var n = new f(buffer); - var o = new g(buffer); - var p = new h(buffer); - var q = global.byteLength; - - function replaceBuffer(newBuffer) { - if (q(newBuffer) & 16777215 || q(newBuffer) <= 16777215 || q(newBuffer) > 2147483648) return false; - i = new a(newBuffer); - j = new b(newBuffer); - k = new c(newBuffer); - l = new d(newBuffer); - m = new e(newBuffer); - n = new f(newBuffer); - o = new g(newBuffer); - p = new h(newBuffer); - buffer = newBuffer; - return true; - } - return { - _emscripten_replace_memory: replaceBuffer - }; -}) - - -; diff -Nru binaryen-91/test/memorygrowth-minimal.fromasm binaryen-99/test/memorygrowth-minimal.fromasm --- binaryen-91/test/memorygrowth-minimal.fromasm 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/memorygrowth-minimal.fromasm 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "memory" (memory $memory 256)) - (data (global.get $__memory_base) "memorygrowth-minimal.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (func $__growWasmMemory (; 0 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (memory.grow - (local.get $0) - ) - ) -) diff -Nru binaryen-91/test/memorygrowth-minimal.fromasm.clamp binaryen-99/test/memorygrowth-minimal.fromasm.clamp --- binaryen-91/test/memorygrowth-minimal.fromasm.clamp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/memorygrowth-minimal.fromasm.clamp 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "memory" (memory $memory 256)) - (data (global.get $__memory_base) "memorygrowth-minimal.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (func $__growWasmMemory (; 0 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (memory.grow - (local.get $0) - ) - ) -) diff -Nru binaryen-91/test/memorygrowth-minimal.fromasm.clamp.no-opts binaryen-99/test/memorygrowth-minimal.fromasm.clamp.no-opts --- binaryen-91/test/memorygrowth-minimal.fromasm.clamp.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/memorygrowth-minimal.fromasm.clamp.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "memory" (memory $memory 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (func $__growWasmMemory (; 0 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) -) diff -Nru binaryen-91/test/memorygrowth-minimal.fromasm.imprecise binaryen-99/test/memorygrowth-minimal.fromasm.imprecise --- binaryen-91/test/memorygrowth-minimal.fromasm.imprecise 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/memorygrowth-minimal.fromasm.imprecise 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "memory" (memory $memory 256)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (func $__growWasmMemory (; 0 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (memory.grow - (local.get $0) - ) - ) -) diff -Nru binaryen-91/test/memorygrowth-minimal.fromasm.imprecise.no-opts binaryen-99/test/memorygrowth-minimal.fromasm.imprecise.no-opts --- binaryen-91/test/memorygrowth-minimal.fromasm.imprecise.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/memorygrowth-minimal.fromasm.imprecise.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "memory" (memory $memory 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (func $__growWasmMemory (; 0 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) -) diff -Nru binaryen-91/test/memorygrowth-minimal.fromasm.no-opts binaryen-99/test/memorygrowth-minimal.fromasm.no-opts --- binaryen-91/test/memorygrowth-minimal.fromasm.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/memorygrowth-minimal.fromasm.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "memory" (memory $memory 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (export "__growWasmMemory" (func $__growWasmMemory)) - (func $__growWasmMemory (; 0 ;) (param $newSize i32) (result i32) - (memory.grow - (local.get $newSize) - ) - ) -) diff -Nru binaryen-91/test/memory-import64.wast binaryen-99/test/memory-import64.wast --- binaryen-91/test/memory-import64.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/memory-import64.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,9 @@ +(module + (type $0 (func (result i32))) + (import "env" "memory" (memory $0 i64 1 1)) + (func $foo (type $0) (result i32) + (i32.load offset=13 + (i64.const 37) + ) + ) +) diff -Nru binaryen-91/test/memory-import64.wast.fromBinary binaryen-99/test/memory-import64.wast.fromBinary --- binaryen-91/test/memory-import64.wast.fromBinary 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/memory-import64.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,10 @@ +(module + (type $none_=>_i32 (func (result i32))) + (import "env" "memory" (memory $0 i64 1 1)) + (func $foo (result i32) + (i32.load offset=13 + (i64.const 37) + ) + ) +) + diff -Nru binaryen-91/test/memory-import64.wast.fromBinary.noDebugInfo binaryen-99/test/memory-import64.wast.fromBinary.noDebugInfo --- binaryen-91/test/memory-import64.wast.fromBinary.noDebugInfo 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/memory-import64.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,10 @@ +(module + (type $none_=>_i32 (func (result i32))) + (import "env" "memory" (memory $mimport$0 i64 1 1)) + (func $0 (result i32) + (i32.load offset=13 + (i64.const 37) + ) + ) +) + diff -Nru binaryen-91/test/memory-import64.wast.from-wast binaryen-99/test/memory-import64.wast.from-wast --- binaryen-91/test/memory-import64.wast.from-wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/memory-import64.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,9 @@ +(module + (type $none_=>_i32 (func (result i32))) + (import "env" "memory" (memory $0 i64 1 1)) + (func $foo (result i32) + (i32.load offset=13 + (i64.const 37) + ) + ) +) diff -Nru binaryen-91/test/memory-import64.wast.wasm.fromBinary binaryen-99/test/memory-import64.wast.wasm.fromBinary --- binaryen-91/test/memory-import64.wast.wasm.fromBinary 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/memory-import64.wast.wasm.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,10 @@ +(module + (type $none_=>_i32 (func (result i32))) + (import "env" "memory" (memory $0 1 1 i64)) + (func $0 (result i32) + (i32.load offset=13 + (i64.const 37) + ) + ) +) + diff -Nru binaryen-91/test/memory-import.wast.fromBinary binaryen-99/test/memory-import.wast.fromBinary --- binaryen-91/test/memory-import.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/memory-import.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $none_=>_i32 (func (result i32))) (import "env" "memory" (memory $0 1 1)) - (func $foo (; 0 ;) (result i32) + (func $foo (result i32) (i32.load offset=13 (i32.const 37) ) diff -Nru binaryen-91/test/memory-import.wast.fromBinary.noDebugInfo binaryen-99/test/memory-import.wast.fromBinary.noDebugInfo --- binaryen-91/test/memory-import.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/memory-import.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $none_=>_i32 (func (result i32))) - (import "env" "memory" (memory $0 1 1)) - (func $0 (; 0 ;) (result i32) + (import "env" "memory" (memory $mimport$0 1 1)) + (func $0 (result i32) (i32.load offset=13 (i32.const 37) ) diff -Nru binaryen-91/test/memory-import.wast.from-wast binaryen-99/test/memory-import.wast.from-wast --- binaryen-91/test/memory-import.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/memory-import.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $none_=>_i32 (func (result i32))) (import "env" "memory" (memory $0 1 1)) - (func $foo (; 0 ;) (result i32) + (func $foo (result i32) (i32.load offset=13 (i32.const 37) ) diff -Nru binaryen-91/test/metadatas.wasm.fromBinary binaryen-99/test/metadatas.wasm.fromBinary --- binaryen-91/test/metadatas.wasm.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/metadatas.wasm.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (export "a" (func $0)) - (func $0 (; 0 ;) + (func $0 (nop) ) ;; custom section "emscripten_metadata", size 7 diff -Nru binaryen-91/test/metadce/corners.wast.dced binaryen-99/test/metadce/corners.wast.dced --- binaryen-91/test/metadce/corners.wast.dced 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/metadce/corners.wast.dced 2021-01-07 20:01:06.000000000 +0000 @@ -1,13 +1,13 @@ (module (type $none_=>_none (func)) - (import "env" "table" (table $0 10 10 funcref)) + (import "env" "table" (table $timport$0 10 10 funcref)) (elem (i32.const 0) $imported_table_func) (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) (import "env" "imported_twice" (func $imported_twice_a)) (import "env" "an-imported-table-func" (func $imported_table_func)) (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) (export "stackAlloc" (func $stackAlloc)) - (func $stackAlloc (; 2 ;) + (func $stackAlloc (drop (global.get $STACKTOP) ) diff -Nru binaryen-91/test/metadce/outside.wast binaryen-99/test/metadce/outside.wast --- binaryen-91/test/metadce/outside.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/metadce/outside.wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,8 +1,6 @@ (module (import "env" "js_func" (func $a_js_func)) (import "env" "js_func_unused" (func $an_unused_js_func)) - (import "env" "DYNAMICTOP_PTR" (global $DYNAMICTOP_PTR$asm2wasm$import i32)) - (import "env" "DYNAMICTOP_PTR_unused" (global $DYNAMICTOP_PTR$asm2wasm$import_unused i32)) (import "env" "memory" (memory $0 256 256)) (import "env" "table" (table 10 10 funcref)) @@ -21,11 +19,9 @@ (func $a_wasm_func (call $a_js_func) - (drop (global.get $DYNAMICTOP_PTR$asm2wasm$import)) (drop (global.get $__THREW__)) ) (func $an_unused_wasm_func - (drop (global.get $DYNAMICTOP_PTR$asm2wasm$import_unused)) (drop (global.get $__THREW__unused)) ) (func $table_func diff -Nru binaryen-91/test/metadce/outside.wast.dced binaryen-99/test/metadce/outside.wast.dced --- binaryen-91/test/metadce/outside.wast.dced 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/metadce/outside.wast.dced 2021-01-07 20:01:06.000000000 +0000 @@ -3,23 +3,19 @@ (import "env" "memory" (memory $0 256 256)) (data (i32.const 1024) "abcd") (data (global.get $from_segment) "abcd") - (import "env" "table" (table $0 10 10 funcref)) + (import "env" "table" (table $timport$0 10 10 funcref)) (elem (global.get $from_segment_2) $table_func) - (import "env" "DYNAMICTOP_PTR" (global $DYNAMICTOP_PTR$asm2wasm$import i32)) (import "env" "js_func" (func $a_js_func)) (global $__THREW__ (mut i32) (i32.const 0)) (global $from_segment (mut i32) (i32.const 0)) (global $from_segment_2 (mut i32) (i32.const 0)) (export "wasm_func" (func $a_wasm_func)) - (func $table_func (; 1 ;) + (func $table_func (nop) ) - (func $a_wasm_func (; 2 ;) + (func $a_wasm_func (call $a_js_func) (drop - (global.get $DYNAMICTOP_PTR$asm2wasm$import) - ) - (drop (global.get $__THREW__) ) ) diff -Nru binaryen-91/test/metadce/outside.wast.dced.stdout binaryen-99/test/metadce/outside.wast.dced.stdout --- binaryen-91/test/metadce/outside.wast.dced.stdout 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/metadce/outside.wast.dced.stdout 2021-01-07 20:01:06.000000000 +0000 @@ -1,4 +1,4 @@ -unused: export$wasm_func_unused$12 +unused: export$wasm_func_unused$10 unused: func$an_unused_wasm_func$1 unused: global$__THREW__unused$4 unused: global$from_segment$5 diff -Nru binaryen-91/test/metadce/rooted-export.wast.dced binaryen-99/test/metadce/rooted-export.wast.dced --- binaryen-91/test/metadce/rooted-export.wast.dced 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/metadce/rooted-export.wast.dced 2021-01-07 20:01:06.000000000 +0000 @@ -4,7 +4,7 @@ (event $b_wasm_event (attr 0) (param i32)) (export "wasm_func_b" (func $b_wasm_func)) (export "wasm_event_b" (event $b_wasm_event)) - (func $b_wasm_func (; 0 ;) + (func $b_wasm_func (unreachable) ) ) diff -Nru binaryen-91/test/metadce/spanning_cycle.wast.dced binaryen-99/test/metadce/spanning_cycle.wast.dced --- binaryen-91/test/metadce/spanning_cycle.wast.dced 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/metadce/spanning_cycle.wast.dced 2021-01-07 20:01:06.000000000 +0000 @@ -4,7 +4,7 @@ (memory $0 1 1) (data passive "Hello, datacount section!") (export "wasm_func_a" (func $a_wasm_func)) - (func $a_wasm_func (; 1 ;) + (func $a_wasm_func (memory.init 0 (i32.const 0) (i32.const 0) diff -Nru binaryen-91/test/metadce/threaded_cycle.wast.dced binaryen-99/test/metadce/threaded_cycle.wast.dced --- binaryen-91/test/metadce/threaded_cycle.wast.dced 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/metadce/threaded_cycle.wast.dced 2021-01-07 20:01:06.000000000 +0000 @@ -8,16 +8,16 @@ (export "wasm_func2" (func $wasm_func_2)) (export "wasm_func3" (func $wasm_func_3)) (export "wasm_func4" (func $wasm_func_4)) - (func $wasm_func_4 (; 4 ;) + (func $wasm_func_4 (call $js_func_1) ) - (func $wasm_func_3 (; 5 ;) + (func $wasm_func_3 (call $js_func_4) ) - (func $wasm_func_2 (; 6 ;) + (func $wasm_func_2 (call $js_func_3) ) - (func $wasm_func_1 (; 7 ;) + (func $wasm_func_1 (call $js_func_2) ) ) diff -Nru binaryen-91/test/metadce/threaded.wast.dced binaryen-99/test/metadce/threaded.wast.dced --- binaryen-91/test/metadce/threaded.wast.dced 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/metadce/threaded.wast.dced 2021-01-07 20:01:06.000000000 +0000 @@ -7,16 +7,16 @@ (export "wasm_func2" (func $wasm_func_2)) (export "wasm_func3" (func $wasm_func_3)) (export "wasm_func4" (func $wasm_func_4)) - (func $wasm_func_4 (; 3 ;) + (func $wasm_func_4 (nop) ) - (func $wasm_func_3 (; 4 ;) + (func $wasm_func_3 (call $js_func_4) ) - (func $wasm_func_2 (; 5 ;) + (func $wasm_func_2 (call $js_func_3) ) - (func $wasm_func_1 (; 6 ;) + (func $wasm_func_1 (call $js_func_2) ) ) diff -Nru binaryen-91/test/min.asm.js binaryen-99/test/min.asm.js --- binaryen-91/test/min.asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/min.asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -function (global, env, buffer) { - "use asm"; - - var c = new global.Int32Array(buffer); - var g = new global.Float32Array(buffer); - - var fr = global.Math.fround; - - var tDP = env.tempDoublePtr | 0; - var ctz32 = env._llvm_cttz_i32; - - var h8 = new global.Int8Array(buffer); - var h16 = new global.Int16Array(buffer); - var h32 = new global.Int32Array(buffer); - var hU8 = new global.Uint8Array(buffer); - var hU16 = new global.Uint16Array(buffer); - var hU32 = new global.Uint32Array(buffer); - var hF32 = new global.Float32Array(buffer); - var hF64 = new global.Float64Array(buffer); - - var M = 0; // tempRet - - function floats(f) { - f = fr(f); - var t = fr(0); - return fr(t + f); - } - function neg(k, p) { - k = k | 0; - p = p | 0; - var n = fr(0); - n = fr(-(c[k >> 2] = p, fr(g[k >> 2]))); - return n; - } - function bitcasts(i, f) { - i = i | 0; - f = Math_fround(f); - (h32[tDP >> 2] = i, fr(hF32[tDP >> 2])); // i32->f32 - (h32[tDP >> 2] = i, +hF32[tDP >> 2]); // i32->f32, no fround - (hF32[tDP >> 2] = f, h32[tDP >> 2] | 0); // f32->i32 - } - function ctzzzz() { - return ctz32(0x1234) | 0; - } - function ub() { - ub(); // emterpreter assertions mode might add some code here - return M | 0; - } - - return { floats: floats, getTempRet0: ub, neg: neg, bitcasts: bitcasts, ctzzzz: ctzzzz }; -} - diff -Nru binaryen-91/test/min.fromasm binaryen-99/test/min.fromasm --- binaryen-91/test/min.fromasm 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/min.fromasm 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $i32_f32_=>_none (func (param i32 f32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "min.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (export "floats" (func $floats)) - (export "getTempRet0" (func $ub)) - (export "neg" (func $neg)) - (export "bitcasts" (func $bitcasts)) - (export "ctzzzz" (func $ctzzzz)) - (func $floats (; 0 ;) (; has Stack IR ;) (param $0 f32) (result f32) - (f32.add - (f32.const 0) - (local.get $0) - ) - ) - (func $neg (; 1 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result f32) - (i32.store - (local.get $0) - (local.get $1) - ) - (f32.neg - (f32.load - (local.get $0) - ) - ) - ) - (func $bitcasts (; 2 ;) (; has Stack IR ;) (param $0 i32) (param $1 f32) - (nop) - ) - (func $ctzzzz (; 3 ;) (; has Stack IR ;) (result i32) - (i32.const 2) - ) - (func $ub (; 4 ;) (; has Stack IR ;) (result i32) - (drop - (call $ub) - ) - (i32.const 0) - ) -) diff -Nru binaryen-91/test/min.fromasm.clamp binaryen-99/test/min.fromasm.clamp --- binaryen-91/test/min.fromasm.clamp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/min.fromasm.clamp 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $i32_f32_=>_none (func (param i32 f32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "min.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (export "floats" (func $floats)) - (export "getTempRet0" (func $ub)) - (export "neg" (func $neg)) - (export "bitcasts" (func $bitcasts)) - (export "ctzzzz" (func $ctzzzz)) - (func $floats (; 0 ;) (; has Stack IR ;) (param $0 f32) (result f32) - (f32.add - (f32.const 0) - (local.get $0) - ) - ) - (func $neg (; 1 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result f32) - (i32.store - (local.get $0) - (local.get $1) - ) - (f32.neg - (f32.load - (local.get $0) - ) - ) - ) - (func $bitcasts (; 2 ;) (; has Stack IR ;) (param $0 i32) (param $1 f32) - (nop) - ) - (func $ctzzzz (; 3 ;) (; has Stack IR ;) (result i32) - (i32.const 2) - ) - (func $ub (; 4 ;) (; has Stack IR ;) (result i32) - (drop - (call $ub) - ) - (i32.const 0) - ) -) diff -Nru binaryen-91/test/min.fromasm.clamp.no-opts binaryen-99/test/min.fromasm.clamp.no-opts --- binaryen-91/test/min.fromasm.clamp.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/min.fromasm.clamp.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,80 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $i32_f32_=>_none (func (param i32 f32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "tempDoublePtr" (global $tDP$asm2wasm$import i32)) - (global $tDP (mut i32) (global.get $tDP$asm2wasm$import)) - (global $M (mut i32) (i32.const 0)) - (export "floats" (func $floats)) - (export "getTempRet0" (func $ub)) - (export "neg" (func $neg)) - (export "bitcasts" (func $bitcasts)) - (export "ctzzzz" (func $ctzzzz)) - (func $floats (; 0 ;) (param $f f32) (result f32) - (local $t f32) - (return - (f32.add - (local.get $t) - (local.get $f) - ) - ) - ) - (func $neg (; 1 ;) (param $k i32) (param $p i32) (result f32) - (local $n f32) - (local.set $n - (f32.neg - (block (result f32) - (i32.store - (local.get $k) - (local.get $p) - ) - (f32.load - (local.get $k) - ) - ) - ) - ) - (return - (local.get $n) - ) - ) - (func $bitcasts (; 2 ;) (param $i i32) (param $f f32) - (drop - (f32.reinterpret_i32 - (local.get $i) - ) - ) - (drop - (f64.promote_f32 - (f32.reinterpret_i32 - (local.get $i) - ) - ) - ) - (drop - (i32.reinterpret_f32 - (local.get $f) - ) - ) - ) - (func $ctzzzz (; 3 ;) (result i32) - (return - (i32.ctz - (i32.const 4660) - ) - ) - ) - (func $ub (; 4 ;) (result i32) - (drop - (call $ub) - ) - (return - (global.get $M) - ) - ) -) diff -Nru binaryen-91/test/min.fromasm.imprecise binaryen-99/test/min.fromasm.imprecise --- binaryen-91/test/min.fromasm.imprecise 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/min.fromasm.imprecise 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $i32_f32_=>_none (func (param i32 f32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (import "env" "memory" (memory $memory 256 256)) - (export "floats" (func $floats)) - (export "getTempRet0" (func $ub)) - (export "neg" (func $neg)) - (export "bitcasts" (func $bitcasts)) - (export "ctzzzz" (func $ctzzzz)) - (func $floats (; 0 ;) (; has Stack IR ;) (param $0 f32) (result f32) - (f32.add - (f32.const 0) - (local.get $0) - ) - ) - (func $neg (; 1 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result f32) - (i32.store - (local.get $0) - (local.get $1) - ) - (f32.neg - (f32.load - (local.get $0) - ) - ) - ) - (func $bitcasts (; 2 ;) (; has Stack IR ;) (param $0 i32) (param $1 f32) - (nop) - ) - (func $ctzzzz (; 3 ;) (; has Stack IR ;) (result i32) - (i32.const 2) - ) - (func $ub (; 4 ;) (; has Stack IR ;) (result i32) - (drop - (call $ub) - ) - (i32.const 0) - ) -) diff -Nru binaryen-91/test/min.fromasm.imprecise.no-opts binaryen-99/test/min.fromasm.imprecise.no-opts --- binaryen-91/test/min.fromasm.imprecise.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/min.fromasm.imprecise.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,80 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $i32_f32_=>_none (func (param i32 f32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "tempDoublePtr" (global $tDP$asm2wasm$import i32)) - (global $tDP (mut i32) (global.get $tDP$asm2wasm$import)) - (global $M (mut i32) (i32.const 0)) - (export "floats" (func $floats)) - (export "getTempRet0" (func $ub)) - (export "neg" (func $neg)) - (export "bitcasts" (func $bitcasts)) - (export "ctzzzz" (func $ctzzzz)) - (func $floats (; 0 ;) (param $f f32) (result f32) - (local $t f32) - (return - (f32.add - (local.get $t) - (local.get $f) - ) - ) - ) - (func $neg (; 1 ;) (param $k i32) (param $p i32) (result f32) - (local $n f32) - (local.set $n - (f32.neg - (block (result f32) - (i32.store - (local.get $k) - (local.get $p) - ) - (f32.load - (local.get $k) - ) - ) - ) - ) - (return - (local.get $n) - ) - ) - (func $bitcasts (; 2 ;) (param $i i32) (param $f f32) - (drop - (f32.reinterpret_i32 - (local.get $i) - ) - ) - (drop - (f64.promote_f32 - (f32.reinterpret_i32 - (local.get $i) - ) - ) - ) - (drop - (i32.reinterpret_f32 - (local.get $f) - ) - ) - ) - (func $ctzzzz (; 3 ;) (result i32) - (return - (i32.ctz - (i32.const 4660) - ) - ) - ) - (func $ub (; 4 ;) (result i32) - (drop - (call $ub) - ) - (return - (global.get $M) - ) - ) -) diff -Nru binaryen-91/test/min.fromasm.no-opts binaryen-99/test/min.fromasm.no-opts --- binaryen-91/test/min.fromasm.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/min.fromasm.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,80 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $i32_f32_=>_none (func (param i32 f32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "tempDoublePtr" (global $tDP$asm2wasm$import i32)) - (global $tDP (mut i32) (global.get $tDP$asm2wasm$import)) - (global $M (mut i32) (i32.const 0)) - (export "floats" (func $floats)) - (export "getTempRet0" (func $ub)) - (export "neg" (func $neg)) - (export "bitcasts" (func $bitcasts)) - (export "ctzzzz" (func $ctzzzz)) - (func $floats (; 0 ;) (param $f f32) (result f32) - (local $t f32) - (return - (f32.add - (local.get $t) - (local.get $f) - ) - ) - ) - (func $neg (; 1 ;) (param $k i32) (param $p i32) (result f32) - (local $n f32) - (local.set $n - (f32.neg - (block (result f32) - (i32.store - (local.get $k) - (local.get $p) - ) - (f32.load - (local.get $k) - ) - ) - ) - ) - (return - (local.get $n) - ) - ) - (func $bitcasts (; 2 ;) (param $i i32) (param $f f32) - (drop - (f32.reinterpret_i32 - (local.get $i) - ) - ) - (drop - (f64.promote_f32 - (f32.reinterpret_i32 - (local.get $i) - ) - ) - ) - (drop - (i32.reinterpret_f32 - (local.get $f) - ) - ) - ) - (func $ctzzzz (; 3 ;) (result i32) - (return - (i32.ctz - (i32.const 4660) - ) - ) - ) - (func $ub (; 4 ;) (result i32) - (drop - (call $ub) - ) - (return - (global.get $M) - ) - ) -) diff -Nru binaryen-91/test/min.wast.fromBinary binaryen-99/test/min.wast.fromBinary --- binaryen-91/test/min.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/min.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,40 +1,40 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $f32_=>_f32 (func (param f32) (result f32))) + (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (memory $0 256 256) (export "floats" (func $floats)) - (func $floats (; 0 ;) (param $0 f32) (result f32) - (local $1 f32) + (func $floats (param $f f32) (result f32) + (local $t f32) (f32.add - (local.get $1) - (local.get $0) + (local.get $t) + (local.get $f) ) ) - (func $neg (; 1 ;) (param $0 i32) (param $1 i32) (result f32) - (local $2 f32) - (local.tee $2 + (func $neg (param $k i32) (param $p i32) (result f32) + (local $n f32) + (local.tee $n (f32.neg (block $label$1 (result f32) (i32.store - (local.get $0) - (local.get $1) + (local.get $k) + (local.get $p) ) (f32.load - (local.get $0) + (local.get $k) ) ) ) ) ) - (func $littleswitch (; 2 ;) (param $0 i32) (result i32) + (func $littleswitch (param $x i32) (result i32) (block $label$1 (result i32) (block $label$2 (block $label$3 (br_table $label$3 $label$2 $label$3 (i32.sub - (local.get $0) + (local.get $x) (i32.const 1) ) ) @@ -48,8 +48,8 @@ ) ) ) - (func $f1 (; 3 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local.get $2) + (func $f1 (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) + (local.get $i3) ) ) diff -Nru binaryen-91/test/min.wast.fromBinary.noDebugInfo binaryen-99/test/min.wast.fromBinary.noDebugInfo --- binaryen-91/test/min.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/min.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -1,18 +1,18 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $f32_=>_f32 (func (param f32) (result f32))) + (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (memory $0 256 256) (export "floats" (func $0)) - (func $0 (; 0 ;) (param $0 f32) (result f32) + (func $0 (param $0 f32) (result f32) (local $1 f32) (f32.add (local.get $1) (local.get $0) ) ) - (func $1 (; 1 ;) (param $0 i32) (param $1 i32) (result f32) + (func $1 (param $0 i32) (param $1 i32) (result f32) (local $2 f32) (local.tee $2 (f32.neg @@ -28,7 +28,7 @@ ) ) ) - (func $2 (; 2 ;) (param $0 i32) (result i32) + (func $2 (param $0 i32) (result i32) (block $label$1 (result i32) (block $label$2 (block $label$3 @@ -48,7 +48,7 @@ ) ) ) - (func $3 (; 3 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $3 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local.get $2) ) ) diff -Nru binaryen-91/test/min.wast.from-wast binaryen-99/test/min.wast.from-wast --- binaryen-91/test/min.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/min.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,18 +1,18 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $f32_=>_f32 (func (param f32) (result f32))) + (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (memory $0 256 256) (export "floats" (func $floats)) - (func $floats (; 0 ;) (param $f f32) (result f32) + (func $floats (param $f f32) (result f32) (local $t f32) (f32.add (local.get $t) (local.get $f) ) ) - (func $neg (; 1 ;) (param $k i32) (param $p i32) (result f32) + (func $neg (param $k i32) (param $p i32) (result f32) (local $n f32) (local.tee $n (f32.neg @@ -28,7 +28,7 @@ ) ) ) - (func $littleswitch (; 2 ;) (param $x i32) (result i32) + (func $littleswitch (param $x i32) (result i32) (block $topmost (result i32) (block $switch-case$2 (block $switch-case$1 @@ -49,7 +49,7 @@ (i32.const 0) ) ) - (func $f1 (; 3 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) + (func $f1 (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) (block $topmost (result i32) (local.get $i3) ) diff -Nru binaryen-91/test/multivalue.wast binaryen-99/test/multivalue.wast --- binaryen-91/test/multivalue.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/multivalue.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,167 @@ +(module + (import "env" "pair" (func $pair (result i32 i64))) + (global $g1 (mut (i32 i64)) (tuple.make (i32.const 0) (i64.const 0))) + (global $g2 (i32 i64) (tuple.make (i32.const 0) (i64.const 0))) + ;; Test basic lowering of tuple.make, tuple.extract, and tuple variables + (func $triple (result i32 i64 f32) + (tuple.make + (i32.const 42) + (i64.const 7) + (f32.const 13) + ) + ) + (func $get-first (result i32) + (tuple.extract 0 + (call $triple) + ) + ) + (func $get-second (result i64) + (tuple.extract 1 + (call $triple) + ) + ) + (func $get-third (result f32) + (tuple.extract 2 + (call $triple) + ) + ) + (func $reverse (result f32 i64 i32) + (local $x (i32 i64 f32)) + (local.set $x + (call $triple) + ) + (tuple.make + (tuple.extract 2 + (local.get $x) + ) + (tuple.extract 1 + (local.get $x) + ) + (tuple.extract 0 + (local.get $x) + ) + ) + ) + (func $unreachable (result i64) + (tuple.extract 1 + (tuple.make + (i32.const 42) + (i64.const 7) + (unreachable) + ) + ) + ) + + ;; Test multivalue globals + (func $global (result i32 i64) + (global.set $g1 + (tuple.make + (i32.const 42) + (i64.const 7) + ) + ) + (global.get $g2) + ) + + ;; Test lowering of multivalue drops + (func $drop-call + (drop + (call $pair) + ) + ) + (func $drop-tuple-make + (drop + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + (func $drop-block + (drop + (block (result i32 i64) + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + ) + + ;; Test multivalue control structures + (func $mv-return (result i32 i64) + (return + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + (func $mv-return-in-block (result i32 i64) + (block (result i32 i64) + (return + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + ) + (func $mv-block-break (result i32 i64) + (block $l (result i32 i64) + (br $l + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + ) + (func $mv-block-br-if (result i32 i64) + (block $l (result i32 i64) + (br_if $l + (tuple.make + (i32.const 42) + (i64.const 42) + ) + (i32.const 1) + ) + ) + ) + (func $mv-if (result i32 i64 externref) + (if (result i32 i64 externref) + (i32.const 1) + (tuple.make + (i32.const 42) + (i64.const 42) + (ref.null extern) + ) + (tuple.make + (i32.const 42) + (i64.const 42) + (ref.null extern) + ) + ) + ) + (func $mv-loop (result i32 i64) + (loop (result i32 i64) + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + (func $mv-switch (result i32 i64) + (block $a (result i32 i64) + (block $b (result i32 i64) + (br_table $a $b + (tuple.make + (i32.const 42) + (i64.const 42) + ) + (i32.const 0) + ) + ) + ) + ) +) \ No newline at end of file diff -Nru binaryen-91/test/multivalue.wast.fromBinary binaryen-99/test/multivalue.wast.fromBinary --- binaryen-91/test/multivalue.wast.fromBinary 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/multivalue.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,476 @@ +(module + (type $none_=>_i32_i64 (func (result i32 i64))) + (type $none_=>_none (func)) + (type $none_=>_i32_i64_externref (func (result i32 i64 externref))) + (type $none_=>_i64 (func (result i64))) + (type $none_=>_f32_i64_i32 (func (result f32 i64 i32))) + (type $none_=>_i32 (func (result i32))) + (type $none_=>_f32 (func (result f32))) + (type $none_=>_i32_i64_f32 (func (result i32 i64 f32))) + (import "env" "pair" (func $pair (result i32 i64))) + (global $g1 (mut i32) (i32.const 0)) + (global $g2 (mut i64) (i64.const 0)) + (global $global$2 i32 (i32.const 0)) + (global $global$3 i64 (i64.const 0)) + (func $triple (result i32 i64 f32) + (tuple.make + (i32.const 42) + (i64.const 7) + (f32.const 13) + ) + ) + (func $get-first (result i32) + (local $0 (i32 i64 f32)) + (local $1 i64) + (local $2 i32) + (local.set $0 + (call $triple) + ) + (block (result i32) + (local.set $2 + (tuple.extract 0 + (local.get $0) + ) + ) + (drop + (block (result i64) + (local.set $1 + (tuple.extract 1 + (local.get $0) + ) + ) + (drop + (tuple.extract 2 + (local.get $0) + ) + ) + (local.get $1) + ) + ) + (local.get $2) + ) + ) + (func $get-second (result i64) + (local $0 i64) + (local $1 (i32 i64 f32)) + (local $2 i64) + (local $3 i32) + (local.set $1 + (call $triple) + ) + (drop + (block (result i32) + (local.set $3 + (tuple.extract 0 + (local.get $1) + ) + ) + (local.set $0 + (block (result i64) + (local.set $2 + (tuple.extract 1 + (local.get $1) + ) + ) + (drop + (tuple.extract 2 + (local.get $1) + ) + ) + (local.get $2) + ) + ) + (local.get $3) + ) + ) + (local.get $0) + ) + (func $get-third (result f32) + (local $0 f32) + (local $1 (i32 i64 f32)) + (local $2 i64) + (local $3 i32) + (local.set $1 + (call $triple) + ) + (drop + (block (result i32) + (local.set $3 + (tuple.extract 0 + (local.get $1) + ) + ) + (drop + (block (result i64) + (local.set $2 + (tuple.extract 1 + (local.get $1) + ) + ) + (local.set $0 + (tuple.extract 2 + (local.get $1) + ) + ) + (local.get $2) + ) + ) + (local.get $3) + ) + ) + (local.get $0) + ) + (func $reverse (result f32 i64 i32) + (local $x i32) + (local $1 i64) + (local $2 i64) + (local $3 f32) + (local $4 f32) + (local $5 (i32 i64 f32)) + (local $6 i64) + (local $7 i32) + (local $8 i64) + (local $9 i32) + (local $10 i64) + (local $11 i32) + (local $12 i64) + (local $13 i32) + (local $14 f32) + (local.set $5 + (call $triple) + ) + (local.set $x + (block (result i32) + (local.set $7 + (tuple.extract 0 + (local.get $5) + ) + ) + (local.set $1 + (block (result i64) + (local.set $6 + (tuple.extract 1 + (local.get $5) + ) + ) + (local.set $3 + (tuple.extract 2 + (local.get $5) + ) + ) + (local.get $6) + ) + ) + (local.get $7) + ) + ) + (drop + (block (result i32) + (local.set $9 + (local.get $x) + ) + (drop + (block (result i64) + (local.set $8 + (local.get $1) + ) + (local.set $4 + (local.get $3) + ) + (local.get $8) + ) + ) + (local.get $9) + ) + ) + (tuple.make + (block (result f32) + (local.set $14 + (local.get $4) + ) + (drop + (block (result i32) + (local.set $11 + (local.get $x) + ) + (local.set $2 + (block (result i64) + (local.set $10 + (local.get $1) + ) + (drop + (local.get $3) + ) + (local.get $10) + ) + ) + (local.get $11) + ) + ) + (local.get $14) + ) + (local.get $2) + (block (result i32) + (local.set $13 + (local.get $x) + ) + (drop + (block (result i64) + (local.set $12 + (local.get $1) + ) + (drop + (local.get $3) + ) + (local.get $12) + ) + ) + (local.get $13) + ) + ) + ) + (func $unreachable (result i64) + (drop + (i32.const 42) + ) + (drop + (i64.const 7) + ) + (unreachable) + ) + (func $global (result i32 i64) + (local $0 i32) + (global.set $g1 + (block (result i32) + (local.set $0 + (i32.const 42) + ) + (global.set $g2 + (i64.const 7) + ) + (local.get $0) + ) + ) + (tuple.make + (global.get $global$2) + (global.get $global$3) + ) + ) + (func $drop-call + (local $0 (i32 i64)) + (local $1 i32) + (local.set $0 + (call $pair) + ) + (drop + (block (result i32) + (local.set $1 + (tuple.extract 0 + (local.get $0) + ) + ) + (drop + (tuple.extract 1 + (local.get $0) + ) + ) + (local.get $1) + ) + ) + ) + (func $drop-tuple-make + (local $0 i32) + (drop + (block (result i32) + (local.set $0 + (i32.const 42) + ) + (drop + (i64.const 42) + ) + (local.get $0) + ) + ) + ) + (func $drop-block + (local $0 (i32 i64)) + (local $1 i32) + (local.set $0 + (block $label$1 (result i32 i64) + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + (drop + (block (result i32) + (local.set $1 + (tuple.extract 0 + (local.get $0) + ) + ) + (drop + (tuple.extract 1 + (local.get $0) + ) + ) + (local.get $1) + ) + ) + ) + (func $mv-return (result i32 i64) + (return + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + (func $mv-return-in-block (result i32 i64) + (return + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + (func $mv-block-break (result i32 i64) + (local $0 (i32 i64)) + (local.set $0 + (block $label$1 (result i32 i64) + (br $label$1 + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + ) + (tuple.make + (tuple.extract 0 + (local.get $0) + ) + (tuple.extract 1 + (local.get $0) + ) + ) + ) + (func $mv-block-br-if (result i32 i64) + (local $0 (i32 i64)) + (local $1 (i32 i64)) + (local.set $1 + (block $label$1 (result i32 i64) + (local.set $0 + (br_if $label$1 + (tuple.make + (i32.const 42) + (i64.const 42) + ) + (i32.const 1) + ) + ) + (tuple.make + (tuple.extract 0 + (local.get $0) + ) + (tuple.extract 1 + (local.get $0) + ) + ) + ) + ) + (tuple.make + (tuple.extract 0 + (local.get $1) + ) + (tuple.extract 1 + (local.get $1) + ) + ) + ) + (func $mv-if (result i32 i64 externref) + (local $0 (i32 i64 externref)) + (local.set $0 + (if (result i32 i64 externref) + (i32.const 1) + (tuple.make + (i32.const 42) + (i64.const 42) + (ref.null extern) + ) + (tuple.make + (i32.const 42) + (i64.const 42) + (ref.null extern) + ) + ) + ) + (tuple.make + (tuple.extract 0 + (local.get $0) + ) + (tuple.extract 1 + (local.get $0) + ) + (tuple.extract 2 + (local.get $0) + ) + ) + ) + (func $mv-loop (result i32 i64) + (local $0 (i32 i64)) + (local.set $0 + (loop $label$1 (result i32 i64) + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + (tuple.make + (tuple.extract 0 + (local.get $0) + ) + (tuple.extract 1 + (local.get $0) + ) + ) + ) + (func $mv-switch (result i32 i64) + (local $0 (i32 i64)) + (local $1 (i32 i64)) + (local.set $1 + (block $label$1 (result i32 i64) + (local.set $0 + (block $label$2 (result i32 i64) + (br_table $label$1 $label$2 + (tuple.make + (i32.const 42) + (i64.const 42) + ) + (i32.const 0) + ) + ) + ) + (tuple.make + (tuple.extract 0 + (local.get $0) + ) + (tuple.extract 1 + (local.get $0) + ) + ) + ) + ) + (tuple.make + (tuple.extract 0 + (local.get $1) + ) + (tuple.extract 1 + (local.get $1) + ) + ) + ) +) + diff -Nru binaryen-91/test/multivalue.wast.fromBinary.noDebugInfo binaryen-99/test/multivalue.wast.fromBinary.noDebugInfo --- binaryen-91/test/multivalue.wast.fromBinary.noDebugInfo 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/multivalue.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,476 @@ +(module + (type $none_=>_i32_i64 (func (result i32 i64))) + (type $none_=>_none (func)) + (type $none_=>_i32_i64_externref (func (result i32 i64 externref))) + (type $none_=>_i64 (func (result i64))) + (type $none_=>_f32_i64_i32 (func (result f32 i64 i32))) + (type $none_=>_i32 (func (result i32))) + (type $none_=>_f32 (func (result f32))) + (type $none_=>_i32_i64_f32 (func (result i32 i64 f32))) + (import "env" "pair" (func $fimport$0 (result i32 i64))) + (global $global$0 (mut i32) (i32.const 0)) + (global $global$1 (mut i64) (i64.const 0)) + (global $global$2 i32 (i32.const 0)) + (global $global$3 i64 (i64.const 0)) + (func $0 (result i32 i64 f32) + (tuple.make + (i32.const 42) + (i64.const 7) + (f32.const 13) + ) + ) + (func $1 (result i32) + (local $0 (i32 i64 f32)) + (local $1 i64) + (local $2 i32) + (local.set $0 + (call $0) + ) + (block (result i32) + (local.set $2 + (tuple.extract 0 + (local.get $0) + ) + ) + (drop + (block (result i64) + (local.set $1 + (tuple.extract 1 + (local.get $0) + ) + ) + (drop + (tuple.extract 2 + (local.get $0) + ) + ) + (local.get $1) + ) + ) + (local.get $2) + ) + ) + (func $2 (result i64) + (local $0 i64) + (local $1 (i32 i64 f32)) + (local $2 i64) + (local $3 i32) + (local.set $1 + (call $0) + ) + (drop + (block (result i32) + (local.set $3 + (tuple.extract 0 + (local.get $1) + ) + ) + (local.set $0 + (block (result i64) + (local.set $2 + (tuple.extract 1 + (local.get $1) + ) + ) + (drop + (tuple.extract 2 + (local.get $1) + ) + ) + (local.get $2) + ) + ) + (local.get $3) + ) + ) + (local.get $0) + ) + (func $3 (result f32) + (local $0 f32) + (local $1 (i32 i64 f32)) + (local $2 i64) + (local $3 i32) + (local.set $1 + (call $0) + ) + (drop + (block (result i32) + (local.set $3 + (tuple.extract 0 + (local.get $1) + ) + ) + (drop + (block (result i64) + (local.set $2 + (tuple.extract 1 + (local.get $1) + ) + ) + (local.set $0 + (tuple.extract 2 + (local.get $1) + ) + ) + (local.get $2) + ) + ) + (local.get $3) + ) + ) + (local.get $0) + ) + (func $4 (result f32 i64 i32) + (local $0 i32) + (local $1 i64) + (local $2 i64) + (local $3 f32) + (local $4 f32) + (local $5 (i32 i64 f32)) + (local $6 i64) + (local $7 i32) + (local $8 i64) + (local $9 i32) + (local $10 i64) + (local $11 i32) + (local $12 i64) + (local $13 i32) + (local $14 f32) + (local.set $5 + (call $0) + ) + (local.set $0 + (block (result i32) + (local.set $7 + (tuple.extract 0 + (local.get $5) + ) + ) + (local.set $1 + (block (result i64) + (local.set $6 + (tuple.extract 1 + (local.get $5) + ) + ) + (local.set $3 + (tuple.extract 2 + (local.get $5) + ) + ) + (local.get $6) + ) + ) + (local.get $7) + ) + ) + (drop + (block (result i32) + (local.set $9 + (local.get $0) + ) + (drop + (block (result i64) + (local.set $8 + (local.get $1) + ) + (local.set $4 + (local.get $3) + ) + (local.get $8) + ) + ) + (local.get $9) + ) + ) + (tuple.make + (block (result f32) + (local.set $14 + (local.get $4) + ) + (drop + (block (result i32) + (local.set $11 + (local.get $0) + ) + (local.set $2 + (block (result i64) + (local.set $10 + (local.get $1) + ) + (drop + (local.get $3) + ) + (local.get $10) + ) + ) + (local.get $11) + ) + ) + (local.get $14) + ) + (local.get $2) + (block (result i32) + (local.set $13 + (local.get $0) + ) + (drop + (block (result i64) + (local.set $12 + (local.get $1) + ) + (drop + (local.get $3) + ) + (local.get $12) + ) + ) + (local.get $13) + ) + ) + ) + (func $5 (result i64) + (drop + (i32.const 42) + ) + (drop + (i64.const 7) + ) + (unreachable) + ) + (func $6 (result i32 i64) + (local $0 i32) + (global.set $global$0 + (block (result i32) + (local.set $0 + (i32.const 42) + ) + (global.set $global$1 + (i64.const 7) + ) + (local.get $0) + ) + ) + (tuple.make + (global.get $global$2) + (global.get $global$3) + ) + ) + (func $7 + (local $0 (i32 i64)) + (local $1 i32) + (local.set $0 + (call $fimport$0) + ) + (drop + (block (result i32) + (local.set $1 + (tuple.extract 0 + (local.get $0) + ) + ) + (drop + (tuple.extract 1 + (local.get $0) + ) + ) + (local.get $1) + ) + ) + ) + (func $8 + (local $0 i32) + (drop + (block (result i32) + (local.set $0 + (i32.const 42) + ) + (drop + (i64.const 42) + ) + (local.get $0) + ) + ) + ) + (func $9 + (local $0 (i32 i64)) + (local $1 i32) + (local.set $0 + (block $label$1 (result i32 i64) + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + (drop + (block (result i32) + (local.set $1 + (tuple.extract 0 + (local.get $0) + ) + ) + (drop + (tuple.extract 1 + (local.get $0) + ) + ) + (local.get $1) + ) + ) + ) + (func $10 (result i32 i64) + (return + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + (func $11 (result i32 i64) + (return + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + (func $12 (result i32 i64) + (local $0 (i32 i64)) + (local.set $0 + (block $label$1 (result i32 i64) + (br $label$1 + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + ) + (tuple.make + (tuple.extract 0 + (local.get $0) + ) + (tuple.extract 1 + (local.get $0) + ) + ) + ) + (func $13 (result i32 i64) + (local $0 (i32 i64)) + (local $1 (i32 i64)) + (local.set $1 + (block $label$1 (result i32 i64) + (local.set $0 + (br_if $label$1 + (tuple.make + (i32.const 42) + (i64.const 42) + ) + (i32.const 1) + ) + ) + (tuple.make + (tuple.extract 0 + (local.get $0) + ) + (tuple.extract 1 + (local.get $0) + ) + ) + ) + ) + (tuple.make + (tuple.extract 0 + (local.get $1) + ) + (tuple.extract 1 + (local.get $1) + ) + ) + ) + (func $14 (result i32 i64 externref) + (local $0 (i32 i64 externref)) + (local.set $0 + (if (result i32 i64 externref) + (i32.const 1) + (tuple.make + (i32.const 42) + (i64.const 42) + (ref.null extern) + ) + (tuple.make + (i32.const 42) + (i64.const 42) + (ref.null extern) + ) + ) + ) + (tuple.make + (tuple.extract 0 + (local.get $0) + ) + (tuple.extract 1 + (local.get $0) + ) + (tuple.extract 2 + (local.get $0) + ) + ) + ) + (func $15 (result i32 i64) + (local $0 (i32 i64)) + (local.set $0 + (loop $label$1 (result i32 i64) + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + (tuple.make + (tuple.extract 0 + (local.get $0) + ) + (tuple.extract 1 + (local.get $0) + ) + ) + ) + (func $16 (result i32 i64) + (local $0 (i32 i64)) + (local $1 (i32 i64)) + (local.set $1 + (block $label$1 (result i32 i64) + (local.set $0 + (block $label$2 (result i32 i64) + (br_table $label$1 $label$2 + (tuple.make + (i32.const 42) + (i64.const 42) + ) + (i32.const 0) + ) + ) + ) + (tuple.make + (tuple.extract 0 + (local.get $0) + ) + (tuple.extract 1 + (local.get $0) + ) + ) + ) + ) + (tuple.make + (tuple.extract 0 + (local.get $1) + ) + (tuple.extract 1 + (local.get $1) + ) + ) + ) +) + diff -Nru binaryen-91/test/multivalue.wast.from-wast binaryen-99/test/multivalue.wast.from-wast --- binaryen-91/test/multivalue.wast.from-wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/multivalue.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,174 @@ +(module + (type $none_=>_i32_i64 (func (result i32 i64))) + (type $none_=>_none (func)) + (type $none_=>_i64 (func (result i64))) + (type $none_=>_i32_i64_externref (func (result i32 i64 externref))) + (type $none_=>_f32_i64_i32 (func (result f32 i64 i32))) + (type $none_=>_i32 (func (result i32))) + (type $none_=>_f32 (func (result f32))) + (type $none_=>_i32_i64_f32 (func (result i32 i64 f32))) + (import "env" "pair" (func $pair (result i32 i64))) + (global $g1 (mut (i32 i64)) (tuple.make + (i32.const 0) + (i64.const 0) + )) + (global $g2 (i32 i64) (tuple.make + (i32.const 0) + (i64.const 0) + )) + (func $triple (result i32 i64 f32) + (tuple.make + (i32.const 42) + (i64.const 7) + (f32.const 13) + ) + ) + (func $get-first (result i32) + (tuple.extract 0 + (call $triple) + ) + ) + (func $get-second (result i64) + (tuple.extract 1 + (call $triple) + ) + ) + (func $get-third (result f32) + (tuple.extract 2 + (call $triple) + ) + ) + (func $reverse (result f32 i64 i32) + (local $x (i32 i64 f32)) + (local.set $x + (call $triple) + ) + (tuple.make + (tuple.extract 2 + (local.get $x) + ) + (tuple.extract 1 + (local.get $x) + ) + (tuple.extract 0 + (local.get $x) + ) + ) + ) + (func $unreachable (result i64) + (tuple.extract 1 + (tuple.make + (i32.const 42) + (i64.const 7) + (unreachable) + ) + ) + ) + (func $global (result i32 i64) + (global.set $g1 + (tuple.make + (i32.const 42) + (i64.const 7) + ) + ) + (global.get $g2) + ) + (func $drop-call + (drop + (call $pair) + ) + ) + (func $drop-tuple-make + (drop + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + (func $drop-block + (drop + (block $block (result i32 i64) + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + ) + (func $mv-return (result i32 i64) + (return + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + (func $mv-return-in-block (result i32 i64) + (block $block (result i32 i64) + (return + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + ) + (func $mv-block-break (result i32 i64) + (block $l (result i32 i64) + (br $l + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + ) + (func $mv-block-br-if (result i32 i64) + (block $l (result i32 i64) + (br_if $l + (tuple.make + (i32.const 42) + (i64.const 42) + ) + (i32.const 1) + ) + ) + ) + (func $mv-if (result i32 i64 externref) + (if (result i32 i64 externref) + (i32.const 1) + (tuple.make + (i32.const 42) + (i64.const 42) + (ref.null extern) + ) + (tuple.make + (i32.const 42) + (i64.const 42) + (ref.null extern) + ) + ) + ) + (func $mv-loop (result i32 i64) + (loop $loop-in (result i32 i64) + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + (func $mv-switch (result i32 i64) + (block $a (result i32 i64) + (block $b (result i32 i64) + (br_table $a $b + (tuple.make + (i32.const 42) + (i64.const 42) + ) + (i32.const 0) + ) + ) + ) + ) +) diff -Nru binaryen-91/test/mutable-global.wasm.fromBinary binaryen-99/test/mutable-global.wasm.fromBinary --- binaryen-91/test/mutable-global.wasm.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/mutable-global.wasm.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (import "env" "global-mut" (global $gimport$0 (mut i32))) - (func $0 (; 0 ;) + (func $0 (global.set $gimport$0 (i32.add (global.get $gimport$0) diff -Nru binaryen-91/test/mutable-global.wast.fromBinary binaryen-99/test/mutable-global.wast.fromBinary --- binaryen-91/test/mutable-global.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/mutable-global.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,10 +1,10 @@ (module (type $none_=>_none (func)) - (import "env" "global-mut" (global $gimport$0 (mut i32))) - (func $foo (; 0 ;) - (global.set $gimport$0 + (import "env" "global-mut" (global $global-mut (mut i32))) + (func $foo + (global.set $global-mut (i32.add - (global.get $gimport$0) + (global.get $global-mut) (i32.const 1) ) ) diff -Nru binaryen-91/test/mutable-global.wast.fromBinary.noDebugInfo binaryen-99/test/mutable-global.wast.fromBinary.noDebugInfo --- binaryen-91/test/mutable-global.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/mutable-global.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (import "env" "global-mut" (global $gimport$0 (mut i32))) - (func $0 (; 0 ;) + (func $0 (global.set $gimport$0 (i32.add (global.get $gimport$0) diff -Nru binaryen-91/test/mutable-global.wast.from-wast binaryen-99/test/mutable-global.wast.from-wast --- binaryen-91/test/mutable-global.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/mutable-global.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (import "env" "global-mut" (global $global-mut (mut i32))) - (func $foo (; 0 ;) + (func $foo (global.set $global-mut (i32.add (global.get $global-mut) diff -Nru binaryen-91/test/newsyntax.wast.fromBinary binaryen-99/test/newsyntax.wast.fromBinary --- binaryen-91/test/newsyntax.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/newsyntax.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -3,7 +3,7 @@ (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (import "env" "table" (table $timport$0 9 9 funcref)) (export "call_indirect" (func $0)) - (func $0 (; 0 ;) + (func $0 (drop (call_indirect (type $i32_f64_=>_i32) (i32.const 10) diff -Nru binaryen-91/test/newsyntax.wast.fromBinary.noDebugInfo binaryen-99/test/newsyntax.wast.fromBinary.noDebugInfo --- binaryen-91/test/newsyntax.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/newsyntax.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -3,7 +3,7 @@ (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) (import "env" "table" (table $timport$0 9 9 funcref)) (export "call_indirect" (func $0)) - (func $0 (; 0 ;) + (func $0 (drop (call_indirect (type $i32_f64_=>_i32) (i32.const 10) diff -Nru binaryen-91/test/newsyntax.wast.from-wast binaryen-99/test/newsyntax.wast.from-wast --- binaryen-91/test/newsyntax.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/newsyntax.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,9 +1,9 @@ (module (type $none_=>_none (func)) (type $i32_f64_=>_i32 (func (param i32 f64) (result i32))) - (import "env" "table" (table $0 9 9 funcref)) + (import "env" "table" (table $timport$0 9 9 funcref)) (export "call_indirect" (func $0)) - (func $0 (; 0 ;) + (func $0 (drop (call_indirect (type $i32_f64_=>_i32) (i32.const 10) diff -Nru binaryen-91/test/noffi_f32.asm.js binaryen-99/test/noffi_f32.asm.js --- binaryen-91/test/noffi_f32.asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/noffi_f32.asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -function(global, env, buffer) { - "use asm"; - var Math_fround=global.Math.fround; - var importf=env._importf; - - function exportf(a){ - a=Math_fround(a); - return Math_fround(a+Math_fround(1.0)) - } - function main(){ - Math_fround(importf(Math_fround(3.4000000953674316))); - return 0 - } - - return{ - main:main, - exportf:exportf} -} - -; - diff -Nru binaryen-91/test/noffi_f32.fromasm binaryen-99/test/noffi_f32.fromasm --- binaryen-91/test/noffi_f32.fromasm 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/noffi_f32.fromasm 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -(module - (type $f32_=>_f32 (func (param f32) (result f32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "noffi_f32.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "_importf" (func $importf (param f32) (result f32))) - (export "main" (func $main)) - (export "exportf" (func $exportf)) - (func $exportf (; 1 ;) (; has Stack IR ;) (param $0 f32) (result f32) - (f32.add - (local.get $0) - (f32.const 1) - ) - ) - (func $main (; 2 ;) (; has Stack IR ;) (result i32) - (drop - (call $importf - (f32.const 3.4000000953674316) - ) - ) - (i32.const 0) - ) -) diff -Nru binaryen-91/test/noffi_f32.fromasm.clamp binaryen-99/test/noffi_f32.fromasm.clamp --- binaryen-91/test/noffi_f32.fromasm.clamp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/noffi_f32.fromasm.clamp 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -(module - (type $f32_=>_f32 (func (param f32) (result f32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "noffi_f32.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "_importf" (func $importf (param f32) (result f32))) - (export "main" (func $main)) - (export "exportf" (func $exportf)) - (func $exportf (; 1 ;) (; has Stack IR ;) (param $0 f32) (result f32) - (f32.add - (local.get $0) - (f32.const 1) - ) - ) - (func $main (; 2 ;) (; has Stack IR ;) (result i32) - (drop - (call $importf - (f32.const 3.4000000953674316) - ) - ) - (i32.const 0) - ) -) diff -Nru binaryen-91/test/noffi_f32.fromasm.clamp.no-opts binaryen-99/test/noffi_f32.fromasm.clamp.no-opts --- binaryen-91/test/noffi_f32.fromasm.clamp.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/noffi_f32.fromasm.clamp.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,29 +0,0 @@ -(module - (type $f32_=>_f32 (func (param f32) (result f32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "_importf" (func $importf (param f32) (result f32))) - (export "main" (func $main)) - (export "exportf" (func $exportf)) - (func $exportf (; 1 ;) (param $a f32) (result f32) - (return - (f32.add - (local.get $a) - (f32.const 1) - ) - ) - ) - (func $main (; 2 ;) (result i32) - (drop - (call $importf - (f32.const 3.4000000953674316) - ) - ) - (return - (i32.const 0) - ) - ) -) diff -Nru binaryen-91/test/noffi_f32.fromasm.imprecise binaryen-99/test/noffi_f32.fromasm.imprecise --- binaryen-91/test/noffi_f32.fromasm.imprecise 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/noffi_f32.fromasm.imprecise 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -(module - (type $f32_=>_f32 (func (param f32) (result f32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "_importf" (func $importf (param f32) (result f32))) - (export "main" (func $main)) - (export "exportf" (func $exportf)) - (func $exportf (; 1 ;) (; has Stack IR ;) (param $0 f32) (result f32) - (f32.add - (local.get $0) - (f32.const 1) - ) - ) - (func $main (; 2 ;) (; has Stack IR ;) (result i32) - (drop - (call $importf - (f32.const 3.4000000953674316) - ) - ) - (i32.const 0) - ) -) diff -Nru binaryen-91/test/noffi_f32.fromasm.imprecise.no-opts binaryen-99/test/noffi_f32.fromasm.imprecise.no-opts --- binaryen-91/test/noffi_f32.fromasm.imprecise.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/noffi_f32.fromasm.imprecise.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,29 +0,0 @@ -(module - (type $f32_=>_f32 (func (param f32) (result f32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "_importf" (func $importf (param f32) (result f32))) - (export "main" (func $main)) - (export "exportf" (func $exportf)) - (func $exportf (; 1 ;) (param $a f32) (result f32) - (return - (f32.add - (local.get $a) - (f32.const 1) - ) - ) - ) - (func $main (; 2 ;) (result i32) - (drop - (call $importf - (f32.const 3.4000000953674316) - ) - ) - (return - (i32.const 0) - ) - ) -) diff -Nru binaryen-91/test/noffi_f32.fromasm.no-opts binaryen-99/test/noffi_f32.fromasm.no-opts --- binaryen-91/test/noffi_f32.fromasm.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/noffi_f32.fromasm.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,29 +0,0 @@ -(module - (type $f32_=>_f32 (func (param f32) (result f32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "_importf" (func $importf (param f32) (result f32))) - (export "main" (func $main)) - (export "exportf" (func $exportf)) - (func $exportf (; 1 ;) (param $a f32) (result f32) - (return - (f32.add - (local.get $a) - (f32.const 1) - ) - ) - ) - (func $main (; 2 ;) (result i32) - (drop - (call $importf - (f32.const 3.4000000953674316) - ) - ) - (return - (i32.const 0) - ) - ) -) diff -Nru binaryen-91/test/noffi_i64.asm.js binaryen-99/test/noffi_i64.asm.js --- binaryen-91/test/noffi_i64.asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/noffi_i64.asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -function(global, env, buffer) { - "use asm"; - var importll=env._importll; - - function add(a,b) { - a = i64(a); - b = i64(b); - var c = i64(); - c = i64_add(b,a); - return (i64(c)); - } - function main() { - (i64(importll(i64_const(2,0)))); - return 0; - } - - return { - _add: add, - _main: main }; -} -; diff -Nru binaryen-91/test/noffi_i64.fromasm binaryen-99/test/noffi_i64.fromasm --- binaryen-91/test/noffi_i64.fromasm 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/noffi_i64.fromasm 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "noffi_i64.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "_importll" (func $importll (param i64) (result i64))) - (export "_add" (func $add)) - (export "_main" (func $main)) - (func $add (; 1 ;) (; has Stack IR ;) (param $0 i64) (param $1 i64) (result i64) - (i64.add - (local.get $0) - (local.get $1) - ) - ) - (func $main (; 2 ;) (; has Stack IR ;) (result i32) - (drop - (call $importll - (i64.const 2) - ) - ) - (i32.const 0) - ) -) diff -Nru binaryen-91/test/noffi_i64.fromasm.clamp binaryen-99/test/noffi_i64.fromasm.clamp --- binaryen-91/test/noffi_i64.fromasm.clamp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/noffi_i64.fromasm.clamp 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "noffi_i64.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "_importll" (func $importll (param i64) (result i64))) - (export "_add" (func $add)) - (export "_main" (func $main)) - (func $add (; 1 ;) (; has Stack IR ;) (param $0 i64) (param $1 i64) (result i64) - (i64.add - (local.get $0) - (local.get $1) - ) - ) - (func $main (; 2 ;) (; has Stack IR ;) (result i32) - (drop - (call $importll - (i64.const 2) - ) - ) - (i32.const 0) - ) -) diff -Nru binaryen-91/test/noffi_i64.fromasm.clamp.no-opts binaryen-99/test/noffi_i64.fromasm.clamp.no-opts --- binaryen-91/test/noffi_i64.fromasm.clamp.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/noffi_i64.fromasm.clamp.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "_importll" (func $importll (param i64) (result i64))) - (export "_add" (func $add)) - (export "_main" (func $main)) - (func $add (; 1 ;) (param $a i64) (param $b i64) (result i64) - (local $c i64) - (local.set $c - (i64.add - (local.get $b) - (local.get $a) - ) - ) - (return - (local.get $c) - ) - ) - (func $main (; 2 ;) (result i32) - (drop - (call $importll - (i64.const 2) - ) - ) - (return - (i32.const 0) - ) - ) -) diff -Nru binaryen-91/test/noffi_i64.fromasm.imprecise binaryen-99/test/noffi_i64.fromasm.imprecise --- binaryen-91/test/noffi_i64.fromasm.imprecise 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/noffi_i64.fromasm.imprecise 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) - (import "env" "_importll" (func $importll (param i64) (result i64))) - (export "_add" (func $add)) - (export "_main" (func $main)) - (func $add (; 1 ;) (; has Stack IR ;) (param $0 i64) (param $1 i64) (result i64) - (i64.add - (local.get $0) - (local.get $1) - ) - ) - (func $main (; 2 ;) (; has Stack IR ;) (result i32) - (drop - (call $importll - (i64.const 2) - ) - ) - (i32.const 0) - ) -) diff -Nru binaryen-91/test/noffi_i64.fromasm.imprecise.no-opts binaryen-99/test/noffi_i64.fromasm.imprecise.no-opts --- binaryen-91/test/noffi_i64.fromasm.imprecise.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/noffi_i64.fromasm.imprecise.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "_importll" (func $importll (param i64) (result i64))) - (export "_add" (func $add)) - (export "_main" (func $main)) - (func $add (; 1 ;) (param $a i64) (param $b i64) (result i64) - (local $c i64) - (local.set $c - (i64.add - (local.get $b) - (local.get $a) - ) - ) - (return - (local.get $c) - ) - ) - (func $main (; 2 ;) (result i32) - (drop - (call $importll - (i64.const 2) - ) - ) - (return - (i32.const 0) - ) - ) -) diff -Nru binaryen-91/test/noffi_i64.fromasm.no-opts binaryen-99/test/noffi_i64.fromasm.no-opts --- binaryen-91/test/noffi_i64.fromasm.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/noffi_i64.fromasm.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "_importll" (func $importll (param i64) (result i64))) - (export "_add" (func $add)) - (export "_main" (func $main)) - (func $add (; 1 ;) (param $a i64) (param $b i64) (result i64) - (local $c i64) - (local.set $c - (i64.add - (local.get $b) - (local.get $a) - ) - ) - (return - (local.get $c) - ) - ) - (func $main (; 2 ;) (result i32) - (drop - (call $importll - (i64.const 2) - ) - ) - (return - (i32.const 0) - ) - ) -) diff -Nru binaryen-91/test/nonspec-bulk-memory.wast binaryen-99/test/nonspec-bulk-memory.wast --- binaryen-91/test/nonspec-bulk-memory.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/nonspec-bulk-memory.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,29 @@ +(module + (memory 1024 1024 + (segment 0 "hello, world") + ) + (func $memory.init + (memory.init 0 + (i32.const 512) + (i32.const 0) + (i32.const 12) + ) + ) + (func $data.drop + (data.drop 0) + ) + (func $memory.copy + (memory.copy + (i32.const 512) + (i32.const 0) + (i32.const 12) + ) + ) + (func $memory.fill + (memory.fill + (i32.const 0) + (i32.const 42) + (i32.const 1024) + ) + ) +) diff -Nru binaryen-91/test/nonspec-bulk-memory.wast.fromBinary binaryen-99/test/nonspec-bulk-memory.wast.fromBinary --- binaryen-91/test/nonspec-bulk-memory.wast.fromBinary 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/nonspec-bulk-memory.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,30 @@ +(module + (type $none_=>_none (func)) + (memory $0 1024 1024) + (data (i32.const 0) "hello, world") + (func $memory.init + (memory.init 0 + (i32.const 512) + (i32.const 0) + (i32.const 12) + ) + ) + (func $data.drop + (data.drop 0) + ) + (func $memory.copy + (memory.copy + (i32.const 512) + (i32.const 0) + (i32.const 12) + ) + ) + (func $memory.fill + (memory.fill + (i32.const 0) + (i32.const 42) + (i32.const 1024) + ) + ) +) + diff -Nru binaryen-91/test/nonspec-bulk-memory.wast.fromBinary.noDebugInfo binaryen-99/test/nonspec-bulk-memory.wast.fromBinary.noDebugInfo --- binaryen-91/test/nonspec-bulk-memory.wast.fromBinary.noDebugInfo 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/nonspec-bulk-memory.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,30 @@ +(module + (type $none_=>_none (func)) + (memory $0 1024 1024) + (data (i32.const 0) "hello, world") + (func $0 + (memory.init 0 + (i32.const 512) + (i32.const 0) + (i32.const 12) + ) + ) + (func $1 + (data.drop 0) + ) + (func $2 + (memory.copy + (i32.const 512) + (i32.const 0) + (i32.const 12) + ) + ) + (func $3 + (memory.fill + (i32.const 0) + (i32.const 42) + (i32.const 1024) + ) + ) +) + diff -Nru binaryen-91/test/nonspec-bulk-memory.wast.from-wast binaryen-99/test/nonspec-bulk-memory.wast.from-wast --- binaryen-91/test/nonspec-bulk-memory.wast.from-wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/nonspec-bulk-memory.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,29 @@ +(module + (type $none_=>_none (func)) + (memory $0 1024 1024) + (data (i32.const 0) "hello, world") + (func $memory.init + (memory.init 0 + (i32.const 512) + (i32.const 0) + (i32.const 12) + ) + ) + (func $data.drop + (data.drop 0) + ) + (func $memory.copy + (memory.copy + (i32.const 512) + (i32.const 0) + (i32.const 12) + ) + ) + (func $memory.fill + (memory.fill + (i32.const 0) + (i32.const 42) + (i32.const 1024) + ) + ) +) diff -Nru binaryen-91/test/passes/alignment-lowering64.passes binaryen-99/test/passes/alignment-lowering64.passes --- binaryen-91/test/passes/alignment-lowering64.passes 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/alignment-lowering64.passes 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +alignment-lowering_enable-memory64 diff -Nru binaryen-91/test/passes/alignment-lowering64.txt binaryen-99/test/passes/alignment-lowering64.txt --- binaryen-91/test/passes/alignment-lowering64.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/alignment-lowering64.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,1948 @@ +(module + (type $none_=>_none (func)) + (memory $0 i64 1 1) + (func $func_4 + (local $0 i64) + (local $1 i64) + (local $2 i64) + (local $3 i64) + (local $4 i64) + (local $5 i32) + (local $6 i64) + (local $7 i32) + (local $8 i64) + (local $9 i32) + (local $10 i64) + (local $11 i32) + (drop + (i32.load + (i64.const 4) + ) + ) + (drop + (block (result i32) + (local.set $0 + (i64.const 4) + ) + (i32.or + (i32.or + (i32.load8_u + (local.get $0) + ) + (i32.shl + (i32.load8_u offset=1 + (local.get $0) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=2 + (local.get $0) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=3 + (local.get $0) + ) + (i32.const 24) + ) + ) + ) + ) + ) + (drop + (block (result i32) + (local.set $1 + (i64.const 4) + ) + (i32.or + (i32.load16_u + (local.get $1) + ) + (i32.shl + (i32.load16_u offset=2 + (local.get $1) + ) + (i32.const 16) + ) + ) + ) + ) + (drop + (i32.load + (i64.const 4) + ) + ) + (drop + (i32.load offset=100 + (i64.const 4) + ) + ) + (drop + (block (result i32) + (local.set $2 + (i64.const 4) + ) + (i32.or + (i32.or + (i32.load8_u offset=100 + (local.get $2) + ) + (i32.shl + (i32.load8_u offset=101 + (local.get $2) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=102 + (local.get $2) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=103 + (local.get $2) + ) + (i32.const 24) + ) + ) + ) + ) + ) + (drop + (block (result i32) + (local.set $3 + (i64.const 4) + ) + (i32.or + (i32.load16_u offset=100 + (local.get $3) + ) + (i32.shl + (i32.load16_u offset=102 + (local.get $3) + ) + (i32.const 16) + ) + ) + ) + ) + (drop + (i32.load offset=100 + (i64.const 4) + ) + ) + (drop + (unreachable) + ) + (i32.store + (i64.const 4) + (i32.const 8) + ) + (block + (local.set $4 + (i64.const 4) + ) + (local.set $5 + (i32.const 8) + ) + (i32.store8 + (local.get $4) + (local.get $5) + ) + (i32.store8 offset=1 + (local.get $4) + (i32.shr_u + (local.get $5) + (i32.const 8) + ) + ) + (i32.store8 offset=2 + (local.get $4) + (i32.shr_u + (local.get $5) + (i32.const 16) + ) + ) + (i32.store8 offset=3 + (local.get $4) + (i32.shr_u + (local.get $5) + (i32.const 24) + ) + ) + ) + (block + (local.set $6 + (i64.const 4) + ) + (local.set $7 + (i32.const 8) + ) + (i32.store16 + (local.get $6) + (local.get $7) + ) + (i32.store16 offset=2 + (local.get $6) + (i32.shr_u + (local.get $7) + (i32.const 16) + ) + ) + ) + (i32.store + (i64.const 4) + (i32.const 8) + ) + (i32.store offset=100 + (i64.const 4) + (i32.const 8) + ) + (block + (local.set $8 + (i64.const 4) + ) + (local.set $9 + (i32.const 8) + ) + (i32.store8 offset=100 + (local.get $8) + (local.get $9) + ) + (i32.store8 offset=101 + (local.get $8) + (i32.shr_u + (local.get $9) + (i32.const 8) + ) + ) + (i32.store8 offset=102 + (local.get $8) + (i32.shr_u + (local.get $9) + (i32.const 16) + ) + ) + (i32.store8 offset=103 + (local.get $8) + (i32.shr_u + (local.get $9) + (i32.const 24) + ) + ) + ) + (block + (local.set $10 + (i64.const 4) + ) + (local.set $11 + (i32.const 8) + ) + (i32.store16 offset=100 + (local.get $10) + (local.get $11) + ) + (i32.store16 offset=102 + (local.get $10) + (i32.shr_u + (local.get $11) + (i32.const 16) + ) + ) + ) + (i32.store offset=100 + (i64.const 4) + (i32.const 8) + ) + (block + (drop + (unreachable) + ) + (drop + (i32.const 8) + ) + ) + (block + (drop + (i64.const 4) + ) + (drop + (unreachable) + ) + ) + ) + (func $func_2 + (local $0 i64) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i64) + (local $5 i32) + (drop + (i32.load16_u + (i64.const 4) + ) + ) + (drop + (block (result i32) + (local.set $0 + (i64.const 4) + ) + (i32.or + (i32.load8_u + (local.get $0) + ) + (i32.shl + (i32.load8_u offset=1 + (local.get $0) + ) + (i32.const 8) + ) + ) + ) + ) + (drop + (i32.load16_u + (i64.const 4) + ) + ) + (drop + (i32.load16_u offset=100 + (i64.const 4) + ) + ) + (drop + (block (result i32) + (local.set $1 + (i64.const 4) + ) + (i32.or + (i32.load8_u offset=100 + (local.get $1) + ) + (i32.shl + (i32.load8_u offset=101 + (local.get $1) + ) + (i32.const 8) + ) + ) + ) + ) + (drop + (i32.load16_u offset=100 + (i64.const 4) + ) + ) + (drop + (unreachable) + ) + (i32.store16 + (i64.const 4) + (i32.const 8) + ) + (block + (local.set $2 + (i64.const 4) + ) + (local.set $3 + (i32.const 8) + ) + (i32.store8 + (local.get $2) + (local.get $3) + ) + (i32.store8 offset=1 + (local.get $2) + (i32.shr_u + (local.get $3) + (i32.const 8) + ) + ) + ) + (i32.store16 + (i64.const 4) + (i32.const 8) + ) + (i32.store16 offset=100 + (i64.const 4) + (i32.const 8) + ) + (block + (local.set $4 + (i64.const 4) + ) + (local.set $5 + (i32.const 8) + ) + (i32.store8 offset=100 + (local.get $4) + (local.get $5) + ) + (i32.store8 offset=101 + (local.get $4) + (i32.shr_u + (local.get $5) + (i32.const 8) + ) + ) + ) + (i32.store16 offset=100 + (i64.const 4) + (i32.const 8) + ) + (block + (drop + (unreachable) + ) + (drop + (i32.const 8) + ) + ) + (block + (drop + (i64.const 4) + ) + (drop + (unreachable) + ) + ) + ) + (func $func_1 + (drop + (i32.load8_u + (i64.const 4) + ) + ) + (drop + (i32.load8_u + (i64.const 4) + ) + ) + (drop + (i32.load8_u offset=100 + (i64.const 4) + ) + ) + (drop + (i32.load8_u offset=100 + (i64.const 4) + ) + ) + (drop + (unreachable) + ) + (i32.store8 + (i64.const 4) + (i32.const 8) + ) + (i32.store8 + (i64.const 4) + (i32.const 8) + ) + (i32.store8 offset=100 + (i64.const 4) + (i32.const 8) + ) + (i32.store8 offset=100 + (i64.const 4) + (i32.const 8) + ) + (block + (drop + (unreachable) + ) + (drop + (i32.const 8) + ) + ) + (block + (drop + (i64.const 4) + ) + (drop + (unreachable) + ) + ) + ) + (func $func_signed + (local $0 i64) + (local $1 i64) + (drop + (i32.load16_s + (i64.const 4) + ) + ) + (drop + (block (result i32) + (local.set $0 + (i64.const 4) + ) + (i32.shr_s + (i32.shl + (i32.or + (i32.load8_u + (local.get $0) + ) + (i32.shl + (i32.load8_u offset=1 + (local.get $0) + ) + (i32.const 8) + ) + ) + (i32.const 16) + ) + (i32.const 16) + ) + ) + ) + (drop + (i32.load16_s + (i64.const 4) + ) + ) + (drop + (i32.load16_s offset=100 + (i64.const 4) + ) + ) + (drop + (block (result i32) + (local.set $1 + (i64.const 4) + ) + (i32.shr_s + (i32.shl + (i32.or + (i32.load8_u offset=100 + (local.get $1) + ) + (i32.shl + (i32.load8_u offset=101 + (local.get $1) + ) + (i32.const 8) + ) + ) + (i32.const 16) + ) + (i32.const 16) + ) + ) + ) + (drop + (i32.load16_s offset=100 + (i64.const 4) + ) + ) + (drop + (unreachable) + ) + ) + (func $i64-load + (local $0 i64) + (local $1 i64) + (local $2 i64) + (local $3 i64) + (local $4 i64) + (local $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 i64) + (local $9 i64) + (local $10 i64) + (local $11 i64) + (local $12 i64) + (local $13 i64) + (drop + (block (result i64) + (local.set $0 + (i64.const 12) + ) + (i64.or + (i64.extend_i32_u + (block (result i32) + (local.set $1 + (local.get $0) + ) + (i32.or + (i32.or + (i32.load8_u + (local.get $1) + ) + (i32.shl + (i32.load8_u offset=1 + (local.get $1) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=2 + (local.get $1) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=3 + (local.get $1) + ) + (i32.const 24) + ) + ) + ) + ) + ) + (i64.shl + (i64.extend_i32_u + (block (result i32) + (local.set $2 + (local.get $0) + ) + (i32.or + (i32.or + (i32.load8_u offset=4 + (local.get $2) + ) + (i32.shl + (i32.load8_u offset=5 + (local.get $2) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=6 + (local.get $2) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=7 + (local.get $2) + ) + (i32.const 24) + ) + ) + ) + ) + ) + (i64.const 32) + ) + ) + ) + ) + (drop + (block (result i64) + (local.set $3 + (i64.const 16) + ) + (i64.or + (i64.extend_i32_u + (block (result i32) + (local.set $4 + (local.get $3) + ) + (i32.or + (i32.load16_u + (local.get $4) + ) + (i32.shl + (i32.load16_u offset=2 + (local.get $4) + ) + (i32.const 16) + ) + ) + ) + ) + (i64.shl + (i64.extend_i32_u + (block (result i32) + (local.set $5 + (local.get $3) + ) + (i32.or + (i32.load16_u offset=4 + (local.get $5) + ) + (i32.shl + (i32.load16_u offset=6 + (local.get $5) + ) + (i32.const 16) + ) + ) + ) + ) + (i64.const 32) + ) + ) + ) + ) + (drop + (block (result i64) + (local.set $6 + (i64.const 20) + ) + (i64.or + (i64.extend_i32_u + (i32.load + (local.get $6) + ) + ) + (i64.shl + (i64.extend_i32_u + (i32.load offset=4 + (local.get $6) + ) + ) + (i64.const 32) + ) + ) + ) + ) + (drop + (block (result i64) + (local.set $7 + (i64.const 20) + ) + (i64.or + (i64.extend_i32_u + (block (result i32) + (local.set $8 + (local.get $7) + ) + (i32.or + (i32.or + (i32.load8_u offset=3 + (local.get $8) + ) + (i32.shl + (i32.load8_u offset=4 + (local.get $8) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=5 + (local.get $8) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=6 + (local.get $8) + ) + (i32.const 24) + ) + ) + ) + ) + ) + (i64.shl + (i64.extend_i32_u + (block (result i32) + (local.set $9 + (local.get $7) + ) + (i32.or + (i32.or + (i32.load8_u offset=7 + (local.get $9) + ) + (i32.shl + (i32.load8_u offset=8 + (local.get $9) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=9 + (local.get $9) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=10 + (local.get $9) + ) + (i32.const 24) + ) + ) + ) + ) + ) + (i64.const 32) + ) + ) + ) + ) + (drop + (i64.extend_i32_s + (block (result i32) + (local.set $10 + (i64.const 28) + ) + (i32.shr_s + (i32.shl + (i32.or + (i32.load8_u + (local.get $10) + ) + (i32.shl + (i32.load8_u offset=1 + (local.get $10) + ) + (i32.const 8) + ) + ) + (i32.const 16) + ) + (i32.const 16) + ) + ) + ) + ) + (drop + (i64.extend_i32_s + (block (result i32) + (local.set $11 + (i64.const 32) + ) + (i32.or + (i32.or + (i32.load8_u + (local.get $11) + ) + (i32.shl + (i32.load8_u offset=1 + (local.get $11) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=2 + (local.get $11) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=3 + (local.get $11) + ) + (i32.const 24) + ) + ) + ) + ) + ) + ) + (drop + (i64.extend_i32_u + (block (result i32) + (local.set $12 + (i64.const 40) + ) + (i32.or + (i32.load8_u + (local.get $12) + ) + (i32.shl + (i32.load8_u offset=1 + (local.get $12) + ) + (i32.const 8) + ) + ) + ) + ) + ) + (drop + (i64.extend_i32_u + (block (result i32) + (local.set $13 + (i64.const 44) + ) + (i32.or + (i32.or + (i32.load8_u + (local.get $13) + ) + (i32.shl + (i32.load8_u offset=1 + (local.get $13) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=2 + (local.get $13) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=3 + (local.get $13) + ) + (i32.const 24) + ) + ) + ) + ) + ) + ) + ) + (func $f32-load + (local $0 i64) + (local $1 i64) + (local $2 i64) + (drop + (f32.reinterpret_i32 + (block (result i32) + (local.set $0 + (i64.const 12) + ) + (i32.or + (i32.or + (i32.load8_u + (local.get $0) + ) + (i32.shl + (i32.load8_u offset=1 + (local.get $0) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=2 + (local.get $0) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=3 + (local.get $0) + ) + (i32.const 24) + ) + ) + ) + ) + ) + ) + (drop + (f32.reinterpret_i32 + (block (result i32) + (local.set $1 + (i64.const 16) + ) + (i32.or + (i32.load16_u + (local.get $1) + ) + (i32.shl + (i32.load16_u offset=2 + (local.get $1) + ) + (i32.const 16) + ) + ) + ) + ) + ) + (drop + (f32.reinterpret_i32 + (block (result i32) + (local.set $2 + (i64.const 20) + ) + (i32.or + (i32.or + (i32.load8_u offset=3 + (local.get $2) + ) + (i32.shl + (i32.load8_u offset=4 + (local.get $2) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=5 + (local.get $2) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=6 + (local.get $2) + ) + (i32.const 24) + ) + ) + ) + ) + ) + ) + ) + (func $f64-load + (local $0 i64) + (local $1 i64) + (local $2 i64) + (local $3 i64) + (local $4 i64) + (local $5 i64) + (local $6 i64) + (local $7 i64) + (local $8 i64) + (local $9 i64) + (drop + (f64.reinterpret_i64 + (block (result i64) + (local.set $0 + (i64.const 12) + ) + (i64.or + (i64.extend_i32_u + (block (result i32) + (local.set $1 + (local.get $0) + ) + (i32.or + (i32.or + (i32.load8_u + (local.get $1) + ) + (i32.shl + (i32.load8_u offset=1 + (local.get $1) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=2 + (local.get $1) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=3 + (local.get $1) + ) + (i32.const 24) + ) + ) + ) + ) + ) + (i64.shl + (i64.extend_i32_u + (block (result i32) + (local.set $2 + (local.get $0) + ) + (i32.or + (i32.or + (i32.load8_u offset=4 + (local.get $2) + ) + (i32.shl + (i32.load8_u offset=5 + (local.get $2) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=6 + (local.get $2) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=7 + (local.get $2) + ) + (i32.const 24) + ) + ) + ) + ) + ) + (i64.const 32) + ) + ) + ) + ) + ) + (drop + (f64.reinterpret_i64 + (block (result i64) + (local.set $3 + (i64.const 16) + ) + (i64.or + (i64.extend_i32_u + (block (result i32) + (local.set $4 + (local.get $3) + ) + (i32.or + (i32.load16_u + (local.get $4) + ) + (i32.shl + (i32.load16_u offset=2 + (local.get $4) + ) + (i32.const 16) + ) + ) + ) + ) + (i64.shl + (i64.extend_i32_u + (block (result i32) + (local.set $5 + (local.get $3) + ) + (i32.or + (i32.load16_u offset=4 + (local.get $5) + ) + (i32.shl + (i32.load16_u offset=6 + (local.get $5) + ) + (i32.const 16) + ) + ) + ) + ) + (i64.const 32) + ) + ) + ) + ) + ) + (drop + (f64.reinterpret_i64 + (block (result i64) + (local.set $6 + (i64.const 20) + ) + (i64.or + (i64.extend_i32_u + (i32.load + (local.get $6) + ) + ) + (i64.shl + (i64.extend_i32_u + (i32.load offset=4 + (local.get $6) + ) + ) + (i64.const 32) + ) + ) + ) + ) + ) + (drop + (f64.reinterpret_i64 + (block (result i64) + (local.set $7 + (i64.const 20) + ) + (i64.or + (i64.extend_i32_u + (block (result i32) + (local.set $8 + (local.get $7) + ) + (i32.or + (i32.or + (i32.load8_u offset=3 + (local.get $8) + ) + (i32.shl + (i32.load8_u offset=4 + (local.get $8) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=5 + (local.get $8) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=6 + (local.get $8) + ) + (i32.const 24) + ) + ) + ) + ) + ) + (i64.shl + (i64.extend_i32_u + (block (result i32) + (local.set $9 + (local.get $7) + ) + (i32.or + (i32.or + (i32.load8_u offset=7 + (local.get $9) + ) + (i32.shl + (i32.load8_u offset=8 + (local.get $9) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=9 + (local.get $9) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=10 + (local.get $9) + ) + (i32.const 24) + ) + ) + ) + ) + ) + (i64.const 32) + ) + ) + ) + ) + ) + ) + (func $i64-store + (local $0 i64) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i64) + (local $5 i32) + (local $6 i64) + (local $7 i64) + (local $8 i64) + (local $9 i32) + (local $10 i64) + (local $11 i32) + (local $12 i64) + (local $13 i64) + (local $14 i64) + (local $15 i64) + (local $16 i64) + (local $17 i32) + (local $18 i64) + (local $19 i32) + (local $20 i64) + (local $21 i32) + (local $22 i64) + (local $23 i32) + (block + (local.set $0 + (i64.const 12) + ) + (local.set $1 + (i64.const 100) + ) + (block + (local.set $2 + (local.get $0) + ) + (local.set $3 + (i32.wrap_i64 + (local.get $1) + ) + ) + (i32.store8 + (local.get $2) + (local.get $3) + ) + (i32.store8 offset=1 + (local.get $2) + (i32.shr_u + (local.get $3) + (i32.const 8) + ) + ) + (i32.store8 offset=2 + (local.get $2) + (i32.shr_u + (local.get $3) + (i32.const 16) + ) + ) + (i32.store8 offset=3 + (local.get $2) + (i32.shr_u + (local.get $3) + (i32.const 24) + ) + ) + ) + (block + (local.set $4 + (local.get $0) + ) + (local.set $5 + (i32.wrap_i64 + (i64.shr_u + (local.get $1) + (i64.const 32) + ) + ) + ) + (i32.store8 offset=4 + (local.get $4) + (local.get $5) + ) + (i32.store8 offset=5 + (local.get $4) + (i32.shr_u + (local.get $5) + (i32.const 8) + ) + ) + (i32.store8 offset=6 + (local.get $4) + (i32.shr_u + (local.get $5) + (i32.const 16) + ) + ) + (i32.store8 offset=7 + (local.get $4) + (i32.shr_u + (local.get $5) + (i32.const 24) + ) + ) + ) + ) + (block + (local.set $6 + (i64.const 16) + ) + (local.set $7 + (i64.const 200) + ) + (block + (local.set $8 + (local.get $6) + ) + (local.set $9 + (i32.wrap_i64 + (local.get $7) + ) + ) + (i32.store16 + (local.get $8) + (local.get $9) + ) + (i32.store16 offset=2 + (local.get $8) + (i32.shr_u + (local.get $9) + (i32.const 16) + ) + ) + ) + (block + (local.set $10 + (local.get $6) + ) + (local.set $11 + (i32.wrap_i64 + (i64.shr_u + (local.get $7) + (i64.const 32) + ) + ) + ) + (i32.store16 offset=4 + (local.get $10) + (local.get $11) + ) + (i32.store16 offset=6 + (local.get $10) + (i32.shr_u + (local.get $11) + (i32.const 16) + ) + ) + ) + ) + (block + (local.set $12 + (i64.const 20) + ) + (local.set $13 + (i64.const 300) + ) + (i32.store + (local.get $12) + (i32.wrap_i64 + (local.get $13) + ) + ) + (i32.store offset=4 + (local.get $12) + (i32.wrap_i64 + (i64.shr_u + (local.get $13) + (i64.const 32) + ) + ) + ) + ) + (block + (local.set $14 + (i64.const 24) + ) + (local.set $15 + (i64.const 400) + ) + (block + (local.set $16 + (local.get $14) + ) + (local.set $17 + (i32.wrap_i64 + (local.get $15) + ) + ) + (i32.store8 offset=3 + (local.get $16) + (local.get $17) + ) + (i32.store8 offset=4 + (local.get $16) + (i32.shr_u + (local.get $17) + (i32.const 8) + ) + ) + (i32.store8 offset=5 + (local.get $16) + (i32.shr_u + (local.get $17) + (i32.const 16) + ) + ) + (i32.store8 offset=6 + (local.get $16) + (i32.shr_u + (local.get $17) + (i32.const 24) + ) + ) + ) + (block + (local.set $18 + (local.get $14) + ) + (local.set $19 + (i32.wrap_i64 + (i64.shr_u + (local.get $15) + (i64.const 32) + ) + ) + ) + (i32.store8 offset=7 + (local.get $18) + (local.get $19) + ) + (i32.store8 offset=8 + (local.get $18) + (i32.shr_u + (local.get $19) + (i32.const 8) + ) + ) + (i32.store8 offset=9 + (local.get $18) + (i32.shr_u + (local.get $19) + (i32.const 16) + ) + ) + (i32.store8 offset=10 + (local.get $18) + (i32.shr_u + (local.get $19) + (i32.const 24) + ) + ) + ) + ) + (block + (local.set $20 + (i64.const 20) + ) + (local.set $21 + (i32.wrap_i64 + (i64.const 600) + ) + ) + (i32.store8 + (local.get $20) + (local.get $21) + ) + (i32.store8 offset=1 + (local.get $20) + (i32.shr_u + (local.get $21) + (i32.const 8) + ) + ) + ) + (block + (local.set $22 + (i64.const 20) + ) + (local.set $23 + (i32.wrap_i64 + (i64.const 700) + ) + ) + (i32.store8 + (local.get $22) + (local.get $23) + ) + (i32.store8 offset=1 + (local.get $22) + (i32.shr_u + (local.get $23) + (i32.const 8) + ) + ) + (i32.store8 offset=2 + (local.get $22) + (i32.shr_u + (local.get $23) + (i32.const 16) + ) + ) + (i32.store8 offset=3 + (local.get $22) + (i32.shr_u + (local.get $23) + (i32.const 24) + ) + ) + ) + ) + (func $f32-store + (local $0 i64) + (local $1 i32) + (local $2 i64) + (local $3 i32) + (local $4 i64) + (local $5 i32) + (block + (local.set $0 + (i64.const 12) + ) + (local.set $1 + (i32.reinterpret_f32 + (f32.const 100) + ) + ) + (i32.store8 + (local.get $0) + (local.get $1) + ) + (i32.store8 offset=1 + (local.get $0) + (i32.shr_u + (local.get $1) + (i32.const 8) + ) + ) + (i32.store8 offset=2 + (local.get $0) + (i32.shr_u + (local.get $1) + (i32.const 16) + ) + ) + (i32.store8 offset=3 + (local.get $0) + (i32.shr_u + (local.get $1) + (i32.const 24) + ) + ) + ) + (block + (local.set $2 + (i64.const 16) + ) + (local.set $3 + (i32.reinterpret_f32 + (f32.const 200) + ) + ) + (i32.store16 + (local.get $2) + (local.get $3) + ) + (i32.store16 offset=2 + (local.get $2) + (i32.shr_u + (local.get $3) + (i32.const 16) + ) + ) + ) + (block + (local.set $4 + (i64.const 24) + ) + (local.set $5 + (i32.reinterpret_f32 + (f32.const 400) + ) + ) + (i32.store8 offset=3 + (local.get $4) + (local.get $5) + ) + (i32.store8 offset=4 + (local.get $4) + (i32.shr_u + (local.get $5) + (i32.const 8) + ) + ) + (i32.store8 offset=5 + (local.get $4) + (i32.shr_u + (local.get $5) + (i32.const 16) + ) + ) + (i32.store8 offset=6 + (local.get $4) + (i32.shr_u + (local.get $5) + (i32.const 24) + ) + ) + ) + ) + (func $f64-store + (local $0 i64) + (local $1 i64) + (local $2 i64) + (local $3 i32) + (local $4 i64) + (local $5 i32) + (local $6 i64) + (local $7 i64) + (local $8 i64) + (local $9 i32) + (local $10 i64) + (local $11 i32) + (local $12 i64) + (local $13 i64) + (local $14 i64) + (local $15 i64) + (local $16 i64) + (local $17 i32) + (local $18 i64) + (local $19 i32) + (block + (local.set $0 + (i64.const 12) + ) + (local.set $1 + (i64.reinterpret_f64 + (f64.const 100) + ) + ) + (block + (local.set $2 + (local.get $0) + ) + (local.set $3 + (i32.wrap_i64 + (local.get $1) + ) + ) + (i32.store8 + (local.get $2) + (local.get $3) + ) + (i32.store8 offset=1 + (local.get $2) + (i32.shr_u + (local.get $3) + (i32.const 8) + ) + ) + (i32.store8 offset=2 + (local.get $2) + (i32.shr_u + (local.get $3) + (i32.const 16) + ) + ) + (i32.store8 offset=3 + (local.get $2) + (i32.shr_u + (local.get $3) + (i32.const 24) + ) + ) + ) + (block + (local.set $4 + (local.get $0) + ) + (local.set $5 + (i32.wrap_i64 + (i64.shr_u + (local.get $1) + (i64.const 32) + ) + ) + ) + (i32.store8 offset=4 + (local.get $4) + (local.get $5) + ) + (i32.store8 offset=5 + (local.get $4) + (i32.shr_u + (local.get $5) + (i32.const 8) + ) + ) + (i32.store8 offset=6 + (local.get $4) + (i32.shr_u + (local.get $5) + (i32.const 16) + ) + ) + (i32.store8 offset=7 + (local.get $4) + (i32.shr_u + (local.get $5) + (i32.const 24) + ) + ) + ) + ) + (block + (local.set $6 + (i64.const 16) + ) + (local.set $7 + (i64.reinterpret_f64 + (f64.const 200) + ) + ) + (block + (local.set $8 + (local.get $6) + ) + (local.set $9 + (i32.wrap_i64 + (local.get $7) + ) + ) + (i32.store16 + (local.get $8) + (local.get $9) + ) + (i32.store16 offset=2 + (local.get $8) + (i32.shr_u + (local.get $9) + (i32.const 16) + ) + ) + ) + (block + (local.set $10 + (local.get $6) + ) + (local.set $11 + (i32.wrap_i64 + (i64.shr_u + (local.get $7) + (i64.const 32) + ) + ) + ) + (i32.store16 offset=4 + (local.get $10) + (local.get $11) + ) + (i32.store16 offset=6 + (local.get $10) + (i32.shr_u + (local.get $11) + (i32.const 16) + ) + ) + ) + ) + (block + (local.set $12 + (i64.const 20) + ) + (local.set $13 + (i64.reinterpret_f64 + (f64.const 300) + ) + ) + (i32.store + (local.get $12) + (i32.wrap_i64 + (local.get $13) + ) + ) + (i32.store offset=4 + (local.get $12) + (i32.wrap_i64 + (i64.shr_u + (local.get $13) + (i64.const 32) + ) + ) + ) + ) + (block + (local.set $14 + (i64.const 24) + ) + (local.set $15 + (i64.reinterpret_f64 + (f64.const 400) + ) + ) + (block + (local.set $16 + (local.get $14) + ) + (local.set $17 + (i32.wrap_i64 + (local.get $15) + ) + ) + (i32.store8 offset=3 + (local.get $16) + (local.get $17) + ) + (i32.store8 offset=4 + (local.get $16) + (i32.shr_u + (local.get $17) + (i32.const 8) + ) + ) + (i32.store8 offset=5 + (local.get $16) + (i32.shr_u + (local.get $17) + (i32.const 16) + ) + ) + (i32.store8 offset=6 + (local.get $16) + (i32.shr_u + (local.get $17) + (i32.const 24) + ) + ) + ) + (block + (local.set $18 + (local.get $14) + ) + (local.set $19 + (i32.wrap_i64 + (i64.shr_u + (local.get $15) + (i64.const 32) + ) + ) + ) + (i32.store8 offset=7 + (local.get $18) + (local.get $19) + ) + (i32.store8 offset=8 + (local.get $18) + (i32.shr_u + (local.get $19) + (i32.const 8) + ) + ) + (i32.store8 offset=9 + (local.get $18) + (i32.shr_u + (local.get $19) + (i32.const 16) + ) + ) + (i32.store8 offset=10 + (local.get $18) + (i32.shr_u + (local.get $19) + (i32.const 24) + ) + ) + ) + ) + ) +) diff -Nru binaryen-91/test/passes/alignment-lowering64.wast binaryen-99/test/passes/alignment-lowering64.wast --- binaryen-91/test/passes/alignment-lowering64.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/alignment-lowering64.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,103 @@ +(module + (memory $0 i64 1 1) + (func $func_4 + (drop (i32.load (i64.const 4))) + (drop (i32.load align=1 (i64.const 4))) + (drop (i32.load align=2 (i64.const 4))) + (drop (i32.load align=4 (i64.const 4))) + (drop (i32.load offset=100 (i64.const 4))) + (drop (i32.load offset=100 align=1 (i64.const 4))) + (drop (i32.load offset=100 align=2 (i64.const 4))) + (drop (i32.load offset=100 align=4 (i64.const 4))) + (drop (i32.load offset=100 align=1 (unreachable))) + (i32.store (i64.const 4) (i32.const 8)) + (i32.store align=1 (i64.const 4) (i32.const 8)) + (i32.store align=2 (i64.const 4) (i32.const 8)) + (i32.store align=4 (i64.const 4) (i32.const 8)) + (i32.store offset=100 (i64.const 4) (i32.const 8)) + (i32.store offset=100 align=1 (i64.const 4) (i32.const 8)) + (i32.store offset=100 align=2 (i64.const 4) (i32.const 8)) + (i32.store offset=100 align=4 (i64.const 4) (i32.const 8)) + (i32.store offset=100 align=1 (unreachable) (i32.const 8)) + (i32.store offset=100 align=1 (i64.const 4) (unreachable)) + ) + (func $func_2 + (drop (i32.load16_u (i64.const 4))) + (drop (i32.load16_u align=1 (i64.const 4))) + (drop (i32.load16_u align=2 (i64.const 4))) + (drop (i32.load16_u offset=100 (i64.const 4))) + (drop (i32.load16_u offset=100 align=1 (i64.const 4))) + (drop (i32.load16_u offset=100 align=2 (i64.const 4))) + (drop (i32.load16_u offset=100 align=1 (unreachable))) + (i32.store16 (i64.const 4) (i32.const 8)) + (i32.store16 align=1 (i64.const 4) (i32.const 8)) + (i32.store16 align=2 (i64.const 4) (i32.const 8)) + (i32.store16 offset=100 (i64.const 4) (i32.const 8)) + (i32.store16 offset=100 align=1 (i64.const 4) (i32.const 8)) + (i32.store16 offset=100 align=2 (i64.const 4) (i32.const 8)) + (i32.store16 offset=100 align=1 (unreachable) (i32.const 8)) + (i32.store16 offset=100 align=1 (i64.const 4) (unreachable)) + ) + (func $func_1 + (drop (i32.load8_u (i64.const 4))) + (drop (i32.load8_u align=1 (i64.const 4))) + (drop (i32.load8_u offset=100 (i64.const 4))) + (drop (i32.load8_u offset=100 align=1 (i64.const 4))) + (drop (i32.load8_u offset=100 align=1 (unreachable))) + (i32.store8 (i64.const 4) (i32.const 8)) + (i32.store8 align=1 (i64.const 4) (i32.const 8)) + (i32.store8 offset=100 (i64.const 4) (i32.const 8)) + (i32.store8 offset=100 align=1 (i64.const 4) (i32.const 8)) + (i32.store8 offset=100 align=1 (unreachable) (i32.const 8)) + (i32.store8 offset=100 align=1 (i64.const 4) (unreachable)) + ) + (func $func_signed + (drop (i32.load16_s (i64.const 4))) + (drop (i32.load16_s align=1 (i64.const 4))) + (drop (i32.load16_s align=2 (i64.const 4))) + (drop (i32.load16_s offset=100 (i64.const 4))) + (drop (i32.load16_s offset=100 align=1 (i64.const 4))) + (drop (i32.load16_s offset=100 align=2 (i64.const 4))) + (drop (i32.load16_s offset=100 align=1 (unreachable))) + ) + (func $i64-load + (drop (i64.load align=1 (i64.const 12))) + (drop (i64.load align=2 (i64.const 16))) + (drop (i64.load align=4 (i64.const 20))) + (drop (i64.load align=1 offset=3 (i64.const 20))) + (drop (i64.load16_s align=1 (i64.const 28))) + (drop (i64.load32_s align=1 (i64.const 32))) + (drop (i64.load16_u align=1 (i64.const 40))) + (drop (i64.load32_u align=1 (i64.const 44))) + ) + (func $f32-load + (drop (f32.load align=1 (i64.const 12))) + (drop (f32.load align=2 (i64.const 16))) + (drop (f32.load align=1 offset=3 (i64.const 20))) + ) + (func $f64-load + (drop (f64.load align=1 (i64.const 12))) + (drop (f64.load align=2 (i64.const 16))) + (drop (f64.load align=4 (i64.const 20))) + (drop (f64.load align=1 offset=3 (i64.const 20))) + ) + (func $i64-store + (i64.store align=1 (i64.const 12) (i64.const 100)) + (i64.store align=2 (i64.const 16) (i64.const 200)) + (i64.store align=4 (i64.const 20) (i64.const 300)) + (i64.store align=1 offset=3 (i64.const 24) (i64.const 400)) + (i64.store16 align=1 (i64.const 20) (i64.const 600)) + (i64.store32 align=1 (i64.const 20) (i64.const 700)) + ) + (func $f32-store + (f32.store align=1 (i64.const 12) (f32.const 100)) + (f32.store align=2 (i64.const 16) (f32.const 200)) + (f32.store align=1 offset=3 (i64.const 24) (f32.const 400)) + ) + (func $f64-store + (f64.store align=1 (i64.const 12) (f64.const 100)) + (f64.store align=2 (i64.const 16) (f64.const 200)) + (f64.store align=4 (i64.const 20) (f64.const 300)) + (f64.store align=1 offset=3 (i64.const 24) (f64.const 400)) + ) +) diff -Nru binaryen-91/test/passes/alignment-lowering.txt binaryen-99/test/passes/alignment-lowering.txt --- binaryen-91/test/passes/alignment-lowering.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/alignment-lowering.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (memory $0 1 1) - (func $func_4 (; 0 ;) + (func $func_4 (local $0 i32) (local $1 i32) (local $2 i32) @@ -278,7 +278,7 @@ ) ) ) - (func $func_2 (; 1 ;) + (func $func_2 (local $0 i32) (local $1 i32) (local $2 i32) @@ -415,7 +415,7 @@ ) ) ) - (func $func_1 (; 2 ;) + (func $func_1 (drop (i32.load8_u (i32.const 4) @@ -437,9 +437,7 @@ ) ) (drop - (i32.load offset=100 - (unreachable) - ) + (unreachable) ) (i32.store8 (i32.const 4) @@ -457,16 +455,24 @@ (i32.const 4) (i32.const 8) ) - (i32.store8 offset=100 - (unreachable) - (i32.const 8) + (block + (drop + (unreachable) + ) + (drop + (i32.const 8) + ) ) - (i32.store8 offset=100 - (i32.const 4) - (unreachable) + (block + (drop + (i32.const 4) + ) + (drop + (unreachable) + ) ) ) - (func $func_signed (; 3 ;) + (func $func_signed (local $0 i32) (local $1 i32) (drop @@ -541,4 +547,1402 @@ (unreachable) ) ) + (func $i64-load + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (drop + (block (result i64) + (local.set $0 + (i32.const 12) + ) + (i64.or + (i64.extend_i32_u + (block (result i32) + (local.set $1 + (local.get $0) + ) + (i32.or + (i32.or + (i32.load8_u + (local.get $1) + ) + (i32.shl + (i32.load8_u offset=1 + (local.get $1) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=2 + (local.get $1) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=3 + (local.get $1) + ) + (i32.const 24) + ) + ) + ) + ) + ) + (i64.shl + (i64.extend_i32_u + (block (result i32) + (local.set $2 + (local.get $0) + ) + (i32.or + (i32.or + (i32.load8_u offset=4 + (local.get $2) + ) + (i32.shl + (i32.load8_u offset=5 + (local.get $2) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=6 + (local.get $2) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=7 + (local.get $2) + ) + (i32.const 24) + ) + ) + ) + ) + ) + (i64.const 32) + ) + ) + ) + ) + (drop + (block (result i64) + (local.set $3 + (i32.const 16) + ) + (i64.or + (i64.extend_i32_u + (block (result i32) + (local.set $4 + (local.get $3) + ) + (i32.or + (i32.load16_u + (local.get $4) + ) + (i32.shl + (i32.load16_u offset=2 + (local.get $4) + ) + (i32.const 16) + ) + ) + ) + ) + (i64.shl + (i64.extend_i32_u + (block (result i32) + (local.set $5 + (local.get $3) + ) + (i32.or + (i32.load16_u offset=4 + (local.get $5) + ) + (i32.shl + (i32.load16_u offset=6 + (local.get $5) + ) + (i32.const 16) + ) + ) + ) + ) + (i64.const 32) + ) + ) + ) + ) + (drop + (block (result i64) + (local.set $6 + (i32.const 20) + ) + (i64.or + (i64.extend_i32_u + (i32.load + (local.get $6) + ) + ) + (i64.shl + (i64.extend_i32_u + (i32.load offset=4 + (local.get $6) + ) + ) + (i64.const 32) + ) + ) + ) + ) + (drop + (block (result i64) + (local.set $7 + (i32.const 20) + ) + (i64.or + (i64.extend_i32_u + (block (result i32) + (local.set $8 + (local.get $7) + ) + (i32.or + (i32.or + (i32.load8_u offset=3 + (local.get $8) + ) + (i32.shl + (i32.load8_u offset=4 + (local.get $8) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=5 + (local.get $8) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=6 + (local.get $8) + ) + (i32.const 24) + ) + ) + ) + ) + ) + (i64.shl + (i64.extend_i32_u + (block (result i32) + (local.set $9 + (local.get $7) + ) + (i32.or + (i32.or + (i32.load8_u offset=7 + (local.get $9) + ) + (i32.shl + (i32.load8_u offset=8 + (local.get $9) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=9 + (local.get $9) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=10 + (local.get $9) + ) + (i32.const 24) + ) + ) + ) + ) + ) + (i64.const 32) + ) + ) + ) + ) + (drop + (i64.extend_i32_s + (block (result i32) + (local.set $10 + (i32.const 28) + ) + (i32.shr_s + (i32.shl + (i32.or + (i32.load8_u + (local.get $10) + ) + (i32.shl + (i32.load8_u offset=1 + (local.get $10) + ) + (i32.const 8) + ) + ) + (i32.const 16) + ) + (i32.const 16) + ) + ) + ) + ) + (drop + (i64.extend_i32_s + (block (result i32) + (local.set $11 + (i32.const 32) + ) + (i32.or + (i32.or + (i32.load8_u + (local.get $11) + ) + (i32.shl + (i32.load8_u offset=1 + (local.get $11) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=2 + (local.get $11) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=3 + (local.get $11) + ) + (i32.const 24) + ) + ) + ) + ) + ) + ) + (drop + (i64.extend_i32_u + (block (result i32) + (local.set $12 + (i32.const 40) + ) + (i32.or + (i32.load8_u + (local.get $12) + ) + (i32.shl + (i32.load8_u offset=1 + (local.get $12) + ) + (i32.const 8) + ) + ) + ) + ) + ) + (drop + (i64.extend_i32_u + (block (result i32) + (local.set $13 + (i32.const 44) + ) + (i32.or + (i32.or + (i32.load8_u + (local.get $13) + ) + (i32.shl + (i32.load8_u offset=1 + (local.get $13) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=2 + (local.get $13) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=3 + (local.get $13) + ) + (i32.const 24) + ) + ) + ) + ) + ) + ) + ) + (func $f32-load + (local $0 i32) + (local $1 i32) + (local $2 i32) + (drop + (f32.reinterpret_i32 + (block (result i32) + (local.set $0 + (i32.const 12) + ) + (i32.or + (i32.or + (i32.load8_u + (local.get $0) + ) + (i32.shl + (i32.load8_u offset=1 + (local.get $0) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=2 + (local.get $0) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=3 + (local.get $0) + ) + (i32.const 24) + ) + ) + ) + ) + ) + ) + (drop + (f32.reinterpret_i32 + (block (result i32) + (local.set $1 + (i32.const 16) + ) + (i32.or + (i32.load16_u + (local.get $1) + ) + (i32.shl + (i32.load16_u offset=2 + (local.get $1) + ) + (i32.const 16) + ) + ) + ) + ) + ) + (drop + (f32.reinterpret_i32 + (block (result i32) + (local.set $2 + (i32.const 20) + ) + (i32.or + (i32.or + (i32.load8_u offset=3 + (local.get $2) + ) + (i32.shl + (i32.load8_u offset=4 + (local.get $2) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=5 + (local.get $2) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=6 + (local.get $2) + ) + (i32.const 24) + ) + ) + ) + ) + ) + ) + ) + (func $f64-load + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (drop + (f64.reinterpret_i64 + (block (result i64) + (local.set $0 + (i32.const 12) + ) + (i64.or + (i64.extend_i32_u + (block (result i32) + (local.set $1 + (local.get $0) + ) + (i32.or + (i32.or + (i32.load8_u + (local.get $1) + ) + (i32.shl + (i32.load8_u offset=1 + (local.get $1) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=2 + (local.get $1) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=3 + (local.get $1) + ) + (i32.const 24) + ) + ) + ) + ) + ) + (i64.shl + (i64.extend_i32_u + (block (result i32) + (local.set $2 + (local.get $0) + ) + (i32.or + (i32.or + (i32.load8_u offset=4 + (local.get $2) + ) + (i32.shl + (i32.load8_u offset=5 + (local.get $2) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=6 + (local.get $2) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=7 + (local.get $2) + ) + (i32.const 24) + ) + ) + ) + ) + ) + (i64.const 32) + ) + ) + ) + ) + ) + (drop + (f64.reinterpret_i64 + (block (result i64) + (local.set $3 + (i32.const 16) + ) + (i64.or + (i64.extend_i32_u + (block (result i32) + (local.set $4 + (local.get $3) + ) + (i32.or + (i32.load16_u + (local.get $4) + ) + (i32.shl + (i32.load16_u offset=2 + (local.get $4) + ) + (i32.const 16) + ) + ) + ) + ) + (i64.shl + (i64.extend_i32_u + (block (result i32) + (local.set $5 + (local.get $3) + ) + (i32.or + (i32.load16_u offset=4 + (local.get $5) + ) + (i32.shl + (i32.load16_u offset=6 + (local.get $5) + ) + (i32.const 16) + ) + ) + ) + ) + (i64.const 32) + ) + ) + ) + ) + ) + (drop + (f64.reinterpret_i64 + (block (result i64) + (local.set $6 + (i32.const 20) + ) + (i64.or + (i64.extend_i32_u + (i32.load + (local.get $6) + ) + ) + (i64.shl + (i64.extend_i32_u + (i32.load offset=4 + (local.get $6) + ) + ) + (i64.const 32) + ) + ) + ) + ) + ) + (drop + (f64.reinterpret_i64 + (block (result i64) + (local.set $7 + (i32.const 20) + ) + (i64.or + (i64.extend_i32_u + (block (result i32) + (local.set $8 + (local.get $7) + ) + (i32.or + (i32.or + (i32.load8_u offset=3 + (local.get $8) + ) + (i32.shl + (i32.load8_u offset=4 + (local.get $8) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=5 + (local.get $8) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=6 + (local.get $8) + ) + (i32.const 24) + ) + ) + ) + ) + ) + (i64.shl + (i64.extend_i32_u + (block (result i32) + (local.set $9 + (local.get $7) + ) + (i32.or + (i32.or + (i32.load8_u offset=7 + (local.get $9) + ) + (i32.shl + (i32.load8_u offset=8 + (local.get $9) + ) + (i32.const 8) + ) + ) + (i32.or + (i32.shl + (i32.load8_u offset=9 + (local.get $9) + ) + (i32.const 16) + ) + (i32.shl + (i32.load8_u offset=10 + (local.get $9) + ) + (i32.const 24) + ) + ) + ) + ) + ) + (i64.const 32) + ) + ) + ) + ) + ) + ) + (func $i64-store + (local $0 i32) + (local $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i64) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i64) + (local $14 i32) + (local $15 i64) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + (local $23 i32) + (block + (local.set $0 + (i32.const 12) + ) + (local.set $1 + (i64.const 100) + ) + (block + (local.set $2 + (local.get $0) + ) + (local.set $3 + (i32.wrap_i64 + (local.get $1) + ) + ) + (i32.store8 + (local.get $2) + (local.get $3) + ) + (i32.store8 offset=1 + (local.get $2) + (i32.shr_u + (local.get $3) + (i32.const 8) + ) + ) + (i32.store8 offset=2 + (local.get $2) + (i32.shr_u + (local.get $3) + (i32.const 16) + ) + ) + (i32.store8 offset=3 + (local.get $2) + (i32.shr_u + (local.get $3) + (i32.const 24) + ) + ) + ) + (block + (local.set $4 + (local.get $0) + ) + (local.set $5 + (i32.wrap_i64 + (i64.shr_u + (local.get $1) + (i64.const 32) + ) + ) + ) + (i32.store8 offset=4 + (local.get $4) + (local.get $5) + ) + (i32.store8 offset=5 + (local.get $4) + (i32.shr_u + (local.get $5) + (i32.const 8) + ) + ) + (i32.store8 offset=6 + (local.get $4) + (i32.shr_u + (local.get $5) + (i32.const 16) + ) + ) + (i32.store8 offset=7 + (local.get $4) + (i32.shr_u + (local.get $5) + (i32.const 24) + ) + ) + ) + ) + (block + (local.set $6 + (i32.const 16) + ) + (local.set $7 + (i64.const 200) + ) + (block + (local.set $8 + (local.get $6) + ) + (local.set $9 + (i32.wrap_i64 + (local.get $7) + ) + ) + (i32.store16 + (local.get $8) + (local.get $9) + ) + (i32.store16 offset=2 + (local.get $8) + (i32.shr_u + (local.get $9) + (i32.const 16) + ) + ) + ) + (block + (local.set $10 + (local.get $6) + ) + (local.set $11 + (i32.wrap_i64 + (i64.shr_u + (local.get $7) + (i64.const 32) + ) + ) + ) + (i32.store16 offset=4 + (local.get $10) + (local.get $11) + ) + (i32.store16 offset=6 + (local.get $10) + (i32.shr_u + (local.get $11) + (i32.const 16) + ) + ) + ) + ) + (block + (local.set $12 + (i32.const 20) + ) + (local.set $13 + (i64.const 300) + ) + (i32.store + (local.get $12) + (i32.wrap_i64 + (local.get $13) + ) + ) + (i32.store offset=4 + (local.get $12) + (i32.wrap_i64 + (i64.shr_u + (local.get $13) + (i64.const 32) + ) + ) + ) + ) + (block + (local.set $14 + (i32.const 24) + ) + (local.set $15 + (i64.const 400) + ) + (block + (local.set $16 + (local.get $14) + ) + (local.set $17 + (i32.wrap_i64 + (local.get $15) + ) + ) + (i32.store8 offset=3 + (local.get $16) + (local.get $17) + ) + (i32.store8 offset=4 + (local.get $16) + (i32.shr_u + (local.get $17) + (i32.const 8) + ) + ) + (i32.store8 offset=5 + (local.get $16) + (i32.shr_u + (local.get $17) + (i32.const 16) + ) + ) + (i32.store8 offset=6 + (local.get $16) + (i32.shr_u + (local.get $17) + (i32.const 24) + ) + ) + ) + (block + (local.set $18 + (local.get $14) + ) + (local.set $19 + (i32.wrap_i64 + (i64.shr_u + (local.get $15) + (i64.const 32) + ) + ) + ) + (i32.store8 offset=7 + (local.get $18) + (local.get $19) + ) + (i32.store8 offset=8 + (local.get $18) + (i32.shr_u + (local.get $19) + (i32.const 8) + ) + ) + (i32.store8 offset=9 + (local.get $18) + (i32.shr_u + (local.get $19) + (i32.const 16) + ) + ) + (i32.store8 offset=10 + (local.get $18) + (i32.shr_u + (local.get $19) + (i32.const 24) + ) + ) + ) + ) + (block + (local.set $20 + (i32.const 20) + ) + (local.set $21 + (i32.wrap_i64 + (i64.const 600) + ) + ) + (i32.store8 + (local.get $20) + (local.get $21) + ) + (i32.store8 offset=1 + (local.get $20) + (i32.shr_u + (local.get $21) + (i32.const 8) + ) + ) + ) + (block + (local.set $22 + (i32.const 20) + ) + (local.set $23 + (i32.wrap_i64 + (i64.const 700) + ) + ) + (i32.store8 + (local.get $22) + (local.get $23) + ) + (i32.store8 offset=1 + (local.get $22) + (i32.shr_u + (local.get $23) + (i32.const 8) + ) + ) + (i32.store8 offset=2 + (local.get $22) + (i32.shr_u + (local.get $23) + (i32.const 16) + ) + ) + (i32.store8 offset=3 + (local.get $22) + (i32.shr_u + (local.get $23) + (i32.const 24) + ) + ) + ) + ) + (func $f32-store + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (block + (local.set $0 + (i32.const 12) + ) + (local.set $1 + (i32.reinterpret_f32 + (f32.const 100) + ) + ) + (i32.store8 + (local.get $0) + (local.get $1) + ) + (i32.store8 offset=1 + (local.get $0) + (i32.shr_u + (local.get $1) + (i32.const 8) + ) + ) + (i32.store8 offset=2 + (local.get $0) + (i32.shr_u + (local.get $1) + (i32.const 16) + ) + ) + (i32.store8 offset=3 + (local.get $0) + (i32.shr_u + (local.get $1) + (i32.const 24) + ) + ) + ) + (block + (local.set $2 + (i32.const 16) + ) + (local.set $3 + (i32.reinterpret_f32 + (f32.const 200) + ) + ) + (i32.store16 + (local.get $2) + (local.get $3) + ) + (i32.store16 offset=2 + (local.get $2) + (i32.shr_u + (local.get $3) + (i32.const 16) + ) + ) + ) + (block + (local.set $4 + (i32.const 24) + ) + (local.set $5 + (i32.reinterpret_f32 + (f32.const 400) + ) + ) + (i32.store8 offset=3 + (local.get $4) + (local.get $5) + ) + (i32.store8 offset=4 + (local.get $4) + (i32.shr_u + (local.get $5) + (i32.const 8) + ) + ) + (i32.store8 offset=5 + (local.get $4) + (i32.shr_u + (local.get $5) + (i32.const 16) + ) + ) + (i32.store8 offset=6 + (local.get $4) + (i32.shr_u + (local.get $5) + (i32.const 24) + ) + ) + ) + ) + (func $f64-store + (local $0 i32) + (local $1 i64) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i64) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i64) + (local $14 i32) + (local $15 i64) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (block + (local.set $0 + (i32.const 12) + ) + (local.set $1 + (i64.reinterpret_f64 + (f64.const 100) + ) + ) + (block + (local.set $2 + (local.get $0) + ) + (local.set $3 + (i32.wrap_i64 + (local.get $1) + ) + ) + (i32.store8 + (local.get $2) + (local.get $3) + ) + (i32.store8 offset=1 + (local.get $2) + (i32.shr_u + (local.get $3) + (i32.const 8) + ) + ) + (i32.store8 offset=2 + (local.get $2) + (i32.shr_u + (local.get $3) + (i32.const 16) + ) + ) + (i32.store8 offset=3 + (local.get $2) + (i32.shr_u + (local.get $3) + (i32.const 24) + ) + ) + ) + (block + (local.set $4 + (local.get $0) + ) + (local.set $5 + (i32.wrap_i64 + (i64.shr_u + (local.get $1) + (i64.const 32) + ) + ) + ) + (i32.store8 offset=4 + (local.get $4) + (local.get $5) + ) + (i32.store8 offset=5 + (local.get $4) + (i32.shr_u + (local.get $5) + (i32.const 8) + ) + ) + (i32.store8 offset=6 + (local.get $4) + (i32.shr_u + (local.get $5) + (i32.const 16) + ) + ) + (i32.store8 offset=7 + (local.get $4) + (i32.shr_u + (local.get $5) + (i32.const 24) + ) + ) + ) + ) + (block + (local.set $6 + (i32.const 16) + ) + (local.set $7 + (i64.reinterpret_f64 + (f64.const 200) + ) + ) + (block + (local.set $8 + (local.get $6) + ) + (local.set $9 + (i32.wrap_i64 + (local.get $7) + ) + ) + (i32.store16 + (local.get $8) + (local.get $9) + ) + (i32.store16 offset=2 + (local.get $8) + (i32.shr_u + (local.get $9) + (i32.const 16) + ) + ) + ) + (block + (local.set $10 + (local.get $6) + ) + (local.set $11 + (i32.wrap_i64 + (i64.shr_u + (local.get $7) + (i64.const 32) + ) + ) + ) + (i32.store16 offset=4 + (local.get $10) + (local.get $11) + ) + (i32.store16 offset=6 + (local.get $10) + (i32.shr_u + (local.get $11) + (i32.const 16) + ) + ) + ) + ) + (block + (local.set $12 + (i32.const 20) + ) + (local.set $13 + (i64.reinterpret_f64 + (f64.const 300) + ) + ) + (i32.store + (local.get $12) + (i32.wrap_i64 + (local.get $13) + ) + ) + (i32.store offset=4 + (local.get $12) + (i32.wrap_i64 + (i64.shr_u + (local.get $13) + (i64.const 32) + ) + ) + ) + ) + (block + (local.set $14 + (i32.const 24) + ) + (local.set $15 + (i64.reinterpret_f64 + (f64.const 400) + ) + ) + (block + (local.set $16 + (local.get $14) + ) + (local.set $17 + (i32.wrap_i64 + (local.get $15) + ) + ) + (i32.store8 offset=3 + (local.get $16) + (local.get $17) + ) + (i32.store8 offset=4 + (local.get $16) + (i32.shr_u + (local.get $17) + (i32.const 8) + ) + ) + (i32.store8 offset=5 + (local.get $16) + (i32.shr_u + (local.get $17) + (i32.const 16) + ) + ) + (i32.store8 offset=6 + (local.get $16) + (i32.shr_u + (local.get $17) + (i32.const 24) + ) + ) + ) + (block + (local.set $18 + (local.get $14) + ) + (local.set $19 + (i32.wrap_i64 + (i64.shr_u + (local.get $15) + (i64.const 32) + ) + ) + ) + (i32.store8 offset=7 + (local.get $18) + (local.get $19) + ) + (i32.store8 offset=8 + (local.get $18) + (i32.shr_u + (local.get $19) + (i32.const 8) + ) + ) + (i32.store8 offset=9 + (local.get $18) + (i32.shr_u + (local.get $19) + (i32.const 16) + ) + ) + (i32.store8 offset=10 + (local.get $18) + (i32.shr_u + (local.get $19) + (i32.const 24) + ) + ) + ) + ) + ) ) diff -Nru binaryen-91/test/passes/alignment-lowering.wast binaryen-99/test/passes/alignment-lowering.wast --- binaryen-91/test/passes/alignment-lowering.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/alignment-lowering.wast 2021-01-07 20:01:06.000000000 +0000 @@ -60,4 +60,44 @@ (drop (i32.load16_s offset=100 align=2 (i32.const 4))) (drop (i32.load16_s offset=100 align=1 (unreachable))) ) + (func $i64-load + (drop (i64.load align=1 (i32.const 12))) + (drop (i64.load align=2 (i32.const 16))) + (drop (i64.load align=4 (i32.const 20))) + (drop (i64.load align=1 offset=3 (i32.const 20))) + (drop (i64.load16_s align=1 (i32.const 28))) + (drop (i64.load32_s align=1 (i32.const 32))) + (drop (i64.load16_u align=1 (i32.const 40))) + (drop (i64.load32_u align=1 (i32.const 44))) + ) + (func $f32-load + (drop (f32.load align=1 (i32.const 12))) + (drop (f32.load align=2 (i32.const 16))) + (drop (f32.load align=1 offset=3 (i32.const 20))) + ) + (func $f64-load + (drop (f64.load align=1 (i32.const 12))) + (drop (f64.load align=2 (i32.const 16))) + (drop (f64.load align=4 (i32.const 20))) + (drop (f64.load align=1 offset=3 (i32.const 20))) + ) + (func $i64-store + (i64.store align=1 (i32.const 12) (i64.const 100)) + (i64.store align=2 (i32.const 16) (i64.const 200)) + (i64.store align=4 (i32.const 20) (i64.const 300)) + (i64.store align=1 offset=3 (i32.const 24) (i64.const 400)) + (i64.store16 align=1 (i32.const 20) (i64.const 600)) + (i64.store32 align=1 (i32.const 20) (i64.const 700)) + ) + (func $f32-store + (f32.store align=1 (i32.const 12) (f32.const 100)) + (f32.store align=2 (i32.const 16) (f32.const 200)) + (f32.store align=1 offset=3 (i32.const 24) (f32.const 400)) + ) + (func $f64-store + (f64.store align=1 (i32.const 12) (f64.const 100)) + (f64.store align=2 (i32.const 16) (f64.const 200)) + (f64.store align=4 (i32.const 20) (f64.const 300)) + (f64.store align=1 offset=3 (i32.const 24) (f64.const 400)) + ) ) diff -Nru binaryen-91/test/passes/asyncify_enable-multivalue.txt binaryen-99/test/passes/asyncify_enable-multivalue.txt --- binaryen-91/test/passes/asyncify_enable-multivalue.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/asyncify_enable-multivalue.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,2592 @@ +(module + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) + (memory $0 1 2) + (global $sleeping (mut i32) (i32.const 0)) + (global $__asyncify_state (mut i32) (i32.const 0)) + (global $__asyncify_data (mut i32) (i32.const 0)) + (export "asyncify_start_unwind" (func $asyncify_start_unwind)) + (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) + (export "asyncify_start_rewind" (func $asyncify_start_rewind)) + (export "asyncify_stop_rewind" (func $asyncify_stop_rewind)) + (export "asyncify_get_state" (func $asyncify_get_state)) + (func $do_sleep + (local $0 i32) + (local $1 i32) + (local.set $0 + (global.get $sleeping) + ) + (local.set $1 + (i32.eqz + (local.get $0) + ) + ) + (if + (local.get $1) + (block $block + (global.set $sleeping + (i32.const 1) + ) + (call $asyncify_start_unwind + (i32.const 4) + ) + ) + (block $block0 + (global.set $sleeping + (i32.const 0) + ) + (call $asyncify_stop_rewind) + ) + ) + ) + (func $work + (local $0 i32) + (local $1 i32) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (nop) + ) + (local.set $0 + (block $__asyncify_unwind (result i32) + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $1 + (i32.load + (i32.load + (global.get $__asyncify_data) + ) + ) + ) + ) + ) + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (call $stuff) + ) + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $1) + (i32.const 0) + ) + ) + (block + (call $do_sleep) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + ) + ) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (call $stuff) + ) + ) + ) + (return) + ) + ) + ) + (block + (i32.store + (i32.load + (global.get $__asyncify_data) + ) + (local.get $0) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (nop) + ) + (func $stuff + (nop) + ) + (func $first_event + (local $0 i32) + (local $1 i32) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (nop) + ) + (local.set $0 + (block $__asyncify_unwind (result i32) + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $1 + (i32.load + (i32.load + (global.get $__asyncify_data) + ) + ) + ) + ) + ) + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $1) + (i32.const 0) + ) + ) + (block + (call $work) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + ) + ) + ) + ) + (return) + ) + ) + ) + (block + (i32.store + (i32.load + (global.get $__asyncify_data) + ) + (local.get $0) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (nop) + ) + (func $second_event + (call $asyncify_stop_unwind) + (call $asyncify_start_rewind + (i32.const 4) + ) + (call $work) + ) + (func $never_sleep + (call $stuff) + (call $stuff) + (call $stuff) + ) + (func $asyncify_start_unwind (param $0 i32) + (global.set $__asyncify_state + (i32.const 1) + ) + (global.set $__asyncify_data + (local.get $0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_stop_unwind + (global.set $__asyncify_state + (i32.const 0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_start_rewind (param $0 i32) + (global.set $__asyncify_state + (i32.const 2) + ) + (global.set $__asyncify_data + (local.get $0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_stop_rewind + (global.set $__asyncify_state + (i32.const 0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_get_state (result i32) + (global.get $__asyncify_state) + ) +) +(module + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_i32_i64 (func (result i32 i64))) + (import "env" "import" (func $import)) + (import "env" "import2" (func $import2 (result i32))) + (import "env" "import3" (func $import3 (param i32))) + (import "env" "import-mv" (func $import-mv (result i32 i64))) + (memory $0 1 2) + (global $__asyncify_state (mut i32) (i32.const 0)) + (global $__asyncify_data (mut i32) (i32.const 0)) + (export "asyncify_start_unwind" (func $asyncify_start_unwind)) + (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) + (export "asyncify_start_rewind" (func $asyncify_start_rewind)) + (export "asyncify_stop_rewind" (func $asyncify_stop_rewind)) + (export "asyncify_get_state" (func $asyncify_get_state)) + (func $calls-import + (local $0 i32) + (local $1 i32) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (nop) + ) + (local.set $0 + (block $__asyncify_unwind (result i32) + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $1 + (i32.load + (i32.load + (global.get $__asyncify_data) + ) + ) + ) + ) + ) + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $1) + (i32.const 0) + ) + ) + (block + (call $import) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + ) + ) + ) + ) + (return) + ) + ) + ) + (block + (i32.store + (i32.load + (global.get $__asyncify_data) + ) + (local.get $0) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (nop) + ) + (func $calls-import2 (result i32) + (local $temp i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $8 + (i32.load + (global.get $__asyncify_data) + ) + ) + (local.set $1 + (i32.load + (local.get $8) + ) + ) + ) + ) + (local.set $5 + (block $__asyncify_unwind (result i32) + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $6 + (i32.load + (i32.load + (global.get $__asyncify_data) + ) + ) + ) + ) + ) + (block + (block + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $6) + (i32.const 0) + ) + ) + (block + (local.set $7 + (call $import2) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + (local.set $1 + (local.get $7) + ) + ) + ) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (block + (local.set $temp + (local.get $1) + ) + (local.set $2 + (local.get $temp) + ) + (return + (local.get $2) + ) + ) + ) + (nop) + (nop) + ) + ) + (unreachable) + ) + (unreachable) + ) + ) + ) + (block + (i32.store + (i32.load + (global.get $__asyncify_data) + ) + (local.get $5) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (block + (local.set $9 + (i32.load + (global.get $__asyncify_data) + ) + ) + (i32.store + (local.get $9) + (local.get $1) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (i32.const 0) + ) + (func $calls-import2-drop + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $4 + (i32.load + (global.get $__asyncify_data) + ) + ) + (local.set $0 + (i32.load + (local.get $4) + ) + ) + ) + ) + (local.set $1 + (block $__asyncify_unwind (result i32) + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $2 + (i32.load + (i32.load + (global.get $__asyncify_data) + ) + ) + ) + ) + ) + (block + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $2) + (i32.const 0) + ) + ) + (block + (local.set $3 + (call $import2) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + (local.set $0 + (local.get $3) + ) + ) + ) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (drop + (local.get $0) + ) + ) + ) + ) + (return) + ) + ) + ) + (block + (i32.store + (i32.load + (global.get $__asyncify_data) + ) + (local.get $1) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (block + (local.set $5 + (i32.load + (global.get $__asyncify_data) + ) + ) + (i32.store + (local.get $5) + (local.get $0) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + ) + (func $calls-nothing + (local $0 i32) + (local.set $0 + (i32.eqz + (i32.const 17) + ) + ) + (drop + (local.get $0) + ) + ) + (func $many-locals (param $x i32) (result i32) + (local $y i32) + (local $z (f32 i64)) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $13 + (i32.load + (global.get $__asyncify_data) + ) + ) + (local.set $y + (i32.load + (local.get $13) + ) + ) + ) + ) + (local.set $11 + (block $__asyncify_unwind (result i32) + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $12 + (i32.load + (i32.load + (global.get $__asyncify_data) + ) + ) + ) + ) + ) + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (loop $l + (local.set $3 + (local.get $y) + ) + (local.set $4 + (i32.add + (local.get $3) + (i32.const 1) + ) + ) + (local.set $x + (local.get $4) + ) + (local.set $5 + (local.get $x) + ) + (local.set $6 + (i32.div_s + (local.get $5) + (i32.const 3) + ) + ) + (local.set $y + (local.get $6) + ) + (local.set $7 + (local.get $y) + ) + (br_if $l + (local.get $7) + ) + ) + ) + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $12) + (i32.const 0) + ) + ) + (block + (call $import) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + ) + ) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (block + (local.set $8 + (local.get $y) + ) + (return + (local.get $8) + ) + ) + ) + (nop) + ) + ) + (unreachable) + ) + (unreachable) + ) + ) + ) + (block + (i32.store + (i32.load + (global.get $__asyncify_data) + ) + (local.get $11) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (block + (local.set $14 + (i32.load + (global.get $__asyncify_data) + ) + ) + (i32.store + (local.get $14) + (local.get $y) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (i32.const 0) + ) + (func $calls-import2-if (param $x i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (nop) + ) + (local.set $2 + (block $__asyncify_unwind (result i32) + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $3 + (i32.load + (i32.load + (global.get $__asyncify_data) + ) + ) + ) + ) + ) + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (local.set $1 + (local.get $x) + ) + ) + (if + (i32.or + (local.get $1) + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + ) + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $3) + (i32.const 0) + ) + ) + (block + (call $import) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + ) + ) + ) + ) + ) + ) + (return) + ) + ) + ) + (block + (i32.store + (i32.load + (global.get $__asyncify_data) + ) + (local.get $2) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (nop) + ) + (func $calls-import2-if-else (param $x i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $5 + (i32.load + (global.get $__asyncify_data) + ) + ) + (local.set $2 + (i32.load + (local.get $5) + ) + ) + ) + ) + (local.set $3 + (block $__asyncify_unwind (result i32) + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $4 + (i32.load + (i32.load + (global.get $__asyncify_data) + ) + ) + ) + ) + ) + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (local.set $1 + (local.get $x) + ) + ) + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (local.set $2 + (local.get $1) + ) + ) + (if + (i32.or + (local.get $2) + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + ) + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $4) + (i32.const 0) + ) + ) + (block + (call $import3 + (i32.const 1) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + ) + ) + ) + ) + (if + (i32.or + (i32.eqz + (local.get $2) + ) + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + ) + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $4) + (i32.const 1) + ) + ) + (block + (call $import3 + (i32.const 2) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 1) + ) + ) + ) + ) + ) + ) + ) + ) + (return) + ) + ) + ) + (block + (i32.store + (i32.load + (global.get $__asyncify_data) + ) + (local.get $3) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (block + (local.set $6 + (i32.load + (global.get $__asyncify_data) + ) + ) + (i32.store + (local.get $6) + (local.get $2) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + ) + (func $calls-import2-if-else-oneside (param $x i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (nop) + ) + (local.set $5 + (block $__asyncify_unwind (result i32) + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $6 + (i32.load + (i32.load + (global.get $__asyncify_data) + ) + ) + ) + ) + ) + (block + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (local.set $1 + (local.get $x) + ) + ) + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (local.set $4 + (local.get $1) + ) + ) + (if + (i32.or + (local.get $4) + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (return + (i32.const 1) + ) + ) + ) + (if + (i32.or + (i32.eqz + (local.get $4) + ) + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + ) + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $6) + (i32.const 0) + ) + ) + (block + (call $import3 + (i32.const 2) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + ) + ) + ) + ) + ) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (return + (i32.const 3) + ) + ) + ) + ) + (unreachable) + ) + (unreachable) + ) + ) + ) + (block + (i32.store + (i32.load + (global.get $__asyncify_data) + ) + (local.get $5) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (nop) + (i32.const 0) + ) + (func $calls-import2-if-else-oneside2 (param $x i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $7 + (i32.load + (global.get $__asyncify_data) + ) + ) + (local.set $4 + (i32.load + (local.get $7) + ) + ) + ) + ) + (local.set $5 + (block $__asyncify_unwind (result i32) + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $6 + (i32.load + (i32.load + (global.get $__asyncify_data) + ) + ) + ) + ) + ) + (block + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (local.set $1 + (local.get $x) + ) + ) + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (local.set $4 + (local.get $1) + ) + ) + (if + (i32.or + (local.get $4) + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + ) + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $6) + (i32.const 0) + ) + ) + (block + (call $import3 + (i32.const 1) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + ) + ) + ) + ) + (if + (i32.or + (i32.eqz + (local.get $4) + ) + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (return + (i32.const 2) + ) + ) + ) + ) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (return + (i32.const 3) + ) + ) + ) + ) + (unreachable) + ) + (unreachable) + ) + ) + ) + (block + (i32.store + (i32.load + (global.get $__asyncify_data) + ) + (local.get $5) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (block + (local.set $8 + (i32.load + (global.get $__asyncify_data) + ) + ) + (i32.store + (local.get $8) + (local.get $4) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (i32.const 0) + ) + (func $calls-mv + (local $x (i32 i64)) + (local $1 (i32 i64)) + (local $2 i32) + (local $3 i32) + (local $4 (i32 i64)) + (local $5 i32) + (local $6 i32) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -12) + ) + ) + (local.set $5 + (i32.load + (global.get $__asyncify_data) + ) + ) + (local.set $1 + (tuple.make + (i32.load + (local.get $5) + ) + (i64.load offset=4 align=4 + (local.get $5) + ) + ) + ) + ) + ) + (local.set $2 + (block $__asyncify_unwind (result i32) + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $3 + (i32.load + (i32.load + (global.get $__asyncify_data) + ) + ) + ) + ) + ) + (block + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $3) + (i32.const 0) + ) + ) + (block + (local.set $4 + (call $import-mv) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + (local.set $1 + (local.get $4) + ) + ) + ) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (local.set $x + (local.get $1) + ) + ) + ) + ) + (return) + ) + ) + ) + (block + (i32.store + (i32.load + (global.get $__asyncify_data) + ) + (local.get $2) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (block + (local.set $6 + (i32.load + (global.get $__asyncify_data) + ) + ) + (i32.store + (local.get $6) + (tuple.extract 0 + (local.get $1) + ) + ) + (i64.store offset=4 align=4 + (local.get $6) + (tuple.extract 1 + (local.get $1) + ) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 12) + ) + ) + ) + ) + (func $calls-loop (param $x i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $6 + (i32.load + (global.get $__asyncify_data) + ) + ) + (local.set $x + (i32.load + (local.get $6) + ) + ) + ) + ) + (local.set $4 + (block $__asyncify_unwind (result i32) + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $5 + (i32.load + (i32.load + (global.get $__asyncify_data) + ) + ) + ) + ) + ) + (loop $l + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $5) + (i32.const 0) + ) + ) + (block + (call $import3 + (i32.const 1) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + ) + ) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (block + (local.set $1 + (local.get $x) + ) + (local.set $2 + (i32.add + (local.get $1) + (i32.const 1) + ) + ) + (local.set $x + (local.get $2) + ) + (local.set $3 + (local.get $x) + ) + (br_if $l + (local.get $3) + ) + ) + ) + (nop) + (nop) + (nop) + (nop) + ) + ) + (return) + ) + ) + ) + (block + (i32.store + (i32.load + (global.get $__asyncify_data) + ) + (local.get $4) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (block + (local.set $7 + (i32.load + (global.get $__asyncify_data) + ) + ) + (i32.store + (local.get $7) + (local.get $x) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + ) + (func $calls-loop2 + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $4 + (i32.load + (global.get $__asyncify_data) + ) + ) + (local.set $0 + (i32.load + (local.get $4) + ) + ) + ) + ) + (local.set $1 + (block $__asyncify_unwind (result i32) + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $2 + (i32.load + (i32.load + (global.get $__asyncify_data) + ) + ) + ) + ) + ) + (loop $l + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $2) + (i32.const 0) + ) + ) + (block + (local.set $3 + (call $import2) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + (local.set $0 + (local.get $3) + ) + ) + ) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (br_if $l + (local.get $0) + ) + ) + ) + ) + (return) + ) + ) + ) + (block + (i32.store + (i32.load + (global.get $__asyncify_data) + ) + (local.get $1) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (block + (local.set $5 + (i32.load + (global.get $__asyncify_data) + ) + ) + (i32.store + (local.get $5) + (local.get $0) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + ) + (func $calls-mix + (local $0 i32) + (local $1 i32) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (nop) + ) + (local.set $0 + (block $__asyncify_unwind (result i32) + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $1 + (i32.load + (i32.load + (global.get $__asyncify_data) + ) + ) + ) + ) + ) + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (call $boring) + ) + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $1) + (i32.const 0) + ) + ) + (block + (call $import) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + ) + ) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (call $boring) + ) + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $1) + (i32.const 1) + ) + ) + (block + (call $import) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 1) + ) + ) + ) + ) + ) + ) + (return) + ) + ) + ) + (block + (i32.store + (i32.load + (global.get $__asyncify_data) + ) + (local.get $0) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (nop) + ) + (func $boring + (nop) + ) + (func $calls-mix-deep + (local $0 i32) + (local $1 i32) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (nop) + ) + (local.set $0 + (block $__asyncify_unwind (result i32) + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $1 + (i32.load + (i32.load + (global.get $__asyncify_data) + ) + ) + ) + ) + ) + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (call $boring-deep) + ) + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $1) + (i32.const 0) + ) + ) + (block + (call $import-deep) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + ) + ) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (call $boring) + ) + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $1) + (i32.const 1) + ) + ) + (block + (call $import) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 1) + ) + ) + ) + ) + ) + ) + (return) + ) + ) + ) + (block + (i32.store + (i32.load + (global.get $__asyncify_data) + ) + (local.get $0) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (nop) + ) + (func $boring-deep + (call $boring) + ) + (func $import-deep + (local $0 i32) + (local $1 i32) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (nop) + ) + (local.set $0 + (block $__asyncify_unwind (result i32) + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $1 + (i32.load + (i32.load + (global.get $__asyncify_data) + ) + ) + ) + ) + ) + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $1) + (i32.const 0) + ) + ) + (block + (call $import) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + ) + ) + ) + ) + (return) + ) + ) + ) + (block + (i32.store + (i32.load + (global.get $__asyncify_data) + ) + (local.get $0) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (nop) + ) + (func $asyncify_start_unwind (param $0 i32) + (global.set $__asyncify_state + (i32.const 1) + ) + (global.set $__asyncify_data + (local.get $0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_stop_unwind + (global.set $__asyncify_state + (i32.const 0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_start_rewind (param $0 i32) + (global.set $__asyncify_state + (i32.const 2) + ) + (global.set $__asyncify_data + (local.get $0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_stop_rewind + (global.set $__asyncify_state + (i32.const 0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_get_state (result i32) + (global.get $__asyncify_state) + ) +) +(module + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) + (memory $0 1 1) + (global $__asyncify_state (mut i32) (i32.const 0)) + (global $__asyncify_data (mut i32) (i32.const 0)) + (export "asyncify_start_unwind" (func $asyncify_start_unwind)) + (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) + (export "asyncify_start_rewind" (func $asyncify_start_rewind)) + (export "asyncify_stop_rewind" (func $asyncify_stop_rewind)) + (export "asyncify_get_state" (func $asyncify_get_state)) + (func $asyncify_start_unwind (param $0 i32) + (global.set $__asyncify_state + (i32.const 1) + ) + (global.set $__asyncify_data + (local.get $0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_stop_unwind + (global.set $__asyncify_state + (i32.const 0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_start_rewind (param $0 i32) + (global.set $__asyncify_state + (i32.const 2) + ) + (global.set $__asyncify_data + (local.get $0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_stop_rewind + (global.set $__asyncify_state + (i32.const 0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_get_state (result i32) + (global.get $__asyncify_state) + ) +) diff -Nru binaryen-91/test/passes/asyncify_enable-multivalue.wast binaryen-99/test/passes/asyncify_enable-multivalue.wast --- binaryen-91/test/passes/asyncify_enable-multivalue.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/asyncify_enable-multivalue.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,157 @@ +;; Pre-existing imports that the pass turns into the implementations. +(module + (memory 1 2) + (import "asyncify" "start_unwind" (func $asyncify_start_unwind (param i32))) + (import "asyncify" "stop_unwind" (func $asyncify_stop_unwind)) + (import "asyncify" "start_rewind" (func $asyncify_start_rewind (param i32))) + (import "asyncify" "stop_rewind" (func $asyncify_stop_rewind)) + (global $sleeping (mut i32) (i32.const 0)) + ;; do a sleep operation: start a sleep if running, or resume after a sleep + ;; if we just rewound. + (func $do_sleep + (if + (i32.eqz (global.get $sleeping)) + (block + (global.set $sleeping (i32.const 1)) + ;; we should set up the data at address 4 around here + (call $asyncify_start_unwind (i32.const 4)) + ) + (block + (global.set $sleeping (i32.const 0)) + (call $asyncify_stop_rewind) + ) + ) + ) + ;; a function that does some work and has a sleep (async pause/resume) in the middle + (func $work + (call $stuff) ;; do some work + (call $do_sleep) ;; take a break + (call $stuff) ;; do some more work + ) + (func $stuff) + ;; the first event called from the main event loop: just call into $work + (func $first_event + (call $work) + ;; work will sleep, so we exit through here while it is paused + ) + ;; the second event called from the main event loop: to resume $work, + ;; stop the unwind, then prepare a rewind, and initiate it by doing + ;; the call to rewind the call stack back up to where it was + (func $second_event + (call $asyncify_stop_unwind) + (call $asyncify_start_rewind (i32.const 4)) + (call $work) + ) + ;; a function that can't do a sleep + (func $never_sleep + (call $stuff) + (call $stuff) + (call $stuff) + ) +) +;; Calls to imports that will call into asyncify themselves. +(module + (memory 1 2) + (import "env" "import" (func $import)) + (import "env" "import2" (func $import2 (result i32))) + (import "env" "import3" (func $import3 (param i32))) + (import "env" "import-mv" (func $import-mv (result i32 i64))) + (func $calls-import + (call $import) + ) + (func $calls-import2 (result i32) + (local $temp i32) + (local.set $temp (call $import2)) + (return (local.get $temp)) + ) + (func $calls-import2-drop + (drop (call $import2)) + ) + (func $calls-nothing + (drop (i32.eqz (i32.const 17))) + ) + (func $many-locals (param $x i32) (result i32) + (local $y i32) + (local $z (f32 i64)) + (loop $l + (local.set $x + (i32.add (local.get $y) (i32.const 1)) + ) + (local.set $y + (i32.div_s (local.get $x) (i32.const 3)) + ) + (br_if $l (local.get $y)) + ) + (call $import) + (return (local.get $y)) + ) + (func $calls-import2-if (param $x i32) + (if (local.get $x) + (call $import) + ) + ) + (func $calls-import2-if-else (param $x i32) + (if (local.get $x) + (call $import3 (i32.const 1)) + (call $import3 (i32.const 2)) + ) + ) + (func $calls-import2-if-else-oneside (param $x i32) (result i32) + (if (local.get $x) + (return (i32.const 1)) + (call $import3 (i32.const 2)) + ) + (return (i32.const 3)) + ) + (func $calls-import2-if-else-oneside2 (param $x i32) (result i32) + (if (local.get $x) + (call $import3 (i32.const 1)) + (return (i32.const 2)) + ) + (return (i32.const 3)) + ) + (func $calls-mv + (local $x (i32 i64)) + (local.set $x (call $import-mv)) + ) + (func $calls-loop (param $x i32) + (loop $l + (call $import3 (i32.const 1)) + (local.set $x + (i32.add (local.get $x) (i32.const 1)) + ) + (br_if $l + (local.get $x) + ) + ) + ) + (func $calls-loop2 + (loop $l + (br_if $l + (call $import2) + ) + ) + ) + (func $calls-mix + (call $boring) + (call $import) + (call $boring) + (call $import) + ) + (func $boring) + (func $calls-mix-deep + (call $boring-deep) + (call $import-deep) + (call $boring) + (call $import) + ) + (func $boring-deep + (call $boring) + ) + (func $import-deep + (call $import) + ) +) +;; empty module, in particular with no memory +(module +) diff -Nru binaryen-91/test/passes/asyncify_mod-asyncify-always-and-only-unwind_O.txt binaryen-99/test/passes/asyncify_mod-asyncify-always-and-only-unwind_O.txt --- binaryen-91/test/passes/asyncify_mod-asyncify-always-and-only-unwind_O.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/asyncify_mod-asyncify-always-and-only-unwind_O.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,7 @@ (module (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "import" (func $import)) (memory $0 1 2) (global $__asyncify_state (mut i32) (i32.const 0)) @@ -13,7 +14,8 @@ (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) (export "asyncify_start_rewind" (func $asyncify_start_rewind)) (export "asyncify_stop_rewind" (func $asyncify_stop_unwind)) - (func $calls-import (; 1 ;) (; has Stack IR ;) + (export "asyncify_get_state" (func $asyncify_get_state)) + (func $calls-import (; has Stack IR ;) (local $0 i32) (call $import) (i32.store @@ -32,7 +34,7 @@ ) ) ) - (func $asyncify_start_unwind (; 2 ;) (; has Stack IR ;) (param $0 i32) + (func $asyncify_start_unwind (; has Stack IR ;) (param $0 i32) (global.set $__asyncify_state (i32.const 1) ) @@ -51,7 +53,7 @@ (unreachable) ) ) - (func $asyncify_stop_unwind (; 3 ;) (; has Stack IR ;) + (func $asyncify_stop_unwind (; has Stack IR ;) (global.set $__asyncify_state (i32.const 0) ) @@ -67,7 +69,7 @@ (unreachable) ) ) - (func $asyncify_start_rewind (; 4 ;) (; has Stack IR ;) (param $0 i32) + (func $asyncify_start_rewind (; has Stack IR ;) (param $0 i32) (global.set $__asyncify_state (i32.const 2) ) @@ -86,4 +88,7 @@ (unreachable) ) ) + (func $asyncify_get_state (; has Stack IR ;) (result i32) + (global.get $__asyncify_state) + ) ) diff -Nru binaryen-91/test/passes/asyncify_mod-asyncify-always-and-only-unwind.txt binaryen-99/test/passes/asyncify_mod-asyncify-always-and-only-unwind.txt --- binaryen-91/test/passes/asyncify_mod-asyncify-always-and-only-unwind.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/asyncify_mod-asyncify-always-and-only-unwind.txt 2021-01-07 20:01:06.000000000 +0000 @@ -12,7 +12,8 @@ (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) (export "asyncify_start_rewind" (func $asyncify_start_rewind)) (export "asyncify_stop_rewind" (func $asyncify_stop_rewind)) - (func $calls-import (; 3 ;) + (export "asyncify_get_state" (func $asyncify_get_state)) + (func $calls-import (local $0 i32) (local $1 i32) (if @@ -90,7 +91,7 @@ ) (nop) ) - (func $calls-import2 (; 4 ;) (result i32) + (func $calls-import2 (result i32) (local $temp i32) (local $1 i32) (local $2 i32) @@ -110,7 +111,7 @@ (i32.load (global.get $__asyncify_data) ) - (i32.const -20) + (i32.const -4) ) ) (local.set $8 @@ -118,28 +119,8 @@ (global.get $__asyncify_data) ) ) - (local.set $temp - (i32.load - (local.get $8) - ) - ) (local.set $1 - (i32.load offset=4 - (local.get $8) - ) - ) - (local.set $2 - (i32.load offset=8 - (local.get $8) - ) - ) - (local.set $3 - (i32.load offset=12 - (local.get $8) - ) - ) - (local.set $4 - (i32.load offset=16 + (i32.load (local.get $8) ) ) @@ -171,52 +152,54 @@ ) ) (block - (if - (if (result i32) - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (i32.const 1) - (i32.eq - (local.get $6) - (i32.const 0) - ) - ) - (block - (local.set $7 - (call $import2) - ) - (if + (block + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) (i32.const 1) - (br $__asyncify_unwind + (i32.eq + (local.get $6) (i32.const 0) ) - (local.set $1 - (local.get $7) + ) + (block + (local.set $7 + (call $import2) + ) + (if + (i32.const 1) + (br $__asyncify_unwind + (i32.const 0) + ) + (local.set $1 + (local.get $7) + ) ) ) ) - ) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (block - (local.set $temp - (local.get $1) - ) - (local.set $2 - (local.get $temp) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) ) - (return - (local.get $2) + (block + (local.set $temp + (local.get $1) + ) + (local.set $2 + (local.get $temp) + ) + (return + (local.get $2) + ) ) ) + (nop) + (nop) ) - (nop) - (nop) ) (unreachable) ) @@ -249,37 +232,21 @@ ) (i32.store (local.get $9) - (local.get $temp) - ) - (i32.store offset=4 - (local.get $9) (local.get $1) ) - (i32.store offset=8 - (local.get $9) - (local.get $2) - ) - (i32.store offset=12 - (local.get $9) - (local.get $3) - ) - (i32.store offset=16 - (local.get $9) - (local.get $4) - ) (i32.store (global.get $__asyncify_data) (i32.add (i32.load (global.get $__asyncify_data) ) - (i32.const 20) + (i32.const 4) ) ) ) (i32.const 0) ) - (func $calls-import2-drop (; 5 ;) + (func $calls-import2-drop (local $0 i32) (local $1 i32) (local $2 i32) @@ -416,7 +383,7 @@ ) ) ) - (func $calls-nothing (; 6 ;) + (func $calls-nothing (local $0 i32) (local.set $0 (i32.eqz @@ -427,7 +394,7 @@ (local.get $0) ) ) - (func $asyncify_start_unwind (; 7 ;) (param $0 i32) + (func $asyncify_start_unwind (param $0 i32) (global.set $__asyncify_state (i32.const 1) ) @@ -446,7 +413,7 @@ (unreachable) ) ) - (func $asyncify_stop_unwind (; 8 ;) + (func $asyncify_stop_unwind (global.set $__asyncify_state (i32.const 0) ) @@ -462,7 +429,7 @@ (unreachable) ) ) - (func $asyncify_start_rewind (; 9 ;) (param $0 i32) + (func $asyncify_start_rewind (param $0 i32) (global.set $__asyncify_state (i32.const 2) ) @@ -481,7 +448,7 @@ (unreachable) ) ) - (func $asyncify_stop_rewind (; 10 ;) + (func $asyncify_stop_rewind (global.set $__asyncify_state (i32.const 0) ) @@ -497,4 +464,7 @@ (unreachable) ) ) + (func $asyncify_get_state (result i32) + (global.get $__asyncify_state) + ) ) diff -Nru binaryen-91/test/passes/asyncify_mod-asyncify-never-unwind_O.txt binaryen-99/test/passes/asyncify_mod-asyncify-never-unwind_O.txt --- binaryen-91/test/passes/asyncify_mod-asyncify-never-unwind_O.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/asyncify_mod-asyncify-never-unwind_O.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,7 @@ (module (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "import" (func $import)) (memory $0 1 2) (global $__asyncify_state (mut i32) (i32.const 0)) @@ -13,7 +14,8 @@ (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) (export "asyncify_start_rewind" (func $asyncify_start_rewind)) (export "asyncify_stop_rewind" (func $asyncify_stop_unwind)) - (func $calls-import (; 1 ;) (; has Stack IR ;) + (export "asyncify_get_state" (func $asyncify_get_state)) + (func $calls-import (; has Stack IR ;) (if (select (i32.eqz @@ -25,11 +27,11 @@ (block (result i32) (i32.store (global.get $__asyncify_data) - (i32.add + (i32.sub (i32.load (global.get $__asyncify_data) ) - (i32.const -4) + (i32.const 4) ) ) (i32.load @@ -47,7 +49,7 @@ (call $import) ) ) - (func $asyncify_start_unwind (; 2 ;) (; has Stack IR ;) (param $0 i32) + (func $asyncify_start_unwind (; has Stack IR ;) (param $0 i32) (global.set $__asyncify_state (i32.const 1) ) @@ -66,7 +68,7 @@ (unreachable) ) ) - (func $asyncify_stop_unwind (; 3 ;) (; has Stack IR ;) + (func $asyncify_stop_unwind (; has Stack IR ;) (global.set $__asyncify_state (i32.const 0) ) @@ -82,7 +84,7 @@ (unreachable) ) ) - (func $asyncify_start_rewind (; 4 ;) (; has Stack IR ;) (param $0 i32) + (func $asyncify_start_rewind (; has Stack IR ;) (param $0 i32) (global.set $__asyncify_state (i32.const 2) ) @@ -101,4 +103,7 @@ (unreachable) ) ) + (func $asyncify_get_state (; has Stack IR ;) (result i32) + (global.get $__asyncify_state) + ) ) diff -Nru binaryen-91/test/passes/asyncify_mod-asyncify-never-unwind.txt binaryen-99/test/passes/asyncify_mod-asyncify-never-unwind.txt --- binaryen-91/test/passes/asyncify_mod-asyncify-never-unwind.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/asyncify_mod-asyncify-never-unwind.txt 2021-01-07 20:01:06.000000000 +0000 @@ -12,7 +12,8 @@ (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) (export "asyncify_start_rewind" (func $asyncify_start_rewind)) (export "asyncify_stop_rewind" (func $asyncify_stop_rewind)) - (func $calls-import (; 3 ;) + (export "asyncify_get_state" (func $asyncify_get_state)) + (func $calls-import (local $0 i32) (local $1 i32) (if @@ -96,7 +97,7 @@ ) (nop) ) - (func $calls-import2 (; 4 ;) (result i32) + (func $calls-import2 (result i32) (local $temp i32) (local $1 i32) (local $2 i32) @@ -119,7 +120,7 @@ (i32.load (global.get $__asyncify_data) ) - (i32.const -20) + (i32.const -4) ) ) (local.set $8 @@ -127,28 +128,8 @@ (global.get $__asyncify_data) ) ) - (local.set $temp - (i32.load - (local.get $8) - ) - ) (local.set $1 - (i32.load offset=4 - (local.get $8) - ) - ) - (local.set $2 - (i32.load offset=8 - (local.get $8) - ) - ) - (local.set $3 - (i32.load offset=12 - (local.get $8) - ) - ) - (local.set $4 - (i32.load offset=16 + (i32.load (local.get $8) ) ) @@ -183,52 +164,54 @@ ) ) (block - (if - (if (result i32) - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (i32.const 1) - (i32.eq - (local.get $6) - (i32.const 0) - ) - ) - (block - (local.set $7 - (call $import2) - ) - (if - (i32.const 0) - (br $__asyncify_unwind + (block + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) (i32.const 0) ) - (local.set $1 - (local.get $7) + (i32.const 1) + (i32.eq + (local.get $6) + (i32.const 0) ) ) - ) - ) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (block - (local.set $temp - (local.get $1) + (block + (local.set $7 + (call $import2) + ) + (if + (i32.const 0) + (br $__asyncify_unwind + (i32.const 0) + ) + (local.set $1 + (local.get $7) + ) + ) ) - (local.set $2 - (local.get $temp) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) ) - (return - (local.get $2) + (block + (local.set $temp + (local.get $1) + ) + (local.set $2 + (local.get $temp) + ) + (return + (local.get $2) + ) ) ) + (nop) + (nop) ) - (nop) - (nop) ) (unreachable) ) @@ -261,37 +244,21 @@ ) (i32.store (local.get $9) - (local.get $temp) - ) - (i32.store offset=4 - (local.get $9) (local.get $1) ) - (i32.store offset=8 - (local.get $9) - (local.get $2) - ) - (i32.store offset=12 - (local.get $9) - (local.get $3) - ) - (i32.store offset=16 - (local.get $9) - (local.get $4) - ) (i32.store (global.get $__asyncify_data) (i32.add (i32.load (global.get $__asyncify_data) ) - (i32.const 20) + (i32.const 4) ) ) ) (i32.const 0) ) - (func $calls-import2-drop (; 5 ;) + (func $calls-import2-drop (local $0 i32) (local $1 i32) (local $2 i32) @@ -434,7 +401,7 @@ ) ) ) - (func $calls-nothing (; 6 ;) + (func $calls-nothing (local $0 i32) (local.set $0 (i32.eqz @@ -445,7 +412,7 @@ (local.get $0) ) ) - (func $asyncify_start_unwind (; 7 ;) (param $0 i32) + (func $asyncify_start_unwind (param $0 i32) (global.set $__asyncify_state (i32.const 1) ) @@ -464,7 +431,7 @@ (unreachable) ) ) - (func $asyncify_stop_unwind (; 8 ;) + (func $asyncify_stop_unwind (global.set $__asyncify_state (i32.const 0) ) @@ -480,7 +447,7 @@ (unreachable) ) ) - (func $asyncify_start_rewind (; 9 ;) (param $0 i32) + (func $asyncify_start_rewind (param $0 i32) (global.set $__asyncify_state (i32.const 2) ) @@ -499,7 +466,7 @@ (unreachable) ) ) - (func $asyncify_stop_rewind (; 10 ;) + (func $asyncify_stop_rewind (global.set $__asyncify_state (i32.const 0) ) @@ -515,4 +482,7 @@ (unreachable) ) ) + (func $asyncify_get_state (result i32) + (global.get $__asyncify_state) + ) ) diff -Nru binaryen-91/test/passes/asyncify_optimize-level=1.txt binaryen-99/test/passes/asyncify_optimize-level=1.txt --- binaryen-91/test/passes/asyncify_optimize-level=1.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/asyncify_optimize-level=1.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,8 +1,8 @@ (module (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "import" (func $import)) (import "env" "import2" (func $import2 (result i32))) (import "env" "import3" (func $import3 (param i32))) @@ -13,7 +13,8 @@ (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) (export "asyncify_start_rewind" (func $asyncify_start_rewind)) (export "asyncify_stop_rewind" (func $asyncify_stop_rewind)) - (func $calls-import (; 3 ;) + (export "asyncify_get_state" (func $asyncify_get_state)) + (func $calls-import (local $0 i32) (local.set $0 (block $__asyncify_unwind (result i32) @@ -28,11 +29,11 @@ (block (result i32) (i32.store (global.get $__asyncify_data) - (i32.add + (i32.sub (i32.load (global.get $__asyncify_data) ) - (i32.const -4) + (i32.const 4) ) ) (i32.load @@ -79,7 +80,7 @@ ) ) ) - (func $calls-import2 (; 4 ;) (result i32) + (func $calls-import2 (result i32) (local $0 i32) (local $1 i32) (if @@ -90,11 +91,11 @@ (block (i32.store (global.get $__asyncify_data) - (i32.add + (i32.sub (i32.load (global.get $__asyncify_data) ) - (i32.const -4) + (i32.const 4) ) ) (local.set $0 @@ -119,11 +120,11 @@ (block (result i32) (i32.store (global.get $__asyncify_data) - (i32.add + (i32.sub (i32.load (global.get $__asyncify_data) ) - (i32.const -4) + (i32.const 4) ) ) (i32.load @@ -199,7 +200,7 @@ ) (i32.const 0) ) - (func $calls-import2-drop (; 5 ;) + (func $calls-import2-drop (local $0 i32) (local.set $0 (block $__asyncify_unwind (result i32) @@ -214,11 +215,11 @@ (block (result i32) (i32.store (global.get $__asyncify_data) - (i32.add + (i32.sub (i32.load (global.get $__asyncify_data) ) - (i32.const -4) + (i32.const 4) ) ) (i32.load @@ -267,10 +268,10 @@ ) ) ) - (func $calls-nothing (; 6 ;) + (func $calls-nothing (nop) ) - (func $many-locals (; 7 ;) (param $0 i32) (result i32) + (func $many-locals (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (if @@ -281,30 +282,23 @@ (block (i32.store (global.get $__asyncify_data) - (i32.add + (i32.sub (i32.load (global.get $__asyncify_data) ) - (i32.const -8) + (i32.const 4) ) ) - (local.set $0 + (local.set $1 (i32.load - (local.tee $1 - (i32.load - (global.get $__asyncify_data) - ) + (i32.load + (global.get $__asyncify_data) ) ) ) - (local.set $1 - (i32.load offset=4 - (local.get $1) - ) - ) ) ) - (local.set $2 + (local.set $0 (block $__asyncify_unwind (result i32) (if (i32.eq @@ -314,11 +308,11 @@ (block (i32.store (global.get $__asyncify_data) - (i32.add + (i32.sub (i32.load (global.get $__asyncify_data) ) - (i32.const -4) + (i32.const 4) ) ) (local.set $2 @@ -384,7 +378,7 @@ (i32.load (global.get $__asyncify_data) ) - (local.get $2) + (local.get $0) ) (i32.store (global.get $__asyncify_data) @@ -396,15 +390,9 @@ ) ) (i32.store - (local.tee $2 - (i32.load - (global.get $__asyncify_data) - ) + (i32.load + (global.get $__asyncify_data) ) - (local.get $0) - ) - (i32.store offset=4 - (local.get $2) (local.get $1) ) (i32.store @@ -413,38 +401,14 @@ (i32.load (global.get $__asyncify_data) ) - (i32.const 8) + (i32.const 4) ) ) (i32.const 0) ) - (func $calls-import2-if (; 8 ;) (param $0 i32) + (func $calls-import2-if (param $0 i32) (local $1 i32) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - (block - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const -4) - ) - ) - (local.set $0 - (i32.load - (i32.load - (global.get $__asyncify_data) - ) - ) - ) - ) - ) - (local.set $1 + (local.set $0 (block $__asyncify_unwind (result i32) (if (i32.eq @@ -454,11 +418,11 @@ (block (i32.store (global.get $__asyncify_data) - (i32.add + (i32.sub (i32.load (global.get $__asyncify_data) ) - (i32.const -4) + (i32.const 4) ) ) (local.set $1 @@ -507,21 +471,6 @@ (i32.load (global.get $__asyncify_data) ) - (local.get $1) - ) - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const 4) - ) - ) - (i32.store - (i32.load - (global.get $__asyncify_data) - ) (local.get $0) ) (i32.store @@ -534,7 +483,7 @@ ) ) ) - (func $calls-import2-if-else (; 9 ;) (param $0 i32) + (func $calls-import2-if-else (param $0 i32) (local $1 i32) (local $2 i32) (if @@ -545,30 +494,23 @@ (block (i32.store (global.get $__asyncify_data) - (i32.add + (i32.sub (i32.load (global.get $__asyncify_data) ) - (i32.const -8) + (i32.const 4) ) ) - (local.set $0 + (local.set $1 (i32.load - (local.tee $1 - (i32.load - (global.get $__asyncify_data) - ) + (i32.load + (global.get $__asyncify_data) ) ) ) - (local.set $1 - (i32.load offset=4 - (local.get $1) - ) - ) ) ) - (local.set $2 + (local.set $0 (block $__asyncify_unwind (result i32) (if (i32.eq @@ -578,11 +520,11 @@ (block (i32.store (global.get $__asyncify_data) - (i32.add + (i32.sub (i32.load (global.get $__asyncify_data) ) - (i32.const -4) + (i32.const 4) ) ) (local.set $2 @@ -674,7 +616,7 @@ (i32.load (global.get $__asyncify_data) ) - (local.get $2) + (local.get $0) ) (i32.store (global.get $__asyncify_data) @@ -686,15 +628,9 @@ ) ) (i32.store - (local.tee $2 - (i32.load - (global.get $__asyncify_data) - ) + (i32.load + (global.get $__asyncify_data) ) - (local.get $0) - ) - (i32.store offset=4 - (local.get $2) (local.get $1) ) (i32.store @@ -703,45 +639,14 @@ (i32.load (global.get $__asyncify_data) ) - (i32.const 8) + (i32.const 4) ) ) ) - (func $calls-import2-if-else-oneside (; 10 ;) (param $0 i32) (result i32) + (func $calls-import2-if-else-oneside (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - (block - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const -8) - ) - ) - (local.set $0 - (i32.load - (local.tee $1 - (i32.load - (global.get $__asyncify_data) - ) - ) - ) - ) - (local.set $1 - (i32.load offset=4 - (local.get $1) - ) - ) - ) - ) - (local.set $2 + (local.set $0 (block $__asyncify_unwind (result i32) (if (i32.eq @@ -751,14 +656,14 @@ (block (i32.store (global.get $__asyncify_data) - (i32.add + (i32.sub (i32.load (global.get $__asyncify_data) ) - (i32.const -4) + (i32.const 4) ) ) - (local.set $2 + (local.set $1 (i32.load (i32.load (global.get $__asyncify_data) @@ -769,9 +674,9 @@ ) (if (i32.or - (local.tee $1 + (local.tee $2 (select - (local.get $1) + (local.get $2) (local.get $0) (global.get $__asyncify_state) ) @@ -793,7 +698,7 @@ (if (i32.or (i32.eqz - (local.get $1) + (local.get $2) ) (i32.eq (global.get $__asyncify_state) @@ -803,7 +708,7 @@ (if (select (i32.eqz - (local.get $2) + (local.get $1) ) (i32.const 1) (global.get $__asyncify_state) @@ -839,41 +744,20 @@ (i32.load (global.get $__asyncify_data) ) - (local.get $2) - ) - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const 4) - ) - ) - (i32.store - (local.tee $2 - (i32.load - (global.get $__asyncify_data) - ) - ) (local.get $0) ) - (i32.store offset=4 - (local.get $2) - (local.get $1) - ) (i32.store (global.get $__asyncify_data) (i32.add (i32.load (global.get $__asyncify_data) ) - (i32.const 8) + (i32.const 4) ) ) (i32.const 0) ) - (func $calls-import2-if-else-oneside2 (; 11 ;) (param $0 i32) (result i32) + (func $calls-import2-if-else-oneside2 (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (if @@ -884,30 +768,23 @@ (block (i32.store (global.get $__asyncify_data) - (i32.add + (i32.sub (i32.load (global.get $__asyncify_data) ) - (i32.const -8) + (i32.const 4) ) ) - (local.set $0 + (local.set $1 (i32.load - (local.tee $1 - (i32.load - (global.get $__asyncify_data) - ) + (i32.load + (global.get $__asyncify_data) ) ) ) - (local.set $1 - (i32.load offset=4 - (local.get $1) - ) - ) ) ) - (local.set $2 + (local.set $0 (block $__asyncify_unwind (result i32) (if (i32.eq @@ -917,11 +794,11 @@ (block (i32.store (global.get $__asyncify_data) - (i32.add + (i32.sub (i32.load (global.get $__asyncify_data) ) - (i32.const -4) + (i32.const 4) ) ) (local.set $2 @@ -1005,7 +882,7 @@ (i32.load (global.get $__asyncify_data) ) - (local.get $2) + (local.get $0) ) (i32.store (global.get $__asyncify_data) @@ -1017,15 +894,9 @@ ) ) (i32.store - (local.tee $2 - (i32.load - (global.get $__asyncify_data) - ) + (i32.load + (global.get $__asyncify_data) ) - (local.get $0) - ) - (i32.store offset=4 - (local.get $2) (local.get $1) ) (i32.store @@ -1034,12 +905,12 @@ (i32.load (global.get $__asyncify_data) ) - (i32.const 8) + (i32.const 4) ) ) (i32.const 0) ) - (func $calls-loop (; 12 ;) (param $0 i32) + (func $calls-loop (param $0 i32) (local $1 i32) (if (i32.eq @@ -1049,11 +920,11 @@ (block (i32.store (global.get $__asyncify_data) - (i32.add + (i32.sub (i32.load (global.get $__asyncify_data) ) - (i32.const -4) + (i32.const 4) ) ) (local.set $0 @@ -1075,11 +946,11 @@ (block (i32.store (global.get $__asyncify_data) - (i32.add + (i32.sub (i32.load (global.get $__asyncify_data) ) - (i32.const -4) + (i32.const 4) ) ) (local.set $1 @@ -1163,7 +1034,7 @@ ) ) ) - (func $calls-loop2 (; 13 ;) + (func $calls-loop2 (local $0 i32) (local $1 i32) (local $2 i32) @@ -1175,11 +1046,11 @@ (block (i32.store (global.get $__asyncify_data) - (i32.add + (i32.sub (i32.load (global.get $__asyncify_data) ) - (i32.const -4) + (i32.const 4) ) ) (local.set $0 @@ -1201,11 +1072,11 @@ (block (i32.store (global.get $__asyncify_data) - (i32.add + (i32.sub (i32.load (global.get $__asyncify_data) ) - (i32.const -4) + (i32.const 4) ) ) (local.set $2 @@ -1288,7 +1159,7 @@ ) ) ) - (func $calls-mix (; 14 ;) + (func $calls-mix (local $0 i32) (local.set $0 (block $__asyncify_unwind (result i32) @@ -1300,11 +1171,11 @@ (block (i32.store (global.get $__asyncify_data) - (i32.add + (i32.sub (i32.load (global.get $__asyncify_data) ) - (i32.const -4) + (i32.const 4) ) ) (local.set $0 @@ -1390,10 +1261,10 @@ ) ) ) - (func $boring (; 15 ;) + (func $boring (nop) ) - (func $calls-mix-deep (; 16 ;) + (func $calls-mix-deep (local $0 i32) (local.set $0 (block $__asyncify_unwind (result i32) @@ -1405,11 +1276,11 @@ (block (i32.store (global.get $__asyncify_data) - (i32.add + (i32.sub (i32.load (global.get $__asyncify_data) ) - (i32.const -4) + (i32.const 4) ) ) (local.set $0 @@ -1495,10 +1366,10 @@ ) ) ) - (func $boring-deep (; 17 ;) + (func $boring-deep (call $boring) ) - (func $import-deep (; 18 ;) + (func $import-deep (local $0 i32) (local.set $0 (block $__asyncify_unwind (result i32) @@ -1513,11 +1384,11 @@ (block (result i32) (i32.store (global.get $__asyncify_data) - (i32.add + (i32.sub (i32.load (global.get $__asyncify_data) ) - (i32.const -4) + (i32.const 4) ) ) (i32.load @@ -1564,7 +1435,7 @@ ) ) ) - (func $asyncify_start_unwind (; 19 ;) (param $0 i32) + (func $asyncify_start_unwind (param $0 i32) (global.set $__asyncify_state (i32.const 1) ) @@ -1583,7 +1454,7 @@ (unreachable) ) ) - (func $asyncify_stop_unwind (; 20 ;) + (func $asyncify_stop_unwind (global.set $__asyncify_state (i32.const 0) ) @@ -1599,7 +1470,7 @@ (unreachable) ) ) - (func $asyncify_start_rewind (; 21 ;) (param $0 i32) + (func $asyncify_start_rewind (param $0 i32) (global.set $__asyncify_state (i32.const 2) ) @@ -1618,7 +1489,7 @@ (unreachable) ) ) - (func $asyncify_stop_rewind (; 22 ;) + (func $asyncify_stop_rewind (global.set $__asyncify_state (i32.const 0) ) @@ -1634,4 +1505,7 @@ (unreachable) ) ) + (func $asyncify_get_state (result i32) + (global.get $__asyncify_state) + ) ) diff -Nru binaryen-91/test/passes/asyncify_pass-arg=asyncify-addlist@foo_pass-arg=asyncify-ignore-indirect.txt binaryen-99/test/passes/asyncify_pass-arg=asyncify-addlist@foo_pass-arg=asyncify-ignore-indirect.txt --- binaryen-91/test/passes/asyncify_pass-arg=asyncify-addlist@foo_pass-arg=asyncify-ignore-indirect.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/asyncify_pass-arg=asyncify-addlist@foo_pass-arg=asyncify-ignore-indirect.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,195 @@ +(module + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) + (import "env" "import" (func $import)) + (memory $0 1 2) + (table $0 1 funcref) + (global $__asyncify_state (mut i32) (i32.const 0)) + (global $__asyncify_data (mut i32) (i32.const 0)) + (export "asyncify_start_unwind" (func $asyncify_start_unwind)) + (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) + (export "asyncify_start_rewind" (func $asyncify_start_rewind)) + (export "asyncify_stop_rewind" (func $asyncify_stop_rewind)) + (export "asyncify_get_state" (func $asyncify_get_state)) + (func $foo + (local $0 i32) + (local $1 i32) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (nop) + ) + (local.set $0 + (block $__asyncify_unwind (result i32) + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $1 + (i32.load + (i32.load + (global.get $__asyncify_data) + ) + ) + ) + ) + ) + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (call $nothing) + ) + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $1) + (i32.const 0) + ) + ) + (block + (call_indirect (type $none_=>_none) + (i32.const 0) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + ) + ) + ) + ) + ) + (return) + ) + ) + ) + (block + (i32.store + (i32.load + (global.get $__asyncify_data) + ) + (local.get $0) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (nop) + ) + (func $bar + (call $nothing) + (call_indirect (type $none_=>_none) + (i32.const 0) + ) + ) + (func $nothing + (nop) + ) + (func $asyncify_start_unwind (param $0 i32) + (global.set $__asyncify_state + (i32.const 1) + ) + (global.set $__asyncify_data + (local.get $0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_stop_unwind + (global.set $__asyncify_state + (i32.const 0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_start_rewind (param $0 i32) + (global.set $__asyncify_state + (i32.const 2) + ) + (global.set $__asyncify_data + (local.get $0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_stop_rewind + (global.set $__asyncify_state + (i32.const 0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_get_state (result i32) + (global.get $__asyncify_state) + ) +) diff -Nru binaryen-91/test/passes/asyncify_pass-arg=asyncify-addlist@foo_pass-arg=asyncify-ignore-indirect.wast binaryen-99/test/passes/asyncify_pass-arg=asyncify-addlist@foo_pass-arg=asyncify-ignore-indirect.wast --- binaryen-91/test/passes/asyncify_pass-arg=asyncify-addlist@foo_pass-arg=asyncify-ignore-indirect.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/asyncify_pass-arg=asyncify-addlist@foo_pass-arg=asyncify-ignore-indirect.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,18 @@ +(module + (type $t (func)) + (memory 1 2) + (table 1 funcref) + (elem (i32.const 0)) + (import "env" "import" (func $import)) + (func $foo ;; doesn't look like it needs instrumentation, but in add list + (call $nothing) + (call_indirect (type $t) (i32.const 0)) + ) + (func $bar ;; doesn't look like it needs instrumentation, and not in add list + (call $nothing) + (call_indirect (type $t) (i32.const 0)) + ) + (func $nothing + ) +) + diff -Nru binaryen-91/test/passes/asyncify_pass-arg=asyncify-addlist@foo.txt binaryen-99/test/passes/asyncify_pass-arg=asyncify-addlist@foo.txt --- binaryen-91/test/passes/asyncify_pass-arg=asyncify-addlist@foo.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/asyncify_pass-arg=asyncify-addlist@foo.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,162 @@ +(module + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) + (import "env" "import" (func $import)) + (memory $0 1 2) + (global $__asyncify_state (mut i32) (i32.const 0)) + (global $__asyncify_data (mut i32) (i32.const 0)) + (export "asyncify_start_unwind" (func $asyncify_start_unwind)) + (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) + (export "asyncify_start_rewind" (func $asyncify_start_rewind)) + (export "asyncify_stop_rewind" (func $asyncify_stop_rewind)) + (export "asyncify_get_state" (func $asyncify_get_state)) + (func $foo + (local $0 i32) + (local $1 i32) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (nop) + ) + (local.tee $0 + (block $__asyncify_unwind + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $1 + (i32.load + (i32.load + (global.get $__asyncify_data) + ) + ) + ) + ) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (call $nothing) + ) + ) + (return) + ) + ) + ) + (block + (i32.store + (i32.load + (global.get $__asyncify_data) + ) + (local.get $0) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (nop) + ) + (func $bar + (call $nothing) + ) + (func $nothing + (nop) + ) + (func $asyncify_start_unwind (param $0 i32) + (global.set $__asyncify_state + (i32.const 1) + ) + (global.set $__asyncify_data + (local.get $0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_stop_unwind + (global.set $__asyncify_state + (i32.const 0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_start_rewind (param $0 i32) + (global.set $__asyncify_state + (i32.const 2) + ) + (global.set $__asyncify_data + (local.get $0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_stop_rewind + (global.set $__asyncify_state + (i32.const 0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_get_state (result i32) + (global.get $__asyncify_state) + ) +) diff -Nru binaryen-91/test/passes/asyncify_pass-arg=asyncify-addlist@foo.wast binaryen-99/test/passes/asyncify_pass-arg=asyncify-addlist@foo.wast --- binaryen-91/test/passes/asyncify_pass-arg=asyncify-addlist@foo.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/asyncify_pass-arg=asyncify-addlist@foo.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,13 @@ +(module + (memory 1 2) + (import "env" "import" (func $import)) + (func $foo ;; doesn't look like it needs instrumentation, but in add list + (call $nothing) + ) + (func $bar ;; doesn't look like it needs instrumentation, and not in add list + (call $nothing) + ) + (func $nothing + ) +) + diff -Nru binaryen-91/test/passes/asyncify_pass-arg=asyncify-asserts_pass-arg=asyncify-onlylist@waka.txt binaryen-99/test/passes/asyncify_pass-arg=asyncify-asserts_pass-arg=asyncify-onlylist@waka.txt --- binaryen-91/test/passes/asyncify_pass-arg=asyncify-asserts_pass-arg=asyncify-onlylist@waka.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/asyncify_pass-arg=asyncify-asserts_pass-arg=asyncify-onlylist@waka.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,205 @@ +(module + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) + (import "env" "import" (func $import)) + (import "env" "import2" (func $import2 (result i32))) + (import "env" "import3" (func $import3 (param i32))) + (memory $0 1 2) + (table $0 2 2 funcref) + (elem (i32.const 0) $calls-import2-drop $calls-import2-drop) + (global $__asyncify_state (mut i32) (i32.const 0)) + (global $__asyncify_data (mut i32) (i32.const 0)) + (export "asyncify_start_unwind" (func $asyncify_start_unwind)) + (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) + (export "asyncify_start_rewind" (func $asyncify_start_rewind)) + (export "asyncify_stop_rewind" (func $asyncify_stop_rewind)) + (export "asyncify_get_state" (func $asyncify_get_state)) + (func $calls-import + (local $0 i32) + (local.set $0 + (global.get $__asyncify_state) + ) + (block + (call $import) + (if + (i32.ne + (global.get $__asyncify_state) + (local.get $0) + ) + (unreachable) + ) + ) + ) + (func $calls-import2-drop + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local.set $1 + (global.get $__asyncify_state) + ) + (block + (local.set $0 + (block (result i32) + (local.set $2 + (call $import2) + ) + (if + (i32.ne + (global.get $__asyncify_state) + (local.get $1) + ) + (unreachable) + ) + (local.get $2) + ) + ) + (drop + (local.get $0) + ) + ) + ) + (func $returns (result i32) + (local $x i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local.set $5 + (global.get $__asyncify_state) + ) + (block + (block + (local.set $1 + (block (result i32) + (local.set $6 + (call $import2) + ) + (if + (i32.ne + (global.get $__asyncify_state) + (local.get $5) + ) + (unreachable) + ) + (local.get $6) + ) + ) + (local.set $x + (local.get $1) + ) + (local.set $2 + (local.get $x) + ) + (local.set $3 + (local.get $2) + ) + ) + (local.set $4 + (local.get $3) + ) + (return + (local.get $4) + ) + ) + ) + (func $calls-indirect (param $x i32) + (local $1 i32) + (local $2 i32) + (local.set $2 + (global.get $__asyncify_state) + ) + (block + (local.set $1 + (local.get $x) + ) + (block + (call_indirect (type $none_=>_none) + (local.get $1) + ) + (if + (i32.ne + (global.get $__asyncify_state) + (local.get $2) + ) + (unreachable) + ) + ) + ) + ) + (func $asyncify_start_unwind (param $0 i32) + (global.set $__asyncify_state + (i32.const 1) + ) + (global.set $__asyncify_data + (local.get $0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_stop_unwind + (global.set $__asyncify_state + (i32.const 0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_start_rewind (param $0 i32) + (global.set $__asyncify_state + (i32.const 2) + ) + (global.set $__asyncify_data + (local.get $0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_stop_rewind + (global.set $__asyncify_state + (i32.const 0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_get_state (result i32) + (global.get $__asyncify_state) + ) +) diff -Nru binaryen-91/test/passes/asyncify_pass-arg=asyncify-asserts_pass-arg=asyncify-onlylist@waka.wast binaryen-99/test/passes/asyncify_pass-arg=asyncify-asserts_pass-arg=asyncify-onlylist@waka.wast --- binaryen-91/test/passes/asyncify_pass-arg=asyncify-asserts_pass-arg=asyncify-onlylist@waka.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/asyncify_pass-arg=asyncify-asserts_pass-arg=asyncify-onlylist@waka.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,25 @@ +(module + (memory 1 2) + (type $f (func)) + (import "env" "import" (func $import)) + (import "env" "import2" (func $import2 (result i32))) + (import "env" "import3" (func $import3 (param i32))) + (table 1 1) + (func $calls-import + (call $import) + ) + (func $calls-import2-drop + (drop (call $import2)) + ) + (func $returns (result i32) + (local $x i32) + (local.set $x (call $import2)) + (local.get $x) + ) + (func $calls-indirect (param $x i32) + (call_indirect (type $f) + (local.get $x) + ) + ) +) + diff -Nru binaryen-91/test/passes/asyncify_pass-arg=asyncify-asserts_pass-arg=asyncify-whitelist@waka.txt binaryen-99/test/passes/asyncify_pass-arg=asyncify-asserts_pass-arg=asyncify-whitelist@waka.txt --- binaryen-91/test/passes/asyncify_pass-arg=asyncify-asserts_pass-arg=asyncify-whitelist@waka.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/asyncify_pass-arg=asyncify-asserts_pass-arg=asyncify-whitelist@waka.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,201 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "import" (func $import)) - (import "env" "import2" (func $import2 (result i32))) - (import "env" "import3" (func $import3 (param i32))) - (memory $0 1 2) - (table $0 2 2 funcref) - (elem (i32.const 0) $calls-import2-drop $calls-import2-drop) - (global $__asyncify_state (mut i32) (i32.const 0)) - (global $__asyncify_data (mut i32) (i32.const 0)) - (export "asyncify_start_unwind" (func $asyncify_start_unwind)) - (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) - (export "asyncify_start_rewind" (func $asyncify_start_rewind)) - (export "asyncify_stop_rewind" (func $asyncify_stop_rewind)) - (func $calls-import (; 3 ;) - (local $0 i32) - (local.set $0 - (global.get $__asyncify_state) - ) - (block - (call $import) - (if - (i32.ne - (global.get $__asyncify_state) - (local.get $0) - ) - (unreachable) - ) - ) - ) - (func $calls-import2-drop (; 4 ;) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local.set $1 - (global.get $__asyncify_state) - ) - (block - (local.set $0 - (block (result i32) - (local.set $2 - (call $import2) - ) - (if - (i32.ne - (global.get $__asyncify_state) - (local.get $1) - ) - (unreachable) - ) - (local.get $2) - ) - ) - (drop - (local.get $0) - ) - ) - ) - (func $returns (; 5 ;) (result i32) - (local $x i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local.set $5 - (global.get $__asyncify_state) - ) - (block - (block - (local.set $1 - (block (result i32) - (local.set $6 - (call $import2) - ) - (if - (i32.ne - (global.get $__asyncify_state) - (local.get $5) - ) - (unreachable) - ) - (local.get $6) - ) - ) - (local.set $x - (local.get $1) - ) - (local.set $2 - (local.get $x) - ) - (local.set $3 - (local.get $2) - ) - ) - (local.set $4 - (local.get $3) - ) - (return - (local.get $4) - ) - ) - ) - (func $calls-indirect (; 6 ;) (param $x i32) - (local $1 i32) - (local $2 i32) - (local.set $2 - (global.get $__asyncify_state) - ) - (block - (local.set $1 - (local.get $x) - ) - (block - (call_indirect (type $none_=>_none) - (local.get $1) - ) - (if - (i32.ne - (global.get $__asyncify_state) - (local.get $2) - ) - (unreachable) - ) - ) - ) - ) - (func $asyncify_start_unwind (; 7 ;) (param $0 i32) - (global.set $__asyncify_state - (i32.const 1) - ) - (global.set $__asyncify_data - (local.get $0) - ) - (if - (i32.gt_u - (i32.load - (global.get $__asyncify_data) - ) - (i32.load offset=4 - (global.get $__asyncify_data) - ) - ) - (unreachable) - ) - ) - (func $asyncify_stop_unwind (; 8 ;) - (global.set $__asyncify_state - (i32.const 0) - ) - (if - (i32.gt_u - (i32.load - (global.get $__asyncify_data) - ) - (i32.load offset=4 - (global.get $__asyncify_data) - ) - ) - (unreachable) - ) - ) - (func $asyncify_start_rewind (; 9 ;) (param $0 i32) - (global.set $__asyncify_state - (i32.const 2) - ) - (global.set $__asyncify_data - (local.get $0) - ) - (if - (i32.gt_u - (i32.load - (global.get $__asyncify_data) - ) - (i32.load offset=4 - (global.get $__asyncify_data) - ) - ) - (unreachable) - ) - ) - (func $asyncify_stop_rewind (; 10 ;) - (global.set $__asyncify_state - (i32.const 0) - ) - (if - (i32.gt_u - (i32.load - (global.get $__asyncify_data) - ) - (i32.load offset=4 - (global.get $__asyncify_data) - ) - ) - (unreachable) - ) - ) -) diff -Nru binaryen-91/test/passes/asyncify_pass-arg=asyncify-asserts_pass-arg=asyncify-whitelist@waka.wast binaryen-99/test/passes/asyncify_pass-arg=asyncify-asserts_pass-arg=asyncify-whitelist@waka.wast --- binaryen-91/test/passes/asyncify_pass-arg=asyncify-asserts_pass-arg=asyncify-whitelist@waka.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/asyncify_pass-arg=asyncify-asserts_pass-arg=asyncify-whitelist@waka.wast 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -(module - (memory 1 2) - (type $f (func)) - (import "env" "import" (func $import)) - (import "env" "import2" (func $import2 (result i32))) - (import "env" "import3" (func $import3 (param i32))) - (table 1 1) - (func $calls-import - (call $import) - ) - (func $calls-import2-drop - (drop (call $import2)) - ) - (func $returns (result i32) - (local $x i32) - (local.set $x (call $import2)) - (local.get $x) - ) - (func $calls-indirect (param $x i32) - (call_indirect (type $f) - (local.get $x) - ) - ) -) - diff -Nru binaryen-91/test/passes/asyncify_pass-arg=asyncify-blacklist@foo,bar.txt binaryen-99/test/passes/asyncify_pass-arg=asyncify-blacklist@foo,bar.txt --- binaryen-91/test/passes/asyncify_pass-arg=asyncify-blacklist@foo,bar.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/asyncify_pass-arg=asyncify-blacklist@foo,bar.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,7 @@ (module (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "import" (func $import)) (memory $0 1 2) (global $__asyncify_state (mut i32) (i32.const 0)) @@ -9,13 +10,14 @@ (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) (export "asyncify_start_rewind" (func $asyncify_start_rewind)) (export "asyncify_stop_rewind" (func $asyncify_stop_rewind)) - (func $foo (; 1 ;) + (export "asyncify_get_state" (func $asyncify_get_state)) + (func $foo (call $import) ) - (func $bar (; 2 ;) + (func $bar (call $import) ) - (func $baz (; 3 ;) + (func $baz (local $0 i32) (local $1 i32) (if @@ -102,10 +104,10 @@ ) (nop) ) - (func $other1 (; 4 ;) + (func $other1 (call $foo) ) - (func $other2 (; 5 ;) + (func $other2 (local $0 i32) (local $1 i32) (if @@ -192,7 +194,7 @@ ) (nop) ) - (func $asyncify_start_unwind (; 6 ;) (param $0 i32) + (func $asyncify_start_unwind (param $0 i32) (global.set $__asyncify_state (i32.const 1) ) @@ -211,7 +213,7 @@ (unreachable) ) ) - (func $asyncify_stop_unwind (; 7 ;) + (func $asyncify_stop_unwind (global.set $__asyncify_state (i32.const 0) ) @@ -227,7 +229,7 @@ (unreachable) ) ) - (func $asyncify_start_rewind (; 8 ;) (param $0 i32) + (func $asyncify_start_rewind (param $0 i32) (global.set $__asyncify_state (i32.const 2) ) @@ -246,7 +248,7 @@ (unreachable) ) ) - (func $asyncify_stop_rewind (; 9 ;) + (func $asyncify_stop_rewind (global.set $__asyncify_state (i32.const 0) ) @@ -262,4 +264,7 @@ (unreachable) ) ) + (func $asyncify_get_state (result i32) + (global.get $__asyncify_state) + ) ) diff -Nru binaryen-91/test/passes/asyncify_pass-arg=asyncify-ignore-imports.txt binaryen-99/test/passes/asyncify_pass-arg=asyncify-ignore-imports.txt --- binaryen-91/test/passes/asyncify_pass-arg=asyncify-ignore-imports.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/asyncify_pass-arg=asyncify-ignore-imports.txt 2021-01-07 20:01:06.000000000 +0000 @@ -14,10 +14,11 @@ (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) (export "asyncify_start_rewind" (func $asyncify_start_rewind)) (export "asyncify_stop_rewind" (func $asyncify_stop_rewind)) - (func $calls-import (; 3 ;) + (export "asyncify_get_state" (func $asyncify_get_state)) + (func $calls-import (call $import) ) - (func $calls-import2-drop (; 4 ;) + (func $calls-import2-drop (local $0 i32) (local.set $0 (call $import2) @@ -26,7 +27,7 @@ (local.get $0) ) ) - (func $calls-import2-if-else (; 5 ;) (param $x i32) + (func $calls-import2-if-else (param $x i32) (local $1 i32) (local.set $1 (local.get $x) @@ -41,7 +42,7 @@ ) ) ) - (func $calls-indirect (; 6 ;) (param $x i32) + (func $calls-indirect (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -59,7 +60,7 @@ (i32.load (global.get $__asyncify_data) ) - (i32.const -8) + (i32.const -4) ) ) (local.set $4 @@ -67,13 +68,8 @@ (global.get $__asyncify_data) ) ) - (local.set $x - (i32.load - (local.get $4) - ) - ) (local.set $1 - (i32.load offset=4 + (i32.load (local.get $4) ) ) @@ -175,10 +171,6 @@ ) (i32.store (local.get $5) - (local.get $x) - ) - (i32.store offset=4 - (local.get $5) (local.get $1) ) (i32.store @@ -187,12 +179,12 @@ (i32.load (global.get $__asyncify_data) ) - (i32.const 8) + (i32.const 4) ) ) ) ) - (func $asyncify_start_unwind (; 7 ;) (param $0 i32) + (func $asyncify_start_unwind (param $0 i32) (global.set $__asyncify_state (i32.const 1) ) @@ -211,7 +203,7 @@ (unreachable) ) ) - (func $asyncify_stop_unwind (; 8 ;) + (func $asyncify_stop_unwind (global.set $__asyncify_state (i32.const 0) ) @@ -227,7 +219,7 @@ (unreachable) ) ) - (func $asyncify_start_rewind (; 9 ;) (param $0 i32) + (func $asyncify_start_rewind (param $0 i32) (global.set $__asyncify_state (i32.const 2) ) @@ -246,7 +238,7 @@ (unreachable) ) ) - (func $asyncify_stop_rewind (; 10 ;) + (func $asyncify_stop_rewind (global.set $__asyncify_state (i32.const 0) ) @@ -262,4 +254,7 @@ (unreachable) ) ) + (func $asyncify_get_state (result i32) + (global.get $__asyncify_state) + ) ) diff -Nru binaryen-91/test/passes/asyncify_pass-arg=asyncify-ignore-indirect.txt binaryen-99/test/passes/asyncify_pass-arg=asyncify-ignore-indirect.txt --- binaryen-91/test/passes/asyncify_pass-arg=asyncify-ignore-indirect.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/asyncify_pass-arg=asyncify-ignore-indirect.txt 2021-01-07 20:01:06.000000000 +0000 @@ -14,7 +14,8 @@ (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) (export "asyncify_start_rewind" (func $asyncify_start_rewind)) (export "asyncify_stop_rewind" (func $asyncify_stop_rewind)) - (func $calls-import (; 3 ;) + (export "asyncify_get_state" (func $asyncify_get_state)) + (func $calls-import (local $0 i32) (local $1 i32) (if @@ -101,7 +102,7 @@ ) (nop) ) - (func $calls-import2-drop (; 4 ;) + (func $calls-import2-drop (local $0 i32) (local $1 i32) (local $2 i32) @@ -247,7 +248,7 @@ ) ) ) - (func $calls-import2-if-else (; 5 ;) (param $x i32) + (func $calls-import2-if-else (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -266,7 +267,7 @@ (i32.load (global.get $__asyncify_data) ) - (i32.const -12) + (i32.const -4) ) ) (local.set $5 @@ -274,18 +275,8 @@ (global.get $__asyncify_data) ) ) - (local.set $x - (i32.load - (local.get $5) - ) - ) - (local.set $1 - (i32.load offset=4 - (local.get $5) - ) - ) (local.set $2 - (i32.load offset=8 + (i32.load (local.get $5) ) ) @@ -445,14 +436,6 @@ ) (i32.store (local.get $6) - (local.get $x) - ) - (i32.store offset=4 - (local.get $6) - (local.get $1) - ) - (i32.store offset=8 - (local.get $6) (local.get $2) ) (i32.store @@ -461,12 +444,12 @@ (i32.load (global.get $__asyncify_data) ) - (i32.const 12) + (i32.const 4) ) ) ) ) - (func $calls-indirect (; 6 ;) (param $x i32) + (func $calls-indirect (param $x i32) (local $1 i32) (local.set $1 (local.get $x) @@ -475,7 +458,7 @@ (local.get $1) ) ) - (func $asyncify_start_unwind (; 7 ;) (param $0 i32) + (func $asyncify_start_unwind (param $0 i32) (global.set $__asyncify_state (i32.const 1) ) @@ -494,7 +477,7 @@ (unreachable) ) ) - (func $asyncify_stop_unwind (; 8 ;) + (func $asyncify_stop_unwind (global.set $__asyncify_state (i32.const 0) ) @@ -510,7 +493,7 @@ (unreachable) ) ) - (func $asyncify_start_rewind (; 9 ;) (param $0 i32) + (func $asyncify_start_rewind (param $0 i32) (global.set $__asyncify_state (i32.const 2) ) @@ -529,7 +512,7 @@ (unreachable) ) ) - (func $asyncify_stop_rewind (; 10 ;) + (func $asyncify_stop_rewind (global.set $__asyncify_state (i32.const 0) ) @@ -545,4 +528,7 @@ (unreachable) ) ) + (func $asyncify_get_state (result i32) + (global.get $__asyncify_state) + ) ) diff -Nru binaryen-91/test/passes/asyncify_pass-arg=asyncify-imports@env.import,env.import2.txt binaryen-99/test/passes/asyncify_pass-arg=asyncify-imports@env.import,env.import2.txt --- binaryen-91/test/passes/asyncify_pass-arg=asyncify-imports@env.import,env.import2.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/asyncify_pass-arg=asyncify-imports@env.import,env.import2.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,7 @@ (module (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) (memory $0 1 2) (global $sleeping (mut i32) (i32.const 0)) (global $__asyncify_state (mut i32) (i32.const 0)) @@ -9,7 +10,8 @@ (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) (export "asyncify_start_rewind" (func $asyncify_start_rewind)) (export "asyncify_stop_rewind" (func $asyncify_stop_rewind)) - (func $do_sleep (; 0 ;) + (export "asyncify_get_state" (func $asyncify_get_state)) + (func $do_sleep (local $0 i32) (local $1 i32) (local.set $0 @@ -38,7 +40,7 @@ ) ) ) - (func $work (; 1 ;) + (func $work (local $0 i32) (local $1 i32) (if @@ -141,10 +143,10 @@ ) (nop) ) - (func $stuff (; 2 ;) + (func $stuff (nop) ) - (func $first_event (; 3 ;) + (func $first_event (local $0 i32) (local $1 i32) (if @@ -231,18 +233,18 @@ ) (nop) ) - (func $second_event (; 4 ;) + (func $second_event (call $asyncify_start_rewind (i32.const 4) ) (call $work) ) - (func $never_sleep (; 5 ;) + (func $never_sleep (call $stuff) (call $stuff) (call $stuff) ) - (func $asyncify_start_unwind (; 6 ;) (param $0 i32) + (func $asyncify_start_unwind (param $0 i32) (global.set $__asyncify_state (i32.const 1) ) @@ -261,7 +263,7 @@ (unreachable) ) ) - (func $asyncify_stop_unwind (; 7 ;) + (func $asyncify_stop_unwind (global.set $__asyncify_state (i32.const 0) ) @@ -277,7 +279,7 @@ (unreachable) ) ) - (func $asyncify_start_rewind (; 8 ;) (param $0 i32) + (func $asyncify_start_rewind (param $0 i32) (global.set $__asyncify_state (i32.const 2) ) @@ -296,7 +298,7 @@ (unreachable) ) ) - (func $asyncify_stop_rewind (; 9 ;) + (func $asyncify_stop_rewind (global.set $__asyncify_state (i32.const 0) ) @@ -312,12 +314,15 @@ (unreachable) ) ) + (func $asyncify_get_state (result i32) + (global.get $__asyncify_state) + ) ) (module (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (import "env" "import" (func $import)) (import "env" "import2" (func $import2 (result i32))) (import "env" "import3" (func $import3 (param i32))) @@ -328,7 +333,8 @@ (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) (export "asyncify_start_rewind" (func $asyncify_start_rewind)) (export "asyncify_stop_rewind" (func $asyncify_stop_rewind)) - (func $calls-import (; 3 ;) + (export "asyncify_get_state" (func $asyncify_get_state)) + (func $calls-import (local $0 i32) (local $1 i32) (if @@ -415,7 +421,7 @@ ) (nop) ) - (func $calls-import2 (; 4 ;) (result i32) + (func $calls-import2 (result i32) (local $temp i32) (local $1 i32) (local $2 i32) @@ -438,7 +444,7 @@ (i32.load (global.get $__asyncify_data) ) - (i32.const -20) + (i32.const -4) ) ) (local.set $8 @@ -446,28 +452,8 @@ (global.get $__asyncify_data) ) ) - (local.set $temp - (i32.load - (local.get $8) - ) - ) (local.set $1 - (i32.load offset=4 - (local.get $8) - ) - ) - (local.set $2 - (i32.load offset=8 - (local.get $8) - ) - ) - (local.set $3 - (i32.load offset=12 - (local.get $8) - ) - ) - (local.set $4 - (i32.load offset=16 + (i32.load (local.get $8) ) ) @@ -502,55 +488,57 @@ ) ) (block - (if - (if (result i32) - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (i32.const 1) - (i32.eq - (local.get $6) - (i32.const 0) - ) - ) - (block - (local.set $7 - (call $import2) - ) - (if + (block + (if + (if (result i32) (i32.eq (global.get $__asyncify_state) - (i32.const 1) + (i32.const 0) ) - (br $__asyncify_unwind + (i32.const 1) + (i32.eq + (local.get $6) (i32.const 0) ) - (local.set $1 - (local.get $7) + ) + (block + (local.set $7 + (call $import2) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + (local.set $1 + (local.get $7) + ) ) ) ) - ) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (block - (local.set $temp - (local.get $1) - ) - (local.set $2 - (local.get $temp) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) ) - (return - (local.get $2) + (block + (local.set $temp + (local.get $1) + ) + (local.set $2 + (local.get $temp) + ) + (return + (local.get $2) + ) ) ) + (nop) + (nop) ) - (nop) - (nop) ) (unreachable) ) @@ -583,37 +571,21 @@ ) (i32.store (local.get $9) - (local.get $temp) - ) - (i32.store offset=4 - (local.get $9) (local.get $1) ) - (i32.store offset=8 - (local.get $9) - (local.get $2) - ) - (i32.store offset=12 - (local.get $9) - (local.get $3) - ) - (i32.store offset=16 - (local.get $9) - (local.get $4) - ) (i32.store (global.get $__asyncify_data) (i32.add (i32.load (global.get $__asyncify_data) ) - (i32.const 20) + (i32.const 4) ) ) ) (i32.const 0) ) - (func $calls-import2-drop (; 5 ;) + (func $calls-import2-drop (local $0 i32) (local $1 i32) (local $2 i32) @@ -759,7 +731,7 @@ ) ) ) - (func $calls-nothing (; 6 ;) + (func $calls-nothing (local $0 i32) (local.set $0 (i32.eqz @@ -770,7 +742,7 @@ (local.get $0) ) ) - (func $many-locals (; 7 ;) (param $x i32) (result i32) + (func $many-locals (param $x i32) (result i32) (local $y i32) (local $2 i32) (local $3 i32) @@ -796,7 +768,7 @@ (i32.load (global.get $__asyncify_data) ) - (i32.const -40) + (i32.const -4) ) ) (local.set $12 @@ -804,53 +776,8 @@ (global.get $__asyncify_data) ) ) - (local.set $x - (i32.load - (local.get $12) - ) - ) (local.set $y - (i32.load offset=4 - (local.get $12) - ) - ) - (local.set $2 - (i32.load offset=8 - (local.get $12) - ) - ) - (local.set $3 - (i32.load offset=12 - (local.get $12) - ) - ) - (local.set $4 - (i32.load offset=16 - (local.get $12) - ) - ) - (local.set $5 - (i32.load offset=20 - (local.get $12) - ) - ) - (local.set $6 - (i32.load offset=24 - (local.get $12) - ) - ) - (local.set $7 - (i32.load offset=28 - (local.get $12) - ) - ) - (local.set $8 - (i32.load offset=32 - (local.get $12) - ) - ) - (local.set $9 - (i32.load offset=36 + (i32.load (local.get $12) ) ) @@ -885,84 +812,86 @@ ) ) (block - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (loop $l - (local.set $2 - (local.get $y) - ) - (local.set $3 - (i32.add - (local.get $2) - (i32.const 1) - ) - ) - (local.set $x - (local.get $3) - ) - (local.set $4 - (local.get $x) - ) - (local.set $5 - (i32.div_s - (local.get $4) - (i32.const 3) - ) - ) - (local.set $y - (local.get $5) - ) - (local.set $6 - (local.get $y) - ) - (br_if $l - (local.get $6) - ) - ) - ) - (if - (if (result i32) + (block + (if (i32.eq (global.get $__asyncify_state) (i32.const 0) ) - (i32.const 1) - (i32.eq - (local.get $11) - (i32.const 0) + (loop $l + (local.set $2 + (local.get $y) + ) + (local.set $3 + (i32.add + (local.get $2) + (i32.const 1) + ) + ) + (local.set $x + (local.get $3) + ) + (local.set $4 + (local.get $x) + ) + (local.set $5 + (i32.div_s + (local.get $4) + (i32.const 3) + ) + ) + (local.set $y + (local.get $5) + ) + (local.set $6 + (local.get $y) + ) + (br_if $l + (local.get $6) + ) ) ) - (block - (call $import) - (if + (if + (if (result i32) (i32.eq (global.get $__asyncify_state) - (i32.const 1) + (i32.const 0) ) - (br $__asyncify_unwind + (i32.const 1) + (i32.eq + (local.get $11) (i32.const 0) ) ) + (block + (call $import) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + ) + ) ) - ) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (block - (local.set $7 - (local.get $y) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) ) - (return - (local.get $7) + (block + (local.set $7 + (local.get $y) + ) + (return + (local.get $7) + ) ) ) + (nop) ) - (nop) ) (unreachable) ) @@ -995,93 +924,30 @@ ) (i32.store (local.get $13) - (local.get $x) - ) - (i32.store offset=4 - (local.get $13) (local.get $y) ) - (i32.store offset=8 - (local.get $13) - (local.get $2) - ) - (i32.store offset=12 - (local.get $13) - (local.get $3) - ) - (i32.store offset=16 - (local.get $13) - (local.get $4) - ) - (i32.store offset=20 - (local.get $13) - (local.get $5) - ) - (i32.store offset=24 - (local.get $13) - (local.get $6) - ) - (i32.store offset=28 - (local.get $13) - (local.get $7) - ) - (i32.store offset=32 - (local.get $13) - (local.get $8) - ) - (i32.store offset=36 - (local.get $13) - (local.get $9) - ) (i32.store (global.get $__asyncify_data) (i32.add (i32.load (global.get $__asyncify_data) ) - (i32.const 40) + (i32.const 4) ) ) ) (i32.const 0) ) - (func $calls-import2-if (; 8 ;) (param $x i32) + (func $calls-import2-if (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) - (local $5 i32) (if (i32.eq (global.get $__asyncify_state) (i32.const 2) ) - (block - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const -8) - ) - ) - (local.set $4 - (i32.load - (global.get $__asyncify_data) - ) - ) - (local.set $x - (i32.load - (local.get $4) - ) - ) - (local.set $1 - (i32.load offset=4 - (local.get $4) - ) - ) - ) + (nop) ) (local.set $2 (block $__asyncify_unwind (result i32) @@ -1178,32 +1044,9 @@ ) ) ) - (block - (local.set $5 - (i32.load - (global.get $__asyncify_data) - ) - ) - (i32.store - (local.get $5) - (local.get $x) - ) - (i32.store offset=4 - (local.get $5) - (local.get $1) - ) - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const 8) - ) - ) - ) + (nop) ) - (func $calls-import2-if-else (; 9 ;) (param $x i32) + (func $calls-import2-if-else (param $x i32) (local $1 i32) (local.set $1 (local.get $x) @@ -1218,51 +1061,55 @@ ) ) ) - (func $calls-import2-if-else-oneside (; 10 ;) (param $x i32) (result i32) + (func $calls-import2-if-else-oneside (param $x i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (block - (local.set $1 - (local.get $x) - ) - (if - (local.get $1) - (return - (i32.const 1) + (block + (local.set $1 + (local.get $x) ) - (call $import3 - (i32.const 2) + (if + (local.get $1) + (return + (i32.const 1) + ) + (call $import3 + (i32.const 2) + ) ) ) - ) - (return - (i32.const 3) + (return + (i32.const 3) + ) ) ) - (func $calls-import2-if-else-oneside2 (; 11 ;) (param $x i32) (result i32) + (func $calls-import2-if-else-oneside2 (param $x i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) (block - (local.set $1 - (local.get $x) - ) - (if - (local.get $1) - (call $import3 - (i32.const 1) + (block + (local.set $1 + (local.get $x) ) - (return - (i32.const 2) + (if + (local.get $1) + (call $import3 + (i32.const 1) + ) + (return + (i32.const 2) + ) ) ) - ) - (return - (i32.const 3) + (return + (i32.const 3) + ) ) ) - (func $calls-loop (; 12 ;) (param $x i32) + (func $calls-loop (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1290,7 +1137,7 @@ ) ) ) - (func $calls-loop2 (; 13 ;) + (func $calls-loop2 (local $0 i32) (local $1 i32) (local $2 i32) @@ -1436,7 +1283,7 @@ ) ) ) - (func $calls-mix (; 14 ;) + (func $calls-mix (local $0 i32) (local $1 i32) (if @@ -1564,10 +1411,10 @@ ) (nop) ) - (func $boring (; 15 ;) + (func $boring (nop) ) - (func $calls-mix-deep (; 16 ;) + (func $calls-mix-deep (local $0 i32) (local $1 i32) (if @@ -1695,10 +1542,10 @@ ) (nop) ) - (func $boring-deep (; 17 ;) + (func $boring-deep (call $boring) ) - (func $import-deep (; 18 ;) + (func $import-deep (local $0 i32) (local $1 i32) (if @@ -1785,7 +1632,7 @@ ) (nop) ) - (func $asyncify_start_unwind (; 19 ;) (param $0 i32) + (func $asyncify_start_unwind (param $0 i32) (global.set $__asyncify_state (i32.const 1) ) @@ -1804,7 +1651,7 @@ (unreachable) ) ) - (func $asyncify_stop_unwind (; 20 ;) + (func $asyncify_stop_unwind (global.set $__asyncify_state (i32.const 0) ) @@ -1820,7 +1667,7 @@ (unreachable) ) ) - (func $asyncify_start_rewind (; 21 ;) (param $0 i32) + (func $asyncify_start_rewind (param $0 i32) (global.set $__asyncify_state (i32.const 2) ) @@ -1839,7 +1686,7 @@ (unreachable) ) ) - (func $asyncify_stop_rewind (; 22 ;) + (func $asyncify_stop_rewind (global.set $__asyncify_state (i32.const 0) ) @@ -1855,4 +1702,7 @@ (unreachable) ) ) + (func $asyncify_get_state (result i32) + (global.get $__asyncify_state) + ) ) diff -Nru binaryen-91/test/passes/asyncify_pass-arg=asyncify-onlylist@foo,bar.txt binaryen-99/test/passes/asyncify_pass-arg=asyncify-onlylist@foo,bar.txt --- binaryen-91/test/passes/asyncify_pass-arg=asyncify-onlylist@foo,bar.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/asyncify_pass-arg=asyncify-onlylist@foo,bar.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,270 @@ +(module + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) + (import "env" "import" (func $import)) + (memory $0 1 2) + (global $__asyncify_state (mut i32) (i32.const 0)) + (global $__asyncify_data (mut i32) (i32.const 0)) + (export "asyncify_start_unwind" (func $asyncify_start_unwind)) + (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) + (export "asyncify_start_rewind" (func $asyncify_start_rewind)) + (export "asyncify_stop_rewind" (func $asyncify_stop_rewind)) + (export "asyncify_get_state" (func $asyncify_get_state)) + (func $foo + (local $0 i32) + (local $1 i32) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (nop) + ) + (local.set $0 + (block $__asyncify_unwind (result i32) + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $1 + (i32.load + (i32.load + (global.get $__asyncify_data) + ) + ) + ) + ) + ) + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $1) + (i32.const 0) + ) + ) + (block + (call $import) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + ) + ) + ) + ) + (return) + ) + ) + ) + (block + (i32.store + (i32.load + (global.get $__asyncify_data) + ) + (local.get $0) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (nop) + ) + (func $bar + (local $0 i32) + (local $1 i32) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (nop) + ) + (local.set $0 + (block $__asyncify_unwind (result i32) + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $1 + (i32.load + (i32.load + (global.get $__asyncify_data) + ) + ) + ) + ) + ) + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $1) + (i32.const 0) + ) + ) + (block + (call $import) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + ) + ) + ) + ) + (return) + ) + ) + ) + (block + (i32.store + (i32.load + (global.get $__asyncify_data) + ) + (local.get $0) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (nop) + ) + (func $baz + (call $import) + ) + (func $other1 + (call $foo) + ) + (func $other2 + (call $baz) + ) + (func $asyncify_start_unwind (param $0 i32) + (global.set $__asyncify_state + (i32.const 1) + ) + (global.set $__asyncify_data + (local.get $0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_stop_unwind + (global.set $__asyncify_state + (i32.const 0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_start_rewind (param $0 i32) + (global.set $__asyncify_state + (i32.const 2) + ) + (global.set $__asyncify_data + (local.get $0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_stop_rewind + (global.set $__asyncify_state + (i32.const 0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_get_state (result i32) + (global.get $__asyncify_state) + ) +) diff -Nru binaryen-91/test/passes/asyncify_pass-arg=asyncify-onlylist@foo,bar.wast binaryen-99/test/passes/asyncify_pass-arg=asyncify-onlylist@foo,bar.wast --- binaryen-91/test/passes/asyncify_pass-arg=asyncify-onlylist@foo,bar.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/asyncify_pass-arg=asyncify-onlylist@foo,bar.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,20 @@ +(module + (memory 1 2) + (import "env" "import" (func $import)) + (func $foo + (call $import) + ) + (func $bar + (call $import) + ) + (func $baz + (call $import) + ) + (func $other1 + (call $foo) ;; even though we call foo, we are not in the only list, so do not instrument us + ) + (func $other2 + (call $baz) + ) +) + diff -Nru binaryen-91/test/passes/asyncify_pass-arg=asyncify-verbose.txt binaryen-99/test/passes/asyncify_pass-arg=asyncify-verbose.txt --- binaryen-91/test/passes/asyncify_pass-arg=asyncify-verbose.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/asyncify_pass-arg=asyncify-verbose.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,355 @@ +[asyncify] import is an import that can change the state +[asyncify] calls-import can change the state due to import +[asyncify] calls-calls-import can change the state due to calls-import +[asyncify] calls-calls-calls-import can change the state due to calls-calls-import +(module + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) + (import "env" "import" (func $import)) + (memory $0 1 2) + (global $__asyncify_state (mut i32) (i32.const 0)) + (global $__asyncify_data (mut i32) (i32.const 0)) + (export "asyncify_start_unwind" (func $asyncify_start_unwind)) + (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) + (export "asyncify_start_rewind" (func $asyncify_start_rewind)) + (export "asyncify_stop_rewind" (func $asyncify_stop_rewind)) + (export "asyncify_get_state" (func $asyncify_get_state)) + (func $calls-import + (local $0 i32) + (local $1 i32) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (nop) + ) + (local.set $0 + (block $__asyncify_unwind (result i32) + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $1 + (i32.load + (i32.load + (global.get $__asyncify_data) + ) + ) + ) + ) + ) + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $1) + (i32.const 0) + ) + ) + (block + (call $import) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + ) + ) + ) + ) + (return) + ) + ) + ) + (block + (i32.store + (i32.load + (global.get $__asyncify_data) + ) + (local.get $0) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (nop) + ) + (func $calls-calls-import + (local $0 i32) + (local $1 i32) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (nop) + ) + (local.set $0 + (block $__asyncify_unwind (result i32) + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $1 + (i32.load + (i32.load + (global.get $__asyncify_data) + ) + ) + ) + ) + ) + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $1) + (i32.const 0) + ) + ) + (block + (call $calls-import) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + ) + ) + ) + ) + (return) + ) + ) + ) + (block + (i32.store + (i32.load + (global.get $__asyncify_data) + ) + (local.get $0) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (nop) + ) + (func $calls-calls-calls-import + (local $0 i32) + (local $1 i32) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (nop) + ) + (local.set $0 + (block $__asyncify_unwind (result i32) + (block + (block + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 2) + ) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $1 + (i32.load + (i32.load + (global.get $__asyncify_data) + ) + ) + ) + ) + ) + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $1) + (i32.const 0) + ) + ) + (block + (call $calls-calls-import) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + ) + ) + ) + ) + (return) + ) + ) + ) + (block + (i32.store + (i32.load + (global.get $__asyncify_data) + ) + (local.get $0) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (nop) + ) + (func $nothing + (nop) + ) + (func $asyncify_start_unwind (param $0 i32) + (global.set $__asyncify_state + (i32.const 1) + ) + (global.set $__asyncify_data + (local.get $0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_stop_unwind + (global.set $__asyncify_state + (i32.const 0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_start_rewind (param $0 i32) + (global.set $__asyncify_state + (i32.const 2) + ) + (global.set $__asyncify_data + (local.get $0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_stop_rewind + (global.set $__asyncify_state + (i32.const 0) + ) + (if + (i32.gt_u + (i32.load + (global.get $__asyncify_data) + ) + (i32.load offset=4 + (global.get $__asyncify_data) + ) + ) + (unreachable) + ) + ) + (func $asyncify_get_state (result i32) + (global.get $__asyncify_state) + ) +) diff -Nru binaryen-91/test/passes/asyncify_pass-arg=asyncify-verbose.wast binaryen-99/test/passes/asyncify_pass-arg=asyncify-verbose.wast --- binaryen-91/test/passes/asyncify_pass-arg=asyncify-verbose.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/asyncify_pass-arg=asyncify-verbose.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,17 @@ +(module + (memory 1 2) + (import "env" "import" (func $import)) + (func $calls-import + (call $import) + ) + (func $calls-calls-import + (call $calls-import) + ) + (func $calls-calls-calls-import + (call $calls-calls-import) + ) + (func $nothing + (nop) + ) +) + diff -Nru binaryen-91/test/passes/asyncify_pass-arg=asyncify-whitelist@foo,bar.txt binaryen-99/test/passes/asyncify_pass-arg=asyncify-whitelist@foo,bar.txt --- binaryen-91/test/passes/asyncify_pass-arg=asyncify-whitelist@foo,bar.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/asyncify_pass-arg=asyncify-whitelist@foo,bar.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,265 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (import "env" "import" (func $import)) - (memory $0 1 2) - (global $__asyncify_state (mut i32) (i32.const 0)) - (global $__asyncify_data (mut i32) (i32.const 0)) - (export "asyncify_start_unwind" (func $asyncify_start_unwind)) - (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) - (export "asyncify_start_rewind" (func $asyncify_start_rewind)) - (export "asyncify_stop_rewind" (func $asyncify_stop_rewind)) - (func $foo (; 1 ;) - (local $0 i32) - (local $1 i32) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - (nop) - ) - (local.set $0 - (block $__asyncify_unwind (result i32) - (block - (block - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - (block - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const -4) - ) - ) - (local.set $1 - (i32.load - (i32.load - (global.get $__asyncify_data) - ) - ) - ) - ) - ) - (if - (if (result i32) - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (i32.const 1) - (i32.eq - (local.get $1) - (i32.const 0) - ) - ) - (block - (call $import) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 1) - ) - (br $__asyncify_unwind - (i32.const 0) - ) - ) - ) - ) - ) - (return) - ) - ) - ) - (block - (i32.store - (i32.load - (global.get $__asyncify_data) - ) - (local.get $0) - ) - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const 4) - ) - ) - ) - (nop) - ) - (func $bar (; 2 ;) - (local $0 i32) - (local $1 i32) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - (nop) - ) - (local.set $0 - (block $__asyncify_unwind (result i32) - (block - (block - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - (block - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const -4) - ) - ) - (local.set $1 - (i32.load - (i32.load - (global.get $__asyncify_data) - ) - ) - ) - ) - ) - (if - (if (result i32) - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (i32.const 1) - (i32.eq - (local.get $1) - (i32.const 0) - ) - ) - (block - (call $import) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 1) - ) - (br $__asyncify_unwind - (i32.const 0) - ) - ) - ) - ) - ) - (return) - ) - ) - ) - (block - (i32.store - (i32.load - (global.get $__asyncify_data) - ) - (local.get $0) - ) - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const 4) - ) - ) - ) - (nop) - ) - (func $baz (; 3 ;) - (call $import) - ) - (func $other1 (; 4 ;) - (call $foo) - ) - (func $other2 (; 5 ;) - (call $baz) - ) - (func $asyncify_start_unwind (; 6 ;) (param $0 i32) - (global.set $__asyncify_state - (i32.const 1) - ) - (global.set $__asyncify_data - (local.get $0) - ) - (if - (i32.gt_u - (i32.load - (global.get $__asyncify_data) - ) - (i32.load offset=4 - (global.get $__asyncify_data) - ) - ) - (unreachable) - ) - ) - (func $asyncify_stop_unwind (; 7 ;) - (global.set $__asyncify_state - (i32.const 0) - ) - (if - (i32.gt_u - (i32.load - (global.get $__asyncify_data) - ) - (i32.load offset=4 - (global.get $__asyncify_data) - ) - ) - (unreachable) - ) - ) - (func $asyncify_start_rewind (; 8 ;) (param $0 i32) - (global.set $__asyncify_state - (i32.const 2) - ) - (global.set $__asyncify_data - (local.get $0) - ) - (if - (i32.gt_u - (i32.load - (global.get $__asyncify_data) - ) - (i32.load offset=4 - (global.get $__asyncify_data) - ) - ) - (unreachable) - ) - ) - (func $asyncify_stop_rewind (; 9 ;) - (global.set $__asyncify_state - (i32.const 0) - ) - (if - (i32.gt_u - (i32.load - (global.get $__asyncify_data) - ) - (i32.load offset=4 - (global.get $__asyncify_data) - ) - ) - (unreachable) - ) - ) -) diff -Nru binaryen-91/test/passes/asyncify_pass-arg=asyncify-whitelist@foo,bar.wast binaryen-99/test/passes/asyncify_pass-arg=asyncify-whitelist@foo,bar.wast --- binaryen-91/test/passes/asyncify_pass-arg=asyncify-whitelist@foo,bar.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/asyncify_pass-arg=asyncify-whitelist@foo,bar.wast 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -(module - (memory 1 2) - (import "env" "import" (func $import)) - (func $foo - (call $import) - ) - (func $bar - (call $import) - ) - (func $baz - (call $import) - ) - (func $other1 - (call $foo) ;; even though we call foo, we are not in the whitelist, so do not instrument us - ) - (func $other2 - (call $baz) - ) -) - diff -Nru binaryen-91/test/passes/asyncify.txt binaryen-99/test/passes/asyncify.txt --- binaryen-91/test/passes/asyncify.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/asyncify.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,1437 +1,31 @@ (module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (memory $0 1 2) - (global $sleeping (mut i32) (i32.const 0)) - (global $__asyncify_state (mut i32) (i32.const 0)) - (global $__asyncify_data (mut i32) (i32.const 0)) - (export "asyncify_start_unwind" (func $asyncify_start_unwind)) - (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) - (export "asyncify_start_rewind" (func $asyncify_start_rewind)) - (export "asyncify_stop_rewind" (func $asyncify_stop_rewind)) - (func $do_sleep (; 0 ;) - (local $0 i32) - (local $1 i32) - (local.set $0 - (global.get $sleeping) - ) - (local.set $1 - (i32.eqz - (local.get $0) - ) - ) - (if - (local.get $1) - (block $block - (global.set $sleeping - (i32.const 1) - ) - (call $asyncify_start_unwind - (i32.const 4) - ) - ) - (block $block0 - (global.set $sleeping - (i32.const 0) - ) - (call $asyncify_stop_rewind) - ) - ) - ) - (func $work (; 1 ;) - (local $0 i32) - (local $1 i32) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - (nop) - ) - (local.set $0 - (block $__asyncify_unwind (result i32) - (block - (block - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - (block - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const -4) - ) - ) - (local.set $1 - (i32.load - (i32.load - (global.get $__asyncify_data) - ) - ) - ) - ) - ) - (block - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (call $stuff) - ) - (if - (if (result i32) - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (i32.const 1) - (i32.eq - (local.get $1) - (i32.const 0) - ) - ) - (block - (call $do_sleep) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 1) - ) - (br $__asyncify_unwind - (i32.const 0) - ) - ) - ) - ) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (call $stuff) - ) - ) - ) - (return) - ) - ) - ) - (block - (i32.store - (i32.load - (global.get $__asyncify_data) - ) - (local.get $0) - ) - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const 4) - ) - ) - ) - (nop) - ) - (func $stuff (; 2 ;) - (nop) - ) - (func $first_event (; 3 ;) - (local $0 i32) - (local $1 i32) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - (nop) - ) - (local.set $0 - (block $__asyncify_unwind (result i32) - (block - (block - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - (block - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const -4) - ) - ) - (local.set $1 - (i32.load - (i32.load - (global.get $__asyncify_data) - ) - ) - ) - ) - ) - (if - (if (result i32) - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (i32.const 1) - (i32.eq - (local.get $1) - (i32.const 0) - ) - ) - (block - (call $work) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 1) - ) - (br $__asyncify_unwind - (i32.const 0) - ) - ) - ) - ) - ) - (return) - ) - ) - ) - (block - (i32.store - (i32.load - (global.get $__asyncify_data) - ) - (local.get $0) - ) - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const 4) - ) - ) - ) - (nop) - ) - (func $second_event (; 4 ;) - (call $asyncify_stop_unwind) - (call $asyncify_start_rewind - (i32.const 4) - ) - (call $work) - ) - (func $never_sleep (; 5 ;) - (call $stuff) - (call $stuff) - (call $stuff) - ) - (func $asyncify_start_unwind (; 6 ;) (param $0 i32) - (global.set $__asyncify_state - (i32.const 1) - ) - (global.set $__asyncify_data - (local.get $0) - ) - (if - (i32.gt_u - (i32.load - (global.get $__asyncify_data) - ) - (i32.load offset=4 - (global.get $__asyncify_data) - ) - ) - (unreachable) - ) - ) - (func $asyncify_stop_unwind (; 7 ;) - (global.set $__asyncify_state - (i32.const 0) - ) - (if - (i32.gt_u - (i32.load - (global.get $__asyncify_data) - ) - (i32.load offset=4 - (global.get $__asyncify_data) - ) - ) - (unreachable) - ) - ) - (func $asyncify_start_rewind (; 8 ;) (param $0 i32) - (global.set $__asyncify_state - (i32.const 2) - ) - (global.set $__asyncify_data - (local.get $0) - ) - (if - (i32.gt_u - (i32.load - (global.get $__asyncify_data) - ) - (i32.load offset=4 - (global.get $__asyncify_data) - ) - ) - (unreachable) - ) - ) - (func $asyncify_stop_rewind (; 9 ;) - (global.set $__asyncify_state - (i32.const 0) - ) - (if - (i32.gt_u - (i32.load - (global.get $__asyncify_data) - ) - (i32.load offset=4 - (global.get $__asyncify_data) - ) - ) - (unreachable) - ) - ) -) -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "import" (func $import)) - (import "env" "import2" (func $import2 (result i32))) - (import "env" "import3" (func $import3 (param i32))) - (memory $0 1 2) - (global $__asyncify_state (mut i32) (i32.const 0)) - (global $__asyncify_data (mut i32) (i32.const 0)) - (export "asyncify_start_unwind" (func $asyncify_start_unwind)) - (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) - (export "asyncify_start_rewind" (func $asyncify_start_rewind)) - (export "asyncify_stop_rewind" (func $asyncify_stop_rewind)) - (func $calls-import (; 3 ;) - (local $0 i32) - (local $1 i32) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - (nop) - ) - (local.set $0 - (block $__asyncify_unwind (result i32) - (block - (block - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - (block - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const -4) - ) - ) - (local.set $1 - (i32.load - (i32.load - (global.get $__asyncify_data) - ) - ) - ) - ) - ) - (if - (if (result i32) - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (i32.const 1) - (i32.eq - (local.get $1) - (i32.const 0) - ) - ) - (block - (call $import) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 1) - ) - (br $__asyncify_unwind - (i32.const 0) - ) - ) - ) - ) - ) - (return) - ) - ) - ) - (block - (i32.store - (i32.load - (global.get $__asyncify_data) - ) - (local.get $0) - ) - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const 4) - ) - ) - ) - (nop) - ) - (func $calls-import2 (; 4 ;) (result i32) - (local $temp i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - (block - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const -20) - ) - ) - (local.set $8 - (i32.load - (global.get $__asyncify_data) - ) - ) - (local.set $temp - (i32.load - (local.get $8) - ) - ) - (local.set $1 - (i32.load offset=4 - (local.get $8) - ) - ) - (local.set $2 - (i32.load offset=8 - (local.get $8) - ) - ) - (local.set $3 - (i32.load offset=12 - (local.get $8) - ) - ) - (local.set $4 - (i32.load offset=16 - (local.get $8) - ) - ) - ) - ) - (local.set $5 - (block $__asyncify_unwind (result i32) - (block - (block - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - (block - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const -4) - ) - ) - (local.set $6 - (i32.load - (i32.load - (global.get $__asyncify_data) - ) - ) - ) - ) - ) - (block - (if - (if (result i32) - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (i32.const 1) - (i32.eq - (local.get $6) - (i32.const 0) - ) - ) - (block - (local.set $7 - (call $import2) - ) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 1) - ) - (br $__asyncify_unwind - (i32.const 0) - ) - (local.set $1 - (local.get $7) - ) - ) - ) - ) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (block - (local.set $temp - (local.get $1) - ) - (local.set $2 - (local.get $temp) - ) - (return - (local.get $2) - ) - ) - ) - (nop) - (nop) - ) - (unreachable) - ) - (unreachable) - ) - ) - ) - (block - (i32.store - (i32.load - (global.get $__asyncify_data) - ) - (local.get $5) - ) - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const 4) - ) - ) - ) - (block - (local.set $9 - (i32.load - (global.get $__asyncify_data) - ) - ) - (i32.store - (local.get $9) - (local.get $temp) - ) - (i32.store offset=4 - (local.get $9) - (local.get $1) - ) - (i32.store offset=8 - (local.get $9) - (local.get $2) - ) - (i32.store offset=12 - (local.get $9) - (local.get $3) - ) - (i32.store offset=16 - (local.get $9) - (local.get $4) - ) - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const 20) - ) - ) - ) - (i32.const 0) - ) - (func $calls-import2-drop (; 5 ;) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - (block - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const -4) - ) - ) - (local.set $4 - (i32.load - (global.get $__asyncify_data) - ) - ) - (local.set $0 - (i32.load - (local.get $4) - ) - ) - ) - ) - (local.set $1 - (block $__asyncify_unwind (result i32) - (block - (block - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - (block - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const -4) - ) - ) - (local.set $2 - (i32.load - (i32.load - (global.get $__asyncify_data) - ) - ) - ) - ) - ) - (block - (if - (if (result i32) - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (i32.const 1) - (i32.eq - (local.get $2) - (i32.const 0) - ) - ) - (block - (local.set $3 - (call $import2) - ) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 1) - ) - (br $__asyncify_unwind - (i32.const 0) - ) - (local.set $0 - (local.get $3) - ) - ) - ) - ) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (drop - (local.get $0) - ) - ) - ) - ) - (return) - ) - ) - ) - (block - (i32.store - (i32.load - (global.get $__asyncify_data) - ) - (local.get $1) - ) - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const 4) - ) - ) - ) - (block - (local.set $5 - (i32.load - (global.get $__asyncify_data) - ) - ) - (i32.store - (local.get $5) - (local.get $0) - ) - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const 4) - ) - ) - ) - ) - (func $calls-nothing (; 6 ;) - (local $0 i32) - (local.set $0 - (i32.eqz - (i32.const 17) - ) - ) - (drop - (local.get $0) - ) - ) - (func $many-locals (; 7 ;) (param $x i32) (result i32) - (local $y i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - (block - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const -40) - ) - ) - (local.set $12 - (i32.load - (global.get $__asyncify_data) - ) - ) - (local.set $x - (i32.load - (local.get $12) - ) - ) - (local.set $y - (i32.load offset=4 - (local.get $12) - ) - ) - (local.set $2 - (i32.load offset=8 - (local.get $12) - ) - ) - (local.set $3 - (i32.load offset=12 - (local.get $12) - ) - ) - (local.set $4 - (i32.load offset=16 - (local.get $12) - ) - ) - (local.set $5 - (i32.load offset=20 - (local.get $12) - ) - ) - (local.set $6 - (i32.load offset=24 - (local.get $12) - ) - ) - (local.set $7 - (i32.load offset=28 - (local.get $12) - ) - ) - (local.set $8 - (i32.load offset=32 - (local.get $12) - ) - ) - (local.set $9 - (i32.load offset=36 - (local.get $12) - ) - ) - ) - ) - (local.set $10 - (block $__asyncify_unwind (result i32) - (block - (block - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - (block - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const -4) - ) - ) - (local.set $11 - (i32.load - (i32.load - (global.get $__asyncify_data) - ) - ) - ) - ) - ) - (block - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (loop $l - (local.set $2 - (local.get $y) - ) - (local.set $3 - (i32.add - (local.get $2) - (i32.const 1) - ) - ) - (local.set $x - (local.get $3) - ) - (local.set $4 - (local.get $x) - ) - (local.set $5 - (i32.div_s - (local.get $4) - (i32.const 3) - ) - ) - (local.set $y - (local.get $5) - ) - (local.set $6 - (local.get $y) - ) - (br_if $l - (local.get $6) - ) - ) - ) - (if - (if (result i32) - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (i32.const 1) - (i32.eq - (local.get $11) - (i32.const 0) - ) - ) - (block - (call $import) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 1) - ) - (br $__asyncify_unwind - (i32.const 0) - ) - ) - ) - ) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (block - (local.set $7 - (local.get $y) - ) - (return - (local.get $7) - ) - ) - ) - (nop) - ) - (unreachable) - ) - (unreachable) - ) - ) - ) - (block - (i32.store - (i32.load - (global.get $__asyncify_data) - ) - (local.get $10) - ) - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const 4) - ) - ) - ) - (block - (local.set $13 - (i32.load - (global.get $__asyncify_data) - ) - ) - (i32.store - (local.get $13) - (local.get $x) - ) - (i32.store offset=4 - (local.get $13) - (local.get $y) - ) - (i32.store offset=8 - (local.get $13) - (local.get $2) - ) - (i32.store offset=12 - (local.get $13) - (local.get $3) - ) - (i32.store offset=16 - (local.get $13) - (local.get $4) - ) - (i32.store offset=20 - (local.get $13) - (local.get $5) - ) - (i32.store offset=24 - (local.get $13) - (local.get $6) - ) - (i32.store offset=28 - (local.get $13) - (local.get $7) - ) - (i32.store offset=32 - (local.get $13) - (local.get $8) - ) - (i32.store offset=36 - (local.get $13) - (local.get $9) - ) - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const 40) - ) - ) - ) - (i32.const 0) - ) - (func $calls-import2-if (; 8 ;) (param $x i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - (block - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const -8) - ) - ) - (local.set $4 - (i32.load - (global.get $__asyncify_data) - ) - ) - (local.set $x - (i32.load - (local.get $4) - ) - ) - (local.set $1 - (i32.load offset=4 - (local.get $4) - ) - ) - ) - ) - (local.set $2 - (block $__asyncify_unwind (result i32) - (block - (block - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - (block - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const -4) - ) - ) - (local.set $3 - (i32.load - (i32.load - (global.get $__asyncify_data) - ) - ) - ) - ) - ) - (block - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (local.set $1 - (local.get $x) - ) - ) - (if - (i32.or - (local.get $1) - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - ) - (if - (if (result i32) - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (i32.const 1) - (i32.eq - (local.get $3) - (i32.const 0) - ) - ) - (block - (call $import) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 1) - ) - (br $__asyncify_unwind - (i32.const 0) - ) - ) - ) - ) - ) - ) - ) - (return) - ) - ) - ) - (block - (i32.store - (i32.load - (global.get $__asyncify_data) - ) - (local.get $2) - ) - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const 4) - ) - ) - ) - (block - (local.set $5 - (i32.load - (global.get $__asyncify_data) - ) - ) - (i32.store - (local.get $5) - (local.get $x) - ) - (i32.store offset=4 - (local.get $5) - (local.get $1) - ) - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const 8) - ) - ) - ) - ) - (func $calls-import2-if-else (; 9 ;) (param $x i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - (block - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const -12) - ) - ) - (local.set $5 - (i32.load - (global.get $__asyncify_data) - ) - ) - (local.set $x - (i32.load - (local.get $5) - ) - ) - (local.set $1 - (i32.load offset=4 - (local.get $5) - ) - ) - (local.set $2 - (i32.load offset=8 - (local.get $5) - ) - ) - ) - ) - (local.set $3 - (block $__asyncify_unwind (result i32) - (block - (block - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - (block - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const -4) - ) - ) - (local.set $4 - (i32.load - (i32.load - (global.get $__asyncify_data) - ) - ) - ) - ) - ) - (block - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (local.set $1 - (local.get $x) - ) - ) - (block - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (local.set $2 - (local.get $1) - ) - ) - (if - (i32.or - (local.get $2) - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - ) - (if - (if (result i32) - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (i32.const 1) - (i32.eq - (local.get $4) - (i32.const 0) - ) - ) - (block - (call $import3 - (i32.const 1) - ) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 1) - ) - (br $__asyncify_unwind - (i32.const 0) - ) - ) - ) - ) - ) - (if - (i32.or - (i32.eqz - (local.get $2) - ) - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - ) - (if - (if (result i32) - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (i32.const 1) - (i32.eq - (local.get $4) - (i32.const 1) - ) - ) - (block - (call $import3 - (i32.const 2) - ) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 1) - ) - (br $__asyncify_unwind - (i32.const 1) - ) - ) - ) - ) - ) - ) - ) - ) - (return) - ) - ) - ) - (block - (i32.store - (i32.load - (global.get $__asyncify_data) - ) - (local.get $3) - ) - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const 4) - ) - ) - ) - (block - (local.set $6 - (i32.load - (global.get $__asyncify_data) - ) - ) - (i32.store - (local.get $6) - (local.get $x) - ) - (i32.store offset=4 - (local.get $6) - (local.get $1) - ) - (i32.store offset=8 - (local.get $6) - (local.get $2) - ) - (i32.store - (global.get $__asyncify_data) - (i32.add - (i32.load - (global.get $__asyncify_data) - ) - (i32.const 12) - ) - ) - ) - ) - (func $calls-import2-if-else-oneside (; 10 ;) (param $x i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (import "env" "import" (func $import)) + (import "env" "import2" (func $import2 (param i32))) + (memory $0 1 2) + (table $0 2 2 funcref) + (elem (i32.const 0) $liveness2 $liveness2) + (global $__asyncify_state (mut i32) (i32.const 0)) + (global $__asyncify_data (mut i32) (i32.const 0)) + (export "asyncify_start_unwind" (func $asyncify_start_unwind)) + (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) + (export "asyncify_start_rewind" (func $asyncify_start_rewind)) + (export "asyncify_stop_rewind" (func $asyncify_stop_rewind)) + (export "asyncify_get_state" (func $asyncify_get_state)) + (func $liveness1 (param $live0 i32) (param $dead0 i32) + (local $live1 i32) + (local $dead1 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) (if (i32.eq (global.get $__asyncify_state) @@ -1444,42 +38,27 @@ (i32.load (global.get $__asyncify_data) ) - (i32.const -20) + (i32.const -8) ) ) - (local.set $7 + (local.set $10 (i32.load (global.get $__asyncify_data) ) ) - (local.set $x + (local.set $live0 (i32.load - (local.get $7) + (local.get $10) ) ) - (local.set $1 + (local.set $live1 (i32.load offset=4 - (local.get $7) - ) - ) - (local.set $2 - (i32.load offset=8 - (local.get $7) - ) - ) - (local.set $3 - (i32.load offset=12 - (local.get $7) - ) - ) - (local.set $4 - (i32.load offset=16 - (local.get $7) + (local.get $10) ) ) ) ) - (local.set $5 + (local.set $8 (block $__asyncify_unwind (result i32) (block (block @@ -1498,7 +77,7 @@ (i32.const -4) ) ) - (local.set $6 + (local.set $9 (i32.load (i32.load (global.get $__asyncify_data) @@ -1508,80 +87,50 @@ ) ) (block - (block - (if + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (block + (local.set $4 + (local.get $dead0) + ) + (drop + (local.get $4) + ) + (local.set $5 + (local.get $dead1) + ) + (drop + (local.get $5) + ) + ) + ) + (nop) + (nop) + (nop) + (if + (if (result i32) (i32.eq (global.get $__asyncify_state) (i32.const 0) ) - (local.set $1 - (local.get $x) + (i32.const 1) + (i32.eq + (local.get $9) + (i32.const 0) ) ) (block + (call $import) (if (i32.eq (global.get $__asyncify_state) - (i32.const 0) - ) - (local.set $4 - (local.get $1) - ) - ) - (if - (i32.or - (local.get $4) - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - ) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (return - (i32.const 1) - ) - ) - ) - (if - (i32.or - (i32.eqz - (local.get $4) - ) - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) + (i32.const 1) ) - (if - (if (result i32) - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (i32.const 1) - (i32.eq - (local.get $6) - (i32.const 0) - ) - ) - (block - (call $import3 - (i32.const 2) - ) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 1) - ) - (br $__asyncify_unwind - (i32.const 0) - ) - ) - ) + (br $__asyncify_unwind + (i32.const 0) ) ) ) @@ -1591,14 +140,27 @@ (global.get $__asyncify_state) (i32.const 0) ) - (return - (i32.const 3) + (block + (local.set $6 + (local.get $live0) + ) + (drop + (local.get $6) + ) + (local.set $7 + (local.get $live1) + ) + (drop + (local.get $7) + ) ) ) + (nop) + (nop) + (nop) ) - (unreachable) ) - (unreachable) + (return) ) ) ) @@ -1607,7 +169,7 @@ (i32.load (global.get $__asyncify_data) ) - (local.get $5) + (local.get $8) ) (i32.store (global.get $__asyncify_data) @@ -1620,30 +182,18 @@ ) ) (block - (local.set $8 + (local.set $11 (i32.load (global.get $__asyncify_data) ) ) (i32.store - (local.get $8) - (local.get $x) + (local.get $11) + (local.get $live0) ) (i32.store offset=4 - (local.get $8) - (local.get $1) - ) - (i32.store offset=8 - (local.get $8) - (local.get $2) - ) - (i32.store offset=12 - (local.get $8) - (local.get $3) - ) - (i32.store offset=16 - (local.get $8) - (local.get $4) + (local.get $11) + (local.get $live1) ) (i32.store (global.get $__asyncify_data) @@ -1651,21 +201,22 @@ (i32.load (global.get $__asyncify_data) ) - (i32.const 20) + (i32.const 8) ) ) ) - (i32.const 0) ) - (func $calls-import2-if-else-oneside2 (; 11 ;) (param $x i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + (func $liveness2 (param $live0 i32) (param $dead0 i32) + (local $live1 i32) + (local $dead1 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) (if (i32.eq (global.get $__asyncify_state) @@ -1678,42 +229,27 @@ (i32.load (global.get $__asyncify_data) ) - (i32.const -20) + (i32.const -8) ) ) - (local.set $7 + (local.set $10 (i32.load (global.get $__asyncify_data) ) ) - (local.set $x + (local.set $live0 (i32.load - (local.get $7) + (local.get $10) ) ) - (local.set $1 + (local.set $live1 (i32.load offset=4 - (local.get $7) - ) - ) - (local.set $2 - (i32.load offset=8 - (local.get $7) - ) - ) - (local.set $3 - (i32.load offset=12 - (local.get $7) - ) - ) - (local.set $4 - (i32.load offset=16 - (local.get $7) + (local.get $10) ) ) ) ) - (local.set $5 + (local.set $8 (block $__asyncify_unwind (result i32) (block (block @@ -1732,7 +268,7 @@ (i32.const -4) ) ) - (local.set $6 + (local.set $9 (i32.load (i32.load (global.get $__asyncify_data) @@ -1742,80 +278,50 @@ ) ) (block - (block - (if + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (block + (local.set $4 + (local.get $dead0) + ) + (drop + (local.get $4) + ) + (local.set $5 + (local.get $dead1) + ) + (drop + (local.get $5) + ) + ) + ) + (nop) + (nop) + (nop) + (if + (if (result i32) (i32.eq (global.get $__asyncify_state) (i32.const 0) ) - (local.set $1 - (local.get $x) + (i32.const 1) + (i32.eq + (local.get $9) + (i32.const 0) ) ) - (block - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (local.set $4 - (local.get $1) - ) - ) - (if - (i32.or - (local.get $4) - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) - ) - (if - (if (result i32) - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (i32.const 1) - (i32.eq - (local.get $6) - (i32.const 0) - ) - ) - (block - (call $import3 - (i32.const 1) - ) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 1) - ) - (br $__asyncify_unwind - (i32.const 0) - ) - ) - ) - ) - ) - (if - (i32.or - (i32.eqz - (local.get $4) - ) - (i32.eq - (global.get $__asyncify_state) - (i32.const 2) - ) + (block + (call $import) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) ) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (return - (i32.const 2) - ) + (br $__asyncify_unwind + (i32.const 0) ) ) ) @@ -1825,14 +331,27 @@ (global.get $__asyncify_state) (i32.const 0) ) - (return - (i32.const 3) + (block + (local.set $6 + (local.get $live0) + ) + (drop + (local.get $6) + ) + (local.set $7 + (local.get $live1) + ) + (drop + (local.get $7) + ) ) ) + (nop) + (nop) + (nop) ) - (unreachable) ) - (unreachable) + (return) ) ) ) @@ -1841,7 +360,7 @@ (i32.load (global.get $__asyncify_data) ) - (local.get $5) + (local.get $8) ) (i32.store (global.get $__asyncify_data) @@ -1854,30 +373,18 @@ ) ) (block - (local.set $8 + (local.set $11 (i32.load (global.get $__asyncify_data) ) ) (i32.store - (local.get $8) - (local.get $x) + (local.get $11) + (local.get $live0) ) (i32.store offset=4 - (local.get $8) - (local.get $1) - ) - (i32.store offset=8 - (local.get $8) - (local.get $2) - ) - (i32.store offset=12 - (local.get $8) - (local.get $3) - ) - (i32.store offset=16 - (local.get $8) - (local.get $4) + (local.get $11) + (local.get $live1) ) (i32.store (global.get $__asyncify_data) @@ -1885,20 +392,20 @@ (i32.load (global.get $__asyncify_data) ) - (i32.const 20) + (i32.const 8) ) ) ) - (i32.const 0) ) - (func $calls-loop (; 12 ;) (param $x i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) + (func $liveness3 (param $live0 i32) (param $dead0 i32) + (local $live1 i32) + (local $dead1 i32) (local $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) (if (i32.eq (global.get $__asyncify_state) @@ -1911,37 +418,27 @@ (i32.load (global.get $__asyncify_data) ) - (i32.const -16) + (i32.const -8) ) ) - (local.set $6 + (local.set $8 (i32.load (global.get $__asyncify_data) ) ) - (local.set $x + (local.set $live0 (i32.load - (local.get $6) + (local.get $8) ) ) - (local.set $1 + (local.set $live1 (i32.load offset=4 - (local.get $6) - ) - ) - (local.set $2 - (i32.load offset=8 - (local.get $6) - ) - ) - (local.set $3 - (i32.load offset=12 - (local.get $6) + (local.get $8) ) ) ) ) - (local.set $4 + (local.set $6 (block $__asyncify_unwind (result i32) (block (block @@ -1960,7 +457,7 @@ (i32.const -4) ) ) - (local.set $5 + (local.set $7 (i32.load (i32.load (global.get $__asyncify_data) @@ -1969,7 +466,7 @@ ) ) ) - (loop $l + (block (if (if (result i32) (i32.eq @@ -1978,14 +475,12 @@ ) (i32.const 1) (i32.eq - (local.get $5) + (local.get $7) (i32.const 0) ) ) (block - (call $import3 - (i32.const 1) - ) + (call $import) (if (i32.eq (global.get $__asyncify_state) @@ -2003,30 +498,55 @@ (i32.const 0) ) (block - (local.set $1 - (local.get $x) + (local.set $4 + (local.get $live0) ) - (local.set $2 - (i32.add - (local.get $1) + (drop + (local.get $4) + ) + ) + ) + (nop) + (if + (if (result i32) + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (i32.const 1) + (i32.eq + (local.get $7) + (i32.const 1) + ) + ) + (block + (call $import) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind (i32.const 1) ) ) - (local.set $x - (local.get $2) - ) - (local.set $3 - (local.get $x) + ) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 0) + ) + (block + (local.set $5 + (local.get $live1) ) - (br_if $l - (local.get $3) + (drop + (local.get $5) ) ) ) (nop) - (nop) - (nop) - (nop) ) ) (return) @@ -2038,7 +558,7 @@ (i32.load (global.get $__asyncify_data) ) - (local.get $4) + (local.get $6) ) (i32.store (global.get $__asyncify_data) @@ -2051,26 +571,18 @@ ) ) (block - (local.set $7 + (local.set $9 (i32.load (global.get $__asyncify_data) ) ) (i32.store - (local.get $7) - (local.get $x) + (local.get $9) + (local.get $live0) ) (i32.store offset=4 - (local.get $7) - (local.get $1) - ) - (i32.store offset=8 - (local.get $7) - (local.get $2) - ) - (i32.store offset=12 - (local.get $7) - (local.get $3) + (local.get $9) + (local.get $live1) ) (i32.store (global.get $__asyncify_data) @@ -2078,18 +590,17 @@ (i32.load (global.get $__asyncify_data) ) - (i32.const 16) + (i32.const 8) ) ) ) ) - (func $calls-loop2 (; 13 ;) - (local $0 i32) - (local $1 i32) + (func $liveness4 (param $live0 i32) (param $dead0 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) (if (i32.eq (global.get $__asyncify_state) @@ -2105,19 +616,19 @@ (i32.const -4) ) ) - (local.set $4 + (local.set $5 (i32.load (global.get $__asyncify_data) ) ) - (local.set $0 + (local.set $live0 (i32.load - (local.get $4) + (local.get $5) ) ) ) ) - (local.set $1 + (local.set $3 (block $__asyncify_unwind (result i32) (block (block @@ -2136,7 +647,7 @@ (i32.const -4) ) ) - (local.set $2 + (local.set $4 (i32.load (i32.load (global.get $__asyncify_data) @@ -2145,33 +656,37 @@ ) ) ) - (loop $l + (block (if - (if (result i32) + (i32.or + (i32.const 0) (i32.eq (global.get $__asyncify_state) - (i32.const 0) - ) - (i32.const 1) - (i32.eq - (local.get $2) - (i32.const 0) + (i32.const 2) ) ) - (block - (local.set $3 - (call $import2) - ) - (if + (if + (if (result i32) (i32.eq (global.get $__asyncify_state) - (i32.const 1) + (i32.const 0) ) - (br $__asyncify_unwind + (i32.const 1) + (i32.eq + (local.get $4) (i32.const 0) ) - (local.set $0 - (local.get $3) + ) + (block + (call $import) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) ) ) ) @@ -2181,10 +696,16 @@ (global.get $__asyncify_state) (i32.const 0) ) - (br_if $l - (local.get $0) + (block + (local.set $2 + (local.get $live0) + ) + (drop + (local.get $2) + ) ) ) + (nop) ) ) (return) @@ -2196,7 +717,7 @@ (i32.load (global.get $__asyncify_data) ) - (local.get $1) + (local.get $3) ) (i32.store (global.get $__asyncify_data) @@ -2209,14 +730,14 @@ ) ) (block - (local.set $5 + (local.set $6 (i32.load (global.get $__asyncify_data) ) ) (i32.store - (local.get $5) - (local.get $0) + (local.get $6) + (local.get $live0) ) (i32.store (global.get $__asyncify_data) @@ -2229,9 +750,11 @@ ) ) ) - (func $calls-mix (; 14 ;) - (local $0 i32) + (func $liveness5 (param $dead0 i32) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) (if (i32.eq (global.get $__asyncify_state) @@ -2239,7 +762,7 @@ ) (nop) ) - (local.set $0 + (local.set $3 (block $__asyncify_unwind (result i32) (block (block @@ -2258,7 +781,7 @@ (i32.const -4) ) ) - (local.set $1 + (local.set $4 (i32.load (i32.load (global.get $__asyncify_data) @@ -2273,65 +796,69 @@ (global.get $__asyncify_state) (i32.const 0) ) - (call $boring) + (block + (local.set $1 + (local.get $dead0) + ) + (drop + (local.get $1) + ) + ) ) + (nop) (if - (if (result i32) + (i32.or + (i32.const 0) (i32.eq (global.get $__asyncify_state) - (i32.const 0) - ) - (i32.const 1) - (i32.eq - (local.get $1) - (i32.const 0) + (i32.const 2) ) ) - (block - (call $import) - (if + (if + (if (result i32) (i32.eq (global.get $__asyncify_state) - (i32.const 1) + (i32.const 0) ) - (br $__asyncify_unwind + (i32.const 1) + (i32.eq + (local.get $4) (i32.const 0) ) ) + (block + (call $import) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + ) + ) ) ) (if (i32.eq (global.get $__asyncify_state) - (i32.const 0) - ) - (call $boring) - ) - (if - (if (result i32) - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (i32.const 1) - (i32.eq - (local.get $1) - (i32.const 1) - ) - ) - (block - (call $import) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 1) - ) - (br $__asyncify_unwind - (i32.const 1) - ) + (i32.const 0) + ) + (block + (local.set $dead0 + (i32.const 1) + ) + (local.set $2 + (local.get $dead0) + ) + (drop + (local.get $2) ) ) ) + (nop) + (nop) ) ) (return) @@ -2343,7 +870,7 @@ (i32.load (global.get $__asyncify_data) ) - (local.get $0) + (local.get $3) ) (i32.store (global.get $__asyncify_data) @@ -2357,20 +884,40 @@ ) (nop) ) - (func $boring (; 15 ;) - (nop) - ) - (func $calls-mix-deep (; 16 ;) - (local $0 i32) + (func $liveness-call-kills (param $live i32) (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) (if (i32.eq (global.get $__asyncify_state) (i32.const 2) ) - (nop) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -4) + ) + ) + (local.set $4 + (i32.load + (global.get $__asyncify_data) + ) + ) + (local.set $1 + (i32.load + (local.get $4) + ) + ) + ) ) - (local.set $0 + (local.set $2 (block $__asyncify_unwind (result i32) (block (block @@ -2389,7 +936,7 @@ (i32.const -4) ) ) - (local.set $1 + (local.set $3 (i32.load (i32.load (global.get $__asyncify_data) @@ -2404,7 +951,9 @@ (global.get $__asyncify_state) (i32.const 0) ) - (call $boring-deep) + (local.set $1 + (local.get $live) + ) ) (if (if (result i32) @@ -2414,51 +963,21 @@ ) (i32.const 1) (i32.eq - (local.get $1) + (local.get $3) (i32.const 0) ) ) (block - (call $import-deep) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 1) - ) - (br $__asyncify_unwind - (i32.const 0) - ) - ) - ) - ) - (if - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (call $boring) - ) - (if - (if (result i32) - (i32.eq - (global.get $__asyncify_state) - (i32.const 0) - ) - (i32.const 1) - (i32.eq + (call $import2 (local.get $1) - (i32.const 1) ) - ) - (block - (call $import) (if (i32.eq (global.get $__asyncify_state) (i32.const 1) ) (br $__asyncify_unwind - (i32.const 1) + (i32.const 0) ) ) ) @@ -2474,7 +993,27 @@ (i32.load (global.get $__asyncify_data) ) - (local.get $0) + (local.get $2) + ) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 4) + ) + ) + ) + (block + (local.set $5 + (i32.load + (global.get $__asyncify_data) + ) + ) + (i32.store + (local.get $5) + (local.get $1) ) (i32.store (global.get $__asyncify_data) @@ -2486,22 +1025,47 @@ ) ) ) - (nop) - ) - (func $boring-deep (; 17 ;) - (call $boring) ) - (func $import-deep (; 18 ;) - (local $0 i32) - (local $1 i32) + (func $liveness-indirect-kills (param $live0 i32) (param $live1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) (if (i32.eq (global.get $__asyncify_state) (i32.const 2) ) - (nop) + (block + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const -8) + ) + ) + (local.set $6 + (i32.load + (global.get $__asyncify_data) + ) + ) + (local.set $2 + (i32.load + (local.get $6) + ) + ) + (local.set $3 + (i32.load offset=4 + (local.get $6) + ) + ) + ) ) - (local.set $0 + (local.set $4 (block $__asyncify_unwind (result i32) (block (block @@ -2520,7 +1084,7 @@ (i32.const -4) ) ) - (local.set $1 + (local.set $5 (i32.load (i32.load (global.get $__asyncify_data) @@ -2529,29 +1093,49 @@ ) ) ) - (if - (if (result i32) + (block + (if (i32.eq (global.get $__asyncify_state) (i32.const 0) ) - (i32.const 1) - (i32.eq - (local.get $1) - (i32.const 0) + (block + (local.set $2 + (local.get $live0) + ) + (local.set $3 + (local.get $live1) + ) ) ) - (block - (call $import) - (if + (nop) + (if + (if (result i32) (i32.eq (global.get $__asyncify_state) - (i32.const 1) + (i32.const 0) ) - (br $__asyncify_unwind + (i32.const 1) + (i32.eq + (local.get $5) (i32.const 0) ) ) + (block + (call_indirect (type $i32_=>_none) + (local.get $2) + (local.get $3) + ) + (if + (i32.eq + (global.get $__asyncify_state) + (i32.const 1) + ) + (br $__asyncify_unwind + (i32.const 0) + ) + ) + ) ) ) ) @@ -2564,7 +1148,7 @@ (i32.load (global.get $__asyncify_data) ) - (local.get $0) + (local.get $4) ) (i32.store (global.get $__asyncify_data) @@ -2576,90 +1160,32 @@ ) ) ) - (nop) - ) - (func $asyncify_start_unwind (; 19 ;) (param $0 i32) - (global.set $__asyncify_state - (i32.const 1) - ) - (global.set $__asyncify_data - (local.get $0) - ) - (if - (i32.gt_u + (block + (local.set $7 (i32.load (global.get $__asyncify_data) ) - (i32.load offset=4 - (global.get $__asyncify_data) - ) ) - (unreachable) - ) - ) - (func $asyncify_stop_unwind (; 20 ;) - (global.set $__asyncify_state - (i32.const 0) - ) - (if - (i32.gt_u - (i32.load - (global.get $__asyncify_data) - ) - (i32.load offset=4 - (global.get $__asyncify_data) - ) + (i32.store + (local.get $7) + (local.get $2) ) - (unreachable) - ) - ) - (func $asyncify_start_rewind (; 21 ;) (param $0 i32) - (global.set $__asyncify_state - (i32.const 2) - ) - (global.set $__asyncify_data - (local.get $0) - ) - (if - (i32.gt_u - (i32.load - (global.get $__asyncify_data) - ) - (i32.load offset=4 - (global.get $__asyncify_data) - ) + (i32.store offset=4 + (local.get $7) + (local.get $3) ) - (unreachable) - ) - ) - (func $asyncify_stop_rewind (; 22 ;) - (global.set $__asyncify_state - (i32.const 0) - ) - (if - (i32.gt_u - (i32.load - (global.get $__asyncify_data) - ) - (i32.load offset=4 - (global.get $__asyncify_data) + (i32.store + (global.get $__asyncify_data) + (i32.add + (i32.load + (global.get $__asyncify_data) + ) + (i32.const 8) ) ) - (unreachable) ) ) -) -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (memory $0 1 1) - (global $__asyncify_state (mut i32) (i32.const 0)) - (global $__asyncify_data (mut i32) (i32.const 0)) - (export "asyncify_start_unwind" (func $asyncify_start_unwind)) - (export "asyncify_stop_unwind" (func $asyncify_stop_unwind)) - (export "asyncify_start_rewind" (func $asyncify_start_rewind)) - (export "asyncify_stop_rewind" (func $asyncify_stop_rewind)) - (func $asyncify_start_unwind (; 0 ;) (param $0 i32) + (func $asyncify_start_unwind (param $0 i32) (global.set $__asyncify_state (i32.const 1) ) @@ -2678,7 +1204,7 @@ (unreachable) ) ) - (func $asyncify_stop_unwind (; 1 ;) + (func $asyncify_stop_unwind (global.set $__asyncify_state (i32.const 0) ) @@ -2694,7 +1220,7 @@ (unreachable) ) ) - (func $asyncify_start_rewind (; 2 ;) (param $0 i32) + (func $asyncify_start_rewind (param $0 i32) (global.set $__asyncify_state (i32.const 2) ) @@ -2713,7 +1239,7 @@ (unreachable) ) ) - (func $asyncify_stop_rewind (; 3 ;) + (func $asyncify_stop_rewind (global.set $__asyncify_state (i32.const 0) ) @@ -2729,4 +1255,7 @@ (unreachable) ) ) + (func $asyncify_get_state (result i32) + (global.get $__asyncify_state) + ) ) diff -Nru binaryen-91/test/passes/asyncify.wast binaryen-99/test/passes/asyncify.wast --- binaryen-91/test/passes/asyncify.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/asyncify.wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,152 +1,53 @@ -;; Pre-existing imports that the pass turns into the implementations. -(module - (memory 1 2) - (import "asyncify" "start_unwind" (func $asyncify_start_unwind (param i32))) - (import "asyncify" "stop_unwind" (func $asyncify_stop_unwind)) - (import "asyncify" "start_rewind" (func $asyncify_start_rewind (param i32))) - (import "asyncify" "stop_rewind" (func $asyncify_stop_rewind)) - (global $sleeping (mut i32) (i32.const 0)) - ;; do a sleep operation: start a sleep if running, or resume after a sleep - ;; if we just rewound. - (func $do_sleep - (if - (i32.eqz (global.get $sleeping)) - (block - (global.set $sleeping (i32.const 1)) - ;; we should set up the data at address 4 around here - (call $asyncify_start_unwind (i32.const 4)) - ) - (block - (global.set $sleeping (i32.const 0)) - (call $asyncify_stop_rewind) - ) - ) - ) - ;; a function that does some work and has a sleep (async pause/resume) in the middle - (func $work - (call $stuff) ;; do some work - (call $do_sleep) ;; take a break - (call $stuff) ;; do some more work - ) - (func $stuff) - ;; the first event called from the main event loop: just call into $work - (func $first_event - (call $work) - ;; work will sleep, so we exit through here while it is paused - ) - ;; the second event called from the main event loop: to resume $work, - ;; stop the unwind, then prepare a rewind, and initiate it by doing - ;; the call to rewind the call stack back up to where it was - (func $second_event - (call $asyncify_stop_unwind) - (call $asyncify_start_rewind (i32.const 4)) - (call $work) - ) - ;; a function that can't do a sleep - (func $never_sleep - (call $stuff) - (call $stuff) - (call $stuff) - ) -) -;; Calls to imports that will call into asyncify themselves. (module + (type $f (func (param i32))) (memory 1 2) (import "env" "import" (func $import)) - (import "env" "import2" (func $import2 (result i32))) - (import "env" "import3" (func $import3 (param i32))) - (func $calls-import + (import "env" "import2" (func $import2 (param i32))) + (table 1 1) + (func $liveness1 (param $live0 i32) (param $dead0 i32) + (local $live1 i32) + (local $dead1 i32) + (drop (local.get $dead0)) + (drop (local.get $dead1)) + (call $import) + (drop (local.get $live0)) + (drop (local.get $live1)) + ) + (func $liveness2 (param $live0 i32) (param $dead0 i32) + (local $live1 i32) + (local $dead1 i32) + (drop (local.get $dead0)) + (drop (local.get $dead1)) + (call $import) + (drop (local.get $live0)) + (drop (local.get $live1)) + ) + (func $liveness3 (param $live0 i32) (param $dead0 i32) + (local $live1 i32) + (local $dead1 i32) (call $import) - ) - (func $calls-import2 (result i32) - (local $temp i32) - (local.set $temp (call $import2)) - (return (local.get $temp)) - ) - (func $calls-import2-drop - (drop (call $import2)) - ) - (func $calls-nothing - (drop (i32.eqz (i32.const 17))) - ) - (func $many-locals (param $x i32) (result i32) - (local $y i32) - (loop $l - (local.set $x - (i32.add (local.get $y) (i32.const 1)) - ) - (local.set $y - (i32.div_s (local.get $x) (i32.const 3)) - ) - (br_if $l (local.get $y)) - ) + (drop (local.get $live0)) (call $import) - (return (local.get $y)) + (drop (local.get $live1)) ) - (func $calls-import2-if (param $x i32) - (if (local.get $x) + (func $liveness4 (param $live0 i32) (param $dead0 i32) + (if (i32.const 0) (call $import) ) + (drop (local.get $live0)) ) - (func $calls-import2-if-else (param $x i32) - (if (local.get $x) - (call $import3 (i32.const 1)) - (call $import3 (i32.const 2)) - ) - ) - (func $calls-import2-if-else-oneside (param $x i32) (result i32) - (if (local.get $x) - (return (i32.const 1)) - (call $import3 (i32.const 2)) - ) - (return (i32.const 3)) - ) - (func $calls-import2-if-else-oneside2 (param $x i32) (result i32) - (if (local.get $x) - (call $import3 (i32.const 1)) - (return (i32.const 2)) + (func $liveness5 (param $dead0 i32) + (drop (local.get $dead0)) + (if (i32.const 0) + (call $import) ;; live before and after call, but not during ) - (return (i32.const 3)) + (local.set $dead0 (i32.const 1)) + (drop (local.get $dead0)) ) - (func $calls-loop (param $x i32) - (loop $l - (call $import3 (i32.const 1)) - (local.set $x - (i32.add (local.get $x) (i32.const 1)) - ) - (br_if $l - (local.get $x) - ) - ) - ) - (func $calls-loop2 - (loop $l - (br_if $l - (call $import2) - ) - ) - ) - (func $calls-mix - (call $boring) - (call $import) - (call $boring) - (call $import) + (func $liveness-call-kills (param $live i32) + (call $import2 (local.get $live)) ) - (func $boring) - (func $calls-mix-deep - (call $boring-deep) - (call $import-deep) - (call $boring) - (call $import) - ) - (func $boring-deep - (call $boring) - ) - (func $import-deep - (call $import) + (func $liveness-indirect-kills (param $live0 i32) (param $live1 i32) + (call_indirect (type $f) (local.get $live0) (local.get $live1)) ) ) -;; empty module, in particular with no memory -(module -) - diff -Nru binaryen-91/test/passes/avoid-reinterprets64.passes binaryen-99/test/passes/avoid-reinterprets64.passes --- binaryen-91/test/passes/avoid-reinterprets64.passes 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/avoid-reinterprets64.passes 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +avoid-reinterprets_enable-memory64 diff -Nru binaryen-91/test/passes/avoid-reinterprets64.txt binaryen-99/test/passes/avoid-reinterprets64.txt --- binaryen-91/test/passes/avoid-reinterprets64.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/avoid-reinterprets64.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,182 @@ +(module + (type $none_=>_none (func)) + (type $none_=>_f32 (func (result f32))) + (memory $0 i64 1) + (func $simple + (drop + (f32.load + (i64.const 1024) + ) + ) + (drop + (i32.load + (i64.const 1024) + ) + ) + (drop + (f64.load + (i64.const 1024) + ) + ) + (drop + (i64.load + (i64.const 1024) + ) + ) + ) + (func $one + (local $x i32) + (local $1 i64) + (local $2 f32) + (local.set $x + (block (result i32) + (local.set $1 + (i64.const 1024) + ) + (local.set $2 + (f32.load + (local.get $1) + ) + ) + (i32.load + (local.get $1) + ) + ) + ) + (drop + (local.get $2) + ) + ) + (func $one-b + (local $x f32) + (local $1 i64) + (local $2 i32) + (local.set $x + (block (result f32) + (local.set $1 + (i64.const 1024) + ) + (local.set $2 + (i32.load + (local.get $1) + ) + ) + (f32.load + (local.get $1) + ) + ) + ) + (drop + (local.get $2) + ) + ) + (func $both + (local $x i32) + (local $1 i64) + (local $2 f32) + (local.set $x + (block (result i32) + (local.set $1 + (i64.const 1024) + ) + (local.set $2 + (f32.load + (local.get $1) + ) + ) + (i32.load + (local.get $1) + ) + ) + ) + (drop + (local.get $2) + ) + (drop + (local.get $2) + ) + ) + (func $half + (local $x i32) + (local $1 i64) + (local $2 f32) + (local.set $x + (block (result i32) + (local.set $1 + (i64.const 1024) + ) + (local.set $2 + (f32.load + (local.get $1) + ) + ) + (i32.load + (local.get $1) + ) + ) + ) + (drop + (local.get $x) + ) + (drop + (local.get $2) + ) + ) + (func $copy + (local $x i32) + (local $y i32) + (local $2 i64) + (local $3 f32) + (local.set $x + (block (result i32) + (local.set $2 + (i64.const 1024) + ) + (local.set $3 + (f32.load + (local.get $2) + ) + ) + (i32.load + (local.get $2) + ) + ) + ) + (local.set $y + (local.get $x) + ) + (drop + (local.get $3) + ) + ) + (func $partial1 (result f32) + (f32.reinterpret_i32 + (i32.load16_u + (i64.const 3) + ) + ) + ) + (func $partial2 (result f32) + (f32.reinterpret_i32 + (i32.load8_u + (i64.const 3) + ) + ) + ) + (func $nofallthrough + (local $x i32) + (local.set $x + (i32.load + (i64.const 1024) + ) + ) + (drop + (f32.reinterpret_i32 + (block $block (result i32) + (nop) + (local.get $x) + ) + ) + ) + ) +) diff -Nru binaryen-91/test/passes/avoid-reinterprets64.wast binaryen-99/test/passes/avoid-reinterprets64.wast --- binaryen-91/test/passes/avoid-reinterprets64.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/avoid-reinterprets64.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,69 @@ +(module + (memory i64 1) + (func $simple + (drop (f32.reinterpret_i32 (i32.load (i64.const 1024)))) + (drop (i32.reinterpret_f32 (f32.load (i64.const 1024)))) + (drop (f64.reinterpret_i64 (i64.load (i64.const 1024)))) + (drop (i64.reinterpret_f64 (f64.load (i64.const 1024)))) + ) + (func $one + (local $x i32) + (local.set $x (i32.load (i64.const 1024))) + (drop (f32.reinterpret_i32 (local.get $x))) + ) + (func $one-b + (local $x f32) + (local.set $x (f32.load (i64.const 1024))) + (drop (i32.reinterpret_f32 (local.get $x))) + ) + (func $both + (local $x i32) + (local.set $x (i32.load (i64.const 1024))) + (drop (f32.reinterpret_i32 (local.get $x))) + (drop (f32.reinterpret_i32 (local.get $x))) + ) + (func $half + (local $x i32) + (local.set $x (i32.load (i64.const 1024))) + (drop (local.get $x)) + (drop (f32.reinterpret_i32 (local.get $x))) + ) + (func $copy + (local $x i32) + (local $y i32) + (local.set $x (i32.load (i64.const 1024))) + (local.set $y (local.get $x)) + (drop (f32.reinterpret_i32 (local.get $y))) + ) + (func $partial1 (result f32) + (f32.reinterpret_i32 + (i32.load16_u + (i64.const 3) + ) + ) + ) + (func $partial2 (result f32) + (f32.reinterpret_i32 + (i32.load8_u + (i64.const 3) + ) + ) + ) + (func $nofallthrough + (local $x i32) + (local.set $x + (i32.load + (i64.const 1024) + ) + ) + (drop + (f32.reinterpret_i32 + (block (result i32) + (nop) ;; this would be removed by other opts, but in general, we can't + ;; just look at the fallthrough, as we can't just remove code here + (local.get $x) + ) + ) + ) + ) +) diff -Nru binaryen-91/test/passes/avoid-reinterprets.txt binaryen-99/test/passes/avoid-reinterprets.txt --- binaryen-91/test/passes/avoid-reinterprets.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/avoid-reinterprets.txt 2021-01-07 20:01:06.000000000 +0000 @@ -2,7 +2,7 @@ (type $none_=>_none (func)) (type $none_=>_f32 (func (result f32))) (memory $0 1) - (func $simple (; 0 ;) + (func $simple (drop (f32.load (i32.const 1024) @@ -24,7 +24,7 @@ ) ) ) - (func $one (; 1 ;) + (func $one (local $x i32) (local $1 i32) (local $2 f32) @@ -47,7 +47,7 @@ (local.get $2) ) ) - (func $one-b (; 2 ;) + (func $one-b (local $x f32) (local $1 i32) (local $2 i32) @@ -70,7 +70,7 @@ (local.get $2) ) ) - (func $both (; 3 ;) + (func $both (local $x i32) (local $1 i32) (local $2 f32) @@ -96,7 +96,7 @@ (local.get $2) ) ) - (func $half (; 4 ;) + (func $half (local $x i32) (local $1 i32) (local $2 f32) @@ -122,7 +122,7 @@ (local.get $2) ) ) - (func $copy (; 5 ;) + (func $copy (local $x i32) (local $y i32) (local $2 i32) @@ -149,18 +149,34 @@ (local.get $3) ) ) - (func $partial1 (; 6 ;) (result f32) + (func $partial1 (result f32) (f32.reinterpret_i32 (i32.load16_u (i32.const 3) ) ) ) - (func $partial2 (; 7 ;) (result f32) + (func $partial2 (result f32) (f32.reinterpret_i32 (i32.load8_u (i32.const 3) ) ) ) + (func $nofallthrough + (local $x i32) + (local.set $x + (i32.load + (i32.const 1024) + ) + ) + (drop + (f32.reinterpret_i32 + (block $block (result i32) + (nop) + (local.get $x) + ) + ) + ) + ) ) diff -Nru binaryen-91/test/passes/avoid-reinterprets.wast binaryen-99/test/passes/avoid-reinterprets.wast --- binaryen-91/test/passes/avoid-reinterprets.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/avoid-reinterprets.wast 2021-01-07 20:01:06.000000000 +0000 @@ -49,4 +49,21 @@ ) ) ) + (func $nofallthrough + (local $x i32) + (local.set $x + (i32.load + (i32.const 1024) + ) + ) + (drop + (f32.reinterpret_i32 + (block (result i32) + (nop) ;; this would be removed by other opts, but in general, we can't + ;; just look at the fallthrough, as we can't just remove code here + (local.get $x) + ) + ) + ) + ) ) diff -Nru binaryen-91/test/passes/class_with_dwarf_noprint.bin.txt binaryen-99/test/passes/class_with_dwarf_noprint.bin.txt --- binaryen-91/test/passes/class_with_dwarf_noprint.bin.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/class_with_dwarf_noprint.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -174,7 +174,7 @@ DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x000000c1] = "/tmp/emscripten_test_wasm3_2u9tontv") DW_AT_low_pc [DW_FORM_addr] (0x0000000000000006) - DW_AT_high_pc [DW_FORM_data4] (0x000000a6) + DW_AT_high_pc [DW_FORM_data4] (0x000000b0) 0x00000026: DW_TAG_variable [2] DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e5] = "rng1") @@ -307,7 +307,7 @@ 0x000000e9: DW_TAG_subprogram [20] * DW_AT_low_pc [DW_FORM_addr] (0x0000000000000006) - DW_AT_high_pc [DW_FORM_data4] (0x000000a6) + DW_AT_high_pc [DW_FORM_data4] (0x000000b0) DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x0 +0, DW_OP_stack_value) DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000150] = "main") @@ -318,7 +318,7 @@ 0x00000101: DW_TAG_variable [21] DW_AT_location [DW_FORM_sec_offset] (0x00000000: - [0x00000018, 0x00000020): DW_OP_constu 0x2a, DW_OP_stack_value + [0x00000022, 0x0000002a): DW_OP_constu 0x2a, DW_OP_stack_value [0x00000007, 0x00000007): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000159] = "rng2") DW_AT_decl_file [DW_FORM_data1] ("/tmp/emscripten_test_wasm3_2u9tontv/src.cpp") @@ -327,20 +327,20 @@ 0x00000110: DW_TAG_variable [21] DW_AT_location [DW_FORM_sec_offset] (0x00000023: - [0x00000018, 0x00000020): DW_OP_consts +0, DW_OP_stack_value - [0x00000085, 0x00000092): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) + [0x00000022, 0x0000002a): DW_OP_consts +0, DW_OP_stack_value + [0x0000008f, 0x0000009c): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000015e] = "count") DW_AT_decl_file [DW_FORM_data1] ("/tmp/emscripten_test_wasm3_2u9tontv/src.cpp") DW_AT_decl_line [DW_FORM_data1] (26) DW_AT_type [DW_FORM_ref4] (cu + 0x01a5 => {0x000001a5} "int") 0x0000011f: DW_TAG_lexical_block [22] * - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000026) - DW_AT_high_pc [DW_FORM_data4] (0xffffffda) + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000030) + DW_AT_high_pc [DW_FORM_data4] (0xffffffd0) 0x00000128: DW_TAG_variable [21] DW_AT_location [DW_FORM_sec_offset] (0x00000046: - [0x00000018, 0x00000020): DW_OP_consts +0, DW_OP_stack_value + [0x00000022, 0x0000002a): DW_OP_consts +0, DW_OP_stack_value [0x00000007, 0x00000007): DW_OP_WASM_location 0x0 +3, DW_OP_stack_value) DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000164] = "i") DW_AT_decl_file [DW_FORM_data1] ("/tmp/emscripten_test_wasm3_2u9tontv/src.cpp") @@ -348,7 +348,7 @@ DW_AT_type [DW_FORM_ref4] (cu + 0x01a5 => {0x000001a5} "int") 0x00000137: DW_TAG_lexical_block [22] * - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000026) + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000030) DW_AT_high_pc [DW_FORM_data4] (0x0000005f) 0x00000140: DW_TAG_variable [21] @@ -371,7 +371,7 @@ DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x00c5 => {0x000000c5} "_ZN6Random3getEf") DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 [0x00000006, 0x00000007) - [0x00000061, 0x0000006a)) + [0x0000006b, 0x00000074)) DW_AT_call_file [DW_FORM_data1] ("/tmp/emscripten_test_wasm3_2u9tontv/src.cpp") DW_AT_call_line [DW_FORM_data1] (28) DW_AT_call_column [DW_FORM_data1] (0x15) @@ -381,14 +381,14 @@ 0x0000016f: DW_TAG_formal_parameter [25] DW_AT_location [DW_FORM_sec_offset] (0x00000069: - [0x00000022, 0x00000092): DW_OP_constu 0x3f800000, DW_OP_stack_value) + [0x0000002c, 0x0000009c): DW_OP_constu 0x3f800000, DW_OP_stack_value) DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x00d8 => {0x000000d8} "max") 0x00000178: NULL 0x00000179: DW_TAG_inlined_subroutine [26] * DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x00c5 => {0x000000c5} "_ZN6Random3getEf") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000040) + DW_AT_low_pc [DW_FORM_addr] (0x000000000000004a) DW_AT_high_pc [DW_FORM_data4] (0x00000019) DW_AT_call_file [DW_FORM_data1] ("/tmp/emscripten_test_wasm3_2u9tontv/src.cpp") DW_AT_call_line [DW_FORM_data1] (29) @@ -409,10 +409,10 @@ 0x00000199: NULL 0x0000019a: DW_TAG_GNU_call_site [27] - DW_AT_low_pc [DW_FORM_addr] (0x000000000000007a) + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000084) 0x0000019f: DW_TAG_GNU_call_site [27] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000000a1) + DW_AT_low_pc [DW_FORM_addr] (0x00000000000000ab) 0x000001a4: NULL @@ -425,19 +425,19 @@ .debug_loc contents: 0x00000000: - [0x00000012, 0x0000001a): DW_OP_constu 0x2a, DW_OP_stack_value + [0x0000001c, 0x00000024): DW_OP_constu 0x2a, DW_OP_stack_value [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value 0x00000023: - [0x00000012, 0x0000001a): DW_OP_consts +0, DW_OP_stack_value - [0x0000007f, 0x0000008c): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value + [0x0000001c, 0x00000024): DW_OP_consts +0, DW_OP_stack_value + [0x00000089, 0x00000096): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value 0x00000046: - [0x00000012, 0x0000001a): DW_OP_consts +0, DW_OP_stack_value + [0x0000001c, 0x00000024): DW_OP_consts +0, DW_OP_stack_value [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +3, DW_OP_stack_value 0x00000069: - [0x0000001c, 0x0000008c): DW_OP_constu 0x3f800000, DW_OP_stack_value + [0x00000026, 0x00000096): DW_OP_constu 0x3f800000, DW_OP_stack_value 0x00000082: [0x00000001, 0x00000001): DW_OP_constu 0x3f800000, DW_OP_stack_value @@ -494,185 +494,185 @@ 0x0000000000000006 24 0 1 0 0 is_stmt -0x0000008f: 00 DW_LNE_set_address (0x0000000000000026) +0x0000008f: 00 DW_LNE_set_address (0x0000000000000030) 0x00000096: 03 DW_LNS_advance_line (17) 0x00000098: 05 DW_LNS_set_column (13) 0x0000009a: 0a DW_LNS_set_prologue_end 0x0000009b: 01 DW_LNS_copy - 0x0000000000000026 17 13 1 0 0 is_stmt prologue_end + 0x0000000000000030 17 13 1 0 0 is_stmt prologue_end -0x0000009c: 00 DW_LNE_set_address (0x000000000000002d) +0x0000009c: 00 DW_LNE_set_address (0x0000000000000037) 0x000000a3: 05 DW_LNS_set_column (18) 0x000000a5: 06 DW_LNS_negate_stmt 0x000000a6: 01 DW_LNS_copy - 0x000000000000002d 17 18 1 0 0 + 0x0000000000000037 17 18 1 0 0 -0x000000a7: 00 DW_LNE_set_address (0x0000000000000032) +0x000000a7: 00 DW_LNE_set_address (0x000000000000003c) 0x000000ae: 05 DW_LNS_set_column (23) 0x000000b0: 01 DW_LNS_copy - 0x0000000000000032 17 23 1 0 0 + 0x000000000000003c 17 23 1 0 0 -0x000000b1: 00 DW_LNE_set_address (0x0000000000000037) +0x000000b1: 00 DW_LNE_set_address (0x0000000000000041) 0x000000b8: 05 DW_LNS_set_column (29) 0x000000ba: 01 DW_LNS_copy - 0x0000000000000037 17 29 1 0 0 + 0x0000000000000041 17 29 1 0 0 -0x000000bb: 00 DW_LNE_set_address (0x0000000000000038) +0x000000bb: 00 DW_LNE_set_address (0x0000000000000042) 0x000000c2: 05 DW_LNS_set_column (10) 0x000000c4: 01 DW_LNS_copy - 0x0000000000000038 17 10 1 0 0 + 0x0000000000000042 17 10 1 0 0 -0x000000c5: 00 DW_LNE_set_address (0x000000000000003e) +0x000000c5: 00 DW_LNE_set_address (0x0000000000000048) 0x000000cc: 03 DW_LNS_advance_line (30) 0x000000ce: 05 DW_LNS_set_column (5) 0x000000d0: 06 DW_LNS_negate_stmt 0x000000d1: 01 DW_LNS_copy - 0x000000000000003e 30 5 1 0 0 is_stmt + 0x0000000000000048 30 5 1 0 0 is_stmt -0x000000d2: 00 DW_LNE_set_address (0x0000000000000040) +0x000000d2: 00 DW_LNE_set_address (0x000000000000004a) 0x000000d9: 03 DW_LNS_advance_line (17) 0x000000db: 05 DW_LNS_set_column (18) 0x000000dd: 01 DW_LNS_copy - 0x0000000000000040 17 18 1 0 0 is_stmt + 0x000000000000004a 17 18 1 0 0 is_stmt -0x000000de: 00 DW_LNE_set_address (0x000000000000004a) +0x000000de: 00 DW_LNE_set_address (0x0000000000000054) 0x000000e5: 05 DW_LNS_set_column (23) 0x000000e7: 06 DW_LNS_negate_stmt 0x000000e8: 01 DW_LNS_copy - 0x000000000000004a 17 23 1 0 0 + 0x0000000000000054 17 23 1 0 0 -0x000000e9: 00 DW_LNE_set_address (0x000000000000004f) +0x000000e9: 00 DW_LNE_set_address (0x0000000000000059) 0x000000f0: 05 DW_LNS_set_column (29) 0x000000f2: 01 DW_LNS_copy - 0x000000000000004f 17 29 1 0 0 + 0x0000000000000059 17 29 1 0 0 -0x000000f3: 00 DW_LNE_set_address (0x0000000000000050) +0x000000f3: 00 DW_LNE_set_address (0x000000000000005a) 0x000000fa: 03 DW_LNS_advance_line (18) 0x000000fc: 05 DW_LNS_set_column (18) 0x000000fe: 06 DW_LNS_negate_stmt 0x000000ff: 01 DW_LNS_copy - 0x0000000000000050 18 18 1 0 0 is_stmt + 0x000000000000005a 18 18 1 0 0 is_stmt -0x00000100: 00 DW_LNE_set_address (0x0000000000000058) +0x00000100: 00 DW_LNE_set_address (0x0000000000000062) 0x00000107: 05 DW_LNS_set_column (23) 0x00000109: 06 DW_LNS_negate_stmt 0x0000010a: 01 DW_LNS_copy - 0x0000000000000058 18 23 1 0 0 + 0x0000000000000062 18 23 1 0 0 -0x0000010b: 00 DW_LNE_set_address (0x0000000000000059) +0x0000010b: 00 DW_LNE_set_address (0x0000000000000063) 0x00000112: 03 DW_LNS_advance_line (30) 0x00000114: 05 DW_LNS_set_column (28) 0x00000116: 06 DW_LNS_negate_stmt 0x00000117: 01 DW_LNS_copy - 0x0000000000000059 30 28 1 0 0 is_stmt + 0x0000000000000063 30 28 1 0 0 is_stmt -0x00000118: 00 DW_LNE_set_address (0x000000000000005c) +0x00000118: 00 DW_LNE_set_address (0x0000000000000066) 0x0000011f: 05 DW_LNS_set_column (5) 0x00000121: 06 DW_LNS_negate_stmt 0x00000122: 01 DW_LNS_copy - 0x000000000000005c 30 5 1 0 0 + 0x0000000000000066 30 5 1 0 0 -0x00000123: 00 DW_LNE_set_address (0x0000000000000061) +0x00000123: 00 DW_LNE_set_address (0x000000000000006b) 0x0000012a: 03 DW_LNS_advance_line (18) 0x0000012c: 05 DW_LNS_set_column (18) 0x0000012e: 06 DW_LNS_negate_stmt 0x0000012f: 01 DW_LNS_copy - 0x0000000000000061 18 18 1 0 0 is_stmt + 0x000000000000006b 18 18 1 0 0 is_stmt -0x00000130: 00 DW_LNE_set_address (0x0000000000000069) +0x00000130: 00 DW_LNE_set_address (0x0000000000000073) 0x00000137: 05 DW_LNS_set_column (23) 0x00000139: 06 DW_LNS_negate_stmt 0x0000013a: 01 DW_LNS_copy - 0x0000000000000069 18 23 1 0 0 + 0x0000000000000073 18 23 1 0 0 -0x0000013b: 00 DW_LNE_set_address (0x000000000000006a) +0x0000013b: 00 DW_LNE_set_address (0x0000000000000074) 0x00000142: 03 DW_LNS_advance_line (30) 0x00000144: 05 DW_LNS_set_column (24) 0x00000146: 06 DW_LNS_negate_stmt 0x00000147: 01 DW_LNS_copy - 0x000000000000006a 30 24 1 0 0 is_stmt + 0x0000000000000074 30 24 1 0 0 is_stmt -0x00000148: 00 DW_LNE_set_address (0x000000000000006d) +0x00000148: 00 DW_LNE_set_address (0x0000000000000077) 0x0000014f: 05 DW_LNS_set_column (5) 0x00000151: 06 DW_LNS_negate_stmt 0x00000152: 01 DW_LNS_copy - 0x000000000000006d 30 5 1 0 0 + 0x0000000000000077 30 5 1 0 0 -0x00000153: 00 DW_LNE_set_address (0x000000000000007b) +0x00000153: 00 DW_LNE_set_address (0x0000000000000085) 0x0000015a: 03 DW_LNS_advance_line (31) 0x0000015c: 05 DW_LNS_set_column (9) 0x0000015e: 06 DW_LNS_negate_stmt 0x0000015f: 01 DW_LNS_copy - 0x000000000000007b 31 9 1 0 0 is_stmt + 0x0000000000000085 31 9 1 0 0 is_stmt -0x00000160: 00 DW_LNE_set_address (0x000000000000007d) +0x00000160: 00 DW_LNE_set_address (0x0000000000000087) 0x00000167: 05 DW_LNS_set_column (12) 0x00000169: 06 DW_LNS_negate_stmt 0x0000016a: 01 DW_LNS_copy - 0x000000000000007d 31 12 1 0 0 + 0x0000000000000087 31 12 1 0 0 -0x0000016b: 00 DW_LNE_set_address (0x0000000000000082) +0x0000016b: 00 DW_LNE_set_address (0x000000000000008c) 0x00000172: 05 DW_LNS_set_column (9) 0x00000174: 01 DW_LNS_copy - 0x0000000000000082 31 9 1 0 0 + 0x000000000000008c 31 9 1 0 0 -0x00000175: 00 DW_LNE_set_address (0x0000000000000085) +0x00000175: 00 DW_LNE_set_address (0x000000000000008f) 0x0000017c: 03 DW_LNS_advance_line (27) 0x0000017e: 05 DW_LNS_set_column (29) 0x00000180: 06 DW_LNS_negate_stmt 0x00000181: 01 DW_LNS_copy - 0x0000000000000085 27 29 1 0 0 is_stmt + 0x000000000000008f 27 29 1 0 0 is_stmt -0x00000182: 00 DW_LNE_set_address (0x000000000000008f) +0x00000182: 00 DW_LNE_set_address (0x0000000000000099) 0x00000189: 05 DW_LNS_set_column (21) 0x0000018b: 06 DW_LNS_negate_stmt 0x0000018c: 01 DW_LNS_copy - 0x000000000000008f 27 21 1 0 0 + 0x0000000000000099 27 21 1 0 0 -0x0000018d: 00 DW_LNE_set_address (0x0000000000000090) +0x0000018d: 00 DW_LNE_set_address (0x000000000000009a) 0x00000194: 05 DW_LNS_set_column (3) 0x00000196: 01 DW_LNS_copy - 0x0000000000000090 27 3 1 0 0 + 0x000000000000009a 27 3 1 0 0 -0x00000197: 00 DW_LNE_set_address (0x0000000000000093) +0x00000197: 00 DW_LNE_set_address (0x000000000000009d) 0x0000019e: 03 DW_LNS_advance_line (33) 0x000001a0: 06 DW_LNS_negate_stmt 0x000001a1: 01 DW_LNS_copy - 0x0000000000000093 33 3 1 0 0 is_stmt + 0x000000000000009d 33 3 1 0 0 is_stmt -0x000001a2: 00 DW_LNE_set_address (0x00000000000000a2) +0x000001a2: 00 DW_LNE_set_address (0x00000000000000ac) 0x000001a9: 03 DW_LNS_advance_line (34) 0x000001ab: 01 DW_LNS_copy - 0x00000000000000a2 34 3 1 0 0 is_stmt + 0x00000000000000ac 34 3 1 0 0 is_stmt -0x000001ac: 00 DW_LNE_set_address (0x00000000000000ac) +0x000001ac: 00 DW_LNE_set_address (0x00000000000000b6) 0x000001b3: 00 DW_LNE_end_sequence - 0x00000000000000ac 34 3 1 0 0 is_stmt end_sequence + 0x00000000000000b6 34 3 1 0 0 is_stmt end_sequence .debug_str contents: @@ -704,5 +704,5 @@ .debug_ranges contents: 00000000 00000000 00000001 -00000000 0000005b 00000064 +00000000 00000065 0000006e 00000000 diff -Nru binaryen-91/test/passes/coalesce-locals-learning.txt binaryen-99/test/passes/coalesce-locals-learning.txt --- binaryen-91/test/passes/coalesce-locals-learning.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/coalesce-locals-learning.txt 2021-01-07 20:01:06.000000000 +0000 @@ -6,20 +6,20 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "_emscripten_autodebug_i32" (func $_emscripten_autodebug_i32 (param i32 i32) (result i32))) (memory $0 10) - (func $nothing-to-do (; 1 ;) + (func $nothing-to-do (local $0 i32) (nop) ) - (func $merge (; 2 ;) + (func $merge (local $0 i32) (nop) ) - (func $leave-type (; 3 ;) + (func $leave-type (local $0 i32) (local $1 f32) (nop) ) - (func $leave-interfere (; 4 ;) + (func $leave-interfere (local $0 i32) (local $1 i32) (local.set $0 @@ -35,7 +35,7 @@ (local.get $1) ) ) - (func $almost-interfere (; 5 ;) + (func $almost-interfere (local $0 i32) (local.set $0 (i32.const 0) @@ -50,7 +50,7 @@ (local.get $0) ) ) - (func $redundant-copy (; 6 ;) + (func $redundant-copy (local $0 i32) (local.set $0 (i32.const 0) @@ -60,7 +60,7 @@ (local.get $0) ) ) - (func $ineffective-store (; 7 ;) + (func $ineffective-store (local $0 i32) (drop (i32.const 0) @@ -72,7 +72,7 @@ (local.get $0) ) ) - (func $block (; 8 ;) + (func $block (local $0 i32) (block $block0 (local.set $0 @@ -83,7 +83,7 @@ (local.get $0) ) ) - (func $see-both-sides (; 9 ;) + (func $see-both-sides (local $0 i32) (local $1 i32) (local.set $0 @@ -101,7 +101,7 @@ (local.get $1) ) ) - (func $see-br-and-ignore-dead (; 10 ;) + (func $see-br-and-ignore-dead (local $0 i32) (local.set $0 (i32.const 0) @@ -122,7 +122,7 @@ (local.get $0) ) ) - (func $see-block-body (; 11 ;) + (func $see-block-body (local $0 i32) (local $1 i32) (local.set $0 @@ -141,7 +141,7 @@ (local.get $0) ) ) - (func $zero-init (; 12 ;) + (func $zero-init (local $0 i32) (local $1 i32) (drop @@ -151,7 +151,7 @@ (local.get $1) ) ) - (func $multi (; 13 ;) + (func $multi (local $0 i32) (local $1 i32) (drop @@ -161,7 +161,7 @@ (local.get $1) ) ) - (func $if-else (; 14 ;) + (func $if-else (local $0 i32) (local $1 i32) (if @@ -174,7 +174,7 @@ ) ) ) - (func $if-else-parallel (; 15 ;) + (func $if-else-parallel (local $0 i32) (if (i32.const 0) @@ -196,7 +196,7 @@ ) ) ) - (func $if-else-after (; 16 ;) + (func $if-else-after (local $0 i32) (local $1 i32) (if @@ -215,7 +215,7 @@ (local.get $1) ) ) - (func $if-else-through (; 17 ;) + (func $if-else-through (local $0 i32) (local $1 i32) (local.set $0 @@ -240,7 +240,7 @@ (local.get $1) ) ) - (func $if-through (; 18 ;) + (func $if-through (local $0 i32) (local $1 i32) (local.set $0 @@ -262,7 +262,7 @@ (local.get $1) ) ) - (func $if-through2 (; 19 ;) + (func $if-through2 (local $0 i32) (local $1 i32) (local.set $0 @@ -281,7 +281,7 @@ (local.get $1) ) ) - (func $if-through3 (; 20 ;) + (func $if-through3 (local $0 i32) (local $1 i32) (local.set $0 @@ -299,7 +299,7 @@ ) ) ) - (func $if2 (; 21 ;) + (func $if2 (local $0 i32) (local $1 i32) (if @@ -316,7 +316,7 @@ ) ) ) - (func $if3 (; 22 ;) + (func $if3 (local $0 i32) (local $1 i32) (if @@ -334,7 +334,7 @@ (local.get $1) ) ) - (func $if4 (; 23 ;) + (func $if4 (local $0 i32) (if (i32.const 0) @@ -354,7 +354,7 @@ (local.get $0) ) ) - (func $if5 (; 24 ;) + (func $if5 (local $0 i32) (local $1 i32) (if @@ -372,7 +372,7 @@ (local.get $1) ) ) - (func $loop (; 25 ;) + (func $loop (local $0 i32) (local $1 i32) (block $out @@ -390,7 +390,7 @@ ) ) ) - (func $interfere-in-dead (; 26 ;) + (func $interfere-in-dead (local $0 i32) (block $block (br $block) @@ -402,7 +402,7 @@ ) ) ) - (func $interfere-in-dead2 (; 27 ;) + (func $interfere-in-dead2 (local $0 i32) (block $block (unreachable) @@ -414,7 +414,7 @@ ) ) ) - (func $interfere-in-dead3 (; 28 ;) + (func $interfere-in-dead3 (local $0 i32) (block $block (return) @@ -426,7 +426,7 @@ ) ) ) - (func $params (; 29 ;) (param $0 i32) (param $1 f32) + (func $params (param $0 i32) (param $1 f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -440,7 +440,7 @@ (local.get $4) ) ) - (func $interfere-in-dead4 (; 30 ;) + (func $interfere-in-dead4 (local $0 i32) (local $1 i32) (block $block @@ -455,7 +455,7 @@ ) ) ) - (func $switch (; 31 ;) + (func $switch (local $0 i32) (local $1 i32) (local $2 i32) @@ -481,7 +481,7 @@ (local.get $2) ) ) - (func $greedy-can-be-happy (; 32 ;) + (func $greedy-can-be-happy (local $0 i32) (local $1 i32) (if @@ -584,7 +584,7 @@ ) ) ) - (func $greedy-can-be-sad (; 33 ;) + (func $greedy-can-be-sad (local $0 i32) (local $1 i32) (if @@ -687,7 +687,7 @@ ) ) ) - (func $_memcpy (; 34 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $_memcpy (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (if (i32.ge_s @@ -847,7 +847,7 @@ (local.get $3) ) ) - (func $this-is-effective-i-tell-you (; 35 ;) (param $0 i32) + (func $this-is-effective-i-tell-you (param $0 i32) (if (i32.const -1) (block $block1 diff -Nru binaryen-91/test/passes/coalesce-locals.txt binaryen-99/test/passes/coalesce-locals.txt --- binaryen-91/test/passes/coalesce-locals.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/coalesce-locals.txt 2021-01-07 20:01:06.000000000 +0000 @@ -13,20 +13,20 @@ (import "env" "get" (func $get (result i32))) (import "env" "set" (func $set (param i32))) (memory $0 10) - (func $nothing-to-do (; 3 ;) + (func $nothing-to-do (local $0 i32) (nop) ) - (func $merge (; 4 ;) + (func $merge (local $0 i32) (nop) ) - (func $leave-type (; 5 ;) + (func $leave-type (local $0 i32) (local $1 f32) (nop) ) - (func $leave-interfere (; 6 ;) + (func $leave-interfere (local $0 i32) (local $1 i32) (local.set $0 @@ -42,7 +42,7 @@ (local.get $1) ) ) - (func $almost-interfere (; 7 ;) + (func $almost-interfere (local $0 i32) (local.set $0 (i32.const 0) @@ -57,7 +57,7 @@ (local.get $0) ) ) - (func $redundant-copy (; 8 ;) + (func $redundant-copy (local $0 i32) (local.set $0 (i32.const 0) @@ -67,7 +67,7 @@ (local.get $0) ) ) - (func $ineffective-store (; 9 ;) + (func $ineffective-store (local $0 i32) (drop (i32.const 0) @@ -79,7 +79,7 @@ (local.get $0) ) ) - (func $block (; 10 ;) + (func $block (local $0 i32) (block $block0 (local.set $0 @@ -90,7 +90,7 @@ (local.get $0) ) ) - (func $see-both-sides (; 11 ;) + (func $see-both-sides (local $0 i32) (local $1 i32) (local.set $0 @@ -108,7 +108,7 @@ (local.get $1) ) ) - (func $see-br-and-ignore-dead (; 12 ;) + (func $see-br-and-ignore-dead (local $0 i32) (local.set $0 (i32.const 0) @@ -129,7 +129,7 @@ (local.get $0) ) ) - (func $see-block-body (; 13 ;) + (func $see-block-body (local $0 i32) (local $1 i32) (local.set $0 @@ -148,7 +148,7 @@ (local.get $0) ) ) - (func $zero-init (; 14 ;) + (func $zero-init (local $0 i32) (local $1 i32) (drop @@ -158,7 +158,7 @@ (local.get $1) ) ) - (func $multi (; 15 ;) + (func $multi (local $0 i32) (local $1 i32) (drop @@ -168,7 +168,7 @@ (local.get $1) ) ) - (func $if-else (; 16 ;) + (func $if-else (local $0 i32) (local $1 i32) (if @@ -181,7 +181,7 @@ ) ) ) - (func $if-else-parallel (; 17 ;) + (func $if-else-parallel (local $0 i32) (if (i32.const 0) @@ -203,7 +203,7 @@ ) ) ) - (func $if-else-after (; 18 ;) + (func $if-else-after (local $0 i32) (local $1 i32) (if @@ -222,7 +222,7 @@ (local.get $1) ) ) - (func $if-else-through (; 19 ;) + (func $if-else-through (local $0 i32) (local $1 i32) (local.set $0 @@ -247,7 +247,7 @@ (local.get $1) ) ) - (func $if-through (; 20 ;) + (func $if-through (local $0 i32) (local $1 i32) (local.set $0 @@ -269,7 +269,7 @@ (local.get $1) ) ) - (func $if-through2 (; 21 ;) + (func $if-through2 (local $0 i32) (local $1 i32) (local.set $0 @@ -288,7 +288,7 @@ (local.get $1) ) ) - (func $if-through3 (; 22 ;) + (func $if-through3 (local $0 i32) (local $1 i32) (local.set $0 @@ -306,7 +306,7 @@ ) ) ) - (func $if2 (; 23 ;) + (func $if2 (local $0 i32) (local $1 i32) (if @@ -323,7 +323,7 @@ ) ) ) - (func $if3 (; 24 ;) + (func $if3 (local $0 i32) (local $1 i32) (if @@ -341,7 +341,7 @@ (local.get $1) ) ) - (func $if4 (; 25 ;) + (func $if4 (local $0 i32) (if (i32.const 0) @@ -361,7 +361,7 @@ (local.get $0) ) ) - (func $if5 (; 26 ;) + (func $if5 (local $0 i32) (local $1 i32) (if @@ -379,7 +379,7 @@ (local.get $1) ) ) - (func $loop (; 27 ;) + (func $loop (local $0 i32) (local $1 i32) (loop $in @@ -395,7 +395,7 @@ (br $in) ) ) - (func $interfere-in-dead (; 28 ;) + (func $interfere-in-dead (local $0 i32) (block $block (br $block) @@ -407,7 +407,7 @@ ) ) ) - (func $interfere-in-dead2 (; 29 ;) + (func $interfere-in-dead2 (local $0 i32) (block $block (unreachable) @@ -419,7 +419,7 @@ ) ) ) - (func $interfere-in-dead3 (; 30 ;) + (func $interfere-in-dead3 (local $0 i32) (block $block (return) @@ -431,7 +431,7 @@ ) ) ) - (func $params (; 31 ;) (param $0 i32) (param $1 f32) + (func $params (param $0 i32) (param $1 f32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -445,7 +445,7 @@ (local.get $4) ) ) - (func $interfere-in-dead4 (; 32 ;) + (func $interfere-in-dead4 (local $0 i32) (local $1 i32) (block $block @@ -460,7 +460,7 @@ ) ) ) - (func $switch (; 33 ;) + (func $switch (local $0 i32) (local $1 i32) (local $2 i32) @@ -486,7 +486,7 @@ (local.get $2) ) ) - (func $greedy-can-be-happy (; 34 ;) + (func $greedy-can-be-happy (local $0 i32) (local $1 i32) (if @@ -589,7 +589,7 @@ ) ) ) - (func $greedy-can-be-sad (; 35 ;) + (func $greedy-can-be-sad (local $0 i32) (local $1 i32) (local $2 i32) @@ -693,7 +693,7 @@ ) ) ) - (func $_memcpy (; 36 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $_memcpy (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (if (i32.ge_s @@ -853,7 +853,7 @@ (local.get $3) ) ) - (func $this-is-effective-i-tell-you (; 37 ;) (param $0 i32) + (func $this-is-effective-i-tell-you (param $0 i32) (if (i32.const -1) (block $block1 @@ -871,7 +871,7 @@ (local.get $0) ) ) - (func $prefer-remove-copies1 (; 38 ;) + (func $prefer-remove-copies1 (local $0 i32) (local $1 i32) (local.set $0 @@ -888,7 +888,7 @@ (local.get $1) ) ) - (func $prefer-remove-copies2 (; 39 ;) + (func $prefer-remove-copies2 (local $0 i32) (local $1 i32) (local.set $0 @@ -905,7 +905,7 @@ (local.get $0) ) ) - (func $in-unreachable (; 40 ;) + (func $in-unreachable (local $0 i32) (block $x (return) @@ -958,7 +958,7 @@ ) ) ) - (func $nop-in-unreachable (; 41 ;) + (func $nop-in-unreachable (local $0 i32) (block $block (unreachable) @@ -968,7 +968,7 @@ ) ) ) - (func $loop-backedge (; 42 ;) + (func $loop-backedge (local $0 i32) (local $1 i32) (local.set $0 @@ -1005,7 +1005,7 @@ ) ) ) - (func $if-copy1 (; 43 ;) + (func $if-copy1 (local $0 i32) (local $1 i32) (loop $top @@ -1025,7 +1025,7 @@ (br $top) ) ) - (func $if-copy2 (; 44 ;) + (func $if-copy2 (local $0 i32) (local $1 i32) (loop $top @@ -1045,7 +1045,7 @@ (br $top) ) ) - (func $if-copy3 (; 45 ;) + (func $if-copy3 (local $0 i32) (local $1 i32) (loop $top @@ -1065,7 +1065,7 @@ (br $top) ) ) - (func $if-copy4 (; 46 ;) + (func $if-copy4 (local $0 i32) (local $1 i32) (loop $top @@ -1085,7 +1085,7 @@ (br $top) ) ) - (func $if-copy-tee (; 47 ;) + (func $if-copy-tee (local $0 i32) (local $1 i32) (loop $top @@ -1107,7 +1107,7 @@ (br $top) ) ) - (func $tee_br (; 48 ;) (param $0 i32) (result i32) + (func $tee_br (param $0 i32) (result i32) (block $b (return (br $b) @@ -1115,7 +1115,7 @@ ) (i32.const 1) ) - (func $unused-tee-with-child-if-no-else (; 49 ;) (param $0 i32) + (func $unused-tee-with-child-if-no-else (param $0 i32) (loop $label$0 (drop (if @@ -1125,7 +1125,7 @@ ) ) ) - (func $tee_if_with_unreachable_else (; 50 ;) (param $0 f64) (param $1 i32) (result i64) + (func $tee_if_with_unreachable_else (param $0 f64) (param $1 i32) (result i64) (call $tee_if_with_unreachable_else (local.tee $0 (if (result f64) @@ -1140,7 +1140,7 @@ ) ) ) - (func $tee_if_with_unreachable_true (; 51 ;) (param $0 f64) (param $1 i32) (result i64) + (func $tee_if_with_unreachable_true (param $0 f64) (param $1 i32) (result i64) (call $tee_if_with_unreachable_else (local.tee $0 (if (result f64) @@ -1155,7 +1155,7 @@ ) ) ) - (func $pick (; 52 ;) + (func $pick (local $0 i32) (nop) (if @@ -1167,7 +1167,7 @@ (nop) (nop) ) - (func $pick-2 (; 53 ;) + (func $pick-2 (local $0 i32) (nop) (if @@ -1179,7 +1179,7 @@ (nop) (nop) ) - (func $many (; 54 ;) + (func $many (local $0 i32) (nop) (nop) @@ -1219,7 +1219,7 @@ ) (nop) ) - (func $loop-copies (; 55 ;) (param $0 i32) (param $1 i32) + (func $loop-copies (param $0 i32) (param $1 i32) (loop $loop (local.set $0 (local.get $1) @@ -1232,7 +1232,7 @@ ) ) ) - (func $proper-type (; 56 ;) (result f64) + (func $proper-type (result f64) (local $0 f64) (local $1 i32) (drop @@ -1244,7 +1244,7 @@ ) (local.get $0) ) - (func $reuse-param (; 57 ;) (param $0 i32) (param $1 i32) (result i32) + (func $reuse-param (param $0 i32) (param $1 i32) (result i32) (i32.add (local.tee $0 (i32.xor diff -Nru binaryen-91/test/passes/code-folding_enable-threads.txt binaryen-99/test/passes/code-folding_enable-threads.txt --- binaryen-91/test/passes/code-folding_enable-threads.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/code-folding_enable-threads.txt 2021-01-07 20:01:06.000000000 +0000 @@ -4,7 +4,7 @@ (type $f32_=>_none (func (param f32))) (memory $0 1 1) (table $0 282 282 funcref) - (func $0 (; 0 ;) + (func $0 (block $label$1 (if (i32.const 1) @@ -22,7 +22,7 @@ ) ) ) - (func $negative-zero (; 1 ;) (result f32) + (func $negative-zero (result f32) (if (result f32) (i32.const 0) (block $label$0 (result f32) @@ -33,7 +33,7 @@ ) ) ) - (func $negative-zero-b (; 2 ;) (result f32) + (func $negative-zero-b (result f32) (drop (i32.const 0) ) @@ -41,7 +41,7 @@ (f32.const -0) ) ) - (func $negative-zero-c (; 3 ;) (result f32) + (func $negative-zero-c (result f32) (drop (i32.const 0) ) @@ -49,7 +49,7 @@ (f32.const 0) ) ) - (func $break-target-outside-of-return-merged-code (; 4 ;) + (func $break-target-outside-of-return-merged-code (block $label$A (if (unreachable) @@ -80,7 +80,7 @@ ) ) ) - (func $break-target-inside-all-good (; 5 ;) + (func $break-target-inside-all-good (block $folding-inner0 (block $label$A (if @@ -106,7 +106,7 @@ ) (return) ) - (func $leave-inner-block-type (; 6 ;) + (func $leave-inner-block-type (block $label$1 (drop (block $label$2 @@ -127,7 +127,7 @@ (type $none_=>_i32 (func (result i32))) (memory $0 (shared 1 1)) (export "func_2224" (func $0)) - (func $0 (; 0 ;) (result i32) + (func $0 (result i32) (local $var$0 i32) (if (result i32) (i32.const 0) @@ -144,7 +144,7 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (global $global$0 (mut i32) (i32.const 10)) - (func $determinism (; 0 ;) + (func $determinism (block $folding-inner0 (block (block $label$1 @@ -182,7 +182,7 @@ ) (unreachable) ) - (func $careful-of-the-switch (; 1 ;) (param $0 i32) + (func $careful-of-the-switch (param $0 i32) (block $label$1 (block $label$3 (block $label$5 diff -Nru binaryen-91/test/passes/code-pushing_all-features.txt binaryen-99/test/passes/code-pushing_all-features.txt --- binaryen-91/test/passes/code-pushing_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/code-pushing_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -2,7 +2,7 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (event $e (attr 0) (param i32)) - (func $cant-push-past-call (; 0 ;) + (func $cant-push-past-call (local $x i32) (block $out (local.set $x @@ -20,7 +20,7 @@ ) ) ) - (func $cant-push-past-throw (; 1 ;) + (func $cant-push-past-throw (local $x i32) (block $out (local.set $x @@ -40,16 +40,18 @@ ) ) ) - (func $can-push-past-throw-within-try (; 2 ;) + (func $can-push-past-throw-within-try (local $x i32) (block $out (try - (throw $e - (i32.const 0) + (do + (throw $e + (i32.const 0) + ) ) (catch (drop - (exnref.pop) + (pop exnref) ) ) ) @@ -67,19 +69,21 @@ ) ) ) - (func $cant-push-past-rethrow-within-catch (; 3 ;) + (func $cant-push-past-rethrow-within-catch (local $x i32) (block $out (local.set $x (i32.const 1) ) (try - (throw $e - (i32.const 0) + (do + (throw $e + (i32.const 0) + ) ) (catch (rethrow - (exnref.pop) + (pop exnref) ) ) ) @@ -94,7 +98,7 @@ ) ) ) - (func $push-past-br-on-exn (; 4 ;) + (func $push-past-br-on-exn (local $x i32) (local $y exnref) (drop diff -Nru binaryen-91/test/passes/code-pushing_all-features.wast binaryen-99/test/passes/code-pushing_all-features.wast --- binaryen-91/test/passes/code-pushing_all-features.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/code-pushing_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -32,9 +32,11 @@ ;; to be caught by the inner catch (local.set $x (i32.const 1)) (try - (throw $e (i32.const 0)) + (do + (throw $e (i32.const 0)) + ) (catch - (drop (exnref.pop)) + (drop (pop exnref)) ) ) (drop (i32.const 1)) @@ -50,9 +52,11 @@ ;; the inner catch (local.set $x (i32.const 1)) (try - (throw $e (i32.const 0)) + (do + (throw $e (i32.const 0)) + ) (catch - (rethrow (exnref.pop)) + (rethrow (pop exnref)) ) ) (drop (i32.const 1)) diff -Nru binaryen-91/test/passes/code-pushing_ignore-implicit-traps.txt binaryen-99/test/passes/code-pushing_ignore-implicit-traps.txt --- binaryen-91/test/passes/code-pushing_ignore-implicit-traps.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/code-pushing_ignore-implicit-traps.txt 2021-01-07 20:01:06.000000000 +0000 @@ -2,7 +2,7 @@ (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) (memory $0 1) - (func $push1 (; 0 ;) + (func $push1 (local $x i32) (block $out (br_if $out @@ -16,7 +16,7 @@ ) ) ) - (func $push2 (; 1 ;) + (func $push2 (local $x i32) (local $y i32) (block $out @@ -37,7 +37,7 @@ ) ) ) - (func $push1-twice (; 2 ;) + (func $push1-twice (local $x i32) (block $out (br_if $out @@ -54,7 +54,7 @@ ) ) ) - (func $push1-twiceb (; 3 ;) + (func $push1-twiceb (local $x i32) (block $out (br_if $out @@ -72,7 +72,7 @@ ) ) ) - (func $push2-twice (; 4 ;) + (func $push2-twice (local $x i32) (local $y i32) (block $out @@ -96,7 +96,7 @@ ) ) ) - (func $ignore-last (; 5 ;) + (func $ignore-last (local $x i32) (block $out (local.set $x @@ -107,7 +107,7 @@ ) ) ) - (func $ignore-last2 (; 6 ;) + (func $ignore-last2 (local $x i32) (block $out (local.set $x @@ -120,7 +120,7 @@ ) ) ) - (func $push-if (; 7 ;) + (func $push-if (local $x i32) (block $out (if @@ -135,7 +135,7 @@ ) ) ) - (func $push-dropped (; 8 ;) (result i32) + (func $push-dropped (result i32) (local $x i32) (block $out (result i32) (drop @@ -153,7 +153,7 @@ (i32.const 4) ) ) - (func $push-past-stuff (; 9 ;) + (func $push-past-stuff (local $x i32) (block $out (call $push-past-stuff) @@ -171,7 +171,7 @@ ) ) ) - (func $fail-then-push (; 10 ;) + (func $fail-then-push (local $x i32) (local $y i32) (block $out @@ -198,7 +198,7 @@ ) ) ) - (func $used (; 11 ;) + (func $used (local $x i32) (block $out (local.set $x @@ -212,7 +212,7 @@ ) ) ) - (func $not-sfa (; 12 ;) + (func $not-sfa (local $x i32) (local.set $x (i32.const 1) @@ -229,7 +229,7 @@ ) ) ) - (func $not-sfa2 (; 13 ;) + (func $not-sfa2 (local $x i32) (drop (local.get $x) @@ -246,7 +246,7 @@ ) ) ) - (func $used-out (; 14 ;) + (func $used-out (local $x i32) (block $out (local.set $x @@ -263,7 +263,7 @@ (local.get $x) ) ) - (func $value-might-interfere (; 15 ;) + (func $value-might-interfere (local $x i32) (block $out (br_if $out @@ -279,7 +279,7 @@ ) ) ) - (func $value-interferes (; 16 ;) + (func $value-interferes (local $x i32) (block $out (local.set $x @@ -299,7 +299,7 @@ ) ) ) - (func $value-interferes-accumulation (; 17 ;) + (func $value-interferes-accumulation (local $x i32) (block $out (local.set $x @@ -321,7 +321,7 @@ ) ) ) - (func $value-interferes-in-pushpoint (; 18 ;) + (func $value-interferes-in-pushpoint (local $x i32) (block $out (local.set $x @@ -338,7 +338,7 @@ ) ) ) - (func $values-might-interfere (; 19 ;) + (func $values-might-interfere (local $x i32) (local $y i32) (block $out @@ -359,7 +359,7 @@ ) ) ) - (func $unpushed-interferes (; 20 ;) + (func $unpushed-interferes (local $x i32) (local $y i32) (block $out @@ -383,7 +383,7 @@ (local.get $y) ) ) - (func $unpushed-ignorable (; 21 ;) + (func $unpushed-ignorable (local $x i32) (local $y i32) (block $out @@ -407,7 +407,7 @@ (local.get $x) ) ) - (func $unpushed-ignorable-side-effect (; 22 ;) + (func $unpushed-ignorable-side-effect (local $x i32) (local $y i32) (block $out @@ -428,7 +428,7 @@ ) ) ) - (func $unpushed-side-effect-into-drop (; 23 ;) + (func $unpushed-side-effect-into-drop (local $x i32) (block $out (local.set $x @@ -442,7 +442,7 @@ ) ) ) - (func $unpushed-side-effect-into-if (; 24 ;) + (func $unpushed-side-effect-into-if (local $x i32) (block $out (local.set $x diff -Nru binaryen-91/test/passes/const-hoisting.txt binaryen-99/test/passes/const-hoisting.txt --- binaryen-91/test/passes/const-hoisting.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/const-hoisting.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ (module (type $none_=>_none (func)) - (func $10-of-each (; 0 ;) + (func $10-of-each (local $0 i32) (local $1 i32) (local $2 i32) @@ -420,7 +420,7 @@ ) ) ) - (func $floats-10-times (; 1 ;) + (func $floats-10-times (local $0 f32) (local $1 f64) (block @@ -494,7 +494,7 @@ ) ) ) - (func $too-few (; 2 ;) + (func $too-few (drop (i32.const 8192) ) @@ -511,7 +511,7 @@ (i32.const 8192) ) ) - (func $just-enough (; 3 ;) + (func $just-enough (local $0 i32) (block (local.set $0 @@ -539,7 +539,7 @@ ) ) ) - (func $too-few-b (; 4 ;) + (func $too-few-b (drop (i32.const 1048576) ) @@ -550,7 +550,7 @@ (i32.const 1048576) ) ) - (func $enough-b (; 5 ;) + (func $enough-b (local $0 i32) (block (local.set $0 @@ -572,7 +572,7 @@ ) ) ) - (func $too-few-c (; 6 ;) + (func $too-few-c (drop (f32.const 0) ) @@ -583,7 +583,7 @@ (f32.const 0) ) ) - (func $enough-c (; 7 ;) + (func $enough-c (local $0 f32) (block (local.set $0 @@ -605,12 +605,12 @@ ) ) ) - (func $too-few-d (; 8 ;) + (func $too-few-d (drop (f64.const 0) ) ) - (func $enough-d (; 9 ;) + (func $enough-d (local $0 f64) (block (local.set $0 diff -Nru binaryen-91/test/passes/converge_O3_metrics.bin.txt binaryen-99/test/passes/converge_O3_metrics.bin.txt --- binaryen-91/test/passes/converge_O3_metrics.bin.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/converge_O3_metrics.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -6,18 +6,18 @@ [imports] : 3 [memory-data] : 28 [table-data] : 429 - [total] : 132 + [total] : 129 [vars] : 4 binary : 12 block : 8 break : 3 call : 3 call_indirect : 4 - const : 47 + const : 45 drop : 3 global.get : 1 global.set : 1 - if : 3 + if : 2 load : 16 local.get : 18 local.set : 7 @@ -30,7 +30,7 @@ (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32 i32 i32) (result i32))) - (import "env" "memory" (memory $1 256 256)) + (import "env" "memory" (memory $mimport$0 256 256)) (data (i32.const 2948) "\03") (data (i32.const 6828) "\04") (data (i32.const 7028) "\0d\00\00\00\06") @@ -39,19 +39,19 @@ (data (i32.const 18128) ",I") (data (i32.const 18732) "D\1b") (data (i32.const 18764) "`\0b") - (import "env" "table" (table $timport$2 478 478 funcref)) + (import "env" "table" (table $timport$0 478 478 funcref)) (elem (i32.const 0) $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $___stdout_write $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $__ZNSt3__211__stdoutbufIcE6xsputnEPKci $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $__ZNSt3__211__stdoutbufIcE8overflowEi) (import "env" "___syscall146" (func $import$0 (param i32 i32) (result i32))) (global $global$0 (mut i32) (i32.const 1)) (export "_main" (func $_main)) (export "_malloc" (func $_malloc)) - (func $b0 (; 1 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i32) + (func $b0 (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i32) (i32.const 0) ) - (func $_malloc (; 2 ;) (; has Stack IR ;) (param $0 i32) (result i32) + (func $_malloc (; has Stack IR ;) (param $0 i32) (result i32) (i32.const 0) ) - (func $___stdio_write (; 3 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) + (func $___stdio_write (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) (i32.store (i32.const 8) (local.get $0) @@ -71,29 +71,25 @@ (i32.const 2) ) (drop - (if (result i32) - (call $import$0 - (i32.const 146) - (local.get $0) - ) - (i32.const -1) - (i32.const 0) + (call $import$0 + (i32.const 146) + (local.get $0) ) ) (i32.const 1) ) - (func $_main (; 4 ;) (; has Stack IR ;) (result i32) + (func $_main (; has Stack IR ;) (result i32) (local $0 i32) (local $1 i32) (local.set $1 (i32.load offset=24 (i32.add (i32.load - (i32.add + (i32.sub (i32.load (i32.const 18100) ) - (i32.const -12) + (i32.const 12) ) ) (i32.const 18100) @@ -145,7 +141,7 @@ (call $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE3putEc) (i32.const 0) ) - (func $___stdout_write (; 5 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $___stdout_write (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (global.set $global$0 (i32.const 32) ) @@ -154,7 +150,7 @@ (local.get $2) ) ) - (func $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE3putEc (; 6 ;) (; has Stack IR ;) + (func $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE3putEc (; has Stack IR ;) (local $0 i32) (local $1 i32) (block $label$1 @@ -167,11 +163,11 @@ (i32.load (i32.add (i32.load - (i32.add + (i32.sub (i32.load (i32.const 18100) ) - (i32.const -12) + (i32.const 12) ) ) (i32.const 18124) @@ -199,7 +195,7 @@ ) ) ) - (func $__ZNSt3__211__stdoutbufIcE8overflowEi (; 7 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) + (func $__ZNSt3__211__stdoutbufIcE8overflowEi (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) (i32.store8 (i32.const 0) (local.get $1) @@ -224,7 +220,7 @@ ) (i32.const 0) ) - (func $__ZNSt3__211__stdoutbufIcE6xsputnEPKci (; 8 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $__ZNSt3__211__stdoutbufIcE6xsputnEPKci (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (drop (call_indirect (type $i32_i32_i32_=>_i32) (i32.const 0) @@ -251,18 +247,18 @@ [imports] : 3 [memory-data] : 28 [table-data] : 429 - [total] : 132 + [total] : 129 [vars] : 4 binary : 12 block : 8 break : 3 call : 3 call_indirect : 4 - const : 47 + const : 45 drop : 3 global.get : 1 global.set : 1 - if : 3 + if : 2 load : 16 local.get : 18 local.set : 7 @@ -275,7 +271,7 @@ (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32 i32 i32) (result i32))) - (import "env" "memory" (memory $1 256 256)) + (import "env" "memory" (memory $mimport$0 256 256)) (data (i32.const 2948) "\03") (data (i32.const 6828) "\04") (data (i32.const 7028) "\0d\00\00\00\06") @@ -284,19 +280,19 @@ (data (i32.const 18128) ",I") (data (i32.const 18732) "D\1b") (data (i32.const 18764) "`\0b") - (import "env" "table" (table $timport$2 478 478 funcref)) + (import "env" "table" (table $timport$0 478 478 funcref)) (elem (i32.const 0) $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $___stdout_write $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $__ZNSt3__211__stdoutbufIcE6xsputnEPKci $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $__ZNSt3__211__stdoutbufIcE8overflowEi) (import "env" "___syscall146" (func $import$0 (param i32 i32) (result i32))) (global $global$0 (mut i32) (i32.const 1)) (export "_main" (func $_main)) (export "_malloc" (func $_malloc)) - (func $b0 (; 1 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i32) + (func $b0 (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i32) (i32.const 0) ) - (func $_malloc (; 2 ;) (; has Stack IR ;) (param $0 i32) (result i32) + (func $_malloc (; has Stack IR ;) (param $0 i32) (result i32) (i32.const 0) ) - (func $___stdio_write (; 3 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) + (func $___stdio_write (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) (i32.store (i32.const 8) (local.get $0) @@ -316,29 +312,25 @@ (i32.const 2) ) (drop - (if (result i32) - (call $import$0 - (i32.const 146) - (local.get $0) - ) - (i32.const -1) - (i32.const 0) + (call $import$0 + (i32.const 146) + (local.get $0) ) ) (i32.const 1) ) - (func $_main (; 4 ;) (; has Stack IR ;) (result i32) + (func $_main (; has Stack IR ;) (result i32) (local $0 i32) (local $1 i32) (local.set $1 (i32.load offset=24 (i32.add (i32.load - (i32.add + (i32.sub (i32.load (i32.const 18100) ) - (i32.const -12) + (i32.const 12) ) ) (i32.const 18100) @@ -390,7 +382,7 @@ (call $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE3putEc) (i32.const 0) ) - (func $___stdout_write (; 5 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $___stdout_write (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (global.set $global$0 (i32.const 32) ) @@ -399,7 +391,7 @@ (local.get $2) ) ) - (func $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE3putEc (; 6 ;) (; has Stack IR ;) + (func $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE3putEc (; has Stack IR ;) (local $0 i32) (local $1 i32) (block $label$1 @@ -412,11 +404,11 @@ (i32.load (i32.add (i32.load - (i32.add + (i32.sub (i32.load (i32.const 18100) ) - (i32.const -12) + (i32.const 12) ) ) (i32.const 18124) @@ -444,7 +436,7 @@ ) ) ) - (func $__ZNSt3__211__stdoutbufIcE8overflowEi (; 7 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) + (func $__ZNSt3__211__stdoutbufIcE8overflowEi (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) (i32.store8 (i32.const 0) (local.get $1) @@ -469,7 +461,7 @@ ) (i32.const 0) ) - (func $__ZNSt3__211__stdoutbufIcE6xsputnEPKci (; 8 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $__ZNSt3__211__stdoutbufIcE6xsputnEPKci (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (drop (call_indirect (type $i32_i32_i32_=>_i32) (i32.const 0) diff -Nru binaryen-91/test/passes/dae_all-features.txt binaryen-99/test/passes/dae_all-features.txt --- binaryen-91/test/passes/dae_all-features.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/dae_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,293 @@ +(module + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) + (type $f64_=>_none (func (param f64))) + (table $0 2 2 funcref) + (elem (i32.const 0) $a9 $c8) + (export "a8" (func $a8)) + (func $a + (local $0 i32) + (local.set $0 + (i32.const 1) + ) + (nop) + ) + (func $b + (call $a) + ) + (func $a1 + (local $0 i32) + (local.set $0 + (i32.const 2) + ) + (unreachable) + ) + (func $b1 + (call $a1) + ) + (func $b11 + (call $a1) + ) + (func $a2 (param $x i32) + (drop + (local.get $x) + ) + ) + (func $b2 + (call $a2 + (i32.const 3) + ) + ) + (func $b22 + (call $a2 + (i32.const 4) + ) + ) + (func $a3 + (local $0 i32) + (drop + (i32.const -1) + ) + ) + (func $b3 + (call $a3) + ) + (func $b33 + (call $a3) + ) + (func $a4 (param $x i32) + (nop) + ) + (func $b4 + (call $a4 + (unreachable) + ) + ) + (func $b43 + (call $a4 + (i32.const 4) + ) + ) + (func $a5 + (local $0 f64) + (local $1 i32) + (local.set $0 + (f64.const 3.14159) + ) + (block + (local.set $1 + (i32.const 1) + ) + (block + (drop + (local.get $1) + ) + (drop + (local.get $0) + ) + ) + ) + ) + (func $b5 + (call $a5) + ) + (func $a6 (param $0 i32) + (local $1 f64) + (local.set $1 + (f64.const 3.14159) + ) + (block + (drop + (local.get $0) + ) + (drop + (local.get $1) + ) + ) + ) + (func $b6 + (call $a6 + (unreachable) + ) + ) + (func $a7 (param $0 f64) + (local $1 i32) + (local.set $1 + (i32.const 1) + ) + (block + (drop + (local.get $1) + ) + (drop + (local.get $0) + ) + ) + ) + (func $b7 + (call $a7 + (unreachable) + ) + ) + (func $a8 (param $x i32) + (nop) + ) + (func $b8 + (call $a8 + (i32.const 1) + ) + ) + (func $a9 (param $x i32) + (nop) + ) + (func $b9 + (call $a9 + (i32.const 1) + ) + ) + (func $a10 + (local $0 i32) + (local.set $0 + (i32.const 1) + ) + (block + (call $a10) + (call $a10) + ) + ) + (func $a11 + (local $0 i32) + (call $a11) + (call $a11) + ) + (func $a12 (param $x i32) + (drop + (local.get $x) + ) + (call $a12 + (i32.const 1) + ) + (call $a12 + (i32.const 2) + ) + ) + (func $c1 + (local $x i32) + (call $c2) + (call $c3) + (call $c3) + (drop + (call $c4) + ) + (local.set $x + (call $c4) + ) + (call $c5 + (unreachable) + ) + (call $c6) + (call $c7) + (drop + (call $c8) + ) + ) + (func $c2 + (drop + (i32.const 1) + ) + ) + (func $c3 + (drop + (i32.const 2) + ) + ) + (func $c4 (result i32) + (i32.const 3) + ) + (func $c5 (param $x i32) + (drop + (local.get $x) + ) + ) + (func $c6 + (unreachable) + ) + (func $c7 + (drop + (i32.const 4) + ) + (return) + ) + (func $c8 (result i32) + (i32.const 5) + ) +) +(module + (type $none_=>_none (func)) + (export "a" (func $0)) + (func $0 + (call $b) + ) + (func $b + (local $0 i32) + (drop + (block (result i32) + (local.set $0 + (i32.const 1) + ) + (local.get $0) + ) + ) + ) +) +(module + (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (func $foo (param $x i32) (result i32) + (drop + (return_call $bar) + ) + (i32.const 42) + ) + (func $bar (result i32) + (local $0 i32) + (local.set $0 + (i32.const 0) + ) + (i32.const 7) + ) +) +(module + (type $none_=>_i32 (func (result i32))) + (type $none_=>_none (func)) + (table $0 1 1 funcref) + (func $foo (result i32) + (local $0 i32) + (local.set $0 + (i32.const 42) + ) + (drop + (return_call_indirect (type $none_=>_i32) + (i32.const 0) + ) + ) + ) + (func $bar + (drop + (call $foo) + ) + ) +) +(module + (type $funcref_i32_f64_=>_i64 (func (param funcref i32 f64) (result i64))) + (type $f32_=>_funcref (func (param f32) (result funcref))) + (export "export" (func $1)) + (func $0 (param $0 funcref) (param $1 i32) (param $2 f64) (result i64) + (nop) + (unreachable) + ) + (func $1 (param $0 f32) (result funcref) + (ref.func $0) + ) +) diff -Nru binaryen-91/test/passes/dae_all-features.wast binaryen-99/test/passes/dae_all-features.wast --- binaryen-91/test/passes/dae_all-features.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/dae_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,174 @@ +(module + (export "a8" (func $a8)) + (table 2 2 funcref) + (elem (i32.const 0) $a9 $c8) + (func $a (param $x i32)) + (func $b + (call $a (i32.const 1)) ;; best case scenario + ) + (func $a1 (param $x i32) + (unreachable) + ) + (func $b1 + (call $a1 (i32.const 2)) ;; same value in both, so works + ) + (func $b11 + (call $a1 (i32.const 2)) + ) + (func $a2 (param $x i32) + (drop (local.get $x)) + ) + (func $b2 + (call $a2 (i32.const 3)) ;; different value! + ) + (func $b22 + (call $a2 (i32.const 4)) + ) + (func $a3 (param $x i32) + (drop (i32.const -1)) ;; diff value, but at least unused, so no need to send + ) + (func $b3 + (call $a3 (i32.const 3)) + ) + (func $b33 + (call $a3 (i32.const 4)) + ) + (func $a4 (param $x i32) ;; diff value, but with effects + ) + (func $b4 + (call $a4 (unreachable)) + ) + (func $b43 + (call $a4 (i32.const 4)) + ) + (func $a5 (param $x i32) (param $y f64) ;; optimize two + (drop (local.get $x)) + (drop (local.get $y)) + ) + (func $b5 + (call $a5 (i32.const 1) (f64.const 3.14159)) + ) + (func $a6 (param $x i32) (param $y f64) ;; optimize just one + (drop (local.get $x)) + (drop (local.get $y)) + ) + (func $b6 + (call $a6 (unreachable) (f64.const 3.14159)) + ) + (func $a7 (param $x i32) (param $y f64) ;; optimize just the other one + (drop (local.get $x)) + (drop (local.get $y)) + ) + (func $b7 + (call $a7 (i32.const 1) (unreachable)) + ) + (func $a8 (param $x i32)) ;; exported, do not optimize + (func $b8 + (call $a8 (i32.const 1)) + ) + (func $a9 (param $x i32)) ;; tabled, do not optimize + (func $b9 + (call $a9 (i32.const 1)) + ) + (func $a10 (param $x i32) ;; recursion + (call $a10 (i32.const 1)) + (call $a10 (i32.const 1)) + ) + (func $a11 (param $x i32) ;; partially successful recursion + (call $a11 (i32.const 1)) + (call $a11 (i32.const 2)) + ) + (func $a12 (param $x i32) ;; unsuccessful recursion + (drop (local.get $x)) + (call $a12 (i32.const 1)) + (call $a12 (i32.const 2)) + ) + ;; return values + (func $c1 + (local $x i32) + (drop (call $c2)) + (drop (call $c3)) + (drop (call $c3)) + (drop (call $c4)) + (local.set $x (call $c4)) + (drop (call $c5 (unreachable))) + (drop (call $c6)) + (drop (call $c7)) + (drop (call $c8)) + ) + (func $c2 (result i32) + (i32.const 1) + ) + (func $c3 (result i32) + (i32.const 2) + ) + (func $c4 (result i32) + (i32.const 3) + ) + (func $c5 (param $x i32) (result i32) + (local.get $x) + ) + (func $c6 (result i32) + (unreachable) + ) + (func $c7 (result i32) + (return (i32.const 4)) + ) + (func $c8 (result i32) + (i32.const 5) + ) +) +(module ;; both operations at once: remove params and return value + (func "a" + (drop + (call $b + (i32.const 1) + ) + ) + ) + (func $b (param $x i32) (result i32) + (local.get $x) + ) +) +(module ;; tail calls inhibit dropped result removal + (func $foo (param $x i32) (result i32) + (drop + (return_call $bar + (i32.const 0) + ) + ) + (i32.const 42) + ) + (func $bar (param $x i32) (result i32) + (i32.const 7) + ) +) +(module ;; indirect tail calls inhibit dropped result removal + (type $T (func (result i32))) + (table 1 1 funcref) + (func $foo (param $x i32) (result i32) + (drop + (return_call_indirect (type $T) + (i32.const 0) + ) + ) + ) + (func $bar + (drop + (call $foo + (i32.const 42) + ) + ) + ) +) +(module + (func $0 (param $0 funcref) (param $1 i32) (param $2 f64) (result i64) + (nop) + (unreachable) + ) + (func "export" (param $0 f32) (result funcref) + ;; a ref.func should prevent us from changing the type of a function, as it + ;; may escape + (ref.func $0) + ) +) diff -Nru binaryen-91/test/passes/dae_enable-tail-call.txt binaryen-99/test/passes/dae_enable-tail-call.txt --- binaryen-91/test/passes/dae_enable-tail-call.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/dae_enable-tail-call.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,281 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (type $f64_=>_none (func (param f64))) - (table $0 2 2 funcref) - (elem (i32.const 0) $a9 $c8) - (export "a8" (func $a8)) - (func $a (; 0 ;) - (local $0 i32) - (local.set $0 - (i32.const 1) - ) - (nop) - ) - (func $b (; 1 ;) - (call $a) - ) - (func $a1 (; 2 ;) - (local $0 i32) - (local.set $0 - (i32.const 2) - ) - (unreachable) - ) - (func $b1 (; 3 ;) - (call $a1) - ) - (func $b11 (; 4 ;) - (call $a1) - ) - (func $a2 (; 5 ;) (param $x i32) - (drop - (local.get $x) - ) - ) - (func $b2 (; 6 ;) - (call $a2 - (i32.const 3) - ) - ) - (func $b22 (; 7 ;) - (call $a2 - (i32.const 4) - ) - ) - (func $a3 (; 8 ;) - (local $0 i32) - (drop - (i32.const -1) - ) - ) - (func $b3 (; 9 ;) - (call $a3) - ) - (func $b33 (; 10 ;) - (call $a3) - ) - (func $a4 (; 11 ;) (param $x i32) - (nop) - ) - (func $b4 (; 12 ;) - (call $a4 - (unreachable) - ) - ) - (func $b43 (; 13 ;) - (call $a4 - (i32.const 4) - ) - ) - (func $a5 (; 14 ;) - (local $0 f64) - (local $1 i32) - (local.set $0 - (f64.const 3.14159) - ) - (block - (local.set $1 - (i32.const 1) - ) - (block - (drop - (local.get $1) - ) - (drop - (local.get $0) - ) - ) - ) - ) - (func $b5 (; 15 ;) - (call $a5) - ) - (func $a6 (; 16 ;) (param $0 i32) - (local $1 f64) - (local.set $1 - (f64.const 3.14159) - ) - (block - (drop - (local.get $0) - ) - (drop - (local.get $1) - ) - ) - ) - (func $b6 (; 17 ;) - (call $a6 - (unreachable) - ) - ) - (func $a7 (; 18 ;) (param $0 f64) - (local $1 i32) - (local.set $1 - (i32.const 1) - ) - (block - (drop - (local.get $1) - ) - (drop - (local.get $0) - ) - ) - ) - (func $b7 (; 19 ;) - (call $a7 - (unreachable) - ) - ) - (func $a8 (; 20 ;) (param $x i32) - (nop) - ) - (func $b8 (; 21 ;) - (call $a8 - (i32.const 1) - ) - ) - (func $a9 (; 22 ;) (param $x i32) - (nop) - ) - (func $b9 (; 23 ;) - (call $a9 - (i32.const 1) - ) - ) - (func $a10 (; 24 ;) - (local $0 i32) - (local.set $0 - (i32.const 1) - ) - (block - (call $a10) - (call $a10) - ) - ) - (func $a11 (; 25 ;) - (local $0 i32) - (call $a11) - (call $a11) - ) - (func $a12 (; 26 ;) (param $x i32) - (drop - (local.get $x) - ) - (call $a12 - (i32.const 1) - ) - (call $a12 - (i32.const 2) - ) - ) - (func $c1 (; 27 ;) - (local $x i32) - (call $c2) - (call $c3) - (call $c3) - (drop - (call $c4) - ) - (local.set $x - (call $c4) - ) - (call $c5 - (unreachable) - ) - (call $c6) - (call $c7) - (drop - (call $c8) - ) - ) - (func $c2 (; 28 ;) - (drop - (i32.const 1) - ) - ) - (func $c3 (; 29 ;) - (drop - (i32.const 2) - ) - ) - (func $c4 (; 30 ;) (result i32) - (i32.const 3) - ) - (func $c5 (; 31 ;) (param $x i32) - (drop - (local.get $x) - ) - ) - (func $c6 (; 32 ;) - (unreachable) - ) - (func $c7 (; 33 ;) - (drop - (i32.const 4) - ) - (return) - ) - (func $c8 (; 34 ;) (result i32) - (i32.const 5) - ) -) -(module - (type $none_=>_none (func)) - (export "a" (func $0)) - (func $0 (; 0 ;) - (call $b) - ) - (func $b (; 1 ;) - (local $0 i32) - (drop - (block (result i32) - (local.set $0 - (i32.const 1) - ) - (local.get $0) - ) - ) - ) -) -(module - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (func $foo (; 0 ;) (param $x i32) (result i32) - (drop - (return_call $bar) - ) - (i32.const 42) - ) - (func $bar (; 1 ;) (result i32) - (local $0 i32) - (local.set $0 - (i32.const 0) - ) - (i32.const 7) - ) -) -(module - (type $none_=>_i32 (func (result i32))) - (type $none_=>_none (func)) - (table $0 1 1 funcref) - (func $foo (; 0 ;) (result i32) - (local $0 i32) - (local.set $0 - (i32.const 42) - ) - (drop - (return_call_indirect (type $none_=>_i32) - (i32.const 0) - ) - ) - ) - (func $bar (; 1 ;) - (drop - (call $foo) - ) - ) -) diff -Nru binaryen-91/test/passes/dae_enable-tail-call.wast binaryen-99/test/passes/dae_enable-tail-call.wast --- binaryen-91/test/passes/dae_enable-tail-call.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/dae_enable-tail-call.wast 1970-01-01 00:00:00.000000000 +0000 @@ -1,163 +0,0 @@ -(module - (export "a8" (func $a8)) - (table 2 2 funcref) - (elem (i32.const 0) $a9 $c8) - (func $a (param $x i32)) - (func $b - (call $a (i32.const 1)) ;; best case scenario - ) - (func $a1 (param $x i32) - (unreachable) - ) - (func $b1 - (call $a1 (i32.const 2)) ;; same value in both, so works - ) - (func $b11 - (call $a1 (i32.const 2)) - ) - (func $a2 (param $x i32) - (drop (local.get $x)) - ) - (func $b2 - (call $a2 (i32.const 3)) ;; different value! - ) - (func $b22 - (call $a2 (i32.const 4)) - ) - (func $a3 (param $x i32) - (drop (i32.const -1)) ;; diff value, but at least unused, so no need to send - ) - (func $b3 - (call $a3 (i32.const 3)) - ) - (func $b33 - (call $a3 (i32.const 4)) - ) - (func $a4 (param $x i32) ;; diff value, but with effects - ) - (func $b4 - (call $a4 (unreachable)) - ) - (func $b43 - (call $a4 (i32.const 4)) - ) - (func $a5 (param $x i32) (param $y f64) ;; optimize two - (drop (local.get $x)) - (drop (local.get $y)) - ) - (func $b5 - (call $a5 (i32.const 1) (f64.const 3.14159)) - ) - (func $a6 (param $x i32) (param $y f64) ;; optimize just one - (drop (local.get $x)) - (drop (local.get $y)) - ) - (func $b6 - (call $a6 (unreachable) (f64.const 3.14159)) - ) - (func $a7 (param $x i32) (param $y f64) ;; optimize just the other one - (drop (local.get $x)) - (drop (local.get $y)) - ) - (func $b7 - (call $a7 (i32.const 1) (unreachable)) - ) - (func $a8 (param $x i32)) ;; exported, do not optimize - (func $b8 - (call $a8 (i32.const 1)) - ) - (func $a9 (param $x i32)) ;; tabled, do not optimize - (func $b9 - (call $a9 (i32.const 1)) - ) - (func $a10 (param $x i32) ;; recursion - (call $a10 (i32.const 1)) - (call $a10 (i32.const 1)) - ) - (func $a11 (param $x i32) ;; partially successful recursion - (call $a11 (i32.const 1)) - (call $a11 (i32.const 2)) - ) - (func $a12 (param $x i32) ;; unsuccessful recursion - (drop (local.get $x)) - (call $a12 (i32.const 1)) - (call $a12 (i32.const 2)) - ) - ;; return values - (func $c1 - (local $x i32) - (drop (call $c2)) - (drop (call $c3)) - (drop (call $c3)) - (drop (call $c4)) - (local.set $x (call $c4)) - (drop (call $c5 (unreachable))) - (drop (call $c6)) - (drop (call $c7)) - (drop (call $c8)) - ) - (func $c2 (result i32) - (i32.const 1) - ) - (func $c3 (result i32) - (i32.const 2) - ) - (func $c4 (result i32) - (i32.const 3) - ) - (func $c5 (param $x i32) (result i32) - (local.get $x) - ) - (func $c6 (result i32) - (unreachable) - ) - (func $c7 (result i32) - (return (i32.const 4)) - ) - (func $c8 (result i32) - (i32.const 5) - ) -) -(module ;; both operations at once: remove params and return value - (func "a" - (drop - (call $b - (i32.const 1) - ) - ) - ) - (func $b (param $x i32) (result i32) - (local.get $x) - ) -) -(module ;; tail calls inhibit dropped result removal - (func $foo (param $x i32) (result i32) - (drop - (return_call $bar - (i32.const 0) - ) - ) - (i32.const 42) - ) - (func $bar (param $x i32) (result i32) - (i32.const 7) - ) -) -(module ;; indirect tail calls inhibit dropped result removal - (type $T (func (result i32))) - (table 1 1 funcref) - (func $foo (param $x i32) (result i32) - (drop - (return_call_indirect (type $T) - (i32.const 0) - ) - ) - ) - (func $bar - (drop - (call $foo - (i32.const 42) - ) - ) - ) -) diff -Nru binaryen-91/test/passes/dae-optimizing.txt binaryen-99/test/passes/dae-optimizing.txt --- binaryen-91/test/passes/dae-optimizing.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/dae-optimizing.txt 2021-01-07 20:01:06.000000000 +0000 @@ -3,7 +3,7 @@ (type $f64_f32_f32_f64_f32_i32_i32_f64_=>_i32 (func (param f64 f32 f32 f64 f32 i32 i32 f64) (result i32))) (type $none_=>_f32 (func (result f32))) (global $global$0 (mut i32) (i32.const 10)) - (func $0 (; 0 ;) (result i32) + (func $0 (result i32) (local $0 i32) (local $1 i32) (drop @@ -34,10 +34,10 @@ ) (i32.const -11) ) - (func $1 (; 1 ;) (result f32) + (func $1 (result f32) (f32.const 0) ) - (func $2 (; 2 ;) (param $0 f64) (param $1 f32) (param $2 f32) (param $3 f64) (param $4 f32) (param $5 i32) (param $6 i32) (param $7 f64) (result i32) + (func $2 (param $0 f64) (param $1 f32) (param $2 f32) (param $3 f64) (param $4 f32) (param $5 i32) (param $6 i32) (param $7 f64) (result i32) (call $0) ) ) diff -Nru binaryen-91/test/passes/dce_all-features.txt binaryen-99/test/passes/dce_all-features.txt --- binaryen-91/test/passes/dce_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/dce_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -10,10 +10,10 @@ (table $0 1 1 funcref) (elem (i32.const 0) $call-me) (global $x (mut i32) (i32.const 0)) - (func $call-me (; 0 ;) (param $0 i32) (param $1 i32) + (func $call-me (param $0 i32) (param $1 i32) (nop) ) - (func $code-to-kill (; 1 ;) + (func $code-to-kill (local $x i32) (block $out (br $out) @@ -24,7 +24,9 @@ ) (if (i32.const 0) - (return) + (block $out3 + (return) + ) ) (block $out4 (br_table $out4 $out4 $out4 $out4 @@ -41,10 +43,12 @@ ) (if (i32.const 0) - (if - (i32.const 0) - (unreachable) - (unreachable) + (block $block4 + (if + (i32.const 0) + (unreachable) + (unreachable) + ) ) ) (if @@ -69,13 +73,15 @@ ) (if (i32.const 0) - (block $out18 - (block $in19 - (br_if $in19 - (i32.const 1) + (block $block11 + (block $out18 + (block $in19 + (br_if $in19 + (i32.const 1) + ) ) + (unreachable) ) - (unreachable) ) ) (block $out20 @@ -96,13 +102,15 @@ ) (if (i32.const 0) - (block $out25 - (block $in26 - (br_table $in26 $in26 - (i32.const 1) + (block $block13 + (block $out25 + (block $in26 + (br_table $in26 $in26 + (i32.const 1) + ) ) + (unreachable) ) - (unreachable) ) ) (if @@ -122,7 +130,7 @@ (unreachable) ) (block $out29 - (block + (loop $in30 (br_if $out29 (i32.const 1) ) @@ -131,11 +139,13 @@ ) (if (i32.const 0) - (loop $in32 - (br_if $in32 - (i32.const 1) + (block $block20 + (loop $in32 + (br_if $in32 + (i32.const 1) + ) + (unreachable) ) - (unreachable) ) ) (if @@ -264,20 +274,24 @@ (i32.const 1337) ) ) - (func $killer (; 2 ;) + (func $killer (unreachable) ) - (func $target (; 3 ;) + (func $target (drop (i32.const 2000) ) ) - (func $typed-block-none-then-unreachable (; 4 ;) (result i32) - (return - (i32.const 0) + (func $typed-block-none-then-unreachable (result i32) + (block $top-typed + (block $switch$0 + (return + (i32.const 0) + ) + ) ) ) - (func $typed-block-remove-br-changes-type (; 5 ;) (param $$$0 i32) (result i32) + (func $typed-block-remove-br-changes-type (param $$$0 i32) (result i32) (block $switch$7 (block $switch-default$10 (block $switch-case$9 @@ -296,57 +310,65 @@ ) ) ) - (func $global (; 6 ;) + (func $global (unreachable) ) - (func $ret (; 7 ;) (result i32) + (func $ret (result i32) (return (i32.const 0) ) ) - (func $unreachable-br (; 8 ;) (result i32) + (func $unreachable-br (result i32) (block $out (result i32) (br $out (i32.const 0) ) ) ) - (func $unreachable-br-loop (; 9 ;) (result i32) + (func $unreachable-br-loop (result i32) (loop $out (br $out) ) ) - (func $unreachable-block-ends-switch (; 10 ;) (result i32) - (block $label$3 - (nop) - (unreachable) + (func $unreachable-block-ends-switch (result i32) + (block $label$0 + (block $label$3 + (nop) + (unreachable) + ) ) ) - (func $unreachable-block-ends-br_if (; 11 ;) (result i32) - (block $label$2 - (nop) - (unreachable) + (func $unreachable-block-ends-br_if (result i32) + (block $label$0 + (block $label$2 + (nop) + (unreachable) + ) ) ) - (func $unreachable-brs-3 (; 12 ;) (result i32) + (func $unreachable-brs-3 (result i32) (block $label$0 (result i32) (br $label$0 (i32.const 18) ) ) ) - (func $unreachable-brs-4 (; 13 ;) (param $var$0 i32) (result i32) + (func $unreachable-brs-4 (param $var$0 i32) (result i32) (drop (i32.const 1) ) - (block - (drop - (i32.const 4104) + (block $label$0 + (block $label$1 + (block + (drop + (i32.const 4104) + ) + (unreachable) + ) ) - (unreachable) ) ) - (func $call-unreach (; 14 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (func $call-unreach (param $var$0 i64) (param $var$1 i64) (result i64) (local $2 i64) (if (result i64) (i64.eqz @@ -355,35 +377,39 @@ (block $label$0 (result i64) (local.get $var$1) ) - (block - (drop - (i64.sub - (local.get $var$0) - (i64.const 1) - ) - ) + (block $label$1 (block (drop - (block $block (result i64) - (local.set $2 - (local.get $var$0) + (i64.sub + (local.get $var$0) + (i64.const 1) + ) + ) + (block + (drop + (block $block (result i64) + (local.set $2 + (local.get $var$0) + ) + (nop) + (local.get $2) ) - (nop) - (local.get $2) ) + (unreachable) ) - (unreachable) ) ) ) ) - (func $br-gone-means-block-type-changes-then-refinalize-at-end-is-too-late (; 15 ;) (param $var$0 i32) (result i32) - (block $block - (nop) - (unreachable) + (func $br-gone-means-block-type-changes-then-refinalize-at-end-is-too-late (param $var$0 i32) (result i32) + (block $label$0 + (block $block + (nop) + (unreachable) + ) ) ) - (func $br-with-unreachable-value-should-not-give-a-block-a-value (; 16 ;) (param $var$0 i32) (result i32) + (func $br-with-unreachable-value-should-not-give-a-block-a-value (param $var$0 i32) (result i32) (block $label$0 (result i32) (block $block (drop @@ -396,39 +422,47 @@ ) ) ) - (func $replace-br-value-of-i32-with-unreachable (; 17 ;) (result i32) - (block $label$1 - (nop) - (unreachable) + (func $replace-br-value-of-i32-with-unreachable (result i32) + (block $label$0 + (block $label$1 + (nop) + (unreachable) + ) ) ) - (func $shorten-block-requires-sync-refinalize (; 18 ;) (param $var$0 i32) (param $var$1 i32) + (func $shorten-block-requires-sync-refinalize (param $var$0 i32) (param $var$1 i32) (unreachable) ) - (func $block-with-type-but-is-unreachable (; 19 ;) (param $var$0 i32) (result i32) - (block $block - (nop) - (unreachable) + (func $block-with-type-but-is-unreachable (param $var$0 i32) (result i32) + (block $label$0 + (block $block + (nop) + (unreachable) + ) ) ) - (func $if-with-type-but-is-unreachable (; 20 ;) (param $var$0 i32) (result i32) - (if - (local.get $var$0) - (unreachable) - (unreachable) + (func $if-with-type-but-is-unreachable (param $var$0 i32) (result i32) + (block $label$0 + (if + (local.get $var$0) + (unreachable) + (unreachable) + ) ) ) - (func $unreachable-loop (; 21 ;) + (func $unreachable-loop (unreachable) ) - (func $br-block-from-unary (; 22 ;) (result i32) + (func $br-block-from-unary (result i32) (block $label$6 (result i32) - (br $label$6 - (i32.const 8) + (block $label$7 + (br $label$6 + (i32.const 8) + ) ) ) ) - (func $replace-unary-with-br-child (; 23 ;) + (func $replace-unary-with-br-child (drop (block $label$6 (result i32) (br $label$6 @@ -437,29 +471,33 @@ ) ) ) - (func $br_if-unreach-then-br_if-normal (; 24 ;) + (func $br_if-unreach-then-br_if-normal (block $out (nop) (unreachable) ) ) - (func $replace-with-unreachable-affects-parent (; 25 ;) (param $var$0 f32) (param $var$1 i64) - (drop - (i64.const 0) - ) - (if - (block $block (result i32) - (call $replace-with-unreachable-affects-parent - (f32.const 1) - (i64.const -15917430362925035) + (func $replace-with-unreachable-affects-parent (param $var$0 f32) (param $var$1 i64) + (block $top + (block + (drop + (i64.const 0) + ) + (if + (block $block (result i32) + (call $replace-with-unreachable-affects-parent + (f32.const 1) + (i64.const -15917430362925035) + ) + (i32.const 1) + ) + (unreachable) + (unreachable) ) - (i32.const 1) ) - (unreachable) - (unreachable) ) ) - (func $replace-block-changes-later-when-if-goes (; 26 ;) + (func $replace-block-changes-later-when-if-goes (block $top (global.set $x (i32.const 0) @@ -475,14 +513,14 @@ ) ) ) - (func $helper (; 27 ;) (param $var$0 f32) (param $var$1 i64) (result i32) + (func $helper (param $var$0 f32) (param $var$1 i64) (result i32) (i32.const 0) ) ) (module (type $none_=>_none (func)) (global $global (mut f64) (f64.const 0)) - (func $0 (; 0 ;) + (func $0 (if (i32.const 0) (unreachable) @@ -492,7 +530,7 @@ ) (module (type $none_=>_none (func)) - (func $0 (; 0 ;) + (func $0 (local $local f64) (if (i32.const 0) @@ -503,43 +541,108 @@ ) (module (type $none_=>_none (func)) - (func $foo (; 0 ;) + (type $none_=>_i32 (func (result i32))) + (event $e (attr 0) (param)) + (func $foo (nop) ) - (func $try_unreachable (; 1 ;) + (func $try_unreachable (try - (unreachable) + (do + (unreachable) + ) (catch + (drop + (pop exnref) + ) ) ) (call $foo) ) - (func $catch_unreachable (; 2 ;) + (func $catch_unreachable (try - (nop) + (do + (nop) + ) (catch (unreachable) ) ) (call $foo) ) - (func $both_unreachable (; 3 ;) + (func $both_unreachable (try - (unreachable) + (do + (unreachable) + ) (catch (unreachable) ) ) ) -) -(module - (type $none_=>_none (func)) - (func $foo (; 0 ;) - (nop) + (func $throw + (block $label$0 + (block $label$1 + (throw $e + ) + ) + ) ) - (func $push_unreachable (; 1 ;) - (push + (func $rethrow + (block $label$0 + (block $label$1 + (rethrow + (ref.null exn) + ) + ) + ) + ) + (func $unnecessary-concrete-block (result i32) + (block $foo + (nop) + (unreachable) + ) + ) + (func $necessary-concrete-block (result i32) + (block $foo (result i32) + (br $foo + (i32.const 1) + ) + ) + ) + (func $unnecessary-concrete-if (result i32) + (if + (i32.const 0) + (return + (i32.const 1) + ) (unreachable) ) ) + (func $unnecessary-concrete-try (result i32) + (try + (do + (unreachable) + ) + (catch + (unreachable) + ) + ) + ) + (func $note-loss-of-if-children + (block $label$1 + (block $label$2 + (nop) + (unreachable) + ) + ) + ) + (func $note-loss-of-non-control-flow-children + (block $out + (block $block + (nop) + (unreachable) + ) + ) + ) ) diff -Nru binaryen-91/test/passes/dce_all-features.wast binaryen-99/test/passes/dce_all-features.wast --- binaryen-91/test/passes/dce_all-features.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/dce_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -739,11 +739,17 @@ ;; reachable (module (func $foo) + (event $e (attr 0)) (func $try_unreachable (try - (unreachable) + (do + (unreachable) + ) (catch + (drop + (pop exnref) + ) ) ) (call $foo) ;; shouldn't be dce'd @@ -751,6 +757,7 @@ (func $catch_unreachable (try + (do) (catch (unreachable) ) @@ -760,22 +767,104 @@ (func $both_unreachable (try - (unreachable) + (do + (unreachable) + ) (catch (unreachable) ) ) (call $foo) ;; should be dce'd ) -) -;; Push-pop -(module - (func $foo) - (func $push_unreachable - (push + (func $throw + (drop + (block $label$0 (result externref) + (if + (i32.clz + (block $label$1 (result i32) + (throw $e) + ) + ) + (nop) + ) + (ref.null extern) + ) + ) + ) + + (func $rethrow + (drop + (block $label$0 (result externref) + (if + (i32.clz + (block $label$1 (result i32) + (rethrow + (ref.null exn) + ) + ) + ) + (nop) + ) + (ref.null extern) + ) + ) + ) + + (func $unnecessary-concrete-block (result i32) + (block $foo (result i32) ;; unnecessary type + (nop) (unreachable) ) - (call $foo) ;; should be dce'd + ) + (func $necessary-concrete-block (result i32) + (block $foo (result i32) + (br $foo (i32.const 1)) + (unreachable) + ) + ) + (func $unnecessary-concrete-if (result i32) + (if (result i32) ;; unnecessary type + (i32.const 0) + (return (i32.const 1)) + (unreachable) + ) + ) + (func $unnecessary-concrete-try (result i32) + (try (result i32) + (do + (unreachable) + ) + (catch + (unreachable) + ) + ) + ) + (func $note-loss-of-if-children + (block $label$1 + (if ;; begins unreachable - type never changes - but after the condition + ;; becomes unreachable, it will lose the children, which means no more + ;; br to the outer block, changing that type. + (block $label$2 (result i32) + (nop) + (unreachable) + ) + (unreachable) + (br $label$1) + ) + ) + ) + (func $note-loss-of-non-control-flow-children + (block $out + (drop + (i32.add + (block (result i32) + (nop) + (unreachable) + ) + (br $out) ;; when this is removed as dead, the block becomes unreachable + ) + ) + ) ) ) diff -Nru binaryen-91/test/passes/dce_vacuum.bin.txt binaryen-99/test/passes/dce_vacuum.bin.txt --- binaryen-91/test/passes/dce_vacuum.bin.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/dce_vacuum.bin.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,98 +0,0 @@ -(module - (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (export "f32.compute_radix" (func $0)) - (export "f64.compute_radix" (func $1)) - (func $0 (; 0 ;) (param $0 f32) (param $1 f32) (result f32) - (block $label$1 - (loop $label$2 - (br_if $label$2 - (f32.eq - (f32.add - (f32.sub - (f32.add - (local.tee $0 - (f32.add - (local.get $0) - (local.get $0) - ) - ) - (f32.const 1) - ) - (local.get $0) - ) - (f32.const -1) - ) - (f32.const 0) - ) - ) - ) - (block - (drop - (call $0 - (f32.add - (local.get $0) - (local.tee $1 - (f32.add - (local.get $1) - (f32.const 1) - ) - ) - ) - (local.get $0) - ) - ) - (unreachable) - ) - ) - ) - (func $1 (; 1 ;) (param $0 f64) (param $1 f64) (result f64) - (block $label$1 (result f64) - (loop $label$2 - (br_if $label$2 - (f64.eq - (f64.add - (f64.sub - (f64.add - (local.tee $0 - (f64.add - (local.get $0) - (local.get $0) - ) - ) - (f64.const 1) - ) - (local.get $0) - ) - (f64.const -1) - ) - (f64.const 0) - ) - ) - ) - (loop $label$3 - (br_if $label$3 - (f64.ne - (f64.sub - (f64.sub - (f64.add - (local.get $0) - (local.tee $1 - (f64.add - (local.get $1) - (f64.const 1) - ) - ) - ) - (local.get $0) - ) - (local.get $1) - ) - (f64.const 0) - ) - ) - ) - (local.get $1) - ) - ) -) diff -Nru binaryen-91/test/passes/dce_vacuum_remove-unused-names.bin.txt binaryen-99/test/passes/dce_vacuum_remove-unused-names.bin.txt --- binaryen-91/test/passes/dce_vacuum_remove-unused-names.bin.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/dce_vacuum_remove-unused-names.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,94 @@ +(module + (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) + (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) + (export "f32.compute_radix" (func $0)) + (export "f64.compute_radix" (func $1)) + (func $0 (param $0 f32) (param $1 f32) (result f32) + (loop $label$2 + (br_if $label$2 + (f32.eq + (f32.add + (f32.sub + (f32.add + (local.tee $0 + (f32.add + (local.get $0) + (local.get $0) + ) + ) + (f32.const 1) + ) + (local.get $0) + ) + (f32.const -1) + ) + (f32.const 0) + ) + ) + ) + (block + (drop + (call $0 + (f32.add + (local.get $0) + (local.tee $1 + (f32.add + (local.get $1) + (f32.const 1) + ) + ) + ) + (local.get $0) + ) + ) + (unreachable) + ) + ) + (func $1 (param $0 f64) (param $1 f64) (result f64) + (loop $label$2 + (br_if $label$2 + (f64.eq + (f64.add + (f64.sub + (f64.add + (local.tee $0 + (f64.add + (local.get $0) + (local.get $0) + ) + ) + (f64.const 1) + ) + (local.get $0) + ) + (f64.const -1) + ) + (f64.const 0) + ) + ) + ) + (loop $label$3 + (br_if $label$3 + (f64.ne + (f64.sub + (f64.sub + (f64.add + (local.get $0) + (local.tee $1 + (f64.add + (local.get $1) + (f64.const 1) + ) + ) + ) + (local.get $0) + ) + (local.get $1) + ) + (f64.const 0) + ) + ) + ) + (local.get $1) + ) +) diff -Nru binaryen-91/test/passes/dce_vacuum_remove-unused-names.txt binaryen-99/test/passes/dce_vacuum_remove-unused-names.txt --- binaryen-91/test/passes/dce_vacuum_remove-unused-names.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/dce_vacuum_remove-unused-names.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,25 @@ +(module + (type $none_=>_i32 (func (result i32))) + (type $i64_=>_i64 (func (param i64) (result i64))) + (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) + (func $__Z12serveroptionPc (result i32) + (return + (i32.const 0) + ) + ) + (func $drop-unreachable (param $var$0 f32) (param $var$1 f32) (result f32) + (unreachable) + ) + (func $set-unreachable (param $var$0 i64) (result i64) + (local $var$1 i64) + (local $var$2 i64) + (if + (i64.eq + (local.get $var$1) + (i64.const 0) + ) + (unreachable) + (unreachable) + ) + ) +) Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/passes/dce_vacuum_remove-unused-names.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/passes/dce_vacuum_remove-unused-names.wasm differ diff -Nru binaryen-91/test/passes/dce_vacuum_remove-unused-names.wast binaryen-99/test/passes/dce_vacuum_remove-unused-names.wast --- binaryen-91/test/passes/dce_vacuum_remove-unused-names.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/dce_vacuum_remove-unused-names.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,51 @@ +(module + (func $__Z12serveroptionPc (result i32) + (block $switch$0 + (return + (i32.const 0) + ) + (br $switch$0) + ) + (return + (i32.const 0) + ) + ) + (func $drop-unreachable (param $var$0 f32) (param $var$1 f32) (result f32) + (block $label$0 (result f32) + (loop $label$2 + (drop + (unreachable) + ) + (unreachable) + ) + (local.get $var$1) + ) + ) + + (func $set-unreachable (param $var$0 i64) (result i64) + (local $var$1 i64) + (local $var$2 i64) + (block $label$0 (result i64) + (block $label$1 + (loop $label$2 + (if + (i64.eq + (local.get $var$1) + (i64.const 0) + ) + (unreachable) + (local.set $var$2 + (i64.mul + (unreachable) + (local.get $var$2) + ) + ) + ) + (br $label$2) + ) + ) + (local.get $var$2) + ) + ) +) + diff -Nru binaryen-91/test/passes/dce_vacuum.txt binaryen-99/test/passes/dce_vacuum.txt --- binaryen-91/test/passes/dce_vacuum.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/dce_vacuum.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) - (func $__Z12serveroptionPc (; 0 ;) (result i32) - (return - (i32.const 0) - ) - ) - (func $drop-unreachable (; 1 ;) (param $var$0 f32) (param $var$1 f32) (result f32) - (unreachable) - ) - (func $set-unreachable (; 2 ;) (param $var$0 i64) (result i64) - (local $var$1 i64) - (local $var$2 i64) - (if - (i64.eq - (local.get $var$1) - (i64.const 0) - ) - (unreachable) - (unreachable) - ) - ) -) Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/passes/dce_vacuum.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/passes/dce_vacuum.wasm differ diff -Nru binaryen-91/test/passes/dce_vacuum.wast binaryen-99/test/passes/dce_vacuum.wast --- binaryen-91/test/passes/dce_vacuum.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/dce_vacuum.wast 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ -(module - (func $__Z12serveroptionPc (result i32) - (block $switch$0 - (return - (i32.const 0) - ) - (br $switch$0) - ) - (return - (i32.const 0) - ) - ) - (func $drop-unreachable (param $var$0 f32) (param $var$1 f32) (result f32) - (block $label$0 (result f32) - (loop $label$2 - (drop - (unreachable) - ) - (unreachable) - ) - (local.get $var$1) - ) - ) - - (func $set-unreachable (param $var$0 i64) (result i64) - (local $var$1 i64) - (local $var$2 i64) - (block $label$0 (result i64) - (block $label$1 - (loop $label$2 - (if - (i64.eq - (local.get $var$1) - (i64.const 0) - ) - (unreachable) - (local.set $var$2 - (i64.mul - (unreachable) - (local.get $var$2) - ) - ) - ) - (br $label$2) - ) - ) - (local.get $var$2) - ) - ) -) - diff -Nru binaryen-91/test/passes/dealign64.passes binaryen-99/test/passes/dealign64.passes --- binaryen-91/test/passes/dealign64.passes 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/dealign64.passes 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +dealign_enable-memory64 diff -Nru binaryen-91/test/passes/dealign64.txt binaryen-99/test/passes/dealign64.txt --- binaryen-91/test/passes/dealign64.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/dealign64.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,33 @@ +(module + (type $none_=>_none (func)) + (memory $0 i64 1 1) + (func $test + (drop + (i32.load align=1 + (i64.const 4) + ) + ) + (drop + (i32.load align=1 + (i64.const 8) + ) + ) + (drop + (i32.load align=1 + (i64.const 12) + ) + ) + (i32.store align=1 + (i64.const 16) + (i32.const 28) + ) + (i32.store align=1 + (i64.const 20) + (i32.const 32) + ) + (i32.store align=1 + (i64.const 24) + (i32.const 36) + ) + ) +) diff -Nru binaryen-91/test/passes/dealign64.wast binaryen-99/test/passes/dealign64.wast --- binaryen-91/test/passes/dealign64.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/dealign64.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,11 @@ +(module + (memory $0 i64 1 1) + (func $test + (drop (i32.load (i64.const 4))) + (drop (i32.load align=1 (i64.const 8))) + (drop (i32.load align=2 (i64.const 12))) + (i32.store (i64.const 16) (i32.const 28)) + (i32.store align=1 (i64.const 20) (i32.const 32)) + (i32.store align=2 (i64.const 24) (i32.const 36)) + ) +) diff -Nru binaryen-91/test/passes/dealign.txt binaryen-99/test/passes/dealign.txt --- binaryen-91/test/passes/dealign.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/dealign.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,33 @@ +(module + (type $none_=>_none (func)) + (memory $0 1 1) + (func $test + (drop + (i32.load align=1 + (i32.const 4) + ) + ) + (drop + (i32.load align=1 + (i32.const 8) + ) + ) + (drop + (i32.load align=1 + (i32.const 12) + ) + ) + (i32.store align=1 + (i32.const 16) + (i32.const 28) + ) + (i32.store align=1 + (i32.const 20) + (i32.const 32) + ) + (i32.store align=1 + (i32.const 24) + (i32.const 36) + ) + ) +) diff -Nru binaryen-91/test/passes/dealign.wast binaryen-99/test/passes/dealign.wast --- binaryen-91/test/passes/dealign.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/dealign.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,11 @@ +(module + (memory $0 1 1) + (func $test + (drop (i32.load (i32.const 4))) + (drop (i32.load align=1 (i32.const 8))) + (drop (i32.load align=2 (i32.const 12))) + (i32.store (i32.const 16) (i32.const 28)) + (i32.store align=1 (i32.const 20) (i32.const 32)) + (i32.store align=2 (i32.const 24) (i32.const 36)) + ) +) diff -Nru binaryen-91/test/passes/denan.txt binaryen-99/test/passes/denan.txt --- binaryen-91/test/passes/denan.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/denan.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,157 @@ +(module + (type $f32_=>_f32 (func (param f32) (result f32))) + (type $f64_=>_f64 (func (param f64) (result f64))) + (type $i32_f32_i64_f64_=>_none (func (param i32 f32 i64 f64))) + (type $f32_f64_=>_none (func (param f32 f64))) + (global $global$1 (mut f32) (f32.const 0)) + (global $global$2 (mut f32) (f32.const 12.34000015258789)) + (func $foo32 (param $x f32) (result f32) + (local.set $x + (call $deNan32 + (local.get $x) + ) + ) + (call $deNan32 + (call $foo32 + (local.get $x) + ) + ) + ) + (func $foo64 (param $x f64) (result f64) + (local.set $x + (call $deNan64 + (local.get $x) + ) + ) + (call $deNan64 + (call $foo64 + (local.get $x) + ) + ) + ) + (func $various (param $x i32) (param $y f32) (param $z i64) (param $w f64) + (local.set $y + (call $deNan32 + (local.get $y) + ) + ) + (local.set $w + (call $deNan64 + (local.get $w) + ) + ) + (nop) + ) + (func $ignore-local.get (param $f f32) (param $d f64) + (local.set $f + (call $deNan32 + (local.get $f) + ) + ) + (local.set $d + (call $deNan64 + (local.get $d) + ) + ) + (drop + (local.get $f) + ) + (drop + (local.get $d) + ) + (local.set $f + (local.get $f) + ) + (local.set $d + (local.get $d) + ) + (drop + (local.get $f) + ) + (drop + (local.get $d) + ) + (drop + (call $deNan32 + (f32.abs + (local.get $f) + ) + ) + ) + (drop + (call $deNan64 + (f64.abs + (local.get $d) + ) + ) + ) + (local.set $f + (call $deNan32 + (f32.abs + (local.get $f) + ) + ) + ) + (local.set $d + (call $deNan64 + (f64.abs + (local.get $d) + ) + ) + ) + (drop + (local.get $f) + ) + (drop + (local.get $d) + ) + ) + (func $tees (param $x f32) (result f32) + (local.set $x + (call $deNan32 + (local.get $x) + ) + ) + (local.tee $x + (local.tee $x + (local.tee $x + (local.tee $x + (local.get $x) + ) + ) + ) + ) + ) + (func $select (param $x f32) (result f32) + (local.set $x + (call $deNan32 + (local.get $x) + ) + ) + (select + (local.get $x) + (local.get $x) + (i32.const 1) + ) + ) + (func $deNan32 (param $0 f32) (result f32) + (if (result f32) + (f32.eq + (local.get $0) + (local.get $0) + ) + (local.get $0) + (f32.const 0) + ) + ) + (func $deNan64 (param $0 f64) (result f64) + (if (result f64) + (f64.eq + (local.get $0) + (local.get $0) + ) + (local.get $0) + (f64.const 0) + ) + ) +) diff -Nru binaryen-91/test/passes/denan.wast binaryen-99/test/passes/denan.wast --- binaryen-91/test/passes/denan.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/denan.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,37 @@ +(module + (global $global$1 (mut f32) (f32.const nan)) + (global $global$2 (mut f32) (f32.const 12.34)) + (func $foo32 (param $x f32) (result f32) + (call $foo32 (local.get $x)) + ) + (func $foo64 (param $x f64) (result f64) + (call $foo64 (local.get $x)) + ) + (func $various (param $x i32) (param $y f32) (param $z i64) (param $w f64) + ) + (func $ignore-local.get (param $f f32) (param $d f64) + (drop (local.get $f)) + (drop (local.get $d)) + (local.set $f (local.get $f)) + (local.set $d (local.get $d)) + (drop (local.get $f)) + (drop (local.get $d)) + (drop (f32.abs (local.get $f))) + (drop (f64.abs (local.get $d))) + (local.set $f (f32.abs (local.get $f))) + (local.set $d (f64.abs (local.get $d))) + (drop (local.get $f)) + (drop (local.get $d)) + ) + (func $tees (param $x f32) (result f32) + (local.tee $x + (local.tee $x + (local.tee $x + (local.tee $x + (local.get $x)))))) + (func $select (param $x f32) (result f32) + (select + (local.get $x) + (local.get $x) + (i32.const 1))) +) diff -Nru binaryen-91/test/passes/directize_all-features.txt binaryen-99/test/passes/directize_all-features.txt --- binaryen-91/test/passes/directize_all-features.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/directize_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,223 @@ +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (table $0 5 5 funcref) + (elem (i32.const 1) $foo) + (func $foo (param $0 i32) (param $1 i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (call $foo + (local.get $x) + (local.get $y) + ) + ) +) +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (table $0 5 5 funcref) + (elem (i32.const 4) $foo) + (func $foo (param $0 i32) (param $1 i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (call $foo + (local.get $x) + (local.get $y) + ) + ) +) +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (table $0 5 5 funcref) + (elem (i32.const 0) $foo) + (func $foo (param $0 i32) (param $1 i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (call $foo + (local.get $x) + (local.get $y) + ) + ) +) +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (table $0 5 5 funcref) + (elem (i32.const 0) $foo $foo $foo $foo $foo) + (func $foo (param $0 i32) (param $1 i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (call $foo + (local.get $x) + (local.get $y) + ) + ) +) +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (import "env" "table" (table $table 5 5 funcref)) + (elem (i32.const 1) $foo) + (func $foo (param $0 i32) (param $1 i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (call_indirect (type $i32_i32_=>_none) + (local.get $x) + (local.get $y) + (i32.const 1) + ) + ) +) +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (table $0 5 5 funcref) + (elem (i32.const 1) $foo) + (export "tab" (table $0)) + (func $foo (param $0 i32) (param $1 i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (call_indirect (type $i32_i32_=>_none) + (local.get $x) + (local.get $y) + (i32.const 1) + ) + ) +) +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (table $0 5 5 funcref) + (elem (global.get $g) $foo) + (global $g (mut i32) (i32.const 1)) + (func $foo (param $0 i32) (param $1 i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (call_indirect (type $i32_i32_=>_none) + (local.get $x) + (local.get $y) + (i32.const 1) + ) + ) +) +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (table $0 5 5 funcref) + (elem (i32.const 1) $foo) + (func $foo (param $0 i32) (param $1 i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) (param $z i32) + (call_indirect (type $i32_i32_=>_none) + (local.get $x) + (local.get $y) + (local.get $z) + ) + ) +) +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (table $0 5 5 funcref) + (elem (i32.const 1) $foo) + (func $foo (param $0 i32) (param $1 i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (block + (drop + (local.get $x) + ) + (drop + (local.get $y) + ) + ) + (unreachable) + ) +) +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (table $0 5 5 funcref) + (elem (i32.const 1) $foo) + (func $foo (param $0 i32) (param $1 i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (block + (drop + (local.get $x) + ) + (drop + (local.get $y) + ) + ) + (unreachable) + ) +) +(module + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (table $0 5 5 funcref) + (elem (i32.const 1) $foo) + (func $foo (param $0 i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (block + (drop + (local.get $x) + ) + (drop + (local.get $y) + ) + ) + (unreachable) + ) +) +(module + (type $i32_=>_none (func (param i32))) + (func $foo (param $0 i32) + (unreachable) + ) +) +(module + (type $none_=>_none (func)) + (table $0 8 8 funcref) + (func $0 + (block $block + (nop) + (block + (block + ) + (unreachable) + ) + ) + ) +) +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (table $0 5 5 funcref) + (elem (i32.const 1) $foo) + (func $foo (param $0 i32) (param $1 i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (return_call $foo + (local.get $x) + (local.get $y) + ) + ) +) +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (func $foo (param $0 i32) (param $1 i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (call $foo + (local.get $x) + (local.get $y) + ) + ) +) diff -Nru binaryen-91/test/passes/directize_all-features.wast binaryen-99/test/passes/directize_all-features.wast --- binaryen-91/test/passes/directize_all-features.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/directize_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,223 @@ +(module + (type $ii (func (param i32 i32))) + (table $0 5 5 funcref) + (elem (i32.const 1) $foo) + (func $foo (param i32) (param i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (call_indirect (type $ii) + (local.get $x) + (local.get $y) + (i32.const 1) + ) + ) +) +;; at table edges +(module + (type $ii (func (param i32 i32))) + (table $0 5 5 funcref) + (elem (i32.const 4) $foo) + (func $foo (param i32) (param i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (call_indirect (type $ii) + (local.get $x) + (local.get $y) + (i32.const 4) + ) + ) +) +(module + (type $ii (func (param i32 i32))) + (table $0 5 5 funcref) + (elem (i32.const 0) $foo) + (func $foo (param i32) (param i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (call_indirect (type $ii) + (local.get $x) + (local.get $y) + (i32.const 0) + ) + ) +) +(module + (type $ii (func (param i32 i32))) + (table $0 5 5 funcref) + (elem (i32.const 0) $foo $foo $foo $foo $foo) + (func $foo (param i32) (param i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (call_indirect (type $ii) + (local.get $x) + (local.get $y) + (i32.const 2) + ) + ) +) +;; imported table +(module + (type $ii (func (param i32 i32))) + (import "env" "table" (table $table 5 5 funcref)) + (elem (i32.const 1) $foo) + (func $foo (param i32) (param i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (call_indirect (type $ii) + (local.get $x) + (local.get $y) + (i32.const 1) + ) + ) +) +;; exported table +(module + (type $ii (func (param i32 i32))) + (table $0 5 5 funcref) + (export "tab" (table $0)) + (elem (i32.const 1) $foo) + (func $foo (param i32) (param i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (call_indirect (type $ii) + (local.get $x) + (local.get $y) + (i32.const 1) + ) + ) +) +;; non-constant table offset +(module + (type $ii (func (param i32 i32))) + (table $0 5 5 funcref) + (global $g (mut i32) (i32.const 1)) + (elem (global.get $g) $foo) + (func $foo (param i32) (param i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (call_indirect (type $ii) + (local.get $x) + (local.get $y) + (i32.const 1) + ) + ) +) +;; non-constant call index +(module + (type $ii (func (param i32 i32))) + (table $0 5 5 funcref) + (elem (i32.const 1) $foo) + (func $foo (param i32) (param i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) (param $z i32) + (call_indirect (type $ii) + (local.get $x) + (local.get $y) + (local.get $z) + ) + ) +) +;; bad index +(module + (type $ii (func (param i32 i32))) + (table $0 5 5 funcref) + (elem (i32.const 1) $foo) + (func $foo (param i32) (param i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (call_indirect (type $ii) + (local.get $x) + (local.get $y) + (i32.const 5) + ) + ) +) +;; missing index +(module + (type $ii (func (param i32 i32))) + (table $0 5 5 funcref) + (elem (i32.const 1) $foo) + (func $foo (param i32) (param i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (call_indirect (type $ii) + (local.get $x) + (local.get $y) + (i32.const 2) + ) + ) +) +;; bad type +(module + (type $ii (func (param i32 i32))) + (table $0 5 5 funcref) + (elem (i32.const 1) $foo) + (func $foo (param i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (call_indirect (type $ii) + (local.get $x) + (local.get $y) + (i32.const 1) + ) + ) +) +;; no table +(module + (func $foo (param i32) + (unreachable) + ) +) +;; change types +(module + (type (func)) + (table $0 8 8 funcref) + (func $0 + (block ;; the type of this block will change + (nop) + (call_indirect (type 0) + (i32.const 15) + ) + ) + ) +) +(module ;; indirect tail call + (type $ii (func (param i32 i32))) + (table $0 5 5 funcref) + (elem (i32.const 1) $foo) + (func $foo (param i32) (param i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (return_call_indirect (type $ii) + (local.get $x) + (local.get $y) + (i32.const 1) + ) + ) +) +;; call_ref +(module + (func $foo (param i32) (param i32) + (unreachable) + ) + (func $bar (param $x i32) (param $y i32) + (call_ref + (local.get $x) + (local.get $y) + (ref.func $foo) + ) + ) +) + diff -Nru binaryen-91/test/passes/directize_enable-tail-call.txt binaryen-99/test/passes/directize_enable-tail-call.txt --- binaryen-91/test/passes/directize_enable-tail-call.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/directize_enable-tail-call.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,211 +0,0 @@ -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (table $0 5 5 funcref) - (elem (i32.const 1) $foo) - (func $foo (; 0 ;) (param $0 i32) (param $1 i32) - (unreachable) - ) - (func $bar (; 1 ;) (param $x i32) (param $y i32) - (call $foo - (local.get $x) - (local.get $y) - ) - ) -) -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (table $0 5 5 funcref) - (elem (i32.const 4) $foo) - (func $foo (; 0 ;) (param $0 i32) (param $1 i32) - (unreachable) - ) - (func $bar (; 1 ;) (param $x i32) (param $y i32) - (call $foo - (local.get $x) - (local.get $y) - ) - ) -) -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (table $0 5 5 funcref) - (elem (i32.const 0) $foo) - (func $foo (; 0 ;) (param $0 i32) (param $1 i32) - (unreachable) - ) - (func $bar (; 1 ;) (param $x i32) (param $y i32) - (call $foo - (local.get $x) - (local.get $y) - ) - ) -) -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (table $0 5 5 funcref) - (elem (i32.const 0) $foo $foo $foo $foo $foo) - (func $foo (; 0 ;) (param $0 i32) (param $1 i32) - (unreachable) - ) - (func $bar (; 1 ;) (param $x i32) (param $y i32) - (call $foo - (local.get $x) - (local.get $y) - ) - ) -) -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (import "env" "table" (table $0 5 5 funcref)) - (elem (i32.const 1) $foo) - (func $foo (; 0 ;) (param $0 i32) (param $1 i32) - (unreachable) - ) - (func $bar (; 1 ;) (param $x i32) (param $y i32) - (call_indirect (type $i32_i32_=>_none) - (local.get $x) - (local.get $y) - (i32.const 1) - ) - ) -) -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (table $0 5 5 funcref) - (elem (i32.const 1) $foo) - (export "tab" (table $0)) - (func $foo (; 0 ;) (param $0 i32) (param $1 i32) - (unreachable) - ) - (func $bar (; 1 ;) (param $x i32) (param $y i32) - (call_indirect (type $i32_i32_=>_none) - (local.get $x) - (local.get $y) - (i32.const 1) - ) - ) -) -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (table $0 5 5 funcref) - (elem (global.get $g) $foo) - (global $g (mut i32) (i32.const 1)) - (func $foo (; 0 ;) (param $0 i32) (param $1 i32) - (unreachable) - ) - (func $bar (; 1 ;) (param $x i32) (param $y i32) - (call_indirect (type $i32_i32_=>_none) - (local.get $x) - (local.get $y) - (i32.const 1) - ) - ) -) -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (table $0 5 5 funcref) - (elem (i32.const 1) $foo) - (func $foo (; 0 ;) (param $0 i32) (param $1 i32) - (unreachable) - ) - (func $bar (; 1 ;) (param $x i32) (param $y i32) (param $z i32) - (call_indirect (type $i32_i32_=>_none) - (local.get $x) - (local.get $y) - (local.get $z) - ) - ) -) -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (table $0 5 5 funcref) - (elem (i32.const 1) $foo) - (func $foo (; 0 ;) (param $0 i32) (param $1 i32) - (unreachable) - ) - (func $bar (; 1 ;) (param $x i32) (param $y i32) - (block - (drop - (local.get $x) - ) - (drop - (local.get $y) - ) - ) - (unreachable) - ) -) -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (table $0 5 5 funcref) - (elem (i32.const 1) $foo) - (func $foo (; 0 ;) (param $0 i32) (param $1 i32) - (unreachable) - ) - (func $bar (; 1 ;) (param $x i32) (param $y i32) - (block - (drop - (local.get $x) - ) - (drop - (local.get $y) - ) - ) - (unreachable) - ) -) -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (table $0 5 5 funcref) - (elem (i32.const 1) $foo) - (func $foo (; 0 ;) (param $0 i32) - (unreachable) - ) - (func $bar (; 1 ;) (param $x i32) (param $y i32) - (block - (drop - (local.get $x) - ) - (drop - (local.get $y) - ) - ) - (unreachable) - ) -) -(module - (type $i32_=>_none (func (param i32))) - (func $foo (; 0 ;) (param $0 i32) - (unreachable) - ) -) -(module - (type $none_=>_none (func)) - (table $0 8 8 funcref) - (func $0 (; 0 ;) - (block $block - (nop) - (block - (block - ) - (unreachable) - ) - ) - ) -) -(module - (type $i32_i32_=>_none (func (param i32 i32))) - (table $0 5 5 funcref) - (elem (i32.const 1) $foo) - (func $foo (; 0 ;) (param $0 i32) (param $1 i32) - (unreachable) - ) - (func $bar (; 1 ;) (param $x i32) (param $y i32) - (return_call $foo - (local.get $x) - (local.get $y) - ) - ) -) diff -Nru binaryen-91/test/passes/directize_enable-tail-call.wast binaryen-99/test/passes/directize_enable-tail-call.wast --- binaryen-91/test/passes/directize_enable-tail-call.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/directize_enable-tail-call.wast 1970-01-01 00:00:00.000000000 +0000 @@ -1,209 +0,0 @@ -(module - (type $ii (func (param i32 i32))) - (table $0 5 5 funcref) - (elem (i32.const 1) $foo) - (func $foo (param i32) (param i32) - (unreachable) - ) - (func $bar (param $x i32) (param $y i32) - (call_indirect (type $ii) - (local.get $x) - (local.get $y) - (i32.const 1) - ) - ) -) -;; at table edges -(module - (type $ii (func (param i32 i32))) - (table $0 5 5 funcref) - (elem (i32.const 4) $foo) - (func $foo (param i32) (param i32) - (unreachable) - ) - (func $bar (param $x i32) (param $y i32) - (call_indirect (type $ii) - (local.get $x) - (local.get $y) - (i32.const 4) - ) - ) -) -(module - (type $ii (func (param i32 i32))) - (table $0 5 5 funcref) - (elem (i32.const 0) $foo) - (func $foo (param i32) (param i32) - (unreachable) - ) - (func $bar (param $x i32) (param $y i32) - (call_indirect (type $ii) - (local.get $x) - (local.get $y) - (i32.const 0) - ) - ) -) -(module - (type $ii (func (param i32 i32))) - (table $0 5 5 funcref) - (elem (i32.const 0) $foo $foo $foo $foo $foo) - (func $foo (param i32) (param i32) - (unreachable) - ) - (func $bar (param $x i32) (param $y i32) - (call_indirect (type $ii) - (local.get $x) - (local.get $y) - (i32.const 2) - ) - ) -) -;; imported table -(module - (type $ii (func (param i32 i32))) - (import "env" "table" (table $table 5 5 funcref)) - (elem (i32.const 1) $foo) - (func $foo (param i32) (param i32) - (unreachable) - ) - (func $bar (param $x i32) (param $y i32) - (call_indirect (type $ii) - (local.get $x) - (local.get $y) - (i32.const 1) - ) - ) -) -;; exported table -(module - (type $ii (func (param i32 i32))) - (table $0 5 5 funcref) - (export "tab" (table $0)) - (elem (i32.const 1) $foo) - (func $foo (param i32) (param i32) - (unreachable) - ) - (func $bar (param $x i32) (param $y i32) - (call_indirect (type $ii) - (local.get $x) - (local.get $y) - (i32.const 1) - ) - ) -) -;; non-constant table offset -(module - (type $ii (func (param i32 i32))) - (table $0 5 5 funcref) - (global $g (mut i32) (i32.const 1)) - (elem (global.get $g) $foo) - (func $foo (param i32) (param i32) - (unreachable) - ) - (func $bar (param $x i32) (param $y i32) - (call_indirect (type $ii) - (local.get $x) - (local.get $y) - (i32.const 1) - ) - ) -) -;; non-constant call index -(module - (type $ii (func (param i32 i32))) - (table $0 5 5 funcref) - (elem (i32.const 1) $foo) - (func $foo (param i32) (param i32) - (unreachable) - ) - (func $bar (param $x i32) (param $y i32) (param $z i32) - (call_indirect (type $ii) - (local.get $x) - (local.get $y) - (local.get $z) - ) - ) -) -;; bad index -(module - (type $ii (func (param i32 i32))) - (table $0 5 5 funcref) - (elem (i32.const 1) $foo) - (func $foo (param i32) (param i32) - (unreachable) - ) - (func $bar (param $x i32) (param $y i32) - (call_indirect (type $ii) - (local.get $x) - (local.get $y) - (i32.const 5) - ) - ) -) -;; missing index -(module - (type $ii (func (param i32 i32))) - (table $0 5 5 funcref) - (elem (i32.const 1) $foo) - (func $foo (param i32) (param i32) - (unreachable) - ) - (func $bar (param $x i32) (param $y i32) - (call_indirect (type $ii) - (local.get $x) - (local.get $y) - (i32.const 2) - ) - ) -) -;; bad type -(module - (type $ii (func (param i32 i32))) - (table $0 5 5 funcref) - (elem (i32.const 1) $foo) - (func $foo (param i32) - (unreachable) - ) - (func $bar (param $x i32) (param $y i32) - (call_indirect (type $ii) - (local.get $x) - (local.get $y) - (i32.const 1) - ) - ) -) -;; no table -(module - (func $foo (param i32) - (unreachable) - ) -) -;; change types -(module - (type (func)) - (table $0 8 8 funcref) - (func $0 - (block ;; the type of this block will change - (nop) - (call_indirect (type 0) - (i32.const 15) - ) - ) - ) -) -(module ;; indirect tail call - (type $ii (func (param i32 i32))) - (table $0 5 5 funcref) - (elem (i32.const 1) $foo) - (func $foo (param i32) (param i32) - (unreachable) - ) - (func $bar (param $x i32) (param $y i32) - (return_call_indirect (type $ii) - (local.get $x) - (local.get $y) - (i32.const 1) - ) - ) -) diff -Nru binaryen-91/test/passes/duplicate-function-elimination_all-features.txt binaryen-99/test/passes/duplicate-function-elimination_all-features.txt --- binaryen-91/test/passes/duplicate-function-elimination_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/duplicate-function-elimination_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,10 +1,20 @@ (module (type $none_=>_i32 (func (result i32))) (type $none_=>_funcref (func (result funcref))) - (func $0 (; 0 ;) (result i32) + (func $0 (result i32) (i32.const 0) ) - (func $test (; 1 ;) (result funcref) + (func $test (result funcref) (ref.func $0) ) ) +(module + (type $none_=>_none (func)) + (memory $foo 16 16) + (global $bar i32 (i32.const 0)) + (export "memory" (memory $foo)) + (export "global" (global $bar)) + (func $bar + (nop) + ) +) diff -Nru binaryen-91/test/passes/duplicate-function-elimination_all-features.wast binaryen-99/test/passes/duplicate-function-elimination_all-features.wast --- binaryen-91/test/passes/duplicate-function-elimination_all-features.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/duplicate-function-elimination_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,4 +1,4 @@ -;; --dupliate-function-elimination should not remove functions used in ref.func. +;; --duplicate-function-elimination should not remove functions used in ref.func. (module (func $0 (result i32) (i32.const 0) @@ -10,3 +10,14 @@ (ref.func $1) ) ) +;; renaming after deduplication must only affect functions +(module + (memory $foo 16 16) + (global $bar i32 (i32.const 0)) + (export "memory" (memory $foo)) + (export "global" (global $bar)) + (func $bar ;; happens to share a name with the global + ) + (func $foo ;; happens to share a name with the memory + ) +) diff -Nru binaryen-91/test/passes/duplicate-function-elimination_optimize-level=1.txt binaryen-99/test/passes/duplicate-function-elimination_optimize-level=1.txt --- binaryen-91/test/passes/duplicate-function-elimination_optimize-level=1.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/duplicate-function-elimination_optimize-level=1.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,26 +1,26 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (nop) ) ) (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (i32.const 0) ) ) - (func $other (; 1 ;) + (func $other (nop) ) ) (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (drop (i32.const 0) ) @@ -29,12 +29,12 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (i32.const 0) ) ) - (func $other (; 1 ;) + (func $other (drop (i32.const 1) ) @@ -48,10 +48,10 @@ (export "keep2" (func $keep2)) (export "other" (func $keep2)) (start $keep2) - (func $keep2 (; 0 ;) + (func $keep2 (nop) ) - (func $caller (; 1 ;) + (func $caller (call $keep2) (call $keep2) ) @@ -59,29 +59,29 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2-after-two-passes (; 0 ;) + (func $keep2-after-two-passes (nop) ) - (func $keep-caller (; 1 ;) + (func $keep-caller (call $keep2-after-two-passes) ) - (func $other-caller (; 2 ;) + (func $other-caller (call $keep2-after-two-passes) ) ) (module (type $none_=>_none (func)) (memory $0 0) - (func $keep-4 (; 0 ;) + (func $keep-4 (nop) ) - (func $other (; 1 ;) + (func $other (unreachable) ) - (func $keep-caller (; 2 ;) + (func $keep-caller (call $keep-4) ) - (func $other-caller (; 3 ;) + (func $other-caller (call $other) ) ) @@ -90,17 +90,17 @@ (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) (memory $0 0) - (func $keep4-similar-but-func-sig-differs (; 0 ;) + (func $keep4-similar-but-func-sig-differs (drop (i32.const 0) ) ) - (func $other1 (; 1 ;) (param $i i32) + (func $other1 (param $i i32) (drop (i32.const 0) ) ) - (func $other2 (; 2 ;) (result i32) + (func $other2 (result i32) (i32.const 0) ) ) @@ -108,22 +108,22 @@ (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) (memory $0 0) - (func $keep2-similar-but-func-sig-differs (; 0 ;) (param $i i32) + (func $keep2-similar-but-func-sig-differs (param $i i32) (drop (i32.const 0) ) ) - (func $other2 (; 1 ;) (result i32) + (func $other2 (result i32) (i32.const 0) ) ) (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (nop) ) - (func $other (; 1 ;) + (func $other (nop) (nop) ) @@ -131,7 +131,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (block $block0 ) ) @@ -139,11 +139,11 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (block $block0 ) ) - (func $other (; 1 ;) + (func $other (block $block0 (nop) ) @@ -152,7 +152,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (block $block0 (nop) ) @@ -161,12 +161,12 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (block $block0 (nop) ) ) - (func $other (; 1 ;) + (func $other (block $block0 (nop) (unreachable) @@ -176,12 +176,12 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (block $block0 (nop) ) ) - (func $other (; 1 ;) + (func $other (block $block0 (unreachable) ) @@ -190,7 +190,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase-since-block-names-do-not-matter (; 0 ;) + (func $erase-since-block-names-do-not-matter (block $foo ) ) @@ -198,7 +198,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase-since-block-names-do-not-matter (; 0 ;) + (func $erase-since-block-names-do-not-matter (block $foo (br $foo) (br_table $foo $foo @@ -210,7 +210,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (block $foo (block $block (drop @@ -220,7 +220,7 @@ ) ) ) - (func $other (; 1 ;) + (func $other (block $bar (block $block (drop @@ -234,14 +234,14 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (block $foo (br_if $foo (i32.const 0) ) ) ) - (func $other (; 1 ;) + (func $other (block $bar (br_if $bar (i32.const 1) @@ -252,7 +252,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (block $foo (br_if $foo (i32.const 0) @@ -263,14 +263,14 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (block $foo (br_table $foo $foo (i32.const 0) ) ) ) - (func $other (; 1 ;) + (func $other (block $bar (br_table $bar $bar (i32.const 1) @@ -281,7 +281,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (loop $bar (nop) ) @@ -290,7 +290,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (block $foo (result i32) (br_table $foo $foo @@ -300,7 +300,7 @@ ) ) ) - (func $other (; 1 ;) + (func $other (drop (block $bar (result i32) (br_table $bar $bar @@ -314,7 +314,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (block $foo (block $bar (br_table $foo $bar @@ -327,7 +327,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (block $foo (block $bar (br_table $foo $bar @@ -336,7 +336,7 @@ ) ) ) - (func $other (; 1 ;) + (func $other (block $bar (block $foo (br_table $foo $bar @@ -349,17 +349,17 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (call $erase) ) ) (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2-but-in-theory-we-could-erase (; 0 ;) + (func $keep2-but-in-theory-we-could-erase (call $keep2-but-in-theory-we-could-erase) ) - (func $other (; 1 ;) + (func $other (call $other) ) ) @@ -368,7 +368,7 @@ (import "env" "i" (func $i)) (import "env" "j" (func $j)) (memory $0 0) - (func $erase (; 2 ;) + (func $erase (call $i) ) ) @@ -377,10 +377,10 @@ (import "env" "i" (func $i)) (import "env" "j" (func $j)) (memory $0 0) - (func $keep2 (; 2 ;) + (func $keep2 (call $i) ) - (func $other (; 3 ;) + (func $other (call $j) ) ) @@ -389,7 +389,7 @@ (memory $0 0) (table $0 2 2 funcref) (elem (i32.const 0) $erase $erase) - (func $erase (; 0 ;) + (func $erase (call_indirect (type $none_=>_none) (i32.const 0) ) @@ -400,12 +400,12 @@ (memory $0 0) (table $0 2 2 funcref) (elem (i32.const 0) $keep2 $other) - (func $keep2 (; 0 ;) + (func $keep2 (call_indirect (type $none_=>_none) (i32.const 0) ) ) - (func $other (; 1 ;) + (func $other (call_indirect (type $none_=>_none) (i32.const 1) ) @@ -416,7 +416,7 @@ (memory $0 0) (table $0 2 2 funcref) (elem (i32.const 0) $keep2 $keep2) - (func $keep2 (; 0 ;) + (func $keep2 (call_indirect (type $none_=>_none) (i32.const 0) ) @@ -425,7 +425,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase-even-locals-with-different-names (; 0 ;) + (func $erase-even-locals-with-different-names (local $i i32) (drop (local.get $i) @@ -435,13 +435,13 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (local $i i32) (drop (local.get $i) ) ) - (func $other (; 1 ;) + (func $other (local $j i64) (drop (local.get $j) @@ -451,7 +451,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase-even-locals-with-different-names (; 0 ;) + (func $erase-even-locals-with-different-names (local $i i32) (local.set $i (i32.const 0) @@ -461,13 +461,13 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (local $i i32) (local.set $i (i32.const 0) ) ) - (func $other (; 1 ;) + (func $other (local $j i64) (local.set $j (i64.const 0) @@ -477,13 +477,13 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (local $i i32) (local.set $i (i32.const 0) ) ) - (func $other (; 1 ;) + (func $other (local $j i32) (local.set $j (i32.const 1) @@ -493,7 +493,7 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $erase (; 0 ;) + (func $erase (drop (i32.load (i32.const 0) @@ -509,14 +509,14 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $keep2 (; 0 ;) + (func $keep2 (drop (i32.load offset=3 (i32.const 0) ) ) ) - (func $other (; 1 ;) + (func $other (drop (i32.load16_s offset=3 (i32.const 0) @@ -527,14 +527,14 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $keep2 (; 0 ;) + (func $keep2 (drop (i32.load16_s offset=3 (i32.const 0) ) ) ) - (func $other (; 1 ;) + (func $other (drop (i32.load16_s offset=3 align=1 (i32.const 0) @@ -545,14 +545,14 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $keep2 (; 0 ;) + (func $keep2 (drop (i32.load16_s (i32.const 0) ) ) ) - (func $other (; 1 ;) + (func $other (drop (i32.load16_s offset=3 (i32.const 0) @@ -563,14 +563,14 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $keep2 (; 0 ;) + (func $keep2 (drop (i32.load16_s offset=3 (i32.const 0) ) ) ) - (func $other (; 1 ;) + (func $other (drop (i32.load16_s offset=3 (i32.const 1) @@ -581,14 +581,14 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $keep2 (; 0 ;) + (func $keep2 (drop (i32.load16_u offset=3 (i32.const 0) ) ) ) - (func $other (; 1 ;) + (func $other (drop (i32.load16_s offset=3 (i32.const 0) @@ -599,7 +599,7 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $erase (; 0 ;) + (func $erase (i32.store (i32.const 0) (i32.const 100) @@ -613,13 +613,13 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $keep2 (; 0 ;) + (func $keep2 (i32.store offset=3 (i32.const 0) (i32.const 100) ) ) - (func $other (; 1 ;) + (func $other (i32.store16 offset=3 (i32.const 0) (i32.const 100) @@ -629,13 +629,13 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $keep2 (; 0 ;) + (func $keep2 (i32.store16 offset=3 (i32.const 0) (i32.const 100) ) ) - (func $other (; 1 ;) + (func $other (i32.store16 offset=3 align=1 (i32.const 0) (i32.const 100) @@ -645,13 +645,13 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $keep2 (; 0 ;) + (func $keep2 (i32.store16 (i32.const 0) (i32.const 100) ) ) - (func $other (; 1 ;) + (func $other (i32.store16 offset=3 (i32.const 0) (i32.const 100) @@ -661,13 +661,13 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $keep2 (; 0 ;) + (func $keep2 (i32.store16 offset=3 (i32.const 0) (i32.const 100) ) ) - (func $other (; 1 ;) + (func $other (i32.store16 offset=3 (i32.const 1) (i32.const 100) @@ -677,13 +677,13 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $keep2 (; 0 ;) + (func $keep2 (i32.store16 offset=3 (i32.const 0) (i32.const 100) ) ) - (func $other (; 1 ;) + (func $other (i32.store16 offset=3 (i32.const 0) (i32.const 101) @@ -693,12 +693,12 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (i32.const 0) ) ) - (func $other (; 1 ;) + (func $other (drop (i64.const 0) ) @@ -707,12 +707,12 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (i32.const 0) ) ) - (func $other (; 1 ;) + (func $other (drop (f32.const 0) ) @@ -721,12 +721,12 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (i32.const 0) ) ) - (func $other (; 1 ;) + (func $other (drop (f64.const 0) ) @@ -735,12 +735,12 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (i64.const 0) ) ) - (func $other (; 1 ;) + (func $other (drop (i64.const 1) ) @@ -749,12 +749,12 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (f32.const 0.10000000149011612) ) ) - (func $other (; 1 ;) + (func $other (drop (f32.const -0.10000000149011612) ) @@ -763,12 +763,12 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (f64.const 0.1) ) ) - (func $other (; 1 ;) + (func $other (drop (f64.const 0.2) ) @@ -777,7 +777,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (drop (f32.abs (f32.const 0) @@ -788,14 +788,14 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (f32.abs (f32.const 0) ) ) ) - (func $other (; 1 ;) + (func $other (drop (f32.abs (f32.const 1) @@ -806,14 +806,14 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (f32.abs (f32.const 0) ) ) ) - (func $other (; 1 ;) + (func $other (drop (f32.neg (f32.const 0) @@ -824,7 +824,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (drop (f32.add (f32.const 0) @@ -836,7 +836,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (f32.add (f32.const 0) @@ -844,7 +844,7 @@ ) ) ) - (func $other (; 1 ;) + (func $other (drop (f32.add (f32.const 0) @@ -856,7 +856,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (f32.add (f32.const 0) @@ -864,7 +864,7 @@ ) ) ) - (func $other (; 1 ;) + (func $other (drop (f32.add (f32.const 1) @@ -876,7 +876,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (f32.add (f32.const 0) @@ -884,7 +884,7 @@ ) ) ) - (func $other (; 1 ;) + (func $other (drop (f32.sub (f32.const 0) @@ -896,7 +896,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (drop (select (i32.const 0) @@ -909,7 +909,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep (; 0 ;) + (func $keep (drop (select (i32.const 0) @@ -918,7 +918,7 @@ ) ) ) - (func $other (; 1 ;) + (func $other (drop (select (i32.const 1) @@ -931,7 +931,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep (; 0 ;) + (func $keep (drop (select (i32.const 0) @@ -940,7 +940,7 @@ ) ) ) - (func $other (; 1 ;) + (func $other (drop (select (i32.const 0) @@ -953,7 +953,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep (; 0 ;) + (func $keep (drop (select (i32.const 0) @@ -962,7 +962,7 @@ ) ) ) - (func $other (; 1 ;) + (func $other (drop (select (i32.const 0) @@ -975,14 +975,14 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (return) ) ) (module (type $none_=>_i32 (func (result i32))) (memory $0 0) - (func $erase (; 0 ;) (result i32) + (func $erase (result i32) (return (i32.const 0) ) @@ -991,12 +991,12 @@ (module (type $none_=>_i32 (func (result i32))) (memory $0 0) - (func $keep (; 0 ;) (result i32) + (func $keep (result i32) (return (i32.const 0) ) ) - (func $other (; 1 ;) (result i32) + (func $other (result i32) (return (i32.const 1) ) @@ -1005,7 +1005,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (drop (memory.size) ) @@ -1014,7 +1014,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (drop (memory.grow (i32.const 10) @@ -1025,14 +1025,14 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep (; 0 ;) + (func $keep (drop (memory.grow (i32.const 10) ) ) ) - (func $other (; 1 ;) + (func $other (drop (memory.grow (i32.const 11) @@ -1043,12 +1043,12 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep (; 0 ;) + (func $keep (drop (memory.size) ) ) - (func $other (; 1 ;) + (func $other (drop (memory.grow (i32.const 10) diff -Nru binaryen-91/test/passes/duplicate-function-elimination_optimize-level=2.txt binaryen-99/test/passes/duplicate-function-elimination_optimize-level=2.txt --- binaryen-91/test/passes/duplicate-function-elimination_optimize-level=2.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/duplicate-function-elimination_optimize-level=2.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,26 +1,26 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (nop) ) ) (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (i32.const 0) ) ) - (func $other (; 1 ;) + (func $other (nop) ) ) (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (drop (i32.const 0) ) @@ -29,12 +29,12 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (i32.const 0) ) ) - (func $other (; 1 ;) + (func $other (drop (i32.const 1) ) @@ -48,10 +48,10 @@ (export "keep2" (func $keep2)) (export "other" (func $keep2)) (start $keep2) - (func $keep2 (; 0 ;) + (func $keep2 (nop) ) - (func $caller (; 1 ;) + (func $caller (call $keep2) (call $keep2) ) @@ -59,26 +59,26 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2-after-two-passes (; 0 ;) + (func $keep2-after-two-passes (nop) ) - (func $keep-caller (; 1 ;) + (func $keep-caller (call $keep2-after-two-passes) ) ) (module (type $none_=>_none (func)) (memory $0 0) - (func $keep-4 (; 0 ;) + (func $keep-4 (nop) ) - (func $other (; 1 ;) + (func $other (unreachable) ) - (func $keep-caller (; 2 ;) + (func $keep-caller (call $keep-4) ) - (func $other-caller (; 3 ;) + (func $other-caller (call $other) ) ) @@ -87,17 +87,17 @@ (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) (memory $0 0) - (func $keep4-similar-but-func-sig-differs (; 0 ;) + (func $keep4-similar-but-func-sig-differs (drop (i32.const 0) ) ) - (func $other1 (; 1 ;) (param $i i32) + (func $other1 (param $i i32) (drop (i32.const 0) ) ) - (func $other2 (; 2 ;) (result i32) + (func $other2 (result i32) (i32.const 0) ) ) @@ -105,22 +105,22 @@ (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) (memory $0 0) - (func $keep2-similar-but-func-sig-differs (; 0 ;) (param $i i32) + (func $keep2-similar-but-func-sig-differs (param $i i32) (drop (i32.const 0) ) ) - (func $other2 (; 1 ;) (result i32) + (func $other2 (result i32) (i32.const 0) ) ) (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (nop) ) - (func $other (; 1 ;) + (func $other (nop) (nop) ) @@ -128,7 +128,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (block $block0 ) ) @@ -136,11 +136,11 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (block $block0 ) ) - (func $other (; 1 ;) + (func $other (block $block0 (nop) ) @@ -149,7 +149,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (block $block0 (nop) ) @@ -158,12 +158,12 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (block $block0 (nop) ) ) - (func $other (; 1 ;) + (func $other (block $block0 (nop) (unreachable) @@ -173,12 +173,12 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (block $block0 (nop) ) ) - (func $other (; 1 ;) + (func $other (block $block0 (unreachable) ) @@ -187,7 +187,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase-since-block-names-do-not-matter (; 0 ;) + (func $erase-since-block-names-do-not-matter (block $foo ) ) @@ -195,7 +195,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase-since-block-names-do-not-matter (; 0 ;) + (func $erase-since-block-names-do-not-matter (block $foo (br $foo) (br_table $foo $foo @@ -207,7 +207,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (block $foo (block $block (drop @@ -217,7 +217,7 @@ ) ) ) - (func $other (; 1 ;) + (func $other (block $bar (block $block (drop @@ -231,14 +231,14 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (block $foo (br_if $foo (i32.const 0) ) ) ) - (func $other (; 1 ;) + (func $other (block $bar (br_if $bar (i32.const 1) @@ -249,7 +249,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (block $foo (br_if $foo (i32.const 0) @@ -260,14 +260,14 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (block $foo (br_table $foo $foo (i32.const 0) ) ) ) - (func $other (; 1 ;) + (func $other (block $bar (br_table $bar $bar (i32.const 1) @@ -278,7 +278,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (loop $bar (nop) ) @@ -287,7 +287,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (block $foo (result i32) (br_table $foo $foo @@ -297,7 +297,7 @@ ) ) ) - (func $other (; 1 ;) + (func $other (drop (block $bar (result i32) (br_table $bar $bar @@ -311,7 +311,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (block $foo (block $bar (br_table $foo $bar @@ -324,7 +324,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (block $foo (block $bar (br_table $foo $bar @@ -333,7 +333,7 @@ ) ) ) - (func $other (; 1 ;) + (func $other (block $bar (block $foo (br_table $foo $bar @@ -346,17 +346,17 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (call $erase) ) ) (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2-but-in-theory-we-could-erase (; 0 ;) + (func $keep2-but-in-theory-we-could-erase (call $keep2-but-in-theory-we-could-erase) ) - (func $other (; 1 ;) + (func $other (call $other) ) ) @@ -365,7 +365,7 @@ (import "env" "i" (func $i)) (import "env" "j" (func $j)) (memory $0 0) - (func $erase (; 2 ;) + (func $erase (call $i) ) ) @@ -374,10 +374,10 @@ (import "env" "i" (func $i)) (import "env" "j" (func $j)) (memory $0 0) - (func $keep2 (; 2 ;) + (func $keep2 (call $i) ) - (func $other (; 3 ;) + (func $other (call $j) ) ) @@ -386,7 +386,7 @@ (memory $0 0) (table $0 2 2 funcref) (elem (i32.const 0) $erase $erase) - (func $erase (; 0 ;) + (func $erase (call_indirect (type $none_=>_none) (i32.const 0) ) @@ -397,12 +397,12 @@ (memory $0 0) (table $0 2 2 funcref) (elem (i32.const 0) $keep2 $other) - (func $keep2 (; 0 ;) + (func $keep2 (call_indirect (type $none_=>_none) (i32.const 0) ) ) - (func $other (; 1 ;) + (func $other (call_indirect (type $none_=>_none) (i32.const 1) ) @@ -413,7 +413,7 @@ (memory $0 0) (table $0 2 2 funcref) (elem (i32.const 0) $keep2 $keep2) - (func $keep2 (; 0 ;) + (func $keep2 (call_indirect (type $none_=>_none) (i32.const 0) ) @@ -422,7 +422,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase-even-locals-with-different-names (; 0 ;) + (func $erase-even-locals-with-different-names (local $i i32) (drop (local.get $i) @@ -432,13 +432,13 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (local $i i32) (drop (local.get $i) ) ) - (func $other (; 1 ;) + (func $other (local $j i64) (drop (local.get $j) @@ -448,7 +448,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase-even-locals-with-different-names (; 0 ;) + (func $erase-even-locals-with-different-names (local $i i32) (local.set $i (i32.const 0) @@ -458,13 +458,13 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (local $i i32) (local.set $i (i32.const 0) ) ) - (func $other (; 1 ;) + (func $other (local $j i64) (local.set $j (i64.const 0) @@ -474,13 +474,13 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (local $i i32) (local.set $i (i32.const 0) ) ) - (func $other (; 1 ;) + (func $other (local $j i32) (local.set $j (i32.const 1) @@ -490,7 +490,7 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $erase (; 0 ;) + (func $erase (drop (i32.load (i32.const 0) @@ -506,14 +506,14 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $keep2 (; 0 ;) + (func $keep2 (drop (i32.load offset=3 (i32.const 0) ) ) ) - (func $other (; 1 ;) + (func $other (drop (i32.load16_s offset=3 (i32.const 0) @@ -524,14 +524,14 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $keep2 (; 0 ;) + (func $keep2 (drop (i32.load16_s offset=3 (i32.const 0) ) ) ) - (func $other (; 1 ;) + (func $other (drop (i32.load16_s offset=3 align=1 (i32.const 0) @@ -542,14 +542,14 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $keep2 (; 0 ;) + (func $keep2 (drop (i32.load16_s (i32.const 0) ) ) ) - (func $other (; 1 ;) + (func $other (drop (i32.load16_s offset=3 (i32.const 0) @@ -560,14 +560,14 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $keep2 (; 0 ;) + (func $keep2 (drop (i32.load16_s offset=3 (i32.const 0) ) ) ) - (func $other (; 1 ;) + (func $other (drop (i32.load16_s offset=3 (i32.const 1) @@ -578,14 +578,14 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $keep2 (; 0 ;) + (func $keep2 (drop (i32.load16_u offset=3 (i32.const 0) ) ) ) - (func $other (; 1 ;) + (func $other (drop (i32.load16_s offset=3 (i32.const 0) @@ -596,7 +596,7 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $erase (; 0 ;) + (func $erase (i32.store (i32.const 0) (i32.const 100) @@ -610,13 +610,13 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $keep2 (; 0 ;) + (func $keep2 (i32.store offset=3 (i32.const 0) (i32.const 100) ) ) - (func $other (; 1 ;) + (func $other (i32.store16 offset=3 (i32.const 0) (i32.const 100) @@ -626,13 +626,13 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $keep2 (; 0 ;) + (func $keep2 (i32.store16 offset=3 (i32.const 0) (i32.const 100) ) ) - (func $other (; 1 ;) + (func $other (i32.store16 offset=3 align=1 (i32.const 0) (i32.const 100) @@ -642,13 +642,13 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $keep2 (; 0 ;) + (func $keep2 (i32.store16 (i32.const 0) (i32.const 100) ) ) - (func $other (; 1 ;) + (func $other (i32.store16 offset=3 (i32.const 0) (i32.const 100) @@ -658,13 +658,13 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $keep2 (; 0 ;) + (func $keep2 (i32.store16 offset=3 (i32.const 0) (i32.const 100) ) ) - (func $other (; 1 ;) + (func $other (i32.store16 offset=3 (i32.const 1) (i32.const 100) @@ -674,13 +674,13 @@ (module (type $none_=>_none (func)) (memory $0 10) - (func $keep2 (; 0 ;) + (func $keep2 (i32.store16 offset=3 (i32.const 0) (i32.const 100) ) ) - (func $other (; 1 ;) + (func $other (i32.store16 offset=3 (i32.const 0) (i32.const 101) @@ -690,12 +690,12 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (i32.const 0) ) ) - (func $other (; 1 ;) + (func $other (drop (i64.const 0) ) @@ -704,12 +704,12 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (i32.const 0) ) ) - (func $other (; 1 ;) + (func $other (drop (f32.const 0) ) @@ -718,12 +718,12 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (i32.const 0) ) ) - (func $other (; 1 ;) + (func $other (drop (f64.const 0) ) @@ -732,12 +732,12 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (i64.const 0) ) ) - (func $other (; 1 ;) + (func $other (drop (i64.const 1) ) @@ -746,12 +746,12 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (f32.const 0.10000000149011612) ) ) - (func $other (; 1 ;) + (func $other (drop (f32.const -0.10000000149011612) ) @@ -760,12 +760,12 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (f64.const 0.1) ) ) - (func $other (; 1 ;) + (func $other (drop (f64.const 0.2) ) @@ -774,7 +774,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (drop (f32.abs (f32.const 0) @@ -785,14 +785,14 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (f32.abs (f32.const 0) ) ) ) - (func $other (; 1 ;) + (func $other (drop (f32.abs (f32.const 1) @@ -803,14 +803,14 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (f32.abs (f32.const 0) ) ) ) - (func $other (; 1 ;) + (func $other (drop (f32.neg (f32.const 0) @@ -821,7 +821,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (drop (f32.add (f32.const 0) @@ -833,7 +833,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (f32.add (f32.const 0) @@ -841,7 +841,7 @@ ) ) ) - (func $other (; 1 ;) + (func $other (drop (f32.add (f32.const 0) @@ -853,7 +853,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (f32.add (f32.const 0) @@ -861,7 +861,7 @@ ) ) ) - (func $other (; 1 ;) + (func $other (drop (f32.add (f32.const 1) @@ -873,7 +873,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep2 (; 0 ;) + (func $keep2 (drop (f32.add (f32.const 0) @@ -881,7 +881,7 @@ ) ) ) - (func $other (; 1 ;) + (func $other (drop (f32.sub (f32.const 0) @@ -893,7 +893,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (drop (select (i32.const 0) @@ -906,7 +906,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep (; 0 ;) + (func $keep (drop (select (i32.const 0) @@ -915,7 +915,7 @@ ) ) ) - (func $other (; 1 ;) + (func $other (drop (select (i32.const 1) @@ -928,7 +928,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep (; 0 ;) + (func $keep (drop (select (i32.const 0) @@ -937,7 +937,7 @@ ) ) ) - (func $other (; 1 ;) + (func $other (drop (select (i32.const 0) @@ -950,7 +950,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep (; 0 ;) + (func $keep (drop (select (i32.const 0) @@ -959,7 +959,7 @@ ) ) ) - (func $other (; 1 ;) + (func $other (drop (select (i32.const 0) @@ -972,14 +972,14 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (return) ) ) (module (type $none_=>_i32 (func (result i32))) (memory $0 0) - (func $erase (; 0 ;) (result i32) + (func $erase (result i32) (return (i32.const 0) ) @@ -988,12 +988,12 @@ (module (type $none_=>_i32 (func (result i32))) (memory $0 0) - (func $keep (; 0 ;) (result i32) + (func $keep (result i32) (return (i32.const 0) ) ) - (func $other (; 1 ;) (result i32) + (func $other (result i32) (return (i32.const 1) ) @@ -1002,7 +1002,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (drop (memory.size) ) @@ -1011,7 +1011,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $erase (; 0 ;) + (func $erase (drop (memory.grow (i32.const 10) @@ -1022,14 +1022,14 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep (; 0 ;) + (func $keep (drop (memory.grow (i32.const 10) ) ) ) - (func $other (; 1 ;) + (func $other (drop (memory.grow (i32.const 11) @@ -1040,12 +1040,12 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $keep (; 0 ;) + (func $keep (drop (memory.size) ) ) - (func $other (; 1 ;) + (func $other (drop (memory.grow (i32.const 10) diff -Nru binaryen-91/test/passes/duplicate-import-elimination.txt binaryen-99/test/passes/duplicate-import-elimination.txt --- binaryen-91/test/passes/duplicate-import-elimination.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/duplicate-import-elimination.txt 2021-01-07 20:01:06.000000000 +0000 @@ -7,7 +7,7 @@ (elem (i32.const 0) $foo $foo) (export "baz" (func $0)) (start $foo) - (func $0 (; 2 ;) + (func $0 (call $foo) (call $foo) (call $wrong diff -Nru binaryen-91/test/passes/dwarfdump.bin.txt binaryen-99/test/passes/dwarfdump.bin.txt --- binaryen-91/test/passes/dwarfdump.bin.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/dwarfdump.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -125,7 +125,7 @@ (export "stackAlloc" (func $fimport$5)) (export "stackRestore" (func $fimport$6)) (export "__growWasmMemory" (func $fimport$7)) - (func $0 (; 8 ;) (result i32) + (func $0 (result i32) (i32.const 1024) ) ;; custom section "sourceMappingURL", size 15 diff -Nru binaryen-91/test/passes/dwarfdump_roundtrip_dwarfdump.bin.txt binaryen-99/test/passes/dwarfdump_roundtrip_dwarfdump.bin.txt --- binaryen-91/test/passes/dwarfdump_roundtrip_dwarfdump.bin.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/dwarfdump_roundtrip_dwarfdump.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -213,7 +213,7 @@ (export "stackAlloc" (func $fimport$5)) (export "stackRestore" (func $fimport$6)) (export "__growWasmMemory" (func $fimport$7)) - (func $0 (; 8 ;) (result i32) + (func $0 (result i32) (i32.const 1024) ) ;; custom section "sourceMappingURL", size 15 diff -Nru binaryen-91/test/passes/dwarf-local-order.bin.txt binaryen-99/test/passes/dwarf-local-order.bin.txt --- binaryen-91/test/passes/dwarf-local-order.bin.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/dwarf-local-order.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,703 @@ +(module + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (memory $0 256 256) + (table $0 1 1 funcref) + (global $global$0 (mut i32) (i32.const 5243904)) + (global $global$1 i32 (i32.const 1024)) + (export "memory" (memory $0)) + (export "__wasm_call_ctors" (func $__wasm_call_ctors)) + (export "foo" (func $foo)) + (export "__data_end" (global $global$1)) + (func $__wasm_call_ctors + ) + (func $foo (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + (local $5 i32) + (local $6 i32) + (local $7 f32) + (local $8 f32) + (local $9 f32) + (local $10 i32) + (local $11 f32) + (local $12 f32) + (local $13 f32) + (local $14 f32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local.set $0 + (global.get $global$0) + ) + (local.set $1 + (i32.const 16) + ) + (local.set $2 + (i32.sub + (local.get $0) + (local.get $1) + ) + ) + (local.set $3 + (i32.const 3) + ) + (local.set $4 + (f32.const 2) + ) + (local.set $5 + (i32.const 1) + ) + (i32.store offset=12 + (local.get $2) + (local.get $5) + ) + (f32.store offset=8 + (local.get $2) + (local.get $4) + ) + (i32.store offset=4 + (local.get $2) + (local.get $3) + ) + (local.set $6 + (i32.load offset=12 + (local.get $2) + ) + ) + (local.set $7 + (f32.convert_i32_s + (local.get $6) + ) + ) + (local.set $8 + (f32.load offset=8 + (local.get $2) + ) + ) + (local.set $9 + (f32.add + (local.get $7) + (local.get $8) + ) + ) + (local.set $10 + (i32.load offset=4 + (local.get $2) + ) + ) + (local.set $11 + (f32.convert_i32_s + (local.get $10) + ) + ) + (local.set $12 + (f32.add + (local.get $9) + (local.get $11) + ) + ) + (local.set $13 + (f32.abs + (local.get $12) + ) + ) + (local.set $14 + (f32.const 2147483648) + ) + (local.set $15 + (f32.lt + (local.get $13) + (local.get $14) + ) + ) + (local.set $16 + (i32.eqz + (local.get $15) + ) + ) + (block $label$1 + (block $label$2 + (br_if $label$2 + (local.get $16) + ) + (local.set $17 + (i32.trunc_f32_s + (local.get $12) + ) + ) + (local.set $18 + (local.get $17) + ) + (br $label$1) + ) + (local.set $19 + (i32.const -2147483648) + ) + (local.set $18 + (local.get $19) + ) + ) + (local.set $20 + (local.get $18) + ) + (return + (local.get $20) + ) + ) + ;; custom section ".debug_info", size 120 + ;; custom section ".debug_abbrev", size 67 + ;; custom section ".debug_line", size 94 + ;; custom section ".debug_str", size 201 + ;; custom section "producers", size 172 +) +(module + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (memory $0 256 256) + (table $0 1 1 funcref) + (global $global$0 (mut i32) (i32.const 5243904)) + (global $global$1 i32 (i32.const 1024)) + (export "memory" (memory $0)) + (export "__wasm_call_ctors" (func $__wasm_call_ctors)) + (export "foo" (func $foo)) + (export "__data_end" (global $global$1)) + (func $__wasm_call_ctors + ) + (func $foo (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 f32) + (local $5 i32) + (local $6 i32) + (local $7 f32) + (local $8 f32) + (local $9 f32) + (local $10 i32) + (local $11 f32) + (local $12 f32) + (local $13 f32) + (local $14 f32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + ;; code offset: 0x33 + (local.set $0 + ;; code offset: 0x31 + (global.get $global$0) + ) + ;; code offset: 0x37 + (local.set $1 + ;; code offset: 0x35 + (i32.const 16) + ) + ;; code offset: 0x3e + (local.set $2 + ;; code offset: 0x3d + (i32.sub + ;; code offset: 0x39 + (local.get $0) + ;; code offset: 0x3b + (local.get $1) + ) + ) + ;; code offset: 0x42 + (local.set $3 + ;; code offset: 0x40 + (i32.const 3) + ) + ;; code offset: 0x49 + (local.set $4 + ;; code offset: 0x44 + (f32.const 2) + ) + ;; code offset: 0x4d + (local.set $5 + ;; code offset: 0x4b + (i32.const 1) + ) + ;; code offset: 0x53 + (i32.store offset=12 + ;; code offset: 0x4f + (local.get $2) + ;; code offset: 0x51 + (local.get $5) + ) + ;; code offset: 0x5a + (f32.store offset=8 + ;; code offset: 0x56 + (local.get $2) + ;; code offset: 0x58 + (local.get $4) + ) + ;; code offset: 0x61 + (i32.store offset=4 + ;; code offset: 0x5d + (local.get $2) + ;; code offset: 0x5f + (local.get $3) + ) + ;; code offset: 0x69 + (local.set $6 + ;; code offset: 0x66 + (i32.load offset=12 + ;; code offset: 0x64 + (local.get $2) + ) + ) + ;; code offset: 0x6e + (local.set $7 + ;; code offset: 0x6d + (f32.convert_i32_s + ;; code offset: 0x6b + (local.get $6) + ) + ) + ;; code offset: 0x75 + (local.set $8 + ;; code offset: 0x72 + (f32.load offset=8 + ;; code offset: 0x70 + (local.get $2) + ) + ) + ;; code offset: 0x7c + (local.set $9 + ;; code offset: 0x7b + (f32.add + ;; code offset: 0x77 + (local.get $7) + ;; code offset: 0x79 + (local.get $8) + ) + ) + ;; code offset: 0x83 + (local.set $10 + ;; code offset: 0x80 + (i32.load offset=4 + ;; code offset: 0x7e + (local.get $2) + ) + ) + ;; code offset: 0x88 + (local.set $11 + ;; code offset: 0x87 + (f32.convert_i32_s + ;; code offset: 0x85 + (local.get $10) + ) + ) + ;; code offset: 0x8f + (local.set $12 + ;; code offset: 0x8e + (f32.add + ;; code offset: 0x8a + (local.get $9) + ;; code offset: 0x8c + (local.get $11) + ) + ) + ;; code offset: 0x94 + (local.set $13 + ;; code offset: 0x93 + (f32.abs + ;; code offset: 0x91 + (local.get $12) + ) + ) + ;; code offset: 0x9b + (local.set $14 + ;; code offset: 0x96 + (f32.const 2147483648) + ) + ;; code offset: 0xa2 + (local.set $15 + ;; code offset: 0xa1 + (f32.lt + ;; code offset: 0x9d + (local.get $13) + ;; code offset: 0x9f + (local.get $14) + ) + ) + ;; code offset: 0xa7 + (local.set $16 + ;; code offset: 0xa6 + (i32.eqz + ;; code offset: 0xa4 + (local.get $15) + ) + ) + ;; code offset: 0xa9 + (block $label$1 + (block $label$2 + ;; code offset: 0xaf + (br_if $label$2 + ;; code offset: 0xad + (local.get $16) + ) + ;; code offset: 0xb4 + (local.set $17 + ;; code offset: 0xb3 + (i32.trunc_f32_s + ;; code offset: 0xb1 + (local.get $12) + ) + ) + ;; code offset: 0xb8 + (local.set $18 + ;; code offset: 0xb6 + (local.get $17) + ) + ;; code offset: 0xba + (br $label$1) + ) + ;; code offset: 0xc3 + (local.set $19 + ;; code offset: 0xbd + (i32.const -2147483648) + ) + ;; code offset: 0xc7 + (local.set $18 + ;; code offset: 0xc5 + (local.get $19) + ) + ) + ;; code offset: 0xcc + (local.set $20 + ;; code offset: 0xca + (local.get $18) + ) + ;; code offset: 0xd0 + (return + ;; code offset: 0xce + (local.get $20) + ) + ) + ;; custom section ".debug_info", size 120 + ;; custom section ".debug_abbrev", size 67 + ;; custom section ".debug_line", size 37 + ;; custom section ".debug_str", size 201 + ;; custom section "producers", size 172 +) +(module + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (memory $0 256 256) + (table $0 1 1 funcref) + (global $global$0 (mut i32) (i32.const 5243904)) + (global $global$1 i32 (i32.const 1024)) + (export "memory" (memory $0)) + (export "__wasm_call_ctors" (func $__wasm_call_ctors)) + (export "foo" (func $foo)) + (export "__data_end" (global $global$1)) + (func $__wasm_call_ctors + ) + (func $foo (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 f32) + (local $14 f32) + (local $15 f32) + (local $16 f32) + (local $17 f32) + (local $18 f32) + (local $19 f32) + (local $20 f32) + (local.set $0 + (global.get $global$0) + ) + (local.set $1 + (i32.const 16) + ) + (local.set $2 + (i32.sub + (local.get $0) + (local.get $1) + ) + ) + (local.set $3 + (i32.const 3) + ) + (local.set $13 + (f32.const 2) + ) + (local.set $4 + (i32.const 1) + ) + (i32.store offset=12 + (local.get $2) + (local.get $4) + ) + (f32.store offset=8 + (local.get $2) + (local.get $13) + ) + (i32.store offset=4 + (local.get $2) + (local.get $3) + ) + (local.set $5 + (i32.load offset=12 + (local.get $2) + ) + ) + (local.set $14 + (f32.convert_i32_s + (local.get $5) + ) + ) + (local.set $15 + (f32.load offset=8 + (local.get $2) + ) + ) + (local.set $16 + (f32.add + (local.get $14) + (local.get $15) + ) + ) + (local.set $6 + (i32.load offset=4 + (local.get $2) + ) + ) + (local.set $17 + (f32.convert_i32_s + (local.get $6) + ) + ) + (local.set $18 + (f32.add + (local.get $16) + (local.get $17) + ) + ) + (local.set $19 + (f32.abs + (local.get $18) + ) + ) + (local.set $20 + (f32.const 2147483648) + ) + (local.set $7 + (f32.lt + (local.get $19) + (local.get $20) + ) + ) + (local.set $8 + (i32.eqz + (local.get $7) + ) + ) + (block $label$1 + (block $label$2 + (br_if $label$2 + (local.get $8) + ) + (local.set $9 + (i32.trunc_f32_s + (local.get $18) + ) + ) + (local.set $10 + (local.get $9) + ) + (br $label$1) + ) + (local.set $11 + (i32.const -2147483648) + ) + (local.set $10 + (local.get $11) + ) + ) + (local.set $12 + (local.get $10) + ) + (return + (local.get $12) + ) + ) + ;; custom section "producers", size 172 +) +(module + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (memory $0 256 256) + (table $0 1 1 funcref) + (global $global$0 (mut i32) (i32.const 5243904)) + (global $global$1 i32 (i32.const 1024)) + (export "memory" (memory $0)) + (export "__wasm_call_ctors" (func $__wasm_call_ctors)) + (export "foo" (func $foo)) + (export "__data_end" (global $global$1)) + (func $__wasm_call_ctors + ) + (func $foo (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 f32) + (local $14 f32) + (local $15 f32) + (local $16 f32) + (local $17 f32) + (local $18 f32) + (local $19 f32) + (local $20 f32) + (local.set $0 + (global.get $global$0) + ) + (local.set $1 + (i32.const 16) + ) + (local.set $2 + (i32.sub + (local.get $0) + (local.get $1) + ) + ) + (local.set $3 + (i32.const 3) + ) + (local.set $13 + (f32.const 2) + ) + (local.set $4 + (i32.const 1) + ) + (i32.store offset=12 + (local.get $2) + (local.get $4) + ) + (f32.store offset=8 + (local.get $2) + (local.get $13) + ) + (i32.store offset=4 + (local.get $2) + (local.get $3) + ) + (local.set $5 + (i32.load offset=12 + (local.get $2) + ) + ) + (local.set $14 + (f32.convert_i32_s + (local.get $5) + ) + ) + (local.set $15 + (f32.load offset=8 + (local.get $2) + ) + ) + (local.set $16 + (f32.add + (local.get $14) + (local.get $15) + ) + ) + (local.set $6 + (i32.load offset=4 + (local.get $2) + ) + ) + (local.set $17 + (f32.convert_i32_s + (local.get $6) + ) + ) + (local.set $18 + (f32.add + (local.get $16) + (local.get $17) + ) + ) + (local.set $19 + (f32.abs + (local.get $18) + ) + ) + (local.set $20 + (f32.const 2147483648) + ) + (local.set $7 + (f32.lt + (local.get $19) + (local.get $20) + ) + ) + (local.set $8 + (i32.eqz + (local.get $7) + ) + ) + (block $label$1 + (block $label$2 + (br_if $label$2 + (local.get $8) + ) + (local.set $9 + (i32.trunc_f32_s + (local.get $18) + ) + ) + (local.set $10 + (local.get $9) + ) + (br $label$1) + ) + (local.set $11 + (i32.const -2147483648) + ) + (local.set $10 + (local.get $11) + ) + ) + (local.set $12 + (local.get $10) + ) + (return + (local.get $12) + ) + ) + ;; custom section "producers", size 172 +) diff -Nru binaryen-91/test/passes/dwarf-local-order.passes binaryen-99/test/passes/dwarf-local-order.passes --- binaryen-91/test/passes/dwarf-local-order.passes 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/dwarf-local-order.passes 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +g_print_roundtrip_print_strip-dwarf_roundtrip_print Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/passes/dwarf-local-order.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/passes/dwarf-local-order.wasm differ diff -Nru binaryen-91/test/passes/dwarf_unit_with_no_abbrevs_noprint.passes binaryen-99/test/passes/dwarf_unit_with_no_abbrevs_noprint.passes --- binaryen-91/test/passes/dwarf_unit_with_no_abbrevs_noprint.passes 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/dwarf_unit_with_no_abbrevs_noprint.passes 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +roundtrip_g Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/passes/dwarf_unit_with_no_abbrevs_noprint.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/passes/dwarf_unit_with_no_abbrevs_noprint.wasm differ diff -Nru binaryen-91/test/passes/emit-js-wrapper=a.js.txt binaryen-99/test/passes/emit-js-wrapper=a.js.txt --- binaryen-91/test/passes/emit-js-wrapper=a.js.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/emit-js-wrapper=a.js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -13,19 +13,19 @@ (export "types" (func $legalstub$types)) (export "types2" (func $types2)) (export "types3" (func $legalstub$types3)) - (func $add (; 1 ;) (param $x i32) (param $y i32) (result i32) + (func $add (param $x i32) (param $y i32) (result i32) (i32.add (local.get $x) (local.get $y) ) ) - (func $unexported (; 2 ;) (param $x i32) (param $y i32) (result i32) + (func $unexported (param $x i32) (param $y i32) (result i32) (i32.add (local.get $x) (local.get $y) ) ) - (func $no-return (; 3 ;) (param $x i32) + (func $no-return (param $x i32) (drop (i32.add (local.get $x) @@ -33,16 +33,16 @@ ) ) ) - (func $types (; 4 ;) (param $x i32) (param $y i64) (param $z f32) (param $w f64) + (func $types (param $x i32) (param $y i64) (param $z f32) (param $w f64) (nop) ) - (func $types2 (; 5 ;) (param $x i32) (param $z f32) (param $w f64) + (func $types2 (param $x i32) (param $z f32) (param $w f64) (nop) ) - (func $types3 (; 6 ;) (param $x i32) (param $z f32) (param $w f64) (result i64) + (func $types3 (param $x i32) (param $z f32) (param $w f64) (result i64) (i64.const 1) ) - (func $legalstub$types (; 7 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 f32) (param $4 f64) + (func $legalstub$types (param $0 i32) (param $1 i32) (param $2 i32) (param $3 f32) (param $4 f64) (call $types (local.get $0) (i64.or @@ -60,7 +60,7 @@ (local.get $4) ) ) - (func $legalstub$types3 (; 8 ;) (param $0 i32) (param $1 f32) (param $2 f64) (result i32) + (func $legalstub$types3 (param $0 i32) (param $1 f32) (param $2 f64) (result i32) (local $3 i64) (local.set $3 (call $types3 diff -Nru binaryen-91/test/passes/emit-js-wrapper=a.js.wast.js binaryen-99/test/passes/emit-js-wrapper=a.js.wast.js --- binaryen-91/test/passes/emit-js-wrapper=a.js.wast.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/emit-js-wrapper=a.js.wast.js 2021-01-07 20:01:06.000000000 +0000 @@ -21,13 +21,13 @@ } } function literal(x, type) { - var ret = type + '.const '; + var ret = ''; switch (type) { case 'i32': ret += (x | 0); break; case 'f32': case 'f64': { if (x == 0 && (1 / x) < 0) ret += '-'; - ret += x; + ret += Number(x).toString(); break; } default: throw 'what?'; @@ -48,36 +48,36 @@ }); if (instance.exports.hangLimitInitializer) instance.exports.hangLimitInitializer(); try { - console.log('[fuzz-exec] calling $add'); - console.log('[fuzz-exec] note result: $add => ' + literal(instance.exports.add(0, 0), 'i32')); + console.log('[fuzz-exec] calling add'); + console.log('[fuzz-exec] note result: add => ' + literal(instance.exports.add(0, 0), 'i32')); } catch (e) { console.log('exception!' /* + e */); } if (instance.exports.hangLimitInitializer) instance.exports.hangLimitInitializer(); try { - console.log('[fuzz-exec] calling $no_return'); + console.log('[fuzz-exec] calling no_return'); instance.exports.no_return(0); } catch (e) { console.log('exception!' /* + e */); } if (instance.exports.hangLimitInitializer) instance.exports.hangLimitInitializer(); try { - console.log('[fuzz-exec] calling $types'); + console.log('[fuzz-exec] calling types'); instance.exports.types(0, 0, 0, 0, 0); } catch (e) { console.log('exception!' /* + e */); } if (instance.exports.hangLimitInitializer) instance.exports.hangLimitInitializer(); try { - console.log('[fuzz-exec] calling $types2'); + console.log('[fuzz-exec] calling types2'); instance.exports.types2(0, 0, 0); } catch (e) { console.log('exception!' /* + e */); } if (instance.exports.hangLimitInitializer) instance.exports.hangLimitInitializer(); try { - console.log('[fuzz-exec] calling $types3'); - console.log('[fuzz-exec] note result: $types3 => ' + literal(instance.exports.types3(0, 0, 0), 'i32')); + console.log('[fuzz-exec] calling types3'); + console.log('[fuzz-exec] note result: types3 => ' + literal(instance.exports.types3(0, 0, 0), 'i32')); } catch (e) { console.log('exception!' /* + e */); } diff -Nru binaryen-91/test/passes/emit-spec-wrapper=a.wat.txt binaryen-99/test/passes/emit-spec-wrapper=a.wat.txt --- binaryen-91/test/passes/emit-spec-wrapper=a.wat.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/emit-spec-wrapper=a.wat.txt 2021-01-07 20:01:06.000000000 +0000 @@ -10,19 +10,19 @@ (export "types" (func $types)) (export "types2" (func $types2)) (export "types3" (func $types3)) - (func $add (; 0 ;) (param $x i32) (param $y i32) (result i32) + (func $add (param $x i32) (param $y i32) (result i32) (i32.add (local.get $x) (local.get $y) ) ) - (func $unexported (; 1 ;) (param $x i32) (param $y i32) (result i32) + (func $unexported (param $x i32) (param $y i32) (result i32) (i32.add (local.get $x) (local.get $y) ) ) - (func $no-return (; 2 ;) (param $x i32) + (func $no-return (param $x i32) (drop (i32.add (local.get $x) @@ -30,13 +30,13 @@ ) ) ) - (func $types (; 3 ;) (param $x i32) (param $y i64) (param $z f32) (param $w f64) + (func $types (param $x i32) (param $y i64) (param $z f32) (param $w f64) (nop) ) - (func $types2 (; 4 ;) (param $x i32) (param $z f32) (param $w f64) + (func $types2 (param $x i32) (param $z f32) (param $w f64) (nop) ) - (func $types3 (; 5 ;) (param $x i32) (param $z f32) (param $w f64) (result i64) + (func $types3 (param $x i32) (param $z f32) (param $w f64) (result i64) (i64.const 1) ) ) diff -Nru binaryen-91/test/passes/extract-function_pass-arg=extract@foo.txt binaryen-99/test/passes/extract-function_pass-arg=extract@foo.txt --- binaryen-91/test/passes/extract-function_pass-arg=extract@foo.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/extract-function_pass-arg=extract@foo.txt 2021-01-07 20:01:06.000000000 +0000 @@ -3,7 +3,7 @@ (import "env" "bar" (func $bar)) (import "env" "other" (func $other)) (export "foo" (func $foo)) - (func $foo (; 2 ;) + (func $foo (call $bar) ) ) diff -Nru binaryen-91/test/passes/fannkuch0.bin.txt binaryen-99/test/passes/fannkuch0.bin.txt --- binaryen-91/test/passes/fannkuch0.bin.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/fannkuch0.bin.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,10166 +0,0 @@ -DWARF debug info -================ - -Contains section .debug_info (640 bytes) -Contains section .debug_ranges (32 bytes) -Contains section .debug_abbrev (222 bytes) -Contains section .debug_line (1558 bytes) -Contains section .debug_str (409 bytes) - -.debug_abbrev contents: -Abbrev table for offset: 0x00000000 -[1] DW_TAG_compile_unit DW_CHILDREN_yes - DW_AT_producer DW_FORM_strp - DW_AT_language DW_FORM_data2 - DW_AT_name DW_FORM_strp - DW_AT_stmt_list DW_FORM_sec_offset - DW_AT_comp_dir DW_FORM_strp - DW_AT_low_pc DW_FORM_addr - DW_AT_ranges DW_FORM_sec_offset - -[2] DW_TAG_pointer_type DW_CHILDREN_no - DW_AT_type DW_FORM_ref4 - -[3] DW_TAG_structure_type DW_CHILDREN_yes - DW_AT_calling_convention DW_FORM_data1 - DW_AT_name DW_FORM_strp - DW_AT_byte_size DW_FORM_data1 - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - -[4] DW_TAG_member DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_type DW_FORM_ref4 - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_data_member_location DW_FORM_data1 - -[5] DW_TAG_base_type DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_encoding DW_FORM_data1 - DW_AT_byte_size DW_FORM_data1 - -[6] DW_TAG_namespace DW_CHILDREN_yes - DW_AT_name DW_FORM_strp - -[7] DW_TAG_typedef DW_CHILDREN_no - DW_AT_type DW_FORM_ref4 - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - -[8] DW_TAG_unspecified_type DW_CHILDREN_no - DW_AT_name DW_FORM_strp - -[9] DW_TAG_imported_declaration DW_CHILDREN_no - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_import DW_FORM_ref4 - -[10] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_linkage_name DW_FORM_strp - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - -[11] DW_TAG_formal_parameter DW_CHILDREN_no - DW_AT_location DW_FORM_exprloc - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[12] DW_TAG_variable DW_CHILDREN_no - DW_AT_location DW_FORM_exprloc - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[13] DW_TAG_lexical_block DW_CHILDREN_yes - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - -[14] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - -[15] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_linkage_name DW_FORM_strp - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[16] DW_TAG_label DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_low_pc DW_FORM_addr - -[17] DW_TAG_pointer_type DW_CHILDREN_no - - -.debug_info contents: -0x00000000: Compile Unit: length = 0x0000027c version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x00000280) - -0x0000000b: DW_TAG_compile_unit [1] * - DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 11.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 2d7a8cf90478cd845ffb39763b0e95b7715322d2)") - DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000095] = "tests/fannkuch.cpp") - DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) - DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x000000a8] = "/home/alon/Dev/emscripten") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) - DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 - [0x00000006, 0x0000088c) - [0x0000088e, 0x000009dc) - [0x000009de, 0x00001042)) - -0x00000026: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x002b => {0x0000002b} "worker_args") - -0x0000002b: DW_TAG_structure_type [3] * - DW_AT_calling_convention [DW_FORM_data1] (DW_CC_pass_by_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000cf] = "worker_args") - DW_AT_byte_size [DW_FORM_data1] (0x0c) - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (20) - -0x00000034: DW_TAG_member [4] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c2] = "i") - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (21) - DW_AT_data_member_location [DW_FORM_data1] (0x00) - -0x00000040: DW_TAG_member [4] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c8] = "n") - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (21) - DW_AT_data_member_location [DW_FORM_data1] (0x04) - -0x0000004c: DW_TAG_member [4] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ca] = "next") - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (22) - DW_AT_data_member_location [DW_FORM_data1] (0x08) - -0x00000058: NULL - -0x00000059: DW_TAG_base_type [5] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c4] = "int") - DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) - DW_AT_byte_size [DW_FORM_data1] (0x04) - -0x00000060: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000065: DW_TAG_namespace [6] * - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000db] = "std") - -0x0000006a: DW_TAG_typedef [7] - DW_AT_type [DW_FORM_ref4] (cu + 0x0076 => {0x00000076} "decltype(nullptr)") - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000f1] = "nullptr_t") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/system/include/libcxx/__nullptr") - DW_AT_decl_line [DW_FORM_data1] (57) - -0x00000075: NULL - -0x00000076: DW_TAG_unspecified_type [8] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000df] = "decltype(nullptr)") - -0x0000007b: DW_TAG_imported_declaration [9] - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/system/include/libcxx/stddef.h") - DW_AT_decl_line [DW_FORM_data1] (52) - DW_AT_import [DW_FORM_ref4] (cu + 0x006a => {0x0000006a}) - -0x00000082: DW_TAG_subprogram [10] * - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000006) - DW_AT_high_pc [DW_FORM_data4] (0x00000886) - DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x000000fb] = "_Z15fannkuch_workerPv") - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000111] = "fannkuch_worker") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (26) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x00000099: DW_TAG_formal_parameter [11] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x3c) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000013d] = "_arg") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (26) - DW_AT_type [DW_FORM_ref4] (cu + 0x026d => {0x0000026d} "*") - -0x000000a7: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x38) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000142] = "args") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (28) - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - -0x000000b5: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x34) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000147] = "perm1") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (29) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x000000c3: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x30) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014d] = "count") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (29) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x000000d1: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x2c) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000153] = "perm") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (29) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x000000df: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x28) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000158] = "maxflips") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000000ed: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x24) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000161] = "flips") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000000fb: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x20) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c2] = "i") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000109: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x1c) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c8] = "n") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000117: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x18) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000167] = "r") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000125: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x14) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000169] = "j") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000133: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x10) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000016b] = "k") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000141: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0xc) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000016d] = "tmp") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000014f: DW_TAG_lexical_block [13] * - DW_AT_low_pc [DW_FORM_addr] (0x00000000000006b4) - DW_AT_high_pc [DW_FORM_data4] (0x00000135) - -0x00000158: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x8) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000171] = "p0") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (74) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000166: NULL - -0x00000167: NULL - -0x00000168: DW_TAG_subprogram [14] * - DW_AT_low_pc [DW_FORM_addr] (0x000000000000088e) - DW_AT_high_pc [DW_FORM_data4] (0x0000014e) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000121] = "main") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (152) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x0000017b: DW_TAG_formal_parameter [11] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x18) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000174] = "argc") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (152) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000189: DW_TAG_formal_parameter [11] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x14) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000179] = "argv") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (152) - DW_AT_type [DW_FORM_ref4] (cu + 0x026e => {0x0000026e} "char**") - -0x00000197: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x10) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c8] = "n") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (153) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000001a5: NULL - -0x000001a6: DW_TAG_subprogram [15] * - DW_AT_low_pc [DW_FORM_addr] (0x00000000000009de) - DW_AT_high_pc [DW_FORM_data4] (0x00000664) - DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x00000126] = "_ZL8fannkuchi") - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000134] = "fannkuch") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (87) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000001bd: DW_TAG_formal_parameter [11] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x2c) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c8] = "n") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (87) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000001cb: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x28) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000142] = "args") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (89) - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - -0x000001d9: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x24) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000183] = "targs") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (89) - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - -0x000001e7: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x20) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000189] = "showmax") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (90) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000001f5: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x1c) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000147] = "perm1") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x00000203: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x18) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014d] = "count") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x00000211: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x14) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c2] = "i") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000021f: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x10) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000167] = "r") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000022d: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0xc) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000158] = "maxflips") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000023b: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x8) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000161] = "flips") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000249: DW_TAG_label [16] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000191] = "cleanup") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (137) - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000f10) - -0x00000254: DW_TAG_lexical_block [13] * - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000d62) - DW_AT_high_pc [DW_FORM_data4] (0x00000106) - -0x0000025d: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x4) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000171] = "p0") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (125) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000026b: NULL - -0x0000026c: NULL - -0x0000026d: DW_TAG_pointer_type [17] - -0x0000026e: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x0273 => {0x00000273} "char*") - -0x00000273: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x0278 => {0x00000278} "char") - -0x00000278: DW_TAG_base_type [5] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000017e] = "char") - DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char) - DW_AT_byte_size [DW_FORM_data1] (0x01) - -0x0000027f: NULL - -.debug_line contents: -debug_line[0x00000000] -Line table prologue: - total_length: 0x00000612 - version: 4 - prologue_length: 0x00000059 - min_inst_length: 1 -max_ops_per_inst: 1 - default_is_stmt: 1 - line_base: -5 - line_range: 14 - opcode_base: 13 -standard_opcode_lengths[DW_LNS_copy] = 0 -standard_opcode_lengths[DW_LNS_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_advance_line] = 1 -standard_opcode_lengths[DW_LNS_set_file] = 1 -standard_opcode_lengths[DW_LNS_set_column] = 1 -standard_opcode_lengths[DW_LNS_negate_stmt] = 0 -standard_opcode_lengths[DW_LNS_set_basic_block] = 0 -standard_opcode_lengths[DW_LNS_const_add_pc] = 0 -standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 -standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 -standard_opcode_lengths[DW_LNS_set_isa] = 1 -include_directories[ 1] = "tests" -include_directories[ 2] = "system/include/libcxx" -file_names[ 1]: - name: "fannkuch.cpp" - dir_index: 1 - mod_time: 0x00000000 - length: 0x00000000 -file_names[ 2]: - name: "__nullptr" - dir_index: 2 - mod_time: 0x00000000 - length: 0x00000000 -file_names[ 3]: - name: "stddef.h" - dir_index: 2 - mod_time: 0x00000000 - length: 0x00000000 -0x00000063: 00 DW_LNE_set_address (0x0000000000000006) -0x0000006a: 03 DW_LNS_advance_line (27) -0x0000006c: 01 DW_LNS_copy - 0x0000000000000006 27 0 1 0 0 is_stmt - - -0x0000006d: 05 DW_LNS_set_column (45) -0x0000006f: 0a DW_LNS_set_prologue_end -0x00000070: 02 DW_LNS_advance_pc (43) -0x00000072: 13 address += 0, line += 1 - 0x0000000000000031 28 45 1 0 0 is_stmt prologue_end - -0x00000073: 05 DW_LNS_set_column (24) -0x00000075: 06 DW_LNS_negate_stmt -0x00000076: 74 address += 7, line += 0 - 0x0000000000000038 28 24 1 0 0 - -0x00000077: 05 DW_LNS_set_column (13) -0x00000079: 06 DW_LNS_negate_stmt -0x0000007a: 78 address += 7, line += 4 - 0x000000000000003f 32 13 1 0 0 is_stmt - -0x0000007b: 05 DW_LNS_set_column (8) -0x0000007d: 75 address += 7, line += 1 - 0x0000000000000046 33 8 1 0 0 is_stmt - -0x0000007e: 05 DW_LNS_set_column (14) -0x00000080: 06 DW_LNS_negate_stmt -0x00000081: 74 address += 7, line += 0 - 0x000000000000004d 33 14 1 0 0 - -0x00000082: 05 DW_LNS_set_column (6) -0x00000084: 74 address += 7, line += 0 - 0x0000000000000054 33 6 1 0 0 - -0x00000085: 05 DW_LNS_set_column (25) -0x00000087: 06 DW_LNS_negate_stmt -0x00000088: 75 address += 7, line += 1 - 0x000000000000005b 34 25 1 0 0 is_stmt - -0x00000089: 05 DW_LNS_set_column (27) -0x0000008b: 06 DW_LNS_negate_stmt -0x0000008c: 74 address += 7, line += 0 - 0x0000000000000062 34 27 1 0 0 - -0x0000008d: 05 DW_LNS_set_column (18) -0x0000008f: ac address += 11, line += 0 - 0x000000000000006d 34 18 1 0 0 - -0x00000090: 05 DW_LNS_set_column (10) -0x00000092: 9e address += 10, line += 0 - 0x0000000000000077 34 10 1 0 0 - -0x00000093: 05 DW_LNS_set_column (24) -0x00000095: 06 DW_LNS_negate_stmt -0x00000096: 75 address += 7, line += 1 - 0x000000000000007e 35 24 1 0 0 is_stmt - -0x00000097: 05 DW_LNS_set_column (26) -0x00000099: 06 DW_LNS_negate_stmt -0x0000009a: 74 address += 7, line += 0 - 0x0000000000000085 35 26 1 0 0 - -0x0000009b: 05 DW_LNS_set_column (17) -0x0000009d: ac address += 11, line += 0 - 0x0000000000000090 35 17 1 0 0 - -0x0000009e: 05 DW_LNS_set_column (9) -0x000000a0: 9e address += 10, line += 0 - 0x000000000000009a 35 9 1 0 0 - -0x000000a1: 05 DW_LNS_set_column (25) -0x000000a3: 06 DW_LNS_negate_stmt -0x000000a4: 75 address += 7, line += 1 - 0x00000000000000a1 36 25 1 0 0 is_stmt - -0x000000a5: 05 DW_LNS_set_column (27) -0x000000a7: 06 DW_LNS_negate_stmt -0x000000a8: 74 address += 7, line += 0 - 0x00000000000000a8 36 27 1 0 0 - -0x000000a9: 05 DW_LNS_set_column (18) -0x000000ab: ac address += 11, line += 0 - 0x00000000000000b3 36 18 1 0 0 - -0x000000ac: 05 DW_LNS_set_column (10) -0x000000ae: 9e address += 10, line += 0 - 0x00000000000000bd 36 10 1 0 0 - -0x000000af: 05 DW_LNS_set_column (11) -0x000000b1: 06 DW_LNS_negate_stmt -0x000000b2: 75 address += 7, line += 1 - 0x00000000000000c4 37 11 1 0 0 is_stmt - -0x000000b3: 05 DW_LNS_set_column (16) -0x000000b5: 06 DW_LNS_negate_stmt -0x000000b6: 74 address += 7, line += 0 - 0x00000000000000cb 37 16 1 0 0 - -0x000000b7: 05 DW_LNS_set_column (20) -0x000000b9: ac address += 11, line += 0 - 0x00000000000000d6 37 20 1 0 0 - -0x000000ba: 05 DW_LNS_set_column (18) -0x000000bc: 74 address += 7, line += 0 - 0x00000000000000dd 37 18 1 0 0 - -0x000000bd: 05 DW_LNS_set_column (4) -0x000000bf: e4 address += 15, line += 0 - 0x00000000000000ec 37 4 1 0 0 - -0x000000c0: 05 DW_LNS_set_column (18) -0x000000c2: 06 DW_LNS_negate_stmt -0x000000c3: f3 address += 16, line += 1 - 0x00000000000000fc 38 18 1 0 0 is_stmt - -0x000000c4: 05 DW_LNS_set_column (7) -0x000000c6: 06 DW_LNS_negate_stmt -0x000000c7: 74 address += 7, line += 0 - 0x0000000000000103 38 7 1 0 0 - -0x000000c8: 05 DW_LNS_set_column (13) -0x000000ca: 74 address += 7, line += 0 - 0x000000000000010a 38 13 1 0 0 - -0x000000cb: 05 DW_LNS_set_column (7) -0x000000cd: 74 address += 7, line += 0 - 0x0000000000000111 38 7 1 0 0 - -0x000000ce: 05 DW_LNS_set_column (16) -0x000000d0: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000000d1: 20 address += 1, line += 0 - 0x0000000000000123 38 16 1 0 0 - -0x000000d2: 05 DW_LNS_set_column (24) -0x000000d4: 06 DW_LNS_negate_stmt -0x000000d5: 73 address += 7, line += -1 - 0x000000000000012a 37 24 1 0 0 is_stmt - -0x000000d6: 05 DW_LNS_set_column (4) -0x000000d8: 06 DW_LNS_negate_stmt -0x000000d9: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000000da: 82 address += 8, line += 0 - 0x0000000000000143 37 4 1 0 0 - -0x000000db: 2e address += 2, line += 0 - 0x0000000000000145 37 4 1 0 0 - -0x000000dc: 05 DW_LNS_set_column (21) -0x000000de: 06 DW_LNS_negate_stmt -0x000000df: 30 address += 2, line += 2 - 0x0000000000000147 39 21 1 0 0 is_stmt - -0x000000e0: 05 DW_LNS_set_column (23) -0x000000e2: 06 DW_LNS_negate_stmt -0x000000e3: 74 address += 7, line += 0 - 0x000000000000014e 39 23 1 0 0 - -0x000000e4: 05 DW_LNS_set_column (4) -0x000000e6: ac address += 11, line += 0 - 0x0000000000000159 39 4 1 0 0 - -0x000000e7: 05 DW_LNS_set_column (10) -0x000000e9: 74 address += 7, line += 0 - 0x0000000000000160 39 10 1 0 0 - -0x000000ea: 05 DW_LNS_set_column (16) -0x000000ec: 74 address += 7, line += 0 - 0x0000000000000167 39 16 1 0 0 - -0x000000ed: 05 DW_LNS_set_column (4) -0x000000ef: 74 address += 7, line += 0 - 0x000000000000016e 39 4 1 0 0 - -0x000000f0: 05 DW_LNS_set_column (19) -0x000000f2: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000000f3: 20 address += 1, line += 0 - 0x0000000000000180 39 19 1 0 0 - -0x000000f4: 06 DW_LNS_negate_stmt -0x000000f5: 75 address += 7, line += 1 - 0x0000000000000187 40 19 1 0 0 is_stmt - -0x000000f6: 05 DW_LNS_set_column (25) -0x000000f8: 06 DW_LNS_negate_stmt -0x000000f9: 74 address += 7, line += 0 - 0x000000000000018e 40 25 1 0 0 - -0x000000fa: 05 DW_LNS_set_column (4) -0x000000fc: 74 address += 7, line += 0 - 0x0000000000000195 40 4 1 0 0 - -0x000000fd: 05 DW_LNS_set_column (10) -0x000000ff: 74 address += 7, line += 0 - 0x000000000000019c 40 10 1 0 0 - -0x00000100: 05 DW_LNS_set_column (12) -0x00000102: 74 address += 7, line += 0 - 0x00000000000001a3 40 12 1 0 0 - -0x00000103: 05 DW_LNS_set_column (4) -0x00000105: ac address += 11, line += 0 - 0x00000000000001ae 40 4 1 0 0 - -0x00000106: 05 DW_LNS_set_column (17) -0x00000108: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000109: 20 address += 1, line += 0 - 0x00000000000001c0 40 17 1 0 0 - -0x0000010a: 05 DW_LNS_set_column (8) -0x0000010c: 06 DW_LNS_negate_stmt -0x0000010d: 75 address += 7, line += 1 - 0x00000000000001c7 41 8 1 0 0 is_stmt - -0x0000010e: 05 DW_LNS_set_column (6) -0x00000110: 06 DW_LNS_negate_stmt -0x00000111: 74 address += 7, line += 0 - 0x00000000000001ce 41 6 1 0 0 - -0x00000112: 03 DW_LNS_advance_line (0) -0x00000114: 74 address += 7, line += 0 - 0x00000000000001d5 0 6 1 0 0 - -0x00000115: 05 DW_LNS_set_column (14) -0x00000117: 06 DW_LNS_negate_stmt -0x00000118: 03 DW_LNS_advance_line (44) -0x0000011a: 9e address += 10, line += 0 - 0x00000000000001df 44 14 1 0 0 is_stmt - -0x0000011b: 05 DW_LNS_set_column (16) -0x0000011d: 06 DW_LNS_negate_stmt -0x0000011e: 74 address += 7, line += 0 - 0x00000000000001e6 44 16 1 0 0 - -0x0000011f: 05 DW_LNS_set_column (7) -0x00000121: e4 address += 15, line += 0 - 0x00000000000001f5 44 7 1 0 0 - -0x00000122: 05 DW_LNS_set_column (25) -0x00000124: 06 DW_LNS_negate_stmt -0x00000125: f3 address += 16, line += 1 - 0x0000000000000205 45 25 1 0 0 is_stmt - -0x00000126: 05 DW_LNS_set_column (10) -0x00000128: 06 DW_LNS_negate_stmt -0x00000129: 74 address += 7, line += 0 - 0x000000000000020c 45 10 1 0 0 - -0x0000012a: 05 DW_LNS_set_column (16) -0x0000012c: 74 address += 7, line += 0 - 0x0000000000000213 45 16 1 0 0 - -0x0000012d: 05 DW_LNS_set_column (18) -0x0000012f: 74 address += 7, line += 0 - 0x000000000000021a 45 18 1 0 0 - -0x00000130: 05 DW_LNS_set_column (10) -0x00000132: ac address += 11, line += 0 - 0x0000000000000225 45 10 1 0 0 - -0x00000133: 05 DW_LNS_set_column (23) -0x00000135: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000136: 20 address += 1, line += 0 - 0x0000000000000237 45 23 1 0 0 - -0x00000137: 05 DW_LNS_set_column (22) -0x00000139: 06 DW_LNS_negate_stmt -0x0000013a: 73 address += 7, line += -1 - 0x000000000000023e 44 22 1 0 0 is_stmt - -0x0000013b: 05 DW_LNS_set_column (7) -0x0000013d: 06 DW_LNS_negate_stmt -0x0000013e: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x0000013f: 82 address += 8, line += 0 - 0x0000000000000257 44 7 1 0 0 - -0x00000140: 2e address += 2, line += 0 - 0x0000000000000259 44 7 1 0 0 - -0x00000141: 05 DW_LNS_set_column (11) -0x00000143: 06 DW_LNS_negate_stmt -0x00000144: 30 address += 2, line += 2 - 0x000000000000025b 46 11 1 0 0 is_stmt - -0x00000145: 05 DW_LNS_set_column (25) -0x00000147: 06 DW_LNS_negate_stmt -0x00000148: d6 address += 14, line += 0 - 0x0000000000000269 46 25 1 0 0 - -0x00000149: 05 DW_LNS_set_column (28) -0x0000014b: 74 address += 7, line += 0 - 0x0000000000000270 46 28 1 0 0 - -0x0000014c: 05 DW_LNS_set_column (34) -0x0000014e: 74 address += 7, line += 0 - 0x0000000000000277 46 34 1 0 0 - -0x0000014f: 05 DW_LNS_set_column (36) -0x00000151: 74 address += 7, line += 0 - 0x000000000000027e 46 36 1 0 0 - -0x00000152: 05 DW_LNS_set_column (28) -0x00000154: ac address += 11, line += 0 - 0x0000000000000289 46 28 1 0 0 - -0x00000155: 05 DW_LNS_set_column (44) -0x00000157: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000158: 82 address += 8, line += 0 - 0x00000000000002a2 46 44 1 0 0 - -0x00000159: 05 DW_LNS_set_column (46) -0x0000015b: 74 address += 7, line += 0 - 0x00000000000002a9 46 46 1 0 0 - -0x0000015c: 05 DW_LNS_set_column (41) -0x0000015e: ac address += 11, line += 0 - 0x00000000000002b4 46 41 1 0 0 - -0x0000015f: 05 DW_LNS_set_column (11) -0x00000161: e4 address += 15, line += 0 - 0x00000000000002c3 46 11 1 0 0 - -0x00000162: 03 DW_LNS_advance_line (0) -0x00000164: f2 address += 16, line += 0 - 0x00000000000002d3 0 11 1 0 0 - -0x00000165: 05 DW_LNS_set_column (17) -0x00000167: 06 DW_LNS_negate_stmt -0x00000168: 03 DW_LNS_advance_line (47) -0x0000016a: 4a address += 4, line += 0 - 0x00000000000002d7 47 17 1 0 0 is_stmt - -0x0000016b: 05 DW_LNS_set_column (22) -0x0000016d: 06 DW_LNS_negate_stmt -0x0000016e: 74 address += 7, line += 0 - 0x00000000000002de 47 22 1 0 0 - -0x0000016f: 05 DW_LNS_set_column (26) -0x00000171: ac address += 11, line += 0 - 0x00000000000002e9 47 26 1 0 0 - -0x00000172: 05 DW_LNS_set_column (24) -0x00000174: 74 address += 7, line += 0 - 0x00000000000002f0 47 24 1 0 0 - -0x00000175: 05 DW_LNS_set_column (10) -0x00000177: e4 address += 15, line += 0 - 0x00000000000002ff 47 10 1 0 0 - -0x00000178: 05 DW_LNS_set_column (23) -0x0000017a: 06 DW_LNS_negate_stmt -0x0000017b: f3 address += 16, line += 1 - 0x000000000000030f 48 23 1 0 0 is_stmt - -0x0000017c: 05 DW_LNS_set_column (29) -0x0000017e: 06 DW_LNS_negate_stmt -0x0000017f: 74 address += 7, line += 0 - 0x0000000000000316 48 29 1 0 0 - -0x00000180: 05 DW_LNS_set_column (23) -0x00000182: 74 address += 7, line += 0 - 0x000000000000031d 48 23 1 0 0 - -0x00000183: 05 DW_LNS_set_column (13) -0x00000185: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000186: 82 address += 8, line += 0 - 0x0000000000000336 48 13 1 0 0 - -0x00000187: 05 DW_LNS_set_column (18) -0x00000189: 74 address += 7, line += 0 - 0x000000000000033d 48 18 1 0 0 - -0x0000018a: 05 DW_LNS_set_column (13) -0x0000018c: 74 address += 7, line += 0 - 0x0000000000000344 48 13 1 0 0 - -0x0000018d: 05 DW_LNS_set_column (21) -0x0000018f: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000190: 20 address += 1, line += 0 - 0x0000000000000356 48 21 1 0 0 - -0x00000191: 05 DW_LNS_set_column (30) -0x00000193: 06 DW_LNS_negate_stmt -0x00000194: 73 address += 7, line += -1 - 0x000000000000035d 47 30 1 0 0 is_stmt - -0x00000195: 05 DW_LNS_set_column (10) -0x00000197: 06 DW_LNS_negate_stmt -0x00000198: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000199: 82 address += 8, line += 0 - 0x0000000000000376 47 10 1 0 0 - -0x0000019a: 2e address += 2, line += 0 - 0x0000000000000378 47 10 1 0 0 - -0x0000019b: 05 DW_LNS_set_column (16) -0x0000019d: 06 DW_LNS_negate_stmt -0x0000019e: 68 address += 6, line += 2 - 0x000000000000037e 49 16 1 0 0 is_stmt - -0x0000019f: 05 DW_LNS_set_column (14) -0x000001a1: 75 address += 7, line += 1 - 0x0000000000000385 50 14 1 0 0 is_stmt - -0x000001a2: 05 DW_LNS_set_column (12) -0x000001a4: 06 DW_LNS_negate_stmt -0x000001a5: d6 address += 14, line += 0 - 0x0000000000000393 50 12 1 0 0 - -0x000001a6: 03 DW_LNS_advance_line (0) -0x000001a8: 74 address += 7, line += 0 - 0x000000000000039a 0 12 1 0 0 - -0x000001a9: 05 DW_LNS_set_column (20) -0x000001ab: 06 DW_LNS_negate_stmt -0x000001ac: 03 DW_LNS_advance_line (52) -0x000001ae: 66 address += 6, line += 0 - 0x00000000000003a0 52 20 1 0 0 is_stmt - -0x000001af: 05 DW_LNS_set_column (29) -0x000001b1: 06 DW_LNS_negate_stmt -0x000001b2: 74 address += 7, line += 0 - 0x00000000000003a7 52 29 1 0 0 - -0x000001b3: 05 DW_LNS_set_column (31) -0x000001b5: 74 address += 7, line += 0 - 0x00000000000003ae 52 31 1 0 0 - -0x000001b6: 05 DW_LNS_set_column (27) -0x000001b8: ac address += 11, line += 0 - 0x00000000000003b9 52 27 1 0 0 - -0x000001b9: 05 DW_LNS_set_column (36) -0x000001bb: 74 address += 7, line += 0 - 0x00000000000003c0 52 36 1 0 0 - -0x000001bc: 05 DW_LNS_set_column (40) -0x000001be: ac address += 11, line += 0 - 0x00000000000003cb 52 40 1 0 0 - -0x000001bf: 05 DW_LNS_set_column (38) -0x000001c1: 74 address += 7, line += 0 - 0x00000000000003d2 52 38 1 0 0 - -0x000001c2: 05 DW_LNS_set_column (13) -0x000001c4: e4 address += 15, line += 0 - 0x00000000000003e1 52 13 1 0 0 - -0x000001c5: 05 DW_LNS_set_column (22) -0x000001c7: 06 DW_LNS_negate_stmt -0x000001c8: f3 address += 16, line += 1 - 0x00000000000003f1 53 22 1 0 0 is_stmt - -0x000001c9: 05 DW_LNS_set_column (27) -0x000001cb: 06 DW_LNS_negate_stmt -0x000001cc: 74 address += 7, line += 0 - 0x00000000000003f8 53 27 1 0 0 - -0x000001cd: 05 DW_LNS_set_column (22) -0x000001cf: 82 address += 8, line += 0 - 0x0000000000000400 53 22 1 0 0 - -0x000001d0: 05 DW_LNS_set_column (20) -0x000001d2: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000001d3: f2 address += 16, line += 0 - 0x0000000000000421 53 20 1 0 0 - -0x000001d4: 05 DW_LNS_set_column (26) -0x000001d6: 06 DW_LNS_negate_stmt -0x000001d7: 83 address += 8, line += 1 - 0x0000000000000429 54 26 1 0 0 is_stmt - -0x000001d8: 05 DW_LNS_set_column (31) -0x000001da: 06 DW_LNS_negate_stmt -0x000001db: 82 address += 8, line += 0 - 0x0000000000000431 54 31 1 0 0 - -0x000001dc: 05 DW_LNS_set_column (26) -0x000001de: 82 address += 8, line += 0 - 0x0000000000000439 54 26 1 0 0 - -0x000001df: 05 DW_LNS_set_column (16) -0x000001e1: 02 DW_LNS_advance_pc (34) -0x000001e3: 12 address += 0, line += 0 - 0x000000000000045b 54 16 1 0 0 - -0x000001e4: 05 DW_LNS_set_column (21) -0x000001e6: 82 address += 8, line += 0 - 0x0000000000000463 54 21 1 0 0 - -0x000001e7: 05 DW_LNS_set_column (16) -0x000001e9: 82 address += 8, line += 0 - 0x000000000000046b 54 16 1 0 0 - -0x000001ea: 05 DW_LNS_set_column (24) -0x000001ec: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000001ed: 82 address += 8, line += 0 - 0x0000000000000484 54 24 1 0 0 - -0x000001ee: 05 DW_LNS_set_column (26) -0x000001f0: 06 DW_LNS_negate_stmt -0x000001f1: 91 address += 9, line += 1 - 0x000000000000048d 55 26 1 0 0 is_stmt - -0x000001f2: 05 DW_LNS_set_column (16) -0x000001f4: 06 DW_LNS_negate_stmt -0x000001f5: 82 address += 8, line += 0 - 0x0000000000000495 55 16 1 0 0 - -0x000001f6: 05 DW_LNS_set_column (21) -0x000001f8: 82 address += 8, line += 0 - 0x000000000000049d 55 21 1 0 0 - -0x000001f9: 05 DW_LNS_set_column (16) -0x000001fb: 82 address += 8, line += 0 - 0x00000000000004a5 55 16 1 0 0 - -0x000001fc: 05 DW_LNS_set_column (24) -0x000001fe: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000001ff: 82 address += 8, line += 0 - 0x00000000000004be 55 24 1 0 0 - -0x00000200: 05 DW_LNS_set_column (44) -0x00000202: 06 DW_LNS_negate_stmt -0x00000203: 8d address += 9, line += -3 - 0x00000000000004c7 52 44 1 0 0 is_stmt - -0x00000204: 05 DW_LNS_set_column (49) -0x00000206: 06 DW_LNS_negate_stmt -0x00000207: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000208: d6 address += 14, line += 0 - 0x00000000000004e6 52 49 1 0 0 - -0x00000209: 05 DW_LNS_set_column (13) -0x0000020b: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x0000020c: d6 address += 14, line += 0 - 0x0000000000000505 52 13 1 0 0 - -0x0000020d: 2e address += 2, line += 0 - 0x0000000000000507 52 13 1 0 0 - -0x0000020e: 05 DW_LNS_set_column (18) -0x00000210: 06 DW_LNS_negate_stmt -0x00000211: 33 address += 2, line += 5 - 0x0000000000000509 57 18 1 0 0 is_stmt - -0x00000212: 05 DW_LNS_set_column (19) -0x00000214: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000215: d7 address += 14, line += 1 - 0x0000000000000528 58 19 1 0 0 is_stmt - -0x00000216: 05 DW_LNS_set_column (24) -0x00000218: 06 DW_LNS_negate_stmt -0x00000219: 82 address += 8, line += 0 - 0x0000000000000530 58 24 1 0 0 - -0x0000021a: 05 DW_LNS_set_column (19) -0x0000021c: 82 address += 8, line += 0 - 0x0000000000000538 58 19 1 0 0 - -0x0000021d: 05 DW_LNS_set_column (17) -0x0000021f: 02 DW_LNS_advance_pc (34) -0x00000221: 12 address += 0, line += 0 - 0x000000000000055a 58 17 1 0 0 - -0x00000222: 05 DW_LNS_set_column (23) -0x00000224: 06 DW_LNS_negate_stmt -0x00000225: 83 address += 8, line += 1 - 0x0000000000000562 59 23 1 0 0 is_stmt - -0x00000226: 05 DW_LNS_set_column (13) -0x00000228: 06 DW_LNS_negate_stmt -0x00000229: 82 address += 8, line += 0 - 0x000000000000056a 59 13 1 0 0 - -0x0000022a: 05 DW_LNS_set_column (18) -0x0000022c: 82 address += 8, line += 0 - 0x0000000000000572 59 18 1 0 0 - -0x0000022d: 05 DW_LNS_set_column (13) -0x0000022f: 82 address += 8, line += 0 - 0x000000000000057a 59 13 1 0 0 - -0x00000230: 05 DW_LNS_set_column (21) -0x00000232: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000233: 82 address += 8, line += 0 - 0x0000000000000593 59 21 1 0 0 - -0x00000234: 05 DW_LNS_set_column (17) -0x00000236: 06 DW_LNS_negate_stmt -0x00000237: 91 address += 9, line += 1 - 0x000000000000059c 60 17 1 0 0 is_stmt - -0x00000238: 05 DW_LNS_set_column (15) -0x0000023a: 06 DW_LNS_negate_stmt -0x0000023b: 82 address += 8, line += 0 - 0x00000000000005a4 60 15 1 0 0 - -0x0000023c: 05 DW_LNS_set_column (19) -0x0000023e: 06 DW_LNS_negate_stmt -0x0000023f: 83 address += 8, line += 1 - 0x00000000000005ac 61 19 1 0 0 is_stmt - -0x00000240: 05 DW_LNS_set_column (10) -0x00000242: 06 DW_LNS_negate_stmt -0x00000243: 82 address += 8, line += 0 - 0x00000000000005b4 61 10 1 0 0 - -0x00000244: 05 DW_LNS_set_column (14) -0x00000246: 06 DW_LNS_negate_stmt -0x00000247: 67 address += 6, line += 1 - 0x00000000000005ba 62 14 1 0 0 is_stmt - -0x00000248: 05 DW_LNS_set_column (25) -0x0000024a: 06 DW_LNS_negate_stmt -0x0000024b: 82 address += 8, line += 0 - 0x00000000000005c2 62 25 1 0 0 - -0x0000024c: 05 DW_LNS_set_column (23) -0x0000024e: 82 address += 8, line += 0 - 0x00000000000005ca 62 23 1 0 0 - -0x0000024f: 05 DW_LNS_set_column (14) -0x00000251: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000252: 58 address += 5, line += 0 - 0x00000000000005e0 62 14 1 0 0 - -0x00000253: 05 DW_LNS_set_column (24) -0x00000255: 06 DW_LNS_negate_stmt -0x00000256: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000257: 67 address += 6, line += 1 - 0x00000000000005f7 63 24 1 0 0 is_stmt - -0x00000258: 05 DW_LNS_set_column (22) -0x0000025a: 06 DW_LNS_negate_stmt -0x0000025b: 82 address += 8, line += 0 - 0x00000000000005ff 63 22 1 0 0 - -0x0000025c: 03 DW_LNS_advance_line (0) -0x0000025e: 82 address += 8, line += 0 - 0x0000000000000607 0 22 1 0 0 - -0x0000025f: 05 DW_LNS_set_column (14) -0x00000261: 06 DW_LNS_negate_stmt -0x00000262: 03 DW_LNS_advance_line (66) -0x00000265: 2e address += 2, line += 0 - 0x0000000000000609 66 14 1 0 0 is_stmt - -0x00000266: 05 DW_LNS_set_column (19) -0x00000268: 06 DW_LNS_negate_stmt -0x00000269: 9e address += 10, line += 0 - 0x0000000000000613 66 19 1 0 0 - -0x0000026a: 05 DW_LNS_set_column (21) -0x0000026c: 82 address += 8, line += 0 - 0x000000000000061b 66 21 1 0 0 - -0x0000026d: 05 DW_LNS_set_column (16) -0x0000026f: e4 address += 15, line += 0 - 0x000000000000062a 66 16 1 0 0 - -0x00000270: 05 DW_LNS_set_column (14) -0x00000272: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000273: 58 address += 5, line += 0 - 0x0000000000000640 66 14 1 0 0 - -0x00000274: 05 DW_LNS_set_column (18) -0x00000276: 06 DW_LNS_negate_stmt -0x00000277: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000278: 67 address += 6, line += 1 - 0x0000000000000657 67 18 1 0 0 is_stmt - -0x00000279: 05 DW_LNS_set_column (13) -0x0000027b: 06 DW_LNS_negate_stmt -0x0000027c: 82 address += 8, line += 0 - 0x000000000000065f 67 13 1 0 0 - -0x0000027d: 05 DW_LNS_set_column (18) -0x0000027f: 06 DW_LNS_negate_stmt -0x00000280: 91 address += 9, line += 1 - 0x0000000000000668 68 18 1 0 0 is_stmt - -0x00000281: 05 DW_LNS_set_column (13) -0x00000283: 06 DW_LNS_negate_stmt -0x00000284: 82 address += 8, line += 0 - 0x0000000000000670 68 13 1 0 0 - -0x00000285: 05 DW_LNS_set_column (18) -0x00000287: 06 DW_LNS_negate_stmt -0x00000288: 91 address += 9, line += 1 - 0x0000000000000679 69 18 1 0 0 is_stmt - -0x00000289: 05 DW_LNS_set_column (13) -0x0000028b: 06 DW_LNS_negate_stmt -0x0000028c: 82 address += 8, line += 0 - 0x0000000000000681 69 13 1 0 0 - -0x0000028d: 05 DW_LNS_set_column (20) -0x0000028f: 06 DW_LNS_negate_stmt -0x00000290: 91 address += 9, line += 1 - 0x000000000000068a 70 20 1 0 0 is_stmt - -0x00000291: 05 DW_LNS_set_column (13) -0x00000293: 06 DW_LNS_negate_stmt -0x00000294: 82 address += 8, line += 0 - 0x0000000000000692 70 13 1 0 0 - -0x00000295: 03 DW_LNS_advance_line (0) -0x00000298: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000299: ac address += 11, line += 0 - 0x00000000000006ae 0 13 1 0 0 - -0x0000029a: 05 DW_LNS_set_column (22) -0x0000029c: 06 DW_LNS_negate_stmt -0x0000029d: 03 DW_LNS_advance_line (74) -0x000002a0: 66 address += 6, line += 0 - 0x00000000000006b4 74 22 1 0 0 is_stmt - -0x000002a1: 05 DW_LNS_set_column (17) -0x000002a3: 06 DW_LNS_negate_stmt -0x000002a4: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000002a5: 12 address += 0, line += 0 - 0x00000000000006c5 74 17 1 0 0 - -0x000002a6: 05 DW_LNS_set_column (20) -0x000002a8: 06 DW_LNS_negate_stmt -0x000002a9: 83 address += 8, line += 1 - 0x00000000000006cd 75 20 1 0 0 is_stmt - -0x000002aa: 05 DW_LNS_set_column (25) -0x000002ac: 06 DW_LNS_negate_stmt -0x000002ad: 82 address += 8, line += 0 - 0x00000000000006d5 75 25 1 0 0 - -0x000002ae: 05 DW_LNS_set_column (29) -0x000002b0: ba address += 12, line += 0 - 0x00000000000006e1 75 29 1 0 0 - -0x000002b1: 05 DW_LNS_set_column (27) -0x000002b3: 82 address += 8, line += 0 - 0x00000000000006e9 75 27 1 0 0 - -0x000002b4: 05 DW_LNS_set_column (13) -0x000002b6: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000002b7: 58 address += 5, line += 0 - 0x00000000000006ff 75 13 1 0 0 - -0x000002b8: 05 DW_LNS_set_column (27) -0x000002ba: 06 DW_LNS_negate_stmt -0x000002bb: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000002bc: 4b address += 4, line += 1 - 0x0000000000000714 76 27 1 0 0 is_stmt - -0x000002bd: 05 DW_LNS_set_column (33) -0x000002bf: 06 DW_LNS_negate_stmt -0x000002c0: 82 address += 8, line += 0 - 0x000000000000071c 76 33 1 0 0 - -0x000002c1: 05 DW_LNS_set_column (35) -0x000002c3: 82 address += 8, line += 0 - 0x0000000000000724 76 35 1 0 0 - -0x000002c4: 05 DW_LNS_set_column (27) -0x000002c6: e4 address += 15, line += 0 - 0x0000000000000733 76 27 1 0 0 - -0x000002c7: 05 DW_LNS_set_column (16) -0x000002c9: 02 DW_LNS_advance_pc (34) -0x000002cb: 12 address += 0, line += 0 - 0x0000000000000755 76 16 1 0 0 - -0x000002cc: 05 DW_LNS_set_column (22) -0x000002ce: 82 address += 8, line += 0 - 0x000000000000075d 76 22 1 0 0 - -0x000002cf: 05 DW_LNS_set_column (16) -0x000002d1: 82 address += 8, line += 0 - 0x0000000000000765 76 16 1 0 0 - -0x000002d2: 05 DW_LNS_set_column (25) -0x000002d4: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000002d5: 82 address += 8, line += 0 - 0x000000000000077e 76 25 1 0 0 - -0x000002d6: 05 DW_LNS_set_column (33) -0x000002d8: 06 DW_LNS_negate_stmt -0x000002d9: 8f address += 9, line += -1 - 0x0000000000000787 75 33 1 0 0 is_stmt - -0x000002da: 05 DW_LNS_set_column (13) -0x000002dc: 06 DW_LNS_negate_stmt -0x000002dd: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000002de: d6 address += 14, line += 0 - 0x00000000000007a6 75 13 1 0 0 - -0x000002df: 2e address += 2, line += 0 - 0x00000000000007a8 75 13 1 0 0 - -0x000002e0: 05 DW_LNS_set_column (24) -0x000002e2: 06 DW_LNS_negate_stmt -0x000002e3: 76 address += 7, line += 2 - 0x00000000000007af 77 24 1 0 0 is_stmt - -0x000002e4: 05 DW_LNS_set_column (13) -0x000002e6: 06 DW_LNS_negate_stmt -0x000002e7: 82 address += 8, line += 0 - 0x00000000000007b7 77 13 1 0 0 - -0x000002e8: 05 DW_LNS_set_column (19) -0x000002ea: 82 address += 8, line += 0 - 0x00000000000007bf 77 19 1 0 0 - -0x000002eb: 05 DW_LNS_set_column (13) -0x000002ed: 82 address += 8, line += 0 - 0x00000000000007c7 77 13 1 0 0 - -0x000002ee: 05 DW_LNS_set_column (22) -0x000002f0: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000002f1: 82 address += 8, line += 0 - 0x00000000000007e0 77 22 1 0 0 - -0x000002f2: 05 DW_LNS_set_column (16) -0x000002f4: 06 DW_LNS_negate_stmt -0x000002f5: 92 address += 9, line += 2 - 0x00000000000007e9 79 16 1 0 0 is_stmt - -0x000002f6: 05 DW_LNS_set_column (22) -0x000002f8: 06 DW_LNS_negate_stmt -0x000002f9: 82 address += 8, line += 0 - 0x00000000000007f1 79 22 1 0 0 - -0x000002fa: 05 DW_LNS_set_column (16) -0x000002fc: 82 address += 8, line += 0 - 0x00000000000007f9 79 16 1 0 0 - -0x000002fd: 05 DW_LNS_set_column (14) -0x000002ff: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000300: 82 address += 8, line += 0 - 0x0000000000000812 79 14 1 0 0 - -0x00000301: 05 DW_LNS_set_column (25) -0x00000303: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000304: f2 address += 16, line += 0 - 0x0000000000000833 79 25 1 0 0 - -0x00000305: 05 DW_LNS_set_column (14) -0x00000307: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000308: 58 address += 5, line += 0 - 0x0000000000000849 79 14 1 0 0 - -0x00000309: 05 DW_LNS_set_column (13) -0x0000030b: 06 DW_LNS_negate_stmt -0x0000030c: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x0000030d: 83 address += 8, line += 1 - 0x0000000000000862 80 13 1 0 0 is_stmt - -0x0000030e: 06 DW_LNS_negate_stmt -0x0000030f: 03 DW_LNS_advance_line (0) -0x00000312: 2e address += 2, line += 0 - 0x0000000000000864 0 13 1 0 0 - -0x00000313: 05 DW_LNS_set_column (11) -0x00000315: 06 DW_LNS_negate_stmt -0x00000316: 03 DW_LNS_advance_line (81) -0x00000319: 20 address += 1, line += 0 - 0x0000000000000865 81 11 1 0 0 is_stmt - -0x0000031a: 05 DW_LNS_set_column (7) -0x0000031c: 03 DW_LNS_advance_line (65) -0x0000031e: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x0000031f: d6 address += 14, line += 0 - 0x0000000000000884 65 7 1 0 0 is_stmt - -0x00000320: 06 DW_LNS_negate_stmt -0x00000321: 03 DW_LNS_advance_line (0) -0x00000324: 2e address += 2, line += 0 - 0x0000000000000886 0 7 1 0 0 - -0x00000325: 05 DW_LNS_set_column (13) -0x00000327: 06 DW_LNS_negate_stmt -0x00000328: 03 DW_LNS_advance_line (80) -0x0000032b: 20 address += 1, line += 0 - 0x0000000000000887 80 13 1 0 0 is_stmt - -0x0000032c: 05 DW_LNS_set_column (4) -0x0000032e: 03 DW_LNS_advance_line (43) -0x00000330: 20 address += 1, line += 0 - 0x0000000000000888 43 4 1 0 0 is_stmt - -0x00000331: 06 DW_LNS_negate_stmt -0x00000332: 03 DW_LNS_advance_line (0) -0x00000334: 2e address += 2, line += 0 - 0x000000000000088a 0 4 1 0 0 - -0x00000335: 02 DW_LNS_advance_pc (2) -0x00000337: 00 DW_LNE_end_sequence - 0x000000000000088c 0 4 1 0 0 end_sequence - -0x0000033a: 00 DW_LNE_set_address (0x000000000000088e) -0x00000341: 03 DW_LNS_advance_line (152) -0x00000344: 01 DW_LNS_copy - 0x000000000000088e 152 0 1 0 0 is_stmt - - -0x00000345: 05 DW_LNS_set_column (12) -0x00000347: 0a DW_LNS_set_prologue_end -0x00000348: 02 DW_LNS_advance_pc (59) -0x0000034a: 13 address += 0, line += 1 - 0x00000000000008c9 153 12 1 0 0 is_stmt prologue_end - -0x0000034b: 05 DW_LNS_set_column (17) -0x0000034d: 06 DW_LNS_negate_stmt -0x0000034e: 74 address += 7, line += 0 - 0x00000000000008d0 153 17 1 0 0 - -0x0000034f: 05 DW_LNS_set_column (12) -0x00000351: e4 address += 15, line += 0 - 0x00000000000008df 153 12 1 0 0 - -0x00000352: 05 DW_LNS_set_column (28) -0x00000354: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000355: 3c address += 3, line += 0 - 0x00000000000008f3 153 28 1 0 0 - -0x00000356: 05 DW_LNS_set_column (23) -0x00000358: d6 address += 14, line += 0 - 0x0000000000000901 153 23 1 0 0 - -0x00000359: 05 DW_LNS_set_column (12) -0x0000035b: 9e address += 10, line += 0 - 0x000000000000090b 153 12 1 0 0 - -0x0000035c: 03 DW_LNS_advance_line (0) -0x0000035f: 66 address += 6, line += 0 - 0x0000000000000911 0 12 1 0 0 - -0x00000360: 03 DW_LNS_advance_line (153) -0x00000363: 58 address += 5, line += 0 - 0x0000000000000916 153 12 1 0 0 - -0x00000364: 03 DW_LNS_advance_line (0) -0x00000367: 4a address += 4, line += 0 - 0x000000000000091a 0 12 1 0 0 - -0x00000368: 03 DW_LNS_advance_line (153) -0x0000036b: 20 address += 1, line += 0 - 0x000000000000091b 153 12 1 0 0 - -0x0000036c: 05 DW_LNS_set_column (8) -0x0000036e: 82 address += 8, line += 0 - 0x0000000000000923 153 8 1 0 0 - -0x0000036f: 06 DW_LNS_negate_stmt -0x00000370: 76 address += 7, line += 2 - 0x000000000000092a 155 8 1 0 0 is_stmt - -0x00000371: 05 DW_LNS_set_column (10) -0x00000373: 06 DW_LNS_negate_stmt -0x00000374: 74 address += 7, line += 0 - 0x0000000000000931 155 10 1 0 0 - -0x00000375: 05 DW_LNS_set_column (8) -0x00000377: e4 address += 15, line += 0 - 0x0000000000000940 155 8 1 0 0 - -0x00000378: 05 DW_LNS_set_column (7) -0x0000037a: 06 DW_LNS_negate_stmt -0x0000037b: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x0000037c: 3d address += 3, line += 1 - 0x0000000000000954 156 7 1 0 0 is_stmt - -0x0000037d: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x0000037e: 9f address += 10, line += 1 - 0x000000000000096f 157 7 1 0 0 is_stmt - -0x0000037f: 06 DW_LNS_negate_stmt -0x00000380: 03 DW_LNS_advance_line (0) -0x00000383: 90 address += 9, line += 0 - 0x0000000000000978 0 7 1 0 0 - -0x00000384: 05 DW_LNS_set_column (38) -0x00000386: 06 DW_LNS_negate_stmt -0x00000387: 03 DW_LNS_advance_line (159) -0x0000038a: 20 address += 1, line += 0 - 0x0000000000000979 159 38 1 0 0 is_stmt - -0x0000038b: 05 DW_LNS_set_column (50) -0x0000038d: 06 DW_LNS_negate_stmt -0x0000038e: 74 address += 7, line += 0 - 0x0000000000000980 159 50 1 0 0 - -0x0000038f: 05 DW_LNS_set_column (41) -0x00000391: 74 address += 7, line += 0 - 0x0000000000000987 159 41 1 0 0 - -0x00000392: 05 DW_LNS_set_column (4) -0x00000394: 9e address += 10, line += 0 - 0x0000000000000991 159 4 1 0 0 - -0x00000395: 06 DW_LNS_negate_stmt -0x00000396: 02 DW_LNS_advance_pc (37) -0x00000398: 13 address += 0, line += 1 - 0x00000000000009b6 160 4 1 0 0 is_stmt - -0x00000399: 06 DW_LNS_negate_stmt -0x0000039a: 03 DW_LNS_advance_line (0) -0x0000039d: 74 address += 7, line += 0 - 0x00000000000009bd 0 4 1 0 0 - -0x0000039e: 05 DW_LNS_set_column (1) -0x000003a0: 06 DW_LNS_negate_stmt -0x000003a1: 03 DW_LNS_advance_line (161) -0x000003a4: 20 address += 1, line += 0 - 0x00000000000009be 161 1 1 0 0 is_stmt - -0x000003a5: 02 DW_LNS_advance_pc (30) -0x000003a7: 00 DW_LNE_end_sequence - 0x00000000000009dc 161 1 1 0 0 is_stmt end_sequence - -0x000003aa: 00 DW_LNE_set_address (0x00000000000009de) -0x000003b1: 03 DW_LNS_advance_line (88) -0x000003b4: 01 DW_LNS_copy - 0x00000000000009de 88 0 1 0 0 is_stmt - - -0x000003b5: 05 DW_LNS_set_column (8) -0x000003b7: 0a DW_LNS_set_prologue_end -0x000003b8: 02 DW_LNS_advance_pc (46) -0x000003ba: 14 address += 0, line += 2 - 0x0000000000000a0c 90 8 1 0 0 is_stmt prologue_end - -0x000003bb: 05 DW_LNS_set_column (9) -0x000003bd: 77 address += 7, line += 3 - 0x0000000000000a13 93 9 1 0 0 is_stmt - -0x000003be: 05 DW_LNS_set_column (11) -0x000003c0: 75 address += 7, line += 1 - 0x0000000000000a1a 94 11 1 0 0 is_stmt - -0x000003c1: 05 DW_LNS_set_column (16) -0x000003c3: 06 DW_LNS_negate_stmt -0x000003c4: 74 address += 7, line += 0 - 0x0000000000000a21 94 16 1 0 0 - -0x000003c5: 05 DW_LNS_set_column (20) -0x000003c7: ac address += 11, line += 0 - 0x0000000000000a2c 94 20 1 0 0 - -0x000003c8: 05 DW_LNS_set_column (22) -0x000003ca: 74 address += 7, line += 0 - 0x0000000000000a33 94 22 1 0 0 - -0x000003cb: 05 DW_LNS_set_column (18) -0x000003cd: ac address += 11, line += 0 - 0x0000000000000a3e 94 18 1 0 0 - -0x000003ce: 05 DW_LNS_set_column (4) -0x000003d0: e4 address += 15, line += 0 - 0x0000000000000a4d 94 4 1 0 0 - -0x000003d1: 03 DW_LNS_advance_line (0) -0x000003d4: f2 address += 16, line += 0 - 0x0000000000000a5d 0 4 1 0 0 - -0x000003d5: 05 DW_LNS_set_column (29) -0x000003d7: 06 DW_LNS_negate_stmt -0x000003d8: 03 DW_LNS_advance_line (95) -0x000003db: 4a address += 4, line += 0 - 0x0000000000000a61 95 29 1 0 0 is_stmt - -0x000003dc: 05 DW_LNS_set_column (13) -0x000003de: 06 DW_LNS_negate_stmt -0x000003df: 9e address += 10, line += 0 - 0x0000000000000a6b 95 13 1 0 0 - -0x000003e0: 05 DW_LNS_set_column (18) -0x000003e2: 06 DW_LNS_negate_stmt -0x000003e3: 75 address += 7, line += 1 - 0x0000000000000a72 96 18 1 0 0 is_stmt - -0x000003e4: 05 DW_LNS_set_column (7) -0x000003e6: 06 DW_LNS_negate_stmt -0x000003e7: 74 address += 7, line += 0 - 0x0000000000000a79 96 7 1 0 0 - -0x000003e8: 05 DW_LNS_set_column (16) -0x000003ea: 74 address += 7, line += 0 - 0x0000000000000a80 96 16 1 0 0 - -0x000003eb: 05 DW_LNS_set_column (18) -0x000003ed: 06 DW_LNS_negate_stmt -0x000003ee: 75 address += 7, line += 1 - 0x0000000000000a87 97 18 1 0 0 is_stmt - -0x000003ef: 05 DW_LNS_set_column (7) -0x000003f1: 06 DW_LNS_negate_stmt -0x000003f2: 74 address += 7, line += 0 - 0x0000000000000a8e 97 7 1 0 0 - -0x000003f3: 05 DW_LNS_set_column (16) -0x000003f5: 74 address += 7, line += 0 - 0x0000000000000a95 97 16 1 0 0 - -0x000003f6: 05 DW_LNS_set_column (21) -0x000003f8: 06 DW_LNS_negate_stmt -0x000003f9: 75 address += 7, line += 1 - 0x0000000000000a9c 98 21 1 0 0 is_stmt - -0x000003fa: 05 DW_LNS_set_column (7) -0x000003fc: 06 DW_LNS_negate_stmt -0x000003fd: 74 address += 7, line += 0 - 0x0000000000000aa3 98 7 1 0 0 - -0x000003fe: 05 DW_LNS_set_column (19) -0x00000400: 74 address += 7, line += 0 - 0x0000000000000aaa 98 19 1 0 0 - -0x00000401: 05 DW_LNS_set_column (14) -0x00000403: 06 DW_LNS_negate_stmt -0x00000404: 75 address += 7, line += 1 - 0x0000000000000ab1 99 14 1 0 0 is_stmt - -0x00000405: 05 DW_LNS_set_column (12) -0x00000407: 06 DW_LNS_negate_stmt -0x00000408: 74 address += 7, line += 0 - 0x0000000000000ab8 99 12 1 0 0 - -0x00000409: 05 DW_LNS_set_column (28) -0x0000040b: 06 DW_LNS_negate_stmt -0x0000040c: 6f address += 7, line += -5 - 0x0000000000000abf 94 28 1 0 0 is_stmt - -0x0000040d: 05 DW_LNS_set_column (4) -0x0000040f: 06 DW_LNS_negate_stmt -0x00000410: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000411: 82 address += 8, line += 0 - 0x0000000000000ad8 94 4 1 0 0 - -0x00000412: 2e address += 2, line += 0 - 0x0000000000000ada 94 4 1 0 0 - -0x00000413: 05 DW_LNS_set_column (25) -0x00000415: 06 DW_LNS_negate_stmt -0x00000416: 6e address += 6, line += 8 - 0x0000000000000ae0 102 25 1 0 0 is_stmt - -0x00000417: 05 DW_LNS_set_column (27) -0x00000419: 06 DW_LNS_negate_stmt -0x0000041a: 74 address += 7, line += 0 - 0x0000000000000ae7 102 27 1 0 0 - -0x0000041b: 05 DW_LNS_set_column (18) -0x0000041d: ac address += 11, line += 0 - 0x0000000000000af2 102 18 1 0 0 - -0x0000041e: 05 DW_LNS_set_column (10) -0x00000420: 9e address += 10, line += 0 - 0x0000000000000afc 102 10 1 0 0 - -0x00000421: 05 DW_LNS_set_column (25) -0x00000423: 06 DW_LNS_negate_stmt -0x00000424: 75 address += 7, line += 1 - 0x0000000000000b03 103 25 1 0 0 is_stmt - -0x00000425: 05 DW_LNS_set_column (27) -0x00000427: 06 DW_LNS_negate_stmt -0x00000428: 74 address += 7, line += 0 - 0x0000000000000b0a 103 27 1 0 0 - -0x00000429: 05 DW_LNS_set_column (18) -0x0000042b: ac address += 11, line += 0 - 0x0000000000000b15 103 18 1 0 0 - -0x0000042c: 05 DW_LNS_set_column (10) -0x0000042e: 9e address += 10, line += 0 - 0x0000000000000b1f 103 10 1 0 0 - -0x0000042f: 05 DW_LNS_set_column (11) -0x00000431: 06 DW_LNS_negate_stmt -0x00000432: 76 address += 7, line += 2 - 0x0000000000000b26 105 11 1 0 0 is_stmt - -0x00000433: 05 DW_LNS_set_column (16) -0x00000435: 06 DW_LNS_negate_stmt -0x00000436: 74 address += 7, line += 0 - 0x0000000000000b2d 105 16 1 0 0 - -0x00000437: 05 DW_LNS_set_column (20) -0x00000439: ac address += 11, line += 0 - 0x0000000000000b38 105 20 1 0 0 - -0x0000043a: 05 DW_LNS_set_column (18) -0x0000043c: 74 address += 7, line += 0 - 0x0000000000000b3f 105 18 1 0 0 - -0x0000043d: 05 DW_LNS_set_column (4) -0x0000043f: e4 address += 15, line += 0 - 0x0000000000000b4e 105 4 1 0 0 - -0x00000440: 05 DW_LNS_set_column (18) -0x00000442: 06 DW_LNS_negate_stmt -0x00000443: f3 address += 16, line += 1 - 0x0000000000000b5e 106 18 1 0 0 is_stmt - -0x00000444: 05 DW_LNS_set_column (7) -0x00000446: 06 DW_LNS_negate_stmt -0x00000447: 74 address += 7, line += 0 - 0x0000000000000b65 106 7 1 0 0 - -0x00000448: 05 DW_LNS_set_column (13) -0x0000044a: 74 address += 7, line += 0 - 0x0000000000000b6c 106 13 1 0 0 - -0x0000044b: 05 DW_LNS_set_column (7) -0x0000044d: 74 address += 7, line += 0 - 0x0000000000000b73 106 7 1 0 0 - -0x0000044e: 05 DW_LNS_set_column (16) -0x00000450: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000451: 20 address += 1, line += 0 - 0x0000000000000b85 106 16 1 0 0 - -0x00000452: 05 DW_LNS_set_column (24) -0x00000454: 06 DW_LNS_negate_stmt -0x00000455: 73 address += 7, line += -1 - 0x0000000000000b8c 105 24 1 0 0 is_stmt - -0x00000456: 05 DW_LNS_set_column (4) -0x00000458: 06 DW_LNS_negate_stmt -0x00000459: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x0000045a: 82 address += 8, line += 0 - 0x0000000000000ba5 105 4 1 0 0 - -0x0000045b: 2e address += 2, line += 0 - 0x0000000000000ba7 105 4 1 0 0 - -0x0000045c: 05 DW_LNS_set_column (8) -0x0000045e: 06 DW_LNS_negate_stmt -0x0000045f: 31 address += 2, line += 3 - 0x0000000000000ba9 108 8 1 0 0 is_stmt - -0x00000460: 05 DW_LNS_set_column (6) -0x00000462: 06 DW_LNS_negate_stmt -0x00000463: 74 address += 7, line += 0 - 0x0000000000000bb0 108 6 1 0 0 - -0x00000464: 05 DW_LNS_set_column (11) -0x00000466: 06 DW_LNS_negate_stmt -0x00000467: 76 address += 7, line += 2 - 0x0000000000000bb7 110 11 1 0 0 is_stmt - -0x00000468: 06 DW_LNS_negate_stmt -0x00000469: ac address += 11, line += 0 - 0x0000000000000bc2 110 11 1 0 0 - -0x0000046a: 03 DW_LNS_advance_line (0) -0x0000046d: 90 address += 9, line += 0 - 0x0000000000000bcb 0 11 1 0 0 - -0x0000046e: 05 DW_LNS_set_column (17) -0x00000470: 06 DW_LNS_negate_stmt -0x00000471: 03 DW_LNS_advance_line (111) -0x00000474: 4a address += 4, line += 0 - 0x0000000000000bcf 111 17 1 0 0 is_stmt - -0x00000475: 05 DW_LNS_set_column (22) -0x00000477: 06 DW_LNS_negate_stmt -0x00000478: 74 address += 7, line += 0 - 0x0000000000000bd6 111 22 1 0 0 - -0x00000479: 05 DW_LNS_set_column (26) -0x0000047b: ac address += 11, line += 0 - 0x0000000000000be1 111 26 1 0 0 - -0x0000047c: 05 DW_LNS_set_column (24) -0x0000047e: 74 address += 7, line += 0 - 0x0000000000000be8 111 24 1 0 0 - -0x0000047f: 05 DW_LNS_set_column (10) -0x00000481: e4 address += 15, line += 0 - 0x0000000000000bf7 111 10 1 0 0 - -0x00000482: 05 DW_LNS_set_column (26) -0x00000484: 06 DW_LNS_negate_stmt -0x00000485: f3 address += 16, line += 1 - 0x0000000000000c07 112 26 1 0 0 is_stmt - -0x00000486: 05 DW_LNS_set_column (32) -0x00000488: 06 DW_LNS_negate_stmt -0x00000489: 74 address += 7, line += 0 - 0x0000000000000c0e 112 32 1 0 0 - -0x0000048a: 05 DW_LNS_set_column (26) -0x0000048c: 74 address += 7, line += 0 - 0x0000000000000c15 112 26 1 0 0 - -0x0000048d: 05 DW_LNS_set_column (35) -0x0000048f: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000490: 82 address += 8, line += 0 - 0x0000000000000c2e 112 35 1 0 0 - -0x00000491: 05 DW_LNS_set_column (13) -0x00000493: ac address += 11, line += 0 - 0x0000000000000c39 112 13 1 0 0 - -0x00000494: 05 DW_LNS_set_column (30) -0x00000496: 06 DW_LNS_negate_stmt -0x00000497: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000498: 8f address += 9, line += -1 - 0x0000000000000c53 111 30 1 0 0 is_stmt - -0x00000499: 05 DW_LNS_set_column (10) -0x0000049b: 06 DW_LNS_negate_stmt -0x0000049c: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x0000049d: 82 address += 8, line += 0 - 0x0000000000000c6c 111 10 1 0 0 - -0x0000049e: 2e address += 2, line += 0 - 0x0000000000000c6e 111 10 1 0 0 - -0x0000049f: 06 DW_LNS_negate_stmt -0x000004a0: 30 address += 2, line += 2 - 0x0000000000000c70 113 10 1 0 0 is_stmt - -0x000004a1: 05 DW_LNS_set_column (17) -0x000004a3: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000004a4: 67 address += 6, line += 1 - 0x0000000000000c87 114 17 1 0 0 is_stmt - -0x000004a5: 05 DW_LNS_set_column (7) -0x000004a7: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000004a8: 83 address += 8, line += 1 - 0x0000000000000ca0 115 7 1 0 0 is_stmt - -0x000004a9: 06 DW_LNS_negate_stmt -0x000004aa: 03 DW_LNS_advance_line (0) -0x000004ad: 2e address += 2, line += 0 - 0x0000000000000ca2 0 7 1 0 0 - -0x000004ae: 05 DW_LNS_set_column (10) -0x000004b0: 06 DW_LNS_negate_stmt -0x000004b1: 03 DW_LNS_advance_line (116) -0x000004b4: 20 address += 1, line += 0 - 0x0000000000000ca3 116 10 1 0 0 is_stmt - -0x000004b5: 06 DW_LNS_negate_stmt -0x000004b6: 03 DW_LNS_advance_line (0) -0x000004b9: 2e address += 2, line += 0 - 0x0000000000000ca5 0 10 1 0 0 - -0x000004ba: 05 DW_LNS_set_column (14) -0x000004bc: 06 DW_LNS_negate_stmt -0x000004bd: 03 DW_LNS_advance_line (118) -0x000004c0: 90 address += 9, line += 0 - 0x0000000000000cae 118 14 1 0 0 is_stmt - -0x000004c1: 05 DW_LNS_set_column (16) -0x000004c3: 06 DW_LNS_negate_stmt -0x000004c4: 74 address += 7, line += 0 - 0x0000000000000cb5 118 16 1 0 0 - -0x000004c5: 05 DW_LNS_set_column (7) -0x000004c7: e4 address += 15, line += 0 - 0x0000000000000cc4 118 7 1 0 0 - -0x000004c8: 05 DW_LNS_set_column (25) -0x000004ca: 06 DW_LNS_negate_stmt -0x000004cb: f3 address += 16, line += 1 - 0x0000000000000cd4 119 25 1 0 0 is_stmt - -0x000004cc: 05 DW_LNS_set_column (10) -0x000004ce: 06 DW_LNS_negate_stmt -0x000004cf: 74 address += 7, line += 0 - 0x0000000000000cdb 119 10 1 0 0 - -0x000004d0: 05 DW_LNS_set_column (16) -0x000004d2: 74 address += 7, line += 0 - 0x0000000000000ce2 119 16 1 0 0 - -0x000004d3: 05 DW_LNS_set_column (18) -0x000004d5: 74 address += 7, line += 0 - 0x0000000000000ce9 119 18 1 0 0 - -0x000004d6: 05 DW_LNS_set_column (10) -0x000004d8: ac address += 11, line += 0 - 0x0000000000000cf4 119 10 1 0 0 - -0x000004d9: 05 DW_LNS_set_column (23) -0x000004db: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000004dc: 20 address += 1, line += 0 - 0x0000000000000d06 119 23 1 0 0 - -0x000004dd: 05 DW_LNS_set_column (22) -0x000004df: 06 DW_LNS_negate_stmt -0x000004e0: 73 address += 7, line += -1 - 0x0000000000000d0d 118 22 1 0 0 is_stmt - -0x000004e1: 05 DW_LNS_set_column (7) -0x000004e3: 06 DW_LNS_negate_stmt -0x000004e4: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000004e5: 82 address += 8, line += 0 - 0x0000000000000d26 118 7 1 0 0 - -0x000004e6: 2e address += 2, line += 0 - 0x0000000000000d28 118 7 1 0 0 - -0x000004e7: 05 DW_LNS_set_column (14) -0x000004e9: 06 DW_LNS_negate_stmt -0x000004ea: 32 address += 2, line += 4 - 0x0000000000000d2a 122 14 1 0 0 is_stmt - -0x000004eb: 05 DW_LNS_set_column (19) -0x000004ed: 06 DW_LNS_negate_stmt -0x000004ee: 90 address += 9, line += 0 - 0x0000000000000d33 122 19 1 0 0 - -0x000004ef: 05 DW_LNS_set_column (16) -0x000004f1: 74 address += 7, line += 0 - 0x0000000000000d3a 122 16 1 0 0 - -0x000004f2: 05 DW_LNS_set_column (14) -0x000004f4: e4 address += 15, line += 0 - 0x0000000000000d49 122 14 1 0 0 - -0x000004f5: 05 DW_LNS_set_column (13) -0x000004f7: 06 DW_LNS_negate_stmt -0x000004f8: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000004f9: 21 address += 1, line += 1 - 0x0000000000000d5b 123 13 1 0 0 is_stmt - -0x000004fa: 06 DW_LNS_negate_stmt -0x000004fb: 03 DW_LNS_advance_line (0) -0x000004fe: 2e address += 2, line += 0 - 0x0000000000000d5d 0 13 1 0 0 - -0x000004ff: 05 DW_LNS_set_column (22) -0x00000501: 06 DW_LNS_negate_stmt -0x00000502: 03 DW_LNS_advance_line (125) -0x00000505: 58 address += 5, line += 0 - 0x0000000000000d62 125 22 1 0 0 is_stmt - -0x00000506: 05 DW_LNS_set_column (17) -0x00000508: 06 DW_LNS_negate_stmt -0x00000509: d6 address += 14, line += 0 - 0x0000000000000d70 125 17 1 0 0 - -0x0000050a: 05 DW_LNS_set_column (20) -0x0000050c: 06 DW_LNS_negate_stmt -0x0000050d: 75 address += 7, line += 1 - 0x0000000000000d77 126 20 1 0 0 is_stmt - -0x0000050e: 05 DW_LNS_set_column (25) -0x00000510: 06 DW_LNS_negate_stmt -0x00000511: 74 address += 7, line += 0 - 0x0000000000000d7e 126 25 1 0 0 - -0x00000512: 05 DW_LNS_set_column (29) -0x00000514: ac address += 11, line += 0 - 0x0000000000000d89 126 29 1 0 0 - -0x00000515: 05 DW_LNS_set_column (27) -0x00000517: 74 address += 7, line += 0 - 0x0000000000000d90 126 27 1 0 0 - -0x00000518: 05 DW_LNS_set_column (13) -0x0000051a: e4 address += 15, line += 0 - 0x0000000000000d9f 126 13 1 0 0 - -0x0000051b: 05 DW_LNS_set_column (27) -0x0000051d: 06 DW_LNS_negate_stmt -0x0000051e: f3 address += 16, line += 1 - 0x0000000000000daf 127 27 1 0 0 is_stmt - -0x0000051f: 05 DW_LNS_set_column (33) -0x00000521: 06 DW_LNS_negate_stmt -0x00000522: 74 address += 7, line += 0 - 0x0000000000000db6 127 33 1 0 0 - -0x00000523: 05 DW_LNS_set_column (35) -0x00000525: 74 address += 7, line += 0 - 0x0000000000000dbd 127 35 1 0 0 - -0x00000526: 05 DW_LNS_set_column (27) -0x00000528: ac address += 11, line += 0 - 0x0000000000000dc8 127 27 1 0 0 - -0x00000529: 05 DW_LNS_set_column (16) -0x0000052b: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x0000052c: 82 address += 8, line += 0 - 0x0000000000000de1 127 16 1 0 0 - -0x0000052d: 05 DW_LNS_set_column (22) -0x0000052f: 74 address += 7, line += 0 - 0x0000000000000de8 127 22 1 0 0 - -0x00000530: 05 DW_LNS_set_column (16) -0x00000532: 74 address += 7, line += 0 - 0x0000000000000def 127 16 1 0 0 - -0x00000533: 05 DW_LNS_set_column (25) -0x00000535: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000536: 20 address += 1, line += 0 - 0x0000000000000e01 127 25 1 0 0 - -0x00000537: 05 DW_LNS_set_column (33) -0x00000539: 06 DW_LNS_negate_stmt -0x0000053a: 73 address += 7, line += -1 - 0x0000000000000e08 126 33 1 0 0 is_stmt - -0x0000053b: 05 DW_LNS_set_column (13) -0x0000053d: 06 DW_LNS_negate_stmt -0x0000053e: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x0000053f: ba address += 12, line += 0 - 0x0000000000000e25 126 13 1 0 0 - -0x00000540: 2e address += 2, line += 0 - 0x0000000000000e27 126 13 1 0 0 - -0x00000541: 05 DW_LNS_set_column (24) -0x00000543: 06 DW_LNS_negate_stmt -0x00000544: 76 address += 7, line += 2 - 0x0000000000000e2e 128 24 1 0 0 is_stmt - -0x00000545: 05 DW_LNS_set_column (13) -0x00000547: 06 DW_LNS_negate_stmt -0x00000548: 82 address += 8, line += 0 - 0x0000000000000e36 128 13 1 0 0 - -0x00000549: 05 DW_LNS_set_column (19) -0x0000054b: 82 address += 8, line += 0 - 0x0000000000000e3e 128 19 1 0 0 - -0x0000054c: 05 DW_LNS_set_column (13) -0x0000054e: 82 address += 8, line += 0 - 0x0000000000000e46 128 13 1 0 0 - -0x0000054f: 05 DW_LNS_set_column (22) -0x00000551: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000552: 82 address += 8, line += 0 - 0x0000000000000e5f 128 22 1 0 0 - -0x00000553: 05 DW_LNS_set_column (16) -0x00000555: 06 DW_LNS_negate_stmt -0x00000556: 92 address += 9, line += 2 - 0x0000000000000e68 130 16 1 0 0 is_stmt - -0x00000557: 05 DW_LNS_set_column (22) -0x00000559: 06 DW_LNS_negate_stmt -0x0000055a: 82 address += 8, line += 0 - 0x0000000000000e70 130 22 1 0 0 - -0x0000055b: 05 DW_LNS_set_column (16) -0x0000055d: 82 address += 8, line += 0 - 0x0000000000000e78 130 16 1 0 0 - -0x0000055e: 05 DW_LNS_set_column (14) -0x00000560: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000561: 82 address += 8, line += 0 - 0x0000000000000e91 130 14 1 0 0 - -0x00000562: 05 DW_LNS_set_column (25) -0x00000564: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000565: f2 address += 16, line += 0 - 0x0000000000000eb2 130 25 1 0 0 - -0x00000566: 05 DW_LNS_set_column (14) -0x00000568: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000569: 58 address += 5, line += 0 - 0x0000000000000ec8 130 14 1 0 0 - -0x0000056a: 05 DW_LNS_set_column (13) -0x0000056c: 06 DW_LNS_negate_stmt -0x0000056d: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x0000056e: 83 address += 8, line += 1 - 0x0000000000000ee1 131 13 1 0 0 is_stmt - -0x0000056f: 06 DW_LNS_negate_stmt -0x00000570: 03 DW_LNS_advance_line (0) -0x00000573: 2e address += 2, line += 0 - 0x0000000000000ee3 0 13 1 0 0 - -0x00000574: 05 DW_LNS_set_column (11) -0x00000576: 06 DW_LNS_negate_stmt -0x00000577: 03 DW_LNS_advance_line (133) -0x0000057a: 20 address += 1, line += 0 - 0x0000000000000ee4 133 11 1 0 0 is_stmt - -0x0000057b: 05 DW_LNS_set_column (7) -0x0000057d: 03 DW_LNS_advance_line (121) -0x0000057f: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000580: d6 address += 14, line += 0 - 0x0000000000000f03 121 7 1 0 0 is_stmt - -0x00000581: 06 DW_LNS_negate_stmt -0x00000582: 03 DW_LNS_advance_line (0) -0x00000585: 2e address += 2, line += 0 - 0x0000000000000f05 0 7 1 0 0 - -0x00000586: 05 DW_LNS_set_column (13) -0x00000588: 06 DW_LNS_negate_stmt -0x00000589: 03 DW_LNS_advance_line (131) -0x0000058c: 20 address += 1, line += 0 - 0x0000000000000f06 131 13 1 0 0 is_stmt - -0x0000058d: 05 DW_LNS_set_column (4) -0x0000058f: 03 DW_LNS_advance_line (109) -0x00000591: 20 address += 1, line += 0 - 0x0000000000000f07 109 4 1 0 0 is_stmt - -0x00000592: 05 DW_LNS_set_column (13) -0x00000594: 03 DW_LNS_advance_line (123) -0x00000596: 2e address += 2, line += 0 - 0x0000000000000f09 123 13 1 0 0 is_stmt - -0x00000597: 05 DW_LNS_set_column (9) -0x00000599: 03 DW_LNS_advance_line (138) -0x0000059b: 74 address += 7, line += 0 - 0x0000000000000f10 138 9 1 0 0 is_stmt - -0x0000059c: 05 DW_LNS_set_column (4) -0x0000059e: 06 DW_LNS_negate_stmt -0x0000059f: 82 address += 8, line += 0 - 0x0000000000000f18 138 4 1 0 0 - -0x000005a0: 05 DW_LNS_set_column (9) -0x000005a2: 06 DW_LNS_negate_stmt -0x000005a3: 91 address += 9, line += 1 - 0x0000000000000f21 139 9 1 0 0 is_stmt - -0x000005a4: 05 DW_LNS_set_column (4) -0x000005a6: 06 DW_LNS_negate_stmt -0x000005a7: 82 address += 8, line += 0 - 0x0000000000000f29 139 4 1 0 0 - -0x000005a8: 05 DW_LNS_set_column (13) -0x000005aa: 06 DW_LNS_negate_stmt -0x000005ab: 91 address += 9, line += 1 - 0x0000000000000f32 140 13 1 0 0 is_stmt - -0x000005ac: 06 DW_LNS_negate_stmt -0x000005ad: 03 DW_LNS_advance_line (0) -0x000005b0: 82 address += 8, line += 0 - 0x0000000000000f3a 0 13 1 0 0 - -0x000005b1: 05 DW_LNS_set_column (11) -0x000005b3: 06 DW_LNS_negate_stmt -0x000005b4: 03 DW_LNS_advance_line (141) -0x000005b7: 90 address += 9, line += 0 - 0x0000000000000f43 141 11 1 0 0 is_stmt - -0x000005b8: 05 DW_LNS_set_column (16) -0x000005ba: 06 DW_LNS_negate_stmt -0x000005bb: 82 address += 8, line += 0 - 0x0000000000000f4b 141 16 1 0 0 - -0x000005bc: 05 DW_LNS_set_column (4) -0x000005be: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000005bf: 58 address += 5, line += 0 - 0x0000000000000f61 141 4 1 0 0 - -0x000005c0: 05 DW_LNS_set_column (36) -0x000005c2: 06 DW_LNS_negate_stmt -0x000005c3: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000005c4: 4b address += 4, line += 1 - 0x0000000000000f76 142 36 1 0 0 is_stmt - -0x000005c5: 05 DW_LNS_set_column (20) -0x000005c7: 06 DW_LNS_negate_stmt -0x000005c8: 82 address += 8, line += 0 - 0x0000000000000f7e 142 20 1 0 0 - -0x000005c9: 05 DW_LNS_set_column (13) -0x000005cb: ba address += 12, line += 0 - 0x0000000000000f8a 142 13 1 0 0 - -0x000005cc: 05 DW_LNS_set_column (11) -0x000005ce: 06 DW_LNS_negate_stmt -0x000005cf: 83 address += 8, line += 1 - 0x0000000000000f92 143 11 1 0 0 is_stmt - -0x000005d0: 05 DW_LNS_set_column (22) -0x000005d2: 06 DW_LNS_negate_stmt -0x000005d3: 82 address += 8, line += 0 - 0x0000000000000f9a 143 22 1 0 0 - -0x000005d4: 05 DW_LNS_set_column (20) -0x000005d6: 82 address += 8, line += 0 - 0x0000000000000fa2 143 20 1 0 0 - -0x000005d7: 05 DW_LNS_set_column (11) -0x000005d9: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000005da: 58 address += 5, line += 0 - 0x0000000000000fb8 143 11 1 0 0 - -0x000005db: 05 DW_LNS_set_column (21) -0x000005dd: 06 DW_LNS_negate_stmt -0x000005de: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000005df: 67 address += 6, line += 1 - 0x0000000000000fcf 144 21 1 0 0 is_stmt - -0x000005e0: 05 DW_LNS_set_column (19) -0x000005e2: 06 DW_LNS_negate_stmt -0x000005e3: 82 address += 8, line += 0 - 0x0000000000000fd7 144 19 1 0 0 - -0x000005e4: 03 DW_LNS_advance_line (0) -0x000005e7: 82 address += 8, line += 0 - 0x0000000000000fdf 0 19 1 0 0 - -0x000005e8: 05 DW_LNS_set_column (15) -0x000005ea: 06 DW_LNS_negate_stmt -0x000005eb: 03 DW_LNS_advance_line (145) -0x000005ee: 20 address += 1, line += 0 - 0x0000000000000fe0 145 15 1 0 0 is_stmt - -0x000005ef: 05 DW_LNS_set_column (13) -0x000005f1: 06 DW_LNS_negate_stmt -0x000005f2: 82 address += 8, line += 0 - 0x0000000000000fe8 145 13 1 0 0 - -0x000005f3: 05 DW_LNS_set_column (14) -0x000005f5: 06 DW_LNS_negate_stmt -0x000005f6: 83 address += 8, line += 1 - 0x0000000000000ff0 146 14 1 0 0 is_stmt - -0x000005f7: 05 DW_LNS_set_column (20) -0x000005f9: 06 DW_LNS_negate_stmt -0x000005fa: 82 address += 8, line += 0 - 0x0000000000000ff8 146 20 1 0 0 - -0x000005fb: 05 DW_LNS_set_column (12) -0x000005fd: 90 address += 9, line += 0 - 0x0000000000001001 146 12 1 0 0 - -0x000005fe: 06 DW_LNS_negate_stmt -0x000005ff: 83 address += 8, line += 1 - 0x0000000000001009 147 12 1 0 0 is_stmt - -0x00000600: 05 DW_LNS_set_column (7) -0x00000602: 06 DW_LNS_negate_stmt -0x00000603: 82 address += 8, line += 0 - 0x0000000000001011 147 7 1 0 0 - -0x00000604: 05 DW_LNS_set_column (4) -0x00000606: 06 DW_LNS_negate_stmt -0x00000607: 03 DW_LNS_advance_line (141) -0x00000609: 90 address += 9, line += 0 - 0x000000000000101a 141 4 1 0 0 is_stmt - -0x0000060a: 05 DW_LNS_set_column (11) -0x0000060c: 52 address += 4, line += 8 - 0x000000000000101e 149 11 1 0 0 is_stmt - -0x0000060d: 05 DW_LNS_set_column (4) -0x0000060f: 06 DW_LNS_negate_stmt -0x00000610: 82 address += 8, line += 0 - 0x0000000000001026 149 4 1 0 0 - -0x00000611: 02 DW_LNS_advance_pc (28) -0x00000613: 00 DW_LNE_end_sequence - 0x0000000000001042 149 4 1 0 0 end_sequence - - -.debug_str contents: -0x00000000: "clang version 11.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 2d7a8cf90478cd845ffb39763b0e95b7715322d2)" -0x00000095: "tests/fannkuch.cpp" -0x000000a8: "/home/alon/Dev/emscripten" -0x000000c2: "i" -0x000000c4: "int" -0x000000c8: "n" -0x000000ca: "next" -0x000000cf: "worker_args" -0x000000db: "std" -0x000000df: "decltype(nullptr)" -0x000000f1: "nullptr_t" -0x000000fb: "_Z15fannkuch_workerPv" -0x00000111: "fannkuch_worker" -0x00000121: "main" -0x00000126: "_ZL8fannkuchi" -0x00000134: "fannkuch" -0x0000013d: "_arg" -0x00000142: "args" -0x00000147: "perm1" -0x0000014d: "count" -0x00000153: "perm" -0x00000158: "maxflips" -0x00000161: "flips" -0x00000167: "r" -0x00000169: "j" -0x0000016b: "k" -0x0000016d: "tmp" -0x00000171: "p0" -0x00000174: "argc" -0x00000179: "argv" -0x0000017e: "char" -0x00000183: "targs" -0x00000189: "showmax" -0x00000191: "cleanup" - -.debug_ranges contents: -00000000 00000006 0000088c -00000000 0000088e 000009dc -00000000 000009de 00001042 -00000000 -DWARF debug info -================ - -Contains section .debug_info (640 bytes) -Contains section .debug_ranges (32 bytes) -Contains section .debug_abbrev (222 bytes) -Contains section .debug_line (3965 bytes) -Contains section .debug_str (409 bytes) - -.debug_abbrev contents: -Abbrev table for offset: 0x00000000 -[1] DW_TAG_compile_unit DW_CHILDREN_yes - DW_AT_producer DW_FORM_strp - DW_AT_language DW_FORM_data2 - DW_AT_name DW_FORM_strp - DW_AT_stmt_list DW_FORM_sec_offset - DW_AT_comp_dir DW_FORM_strp - DW_AT_low_pc DW_FORM_addr - DW_AT_ranges DW_FORM_sec_offset - -[2] DW_TAG_pointer_type DW_CHILDREN_no - DW_AT_type DW_FORM_ref4 - -[3] DW_TAG_structure_type DW_CHILDREN_yes - DW_AT_calling_convention DW_FORM_data1 - DW_AT_name DW_FORM_strp - DW_AT_byte_size DW_FORM_data1 - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - -[4] DW_TAG_member DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_type DW_FORM_ref4 - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_data_member_location DW_FORM_data1 - -[5] DW_TAG_base_type DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_encoding DW_FORM_data1 - DW_AT_byte_size DW_FORM_data1 - -[6] DW_TAG_namespace DW_CHILDREN_yes - DW_AT_name DW_FORM_strp - -[7] DW_TAG_typedef DW_CHILDREN_no - DW_AT_type DW_FORM_ref4 - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - -[8] DW_TAG_unspecified_type DW_CHILDREN_no - DW_AT_name DW_FORM_strp - -[9] DW_TAG_imported_declaration DW_CHILDREN_no - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_import DW_FORM_ref4 - -[10] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_linkage_name DW_FORM_strp - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - -[11] DW_TAG_formal_parameter DW_CHILDREN_no - DW_AT_location DW_FORM_exprloc - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[12] DW_TAG_variable DW_CHILDREN_no - DW_AT_location DW_FORM_exprloc - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[13] DW_TAG_lexical_block DW_CHILDREN_yes - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - -[14] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - -[15] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_linkage_name DW_FORM_strp - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[16] DW_TAG_label DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_low_pc DW_FORM_addr - -[17] DW_TAG_pointer_type DW_CHILDREN_no - - -.debug_info contents: -0x00000000: Compile Unit: length = 0x0000027c version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x00000280) - -0x0000000b: DW_TAG_compile_unit [1] * - DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 11.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 2d7a8cf90478cd845ffb39763b0e95b7715322d2)") - DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000095] = "tests/fannkuch.cpp") - DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) - DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x000000a8] = "/home/alon/Dev/emscripten") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) - DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 - [0x00000006, 0x00000872) - [0x00000874, 0x000009a0) - [0x000009a2, 0x00000fde)) - -0x00000026: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x002b => {0x0000002b} "worker_args") - -0x0000002b: DW_TAG_structure_type [3] * - DW_AT_calling_convention [DW_FORM_data1] (DW_CC_pass_by_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000cf] = "worker_args") - DW_AT_byte_size [DW_FORM_data1] (0x0c) - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (20) - -0x00000034: DW_TAG_member [4] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c2] = "i") - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (21) - DW_AT_data_member_location [DW_FORM_data1] (0x00) - -0x00000040: DW_TAG_member [4] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c8] = "n") - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (21) - DW_AT_data_member_location [DW_FORM_data1] (0x04) - -0x0000004c: DW_TAG_member [4] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ca] = "next") - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (22) - DW_AT_data_member_location [DW_FORM_data1] (0x08) - -0x00000058: NULL - -0x00000059: DW_TAG_base_type [5] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c4] = "int") - DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) - DW_AT_byte_size [DW_FORM_data1] (0x04) - -0x00000060: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000065: DW_TAG_namespace [6] * - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000db] = "std") - -0x0000006a: DW_TAG_typedef [7] - DW_AT_type [DW_FORM_ref4] (cu + 0x0076 => {0x00000076} "decltype(nullptr)") - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000f1] = "nullptr_t") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/system/include/libcxx/__nullptr") - DW_AT_decl_line [DW_FORM_data1] (57) - -0x00000075: NULL - -0x00000076: DW_TAG_unspecified_type [8] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000df] = "decltype(nullptr)") - -0x0000007b: DW_TAG_imported_declaration [9] - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/system/include/libcxx/stddef.h") - DW_AT_decl_line [DW_FORM_data1] (52) - DW_AT_import [DW_FORM_ref4] (cu + 0x006a => {0x0000006a}) - -0x00000082: DW_TAG_subprogram [10] * - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000006) - DW_AT_high_pc [DW_FORM_data4] (0x0000086c) - DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x000000fb] = "_Z15fannkuch_workerPv") - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000111] = "fannkuch_worker") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (26) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x00000099: DW_TAG_formal_parameter [11] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x3c) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000013d] = "_arg") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (26) - DW_AT_type [DW_FORM_ref4] (cu + 0x026d => {0x0000026d} "*") - -0x000000a7: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x38) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000142] = "args") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (28) - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - -0x000000b5: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x34) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000147] = "perm1") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (29) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x000000c3: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x30) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014d] = "count") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (29) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x000000d1: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x2c) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000153] = "perm") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (29) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x000000df: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x28) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000158] = "maxflips") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000000ed: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x24) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000161] = "flips") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000000fb: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x20) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c2] = "i") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000109: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x1c) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c8] = "n") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000117: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x18) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000167] = "r") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000125: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x14) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000169] = "j") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000133: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x10) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000016b] = "k") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000141: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0xc) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000016d] = "tmp") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000014f: DW_TAG_lexical_block [13] * - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000698) - DW_AT_high_pc [DW_FORM_data4] (0x00000137) - -0x00000158: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x8) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000171] = "p0") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (74) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000166: NULL - -0x00000167: NULL - -0x00000168: DW_TAG_subprogram [14] * - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000874) - DW_AT_high_pc [DW_FORM_data4] (0x0000012c) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000121] = "main") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (152) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x0000017b: DW_TAG_formal_parameter [11] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x18) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000174] = "argc") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (152) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000189: DW_TAG_formal_parameter [11] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x14) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000179] = "argv") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (152) - DW_AT_type [DW_FORM_ref4] (cu + 0x026e => {0x0000026e} "char**") - -0x00000197: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x10) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c8] = "n") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (153) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000001a5: NULL - -0x000001a6: DW_TAG_subprogram [15] * - DW_AT_low_pc [DW_FORM_addr] (0x00000000000009a2) - DW_AT_high_pc [DW_FORM_data4] (0x0000063c) - DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x00000126] = "_ZL8fannkuchi") - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000134] = "fannkuch") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (87) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000001bd: DW_TAG_formal_parameter [11] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x2c) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c8] = "n") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (87) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000001cb: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x28) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000142] = "args") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (89) - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - -0x000001d9: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x24) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000183] = "targs") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (89) - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - -0x000001e7: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x20) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000189] = "showmax") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (90) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000001f5: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x1c) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000147] = "perm1") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x00000203: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x18) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014d] = "count") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x00000211: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x14) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c2] = "i") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000021f: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x10) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000167] = "r") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000022d: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0xc) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000158] = "maxflips") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000023b: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x8) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000161] = "flips") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000249: DW_TAG_label [16] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000191] = "cleanup") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (137) - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000ebe) - -0x00000254: DW_TAG_lexical_block [13] * - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000d0c) - DW_AT_high_pc [DW_FORM_data4] (0x00000108) - -0x0000025d: DW_TAG_variable [12] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x4) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000171] = "p0") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (125) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000026b: NULL - -0x0000026c: NULL - -0x0000026d: DW_TAG_pointer_type [17] - -0x0000026e: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x0273 => {0x00000273} "char*") - -0x00000273: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x0278 => {0x00000278} "char") - -0x00000278: DW_TAG_base_type [5] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000017e] = "char") - DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char) - DW_AT_byte_size [DW_FORM_data1] (0x01) - -0x0000027f: NULL - -.debug_line contents: -debug_line[0x00000000] -Line table prologue: - total_length: 0x00000f79 - version: 4 - prologue_length: 0x00000059 - min_inst_length: 1 -max_ops_per_inst: 1 - default_is_stmt: 1 - line_base: -5 - line_range: 14 - opcode_base: 13 -standard_opcode_lengths[DW_LNS_copy] = 0 -standard_opcode_lengths[DW_LNS_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_advance_line] = 1 -standard_opcode_lengths[DW_LNS_set_file] = 1 -standard_opcode_lengths[DW_LNS_set_column] = 1 -standard_opcode_lengths[DW_LNS_negate_stmt] = 0 -standard_opcode_lengths[DW_LNS_set_basic_block] = 0 -standard_opcode_lengths[DW_LNS_const_add_pc] = 0 -standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 -standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 -standard_opcode_lengths[DW_LNS_set_isa] = 1 -include_directories[ 1] = "tests" -include_directories[ 2] = "system/include/libcxx" -file_names[ 1]: - name: "fannkuch.cpp" - dir_index: 1 - mod_time: 0x00000000 - length: 0x00000000 -file_names[ 2]: - name: "__nullptr" - dir_index: 2 - mod_time: 0x00000000 - length: 0x00000000 -file_names[ 3]: - name: "stddef.h" - dir_index: 2 - mod_time: 0x00000000 - length: 0x00000000 -0x00000063: 00 DW_LNE_set_address (0x0000000000000006) -0x0000006a: 03 DW_LNS_advance_line (27) -0x0000006c: 01 DW_LNS_copy - 0x0000000000000006 27 0 1 0 0 is_stmt - - -0x0000006d: 00 DW_LNE_set_address (0x0000000000000029) -0x00000074: 03 DW_LNS_advance_line (28) -0x00000076: 05 DW_LNS_set_column (45) -0x00000078: 0a DW_LNS_set_prologue_end -0x00000079: 01 DW_LNS_copy - 0x0000000000000029 28 45 1 0 0 is_stmt prologue_end - - -0x0000007a: 00 DW_LNE_set_address (0x0000000000000030) -0x00000081: 05 DW_LNS_set_column (24) -0x00000083: 06 DW_LNS_negate_stmt -0x00000084: 01 DW_LNS_copy - 0x0000000000000030 28 24 1 0 0 - - -0x00000085: 00 DW_LNE_set_address (0x0000000000000037) -0x0000008c: 03 DW_LNS_advance_line (32) -0x0000008e: 05 DW_LNS_set_column (13) -0x00000090: 06 DW_LNS_negate_stmt -0x00000091: 01 DW_LNS_copy - 0x0000000000000037 32 13 1 0 0 is_stmt - - -0x00000092: 00 DW_LNE_set_address (0x000000000000003e) -0x00000099: 03 DW_LNS_advance_line (33) -0x0000009b: 05 DW_LNS_set_column (8) -0x0000009d: 01 DW_LNS_copy - 0x000000000000003e 33 8 1 0 0 is_stmt - - -0x0000009e: 00 DW_LNE_set_address (0x0000000000000045) -0x000000a5: 05 DW_LNS_set_column (14) -0x000000a7: 06 DW_LNS_negate_stmt -0x000000a8: 01 DW_LNS_copy - 0x0000000000000045 33 14 1 0 0 - - -0x000000a9: 00 DW_LNE_set_address (0x000000000000004c) -0x000000b0: 05 DW_LNS_set_column (6) -0x000000b2: 01 DW_LNS_copy - 0x000000000000004c 33 6 1 0 0 - - -0x000000b3: 00 DW_LNE_set_address (0x0000000000000053) -0x000000ba: 03 DW_LNS_advance_line (34) -0x000000bc: 05 DW_LNS_set_column (25) -0x000000be: 06 DW_LNS_negate_stmt -0x000000bf: 01 DW_LNS_copy - 0x0000000000000053 34 25 1 0 0 is_stmt - - -0x000000c0: 00 DW_LNE_set_address (0x000000000000005a) -0x000000c7: 05 DW_LNS_set_column (27) -0x000000c9: 06 DW_LNS_negate_stmt -0x000000ca: 01 DW_LNS_copy - 0x000000000000005a 34 27 1 0 0 - - -0x000000cb: 00 DW_LNE_set_address (0x0000000000000065) -0x000000d2: 05 DW_LNS_set_column (18) -0x000000d4: 01 DW_LNS_copy - 0x0000000000000065 34 18 1 0 0 - - -0x000000d5: 00 DW_LNE_set_address (0x000000000000006b) -0x000000dc: 05 DW_LNS_set_column (10) -0x000000de: 01 DW_LNS_copy - 0x000000000000006b 34 10 1 0 0 - - -0x000000df: 00 DW_LNE_set_address (0x0000000000000072) -0x000000e6: 03 DW_LNS_advance_line (35) -0x000000e8: 05 DW_LNS_set_column (24) -0x000000ea: 06 DW_LNS_negate_stmt -0x000000eb: 01 DW_LNS_copy - 0x0000000000000072 35 24 1 0 0 is_stmt - - -0x000000ec: 00 DW_LNE_set_address (0x0000000000000079) -0x000000f3: 05 DW_LNS_set_column (26) -0x000000f5: 06 DW_LNS_negate_stmt -0x000000f6: 01 DW_LNS_copy - 0x0000000000000079 35 26 1 0 0 - - -0x000000f7: 00 DW_LNE_set_address (0x0000000000000084) -0x000000fe: 05 DW_LNS_set_column (17) -0x00000100: 01 DW_LNS_copy - 0x0000000000000084 35 17 1 0 0 - - -0x00000101: 00 DW_LNE_set_address (0x000000000000008a) -0x00000108: 05 DW_LNS_set_column (9) -0x0000010a: 01 DW_LNS_copy - 0x000000000000008a 35 9 1 0 0 - - -0x0000010b: 00 DW_LNE_set_address (0x0000000000000091) -0x00000112: 03 DW_LNS_advance_line (36) -0x00000114: 05 DW_LNS_set_column (25) -0x00000116: 06 DW_LNS_negate_stmt -0x00000117: 01 DW_LNS_copy - 0x0000000000000091 36 25 1 0 0 is_stmt - - -0x00000118: 00 DW_LNE_set_address (0x0000000000000098) -0x0000011f: 05 DW_LNS_set_column (27) -0x00000121: 06 DW_LNS_negate_stmt -0x00000122: 01 DW_LNS_copy - 0x0000000000000098 36 27 1 0 0 - - -0x00000123: 00 DW_LNE_set_address (0x00000000000000a3) -0x0000012a: 05 DW_LNS_set_column (18) -0x0000012c: 01 DW_LNS_copy - 0x00000000000000a3 36 18 1 0 0 - - -0x0000012d: 00 DW_LNE_set_address (0x00000000000000a9) -0x00000134: 05 DW_LNS_set_column (10) -0x00000136: 01 DW_LNS_copy - 0x00000000000000a9 36 10 1 0 0 - - -0x00000137: 00 DW_LNE_set_address (0x00000000000000b0) -0x0000013e: 03 DW_LNS_advance_line (37) -0x00000140: 05 DW_LNS_set_column (11) -0x00000142: 06 DW_LNS_negate_stmt -0x00000143: 01 DW_LNS_copy - 0x00000000000000b0 37 11 1 0 0 is_stmt - - -0x00000144: 00 DW_LNE_set_address (0x00000000000000b7) -0x0000014b: 05 DW_LNS_set_column (16) -0x0000014d: 06 DW_LNS_negate_stmt -0x0000014e: 01 DW_LNS_copy - 0x00000000000000b7 37 16 1 0 0 - - -0x0000014f: 00 DW_LNE_set_address (0x00000000000000c2) -0x00000156: 05 DW_LNS_set_column (20) -0x00000158: 01 DW_LNS_copy - 0x00000000000000c2 37 20 1 0 0 - - -0x00000159: 00 DW_LNE_set_address (0x00000000000000c9) -0x00000160: 05 DW_LNS_set_column (18) -0x00000162: 01 DW_LNS_copy - 0x00000000000000c9 37 18 1 0 0 - - -0x00000163: 00 DW_LNE_set_address (0x00000000000000d8) -0x0000016a: 05 DW_LNS_set_column (4) -0x0000016c: 01 DW_LNS_copy - 0x00000000000000d8 37 4 1 0 0 - - -0x0000016d: 00 DW_LNE_set_address (0x00000000000000e8) -0x00000174: 03 DW_LNS_advance_line (38) -0x00000176: 05 DW_LNS_set_column (18) -0x00000178: 06 DW_LNS_negate_stmt -0x00000179: 01 DW_LNS_copy - 0x00000000000000e8 38 18 1 0 0 is_stmt - - -0x0000017a: 00 DW_LNE_set_address (0x00000000000000ef) -0x00000181: 05 DW_LNS_set_column (7) -0x00000183: 06 DW_LNS_negate_stmt -0x00000184: 01 DW_LNS_copy - 0x00000000000000ef 38 7 1 0 0 - - -0x00000185: 00 DW_LNE_set_address (0x00000000000000f6) -0x0000018c: 05 DW_LNS_set_column (13) -0x0000018e: 01 DW_LNS_copy - 0x00000000000000f6 38 13 1 0 0 - - -0x0000018f: 00 DW_LNE_set_address (0x00000000000000fd) -0x00000196: 05 DW_LNS_set_column (7) -0x00000198: 01 DW_LNS_copy - 0x00000000000000fd 38 7 1 0 0 - - -0x00000199: 00 DW_LNE_set_address (0x000000000000010f) -0x000001a0: 05 DW_LNS_set_column (16) -0x000001a2: 01 DW_LNS_copy - 0x000000000000010f 38 16 1 0 0 - - -0x000001a3: 00 DW_LNE_set_address (0x0000000000000116) -0x000001aa: 03 DW_LNS_advance_line (37) -0x000001ac: 05 DW_LNS_set_column (24) -0x000001ae: 06 DW_LNS_negate_stmt -0x000001af: 01 DW_LNS_copy - 0x0000000000000116 37 24 1 0 0 is_stmt - - -0x000001b0: 00 DW_LNE_set_address (0x000000000000012f) -0x000001b7: 05 DW_LNS_set_column (4) -0x000001b9: 06 DW_LNS_negate_stmt -0x000001ba: 01 DW_LNS_copy - 0x000000000000012f 37 4 1 0 0 - - -0x000001bb: 00 DW_LNE_set_address (0x0000000000000132) -0x000001c2: 01 DW_LNS_copy - 0x0000000000000132 37 4 1 0 0 - - -0x000001c3: 00 DW_LNE_set_address (0x0000000000000135) -0x000001ca: 03 DW_LNS_advance_line (39) -0x000001cc: 05 DW_LNS_set_column (21) -0x000001ce: 06 DW_LNS_negate_stmt -0x000001cf: 01 DW_LNS_copy - 0x0000000000000135 39 21 1 0 0 is_stmt - - -0x000001d0: 00 DW_LNE_set_address (0x000000000000013c) -0x000001d7: 05 DW_LNS_set_column (23) -0x000001d9: 06 DW_LNS_negate_stmt -0x000001da: 01 DW_LNS_copy - 0x000000000000013c 39 23 1 0 0 - - -0x000001db: 00 DW_LNE_set_address (0x0000000000000147) -0x000001e2: 05 DW_LNS_set_column (4) -0x000001e4: 01 DW_LNS_copy - 0x0000000000000147 39 4 1 0 0 - - -0x000001e5: 00 DW_LNE_set_address (0x000000000000014e) -0x000001ec: 05 DW_LNS_set_column (10) -0x000001ee: 01 DW_LNS_copy - 0x000000000000014e 39 10 1 0 0 - - -0x000001ef: 00 DW_LNE_set_address (0x0000000000000155) -0x000001f6: 05 DW_LNS_set_column (16) -0x000001f8: 01 DW_LNS_copy - 0x0000000000000155 39 16 1 0 0 - - -0x000001f9: 00 DW_LNE_set_address (0x000000000000015c) -0x00000200: 05 DW_LNS_set_column (4) -0x00000202: 01 DW_LNS_copy - 0x000000000000015c 39 4 1 0 0 - - -0x00000203: 00 DW_LNE_set_address (0x000000000000016e) -0x0000020a: 05 DW_LNS_set_column (19) -0x0000020c: 01 DW_LNS_copy - 0x000000000000016e 39 19 1 0 0 - - -0x0000020d: 00 DW_LNE_set_address (0x0000000000000175) -0x00000214: 03 DW_LNS_advance_line (40) -0x00000216: 06 DW_LNS_negate_stmt -0x00000217: 01 DW_LNS_copy - 0x0000000000000175 40 19 1 0 0 is_stmt - - -0x00000218: 00 DW_LNE_set_address (0x000000000000017c) -0x0000021f: 05 DW_LNS_set_column (25) -0x00000221: 06 DW_LNS_negate_stmt -0x00000222: 01 DW_LNS_copy - 0x000000000000017c 40 25 1 0 0 - - -0x00000223: 00 DW_LNE_set_address (0x0000000000000183) -0x0000022a: 05 DW_LNS_set_column (4) -0x0000022c: 01 DW_LNS_copy - 0x0000000000000183 40 4 1 0 0 - - -0x0000022d: 00 DW_LNE_set_address (0x000000000000018a) -0x00000234: 05 DW_LNS_set_column (10) -0x00000236: 01 DW_LNS_copy - 0x000000000000018a 40 10 1 0 0 - - -0x00000237: 00 DW_LNE_set_address (0x0000000000000191) -0x0000023e: 05 DW_LNS_set_column (12) -0x00000240: 01 DW_LNS_copy - 0x0000000000000191 40 12 1 0 0 - - -0x00000241: 00 DW_LNE_set_address (0x000000000000019c) -0x00000248: 05 DW_LNS_set_column (4) -0x0000024a: 01 DW_LNS_copy - 0x000000000000019c 40 4 1 0 0 - - -0x0000024b: 00 DW_LNE_set_address (0x00000000000001ae) -0x00000252: 05 DW_LNS_set_column (17) -0x00000254: 01 DW_LNS_copy - 0x00000000000001ae 40 17 1 0 0 - - -0x00000255: 00 DW_LNE_set_address (0x00000000000001b5) -0x0000025c: 03 DW_LNS_advance_line (41) -0x0000025e: 05 DW_LNS_set_column (8) -0x00000260: 06 DW_LNS_negate_stmt -0x00000261: 01 DW_LNS_copy - 0x00000000000001b5 41 8 1 0 0 is_stmt - - -0x00000262: 00 DW_LNE_set_address (0x00000000000001bc) -0x00000269: 05 DW_LNS_set_column (6) -0x0000026b: 06 DW_LNS_negate_stmt -0x0000026c: 01 DW_LNS_copy - 0x00000000000001bc 41 6 1 0 0 - - -0x0000026d: 00 DW_LNE_set_address (0x00000000000001cd) -0x00000274: 03 DW_LNS_advance_line (44) -0x00000276: 05 DW_LNS_set_column (14) -0x00000278: 06 DW_LNS_negate_stmt -0x00000279: 01 DW_LNS_copy - 0x00000000000001cd 44 14 1 0 0 is_stmt - - -0x0000027a: 00 DW_LNE_set_address (0x00000000000001d4) -0x00000281: 05 DW_LNS_set_column (16) -0x00000283: 06 DW_LNS_negate_stmt -0x00000284: 01 DW_LNS_copy - 0x00000000000001d4 44 16 1 0 0 - - -0x00000285: 00 DW_LNE_set_address (0x00000000000001e3) -0x0000028c: 05 DW_LNS_set_column (7) -0x0000028e: 01 DW_LNS_copy - 0x00000000000001e3 44 7 1 0 0 - - -0x0000028f: 00 DW_LNE_set_address (0x00000000000001f3) -0x00000296: 03 DW_LNS_advance_line (45) -0x00000298: 05 DW_LNS_set_column (25) -0x0000029a: 06 DW_LNS_negate_stmt -0x0000029b: 01 DW_LNS_copy - 0x00000000000001f3 45 25 1 0 0 is_stmt - - -0x0000029c: 00 DW_LNE_set_address (0x00000000000001fa) -0x000002a3: 05 DW_LNS_set_column (10) -0x000002a5: 06 DW_LNS_negate_stmt -0x000002a6: 01 DW_LNS_copy - 0x00000000000001fa 45 10 1 0 0 - - -0x000002a7: 00 DW_LNE_set_address (0x0000000000000201) -0x000002ae: 05 DW_LNS_set_column (16) -0x000002b0: 01 DW_LNS_copy - 0x0000000000000201 45 16 1 0 0 - - -0x000002b1: 00 DW_LNE_set_address (0x0000000000000208) -0x000002b8: 05 DW_LNS_set_column (18) -0x000002ba: 01 DW_LNS_copy - 0x0000000000000208 45 18 1 0 0 - - -0x000002bb: 00 DW_LNE_set_address (0x0000000000000213) -0x000002c2: 05 DW_LNS_set_column (10) -0x000002c4: 01 DW_LNS_copy - 0x0000000000000213 45 10 1 0 0 - - -0x000002c5: 00 DW_LNE_set_address (0x0000000000000225) -0x000002cc: 05 DW_LNS_set_column (23) -0x000002ce: 01 DW_LNS_copy - 0x0000000000000225 45 23 1 0 0 - - -0x000002cf: 00 DW_LNE_set_address (0x000000000000022c) -0x000002d6: 03 DW_LNS_advance_line (44) -0x000002d8: 05 DW_LNS_set_column (22) -0x000002da: 06 DW_LNS_negate_stmt -0x000002db: 01 DW_LNS_copy - 0x000000000000022c 44 22 1 0 0 is_stmt - - -0x000002dc: 00 DW_LNE_set_address (0x0000000000000245) -0x000002e3: 05 DW_LNS_set_column (7) -0x000002e5: 06 DW_LNS_negate_stmt -0x000002e6: 01 DW_LNS_copy - 0x0000000000000245 44 7 1 0 0 - - -0x000002e7: 00 DW_LNE_set_address (0x0000000000000248) -0x000002ee: 01 DW_LNS_copy - 0x0000000000000248 44 7 1 0 0 - - -0x000002ef: 00 DW_LNE_set_address (0x000000000000024b) -0x000002f6: 03 DW_LNS_advance_line (46) -0x000002f8: 05 DW_LNS_set_column (11) -0x000002fa: 06 DW_LNS_negate_stmt -0x000002fb: 01 DW_LNS_copy - 0x000000000000024b 46 11 1 0 0 is_stmt - - -0x000002fc: 00 DW_LNE_set_address (0x0000000000000259) -0x00000303: 05 DW_LNS_set_column (25) -0x00000305: 06 DW_LNS_negate_stmt -0x00000306: 01 DW_LNS_copy - 0x0000000000000259 46 25 1 0 0 - - -0x00000307: 00 DW_LNE_set_address (0x0000000000000260) -0x0000030e: 05 DW_LNS_set_column (28) -0x00000310: 01 DW_LNS_copy - 0x0000000000000260 46 28 1 0 0 - - -0x00000311: 00 DW_LNE_set_address (0x0000000000000267) -0x00000318: 05 DW_LNS_set_column (34) -0x0000031a: 01 DW_LNS_copy - 0x0000000000000267 46 34 1 0 0 - - -0x0000031b: 00 DW_LNE_set_address (0x000000000000026e) -0x00000322: 05 DW_LNS_set_column (36) -0x00000324: 01 DW_LNS_copy - 0x000000000000026e 46 36 1 0 0 - - -0x00000325: 00 DW_LNE_set_address (0x0000000000000279) -0x0000032c: 05 DW_LNS_set_column (28) -0x0000032e: 01 DW_LNS_copy - 0x0000000000000279 46 28 1 0 0 - - -0x0000032f: 00 DW_LNE_set_address (0x0000000000000292) -0x00000336: 05 DW_LNS_set_column (44) -0x00000338: 01 DW_LNS_copy - 0x0000000000000292 46 44 1 0 0 - - -0x00000339: 00 DW_LNE_set_address (0x0000000000000299) -0x00000340: 05 DW_LNS_set_column (46) -0x00000342: 01 DW_LNS_copy - 0x0000000000000299 46 46 1 0 0 - - -0x00000343: 00 DW_LNE_set_address (0x00000000000002a4) -0x0000034a: 05 DW_LNS_set_column (41) -0x0000034c: 01 DW_LNS_copy - 0x00000000000002a4 46 41 1 0 0 - - -0x0000034d: 00 DW_LNE_set_address (0x00000000000002b3) -0x00000354: 05 DW_LNS_set_column (11) -0x00000356: 01 DW_LNS_copy - 0x00000000000002b3 46 11 1 0 0 - - -0x00000357: 00 DW_LNE_set_address (0x00000000000002c7) -0x0000035e: 03 DW_LNS_advance_line (47) -0x00000360: 05 DW_LNS_set_column (17) -0x00000362: 06 DW_LNS_negate_stmt -0x00000363: 01 DW_LNS_copy - 0x00000000000002c7 47 17 1 0 0 is_stmt - - -0x00000364: 00 DW_LNE_set_address (0x00000000000002ce) -0x0000036b: 05 DW_LNS_set_column (22) -0x0000036d: 06 DW_LNS_negate_stmt -0x0000036e: 01 DW_LNS_copy - 0x00000000000002ce 47 22 1 0 0 - - -0x0000036f: 00 DW_LNE_set_address (0x00000000000002d9) -0x00000376: 05 DW_LNS_set_column (26) -0x00000378: 01 DW_LNS_copy - 0x00000000000002d9 47 26 1 0 0 - - -0x00000379: 00 DW_LNE_set_address (0x00000000000002e0) -0x00000380: 05 DW_LNS_set_column (24) -0x00000382: 01 DW_LNS_copy - 0x00000000000002e0 47 24 1 0 0 - - -0x00000383: 00 DW_LNE_set_address (0x00000000000002ef) -0x0000038a: 05 DW_LNS_set_column (10) -0x0000038c: 01 DW_LNS_copy - 0x00000000000002ef 47 10 1 0 0 - - -0x0000038d: 00 DW_LNE_set_address (0x00000000000002ff) -0x00000394: 03 DW_LNS_advance_line (48) -0x00000396: 05 DW_LNS_set_column (23) -0x00000398: 06 DW_LNS_negate_stmt -0x00000399: 01 DW_LNS_copy - 0x00000000000002ff 48 23 1 0 0 is_stmt - - -0x0000039a: 00 DW_LNE_set_address (0x0000000000000306) -0x000003a1: 05 DW_LNS_set_column (29) -0x000003a3: 06 DW_LNS_negate_stmt -0x000003a4: 01 DW_LNS_copy - 0x0000000000000306 48 29 1 0 0 - - -0x000003a5: 00 DW_LNE_set_address (0x000000000000030d) -0x000003ac: 05 DW_LNS_set_column (23) -0x000003ae: 01 DW_LNS_copy - 0x000000000000030d 48 23 1 0 0 - - -0x000003af: 00 DW_LNE_set_address (0x0000000000000326) -0x000003b6: 05 DW_LNS_set_column (13) -0x000003b8: 01 DW_LNS_copy - 0x0000000000000326 48 13 1 0 0 - - -0x000003b9: 00 DW_LNE_set_address (0x000000000000032d) -0x000003c0: 05 DW_LNS_set_column (18) -0x000003c2: 01 DW_LNS_copy - 0x000000000000032d 48 18 1 0 0 - - -0x000003c3: 00 DW_LNE_set_address (0x0000000000000334) -0x000003ca: 05 DW_LNS_set_column (13) -0x000003cc: 01 DW_LNS_copy - 0x0000000000000334 48 13 1 0 0 - - -0x000003cd: 00 DW_LNE_set_address (0x0000000000000346) -0x000003d4: 05 DW_LNS_set_column (21) -0x000003d6: 01 DW_LNS_copy - 0x0000000000000346 48 21 1 0 0 - - -0x000003d7: 00 DW_LNE_set_address (0x000000000000034d) -0x000003de: 03 DW_LNS_advance_line (47) -0x000003e0: 05 DW_LNS_set_column (30) -0x000003e2: 06 DW_LNS_negate_stmt -0x000003e3: 01 DW_LNS_copy - 0x000000000000034d 47 30 1 0 0 is_stmt - - -0x000003e4: 00 DW_LNE_set_address (0x0000000000000366) -0x000003eb: 05 DW_LNS_set_column (10) -0x000003ed: 06 DW_LNS_negate_stmt -0x000003ee: 01 DW_LNS_copy - 0x0000000000000366 47 10 1 0 0 - - -0x000003ef: 00 DW_LNE_set_address (0x0000000000000369) -0x000003f6: 01 DW_LNS_copy - 0x0000000000000369 47 10 1 0 0 - - -0x000003f7: 00 DW_LNE_set_address (0x0000000000000370) -0x000003fe: 03 DW_LNS_advance_line (49) -0x00000400: 05 DW_LNS_set_column (16) -0x00000402: 06 DW_LNS_negate_stmt -0x00000403: 01 DW_LNS_copy - 0x0000000000000370 49 16 1 0 0 is_stmt - - -0x00000404: 00 DW_LNE_set_address (0x0000000000000377) -0x0000040b: 03 DW_LNS_advance_line (50) -0x0000040d: 05 DW_LNS_set_column (14) -0x0000040f: 01 DW_LNS_copy - 0x0000000000000377 50 14 1 0 0 is_stmt - - -0x00000410: 00 DW_LNE_set_address (0x0000000000000385) -0x00000417: 05 DW_LNS_set_column (12) -0x00000419: 06 DW_LNS_negate_stmt -0x0000041a: 01 DW_LNS_copy - 0x0000000000000385 50 12 1 0 0 - - -0x0000041b: 00 DW_LNE_set_address (0x0000000000000392) -0x00000422: 03 DW_LNS_advance_line (52) -0x00000424: 05 DW_LNS_set_column (20) -0x00000426: 06 DW_LNS_negate_stmt -0x00000427: 01 DW_LNS_copy - 0x0000000000000392 52 20 1 0 0 is_stmt - - -0x00000428: 00 DW_LNE_set_address (0x0000000000000399) -0x0000042f: 05 DW_LNS_set_column (29) -0x00000431: 06 DW_LNS_negate_stmt -0x00000432: 01 DW_LNS_copy - 0x0000000000000399 52 29 1 0 0 - - -0x00000433: 00 DW_LNE_set_address (0x00000000000003a0) -0x0000043a: 05 DW_LNS_set_column (31) -0x0000043c: 01 DW_LNS_copy - 0x00000000000003a0 52 31 1 0 0 - - -0x0000043d: 00 DW_LNE_set_address (0x00000000000003ab) -0x00000444: 05 DW_LNS_set_column (27) -0x00000446: 01 DW_LNS_copy - 0x00000000000003ab 52 27 1 0 0 - - -0x00000447: 00 DW_LNE_set_address (0x00000000000003b2) -0x0000044e: 05 DW_LNS_set_column (36) -0x00000450: 01 DW_LNS_copy - 0x00000000000003b2 52 36 1 0 0 - - -0x00000451: 00 DW_LNE_set_address (0x00000000000003bd) -0x00000458: 05 DW_LNS_set_column (40) -0x0000045a: 01 DW_LNS_copy - 0x00000000000003bd 52 40 1 0 0 - - -0x0000045b: 00 DW_LNE_set_address (0x00000000000003c4) -0x00000462: 05 DW_LNS_set_column (38) -0x00000464: 01 DW_LNS_copy - 0x00000000000003c4 52 38 1 0 0 - - -0x00000465: 00 DW_LNE_set_address (0x00000000000003d3) -0x0000046c: 05 DW_LNS_set_column (13) -0x0000046e: 01 DW_LNS_copy - 0x00000000000003d3 52 13 1 0 0 - - -0x0000046f: 00 DW_LNE_set_address (0x00000000000003e3) -0x00000476: 03 DW_LNS_advance_line (53) -0x00000478: 05 DW_LNS_set_column (22) -0x0000047a: 06 DW_LNS_negate_stmt -0x0000047b: 01 DW_LNS_copy - 0x00000000000003e3 53 22 1 0 0 is_stmt - - -0x0000047c: 00 DW_LNE_set_address (0x00000000000003ea) -0x00000483: 05 DW_LNS_set_column (27) -0x00000485: 06 DW_LNS_negate_stmt -0x00000486: 01 DW_LNS_copy - 0x00000000000003ea 53 27 1 0 0 - - -0x00000487: 00 DW_LNE_set_address (0x00000000000003f2) -0x0000048e: 05 DW_LNS_set_column (22) -0x00000490: 01 DW_LNS_copy - 0x00000000000003f2 53 22 1 0 0 - - -0x00000491: 00 DW_LNE_set_address (0x0000000000000413) -0x00000498: 05 DW_LNS_set_column (20) -0x0000049a: 01 DW_LNS_copy - 0x0000000000000413 53 20 1 0 0 - - -0x0000049b: 00 DW_LNE_set_address (0x000000000000041b) -0x000004a2: 03 DW_LNS_advance_line (54) -0x000004a4: 05 DW_LNS_set_column (26) -0x000004a6: 06 DW_LNS_negate_stmt -0x000004a7: 01 DW_LNS_copy - 0x000000000000041b 54 26 1 0 0 is_stmt - - -0x000004a8: 00 DW_LNE_set_address (0x0000000000000423) -0x000004af: 05 DW_LNS_set_column (31) -0x000004b1: 06 DW_LNS_negate_stmt -0x000004b2: 01 DW_LNS_copy - 0x0000000000000423 54 31 1 0 0 - - -0x000004b3: 00 DW_LNE_set_address (0x000000000000042b) -0x000004ba: 05 DW_LNS_set_column (26) -0x000004bc: 01 DW_LNS_copy - 0x000000000000042b 54 26 1 0 0 - - -0x000004bd: 00 DW_LNE_set_address (0x000000000000044d) -0x000004c4: 05 DW_LNS_set_column (16) -0x000004c6: 01 DW_LNS_copy - 0x000000000000044d 54 16 1 0 0 - - -0x000004c7: 00 DW_LNE_set_address (0x0000000000000455) -0x000004ce: 05 DW_LNS_set_column (21) -0x000004d0: 01 DW_LNS_copy - 0x0000000000000455 54 21 1 0 0 - - -0x000004d1: 00 DW_LNE_set_address (0x000000000000045d) -0x000004d8: 05 DW_LNS_set_column (16) -0x000004da: 01 DW_LNS_copy - 0x000000000000045d 54 16 1 0 0 - - -0x000004db: 00 DW_LNE_set_address (0x0000000000000476) -0x000004e2: 05 DW_LNS_set_column (24) -0x000004e4: 01 DW_LNS_copy - 0x0000000000000476 54 24 1 0 0 - - -0x000004e5: 00 DW_LNE_set_address (0x000000000000047f) -0x000004ec: 03 DW_LNS_advance_line (55) -0x000004ee: 05 DW_LNS_set_column (26) -0x000004f0: 06 DW_LNS_negate_stmt -0x000004f1: 01 DW_LNS_copy - 0x000000000000047f 55 26 1 0 0 is_stmt - - -0x000004f2: 00 DW_LNE_set_address (0x0000000000000487) -0x000004f9: 05 DW_LNS_set_column (16) -0x000004fb: 06 DW_LNS_negate_stmt -0x000004fc: 01 DW_LNS_copy - 0x0000000000000487 55 16 1 0 0 - - -0x000004fd: 00 DW_LNE_set_address (0x000000000000048f) -0x00000504: 05 DW_LNS_set_column (21) -0x00000506: 01 DW_LNS_copy - 0x000000000000048f 55 21 1 0 0 - - -0x00000507: 00 DW_LNE_set_address (0x0000000000000497) -0x0000050e: 05 DW_LNS_set_column (16) -0x00000510: 01 DW_LNS_copy - 0x0000000000000497 55 16 1 0 0 - - -0x00000511: 00 DW_LNE_set_address (0x00000000000004b0) -0x00000518: 05 DW_LNS_set_column (24) -0x0000051a: 01 DW_LNS_copy - 0x00000000000004b0 55 24 1 0 0 - - -0x0000051b: 00 DW_LNE_set_address (0x00000000000004b9) -0x00000522: 03 DW_LNS_advance_line (52) -0x00000524: 05 DW_LNS_set_column (44) -0x00000526: 06 DW_LNS_negate_stmt -0x00000527: 01 DW_LNS_copy - 0x00000000000004b9 52 44 1 0 0 is_stmt - - -0x00000528: 00 DW_LNE_set_address (0x00000000000004d8) -0x0000052f: 05 DW_LNS_set_column (49) -0x00000531: 06 DW_LNS_negate_stmt -0x00000532: 01 DW_LNS_copy - 0x00000000000004d8 52 49 1 0 0 - - -0x00000533: 00 DW_LNE_set_address (0x00000000000004f7) -0x0000053a: 05 DW_LNS_set_column (13) -0x0000053c: 01 DW_LNS_copy - 0x00000000000004f7 52 13 1 0 0 - - -0x0000053d: 00 DW_LNE_set_address (0x00000000000004fa) -0x00000544: 01 DW_LNS_copy - 0x00000000000004fa 52 13 1 0 0 - - -0x00000545: 00 DW_LNE_set_address (0x00000000000004fd) -0x0000054c: 03 DW_LNS_advance_line (57) -0x0000054e: 05 DW_LNS_set_column (18) -0x00000550: 06 DW_LNS_negate_stmt -0x00000551: 01 DW_LNS_copy - 0x00000000000004fd 57 18 1 0 0 is_stmt - - -0x00000552: 00 DW_LNE_set_address (0x000000000000051c) -0x00000559: 03 DW_LNS_advance_line (58) -0x0000055b: 05 DW_LNS_set_column (19) -0x0000055d: 01 DW_LNS_copy - 0x000000000000051c 58 19 1 0 0 is_stmt - - -0x0000055e: 00 DW_LNE_set_address (0x0000000000000524) -0x00000565: 05 DW_LNS_set_column (24) -0x00000567: 06 DW_LNS_negate_stmt -0x00000568: 01 DW_LNS_copy - 0x0000000000000524 58 24 1 0 0 - - -0x00000569: 00 DW_LNE_set_address (0x000000000000052c) -0x00000570: 05 DW_LNS_set_column (19) -0x00000572: 01 DW_LNS_copy - 0x000000000000052c 58 19 1 0 0 - - -0x00000573: 00 DW_LNE_set_address (0x000000000000054e) -0x0000057a: 05 DW_LNS_set_column (17) -0x0000057c: 01 DW_LNS_copy - 0x000000000000054e 58 17 1 0 0 - - -0x0000057d: 00 DW_LNE_set_address (0x0000000000000556) -0x00000584: 03 DW_LNS_advance_line (59) -0x00000586: 05 DW_LNS_set_column (23) -0x00000588: 06 DW_LNS_negate_stmt -0x00000589: 01 DW_LNS_copy - 0x0000000000000556 59 23 1 0 0 is_stmt - - -0x0000058a: 00 DW_LNE_set_address (0x000000000000055e) -0x00000591: 05 DW_LNS_set_column (13) -0x00000593: 06 DW_LNS_negate_stmt -0x00000594: 01 DW_LNS_copy - 0x000000000000055e 59 13 1 0 0 - - -0x00000595: 00 DW_LNE_set_address (0x0000000000000566) -0x0000059c: 05 DW_LNS_set_column (18) -0x0000059e: 01 DW_LNS_copy - 0x0000000000000566 59 18 1 0 0 - - -0x0000059f: 00 DW_LNE_set_address (0x000000000000056e) -0x000005a6: 05 DW_LNS_set_column (13) -0x000005a8: 01 DW_LNS_copy - 0x000000000000056e 59 13 1 0 0 - - -0x000005a9: 00 DW_LNE_set_address (0x0000000000000587) -0x000005b0: 05 DW_LNS_set_column (21) -0x000005b2: 01 DW_LNS_copy - 0x0000000000000587 59 21 1 0 0 - - -0x000005b3: 00 DW_LNE_set_address (0x0000000000000590) -0x000005ba: 03 DW_LNS_advance_line (60) -0x000005bc: 05 DW_LNS_set_column (17) -0x000005be: 06 DW_LNS_negate_stmt -0x000005bf: 01 DW_LNS_copy - 0x0000000000000590 60 17 1 0 0 is_stmt - - -0x000005c0: 00 DW_LNE_set_address (0x0000000000000598) -0x000005c7: 05 DW_LNS_set_column (15) -0x000005c9: 06 DW_LNS_negate_stmt -0x000005ca: 01 DW_LNS_copy - 0x0000000000000598 60 15 1 0 0 - - -0x000005cb: 00 DW_LNE_set_address (0x00000000000005a0) -0x000005d2: 03 DW_LNS_advance_line (61) -0x000005d4: 05 DW_LNS_set_column (19) -0x000005d6: 06 DW_LNS_negate_stmt -0x000005d7: 01 DW_LNS_copy - 0x00000000000005a0 61 19 1 0 0 is_stmt - - -0x000005d8: 00 DW_LNE_set_address (0x00000000000005a8) -0x000005df: 05 DW_LNS_set_column (10) -0x000005e1: 06 DW_LNS_negate_stmt -0x000005e2: 01 DW_LNS_copy - 0x00000000000005a8 61 10 1 0 0 - - -0x000005e3: 00 DW_LNE_set_address (0x00000000000005ae) -0x000005ea: 03 DW_LNS_advance_line (62) -0x000005ec: 05 DW_LNS_set_column (14) -0x000005ee: 06 DW_LNS_negate_stmt -0x000005ef: 01 DW_LNS_copy - 0x00000000000005ae 62 14 1 0 0 is_stmt - - -0x000005f0: 00 DW_LNE_set_address (0x00000000000005b6) -0x000005f7: 05 DW_LNS_set_column (25) -0x000005f9: 06 DW_LNS_negate_stmt -0x000005fa: 01 DW_LNS_copy - 0x00000000000005b6 62 25 1 0 0 - - -0x000005fb: 00 DW_LNE_set_address (0x00000000000005be) -0x00000602: 05 DW_LNS_set_column (23) -0x00000604: 01 DW_LNS_copy - 0x00000000000005be 62 23 1 0 0 - - -0x00000605: 00 DW_LNE_set_address (0x00000000000005d4) -0x0000060c: 05 DW_LNS_set_column (14) -0x0000060e: 01 DW_LNS_copy - 0x00000000000005d4 62 14 1 0 0 - - -0x0000060f: 00 DW_LNE_set_address (0x00000000000005eb) -0x00000616: 03 DW_LNS_advance_line (63) -0x00000618: 05 DW_LNS_set_column (24) -0x0000061a: 06 DW_LNS_negate_stmt -0x0000061b: 01 DW_LNS_copy - 0x00000000000005eb 63 24 1 0 0 is_stmt - - -0x0000061c: 00 DW_LNE_set_address (0x00000000000005f3) -0x00000623: 05 DW_LNS_set_column (22) -0x00000625: 06 DW_LNS_negate_stmt -0x00000626: 01 DW_LNS_copy - 0x00000000000005f3 63 22 1 0 0 - - -0x00000627: 00 DW_LNE_set_address (0x00000000000005fd) -0x0000062e: 03 DW_LNS_advance_line (66) -0x00000630: 05 DW_LNS_set_column (14) -0x00000632: 06 DW_LNS_negate_stmt -0x00000633: 01 DW_LNS_copy - 0x00000000000005fd 66 14 1 0 0 is_stmt - - -0x00000634: 00 DW_LNE_set_address (0x0000000000000607) -0x0000063b: 05 DW_LNS_set_column (19) -0x0000063d: 06 DW_LNS_negate_stmt -0x0000063e: 01 DW_LNS_copy - 0x0000000000000607 66 19 1 0 0 - - -0x0000063f: 00 DW_LNE_set_address (0x000000000000060f) -0x00000646: 05 DW_LNS_set_column (21) -0x00000648: 01 DW_LNS_copy - 0x000000000000060f 66 21 1 0 0 - - -0x00000649: 00 DW_LNE_set_address (0x000000000000061e) -0x00000650: 05 DW_LNS_set_column (16) -0x00000652: 01 DW_LNS_copy - 0x000000000000061e 66 16 1 0 0 - - -0x00000653: 00 DW_LNE_set_address (0x0000000000000634) -0x0000065a: 05 DW_LNS_set_column (14) -0x0000065c: 01 DW_LNS_copy - 0x0000000000000634 66 14 1 0 0 - - -0x0000065d: 00 DW_LNE_set_address (0x000000000000064b) -0x00000664: 03 DW_LNS_advance_line (67) -0x00000666: 05 DW_LNS_set_column (18) -0x00000668: 06 DW_LNS_negate_stmt -0x00000669: 01 DW_LNS_copy - 0x000000000000064b 67 18 1 0 0 is_stmt - - -0x0000066a: 00 DW_LNE_set_address (0x0000000000000653) -0x00000671: 05 DW_LNS_set_column (13) -0x00000673: 06 DW_LNS_negate_stmt -0x00000674: 01 DW_LNS_copy - 0x0000000000000653 67 13 1 0 0 - - -0x00000675: 00 DW_LNE_set_address (0x0000000000000658) -0x0000067c: 03 DW_LNS_advance_line (68) -0x0000067e: 05 DW_LNS_set_column (18) -0x00000680: 06 DW_LNS_negate_stmt -0x00000681: 01 DW_LNS_copy - 0x0000000000000658 68 18 1 0 0 is_stmt - - -0x00000682: 00 DW_LNE_set_address (0x0000000000000660) -0x00000689: 05 DW_LNS_set_column (13) -0x0000068b: 06 DW_LNS_negate_stmt -0x0000068c: 01 DW_LNS_copy - 0x0000000000000660 68 13 1 0 0 - - -0x0000068d: 00 DW_LNE_set_address (0x0000000000000665) -0x00000694: 03 DW_LNS_advance_line (69) -0x00000696: 05 DW_LNS_set_column (18) -0x00000698: 06 DW_LNS_negate_stmt -0x00000699: 01 DW_LNS_copy - 0x0000000000000665 69 18 1 0 0 is_stmt - - -0x0000069a: 00 DW_LNE_set_address (0x000000000000066d) -0x000006a1: 05 DW_LNS_set_column (13) -0x000006a3: 06 DW_LNS_negate_stmt -0x000006a4: 01 DW_LNS_copy - 0x000000000000066d 69 13 1 0 0 - - -0x000006a5: 00 DW_LNE_set_address (0x0000000000000672) -0x000006ac: 03 DW_LNS_advance_line (70) -0x000006ae: 05 DW_LNS_set_column (20) -0x000006b0: 06 DW_LNS_negate_stmt -0x000006b1: 01 DW_LNS_copy - 0x0000000000000672 70 20 1 0 0 is_stmt - - -0x000006b2: 00 DW_LNE_set_address (0x000000000000067a) -0x000006b9: 05 DW_LNS_set_column (13) -0x000006bb: 06 DW_LNS_negate_stmt -0x000006bc: 01 DW_LNS_copy - 0x000000000000067a 70 13 1 0 0 - - -0x000006bd: 00 DW_LNE_set_address (0x0000000000000698) -0x000006c4: 03 DW_LNS_advance_line (74) -0x000006c6: 05 DW_LNS_set_column (22) -0x000006c8: 06 DW_LNS_negate_stmt -0x000006c9: 01 DW_LNS_copy - 0x0000000000000698 74 22 1 0 0 is_stmt - - -0x000006ca: 00 DW_LNE_set_address (0x00000000000006a9) -0x000006d1: 05 DW_LNS_set_column (17) -0x000006d3: 06 DW_LNS_negate_stmt -0x000006d4: 01 DW_LNS_copy - 0x00000000000006a9 74 17 1 0 0 - - -0x000006d5: 00 DW_LNE_set_address (0x00000000000006b1) -0x000006dc: 03 DW_LNS_advance_line (75) -0x000006de: 05 DW_LNS_set_column (20) -0x000006e0: 06 DW_LNS_negate_stmt -0x000006e1: 01 DW_LNS_copy - 0x00000000000006b1 75 20 1 0 0 is_stmt - - -0x000006e2: 00 DW_LNE_set_address (0x00000000000006b9) -0x000006e9: 05 DW_LNS_set_column (25) -0x000006eb: 06 DW_LNS_negate_stmt -0x000006ec: 01 DW_LNS_copy - 0x00000000000006b9 75 25 1 0 0 - - -0x000006ed: 00 DW_LNE_set_address (0x00000000000006c5) -0x000006f4: 05 DW_LNS_set_column (29) -0x000006f6: 01 DW_LNS_copy - 0x00000000000006c5 75 29 1 0 0 - - -0x000006f7: 00 DW_LNE_set_address (0x00000000000006cd) -0x000006fe: 05 DW_LNS_set_column (27) -0x00000700: 01 DW_LNS_copy - 0x00000000000006cd 75 27 1 0 0 - - -0x00000701: 00 DW_LNE_set_address (0x00000000000006e3) -0x00000708: 05 DW_LNS_set_column (13) -0x0000070a: 01 DW_LNS_copy - 0x00000000000006e3 75 13 1 0 0 - - -0x0000070b: 00 DW_LNE_set_address (0x00000000000006f8) -0x00000712: 03 DW_LNS_advance_line (76) -0x00000714: 05 DW_LNS_set_column (27) -0x00000716: 06 DW_LNS_negate_stmt -0x00000717: 01 DW_LNS_copy - 0x00000000000006f8 76 27 1 0 0 is_stmt - - -0x00000718: 00 DW_LNE_set_address (0x0000000000000700) -0x0000071f: 05 DW_LNS_set_column (33) -0x00000721: 06 DW_LNS_negate_stmt -0x00000722: 01 DW_LNS_copy - 0x0000000000000700 76 33 1 0 0 - - -0x00000723: 00 DW_LNE_set_address (0x0000000000000708) -0x0000072a: 05 DW_LNS_set_column (35) -0x0000072c: 01 DW_LNS_copy - 0x0000000000000708 76 35 1 0 0 - - -0x0000072d: 00 DW_LNE_set_address (0x0000000000000717) -0x00000734: 05 DW_LNS_set_column (27) -0x00000736: 01 DW_LNS_copy - 0x0000000000000717 76 27 1 0 0 - - -0x00000737: 00 DW_LNE_set_address (0x0000000000000739) -0x0000073e: 05 DW_LNS_set_column (16) -0x00000740: 01 DW_LNS_copy - 0x0000000000000739 76 16 1 0 0 - - -0x00000741: 00 DW_LNE_set_address (0x0000000000000741) -0x00000748: 05 DW_LNS_set_column (22) -0x0000074a: 01 DW_LNS_copy - 0x0000000000000741 76 22 1 0 0 - - -0x0000074b: 00 DW_LNE_set_address (0x0000000000000749) -0x00000752: 05 DW_LNS_set_column (16) -0x00000754: 01 DW_LNS_copy - 0x0000000000000749 76 16 1 0 0 - - -0x00000755: 00 DW_LNE_set_address (0x0000000000000762) -0x0000075c: 05 DW_LNS_set_column (25) -0x0000075e: 01 DW_LNS_copy - 0x0000000000000762 76 25 1 0 0 - - -0x0000075f: 00 DW_LNE_set_address (0x000000000000076b) -0x00000766: 03 DW_LNS_advance_line (75) -0x00000768: 05 DW_LNS_set_column (33) -0x0000076a: 06 DW_LNS_negate_stmt -0x0000076b: 01 DW_LNS_copy - 0x000000000000076b 75 33 1 0 0 is_stmt - - -0x0000076c: 00 DW_LNE_set_address (0x000000000000078a) -0x00000773: 05 DW_LNS_set_column (13) -0x00000775: 06 DW_LNS_negate_stmt -0x00000776: 01 DW_LNS_copy - 0x000000000000078a 75 13 1 0 0 - - -0x00000777: 00 DW_LNE_set_address (0x000000000000078d) -0x0000077e: 01 DW_LNS_copy - 0x000000000000078d 75 13 1 0 0 - - -0x0000077f: 00 DW_LNE_set_address (0x0000000000000795) -0x00000786: 03 DW_LNS_advance_line (77) -0x00000788: 05 DW_LNS_set_column (24) -0x0000078a: 06 DW_LNS_negate_stmt -0x0000078b: 01 DW_LNS_copy - 0x0000000000000795 77 24 1 0 0 is_stmt - - -0x0000078c: 00 DW_LNE_set_address (0x000000000000079d) -0x00000793: 05 DW_LNS_set_column (13) -0x00000795: 06 DW_LNS_negate_stmt -0x00000796: 01 DW_LNS_copy - 0x000000000000079d 77 13 1 0 0 - - -0x00000797: 00 DW_LNE_set_address (0x00000000000007a5) -0x0000079e: 05 DW_LNS_set_column (19) -0x000007a0: 01 DW_LNS_copy - 0x00000000000007a5 77 19 1 0 0 - - -0x000007a1: 00 DW_LNE_set_address (0x00000000000007ad) -0x000007a8: 05 DW_LNS_set_column (13) -0x000007aa: 01 DW_LNS_copy - 0x00000000000007ad 77 13 1 0 0 - - -0x000007ab: 00 DW_LNE_set_address (0x00000000000007c6) -0x000007b2: 05 DW_LNS_set_column (22) -0x000007b4: 01 DW_LNS_copy - 0x00000000000007c6 77 22 1 0 0 - - -0x000007b5: 00 DW_LNE_set_address (0x00000000000007cf) -0x000007bc: 03 DW_LNS_advance_line (79) -0x000007be: 05 DW_LNS_set_column (16) -0x000007c0: 06 DW_LNS_negate_stmt -0x000007c1: 01 DW_LNS_copy - 0x00000000000007cf 79 16 1 0 0 is_stmt - - -0x000007c2: 00 DW_LNE_set_address (0x00000000000007d7) -0x000007c9: 05 DW_LNS_set_column (22) -0x000007cb: 06 DW_LNS_negate_stmt -0x000007cc: 01 DW_LNS_copy - 0x00000000000007d7 79 22 1 0 0 - - -0x000007cd: 00 DW_LNE_set_address (0x00000000000007df) -0x000007d4: 05 DW_LNS_set_column (16) -0x000007d6: 01 DW_LNS_copy - 0x00000000000007df 79 16 1 0 0 - - -0x000007d7: 00 DW_LNE_set_address (0x00000000000007f8) -0x000007de: 05 DW_LNS_set_column (14) -0x000007e0: 01 DW_LNS_copy - 0x00000000000007f8 79 14 1 0 0 - - -0x000007e1: 00 DW_LNE_set_address (0x0000000000000819) -0x000007e8: 05 DW_LNS_set_column (25) -0x000007ea: 01 DW_LNS_copy - 0x0000000000000819 79 25 1 0 0 - - -0x000007eb: 00 DW_LNE_set_address (0x000000000000082f) -0x000007f2: 05 DW_LNS_set_column (14) -0x000007f4: 01 DW_LNS_copy - 0x000000000000082f 79 14 1 0 0 - - -0x000007f5: 00 DW_LNE_set_address (0x0000000000000848) -0x000007fc: 03 DW_LNS_advance_line (80) -0x000007fe: 05 DW_LNS_set_column (13) -0x00000800: 06 DW_LNS_negate_stmt -0x00000801: 01 DW_LNS_copy - 0x0000000000000848 80 13 1 0 0 is_stmt - - -0x00000802: 00 DW_LNE_set_address (0x000000000000084b) -0x00000809: 03 DW_LNS_advance_line (81) -0x0000080b: 05 DW_LNS_set_column (11) -0x0000080d: 01 DW_LNS_copy - 0x000000000000084b 81 11 1 0 0 is_stmt - - -0x0000080e: 00 DW_LNE_set_address (0x000000000000086a) -0x00000815: 03 DW_LNS_advance_line (65) -0x00000817: 05 DW_LNS_set_column (7) -0x00000819: 01 DW_LNS_copy - 0x000000000000086a 65 7 1 0 0 is_stmt - - -0x0000081a: 00 DW_LNE_set_address (0x000000000000086d) -0x00000821: 03 DW_LNS_advance_line (80) -0x00000823: 05 DW_LNS_set_column (13) -0x00000825: 01 DW_LNS_copy - 0x000000000000086d 80 13 1 0 0 is_stmt - - -0x00000826: 00 DW_LNE_set_address (0x000000000000086e) -0x0000082d: 03 DW_LNS_advance_line (43) -0x0000082f: 05 DW_LNS_set_column (4) -0x00000831: 01 DW_LNS_copy - 0x000000000000086e 43 4 1 0 0 is_stmt - - -0x00000832: 00 DW_LNE_set_address (0x0000000000000874) -0x00000839: 03 DW_LNS_advance_line (152) -0x0000083c: 05 DW_LNS_set_column (0) -0x0000083e: 01 DW_LNS_copy - 0x0000000000000874 152 0 1 0 0 is_stmt - - -0x0000083f: 00 DW_LNE_set_address (0x00000000000008a7) -0x00000846: 03 DW_LNS_advance_line (153) -0x00000848: 05 DW_LNS_set_column (12) -0x0000084a: 0a DW_LNS_set_prologue_end -0x0000084b: 01 DW_LNS_copy - 0x00000000000008a7 153 12 1 0 0 is_stmt prologue_end - - -0x0000084c: 00 DW_LNE_set_address (0x00000000000008ae) -0x00000853: 05 DW_LNS_set_column (17) -0x00000855: 06 DW_LNS_negate_stmt -0x00000856: 01 DW_LNS_copy - 0x00000000000008ae 153 17 1 0 0 - - -0x00000857: 00 DW_LNE_set_address (0x00000000000008bd) -0x0000085e: 05 DW_LNS_set_column (12) -0x00000860: 01 DW_LNS_copy - 0x00000000000008bd 153 12 1 0 0 - - -0x00000861: 00 DW_LNE_set_address (0x00000000000008d1) -0x00000868: 05 DW_LNS_set_column (28) -0x0000086a: 01 DW_LNS_copy - 0x00000000000008d1 153 28 1 0 0 - - -0x0000086b: 00 DW_LNE_set_address (0x00000000000008df) -0x00000872: 05 DW_LNS_set_column (23) -0x00000874: 01 DW_LNS_copy - 0x00000000000008df 153 23 1 0 0 - - -0x00000875: 00 DW_LNE_set_address (0x00000000000008e5) -0x0000087c: 05 DW_LNS_set_column (12) -0x0000087e: 01 DW_LNS_copy - 0x00000000000008e5 153 12 1 0 0 - - -0x0000087f: 00 DW_LNE_set_address (0x00000000000008f0) -0x00000886: 01 DW_LNS_copy - 0x00000000000008f0 153 12 1 0 0 - - -0x00000887: 00 DW_LNE_set_address (0x00000000000008f5) -0x0000088e: 01 DW_LNS_copy - 0x00000000000008f5 153 12 1 0 0 - - -0x0000088f: 00 DW_LNE_set_address (0x00000000000008fd) -0x00000896: 05 DW_LNS_set_column (8) -0x00000898: 01 DW_LNS_copy - 0x00000000000008fd 153 8 1 0 0 - - -0x00000899: 00 DW_LNE_set_address (0x0000000000000904) -0x000008a0: 03 DW_LNS_advance_line (155) -0x000008a2: 06 DW_LNS_negate_stmt -0x000008a3: 01 DW_LNS_copy - 0x0000000000000904 155 8 1 0 0 is_stmt - - -0x000008a4: 00 DW_LNE_set_address (0x000000000000090b) -0x000008ab: 05 DW_LNS_set_column (10) -0x000008ad: 06 DW_LNS_negate_stmt -0x000008ae: 01 DW_LNS_copy - 0x000000000000090b 155 10 1 0 0 - - -0x000008af: 00 DW_LNE_set_address (0x000000000000091a) -0x000008b6: 05 DW_LNS_set_column (8) -0x000008b8: 01 DW_LNS_copy - 0x000000000000091a 155 8 1 0 0 - - -0x000008b9: 00 DW_LNE_set_address (0x000000000000092e) -0x000008c0: 03 DW_LNS_advance_line (156) -0x000008c2: 05 DW_LNS_set_column (7) -0x000008c4: 06 DW_LNS_negate_stmt -0x000008c5: 01 DW_LNS_copy - 0x000000000000092e 156 7 1 0 0 is_stmt - - -0x000008c6: 00 DW_LNE_set_address (0x0000000000000942) -0x000008cd: 03 DW_LNS_advance_line (157) -0x000008cf: 01 DW_LNS_copy - 0x0000000000000942 157 7 1 0 0 is_stmt - - -0x000008d0: 00 DW_LNE_set_address (0x000000000000094c) -0x000008d7: 03 DW_LNS_advance_line (159) -0x000008d9: 05 DW_LNS_set_column (38) -0x000008db: 01 DW_LNS_copy - 0x000000000000094c 159 38 1 0 0 is_stmt - - -0x000008dc: 00 DW_LNE_set_address (0x0000000000000953) -0x000008e3: 05 DW_LNS_set_column (50) -0x000008e5: 06 DW_LNS_negate_stmt -0x000008e6: 01 DW_LNS_copy - 0x0000000000000953 159 50 1 0 0 - - -0x000008e7: 00 DW_LNE_set_address (0x000000000000095a) -0x000008ee: 05 DW_LNS_set_column (41) -0x000008f0: 01 DW_LNS_copy - 0x000000000000095a 159 41 1 0 0 - - -0x000008f1: 00 DW_LNE_set_address (0x0000000000000960) -0x000008f8: 05 DW_LNS_set_column (4) -0x000008fa: 01 DW_LNS_copy - 0x0000000000000960 159 4 1 0 0 - - -0x000008fb: 00 DW_LNE_set_address (0x000000000000097e) -0x00000902: 03 DW_LNS_advance_line (160) -0x00000904: 06 DW_LNS_negate_stmt -0x00000905: 01 DW_LNS_copy - 0x000000000000097e 160 4 1 0 0 is_stmt - - -0x00000906: 00 DW_LNE_set_address (0x0000000000000986) -0x0000090d: 03 DW_LNS_advance_line (161) -0x0000090f: 05 DW_LNS_set_column (1) -0x00000911: 01 DW_LNS_copy - 0x0000000000000986 161 1 1 0 0 is_stmt - - -0x00000912: 00 DW_LNE_set_address (0x00000000000009a0) -0x00000919: 00 DW_LNE_end_sequence - 0x00000000000009a0 161 1 1 0 0 is_stmt end_sequence - -0x0000091c: 00 DW_LNE_set_address (0x00000000000009a2) -0x00000923: 03 DW_LNS_advance_line (88) -0x00000926: 01 DW_LNS_copy - 0x00000000000009a2 88 0 1 0 0 is_stmt - - -0x00000927: 00 DW_LNE_set_address (0x00000000000009c8) -0x0000092e: 03 DW_LNS_advance_line (90) -0x00000930: 05 DW_LNS_set_column (8) -0x00000932: 0a DW_LNS_set_prologue_end -0x00000933: 01 DW_LNS_copy - 0x00000000000009c8 90 8 1 0 0 is_stmt prologue_end - - -0x00000934: 00 DW_LNE_set_address (0x00000000000009cf) -0x0000093b: 03 DW_LNS_advance_line (93) -0x0000093d: 05 DW_LNS_set_column (9) -0x0000093f: 01 DW_LNS_copy - 0x00000000000009cf 93 9 1 0 0 is_stmt - - -0x00000940: 00 DW_LNE_set_address (0x00000000000009d6) -0x00000947: 03 DW_LNS_advance_line (94) -0x00000949: 05 DW_LNS_set_column (11) -0x0000094b: 01 DW_LNS_copy - 0x00000000000009d6 94 11 1 0 0 is_stmt - - -0x0000094c: 00 DW_LNE_set_address (0x00000000000009dd) -0x00000953: 05 DW_LNS_set_column (16) -0x00000955: 06 DW_LNS_negate_stmt -0x00000956: 01 DW_LNS_copy - 0x00000000000009dd 94 16 1 0 0 - - -0x00000957: 00 DW_LNE_set_address (0x00000000000009e8) -0x0000095e: 05 DW_LNS_set_column (20) -0x00000960: 01 DW_LNS_copy - 0x00000000000009e8 94 20 1 0 0 - - -0x00000961: 00 DW_LNE_set_address (0x00000000000009ef) -0x00000968: 05 DW_LNS_set_column (22) -0x0000096a: 01 DW_LNS_copy - 0x00000000000009ef 94 22 1 0 0 - - -0x0000096b: 00 DW_LNE_set_address (0x00000000000009fa) -0x00000972: 05 DW_LNS_set_column (18) -0x00000974: 01 DW_LNS_copy - 0x00000000000009fa 94 18 1 0 0 - - -0x00000975: 00 DW_LNE_set_address (0x0000000000000a09) -0x0000097c: 05 DW_LNS_set_column (4) -0x0000097e: 01 DW_LNS_copy - 0x0000000000000a09 94 4 1 0 0 - - -0x0000097f: 00 DW_LNE_set_address (0x0000000000000a1d) -0x00000986: 03 DW_LNS_advance_line (95) -0x00000988: 05 DW_LNS_set_column (29) -0x0000098a: 06 DW_LNS_negate_stmt -0x0000098b: 01 DW_LNS_copy - 0x0000000000000a1d 95 29 1 0 0 is_stmt - - -0x0000098c: 00 DW_LNE_set_address (0x0000000000000a23) -0x00000993: 05 DW_LNS_set_column (13) -0x00000995: 06 DW_LNS_negate_stmt -0x00000996: 01 DW_LNS_copy - 0x0000000000000a23 95 13 1 0 0 - - -0x00000997: 00 DW_LNE_set_address (0x0000000000000a2a) -0x0000099e: 03 DW_LNS_advance_line (96) -0x000009a0: 05 DW_LNS_set_column (18) -0x000009a2: 06 DW_LNS_negate_stmt -0x000009a3: 01 DW_LNS_copy - 0x0000000000000a2a 96 18 1 0 0 is_stmt - - -0x000009a4: 00 DW_LNE_set_address (0x0000000000000a31) -0x000009ab: 05 DW_LNS_set_column (7) -0x000009ad: 06 DW_LNS_negate_stmt -0x000009ae: 01 DW_LNS_copy - 0x0000000000000a31 96 7 1 0 0 - - -0x000009af: 00 DW_LNE_set_address (0x0000000000000a38) -0x000009b6: 05 DW_LNS_set_column (16) -0x000009b8: 01 DW_LNS_copy - 0x0000000000000a38 96 16 1 0 0 - - -0x000009b9: 00 DW_LNE_set_address (0x0000000000000a3f) -0x000009c0: 03 DW_LNS_advance_line (97) -0x000009c2: 05 DW_LNS_set_column (18) -0x000009c4: 06 DW_LNS_negate_stmt -0x000009c5: 01 DW_LNS_copy - 0x0000000000000a3f 97 18 1 0 0 is_stmt - - -0x000009c6: 00 DW_LNE_set_address (0x0000000000000a46) -0x000009cd: 05 DW_LNS_set_column (7) -0x000009cf: 06 DW_LNS_negate_stmt -0x000009d0: 01 DW_LNS_copy - 0x0000000000000a46 97 7 1 0 0 - - -0x000009d1: 00 DW_LNE_set_address (0x0000000000000a4d) -0x000009d8: 05 DW_LNS_set_column (16) -0x000009da: 01 DW_LNS_copy - 0x0000000000000a4d 97 16 1 0 0 - - -0x000009db: 00 DW_LNE_set_address (0x0000000000000a54) -0x000009e2: 03 DW_LNS_advance_line (98) -0x000009e4: 05 DW_LNS_set_column (21) -0x000009e6: 06 DW_LNS_negate_stmt -0x000009e7: 01 DW_LNS_copy - 0x0000000000000a54 98 21 1 0 0 is_stmt - - -0x000009e8: 00 DW_LNE_set_address (0x0000000000000a5b) -0x000009ef: 05 DW_LNS_set_column (7) -0x000009f1: 06 DW_LNS_negate_stmt -0x000009f2: 01 DW_LNS_copy - 0x0000000000000a5b 98 7 1 0 0 - - -0x000009f3: 00 DW_LNE_set_address (0x0000000000000a62) -0x000009fa: 05 DW_LNS_set_column (19) -0x000009fc: 01 DW_LNS_copy - 0x0000000000000a62 98 19 1 0 0 - - -0x000009fd: 00 DW_LNE_set_address (0x0000000000000a69) -0x00000a04: 03 DW_LNS_advance_line (99) -0x00000a06: 05 DW_LNS_set_column (14) -0x00000a08: 06 DW_LNS_negate_stmt -0x00000a09: 01 DW_LNS_copy - 0x0000000000000a69 99 14 1 0 0 is_stmt - - -0x00000a0a: 00 DW_LNE_set_address (0x0000000000000a70) -0x00000a11: 05 DW_LNS_set_column (12) -0x00000a13: 06 DW_LNS_negate_stmt -0x00000a14: 01 DW_LNS_copy - 0x0000000000000a70 99 12 1 0 0 - - -0x00000a15: 00 DW_LNE_set_address (0x0000000000000a77) -0x00000a1c: 03 DW_LNS_advance_line (94) -0x00000a1e: 05 DW_LNS_set_column (28) -0x00000a20: 06 DW_LNS_negate_stmt -0x00000a21: 01 DW_LNS_copy - 0x0000000000000a77 94 28 1 0 0 is_stmt - - -0x00000a22: 00 DW_LNE_set_address (0x0000000000000a90) -0x00000a29: 05 DW_LNS_set_column (4) -0x00000a2b: 06 DW_LNS_negate_stmt -0x00000a2c: 01 DW_LNS_copy - 0x0000000000000a90 94 4 1 0 0 - - -0x00000a2d: 00 DW_LNE_set_address (0x0000000000000a93) -0x00000a34: 01 DW_LNS_copy - 0x0000000000000a93 94 4 1 0 0 - - -0x00000a35: 00 DW_LNE_set_address (0x0000000000000a9a) -0x00000a3c: 03 DW_LNS_advance_line (102) -0x00000a3e: 05 DW_LNS_set_column (25) -0x00000a40: 06 DW_LNS_negate_stmt -0x00000a41: 01 DW_LNS_copy - 0x0000000000000a9a 102 25 1 0 0 is_stmt - - -0x00000a42: 00 DW_LNE_set_address (0x0000000000000aa1) -0x00000a49: 05 DW_LNS_set_column (27) -0x00000a4b: 06 DW_LNS_negate_stmt -0x00000a4c: 01 DW_LNS_copy - 0x0000000000000aa1 102 27 1 0 0 - - -0x00000a4d: 00 DW_LNE_set_address (0x0000000000000aac) -0x00000a54: 05 DW_LNS_set_column (18) -0x00000a56: 01 DW_LNS_copy - 0x0000000000000aac 102 18 1 0 0 - - -0x00000a57: 00 DW_LNE_set_address (0x0000000000000ab2) -0x00000a5e: 05 DW_LNS_set_column (10) -0x00000a60: 01 DW_LNS_copy - 0x0000000000000ab2 102 10 1 0 0 - - -0x00000a61: 00 DW_LNE_set_address (0x0000000000000ab9) -0x00000a68: 03 DW_LNS_advance_line (103) -0x00000a6a: 05 DW_LNS_set_column (25) -0x00000a6c: 06 DW_LNS_negate_stmt -0x00000a6d: 01 DW_LNS_copy - 0x0000000000000ab9 103 25 1 0 0 is_stmt - - -0x00000a6e: 00 DW_LNE_set_address (0x0000000000000ac0) -0x00000a75: 05 DW_LNS_set_column (27) -0x00000a77: 06 DW_LNS_negate_stmt -0x00000a78: 01 DW_LNS_copy - 0x0000000000000ac0 103 27 1 0 0 - - -0x00000a79: 00 DW_LNE_set_address (0x0000000000000acb) -0x00000a80: 05 DW_LNS_set_column (18) -0x00000a82: 01 DW_LNS_copy - 0x0000000000000acb 103 18 1 0 0 - - -0x00000a83: 00 DW_LNE_set_address (0x0000000000000ad1) -0x00000a8a: 05 DW_LNS_set_column (10) -0x00000a8c: 01 DW_LNS_copy - 0x0000000000000ad1 103 10 1 0 0 - - -0x00000a8d: 00 DW_LNE_set_address (0x0000000000000ad8) -0x00000a94: 03 DW_LNS_advance_line (105) -0x00000a96: 05 DW_LNS_set_column (11) -0x00000a98: 06 DW_LNS_negate_stmt -0x00000a99: 01 DW_LNS_copy - 0x0000000000000ad8 105 11 1 0 0 is_stmt - - -0x00000a9a: 00 DW_LNE_set_address (0x0000000000000adf) -0x00000aa1: 05 DW_LNS_set_column (16) -0x00000aa3: 06 DW_LNS_negate_stmt -0x00000aa4: 01 DW_LNS_copy - 0x0000000000000adf 105 16 1 0 0 - - -0x00000aa5: 00 DW_LNE_set_address (0x0000000000000aea) -0x00000aac: 05 DW_LNS_set_column (20) -0x00000aae: 01 DW_LNS_copy - 0x0000000000000aea 105 20 1 0 0 - - -0x00000aaf: 00 DW_LNE_set_address (0x0000000000000af1) -0x00000ab6: 05 DW_LNS_set_column (18) -0x00000ab8: 01 DW_LNS_copy - 0x0000000000000af1 105 18 1 0 0 - - -0x00000ab9: 00 DW_LNE_set_address (0x0000000000000b00) -0x00000ac0: 05 DW_LNS_set_column (4) -0x00000ac2: 01 DW_LNS_copy - 0x0000000000000b00 105 4 1 0 0 - - -0x00000ac3: 00 DW_LNE_set_address (0x0000000000000b10) -0x00000aca: 03 DW_LNS_advance_line (106) -0x00000acc: 05 DW_LNS_set_column (18) -0x00000ace: 06 DW_LNS_negate_stmt -0x00000acf: 01 DW_LNS_copy - 0x0000000000000b10 106 18 1 0 0 is_stmt - - -0x00000ad0: 00 DW_LNE_set_address (0x0000000000000b17) -0x00000ad7: 05 DW_LNS_set_column (7) -0x00000ad9: 06 DW_LNS_negate_stmt -0x00000ada: 01 DW_LNS_copy - 0x0000000000000b17 106 7 1 0 0 - - -0x00000adb: 00 DW_LNE_set_address (0x0000000000000b1e) -0x00000ae2: 05 DW_LNS_set_column (13) -0x00000ae4: 01 DW_LNS_copy - 0x0000000000000b1e 106 13 1 0 0 - - -0x00000ae5: 00 DW_LNE_set_address (0x0000000000000b25) -0x00000aec: 05 DW_LNS_set_column (7) -0x00000aee: 01 DW_LNS_copy - 0x0000000000000b25 106 7 1 0 0 - - -0x00000aef: 00 DW_LNE_set_address (0x0000000000000b37) -0x00000af6: 05 DW_LNS_set_column (16) -0x00000af8: 01 DW_LNS_copy - 0x0000000000000b37 106 16 1 0 0 - - -0x00000af9: 00 DW_LNE_set_address (0x0000000000000b3e) -0x00000b00: 03 DW_LNS_advance_line (105) -0x00000b02: 05 DW_LNS_set_column (24) -0x00000b04: 06 DW_LNS_negate_stmt -0x00000b05: 01 DW_LNS_copy - 0x0000000000000b3e 105 24 1 0 0 is_stmt - - -0x00000b06: 00 DW_LNE_set_address (0x0000000000000b57) -0x00000b0d: 05 DW_LNS_set_column (4) -0x00000b0f: 06 DW_LNS_negate_stmt -0x00000b10: 01 DW_LNS_copy - 0x0000000000000b57 105 4 1 0 0 - - -0x00000b11: 00 DW_LNE_set_address (0x0000000000000b5a) -0x00000b18: 01 DW_LNS_copy - 0x0000000000000b5a 105 4 1 0 0 - - -0x00000b19: 00 DW_LNE_set_address (0x0000000000000b5d) -0x00000b20: 03 DW_LNS_advance_line (108) -0x00000b22: 05 DW_LNS_set_column (8) -0x00000b24: 06 DW_LNS_negate_stmt -0x00000b25: 01 DW_LNS_copy - 0x0000000000000b5d 108 8 1 0 0 is_stmt - - -0x00000b26: 00 DW_LNE_set_address (0x0000000000000b64) -0x00000b2d: 05 DW_LNS_set_column (6) -0x00000b2f: 06 DW_LNS_negate_stmt -0x00000b30: 01 DW_LNS_copy - 0x0000000000000b64 108 6 1 0 0 - - -0x00000b31: 00 DW_LNE_set_address (0x0000000000000b6b) -0x00000b38: 03 DW_LNS_advance_line (110) -0x00000b3a: 05 DW_LNS_set_column (11) -0x00000b3c: 06 DW_LNS_negate_stmt -0x00000b3d: 01 DW_LNS_copy - 0x0000000000000b6b 110 11 1 0 0 is_stmt - - -0x00000b3e: 00 DW_LNE_set_address (0x0000000000000b76) -0x00000b45: 06 DW_LNS_negate_stmt -0x00000b46: 01 DW_LNS_copy - 0x0000000000000b76 110 11 1 0 0 - - -0x00000b47: 00 DW_LNE_set_address (0x0000000000000b83) -0x00000b4e: 03 DW_LNS_advance_line (111) -0x00000b50: 05 DW_LNS_set_column (17) -0x00000b52: 06 DW_LNS_negate_stmt -0x00000b53: 01 DW_LNS_copy - 0x0000000000000b83 111 17 1 0 0 is_stmt - - -0x00000b54: 00 DW_LNE_set_address (0x0000000000000b8a) -0x00000b5b: 05 DW_LNS_set_column (22) -0x00000b5d: 06 DW_LNS_negate_stmt -0x00000b5e: 01 DW_LNS_copy - 0x0000000000000b8a 111 22 1 0 0 - - -0x00000b5f: 00 DW_LNE_set_address (0x0000000000000b95) -0x00000b66: 05 DW_LNS_set_column (26) -0x00000b68: 01 DW_LNS_copy - 0x0000000000000b95 111 26 1 0 0 - - -0x00000b69: 00 DW_LNE_set_address (0x0000000000000b9c) -0x00000b70: 05 DW_LNS_set_column (24) -0x00000b72: 01 DW_LNS_copy - 0x0000000000000b9c 111 24 1 0 0 - - -0x00000b73: 00 DW_LNE_set_address (0x0000000000000bab) -0x00000b7a: 05 DW_LNS_set_column (10) -0x00000b7c: 01 DW_LNS_copy - 0x0000000000000bab 111 10 1 0 0 - - -0x00000b7d: 00 DW_LNE_set_address (0x0000000000000bbb) -0x00000b84: 03 DW_LNS_advance_line (112) -0x00000b86: 05 DW_LNS_set_column (26) -0x00000b88: 06 DW_LNS_negate_stmt -0x00000b89: 01 DW_LNS_copy - 0x0000000000000bbb 112 26 1 0 0 is_stmt - - -0x00000b8a: 00 DW_LNE_set_address (0x0000000000000bc2) -0x00000b91: 05 DW_LNS_set_column (32) -0x00000b93: 06 DW_LNS_negate_stmt -0x00000b94: 01 DW_LNS_copy - 0x0000000000000bc2 112 32 1 0 0 - - -0x00000b95: 00 DW_LNE_set_address (0x0000000000000bc9) -0x00000b9c: 05 DW_LNS_set_column (26) -0x00000b9e: 01 DW_LNS_copy - 0x0000000000000bc9 112 26 1 0 0 - - -0x00000b9f: 00 DW_LNE_set_address (0x0000000000000be2) -0x00000ba6: 05 DW_LNS_set_column (35) -0x00000ba8: 01 DW_LNS_copy - 0x0000000000000be2 112 35 1 0 0 - - -0x00000ba9: 00 DW_LNE_set_address (0x0000000000000bed) -0x00000bb0: 05 DW_LNS_set_column (13) -0x00000bb2: 01 DW_LNS_copy - 0x0000000000000bed 112 13 1 0 0 - - -0x00000bb3: 00 DW_LNE_set_address (0x0000000000000c00) -0x00000bba: 03 DW_LNS_advance_line (111) -0x00000bbc: 05 DW_LNS_set_column (30) -0x00000bbe: 06 DW_LNS_negate_stmt -0x00000bbf: 01 DW_LNS_copy - 0x0000000000000c00 111 30 1 0 0 is_stmt - - -0x00000bc0: 00 DW_LNE_set_address (0x0000000000000c19) -0x00000bc7: 05 DW_LNS_set_column (10) -0x00000bc9: 06 DW_LNS_negate_stmt -0x00000bca: 01 DW_LNS_copy - 0x0000000000000c19 111 10 1 0 0 - - -0x00000bcb: 00 DW_LNE_set_address (0x0000000000000c1c) -0x00000bd2: 01 DW_LNS_copy - 0x0000000000000c1c 111 10 1 0 0 - - -0x00000bd3: 00 DW_LNE_set_address (0x0000000000000c1f) -0x00000bda: 03 DW_LNS_advance_line (113) -0x00000bdc: 06 DW_LNS_negate_stmt -0x00000bdd: 01 DW_LNS_copy - 0x0000000000000c1f 113 10 1 0 0 is_stmt - - -0x00000bde: 00 DW_LNE_set_address (0x0000000000000c2f) -0x00000be5: 03 DW_LNS_advance_line (114) -0x00000be7: 05 DW_LNS_set_column (17) -0x00000be9: 01 DW_LNS_copy - 0x0000000000000c2f 114 17 1 0 0 is_stmt - - -0x00000bea: 00 DW_LNE_set_address (0x0000000000000c48) -0x00000bf1: 03 DW_LNS_advance_line (115) -0x00000bf3: 05 DW_LNS_set_column (7) -0x00000bf5: 01 DW_LNS_copy - 0x0000000000000c48 115 7 1 0 0 is_stmt - - -0x00000bf6: 00 DW_LNE_set_address (0x0000000000000c4b) -0x00000bfd: 03 DW_LNS_advance_line (116) -0x00000bff: 05 DW_LNS_set_column (10) -0x00000c01: 01 DW_LNS_copy - 0x0000000000000c4b 116 10 1 0 0 is_stmt - - -0x00000c02: 00 DW_LNE_set_address (0x0000000000000c56) -0x00000c09: 03 DW_LNS_advance_line (118) -0x00000c0b: 05 DW_LNS_set_column (14) -0x00000c0d: 01 DW_LNS_copy - 0x0000000000000c56 118 14 1 0 0 is_stmt - - -0x00000c0e: 00 DW_LNE_set_address (0x0000000000000c5d) -0x00000c15: 05 DW_LNS_set_column (16) -0x00000c17: 06 DW_LNS_negate_stmt -0x00000c18: 01 DW_LNS_copy - 0x0000000000000c5d 118 16 1 0 0 - - -0x00000c19: 00 DW_LNE_set_address (0x0000000000000c6c) -0x00000c20: 05 DW_LNS_set_column (7) -0x00000c22: 01 DW_LNS_copy - 0x0000000000000c6c 118 7 1 0 0 - - -0x00000c23: 00 DW_LNE_set_address (0x0000000000000c7c) -0x00000c2a: 03 DW_LNS_advance_line (119) -0x00000c2c: 05 DW_LNS_set_column (25) -0x00000c2e: 06 DW_LNS_negate_stmt -0x00000c2f: 01 DW_LNS_copy - 0x0000000000000c7c 119 25 1 0 0 is_stmt - - -0x00000c30: 00 DW_LNE_set_address (0x0000000000000c83) -0x00000c37: 05 DW_LNS_set_column (10) -0x00000c39: 06 DW_LNS_negate_stmt -0x00000c3a: 01 DW_LNS_copy - 0x0000000000000c83 119 10 1 0 0 - - -0x00000c3b: 00 DW_LNE_set_address (0x0000000000000c8a) -0x00000c42: 05 DW_LNS_set_column (16) -0x00000c44: 01 DW_LNS_copy - 0x0000000000000c8a 119 16 1 0 0 - - -0x00000c45: 00 DW_LNE_set_address (0x0000000000000c91) -0x00000c4c: 05 DW_LNS_set_column (18) -0x00000c4e: 01 DW_LNS_copy - 0x0000000000000c91 119 18 1 0 0 - - -0x00000c4f: 00 DW_LNE_set_address (0x0000000000000c9c) -0x00000c56: 05 DW_LNS_set_column (10) -0x00000c58: 01 DW_LNS_copy - 0x0000000000000c9c 119 10 1 0 0 - - -0x00000c59: 00 DW_LNE_set_address (0x0000000000000cae) -0x00000c60: 05 DW_LNS_set_column (23) -0x00000c62: 01 DW_LNS_copy - 0x0000000000000cae 119 23 1 0 0 - - -0x00000c63: 00 DW_LNE_set_address (0x0000000000000cb5) -0x00000c6a: 03 DW_LNS_advance_line (118) -0x00000c6c: 05 DW_LNS_set_column (22) -0x00000c6e: 06 DW_LNS_negate_stmt -0x00000c6f: 01 DW_LNS_copy - 0x0000000000000cb5 118 22 1 0 0 is_stmt - - -0x00000c70: 00 DW_LNE_set_address (0x0000000000000cce) -0x00000c77: 05 DW_LNS_set_column (7) -0x00000c79: 06 DW_LNS_negate_stmt -0x00000c7a: 01 DW_LNS_copy - 0x0000000000000cce 118 7 1 0 0 - - -0x00000c7b: 00 DW_LNE_set_address (0x0000000000000cd1) -0x00000c82: 01 DW_LNS_copy - 0x0000000000000cd1 118 7 1 0 0 - - -0x00000c83: 00 DW_LNE_set_address (0x0000000000000cd4) -0x00000c8a: 03 DW_LNS_advance_line (122) -0x00000c8c: 05 DW_LNS_set_column (14) -0x00000c8e: 06 DW_LNS_negate_stmt -0x00000c8f: 01 DW_LNS_copy - 0x0000000000000cd4 122 14 1 0 0 is_stmt - - -0x00000c90: 00 DW_LNE_set_address (0x0000000000000cdd) -0x00000c97: 05 DW_LNS_set_column (19) -0x00000c99: 06 DW_LNS_negate_stmt -0x00000c9a: 01 DW_LNS_copy - 0x0000000000000cdd 122 19 1 0 0 - - -0x00000c9b: 00 DW_LNE_set_address (0x0000000000000ce4) -0x00000ca2: 05 DW_LNS_set_column (16) -0x00000ca4: 01 DW_LNS_copy - 0x0000000000000ce4 122 16 1 0 0 - - -0x00000ca5: 00 DW_LNE_set_address (0x0000000000000cf3) -0x00000cac: 05 DW_LNS_set_column (14) -0x00000cae: 01 DW_LNS_copy - 0x0000000000000cf3 122 14 1 0 0 - - -0x00000caf: 00 DW_LNE_set_address (0x0000000000000d05) -0x00000cb6: 03 DW_LNS_advance_line (123) -0x00000cb8: 05 DW_LNS_set_column (13) -0x00000cba: 06 DW_LNS_negate_stmt -0x00000cbb: 01 DW_LNS_copy - 0x0000000000000d05 123 13 1 0 0 is_stmt - - -0x00000cbc: 00 DW_LNE_set_address (0x0000000000000d0c) -0x00000cc3: 03 DW_LNS_advance_line (125) -0x00000cc5: 05 DW_LNS_set_column (22) -0x00000cc7: 01 DW_LNS_copy - 0x0000000000000d0c 125 22 1 0 0 is_stmt - - -0x00000cc8: 00 DW_LNE_set_address (0x0000000000000d1a) -0x00000ccf: 05 DW_LNS_set_column (17) -0x00000cd1: 06 DW_LNS_negate_stmt -0x00000cd2: 01 DW_LNS_copy - 0x0000000000000d1a 125 17 1 0 0 - - -0x00000cd3: 00 DW_LNE_set_address (0x0000000000000d21) -0x00000cda: 03 DW_LNS_advance_line (126) -0x00000cdc: 05 DW_LNS_set_column (20) -0x00000cde: 06 DW_LNS_negate_stmt -0x00000cdf: 01 DW_LNS_copy - 0x0000000000000d21 126 20 1 0 0 is_stmt - - -0x00000ce0: 00 DW_LNE_set_address (0x0000000000000d28) -0x00000ce7: 05 DW_LNS_set_column (25) -0x00000ce9: 06 DW_LNS_negate_stmt -0x00000cea: 01 DW_LNS_copy - 0x0000000000000d28 126 25 1 0 0 - - -0x00000ceb: 00 DW_LNE_set_address (0x0000000000000d33) -0x00000cf2: 05 DW_LNS_set_column (29) -0x00000cf4: 01 DW_LNS_copy - 0x0000000000000d33 126 29 1 0 0 - - -0x00000cf5: 00 DW_LNE_set_address (0x0000000000000d3a) -0x00000cfc: 05 DW_LNS_set_column (27) -0x00000cfe: 01 DW_LNS_copy - 0x0000000000000d3a 126 27 1 0 0 - - -0x00000cff: 00 DW_LNE_set_address (0x0000000000000d49) -0x00000d06: 05 DW_LNS_set_column (13) -0x00000d08: 01 DW_LNS_copy - 0x0000000000000d49 126 13 1 0 0 - - -0x00000d09: 00 DW_LNE_set_address (0x0000000000000d59) -0x00000d10: 03 DW_LNS_advance_line (127) -0x00000d12: 05 DW_LNS_set_column (27) -0x00000d14: 06 DW_LNS_negate_stmt -0x00000d15: 01 DW_LNS_copy - 0x0000000000000d59 127 27 1 0 0 is_stmt - - -0x00000d16: 00 DW_LNE_set_address (0x0000000000000d60) -0x00000d1d: 05 DW_LNS_set_column (33) -0x00000d1f: 06 DW_LNS_negate_stmt -0x00000d20: 01 DW_LNS_copy - 0x0000000000000d60 127 33 1 0 0 - - -0x00000d21: 00 DW_LNE_set_address (0x0000000000000d67) -0x00000d28: 05 DW_LNS_set_column (35) -0x00000d2a: 01 DW_LNS_copy - 0x0000000000000d67 127 35 1 0 0 - - -0x00000d2b: 00 DW_LNE_set_address (0x0000000000000d72) -0x00000d32: 05 DW_LNS_set_column (27) -0x00000d34: 01 DW_LNS_copy - 0x0000000000000d72 127 27 1 0 0 - - -0x00000d35: 00 DW_LNE_set_address (0x0000000000000d8b) -0x00000d3c: 05 DW_LNS_set_column (16) -0x00000d3e: 01 DW_LNS_copy - 0x0000000000000d8b 127 16 1 0 0 - - -0x00000d3f: 00 DW_LNE_set_address (0x0000000000000d92) -0x00000d46: 05 DW_LNS_set_column (22) -0x00000d48: 01 DW_LNS_copy - 0x0000000000000d92 127 22 1 0 0 - - -0x00000d49: 00 DW_LNE_set_address (0x0000000000000d99) -0x00000d50: 05 DW_LNS_set_column (16) -0x00000d52: 01 DW_LNS_copy - 0x0000000000000d99 127 16 1 0 0 - - -0x00000d53: 00 DW_LNE_set_address (0x0000000000000dab) -0x00000d5a: 05 DW_LNS_set_column (25) -0x00000d5c: 01 DW_LNS_copy - 0x0000000000000dab 127 25 1 0 0 - - -0x00000d5d: 00 DW_LNE_set_address (0x0000000000000db2) -0x00000d64: 03 DW_LNS_advance_line (126) -0x00000d66: 05 DW_LNS_set_column (33) -0x00000d68: 06 DW_LNS_negate_stmt -0x00000d69: 01 DW_LNS_copy - 0x0000000000000db2 126 33 1 0 0 is_stmt - - -0x00000d6a: 00 DW_LNE_set_address (0x0000000000000dcf) -0x00000d71: 05 DW_LNS_set_column (13) -0x00000d73: 06 DW_LNS_negate_stmt -0x00000d74: 01 DW_LNS_copy - 0x0000000000000dcf 126 13 1 0 0 - - -0x00000d75: 00 DW_LNE_set_address (0x0000000000000dd2) -0x00000d7c: 01 DW_LNS_copy - 0x0000000000000dd2 126 13 1 0 0 - - -0x00000d7d: 00 DW_LNE_set_address (0x0000000000000dda) -0x00000d84: 03 DW_LNS_advance_line (128) -0x00000d86: 05 DW_LNS_set_column (24) -0x00000d88: 06 DW_LNS_negate_stmt -0x00000d89: 01 DW_LNS_copy - 0x0000000000000dda 128 24 1 0 0 is_stmt - - -0x00000d8a: 00 DW_LNE_set_address (0x0000000000000de2) -0x00000d91: 05 DW_LNS_set_column (13) -0x00000d93: 06 DW_LNS_negate_stmt -0x00000d94: 01 DW_LNS_copy - 0x0000000000000de2 128 13 1 0 0 - - -0x00000d95: 00 DW_LNE_set_address (0x0000000000000dea) -0x00000d9c: 05 DW_LNS_set_column (19) -0x00000d9e: 01 DW_LNS_copy - 0x0000000000000dea 128 19 1 0 0 - - -0x00000d9f: 00 DW_LNE_set_address (0x0000000000000df2) -0x00000da6: 05 DW_LNS_set_column (13) -0x00000da8: 01 DW_LNS_copy - 0x0000000000000df2 128 13 1 0 0 - - -0x00000da9: 00 DW_LNE_set_address (0x0000000000000e0b) -0x00000db0: 05 DW_LNS_set_column (22) -0x00000db2: 01 DW_LNS_copy - 0x0000000000000e0b 128 22 1 0 0 - - -0x00000db3: 00 DW_LNE_set_address (0x0000000000000e14) -0x00000dba: 03 DW_LNS_advance_line (130) -0x00000dbc: 05 DW_LNS_set_column (16) -0x00000dbe: 06 DW_LNS_negate_stmt -0x00000dbf: 01 DW_LNS_copy - 0x0000000000000e14 130 16 1 0 0 is_stmt - - -0x00000dc0: 00 DW_LNE_set_address (0x0000000000000e1c) -0x00000dc7: 05 DW_LNS_set_column (22) -0x00000dc9: 06 DW_LNS_negate_stmt -0x00000dca: 01 DW_LNS_copy - 0x0000000000000e1c 130 22 1 0 0 - - -0x00000dcb: 00 DW_LNE_set_address (0x0000000000000e24) -0x00000dd2: 05 DW_LNS_set_column (16) -0x00000dd4: 01 DW_LNS_copy - 0x0000000000000e24 130 16 1 0 0 - - -0x00000dd5: 00 DW_LNE_set_address (0x0000000000000e3d) -0x00000ddc: 05 DW_LNS_set_column (14) -0x00000dde: 01 DW_LNS_copy - 0x0000000000000e3d 130 14 1 0 0 - - -0x00000ddf: 00 DW_LNE_set_address (0x0000000000000e5e) -0x00000de6: 05 DW_LNS_set_column (25) -0x00000de8: 01 DW_LNS_copy - 0x0000000000000e5e 130 25 1 0 0 - - -0x00000de9: 00 DW_LNE_set_address (0x0000000000000e74) -0x00000df0: 05 DW_LNS_set_column (14) -0x00000df2: 01 DW_LNS_copy - 0x0000000000000e74 130 14 1 0 0 - - -0x00000df3: 00 DW_LNE_set_address (0x0000000000000e8d) -0x00000dfa: 03 DW_LNS_advance_line (131) -0x00000dfc: 05 DW_LNS_set_column (13) -0x00000dfe: 06 DW_LNS_negate_stmt -0x00000dff: 01 DW_LNS_copy - 0x0000000000000e8d 131 13 1 0 0 is_stmt - - -0x00000e00: 00 DW_LNE_set_address (0x0000000000000e90) -0x00000e07: 03 DW_LNS_advance_line (133) -0x00000e09: 05 DW_LNS_set_column (11) -0x00000e0b: 01 DW_LNS_copy - 0x0000000000000e90 133 11 1 0 0 is_stmt - - -0x00000e0c: 00 DW_LNE_set_address (0x0000000000000eaf) -0x00000e13: 03 DW_LNS_advance_line (121) -0x00000e15: 05 DW_LNS_set_column (7) -0x00000e17: 01 DW_LNS_copy - 0x0000000000000eaf 121 7 1 0 0 is_stmt - - -0x00000e18: 00 DW_LNE_set_address (0x0000000000000eb2) -0x00000e1f: 03 DW_LNS_advance_line (131) -0x00000e21: 05 DW_LNS_set_column (13) -0x00000e23: 01 DW_LNS_copy - 0x0000000000000eb2 131 13 1 0 0 is_stmt - - -0x00000e24: 00 DW_LNE_set_address (0x0000000000000eb3) -0x00000e2b: 03 DW_LNS_advance_line (109) -0x00000e2d: 05 DW_LNS_set_column (4) -0x00000e2f: 01 DW_LNS_copy - 0x0000000000000eb3 109 4 1 0 0 is_stmt - - -0x00000e30: 00 DW_LNE_set_address (0x0000000000000eb6) -0x00000e37: 03 DW_LNS_advance_line (123) -0x00000e39: 05 DW_LNS_set_column (13) -0x00000e3b: 01 DW_LNS_copy - 0x0000000000000eb6 123 13 1 0 0 is_stmt - - -0x00000e3c: 00 DW_LNE_set_address (0x0000000000000ebe) -0x00000e43: 03 DW_LNS_advance_line (138) -0x00000e45: 05 DW_LNS_set_column (9) -0x00000e47: 01 DW_LNS_copy - 0x0000000000000ebe 138 9 1 0 0 is_stmt - - -0x00000e48: 00 DW_LNE_set_address (0x0000000000000ec6) -0x00000e4f: 05 DW_LNS_set_column (4) -0x00000e51: 06 DW_LNS_negate_stmt -0x00000e52: 01 DW_LNS_copy - 0x0000000000000ec6 138 4 1 0 0 - - -0x00000e53: 00 DW_LNE_set_address (0x0000000000000ecb) -0x00000e5a: 03 DW_LNS_advance_line (139) -0x00000e5c: 05 DW_LNS_set_column (9) -0x00000e5e: 06 DW_LNS_negate_stmt -0x00000e5f: 01 DW_LNS_copy - 0x0000000000000ecb 139 9 1 0 0 is_stmt - - -0x00000e60: 00 DW_LNE_set_address (0x0000000000000ed3) -0x00000e67: 05 DW_LNS_set_column (4) -0x00000e69: 06 DW_LNS_negate_stmt -0x00000e6a: 01 DW_LNS_copy - 0x0000000000000ed3 139 4 1 0 0 - - -0x00000e6b: 00 DW_LNE_set_address (0x0000000000000ed8) -0x00000e72: 03 DW_LNS_advance_line (140) -0x00000e74: 05 DW_LNS_set_column (13) -0x00000e76: 06 DW_LNS_negate_stmt -0x00000e77: 01 DW_LNS_copy - 0x0000000000000ed8 140 13 1 0 0 is_stmt - - -0x00000e78: 00 DW_LNE_set_address (0x0000000000000ee9) -0x00000e7f: 03 DW_LNS_advance_line (141) -0x00000e81: 05 DW_LNS_set_column (11) -0x00000e83: 01 DW_LNS_copy - 0x0000000000000ee9 141 11 1 0 0 is_stmt - - -0x00000e84: 00 DW_LNE_set_address (0x0000000000000ef1) -0x00000e8b: 05 DW_LNS_set_column (16) -0x00000e8d: 06 DW_LNS_negate_stmt -0x00000e8e: 01 DW_LNS_copy - 0x0000000000000ef1 141 16 1 0 0 - - -0x00000e8f: 00 DW_LNE_set_address (0x0000000000000f07) -0x00000e96: 05 DW_LNS_set_column (4) -0x00000e98: 01 DW_LNS_copy - 0x0000000000000f07 141 4 1 0 0 - - -0x00000e99: 00 DW_LNE_set_address (0x0000000000000f1c) -0x00000ea0: 03 DW_LNS_advance_line (142) -0x00000ea2: 05 DW_LNS_set_column (36) -0x00000ea4: 06 DW_LNS_negate_stmt -0x00000ea5: 01 DW_LNS_copy - 0x0000000000000f1c 142 36 1 0 0 is_stmt - - -0x00000ea6: 00 DW_LNE_set_address (0x0000000000000f24) -0x00000ead: 05 DW_LNS_set_column (20) -0x00000eaf: 06 DW_LNS_negate_stmt -0x00000eb0: 01 DW_LNS_copy - 0x0000000000000f24 142 20 1 0 0 - - -0x00000eb1: 00 DW_LNE_set_address (0x0000000000000f2c) -0x00000eb8: 05 DW_LNS_set_column (13) -0x00000eba: 01 DW_LNS_copy - 0x0000000000000f2c 142 13 1 0 0 - - -0x00000ebb: 00 DW_LNE_set_address (0x0000000000000f34) -0x00000ec2: 03 DW_LNS_advance_line (143) -0x00000ec4: 05 DW_LNS_set_column (11) -0x00000ec6: 06 DW_LNS_negate_stmt -0x00000ec7: 01 DW_LNS_copy - 0x0000000000000f34 143 11 1 0 0 is_stmt - - -0x00000ec8: 00 DW_LNE_set_address (0x0000000000000f3c) -0x00000ecf: 05 DW_LNS_set_column (22) -0x00000ed1: 06 DW_LNS_negate_stmt -0x00000ed2: 01 DW_LNS_copy - 0x0000000000000f3c 143 22 1 0 0 - - -0x00000ed3: 00 DW_LNE_set_address (0x0000000000000f44) -0x00000eda: 05 DW_LNS_set_column (20) -0x00000edc: 01 DW_LNS_copy - 0x0000000000000f44 143 20 1 0 0 - - -0x00000edd: 00 DW_LNE_set_address (0x0000000000000f5a) -0x00000ee4: 05 DW_LNS_set_column (11) -0x00000ee6: 01 DW_LNS_copy - 0x0000000000000f5a 143 11 1 0 0 - - -0x00000ee7: 00 DW_LNE_set_address (0x0000000000000f71) -0x00000eee: 03 DW_LNS_advance_line (144) -0x00000ef0: 05 DW_LNS_set_column (21) -0x00000ef2: 06 DW_LNS_negate_stmt -0x00000ef3: 01 DW_LNS_copy - 0x0000000000000f71 144 21 1 0 0 is_stmt - - -0x00000ef4: 00 DW_LNE_set_address (0x0000000000000f79) -0x00000efb: 05 DW_LNS_set_column (19) -0x00000efd: 06 DW_LNS_negate_stmt -0x00000efe: 01 DW_LNS_copy - 0x0000000000000f79 144 19 1 0 0 - - -0x00000eff: 00 DW_LNE_set_address (0x0000000000000f82) -0x00000f06: 03 DW_LNS_advance_line (145) -0x00000f08: 05 DW_LNS_set_column (15) -0x00000f0a: 06 DW_LNS_negate_stmt -0x00000f0b: 01 DW_LNS_copy - 0x0000000000000f82 145 15 1 0 0 is_stmt - - -0x00000f0c: 00 DW_LNE_set_address (0x0000000000000f8a) -0x00000f13: 05 DW_LNS_set_column (13) -0x00000f15: 06 DW_LNS_negate_stmt -0x00000f16: 01 DW_LNS_copy - 0x0000000000000f8a 145 13 1 0 0 - - -0x00000f17: 00 DW_LNE_set_address (0x0000000000000f92) -0x00000f1e: 03 DW_LNS_advance_line (146) -0x00000f20: 05 DW_LNS_set_column (14) -0x00000f22: 06 DW_LNS_negate_stmt -0x00000f23: 01 DW_LNS_copy - 0x0000000000000f92 146 14 1 0 0 is_stmt - - -0x00000f24: 00 DW_LNE_set_address (0x0000000000000f9a) -0x00000f2b: 05 DW_LNS_set_column (20) -0x00000f2d: 06 DW_LNS_negate_stmt -0x00000f2e: 01 DW_LNS_copy - 0x0000000000000f9a 146 20 1 0 0 - - -0x00000f2f: 00 DW_LNE_set_address (0x0000000000000fa3) -0x00000f36: 05 DW_LNS_set_column (12) -0x00000f38: 01 DW_LNS_copy - 0x0000000000000fa3 146 12 1 0 0 - - -0x00000f39: 00 DW_LNE_set_address (0x0000000000000fab) -0x00000f40: 03 DW_LNS_advance_line (147) -0x00000f42: 06 DW_LNS_negate_stmt -0x00000f43: 01 DW_LNS_copy - 0x0000000000000fab 147 12 1 0 0 is_stmt - - -0x00000f44: 00 DW_LNE_set_address (0x0000000000000fb3) -0x00000f4b: 05 DW_LNS_set_column (7) -0x00000f4d: 06 DW_LNS_negate_stmt -0x00000f4e: 01 DW_LNS_copy - 0x0000000000000fb3 147 7 1 0 0 - - -0x00000f4f: 00 DW_LNE_set_address (0x0000000000000fb8) -0x00000f56: 03 DW_LNS_advance_line (141) -0x00000f58: 05 DW_LNS_set_column (4) -0x00000f5a: 06 DW_LNS_negate_stmt -0x00000f5b: 01 DW_LNS_copy - 0x0000000000000fb8 141 4 1 0 0 is_stmt - - -0x00000f5c: 00 DW_LNE_set_address (0x0000000000000fbe) -0x00000f63: 03 DW_LNS_advance_line (149) -0x00000f65: 05 DW_LNS_set_column (11) -0x00000f67: 01 DW_LNS_copy - 0x0000000000000fbe 149 11 1 0 0 is_stmt - - -0x00000f68: 00 DW_LNE_set_address (0x0000000000000fc6) -0x00000f6f: 05 DW_LNS_set_column (4) -0x00000f71: 06 DW_LNS_negate_stmt -0x00000f72: 01 DW_LNS_copy - 0x0000000000000fc6 149 4 1 0 0 - - -0x00000f73: 00 DW_LNE_set_address (0x0000000000000fde) -0x00000f7a: 00 DW_LNE_end_sequence - 0x0000000000000fde 149 4 1 0 0 end_sequence - - -.debug_str contents: -0x00000000: "clang version 11.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 2d7a8cf90478cd845ffb39763b0e95b7715322d2)" -0x00000095: "tests/fannkuch.cpp" -0x000000a8: "/home/alon/Dev/emscripten" -0x000000c2: "i" -0x000000c4: "int" -0x000000c8: "n" -0x000000ca: "next" -0x000000cf: "worker_args" -0x000000db: "std" -0x000000df: "decltype(nullptr)" -0x000000f1: "nullptr_t" -0x000000fb: "_Z15fannkuch_workerPv" -0x00000111: "fannkuch_worker" -0x00000121: "main" -0x00000126: "_ZL8fannkuchi" -0x00000134: "fannkuch" -0x0000013d: "_arg" -0x00000142: "args" -0x00000147: "perm1" -0x0000014d: "count" -0x00000153: "perm" -0x00000158: "maxflips" -0x00000161: "flips" -0x00000167: "r" -0x00000169: "j" -0x0000016b: "k" -0x0000016d: "tmp" -0x00000171: "p0" -0x00000174: "argc" -0x00000179: "argv" -0x0000017e: "char" -0x00000183: "targs" -0x00000189: "showmax" -0x00000191: "cleanup" - -.debug_ranges contents: -00000000 00000006 00000872 -00000000 00000874 000009a0 -00000000 000009a2 00000fde -00000000 -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (import "env" "memory" (memory $4 256 256)) - (data (i32.const 1024) "Wrong argument.\n\00Pfannkuchen(%d) = %d.\n\00%d\00\n\00") - (import "env" "__indirect_function_table" (table $timport$5 1 funcref)) - (import "env" "malloc" (func $malloc (param i32) (result i32))) - (import "env" "free" (func $free (param i32))) - (import "env" "atoi" (func $atoi (param i32) (result i32))) - (import "env" "printf" (func $printf (param i32 i32) (result i32))) - (global $global$0 (mut i32) (i32.const 5243952)) - (global $global$1 i32 (i32.const 1069)) - (export "__wasm_call_ctors" (func $__wasm_call_ctors)) - (export "main" (func $main)) - (export "__data_end" (global $global$1)) - (func $__wasm_call_ctors (; 4 ;) - ) - (func $fannkuch_worker\28void*\29 (; 5 ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i32) - (local $44 i32) - (local $45 i32) - (local $46 i32) - (local $47 i32) - (local $48 i32) - (local $49 i32) - (local $50 i32) - (local $51 i32) - (local $52 i32) - (local $53 i32) - (local $54 i32) - (local $55 i32) - (local $56 i32) - (local $57 i32) - (local $58 i32) - (local $59 i32) - (local $60 i32) - (local $61 i32) - (local $62 i32) - (local $63 i32) - (local $64 i32) - (local $65 i32) - (local $66 i32) - (local $67 i32) - (local $68 i32) - (local $69 i32) - (local $70 i32) - (local $71 i32) - (local $72 i32) - (local $73 i32) - (local $74 i32) - (local $75 i32) - (local $76 i32) - (local $77 i32) - (local $78 i32) - (local $79 i32) - (local $80 i32) - (local $81 i32) - (local $82 i32) - (local $83 i32) - (local $84 i32) - (local $85 i32) - (local $86 i32) - (local $87 i32) - (local $88 i32) - (local $89 i32) - (local $90 i32) - (local $91 i32) - (local $92 i32) - (local $93 i32) - (local $94 i32) - (local $95 i32) - (local $96 i32) - (local $97 i32) - (local $98 i32) - (local $99 i32) - (local $100 i32) - (local $101 i32) - (local $102 i32) - (local $103 i32) - (local $104 i32) - (local $105 i32) - (local $106 i32) - (local $107 i32) - (local $108 i32) - (local $109 i32) - (local $110 i32) - (local $111 i32) - (local $112 i32) - (local $113 i32) - (local $114 i32) - (local $115 i32) - (local $116 i32) - (local $117 i32) - (local $118 i32) - (local $119 i32) - (local $120 i32) - (local $121 i32) - (local $122 i32) - (local $123 i32) - (local $124 i32) - (local $125 i32) - (local $126 i32) - (local $127 i32) - (local $128 i32) - (local $129 i32) - (local $130 i32) - (local $131 i32) - (local $132 i32) - (local $133 i32) - (local $134 i32) - (local $135 i32) - (local $136 i32) - (local $137 i32) - (local $138 i32) - (local $139 i32) - (local $140 i32) - (local $141 i32) - (local $142 i32) - (local $143 i32) - (local $144 i32) - (local $145 i32) - (local $146 i32) - (local $147 i32) - (local $148 i32) - (local $149 i32) - (local $150 i32) - (local $151 i32) - (local $152 i32) - (local $153 i32) - (local $154 i32) - (local $155 i32) - (local $156 i32) - (local $157 i32) - (local $158 i32) - (local $159 i32) - (local $160 i32) - (local $161 i32) - (local $162 i32) - (local $163 i32) - (local $164 i32) - (local $165 i32) - (local $166 i32) - (local $167 i32) - (local $168 i32) - (local $169 i32) - (local $170 i32) - (local $171 i32) - (local $172 i32) - (local $173 i32) - (local $174 i32) - (local $175 i32) - (local $176 i32) - (local $177 i32) - (local $178 i32) - (local $179 i32) - (local $180 i32) - (local $181 i32) - (local $182 i32) - (local $183 i32) - (local $184 i32) - (local $185 i32) - (local $186 i32) - (local $187 i32) - (local $188 i32) - (local $189 i32) - (local $190 i32) - (local $191 i32) - (local $192 i32) - (local $193 i32) - (local $194 i32) - (local $195 i32) - (local $196 i32) - (local $197 i32) - (local $198 i32) - (local $199 i32) - (local $200 i32) - (local $201 i32) - (local $202 i32) - (local $203 i32) - (local $204 i32) - (local $205 i32) - (local $206 i32) - (local $207 i32) - (local $208 i32) - (local $209 i32) - (local $210 i32) - (local $211 i32) - (local $212 i32) - (local $213 i32) - (local $214 i32) - (local $215 i32) - (local $216 i32) - (local $217 i32) - (local $218 i32) - (local $219 i32) - (local $220 i32) - (local $221 i32) - (local $222 i32) - (local $223 i32) - (local $224 i32) - (local $225 i32) - (local $226 i32) - (local $227 i32) - (local $228 i32) - (local $229 i32) - (local $230 i32) - (local $231 i32) - (local $232 i32) - (local $233 i32) - (local $234 i32) - (local $235 i32) - (local $236 i32) - (local $237 i32) - (local $238 i32) - (local $239 i32) - (local $240 i32) - (local $241 i32) - (local $242 i32) - (local $243 i32) - (local $244 i32) - ;; code offset: 0xc - (local.set $1 - ;; code offset: 0xa - (global.get $global$0) - ) - ;; code offset: 0x11 - (local.set $2 - ;; code offset: 0xe - (i32.const 64) - ) - ;; code offset: 0x18 - (local.set $3 - ;; code offset: 0x17 - (i32.sub - ;; code offset: 0x13 - (local.get $1) - ;; code offset: 0x15 - (local.get $2) - ) - ) - ;; code offset: 0x1c - (global.set $global$0 - ;; code offset: 0x1a - (local.get $3) - ) - ;; code offset: 0x20 - (local.set $4 - ;; code offset: 0x1e - (i32.const 0) - ) - ;; code offset: 0x26 - (i32.store offset=60 - ;; code offset: 0x22 - (local.get $3) - ;; code offset: 0x24 - (local.get $0) - ) - ;; code offset: 0x2e - (local.set $5 - ;; code offset: 0x2b - (i32.load offset=60 - ;; code offset: 0x29 - (local.get $3) - ) - ) - ;; code offset: 0x34 - (i32.store offset=56 - ;; code offset: 0x30 - (local.get $3) - ;; code offset: 0x32 - (local.get $5) - ) - ;; code offset: 0x3b - (i32.store offset=40 - ;; code offset: 0x37 - (local.get $3) - ;; code offset: 0x39 - (local.get $4) - ) - ;; code offset: 0x43 - (local.set $6 - ;; code offset: 0x40 - (i32.load offset=56 - ;; code offset: 0x3e - (local.get $3) - ) - ) - ;; code offset: 0x4a - (local.set $7 - ;; code offset: 0x47 - (i32.load offset=4 - ;; code offset: 0x45 - (local.get $6) - ) - ) - ;; code offset: 0x50 - (i32.store offset=28 - ;; code offset: 0x4c - (local.get $3) - ;; code offset: 0x4e - (local.get $7) - ) - ;; code offset: 0x58 - (local.set $8 - ;; code offset: 0x55 - (i32.load offset=28 - ;; code offset: 0x53 - (local.get $3) - ) - ) - ;; code offset: 0x5c - (local.set $9 - ;; code offset: 0x5a - (i32.const 2) - ) - ;; code offset: 0x63 - (local.set $10 - ;; code offset: 0x62 - (i32.shl - ;; code offset: 0x5e - (local.get $8) - ;; code offset: 0x60 - (local.get $9) - ) - ) - ;; code offset: 0x69 - (local.set $11 - ;; code offset: 0x67 - (call $malloc - ;; code offset: 0x65 - (local.get $10) - ) - ) - ;; code offset: 0x6f - (i32.store offset=52 - ;; code offset: 0x6b - (local.get $3) - ;; code offset: 0x6d - (local.get $11) - ) - ;; code offset: 0x77 - (local.set $12 - ;; code offset: 0x74 - (i32.load offset=28 - ;; code offset: 0x72 - (local.get $3) - ) - ) - ;; code offset: 0x7b - (local.set $13 - ;; code offset: 0x79 - (i32.const 2) - ) - ;; code offset: 0x82 - (local.set $14 - ;; code offset: 0x81 - (i32.shl - ;; code offset: 0x7d - (local.get $12) - ;; code offset: 0x7f - (local.get $13) - ) - ) - ;; code offset: 0x88 - (local.set $15 - ;; code offset: 0x86 - (call $malloc - ;; code offset: 0x84 - (local.get $14) - ) - ) - ;; code offset: 0x8e - (i32.store offset=44 - ;; code offset: 0x8a - (local.get $3) - ;; code offset: 0x8c - (local.get $15) - ) - ;; code offset: 0x96 - (local.set $16 - ;; code offset: 0x93 - (i32.load offset=28 - ;; code offset: 0x91 - (local.get $3) - ) - ) - ;; code offset: 0x9a - (local.set $17 - ;; code offset: 0x98 - (i32.const 2) - ) - ;; code offset: 0xa1 - (local.set $18 - ;; code offset: 0xa0 - (i32.shl - ;; code offset: 0x9c - (local.get $16) - ;; code offset: 0x9e - (local.get $17) - ) - ) - ;; code offset: 0xa7 - (local.set $19 - ;; code offset: 0xa5 - (call $malloc - ;; code offset: 0xa3 - (local.get $18) - ) - ) - ;; code offset: 0xad - (i32.store offset=48 - ;; code offset: 0xa9 - (local.get $3) - ;; code offset: 0xab - (local.get $19) - ) - ;; code offset: 0xb4 - (i32.store offset=32 - ;; code offset: 0xb0 - (local.get $3) - ;; code offset: 0xb2 - (local.get $4) - ) - ;; code offset: 0xb7 - (block $label$1 - ;; code offset: 0xb9 - (loop $label$2 - ;; code offset: 0xc0 - (local.set $20 - ;; code offset: 0xbd - (i32.load offset=32 - ;; code offset: 0xbb - (local.get $3) - ) - ) - ;; code offset: 0xc7 - (local.set $21 - ;; code offset: 0xc4 - (i32.load offset=28 - ;; code offset: 0xc2 - (local.get $3) - ) - ) - ;; code offset: 0xcb - (local.set $22 - ;; code offset: 0xc9 - (local.get $20) - ) - ;; code offset: 0xcf - (local.set $23 - ;; code offset: 0xcd - (local.get $21) - ) - ;; code offset: 0xd6 - (local.set $24 - ;; code offset: 0xd5 - (i32.lt_s - ;; code offset: 0xd1 - (local.get $22) - ;; code offset: 0xd3 - (local.get $23) - ) - ) - ;; code offset: 0xda - (local.set $25 - ;; code offset: 0xd8 - (i32.const 1) - ) - ;; code offset: 0xe1 - (local.set $26 - ;; code offset: 0xe0 - (i32.and - ;; code offset: 0xdc - (local.get $24) - ;; code offset: 0xde - (local.get $25) - ) - ) - ;; code offset: 0xe6 - (br_if $label$1 - ;; code offset: 0xe5 - (i32.eqz - ;; code offset: 0xe3 - (local.get $26) - ) - ) - ;; code offset: 0xed - (local.set $27 - ;; code offset: 0xea - (i32.load offset=32 - ;; code offset: 0xe8 - (local.get $3) - ) - ) - ;; code offset: 0xf4 - (local.set $28 - ;; code offset: 0xf1 - (i32.load offset=52 - ;; code offset: 0xef - (local.get $3) - ) - ) - ;; code offset: 0xfb - (local.set $29 - ;; code offset: 0xf8 - (i32.load offset=32 - ;; code offset: 0xf6 - (local.get $3) - ) - ) - ;; code offset: 0xff - (local.set $30 - ;; code offset: 0xfd - (i32.const 2) - ) - ;; code offset: 0x106 - (local.set $31 - ;; code offset: 0x105 - (i32.shl - ;; code offset: 0x101 - (local.get $29) - ;; code offset: 0x103 - (local.get $30) - ) - ) - ;; code offset: 0x10d - (local.set $32 - ;; code offset: 0x10c - (i32.add - ;; code offset: 0x108 - (local.get $28) - ;; code offset: 0x10a - (local.get $31) - ) - ) - ;; code offset: 0x113 - (i32.store - ;; code offset: 0x10f - (local.get $32) - ;; code offset: 0x111 - (local.get $27) - ) - ;; code offset: 0x11b - (local.set $33 - ;; code offset: 0x118 - (i32.load offset=32 - ;; code offset: 0x116 - (local.get $3) - ) - ) - ;; code offset: 0x11f - (local.set $34 - ;; code offset: 0x11d - (i32.const 1) - ) - ;; code offset: 0x126 - (local.set $35 - ;; code offset: 0x125 - (i32.add - ;; code offset: 0x121 - (local.get $33) - ;; code offset: 0x123 - (local.get $34) - ) - ) - ;; code offset: 0x12c - (i32.store offset=32 - ;; code offset: 0x128 - (local.get $3) - ;; code offset: 0x12a - (local.get $35) - ) - ;; code offset: 0x12f - (br $label$2) - ) - ) - ;; code offset: 0x13a - (local.set $36 - ;; code offset: 0x137 - (i32.load offset=28 - ;; code offset: 0x135 - (local.get $3) - ) - ) - ;; code offset: 0x13e - (local.set $37 - ;; code offset: 0x13c - (i32.const 1) - ) - ;; code offset: 0x145 - (local.set $38 - ;; code offset: 0x144 - (i32.sub - ;; code offset: 0x140 - (local.get $36) - ;; code offset: 0x142 - (local.get $37) - ) - ) - ;; code offset: 0x14c - (local.set $39 - ;; code offset: 0x149 - (i32.load offset=52 - ;; code offset: 0x147 - (local.get $3) - ) - ) - ;; code offset: 0x153 - (local.set $40 - ;; code offset: 0x150 - (i32.load offset=56 - ;; code offset: 0x14e - (local.get $3) - ) - ) - ;; code offset: 0x15a - (local.set $41 - ;; code offset: 0x157 - (i32.load - ;; code offset: 0x155 - (local.get $40) - ) - ) - ;; code offset: 0x15e - (local.set $42 - ;; code offset: 0x15c - (i32.const 2) - ) - ;; code offset: 0x165 - (local.set $43 - ;; code offset: 0x164 - (i32.shl - ;; code offset: 0x160 - (local.get $41) - ;; code offset: 0x162 - (local.get $42) - ) - ) - ;; code offset: 0x16c - (local.set $44 - ;; code offset: 0x16b - (i32.add - ;; code offset: 0x167 - (local.get $39) - ;; code offset: 0x169 - (local.get $43) - ) - ) - ;; code offset: 0x172 - (i32.store - ;; code offset: 0x16e - (local.get $44) - ;; code offset: 0x170 - (local.get $38) - ) - ;; code offset: 0x17a - (local.set $45 - ;; code offset: 0x177 - (i32.load offset=56 - ;; code offset: 0x175 - (local.get $3) - ) - ) - ;; code offset: 0x181 - (local.set $46 - ;; code offset: 0x17e - (i32.load - ;; code offset: 0x17c - (local.get $45) - ) - ) - ;; code offset: 0x188 - (local.set $47 - ;; code offset: 0x185 - (i32.load offset=52 - ;; code offset: 0x183 - (local.get $3) - ) - ) - ;; code offset: 0x18f - (local.set $48 - ;; code offset: 0x18c - (i32.load offset=28 - ;; code offset: 0x18a - (local.get $3) - ) - ) - ;; code offset: 0x193 - (local.set $49 - ;; code offset: 0x191 - (i32.const 1) - ) - ;; code offset: 0x19a - (local.set $50 - ;; code offset: 0x199 - (i32.sub - ;; code offset: 0x195 - (local.get $48) - ;; code offset: 0x197 - (local.get $49) - ) - ) - ;; code offset: 0x19e - (local.set $51 - ;; code offset: 0x19c - (i32.const 2) - ) - ;; code offset: 0x1a5 - (local.set $52 - ;; code offset: 0x1a4 - (i32.shl - ;; code offset: 0x1a0 - (local.get $50) - ;; code offset: 0x1a2 - (local.get $51) - ) - ) - ;; code offset: 0x1ac - (local.set $53 - ;; code offset: 0x1ab - (i32.add - ;; code offset: 0x1a7 - (local.get $47) - ;; code offset: 0x1a9 - (local.get $52) - ) - ) - ;; code offset: 0x1b2 - (i32.store - ;; code offset: 0x1ae - (local.get $53) - ;; code offset: 0x1b0 - (local.get $46) - ) - ;; code offset: 0x1ba - (local.set $54 - ;; code offset: 0x1b7 - (i32.load offset=28 - ;; code offset: 0x1b5 - (local.get $3) - ) - ) - ;; code offset: 0x1c0 - (i32.store offset=24 - ;; code offset: 0x1bc - (local.get $3) - ;; code offset: 0x1be - (local.get $54) - ) - ;; code offset: 0x1c3 - (loop $label$3 (result i32) - ;; code offset: 0x1c5 - (block $label$4 - ;; code offset: 0x1c7 - (loop $label$5 - ;; code offset: 0x1cb - (local.set $55 - ;; code offset: 0x1c9 - (i32.const 1) - ) - ;; code offset: 0x1d2 - (local.set $56 - ;; code offset: 0x1cf - (i32.load offset=24 - ;; code offset: 0x1cd - (local.get $3) - ) - ) - ;; code offset: 0x1d6 - (local.set $57 - ;; code offset: 0x1d4 - (local.get $56) - ) - ;; code offset: 0x1da - (local.set $58 - ;; code offset: 0x1d8 - (local.get $55) - ) - ;; code offset: 0x1e1 - (local.set $59 - ;; code offset: 0x1e0 - (i32.gt_s - ;; code offset: 0x1dc - (local.get $57) - ;; code offset: 0x1de - (local.get $58) - ) - ) - ;; code offset: 0x1e5 - (local.set $60 - ;; code offset: 0x1e3 - (i32.const 1) - ) - ;; code offset: 0x1ec - (local.set $61 - ;; code offset: 0x1eb - (i32.and - ;; code offset: 0x1e7 - (local.get $59) - ;; code offset: 0x1e9 - (local.get $60) - ) - ) - ;; code offset: 0x1f1 - (br_if $label$4 - ;; code offset: 0x1f0 - (i32.eqz - ;; code offset: 0x1ee - (local.get $61) - ) - ) - ;; code offset: 0x1f8 - (local.set $62 - ;; code offset: 0x1f5 - (i32.load offset=24 - ;; code offset: 0x1f3 - (local.get $3) - ) - ) - ;; code offset: 0x1ff - (local.set $63 - ;; code offset: 0x1fc - (i32.load offset=48 - ;; code offset: 0x1fa - (local.get $3) - ) - ) - ;; code offset: 0x206 - (local.set $64 - ;; code offset: 0x203 - (i32.load offset=24 - ;; code offset: 0x201 - (local.get $3) - ) - ) - ;; code offset: 0x20a - (local.set $65 - ;; code offset: 0x208 - (i32.const 1) - ) - ;; code offset: 0x211 - (local.set $66 - ;; code offset: 0x210 - (i32.sub - ;; code offset: 0x20c - (local.get $64) - ;; code offset: 0x20e - (local.get $65) - ) - ) - ;; code offset: 0x215 - (local.set $67 - ;; code offset: 0x213 - (i32.const 2) - ) - ;; code offset: 0x21c - (local.set $68 - ;; code offset: 0x21b - (i32.shl - ;; code offset: 0x217 - (local.get $66) - ;; code offset: 0x219 - (local.get $67) - ) - ) - ;; code offset: 0x223 - (local.set $69 - ;; code offset: 0x222 - (i32.add - ;; code offset: 0x21e - (local.get $63) - ;; code offset: 0x220 - (local.get $68) - ) - ) - ;; code offset: 0x229 - (i32.store - ;; code offset: 0x225 - (local.get $69) - ;; code offset: 0x227 - (local.get $62) - ) - ;; code offset: 0x231 - (local.set $70 - ;; code offset: 0x22e - (i32.load offset=24 - ;; code offset: 0x22c - (local.get $3) - ) - ) - ;; code offset: 0x235 - (local.set $71 - ;; code offset: 0x233 - (i32.const -1) - ) - ;; code offset: 0x23c - (local.set $72 - ;; code offset: 0x23b - (i32.add - ;; code offset: 0x237 - (local.get $70) - ;; code offset: 0x239 - (local.get $71) - ) - ) - ;; code offset: 0x242 - (i32.store offset=24 - ;; code offset: 0x23e - (local.get $3) - ;; code offset: 0x240 - (local.get $72) - ) - ;; code offset: 0x245 - (br $label$5) - ) - ) - ;; code offset: 0x250 - (local.set $73 - ;; code offset: 0x24d - (i32.load offset=52 - ;; code offset: 0x24b - (local.get $3) - ) - ) - ;; code offset: 0x257 - (local.set $74 - ;; code offset: 0x254 - (i32.load - ;; code offset: 0x252 - (local.get $73) - ) - ) - ;; code offset: 0x259 - (block $label$6 - ;; code offset: 0x25e - (br_if $label$6 - ;; code offset: 0x25d - (i32.eqz - ;; code offset: 0x25b - (local.get $74) - ) - ) - ;; code offset: 0x265 - (local.set $75 - ;; code offset: 0x262 - (i32.load offset=52 - ;; code offset: 0x260 - (local.get $3) - ) - ) - ;; code offset: 0x26c - (local.set $76 - ;; code offset: 0x269 - (i32.load offset=28 - ;; code offset: 0x267 - (local.get $3) - ) - ) - ;; code offset: 0x270 - (local.set $77 - ;; code offset: 0x26e - (i32.const 1) - ) - ;; code offset: 0x277 - (local.set $78 - ;; code offset: 0x276 - (i32.sub - ;; code offset: 0x272 - (local.get $76) - ;; code offset: 0x274 - (local.get $77) - ) - ) - ;; code offset: 0x27b - (local.set $79 - ;; code offset: 0x279 - (i32.const 2) - ) - ;; code offset: 0x282 - (local.set $80 - ;; code offset: 0x281 - (i32.shl - ;; code offset: 0x27d - (local.get $78) - ;; code offset: 0x27f - (local.get $79) - ) - ) - ;; code offset: 0x289 - (local.set $81 - ;; code offset: 0x288 - (i32.add - ;; code offset: 0x284 - (local.get $75) - ;; code offset: 0x286 - (local.get $80) - ) - ) - ;; code offset: 0x290 - (local.set $82 - ;; code offset: 0x28d - (i32.load - ;; code offset: 0x28b - (local.get $81) - ) - ) - ;; code offset: 0x297 - (local.set $83 - ;; code offset: 0x294 - (i32.load offset=28 - ;; code offset: 0x292 - (local.get $3) - ) - ) - ;; code offset: 0x29b - (local.set $84 - ;; code offset: 0x299 - (i32.const 1) - ) - ;; code offset: 0x2a2 - (local.set $85 - ;; code offset: 0x2a1 - (i32.sub - ;; code offset: 0x29d - (local.get $83) - ;; code offset: 0x29f - (local.get $84) - ) - ) - ;; code offset: 0x2a6 - (local.set $86 - ;; code offset: 0x2a4 - (local.get $82) - ) - ;; code offset: 0x2aa - (local.set $87 - ;; code offset: 0x2a8 - (local.get $85) - ) - ;; code offset: 0x2b1 - (local.set $88 - ;; code offset: 0x2b0 - (i32.ne - ;; code offset: 0x2ac - (local.get $86) - ;; code offset: 0x2ae - (local.get $87) - ) - ) - ;; code offset: 0x2b5 - (local.set $89 - ;; code offset: 0x2b3 - (i32.const 1) - ) - ;; code offset: 0x2bc - (local.set $90 - ;; code offset: 0x2bb - (i32.and - ;; code offset: 0x2b7 - (local.get $88) - ;; code offset: 0x2b9 - (local.get $89) - ) - ) - ;; code offset: 0x2c1 - (br_if $label$6 - ;; code offset: 0x2c0 - (i32.eqz - ;; code offset: 0x2be - (local.get $90) - ) - ) - ;; code offset: 0x2c5 - (local.set $91 - ;; code offset: 0x2c3 - (i32.const 0) - ) - ;; code offset: 0x2cb - (i32.store offset=32 - ;; code offset: 0x2c7 - (local.get $3) - ;; code offset: 0x2c9 - (local.get $91) - ) - ;; code offset: 0x2ce - (block $label$7 - ;; code offset: 0x2d0 - (loop $label$8 - ;; code offset: 0x2d7 - (local.set $92 - ;; code offset: 0x2d4 - (i32.load offset=32 - ;; code offset: 0x2d2 - (local.get $3) - ) - ) - ;; code offset: 0x2de - (local.set $93 - ;; code offset: 0x2db - (i32.load offset=28 - ;; code offset: 0x2d9 - (local.get $3) - ) - ) - ;; code offset: 0x2e2 - (local.set $94 - ;; code offset: 0x2e0 - (local.get $92) - ) - ;; code offset: 0x2e6 - (local.set $95 - ;; code offset: 0x2e4 - (local.get $93) - ) - ;; code offset: 0x2ed - (local.set $96 - ;; code offset: 0x2ec - (i32.lt_s - ;; code offset: 0x2e8 - (local.get $94) - ;; code offset: 0x2ea - (local.get $95) - ) - ) - ;; code offset: 0x2f1 - (local.set $97 - ;; code offset: 0x2ef - (i32.const 1) - ) - ;; code offset: 0x2f8 - (local.set $98 - ;; code offset: 0x2f7 - (i32.and - ;; code offset: 0x2f3 - (local.get $96) - ;; code offset: 0x2f5 - (local.get $97) - ) - ) - ;; code offset: 0x2fd - (br_if $label$7 - ;; code offset: 0x2fc - (i32.eqz - ;; code offset: 0x2fa - (local.get $98) - ) - ) - ;; code offset: 0x304 - (local.set $99 - ;; code offset: 0x301 - (i32.load offset=52 - ;; code offset: 0x2ff - (local.get $3) - ) - ) - ;; code offset: 0x30b - (local.set $100 - ;; code offset: 0x308 - (i32.load offset=32 - ;; code offset: 0x306 - (local.get $3) - ) - ) - ;; code offset: 0x30f - (local.set $101 - ;; code offset: 0x30d - (i32.const 2) - ) - ;; code offset: 0x316 - (local.set $102 - ;; code offset: 0x315 - (i32.shl - ;; code offset: 0x311 - (local.get $100) - ;; code offset: 0x313 - (local.get $101) - ) - ) - ;; code offset: 0x31d - (local.set $103 - ;; code offset: 0x31c - (i32.add - ;; code offset: 0x318 - (local.get $99) - ;; code offset: 0x31a - (local.get $102) - ) - ) - ;; code offset: 0x324 - (local.set $104 - ;; code offset: 0x321 - (i32.load - ;; code offset: 0x31f - (local.get $103) - ) - ) - ;; code offset: 0x32b - (local.set $105 - ;; code offset: 0x328 - (i32.load offset=44 - ;; code offset: 0x326 - (local.get $3) - ) - ) - ;; code offset: 0x332 - (local.set $106 - ;; code offset: 0x32f - (i32.load offset=32 - ;; code offset: 0x32d - (local.get $3) - ) - ) - ;; code offset: 0x336 - (local.set $107 - ;; code offset: 0x334 - (i32.const 2) - ) - ;; code offset: 0x33d - (local.set $108 - ;; code offset: 0x33c - (i32.shl - ;; code offset: 0x338 - (local.get $106) - ;; code offset: 0x33a - (local.get $107) - ) - ) - ;; code offset: 0x344 - (local.set $109 - ;; code offset: 0x343 - (i32.add - ;; code offset: 0x33f - (local.get $105) - ;; code offset: 0x341 - (local.get $108) - ) - ) - ;; code offset: 0x34a - (i32.store - ;; code offset: 0x346 - (local.get $109) - ;; code offset: 0x348 - (local.get $104) - ) - ;; code offset: 0x352 - (local.set $110 - ;; code offset: 0x34f - (i32.load offset=32 - ;; code offset: 0x34d - (local.get $3) - ) - ) - ;; code offset: 0x356 - (local.set $111 - ;; code offset: 0x354 - (i32.const 1) - ) - ;; code offset: 0x35d - (local.set $112 - ;; code offset: 0x35c - (i32.add - ;; code offset: 0x358 - (local.get $110) - ;; code offset: 0x35a - (local.get $111) - ) - ) - ;; code offset: 0x363 - (i32.store offset=32 - ;; code offset: 0x35f - (local.get $3) - ;; code offset: 0x361 - (local.get $112) - ) - ;; code offset: 0x366 - (br $label$8) - ) - ) - ;; code offset: 0x36e - (local.set $113 - ;; code offset: 0x36c - (i32.const 0) - ) - ;; code offset: 0x374 - (i32.store offset=36 - ;; code offset: 0x370 - (local.get $3) - ;; code offset: 0x372 - (local.get $113) - ) - ;; code offset: 0x37c - (local.set $114 - ;; code offset: 0x379 - (i32.load offset=44 - ;; code offset: 0x377 - (local.get $3) - ) - ) - ;; code offset: 0x383 - (local.set $115 - ;; code offset: 0x380 - (i32.load - ;; code offset: 0x37e - (local.get $114) - ) - ) - ;; code offset: 0x389 - (i32.store offset=16 - ;; code offset: 0x385 - (local.get $3) - ;; code offset: 0x387 - (local.get $115) - ) - ;; code offset: 0x38c - (loop $label$9 - ;; code offset: 0x390 - (local.set $116 - ;; code offset: 0x38e - (i32.const 1) - ) - ;; code offset: 0x396 - (i32.store offset=32 - ;; code offset: 0x392 - (local.get $3) - ;; code offset: 0x394 - (local.get $116) - ) - ;; code offset: 0x39e - (local.set $117 - ;; code offset: 0x39b - (i32.load offset=16 - ;; code offset: 0x399 - (local.get $3) - ) - ) - ;; code offset: 0x3a2 - (local.set $118 - ;; code offset: 0x3a0 - (i32.const 1) - ) - ;; code offset: 0x3a9 - (local.set $119 - ;; code offset: 0x3a8 - (i32.sub - ;; code offset: 0x3a4 - (local.get $117) - ;; code offset: 0x3a6 - (local.get $118) - ) - ) - ;; code offset: 0x3af - (i32.store offset=20 - ;; code offset: 0x3ab - (local.get $3) - ;; code offset: 0x3ad - (local.get $119) - ) - ;; code offset: 0x3b2 - (block $label$10 - ;; code offset: 0x3b4 - (loop $label$11 - ;; code offset: 0x3bb - (local.set $120 - ;; code offset: 0x3b8 - (i32.load offset=32 - ;; code offset: 0x3b6 - (local.get $3) - ) - ) - ;; code offset: 0x3c2 - (local.set $121 - ;; code offset: 0x3bf - (i32.load offset=20 - ;; code offset: 0x3bd - (local.get $3) - ) - ) - ;; code offset: 0x3c6 - (local.set $122 - ;; code offset: 0x3c4 - (local.get $120) - ) - ;; code offset: 0x3ca - (local.set $123 - ;; code offset: 0x3c8 - (local.get $121) - ) - ;; code offset: 0x3d1 - (local.set $124 - ;; code offset: 0x3d0 - (i32.lt_s - ;; code offset: 0x3cc - (local.get $122) - ;; code offset: 0x3ce - (local.get $123) - ) - ) - ;; code offset: 0x3d5 - (local.set $125 - ;; code offset: 0x3d3 - (i32.const 1) - ) - ;; code offset: 0x3dc - (local.set $126 - ;; code offset: 0x3db - (i32.and - ;; code offset: 0x3d7 - (local.get $124) - ;; code offset: 0x3d9 - (local.get $125) - ) - ) - ;; code offset: 0x3e1 - (br_if $label$10 - ;; code offset: 0x3e0 - (i32.eqz - ;; code offset: 0x3de - (local.get $126) - ) - ) - ;; code offset: 0x3e8 - (local.set $127 - ;; code offset: 0x3e5 - (i32.load offset=44 - ;; code offset: 0x3e3 - (local.get $3) - ) - ) - ;; code offset: 0x3ef - (local.set $128 - ;; code offset: 0x3ec - (i32.load offset=32 - ;; code offset: 0x3ea - (local.get $3) - ) - ) - ;; code offset: 0x3f4 - (local.set $129 - ;; code offset: 0x3f2 - (i32.const 2) - ) - ;; code offset: 0x3fe - (local.set $130 - ;; code offset: 0x3fd - (i32.shl - ;; code offset: 0x3f7 - (local.get $128) - ;; code offset: 0x3fa - (local.get $129) - ) - ) - ;; code offset: 0x407 - (local.set $131 - ;; code offset: 0x406 - (i32.add - ;; code offset: 0x401 - (local.get $127) - ;; code offset: 0x403 - (local.get $130) - ) - ) - ;; code offset: 0x410 - (local.set $132 - ;; code offset: 0x40d - (i32.load - ;; code offset: 0x40a - (local.get $131) - ) - ) - ;; code offset: 0x418 - (i32.store offset=12 - ;; code offset: 0x413 - (local.get $3) - ;; code offset: 0x415 - (local.get $132) - ) - ;; code offset: 0x420 - (local.set $133 - ;; code offset: 0x41d - (i32.load offset=44 - ;; code offset: 0x41b - (local.get $3) - ) - ) - ;; code offset: 0x428 - (local.set $134 - ;; code offset: 0x425 - (i32.load offset=20 - ;; code offset: 0x423 - (local.get $3) - ) - ) - ;; code offset: 0x42d - (local.set $135 - ;; code offset: 0x42b - (i32.const 2) - ) - ;; code offset: 0x437 - (local.set $136 - ;; code offset: 0x436 - (i32.shl - ;; code offset: 0x430 - (local.get $134) - ;; code offset: 0x433 - (local.get $135) - ) - ) - ;; code offset: 0x441 - (local.set $137 - ;; code offset: 0x440 - (i32.add - ;; code offset: 0x43a - (local.get $133) - ;; code offset: 0x43d - (local.get $136) - ) - ) - ;; code offset: 0x44a - (local.set $138 - ;; code offset: 0x447 - (i32.load - ;; code offset: 0x444 - (local.get $137) - ) - ) - ;; code offset: 0x452 - (local.set $139 - ;; code offset: 0x44f - (i32.load offset=44 - ;; code offset: 0x44d - (local.get $3) - ) - ) - ;; code offset: 0x45a - (local.set $140 - ;; code offset: 0x457 - (i32.load offset=32 - ;; code offset: 0x455 - (local.get $3) - ) - ) - ;; code offset: 0x45f - (local.set $141 - ;; code offset: 0x45d - (i32.const 2) - ) - ;; code offset: 0x469 - (local.set $142 - ;; code offset: 0x468 - (i32.shl - ;; code offset: 0x462 - (local.get $140) - ;; code offset: 0x465 - (local.get $141) - ) - ) - ;; code offset: 0x473 - (local.set $143 - ;; code offset: 0x472 - (i32.add - ;; code offset: 0x46c - (local.get $139) - ;; code offset: 0x46f - (local.get $142) - ) - ) - ;; code offset: 0x47c - (i32.store - ;; code offset: 0x476 - (local.get $143) - ;; code offset: 0x479 - (local.get $138) - ) - ;; code offset: 0x484 - (local.set $144 - ;; code offset: 0x481 - (i32.load offset=12 - ;; code offset: 0x47f - (local.get $3) - ) - ) - ;; code offset: 0x48c - (local.set $145 - ;; code offset: 0x489 - (i32.load offset=44 - ;; code offset: 0x487 - (local.get $3) - ) - ) - ;; code offset: 0x494 - (local.set $146 - ;; code offset: 0x491 - (i32.load offset=20 - ;; code offset: 0x48f - (local.get $3) - ) - ) - ;; code offset: 0x499 - (local.set $147 - ;; code offset: 0x497 - (i32.const 2) - ) - ;; code offset: 0x4a3 - (local.set $148 - ;; code offset: 0x4a2 - (i32.shl - ;; code offset: 0x49c - (local.get $146) - ;; code offset: 0x49f - (local.get $147) - ) - ) - ;; code offset: 0x4ad - (local.set $149 - ;; code offset: 0x4ac - (i32.add - ;; code offset: 0x4a6 - (local.get $145) - ;; code offset: 0x4a9 - (local.get $148) - ) - ) - ;; code offset: 0x4b6 - (i32.store - ;; code offset: 0x4b0 - (local.get $149) - ;; code offset: 0x4b3 - (local.get $144) - ) - ;; code offset: 0x4be - (local.set $150 - ;; code offset: 0x4bb - (i32.load offset=32 - ;; code offset: 0x4b9 - (local.get $3) - ) - ) - ;; code offset: 0x4c3 - (local.set $151 - ;; code offset: 0x4c1 - (i32.const 1) - ) - ;; code offset: 0x4cd - (local.set $152 - ;; code offset: 0x4cc - (i32.add - ;; code offset: 0x4c6 - (local.get $150) - ;; code offset: 0x4c9 - (local.get $151) - ) - ) - ;; code offset: 0x4d5 - (i32.store offset=32 - ;; code offset: 0x4d0 - (local.get $3) - ;; code offset: 0x4d2 - (local.get $152) - ) - ;; code offset: 0x4dd - (local.set $153 - ;; code offset: 0x4da - (i32.load offset=20 - ;; code offset: 0x4d8 - (local.get $3) - ) - ) - ;; code offset: 0x4e2 - (local.set $154 - ;; code offset: 0x4e0 - (i32.const -1) - ) - ;; code offset: 0x4ec - (local.set $155 - ;; code offset: 0x4eb - (i32.add - ;; code offset: 0x4e5 - (local.get $153) - ;; code offset: 0x4e8 - (local.get $154) - ) - ) - ;; code offset: 0x4f4 - (i32.store offset=20 - ;; code offset: 0x4ef - (local.get $3) - ;; code offset: 0x4f1 - (local.get $155) - ) - ;; code offset: 0x4f7 - (br $label$11) - ) - ) - ;; code offset: 0x502 - (local.set $156 - ;; code offset: 0x4ff - (i32.load offset=36 - ;; code offset: 0x4fd - (local.get $3) - ) - ) - ;; code offset: 0x507 - (local.set $157 - ;; code offset: 0x505 - (i32.const 1) - ) - ;; code offset: 0x511 - (local.set $158 - ;; code offset: 0x510 - (i32.add - ;; code offset: 0x50a - (local.get $156) - ;; code offset: 0x50d - (local.get $157) - ) - ) - ;; code offset: 0x519 - (i32.store offset=36 - ;; code offset: 0x514 - (local.get $3) - ;; code offset: 0x516 - (local.get $158) - ) - ;; code offset: 0x521 - (local.set $159 - ;; code offset: 0x51e - (i32.load offset=44 - ;; code offset: 0x51c - (local.get $3) - ) - ) - ;; code offset: 0x529 - (local.set $160 - ;; code offset: 0x526 - (i32.load offset=16 - ;; code offset: 0x524 - (local.get $3) - ) - ) - ;; code offset: 0x52e - (local.set $161 - ;; code offset: 0x52c - (i32.const 2) - ) - ;; code offset: 0x538 - (local.set $162 - ;; code offset: 0x537 - (i32.shl - ;; code offset: 0x531 - (local.get $160) - ;; code offset: 0x534 - (local.get $161) - ) - ) - ;; code offset: 0x542 - (local.set $163 - ;; code offset: 0x541 - (i32.add - ;; code offset: 0x53b - (local.get $159) - ;; code offset: 0x53e - (local.get $162) - ) - ) - ;; code offset: 0x54b - (local.set $164 - ;; code offset: 0x548 - (i32.load - ;; code offset: 0x545 - (local.get $163) - ) - ) - ;; code offset: 0x553 - (i32.store offset=12 - ;; code offset: 0x54e - (local.get $3) - ;; code offset: 0x550 - (local.get $164) - ) - ;; code offset: 0x55b - (local.set $165 - ;; code offset: 0x558 - (i32.load offset=16 - ;; code offset: 0x556 - (local.get $3) - ) - ) - ;; code offset: 0x563 - (local.set $166 - ;; code offset: 0x560 - (i32.load offset=44 - ;; code offset: 0x55e - (local.get $3) - ) - ) - ;; code offset: 0x56b - (local.set $167 - ;; code offset: 0x568 - (i32.load offset=16 - ;; code offset: 0x566 - (local.get $3) - ) - ) - ;; code offset: 0x570 - (local.set $168 - ;; code offset: 0x56e - (i32.const 2) - ) - ;; code offset: 0x57a - (local.set $169 - ;; code offset: 0x579 - (i32.shl - ;; code offset: 0x573 - (local.get $167) - ;; code offset: 0x576 - (local.get $168) - ) - ) - ;; code offset: 0x584 - (local.set $170 - ;; code offset: 0x583 - (i32.add - ;; code offset: 0x57d - (local.get $166) - ;; code offset: 0x580 - (local.get $169) - ) - ) - ;; code offset: 0x58d - (i32.store - ;; code offset: 0x587 - (local.get $170) - ;; code offset: 0x58a - (local.get $165) - ) - ;; code offset: 0x595 - (local.set $171 - ;; code offset: 0x592 - (i32.load offset=12 - ;; code offset: 0x590 - (local.get $3) - ) - ) - ;; code offset: 0x59d - (i32.store offset=16 - ;; code offset: 0x598 - (local.get $3) - ;; code offset: 0x59a - (local.get $171) - ) - ;; code offset: 0x5a5 - (local.set $172 - ;; code offset: 0x5a2 - (i32.load offset=16 - ;; code offset: 0x5a0 - (local.get $3) - ) - ) - ;; code offset: 0x5ab - (br_if $label$9 - ;; code offset: 0x5a8 - (local.get $172) - ) - ) - ;; code offset: 0x5b3 - (local.set $173 - ;; code offset: 0x5b0 - (i32.load offset=40 - ;; code offset: 0x5ae - (local.get $3) - ) - ) - ;; code offset: 0x5bb - (local.set $174 - ;; code offset: 0x5b8 - (i32.load offset=36 - ;; code offset: 0x5b6 - (local.get $3) - ) - ) - ;; code offset: 0x5c1 - (local.set $175 - ;; code offset: 0x5be - (local.get $173) - ) - ;; code offset: 0x5c7 - (local.set $176 - ;; code offset: 0x5c4 - (local.get $174) - ) - ;; code offset: 0x5d1 - (local.set $177 - ;; code offset: 0x5d0 - (i32.lt_s - ;; code offset: 0x5ca - (local.get $175) - ;; code offset: 0x5cd - (local.get $176) - ) - ) - ;; code offset: 0x5d6 - (local.set $178 - ;; code offset: 0x5d4 - (i32.const 1) - ) - ;; code offset: 0x5e0 - (local.set $179 - ;; code offset: 0x5df - (i32.and - ;; code offset: 0x5d9 - (local.get $177) - ;; code offset: 0x5dc - (local.get $178) - ) - ) - ;; code offset: 0x5e3 - (block $label$12 - ;; code offset: 0x5e9 - (br_if $label$12 - ;; code offset: 0x5e8 - (i32.eqz - ;; code offset: 0x5e5 - (local.get $179) - ) - ) - ;; code offset: 0x5f0 - (local.set $180 - ;; code offset: 0x5ed - (i32.load offset=36 - ;; code offset: 0x5eb - (local.get $3) - ) - ) - ;; code offset: 0x5f8 - (i32.store offset=40 - ;; code offset: 0x5f3 - (local.get $3) - ;; code offset: 0x5f5 - (local.get $180) - ) - ) - ) - ;; code offset: 0x5fd - (loop $label$13 - ;; code offset: 0x604 - (local.set $181 - ;; code offset: 0x601 - (i32.load offset=24 - ;; code offset: 0x5ff - (local.get $3) - ) - ) - ;; code offset: 0x60c - (local.set $182 - ;; code offset: 0x609 - (i32.load offset=28 - ;; code offset: 0x607 - (local.get $3) - ) - ) - ;; code offset: 0x611 - (local.set $183 - ;; code offset: 0x60f - (i32.const 1) - ) - ;; code offset: 0x61b - (local.set $184 - ;; code offset: 0x61a - (i32.sub - ;; code offset: 0x614 - (local.get $182) - ;; code offset: 0x617 - (local.get $183) - ) - ) - ;; code offset: 0x621 - (local.set $185 - ;; code offset: 0x61e - (local.get $181) - ) - ;; code offset: 0x627 - (local.set $186 - ;; code offset: 0x624 - (local.get $184) - ) - ;; code offset: 0x631 - (local.set $187 - ;; code offset: 0x630 - (i32.ge_s - ;; code offset: 0x62a - (local.get $185) - ;; code offset: 0x62d - (local.get $186) - ) - ) - ;; code offset: 0x636 - (local.set $188 - ;; code offset: 0x634 - (i32.const 1) - ) - ;; code offset: 0x640 - (local.set $189 - ;; code offset: 0x63f - (i32.and - ;; code offset: 0x639 - (local.get $187) - ;; code offset: 0x63c - (local.get $188) - ) - ) - ;; code offset: 0x643 - (block $label$14 - ;; code offset: 0x649 - (br_if $label$14 - ;; code offset: 0x648 - (i32.eqz - ;; code offset: 0x645 - (local.get $189) - ) - ) - ;; code offset: 0x650 - (local.set $190 - ;; code offset: 0x64d - (i32.load offset=52 - ;; code offset: 0x64b - (local.get $3) - ) - ) - ;; code offset: 0x656 - (call $free - ;; code offset: 0x653 - (local.get $190) - ) - ;; code offset: 0x65d - (local.set $191 - ;; code offset: 0x65a - (i32.load offset=44 - ;; code offset: 0x658 - (local.get $3) - ) - ) - ;; code offset: 0x663 - (call $free - ;; code offset: 0x660 - (local.get $191) - ) - ;; code offset: 0x66a - (local.set $192 - ;; code offset: 0x667 - (i32.load offset=48 - ;; code offset: 0x665 - (local.get $3) - ) - ) - ;; code offset: 0x670 - (call $free - ;; code offset: 0x66d - (local.get $192) - ) - ;; code offset: 0x677 - (local.set $193 - ;; code offset: 0x674 - (i32.load offset=40 - ;; code offset: 0x672 - (local.get $3) - ) - ) - ;; code offset: 0x67d - (local.set $194 - ;; code offset: 0x67a - (i32.const 64) - ) - ;; code offset: 0x686 - (local.set $195 - ;; code offset: 0x685 - (i32.add - ;; code offset: 0x680 - (local.get $3) - ;; code offset: 0x682 - (local.get $194) - ) - ) - ;; code offset: 0x68c - (global.set $global$0 - ;; code offset: 0x689 - (local.get $195) - ) - ;; code offset: 0x691 - (return - ;; code offset: 0x68e - (local.get $193) - ) - ) - ;; code offset: 0x695 - (local.set $196 - ;; code offset: 0x693 - (i32.const 0) - ) - ;; code offset: 0x69d - (local.set $197 - ;; code offset: 0x69a - (i32.load offset=52 - ;; code offset: 0x698 - (local.get $3) - ) - ) - ;; code offset: 0x6a6 - (local.set $198 - ;; code offset: 0x6a3 - (i32.load - ;; code offset: 0x6a0 - (local.get $197) - ) - ) - ;; code offset: 0x6ae - (i32.store offset=8 - ;; code offset: 0x6a9 - (local.get $3) - ;; code offset: 0x6ab - (local.get $198) - ) - ;; code offset: 0x6b6 - (i32.store offset=32 - ;; code offset: 0x6b1 - (local.get $3) - ;; code offset: 0x6b3 - (local.get $196) - ) - ;; code offset: 0x6b9 - (block $label$15 - ;; code offset: 0x6bb - (loop $label$16 - ;; code offset: 0x6c2 - (local.set $199 - ;; code offset: 0x6bf - (i32.load offset=32 - ;; code offset: 0x6bd - (local.get $3) - ) - ) - ;; code offset: 0x6ca - (local.set $200 - ;; code offset: 0x6c7 - (i32.load offset=24 - ;; code offset: 0x6c5 - (local.get $3) - ) - ) - ;; code offset: 0x6d0 - (local.set $201 - ;; code offset: 0x6cd - (local.get $199) - ) - ;; code offset: 0x6d6 - (local.set $202 - ;; code offset: 0x6d3 - (local.get $200) - ) - ;; code offset: 0x6e0 - (local.set $203 - ;; code offset: 0x6df - (i32.lt_s - ;; code offset: 0x6d9 - (local.get $201) - ;; code offset: 0x6dc - (local.get $202) - ) - ) - ;; code offset: 0x6e5 - (local.set $204 - ;; code offset: 0x6e3 - (i32.const 1) - ) - ;; code offset: 0x6ef - (local.set $205 - ;; code offset: 0x6ee - (i32.and - ;; code offset: 0x6e8 - (local.get $203) - ;; code offset: 0x6eb - (local.get $204) - ) - ) - ;; code offset: 0x6f6 - (br_if $label$15 - ;; code offset: 0x6f5 - (i32.eqz - ;; code offset: 0x6f2 - (local.get $205) - ) - ) - ;; code offset: 0x6fd - (local.set $206 - ;; code offset: 0x6fa - (i32.load offset=52 - ;; code offset: 0x6f8 - (local.get $3) - ) - ) - ;; code offset: 0x705 - (local.set $207 - ;; code offset: 0x702 - (i32.load offset=32 - ;; code offset: 0x700 - (local.get $3) - ) - ) - ;; code offset: 0x70a - (local.set $208 - ;; code offset: 0x708 - (i32.const 1) - ) - ;; code offset: 0x714 - (local.set $209 - ;; code offset: 0x713 - (i32.add - ;; code offset: 0x70d - (local.get $207) - ;; code offset: 0x710 - (local.get $208) - ) - ) - ;; code offset: 0x719 - (local.set $210 - ;; code offset: 0x717 - (i32.const 2) - ) - ;; code offset: 0x723 - (local.set $211 - ;; code offset: 0x722 - (i32.shl - ;; code offset: 0x71c - (local.get $209) - ;; code offset: 0x71f - (local.get $210) - ) - ) - ;; code offset: 0x72d - (local.set $212 - ;; code offset: 0x72c - (i32.add - ;; code offset: 0x726 - (local.get $206) - ;; code offset: 0x729 - (local.get $211) - ) - ) - ;; code offset: 0x736 - (local.set $213 - ;; code offset: 0x733 - (i32.load - ;; code offset: 0x730 - (local.get $212) - ) - ) - ;; code offset: 0x73e - (local.set $214 - ;; code offset: 0x73b - (i32.load offset=52 - ;; code offset: 0x739 - (local.get $3) - ) - ) - ;; code offset: 0x746 - (local.set $215 - ;; code offset: 0x743 - (i32.load offset=32 - ;; code offset: 0x741 - (local.get $3) - ) - ) - ;; code offset: 0x74b - (local.set $216 - ;; code offset: 0x749 - (i32.const 2) - ) - ;; code offset: 0x755 - (local.set $217 - ;; code offset: 0x754 - (i32.shl - ;; code offset: 0x74e - (local.get $215) - ;; code offset: 0x751 - (local.get $216) - ) - ) - ;; code offset: 0x75f - (local.set $218 - ;; code offset: 0x75e - (i32.add - ;; code offset: 0x758 - (local.get $214) - ;; code offset: 0x75b - (local.get $217) - ) - ) - ;; code offset: 0x768 - (i32.store - ;; code offset: 0x762 - (local.get $218) - ;; code offset: 0x765 - (local.get $213) - ) - ;; code offset: 0x770 - (local.set $219 - ;; code offset: 0x76d - (i32.load offset=32 - ;; code offset: 0x76b - (local.get $3) - ) - ) - ;; code offset: 0x775 - (local.set $220 - ;; code offset: 0x773 - (i32.const 1) - ) - ;; code offset: 0x77f - (local.set $221 - ;; code offset: 0x77e - (i32.add - ;; code offset: 0x778 - (local.get $219) - ;; code offset: 0x77b - (local.get $220) - ) - ) - ;; code offset: 0x787 - (i32.store offset=32 - ;; code offset: 0x782 - (local.get $3) - ;; code offset: 0x784 - (local.get $221) - ) - ;; code offset: 0x78a - (br $label$16) - ) - ) - ;; code offset: 0x792 - (local.set $222 - ;; code offset: 0x790 - (i32.const 0) - ) - ;; code offset: 0x79a - (local.set $223 - ;; code offset: 0x797 - (i32.load offset=8 - ;; code offset: 0x795 - (local.get $3) - ) - ) - ;; code offset: 0x7a2 - (local.set $224 - ;; code offset: 0x79f - (i32.load offset=52 - ;; code offset: 0x79d - (local.get $3) - ) - ) - ;; code offset: 0x7aa - (local.set $225 - ;; code offset: 0x7a7 - (i32.load offset=32 - ;; code offset: 0x7a5 - (local.get $3) - ) - ) - ;; code offset: 0x7af - (local.set $226 - ;; code offset: 0x7ad - (i32.const 2) - ) - ;; code offset: 0x7b9 - (local.set $227 - ;; code offset: 0x7b8 - (i32.shl - ;; code offset: 0x7b2 - (local.get $225) - ;; code offset: 0x7b5 - (local.get $226) - ) - ) - ;; code offset: 0x7c3 - (local.set $228 - ;; code offset: 0x7c2 - (i32.add - ;; code offset: 0x7bc - (local.get $224) - ;; code offset: 0x7bf - (local.get $227) - ) - ) - ;; code offset: 0x7cc - (i32.store - ;; code offset: 0x7c6 - (local.get $228) - ;; code offset: 0x7c9 - (local.get $223) - ) - ;; code offset: 0x7d4 - (local.set $229 - ;; code offset: 0x7d1 - (i32.load offset=48 - ;; code offset: 0x7cf - (local.get $3) - ) - ) - ;; code offset: 0x7dc - (local.set $230 - ;; code offset: 0x7d9 - (i32.load offset=24 - ;; code offset: 0x7d7 - (local.get $3) - ) - ) - ;; code offset: 0x7e1 - (local.set $231 - ;; code offset: 0x7df - (i32.const 2) - ) - ;; code offset: 0x7eb - (local.set $232 - ;; code offset: 0x7ea - (i32.shl - ;; code offset: 0x7e4 - (local.get $230) - ;; code offset: 0x7e7 - (local.get $231) - ) - ) - ;; code offset: 0x7f5 - (local.set $233 - ;; code offset: 0x7f4 - (i32.add - ;; code offset: 0x7ee - (local.get $229) - ;; code offset: 0x7f1 - (local.get $232) - ) - ) - ;; code offset: 0x7fe - (local.set $234 - ;; code offset: 0x7fb - (i32.load - ;; code offset: 0x7f8 - (local.get $233) - ) - ) - ;; code offset: 0x803 - (local.set $235 - ;; code offset: 0x801 - (i32.const -1) - ) - ;; code offset: 0x80d - (local.set $236 - ;; code offset: 0x80c - (i32.add - ;; code offset: 0x806 - (local.get $234) - ;; code offset: 0x809 - (local.get $235) - ) - ) - ;; code offset: 0x816 - (i32.store - ;; code offset: 0x810 - (local.get $233) - ;; code offset: 0x813 - (local.get $236) - ) - ;; code offset: 0x81c - (local.set $237 - ;; code offset: 0x819 - (local.get $236) - ) - ;; code offset: 0x822 - (local.set $238 - ;; code offset: 0x81f - (local.get $222) - ) - ;; code offset: 0x82c - (local.set $239 - ;; code offset: 0x82b - (i32.gt_s - ;; code offset: 0x825 - (local.get $237) - ;; code offset: 0x828 - (local.get $238) - ) - ) - ;; code offset: 0x831 - (local.set $240 - ;; code offset: 0x82f - (i32.const 1) - ) - ;; code offset: 0x83b - (local.set $241 - ;; code offset: 0x83a - (i32.and - ;; code offset: 0x834 - (local.get $239) - ;; code offset: 0x837 - (local.get $240) - ) - ) - ;; code offset: 0x83e - (block $label$17 - (block $label$18 - ;; code offset: 0x846 - (br_if $label$18 - ;; code offset: 0x845 - (i32.eqz - ;; code offset: 0x842 - (local.get $241) - ) - ) - ;; code offset: 0x848 - (br $label$17) - ) - ;; code offset: 0x850 - (local.set $242 - ;; code offset: 0x84d - (i32.load offset=24 - ;; code offset: 0x84b - (local.get $3) - ) - ) - ;; code offset: 0x855 - (local.set $243 - ;; code offset: 0x853 - (i32.const 1) - ) - ;; code offset: 0x85f - (local.set $244 - ;; code offset: 0x85e - (i32.add - ;; code offset: 0x858 - (local.get $242) - ;; code offset: 0x85b - (local.get $243) - ) - ) - ;; code offset: 0x867 - (i32.store offset=24 - ;; code offset: 0x862 - (local.get $3) - ;; code offset: 0x864 - (local.get $244) - ) - ;; code offset: 0x86a - (br $label$13) - ) - ) - ;; code offset: 0x86e - (br $label$3) - ) - ) - (func $main (; 6 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - ;; code offset: 0x879 - (local.set $2 - ;; code offset: 0x877 - (global.get $global$0) - ) - ;; code offset: 0x87d - (local.set $3 - ;; code offset: 0x87b - (i32.const 32) - ) - ;; code offset: 0x884 - (local.set $4 - ;; code offset: 0x883 - (i32.sub - ;; code offset: 0x87f - (local.get $2) - ;; code offset: 0x881 - (local.get $3) - ) - ) - ;; code offset: 0x888 - (global.set $global$0 - ;; code offset: 0x886 - (local.get $4) - ) - ;; code offset: 0x88c - (local.set $5 - ;; code offset: 0x88a - (i32.const 1) - ) - ;; code offset: 0x890 - (local.set $6 - ;; code offset: 0x88e - (i32.const 0) - ) - ;; code offset: 0x896 - (i32.store offset=28 - ;; code offset: 0x892 - (local.get $4) - ;; code offset: 0x894 - (local.get $6) - ) - ;; code offset: 0x89d - (i32.store offset=24 - ;; code offset: 0x899 - (local.get $4) - ;; code offset: 0x89b - (local.get $0) - ) - ;; code offset: 0x8a4 - (i32.store offset=20 - ;; code offset: 0x8a0 - (local.get $4) - ;; code offset: 0x8a2 - (local.get $1) - ) - ;; code offset: 0x8ac - (local.set $7 - ;; code offset: 0x8a9 - (i32.load offset=24 - ;; code offset: 0x8a7 - (local.get $4) - ) - ) - ;; code offset: 0x8b0 - (local.set $8 - ;; code offset: 0x8ae - (local.get $7) - ) - ;; code offset: 0x8b4 - (local.set $9 - ;; code offset: 0x8b2 - (local.get $5) - ) - ;; code offset: 0x8bb - (local.set $10 - ;; code offset: 0x8ba - (i32.gt_s - ;; code offset: 0x8b6 - (local.get $8) - ;; code offset: 0x8b8 - (local.get $9) - ) - ) - ;; code offset: 0x8bf - (local.set $11 - ;; code offset: 0x8bd - (i32.const 1) - ) - ;; code offset: 0x8c6 - (local.set $12 - ;; code offset: 0x8c5 - (i32.and - ;; code offset: 0x8c1 - (local.get $10) - ;; code offset: 0x8c3 - (local.get $11) - ) - ) - ;; code offset: 0x8c8 - (block $label$1 - (block $label$2 - ;; code offset: 0x8cf - (br_if $label$2 - ;; code offset: 0x8ce - (i32.eqz - ;; code offset: 0x8cc - (local.get $12) - ) - ) - ;; code offset: 0x8d6 - (local.set $13 - ;; code offset: 0x8d3 - (i32.load offset=20 - ;; code offset: 0x8d1 - (local.get $4) - ) - ) - ;; code offset: 0x8dd - (local.set $14 - ;; code offset: 0x8da - (i32.load offset=4 - ;; code offset: 0x8d8 - (local.get $13) - ) - ) - ;; code offset: 0x8e3 - (local.set $15 - ;; code offset: 0x8e1 - (call $atoi - ;; code offset: 0x8df - (local.get $14) - ) - ) - ;; code offset: 0x8e7 - (local.set $16 - ;; code offset: 0x8e5 - (local.get $15) - ) - ;; code offset: 0x8e9 - (br $label$1) - ) - ;; code offset: 0x8ee - (local.set $17 - ;; code offset: 0x8ec - (i32.const 0) - ) - ;; code offset: 0x8f2 - (local.set $16 - ;; code offset: 0x8f0 - (local.get $17) - ) - ) - ;; code offset: 0x8f7 - (local.set $18 - ;; code offset: 0x8f5 - (local.get $16) - ) - ;; code offset: 0x8fb - (local.set $19 - ;; code offset: 0x8f9 - (i32.const 1) - ) - ;; code offset: 0x901 - (i32.store offset=16 - ;; code offset: 0x8fd - (local.get $4) - ;; code offset: 0x8ff - (local.get $18) - ) - ;; code offset: 0x909 - (local.set $20 - ;; code offset: 0x906 - (i32.load offset=16 - ;; code offset: 0x904 - (local.get $4) - ) - ) - ;; code offset: 0x90d - (local.set $21 - ;; code offset: 0x90b - (local.get $20) - ) - ;; code offset: 0x911 - (local.set $22 - ;; code offset: 0x90f - (local.get $19) - ) - ;; code offset: 0x918 - (local.set $23 - ;; code offset: 0x917 - (i32.lt_s - ;; code offset: 0x913 - (local.get $21) - ;; code offset: 0x915 - (local.get $22) - ) - ) - ;; code offset: 0x91c - (local.set $24 - ;; code offset: 0x91a - (i32.const 1) - ) - ;; code offset: 0x923 - (local.set $25 - ;; code offset: 0x922 - (i32.and - ;; code offset: 0x91e - (local.get $23) - ;; code offset: 0x920 - (local.get $24) - ) - ) - ;; code offset: 0x925 - (block $label$3 - (block $label$4 - ;; code offset: 0x92c - (br_if $label$4 - ;; code offset: 0x92b - (i32.eqz - ;; code offset: 0x929 - (local.get $25) - ) - ) - ;; code offset: 0x931 - (local.set $26 - ;; code offset: 0x92e - (i32.const 1024) - ) - ;; code offset: 0x935 - (local.set $27 - ;; code offset: 0x933 - (i32.const 0) - ) - ;; code offset: 0x93d - (drop - ;; code offset: 0x93b - (call $printf - ;; code offset: 0x937 - (local.get $26) - ;; code offset: 0x939 - (local.get $27) - ) - ) - ;; code offset: 0x940 - (local.set $28 - ;; code offset: 0x93e - (i32.const 1) - ) - ;; code offset: 0x946 - (i32.store offset=28 - ;; code offset: 0x942 - (local.get $4) - ;; code offset: 0x944 - (local.get $28) - ) - ;; code offset: 0x949 - (br $label$3) - ) - ;; code offset: 0x951 - (local.set $29 - ;; code offset: 0x94e - (i32.load offset=16 - ;; code offset: 0x94c - (local.get $4) - ) - ) - ;; code offset: 0x958 - (local.set $30 - ;; code offset: 0x955 - (i32.load offset=16 - ;; code offset: 0x953 - (local.get $4) - ) - ) - ;; code offset: 0x95e - (local.set $31 - ;; code offset: 0x95c - (call $fannkuch\28int\29 - ;; code offset: 0x95a - (local.get $30) - ) - ) - ;; code offset: 0x964 - (i32.store offset=4 - ;; code offset: 0x960 - (local.get $4) - ;; code offset: 0x962 - (local.get $31) - ) - ;; code offset: 0x96b - (i32.store - ;; code offset: 0x967 - (local.get $4) - ;; code offset: 0x969 - (local.get $29) - ) - ;; code offset: 0x971 - (local.set $32 - ;; code offset: 0x96e - (i32.const 1041) - ) - ;; code offset: 0x979 - (drop - ;; code offset: 0x977 - (call $printf - ;; code offset: 0x973 - (local.get $32) - ;; code offset: 0x975 - (local.get $4) - ) - ) - ;; code offset: 0x97c - (local.set $33 - ;; code offset: 0x97a - (i32.const 0) - ) - ;; code offset: 0x982 - (i32.store offset=28 - ;; code offset: 0x97e - (local.get $4) - ;; code offset: 0x980 - (local.get $33) - ) - ) - ;; code offset: 0x98b - (local.set $34 - ;; code offset: 0x988 - (i32.load offset=28 - ;; code offset: 0x986 - (local.get $4) - ) - ) - ;; code offset: 0x98f - (local.set $35 - ;; code offset: 0x98d - (i32.const 32) - ) - ;; code offset: 0x996 - (local.set $36 - ;; code offset: 0x995 - (i32.add - ;; code offset: 0x991 - (local.get $4) - ;; code offset: 0x993 - (local.get $35) - ) - ) - ;; code offset: 0x99a - (global.set $global$0 - ;; code offset: 0x998 - (local.get $36) - ) - ;; code offset: 0x99e - (return - ;; code offset: 0x99c - (local.get $34) - ) - ) - (func $fannkuch\28int\29 (; 7 ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - (local $19 i32) - (local $20 i32) - (local $21 i32) - (local $22 i32) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) - (local $41 i32) - (local $42 i32) - (local $43 i32) - (local $44 i32) - (local $45 i32) - (local $46 i32) - (local $47 i32) - (local $48 i32) - (local $49 i32) - (local $50 i32) - (local $51 i32) - (local $52 i32) - (local $53 i32) - (local $54 i32) - (local $55 i32) - (local $56 i32) - (local $57 i32) - (local $58 i32) - (local $59 i32) - (local $60 i32) - (local $61 i32) - (local $62 i32) - (local $63 i32) - (local $64 i32) - (local $65 i32) - (local $66 i32) - (local $67 i32) - (local $68 i32) - (local $69 i32) - (local $70 i32) - (local $71 i32) - (local $72 i32) - (local $73 i32) - (local $74 i32) - (local $75 i32) - (local $76 i32) - (local $77 i32) - (local $78 i32) - (local $79 i32) - (local $80 i32) - (local $81 i32) - (local $82 i32) - (local $83 i32) - (local $84 i32) - (local $85 i32) - (local $86 i32) - (local $87 i32) - (local $88 i32) - (local $89 i32) - (local $90 i32) - (local $91 i32) - (local $92 i32) - (local $93 i32) - (local $94 i32) - (local $95 i32) - (local $96 i32) - (local $97 i32) - (local $98 i32) - (local $99 i32) - (local $100 i32) - (local $101 i32) - (local $102 i32) - (local $103 i32) - (local $104 i32) - (local $105 i32) - (local $106 i32) - (local $107 i32) - (local $108 i32) - (local $109 i32) - (local $110 i32) - (local $111 i32) - (local $112 i32) - (local $113 i32) - (local $114 i32) - (local $115 i32) - (local $116 i32) - (local $117 i32) - (local $118 i32) - (local $119 i32) - (local $120 i32) - (local $121 i32) - (local $122 i32) - (local $123 i32) - (local $124 i32) - (local $125 i32) - (local $126 i32) - (local $127 i32) - (local $128 i32) - (local $129 i32) - (local $130 i32) - (local $131 i32) - (local $132 i32) - (local $133 i32) - (local $134 i32) - (local $135 i32) - (local $136 i32) - (local $137 i32) - (local $138 i32) - (local $139 i32) - (local $140 i32) - (local $141 i32) - (local $142 i32) - (local $143 i32) - (local $144 i32) - (local $145 i32) - (local $146 i32) - (local $147 i32) - (local $148 i32) - (local $149 i32) - (local $150 i32) - (local $151 i32) - (local $152 i32) - (local $153 i32) - (local $154 i32) - (local $155 i32) - (local $156 i32) - (local $157 i32) - (local $158 i32) - (local $159 i32) - (local $160 i32) - (local $161 i32) - (local $162 i32) - (local $163 i32) - (local $164 i32) - (local $165 i32) - (local $166 i32) - (local $167 i32) - (local $168 i32) - (local $169 i32) - (local $170 i32) - (local $171 i32) - (local $172 i32) - (local $173 i32) - (local $174 i32) - (local $175 i32) - (local $176 i32) - (local $177 i32) - (local $178 i32) - (local $179 i32) - ;; code offset: 0x9a8 - (local.set $1 - ;; code offset: 0x9a6 - (global.get $global$0) - ) - ;; code offset: 0x9ac - (local.set $2 - ;; code offset: 0x9aa - (i32.const 48) - ) - ;; code offset: 0x9b3 - (local.set $3 - ;; code offset: 0x9b2 - (i32.sub - ;; code offset: 0x9ae - (local.get $1) - ;; code offset: 0x9b0 - (local.get $2) - ) - ) - ;; code offset: 0x9b7 - (global.set $global$0 - ;; code offset: 0x9b5 - (local.get $3) - ) - ;; code offset: 0x9bb - (local.set $4 - ;; code offset: 0x9b9 - (i32.const 0) - ) - ;; code offset: 0x9bf - (local.set $5 - ;; code offset: 0x9bd - (i32.const 30) - ) - ;; code offset: 0x9c5 - (i32.store offset=44 - ;; code offset: 0x9c1 - (local.get $3) - ;; code offset: 0x9c3 - (local.get $0) - ) - ;; code offset: 0x9cc - (i32.store offset=32 - ;; code offset: 0x9c8 - (local.get $3) - ;; code offset: 0x9ca - (local.get $5) - ) - ;; code offset: 0x9d3 - (i32.store offset=40 - ;; code offset: 0x9cf - (local.get $3) - ;; code offset: 0x9d1 - (local.get $4) - ) - ;; code offset: 0x9da - (i32.store offset=20 - ;; code offset: 0x9d6 - (local.get $3) - ;; code offset: 0x9d8 - (local.get $4) - ) - ;; code offset: 0x9dd - (block $label$1 - ;; code offset: 0x9df - (loop $label$2 - ;; code offset: 0x9e6 - (local.set $6 - ;; code offset: 0x9e3 - (i32.load offset=20 - ;; code offset: 0x9e1 - (local.get $3) - ) - ) - ;; code offset: 0x9ed - (local.set $7 - ;; code offset: 0x9ea - (i32.load offset=44 - ;; code offset: 0x9e8 - (local.get $3) - ) - ) - ;; code offset: 0x9f1 - (local.set $8 - ;; code offset: 0x9ef - (i32.const 1) - ) - ;; code offset: 0x9f8 - (local.set $9 - ;; code offset: 0x9f7 - (i32.sub - ;; code offset: 0x9f3 - (local.get $7) - ;; code offset: 0x9f5 - (local.get $8) - ) - ) - ;; code offset: 0x9fc - (local.set $10 - ;; code offset: 0x9fa - (local.get $6) - ) - ;; code offset: 0xa00 - (local.set $11 - ;; code offset: 0x9fe - (local.get $9) - ) - ;; code offset: 0xa07 - (local.set $12 - ;; code offset: 0xa06 - (i32.lt_s - ;; code offset: 0xa02 - (local.get $10) - ;; code offset: 0xa04 - (local.get $11) - ) - ) - ;; code offset: 0xa0b - (local.set $13 - ;; code offset: 0xa09 - (i32.const 1) - ) - ;; code offset: 0xa12 - (local.set $14 - ;; code offset: 0xa11 - (i32.and - ;; code offset: 0xa0d - (local.get $12) - ;; code offset: 0xa0f - (local.get $13) - ) - ) - ;; code offset: 0xa17 - (br_if $label$1 - ;; code offset: 0xa16 - (i32.eqz - ;; code offset: 0xa14 - (local.get $14) - ) - ) - ;; code offset: 0xa1b - (local.set $15 - ;; code offset: 0xa19 - (i32.const 12) - ) - ;; code offset: 0xa21 - (local.set $16 - ;; code offset: 0xa1f - (call $malloc - ;; code offset: 0xa1d - (local.get $15) - ) - ) - ;; code offset: 0xa27 - (i32.store offset=36 - ;; code offset: 0xa23 - (local.get $3) - ;; code offset: 0xa25 - (local.get $16) - ) - ;; code offset: 0xa2f - (local.set $17 - ;; code offset: 0xa2c - (i32.load offset=20 - ;; code offset: 0xa2a - (local.get $3) - ) - ) - ;; code offset: 0xa36 - (local.set $18 - ;; code offset: 0xa33 - (i32.load offset=36 - ;; code offset: 0xa31 - (local.get $3) - ) - ) - ;; code offset: 0xa3c - (i32.store - ;; code offset: 0xa38 - (local.get $18) - ;; code offset: 0xa3a - (local.get $17) - ) - ;; code offset: 0xa44 - (local.set $19 - ;; code offset: 0xa41 - (i32.load offset=44 - ;; code offset: 0xa3f - (local.get $3) - ) - ) - ;; code offset: 0xa4b - (local.set $20 - ;; code offset: 0xa48 - (i32.load offset=36 - ;; code offset: 0xa46 - (local.get $3) - ) - ) - ;; code offset: 0xa51 - (i32.store offset=4 - ;; code offset: 0xa4d - (local.get $20) - ;; code offset: 0xa4f - (local.get $19) - ) - ;; code offset: 0xa59 - (local.set $21 - ;; code offset: 0xa56 - (i32.load offset=40 - ;; code offset: 0xa54 - (local.get $3) - ) - ) - ;; code offset: 0xa60 - (local.set $22 - ;; code offset: 0xa5d - (i32.load offset=36 - ;; code offset: 0xa5b - (local.get $3) - ) - ) - ;; code offset: 0xa66 - (i32.store offset=8 - ;; code offset: 0xa62 - (local.get $22) - ;; code offset: 0xa64 - (local.get $21) - ) - ;; code offset: 0xa6e - (local.set $23 - ;; code offset: 0xa6b - (i32.load offset=36 - ;; code offset: 0xa69 - (local.get $3) - ) - ) - ;; code offset: 0xa74 - (i32.store offset=40 - ;; code offset: 0xa70 - (local.get $3) - ;; code offset: 0xa72 - (local.get $23) - ) - ;; code offset: 0xa7c - (local.set $24 - ;; code offset: 0xa79 - (i32.load offset=20 - ;; code offset: 0xa77 - (local.get $3) - ) - ) - ;; code offset: 0xa80 - (local.set $25 - ;; code offset: 0xa7e - (i32.const 1) - ) - ;; code offset: 0xa87 - (local.set $26 - ;; code offset: 0xa86 - (i32.add - ;; code offset: 0xa82 - (local.get $24) - ;; code offset: 0xa84 - (local.get $25) - ) - ) - ;; code offset: 0xa8d - (i32.store offset=20 - ;; code offset: 0xa89 - (local.get $3) - ;; code offset: 0xa8b - (local.get $26) - ) - ;; code offset: 0xa90 - (br $label$2) - ) - ) - ;; code offset: 0xa98 - (local.set $27 - ;; code offset: 0xa96 - (i32.const 0) - ) - ;; code offset: 0xa9f - (local.set $28 - ;; code offset: 0xa9c - (i32.load offset=44 - ;; code offset: 0xa9a - (local.get $3) - ) - ) - ;; code offset: 0xaa3 - (local.set $29 - ;; code offset: 0xaa1 - (i32.const 2) - ) - ;; code offset: 0xaaa - (local.set $30 - ;; code offset: 0xaa9 - (i32.shl - ;; code offset: 0xaa5 - (local.get $28) - ;; code offset: 0xaa7 - (local.get $29) - ) - ) - ;; code offset: 0xab0 - (local.set $31 - ;; code offset: 0xaae - (call $malloc - ;; code offset: 0xaac - (local.get $30) - ) - ) - ;; code offset: 0xab6 - (i32.store offset=28 - ;; code offset: 0xab2 - (local.get $3) - ;; code offset: 0xab4 - (local.get $31) - ) - ;; code offset: 0xabe - (local.set $32 - ;; code offset: 0xabb - (i32.load offset=44 - ;; code offset: 0xab9 - (local.get $3) - ) - ) - ;; code offset: 0xac2 - (local.set $33 - ;; code offset: 0xac0 - (i32.const 2) - ) - ;; code offset: 0xac9 - (local.set $34 - ;; code offset: 0xac8 - (i32.shl - ;; code offset: 0xac4 - (local.get $32) - ;; code offset: 0xac6 - (local.get $33) - ) - ) - ;; code offset: 0xacf - (local.set $35 - ;; code offset: 0xacd - (call $malloc - ;; code offset: 0xacb - (local.get $34) - ) - ) - ;; code offset: 0xad5 - (i32.store offset=24 - ;; code offset: 0xad1 - (local.get $3) - ;; code offset: 0xad3 - (local.get $35) - ) - ;; code offset: 0xadc - (i32.store offset=20 - ;; code offset: 0xad8 - (local.get $3) - ;; code offset: 0xada - (local.get $27) - ) - ;; code offset: 0xadf - (block $label$3 - ;; code offset: 0xae1 - (loop $label$4 - ;; code offset: 0xae8 - (local.set $36 - ;; code offset: 0xae5 - (i32.load offset=20 - ;; code offset: 0xae3 - (local.get $3) - ) - ) - ;; code offset: 0xaef - (local.set $37 - ;; code offset: 0xaec - (i32.load offset=44 - ;; code offset: 0xaea - (local.get $3) - ) - ) - ;; code offset: 0xaf3 - (local.set $38 - ;; code offset: 0xaf1 - (local.get $36) - ) - ;; code offset: 0xaf7 - (local.set $39 - ;; code offset: 0xaf5 - (local.get $37) - ) - ;; code offset: 0xafe - (local.set $40 - ;; code offset: 0xafd - (i32.lt_s - ;; code offset: 0xaf9 - (local.get $38) - ;; code offset: 0xafb - (local.get $39) - ) - ) - ;; code offset: 0xb02 - (local.set $41 - ;; code offset: 0xb00 - (i32.const 1) - ) - ;; code offset: 0xb09 - (local.set $42 - ;; code offset: 0xb08 - (i32.and - ;; code offset: 0xb04 - (local.get $40) - ;; code offset: 0xb06 - (local.get $41) - ) - ) - ;; code offset: 0xb0e - (br_if $label$3 - ;; code offset: 0xb0d - (i32.eqz - ;; code offset: 0xb0b - (local.get $42) - ) - ) - ;; code offset: 0xb15 - (local.set $43 - ;; code offset: 0xb12 - (i32.load offset=20 - ;; code offset: 0xb10 - (local.get $3) - ) - ) - ;; code offset: 0xb1c - (local.set $44 - ;; code offset: 0xb19 - (i32.load offset=28 - ;; code offset: 0xb17 - (local.get $3) - ) - ) - ;; code offset: 0xb23 - (local.set $45 - ;; code offset: 0xb20 - (i32.load offset=20 - ;; code offset: 0xb1e - (local.get $3) - ) - ) - ;; code offset: 0xb27 - (local.set $46 - ;; code offset: 0xb25 - (i32.const 2) - ) - ;; code offset: 0xb2e - (local.set $47 - ;; code offset: 0xb2d - (i32.shl - ;; code offset: 0xb29 - (local.get $45) - ;; code offset: 0xb2b - (local.get $46) - ) - ) - ;; code offset: 0xb35 - (local.set $48 - ;; code offset: 0xb34 - (i32.add - ;; code offset: 0xb30 - (local.get $44) - ;; code offset: 0xb32 - (local.get $47) - ) - ) - ;; code offset: 0xb3b - (i32.store - ;; code offset: 0xb37 - (local.get $48) - ;; code offset: 0xb39 - (local.get $43) - ) - ;; code offset: 0xb43 - (local.set $49 - ;; code offset: 0xb40 - (i32.load offset=20 - ;; code offset: 0xb3e - (local.get $3) - ) - ) - ;; code offset: 0xb47 - (local.set $50 - ;; code offset: 0xb45 - (i32.const 1) - ) - ;; code offset: 0xb4e - (local.set $51 - ;; code offset: 0xb4d - (i32.add - ;; code offset: 0xb49 - (local.get $49) - ;; code offset: 0xb4b - (local.get $50) - ) - ) - ;; code offset: 0xb54 - (i32.store offset=20 - ;; code offset: 0xb50 - (local.get $3) - ;; code offset: 0xb52 - (local.get $51) - ) - ;; code offset: 0xb57 - (br $label$4) - ) - ) - ;; code offset: 0xb62 - (local.set $52 - ;; code offset: 0xb5f - (i32.load offset=44 - ;; code offset: 0xb5d - (local.get $3) - ) - ) - ;; code offset: 0xb68 - (i32.store offset=16 - ;; code offset: 0xb64 - (local.get $3) - ;; code offset: 0xb66 - (local.get $52) - ) - ;; code offset: 0xb6b - (block $label$5 - ;; code offset: 0xb6d - (loop $label$6 - ;; code offset: 0xb74 - (local.set $53 - ;; code offset: 0xb71 - (i32.load offset=32 - ;; code offset: 0xb6f - (local.get $3) - ) - ) - ;; code offset: 0xb76 - (block $label$7 - (block $label$8 - ;; code offset: 0xb7d - (br_if $label$8 - ;; code offset: 0xb7c - (i32.eqz - ;; code offset: 0xb7a - (local.get $53) - ) - ) - ;; code offset: 0xb81 - (local.set $54 - ;; code offset: 0xb7f - (i32.const 0) - ) - ;; code offset: 0xb87 - (i32.store offset=20 - ;; code offset: 0xb83 - (local.get $3) - ;; code offset: 0xb85 - (local.get $54) - ) - ;; code offset: 0xb8a - (block $label$9 - ;; code offset: 0xb8c - (loop $label$10 - ;; code offset: 0xb93 - (local.set $55 - ;; code offset: 0xb90 - (i32.load offset=20 - ;; code offset: 0xb8e - (local.get $3) - ) - ) - ;; code offset: 0xb9a - (local.set $56 - ;; code offset: 0xb97 - (i32.load offset=44 - ;; code offset: 0xb95 - (local.get $3) - ) - ) - ;; code offset: 0xb9e - (local.set $57 - ;; code offset: 0xb9c - (local.get $55) - ) - ;; code offset: 0xba2 - (local.set $58 - ;; code offset: 0xba0 - (local.get $56) - ) - ;; code offset: 0xba9 - (local.set $59 - ;; code offset: 0xba8 - (i32.lt_s - ;; code offset: 0xba4 - (local.get $57) - ;; code offset: 0xba6 - (local.get $58) - ) - ) - ;; code offset: 0xbad - (local.set $60 - ;; code offset: 0xbab - (i32.const 1) - ) - ;; code offset: 0xbb4 - (local.set $61 - ;; code offset: 0xbb3 - (i32.and - ;; code offset: 0xbaf - (local.get $59) - ;; code offset: 0xbb1 - (local.get $60) - ) - ) - ;; code offset: 0xbb9 - (br_if $label$9 - ;; code offset: 0xbb8 - (i32.eqz - ;; code offset: 0xbb6 - (local.get $61) - ) - ) - ;; code offset: 0xbc0 - (local.set $62 - ;; code offset: 0xbbd - (i32.load offset=28 - ;; code offset: 0xbbb - (local.get $3) - ) - ) - ;; code offset: 0xbc7 - (local.set $63 - ;; code offset: 0xbc4 - (i32.load offset=20 - ;; code offset: 0xbc2 - (local.get $3) - ) - ) - ;; code offset: 0xbcb - (local.set $64 - ;; code offset: 0xbc9 - (i32.const 2) - ) - ;; code offset: 0xbd2 - (local.set $65 - ;; code offset: 0xbd1 - (i32.shl - ;; code offset: 0xbcd - (local.get $63) - ;; code offset: 0xbcf - (local.get $64) - ) - ) - ;; code offset: 0xbd9 - (local.set $66 - ;; code offset: 0xbd8 - (i32.add - ;; code offset: 0xbd4 - (local.get $62) - ;; code offset: 0xbd6 - (local.get $65) - ) - ) - ;; code offset: 0xbe0 - (local.set $67 - ;; code offset: 0xbdd - (i32.load - ;; code offset: 0xbdb - (local.get $66) - ) - ) - ;; code offset: 0xbe4 - (local.set $68 - ;; code offset: 0xbe2 - (i32.const 1) - ) - ;; code offset: 0xbeb - (local.set $69 - ;; code offset: 0xbea - (i32.add - ;; code offset: 0xbe6 - (local.get $67) - ;; code offset: 0xbe8 - (local.get $68) - ) - ) - ;; code offset: 0xbf1 - (i32.store - ;; code offset: 0xbed - (local.get $3) - ;; code offset: 0xbef - (local.get $69) - ) - ;; code offset: 0xbf7 - (local.set $70 - ;; code offset: 0xbf4 - (i32.const 1064) - ) - ;; code offset: 0xbff - (drop - ;; code offset: 0xbfd - (call $printf - ;; code offset: 0xbf9 - (local.get $70) - ;; code offset: 0xbfb - (local.get $3) - ) - ) - ;; code offset: 0xc05 - (local.set $71 - ;; code offset: 0xc02 - (i32.load offset=20 - ;; code offset: 0xc00 - (local.get $3) - ) - ) - ;; code offset: 0xc09 - (local.set $72 - ;; code offset: 0xc07 - (i32.const 1) - ) - ;; code offset: 0xc10 - (local.set $73 - ;; code offset: 0xc0f - (i32.add - ;; code offset: 0xc0b - (local.get $71) - ;; code offset: 0xc0d - (local.get $72) - ) - ) - ;; code offset: 0xc16 - (i32.store offset=20 - ;; code offset: 0xc12 - (local.get $3) - ;; code offset: 0xc14 - (local.get $73) - ) - ;; code offset: 0xc19 - (br $label$10) - ) - ) - ;; code offset: 0xc22 - (local.set $74 - ;; code offset: 0xc1f - (i32.const 1067) - ) - ;; code offset: 0xc26 - (local.set $75 - ;; code offset: 0xc24 - (i32.const 0) - ) - ;; code offset: 0xc2e - (drop - ;; code offset: 0xc2c - (call $printf - ;; code offset: 0xc28 - (local.get $74) - ;; code offset: 0xc2a - (local.get $75) - ) - ) - ;; code offset: 0xc34 - (local.set $76 - ;; code offset: 0xc31 - (i32.load offset=32 - ;; code offset: 0xc2f - (local.get $3) - ) - ) - ;; code offset: 0xc38 - (local.set $77 - ;; code offset: 0xc36 - (i32.const -1) - ) - ;; code offset: 0xc3f - (local.set $78 - ;; code offset: 0xc3e - (i32.add - ;; code offset: 0xc3a - (local.get $76) - ;; code offset: 0xc3c - (local.get $77) - ) - ) - ;; code offset: 0xc45 - (i32.store offset=32 - ;; code offset: 0xc41 - (local.get $3) - ;; code offset: 0xc43 - (local.get $78) - ) - ;; code offset: 0xc48 - (br $label$7) - ) - ;; code offset: 0xc4b - (br $label$5) - ) - ;; code offset: 0xc4e - (block $label$11 - ;; code offset: 0xc50 - (loop $label$12 - ;; code offset: 0xc54 - (local.set $79 - ;; code offset: 0xc52 - (i32.const 1) - ) - ;; code offset: 0xc5b - (local.set $80 - ;; code offset: 0xc58 - (i32.load offset=16 - ;; code offset: 0xc56 - (local.get $3) - ) - ) - ;; code offset: 0xc5f - (local.set $81 - ;; code offset: 0xc5d - (local.get $80) - ) - ;; code offset: 0xc63 - (local.set $82 - ;; code offset: 0xc61 - (local.get $79) - ) - ;; code offset: 0xc6a - (local.set $83 - ;; code offset: 0xc69 - (i32.gt_s - ;; code offset: 0xc65 - (local.get $81) - ;; code offset: 0xc67 - (local.get $82) - ) - ) - ;; code offset: 0xc6e - (local.set $84 - ;; code offset: 0xc6c - (i32.const 1) - ) - ;; code offset: 0xc75 - (local.set $85 - ;; code offset: 0xc74 - (i32.and - ;; code offset: 0xc70 - (local.get $83) - ;; code offset: 0xc72 - (local.get $84) - ) - ) - ;; code offset: 0xc7a - (br_if $label$11 - ;; code offset: 0xc79 - (i32.eqz - ;; code offset: 0xc77 - (local.get $85) - ) - ) - ;; code offset: 0xc81 - (local.set $86 - ;; code offset: 0xc7e - (i32.load offset=16 - ;; code offset: 0xc7c - (local.get $3) - ) - ) - ;; code offset: 0xc88 - (local.set $87 - ;; code offset: 0xc85 - (i32.load offset=24 - ;; code offset: 0xc83 - (local.get $3) - ) - ) - ;; code offset: 0xc8f - (local.set $88 - ;; code offset: 0xc8c - (i32.load offset=16 - ;; code offset: 0xc8a - (local.get $3) - ) - ) - ;; code offset: 0xc93 - (local.set $89 - ;; code offset: 0xc91 - (i32.const 1) - ) - ;; code offset: 0xc9a - (local.set $90 - ;; code offset: 0xc99 - (i32.sub - ;; code offset: 0xc95 - (local.get $88) - ;; code offset: 0xc97 - (local.get $89) - ) - ) - ;; code offset: 0xc9e - (local.set $91 - ;; code offset: 0xc9c - (i32.const 2) - ) - ;; code offset: 0xca5 - (local.set $92 - ;; code offset: 0xca4 - (i32.shl - ;; code offset: 0xca0 - (local.get $90) - ;; code offset: 0xca2 - (local.get $91) - ) - ) - ;; code offset: 0xcac - (local.set $93 - ;; code offset: 0xcab - (i32.add - ;; code offset: 0xca7 - (local.get $87) - ;; code offset: 0xca9 - (local.get $92) - ) - ) - ;; code offset: 0xcb2 - (i32.store - ;; code offset: 0xcae - (local.get $93) - ;; code offset: 0xcb0 - (local.get $86) - ) - ;; code offset: 0xcba - (local.set $94 - ;; code offset: 0xcb7 - (i32.load offset=16 - ;; code offset: 0xcb5 - (local.get $3) - ) - ) - ;; code offset: 0xcbe - (local.set $95 - ;; code offset: 0xcbc - (i32.const -1) - ) - ;; code offset: 0xcc5 - (local.set $96 - ;; code offset: 0xcc4 - (i32.add - ;; code offset: 0xcc0 - (local.get $94) - ;; code offset: 0xcc2 - (local.get $95) - ) - ) - ;; code offset: 0xccb - (i32.store offset=16 - ;; code offset: 0xcc7 - (local.get $3) - ;; code offset: 0xcc9 - (local.get $96) - ) - ;; code offset: 0xcce - (br $label$12) - ) - ) - ;; code offset: 0xcd4 - (loop $label$13 - ;; code offset: 0xcdb - (local.set $97 - ;; code offset: 0xcd8 - (i32.load offset=16 - ;; code offset: 0xcd6 - (local.get $3) - ) - ) - ;; code offset: 0xce2 - (local.set $98 - ;; code offset: 0xcdf - (i32.load offset=44 - ;; code offset: 0xcdd - (local.get $3) - ) - ) - ;; code offset: 0xce6 - (local.set $99 - ;; code offset: 0xce4 - (local.get $97) - ) - ;; code offset: 0xcea - (local.set $100 - ;; code offset: 0xce8 - (local.get $98) - ) - ;; code offset: 0xcf1 - (local.set $101 - ;; code offset: 0xcf0 - (i32.eq - ;; code offset: 0xcec - (local.get $99) - ;; code offset: 0xcee - (local.get $100) - ) - ) - ;; code offset: 0xcf5 - (local.set $102 - ;; code offset: 0xcf3 - (i32.const 1) - ) - ;; code offset: 0xcfc - (local.set $103 - ;; code offset: 0xcfb - (i32.and - ;; code offset: 0xcf7 - (local.get $101) - ;; code offset: 0xcf9 - (local.get $102) - ) - ) - ;; code offset: 0xcfe - (block $label$14 - ;; code offset: 0xd03 - (br_if $label$14 - ;; code offset: 0xd02 - (i32.eqz - ;; code offset: 0xd00 - (local.get $103) - ) - ) - ;; code offset: 0xd05 - (br $label$5) - ) - ;; code offset: 0xd0a - (local.set $104 - ;; code offset: 0xd08 - (i32.const 0) - ) - ;; code offset: 0xd11 - (local.set $105 - ;; code offset: 0xd0e - (i32.load offset=28 - ;; code offset: 0xd0c - (local.get $3) - ) - ) - ;; code offset: 0xd18 - (local.set $106 - ;; code offset: 0xd15 - (i32.load - ;; code offset: 0xd13 - (local.get $105) - ) - ) - ;; code offset: 0xd1e - (i32.store offset=4 - ;; code offset: 0xd1a - (local.get $3) - ;; code offset: 0xd1c - (local.get $106) - ) - ;; code offset: 0xd25 - (i32.store offset=20 - ;; code offset: 0xd21 - (local.get $3) - ;; code offset: 0xd23 - (local.get $104) - ) - ;; code offset: 0xd28 - (block $label$15 - ;; code offset: 0xd2a - (loop $label$16 - ;; code offset: 0xd31 - (local.set $107 - ;; code offset: 0xd2e - (i32.load offset=20 - ;; code offset: 0xd2c - (local.get $3) - ) - ) - ;; code offset: 0xd38 - (local.set $108 - ;; code offset: 0xd35 - (i32.load offset=16 - ;; code offset: 0xd33 - (local.get $3) - ) - ) - ;; code offset: 0xd3c - (local.set $109 - ;; code offset: 0xd3a - (local.get $107) - ) - ;; code offset: 0xd40 - (local.set $110 - ;; code offset: 0xd3e - (local.get $108) - ) - ;; code offset: 0xd47 - (local.set $111 - ;; code offset: 0xd46 - (i32.lt_s - ;; code offset: 0xd42 - (local.get $109) - ;; code offset: 0xd44 - (local.get $110) - ) - ) - ;; code offset: 0xd4b - (local.set $112 - ;; code offset: 0xd49 - (i32.const 1) - ) - ;; code offset: 0xd52 - (local.set $113 - ;; code offset: 0xd51 - (i32.and - ;; code offset: 0xd4d - (local.get $111) - ;; code offset: 0xd4f - (local.get $112) - ) - ) - ;; code offset: 0xd57 - (br_if $label$15 - ;; code offset: 0xd56 - (i32.eqz - ;; code offset: 0xd54 - (local.get $113) - ) - ) - ;; code offset: 0xd5e - (local.set $114 - ;; code offset: 0xd5b - (i32.load offset=28 - ;; code offset: 0xd59 - (local.get $3) - ) - ) - ;; code offset: 0xd65 - (local.set $115 - ;; code offset: 0xd62 - (i32.load offset=20 - ;; code offset: 0xd60 - (local.get $3) - ) - ) - ;; code offset: 0xd69 - (local.set $116 - ;; code offset: 0xd67 - (i32.const 1) - ) - ;; code offset: 0xd70 - (local.set $117 - ;; code offset: 0xd6f - (i32.add - ;; code offset: 0xd6b - (local.get $115) - ;; code offset: 0xd6d - (local.get $116) - ) - ) - ;; code offset: 0xd74 - (local.set $118 - ;; code offset: 0xd72 - (i32.const 2) - ) - ;; code offset: 0xd7b - (local.set $119 - ;; code offset: 0xd7a - (i32.shl - ;; code offset: 0xd76 - (local.get $117) - ;; code offset: 0xd78 - (local.get $118) - ) - ) - ;; code offset: 0xd82 - (local.set $120 - ;; code offset: 0xd81 - (i32.add - ;; code offset: 0xd7d - (local.get $114) - ;; code offset: 0xd7f - (local.get $119) - ) - ) - ;; code offset: 0xd89 - (local.set $121 - ;; code offset: 0xd86 - (i32.load - ;; code offset: 0xd84 - (local.get $120) - ) - ) - ;; code offset: 0xd90 - (local.set $122 - ;; code offset: 0xd8d - (i32.load offset=28 - ;; code offset: 0xd8b - (local.get $3) - ) - ) - ;; code offset: 0xd97 - (local.set $123 - ;; code offset: 0xd94 - (i32.load offset=20 - ;; code offset: 0xd92 - (local.get $3) - ) - ) - ;; code offset: 0xd9b - (local.set $124 - ;; code offset: 0xd99 - (i32.const 2) - ) - ;; code offset: 0xda2 - (local.set $125 - ;; code offset: 0xda1 - (i32.shl - ;; code offset: 0xd9d - (local.get $123) - ;; code offset: 0xd9f - (local.get $124) - ) - ) - ;; code offset: 0xda9 - (local.set $126 - ;; code offset: 0xda8 - (i32.add - ;; code offset: 0xda4 - (local.get $122) - ;; code offset: 0xda6 - (local.get $125) - ) - ) - ;; code offset: 0xdaf - (i32.store - ;; code offset: 0xdab - (local.get $126) - ;; code offset: 0xdad - (local.get $121) - ) - ;; code offset: 0xdb7 - (local.set $127 - ;; code offset: 0xdb4 - (i32.load offset=20 - ;; code offset: 0xdb2 - (local.get $3) - ) - ) - ;; code offset: 0xdbb - (local.set $128 - ;; code offset: 0xdb9 - (i32.const 1) - ) - ;; code offset: 0xdc4 - (local.set $129 - ;; code offset: 0xdc3 - (i32.add - ;; code offset: 0xdbe - (local.get $127) - ;; code offset: 0xdc0 - (local.get $128) - ) - ) - ;; code offset: 0xdcc - (i32.store offset=20 - ;; code offset: 0xdc7 - (local.get $3) - ;; code offset: 0xdc9 - (local.get $129) - ) - ;; code offset: 0xdcf - (br $label$16) - ) - ) - ;; code offset: 0xdd7 - (local.set $130 - ;; code offset: 0xdd5 - (i32.const 0) - ) - ;; code offset: 0xddf - (local.set $131 - ;; code offset: 0xddc - (i32.load offset=4 - ;; code offset: 0xdda - (local.get $3) - ) - ) - ;; code offset: 0xde7 - (local.set $132 - ;; code offset: 0xde4 - (i32.load offset=28 - ;; code offset: 0xde2 - (local.get $3) - ) - ) - ;; code offset: 0xdef - (local.set $133 - ;; code offset: 0xdec - (i32.load offset=20 - ;; code offset: 0xdea - (local.get $3) - ) - ) - ;; code offset: 0xdf4 - (local.set $134 - ;; code offset: 0xdf2 - (i32.const 2) - ) - ;; code offset: 0xdfe - (local.set $135 - ;; code offset: 0xdfd - (i32.shl - ;; code offset: 0xdf7 - (local.get $133) - ;; code offset: 0xdfa - (local.get $134) - ) - ) - ;; code offset: 0xe08 - (local.set $136 - ;; code offset: 0xe07 - (i32.add - ;; code offset: 0xe01 - (local.get $132) - ;; code offset: 0xe04 - (local.get $135) - ) - ) - ;; code offset: 0xe11 - (i32.store - ;; code offset: 0xe0b - (local.get $136) - ;; code offset: 0xe0e - (local.get $131) - ) - ;; code offset: 0xe19 - (local.set $137 - ;; code offset: 0xe16 - (i32.load offset=24 - ;; code offset: 0xe14 - (local.get $3) - ) - ) - ;; code offset: 0xe21 - (local.set $138 - ;; code offset: 0xe1e - (i32.load offset=16 - ;; code offset: 0xe1c - (local.get $3) - ) - ) - ;; code offset: 0xe26 - (local.set $139 - ;; code offset: 0xe24 - (i32.const 2) - ) - ;; code offset: 0xe30 - (local.set $140 - ;; code offset: 0xe2f - (i32.shl - ;; code offset: 0xe29 - (local.get $138) - ;; code offset: 0xe2c - (local.get $139) - ) - ) - ;; code offset: 0xe3a - (local.set $141 - ;; code offset: 0xe39 - (i32.add - ;; code offset: 0xe33 - (local.get $137) - ;; code offset: 0xe36 - (local.get $140) - ) - ) - ;; code offset: 0xe43 - (local.set $142 - ;; code offset: 0xe40 - (i32.load - ;; code offset: 0xe3d - (local.get $141) - ) - ) - ;; code offset: 0xe48 - (local.set $143 - ;; code offset: 0xe46 - (i32.const -1) - ) - ;; code offset: 0xe52 - (local.set $144 - ;; code offset: 0xe51 - (i32.add - ;; code offset: 0xe4b - (local.get $142) - ;; code offset: 0xe4e - (local.get $143) - ) - ) - ;; code offset: 0xe5b - (i32.store - ;; code offset: 0xe55 - (local.get $141) - ;; code offset: 0xe58 - (local.get $144) - ) - ;; code offset: 0xe61 - (local.set $145 - ;; code offset: 0xe5e - (local.get $144) - ) - ;; code offset: 0xe67 - (local.set $146 - ;; code offset: 0xe64 - (local.get $130) - ) - ;; code offset: 0xe71 - (local.set $147 - ;; code offset: 0xe70 - (i32.gt_s - ;; code offset: 0xe6a - (local.get $145) - ;; code offset: 0xe6d - (local.get $146) - ) - ) - ;; code offset: 0xe76 - (local.set $148 - ;; code offset: 0xe74 - (i32.const 1) - ) - ;; code offset: 0xe80 - (local.set $149 - ;; code offset: 0xe7f - (i32.and - ;; code offset: 0xe79 - (local.get $147) - ;; code offset: 0xe7c - (local.get $148) - ) - ) - ;; code offset: 0xe83 - (block $label$17 - (block $label$18 - ;; code offset: 0xe8b - (br_if $label$18 - ;; code offset: 0xe8a - (i32.eqz - ;; code offset: 0xe87 - (local.get $149) - ) - ) - ;; code offset: 0xe8d - (br $label$17) - ) - ;; code offset: 0xe95 - (local.set $150 - ;; code offset: 0xe92 - (i32.load offset=16 - ;; code offset: 0xe90 - (local.get $3) - ) - ) - ;; code offset: 0xe9a - (local.set $151 - ;; code offset: 0xe98 - (i32.const 1) - ) - ;; code offset: 0xea4 - (local.set $152 - ;; code offset: 0xea3 - (i32.add - ;; code offset: 0xe9d - (local.get $150) - ;; code offset: 0xea0 - (local.get $151) - ) - ) - ;; code offset: 0xeac - (i32.store offset=16 - ;; code offset: 0xea7 - (local.get $3) - ;; code offset: 0xea9 - (local.get $152) - ) - ;; code offset: 0xeaf - (br $label$13) - ) - ) - ;; code offset: 0xeb3 - (br $label$6) - ) - ) - ;; code offset: 0xebb - (local.set $153 - ;; code offset: 0xeb9 - (i32.const 0) - ) - ;; code offset: 0xec3 - (local.set $154 - ;; code offset: 0xec0 - (i32.load offset=28 - ;; code offset: 0xebe - (local.get $3) - ) - ) - ;; code offset: 0xec9 - (call $free - ;; code offset: 0xec6 - (local.get $154) - ) - ;; code offset: 0xed0 - (local.set $155 - ;; code offset: 0xecd - (i32.load offset=24 - ;; code offset: 0xecb - (local.get $3) - ) - ) - ;; code offset: 0xed6 - (call $free - ;; code offset: 0xed3 - (local.get $155) - ) - ;; code offset: 0xedd - (i32.store offset=12 - ;; code offset: 0xed8 - (local.get $3) - ;; code offset: 0xeda - (local.get $153) - ) - ;; code offset: 0xee0 - (block $label$19 - ;; code offset: 0xee2 - (loop $label$20 - ;; code offset: 0xee6 - (local.set $156 - ;; code offset: 0xee4 - (i32.const 0) - ) - ;; code offset: 0xeee - (local.set $157 - ;; code offset: 0xeeb - (i32.load offset=40 - ;; code offset: 0xee9 - (local.get $3) - ) - ) - ;; code offset: 0xef4 - (local.set $158 - ;; code offset: 0xef1 - (local.get $157) - ) - ;; code offset: 0xefa - (local.set $159 - ;; code offset: 0xef7 - (local.get $156) - ) - ;; code offset: 0xf04 - (local.set $160 - ;; code offset: 0xf03 - (i32.ne - ;; code offset: 0xefd - (local.get $158) - ;; code offset: 0xf00 - (local.get $159) - ) - ) - ;; code offset: 0xf09 - (local.set $161 - ;; code offset: 0xf07 - (i32.const 1) - ) - ;; code offset: 0xf13 - (local.set $162 - ;; code offset: 0xf12 - (i32.and - ;; code offset: 0xf0c - (local.get $160) - ;; code offset: 0xf0f - (local.get $161) - ) - ) - ;; code offset: 0xf1a - (br_if $label$19 - ;; code offset: 0xf19 - (i32.eqz - ;; code offset: 0xf16 - (local.get $162) - ) - ) - ;; code offset: 0xf21 - (local.set $163 - ;; code offset: 0xf1e - (i32.load offset=40 - ;; code offset: 0xf1c - (local.get $3) - ) - ) - ;; code offset: 0xf29 - (local.set $164 - ;; code offset: 0xf27 - (call $fannkuch_worker\28void*\29 - ;; code offset: 0xf24 - (local.get $163) - ) - ) - ;; code offset: 0xf31 - (i32.store offset=8 - ;; code offset: 0xf2c - (local.get $3) - ;; code offset: 0xf2e - (local.get $164) - ) - ;; code offset: 0xf39 - (local.set $165 - ;; code offset: 0xf36 - (i32.load offset=12 - ;; code offset: 0xf34 - (local.get $3) - ) - ) - ;; code offset: 0xf41 - (local.set $166 - ;; code offset: 0xf3e - (i32.load offset=8 - ;; code offset: 0xf3c - (local.get $3) - ) - ) - ;; code offset: 0xf47 - (local.set $167 - ;; code offset: 0xf44 - (local.get $165) - ) - ;; code offset: 0xf4d - (local.set $168 - ;; code offset: 0xf4a - (local.get $166) - ) - ;; code offset: 0xf57 - (local.set $169 - ;; code offset: 0xf56 - (i32.lt_s - ;; code offset: 0xf50 - (local.get $167) - ;; code offset: 0xf53 - (local.get $168) - ) - ) - ;; code offset: 0xf5c - (local.set $170 - ;; code offset: 0xf5a - (i32.const 1) - ) - ;; code offset: 0xf66 - (local.set $171 - ;; code offset: 0xf65 - (i32.and - ;; code offset: 0xf5f - (local.get $169) - ;; code offset: 0xf62 - (local.get $170) - ) - ) - ;; code offset: 0xf69 - (block $label$21 - ;; code offset: 0xf6f - (br_if $label$21 - ;; code offset: 0xf6e - (i32.eqz - ;; code offset: 0xf6b - (local.get $171) - ) - ) - ;; code offset: 0xf76 - (local.set $172 - ;; code offset: 0xf73 - (i32.load offset=8 - ;; code offset: 0xf71 - (local.get $3) - ) - ) - ;; code offset: 0xf7e - (i32.store offset=12 - ;; code offset: 0xf79 - (local.get $3) - ;; code offset: 0xf7b - (local.get $172) - ) - ) - ;; code offset: 0xf87 - (local.set $173 - ;; code offset: 0xf84 - (i32.load offset=40 - ;; code offset: 0xf82 - (local.get $3) - ) - ) - ;; code offset: 0xf8f - (i32.store offset=36 - ;; code offset: 0xf8a - (local.get $3) - ;; code offset: 0xf8c - (local.get $173) - ) - ;; code offset: 0xf97 - (local.set $174 - ;; code offset: 0xf94 - (i32.load offset=40 - ;; code offset: 0xf92 - (local.get $3) - ) - ) - ;; code offset: 0xfa0 - (local.set $175 - ;; code offset: 0xf9d - (i32.load offset=8 - ;; code offset: 0xf9a - (local.get $174) - ) - ) - ;; code offset: 0xfa8 - (i32.store offset=40 - ;; code offset: 0xfa3 - (local.get $3) - ;; code offset: 0xfa5 - (local.get $175) - ) - ;; code offset: 0xfb0 - (local.set $176 - ;; code offset: 0xfad - (i32.load offset=36 - ;; code offset: 0xfab - (local.get $3) - ) - ) - ;; code offset: 0xfb6 - (call $free - ;; code offset: 0xfb3 - (local.get $176) - ) - ;; code offset: 0xfb8 - (br $label$20) - ) - ) - ;; code offset: 0xfc3 - (local.set $177 - ;; code offset: 0xfc0 - (i32.load offset=12 - ;; code offset: 0xfbe - (local.get $3) - ) - ) - ;; code offset: 0xfc8 - (local.set $178 - ;; code offset: 0xfc6 - (i32.const 48) - ) - ;; code offset: 0xfd1 - (local.set $179 - ;; code offset: 0xfd0 - (i32.add - ;; code offset: 0xfcb - (local.get $3) - ;; code offset: 0xfcd - (local.get $178) - ) - ) - ;; code offset: 0xfd7 - (global.set $global$0 - ;; code offset: 0xfd4 - (local.get $179) - ) - ;; code offset: 0xfdc - (return - ;; code offset: 0xfd9 - (local.get $177) - ) - ) - ;; custom section ".debug_info", size 640 - ;; custom section ".debug_ranges", size 32 - ;; custom section ".debug_abbrev", size 222 - ;; custom section ".debug_line", size 3965 - ;; custom section ".debug_str", size 409 - ;; custom section "producers", size 180 -) diff -Nru binaryen-91/test/passes/fannkuch0_dwarf.bin.txt binaryen-99/test/passes/fannkuch0_dwarf.bin.txt --- binaryen-91/test/passes/fannkuch0_dwarf.bin.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/fannkuch0_dwarf.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,10164 @@ +DWARF debug info +================ + +Contains section .debug_info (640 bytes) +Contains section .debug_ranges (32 bytes) +Contains section .debug_abbrev (222 bytes) +Contains section .debug_line (1558 bytes) +Contains section .debug_str (409 bytes) + +.debug_abbrev contents: +Abbrev table for offset: 0x00000000 +[1] DW_TAG_compile_unit DW_CHILDREN_yes + DW_AT_producer DW_FORM_strp + DW_AT_language DW_FORM_data2 + DW_AT_name DW_FORM_strp + DW_AT_stmt_list DW_FORM_sec_offset + DW_AT_comp_dir DW_FORM_strp + DW_AT_low_pc DW_FORM_addr + DW_AT_ranges DW_FORM_sec_offset + +[2] DW_TAG_pointer_type DW_CHILDREN_no + DW_AT_type DW_FORM_ref4 + +[3] DW_TAG_structure_type DW_CHILDREN_yes + DW_AT_calling_convention DW_FORM_data1 + DW_AT_name DW_FORM_strp + DW_AT_byte_size DW_FORM_data1 + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + +[4] DW_TAG_member DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_type DW_FORM_ref4 + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_data_member_location DW_FORM_data1 + +[5] DW_TAG_base_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_encoding DW_FORM_data1 + DW_AT_byte_size DW_FORM_data1 + +[6] DW_TAG_namespace DW_CHILDREN_yes + DW_AT_name DW_FORM_strp + +[7] DW_TAG_typedef DW_CHILDREN_no + DW_AT_type DW_FORM_ref4 + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + +[8] DW_TAG_unspecified_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + +[9] DW_TAG_imported_declaration DW_CHILDREN_no + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_import DW_FORM_ref4 + +[10] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_linkage_name DW_FORM_strp + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[11] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_location DW_FORM_exprloc + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[12] DW_TAG_variable DW_CHILDREN_no + DW_AT_location DW_FORM_exprloc + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[13] DW_TAG_lexical_block DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + +[14] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[15] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_linkage_name DW_FORM_strp + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[16] DW_TAG_label DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_low_pc DW_FORM_addr + +[17] DW_TAG_pointer_type DW_CHILDREN_no + + +.debug_info contents: +0x00000000: Compile Unit: length = 0x0000027c version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x00000280) + +0x0000000b: DW_TAG_compile_unit [1] * + DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 11.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 2d7a8cf90478cd845ffb39763b0e95b7715322d2)") + DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000095] = "tests/fannkuch.cpp") + DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) + DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x000000a8] = "/home/alon/Dev/emscripten") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) + DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 + [0x00000006, 0x0000088c) + [0x0000088e, 0x000009dc) + [0x000009de, 0x00001042)) + +0x00000026: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x002b => {0x0000002b} "worker_args") + +0x0000002b: DW_TAG_structure_type [3] * + DW_AT_calling_convention [DW_FORM_data1] (DW_CC_pass_by_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000cf] = "worker_args") + DW_AT_byte_size [DW_FORM_data1] (0x0c) + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (20) + +0x00000034: DW_TAG_member [4] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c2] = "i") + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (21) + DW_AT_data_member_location [DW_FORM_data1] (0x00) + +0x00000040: DW_TAG_member [4] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c8] = "n") + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (21) + DW_AT_data_member_location [DW_FORM_data1] (0x04) + +0x0000004c: DW_TAG_member [4] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ca] = "next") + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (22) + DW_AT_data_member_location [DW_FORM_data1] (0x08) + +0x00000058: NULL + +0x00000059: DW_TAG_base_type [5] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c4] = "int") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) + DW_AT_byte_size [DW_FORM_data1] (0x04) + +0x00000060: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000065: DW_TAG_namespace [6] * + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000db] = "std") + +0x0000006a: DW_TAG_typedef [7] + DW_AT_type [DW_FORM_ref4] (cu + 0x0076 => {0x00000076} "decltype(nullptr)") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000f1] = "nullptr_t") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/system/include/libcxx/__nullptr") + DW_AT_decl_line [DW_FORM_data1] (57) + +0x00000075: NULL + +0x00000076: DW_TAG_unspecified_type [8] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000df] = "decltype(nullptr)") + +0x0000007b: DW_TAG_imported_declaration [9] + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/system/include/libcxx/stddef.h") + DW_AT_decl_line [DW_FORM_data1] (52) + DW_AT_import [DW_FORM_ref4] (cu + 0x006a => {0x0000006a}) + +0x00000082: DW_TAG_subprogram [10] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000006) + DW_AT_high_pc [DW_FORM_data4] (0x00000886) + DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x000000fb] = "_Z15fannkuch_workerPv") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000111] = "fannkuch_worker") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (26) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x00000099: DW_TAG_formal_parameter [11] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x3c) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000013d] = "_arg") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (26) + DW_AT_type [DW_FORM_ref4] (cu + 0x026d => {0x0000026d} "*") + +0x000000a7: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x38) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000142] = "args") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (28) + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + +0x000000b5: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x34) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000147] = "perm1") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (29) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x000000c3: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x30) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014d] = "count") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (29) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x000000d1: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x2c) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000153] = "perm") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (29) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x000000df: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x28) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000158] = "maxflips") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000000ed: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x24) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000161] = "flips") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000000fb: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x20) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c2] = "i") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000109: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x1c) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c8] = "n") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000117: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x18) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000167] = "r") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000125: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x14) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000169] = "j") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000133: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x10) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000016b] = "k") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000141: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0xc) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000016d] = "tmp") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000014f: DW_TAG_lexical_block [13] * + DW_AT_low_pc [DW_FORM_addr] (0x00000000000006b4) + DW_AT_high_pc [DW_FORM_data4] (0x00000135) + +0x00000158: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x8) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000171] = "p0") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (74) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000166: NULL + +0x00000167: NULL + +0x00000168: DW_TAG_subprogram [14] * + DW_AT_low_pc [DW_FORM_addr] (0x000000000000088e) + DW_AT_high_pc [DW_FORM_data4] (0x0000014e) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000121] = "main") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (152) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x0000017b: DW_TAG_formal_parameter [11] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x18) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000174] = "argc") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (152) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000189: DW_TAG_formal_parameter [11] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x14) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000179] = "argv") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (152) + DW_AT_type [DW_FORM_ref4] (cu + 0x026e => {0x0000026e} "char**") + +0x00000197: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x10) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c8] = "n") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (153) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000001a5: NULL + +0x000001a6: DW_TAG_subprogram [15] * + DW_AT_low_pc [DW_FORM_addr] (0x00000000000009de) + DW_AT_high_pc [DW_FORM_data4] (0x00000664) + DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x00000126] = "_ZL8fannkuchi") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000134] = "fannkuch") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (87) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000001bd: DW_TAG_formal_parameter [11] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x2c) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c8] = "n") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (87) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000001cb: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x28) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000142] = "args") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (89) + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + +0x000001d9: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x24) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000183] = "targs") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (89) + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + +0x000001e7: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x20) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000189] = "showmax") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (90) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000001f5: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x1c) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000147] = "perm1") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x00000203: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x18) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014d] = "count") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x00000211: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x14) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c2] = "i") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000021f: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x10) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000167] = "r") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000022d: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0xc) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000158] = "maxflips") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000023b: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x8) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000161] = "flips") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000249: DW_TAG_label [16] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000191] = "cleanup") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (137) + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000f10) + +0x00000254: DW_TAG_lexical_block [13] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000d62) + DW_AT_high_pc [DW_FORM_data4] (0x00000106) + +0x0000025d: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x4) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000171] = "p0") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (125) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000026b: NULL + +0x0000026c: NULL + +0x0000026d: DW_TAG_pointer_type [17] + +0x0000026e: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x0273 => {0x00000273} "char*") + +0x00000273: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x0278 => {0x00000278} "char") + +0x00000278: DW_TAG_base_type [5] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000017e] = "char") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char) + DW_AT_byte_size [DW_FORM_data1] (0x01) + +0x0000027f: NULL + +.debug_line contents: +debug_line[0x00000000] +Line table prologue: + total_length: 0x00000612 + version: 4 + prologue_length: 0x00000059 + min_inst_length: 1 +max_ops_per_inst: 1 + default_is_stmt: 1 + line_base: -5 + line_range: 14 + opcode_base: 13 +standard_opcode_lengths[DW_LNS_copy] = 0 +standard_opcode_lengths[DW_LNS_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_advance_line] = 1 +standard_opcode_lengths[DW_LNS_set_file] = 1 +standard_opcode_lengths[DW_LNS_set_column] = 1 +standard_opcode_lengths[DW_LNS_negate_stmt] = 0 +standard_opcode_lengths[DW_LNS_set_basic_block] = 0 +standard_opcode_lengths[DW_LNS_const_add_pc] = 0 +standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 +standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 +standard_opcode_lengths[DW_LNS_set_isa] = 1 +include_directories[ 1] = "tests" +include_directories[ 2] = "system/include/libcxx" +file_names[ 1]: + name: "fannkuch.cpp" + dir_index: 1 + mod_time: 0x00000000 + length: 0x00000000 +file_names[ 2]: + name: "__nullptr" + dir_index: 2 + mod_time: 0x00000000 + length: 0x00000000 +file_names[ 3]: + name: "stddef.h" + dir_index: 2 + mod_time: 0x00000000 + length: 0x00000000 +0x00000063: 00 DW_LNE_set_address (0x0000000000000006) +0x0000006a: 03 DW_LNS_advance_line (27) +0x0000006c: 01 DW_LNS_copy + 0x0000000000000006 27 0 1 0 0 is_stmt + + +0x0000006d: 05 DW_LNS_set_column (45) +0x0000006f: 0a DW_LNS_set_prologue_end +0x00000070: 02 DW_LNS_advance_pc (43) +0x00000072: 13 address += 0, line += 1 + 0x0000000000000031 28 45 1 0 0 is_stmt prologue_end + +0x00000073: 05 DW_LNS_set_column (24) +0x00000075: 06 DW_LNS_negate_stmt +0x00000076: 74 address += 7, line += 0 + 0x0000000000000038 28 24 1 0 0 + +0x00000077: 05 DW_LNS_set_column (13) +0x00000079: 06 DW_LNS_negate_stmt +0x0000007a: 78 address += 7, line += 4 + 0x000000000000003f 32 13 1 0 0 is_stmt + +0x0000007b: 05 DW_LNS_set_column (8) +0x0000007d: 75 address += 7, line += 1 + 0x0000000000000046 33 8 1 0 0 is_stmt + +0x0000007e: 05 DW_LNS_set_column (14) +0x00000080: 06 DW_LNS_negate_stmt +0x00000081: 74 address += 7, line += 0 + 0x000000000000004d 33 14 1 0 0 + +0x00000082: 05 DW_LNS_set_column (6) +0x00000084: 74 address += 7, line += 0 + 0x0000000000000054 33 6 1 0 0 + +0x00000085: 05 DW_LNS_set_column (25) +0x00000087: 06 DW_LNS_negate_stmt +0x00000088: 75 address += 7, line += 1 + 0x000000000000005b 34 25 1 0 0 is_stmt + +0x00000089: 05 DW_LNS_set_column (27) +0x0000008b: 06 DW_LNS_negate_stmt +0x0000008c: 74 address += 7, line += 0 + 0x0000000000000062 34 27 1 0 0 + +0x0000008d: 05 DW_LNS_set_column (18) +0x0000008f: ac address += 11, line += 0 + 0x000000000000006d 34 18 1 0 0 + +0x00000090: 05 DW_LNS_set_column (10) +0x00000092: 9e address += 10, line += 0 + 0x0000000000000077 34 10 1 0 0 + +0x00000093: 05 DW_LNS_set_column (24) +0x00000095: 06 DW_LNS_negate_stmt +0x00000096: 75 address += 7, line += 1 + 0x000000000000007e 35 24 1 0 0 is_stmt + +0x00000097: 05 DW_LNS_set_column (26) +0x00000099: 06 DW_LNS_negate_stmt +0x0000009a: 74 address += 7, line += 0 + 0x0000000000000085 35 26 1 0 0 + +0x0000009b: 05 DW_LNS_set_column (17) +0x0000009d: ac address += 11, line += 0 + 0x0000000000000090 35 17 1 0 0 + +0x0000009e: 05 DW_LNS_set_column (9) +0x000000a0: 9e address += 10, line += 0 + 0x000000000000009a 35 9 1 0 0 + +0x000000a1: 05 DW_LNS_set_column (25) +0x000000a3: 06 DW_LNS_negate_stmt +0x000000a4: 75 address += 7, line += 1 + 0x00000000000000a1 36 25 1 0 0 is_stmt + +0x000000a5: 05 DW_LNS_set_column (27) +0x000000a7: 06 DW_LNS_negate_stmt +0x000000a8: 74 address += 7, line += 0 + 0x00000000000000a8 36 27 1 0 0 + +0x000000a9: 05 DW_LNS_set_column (18) +0x000000ab: ac address += 11, line += 0 + 0x00000000000000b3 36 18 1 0 0 + +0x000000ac: 05 DW_LNS_set_column (10) +0x000000ae: 9e address += 10, line += 0 + 0x00000000000000bd 36 10 1 0 0 + +0x000000af: 05 DW_LNS_set_column (11) +0x000000b1: 06 DW_LNS_negate_stmt +0x000000b2: 75 address += 7, line += 1 + 0x00000000000000c4 37 11 1 0 0 is_stmt + +0x000000b3: 05 DW_LNS_set_column (16) +0x000000b5: 06 DW_LNS_negate_stmt +0x000000b6: 74 address += 7, line += 0 + 0x00000000000000cb 37 16 1 0 0 + +0x000000b7: 05 DW_LNS_set_column (20) +0x000000b9: ac address += 11, line += 0 + 0x00000000000000d6 37 20 1 0 0 + +0x000000ba: 05 DW_LNS_set_column (18) +0x000000bc: 74 address += 7, line += 0 + 0x00000000000000dd 37 18 1 0 0 + +0x000000bd: 05 DW_LNS_set_column (4) +0x000000bf: e4 address += 15, line += 0 + 0x00000000000000ec 37 4 1 0 0 + +0x000000c0: 05 DW_LNS_set_column (18) +0x000000c2: 06 DW_LNS_negate_stmt +0x000000c3: f3 address += 16, line += 1 + 0x00000000000000fc 38 18 1 0 0 is_stmt + +0x000000c4: 05 DW_LNS_set_column (7) +0x000000c6: 06 DW_LNS_negate_stmt +0x000000c7: 74 address += 7, line += 0 + 0x0000000000000103 38 7 1 0 0 + +0x000000c8: 05 DW_LNS_set_column (13) +0x000000ca: 74 address += 7, line += 0 + 0x000000000000010a 38 13 1 0 0 + +0x000000cb: 05 DW_LNS_set_column (7) +0x000000cd: 74 address += 7, line += 0 + 0x0000000000000111 38 7 1 0 0 + +0x000000ce: 05 DW_LNS_set_column (16) +0x000000d0: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000000d1: 20 address += 1, line += 0 + 0x0000000000000123 38 16 1 0 0 + +0x000000d2: 05 DW_LNS_set_column (24) +0x000000d4: 06 DW_LNS_negate_stmt +0x000000d5: 73 address += 7, line += -1 + 0x000000000000012a 37 24 1 0 0 is_stmt + +0x000000d6: 05 DW_LNS_set_column (4) +0x000000d8: 06 DW_LNS_negate_stmt +0x000000d9: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000000da: 82 address += 8, line += 0 + 0x0000000000000143 37 4 1 0 0 + +0x000000db: 2e address += 2, line += 0 + 0x0000000000000145 37 4 1 0 0 + +0x000000dc: 05 DW_LNS_set_column (21) +0x000000de: 06 DW_LNS_negate_stmt +0x000000df: 30 address += 2, line += 2 + 0x0000000000000147 39 21 1 0 0 is_stmt + +0x000000e0: 05 DW_LNS_set_column (23) +0x000000e2: 06 DW_LNS_negate_stmt +0x000000e3: 74 address += 7, line += 0 + 0x000000000000014e 39 23 1 0 0 + +0x000000e4: 05 DW_LNS_set_column (4) +0x000000e6: ac address += 11, line += 0 + 0x0000000000000159 39 4 1 0 0 + +0x000000e7: 05 DW_LNS_set_column (10) +0x000000e9: 74 address += 7, line += 0 + 0x0000000000000160 39 10 1 0 0 + +0x000000ea: 05 DW_LNS_set_column (16) +0x000000ec: 74 address += 7, line += 0 + 0x0000000000000167 39 16 1 0 0 + +0x000000ed: 05 DW_LNS_set_column (4) +0x000000ef: 74 address += 7, line += 0 + 0x000000000000016e 39 4 1 0 0 + +0x000000f0: 05 DW_LNS_set_column (19) +0x000000f2: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000000f3: 20 address += 1, line += 0 + 0x0000000000000180 39 19 1 0 0 + +0x000000f4: 06 DW_LNS_negate_stmt +0x000000f5: 75 address += 7, line += 1 + 0x0000000000000187 40 19 1 0 0 is_stmt + +0x000000f6: 05 DW_LNS_set_column (25) +0x000000f8: 06 DW_LNS_negate_stmt +0x000000f9: 74 address += 7, line += 0 + 0x000000000000018e 40 25 1 0 0 + +0x000000fa: 05 DW_LNS_set_column (4) +0x000000fc: 74 address += 7, line += 0 + 0x0000000000000195 40 4 1 0 0 + +0x000000fd: 05 DW_LNS_set_column (10) +0x000000ff: 74 address += 7, line += 0 + 0x000000000000019c 40 10 1 0 0 + +0x00000100: 05 DW_LNS_set_column (12) +0x00000102: 74 address += 7, line += 0 + 0x00000000000001a3 40 12 1 0 0 + +0x00000103: 05 DW_LNS_set_column (4) +0x00000105: ac address += 11, line += 0 + 0x00000000000001ae 40 4 1 0 0 + +0x00000106: 05 DW_LNS_set_column (17) +0x00000108: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000109: 20 address += 1, line += 0 + 0x00000000000001c0 40 17 1 0 0 + +0x0000010a: 05 DW_LNS_set_column (8) +0x0000010c: 06 DW_LNS_negate_stmt +0x0000010d: 75 address += 7, line += 1 + 0x00000000000001c7 41 8 1 0 0 is_stmt + +0x0000010e: 05 DW_LNS_set_column (6) +0x00000110: 06 DW_LNS_negate_stmt +0x00000111: 74 address += 7, line += 0 + 0x00000000000001ce 41 6 1 0 0 + +0x00000112: 03 DW_LNS_advance_line (0) +0x00000114: 74 address += 7, line += 0 + 0x00000000000001d5 0 6 1 0 0 + +0x00000115: 05 DW_LNS_set_column (14) +0x00000117: 06 DW_LNS_negate_stmt +0x00000118: 03 DW_LNS_advance_line (44) +0x0000011a: 9e address += 10, line += 0 + 0x00000000000001df 44 14 1 0 0 is_stmt + +0x0000011b: 05 DW_LNS_set_column (16) +0x0000011d: 06 DW_LNS_negate_stmt +0x0000011e: 74 address += 7, line += 0 + 0x00000000000001e6 44 16 1 0 0 + +0x0000011f: 05 DW_LNS_set_column (7) +0x00000121: e4 address += 15, line += 0 + 0x00000000000001f5 44 7 1 0 0 + +0x00000122: 05 DW_LNS_set_column (25) +0x00000124: 06 DW_LNS_negate_stmt +0x00000125: f3 address += 16, line += 1 + 0x0000000000000205 45 25 1 0 0 is_stmt + +0x00000126: 05 DW_LNS_set_column (10) +0x00000128: 06 DW_LNS_negate_stmt +0x00000129: 74 address += 7, line += 0 + 0x000000000000020c 45 10 1 0 0 + +0x0000012a: 05 DW_LNS_set_column (16) +0x0000012c: 74 address += 7, line += 0 + 0x0000000000000213 45 16 1 0 0 + +0x0000012d: 05 DW_LNS_set_column (18) +0x0000012f: 74 address += 7, line += 0 + 0x000000000000021a 45 18 1 0 0 + +0x00000130: 05 DW_LNS_set_column (10) +0x00000132: ac address += 11, line += 0 + 0x0000000000000225 45 10 1 0 0 + +0x00000133: 05 DW_LNS_set_column (23) +0x00000135: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000136: 20 address += 1, line += 0 + 0x0000000000000237 45 23 1 0 0 + +0x00000137: 05 DW_LNS_set_column (22) +0x00000139: 06 DW_LNS_negate_stmt +0x0000013a: 73 address += 7, line += -1 + 0x000000000000023e 44 22 1 0 0 is_stmt + +0x0000013b: 05 DW_LNS_set_column (7) +0x0000013d: 06 DW_LNS_negate_stmt +0x0000013e: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x0000013f: 82 address += 8, line += 0 + 0x0000000000000257 44 7 1 0 0 + +0x00000140: 2e address += 2, line += 0 + 0x0000000000000259 44 7 1 0 0 + +0x00000141: 05 DW_LNS_set_column (11) +0x00000143: 06 DW_LNS_negate_stmt +0x00000144: 30 address += 2, line += 2 + 0x000000000000025b 46 11 1 0 0 is_stmt + +0x00000145: 05 DW_LNS_set_column (25) +0x00000147: 06 DW_LNS_negate_stmt +0x00000148: d6 address += 14, line += 0 + 0x0000000000000269 46 25 1 0 0 + +0x00000149: 05 DW_LNS_set_column (28) +0x0000014b: 74 address += 7, line += 0 + 0x0000000000000270 46 28 1 0 0 + +0x0000014c: 05 DW_LNS_set_column (34) +0x0000014e: 74 address += 7, line += 0 + 0x0000000000000277 46 34 1 0 0 + +0x0000014f: 05 DW_LNS_set_column (36) +0x00000151: 74 address += 7, line += 0 + 0x000000000000027e 46 36 1 0 0 + +0x00000152: 05 DW_LNS_set_column (28) +0x00000154: ac address += 11, line += 0 + 0x0000000000000289 46 28 1 0 0 + +0x00000155: 05 DW_LNS_set_column (44) +0x00000157: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000158: 82 address += 8, line += 0 + 0x00000000000002a2 46 44 1 0 0 + +0x00000159: 05 DW_LNS_set_column (46) +0x0000015b: 74 address += 7, line += 0 + 0x00000000000002a9 46 46 1 0 0 + +0x0000015c: 05 DW_LNS_set_column (41) +0x0000015e: ac address += 11, line += 0 + 0x00000000000002b4 46 41 1 0 0 + +0x0000015f: 05 DW_LNS_set_column (11) +0x00000161: e4 address += 15, line += 0 + 0x00000000000002c3 46 11 1 0 0 + +0x00000162: 03 DW_LNS_advance_line (0) +0x00000164: f2 address += 16, line += 0 + 0x00000000000002d3 0 11 1 0 0 + +0x00000165: 05 DW_LNS_set_column (17) +0x00000167: 06 DW_LNS_negate_stmt +0x00000168: 03 DW_LNS_advance_line (47) +0x0000016a: 4a address += 4, line += 0 + 0x00000000000002d7 47 17 1 0 0 is_stmt + +0x0000016b: 05 DW_LNS_set_column (22) +0x0000016d: 06 DW_LNS_negate_stmt +0x0000016e: 74 address += 7, line += 0 + 0x00000000000002de 47 22 1 0 0 + +0x0000016f: 05 DW_LNS_set_column (26) +0x00000171: ac address += 11, line += 0 + 0x00000000000002e9 47 26 1 0 0 + +0x00000172: 05 DW_LNS_set_column (24) +0x00000174: 74 address += 7, line += 0 + 0x00000000000002f0 47 24 1 0 0 + +0x00000175: 05 DW_LNS_set_column (10) +0x00000177: e4 address += 15, line += 0 + 0x00000000000002ff 47 10 1 0 0 + +0x00000178: 05 DW_LNS_set_column (23) +0x0000017a: 06 DW_LNS_negate_stmt +0x0000017b: f3 address += 16, line += 1 + 0x000000000000030f 48 23 1 0 0 is_stmt + +0x0000017c: 05 DW_LNS_set_column (29) +0x0000017e: 06 DW_LNS_negate_stmt +0x0000017f: 74 address += 7, line += 0 + 0x0000000000000316 48 29 1 0 0 + +0x00000180: 05 DW_LNS_set_column (23) +0x00000182: 74 address += 7, line += 0 + 0x000000000000031d 48 23 1 0 0 + +0x00000183: 05 DW_LNS_set_column (13) +0x00000185: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000186: 82 address += 8, line += 0 + 0x0000000000000336 48 13 1 0 0 + +0x00000187: 05 DW_LNS_set_column (18) +0x00000189: 74 address += 7, line += 0 + 0x000000000000033d 48 18 1 0 0 + +0x0000018a: 05 DW_LNS_set_column (13) +0x0000018c: 74 address += 7, line += 0 + 0x0000000000000344 48 13 1 0 0 + +0x0000018d: 05 DW_LNS_set_column (21) +0x0000018f: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000190: 20 address += 1, line += 0 + 0x0000000000000356 48 21 1 0 0 + +0x00000191: 05 DW_LNS_set_column (30) +0x00000193: 06 DW_LNS_negate_stmt +0x00000194: 73 address += 7, line += -1 + 0x000000000000035d 47 30 1 0 0 is_stmt + +0x00000195: 05 DW_LNS_set_column (10) +0x00000197: 06 DW_LNS_negate_stmt +0x00000198: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000199: 82 address += 8, line += 0 + 0x0000000000000376 47 10 1 0 0 + +0x0000019a: 2e address += 2, line += 0 + 0x0000000000000378 47 10 1 0 0 + +0x0000019b: 05 DW_LNS_set_column (16) +0x0000019d: 06 DW_LNS_negate_stmt +0x0000019e: 68 address += 6, line += 2 + 0x000000000000037e 49 16 1 0 0 is_stmt + +0x0000019f: 05 DW_LNS_set_column (14) +0x000001a1: 75 address += 7, line += 1 + 0x0000000000000385 50 14 1 0 0 is_stmt + +0x000001a2: 05 DW_LNS_set_column (12) +0x000001a4: 06 DW_LNS_negate_stmt +0x000001a5: d6 address += 14, line += 0 + 0x0000000000000393 50 12 1 0 0 + +0x000001a6: 03 DW_LNS_advance_line (0) +0x000001a8: 74 address += 7, line += 0 + 0x000000000000039a 0 12 1 0 0 + +0x000001a9: 05 DW_LNS_set_column (20) +0x000001ab: 06 DW_LNS_negate_stmt +0x000001ac: 03 DW_LNS_advance_line (52) +0x000001ae: 66 address += 6, line += 0 + 0x00000000000003a0 52 20 1 0 0 is_stmt + +0x000001af: 05 DW_LNS_set_column (29) +0x000001b1: 06 DW_LNS_negate_stmt +0x000001b2: 74 address += 7, line += 0 + 0x00000000000003a7 52 29 1 0 0 + +0x000001b3: 05 DW_LNS_set_column (31) +0x000001b5: 74 address += 7, line += 0 + 0x00000000000003ae 52 31 1 0 0 + +0x000001b6: 05 DW_LNS_set_column (27) +0x000001b8: ac address += 11, line += 0 + 0x00000000000003b9 52 27 1 0 0 + +0x000001b9: 05 DW_LNS_set_column (36) +0x000001bb: 74 address += 7, line += 0 + 0x00000000000003c0 52 36 1 0 0 + +0x000001bc: 05 DW_LNS_set_column (40) +0x000001be: ac address += 11, line += 0 + 0x00000000000003cb 52 40 1 0 0 + +0x000001bf: 05 DW_LNS_set_column (38) +0x000001c1: 74 address += 7, line += 0 + 0x00000000000003d2 52 38 1 0 0 + +0x000001c2: 05 DW_LNS_set_column (13) +0x000001c4: e4 address += 15, line += 0 + 0x00000000000003e1 52 13 1 0 0 + +0x000001c5: 05 DW_LNS_set_column (22) +0x000001c7: 06 DW_LNS_negate_stmt +0x000001c8: f3 address += 16, line += 1 + 0x00000000000003f1 53 22 1 0 0 is_stmt + +0x000001c9: 05 DW_LNS_set_column (27) +0x000001cb: 06 DW_LNS_negate_stmt +0x000001cc: 74 address += 7, line += 0 + 0x00000000000003f8 53 27 1 0 0 + +0x000001cd: 05 DW_LNS_set_column (22) +0x000001cf: 82 address += 8, line += 0 + 0x0000000000000400 53 22 1 0 0 + +0x000001d0: 05 DW_LNS_set_column (20) +0x000001d2: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000001d3: f2 address += 16, line += 0 + 0x0000000000000421 53 20 1 0 0 + +0x000001d4: 05 DW_LNS_set_column (26) +0x000001d6: 06 DW_LNS_negate_stmt +0x000001d7: 83 address += 8, line += 1 + 0x0000000000000429 54 26 1 0 0 is_stmt + +0x000001d8: 05 DW_LNS_set_column (31) +0x000001da: 06 DW_LNS_negate_stmt +0x000001db: 82 address += 8, line += 0 + 0x0000000000000431 54 31 1 0 0 + +0x000001dc: 05 DW_LNS_set_column (26) +0x000001de: 82 address += 8, line += 0 + 0x0000000000000439 54 26 1 0 0 + +0x000001df: 05 DW_LNS_set_column (16) +0x000001e1: 02 DW_LNS_advance_pc (34) +0x000001e3: 12 address += 0, line += 0 + 0x000000000000045b 54 16 1 0 0 + +0x000001e4: 05 DW_LNS_set_column (21) +0x000001e6: 82 address += 8, line += 0 + 0x0000000000000463 54 21 1 0 0 + +0x000001e7: 05 DW_LNS_set_column (16) +0x000001e9: 82 address += 8, line += 0 + 0x000000000000046b 54 16 1 0 0 + +0x000001ea: 05 DW_LNS_set_column (24) +0x000001ec: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000001ed: 82 address += 8, line += 0 + 0x0000000000000484 54 24 1 0 0 + +0x000001ee: 05 DW_LNS_set_column (26) +0x000001f0: 06 DW_LNS_negate_stmt +0x000001f1: 91 address += 9, line += 1 + 0x000000000000048d 55 26 1 0 0 is_stmt + +0x000001f2: 05 DW_LNS_set_column (16) +0x000001f4: 06 DW_LNS_negate_stmt +0x000001f5: 82 address += 8, line += 0 + 0x0000000000000495 55 16 1 0 0 + +0x000001f6: 05 DW_LNS_set_column (21) +0x000001f8: 82 address += 8, line += 0 + 0x000000000000049d 55 21 1 0 0 + +0x000001f9: 05 DW_LNS_set_column (16) +0x000001fb: 82 address += 8, line += 0 + 0x00000000000004a5 55 16 1 0 0 + +0x000001fc: 05 DW_LNS_set_column (24) +0x000001fe: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000001ff: 82 address += 8, line += 0 + 0x00000000000004be 55 24 1 0 0 + +0x00000200: 05 DW_LNS_set_column (44) +0x00000202: 06 DW_LNS_negate_stmt +0x00000203: 8d address += 9, line += -3 + 0x00000000000004c7 52 44 1 0 0 is_stmt + +0x00000204: 05 DW_LNS_set_column (49) +0x00000206: 06 DW_LNS_negate_stmt +0x00000207: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000208: d6 address += 14, line += 0 + 0x00000000000004e6 52 49 1 0 0 + +0x00000209: 05 DW_LNS_set_column (13) +0x0000020b: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x0000020c: d6 address += 14, line += 0 + 0x0000000000000505 52 13 1 0 0 + +0x0000020d: 2e address += 2, line += 0 + 0x0000000000000507 52 13 1 0 0 + +0x0000020e: 05 DW_LNS_set_column (18) +0x00000210: 06 DW_LNS_negate_stmt +0x00000211: 33 address += 2, line += 5 + 0x0000000000000509 57 18 1 0 0 is_stmt + +0x00000212: 05 DW_LNS_set_column (19) +0x00000214: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000215: d7 address += 14, line += 1 + 0x0000000000000528 58 19 1 0 0 is_stmt + +0x00000216: 05 DW_LNS_set_column (24) +0x00000218: 06 DW_LNS_negate_stmt +0x00000219: 82 address += 8, line += 0 + 0x0000000000000530 58 24 1 0 0 + +0x0000021a: 05 DW_LNS_set_column (19) +0x0000021c: 82 address += 8, line += 0 + 0x0000000000000538 58 19 1 0 0 + +0x0000021d: 05 DW_LNS_set_column (17) +0x0000021f: 02 DW_LNS_advance_pc (34) +0x00000221: 12 address += 0, line += 0 + 0x000000000000055a 58 17 1 0 0 + +0x00000222: 05 DW_LNS_set_column (23) +0x00000224: 06 DW_LNS_negate_stmt +0x00000225: 83 address += 8, line += 1 + 0x0000000000000562 59 23 1 0 0 is_stmt + +0x00000226: 05 DW_LNS_set_column (13) +0x00000228: 06 DW_LNS_negate_stmt +0x00000229: 82 address += 8, line += 0 + 0x000000000000056a 59 13 1 0 0 + +0x0000022a: 05 DW_LNS_set_column (18) +0x0000022c: 82 address += 8, line += 0 + 0x0000000000000572 59 18 1 0 0 + +0x0000022d: 05 DW_LNS_set_column (13) +0x0000022f: 82 address += 8, line += 0 + 0x000000000000057a 59 13 1 0 0 + +0x00000230: 05 DW_LNS_set_column (21) +0x00000232: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000233: 82 address += 8, line += 0 + 0x0000000000000593 59 21 1 0 0 + +0x00000234: 05 DW_LNS_set_column (17) +0x00000236: 06 DW_LNS_negate_stmt +0x00000237: 91 address += 9, line += 1 + 0x000000000000059c 60 17 1 0 0 is_stmt + +0x00000238: 05 DW_LNS_set_column (15) +0x0000023a: 06 DW_LNS_negate_stmt +0x0000023b: 82 address += 8, line += 0 + 0x00000000000005a4 60 15 1 0 0 + +0x0000023c: 05 DW_LNS_set_column (19) +0x0000023e: 06 DW_LNS_negate_stmt +0x0000023f: 83 address += 8, line += 1 + 0x00000000000005ac 61 19 1 0 0 is_stmt + +0x00000240: 05 DW_LNS_set_column (10) +0x00000242: 06 DW_LNS_negate_stmt +0x00000243: 82 address += 8, line += 0 + 0x00000000000005b4 61 10 1 0 0 + +0x00000244: 05 DW_LNS_set_column (14) +0x00000246: 06 DW_LNS_negate_stmt +0x00000247: 67 address += 6, line += 1 + 0x00000000000005ba 62 14 1 0 0 is_stmt + +0x00000248: 05 DW_LNS_set_column (25) +0x0000024a: 06 DW_LNS_negate_stmt +0x0000024b: 82 address += 8, line += 0 + 0x00000000000005c2 62 25 1 0 0 + +0x0000024c: 05 DW_LNS_set_column (23) +0x0000024e: 82 address += 8, line += 0 + 0x00000000000005ca 62 23 1 0 0 + +0x0000024f: 05 DW_LNS_set_column (14) +0x00000251: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000252: 58 address += 5, line += 0 + 0x00000000000005e0 62 14 1 0 0 + +0x00000253: 05 DW_LNS_set_column (24) +0x00000255: 06 DW_LNS_negate_stmt +0x00000256: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000257: 67 address += 6, line += 1 + 0x00000000000005f7 63 24 1 0 0 is_stmt + +0x00000258: 05 DW_LNS_set_column (22) +0x0000025a: 06 DW_LNS_negate_stmt +0x0000025b: 82 address += 8, line += 0 + 0x00000000000005ff 63 22 1 0 0 + +0x0000025c: 03 DW_LNS_advance_line (0) +0x0000025e: 82 address += 8, line += 0 + 0x0000000000000607 0 22 1 0 0 + +0x0000025f: 05 DW_LNS_set_column (14) +0x00000261: 06 DW_LNS_negate_stmt +0x00000262: 03 DW_LNS_advance_line (66) +0x00000265: 2e address += 2, line += 0 + 0x0000000000000609 66 14 1 0 0 is_stmt + +0x00000266: 05 DW_LNS_set_column (19) +0x00000268: 06 DW_LNS_negate_stmt +0x00000269: 9e address += 10, line += 0 + 0x0000000000000613 66 19 1 0 0 + +0x0000026a: 05 DW_LNS_set_column (21) +0x0000026c: 82 address += 8, line += 0 + 0x000000000000061b 66 21 1 0 0 + +0x0000026d: 05 DW_LNS_set_column (16) +0x0000026f: e4 address += 15, line += 0 + 0x000000000000062a 66 16 1 0 0 + +0x00000270: 05 DW_LNS_set_column (14) +0x00000272: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000273: 58 address += 5, line += 0 + 0x0000000000000640 66 14 1 0 0 + +0x00000274: 05 DW_LNS_set_column (18) +0x00000276: 06 DW_LNS_negate_stmt +0x00000277: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000278: 67 address += 6, line += 1 + 0x0000000000000657 67 18 1 0 0 is_stmt + +0x00000279: 05 DW_LNS_set_column (13) +0x0000027b: 06 DW_LNS_negate_stmt +0x0000027c: 82 address += 8, line += 0 + 0x000000000000065f 67 13 1 0 0 + +0x0000027d: 05 DW_LNS_set_column (18) +0x0000027f: 06 DW_LNS_negate_stmt +0x00000280: 91 address += 9, line += 1 + 0x0000000000000668 68 18 1 0 0 is_stmt + +0x00000281: 05 DW_LNS_set_column (13) +0x00000283: 06 DW_LNS_negate_stmt +0x00000284: 82 address += 8, line += 0 + 0x0000000000000670 68 13 1 0 0 + +0x00000285: 05 DW_LNS_set_column (18) +0x00000287: 06 DW_LNS_negate_stmt +0x00000288: 91 address += 9, line += 1 + 0x0000000000000679 69 18 1 0 0 is_stmt + +0x00000289: 05 DW_LNS_set_column (13) +0x0000028b: 06 DW_LNS_negate_stmt +0x0000028c: 82 address += 8, line += 0 + 0x0000000000000681 69 13 1 0 0 + +0x0000028d: 05 DW_LNS_set_column (20) +0x0000028f: 06 DW_LNS_negate_stmt +0x00000290: 91 address += 9, line += 1 + 0x000000000000068a 70 20 1 0 0 is_stmt + +0x00000291: 05 DW_LNS_set_column (13) +0x00000293: 06 DW_LNS_negate_stmt +0x00000294: 82 address += 8, line += 0 + 0x0000000000000692 70 13 1 0 0 + +0x00000295: 03 DW_LNS_advance_line (0) +0x00000298: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000299: ac address += 11, line += 0 + 0x00000000000006ae 0 13 1 0 0 + +0x0000029a: 05 DW_LNS_set_column (22) +0x0000029c: 06 DW_LNS_negate_stmt +0x0000029d: 03 DW_LNS_advance_line (74) +0x000002a0: 66 address += 6, line += 0 + 0x00000000000006b4 74 22 1 0 0 is_stmt + +0x000002a1: 05 DW_LNS_set_column (17) +0x000002a3: 06 DW_LNS_negate_stmt +0x000002a4: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000002a5: 12 address += 0, line += 0 + 0x00000000000006c5 74 17 1 0 0 + +0x000002a6: 05 DW_LNS_set_column (20) +0x000002a8: 06 DW_LNS_negate_stmt +0x000002a9: 83 address += 8, line += 1 + 0x00000000000006cd 75 20 1 0 0 is_stmt + +0x000002aa: 05 DW_LNS_set_column (25) +0x000002ac: 06 DW_LNS_negate_stmt +0x000002ad: 82 address += 8, line += 0 + 0x00000000000006d5 75 25 1 0 0 + +0x000002ae: 05 DW_LNS_set_column (29) +0x000002b0: ba address += 12, line += 0 + 0x00000000000006e1 75 29 1 0 0 + +0x000002b1: 05 DW_LNS_set_column (27) +0x000002b3: 82 address += 8, line += 0 + 0x00000000000006e9 75 27 1 0 0 + +0x000002b4: 05 DW_LNS_set_column (13) +0x000002b6: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000002b7: 58 address += 5, line += 0 + 0x00000000000006ff 75 13 1 0 0 + +0x000002b8: 05 DW_LNS_set_column (27) +0x000002ba: 06 DW_LNS_negate_stmt +0x000002bb: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000002bc: 4b address += 4, line += 1 + 0x0000000000000714 76 27 1 0 0 is_stmt + +0x000002bd: 05 DW_LNS_set_column (33) +0x000002bf: 06 DW_LNS_negate_stmt +0x000002c0: 82 address += 8, line += 0 + 0x000000000000071c 76 33 1 0 0 + +0x000002c1: 05 DW_LNS_set_column (35) +0x000002c3: 82 address += 8, line += 0 + 0x0000000000000724 76 35 1 0 0 + +0x000002c4: 05 DW_LNS_set_column (27) +0x000002c6: e4 address += 15, line += 0 + 0x0000000000000733 76 27 1 0 0 + +0x000002c7: 05 DW_LNS_set_column (16) +0x000002c9: 02 DW_LNS_advance_pc (34) +0x000002cb: 12 address += 0, line += 0 + 0x0000000000000755 76 16 1 0 0 + +0x000002cc: 05 DW_LNS_set_column (22) +0x000002ce: 82 address += 8, line += 0 + 0x000000000000075d 76 22 1 0 0 + +0x000002cf: 05 DW_LNS_set_column (16) +0x000002d1: 82 address += 8, line += 0 + 0x0000000000000765 76 16 1 0 0 + +0x000002d2: 05 DW_LNS_set_column (25) +0x000002d4: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000002d5: 82 address += 8, line += 0 + 0x000000000000077e 76 25 1 0 0 + +0x000002d6: 05 DW_LNS_set_column (33) +0x000002d8: 06 DW_LNS_negate_stmt +0x000002d9: 8f address += 9, line += -1 + 0x0000000000000787 75 33 1 0 0 is_stmt + +0x000002da: 05 DW_LNS_set_column (13) +0x000002dc: 06 DW_LNS_negate_stmt +0x000002dd: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000002de: d6 address += 14, line += 0 + 0x00000000000007a6 75 13 1 0 0 + +0x000002df: 2e address += 2, line += 0 + 0x00000000000007a8 75 13 1 0 0 + +0x000002e0: 05 DW_LNS_set_column (24) +0x000002e2: 06 DW_LNS_negate_stmt +0x000002e3: 76 address += 7, line += 2 + 0x00000000000007af 77 24 1 0 0 is_stmt + +0x000002e4: 05 DW_LNS_set_column (13) +0x000002e6: 06 DW_LNS_negate_stmt +0x000002e7: 82 address += 8, line += 0 + 0x00000000000007b7 77 13 1 0 0 + +0x000002e8: 05 DW_LNS_set_column (19) +0x000002ea: 82 address += 8, line += 0 + 0x00000000000007bf 77 19 1 0 0 + +0x000002eb: 05 DW_LNS_set_column (13) +0x000002ed: 82 address += 8, line += 0 + 0x00000000000007c7 77 13 1 0 0 + +0x000002ee: 05 DW_LNS_set_column (22) +0x000002f0: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000002f1: 82 address += 8, line += 0 + 0x00000000000007e0 77 22 1 0 0 + +0x000002f2: 05 DW_LNS_set_column (16) +0x000002f4: 06 DW_LNS_negate_stmt +0x000002f5: 92 address += 9, line += 2 + 0x00000000000007e9 79 16 1 0 0 is_stmt + +0x000002f6: 05 DW_LNS_set_column (22) +0x000002f8: 06 DW_LNS_negate_stmt +0x000002f9: 82 address += 8, line += 0 + 0x00000000000007f1 79 22 1 0 0 + +0x000002fa: 05 DW_LNS_set_column (16) +0x000002fc: 82 address += 8, line += 0 + 0x00000000000007f9 79 16 1 0 0 + +0x000002fd: 05 DW_LNS_set_column (14) +0x000002ff: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000300: 82 address += 8, line += 0 + 0x0000000000000812 79 14 1 0 0 + +0x00000301: 05 DW_LNS_set_column (25) +0x00000303: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000304: f2 address += 16, line += 0 + 0x0000000000000833 79 25 1 0 0 + +0x00000305: 05 DW_LNS_set_column (14) +0x00000307: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000308: 58 address += 5, line += 0 + 0x0000000000000849 79 14 1 0 0 + +0x00000309: 05 DW_LNS_set_column (13) +0x0000030b: 06 DW_LNS_negate_stmt +0x0000030c: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x0000030d: 83 address += 8, line += 1 + 0x0000000000000862 80 13 1 0 0 is_stmt + +0x0000030e: 06 DW_LNS_negate_stmt +0x0000030f: 03 DW_LNS_advance_line (0) +0x00000312: 2e address += 2, line += 0 + 0x0000000000000864 0 13 1 0 0 + +0x00000313: 05 DW_LNS_set_column (11) +0x00000315: 06 DW_LNS_negate_stmt +0x00000316: 03 DW_LNS_advance_line (81) +0x00000319: 20 address += 1, line += 0 + 0x0000000000000865 81 11 1 0 0 is_stmt + +0x0000031a: 05 DW_LNS_set_column (7) +0x0000031c: 03 DW_LNS_advance_line (65) +0x0000031e: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x0000031f: d6 address += 14, line += 0 + 0x0000000000000884 65 7 1 0 0 is_stmt + +0x00000320: 06 DW_LNS_negate_stmt +0x00000321: 03 DW_LNS_advance_line (0) +0x00000324: 2e address += 2, line += 0 + 0x0000000000000886 0 7 1 0 0 + +0x00000325: 05 DW_LNS_set_column (13) +0x00000327: 06 DW_LNS_negate_stmt +0x00000328: 03 DW_LNS_advance_line (80) +0x0000032b: 20 address += 1, line += 0 + 0x0000000000000887 80 13 1 0 0 is_stmt + +0x0000032c: 05 DW_LNS_set_column (4) +0x0000032e: 03 DW_LNS_advance_line (43) +0x00000330: 20 address += 1, line += 0 + 0x0000000000000888 43 4 1 0 0 is_stmt + +0x00000331: 06 DW_LNS_negate_stmt +0x00000332: 03 DW_LNS_advance_line (0) +0x00000334: 2e address += 2, line += 0 + 0x000000000000088a 0 4 1 0 0 + +0x00000335: 02 DW_LNS_advance_pc (2) +0x00000337: 00 DW_LNE_end_sequence + 0x000000000000088c 0 4 1 0 0 end_sequence + +0x0000033a: 00 DW_LNE_set_address (0x000000000000088e) +0x00000341: 03 DW_LNS_advance_line (152) +0x00000344: 01 DW_LNS_copy + 0x000000000000088e 152 0 1 0 0 is_stmt + + +0x00000345: 05 DW_LNS_set_column (12) +0x00000347: 0a DW_LNS_set_prologue_end +0x00000348: 02 DW_LNS_advance_pc (59) +0x0000034a: 13 address += 0, line += 1 + 0x00000000000008c9 153 12 1 0 0 is_stmt prologue_end + +0x0000034b: 05 DW_LNS_set_column (17) +0x0000034d: 06 DW_LNS_negate_stmt +0x0000034e: 74 address += 7, line += 0 + 0x00000000000008d0 153 17 1 0 0 + +0x0000034f: 05 DW_LNS_set_column (12) +0x00000351: e4 address += 15, line += 0 + 0x00000000000008df 153 12 1 0 0 + +0x00000352: 05 DW_LNS_set_column (28) +0x00000354: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000355: 3c address += 3, line += 0 + 0x00000000000008f3 153 28 1 0 0 + +0x00000356: 05 DW_LNS_set_column (23) +0x00000358: d6 address += 14, line += 0 + 0x0000000000000901 153 23 1 0 0 + +0x00000359: 05 DW_LNS_set_column (12) +0x0000035b: 9e address += 10, line += 0 + 0x000000000000090b 153 12 1 0 0 + +0x0000035c: 03 DW_LNS_advance_line (0) +0x0000035f: 66 address += 6, line += 0 + 0x0000000000000911 0 12 1 0 0 + +0x00000360: 03 DW_LNS_advance_line (153) +0x00000363: 58 address += 5, line += 0 + 0x0000000000000916 153 12 1 0 0 + +0x00000364: 03 DW_LNS_advance_line (0) +0x00000367: 4a address += 4, line += 0 + 0x000000000000091a 0 12 1 0 0 + +0x00000368: 03 DW_LNS_advance_line (153) +0x0000036b: 20 address += 1, line += 0 + 0x000000000000091b 153 12 1 0 0 + +0x0000036c: 05 DW_LNS_set_column (8) +0x0000036e: 82 address += 8, line += 0 + 0x0000000000000923 153 8 1 0 0 + +0x0000036f: 06 DW_LNS_negate_stmt +0x00000370: 76 address += 7, line += 2 + 0x000000000000092a 155 8 1 0 0 is_stmt + +0x00000371: 05 DW_LNS_set_column (10) +0x00000373: 06 DW_LNS_negate_stmt +0x00000374: 74 address += 7, line += 0 + 0x0000000000000931 155 10 1 0 0 + +0x00000375: 05 DW_LNS_set_column (8) +0x00000377: e4 address += 15, line += 0 + 0x0000000000000940 155 8 1 0 0 + +0x00000378: 05 DW_LNS_set_column (7) +0x0000037a: 06 DW_LNS_negate_stmt +0x0000037b: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x0000037c: 3d address += 3, line += 1 + 0x0000000000000954 156 7 1 0 0 is_stmt + +0x0000037d: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x0000037e: 9f address += 10, line += 1 + 0x000000000000096f 157 7 1 0 0 is_stmt + +0x0000037f: 06 DW_LNS_negate_stmt +0x00000380: 03 DW_LNS_advance_line (0) +0x00000383: 90 address += 9, line += 0 + 0x0000000000000978 0 7 1 0 0 + +0x00000384: 05 DW_LNS_set_column (38) +0x00000386: 06 DW_LNS_negate_stmt +0x00000387: 03 DW_LNS_advance_line (159) +0x0000038a: 20 address += 1, line += 0 + 0x0000000000000979 159 38 1 0 0 is_stmt + +0x0000038b: 05 DW_LNS_set_column (50) +0x0000038d: 06 DW_LNS_negate_stmt +0x0000038e: 74 address += 7, line += 0 + 0x0000000000000980 159 50 1 0 0 + +0x0000038f: 05 DW_LNS_set_column (41) +0x00000391: 74 address += 7, line += 0 + 0x0000000000000987 159 41 1 0 0 + +0x00000392: 05 DW_LNS_set_column (4) +0x00000394: 9e address += 10, line += 0 + 0x0000000000000991 159 4 1 0 0 + +0x00000395: 06 DW_LNS_negate_stmt +0x00000396: 02 DW_LNS_advance_pc (37) +0x00000398: 13 address += 0, line += 1 + 0x00000000000009b6 160 4 1 0 0 is_stmt + +0x00000399: 06 DW_LNS_negate_stmt +0x0000039a: 03 DW_LNS_advance_line (0) +0x0000039d: 74 address += 7, line += 0 + 0x00000000000009bd 0 4 1 0 0 + +0x0000039e: 05 DW_LNS_set_column (1) +0x000003a0: 06 DW_LNS_negate_stmt +0x000003a1: 03 DW_LNS_advance_line (161) +0x000003a4: 20 address += 1, line += 0 + 0x00000000000009be 161 1 1 0 0 is_stmt + +0x000003a5: 02 DW_LNS_advance_pc (30) +0x000003a7: 00 DW_LNE_end_sequence + 0x00000000000009dc 161 1 1 0 0 is_stmt end_sequence + +0x000003aa: 00 DW_LNE_set_address (0x00000000000009de) +0x000003b1: 03 DW_LNS_advance_line (88) +0x000003b4: 01 DW_LNS_copy + 0x00000000000009de 88 0 1 0 0 is_stmt + + +0x000003b5: 05 DW_LNS_set_column (8) +0x000003b7: 0a DW_LNS_set_prologue_end +0x000003b8: 02 DW_LNS_advance_pc (46) +0x000003ba: 14 address += 0, line += 2 + 0x0000000000000a0c 90 8 1 0 0 is_stmt prologue_end + +0x000003bb: 05 DW_LNS_set_column (9) +0x000003bd: 77 address += 7, line += 3 + 0x0000000000000a13 93 9 1 0 0 is_stmt + +0x000003be: 05 DW_LNS_set_column (11) +0x000003c0: 75 address += 7, line += 1 + 0x0000000000000a1a 94 11 1 0 0 is_stmt + +0x000003c1: 05 DW_LNS_set_column (16) +0x000003c3: 06 DW_LNS_negate_stmt +0x000003c4: 74 address += 7, line += 0 + 0x0000000000000a21 94 16 1 0 0 + +0x000003c5: 05 DW_LNS_set_column (20) +0x000003c7: ac address += 11, line += 0 + 0x0000000000000a2c 94 20 1 0 0 + +0x000003c8: 05 DW_LNS_set_column (22) +0x000003ca: 74 address += 7, line += 0 + 0x0000000000000a33 94 22 1 0 0 + +0x000003cb: 05 DW_LNS_set_column (18) +0x000003cd: ac address += 11, line += 0 + 0x0000000000000a3e 94 18 1 0 0 + +0x000003ce: 05 DW_LNS_set_column (4) +0x000003d0: e4 address += 15, line += 0 + 0x0000000000000a4d 94 4 1 0 0 + +0x000003d1: 03 DW_LNS_advance_line (0) +0x000003d4: f2 address += 16, line += 0 + 0x0000000000000a5d 0 4 1 0 0 + +0x000003d5: 05 DW_LNS_set_column (29) +0x000003d7: 06 DW_LNS_negate_stmt +0x000003d8: 03 DW_LNS_advance_line (95) +0x000003db: 4a address += 4, line += 0 + 0x0000000000000a61 95 29 1 0 0 is_stmt + +0x000003dc: 05 DW_LNS_set_column (13) +0x000003de: 06 DW_LNS_negate_stmt +0x000003df: 9e address += 10, line += 0 + 0x0000000000000a6b 95 13 1 0 0 + +0x000003e0: 05 DW_LNS_set_column (18) +0x000003e2: 06 DW_LNS_negate_stmt +0x000003e3: 75 address += 7, line += 1 + 0x0000000000000a72 96 18 1 0 0 is_stmt + +0x000003e4: 05 DW_LNS_set_column (7) +0x000003e6: 06 DW_LNS_negate_stmt +0x000003e7: 74 address += 7, line += 0 + 0x0000000000000a79 96 7 1 0 0 + +0x000003e8: 05 DW_LNS_set_column (16) +0x000003ea: 74 address += 7, line += 0 + 0x0000000000000a80 96 16 1 0 0 + +0x000003eb: 05 DW_LNS_set_column (18) +0x000003ed: 06 DW_LNS_negate_stmt +0x000003ee: 75 address += 7, line += 1 + 0x0000000000000a87 97 18 1 0 0 is_stmt + +0x000003ef: 05 DW_LNS_set_column (7) +0x000003f1: 06 DW_LNS_negate_stmt +0x000003f2: 74 address += 7, line += 0 + 0x0000000000000a8e 97 7 1 0 0 + +0x000003f3: 05 DW_LNS_set_column (16) +0x000003f5: 74 address += 7, line += 0 + 0x0000000000000a95 97 16 1 0 0 + +0x000003f6: 05 DW_LNS_set_column (21) +0x000003f8: 06 DW_LNS_negate_stmt +0x000003f9: 75 address += 7, line += 1 + 0x0000000000000a9c 98 21 1 0 0 is_stmt + +0x000003fa: 05 DW_LNS_set_column (7) +0x000003fc: 06 DW_LNS_negate_stmt +0x000003fd: 74 address += 7, line += 0 + 0x0000000000000aa3 98 7 1 0 0 + +0x000003fe: 05 DW_LNS_set_column (19) +0x00000400: 74 address += 7, line += 0 + 0x0000000000000aaa 98 19 1 0 0 + +0x00000401: 05 DW_LNS_set_column (14) +0x00000403: 06 DW_LNS_negate_stmt +0x00000404: 75 address += 7, line += 1 + 0x0000000000000ab1 99 14 1 0 0 is_stmt + +0x00000405: 05 DW_LNS_set_column (12) +0x00000407: 06 DW_LNS_negate_stmt +0x00000408: 74 address += 7, line += 0 + 0x0000000000000ab8 99 12 1 0 0 + +0x00000409: 05 DW_LNS_set_column (28) +0x0000040b: 06 DW_LNS_negate_stmt +0x0000040c: 6f address += 7, line += -5 + 0x0000000000000abf 94 28 1 0 0 is_stmt + +0x0000040d: 05 DW_LNS_set_column (4) +0x0000040f: 06 DW_LNS_negate_stmt +0x00000410: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000411: 82 address += 8, line += 0 + 0x0000000000000ad8 94 4 1 0 0 + +0x00000412: 2e address += 2, line += 0 + 0x0000000000000ada 94 4 1 0 0 + +0x00000413: 05 DW_LNS_set_column (25) +0x00000415: 06 DW_LNS_negate_stmt +0x00000416: 6e address += 6, line += 8 + 0x0000000000000ae0 102 25 1 0 0 is_stmt + +0x00000417: 05 DW_LNS_set_column (27) +0x00000419: 06 DW_LNS_negate_stmt +0x0000041a: 74 address += 7, line += 0 + 0x0000000000000ae7 102 27 1 0 0 + +0x0000041b: 05 DW_LNS_set_column (18) +0x0000041d: ac address += 11, line += 0 + 0x0000000000000af2 102 18 1 0 0 + +0x0000041e: 05 DW_LNS_set_column (10) +0x00000420: 9e address += 10, line += 0 + 0x0000000000000afc 102 10 1 0 0 + +0x00000421: 05 DW_LNS_set_column (25) +0x00000423: 06 DW_LNS_negate_stmt +0x00000424: 75 address += 7, line += 1 + 0x0000000000000b03 103 25 1 0 0 is_stmt + +0x00000425: 05 DW_LNS_set_column (27) +0x00000427: 06 DW_LNS_negate_stmt +0x00000428: 74 address += 7, line += 0 + 0x0000000000000b0a 103 27 1 0 0 + +0x00000429: 05 DW_LNS_set_column (18) +0x0000042b: ac address += 11, line += 0 + 0x0000000000000b15 103 18 1 0 0 + +0x0000042c: 05 DW_LNS_set_column (10) +0x0000042e: 9e address += 10, line += 0 + 0x0000000000000b1f 103 10 1 0 0 + +0x0000042f: 05 DW_LNS_set_column (11) +0x00000431: 06 DW_LNS_negate_stmt +0x00000432: 76 address += 7, line += 2 + 0x0000000000000b26 105 11 1 0 0 is_stmt + +0x00000433: 05 DW_LNS_set_column (16) +0x00000435: 06 DW_LNS_negate_stmt +0x00000436: 74 address += 7, line += 0 + 0x0000000000000b2d 105 16 1 0 0 + +0x00000437: 05 DW_LNS_set_column (20) +0x00000439: ac address += 11, line += 0 + 0x0000000000000b38 105 20 1 0 0 + +0x0000043a: 05 DW_LNS_set_column (18) +0x0000043c: 74 address += 7, line += 0 + 0x0000000000000b3f 105 18 1 0 0 + +0x0000043d: 05 DW_LNS_set_column (4) +0x0000043f: e4 address += 15, line += 0 + 0x0000000000000b4e 105 4 1 0 0 + +0x00000440: 05 DW_LNS_set_column (18) +0x00000442: 06 DW_LNS_negate_stmt +0x00000443: f3 address += 16, line += 1 + 0x0000000000000b5e 106 18 1 0 0 is_stmt + +0x00000444: 05 DW_LNS_set_column (7) +0x00000446: 06 DW_LNS_negate_stmt +0x00000447: 74 address += 7, line += 0 + 0x0000000000000b65 106 7 1 0 0 + +0x00000448: 05 DW_LNS_set_column (13) +0x0000044a: 74 address += 7, line += 0 + 0x0000000000000b6c 106 13 1 0 0 + +0x0000044b: 05 DW_LNS_set_column (7) +0x0000044d: 74 address += 7, line += 0 + 0x0000000000000b73 106 7 1 0 0 + +0x0000044e: 05 DW_LNS_set_column (16) +0x00000450: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000451: 20 address += 1, line += 0 + 0x0000000000000b85 106 16 1 0 0 + +0x00000452: 05 DW_LNS_set_column (24) +0x00000454: 06 DW_LNS_negate_stmt +0x00000455: 73 address += 7, line += -1 + 0x0000000000000b8c 105 24 1 0 0 is_stmt + +0x00000456: 05 DW_LNS_set_column (4) +0x00000458: 06 DW_LNS_negate_stmt +0x00000459: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x0000045a: 82 address += 8, line += 0 + 0x0000000000000ba5 105 4 1 0 0 + +0x0000045b: 2e address += 2, line += 0 + 0x0000000000000ba7 105 4 1 0 0 + +0x0000045c: 05 DW_LNS_set_column (8) +0x0000045e: 06 DW_LNS_negate_stmt +0x0000045f: 31 address += 2, line += 3 + 0x0000000000000ba9 108 8 1 0 0 is_stmt + +0x00000460: 05 DW_LNS_set_column (6) +0x00000462: 06 DW_LNS_negate_stmt +0x00000463: 74 address += 7, line += 0 + 0x0000000000000bb0 108 6 1 0 0 + +0x00000464: 05 DW_LNS_set_column (11) +0x00000466: 06 DW_LNS_negate_stmt +0x00000467: 76 address += 7, line += 2 + 0x0000000000000bb7 110 11 1 0 0 is_stmt + +0x00000468: 06 DW_LNS_negate_stmt +0x00000469: ac address += 11, line += 0 + 0x0000000000000bc2 110 11 1 0 0 + +0x0000046a: 03 DW_LNS_advance_line (0) +0x0000046d: 90 address += 9, line += 0 + 0x0000000000000bcb 0 11 1 0 0 + +0x0000046e: 05 DW_LNS_set_column (17) +0x00000470: 06 DW_LNS_negate_stmt +0x00000471: 03 DW_LNS_advance_line (111) +0x00000474: 4a address += 4, line += 0 + 0x0000000000000bcf 111 17 1 0 0 is_stmt + +0x00000475: 05 DW_LNS_set_column (22) +0x00000477: 06 DW_LNS_negate_stmt +0x00000478: 74 address += 7, line += 0 + 0x0000000000000bd6 111 22 1 0 0 + +0x00000479: 05 DW_LNS_set_column (26) +0x0000047b: ac address += 11, line += 0 + 0x0000000000000be1 111 26 1 0 0 + +0x0000047c: 05 DW_LNS_set_column (24) +0x0000047e: 74 address += 7, line += 0 + 0x0000000000000be8 111 24 1 0 0 + +0x0000047f: 05 DW_LNS_set_column (10) +0x00000481: e4 address += 15, line += 0 + 0x0000000000000bf7 111 10 1 0 0 + +0x00000482: 05 DW_LNS_set_column (26) +0x00000484: 06 DW_LNS_negate_stmt +0x00000485: f3 address += 16, line += 1 + 0x0000000000000c07 112 26 1 0 0 is_stmt + +0x00000486: 05 DW_LNS_set_column (32) +0x00000488: 06 DW_LNS_negate_stmt +0x00000489: 74 address += 7, line += 0 + 0x0000000000000c0e 112 32 1 0 0 + +0x0000048a: 05 DW_LNS_set_column (26) +0x0000048c: 74 address += 7, line += 0 + 0x0000000000000c15 112 26 1 0 0 + +0x0000048d: 05 DW_LNS_set_column (35) +0x0000048f: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000490: 82 address += 8, line += 0 + 0x0000000000000c2e 112 35 1 0 0 + +0x00000491: 05 DW_LNS_set_column (13) +0x00000493: ac address += 11, line += 0 + 0x0000000000000c39 112 13 1 0 0 + +0x00000494: 05 DW_LNS_set_column (30) +0x00000496: 06 DW_LNS_negate_stmt +0x00000497: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000498: 8f address += 9, line += -1 + 0x0000000000000c53 111 30 1 0 0 is_stmt + +0x00000499: 05 DW_LNS_set_column (10) +0x0000049b: 06 DW_LNS_negate_stmt +0x0000049c: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x0000049d: 82 address += 8, line += 0 + 0x0000000000000c6c 111 10 1 0 0 + +0x0000049e: 2e address += 2, line += 0 + 0x0000000000000c6e 111 10 1 0 0 + +0x0000049f: 06 DW_LNS_negate_stmt +0x000004a0: 30 address += 2, line += 2 + 0x0000000000000c70 113 10 1 0 0 is_stmt + +0x000004a1: 05 DW_LNS_set_column (17) +0x000004a3: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000004a4: 67 address += 6, line += 1 + 0x0000000000000c87 114 17 1 0 0 is_stmt + +0x000004a5: 05 DW_LNS_set_column (7) +0x000004a7: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000004a8: 83 address += 8, line += 1 + 0x0000000000000ca0 115 7 1 0 0 is_stmt + +0x000004a9: 06 DW_LNS_negate_stmt +0x000004aa: 03 DW_LNS_advance_line (0) +0x000004ad: 2e address += 2, line += 0 + 0x0000000000000ca2 0 7 1 0 0 + +0x000004ae: 05 DW_LNS_set_column (10) +0x000004b0: 06 DW_LNS_negate_stmt +0x000004b1: 03 DW_LNS_advance_line (116) +0x000004b4: 20 address += 1, line += 0 + 0x0000000000000ca3 116 10 1 0 0 is_stmt + +0x000004b5: 06 DW_LNS_negate_stmt +0x000004b6: 03 DW_LNS_advance_line (0) +0x000004b9: 2e address += 2, line += 0 + 0x0000000000000ca5 0 10 1 0 0 + +0x000004ba: 05 DW_LNS_set_column (14) +0x000004bc: 06 DW_LNS_negate_stmt +0x000004bd: 03 DW_LNS_advance_line (118) +0x000004c0: 90 address += 9, line += 0 + 0x0000000000000cae 118 14 1 0 0 is_stmt + +0x000004c1: 05 DW_LNS_set_column (16) +0x000004c3: 06 DW_LNS_negate_stmt +0x000004c4: 74 address += 7, line += 0 + 0x0000000000000cb5 118 16 1 0 0 + +0x000004c5: 05 DW_LNS_set_column (7) +0x000004c7: e4 address += 15, line += 0 + 0x0000000000000cc4 118 7 1 0 0 + +0x000004c8: 05 DW_LNS_set_column (25) +0x000004ca: 06 DW_LNS_negate_stmt +0x000004cb: f3 address += 16, line += 1 + 0x0000000000000cd4 119 25 1 0 0 is_stmt + +0x000004cc: 05 DW_LNS_set_column (10) +0x000004ce: 06 DW_LNS_negate_stmt +0x000004cf: 74 address += 7, line += 0 + 0x0000000000000cdb 119 10 1 0 0 + +0x000004d0: 05 DW_LNS_set_column (16) +0x000004d2: 74 address += 7, line += 0 + 0x0000000000000ce2 119 16 1 0 0 + +0x000004d3: 05 DW_LNS_set_column (18) +0x000004d5: 74 address += 7, line += 0 + 0x0000000000000ce9 119 18 1 0 0 + +0x000004d6: 05 DW_LNS_set_column (10) +0x000004d8: ac address += 11, line += 0 + 0x0000000000000cf4 119 10 1 0 0 + +0x000004d9: 05 DW_LNS_set_column (23) +0x000004db: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000004dc: 20 address += 1, line += 0 + 0x0000000000000d06 119 23 1 0 0 + +0x000004dd: 05 DW_LNS_set_column (22) +0x000004df: 06 DW_LNS_negate_stmt +0x000004e0: 73 address += 7, line += -1 + 0x0000000000000d0d 118 22 1 0 0 is_stmt + +0x000004e1: 05 DW_LNS_set_column (7) +0x000004e3: 06 DW_LNS_negate_stmt +0x000004e4: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000004e5: 82 address += 8, line += 0 + 0x0000000000000d26 118 7 1 0 0 + +0x000004e6: 2e address += 2, line += 0 + 0x0000000000000d28 118 7 1 0 0 + +0x000004e7: 05 DW_LNS_set_column (14) +0x000004e9: 06 DW_LNS_negate_stmt +0x000004ea: 32 address += 2, line += 4 + 0x0000000000000d2a 122 14 1 0 0 is_stmt + +0x000004eb: 05 DW_LNS_set_column (19) +0x000004ed: 06 DW_LNS_negate_stmt +0x000004ee: 90 address += 9, line += 0 + 0x0000000000000d33 122 19 1 0 0 + +0x000004ef: 05 DW_LNS_set_column (16) +0x000004f1: 74 address += 7, line += 0 + 0x0000000000000d3a 122 16 1 0 0 + +0x000004f2: 05 DW_LNS_set_column (14) +0x000004f4: e4 address += 15, line += 0 + 0x0000000000000d49 122 14 1 0 0 + +0x000004f5: 05 DW_LNS_set_column (13) +0x000004f7: 06 DW_LNS_negate_stmt +0x000004f8: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000004f9: 21 address += 1, line += 1 + 0x0000000000000d5b 123 13 1 0 0 is_stmt + +0x000004fa: 06 DW_LNS_negate_stmt +0x000004fb: 03 DW_LNS_advance_line (0) +0x000004fe: 2e address += 2, line += 0 + 0x0000000000000d5d 0 13 1 0 0 + +0x000004ff: 05 DW_LNS_set_column (22) +0x00000501: 06 DW_LNS_negate_stmt +0x00000502: 03 DW_LNS_advance_line (125) +0x00000505: 58 address += 5, line += 0 + 0x0000000000000d62 125 22 1 0 0 is_stmt + +0x00000506: 05 DW_LNS_set_column (17) +0x00000508: 06 DW_LNS_negate_stmt +0x00000509: d6 address += 14, line += 0 + 0x0000000000000d70 125 17 1 0 0 + +0x0000050a: 05 DW_LNS_set_column (20) +0x0000050c: 06 DW_LNS_negate_stmt +0x0000050d: 75 address += 7, line += 1 + 0x0000000000000d77 126 20 1 0 0 is_stmt + +0x0000050e: 05 DW_LNS_set_column (25) +0x00000510: 06 DW_LNS_negate_stmt +0x00000511: 74 address += 7, line += 0 + 0x0000000000000d7e 126 25 1 0 0 + +0x00000512: 05 DW_LNS_set_column (29) +0x00000514: ac address += 11, line += 0 + 0x0000000000000d89 126 29 1 0 0 + +0x00000515: 05 DW_LNS_set_column (27) +0x00000517: 74 address += 7, line += 0 + 0x0000000000000d90 126 27 1 0 0 + +0x00000518: 05 DW_LNS_set_column (13) +0x0000051a: e4 address += 15, line += 0 + 0x0000000000000d9f 126 13 1 0 0 + +0x0000051b: 05 DW_LNS_set_column (27) +0x0000051d: 06 DW_LNS_negate_stmt +0x0000051e: f3 address += 16, line += 1 + 0x0000000000000daf 127 27 1 0 0 is_stmt + +0x0000051f: 05 DW_LNS_set_column (33) +0x00000521: 06 DW_LNS_negate_stmt +0x00000522: 74 address += 7, line += 0 + 0x0000000000000db6 127 33 1 0 0 + +0x00000523: 05 DW_LNS_set_column (35) +0x00000525: 74 address += 7, line += 0 + 0x0000000000000dbd 127 35 1 0 0 + +0x00000526: 05 DW_LNS_set_column (27) +0x00000528: ac address += 11, line += 0 + 0x0000000000000dc8 127 27 1 0 0 + +0x00000529: 05 DW_LNS_set_column (16) +0x0000052b: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x0000052c: 82 address += 8, line += 0 + 0x0000000000000de1 127 16 1 0 0 + +0x0000052d: 05 DW_LNS_set_column (22) +0x0000052f: 74 address += 7, line += 0 + 0x0000000000000de8 127 22 1 0 0 + +0x00000530: 05 DW_LNS_set_column (16) +0x00000532: 74 address += 7, line += 0 + 0x0000000000000def 127 16 1 0 0 + +0x00000533: 05 DW_LNS_set_column (25) +0x00000535: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000536: 20 address += 1, line += 0 + 0x0000000000000e01 127 25 1 0 0 + +0x00000537: 05 DW_LNS_set_column (33) +0x00000539: 06 DW_LNS_negate_stmt +0x0000053a: 73 address += 7, line += -1 + 0x0000000000000e08 126 33 1 0 0 is_stmt + +0x0000053b: 05 DW_LNS_set_column (13) +0x0000053d: 06 DW_LNS_negate_stmt +0x0000053e: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x0000053f: ba address += 12, line += 0 + 0x0000000000000e25 126 13 1 0 0 + +0x00000540: 2e address += 2, line += 0 + 0x0000000000000e27 126 13 1 0 0 + +0x00000541: 05 DW_LNS_set_column (24) +0x00000543: 06 DW_LNS_negate_stmt +0x00000544: 76 address += 7, line += 2 + 0x0000000000000e2e 128 24 1 0 0 is_stmt + +0x00000545: 05 DW_LNS_set_column (13) +0x00000547: 06 DW_LNS_negate_stmt +0x00000548: 82 address += 8, line += 0 + 0x0000000000000e36 128 13 1 0 0 + +0x00000549: 05 DW_LNS_set_column (19) +0x0000054b: 82 address += 8, line += 0 + 0x0000000000000e3e 128 19 1 0 0 + +0x0000054c: 05 DW_LNS_set_column (13) +0x0000054e: 82 address += 8, line += 0 + 0x0000000000000e46 128 13 1 0 0 + +0x0000054f: 05 DW_LNS_set_column (22) +0x00000551: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000552: 82 address += 8, line += 0 + 0x0000000000000e5f 128 22 1 0 0 + +0x00000553: 05 DW_LNS_set_column (16) +0x00000555: 06 DW_LNS_negate_stmt +0x00000556: 92 address += 9, line += 2 + 0x0000000000000e68 130 16 1 0 0 is_stmt + +0x00000557: 05 DW_LNS_set_column (22) +0x00000559: 06 DW_LNS_negate_stmt +0x0000055a: 82 address += 8, line += 0 + 0x0000000000000e70 130 22 1 0 0 + +0x0000055b: 05 DW_LNS_set_column (16) +0x0000055d: 82 address += 8, line += 0 + 0x0000000000000e78 130 16 1 0 0 + +0x0000055e: 05 DW_LNS_set_column (14) +0x00000560: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000561: 82 address += 8, line += 0 + 0x0000000000000e91 130 14 1 0 0 + +0x00000562: 05 DW_LNS_set_column (25) +0x00000564: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000565: f2 address += 16, line += 0 + 0x0000000000000eb2 130 25 1 0 0 + +0x00000566: 05 DW_LNS_set_column (14) +0x00000568: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000569: 58 address += 5, line += 0 + 0x0000000000000ec8 130 14 1 0 0 + +0x0000056a: 05 DW_LNS_set_column (13) +0x0000056c: 06 DW_LNS_negate_stmt +0x0000056d: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x0000056e: 83 address += 8, line += 1 + 0x0000000000000ee1 131 13 1 0 0 is_stmt + +0x0000056f: 06 DW_LNS_negate_stmt +0x00000570: 03 DW_LNS_advance_line (0) +0x00000573: 2e address += 2, line += 0 + 0x0000000000000ee3 0 13 1 0 0 + +0x00000574: 05 DW_LNS_set_column (11) +0x00000576: 06 DW_LNS_negate_stmt +0x00000577: 03 DW_LNS_advance_line (133) +0x0000057a: 20 address += 1, line += 0 + 0x0000000000000ee4 133 11 1 0 0 is_stmt + +0x0000057b: 05 DW_LNS_set_column (7) +0x0000057d: 03 DW_LNS_advance_line (121) +0x0000057f: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000580: d6 address += 14, line += 0 + 0x0000000000000f03 121 7 1 0 0 is_stmt + +0x00000581: 06 DW_LNS_negate_stmt +0x00000582: 03 DW_LNS_advance_line (0) +0x00000585: 2e address += 2, line += 0 + 0x0000000000000f05 0 7 1 0 0 + +0x00000586: 05 DW_LNS_set_column (13) +0x00000588: 06 DW_LNS_negate_stmt +0x00000589: 03 DW_LNS_advance_line (131) +0x0000058c: 20 address += 1, line += 0 + 0x0000000000000f06 131 13 1 0 0 is_stmt + +0x0000058d: 05 DW_LNS_set_column (4) +0x0000058f: 03 DW_LNS_advance_line (109) +0x00000591: 20 address += 1, line += 0 + 0x0000000000000f07 109 4 1 0 0 is_stmt + +0x00000592: 05 DW_LNS_set_column (13) +0x00000594: 03 DW_LNS_advance_line (123) +0x00000596: 2e address += 2, line += 0 + 0x0000000000000f09 123 13 1 0 0 is_stmt + +0x00000597: 05 DW_LNS_set_column (9) +0x00000599: 03 DW_LNS_advance_line (138) +0x0000059b: 74 address += 7, line += 0 + 0x0000000000000f10 138 9 1 0 0 is_stmt + +0x0000059c: 05 DW_LNS_set_column (4) +0x0000059e: 06 DW_LNS_negate_stmt +0x0000059f: 82 address += 8, line += 0 + 0x0000000000000f18 138 4 1 0 0 + +0x000005a0: 05 DW_LNS_set_column (9) +0x000005a2: 06 DW_LNS_negate_stmt +0x000005a3: 91 address += 9, line += 1 + 0x0000000000000f21 139 9 1 0 0 is_stmt + +0x000005a4: 05 DW_LNS_set_column (4) +0x000005a6: 06 DW_LNS_negate_stmt +0x000005a7: 82 address += 8, line += 0 + 0x0000000000000f29 139 4 1 0 0 + +0x000005a8: 05 DW_LNS_set_column (13) +0x000005aa: 06 DW_LNS_negate_stmt +0x000005ab: 91 address += 9, line += 1 + 0x0000000000000f32 140 13 1 0 0 is_stmt + +0x000005ac: 06 DW_LNS_negate_stmt +0x000005ad: 03 DW_LNS_advance_line (0) +0x000005b0: 82 address += 8, line += 0 + 0x0000000000000f3a 0 13 1 0 0 + +0x000005b1: 05 DW_LNS_set_column (11) +0x000005b3: 06 DW_LNS_negate_stmt +0x000005b4: 03 DW_LNS_advance_line (141) +0x000005b7: 90 address += 9, line += 0 + 0x0000000000000f43 141 11 1 0 0 is_stmt + +0x000005b8: 05 DW_LNS_set_column (16) +0x000005ba: 06 DW_LNS_negate_stmt +0x000005bb: 82 address += 8, line += 0 + 0x0000000000000f4b 141 16 1 0 0 + +0x000005bc: 05 DW_LNS_set_column (4) +0x000005be: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000005bf: 58 address += 5, line += 0 + 0x0000000000000f61 141 4 1 0 0 + +0x000005c0: 05 DW_LNS_set_column (36) +0x000005c2: 06 DW_LNS_negate_stmt +0x000005c3: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000005c4: 4b address += 4, line += 1 + 0x0000000000000f76 142 36 1 0 0 is_stmt + +0x000005c5: 05 DW_LNS_set_column (20) +0x000005c7: 06 DW_LNS_negate_stmt +0x000005c8: 82 address += 8, line += 0 + 0x0000000000000f7e 142 20 1 0 0 + +0x000005c9: 05 DW_LNS_set_column (13) +0x000005cb: ba address += 12, line += 0 + 0x0000000000000f8a 142 13 1 0 0 + +0x000005cc: 05 DW_LNS_set_column (11) +0x000005ce: 06 DW_LNS_negate_stmt +0x000005cf: 83 address += 8, line += 1 + 0x0000000000000f92 143 11 1 0 0 is_stmt + +0x000005d0: 05 DW_LNS_set_column (22) +0x000005d2: 06 DW_LNS_negate_stmt +0x000005d3: 82 address += 8, line += 0 + 0x0000000000000f9a 143 22 1 0 0 + +0x000005d4: 05 DW_LNS_set_column (20) +0x000005d6: 82 address += 8, line += 0 + 0x0000000000000fa2 143 20 1 0 0 + +0x000005d7: 05 DW_LNS_set_column (11) +0x000005d9: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000005da: 58 address += 5, line += 0 + 0x0000000000000fb8 143 11 1 0 0 + +0x000005db: 05 DW_LNS_set_column (21) +0x000005dd: 06 DW_LNS_negate_stmt +0x000005de: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000005df: 67 address += 6, line += 1 + 0x0000000000000fcf 144 21 1 0 0 is_stmt + +0x000005e0: 05 DW_LNS_set_column (19) +0x000005e2: 06 DW_LNS_negate_stmt +0x000005e3: 82 address += 8, line += 0 + 0x0000000000000fd7 144 19 1 0 0 + +0x000005e4: 03 DW_LNS_advance_line (0) +0x000005e7: 82 address += 8, line += 0 + 0x0000000000000fdf 0 19 1 0 0 + +0x000005e8: 05 DW_LNS_set_column (15) +0x000005ea: 06 DW_LNS_negate_stmt +0x000005eb: 03 DW_LNS_advance_line (145) +0x000005ee: 20 address += 1, line += 0 + 0x0000000000000fe0 145 15 1 0 0 is_stmt + +0x000005ef: 05 DW_LNS_set_column (13) +0x000005f1: 06 DW_LNS_negate_stmt +0x000005f2: 82 address += 8, line += 0 + 0x0000000000000fe8 145 13 1 0 0 + +0x000005f3: 05 DW_LNS_set_column (14) +0x000005f5: 06 DW_LNS_negate_stmt +0x000005f6: 83 address += 8, line += 1 + 0x0000000000000ff0 146 14 1 0 0 is_stmt + +0x000005f7: 05 DW_LNS_set_column (20) +0x000005f9: 06 DW_LNS_negate_stmt +0x000005fa: 82 address += 8, line += 0 + 0x0000000000000ff8 146 20 1 0 0 + +0x000005fb: 05 DW_LNS_set_column (12) +0x000005fd: 90 address += 9, line += 0 + 0x0000000000001001 146 12 1 0 0 + +0x000005fe: 06 DW_LNS_negate_stmt +0x000005ff: 83 address += 8, line += 1 + 0x0000000000001009 147 12 1 0 0 is_stmt + +0x00000600: 05 DW_LNS_set_column (7) +0x00000602: 06 DW_LNS_negate_stmt +0x00000603: 82 address += 8, line += 0 + 0x0000000000001011 147 7 1 0 0 + +0x00000604: 05 DW_LNS_set_column (4) +0x00000606: 06 DW_LNS_negate_stmt +0x00000607: 03 DW_LNS_advance_line (141) +0x00000609: 90 address += 9, line += 0 + 0x000000000000101a 141 4 1 0 0 is_stmt + +0x0000060a: 05 DW_LNS_set_column (11) +0x0000060c: 52 address += 4, line += 8 + 0x000000000000101e 149 11 1 0 0 is_stmt + +0x0000060d: 05 DW_LNS_set_column (4) +0x0000060f: 06 DW_LNS_negate_stmt +0x00000610: 82 address += 8, line += 0 + 0x0000000000001026 149 4 1 0 0 + +0x00000611: 02 DW_LNS_advance_pc (28) +0x00000613: 00 DW_LNE_end_sequence + 0x0000000000001042 149 4 1 0 0 end_sequence + + +.debug_str contents: +0x00000000: "clang version 11.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 2d7a8cf90478cd845ffb39763b0e95b7715322d2)" +0x00000095: "tests/fannkuch.cpp" +0x000000a8: "/home/alon/Dev/emscripten" +0x000000c2: "i" +0x000000c4: "int" +0x000000c8: "n" +0x000000ca: "next" +0x000000cf: "worker_args" +0x000000db: "std" +0x000000df: "decltype(nullptr)" +0x000000f1: "nullptr_t" +0x000000fb: "_Z15fannkuch_workerPv" +0x00000111: "fannkuch_worker" +0x00000121: "main" +0x00000126: "_ZL8fannkuchi" +0x00000134: "fannkuch" +0x0000013d: "_arg" +0x00000142: "args" +0x00000147: "perm1" +0x0000014d: "count" +0x00000153: "perm" +0x00000158: "maxflips" +0x00000161: "flips" +0x00000167: "r" +0x00000169: "j" +0x0000016b: "k" +0x0000016d: "tmp" +0x00000171: "p0" +0x00000174: "argc" +0x00000179: "argv" +0x0000017e: "char" +0x00000183: "targs" +0x00000189: "showmax" +0x00000191: "cleanup" + +.debug_ranges contents: +00000000 00000006 0000088c +00000000 0000088e 000009dc +00000000 000009de 00001042 +00000000 +DWARF debug info +================ + +Contains section .debug_info (640 bytes) +Contains section .debug_ranges (32 bytes) +Contains section .debug_abbrev (222 bytes) +Contains section .debug_line (3965 bytes) +Contains section .debug_str (409 bytes) + +.debug_abbrev contents: +Abbrev table for offset: 0x00000000 +[1] DW_TAG_compile_unit DW_CHILDREN_yes + DW_AT_producer DW_FORM_strp + DW_AT_language DW_FORM_data2 + DW_AT_name DW_FORM_strp + DW_AT_stmt_list DW_FORM_sec_offset + DW_AT_comp_dir DW_FORM_strp + DW_AT_low_pc DW_FORM_addr + DW_AT_ranges DW_FORM_sec_offset + +[2] DW_TAG_pointer_type DW_CHILDREN_no + DW_AT_type DW_FORM_ref4 + +[3] DW_TAG_structure_type DW_CHILDREN_yes + DW_AT_calling_convention DW_FORM_data1 + DW_AT_name DW_FORM_strp + DW_AT_byte_size DW_FORM_data1 + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + +[4] DW_TAG_member DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_type DW_FORM_ref4 + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_data_member_location DW_FORM_data1 + +[5] DW_TAG_base_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_encoding DW_FORM_data1 + DW_AT_byte_size DW_FORM_data1 + +[6] DW_TAG_namespace DW_CHILDREN_yes + DW_AT_name DW_FORM_strp + +[7] DW_TAG_typedef DW_CHILDREN_no + DW_AT_type DW_FORM_ref4 + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + +[8] DW_TAG_unspecified_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + +[9] DW_TAG_imported_declaration DW_CHILDREN_no + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_import DW_FORM_ref4 + +[10] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_linkage_name DW_FORM_strp + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[11] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_location DW_FORM_exprloc + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[12] DW_TAG_variable DW_CHILDREN_no + DW_AT_location DW_FORM_exprloc + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[13] DW_TAG_lexical_block DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + +[14] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[15] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_linkage_name DW_FORM_strp + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[16] DW_TAG_label DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_low_pc DW_FORM_addr + +[17] DW_TAG_pointer_type DW_CHILDREN_no + + +.debug_info contents: +0x00000000: Compile Unit: length = 0x0000027c version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x00000280) + +0x0000000b: DW_TAG_compile_unit [1] * + DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 11.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 2d7a8cf90478cd845ffb39763b0e95b7715322d2)") + DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000095] = "tests/fannkuch.cpp") + DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) + DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x000000a8] = "/home/alon/Dev/emscripten") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) + DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 + [0x00000006, 0x00000a53) + [0x00000a55, 0x00000bc5) + [0x00000bc7, 0x00001360)) + +0x00000026: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x002b => {0x0000002b} "worker_args") + +0x0000002b: DW_TAG_structure_type [3] * + DW_AT_calling_convention [DW_FORM_data1] (DW_CC_pass_by_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000cf] = "worker_args") + DW_AT_byte_size [DW_FORM_data1] (0x0c) + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (20) + +0x00000034: DW_TAG_member [4] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c2] = "i") + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (21) + DW_AT_data_member_location [DW_FORM_data1] (0x00) + +0x00000040: DW_TAG_member [4] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c8] = "n") + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (21) + DW_AT_data_member_location [DW_FORM_data1] (0x04) + +0x0000004c: DW_TAG_member [4] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ca] = "next") + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (22) + DW_AT_data_member_location [DW_FORM_data1] (0x08) + +0x00000058: NULL + +0x00000059: DW_TAG_base_type [5] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c4] = "int") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) + DW_AT_byte_size [DW_FORM_data1] (0x04) + +0x00000060: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000065: DW_TAG_namespace [6] * + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000db] = "std") + +0x0000006a: DW_TAG_typedef [7] + DW_AT_type [DW_FORM_ref4] (cu + 0x0076 => {0x00000076} "decltype(nullptr)") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000f1] = "nullptr_t") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/system/include/libcxx/__nullptr") + DW_AT_decl_line [DW_FORM_data1] (57) + +0x00000075: NULL + +0x00000076: DW_TAG_unspecified_type [8] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000df] = "decltype(nullptr)") + +0x0000007b: DW_TAG_imported_declaration [9] + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/system/include/libcxx/stddef.h") + DW_AT_decl_line [DW_FORM_data1] (52) + DW_AT_import [DW_FORM_ref4] (cu + 0x006a => {0x0000006a}) + +0x00000082: DW_TAG_subprogram [10] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000006) + DW_AT_high_pc [DW_FORM_data4] (0x00000a4d) + DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x000000fb] = "_Z15fannkuch_workerPv") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000111] = "fannkuch_worker") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (26) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x00000099: DW_TAG_formal_parameter [11] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x3c) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000013d] = "_arg") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (26) + DW_AT_type [DW_FORM_ref4] (cu + 0x026d => {0x0000026d} "*") + +0x000000a7: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x38) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000142] = "args") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (28) + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + +0x000000b5: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x34) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000147] = "perm1") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (29) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x000000c3: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x30) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014d] = "count") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (29) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x000000d1: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x2c) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000153] = "perm") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (29) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x000000df: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x28) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000158] = "maxflips") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000000ed: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x24) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000161] = "flips") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000000fb: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x20) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c2] = "i") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000109: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x1c) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c8] = "n") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000117: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x18) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000167] = "r") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000125: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x14) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000169] = "j") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000133: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x10) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000016b] = "k") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000141: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0xc) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000016d] = "tmp") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000014f: DW_TAG_lexical_block [13] * + DW_AT_low_pc [DW_FORM_addr] (0x000000000000087a) + DW_AT_high_pc [DW_FORM_data4] (0x00000136) + +0x00000158: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x8) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000171] = "p0") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (74) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000166: NULL + +0x00000167: NULL + +0x00000168: DW_TAG_subprogram [14] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000a55) + DW_AT_high_pc [DW_FORM_data4] (0x00000170) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000121] = "main") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (152) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x0000017b: DW_TAG_formal_parameter [11] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x18) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000174] = "argc") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (152) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000189: DW_TAG_formal_parameter [11] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x14) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000179] = "argv") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (152) + DW_AT_type [DW_FORM_ref4] (cu + 0x026e => {0x0000026e} "char**") + +0x00000197: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x10) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c8] = "n") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (153) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000001a5: NULL + +0x000001a6: DW_TAG_subprogram [15] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000bc7) + DW_AT_high_pc [DW_FORM_data4] (0x00000799) + DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x00000126] = "_ZL8fannkuchi") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000134] = "fannkuch") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (87) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000001bd: DW_TAG_formal_parameter [11] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x2c) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c8] = "n") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (87) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000001cb: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x28) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000142] = "args") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (89) + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + +0x000001d9: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x24) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000183] = "targs") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (89) + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + +0x000001e7: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x20) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000189] = "showmax") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (90) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000001f5: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x1c) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000147] = "perm1") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x00000203: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x18) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014d] = "count") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x00000211: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x14) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c2] = "i") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000021f: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x10) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000167] = "r") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000022d: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0xc) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000158] = "maxflips") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000023b: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x8) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000161] = "flips") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000249: DW_TAG_label [16] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000191] = "cleanup") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (137) + DW_AT_low_pc [DW_FORM_addr] (0x0000000000001241) + +0x00000254: DW_TAG_lexical_block [13] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000001091) + DW_AT_high_pc [DW_FORM_data4] (0x00000107) + +0x0000025d: DW_TAG_variable [12] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0x4) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000171] = "p0") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (125) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000026b: NULL + +0x0000026c: NULL + +0x0000026d: DW_TAG_pointer_type [17] + +0x0000026e: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x0273 => {0x00000273} "char*") + +0x00000273: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x0278 => {0x00000278} "char") + +0x00000278: DW_TAG_base_type [5] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000017e] = "char") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char) + DW_AT_byte_size [DW_FORM_data1] (0x01) + +0x0000027f: NULL + +.debug_line contents: +debug_line[0x00000000] +Line table prologue: + total_length: 0x00000f79 + version: 4 + prologue_length: 0x00000059 + min_inst_length: 1 +max_ops_per_inst: 1 + default_is_stmt: 1 + line_base: -5 + line_range: 14 + opcode_base: 13 +standard_opcode_lengths[DW_LNS_copy] = 0 +standard_opcode_lengths[DW_LNS_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_advance_line] = 1 +standard_opcode_lengths[DW_LNS_set_file] = 1 +standard_opcode_lengths[DW_LNS_set_column] = 1 +standard_opcode_lengths[DW_LNS_negate_stmt] = 0 +standard_opcode_lengths[DW_LNS_set_basic_block] = 0 +standard_opcode_lengths[DW_LNS_const_add_pc] = 0 +standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 +standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 +standard_opcode_lengths[DW_LNS_set_isa] = 1 +include_directories[ 1] = "tests" +include_directories[ 2] = "system/include/libcxx" +file_names[ 1]: + name: "fannkuch.cpp" + dir_index: 1 + mod_time: 0x00000000 + length: 0x00000000 +file_names[ 2]: + name: "__nullptr" + dir_index: 2 + mod_time: 0x00000000 + length: 0x00000000 +file_names[ 3]: + name: "stddef.h" + dir_index: 2 + mod_time: 0x00000000 + length: 0x00000000 +0x00000063: 00 DW_LNE_set_address (0x0000000000000006) +0x0000006a: 03 DW_LNS_advance_line (27) +0x0000006c: 01 DW_LNS_copy + 0x0000000000000006 27 0 1 0 0 is_stmt + + +0x0000006d: 00 DW_LNE_set_address (0x000000000000020f) +0x00000074: 03 DW_LNS_advance_line (28) +0x00000076: 05 DW_LNS_set_column (45) +0x00000078: 0a DW_LNS_set_prologue_end +0x00000079: 01 DW_LNS_copy + 0x000000000000020f 28 45 1 0 0 is_stmt prologue_end + + +0x0000007a: 00 DW_LNE_set_address (0x0000000000000216) +0x00000081: 05 DW_LNS_set_column (24) +0x00000083: 06 DW_LNS_negate_stmt +0x00000084: 01 DW_LNS_copy + 0x0000000000000216 28 24 1 0 0 + + +0x00000085: 00 DW_LNE_set_address (0x000000000000021d) +0x0000008c: 03 DW_LNS_advance_line (32) +0x0000008e: 05 DW_LNS_set_column (13) +0x00000090: 06 DW_LNS_negate_stmt +0x00000091: 01 DW_LNS_copy + 0x000000000000021d 32 13 1 0 0 is_stmt + + +0x00000092: 00 DW_LNE_set_address (0x0000000000000224) +0x00000099: 03 DW_LNS_advance_line (33) +0x0000009b: 05 DW_LNS_set_column (8) +0x0000009d: 01 DW_LNS_copy + 0x0000000000000224 33 8 1 0 0 is_stmt + + +0x0000009e: 00 DW_LNE_set_address (0x000000000000022b) +0x000000a5: 05 DW_LNS_set_column (14) +0x000000a7: 06 DW_LNS_negate_stmt +0x000000a8: 01 DW_LNS_copy + 0x000000000000022b 33 14 1 0 0 + + +0x000000a9: 00 DW_LNE_set_address (0x0000000000000232) +0x000000b0: 05 DW_LNS_set_column (6) +0x000000b2: 01 DW_LNS_copy + 0x0000000000000232 33 6 1 0 0 + + +0x000000b3: 00 DW_LNE_set_address (0x0000000000000239) +0x000000ba: 03 DW_LNS_advance_line (34) +0x000000bc: 05 DW_LNS_set_column (25) +0x000000be: 06 DW_LNS_negate_stmt +0x000000bf: 01 DW_LNS_copy + 0x0000000000000239 34 25 1 0 0 is_stmt + + +0x000000c0: 00 DW_LNE_set_address (0x0000000000000240) +0x000000c7: 05 DW_LNS_set_column (27) +0x000000c9: 06 DW_LNS_negate_stmt +0x000000ca: 01 DW_LNS_copy + 0x0000000000000240 34 27 1 0 0 + + +0x000000cb: 00 DW_LNE_set_address (0x000000000000024b) +0x000000d2: 05 DW_LNS_set_column (18) +0x000000d4: 01 DW_LNS_copy + 0x000000000000024b 34 18 1 0 0 + + +0x000000d5: 00 DW_LNE_set_address (0x0000000000000251) +0x000000dc: 05 DW_LNS_set_column (10) +0x000000de: 01 DW_LNS_copy + 0x0000000000000251 34 10 1 0 0 + + +0x000000df: 00 DW_LNE_set_address (0x0000000000000258) +0x000000e6: 03 DW_LNS_advance_line (35) +0x000000e8: 05 DW_LNS_set_column (24) +0x000000ea: 06 DW_LNS_negate_stmt +0x000000eb: 01 DW_LNS_copy + 0x0000000000000258 35 24 1 0 0 is_stmt + + +0x000000ec: 00 DW_LNE_set_address (0x000000000000025f) +0x000000f3: 05 DW_LNS_set_column (26) +0x000000f5: 06 DW_LNS_negate_stmt +0x000000f6: 01 DW_LNS_copy + 0x000000000000025f 35 26 1 0 0 + + +0x000000f7: 00 DW_LNE_set_address (0x000000000000026a) +0x000000fe: 05 DW_LNS_set_column (17) +0x00000100: 01 DW_LNS_copy + 0x000000000000026a 35 17 1 0 0 + + +0x00000101: 00 DW_LNE_set_address (0x0000000000000270) +0x00000108: 05 DW_LNS_set_column (9) +0x0000010a: 01 DW_LNS_copy + 0x0000000000000270 35 9 1 0 0 + + +0x0000010b: 00 DW_LNE_set_address (0x0000000000000277) +0x00000112: 03 DW_LNS_advance_line (36) +0x00000114: 05 DW_LNS_set_column (25) +0x00000116: 06 DW_LNS_negate_stmt +0x00000117: 01 DW_LNS_copy + 0x0000000000000277 36 25 1 0 0 is_stmt + + +0x00000118: 00 DW_LNE_set_address (0x000000000000027e) +0x0000011f: 05 DW_LNS_set_column (27) +0x00000121: 06 DW_LNS_negate_stmt +0x00000122: 01 DW_LNS_copy + 0x000000000000027e 36 27 1 0 0 + + +0x00000123: 00 DW_LNE_set_address (0x0000000000000289) +0x0000012a: 05 DW_LNS_set_column (18) +0x0000012c: 01 DW_LNS_copy + 0x0000000000000289 36 18 1 0 0 + + +0x0000012d: 00 DW_LNE_set_address (0x000000000000028f) +0x00000134: 05 DW_LNS_set_column (10) +0x00000136: 01 DW_LNS_copy + 0x000000000000028f 36 10 1 0 0 + + +0x00000137: 00 DW_LNE_set_address (0x0000000000000296) +0x0000013e: 03 DW_LNS_advance_line (37) +0x00000140: 05 DW_LNS_set_column (11) +0x00000142: 06 DW_LNS_negate_stmt +0x00000143: 01 DW_LNS_copy + 0x0000000000000296 37 11 1 0 0 is_stmt + + +0x00000144: 00 DW_LNE_set_address (0x000000000000029d) +0x0000014b: 05 DW_LNS_set_column (16) +0x0000014d: 06 DW_LNS_negate_stmt +0x0000014e: 01 DW_LNS_copy + 0x000000000000029d 37 16 1 0 0 + + +0x0000014f: 00 DW_LNE_set_address (0x00000000000002a8) +0x00000156: 05 DW_LNS_set_column (20) +0x00000158: 01 DW_LNS_copy + 0x00000000000002a8 37 20 1 0 0 + + +0x00000159: 00 DW_LNE_set_address (0x00000000000002af) +0x00000160: 05 DW_LNS_set_column (18) +0x00000162: 01 DW_LNS_copy + 0x00000000000002af 37 18 1 0 0 + + +0x00000163: 00 DW_LNE_set_address (0x00000000000002be) +0x0000016a: 05 DW_LNS_set_column (4) +0x0000016c: 01 DW_LNS_copy + 0x00000000000002be 37 4 1 0 0 + + +0x0000016d: 00 DW_LNE_set_address (0x00000000000002ce) +0x00000174: 03 DW_LNS_advance_line (38) +0x00000176: 05 DW_LNS_set_column (18) +0x00000178: 06 DW_LNS_negate_stmt +0x00000179: 01 DW_LNS_copy + 0x00000000000002ce 38 18 1 0 0 is_stmt + + +0x0000017a: 00 DW_LNE_set_address (0x00000000000002d5) +0x00000181: 05 DW_LNS_set_column (7) +0x00000183: 06 DW_LNS_negate_stmt +0x00000184: 01 DW_LNS_copy + 0x00000000000002d5 38 7 1 0 0 + + +0x00000185: 00 DW_LNE_set_address (0x00000000000002dc) +0x0000018c: 05 DW_LNS_set_column (13) +0x0000018e: 01 DW_LNS_copy + 0x00000000000002dc 38 13 1 0 0 + + +0x0000018f: 00 DW_LNE_set_address (0x00000000000002e3) +0x00000196: 05 DW_LNS_set_column (7) +0x00000198: 01 DW_LNS_copy + 0x00000000000002e3 38 7 1 0 0 + + +0x00000199: 00 DW_LNE_set_address (0x00000000000002f5) +0x000001a0: 05 DW_LNS_set_column (16) +0x000001a2: 01 DW_LNS_copy + 0x00000000000002f5 38 16 1 0 0 + + +0x000001a3: 00 DW_LNE_set_address (0x00000000000002fc) +0x000001aa: 03 DW_LNS_advance_line (37) +0x000001ac: 05 DW_LNS_set_column (24) +0x000001ae: 06 DW_LNS_negate_stmt +0x000001af: 01 DW_LNS_copy + 0x00000000000002fc 37 24 1 0 0 is_stmt + + +0x000001b0: 00 DW_LNE_set_address (0x0000000000000315) +0x000001b7: 05 DW_LNS_set_column (4) +0x000001b9: 06 DW_LNS_negate_stmt +0x000001ba: 01 DW_LNS_copy + 0x0000000000000315 37 4 1 0 0 + + +0x000001bb: 00 DW_LNE_set_address (0x0000000000000317) +0x000001c2: 01 DW_LNS_copy + 0x0000000000000317 37 4 1 0 0 + + +0x000001c3: 00 DW_LNE_set_address (0x000000000000031a) +0x000001ca: 03 DW_LNS_advance_line (39) +0x000001cc: 05 DW_LNS_set_column (21) +0x000001ce: 06 DW_LNS_negate_stmt +0x000001cf: 01 DW_LNS_copy + 0x000000000000031a 39 21 1 0 0 is_stmt + + +0x000001d0: 00 DW_LNE_set_address (0x0000000000000321) +0x000001d7: 05 DW_LNS_set_column (23) +0x000001d9: 06 DW_LNS_negate_stmt +0x000001da: 01 DW_LNS_copy + 0x0000000000000321 39 23 1 0 0 + + +0x000001db: 00 DW_LNE_set_address (0x000000000000032c) +0x000001e2: 05 DW_LNS_set_column (4) +0x000001e4: 01 DW_LNS_copy + 0x000000000000032c 39 4 1 0 0 + + +0x000001e5: 00 DW_LNE_set_address (0x0000000000000333) +0x000001ec: 05 DW_LNS_set_column (10) +0x000001ee: 01 DW_LNS_copy + 0x0000000000000333 39 10 1 0 0 + + +0x000001ef: 00 DW_LNE_set_address (0x000000000000033a) +0x000001f6: 05 DW_LNS_set_column (16) +0x000001f8: 01 DW_LNS_copy + 0x000000000000033a 39 16 1 0 0 + + +0x000001f9: 00 DW_LNE_set_address (0x0000000000000341) +0x00000200: 05 DW_LNS_set_column (4) +0x00000202: 01 DW_LNS_copy + 0x0000000000000341 39 4 1 0 0 + + +0x00000203: 00 DW_LNE_set_address (0x0000000000000353) +0x0000020a: 05 DW_LNS_set_column (19) +0x0000020c: 01 DW_LNS_copy + 0x0000000000000353 39 19 1 0 0 + + +0x0000020d: 00 DW_LNE_set_address (0x000000000000035a) +0x00000214: 03 DW_LNS_advance_line (40) +0x00000216: 06 DW_LNS_negate_stmt +0x00000217: 01 DW_LNS_copy + 0x000000000000035a 40 19 1 0 0 is_stmt + + +0x00000218: 00 DW_LNE_set_address (0x0000000000000361) +0x0000021f: 05 DW_LNS_set_column (25) +0x00000221: 06 DW_LNS_negate_stmt +0x00000222: 01 DW_LNS_copy + 0x0000000000000361 40 25 1 0 0 + + +0x00000223: 00 DW_LNE_set_address (0x0000000000000368) +0x0000022a: 05 DW_LNS_set_column (4) +0x0000022c: 01 DW_LNS_copy + 0x0000000000000368 40 4 1 0 0 + + +0x0000022d: 00 DW_LNE_set_address (0x000000000000036f) +0x00000234: 05 DW_LNS_set_column (10) +0x00000236: 01 DW_LNS_copy + 0x000000000000036f 40 10 1 0 0 + + +0x00000237: 00 DW_LNE_set_address (0x0000000000000376) +0x0000023e: 05 DW_LNS_set_column (12) +0x00000240: 01 DW_LNS_copy + 0x0000000000000376 40 12 1 0 0 + + +0x00000241: 00 DW_LNE_set_address (0x0000000000000381) +0x00000248: 05 DW_LNS_set_column (4) +0x0000024a: 01 DW_LNS_copy + 0x0000000000000381 40 4 1 0 0 + + +0x0000024b: 00 DW_LNE_set_address (0x0000000000000393) +0x00000252: 05 DW_LNS_set_column (17) +0x00000254: 01 DW_LNS_copy + 0x0000000000000393 40 17 1 0 0 + + +0x00000255: 00 DW_LNE_set_address (0x000000000000039a) +0x0000025c: 03 DW_LNS_advance_line (41) +0x0000025e: 05 DW_LNS_set_column (8) +0x00000260: 06 DW_LNS_negate_stmt +0x00000261: 01 DW_LNS_copy + 0x000000000000039a 41 8 1 0 0 is_stmt + + +0x00000262: 00 DW_LNE_set_address (0x00000000000003a1) +0x00000269: 05 DW_LNS_set_column (6) +0x0000026b: 06 DW_LNS_negate_stmt +0x0000026c: 01 DW_LNS_copy + 0x00000000000003a1 41 6 1 0 0 + + +0x0000026d: 00 DW_LNE_set_address (0x00000000000003b2) +0x00000274: 03 DW_LNS_advance_line (44) +0x00000276: 05 DW_LNS_set_column (14) +0x00000278: 06 DW_LNS_negate_stmt +0x00000279: 01 DW_LNS_copy + 0x00000000000003b2 44 14 1 0 0 is_stmt + + +0x0000027a: 00 DW_LNE_set_address (0x00000000000003b9) +0x00000281: 05 DW_LNS_set_column (16) +0x00000283: 06 DW_LNS_negate_stmt +0x00000284: 01 DW_LNS_copy + 0x00000000000003b9 44 16 1 0 0 + + +0x00000285: 00 DW_LNE_set_address (0x00000000000003c8) +0x0000028c: 05 DW_LNS_set_column (7) +0x0000028e: 01 DW_LNS_copy + 0x00000000000003c8 44 7 1 0 0 + + +0x0000028f: 00 DW_LNE_set_address (0x00000000000003d8) +0x00000296: 03 DW_LNS_advance_line (45) +0x00000298: 05 DW_LNS_set_column (25) +0x0000029a: 06 DW_LNS_negate_stmt +0x0000029b: 01 DW_LNS_copy + 0x00000000000003d8 45 25 1 0 0 is_stmt + + +0x0000029c: 00 DW_LNE_set_address (0x00000000000003df) +0x000002a3: 05 DW_LNS_set_column (10) +0x000002a5: 06 DW_LNS_negate_stmt +0x000002a6: 01 DW_LNS_copy + 0x00000000000003df 45 10 1 0 0 + + +0x000002a7: 00 DW_LNE_set_address (0x00000000000003e6) +0x000002ae: 05 DW_LNS_set_column (16) +0x000002b0: 01 DW_LNS_copy + 0x00000000000003e6 45 16 1 0 0 + + +0x000002b1: 00 DW_LNE_set_address (0x00000000000003ed) +0x000002b8: 05 DW_LNS_set_column (18) +0x000002ba: 01 DW_LNS_copy + 0x00000000000003ed 45 18 1 0 0 + + +0x000002bb: 00 DW_LNE_set_address (0x00000000000003f8) +0x000002c2: 05 DW_LNS_set_column (10) +0x000002c4: 01 DW_LNS_copy + 0x00000000000003f8 45 10 1 0 0 + + +0x000002c5: 00 DW_LNE_set_address (0x000000000000040a) +0x000002cc: 05 DW_LNS_set_column (23) +0x000002ce: 01 DW_LNS_copy + 0x000000000000040a 45 23 1 0 0 + + +0x000002cf: 00 DW_LNE_set_address (0x0000000000000411) +0x000002d6: 03 DW_LNS_advance_line (44) +0x000002d8: 05 DW_LNS_set_column (22) +0x000002da: 06 DW_LNS_negate_stmt +0x000002db: 01 DW_LNS_copy + 0x0000000000000411 44 22 1 0 0 is_stmt + + +0x000002dc: 00 DW_LNE_set_address (0x000000000000042a) +0x000002e3: 05 DW_LNS_set_column (7) +0x000002e5: 06 DW_LNS_negate_stmt +0x000002e6: 01 DW_LNS_copy + 0x000000000000042a 44 7 1 0 0 + + +0x000002e7: 00 DW_LNE_set_address (0x000000000000042c) +0x000002ee: 01 DW_LNS_copy + 0x000000000000042c 44 7 1 0 0 + + +0x000002ef: 00 DW_LNE_set_address (0x000000000000042f) +0x000002f6: 03 DW_LNS_advance_line (46) +0x000002f8: 05 DW_LNS_set_column (11) +0x000002fa: 06 DW_LNS_negate_stmt +0x000002fb: 01 DW_LNS_copy + 0x000000000000042f 46 11 1 0 0 is_stmt + + +0x000002fc: 00 DW_LNE_set_address (0x000000000000043d) +0x00000303: 05 DW_LNS_set_column (25) +0x00000305: 06 DW_LNS_negate_stmt +0x00000306: 01 DW_LNS_copy + 0x000000000000043d 46 25 1 0 0 + + +0x00000307: 00 DW_LNE_set_address (0x0000000000000444) +0x0000030e: 05 DW_LNS_set_column (28) +0x00000310: 01 DW_LNS_copy + 0x0000000000000444 46 28 1 0 0 + + +0x00000311: 00 DW_LNE_set_address (0x000000000000044b) +0x00000318: 05 DW_LNS_set_column (34) +0x0000031a: 01 DW_LNS_copy + 0x000000000000044b 46 34 1 0 0 + + +0x0000031b: 00 DW_LNE_set_address (0x0000000000000452) +0x00000322: 05 DW_LNS_set_column (36) +0x00000324: 01 DW_LNS_copy + 0x0000000000000452 46 36 1 0 0 + + +0x00000325: 00 DW_LNE_set_address (0x000000000000045d) +0x0000032c: 05 DW_LNS_set_column (28) +0x0000032e: 01 DW_LNS_copy + 0x000000000000045d 46 28 1 0 0 + + +0x0000032f: 00 DW_LNE_set_address (0x0000000000000476) +0x00000336: 05 DW_LNS_set_column (44) +0x00000338: 01 DW_LNS_copy + 0x0000000000000476 46 44 1 0 0 + + +0x00000339: 00 DW_LNE_set_address (0x000000000000047d) +0x00000340: 05 DW_LNS_set_column (46) +0x00000342: 01 DW_LNS_copy + 0x000000000000047d 46 46 1 0 0 + + +0x00000343: 00 DW_LNE_set_address (0x0000000000000488) +0x0000034a: 05 DW_LNS_set_column (41) +0x0000034c: 01 DW_LNS_copy + 0x0000000000000488 46 41 1 0 0 + + +0x0000034d: 00 DW_LNE_set_address (0x0000000000000497) +0x00000354: 05 DW_LNS_set_column (11) +0x00000356: 01 DW_LNS_copy + 0x0000000000000497 46 11 1 0 0 + + +0x00000357: 00 DW_LNE_set_address (0x00000000000004ab) +0x0000035e: 03 DW_LNS_advance_line (47) +0x00000360: 05 DW_LNS_set_column (17) +0x00000362: 06 DW_LNS_negate_stmt +0x00000363: 01 DW_LNS_copy + 0x00000000000004ab 47 17 1 0 0 is_stmt + + +0x00000364: 00 DW_LNE_set_address (0x00000000000004b2) +0x0000036b: 05 DW_LNS_set_column (22) +0x0000036d: 06 DW_LNS_negate_stmt +0x0000036e: 01 DW_LNS_copy + 0x00000000000004b2 47 22 1 0 0 + + +0x0000036f: 00 DW_LNE_set_address (0x00000000000004bd) +0x00000376: 05 DW_LNS_set_column (26) +0x00000378: 01 DW_LNS_copy + 0x00000000000004bd 47 26 1 0 0 + + +0x00000379: 00 DW_LNE_set_address (0x00000000000004c4) +0x00000380: 05 DW_LNS_set_column (24) +0x00000382: 01 DW_LNS_copy + 0x00000000000004c4 47 24 1 0 0 + + +0x00000383: 00 DW_LNE_set_address (0x00000000000004d3) +0x0000038a: 05 DW_LNS_set_column (10) +0x0000038c: 01 DW_LNS_copy + 0x00000000000004d3 47 10 1 0 0 + + +0x0000038d: 00 DW_LNE_set_address (0x00000000000004e3) +0x00000394: 03 DW_LNS_advance_line (48) +0x00000396: 05 DW_LNS_set_column (23) +0x00000398: 06 DW_LNS_negate_stmt +0x00000399: 01 DW_LNS_copy + 0x00000000000004e3 48 23 1 0 0 is_stmt + + +0x0000039a: 00 DW_LNE_set_address (0x00000000000004ea) +0x000003a1: 05 DW_LNS_set_column (29) +0x000003a3: 06 DW_LNS_negate_stmt +0x000003a4: 01 DW_LNS_copy + 0x00000000000004ea 48 29 1 0 0 + + +0x000003a5: 00 DW_LNE_set_address (0x00000000000004f1) +0x000003ac: 05 DW_LNS_set_column (23) +0x000003ae: 01 DW_LNS_copy + 0x00000000000004f1 48 23 1 0 0 + + +0x000003af: 00 DW_LNE_set_address (0x000000000000050a) +0x000003b6: 05 DW_LNS_set_column (13) +0x000003b8: 01 DW_LNS_copy + 0x000000000000050a 48 13 1 0 0 + + +0x000003b9: 00 DW_LNE_set_address (0x0000000000000511) +0x000003c0: 05 DW_LNS_set_column (18) +0x000003c2: 01 DW_LNS_copy + 0x0000000000000511 48 18 1 0 0 + + +0x000003c3: 00 DW_LNE_set_address (0x0000000000000518) +0x000003ca: 05 DW_LNS_set_column (13) +0x000003cc: 01 DW_LNS_copy + 0x0000000000000518 48 13 1 0 0 + + +0x000003cd: 00 DW_LNE_set_address (0x000000000000052a) +0x000003d4: 05 DW_LNS_set_column (21) +0x000003d6: 01 DW_LNS_copy + 0x000000000000052a 48 21 1 0 0 + + +0x000003d7: 00 DW_LNE_set_address (0x0000000000000531) +0x000003de: 03 DW_LNS_advance_line (47) +0x000003e0: 05 DW_LNS_set_column (30) +0x000003e2: 06 DW_LNS_negate_stmt +0x000003e3: 01 DW_LNS_copy + 0x0000000000000531 47 30 1 0 0 is_stmt + + +0x000003e4: 00 DW_LNE_set_address (0x000000000000054a) +0x000003eb: 05 DW_LNS_set_column (10) +0x000003ed: 06 DW_LNS_negate_stmt +0x000003ee: 01 DW_LNS_copy + 0x000000000000054a 47 10 1 0 0 + + +0x000003ef: 00 DW_LNE_set_address (0x000000000000054c) +0x000003f6: 01 DW_LNS_copy + 0x000000000000054c 47 10 1 0 0 + + +0x000003f7: 00 DW_LNE_set_address (0x0000000000000553) +0x000003fe: 03 DW_LNS_advance_line (49) +0x00000400: 05 DW_LNS_set_column (16) +0x00000402: 06 DW_LNS_negate_stmt +0x00000403: 01 DW_LNS_copy + 0x0000000000000553 49 16 1 0 0 is_stmt + + +0x00000404: 00 DW_LNE_set_address (0x000000000000055a) +0x0000040b: 03 DW_LNS_advance_line (50) +0x0000040d: 05 DW_LNS_set_column (14) +0x0000040f: 01 DW_LNS_copy + 0x000000000000055a 50 14 1 0 0 is_stmt + + +0x00000410: 00 DW_LNE_set_address (0x0000000000000568) +0x00000417: 05 DW_LNS_set_column (12) +0x00000419: 06 DW_LNS_negate_stmt +0x0000041a: 01 DW_LNS_copy + 0x0000000000000568 50 12 1 0 0 + + +0x0000041b: 00 DW_LNE_set_address (0x0000000000000575) +0x00000422: 03 DW_LNS_advance_line (52) +0x00000424: 05 DW_LNS_set_column (20) +0x00000426: 06 DW_LNS_negate_stmt +0x00000427: 01 DW_LNS_copy + 0x0000000000000575 52 20 1 0 0 is_stmt + + +0x00000428: 00 DW_LNE_set_address (0x000000000000057c) +0x0000042f: 05 DW_LNS_set_column (29) +0x00000431: 06 DW_LNS_negate_stmt +0x00000432: 01 DW_LNS_copy + 0x000000000000057c 52 29 1 0 0 + + +0x00000433: 00 DW_LNE_set_address (0x0000000000000583) +0x0000043a: 05 DW_LNS_set_column (31) +0x0000043c: 01 DW_LNS_copy + 0x0000000000000583 52 31 1 0 0 + + +0x0000043d: 00 DW_LNE_set_address (0x000000000000058e) +0x00000444: 05 DW_LNS_set_column (27) +0x00000446: 01 DW_LNS_copy + 0x000000000000058e 52 27 1 0 0 + + +0x00000447: 00 DW_LNE_set_address (0x0000000000000595) +0x0000044e: 05 DW_LNS_set_column (36) +0x00000450: 01 DW_LNS_copy + 0x0000000000000595 52 36 1 0 0 + + +0x00000451: 00 DW_LNE_set_address (0x00000000000005a0) +0x00000458: 05 DW_LNS_set_column (40) +0x0000045a: 01 DW_LNS_copy + 0x00000000000005a0 52 40 1 0 0 + + +0x0000045b: 00 DW_LNE_set_address (0x00000000000005a7) +0x00000462: 05 DW_LNS_set_column (38) +0x00000464: 01 DW_LNS_copy + 0x00000000000005a7 52 38 1 0 0 + + +0x00000465: 00 DW_LNE_set_address (0x00000000000005b6) +0x0000046c: 05 DW_LNS_set_column (13) +0x0000046e: 01 DW_LNS_copy + 0x00000000000005b6 52 13 1 0 0 + + +0x0000046f: 00 DW_LNE_set_address (0x00000000000005c6) +0x00000476: 03 DW_LNS_advance_line (53) +0x00000478: 05 DW_LNS_set_column (22) +0x0000047a: 06 DW_LNS_negate_stmt +0x0000047b: 01 DW_LNS_copy + 0x00000000000005c6 53 22 1 0 0 is_stmt + + +0x0000047c: 00 DW_LNE_set_address (0x00000000000005cd) +0x00000483: 05 DW_LNS_set_column (27) +0x00000485: 06 DW_LNS_negate_stmt +0x00000486: 01 DW_LNS_copy + 0x00000000000005cd 53 27 1 0 0 + + +0x00000487: 00 DW_LNE_set_address (0x00000000000005d5) +0x0000048e: 05 DW_LNS_set_column (22) +0x00000490: 01 DW_LNS_copy + 0x00000000000005d5 53 22 1 0 0 + + +0x00000491: 00 DW_LNE_set_address (0x00000000000005f6) +0x00000498: 05 DW_LNS_set_column (20) +0x0000049a: 01 DW_LNS_copy + 0x00000000000005f6 53 20 1 0 0 + + +0x0000049b: 00 DW_LNE_set_address (0x00000000000005fe) +0x000004a2: 03 DW_LNS_advance_line (54) +0x000004a4: 05 DW_LNS_set_column (26) +0x000004a6: 06 DW_LNS_negate_stmt +0x000004a7: 01 DW_LNS_copy + 0x00000000000005fe 54 26 1 0 0 is_stmt + + +0x000004a8: 00 DW_LNE_set_address (0x0000000000000606) +0x000004af: 05 DW_LNS_set_column (31) +0x000004b1: 06 DW_LNS_negate_stmt +0x000004b2: 01 DW_LNS_copy + 0x0000000000000606 54 31 1 0 0 + + +0x000004b3: 00 DW_LNE_set_address (0x000000000000060e) +0x000004ba: 05 DW_LNS_set_column (26) +0x000004bc: 01 DW_LNS_copy + 0x000000000000060e 54 26 1 0 0 + + +0x000004bd: 00 DW_LNE_set_address (0x0000000000000630) +0x000004c4: 05 DW_LNS_set_column (16) +0x000004c6: 01 DW_LNS_copy + 0x0000000000000630 54 16 1 0 0 + + +0x000004c7: 00 DW_LNE_set_address (0x0000000000000638) +0x000004ce: 05 DW_LNS_set_column (21) +0x000004d0: 01 DW_LNS_copy + 0x0000000000000638 54 21 1 0 0 + + +0x000004d1: 00 DW_LNE_set_address (0x0000000000000640) +0x000004d8: 05 DW_LNS_set_column (16) +0x000004da: 01 DW_LNS_copy + 0x0000000000000640 54 16 1 0 0 + + +0x000004db: 00 DW_LNE_set_address (0x0000000000000659) +0x000004e2: 05 DW_LNS_set_column (24) +0x000004e4: 01 DW_LNS_copy + 0x0000000000000659 54 24 1 0 0 + + +0x000004e5: 00 DW_LNE_set_address (0x0000000000000662) +0x000004ec: 03 DW_LNS_advance_line (55) +0x000004ee: 05 DW_LNS_set_column (26) +0x000004f0: 06 DW_LNS_negate_stmt +0x000004f1: 01 DW_LNS_copy + 0x0000000000000662 55 26 1 0 0 is_stmt + + +0x000004f2: 00 DW_LNE_set_address (0x000000000000066a) +0x000004f9: 05 DW_LNS_set_column (16) +0x000004fb: 06 DW_LNS_negate_stmt +0x000004fc: 01 DW_LNS_copy + 0x000000000000066a 55 16 1 0 0 + + +0x000004fd: 00 DW_LNE_set_address (0x0000000000000672) +0x00000504: 05 DW_LNS_set_column (21) +0x00000506: 01 DW_LNS_copy + 0x0000000000000672 55 21 1 0 0 + + +0x00000507: 00 DW_LNE_set_address (0x000000000000067a) +0x0000050e: 05 DW_LNS_set_column (16) +0x00000510: 01 DW_LNS_copy + 0x000000000000067a 55 16 1 0 0 + + +0x00000511: 00 DW_LNE_set_address (0x0000000000000693) +0x00000518: 05 DW_LNS_set_column (24) +0x0000051a: 01 DW_LNS_copy + 0x0000000000000693 55 24 1 0 0 + + +0x0000051b: 00 DW_LNE_set_address (0x000000000000069c) +0x00000522: 03 DW_LNS_advance_line (52) +0x00000524: 05 DW_LNS_set_column (44) +0x00000526: 06 DW_LNS_negate_stmt +0x00000527: 01 DW_LNS_copy + 0x000000000000069c 52 44 1 0 0 is_stmt + + +0x00000528: 00 DW_LNE_set_address (0x00000000000006bb) +0x0000052f: 05 DW_LNS_set_column (49) +0x00000531: 06 DW_LNS_negate_stmt +0x00000532: 01 DW_LNS_copy + 0x00000000000006bb 52 49 1 0 0 + + +0x00000533: 00 DW_LNE_set_address (0x00000000000006da) +0x0000053a: 05 DW_LNS_set_column (13) +0x0000053c: 01 DW_LNS_copy + 0x00000000000006da 52 13 1 0 0 + + +0x0000053d: 00 DW_LNE_set_address (0x00000000000006dc) +0x00000544: 01 DW_LNS_copy + 0x00000000000006dc 52 13 1 0 0 + + +0x00000545: 00 DW_LNE_set_address (0x00000000000006df) +0x0000054c: 03 DW_LNS_advance_line (57) +0x0000054e: 05 DW_LNS_set_column (18) +0x00000550: 06 DW_LNS_negate_stmt +0x00000551: 01 DW_LNS_copy + 0x00000000000006df 57 18 1 0 0 is_stmt + + +0x00000552: 00 DW_LNE_set_address (0x00000000000006fe) +0x00000559: 03 DW_LNS_advance_line (58) +0x0000055b: 05 DW_LNS_set_column (19) +0x0000055d: 01 DW_LNS_copy + 0x00000000000006fe 58 19 1 0 0 is_stmt + + +0x0000055e: 00 DW_LNE_set_address (0x0000000000000706) +0x00000565: 05 DW_LNS_set_column (24) +0x00000567: 06 DW_LNS_negate_stmt +0x00000568: 01 DW_LNS_copy + 0x0000000000000706 58 24 1 0 0 + + +0x00000569: 00 DW_LNE_set_address (0x000000000000070e) +0x00000570: 05 DW_LNS_set_column (19) +0x00000572: 01 DW_LNS_copy + 0x000000000000070e 58 19 1 0 0 + + +0x00000573: 00 DW_LNE_set_address (0x0000000000000730) +0x0000057a: 05 DW_LNS_set_column (17) +0x0000057c: 01 DW_LNS_copy + 0x0000000000000730 58 17 1 0 0 + + +0x0000057d: 00 DW_LNE_set_address (0x0000000000000738) +0x00000584: 03 DW_LNS_advance_line (59) +0x00000586: 05 DW_LNS_set_column (23) +0x00000588: 06 DW_LNS_negate_stmt +0x00000589: 01 DW_LNS_copy + 0x0000000000000738 59 23 1 0 0 is_stmt + + +0x0000058a: 00 DW_LNE_set_address (0x0000000000000740) +0x00000591: 05 DW_LNS_set_column (13) +0x00000593: 06 DW_LNS_negate_stmt +0x00000594: 01 DW_LNS_copy + 0x0000000000000740 59 13 1 0 0 + + +0x00000595: 00 DW_LNE_set_address (0x0000000000000748) +0x0000059c: 05 DW_LNS_set_column (18) +0x0000059e: 01 DW_LNS_copy + 0x0000000000000748 59 18 1 0 0 + + +0x0000059f: 00 DW_LNE_set_address (0x0000000000000750) +0x000005a6: 05 DW_LNS_set_column (13) +0x000005a8: 01 DW_LNS_copy + 0x0000000000000750 59 13 1 0 0 + + +0x000005a9: 00 DW_LNE_set_address (0x0000000000000769) +0x000005b0: 05 DW_LNS_set_column (21) +0x000005b2: 01 DW_LNS_copy + 0x0000000000000769 59 21 1 0 0 + + +0x000005b3: 00 DW_LNE_set_address (0x0000000000000772) +0x000005ba: 03 DW_LNS_advance_line (60) +0x000005bc: 05 DW_LNS_set_column (17) +0x000005be: 06 DW_LNS_negate_stmt +0x000005bf: 01 DW_LNS_copy + 0x0000000000000772 60 17 1 0 0 is_stmt + + +0x000005c0: 00 DW_LNE_set_address (0x000000000000077a) +0x000005c7: 05 DW_LNS_set_column (15) +0x000005c9: 06 DW_LNS_negate_stmt +0x000005ca: 01 DW_LNS_copy + 0x000000000000077a 60 15 1 0 0 + + +0x000005cb: 00 DW_LNE_set_address (0x0000000000000782) +0x000005d2: 03 DW_LNS_advance_line (61) +0x000005d4: 05 DW_LNS_set_column (19) +0x000005d6: 06 DW_LNS_negate_stmt +0x000005d7: 01 DW_LNS_copy + 0x0000000000000782 61 19 1 0 0 is_stmt + + +0x000005d8: 00 DW_LNE_set_address (0x000000000000078a) +0x000005df: 05 DW_LNS_set_column (10) +0x000005e1: 06 DW_LNS_negate_stmt +0x000005e2: 01 DW_LNS_copy + 0x000000000000078a 61 10 1 0 0 + + +0x000005e3: 00 DW_LNE_set_address (0x0000000000000790) +0x000005ea: 03 DW_LNS_advance_line (62) +0x000005ec: 05 DW_LNS_set_column (14) +0x000005ee: 06 DW_LNS_negate_stmt +0x000005ef: 01 DW_LNS_copy + 0x0000000000000790 62 14 1 0 0 is_stmt + + +0x000005f0: 00 DW_LNE_set_address (0x0000000000000798) +0x000005f7: 05 DW_LNS_set_column (25) +0x000005f9: 06 DW_LNS_negate_stmt +0x000005fa: 01 DW_LNS_copy + 0x0000000000000798 62 25 1 0 0 + + +0x000005fb: 00 DW_LNE_set_address (0x00000000000007a0) +0x00000602: 05 DW_LNS_set_column (23) +0x00000604: 01 DW_LNS_copy + 0x00000000000007a0 62 23 1 0 0 + + +0x00000605: 00 DW_LNE_set_address (0x00000000000007b6) +0x0000060c: 05 DW_LNS_set_column (14) +0x0000060e: 01 DW_LNS_copy + 0x00000000000007b6 62 14 1 0 0 + + +0x0000060f: 00 DW_LNE_set_address (0x00000000000007cd) +0x00000616: 03 DW_LNS_advance_line (63) +0x00000618: 05 DW_LNS_set_column (24) +0x0000061a: 06 DW_LNS_negate_stmt +0x0000061b: 01 DW_LNS_copy + 0x00000000000007cd 63 24 1 0 0 is_stmt + + +0x0000061c: 00 DW_LNE_set_address (0x00000000000007d5) +0x00000623: 05 DW_LNS_set_column (22) +0x00000625: 06 DW_LNS_negate_stmt +0x00000626: 01 DW_LNS_copy + 0x00000000000007d5 63 22 1 0 0 + + +0x00000627: 00 DW_LNE_set_address (0x00000000000007df) +0x0000062e: 03 DW_LNS_advance_line (66) +0x00000630: 05 DW_LNS_set_column (14) +0x00000632: 06 DW_LNS_negate_stmt +0x00000633: 01 DW_LNS_copy + 0x00000000000007df 66 14 1 0 0 is_stmt + + +0x00000634: 00 DW_LNE_set_address (0x00000000000007e9) +0x0000063b: 05 DW_LNS_set_column (19) +0x0000063d: 06 DW_LNS_negate_stmt +0x0000063e: 01 DW_LNS_copy + 0x00000000000007e9 66 19 1 0 0 + + +0x0000063f: 00 DW_LNE_set_address (0x00000000000007f1) +0x00000646: 05 DW_LNS_set_column (21) +0x00000648: 01 DW_LNS_copy + 0x00000000000007f1 66 21 1 0 0 + + +0x00000649: 00 DW_LNE_set_address (0x0000000000000800) +0x00000650: 05 DW_LNS_set_column (16) +0x00000652: 01 DW_LNS_copy + 0x0000000000000800 66 16 1 0 0 + + +0x00000653: 00 DW_LNE_set_address (0x0000000000000816) +0x0000065a: 05 DW_LNS_set_column (14) +0x0000065c: 01 DW_LNS_copy + 0x0000000000000816 66 14 1 0 0 + + +0x0000065d: 00 DW_LNE_set_address (0x000000000000082d) +0x00000664: 03 DW_LNS_advance_line (67) +0x00000666: 05 DW_LNS_set_column (18) +0x00000668: 06 DW_LNS_negate_stmt +0x00000669: 01 DW_LNS_copy + 0x000000000000082d 67 18 1 0 0 is_stmt + + +0x0000066a: 00 DW_LNE_set_address (0x0000000000000835) +0x00000671: 05 DW_LNS_set_column (13) +0x00000673: 06 DW_LNS_negate_stmt +0x00000674: 01 DW_LNS_copy + 0x0000000000000835 67 13 1 0 0 + + +0x00000675: 00 DW_LNE_set_address (0x000000000000083a) +0x0000067c: 03 DW_LNS_advance_line (68) +0x0000067e: 05 DW_LNS_set_column (18) +0x00000680: 06 DW_LNS_negate_stmt +0x00000681: 01 DW_LNS_copy + 0x000000000000083a 68 18 1 0 0 is_stmt + + +0x00000682: 00 DW_LNE_set_address (0x0000000000000842) +0x00000689: 05 DW_LNS_set_column (13) +0x0000068b: 06 DW_LNS_negate_stmt +0x0000068c: 01 DW_LNS_copy + 0x0000000000000842 68 13 1 0 0 + + +0x0000068d: 00 DW_LNE_set_address (0x0000000000000847) +0x00000694: 03 DW_LNS_advance_line (69) +0x00000696: 05 DW_LNS_set_column (18) +0x00000698: 06 DW_LNS_negate_stmt +0x00000699: 01 DW_LNS_copy + 0x0000000000000847 69 18 1 0 0 is_stmt + + +0x0000069a: 00 DW_LNE_set_address (0x000000000000084f) +0x000006a1: 05 DW_LNS_set_column (13) +0x000006a3: 06 DW_LNS_negate_stmt +0x000006a4: 01 DW_LNS_copy + 0x000000000000084f 69 13 1 0 0 + + +0x000006a5: 00 DW_LNE_set_address (0x0000000000000854) +0x000006ac: 03 DW_LNS_advance_line (70) +0x000006ae: 05 DW_LNS_set_column (20) +0x000006b0: 06 DW_LNS_negate_stmt +0x000006b1: 01 DW_LNS_copy + 0x0000000000000854 70 20 1 0 0 is_stmt + + +0x000006b2: 00 DW_LNE_set_address (0x000000000000085c) +0x000006b9: 05 DW_LNS_set_column (13) +0x000006bb: 06 DW_LNS_negate_stmt +0x000006bc: 01 DW_LNS_copy + 0x000000000000085c 70 13 1 0 0 + + +0x000006bd: 00 DW_LNE_set_address (0x000000000000087a) +0x000006c4: 03 DW_LNS_advance_line (74) +0x000006c6: 05 DW_LNS_set_column (22) +0x000006c8: 06 DW_LNS_negate_stmt +0x000006c9: 01 DW_LNS_copy + 0x000000000000087a 74 22 1 0 0 is_stmt + + +0x000006ca: 00 DW_LNE_set_address (0x000000000000088b) +0x000006d1: 05 DW_LNS_set_column (17) +0x000006d3: 06 DW_LNS_negate_stmt +0x000006d4: 01 DW_LNS_copy + 0x000000000000088b 74 17 1 0 0 + + +0x000006d5: 00 DW_LNE_set_address (0x0000000000000893) +0x000006dc: 03 DW_LNS_advance_line (75) +0x000006de: 05 DW_LNS_set_column (20) +0x000006e0: 06 DW_LNS_negate_stmt +0x000006e1: 01 DW_LNS_copy + 0x0000000000000893 75 20 1 0 0 is_stmt + + +0x000006e2: 00 DW_LNE_set_address (0x000000000000089b) +0x000006e9: 05 DW_LNS_set_column (25) +0x000006eb: 06 DW_LNS_negate_stmt +0x000006ec: 01 DW_LNS_copy + 0x000000000000089b 75 25 1 0 0 + + +0x000006ed: 00 DW_LNE_set_address (0x00000000000008a7) +0x000006f4: 05 DW_LNS_set_column (29) +0x000006f6: 01 DW_LNS_copy + 0x00000000000008a7 75 29 1 0 0 + + +0x000006f7: 00 DW_LNE_set_address (0x00000000000008af) +0x000006fe: 05 DW_LNS_set_column (27) +0x00000700: 01 DW_LNS_copy + 0x00000000000008af 75 27 1 0 0 + + +0x00000701: 00 DW_LNE_set_address (0x00000000000008c5) +0x00000708: 05 DW_LNS_set_column (13) +0x0000070a: 01 DW_LNS_copy + 0x00000000000008c5 75 13 1 0 0 + + +0x0000070b: 00 DW_LNE_set_address (0x00000000000008da) +0x00000712: 03 DW_LNS_advance_line (76) +0x00000714: 05 DW_LNS_set_column (27) +0x00000716: 06 DW_LNS_negate_stmt +0x00000717: 01 DW_LNS_copy + 0x00000000000008da 76 27 1 0 0 is_stmt + + +0x00000718: 00 DW_LNE_set_address (0x00000000000008e2) +0x0000071f: 05 DW_LNS_set_column (33) +0x00000721: 06 DW_LNS_negate_stmt +0x00000722: 01 DW_LNS_copy + 0x00000000000008e2 76 33 1 0 0 + + +0x00000723: 00 DW_LNE_set_address (0x00000000000008ea) +0x0000072a: 05 DW_LNS_set_column (35) +0x0000072c: 01 DW_LNS_copy + 0x00000000000008ea 76 35 1 0 0 + + +0x0000072d: 00 DW_LNE_set_address (0x00000000000008f9) +0x00000734: 05 DW_LNS_set_column (27) +0x00000736: 01 DW_LNS_copy + 0x00000000000008f9 76 27 1 0 0 + + +0x00000737: 00 DW_LNE_set_address (0x000000000000091b) +0x0000073e: 05 DW_LNS_set_column (16) +0x00000740: 01 DW_LNS_copy + 0x000000000000091b 76 16 1 0 0 + + +0x00000741: 00 DW_LNE_set_address (0x0000000000000923) +0x00000748: 05 DW_LNS_set_column (22) +0x0000074a: 01 DW_LNS_copy + 0x0000000000000923 76 22 1 0 0 + + +0x0000074b: 00 DW_LNE_set_address (0x000000000000092b) +0x00000752: 05 DW_LNS_set_column (16) +0x00000754: 01 DW_LNS_copy + 0x000000000000092b 76 16 1 0 0 + + +0x00000755: 00 DW_LNE_set_address (0x0000000000000944) +0x0000075c: 05 DW_LNS_set_column (25) +0x0000075e: 01 DW_LNS_copy + 0x0000000000000944 76 25 1 0 0 + + +0x0000075f: 00 DW_LNE_set_address (0x000000000000094d) +0x00000766: 03 DW_LNS_advance_line (75) +0x00000768: 05 DW_LNS_set_column (33) +0x0000076a: 06 DW_LNS_negate_stmt +0x0000076b: 01 DW_LNS_copy + 0x000000000000094d 75 33 1 0 0 is_stmt + + +0x0000076c: 00 DW_LNE_set_address (0x000000000000096c) +0x00000773: 05 DW_LNS_set_column (13) +0x00000775: 06 DW_LNS_negate_stmt +0x00000776: 01 DW_LNS_copy + 0x000000000000096c 75 13 1 0 0 + + +0x00000777: 00 DW_LNE_set_address (0x000000000000096e) +0x0000077e: 01 DW_LNS_copy + 0x000000000000096e 75 13 1 0 0 + + +0x0000077f: 00 DW_LNE_set_address (0x0000000000000976) +0x00000786: 03 DW_LNS_advance_line (77) +0x00000788: 05 DW_LNS_set_column (24) +0x0000078a: 06 DW_LNS_negate_stmt +0x0000078b: 01 DW_LNS_copy + 0x0000000000000976 77 24 1 0 0 is_stmt + + +0x0000078c: 00 DW_LNE_set_address (0x000000000000097e) +0x00000793: 05 DW_LNS_set_column (13) +0x00000795: 06 DW_LNS_negate_stmt +0x00000796: 01 DW_LNS_copy + 0x000000000000097e 77 13 1 0 0 + + +0x00000797: 00 DW_LNE_set_address (0x0000000000000986) +0x0000079e: 05 DW_LNS_set_column (19) +0x000007a0: 01 DW_LNS_copy + 0x0000000000000986 77 19 1 0 0 + + +0x000007a1: 00 DW_LNE_set_address (0x000000000000098e) +0x000007a8: 05 DW_LNS_set_column (13) +0x000007aa: 01 DW_LNS_copy + 0x000000000000098e 77 13 1 0 0 + + +0x000007ab: 00 DW_LNE_set_address (0x00000000000009a7) +0x000007b2: 05 DW_LNS_set_column (22) +0x000007b4: 01 DW_LNS_copy + 0x00000000000009a7 77 22 1 0 0 + + +0x000007b5: 00 DW_LNE_set_address (0x00000000000009b0) +0x000007bc: 03 DW_LNS_advance_line (79) +0x000007be: 05 DW_LNS_set_column (16) +0x000007c0: 06 DW_LNS_negate_stmt +0x000007c1: 01 DW_LNS_copy + 0x00000000000009b0 79 16 1 0 0 is_stmt + + +0x000007c2: 00 DW_LNE_set_address (0x00000000000009b8) +0x000007c9: 05 DW_LNS_set_column (22) +0x000007cb: 06 DW_LNS_negate_stmt +0x000007cc: 01 DW_LNS_copy + 0x00000000000009b8 79 22 1 0 0 + + +0x000007cd: 00 DW_LNE_set_address (0x00000000000009c0) +0x000007d4: 05 DW_LNS_set_column (16) +0x000007d6: 01 DW_LNS_copy + 0x00000000000009c0 79 16 1 0 0 + + +0x000007d7: 00 DW_LNE_set_address (0x00000000000009d9) +0x000007de: 05 DW_LNS_set_column (14) +0x000007e0: 01 DW_LNS_copy + 0x00000000000009d9 79 14 1 0 0 + + +0x000007e1: 00 DW_LNE_set_address (0x00000000000009fa) +0x000007e8: 05 DW_LNS_set_column (25) +0x000007ea: 01 DW_LNS_copy + 0x00000000000009fa 79 25 1 0 0 + + +0x000007eb: 00 DW_LNE_set_address (0x0000000000000a10) +0x000007f2: 05 DW_LNS_set_column (14) +0x000007f4: 01 DW_LNS_copy + 0x0000000000000a10 79 14 1 0 0 + + +0x000007f5: 00 DW_LNE_set_address (0x0000000000000a29) +0x000007fc: 03 DW_LNS_advance_line (80) +0x000007fe: 05 DW_LNS_set_column (13) +0x00000800: 06 DW_LNS_negate_stmt +0x00000801: 01 DW_LNS_copy + 0x0000000000000a29 80 13 1 0 0 is_stmt + + +0x00000802: 00 DW_LNE_set_address (0x0000000000000a2c) +0x00000809: 03 DW_LNS_advance_line (81) +0x0000080b: 05 DW_LNS_set_column (11) +0x0000080d: 01 DW_LNS_copy + 0x0000000000000a2c 81 11 1 0 0 is_stmt + + +0x0000080e: 00 DW_LNE_set_address (0x0000000000000a4b) +0x00000815: 03 DW_LNS_advance_line (65) +0x00000817: 05 DW_LNS_set_column (7) +0x00000819: 01 DW_LNS_copy + 0x0000000000000a4b 65 7 1 0 0 is_stmt + + +0x0000081a: 00 DW_LNE_set_address (0x0000000000000a4e) +0x00000821: 03 DW_LNS_advance_line (80) +0x00000823: 05 DW_LNS_set_column (13) +0x00000825: 01 DW_LNS_copy + 0x0000000000000a4e 80 13 1 0 0 is_stmt + + +0x00000826: 00 DW_LNE_set_address (0x0000000000000a4f) +0x0000082d: 03 DW_LNS_advance_line (43) +0x0000082f: 05 DW_LNS_set_column (4) +0x00000831: 00 DW_LNE_end_sequence + 0x0000000000000a4f 43 4 1 0 0 is_stmt end_sequence + +0x00000834: 00 DW_LNE_set_address (0x0000000000000a55) +0x0000083b: 03 DW_LNS_advance_line (152) +0x0000083e: 01 DW_LNS_copy + 0x0000000000000a55 152 0 1 0 0 is_stmt + + +0x0000083f: 00 DW_LNE_set_address (0x0000000000000acc) +0x00000846: 03 DW_LNS_advance_line (153) +0x00000848: 05 DW_LNS_set_column (12) +0x0000084a: 0a DW_LNS_set_prologue_end +0x0000084b: 01 DW_LNS_copy + 0x0000000000000acc 153 12 1 0 0 is_stmt prologue_end + + +0x0000084c: 00 DW_LNE_set_address (0x0000000000000ad3) +0x00000853: 05 DW_LNS_set_column (17) +0x00000855: 06 DW_LNS_negate_stmt +0x00000856: 01 DW_LNS_copy + 0x0000000000000ad3 153 17 1 0 0 + + +0x00000857: 00 DW_LNE_set_address (0x0000000000000ae2) +0x0000085e: 05 DW_LNS_set_column (12) +0x00000860: 01 DW_LNS_copy + 0x0000000000000ae2 153 12 1 0 0 + + +0x00000861: 00 DW_LNE_set_address (0x0000000000000af6) +0x00000868: 05 DW_LNS_set_column (28) +0x0000086a: 01 DW_LNS_copy + 0x0000000000000af6 153 28 1 0 0 + + +0x0000086b: 00 DW_LNE_set_address (0x0000000000000b04) +0x00000872: 05 DW_LNS_set_column (23) +0x00000874: 01 DW_LNS_copy + 0x0000000000000b04 153 23 1 0 0 + + +0x00000875: 00 DW_LNE_set_address (0x0000000000000b0a) +0x0000087c: 05 DW_LNS_set_column (12) +0x0000087e: 01 DW_LNS_copy + 0x0000000000000b0a 153 12 1 0 0 + + +0x0000087f: 00 DW_LNE_set_address (0x0000000000000b15) +0x00000886: 01 DW_LNS_copy + 0x0000000000000b15 153 12 1 0 0 + + +0x00000887: 00 DW_LNE_set_address (0x0000000000000b1a) +0x0000088e: 01 DW_LNS_copy + 0x0000000000000b1a 153 12 1 0 0 + + +0x0000088f: 00 DW_LNE_set_address (0x0000000000000b22) +0x00000896: 05 DW_LNS_set_column (8) +0x00000898: 01 DW_LNS_copy + 0x0000000000000b22 153 8 1 0 0 + + +0x00000899: 00 DW_LNE_set_address (0x0000000000000b29) +0x000008a0: 03 DW_LNS_advance_line (155) +0x000008a2: 06 DW_LNS_negate_stmt +0x000008a3: 01 DW_LNS_copy + 0x0000000000000b29 155 8 1 0 0 is_stmt + + +0x000008a4: 00 DW_LNE_set_address (0x0000000000000b30) +0x000008ab: 05 DW_LNS_set_column (10) +0x000008ad: 06 DW_LNS_negate_stmt +0x000008ae: 01 DW_LNS_copy + 0x0000000000000b30 155 10 1 0 0 + + +0x000008af: 00 DW_LNE_set_address (0x0000000000000b3f) +0x000008b6: 05 DW_LNS_set_column (8) +0x000008b8: 01 DW_LNS_copy + 0x0000000000000b3f 155 8 1 0 0 + + +0x000008b9: 00 DW_LNE_set_address (0x0000000000000b53) +0x000008c0: 03 DW_LNS_advance_line (156) +0x000008c2: 05 DW_LNS_set_column (7) +0x000008c4: 06 DW_LNS_negate_stmt +0x000008c5: 01 DW_LNS_copy + 0x0000000000000b53 156 7 1 0 0 is_stmt + + +0x000008c6: 00 DW_LNE_set_address (0x0000000000000b67) +0x000008cd: 03 DW_LNS_advance_line (157) +0x000008cf: 01 DW_LNS_copy + 0x0000000000000b67 157 7 1 0 0 is_stmt + + +0x000008d0: 00 DW_LNE_set_address (0x0000000000000b71) +0x000008d7: 03 DW_LNS_advance_line (159) +0x000008d9: 05 DW_LNS_set_column (38) +0x000008db: 01 DW_LNS_copy + 0x0000000000000b71 159 38 1 0 0 is_stmt + + +0x000008dc: 00 DW_LNE_set_address (0x0000000000000b78) +0x000008e3: 05 DW_LNS_set_column (50) +0x000008e5: 06 DW_LNS_negate_stmt +0x000008e6: 01 DW_LNS_copy + 0x0000000000000b78 159 50 1 0 0 + + +0x000008e7: 00 DW_LNE_set_address (0x0000000000000b7f) +0x000008ee: 05 DW_LNS_set_column (41) +0x000008f0: 01 DW_LNS_copy + 0x0000000000000b7f 159 41 1 0 0 + + +0x000008f1: 00 DW_LNE_set_address (0x0000000000000b85) +0x000008f8: 05 DW_LNS_set_column (4) +0x000008fa: 01 DW_LNS_copy + 0x0000000000000b85 159 4 1 0 0 + + +0x000008fb: 00 DW_LNE_set_address (0x0000000000000ba3) +0x00000902: 03 DW_LNS_advance_line (160) +0x00000904: 06 DW_LNS_negate_stmt +0x00000905: 01 DW_LNS_copy + 0x0000000000000ba3 160 4 1 0 0 is_stmt + + +0x00000906: 00 DW_LNE_set_address (0x0000000000000bab) +0x0000090d: 03 DW_LNS_advance_line (161) +0x0000090f: 05 DW_LNS_set_column (1) +0x00000911: 01 DW_LNS_copy + 0x0000000000000bab 161 1 1 0 0 is_stmt + + +0x00000912: 00 DW_LNE_set_address (0x0000000000000bc5) +0x00000919: 00 DW_LNE_end_sequence + 0x0000000000000bc5 161 1 1 0 0 is_stmt end_sequence + +0x0000091c: 00 DW_LNE_set_address (0x0000000000000bc7) +0x00000923: 03 DW_LNS_advance_line (88) +0x00000926: 01 DW_LNS_copy + 0x0000000000000bc7 88 0 1 0 0 is_stmt + + +0x00000927: 00 DW_LNE_set_address (0x0000000000000d51) +0x0000092e: 03 DW_LNS_advance_line (90) +0x00000930: 05 DW_LNS_set_column (8) +0x00000932: 0a DW_LNS_set_prologue_end +0x00000933: 01 DW_LNS_copy + 0x0000000000000d51 90 8 1 0 0 is_stmt prologue_end + + +0x00000934: 00 DW_LNE_set_address (0x0000000000000d58) +0x0000093b: 03 DW_LNS_advance_line (93) +0x0000093d: 05 DW_LNS_set_column (9) +0x0000093f: 01 DW_LNS_copy + 0x0000000000000d58 93 9 1 0 0 is_stmt + + +0x00000940: 00 DW_LNE_set_address (0x0000000000000d5f) +0x00000947: 03 DW_LNS_advance_line (94) +0x00000949: 05 DW_LNS_set_column (11) +0x0000094b: 01 DW_LNS_copy + 0x0000000000000d5f 94 11 1 0 0 is_stmt + + +0x0000094c: 00 DW_LNE_set_address (0x0000000000000d66) +0x00000953: 05 DW_LNS_set_column (16) +0x00000955: 06 DW_LNS_negate_stmt +0x00000956: 01 DW_LNS_copy + 0x0000000000000d66 94 16 1 0 0 + + +0x00000957: 00 DW_LNE_set_address (0x0000000000000d71) +0x0000095e: 05 DW_LNS_set_column (20) +0x00000960: 01 DW_LNS_copy + 0x0000000000000d71 94 20 1 0 0 + + +0x00000961: 00 DW_LNE_set_address (0x0000000000000d78) +0x00000968: 05 DW_LNS_set_column (22) +0x0000096a: 01 DW_LNS_copy + 0x0000000000000d78 94 22 1 0 0 + + +0x0000096b: 00 DW_LNE_set_address (0x0000000000000d83) +0x00000972: 05 DW_LNS_set_column (18) +0x00000974: 01 DW_LNS_copy + 0x0000000000000d83 94 18 1 0 0 + + +0x00000975: 00 DW_LNE_set_address (0x0000000000000d92) +0x0000097c: 05 DW_LNS_set_column (4) +0x0000097e: 01 DW_LNS_copy + 0x0000000000000d92 94 4 1 0 0 + + +0x0000097f: 00 DW_LNE_set_address (0x0000000000000da6) +0x00000986: 03 DW_LNS_advance_line (95) +0x00000988: 05 DW_LNS_set_column (29) +0x0000098a: 06 DW_LNS_negate_stmt +0x0000098b: 01 DW_LNS_copy + 0x0000000000000da6 95 29 1 0 0 is_stmt + + +0x0000098c: 00 DW_LNE_set_address (0x0000000000000dac) +0x00000993: 05 DW_LNS_set_column (13) +0x00000995: 06 DW_LNS_negate_stmt +0x00000996: 01 DW_LNS_copy + 0x0000000000000dac 95 13 1 0 0 + + +0x00000997: 00 DW_LNE_set_address (0x0000000000000db3) +0x0000099e: 03 DW_LNS_advance_line (96) +0x000009a0: 05 DW_LNS_set_column (18) +0x000009a2: 06 DW_LNS_negate_stmt +0x000009a3: 01 DW_LNS_copy + 0x0000000000000db3 96 18 1 0 0 is_stmt + + +0x000009a4: 00 DW_LNE_set_address (0x0000000000000dba) +0x000009ab: 05 DW_LNS_set_column (7) +0x000009ad: 06 DW_LNS_negate_stmt +0x000009ae: 01 DW_LNS_copy + 0x0000000000000dba 96 7 1 0 0 + + +0x000009af: 00 DW_LNE_set_address (0x0000000000000dc1) +0x000009b6: 05 DW_LNS_set_column (16) +0x000009b8: 01 DW_LNS_copy + 0x0000000000000dc1 96 16 1 0 0 + + +0x000009b9: 00 DW_LNE_set_address (0x0000000000000dc8) +0x000009c0: 03 DW_LNS_advance_line (97) +0x000009c2: 05 DW_LNS_set_column (18) +0x000009c4: 06 DW_LNS_negate_stmt +0x000009c5: 01 DW_LNS_copy + 0x0000000000000dc8 97 18 1 0 0 is_stmt + + +0x000009c6: 00 DW_LNE_set_address (0x0000000000000dcf) +0x000009cd: 05 DW_LNS_set_column (7) +0x000009cf: 06 DW_LNS_negate_stmt +0x000009d0: 01 DW_LNS_copy + 0x0000000000000dcf 97 7 1 0 0 + + +0x000009d1: 00 DW_LNE_set_address (0x0000000000000dd6) +0x000009d8: 05 DW_LNS_set_column (16) +0x000009da: 01 DW_LNS_copy + 0x0000000000000dd6 97 16 1 0 0 + + +0x000009db: 00 DW_LNE_set_address (0x0000000000000ddd) +0x000009e2: 03 DW_LNS_advance_line (98) +0x000009e4: 05 DW_LNS_set_column (21) +0x000009e6: 06 DW_LNS_negate_stmt +0x000009e7: 01 DW_LNS_copy + 0x0000000000000ddd 98 21 1 0 0 is_stmt + + +0x000009e8: 00 DW_LNE_set_address (0x0000000000000de4) +0x000009ef: 05 DW_LNS_set_column (7) +0x000009f1: 06 DW_LNS_negate_stmt +0x000009f2: 01 DW_LNS_copy + 0x0000000000000de4 98 7 1 0 0 + + +0x000009f3: 00 DW_LNE_set_address (0x0000000000000deb) +0x000009fa: 05 DW_LNS_set_column (19) +0x000009fc: 01 DW_LNS_copy + 0x0000000000000deb 98 19 1 0 0 + + +0x000009fd: 00 DW_LNE_set_address (0x0000000000000df2) +0x00000a04: 03 DW_LNS_advance_line (99) +0x00000a06: 05 DW_LNS_set_column (14) +0x00000a08: 06 DW_LNS_negate_stmt +0x00000a09: 01 DW_LNS_copy + 0x0000000000000df2 99 14 1 0 0 is_stmt + + +0x00000a0a: 00 DW_LNE_set_address (0x0000000000000df9) +0x00000a11: 05 DW_LNS_set_column (12) +0x00000a13: 06 DW_LNS_negate_stmt +0x00000a14: 01 DW_LNS_copy + 0x0000000000000df9 99 12 1 0 0 + + +0x00000a15: 00 DW_LNE_set_address (0x0000000000000e00) +0x00000a1c: 03 DW_LNS_advance_line (94) +0x00000a1e: 05 DW_LNS_set_column (28) +0x00000a20: 06 DW_LNS_negate_stmt +0x00000a21: 01 DW_LNS_copy + 0x0000000000000e00 94 28 1 0 0 is_stmt + + +0x00000a22: 00 DW_LNE_set_address (0x0000000000000e19) +0x00000a29: 05 DW_LNS_set_column (4) +0x00000a2b: 06 DW_LNS_negate_stmt +0x00000a2c: 01 DW_LNS_copy + 0x0000000000000e19 94 4 1 0 0 + + +0x00000a2d: 00 DW_LNE_set_address (0x0000000000000e1b) +0x00000a34: 01 DW_LNS_copy + 0x0000000000000e1b 94 4 1 0 0 + + +0x00000a35: 00 DW_LNE_set_address (0x0000000000000e22) +0x00000a3c: 03 DW_LNS_advance_line (102) +0x00000a3e: 05 DW_LNS_set_column (25) +0x00000a40: 06 DW_LNS_negate_stmt +0x00000a41: 01 DW_LNS_copy + 0x0000000000000e22 102 25 1 0 0 is_stmt + + +0x00000a42: 00 DW_LNE_set_address (0x0000000000000e29) +0x00000a49: 05 DW_LNS_set_column (27) +0x00000a4b: 06 DW_LNS_negate_stmt +0x00000a4c: 01 DW_LNS_copy + 0x0000000000000e29 102 27 1 0 0 + + +0x00000a4d: 00 DW_LNE_set_address (0x0000000000000e34) +0x00000a54: 05 DW_LNS_set_column (18) +0x00000a56: 01 DW_LNS_copy + 0x0000000000000e34 102 18 1 0 0 + + +0x00000a57: 00 DW_LNE_set_address (0x0000000000000e3a) +0x00000a5e: 05 DW_LNS_set_column (10) +0x00000a60: 01 DW_LNS_copy + 0x0000000000000e3a 102 10 1 0 0 + + +0x00000a61: 00 DW_LNE_set_address (0x0000000000000e41) +0x00000a68: 03 DW_LNS_advance_line (103) +0x00000a6a: 05 DW_LNS_set_column (25) +0x00000a6c: 06 DW_LNS_negate_stmt +0x00000a6d: 01 DW_LNS_copy + 0x0000000000000e41 103 25 1 0 0 is_stmt + + +0x00000a6e: 00 DW_LNE_set_address (0x0000000000000e48) +0x00000a75: 05 DW_LNS_set_column (27) +0x00000a77: 06 DW_LNS_negate_stmt +0x00000a78: 01 DW_LNS_copy + 0x0000000000000e48 103 27 1 0 0 + + +0x00000a79: 00 DW_LNE_set_address (0x0000000000000e53) +0x00000a80: 05 DW_LNS_set_column (18) +0x00000a82: 01 DW_LNS_copy + 0x0000000000000e53 103 18 1 0 0 + + +0x00000a83: 00 DW_LNE_set_address (0x0000000000000e59) +0x00000a8a: 05 DW_LNS_set_column (10) +0x00000a8c: 01 DW_LNS_copy + 0x0000000000000e59 103 10 1 0 0 + + +0x00000a8d: 00 DW_LNE_set_address (0x0000000000000e60) +0x00000a94: 03 DW_LNS_advance_line (105) +0x00000a96: 05 DW_LNS_set_column (11) +0x00000a98: 06 DW_LNS_negate_stmt +0x00000a99: 01 DW_LNS_copy + 0x0000000000000e60 105 11 1 0 0 is_stmt + + +0x00000a9a: 00 DW_LNE_set_address (0x0000000000000e67) +0x00000aa1: 05 DW_LNS_set_column (16) +0x00000aa3: 06 DW_LNS_negate_stmt +0x00000aa4: 01 DW_LNS_copy + 0x0000000000000e67 105 16 1 0 0 + + +0x00000aa5: 00 DW_LNE_set_address (0x0000000000000e72) +0x00000aac: 05 DW_LNS_set_column (20) +0x00000aae: 01 DW_LNS_copy + 0x0000000000000e72 105 20 1 0 0 + + +0x00000aaf: 00 DW_LNE_set_address (0x0000000000000e79) +0x00000ab6: 05 DW_LNS_set_column (18) +0x00000ab8: 01 DW_LNS_copy + 0x0000000000000e79 105 18 1 0 0 + + +0x00000ab9: 00 DW_LNE_set_address (0x0000000000000e88) +0x00000ac0: 05 DW_LNS_set_column (4) +0x00000ac2: 01 DW_LNS_copy + 0x0000000000000e88 105 4 1 0 0 + + +0x00000ac3: 00 DW_LNE_set_address (0x0000000000000e98) +0x00000aca: 03 DW_LNS_advance_line (106) +0x00000acc: 05 DW_LNS_set_column (18) +0x00000ace: 06 DW_LNS_negate_stmt +0x00000acf: 01 DW_LNS_copy + 0x0000000000000e98 106 18 1 0 0 is_stmt + + +0x00000ad0: 00 DW_LNE_set_address (0x0000000000000e9f) +0x00000ad7: 05 DW_LNS_set_column (7) +0x00000ad9: 06 DW_LNS_negate_stmt +0x00000ada: 01 DW_LNS_copy + 0x0000000000000e9f 106 7 1 0 0 + + +0x00000adb: 00 DW_LNE_set_address (0x0000000000000ea6) +0x00000ae2: 05 DW_LNS_set_column (13) +0x00000ae4: 01 DW_LNS_copy + 0x0000000000000ea6 106 13 1 0 0 + + +0x00000ae5: 00 DW_LNE_set_address (0x0000000000000ead) +0x00000aec: 05 DW_LNS_set_column (7) +0x00000aee: 01 DW_LNS_copy + 0x0000000000000ead 106 7 1 0 0 + + +0x00000aef: 00 DW_LNE_set_address (0x0000000000000ebf) +0x00000af6: 05 DW_LNS_set_column (16) +0x00000af8: 01 DW_LNS_copy + 0x0000000000000ebf 106 16 1 0 0 + + +0x00000af9: 00 DW_LNE_set_address (0x0000000000000ec6) +0x00000b00: 03 DW_LNS_advance_line (105) +0x00000b02: 05 DW_LNS_set_column (24) +0x00000b04: 06 DW_LNS_negate_stmt +0x00000b05: 01 DW_LNS_copy + 0x0000000000000ec6 105 24 1 0 0 is_stmt + + +0x00000b06: 00 DW_LNE_set_address (0x0000000000000edf) +0x00000b0d: 05 DW_LNS_set_column (4) +0x00000b0f: 06 DW_LNS_negate_stmt +0x00000b10: 01 DW_LNS_copy + 0x0000000000000edf 105 4 1 0 0 + + +0x00000b11: 00 DW_LNE_set_address (0x0000000000000ee1) +0x00000b18: 01 DW_LNS_copy + 0x0000000000000ee1 105 4 1 0 0 + + +0x00000b19: 00 DW_LNE_set_address (0x0000000000000ee4) +0x00000b20: 03 DW_LNS_advance_line (108) +0x00000b22: 05 DW_LNS_set_column (8) +0x00000b24: 06 DW_LNS_negate_stmt +0x00000b25: 01 DW_LNS_copy + 0x0000000000000ee4 108 8 1 0 0 is_stmt + + +0x00000b26: 00 DW_LNE_set_address (0x0000000000000eeb) +0x00000b2d: 05 DW_LNS_set_column (6) +0x00000b2f: 06 DW_LNS_negate_stmt +0x00000b30: 01 DW_LNS_copy + 0x0000000000000eeb 108 6 1 0 0 + + +0x00000b31: 00 DW_LNE_set_address (0x0000000000000ef2) +0x00000b38: 03 DW_LNS_advance_line (110) +0x00000b3a: 05 DW_LNS_set_column (11) +0x00000b3c: 06 DW_LNS_negate_stmt +0x00000b3d: 01 DW_LNS_copy + 0x0000000000000ef2 110 11 1 0 0 is_stmt + + +0x00000b3e: 00 DW_LNE_set_address (0x0000000000000efd) +0x00000b45: 06 DW_LNS_negate_stmt +0x00000b46: 01 DW_LNS_copy + 0x0000000000000efd 110 11 1 0 0 + + +0x00000b47: 00 DW_LNE_set_address (0x0000000000000f0a) +0x00000b4e: 03 DW_LNS_advance_line (111) +0x00000b50: 05 DW_LNS_set_column (17) +0x00000b52: 06 DW_LNS_negate_stmt +0x00000b53: 01 DW_LNS_copy + 0x0000000000000f0a 111 17 1 0 0 is_stmt + + +0x00000b54: 00 DW_LNE_set_address (0x0000000000000f11) +0x00000b5b: 05 DW_LNS_set_column (22) +0x00000b5d: 06 DW_LNS_negate_stmt +0x00000b5e: 01 DW_LNS_copy + 0x0000000000000f11 111 22 1 0 0 + + +0x00000b5f: 00 DW_LNE_set_address (0x0000000000000f1c) +0x00000b66: 05 DW_LNS_set_column (26) +0x00000b68: 01 DW_LNS_copy + 0x0000000000000f1c 111 26 1 0 0 + + +0x00000b69: 00 DW_LNE_set_address (0x0000000000000f23) +0x00000b70: 05 DW_LNS_set_column (24) +0x00000b72: 01 DW_LNS_copy + 0x0000000000000f23 111 24 1 0 0 + + +0x00000b73: 00 DW_LNE_set_address (0x0000000000000f32) +0x00000b7a: 05 DW_LNS_set_column (10) +0x00000b7c: 01 DW_LNS_copy + 0x0000000000000f32 111 10 1 0 0 + + +0x00000b7d: 00 DW_LNE_set_address (0x0000000000000f42) +0x00000b84: 03 DW_LNS_advance_line (112) +0x00000b86: 05 DW_LNS_set_column (26) +0x00000b88: 06 DW_LNS_negate_stmt +0x00000b89: 01 DW_LNS_copy + 0x0000000000000f42 112 26 1 0 0 is_stmt + + +0x00000b8a: 00 DW_LNE_set_address (0x0000000000000f49) +0x00000b91: 05 DW_LNS_set_column (32) +0x00000b93: 06 DW_LNS_negate_stmt +0x00000b94: 01 DW_LNS_copy + 0x0000000000000f49 112 32 1 0 0 + + +0x00000b95: 00 DW_LNE_set_address (0x0000000000000f50) +0x00000b9c: 05 DW_LNS_set_column (26) +0x00000b9e: 01 DW_LNS_copy + 0x0000000000000f50 112 26 1 0 0 + + +0x00000b9f: 00 DW_LNE_set_address (0x0000000000000f69) +0x00000ba6: 05 DW_LNS_set_column (35) +0x00000ba8: 01 DW_LNS_copy + 0x0000000000000f69 112 35 1 0 0 + + +0x00000ba9: 00 DW_LNE_set_address (0x0000000000000f74) +0x00000bb0: 05 DW_LNS_set_column (13) +0x00000bb2: 01 DW_LNS_copy + 0x0000000000000f74 112 13 1 0 0 + + +0x00000bb3: 00 DW_LNE_set_address (0x0000000000000f87) +0x00000bba: 03 DW_LNS_advance_line (111) +0x00000bbc: 05 DW_LNS_set_column (30) +0x00000bbe: 06 DW_LNS_negate_stmt +0x00000bbf: 01 DW_LNS_copy + 0x0000000000000f87 111 30 1 0 0 is_stmt + + +0x00000bc0: 00 DW_LNE_set_address (0x0000000000000fa0) +0x00000bc7: 05 DW_LNS_set_column (10) +0x00000bc9: 06 DW_LNS_negate_stmt +0x00000bca: 01 DW_LNS_copy + 0x0000000000000fa0 111 10 1 0 0 + + +0x00000bcb: 00 DW_LNE_set_address (0x0000000000000fa2) +0x00000bd2: 01 DW_LNS_copy + 0x0000000000000fa2 111 10 1 0 0 + + +0x00000bd3: 00 DW_LNE_set_address (0x0000000000000fa5) +0x00000bda: 03 DW_LNS_advance_line (113) +0x00000bdc: 06 DW_LNS_negate_stmt +0x00000bdd: 01 DW_LNS_copy + 0x0000000000000fa5 113 10 1 0 0 is_stmt + + +0x00000bde: 00 DW_LNE_set_address (0x0000000000000fb5) +0x00000be5: 03 DW_LNS_advance_line (114) +0x00000be7: 05 DW_LNS_set_column (17) +0x00000be9: 01 DW_LNS_copy + 0x0000000000000fb5 114 17 1 0 0 is_stmt + + +0x00000bea: 00 DW_LNE_set_address (0x0000000000000fce) +0x00000bf1: 03 DW_LNS_advance_line (115) +0x00000bf3: 05 DW_LNS_set_column (7) +0x00000bf5: 01 DW_LNS_copy + 0x0000000000000fce 115 7 1 0 0 is_stmt + + +0x00000bf6: 00 DW_LNE_set_address (0x0000000000000fd1) +0x00000bfd: 03 DW_LNS_advance_line (116) +0x00000bff: 05 DW_LNS_set_column (10) +0x00000c01: 01 DW_LNS_copy + 0x0000000000000fd1 116 10 1 0 0 is_stmt + + +0x00000c02: 00 DW_LNE_set_address (0x0000000000000fdc) +0x00000c09: 03 DW_LNS_advance_line (118) +0x00000c0b: 05 DW_LNS_set_column (14) +0x00000c0d: 01 DW_LNS_copy + 0x0000000000000fdc 118 14 1 0 0 is_stmt + + +0x00000c0e: 00 DW_LNE_set_address (0x0000000000000fe3) +0x00000c15: 05 DW_LNS_set_column (16) +0x00000c17: 06 DW_LNS_negate_stmt +0x00000c18: 01 DW_LNS_copy + 0x0000000000000fe3 118 16 1 0 0 + + +0x00000c19: 00 DW_LNE_set_address (0x0000000000000ff2) +0x00000c20: 05 DW_LNS_set_column (7) +0x00000c22: 01 DW_LNS_copy + 0x0000000000000ff2 118 7 1 0 0 + + +0x00000c23: 00 DW_LNE_set_address (0x0000000000001002) +0x00000c2a: 03 DW_LNS_advance_line (119) +0x00000c2c: 05 DW_LNS_set_column (25) +0x00000c2e: 06 DW_LNS_negate_stmt +0x00000c2f: 01 DW_LNS_copy + 0x0000000000001002 119 25 1 0 0 is_stmt + + +0x00000c30: 00 DW_LNE_set_address (0x0000000000001009) +0x00000c37: 05 DW_LNS_set_column (10) +0x00000c39: 06 DW_LNS_negate_stmt +0x00000c3a: 01 DW_LNS_copy + 0x0000000000001009 119 10 1 0 0 + + +0x00000c3b: 00 DW_LNE_set_address (0x0000000000001010) +0x00000c42: 05 DW_LNS_set_column (16) +0x00000c44: 01 DW_LNS_copy + 0x0000000000001010 119 16 1 0 0 + + +0x00000c45: 00 DW_LNE_set_address (0x0000000000001017) +0x00000c4c: 05 DW_LNS_set_column (18) +0x00000c4e: 01 DW_LNS_copy + 0x0000000000001017 119 18 1 0 0 + + +0x00000c4f: 00 DW_LNE_set_address (0x0000000000001022) +0x00000c56: 05 DW_LNS_set_column (10) +0x00000c58: 01 DW_LNS_copy + 0x0000000000001022 119 10 1 0 0 + + +0x00000c59: 00 DW_LNE_set_address (0x0000000000001034) +0x00000c60: 05 DW_LNS_set_column (23) +0x00000c62: 01 DW_LNS_copy + 0x0000000000001034 119 23 1 0 0 + + +0x00000c63: 00 DW_LNE_set_address (0x000000000000103b) +0x00000c6a: 03 DW_LNS_advance_line (118) +0x00000c6c: 05 DW_LNS_set_column (22) +0x00000c6e: 06 DW_LNS_negate_stmt +0x00000c6f: 01 DW_LNS_copy + 0x000000000000103b 118 22 1 0 0 is_stmt + + +0x00000c70: 00 DW_LNE_set_address (0x0000000000001054) +0x00000c77: 05 DW_LNS_set_column (7) +0x00000c79: 06 DW_LNS_negate_stmt +0x00000c7a: 01 DW_LNS_copy + 0x0000000000001054 118 7 1 0 0 + + +0x00000c7b: 00 DW_LNE_set_address (0x0000000000001056) +0x00000c82: 01 DW_LNS_copy + 0x0000000000001056 118 7 1 0 0 + + +0x00000c83: 00 DW_LNE_set_address (0x0000000000001059) +0x00000c8a: 03 DW_LNS_advance_line (122) +0x00000c8c: 05 DW_LNS_set_column (14) +0x00000c8e: 06 DW_LNS_negate_stmt +0x00000c8f: 01 DW_LNS_copy + 0x0000000000001059 122 14 1 0 0 is_stmt + + +0x00000c90: 00 DW_LNE_set_address (0x0000000000001062) +0x00000c97: 05 DW_LNS_set_column (19) +0x00000c99: 06 DW_LNS_negate_stmt +0x00000c9a: 01 DW_LNS_copy + 0x0000000000001062 122 19 1 0 0 + + +0x00000c9b: 00 DW_LNE_set_address (0x0000000000001069) +0x00000ca2: 05 DW_LNS_set_column (16) +0x00000ca4: 01 DW_LNS_copy + 0x0000000000001069 122 16 1 0 0 + + +0x00000ca5: 00 DW_LNE_set_address (0x0000000000001078) +0x00000cac: 05 DW_LNS_set_column (14) +0x00000cae: 01 DW_LNS_copy + 0x0000000000001078 122 14 1 0 0 + + +0x00000caf: 00 DW_LNE_set_address (0x000000000000108a) +0x00000cb6: 03 DW_LNS_advance_line (123) +0x00000cb8: 05 DW_LNS_set_column (13) +0x00000cba: 06 DW_LNS_negate_stmt +0x00000cbb: 01 DW_LNS_copy + 0x000000000000108a 123 13 1 0 0 is_stmt + + +0x00000cbc: 00 DW_LNE_set_address (0x0000000000001091) +0x00000cc3: 03 DW_LNS_advance_line (125) +0x00000cc5: 05 DW_LNS_set_column (22) +0x00000cc7: 01 DW_LNS_copy + 0x0000000000001091 125 22 1 0 0 is_stmt + + +0x00000cc8: 00 DW_LNE_set_address (0x000000000000109f) +0x00000ccf: 05 DW_LNS_set_column (17) +0x00000cd1: 06 DW_LNS_negate_stmt +0x00000cd2: 01 DW_LNS_copy + 0x000000000000109f 125 17 1 0 0 + + +0x00000cd3: 00 DW_LNE_set_address (0x00000000000010a6) +0x00000cda: 03 DW_LNS_advance_line (126) +0x00000cdc: 05 DW_LNS_set_column (20) +0x00000cde: 06 DW_LNS_negate_stmt +0x00000cdf: 01 DW_LNS_copy + 0x00000000000010a6 126 20 1 0 0 is_stmt + + +0x00000ce0: 00 DW_LNE_set_address (0x00000000000010ad) +0x00000ce7: 05 DW_LNS_set_column (25) +0x00000ce9: 06 DW_LNS_negate_stmt +0x00000cea: 01 DW_LNS_copy + 0x00000000000010ad 126 25 1 0 0 + + +0x00000ceb: 00 DW_LNE_set_address (0x00000000000010b8) +0x00000cf2: 05 DW_LNS_set_column (29) +0x00000cf4: 01 DW_LNS_copy + 0x00000000000010b8 126 29 1 0 0 + + +0x00000cf5: 00 DW_LNE_set_address (0x00000000000010bf) +0x00000cfc: 05 DW_LNS_set_column (27) +0x00000cfe: 01 DW_LNS_copy + 0x00000000000010bf 126 27 1 0 0 + + +0x00000cff: 00 DW_LNE_set_address (0x00000000000010ce) +0x00000d06: 05 DW_LNS_set_column (13) +0x00000d08: 01 DW_LNS_copy + 0x00000000000010ce 126 13 1 0 0 + + +0x00000d09: 00 DW_LNE_set_address (0x00000000000010de) +0x00000d10: 03 DW_LNS_advance_line (127) +0x00000d12: 05 DW_LNS_set_column (27) +0x00000d14: 06 DW_LNS_negate_stmt +0x00000d15: 01 DW_LNS_copy + 0x00000000000010de 127 27 1 0 0 is_stmt + + +0x00000d16: 00 DW_LNE_set_address (0x00000000000010e5) +0x00000d1d: 05 DW_LNS_set_column (33) +0x00000d1f: 06 DW_LNS_negate_stmt +0x00000d20: 01 DW_LNS_copy + 0x00000000000010e5 127 33 1 0 0 + + +0x00000d21: 00 DW_LNE_set_address (0x00000000000010ec) +0x00000d28: 05 DW_LNS_set_column (35) +0x00000d2a: 01 DW_LNS_copy + 0x00000000000010ec 127 35 1 0 0 + + +0x00000d2b: 00 DW_LNE_set_address (0x00000000000010f7) +0x00000d32: 05 DW_LNS_set_column (27) +0x00000d34: 01 DW_LNS_copy + 0x00000000000010f7 127 27 1 0 0 + + +0x00000d35: 00 DW_LNE_set_address (0x0000000000001110) +0x00000d3c: 05 DW_LNS_set_column (16) +0x00000d3e: 01 DW_LNS_copy + 0x0000000000001110 127 16 1 0 0 + + +0x00000d3f: 00 DW_LNE_set_address (0x0000000000001117) +0x00000d46: 05 DW_LNS_set_column (22) +0x00000d48: 01 DW_LNS_copy + 0x0000000000001117 127 22 1 0 0 + + +0x00000d49: 00 DW_LNE_set_address (0x000000000000111e) +0x00000d50: 05 DW_LNS_set_column (16) +0x00000d52: 01 DW_LNS_copy + 0x000000000000111e 127 16 1 0 0 + + +0x00000d53: 00 DW_LNE_set_address (0x0000000000001130) +0x00000d5a: 05 DW_LNS_set_column (25) +0x00000d5c: 01 DW_LNS_copy + 0x0000000000001130 127 25 1 0 0 + + +0x00000d5d: 00 DW_LNE_set_address (0x0000000000001137) +0x00000d64: 03 DW_LNS_advance_line (126) +0x00000d66: 05 DW_LNS_set_column (33) +0x00000d68: 06 DW_LNS_negate_stmt +0x00000d69: 01 DW_LNS_copy + 0x0000000000001137 126 33 1 0 0 is_stmt + + +0x00000d6a: 00 DW_LNE_set_address (0x0000000000001154) +0x00000d71: 05 DW_LNS_set_column (13) +0x00000d73: 06 DW_LNS_negate_stmt +0x00000d74: 01 DW_LNS_copy + 0x0000000000001154 126 13 1 0 0 + + +0x00000d75: 00 DW_LNE_set_address (0x0000000000001156) +0x00000d7c: 01 DW_LNS_copy + 0x0000000000001156 126 13 1 0 0 + + +0x00000d7d: 00 DW_LNE_set_address (0x000000000000115e) +0x00000d84: 03 DW_LNS_advance_line (128) +0x00000d86: 05 DW_LNS_set_column (24) +0x00000d88: 06 DW_LNS_negate_stmt +0x00000d89: 01 DW_LNS_copy + 0x000000000000115e 128 24 1 0 0 is_stmt + + +0x00000d8a: 00 DW_LNE_set_address (0x0000000000001166) +0x00000d91: 05 DW_LNS_set_column (13) +0x00000d93: 06 DW_LNS_negate_stmt +0x00000d94: 01 DW_LNS_copy + 0x0000000000001166 128 13 1 0 0 + + +0x00000d95: 00 DW_LNE_set_address (0x000000000000116e) +0x00000d9c: 05 DW_LNS_set_column (19) +0x00000d9e: 01 DW_LNS_copy + 0x000000000000116e 128 19 1 0 0 + + +0x00000d9f: 00 DW_LNE_set_address (0x0000000000001176) +0x00000da6: 05 DW_LNS_set_column (13) +0x00000da8: 01 DW_LNS_copy + 0x0000000000001176 128 13 1 0 0 + + +0x00000da9: 00 DW_LNE_set_address (0x000000000000118f) +0x00000db0: 05 DW_LNS_set_column (22) +0x00000db2: 01 DW_LNS_copy + 0x000000000000118f 128 22 1 0 0 + + +0x00000db3: 00 DW_LNE_set_address (0x0000000000001198) +0x00000dba: 03 DW_LNS_advance_line (130) +0x00000dbc: 05 DW_LNS_set_column (16) +0x00000dbe: 06 DW_LNS_negate_stmt +0x00000dbf: 01 DW_LNS_copy + 0x0000000000001198 130 16 1 0 0 is_stmt + + +0x00000dc0: 00 DW_LNE_set_address (0x00000000000011a0) +0x00000dc7: 05 DW_LNS_set_column (22) +0x00000dc9: 06 DW_LNS_negate_stmt +0x00000dca: 01 DW_LNS_copy + 0x00000000000011a0 130 22 1 0 0 + + +0x00000dcb: 00 DW_LNE_set_address (0x00000000000011a8) +0x00000dd2: 05 DW_LNS_set_column (16) +0x00000dd4: 01 DW_LNS_copy + 0x00000000000011a8 130 16 1 0 0 + + +0x00000dd5: 00 DW_LNE_set_address (0x00000000000011c1) +0x00000ddc: 05 DW_LNS_set_column (14) +0x00000dde: 01 DW_LNS_copy + 0x00000000000011c1 130 14 1 0 0 + + +0x00000ddf: 00 DW_LNE_set_address (0x00000000000011e2) +0x00000de6: 05 DW_LNS_set_column (25) +0x00000de8: 01 DW_LNS_copy + 0x00000000000011e2 130 25 1 0 0 + + +0x00000de9: 00 DW_LNE_set_address (0x00000000000011f8) +0x00000df0: 05 DW_LNS_set_column (14) +0x00000df2: 01 DW_LNS_copy + 0x00000000000011f8 130 14 1 0 0 + + +0x00000df3: 00 DW_LNE_set_address (0x0000000000001211) +0x00000dfa: 03 DW_LNS_advance_line (131) +0x00000dfc: 05 DW_LNS_set_column (13) +0x00000dfe: 06 DW_LNS_negate_stmt +0x00000dff: 01 DW_LNS_copy + 0x0000000000001211 131 13 1 0 0 is_stmt + + +0x00000e00: 00 DW_LNE_set_address (0x0000000000001214) +0x00000e07: 03 DW_LNS_advance_line (133) +0x00000e09: 05 DW_LNS_set_column (11) +0x00000e0b: 01 DW_LNS_copy + 0x0000000000001214 133 11 1 0 0 is_stmt + + +0x00000e0c: 00 DW_LNE_set_address (0x0000000000001233) +0x00000e13: 03 DW_LNS_advance_line (121) +0x00000e15: 05 DW_LNS_set_column (7) +0x00000e17: 01 DW_LNS_copy + 0x0000000000001233 121 7 1 0 0 is_stmt + + +0x00000e18: 00 DW_LNE_set_address (0x0000000000001236) +0x00000e1f: 03 DW_LNS_advance_line (131) +0x00000e21: 05 DW_LNS_set_column (13) +0x00000e23: 01 DW_LNS_copy + 0x0000000000001236 131 13 1 0 0 is_stmt + + +0x00000e24: 00 DW_LNE_set_address (0x0000000000001237) +0x00000e2b: 03 DW_LNS_advance_line (109) +0x00000e2d: 05 DW_LNS_set_column (4) +0x00000e2f: 01 DW_LNS_copy + 0x0000000000001237 109 4 1 0 0 is_stmt + + +0x00000e30: 00 DW_LNE_set_address (0x0000000000001239) +0x00000e37: 03 DW_LNS_advance_line (123) +0x00000e39: 05 DW_LNS_set_column (13) +0x00000e3b: 01 DW_LNS_copy + 0x0000000000001239 123 13 1 0 0 is_stmt + + +0x00000e3c: 00 DW_LNE_set_address (0x0000000000001241) +0x00000e43: 03 DW_LNS_advance_line (138) +0x00000e45: 05 DW_LNS_set_column (9) +0x00000e47: 01 DW_LNS_copy + 0x0000000000001241 138 9 1 0 0 is_stmt + + +0x00000e48: 00 DW_LNE_set_address (0x0000000000001249) +0x00000e4f: 05 DW_LNS_set_column (4) +0x00000e51: 06 DW_LNS_negate_stmt +0x00000e52: 01 DW_LNS_copy + 0x0000000000001249 138 4 1 0 0 + + +0x00000e53: 00 DW_LNE_set_address (0x000000000000124e) +0x00000e5a: 03 DW_LNS_advance_line (139) +0x00000e5c: 05 DW_LNS_set_column (9) +0x00000e5e: 06 DW_LNS_negate_stmt +0x00000e5f: 01 DW_LNS_copy + 0x000000000000124e 139 9 1 0 0 is_stmt + + +0x00000e60: 00 DW_LNE_set_address (0x0000000000001256) +0x00000e67: 05 DW_LNS_set_column (4) +0x00000e69: 06 DW_LNS_negate_stmt +0x00000e6a: 01 DW_LNS_copy + 0x0000000000001256 139 4 1 0 0 + + +0x00000e6b: 00 DW_LNE_set_address (0x000000000000125b) +0x00000e72: 03 DW_LNS_advance_line (140) +0x00000e74: 05 DW_LNS_set_column (13) +0x00000e76: 06 DW_LNS_negate_stmt +0x00000e77: 01 DW_LNS_copy + 0x000000000000125b 140 13 1 0 0 is_stmt + + +0x00000e78: 00 DW_LNE_set_address (0x000000000000126c) +0x00000e7f: 03 DW_LNS_advance_line (141) +0x00000e81: 05 DW_LNS_set_column (11) +0x00000e83: 01 DW_LNS_copy + 0x000000000000126c 141 11 1 0 0 is_stmt + + +0x00000e84: 00 DW_LNE_set_address (0x0000000000001274) +0x00000e8b: 05 DW_LNS_set_column (16) +0x00000e8d: 06 DW_LNS_negate_stmt +0x00000e8e: 01 DW_LNS_copy + 0x0000000000001274 141 16 1 0 0 + + +0x00000e8f: 00 DW_LNE_set_address (0x000000000000128a) +0x00000e96: 05 DW_LNS_set_column (4) +0x00000e98: 01 DW_LNS_copy + 0x000000000000128a 141 4 1 0 0 + + +0x00000e99: 00 DW_LNE_set_address (0x000000000000129f) +0x00000ea0: 03 DW_LNS_advance_line (142) +0x00000ea2: 05 DW_LNS_set_column (36) +0x00000ea4: 06 DW_LNS_negate_stmt +0x00000ea5: 01 DW_LNS_copy + 0x000000000000129f 142 36 1 0 0 is_stmt + + +0x00000ea6: 00 DW_LNE_set_address (0x00000000000012a7) +0x00000ead: 05 DW_LNS_set_column (20) +0x00000eaf: 06 DW_LNS_negate_stmt +0x00000eb0: 01 DW_LNS_copy + 0x00000000000012a7 142 20 1 0 0 + + +0x00000eb1: 00 DW_LNE_set_address (0x00000000000012af) +0x00000eb8: 05 DW_LNS_set_column (13) +0x00000eba: 01 DW_LNS_copy + 0x00000000000012af 142 13 1 0 0 + + +0x00000ebb: 00 DW_LNE_set_address (0x00000000000012b7) +0x00000ec2: 03 DW_LNS_advance_line (143) +0x00000ec4: 05 DW_LNS_set_column (11) +0x00000ec6: 06 DW_LNS_negate_stmt +0x00000ec7: 01 DW_LNS_copy + 0x00000000000012b7 143 11 1 0 0 is_stmt + + +0x00000ec8: 00 DW_LNE_set_address (0x00000000000012bf) +0x00000ecf: 05 DW_LNS_set_column (22) +0x00000ed1: 06 DW_LNS_negate_stmt +0x00000ed2: 01 DW_LNS_copy + 0x00000000000012bf 143 22 1 0 0 + + +0x00000ed3: 00 DW_LNE_set_address (0x00000000000012c7) +0x00000eda: 05 DW_LNS_set_column (20) +0x00000edc: 01 DW_LNS_copy + 0x00000000000012c7 143 20 1 0 0 + + +0x00000edd: 00 DW_LNE_set_address (0x00000000000012dd) +0x00000ee4: 05 DW_LNS_set_column (11) +0x00000ee6: 01 DW_LNS_copy + 0x00000000000012dd 143 11 1 0 0 + + +0x00000ee7: 00 DW_LNE_set_address (0x00000000000012f4) +0x00000eee: 03 DW_LNS_advance_line (144) +0x00000ef0: 05 DW_LNS_set_column (21) +0x00000ef2: 06 DW_LNS_negate_stmt +0x00000ef3: 01 DW_LNS_copy + 0x00000000000012f4 144 21 1 0 0 is_stmt + + +0x00000ef4: 00 DW_LNE_set_address (0x00000000000012fc) +0x00000efb: 05 DW_LNS_set_column (19) +0x00000efd: 06 DW_LNS_negate_stmt +0x00000efe: 01 DW_LNS_copy + 0x00000000000012fc 144 19 1 0 0 + + +0x00000eff: 00 DW_LNE_set_address (0x0000000000001305) +0x00000f06: 03 DW_LNS_advance_line (145) +0x00000f08: 05 DW_LNS_set_column (15) +0x00000f0a: 06 DW_LNS_negate_stmt +0x00000f0b: 01 DW_LNS_copy + 0x0000000000001305 145 15 1 0 0 is_stmt + + +0x00000f0c: 00 DW_LNE_set_address (0x000000000000130d) +0x00000f13: 05 DW_LNS_set_column (13) +0x00000f15: 06 DW_LNS_negate_stmt +0x00000f16: 01 DW_LNS_copy + 0x000000000000130d 145 13 1 0 0 + + +0x00000f17: 00 DW_LNE_set_address (0x0000000000001315) +0x00000f1e: 03 DW_LNS_advance_line (146) +0x00000f20: 05 DW_LNS_set_column (14) +0x00000f22: 06 DW_LNS_negate_stmt +0x00000f23: 01 DW_LNS_copy + 0x0000000000001315 146 14 1 0 0 is_stmt + + +0x00000f24: 00 DW_LNE_set_address (0x000000000000131d) +0x00000f2b: 05 DW_LNS_set_column (20) +0x00000f2d: 06 DW_LNS_negate_stmt +0x00000f2e: 01 DW_LNS_copy + 0x000000000000131d 146 20 1 0 0 + + +0x00000f2f: 00 DW_LNE_set_address (0x0000000000001326) +0x00000f36: 05 DW_LNS_set_column (12) +0x00000f38: 01 DW_LNS_copy + 0x0000000000001326 146 12 1 0 0 + + +0x00000f39: 00 DW_LNE_set_address (0x000000000000132e) +0x00000f40: 03 DW_LNS_advance_line (147) +0x00000f42: 06 DW_LNS_negate_stmt +0x00000f43: 01 DW_LNS_copy + 0x000000000000132e 147 12 1 0 0 is_stmt + + +0x00000f44: 00 DW_LNE_set_address (0x0000000000001336) +0x00000f4b: 05 DW_LNS_set_column (7) +0x00000f4d: 06 DW_LNS_negate_stmt +0x00000f4e: 01 DW_LNS_copy + 0x0000000000001336 147 7 1 0 0 + + +0x00000f4f: 00 DW_LNE_set_address (0x000000000000133b) +0x00000f56: 03 DW_LNS_advance_line (141) +0x00000f58: 05 DW_LNS_set_column (4) +0x00000f5a: 06 DW_LNS_negate_stmt +0x00000f5b: 01 DW_LNS_copy + 0x000000000000133b 141 4 1 0 0 is_stmt + + +0x00000f5c: 00 DW_LNE_set_address (0x0000000000001340) +0x00000f63: 03 DW_LNS_advance_line (149) +0x00000f65: 05 DW_LNS_set_column (11) +0x00000f67: 01 DW_LNS_copy + 0x0000000000001340 149 11 1 0 0 is_stmt + + +0x00000f68: 00 DW_LNE_set_address (0x0000000000001348) +0x00000f6f: 05 DW_LNS_set_column (4) +0x00000f71: 06 DW_LNS_negate_stmt +0x00000f72: 01 DW_LNS_copy + 0x0000000000001348 149 4 1 0 0 + + +0x00000f73: 00 DW_LNE_set_address (0x0000000000001360) +0x00000f7a: 00 DW_LNE_end_sequence + 0x0000000000001360 149 4 1 0 0 end_sequence + + +.debug_str contents: +0x00000000: "clang version 11.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 2d7a8cf90478cd845ffb39763b0e95b7715322d2)" +0x00000095: "tests/fannkuch.cpp" +0x000000a8: "/home/alon/Dev/emscripten" +0x000000c2: "i" +0x000000c4: "int" +0x000000c8: "n" +0x000000ca: "next" +0x000000cf: "worker_args" +0x000000db: "std" +0x000000df: "decltype(nullptr)" +0x000000f1: "nullptr_t" +0x000000fb: "_Z15fannkuch_workerPv" +0x00000111: "fannkuch_worker" +0x00000121: "main" +0x00000126: "_ZL8fannkuchi" +0x00000134: "fannkuch" +0x0000013d: "_arg" +0x00000142: "args" +0x00000147: "perm1" +0x0000014d: "count" +0x00000153: "perm" +0x00000158: "maxflips" +0x00000161: "flips" +0x00000167: "r" +0x00000169: "j" +0x0000016b: "k" +0x0000016d: "tmp" +0x00000171: "p0" +0x00000174: "argc" +0x00000179: "argv" +0x0000017e: "char" +0x00000183: "targs" +0x00000189: "showmax" +0x00000191: "cleanup" + +.debug_ranges contents: +00000000 00000006 00000a53 +00000000 00000a55 00000bc5 +00000000 00000bc7 00001360 +00000000 +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (import "env" "memory" (memory $mimport$0 256 256)) + (data (i32.const 1024) "Wrong argument.\n\00Pfannkuchen(%d) = %d.\n\00%d\00\n\00") + (import "env" "__indirect_function_table" (table $timport$0 1 funcref)) + (import "env" "malloc" (func $malloc (param i32) (result i32))) + (import "env" "free" (func $free (param i32))) + (import "env" "atoi" (func $atoi (param i32) (result i32))) + (import "env" "printf" (func $printf (param i32 i32) (result i32))) + (global $global$0 (mut i32) (i32.const 5243952)) + (global $global$1 i32 (i32.const 1069)) + (export "__wasm_call_ctors" (func $__wasm_call_ctors)) + (export "main" (func $main)) + (export "__data_end" (global $global$1)) + (func $__wasm_call_ctors + ) + (func $fannkuch_worker\28void*\29 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + (local $23 i32) + (local $24 i32) + (local $25 i32) + (local $26 i32) + (local $27 i32) + (local $28 i32) + (local $29 i32) + (local $30 i32) + (local $31 i32) + (local $32 i32) + (local $33 i32) + (local $34 i32) + (local $35 i32) + (local $36 i32) + (local $37 i32) + (local $38 i32) + (local $39 i32) + (local $40 i32) + (local $41 i32) + (local $42 i32) + (local $43 i32) + (local $44 i32) + (local $45 i32) + (local $46 i32) + (local $47 i32) + (local $48 i32) + (local $49 i32) + (local $50 i32) + (local $51 i32) + (local $52 i32) + (local $53 i32) + (local $54 i32) + (local $55 i32) + (local $56 i32) + (local $57 i32) + (local $58 i32) + (local $59 i32) + (local $60 i32) + (local $61 i32) + (local $62 i32) + (local $63 i32) + (local $64 i32) + (local $65 i32) + (local $66 i32) + (local $67 i32) + (local $68 i32) + (local $69 i32) + (local $70 i32) + (local $71 i32) + (local $72 i32) + (local $73 i32) + (local $74 i32) + (local $75 i32) + (local $76 i32) + (local $77 i32) + (local $78 i32) + (local $79 i32) + (local $80 i32) + (local $81 i32) + (local $82 i32) + (local $83 i32) + (local $84 i32) + (local $85 i32) + (local $86 i32) + (local $87 i32) + (local $88 i32) + (local $89 i32) + (local $90 i32) + (local $91 i32) + (local $92 i32) + (local $93 i32) + (local $94 i32) + (local $95 i32) + (local $96 i32) + (local $97 i32) + (local $98 i32) + (local $99 i32) + (local $100 i32) + (local $101 i32) + (local $102 i32) + (local $103 i32) + (local $104 i32) + (local $105 i32) + (local $106 i32) + (local $107 i32) + (local $108 i32) + (local $109 i32) + (local $110 i32) + (local $111 i32) + (local $112 i32) + (local $113 i32) + (local $114 i32) + (local $115 i32) + (local $116 i32) + (local $117 i32) + (local $118 i32) + (local $119 i32) + (local $120 i32) + (local $121 i32) + (local $122 i32) + (local $123 i32) + (local $124 i32) + (local $125 i32) + (local $126 i32) + (local $127 i32) + (local $128 i32) + (local $129 i32) + (local $130 i32) + (local $131 i32) + (local $132 i32) + (local $133 i32) + (local $134 i32) + (local $135 i32) + (local $136 i32) + (local $137 i32) + (local $138 i32) + (local $139 i32) + (local $140 i32) + (local $141 i32) + (local $142 i32) + (local $143 i32) + (local $144 i32) + (local $145 i32) + (local $146 i32) + (local $147 i32) + (local $148 i32) + (local $149 i32) + (local $150 i32) + (local $151 i32) + (local $152 i32) + (local $153 i32) + (local $154 i32) + (local $155 i32) + (local $156 i32) + (local $157 i32) + (local $158 i32) + (local $159 i32) + (local $160 i32) + (local $161 i32) + (local $162 i32) + (local $163 i32) + (local $164 i32) + (local $165 i32) + (local $166 i32) + (local $167 i32) + (local $168 i32) + (local $169 i32) + (local $170 i32) + (local $171 i32) + (local $172 i32) + (local $173 i32) + (local $174 i32) + (local $175 i32) + (local $176 i32) + (local $177 i32) + (local $178 i32) + (local $179 i32) + (local $180 i32) + (local $181 i32) + (local $182 i32) + (local $183 i32) + (local $184 i32) + (local $185 i32) + (local $186 i32) + (local $187 i32) + (local $188 i32) + (local $189 i32) + (local $190 i32) + (local $191 i32) + (local $192 i32) + (local $193 i32) + (local $194 i32) + (local $195 i32) + (local $196 i32) + (local $197 i32) + (local $198 i32) + (local $199 i32) + (local $200 i32) + (local $201 i32) + (local $202 i32) + (local $203 i32) + (local $204 i32) + (local $205 i32) + (local $206 i32) + (local $207 i32) + (local $208 i32) + (local $209 i32) + (local $210 i32) + (local $211 i32) + (local $212 i32) + (local $213 i32) + (local $214 i32) + (local $215 i32) + (local $216 i32) + (local $217 i32) + (local $218 i32) + (local $219 i32) + (local $220 i32) + (local $221 i32) + (local $222 i32) + (local $223 i32) + (local $224 i32) + (local $225 i32) + (local $226 i32) + (local $227 i32) + (local $228 i32) + (local $229 i32) + (local $230 i32) + (local $231 i32) + (local $232 i32) + (local $233 i32) + (local $234 i32) + (local $235 i32) + (local $236 i32) + (local $237 i32) + (local $238 i32) + (local $239 i32) + (local $240 i32) + (local $241 i32) + (local $242 i32) + (local $243 i32) + (local $244 i32) + ;; code offset: 0x1f2 + (local.set $1 + ;; code offset: 0x1f0 + (global.get $global$0) + ) + ;; code offset: 0x1f7 + (local.set $2 + ;; code offset: 0x1f4 + (i32.const 64) + ) + ;; code offset: 0x1fe + (local.set $3 + ;; code offset: 0x1fd + (i32.sub + ;; code offset: 0x1f9 + (local.get $1) + ;; code offset: 0x1fb + (local.get $2) + ) + ) + ;; code offset: 0x202 + (global.set $global$0 + ;; code offset: 0x200 + (local.get $3) + ) + ;; code offset: 0x206 + (local.set $4 + ;; code offset: 0x204 + (i32.const 0) + ) + ;; code offset: 0x20c + (i32.store offset=60 + ;; code offset: 0x208 + (local.get $3) + ;; code offset: 0x20a + (local.get $0) + ) + ;; code offset: 0x214 + (local.set $5 + ;; code offset: 0x211 + (i32.load offset=60 + ;; code offset: 0x20f + (local.get $3) + ) + ) + ;; code offset: 0x21a + (i32.store offset=56 + ;; code offset: 0x216 + (local.get $3) + ;; code offset: 0x218 + (local.get $5) + ) + ;; code offset: 0x221 + (i32.store offset=40 + ;; code offset: 0x21d + (local.get $3) + ;; code offset: 0x21f + (local.get $4) + ) + ;; code offset: 0x229 + (local.set $6 + ;; code offset: 0x226 + (i32.load offset=56 + ;; code offset: 0x224 + (local.get $3) + ) + ) + ;; code offset: 0x230 + (local.set $7 + ;; code offset: 0x22d + (i32.load offset=4 + ;; code offset: 0x22b + (local.get $6) + ) + ) + ;; code offset: 0x236 + (i32.store offset=28 + ;; code offset: 0x232 + (local.get $3) + ;; code offset: 0x234 + (local.get $7) + ) + ;; code offset: 0x23e + (local.set $8 + ;; code offset: 0x23b + (i32.load offset=28 + ;; code offset: 0x239 + (local.get $3) + ) + ) + ;; code offset: 0x242 + (local.set $9 + ;; code offset: 0x240 + (i32.const 2) + ) + ;; code offset: 0x249 + (local.set $10 + ;; code offset: 0x248 + (i32.shl + ;; code offset: 0x244 + (local.get $8) + ;; code offset: 0x246 + (local.get $9) + ) + ) + ;; code offset: 0x24f + (local.set $11 + ;; code offset: 0x24d + (call $malloc + ;; code offset: 0x24b + (local.get $10) + ) + ) + ;; code offset: 0x255 + (i32.store offset=52 + ;; code offset: 0x251 + (local.get $3) + ;; code offset: 0x253 + (local.get $11) + ) + ;; code offset: 0x25d + (local.set $12 + ;; code offset: 0x25a + (i32.load offset=28 + ;; code offset: 0x258 + (local.get $3) + ) + ) + ;; code offset: 0x261 + (local.set $13 + ;; code offset: 0x25f + (i32.const 2) + ) + ;; code offset: 0x268 + (local.set $14 + ;; code offset: 0x267 + (i32.shl + ;; code offset: 0x263 + (local.get $12) + ;; code offset: 0x265 + (local.get $13) + ) + ) + ;; code offset: 0x26e + (local.set $15 + ;; code offset: 0x26c + (call $malloc + ;; code offset: 0x26a + (local.get $14) + ) + ) + ;; code offset: 0x274 + (i32.store offset=44 + ;; code offset: 0x270 + (local.get $3) + ;; code offset: 0x272 + (local.get $15) + ) + ;; code offset: 0x27c + (local.set $16 + ;; code offset: 0x279 + (i32.load offset=28 + ;; code offset: 0x277 + (local.get $3) + ) + ) + ;; code offset: 0x280 + (local.set $17 + ;; code offset: 0x27e + (i32.const 2) + ) + ;; code offset: 0x287 + (local.set $18 + ;; code offset: 0x286 + (i32.shl + ;; code offset: 0x282 + (local.get $16) + ;; code offset: 0x284 + (local.get $17) + ) + ) + ;; code offset: 0x28d + (local.set $19 + ;; code offset: 0x28b + (call $malloc + ;; code offset: 0x289 + (local.get $18) + ) + ) + ;; code offset: 0x293 + (i32.store offset=48 + ;; code offset: 0x28f + (local.get $3) + ;; code offset: 0x291 + (local.get $19) + ) + ;; code offset: 0x29a + (i32.store offset=32 + ;; code offset: 0x296 + (local.get $3) + ;; code offset: 0x298 + (local.get $4) + ) + ;; code offset: 0x29d + (block $label$1 + ;; code offset: 0x29f + (loop $label$2 + ;; code offset: 0x2a6 + (local.set $20 + ;; code offset: 0x2a3 + (i32.load offset=32 + ;; code offset: 0x2a1 + (local.get $3) + ) + ) + ;; code offset: 0x2ad + (local.set $21 + ;; code offset: 0x2aa + (i32.load offset=28 + ;; code offset: 0x2a8 + (local.get $3) + ) + ) + ;; code offset: 0x2b1 + (local.set $22 + ;; code offset: 0x2af + (local.get $20) + ) + ;; code offset: 0x2b5 + (local.set $23 + ;; code offset: 0x2b3 + (local.get $21) + ) + ;; code offset: 0x2bc + (local.set $24 + ;; code offset: 0x2bb + (i32.lt_s + ;; code offset: 0x2b7 + (local.get $22) + ;; code offset: 0x2b9 + (local.get $23) + ) + ) + ;; code offset: 0x2c0 + (local.set $25 + ;; code offset: 0x2be + (i32.const 1) + ) + ;; code offset: 0x2c7 + (local.set $26 + ;; code offset: 0x2c6 + (i32.and + ;; code offset: 0x2c2 + (local.get $24) + ;; code offset: 0x2c4 + (local.get $25) + ) + ) + ;; code offset: 0x2cc + (br_if $label$1 + ;; code offset: 0x2cb + (i32.eqz + ;; code offset: 0x2c9 + (local.get $26) + ) + ) + ;; code offset: 0x2d3 + (local.set $27 + ;; code offset: 0x2d0 + (i32.load offset=32 + ;; code offset: 0x2ce + (local.get $3) + ) + ) + ;; code offset: 0x2da + (local.set $28 + ;; code offset: 0x2d7 + (i32.load offset=52 + ;; code offset: 0x2d5 + (local.get $3) + ) + ) + ;; code offset: 0x2e1 + (local.set $29 + ;; code offset: 0x2de + (i32.load offset=32 + ;; code offset: 0x2dc + (local.get $3) + ) + ) + ;; code offset: 0x2e5 + (local.set $30 + ;; code offset: 0x2e3 + (i32.const 2) + ) + ;; code offset: 0x2ec + (local.set $31 + ;; code offset: 0x2eb + (i32.shl + ;; code offset: 0x2e7 + (local.get $29) + ;; code offset: 0x2e9 + (local.get $30) + ) + ) + ;; code offset: 0x2f3 + (local.set $32 + ;; code offset: 0x2f2 + (i32.add + ;; code offset: 0x2ee + (local.get $28) + ;; code offset: 0x2f0 + (local.get $31) + ) + ) + ;; code offset: 0x2f9 + (i32.store + ;; code offset: 0x2f5 + (local.get $32) + ;; code offset: 0x2f7 + (local.get $27) + ) + ;; code offset: 0x301 + (local.set $33 + ;; code offset: 0x2fe + (i32.load offset=32 + ;; code offset: 0x2fc + (local.get $3) + ) + ) + ;; code offset: 0x305 + (local.set $34 + ;; code offset: 0x303 + (i32.const 1) + ) + ;; code offset: 0x30c + (local.set $35 + ;; code offset: 0x30b + (i32.add + ;; code offset: 0x307 + (local.get $33) + ;; code offset: 0x309 + (local.get $34) + ) + ) + ;; code offset: 0x312 + (i32.store offset=32 + ;; code offset: 0x30e + (local.get $3) + ;; code offset: 0x310 + (local.get $35) + ) + ;; code offset: 0x315 + (br $label$2) + ) + ) + ;; code offset: 0x31f + (local.set $36 + ;; code offset: 0x31c + (i32.load offset=28 + ;; code offset: 0x31a + (local.get $3) + ) + ) + ;; code offset: 0x323 + (local.set $37 + ;; code offset: 0x321 + (i32.const 1) + ) + ;; code offset: 0x32a + (local.set $38 + ;; code offset: 0x329 + (i32.sub + ;; code offset: 0x325 + (local.get $36) + ;; code offset: 0x327 + (local.get $37) + ) + ) + ;; code offset: 0x331 + (local.set $39 + ;; code offset: 0x32e + (i32.load offset=52 + ;; code offset: 0x32c + (local.get $3) + ) + ) + ;; code offset: 0x338 + (local.set $40 + ;; code offset: 0x335 + (i32.load offset=56 + ;; code offset: 0x333 + (local.get $3) + ) + ) + ;; code offset: 0x33f + (local.set $41 + ;; code offset: 0x33c + (i32.load + ;; code offset: 0x33a + (local.get $40) + ) + ) + ;; code offset: 0x343 + (local.set $42 + ;; code offset: 0x341 + (i32.const 2) + ) + ;; code offset: 0x34a + (local.set $43 + ;; code offset: 0x349 + (i32.shl + ;; code offset: 0x345 + (local.get $41) + ;; code offset: 0x347 + (local.get $42) + ) + ) + ;; code offset: 0x351 + (local.set $44 + ;; code offset: 0x350 + (i32.add + ;; code offset: 0x34c + (local.get $39) + ;; code offset: 0x34e + (local.get $43) + ) + ) + ;; code offset: 0x357 + (i32.store + ;; code offset: 0x353 + (local.get $44) + ;; code offset: 0x355 + (local.get $38) + ) + ;; code offset: 0x35f + (local.set $45 + ;; code offset: 0x35c + (i32.load offset=56 + ;; code offset: 0x35a + (local.get $3) + ) + ) + ;; code offset: 0x366 + (local.set $46 + ;; code offset: 0x363 + (i32.load + ;; code offset: 0x361 + (local.get $45) + ) + ) + ;; code offset: 0x36d + (local.set $47 + ;; code offset: 0x36a + (i32.load offset=52 + ;; code offset: 0x368 + (local.get $3) + ) + ) + ;; code offset: 0x374 + (local.set $48 + ;; code offset: 0x371 + (i32.load offset=28 + ;; code offset: 0x36f + (local.get $3) + ) + ) + ;; code offset: 0x378 + (local.set $49 + ;; code offset: 0x376 + (i32.const 1) + ) + ;; code offset: 0x37f + (local.set $50 + ;; code offset: 0x37e + (i32.sub + ;; code offset: 0x37a + (local.get $48) + ;; code offset: 0x37c + (local.get $49) + ) + ) + ;; code offset: 0x383 + (local.set $51 + ;; code offset: 0x381 + (i32.const 2) + ) + ;; code offset: 0x38a + (local.set $52 + ;; code offset: 0x389 + (i32.shl + ;; code offset: 0x385 + (local.get $50) + ;; code offset: 0x387 + (local.get $51) + ) + ) + ;; code offset: 0x391 + (local.set $53 + ;; code offset: 0x390 + (i32.add + ;; code offset: 0x38c + (local.get $47) + ;; code offset: 0x38e + (local.get $52) + ) + ) + ;; code offset: 0x397 + (i32.store + ;; code offset: 0x393 + (local.get $53) + ;; code offset: 0x395 + (local.get $46) + ) + ;; code offset: 0x39f + (local.set $54 + ;; code offset: 0x39c + (i32.load offset=28 + ;; code offset: 0x39a + (local.get $3) + ) + ) + ;; code offset: 0x3a5 + (i32.store offset=24 + ;; code offset: 0x3a1 + (local.get $3) + ;; code offset: 0x3a3 + (local.get $54) + ) + ;; code offset: 0x3a8 + (loop $label$3 (result i32) + ;; code offset: 0x3aa + (block $label$4 + ;; code offset: 0x3ac + (loop $label$5 + ;; code offset: 0x3b0 + (local.set $55 + ;; code offset: 0x3ae + (i32.const 1) + ) + ;; code offset: 0x3b7 + (local.set $56 + ;; code offset: 0x3b4 + (i32.load offset=24 + ;; code offset: 0x3b2 + (local.get $3) + ) + ) + ;; code offset: 0x3bb + (local.set $57 + ;; code offset: 0x3b9 + (local.get $56) + ) + ;; code offset: 0x3bf + (local.set $58 + ;; code offset: 0x3bd + (local.get $55) + ) + ;; code offset: 0x3c6 + (local.set $59 + ;; code offset: 0x3c5 + (i32.gt_s + ;; code offset: 0x3c1 + (local.get $57) + ;; code offset: 0x3c3 + (local.get $58) + ) + ) + ;; code offset: 0x3ca + (local.set $60 + ;; code offset: 0x3c8 + (i32.const 1) + ) + ;; code offset: 0x3d1 + (local.set $61 + ;; code offset: 0x3d0 + (i32.and + ;; code offset: 0x3cc + (local.get $59) + ;; code offset: 0x3ce + (local.get $60) + ) + ) + ;; code offset: 0x3d6 + (br_if $label$4 + ;; code offset: 0x3d5 + (i32.eqz + ;; code offset: 0x3d3 + (local.get $61) + ) + ) + ;; code offset: 0x3dd + (local.set $62 + ;; code offset: 0x3da + (i32.load offset=24 + ;; code offset: 0x3d8 + (local.get $3) + ) + ) + ;; code offset: 0x3e4 + (local.set $63 + ;; code offset: 0x3e1 + (i32.load offset=48 + ;; code offset: 0x3df + (local.get $3) + ) + ) + ;; code offset: 0x3eb + (local.set $64 + ;; code offset: 0x3e8 + (i32.load offset=24 + ;; code offset: 0x3e6 + (local.get $3) + ) + ) + ;; code offset: 0x3ef + (local.set $65 + ;; code offset: 0x3ed + (i32.const 1) + ) + ;; code offset: 0x3f6 + (local.set $66 + ;; code offset: 0x3f5 + (i32.sub + ;; code offset: 0x3f1 + (local.get $64) + ;; code offset: 0x3f3 + (local.get $65) + ) + ) + ;; code offset: 0x3fa + (local.set $67 + ;; code offset: 0x3f8 + (i32.const 2) + ) + ;; code offset: 0x401 + (local.set $68 + ;; code offset: 0x400 + (i32.shl + ;; code offset: 0x3fc + (local.get $66) + ;; code offset: 0x3fe + (local.get $67) + ) + ) + ;; code offset: 0x408 + (local.set $69 + ;; code offset: 0x407 + (i32.add + ;; code offset: 0x403 + (local.get $63) + ;; code offset: 0x405 + (local.get $68) + ) + ) + ;; code offset: 0x40e + (i32.store + ;; code offset: 0x40a + (local.get $69) + ;; code offset: 0x40c + (local.get $62) + ) + ;; code offset: 0x416 + (local.set $70 + ;; code offset: 0x413 + (i32.load offset=24 + ;; code offset: 0x411 + (local.get $3) + ) + ) + ;; code offset: 0x41a + (local.set $71 + ;; code offset: 0x418 + (i32.const -1) + ) + ;; code offset: 0x421 + (local.set $72 + ;; code offset: 0x420 + (i32.add + ;; code offset: 0x41c + (local.get $70) + ;; code offset: 0x41e + (local.get $71) + ) + ) + ;; code offset: 0x427 + (i32.store offset=24 + ;; code offset: 0x423 + (local.get $3) + ;; code offset: 0x425 + (local.get $72) + ) + ;; code offset: 0x42a + (br $label$5) + ) + ) + ;; code offset: 0x434 + (local.set $73 + ;; code offset: 0x431 + (i32.load offset=52 + ;; code offset: 0x42f + (local.get $3) + ) + ) + ;; code offset: 0x43b + (local.set $74 + ;; code offset: 0x438 + (i32.load + ;; code offset: 0x436 + (local.get $73) + ) + ) + ;; code offset: 0x43d + (block $label$6 + ;; code offset: 0x442 + (br_if $label$6 + ;; code offset: 0x441 + (i32.eqz + ;; code offset: 0x43f + (local.get $74) + ) + ) + ;; code offset: 0x449 + (local.set $75 + ;; code offset: 0x446 + (i32.load offset=52 + ;; code offset: 0x444 + (local.get $3) + ) + ) + ;; code offset: 0x450 + (local.set $76 + ;; code offset: 0x44d + (i32.load offset=28 + ;; code offset: 0x44b + (local.get $3) + ) + ) + ;; code offset: 0x454 + (local.set $77 + ;; code offset: 0x452 + (i32.const 1) + ) + ;; code offset: 0x45b + (local.set $78 + ;; code offset: 0x45a + (i32.sub + ;; code offset: 0x456 + (local.get $76) + ;; code offset: 0x458 + (local.get $77) + ) + ) + ;; code offset: 0x45f + (local.set $79 + ;; code offset: 0x45d + (i32.const 2) + ) + ;; code offset: 0x466 + (local.set $80 + ;; code offset: 0x465 + (i32.shl + ;; code offset: 0x461 + (local.get $78) + ;; code offset: 0x463 + (local.get $79) + ) + ) + ;; code offset: 0x46d + (local.set $81 + ;; code offset: 0x46c + (i32.add + ;; code offset: 0x468 + (local.get $75) + ;; code offset: 0x46a + (local.get $80) + ) + ) + ;; code offset: 0x474 + (local.set $82 + ;; code offset: 0x471 + (i32.load + ;; code offset: 0x46f + (local.get $81) + ) + ) + ;; code offset: 0x47b + (local.set $83 + ;; code offset: 0x478 + (i32.load offset=28 + ;; code offset: 0x476 + (local.get $3) + ) + ) + ;; code offset: 0x47f + (local.set $84 + ;; code offset: 0x47d + (i32.const 1) + ) + ;; code offset: 0x486 + (local.set $85 + ;; code offset: 0x485 + (i32.sub + ;; code offset: 0x481 + (local.get $83) + ;; code offset: 0x483 + (local.get $84) + ) + ) + ;; code offset: 0x48a + (local.set $86 + ;; code offset: 0x488 + (local.get $82) + ) + ;; code offset: 0x48e + (local.set $87 + ;; code offset: 0x48c + (local.get $85) + ) + ;; code offset: 0x495 + (local.set $88 + ;; code offset: 0x494 + (i32.ne + ;; code offset: 0x490 + (local.get $86) + ;; code offset: 0x492 + (local.get $87) + ) + ) + ;; code offset: 0x499 + (local.set $89 + ;; code offset: 0x497 + (i32.const 1) + ) + ;; code offset: 0x4a0 + (local.set $90 + ;; code offset: 0x49f + (i32.and + ;; code offset: 0x49b + (local.get $88) + ;; code offset: 0x49d + (local.get $89) + ) + ) + ;; code offset: 0x4a5 + (br_if $label$6 + ;; code offset: 0x4a4 + (i32.eqz + ;; code offset: 0x4a2 + (local.get $90) + ) + ) + ;; code offset: 0x4a9 + (local.set $91 + ;; code offset: 0x4a7 + (i32.const 0) + ) + ;; code offset: 0x4af + (i32.store offset=32 + ;; code offset: 0x4ab + (local.get $3) + ;; code offset: 0x4ad + (local.get $91) + ) + ;; code offset: 0x4b2 + (block $label$7 + ;; code offset: 0x4b4 + (loop $label$8 + ;; code offset: 0x4bb + (local.set $92 + ;; code offset: 0x4b8 + (i32.load offset=32 + ;; code offset: 0x4b6 + (local.get $3) + ) + ) + ;; code offset: 0x4c2 + (local.set $93 + ;; code offset: 0x4bf + (i32.load offset=28 + ;; code offset: 0x4bd + (local.get $3) + ) + ) + ;; code offset: 0x4c6 + (local.set $94 + ;; code offset: 0x4c4 + (local.get $92) + ) + ;; code offset: 0x4ca + (local.set $95 + ;; code offset: 0x4c8 + (local.get $93) + ) + ;; code offset: 0x4d1 + (local.set $96 + ;; code offset: 0x4d0 + (i32.lt_s + ;; code offset: 0x4cc + (local.get $94) + ;; code offset: 0x4ce + (local.get $95) + ) + ) + ;; code offset: 0x4d5 + (local.set $97 + ;; code offset: 0x4d3 + (i32.const 1) + ) + ;; code offset: 0x4dc + (local.set $98 + ;; code offset: 0x4db + (i32.and + ;; code offset: 0x4d7 + (local.get $96) + ;; code offset: 0x4d9 + (local.get $97) + ) + ) + ;; code offset: 0x4e1 + (br_if $label$7 + ;; code offset: 0x4e0 + (i32.eqz + ;; code offset: 0x4de + (local.get $98) + ) + ) + ;; code offset: 0x4e8 + (local.set $99 + ;; code offset: 0x4e5 + (i32.load offset=52 + ;; code offset: 0x4e3 + (local.get $3) + ) + ) + ;; code offset: 0x4ef + (local.set $100 + ;; code offset: 0x4ec + (i32.load offset=32 + ;; code offset: 0x4ea + (local.get $3) + ) + ) + ;; code offset: 0x4f3 + (local.set $101 + ;; code offset: 0x4f1 + (i32.const 2) + ) + ;; code offset: 0x4fa + (local.set $102 + ;; code offset: 0x4f9 + (i32.shl + ;; code offset: 0x4f5 + (local.get $100) + ;; code offset: 0x4f7 + (local.get $101) + ) + ) + ;; code offset: 0x501 + (local.set $103 + ;; code offset: 0x500 + (i32.add + ;; code offset: 0x4fc + (local.get $99) + ;; code offset: 0x4fe + (local.get $102) + ) + ) + ;; code offset: 0x508 + (local.set $104 + ;; code offset: 0x505 + (i32.load + ;; code offset: 0x503 + (local.get $103) + ) + ) + ;; code offset: 0x50f + (local.set $105 + ;; code offset: 0x50c + (i32.load offset=44 + ;; code offset: 0x50a + (local.get $3) + ) + ) + ;; code offset: 0x516 + (local.set $106 + ;; code offset: 0x513 + (i32.load offset=32 + ;; code offset: 0x511 + (local.get $3) + ) + ) + ;; code offset: 0x51a + (local.set $107 + ;; code offset: 0x518 + (i32.const 2) + ) + ;; code offset: 0x521 + (local.set $108 + ;; code offset: 0x520 + (i32.shl + ;; code offset: 0x51c + (local.get $106) + ;; code offset: 0x51e + (local.get $107) + ) + ) + ;; code offset: 0x528 + (local.set $109 + ;; code offset: 0x527 + (i32.add + ;; code offset: 0x523 + (local.get $105) + ;; code offset: 0x525 + (local.get $108) + ) + ) + ;; code offset: 0x52e + (i32.store + ;; code offset: 0x52a + (local.get $109) + ;; code offset: 0x52c + (local.get $104) + ) + ;; code offset: 0x536 + (local.set $110 + ;; code offset: 0x533 + (i32.load offset=32 + ;; code offset: 0x531 + (local.get $3) + ) + ) + ;; code offset: 0x53a + (local.set $111 + ;; code offset: 0x538 + (i32.const 1) + ) + ;; code offset: 0x541 + (local.set $112 + ;; code offset: 0x540 + (i32.add + ;; code offset: 0x53c + (local.get $110) + ;; code offset: 0x53e + (local.get $111) + ) + ) + ;; code offset: 0x547 + (i32.store offset=32 + ;; code offset: 0x543 + (local.get $3) + ;; code offset: 0x545 + (local.get $112) + ) + ;; code offset: 0x54a + (br $label$8) + ) + ) + ;; code offset: 0x551 + (local.set $113 + ;; code offset: 0x54f + (i32.const 0) + ) + ;; code offset: 0x557 + (i32.store offset=36 + ;; code offset: 0x553 + (local.get $3) + ;; code offset: 0x555 + (local.get $113) + ) + ;; code offset: 0x55f + (local.set $114 + ;; code offset: 0x55c + (i32.load offset=44 + ;; code offset: 0x55a + (local.get $3) + ) + ) + ;; code offset: 0x566 + (local.set $115 + ;; code offset: 0x563 + (i32.load + ;; code offset: 0x561 + (local.get $114) + ) + ) + ;; code offset: 0x56c + (i32.store offset=16 + ;; code offset: 0x568 + (local.get $3) + ;; code offset: 0x56a + (local.get $115) + ) + ;; code offset: 0x56f + (loop $label$9 + ;; code offset: 0x573 + (local.set $116 + ;; code offset: 0x571 + (i32.const 1) + ) + ;; code offset: 0x579 + (i32.store offset=32 + ;; code offset: 0x575 + (local.get $3) + ;; code offset: 0x577 + (local.get $116) + ) + ;; code offset: 0x581 + (local.set $117 + ;; code offset: 0x57e + (i32.load offset=16 + ;; code offset: 0x57c + (local.get $3) + ) + ) + ;; code offset: 0x585 + (local.set $118 + ;; code offset: 0x583 + (i32.const 1) + ) + ;; code offset: 0x58c + (local.set $119 + ;; code offset: 0x58b + (i32.sub + ;; code offset: 0x587 + (local.get $117) + ;; code offset: 0x589 + (local.get $118) + ) + ) + ;; code offset: 0x592 + (i32.store offset=20 + ;; code offset: 0x58e + (local.get $3) + ;; code offset: 0x590 + (local.get $119) + ) + ;; code offset: 0x595 + (block $label$10 + ;; code offset: 0x597 + (loop $label$11 + ;; code offset: 0x59e + (local.set $120 + ;; code offset: 0x59b + (i32.load offset=32 + ;; code offset: 0x599 + (local.get $3) + ) + ) + ;; code offset: 0x5a5 + (local.set $121 + ;; code offset: 0x5a2 + (i32.load offset=20 + ;; code offset: 0x5a0 + (local.get $3) + ) + ) + ;; code offset: 0x5a9 + (local.set $122 + ;; code offset: 0x5a7 + (local.get $120) + ) + ;; code offset: 0x5ad + (local.set $123 + ;; code offset: 0x5ab + (local.get $121) + ) + ;; code offset: 0x5b4 + (local.set $124 + ;; code offset: 0x5b3 + (i32.lt_s + ;; code offset: 0x5af + (local.get $122) + ;; code offset: 0x5b1 + (local.get $123) + ) + ) + ;; code offset: 0x5b8 + (local.set $125 + ;; code offset: 0x5b6 + (i32.const 1) + ) + ;; code offset: 0x5bf + (local.set $126 + ;; code offset: 0x5be + (i32.and + ;; code offset: 0x5ba + (local.get $124) + ;; code offset: 0x5bc + (local.get $125) + ) + ) + ;; code offset: 0x5c4 + (br_if $label$10 + ;; code offset: 0x5c3 + (i32.eqz + ;; code offset: 0x5c1 + (local.get $126) + ) + ) + ;; code offset: 0x5cb + (local.set $127 + ;; code offset: 0x5c8 + (i32.load offset=44 + ;; code offset: 0x5c6 + (local.get $3) + ) + ) + ;; code offset: 0x5d2 + (local.set $128 + ;; code offset: 0x5cf + (i32.load offset=32 + ;; code offset: 0x5cd + (local.get $3) + ) + ) + ;; code offset: 0x5d7 + (local.set $129 + ;; code offset: 0x5d5 + (i32.const 2) + ) + ;; code offset: 0x5e1 + (local.set $130 + ;; code offset: 0x5e0 + (i32.shl + ;; code offset: 0x5da + (local.get $128) + ;; code offset: 0x5dd + (local.get $129) + ) + ) + ;; code offset: 0x5ea + (local.set $131 + ;; code offset: 0x5e9 + (i32.add + ;; code offset: 0x5e4 + (local.get $127) + ;; code offset: 0x5e6 + (local.get $130) + ) + ) + ;; code offset: 0x5f3 + (local.set $132 + ;; code offset: 0x5f0 + (i32.load + ;; code offset: 0x5ed + (local.get $131) + ) + ) + ;; code offset: 0x5fb + (i32.store offset=12 + ;; code offset: 0x5f6 + (local.get $3) + ;; code offset: 0x5f8 + (local.get $132) + ) + ;; code offset: 0x603 + (local.set $133 + ;; code offset: 0x600 + (i32.load offset=44 + ;; code offset: 0x5fe + (local.get $3) + ) + ) + ;; code offset: 0x60b + (local.set $134 + ;; code offset: 0x608 + (i32.load offset=20 + ;; code offset: 0x606 + (local.get $3) + ) + ) + ;; code offset: 0x610 + (local.set $135 + ;; code offset: 0x60e + (i32.const 2) + ) + ;; code offset: 0x61a + (local.set $136 + ;; code offset: 0x619 + (i32.shl + ;; code offset: 0x613 + (local.get $134) + ;; code offset: 0x616 + (local.get $135) + ) + ) + ;; code offset: 0x624 + (local.set $137 + ;; code offset: 0x623 + (i32.add + ;; code offset: 0x61d + (local.get $133) + ;; code offset: 0x620 + (local.get $136) + ) + ) + ;; code offset: 0x62d + (local.set $138 + ;; code offset: 0x62a + (i32.load + ;; code offset: 0x627 + (local.get $137) + ) + ) + ;; code offset: 0x635 + (local.set $139 + ;; code offset: 0x632 + (i32.load offset=44 + ;; code offset: 0x630 + (local.get $3) + ) + ) + ;; code offset: 0x63d + (local.set $140 + ;; code offset: 0x63a + (i32.load offset=32 + ;; code offset: 0x638 + (local.get $3) + ) + ) + ;; code offset: 0x642 + (local.set $141 + ;; code offset: 0x640 + (i32.const 2) + ) + ;; code offset: 0x64c + (local.set $142 + ;; code offset: 0x64b + (i32.shl + ;; code offset: 0x645 + (local.get $140) + ;; code offset: 0x648 + (local.get $141) + ) + ) + ;; code offset: 0x656 + (local.set $143 + ;; code offset: 0x655 + (i32.add + ;; code offset: 0x64f + (local.get $139) + ;; code offset: 0x652 + (local.get $142) + ) + ) + ;; code offset: 0x65f + (i32.store + ;; code offset: 0x659 + (local.get $143) + ;; code offset: 0x65c + (local.get $138) + ) + ;; code offset: 0x667 + (local.set $144 + ;; code offset: 0x664 + (i32.load offset=12 + ;; code offset: 0x662 + (local.get $3) + ) + ) + ;; code offset: 0x66f + (local.set $145 + ;; code offset: 0x66c + (i32.load offset=44 + ;; code offset: 0x66a + (local.get $3) + ) + ) + ;; code offset: 0x677 + (local.set $146 + ;; code offset: 0x674 + (i32.load offset=20 + ;; code offset: 0x672 + (local.get $3) + ) + ) + ;; code offset: 0x67c + (local.set $147 + ;; code offset: 0x67a + (i32.const 2) + ) + ;; code offset: 0x686 + (local.set $148 + ;; code offset: 0x685 + (i32.shl + ;; code offset: 0x67f + (local.get $146) + ;; code offset: 0x682 + (local.get $147) + ) + ) + ;; code offset: 0x690 + (local.set $149 + ;; code offset: 0x68f + (i32.add + ;; code offset: 0x689 + (local.get $145) + ;; code offset: 0x68c + (local.get $148) + ) + ) + ;; code offset: 0x699 + (i32.store + ;; code offset: 0x693 + (local.get $149) + ;; code offset: 0x696 + (local.get $144) + ) + ;; code offset: 0x6a1 + (local.set $150 + ;; code offset: 0x69e + (i32.load offset=32 + ;; code offset: 0x69c + (local.get $3) + ) + ) + ;; code offset: 0x6a6 + (local.set $151 + ;; code offset: 0x6a4 + (i32.const 1) + ) + ;; code offset: 0x6b0 + (local.set $152 + ;; code offset: 0x6af + (i32.add + ;; code offset: 0x6a9 + (local.get $150) + ;; code offset: 0x6ac + (local.get $151) + ) + ) + ;; code offset: 0x6b8 + (i32.store offset=32 + ;; code offset: 0x6b3 + (local.get $3) + ;; code offset: 0x6b5 + (local.get $152) + ) + ;; code offset: 0x6c0 + (local.set $153 + ;; code offset: 0x6bd + (i32.load offset=20 + ;; code offset: 0x6bb + (local.get $3) + ) + ) + ;; code offset: 0x6c5 + (local.set $154 + ;; code offset: 0x6c3 + (i32.const -1) + ) + ;; code offset: 0x6cf + (local.set $155 + ;; code offset: 0x6ce + (i32.add + ;; code offset: 0x6c8 + (local.get $153) + ;; code offset: 0x6cb + (local.get $154) + ) + ) + ;; code offset: 0x6d7 + (i32.store offset=20 + ;; code offset: 0x6d2 + (local.get $3) + ;; code offset: 0x6d4 + (local.get $155) + ) + ;; code offset: 0x6da + (br $label$11) + ) + ) + ;; code offset: 0x6e4 + (local.set $156 + ;; code offset: 0x6e1 + (i32.load offset=36 + ;; code offset: 0x6df + (local.get $3) + ) + ) + ;; code offset: 0x6e9 + (local.set $157 + ;; code offset: 0x6e7 + (i32.const 1) + ) + ;; code offset: 0x6f3 + (local.set $158 + ;; code offset: 0x6f2 + (i32.add + ;; code offset: 0x6ec + (local.get $156) + ;; code offset: 0x6ef + (local.get $157) + ) + ) + ;; code offset: 0x6fb + (i32.store offset=36 + ;; code offset: 0x6f6 + (local.get $3) + ;; code offset: 0x6f8 + (local.get $158) + ) + ;; code offset: 0x703 + (local.set $159 + ;; code offset: 0x700 + (i32.load offset=44 + ;; code offset: 0x6fe + (local.get $3) + ) + ) + ;; code offset: 0x70b + (local.set $160 + ;; code offset: 0x708 + (i32.load offset=16 + ;; code offset: 0x706 + (local.get $3) + ) + ) + ;; code offset: 0x710 + (local.set $161 + ;; code offset: 0x70e + (i32.const 2) + ) + ;; code offset: 0x71a + (local.set $162 + ;; code offset: 0x719 + (i32.shl + ;; code offset: 0x713 + (local.get $160) + ;; code offset: 0x716 + (local.get $161) + ) + ) + ;; code offset: 0x724 + (local.set $163 + ;; code offset: 0x723 + (i32.add + ;; code offset: 0x71d + (local.get $159) + ;; code offset: 0x720 + (local.get $162) + ) + ) + ;; code offset: 0x72d + (local.set $164 + ;; code offset: 0x72a + (i32.load + ;; code offset: 0x727 + (local.get $163) + ) + ) + ;; code offset: 0x735 + (i32.store offset=12 + ;; code offset: 0x730 + (local.get $3) + ;; code offset: 0x732 + (local.get $164) + ) + ;; code offset: 0x73d + (local.set $165 + ;; code offset: 0x73a + (i32.load offset=16 + ;; code offset: 0x738 + (local.get $3) + ) + ) + ;; code offset: 0x745 + (local.set $166 + ;; code offset: 0x742 + (i32.load offset=44 + ;; code offset: 0x740 + (local.get $3) + ) + ) + ;; code offset: 0x74d + (local.set $167 + ;; code offset: 0x74a + (i32.load offset=16 + ;; code offset: 0x748 + (local.get $3) + ) + ) + ;; code offset: 0x752 + (local.set $168 + ;; code offset: 0x750 + (i32.const 2) + ) + ;; code offset: 0x75c + (local.set $169 + ;; code offset: 0x75b + (i32.shl + ;; code offset: 0x755 + (local.get $167) + ;; code offset: 0x758 + (local.get $168) + ) + ) + ;; code offset: 0x766 + (local.set $170 + ;; code offset: 0x765 + (i32.add + ;; code offset: 0x75f + (local.get $166) + ;; code offset: 0x762 + (local.get $169) + ) + ) + ;; code offset: 0x76f + (i32.store + ;; code offset: 0x769 + (local.get $170) + ;; code offset: 0x76c + (local.get $165) + ) + ;; code offset: 0x777 + (local.set $171 + ;; code offset: 0x774 + (i32.load offset=12 + ;; code offset: 0x772 + (local.get $3) + ) + ) + ;; code offset: 0x77f + (i32.store offset=16 + ;; code offset: 0x77a + (local.get $3) + ;; code offset: 0x77c + (local.get $171) + ) + ;; code offset: 0x787 + (local.set $172 + ;; code offset: 0x784 + (i32.load offset=16 + ;; code offset: 0x782 + (local.get $3) + ) + ) + ;; code offset: 0x78d + (br_if $label$9 + ;; code offset: 0x78a + (local.get $172) + ) + ) + ;; code offset: 0x795 + (local.set $173 + ;; code offset: 0x792 + (i32.load offset=40 + ;; code offset: 0x790 + (local.get $3) + ) + ) + ;; code offset: 0x79d + (local.set $174 + ;; code offset: 0x79a + (i32.load offset=36 + ;; code offset: 0x798 + (local.get $3) + ) + ) + ;; code offset: 0x7a3 + (local.set $175 + ;; code offset: 0x7a0 + (local.get $173) + ) + ;; code offset: 0x7a9 + (local.set $176 + ;; code offset: 0x7a6 + (local.get $174) + ) + ;; code offset: 0x7b3 + (local.set $177 + ;; code offset: 0x7b2 + (i32.lt_s + ;; code offset: 0x7ac + (local.get $175) + ;; code offset: 0x7af + (local.get $176) + ) + ) + ;; code offset: 0x7b8 + (local.set $178 + ;; code offset: 0x7b6 + (i32.const 1) + ) + ;; code offset: 0x7c2 + (local.set $179 + ;; code offset: 0x7c1 + (i32.and + ;; code offset: 0x7bb + (local.get $177) + ;; code offset: 0x7be + (local.get $178) + ) + ) + ;; code offset: 0x7c5 + (block $label$12 + ;; code offset: 0x7cb + (br_if $label$12 + ;; code offset: 0x7ca + (i32.eqz + ;; code offset: 0x7c7 + (local.get $179) + ) + ) + ;; code offset: 0x7d2 + (local.set $180 + ;; code offset: 0x7cf + (i32.load offset=36 + ;; code offset: 0x7cd + (local.get $3) + ) + ) + ;; code offset: 0x7da + (i32.store offset=40 + ;; code offset: 0x7d5 + (local.get $3) + ;; code offset: 0x7d7 + (local.get $180) + ) + ) + ) + ;; code offset: 0x7df + (loop $label$13 + ;; code offset: 0x7e6 + (local.set $181 + ;; code offset: 0x7e3 + (i32.load offset=24 + ;; code offset: 0x7e1 + (local.get $3) + ) + ) + ;; code offset: 0x7ee + (local.set $182 + ;; code offset: 0x7eb + (i32.load offset=28 + ;; code offset: 0x7e9 + (local.get $3) + ) + ) + ;; code offset: 0x7f3 + (local.set $183 + ;; code offset: 0x7f1 + (i32.const 1) + ) + ;; code offset: 0x7fd + (local.set $184 + ;; code offset: 0x7fc + (i32.sub + ;; code offset: 0x7f6 + (local.get $182) + ;; code offset: 0x7f9 + (local.get $183) + ) + ) + ;; code offset: 0x803 + (local.set $185 + ;; code offset: 0x800 + (local.get $181) + ) + ;; code offset: 0x809 + (local.set $186 + ;; code offset: 0x806 + (local.get $184) + ) + ;; code offset: 0x813 + (local.set $187 + ;; code offset: 0x812 + (i32.ge_s + ;; code offset: 0x80c + (local.get $185) + ;; code offset: 0x80f + (local.get $186) + ) + ) + ;; code offset: 0x818 + (local.set $188 + ;; code offset: 0x816 + (i32.const 1) + ) + ;; code offset: 0x822 + (local.set $189 + ;; code offset: 0x821 + (i32.and + ;; code offset: 0x81b + (local.get $187) + ;; code offset: 0x81e + (local.get $188) + ) + ) + ;; code offset: 0x825 + (block $label$14 + ;; code offset: 0x82b + (br_if $label$14 + ;; code offset: 0x82a + (i32.eqz + ;; code offset: 0x827 + (local.get $189) + ) + ) + ;; code offset: 0x832 + (local.set $190 + ;; code offset: 0x82f + (i32.load offset=52 + ;; code offset: 0x82d + (local.get $3) + ) + ) + ;; code offset: 0x838 + (call $free + ;; code offset: 0x835 + (local.get $190) + ) + ;; code offset: 0x83f + (local.set $191 + ;; code offset: 0x83c + (i32.load offset=44 + ;; code offset: 0x83a + (local.get $3) + ) + ) + ;; code offset: 0x845 + (call $free + ;; code offset: 0x842 + (local.get $191) + ) + ;; code offset: 0x84c + (local.set $192 + ;; code offset: 0x849 + (i32.load offset=48 + ;; code offset: 0x847 + (local.get $3) + ) + ) + ;; code offset: 0x852 + (call $free + ;; code offset: 0x84f + (local.get $192) + ) + ;; code offset: 0x859 + (local.set $193 + ;; code offset: 0x856 + (i32.load offset=40 + ;; code offset: 0x854 + (local.get $3) + ) + ) + ;; code offset: 0x85f + (local.set $194 + ;; code offset: 0x85c + (i32.const 64) + ) + ;; code offset: 0x868 + (local.set $195 + ;; code offset: 0x867 + (i32.add + ;; code offset: 0x862 + (local.get $3) + ;; code offset: 0x864 + (local.get $194) + ) + ) + ;; code offset: 0x86e + (global.set $global$0 + ;; code offset: 0x86b + (local.get $195) + ) + ;; code offset: 0x873 + (return + ;; code offset: 0x870 + (local.get $193) + ) + ) + ;; code offset: 0x877 + (local.set $196 + ;; code offset: 0x875 + (i32.const 0) + ) + ;; code offset: 0x87f + (local.set $197 + ;; code offset: 0x87c + (i32.load offset=52 + ;; code offset: 0x87a + (local.get $3) + ) + ) + ;; code offset: 0x888 + (local.set $198 + ;; code offset: 0x885 + (i32.load + ;; code offset: 0x882 + (local.get $197) + ) + ) + ;; code offset: 0x890 + (i32.store offset=8 + ;; code offset: 0x88b + (local.get $3) + ;; code offset: 0x88d + (local.get $198) + ) + ;; code offset: 0x898 + (i32.store offset=32 + ;; code offset: 0x893 + (local.get $3) + ;; code offset: 0x895 + (local.get $196) + ) + ;; code offset: 0x89b + (block $label$15 + ;; code offset: 0x89d + (loop $label$16 + ;; code offset: 0x8a4 + (local.set $199 + ;; code offset: 0x8a1 + (i32.load offset=32 + ;; code offset: 0x89f + (local.get $3) + ) + ) + ;; code offset: 0x8ac + (local.set $200 + ;; code offset: 0x8a9 + (i32.load offset=24 + ;; code offset: 0x8a7 + (local.get $3) + ) + ) + ;; code offset: 0x8b2 + (local.set $201 + ;; code offset: 0x8af + (local.get $199) + ) + ;; code offset: 0x8b8 + (local.set $202 + ;; code offset: 0x8b5 + (local.get $200) + ) + ;; code offset: 0x8c2 + (local.set $203 + ;; code offset: 0x8c1 + (i32.lt_s + ;; code offset: 0x8bb + (local.get $201) + ;; code offset: 0x8be + (local.get $202) + ) + ) + ;; code offset: 0x8c7 + (local.set $204 + ;; code offset: 0x8c5 + (i32.const 1) + ) + ;; code offset: 0x8d1 + (local.set $205 + ;; code offset: 0x8d0 + (i32.and + ;; code offset: 0x8ca + (local.get $203) + ;; code offset: 0x8cd + (local.get $204) + ) + ) + ;; code offset: 0x8d8 + (br_if $label$15 + ;; code offset: 0x8d7 + (i32.eqz + ;; code offset: 0x8d4 + (local.get $205) + ) + ) + ;; code offset: 0x8df + (local.set $206 + ;; code offset: 0x8dc + (i32.load offset=52 + ;; code offset: 0x8da + (local.get $3) + ) + ) + ;; code offset: 0x8e7 + (local.set $207 + ;; code offset: 0x8e4 + (i32.load offset=32 + ;; code offset: 0x8e2 + (local.get $3) + ) + ) + ;; code offset: 0x8ec + (local.set $208 + ;; code offset: 0x8ea + (i32.const 1) + ) + ;; code offset: 0x8f6 + (local.set $209 + ;; code offset: 0x8f5 + (i32.add + ;; code offset: 0x8ef + (local.get $207) + ;; code offset: 0x8f2 + (local.get $208) + ) + ) + ;; code offset: 0x8fb + (local.set $210 + ;; code offset: 0x8f9 + (i32.const 2) + ) + ;; code offset: 0x905 + (local.set $211 + ;; code offset: 0x904 + (i32.shl + ;; code offset: 0x8fe + (local.get $209) + ;; code offset: 0x901 + (local.get $210) + ) + ) + ;; code offset: 0x90f + (local.set $212 + ;; code offset: 0x90e + (i32.add + ;; code offset: 0x908 + (local.get $206) + ;; code offset: 0x90b + (local.get $211) + ) + ) + ;; code offset: 0x918 + (local.set $213 + ;; code offset: 0x915 + (i32.load + ;; code offset: 0x912 + (local.get $212) + ) + ) + ;; code offset: 0x920 + (local.set $214 + ;; code offset: 0x91d + (i32.load offset=52 + ;; code offset: 0x91b + (local.get $3) + ) + ) + ;; code offset: 0x928 + (local.set $215 + ;; code offset: 0x925 + (i32.load offset=32 + ;; code offset: 0x923 + (local.get $3) + ) + ) + ;; code offset: 0x92d + (local.set $216 + ;; code offset: 0x92b + (i32.const 2) + ) + ;; code offset: 0x937 + (local.set $217 + ;; code offset: 0x936 + (i32.shl + ;; code offset: 0x930 + (local.get $215) + ;; code offset: 0x933 + (local.get $216) + ) + ) + ;; code offset: 0x941 + (local.set $218 + ;; code offset: 0x940 + (i32.add + ;; code offset: 0x93a + (local.get $214) + ;; code offset: 0x93d + (local.get $217) + ) + ) + ;; code offset: 0x94a + (i32.store + ;; code offset: 0x944 + (local.get $218) + ;; code offset: 0x947 + (local.get $213) + ) + ;; code offset: 0x952 + (local.set $219 + ;; code offset: 0x94f + (i32.load offset=32 + ;; code offset: 0x94d + (local.get $3) + ) + ) + ;; code offset: 0x957 + (local.set $220 + ;; code offset: 0x955 + (i32.const 1) + ) + ;; code offset: 0x961 + (local.set $221 + ;; code offset: 0x960 + (i32.add + ;; code offset: 0x95a + (local.get $219) + ;; code offset: 0x95d + (local.get $220) + ) + ) + ;; code offset: 0x969 + (i32.store offset=32 + ;; code offset: 0x964 + (local.get $3) + ;; code offset: 0x966 + (local.get $221) + ) + ;; code offset: 0x96c + (br $label$16) + ) + ) + ;; code offset: 0x973 + (local.set $222 + ;; code offset: 0x971 + (i32.const 0) + ) + ;; code offset: 0x97b + (local.set $223 + ;; code offset: 0x978 + (i32.load offset=8 + ;; code offset: 0x976 + (local.get $3) + ) + ) + ;; code offset: 0x983 + (local.set $224 + ;; code offset: 0x980 + (i32.load offset=52 + ;; code offset: 0x97e + (local.get $3) + ) + ) + ;; code offset: 0x98b + (local.set $225 + ;; code offset: 0x988 + (i32.load offset=32 + ;; code offset: 0x986 + (local.get $3) + ) + ) + ;; code offset: 0x990 + (local.set $226 + ;; code offset: 0x98e + (i32.const 2) + ) + ;; code offset: 0x99a + (local.set $227 + ;; code offset: 0x999 + (i32.shl + ;; code offset: 0x993 + (local.get $225) + ;; code offset: 0x996 + (local.get $226) + ) + ) + ;; code offset: 0x9a4 + (local.set $228 + ;; code offset: 0x9a3 + (i32.add + ;; code offset: 0x99d + (local.get $224) + ;; code offset: 0x9a0 + (local.get $227) + ) + ) + ;; code offset: 0x9ad + (i32.store + ;; code offset: 0x9a7 + (local.get $228) + ;; code offset: 0x9aa + (local.get $223) + ) + ;; code offset: 0x9b5 + (local.set $229 + ;; code offset: 0x9b2 + (i32.load offset=48 + ;; code offset: 0x9b0 + (local.get $3) + ) + ) + ;; code offset: 0x9bd + (local.set $230 + ;; code offset: 0x9ba + (i32.load offset=24 + ;; code offset: 0x9b8 + (local.get $3) + ) + ) + ;; code offset: 0x9c2 + (local.set $231 + ;; code offset: 0x9c0 + (i32.const 2) + ) + ;; code offset: 0x9cc + (local.set $232 + ;; code offset: 0x9cb + (i32.shl + ;; code offset: 0x9c5 + (local.get $230) + ;; code offset: 0x9c8 + (local.get $231) + ) + ) + ;; code offset: 0x9d6 + (local.set $233 + ;; code offset: 0x9d5 + (i32.add + ;; code offset: 0x9cf + (local.get $229) + ;; code offset: 0x9d2 + (local.get $232) + ) + ) + ;; code offset: 0x9df + (local.set $234 + ;; code offset: 0x9dc + (i32.load + ;; code offset: 0x9d9 + (local.get $233) + ) + ) + ;; code offset: 0x9e4 + (local.set $235 + ;; code offset: 0x9e2 + (i32.const -1) + ) + ;; code offset: 0x9ee + (local.set $236 + ;; code offset: 0x9ed + (i32.add + ;; code offset: 0x9e7 + (local.get $234) + ;; code offset: 0x9ea + (local.get $235) + ) + ) + ;; code offset: 0x9f7 + (i32.store + ;; code offset: 0x9f1 + (local.get $233) + ;; code offset: 0x9f4 + (local.get $236) + ) + ;; code offset: 0x9fd + (local.set $237 + ;; code offset: 0x9fa + (local.get $236) + ) + ;; code offset: 0xa03 + (local.set $238 + ;; code offset: 0xa00 + (local.get $222) + ) + ;; code offset: 0xa0d + (local.set $239 + ;; code offset: 0xa0c + (i32.gt_s + ;; code offset: 0xa06 + (local.get $237) + ;; code offset: 0xa09 + (local.get $238) + ) + ) + ;; code offset: 0xa12 + (local.set $240 + ;; code offset: 0xa10 + (i32.const 1) + ) + ;; code offset: 0xa1c + (local.set $241 + ;; code offset: 0xa1b + (i32.and + ;; code offset: 0xa15 + (local.get $239) + ;; code offset: 0xa18 + (local.get $240) + ) + ) + ;; code offset: 0xa1f + (block $label$17 + (block $label$18 + ;; code offset: 0xa27 + (br_if $label$18 + ;; code offset: 0xa26 + (i32.eqz + ;; code offset: 0xa23 + (local.get $241) + ) + ) + ;; code offset: 0xa29 + (br $label$17) + ) + ;; code offset: 0xa31 + (local.set $242 + ;; code offset: 0xa2e + (i32.load offset=24 + ;; code offset: 0xa2c + (local.get $3) + ) + ) + ;; code offset: 0xa36 + (local.set $243 + ;; code offset: 0xa34 + (i32.const 1) + ) + ;; code offset: 0xa40 + (local.set $244 + ;; code offset: 0xa3f + (i32.add + ;; code offset: 0xa39 + (local.get $242) + ;; code offset: 0xa3c + (local.get $243) + ) + ) + ;; code offset: 0xa48 + (i32.store offset=24 + ;; code offset: 0xa43 + (local.get $3) + ;; code offset: 0xa45 + (local.get $244) + ) + ;; code offset: 0xa4b + (br $label$13) + ) + ) + ;; code offset: 0xa4f + (br $label$3) + ) + ) + (func $main (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + (local $23 i32) + (local $24 i32) + (local $25 i32) + (local $26 i32) + (local $27 i32) + (local $28 i32) + (local $29 i32) + (local $30 i32) + (local $31 i32) + (local $32 i32) + (local $33 i32) + (local $34 i32) + (local $35 i32) + (local $36 i32) + ;; code offset: 0xa9e + (local.set $2 + ;; code offset: 0xa9c + (global.get $global$0) + ) + ;; code offset: 0xaa2 + (local.set $3 + ;; code offset: 0xaa0 + (i32.const 32) + ) + ;; code offset: 0xaa9 + (local.set $4 + ;; code offset: 0xaa8 + (i32.sub + ;; code offset: 0xaa4 + (local.get $2) + ;; code offset: 0xaa6 + (local.get $3) + ) + ) + ;; code offset: 0xaad + (global.set $global$0 + ;; code offset: 0xaab + (local.get $4) + ) + ;; code offset: 0xab1 + (local.set $5 + ;; code offset: 0xaaf + (i32.const 1) + ) + ;; code offset: 0xab5 + (local.set $6 + ;; code offset: 0xab3 + (i32.const 0) + ) + ;; code offset: 0xabb + (i32.store offset=28 + ;; code offset: 0xab7 + (local.get $4) + ;; code offset: 0xab9 + (local.get $6) + ) + ;; code offset: 0xac2 + (i32.store offset=24 + ;; code offset: 0xabe + (local.get $4) + ;; code offset: 0xac0 + (local.get $0) + ) + ;; code offset: 0xac9 + (i32.store offset=20 + ;; code offset: 0xac5 + (local.get $4) + ;; code offset: 0xac7 + (local.get $1) + ) + ;; code offset: 0xad1 + (local.set $7 + ;; code offset: 0xace + (i32.load offset=24 + ;; code offset: 0xacc + (local.get $4) + ) + ) + ;; code offset: 0xad5 + (local.set $8 + ;; code offset: 0xad3 + (local.get $7) + ) + ;; code offset: 0xad9 + (local.set $9 + ;; code offset: 0xad7 + (local.get $5) + ) + ;; code offset: 0xae0 + (local.set $10 + ;; code offset: 0xadf + (i32.gt_s + ;; code offset: 0xadb + (local.get $8) + ;; code offset: 0xadd + (local.get $9) + ) + ) + ;; code offset: 0xae4 + (local.set $11 + ;; code offset: 0xae2 + (i32.const 1) + ) + ;; code offset: 0xaeb + (local.set $12 + ;; code offset: 0xaea + (i32.and + ;; code offset: 0xae6 + (local.get $10) + ;; code offset: 0xae8 + (local.get $11) + ) + ) + ;; code offset: 0xaed + (block $label$1 + (block $label$2 + ;; code offset: 0xaf4 + (br_if $label$2 + ;; code offset: 0xaf3 + (i32.eqz + ;; code offset: 0xaf1 + (local.get $12) + ) + ) + ;; code offset: 0xafb + (local.set $13 + ;; code offset: 0xaf8 + (i32.load offset=20 + ;; code offset: 0xaf6 + (local.get $4) + ) + ) + ;; code offset: 0xb02 + (local.set $14 + ;; code offset: 0xaff + (i32.load offset=4 + ;; code offset: 0xafd + (local.get $13) + ) + ) + ;; code offset: 0xb08 + (local.set $15 + ;; code offset: 0xb06 + (call $atoi + ;; code offset: 0xb04 + (local.get $14) + ) + ) + ;; code offset: 0xb0c + (local.set $16 + ;; code offset: 0xb0a + (local.get $15) + ) + ;; code offset: 0xb0e + (br $label$1) + ) + ;; code offset: 0xb13 + (local.set $17 + ;; code offset: 0xb11 + (i32.const 0) + ) + ;; code offset: 0xb17 + (local.set $16 + ;; code offset: 0xb15 + (local.get $17) + ) + ) + ;; code offset: 0xb1c + (local.set $18 + ;; code offset: 0xb1a + (local.get $16) + ) + ;; code offset: 0xb20 + (local.set $19 + ;; code offset: 0xb1e + (i32.const 1) + ) + ;; code offset: 0xb26 + (i32.store offset=16 + ;; code offset: 0xb22 + (local.get $4) + ;; code offset: 0xb24 + (local.get $18) + ) + ;; code offset: 0xb2e + (local.set $20 + ;; code offset: 0xb2b + (i32.load offset=16 + ;; code offset: 0xb29 + (local.get $4) + ) + ) + ;; code offset: 0xb32 + (local.set $21 + ;; code offset: 0xb30 + (local.get $20) + ) + ;; code offset: 0xb36 + (local.set $22 + ;; code offset: 0xb34 + (local.get $19) + ) + ;; code offset: 0xb3d + (local.set $23 + ;; code offset: 0xb3c + (i32.lt_s + ;; code offset: 0xb38 + (local.get $21) + ;; code offset: 0xb3a + (local.get $22) + ) + ) + ;; code offset: 0xb41 + (local.set $24 + ;; code offset: 0xb3f + (i32.const 1) + ) + ;; code offset: 0xb48 + (local.set $25 + ;; code offset: 0xb47 + (i32.and + ;; code offset: 0xb43 + (local.get $23) + ;; code offset: 0xb45 + (local.get $24) + ) + ) + ;; code offset: 0xb4a + (block $label$3 + (block $label$4 + ;; code offset: 0xb51 + (br_if $label$4 + ;; code offset: 0xb50 + (i32.eqz + ;; code offset: 0xb4e + (local.get $25) + ) + ) + ;; code offset: 0xb56 + (local.set $26 + ;; code offset: 0xb53 + (i32.const 1024) + ) + ;; code offset: 0xb5a + (local.set $27 + ;; code offset: 0xb58 + (i32.const 0) + ) + ;; code offset: 0xb62 + (drop + ;; code offset: 0xb60 + (call $printf + ;; code offset: 0xb5c + (local.get $26) + ;; code offset: 0xb5e + (local.get $27) + ) + ) + ;; code offset: 0xb65 + (local.set $28 + ;; code offset: 0xb63 + (i32.const 1) + ) + ;; code offset: 0xb6b + (i32.store offset=28 + ;; code offset: 0xb67 + (local.get $4) + ;; code offset: 0xb69 + (local.get $28) + ) + ;; code offset: 0xb6e + (br $label$3) + ) + ;; code offset: 0xb76 + (local.set $29 + ;; code offset: 0xb73 + (i32.load offset=16 + ;; code offset: 0xb71 + (local.get $4) + ) + ) + ;; code offset: 0xb7d + (local.set $30 + ;; code offset: 0xb7a + (i32.load offset=16 + ;; code offset: 0xb78 + (local.get $4) + ) + ) + ;; code offset: 0xb83 + (local.set $31 + ;; code offset: 0xb81 + (call $fannkuch\28int\29 + ;; code offset: 0xb7f + (local.get $30) + ) + ) + ;; code offset: 0xb89 + (i32.store offset=4 + ;; code offset: 0xb85 + (local.get $4) + ;; code offset: 0xb87 + (local.get $31) + ) + ;; code offset: 0xb90 + (i32.store + ;; code offset: 0xb8c + (local.get $4) + ;; code offset: 0xb8e + (local.get $29) + ) + ;; code offset: 0xb96 + (local.set $32 + ;; code offset: 0xb93 + (i32.const 1041) + ) + ;; code offset: 0xb9e + (drop + ;; code offset: 0xb9c + (call $printf + ;; code offset: 0xb98 + (local.get $32) + ;; code offset: 0xb9a + (local.get $4) + ) + ) + ;; code offset: 0xba1 + (local.set $33 + ;; code offset: 0xb9f + (i32.const 0) + ) + ;; code offset: 0xba7 + (i32.store offset=28 + ;; code offset: 0xba3 + (local.get $4) + ;; code offset: 0xba5 + (local.get $33) + ) + ) + ;; code offset: 0xbb0 + (local.set $34 + ;; code offset: 0xbad + (i32.load offset=28 + ;; code offset: 0xbab + (local.get $4) + ) + ) + ;; code offset: 0xbb4 + (local.set $35 + ;; code offset: 0xbb2 + (i32.const 32) + ) + ;; code offset: 0xbbb + (local.set $36 + ;; code offset: 0xbba + (i32.add + ;; code offset: 0xbb6 + (local.get $4) + ;; code offset: 0xbb8 + (local.get $35) + ) + ) + ;; code offset: 0xbbf + (global.set $global$0 + ;; code offset: 0xbbd + (local.get $36) + ) + ;; code offset: 0xbc3 + (return + ;; code offset: 0xbc1 + (local.get $34) + ) + ) + (func $fannkuch\28int\29 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + (local $21 i32) + (local $22 i32) + (local $23 i32) + (local $24 i32) + (local $25 i32) + (local $26 i32) + (local $27 i32) + (local $28 i32) + (local $29 i32) + (local $30 i32) + (local $31 i32) + (local $32 i32) + (local $33 i32) + (local $34 i32) + (local $35 i32) + (local $36 i32) + (local $37 i32) + (local $38 i32) + (local $39 i32) + (local $40 i32) + (local $41 i32) + (local $42 i32) + (local $43 i32) + (local $44 i32) + (local $45 i32) + (local $46 i32) + (local $47 i32) + (local $48 i32) + (local $49 i32) + (local $50 i32) + (local $51 i32) + (local $52 i32) + (local $53 i32) + (local $54 i32) + (local $55 i32) + (local $56 i32) + (local $57 i32) + (local $58 i32) + (local $59 i32) + (local $60 i32) + (local $61 i32) + (local $62 i32) + (local $63 i32) + (local $64 i32) + (local $65 i32) + (local $66 i32) + (local $67 i32) + (local $68 i32) + (local $69 i32) + (local $70 i32) + (local $71 i32) + (local $72 i32) + (local $73 i32) + (local $74 i32) + (local $75 i32) + (local $76 i32) + (local $77 i32) + (local $78 i32) + (local $79 i32) + (local $80 i32) + (local $81 i32) + (local $82 i32) + (local $83 i32) + (local $84 i32) + (local $85 i32) + (local $86 i32) + (local $87 i32) + (local $88 i32) + (local $89 i32) + (local $90 i32) + (local $91 i32) + (local $92 i32) + (local $93 i32) + (local $94 i32) + (local $95 i32) + (local $96 i32) + (local $97 i32) + (local $98 i32) + (local $99 i32) + (local $100 i32) + (local $101 i32) + (local $102 i32) + (local $103 i32) + (local $104 i32) + (local $105 i32) + (local $106 i32) + (local $107 i32) + (local $108 i32) + (local $109 i32) + (local $110 i32) + (local $111 i32) + (local $112 i32) + (local $113 i32) + (local $114 i32) + (local $115 i32) + (local $116 i32) + (local $117 i32) + (local $118 i32) + (local $119 i32) + (local $120 i32) + (local $121 i32) + (local $122 i32) + (local $123 i32) + (local $124 i32) + (local $125 i32) + (local $126 i32) + (local $127 i32) + (local $128 i32) + (local $129 i32) + (local $130 i32) + (local $131 i32) + (local $132 i32) + (local $133 i32) + (local $134 i32) + (local $135 i32) + (local $136 i32) + (local $137 i32) + (local $138 i32) + (local $139 i32) + (local $140 i32) + (local $141 i32) + (local $142 i32) + (local $143 i32) + (local $144 i32) + (local $145 i32) + (local $146 i32) + (local $147 i32) + (local $148 i32) + (local $149 i32) + (local $150 i32) + (local $151 i32) + (local $152 i32) + (local $153 i32) + (local $154 i32) + (local $155 i32) + (local $156 i32) + (local $157 i32) + (local $158 i32) + (local $159 i32) + (local $160 i32) + (local $161 i32) + (local $162 i32) + (local $163 i32) + (local $164 i32) + (local $165 i32) + (local $166 i32) + (local $167 i32) + (local $168 i32) + (local $169 i32) + (local $170 i32) + (local $171 i32) + (local $172 i32) + (local $173 i32) + (local $174 i32) + (local $175 i32) + (local $176 i32) + (local $177 i32) + (local $178 i32) + (local $179 i32) + ;; code offset: 0xd31 + (local.set $1 + ;; code offset: 0xd2f + (global.get $global$0) + ) + ;; code offset: 0xd35 + (local.set $2 + ;; code offset: 0xd33 + (i32.const 48) + ) + ;; code offset: 0xd3c + (local.set $3 + ;; code offset: 0xd3b + (i32.sub + ;; code offset: 0xd37 + (local.get $1) + ;; code offset: 0xd39 + (local.get $2) + ) + ) + ;; code offset: 0xd40 + (global.set $global$0 + ;; code offset: 0xd3e + (local.get $3) + ) + ;; code offset: 0xd44 + (local.set $4 + ;; code offset: 0xd42 + (i32.const 0) + ) + ;; code offset: 0xd48 + (local.set $5 + ;; code offset: 0xd46 + (i32.const 30) + ) + ;; code offset: 0xd4e + (i32.store offset=44 + ;; code offset: 0xd4a + (local.get $3) + ;; code offset: 0xd4c + (local.get $0) + ) + ;; code offset: 0xd55 + (i32.store offset=32 + ;; code offset: 0xd51 + (local.get $3) + ;; code offset: 0xd53 + (local.get $5) + ) + ;; code offset: 0xd5c + (i32.store offset=40 + ;; code offset: 0xd58 + (local.get $3) + ;; code offset: 0xd5a + (local.get $4) + ) + ;; code offset: 0xd63 + (i32.store offset=20 + ;; code offset: 0xd5f + (local.get $3) + ;; code offset: 0xd61 + (local.get $4) + ) + ;; code offset: 0xd66 + (block $label$1 + ;; code offset: 0xd68 + (loop $label$2 + ;; code offset: 0xd6f + (local.set $6 + ;; code offset: 0xd6c + (i32.load offset=20 + ;; code offset: 0xd6a + (local.get $3) + ) + ) + ;; code offset: 0xd76 + (local.set $7 + ;; code offset: 0xd73 + (i32.load offset=44 + ;; code offset: 0xd71 + (local.get $3) + ) + ) + ;; code offset: 0xd7a + (local.set $8 + ;; code offset: 0xd78 + (i32.const 1) + ) + ;; code offset: 0xd81 + (local.set $9 + ;; code offset: 0xd80 + (i32.sub + ;; code offset: 0xd7c + (local.get $7) + ;; code offset: 0xd7e + (local.get $8) + ) + ) + ;; code offset: 0xd85 + (local.set $10 + ;; code offset: 0xd83 + (local.get $6) + ) + ;; code offset: 0xd89 + (local.set $11 + ;; code offset: 0xd87 + (local.get $9) + ) + ;; code offset: 0xd90 + (local.set $12 + ;; code offset: 0xd8f + (i32.lt_s + ;; code offset: 0xd8b + (local.get $10) + ;; code offset: 0xd8d + (local.get $11) + ) + ) + ;; code offset: 0xd94 + (local.set $13 + ;; code offset: 0xd92 + (i32.const 1) + ) + ;; code offset: 0xd9b + (local.set $14 + ;; code offset: 0xd9a + (i32.and + ;; code offset: 0xd96 + (local.get $12) + ;; code offset: 0xd98 + (local.get $13) + ) + ) + ;; code offset: 0xda0 + (br_if $label$1 + ;; code offset: 0xd9f + (i32.eqz + ;; code offset: 0xd9d + (local.get $14) + ) + ) + ;; code offset: 0xda4 + (local.set $15 + ;; code offset: 0xda2 + (i32.const 12) + ) + ;; code offset: 0xdaa + (local.set $16 + ;; code offset: 0xda8 + (call $malloc + ;; code offset: 0xda6 + (local.get $15) + ) + ) + ;; code offset: 0xdb0 + (i32.store offset=36 + ;; code offset: 0xdac + (local.get $3) + ;; code offset: 0xdae + (local.get $16) + ) + ;; code offset: 0xdb8 + (local.set $17 + ;; code offset: 0xdb5 + (i32.load offset=20 + ;; code offset: 0xdb3 + (local.get $3) + ) + ) + ;; code offset: 0xdbf + (local.set $18 + ;; code offset: 0xdbc + (i32.load offset=36 + ;; code offset: 0xdba + (local.get $3) + ) + ) + ;; code offset: 0xdc5 + (i32.store + ;; code offset: 0xdc1 + (local.get $18) + ;; code offset: 0xdc3 + (local.get $17) + ) + ;; code offset: 0xdcd + (local.set $19 + ;; code offset: 0xdca + (i32.load offset=44 + ;; code offset: 0xdc8 + (local.get $3) + ) + ) + ;; code offset: 0xdd4 + (local.set $20 + ;; code offset: 0xdd1 + (i32.load offset=36 + ;; code offset: 0xdcf + (local.get $3) + ) + ) + ;; code offset: 0xdda + (i32.store offset=4 + ;; code offset: 0xdd6 + (local.get $20) + ;; code offset: 0xdd8 + (local.get $19) + ) + ;; code offset: 0xde2 + (local.set $21 + ;; code offset: 0xddf + (i32.load offset=40 + ;; code offset: 0xddd + (local.get $3) + ) + ) + ;; code offset: 0xde9 + (local.set $22 + ;; code offset: 0xde6 + (i32.load offset=36 + ;; code offset: 0xde4 + (local.get $3) + ) + ) + ;; code offset: 0xdef + (i32.store offset=8 + ;; code offset: 0xdeb + (local.get $22) + ;; code offset: 0xded + (local.get $21) + ) + ;; code offset: 0xdf7 + (local.set $23 + ;; code offset: 0xdf4 + (i32.load offset=36 + ;; code offset: 0xdf2 + (local.get $3) + ) + ) + ;; code offset: 0xdfd + (i32.store offset=40 + ;; code offset: 0xdf9 + (local.get $3) + ;; code offset: 0xdfb + (local.get $23) + ) + ;; code offset: 0xe05 + (local.set $24 + ;; code offset: 0xe02 + (i32.load offset=20 + ;; code offset: 0xe00 + (local.get $3) + ) + ) + ;; code offset: 0xe09 + (local.set $25 + ;; code offset: 0xe07 + (i32.const 1) + ) + ;; code offset: 0xe10 + (local.set $26 + ;; code offset: 0xe0f + (i32.add + ;; code offset: 0xe0b + (local.get $24) + ;; code offset: 0xe0d + (local.get $25) + ) + ) + ;; code offset: 0xe16 + (i32.store offset=20 + ;; code offset: 0xe12 + (local.get $3) + ;; code offset: 0xe14 + (local.get $26) + ) + ;; code offset: 0xe19 + (br $label$2) + ) + ) + ;; code offset: 0xe20 + (local.set $27 + ;; code offset: 0xe1e + (i32.const 0) + ) + ;; code offset: 0xe27 + (local.set $28 + ;; code offset: 0xe24 + (i32.load offset=44 + ;; code offset: 0xe22 + (local.get $3) + ) + ) + ;; code offset: 0xe2b + (local.set $29 + ;; code offset: 0xe29 + (i32.const 2) + ) + ;; code offset: 0xe32 + (local.set $30 + ;; code offset: 0xe31 + (i32.shl + ;; code offset: 0xe2d + (local.get $28) + ;; code offset: 0xe2f + (local.get $29) + ) + ) + ;; code offset: 0xe38 + (local.set $31 + ;; code offset: 0xe36 + (call $malloc + ;; code offset: 0xe34 + (local.get $30) + ) + ) + ;; code offset: 0xe3e + (i32.store offset=28 + ;; code offset: 0xe3a + (local.get $3) + ;; code offset: 0xe3c + (local.get $31) + ) + ;; code offset: 0xe46 + (local.set $32 + ;; code offset: 0xe43 + (i32.load offset=44 + ;; code offset: 0xe41 + (local.get $3) + ) + ) + ;; code offset: 0xe4a + (local.set $33 + ;; code offset: 0xe48 + (i32.const 2) + ) + ;; code offset: 0xe51 + (local.set $34 + ;; code offset: 0xe50 + (i32.shl + ;; code offset: 0xe4c + (local.get $32) + ;; code offset: 0xe4e + (local.get $33) + ) + ) + ;; code offset: 0xe57 + (local.set $35 + ;; code offset: 0xe55 + (call $malloc + ;; code offset: 0xe53 + (local.get $34) + ) + ) + ;; code offset: 0xe5d + (i32.store offset=24 + ;; code offset: 0xe59 + (local.get $3) + ;; code offset: 0xe5b + (local.get $35) + ) + ;; code offset: 0xe64 + (i32.store offset=20 + ;; code offset: 0xe60 + (local.get $3) + ;; code offset: 0xe62 + (local.get $27) + ) + ;; code offset: 0xe67 + (block $label$3 + ;; code offset: 0xe69 + (loop $label$4 + ;; code offset: 0xe70 + (local.set $36 + ;; code offset: 0xe6d + (i32.load offset=20 + ;; code offset: 0xe6b + (local.get $3) + ) + ) + ;; code offset: 0xe77 + (local.set $37 + ;; code offset: 0xe74 + (i32.load offset=44 + ;; code offset: 0xe72 + (local.get $3) + ) + ) + ;; code offset: 0xe7b + (local.set $38 + ;; code offset: 0xe79 + (local.get $36) + ) + ;; code offset: 0xe7f + (local.set $39 + ;; code offset: 0xe7d + (local.get $37) + ) + ;; code offset: 0xe86 + (local.set $40 + ;; code offset: 0xe85 + (i32.lt_s + ;; code offset: 0xe81 + (local.get $38) + ;; code offset: 0xe83 + (local.get $39) + ) + ) + ;; code offset: 0xe8a + (local.set $41 + ;; code offset: 0xe88 + (i32.const 1) + ) + ;; code offset: 0xe91 + (local.set $42 + ;; code offset: 0xe90 + (i32.and + ;; code offset: 0xe8c + (local.get $40) + ;; code offset: 0xe8e + (local.get $41) + ) + ) + ;; code offset: 0xe96 + (br_if $label$3 + ;; code offset: 0xe95 + (i32.eqz + ;; code offset: 0xe93 + (local.get $42) + ) + ) + ;; code offset: 0xe9d + (local.set $43 + ;; code offset: 0xe9a + (i32.load offset=20 + ;; code offset: 0xe98 + (local.get $3) + ) + ) + ;; code offset: 0xea4 + (local.set $44 + ;; code offset: 0xea1 + (i32.load offset=28 + ;; code offset: 0xe9f + (local.get $3) + ) + ) + ;; code offset: 0xeab + (local.set $45 + ;; code offset: 0xea8 + (i32.load offset=20 + ;; code offset: 0xea6 + (local.get $3) + ) + ) + ;; code offset: 0xeaf + (local.set $46 + ;; code offset: 0xead + (i32.const 2) + ) + ;; code offset: 0xeb6 + (local.set $47 + ;; code offset: 0xeb5 + (i32.shl + ;; code offset: 0xeb1 + (local.get $45) + ;; code offset: 0xeb3 + (local.get $46) + ) + ) + ;; code offset: 0xebd + (local.set $48 + ;; code offset: 0xebc + (i32.add + ;; code offset: 0xeb8 + (local.get $44) + ;; code offset: 0xeba + (local.get $47) + ) + ) + ;; code offset: 0xec3 + (i32.store + ;; code offset: 0xebf + (local.get $48) + ;; code offset: 0xec1 + (local.get $43) + ) + ;; code offset: 0xecb + (local.set $49 + ;; code offset: 0xec8 + (i32.load offset=20 + ;; code offset: 0xec6 + (local.get $3) + ) + ) + ;; code offset: 0xecf + (local.set $50 + ;; code offset: 0xecd + (i32.const 1) + ) + ;; code offset: 0xed6 + (local.set $51 + ;; code offset: 0xed5 + (i32.add + ;; code offset: 0xed1 + (local.get $49) + ;; code offset: 0xed3 + (local.get $50) + ) + ) + ;; code offset: 0xedc + (i32.store offset=20 + ;; code offset: 0xed8 + (local.get $3) + ;; code offset: 0xeda + (local.get $51) + ) + ;; code offset: 0xedf + (br $label$4) + ) + ) + ;; code offset: 0xee9 + (local.set $52 + ;; code offset: 0xee6 + (i32.load offset=44 + ;; code offset: 0xee4 + (local.get $3) + ) + ) + ;; code offset: 0xeef + (i32.store offset=16 + ;; code offset: 0xeeb + (local.get $3) + ;; code offset: 0xeed + (local.get $52) + ) + ;; code offset: 0xef2 + (block $label$5 + ;; code offset: 0xef4 + (loop $label$6 + ;; code offset: 0xefb + (local.set $53 + ;; code offset: 0xef8 + (i32.load offset=32 + ;; code offset: 0xef6 + (local.get $3) + ) + ) + ;; code offset: 0xefd + (block $label$7 + (block $label$8 + ;; code offset: 0xf04 + (br_if $label$8 + ;; code offset: 0xf03 + (i32.eqz + ;; code offset: 0xf01 + (local.get $53) + ) + ) + ;; code offset: 0xf08 + (local.set $54 + ;; code offset: 0xf06 + (i32.const 0) + ) + ;; code offset: 0xf0e + (i32.store offset=20 + ;; code offset: 0xf0a + (local.get $3) + ;; code offset: 0xf0c + (local.get $54) + ) + ;; code offset: 0xf11 + (block $label$9 + ;; code offset: 0xf13 + (loop $label$10 + ;; code offset: 0xf1a + (local.set $55 + ;; code offset: 0xf17 + (i32.load offset=20 + ;; code offset: 0xf15 + (local.get $3) + ) + ) + ;; code offset: 0xf21 + (local.set $56 + ;; code offset: 0xf1e + (i32.load offset=44 + ;; code offset: 0xf1c + (local.get $3) + ) + ) + ;; code offset: 0xf25 + (local.set $57 + ;; code offset: 0xf23 + (local.get $55) + ) + ;; code offset: 0xf29 + (local.set $58 + ;; code offset: 0xf27 + (local.get $56) + ) + ;; code offset: 0xf30 + (local.set $59 + ;; code offset: 0xf2f + (i32.lt_s + ;; code offset: 0xf2b + (local.get $57) + ;; code offset: 0xf2d + (local.get $58) + ) + ) + ;; code offset: 0xf34 + (local.set $60 + ;; code offset: 0xf32 + (i32.const 1) + ) + ;; code offset: 0xf3b + (local.set $61 + ;; code offset: 0xf3a + (i32.and + ;; code offset: 0xf36 + (local.get $59) + ;; code offset: 0xf38 + (local.get $60) + ) + ) + ;; code offset: 0xf40 + (br_if $label$9 + ;; code offset: 0xf3f + (i32.eqz + ;; code offset: 0xf3d + (local.get $61) + ) + ) + ;; code offset: 0xf47 + (local.set $62 + ;; code offset: 0xf44 + (i32.load offset=28 + ;; code offset: 0xf42 + (local.get $3) + ) + ) + ;; code offset: 0xf4e + (local.set $63 + ;; code offset: 0xf4b + (i32.load offset=20 + ;; code offset: 0xf49 + (local.get $3) + ) + ) + ;; code offset: 0xf52 + (local.set $64 + ;; code offset: 0xf50 + (i32.const 2) + ) + ;; code offset: 0xf59 + (local.set $65 + ;; code offset: 0xf58 + (i32.shl + ;; code offset: 0xf54 + (local.get $63) + ;; code offset: 0xf56 + (local.get $64) + ) + ) + ;; code offset: 0xf60 + (local.set $66 + ;; code offset: 0xf5f + (i32.add + ;; code offset: 0xf5b + (local.get $62) + ;; code offset: 0xf5d + (local.get $65) + ) + ) + ;; code offset: 0xf67 + (local.set $67 + ;; code offset: 0xf64 + (i32.load + ;; code offset: 0xf62 + (local.get $66) + ) + ) + ;; code offset: 0xf6b + (local.set $68 + ;; code offset: 0xf69 + (i32.const 1) + ) + ;; code offset: 0xf72 + (local.set $69 + ;; code offset: 0xf71 + (i32.add + ;; code offset: 0xf6d + (local.get $67) + ;; code offset: 0xf6f + (local.get $68) + ) + ) + ;; code offset: 0xf78 + (i32.store + ;; code offset: 0xf74 + (local.get $3) + ;; code offset: 0xf76 + (local.get $69) + ) + ;; code offset: 0xf7e + (local.set $70 + ;; code offset: 0xf7b + (i32.const 1064) + ) + ;; code offset: 0xf86 + (drop + ;; code offset: 0xf84 + (call $printf + ;; code offset: 0xf80 + (local.get $70) + ;; code offset: 0xf82 + (local.get $3) + ) + ) + ;; code offset: 0xf8c + (local.set $71 + ;; code offset: 0xf89 + (i32.load offset=20 + ;; code offset: 0xf87 + (local.get $3) + ) + ) + ;; code offset: 0xf90 + (local.set $72 + ;; code offset: 0xf8e + (i32.const 1) + ) + ;; code offset: 0xf97 + (local.set $73 + ;; code offset: 0xf96 + (i32.add + ;; code offset: 0xf92 + (local.get $71) + ;; code offset: 0xf94 + (local.get $72) + ) + ) + ;; code offset: 0xf9d + (i32.store offset=20 + ;; code offset: 0xf99 + (local.get $3) + ;; code offset: 0xf9b + (local.get $73) + ) + ;; code offset: 0xfa0 + (br $label$10) + ) + ) + ;; code offset: 0xfa8 + (local.set $74 + ;; code offset: 0xfa5 + (i32.const 1067) + ) + ;; code offset: 0xfac + (local.set $75 + ;; code offset: 0xfaa + (i32.const 0) + ) + ;; code offset: 0xfb4 + (drop + ;; code offset: 0xfb2 + (call $printf + ;; code offset: 0xfae + (local.get $74) + ;; code offset: 0xfb0 + (local.get $75) + ) + ) + ;; code offset: 0xfba + (local.set $76 + ;; code offset: 0xfb7 + (i32.load offset=32 + ;; code offset: 0xfb5 + (local.get $3) + ) + ) + ;; code offset: 0xfbe + (local.set $77 + ;; code offset: 0xfbc + (i32.const -1) + ) + ;; code offset: 0xfc5 + (local.set $78 + ;; code offset: 0xfc4 + (i32.add + ;; code offset: 0xfc0 + (local.get $76) + ;; code offset: 0xfc2 + (local.get $77) + ) + ) + ;; code offset: 0xfcb + (i32.store offset=32 + ;; code offset: 0xfc7 + (local.get $3) + ;; code offset: 0xfc9 + (local.get $78) + ) + ;; code offset: 0xfce + (br $label$7) + ) + ;; code offset: 0xfd1 + (br $label$5) + ) + ;; code offset: 0xfd4 + (block $label$11 + ;; code offset: 0xfd6 + (loop $label$12 + ;; code offset: 0xfda + (local.set $79 + ;; code offset: 0xfd8 + (i32.const 1) + ) + ;; code offset: 0xfe1 + (local.set $80 + ;; code offset: 0xfde + (i32.load offset=16 + ;; code offset: 0xfdc + (local.get $3) + ) + ) + ;; code offset: 0xfe5 + (local.set $81 + ;; code offset: 0xfe3 + (local.get $80) + ) + ;; code offset: 0xfe9 + (local.set $82 + ;; code offset: 0xfe7 + (local.get $79) + ) + ;; code offset: 0xff0 + (local.set $83 + ;; code offset: 0xfef + (i32.gt_s + ;; code offset: 0xfeb + (local.get $81) + ;; code offset: 0xfed + (local.get $82) + ) + ) + ;; code offset: 0xff4 + (local.set $84 + ;; code offset: 0xff2 + (i32.const 1) + ) + ;; code offset: 0xffb + (local.set $85 + ;; code offset: 0xffa + (i32.and + ;; code offset: 0xff6 + (local.get $83) + ;; code offset: 0xff8 + (local.get $84) + ) + ) + ;; code offset: 0x1000 + (br_if $label$11 + ;; code offset: 0xfff + (i32.eqz + ;; code offset: 0xffd + (local.get $85) + ) + ) + ;; code offset: 0x1007 + (local.set $86 + ;; code offset: 0x1004 + (i32.load offset=16 + ;; code offset: 0x1002 + (local.get $3) + ) + ) + ;; code offset: 0x100e + (local.set $87 + ;; code offset: 0x100b + (i32.load offset=24 + ;; code offset: 0x1009 + (local.get $3) + ) + ) + ;; code offset: 0x1015 + (local.set $88 + ;; code offset: 0x1012 + (i32.load offset=16 + ;; code offset: 0x1010 + (local.get $3) + ) + ) + ;; code offset: 0x1019 + (local.set $89 + ;; code offset: 0x1017 + (i32.const 1) + ) + ;; code offset: 0x1020 + (local.set $90 + ;; code offset: 0x101f + (i32.sub + ;; code offset: 0x101b + (local.get $88) + ;; code offset: 0x101d + (local.get $89) + ) + ) + ;; code offset: 0x1024 + (local.set $91 + ;; code offset: 0x1022 + (i32.const 2) + ) + ;; code offset: 0x102b + (local.set $92 + ;; code offset: 0x102a + (i32.shl + ;; code offset: 0x1026 + (local.get $90) + ;; code offset: 0x1028 + (local.get $91) + ) + ) + ;; code offset: 0x1032 + (local.set $93 + ;; code offset: 0x1031 + (i32.add + ;; code offset: 0x102d + (local.get $87) + ;; code offset: 0x102f + (local.get $92) + ) + ) + ;; code offset: 0x1038 + (i32.store + ;; code offset: 0x1034 + (local.get $93) + ;; code offset: 0x1036 + (local.get $86) + ) + ;; code offset: 0x1040 + (local.set $94 + ;; code offset: 0x103d + (i32.load offset=16 + ;; code offset: 0x103b + (local.get $3) + ) + ) + ;; code offset: 0x1044 + (local.set $95 + ;; code offset: 0x1042 + (i32.const -1) + ) + ;; code offset: 0x104b + (local.set $96 + ;; code offset: 0x104a + (i32.add + ;; code offset: 0x1046 + (local.get $94) + ;; code offset: 0x1048 + (local.get $95) + ) + ) + ;; code offset: 0x1051 + (i32.store offset=16 + ;; code offset: 0x104d + (local.get $3) + ;; code offset: 0x104f + (local.get $96) + ) + ;; code offset: 0x1054 + (br $label$12) + ) + ) + ;; code offset: 0x1059 + (loop $label$13 + ;; code offset: 0x1060 + (local.set $97 + ;; code offset: 0x105d + (i32.load offset=16 + ;; code offset: 0x105b + (local.get $3) + ) + ) + ;; code offset: 0x1067 + (local.set $98 + ;; code offset: 0x1064 + (i32.load offset=44 + ;; code offset: 0x1062 + (local.get $3) + ) + ) + ;; code offset: 0x106b + (local.set $99 + ;; code offset: 0x1069 + (local.get $97) + ) + ;; code offset: 0x106f + (local.set $100 + ;; code offset: 0x106d + (local.get $98) + ) + ;; code offset: 0x1076 + (local.set $101 + ;; code offset: 0x1075 + (i32.eq + ;; code offset: 0x1071 + (local.get $99) + ;; code offset: 0x1073 + (local.get $100) + ) + ) + ;; code offset: 0x107a + (local.set $102 + ;; code offset: 0x1078 + (i32.const 1) + ) + ;; code offset: 0x1081 + (local.set $103 + ;; code offset: 0x1080 + (i32.and + ;; code offset: 0x107c + (local.get $101) + ;; code offset: 0x107e + (local.get $102) + ) + ) + ;; code offset: 0x1083 + (block $label$14 + ;; code offset: 0x1088 + (br_if $label$14 + ;; code offset: 0x1087 + (i32.eqz + ;; code offset: 0x1085 + (local.get $103) + ) + ) + ;; code offset: 0x108a + (br $label$5) + ) + ;; code offset: 0x108f + (local.set $104 + ;; code offset: 0x108d + (i32.const 0) + ) + ;; code offset: 0x1096 + (local.set $105 + ;; code offset: 0x1093 + (i32.load offset=28 + ;; code offset: 0x1091 + (local.get $3) + ) + ) + ;; code offset: 0x109d + (local.set $106 + ;; code offset: 0x109a + (i32.load + ;; code offset: 0x1098 + (local.get $105) + ) + ) + ;; code offset: 0x10a3 + (i32.store offset=4 + ;; code offset: 0x109f + (local.get $3) + ;; code offset: 0x10a1 + (local.get $106) + ) + ;; code offset: 0x10aa + (i32.store offset=20 + ;; code offset: 0x10a6 + (local.get $3) + ;; code offset: 0x10a8 + (local.get $104) + ) + ;; code offset: 0x10ad + (block $label$15 + ;; code offset: 0x10af + (loop $label$16 + ;; code offset: 0x10b6 + (local.set $107 + ;; code offset: 0x10b3 + (i32.load offset=20 + ;; code offset: 0x10b1 + (local.get $3) + ) + ) + ;; code offset: 0x10bd + (local.set $108 + ;; code offset: 0x10ba + (i32.load offset=16 + ;; code offset: 0x10b8 + (local.get $3) + ) + ) + ;; code offset: 0x10c1 + (local.set $109 + ;; code offset: 0x10bf + (local.get $107) + ) + ;; code offset: 0x10c5 + (local.set $110 + ;; code offset: 0x10c3 + (local.get $108) + ) + ;; code offset: 0x10cc + (local.set $111 + ;; code offset: 0x10cb + (i32.lt_s + ;; code offset: 0x10c7 + (local.get $109) + ;; code offset: 0x10c9 + (local.get $110) + ) + ) + ;; code offset: 0x10d0 + (local.set $112 + ;; code offset: 0x10ce + (i32.const 1) + ) + ;; code offset: 0x10d7 + (local.set $113 + ;; code offset: 0x10d6 + (i32.and + ;; code offset: 0x10d2 + (local.get $111) + ;; code offset: 0x10d4 + (local.get $112) + ) + ) + ;; code offset: 0x10dc + (br_if $label$15 + ;; code offset: 0x10db + (i32.eqz + ;; code offset: 0x10d9 + (local.get $113) + ) + ) + ;; code offset: 0x10e3 + (local.set $114 + ;; code offset: 0x10e0 + (i32.load offset=28 + ;; code offset: 0x10de + (local.get $3) + ) + ) + ;; code offset: 0x10ea + (local.set $115 + ;; code offset: 0x10e7 + (i32.load offset=20 + ;; code offset: 0x10e5 + (local.get $3) + ) + ) + ;; code offset: 0x10ee + (local.set $116 + ;; code offset: 0x10ec + (i32.const 1) + ) + ;; code offset: 0x10f5 + (local.set $117 + ;; code offset: 0x10f4 + (i32.add + ;; code offset: 0x10f0 + (local.get $115) + ;; code offset: 0x10f2 + (local.get $116) + ) + ) + ;; code offset: 0x10f9 + (local.set $118 + ;; code offset: 0x10f7 + (i32.const 2) + ) + ;; code offset: 0x1100 + (local.set $119 + ;; code offset: 0x10ff + (i32.shl + ;; code offset: 0x10fb + (local.get $117) + ;; code offset: 0x10fd + (local.get $118) + ) + ) + ;; code offset: 0x1107 + (local.set $120 + ;; code offset: 0x1106 + (i32.add + ;; code offset: 0x1102 + (local.get $114) + ;; code offset: 0x1104 + (local.get $119) + ) + ) + ;; code offset: 0x110e + (local.set $121 + ;; code offset: 0x110b + (i32.load + ;; code offset: 0x1109 + (local.get $120) + ) + ) + ;; code offset: 0x1115 + (local.set $122 + ;; code offset: 0x1112 + (i32.load offset=28 + ;; code offset: 0x1110 + (local.get $3) + ) + ) + ;; code offset: 0x111c + (local.set $123 + ;; code offset: 0x1119 + (i32.load offset=20 + ;; code offset: 0x1117 + (local.get $3) + ) + ) + ;; code offset: 0x1120 + (local.set $124 + ;; code offset: 0x111e + (i32.const 2) + ) + ;; code offset: 0x1127 + (local.set $125 + ;; code offset: 0x1126 + (i32.shl + ;; code offset: 0x1122 + (local.get $123) + ;; code offset: 0x1124 + (local.get $124) + ) + ) + ;; code offset: 0x112e + (local.set $126 + ;; code offset: 0x112d + (i32.add + ;; code offset: 0x1129 + (local.get $122) + ;; code offset: 0x112b + (local.get $125) + ) + ) + ;; code offset: 0x1134 + (i32.store + ;; code offset: 0x1130 + (local.get $126) + ;; code offset: 0x1132 + (local.get $121) + ) + ;; code offset: 0x113c + (local.set $127 + ;; code offset: 0x1139 + (i32.load offset=20 + ;; code offset: 0x1137 + (local.get $3) + ) + ) + ;; code offset: 0x1140 + (local.set $128 + ;; code offset: 0x113e + (i32.const 1) + ) + ;; code offset: 0x1149 + (local.set $129 + ;; code offset: 0x1148 + (i32.add + ;; code offset: 0x1143 + (local.get $127) + ;; code offset: 0x1145 + (local.get $128) + ) + ) + ;; code offset: 0x1151 + (i32.store offset=20 + ;; code offset: 0x114c + (local.get $3) + ;; code offset: 0x114e + (local.get $129) + ) + ;; code offset: 0x1154 + (br $label$16) + ) + ) + ;; code offset: 0x115b + (local.set $130 + ;; code offset: 0x1159 + (i32.const 0) + ) + ;; code offset: 0x1163 + (local.set $131 + ;; code offset: 0x1160 + (i32.load offset=4 + ;; code offset: 0x115e + (local.get $3) + ) + ) + ;; code offset: 0x116b + (local.set $132 + ;; code offset: 0x1168 + (i32.load offset=28 + ;; code offset: 0x1166 + (local.get $3) + ) + ) + ;; code offset: 0x1173 + (local.set $133 + ;; code offset: 0x1170 + (i32.load offset=20 + ;; code offset: 0x116e + (local.get $3) + ) + ) + ;; code offset: 0x1178 + (local.set $134 + ;; code offset: 0x1176 + (i32.const 2) + ) + ;; code offset: 0x1182 + (local.set $135 + ;; code offset: 0x1181 + (i32.shl + ;; code offset: 0x117b + (local.get $133) + ;; code offset: 0x117e + (local.get $134) + ) + ) + ;; code offset: 0x118c + (local.set $136 + ;; code offset: 0x118b + (i32.add + ;; code offset: 0x1185 + (local.get $132) + ;; code offset: 0x1188 + (local.get $135) + ) + ) + ;; code offset: 0x1195 + (i32.store + ;; code offset: 0x118f + (local.get $136) + ;; code offset: 0x1192 + (local.get $131) + ) + ;; code offset: 0x119d + (local.set $137 + ;; code offset: 0x119a + (i32.load offset=24 + ;; code offset: 0x1198 + (local.get $3) + ) + ) + ;; code offset: 0x11a5 + (local.set $138 + ;; code offset: 0x11a2 + (i32.load offset=16 + ;; code offset: 0x11a0 + (local.get $3) + ) + ) + ;; code offset: 0x11aa + (local.set $139 + ;; code offset: 0x11a8 + (i32.const 2) + ) + ;; code offset: 0x11b4 + (local.set $140 + ;; code offset: 0x11b3 + (i32.shl + ;; code offset: 0x11ad + (local.get $138) + ;; code offset: 0x11b0 + (local.get $139) + ) + ) + ;; code offset: 0x11be + (local.set $141 + ;; code offset: 0x11bd + (i32.add + ;; code offset: 0x11b7 + (local.get $137) + ;; code offset: 0x11ba + (local.get $140) + ) + ) + ;; code offset: 0x11c7 + (local.set $142 + ;; code offset: 0x11c4 + (i32.load + ;; code offset: 0x11c1 + (local.get $141) + ) + ) + ;; code offset: 0x11cc + (local.set $143 + ;; code offset: 0x11ca + (i32.const -1) + ) + ;; code offset: 0x11d6 + (local.set $144 + ;; code offset: 0x11d5 + (i32.add + ;; code offset: 0x11cf + (local.get $142) + ;; code offset: 0x11d2 + (local.get $143) + ) + ) + ;; code offset: 0x11df + (i32.store + ;; code offset: 0x11d9 + (local.get $141) + ;; code offset: 0x11dc + (local.get $144) + ) + ;; code offset: 0x11e5 + (local.set $145 + ;; code offset: 0x11e2 + (local.get $144) + ) + ;; code offset: 0x11eb + (local.set $146 + ;; code offset: 0x11e8 + (local.get $130) + ) + ;; code offset: 0x11f5 + (local.set $147 + ;; code offset: 0x11f4 + (i32.gt_s + ;; code offset: 0x11ee + (local.get $145) + ;; code offset: 0x11f1 + (local.get $146) + ) + ) + ;; code offset: 0x11fa + (local.set $148 + ;; code offset: 0x11f8 + (i32.const 1) + ) + ;; code offset: 0x1204 + (local.set $149 + ;; code offset: 0x1203 + (i32.and + ;; code offset: 0x11fd + (local.get $147) + ;; code offset: 0x1200 + (local.get $148) + ) + ) + ;; code offset: 0x1207 + (block $label$17 + (block $label$18 + ;; code offset: 0x120f + (br_if $label$18 + ;; code offset: 0x120e + (i32.eqz + ;; code offset: 0x120b + (local.get $149) + ) + ) + ;; code offset: 0x1211 + (br $label$17) + ) + ;; code offset: 0x1219 + (local.set $150 + ;; code offset: 0x1216 + (i32.load offset=16 + ;; code offset: 0x1214 + (local.get $3) + ) + ) + ;; code offset: 0x121e + (local.set $151 + ;; code offset: 0x121c + (i32.const 1) + ) + ;; code offset: 0x1228 + (local.set $152 + ;; code offset: 0x1227 + (i32.add + ;; code offset: 0x1221 + (local.get $150) + ;; code offset: 0x1224 + (local.get $151) + ) + ) + ;; code offset: 0x1230 + (i32.store offset=16 + ;; code offset: 0x122b + (local.get $3) + ;; code offset: 0x122d + (local.get $152) + ) + ;; code offset: 0x1233 + (br $label$13) + ) + ) + ;; code offset: 0x1237 + (br $label$6) + ) + ) + ;; code offset: 0x123e + (local.set $153 + ;; code offset: 0x123c + (i32.const 0) + ) + ;; code offset: 0x1246 + (local.set $154 + ;; code offset: 0x1243 + (i32.load offset=28 + ;; code offset: 0x1241 + (local.get $3) + ) + ) + ;; code offset: 0x124c + (call $free + ;; code offset: 0x1249 + (local.get $154) + ) + ;; code offset: 0x1253 + (local.set $155 + ;; code offset: 0x1250 + (i32.load offset=24 + ;; code offset: 0x124e + (local.get $3) + ) + ) + ;; code offset: 0x1259 + (call $free + ;; code offset: 0x1256 + (local.get $155) + ) + ;; code offset: 0x1260 + (i32.store offset=12 + ;; code offset: 0x125b + (local.get $3) + ;; code offset: 0x125d + (local.get $153) + ) + ;; code offset: 0x1263 + (block $label$19 + ;; code offset: 0x1265 + (loop $label$20 + ;; code offset: 0x1269 + (local.set $156 + ;; code offset: 0x1267 + (i32.const 0) + ) + ;; code offset: 0x1271 + (local.set $157 + ;; code offset: 0x126e + (i32.load offset=40 + ;; code offset: 0x126c + (local.get $3) + ) + ) + ;; code offset: 0x1277 + (local.set $158 + ;; code offset: 0x1274 + (local.get $157) + ) + ;; code offset: 0x127d + (local.set $159 + ;; code offset: 0x127a + (local.get $156) + ) + ;; code offset: 0x1287 + (local.set $160 + ;; code offset: 0x1286 + (i32.ne + ;; code offset: 0x1280 + (local.get $158) + ;; code offset: 0x1283 + (local.get $159) + ) + ) + ;; code offset: 0x128c + (local.set $161 + ;; code offset: 0x128a + (i32.const 1) + ) + ;; code offset: 0x1296 + (local.set $162 + ;; code offset: 0x1295 + (i32.and + ;; code offset: 0x128f + (local.get $160) + ;; code offset: 0x1292 + (local.get $161) + ) + ) + ;; code offset: 0x129d + (br_if $label$19 + ;; code offset: 0x129c + (i32.eqz + ;; code offset: 0x1299 + (local.get $162) + ) + ) + ;; code offset: 0x12a4 + (local.set $163 + ;; code offset: 0x12a1 + (i32.load offset=40 + ;; code offset: 0x129f + (local.get $3) + ) + ) + ;; code offset: 0x12ac + (local.set $164 + ;; code offset: 0x12aa + (call $fannkuch_worker\28void*\29 + ;; code offset: 0x12a7 + (local.get $163) + ) + ) + ;; code offset: 0x12b4 + (i32.store offset=8 + ;; code offset: 0x12af + (local.get $3) + ;; code offset: 0x12b1 + (local.get $164) + ) + ;; code offset: 0x12bc + (local.set $165 + ;; code offset: 0x12b9 + (i32.load offset=12 + ;; code offset: 0x12b7 + (local.get $3) + ) + ) + ;; code offset: 0x12c4 + (local.set $166 + ;; code offset: 0x12c1 + (i32.load offset=8 + ;; code offset: 0x12bf + (local.get $3) + ) + ) + ;; code offset: 0x12ca + (local.set $167 + ;; code offset: 0x12c7 + (local.get $165) + ) + ;; code offset: 0x12d0 + (local.set $168 + ;; code offset: 0x12cd + (local.get $166) + ) + ;; code offset: 0x12da + (local.set $169 + ;; code offset: 0x12d9 + (i32.lt_s + ;; code offset: 0x12d3 + (local.get $167) + ;; code offset: 0x12d6 + (local.get $168) + ) + ) + ;; code offset: 0x12df + (local.set $170 + ;; code offset: 0x12dd + (i32.const 1) + ) + ;; code offset: 0x12e9 + (local.set $171 + ;; code offset: 0x12e8 + (i32.and + ;; code offset: 0x12e2 + (local.get $169) + ;; code offset: 0x12e5 + (local.get $170) + ) + ) + ;; code offset: 0x12ec + (block $label$21 + ;; code offset: 0x12f2 + (br_if $label$21 + ;; code offset: 0x12f1 + (i32.eqz + ;; code offset: 0x12ee + (local.get $171) + ) + ) + ;; code offset: 0x12f9 + (local.set $172 + ;; code offset: 0x12f6 + (i32.load offset=8 + ;; code offset: 0x12f4 + (local.get $3) + ) + ) + ;; code offset: 0x1301 + (i32.store offset=12 + ;; code offset: 0x12fc + (local.get $3) + ;; code offset: 0x12fe + (local.get $172) + ) + ) + ;; code offset: 0x130a + (local.set $173 + ;; code offset: 0x1307 + (i32.load offset=40 + ;; code offset: 0x1305 + (local.get $3) + ) + ) + ;; code offset: 0x1312 + (i32.store offset=36 + ;; code offset: 0x130d + (local.get $3) + ;; code offset: 0x130f + (local.get $173) + ) + ;; code offset: 0x131a + (local.set $174 + ;; code offset: 0x1317 + (i32.load offset=40 + ;; code offset: 0x1315 + (local.get $3) + ) + ) + ;; code offset: 0x1323 + (local.set $175 + ;; code offset: 0x1320 + (i32.load offset=8 + ;; code offset: 0x131d + (local.get $174) + ) + ) + ;; code offset: 0x132b + (i32.store offset=40 + ;; code offset: 0x1326 + (local.get $3) + ;; code offset: 0x1328 + (local.get $175) + ) + ;; code offset: 0x1333 + (local.set $176 + ;; code offset: 0x1330 + (i32.load offset=36 + ;; code offset: 0x132e + (local.get $3) + ) + ) + ;; code offset: 0x1339 + (call $free + ;; code offset: 0x1336 + (local.get $176) + ) + ;; code offset: 0x133b + (br $label$20) + ) + ) + ;; code offset: 0x1345 + (local.set $177 + ;; code offset: 0x1342 + (i32.load offset=12 + ;; code offset: 0x1340 + (local.get $3) + ) + ) + ;; code offset: 0x134a + (local.set $178 + ;; code offset: 0x1348 + (i32.const 48) + ) + ;; code offset: 0x1353 + (local.set $179 + ;; code offset: 0x1352 + (i32.add + ;; code offset: 0x134d + (local.get $3) + ;; code offset: 0x134f + (local.get $178) + ) + ) + ;; code offset: 0x1359 + (global.set $global$0 + ;; code offset: 0x1356 + (local.get $179) + ) + ;; code offset: 0x135e + (return + ;; code offset: 0x135b + (local.get $177) + ) + ) + ;; custom section ".debug_info", size 640 + ;; custom section ".debug_ranges", size 32 + ;; custom section ".debug_abbrev", size 222 + ;; custom section ".debug_line", size 3965 + ;; custom section ".debug_str", size 409 + ;; custom section "producers", size 180 +) diff -Nru binaryen-91/test/passes/fannkuch0_dwarf.passes binaryen-99/test/passes/fannkuch0_dwarf.passes --- binaryen-91/test/passes/fannkuch0_dwarf.passes 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/fannkuch0_dwarf.passes 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +dwarfdump_roundtrip_dwarfdump_g Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/passes/fannkuch0_dwarf.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/passes/fannkuch0_dwarf.wasm differ diff -Nru binaryen-91/test/passes/fannkuch0.passes binaryen-99/test/passes/fannkuch0.passes --- binaryen-91/test/passes/fannkuch0.passes 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/fannkuch0.passes 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -dwarfdump_roundtrip_dwarfdump_g Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/passes/fannkuch0.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/passes/fannkuch0.wasm differ diff -Nru binaryen-91/test/passes/fannkuch3.bin.txt binaryen-99/test/passes/fannkuch3.bin.txt --- binaryen-91/test/passes/fannkuch3.bin.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/fannkuch3.bin.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,7003 +0,0 @@ -DWARF debug info -================ - -Contains section .debug_info (851 bytes) -Contains section .debug_loc (1073 bytes) -Contains section .debug_ranges (88 bytes) -Contains section .debug_abbrev (333 bytes) -Contains section .debug_line (1477 bytes) -Contains section .debug_str (434 bytes) - -.debug_abbrev contents: -Abbrev table for offset: 0x00000000 -[1] DW_TAG_compile_unit DW_CHILDREN_yes - DW_AT_producer DW_FORM_strp - DW_AT_language DW_FORM_data2 - DW_AT_name DW_FORM_strp - DW_AT_stmt_list DW_FORM_sec_offset - DW_AT_comp_dir DW_FORM_strp - DW_AT_low_pc DW_FORM_addr - DW_AT_ranges DW_FORM_sec_offset - -[2] DW_TAG_pointer_type DW_CHILDREN_no - DW_AT_type DW_FORM_ref4 - -[3] DW_TAG_structure_type DW_CHILDREN_yes - DW_AT_calling_convention DW_FORM_data1 - DW_AT_name DW_FORM_strp - DW_AT_byte_size DW_FORM_data1 - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - -[4] DW_TAG_member DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_type DW_FORM_ref4 - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_data_member_location DW_FORM_data1 - -[5] DW_TAG_base_type DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_encoding DW_FORM_data1 - DW_AT_byte_size DW_FORM_data1 - -[6] DW_TAG_namespace DW_CHILDREN_yes - DW_AT_name DW_FORM_strp - -[7] DW_TAG_typedef DW_CHILDREN_no - DW_AT_type DW_FORM_ref4 - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - -[8] DW_TAG_unspecified_type DW_CHILDREN_no - DW_AT_name DW_FORM_strp - -[9] DW_TAG_imported_declaration DW_CHILDREN_no - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_import DW_FORM_ref4 - -[10] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_frame_base DW_FORM_exprloc - DW_AT_GNU_all_call_sites DW_FORM_flag_present - DW_AT_linkage_name DW_FORM_strp - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - -[11] DW_TAG_formal_parameter DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[12] DW_TAG_variable DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[13] DW_TAG_variable DW_CHILDREN_no - DW_AT_location DW_FORM_sec_offset - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[14] DW_TAG_lexical_block DW_CHILDREN_yes - DW_AT_ranges DW_FORM_sec_offset - -[15] DW_TAG_GNU_call_site DW_CHILDREN_no - DW_AT_low_pc DW_FORM_addr - -[16] DW_TAG_GNU_call_site DW_CHILDREN_no - DW_AT_abstract_origin DW_FORM_ref4 - DW_AT_low_pc DW_FORM_addr - -[17] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_declaration DW_FORM_flag_present - DW_AT_external DW_FORM_flag_present - -[18] DW_TAG_formal_parameter DW_CHILDREN_no - DW_AT_type DW_FORM_ref4 - -[19] DW_TAG_pointer_type DW_CHILDREN_no - -[20] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_linkage_name DW_FORM_strp - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_inline DW_FORM_data1 - -[21] DW_TAG_label DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - -[22] DW_TAG_lexical_block DW_CHILDREN_yes - -[23] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_frame_base DW_FORM_exprloc - DW_AT_GNU_all_call_sites DW_FORM_flag_present - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - -[24] DW_TAG_inlined_subroutine DW_CHILDREN_yes - DW_AT_abstract_origin DW_FORM_ref4 - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_call_file DW_FORM_data1 - DW_AT_call_line DW_FORM_data1 - DW_AT_call_column DW_FORM_data1 - -[25] DW_TAG_formal_parameter DW_CHILDREN_no - DW_AT_abstract_origin DW_FORM_ref4 - -[26] DW_TAG_variable DW_CHILDREN_no - DW_AT_location DW_FORM_sec_offset - DW_AT_abstract_origin DW_FORM_ref4 - -[27] DW_TAG_variable DW_CHILDREN_no - DW_AT_abstract_origin DW_FORM_ref4 - -[28] DW_TAG_label DW_CHILDREN_no - DW_AT_abstract_origin DW_FORM_ref4 - DW_AT_low_pc DW_FORM_addr - - -.debug_info contents: -0x00000000: Compile Unit: length = 0x0000034f version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x00000353) - -0x0000000b: DW_TAG_compile_unit [1] * - DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)") - DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000069] = "/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) - DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x000000a9] = "/usr/local/google/home/azakai/Dev/2-binaryen") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) - DW_AT_ranges [DW_FORM_sec_offset] (0x00000040 - [0x00000006, 0x0000039d) - [0x0000039f, 0x000006e1)) - -0x00000026: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x002b => {0x0000002b} "worker_args") - -0x0000002b: DW_TAG_structure_type [3] * - DW_AT_calling_convention [DW_FORM_data1] (DW_CC_pass_by_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e3] = "worker_args") - DW_AT_byte_size [DW_FORM_data1] (0x0c) - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (20) - -0x00000034: DW_TAG_member [4] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (21) - DW_AT_data_member_location [DW_FORM_data1] (0x00) - -0x00000040: DW_TAG_member [4] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (21) - DW_AT_data_member_location [DW_FORM_data1] (0x04) - -0x0000004c: DW_TAG_member [4] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000de] = "next") - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (22) - DW_AT_data_member_location [DW_FORM_data1] (0x08) - -0x00000058: NULL - -0x00000059: DW_TAG_base_type [5] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d8] = "int") - DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) - DW_AT_byte_size [DW_FORM_data1] (0x04) - -0x00000060: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000065: DW_TAG_namespace [6] * - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ef] = "std") - -0x0000006a: DW_TAG_typedef [7] - DW_AT_type [DW_FORM_ref4] (cu + 0x0076 => {0x00000076} "decltype(nullptr)") - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000105] = "nullptr_t") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libcxx/__nullptr") - DW_AT_decl_line [DW_FORM_data1] (57) - -0x00000075: NULL - -0x00000076: DW_TAG_unspecified_type [8] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000f3] = "decltype(nullptr)") - -0x0000007b: DW_TAG_imported_declaration [9] - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libcxx/stddef.h") - DW_AT_decl_line [DW_FORM_data1] (52) - DW_AT_import [DW_FORM_ref4] (cu + 0x006a => {0x0000006a}) - -0x00000082: DW_TAG_subprogram [10] * - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000006) - DW_AT_high_pc [DW_FORM_data4] (0x00000397) - DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x1 +0, DW_OP_stack_value) - DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) - DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x00000166] = "_Z15fannkuch_workerPv") - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000017c] = "fannkuch_worker") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (26) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x0000009e: DW_TAG_formal_parameter [11] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000191] = "_arg") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (26) - DW_AT_type [DW_FORM_ref4] (cu + 0x01a7 => {0x000001a7} "*") - -0x000000a9: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000133] = "args") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (28) - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - -0x000000b4: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x00000000: - [0xffffffff, 0x00000006): - [0x00000000, 0x0000003c): DW_OP_consts +0, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014c] = "maxflips") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000000c3: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x0000001d: - [0xffffffff, 0x00000006): - [0x00000007, 0x0000003c): DW_OP_consts +0, DW_OP_stack_value - [0x00000052, 0x00000057): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x000000ec, 0x000000f5): DW_OP_consts +1, DW_OP_stack_value - [0x00000131, 0x0000013b): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000179, 0x00000186): DW_OP_consts +0, DW_OP_stack_value - [0x00000264, 0x0000026f): DW_OP_consts +0, DW_OP_stack_value - [0x00000275, 0x0000027e): DW_OP_consts +1, DW_OP_stack_value - [0x000002ba, 0x000002c4): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000302, 0x0000030f): DW_OP_consts +0, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000000d2: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000000a5: - [0xffffffff, 0x00000006): - [0x0000000e, 0x0000003c): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000000e1: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000000c3: - [0xffffffff, 0x00000006): - [0x0000001b, 0x0000003c): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000013e] = "perm1") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (29) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x000000f0: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000000e1: - [0xffffffff, 0x00000006): - [0x00000025, 0x0000003c): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000196] = "perm") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (29) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x000000ff: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000000ff: - [0xffffffff, 0x00000006): - [0x0000002f, 0x0000003c): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000144] = "count") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (29) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x0000010e: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x0000011d: - [0xffffffff, 0x00000006): - [0x000001e2, 0x000001e7): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value - [0x0000036b, 0x00000370): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014a] = "r") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000011d: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x00000149: - [0xffffffff, 0x00000006): - [0x000000cf, 0x000000e6): DW_OP_consts +0, DW_OP_stack_value - [0x000000ec, 0x000000f5): DW_OP_WASM_location 0x0 +13, DW_OP_stack_value - [0x0000015a, 0x00000162): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000264, 0x0000026f): DW_OP_consts +0, DW_OP_stack_value - [0x00000275, 0x0000027e): DW_OP_WASM_location 0x0 +10, DW_OP_stack_value - [0x000002e3, 0x000002eb): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000155] = "flips") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000012c: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000001ab: - [0xffffffff, 0x00000006): - [0x000000e2, 0x000000e6): DW_OP_WASM_location 0x0 +12, DW_OP_stack_value - [0x0000026b, 0x0000026f): DW_OP_WASM_location 0x0 +16, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019b] = "k") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000013b: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000001d7: - [0xffffffff, 0x00000006): - [0x000000fc, 0x00000100): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x00000138, 0x0000013b): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x00000285, 0x00000289): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x000002c1, 0x000002c4): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019d] = "j") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000014a: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x0000021f: - [0xffffffff, 0x00000006): - [0x00000111, 0x0000013b): DW_OP_WASM_location 0x0 +15, DW_OP_stack_value - [0x0000014c, 0x00000162): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x0000029a, 0x000002c4): DW_OP_WASM_location 0x0 +14, DW_OP_stack_value - [0x000002d5, 0x000002eb): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019f] = "tmp") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000159: DW_TAG_lexical_block [14] * - DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 - [0x00000185, 0x000001c3) - [0x000001ed, 0x000001f6) - [0x0000030e, 0x0000034c) - [0x00000376, 0x0000037f)) - -0x0000015e: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000163] = "p0") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (74) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000169: NULL - -0x0000016a: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x000000000000001f) - -0x0000016f: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000029) - -0x00000174: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000033) - -0x00000179: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000000e1) - -0x0000017e: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x000000000000038a) - -0x00000187: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000392) - -0x00000190: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x000000000000039a) - -0x00000199: NULL - -0x0000019a: DW_TAG_subprogram [17] * - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000010f] = "free") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libc/stdlib.h") - DW_AT_decl_line [DW_FORM_data1] (41) - DW_AT_declaration [DW_FORM_flag_present] (true) - DW_AT_external [DW_FORM_flag_present] (true) - -0x000001a1: DW_TAG_formal_parameter [18] - DW_AT_type [DW_FORM_ref4] (cu + 0x01a7 => {0x000001a7} "*") - -0x000001a6: NULL - -0x000001a7: DW_TAG_pointer_type [19] - -0x000001a8: DW_TAG_subprogram [20] * - DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x00000114] = "_ZL8fannkuchi") - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000122] = "fannkuch") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (87) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_inline [DW_FORM_data1] (DW_INL_inlined) - -0x000001b8: DW_TAG_formal_parameter [11] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (87) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000001c3: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000012b] = "showmax") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (90) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000001ce: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000133] = "args") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (89) - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - -0x000001d9: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000001e4: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000138] = "targs") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (89) - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - -0x000001ef: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000013e] = "perm1") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x000001fa: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000144] = "count") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x00000205: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014a] = "r") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000210: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014c] = "maxflips") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000021b: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000155] = "flips") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000226: DW_TAG_label [21] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000015b] = "cleanup") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (137) - -0x0000022d: DW_TAG_lexical_block [22] * - -0x0000022e: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000163] = "p0") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (125) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000239: NULL - -0x0000023a: NULL - -0x0000023b: DW_TAG_subprogram [23] * - DW_AT_low_pc [DW_FORM_addr] (0x000000000000039f) - DW_AT_high_pc [DW_FORM_data4] (0x00000342) - DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) - DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000018c] = "main") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (152) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x00000253: DW_TAG_formal_parameter [11] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001a3] = "argc") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (152) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000025e: DW_TAG_formal_parameter [11] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001a8] = "argv") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (152) - DW_AT_type [DW_FORM_ref4] (cu + 0x0341 => {0x00000341} "char**") - -0x00000269: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x00000267: - [0xffffffff, 0x0000039f): - [0x00000032, 0x00000037): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (153) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000278: DW_TAG_inlined_subroutine [24] * - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01a8 => {0x000001a8} "_ZL8fannkuchi") - DW_AT_low_pc [DW_FORM_addr] (0x00000000000003ed) - DW_AT_high_pc [DW_FORM_data4] (0x000002c8) - DW_AT_call_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_call_line [DW_FORM_data1] (159) - DW_AT_call_column [DW_FORM_data1] (0x29) - -0x00000288: DW_TAG_formal_parameter [25] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01b8 => {0x000001b8} "n") - -0x0000028d: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x00000285: - [0xffffffff, 0x0000039f): - [0x0000004c, 0x00000055): DW_OP_consts +30, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01c3 => {0x000001c3} "showmax") - -0x00000296: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x000002a2: - [0xffffffff, 0x0000039f): - [0x0000004c, 0x00000055): DW_OP_lit0, DW_OP_stack_value - [0x000002f8, 0x00000314): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01ce => {0x000001ce} "args") - -0x0000029f: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x000002cc: - [0xffffffff, 0x0000039f): - [0x0000004c, 0x00000055): DW_OP_consts +0, DW_OP_stack_value - [0x0000008e, 0x00000093): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000099, 0x000000c1): DW_OP_consts +0, DW_OP_stack_value - [0x000000d7, 0x000000dc): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x000000f5, 0x000000f9): DW_OP_consts +0, DW_OP_stack_value - [0x00000127, 0x0000012c): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000178, 0x00000188): DW_OP_consts +0, DW_OP_stack_value - [0x000001fa, 0x0000020c): DW_OP_consts +0, DW_OP_stack_value - [0x00000241, 0x00000255): DW_OP_consts +0, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01d9 => {0x000001d9} "i") - -0x000002a8: DW_TAG_variable [27] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01e4 => {0x000001e4} "targs") - -0x000002ad: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x00000354: - [0xffffffff, 0x0000039f): - [0x000000a8, 0x000000c1): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01ef => {0x000001ef} "perm1") - -0x000002b6: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x00000372: - [0xffffffff, 0x0000039f): - [0x000000b2, 0x000000c1): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01fa => {0x000001fa} "count") - -0x000002bf: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x00000390: - [0xffffffff, 0x0000039f): - [0x000001e6, 0x000001ed): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value - [0x000002b3, 0x000002ba): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0205 => {0x00000205} "r") - -0x000002c8: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x000003e8: - [0xffffffff, 0x0000039f): - [0x000002d6, 0x000002e1): DW_OP_consts +0, DW_OP_stack_value - [0x0000030c, 0x00000314): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0210 => {0x00000210} "maxflips") - -0x000002d1: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x00000413: - [0xffffffff, 0x0000039f): - [0x000002f1, 0x00000314): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x021b => {0x0000021b} "flips") - -0x000002da: DW_TAG_label [28] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0226 => {0x00000226} "cleanup") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000661) - -0x000002e3: DW_TAG_lexical_block [14] * - DW_AT_ranges [DW_FORM_sec_offset] (0x00000028 - [0x00000517, 0x0000055e) - [0x000005de, 0x0000062b)) - -0x000002e8: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x000003bc: - [0xffffffff, 0x0000039f): - [0x0000017f, 0x00000188): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value - [0x00000248, 0x00000255): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x022e => {0x0000022e} "p0") - -0x000002f1: NULL - -0x000002f2: NULL - -0x000002f3: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000003cf) - -0x000002f8: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000003e3) - -0x000002fd: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x000000000000040d) - -0x00000302: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000445) - -0x00000307: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x000000000000044f) - -0x0000030c: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000004be) - -0x00000311: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000004d4) - -0x00000316: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000005a1) - -0x0000031b: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000669) - -0x00000324: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000671) - -0x0000032d: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x000000000000068e) - -0x00000332: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x000000000000069f) - -0x0000033b: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000006d1) - -0x00000340: NULL - -0x00000341: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x0346 => {0x00000346} "char*") - -0x00000346: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x034b => {0x0000034b} "char") - -0x0000034b: DW_TAG_base_type [5] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001ad] = "char") - DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char) - DW_AT_byte_size [DW_FORM_data1] (0x01) - -0x00000352: NULL - -.debug_loc contents: -0x00000000: - [0xffffffff, 0x00000006): - [0x00000000, 0x0000003c): DW_OP_consts +0, DW_OP_stack_value - -0x0000001d: - [0xffffffff, 0x00000006): - [0x00000007, 0x0000003c): DW_OP_consts +0, DW_OP_stack_value - [0x00000052, 0x00000057): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x000000ec, 0x000000f5): DW_OP_consts +1, DW_OP_stack_value - [0x00000131, 0x0000013b): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000179, 0x00000186): DW_OP_consts +0, DW_OP_stack_value - [0x00000264, 0x0000026f): DW_OP_consts +0, DW_OP_stack_value - [0x00000275, 0x0000027e): DW_OP_consts +1, DW_OP_stack_value - [0x000002ba, 0x000002c4): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000302, 0x0000030f): DW_OP_consts +0, DW_OP_stack_value - -0x000000a5: - [0xffffffff, 0x00000006): - [0x0000000e, 0x0000003c): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value - -0x000000c3: - [0xffffffff, 0x00000006): - [0x0000001b, 0x0000003c): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value - -0x000000e1: - [0xffffffff, 0x00000006): - [0x00000025, 0x0000003c): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value - -0x000000ff: - [0xffffffff, 0x00000006): - [0x0000002f, 0x0000003c): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value - -0x0000011d: - [0xffffffff, 0x00000006): - [0x000001e2, 0x000001e7): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value - [0x0000036b, 0x00000370): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value - -0x00000149: - [0xffffffff, 0x00000006): - [0x000000cf, 0x000000e6): DW_OP_consts +0, DW_OP_stack_value - [0x000000ec, 0x000000f5): DW_OP_WASM_location 0x0 +13, DW_OP_stack_value - [0x0000015a, 0x00000162): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000264, 0x0000026f): DW_OP_consts +0, DW_OP_stack_value - [0x00000275, 0x0000027e): DW_OP_WASM_location 0x0 +10, DW_OP_stack_value - [0x000002e3, 0x000002eb): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - -0x000001ab: - [0xffffffff, 0x00000006): - [0x000000e2, 0x000000e6): DW_OP_WASM_location 0x0 +12, DW_OP_stack_value - [0x0000026b, 0x0000026f): DW_OP_WASM_location 0x0 +16, DW_OP_stack_value - -0x000001d7: - [0xffffffff, 0x00000006): - [0x000000fc, 0x00000100): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x00000138, 0x0000013b): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x00000285, 0x00000289): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x000002c1, 0x000002c4): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - -0x0000021f: - [0xffffffff, 0x00000006): - [0x00000111, 0x0000013b): DW_OP_WASM_location 0x0 +15, DW_OP_stack_value - [0x0000014c, 0x00000162): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x0000029a, 0x000002c4): DW_OP_WASM_location 0x0 +14, DW_OP_stack_value - [0x000002d5, 0x000002eb): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - -0x00000267: - [0xffffffff, 0x0000039f): - [0x00000032, 0x00000037): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value - -0x00000285: - [0xffffffff, 0x0000039f): - [0x0000004c, 0x00000055): DW_OP_consts +30, DW_OP_stack_value - -0x000002a2: - [0xffffffff, 0x0000039f): - [0x0000004c, 0x00000055): DW_OP_lit0, DW_OP_stack_value - [0x000002f8, 0x00000314): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value - -0x000002cc: - [0xffffffff, 0x0000039f): - [0x0000004c, 0x00000055): DW_OP_consts +0, DW_OP_stack_value - [0x0000008e, 0x00000093): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000099, 0x000000c1): DW_OP_consts +0, DW_OP_stack_value - [0x000000d7, 0x000000dc): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x000000f5, 0x000000f9): DW_OP_consts +0, DW_OP_stack_value - [0x00000127, 0x0000012c): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000178, 0x00000188): DW_OP_consts +0, DW_OP_stack_value - [0x000001fa, 0x0000020c): DW_OP_consts +0, DW_OP_stack_value - [0x00000241, 0x00000255): DW_OP_consts +0, DW_OP_stack_value - -0x00000354: - [0xffffffff, 0x0000039f): - [0x000000a8, 0x000000c1): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - -0x00000372: - [0xffffffff, 0x0000039f): - [0x000000b2, 0x000000c1): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value - -0x00000390: - [0xffffffff, 0x0000039f): - [0x000001e6, 0x000001ed): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value - [0x000002b3, 0x000002ba): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value - -0x000003bc: - [0xffffffff, 0x0000039f): - [0x0000017f, 0x00000188): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value - [0x00000248, 0x00000255): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value - -0x000003e8: - [0xffffffff, 0x0000039f): - [0x000002d6, 0x000002e1): DW_OP_consts +0, DW_OP_stack_value - [0x0000030c, 0x00000314): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - -0x00000413: - [0xffffffff, 0x0000039f): - [0x000002f1, 0x00000314): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - -.debug_line contents: -debug_line[0x00000000] -Line table prologue: - total_length: 0x000005c1 - version: 4 - prologue_length: 0x000000dd - min_inst_length: 1 -max_ops_per_inst: 1 - default_is_stmt: 1 - line_base: -5 - line_range: 14 - opcode_base: 13 -standard_opcode_lengths[DW_LNS_copy] = 0 -standard_opcode_lengths[DW_LNS_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_advance_line] = 1 -standard_opcode_lengths[DW_LNS_set_file] = 1 -standard_opcode_lengths[DW_LNS_set_column] = 1 -standard_opcode_lengths[DW_LNS_negate_stmt] = 0 -standard_opcode_lengths[DW_LNS_set_basic_block] = 0 -standard_opcode_lengths[DW_LNS_const_add_pc] = 0 -standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 -standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 -standard_opcode_lengths[DW_LNS_set_isa] = 1 -include_directories[ 1] = "/usr/local/google/home/azakai/Dev" -file_names[ 1]: - name: "emscripten/tests/fannkuch.cpp" - dir_index: 1 - mod_time: 0x00000000 - length: 0x00000000 -file_names[ 2]: - name: "emscripten/system/include/libcxx/__nullptr" - dir_index: 1 - mod_time: 0x00000000 - length: 0x00000000 -file_names[ 3]: - name: "emscripten/system/include/libcxx/stddef.h" - dir_index: 1 - mod_time: 0x00000000 - length: 0x00000000 -file_names[ 4]: - name: "emscripten/system/include/libc/stdlib.h" - dir_index: 1 - mod_time: 0x00000000 - length: 0x00000000 -0x000000e7: 00 DW_LNE_set_address (0x0000000000000006) -0x000000ee: 03 DW_LNS_advance_line (27) -0x000000f0: 01 DW_LNS_copy - 0x0000000000000006 27 0 1 0 0 is_stmt - - -0x000000f1: 05 DW_LNS_set_column (14) -0x000000f3: 0a DW_LNS_set_prologue_end -0x000000f4: 7a address += 7, line += 6 - 0x000000000000000d 33 14 1 0 0 is_stmt prologue_end - -0x000000f5: 06 DW_LNS_negate_stmt -0x000000f6: 03 DW_LNS_advance_line (0) -0x000000f8: 58 address += 5, line += 0 - 0x0000000000000012 0 14 1 0 0 - -0x000000f9: 05 DW_LNS_set_column (27) -0x000000fb: 06 DW_LNS_negate_stmt -0x000000fc: 03 DW_LNS_advance_line (34) -0x000000fe: 4a address += 4, line += 0 - 0x0000000000000016 34 27 1 0 0 is_stmt - -0x000000ff: 05 DW_LNS_set_column (18) -0x00000101: 06 DW_LNS_negate_stmt -0x00000102: 20 address += 1, line += 0 - 0x0000000000000017 34 18 1 0 0 - -0x00000103: 05 DW_LNS_set_column (17) -0x00000105: 06 DW_LNS_negate_stmt -0x00000106: 9f address += 10, line += 1 - 0x0000000000000021 35 17 1 0 0 is_stmt - -0x00000107: 05 DW_LNS_set_column (18) -0x00000109: 9f address += 10, line += 1 - 0x000000000000002b 36 18 1 0 0 is_stmt - -0x0000010a: 06 DW_LNS_negate_stmt -0x0000010b: 03 DW_LNS_advance_line (0) -0x0000010d: 9e address += 10, line += 0 - 0x0000000000000035 0 18 1 0 0 - -0x0000010e: 06 DW_LNS_negate_stmt -0x0000010f: 03 DW_LNS_advance_line (37) -0x00000111: 66 address += 6, line += 0 - 0x000000000000003b 37 18 1 0 0 is_stmt - -0x00000112: 05 DW_LNS_set_column (4) -0x00000114: 06 DW_LNS_negate_stmt -0x00000115: 58 address += 5, line += 0 - 0x0000000000000040 37 4 1 0 0 - -0x00000116: 03 DW_LNS_advance_line (0) -0x00000118: 2e address += 2, line += 0 - 0x0000000000000042 0 4 1 0 0 - -0x00000119: 05 DW_LNS_set_column (7) -0x0000011b: 06 DW_LNS_negate_stmt -0x0000011c: 03 DW_LNS_advance_line (38) -0x0000011e: 2e address += 2, line += 0 - 0x0000000000000044 38 7 1 0 0 is_stmt - -0x0000011f: 05 DW_LNS_set_column (16) -0x00000121: 06 DW_LNS_negate_stmt -0x00000122: 82 address += 8, line += 0 - 0x000000000000004c 38 16 1 0 0 - -0x00000123: 05 DW_LNS_set_column (24) -0x00000125: 06 DW_LNS_negate_stmt -0x00000126: 57 address += 5, line += -1 - 0x0000000000000051 37 24 1 0 0 is_stmt - -0x00000127: 05 DW_LNS_set_column (18) -0x00000129: 06 DW_LNS_negate_stmt -0x0000012a: 58 address += 5, line += 0 - 0x0000000000000056 37 18 1 0 0 - -0x0000012b: 05 DW_LNS_set_column (4) -0x0000012d: 58 address += 5, line += 0 - 0x000000000000005b 37 4 1 0 0 - -0x0000012e: 06 DW_LNS_negate_stmt -0x0000012f: 3e address += 3, line += 2 - 0x000000000000005e 39 4 1 0 0 is_stmt - -0x00000130: 05 DW_LNS_set_column (16) -0x00000132: 06 DW_LNS_negate_stmt -0x00000133: 2e address += 2, line += 0 - 0x0000000000000060 39 16 1 0 0 - -0x00000134: 05 DW_LNS_set_column (4) -0x00000136: 90 address += 9, line += 0 - 0x0000000000000069 39 4 1 0 0 - -0x00000137: 05 DW_LNS_set_column (23) -0x00000139: 2e address += 2, line += 0 - 0x000000000000006b 39 23 1 0 0 - -0x0000013a: 05 DW_LNS_set_column (19) -0x0000013c: 58 address += 5, line += 0 - 0x0000000000000070 39 19 1 0 0 - -0x0000013d: 05 DW_LNS_set_column (4) -0x0000013f: 06 DW_LNS_negate_stmt -0x00000140: 59 address += 5, line += 1 - 0x0000000000000075 40 4 1 0 0 is_stmt - -0x00000141: 05 DW_LNS_set_column (17) -0x00000143: 06 DW_LNS_negate_stmt -0x00000144: 82 address += 8, line += 0 - 0x000000000000007d 40 17 1 0 0 - -0x00000145: 05 DW_LNS_set_column (18) -0x00000147: 06 DW_LNS_negate_stmt -0x00000148: a9 address += 11, line += -3 - 0x0000000000000088 37 18 1 0 0 is_stmt - -0x00000149: 05 DW_LNS_set_column (4) -0x0000014b: 5e address += 5, line += 6 - 0x000000000000008d 43 4 1 0 0 is_stmt - -0x0000014c: 06 DW_LNS_negate_stmt -0x0000014d: 03 DW_LNS_advance_line (0) -0x0000014f: 2e address += 2, line += 0 - 0x000000000000008f 0 4 1 0 0 - -0x00000150: 05 DW_LNS_set_column (16) -0x00000152: 06 DW_LNS_negate_stmt -0x00000153: 03 DW_LNS_advance_line (44) -0x00000155: 4a address += 4, line += 0 - 0x0000000000000093 44 16 1 0 0 is_stmt - -0x00000156: 06 DW_LNS_negate_stmt -0x00000157: 03 DW_LNS_advance_line (0) -0x00000159: 74 address += 7, line += 0 - 0x000000000000009a 0 16 1 0 0 - -0x0000015a: 05 DW_LNS_set_column (10) -0x0000015c: 06 DW_LNS_negate_stmt -0x0000015d: 03 DW_LNS_advance_line (45) -0x0000015f: 2e address += 2, line += 0 - 0x000000000000009c 45 10 1 0 0 is_stmt - -0x00000160: 05 DW_LNS_set_column (18) -0x00000162: 06 DW_LNS_negate_stmt -0x00000163: 2e address += 2, line += 0 - 0x000000000000009e 45 18 1 0 0 - -0x00000164: 05 DW_LNS_set_column (10) -0x00000166: 90 address += 9, line += 0 - 0x00000000000000a7 45 10 1 0 0 - -0x00000167: 05 DW_LNS_set_column (23) -0x00000169: 2e address += 2, line += 0 - 0x00000000000000a9 45 23 1 0 0 - -0x0000016a: 05 DW_LNS_set_column (16) -0x0000016c: 06 DW_LNS_negate_stmt -0x0000016d: 57 address += 5, line += -1 - 0x00000000000000ae 44 16 1 0 0 is_stmt - -0x0000016e: 05 DW_LNS_set_column (0) -0x00000170: 06 DW_LNS_negate_stmt -0x00000171: 03 DW_LNS_advance_line (0) -0x00000173: 74 address += 7, line += 0 - 0x00000000000000b5 0 0 1 0 0 - -0x00000174: 05 DW_LNS_set_column (7) -0x00000176: 03 DW_LNS_advance_line (44) -0x00000178: 4a address += 4, line += 0 - 0x00000000000000b9 44 7 1 0 0 - -0x00000179: 05 DW_LNS_set_column (11) -0x0000017b: 06 DW_LNS_negate_stmt -0x0000017c: 68 address += 6, line += 2 - 0x00000000000000bf 46 11 1 0 0 is_stmt - -0x0000017d: 05 DW_LNS_set_column (28) -0x0000017f: 06 DW_LNS_negate_stmt -0x00000180: ba address += 12, line += 0 - 0x00000000000000cb 46 28 1 0 0 - -0x00000181: 05 DW_LNS_set_column (41) -0x00000183: 58 address += 5, line += 0 - 0x00000000000000d0 46 41 1 0 0 - -0x00000184: 05 DW_LNS_set_column (21) -0x00000186: 06 DW_LNS_negate_stmt -0x00000187: 5a address += 5, line += 2 - 0x00000000000000d5 48 21 1 0 0 is_stmt - -0x00000188: 05 DW_LNS_set_column (14) -0x0000018a: bc address += 12, line += 2 - 0x00000000000000e1 50 14 1 0 0 is_stmt - -0x0000018b: 06 DW_LNS_negate_stmt -0x0000018c: 03 DW_LNS_advance_line (0) -0x0000018e: 74 address += 7, line += 0 - 0x00000000000000e8 0 14 1 0 0 - -0x0000018f: 05 DW_LNS_set_column (38) -0x00000191: 06 DW_LNS_negate_stmt -0x00000192: 03 DW_LNS_advance_line (52) -0x00000194: ba address += 12, line += 0 - 0x00000000000000f4 52 38 1 0 0 is_stmt - -0x00000195: 05 DW_LNS_set_column (0) -0x00000197: 06 DW_LNS_negate_stmt -0x00000198: 03 DW_LNS_advance_line (0) -0x0000019a: 74 address += 7, line += 0 - 0x00000000000000fb 0 0 1 0 0 - -0x0000019b: 05 DW_LNS_set_column (22) -0x0000019d: 06 DW_LNS_negate_stmt -0x0000019e: 03 DW_LNS_advance_line (53) -0x000001a0: c8 address += 13, line += 0 - 0x0000000000000108 53 22 1 0 0 is_stmt - -0x000001a1: 05 DW_LNS_set_column (24) -0x000001a3: e5 address += 15, line += 1 - 0x0000000000000117 54 24 1 0 0 is_stmt - -0x000001a4: 05 DW_LNS_set_column (26) -0x000001a6: 06 DW_LNS_negate_stmt -0x000001a7: 2e address += 2, line += 0 - 0x0000000000000119 54 26 1 0 0 - -0x000001a8: 05 DW_LNS_set_column (24) -0x000001aa: c8 address += 13, line += 0 - 0x0000000000000126 54 24 1 0 0 - -0x000001ab: 06 DW_LNS_negate_stmt -0x000001ac: 3d address += 3, line += 1 - 0x0000000000000129 55 24 1 0 0 is_stmt - -0x000001ad: 05 DW_LNS_set_column (44) -0x000001af: 71 address += 7, line += -3 - 0x0000000000000130 52 44 1 0 0 is_stmt - -0x000001b0: 06 DW_LNS_negate_stmt -0x000001b1: 03 DW_LNS_advance_line (0) -0x000001b3: 58 address += 5, line += 0 - 0x0000000000000135 0 44 1 0 0 - -0x000001b4: 05 DW_LNS_set_column (38) -0x000001b6: 03 DW_LNS_advance_line (52) -0x000001b8: 74 address += 7, line += 0 - 0x000000000000013c 52 38 1 0 0 - -0x000001b9: 05 DW_LNS_set_column (13) -0x000001bb: 3c address += 3, line += 0 - 0x000000000000013f 52 13 1 0 0 - -0x000001bc: 05 DW_LNS_set_column (19) -0x000001be: 06 DW_LNS_negate_stmt -0x000001bf: 50 address += 4, line += 6 - 0x0000000000000143 58 19 1 0 0 is_stmt - -0x000001c0: 05 DW_LNS_set_column (21) -0x000001c2: e5 address += 15, line += 1 - 0x0000000000000152 59 21 1 0 0 is_stmt - -0x000001c3: 05 DW_LNS_set_column (18) -0x000001c5: 72 address += 7, line += -2 - 0x0000000000000159 57 18 1 0 0 is_stmt - -0x000001c6: 05 DW_LNS_set_column (0) -0x000001c8: 06 DW_LNS_negate_stmt -0x000001c9: 03 DW_LNS_advance_line (0) -0x000001cb: 74 address += 7, line += 0 - 0x0000000000000160 0 0 1 0 0 - -0x000001cc: 05 DW_LNS_set_column (14) -0x000001ce: 06 DW_LNS_negate_stmt -0x000001cf: 03 DW_LNS_advance_line (62) -0x000001d1: 90 address += 9, line += 0 - 0x0000000000000169 62 14 1 0 0 is_stmt - -0x000001d2: 05 DW_LNS_set_column (23) -0x000001d4: 06 DW_LNS_negate_stmt -0x000001d5: 4a address += 4, line += 0 - 0x000000000000016d 62 23 1 0 0 - -0x000001d6: 05 DW_LNS_set_column (14) -0x000001d8: 58 address += 5, line += 0 - 0x0000000000000172 62 14 1 0 0 - -0x000001d9: 03 DW_LNS_advance_line (0) -0x000001db: 3c address += 3, line += 0 - 0x0000000000000175 0 14 1 0 0 - -0x000001dc: 05 DW_LNS_set_column (16) -0x000001de: 06 DW_LNS_negate_stmt -0x000001df: 03 DW_LNS_advance_line (66) -0x000001e2: 20 address += 1, line += 0 - 0x0000000000000176 66 16 1 0 0 is_stmt - -0x000001e3: 06 DW_LNS_negate_stmt -0x000001e4: 03 DW_LNS_advance_line (0) -0x000001e7: 74 address += 7, line += 0 - 0x000000000000017d 0 16 1 0 0 - -0x000001e8: 05 DW_LNS_set_column (27) -0x000001ea: 06 DW_LNS_negate_stmt -0x000001eb: 03 DW_LNS_advance_line (75) -0x000001ee: 82 address += 8, line += 0 - 0x0000000000000185 75 27 1 0 0 is_stmt - -0x000001ef: 06 DW_LNS_negate_stmt -0x000001f0: 03 DW_LNS_advance_line (0) -0x000001f3: 74 address += 7, line += 0 - 0x000000000000018c 0 27 1 0 0 - -0x000001f4: 05 DW_LNS_set_column (16) -0x000001f6: 06 DW_LNS_negate_stmt -0x000001f7: 03 DW_LNS_advance_line (76) -0x000001fa: 2e address += 2, line += 0 - 0x000000000000018e 76 16 1 0 0 is_stmt - -0x000001fb: 05 DW_LNS_set_column (27) -0x000001fd: 06 DW_LNS_negate_stmt -0x000001fe: 82 address += 8, line += 0 - 0x0000000000000196 76 27 1 0 0 - -0x000001ff: 05 DW_LNS_set_column (35) -0x00000201: 2e address += 2, line += 0 - 0x0000000000000198 76 35 1 0 0 - -0x00000202: 05 DW_LNS_set_column (27) -0x00000204: 90 address += 9, line += 0 - 0x00000000000001a1 76 27 1 0 0 - -0x00000205: 05 DW_LNS_set_column (25) -0x00000207: 58 address += 5, line += 0 - 0x00000000000001a6 76 25 1 0 0 - -0x00000208: 05 DW_LNS_set_column (27) -0x0000020a: 06 DW_LNS_negate_stmt -0x0000020b: 3b address += 3, line += -1 - 0x00000000000001a9 75 27 1 0 0 is_stmt - -0x0000020c: 05 DW_LNS_set_column (13) -0x0000020e: 06 DW_LNS_negate_stmt -0x0000020f: 58 address += 5, line += 0 - 0x00000000000001ae 75 13 1 0 0 - -0x00000210: 05 DW_LNS_set_column (0) -0x00000212: 03 DW_LNS_advance_line (0) -0x00000215: 3c address += 3, line += 0 - 0x00000000000001b1 0 0 1 0 0 - -0x00000216: 05 DW_LNS_set_column (13) -0x00000218: 06 DW_LNS_negate_stmt -0x00000219: 03 DW_LNS_advance_line (77) -0x0000021c: 58 address += 5, line += 0 - 0x00000000000001b6 77 13 1 0 0 is_stmt - -0x0000021d: 05 DW_LNS_set_column (22) -0x0000021f: 06 DW_LNS_negate_stmt -0x00000220: 82 address += 8, line += 0 - 0x00000000000001be 77 22 1 0 0 - -0x00000221: 05 DW_LNS_set_column (16) -0x00000223: 06 DW_LNS_negate_stmt -0x00000224: 5a address += 5, line += 2 - 0x00000000000001c3 79 16 1 0 0 is_stmt - -0x00000225: 05 DW_LNS_set_column (14) -0x00000227: 06 DW_LNS_negate_stmt -0x00000228: 82 address += 8, line += 0 - 0x00000000000001cb 79 14 1 0 0 - -0x00000229: 05 DW_LNS_set_column (25) -0x0000022b: e4 address += 15, line += 0 - 0x00000000000001da 79 25 1 0 0 - -0x0000022c: 05 DW_LNS_set_column (11) -0x0000022e: 06 DW_LNS_negate_stmt -0x0000022f: 76 address += 7, line += 2 - 0x00000000000001e1 81 11 1 0 0 is_stmt - -0x00000230: 05 DW_LNS_set_column (16) -0x00000232: 03 DW_LNS_advance_line (66) -0x00000234: 58 address += 5, line += 0 - 0x00000000000001e6 66 16 1 0 0 is_stmt - -0x00000235: 05 DW_LNS_set_column (22) -0x00000237: 7c address += 7, line += 8 - 0x00000000000001ed 74 22 1 0 0 is_stmt - -0x00000238: 05 DW_LNS_set_column (4) -0x0000023a: 03 DW_LNS_advance_line (37) -0x0000023c: 90 address += 9, line += 0 - 0x00000000000001f6 37 4 1 0 0 is_stmt - -0x0000023d: 3e address += 3, line += 2 - 0x00000000000001f9 39 4 1 0 0 is_stmt - -0x0000023e: 05 DW_LNS_set_column (16) -0x00000240: 06 DW_LNS_negate_stmt -0x00000241: 2e address += 2, line += 0 - 0x00000000000001fb 39 16 1 0 0 - -0x00000242: 05 DW_LNS_set_column (4) -0x00000244: 90 address += 9, line += 0 - 0x0000000000000204 39 4 1 0 0 - -0x00000245: 05 DW_LNS_set_column (23) -0x00000247: 2e address += 2, line += 0 - 0x0000000000000206 39 23 1 0 0 - -0x00000248: 05 DW_LNS_set_column (19) -0x0000024a: 58 address += 5, line += 0 - 0x000000000000020b 39 19 1 0 0 - -0x0000024b: 05 DW_LNS_set_column (4) -0x0000024d: 06 DW_LNS_negate_stmt -0x0000024e: 59 address += 5, line += 1 - 0x0000000000000210 40 4 1 0 0 is_stmt - -0x0000024f: 05 DW_LNS_set_column (17) -0x00000251: 06 DW_LNS_negate_stmt -0x00000252: 82 address += 8, line += 0 - 0x0000000000000218 40 17 1 0 0 - -0x00000253: 03 DW_LNS_advance_line (0) -0x00000255: 74 address += 7, line += 0 - 0x000000000000021f 0 17 1 0 0 - -0x00000256: 05 DW_LNS_set_column (16) -0x00000258: 06 DW_LNS_negate_stmt -0x00000259: 03 DW_LNS_advance_line (44) -0x0000025b: 90 address += 9, line += 0 - 0x0000000000000228 44 16 1 0 0 is_stmt - -0x0000025c: 06 DW_LNS_negate_stmt -0x0000025d: 03 DW_LNS_advance_line (0) -0x0000025f: 74 address += 7, line += 0 - 0x000000000000022f 0 16 1 0 0 - -0x00000260: 05 DW_LNS_set_column (10) -0x00000262: 06 DW_LNS_negate_stmt -0x00000263: 03 DW_LNS_advance_line (45) -0x00000265: 2e address += 2, line += 0 - 0x0000000000000231 45 10 1 0 0 is_stmt - -0x00000266: 05 DW_LNS_set_column (18) -0x00000268: 06 DW_LNS_negate_stmt -0x00000269: 2e address += 2, line += 0 - 0x0000000000000233 45 18 1 0 0 - -0x0000026a: 05 DW_LNS_set_column (10) -0x0000026c: 90 address += 9, line += 0 - 0x000000000000023c 45 10 1 0 0 - -0x0000026d: 05 DW_LNS_set_column (23) -0x0000026f: 2e address += 2, line += 0 - 0x000000000000023e 45 23 1 0 0 - -0x00000270: 05 DW_LNS_set_column (16) -0x00000272: 06 DW_LNS_negate_stmt -0x00000273: 57 address += 5, line += -1 - 0x0000000000000243 44 16 1 0 0 is_stmt - -0x00000274: 06 DW_LNS_negate_stmt -0x00000275: 03 DW_LNS_advance_line (0) -0x00000277: e4 address += 15, line += 0 - 0x0000000000000252 0 16 1 0 0 - -0x00000278: 05 DW_LNS_set_column (11) -0x0000027a: 06 DW_LNS_negate_stmt -0x0000027b: 03 DW_LNS_advance_line (46) -0x0000027d: 2e address += 2, line += 0 - 0x0000000000000254 46 11 1 0 0 is_stmt - -0x0000027e: 05 DW_LNS_set_column (28) -0x00000280: 06 DW_LNS_negate_stmt -0x00000281: ba address += 12, line += 0 - 0x0000000000000260 46 28 1 0 0 - -0x00000282: 05 DW_LNS_set_column (41) -0x00000284: 58 address += 5, line += 0 - 0x0000000000000265 46 41 1 0 0 - -0x00000285: 05 DW_LNS_set_column (14) -0x00000287: 06 DW_LNS_negate_stmt -0x00000288: 5c address += 5, line += 4 - 0x000000000000026a 50 14 1 0 0 is_stmt - -0x00000289: 06 DW_LNS_negate_stmt -0x0000028a: 03 DW_LNS_advance_line (0) -0x0000028c: 74 address += 7, line += 0 - 0x0000000000000271 0 14 1 0 0 - -0x0000028d: 05 DW_LNS_set_column (38) -0x0000028f: 06 DW_LNS_negate_stmt -0x00000290: 03 DW_LNS_advance_line (52) -0x00000292: ba address += 12, line += 0 - 0x000000000000027d 52 38 1 0 0 is_stmt - -0x00000293: 05 DW_LNS_set_column (0) -0x00000295: 06 DW_LNS_negate_stmt -0x00000296: 03 DW_LNS_advance_line (0) -0x00000298: 74 address += 7, line += 0 - 0x0000000000000284 0 0 1 0 0 - -0x00000299: 05 DW_LNS_set_column (22) -0x0000029b: 06 DW_LNS_negate_stmt -0x0000029c: 03 DW_LNS_advance_line (53) -0x0000029e: c8 address += 13, line += 0 - 0x0000000000000291 53 22 1 0 0 is_stmt - -0x0000029f: 05 DW_LNS_set_column (24) -0x000002a1: e5 address += 15, line += 1 - 0x00000000000002a0 54 24 1 0 0 is_stmt - -0x000002a2: 05 DW_LNS_set_column (26) -0x000002a4: 06 DW_LNS_negate_stmt -0x000002a5: 2e address += 2, line += 0 - 0x00000000000002a2 54 26 1 0 0 - -0x000002a6: 05 DW_LNS_set_column (24) -0x000002a8: c8 address += 13, line += 0 - 0x00000000000002af 54 24 1 0 0 - -0x000002a9: 06 DW_LNS_negate_stmt -0x000002aa: 3d address += 3, line += 1 - 0x00000000000002b2 55 24 1 0 0 is_stmt - -0x000002ab: 05 DW_LNS_set_column (44) -0x000002ad: 71 address += 7, line += -3 - 0x00000000000002b9 52 44 1 0 0 is_stmt - -0x000002ae: 06 DW_LNS_negate_stmt -0x000002af: 03 DW_LNS_advance_line (0) -0x000002b1: 58 address += 5, line += 0 - 0x00000000000002be 0 44 1 0 0 - -0x000002b2: 05 DW_LNS_set_column (38) -0x000002b4: 03 DW_LNS_advance_line (52) -0x000002b6: 74 address += 7, line += 0 - 0x00000000000002c5 52 38 1 0 0 - -0x000002b7: 03 DW_LNS_advance_line (0) -0x000002b9: 58 address += 5, line += 0 - 0x00000000000002ca 0 38 1 0 0 - -0x000002ba: 05 DW_LNS_set_column (19) -0x000002bc: 06 DW_LNS_negate_stmt -0x000002bd: 03 DW_LNS_advance_line (58) -0x000002bf: 2e address += 2, line += 0 - 0x00000000000002cc 58 19 1 0 0 is_stmt - -0x000002c0: 05 DW_LNS_set_column (21) -0x000002c2: e5 address += 15, line += 1 - 0x00000000000002db 59 21 1 0 0 is_stmt - -0x000002c3: 05 DW_LNS_set_column (18) -0x000002c5: 72 address += 7, line += -2 - 0x00000000000002e2 57 18 1 0 0 is_stmt - -0x000002c6: 05 DW_LNS_set_column (0) -0x000002c8: 06 DW_LNS_negate_stmt -0x000002c9: 03 DW_LNS_advance_line (0) -0x000002cb: 74 address += 7, line += 0 - 0x00000000000002e9 0 0 1 0 0 - -0x000002cc: 05 DW_LNS_set_column (14) -0x000002ce: 06 DW_LNS_negate_stmt -0x000002cf: 03 DW_LNS_advance_line (62) -0x000002d1: 90 address += 9, line += 0 - 0x00000000000002f2 62 14 1 0 0 is_stmt - -0x000002d2: 05 DW_LNS_set_column (23) -0x000002d4: 06 DW_LNS_negate_stmt -0x000002d5: 4a address += 4, line += 0 - 0x00000000000002f6 62 23 1 0 0 - -0x000002d6: 05 DW_LNS_set_column (14) -0x000002d8: 58 address += 5, line += 0 - 0x00000000000002fb 62 14 1 0 0 - -0x000002d9: 03 DW_LNS_advance_line (0) -0x000002db: 3c address += 3, line += 0 - 0x00000000000002fe 0 14 1 0 0 - -0x000002dc: 05 DW_LNS_set_column (16) -0x000002de: 06 DW_LNS_negate_stmt -0x000002df: 03 DW_LNS_advance_line (66) -0x000002e2: 20 address += 1, line += 0 - 0x00000000000002ff 66 16 1 0 0 is_stmt - -0x000002e3: 06 DW_LNS_negate_stmt -0x000002e4: 03 DW_LNS_advance_line (0) -0x000002e7: 74 address += 7, line += 0 - 0x0000000000000306 0 16 1 0 0 - -0x000002e8: 05 DW_LNS_set_column (27) -0x000002ea: 06 DW_LNS_negate_stmt -0x000002eb: 03 DW_LNS_advance_line (75) -0x000002ee: 82 address += 8, line += 0 - 0x000000000000030e 75 27 1 0 0 is_stmt - -0x000002ef: 06 DW_LNS_negate_stmt -0x000002f0: 03 DW_LNS_advance_line (0) -0x000002f3: 74 address += 7, line += 0 - 0x0000000000000315 0 27 1 0 0 - -0x000002f4: 05 DW_LNS_set_column (16) -0x000002f6: 06 DW_LNS_negate_stmt -0x000002f7: 03 DW_LNS_advance_line (76) -0x000002fa: 2e address += 2, line += 0 - 0x0000000000000317 76 16 1 0 0 is_stmt - -0x000002fb: 05 DW_LNS_set_column (27) -0x000002fd: 06 DW_LNS_negate_stmt -0x000002fe: 82 address += 8, line += 0 - 0x000000000000031f 76 27 1 0 0 - -0x000002ff: 05 DW_LNS_set_column (35) -0x00000301: 2e address += 2, line += 0 - 0x0000000000000321 76 35 1 0 0 - -0x00000302: 05 DW_LNS_set_column (27) -0x00000304: 90 address += 9, line += 0 - 0x000000000000032a 76 27 1 0 0 - -0x00000305: 05 DW_LNS_set_column (25) -0x00000307: 58 address += 5, line += 0 - 0x000000000000032f 76 25 1 0 0 - -0x00000308: 05 DW_LNS_set_column (27) -0x0000030a: 06 DW_LNS_negate_stmt -0x0000030b: 3b address += 3, line += -1 - 0x0000000000000332 75 27 1 0 0 is_stmt - -0x0000030c: 06 DW_LNS_negate_stmt -0x0000030d: 03 DW_LNS_advance_line (0) -0x00000310: 74 address += 7, line += 0 - 0x0000000000000339 0 27 1 0 0 - -0x00000311: 05 DW_LNS_set_column (13) -0x00000313: 06 DW_LNS_negate_stmt -0x00000314: 03 DW_LNS_advance_line (77) -0x00000317: 66 address += 6, line += 0 - 0x000000000000033f 77 13 1 0 0 is_stmt - -0x00000318: 05 DW_LNS_set_column (22) -0x0000031a: 06 DW_LNS_negate_stmt -0x0000031b: 82 address += 8, line += 0 - 0x0000000000000347 77 22 1 0 0 - -0x0000031c: 05 DW_LNS_set_column (16) -0x0000031e: 06 DW_LNS_negate_stmt -0x0000031f: 5a address += 5, line += 2 - 0x000000000000034c 79 16 1 0 0 is_stmt - -0x00000320: 05 DW_LNS_set_column (14) -0x00000322: 06 DW_LNS_negate_stmt -0x00000323: 82 address += 8, line += 0 - 0x0000000000000354 79 14 1 0 0 - -0x00000324: 05 DW_LNS_set_column (25) -0x00000326: e4 address += 15, line += 0 - 0x0000000000000363 79 25 1 0 0 - -0x00000327: 05 DW_LNS_set_column (11) -0x00000329: 06 DW_LNS_negate_stmt -0x0000032a: 76 address += 7, line += 2 - 0x000000000000036a 81 11 1 0 0 is_stmt - -0x0000032b: 05 DW_LNS_set_column (16) -0x0000032d: 03 DW_LNS_advance_line (66) -0x0000032f: 58 address += 5, line += 0 - 0x000000000000036f 66 16 1 0 0 is_stmt - -0x00000330: 05 DW_LNS_set_column (22) -0x00000332: 7c address += 7, line += 8 - 0x0000000000000376 74 22 1 0 0 is_stmt - -0x00000333: 06 DW_LNS_negate_stmt -0x00000334: 03 DW_LNS_advance_line (0) -0x00000337: 90 address += 9, line += 0 - 0x000000000000037f 0 22 1 0 0 - -0x00000338: 05 DW_LNS_set_column (13) -0x0000033a: 06 DW_LNS_negate_stmt -0x0000033b: 03 DW_LNS_advance_line (67) -0x0000033e: 3c address += 3, line += 0 - 0x0000000000000382 67 13 1 0 0 is_stmt - -0x0000033f: 83 address += 8, line += 1 - 0x000000000000038a 68 13 1 0 0 is_stmt - -0x00000340: 83 address += 8, line += 1 - 0x0000000000000392 69 13 1 0 0 is_stmt - -0x00000341: 83 address += 8, line += 1 - 0x000000000000039a 70 13 1 0 0 is_stmt - -0x00000342: 02 DW_LNS_advance_pc (3) -0x00000344: 00 DW_LNE_end_sequence - 0x000000000000039d 70 13 1 0 0 is_stmt end_sequence - -0x00000347: 00 DW_LNE_set_address (0x000000000000039f) -0x0000034e: 03 DW_LNS_advance_line (152) -0x00000351: 01 DW_LNS_copy - 0x000000000000039f 152 0 1 0 0 is_stmt - - -0x00000352: 05 DW_LNS_set_column (17) -0x00000354: 0a DW_LNS_set_prologue_end -0x00000355: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000356: 91 address += 9, line += 1 - 0x00000000000003b9 153 17 1 0 0 is_stmt prologue_end - -0x00000357: 05 DW_LNS_set_column (12) -0x00000359: 06 DW_LNS_negate_stmt -0x0000035a: 58 address += 5, line += 0 - 0x00000000000003be 153 12 1 0 0 - -0x0000035b: 03 DW_LNS_advance_line (0) -0x0000035e: 2e address += 2, line += 0 - 0x00000000000003c0 0 12 1 0 0 - -0x0000035f: 05 DW_LNS_set_column (28) -0x00000361: 03 DW_LNS_advance_line (153) -0x00000364: 4a address += 4, line += 0 - 0x00000000000003c4 153 28 1 0 0 - -0x00000365: 05 DW_LNS_set_column (23) -0x00000367: 58 address += 5, line += 0 - 0x00000000000003c9 153 23 1 0 0 - -0x00000368: 03 DW_LNS_advance_line (0) -0x0000036b: 66 address += 6, line += 0 - 0x00000000000003cf 0 23 1 0 0 - -0x0000036c: 05 DW_LNS_set_column (10) -0x0000036e: 06 DW_LNS_negate_stmt -0x0000036f: 03 DW_LNS_advance_line (155) -0x00000372: 4a address += 4, line += 0 - 0x00000000000003d3 155 10 1 0 0 is_stmt - -0x00000373: 05 DW_LNS_set_column (8) -0x00000375: 06 DW_LNS_negate_stmt -0x00000376: 20 address += 1, line += 0 - 0x00000000000003d4 155 8 1 0 0 - -0x00000377: 03 DW_LNS_advance_line (0) -0x0000037a: 2e address += 2, line += 0 - 0x00000000000003d6 0 8 1 0 0 - -0x0000037b: 05 DW_LNS_set_column (7) -0x0000037d: 06 DW_LNS_negate_stmt -0x0000037e: 03 DW_LNS_advance_line (156) -0x00000381: 20 address += 1, line += 0 - 0x00000000000003d7 156 7 1 0 0 is_stmt - -0x00000382: 06 DW_LNS_negate_stmt -0x00000383: 03 DW_LNS_advance_line (0) -0x00000386: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000387: 2e address += 2, line += 0 - 0x00000000000003ea 0 7 1 0 0 - -0x00000388: 05 DW_LNS_set_column (18) -0x0000038a: 06 DW_LNS_negate_stmt -0x0000038b: 03 DW_LNS_advance_line (94) -0x0000038e: 3c address += 3, line += 0 - 0x00000000000003ed 94 18 1 0 0 is_stmt - -0x0000038f: 05 DW_LNS_set_column (4) -0x00000391: 06 DW_LNS_negate_stmt -0x00000392: 58 address += 5, line += 0 - 0x00000000000003f2 94 4 1 0 0 - -0x00000393: 03 DW_LNS_advance_line (0) -0x00000396: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000397: 12 address += 0, line += 0 - 0x0000000000000403 0 4 1 0 0 - -0x00000398: 05 DW_LNS_set_column (29) -0x0000039a: 06 DW_LNS_negate_stmt -0x0000039b: 03 DW_LNS_advance_line (95) -0x0000039e: 4a address += 4, line += 0 - 0x0000000000000407 95 29 1 0 0 is_stmt - -0x0000039f: 05 DW_LNS_set_column (19) -0x000003a1: 69 address += 6, line += 3 - 0x000000000000040d 98 19 1 0 0 is_stmt - -0x000003a2: 05 DW_LNS_set_column (16) -0x000003a4: 73 address += 7, line += -1 - 0x0000000000000414 97 16 1 0 0 is_stmt - -0x000003a5: 73 address += 7, line += -1 - 0x000000000000041b 96 16 1 0 0 is_stmt - -0x000003a6: 06 DW_LNS_negate_stmt -0x000003a7: 03 DW_LNS_advance_line (0) -0x000003aa: 74 address += 7, line += 0 - 0x0000000000000422 0 16 1 0 0 - -0x000003ab: 05 DW_LNS_set_column (28) -0x000003ad: 06 DW_LNS_negate_stmt -0x000003ae: 03 DW_LNS_advance_line (94) -0x000003b1: 4a address += 4, line += 0 - 0x0000000000000426 94 28 1 0 0 is_stmt - -0x000003b2: 05 DW_LNS_set_column (18) -0x000003b4: 06 DW_LNS_negate_stmt -0x000003b5: 58 address += 5, line += 0 - 0x000000000000042b 94 18 1 0 0 - -0x000003b6: 05 DW_LNS_set_column (4) -0x000003b8: 58 address += 5, line += 0 - 0x0000000000000430 94 4 1 0 0 - -0x000003b9: 03 DW_LNS_advance_line (0) -0x000003bc: 4a address += 4, line += 0 - 0x0000000000000434 0 4 1 0 0 - -0x000003bd: 05 DW_LNS_set_column (27) -0x000003bf: 06 DW_LNS_negate_stmt -0x000003c0: 03 DW_LNS_advance_line (102) -0x000003c3: 4a address += 4, line += 0 - 0x0000000000000438 102 27 1 0 0 is_stmt - -0x000003c4: 05 DW_LNS_set_column (18) -0x000003c6: 06 DW_LNS_negate_stmt -0x000003c7: 58 address += 5, line += 0 - 0x000000000000043d 102 18 1 0 0 - -0x000003c8: 06 DW_LNS_negate_stmt -0x000003c9: 9f address += 10, line += 1 - 0x0000000000000447 103 18 1 0 0 is_stmt - -0x000003ca: 06 DW_LNS_negate_stmt -0x000003cb: 03 DW_LNS_advance_line (0) -0x000003ce: 9e address += 10, line += 0 - 0x0000000000000451 0 18 1 0 0 - -0x000003cf: 06 DW_LNS_negate_stmt -0x000003d0: 03 DW_LNS_advance_line (105) -0x000003d3: 82 address += 8, line += 0 - 0x0000000000000459 105 18 1 0 0 is_stmt - -0x000003d4: 05 DW_LNS_set_column (4) -0x000003d6: 06 DW_LNS_negate_stmt -0x000003d7: 58 address += 5, line += 0 - 0x000000000000045e 105 4 1 0 0 - -0x000003d8: 03 DW_LNS_advance_line (0) -0x000003db: 2e address += 2, line += 0 - 0x0000000000000460 0 4 1 0 0 - -0x000003dc: 05 DW_LNS_set_column (7) -0x000003de: 06 DW_LNS_negate_stmt -0x000003df: 03 DW_LNS_advance_line (106) -0x000003e2: 2e address += 2, line += 0 - 0x0000000000000462 106 7 1 0 0 is_stmt - -0x000003e3: 05 DW_LNS_set_column (16) -0x000003e5: 06 DW_LNS_negate_stmt -0x000003e6: 82 address += 8, line += 0 - 0x000000000000046a 106 16 1 0 0 - -0x000003e7: 05 DW_LNS_set_column (24) -0x000003e9: 06 DW_LNS_negate_stmt -0x000003ea: 57 address += 5, line += -1 - 0x000000000000046f 105 24 1 0 0 is_stmt - -0x000003eb: 05 DW_LNS_set_column (18) -0x000003ed: 06 DW_LNS_negate_stmt -0x000003ee: 58 address += 5, line += 0 - 0x0000000000000474 105 18 1 0 0 - -0x000003ef: 03 DW_LNS_advance_line (0) -0x000003f2: 74 address += 7, line += 0 - 0x000000000000047b 0 18 1 0 0 - -0x000003f3: 05 DW_LNS_set_column (13) -0x000003f5: 06 DW_LNS_negate_stmt -0x000003f6: 03 DW_LNS_advance_line (112) -0x000003f9: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000003fa: d6 address += 14, line += 0 - 0x000000000000049a 112 13 1 0 0 is_stmt - -0x000003fb: 05 DW_LNS_set_column (26) -0x000003fd: 06 DW_LNS_negate_stmt -0x000003fe: 2e address += 2, line += 0 - 0x000000000000049c 112 26 1 0 0 - -0x000003ff: 05 DW_LNS_set_column (35) -0x00000401: c8 address += 13, line += 0 - 0x00000000000004a9 112 35 1 0 0 - -0x00000402: 05 DW_LNS_set_column (13) -0x00000404: 20 address += 1, line += 0 - 0x00000000000004aa 112 13 1 0 0 - -0x00000405: 05 DW_LNS_set_column (30) -0x00000407: 06 DW_LNS_negate_stmt -0x00000408: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000409: 49 address += 4, line += -1 - 0x00000000000004bf 111 30 1 0 0 is_stmt - -0x0000040a: 05 DW_LNS_set_column (24) -0x0000040c: 06 DW_LNS_negate_stmt -0x0000040d: 58 address += 5, line += 0 - 0x00000000000004c4 111 24 1 0 0 - -0x0000040e: 05 DW_LNS_set_column (10) -0x00000410: 58 address += 5, line += 0 - 0x00000000000004c9 111 10 1 0 0 - -0x00000411: 06 DW_LNS_negate_stmt -0x00000412: 5a address += 5, line += 2 - 0x00000000000004ce 113 10 1 0 0 is_stmt - -0x00000413: 06 DW_LNS_negate_stmt -0x00000414: 03 DW_LNS_advance_line (0) -0x00000417: 74 address += 7, line += 0 - 0x00000000000004d5 0 10 1 0 0 - -0x00000418: 05 DW_LNS_set_column (16) -0x0000041a: 06 DW_LNS_negate_stmt -0x0000041b: 03 DW_LNS_advance_line (118) -0x0000041e: 2e address += 2, line += 0 - 0x00000000000004d7 118 16 1 0 0 is_stmt - -0x0000041f: 05 DW_LNS_set_column (7) -0x00000421: 06 DW_LNS_negate_stmt -0x00000422: 58 address += 5, line += 0 - 0x00000000000004dc 118 7 1 0 0 - -0x00000423: 03 DW_LNS_advance_line (0) -0x00000426: 2e address += 2, line += 0 - 0x00000000000004de 0 7 1 0 0 - -0x00000427: 05 DW_LNS_set_column (10) -0x00000429: 06 DW_LNS_negate_stmt -0x0000042a: 03 DW_LNS_advance_line (119) -0x0000042d: 2e address += 2, line += 0 - 0x00000000000004e0 119 10 1 0 0 is_stmt - -0x0000042e: 05 DW_LNS_set_column (18) -0x00000430: 06 DW_LNS_negate_stmt -0x00000431: 2e address += 2, line += 0 - 0x00000000000004e2 119 18 1 0 0 - -0x00000432: 05 DW_LNS_set_column (10) -0x00000434: 90 address += 9, line += 0 - 0x00000000000004eb 119 10 1 0 0 - -0x00000435: 05 DW_LNS_set_column (23) -0x00000437: 2e address += 2, line += 0 - 0x00000000000004ed 119 23 1 0 0 - -0x00000438: 05 DW_LNS_set_column (16) -0x0000043a: 06 DW_LNS_negate_stmt -0x0000043b: 57 address += 5, line += -1 - 0x00000000000004f2 118 16 1 0 0 is_stmt - -0x0000043c: 05 DW_LNS_set_column (7) -0x0000043e: 06 DW_LNS_negate_stmt -0x0000043f: ac address += 11, line += 0 - 0x00000000000004fd 118 7 1 0 0 - -0x00000440: 05 DW_LNS_set_column (16) -0x00000442: 06 DW_LNS_negate_stmt -0x00000443: 6a address += 6, line += 4 - 0x0000000000000503 122 16 1 0 0 is_stmt - -0x00000444: 06 DW_LNS_negate_stmt -0x00000445: 03 DW_LNS_advance_line (0) -0x00000448: 74 address += 7, line += 0 - 0x000000000000050a 0 16 1 0 0 - -0x00000449: 05 DW_LNS_set_column (22) -0x0000044b: 06 DW_LNS_negate_stmt -0x0000044c: 03 DW_LNS_advance_line (125) -0x0000044f: c8 address += 13, line += 0 - 0x0000000000000517 125 22 1 0 0 is_stmt - -0x00000450: 06 DW_LNS_negate_stmt -0x00000451: 03 DW_LNS_advance_line (0) -0x00000454: 74 address += 7, line += 0 - 0x000000000000051e 0 22 1 0 0 - -0x00000455: 05 DW_LNS_set_column (27) -0x00000457: 06 DW_LNS_negate_stmt -0x00000458: 03 DW_LNS_advance_line (126) -0x0000045b: 2e address += 2, line += 0 - 0x0000000000000520 126 27 1 0 0 is_stmt - -0x0000045c: 05 DW_LNS_set_column (13) -0x0000045e: 06 DW_LNS_negate_stmt -0x0000045f: 58 address += 5, line += 0 - 0x0000000000000525 126 13 1 0 0 - -0x00000460: 03 DW_LNS_advance_line (0) -0x00000463: 2e address += 2, line += 0 - 0x0000000000000527 0 13 1 0 0 - -0x00000464: 05 DW_LNS_set_column (16) -0x00000466: 06 DW_LNS_negate_stmt -0x00000467: 03 DW_LNS_advance_line (127) -0x0000046a: 2e address += 2, line += 0 - 0x0000000000000529 127 16 1 0 0 is_stmt - -0x0000046b: 05 DW_LNS_set_column (27) -0x0000046d: 06 DW_LNS_negate_stmt -0x0000046e: 82 address += 8, line += 0 - 0x0000000000000531 127 27 1 0 0 - -0x0000046f: 05 DW_LNS_set_column (35) -0x00000471: 2e address += 2, line += 0 - 0x0000000000000533 127 35 1 0 0 - -0x00000472: 05 DW_LNS_set_column (27) -0x00000474: 90 address += 9, line += 0 - 0x000000000000053c 127 27 1 0 0 - -0x00000475: 05 DW_LNS_set_column (25) -0x00000477: 58 address += 5, line += 0 - 0x0000000000000541 127 25 1 0 0 - -0x00000478: 05 DW_LNS_set_column (27) -0x0000047a: 06 DW_LNS_negate_stmt -0x0000047b: 3b address += 3, line += -1 - 0x0000000000000544 126 27 1 0 0 is_stmt - -0x0000047c: 05 DW_LNS_set_column (13) -0x0000047e: 06 DW_LNS_negate_stmt -0x0000047f: 58 address += 5, line += 0 - 0x0000000000000549 126 13 1 0 0 - -0x00000480: 05 DW_LNS_set_column (0) -0x00000482: 03 DW_LNS_advance_line (0) -0x00000485: 3c address += 3, line += 0 - 0x000000000000054c 0 0 1 0 0 - -0x00000486: 05 DW_LNS_set_column (13) -0x00000488: 06 DW_LNS_negate_stmt -0x00000489: 03 DW_LNS_advance_line (128) -0x0000048c: 58 address += 5, line += 0 - 0x0000000000000551 128 13 1 0 0 is_stmt - -0x0000048d: 05 DW_LNS_set_column (22) -0x0000048f: 06 DW_LNS_negate_stmt -0x00000490: 82 address += 8, line += 0 - 0x0000000000000559 128 22 1 0 0 - -0x00000491: 05 DW_LNS_set_column (16) -0x00000493: 06 DW_LNS_negate_stmt -0x00000494: 5a address += 5, line += 2 - 0x000000000000055e 130 16 1 0 0 is_stmt - -0x00000495: 05 DW_LNS_set_column (14) -0x00000497: 06 DW_LNS_negate_stmt -0x00000498: 82 address += 8, line += 0 - 0x0000000000000566 130 14 1 0 0 - -0x00000499: 05 DW_LNS_set_column (25) -0x0000049b: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x0000049c: 12 address += 0, line += 0 - 0x0000000000000577 130 25 1 0 0 - -0x0000049d: 05 DW_LNS_set_column (14) -0x0000049f: 58 address += 5, line += 0 - 0x000000000000057c 130 14 1 0 0 - -0x000004a0: 05 DW_LNS_set_column (11) -0x000004a2: 06 DW_LNS_negate_stmt -0x000004a3: 31 address += 2, line += 3 - 0x000000000000057e 133 11 1 0 0 is_stmt - -0x000004a4: 05 DW_LNS_set_column (16) -0x000004a6: 03 DW_LNS_advance_line (122) -0x000004a8: 58 address += 5, line += 0 - 0x0000000000000583 122 16 1 0 0 is_stmt - -0x000004a9: 05 DW_LNS_set_column (14) -0x000004ab: 06 DW_LNS_negate_stmt -0x000004ac: 58 address += 5, line += 0 - 0x0000000000000588 122 14 1 0 0 - -0x000004ad: 03 DW_LNS_advance_line (0) -0x000004b0: 4a address += 4, line += 0 - 0x000000000000058c 0 14 1 0 0 - -0x000004b1: 06 DW_LNS_negate_stmt -0x000004b2: 03 DW_LNS_advance_line (130) -0x000004b5: 20 address += 1, line += 0 - 0x000000000000058d 130 14 1 0 0 is_stmt - -0x000004b6: 05 DW_LNS_set_column (11) -0x000004b8: 03 DW_LNS_advance_line (110) -0x000004ba: 20 address += 1, line += 0 - 0x000000000000058e 110 11 1 0 0 is_stmt - -0x000004bb: 06 DW_LNS_negate_stmt -0x000004bc: 03 DW_LNS_advance_line (0) -0x000004bf: 74 address += 7, line += 0 - 0x0000000000000595 0 11 1 0 0 - -0x000004c0: 05 DW_LNS_set_column (10) -0x000004c2: 06 DW_LNS_negate_stmt -0x000004c3: 03 DW_LNS_advance_line (113) -0x000004c6: 66 address += 6, line += 0 - 0x000000000000059b 113 10 1 0 0 is_stmt - -0x000004c7: 06 DW_LNS_negate_stmt -0x000004c8: 03 DW_LNS_advance_line (0) -0x000004cb: 74 address += 7, line += 0 - 0x00000000000005a2 0 10 1 0 0 - -0x000004cc: 05 DW_LNS_set_column (16) -0x000004ce: 06 DW_LNS_negate_stmt -0x000004cf: 03 DW_LNS_advance_line (118) -0x000004d2: 2e address += 2, line += 0 - 0x00000000000005a4 118 16 1 0 0 is_stmt - -0x000004d3: 05 DW_LNS_set_column (7) -0x000004d5: 06 DW_LNS_negate_stmt -0x000004d6: 58 address += 5, line += 0 - 0x00000000000005a9 118 7 1 0 0 - -0x000004d7: 03 DW_LNS_advance_line (0) -0x000004da: 2e address += 2, line += 0 - 0x00000000000005ab 0 7 1 0 0 - -0x000004db: 05 DW_LNS_set_column (10) -0x000004dd: 06 DW_LNS_negate_stmt -0x000004de: 03 DW_LNS_advance_line (119) -0x000004e1: 2e address += 2, line += 0 - 0x00000000000005ad 119 10 1 0 0 is_stmt - -0x000004e2: 05 DW_LNS_set_column (18) -0x000004e4: 06 DW_LNS_negate_stmt -0x000004e5: 2e address += 2, line += 0 - 0x00000000000005af 119 18 1 0 0 - -0x000004e6: 05 DW_LNS_set_column (10) -0x000004e8: 90 address += 9, line += 0 - 0x00000000000005b8 119 10 1 0 0 - -0x000004e9: 05 DW_LNS_set_column (23) -0x000004eb: 2e address += 2, line += 0 - 0x00000000000005ba 119 23 1 0 0 - -0x000004ec: 05 DW_LNS_set_column (16) -0x000004ee: 06 DW_LNS_negate_stmt -0x000004ef: 57 address += 5, line += -1 - 0x00000000000005bf 118 16 1 0 0 is_stmt - -0x000004f0: 05 DW_LNS_set_column (0) -0x000004f2: 06 DW_LNS_negate_stmt -0x000004f3: 03 DW_LNS_advance_line (0) -0x000004f6: 74 address += 7, line += 0 - 0x00000000000005c6 0 0 1 0 0 - -0x000004f7: 05 DW_LNS_set_column (7) -0x000004f9: 03 DW_LNS_advance_line (118) -0x000004fc: 4a address += 4, line += 0 - 0x00000000000005ca 118 7 1 0 0 - -0x000004fd: 05 DW_LNS_set_column (16) -0x000004ff: 06 DW_LNS_negate_stmt -0x00000500: 6a address += 6, line += 4 - 0x00000000000005d0 122 16 1 0 0 is_stmt - -0x00000501: 05 DW_LNS_set_column (14) -0x00000503: 06 DW_LNS_negate_stmt -0x00000504: 58 address += 5, line += 0 - 0x00000000000005d5 122 14 1 0 0 - -0x00000505: 03 DW_LNS_advance_line (0) -0x00000508: 2e address += 2, line += 0 - 0x00000000000005d7 0 14 1 0 0 - -0x00000509: 05 DW_LNS_set_column (22) -0x0000050b: 06 DW_LNS_negate_stmt -0x0000050c: 03 DW_LNS_advance_line (125) -0x0000050f: 74 address += 7, line += 0 - 0x00000000000005de 125 22 1 0 0 is_stmt - -0x00000510: 06 DW_LNS_negate_stmt -0x00000511: 03 DW_LNS_advance_line (0) -0x00000514: 90 address += 9, line += 0 - 0x00000000000005e7 0 22 1 0 0 - -0x00000515: 05 DW_LNS_set_column (27) -0x00000517: 06 DW_LNS_negate_stmt -0x00000518: 03 DW_LNS_advance_line (126) -0x0000051b: 66 address += 6, line += 0 - 0x00000000000005ed 126 27 1 0 0 is_stmt - -0x0000051c: 05 DW_LNS_set_column (13) -0x0000051e: 06 DW_LNS_negate_stmt -0x0000051f: 58 address += 5, line += 0 - 0x00000000000005f2 126 13 1 0 0 - -0x00000520: 03 DW_LNS_advance_line (0) -0x00000523: 2e address += 2, line += 0 - 0x00000000000005f4 0 13 1 0 0 - -0x00000524: 05 DW_LNS_set_column (16) -0x00000526: 06 DW_LNS_negate_stmt -0x00000527: 03 DW_LNS_advance_line (127) -0x0000052a: 2e address += 2, line += 0 - 0x00000000000005f6 127 16 1 0 0 is_stmt - -0x0000052b: 05 DW_LNS_set_column (27) -0x0000052d: 06 DW_LNS_negate_stmt -0x0000052e: 82 address += 8, line += 0 - 0x00000000000005fe 127 27 1 0 0 - -0x0000052f: 05 DW_LNS_set_column (35) -0x00000531: 2e address += 2, line += 0 - 0x0000000000000600 127 35 1 0 0 - -0x00000532: 05 DW_LNS_set_column (27) -0x00000534: 90 address += 9, line += 0 - 0x0000000000000609 127 27 1 0 0 - -0x00000535: 05 DW_LNS_set_column (25) -0x00000537: 58 address += 5, line += 0 - 0x000000000000060e 127 25 1 0 0 - -0x00000538: 05 DW_LNS_set_column (27) -0x0000053a: 06 DW_LNS_negate_stmt -0x0000053b: 3b address += 3, line += -1 - 0x0000000000000611 126 27 1 0 0 is_stmt - -0x0000053c: 05 DW_LNS_set_column (13) -0x0000053e: 06 DW_LNS_negate_stmt -0x0000053f: 58 address += 5, line += 0 - 0x0000000000000616 126 13 1 0 0 - -0x00000540: 05 DW_LNS_set_column (0) -0x00000542: 03 DW_LNS_advance_line (0) -0x00000545: 3c address += 3, line += 0 - 0x0000000000000619 0 0 1 0 0 - -0x00000546: 05 DW_LNS_set_column (13) -0x00000548: 06 DW_LNS_negate_stmt -0x00000549: 03 DW_LNS_advance_line (128) -0x0000054c: 58 address += 5, line += 0 - 0x000000000000061e 128 13 1 0 0 is_stmt - -0x0000054d: 05 DW_LNS_set_column (22) -0x0000054f: 06 DW_LNS_negate_stmt -0x00000550: 82 address += 8, line += 0 - 0x0000000000000626 128 22 1 0 0 - -0x00000551: 05 DW_LNS_set_column (16) -0x00000553: 06 DW_LNS_negate_stmt -0x00000554: 5a address += 5, line += 2 - 0x000000000000062b 130 16 1 0 0 is_stmt - -0x00000555: 05 DW_LNS_set_column (14) -0x00000557: 06 DW_LNS_negate_stmt -0x00000558: 82 address += 8, line += 0 - 0x0000000000000633 130 14 1 0 0 - -0x00000559: 05 DW_LNS_set_column (25) -0x0000055b: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x0000055c: 12 address += 0, line += 0 - 0x0000000000000644 130 25 1 0 0 - -0x0000055d: 05 DW_LNS_set_column (14) -0x0000055f: 58 address += 5, line += 0 - 0x0000000000000649 130 14 1 0 0 - -0x00000560: 05 DW_LNS_set_column (11) -0x00000562: 06 DW_LNS_negate_stmt -0x00000563: 31 address += 2, line += 3 - 0x000000000000064b 133 11 1 0 0 is_stmt - -0x00000564: 05 DW_LNS_set_column (16) -0x00000566: 03 DW_LNS_advance_line (122) -0x00000568: 58 address += 5, line += 0 - 0x0000000000000650 122 16 1 0 0 is_stmt - -0x00000569: 05 DW_LNS_set_column (14) -0x0000056b: 06 DW_LNS_negate_stmt -0x0000056c: 58 address += 5, line += 0 - 0x0000000000000655 122 14 1 0 0 - -0x0000056d: 03 DW_LNS_advance_line (0) -0x00000570: 4a address += 4, line += 0 - 0x0000000000000659 0 14 1 0 0 - -0x00000571: 06 DW_LNS_negate_stmt -0x00000572: 03 DW_LNS_advance_line (130) -0x00000575: 20 address += 1, line += 0 - 0x000000000000065a 130 14 1 0 0 is_stmt - -0x00000576: 05 DW_LNS_set_column (11) -0x00000578: 03 DW_LNS_advance_line (110) -0x0000057a: 20 address += 1, line += 0 - 0x000000000000065b 110 11 1 0 0 is_stmt - -0x0000057b: 05 DW_LNS_set_column (4) -0x0000057d: 03 DW_LNS_advance_line (138) -0x0000057f: 66 address += 6, line += 0 - 0x0000000000000661 138 4 1 0 0 is_stmt - -0x00000580: 83 address += 8, line += 1 - 0x0000000000000669 139 4 1 0 0 is_stmt - -0x00000581: 06 DW_LNS_negate_stmt -0x00000582: 03 DW_LNS_advance_line (0) -0x00000585: 82 address += 8, line += 0 - 0x0000000000000671 0 4 1 0 0 - -0x00000586: 06 DW_LNS_negate_stmt -0x00000587: 03 DW_LNS_advance_line (141) -0x0000058a: 82 address += 8, line += 0 - 0x0000000000000679 141 4 1 0 0 is_stmt - -0x0000058b: 06 DW_LNS_negate_stmt -0x0000058c: 03 DW_LNS_advance_line (0) -0x0000058f: 74 address += 7, line += 0 - 0x0000000000000680 0 4 1 0 0 - -0x00000590: 05 DW_LNS_set_column (20) -0x00000592: 06 DW_LNS_negate_stmt -0x00000593: 03 DW_LNS_advance_line (142) -0x00000596: 4a address += 4, line += 0 - 0x0000000000000684 142 20 1 0 0 is_stmt - -0x00000597: be address += 12, line += 4 - 0x0000000000000690 146 20 1 0 0 is_stmt - -0x00000598: 05 DW_LNS_set_column (7) -0x0000059a: 75 address += 7, line += 1 - 0x0000000000000697 147 7 1 0 0 is_stmt - -0x0000059b: 05 DW_LNS_set_column (11) -0x0000059d: 7e address += 8, line += -4 - 0x000000000000069f 143 11 1 0 0 is_stmt - -0x0000059e: 05 DW_LNS_set_column (20) -0x000005a0: 06 DW_LNS_negate_stmt -0x000005a1: 4a address += 4, line += 0 - 0x00000000000006a3 143 20 1 0 0 - -0x000005a2: 05 DW_LNS_set_column (11) -0x000005a4: 58 address += 5, line += 0 - 0x00000000000006a8 143 11 1 0 0 - -0x000005a5: 03 DW_LNS_advance_line (0) -0x000005a8: 3c address += 3, line += 0 - 0x00000000000006ab 0 11 1 0 0 - -0x000005a9: 05 DW_LNS_set_column (4) -0x000005ab: 06 DW_LNS_negate_stmt -0x000005ac: 03 DW_LNS_advance_line (141) -0x000005af: 4a address += 4, line += 0 - 0x00000000000006af 141 4 1 0 0 is_stmt - -0x000005b0: 03 DW_LNS_advance_line (159) -0x000005b2: 66 address += 6, line += 0 - 0x00000000000006b5 159 4 1 0 0 is_stmt - -0x000005b3: 06 DW_LNS_negate_stmt -0x000005b4: 03 DW_LNS_advance_line (0) -0x000005b7: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000005b8: ba address += 12, line += 0 - 0x00000000000006d2 0 4 1 0 0 - -0x000005b9: 05 DW_LNS_set_column (1) -0x000005bb: 06 DW_LNS_negate_stmt -0x000005bc: 03 DW_LNS_advance_line (161) -0x000005bf: 20 address += 1, line += 0 - 0x00000000000006d3 161 1 1 0 0 is_stmt - -0x000005c0: 02 DW_LNS_advance_pc (14) -0x000005c2: 00 DW_LNE_end_sequence - 0x00000000000006e1 161 1 1 0 0 is_stmt end_sequence - - -.debug_str contents: -0x00000000: "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)" -0x00000069: "/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp" -0x000000a9: "/usr/local/google/home/azakai/Dev/2-binaryen" -0x000000d6: "i" -0x000000d8: "int" -0x000000dc: "n" -0x000000de: "next" -0x000000e3: "worker_args" -0x000000ef: "std" -0x000000f3: "decltype(nullptr)" -0x00000105: "nullptr_t" -0x0000010f: "free" -0x00000114: "_ZL8fannkuchi" -0x00000122: "fannkuch" -0x0000012b: "showmax" -0x00000133: "args" -0x00000138: "targs" -0x0000013e: "perm1" -0x00000144: "count" -0x0000014a: "r" -0x0000014c: "maxflips" -0x00000155: "flips" -0x0000015b: "cleanup" -0x00000163: "p0" -0x00000166: "_Z15fannkuch_workerPv" -0x0000017c: "fannkuch_worker" -0x0000018c: "main" -0x00000191: "_arg" -0x00000196: "perm" -0x0000019b: "k" -0x0000019d: "j" -0x0000019f: "tmp" -0x000001a3: "argc" -0x000001a8: "argv" -0x000001ad: "char" - -.debug_ranges contents: -00000000 00000185 000001c3 -00000000 000001ed 000001f6 -00000000 0000030e 0000034c -00000000 00000376 0000037f -00000000 -00000028 00000517 0000055e -00000028 000005de 0000062b -00000028 -00000040 00000006 0000039d -00000040 0000039f 000006e1 -00000040 -DWARF debug info -================ - -Contains section .debug_info (851 bytes) -Contains section .debug_loc (1073 bytes) -Contains section .debug_ranges (88 bytes) -Contains section .debug_abbrev (333 bytes) -Contains section .debug_line (2826 bytes) -Contains section .debug_str (434 bytes) - -.debug_abbrev contents: -Abbrev table for offset: 0x00000000 -[1] DW_TAG_compile_unit DW_CHILDREN_yes - DW_AT_producer DW_FORM_strp - DW_AT_language DW_FORM_data2 - DW_AT_name DW_FORM_strp - DW_AT_stmt_list DW_FORM_sec_offset - DW_AT_comp_dir DW_FORM_strp - DW_AT_low_pc DW_FORM_addr - DW_AT_ranges DW_FORM_sec_offset - -[2] DW_TAG_pointer_type DW_CHILDREN_no - DW_AT_type DW_FORM_ref4 - -[3] DW_TAG_structure_type DW_CHILDREN_yes - DW_AT_calling_convention DW_FORM_data1 - DW_AT_name DW_FORM_strp - DW_AT_byte_size DW_FORM_data1 - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - -[4] DW_TAG_member DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_type DW_FORM_ref4 - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_data_member_location DW_FORM_data1 - -[5] DW_TAG_base_type DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_encoding DW_FORM_data1 - DW_AT_byte_size DW_FORM_data1 - -[6] DW_TAG_namespace DW_CHILDREN_yes - DW_AT_name DW_FORM_strp - -[7] DW_TAG_typedef DW_CHILDREN_no - DW_AT_type DW_FORM_ref4 - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - -[8] DW_TAG_unspecified_type DW_CHILDREN_no - DW_AT_name DW_FORM_strp - -[9] DW_TAG_imported_declaration DW_CHILDREN_no - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_import DW_FORM_ref4 - -[10] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_frame_base DW_FORM_exprloc - DW_AT_GNU_all_call_sites DW_FORM_flag_present - DW_AT_linkage_name DW_FORM_strp - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - -[11] DW_TAG_formal_parameter DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[12] DW_TAG_variable DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[13] DW_TAG_variable DW_CHILDREN_no - DW_AT_location DW_FORM_sec_offset - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[14] DW_TAG_lexical_block DW_CHILDREN_yes - DW_AT_ranges DW_FORM_sec_offset - -[15] DW_TAG_GNU_call_site DW_CHILDREN_no - DW_AT_low_pc DW_FORM_addr - -[16] DW_TAG_GNU_call_site DW_CHILDREN_no - DW_AT_abstract_origin DW_FORM_ref4 - DW_AT_low_pc DW_FORM_addr - -[17] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_declaration DW_FORM_flag_present - DW_AT_external DW_FORM_flag_present - -[18] DW_TAG_formal_parameter DW_CHILDREN_no - DW_AT_type DW_FORM_ref4 - -[19] DW_TAG_pointer_type DW_CHILDREN_no - -[20] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_linkage_name DW_FORM_strp - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_inline DW_FORM_data1 - -[21] DW_TAG_label DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - -[22] DW_TAG_lexical_block DW_CHILDREN_yes - -[23] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_frame_base DW_FORM_exprloc - DW_AT_GNU_all_call_sites DW_FORM_flag_present - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - -[24] DW_TAG_inlined_subroutine DW_CHILDREN_yes - DW_AT_abstract_origin DW_FORM_ref4 - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_call_file DW_FORM_data1 - DW_AT_call_line DW_FORM_data1 - DW_AT_call_column DW_FORM_data1 - -[25] DW_TAG_formal_parameter DW_CHILDREN_no - DW_AT_abstract_origin DW_FORM_ref4 - -[26] DW_TAG_variable DW_CHILDREN_no - DW_AT_location DW_FORM_sec_offset - DW_AT_abstract_origin DW_FORM_ref4 - -[27] DW_TAG_variable DW_CHILDREN_no - DW_AT_abstract_origin DW_FORM_ref4 - -[28] DW_TAG_label DW_CHILDREN_no - DW_AT_abstract_origin DW_FORM_ref4 - DW_AT_low_pc DW_FORM_addr - - -.debug_info contents: -0x00000000: Compile Unit: length = 0x0000034f version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x00000353) - -0x0000000b: DW_TAG_compile_unit [1] * - DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)") - DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000069] = "/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) - DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x000000a9] = "/usr/local/google/home/azakai/Dev/2-binaryen") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) - DW_AT_ranges [DW_FORM_sec_offset] (0x00000040 - [0x00000006, 0x00000389) - [0x0000038b, 0x00000686)) - -0x00000026: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x002b => {0x0000002b} "worker_args") - -0x0000002b: DW_TAG_structure_type [3] * - DW_AT_calling_convention [DW_FORM_data1] (DW_CC_pass_by_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e3] = "worker_args") - DW_AT_byte_size [DW_FORM_data1] (0x0c) - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (20) - -0x00000034: DW_TAG_member [4] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (21) - DW_AT_data_member_location [DW_FORM_data1] (0x00) - -0x00000040: DW_TAG_member [4] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (21) - DW_AT_data_member_location [DW_FORM_data1] (0x04) - -0x0000004c: DW_TAG_member [4] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000de] = "next") - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (22) - DW_AT_data_member_location [DW_FORM_data1] (0x08) - -0x00000058: NULL - -0x00000059: DW_TAG_base_type [5] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d8] = "int") - DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) - DW_AT_byte_size [DW_FORM_data1] (0x04) - -0x00000060: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000065: DW_TAG_namespace [6] * - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ef] = "std") - -0x0000006a: DW_TAG_typedef [7] - DW_AT_type [DW_FORM_ref4] (cu + 0x0076 => {0x00000076} "decltype(nullptr)") - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000105] = "nullptr_t") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libcxx/__nullptr") - DW_AT_decl_line [DW_FORM_data1] (57) - -0x00000075: NULL - -0x00000076: DW_TAG_unspecified_type [8] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000f3] = "decltype(nullptr)") - -0x0000007b: DW_TAG_imported_declaration [9] - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libcxx/stddef.h") - DW_AT_decl_line [DW_FORM_data1] (52) - DW_AT_import [DW_FORM_ref4] (cu + 0x006a => {0x0000006a}) - -0x00000082: DW_TAG_subprogram [10] * - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000006) - DW_AT_high_pc [DW_FORM_data4] (0x00000383) - DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x1 +0, DW_OP_stack_value) - DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) - DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x00000166] = "_Z15fannkuch_workerPv") - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000017c] = "fannkuch_worker") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (26) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x0000009e: DW_TAG_formal_parameter [11] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000191] = "_arg") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (26) - DW_AT_type [DW_FORM_ref4] (cu + 0x01a7 => {0x000001a7} "*") - -0x000000a9: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000133] = "args") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (28) - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - -0x000000b4: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x00000000: - [0xffffffff, 0x00000006): - [0x00000000, 0x00000030): DW_OP_consts +0, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014c] = "maxflips") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000000c3: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x0000001d: - [0xffffffff, 0x00000006): - [0x00000007, 0x00000030): DW_OP_consts +0, DW_OP_stack_value - [0x00000046, 0x0000004b): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x000000dc, 0x000000e5): DW_OP_consts +1, DW_OP_stack_value - [0x00000121, 0x0000012b): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000169, 0x00000176): DW_OP_consts +0, DW_OP_stack_value - [0x00000258, 0x00000263): DW_OP_consts +0, DW_OP_stack_value - [0x00000269, 0x00000272): DW_OP_consts +1, DW_OP_stack_value - [0x000002ae, 0x000002b8): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x000002f6, 0x00000303): DW_OP_consts +0, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000000d2: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000000a5: - [0xffffffff, 0x00000006): - [0x0000000e, 0x00000030): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000000e1: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000000c3: - [0xffffffff, 0x00000006): - [0x00000017, 0x00000030): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000013e] = "perm1") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (29) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x000000f0: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000000e1: - [0xffffffff, 0x00000006): - [0x0000001d, 0x00000030): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000196] = "perm") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (29) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x000000ff: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000000ff: - [0xffffffff, 0x00000006): - [0x00000023, 0x00000030): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000144] = "count") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (29) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x0000010e: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x0000011d: - [0xffffffff, 0x00000006): - [0x000001d2, 0x000001d7): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value - [0x0000035f, 0x00000364): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014a] = "r") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000011d: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x00000149: - [0xffffffff, 0x00000006): - [0x000000c3, 0x000000d6): DW_OP_consts +0, DW_OP_stack_value - [0x000000dc, 0x000000e5): DW_OP_WASM_location 0x0 +13, DW_OP_stack_value - [0x0000014a, 0x00000152): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000258, 0x00000263): DW_OP_consts +0, DW_OP_stack_value - [0x00000269, 0x00000272): DW_OP_WASM_location 0x0 +10, DW_OP_stack_value - [0x000002d7, 0x000002df): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000155] = "flips") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000012c: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000001ab: - [0xffffffff, 0x00000006): - [0x000000d2, 0x000000d6): DW_OP_WASM_location 0x0 +12, DW_OP_stack_value - [0x0000025f, 0x00000263): DW_OP_WASM_location 0x0 +16, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019b] = "k") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000013b: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000001d7: - [0xffffffff, 0x00000006): - [0x000000ec, 0x000000f0): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x00000128, 0x0000012b): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x00000279, 0x0000027d): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x000002b5, 0x000002b8): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019d] = "j") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000014a: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x0000021f: - [0xffffffff, 0x00000006): - [0x00000101, 0x0000012b): DW_OP_WASM_location 0x0 +15, DW_OP_stack_value - [0x0000013c, 0x00000152): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x0000028e, 0x000002b8): DW_OP_WASM_location 0x0 +14, DW_OP_stack_value - [0x000002c9, 0x000002df): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019f] = "tmp") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000159: DW_TAG_lexical_block [14] * - DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 - [0x00000175, 0x000001b3) - [0x000001dd, 0x000001e6) - [0x00000302, 0x00000340) - [0x0000036a, 0x00000373)) - -0x0000015e: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000163] = "p0") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (74) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000169: NULL - -0x0000016a: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x000000000000001b) - -0x0000016f: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000021) - -0x00000174: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000027) - -0x00000179: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000000d1) - -0x0000017e: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x000000000000037e) - -0x00000187: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000382) - -0x00000190: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000386) - -0x00000199: NULL - -0x0000019a: DW_TAG_subprogram [17] * - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000010f] = "free") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libc/stdlib.h") - DW_AT_decl_line [DW_FORM_data1] (41) - DW_AT_declaration [DW_FORM_flag_present] (true) - DW_AT_external [DW_FORM_flag_present] (true) - -0x000001a1: DW_TAG_formal_parameter [18] - DW_AT_type [DW_FORM_ref4] (cu + 0x01a7 => {0x000001a7} "*") - -0x000001a6: NULL - -0x000001a7: DW_TAG_pointer_type [19] - -0x000001a8: DW_TAG_subprogram [20] * - DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x00000114] = "_ZL8fannkuchi") - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000122] = "fannkuch") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (87) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_inline [DW_FORM_data1] (DW_INL_inlined) - -0x000001b8: DW_TAG_formal_parameter [11] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (87) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000001c3: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000012b] = "showmax") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (90) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000001ce: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000133] = "args") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (89) - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - -0x000001d9: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000001e4: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000138] = "targs") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (89) - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - -0x000001ef: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000013e] = "perm1") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x000001fa: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000144] = "count") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x00000205: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014a] = "r") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000210: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014c] = "maxflips") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000021b: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000155] = "flips") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000226: DW_TAG_label [21] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000015b] = "cleanup") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (137) - -0x0000022d: DW_TAG_lexical_block [22] * - -0x0000022e: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000163] = "p0") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (125) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000239: NULL - -0x0000023a: NULL - -0x0000023b: DW_TAG_subprogram [23] * - DW_AT_low_pc [DW_FORM_addr] (0x000000000000038b) - DW_AT_high_pc [DW_FORM_data4] (0x000002fb) - DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) - DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000018c] = "main") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (152) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x00000253: DW_TAG_formal_parameter [11] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001a3] = "argc") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (152) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000025e: DW_TAG_formal_parameter [11] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001a8] = "argv") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (152) - DW_AT_type [DW_FORM_ref4] (cu + 0x0341 => {0x00000341} "char**") - -0x00000269: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x00000267: - [0xffffffff, 0x0000039f): - [0x00000012, 0x00000017): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (153) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000278: DW_TAG_inlined_subroutine [24] * - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01a8 => {0x000001a8} "_ZL8fannkuchi") - DW_AT_low_pc [DW_FORM_addr] (0x00000000000003c6) - DW_AT_high_pc [DW_FORM_data4] (0x0000026d) - DW_AT_call_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_call_line [DW_FORM_data1] (159) - DW_AT_call_column [DW_FORM_data1] (0x29) - -0x00000288: DW_TAG_formal_parameter [25] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01b8 => {0x000001b8} "n") - -0x0000028d: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x00000285: - [0xffffffff, 0x0000039f): - [0x00000025, 0x0000002e): DW_OP_consts +30, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01c3 => {0x000001c3} "showmax") - -0x00000296: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x000002a2: - [0xffffffff, 0x0000039f): - [0x00000025, 0x0000002e): DW_OP_lit0, DW_OP_stack_value - [0x000002ac, 0x000002c4): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01ce => {0x000001ce} "args") - -0x0000029f: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x000002cc: - [0xffffffff, 0x0000039f): - [0x00000025, 0x0000002e): DW_OP_consts +0, DW_OP_stack_value - [0x00000063, 0x00000068): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x0000006e, 0x0000008e): DW_OP_consts +0, DW_OP_stack_value - [0x000000a4, 0x000000a9): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x000000c2, 0x000000c6): DW_OP_consts +0, DW_OP_stack_value - [0x000000ed, 0x000000f2): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x0000013a, 0x0000014a): DW_OP_consts +0, DW_OP_stack_value - [0x000001be, 0x000001cc): DW_OP_consts +0, DW_OP_stack_value - [0x00000201, 0x00000215): DW_OP_consts +0, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01d9 => {0x000001d9} "i") - -0x000002a8: DW_TAG_variable [27] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01e4 => {0x000001e4} "targs") - -0x000002ad: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x00000354: - [0xffffffff, 0x0000039f): - [0x00000079, 0x0000008e): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01ef => {0x000001ef} "perm1") - -0x000002b6: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x00000372: - [0xffffffff, 0x0000039f): - [0x0000007f, 0x0000008e): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01fa => {0x000001fa} "count") - -0x000002bf: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x00000390: - [0xffffffff, 0x0000039f): - [0x000001a8, 0x000001af): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value - [0x00000273, 0x0000027a): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0205 => {0x00000205} "r") - -0x000002c8: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x000003e8: - [0xffffffff, 0x0000039f): - [0x0000028e, 0x00000299): DW_OP_consts +0, DW_OP_stack_value - [0x000002bc, 0x000002c4): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0210 => {0x00000210} "maxflips") - -0x000002d1: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x00000413: - [0xffffffff, 0x0000039f): - [0x000002a5, 0x000002c4): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x021b => {0x0000021b} "flips") - -0x000002da: DW_TAG_label [28] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0226 => {0x00000226} "cleanup") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000621) - -0x000002e3: DW_TAG_lexical_block [14] * - DW_AT_ranges [DW_FORM_sec_offset] (0x00000028 - [0x000004d9, 0x00000520) - [0x0000059e, 0x000005eb)) - -0x000002e8: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x000003bc: - [0xffffffff, 0x0000039f): - [0x00000141, 0x0000014a): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value - [0x00000208, 0x00000215): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x022e => {0x0000022e} "p0") - -0x000002f1: NULL - -0x000002f2: NULL - -0x000002f3: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000003af) - -0x000002f8: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000003bc) - -0x000002fd: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000003e2) - -0x00000302: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000416) - -0x00000307: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x000000000000041c) - -0x0000030c: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000484) - -0x00000311: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000496) - -0x00000316: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000561) - -0x0000031b: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000625) - -0x00000324: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000629) - -0x0000032d: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000642) - -0x00000332: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x000000000000064f) - -0x0000033b: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x000000000000067a) - -0x00000340: NULL - -0x00000341: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x0346 => {0x00000346} "char*") - -0x00000346: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x034b => {0x0000034b} "char") - -0x0000034b: DW_TAG_base_type [5] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001ad] = "char") - DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char) - DW_AT_byte_size [DW_FORM_data1] (0x01) - -0x00000352: NULL - -.debug_loc contents: -0x00000000: - [0xffffffff, 0x00000006): - [0x00000000, 0x00000030): DW_OP_consts +0, DW_OP_stack_value - -0x0000001d: - [0xffffffff, 0x00000006): - [0x00000007, 0x00000030): DW_OP_consts +0, DW_OP_stack_value - [0x00000046, 0x0000004b): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x000000dc, 0x000000e5): DW_OP_consts +1, DW_OP_stack_value - [0x00000121, 0x0000012b): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000169, 0x00000176): DW_OP_consts +0, DW_OP_stack_value - [0x00000258, 0x00000263): DW_OP_consts +0, DW_OP_stack_value - [0x00000269, 0x00000272): DW_OP_consts +1, DW_OP_stack_value - [0x000002ae, 0x000002b8): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x000002f6, 0x00000303): DW_OP_consts +0, DW_OP_stack_value - -0x000000a5: - [0xffffffff, 0x00000006): - [0x0000000e, 0x00000030): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value - -0x000000c3: - [0xffffffff, 0x00000006): - [0x00000017, 0x00000030): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value - -0x000000e1: - [0xffffffff, 0x00000006): - [0x0000001d, 0x00000030): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value - -0x000000ff: - [0xffffffff, 0x00000006): - [0x00000023, 0x00000030): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value - -0x0000011d: - [0xffffffff, 0x00000006): - [0x000001d2, 0x000001d7): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value - [0x0000035f, 0x00000364): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value - -0x00000149: - [0xffffffff, 0x00000006): - [0x000000c3, 0x000000d6): DW_OP_consts +0, DW_OP_stack_value - [0x000000dc, 0x000000e5): DW_OP_WASM_location 0x0 +13, DW_OP_stack_value - [0x0000014a, 0x00000152): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000258, 0x00000263): DW_OP_consts +0, DW_OP_stack_value - [0x00000269, 0x00000272): DW_OP_WASM_location 0x0 +10, DW_OP_stack_value - [0x000002d7, 0x000002df): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - -0x000001ab: - [0xffffffff, 0x00000006): - [0x000000d2, 0x000000d6): DW_OP_WASM_location 0x0 +12, DW_OP_stack_value - [0x0000025f, 0x00000263): DW_OP_WASM_location 0x0 +16, DW_OP_stack_value - -0x000001d7: - [0xffffffff, 0x00000006): - [0x000000ec, 0x000000f0): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x00000128, 0x0000012b): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x00000279, 0x0000027d): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x000002b5, 0x000002b8): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - -0x0000021f: - [0xffffffff, 0x00000006): - [0x00000101, 0x0000012b): DW_OP_WASM_location 0x0 +15, DW_OP_stack_value - [0x0000013c, 0x00000152): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x0000028e, 0x000002b8): DW_OP_WASM_location 0x0 +14, DW_OP_stack_value - [0x000002c9, 0x000002df): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - -0x00000267: - [0xffffffff, 0x0000039f): - [0x00000012, 0x00000017): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value - -0x00000285: - [0xffffffff, 0x0000039f): - [0x00000025, 0x0000002e): DW_OP_consts +30, DW_OP_stack_value - -0x000002a2: - [0xffffffff, 0x0000039f): - [0x00000025, 0x0000002e): DW_OP_lit0, DW_OP_stack_value - [0x000002ac, 0x000002c4): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value - -0x000002cc: - [0xffffffff, 0x0000039f): - [0x00000025, 0x0000002e): DW_OP_consts +0, DW_OP_stack_value - [0x00000063, 0x00000068): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x0000006e, 0x0000008e): DW_OP_consts +0, DW_OP_stack_value - [0x000000a4, 0x000000a9): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x000000c2, 0x000000c6): DW_OP_consts +0, DW_OP_stack_value - [0x000000ed, 0x000000f2): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x0000013a, 0x0000014a): DW_OP_consts +0, DW_OP_stack_value - [0x000001be, 0x000001cc): DW_OP_consts +0, DW_OP_stack_value - [0x00000201, 0x00000215): DW_OP_consts +0, DW_OP_stack_value - -0x00000354: - [0xffffffff, 0x0000039f): - [0x00000079, 0x0000008e): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - -0x00000372: - [0xffffffff, 0x0000039f): - [0x0000007f, 0x0000008e): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value - -0x00000390: - [0xffffffff, 0x0000039f): - [0x000001a8, 0x000001af): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value - [0x00000273, 0x0000027a): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value - -0x000003bc: - [0xffffffff, 0x0000039f): - [0x00000141, 0x0000014a): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value - [0x00000208, 0x00000215): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value - -0x000003e8: - [0xffffffff, 0x0000039f): - [0x0000028e, 0x00000299): DW_OP_consts +0, DW_OP_stack_value - [0x000002bc, 0x000002c4): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - -0x00000413: - [0xffffffff, 0x0000039f): - [0x000002a5, 0x000002c4): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - -.debug_line contents: -debug_line[0x00000000] -Line table prologue: - total_length: 0x00000b06 - version: 4 - prologue_length: 0x000000dd - min_inst_length: 1 -max_ops_per_inst: 1 - default_is_stmt: 1 - line_base: -5 - line_range: 14 - opcode_base: 13 -standard_opcode_lengths[DW_LNS_copy] = 0 -standard_opcode_lengths[DW_LNS_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_advance_line] = 1 -standard_opcode_lengths[DW_LNS_set_file] = 1 -standard_opcode_lengths[DW_LNS_set_column] = 1 -standard_opcode_lengths[DW_LNS_negate_stmt] = 0 -standard_opcode_lengths[DW_LNS_set_basic_block] = 0 -standard_opcode_lengths[DW_LNS_const_add_pc] = 0 -standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 -standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 -standard_opcode_lengths[DW_LNS_set_isa] = 1 -include_directories[ 1] = "/usr/local/google/home/azakai/Dev" -file_names[ 1]: - name: "emscripten/tests/fannkuch.cpp" - dir_index: 1 - mod_time: 0x00000000 - length: 0x00000000 -file_names[ 2]: - name: "emscripten/system/include/libcxx/__nullptr" - dir_index: 1 - mod_time: 0x00000000 - length: 0x00000000 -file_names[ 3]: - name: "emscripten/system/include/libcxx/stddef.h" - dir_index: 1 - mod_time: 0x00000000 - length: 0x00000000 -file_names[ 4]: - name: "emscripten/system/include/libc/stdlib.h" - dir_index: 1 - mod_time: 0x00000000 - length: 0x00000000 -0x000000e7: 00 DW_LNE_set_address (0x0000000000000006) -0x000000ee: 03 DW_LNS_advance_line (27) -0x000000f0: 01 DW_LNS_copy - 0x0000000000000006 27 0 1 0 0 is_stmt - - -0x000000f1: 00 DW_LNE_set_address (0x000000000000000d) -0x000000f8: 03 DW_LNS_advance_line (33) -0x000000fa: 05 DW_LNS_set_column (14) -0x000000fc: 0a DW_LNS_set_prologue_end -0x000000fd: 01 DW_LNS_copy - 0x000000000000000d 33 14 1 0 0 is_stmt prologue_end - - -0x000000fe: 00 DW_LNE_set_address (0x0000000000000016) -0x00000105: 03 DW_LNS_advance_line (34) -0x00000107: 05 DW_LNS_set_column (27) -0x00000109: 01 DW_LNS_copy - 0x0000000000000016 34 27 1 0 0 is_stmt - - -0x0000010a: 00 DW_LNE_set_address (0x0000000000000017) -0x00000111: 05 DW_LNS_set_column (18) -0x00000113: 06 DW_LNS_negate_stmt -0x00000114: 01 DW_LNS_copy - 0x0000000000000017 34 18 1 0 0 - - -0x00000115: 00 DW_LNE_set_address (0x000000000000001d) -0x0000011c: 03 DW_LNS_advance_line (35) -0x0000011e: 05 DW_LNS_set_column (17) -0x00000120: 06 DW_LNS_negate_stmt -0x00000121: 01 DW_LNS_copy - 0x000000000000001d 35 17 1 0 0 is_stmt - - -0x00000122: 00 DW_LNE_set_address (0x0000000000000023) -0x00000129: 03 DW_LNS_advance_line (36) -0x0000012b: 05 DW_LNS_set_column (18) -0x0000012d: 01 DW_LNS_copy - 0x0000000000000023 36 18 1 0 0 is_stmt - - -0x0000012e: 00 DW_LNE_set_address (0x000000000000002f) -0x00000135: 03 DW_LNS_advance_line (37) -0x00000137: 01 DW_LNS_copy - 0x000000000000002f 37 18 1 0 0 is_stmt - - -0x00000138: 00 DW_LNE_set_address (0x0000000000000034) -0x0000013f: 05 DW_LNS_set_column (4) -0x00000141: 06 DW_LNS_negate_stmt -0x00000142: 01 DW_LNS_copy - 0x0000000000000034 37 4 1 0 0 - - -0x00000143: 00 DW_LNE_set_address (0x0000000000000038) -0x0000014a: 03 DW_LNS_advance_line (38) -0x0000014c: 05 DW_LNS_set_column (7) -0x0000014e: 06 DW_LNS_negate_stmt -0x0000014f: 01 DW_LNS_copy - 0x0000000000000038 38 7 1 0 0 is_stmt - - -0x00000150: 00 DW_LNE_set_address (0x0000000000000040) -0x00000157: 05 DW_LNS_set_column (16) -0x00000159: 06 DW_LNS_negate_stmt -0x0000015a: 01 DW_LNS_copy - 0x0000000000000040 38 16 1 0 0 - - -0x0000015b: 00 DW_LNE_set_address (0x0000000000000045) -0x00000162: 03 DW_LNS_advance_line (37) -0x00000164: 05 DW_LNS_set_column (24) -0x00000166: 06 DW_LNS_negate_stmt -0x00000167: 01 DW_LNS_copy - 0x0000000000000045 37 24 1 0 0 is_stmt - - -0x00000168: 00 DW_LNE_set_address (0x000000000000004a) -0x0000016f: 05 DW_LNS_set_column (18) -0x00000171: 06 DW_LNS_negate_stmt -0x00000172: 01 DW_LNS_copy - 0x000000000000004a 37 18 1 0 0 - - -0x00000173: 00 DW_LNE_set_address (0x000000000000004f) -0x0000017a: 05 DW_LNS_set_column (4) -0x0000017c: 01 DW_LNS_copy - 0x000000000000004f 37 4 1 0 0 - - -0x0000017d: 00 DW_LNE_set_address (0x0000000000000052) -0x00000184: 03 DW_LNS_advance_line (39) -0x00000186: 06 DW_LNS_negate_stmt -0x00000187: 01 DW_LNS_copy - 0x0000000000000052 39 4 1 0 0 is_stmt - - -0x00000188: 00 DW_LNE_set_address (0x0000000000000054) -0x0000018f: 05 DW_LNS_set_column (16) -0x00000191: 06 DW_LNS_negate_stmt -0x00000192: 01 DW_LNS_copy - 0x0000000000000054 39 16 1 0 0 - - -0x00000193: 00 DW_LNE_set_address (0x000000000000005d) -0x0000019a: 05 DW_LNS_set_column (4) -0x0000019c: 01 DW_LNS_copy - 0x000000000000005d 39 4 1 0 0 - - -0x0000019d: 00 DW_LNE_set_address (0x000000000000005f) -0x000001a4: 05 DW_LNS_set_column (23) -0x000001a6: 01 DW_LNS_copy - 0x000000000000005f 39 23 1 0 0 - - -0x000001a7: 00 DW_LNE_set_address (0x0000000000000064) -0x000001ae: 05 DW_LNS_set_column (19) -0x000001b0: 01 DW_LNS_copy - 0x0000000000000064 39 19 1 0 0 - - -0x000001b1: 00 DW_LNE_set_address (0x0000000000000069) -0x000001b8: 03 DW_LNS_advance_line (40) -0x000001ba: 05 DW_LNS_set_column (4) -0x000001bc: 06 DW_LNS_negate_stmt -0x000001bd: 01 DW_LNS_copy - 0x0000000000000069 40 4 1 0 0 is_stmt - - -0x000001be: 00 DW_LNE_set_address (0x0000000000000071) -0x000001c5: 05 DW_LNS_set_column (17) -0x000001c7: 06 DW_LNS_negate_stmt -0x000001c8: 01 DW_LNS_copy - 0x0000000000000071 40 17 1 0 0 - - -0x000001c9: 00 DW_LNE_set_address (0x000000000000007c) -0x000001d0: 03 DW_LNS_advance_line (37) -0x000001d2: 05 DW_LNS_set_column (18) -0x000001d4: 06 DW_LNS_negate_stmt -0x000001d5: 01 DW_LNS_copy - 0x000000000000007c 37 18 1 0 0 is_stmt - - -0x000001d6: 00 DW_LNE_set_address (0x0000000000000081) -0x000001dd: 03 DW_LNS_advance_line (43) -0x000001df: 05 DW_LNS_set_column (4) -0x000001e1: 01 DW_LNS_copy - 0x0000000000000081 43 4 1 0 0 is_stmt - - -0x000001e2: 00 DW_LNE_set_address (0x0000000000000087) -0x000001e9: 03 DW_LNS_advance_line (44) -0x000001eb: 05 DW_LNS_set_column (16) -0x000001ed: 01 DW_LNS_copy - 0x0000000000000087 44 16 1 0 0 is_stmt - - -0x000001ee: 00 DW_LNE_set_address (0x0000000000000090) -0x000001f5: 03 DW_LNS_advance_line (45) -0x000001f7: 05 DW_LNS_set_column (10) -0x000001f9: 01 DW_LNS_copy - 0x0000000000000090 45 10 1 0 0 is_stmt - - -0x000001fa: 00 DW_LNE_set_address (0x0000000000000092) -0x00000201: 05 DW_LNS_set_column (18) -0x00000203: 06 DW_LNS_negate_stmt -0x00000204: 01 DW_LNS_copy - 0x0000000000000092 45 18 1 0 0 - - -0x00000205: 00 DW_LNE_set_address (0x000000000000009b) -0x0000020c: 05 DW_LNS_set_column (10) -0x0000020e: 01 DW_LNS_copy - 0x000000000000009b 45 10 1 0 0 - - -0x0000020f: 00 DW_LNE_set_address (0x000000000000009d) -0x00000216: 05 DW_LNS_set_column (23) -0x00000218: 01 DW_LNS_copy - 0x000000000000009d 45 23 1 0 0 - - -0x00000219: 00 DW_LNE_set_address (0x00000000000000a2) -0x00000220: 03 DW_LNS_advance_line (44) -0x00000222: 05 DW_LNS_set_column (16) -0x00000224: 06 DW_LNS_negate_stmt -0x00000225: 01 DW_LNS_copy - 0x00000000000000a2 44 16 1 0 0 is_stmt - - -0x00000226: 00 DW_LNE_set_address (0x00000000000000ad) -0x0000022d: 05 DW_LNS_set_column (7) -0x0000022f: 06 DW_LNS_negate_stmt -0x00000230: 01 DW_LNS_copy - 0x00000000000000ad 44 7 1 0 0 - - -0x00000231: 00 DW_LNE_set_address (0x00000000000000b3) -0x00000238: 03 DW_LNS_advance_line (46) -0x0000023a: 05 DW_LNS_set_column (11) -0x0000023c: 06 DW_LNS_negate_stmt -0x0000023d: 01 DW_LNS_copy - 0x00000000000000b3 46 11 1 0 0 is_stmt - - -0x0000023e: 00 DW_LNE_set_address (0x00000000000000bf) -0x00000245: 05 DW_LNS_set_column (28) -0x00000247: 06 DW_LNS_negate_stmt -0x00000248: 01 DW_LNS_copy - 0x00000000000000bf 46 28 1 0 0 - - -0x00000249: 00 DW_LNE_set_address (0x00000000000000c4) -0x00000250: 05 DW_LNS_set_column (41) -0x00000252: 01 DW_LNS_copy - 0x00000000000000c4 46 41 1 0 0 - - -0x00000253: 00 DW_LNE_set_address (0x00000000000000c9) -0x0000025a: 03 DW_LNS_advance_line (48) -0x0000025c: 05 DW_LNS_set_column (21) -0x0000025e: 06 DW_LNS_negate_stmt -0x0000025f: 01 DW_LNS_copy - 0x00000000000000c9 48 21 1 0 0 is_stmt - - -0x00000260: 00 DW_LNE_set_address (0x00000000000000d1) -0x00000267: 03 DW_LNS_advance_line (50) -0x00000269: 05 DW_LNS_set_column (14) -0x0000026b: 01 DW_LNS_copy - 0x00000000000000d1 50 14 1 0 0 is_stmt - - -0x0000026c: 00 DW_LNE_set_address (0x00000000000000e4) -0x00000273: 03 DW_LNS_advance_line (52) -0x00000275: 05 DW_LNS_set_column (38) -0x00000277: 01 DW_LNS_copy - 0x00000000000000e4 52 38 1 0 0 is_stmt - - -0x00000278: 00 DW_LNE_set_address (0x00000000000000f8) -0x0000027f: 03 DW_LNS_advance_line (53) -0x00000281: 05 DW_LNS_set_column (22) -0x00000283: 01 DW_LNS_copy - 0x00000000000000f8 53 22 1 0 0 is_stmt - - -0x00000284: 00 DW_LNE_set_address (0x0000000000000107) -0x0000028b: 03 DW_LNS_advance_line (54) -0x0000028d: 05 DW_LNS_set_column (24) -0x0000028f: 01 DW_LNS_copy - 0x0000000000000107 54 24 1 0 0 is_stmt - - -0x00000290: 00 DW_LNE_set_address (0x0000000000000109) -0x00000297: 05 DW_LNS_set_column (26) -0x00000299: 06 DW_LNS_negate_stmt -0x0000029a: 01 DW_LNS_copy - 0x0000000000000109 54 26 1 0 0 - - -0x0000029b: 00 DW_LNE_set_address (0x0000000000000116) -0x000002a2: 05 DW_LNS_set_column (24) -0x000002a4: 01 DW_LNS_copy - 0x0000000000000116 54 24 1 0 0 - - -0x000002a5: 00 DW_LNE_set_address (0x0000000000000119) -0x000002ac: 03 DW_LNS_advance_line (55) -0x000002ae: 06 DW_LNS_negate_stmt -0x000002af: 01 DW_LNS_copy - 0x0000000000000119 55 24 1 0 0 is_stmt - - -0x000002b0: 00 DW_LNE_set_address (0x0000000000000120) -0x000002b7: 03 DW_LNS_advance_line (52) -0x000002b9: 05 DW_LNS_set_column (44) -0x000002bb: 01 DW_LNS_copy - 0x0000000000000120 52 44 1 0 0 is_stmt - - -0x000002bc: 00 DW_LNE_set_address (0x000000000000012c) -0x000002c3: 05 DW_LNS_set_column (38) -0x000002c5: 06 DW_LNS_negate_stmt -0x000002c6: 01 DW_LNS_copy - 0x000000000000012c 52 38 1 0 0 - - -0x000002c7: 00 DW_LNE_set_address (0x000000000000012f) -0x000002ce: 05 DW_LNS_set_column (13) -0x000002d0: 01 DW_LNS_copy - 0x000000000000012f 52 13 1 0 0 - - -0x000002d1: 00 DW_LNE_set_address (0x0000000000000133) -0x000002d8: 03 DW_LNS_advance_line (58) -0x000002da: 05 DW_LNS_set_column (19) -0x000002dc: 06 DW_LNS_negate_stmt -0x000002dd: 01 DW_LNS_copy - 0x0000000000000133 58 19 1 0 0 is_stmt - - -0x000002de: 00 DW_LNE_set_address (0x0000000000000142) -0x000002e5: 03 DW_LNS_advance_line (59) -0x000002e7: 05 DW_LNS_set_column (21) -0x000002e9: 01 DW_LNS_copy - 0x0000000000000142 59 21 1 0 0 is_stmt - - -0x000002ea: 00 DW_LNE_set_address (0x0000000000000149) -0x000002f1: 03 DW_LNS_advance_line (57) -0x000002f3: 05 DW_LNS_set_column (18) -0x000002f5: 01 DW_LNS_copy - 0x0000000000000149 57 18 1 0 0 is_stmt - - -0x000002f6: 00 DW_LNE_set_address (0x0000000000000159) -0x000002fd: 03 DW_LNS_advance_line (62) -0x000002ff: 05 DW_LNS_set_column (14) -0x00000301: 01 DW_LNS_copy - 0x0000000000000159 62 14 1 0 0 is_stmt - - -0x00000302: 00 DW_LNE_set_address (0x000000000000015d) -0x00000309: 05 DW_LNS_set_column (23) -0x0000030b: 06 DW_LNS_negate_stmt -0x0000030c: 01 DW_LNS_copy - 0x000000000000015d 62 23 1 0 0 - - -0x0000030d: 00 DW_LNE_set_address (0x0000000000000162) -0x00000314: 05 DW_LNS_set_column (14) -0x00000316: 01 DW_LNS_copy - 0x0000000000000162 62 14 1 0 0 - - -0x00000317: 00 DW_LNE_set_address (0x0000000000000166) -0x0000031e: 03 DW_LNS_advance_line (66) -0x00000320: 05 DW_LNS_set_column (16) -0x00000322: 06 DW_LNS_negate_stmt -0x00000323: 01 DW_LNS_copy - 0x0000000000000166 66 16 1 0 0 is_stmt - - -0x00000324: 00 DW_LNE_set_address (0x0000000000000175) -0x0000032b: 03 DW_LNS_advance_line (75) -0x0000032d: 05 DW_LNS_set_column (27) -0x0000032f: 01 DW_LNS_copy - 0x0000000000000175 75 27 1 0 0 is_stmt - - -0x00000330: 00 DW_LNE_set_address (0x000000000000017e) -0x00000337: 03 DW_LNS_advance_line (76) -0x00000339: 05 DW_LNS_set_column (16) -0x0000033b: 01 DW_LNS_copy - 0x000000000000017e 76 16 1 0 0 is_stmt - - -0x0000033c: 00 DW_LNE_set_address (0x0000000000000186) -0x00000343: 05 DW_LNS_set_column (27) -0x00000345: 06 DW_LNS_negate_stmt -0x00000346: 01 DW_LNS_copy - 0x0000000000000186 76 27 1 0 0 - - -0x00000347: 00 DW_LNE_set_address (0x0000000000000188) -0x0000034e: 05 DW_LNS_set_column (35) -0x00000350: 01 DW_LNS_copy - 0x0000000000000188 76 35 1 0 0 - - -0x00000351: 00 DW_LNE_set_address (0x0000000000000191) -0x00000358: 05 DW_LNS_set_column (27) -0x0000035a: 01 DW_LNS_copy - 0x0000000000000191 76 27 1 0 0 - - -0x0000035b: 00 DW_LNE_set_address (0x0000000000000196) -0x00000362: 05 DW_LNS_set_column (25) -0x00000364: 01 DW_LNS_copy - 0x0000000000000196 76 25 1 0 0 - - -0x00000365: 00 DW_LNE_set_address (0x0000000000000199) -0x0000036c: 03 DW_LNS_advance_line (75) -0x0000036e: 05 DW_LNS_set_column (27) -0x00000370: 06 DW_LNS_negate_stmt -0x00000371: 01 DW_LNS_copy - 0x0000000000000199 75 27 1 0 0 is_stmt - - -0x00000372: 00 DW_LNE_set_address (0x000000000000019e) -0x00000379: 05 DW_LNS_set_column (13) -0x0000037b: 06 DW_LNS_negate_stmt -0x0000037c: 01 DW_LNS_copy - 0x000000000000019e 75 13 1 0 0 - - -0x0000037d: 00 DW_LNE_set_address (0x00000000000001a6) -0x00000384: 03 DW_LNS_advance_line (77) -0x00000386: 06 DW_LNS_negate_stmt -0x00000387: 01 DW_LNS_copy - 0x00000000000001a6 77 13 1 0 0 is_stmt - - -0x00000388: 00 DW_LNE_set_address (0x00000000000001ae) -0x0000038f: 05 DW_LNS_set_column (22) -0x00000391: 06 DW_LNS_negate_stmt -0x00000392: 01 DW_LNS_copy - 0x00000000000001ae 77 22 1 0 0 - - -0x00000393: 00 DW_LNE_set_address (0x00000000000001b3) -0x0000039a: 03 DW_LNS_advance_line (79) -0x0000039c: 05 DW_LNS_set_column (16) -0x0000039e: 06 DW_LNS_negate_stmt -0x0000039f: 01 DW_LNS_copy - 0x00000000000001b3 79 16 1 0 0 is_stmt - - -0x000003a0: 00 DW_LNE_set_address (0x00000000000001bb) -0x000003a7: 05 DW_LNS_set_column (14) -0x000003a9: 06 DW_LNS_negate_stmt -0x000003aa: 01 DW_LNS_copy - 0x00000000000001bb 79 14 1 0 0 - - -0x000003ab: 00 DW_LNE_set_address (0x00000000000001ca) -0x000003b2: 05 DW_LNS_set_column (25) -0x000003b4: 01 DW_LNS_copy - 0x00000000000001ca 79 25 1 0 0 - - -0x000003b5: 00 DW_LNE_set_address (0x00000000000001d1) -0x000003bc: 03 DW_LNS_advance_line (81) -0x000003be: 05 DW_LNS_set_column (11) -0x000003c0: 06 DW_LNS_negate_stmt -0x000003c1: 01 DW_LNS_copy - 0x00000000000001d1 81 11 1 0 0 is_stmt - - -0x000003c2: 00 DW_LNE_set_address (0x00000000000001d6) -0x000003c9: 03 DW_LNS_advance_line (66) -0x000003cb: 05 DW_LNS_set_column (16) -0x000003cd: 01 DW_LNS_copy - 0x00000000000001d6 66 16 1 0 0 is_stmt - - -0x000003ce: 00 DW_LNE_set_address (0x00000000000001dd) -0x000003d5: 03 DW_LNS_advance_line (74) -0x000003d7: 05 DW_LNS_set_column (22) -0x000003d9: 01 DW_LNS_copy - 0x00000000000001dd 74 22 1 0 0 is_stmt - - -0x000003da: 00 DW_LNE_set_address (0x00000000000001e7) -0x000003e1: 03 DW_LNS_advance_line (37) -0x000003e3: 05 DW_LNS_set_column (4) -0x000003e5: 01 DW_LNS_copy - 0x00000000000001e7 37 4 1 0 0 is_stmt - - -0x000003e6: 00 DW_LNE_set_address (0x00000000000001ed) -0x000003ed: 03 DW_LNS_advance_line (39) -0x000003ef: 01 DW_LNS_copy - 0x00000000000001ed 39 4 1 0 0 is_stmt - - -0x000003f0: 00 DW_LNE_set_address (0x00000000000001ef) -0x000003f7: 05 DW_LNS_set_column (16) -0x000003f9: 06 DW_LNS_negate_stmt -0x000003fa: 01 DW_LNS_copy - 0x00000000000001ef 39 16 1 0 0 - - -0x000003fb: 00 DW_LNE_set_address (0x00000000000001f8) -0x00000402: 05 DW_LNS_set_column (4) -0x00000404: 01 DW_LNS_copy - 0x00000000000001f8 39 4 1 0 0 - - -0x00000405: 00 DW_LNE_set_address (0x00000000000001fa) -0x0000040c: 05 DW_LNS_set_column (23) -0x0000040e: 01 DW_LNS_copy - 0x00000000000001fa 39 23 1 0 0 - - -0x0000040f: 00 DW_LNE_set_address (0x00000000000001ff) -0x00000416: 05 DW_LNS_set_column (19) -0x00000418: 01 DW_LNS_copy - 0x00000000000001ff 39 19 1 0 0 - - -0x00000419: 00 DW_LNE_set_address (0x0000000000000204) -0x00000420: 03 DW_LNS_advance_line (40) -0x00000422: 05 DW_LNS_set_column (4) -0x00000424: 06 DW_LNS_negate_stmt -0x00000425: 01 DW_LNS_copy - 0x0000000000000204 40 4 1 0 0 is_stmt - - -0x00000426: 00 DW_LNE_set_address (0x000000000000020c) -0x0000042d: 05 DW_LNS_set_column (17) -0x0000042f: 06 DW_LNS_negate_stmt -0x00000430: 01 DW_LNS_copy - 0x000000000000020c 40 17 1 0 0 - - -0x00000431: 00 DW_LNE_set_address (0x000000000000021c) -0x00000438: 03 DW_LNS_advance_line (44) -0x0000043a: 05 DW_LNS_set_column (16) -0x0000043c: 06 DW_LNS_negate_stmt -0x0000043d: 01 DW_LNS_copy - 0x000000000000021c 44 16 1 0 0 is_stmt - - -0x0000043e: 00 DW_LNE_set_address (0x0000000000000225) -0x00000445: 03 DW_LNS_advance_line (45) -0x00000447: 05 DW_LNS_set_column (10) -0x00000449: 01 DW_LNS_copy - 0x0000000000000225 45 10 1 0 0 is_stmt - - -0x0000044a: 00 DW_LNE_set_address (0x0000000000000227) -0x00000451: 05 DW_LNS_set_column (18) -0x00000453: 06 DW_LNS_negate_stmt -0x00000454: 01 DW_LNS_copy - 0x0000000000000227 45 18 1 0 0 - - -0x00000455: 00 DW_LNE_set_address (0x0000000000000230) -0x0000045c: 05 DW_LNS_set_column (10) -0x0000045e: 01 DW_LNS_copy - 0x0000000000000230 45 10 1 0 0 - - -0x0000045f: 00 DW_LNE_set_address (0x0000000000000232) -0x00000466: 05 DW_LNS_set_column (23) -0x00000468: 01 DW_LNS_copy - 0x0000000000000232 45 23 1 0 0 - - -0x00000469: 00 DW_LNE_set_address (0x0000000000000237) -0x00000470: 03 DW_LNS_advance_line (44) -0x00000472: 05 DW_LNS_set_column (16) -0x00000474: 06 DW_LNS_negate_stmt -0x00000475: 01 DW_LNS_copy - 0x0000000000000237 44 16 1 0 0 is_stmt - - -0x00000476: 00 DW_LNE_set_address (0x0000000000000248) -0x0000047d: 03 DW_LNS_advance_line (46) -0x0000047f: 05 DW_LNS_set_column (11) -0x00000481: 01 DW_LNS_copy - 0x0000000000000248 46 11 1 0 0 is_stmt - - -0x00000482: 00 DW_LNE_set_address (0x0000000000000254) -0x00000489: 05 DW_LNS_set_column (28) -0x0000048b: 06 DW_LNS_negate_stmt -0x0000048c: 01 DW_LNS_copy - 0x0000000000000254 46 28 1 0 0 - - -0x0000048d: 00 DW_LNE_set_address (0x0000000000000259) -0x00000494: 05 DW_LNS_set_column (41) -0x00000496: 01 DW_LNS_copy - 0x0000000000000259 46 41 1 0 0 - - -0x00000497: 00 DW_LNE_set_address (0x000000000000025e) -0x0000049e: 03 DW_LNS_advance_line (50) -0x000004a0: 05 DW_LNS_set_column (14) -0x000004a2: 06 DW_LNS_negate_stmt -0x000004a3: 01 DW_LNS_copy - 0x000000000000025e 50 14 1 0 0 is_stmt - - -0x000004a4: 00 DW_LNE_set_address (0x0000000000000271) -0x000004ab: 03 DW_LNS_advance_line (52) -0x000004ad: 05 DW_LNS_set_column (38) -0x000004af: 01 DW_LNS_copy - 0x0000000000000271 52 38 1 0 0 is_stmt - - -0x000004b0: 00 DW_LNE_set_address (0x0000000000000285) -0x000004b7: 03 DW_LNS_advance_line (53) -0x000004b9: 05 DW_LNS_set_column (22) -0x000004bb: 01 DW_LNS_copy - 0x0000000000000285 53 22 1 0 0 is_stmt - - -0x000004bc: 00 DW_LNE_set_address (0x0000000000000294) -0x000004c3: 03 DW_LNS_advance_line (54) -0x000004c5: 05 DW_LNS_set_column (24) -0x000004c7: 01 DW_LNS_copy - 0x0000000000000294 54 24 1 0 0 is_stmt - - -0x000004c8: 00 DW_LNE_set_address (0x0000000000000296) -0x000004cf: 05 DW_LNS_set_column (26) -0x000004d1: 06 DW_LNS_negate_stmt -0x000004d2: 01 DW_LNS_copy - 0x0000000000000296 54 26 1 0 0 - - -0x000004d3: 00 DW_LNE_set_address (0x00000000000002a3) -0x000004da: 05 DW_LNS_set_column (24) -0x000004dc: 01 DW_LNS_copy - 0x00000000000002a3 54 24 1 0 0 - - -0x000004dd: 00 DW_LNE_set_address (0x00000000000002a6) -0x000004e4: 03 DW_LNS_advance_line (55) -0x000004e6: 06 DW_LNS_negate_stmt -0x000004e7: 01 DW_LNS_copy - 0x00000000000002a6 55 24 1 0 0 is_stmt - - -0x000004e8: 00 DW_LNE_set_address (0x00000000000002ad) -0x000004ef: 03 DW_LNS_advance_line (52) -0x000004f1: 05 DW_LNS_set_column (44) -0x000004f3: 01 DW_LNS_copy - 0x00000000000002ad 52 44 1 0 0 is_stmt - - -0x000004f4: 00 DW_LNE_set_address (0x00000000000002b9) -0x000004fb: 05 DW_LNS_set_column (38) -0x000004fd: 06 DW_LNS_negate_stmt -0x000004fe: 01 DW_LNS_copy - 0x00000000000002b9 52 38 1 0 0 - - -0x000004ff: 00 DW_LNE_set_address (0x00000000000002c0) -0x00000506: 03 DW_LNS_advance_line (58) -0x00000508: 05 DW_LNS_set_column (19) -0x0000050a: 06 DW_LNS_negate_stmt -0x0000050b: 01 DW_LNS_copy - 0x00000000000002c0 58 19 1 0 0 is_stmt - - -0x0000050c: 00 DW_LNE_set_address (0x00000000000002cf) -0x00000513: 03 DW_LNS_advance_line (59) -0x00000515: 05 DW_LNS_set_column (21) -0x00000517: 01 DW_LNS_copy - 0x00000000000002cf 59 21 1 0 0 is_stmt - - -0x00000518: 00 DW_LNE_set_address (0x00000000000002d6) -0x0000051f: 03 DW_LNS_advance_line (57) -0x00000521: 05 DW_LNS_set_column (18) -0x00000523: 01 DW_LNS_copy - 0x00000000000002d6 57 18 1 0 0 is_stmt - - -0x00000524: 00 DW_LNE_set_address (0x00000000000002e6) -0x0000052b: 03 DW_LNS_advance_line (62) -0x0000052d: 05 DW_LNS_set_column (14) -0x0000052f: 01 DW_LNS_copy - 0x00000000000002e6 62 14 1 0 0 is_stmt - - -0x00000530: 00 DW_LNE_set_address (0x00000000000002ea) -0x00000537: 05 DW_LNS_set_column (23) -0x00000539: 06 DW_LNS_negate_stmt -0x0000053a: 01 DW_LNS_copy - 0x00000000000002ea 62 23 1 0 0 - - -0x0000053b: 00 DW_LNE_set_address (0x00000000000002ef) -0x00000542: 05 DW_LNS_set_column (14) -0x00000544: 01 DW_LNS_copy - 0x00000000000002ef 62 14 1 0 0 - - -0x00000545: 00 DW_LNE_set_address (0x00000000000002f3) -0x0000054c: 03 DW_LNS_advance_line (66) -0x0000054e: 05 DW_LNS_set_column (16) -0x00000550: 06 DW_LNS_negate_stmt -0x00000551: 01 DW_LNS_copy - 0x00000000000002f3 66 16 1 0 0 is_stmt - - -0x00000552: 00 DW_LNE_set_address (0x0000000000000302) -0x00000559: 03 DW_LNS_advance_line (75) -0x0000055b: 05 DW_LNS_set_column (27) -0x0000055d: 01 DW_LNS_copy - 0x0000000000000302 75 27 1 0 0 is_stmt - - -0x0000055e: 00 DW_LNE_set_address (0x000000000000030b) -0x00000565: 03 DW_LNS_advance_line (76) -0x00000567: 05 DW_LNS_set_column (16) -0x00000569: 01 DW_LNS_copy - 0x000000000000030b 76 16 1 0 0 is_stmt - - -0x0000056a: 00 DW_LNE_set_address (0x0000000000000313) -0x00000571: 05 DW_LNS_set_column (27) -0x00000573: 06 DW_LNS_negate_stmt -0x00000574: 01 DW_LNS_copy - 0x0000000000000313 76 27 1 0 0 - - -0x00000575: 00 DW_LNE_set_address (0x0000000000000315) -0x0000057c: 05 DW_LNS_set_column (35) -0x0000057e: 01 DW_LNS_copy - 0x0000000000000315 76 35 1 0 0 - - -0x0000057f: 00 DW_LNE_set_address (0x000000000000031e) -0x00000586: 05 DW_LNS_set_column (27) -0x00000588: 01 DW_LNS_copy - 0x000000000000031e 76 27 1 0 0 - - -0x00000589: 00 DW_LNE_set_address (0x0000000000000323) -0x00000590: 05 DW_LNS_set_column (25) -0x00000592: 01 DW_LNS_copy - 0x0000000000000323 76 25 1 0 0 - - -0x00000593: 00 DW_LNE_set_address (0x0000000000000326) -0x0000059a: 03 DW_LNS_advance_line (75) -0x0000059c: 05 DW_LNS_set_column (27) -0x0000059e: 06 DW_LNS_negate_stmt -0x0000059f: 01 DW_LNS_copy - 0x0000000000000326 75 27 1 0 0 is_stmt - - -0x000005a0: 00 DW_LNE_set_address (0x0000000000000333) -0x000005a7: 03 DW_LNS_advance_line (77) -0x000005a9: 05 DW_LNS_set_column (13) -0x000005ab: 01 DW_LNS_copy - 0x0000000000000333 77 13 1 0 0 is_stmt - - -0x000005ac: 00 DW_LNE_set_address (0x000000000000033b) -0x000005b3: 05 DW_LNS_set_column (22) -0x000005b5: 06 DW_LNS_negate_stmt -0x000005b6: 01 DW_LNS_copy - 0x000000000000033b 77 22 1 0 0 - - -0x000005b7: 00 DW_LNE_set_address (0x0000000000000340) -0x000005be: 03 DW_LNS_advance_line (79) -0x000005c0: 05 DW_LNS_set_column (16) -0x000005c2: 06 DW_LNS_negate_stmt -0x000005c3: 01 DW_LNS_copy - 0x0000000000000340 79 16 1 0 0 is_stmt - - -0x000005c4: 00 DW_LNE_set_address (0x0000000000000348) -0x000005cb: 05 DW_LNS_set_column (14) -0x000005cd: 06 DW_LNS_negate_stmt -0x000005ce: 01 DW_LNS_copy - 0x0000000000000348 79 14 1 0 0 - - -0x000005cf: 00 DW_LNE_set_address (0x0000000000000357) -0x000005d6: 05 DW_LNS_set_column (25) -0x000005d8: 01 DW_LNS_copy - 0x0000000000000357 79 25 1 0 0 - - -0x000005d9: 00 DW_LNE_set_address (0x000000000000035e) -0x000005e0: 03 DW_LNS_advance_line (81) -0x000005e2: 05 DW_LNS_set_column (11) -0x000005e4: 06 DW_LNS_negate_stmt -0x000005e5: 01 DW_LNS_copy - 0x000000000000035e 81 11 1 0 0 is_stmt - - -0x000005e6: 00 DW_LNE_set_address (0x0000000000000363) -0x000005ed: 03 DW_LNS_advance_line (66) -0x000005ef: 05 DW_LNS_set_column (16) -0x000005f1: 01 DW_LNS_copy - 0x0000000000000363 66 16 1 0 0 is_stmt - - -0x000005f2: 00 DW_LNE_set_address (0x000000000000036a) -0x000005f9: 03 DW_LNS_advance_line (74) -0x000005fb: 05 DW_LNS_set_column (22) -0x000005fd: 01 DW_LNS_copy - 0x000000000000036a 74 22 1 0 0 is_stmt - - -0x000005fe: 00 DW_LNE_set_address (0x000000000000037a) -0x00000605: 03 DW_LNS_advance_line (67) -0x00000607: 05 DW_LNS_set_column (13) -0x00000609: 01 DW_LNS_copy - 0x000000000000037a 67 13 1 0 0 is_stmt - - -0x0000060a: 00 DW_LNE_set_address (0x000000000000037e) -0x00000611: 03 DW_LNS_advance_line (68) -0x00000613: 01 DW_LNS_copy - 0x000000000000037e 68 13 1 0 0 is_stmt - - -0x00000614: 00 DW_LNE_set_address (0x0000000000000382) -0x0000061b: 03 DW_LNS_advance_line (69) -0x0000061d: 01 DW_LNS_copy - 0x0000000000000382 69 13 1 0 0 is_stmt - - -0x0000061e: 00 DW_LNE_set_address (0x0000000000000386) -0x00000625: 03 DW_LNS_advance_line (70) -0x00000627: 01 DW_LNS_copy - 0x0000000000000386 70 13 1 0 0 is_stmt - - -0x00000628: 00 DW_LNE_set_address (0x0000000000000389) -0x0000062f: 00 DW_LNE_end_sequence - 0x0000000000000389 70 13 1 0 0 is_stmt end_sequence - -0x00000632: 00 DW_LNE_set_address (0x000000000000038b) -0x00000639: 03 DW_LNS_advance_line (152) -0x0000063c: 01 DW_LNS_copy - 0x000000000000038b 152 0 1 0 0 is_stmt - - -0x0000063d: 00 DW_LNE_set_address (0x000000000000039d) -0x00000644: 03 DW_LNS_advance_line (153) -0x00000646: 05 DW_LNS_set_column (17) -0x00000648: 0a DW_LNS_set_prologue_end -0x00000649: 01 DW_LNS_copy - 0x000000000000039d 153 17 1 0 0 is_stmt prologue_end - - -0x0000064a: 00 DW_LNE_set_address (0x00000000000003a2) -0x00000651: 05 DW_LNS_set_column (12) -0x00000653: 06 DW_LNS_negate_stmt -0x00000654: 01 DW_LNS_copy - 0x00000000000003a2 153 12 1 0 0 - - -0x00000655: 00 DW_LNE_set_address (0x00000000000003a8) -0x0000065c: 05 DW_LNS_set_column (28) -0x0000065e: 01 DW_LNS_copy - 0x00000000000003a8 153 28 1 0 0 - - -0x0000065f: 00 DW_LNE_set_address (0x00000000000003ad) -0x00000666: 05 DW_LNS_set_column (23) -0x00000668: 01 DW_LNS_copy - 0x00000000000003ad 153 23 1 0 0 - - -0x00000669: 00 DW_LNE_set_address (0x00000000000003b3) -0x00000670: 03 DW_LNS_advance_line (155) -0x00000672: 05 DW_LNS_set_column (10) -0x00000674: 06 DW_LNS_negate_stmt -0x00000675: 01 DW_LNS_copy - 0x00000000000003b3 155 10 1 0 0 is_stmt - - -0x00000676: 00 DW_LNE_set_address (0x00000000000003b4) -0x0000067d: 05 DW_LNS_set_column (8) -0x0000067f: 06 DW_LNS_negate_stmt -0x00000680: 01 DW_LNS_copy - 0x00000000000003b4 155 8 1 0 0 - - -0x00000681: 00 DW_LNE_set_address (0x00000000000003b7) -0x00000688: 03 DW_LNS_advance_line (156) -0x0000068a: 05 DW_LNS_set_column (7) -0x0000068c: 06 DW_LNS_negate_stmt -0x0000068d: 01 DW_LNS_copy - 0x00000000000003b7 156 7 1 0 0 is_stmt - - -0x0000068e: 00 DW_LNE_set_address (0x00000000000003c6) -0x00000695: 03 DW_LNS_advance_line (94) -0x00000697: 05 DW_LNS_set_column (18) -0x00000699: 01 DW_LNS_copy - 0x00000000000003c6 94 18 1 0 0 is_stmt - - -0x0000069a: 00 DW_LNE_set_address (0x00000000000003cb) -0x000006a1: 05 DW_LNS_set_column (4) -0x000006a3: 06 DW_LNS_negate_stmt -0x000006a4: 01 DW_LNS_copy - 0x00000000000003cb 94 4 1 0 0 - - -0x000006a5: 00 DW_LNE_set_address (0x00000000000003e0) -0x000006ac: 03 DW_LNS_advance_line (95) -0x000006ae: 05 DW_LNS_set_column (29) -0x000006b0: 06 DW_LNS_negate_stmt -0x000006b1: 01 DW_LNS_copy - 0x00000000000003e0 95 29 1 0 0 is_stmt - - -0x000006b2: 00 DW_LNE_set_address (0x00000000000003e2) -0x000006b9: 03 DW_LNS_advance_line (98) -0x000006bb: 05 DW_LNS_set_column (19) -0x000006bd: 01 DW_LNS_copy - 0x00000000000003e2 98 19 1 0 0 is_stmt - - -0x000006be: 00 DW_LNE_set_address (0x00000000000003e9) -0x000006c5: 03 DW_LNS_advance_line (97) -0x000006c7: 05 DW_LNS_set_column (16) -0x000006c9: 01 DW_LNS_copy - 0x00000000000003e9 97 16 1 0 0 is_stmt - - -0x000006ca: 00 DW_LNE_set_address (0x00000000000003f0) -0x000006d1: 03 DW_LNS_advance_line (96) -0x000006d3: 01 DW_LNS_copy - 0x00000000000003f0 96 16 1 0 0 is_stmt - - -0x000006d4: 00 DW_LNE_set_address (0x00000000000003fb) -0x000006db: 03 DW_LNS_advance_line (94) -0x000006dd: 05 DW_LNS_set_column (28) -0x000006df: 01 DW_LNS_copy - 0x00000000000003fb 94 28 1 0 0 is_stmt - - -0x000006e0: 00 DW_LNE_set_address (0x0000000000000400) -0x000006e7: 05 DW_LNS_set_column (18) -0x000006e9: 06 DW_LNS_negate_stmt -0x000006ea: 01 DW_LNS_copy - 0x0000000000000400 94 18 1 0 0 - - -0x000006eb: 00 DW_LNE_set_address (0x0000000000000405) -0x000006f2: 05 DW_LNS_set_column (4) -0x000006f4: 01 DW_LNS_copy - 0x0000000000000405 94 4 1 0 0 - - -0x000006f5: 00 DW_LNE_set_address (0x000000000000040d) -0x000006fc: 03 DW_LNS_advance_line (102) -0x000006fe: 05 DW_LNS_set_column (27) -0x00000700: 06 DW_LNS_negate_stmt -0x00000701: 01 DW_LNS_copy - 0x000000000000040d 102 27 1 0 0 is_stmt - - -0x00000702: 00 DW_LNE_set_address (0x0000000000000412) -0x00000709: 05 DW_LNS_set_column (18) -0x0000070b: 06 DW_LNS_negate_stmt -0x0000070c: 01 DW_LNS_copy - 0x0000000000000412 102 18 1 0 0 - - -0x0000070d: 00 DW_LNE_set_address (0x0000000000000418) -0x00000714: 03 DW_LNS_advance_line (103) -0x00000716: 06 DW_LNS_negate_stmt -0x00000717: 01 DW_LNS_copy - 0x0000000000000418 103 18 1 0 0 is_stmt - - -0x00000718: 00 DW_LNE_set_address (0x0000000000000426) -0x0000071f: 03 DW_LNS_advance_line (105) -0x00000721: 01 DW_LNS_copy - 0x0000000000000426 105 18 1 0 0 is_stmt - - -0x00000722: 00 DW_LNE_set_address (0x000000000000042b) -0x00000729: 05 DW_LNS_set_column (4) -0x0000072b: 06 DW_LNS_negate_stmt -0x0000072c: 01 DW_LNS_copy - 0x000000000000042b 105 4 1 0 0 - - -0x0000072d: 00 DW_LNE_set_address (0x000000000000042f) -0x00000734: 03 DW_LNS_advance_line (106) -0x00000736: 05 DW_LNS_set_column (7) -0x00000738: 06 DW_LNS_negate_stmt -0x00000739: 01 DW_LNS_copy - 0x000000000000042f 106 7 1 0 0 is_stmt - - -0x0000073a: 00 DW_LNE_set_address (0x0000000000000437) -0x00000741: 05 DW_LNS_set_column (16) -0x00000743: 06 DW_LNS_negate_stmt -0x00000744: 01 DW_LNS_copy - 0x0000000000000437 106 16 1 0 0 - - -0x00000745: 00 DW_LNE_set_address (0x000000000000043c) -0x0000074c: 03 DW_LNS_advance_line (105) -0x0000074e: 05 DW_LNS_set_column (24) -0x00000750: 06 DW_LNS_negate_stmt -0x00000751: 01 DW_LNS_copy - 0x000000000000043c 105 24 1 0 0 is_stmt - - -0x00000752: 00 DW_LNE_set_address (0x0000000000000441) -0x00000759: 05 DW_LNS_set_column (18) -0x0000075b: 06 DW_LNS_negate_stmt -0x0000075c: 01 DW_LNS_copy - 0x0000000000000441 105 18 1 0 0 - - -0x0000075d: 00 DW_LNE_set_address (0x0000000000000467) -0x00000764: 03 DW_LNS_advance_line (112) -0x00000766: 05 DW_LNS_set_column (13) -0x00000768: 06 DW_LNS_negate_stmt -0x00000769: 01 DW_LNS_copy - 0x0000000000000467 112 13 1 0 0 is_stmt - - -0x0000076a: 00 DW_LNE_set_address (0x0000000000000469) -0x00000771: 05 DW_LNS_set_column (26) -0x00000773: 06 DW_LNS_negate_stmt -0x00000774: 01 DW_LNS_copy - 0x0000000000000469 112 26 1 0 0 - - -0x00000775: 00 DW_LNE_set_address (0x0000000000000476) -0x0000077c: 05 DW_LNS_set_column (35) -0x0000077e: 01 DW_LNS_copy - 0x0000000000000476 112 35 1 0 0 - - -0x0000077f: 00 DW_LNE_set_address (0x0000000000000477) -0x00000786: 05 DW_LNS_set_column (13) -0x00000788: 01 DW_LNS_copy - 0x0000000000000477 112 13 1 0 0 - - -0x00000789: 00 DW_LNE_set_address (0x0000000000000485) -0x00000790: 03 DW_LNS_advance_line (111) -0x00000792: 05 DW_LNS_set_column (30) -0x00000794: 06 DW_LNS_negate_stmt -0x00000795: 01 DW_LNS_copy - 0x0000000000000485 111 30 1 0 0 is_stmt - - -0x00000796: 00 DW_LNE_set_address (0x000000000000048a) -0x0000079d: 05 DW_LNS_set_column (24) -0x0000079f: 06 DW_LNS_negate_stmt -0x000007a0: 01 DW_LNS_copy - 0x000000000000048a 111 24 1 0 0 - - -0x000007a1: 00 DW_LNE_set_address (0x000000000000048f) -0x000007a8: 05 DW_LNS_set_column (10) -0x000007aa: 01 DW_LNS_copy - 0x000000000000048f 111 10 1 0 0 - - -0x000007ab: 00 DW_LNE_set_address (0x0000000000000494) -0x000007b2: 03 DW_LNS_advance_line (113) -0x000007b4: 06 DW_LNS_negate_stmt -0x000007b5: 01 DW_LNS_copy - 0x0000000000000494 113 10 1 0 0 is_stmt - - -0x000007b6: 00 DW_LNE_set_address (0x0000000000000499) -0x000007bd: 03 DW_LNS_advance_line (118) -0x000007bf: 05 DW_LNS_set_column (16) -0x000007c1: 01 DW_LNS_copy - 0x0000000000000499 118 16 1 0 0 is_stmt - - -0x000007c2: 00 DW_LNE_set_address (0x000000000000049e) -0x000007c9: 05 DW_LNS_set_column (7) -0x000007cb: 06 DW_LNS_negate_stmt -0x000007cc: 01 DW_LNS_copy - 0x000000000000049e 118 7 1 0 0 - - -0x000007cd: 00 DW_LNE_set_address (0x00000000000004a2) -0x000007d4: 03 DW_LNS_advance_line (119) -0x000007d6: 05 DW_LNS_set_column (10) -0x000007d8: 06 DW_LNS_negate_stmt -0x000007d9: 01 DW_LNS_copy - 0x00000000000004a2 119 10 1 0 0 is_stmt - - -0x000007da: 00 DW_LNE_set_address (0x00000000000004a4) -0x000007e1: 05 DW_LNS_set_column (18) -0x000007e3: 06 DW_LNS_negate_stmt -0x000007e4: 01 DW_LNS_copy - 0x00000000000004a4 119 18 1 0 0 - - -0x000007e5: 00 DW_LNE_set_address (0x00000000000004ad) -0x000007ec: 05 DW_LNS_set_column (10) -0x000007ee: 01 DW_LNS_copy - 0x00000000000004ad 119 10 1 0 0 - - -0x000007ef: 00 DW_LNE_set_address (0x00000000000004af) -0x000007f6: 05 DW_LNS_set_column (23) -0x000007f8: 01 DW_LNS_copy - 0x00000000000004af 119 23 1 0 0 - - -0x000007f9: 00 DW_LNE_set_address (0x00000000000004b4) -0x00000800: 03 DW_LNS_advance_line (118) -0x00000802: 05 DW_LNS_set_column (16) -0x00000804: 06 DW_LNS_negate_stmt -0x00000805: 01 DW_LNS_copy - 0x00000000000004b4 118 16 1 0 0 is_stmt - - -0x00000806: 00 DW_LNE_set_address (0x00000000000004bf) -0x0000080d: 05 DW_LNS_set_column (7) -0x0000080f: 06 DW_LNS_negate_stmt -0x00000810: 01 DW_LNS_copy - 0x00000000000004bf 118 7 1 0 0 - - -0x00000811: 00 DW_LNE_set_address (0x00000000000004c5) -0x00000818: 03 DW_LNS_advance_line (122) -0x0000081a: 05 DW_LNS_set_column (16) -0x0000081c: 06 DW_LNS_negate_stmt -0x0000081d: 01 DW_LNS_copy - 0x00000000000004c5 122 16 1 0 0 is_stmt - - -0x0000081e: 00 DW_LNE_set_address (0x00000000000004d9) -0x00000825: 03 DW_LNS_advance_line (125) -0x00000827: 05 DW_LNS_set_column (22) -0x00000829: 01 DW_LNS_copy - 0x00000000000004d9 125 22 1 0 0 is_stmt - - -0x0000082a: 00 DW_LNE_set_address (0x00000000000004e2) -0x00000831: 03 DW_LNS_advance_line (126) -0x00000833: 05 DW_LNS_set_column (27) -0x00000835: 01 DW_LNS_copy - 0x00000000000004e2 126 27 1 0 0 is_stmt - - -0x00000836: 00 DW_LNE_set_address (0x00000000000004e7) -0x0000083d: 05 DW_LNS_set_column (13) -0x0000083f: 06 DW_LNS_negate_stmt -0x00000840: 01 DW_LNS_copy - 0x00000000000004e7 126 13 1 0 0 - - -0x00000841: 00 DW_LNE_set_address (0x00000000000004eb) -0x00000848: 03 DW_LNS_advance_line (127) -0x0000084a: 05 DW_LNS_set_column (16) -0x0000084c: 06 DW_LNS_negate_stmt -0x0000084d: 01 DW_LNS_copy - 0x00000000000004eb 127 16 1 0 0 is_stmt - - -0x0000084e: 00 DW_LNE_set_address (0x00000000000004f3) -0x00000855: 05 DW_LNS_set_column (27) -0x00000857: 06 DW_LNS_negate_stmt -0x00000858: 01 DW_LNS_copy - 0x00000000000004f3 127 27 1 0 0 - - -0x00000859: 00 DW_LNE_set_address (0x00000000000004f5) -0x00000860: 05 DW_LNS_set_column (35) -0x00000862: 01 DW_LNS_copy - 0x00000000000004f5 127 35 1 0 0 - - -0x00000863: 00 DW_LNE_set_address (0x00000000000004fe) -0x0000086a: 05 DW_LNS_set_column (27) -0x0000086c: 01 DW_LNS_copy - 0x00000000000004fe 127 27 1 0 0 - - -0x0000086d: 00 DW_LNE_set_address (0x0000000000000503) -0x00000874: 05 DW_LNS_set_column (25) -0x00000876: 01 DW_LNS_copy - 0x0000000000000503 127 25 1 0 0 - - -0x00000877: 00 DW_LNE_set_address (0x0000000000000506) -0x0000087e: 03 DW_LNS_advance_line (126) -0x00000880: 05 DW_LNS_set_column (27) -0x00000882: 06 DW_LNS_negate_stmt -0x00000883: 01 DW_LNS_copy - 0x0000000000000506 126 27 1 0 0 is_stmt - - -0x00000884: 00 DW_LNE_set_address (0x000000000000050b) -0x0000088b: 05 DW_LNS_set_column (13) -0x0000088d: 06 DW_LNS_negate_stmt -0x0000088e: 01 DW_LNS_copy - 0x000000000000050b 126 13 1 0 0 - - -0x0000088f: 00 DW_LNE_set_address (0x0000000000000513) -0x00000896: 03 DW_LNS_advance_line (128) -0x00000898: 06 DW_LNS_negate_stmt -0x00000899: 01 DW_LNS_copy - 0x0000000000000513 128 13 1 0 0 is_stmt - - -0x0000089a: 00 DW_LNE_set_address (0x000000000000051b) -0x000008a1: 05 DW_LNS_set_column (22) -0x000008a3: 06 DW_LNS_negate_stmt -0x000008a4: 01 DW_LNS_copy - 0x000000000000051b 128 22 1 0 0 - - -0x000008a5: 00 DW_LNE_set_address (0x0000000000000520) -0x000008ac: 03 DW_LNS_advance_line (130) -0x000008ae: 05 DW_LNS_set_column (16) -0x000008b0: 06 DW_LNS_negate_stmt -0x000008b1: 01 DW_LNS_copy - 0x0000000000000520 130 16 1 0 0 is_stmt - - -0x000008b2: 00 DW_LNE_set_address (0x0000000000000528) -0x000008b9: 05 DW_LNS_set_column (14) -0x000008bb: 06 DW_LNS_negate_stmt -0x000008bc: 01 DW_LNS_copy - 0x0000000000000528 130 14 1 0 0 - - -0x000008bd: 00 DW_LNE_set_address (0x0000000000000539) -0x000008c4: 05 DW_LNS_set_column (25) -0x000008c6: 01 DW_LNS_copy - 0x0000000000000539 130 25 1 0 0 - - -0x000008c7: 00 DW_LNE_set_address (0x000000000000053e) -0x000008ce: 05 DW_LNS_set_column (14) -0x000008d0: 01 DW_LNS_copy - 0x000000000000053e 130 14 1 0 0 - - -0x000008d1: 00 DW_LNE_set_address (0x0000000000000540) -0x000008d8: 03 DW_LNS_advance_line (133) -0x000008da: 05 DW_LNS_set_column (11) -0x000008dc: 06 DW_LNS_negate_stmt -0x000008dd: 01 DW_LNS_copy - 0x0000000000000540 133 11 1 0 0 is_stmt - - -0x000008de: 00 DW_LNE_set_address (0x0000000000000545) -0x000008e5: 03 DW_LNS_advance_line (122) -0x000008e7: 05 DW_LNS_set_column (16) -0x000008e9: 01 DW_LNS_copy - 0x0000000000000545 122 16 1 0 0 is_stmt - - -0x000008ea: 00 DW_LNE_set_address (0x000000000000054a) -0x000008f1: 05 DW_LNS_set_column (14) -0x000008f3: 06 DW_LNS_negate_stmt -0x000008f4: 01 DW_LNS_copy - 0x000000000000054a 122 14 1 0 0 - - -0x000008f5: 00 DW_LNE_set_address (0x000000000000054f) -0x000008fc: 03 DW_LNS_advance_line (130) -0x000008fe: 06 DW_LNS_negate_stmt -0x000008ff: 01 DW_LNS_copy - 0x000000000000054f 130 14 1 0 0 is_stmt - - -0x00000900: 00 DW_LNE_set_address (0x0000000000000550) -0x00000907: 03 DW_LNS_advance_line (110) -0x00000909: 05 DW_LNS_set_column (11) -0x0000090b: 01 DW_LNS_copy - 0x0000000000000550 110 11 1 0 0 is_stmt - - -0x0000090c: 00 DW_LNE_set_address (0x000000000000055f) -0x00000913: 03 DW_LNS_advance_line (113) -0x00000915: 05 DW_LNS_set_column (10) -0x00000917: 01 DW_LNS_copy - 0x000000000000055f 113 10 1 0 0 is_stmt - - -0x00000918: 00 DW_LNE_set_address (0x0000000000000564) -0x0000091f: 03 DW_LNS_advance_line (118) -0x00000921: 05 DW_LNS_set_column (16) -0x00000923: 01 DW_LNS_copy - 0x0000000000000564 118 16 1 0 0 is_stmt - - -0x00000924: 00 DW_LNE_set_address (0x0000000000000569) -0x0000092b: 05 DW_LNS_set_column (7) -0x0000092d: 06 DW_LNS_negate_stmt -0x0000092e: 01 DW_LNS_copy - 0x0000000000000569 118 7 1 0 0 - - -0x0000092f: 00 DW_LNE_set_address (0x000000000000056d) -0x00000936: 03 DW_LNS_advance_line (119) -0x00000938: 05 DW_LNS_set_column (10) -0x0000093a: 06 DW_LNS_negate_stmt -0x0000093b: 01 DW_LNS_copy - 0x000000000000056d 119 10 1 0 0 is_stmt - - -0x0000093c: 00 DW_LNE_set_address (0x000000000000056f) -0x00000943: 05 DW_LNS_set_column (18) -0x00000945: 06 DW_LNS_negate_stmt -0x00000946: 01 DW_LNS_copy - 0x000000000000056f 119 18 1 0 0 - - -0x00000947: 00 DW_LNE_set_address (0x0000000000000578) -0x0000094e: 05 DW_LNS_set_column (10) -0x00000950: 01 DW_LNS_copy - 0x0000000000000578 119 10 1 0 0 - - -0x00000951: 00 DW_LNE_set_address (0x000000000000057a) -0x00000958: 05 DW_LNS_set_column (23) -0x0000095a: 01 DW_LNS_copy - 0x000000000000057a 119 23 1 0 0 - - -0x0000095b: 00 DW_LNE_set_address (0x000000000000057f) -0x00000962: 03 DW_LNS_advance_line (118) -0x00000964: 05 DW_LNS_set_column (16) -0x00000966: 06 DW_LNS_negate_stmt -0x00000967: 01 DW_LNS_copy - 0x000000000000057f 118 16 1 0 0 is_stmt - - -0x00000968: 00 DW_LNE_set_address (0x000000000000058a) -0x0000096f: 05 DW_LNS_set_column (7) -0x00000971: 06 DW_LNS_negate_stmt -0x00000972: 01 DW_LNS_copy - 0x000000000000058a 118 7 1 0 0 - - -0x00000973: 00 DW_LNE_set_address (0x0000000000000590) -0x0000097a: 03 DW_LNS_advance_line (122) -0x0000097c: 05 DW_LNS_set_column (16) -0x0000097e: 06 DW_LNS_negate_stmt -0x0000097f: 01 DW_LNS_copy - 0x0000000000000590 122 16 1 0 0 is_stmt - - -0x00000980: 00 DW_LNE_set_address (0x0000000000000595) -0x00000987: 05 DW_LNS_set_column (14) -0x00000989: 06 DW_LNS_negate_stmt -0x0000098a: 01 DW_LNS_copy - 0x0000000000000595 122 14 1 0 0 - - -0x0000098b: 00 DW_LNE_set_address (0x000000000000059e) -0x00000992: 03 DW_LNS_advance_line (125) -0x00000994: 05 DW_LNS_set_column (22) -0x00000996: 06 DW_LNS_negate_stmt -0x00000997: 01 DW_LNS_copy - 0x000000000000059e 125 22 1 0 0 is_stmt - - -0x00000998: 00 DW_LNE_set_address (0x00000000000005ad) -0x0000099f: 03 DW_LNS_advance_line (126) -0x000009a1: 05 DW_LNS_set_column (27) -0x000009a3: 01 DW_LNS_copy - 0x00000000000005ad 126 27 1 0 0 is_stmt - - -0x000009a4: 00 DW_LNE_set_address (0x00000000000005b2) -0x000009ab: 05 DW_LNS_set_column (13) -0x000009ad: 06 DW_LNS_negate_stmt -0x000009ae: 01 DW_LNS_copy - 0x00000000000005b2 126 13 1 0 0 - - -0x000009af: 00 DW_LNE_set_address (0x00000000000005b6) -0x000009b6: 03 DW_LNS_advance_line (127) -0x000009b8: 05 DW_LNS_set_column (16) -0x000009ba: 06 DW_LNS_negate_stmt -0x000009bb: 01 DW_LNS_copy - 0x00000000000005b6 127 16 1 0 0 is_stmt - - -0x000009bc: 00 DW_LNE_set_address (0x00000000000005be) -0x000009c3: 05 DW_LNS_set_column (27) -0x000009c5: 06 DW_LNS_negate_stmt -0x000009c6: 01 DW_LNS_copy - 0x00000000000005be 127 27 1 0 0 - - -0x000009c7: 00 DW_LNE_set_address (0x00000000000005c0) -0x000009ce: 05 DW_LNS_set_column (35) -0x000009d0: 01 DW_LNS_copy - 0x00000000000005c0 127 35 1 0 0 - - -0x000009d1: 00 DW_LNE_set_address (0x00000000000005c9) -0x000009d8: 05 DW_LNS_set_column (27) -0x000009da: 01 DW_LNS_copy - 0x00000000000005c9 127 27 1 0 0 - - -0x000009db: 00 DW_LNE_set_address (0x00000000000005ce) -0x000009e2: 05 DW_LNS_set_column (25) -0x000009e4: 01 DW_LNS_copy - 0x00000000000005ce 127 25 1 0 0 - - -0x000009e5: 00 DW_LNE_set_address (0x00000000000005d1) -0x000009ec: 03 DW_LNS_advance_line (126) -0x000009ee: 05 DW_LNS_set_column (27) -0x000009f0: 06 DW_LNS_negate_stmt -0x000009f1: 01 DW_LNS_copy - 0x00000000000005d1 126 27 1 0 0 is_stmt - - -0x000009f2: 00 DW_LNE_set_address (0x00000000000005d6) -0x000009f9: 05 DW_LNS_set_column (13) -0x000009fb: 06 DW_LNS_negate_stmt -0x000009fc: 01 DW_LNS_copy - 0x00000000000005d6 126 13 1 0 0 - - -0x000009fd: 00 DW_LNE_set_address (0x00000000000005de) -0x00000a04: 03 DW_LNS_advance_line (128) -0x00000a06: 06 DW_LNS_negate_stmt -0x00000a07: 01 DW_LNS_copy - 0x00000000000005de 128 13 1 0 0 is_stmt - - -0x00000a08: 00 DW_LNE_set_address (0x00000000000005e6) -0x00000a0f: 05 DW_LNS_set_column (22) -0x00000a11: 06 DW_LNS_negate_stmt -0x00000a12: 01 DW_LNS_copy - 0x00000000000005e6 128 22 1 0 0 - - -0x00000a13: 00 DW_LNE_set_address (0x00000000000005eb) -0x00000a1a: 03 DW_LNS_advance_line (130) -0x00000a1c: 05 DW_LNS_set_column (16) -0x00000a1e: 06 DW_LNS_negate_stmt -0x00000a1f: 01 DW_LNS_copy - 0x00000000000005eb 130 16 1 0 0 is_stmt - - -0x00000a20: 00 DW_LNE_set_address (0x00000000000005f3) -0x00000a27: 05 DW_LNS_set_column (14) -0x00000a29: 06 DW_LNS_negate_stmt -0x00000a2a: 01 DW_LNS_copy - 0x00000000000005f3 130 14 1 0 0 - - -0x00000a2b: 00 DW_LNE_set_address (0x0000000000000604) -0x00000a32: 05 DW_LNS_set_column (25) -0x00000a34: 01 DW_LNS_copy - 0x0000000000000604 130 25 1 0 0 - - -0x00000a35: 00 DW_LNE_set_address (0x0000000000000609) -0x00000a3c: 05 DW_LNS_set_column (14) -0x00000a3e: 01 DW_LNS_copy - 0x0000000000000609 130 14 1 0 0 - - -0x00000a3f: 00 DW_LNE_set_address (0x000000000000060b) -0x00000a46: 03 DW_LNS_advance_line (133) -0x00000a48: 05 DW_LNS_set_column (11) -0x00000a4a: 06 DW_LNS_negate_stmt -0x00000a4b: 01 DW_LNS_copy - 0x000000000000060b 133 11 1 0 0 is_stmt - - -0x00000a4c: 00 DW_LNE_set_address (0x0000000000000610) -0x00000a53: 03 DW_LNS_advance_line (122) -0x00000a55: 05 DW_LNS_set_column (16) -0x00000a57: 01 DW_LNS_copy - 0x0000000000000610 122 16 1 0 0 is_stmt - - -0x00000a58: 00 DW_LNE_set_address (0x0000000000000615) -0x00000a5f: 05 DW_LNS_set_column (14) -0x00000a61: 06 DW_LNS_negate_stmt -0x00000a62: 01 DW_LNS_copy - 0x0000000000000615 122 14 1 0 0 - - -0x00000a63: 00 DW_LNE_set_address (0x000000000000061a) -0x00000a6a: 03 DW_LNS_advance_line (130) -0x00000a6c: 06 DW_LNS_negate_stmt -0x00000a6d: 01 DW_LNS_copy - 0x000000000000061a 130 14 1 0 0 is_stmt - - -0x00000a6e: 00 DW_LNE_set_address (0x000000000000061b) -0x00000a75: 03 DW_LNS_advance_line (110) -0x00000a77: 05 DW_LNS_set_column (11) -0x00000a79: 01 DW_LNS_copy - 0x000000000000061b 110 11 1 0 0 is_stmt - - -0x00000a7a: 00 DW_LNE_set_address (0x0000000000000621) -0x00000a81: 03 DW_LNS_advance_line (138) -0x00000a83: 05 DW_LNS_set_column (4) -0x00000a85: 01 DW_LNS_copy - 0x0000000000000621 138 4 1 0 0 is_stmt - - -0x00000a86: 00 DW_LNE_set_address (0x0000000000000625) -0x00000a8d: 03 DW_LNS_advance_line (139) -0x00000a8f: 01 DW_LNS_copy - 0x0000000000000625 139 4 1 0 0 is_stmt - - -0x00000a90: 00 DW_LNE_set_address (0x0000000000000631) -0x00000a97: 03 DW_LNS_advance_line (141) -0x00000a99: 01 DW_LNS_copy - 0x0000000000000631 141 4 1 0 0 is_stmt - - -0x00000a9a: 00 DW_LNE_set_address (0x000000000000063c) -0x00000aa1: 03 DW_LNS_advance_line (142) -0x00000aa3: 05 DW_LNS_set_column (20) -0x00000aa5: 01 DW_LNS_copy - 0x000000000000063c 142 20 1 0 0 is_stmt - - -0x00000aa6: 00 DW_LNE_set_address (0x0000000000000644) -0x00000aad: 03 DW_LNS_advance_line (146) -0x00000aaf: 01 DW_LNS_copy - 0x0000000000000644 146 20 1 0 0 is_stmt - - -0x00000ab0: 00 DW_LNE_set_address (0x000000000000064b) -0x00000ab7: 03 DW_LNS_advance_line (147) -0x00000ab9: 05 DW_LNS_set_column (7) -0x00000abb: 01 DW_LNS_copy - 0x000000000000064b 147 7 1 0 0 is_stmt - - -0x00000abc: 00 DW_LNE_set_address (0x000000000000064f) -0x00000ac3: 03 DW_LNS_advance_line (143) -0x00000ac5: 05 DW_LNS_set_column (11) -0x00000ac7: 01 DW_LNS_copy - 0x000000000000064f 143 11 1 0 0 is_stmt - - -0x00000ac8: 00 DW_LNE_set_address (0x0000000000000653) -0x00000acf: 05 DW_LNS_set_column (20) -0x00000ad1: 06 DW_LNS_negate_stmt -0x00000ad2: 01 DW_LNS_copy - 0x0000000000000653 143 20 1 0 0 - - -0x00000ad3: 00 DW_LNE_set_address (0x0000000000000658) -0x00000ada: 05 DW_LNS_set_column (11) -0x00000adc: 01 DW_LNS_copy - 0x0000000000000658 143 11 1 0 0 - - -0x00000add: 00 DW_LNE_set_address (0x000000000000065f) -0x00000ae4: 03 DW_LNS_advance_line (141) -0x00000ae6: 05 DW_LNS_set_column (4) -0x00000ae8: 06 DW_LNS_negate_stmt -0x00000ae9: 01 DW_LNS_copy - 0x000000000000065f 141 4 1 0 0 is_stmt - - -0x00000aea: 00 DW_LNE_set_address (0x0000000000000665) -0x00000af1: 03 DW_LNS_advance_line (159) -0x00000af3: 01 DW_LNS_copy - 0x0000000000000665 159 4 1 0 0 is_stmt - - -0x00000af4: 00 DW_LNE_set_address (0x000000000000067c) -0x00000afb: 03 DW_LNS_advance_line (161) -0x00000afd: 05 DW_LNS_set_column (1) -0x00000aff: 01 DW_LNS_copy - 0x000000000000067c 161 1 1 0 0 is_stmt - - -0x00000b00: 00 DW_LNE_set_address (0x0000000000000686) -0x00000b07: 00 DW_LNE_end_sequence - 0x0000000000000686 161 1 1 0 0 is_stmt end_sequence - - -.debug_str contents: -0x00000000: "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)" -0x00000069: "/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp" -0x000000a9: "/usr/local/google/home/azakai/Dev/2-binaryen" -0x000000d6: "i" -0x000000d8: "int" -0x000000dc: "n" -0x000000de: "next" -0x000000e3: "worker_args" -0x000000ef: "std" -0x000000f3: "decltype(nullptr)" -0x00000105: "nullptr_t" -0x0000010f: "free" -0x00000114: "_ZL8fannkuchi" -0x00000122: "fannkuch" -0x0000012b: "showmax" -0x00000133: "args" -0x00000138: "targs" -0x0000013e: "perm1" -0x00000144: "count" -0x0000014a: "r" -0x0000014c: "maxflips" -0x00000155: "flips" -0x0000015b: "cleanup" -0x00000163: "p0" -0x00000166: "_Z15fannkuch_workerPv" -0x0000017c: "fannkuch_worker" -0x0000018c: "main" -0x00000191: "_arg" -0x00000196: "perm" -0x0000019b: "k" -0x0000019d: "j" -0x0000019f: "tmp" -0x000001a3: "argc" -0x000001a8: "argv" -0x000001ad: "char" - -.debug_ranges contents: -00000000 00000175 000001b3 -00000000 000001dd 000001e6 -00000000 00000302 00000340 -00000000 0000036a 00000373 -00000000 -00000028 000004d9 00000520 -00000028 0000059e 000005eb -00000028 -00000040 00000006 00000389 -00000040 0000038b 00000686 -00000040 -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "memory" (memory $7 256 256)) - (data (i32.const 1024) "Pfannkuchen(%d) = %d.\n\00%d\00Wrong argument.\00") - (import "env" "__indirect_function_table" (table $timport$8 1 funcref)) - (import "env" "malloc" (func $malloc (param i32) (result i32))) - (import "env" "memcpy" (func $memcpy (param i32 i32 i32) (result i32))) - (import "env" "free" (func $free (param i32))) - (import "env" "atoi" (func $atoi (param i32) (result i32))) - (import "env" "puts" (func $puts (param i32) (result i32))) - (import "env" "iprintf" (func $iprintf (param i32 i32) (result i32))) - (import "env" "putchar" (func $putchar (param i32) (result i32))) - (global $global$0 (mut i32) (i32.const 5243952)) - (global $global$1 i32 (i32.const 1066)) - (export "__wasm_call_ctors" (func $__wasm_call_ctors)) - (export "main" (func $main)) - (export "__data_end" (global $global$1)) - (func $__wasm_call_ctors (; 7 ;) - ) - (func $fannkuch_worker\28void*\29 (; 8 ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - ;; code offset: 0xb - (local.set $1 - ;; code offset: 0x9 - (i32.const 0) - ) - ;; code offset: 0x1b - (local.set $4 - ;; code offset: 0x19 - (call $malloc - ;; code offset: 0x17 - (local.tee $3 - ;; code offset: 0x16 - (i32.shl - ;; code offset: 0x12 - (local.tee $2 - ;; code offset: 0xf - (i32.load offset=4 - ;; code offset: 0xd - (local.get $0) - ) - ) - ;; code offset: 0x14 - (i32.const 2) - ) - ) - ) - ) - ;; code offset: 0x21 - (local.set $5 - ;; code offset: 0x1f - (call $malloc - ;; code offset: 0x1d - (local.get $3) - ) - ) - ;; code offset: 0x27 - (local.set $6 - ;; code offset: 0x25 - (call $malloc - ;; code offset: 0x23 - (local.get $3) - ) - ) - ;; code offset: 0x29 - (block $label$1 - (block $label$2 - (block $label$3 - ;; code offset: 0x34 - (br_if $label$3 - ;; code offset: 0x33 - (i32.le_s - ;; code offset: 0x2f - (local.get $2) - ;; code offset: 0x31 - (i32.const 0) - ) - ) - ;; code offset: 0x36 - (loop $label$4 - ;; code offset: 0x42 - (i32.store - ;; code offset: 0x3f - (i32.add - ;; code offset: 0x38 - (local.get $4) - ;; code offset: 0x3e - (i32.shl - ;; code offset: 0x3a - (local.get $1) - ;; code offset: 0x3c - (i32.const 2) - ) - ) - ;; code offset: 0x40 - (local.get $1) - ) - ;; code offset: 0x4f - (br_if $label$4 - ;; code offset: 0x4e - (i32.ne - ;; code offset: 0x4a - (local.tee $1 - ;; code offset: 0x49 - (i32.add - ;; code offset: 0x45 - (local.get $1) - ;; code offset: 0x47 - (i32.const 1) - ) - ) - ;; code offset: 0x4c - (local.get $2) - ) - ) - ) - ;; code offset: 0x66 - (i32.store - ;; code offset: 0x5e - (i32.add - ;; code offset: 0x52 - (local.get $4) - ;; code offset: 0x5d - (i32.shl - ;; code offset: 0x59 - (local.tee $1 - ;; code offset: 0x56 - (i32.load - ;; code offset: 0x54 - (local.get $0) - ) - ) - ;; code offset: 0x5b - (i32.const 2) - ) - ) - ;; code offset: 0x64 - (local.tee $7 - ;; code offset: 0x63 - (i32.add - ;; code offset: 0x5f - (local.get $2) - ;; code offset: 0x61 - (i32.const -1) - ) - ) - ) - ;; code offset: 0x75 - (i32.store - ;; code offset: 0x71 - (local.tee $8 - ;; code offset: 0x70 - (i32.add - ;; code offset: 0x69 - (local.get $4) - ;; code offset: 0x6f - (i32.shl - ;; code offset: 0x6b - (local.get $7) - ;; code offset: 0x6d - (i32.const 2) - ) - ) - ) - ;; code offset: 0x73 - (local.get $1) - ) - ;; code offset: 0x7a - (local.set $9 - ;; code offset: 0x78 - (i32.const 0) - ) - ;; code offset: 0x81 - (br_if $label$2 - ;; code offset: 0x80 - (i32.le_s - ;; code offset: 0x7c - (local.get $2) - ;; code offset: 0x7e - (i32.const 0) - ) - ) - ;; code offset: 0x83 - (loop $label$5 - ;; code offset: 0x85 - (block $label$6 - ;; code offset: 0x8c - (br_if $label$6 - ;; code offset: 0x8b - (i32.le_s - ;; code offset: 0x87 - (local.get $2) - ;; code offset: 0x89 - (i32.const 1) - ) - ) - ;; code offset: 0x8e - (loop $label$7 - ;; code offset: 0x9f - (i32.store - ;; code offset: 0x9c - (i32.add - ;; code offset: 0x90 - (local.get $6) - ;; code offset: 0x9b - (i32.shl - ;; code offset: 0x97 - (local.tee $1 - ;; code offset: 0x96 - (i32.add - ;; code offset: 0x92 - (local.get $2) - ;; code offset: 0x94 - (i32.const -1) - ) - ) - ;; code offset: 0x99 - (i32.const 2) - ) - ) - ;; code offset: 0x9d - (local.get $2) - ) - ;; code offset: 0xa7 - (local.set $0 - ;; code offset: 0xa6 - (i32.gt_s - ;; code offset: 0xa2 - (local.get $2) - ;; code offset: 0xa4 - (i32.const 2) - ) - ) - ;; code offset: 0xab - (local.set $2 - ;; code offset: 0xa9 - (local.get $1) - ) - ;; code offset: 0xaf - (br_if $label$7 - ;; code offset: 0xad - (local.get $0) - ) - ) - ) - ;; code offset: 0xb3 - (block $label$8 - ;; code offset: 0xbd - (br_if $label$8 - ;; code offset: 0xbc - (i32.eqz - ;; code offset: 0xba - (local.tee $10 - ;; code offset: 0xb7 - (i32.load - ;; code offset: 0xb5 - (local.get $4) - ) - ) - ) - ) - ;; code offset: 0xc7 - (br_if $label$8 - ;; code offset: 0xc6 - (i32.eq - ;; code offset: 0xc1 - (i32.load - ;; code offset: 0xbf - (local.get $8) - ) - ;; code offset: 0xc4 - (local.get $7) - ) - ) - ;; code offset: 0xd6 - (local.set $12 - ;; code offset: 0xd3 - (i32.load - ;; code offset: 0xd1 - (local.tee $11 - ;; code offset: 0xcf - (call $memcpy - ;; code offset: 0xc9 - (local.get $5) - ;; code offset: 0xcb - (local.get $4) - ;; code offset: 0xcd - (local.get $3) - ) - ) - ) - ) - ;; code offset: 0xda - (local.set $0 - ;; code offset: 0xd8 - (i32.const 0) - ) - ;; code offset: 0xdc - (loop $label$9 - ;; code offset: 0xe0 - (local.set $13 - ;; code offset: 0xde - (local.get $0) - ) - ;; code offset: 0xe2 - (block $label$10 - ;; code offset: 0xe9 - (br_if $label$10 - ;; code offset: 0xe8 - (i32.lt_s - ;; code offset: 0xe4 - (local.get $12) - ;; code offset: 0xe6 - (i32.const 3) - ) - ) - ;; code offset: 0xf0 - (local.set $1 - ;; code offset: 0xef - (i32.add - ;; code offset: 0xeb - (local.get $12) - ;; code offset: 0xed - (i32.const -1) - ) - ) - ;; code offset: 0xf4 - (local.set $0 - ;; code offset: 0xf2 - (i32.const 1) - ) - ;; code offset: 0xf6 - (loop $label$11 - ;; code offset: 0x105 - (local.set $15 - ;; code offset: 0x102 - (i32.load - ;; code offset: 0x100 - (local.tee $14 - ;; code offset: 0xff - (i32.add - ;; code offset: 0xf8 - (local.get $11) - ;; code offset: 0xfe - (i32.shl - ;; code offset: 0xfa - (local.get $0) - ;; code offset: 0xfc - (i32.const 2) - ) - ) - ) - ) - ) - ;; code offset: 0x116 - (i32.store - ;; code offset: 0x107 - (local.get $14) - ;; code offset: 0x113 - (i32.load - ;; code offset: 0x111 - (local.tee $16 - ;; code offset: 0x110 - (i32.add - ;; code offset: 0x109 - (local.get $11) - ;; code offset: 0x10f - (i32.shl - ;; code offset: 0x10b - (local.get $1) - ;; code offset: 0x10d - (i32.const 2) - ) - ) - ) - ) - ) - ;; code offset: 0x11d - (i32.store - ;; code offset: 0x119 - (local.get $16) - ;; code offset: 0x11b - (local.get $15) - ) - ;; code offset: 0x12f - (br_if $label$11 - ;; code offset: 0x12e - (i32.lt_s - ;; code offset: 0x125 - (local.tee $0 - ;; code offset: 0x124 - (i32.add - ;; code offset: 0x120 - (local.get $0) - ;; code offset: 0x122 - (i32.const 1) - ) - ) - ;; code offset: 0x12c - (local.tee $1 - ;; code offset: 0x12b - (i32.add - ;; code offset: 0x127 - (local.get $1) - ;; code offset: 0x129 - (i32.const -1) - ) - ) - ) - ) - ) - ) - ;; code offset: 0x140 - (local.set $1 - ;; code offset: 0x13d - (i32.load - ;; code offset: 0x13b - (local.tee $0 - ;; code offset: 0x13a - (i32.add - ;; code offset: 0x133 - (local.get $11) - ;; code offset: 0x139 - (i32.shl - ;; code offset: 0x135 - (local.get $12) - ;; code offset: 0x137 - (i32.const 2) - ) - ) - ) - ) - ) - ;; code offset: 0x146 - (i32.store - ;; code offset: 0x142 - (local.get $0) - ;; code offset: 0x144 - (local.get $12) - ) - ;; code offset: 0x14e - (local.set $0 - ;; code offset: 0x14d - (i32.add - ;; code offset: 0x149 - (local.get $13) - ;; code offset: 0x14b - (i32.const 1) - ) - ) - ;; code offset: 0x152 - (local.set $12 - ;; code offset: 0x150 - (local.get $1) - ) - ;; code offset: 0x156 - (br_if $label$9 - ;; code offset: 0x154 - (local.get $1) - ) - ) - ;; code offset: 0x163 - (local.set $9 - ;; code offset: 0x162 - (select - ;; code offset: 0x159 - (local.get $9) - ;; code offset: 0x15b - (local.get $0) - ;; code offset: 0x161 - (i32.gt_s - ;; code offset: 0x15d - (local.get $9) - ;; code offset: 0x15f - (local.get $13) - ) - ) - ) - ) - ;; code offset: 0x16b - (br_if $label$1 - ;; code offset: 0x16a - (i32.ge_s - ;; code offset: 0x166 - (local.get $2) - ;; code offset: 0x168 - (local.get $7) - ) - ) - ;; code offset: 0x16d - (loop $label$12 - ;; code offset: 0x171 - (local.set $1 - ;; code offset: 0x16f - (i32.const 0) - ) - ;; code offset: 0x173 - (block $label$13 - ;; code offset: 0x17a - (br_if $label$13 - ;; code offset: 0x179 - (i32.le_s - ;; code offset: 0x175 - (local.get $2) - ;; code offset: 0x177 - (i32.const 0) - ) - ) - ;; code offset: 0x17c - (loop $label$14 - ;; code offset: 0x196 - (i32.store - ;; code offset: 0x185 - (i32.add - ;; code offset: 0x17e - (local.get $4) - ;; code offset: 0x184 - (i32.shl - ;; code offset: 0x180 - (local.get $1) - ;; code offset: 0x182 - (i32.const 2) - ) - ) - ;; code offset: 0x193 - (i32.load - ;; code offset: 0x192 - (i32.add - ;; code offset: 0x186 - (local.get $4) - ;; code offset: 0x191 - (i32.shl - ;; code offset: 0x18d - (local.tee $1 - ;; code offset: 0x18c - (i32.add - ;; code offset: 0x188 - (local.get $1) - ;; code offset: 0x18a - (i32.const 1) - ) - ) - ;; code offset: 0x18f - (i32.const 2) - ) - ) - ) - ) - ;; code offset: 0x19e - (br_if $label$14 - ;; code offset: 0x19d - (i32.ne - ;; code offset: 0x199 - (local.get $1) - ;; code offset: 0x19b - (local.get $2) - ) - ) - ) - ;; code offset: 0x1a3 - (local.set $1 - ;; code offset: 0x1a1 - (local.get $2) - ) - ) - ;; code offset: 0x1b0 - (i32.store - ;; code offset: 0x1ad - (i32.add - ;; code offset: 0x1a6 - (local.get $4) - ;; code offset: 0x1ac - (i32.shl - ;; code offset: 0x1a8 - (local.get $1) - ;; code offset: 0x1aa - (i32.const 2) - ) - ) - ;; code offset: 0x1ae - (local.get $10) - ) - ;; code offset: 0x1c7 - (i32.store - ;; code offset: 0x1bb - (local.tee $1 - ;; code offset: 0x1ba - (i32.add - ;; code offset: 0x1b3 - (local.get $6) - ;; code offset: 0x1b9 - (i32.shl - ;; code offset: 0x1b5 - (local.get $2) - ;; code offset: 0x1b7 - (i32.const 2) - ) - ) - ) - ;; code offset: 0x1c6 - (i32.add - ;; code offset: 0x1c2 - (local.tee $1 - ;; code offset: 0x1bf - (i32.load - ;; code offset: 0x1bd - (local.get $1) - ) - ) - ;; code offset: 0x1c4 - (i32.const -1) - ) - ) - ;; code offset: 0x1cf - (br_if $label$5 - ;; code offset: 0x1ce - (i32.gt_s - ;; code offset: 0x1ca - (local.get $1) - ;; code offset: 0x1cc - (i32.const 1) - ) - ) - ;; code offset: 0x1db - (br_if $label$1 - ;; code offset: 0x1da - (i32.eq - ;; code offset: 0x1d6 - (local.tee $2 - ;; code offset: 0x1d5 - (i32.add - ;; code offset: 0x1d1 - (local.get $2) - ;; code offset: 0x1d3 - (i32.const 1) - ) - ) - ;; code offset: 0x1d8 - (local.get $7) - ) - ) - ;; code offset: 0x1e2 - (local.set $10 - ;; code offset: 0x1df - (i32.load - ;; code offset: 0x1dd - (local.get $4) - ) - ) - ;; code offset: 0x1e4 - (br $label$12) - ) - ) - ) - ;; code offset: 0x201 - (i32.store - ;; code offset: 0x1f9 - (i32.add - ;; code offset: 0x1ed - (local.get $4) - ;; code offset: 0x1f8 - (i32.shl - ;; code offset: 0x1f4 - (local.tee $1 - ;; code offset: 0x1f1 - (i32.load - ;; code offset: 0x1ef - (local.get $0) - ) - ) - ;; code offset: 0x1f6 - (i32.const 2) - ) - ) - ;; code offset: 0x1ff - (local.tee $7 - ;; code offset: 0x1fe - (i32.add - ;; code offset: 0x1fa - (local.get $2) - ;; code offset: 0x1fc - (i32.const -1) - ) - ) - ) - ;; code offset: 0x210 - (i32.store - ;; code offset: 0x20c - (local.tee $8 - ;; code offset: 0x20b - (i32.add - ;; code offset: 0x204 - (local.get $4) - ;; code offset: 0x20a - (i32.shl - ;; code offset: 0x206 - (local.get $7) - ;; code offset: 0x208 - (i32.const 2) - ) - ) - ) - ;; code offset: 0x20e - (local.get $1) - ) - ) - ;; code offset: 0x216 - (local.set $9 - ;; code offset: 0x214 - (i32.const 0) - ) - ;; code offset: 0x218 - (loop $label$15 - ;; code offset: 0x21a - (block $label$16 - ;; code offset: 0x221 - (br_if $label$16 - ;; code offset: 0x220 - (i32.lt_s - ;; code offset: 0x21c - (local.get $2) - ;; code offset: 0x21e - (i32.const 2) - ) - ) - ;; code offset: 0x223 - (loop $label$17 - ;; code offset: 0x234 - (i32.store - ;; code offset: 0x231 - (i32.add - ;; code offset: 0x225 - (local.get $6) - ;; code offset: 0x230 - (i32.shl - ;; code offset: 0x22c - (local.tee $1 - ;; code offset: 0x22b - (i32.add - ;; code offset: 0x227 - (local.get $2) - ;; code offset: 0x229 - (i32.const -1) - ) - ) - ;; code offset: 0x22e - (i32.const 2) - ) - ) - ;; code offset: 0x232 - (local.get $2) - ) - ;; code offset: 0x23c - (local.set $0 - ;; code offset: 0x23b - (i32.gt_s - ;; code offset: 0x237 - (local.get $2) - ;; code offset: 0x239 - (i32.const 2) - ) - ) - ;; code offset: 0x240 - (local.set $2 - ;; code offset: 0x23e - (local.get $1) - ) - ;; code offset: 0x244 - (br_if $label$17 - ;; code offset: 0x242 - (local.get $0) - ) - ) - ) - ;; code offset: 0x248 - (block $label$18 - ;; code offset: 0x252 - (br_if $label$18 - ;; code offset: 0x251 - (i32.eqz - ;; code offset: 0x24f - (local.tee $12 - ;; code offset: 0x24c - (i32.load - ;; code offset: 0x24a - (local.get $4) - ) - ) - ) - ) - ;; code offset: 0x25c - (br_if $label$18 - ;; code offset: 0x25b - (i32.eq - ;; code offset: 0x256 - (i32.load - ;; code offset: 0x254 - (local.get $8) - ) - ;; code offset: 0x259 - (local.get $7) - ) - ) - ;; code offset: 0x263 - (local.set $16 - ;; code offset: 0x260 - (i32.load - ;; code offset: 0x25e - (local.get $5) - ) - ) - ;; code offset: 0x267 - (local.set $0 - ;; code offset: 0x265 - (i32.const 0) - ) - ;; code offset: 0x269 - (loop $label$19 - ;; code offset: 0x26d - (local.set $10 - ;; code offset: 0x26b - (local.get $0) - ) - ;; code offset: 0x26f - (block $label$20 - ;; code offset: 0x276 - (br_if $label$20 - ;; code offset: 0x275 - (i32.lt_s - ;; code offset: 0x271 - (local.get $16) - ;; code offset: 0x273 - (i32.const 3) - ) - ) - ;; code offset: 0x27d - (local.set $1 - ;; code offset: 0x27c - (i32.add - ;; code offset: 0x278 - (local.get $16) - ;; code offset: 0x27a - (i32.const -1) - ) - ) - ;; code offset: 0x281 - (local.set $0 - ;; code offset: 0x27f - (i32.const 1) - ) - ;; code offset: 0x283 - (loop $label$21 - ;; code offset: 0x292 - (local.set $14 - ;; code offset: 0x28f - (i32.load - ;; code offset: 0x28d - (local.tee $11 - ;; code offset: 0x28c - (i32.add - ;; code offset: 0x285 - (local.get $5) - ;; code offset: 0x28b - (i32.shl - ;; code offset: 0x287 - (local.get $0) - ;; code offset: 0x289 - (i32.const 2) - ) - ) - ) - ) - ) - ;; code offset: 0x2a3 - (i32.store - ;; code offset: 0x294 - (local.get $11) - ;; code offset: 0x2a0 - (i32.load - ;; code offset: 0x29e - (local.tee $15 - ;; code offset: 0x29d - (i32.add - ;; code offset: 0x296 - (local.get $5) - ;; code offset: 0x29c - (i32.shl - ;; code offset: 0x298 - (local.get $1) - ;; code offset: 0x29a - (i32.const 2) - ) - ) - ) - ) - ) - ;; code offset: 0x2aa - (i32.store - ;; code offset: 0x2a6 - (local.get $15) - ;; code offset: 0x2a8 - (local.get $14) - ) - ;; code offset: 0x2bc - (br_if $label$21 - ;; code offset: 0x2bb - (i32.lt_s - ;; code offset: 0x2b2 - (local.tee $0 - ;; code offset: 0x2b1 - (i32.add - ;; code offset: 0x2ad - (local.get $0) - ;; code offset: 0x2af - (i32.const 1) - ) - ) - ;; code offset: 0x2b9 - (local.tee $1 - ;; code offset: 0x2b8 - (i32.add - ;; code offset: 0x2b4 - (local.get $1) - ;; code offset: 0x2b6 - (i32.const -1) - ) - ) - ) - ) - ) - ) - ;; code offset: 0x2cd - (local.set $1 - ;; code offset: 0x2ca - (i32.load - ;; code offset: 0x2c8 - (local.tee $0 - ;; code offset: 0x2c7 - (i32.add - ;; code offset: 0x2c0 - (local.get $5) - ;; code offset: 0x2c6 - (i32.shl - ;; code offset: 0x2c2 - (local.get $16) - ;; code offset: 0x2c4 - (i32.const 2) - ) - ) - ) - ) - ) - ;; code offset: 0x2d3 - (i32.store - ;; code offset: 0x2cf - (local.get $0) - ;; code offset: 0x2d1 - (local.get $16) - ) - ;; code offset: 0x2db - (local.set $0 - ;; code offset: 0x2da - (i32.add - ;; code offset: 0x2d6 - (local.get $10) - ;; code offset: 0x2d8 - (i32.const 1) - ) - ) - ;; code offset: 0x2df - (local.set $16 - ;; code offset: 0x2dd - (local.get $1) - ) - ;; code offset: 0x2e3 - (br_if $label$19 - ;; code offset: 0x2e1 - (local.get $1) - ) - ) - ;; code offset: 0x2f0 - (local.set $9 - ;; code offset: 0x2ef - (select - ;; code offset: 0x2e6 - (local.get $9) - ;; code offset: 0x2e8 - (local.get $0) - ;; code offset: 0x2ee - (i32.gt_s - ;; code offset: 0x2ea - (local.get $9) - ;; code offset: 0x2ec - (local.get $10) - ) - ) - ) - ) - ;; code offset: 0x2f8 - (br_if $label$1 - ;; code offset: 0x2f7 - (i32.ge_s - ;; code offset: 0x2f3 - (local.get $2) - ;; code offset: 0x2f5 - (local.get $7) - ) - ) - ;; code offset: 0x2fa - (loop $label$22 - ;; code offset: 0x2fe - (local.set $1 - ;; code offset: 0x2fc - (i32.const 0) - ) - ;; code offset: 0x300 - (block $label$23 - ;; code offset: 0x307 - (br_if $label$23 - ;; code offset: 0x306 - (i32.lt_s - ;; code offset: 0x302 - (local.get $2) - ;; code offset: 0x304 - (i32.const 1) - ) - ) - ;; code offset: 0x309 - (loop $label$24 - ;; code offset: 0x323 - (i32.store - ;; code offset: 0x312 - (i32.add - ;; code offset: 0x30b - (local.get $4) - ;; code offset: 0x311 - (i32.shl - ;; code offset: 0x30d - (local.get $1) - ;; code offset: 0x30f - (i32.const 2) - ) - ) - ;; code offset: 0x320 - (i32.load - ;; code offset: 0x31f - (i32.add - ;; code offset: 0x313 - (local.get $4) - ;; code offset: 0x31e - (i32.shl - ;; code offset: 0x31a - (local.tee $1 - ;; code offset: 0x319 - (i32.add - ;; code offset: 0x315 - (local.get $1) - ;; code offset: 0x317 - (i32.const 1) - ) - ) - ;; code offset: 0x31c - (i32.const 2) - ) - ) - ) - ) - ;; code offset: 0x32b - (br_if $label$24 - ;; code offset: 0x32a - (i32.ne - ;; code offset: 0x326 - (local.get $1) - ;; code offset: 0x328 - (local.get $2) - ) - ) - ) - ;; code offset: 0x330 - (local.set $1 - ;; code offset: 0x32e - (local.get $2) - ) - ) - ;; code offset: 0x33d - (i32.store - ;; code offset: 0x33a - (i32.add - ;; code offset: 0x333 - (local.get $4) - ;; code offset: 0x339 - (i32.shl - ;; code offset: 0x335 - (local.get $1) - ;; code offset: 0x337 - (i32.const 2) - ) - ) - ;; code offset: 0x33b - (local.get $12) - ) - ;; code offset: 0x354 - (i32.store - ;; code offset: 0x348 - (local.tee $1 - ;; code offset: 0x347 - (i32.add - ;; code offset: 0x340 - (local.get $6) - ;; code offset: 0x346 - (i32.shl - ;; code offset: 0x342 - (local.get $2) - ;; code offset: 0x344 - (i32.const 2) - ) - ) - ) - ;; code offset: 0x353 - (i32.add - ;; code offset: 0x34f - (local.tee $1 - ;; code offset: 0x34c - (i32.load - ;; code offset: 0x34a - (local.get $1) - ) - ) - ;; code offset: 0x351 - (i32.const -1) - ) - ) - ;; code offset: 0x35c - (br_if $label$15 - ;; code offset: 0x35b - (i32.gt_s - ;; code offset: 0x357 - (local.get $1) - ;; code offset: 0x359 - (i32.const 1) - ) - ) - ;; code offset: 0x368 - (br_if $label$1 - ;; code offset: 0x367 - (i32.eq - ;; code offset: 0x363 - (local.tee $2 - ;; code offset: 0x362 - (i32.add - ;; code offset: 0x35e - (local.get $2) - ;; code offset: 0x360 - (i32.const 1) - ) - ) - ;; code offset: 0x365 - (local.get $7) - ) - ) - ;; code offset: 0x36f - (local.set $12 - ;; code offset: 0x36c - (i32.load - ;; code offset: 0x36a - (local.get $4) - ) - ) - ;; code offset: 0x371 - (br $label$22) - ) - ) - ) - ;; code offset: 0x37c - (call $free - ;; code offset: 0x37a - (local.get $4) - ) - ;; code offset: 0x380 - (call $free - ;; code offset: 0x37e - (local.get $5) - ) - ;; code offset: 0x384 - (call $free - ;; code offset: 0x382 - (local.get $6) - ) - ;; code offset: 0x386 - (local.get $9) - ) - (func $main (; 9 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - ;; code offset: 0x395 - (global.set $global$0 - ;; code offset: 0x393 - (local.tee $2 - ;; code offset: 0x392 - (i32.sub - ;; code offset: 0x38e - (global.get $global$0) - ;; code offset: 0x390 - (i32.const 32) - ) - ) - ) - ;; code offset: 0x397 - (block $label$1 - (block $label$2 - (block $label$3 - ;; code offset: 0x3a2 - (br_if $label$3 - ;; code offset: 0x3a1 - (i32.lt_s - ;; code offset: 0x39d - (local.get $0) - ;; code offset: 0x39f - (i32.const 2) - ) - ) - ;; code offset: 0x3a6 - (local.set $3 - ;; code offset: 0x3a4 - (i32.const 0) - ) - ;; code offset: 0x3b4 - (br_if $label$2 - ;; code offset: 0x3b3 - (i32.gt_s - ;; code offset: 0x3af - (local.tee $4 - ;; code offset: 0x3ad - (call $atoi - ;; code offset: 0x3aa - (i32.load offset=4 - ;; code offset: 0x3a8 - (local.get $1) - ) - ) - ) - ;; code offset: 0x3b1 - (i32.const 0) - ) - ) - ) - ;; code offset: 0x3bc - (drop - ;; code offset: 0x3ba - (call $puts - ;; code offset: 0x3b7 - (i32.const 1050) - ) - ) - ;; code offset: 0x3bf - (local.set $5 - ;; code offset: 0x3bd - (i32.const 1) - ) - ;; code offset: 0x3c1 - (br $label$1) - ) - ;; code offset: 0x3c4 - (block $label$4 - ;; code offset: 0x3cb - (br_if $label$4 - ;; code offset: 0x3ca - (i32.eq - ;; code offset: 0x3c6 - (local.get $4) - ;; code offset: 0x3c8 - (i32.const 1) - ) - ) - ;; code offset: 0x3d2 - (local.set $6 - ;; code offset: 0x3d1 - (i32.add - ;; code offset: 0x3cd - (local.get $4) - ;; code offset: 0x3cf - (i32.const -1) - ) - ) - ;; code offset: 0x3d6 - (local.set $1 - ;; code offset: 0x3d4 - (i32.const 0) - ) - ;; code offset: 0x3da - (local.set $0 - ;; code offset: 0x3d8 - (i32.const 0) - ) - ;; code offset: 0x3dc - (loop $label$5 - ;; code offset: 0x3e6 - (i32.store offset=8 - ;; code offset: 0x3e2 - (local.tee $3 - ;; code offset: 0x3e0 - (call $malloc - ;; code offset: 0x3de - (i32.const 12) - ) - ) - ;; code offset: 0x3e4 - (local.get $1) - ) - ;; code offset: 0x3ed - (i32.store offset=4 - ;; code offset: 0x3e9 - (local.get $3) - ;; code offset: 0x3eb - (local.get $4) - ) - ;; code offset: 0x3f4 - (i32.store - ;; code offset: 0x3f0 - (local.get $3) - ;; code offset: 0x3f2 - (local.get $0) - ) - ;; code offset: 0x3f9 - (local.set $1 - ;; code offset: 0x3f7 - (local.get $3) - ) - ;; code offset: 0x405 - (br_if $label$5 - ;; code offset: 0x404 - (i32.ne - ;; code offset: 0x400 - (local.tee $0 - ;; code offset: 0x3ff - (i32.add - ;; code offset: 0x3fb - (local.get $0) - ;; code offset: 0x3fd - (i32.const 1) - ) - ) - ;; code offset: 0x402 - (local.get $6) - ) - ) - ) - ) - ;; code offset: 0x40b - (local.set $0 - ;; code offset: 0x409 - (i32.const 0) - ) - ;; code offset: 0x416 - (local.set $1 - ;; code offset: 0x414 - (call $malloc - ;; code offset: 0x412 - (local.tee $6 - ;; code offset: 0x411 - (i32.shl - ;; code offset: 0x40d - (local.get $4) - ;; code offset: 0x40f - (i32.const 2) - ) - ) - ) - ) - ;; code offset: 0x41c - (local.set $5 - ;; code offset: 0x41a - (call $malloc - ;; code offset: 0x418 - (local.get $6) - ) - ) - ;; code offset: 0x41e - (block $label$6 - (block $label$7 - (block $label$8 - (block $label$9 - ;; code offset: 0x42b - (br_if $label$9 - ;; code offset: 0x42a - (i32.le_s - ;; code offset: 0x426 - (local.get $4) - ;; code offset: 0x428 - (i32.const 0) - ) - ) - ;; code offset: 0x42d - (loop $label$10 - ;; code offset: 0x439 - (i32.store - ;; code offset: 0x436 - (i32.add - ;; code offset: 0x42f - (local.get $1) - ;; code offset: 0x435 - (i32.shl - ;; code offset: 0x431 - (local.get $0) - ;; code offset: 0x433 - (i32.const 2) - ) - ) - ;; code offset: 0x437 - (local.get $0) - ) - ;; code offset: 0x446 - (br_if $label$10 - ;; code offset: 0x445 - (i32.ne - ;; code offset: 0x441 - (local.tee $0 - ;; code offset: 0x440 - (i32.add - ;; code offset: 0x43c - (local.get $0) - ;; code offset: 0x43e - (i32.const 1) - ) - ) - ;; code offset: 0x443 - (local.get $4) - ) - ) - ) - ;; code offset: 0x44b - (local.set $7 - ;; code offset: 0x449 - (i32.const 30) - ) - ;; code offset: 0x44f - (local.set $6 - ;; code offset: 0x44d - (local.get $4) - ) - ;; code offset: 0x451 - (br $label$8) - ) - ;; code offset: 0x456 - (local.set $7 - ;; code offset: 0x454 - (i32.const 30) - ) - ;; code offset: 0x45a - (local.set $6 - ;; code offset: 0x458 - (local.get $4) - ) - ;; code offset: 0x45c - (br $label$7) - ) - ;; code offset: 0x45f - (loop $label$11 - ;; code offset: 0x463 - (local.set $0 - ;; code offset: 0x461 - (i32.const 0) - ) - ;; code offset: 0x465 - (loop $label$12 - ;; code offset: 0x477 - (i32.store offset=16 - ;; code offset: 0x467 - (local.get $2) - ;; code offset: 0x476 - (i32.add - ;; code offset: 0x471 - (i32.load - ;; code offset: 0x470 - (i32.add - ;; code offset: 0x469 - (local.get $1) - ;; code offset: 0x46f - (i32.shl - ;; code offset: 0x46b - (local.get $0) - ;; code offset: 0x46d - (i32.const 2) - ) - ) - ) - ;; code offset: 0x474 - (i32.const 1) - ) - ) - ;; code offset: 0x484 - (drop - ;; code offset: 0x482 - (call $iprintf - ;; code offset: 0x47a - (i32.const 1047) - ;; code offset: 0x481 - (i32.add - ;; code offset: 0x47d - (local.get $2) - ;; code offset: 0x47f - (i32.const 16) - ) - ) - ) - ;; code offset: 0x48f - (br_if $label$12 - ;; code offset: 0x48e - (i32.ne - ;; code offset: 0x48a - (local.tee $0 - ;; code offset: 0x489 - (i32.add - ;; code offset: 0x485 - (local.get $0) - ;; code offset: 0x487 - (i32.const 1) - ) - ) - ;; code offset: 0x48c - (local.get $4) - ) - ) - ) - ;; code offset: 0x496 - (drop - ;; code offset: 0x494 - (call $putchar - ;; code offset: 0x492 - (i32.const 10) - ) - ) - ;; code offset: 0x497 - (block $label$13 - ;; code offset: 0x49e - (br_if $label$13 - ;; code offset: 0x49d - (i32.le_s - ;; code offset: 0x499 - (local.get $6) - ;; code offset: 0x49b - (i32.const 1) - ) - ) - ;; code offset: 0x4a0 - (loop $label$14 - ;; code offset: 0x4b1 - (i32.store - ;; code offset: 0x4ae - (i32.add - ;; code offset: 0x4a2 - (local.get $5) - ;; code offset: 0x4ad - (i32.shl - ;; code offset: 0x4a9 - (local.tee $0 - ;; code offset: 0x4a8 - (i32.add - ;; code offset: 0x4a4 - (local.get $6) - ;; code offset: 0x4a6 - (i32.const -1) - ) - ) - ;; code offset: 0x4ab - (i32.const 2) - ) - ) - ;; code offset: 0x4af - (local.get $6) - ) - ;; code offset: 0x4b9 - (local.set $8 - ;; code offset: 0x4b8 - (i32.gt_s - ;; code offset: 0x4b4 - (local.get $6) - ;; code offset: 0x4b6 - (i32.const 2) - ) - ) - ;; code offset: 0x4bd - (local.set $6 - ;; code offset: 0x4bb - (local.get $0) - ) - ;; code offset: 0x4c1 - (br_if $label$14 - ;; code offset: 0x4bf - (local.get $8) - ) - ) - ) - ;; code offset: 0x4ca - (br_if $label$6 - ;; code offset: 0x4c9 - (i32.eq - ;; code offset: 0x4c5 - (local.get $6) - ;; code offset: 0x4c7 - (local.get $4) - ) - ) - ;; code offset: 0x4d1 - (local.set $7 - ;; code offset: 0x4d0 - (i32.add - ;; code offset: 0x4cc - (local.get $7) - ;; code offset: 0x4ce - (i32.const -1) - ) - ) - ;; code offset: 0x4d3 - (loop $label$15 - ;; code offset: 0x4d7 - (local.set $0 - ;; code offset: 0x4d5 - (i32.const 0) - ) - ;; code offset: 0x4de - (local.set $8 - ;; code offset: 0x4db - (i32.load - ;; code offset: 0x4d9 - (local.get $1) - ) - ) - ;; code offset: 0x4e0 - (block $label$16 - ;; code offset: 0x4e7 - (br_if $label$16 - ;; code offset: 0x4e6 - (i32.le_s - ;; code offset: 0x4e2 - (local.get $6) - ;; code offset: 0x4e4 - (i32.const 0) - ) - ) - ;; code offset: 0x4e9 - (loop $label$17 - ;; code offset: 0x503 - (i32.store - ;; code offset: 0x4f2 - (i32.add - ;; code offset: 0x4eb - (local.get $1) - ;; code offset: 0x4f1 - (i32.shl - ;; code offset: 0x4ed - (local.get $0) - ;; code offset: 0x4ef - (i32.const 2) - ) - ) - ;; code offset: 0x500 - (i32.load - ;; code offset: 0x4ff - (i32.add - ;; code offset: 0x4f3 - (local.get $1) - ;; code offset: 0x4fe - (i32.shl - ;; code offset: 0x4fa - (local.tee $0 - ;; code offset: 0x4f9 - (i32.add - ;; code offset: 0x4f5 - (local.get $0) - ;; code offset: 0x4f7 - (i32.const 1) - ) - ) - ;; code offset: 0x4fc - (i32.const 2) - ) - ) - ) - ) - ;; code offset: 0x50b - (br_if $label$17 - ;; code offset: 0x50a - (i32.ne - ;; code offset: 0x506 - (local.get $0) - ;; code offset: 0x508 - (local.get $6) - ) - ) - ) - ;; code offset: 0x510 - (local.set $0 - ;; code offset: 0x50e - (local.get $6) - ) - ) - ;; code offset: 0x51d - (i32.store - ;; code offset: 0x51a - (i32.add - ;; code offset: 0x513 - (local.get $1) - ;; code offset: 0x519 - (i32.shl - ;; code offset: 0x515 - (local.get $0) - ;; code offset: 0x517 - (i32.const 2) - ) - ) - ;; code offset: 0x51b - (local.get $8) - ) - ;; code offset: 0x534 - (i32.store - ;; code offset: 0x528 - (local.tee $0 - ;; code offset: 0x527 - (i32.add - ;; code offset: 0x520 - (local.get $5) - ;; code offset: 0x526 - (i32.shl - ;; code offset: 0x522 - (local.get $6) - ;; code offset: 0x524 - (i32.const 2) - ) - ) - ) - ;; code offset: 0x533 - (i32.add - ;; code offset: 0x52f - (local.tee $0 - ;; code offset: 0x52c - (i32.load - ;; code offset: 0x52a - (local.get $0) - ) - ) - ;; code offset: 0x531 - (i32.const -1) - ) - ) - ;; code offset: 0x537 - (block $label$18 - ;; code offset: 0x53e - (br_if $label$18 - ;; code offset: 0x53d - (i32.gt_s - ;; code offset: 0x539 - (local.get $0) - ;; code offset: 0x53b - (i32.const 1) - ) - ) - ;; code offset: 0x54a - (br_if $label$15 - ;; code offset: 0x549 - (i32.ne - ;; code offset: 0x545 - (local.tee $6 - ;; code offset: 0x544 - (i32.add - ;; code offset: 0x540 - (local.get $6) - ;; code offset: 0x542 - (i32.const 1) - ) - ) - ;; code offset: 0x547 - (local.get $4) - ) - ) - ;; code offset: 0x54c - (br $label$6) - ) - ) - ;; code offset: 0x553 - (br_if $label$6 - ;; code offset: 0x552 - (i32.eqz - ;; code offset: 0x550 - (local.get $7) - ) - ) - ;; code offset: 0x555 - (br $label$11) - ) - ) - ;; code offset: 0x55b - (loop $label$19 - ;; code offset: 0x561 - (drop - ;; code offset: 0x55f - (call $putchar - ;; code offset: 0x55d - (i32.const 10) - ) - ) - ;; code offset: 0x562 - (block $label$20 - ;; code offset: 0x569 - (br_if $label$20 - ;; code offset: 0x568 - (i32.le_s - ;; code offset: 0x564 - (local.get $6) - ;; code offset: 0x566 - (i32.const 1) - ) - ) - ;; code offset: 0x56b - (loop $label$21 - ;; code offset: 0x57c - (i32.store - ;; code offset: 0x579 - (i32.add - ;; code offset: 0x56d - (local.get $5) - ;; code offset: 0x578 - (i32.shl - ;; code offset: 0x574 - (local.tee $0 - ;; code offset: 0x573 - (i32.add - ;; code offset: 0x56f - (local.get $6) - ;; code offset: 0x571 - (i32.const -1) - ) - ) - ;; code offset: 0x576 - (i32.const 2) - ) - ) - ;; code offset: 0x57a - (local.get $6) - ) - ;; code offset: 0x584 - (local.set $8 - ;; code offset: 0x583 - (i32.gt_s - ;; code offset: 0x57f - (local.get $6) - ;; code offset: 0x581 - (i32.const 2) - ) - ) - ;; code offset: 0x588 - (local.set $6 - ;; code offset: 0x586 - (local.get $0) - ) - ;; code offset: 0x58c - (br_if $label$21 - ;; code offset: 0x58a - (local.get $8) - ) - ) - ) - ;; code offset: 0x595 - (br_if $label$6 - ;; code offset: 0x594 - (i32.eq - ;; code offset: 0x590 - (local.get $6) - ;; code offset: 0x592 - (local.get $4) - ) - ) - ;; code offset: 0x59c - (local.set $7 - ;; code offset: 0x59b - (i32.add - ;; code offset: 0x597 - (local.get $7) - ;; code offset: 0x599 - (i32.const -1) - ) - ) - ;; code offset: 0x59e - (loop $label$22 - ;; code offset: 0x5a5 - (local.set $8 - ;; code offset: 0x5a2 - (i32.load - ;; code offset: 0x5a0 - (local.get $1) - ) - ) - ;; code offset: 0x5a9 - (local.set $0 - ;; code offset: 0x5a7 - (i32.const 0) - ) - ;; code offset: 0x5ab - (block $label$23 - ;; code offset: 0x5b2 - (br_if $label$23 - ;; code offset: 0x5b1 - (i32.lt_s - ;; code offset: 0x5ad - (local.get $6) - ;; code offset: 0x5af - (i32.const 1) - ) - ) - ;; code offset: 0x5b4 - (loop $label$24 - ;; code offset: 0x5ce - (i32.store - ;; code offset: 0x5bd - (i32.add - ;; code offset: 0x5b6 - (local.get $1) - ;; code offset: 0x5bc - (i32.shl - ;; code offset: 0x5b8 - (local.get $0) - ;; code offset: 0x5ba - (i32.const 2) - ) - ) - ;; code offset: 0x5cb - (i32.load - ;; code offset: 0x5ca - (i32.add - ;; code offset: 0x5be - (local.get $1) - ;; code offset: 0x5c9 - (i32.shl - ;; code offset: 0x5c5 - (local.tee $0 - ;; code offset: 0x5c4 - (i32.add - ;; code offset: 0x5c0 - (local.get $0) - ;; code offset: 0x5c2 - (i32.const 1) - ) - ) - ;; code offset: 0x5c7 - (i32.const 2) - ) - ) - ) - ) - ;; code offset: 0x5d6 - (br_if $label$24 - ;; code offset: 0x5d5 - (i32.ne - ;; code offset: 0x5d1 - (local.get $0) - ;; code offset: 0x5d3 - (local.get $6) - ) - ) - ) - ;; code offset: 0x5db - (local.set $0 - ;; code offset: 0x5d9 - (local.get $6) - ) - ) - ;; code offset: 0x5e8 - (i32.store - ;; code offset: 0x5e5 - (i32.add - ;; code offset: 0x5de - (local.get $1) - ;; code offset: 0x5e4 - (i32.shl - ;; code offset: 0x5e0 - (local.get $0) - ;; code offset: 0x5e2 - (i32.const 2) - ) - ) - ;; code offset: 0x5e6 - (local.get $8) - ) - ;; code offset: 0x5ff - (i32.store - ;; code offset: 0x5f3 - (local.tee $0 - ;; code offset: 0x5f2 - (i32.add - ;; code offset: 0x5eb - (local.get $5) - ;; code offset: 0x5f1 - (i32.shl - ;; code offset: 0x5ed - (local.get $6) - ;; code offset: 0x5ef - (i32.const 2) - ) - ) - ) - ;; code offset: 0x5fe - (i32.add - ;; code offset: 0x5fa - (local.tee $0 - ;; code offset: 0x5f7 - (i32.load - ;; code offset: 0x5f5 - (local.get $0) - ) - ) - ;; code offset: 0x5fc - (i32.const -1) - ) - ) - ;; code offset: 0x602 - (block $label$25 - ;; code offset: 0x609 - (br_if $label$25 - ;; code offset: 0x608 - (i32.gt_s - ;; code offset: 0x604 - (local.get $0) - ;; code offset: 0x606 - (i32.const 1) - ) - ) - ;; code offset: 0x615 - (br_if $label$22 - ;; code offset: 0x614 - (i32.ne - ;; code offset: 0x610 - (local.tee $6 - ;; code offset: 0x60f - (i32.add - ;; code offset: 0x60b - (local.get $6) - ;; code offset: 0x60d - (i32.const 1) - ) - ) - ;; code offset: 0x612 - (local.get $4) - ) - ) - ;; code offset: 0x617 - (br $label$6) - ) - ) - ;; code offset: 0x61d - (br_if $label$19 - ;; code offset: 0x61b - (local.get $7) - ) - ) - ) - ;; code offset: 0x623 - (call $free - ;; code offset: 0x621 - (local.get $1) - ) - ;; code offset: 0x627 - (call $free - ;; code offset: 0x625 - (local.get $5) - ) - ;; code offset: 0x62b - (local.set $5 - ;; code offset: 0x629 - (i32.const 0) - ) - ;; code offset: 0x62f - (local.set $0 - ;; code offset: 0x62d - (i32.const 0) - ) - ;; code offset: 0x631 - (block $label$26 - ;; code offset: 0x636 - (br_if $label$26 - ;; code offset: 0x635 - (i32.eqz - ;; code offset: 0x633 - (local.get $3) - ) - ) - ;; code offset: 0x63a - (local.set $0 - ;; code offset: 0x638 - (i32.const 0) - ) - ;; code offset: 0x63c - (loop $label$27 - ;; code offset: 0x642 - (local.set $1 - ;; code offset: 0x640 - (call $fannkuch_worker\28void*\29 - ;; code offset: 0x63e - (local.get $3) - ) - ) - ;; code offset: 0x649 - (local.set $6 - ;; code offset: 0x646 - (i32.load offset=8 - ;; code offset: 0x644 - (local.get $3) - ) - ) - ;; code offset: 0x64d - (call $free - ;; code offset: 0x64b - (local.get $3) - ) - ;; code offset: 0x659 - (local.set $0 - ;; code offset: 0x658 - (select - ;; code offset: 0x64f - (local.get $1) - ;; code offset: 0x651 - (local.get $0) - ;; code offset: 0x657 - (i32.lt_s - ;; code offset: 0x653 - (local.get $0) - ;; code offset: 0x655 - (local.get $1) - ) - ) - ) - ;; code offset: 0x65d - (local.set $3 - ;; code offset: 0x65b - (local.get $6) - ) - ;; code offset: 0x661 - (br_if $label$27 - ;; code offset: 0x65f - (local.get $6) - ) - ) - ) - ;; code offset: 0x669 - (i32.store offset=4 - ;; code offset: 0x665 - (local.get $2) - ;; code offset: 0x667 - (local.get $0) - ) - ;; code offset: 0x670 - (i32.store - ;; code offset: 0x66c - (local.get $2) - ;; code offset: 0x66e - (local.get $4) - ) - ;; code offset: 0x67a - (drop - ;; code offset: 0x678 - (call $iprintf - ;; code offset: 0x673 - (i32.const 1024) - ;; code offset: 0x676 - (local.get $2) - ) - ) - ) - ;; code offset: 0x681 - (global.set $global$0 - ;; code offset: 0x680 - (i32.add - ;; code offset: 0x67c - (local.get $2) - ;; code offset: 0x67e - (i32.const 32) - ) - ) - ;; code offset: 0x683 - (local.get $5) - ) - ;; custom section ".debug_info", size 851 - ;; custom section ".debug_loc", size 1073 - ;; custom section ".debug_ranges", size 88 - ;; custom section ".debug_abbrev", size 333 - ;; custom section ".debug_line", size 2826 - ;; custom section ".debug_str", size 434 - ;; custom section "producers", size 135 -) diff -Nru binaryen-91/test/passes/fannkuch3_dwarf.bin.txt binaryen-99/test/passes/fannkuch3_dwarf.bin.txt --- binaryen-91/test/passes/fannkuch3_dwarf.bin.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/fannkuch3_dwarf.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,7003 @@ +DWARF debug info +================ + +Contains section .debug_info (851 bytes) +Contains section .debug_loc (1073 bytes) +Contains section .debug_ranges (88 bytes) +Contains section .debug_abbrev (333 bytes) +Contains section .debug_line (1477 bytes) +Contains section .debug_str (434 bytes) + +.debug_abbrev contents: +Abbrev table for offset: 0x00000000 +[1] DW_TAG_compile_unit DW_CHILDREN_yes + DW_AT_producer DW_FORM_strp + DW_AT_language DW_FORM_data2 + DW_AT_name DW_FORM_strp + DW_AT_stmt_list DW_FORM_sec_offset + DW_AT_comp_dir DW_FORM_strp + DW_AT_low_pc DW_FORM_addr + DW_AT_ranges DW_FORM_sec_offset + +[2] DW_TAG_pointer_type DW_CHILDREN_no + DW_AT_type DW_FORM_ref4 + +[3] DW_TAG_structure_type DW_CHILDREN_yes + DW_AT_calling_convention DW_FORM_data1 + DW_AT_name DW_FORM_strp + DW_AT_byte_size DW_FORM_data1 + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + +[4] DW_TAG_member DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_type DW_FORM_ref4 + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_data_member_location DW_FORM_data1 + +[5] DW_TAG_base_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_encoding DW_FORM_data1 + DW_AT_byte_size DW_FORM_data1 + +[6] DW_TAG_namespace DW_CHILDREN_yes + DW_AT_name DW_FORM_strp + +[7] DW_TAG_typedef DW_CHILDREN_no + DW_AT_type DW_FORM_ref4 + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + +[8] DW_TAG_unspecified_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + +[9] DW_TAG_imported_declaration DW_CHILDREN_no + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_import DW_FORM_ref4 + +[10] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_GNU_all_call_sites DW_FORM_flag_present + DW_AT_linkage_name DW_FORM_strp + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[11] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[12] DW_TAG_variable DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[13] DW_TAG_variable DW_CHILDREN_no + DW_AT_location DW_FORM_sec_offset + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[14] DW_TAG_lexical_block DW_CHILDREN_yes + DW_AT_ranges DW_FORM_sec_offset + +[15] DW_TAG_GNU_call_site DW_CHILDREN_no + DW_AT_low_pc DW_FORM_addr + +[16] DW_TAG_GNU_call_site DW_CHILDREN_no + DW_AT_abstract_origin DW_FORM_ref4 + DW_AT_low_pc DW_FORM_addr + +[17] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_declaration DW_FORM_flag_present + DW_AT_external DW_FORM_flag_present + +[18] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_type DW_FORM_ref4 + +[19] DW_TAG_pointer_type DW_CHILDREN_no + +[20] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_linkage_name DW_FORM_strp + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_inline DW_FORM_data1 + +[21] DW_TAG_label DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + +[22] DW_TAG_lexical_block DW_CHILDREN_yes + +[23] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_GNU_all_call_sites DW_FORM_flag_present + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[24] DW_TAG_inlined_subroutine DW_CHILDREN_yes + DW_AT_abstract_origin DW_FORM_ref4 + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_call_file DW_FORM_data1 + DW_AT_call_line DW_FORM_data1 + DW_AT_call_column DW_FORM_data1 + +[25] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_abstract_origin DW_FORM_ref4 + +[26] DW_TAG_variable DW_CHILDREN_no + DW_AT_location DW_FORM_sec_offset + DW_AT_abstract_origin DW_FORM_ref4 + +[27] DW_TAG_variable DW_CHILDREN_no + DW_AT_abstract_origin DW_FORM_ref4 + +[28] DW_TAG_label DW_CHILDREN_no + DW_AT_abstract_origin DW_FORM_ref4 + DW_AT_low_pc DW_FORM_addr + + +.debug_info contents: +0x00000000: Compile Unit: length = 0x0000034f version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x00000353) + +0x0000000b: DW_TAG_compile_unit [1] * + DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)") + DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000069] = "/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) + DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x000000a9] = "/usr/local/google/home/azakai/Dev/2-binaryen") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) + DW_AT_ranges [DW_FORM_sec_offset] (0x00000040 + [0x00000006, 0x0000039d) + [0x0000039f, 0x000006e1)) + +0x00000026: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x002b => {0x0000002b} "worker_args") + +0x0000002b: DW_TAG_structure_type [3] * + DW_AT_calling_convention [DW_FORM_data1] (DW_CC_pass_by_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e3] = "worker_args") + DW_AT_byte_size [DW_FORM_data1] (0x0c) + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (20) + +0x00000034: DW_TAG_member [4] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (21) + DW_AT_data_member_location [DW_FORM_data1] (0x00) + +0x00000040: DW_TAG_member [4] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (21) + DW_AT_data_member_location [DW_FORM_data1] (0x04) + +0x0000004c: DW_TAG_member [4] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000de] = "next") + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (22) + DW_AT_data_member_location [DW_FORM_data1] (0x08) + +0x00000058: NULL + +0x00000059: DW_TAG_base_type [5] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d8] = "int") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) + DW_AT_byte_size [DW_FORM_data1] (0x04) + +0x00000060: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000065: DW_TAG_namespace [6] * + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ef] = "std") + +0x0000006a: DW_TAG_typedef [7] + DW_AT_type [DW_FORM_ref4] (cu + 0x0076 => {0x00000076} "decltype(nullptr)") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000105] = "nullptr_t") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libcxx/__nullptr") + DW_AT_decl_line [DW_FORM_data1] (57) + +0x00000075: NULL + +0x00000076: DW_TAG_unspecified_type [8] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000f3] = "decltype(nullptr)") + +0x0000007b: DW_TAG_imported_declaration [9] + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libcxx/stddef.h") + DW_AT_decl_line [DW_FORM_data1] (52) + DW_AT_import [DW_FORM_ref4] (cu + 0x006a => {0x0000006a}) + +0x00000082: DW_TAG_subprogram [10] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000006) + DW_AT_high_pc [DW_FORM_data4] (0x00000397) + DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x1 +0, DW_OP_stack_value) + DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) + DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x00000166] = "_Z15fannkuch_workerPv") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000017c] = "fannkuch_worker") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (26) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x0000009e: DW_TAG_formal_parameter [11] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000191] = "_arg") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (26) + DW_AT_type [DW_FORM_ref4] (cu + 0x01a7 => {0x000001a7} "*") + +0x000000a9: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000133] = "args") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (28) + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + +0x000000b4: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x00000000: + [0xffffffff, 0x00000006): + [0x00000000, 0x0000003c): DW_OP_consts +0, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014c] = "maxflips") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000000c3: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x0000001d: + [0xffffffff, 0x00000006): + [0x00000007, 0x0000003c): DW_OP_consts +0, DW_OP_stack_value + [0x00000052, 0x00000057): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x000000ec, 0x000000f5): DW_OP_consts +1, DW_OP_stack_value + [0x00000131, 0x0000013b): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000179, 0x00000186): DW_OP_consts +0, DW_OP_stack_value + [0x00000264, 0x0000026f): DW_OP_consts +0, DW_OP_stack_value + [0x00000275, 0x0000027e): DW_OP_consts +1, DW_OP_stack_value + [0x000002ba, 0x000002c4): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000302, 0x0000030f): DW_OP_consts +0, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000000d2: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000000a5: + [0xffffffff, 0x00000006): + [0x0000000e, 0x0000003c): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000000e1: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000000c3: + [0xffffffff, 0x00000006): + [0x0000001b, 0x0000003c): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000013e] = "perm1") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (29) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x000000f0: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000000e1: + [0xffffffff, 0x00000006): + [0x00000025, 0x0000003c): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000196] = "perm") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (29) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x000000ff: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000000ff: + [0xffffffff, 0x00000006): + [0x0000002f, 0x0000003c): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000144] = "count") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (29) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x0000010e: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x0000011d: + [0xffffffff, 0x00000006): + [0x000001e2, 0x000001e7): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value + [0x0000036b, 0x00000370): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014a] = "r") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000011d: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x00000149: + [0xffffffff, 0x00000006): + [0x000000cf, 0x000000e6): DW_OP_consts +0, DW_OP_stack_value + [0x000000ec, 0x000000f5): DW_OP_WASM_location 0x0 +13, DW_OP_stack_value + [0x0000015a, 0x00000162): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000264, 0x0000026f): DW_OP_consts +0, DW_OP_stack_value + [0x00000275, 0x0000027e): DW_OP_WASM_location 0x0 +10, DW_OP_stack_value + [0x000002e3, 0x000002eb): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000155] = "flips") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000012c: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000001ab: + [0xffffffff, 0x00000006): + [0x000000e2, 0x000000e6): DW_OP_WASM_location 0x0 +12, DW_OP_stack_value + [0x0000026b, 0x0000026f): DW_OP_WASM_location 0x0 +16, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019b] = "k") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000013b: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000001d7: + [0xffffffff, 0x00000006): + [0x000000fc, 0x00000100): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x00000138, 0x0000013b): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x00000285, 0x00000289): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x000002c1, 0x000002c4): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019d] = "j") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000014a: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x0000021f: + [0xffffffff, 0x00000006): + [0x00000111, 0x0000013b): DW_OP_WASM_location 0x0 +15, DW_OP_stack_value + [0x0000014c, 0x00000162): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x0000029a, 0x000002c4): DW_OP_WASM_location 0x0 +14, DW_OP_stack_value + [0x000002d5, 0x000002eb): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019f] = "tmp") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000159: DW_TAG_lexical_block [14] * + DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 + [0x00000185, 0x000001c3) + [0x000001ed, 0x000001f6) + [0x0000030e, 0x0000034c) + [0x00000376, 0x0000037f)) + +0x0000015e: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000163] = "p0") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (74) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000169: NULL + +0x0000016a: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x000000000000001f) + +0x0000016f: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000029) + +0x00000174: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000033) + +0x00000179: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x00000000000000e1) + +0x0000017e: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x000000000000038a) + +0x00000187: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000392) + +0x00000190: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x000000000000039a) + +0x00000199: NULL + +0x0000019a: DW_TAG_subprogram [17] * + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000010f] = "free") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libc/stdlib.h") + DW_AT_decl_line [DW_FORM_data1] (41) + DW_AT_declaration [DW_FORM_flag_present] (true) + DW_AT_external [DW_FORM_flag_present] (true) + +0x000001a1: DW_TAG_formal_parameter [18] + DW_AT_type [DW_FORM_ref4] (cu + 0x01a7 => {0x000001a7} "*") + +0x000001a6: NULL + +0x000001a7: DW_TAG_pointer_type [19] + +0x000001a8: DW_TAG_subprogram [20] * + DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x00000114] = "_ZL8fannkuchi") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000122] = "fannkuch") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (87) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_inline [DW_FORM_data1] (DW_INL_inlined) + +0x000001b8: DW_TAG_formal_parameter [11] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (87) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000001c3: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000012b] = "showmax") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (90) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000001ce: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000133] = "args") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (89) + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + +0x000001d9: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000001e4: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000138] = "targs") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (89) + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + +0x000001ef: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000013e] = "perm1") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x000001fa: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000144] = "count") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x00000205: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014a] = "r") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000210: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014c] = "maxflips") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000021b: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000155] = "flips") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000226: DW_TAG_label [21] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000015b] = "cleanup") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (137) + +0x0000022d: DW_TAG_lexical_block [22] * + +0x0000022e: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000163] = "p0") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (125) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000239: NULL + +0x0000023a: NULL + +0x0000023b: DW_TAG_subprogram [23] * + DW_AT_low_pc [DW_FORM_addr] (0x000000000000039f) + DW_AT_high_pc [DW_FORM_data4] (0x00000342) + DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) + DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000018c] = "main") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (152) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x00000253: DW_TAG_formal_parameter [11] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001a3] = "argc") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (152) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000025e: DW_TAG_formal_parameter [11] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001a8] = "argv") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (152) + DW_AT_type [DW_FORM_ref4] (cu + 0x0341 => {0x00000341} "char**") + +0x00000269: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x00000267: + [0xffffffff, 0x0000039f): + [0x00000032, 0x00000037): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (153) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000278: DW_TAG_inlined_subroutine [24] * + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01a8 => {0x000001a8} "_ZL8fannkuchi") + DW_AT_low_pc [DW_FORM_addr] (0x00000000000003ed) + DW_AT_high_pc [DW_FORM_data4] (0x000002c8) + DW_AT_call_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_call_line [DW_FORM_data1] (159) + DW_AT_call_column [DW_FORM_data1] (0x29) + +0x00000288: DW_TAG_formal_parameter [25] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01b8 => {0x000001b8} "n") + +0x0000028d: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x00000285: + [0xffffffff, 0x0000039f): + [0x0000004c, 0x00000055): DW_OP_consts +30, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01c3 => {0x000001c3} "showmax") + +0x00000296: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x000002a2: + [0xffffffff, 0x0000039f): + [0x0000004c, 0x00000055): DW_OP_lit0, DW_OP_stack_value + [0x000002f8, 0x00000314): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01ce => {0x000001ce} "args") + +0x0000029f: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x000002cc: + [0xffffffff, 0x0000039f): + [0x0000004c, 0x00000055): DW_OP_consts +0, DW_OP_stack_value + [0x0000008e, 0x00000093): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000099, 0x000000c1): DW_OP_consts +0, DW_OP_stack_value + [0x000000d7, 0x000000dc): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x000000f5, 0x000000f9): DW_OP_consts +0, DW_OP_stack_value + [0x00000127, 0x0000012c): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000178, 0x00000188): DW_OP_consts +0, DW_OP_stack_value + [0x000001fa, 0x0000020c): DW_OP_consts +0, DW_OP_stack_value + [0x00000241, 0x00000255): DW_OP_consts +0, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01d9 => {0x000001d9} "i") + +0x000002a8: DW_TAG_variable [27] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01e4 => {0x000001e4} "targs") + +0x000002ad: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x00000354: + [0xffffffff, 0x0000039f): + [0x000000a8, 0x000000c1): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01ef => {0x000001ef} "perm1") + +0x000002b6: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x00000372: + [0xffffffff, 0x0000039f): + [0x000000b2, 0x000000c1): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01fa => {0x000001fa} "count") + +0x000002bf: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x00000390: + [0xffffffff, 0x0000039f): + [0x000001e6, 0x000001ed): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value + [0x000002b3, 0x000002ba): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0205 => {0x00000205} "r") + +0x000002c8: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x000003e8: + [0xffffffff, 0x0000039f): + [0x000002d6, 0x000002e1): DW_OP_consts +0, DW_OP_stack_value + [0x0000030c, 0x00000314): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0210 => {0x00000210} "maxflips") + +0x000002d1: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x00000413: + [0xffffffff, 0x0000039f): + [0x000002f1, 0x00000314): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x021b => {0x0000021b} "flips") + +0x000002da: DW_TAG_label [28] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0226 => {0x00000226} "cleanup") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000661) + +0x000002e3: DW_TAG_lexical_block [14] * + DW_AT_ranges [DW_FORM_sec_offset] (0x00000028 + [0x00000517, 0x0000055e) + [0x000005de, 0x0000062b)) + +0x000002e8: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x000003bc: + [0xffffffff, 0x0000039f): + [0x0000017f, 0x00000188): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value + [0x00000248, 0x00000255): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x022e => {0x0000022e} "p0") + +0x000002f1: NULL + +0x000002f2: NULL + +0x000002f3: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x00000000000003cf) + +0x000002f8: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x00000000000003e3) + +0x000002fd: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x000000000000040d) + +0x00000302: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000445) + +0x00000307: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x000000000000044f) + +0x0000030c: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x00000000000004be) + +0x00000311: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x00000000000004d4) + +0x00000316: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x00000000000005a1) + +0x0000031b: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000669) + +0x00000324: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000671) + +0x0000032d: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x000000000000068e) + +0x00000332: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x000000000000069f) + +0x0000033b: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x00000000000006d1) + +0x00000340: NULL + +0x00000341: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x0346 => {0x00000346} "char*") + +0x00000346: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x034b => {0x0000034b} "char") + +0x0000034b: DW_TAG_base_type [5] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001ad] = "char") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char) + DW_AT_byte_size [DW_FORM_data1] (0x01) + +0x00000352: NULL + +.debug_loc contents: +0x00000000: + [0xffffffff, 0x00000006): + [0x00000000, 0x0000003c): DW_OP_consts +0, DW_OP_stack_value + +0x0000001d: + [0xffffffff, 0x00000006): + [0x00000007, 0x0000003c): DW_OP_consts +0, DW_OP_stack_value + [0x00000052, 0x00000057): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x000000ec, 0x000000f5): DW_OP_consts +1, DW_OP_stack_value + [0x00000131, 0x0000013b): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000179, 0x00000186): DW_OP_consts +0, DW_OP_stack_value + [0x00000264, 0x0000026f): DW_OP_consts +0, DW_OP_stack_value + [0x00000275, 0x0000027e): DW_OP_consts +1, DW_OP_stack_value + [0x000002ba, 0x000002c4): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000302, 0x0000030f): DW_OP_consts +0, DW_OP_stack_value + +0x000000a5: + [0xffffffff, 0x00000006): + [0x0000000e, 0x0000003c): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value + +0x000000c3: + [0xffffffff, 0x00000006): + [0x0000001b, 0x0000003c): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + +0x000000e1: + [0xffffffff, 0x00000006): + [0x00000025, 0x0000003c): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value + +0x000000ff: + [0xffffffff, 0x00000006): + [0x0000002f, 0x0000003c): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value + +0x0000011d: + [0xffffffff, 0x00000006): + [0x000001e2, 0x000001e7): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value + [0x0000036b, 0x00000370): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value + +0x00000149: + [0xffffffff, 0x00000006): + [0x000000cf, 0x000000e6): DW_OP_consts +0, DW_OP_stack_value + [0x000000ec, 0x000000f5): DW_OP_WASM_location 0x0 +13, DW_OP_stack_value + [0x0000015a, 0x00000162): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000264, 0x0000026f): DW_OP_consts +0, DW_OP_stack_value + [0x00000275, 0x0000027e): DW_OP_WASM_location 0x0 +10, DW_OP_stack_value + [0x000002e3, 0x000002eb): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + +0x000001ab: + [0xffffffff, 0x00000006): + [0x000000e2, 0x000000e6): DW_OP_WASM_location 0x0 +12, DW_OP_stack_value + [0x0000026b, 0x0000026f): DW_OP_WASM_location 0x0 +16, DW_OP_stack_value + +0x000001d7: + [0xffffffff, 0x00000006): + [0x000000fc, 0x00000100): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x00000138, 0x0000013b): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x00000285, 0x00000289): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x000002c1, 0x000002c4): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +0x0000021f: + [0xffffffff, 0x00000006): + [0x00000111, 0x0000013b): DW_OP_WASM_location 0x0 +15, DW_OP_stack_value + [0x0000014c, 0x00000162): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x0000029a, 0x000002c4): DW_OP_WASM_location 0x0 +14, DW_OP_stack_value + [0x000002d5, 0x000002eb): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +0x00000267: + [0xffffffff, 0x0000039f): + [0x00000032, 0x00000037): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + +0x00000285: + [0xffffffff, 0x0000039f): + [0x0000004c, 0x00000055): DW_OP_consts +30, DW_OP_stack_value + +0x000002a2: + [0xffffffff, 0x0000039f): + [0x0000004c, 0x00000055): DW_OP_lit0, DW_OP_stack_value + [0x000002f8, 0x00000314): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value + +0x000002cc: + [0xffffffff, 0x0000039f): + [0x0000004c, 0x00000055): DW_OP_consts +0, DW_OP_stack_value + [0x0000008e, 0x00000093): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000099, 0x000000c1): DW_OP_consts +0, DW_OP_stack_value + [0x000000d7, 0x000000dc): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x000000f5, 0x000000f9): DW_OP_consts +0, DW_OP_stack_value + [0x00000127, 0x0000012c): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000178, 0x00000188): DW_OP_consts +0, DW_OP_stack_value + [0x000001fa, 0x0000020c): DW_OP_consts +0, DW_OP_stack_value + [0x00000241, 0x00000255): DW_OP_consts +0, DW_OP_stack_value + +0x00000354: + [0xffffffff, 0x0000039f): + [0x000000a8, 0x000000c1): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +0x00000372: + [0xffffffff, 0x0000039f): + [0x000000b2, 0x000000c1): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value + +0x00000390: + [0xffffffff, 0x0000039f): + [0x000001e6, 0x000001ed): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value + [0x000002b3, 0x000002ba): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value + +0x000003bc: + [0xffffffff, 0x0000039f): + [0x0000017f, 0x00000188): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value + [0x00000248, 0x00000255): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value + +0x000003e8: + [0xffffffff, 0x0000039f): + [0x000002d6, 0x000002e1): DW_OP_consts +0, DW_OP_stack_value + [0x0000030c, 0x00000314): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + +0x00000413: + [0xffffffff, 0x0000039f): + [0x000002f1, 0x00000314): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +.debug_line contents: +debug_line[0x00000000] +Line table prologue: + total_length: 0x000005c1 + version: 4 + prologue_length: 0x000000dd + min_inst_length: 1 +max_ops_per_inst: 1 + default_is_stmt: 1 + line_base: -5 + line_range: 14 + opcode_base: 13 +standard_opcode_lengths[DW_LNS_copy] = 0 +standard_opcode_lengths[DW_LNS_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_advance_line] = 1 +standard_opcode_lengths[DW_LNS_set_file] = 1 +standard_opcode_lengths[DW_LNS_set_column] = 1 +standard_opcode_lengths[DW_LNS_negate_stmt] = 0 +standard_opcode_lengths[DW_LNS_set_basic_block] = 0 +standard_opcode_lengths[DW_LNS_const_add_pc] = 0 +standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 +standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 +standard_opcode_lengths[DW_LNS_set_isa] = 1 +include_directories[ 1] = "/usr/local/google/home/azakai/Dev" +file_names[ 1]: + name: "emscripten/tests/fannkuch.cpp" + dir_index: 1 + mod_time: 0x00000000 + length: 0x00000000 +file_names[ 2]: + name: "emscripten/system/include/libcxx/__nullptr" + dir_index: 1 + mod_time: 0x00000000 + length: 0x00000000 +file_names[ 3]: + name: "emscripten/system/include/libcxx/stddef.h" + dir_index: 1 + mod_time: 0x00000000 + length: 0x00000000 +file_names[ 4]: + name: "emscripten/system/include/libc/stdlib.h" + dir_index: 1 + mod_time: 0x00000000 + length: 0x00000000 +0x000000e7: 00 DW_LNE_set_address (0x0000000000000006) +0x000000ee: 03 DW_LNS_advance_line (27) +0x000000f0: 01 DW_LNS_copy + 0x0000000000000006 27 0 1 0 0 is_stmt + + +0x000000f1: 05 DW_LNS_set_column (14) +0x000000f3: 0a DW_LNS_set_prologue_end +0x000000f4: 7a address += 7, line += 6 + 0x000000000000000d 33 14 1 0 0 is_stmt prologue_end + +0x000000f5: 06 DW_LNS_negate_stmt +0x000000f6: 03 DW_LNS_advance_line (0) +0x000000f8: 58 address += 5, line += 0 + 0x0000000000000012 0 14 1 0 0 + +0x000000f9: 05 DW_LNS_set_column (27) +0x000000fb: 06 DW_LNS_negate_stmt +0x000000fc: 03 DW_LNS_advance_line (34) +0x000000fe: 4a address += 4, line += 0 + 0x0000000000000016 34 27 1 0 0 is_stmt + +0x000000ff: 05 DW_LNS_set_column (18) +0x00000101: 06 DW_LNS_negate_stmt +0x00000102: 20 address += 1, line += 0 + 0x0000000000000017 34 18 1 0 0 + +0x00000103: 05 DW_LNS_set_column (17) +0x00000105: 06 DW_LNS_negate_stmt +0x00000106: 9f address += 10, line += 1 + 0x0000000000000021 35 17 1 0 0 is_stmt + +0x00000107: 05 DW_LNS_set_column (18) +0x00000109: 9f address += 10, line += 1 + 0x000000000000002b 36 18 1 0 0 is_stmt + +0x0000010a: 06 DW_LNS_negate_stmt +0x0000010b: 03 DW_LNS_advance_line (0) +0x0000010d: 9e address += 10, line += 0 + 0x0000000000000035 0 18 1 0 0 + +0x0000010e: 06 DW_LNS_negate_stmt +0x0000010f: 03 DW_LNS_advance_line (37) +0x00000111: 66 address += 6, line += 0 + 0x000000000000003b 37 18 1 0 0 is_stmt + +0x00000112: 05 DW_LNS_set_column (4) +0x00000114: 06 DW_LNS_negate_stmt +0x00000115: 58 address += 5, line += 0 + 0x0000000000000040 37 4 1 0 0 + +0x00000116: 03 DW_LNS_advance_line (0) +0x00000118: 2e address += 2, line += 0 + 0x0000000000000042 0 4 1 0 0 + +0x00000119: 05 DW_LNS_set_column (7) +0x0000011b: 06 DW_LNS_negate_stmt +0x0000011c: 03 DW_LNS_advance_line (38) +0x0000011e: 2e address += 2, line += 0 + 0x0000000000000044 38 7 1 0 0 is_stmt + +0x0000011f: 05 DW_LNS_set_column (16) +0x00000121: 06 DW_LNS_negate_stmt +0x00000122: 82 address += 8, line += 0 + 0x000000000000004c 38 16 1 0 0 + +0x00000123: 05 DW_LNS_set_column (24) +0x00000125: 06 DW_LNS_negate_stmt +0x00000126: 57 address += 5, line += -1 + 0x0000000000000051 37 24 1 0 0 is_stmt + +0x00000127: 05 DW_LNS_set_column (18) +0x00000129: 06 DW_LNS_negate_stmt +0x0000012a: 58 address += 5, line += 0 + 0x0000000000000056 37 18 1 0 0 + +0x0000012b: 05 DW_LNS_set_column (4) +0x0000012d: 58 address += 5, line += 0 + 0x000000000000005b 37 4 1 0 0 + +0x0000012e: 06 DW_LNS_negate_stmt +0x0000012f: 3e address += 3, line += 2 + 0x000000000000005e 39 4 1 0 0 is_stmt + +0x00000130: 05 DW_LNS_set_column (16) +0x00000132: 06 DW_LNS_negate_stmt +0x00000133: 2e address += 2, line += 0 + 0x0000000000000060 39 16 1 0 0 + +0x00000134: 05 DW_LNS_set_column (4) +0x00000136: 90 address += 9, line += 0 + 0x0000000000000069 39 4 1 0 0 + +0x00000137: 05 DW_LNS_set_column (23) +0x00000139: 2e address += 2, line += 0 + 0x000000000000006b 39 23 1 0 0 + +0x0000013a: 05 DW_LNS_set_column (19) +0x0000013c: 58 address += 5, line += 0 + 0x0000000000000070 39 19 1 0 0 + +0x0000013d: 05 DW_LNS_set_column (4) +0x0000013f: 06 DW_LNS_negate_stmt +0x00000140: 59 address += 5, line += 1 + 0x0000000000000075 40 4 1 0 0 is_stmt + +0x00000141: 05 DW_LNS_set_column (17) +0x00000143: 06 DW_LNS_negate_stmt +0x00000144: 82 address += 8, line += 0 + 0x000000000000007d 40 17 1 0 0 + +0x00000145: 05 DW_LNS_set_column (18) +0x00000147: 06 DW_LNS_negate_stmt +0x00000148: a9 address += 11, line += -3 + 0x0000000000000088 37 18 1 0 0 is_stmt + +0x00000149: 05 DW_LNS_set_column (4) +0x0000014b: 5e address += 5, line += 6 + 0x000000000000008d 43 4 1 0 0 is_stmt + +0x0000014c: 06 DW_LNS_negate_stmt +0x0000014d: 03 DW_LNS_advance_line (0) +0x0000014f: 2e address += 2, line += 0 + 0x000000000000008f 0 4 1 0 0 + +0x00000150: 05 DW_LNS_set_column (16) +0x00000152: 06 DW_LNS_negate_stmt +0x00000153: 03 DW_LNS_advance_line (44) +0x00000155: 4a address += 4, line += 0 + 0x0000000000000093 44 16 1 0 0 is_stmt + +0x00000156: 06 DW_LNS_negate_stmt +0x00000157: 03 DW_LNS_advance_line (0) +0x00000159: 74 address += 7, line += 0 + 0x000000000000009a 0 16 1 0 0 + +0x0000015a: 05 DW_LNS_set_column (10) +0x0000015c: 06 DW_LNS_negate_stmt +0x0000015d: 03 DW_LNS_advance_line (45) +0x0000015f: 2e address += 2, line += 0 + 0x000000000000009c 45 10 1 0 0 is_stmt + +0x00000160: 05 DW_LNS_set_column (18) +0x00000162: 06 DW_LNS_negate_stmt +0x00000163: 2e address += 2, line += 0 + 0x000000000000009e 45 18 1 0 0 + +0x00000164: 05 DW_LNS_set_column (10) +0x00000166: 90 address += 9, line += 0 + 0x00000000000000a7 45 10 1 0 0 + +0x00000167: 05 DW_LNS_set_column (23) +0x00000169: 2e address += 2, line += 0 + 0x00000000000000a9 45 23 1 0 0 + +0x0000016a: 05 DW_LNS_set_column (16) +0x0000016c: 06 DW_LNS_negate_stmt +0x0000016d: 57 address += 5, line += -1 + 0x00000000000000ae 44 16 1 0 0 is_stmt + +0x0000016e: 05 DW_LNS_set_column (0) +0x00000170: 06 DW_LNS_negate_stmt +0x00000171: 03 DW_LNS_advance_line (0) +0x00000173: 74 address += 7, line += 0 + 0x00000000000000b5 0 0 1 0 0 + +0x00000174: 05 DW_LNS_set_column (7) +0x00000176: 03 DW_LNS_advance_line (44) +0x00000178: 4a address += 4, line += 0 + 0x00000000000000b9 44 7 1 0 0 + +0x00000179: 05 DW_LNS_set_column (11) +0x0000017b: 06 DW_LNS_negate_stmt +0x0000017c: 68 address += 6, line += 2 + 0x00000000000000bf 46 11 1 0 0 is_stmt + +0x0000017d: 05 DW_LNS_set_column (28) +0x0000017f: 06 DW_LNS_negate_stmt +0x00000180: ba address += 12, line += 0 + 0x00000000000000cb 46 28 1 0 0 + +0x00000181: 05 DW_LNS_set_column (41) +0x00000183: 58 address += 5, line += 0 + 0x00000000000000d0 46 41 1 0 0 + +0x00000184: 05 DW_LNS_set_column (21) +0x00000186: 06 DW_LNS_negate_stmt +0x00000187: 5a address += 5, line += 2 + 0x00000000000000d5 48 21 1 0 0 is_stmt + +0x00000188: 05 DW_LNS_set_column (14) +0x0000018a: bc address += 12, line += 2 + 0x00000000000000e1 50 14 1 0 0 is_stmt + +0x0000018b: 06 DW_LNS_negate_stmt +0x0000018c: 03 DW_LNS_advance_line (0) +0x0000018e: 74 address += 7, line += 0 + 0x00000000000000e8 0 14 1 0 0 + +0x0000018f: 05 DW_LNS_set_column (38) +0x00000191: 06 DW_LNS_negate_stmt +0x00000192: 03 DW_LNS_advance_line (52) +0x00000194: ba address += 12, line += 0 + 0x00000000000000f4 52 38 1 0 0 is_stmt + +0x00000195: 05 DW_LNS_set_column (0) +0x00000197: 06 DW_LNS_negate_stmt +0x00000198: 03 DW_LNS_advance_line (0) +0x0000019a: 74 address += 7, line += 0 + 0x00000000000000fb 0 0 1 0 0 + +0x0000019b: 05 DW_LNS_set_column (22) +0x0000019d: 06 DW_LNS_negate_stmt +0x0000019e: 03 DW_LNS_advance_line (53) +0x000001a0: c8 address += 13, line += 0 + 0x0000000000000108 53 22 1 0 0 is_stmt + +0x000001a1: 05 DW_LNS_set_column (24) +0x000001a3: e5 address += 15, line += 1 + 0x0000000000000117 54 24 1 0 0 is_stmt + +0x000001a4: 05 DW_LNS_set_column (26) +0x000001a6: 06 DW_LNS_negate_stmt +0x000001a7: 2e address += 2, line += 0 + 0x0000000000000119 54 26 1 0 0 + +0x000001a8: 05 DW_LNS_set_column (24) +0x000001aa: c8 address += 13, line += 0 + 0x0000000000000126 54 24 1 0 0 + +0x000001ab: 06 DW_LNS_negate_stmt +0x000001ac: 3d address += 3, line += 1 + 0x0000000000000129 55 24 1 0 0 is_stmt + +0x000001ad: 05 DW_LNS_set_column (44) +0x000001af: 71 address += 7, line += -3 + 0x0000000000000130 52 44 1 0 0 is_stmt + +0x000001b0: 06 DW_LNS_negate_stmt +0x000001b1: 03 DW_LNS_advance_line (0) +0x000001b3: 58 address += 5, line += 0 + 0x0000000000000135 0 44 1 0 0 + +0x000001b4: 05 DW_LNS_set_column (38) +0x000001b6: 03 DW_LNS_advance_line (52) +0x000001b8: 74 address += 7, line += 0 + 0x000000000000013c 52 38 1 0 0 + +0x000001b9: 05 DW_LNS_set_column (13) +0x000001bb: 3c address += 3, line += 0 + 0x000000000000013f 52 13 1 0 0 + +0x000001bc: 05 DW_LNS_set_column (19) +0x000001be: 06 DW_LNS_negate_stmt +0x000001bf: 50 address += 4, line += 6 + 0x0000000000000143 58 19 1 0 0 is_stmt + +0x000001c0: 05 DW_LNS_set_column (21) +0x000001c2: e5 address += 15, line += 1 + 0x0000000000000152 59 21 1 0 0 is_stmt + +0x000001c3: 05 DW_LNS_set_column (18) +0x000001c5: 72 address += 7, line += -2 + 0x0000000000000159 57 18 1 0 0 is_stmt + +0x000001c6: 05 DW_LNS_set_column (0) +0x000001c8: 06 DW_LNS_negate_stmt +0x000001c9: 03 DW_LNS_advance_line (0) +0x000001cb: 74 address += 7, line += 0 + 0x0000000000000160 0 0 1 0 0 + +0x000001cc: 05 DW_LNS_set_column (14) +0x000001ce: 06 DW_LNS_negate_stmt +0x000001cf: 03 DW_LNS_advance_line (62) +0x000001d1: 90 address += 9, line += 0 + 0x0000000000000169 62 14 1 0 0 is_stmt + +0x000001d2: 05 DW_LNS_set_column (23) +0x000001d4: 06 DW_LNS_negate_stmt +0x000001d5: 4a address += 4, line += 0 + 0x000000000000016d 62 23 1 0 0 + +0x000001d6: 05 DW_LNS_set_column (14) +0x000001d8: 58 address += 5, line += 0 + 0x0000000000000172 62 14 1 0 0 + +0x000001d9: 03 DW_LNS_advance_line (0) +0x000001db: 3c address += 3, line += 0 + 0x0000000000000175 0 14 1 0 0 + +0x000001dc: 05 DW_LNS_set_column (16) +0x000001de: 06 DW_LNS_negate_stmt +0x000001df: 03 DW_LNS_advance_line (66) +0x000001e2: 20 address += 1, line += 0 + 0x0000000000000176 66 16 1 0 0 is_stmt + +0x000001e3: 06 DW_LNS_negate_stmt +0x000001e4: 03 DW_LNS_advance_line (0) +0x000001e7: 74 address += 7, line += 0 + 0x000000000000017d 0 16 1 0 0 + +0x000001e8: 05 DW_LNS_set_column (27) +0x000001ea: 06 DW_LNS_negate_stmt +0x000001eb: 03 DW_LNS_advance_line (75) +0x000001ee: 82 address += 8, line += 0 + 0x0000000000000185 75 27 1 0 0 is_stmt + +0x000001ef: 06 DW_LNS_negate_stmt +0x000001f0: 03 DW_LNS_advance_line (0) +0x000001f3: 74 address += 7, line += 0 + 0x000000000000018c 0 27 1 0 0 + +0x000001f4: 05 DW_LNS_set_column (16) +0x000001f6: 06 DW_LNS_negate_stmt +0x000001f7: 03 DW_LNS_advance_line (76) +0x000001fa: 2e address += 2, line += 0 + 0x000000000000018e 76 16 1 0 0 is_stmt + +0x000001fb: 05 DW_LNS_set_column (27) +0x000001fd: 06 DW_LNS_negate_stmt +0x000001fe: 82 address += 8, line += 0 + 0x0000000000000196 76 27 1 0 0 + +0x000001ff: 05 DW_LNS_set_column (35) +0x00000201: 2e address += 2, line += 0 + 0x0000000000000198 76 35 1 0 0 + +0x00000202: 05 DW_LNS_set_column (27) +0x00000204: 90 address += 9, line += 0 + 0x00000000000001a1 76 27 1 0 0 + +0x00000205: 05 DW_LNS_set_column (25) +0x00000207: 58 address += 5, line += 0 + 0x00000000000001a6 76 25 1 0 0 + +0x00000208: 05 DW_LNS_set_column (27) +0x0000020a: 06 DW_LNS_negate_stmt +0x0000020b: 3b address += 3, line += -1 + 0x00000000000001a9 75 27 1 0 0 is_stmt + +0x0000020c: 05 DW_LNS_set_column (13) +0x0000020e: 06 DW_LNS_negate_stmt +0x0000020f: 58 address += 5, line += 0 + 0x00000000000001ae 75 13 1 0 0 + +0x00000210: 05 DW_LNS_set_column (0) +0x00000212: 03 DW_LNS_advance_line (0) +0x00000215: 3c address += 3, line += 0 + 0x00000000000001b1 0 0 1 0 0 + +0x00000216: 05 DW_LNS_set_column (13) +0x00000218: 06 DW_LNS_negate_stmt +0x00000219: 03 DW_LNS_advance_line (77) +0x0000021c: 58 address += 5, line += 0 + 0x00000000000001b6 77 13 1 0 0 is_stmt + +0x0000021d: 05 DW_LNS_set_column (22) +0x0000021f: 06 DW_LNS_negate_stmt +0x00000220: 82 address += 8, line += 0 + 0x00000000000001be 77 22 1 0 0 + +0x00000221: 05 DW_LNS_set_column (16) +0x00000223: 06 DW_LNS_negate_stmt +0x00000224: 5a address += 5, line += 2 + 0x00000000000001c3 79 16 1 0 0 is_stmt + +0x00000225: 05 DW_LNS_set_column (14) +0x00000227: 06 DW_LNS_negate_stmt +0x00000228: 82 address += 8, line += 0 + 0x00000000000001cb 79 14 1 0 0 + +0x00000229: 05 DW_LNS_set_column (25) +0x0000022b: e4 address += 15, line += 0 + 0x00000000000001da 79 25 1 0 0 + +0x0000022c: 05 DW_LNS_set_column (11) +0x0000022e: 06 DW_LNS_negate_stmt +0x0000022f: 76 address += 7, line += 2 + 0x00000000000001e1 81 11 1 0 0 is_stmt + +0x00000230: 05 DW_LNS_set_column (16) +0x00000232: 03 DW_LNS_advance_line (66) +0x00000234: 58 address += 5, line += 0 + 0x00000000000001e6 66 16 1 0 0 is_stmt + +0x00000235: 05 DW_LNS_set_column (22) +0x00000237: 7c address += 7, line += 8 + 0x00000000000001ed 74 22 1 0 0 is_stmt + +0x00000238: 05 DW_LNS_set_column (4) +0x0000023a: 03 DW_LNS_advance_line (37) +0x0000023c: 90 address += 9, line += 0 + 0x00000000000001f6 37 4 1 0 0 is_stmt + +0x0000023d: 3e address += 3, line += 2 + 0x00000000000001f9 39 4 1 0 0 is_stmt + +0x0000023e: 05 DW_LNS_set_column (16) +0x00000240: 06 DW_LNS_negate_stmt +0x00000241: 2e address += 2, line += 0 + 0x00000000000001fb 39 16 1 0 0 + +0x00000242: 05 DW_LNS_set_column (4) +0x00000244: 90 address += 9, line += 0 + 0x0000000000000204 39 4 1 0 0 + +0x00000245: 05 DW_LNS_set_column (23) +0x00000247: 2e address += 2, line += 0 + 0x0000000000000206 39 23 1 0 0 + +0x00000248: 05 DW_LNS_set_column (19) +0x0000024a: 58 address += 5, line += 0 + 0x000000000000020b 39 19 1 0 0 + +0x0000024b: 05 DW_LNS_set_column (4) +0x0000024d: 06 DW_LNS_negate_stmt +0x0000024e: 59 address += 5, line += 1 + 0x0000000000000210 40 4 1 0 0 is_stmt + +0x0000024f: 05 DW_LNS_set_column (17) +0x00000251: 06 DW_LNS_negate_stmt +0x00000252: 82 address += 8, line += 0 + 0x0000000000000218 40 17 1 0 0 + +0x00000253: 03 DW_LNS_advance_line (0) +0x00000255: 74 address += 7, line += 0 + 0x000000000000021f 0 17 1 0 0 + +0x00000256: 05 DW_LNS_set_column (16) +0x00000258: 06 DW_LNS_negate_stmt +0x00000259: 03 DW_LNS_advance_line (44) +0x0000025b: 90 address += 9, line += 0 + 0x0000000000000228 44 16 1 0 0 is_stmt + +0x0000025c: 06 DW_LNS_negate_stmt +0x0000025d: 03 DW_LNS_advance_line (0) +0x0000025f: 74 address += 7, line += 0 + 0x000000000000022f 0 16 1 0 0 + +0x00000260: 05 DW_LNS_set_column (10) +0x00000262: 06 DW_LNS_negate_stmt +0x00000263: 03 DW_LNS_advance_line (45) +0x00000265: 2e address += 2, line += 0 + 0x0000000000000231 45 10 1 0 0 is_stmt + +0x00000266: 05 DW_LNS_set_column (18) +0x00000268: 06 DW_LNS_negate_stmt +0x00000269: 2e address += 2, line += 0 + 0x0000000000000233 45 18 1 0 0 + +0x0000026a: 05 DW_LNS_set_column (10) +0x0000026c: 90 address += 9, line += 0 + 0x000000000000023c 45 10 1 0 0 + +0x0000026d: 05 DW_LNS_set_column (23) +0x0000026f: 2e address += 2, line += 0 + 0x000000000000023e 45 23 1 0 0 + +0x00000270: 05 DW_LNS_set_column (16) +0x00000272: 06 DW_LNS_negate_stmt +0x00000273: 57 address += 5, line += -1 + 0x0000000000000243 44 16 1 0 0 is_stmt + +0x00000274: 06 DW_LNS_negate_stmt +0x00000275: 03 DW_LNS_advance_line (0) +0x00000277: e4 address += 15, line += 0 + 0x0000000000000252 0 16 1 0 0 + +0x00000278: 05 DW_LNS_set_column (11) +0x0000027a: 06 DW_LNS_negate_stmt +0x0000027b: 03 DW_LNS_advance_line (46) +0x0000027d: 2e address += 2, line += 0 + 0x0000000000000254 46 11 1 0 0 is_stmt + +0x0000027e: 05 DW_LNS_set_column (28) +0x00000280: 06 DW_LNS_negate_stmt +0x00000281: ba address += 12, line += 0 + 0x0000000000000260 46 28 1 0 0 + +0x00000282: 05 DW_LNS_set_column (41) +0x00000284: 58 address += 5, line += 0 + 0x0000000000000265 46 41 1 0 0 + +0x00000285: 05 DW_LNS_set_column (14) +0x00000287: 06 DW_LNS_negate_stmt +0x00000288: 5c address += 5, line += 4 + 0x000000000000026a 50 14 1 0 0 is_stmt + +0x00000289: 06 DW_LNS_negate_stmt +0x0000028a: 03 DW_LNS_advance_line (0) +0x0000028c: 74 address += 7, line += 0 + 0x0000000000000271 0 14 1 0 0 + +0x0000028d: 05 DW_LNS_set_column (38) +0x0000028f: 06 DW_LNS_negate_stmt +0x00000290: 03 DW_LNS_advance_line (52) +0x00000292: ba address += 12, line += 0 + 0x000000000000027d 52 38 1 0 0 is_stmt + +0x00000293: 05 DW_LNS_set_column (0) +0x00000295: 06 DW_LNS_negate_stmt +0x00000296: 03 DW_LNS_advance_line (0) +0x00000298: 74 address += 7, line += 0 + 0x0000000000000284 0 0 1 0 0 + +0x00000299: 05 DW_LNS_set_column (22) +0x0000029b: 06 DW_LNS_negate_stmt +0x0000029c: 03 DW_LNS_advance_line (53) +0x0000029e: c8 address += 13, line += 0 + 0x0000000000000291 53 22 1 0 0 is_stmt + +0x0000029f: 05 DW_LNS_set_column (24) +0x000002a1: e5 address += 15, line += 1 + 0x00000000000002a0 54 24 1 0 0 is_stmt + +0x000002a2: 05 DW_LNS_set_column (26) +0x000002a4: 06 DW_LNS_negate_stmt +0x000002a5: 2e address += 2, line += 0 + 0x00000000000002a2 54 26 1 0 0 + +0x000002a6: 05 DW_LNS_set_column (24) +0x000002a8: c8 address += 13, line += 0 + 0x00000000000002af 54 24 1 0 0 + +0x000002a9: 06 DW_LNS_negate_stmt +0x000002aa: 3d address += 3, line += 1 + 0x00000000000002b2 55 24 1 0 0 is_stmt + +0x000002ab: 05 DW_LNS_set_column (44) +0x000002ad: 71 address += 7, line += -3 + 0x00000000000002b9 52 44 1 0 0 is_stmt + +0x000002ae: 06 DW_LNS_negate_stmt +0x000002af: 03 DW_LNS_advance_line (0) +0x000002b1: 58 address += 5, line += 0 + 0x00000000000002be 0 44 1 0 0 + +0x000002b2: 05 DW_LNS_set_column (38) +0x000002b4: 03 DW_LNS_advance_line (52) +0x000002b6: 74 address += 7, line += 0 + 0x00000000000002c5 52 38 1 0 0 + +0x000002b7: 03 DW_LNS_advance_line (0) +0x000002b9: 58 address += 5, line += 0 + 0x00000000000002ca 0 38 1 0 0 + +0x000002ba: 05 DW_LNS_set_column (19) +0x000002bc: 06 DW_LNS_negate_stmt +0x000002bd: 03 DW_LNS_advance_line (58) +0x000002bf: 2e address += 2, line += 0 + 0x00000000000002cc 58 19 1 0 0 is_stmt + +0x000002c0: 05 DW_LNS_set_column (21) +0x000002c2: e5 address += 15, line += 1 + 0x00000000000002db 59 21 1 0 0 is_stmt + +0x000002c3: 05 DW_LNS_set_column (18) +0x000002c5: 72 address += 7, line += -2 + 0x00000000000002e2 57 18 1 0 0 is_stmt + +0x000002c6: 05 DW_LNS_set_column (0) +0x000002c8: 06 DW_LNS_negate_stmt +0x000002c9: 03 DW_LNS_advance_line (0) +0x000002cb: 74 address += 7, line += 0 + 0x00000000000002e9 0 0 1 0 0 + +0x000002cc: 05 DW_LNS_set_column (14) +0x000002ce: 06 DW_LNS_negate_stmt +0x000002cf: 03 DW_LNS_advance_line (62) +0x000002d1: 90 address += 9, line += 0 + 0x00000000000002f2 62 14 1 0 0 is_stmt + +0x000002d2: 05 DW_LNS_set_column (23) +0x000002d4: 06 DW_LNS_negate_stmt +0x000002d5: 4a address += 4, line += 0 + 0x00000000000002f6 62 23 1 0 0 + +0x000002d6: 05 DW_LNS_set_column (14) +0x000002d8: 58 address += 5, line += 0 + 0x00000000000002fb 62 14 1 0 0 + +0x000002d9: 03 DW_LNS_advance_line (0) +0x000002db: 3c address += 3, line += 0 + 0x00000000000002fe 0 14 1 0 0 + +0x000002dc: 05 DW_LNS_set_column (16) +0x000002de: 06 DW_LNS_negate_stmt +0x000002df: 03 DW_LNS_advance_line (66) +0x000002e2: 20 address += 1, line += 0 + 0x00000000000002ff 66 16 1 0 0 is_stmt + +0x000002e3: 06 DW_LNS_negate_stmt +0x000002e4: 03 DW_LNS_advance_line (0) +0x000002e7: 74 address += 7, line += 0 + 0x0000000000000306 0 16 1 0 0 + +0x000002e8: 05 DW_LNS_set_column (27) +0x000002ea: 06 DW_LNS_negate_stmt +0x000002eb: 03 DW_LNS_advance_line (75) +0x000002ee: 82 address += 8, line += 0 + 0x000000000000030e 75 27 1 0 0 is_stmt + +0x000002ef: 06 DW_LNS_negate_stmt +0x000002f0: 03 DW_LNS_advance_line (0) +0x000002f3: 74 address += 7, line += 0 + 0x0000000000000315 0 27 1 0 0 + +0x000002f4: 05 DW_LNS_set_column (16) +0x000002f6: 06 DW_LNS_negate_stmt +0x000002f7: 03 DW_LNS_advance_line (76) +0x000002fa: 2e address += 2, line += 0 + 0x0000000000000317 76 16 1 0 0 is_stmt + +0x000002fb: 05 DW_LNS_set_column (27) +0x000002fd: 06 DW_LNS_negate_stmt +0x000002fe: 82 address += 8, line += 0 + 0x000000000000031f 76 27 1 0 0 + +0x000002ff: 05 DW_LNS_set_column (35) +0x00000301: 2e address += 2, line += 0 + 0x0000000000000321 76 35 1 0 0 + +0x00000302: 05 DW_LNS_set_column (27) +0x00000304: 90 address += 9, line += 0 + 0x000000000000032a 76 27 1 0 0 + +0x00000305: 05 DW_LNS_set_column (25) +0x00000307: 58 address += 5, line += 0 + 0x000000000000032f 76 25 1 0 0 + +0x00000308: 05 DW_LNS_set_column (27) +0x0000030a: 06 DW_LNS_negate_stmt +0x0000030b: 3b address += 3, line += -1 + 0x0000000000000332 75 27 1 0 0 is_stmt + +0x0000030c: 06 DW_LNS_negate_stmt +0x0000030d: 03 DW_LNS_advance_line (0) +0x00000310: 74 address += 7, line += 0 + 0x0000000000000339 0 27 1 0 0 + +0x00000311: 05 DW_LNS_set_column (13) +0x00000313: 06 DW_LNS_negate_stmt +0x00000314: 03 DW_LNS_advance_line (77) +0x00000317: 66 address += 6, line += 0 + 0x000000000000033f 77 13 1 0 0 is_stmt + +0x00000318: 05 DW_LNS_set_column (22) +0x0000031a: 06 DW_LNS_negate_stmt +0x0000031b: 82 address += 8, line += 0 + 0x0000000000000347 77 22 1 0 0 + +0x0000031c: 05 DW_LNS_set_column (16) +0x0000031e: 06 DW_LNS_negate_stmt +0x0000031f: 5a address += 5, line += 2 + 0x000000000000034c 79 16 1 0 0 is_stmt + +0x00000320: 05 DW_LNS_set_column (14) +0x00000322: 06 DW_LNS_negate_stmt +0x00000323: 82 address += 8, line += 0 + 0x0000000000000354 79 14 1 0 0 + +0x00000324: 05 DW_LNS_set_column (25) +0x00000326: e4 address += 15, line += 0 + 0x0000000000000363 79 25 1 0 0 + +0x00000327: 05 DW_LNS_set_column (11) +0x00000329: 06 DW_LNS_negate_stmt +0x0000032a: 76 address += 7, line += 2 + 0x000000000000036a 81 11 1 0 0 is_stmt + +0x0000032b: 05 DW_LNS_set_column (16) +0x0000032d: 03 DW_LNS_advance_line (66) +0x0000032f: 58 address += 5, line += 0 + 0x000000000000036f 66 16 1 0 0 is_stmt + +0x00000330: 05 DW_LNS_set_column (22) +0x00000332: 7c address += 7, line += 8 + 0x0000000000000376 74 22 1 0 0 is_stmt + +0x00000333: 06 DW_LNS_negate_stmt +0x00000334: 03 DW_LNS_advance_line (0) +0x00000337: 90 address += 9, line += 0 + 0x000000000000037f 0 22 1 0 0 + +0x00000338: 05 DW_LNS_set_column (13) +0x0000033a: 06 DW_LNS_negate_stmt +0x0000033b: 03 DW_LNS_advance_line (67) +0x0000033e: 3c address += 3, line += 0 + 0x0000000000000382 67 13 1 0 0 is_stmt + +0x0000033f: 83 address += 8, line += 1 + 0x000000000000038a 68 13 1 0 0 is_stmt + +0x00000340: 83 address += 8, line += 1 + 0x0000000000000392 69 13 1 0 0 is_stmt + +0x00000341: 83 address += 8, line += 1 + 0x000000000000039a 70 13 1 0 0 is_stmt + +0x00000342: 02 DW_LNS_advance_pc (3) +0x00000344: 00 DW_LNE_end_sequence + 0x000000000000039d 70 13 1 0 0 is_stmt end_sequence + +0x00000347: 00 DW_LNE_set_address (0x000000000000039f) +0x0000034e: 03 DW_LNS_advance_line (152) +0x00000351: 01 DW_LNS_copy + 0x000000000000039f 152 0 1 0 0 is_stmt + + +0x00000352: 05 DW_LNS_set_column (17) +0x00000354: 0a DW_LNS_set_prologue_end +0x00000355: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000356: 91 address += 9, line += 1 + 0x00000000000003b9 153 17 1 0 0 is_stmt prologue_end + +0x00000357: 05 DW_LNS_set_column (12) +0x00000359: 06 DW_LNS_negate_stmt +0x0000035a: 58 address += 5, line += 0 + 0x00000000000003be 153 12 1 0 0 + +0x0000035b: 03 DW_LNS_advance_line (0) +0x0000035e: 2e address += 2, line += 0 + 0x00000000000003c0 0 12 1 0 0 + +0x0000035f: 05 DW_LNS_set_column (28) +0x00000361: 03 DW_LNS_advance_line (153) +0x00000364: 4a address += 4, line += 0 + 0x00000000000003c4 153 28 1 0 0 + +0x00000365: 05 DW_LNS_set_column (23) +0x00000367: 58 address += 5, line += 0 + 0x00000000000003c9 153 23 1 0 0 + +0x00000368: 03 DW_LNS_advance_line (0) +0x0000036b: 66 address += 6, line += 0 + 0x00000000000003cf 0 23 1 0 0 + +0x0000036c: 05 DW_LNS_set_column (10) +0x0000036e: 06 DW_LNS_negate_stmt +0x0000036f: 03 DW_LNS_advance_line (155) +0x00000372: 4a address += 4, line += 0 + 0x00000000000003d3 155 10 1 0 0 is_stmt + +0x00000373: 05 DW_LNS_set_column (8) +0x00000375: 06 DW_LNS_negate_stmt +0x00000376: 20 address += 1, line += 0 + 0x00000000000003d4 155 8 1 0 0 + +0x00000377: 03 DW_LNS_advance_line (0) +0x0000037a: 2e address += 2, line += 0 + 0x00000000000003d6 0 8 1 0 0 + +0x0000037b: 05 DW_LNS_set_column (7) +0x0000037d: 06 DW_LNS_negate_stmt +0x0000037e: 03 DW_LNS_advance_line (156) +0x00000381: 20 address += 1, line += 0 + 0x00000000000003d7 156 7 1 0 0 is_stmt + +0x00000382: 06 DW_LNS_negate_stmt +0x00000383: 03 DW_LNS_advance_line (0) +0x00000386: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000387: 2e address += 2, line += 0 + 0x00000000000003ea 0 7 1 0 0 + +0x00000388: 05 DW_LNS_set_column (18) +0x0000038a: 06 DW_LNS_negate_stmt +0x0000038b: 03 DW_LNS_advance_line (94) +0x0000038e: 3c address += 3, line += 0 + 0x00000000000003ed 94 18 1 0 0 is_stmt + +0x0000038f: 05 DW_LNS_set_column (4) +0x00000391: 06 DW_LNS_negate_stmt +0x00000392: 58 address += 5, line += 0 + 0x00000000000003f2 94 4 1 0 0 + +0x00000393: 03 DW_LNS_advance_line (0) +0x00000396: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000397: 12 address += 0, line += 0 + 0x0000000000000403 0 4 1 0 0 + +0x00000398: 05 DW_LNS_set_column (29) +0x0000039a: 06 DW_LNS_negate_stmt +0x0000039b: 03 DW_LNS_advance_line (95) +0x0000039e: 4a address += 4, line += 0 + 0x0000000000000407 95 29 1 0 0 is_stmt + +0x0000039f: 05 DW_LNS_set_column (19) +0x000003a1: 69 address += 6, line += 3 + 0x000000000000040d 98 19 1 0 0 is_stmt + +0x000003a2: 05 DW_LNS_set_column (16) +0x000003a4: 73 address += 7, line += -1 + 0x0000000000000414 97 16 1 0 0 is_stmt + +0x000003a5: 73 address += 7, line += -1 + 0x000000000000041b 96 16 1 0 0 is_stmt + +0x000003a6: 06 DW_LNS_negate_stmt +0x000003a7: 03 DW_LNS_advance_line (0) +0x000003aa: 74 address += 7, line += 0 + 0x0000000000000422 0 16 1 0 0 + +0x000003ab: 05 DW_LNS_set_column (28) +0x000003ad: 06 DW_LNS_negate_stmt +0x000003ae: 03 DW_LNS_advance_line (94) +0x000003b1: 4a address += 4, line += 0 + 0x0000000000000426 94 28 1 0 0 is_stmt + +0x000003b2: 05 DW_LNS_set_column (18) +0x000003b4: 06 DW_LNS_negate_stmt +0x000003b5: 58 address += 5, line += 0 + 0x000000000000042b 94 18 1 0 0 + +0x000003b6: 05 DW_LNS_set_column (4) +0x000003b8: 58 address += 5, line += 0 + 0x0000000000000430 94 4 1 0 0 + +0x000003b9: 03 DW_LNS_advance_line (0) +0x000003bc: 4a address += 4, line += 0 + 0x0000000000000434 0 4 1 0 0 + +0x000003bd: 05 DW_LNS_set_column (27) +0x000003bf: 06 DW_LNS_negate_stmt +0x000003c0: 03 DW_LNS_advance_line (102) +0x000003c3: 4a address += 4, line += 0 + 0x0000000000000438 102 27 1 0 0 is_stmt + +0x000003c4: 05 DW_LNS_set_column (18) +0x000003c6: 06 DW_LNS_negate_stmt +0x000003c7: 58 address += 5, line += 0 + 0x000000000000043d 102 18 1 0 0 + +0x000003c8: 06 DW_LNS_negate_stmt +0x000003c9: 9f address += 10, line += 1 + 0x0000000000000447 103 18 1 0 0 is_stmt + +0x000003ca: 06 DW_LNS_negate_stmt +0x000003cb: 03 DW_LNS_advance_line (0) +0x000003ce: 9e address += 10, line += 0 + 0x0000000000000451 0 18 1 0 0 + +0x000003cf: 06 DW_LNS_negate_stmt +0x000003d0: 03 DW_LNS_advance_line (105) +0x000003d3: 82 address += 8, line += 0 + 0x0000000000000459 105 18 1 0 0 is_stmt + +0x000003d4: 05 DW_LNS_set_column (4) +0x000003d6: 06 DW_LNS_negate_stmt +0x000003d7: 58 address += 5, line += 0 + 0x000000000000045e 105 4 1 0 0 + +0x000003d8: 03 DW_LNS_advance_line (0) +0x000003db: 2e address += 2, line += 0 + 0x0000000000000460 0 4 1 0 0 + +0x000003dc: 05 DW_LNS_set_column (7) +0x000003de: 06 DW_LNS_negate_stmt +0x000003df: 03 DW_LNS_advance_line (106) +0x000003e2: 2e address += 2, line += 0 + 0x0000000000000462 106 7 1 0 0 is_stmt + +0x000003e3: 05 DW_LNS_set_column (16) +0x000003e5: 06 DW_LNS_negate_stmt +0x000003e6: 82 address += 8, line += 0 + 0x000000000000046a 106 16 1 0 0 + +0x000003e7: 05 DW_LNS_set_column (24) +0x000003e9: 06 DW_LNS_negate_stmt +0x000003ea: 57 address += 5, line += -1 + 0x000000000000046f 105 24 1 0 0 is_stmt + +0x000003eb: 05 DW_LNS_set_column (18) +0x000003ed: 06 DW_LNS_negate_stmt +0x000003ee: 58 address += 5, line += 0 + 0x0000000000000474 105 18 1 0 0 + +0x000003ef: 03 DW_LNS_advance_line (0) +0x000003f2: 74 address += 7, line += 0 + 0x000000000000047b 0 18 1 0 0 + +0x000003f3: 05 DW_LNS_set_column (13) +0x000003f5: 06 DW_LNS_negate_stmt +0x000003f6: 03 DW_LNS_advance_line (112) +0x000003f9: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000003fa: d6 address += 14, line += 0 + 0x000000000000049a 112 13 1 0 0 is_stmt + +0x000003fb: 05 DW_LNS_set_column (26) +0x000003fd: 06 DW_LNS_negate_stmt +0x000003fe: 2e address += 2, line += 0 + 0x000000000000049c 112 26 1 0 0 + +0x000003ff: 05 DW_LNS_set_column (35) +0x00000401: c8 address += 13, line += 0 + 0x00000000000004a9 112 35 1 0 0 + +0x00000402: 05 DW_LNS_set_column (13) +0x00000404: 20 address += 1, line += 0 + 0x00000000000004aa 112 13 1 0 0 + +0x00000405: 05 DW_LNS_set_column (30) +0x00000407: 06 DW_LNS_negate_stmt +0x00000408: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000409: 49 address += 4, line += -1 + 0x00000000000004bf 111 30 1 0 0 is_stmt + +0x0000040a: 05 DW_LNS_set_column (24) +0x0000040c: 06 DW_LNS_negate_stmt +0x0000040d: 58 address += 5, line += 0 + 0x00000000000004c4 111 24 1 0 0 + +0x0000040e: 05 DW_LNS_set_column (10) +0x00000410: 58 address += 5, line += 0 + 0x00000000000004c9 111 10 1 0 0 + +0x00000411: 06 DW_LNS_negate_stmt +0x00000412: 5a address += 5, line += 2 + 0x00000000000004ce 113 10 1 0 0 is_stmt + +0x00000413: 06 DW_LNS_negate_stmt +0x00000414: 03 DW_LNS_advance_line (0) +0x00000417: 74 address += 7, line += 0 + 0x00000000000004d5 0 10 1 0 0 + +0x00000418: 05 DW_LNS_set_column (16) +0x0000041a: 06 DW_LNS_negate_stmt +0x0000041b: 03 DW_LNS_advance_line (118) +0x0000041e: 2e address += 2, line += 0 + 0x00000000000004d7 118 16 1 0 0 is_stmt + +0x0000041f: 05 DW_LNS_set_column (7) +0x00000421: 06 DW_LNS_negate_stmt +0x00000422: 58 address += 5, line += 0 + 0x00000000000004dc 118 7 1 0 0 + +0x00000423: 03 DW_LNS_advance_line (0) +0x00000426: 2e address += 2, line += 0 + 0x00000000000004de 0 7 1 0 0 + +0x00000427: 05 DW_LNS_set_column (10) +0x00000429: 06 DW_LNS_negate_stmt +0x0000042a: 03 DW_LNS_advance_line (119) +0x0000042d: 2e address += 2, line += 0 + 0x00000000000004e0 119 10 1 0 0 is_stmt + +0x0000042e: 05 DW_LNS_set_column (18) +0x00000430: 06 DW_LNS_negate_stmt +0x00000431: 2e address += 2, line += 0 + 0x00000000000004e2 119 18 1 0 0 + +0x00000432: 05 DW_LNS_set_column (10) +0x00000434: 90 address += 9, line += 0 + 0x00000000000004eb 119 10 1 0 0 + +0x00000435: 05 DW_LNS_set_column (23) +0x00000437: 2e address += 2, line += 0 + 0x00000000000004ed 119 23 1 0 0 + +0x00000438: 05 DW_LNS_set_column (16) +0x0000043a: 06 DW_LNS_negate_stmt +0x0000043b: 57 address += 5, line += -1 + 0x00000000000004f2 118 16 1 0 0 is_stmt + +0x0000043c: 05 DW_LNS_set_column (7) +0x0000043e: 06 DW_LNS_negate_stmt +0x0000043f: ac address += 11, line += 0 + 0x00000000000004fd 118 7 1 0 0 + +0x00000440: 05 DW_LNS_set_column (16) +0x00000442: 06 DW_LNS_negate_stmt +0x00000443: 6a address += 6, line += 4 + 0x0000000000000503 122 16 1 0 0 is_stmt + +0x00000444: 06 DW_LNS_negate_stmt +0x00000445: 03 DW_LNS_advance_line (0) +0x00000448: 74 address += 7, line += 0 + 0x000000000000050a 0 16 1 0 0 + +0x00000449: 05 DW_LNS_set_column (22) +0x0000044b: 06 DW_LNS_negate_stmt +0x0000044c: 03 DW_LNS_advance_line (125) +0x0000044f: c8 address += 13, line += 0 + 0x0000000000000517 125 22 1 0 0 is_stmt + +0x00000450: 06 DW_LNS_negate_stmt +0x00000451: 03 DW_LNS_advance_line (0) +0x00000454: 74 address += 7, line += 0 + 0x000000000000051e 0 22 1 0 0 + +0x00000455: 05 DW_LNS_set_column (27) +0x00000457: 06 DW_LNS_negate_stmt +0x00000458: 03 DW_LNS_advance_line (126) +0x0000045b: 2e address += 2, line += 0 + 0x0000000000000520 126 27 1 0 0 is_stmt + +0x0000045c: 05 DW_LNS_set_column (13) +0x0000045e: 06 DW_LNS_negate_stmt +0x0000045f: 58 address += 5, line += 0 + 0x0000000000000525 126 13 1 0 0 + +0x00000460: 03 DW_LNS_advance_line (0) +0x00000463: 2e address += 2, line += 0 + 0x0000000000000527 0 13 1 0 0 + +0x00000464: 05 DW_LNS_set_column (16) +0x00000466: 06 DW_LNS_negate_stmt +0x00000467: 03 DW_LNS_advance_line (127) +0x0000046a: 2e address += 2, line += 0 + 0x0000000000000529 127 16 1 0 0 is_stmt + +0x0000046b: 05 DW_LNS_set_column (27) +0x0000046d: 06 DW_LNS_negate_stmt +0x0000046e: 82 address += 8, line += 0 + 0x0000000000000531 127 27 1 0 0 + +0x0000046f: 05 DW_LNS_set_column (35) +0x00000471: 2e address += 2, line += 0 + 0x0000000000000533 127 35 1 0 0 + +0x00000472: 05 DW_LNS_set_column (27) +0x00000474: 90 address += 9, line += 0 + 0x000000000000053c 127 27 1 0 0 + +0x00000475: 05 DW_LNS_set_column (25) +0x00000477: 58 address += 5, line += 0 + 0x0000000000000541 127 25 1 0 0 + +0x00000478: 05 DW_LNS_set_column (27) +0x0000047a: 06 DW_LNS_negate_stmt +0x0000047b: 3b address += 3, line += -1 + 0x0000000000000544 126 27 1 0 0 is_stmt + +0x0000047c: 05 DW_LNS_set_column (13) +0x0000047e: 06 DW_LNS_negate_stmt +0x0000047f: 58 address += 5, line += 0 + 0x0000000000000549 126 13 1 0 0 + +0x00000480: 05 DW_LNS_set_column (0) +0x00000482: 03 DW_LNS_advance_line (0) +0x00000485: 3c address += 3, line += 0 + 0x000000000000054c 0 0 1 0 0 + +0x00000486: 05 DW_LNS_set_column (13) +0x00000488: 06 DW_LNS_negate_stmt +0x00000489: 03 DW_LNS_advance_line (128) +0x0000048c: 58 address += 5, line += 0 + 0x0000000000000551 128 13 1 0 0 is_stmt + +0x0000048d: 05 DW_LNS_set_column (22) +0x0000048f: 06 DW_LNS_negate_stmt +0x00000490: 82 address += 8, line += 0 + 0x0000000000000559 128 22 1 0 0 + +0x00000491: 05 DW_LNS_set_column (16) +0x00000493: 06 DW_LNS_negate_stmt +0x00000494: 5a address += 5, line += 2 + 0x000000000000055e 130 16 1 0 0 is_stmt + +0x00000495: 05 DW_LNS_set_column (14) +0x00000497: 06 DW_LNS_negate_stmt +0x00000498: 82 address += 8, line += 0 + 0x0000000000000566 130 14 1 0 0 + +0x00000499: 05 DW_LNS_set_column (25) +0x0000049b: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x0000049c: 12 address += 0, line += 0 + 0x0000000000000577 130 25 1 0 0 + +0x0000049d: 05 DW_LNS_set_column (14) +0x0000049f: 58 address += 5, line += 0 + 0x000000000000057c 130 14 1 0 0 + +0x000004a0: 05 DW_LNS_set_column (11) +0x000004a2: 06 DW_LNS_negate_stmt +0x000004a3: 31 address += 2, line += 3 + 0x000000000000057e 133 11 1 0 0 is_stmt + +0x000004a4: 05 DW_LNS_set_column (16) +0x000004a6: 03 DW_LNS_advance_line (122) +0x000004a8: 58 address += 5, line += 0 + 0x0000000000000583 122 16 1 0 0 is_stmt + +0x000004a9: 05 DW_LNS_set_column (14) +0x000004ab: 06 DW_LNS_negate_stmt +0x000004ac: 58 address += 5, line += 0 + 0x0000000000000588 122 14 1 0 0 + +0x000004ad: 03 DW_LNS_advance_line (0) +0x000004b0: 4a address += 4, line += 0 + 0x000000000000058c 0 14 1 0 0 + +0x000004b1: 06 DW_LNS_negate_stmt +0x000004b2: 03 DW_LNS_advance_line (130) +0x000004b5: 20 address += 1, line += 0 + 0x000000000000058d 130 14 1 0 0 is_stmt + +0x000004b6: 05 DW_LNS_set_column (11) +0x000004b8: 03 DW_LNS_advance_line (110) +0x000004ba: 20 address += 1, line += 0 + 0x000000000000058e 110 11 1 0 0 is_stmt + +0x000004bb: 06 DW_LNS_negate_stmt +0x000004bc: 03 DW_LNS_advance_line (0) +0x000004bf: 74 address += 7, line += 0 + 0x0000000000000595 0 11 1 0 0 + +0x000004c0: 05 DW_LNS_set_column (10) +0x000004c2: 06 DW_LNS_negate_stmt +0x000004c3: 03 DW_LNS_advance_line (113) +0x000004c6: 66 address += 6, line += 0 + 0x000000000000059b 113 10 1 0 0 is_stmt + +0x000004c7: 06 DW_LNS_negate_stmt +0x000004c8: 03 DW_LNS_advance_line (0) +0x000004cb: 74 address += 7, line += 0 + 0x00000000000005a2 0 10 1 0 0 + +0x000004cc: 05 DW_LNS_set_column (16) +0x000004ce: 06 DW_LNS_negate_stmt +0x000004cf: 03 DW_LNS_advance_line (118) +0x000004d2: 2e address += 2, line += 0 + 0x00000000000005a4 118 16 1 0 0 is_stmt + +0x000004d3: 05 DW_LNS_set_column (7) +0x000004d5: 06 DW_LNS_negate_stmt +0x000004d6: 58 address += 5, line += 0 + 0x00000000000005a9 118 7 1 0 0 + +0x000004d7: 03 DW_LNS_advance_line (0) +0x000004da: 2e address += 2, line += 0 + 0x00000000000005ab 0 7 1 0 0 + +0x000004db: 05 DW_LNS_set_column (10) +0x000004dd: 06 DW_LNS_negate_stmt +0x000004de: 03 DW_LNS_advance_line (119) +0x000004e1: 2e address += 2, line += 0 + 0x00000000000005ad 119 10 1 0 0 is_stmt + +0x000004e2: 05 DW_LNS_set_column (18) +0x000004e4: 06 DW_LNS_negate_stmt +0x000004e5: 2e address += 2, line += 0 + 0x00000000000005af 119 18 1 0 0 + +0x000004e6: 05 DW_LNS_set_column (10) +0x000004e8: 90 address += 9, line += 0 + 0x00000000000005b8 119 10 1 0 0 + +0x000004e9: 05 DW_LNS_set_column (23) +0x000004eb: 2e address += 2, line += 0 + 0x00000000000005ba 119 23 1 0 0 + +0x000004ec: 05 DW_LNS_set_column (16) +0x000004ee: 06 DW_LNS_negate_stmt +0x000004ef: 57 address += 5, line += -1 + 0x00000000000005bf 118 16 1 0 0 is_stmt + +0x000004f0: 05 DW_LNS_set_column (0) +0x000004f2: 06 DW_LNS_negate_stmt +0x000004f3: 03 DW_LNS_advance_line (0) +0x000004f6: 74 address += 7, line += 0 + 0x00000000000005c6 0 0 1 0 0 + +0x000004f7: 05 DW_LNS_set_column (7) +0x000004f9: 03 DW_LNS_advance_line (118) +0x000004fc: 4a address += 4, line += 0 + 0x00000000000005ca 118 7 1 0 0 + +0x000004fd: 05 DW_LNS_set_column (16) +0x000004ff: 06 DW_LNS_negate_stmt +0x00000500: 6a address += 6, line += 4 + 0x00000000000005d0 122 16 1 0 0 is_stmt + +0x00000501: 05 DW_LNS_set_column (14) +0x00000503: 06 DW_LNS_negate_stmt +0x00000504: 58 address += 5, line += 0 + 0x00000000000005d5 122 14 1 0 0 + +0x00000505: 03 DW_LNS_advance_line (0) +0x00000508: 2e address += 2, line += 0 + 0x00000000000005d7 0 14 1 0 0 + +0x00000509: 05 DW_LNS_set_column (22) +0x0000050b: 06 DW_LNS_negate_stmt +0x0000050c: 03 DW_LNS_advance_line (125) +0x0000050f: 74 address += 7, line += 0 + 0x00000000000005de 125 22 1 0 0 is_stmt + +0x00000510: 06 DW_LNS_negate_stmt +0x00000511: 03 DW_LNS_advance_line (0) +0x00000514: 90 address += 9, line += 0 + 0x00000000000005e7 0 22 1 0 0 + +0x00000515: 05 DW_LNS_set_column (27) +0x00000517: 06 DW_LNS_negate_stmt +0x00000518: 03 DW_LNS_advance_line (126) +0x0000051b: 66 address += 6, line += 0 + 0x00000000000005ed 126 27 1 0 0 is_stmt + +0x0000051c: 05 DW_LNS_set_column (13) +0x0000051e: 06 DW_LNS_negate_stmt +0x0000051f: 58 address += 5, line += 0 + 0x00000000000005f2 126 13 1 0 0 + +0x00000520: 03 DW_LNS_advance_line (0) +0x00000523: 2e address += 2, line += 0 + 0x00000000000005f4 0 13 1 0 0 + +0x00000524: 05 DW_LNS_set_column (16) +0x00000526: 06 DW_LNS_negate_stmt +0x00000527: 03 DW_LNS_advance_line (127) +0x0000052a: 2e address += 2, line += 0 + 0x00000000000005f6 127 16 1 0 0 is_stmt + +0x0000052b: 05 DW_LNS_set_column (27) +0x0000052d: 06 DW_LNS_negate_stmt +0x0000052e: 82 address += 8, line += 0 + 0x00000000000005fe 127 27 1 0 0 + +0x0000052f: 05 DW_LNS_set_column (35) +0x00000531: 2e address += 2, line += 0 + 0x0000000000000600 127 35 1 0 0 + +0x00000532: 05 DW_LNS_set_column (27) +0x00000534: 90 address += 9, line += 0 + 0x0000000000000609 127 27 1 0 0 + +0x00000535: 05 DW_LNS_set_column (25) +0x00000537: 58 address += 5, line += 0 + 0x000000000000060e 127 25 1 0 0 + +0x00000538: 05 DW_LNS_set_column (27) +0x0000053a: 06 DW_LNS_negate_stmt +0x0000053b: 3b address += 3, line += -1 + 0x0000000000000611 126 27 1 0 0 is_stmt + +0x0000053c: 05 DW_LNS_set_column (13) +0x0000053e: 06 DW_LNS_negate_stmt +0x0000053f: 58 address += 5, line += 0 + 0x0000000000000616 126 13 1 0 0 + +0x00000540: 05 DW_LNS_set_column (0) +0x00000542: 03 DW_LNS_advance_line (0) +0x00000545: 3c address += 3, line += 0 + 0x0000000000000619 0 0 1 0 0 + +0x00000546: 05 DW_LNS_set_column (13) +0x00000548: 06 DW_LNS_negate_stmt +0x00000549: 03 DW_LNS_advance_line (128) +0x0000054c: 58 address += 5, line += 0 + 0x000000000000061e 128 13 1 0 0 is_stmt + +0x0000054d: 05 DW_LNS_set_column (22) +0x0000054f: 06 DW_LNS_negate_stmt +0x00000550: 82 address += 8, line += 0 + 0x0000000000000626 128 22 1 0 0 + +0x00000551: 05 DW_LNS_set_column (16) +0x00000553: 06 DW_LNS_negate_stmt +0x00000554: 5a address += 5, line += 2 + 0x000000000000062b 130 16 1 0 0 is_stmt + +0x00000555: 05 DW_LNS_set_column (14) +0x00000557: 06 DW_LNS_negate_stmt +0x00000558: 82 address += 8, line += 0 + 0x0000000000000633 130 14 1 0 0 + +0x00000559: 05 DW_LNS_set_column (25) +0x0000055b: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x0000055c: 12 address += 0, line += 0 + 0x0000000000000644 130 25 1 0 0 + +0x0000055d: 05 DW_LNS_set_column (14) +0x0000055f: 58 address += 5, line += 0 + 0x0000000000000649 130 14 1 0 0 + +0x00000560: 05 DW_LNS_set_column (11) +0x00000562: 06 DW_LNS_negate_stmt +0x00000563: 31 address += 2, line += 3 + 0x000000000000064b 133 11 1 0 0 is_stmt + +0x00000564: 05 DW_LNS_set_column (16) +0x00000566: 03 DW_LNS_advance_line (122) +0x00000568: 58 address += 5, line += 0 + 0x0000000000000650 122 16 1 0 0 is_stmt + +0x00000569: 05 DW_LNS_set_column (14) +0x0000056b: 06 DW_LNS_negate_stmt +0x0000056c: 58 address += 5, line += 0 + 0x0000000000000655 122 14 1 0 0 + +0x0000056d: 03 DW_LNS_advance_line (0) +0x00000570: 4a address += 4, line += 0 + 0x0000000000000659 0 14 1 0 0 + +0x00000571: 06 DW_LNS_negate_stmt +0x00000572: 03 DW_LNS_advance_line (130) +0x00000575: 20 address += 1, line += 0 + 0x000000000000065a 130 14 1 0 0 is_stmt + +0x00000576: 05 DW_LNS_set_column (11) +0x00000578: 03 DW_LNS_advance_line (110) +0x0000057a: 20 address += 1, line += 0 + 0x000000000000065b 110 11 1 0 0 is_stmt + +0x0000057b: 05 DW_LNS_set_column (4) +0x0000057d: 03 DW_LNS_advance_line (138) +0x0000057f: 66 address += 6, line += 0 + 0x0000000000000661 138 4 1 0 0 is_stmt + +0x00000580: 83 address += 8, line += 1 + 0x0000000000000669 139 4 1 0 0 is_stmt + +0x00000581: 06 DW_LNS_negate_stmt +0x00000582: 03 DW_LNS_advance_line (0) +0x00000585: 82 address += 8, line += 0 + 0x0000000000000671 0 4 1 0 0 + +0x00000586: 06 DW_LNS_negate_stmt +0x00000587: 03 DW_LNS_advance_line (141) +0x0000058a: 82 address += 8, line += 0 + 0x0000000000000679 141 4 1 0 0 is_stmt + +0x0000058b: 06 DW_LNS_negate_stmt +0x0000058c: 03 DW_LNS_advance_line (0) +0x0000058f: 74 address += 7, line += 0 + 0x0000000000000680 0 4 1 0 0 + +0x00000590: 05 DW_LNS_set_column (20) +0x00000592: 06 DW_LNS_negate_stmt +0x00000593: 03 DW_LNS_advance_line (142) +0x00000596: 4a address += 4, line += 0 + 0x0000000000000684 142 20 1 0 0 is_stmt + +0x00000597: be address += 12, line += 4 + 0x0000000000000690 146 20 1 0 0 is_stmt + +0x00000598: 05 DW_LNS_set_column (7) +0x0000059a: 75 address += 7, line += 1 + 0x0000000000000697 147 7 1 0 0 is_stmt + +0x0000059b: 05 DW_LNS_set_column (11) +0x0000059d: 7e address += 8, line += -4 + 0x000000000000069f 143 11 1 0 0 is_stmt + +0x0000059e: 05 DW_LNS_set_column (20) +0x000005a0: 06 DW_LNS_negate_stmt +0x000005a1: 4a address += 4, line += 0 + 0x00000000000006a3 143 20 1 0 0 + +0x000005a2: 05 DW_LNS_set_column (11) +0x000005a4: 58 address += 5, line += 0 + 0x00000000000006a8 143 11 1 0 0 + +0x000005a5: 03 DW_LNS_advance_line (0) +0x000005a8: 3c address += 3, line += 0 + 0x00000000000006ab 0 11 1 0 0 + +0x000005a9: 05 DW_LNS_set_column (4) +0x000005ab: 06 DW_LNS_negate_stmt +0x000005ac: 03 DW_LNS_advance_line (141) +0x000005af: 4a address += 4, line += 0 + 0x00000000000006af 141 4 1 0 0 is_stmt + +0x000005b0: 03 DW_LNS_advance_line (159) +0x000005b2: 66 address += 6, line += 0 + 0x00000000000006b5 159 4 1 0 0 is_stmt + +0x000005b3: 06 DW_LNS_negate_stmt +0x000005b4: 03 DW_LNS_advance_line (0) +0x000005b7: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000005b8: ba address += 12, line += 0 + 0x00000000000006d2 0 4 1 0 0 + +0x000005b9: 05 DW_LNS_set_column (1) +0x000005bb: 06 DW_LNS_negate_stmt +0x000005bc: 03 DW_LNS_advance_line (161) +0x000005bf: 20 address += 1, line += 0 + 0x00000000000006d3 161 1 1 0 0 is_stmt + +0x000005c0: 02 DW_LNS_advance_pc (14) +0x000005c2: 00 DW_LNE_end_sequence + 0x00000000000006e1 161 1 1 0 0 is_stmt end_sequence + + +.debug_str contents: +0x00000000: "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)" +0x00000069: "/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp" +0x000000a9: "/usr/local/google/home/azakai/Dev/2-binaryen" +0x000000d6: "i" +0x000000d8: "int" +0x000000dc: "n" +0x000000de: "next" +0x000000e3: "worker_args" +0x000000ef: "std" +0x000000f3: "decltype(nullptr)" +0x00000105: "nullptr_t" +0x0000010f: "free" +0x00000114: "_ZL8fannkuchi" +0x00000122: "fannkuch" +0x0000012b: "showmax" +0x00000133: "args" +0x00000138: "targs" +0x0000013e: "perm1" +0x00000144: "count" +0x0000014a: "r" +0x0000014c: "maxflips" +0x00000155: "flips" +0x0000015b: "cleanup" +0x00000163: "p0" +0x00000166: "_Z15fannkuch_workerPv" +0x0000017c: "fannkuch_worker" +0x0000018c: "main" +0x00000191: "_arg" +0x00000196: "perm" +0x0000019b: "k" +0x0000019d: "j" +0x0000019f: "tmp" +0x000001a3: "argc" +0x000001a8: "argv" +0x000001ad: "char" + +.debug_ranges contents: +00000000 00000185 000001c3 +00000000 000001ed 000001f6 +00000000 0000030e 0000034c +00000000 00000376 0000037f +00000000 +00000028 00000517 0000055e +00000028 000005de 0000062b +00000028 +00000040 00000006 0000039d +00000040 0000039f 000006e1 +00000040 +DWARF debug info +================ + +Contains section .debug_info (851 bytes) +Contains section .debug_loc (1073 bytes) +Contains section .debug_ranges (88 bytes) +Contains section .debug_abbrev (333 bytes) +Contains section .debug_line (2826 bytes) +Contains section .debug_str (434 bytes) + +.debug_abbrev contents: +Abbrev table for offset: 0x00000000 +[1] DW_TAG_compile_unit DW_CHILDREN_yes + DW_AT_producer DW_FORM_strp + DW_AT_language DW_FORM_data2 + DW_AT_name DW_FORM_strp + DW_AT_stmt_list DW_FORM_sec_offset + DW_AT_comp_dir DW_FORM_strp + DW_AT_low_pc DW_FORM_addr + DW_AT_ranges DW_FORM_sec_offset + +[2] DW_TAG_pointer_type DW_CHILDREN_no + DW_AT_type DW_FORM_ref4 + +[3] DW_TAG_structure_type DW_CHILDREN_yes + DW_AT_calling_convention DW_FORM_data1 + DW_AT_name DW_FORM_strp + DW_AT_byte_size DW_FORM_data1 + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + +[4] DW_TAG_member DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_type DW_FORM_ref4 + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_data_member_location DW_FORM_data1 + +[5] DW_TAG_base_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_encoding DW_FORM_data1 + DW_AT_byte_size DW_FORM_data1 + +[6] DW_TAG_namespace DW_CHILDREN_yes + DW_AT_name DW_FORM_strp + +[7] DW_TAG_typedef DW_CHILDREN_no + DW_AT_type DW_FORM_ref4 + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + +[8] DW_TAG_unspecified_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + +[9] DW_TAG_imported_declaration DW_CHILDREN_no + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_import DW_FORM_ref4 + +[10] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_GNU_all_call_sites DW_FORM_flag_present + DW_AT_linkage_name DW_FORM_strp + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[11] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[12] DW_TAG_variable DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[13] DW_TAG_variable DW_CHILDREN_no + DW_AT_location DW_FORM_sec_offset + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[14] DW_TAG_lexical_block DW_CHILDREN_yes + DW_AT_ranges DW_FORM_sec_offset + +[15] DW_TAG_GNU_call_site DW_CHILDREN_no + DW_AT_low_pc DW_FORM_addr + +[16] DW_TAG_GNU_call_site DW_CHILDREN_no + DW_AT_abstract_origin DW_FORM_ref4 + DW_AT_low_pc DW_FORM_addr + +[17] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_declaration DW_FORM_flag_present + DW_AT_external DW_FORM_flag_present + +[18] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_type DW_FORM_ref4 + +[19] DW_TAG_pointer_type DW_CHILDREN_no + +[20] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_linkage_name DW_FORM_strp + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_inline DW_FORM_data1 + +[21] DW_TAG_label DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + +[22] DW_TAG_lexical_block DW_CHILDREN_yes + +[23] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_GNU_all_call_sites DW_FORM_flag_present + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[24] DW_TAG_inlined_subroutine DW_CHILDREN_yes + DW_AT_abstract_origin DW_FORM_ref4 + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_call_file DW_FORM_data1 + DW_AT_call_line DW_FORM_data1 + DW_AT_call_column DW_FORM_data1 + +[25] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_abstract_origin DW_FORM_ref4 + +[26] DW_TAG_variable DW_CHILDREN_no + DW_AT_location DW_FORM_sec_offset + DW_AT_abstract_origin DW_FORM_ref4 + +[27] DW_TAG_variable DW_CHILDREN_no + DW_AT_abstract_origin DW_FORM_ref4 + +[28] DW_TAG_label DW_CHILDREN_no + DW_AT_abstract_origin DW_FORM_ref4 + DW_AT_low_pc DW_FORM_addr + + +.debug_info contents: +0x00000000: Compile Unit: length = 0x0000034f version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x00000353) + +0x0000000b: DW_TAG_compile_unit [1] * + DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)") + DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000069] = "/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) + DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x000000a9] = "/usr/local/google/home/azakai/Dev/2-binaryen") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) + DW_AT_ranges [DW_FORM_sec_offset] (0x00000040 + [0x00000006, 0x000003a3) + [0x000003a5, 0x000006ab)) + +0x00000026: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x002b => {0x0000002b} "worker_args") + +0x0000002b: DW_TAG_structure_type [3] * + DW_AT_calling_convention [DW_FORM_data1] (DW_CC_pass_by_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e3] = "worker_args") + DW_AT_byte_size [DW_FORM_data1] (0x0c) + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (20) + +0x00000034: DW_TAG_member [4] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (21) + DW_AT_data_member_location [DW_FORM_data1] (0x00) + +0x00000040: DW_TAG_member [4] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (21) + DW_AT_data_member_location [DW_FORM_data1] (0x04) + +0x0000004c: DW_TAG_member [4] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000de] = "next") + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (22) + DW_AT_data_member_location [DW_FORM_data1] (0x08) + +0x00000058: NULL + +0x00000059: DW_TAG_base_type [5] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d8] = "int") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) + DW_AT_byte_size [DW_FORM_data1] (0x04) + +0x00000060: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000065: DW_TAG_namespace [6] * + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ef] = "std") + +0x0000006a: DW_TAG_typedef [7] + DW_AT_type [DW_FORM_ref4] (cu + 0x0076 => {0x00000076} "decltype(nullptr)") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000105] = "nullptr_t") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libcxx/__nullptr") + DW_AT_decl_line [DW_FORM_data1] (57) + +0x00000075: NULL + +0x00000076: DW_TAG_unspecified_type [8] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000f3] = "decltype(nullptr)") + +0x0000007b: DW_TAG_imported_declaration [9] + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libcxx/stddef.h") + DW_AT_decl_line [DW_FORM_data1] (52) + DW_AT_import [DW_FORM_ref4] (cu + 0x006a => {0x0000006a}) + +0x00000082: DW_TAG_subprogram [10] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000006) + DW_AT_high_pc [DW_FORM_data4] (0x0000039d) + DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x1 +0, DW_OP_stack_value) + DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) + DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x00000166] = "_Z15fannkuch_workerPv") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000017c] = "fannkuch_worker") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (26) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x0000009e: DW_TAG_formal_parameter [11] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000191] = "_arg") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (26) + DW_AT_type [DW_FORM_ref4] (cu + 0x01a7 => {0x000001a7} "*") + +0x000000a9: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000133] = "args") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (28) + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + +0x000000b4: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x00000000: + [0xffffffff, 0x00000006): + [0x00000000, 0x0000004e): DW_OP_consts +0, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014c] = "maxflips") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000000c3: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x0000001d: + [0xffffffff, 0x0000002b): + [0x00000000, 0x00000029): DW_OP_consts +0, DW_OP_stack_value + [0x0000003f, 0x00000044): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x000000d5, 0x000000de): DW_OP_consts +1, DW_OP_stack_value + [0x0000011a, 0x00000124): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000162, 0x0000016f): DW_OP_consts +0, DW_OP_stack_value + [0x0000024f, 0x0000025a): DW_OP_consts +0, DW_OP_stack_value + [0x00000260, 0x00000269): DW_OP_consts +1, DW_OP_stack_value + [0x000002a5, 0x000002af): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x000002ed, 0x000002fa): DW_OP_consts +0, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000000d2: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000000a5: + [0xffffffff, 0x00000032): + [0x00000000, 0x00000022): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000000e1: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000000c3: + [0xffffffff, 0x0000003b): + [0x00000000, 0x00000019): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000013e] = "perm1") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (29) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x000000f0: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000000e1: + [0xffffffff, 0x00000041): + [0x00000000, 0x00000013): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000196] = "perm") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (29) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x000000ff: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000000ff: + [0xffffffff, 0x00000047): + [0x00000000, 0x0000000d): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000144] = "count") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (29) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x0000010e: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x0000011d: + [0xffffffff, 0x000001f6): + [0x00000000, 0x00000005): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value + [0x0000018b, 0x00000190): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014a] = "r") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000011d: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x00000149: + [0xffffffff, 0x000000e7): + [0x00000000, 0x00000013): DW_OP_consts +0, DW_OP_stack_value + [0x00000019, 0x00000022): DW_OP_WASM_location 0x0 +13, DW_OP_stack_value + [0x00000087, 0x0000008f): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000193, 0x0000019e): DW_OP_consts +0, DW_OP_stack_value + [0x000001a4, 0x000001ad): DW_OP_WASM_location 0x0 +10, DW_OP_stack_value + [0x00000212, 0x0000021a): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000155] = "flips") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000012c: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000001ab: + [0xffffffff, 0x000000f6): + [0x00000000, 0x00000004): DW_OP_WASM_location 0x0 +12, DW_OP_stack_value + [0x0000018b, 0x0000018f): DW_OP_WASM_location 0x0 +16, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019b] = "k") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000013b: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000001d7: + [0xffffffff, 0x00000110): + [0x00000000, 0x00000004): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x0000003c, 0x0000003f): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x0000018b, 0x0000018f): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x000001c7, 0x000001ca): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019d] = "j") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000014a: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x0000021f: + [0xffffffff, 0x00000125): + [0x00000000, 0x0000002a): DW_OP_WASM_location 0x0 +15, DW_OP_stack_value + [0x0000003b, 0x00000051): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x0000018b, 0x000001b5): DW_OP_WASM_location 0x0 +14, DW_OP_stack_value + [0x000001c6, 0x000001dc): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019f] = "tmp") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000159: DW_TAG_lexical_block [14] * + DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 + [0x00000193, 0x000001d1) + [0x000001fb, 0x00000204) + [0x0000031e, 0x0000035c) + [0x00000386, 0x0000038f)) + +0x0000015e: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000163] = "p0") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (74) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000169: NULL + +0x0000016a: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000039) + +0x0000016f: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x000000000000003f) + +0x00000174: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000045) + +0x00000179: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x00000000000000ef) + +0x0000017e: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000398) + +0x00000187: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x000000000000039c) + +0x00000190: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x00000000000003a0) + +0x00000199: NULL + +0x0000019a: DW_TAG_subprogram [17] * + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000010f] = "free") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libc/stdlib.h") + DW_AT_decl_line [DW_FORM_data1] (41) + DW_AT_declaration [DW_FORM_flag_present] (true) + DW_AT_external [DW_FORM_flag_present] (true) + +0x000001a1: DW_TAG_formal_parameter [18] + DW_AT_type [DW_FORM_ref4] (cu + 0x01a7 => {0x000001a7} "*") + +0x000001a6: NULL + +0x000001a7: DW_TAG_pointer_type [19] + +0x000001a8: DW_TAG_subprogram [20] * + DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x00000114] = "_ZL8fannkuchi") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000122] = "fannkuch") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (87) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_inline [DW_FORM_data1] (DW_INL_inlined) + +0x000001b8: DW_TAG_formal_parameter [11] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (87) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000001c3: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000012b] = "showmax") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (90) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000001ce: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000133] = "args") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (89) + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + +0x000001d9: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000001e4: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000138] = "targs") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (89) + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + +0x000001ef: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000013e] = "perm1") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x000001fa: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000144] = "count") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x00000205: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014a] = "r") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000210: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014c] = "maxflips") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000021b: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000155] = "flips") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000226: DW_TAG_label [21] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000015b] = "cleanup") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (137) + +0x0000022d: DW_TAG_lexical_block [22] * + +0x0000022e: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000163] = "p0") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (125) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000239: NULL + +0x0000023a: NULL + +0x0000023b: DW_TAG_subprogram [23] * + DW_AT_low_pc [DW_FORM_addr] (0x00000000000003a5) + DW_AT_high_pc [DW_FORM_data4] (0x00000306) + DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) + DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000018c] = "main") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (152) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x00000253: DW_TAG_formal_parameter [11] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001a3] = "argc") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (152) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000025e: DW_TAG_formal_parameter [11] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001a8] = "argv") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (152) + DW_AT_type [DW_FORM_ref4] (cu + 0x0341 => {0x00000341} "char**") + +0x00000269: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x00000267: + [0xffffffff, 0x000003d7): + [0x00000000, 0x00000005): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (153) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000278: DW_TAG_inlined_subroutine [24] * + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01a8 => {0x000001a8} "_ZL8fannkuchi") + DW_AT_low_pc [DW_FORM_addr] (0x00000000000003ec) + DW_AT_high_pc [DW_FORM_data4] (0x0000029e) + DW_AT_call_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_call_line [DW_FORM_data1] (159) + DW_AT_call_column [DW_FORM_data1] (0x29) + +0x00000288: DW_TAG_formal_parameter [25] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01b8 => {0x000001b8} "n") + +0x0000028d: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x00000285: + [0xffffffff, 0x000003ea): + [0x00000000, 0x00000009): DW_OP_consts +30, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01c3 => {0x000001c3} "showmax") + +0x00000296: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x000002a2: + [0xffffffff, 0x000003ea): + [0x00000000, 0x00000009): DW_OP_lit0, DW_OP_stack_value + [0x00000286, 0x0000029e): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01ce => {0x000001ce} "args") + +0x0000029f: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x000002cc: + [0xffffffff, 0x000003ea): + [0x00000000, 0x00000009): DW_OP_consts +0, DW_OP_stack_value + [0x0000003e, 0x00000043): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000049, 0x00000069): DW_OP_consts +0, DW_OP_stack_value + [0x0000007f, 0x00000084): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x0000009d, 0x000000a1): DW_OP_consts +0, DW_OP_stack_value + [0x000000c8, 0x000000cd): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000115, 0x00000125): DW_OP_consts +0, DW_OP_stack_value + [0x00000198, 0x000001a6): DW_OP_consts +0, DW_OP_stack_value + [0x000001db, 0x000001ef): DW_OP_consts +0, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01d9 => {0x000001d9} "i") + +0x000002a8: DW_TAG_variable [27] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01e4 => {0x000001e4} "targs") + +0x000002ad: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x00000354: + [0xffffffff, 0x0000043e): + [0x00000000, 0x00000015): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01ef => {0x000001ef} "perm1") + +0x000002b6: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x00000372: + [0xffffffff, 0x00000444): + [0x00000000, 0x0000000f): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01fa => {0x000001fa} "count") + +0x000002bf: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x00000390: + [0xffffffff, 0x0000056d): + [0x00000000, 0x00000007): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value + [0x000000ca, 0x000000d1): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0205 => {0x00000205} "r") + +0x000002c8: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x000003e8: + [0xffffffff, 0x00000652): + [0x00000000, 0x0000000b): DW_OP_consts +0, DW_OP_stack_value + [0x0000002e, 0x00000036): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0210 => {0x00000210} "maxflips") + +0x000002d1: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x00000413: + [0xffffffff, 0x00000669): + [0x00000000, 0x0000001f): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x021b => {0x0000021b} "flips") + +0x000002da: DW_TAG_label [28] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0226 => {0x00000226} "cleanup") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000646) + +0x000002e3: DW_TAG_lexical_block [14] * + DW_AT_ranges [DW_FORM_sec_offset] (0x00000028 + [0x000004ff, 0x00000546) + [0x000005c3, 0x00000610)) + +0x000002e8: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x000003bc: + [0xffffffff, 0x00000506): + [0x00000000, 0x00000009): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value + [0x000000c6, 0x000000d3): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x022e => {0x0000022e} "p0") + +0x000002f1: NULL + +0x000002f2: NULL + +0x000002f3: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x00000000000003d5) + +0x000002f8: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x00000000000003e2) + +0x000002fd: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000408) + +0x00000302: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x000000000000043c) + +0x00000307: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000442) + +0x0000030c: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x00000000000004aa) + +0x00000311: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x00000000000004bc) + +0x00000316: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000586) + +0x0000031b: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x000000000000064a) + +0x00000324: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x000000000000064e) + +0x0000032d: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000667) + +0x00000332: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000674) + +0x0000033b: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x000000000000069f) + +0x00000340: NULL + +0x00000341: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x0346 => {0x00000346} "char*") + +0x00000346: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x034b => {0x0000034b} "char") + +0x0000034b: DW_TAG_base_type [5] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001ad] = "char") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char) + DW_AT_byte_size [DW_FORM_data1] (0x01) + +0x00000352: NULL + +.debug_loc contents: +0x00000000: + [0xffffffff, 0x00000006): + [0x00000000, 0x0000004e): DW_OP_consts +0, DW_OP_stack_value + +0x0000001d: + [0xffffffff, 0x0000002b): + [0x00000000, 0x00000029): DW_OP_consts +0, DW_OP_stack_value + [0x0000003f, 0x00000044): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x000000d5, 0x000000de): DW_OP_consts +1, DW_OP_stack_value + [0x0000011a, 0x00000124): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000162, 0x0000016f): DW_OP_consts +0, DW_OP_stack_value + [0x0000024f, 0x0000025a): DW_OP_consts +0, DW_OP_stack_value + [0x00000260, 0x00000269): DW_OP_consts +1, DW_OP_stack_value + [0x000002a5, 0x000002af): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x000002ed, 0x000002fa): DW_OP_consts +0, DW_OP_stack_value + +0x000000a5: + [0xffffffff, 0x00000032): + [0x00000000, 0x00000022): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value + +0x000000c3: + [0xffffffff, 0x0000003b): + [0x00000000, 0x00000019): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + +0x000000e1: + [0xffffffff, 0x00000041): + [0x00000000, 0x00000013): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value + +0x000000ff: + [0xffffffff, 0x00000047): + [0x00000000, 0x0000000d): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value + +0x0000011d: + [0xffffffff, 0x000001f6): + [0x00000000, 0x00000005): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value + [0x0000018b, 0x00000190): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value + +0x00000149: + [0xffffffff, 0x000000e7): + [0x00000000, 0x00000013): DW_OP_consts +0, DW_OP_stack_value + [0x00000019, 0x00000022): DW_OP_WASM_location 0x0 +13, DW_OP_stack_value + [0x00000087, 0x0000008f): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000193, 0x0000019e): DW_OP_consts +0, DW_OP_stack_value + [0x000001a4, 0x000001ad): DW_OP_WASM_location 0x0 +10, DW_OP_stack_value + [0x00000212, 0x0000021a): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + +0x000001ab: + [0xffffffff, 0x000000f6): + [0x00000000, 0x00000004): DW_OP_WASM_location 0x0 +12, DW_OP_stack_value + [0x0000018b, 0x0000018f): DW_OP_WASM_location 0x0 +16, DW_OP_stack_value + +0x000001d7: + [0xffffffff, 0x00000110): + [0x00000000, 0x00000004): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x0000003c, 0x0000003f): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x0000018b, 0x0000018f): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x000001c7, 0x000001ca): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +0x0000021f: + [0xffffffff, 0x00000125): + [0x00000000, 0x0000002a): DW_OP_WASM_location 0x0 +15, DW_OP_stack_value + [0x0000003b, 0x00000051): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x0000018b, 0x000001b5): DW_OP_WASM_location 0x0 +14, DW_OP_stack_value + [0x000001c6, 0x000001dc): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +0x00000267: + [0xffffffff, 0x000003d7): + [0x00000000, 0x00000005): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + +0x00000285: + [0xffffffff, 0x000003ea): + [0x00000000, 0x00000009): DW_OP_consts +30, DW_OP_stack_value + +0x000002a2: + [0xffffffff, 0x000003ea): + [0x00000000, 0x00000009): DW_OP_lit0, DW_OP_stack_value + [0x00000286, 0x0000029e): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value + +0x000002cc: + [0xffffffff, 0x000003ea): + [0x00000000, 0x00000009): DW_OP_consts +0, DW_OP_stack_value + [0x0000003e, 0x00000043): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000049, 0x00000069): DW_OP_consts +0, DW_OP_stack_value + [0x0000007f, 0x00000084): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x0000009d, 0x000000a1): DW_OP_consts +0, DW_OP_stack_value + [0x000000c8, 0x000000cd): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000115, 0x00000125): DW_OP_consts +0, DW_OP_stack_value + [0x00000198, 0x000001a6): DW_OP_consts +0, DW_OP_stack_value + [0x000001db, 0x000001ef): DW_OP_consts +0, DW_OP_stack_value + +0x00000354: + [0xffffffff, 0x0000043e): + [0x00000000, 0x00000015): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +0x00000372: + [0xffffffff, 0x00000444): + [0x00000000, 0x0000000f): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value + +0x00000390: + [0xffffffff, 0x0000056d): + [0x00000000, 0x00000007): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value + [0x000000ca, 0x000000d1): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value + +0x000003bc: + [0xffffffff, 0x00000506): + [0x00000000, 0x00000009): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value + [0x000000c6, 0x000000d3): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value + +0x000003e8: + [0xffffffff, 0x00000652): + [0x00000000, 0x0000000b): DW_OP_consts +0, DW_OP_stack_value + [0x0000002e, 0x00000036): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + +0x00000413: + [0xffffffff, 0x00000669): + [0x00000000, 0x0000001f): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +.debug_line contents: +debug_line[0x00000000] +Line table prologue: + total_length: 0x00000b06 + version: 4 + prologue_length: 0x000000dd + min_inst_length: 1 +max_ops_per_inst: 1 + default_is_stmt: 1 + line_base: -5 + line_range: 14 + opcode_base: 13 +standard_opcode_lengths[DW_LNS_copy] = 0 +standard_opcode_lengths[DW_LNS_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_advance_line] = 1 +standard_opcode_lengths[DW_LNS_set_file] = 1 +standard_opcode_lengths[DW_LNS_set_column] = 1 +standard_opcode_lengths[DW_LNS_negate_stmt] = 0 +standard_opcode_lengths[DW_LNS_set_basic_block] = 0 +standard_opcode_lengths[DW_LNS_const_add_pc] = 0 +standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 +standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 +standard_opcode_lengths[DW_LNS_set_isa] = 1 +include_directories[ 1] = "/usr/local/google/home/azakai/Dev" +file_names[ 1]: + name: "emscripten/tests/fannkuch.cpp" + dir_index: 1 + mod_time: 0x00000000 + length: 0x00000000 +file_names[ 2]: + name: "emscripten/system/include/libcxx/__nullptr" + dir_index: 1 + mod_time: 0x00000000 + length: 0x00000000 +file_names[ 3]: + name: "emscripten/system/include/libcxx/stddef.h" + dir_index: 1 + mod_time: 0x00000000 + length: 0x00000000 +file_names[ 4]: + name: "emscripten/system/include/libc/stdlib.h" + dir_index: 1 + mod_time: 0x00000000 + length: 0x00000000 +0x000000e7: 00 DW_LNE_set_address (0x0000000000000006) +0x000000ee: 03 DW_LNS_advance_line (27) +0x000000f0: 01 DW_LNS_copy + 0x0000000000000006 27 0 1 0 0 is_stmt + + +0x000000f1: 00 DW_LNE_set_address (0x000000000000002b) +0x000000f8: 03 DW_LNS_advance_line (33) +0x000000fa: 05 DW_LNS_set_column (14) +0x000000fc: 0a DW_LNS_set_prologue_end +0x000000fd: 01 DW_LNS_copy + 0x000000000000002b 33 14 1 0 0 is_stmt prologue_end + + +0x000000fe: 00 DW_LNE_set_address (0x0000000000000034) +0x00000105: 03 DW_LNS_advance_line (34) +0x00000107: 05 DW_LNS_set_column (27) +0x00000109: 01 DW_LNS_copy + 0x0000000000000034 34 27 1 0 0 is_stmt + + +0x0000010a: 00 DW_LNE_set_address (0x0000000000000035) +0x00000111: 05 DW_LNS_set_column (18) +0x00000113: 06 DW_LNS_negate_stmt +0x00000114: 01 DW_LNS_copy + 0x0000000000000035 34 18 1 0 0 + + +0x00000115: 00 DW_LNE_set_address (0x000000000000003b) +0x0000011c: 03 DW_LNS_advance_line (35) +0x0000011e: 05 DW_LNS_set_column (17) +0x00000120: 06 DW_LNS_negate_stmt +0x00000121: 01 DW_LNS_copy + 0x000000000000003b 35 17 1 0 0 is_stmt + + +0x00000122: 00 DW_LNE_set_address (0x0000000000000041) +0x00000129: 03 DW_LNS_advance_line (36) +0x0000012b: 05 DW_LNS_set_column (18) +0x0000012d: 01 DW_LNS_copy + 0x0000000000000041 36 18 1 0 0 is_stmt + + +0x0000012e: 00 DW_LNE_set_address (0x000000000000004d) +0x00000135: 03 DW_LNS_advance_line (37) +0x00000137: 01 DW_LNS_copy + 0x000000000000004d 37 18 1 0 0 is_stmt + + +0x00000138: 00 DW_LNE_set_address (0x0000000000000052) +0x0000013f: 05 DW_LNS_set_column (4) +0x00000141: 06 DW_LNS_negate_stmt +0x00000142: 01 DW_LNS_copy + 0x0000000000000052 37 4 1 0 0 + + +0x00000143: 00 DW_LNE_set_address (0x0000000000000056) +0x0000014a: 03 DW_LNS_advance_line (38) +0x0000014c: 05 DW_LNS_set_column (7) +0x0000014e: 06 DW_LNS_negate_stmt +0x0000014f: 01 DW_LNS_copy + 0x0000000000000056 38 7 1 0 0 is_stmt + + +0x00000150: 00 DW_LNE_set_address (0x000000000000005e) +0x00000157: 05 DW_LNS_set_column (16) +0x00000159: 06 DW_LNS_negate_stmt +0x0000015a: 01 DW_LNS_copy + 0x000000000000005e 38 16 1 0 0 + + +0x0000015b: 00 DW_LNE_set_address (0x0000000000000063) +0x00000162: 03 DW_LNS_advance_line (37) +0x00000164: 05 DW_LNS_set_column (24) +0x00000166: 06 DW_LNS_negate_stmt +0x00000167: 01 DW_LNS_copy + 0x0000000000000063 37 24 1 0 0 is_stmt + + +0x00000168: 00 DW_LNE_set_address (0x0000000000000068) +0x0000016f: 05 DW_LNS_set_column (18) +0x00000171: 06 DW_LNS_negate_stmt +0x00000172: 01 DW_LNS_copy + 0x0000000000000068 37 18 1 0 0 + + +0x00000173: 00 DW_LNE_set_address (0x000000000000006d) +0x0000017a: 05 DW_LNS_set_column (4) +0x0000017c: 01 DW_LNS_copy + 0x000000000000006d 37 4 1 0 0 + + +0x0000017d: 00 DW_LNE_set_address (0x0000000000000070) +0x00000184: 03 DW_LNS_advance_line (39) +0x00000186: 06 DW_LNS_negate_stmt +0x00000187: 01 DW_LNS_copy + 0x0000000000000070 39 4 1 0 0 is_stmt + + +0x00000188: 00 DW_LNE_set_address (0x0000000000000072) +0x0000018f: 05 DW_LNS_set_column (16) +0x00000191: 06 DW_LNS_negate_stmt +0x00000192: 01 DW_LNS_copy + 0x0000000000000072 39 16 1 0 0 + + +0x00000193: 00 DW_LNE_set_address (0x000000000000007b) +0x0000019a: 05 DW_LNS_set_column (4) +0x0000019c: 01 DW_LNS_copy + 0x000000000000007b 39 4 1 0 0 + + +0x0000019d: 00 DW_LNE_set_address (0x000000000000007d) +0x000001a4: 05 DW_LNS_set_column (23) +0x000001a6: 01 DW_LNS_copy + 0x000000000000007d 39 23 1 0 0 + + +0x000001a7: 00 DW_LNE_set_address (0x0000000000000082) +0x000001ae: 05 DW_LNS_set_column (19) +0x000001b0: 01 DW_LNS_copy + 0x0000000000000082 39 19 1 0 0 + + +0x000001b1: 00 DW_LNE_set_address (0x0000000000000087) +0x000001b8: 03 DW_LNS_advance_line (40) +0x000001ba: 05 DW_LNS_set_column (4) +0x000001bc: 06 DW_LNS_negate_stmt +0x000001bd: 01 DW_LNS_copy + 0x0000000000000087 40 4 1 0 0 is_stmt + + +0x000001be: 00 DW_LNE_set_address (0x000000000000008f) +0x000001c5: 05 DW_LNS_set_column (17) +0x000001c7: 06 DW_LNS_negate_stmt +0x000001c8: 01 DW_LNS_copy + 0x000000000000008f 40 17 1 0 0 + + +0x000001c9: 00 DW_LNE_set_address (0x000000000000009a) +0x000001d0: 03 DW_LNS_advance_line (37) +0x000001d2: 05 DW_LNS_set_column (18) +0x000001d4: 06 DW_LNS_negate_stmt +0x000001d5: 01 DW_LNS_copy + 0x000000000000009a 37 18 1 0 0 is_stmt + + +0x000001d6: 00 DW_LNE_set_address (0x000000000000009f) +0x000001dd: 03 DW_LNS_advance_line (43) +0x000001df: 05 DW_LNS_set_column (4) +0x000001e1: 01 DW_LNS_copy + 0x000000000000009f 43 4 1 0 0 is_stmt + + +0x000001e2: 00 DW_LNE_set_address (0x00000000000000a5) +0x000001e9: 03 DW_LNS_advance_line (44) +0x000001eb: 05 DW_LNS_set_column (16) +0x000001ed: 01 DW_LNS_copy + 0x00000000000000a5 44 16 1 0 0 is_stmt + + +0x000001ee: 00 DW_LNE_set_address (0x00000000000000ae) +0x000001f5: 03 DW_LNS_advance_line (45) +0x000001f7: 05 DW_LNS_set_column (10) +0x000001f9: 01 DW_LNS_copy + 0x00000000000000ae 45 10 1 0 0 is_stmt + + +0x000001fa: 00 DW_LNE_set_address (0x00000000000000b0) +0x00000201: 05 DW_LNS_set_column (18) +0x00000203: 06 DW_LNS_negate_stmt +0x00000204: 01 DW_LNS_copy + 0x00000000000000b0 45 18 1 0 0 + + +0x00000205: 00 DW_LNE_set_address (0x00000000000000b9) +0x0000020c: 05 DW_LNS_set_column (10) +0x0000020e: 01 DW_LNS_copy + 0x00000000000000b9 45 10 1 0 0 + + +0x0000020f: 00 DW_LNE_set_address (0x00000000000000bb) +0x00000216: 05 DW_LNS_set_column (23) +0x00000218: 01 DW_LNS_copy + 0x00000000000000bb 45 23 1 0 0 + + +0x00000219: 00 DW_LNE_set_address (0x00000000000000c0) +0x00000220: 03 DW_LNS_advance_line (44) +0x00000222: 05 DW_LNS_set_column (16) +0x00000224: 06 DW_LNS_negate_stmt +0x00000225: 01 DW_LNS_copy + 0x00000000000000c0 44 16 1 0 0 is_stmt + + +0x00000226: 00 DW_LNE_set_address (0x00000000000000cb) +0x0000022d: 05 DW_LNS_set_column (7) +0x0000022f: 06 DW_LNS_negate_stmt +0x00000230: 01 DW_LNS_copy + 0x00000000000000cb 44 7 1 0 0 + + +0x00000231: 00 DW_LNE_set_address (0x00000000000000d1) +0x00000238: 03 DW_LNS_advance_line (46) +0x0000023a: 05 DW_LNS_set_column (11) +0x0000023c: 06 DW_LNS_negate_stmt +0x0000023d: 01 DW_LNS_copy + 0x00000000000000d1 46 11 1 0 0 is_stmt + + +0x0000023e: 00 DW_LNE_set_address (0x00000000000000dd) +0x00000245: 05 DW_LNS_set_column (28) +0x00000247: 06 DW_LNS_negate_stmt +0x00000248: 01 DW_LNS_copy + 0x00000000000000dd 46 28 1 0 0 + + +0x00000249: 00 DW_LNE_set_address (0x00000000000000e2) +0x00000250: 05 DW_LNS_set_column (41) +0x00000252: 01 DW_LNS_copy + 0x00000000000000e2 46 41 1 0 0 + + +0x00000253: 00 DW_LNE_set_address (0x00000000000000e7) +0x0000025a: 03 DW_LNS_advance_line (48) +0x0000025c: 05 DW_LNS_set_column (21) +0x0000025e: 06 DW_LNS_negate_stmt +0x0000025f: 01 DW_LNS_copy + 0x00000000000000e7 48 21 1 0 0 is_stmt + + +0x00000260: 00 DW_LNE_set_address (0x00000000000000ef) +0x00000267: 03 DW_LNS_advance_line (50) +0x00000269: 05 DW_LNS_set_column (14) +0x0000026b: 01 DW_LNS_copy + 0x00000000000000ef 50 14 1 0 0 is_stmt + + +0x0000026c: 00 DW_LNE_set_address (0x0000000000000102) +0x00000273: 03 DW_LNS_advance_line (52) +0x00000275: 05 DW_LNS_set_column (38) +0x00000277: 01 DW_LNS_copy + 0x0000000000000102 52 38 1 0 0 is_stmt + + +0x00000278: 00 DW_LNE_set_address (0x0000000000000116) +0x0000027f: 03 DW_LNS_advance_line (53) +0x00000281: 05 DW_LNS_set_column (22) +0x00000283: 01 DW_LNS_copy + 0x0000000000000116 53 22 1 0 0 is_stmt + + +0x00000284: 00 DW_LNE_set_address (0x0000000000000125) +0x0000028b: 03 DW_LNS_advance_line (54) +0x0000028d: 05 DW_LNS_set_column (24) +0x0000028f: 01 DW_LNS_copy + 0x0000000000000125 54 24 1 0 0 is_stmt + + +0x00000290: 00 DW_LNE_set_address (0x0000000000000127) +0x00000297: 05 DW_LNS_set_column (26) +0x00000299: 06 DW_LNS_negate_stmt +0x0000029a: 01 DW_LNS_copy + 0x0000000000000127 54 26 1 0 0 + + +0x0000029b: 00 DW_LNE_set_address (0x0000000000000134) +0x000002a2: 05 DW_LNS_set_column (24) +0x000002a4: 01 DW_LNS_copy + 0x0000000000000134 54 24 1 0 0 + + +0x000002a5: 00 DW_LNE_set_address (0x0000000000000137) +0x000002ac: 03 DW_LNS_advance_line (55) +0x000002ae: 06 DW_LNS_negate_stmt +0x000002af: 01 DW_LNS_copy + 0x0000000000000137 55 24 1 0 0 is_stmt + + +0x000002b0: 00 DW_LNE_set_address (0x000000000000013e) +0x000002b7: 03 DW_LNS_advance_line (52) +0x000002b9: 05 DW_LNS_set_column (44) +0x000002bb: 01 DW_LNS_copy + 0x000000000000013e 52 44 1 0 0 is_stmt + + +0x000002bc: 00 DW_LNE_set_address (0x000000000000014a) +0x000002c3: 05 DW_LNS_set_column (38) +0x000002c5: 06 DW_LNS_negate_stmt +0x000002c6: 01 DW_LNS_copy + 0x000000000000014a 52 38 1 0 0 + + +0x000002c7: 00 DW_LNE_set_address (0x000000000000014d) +0x000002ce: 05 DW_LNS_set_column (13) +0x000002d0: 01 DW_LNS_copy + 0x000000000000014d 52 13 1 0 0 + + +0x000002d1: 00 DW_LNE_set_address (0x0000000000000151) +0x000002d8: 03 DW_LNS_advance_line (58) +0x000002da: 05 DW_LNS_set_column (19) +0x000002dc: 06 DW_LNS_negate_stmt +0x000002dd: 01 DW_LNS_copy + 0x0000000000000151 58 19 1 0 0 is_stmt + + +0x000002de: 00 DW_LNE_set_address (0x0000000000000160) +0x000002e5: 03 DW_LNS_advance_line (59) +0x000002e7: 05 DW_LNS_set_column (21) +0x000002e9: 01 DW_LNS_copy + 0x0000000000000160 59 21 1 0 0 is_stmt + + +0x000002ea: 00 DW_LNE_set_address (0x0000000000000167) +0x000002f1: 03 DW_LNS_advance_line (57) +0x000002f3: 05 DW_LNS_set_column (18) +0x000002f5: 01 DW_LNS_copy + 0x0000000000000167 57 18 1 0 0 is_stmt + + +0x000002f6: 00 DW_LNE_set_address (0x0000000000000177) +0x000002fd: 03 DW_LNS_advance_line (62) +0x000002ff: 05 DW_LNS_set_column (14) +0x00000301: 01 DW_LNS_copy + 0x0000000000000177 62 14 1 0 0 is_stmt + + +0x00000302: 00 DW_LNE_set_address (0x000000000000017b) +0x00000309: 05 DW_LNS_set_column (23) +0x0000030b: 06 DW_LNS_negate_stmt +0x0000030c: 01 DW_LNS_copy + 0x000000000000017b 62 23 1 0 0 + + +0x0000030d: 00 DW_LNE_set_address (0x0000000000000180) +0x00000314: 05 DW_LNS_set_column (14) +0x00000316: 01 DW_LNS_copy + 0x0000000000000180 62 14 1 0 0 + + +0x00000317: 00 DW_LNE_set_address (0x0000000000000184) +0x0000031e: 03 DW_LNS_advance_line (66) +0x00000320: 05 DW_LNS_set_column (16) +0x00000322: 06 DW_LNS_negate_stmt +0x00000323: 01 DW_LNS_copy + 0x0000000000000184 66 16 1 0 0 is_stmt + + +0x00000324: 00 DW_LNE_set_address (0x0000000000000193) +0x0000032b: 03 DW_LNS_advance_line (75) +0x0000032d: 05 DW_LNS_set_column (27) +0x0000032f: 01 DW_LNS_copy + 0x0000000000000193 75 27 1 0 0 is_stmt + + +0x00000330: 00 DW_LNE_set_address (0x000000000000019c) +0x00000337: 03 DW_LNS_advance_line (76) +0x00000339: 05 DW_LNS_set_column (16) +0x0000033b: 01 DW_LNS_copy + 0x000000000000019c 76 16 1 0 0 is_stmt + + +0x0000033c: 00 DW_LNE_set_address (0x00000000000001a4) +0x00000343: 05 DW_LNS_set_column (27) +0x00000345: 06 DW_LNS_negate_stmt +0x00000346: 01 DW_LNS_copy + 0x00000000000001a4 76 27 1 0 0 + + +0x00000347: 00 DW_LNE_set_address (0x00000000000001a6) +0x0000034e: 05 DW_LNS_set_column (35) +0x00000350: 01 DW_LNS_copy + 0x00000000000001a6 76 35 1 0 0 + + +0x00000351: 00 DW_LNE_set_address (0x00000000000001af) +0x00000358: 05 DW_LNS_set_column (27) +0x0000035a: 01 DW_LNS_copy + 0x00000000000001af 76 27 1 0 0 + + +0x0000035b: 00 DW_LNE_set_address (0x00000000000001b4) +0x00000362: 05 DW_LNS_set_column (25) +0x00000364: 01 DW_LNS_copy + 0x00000000000001b4 76 25 1 0 0 + + +0x00000365: 00 DW_LNE_set_address (0x00000000000001b7) +0x0000036c: 03 DW_LNS_advance_line (75) +0x0000036e: 05 DW_LNS_set_column (27) +0x00000370: 06 DW_LNS_negate_stmt +0x00000371: 01 DW_LNS_copy + 0x00000000000001b7 75 27 1 0 0 is_stmt + + +0x00000372: 00 DW_LNE_set_address (0x00000000000001bc) +0x00000379: 05 DW_LNS_set_column (13) +0x0000037b: 06 DW_LNS_negate_stmt +0x0000037c: 01 DW_LNS_copy + 0x00000000000001bc 75 13 1 0 0 + + +0x0000037d: 00 DW_LNE_set_address (0x00000000000001c4) +0x00000384: 03 DW_LNS_advance_line (77) +0x00000386: 06 DW_LNS_negate_stmt +0x00000387: 01 DW_LNS_copy + 0x00000000000001c4 77 13 1 0 0 is_stmt + + +0x00000388: 00 DW_LNE_set_address (0x00000000000001cc) +0x0000038f: 05 DW_LNS_set_column (22) +0x00000391: 06 DW_LNS_negate_stmt +0x00000392: 01 DW_LNS_copy + 0x00000000000001cc 77 22 1 0 0 + + +0x00000393: 00 DW_LNE_set_address (0x00000000000001d1) +0x0000039a: 03 DW_LNS_advance_line (79) +0x0000039c: 05 DW_LNS_set_column (16) +0x0000039e: 06 DW_LNS_negate_stmt +0x0000039f: 01 DW_LNS_copy + 0x00000000000001d1 79 16 1 0 0 is_stmt + + +0x000003a0: 00 DW_LNE_set_address (0x00000000000001d9) +0x000003a7: 05 DW_LNS_set_column (14) +0x000003a9: 06 DW_LNS_negate_stmt +0x000003aa: 01 DW_LNS_copy + 0x00000000000001d9 79 14 1 0 0 + + +0x000003ab: 00 DW_LNE_set_address (0x00000000000001e8) +0x000003b2: 05 DW_LNS_set_column (25) +0x000003b4: 01 DW_LNS_copy + 0x00000000000001e8 79 25 1 0 0 + + +0x000003b5: 00 DW_LNE_set_address (0x00000000000001ef) +0x000003bc: 03 DW_LNS_advance_line (81) +0x000003be: 05 DW_LNS_set_column (11) +0x000003c0: 06 DW_LNS_negate_stmt +0x000003c1: 01 DW_LNS_copy + 0x00000000000001ef 81 11 1 0 0 is_stmt + + +0x000003c2: 00 DW_LNE_set_address (0x00000000000001f4) +0x000003c9: 03 DW_LNS_advance_line (66) +0x000003cb: 05 DW_LNS_set_column (16) +0x000003cd: 01 DW_LNS_copy + 0x00000000000001f4 66 16 1 0 0 is_stmt + + +0x000003ce: 00 DW_LNE_set_address (0x00000000000001fb) +0x000003d5: 03 DW_LNS_advance_line (74) +0x000003d7: 05 DW_LNS_set_column (22) +0x000003d9: 01 DW_LNS_copy + 0x00000000000001fb 74 22 1 0 0 is_stmt + + +0x000003da: 00 DW_LNE_set_address (0x0000000000000204) +0x000003e1: 03 DW_LNS_advance_line (37) +0x000003e3: 05 DW_LNS_set_column (4) +0x000003e5: 01 DW_LNS_copy + 0x0000000000000204 37 4 1 0 0 is_stmt + + +0x000003e6: 00 DW_LNE_set_address (0x0000000000000209) +0x000003ed: 03 DW_LNS_advance_line (39) +0x000003ef: 01 DW_LNS_copy + 0x0000000000000209 39 4 1 0 0 is_stmt + + +0x000003f0: 00 DW_LNE_set_address (0x000000000000020b) +0x000003f7: 05 DW_LNS_set_column (16) +0x000003f9: 06 DW_LNS_negate_stmt +0x000003fa: 01 DW_LNS_copy + 0x000000000000020b 39 16 1 0 0 + + +0x000003fb: 00 DW_LNE_set_address (0x0000000000000214) +0x00000402: 05 DW_LNS_set_column (4) +0x00000404: 01 DW_LNS_copy + 0x0000000000000214 39 4 1 0 0 + + +0x00000405: 00 DW_LNE_set_address (0x0000000000000216) +0x0000040c: 05 DW_LNS_set_column (23) +0x0000040e: 01 DW_LNS_copy + 0x0000000000000216 39 23 1 0 0 + + +0x0000040f: 00 DW_LNE_set_address (0x000000000000021b) +0x00000416: 05 DW_LNS_set_column (19) +0x00000418: 01 DW_LNS_copy + 0x000000000000021b 39 19 1 0 0 + + +0x00000419: 00 DW_LNE_set_address (0x0000000000000220) +0x00000420: 03 DW_LNS_advance_line (40) +0x00000422: 05 DW_LNS_set_column (4) +0x00000424: 06 DW_LNS_negate_stmt +0x00000425: 01 DW_LNS_copy + 0x0000000000000220 40 4 1 0 0 is_stmt + + +0x00000426: 00 DW_LNE_set_address (0x0000000000000228) +0x0000042d: 05 DW_LNS_set_column (17) +0x0000042f: 06 DW_LNS_negate_stmt +0x00000430: 01 DW_LNS_copy + 0x0000000000000228 40 17 1 0 0 + + +0x00000431: 00 DW_LNE_set_address (0x0000000000000238) +0x00000438: 03 DW_LNS_advance_line (44) +0x0000043a: 05 DW_LNS_set_column (16) +0x0000043c: 06 DW_LNS_negate_stmt +0x0000043d: 01 DW_LNS_copy + 0x0000000000000238 44 16 1 0 0 is_stmt + + +0x0000043e: 00 DW_LNE_set_address (0x0000000000000241) +0x00000445: 03 DW_LNS_advance_line (45) +0x00000447: 05 DW_LNS_set_column (10) +0x00000449: 01 DW_LNS_copy + 0x0000000000000241 45 10 1 0 0 is_stmt + + +0x0000044a: 00 DW_LNE_set_address (0x0000000000000243) +0x00000451: 05 DW_LNS_set_column (18) +0x00000453: 06 DW_LNS_negate_stmt +0x00000454: 01 DW_LNS_copy + 0x0000000000000243 45 18 1 0 0 + + +0x00000455: 00 DW_LNE_set_address (0x000000000000024c) +0x0000045c: 05 DW_LNS_set_column (10) +0x0000045e: 01 DW_LNS_copy + 0x000000000000024c 45 10 1 0 0 + + +0x0000045f: 00 DW_LNE_set_address (0x000000000000024e) +0x00000466: 05 DW_LNS_set_column (23) +0x00000468: 01 DW_LNS_copy + 0x000000000000024e 45 23 1 0 0 + + +0x00000469: 00 DW_LNE_set_address (0x0000000000000253) +0x00000470: 03 DW_LNS_advance_line (44) +0x00000472: 05 DW_LNS_set_column (16) +0x00000474: 06 DW_LNS_negate_stmt +0x00000475: 01 DW_LNS_copy + 0x0000000000000253 44 16 1 0 0 is_stmt + + +0x00000476: 00 DW_LNE_set_address (0x0000000000000264) +0x0000047d: 03 DW_LNS_advance_line (46) +0x0000047f: 05 DW_LNS_set_column (11) +0x00000481: 01 DW_LNS_copy + 0x0000000000000264 46 11 1 0 0 is_stmt + + +0x00000482: 00 DW_LNE_set_address (0x0000000000000270) +0x00000489: 05 DW_LNS_set_column (28) +0x0000048b: 06 DW_LNS_negate_stmt +0x0000048c: 01 DW_LNS_copy + 0x0000000000000270 46 28 1 0 0 + + +0x0000048d: 00 DW_LNE_set_address (0x0000000000000275) +0x00000494: 05 DW_LNS_set_column (41) +0x00000496: 01 DW_LNS_copy + 0x0000000000000275 46 41 1 0 0 + + +0x00000497: 00 DW_LNE_set_address (0x000000000000027a) +0x0000049e: 03 DW_LNS_advance_line (50) +0x000004a0: 05 DW_LNS_set_column (14) +0x000004a2: 06 DW_LNS_negate_stmt +0x000004a3: 01 DW_LNS_copy + 0x000000000000027a 50 14 1 0 0 is_stmt + + +0x000004a4: 00 DW_LNE_set_address (0x000000000000028d) +0x000004ab: 03 DW_LNS_advance_line (52) +0x000004ad: 05 DW_LNS_set_column (38) +0x000004af: 01 DW_LNS_copy + 0x000000000000028d 52 38 1 0 0 is_stmt + + +0x000004b0: 00 DW_LNE_set_address (0x00000000000002a1) +0x000004b7: 03 DW_LNS_advance_line (53) +0x000004b9: 05 DW_LNS_set_column (22) +0x000004bb: 01 DW_LNS_copy + 0x00000000000002a1 53 22 1 0 0 is_stmt + + +0x000004bc: 00 DW_LNE_set_address (0x00000000000002b0) +0x000004c3: 03 DW_LNS_advance_line (54) +0x000004c5: 05 DW_LNS_set_column (24) +0x000004c7: 01 DW_LNS_copy + 0x00000000000002b0 54 24 1 0 0 is_stmt + + +0x000004c8: 00 DW_LNE_set_address (0x00000000000002b2) +0x000004cf: 05 DW_LNS_set_column (26) +0x000004d1: 06 DW_LNS_negate_stmt +0x000004d2: 01 DW_LNS_copy + 0x00000000000002b2 54 26 1 0 0 + + +0x000004d3: 00 DW_LNE_set_address (0x00000000000002bf) +0x000004da: 05 DW_LNS_set_column (24) +0x000004dc: 01 DW_LNS_copy + 0x00000000000002bf 54 24 1 0 0 + + +0x000004dd: 00 DW_LNE_set_address (0x00000000000002c2) +0x000004e4: 03 DW_LNS_advance_line (55) +0x000004e6: 06 DW_LNS_negate_stmt +0x000004e7: 01 DW_LNS_copy + 0x00000000000002c2 55 24 1 0 0 is_stmt + + +0x000004e8: 00 DW_LNE_set_address (0x00000000000002c9) +0x000004ef: 03 DW_LNS_advance_line (52) +0x000004f1: 05 DW_LNS_set_column (44) +0x000004f3: 01 DW_LNS_copy + 0x00000000000002c9 52 44 1 0 0 is_stmt + + +0x000004f4: 00 DW_LNE_set_address (0x00000000000002d5) +0x000004fb: 05 DW_LNS_set_column (38) +0x000004fd: 06 DW_LNS_negate_stmt +0x000004fe: 01 DW_LNS_copy + 0x00000000000002d5 52 38 1 0 0 + + +0x000004ff: 00 DW_LNE_set_address (0x00000000000002dc) +0x00000506: 03 DW_LNS_advance_line (58) +0x00000508: 05 DW_LNS_set_column (19) +0x0000050a: 06 DW_LNS_negate_stmt +0x0000050b: 01 DW_LNS_copy + 0x00000000000002dc 58 19 1 0 0 is_stmt + + +0x0000050c: 00 DW_LNE_set_address (0x00000000000002eb) +0x00000513: 03 DW_LNS_advance_line (59) +0x00000515: 05 DW_LNS_set_column (21) +0x00000517: 01 DW_LNS_copy + 0x00000000000002eb 59 21 1 0 0 is_stmt + + +0x00000518: 00 DW_LNE_set_address (0x00000000000002f2) +0x0000051f: 03 DW_LNS_advance_line (57) +0x00000521: 05 DW_LNS_set_column (18) +0x00000523: 01 DW_LNS_copy + 0x00000000000002f2 57 18 1 0 0 is_stmt + + +0x00000524: 00 DW_LNE_set_address (0x0000000000000302) +0x0000052b: 03 DW_LNS_advance_line (62) +0x0000052d: 05 DW_LNS_set_column (14) +0x0000052f: 01 DW_LNS_copy + 0x0000000000000302 62 14 1 0 0 is_stmt + + +0x00000530: 00 DW_LNE_set_address (0x0000000000000306) +0x00000537: 05 DW_LNS_set_column (23) +0x00000539: 06 DW_LNS_negate_stmt +0x0000053a: 01 DW_LNS_copy + 0x0000000000000306 62 23 1 0 0 + + +0x0000053b: 00 DW_LNE_set_address (0x000000000000030b) +0x00000542: 05 DW_LNS_set_column (14) +0x00000544: 01 DW_LNS_copy + 0x000000000000030b 62 14 1 0 0 + + +0x00000545: 00 DW_LNE_set_address (0x000000000000030f) +0x0000054c: 03 DW_LNS_advance_line (66) +0x0000054e: 05 DW_LNS_set_column (16) +0x00000550: 06 DW_LNS_negate_stmt +0x00000551: 01 DW_LNS_copy + 0x000000000000030f 66 16 1 0 0 is_stmt + + +0x00000552: 00 DW_LNE_set_address (0x000000000000031e) +0x00000559: 03 DW_LNS_advance_line (75) +0x0000055b: 05 DW_LNS_set_column (27) +0x0000055d: 01 DW_LNS_copy + 0x000000000000031e 75 27 1 0 0 is_stmt + + +0x0000055e: 00 DW_LNE_set_address (0x0000000000000327) +0x00000565: 03 DW_LNS_advance_line (76) +0x00000567: 05 DW_LNS_set_column (16) +0x00000569: 01 DW_LNS_copy + 0x0000000000000327 76 16 1 0 0 is_stmt + + +0x0000056a: 00 DW_LNE_set_address (0x000000000000032f) +0x00000571: 05 DW_LNS_set_column (27) +0x00000573: 06 DW_LNS_negate_stmt +0x00000574: 01 DW_LNS_copy + 0x000000000000032f 76 27 1 0 0 + + +0x00000575: 00 DW_LNE_set_address (0x0000000000000331) +0x0000057c: 05 DW_LNS_set_column (35) +0x0000057e: 01 DW_LNS_copy + 0x0000000000000331 76 35 1 0 0 + + +0x0000057f: 00 DW_LNE_set_address (0x000000000000033a) +0x00000586: 05 DW_LNS_set_column (27) +0x00000588: 01 DW_LNS_copy + 0x000000000000033a 76 27 1 0 0 + + +0x00000589: 00 DW_LNE_set_address (0x000000000000033f) +0x00000590: 05 DW_LNS_set_column (25) +0x00000592: 01 DW_LNS_copy + 0x000000000000033f 76 25 1 0 0 + + +0x00000593: 00 DW_LNE_set_address (0x0000000000000342) +0x0000059a: 03 DW_LNS_advance_line (75) +0x0000059c: 05 DW_LNS_set_column (27) +0x0000059e: 06 DW_LNS_negate_stmt +0x0000059f: 01 DW_LNS_copy + 0x0000000000000342 75 27 1 0 0 is_stmt + + +0x000005a0: 00 DW_LNE_set_address (0x000000000000034f) +0x000005a7: 03 DW_LNS_advance_line (77) +0x000005a9: 05 DW_LNS_set_column (13) +0x000005ab: 01 DW_LNS_copy + 0x000000000000034f 77 13 1 0 0 is_stmt + + +0x000005ac: 00 DW_LNE_set_address (0x0000000000000357) +0x000005b3: 05 DW_LNS_set_column (22) +0x000005b5: 06 DW_LNS_negate_stmt +0x000005b6: 01 DW_LNS_copy + 0x0000000000000357 77 22 1 0 0 + + +0x000005b7: 00 DW_LNE_set_address (0x000000000000035c) +0x000005be: 03 DW_LNS_advance_line (79) +0x000005c0: 05 DW_LNS_set_column (16) +0x000005c2: 06 DW_LNS_negate_stmt +0x000005c3: 01 DW_LNS_copy + 0x000000000000035c 79 16 1 0 0 is_stmt + + +0x000005c4: 00 DW_LNE_set_address (0x0000000000000364) +0x000005cb: 05 DW_LNS_set_column (14) +0x000005cd: 06 DW_LNS_negate_stmt +0x000005ce: 01 DW_LNS_copy + 0x0000000000000364 79 14 1 0 0 + + +0x000005cf: 00 DW_LNE_set_address (0x0000000000000373) +0x000005d6: 05 DW_LNS_set_column (25) +0x000005d8: 01 DW_LNS_copy + 0x0000000000000373 79 25 1 0 0 + + +0x000005d9: 00 DW_LNE_set_address (0x000000000000037a) +0x000005e0: 03 DW_LNS_advance_line (81) +0x000005e2: 05 DW_LNS_set_column (11) +0x000005e4: 06 DW_LNS_negate_stmt +0x000005e5: 01 DW_LNS_copy + 0x000000000000037a 81 11 1 0 0 is_stmt + + +0x000005e6: 00 DW_LNE_set_address (0x000000000000037f) +0x000005ed: 03 DW_LNS_advance_line (66) +0x000005ef: 05 DW_LNS_set_column (16) +0x000005f1: 01 DW_LNS_copy + 0x000000000000037f 66 16 1 0 0 is_stmt + + +0x000005f2: 00 DW_LNE_set_address (0x0000000000000386) +0x000005f9: 03 DW_LNS_advance_line (74) +0x000005fb: 05 DW_LNS_set_column (22) +0x000005fd: 01 DW_LNS_copy + 0x0000000000000386 74 22 1 0 0 is_stmt + + +0x000005fe: 00 DW_LNE_set_address (0x0000000000000394) +0x00000605: 03 DW_LNS_advance_line (67) +0x00000607: 05 DW_LNS_set_column (13) +0x00000609: 01 DW_LNS_copy + 0x0000000000000394 67 13 1 0 0 is_stmt + + +0x0000060a: 00 DW_LNE_set_address (0x0000000000000398) +0x00000611: 03 DW_LNS_advance_line (68) +0x00000613: 01 DW_LNS_copy + 0x0000000000000398 68 13 1 0 0 is_stmt + + +0x00000614: 00 DW_LNE_set_address (0x000000000000039c) +0x0000061b: 03 DW_LNS_advance_line (69) +0x0000061d: 01 DW_LNS_copy + 0x000000000000039c 69 13 1 0 0 is_stmt + + +0x0000061e: 00 DW_LNE_set_address (0x00000000000003a0) +0x00000625: 03 DW_LNS_advance_line (70) +0x00000627: 01 DW_LNS_copy + 0x00000000000003a0 70 13 1 0 0 is_stmt + + +0x00000628: 00 DW_LNE_set_address (0x00000000000003a3) +0x0000062f: 00 DW_LNE_end_sequence + 0x00000000000003a3 70 13 1 0 0 is_stmt end_sequence + +0x00000632: 00 DW_LNE_set_address (0x00000000000003a5) +0x00000639: 03 DW_LNS_advance_line (152) +0x0000063c: 01 DW_LNS_copy + 0x00000000000003a5 152 0 1 0 0 is_stmt + + +0x0000063d: 00 DW_LNE_set_address (0x00000000000003c3) +0x00000644: 03 DW_LNS_advance_line (153) +0x00000646: 05 DW_LNS_set_column (17) +0x00000648: 0a DW_LNS_set_prologue_end +0x00000649: 01 DW_LNS_copy + 0x00000000000003c3 153 17 1 0 0 is_stmt prologue_end + + +0x0000064a: 00 DW_LNE_set_address (0x00000000000003c8) +0x00000651: 05 DW_LNS_set_column (12) +0x00000653: 06 DW_LNS_negate_stmt +0x00000654: 01 DW_LNS_copy + 0x00000000000003c8 153 12 1 0 0 + + +0x00000655: 00 DW_LNE_set_address (0x00000000000003ce) +0x0000065c: 05 DW_LNS_set_column (28) +0x0000065e: 01 DW_LNS_copy + 0x00000000000003ce 153 28 1 0 0 + + +0x0000065f: 00 DW_LNE_set_address (0x00000000000003d3) +0x00000666: 05 DW_LNS_set_column (23) +0x00000668: 01 DW_LNS_copy + 0x00000000000003d3 153 23 1 0 0 + + +0x00000669: 00 DW_LNE_set_address (0x00000000000003d9) +0x00000670: 03 DW_LNS_advance_line (155) +0x00000672: 05 DW_LNS_set_column (10) +0x00000674: 06 DW_LNS_negate_stmt +0x00000675: 01 DW_LNS_copy + 0x00000000000003d9 155 10 1 0 0 is_stmt + + +0x00000676: 00 DW_LNE_set_address (0x00000000000003da) +0x0000067d: 05 DW_LNS_set_column (8) +0x0000067f: 06 DW_LNS_negate_stmt +0x00000680: 01 DW_LNS_copy + 0x00000000000003da 155 8 1 0 0 + + +0x00000681: 00 DW_LNE_set_address (0x00000000000003dd) +0x00000688: 03 DW_LNS_advance_line (156) +0x0000068a: 05 DW_LNS_set_column (7) +0x0000068c: 06 DW_LNS_negate_stmt +0x0000068d: 01 DW_LNS_copy + 0x00000000000003dd 156 7 1 0 0 is_stmt + + +0x0000068e: 00 DW_LNE_set_address (0x00000000000003ec) +0x00000695: 03 DW_LNS_advance_line (94) +0x00000697: 05 DW_LNS_set_column (18) +0x00000699: 01 DW_LNS_copy + 0x00000000000003ec 94 18 1 0 0 is_stmt + + +0x0000069a: 00 DW_LNE_set_address (0x00000000000003f1) +0x000006a1: 05 DW_LNS_set_column (4) +0x000006a3: 06 DW_LNS_negate_stmt +0x000006a4: 01 DW_LNS_copy + 0x00000000000003f1 94 4 1 0 0 + + +0x000006a5: 00 DW_LNE_set_address (0x0000000000000406) +0x000006ac: 03 DW_LNS_advance_line (95) +0x000006ae: 05 DW_LNS_set_column (29) +0x000006b0: 06 DW_LNS_negate_stmt +0x000006b1: 01 DW_LNS_copy + 0x0000000000000406 95 29 1 0 0 is_stmt + + +0x000006b2: 00 DW_LNE_set_address (0x0000000000000408) +0x000006b9: 03 DW_LNS_advance_line (98) +0x000006bb: 05 DW_LNS_set_column (19) +0x000006bd: 01 DW_LNS_copy + 0x0000000000000408 98 19 1 0 0 is_stmt + + +0x000006be: 00 DW_LNE_set_address (0x000000000000040f) +0x000006c5: 03 DW_LNS_advance_line (97) +0x000006c7: 05 DW_LNS_set_column (16) +0x000006c9: 01 DW_LNS_copy + 0x000000000000040f 97 16 1 0 0 is_stmt + + +0x000006ca: 00 DW_LNE_set_address (0x0000000000000416) +0x000006d1: 03 DW_LNS_advance_line (96) +0x000006d3: 01 DW_LNS_copy + 0x0000000000000416 96 16 1 0 0 is_stmt + + +0x000006d4: 00 DW_LNE_set_address (0x0000000000000421) +0x000006db: 03 DW_LNS_advance_line (94) +0x000006dd: 05 DW_LNS_set_column (28) +0x000006df: 01 DW_LNS_copy + 0x0000000000000421 94 28 1 0 0 is_stmt + + +0x000006e0: 00 DW_LNE_set_address (0x0000000000000426) +0x000006e7: 05 DW_LNS_set_column (18) +0x000006e9: 06 DW_LNS_negate_stmt +0x000006ea: 01 DW_LNS_copy + 0x0000000000000426 94 18 1 0 0 + + +0x000006eb: 00 DW_LNE_set_address (0x000000000000042b) +0x000006f2: 05 DW_LNS_set_column (4) +0x000006f4: 01 DW_LNS_copy + 0x000000000000042b 94 4 1 0 0 + + +0x000006f5: 00 DW_LNE_set_address (0x0000000000000433) +0x000006fc: 03 DW_LNS_advance_line (102) +0x000006fe: 05 DW_LNS_set_column (27) +0x00000700: 06 DW_LNS_negate_stmt +0x00000701: 01 DW_LNS_copy + 0x0000000000000433 102 27 1 0 0 is_stmt + + +0x00000702: 00 DW_LNE_set_address (0x0000000000000438) +0x00000709: 05 DW_LNS_set_column (18) +0x0000070b: 06 DW_LNS_negate_stmt +0x0000070c: 01 DW_LNS_copy + 0x0000000000000438 102 18 1 0 0 + + +0x0000070d: 00 DW_LNE_set_address (0x000000000000043e) +0x00000714: 03 DW_LNS_advance_line (103) +0x00000716: 06 DW_LNS_negate_stmt +0x00000717: 01 DW_LNS_copy + 0x000000000000043e 103 18 1 0 0 is_stmt + + +0x00000718: 00 DW_LNE_set_address (0x000000000000044c) +0x0000071f: 03 DW_LNS_advance_line (105) +0x00000721: 01 DW_LNS_copy + 0x000000000000044c 105 18 1 0 0 is_stmt + + +0x00000722: 00 DW_LNE_set_address (0x0000000000000451) +0x00000729: 05 DW_LNS_set_column (4) +0x0000072b: 06 DW_LNS_negate_stmt +0x0000072c: 01 DW_LNS_copy + 0x0000000000000451 105 4 1 0 0 + + +0x0000072d: 00 DW_LNE_set_address (0x0000000000000455) +0x00000734: 03 DW_LNS_advance_line (106) +0x00000736: 05 DW_LNS_set_column (7) +0x00000738: 06 DW_LNS_negate_stmt +0x00000739: 01 DW_LNS_copy + 0x0000000000000455 106 7 1 0 0 is_stmt + + +0x0000073a: 00 DW_LNE_set_address (0x000000000000045d) +0x00000741: 05 DW_LNS_set_column (16) +0x00000743: 06 DW_LNS_negate_stmt +0x00000744: 01 DW_LNS_copy + 0x000000000000045d 106 16 1 0 0 + + +0x00000745: 00 DW_LNE_set_address (0x0000000000000462) +0x0000074c: 03 DW_LNS_advance_line (105) +0x0000074e: 05 DW_LNS_set_column (24) +0x00000750: 06 DW_LNS_negate_stmt +0x00000751: 01 DW_LNS_copy + 0x0000000000000462 105 24 1 0 0 is_stmt + + +0x00000752: 00 DW_LNE_set_address (0x0000000000000467) +0x00000759: 05 DW_LNS_set_column (18) +0x0000075b: 06 DW_LNS_negate_stmt +0x0000075c: 01 DW_LNS_copy + 0x0000000000000467 105 18 1 0 0 + + +0x0000075d: 00 DW_LNE_set_address (0x000000000000048d) +0x00000764: 03 DW_LNS_advance_line (112) +0x00000766: 05 DW_LNS_set_column (13) +0x00000768: 06 DW_LNS_negate_stmt +0x00000769: 01 DW_LNS_copy + 0x000000000000048d 112 13 1 0 0 is_stmt + + +0x0000076a: 00 DW_LNE_set_address (0x000000000000048f) +0x00000771: 05 DW_LNS_set_column (26) +0x00000773: 06 DW_LNS_negate_stmt +0x00000774: 01 DW_LNS_copy + 0x000000000000048f 112 26 1 0 0 + + +0x00000775: 00 DW_LNE_set_address (0x000000000000049c) +0x0000077c: 05 DW_LNS_set_column (35) +0x0000077e: 01 DW_LNS_copy + 0x000000000000049c 112 35 1 0 0 + + +0x0000077f: 00 DW_LNE_set_address (0x000000000000049d) +0x00000786: 05 DW_LNS_set_column (13) +0x00000788: 01 DW_LNS_copy + 0x000000000000049d 112 13 1 0 0 + + +0x00000789: 00 DW_LNE_set_address (0x00000000000004ab) +0x00000790: 03 DW_LNS_advance_line (111) +0x00000792: 05 DW_LNS_set_column (30) +0x00000794: 06 DW_LNS_negate_stmt +0x00000795: 01 DW_LNS_copy + 0x00000000000004ab 111 30 1 0 0 is_stmt + + +0x00000796: 00 DW_LNE_set_address (0x00000000000004b0) +0x0000079d: 05 DW_LNS_set_column (24) +0x0000079f: 06 DW_LNS_negate_stmt +0x000007a0: 01 DW_LNS_copy + 0x00000000000004b0 111 24 1 0 0 + + +0x000007a1: 00 DW_LNE_set_address (0x00000000000004b5) +0x000007a8: 05 DW_LNS_set_column (10) +0x000007aa: 01 DW_LNS_copy + 0x00000000000004b5 111 10 1 0 0 + + +0x000007ab: 00 DW_LNE_set_address (0x00000000000004ba) +0x000007b2: 03 DW_LNS_advance_line (113) +0x000007b4: 06 DW_LNS_negate_stmt +0x000007b5: 01 DW_LNS_copy + 0x00000000000004ba 113 10 1 0 0 is_stmt + + +0x000007b6: 00 DW_LNE_set_address (0x00000000000004bf) +0x000007bd: 03 DW_LNS_advance_line (118) +0x000007bf: 05 DW_LNS_set_column (16) +0x000007c1: 01 DW_LNS_copy + 0x00000000000004bf 118 16 1 0 0 is_stmt + + +0x000007c2: 00 DW_LNE_set_address (0x00000000000004c4) +0x000007c9: 05 DW_LNS_set_column (7) +0x000007cb: 06 DW_LNS_negate_stmt +0x000007cc: 01 DW_LNS_copy + 0x00000000000004c4 118 7 1 0 0 + + +0x000007cd: 00 DW_LNE_set_address (0x00000000000004c8) +0x000007d4: 03 DW_LNS_advance_line (119) +0x000007d6: 05 DW_LNS_set_column (10) +0x000007d8: 06 DW_LNS_negate_stmt +0x000007d9: 01 DW_LNS_copy + 0x00000000000004c8 119 10 1 0 0 is_stmt + + +0x000007da: 00 DW_LNE_set_address (0x00000000000004ca) +0x000007e1: 05 DW_LNS_set_column (18) +0x000007e3: 06 DW_LNS_negate_stmt +0x000007e4: 01 DW_LNS_copy + 0x00000000000004ca 119 18 1 0 0 + + +0x000007e5: 00 DW_LNE_set_address (0x00000000000004d3) +0x000007ec: 05 DW_LNS_set_column (10) +0x000007ee: 01 DW_LNS_copy + 0x00000000000004d3 119 10 1 0 0 + + +0x000007ef: 00 DW_LNE_set_address (0x00000000000004d5) +0x000007f6: 05 DW_LNS_set_column (23) +0x000007f8: 01 DW_LNS_copy + 0x00000000000004d5 119 23 1 0 0 + + +0x000007f9: 00 DW_LNE_set_address (0x00000000000004da) +0x00000800: 03 DW_LNS_advance_line (118) +0x00000802: 05 DW_LNS_set_column (16) +0x00000804: 06 DW_LNS_negate_stmt +0x00000805: 01 DW_LNS_copy + 0x00000000000004da 118 16 1 0 0 is_stmt + + +0x00000806: 00 DW_LNE_set_address (0x00000000000004e5) +0x0000080d: 05 DW_LNS_set_column (7) +0x0000080f: 06 DW_LNS_negate_stmt +0x00000810: 01 DW_LNS_copy + 0x00000000000004e5 118 7 1 0 0 + + +0x00000811: 00 DW_LNE_set_address (0x00000000000004eb) +0x00000818: 03 DW_LNS_advance_line (122) +0x0000081a: 05 DW_LNS_set_column (16) +0x0000081c: 06 DW_LNS_negate_stmt +0x0000081d: 01 DW_LNS_copy + 0x00000000000004eb 122 16 1 0 0 is_stmt + + +0x0000081e: 00 DW_LNE_set_address (0x00000000000004ff) +0x00000825: 03 DW_LNS_advance_line (125) +0x00000827: 05 DW_LNS_set_column (22) +0x00000829: 01 DW_LNS_copy + 0x00000000000004ff 125 22 1 0 0 is_stmt + + +0x0000082a: 00 DW_LNE_set_address (0x0000000000000508) +0x00000831: 03 DW_LNS_advance_line (126) +0x00000833: 05 DW_LNS_set_column (27) +0x00000835: 01 DW_LNS_copy + 0x0000000000000508 126 27 1 0 0 is_stmt + + +0x00000836: 00 DW_LNE_set_address (0x000000000000050d) +0x0000083d: 05 DW_LNS_set_column (13) +0x0000083f: 06 DW_LNS_negate_stmt +0x00000840: 01 DW_LNS_copy + 0x000000000000050d 126 13 1 0 0 + + +0x00000841: 00 DW_LNE_set_address (0x0000000000000511) +0x00000848: 03 DW_LNS_advance_line (127) +0x0000084a: 05 DW_LNS_set_column (16) +0x0000084c: 06 DW_LNS_negate_stmt +0x0000084d: 01 DW_LNS_copy + 0x0000000000000511 127 16 1 0 0 is_stmt + + +0x0000084e: 00 DW_LNE_set_address (0x0000000000000519) +0x00000855: 05 DW_LNS_set_column (27) +0x00000857: 06 DW_LNS_negate_stmt +0x00000858: 01 DW_LNS_copy + 0x0000000000000519 127 27 1 0 0 + + +0x00000859: 00 DW_LNE_set_address (0x000000000000051b) +0x00000860: 05 DW_LNS_set_column (35) +0x00000862: 01 DW_LNS_copy + 0x000000000000051b 127 35 1 0 0 + + +0x00000863: 00 DW_LNE_set_address (0x0000000000000524) +0x0000086a: 05 DW_LNS_set_column (27) +0x0000086c: 01 DW_LNS_copy + 0x0000000000000524 127 27 1 0 0 + + +0x0000086d: 00 DW_LNE_set_address (0x0000000000000529) +0x00000874: 05 DW_LNS_set_column (25) +0x00000876: 01 DW_LNS_copy + 0x0000000000000529 127 25 1 0 0 + + +0x00000877: 00 DW_LNE_set_address (0x000000000000052c) +0x0000087e: 03 DW_LNS_advance_line (126) +0x00000880: 05 DW_LNS_set_column (27) +0x00000882: 06 DW_LNS_negate_stmt +0x00000883: 01 DW_LNS_copy + 0x000000000000052c 126 27 1 0 0 is_stmt + + +0x00000884: 00 DW_LNE_set_address (0x0000000000000531) +0x0000088b: 05 DW_LNS_set_column (13) +0x0000088d: 06 DW_LNS_negate_stmt +0x0000088e: 01 DW_LNS_copy + 0x0000000000000531 126 13 1 0 0 + + +0x0000088f: 00 DW_LNE_set_address (0x0000000000000539) +0x00000896: 03 DW_LNS_advance_line (128) +0x00000898: 06 DW_LNS_negate_stmt +0x00000899: 01 DW_LNS_copy + 0x0000000000000539 128 13 1 0 0 is_stmt + + +0x0000089a: 00 DW_LNE_set_address (0x0000000000000541) +0x000008a1: 05 DW_LNS_set_column (22) +0x000008a3: 06 DW_LNS_negate_stmt +0x000008a4: 01 DW_LNS_copy + 0x0000000000000541 128 22 1 0 0 + + +0x000008a5: 00 DW_LNE_set_address (0x0000000000000546) +0x000008ac: 03 DW_LNS_advance_line (130) +0x000008ae: 05 DW_LNS_set_column (16) +0x000008b0: 06 DW_LNS_negate_stmt +0x000008b1: 01 DW_LNS_copy + 0x0000000000000546 130 16 1 0 0 is_stmt + + +0x000008b2: 00 DW_LNE_set_address (0x000000000000054e) +0x000008b9: 05 DW_LNS_set_column (14) +0x000008bb: 06 DW_LNS_negate_stmt +0x000008bc: 01 DW_LNS_copy + 0x000000000000054e 130 14 1 0 0 + + +0x000008bd: 00 DW_LNE_set_address (0x000000000000055f) +0x000008c4: 05 DW_LNS_set_column (25) +0x000008c6: 01 DW_LNS_copy + 0x000000000000055f 130 25 1 0 0 + + +0x000008c7: 00 DW_LNE_set_address (0x0000000000000564) +0x000008ce: 05 DW_LNS_set_column (14) +0x000008d0: 01 DW_LNS_copy + 0x0000000000000564 130 14 1 0 0 + + +0x000008d1: 00 DW_LNE_set_address (0x0000000000000566) +0x000008d8: 03 DW_LNS_advance_line (133) +0x000008da: 05 DW_LNS_set_column (11) +0x000008dc: 06 DW_LNS_negate_stmt +0x000008dd: 01 DW_LNS_copy + 0x0000000000000566 133 11 1 0 0 is_stmt + + +0x000008de: 00 DW_LNE_set_address (0x000000000000056b) +0x000008e5: 03 DW_LNS_advance_line (122) +0x000008e7: 05 DW_LNS_set_column (16) +0x000008e9: 01 DW_LNS_copy + 0x000000000000056b 122 16 1 0 0 is_stmt + + +0x000008ea: 00 DW_LNE_set_address (0x0000000000000570) +0x000008f1: 05 DW_LNS_set_column (14) +0x000008f3: 06 DW_LNS_negate_stmt +0x000008f4: 01 DW_LNS_copy + 0x0000000000000570 122 14 1 0 0 + + +0x000008f5: 00 DW_LNE_set_address (0x0000000000000575) +0x000008fc: 03 DW_LNS_advance_line (130) +0x000008fe: 06 DW_LNS_negate_stmt +0x000008ff: 01 DW_LNS_copy + 0x0000000000000575 130 14 1 0 0 is_stmt + + +0x00000900: 00 DW_LNE_set_address (0x0000000000000576) +0x00000907: 03 DW_LNS_advance_line (110) +0x00000909: 05 DW_LNS_set_column (11) +0x0000090b: 01 DW_LNS_copy + 0x0000000000000576 110 11 1 0 0 is_stmt + + +0x0000090c: 00 DW_LNE_set_address (0x0000000000000584) +0x00000913: 03 DW_LNS_advance_line (113) +0x00000915: 05 DW_LNS_set_column (10) +0x00000917: 01 DW_LNS_copy + 0x0000000000000584 113 10 1 0 0 is_stmt + + +0x00000918: 00 DW_LNE_set_address (0x0000000000000589) +0x0000091f: 03 DW_LNS_advance_line (118) +0x00000921: 05 DW_LNS_set_column (16) +0x00000923: 01 DW_LNS_copy + 0x0000000000000589 118 16 1 0 0 is_stmt + + +0x00000924: 00 DW_LNE_set_address (0x000000000000058e) +0x0000092b: 05 DW_LNS_set_column (7) +0x0000092d: 06 DW_LNS_negate_stmt +0x0000092e: 01 DW_LNS_copy + 0x000000000000058e 118 7 1 0 0 + + +0x0000092f: 00 DW_LNE_set_address (0x0000000000000592) +0x00000936: 03 DW_LNS_advance_line (119) +0x00000938: 05 DW_LNS_set_column (10) +0x0000093a: 06 DW_LNS_negate_stmt +0x0000093b: 01 DW_LNS_copy + 0x0000000000000592 119 10 1 0 0 is_stmt + + +0x0000093c: 00 DW_LNE_set_address (0x0000000000000594) +0x00000943: 05 DW_LNS_set_column (18) +0x00000945: 06 DW_LNS_negate_stmt +0x00000946: 01 DW_LNS_copy + 0x0000000000000594 119 18 1 0 0 + + +0x00000947: 00 DW_LNE_set_address (0x000000000000059d) +0x0000094e: 05 DW_LNS_set_column (10) +0x00000950: 01 DW_LNS_copy + 0x000000000000059d 119 10 1 0 0 + + +0x00000951: 00 DW_LNE_set_address (0x000000000000059f) +0x00000958: 05 DW_LNS_set_column (23) +0x0000095a: 01 DW_LNS_copy + 0x000000000000059f 119 23 1 0 0 + + +0x0000095b: 00 DW_LNE_set_address (0x00000000000005a4) +0x00000962: 03 DW_LNS_advance_line (118) +0x00000964: 05 DW_LNS_set_column (16) +0x00000966: 06 DW_LNS_negate_stmt +0x00000967: 01 DW_LNS_copy + 0x00000000000005a4 118 16 1 0 0 is_stmt + + +0x00000968: 00 DW_LNE_set_address (0x00000000000005af) +0x0000096f: 05 DW_LNS_set_column (7) +0x00000971: 06 DW_LNS_negate_stmt +0x00000972: 01 DW_LNS_copy + 0x00000000000005af 118 7 1 0 0 + + +0x00000973: 00 DW_LNE_set_address (0x00000000000005b5) +0x0000097a: 03 DW_LNS_advance_line (122) +0x0000097c: 05 DW_LNS_set_column (16) +0x0000097e: 06 DW_LNS_negate_stmt +0x0000097f: 01 DW_LNS_copy + 0x00000000000005b5 122 16 1 0 0 is_stmt + + +0x00000980: 00 DW_LNE_set_address (0x00000000000005ba) +0x00000987: 05 DW_LNS_set_column (14) +0x00000989: 06 DW_LNS_negate_stmt +0x0000098a: 01 DW_LNS_copy + 0x00000000000005ba 122 14 1 0 0 + + +0x0000098b: 00 DW_LNE_set_address (0x00000000000005c3) +0x00000992: 03 DW_LNS_advance_line (125) +0x00000994: 05 DW_LNS_set_column (22) +0x00000996: 06 DW_LNS_negate_stmt +0x00000997: 01 DW_LNS_copy + 0x00000000000005c3 125 22 1 0 0 is_stmt + + +0x00000998: 00 DW_LNE_set_address (0x00000000000005d2) +0x0000099f: 03 DW_LNS_advance_line (126) +0x000009a1: 05 DW_LNS_set_column (27) +0x000009a3: 01 DW_LNS_copy + 0x00000000000005d2 126 27 1 0 0 is_stmt + + +0x000009a4: 00 DW_LNE_set_address (0x00000000000005d7) +0x000009ab: 05 DW_LNS_set_column (13) +0x000009ad: 06 DW_LNS_negate_stmt +0x000009ae: 01 DW_LNS_copy + 0x00000000000005d7 126 13 1 0 0 + + +0x000009af: 00 DW_LNE_set_address (0x00000000000005db) +0x000009b6: 03 DW_LNS_advance_line (127) +0x000009b8: 05 DW_LNS_set_column (16) +0x000009ba: 06 DW_LNS_negate_stmt +0x000009bb: 01 DW_LNS_copy + 0x00000000000005db 127 16 1 0 0 is_stmt + + +0x000009bc: 00 DW_LNE_set_address (0x00000000000005e3) +0x000009c3: 05 DW_LNS_set_column (27) +0x000009c5: 06 DW_LNS_negate_stmt +0x000009c6: 01 DW_LNS_copy + 0x00000000000005e3 127 27 1 0 0 + + +0x000009c7: 00 DW_LNE_set_address (0x00000000000005e5) +0x000009ce: 05 DW_LNS_set_column (35) +0x000009d0: 01 DW_LNS_copy + 0x00000000000005e5 127 35 1 0 0 + + +0x000009d1: 00 DW_LNE_set_address (0x00000000000005ee) +0x000009d8: 05 DW_LNS_set_column (27) +0x000009da: 01 DW_LNS_copy + 0x00000000000005ee 127 27 1 0 0 + + +0x000009db: 00 DW_LNE_set_address (0x00000000000005f3) +0x000009e2: 05 DW_LNS_set_column (25) +0x000009e4: 01 DW_LNS_copy + 0x00000000000005f3 127 25 1 0 0 + + +0x000009e5: 00 DW_LNE_set_address (0x00000000000005f6) +0x000009ec: 03 DW_LNS_advance_line (126) +0x000009ee: 05 DW_LNS_set_column (27) +0x000009f0: 06 DW_LNS_negate_stmt +0x000009f1: 01 DW_LNS_copy + 0x00000000000005f6 126 27 1 0 0 is_stmt + + +0x000009f2: 00 DW_LNE_set_address (0x00000000000005fb) +0x000009f9: 05 DW_LNS_set_column (13) +0x000009fb: 06 DW_LNS_negate_stmt +0x000009fc: 01 DW_LNS_copy + 0x00000000000005fb 126 13 1 0 0 + + +0x000009fd: 00 DW_LNE_set_address (0x0000000000000603) +0x00000a04: 03 DW_LNS_advance_line (128) +0x00000a06: 06 DW_LNS_negate_stmt +0x00000a07: 01 DW_LNS_copy + 0x0000000000000603 128 13 1 0 0 is_stmt + + +0x00000a08: 00 DW_LNE_set_address (0x000000000000060b) +0x00000a0f: 05 DW_LNS_set_column (22) +0x00000a11: 06 DW_LNS_negate_stmt +0x00000a12: 01 DW_LNS_copy + 0x000000000000060b 128 22 1 0 0 + + +0x00000a13: 00 DW_LNE_set_address (0x0000000000000610) +0x00000a1a: 03 DW_LNS_advance_line (130) +0x00000a1c: 05 DW_LNS_set_column (16) +0x00000a1e: 06 DW_LNS_negate_stmt +0x00000a1f: 01 DW_LNS_copy + 0x0000000000000610 130 16 1 0 0 is_stmt + + +0x00000a20: 00 DW_LNE_set_address (0x0000000000000618) +0x00000a27: 05 DW_LNS_set_column (14) +0x00000a29: 06 DW_LNS_negate_stmt +0x00000a2a: 01 DW_LNS_copy + 0x0000000000000618 130 14 1 0 0 + + +0x00000a2b: 00 DW_LNE_set_address (0x0000000000000629) +0x00000a32: 05 DW_LNS_set_column (25) +0x00000a34: 01 DW_LNS_copy + 0x0000000000000629 130 25 1 0 0 + + +0x00000a35: 00 DW_LNE_set_address (0x000000000000062e) +0x00000a3c: 05 DW_LNS_set_column (14) +0x00000a3e: 01 DW_LNS_copy + 0x000000000000062e 130 14 1 0 0 + + +0x00000a3f: 00 DW_LNE_set_address (0x0000000000000630) +0x00000a46: 03 DW_LNS_advance_line (133) +0x00000a48: 05 DW_LNS_set_column (11) +0x00000a4a: 06 DW_LNS_negate_stmt +0x00000a4b: 01 DW_LNS_copy + 0x0000000000000630 133 11 1 0 0 is_stmt + + +0x00000a4c: 00 DW_LNE_set_address (0x0000000000000635) +0x00000a53: 03 DW_LNS_advance_line (122) +0x00000a55: 05 DW_LNS_set_column (16) +0x00000a57: 01 DW_LNS_copy + 0x0000000000000635 122 16 1 0 0 is_stmt + + +0x00000a58: 00 DW_LNE_set_address (0x000000000000063a) +0x00000a5f: 05 DW_LNS_set_column (14) +0x00000a61: 06 DW_LNS_negate_stmt +0x00000a62: 01 DW_LNS_copy + 0x000000000000063a 122 14 1 0 0 + + +0x00000a63: 00 DW_LNE_set_address (0x000000000000063f) +0x00000a6a: 03 DW_LNS_advance_line (130) +0x00000a6c: 06 DW_LNS_negate_stmt +0x00000a6d: 01 DW_LNS_copy + 0x000000000000063f 130 14 1 0 0 is_stmt + + +0x00000a6e: 00 DW_LNE_set_address (0x0000000000000640) +0x00000a75: 03 DW_LNS_advance_line (110) +0x00000a77: 05 DW_LNS_set_column (11) +0x00000a79: 01 DW_LNS_copy + 0x0000000000000640 110 11 1 0 0 is_stmt + + +0x00000a7a: 00 DW_LNE_set_address (0x0000000000000646) +0x00000a81: 03 DW_LNS_advance_line (138) +0x00000a83: 05 DW_LNS_set_column (4) +0x00000a85: 01 DW_LNS_copy + 0x0000000000000646 138 4 1 0 0 is_stmt + + +0x00000a86: 00 DW_LNE_set_address (0x000000000000064a) +0x00000a8d: 03 DW_LNS_advance_line (139) +0x00000a8f: 01 DW_LNS_copy + 0x000000000000064a 139 4 1 0 0 is_stmt + + +0x00000a90: 00 DW_LNE_set_address (0x0000000000000656) +0x00000a97: 03 DW_LNS_advance_line (141) +0x00000a99: 01 DW_LNS_copy + 0x0000000000000656 141 4 1 0 0 is_stmt + + +0x00000a9a: 00 DW_LNE_set_address (0x0000000000000661) +0x00000aa1: 03 DW_LNS_advance_line (142) +0x00000aa3: 05 DW_LNS_set_column (20) +0x00000aa5: 01 DW_LNS_copy + 0x0000000000000661 142 20 1 0 0 is_stmt + + +0x00000aa6: 00 DW_LNE_set_address (0x0000000000000669) +0x00000aad: 03 DW_LNS_advance_line (146) +0x00000aaf: 01 DW_LNS_copy + 0x0000000000000669 146 20 1 0 0 is_stmt + + +0x00000ab0: 00 DW_LNE_set_address (0x0000000000000670) +0x00000ab7: 03 DW_LNS_advance_line (147) +0x00000ab9: 05 DW_LNS_set_column (7) +0x00000abb: 01 DW_LNS_copy + 0x0000000000000670 147 7 1 0 0 is_stmt + + +0x00000abc: 00 DW_LNE_set_address (0x0000000000000674) +0x00000ac3: 03 DW_LNS_advance_line (143) +0x00000ac5: 05 DW_LNS_set_column (11) +0x00000ac7: 01 DW_LNS_copy + 0x0000000000000674 143 11 1 0 0 is_stmt + + +0x00000ac8: 00 DW_LNE_set_address (0x0000000000000678) +0x00000acf: 05 DW_LNS_set_column (20) +0x00000ad1: 06 DW_LNS_negate_stmt +0x00000ad2: 01 DW_LNS_copy + 0x0000000000000678 143 20 1 0 0 + + +0x00000ad3: 00 DW_LNE_set_address (0x000000000000067d) +0x00000ada: 05 DW_LNS_set_column (11) +0x00000adc: 01 DW_LNS_copy + 0x000000000000067d 143 11 1 0 0 + + +0x00000add: 00 DW_LNE_set_address (0x0000000000000684) +0x00000ae4: 03 DW_LNS_advance_line (141) +0x00000ae6: 05 DW_LNS_set_column (4) +0x00000ae8: 06 DW_LNS_negate_stmt +0x00000ae9: 01 DW_LNS_copy + 0x0000000000000684 141 4 1 0 0 is_stmt + + +0x00000aea: 00 DW_LNE_set_address (0x000000000000068a) +0x00000af1: 03 DW_LNS_advance_line (159) +0x00000af3: 01 DW_LNS_copy + 0x000000000000068a 159 4 1 0 0 is_stmt + + +0x00000af4: 00 DW_LNE_set_address (0x00000000000006a1) +0x00000afb: 03 DW_LNS_advance_line (161) +0x00000afd: 05 DW_LNS_set_column (1) +0x00000aff: 01 DW_LNS_copy + 0x00000000000006a1 161 1 1 0 0 is_stmt + + +0x00000b00: 00 DW_LNE_set_address (0x00000000000006ab) +0x00000b07: 00 DW_LNE_end_sequence + 0x00000000000006ab 161 1 1 0 0 is_stmt end_sequence + + +.debug_str contents: +0x00000000: "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)" +0x00000069: "/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp" +0x000000a9: "/usr/local/google/home/azakai/Dev/2-binaryen" +0x000000d6: "i" +0x000000d8: "int" +0x000000dc: "n" +0x000000de: "next" +0x000000e3: "worker_args" +0x000000ef: "std" +0x000000f3: "decltype(nullptr)" +0x00000105: "nullptr_t" +0x0000010f: "free" +0x00000114: "_ZL8fannkuchi" +0x00000122: "fannkuch" +0x0000012b: "showmax" +0x00000133: "args" +0x00000138: "targs" +0x0000013e: "perm1" +0x00000144: "count" +0x0000014a: "r" +0x0000014c: "maxflips" +0x00000155: "flips" +0x0000015b: "cleanup" +0x00000163: "p0" +0x00000166: "_Z15fannkuch_workerPv" +0x0000017c: "fannkuch_worker" +0x0000018c: "main" +0x00000191: "_arg" +0x00000196: "perm" +0x0000019b: "k" +0x0000019d: "j" +0x0000019f: "tmp" +0x000001a3: "argc" +0x000001a8: "argv" +0x000001ad: "char" + +.debug_ranges contents: +00000000 00000193 000001d1 +00000000 000001fb 00000204 +00000000 0000031e 0000035c +00000000 00000386 0000038f +00000000 +00000028 000004ff 00000546 +00000028 000005c3 00000610 +00000028 +00000040 00000006 000003a3 +00000040 000003a5 000006ab +00000040 +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (import "env" "memory" (memory $mimport$0 256 256)) + (data (i32.const 1024) "Pfannkuchen(%d) = %d.\n\00%d\00Wrong argument.\00") + (import "env" "__indirect_function_table" (table $timport$0 1 funcref)) + (import "env" "malloc" (func $malloc (param i32) (result i32))) + (import "env" "memcpy" (func $memcpy (param i32 i32 i32) (result i32))) + (import "env" "free" (func $free (param i32))) + (import "env" "atoi" (func $atoi (param i32) (result i32))) + (import "env" "puts" (func $puts (param i32) (result i32))) + (import "env" "iprintf" (func $iprintf (param i32 i32) (result i32))) + (import "env" "putchar" (func $putchar (param i32) (result i32))) + (global $global$0 (mut i32) (i32.const 5243952)) + (global $global$1 i32 (i32.const 1066)) + (export "__wasm_call_ctors" (func $__wasm_call_ctors)) + (export "main" (func $main)) + (export "__data_end" (global $global$1)) + (func $__wasm_call_ctors + ) + (func $fannkuch_worker\28void*\29 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + ;; code offset: 0x29 + (local.set $1 + ;; code offset: 0x27 + (i32.const 0) + ) + ;; code offset: 0x39 + (local.set $4 + ;; code offset: 0x37 + (call $malloc + ;; code offset: 0x35 + (local.tee $3 + ;; code offset: 0x34 + (i32.shl + ;; code offset: 0x30 + (local.tee $2 + ;; code offset: 0x2d + (i32.load offset=4 + ;; code offset: 0x2b + (local.get $0) + ) + ) + ;; code offset: 0x32 + (i32.const 2) + ) + ) + ) + ) + ;; code offset: 0x3f + (local.set $5 + ;; code offset: 0x3d + (call $malloc + ;; code offset: 0x3b + (local.get $3) + ) + ) + ;; code offset: 0x45 + (local.set $6 + ;; code offset: 0x43 + (call $malloc + ;; code offset: 0x41 + (local.get $3) + ) + ) + ;; code offset: 0x47 + (block $label$1 + (block $label$2 + (block $label$3 + ;; code offset: 0x52 + (br_if $label$3 + ;; code offset: 0x51 + (i32.le_s + ;; code offset: 0x4d + (local.get $2) + ;; code offset: 0x4f + (i32.const 0) + ) + ) + ;; code offset: 0x54 + (loop $label$4 + ;; code offset: 0x60 + (i32.store + ;; code offset: 0x5d + (i32.add + ;; code offset: 0x56 + (local.get $4) + ;; code offset: 0x5c + (i32.shl + ;; code offset: 0x58 + (local.get $1) + ;; code offset: 0x5a + (i32.const 2) + ) + ) + ;; code offset: 0x5e + (local.get $1) + ) + ;; code offset: 0x6d + (br_if $label$4 + ;; code offset: 0x6c + (i32.ne + ;; code offset: 0x68 + (local.tee $1 + ;; code offset: 0x67 + (i32.add + ;; code offset: 0x63 + (local.get $1) + ;; code offset: 0x65 + (i32.const 1) + ) + ) + ;; code offset: 0x6a + (local.get $2) + ) + ) + ) + ;; code offset: 0x84 + (i32.store + ;; code offset: 0x7c + (i32.add + ;; code offset: 0x70 + (local.get $4) + ;; code offset: 0x7b + (i32.shl + ;; code offset: 0x77 + (local.tee $1 + ;; code offset: 0x74 + (i32.load + ;; code offset: 0x72 + (local.get $0) + ) + ) + ;; code offset: 0x79 + (i32.const 2) + ) + ) + ;; code offset: 0x82 + (local.tee $7 + ;; code offset: 0x81 + (i32.add + ;; code offset: 0x7d + (local.get $2) + ;; code offset: 0x7f + (i32.const -1) + ) + ) + ) + ;; code offset: 0x93 + (i32.store + ;; code offset: 0x8f + (local.tee $8 + ;; code offset: 0x8e + (i32.add + ;; code offset: 0x87 + (local.get $4) + ;; code offset: 0x8d + (i32.shl + ;; code offset: 0x89 + (local.get $7) + ;; code offset: 0x8b + (i32.const 2) + ) + ) + ) + ;; code offset: 0x91 + (local.get $1) + ) + ;; code offset: 0x98 + (local.set $9 + ;; code offset: 0x96 + (i32.const 0) + ) + ;; code offset: 0x9f + (br_if $label$2 + ;; code offset: 0x9e + (i32.le_s + ;; code offset: 0x9a + (local.get $2) + ;; code offset: 0x9c + (i32.const 0) + ) + ) + ;; code offset: 0xa1 + (loop $label$5 + ;; code offset: 0xa3 + (block $label$6 + ;; code offset: 0xaa + (br_if $label$6 + ;; code offset: 0xa9 + (i32.le_s + ;; code offset: 0xa5 + (local.get $2) + ;; code offset: 0xa7 + (i32.const 1) + ) + ) + ;; code offset: 0xac + (loop $label$7 + ;; code offset: 0xbd + (i32.store + ;; code offset: 0xba + (i32.add + ;; code offset: 0xae + (local.get $6) + ;; code offset: 0xb9 + (i32.shl + ;; code offset: 0xb5 + (local.tee $1 + ;; code offset: 0xb4 + (i32.add + ;; code offset: 0xb0 + (local.get $2) + ;; code offset: 0xb2 + (i32.const -1) + ) + ) + ;; code offset: 0xb7 + (i32.const 2) + ) + ) + ;; code offset: 0xbb + (local.get $2) + ) + ;; code offset: 0xc5 + (local.set $0 + ;; code offset: 0xc4 + (i32.gt_s + ;; code offset: 0xc0 + (local.get $2) + ;; code offset: 0xc2 + (i32.const 2) + ) + ) + ;; code offset: 0xc9 + (local.set $2 + ;; code offset: 0xc7 + (local.get $1) + ) + ;; code offset: 0xcd + (br_if $label$7 + ;; code offset: 0xcb + (local.get $0) + ) + ) + ) + ;; code offset: 0xd1 + (block $label$8 + ;; code offset: 0xdb + (br_if $label$8 + ;; code offset: 0xda + (i32.eqz + ;; code offset: 0xd8 + (local.tee $10 + ;; code offset: 0xd5 + (i32.load + ;; code offset: 0xd3 + (local.get $4) + ) + ) + ) + ) + ;; code offset: 0xe5 + (br_if $label$8 + ;; code offset: 0xe4 + (i32.eq + ;; code offset: 0xdf + (i32.load + ;; code offset: 0xdd + (local.get $8) + ) + ;; code offset: 0xe2 + (local.get $7) + ) + ) + ;; code offset: 0xf4 + (local.set $12 + ;; code offset: 0xf1 + (i32.load + ;; code offset: 0xef + (local.tee $11 + ;; code offset: 0xed + (call $memcpy + ;; code offset: 0xe7 + (local.get $5) + ;; code offset: 0xe9 + (local.get $4) + ;; code offset: 0xeb + (local.get $3) + ) + ) + ) + ) + ;; code offset: 0xf8 + (local.set $0 + ;; code offset: 0xf6 + (i32.const 0) + ) + ;; code offset: 0xfa + (loop $label$9 + ;; code offset: 0xfe + (local.set $13 + ;; code offset: 0xfc + (local.get $0) + ) + ;; code offset: 0x100 + (block $label$10 + ;; code offset: 0x107 + (br_if $label$10 + ;; code offset: 0x106 + (i32.lt_s + ;; code offset: 0x102 + (local.get $12) + ;; code offset: 0x104 + (i32.const 3) + ) + ) + ;; code offset: 0x10e + (local.set $1 + ;; code offset: 0x10d + (i32.add + ;; code offset: 0x109 + (local.get $12) + ;; code offset: 0x10b + (i32.const -1) + ) + ) + ;; code offset: 0x112 + (local.set $0 + ;; code offset: 0x110 + (i32.const 1) + ) + ;; code offset: 0x114 + (loop $label$11 + ;; code offset: 0x123 + (local.set $15 + ;; code offset: 0x120 + (i32.load + ;; code offset: 0x11e + (local.tee $14 + ;; code offset: 0x11d + (i32.add + ;; code offset: 0x116 + (local.get $11) + ;; code offset: 0x11c + (i32.shl + ;; code offset: 0x118 + (local.get $0) + ;; code offset: 0x11a + (i32.const 2) + ) + ) + ) + ) + ) + ;; code offset: 0x134 + (i32.store + ;; code offset: 0x125 + (local.get $14) + ;; code offset: 0x131 + (i32.load + ;; code offset: 0x12f + (local.tee $16 + ;; code offset: 0x12e + (i32.add + ;; code offset: 0x127 + (local.get $11) + ;; code offset: 0x12d + (i32.shl + ;; code offset: 0x129 + (local.get $1) + ;; code offset: 0x12b + (i32.const 2) + ) + ) + ) + ) + ) + ;; code offset: 0x13b + (i32.store + ;; code offset: 0x137 + (local.get $16) + ;; code offset: 0x139 + (local.get $15) + ) + ;; code offset: 0x14d + (br_if $label$11 + ;; code offset: 0x14c + (i32.lt_s + ;; code offset: 0x143 + (local.tee $0 + ;; code offset: 0x142 + (i32.add + ;; code offset: 0x13e + (local.get $0) + ;; code offset: 0x140 + (i32.const 1) + ) + ) + ;; code offset: 0x14a + (local.tee $1 + ;; code offset: 0x149 + (i32.add + ;; code offset: 0x145 + (local.get $1) + ;; code offset: 0x147 + (i32.const -1) + ) + ) + ) + ) + ) + ) + ;; code offset: 0x15e + (local.set $1 + ;; code offset: 0x15b + (i32.load + ;; code offset: 0x159 + (local.tee $0 + ;; code offset: 0x158 + (i32.add + ;; code offset: 0x151 + (local.get $11) + ;; code offset: 0x157 + (i32.shl + ;; code offset: 0x153 + (local.get $12) + ;; code offset: 0x155 + (i32.const 2) + ) + ) + ) + ) + ) + ;; code offset: 0x164 + (i32.store + ;; code offset: 0x160 + (local.get $0) + ;; code offset: 0x162 + (local.get $12) + ) + ;; code offset: 0x16c + (local.set $0 + ;; code offset: 0x16b + (i32.add + ;; code offset: 0x167 + (local.get $13) + ;; code offset: 0x169 + (i32.const 1) + ) + ) + ;; code offset: 0x170 + (local.set $12 + ;; code offset: 0x16e + (local.get $1) + ) + ;; code offset: 0x174 + (br_if $label$9 + ;; code offset: 0x172 + (local.get $1) + ) + ) + ;; code offset: 0x181 + (local.set $9 + ;; code offset: 0x180 + (select + ;; code offset: 0x177 + (local.get $9) + ;; code offset: 0x179 + (local.get $0) + ;; code offset: 0x17f + (i32.gt_s + ;; code offset: 0x17b + (local.get $9) + ;; code offset: 0x17d + (local.get $13) + ) + ) + ) + ) + ;; code offset: 0x189 + (br_if $label$1 + ;; code offset: 0x188 + (i32.ge_s + ;; code offset: 0x184 + (local.get $2) + ;; code offset: 0x186 + (local.get $7) + ) + ) + ;; code offset: 0x18b + (loop $label$12 + ;; code offset: 0x18f + (local.set $1 + ;; code offset: 0x18d + (i32.const 0) + ) + ;; code offset: 0x191 + (block $label$13 + ;; code offset: 0x198 + (br_if $label$13 + ;; code offset: 0x197 + (i32.le_s + ;; code offset: 0x193 + (local.get $2) + ;; code offset: 0x195 + (i32.const 0) + ) + ) + ;; code offset: 0x19a + (loop $label$14 + ;; code offset: 0x1b4 + (i32.store + ;; code offset: 0x1a3 + (i32.add + ;; code offset: 0x19c + (local.get $4) + ;; code offset: 0x1a2 + (i32.shl + ;; code offset: 0x19e + (local.get $1) + ;; code offset: 0x1a0 + (i32.const 2) + ) + ) + ;; code offset: 0x1b1 + (i32.load + ;; code offset: 0x1b0 + (i32.add + ;; code offset: 0x1a4 + (local.get $4) + ;; code offset: 0x1af + (i32.shl + ;; code offset: 0x1ab + (local.tee $1 + ;; code offset: 0x1aa + (i32.add + ;; code offset: 0x1a6 + (local.get $1) + ;; code offset: 0x1a8 + (i32.const 1) + ) + ) + ;; code offset: 0x1ad + (i32.const 2) + ) + ) + ) + ) + ;; code offset: 0x1bc + (br_if $label$14 + ;; code offset: 0x1bb + (i32.ne + ;; code offset: 0x1b7 + (local.get $1) + ;; code offset: 0x1b9 + (local.get $2) + ) + ) + ) + ;; code offset: 0x1c1 + (local.set $1 + ;; code offset: 0x1bf + (local.get $2) + ) + ) + ;; code offset: 0x1ce + (i32.store + ;; code offset: 0x1cb + (i32.add + ;; code offset: 0x1c4 + (local.get $4) + ;; code offset: 0x1ca + (i32.shl + ;; code offset: 0x1c6 + (local.get $1) + ;; code offset: 0x1c8 + (i32.const 2) + ) + ) + ;; code offset: 0x1cc + (local.get $10) + ) + ;; code offset: 0x1e5 + (i32.store + ;; code offset: 0x1d9 + (local.tee $1 + ;; code offset: 0x1d8 + (i32.add + ;; code offset: 0x1d1 + (local.get $6) + ;; code offset: 0x1d7 + (i32.shl + ;; code offset: 0x1d3 + (local.get $2) + ;; code offset: 0x1d5 + (i32.const 2) + ) + ) + ) + ;; code offset: 0x1e4 + (i32.add + ;; code offset: 0x1e0 + (local.tee $1 + ;; code offset: 0x1dd + (i32.load + ;; code offset: 0x1db + (local.get $1) + ) + ) + ;; code offset: 0x1e2 + (i32.const -1) + ) + ) + ;; code offset: 0x1ed + (br_if $label$5 + ;; code offset: 0x1ec + (i32.gt_s + ;; code offset: 0x1e8 + (local.get $1) + ;; code offset: 0x1ea + (i32.const 1) + ) + ) + ;; code offset: 0x1f9 + (br_if $label$1 + ;; code offset: 0x1f8 + (i32.eq + ;; code offset: 0x1f4 + (local.tee $2 + ;; code offset: 0x1f3 + (i32.add + ;; code offset: 0x1ef + (local.get $2) + ;; code offset: 0x1f1 + (i32.const 1) + ) + ) + ;; code offset: 0x1f6 + (local.get $7) + ) + ) + ;; code offset: 0x200 + (local.set $10 + ;; code offset: 0x1fd + (i32.load + ;; code offset: 0x1fb + (local.get $4) + ) + ) + ;; code offset: 0x202 + (br $label$12) + ) + ) + ) + ;; code offset: 0x21d + (i32.store + ;; code offset: 0x215 + (i32.add + ;; code offset: 0x209 + (local.get $4) + ;; code offset: 0x214 + (i32.shl + ;; code offset: 0x210 + (local.tee $1 + ;; code offset: 0x20d + (i32.load + ;; code offset: 0x20b + (local.get $0) + ) + ) + ;; code offset: 0x212 + (i32.const 2) + ) + ) + ;; code offset: 0x21b + (local.tee $7 + ;; code offset: 0x21a + (i32.add + ;; code offset: 0x216 + (local.get $2) + ;; code offset: 0x218 + (i32.const -1) + ) + ) + ) + ;; code offset: 0x22c + (i32.store + ;; code offset: 0x228 + (local.tee $8 + ;; code offset: 0x227 + (i32.add + ;; code offset: 0x220 + (local.get $4) + ;; code offset: 0x226 + (i32.shl + ;; code offset: 0x222 + (local.get $7) + ;; code offset: 0x224 + (i32.const 2) + ) + ) + ) + ;; code offset: 0x22a + (local.get $1) + ) + ) + ;; code offset: 0x232 + (local.set $9 + ;; code offset: 0x230 + (i32.const 0) + ) + ;; code offset: 0x234 + (loop $label$15 + ;; code offset: 0x236 + (block $label$16 + ;; code offset: 0x23d + (br_if $label$16 + ;; code offset: 0x23c + (i32.lt_s + ;; code offset: 0x238 + (local.get $2) + ;; code offset: 0x23a + (i32.const 2) + ) + ) + ;; code offset: 0x23f + (loop $label$17 + ;; code offset: 0x250 + (i32.store + ;; code offset: 0x24d + (i32.add + ;; code offset: 0x241 + (local.get $6) + ;; code offset: 0x24c + (i32.shl + ;; code offset: 0x248 + (local.tee $1 + ;; code offset: 0x247 + (i32.add + ;; code offset: 0x243 + (local.get $2) + ;; code offset: 0x245 + (i32.const -1) + ) + ) + ;; code offset: 0x24a + (i32.const 2) + ) + ) + ;; code offset: 0x24e + (local.get $2) + ) + ;; code offset: 0x258 + (local.set $0 + ;; code offset: 0x257 + (i32.gt_s + ;; code offset: 0x253 + (local.get $2) + ;; code offset: 0x255 + (i32.const 2) + ) + ) + ;; code offset: 0x25c + (local.set $2 + ;; code offset: 0x25a + (local.get $1) + ) + ;; code offset: 0x260 + (br_if $label$17 + ;; code offset: 0x25e + (local.get $0) + ) + ) + ) + ;; code offset: 0x264 + (block $label$18 + ;; code offset: 0x26e + (br_if $label$18 + ;; code offset: 0x26d + (i32.eqz + ;; code offset: 0x26b + (local.tee $12 + ;; code offset: 0x268 + (i32.load + ;; code offset: 0x266 + (local.get $4) + ) + ) + ) + ) + ;; code offset: 0x278 + (br_if $label$18 + ;; code offset: 0x277 + (i32.eq + ;; code offset: 0x272 + (i32.load + ;; code offset: 0x270 + (local.get $8) + ) + ;; code offset: 0x275 + (local.get $7) + ) + ) + ;; code offset: 0x27f + (local.set $16 + ;; code offset: 0x27c + (i32.load + ;; code offset: 0x27a + (local.get $5) + ) + ) + ;; code offset: 0x283 + (local.set $0 + ;; code offset: 0x281 + (i32.const 0) + ) + ;; code offset: 0x285 + (loop $label$19 + ;; code offset: 0x289 + (local.set $10 + ;; code offset: 0x287 + (local.get $0) + ) + ;; code offset: 0x28b + (block $label$20 + ;; code offset: 0x292 + (br_if $label$20 + ;; code offset: 0x291 + (i32.lt_s + ;; code offset: 0x28d + (local.get $16) + ;; code offset: 0x28f + (i32.const 3) + ) + ) + ;; code offset: 0x299 + (local.set $1 + ;; code offset: 0x298 + (i32.add + ;; code offset: 0x294 + (local.get $16) + ;; code offset: 0x296 + (i32.const -1) + ) + ) + ;; code offset: 0x29d + (local.set $0 + ;; code offset: 0x29b + (i32.const 1) + ) + ;; code offset: 0x29f + (loop $label$21 + ;; code offset: 0x2ae + (local.set $14 + ;; code offset: 0x2ab + (i32.load + ;; code offset: 0x2a9 + (local.tee $11 + ;; code offset: 0x2a8 + (i32.add + ;; code offset: 0x2a1 + (local.get $5) + ;; code offset: 0x2a7 + (i32.shl + ;; code offset: 0x2a3 + (local.get $0) + ;; code offset: 0x2a5 + (i32.const 2) + ) + ) + ) + ) + ) + ;; code offset: 0x2bf + (i32.store + ;; code offset: 0x2b0 + (local.get $11) + ;; code offset: 0x2bc + (i32.load + ;; code offset: 0x2ba + (local.tee $15 + ;; code offset: 0x2b9 + (i32.add + ;; code offset: 0x2b2 + (local.get $5) + ;; code offset: 0x2b8 + (i32.shl + ;; code offset: 0x2b4 + (local.get $1) + ;; code offset: 0x2b6 + (i32.const 2) + ) + ) + ) + ) + ) + ;; code offset: 0x2c6 + (i32.store + ;; code offset: 0x2c2 + (local.get $15) + ;; code offset: 0x2c4 + (local.get $14) + ) + ;; code offset: 0x2d8 + (br_if $label$21 + ;; code offset: 0x2d7 + (i32.lt_s + ;; code offset: 0x2ce + (local.tee $0 + ;; code offset: 0x2cd + (i32.add + ;; code offset: 0x2c9 + (local.get $0) + ;; code offset: 0x2cb + (i32.const 1) + ) + ) + ;; code offset: 0x2d5 + (local.tee $1 + ;; code offset: 0x2d4 + (i32.add + ;; code offset: 0x2d0 + (local.get $1) + ;; code offset: 0x2d2 + (i32.const -1) + ) + ) + ) + ) + ) + ) + ;; code offset: 0x2e9 + (local.set $1 + ;; code offset: 0x2e6 + (i32.load + ;; code offset: 0x2e4 + (local.tee $0 + ;; code offset: 0x2e3 + (i32.add + ;; code offset: 0x2dc + (local.get $5) + ;; code offset: 0x2e2 + (i32.shl + ;; code offset: 0x2de + (local.get $16) + ;; code offset: 0x2e0 + (i32.const 2) + ) + ) + ) + ) + ) + ;; code offset: 0x2ef + (i32.store + ;; code offset: 0x2eb + (local.get $0) + ;; code offset: 0x2ed + (local.get $16) + ) + ;; code offset: 0x2f7 + (local.set $0 + ;; code offset: 0x2f6 + (i32.add + ;; code offset: 0x2f2 + (local.get $10) + ;; code offset: 0x2f4 + (i32.const 1) + ) + ) + ;; code offset: 0x2fb + (local.set $16 + ;; code offset: 0x2f9 + (local.get $1) + ) + ;; code offset: 0x2ff + (br_if $label$19 + ;; code offset: 0x2fd + (local.get $1) + ) + ) + ;; code offset: 0x30c + (local.set $9 + ;; code offset: 0x30b + (select + ;; code offset: 0x302 + (local.get $9) + ;; code offset: 0x304 + (local.get $0) + ;; code offset: 0x30a + (i32.gt_s + ;; code offset: 0x306 + (local.get $9) + ;; code offset: 0x308 + (local.get $10) + ) + ) + ) + ) + ;; code offset: 0x314 + (br_if $label$1 + ;; code offset: 0x313 + (i32.ge_s + ;; code offset: 0x30f + (local.get $2) + ;; code offset: 0x311 + (local.get $7) + ) + ) + ;; code offset: 0x316 + (loop $label$22 + ;; code offset: 0x31a + (local.set $1 + ;; code offset: 0x318 + (i32.const 0) + ) + ;; code offset: 0x31c + (block $label$23 + ;; code offset: 0x323 + (br_if $label$23 + ;; code offset: 0x322 + (i32.lt_s + ;; code offset: 0x31e + (local.get $2) + ;; code offset: 0x320 + (i32.const 1) + ) + ) + ;; code offset: 0x325 + (loop $label$24 + ;; code offset: 0x33f + (i32.store + ;; code offset: 0x32e + (i32.add + ;; code offset: 0x327 + (local.get $4) + ;; code offset: 0x32d + (i32.shl + ;; code offset: 0x329 + (local.get $1) + ;; code offset: 0x32b + (i32.const 2) + ) + ) + ;; code offset: 0x33c + (i32.load + ;; code offset: 0x33b + (i32.add + ;; code offset: 0x32f + (local.get $4) + ;; code offset: 0x33a + (i32.shl + ;; code offset: 0x336 + (local.tee $1 + ;; code offset: 0x335 + (i32.add + ;; code offset: 0x331 + (local.get $1) + ;; code offset: 0x333 + (i32.const 1) + ) + ) + ;; code offset: 0x338 + (i32.const 2) + ) + ) + ) + ) + ;; code offset: 0x347 + (br_if $label$24 + ;; code offset: 0x346 + (i32.ne + ;; code offset: 0x342 + (local.get $1) + ;; code offset: 0x344 + (local.get $2) + ) + ) + ) + ;; code offset: 0x34c + (local.set $1 + ;; code offset: 0x34a + (local.get $2) + ) + ) + ;; code offset: 0x359 + (i32.store + ;; code offset: 0x356 + (i32.add + ;; code offset: 0x34f + (local.get $4) + ;; code offset: 0x355 + (i32.shl + ;; code offset: 0x351 + (local.get $1) + ;; code offset: 0x353 + (i32.const 2) + ) + ) + ;; code offset: 0x357 + (local.get $12) + ) + ;; code offset: 0x370 + (i32.store + ;; code offset: 0x364 + (local.tee $1 + ;; code offset: 0x363 + (i32.add + ;; code offset: 0x35c + (local.get $6) + ;; code offset: 0x362 + (i32.shl + ;; code offset: 0x35e + (local.get $2) + ;; code offset: 0x360 + (i32.const 2) + ) + ) + ) + ;; code offset: 0x36f + (i32.add + ;; code offset: 0x36b + (local.tee $1 + ;; code offset: 0x368 + (i32.load + ;; code offset: 0x366 + (local.get $1) + ) + ) + ;; code offset: 0x36d + (i32.const -1) + ) + ) + ;; code offset: 0x378 + (br_if $label$15 + ;; code offset: 0x377 + (i32.gt_s + ;; code offset: 0x373 + (local.get $1) + ;; code offset: 0x375 + (i32.const 1) + ) + ) + ;; code offset: 0x384 + (br_if $label$1 + ;; code offset: 0x383 + (i32.eq + ;; code offset: 0x37f + (local.tee $2 + ;; code offset: 0x37e + (i32.add + ;; code offset: 0x37a + (local.get $2) + ;; code offset: 0x37c + (i32.const 1) + ) + ) + ;; code offset: 0x381 + (local.get $7) + ) + ) + ;; code offset: 0x38b + (local.set $12 + ;; code offset: 0x388 + (i32.load + ;; code offset: 0x386 + (local.get $4) + ) + ) + ;; code offset: 0x38d + (br $label$22) + ) + ) + ) + ;; code offset: 0x396 + (call $free + ;; code offset: 0x394 + (local.get $4) + ) + ;; code offset: 0x39a + (call $free + ;; code offset: 0x398 + (local.get $5) + ) + ;; code offset: 0x39e + (call $free + ;; code offset: 0x39c + (local.get $6) + ) + ;; code offset: 0x3a0 + (local.get $9) + ) + (func $main (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + ;; code offset: 0x3bb + (global.set $global$0 + ;; code offset: 0x3b9 + (local.tee $2 + ;; code offset: 0x3b8 + (i32.sub + ;; code offset: 0x3b4 + (global.get $global$0) + ;; code offset: 0x3b6 + (i32.const 32) + ) + ) + ) + ;; code offset: 0x3bd + (block $label$1 + (block $label$2 + (block $label$3 + ;; code offset: 0x3c8 + (br_if $label$3 + ;; code offset: 0x3c7 + (i32.lt_s + ;; code offset: 0x3c3 + (local.get $0) + ;; code offset: 0x3c5 + (i32.const 2) + ) + ) + ;; code offset: 0x3cc + (local.set $3 + ;; code offset: 0x3ca + (i32.const 0) + ) + ;; code offset: 0x3da + (br_if $label$2 + ;; code offset: 0x3d9 + (i32.gt_s + ;; code offset: 0x3d5 + (local.tee $4 + ;; code offset: 0x3d3 + (call $atoi + ;; code offset: 0x3d0 + (i32.load offset=4 + ;; code offset: 0x3ce + (local.get $1) + ) + ) + ) + ;; code offset: 0x3d7 + (i32.const 0) + ) + ) + ) + ;; code offset: 0x3e2 + (drop + ;; code offset: 0x3e0 + (call $puts + ;; code offset: 0x3dd + (i32.const 1050) + ) + ) + ;; code offset: 0x3e5 + (local.set $5 + ;; code offset: 0x3e3 + (i32.const 1) + ) + ;; code offset: 0x3e7 + (br $label$1) + ) + ;; code offset: 0x3ea + (block $label$4 + ;; code offset: 0x3f1 + (br_if $label$4 + ;; code offset: 0x3f0 + (i32.eq + ;; code offset: 0x3ec + (local.get $4) + ;; code offset: 0x3ee + (i32.const 1) + ) + ) + ;; code offset: 0x3f8 + (local.set $6 + ;; code offset: 0x3f7 + (i32.add + ;; code offset: 0x3f3 + (local.get $4) + ;; code offset: 0x3f5 + (i32.const -1) + ) + ) + ;; code offset: 0x3fc + (local.set $1 + ;; code offset: 0x3fa + (i32.const 0) + ) + ;; code offset: 0x400 + (local.set $0 + ;; code offset: 0x3fe + (i32.const 0) + ) + ;; code offset: 0x402 + (loop $label$5 + ;; code offset: 0x40c + (i32.store offset=8 + ;; code offset: 0x408 + (local.tee $3 + ;; code offset: 0x406 + (call $malloc + ;; code offset: 0x404 + (i32.const 12) + ) + ) + ;; code offset: 0x40a + (local.get $1) + ) + ;; code offset: 0x413 + (i32.store offset=4 + ;; code offset: 0x40f + (local.get $3) + ;; code offset: 0x411 + (local.get $4) + ) + ;; code offset: 0x41a + (i32.store + ;; code offset: 0x416 + (local.get $3) + ;; code offset: 0x418 + (local.get $0) + ) + ;; code offset: 0x41f + (local.set $1 + ;; code offset: 0x41d + (local.get $3) + ) + ;; code offset: 0x42b + (br_if $label$5 + ;; code offset: 0x42a + (i32.ne + ;; code offset: 0x426 + (local.tee $0 + ;; code offset: 0x425 + (i32.add + ;; code offset: 0x421 + (local.get $0) + ;; code offset: 0x423 + (i32.const 1) + ) + ) + ;; code offset: 0x428 + (local.get $6) + ) + ) + ) + ) + ;; code offset: 0x431 + (local.set $0 + ;; code offset: 0x42f + (i32.const 0) + ) + ;; code offset: 0x43c + (local.set $1 + ;; code offset: 0x43a + (call $malloc + ;; code offset: 0x438 + (local.tee $6 + ;; code offset: 0x437 + (i32.shl + ;; code offset: 0x433 + (local.get $4) + ;; code offset: 0x435 + (i32.const 2) + ) + ) + ) + ) + ;; code offset: 0x442 + (local.set $5 + ;; code offset: 0x440 + (call $malloc + ;; code offset: 0x43e + (local.get $6) + ) + ) + ;; code offset: 0x444 + (block $label$6 + (block $label$7 + (block $label$8 + (block $label$9 + ;; code offset: 0x451 + (br_if $label$9 + ;; code offset: 0x450 + (i32.le_s + ;; code offset: 0x44c + (local.get $4) + ;; code offset: 0x44e + (i32.const 0) + ) + ) + ;; code offset: 0x453 + (loop $label$10 + ;; code offset: 0x45f + (i32.store + ;; code offset: 0x45c + (i32.add + ;; code offset: 0x455 + (local.get $1) + ;; code offset: 0x45b + (i32.shl + ;; code offset: 0x457 + (local.get $0) + ;; code offset: 0x459 + (i32.const 2) + ) + ) + ;; code offset: 0x45d + (local.get $0) + ) + ;; code offset: 0x46c + (br_if $label$10 + ;; code offset: 0x46b + (i32.ne + ;; code offset: 0x467 + (local.tee $0 + ;; code offset: 0x466 + (i32.add + ;; code offset: 0x462 + (local.get $0) + ;; code offset: 0x464 + (i32.const 1) + ) + ) + ;; code offset: 0x469 + (local.get $4) + ) + ) + ) + ;; code offset: 0x471 + (local.set $7 + ;; code offset: 0x46f + (i32.const 30) + ) + ;; code offset: 0x475 + (local.set $6 + ;; code offset: 0x473 + (local.get $4) + ) + ;; code offset: 0x477 + (br $label$8) + ) + ;; code offset: 0x47c + (local.set $7 + ;; code offset: 0x47a + (i32.const 30) + ) + ;; code offset: 0x480 + (local.set $6 + ;; code offset: 0x47e + (local.get $4) + ) + ;; code offset: 0x482 + (br $label$7) + ) + ;; code offset: 0x485 + (loop $label$11 + ;; code offset: 0x489 + (local.set $0 + ;; code offset: 0x487 + (i32.const 0) + ) + ;; code offset: 0x48b + (loop $label$12 + ;; code offset: 0x49d + (i32.store offset=16 + ;; code offset: 0x48d + (local.get $2) + ;; code offset: 0x49c + (i32.add + ;; code offset: 0x497 + (i32.load + ;; code offset: 0x496 + (i32.add + ;; code offset: 0x48f + (local.get $1) + ;; code offset: 0x495 + (i32.shl + ;; code offset: 0x491 + (local.get $0) + ;; code offset: 0x493 + (i32.const 2) + ) + ) + ) + ;; code offset: 0x49a + (i32.const 1) + ) + ) + ;; code offset: 0x4aa + (drop + ;; code offset: 0x4a8 + (call $iprintf + ;; code offset: 0x4a0 + (i32.const 1047) + ;; code offset: 0x4a7 + (i32.add + ;; code offset: 0x4a3 + (local.get $2) + ;; code offset: 0x4a5 + (i32.const 16) + ) + ) + ) + ;; code offset: 0x4b5 + (br_if $label$12 + ;; code offset: 0x4b4 + (i32.ne + ;; code offset: 0x4b0 + (local.tee $0 + ;; code offset: 0x4af + (i32.add + ;; code offset: 0x4ab + (local.get $0) + ;; code offset: 0x4ad + (i32.const 1) + ) + ) + ;; code offset: 0x4b2 + (local.get $4) + ) + ) + ) + ;; code offset: 0x4bc + (drop + ;; code offset: 0x4ba + (call $putchar + ;; code offset: 0x4b8 + (i32.const 10) + ) + ) + ;; code offset: 0x4bd + (block $label$13 + ;; code offset: 0x4c4 + (br_if $label$13 + ;; code offset: 0x4c3 + (i32.le_s + ;; code offset: 0x4bf + (local.get $6) + ;; code offset: 0x4c1 + (i32.const 1) + ) + ) + ;; code offset: 0x4c6 + (loop $label$14 + ;; code offset: 0x4d7 + (i32.store + ;; code offset: 0x4d4 + (i32.add + ;; code offset: 0x4c8 + (local.get $5) + ;; code offset: 0x4d3 + (i32.shl + ;; code offset: 0x4cf + (local.tee $0 + ;; code offset: 0x4ce + (i32.add + ;; code offset: 0x4ca + (local.get $6) + ;; code offset: 0x4cc + (i32.const -1) + ) + ) + ;; code offset: 0x4d1 + (i32.const 2) + ) + ) + ;; code offset: 0x4d5 + (local.get $6) + ) + ;; code offset: 0x4df + (local.set $8 + ;; code offset: 0x4de + (i32.gt_s + ;; code offset: 0x4da + (local.get $6) + ;; code offset: 0x4dc + (i32.const 2) + ) + ) + ;; code offset: 0x4e3 + (local.set $6 + ;; code offset: 0x4e1 + (local.get $0) + ) + ;; code offset: 0x4e7 + (br_if $label$14 + ;; code offset: 0x4e5 + (local.get $8) + ) + ) + ) + ;; code offset: 0x4f0 + (br_if $label$6 + ;; code offset: 0x4ef + (i32.eq + ;; code offset: 0x4eb + (local.get $6) + ;; code offset: 0x4ed + (local.get $4) + ) + ) + ;; code offset: 0x4f7 + (local.set $7 + ;; code offset: 0x4f6 + (i32.add + ;; code offset: 0x4f2 + (local.get $7) + ;; code offset: 0x4f4 + (i32.const -1) + ) + ) + ;; code offset: 0x4f9 + (loop $label$15 + ;; code offset: 0x4fd + (local.set $0 + ;; code offset: 0x4fb + (i32.const 0) + ) + ;; code offset: 0x504 + (local.set $8 + ;; code offset: 0x501 + (i32.load + ;; code offset: 0x4ff + (local.get $1) + ) + ) + ;; code offset: 0x506 + (block $label$16 + ;; code offset: 0x50d + (br_if $label$16 + ;; code offset: 0x50c + (i32.le_s + ;; code offset: 0x508 + (local.get $6) + ;; code offset: 0x50a + (i32.const 0) + ) + ) + ;; code offset: 0x50f + (loop $label$17 + ;; code offset: 0x529 + (i32.store + ;; code offset: 0x518 + (i32.add + ;; code offset: 0x511 + (local.get $1) + ;; code offset: 0x517 + (i32.shl + ;; code offset: 0x513 + (local.get $0) + ;; code offset: 0x515 + (i32.const 2) + ) + ) + ;; code offset: 0x526 + (i32.load + ;; code offset: 0x525 + (i32.add + ;; code offset: 0x519 + (local.get $1) + ;; code offset: 0x524 + (i32.shl + ;; code offset: 0x520 + (local.tee $0 + ;; code offset: 0x51f + (i32.add + ;; code offset: 0x51b + (local.get $0) + ;; code offset: 0x51d + (i32.const 1) + ) + ) + ;; code offset: 0x522 + (i32.const 2) + ) + ) + ) + ) + ;; code offset: 0x531 + (br_if $label$17 + ;; code offset: 0x530 + (i32.ne + ;; code offset: 0x52c + (local.get $0) + ;; code offset: 0x52e + (local.get $6) + ) + ) + ) + ;; code offset: 0x536 + (local.set $0 + ;; code offset: 0x534 + (local.get $6) + ) + ) + ;; code offset: 0x543 + (i32.store + ;; code offset: 0x540 + (i32.add + ;; code offset: 0x539 + (local.get $1) + ;; code offset: 0x53f + (i32.shl + ;; code offset: 0x53b + (local.get $0) + ;; code offset: 0x53d + (i32.const 2) + ) + ) + ;; code offset: 0x541 + (local.get $8) + ) + ;; code offset: 0x55a + (i32.store + ;; code offset: 0x54e + (local.tee $0 + ;; code offset: 0x54d + (i32.add + ;; code offset: 0x546 + (local.get $5) + ;; code offset: 0x54c + (i32.shl + ;; code offset: 0x548 + (local.get $6) + ;; code offset: 0x54a + (i32.const 2) + ) + ) + ) + ;; code offset: 0x559 + (i32.add + ;; code offset: 0x555 + (local.tee $0 + ;; code offset: 0x552 + (i32.load + ;; code offset: 0x550 + (local.get $0) + ) + ) + ;; code offset: 0x557 + (i32.const -1) + ) + ) + ;; code offset: 0x55d + (block $label$18 + ;; code offset: 0x564 + (br_if $label$18 + ;; code offset: 0x563 + (i32.gt_s + ;; code offset: 0x55f + (local.get $0) + ;; code offset: 0x561 + (i32.const 1) + ) + ) + ;; code offset: 0x570 + (br_if $label$15 + ;; code offset: 0x56f + (i32.ne + ;; code offset: 0x56b + (local.tee $6 + ;; code offset: 0x56a + (i32.add + ;; code offset: 0x566 + (local.get $6) + ;; code offset: 0x568 + (i32.const 1) + ) + ) + ;; code offset: 0x56d + (local.get $4) + ) + ) + ;; code offset: 0x572 + (br $label$6) + ) + ) + ;; code offset: 0x579 + (br_if $label$6 + ;; code offset: 0x578 + (i32.eqz + ;; code offset: 0x576 + (local.get $7) + ) + ) + ;; code offset: 0x57b + (br $label$11) + ) + ) + ;; code offset: 0x580 + (loop $label$19 + ;; code offset: 0x586 + (drop + ;; code offset: 0x584 + (call $putchar + ;; code offset: 0x582 + (i32.const 10) + ) + ) + ;; code offset: 0x587 + (block $label$20 + ;; code offset: 0x58e + (br_if $label$20 + ;; code offset: 0x58d + (i32.le_s + ;; code offset: 0x589 + (local.get $6) + ;; code offset: 0x58b + (i32.const 1) + ) + ) + ;; code offset: 0x590 + (loop $label$21 + ;; code offset: 0x5a1 + (i32.store + ;; code offset: 0x59e + (i32.add + ;; code offset: 0x592 + (local.get $5) + ;; code offset: 0x59d + (i32.shl + ;; code offset: 0x599 + (local.tee $0 + ;; code offset: 0x598 + (i32.add + ;; code offset: 0x594 + (local.get $6) + ;; code offset: 0x596 + (i32.const -1) + ) + ) + ;; code offset: 0x59b + (i32.const 2) + ) + ) + ;; code offset: 0x59f + (local.get $6) + ) + ;; code offset: 0x5a9 + (local.set $8 + ;; code offset: 0x5a8 + (i32.gt_s + ;; code offset: 0x5a4 + (local.get $6) + ;; code offset: 0x5a6 + (i32.const 2) + ) + ) + ;; code offset: 0x5ad + (local.set $6 + ;; code offset: 0x5ab + (local.get $0) + ) + ;; code offset: 0x5b1 + (br_if $label$21 + ;; code offset: 0x5af + (local.get $8) + ) + ) + ) + ;; code offset: 0x5ba + (br_if $label$6 + ;; code offset: 0x5b9 + (i32.eq + ;; code offset: 0x5b5 + (local.get $6) + ;; code offset: 0x5b7 + (local.get $4) + ) + ) + ;; code offset: 0x5c1 + (local.set $7 + ;; code offset: 0x5c0 + (i32.add + ;; code offset: 0x5bc + (local.get $7) + ;; code offset: 0x5be + (i32.const -1) + ) + ) + ;; code offset: 0x5c3 + (loop $label$22 + ;; code offset: 0x5ca + (local.set $8 + ;; code offset: 0x5c7 + (i32.load + ;; code offset: 0x5c5 + (local.get $1) + ) + ) + ;; code offset: 0x5ce + (local.set $0 + ;; code offset: 0x5cc + (i32.const 0) + ) + ;; code offset: 0x5d0 + (block $label$23 + ;; code offset: 0x5d7 + (br_if $label$23 + ;; code offset: 0x5d6 + (i32.lt_s + ;; code offset: 0x5d2 + (local.get $6) + ;; code offset: 0x5d4 + (i32.const 1) + ) + ) + ;; code offset: 0x5d9 + (loop $label$24 + ;; code offset: 0x5f3 + (i32.store + ;; code offset: 0x5e2 + (i32.add + ;; code offset: 0x5db + (local.get $1) + ;; code offset: 0x5e1 + (i32.shl + ;; code offset: 0x5dd + (local.get $0) + ;; code offset: 0x5df + (i32.const 2) + ) + ) + ;; code offset: 0x5f0 + (i32.load + ;; code offset: 0x5ef + (i32.add + ;; code offset: 0x5e3 + (local.get $1) + ;; code offset: 0x5ee + (i32.shl + ;; code offset: 0x5ea + (local.tee $0 + ;; code offset: 0x5e9 + (i32.add + ;; code offset: 0x5e5 + (local.get $0) + ;; code offset: 0x5e7 + (i32.const 1) + ) + ) + ;; code offset: 0x5ec + (i32.const 2) + ) + ) + ) + ) + ;; code offset: 0x5fb + (br_if $label$24 + ;; code offset: 0x5fa + (i32.ne + ;; code offset: 0x5f6 + (local.get $0) + ;; code offset: 0x5f8 + (local.get $6) + ) + ) + ) + ;; code offset: 0x600 + (local.set $0 + ;; code offset: 0x5fe + (local.get $6) + ) + ) + ;; code offset: 0x60d + (i32.store + ;; code offset: 0x60a + (i32.add + ;; code offset: 0x603 + (local.get $1) + ;; code offset: 0x609 + (i32.shl + ;; code offset: 0x605 + (local.get $0) + ;; code offset: 0x607 + (i32.const 2) + ) + ) + ;; code offset: 0x60b + (local.get $8) + ) + ;; code offset: 0x624 + (i32.store + ;; code offset: 0x618 + (local.tee $0 + ;; code offset: 0x617 + (i32.add + ;; code offset: 0x610 + (local.get $5) + ;; code offset: 0x616 + (i32.shl + ;; code offset: 0x612 + (local.get $6) + ;; code offset: 0x614 + (i32.const 2) + ) + ) + ) + ;; code offset: 0x623 + (i32.add + ;; code offset: 0x61f + (local.tee $0 + ;; code offset: 0x61c + (i32.load + ;; code offset: 0x61a + (local.get $0) + ) + ) + ;; code offset: 0x621 + (i32.const -1) + ) + ) + ;; code offset: 0x627 + (block $label$25 + ;; code offset: 0x62e + (br_if $label$25 + ;; code offset: 0x62d + (i32.gt_s + ;; code offset: 0x629 + (local.get $0) + ;; code offset: 0x62b + (i32.const 1) + ) + ) + ;; code offset: 0x63a + (br_if $label$22 + ;; code offset: 0x639 + (i32.ne + ;; code offset: 0x635 + (local.tee $6 + ;; code offset: 0x634 + (i32.add + ;; code offset: 0x630 + (local.get $6) + ;; code offset: 0x632 + (i32.const 1) + ) + ) + ;; code offset: 0x637 + (local.get $4) + ) + ) + ;; code offset: 0x63c + (br $label$6) + ) + ) + ;; code offset: 0x642 + (br_if $label$19 + ;; code offset: 0x640 + (local.get $7) + ) + ) + ) + ;; code offset: 0x648 + (call $free + ;; code offset: 0x646 + (local.get $1) + ) + ;; code offset: 0x64c + (call $free + ;; code offset: 0x64a + (local.get $5) + ) + ;; code offset: 0x650 + (local.set $5 + ;; code offset: 0x64e + (i32.const 0) + ) + ;; code offset: 0x654 + (local.set $0 + ;; code offset: 0x652 + (i32.const 0) + ) + ;; code offset: 0x656 + (block $label$26 + ;; code offset: 0x65b + (br_if $label$26 + ;; code offset: 0x65a + (i32.eqz + ;; code offset: 0x658 + (local.get $3) + ) + ) + ;; code offset: 0x65f + (local.set $0 + ;; code offset: 0x65d + (i32.const 0) + ) + ;; code offset: 0x661 + (loop $label$27 + ;; code offset: 0x667 + (local.set $1 + ;; code offset: 0x665 + (call $fannkuch_worker\28void*\29 + ;; code offset: 0x663 + (local.get $3) + ) + ) + ;; code offset: 0x66e + (local.set $6 + ;; code offset: 0x66b + (i32.load offset=8 + ;; code offset: 0x669 + (local.get $3) + ) + ) + ;; code offset: 0x672 + (call $free + ;; code offset: 0x670 + (local.get $3) + ) + ;; code offset: 0x67e + (local.set $0 + ;; code offset: 0x67d + (select + ;; code offset: 0x674 + (local.get $1) + ;; code offset: 0x676 + (local.get $0) + ;; code offset: 0x67c + (i32.lt_s + ;; code offset: 0x678 + (local.get $0) + ;; code offset: 0x67a + (local.get $1) + ) + ) + ) + ;; code offset: 0x682 + (local.set $3 + ;; code offset: 0x680 + (local.get $6) + ) + ;; code offset: 0x686 + (br_if $label$27 + ;; code offset: 0x684 + (local.get $6) + ) + ) + ) + ;; code offset: 0x68e + (i32.store offset=4 + ;; code offset: 0x68a + (local.get $2) + ;; code offset: 0x68c + (local.get $0) + ) + ;; code offset: 0x695 + (i32.store + ;; code offset: 0x691 + (local.get $2) + ;; code offset: 0x693 + (local.get $4) + ) + ;; code offset: 0x69f + (drop + ;; code offset: 0x69d + (call $iprintf + ;; code offset: 0x698 + (i32.const 1024) + ;; code offset: 0x69b + (local.get $2) + ) + ) + ) + ;; code offset: 0x6a6 + (global.set $global$0 + ;; code offset: 0x6a5 + (i32.add + ;; code offset: 0x6a1 + (local.get $2) + ;; code offset: 0x6a3 + (i32.const 32) + ) + ) + ;; code offset: 0x6a8 + (local.get $5) + ) + ;; custom section ".debug_info", size 851 + ;; custom section ".debug_loc", size 1073 + ;; custom section ".debug_ranges", size 88 + ;; custom section ".debug_abbrev", size 333 + ;; custom section ".debug_line", size 2826 + ;; custom section ".debug_str", size 434 + ;; custom section "producers", size 135 +) diff -Nru binaryen-91/test/passes/fannkuch3_dwarf.passes binaryen-99/test/passes/fannkuch3_dwarf.passes --- binaryen-91/test/passes/fannkuch3_dwarf.passes 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/fannkuch3_dwarf.passes 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +dwarfdump_roundtrip_dwarfdump_g Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/passes/fannkuch3_dwarf.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/passes/fannkuch3_dwarf.wasm differ diff -Nru binaryen-91/test/passes/fannkuch3_manyopts.bin.txt binaryen-99/test/passes/fannkuch3_manyopts.bin.txt --- binaryen-91/test/passes/fannkuch3_manyopts.bin.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/fannkuch3_manyopts.bin.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,6845 +0,0 @@ -DWARF debug info -================ - -Contains section .debug_info (851 bytes) -Contains section .debug_loc (1073 bytes) -Contains section .debug_ranges (88 bytes) -Contains section .debug_abbrev (333 bytes) -Contains section .debug_line (1477 bytes) -Contains section .debug_str (434 bytes) - -.debug_abbrev contents: -Abbrev table for offset: 0x00000000 -[1] DW_TAG_compile_unit DW_CHILDREN_yes - DW_AT_producer DW_FORM_strp - DW_AT_language DW_FORM_data2 - DW_AT_name DW_FORM_strp - DW_AT_stmt_list DW_FORM_sec_offset - DW_AT_comp_dir DW_FORM_strp - DW_AT_low_pc DW_FORM_addr - DW_AT_ranges DW_FORM_sec_offset - -[2] DW_TAG_pointer_type DW_CHILDREN_no - DW_AT_type DW_FORM_ref4 - -[3] DW_TAG_structure_type DW_CHILDREN_yes - DW_AT_calling_convention DW_FORM_data1 - DW_AT_name DW_FORM_strp - DW_AT_byte_size DW_FORM_data1 - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - -[4] DW_TAG_member DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_type DW_FORM_ref4 - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_data_member_location DW_FORM_data1 - -[5] DW_TAG_base_type DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_encoding DW_FORM_data1 - DW_AT_byte_size DW_FORM_data1 - -[6] DW_TAG_namespace DW_CHILDREN_yes - DW_AT_name DW_FORM_strp - -[7] DW_TAG_typedef DW_CHILDREN_no - DW_AT_type DW_FORM_ref4 - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - -[8] DW_TAG_unspecified_type DW_CHILDREN_no - DW_AT_name DW_FORM_strp - -[9] DW_TAG_imported_declaration DW_CHILDREN_no - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_import DW_FORM_ref4 - -[10] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_frame_base DW_FORM_exprloc - DW_AT_GNU_all_call_sites DW_FORM_flag_present - DW_AT_linkage_name DW_FORM_strp - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - -[11] DW_TAG_formal_parameter DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[12] DW_TAG_variable DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[13] DW_TAG_variable DW_CHILDREN_no - DW_AT_location DW_FORM_sec_offset - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[14] DW_TAG_lexical_block DW_CHILDREN_yes - DW_AT_ranges DW_FORM_sec_offset - -[15] DW_TAG_GNU_call_site DW_CHILDREN_no - DW_AT_low_pc DW_FORM_addr - -[16] DW_TAG_GNU_call_site DW_CHILDREN_no - DW_AT_abstract_origin DW_FORM_ref4 - DW_AT_low_pc DW_FORM_addr - -[17] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_declaration DW_FORM_flag_present - DW_AT_external DW_FORM_flag_present - -[18] DW_TAG_formal_parameter DW_CHILDREN_no - DW_AT_type DW_FORM_ref4 - -[19] DW_TAG_pointer_type DW_CHILDREN_no - -[20] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_linkage_name DW_FORM_strp - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_inline DW_FORM_data1 - -[21] DW_TAG_label DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - -[22] DW_TAG_lexical_block DW_CHILDREN_yes - -[23] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_frame_base DW_FORM_exprloc - DW_AT_GNU_all_call_sites DW_FORM_flag_present - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - -[24] DW_TAG_inlined_subroutine DW_CHILDREN_yes - DW_AT_abstract_origin DW_FORM_ref4 - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_call_file DW_FORM_data1 - DW_AT_call_line DW_FORM_data1 - DW_AT_call_column DW_FORM_data1 - -[25] DW_TAG_formal_parameter DW_CHILDREN_no - DW_AT_abstract_origin DW_FORM_ref4 - -[26] DW_TAG_variable DW_CHILDREN_no - DW_AT_location DW_FORM_sec_offset - DW_AT_abstract_origin DW_FORM_ref4 - -[27] DW_TAG_variable DW_CHILDREN_no - DW_AT_abstract_origin DW_FORM_ref4 - -[28] DW_TAG_label DW_CHILDREN_no - DW_AT_abstract_origin DW_FORM_ref4 - DW_AT_low_pc DW_FORM_addr - - -.debug_info contents: -0x00000000: Compile Unit: length = 0x0000034f version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x00000353) - -0x0000000b: DW_TAG_compile_unit [1] * - DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)") - DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000069] = "/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) - DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x000000a9] = "/usr/local/google/home/azakai/Dev/2-binaryen") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) - DW_AT_ranges [DW_FORM_sec_offset] (0x00000040 - [0x00000006, 0x0000039d) - [0x0000039f, 0x000006e1)) - -0x00000026: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x002b => {0x0000002b} "worker_args") - -0x0000002b: DW_TAG_structure_type [3] * - DW_AT_calling_convention [DW_FORM_data1] (DW_CC_pass_by_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e3] = "worker_args") - DW_AT_byte_size [DW_FORM_data1] (0x0c) - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (20) - -0x00000034: DW_TAG_member [4] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (21) - DW_AT_data_member_location [DW_FORM_data1] (0x00) - -0x00000040: DW_TAG_member [4] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (21) - DW_AT_data_member_location [DW_FORM_data1] (0x04) - -0x0000004c: DW_TAG_member [4] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000de] = "next") - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (22) - DW_AT_data_member_location [DW_FORM_data1] (0x08) - -0x00000058: NULL - -0x00000059: DW_TAG_base_type [5] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d8] = "int") - DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) - DW_AT_byte_size [DW_FORM_data1] (0x04) - -0x00000060: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000065: DW_TAG_namespace [6] * - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ef] = "std") - -0x0000006a: DW_TAG_typedef [7] - DW_AT_type [DW_FORM_ref4] (cu + 0x0076 => {0x00000076} "decltype(nullptr)") - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000105] = "nullptr_t") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libcxx/__nullptr") - DW_AT_decl_line [DW_FORM_data1] (57) - -0x00000075: NULL - -0x00000076: DW_TAG_unspecified_type [8] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000f3] = "decltype(nullptr)") - -0x0000007b: DW_TAG_imported_declaration [9] - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libcxx/stddef.h") - DW_AT_decl_line [DW_FORM_data1] (52) - DW_AT_import [DW_FORM_ref4] (cu + 0x006a => {0x0000006a}) - -0x00000082: DW_TAG_subprogram [10] * - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000006) - DW_AT_high_pc [DW_FORM_data4] (0x00000397) - DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x1 +0, DW_OP_stack_value) - DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) - DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x00000166] = "_Z15fannkuch_workerPv") - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000017c] = "fannkuch_worker") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (26) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x0000009e: DW_TAG_formal_parameter [11] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000191] = "_arg") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (26) - DW_AT_type [DW_FORM_ref4] (cu + 0x01a7 => {0x000001a7} "*") - -0x000000a9: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000133] = "args") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (28) - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - -0x000000b4: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x00000000: - [0xffffffff, 0x00000006): - [0x00000000, 0x0000003c): DW_OP_consts +0, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014c] = "maxflips") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000000c3: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x0000001d: - [0xffffffff, 0x00000006): - [0x00000007, 0x0000003c): DW_OP_consts +0, DW_OP_stack_value - [0x00000052, 0x00000057): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x000000ec, 0x000000f5): DW_OP_consts +1, DW_OP_stack_value - [0x00000131, 0x0000013b): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000179, 0x00000186): DW_OP_consts +0, DW_OP_stack_value - [0x00000264, 0x0000026f): DW_OP_consts +0, DW_OP_stack_value - [0x00000275, 0x0000027e): DW_OP_consts +1, DW_OP_stack_value - [0x000002ba, 0x000002c4): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000302, 0x0000030f): DW_OP_consts +0, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000000d2: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000000a5: - [0xffffffff, 0x00000006): - [0x0000000e, 0x0000003c): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000000e1: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000000c3: - [0xffffffff, 0x00000006): - [0x0000001b, 0x0000003c): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000013e] = "perm1") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (29) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x000000f0: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000000e1: - [0xffffffff, 0x00000006): - [0x00000025, 0x0000003c): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000196] = "perm") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (29) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x000000ff: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000000ff: - [0xffffffff, 0x00000006): - [0x0000002f, 0x0000003c): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000144] = "count") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (29) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x0000010e: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x0000011d: - [0xffffffff, 0x00000006): - [0x000001e2, 0x000001e7): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value - [0x0000036b, 0x00000370): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014a] = "r") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000011d: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x00000149: - [0xffffffff, 0x00000006): - [0x000000cf, 0x000000e6): DW_OP_consts +0, DW_OP_stack_value - [0x000000ec, 0x000000f5): DW_OP_WASM_location 0x0 +13, DW_OP_stack_value - [0x0000015a, 0x00000162): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000264, 0x0000026f): DW_OP_consts +0, DW_OP_stack_value - [0x00000275, 0x0000027e): DW_OP_WASM_location 0x0 +10, DW_OP_stack_value - [0x000002e3, 0x000002eb): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000155] = "flips") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000012c: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000001ab: - [0xffffffff, 0x00000006): - [0x000000e2, 0x000000e6): DW_OP_WASM_location 0x0 +12, DW_OP_stack_value - [0x0000026b, 0x0000026f): DW_OP_WASM_location 0x0 +16, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019b] = "k") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000013b: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000001d7: - [0xffffffff, 0x00000006): - [0x000000fc, 0x00000100): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x00000138, 0x0000013b): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x00000285, 0x00000289): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x000002c1, 0x000002c4): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019d] = "j") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000014a: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x0000021f: - [0xffffffff, 0x00000006): - [0x00000111, 0x0000013b): DW_OP_WASM_location 0x0 +15, DW_OP_stack_value - [0x0000014c, 0x00000162): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x0000029a, 0x000002c4): DW_OP_WASM_location 0x0 +14, DW_OP_stack_value - [0x000002d5, 0x000002eb): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019f] = "tmp") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000159: DW_TAG_lexical_block [14] * - DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 - [0x00000185, 0x000001c3) - [0x000001ed, 0x000001f6) - [0x0000030e, 0x0000034c) - [0x00000376, 0x0000037f)) - -0x0000015e: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000163] = "p0") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (74) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000169: NULL - -0x0000016a: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x000000000000001f) - -0x0000016f: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000029) - -0x00000174: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000033) - -0x00000179: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000000e1) - -0x0000017e: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x000000000000038a) - -0x00000187: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000392) - -0x00000190: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x000000000000039a) - -0x00000199: NULL - -0x0000019a: DW_TAG_subprogram [17] * - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000010f] = "free") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libc/stdlib.h") - DW_AT_decl_line [DW_FORM_data1] (41) - DW_AT_declaration [DW_FORM_flag_present] (true) - DW_AT_external [DW_FORM_flag_present] (true) - -0x000001a1: DW_TAG_formal_parameter [18] - DW_AT_type [DW_FORM_ref4] (cu + 0x01a7 => {0x000001a7} "*") - -0x000001a6: NULL - -0x000001a7: DW_TAG_pointer_type [19] - -0x000001a8: DW_TAG_subprogram [20] * - DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x00000114] = "_ZL8fannkuchi") - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000122] = "fannkuch") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (87) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_inline [DW_FORM_data1] (DW_INL_inlined) - -0x000001b8: DW_TAG_formal_parameter [11] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (87) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000001c3: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000012b] = "showmax") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (90) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000001ce: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000133] = "args") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (89) - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - -0x000001d9: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000001e4: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000138] = "targs") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (89) - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - -0x000001ef: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000013e] = "perm1") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x000001fa: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000144] = "count") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x00000205: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014a] = "r") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000210: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014c] = "maxflips") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000021b: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000155] = "flips") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000226: DW_TAG_label [21] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000015b] = "cleanup") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (137) - -0x0000022d: DW_TAG_lexical_block [22] * - -0x0000022e: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000163] = "p0") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (125) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000239: NULL - -0x0000023a: NULL - -0x0000023b: DW_TAG_subprogram [23] * - DW_AT_low_pc [DW_FORM_addr] (0x000000000000039f) - DW_AT_high_pc [DW_FORM_data4] (0x00000342) - DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) - DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000018c] = "main") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (152) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x00000253: DW_TAG_formal_parameter [11] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001a3] = "argc") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (152) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000025e: DW_TAG_formal_parameter [11] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001a8] = "argv") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (152) - DW_AT_type [DW_FORM_ref4] (cu + 0x0341 => {0x00000341} "char**") - -0x00000269: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x00000267: - [0xffffffff, 0x0000039f): - [0x00000032, 0x00000037): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (153) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000278: DW_TAG_inlined_subroutine [24] * - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01a8 => {0x000001a8} "_ZL8fannkuchi") - DW_AT_low_pc [DW_FORM_addr] (0x00000000000003ed) - DW_AT_high_pc [DW_FORM_data4] (0x000002c8) - DW_AT_call_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_call_line [DW_FORM_data1] (159) - DW_AT_call_column [DW_FORM_data1] (0x29) - -0x00000288: DW_TAG_formal_parameter [25] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01b8 => {0x000001b8} "n") - -0x0000028d: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x00000285: - [0xffffffff, 0x0000039f): - [0x0000004c, 0x00000055): DW_OP_consts +30, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01c3 => {0x000001c3} "showmax") - -0x00000296: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x000002a2: - [0xffffffff, 0x0000039f): - [0x0000004c, 0x00000055): DW_OP_lit0, DW_OP_stack_value - [0x000002f8, 0x00000314): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01ce => {0x000001ce} "args") - -0x0000029f: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x000002cc: - [0xffffffff, 0x0000039f): - [0x0000004c, 0x00000055): DW_OP_consts +0, DW_OP_stack_value - [0x0000008e, 0x00000093): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000099, 0x000000c1): DW_OP_consts +0, DW_OP_stack_value - [0x000000d7, 0x000000dc): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x000000f5, 0x000000f9): DW_OP_consts +0, DW_OP_stack_value - [0x00000127, 0x0000012c): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000178, 0x00000188): DW_OP_consts +0, DW_OP_stack_value - [0x000001fa, 0x0000020c): DW_OP_consts +0, DW_OP_stack_value - [0x00000241, 0x00000255): DW_OP_consts +0, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01d9 => {0x000001d9} "i") - -0x000002a8: DW_TAG_variable [27] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01e4 => {0x000001e4} "targs") - -0x000002ad: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x00000354: - [0xffffffff, 0x0000039f): - [0x000000a8, 0x000000c1): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01ef => {0x000001ef} "perm1") - -0x000002b6: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x00000372: - [0xffffffff, 0x0000039f): - [0x000000b2, 0x000000c1): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01fa => {0x000001fa} "count") - -0x000002bf: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x00000390: - [0xffffffff, 0x0000039f): - [0x000001e6, 0x000001ed): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value - [0x000002b3, 0x000002ba): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0205 => {0x00000205} "r") - -0x000002c8: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x000003e8: - [0xffffffff, 0x0000039f): - [0x000002d6, 0x000002e1): DW_OP_consts +0, DW_OP_stack_value - [0x0000030c, 0x00000314): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0210 => {0x00000210} "maxflips") - -0x000002d1: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x00000413: - [0xffffffff, 0x0000039f): - [0x000002f1, 0x00000314): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x021b => {0x0000021b} "flips") - -0x000002da: DW_TAG_label [28] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0226 => {0x00000226} "cleanup") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000661) - -0x000002e3: DW_TAG_lexical_block [14] * - DW_AT_ranges [DW_FORM_sec_offset] (0x00000028 - [0x00000517, 0x0000055e) - [0x000005de, 0x0000062b)) - -0x000002e8: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x000003bc: - [0xffffffff, 0x0000039f): - [0x0000017f, 0x00000188): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value - [0x00000248, 0x00000255): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x022e => {0x0000022e} "p0") - -0x000002f1: NULL - -0x000002f2: NULL - -0x000002f3: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000003cf) - -0x000002f8: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000003e3) - -0x000002fd: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x000000000000040d) - -0x00000302: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000445) - -0x00000307: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x000000000000044f) - -0x0000030c: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000004be) - -0x00000311: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000004d4) - -0x00000316: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000005a1) - -0x0000031b: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000669) - -0x00000324: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000671) - -0x0000032d: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x000000000000068e) - -0x00000332: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x000000000000069f) - -0x0000033b: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000006d1) - -0x00000340: NULL - -0x00000341: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x0346 => {0x00000346} "char*") - -0x00000346: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x034b => {0x0000034b} "char") - -0x0000034b: DW_TAG_base_type [5] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001ad] = "char") - DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char) - DW_AT_byte_size [DW_FORM_data1] (0x01) - -0x00000352: NULL - -.debug_loc contents: -0x00000000: - [0xffffffff, 0x00000006): - [0x00000000, 0x0000003c): DW_OP_consts +0, DW_OP_stack_value - -0x0000001d: - [0xffffffff, 0x00000006): - [0x00000007, 0x0000003c): DW_OP_consts +0, DW_OP_stack_value - [0x00000052, 0x00000057): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x000000ec, 0x000000f5): DW_OP_consts +1, DW_OP_stack_value - [0x00000131, 0x0000013b): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000179, 0x00000186): DW_OP_consts +0, DW_OP_stack_value - [0x00000264, 0x0000026f): DW_OP_consts +0, DW_OP_stack_value - [0x00000275, 0x0000027e): DW_OP_consts +1, DW_OP_stack_value - [0x000002ba, 0x000002c4): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000302, 0x0000030f): DW_OP_consts +0, DW_OP_stack_value - -0x000000a5: - [0xffffffff, 0x00000006): - [0x0000000e, 0x0000003c): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value - -0x000000c3: - [0xffffffff, 0x00000006): - [0x0000001b, 0x0000003c): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value - -0x000000e1: - [0xffffffff, 0x00000006): - [0x00000025, 0x0000003c): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value - -0x000000ff: - [0xffffffff, 0x00000006): - [0x0000002f, 0x0000003c): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value - -0x0000011d: - [0xffffffff, 0x00000006): - [0x000001e2, 0x000001e7): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value - [0x0000036b, 0x00000370): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value - -0x00000149: - [0xffffffff, 0x00000006): - [0x000000cf, 0x000000e6): DW_OP_consts +0, DW_OP_stack_value - [0x000000ec, 0x000000f5): DW_OP_WASM_location 0x0 +13, DW_OP_stack_value - [0x0000015a, 0x00000162): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000264, 0x0000026f): DW_OP_consts +0, DW_OP_stack_value - [0x00000275, 0x0000027e): DW_OP_WASM_location 0x0 +10, DW_OP_stack_value - [0x000002e3, 0x000002eb): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - -0x000001ab: - [0xffffffff, 0x00000006): - [0x000000e2, 0x000000e6): DW_OP_WASM_location 0x0 +12, DW_OP_stack_value - [0x0000026b, 0x0000026f): DW_OP_WASM_location 0x0 +16, DW_OP_stack_value - -0x000001d7: - [0xffffffff, 0x00000006): - [0x000000fc, 0x00000100): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x00000138, 0x0000013b): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x00000285, 0x00000289): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x000002c1, 0x000002c4): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - -0x0000021f: - [0xffffffff, 0x00000006): - [0x00000111, 0x0000013b): DW_OP_WASM_location 0x0 +15, DW_OP_stack_value - [0x0000014c, 0x00000162): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x0000029a, 0x000002c4): DW_OP_WASM_location 0x0 +14, DW_OP_stack_value - [0x000002d5, 0x000002eb): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - -0x00000267: - [0xffffffff, 0x0000039f): - [0x00000032, 0x00000037): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value - -0x00000285: - [0xffffffff, 0x0000039f): - [0x0000004c, 0x00000055): DW_OP_consts +30, DW_OP_stack_value - -0x000002a2: - [0xffffffff, 0x0000039f): - [0x0000004c, 0x00000055): DW_OP_lit0, DW_OP_stack_value - [0x000002f8, 0x00000314): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value - -0x000002cc: - [0xffffffff, 0x0000039f): - [0x0000004c, 0x00000055): DW_OP_consts +0, DW_OP_stack_value - [0x0000008e, 0x00000093): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000099, 0x000000c1): DW_OP_consts +0, DW_OP_stack_value - [0x000000d7, 0x000000dc): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x000000f5, 0x000000f9): DW_OP_consts +0, DW_OP_stack_value - [0x00000127, 0x0000012c): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000178, 0x00000188): DW_OP_consts +0, DW_OP_stack_value - [0x000001fa, 0x0000020c): DW_OP_consts +0, DW_OP_stack_value - [0x00000241, 0x00000255): DW_OP_consts +0, DW_OP_stack_value - -0x00000354: - [0xffffffff, 0x0000039f): - [0x000000a8, 0x000000c1): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - -0x00000372: - [0xffffffff, 0x0000039f): - [0x000000b2, 0x000000c1): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value - -0x00000390: - [0xffffffff, 0x0000039f): - [0x000001e6, 0x000001ed): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value - [0x000002b3, 0x000002ba): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value - -0x000003bc: - [0xffffffff, 0x0000039f): - [0x0000017f, 0x00000188): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value - [0x00000248, 0x00000255): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value - -0x000003e8: - [0xffffffff, 0x0000039f): - [0x000002d6, 0x000002e1): DW_OP_consts +0, DW_OP_stack_value - [0x0000030c, 0x00000314): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - -0x00000413: - [0xffffffff, 0x0000039f): - [0x000002f1, 0x00000314): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - -.debug_line contents: -debug_line[0x00000000] -Line table prologue: - total_length: 0x000005c1 - version: 4 - prologue_length: 0x000000dd - min_inst_length: 1 -max_ops_per_inst: 1 - default_is_stmt: 1 - line_base: -5 - line_range: 14 - opcode_base: 13 -standard_opcode_lengths[DW_LNS_copy] = 0 -standard_opcode_lengths[DW_LNS_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_advance_line] = 1 -standard_opcode_lengths[DW_LNS_set_file] = 1 -standard_opcode_lengths[DW_LNS_set_column] = 1 -standard_opcode_lengths[DW_LNS_negate_stmt] = 0 -standard_opcode_lengths[DW_LNS_set_basic_block] = 0 -standard_opcode_lengths[DW_LNS_const_add_pc] = 0 -standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 -standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 -standard_opcode_lengths[DW_LNS_set_isa] = 1 -include_directories[ 1] = "/usr/local/google/home/azakai/Dev" -file_names[ 1]: - name: "emscripten/tests/fannkuch.cpp" - dir_index: 1 - mod_time: 0x00000000 - length: 0x00000000 -file_names[ 2]: - name: "emscripten/system/include/libcxx/__nullptr" - dir_index: 1 - mod_time: 0x00000000 - length: 0x00000000 -file_names[ 3]: - name: "emscripten/system/include/libcxx/stddef.h" - dir_index: 1 - mod_time: 0x00000000 - length: 0x00000000 -file_names[ 4]: - name: "emscripten/system/include/libc/stdlib.h" - dir_index: 1 - mod_time: 0x00000000 - length: 0x00000000 -0x000000e7: 00 DW_LNE_set_address (0x0000000000000006) -0x000000ee: 03 DW_LNS_advance_line (27) -0x000000f0: 01 DW_LNS_copy - 0x0000000000000006 27 0 1 0 0 is_stmt - - -0x000000f1: 05 DW_LNS_set_column (14) -0x000000f3: 0a DW_LNS_set_prologue_end -0x000000f4: 7a address += 7, line += 6 - 0x000000000000000d 33 14 1 0 0 is_stmt prologue_end - -0x000000f5: 06 DW_LNS_negate_stmt -0x000000f6: 03 DW_LNS_advance_line (0) -0x000000f8: 58 address += 5, line += 0 - 0x0000000000000012 0 14 1 0 0 - -0x000000f9: 05 DW_LNS_set_column (27) -0x000000fb: 06 DW_LNS_negate_stmt -0x000000fc: 03 DW_LNS_advance_line (34) -0x000000fe: 4a address += 4, line += 0 - 0x0000000000000016 34 27 1 0 0 is_stmt - -0x000000ff: 05 DW_LNS_set_column (18) -0x00000101: 06 DW_LNS_negate_stmt -0x00000102: 20 address += 1, line += 0 - 0x0000000000000017 34 18 1 0 0 - -0x00000103: 05 DW_LNS_set_column (17) -0x00000105: 06 DW_LNS_negate_stmt -0x00000106: 9f address += 10, line += 1 - 0x0000000000000021 35 17 1 0 0 is_stmt - -0x00000107: 05 DW_LNS_set_column (18) -0x00000109: 9f address += 10, line += 1 - 0x000000000000002b 36 18 1 0 0 is_stmt - -0x0000010a: 06 DW_LNS_negate_stmt -0x0000010b: 03 DW_LNS_advance_line (0) -0x0000010d: 9e address += 10, line += 0 - 0x0000000000000035 0 18 1 0 0 - -0x0000010e: 06 DW_LNS_negate_stmt -0x0000010f: 03 DW_LNS_advance_line (37) -0x00000111: 66 address += 6, line += 0 - 0x000000000000003b 37 18 1 0 0 is_stmt - -0x00000112: 05 DW_LNS_set_column (4) -0x00000114: 06 DW_LNS_negate_stmt -0x00000115: 58 address += 5, line += 0 - 0x0000000000000040 37 4 1 0 0 - -0x00000116: 03 DW_LNS_advance_line (0) -0x00000118: 2e address += 2, line += 0 - 0x0000000000000042 0 4 1 0 0 - -0x00000119: 05 DW_LNS_set_column (7) -0x0000011b: 06 DW_LNS_negate_stmt -0x0000011c: 03 DW_LNS_advance_line (38) -0x0000011e: 2e address += 2, line += 0 - 0x0000000000000044 38 7 1 0 0 is_stmt - -0x0000011f: 05 DW_LNS_set_column (16) -0x00000121: 06 DW_LNS_negate_stmt -0x00000122: 82 address += 8, line += 0 - 0x000000000000004c 38 16 1 0 0 - -0x00000123: 05 DW_LNS_set_column (24) -0x00000125: 06 DW_LNS_negate_stmt -0x00000126: 57 address += 5, line += -1 - 0x0000000000000051 37 24 1 0 0 is_stmt - -0x00000127: 05 DW_LNS_set_column (18) -0x00000129: 06 DW_LNS_negate_stmt -0x0000012a: 58 address += 5, line += 0 - 0x0000000000000056 37 18 1 0 0 - -0x0000012b: 05 DW_LNS_set_column (4) -0x0000012d: 58 address += 5, line += 0 - 0x000000000000005b 37 4 1 0 0 - -0x0000012e: 06 DW_LNS_negate_stmt -0x0000012f: 3e address += 3, line += 2 - 0x000000000000005e 39 4 1 0 0 is_stmt - -0x00000130: 05 DW_LNS_set_column (16) -0x00000132: 06 DW_LNS_negate_stmt -0x00000133: 2e address += 2, line += 0 - 0x0000000000000060 39 16 1 0 0 - -0x00000134: 05 DW_LNS_set_column (4) -0x00000136: 90 address += 9, line += 0 - 0x0000000000000069 39 4 1 0 0 - -0x00000137: 05 DW_LNS_set_column (23) -0x00000139: 2e address += 2, line += 0 - 0x000000000000006b 39 23 1 0 0 - -0x0000013a: 05 DW_LNS_set_column (19) -0x0000013c: 58 address += 5, line += 0 - 0x0000000000000070 39 19 1 0 0 - -0x0000013d: 05 DW_LNS_set_column (4) -0x0000013f: 06 DW_LNS_negate_stmt -0x00000140: 59 address += 5, line += 1 - 0x0000000000000075 40 4 1 0 0 is_stmt - -0x00000141: 05 DW_LNS_set_column (17) -0x00000143: 06 DW_LNS_negate_stmt -0x00000144: 82 address += 8, line += 0 - 0x000000000000007d 40 17 1 0 0 - -0x00000145: 05 DW_LNS_set_column (18) -0x00000147: 06 DW_LNS_negate_stmt -0x00000148: a9 address += 11, line += -3 - 0x0000000000000088 37 18 1 0 0 is_stmt - -0x00000149: 05 DW_LNS_set_column (4) -0x0000014b: 5e address += 5, line += 6 - 0x000000000000008d 43 4 1 0 0 is_stmt - -0x0000014c: 06 DW_LNS_negate_stmt -0x0000014d: 03 DW_LNS_advance_line (0) -0x0000014f: 2e address += 2, line += 0 - 0x000000000000008f 0 4 1 0 0 - -0x00000150: 05 DW_LNS_set_column (16) -0x00000152: 06 DW_LNS_negate_stmt -0x00000153: 03 DW_LNS_advance_line (44) -0x00000155: 4a address += 4, line += 0 - 0x0000000000000093 44 16 1 0 0 is_stmt - -0x00000156: 06 DW_LNS_negate_stmt -0x00000157: 03 DW_LNS_advance_line (0) -0x00000159: 74 address += 7, line += 0 - 0x000000000000009a 0 16 1 0 0 - -0x0000015a: 05 DW_LNS_set_column (10) -0x0000015c: 06 DW_LNS_negate_stmt -0x0000015d: 03 DW_LNS_advance_line (45) -0x0000015f: 2e address += 2, line += 0 - 0x000000000000009c 45 10 1 0 0 is_stmt - -0x00000160: 05 DW_LNS_set_column (18) -0x00000162: 06 DW_LNS_negate_stmt -0x00000163: 2e address += 2, line += 0 - 0x000000000000009e 45 18 1 0 0 - -0x00000164: 05 DW_LNS_set_column (10) -0x00000166: 90 address += 9, line += 0 - 0x00000000000000a7 45 10 1 0 0 - -0x00000167: 05 DW_LNS_set_column (23) -0x00000169: 2e address += 2, line += 0 - 0x00000000000000a9 45 23 1 0 0 - -0x0000016a: 05 DW_LNS_set_column (16) -0x0000016c: 06 DW_LNS_negate_stmt -0x0000016d: 57 address += 5, line += -1 - 0x00000000000000ae 44 16 1 0 0 is_stmt - -0x0000016e: 05 DW_LNS_set_column (0) -0x00000170: 06 DW_LNS_negate_stmt -0x00000171: 03 DW_LNS_advance_line (0) -0x00000173: 74 address += 7, line += 0 - 0x00000000000000b5 0 0 1 0 0 - -0x00000174: 05 DW_LNS_set_column (7) -0x00000176: 03 DW_LNS_advance_line (44) -0x00000178: 4a address += 4, line += 0 - 0x00000000000000b9 44 7 1 0 0 - -0x00000179: 05 DW_LNS_set_column (11) -0x0000017b: 06 DW_LNS_negate_stmt -0x0000017c: 68 address += 6, line += 2 - 0x00000000000000bf 46 11 1 0 0 is_stmt - -0x0000017d: 05 DW_LNS_set_column (28) -0x0000017f: 06 DW_LNS_negate_stmt -0x00000180: ba address += 12, line += 0 - 0x00000000000000cb 46 28 1 0 0 - -0x00000181: 05 DW_LNS_set_column (41) -0x00000183: 58 address += 5, line += 0 - 0x00000000000000d0 46 41 1 0 0 - -0x00000184: 05 DW_LNS_set_column (21) -0x00000186: 06 DW_LNS_negate_stmt -0x00000187: 5a address += 5, line += 2 - 0x00000000000000d5 48 21 1 0 0 is_stmt - -0x00000188: 05 DW_LNS_set_column (14) -0x0000018a: bc address += 12, line += 2 - 0x00000000000000e1 50 14 1 0 0 is_stmt - -0x0000018b: 06 DW_LNS_negate_stmt -0x0000018c: 03 DW_LNS_advance_line (0) -0x0000018e: 74 address += 7, line += 0 - 0x00000000000000e8 0 14 1 0 0 - -0x0000018f: 05 DW_LNS_set_column (38) -0x00000191: 06 DW_LNS_negate_stmt -0x00000192: 03 DW_LNS_advance_line (52) -0x00000194: ba address += 12, line += 0 - 0x00000000000000f4 52 38 1 0 0 is_stmt - -0x00000195: 05 DW_LNS_set_column (0) -0x00000197: 06 DW_LNS_negate_stmt -0x00000198: 03 DW_LNS_advance_line (0) -0x0000019a: 74 address += 7, line += 0 - 0x00000000000000fb 0 0 1 0 0 - -0x0000019b: 05 DW_LNS_set_column (22) -0x0000019d: 06 DW_LNS_negate_stmt -0x0000019e: 03 DW_LNS_advance_line (53) -0x000001a0: c8 address += 13, line += 0 - 0x0000000000000108 53 22 1 0 0 is_stmt - -0x000001a1: 05 DW_LNS_set_column (24) -0x000001a3: e5 address += 15, line += 1 - 0x0000000000000117 54 24 1 0 0 is_stmt - -0x000001a4: 05 DW_LNS_set_column (26) -0x000001a6: 06 DW_LNS_negate_stmt -0x000001a7: 2e address += 2, line += 0 - 0x0000000000000119 54 26 1 0 0 - -0x000001a8: 05 DW_LNS_set_column (24) -0x000001aa: c8 address += 13, line += 0 - 0x0000000000000126 54 24 1 0 0 - -0x000001ab: 06 DW_LNS_negate_stmt -0x000001ac: 3d address += 3, line += 1 - 0x0000000000000129 55 24 1 0 0 is_stmt - -0x000001ad: 05 DW_LNS_set_column (44) -0x000001af: 71 address += 7, line += -3 - 0x0000000000000130 52 44 1 0 0 is_stmt - -0x000001b0: 06 DW_LNS_negate_stmt -0x000001b1: 03 DW_LNS_advance_line (0) -0x000001b3: 58 address += 5, line += 0 - 0x0000000000000135 0 44 1 0 0 - -0x000001b4: 05 DW_LNS_set_column (38) -0x000001b6: 03 DW_LNS_advance_line (52) -0x000001b8: 74 address += 7, line += 0 - 0x000000000000013c 52 38 1 0 0 - -0x000001b9: 05 DW_LNS_set_column (13) -0x000001bb: 3c address += 3, line += 0 - 0x000000000000013f 52 13 1 0 0 - -0x000001bc: 05 DW_LNS_set_column (19) -0x000001be: 06 DW_LNS_negate_stmt -0x000001bf: 50 address += 4, line += 6 - 0x0000000000000143 58 19 1 0 0 is_stmt - -0x000001c0: 05 DW_LNS_set_column (21) -0x000001c2: e5 address += 15, line += 1 - 0x0000000000000152 59 21 1 0 0 is_stmt - -0x000001c3: 05 DW_LNS_set_column (18) -0x000001c5: 72 address += 7, line += -2 - 0x0000000000000159 57 18 1 0 0 is_stmt - -0x000001c6: 05 DW_LNS_set_column (0) -0x000001c8: 06 DW_LNS_negate_stmt -0x000001c9: 03 DW_LNS_advance_line (0) -0x000001cb: 74 address += 7, line += 0 - 0x0000000000000160 0 0 1 0 0 - -0x000001cc: 05 DW_LNS_set_column (14) -0x000001ce: 06 DW_LNS_negate_stmt -0x000001cf: 03 DW_LNS_advance_line (62) -0x000001d1: 90 address += 9, line += 0 - 0x0000000000000169 62 14 1 0 0 is_stmt - -0x000001d2: 05 DW_LNS_set_column (23) -0x000001d4: 06 DW_LNS_negate_stmt -0x000001d5: 4a address += 4, line += 0 - 0x000000000000016d 62 23 1 0 0 - -0x000001d6: 05 DW_LNS_set_column (14) -0x000001d8: 58 address += 5, line += 0 - 0x0000000000000172 62 14 1 0 0 - -0x000001d9: 03 DW_LNS_advance_line (0) -0x000001db: 3c address += 3, line += 0 - 0x0000000000000175 0 14 1 0 0 - -0x000001dc: 05 DW_LNS_set_column (16) -0x000001de: 06 DW_LNS_negate_stmt -0x000001df: 03 DW_LNS_advance_line (66) -0x000001e2: 20 address += 1, line += 0 - 0x0000000000000176 66 16 1 0 0 is_stmt - -0x000001e3: 06 DW_LNS_negate_stmt -0x000001e4: 03 DW_LNS_advance_line (0) -0x000001e7: 74 address += 7, line += 0 - 0x000000000000017d 0 16 1 0 0 - -0x000001e8: 05 DW_LNS_set_column (27) -0x000001ea: 06 DW_LNS_negate_stmt -0x000001eb: 03 DW_LNS_advance_line (75) -0x000001ee: 82 address += 8, line += 0 - 0x0000000000000185 75 27 1 0 0 is_stmt - -0x000001ef: 06 DW_LNS_negate_stmt -0x000001f0: 03 DW_LNS_advance_line (0) -0x000001f3: 74 address += 7, line += 0 - 0x000000000000018c 0 27 1 0 0 - -0x000001f4: 05 DW_LNS_set_column (16) -0x000001f6: 06 DW_LNS_negate_stmt -0x000001f7: 03 DW_LNS_advance_line (76) -0x000001fa: 2e address += 2, line += 0 - 0x000000000000018e 76 16 1 0 0 is_stmt - -0x000001fb: 05 DW_LNS_set_column (27) -0x000001fd: 06 DW_LNS_negate_stmt -0x000001fe: 82 address += 8, line += 0 - 0x0000000000000196 76 27 1 0 0 - -0x000001ff: 05 DW_LNS_set_column (35) -0x00000201: 2e address += 2, line += 0 - 0x0000000000000198 76 35 1 0 0 - -0x00000202: 05 DW_LNS_set_column (27) -0x00000204: 90 address += 9, line += 0 - 0x00000000000001a1 76 27 1 0 0 - -0x00000205: 05 DW_LNS_set_column (25) -0x00000207: 58 address += 5, line += 0 - 0x00000000000001a6 76 25 1 0 0 - -0x00000208: 05 DW_LNS_set_column (27) -0x0000020a: 06 DW_LNS_negate_stmt -0x0000020b: 3b address += 3, line += -1 - 0x00000000000001a9 75 27 1 0 0 is_stmt - -0x0000020c: 05 DW_LNS_set_column (13) -0x0000020e: 06 DW_LNS_negate_stmt -0x0000020f: 58 address += 5, line += 0 - 0x00000000000001ae 75 13 1 0 0 - -0x00000210: 05 DW_LNS_set_column (0) -0x00000212: 03 DW_LNS_advance_line (0) -0x00000215: 3c address += 3, line += 0 - 0x00000000000001b1 0 0 1 0 0 - -0x00000216: 05 DW_LNS_set_column (13) -0x00000218: 06 DW_LNS_negate_stmt -0x00000219: 03 DW_LNS_advance_line (77) -0x0000021c: 58 address += 5, line += 0 - 0x00000000000001b6 77 13 1 0 0 is_stmt - -0x0000021d: 05 DW_LNS_set_column (22) -0x0000021f: 06 DW_LNS_negate_stmt -0x00000220: 82 address += 8, line += 0 - 0x00000000000001be 77 22 1 0 0 - -0x00000221: 05 DW_LNS_set_column (16) -0x00000223: 06 DW_LNS_negate_stmt -0x00000224: 5a address += 5, line += 2 - 0x00000000000001c3 79 16 1 0 0 is_stmt - -0x00000225: 05 DW_LNS_set_column (14) -0x00000227: 06 DW_LNS_negate_stmt -0x00000228: 82 address += 8, line += 0 - 0x00000000000001cb 79 14 1 0 0 - -0x00000229: 05 DW_LNS_set_column (25) -0x0000022b: e4 address += 15, line += 0 - 0x00000000000001da 79 25 1 0 0 - -0x0000022c: 05 DW_LNS_set_column (11) -0x0000022e: 06 DW_LNS_negate_stmt -0x0000022f: 76 address += 7, line += 2 - 0x00000000000001e1 81 11 1 0 0 is_stmt - -0x00000230: 05 DW_LNS_set_column (16) -0x00000232: 03 DW_LNS_advance_line (66) -0x00000234: 58 address += 5, line += 0 - 0x00000000000001e6 66 16 1 0 0 is_stmt - -0x00000235: 05 DW_LNS_set_column (22) -0x00000237: 7c address += 7, line += 8 - 0x00000000000001ed 74 22 1 0 0 is_stmt - -0x00000238: 05 DW_LNS_set_column (4) -0x0000023a: 03 DW_LNS_advance_line (37) -0x0000023c: 90 address += 9, line += 0 - 0x00000000000001f6 37 4 1 0 0 is_stmt - -0x0000023d: 3e address += 3, line += 2 - 0x00000000000001f9 39 4 1 0 0 is_stmt - -0x0000023e: 05 DW_LNS_set_column (16) -0x00000240: 06 DW_LNS_negate_stmt -0x00000241: 2e address += 2, line += 0 - 0x00000000000001fb 39 16 1 0 0 - -0x00000242: 05 DW_LNS_set_column (4) -0x00000244: 90 address += 9, line += 0 - 0x0000000000000204 39 4 1 0 0 - -0x00000245: 05 DW_LNS_set_column (23) -0x00000247: 2e address += 2, line += 0 - 0x0000000000000206 39 23 1 0 0 - -0x00000248: 05 DW_LNS_set_column (19) -0x0000024a: 58 address += 5, line += 0 - 0x000000000000020b 39 19 1 0 0 - -0x0000024b: 05 DW_LNS_set_column (4) -0x0000024d: 06 DW_LNS_negate_stmt -0x0000024e: 59 address += 5, line += 1 - 0x0000000000000210 40 4 1 0 0 is_stmt - -0x0000024f: 05 DW_LNS_set_column (17) -0x00000251: 06 DW_LNS_negate_stmt -0x00000252: 82 address += 8, line += 0 - 0x0000000000000218 40 17 1 0 0 - -0x00000253: 03 DW_LNS_advance_line (0) -0x00000255: 74 address += 7, line += 0 - 0x000000000000021f 0 17 1 0 0 - -0x00000256: 05 DW_LNS_set_column (16) -0x00000258: 06 DW_LNS_negate_stmt -0x00000259: 03 DW_LNS_advance_line (44) -0x0000025b: 90 address += 9, line += 0 - 0x0000000000000228 44 16 1 0 0 is_stmt - -0x0000025c: 06 DW_LNS_negate_stmt -0x0000025d: 03 DW_LNS_advance_line (0) -0x0000025f: 74 address += 7, line += 0 - 0x000000000000022f 0 16 1 0 0 - -0x00000260: 05 DW_LNS_set_column (10) -0x00000262: 06 DW_LNS_negate_stmt -0x00000263: 03 DW_LNS_advance_line (45) -0x00000265: 2e address += 2, line += 0 - 0x0000000000000231 45 10 1 0 0 is_stmt - -0x00000266: 05 DW_LNS_set_column (18) -0x00000268: 06 DW_LNS_negate_stmt -0x00000269: 2e address += 2, line += 0 - 0x0000000000000233 45 18 1 0 0 - -0x0000026a: 05 DW_LNS_set_column (10) -0x0000026c: 90 address += 9, line += 0 - 0x000000000000023c 45 10 1 0 0 - -0x0000026d: 05 DW_LNS_set_column (23) -0x0000026f: 2e address += 2, line += 0 - 0x000000000000023e 45 23 1 0 0 - -0x00000270: 05 DW_LNS_set_column (16) -0x00000272: 06 DW_LNS_negate_stmt -0x00000273: 57 address += 5, line += -1 - 0x0000000000000243 44 16 1 0 0 is_stmt - -0x00000274: 06 DW_LNS_negate_stmt -0x00000275: 03 DW_LNS_advance_line (0) -0x00000277: e4 address += 15, line += 0 - 0x0000000000000252 0 16 1 0 0 - -0x00000278: 05 DW_LNS_set_column (11) -0x0000027a: 06 DW_LNS_negate_stmt -0x0000027b: 03 DW_LNS_advance_line (46) -0x0000027d: 2e address += 2, line += 0 - 0x0000000000000254 46 11 1 0 0 is_stmt - -0x0000027e: 05 DW_LNS_set_column (28) -0x00000280: 06 DW_LNS_negate_stmt -0x00000281: ba address += 12, line += 0 - 0x0000000000000260 46 28 1 0 0 - -0x00000282: 05 DW_LNS_set_column (41) -0x00000284: 58 address += 5, line += 0 - 0x0000000000000265 46 41 1 0 0 - -0x00000285: 05 DW_LNS_set_column (14) -0x00000287: 06 DW_LNS_negate_stmt -0x00000288: 5c address += 5, line += 4 - 0x000000000000026a 50 14 1 0 0 is_stmt - -0x00000289: 06 DW_LNS_negate_stmt -0x0000028a: 03 DW_LNS_advance_line (0) -0x0000028c: 74 address += 7, line += 0 - 0x0000000000000271 0 14 1 0 0 - -0x0000028d: 05 DW_LNS_set_column (38) -0x0000028f: 06 DW_LNS_negate_stmt -0x00000290: 03 DW_LNS_advance_line (52) -0x00000292: ba address += 12, line += 0 - 0x000000000000027d 52 38 1 0 0 is_stmt - -0x00000293: 05 DW_LNS_set_column (0) -0x00000295: 06 DW_LNS_negate_stmt -0x00000296: 03 DW_LNS_advance_line (0) -0x00000298: 74 address += 7, line += 0 - 0x0000000000000284 0 0 1 0 0 - -0x00000299: 05 DW_LNS_set_column (22) -0x0000029b: 06 DW_LNS_negate_stmt -0x0000029c: 03 DW_LNS_advance_line (53) -0x0000029e: c8 address += 13, line += 0 - 0x0000000000000291 53 22 1 0 0 is_stmt - -0x0000029f: 05 DW_LNS_set_column (24) -0x000002a1: e5 address += 15, line += 1 - 0x00000000000002a0 54 24 1 0 0 is_stmt - -0x000002a2: 05 DW_LNS_set_column (26) -0x000002a4: 06 DW_LNS_negate_stmt -0x000002a5: 2e address += 2, line += 0 - 0x00000000000002a2 54 26 1 0 0 - -0x000002a6: 05 DW_LNS_set_column (24) -0x000002a8: c8 address += 13, line += 0 - 0x00000000000002af 54 24 1 0 0 - -0x000002a9: 06 DW_LNS_negate_stmt -0x000002aa: 3d address += 3, line += 1 - 0x00000000000002b2 55 24 1 0 0 is_stmt - -0x000002ab: 05 DW_LNS_set_column (44) -0x000002ad: 71 address += 7, line += -3 - 0x00000000000002b9 52 44 1 0 0 is_stmt - -0x000002ae: 06 DW_LNS_negate_stmt -0x000002af: 03 DW_LNS_advance_line (0) -0x000002b1: 58 address += 5, line += 0 - 0x00000000000002be 0 44 1 0 0 - -0x000002b2: 05 DW_LNS_set_column (38) -0x000002b4: 03 DW_LNS_advance_line (52) -0x000002b6: 74 address += 7, line += 0 - 0x00000000000002c5 52 38 1 0 0 - -0x000002b7: 03 DW_LNS_advance_line (0) -0x000002b9: 58 address += 5, line += 0 - 0x00000000000002ca 0 38 1 0 0 - -0x000002ba: 05 DW_LNS_set_column (19) -0x000002bc: 06 DW_LNS_negate_stmt -0x000002bd: 03 DW_LNS_advance_line (58) -0x000002bf: 2e address += 2, line += 0 - 0x00000000000002cc 58 19 1 0 0 is_stmt - -0x000002c0: 05 DW_LNS_set_column (21) -0x000002c2: e5 address += 15, line += 1 - 0x00000000000002db 59 21 1 0 0 is_stmt - -0x000002c3: 05 DW_LNS_set_column (18) -0x000002c5: 72 address += 7, line += -2 - 0x00000000000002e2 57 18 1 0 0 is_stmt - -0x000002c6: 05 DW_LNS_set_column (0) -0x000002c8: 06 DW_LNS_negate_stmt -0x000002c9: 03 DW_LNS_advance_line (0) -0x000002cb: 74 address += 7, line += 0 - 0x00000000000002e9 0 0 1 0 0 - -0x000002cc: 05 DW_LNS_set_column (14) -0x000002ce: 06 DW_LNS_negate_stmt -0x000002cf: 03 DW_LNS_advance_line (62) -0x000002d1: 90 address += 9, line += 0 - 0x00000000000002f2 62 14 1 0 0 is_stmt - -0x000002d2: 05 DW_LNS_set_column (23) -0x000002d4: 06 DW_LNS_negate_stmt -0x000002d5: 4a address += 4, line += 0 - 0x00000000000002f6 62 23 1 0 0 - -0x000002d6: 05 DW_LNS_set_column (14) -0x000002d8: 58 address += 5, line += 0 - 0x00000000000002fb 62 14 1 0 0 - -0x000002d9: 03 DW_LNS_advance_line (0) -0x000002db: 3c address += 3, line += 0 - 0x00000000000002fe 0 14 1 0 0 - -0x000002dc: 05 DW_LNS_set_column (16) -0x000002de: 06 DW_LNS_negate_stmt -0x000002df: 03 DW_LNS_advance_line (66) -0x000002e2: 20 address += 1, line += 0 - 0x00000000000002ff 66 16 1 0 0 is_stmt - -0x000002e3: 06 DW_LNS_negate_stmt -0x000002e4: 03 DW_LNS_advance_line (0) -0x000002e7: 74 address += 7, line += 0 - 0x0000000000000306 0 16 1 0 0 - -0x000002e8: 05 DW_LNS_set_column (27) -0x000002ea: 06 DW_LNS_negate_stmt -0x000002eb: 03 DW_LNS_advance_line (75) -0x000002ee: 82 address += 8, line += 0 - 0x000000000000030e 75 27 1 0 0 is_stmt - -0x000002ef: 06 DW_LNS_negate_stmt -0x000002f0: 03 DW_LNS_advance_line (0) -0x000002f3: 74 address += 7, line += 0 - 0x0000000000000315 0 27 1 0 0 - -0x000002f4: 05 DW_LNS_set_column (16) -0x000002f6: 06 DW_LNS_negate_stmt -0x000002f7: 03 DW_LNS_advance_line (76) -0x000002fa: 2e address += 2, line += 0 - 0x0000000000000317 76 16 1 0 0 is_stmt - -0x000002fb: 05 DW_LNS_set_column (27) -0x000002fd: 06 DW_LNS_negate_stmt -0x000002fe: 82 address += 8, line += 0 - 0x000000000000031f 76 27 1 0 0 - -0x000002ff: 05 DW_LNS_set_column (35) -0x00000301: 2e address += 2, line += 0 - 0x0000000000000321 76 35 1 0 0 - -0x00000302: 05 DW_LNS_set_column (27) -0x00000304: 90 address += 9, line += 0 - 0x000000000000032a 76 27 1 0 0 - -0x00000305: 05 DW_LNS_set_column (25) -0x00000307: 58 address += 5, line += 0 - 0x000000000000032f 76 25 1 0 0 - -0x00000308: 05 DW_LNS_set_column (27) -0x0000030a: 06 DW_LNS_negate_stmt -0x0000030b: 3b address += 3, line += -1 - 0x0000000000000332 75 27 1 0 0 is_stmt - -0x0000030c: 06 DW_LNS_negate_stmt -0x0000030d: 03 DW_LNS_advance_line (0) -0x00000310: 74 address += 7, line += 0 - 0x0000000000000339 0 27 1 0 0 - -0x00000311: 05 DW_LNS_set_column (13) -0x00000313: 06 DW_LNS_negate_stmt -0x00000314: 03 DW_LNS_advance_line (77) -0x00000317: 66 address += 6, line += 0 - 0x000000000000033f 77 13 1 0 0 is_stmt - -0x00000318: 05 DW_LNS_set_column (22) -0x0000031a: 06 DW_LNS_negate_stmt -0x0000031b: 82 address += 8, line += 0 - 0x0000000000000347 77 22 1 0 0 - -0x0000031c: 05 DW_LNS_set_column (16) -0x0000031e: 06 DW_LNS_negate_stmt -0x0000031f: 5a address += 5, line += 2 - 0x000000000000034c 79 16 1 0 0 is_stmt - -0x00000320: 05 DW_LNS_set_column (14) -0x00000322: 06 DW_LNS_negate_stmt -0x00000323: 82 address += 8, line += 0 - 0x0000000000000354 79 14 1 0 0 - -0x00000324: 05 DW_LNS_set_column (25) -0x00000326: e4 address += 15, line += 0 - 0x0000000000000363 79 25 1 0 0 - -0x00000327: 05 DW_LNS_set_column (11) -0x00000329: 06 DW_LNS_negate_stmt -0x0000032a: 76 address += 7, line += 2 - 0x000000000000036a 81 11 1 0 0 is_stmt - -0x0000032b: 05 DW_LNS_set_column (16) -0x0000032d: 03 DW_LNS_advance_line (66) -0x0000032f: 58 address += 5, line += 0 - 0x000000000000036f 66 16 1 0 0 is_stmt - -0x00000330: 05 DW_LNS_set_column (22) -0x00000332: 7c address += 7, line += 8 - 0x0000000000000376 74 22 1 0 0 is_stmt - -0x00000333: 06 DW_LNS_negate_stmt -0x00000334: 03 DW_LNS_advance_line (0) -0x00000337: 90 address += 9, line += 0 - 0x000000000000037f 0 22 1 0 0 - -0x00000338: 05 DW_LNS_set_column (13) -0x0000033a: 06 DW_LNS_negate_stmt -0x0000033b: 03 DW_LNS_advance_line (67) -0x0000033e: 3c address += 3, line += 0 - 0x0000000000000382 67 13 1 0 0 is_stmt - -0x0000033f: 83 address += 8, line += 1 - 0x000000000000038a 68 13 1 0 0 is_stmt - -0x00000340: 83 address += 8, line += 1 - 0x0000000000000392 69 13 1 0 0 is_stmt - -0x00000341: 83 address += 8, line += 1 - 0x000000000000039a 70 13 1 0 0 is_stmt - -0x00000342: 02 DW_LNS_advance_pc (3) -0x00000344: 00 DW_LNE_end_sequence - 0x000000000000039d 70 13 1 0 0 is_stmt end_sequence - -0x00000347: 00 DW_LNE_set_address (0x000000000000039f) -0x0000034e: 03 DW_LNS_advance_line (152) -0x00000351: 01 DW_LNS_copy - 0x000000000000039f 152 0 1 0 0 is_stmt - - -0x00000352: 05 DW_LNS_set_column (17) -0x00000354: 0a DW_LNS_set_prologue_end -0x00000355: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000356: 91 address += 9, line += 1 - 0x00000000000003b9 153 17 1 0 0 is_stmt prologue_end - -0x00000357: 05 DW_LNS_set_column (12) -0x00000359: 06 DW_LNS_negate_stmt -0x0000035a: 58 address += 5, line += 0 - 0x00000000000003be 153 12 1 0 0 - -0x0000035b: 03 DW_LNS_advance_line (0) -0x0000035e: 2e address += 2, line += 0 - 0x00000000000003c0 0 12 1 0 0 - -0x0000035f: 05 DW_LNS_set_column (28) -0x00000361: 03 DW_LNS_advance_line (153) -0x00000364: 4a address += 4, line += 0 - 0x00000000000003c4 153 28 1 0 0 - -0x00000365: 05 DW_LNS_set_column (23) -0x00000367: 58 address += 5, line += 0 - 0x00000000000003c9 153 23 1 0 0 - -0x00000368: 03 DW_LNS_advance_line (0) -0x0000036b: 66 address += 6, line += 0 - 0x00000000000003cf 0 23 1 0 0 - -0x0000036c: 05 DW_LNS_set_column (10) -0x0000036e: 06 DW_LNS_negate_stmt -0x0000036f: 03 DW_LNS_advance_line (155) -0x00000372: 4a address += 4, line += 0 - 0x00000000000003d3 155 10 1 0 0 is_stmt - -0x00000373: 05 DW_LNS_set_column (8) -0x00000375: 06 DW_LNS_negate_stmt -0x00000376: 20 address += 1, line += 0 - 0x00000000000003d4 155 8 1 0 0 - -0x00000377: 03 DW_LNS_advance_line (0) -0x0000037a: 2e address += 2, line += 0 - 0x00000000000003d6 0 8 1 0 0 - -0x0000037b: 05 DW_LNS_set_column (7) -0x0000037d: 06 DW_LNS_negate_stmt -0x0000037e: 03 DW_LNS_advance_line (156) -0x00000381: 20 address += 1, line += 0 - 0x00000000000003d7 156 7 1 0 0 is_stmt - -0x00000382: 06 DW_LNS_negate_stmt -0x00000383: 03 DW_LNS_advance_line (0) -0x00000386: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000387: 2e address += 2, line += 0 - 0x00000000000003ea 0 7 1 0 0 - -0x00000388: 05 DW_LNS_set_column (18) -0x0000038a: 06 DW_LNS_negate_stmt -0x0000038b: 03 DW_LNS_advance_line (94) -0x0000038e: 3c address += 3, line += 0 - 0x00000000000003ed 94 18 1 0 0 is_stmt - -0x0000038f: 05 DW_LNS_set_column (4) -0x00000391: 06 DW_LNS_negate_stmt -0x00000392: 58 address += 5, line += 0 - 0x00000000000003f2 94 4 1 0 0 - -0x00000393: 03 DW_LNS_advance_line (0) -0x00000396: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000397: 12 address += 0, line += 0 - 0x0000000000000403 0 4 1 0 0 - -0x00000398: 05 DW_LNS_set_column (29) -0x0000039a: 06 DW_LNS_negate_stmt -0x0000039b: 03 DW_LNS_advance_line (95) -0x0000039e: 4a address += 4, line += 0 - 0x0000000000000407 95 29 1 0 0 is_stmt - -0x0000039f: 05 DW_LNS_set_column (19) -0x000003a1: 69 address += 6, line += 3 - 0x000000000000040d 98 19 1 0 0 is_stmt - -0x000003a2: 05 DW_LNS_set_column (16) -0x000003a4: 73 address += 7, line += -1 - 0x0000000000000414 97 16 1 0 0 is_stmt - -0x000003a5: 73 address += 7, line += -1 - 0x000000000000041b 96 16 1 0 0 is_stmt - -0x000003a6: 06 DW_LNS_negate_stmt -0x000003a7: 03 DW_LNS_advance_line (0) -0x000003aa: 74 address += 7, line += 0 - 0x0000000000000422 0 16 1 0 0 - -0x000003ab: 05 DW_LNS_set_column (28) -0x000003ad: 06 DW_LNS_negate_stmt -0x000003ae: 03 DW_LNS_advance_line (94) -0x000003b1: 4a address += 4, line += 0 - 0x0000000000000426 94 28 1 0 0 is_stmt - -0x000003b2: 05 DW_LNS_set_column (18) -0x000003b4: 06 DW_LNS_negate_stmt -0x000003b5: 58 address += 5, line += 0 - 0x000000000000042b 94 18 1 0 0 - -0x000003b6: 05 DW_LNS_set_column (4) -0x000003b8: 58 address += 5, line += 0 - 0x0000000000000430 94 4 1 0 0 - -0x000003b9: 03 DW_LNS_advance_line (0) -0x000003bc: 4a address += 4, line += 0 - 0x0000000000000434 0 4 1 0 0 - -0x000003bd: 05 DW_LNS_set_column (27) -0x000003bf: 06 DW_LNS_negate_stmt -0x000003c0: 03 DW_LNS_advance_line (102) -0x000003c3: 4a address += 4, line += 0 - 0x0000000000000438 102 27 1 0 0 is_stmt - -0x000003c4: 05 DW_LNS_set_column (18) -0x000003c6: 06 DW_LNS_negate_stmt -0x000003c7: 58 address += 5, line += 0 - 0x000000000000043d 102 18 1 0 0 - -0x000003c8: 06 DW_LNS_negate_stmt -0x000003c9: 9f address += 10, line += 1 - 0x0000000000000447 103 18 1 0 0 is_stmt - -0x000003ca: 06 DW_LNS_negate_stmt -0x000003cb: 03 DW_LNS_advance_line (0) -0x000003ce: 9e address += 10, line += 0 - 0x0000000000000451 0 18 1 0 0 - -0x000003cf: 06 DW_LNS_negate_stmt -0x000003d0: 03 DW_LNS_advance_line (105) -0x000003d3: 82 address += 8, line += 0 - 0x0000000000000459 105 18 1 0 0 is_stmt - -0x000003d4: 05 DW_LNS_set_column (4) -0x000003d6: 06 DW_LNS_negate_stmt -0x000003d7: 58 address += 5, line += 0 - 0x000000000000045e 105 4 1 0 0 - -0x000003d8: 03 DW_LNS_advance_line (0) -0x000003db: 2e address += 2, line += 0 - 0x0000000000000460 0 4 1 0 0 - -0x000003dc: 05 DW_LNS_set_column (7) -0x000003de: 06 DW_LNS_negate_stmt -0x000003df: 03 DW_LNS_advance_line (106) -0x000003e2: 2e address += 2, line += 0 - 0x0000000000000462 106 7 1 0 0 is_stmt - -0x000003e3: 05 DW_LNS_set_column (16) -0x000003e5: 06 DW_LNS_negate_stmt -0x000003e6: 82 address += 8, line += 0 - 0x000000000000046a 106 16 1 0 0 - -0x000003e7: 05 DW_LNS_set_column (24) -0x000003e9: 06 DW_LNS_negate_stmt -0x000003ea: 57 address += 5, line += -1 - 0x000000000000046f 105 24 1 0 0 is_stmt - -0x000003eb: 05 DW_LNS_set_column (18) -0x000003ed: 06 DW_LNS_negate_stmt -0x000003ee: 58 address += 5, line += 0 - 0x0000000000000474 105 18 1 0 0 - -0x000003ef: 03 DW_LNS_advance_line (0) -0x000003f2: 74 address += 7, line += 0 - 0x000000000000047b 0 18 1 0 0 - -0x000003f3: 05 DW_LNS_set_column (13) -0x000003f5: 06 DW_LNS_negate_stmt -0x000003f6: 03 DW_LNS_advance_line (112) -0x000003f9: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000003fa: d6 address += 14, line += 0 - 0x000000000000049a 112 13 1 0 0 is_stmt - -0x000003fb: 05 DW_LNS_set_column (26) -0x000003fd: 06 DW_LNS_negate_stmt -0x000003fe: 2e address += 2, line += 0 - 0x000000000000049c 112 26 1 0 0 - -0x000003ff: 05 DW_LNS_set_column (35) -0x00000401: c8 address += 13, line += 0 - 0x00000000000004a9 112 35 1 0 0 - -0x00000402: 05 DW_LNS_set_column (13) -0x00000404: 20 address += 1, line += 0 - 0x00000000000004aa 112 13 1 0 0 - -0x00000405: 05 DW_LNS_set_column (30) -0x00000407: 06 DW_LNS_negate_stmt -0x00000408: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000409: 49 address += 4, line += -1 - 0x00000000000004bf 111 30 1 0 0 is_stmt - -0x0000040a: 05 DW_LNS_set_column (24) -0x0000040c: 06 DW_LNS_negate_stmt -0x0000040d: 58 address += 5, line += 0 - 0x00000000000004c4 111 24 1 0 0 - -0x0000040e: 05 DW_LNS_set_column (10) -0x00000410: 58 address += 5, line += 0 - 0x00000000000004c9 111 10 1 0 0 - -0x00000411: 06 DW_LNS_negate_stmt -0x00000412: 5a address += 5, line += 2 - 0x00000000000004ce 113 10 1 0 0 is_stmt - -0x00000413: 06 DW_LNS_negate_stmt -0x00000414: 03 DW_LNS_advance_line (0) -0x00000417: 74 address += 7, line += 0 - 0x00000000000004d5 0 10 1 0 0 - -0x00000418: 05 DW_LNS_set_column (16) -0x0000041a: 06 DW_LNS_negate_stmt -0x0000041b: 03 DW_LNS_advance_line (118) -0x0000041e: 2e address += 2, line += 0 - 0x00000000000004d7 118 16 1 0 0 is_stmt - -0x0000041f: 05 DW_LNS_set_column (7) -0x00000421: 06 DW_LNS_negate_stmt -0x00000422: 58 address += 5, line += 0 - 0x00000000000004dc 118 7 1 0 0 - -0x00000423: 03 DW_LNS_advance_line (0) -0x00000426: 2e address += 2, line += 0 - 0x00000000000004de 0 7 1 0 0 - -0x00000427: 05 DW_LNS_set_column (10) -0x00000429: 06 DW_LNS_negate_stmt -0x0000042a: 03 DW_LNS_advance_line (119) -0x0000042d: 2e address += 2, line += 0 - 0x00000000000004e0 119 10 1 0 0 is_stmt - -0x0000042e: 05 DW_LNS_set_column (18) -0x00000430: 06 DW_LNS_negate_stmt -0x00000431: 2e address += 2, line += 0 - 0x00000000000004e2 119 18 1 0 0 - -0x00000432: 05 DW_LNS_set_column (10) -0x00000434: 90 address += 9, line += 0 - 0x00000000000004eb 119 10 1 0 0 - -0x00000435: 05 DW_LNS_set_column (23) -0x00000437: 2e address += 2, line += 0 - 0x00000000000004ed 119 23 1 0 0 - -0x00000438: 05 DW_LNS_set_column (16) -0x0000043a: 06 DW_LNS_negate_stmt -0x0000043b: 57 address += 5, line += -1 - 0x00000000000004f2 118 16 1 0 0 is_stmt - -0x0000043c: 05 DW_LNS_set_column (7) -0x0000043e: 06 DW_LNS_negate_stmt -0x0000043f: ac address += 11, line += 0 - 0x00000000000004fd 118 7 1 0 0 - -0x00000440: 05 DW_LNS_set_column (16) -0x00000442: 06 DW_LNS_negate_stmt -0x00000443: 6a address += 6, line += 4 - 0x0000000000000503 122 16 1 0 0 is_stmt - -0x00000444: 06 DW_LNS_negate_stmt -0x00000445: 03 DW_LNS_advance_line (0) -0x00000448: 74 address += 7, line += 0 - 0x000000000000050a 0 16 1 0 0 - -0x00000449: 05 DW_LNS_set_column (22) -0x0000044b: 06 DW_LNS_negate_stmt -0x0000044c: 03 DW_LNS_advance_line (125) -0x0000044f: c8 address += 13, line += 0 - 0x0000000000000517 125 22 1 0 0 is_stmt - -0x00000450: 06 DW_LNS_negate_stmt -0x00000451: 03 DW_LNS_advance_line (0) -0x00000454: 74 address += 7, line += 0 - 0x000000000000051e 0 22 1 0 0 - -0x00000455: 05 DW_LNS_set_column (27) -0x00000457: 06 DW_LNS_negate_stmt -0x00000458: 03 DW_LNS_advance_line (126) -0x0000045b: 2e address += 2, line += 0 - 0x0000000000000520 126 27 1 0 0 is_stmt - -0x0000045c: 05 DW_LNS_set_column (13) -0x0000045e: 06 DW_LNS_negate_stmt -0x0000045f: 58 address += 5, line += 0 - 0x0000000000000525 126 13 1 0 0 - -0x00000460: 03 DW_LNS_advance_line (0) -0x00000463: 2e address += 2, line += 0 - 0x0000000000000527 0 13 1 0 0 - -0x00000464: 05 DW_LNS_set_column (16) -0x00000466: 06 DW_LNS_negate_stmt -0x00000467: 03 DW_LNS_advance_line (127) -0x0000046a: 2e address += 2, line += 0 - 0x0000000000000529 127 16 1 0 0 is_stmt - -0x0000046b: 05 DW_LNS_set_column (27) -0x0000046d: 06 DW_LNS_negate_stmt -0x0000046e: 82 address += 8, line += 0 - 0x0000000000000531 127 27 1 0 0 - -0x0000046f: 05 DW_LNS_set_column (35) -0x00000471: 2e address += 2, line += 0 - 0x0000000000000533 127 35 1 0 0 - -0x00000472: 05 DW_LNS_set_column (27) -0x00000474: 90 address += 9, line += 0 - 0x000000000000053c 127 27 1 0 0 - -0x00000475: 05 DW_LNS_set_column (25) -0x00000477: 58 address += 5, line += 0 - 0x0000000000000541 127 25 1 0 0 - -0x00000478: 05 DW_LNS_set_column (27) -0x0000047a: 06 DW_LNS_negate_stmt -0x0000047b: 3b address += 3, line += -1 - 0x0000000000000544 126 27 1 0 0 is_stmt - -0x0000047c: 05 DW_LNS_set_column (13) -0x0000047e: 06 DW_LNS_negate_stmt -0x0000047f: 58 address += 5, line += 0 - 0x0000000000000549 126 13 1 0 0 - -0x00000480: 05 DW_LNS_set_column (0) -0x00000482: 03 DW_LNS_advance_line (0) -0x00000485: 3c address += 3, line += 0 - 0x000000000000054c 0 0 1 0 0 - -0x00000486: 05 DW_LNS_set_column (13) -0x00000488: 06 DW_LNS_negate_stmt -0x00000489: 03 DW_LNS_advance_line (128) -0x0000048c: 58 address += 5, line += 0 - 0x0000000000000551 128 13 1 0 0 is_stmt - -0x0000048d: 05 DW_LNS_set_column (22) -0x0000048f: 06 DW_LNS_negate_stmt -0x00000490: 82 address += 8, line += 0 - 0x0000000000000559 128 22 1 0 0 - -0x00000491: 05 DW_LNS_set_column (16) -0x00000493: 06 DW_LNS_negate_stmt -0x00000494: 5a address += 5, line += 2 - 0x000000000000055e 130 16 1 0 0 is_stmt - -0x00000495: 05 DW_LNS_set_column (14) -0x00000497: 06 DW_LNS_negate_stmt -0x00000498: 82 address += 8, line += 0 - 0x0000000000000566 130 14 1 0 0 - -0x00000499: 05 DW_LNS_set_column (25) -0x0000049b: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x0000049c: 12 address += 0, line += 0 - 0x0000000000000577 130 25 1 0 0 - -0x0000049d: 05 DW_LNS_set_column (14) -0x0000049f: 58 address += 5, line += 0 - 0x000000000000057c 130 14 1 0 0 - -0x000004a0: 05 DW_LNS_set_column (11) -0x000004a2: 06 DW_LNS_negate_stmt -0x000004a3: 31 address += 2, line += 3 - 0x000000000000057e 133 11 1 0 0 is_stmt - -0x000004a4: 05 DW_LNS_set_column (16) -0x000004a6: 03 DW_LNS_advance_line (122) -0x000004a8: 58 address += 5, line += 0 - 0x0000000000000583 122 16 1 0 0 is_stmt - -0x000004a9: 05 DW_LNS_set_column (14) -0x000004ab: 06 DW_LNS_negate_stmt -0x000004ac: 58 address += 5, line += 0 - 0x0000000000000588 122 14 1 0 0 - -0x000004ad: 03 DW_LNS_advance_line (0) -0x000004b0: 4a address += 4, line += 0 - 0x000000000000058c 0 14 1 0 0 - -0x000004b1: 06 DW_LNS_negate_stmt -0x000004b2: 03 DW_LNS_advance_line (130) -0x000004b5: 20 address += 1, line += 0 - 0x000000000000058d 130 14 1 0 0 is_stmt - -0x000004b6: 05 DW_LNS_set_column (11) -0x000004b8: 03 DW_LNS_advance_line (110) -0x000004ba: 20 address += 1, line += 0 - 0x000000000000058e 110 11 1 0 0 is_stmt - -0x000004bb: 06 DW_LNS_negate_stmt -0x000004bc: 03 DW_LNS_advance_line (0) -0x000004bf: 74 address += 7, line += 0 - 0x0000000000000595 0 11 1 0 0 - -0x000004c0: 05 DW_LNS_set_column (10) -0x000004c2: 06 DW_LNS_negate_stmt -0x000004c3: 03 DW_LNS_advance_line (113) -0x000004c6: 66 address += 6, line += 0 - 0x000000000000059b 113 10 1 0 0 is_stmt - -0x000004c7: 06 DW_LNS_negate_stmt -0x000004c8: 03 DW_LNS_advance_line (0) -0x000004cb: 74 address += 7, line += 0 - 0x00000000000005a2 0 10 1 0 0 - -0x000004cc: 05 DW_LNS_set_column (16) -0x000004ce: 06 DW_LNS_negate_stmt -0x000004cf: 03 DW_LNS_advance_line (118) -0x000004d2: 2e address += 2, line += 0 - 0x00000000000005a4 118 16 1 0 0 is_stmt - -0x000004d3: 05 DW_LNS_set_column (7) -0x000004d5: 06 DW_LNS_negate_stmt -0x000004d6: 58 address += 5, line += 0 - 0x00000000000005a9 118 7 1 0 0 - -0x000004d7: 03 DW_LNS_advance_line (0) -0x000004da: 2e address += 2, line += 0 - 0x00000000000005ab 0 7 1 0 0 - -0x000004db: 05 DW_LNS_set_column (10) -0x000004dd: 06 DW_LNS_negate_stmt -0x000004de: 03 DW_LNS_advance_line (119) -0x000004e1: 2e address += 2, line += 0 - 0x00000000000005ad 119 10 1 0 0 is_stmt - -0x000004e2: 05 DW_LNS_set_column (18) -0x000004e4: 06 DW_LNS_negate_stmt -0x000004e5: 2e address += 2, line += 0 - 0x00000000000005af 119 18 1 0 0 - -0x000004e6: 05 DW_LNS_set_column (10) -0x000004e8: 90 address += 9, line += 0 - 0x00000000000005b8 119 10 1 0 0 - -0x000004e9: 05 DW_LNS_set_column (23) -0x000004eb: 2e address += 2, line += 0 - 0x00000000000005ba 119 23 1 0 0 - -0x000004ec: 05 DW_LNS_set_column (16) -0x000004ee: 06 DW_LNS_negate_stmt -0x000004ef: 57 address += 5, line += -1 - 0x00000000000005bf 118 16 1 0 0 is_stmt - -0x000004f0: 05 DW_LNS_set_column (0) -0x000004f2: 06 DW_LNS_negate_stmt -0x000004f3: 03 DW_LNS_advance_line (0) -0x000004f6: 74 address += 7, line += 0 - 0x00000000000005c6 0 0 1 0 0 - -0x000004f7: 05 DW_LNS_set_column (7) -0x000004f9: 03 DW_LNS_advance_line (118) -0x000004fc: 4a address += 4, line += 0 - 0x00000000000005ca 118 7 1 0 0 - -0x000004fd: 05 DW_LNS_set_column (16) -0x000004ff: 06 DW_LNS_negate_stmt -0x00000500: 6a address += 6, line += 4 - 0x00000000000005d0 122 16 1 0 0 is_stmt - -0x00000501: 05 DW_LNS_set_column (14) -0x00000503: 06 DW_LNS_negate_stmt -0x00000504: 58 address += 5, line += 0 - 0x00000000000005d5 122 14 1 0 0 - -0x00000505: 03 DW_LNS_advance_line (0) -0x00000508: 2e address += 2, line += 0 - 0x00000000000005d7 0 14 1 0 0 - -0x00000509: 05 DW_LNS_set_column (22) -0x0000050b: 06 DW_LNS_negate_stmt -0x0000050c: 03 DW_LNS_advance_line (125) -0x0000050f: 74 address += 7, line += 0 - 0x00000000000005de 125 22 1 0 0 is_stmt - -0x00000510: 06 DW_LNS_negate_stmt -0x00000511: 03 DW_LNS_advance_line (0) -0x00000514: 90 address += 9, line += 0 - 0x00000000000005e7 0 22 1 0 0 - -0x00000515: 05 DW_LNS_set_column (27) -0x00000517: 06 DW_LNS_negate_stmt -0x00000518: 03 DW_LNS_advance_line (126) -0x0000051b: 66 address += 6, line += 0 - 0x00000000000005ed 126 27 1 0 0 is_stmt - -0x0000051c: 05 DW_LNS_set_column (13) -0x0000051e: 06 DW_LNS_negate_stmt -0x0000051f: 58 address += 5, line += 0 - 0x00000000000005f2 126 13 1 0 0 - -0x00000520: 03 DW_LNS_advance_line (0) -0x00000523: 2e address += 2, line += 0 - 0x00000000000005f4 0 13 1 0 0 - -0x00000524: 05 DW_LNS_set_column (16) -0x00000526: 06 DW_LNS_negate_stmt -0x00000527: 03 DW_LNS_advance_line (127) -0x0000052a: 2e address += 2, line += 0 - 0x00000000000005f6 127 16 1 0 0 is_stmt - -0x0000052b: 05 DW_LNS_set_column (27) -0x0000052d: 06 DW_LNS_negate_stmt -0x0000052e: 82 address += 8, line += 0 - 0x00000000000005fe 127 27 1 0 0 - -0x0000052f: 05 DW_LNS_set_column (35) -0x00000531: 2e address += 2, line += 0 - 0x0000000000000600 127 35 1 0 0 - -0x00000532: 05 DW_LNS_set_column (27) -0x00000534: 90 address += 9, line += 0 - 0x0000000000000609 127 27 1 0 0 - -0x00000535: 05 DW_LNS_set_column (25) -0x00000537: 58 address += 5, line += 0 - 0x000000000000060e 127 25 1 0 0 - -0x00000538: 05 DW_LNS_set_column (27) -0x0000053a: 06 DW_LNS_negate_stmt -0x0000053b: 3b address += 3, line += -1 - 0x0000000000000611 126 27 1 0 0 is_stmt - -0x0000053c: 05 DW_LNS_set_column (13) -0x0000053e: 06 DW_LNS_negate_stmt -0x0000053f: 58 address += 5, line += 0 - 0x0000000000000616 126 13 1 0 0 - -0x00000540: 05 DW_LNS_set_column (0) -0x00000542: 03 DW_LNS_advance_line (0) -0x00000545: 3c address += 3, line += 0 - 0x0000000000000619 0 0 1 0 0 - -0x00000546: 05 DW_LNS_set_column (13) -0x00000548: 06 DW_LNS_negate_stmt -0x00000549: 03 DW_LNS_advance_line (128) -0x0000054c: 58 address += 5, line += 0 - 0x000000000000061e 128 13 1 0 0 is_stmt - -0x0000054d: 05 DW_LNS_set_column (22) -0x0000054f: 06 DW_LNS_negate_stmt -0x00000550: 82 address += 8, line += 0 - 0x0000000000000626 128 22 1 0 0 - -0x00000551: 05 DW_LNS_set_column (16) -0x00000553: 06 DW_LNS_negate_stmt -0x00000554: 5a address += 5, line += 2 - 0x000000000000062b 130 16 1 0 0 is_stmt - -0x00000555: 05 DW_LNS_set_column (14) -0x00000557: 06 DW_LNS_negate_stmt -0x00000558: 82 address += 8, line += 0 - 0x0000000000000633 130 14 1 0 0 - -0x00000559: 05 DW_LNS_set_column (25) -0x0000055b: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x0000055c: 12 address += 0, line += 0 - 0x0000000000000644 130 25 1 0 0 - -0x0000055d: 05 DW_LNS_set_column (14) -0x0000055f: 58 address += 5, line += 0 - 0x0000000000000649 130 14 1 0 0 - -0x00000560: 05 DW_LNS_set_column (11) -0x00000562: 06 DW_LNS_negate_stmt -0x00000563: 31 address += 2, line += 3 - 0x000000000000064b 133 11 1 0 0 is_stmt - -0x00000564: 05 DW_LNS_set_column (16) -0x00000566: 03 DW_LNS_advance_line (122) -0x00000568: 58 address += 5, line += 0 - 0x0000000000000650 122 16 1 0 0 is_stmt - -0x00000569: 05 DW_LNS_set_column (14) -0x0000056b: 06 DW_LNS_negate_stmt -0x0000056c: 58 address += 5, line += 0 - 0x0000000000000655 122 14 1 0 0 - -0x0000056d: 03 DW_LNS_advance_line (0) -0x00000570: 4a address += 4, line += 0 - 0x0000000000000659 0 14 1 0 0 - -0x00000571: 06 DW_LNS_negate_stmt -0x00000572: 03 DW_LNS_advance_line (130) -0x00000575: 20 address += 1, line += 0 - 0x000000000000065a 130 14 1 0 0 is_stmt - -0x00000576: 05 DW_LNS_set_column (11) -0x00000578: 03 DW_LNS_advance_line (110) -0x0000057a: 20 address += 1, line += 0 - 0x000000000000065b 110 11 1 0 0 is_stmt - -0x0000057b: 05 DW_LNS_set_column (4) -0x0000057d: 03 DW_LNS_advance_line (138) -0x0000057f: 66 address += 6, line += 0 - 0x0000000000000661 138 4 1 0 0 is_stmt - -0x00000580: 83 address += 8, line += 1 - 0x0000000000000669 139 4 1 0 0 is_stmt - -0x00000581: 06 DW_LNS_negate_stmt -0x00000582: 03 DW_LNS_advance_line (0) -0x00000585: 82 address += 8, line += 0 - 0x0000000000000671 0 4 1 0 0 - -0x00000586: 06 DW_LNS_negate_stmt -0x00000587: 03 DW_LNS_advance_line (141) -0x0000058a: 82 address += 8, line += 0 - 0x0000000000000679 141 4 1 0 0 is_stmt - -0x0000058b: 06 DW_LNS_negate_stmt -0x0000058c: 03 DW_LNS_advance_line (0) -0x0000058f: 74 address += 7, line += 0 - 0x0000000000000680 0 4 1 0 0 - -0x00000590: 05 DW_LNS_set_column (20) -0x00000592: 06 DW_LNS_negate_stmt -0x00000593: 03 DW_LNS_advance_line (142) -0x00000596: 4a address += 4, line += 0 - 0x0000000000000684 142 20 1 0 0 is_stmt - -0x00000597: be address += 12, line += 4 - 0x0000000000000690 146 20 1 0 0 is_stmt - -0x00000598: 05 DW_LNS_set_column (7) -0x0000059a: 75 address += 7, line += 1 - 0x0000000000000697 147 7 1 0 0 is_stmt - -0x0000059b: 05 DW_LNS_set_column (11) -0x0000059d: 7e address += 8, line += -4 - 0x000000000000069f 143 11 1 0 0 is_stmt - -0x0000059e: 05 DW_LNS_set_column (20) -0x000005a0: 06 DW_LNS_negate_stmt -0x000005a1: 4a address += 4, line += 0 - 0x00000000000006a3 143 20 1 0 0 - -0x000005a2: 05 DW_LNS_set_column (11) -0x000005a4: 58 address += 5, line += 0 - 0x00000000000006a8 143 11 1 0 0 - -0x000005a5: 03 DW_LNS_advance_line (0) -0x000005a8: 3c address += 3, line += 0 - 0x00000000000006ab 0 11 1 0 0 - -0x000005a9: 05 DW_LNS_set_column (4) -0x000005ab: 06 DW_LNS_negate_stmt -0x000005ac: 03 DW_LNS_advance_line (141) -0x000005af: 4a address += 4, line += 0 - 0x00000000000006af 141 4 1 0 0 is_stmt - -0x000005b0: 03 DW_LNS_advance_line (159) -0x000005b2: 66 address += 6, line += 0 - 0x00000000000006b5 159 4 1 0 0 is_stmt - -0x000005b3: 06 DW_LNS_negate_stmt -0x000005b4: 03 DW_LNS_advance_line (0) -0x000005b7: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x000005b8: ba address += 12, line += 0 - 0x00000000000006d2 0 4 1 0 0 - -0x000005b9: 05 DW_LNS_set_column (1) -0x000005bb: 06 DW_LNS_negate_stmt -0x000005bc: 03 DW_LNS_advance_line (161) -0x000005bf: 20 address += 1, line += 0 - 0x00000000000006d3 161 1 1 0 0 is_stmt - -0x000005c0: 02 DW_LNS_advance_pc (14) -0x000005c2: 00 DW_LNE_end_sequence - 0x00000000000006e1 161 1 1 0 0 is_stmt end_sequence - - -.debug_str contents: -0x00000000: "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)" -0x00000069: "/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp" -0x000000a9: "/usr/local/google/home/azakai/Dev/2-binaryen" -0x000000d6: "i" -0x000000d8: "int" -0x000000dc: "n" -0x000000de: "next" -0x000000e3: "worker_args" -0x000000ef: "std" -0x000000f3: "decltype(nullptr)" -0x00000105: "nullptr_t" -0x0000010f: "free" -0x00000114: "_ZL8fannkuchi" -0x00000122: "fannkuch" -0x0000012b: "showmax" -0x00000133: "args" -0x00000138: "targs" -0x0000013e: "perm1" -0x00000144: "count" -0x0000014a: "r" -0x0000014c: "maxflips" -0x00000155: "flips" -0x0000015b: "cleanup" -0x00000163: "p0" -0x00000166: "_Z15fannkuch_workerPv" -0x0000017c: "fannkuch_worker" -0x0000018c: "main" -0x00000191: "_arg" -0x00000196: "perm" -0x0000019b: "k" -0x0000019d: "j" -0x0000019f: "tmp" -0x000001a3: "argc" -0x000001a8: "argv" -0x000001ad: "char" - -.debug_ranges contents: -00000000 00000185 000001c3 -00000000 000001ed 000001f6 -00000000 0000030e 0000034c -00000000 00000376 0000037f -00000000 -00000028 00000517 0000055e -00000028 000005de 0000062b -00000028 -00000040 00000006 0000039d -00000040 0000039f 000006e1 -00000040 -DWARF debug info -================ - -Contains section .debug_info (851 bytes) -Contains section .debug_loc (1073 bytes) -Contains section .debug_ranges (88 bytes) -Contains section .debug_abbrev (333 bytes) -Contains section .debug_line (2662 bytes) -Contains section .debug_str (434 bytes) - -.debug_abbrev contents: -Abbrev table for offset: 0x00000000 -[1] DW_TAG_compile_unit DW_CHILDREN_yes - DW_AT_producer DW_FORM_strp - DW_AT_language DW_FORM_data2 - DW_AT_name DW_FORM_strp - DW_AT_stmt_list DW_FORM_sec_offset - DW_AT_comp_dir DW_FORM_strp - DW_AT_low_pc DW_FORM_addr - DW_AT_ranges DW_FORM_sec_offset - -[2] DW_TAG_pointer_type DW_CHILDREN_no - DW_AT_type DW_FORM_ref4 - -[3] DW_TAG_structure_type DW_CHILDREN_yes - DW_AT_calling_convention DW_FORM_data1 - DW_AT_name DW_FORM_strp - DW_AT_byte_size DW_FORM_data1 - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - -[4] DW_TAG_member DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_type DW_FORM_ref4 - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_data_member_location DW_FORM_data1 - -[5] DW_TAG_base_type DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_encoding DW_FORM_data1 - DW_AT_byte_size DW_FORM_data1 - -[6] DW_TAG_namespace DW_CHILDREN_yes - DW_AT_name DW_FORM_strp - -[7] DW_TAG_typedef DW_CHILDREN_no - DW_AT_type DW_FORM_ref4 - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - -[8] DW_TAG_unspecified_type DW_CHILDREN_no - DW_AT_name DW_FORM_strp - -[9] DW_TAG_imported_declaration DW_CHILDREN_no - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_import DW_FORM_ref4 - -[10] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_frame_base DW_FORM_exprloc - DW_AT_GNU_all_call_sites DW_FORM_flag_present - DW_AT_linkage_name DW_FORM_strp - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - -[11] DW_TAG_formal_parameter DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[12] DW_TAG_variable DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[13] DW_TAG_variable DW_CHILDREN_no - DW_AT_location DW_FORM_sec_offset - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[14] DW_TAG_lexical_block DW_CHILDREN_yes - DW_AT_ranges DW_FORM_sec_offset - -[15] DW_TAG_GNU_call_site DW_CHILDREN_no - DW_AT_low_pc DW_FORM_addr - -[16] DW_TAG_GNU_call_site DW_CHILDREN_no - DW_AT_abstract_origin DW_FORM_ref4 - DW_AT_low_pc DW_FORM_addr - -[17] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_declaration DW_FORM_flag_present - DW_AT_external DW_FORM_flag_present - -[18] DW_TAG_formal_parameter DW_CHILDREN_no - DW_AT_type DW_FORM_ref4 - -[19] DW_TAG_pointer_type DW_CHILDREN_no - -[20] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_linkage_name DW_FORM_strp - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_inline DW_FORM_data1 - -[21] DW_TAG_label DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - -[22] DW_TAG_lexical_block DW_CHILDREN_yes - -[23] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_frame_base DW_FORM_exprloc - DW_AT_GNU_all_call_sites DW_FORM_flag_present - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - -[24] DW_TAG_inlined_subroutine DW_CHILDREN_yes - DW_AT_abstract_origin DW_FORM_ref4 - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_call_file DW_FORM_data1 - DW_AT_call_line DW_FORM_data1 - DW_AT_call_column DW_FORM_data1 - -[25] DW_TAG_formal_parameter DW_CHILDREN_no - DW_AT_abstract_origin DW_FORM_ref4 - -[26] DW_TAG_variable DW_CHILDREN_no - DW_AT_location DW_FORM_sec_offset - DW_AT_abstract_origin DW_FORM_ref4 - -[27] DW_TAG_variable DW_CHILDREN_no - DW_AT_abstract_origin DW_FORM_ref4 - -[28] DW_TAG_label DW_CHILDREN_no - DW_AT_abstract_origin DW_FORM_ref4 - DW_AT_low_pc DW_FORM_addr - - -.debug_info contents: -0x00000000: Compile Unit: length = 0x0000034f version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x00000353) - -0x0000000b: DW_TAG_compile_unit [1] * - DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)") - DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000069] = "/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) - DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x000000a9] = "/usr/local/google/home/azakai/Dev/2-binaryen") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) - DW_AT_ranges [DW_FORM_sec_offset] (0x00000040 - [0x00000007, 0x00000364) - [0x00000366, 0x00000639)) - -0x00000026: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x002b => {0x0000002b} "worker_args") - -0x0000002b: DW_TAG_structure_type [3] * - DW_AT_calling_convention [DW_FORM_data1] (DW_CC_pass_by_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e3] = "worker_args") - DW_AT_byte_size [DW_FORM_data1] (0x0c) - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (20) - -0x00000034: DW_TAG_member [4] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (21) - DW_AT_data_member_location [DW_FORM_data1] (0x00) - -0x00000040: DW_TAG_member [4] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (21) - DW_AT_data_member_location [DW_FORM_data1] (0x04) - -0x0000004c: DW_TAG_member [4] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000de] = "next") - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (22) - DW_AT_data_member_location [DW_FORM_data1] (0x08) - -0x00000058: NULL - -0x00000059: DW_TAG_base_type [5] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d8] = "int") - DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) - DW_AT_byte_size [DW_FORM_data1] (0x04) - -0x00000060: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000065: DW_TAG_namespace [6] * - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ef] = "std") - -0x0000006a: DW_TAG_typedef [7] - DW_AT_type [DW_FORM_ref4] (cu + 0x0076 => {0x00000076} "decltype(nullptr)") - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000105] = "nullptr_t") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libcxx/__nullptr") - DW_AT_decl_line [DW_FORM_data1] (57) - -0x00000075: NULL - -0x00000076: DW_TAG_unspecified_type [8] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000f3] = "decltype(nullptr)") - -0x0000007b: DW_TAG_imported_declaration [9] - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libcxx/stddef.h") - DW_AT_decl_line [DW_FORM_data1] (52) - DW_AT_import [DW_FORM_ref4] (cu + 0x006a => {0x0000006a}) - -0x00000082: DW_TAG_subprogram [10] * - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000007) - DW_AT_high_pc [DW_FORM_data4] (0x0000035d) - DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x1 +0, DW_OP_stack_value) - DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) - DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x00000166] = "_Z15fannkuch_workerPv") - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000017c] = "fannkuch_worker") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (26) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x0000009e: DW_TAG_formal_parameter [11] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000191] = "_arg") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (26) - DW_AT_type [DW_FORM_ref4] (cu + 0x01a7 => {0x000001a7} "*") - -0x000000a9: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000133] = "args") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (28) - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - -0x000000b4: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x00000000: - [0xffffffff, 0x00000006): - [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014c] = "maxflips") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000000c3: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x0000001d: - [0xffffffff, 0x00000006): - [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value - [0x00000041, 0x00000046): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x00000001, 0x00000001): DW_OP_consts +1, DW_OP_stack_value - [0x00000110, 0x0000011a): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value - [0x00000239, 0x00000244): DW_OP_consts +0, DW_OP_stack_value - [0x00000001, 0x00000001): DW_OP_consts +1, DW_OP_stack_value - [0x0000028d, 0x00000297): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000000d2: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000000a5: - [0xffffffff, 0x00000006): - [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000000e1: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000000c3: - [0xffffffff, 0x00000006): - [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000013e] = "perm1") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (29) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x000000f0: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000000e1: - [0xffffffff, 0x00000006): - [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000196] = "perm") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (29) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x000000ff: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000000ff: - [0xffffffff, 0x00000006): - [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000144] = "count") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (29) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x0000010e: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x0000011d: - [0xffffffff, 0x00000006): - [0x000001bf, 0x000001c4): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value - [0x0000033c, 0x00000341): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014a] = "r") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000011d: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x00000149: - [0xffffffff, 0x00000006): - [0x000000b4, 0x000000c7): DW_OP_consts +0, DW_OP_stack_value - [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +13, DW_OP_stack_value - [0x00000139, 0x00000141): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000239, 0x00000244): DW_OP_consts +0, DW_OP_stack_value - [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +10, DW_OP_stack_value - [0x000002b6, 0x000002be): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000155] = "flips") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000012c: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000001ab: - [0xffffffff, 0x00000006): - [0x000000c3, 0x000000c7): DW_OP_WASM_location 0x0 +12, DW_OP_stack_value - [0x00000240, 0x00000244): DW_OP_WASM_location 0x0 +16, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019b] = "k") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000013b: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x000001d7: - [0xffffffff, 0x00000006): - [0x000000db, 0x000000df): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x00000117, 0x0000011a): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x00000258, 0x0000025c): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x00000294, 0x00000297): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019d] = "j") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000014a: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x0000021f: - [0xffffffff, 0x00000006): - [0x000000f0, 0x0000011a): DW_OP_WASM_location 0x0 +15, DW_OP_stack_value - [0x0000012b, 0x00000141): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x0000026d, 0x00000297): DW_OP_WASM_location 0x0 +14, DW_OP_stack_value - [0x000002a8, 0x000002be): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019f] = "tmp") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (30) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000159: DW_TAG_lexical_block [14] * - DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 - [0x00000162, 0x000001a0) - [0x000001ca, 0x000001d3) - [0x000002df, 0x0000031d) - [0x00000347, 0x00000350)) - -0x0000015e: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000163] = "p0") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (74) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000169: NULL - -0x0000016a: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000018) - -0x0000016f: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x000000000000001e) - -0x00000174: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000024) - -0x00000179: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000000c2) - -0x0000017e: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000359) - -0x00000187: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x000000000000035d) - -0x00000190: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000361) - -0x00000199: NULL - -0x0000019a: DW_TAG_subprogram [17] * - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000010f] = "free") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libc/stdlib.h") - DW_AT_decl_line [DW_FORM_data1] (41) - DW_AT_declaration [DW_FORM_flag_present] (true) - DW_AT_external [DW_FORM_flag_present] (true) - -0x000001a1: DW_TAG_formal_parameter [18] - DW_AT_type [DW_FORM_ref4] (cu + 0x01a7 => {0x000001a7} "*") - -0x000001a6: NULL - -0x000001a7: DW_TAG_pointer_type [19] - -0x000001a8: DW_TAG_subprogram [20] * - DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x00000114] = "_ZL8fannkuchi") - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000122] = "fannkuch") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (87) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_inline [DW_FORM_data1] (DW_INL_inlined) - -0x000001b8: DW_TAG_formal_parameter [11] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (87) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000001c3: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000012b] = "showmax") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (90) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000001ce: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000133] = "args") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (89) - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - -0x000001d9: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x000001e4: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000138] = "targs") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (89) - DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") - -0x000001ef: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000013e] = "perm1") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x000001fa: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000144] = "count") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") - -0x00000205: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014a] = "r") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000210: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014c] = "maxflips") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000021b: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000155] = "flips") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (91) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000226: DW_TAG_label [21] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000015b] = "cleanup") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (137) - -0x0000022d: DW_TAG_lexical_block [22] * - -0x0000022e: DW_TAG_variable [12] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000163] = "p0") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (125) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000239: NULL - -0x0000023a: NULL - -0x0000023b: DW_TAG_subprogram [23] * - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000366) - DW_AT_high_pc [DW_FORM_data4] (0x000002d3) - DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) - DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000018c] = "main") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (152) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x00000253: DW_TAG_formal_parameter [11] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001a3] = "argc") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (152) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x0000025e: DW_TAG_formal_parameter [11] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001a8] = "argv") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (152) - DW_AT_type [DW_FORM_ref4] (cu + 0x0341 => {0x00000341} "char**") - -0x00000269: DW_TAG_variable [13] - DW_AT_location [DW_FORM_sec_offset] (0x00000267: - [0xffffffff, 0x0000039f): - [0xffffffe7, 0xffffffec): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_decl_line [DW_FORM_data1] (153) - DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") - -0x00000278: DW_TAG_inlined_subroutine [24] * - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01a8 => {0x000001a8} "_ZL8fannkuchi") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000399) - DW_AT_high_pc [DW_FORM_data4] (0xfffffc67) - DW_AT_call_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") - DW_AT_call_line [DW_FORM_data1] (159) - DW_AT_call_column [DW_FORM_data1] (0x29) - -0x00000288: DW_TAG_formal_parameter [25] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01b8 => {0x000001b8} "n") - -0x0000028d: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x00000285: - [0xffffffff, 0x0000039f): - [0x00000001, 0x00000001): DW_OP_consts +30, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01c3 => {0x000001c3} "showmax") - -0x00000296: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x000002a2: - [0xffffffff, 0x0000039f): - [0x00000001, 0x00000001): DW_OP_lit0, DW_OP_stack_value - [0x0000025f, 0x00000277): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01ce => {0x000001ce} "args") - -0x0000029f: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x000002cc: - [0xffffffff, 0x0000039f): - [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value - [0x00000036, 0x0000003b): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value - [0x00000075, 0x0000007a): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000093, 0x00000097): DW_OP_consts +0, DW_OP_stack_value - [0x000000be, 0x000000c3): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value - [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value - [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01d9 => {0x000001d9} "i") - -0x000002a8: DW_TAG_variable [27] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01e4 => {0x000001e4} "targs") - -0x000002ad: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x00000354: - [0xffffffff, 0x0000039f): - [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01ef => {0x000001ef} "perm1") - -0x000002b6: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x00000372: - [0xffffffff, 0x0000039f): - [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01fa => {0x000001fa} "count") - -0x000002bf: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x00000390: - [0xffffffff, 0x0000039f): - [0x0000016f, 0x00000176): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value - [0x0000022d, 0x00000234): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0205 => {0x00000205} "r") - -0x000002c8: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x000003e8: - [0xffffffff, 0x0000039f): - [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value - [0x0000026f, 0x00000277): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0210 => {0x00000210} "maxflips") - -0x000002d1: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x00000413: - [0xffffffff, 0x0000039f): - [0x00000258, 0x00000277): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x021b => {0x0000021b} "flips") - -0x000002da: DW_TAG_label [28] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0226 => {0x00000226} "cleanup") - DW_AT_low_pc [DW_FORM_addr] (0x00000000000005db) - -0x000002e3: DW_TAG_lexical_block [14] * - DW_AT_ranges [DW_FORM_sec_offset] (0x00000028 - [0x000004a4, 0x000004e9) - [0x0000055c, 0x000005a7)) - -0x000002e8: DW_TAG_variable [26] - DW_AT_location [DW_FORM_sec_offset] (0x000003bc: - [0xffffffff, 0x0000039f): - [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value - [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value) - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x022e => {0x0000022e} "p0") - -0x000002f1: NULL - -0x000002f2: NULL - -0x000002f3: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000384) - -0x000002f8: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000391) - -0x000002fd: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000003b5) - -0x00000302: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000003e9) - -0x00000307: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000003ef) - -0x0000030c: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000455) - -0x00000311: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000467) - -0x00000316: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000525) - -0x0000031b: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x00000000000005df) - -0x00000324: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x00000000000005e3) - -0x0000032d: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x00000000000005f5) - -0x00000332: DW_TAG_GNU_call_site [16] - DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000602) - -0x0000033b: DW_TAG_GNU_call_site [15] - DW_AT_low_pc [DW_FORM_addr] (0x000000000000062d) - -0x00000340: NULL - -0x00000341: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x0346 => {0x00000346} "char*") - -0x00000346: DW_TAG_pointer_type [2] - DW_AT_type [DW_FORM_ref4] (cu + 0x034b => {0x0000034b} "char") - -0x0000034b: DW_TAG_base_type [5] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001ad] = "char") - DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char) - DW_AT_byte_size [DW_FORM_data1] (0x01) - -0x00000352: NULL - -.debug_loc contents: -0x00000000: - [0xffffffff, 0x00000006): - [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value - -0x0000001d: - [0xffffffff, 0x00000006): - [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value - [0x00000041, 0x00000046): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x00000001, 0x00000001): DW_OP_consts +1, DW_OP_stack_value - [0x00000110, 0x0000011a): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value - [0x00000239, 0x00000244): DW_OP_consts +0, DW_OP_stack_value - [0x00000001, 0x00000001): DW_OP_consts +1, DW_OP_stack_value - [0x0000028d, 0x00000297): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value - -0x000000a5: - [0xffffffff, 0x00000006): - [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value - -0x000000c3: - [0xffffffff, 0x00000006): - [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value - -0x000000e1: - [0xffffffff, 0x00000006): - [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value - -0x000000ff: - [0xffffffff, 0x00000006): - [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value - -0x0000011d: - [0xffffffff, 0x00000006): - [0x000001bf, 0x000001c4): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value - [0x0000033c, 0x00000341): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value - -0x00000149: - [0xffffffff, 0x00000006): - [0x000000b4, 0x000000c7): DW_OP_consts +0, DW_OP_stack_value - [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +13, DW_OP_stack_value - [0x00000139, 0x00000141): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000239, 0x00000244): DW_OP_consts +0, DW_OP_stack_value - [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +10, DW_OP_stack_value - [0x000002b6, 0x000002be): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - -0x000001ab: - [0xffffffff, 0x00000006): - [0x000000c3, 0x000000c7): DW_OP_WASM_location 0x0 +12, DW_OP_stack_value - [0x00000240, 0x00000244): DW_OP_WASM_location 0x0 +16, DW_OP_stack_value - -0x000001d7: - [0xffffffff, 0x00000006): - [0x000000db, 0x000000df): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x00000117, 0x0000011a): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x00000258, 0x0000025c): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x00000294, 0x00000297): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - -0x0000021f: - [0xffffffff, 0x00000006): - [0x000000f0, 0x0000011a): DW_OP_WASM_location 0x0 +15, DW_OP_stack_value - [0x0000012b, 0x00000141): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - [0x0000026d, 0x00000297): DW_OP_WASM_location 0x0 +14, DW_OP_stack_value - [0x000002a8, 0x000002be): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - -0x00000267: - [0xffffffff, 0x0000039f): - [0xffffffe7, 0xffffffec): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value - -0x00000285: - [0xffffffff, 0x0000039f): - [0x00000001, 0x00000001): DW_OP_consts +30, DW_OP_stack_value - -0x000002a2: - [0xffffffff, 0x0000039f): - [0x00000001, 0x00000001): DW_OP_lit0, DW_OP_stack_value - [0x0000025f, 0x00000277): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value - -0x000002cc: - [0xffffffff, 0x0000039f): - [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value - [0x00000036, 0x0000003b): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value - [0x00000075, 0x0000007a): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000093, 0x00000097): DW_OP_consts +0, DW_OP_stack_value - [0x000000be, 0x000000c3): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value - [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value - [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value - -0x00000354: - [0xffffffff, 0x0000039f): - [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - -0x00000372: - [0xffffffff, 0x0000039f): - [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value - -0x00000390: - [0xffffffff, 0x0000039f): - [0x0000016f, 0x00000176): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value - [0x0000022d, 0x00000234): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value - -0x000003bc: - [0xffffffff, 0x0000039f): - [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value - [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value - -0x000003e8: - [0xffffffff, 0x0000039f): - [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value - [0x0000026f, 0x00000277): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value - -0x00000413: - [0xffffffff, 0x0000039f): - [0x00000258, 0x00000277): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - -.debug_line contents: -debug_line[0x00000000] -Line table prologue: - total_length: 0x00000a62 - version: 4 - prologue_length: 0x000000dd - min_inst_length: 1 -max_ops_per_inst: 1 - default_is_stmt: 1 - line_base: -5 - line_range: 14 - opcode_base: 13 -standard_opcode_lengths[DW_LNS_copy] = 0 -standard_opcode_lengths[DW_LNS_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_advance_line] = 1 -standard_opcode_lengths[DW_LNS_set_file] = 1 -standard_opcode_lengths[DW_LNS_set_column] = 1 -standard_opcode_lengths[DW_LNS_negate_stmt] = 0 -standard_opcode_lengths[DW_LNS_set_basic_block] = 0 -standard_opcode_lengths[DW_LNS_const_add_pc] = 0 -standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 -standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 -standard_opcode_lengths[DW_LNS_set_isa] = 1 -include_directories[ 1] = "/usr/local/google/home/azakai/Dev" -file_names[ 1]: - name: "emscripten/tests/fannkuch.cpp" - dir_index: 1 - mod_time: 0x00000000 - length: 0x00000000 -file_names[ 2]: - name: "emscripten/system/include/libcxx/__nullptr" - dir_index: 1 - mod_time: 0x00000000 - length: 0x00000000 -file_names[ 3]: - name: "emscripten/system/include/libcxx/stddef.h" - dir_index: 1 - mod_time: 0x00000000 - length: 0x00000000 -file_names[ 4]: - name: "emscripten/system/include/libc/stdlib.h" - dir_index: 1 - mod_time: 0x00000000 - length: 0x00000000 -0x000000e7: 00 DW_LNE_set_address (0x0000000000000007) -0x000000ee: 03 DW_LNS_advance_line (27) -0x000000f0: 01 DW_LNS_copy - 0x0000000000000007 27 0 1 0 0 is_stmt - - -0x000000f1: 00 DW_LNE_set_address (0x000000000000000a) -0x000000f8: 03 DW_LNS_advance_line (33) -0x000000fa: 05 DW_LNS_set_column (14) -0x000000fc: 0a DW_LNS_set_prologue_end -0x000000fd: 01 DW_LNS_copy - 0x000000000000000a 33 14 1 0 0 is_stmt prologue_end - - -0x000000fe: 00 DW_LNE_set_address (0x0000000000000013) -0x00000105: 03 DW_LNS_advance_line (34) -0x00000107: 05 DW_LNS_set_column (27) -0x00000109: 01 DW_LNS_copy - 0x0000000000000013 34 27 1 0 0 is_stmt - - -0x0000010a: 00 DW_LNE_set_address (0x0000000000000014) -0x00000111: 05 DW_LNS_set_column (18) -0x00000113: 06 DW_LNS_negate_stmt -0x00000114: 01 DW_LNS_copy - 0x0000000000000014 34 18 1 0 0 - - -0x00000115: 00 DW_LNE_set_address (0x000000000000001a) -0x0000011c: 03 DW_LNS_advance_line (35) -0x0000011e: 05 DW_LNS_set_column (17) -0x00000120: 06 DW_LNS_negate_stmt -0x00000121: 01 DW_LNS_copy - 0x000000000000001a 35 17 1 0 0 is_stmt - - -0x00000122: 00 DW_LNE_set_address (0x0000000000000020) -0x00000129: 03 DW_LNS_advance_line (36) -0x0000012b: 05 DW_LNS_set_column (18) -0x0000012d: 01 DW_LNS_copy - 0x0000000000000020 36 18 1 0 0 is_stmt - - -0x0000012e: 00 DW_LNE_set_address (0x000000000000002a) -0x00000135: 03 DW_LNS_advance_line (37) -0x00000137: 01 DW_LNS_copy - 0x000000000000002a 37 18 1 0 0 is_stmt - - -0x00000138: 00 DW_LNE_set_address (0x0000000000000033) -0x0000013f: 03 DW_LNS_advance_line (38) -0x00000141: 05 DW_LNS_set_column (7) -0x00000143: 01 DW_LNS_copy - 0x0000000000000033 38 7 1 0 0 is_stmt - - -0x00000144: 00 DW_LNE_set_address (0x000000000000003b) -0x0000014b: 05 DW_LNS_set_column (16) -0x0000014d: 06 DW_LNS_negate_stmt -0x0000014e: 01 DW_LNS_copy - 0x000000000000003b 38 16 1 0 0 - - -0x0000014f: 00 DW_LNE_set_address (0x0000000000000040) -0x00000156: 03 DW_LNS_advance_line (37) -0x00000158: 05 DW_LNS_set_column (24) -0x0000015a: 06 DW_LNS_negate_stmt -0x0000015b: 01 DW_LNS_copy - 0x0000000000000040 37 24 1 0 0 is_stmt - - -0x0000015c: 00 DW_LNE_set_address (0x0000000000000045) -0x00000163: 05 DW_LNS_set_column (18) -0x00000165: 06 DW_LNS_negate_stmt -0x00000166: 01 DW_LNS_copy - 0x0000000000000045 37 18 1 0 0 - - -0x00000167: 00 DW_LNE_set_address (0x000000000000004a) -0x0000016e: 05 DW_LNS_set_column (4) -0x00000170: 01 DW_LNS_copy - 0x000000000000004a 37 4 1 0 0 - - -0x00000171: 00 DW_LNE_set_address (0x000000000000004d) -0x00000178: 03 DW_LNS_advance_line (39) -0x0000017a: 06 DW_LNS_negate_stmt -0x0000017b: 01 DW_LNS_copy - 0x000000000000004d 39 4 1 0 0 is_stmt - - -0x0000017c: 00 DW_LNE_set_address (0x000000000000004f) -0x00000183: 05 DW_LNS_set_column (16) -0x00000185: 06 DW_LNS_negate_stmt -0x00000186: 01 DW_LNS_copy - 0x000000000000004f 39 16 1 0 0 - - -0x00000187: 00 DW_LNE_set_address (0x0000000000000058) -0x0000018e: 05 DW_LNS_set_column (4) -0x00000190: 01 DW_LNS_copy - 0x0000000000000058 39 4 1 0 0 - - -0x00000191: 00 DW_LNE_set_address (0x000000000000005a) -0x00000198: 05 DW_LNS_set_column (23) -0x0000019a: 01 DW_LNS_copy - 0x000000000000005a 39 23 1 0 0 - - -0x0000019b: 00 DW_LNE_set_address (0x000000000000005f) -0x000001a2: 05 DW_LNS_set_column (19) -0x000001a4: 01 DW_LNS_copy - 0x000000000000005f 39 19 1 0 0 - - -0x000001a5: 00 DW_LNE_set_address (0x0000000000000064) -0x000001ac: 03 DW_LNS_advance_line (40) -0x000001ae: 05 DW_LNS_set_column (4) -0x000001b0: 06 DW_LNS_negate_stmt -0x000001b1: 01 DW_LNS_copy - 0x0000000000000064 40 4 1 0 0 is_stmt - - -0x000001b2: 00 DW_LNE_set_address (0x000000000000006c) -0x000001b9: 05 DW_LNS_set_column (17) -0x000001bb: 06 DW_LNS_negate_stmt -0x000001bc: 01 DW_LNS_copy - 0x000000000000006c 40 17 1 0 0 - - -0x000001bd: 00 DW_LNE_set_address (0x0000000000000073) -0x000001c4: 03 DW_LNS_advance_line (37) -0x000001c6: 05 DW_LNS_set_column (18) -0x000001c8: 06 DW_LNS_negate_stmt -0x000001c9: 01 DW_LNS_copy - 0x0000000000000073 37 18 1 0 0 is_stmt - - -0x000001ca: 00 DW_LNE_set_address (0x0000000000000078) -0x000001d1: 03 DW_LNS_advance_line (43) -0x000001d3: 05 DW_LNS_set_column (4) -0x000001d5: 01 DW_LNS_copy - 0x0000000000000078 43 4 1 0 0 is_stmt - - -0x000001d6: 00 DW_LNE_set_address (0x000000000000007c) -0x000001dd: 03 DW_LNS_advance_line (44) -0x000001df: 05 DW_LNS_set_column (16) -0x000001e1: 01 DW_LNS_copy - 0x000000000000007c 44 16 1 0 0 is_stmt - - -0x000001e2: 00 DW_LNE_set_address (0x0000000000000085) -0x000001e9: 03 DW_LNS_advance_line (45) -0x000001eb: 05 DW_LNS_set_column (10) -0x000001ed: 01 DW_LNS_copy - 0x0000000000000085 45 10 1 0 0 is_stmt - - -0x000001ee: 00 DW_LNE_set_address (0x0000000000000087) -0x000001f5: 05 DW_LNS_set_column (18) -0x000001f7: 06 DW_LNS_negate_stmt -0x000001f8: 01 DW_LNS_copy - 0x0000000000000087 45 18 1 0 0 - - -0x000001f9: 00 DW_LNE_set_address (0x0000000000000090) -0x00000200: 05 DW_LNS_set_column (10) -0x00000202: 01 DW_LNS_copy - 0x0000000000000090 45 10 1 0 0 - - -0x00000203: 00 DW_LNE_set_address (0x0000000000000092) -0x0000020a: 05 DW_LNS_set_column (23) -0x0000020c: 01 DW_LNS_copy - 0x0000000000000092 45 23 1 0 0 - - -0x0000020d: 00 DW_LNE_set_address (0x0000000000000097) -0x00000214: 03 DW_LNS_advance_line (44) -0x00000216: 05 DW_LNS_set_column (16) -0x00000218: 06 DW_LNS_negate_stmt -0x00000219: 01 DW_LNS_copy - 0x0000000000000097 44 16 1 0 0 is_stmt - - -0x0000021a: 00 DW_LNE_set_address (0x00000000000000a4) -0x00000221: 03 DW_LNS_advance_line (46) -0x00000223: 05 DW_LNS_set_column (11) -0x00000225: 01 DW_LNS_copy - 0x00000000000000a4 46 11 1 0 0 is_stmt - - -0x00000226: 00 DW_LNE_set_address (0x00000000000000b0) -0x0000022d: 05 DW_LNS_set_column (28) -0x0000022f: 06 DW_LNS_negate_stmt -0x00000230: 01 DW_LNS_copy - 0x00000000000000b0 46 28 1 0 0 - - -0x00000231: 00 DW_LNE_set_address (0x00000000000000b5) -0x00000238: 05 DW_LNS_set_column (41) -0x0000023a: 01 DW_LNS_copy - 0x00000000000000b5 46 41 1 0 0 - - -0x0000023b: 00 DW_LNE_set_address (0x00000000000000ba) -0x00000242: 03 DW_LNS_advance_line (48) -0x00000244: 05 DW_LNS_set_column (21) -0x00000246: 06 DW_LNS_negate_stmt -0x00000247: 01 DW_LNS_copy - 0x00000000000000ba 48 21 1 0 0 is_stmt - - -0x00000248: 00 DW_LNE_set_address (0x00000000000000c2) -0x0000024f: 03 DW_LNS_advance_line (50) -0x00000251: 05 DW_LNS_set_column (14) -0x00000253: 01 DW_LNS_copy - 0x00000000000000c2 50 14 1 0 0 is_stmt - - -0x00000254: 00 DW_LNE_set_address (0x00000000000000d3) -0x0000025b: 03 DW_LNS_advance_line (52) -0x0000025d: 05 DW_LNS_set_column (38) -0x0000025f: 01 DW_LNS_copy - 0x00000000000000d3 52 38 1 0 0 is_stmt - - -0x00000260: 00 DW_LNE_set_address (0x00000000000000e7) -0x00000267: 03 DW_LNS_advance_line (53) -0x00000269: 05 DW_LNS_set_column (22) -0x0000026b: 01 DW_LNS_copy - 0x00000000000000e7 53 22 1 0 0 is_stmt - - -0x0000026c: 00 DW_LNE_set_address (0x00000000000000f6) -0x00000273: 03 DW_LNS_advance_line (54) -0x00000275: 05 DW_LNS_set_column (24) -0x00000277: 01 DW_LNS_copy - 0x00000000000000f6 54 24 1 0 0 is_stmt - - -0x00000278: 00 DW_LNE_set_address (0x00000000000000f8) -0x0000027f: 05 DW_LNS_set_column (26) -0x00000281: 06 DW_LNS_negate_stmt -0x00000282: 01 DW_LNS_copy - 0x00000000000000f8 54 26 1 0 0 - - -0x00000283: 00 DW_LNE_set_address (0x0000000000000105) -0x0000028a: 05 DW_LNS_set_column (24) -0x0000028c: 01 DW_LNS_copy - 0x0000000000000105 54 24 1 0 0 - - -0x0000028d: 00 DW_LNE_set_address (0x0000000000000108) -0x00000294: 03 DW_LNS_advance_line (55) -0x00000296: 06 DW_LNS_negate_stmt -0x00000297: 01 DW_LNS_copy - 0x0000000000000108 55 24 1 0 0 is_stmt - - -0x00000298: 00 DW_LNE_set_address (0x000000000000010f) -0x0000029f: 03 DW_LNS_advance_line (52) -0x000002a1: 05 DW_LNS_set_column (44) -0x000002a3: 01 DW_LNS_copy - 0x000000000000010f 52 44 1 0 0 is_stmt - - -0x000002a4: 00 DW_LNE_set_address (0x000000000000011b) -0x000002ab: 05 DW_LNS_set_column (38) -0x000002ad: 06 DW_LNS_negate_stmt -0x000002ae: 01 DW_LNS_copy - 0x000000000000011b 52 38 1 0 0 - - -0x000002af: 00 DW_LNE_set_address (0x000000000000011e) -0x000002b6: 05 DW_LNS_set_column (13) -0x000002b8: 01 DW_LNS_copy - 0x000000000000011e 52 13 1 0 0 - - -0x000002b9: 00 DW_LNE_set_address (0x0000000000000122) -0x000002c0: 03 DW_LNS_advance_line (58) -0x000002c2: 05 DW_LNS_set_column (19) -0x000002c4: 06 DW_LNS_negate_stmt -0x000002c5: 01 DW_LNS_copy - 0x0000000000000122 58 19 1 0 0 is_stmt - - -0x000002c6: 00 DW_LNE_set_address (0x0000000000000131) -0x000002cd: 03 DW_LNS_advance_line (59) -0x000002cf: 05 DW_LNS_set_column (21) -0x000002d1: 01 DW_LNS_copy - 0x0000000000000131 59 21 1 0 0 is_stmt - - -0x000002d2: 00 DW_LNE_set_address (0x0000000000000138) -0x000002d9: 03 DW_LNS_advance_line (57) -0x000002db: 05 DW_LNS_set_column (18) -0x000002dd: 01 DW_LNS_copy - 0x0000000000000138 57 18 1 0 0 is_stmt - - -0x000002de: 00 DW_LNE_set_address (0x0000000000000148) -0x000002e5: 03 DW_LNS_advance_line (62) -0x000002e7: 05 DW_LNS_set_column (14) -0x000002e9: 01 DW_LNS_copy - 0x0000000000000148 62 14 1 0 0 is_stmt - - -0x000002ea: 00 DW_LNE_set_address (0x000000000000014c) -0x000002f1: 05 DW_LNS_set_column (23) -0x000002f3: 06 DW_LNS_negate_stmt -0x000002f4: 01 DW_LNS_copy - 0x000000000000014c 62 23 1 0 0 - - -0x000002f5: 00 DW_LNE_set_address (0x0000000000000151) -0x000002fc: 05 DW_LNS_set_column (14) -0x000002fe: 01 DW_LNS_copy - 0x0000000000000151 62 14 1 0 0 - - -0x000002ff: 00 DW_LNE_set_address (0x0000000000000155) -0x00000306: 03 DW_LNS_advance_line (66) -0x00000308: 05 DW_LNS_set_column (16) -0x0000030a: 06 DW_LNS_negate_stmt -0x0000030b: 01 DW_LNS_copy - 0x0000000000000155 66 16 1 0 0 is_stmt - - -0x0000030c: 00 DW_LNE_set_address (0x0000000000000162) -0x00000313: 03 DW_LNS_advance_line (75) -0x00000315: 05 DW_LNS_set_column (27) -0x00000317: 01 DW_LNS_copy - 0x0000000000000162 75 27 1 0 0 is_stmt - - -0x00000318: 00 DW_LNE_set_address (0x000000000000016b) -0x0000031f: 03 DW_LNS_advance_line (76) -0x00000321: 05 DW_LNS_set_column (16) -0x00000323: 01 DW_LNS_copy - 0x000000000000016b 76 16 1 0 0 is_stmt - - -0x00000324: 00 DW_LNE_set_address (0x0000000000000173) -0x0000032b: 05 DW_LNS_set_column (27) -0x0000032d: 06 DW_LNS_negate_stmt -0x0000032e: 01 DW_LNS_copy - 0x0000000000000173 76 27 1 0 0 - - -0x0000032f: 00 DW_LNE_set_address (0x0000000000000175) -0x00000336: 05 DW_LNS_set_column (35) -0x00000338: 01 DW_LNS_copy - 0x0000000000000175 76 35 1 0 0 - - -0x00000339: 00 DW_LNE_set_address (0x000000000000017e) -0x00000340: 05 DW_LNS_set_column (27) -0x00000342: 01 DW_LNS_copy - 0x000000000000017e 76 27 1 0 0 - - -0x00000343: 00 DW_LNE_set_address (0x0000000000000183) -0x0000034a: 05 DW_LNS_set_column (25) -0x0000034c: 01 DW_LNS_copy - 0x0000000000000183 76 25 1 0 0 - - -0x0000034d: 00 DW_LNE_set_address (0x0000000000000186) -0x00000354: 03 DW_LNS_advance_line (75) -0x00000356: 05 DW_LNS_set_column (27) -0x00000358: 06 DW_LNS_negate_stmt -0x00000359: 01 DW_LNS_copy - 0x0000000000000186 75 27 1 0 0 is_stmt - - -0x0000035a: 00 DW_LNE_set_address (0x000000000000018b) -0x00000361: 05 DW_LNS_set_column (13) -0x00000363: 06 DW_LNS_negate_stmt -0x00000364: 01 DW_LNS_copy - 0x000000000000018b 75 13 1 0 0 - - -0x00000365: 00 DW_LNE_set_address (0x0000000000000193) -0x0000036c: 03 DW_LNS_advance_line (77) -0x0000036e: 06 DW_LNS_negate_stmt -0x0000036f: 01 DW_LNS_copy - 0x0000000000000193 77 13 1 0 0 is_stmt - - -0x00000370: 00 DW_LNE_set_address (0x000000000000019b) -0x00000377: 05 DW_LNS_set_column (22) -0x00000379: 06 DW_LNS_negate_stmt -0x0000037a: 01 DW_LNS_copy - 0x000000000000019b 77 22 1 0 0 - - -0x0000037b: 00 DW_LNE_set_address (0x00000000000001a0) -0x00000382: 03 DW_LNS_advance_line (79) -0x00000384: 05 DW_LNS_set_column (16) -0x00000386: 06 DW_LNS_negate_stmt -0x00000387: 01 DW_LNS_copy - 0x00000000000001a0 79 16 1 0 0 is_stmt - - -0x00000388: 00 DW_LNE_set_address (0x00000000000001a8) -0x0000038f: 05 DW_LNS_set_column (14) -0x00000391: 06 DW_LNS_negate_stmt -0x00000392: 01 DW_LNS_copy - 0x00000000000001a8 79 14 1 0 0 - - -0x00000393: 00 DW_LNE_set_address (0x00000000000001b7) -0x0000039a: 05 DW_LNS_set_column (25) -0x0000039c: 01 DW_LNS_copy - 0x00000000000001b7 79 25 1 0 0 - - -0x0000039d: 00 DW_LNE_set_address (0x00000000000001be) -0x000003a4: 03 DW_LNS_advance_line (81) -0x000003a6: 05 DW_LNS_set_column (11) -0x000003a8: 06 DW_LNS_negate_stmt -0x000003a9: 01 DW_LNS_copy - 0x00000000000001be 81 11 1 0 0 is_stmt - - -0x000003aa: 00 DW_LNE_set_address (0x00000000000001c3) -0x000003b1: 03 DW_LNS_advance_line (66) -0x000003b3: 05 DW_LNS_set_column (16) -0x000003b5: 01 DW_LNS_copy - 0x00000000000001c3 66 16 1 0 0 is_stmt - - -0x000003b6: 00 DW_LNE_set_address (0x00000000000001ca) -0x000003bd: 03 DW_LNS_advance_line (74) -0x000003bf: 05 DW_LNS_set_column (22) -0x000003c1: 01 DW_LNS_copy - 0x00000000000001ca 74 22 1 0 0 is_stmt - - -0x000003c2: 00 DW_LNE_set_address (0x00000000000001d3) -0x000003c9: 03 DW_LNS_advance_line (37) -0x000003cb: 05 DW_LNS_set_column (4) -0x000003cd: 01 DW_LNS_copy - 0x00000000000001d3 37 4 1 0 0 is_stmt - - -0x000003ce: 00 DW_LNE_set_address (0x00000000000001d8) -0x000003d5: 03 DW_LNS_advance_line (39) -0x000003d7: 01 DW_LNS_copy - 0x00000000000001d8 39 4 1 0 0 is_stmt - - -0x000003d8: 00 DW_LNE_set_address (0x00000000000001da) -0x000003df: 05 DW_LNS_set_column (16) -0x000003e1: 06 DW_LNS_negate_stmt -0x000003e2: 01 DW_LNS_copy - 0x00000000000001da 39 16 1 0 0 - - -0x000003e3: 00 DW_LNE_set_address (0x00000000000001e3) -0x000003ea: 05 DW_LNS_set_column (4) -0x000003ec: 01 DW_LNS_copy - 0x00000000000001e3 39 4 1 0 0 - - -0x000003ed: 00 DW_LNE_set_address (0x00000000000001e5) -0x000003f4: 05 DW_LNS_set_column (23) -0x000003f6: 01 DW_LNS_copy - 0x00000000000001e5 39 23 1 0 0 - - -0x000003f7: 00 DW_LNE_set_address (0x00000000000001ea) -0x000003fe: 05 DW_LNS_set_column (19) -0x00000400: 01 DW_LNS_copy - 0x00000000000001ea 39 19 1 0 0 - - -0x00000401: 00 DW_LNE_set_address (0x00000000000001ef) -0x00000408: 03 DW_LNS_advance_line (40) -0x0000040a: 05 DW_LNS_set_column (4) -0x0000040c: 06 DW_LNS_negate_stmt -0x0000040d: 01 DW_LNS_copy - 0x00000000000001ef 40 4 1 0 0 is_stmt - - -0x0000040e: 00 DW_LNE_set_address (0x00000000000001f7) -0x00000415: 05 DW_LNS_set_column (17) -0x00000417: 06 DW_LNS_negate_stmt -0x00000418: 01 DW_LNS_copy - 0x00000000000001f7 40 17 1 0 0 - - -0x00000419: 00 DW_LNE_set_address (0x0000000000000201) -0x00000420: 03 DW_LNS_advance_line (44) -0x00000422: 05 DW_LNS_set_column (16) -0x00000424: 06 DW_LNS_negate_stmt -0x00000425: 01 DW_LNS_copy - 0x0000000000000201 44 16 1 0 0 is_stmt - - -0x00000426: 00 DW_LNE_set_address (0x000000000000020a) -0x0000042d: 03 DW_LNS_advance_line (45) -0x0000042f: 05 DW_LNS_set_column (10) -0x00000431: 01 DW_LNS_copy - 0x000000000000020a 45 10 1 0 0 is_stmt - - -0x00000432: 00 DW_LNE_set_address (0x000000000000020c) -0x00000439: 05 DW_LNS_set_column (18) -0x0000043b: 06 DW_LNS_negate_stmt -0x0000043c: 01 DW_LNS_copy - 0x000000000000020c 45 18 1 0 0 - - -0x0000043d: 00 DW_LNE_set_address (0x0000000000000215) -0x00000444: 05 DW_LNS_set_column (10) -0x00000446: 01 DW_LNS_copy - 0x0000000000000215 45 10 1 0 0 - - -0x00000447: 00 DW_LNE_set_address (0x0000000000000217) -0x0000044e: 05 DW_LNS_set_column (23) -0x00000450: 01 DW_LNS_copy - 0x0000000000000217 45 23 1 0 0 - - -0x00000451: 00 DW_LNE_set_address (0x000000000000021c) -0x00000458: 03 DW_LNS_advance_line (44) -0x0000045a: 05 DW_LNS_set_column (16) -0x0000045c: 06 DW_LNS_negate_stmt -0x0000045d: 01 DW_LNS_copy - 0x000000000000021c 44 16 1 0 0 is_stmt - - -0x0000045e: 00 DW_LNE_set_address (0x0000000000000229) -0x00000465: 03 DW_LNS_advance_line (46) -0x00000467: 05 DW_LNS_set_column (11) -0x00000469: 01 DW_LNS_copy - 0x0000000000000229 46 11 1 0 0 is_stmt - - -0x0000046a: 00 DW_LNE_set_address (0x0000000000000235) -0x00000471: 05 DW_LNS_set_column (28) -0x00000473: 06 DW_LNS_negate_stmt -0x00000474: 01 DW_LNS_copy - 0x0000000000000235 46 28 1 0 0 - - -0x00000475: 00 DW_LNE_set_address (0x000000000000023a) -0x0000047c: 05 DW_LNS_set_column (41) -0x0000047e: 01 DW_LNS_copy - 0x000000000000023a 46 41 1 0 0 - - -0x0000047f: 00 DW_LNE_set_address (0x000000000000023f) -0x00000486: 03 DW_LNS_advance_line (50) -0x00000488: 05 DW_LNS_set_column (14) -0x0000048a: 06 DW_LNS_negate_stmt -0x0000048b: 01 DW_LNS_copy - 0x000000000000023f 50 14 1 0 0 is_stmt - - -0x0000048c: 00 DW_LNE_set_address (0x0000000000000250) -0x00000493: 03 DW_LNS_advance_line (52) -0x00000495: 05 DW_LNS_set_column (38) -0x00000497: 01 DW_LNS_copy - 0x0000000000000250 52 38 1 0 0 is_stmt - - -0x00000498: 00 DW_LNE_set_address (0x0000000000000264) -0x0000049f: 03 DW_LNS_advance_line (53) -0x000004a1: 05 DW_LNS_set_column (22) -0x000004a3: 01 DW_LNS_copy - 0x0000000000000264 53 22 1 0 0 is_stmt - - -0x000004a4: 00 DW_LNE_set_address (0x0000000000000273) -0x000004ab: 03 DW_LNS_advance_line (54) -0x000004ad: 05 DW_LNS_set_column (24) -0x000004af: 01 DW_LNS_copy - 0x0000000000000273 54 24 1 0 0 is_stmt - - -0x000004b0: 00 DW_LNE_set_address (0x0000000000000275) -0x000004b7: 05 DW_LNS_set_column (26) -0x000004b9: 06 DW_LNS_negate_stmt -0x000004ba: 01 DW_LNS_copy - 0x0000000000000275 54 26 1 0 0 - - -0x000004bb: 00 DW_LNE_set_address (0x0000000000000282) -0x000004c2: 05 DW_LNS_set_column (24) -0x000004c4: 01 DW_LNS_copy - 0x0000000000000282 54 24 1 0 0 - - -0x000004c5: 00 DW_LNE_set_address (0x0000000000000285) -0x000004cc: 03 DW_LNS_advance_line (55) -0x000004ce: 06 DW_LNS_negate_stmt -0x000004cf: 01 DW_LNS_copy - 0x0000000000000285 55 24 1 0 0 is_stmt - - -0x000004d0: 00 DW_LNE_set_address (0x000000000000028c) -0x000004d7: 03 DW_LNS_advance_line (52) -0x000004d9: 05 DW_LNS_set_column (44) -0x000004db: 01 DW_LNS_copy - 0x000000000000028c 52 44 1 0 0 is_stmt - - -0x000004dc: 00 DW_LNE_set_address (0x0000000000000298) -0x000004e3: 05 DW_LNS_set_column (38) -0x000004e5: 06 DW_LNS_negate_stmt -0x000004e6: 01 DW_LNS_copy - 0x0000000000000298 52 38 1 0 0 - - -0x000004e7: 00 DW_LNE_set_address (0x000000000000029f) -0x000004ee: 03 DW_LNS_advance_line (58) -0x000004f0: 05 DW_LNS_set_column (19) -0x000004f2: 06 DW_LNS_negate_stmt -0x000004f3: 01 DW_LNS_copy - 0x000000000000029f 58 19 1 0 0 is_stmt - - -0x000004f4: 00 DW_LNE_set_address (0x00000000000002ae) -0x000004fb: 03 DW_LNS_advance_line (59) -0x000004fd: 05 DW_LNS_set_column (21) -0x000004ff: 01 DW_LNS_copy - 0x00000000000002ae 59 21 1 0 0 is_stmt - - -0x00000500: 00 DW_LNE_set_address (0x00000000000002b5) -0x00000507: 03 DW_LNS_advance_line (57) -0x00000509: 05 DW_LNS_set_column (18) -0x0000050b: 01 DW_LNS_copy - 0x00000000000002b5 57 18 1 0 0 is_stmt - - -0x0000050c: 00 DW_LNE_set_address (0x00000000000002c5) -0x00000513: 03 DW_LNS_advance_line (62) -0x00000515: 05 DW_LNS_set_column (14) -0x00000517: 01 DW_LNS_copy - 0x00000000000002c5 62 14 1 0 0 is_stmt - - -0x00000518: 00 DW_LNE_set_address (0x00000000000002c9) -0x0000051f: 05 DW_LNS_set_column (23) -0x00000521: 06 DW_LNS_negate_stmt -0x00000522: 01 DW_LNS_copy - 0x00000000000002c9 62 23 1 0 0 - - -0x00000523: 00 DW_LNE_set_address (0x00000000000002ce) -0x0000052a: 05 DW_LNS_set_column (14) -0x0000052c: 01 DW_LNS_copy - 0x00000000000002ce 62 14 1 0 0 - - -0x0000052d: 00 DW_LNE_set_address (0x00000000000002d2) -0x00000534: 03 DW_LNS_advance_line (66) -0x00000536: 05 DW_LNS_set_column (16) -0x00000538: 06 DW_LNS_negate_stmt -0x00000539: 01 DW_LNS_copy - 0x00000000000002d2 66 16 1 0 0 is_stmt - - -0x0000053a: 00 DW_LNE_set_address (0x00000000000002df) -0x00000541: 03 DW_LNS_advance_line (75) -0x00000543: 05 DW_LNS_set_column (27) -0x00000545: 01 DW_LNS_copy - 0x00000000000002df 75 27 1 0 0 is_stmt - - -0x00000546: 00 DW_LNE_set_address (0x00000000000002e8) -0x0000054d: 03 DW_LNS_advance_line (76) -0x0000054f: 05 DW_LNS_set_column (16) -0x00000551: 01 DW_LNS_copy - 0x00000000000002e8 76 16 1 0 0 is_stmt - - -0x00000552: 00 DW_LNE_set_address (0x00000000000002f0) -0x00000559: 05 DW_LNS_set_column (27) -0x0000055b: 06 DW_LNS_negate_stmt -0x0000055c: 01 DW_LNS_copy - 0x00000000000002f0 76 27 1 0 0 - - -0x0000055d: 00 DW_LNE_set_address (0x00000000000002f2) -0x00000564: 05 DW_LNS_set_column (35) -0x00000566: 01 DW_LNS_copy - 0x00000000000002f2 76 35 1 0 0 - - -0x00000567: 00 DW_LNE_set_address (0x00000000000002fb) -0x0000056e: 05 DW_LNS_set_column (27) -0x00000570: 01 DW_LNS_copy - 0x00000000000002fb 76 27 1 0 0 - - -0x00000571: 00 DW_LNE_set_address (0x0000000000000300) -0x00000578: 05 DW_LNS_set_column (25) -0x0000057a: 01 DW_LNS_copy - 0x0000000000000300 76 25 1 0 0 - - -0x0000057b: 00 DW_LNE_set_address (0x0000000000000303) -0x00000582: 03 DW_LNS_advance_line (75) -0x00000584: 05 DW_LNS_set_column (27) -0x00000586: 06 DW_LNS_negate_stmt -0x00000587: 01 DW_LNS_copy - 0x0000000000000303 75 27 1 0 0 is_stmt - - -0x00000588: 00 DW_LNE_set_address (0x0000000000000310) -0x0000058f: 03 DW_LNS_advance_line (77) -0x00000591: 05 DW_LNS_set_column (13) -0x00000593: 01 DW_LNS_copy - 0x0000000000000310 77 13 1 0 0 is_stmt - - -0x00000594: 00 DW_LNE_set_address (0x0000000000000318) -0x0000059b: 05 DW_LNS_set_column (22) -0x0000059d: 06 DW_LNS_negate_stmt -0x0000059e: 01 DW_LNS_copy - 0x0000000000000318 77 22 1 0 0 - - -0x0000059f: 00 DW_LNE_set_address (0x000000000000031d) -0x000005a6: 03 DW_LNS_advance_line (79) -0x000005a8: 05 DW_LNS_set_column (16) -0x000005aa: 06 DW_LNS_negate_stmt -0x000005ab: 01 DW_LNS_copy - 0x000000000000031d 79 16 1 0 0 is_stmt - - -0x000005ac: 00 DW_LNE_set_address (0x0000000000000325) -0x000005b3: 05 DW_LNS_set_column (14) -0x000005b5: 06 DW_LNS_negate_stmt -0x000005b6: 01 DW_LNS_copy - 0x0000000000000325 79 14 1 0 0 - - -0x000005b7: 00 DW_LNE_set_address (0x0000000000000334) -0x000005be: 05 DW_LNS_set_column (25) -0x000005c0: 01 DW_LNS_copy - 0x0000000000000334 79 25 1 0 0 - - -0x000005c1: 00 DW_LNE_set_address (0x000000000000033b) -0x000005c8: 03 DW_LNS_advance_line (81) -0x000005ca: 05 DW_LNS_set_column (11) -0x000005cc: 06 DW_LNS_negate_stmt -0x000005cd: 01 DW_LNS_copy - 0x000000000000033b 81 11 1 0 0 is_stmt - - -0x000005ce: 00 DW_LNE_set_address (0x0000000000000340) -0x000005d5: 03 DW_LNS_advance_line (66) -0x000005d7: 05 DW_LNS_set_column (16) -0x000005d9: 01 DW_LNS_copy - 0x0000000000000340 66 16 1 0 0 is_stmt - - -0x000005da: 00 DW_LNE_set_address (0x0000000000000347) -0x000005e1: 03 DW_LNS_advance_line (74) -0x000005e3: 05 DW_LNS_set_column (22) -0x000005e5: 01 DW_LNS_copy - 0x0000000000000347 74 22 1 0 0 is_stmt - - -0x000005e6: 00 DW_LNE_set_address (0x0000000000000355) -0x000005ed: 03 DW_LNS_advance_line (67) -0x000005ef: 05 DW_LNS_set_column (13) -0x000005f1: 01 DW_LNS_copy - 0x0000000000000355 67 13 1 0 0 is_stmt - - -0x000005f2: 00 DW_LNE_set_address (0x0000000000000359) -0x000005f9: 03 DW_LNS_advance_line (68) -0x000005fb: 01 DW_LNS_copy - 0x0000000000000359 68 13 1 0 0 is_stmt - - -0x000005fc: 00 DW_LNE_set_address (0x000000000000035d) -0x00000603: 03 DW_LNS_advance_line (69) -0x00000605: 01 DW_LNS_copy - 0x000000000000035d 69 13 1 0 0 is_stmt - - -0x00000606: 00 DW_LNE_set_address (0x0000000000000361) -0x0000060d: 03 DW_LNS_advance_line (70) -0x0000060f: 01 DW_LNS_copy - 0x0000000000000361 70 13 1 0 0 is_stmt - - -0x00000610: 00 DW_LNE_set_address (0x0000000000000364) -0x00000617: 00 DW_LNE_end_sequence - 0x0000000000000364 70 13 1 0 0 is_stmt end_sequence - -0x0000061a: 00 DW_LNE_set_address (0x0000000000000366) -0x00000621: 03 DW_LNS_advance_line (152) -0x00000624: 01 DW_LNS_copy - 0x0000000000000366 152 0 1 0 0 is_stmt - - -0x00000625: 00 DW_LNE_set_address (0x0000000000000376) -0x0000062c: 03 DW_LNS_advance_line (153) -0x0000062e: 05 DW_LNS_set_column (17) -0x00000630: 0a DW_LNS_set_prologue_end -0x00000631: 01 DW_LNS_copy - 0x0000000000000376 153 17 1 0 0 is_stmt prologue_end - - -0x00000632: 00 DW_LNE_set_address (0x000000000000037d) -0x00000639: 05 DW_LNS_set_column (28) -0x0000063b: 06 DW_LNS_negate_stmt -0x0000063c: 01 DW_LNS_copy - 0x000000000000037d 153 28 1 0 0 - - -0x0000063d: 00 DW_LNE_set_address (0x0000000000000382) -0x00000644: 05 DW_LNS_set_column (23) -0x00000646: 01 DW_LNS_copy - 0x0000000000000382 153 23 1 0 0 - - -0x00000647: 00 DW_LNE_set_address (0x0000000000000388) -0x0000064e: 03 DW_LNS_advance_line (155) -0x00000650: 05 DW_LNS_set_column (10) -0x00000652: 06 DW_LNS_negate_stmt -0x00000653: 01 DW_LNS_copy - 0x0000000000000388 155 10 1 0 0 is_stmt - - -0x00000654: 00 DW_LNE_set_address (0x0000000000000389) -0x0000065b: 05 DW_LNS_set_column (8) -0x0000065d: 06 DW_LNS_negate_stmt -0x0000065e: 01 DW_LNS_copy - 0x0000000000000389 155 8 1 0 0 - - -0x0000065f: 00 DW_LNE_set_address (0x000000000000038c) -0x00000666: 03 DW_LNS_advance_line (156) -0x00000668: 05 DW_LNS_set_column (7) -0x0000066a: 06 DW_LNS_negate_stmt -0x0000066b: 01 DW_LNS_copy - 0x000000000000038c 156 7 1 0 0 is_stmt - - -0x0000066c: 00 DW_LNE_set_address (0x0000000000000399) -0x00000673: 03 DW_LNS_advance_line (94) -0x00000675: 05 DW_LNS_set_column (18) -0x00000677: 01 DW_LNS_copy - 0x0000000000000399 94 18 1 0 0 is_stmt - - -0x00000678: 00 DW_LNE_set_address (0x00000000000003b3) -0x0000067f: 03 DW_LNS_advance_line (95) -0x00000681: 05 DW_LNS_set_column (29) -0x00000683: 01 DW_LNS_copy - 0x00000000000003b3 95 29 1 0 0 is_stmt - - -0x00000684: 00 DW_LNE_set_address (0x00000000000003b5) -0x0000068b: 03 DW_LNS_advance_line (98) -0x0000068d: 05 DW_LNS_set_column (19) -0x0000068f: 01 DW_LNS_copy - 0x00000000000003b5 98 19 1 0 0 is_stmt - - -0x00000690: 00 DW_LNE_set_address (0x00000000000003bc) -0x00000697: 03 DW_LNS_advance_line (97) -0x00000699: 05 DW_LNS_set_column (16) -0x0000069b: 01 DW_LNS_copy - 0x00000000000003bc 97 16 1 0 0 is_stmt - - -0x0000069c: 00 DW_LNE_set_address (0x00000000000003c3) -0x000006a3: 03 DW_LNS_advance_line (96) -0x000006a5: 01 DW_LNS_copy - 0x00000000000003c3 96 16 1 0 0 is_stmt - - -0x000006a6: 00 DW_LNE_set_address (0x00000000000003ce) -0x000006ad: 03 DW_LNS_advance_line (94) -0x000006af: 05 DW_LNS_set_column (28) -0x000006b1: 01 DW_LNS_copy - 0x00000000000003ce 94 28 1 0 0 is_stmt - - -0x000006b2: 00 DW_LNE_set_address (0x00000000000003d3) -0x000006b9: 05 DW_LNS_set_column (18) -0x000006bb: 06 DW_LNS_negate_stmt -0x000006bc: 01 DW_LNS_copy - 0x00000000000003d3 94 18 1 0 0 - - -0x000006bd: 00 DW_LNE_set_address (0x00000000000003d8) -0x000006c4: 05 DW_LNS_set_column (4) -0x000006c6: 01 DW_LNS_copy - 0x00000000000003d8 94 4 1 0 0 - - -0x000006c7: 00 DW_LNE_set_address (0x00000000000003e0) -0x000006ce: 03 DW_LNS_advance_line (102) -0x000006d0: 05 DW_LNS_set_column (27) -0x000006d2: 06 DW_LNS_negate_stmt -0x000006d3: 01 DW_LNS_copy - 0x00000000000003e0 102 27 1 0 0 is_stmt - - -0x000006d4: 00 DW_LNE_set_address (0x00000000000003e5) -0x000006db: 05 DW_LNS_set_column (18) -0x000006dd: 06 DW_LNS_negate_stmt -0x000006de: 01 DW_LNS_copy - 0x00000000000003e5 102 18 1 0 0 - - -0x000006df: 00 DW_LNE_set_address (0x00000000000003eb) -0x000006e6: 03 DW_LNS_advance_line (103) -0x000006e8: 06 DW_LNS_negate_stmt -0x000006e9: 01 DW_LNS_copy - 0x00000000000003eb 103 18 1 0 0 is_stmt - - -0x000006ea: 00 DW_LNE_set_address (0x00000000000003f7) -0x000006f1: 03 DW_LNS_advance_line (105) -0x000006f3: 01 DW_LNS_copy - 0x00000000000003f7 105 18 1 0 0 is_stmt - - -0x000006f4: 00 DW_LNE_set_address (0x0000000000000400) -0x000006fb: 03 DW_LNS_advance_line (106) -0x000006fd: 05 DW_LNS_set_column (7) -0x000006ff: 01 DW_LNS_copy - 0x0000000000000400 106 7 1 0 0 is_stmt - - -0x00000700: 00 DW_LNE_set_address (0x0000000000000408) -0x00000707: 05 DW_LNS_set_column (16) -0x00000709: 06 DW_LNS_negate_stmt -0x0000070a: 01 DW_LNS_copy - 0x0000000000000408 106 16 1 0 0 - - -0x0000070b: 00 DW_LNE_set_address (0x000000000000040d) -0x00000712: 03 DW_LNS_advance_line (105) -0x00000714: 05 DW_LNS_set_column (24) -0x00000716: 06 DW_LNS_negate_stmt -0x00000717: 01 DW_LNS_copy - 0x000000000000040d 105 24 1 0 0 is_stmt - - -0x00000718: 00 DW_LNE_set_address (0x0000000000000412) -0x0000071f: 05 DW_LNS_set_column (18) -0x00000721: 06 DW_LNS_negate_stmt -0x00000722: 01 DW_LNS_copy - 0x0000000000000412 105 18 1 0 0 - - -0x00000723: 00 DW_LNE_set_address (0x0000000000000438) -0x0000072a: 03 DW_LNS_advance_line (112) -0x0000072c: 05 DW_LNS_set_column (13) -0x0000072e: 06 DW_LNS_negate_stmt -0x0000072f: 01 DW_LNS_copy - 0x0000000000000438 112 13 1 0 0 is_stmt - - -0x00000730: 00 DW_LNE_set_address (0x000000000000043a) -0x00000737: 05 DW_LNS_set_column (26) -0x00000739: 06 DW_LNS_negate_stmt -0x0000073a: 01 DW_LNS_copy - 0x000000000000043a 112 26 1 0 0 - - -0x0000073b: 00 DW_LNE_set_address (0x0000000000000447) -0x00000742: 05 DW_LNS_set_column (35) -0x00000744: 01 DW_LNS_copy - 0x0000000000000447 112 35 1 0 0 - - -0x00000745: 00 DW_LNE_set_address (0x0000000000000448) -0x0000074c: 05 DW_LNS_set_column (13) -0x0000074e: 01 DW_LNS_copy - 0x0000000000000448 112 13 1 0 0 - - -0x0000074f: 00 DW_LNE_set_address (0x0000000000000456) -0x00000756: 03 DW_LNS_advance_line (111) -0x00000758: 05 DW_LNS_set_column (30) -0x0000075a: 06 DW_LNS_negate_stmt -0x0000075b: 01 DW_LNS_copy - 0x0000000000000456 111 30 1 0 0 is_stmt - - -0x0000075c: 00 DW_LNE_set_address (0x000000000000045b) -0x00000763: 05 DW_LNS_set_column (24) -0x00000765: 06 DW_LNS_negate_stmt -0x00000766: 01 DW_LNS_copy - 0x000000000000045b 111 24 1 0 0 - - -0x00000767: 00 DW_LNE_set_address (0x0000000000000460) -0x0000076e: 05 DW_LNS_set_column (10) -0x00000770: 01 DW_LNS_copy - 0x0000000000000460 111 10 1 0 0 - - -0x00000771: 00 DW_LNE_set_address (0x0000000000000465) -0x00000778: 03 DW_LNS_advance_line (113) -0x0000077a: 06 DW_LNS_negate_stmt -0x0000077b: 01 DW_LNS_copy - 0x0000000000000465 113 10 1 0 0 is_stmt - - -0x0000077c: 00 DW_LNE_set_address (0x0000000000000468) -0x00000783: 03 DW_LNS_advance_line (118) -0x00000785: 05 DW_LNS_set_column (16) -0x00000787: 01 DW_LNS_copy - 0x0000000000000468 118 16 1 0 0 is_stmt - - -0x00000788: 00 DW_LNE_set_address (0x0000000000000471) -0x0000078f: 03 DW_LNS_advance_line (119) -0x00000791: 05 DW_LNS_set_column (10) -0x00000793: 01 DW_LNS_copy - 0x0000000000000471 119 10 1 0 0 is_stmt - - -0x00000794: 00 DW_LNE_set_address (0x0000000000000473) -0x0000079b: 05 DW_LNS_set_column (18) -0x0000079d: 06 DW_LNS_negate_stmt -0x0000079e: 01 DW_LNS_copy - 0x0000000000000473 119 18 1 0 0 - - -0x0000079f: 00 DW_LNE_set_address (0x000000000000047c) -0x000007a6: 05 DW_LNS_set_column (10) -0x000007a8: 01 DW_LNS_copy - 0x000000000000047c 119 10 1 0 0 - - -0x000007a9: 00 DW_LNE_set_address (0x000000000000047e) -0x000007b0: 05 DW_LNS_set_column (23) -0x000007b2: 01 DW_LNS_copy - 0x000000000000047e 119 23 1 0 0 - - -0x000007b3: 00 DW_LNE_set_address (0x0000000000000483) -0x000007ba: 03 DW_LNS_advance_line (118) -0x000007bc: 05 DW_LNS_set_column (16) -0x000007be: 06 DW_LNS_negate_stmt -0x000007bf: 01 DW_LNS_copy - 0x0000000000000483 118 16 1 0 0 is_stmt - - -0x000007c0: 00 DW_LNE_set_address (0x0000000000000490) -0x000007c7: 03 DW_LNS_advance_line (122) -0x000007c9: 01 DW_LNS_copy - 0x0000000000000490 122 16 1 0 0 is_stmt - - -0x000007ca: 00 DW_LNE_set_address (0x00000000000004a4) -0x000007d1: 03 DW_LNS_advance_line (125) -0x000007d3: 05 DW_LNS_set_column (22) -0x000007d5: 01 DW_LNS_copy - 0x00000000000004a4 125 22 1 0 0 is_stmt - - -0x000007d6: 00 DW_LNE_set_address (0x00000000000004ab) -0x000007dd: 03 DW_LNS_advance_line (126) -0x000007df: 05 DW_LNS_set_column (27) -0x000007e1: 01 DW_LNS_copy - 0x00000000000004ab 126 27 1 0 0 is_stmt - - -0x000007e2: 00 DW_LNE_set_address (0x00000000000004b4) -0x000007e9: 03 DW_LNS_advance_line (127) -0x000007eb: 05 DW_LNS_set_column (16) -0x000007ed: 01 DW_LNS_copy - 0x00000000000004b4 127 16 1 0 0 is_stmt - - -0x000007ee: 00 DW_LNE_set_address (0x00000000000004bc) -0x000007f5: 05 DW_LNS_set_column (27) -0x000007f7: 06 DW_LNS_negate_stmt -0x000007f8: 01 DW_LNS_copy - 0x00000000000004bc 127 27 1 0 0 - - -0x000007f9: 00 DW_LNE_set_address (0x00000000000004be) -0x00000800: 05 DW_LNS_set_column (35) -0x00000802: 01 DW_LNS_copy - 0x00000000000004be 127 35 1 0 0 - - -0x00000803: 00 DW_LNE_set_address (0x00000000000004c7) -0x0000080a: 05 DW_LNS_set_column (27) -0x0000080c: 01 DW_LNS_copy - 0x00000000000004c7 127 27 1 0 0 - - -0x0000080d: 00 DW_LNE_set_address (0x00000000000004cc) -0x00000814: 05 DW_LNS_set_column (25) -0x00000816: 01 DW_LNS_copy - 0x00000000000004cc 127 25 1 0 0 - - -0x00000817: 00 DW_LNE_set_address (0x00000000000004cf) -0x0000081e: 03 DW_LNS_advance_line (126) -0x00000820: 05 DW_LNS_set_column (27) -0x00000822: 06 DW_LNS_negate_stmt -0x00000823: 01 DW_LNS_copy - 0x00000000000004cf 126 27 1 0 0 is_stmt - - -0x00000824: 00 DW_LNE_set_address (0x00000000000004d4) -0x0000082b: 05 DW_LNS_set_column (13) -0x0000082d: 06 DW_LNS_negate_stmt -0x0000082e: 01 DW_LNS_copy - 0x00000000000004d4 126 13 1 0 0 - - -0x0000082f: 00 DW_LNE_set_address (0x00000000000004dc) -0x00000836: 03 DW_LNS_advance_line (128) -0x00000838: 06 DW_LNS_negate_stmt -0x00000839: 01 DW_LNS_copy - 0x00000000000004dc 128 13 1 0 0 is_stmt - - -0x0000083a: 00 DW_LNE_set_address (0x00000000000004e4) -0x00000841: 05 DW_LNS_set_column (22) -0x00000843: 06 DW_LNS_negate_stmt -0x00000844: 01 DW_LNS_copy - 0x00000000000004e4 128 22 1 0 0 - - -0x00000845: 00 DW_LNE_set_address (0x00000000000004e9) -0x0000084c: 03 DW_LNS_advance_line (130) -0x0000084e: 05 DW_LNS_set_column (16) -0x00000850: 06 DW_LNS_negate_stmt -0x00000851: 01 DW_LNS_copy - 0x00000000000004e9 130 16 1 0 0 is_stmt - - -0x00000852: 00 DW_LNE_set_address (0x00000000000004f1) -0x00000859: 05 DW_LNS_set_column (14) -0x0000085b: 06 DW_LNS_negate_stmt -0x0000085c: 01 DW_LNS_copy - 0x00000000000004f1 130 14 1 0 0 - - -0x0000085d: 00 DW_LNE_set_address (0x0000000000000500) -0x00000864: 05 DW_LNS_set_column (25) -0x00000866: 01 DW_LNS_copy - 0x0000000000000500 130 25 1 0 0 - - -0x00000867: 00 DW_LNE_set_address (0x0000000000000507) -0x0000086e: 03 DW_LNS_advance_line (133) -0x00000870: 05 DW_LNS_set_column (11) -0x00000872: 06 DW_LNS_negate_stmt -0x00000873: 01 DW_LNS_copy - 0x0000000000000507 133 11 1 0 0 is_stmt - - -0x00000874: 00 DW_LNE_set_address (0x000000000000050c) -0x0000087b: 03 DW_LNS_advance_line (122) -0x0000087d: 05 DW_LNS_set_column (16) -0x0000087f: 01 DW_LNS_copy - 0x000000000000050c 122 16 1 0 0 is_stmt - - -0x00000880: 00 DW_LNE_set_address (0x0000000000000511) -0x00000887: 05 DW_LNS_set_column (14) -0x00000889: 06 DW_LNS_negate_stmt -0x0000088a: 01 DW_LNS_copy - 0x0000000000000511 122 14 1 0 0 - - -0x0000088b: 00 DW_LNE_set_address (0x0000000000000516) -0x00000892: 03 DW_LNS_advance_line (130) -0x00000894: 06 DW_LNS_negate_stmt -0x00000895: 01 DW_LNS_copy - 0x0000000000000516 130 14 1 0 0 is_stmt - - -0x00000896: 00 DW_LNE_set_address (0x0000000000000517) -0x0000089d: 03 DW_LNS_advance_line (110) -0x0000089f: 05 DW_LNS_set_column (11) -0x000008a1: 01 DW_LNS_copy - 0x0000000000000517 110 11 1 0 0 is_stmt - - -0x000008a2: 00 DW_LNE_set_address (0x0000000000000523) -0x000008a9: 03 DW_LNS_advance_line (113) -0x000008ab: 05 DW_LNS_set_column (10) -0x000008ad: 01 DW_LNS_copy - 0x0000000000000523 113 10 1 0 0 is_stmt - - -0x000008ae: 00 DW_LNE_set_address (0x0000000000000526) -0x000008b5: 03 DW_LNS_advance_line (118) -0x000008b7: 05 DW_LNS_set_column (16) -0x000008b9: 01 DW_LNS_copy - 0x0000000000000526 118 16 1 0 0 is_stmt - - -0x000008ba: 00 DW_LNE_set_address (0x000000000000052f) -0x000008c1: 03 DW_LNS_advance_line (119) -0x000008c3: 05 DW_LNS_set_column (10) -0x000008c5: 01 DW_LNS_copy - 0x000000000000052f 119 10 1 0 0 is_stmt - - -0x000008c6: 00 DW_LNE_set_address (0x0000000000000531) -0x000008cd: 05 DW_LNS_set_column (18) -0x000008cf: 06 DW_LNS_negate_stmt -0x000008d0: 01 DW_LNS_copy - 0x0000000000000531 119 18 1 0 0 - - -0x000008d1: 00 DW_LNE_set_address (0x000000000000053a) -0x000008d8: 05 DW_LNS_set_column (10) -0x000008da: 01 DW_LNS_copy - 0x000000000000053a 119 10 1 0 0 - - -0x000008db: 00 DW_LNE_set_address (0x000000000000053c) -0x000008e2: 05 DW_LNS_set_column (23) -0x000008e4: 01 DW_LNS_copy - 0x000000000000053c 119 23 1 0 0 - - -0x000008e5: 00 DW_LNE_set_address (0x0000000000000541) -0x000008ec: 03 DW_LNS_advance_line (118) -0x000008ee: 05 DW_LNS_set_column (16) -0x000008f0: 06 DW_LNS_negate_stmt -0x000008f1: 01 DW_LNS_copy - 0x0000000000000541 118 16 1 0 0 is_stmt - - -0x000008f2: 00 DW_LNE_set_address (0x000000000000054e) -0x000008f9: 03 DW_LNS_advance_line (122) -0x000008fb: 01 DW_LNS_copy - 0x000000000000054e 122 16 1 0 0 is_stmt - - -0x000008fc: 00 DW_LNE_set_address (0x0000000000000553) -0x00000903: 05 DW_LNS_set_column (14) -0x00000905: 06 DW_LNS_negate_stmt -0x00000906: 01 DW_LNS_copy - 0x0000000000000553 122 14 1 0 0 - - -0x00000907: 00 DW_LNE_set_address (0x000000000000055c) -0x0000090e: 03 DW_LNS_advance_line (125) -0x00000910: 05 DW_LNS_set_column (22) -0x00000912: 06 DW_LNS_negate_stmt -0x00000913: 01 DW_LNS_copy - 0x000000000000055c 125 22 1 0 0 is_stmt - - -0x00000914: 00 DW_LNE_set_address (0x0000000000000569) -0x0000091b: 03 DW_LNS_advance_line (126) -0x0000091d: 05 DW_LNS_set_column (27) -0x0000091f: 01 DW_LNS_copy - 0x0000000000000569 126 27 1 0 0 is_stmt - - -0x00000920: 00 DW_LNE_set_address (0x0000000000000572) -0x00000927: 03 DW_LNS_advance_line (127) -0x00000929: 05 DW_LNS_set_column (16) -0x0000092b: 01 DW_LNS_copy - 0x0000000000000572 127 16 1 0 0 is_stmt - - -0x0000092c: 00 DW_LNE_set_address (0x000000000000057a) -0x00000933: 05 DW_LNS_set_column (27) -0x00000935: 06 DW_LNS_negate_stmt -0x00000936: 01 DW_LNS_copy - 0x000000000000057a 127 27 1 0 0 - - -0x00000937: 00 DW_LNE_set_address (0x000000000000057c) -0x0000093e: 05 DW_LNS_set_column (35) -0x00000940: 01 DW_LNS_copy - 0x000000000000057c 127 35 1 0 0 - - -0x00000941: 00 DW_LNE_set_address (0x0000000000000585) -0x00000948: 05 DW_LNS_set_column (27) -0x0000094a: 01 DW_LNS_copy - 0x0000000000000585 127 27 1 0 0 - - -0x0000094b: 00 DW_LNE_set_address (0x000000000000058a) -0x00000952: 05 DW_LNS_set_column (25) -0x00000954: 01 DW_LNS_copy - 0x000000000000058a 127 25 1 0 0 - - -0x00000955: 00 DW_LNE_set_address (0x000000000000058d) -0x0000095c: 03 DW_LNS_advance_line (126) -0x0000095e: 05 DW_LNS_set_column (27) -0x00000960: 06 DW_LNS_negate_stmt -0x00000961: 01 DW_LNS_copy - 0x000000000000058d 126 27 1 0 0 is_stmt - - -0x00000962: 00 DW_LNE_set_address (0x0000000000000592) -0x00000969: 05 DW_LNS_set_column (13) -0x0000096b: 06 DW_LNS_negate_stmt -0x0000096c: 01 DW_LNS_copy - 0x0000000000000592 126 13 1 0 0 - - -0x0000096d: 00 DW_LNE_set_address (0x000000000000059a) -0x00000974: 03 DW_LNS_advance_line (128) -0x00000976: 06 DW_LNS_negate_stmt -0x00000977: 01 DW_LNS_copy - 0x000000000000059a 128 13 1 0 0 is_stmt - - -0x00000978: 00 DW_LNE_set_address (0x00000000000005a2) -0x0000097f: 05 DW_LNS_set_column (22) -0x00000981: 06 DW_LNS_negate_stmt -0x00000982: 01 DW_LNS_copy - 0x00000000000005a2 128 22 1 0 0 - - -0x00000983: 00 DW_LNE_set_address (0x00000000000005a7) -0x0000098a: 03 DW_LNS_advance_line (130) -0x0000098c: 05 DW_LNS_set_column (16) -0x0000098e: 06 DW_LNS_negate_stmt -0x0000098f: 01 DW_LNS_copy - 0x00000000000005a7 130 16 1 0 0 is_stmt - - -0x00000990: 00 DW_LNE_set_address (0x00000000000005af) -0x00000997: 05 DW_LNS_set_column (14) -0x00000999: 06 DW_LNS_negate_stmt -0x0000099a: 01 DW_LNS_copy - 0x00000000000005af 130 14 1 0 0 - - -0x0000099b: 00 DW_LNE_set_address (0x00000000000005be) -0x000009a2: 05 DW_LNS_set_column (25) -0x000009a4: 01 DW_LNS_copy - 0x00000000000005be 130 25 1 0 0 - - -0x000009a5: 00 DW_LNE_set_address (0x00000000000005c5) -0x000009ac: 03 DW_LNS_advance_line (133) -0x000009ae: 05 DW_LNS_set_column (11) -0x000009b0: 06 DW_LNS_negate_stmt -0x000009b1: 01 DW_LNS_copy - 0x00000000000005c5 133 11 1 0 0 is_stmt - - -0x000009b2: 00 DW_LNE_set_address (0x00000000000005ca) -0x000009b9: 03 DW_LNS_advance_line (122) -0x000009bb: 05 DW_LNS_set_column (16) -0x000009bd: 01 DW_LNS_copy - 0x00000000000005ca 122 16 1 0 0 is_stmt - - -0x000009be: 00 DW_LNE_set_address (0x00000000000005cf) -0x000009c5: 05 DW_LNS_set_column (14) -0x000009c7: 06 DW_LNS_negate_stmt -0x000009c8: 01 DW_LNS_copy - 0x00000000000005cf 122 14 1 0 0 - - -0x000009c9: 00 DW_LNE_set_address (0x00000000000005d4) -0x000009d0: 03 DW_LNS_advance_line (130) -0x000009d2: 06 DW_LNS_negate_stmt -0x000009d3: 01 DW_LNS_copy - 0x00000000000005d4 130 14 1 0 0 is_stmt - - -0x000009d4: 00 DW_LNE_set_address (0x00000000000005d5) -0x000009db: 03 DW_LNS_advance_line (110) -0x000009dd: 05 DW_LNS_set_column (11) -0x000009df: 01 DW_LNS_copy - 0x00000000000005d5 110 11 1 0 0 is_stmt - - -0x000009e0: 00 DW_LNE_set_address (0x00000000000005db) -0x000009e7: 03 DW_LNS_advance_line (138) -0x000009e9: 05 DW_LNS_set_column (4) -0x000009eb: 01 DW_LNS_copy - 0x00000000000005db 138 4 1 0 0 is_stmt - - -0x000009ec: 00 DW_LNE_set_address (0x00000000000005df) -0x000009f3: 03 DW_LNS_advance_line (139) -0x000009f5: 01 DW_LNS_copy - 0x00000000000005df 139 4 1 0 0 is_stmt - - -0x000009f6: 00 DW_LNE_set_address (0x00000000000005ef) -0x000009fd: 03 DW_LNS_advance_line (142) -0x000009ff: 05 DW_LNS_set_column (20) -0x00000a01: 01 DW_LNS_copy - 0x00000000000005ef 142 20 1 0 0 is_stmt - - -0x00000a02: 00 DW_LNE_set_address (0x00000000000005f7) -0x00000a09: 03 DW_LNS_advance_line (146) -0x00000a0b: 01 DW_LNS_copy - 0x00000000000005f7 146 20 1 0 0 is_stmt - - -0x00000a0c: 00 DW_LNE_set_address (0x00000000000005fe) -0x00000a13: 03 DW_LNS_advance_line (147) -0x00000a15: 05 DW_LNS_set_column (7) -0x00000a17: 01 DW_LNS_copy - 0x00000000000005fe 147 7 1 0 0 is_stmt - - -0x00000a18: 00 DW_LNE_set_address (0x0000000000000602) -0x00000a1f: 03 DW_LNS_advance_line (143) -0x00000a21: 05 DW_LNS_set_column (11) -0x00000a23: 01 DW_LNS_copy - 0x0000000000000602 143 11 1 0 0 is_stmt - - -0x00000a24: 00 DW_LNE_set_address (0x0000000000000606) -0x00000a2b: 05 DW_LNS_set_column (20) -0x00000a2d: 06 DW_LNS_negate_stmt -0x00000a2e: 01 DW_LNS_copy - 0x0000000000000606 143 20 1 0 0 - - -0x00000a2f: 00 DW_LNE_set_address (0x000000000000060b) -0x00000a36: 05 DW_LNS_set_column (11) -0x00000a38: 01 DW_LNS_copy - 0x000000000000060b 143 11 1 0 0 - - -0x00000a39: 00 DW_LNE_set_address (0x0000000000000612) -0x00000a40: 03 DW_LNS_advance_line (141) -0x00000a42: 05 DW_LNS_set_column (4) -0x00000a44: 06 DW_LNS_negate_stmt -0x00000a45: 01 DW_LNS_copy - 0x0000000000000612 141 4 1 0 0 is_stmt - - -0x00000a46: 00 DW_LNE_set_address (0x0000000000000618) -0x00000a4d: 03 DW_LNS_advance_line (159) -0x00000a4f: 01 DW_LNS_copy - 0x0000000000000618 159 4 1 0 0 is_stmt - - -0x00000a50: 00 DW_LNE_set_address (0x000000000000062f) -0x00000a57: 03 DW_LNS_advance_line (161) -0x00000a59: 05 DW_LNS_set_column (1) -0x00000a5b: 01 DW_LNS_copy - 0x000000000000062f 161 1 1 0 0 is_stmt - - -0x00000a5c: 00 DW_LNE_set_address (0x0000000000000639) -0x00000a63: 00 DW_LNE_end_sequence - 0x0000000000000639 161 1 1 0 0 is_stmt end_sequence - - -.debug_str contents: -0x00000000: "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)" -0x00000069: "/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp" -0x000000a9: "/usr/local/google/home/azakai/Dev/2-binaryen" -0x000000d6: "i" -0x000000d8: "int" -0x000000dc: "n" -0x000000de: "next" -0x000000e3: "worker_args" -0x000000ef: "std" -0x000000f3: "decltype(nullptr)" -0x00000105: "nullptr_t" -0x0000010f: "free" -0x00000114: "_ZL8fannkuchi" -0x00000122: "fannkuch" -0x0000012b: "showmax" -0x00000133: "args" -0x00000138: "targs" -0x0000013e: "perm1" -0x00000144: "count" -0x0000014a: "r" -0x0000014c: "maxflips" -0x00000155: "flips" -0x0000015b: "cleanup" -0x00000163: "p0" -0x00000166: "_Z15fannkuch_workerPv" -0x0000017c: "fannkuch_worker" -0x0000018c: "main" -0x00000191: "_arg" -0x00000196: "perm" -0x0000019b: "k" -0x0000019d: "j" -0x0000019f: "tmp" -0x000001a3: "argc" -0x000001a8: "argv" -0x000001ad: "char" - -.debug_ranges contents: -00000000 00000162 000001a0 -00000000 000001ca 000001d3 -00000000 000002df 0000031d -00000000 00000347 00000350 -00000000 -00000028 000004a4 000004e9 -00000028 0000055c 000005a7 -00000028 -00000040 00000007 00000364 -00000040 00000366 00000639 -00000040 -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (import "env" "memory" (memory $7 256 256)) - (data (i32.const 1024) "Pfannkuchen(%d) = %d.\n\00%d\00Wrong argument.") - (import "env" "malloc" (func $malloc (param i32) (result i32))) - (import "env" "memcpy" (func $memcpy (param i32 i32 i32) (result i32))) - (import "env" "free" (func $free (param i32))) - (import "env" "atoi" (func $atoi (param i32) (result i32))) - (import "env" "puts" (func $puts (param i32) (result i32))) - (import "env" "iprintf" (func $iprintf (param i32 i32) (result i32))) - (import "env" "putchar" (func $putchar (param i32) (result i32))) - (global $global$0 (mut i32) (i32.const 5243952)) - (global $global$1 i32 (i32.const 1066)) - (export "__wasm_call_ctors" (func $__wasm_call_ctors)) - (export "main" (func $main)) - (export "__data_end" (global $global$1)) - (func $__wasm_call_ctors (; 7 ;) - ;; code offset: 0x3 - (nop) - ) - (func $fannkuch_worker\28void*\29 (; 8 ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) - (local $16 i32) - (local $17 i32) - (local $18 i32) - ;; code offset: 0x18 - (local.set $3 - ;; code offset: 0x16 - (call $malloc - ;; code offset: 0x14 - (local.tee $12 - ;; code offset: 0x13 - (i32.shl - ;; code offset: 0xf - (local.tee $2 - ;; code offset: 0xc - (i32.load offset=4 - ;; code offset: 0xa - (local.get $0) - ) - ) - ;; code offset: 0x11 - (i32.const 2) - ) - ) - ) - ) - ;; code offset: 0x1e - (local.set $8 - ;; code offset: 0x1c - (call $malloc - ;; code offset: 0x1a - (local.get $12) - ) - ) - ;; code offset: 0x24 - (local.set $9 - ;; code offset: 0x22 - (call $malloc - ;; code offset: 0x20 - (local.get $12) - ) - ) - ;; code offset: 0x26 - (block $label$1 - (block $label$2 - ;; code offset: 0x2f - (if - ;; code offset: 0x2e - (i32.gt_s - ;; code offset: 0x2a - (local.get $2) - ;; code offset: 0x2c - (i32.const 0) - ) - (block - ;; code offset: 0x31 - (loop $label$4 - ;; code offset: 0x3d - (i32.store - ;; code offset: 0x3a - (i32.add - ;; code offset: 0x33 - (local.get $3) - ;; code offset: 0x39 - (i32.shl - ;; code offset: 0x35 - (local.get $1) - ;; code offset: 0x37 - (i32.const 2) - ) - ) - ;; code offset: 0x3b - (local.get $1) - ) - ;; code offset: 0x4a - (br_if $label$4 - ;; code offset: 0x49 - (i32.ne - ;; code offset: 0x45 - (local.tee $1 - ;; code offset: 0x44 - (i32.add - ;; code offset: 0x40 - (local.get $1) - ;; code offset: 0x42 - (i32.const 1) - ) - ) - ;; code offset: 0x47 - (local.get $2) - ) - ) - ) - ;; code offset: 0x61 - (i32.store - ;; code offset: 0x59 - (i32.add - ;; code offset: 0x4d - (local.get $3) - ;; code offset: 0x58 - (i32.shl - ;; code offset: 0x54 - (local.tee $1 - ;; code offset: 0x51 - (i32.load - ;; code offset: 0x4f - (local.get $0) - ) - ) - ;; code offset: 0x56 - (i32.const 2) - ) - ) - ;; code offset: 0x5f - (local.tee $4 - ;; code offset: 0x5e - (i32.add - ;; code offset: 0x5a - (local.get $2) - ;; code offset: 0x5c - (i32.const -1) - ) - ) - ) - ;; code offset: 0x70 - (i32.store - ;; code offset: 0x6c - (local.tee $13 - ;; code offset: 0x6b - (i32.add - ;; code offset: 0x64 - (local.get $3) - ;; code offset: 0x6a - (i32.shl - ;; code offset: 0x66 - (local.get $4) - ;; code offset: 0x68 - (i32.const 2) - ) - ) - ) - ;; code offset: 0x6e - (local.get $1) - ) - ;; code offset: 0x78 - (br_if $label$2 - ;; code offset: 0x77 - (i32.le_s - ;; code offset: 0x73 - (local.get $2) - ;; code offset: 0x75 - (i32.const 0) - ) - ) - ;; code offset: 0x7a - (loop $label$5 - ;; code offset: 0x81 - (if - ;; code offset: 0x80 - (i32.gt_s - ;; code offset: 0x7c - (local.get $2) - ;; code offset: 0x7e - (i32.const 1) - ) - ;; code offset: 0x83 - (loop $label$7 - ;; code offset: 0x94 - (i32.store - ;; code offset: 0x91 - (i32.add - ;; code offset: 0x85 - (local.get $9) - ;; code offset: 0x90 - (i32.shl - ;; code offset: 0x8c - (local.tee $1 - ;; code offset: 0x8b - (i32.add - ;; code offset: 0x87 - (local.get $2) - ;; code offset: 0x89 - (i32.const -1) - ) - ) - ;; code offset: 0x8e - (i32.const 2) - ) - ) - ;; code offset: 0x92 - (local.get $2) - ) - ;; code offset: 0xa0 - (br_if $label$7 - (block (result i32) - (local.set $17 - ;; code offset: 0x9b - (i32.gt_s - ;; code offset: 0x97 - (local.get $2) - ;; code offset: 0x99 - (i32.const 2) - ) - ) - ;; code offset: 0x9e - (local.set $2 - ;; code offset: 0x9c - (local.get $1) - ) - (local.get $17) - ) - ) - ) - ) - ;; code offset: 0xa4 - (block $label$8 - ;; code offset: 0xae - (br_if $label$8 - ;; code offset: 0xad - (i32.eqz - ;; code offset: 0xab - (local.tee $10 - ;; code offset: 0xa8 - (i32.load - ;; code offset: 0xa6 - (local.get $3) - ) - ) - ) - ) - ;; code offset: 0xb8 - (br_if $label$8 - ;; code offset: 0xb7 - (i32.eq - ;; code offset: 0xb2 - (i32.load - ;; code offset: 0xb0 - (local.get $13) - ) - ;; code offset: 0xb5 - (local.get $4) - ) - ) - ;; code offset: 0xc7 - (local.set $6 - ;; code offset: 0xc4 - (i32.load - ;; code offset: 0xc2 - (local.tee $11 - ;; code offset: 0xc0 - (call $memcpy - ;; code offset: 0xba - (local.get $8) - ;; code offset: 0xbc - (local.get $3) - ;; code offset: 0xbe - (local.get $12) - ) - ) - ) - ) - ;; code offset: 0xcb - (local.set $0 - ;; code offset: 0xc9 - (i32.const 0) - ) - ;; code offset: 0xcd - (loop $label$9 - ;; code offset: 0xd1 - (local.set $16 - ;; code offset: 0xcf - (local.get $0) - ) - ;; code offset: 0xd8 - (if - ;; code offset: 0xd7 - (i32.ge_s - ;; code offset: 0xd3 - (local.get $6) - ;; code offset: 0xd5 - (i32.const 3) - ) - (block - ;; code offset: 0xdf - (local.set $1 - ;; code offset: 0xde - (i32.add - ;; code offset: 0xda - (local.get $6) - ;; code offset: 0xdc - (i32.const -1) - ) - ) - ;; code offset: 0xe3 - (local.set $0 - ;; code offset: 0xe1 - (i32.const 1) - ) - ;; code offset: 0xe5 - (loop $label$11 - ;; code offset: 0xf4 - (local.set $15 - ;; code offset: 0xf1 - (i32.load - ;; code offset: 0xef - (local.tee $14 - ;; code offset: 0xee - (i32.add - ;; code offset: 0xe7 - (local.get $11) - ;; code offset: 0xed - (i32.shl - ;; code offset: 0xe9 - (local.get $0) - ;; code offset: 0xeb - (i32.const 2) - ) - ) - ) - ) - ) - ;; code offset: 0x105 - (i32.store - ;; code offset: 0xf6 - (local.get $14) - ;; code offset: 0x102 - (i32.load - ;; code offset: 0x100 - (local.tee $7 - ;; code offset: 0xff - (i32.add - ;; code offset: 0xf8 - (local.get $11) - ;; code offset: 0xfe - (i32.shl - ;; code offset: 0xfa - (local.get $1) - ;; code offset: 0xfc - (i32.const 2) - ) - ) - ) - ) - ) - ;; code offset: 0x10c - (i32.store - ;; code offset: 0x108 - (local.get $7) - ;; code offset: 0x10a - (local.get $15) - ) - ;; code offset: 0x11e - (br_if $label$11 - ;; code offset: 0x11d - (i32.lt_s - ;; code offset: 0x114 - (local.tee $0 - ;; code offset: 0x113 - (i32.add - ;; code offset: 0x10f - (local.get $0) - ;; code offset: 0x111 - (i32.const 1) - ) - ) - ;; code offset: 0x11b - (local.tee $1 - ;; code offset: 0x11a - (i32.add - ;; code offset: 0x116 - (local.get $1) - ;; code offset: 0x118 - (i32.const -1) - ) - ) - ) - ) - ) - ) - ) - ;; code offset: 0x12f - (local.set $1 - ;; code offset: 0x12c - (i32.load - ;; code offset: 0x12a - (local.tee $0 - ;; code offset: 0x129 - (i32.add - ;; code offset: 0x122 - (local.get $11) - ;; code offset: 0x128 - (i32.shl - ;; code offset: 0x124 - (local.get $6) - ;; code offset: 0x126 - (i32.const 2) - ) - ) - ) - ) - ) - ;; code offset: 0x135 - (i32.store - ;; code offset: 0x131 - (local.get $0) - ;; code offset: 0x133 - (local.get $6) - ) - ;; code offset: 0x13d - (local.set $0 - ;; code offset: 0x13c - (i32.add - ;; code offset: 0x138 - (local.get $16) - ;; code offset: 0x13a - (i32.const 1) - ) - ) - ;; code offset: 0x141 - (local.set $6 - ;; code offset: 0x13f - (local.get $1) - ) - ;; code offset: 0x145 - (br_if $label$9 - ;; code offset: 0x143 - (local.get $1) - ) - ) - ;; code offset: 0x152 - (local.set $5 - ;; code offset: 0x151 - (select - ;; code offset: 0x148 - (local.get $5) - ;; code offset: 0x14a - (local.get $0) - ;; code offset: 0x150 - (i32.gt_s - ;; code offset: 0x14c - (local.get $5) - ;; code offset: 0x14e - (local.get $16) - ) - ) - ) - ) - ;; code offset: 0x15a - (br_if $label$1 - ;; code offset: 0x159 - (i32.ge_s - ;; code offset: 0x155 - (local.get $2) - ;; code offset: 0x157 - (local.get $4) - ) - ) - ;; code offset: 0x15c - (loop $label$12 - ;; code offset: 0x160 - (local.set $1 - ;; code offset: 0x15e - (i32.const 0) - ) - ;; code offset: 0x167 - (if - ;; code offset: 0x166 - (i32.gt_s - ;; code offset: 0x162 - (local.get $2) - ;; code offset: 0x164 - (i32.const 0) - ) - (block - ;; code offset: 0x169 - (loop $label$14 - ;; code offset: 0x183 - (i32.store - ;; code offset: 0x172 - (i32.add - ;; code offset: 0x16b - (local.get $3) - ;; code offset: 0x171 - (i32.shl - ;; code offset: 0x16d - (local.get $1) - ;; code offset: 0x16f - (i32.const 2) - ) - ) - ;; code offset: 0x180 - (i32.load - ;; code offset: 0x17f - (i32.add - ;; code offset: 0x173 - (local.get $3) - ;; code offset: 0x17e - (i32.shl - ;; code offset: 0x17a - (local.tee $1 - ;; code offset: 0x179 - (i32.add - ;; code offset: 0x175 - (local.get $1) - ;; code offset: 0x177 - (i32.const 1) - ) - ) - ;; code offset: 0x17c - (i32.const 2) - ) - ) - ) - ) - ;; code offset: 0x18b - (br_if $label$14 - ;; code offset: 0x18a - (i32.ne - ;; code offset: 0x186 - (local.get $1) - ;; code offset: 0x188 - (local.get $2) - ) - ) - ) - ;; code offset: 0x190 - (local.set $1 - ;; code offset: 0x18e - (local.get $2) - ) - ) - ) - ;; code offset: 0x19d - (i32.store - ;; code offset: 0x19a - (i32.add - ;; code offset: 0x193 - (local.get $3) - ;; code offset: 0x199 - (i32.shl - ;; code offset: 0x195 - (local.get $1) - ;; code offset: 0x197 - (i32.const 2) - ) - ) - ;; code offset: 0x19b - (local.get $10) - ) - ;; code offset: 0x1b4 - (i32.store - ;; code offset: 0x1a8 - (local.tee $1 - ;; code offset: 0x1a7 - (i32.add - ;; code offset: 0x1a0 - (local.get $9) - ;; code offset: 0x1a6 - (i32.shl - ;; code offset: 0x1a2 - (local.get $2) - ;; code offset: 0x1a4 - (i32.const 2) - ) - ) - ) - ;; code offset: 0x1b3 - (i32.add - ;; code offset: 0x1af - (local.tee $1 - ;; code offset: 0x1ac - (i32.load - ;; code offset: 0x1aa - (local.get $1) - ) - ) - ;; code offset: 0x1b1 - (i32.const -1) - ) - ) - ;; code offset: 0x1bc - (br_if $label$5 - ;; code offset: 0x1bb - (i32.gt_s - ;; code offset: 0x1b7 - (local.get $1) - ;; code offset: 0x1b9 - (i32.const 1) - ) - ) - ;; code offset: 0x1c8 - (br_if $label$1 - ;; code offset: 0x1c7 - (i32.eq - ;; code offset: 0x1c3 - (local.tee $2 - ;; code offset: 0x1c2 - (i32.add - ;; code offset: 0x1be - (local.get $2) - ;; code offset: 0x1c0 - (i32.const 1) - ) - ) - ;; code offset: 0x1c5 - (local.get $4) - ) - ) - ;; code offset: 0x1cf - (local.set $10 - ;; code offset: 0x1cc - (i32.load - ;; code offset: 0x1ca - (local.get $3) - ) - ) - ;; code offset: 0x1d1 - (br $label$12) - ) - ) - ) - ) - ;; code offset: 0x1ec - (i32.store - ;; code offset: 0x1e4 - (i32.add - ;; code offset: 0x1d8 - (local.get $3) - ;; code offset: 0x1e3 - (i32.shl - ;; code offset: 0x1df - (local.tee $1 - ;; code offset: 0x1dc - (i32.load - ;; code offset: 0x1da - (local.get $0) - ) - ) - ;; code offset: 0x1e1 - (i32.const 2) - ) - ) - ;; code offset: 0x1ea - (local.tee $4 - ;; code offset: 0x1e9 - (i32.add - ;; code offset: 0x1e5 - (local.get $2) - ;; code offset: 0x1e7 - (i32.const -1) - ) - ) - ) - ;; code offset: 0x1fb - (i32.store - ;; code offset: 0x1f7 - (local.tee $13 - ;; code offset: 0x1f6 - (i32.add - ;; code offset: 0x1ef - (local.get $3) - ;; code offset: 0x1f5 - (i32.shl - ;; code offset: 0x1f1 - (local.get $4) - ;; code offset: 0x1f3 - (i32.const 2) - ) - ) - ) - ;; code offset: 0x1f9 - (local.get $1) - ) - ) - ;; code offset: 0x1ff - (loop $label$15 - ;; code offset: 0x206 - (if - ;; code offset: 0x205 - (i32.ge_s - ;; code offset: 0x201 - (local.get $2) - ;; code offset: 0x203 - (i32.const 2) - ) - ;; code offset: 0x208 - (loop $label$17 - ;; code offset: 0x219 - (i32.store - ;; code offset: 0x216 - (i32.add - ;; code offset: 0x20a - (local.get $9) - ;; code offset: 0x215 - (i32.shl - ;; code offset: 0x211 - (local.tee $1 - ;; code offset: 0x210 - (i32.add - ;; code offset: 0x20c - (local.get $2) - ;; code offset: 0x20e - (i32.const -1) - ) - ) - ;; code offset: 0x213 - (i32.const 2) - ) - ) - ;; code offset: 0x217 - (local.get $2) - ) - ;; code offset: 0x225 - (br_if $label$17 - (block (result i32) - (local.set $18 - ;; code offset: 0x220 - (i32.gt_s - ;; code offset: 0x21c - (local.get $2) - ;; code offset: 0x21e - (i32.const 2) - ) - ) - ;; code offset: 0x223 - (local.set $2 - ;; code offset: 0x221 - (local.get $1) - ) - (local.get $18) - ) - ) - ) - ) - ;; code offset: 0x229 - (block $label$18 - ;; code offset: 0x233 - (br_if $label$18 - ;; code offset: 0x232 - (i32.eqz - ;; code offset: 0x230 - (local.tee $6 - ;; code offset: 0x22d - (i32.load - ;; code offset: 0x22b - (local.get $3) - ) - ) - ) - ) - ;; code offset: 0x23d - (br_if $label$18 - ;; code offset: 0x23c - (i32.eq - ;; code offset: 0x237 - (i32.load - ;; code offset: 0x235 - (local.get $13) - ) - ;; code offset: 0x23a - (local.get $4) - ) - ) - ;; code offset: 0x244 - (local.set $7 - ;; code offset: 0x241 - (i32.load - ;; code offset: 0x23f - (local.get $8) - ) - ) - ;; code offset: 0x248 - (local.set $0 - ;; code offset: 0x246 - (i32.const 0) - ) - ;; code offset: 0x24a - (loop $label$19 - ;; code offset: 0x24e - (local.set $10 - ;; code offset: 0x24c - (local.get $0) - ) - ;; code offset: 0x255 - (if - ;; code offset: 0x254 - (i32.ge_s - ;; code offset: 0x250 - (local.get $7) - ;; code offset: 0x252 - (i32.const 3) - ) - (block - ;; code offset: 0x25c - (local.set $1 - ;; code offset: 0x25b - (i32.add - ;; code offset: 0x257 - (local.get $7) - ;; code offset: 0x259 - (i32.const -1) - ) - ) - ;; code offset: 0x260 - (local.set $0 - ;; code offset: 0x25e - (i32.const 1) - ) - ;; code offset: 0x262 - (loop $label$21 - ;; code offset: 0x271 - (local.set $14 - ;; code offset: 0x26e - (i32.load - ;; code offset: 0x26c - (local.tee $11 - ;; code offset: 0x26b - (i32.add - ;; code offset: 0x264 - (local.get $8) - ;; code offset: 0x26a - (i32.shl - ;; code offset: 0x266 - (local.get $0) - ;; code offset: 0x268 - (i32.const 2) - ) - ) - ) - ) - ) - ;; code offset: 0x282 - (i32.store - ;; code offset: 0x273 - (local.get $11) - ;; code offset: 0x27f - (i32.load - ;; code offset: 0x27d - (local.tee $15 - ;; code offset: 0x27c - (i32.add - ;; code offset: 0x275 - (local.get $8) - ;; code offset: 0x27b - (i32.shl - ;; code offset: 0x277 - (local.get $1) - ;; code offset: 0x279 - (i32.const 2) - ) - ) - ) - ) - ) - ;; code offset: 0x289 - (i32.store - ;; code offset: 0x285 - (local.get $15) - ;; code offset: 0x287 - (local.get $14) - ) - ;; code offset: 0x29b - (br_if $label$21 - ;; code offset: 0x29a - (i32.lt_s - ;; code offset: 0x291 - (local.tee $0 - ;; code offset: 0x290 - (i32.add - ;; code offset: 0x28c - (local.get $0) - ;; code offset: 0x28e - (i32.const 1) - ) - ) - ;; code offset: 0x298 - (local.tee $1 - ;; code offset: 0x297 - (i32.add - ;; code offset: 0x293 - (local.get $1) - ;; code offset: 0x295 - (i32.const -1) - ) - ) - ) - ) - ) - ) - ) - ;; code offset: 0x2ac - (local.set $1 - ;; code offset: 0x2a9 - (i32.load - ;; code offset: 0x2a7 - (local.tee $0 - ;; code offset: 0x2a6 - (i32.add - ;; code offset: 0x29f - (local.get $8) - ;; code offset: 0x2a5 - (i32.shl - ;; code offset: 0x2a1 - (local.get $7) - ;; code offset: 0x2a3 - (i32.const 2) - ) - ) - ) - ) - ) - ;; code offset: 0x2b2 - (i32.store - ;; code offset: 0x2ae - (local.get $0) - ;; code offset: 0x2b0 - (local.get $7) - ) - ;; code offset: 0x2ba - (local.set $0 - ;; code offset: 0x2b9 - (i32.add - ;; code offset: 0x2b5 - (local.get $10) - ;; code offset: 0x2b7 - (i32.const 1) - ) - ) - ;; code offset: 0x2be - (local.set $7 - ;; code offset: 0x2bc - (local.get $1) - ) - ;; code offset: 0x2c2 - (br_if $label$19 - ;; code offset: 0x2c0 - (local.get $1) - ) - ) - ;; code offset: 0x2cf - (local.set $5 - ;; code offset: 0x2ce - (select - ;; code offset: 0x2c5 - (local.get $5) - ;; code offset: 0x2c7 - (local.get $0) - ;; code offset: 0x2cd - (i32.gt_s - ;; code offset: 0x2c9 - (local.get $5) - ;; code offset: 0x2cb - (local.get $10) - ) - ) - ) - ) - ;; code offset: 0x2d7 - (br_if $label$1 - ;; code offset: 0x2d6 - (i32.ge_s - ;; code offset: 0x2d2 - (local.get $2) - ;; code offset: 0x2d4 - (local.get $4) - ) - ) - ;; code offset: 0x2d9 - (loop $label$22 - ;; code offset: 0x2dd - (local.set $1 - ;; code offset: 0x2db - (i32.const 0) - ) - ;; code offset: 0x2e4 - (if - ;; code offset: 0x2e3 - (i32.ge_s - ;; code offset: 0x2df - (local.get $2) - ;; code offset: 0x2e1 - (i32.const 1) - ) - (block - ;; code offset: 0x2e6 - (loop $label$24 - ;; code offset: 0x300 - (i32.store - ;; code offset: 0x2ef - (i32.add - ;; code offset: 0x2e8 - (local.get $3) - ;; code offset: 0x2ee - (i32.shl - ;; code offset: 0x2ea - (local.get $1) - ;; code offset: 0x2ec - (i32.const 2) - ) - ) - ;; code offset: 0x2fd - (i32.load - ;; code offset: 0x2fc - (i32.add - ;; code offset: 0x2f0 - (local.get $3) - ;; code offset: 0x2fb - (i32.shl - ;; code offset: 0x2f7 - (local.tee $1 - ;; code offset: 0x2f6 - (i32.add - ;; code offset: 0x2f2 - (local.get $1) - ;; code offset: 0x2f4 - (i32.const 1) - ) - ) - ;; code offset: 0x2f9 - (i32.const 2) - ) - ) - ) - ) - ;; code offset: 0x308 - (br_if $label$24 - ;; code offset: 0x307 - (i32.ne - ;; code offset: 0x303 - (local.get $1) - ;; code offset: 0x305 - (local.get $2) - ) - ) - ) - ;; code offset: 0x30d - (local.set $1 - ;; code offset: 0x30b - (local.get $2) - ) - ) - ) - ;; code offset: 0x31a - (i32.store - ;; code offset: 0x317 - (i32.add - ;; code offset: 0x310 - (local.get $3) - ;; code offset: 0x316 - (i32.shl - ;; code offset: 0x312 - (local.get $1) - ;; code offset: 0x314 - (i32.const 2) - ) - ) - ;; code offset: 0x318 - (local.get $6) - ) - ;; code offset: 0x331 - (i32.store - ;; code offset: 0x325 - (local.tee $1 - ;; code offset: 0x324 - (i32.add - ;; code offset: 0x31d - (local.get $9) - ;; code offset: 0x323 - (i32.shl - ;; code offset: 0x31f - (local.get $2) - ;; code offset: 0x321 - (i32.const 2) - ) - ) - ) - ;; code offset: 0x330 - (i32.add - ;; code offset: 0x32c - (local.tee $1 - ;; code offset: 0x329 - (i32.load - ;; code offset: 0x327 - (local.get $1) - ) - ) - ;; code offset: 0x32e - (i32.const -1) - ) - ) - ;; code offset: 0x339 - (br_if $label$15 - ;; code offset: 0x338 - (i32.gt_s - ;; code offset: 0x334 - (local.get $1) - ;; code offset: 0x336 - (i32.const 1) - ) - ) - ;; code offset: 0x345 - (br_if $label$1 - ;; code offset: 0x344 - (i32.eq - ;; code offset: 0x340 - (local.tee $2 - ;; code offset: 0x33f - (i32.add - ;; code offset: 0x33b - (local.get $2) - ;; code offset: 0x33d - (i32.const 1) - ) - ) - ;; code offset: 0x342 - (local.get $4) - ) - ) - ;; code offset: 0x34c - (local.set $6 - ;; code offset: 0x349 - (i32.load - ;; code offset: 0x347 - (local.get $3) - ) - ) - ;; code offset: 0x34e - (br $label$22) - ) - ) - ) - ;; code offset: 0x357 - (call $free - ;; code offset: 0x355 - (local.get $3) - ) - ;; code offset: 0x35b - (call $free - ;; code offset: 0x359 - (local.get $8) - ) - ;; code offset: 0x35f - (call $free - ;; code offset: 0x35d - (local.get $9) - ) - ;; code offset: 0x361 - (local.get $5) - ) - (func $main (; 9 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - ;; code offset: 0x370 - (global.set $global$0 - ;; code offset: 0x36e - (local.tee $8 - ;; code offset: 0x36d - (i32.sub - ;; code offset: 0x369 - (global.get $global$0) - ;; code offset: 0x36b - (i32.const 32) - ) - ) - ) - ;; code offset: 0x372 - (block $label$1 - (block $label$2 - ;; code offset: 0x37b - (if - ;; code offset: 0x37a - (i32.ge_s - ;; code offset: 0x376 - (local.get $0) - ;; code offset: 0x378 - (i32.const 2) - ) - ;; code offset: 0x389 - (br_if $label$2 - ;; code offset: 0x388 - (i32.gt_s - ;; code offset: 0x384 - (local.tee $3 - ;; code offset: 0x382 - (call $atoi - ;; code offset: 0x37f - (i32.load offset=4 - ;; code offset: 0x37d - (local.get $1) - ) - ) - ) - ;; code offset: 0x386 - (i32.const 0) - ) - ) - ) - ;; code offset: 0x391 - (drop - ;; code offset: 0x38f - (call $puts - ;; code offset: 0x38c - (i32.const 1050) - ) - ) - ;; code offset: 0x394 - (local.set $5 - ;; code offset: 0x392 - (i32.const 1) - ) - ;; code offset: 0x396 - (br $label$1) - ) - ;; code offset: 0x39e - (if - ;; code offset: 0x39d - (i32.ne - ;; code offset: 0x399 - (local.get $3) - ;; code offset: 0x39b - (i32.const 1) - ) - (block - ;; code offset: 0x3a5 - (local.set $2 - ;; code offset: 0x3a4 - (i32.add - ;; code offset: 0x3a0 - (local.get $3) - ;; code offset: 0x3a2 - (i32.const -1) - ) - ) - ;; code offset: 0x3a9 - (local.set $1 - ;; code offset: 0x3a7 - (i32.const 0) - ) - ;; code offset: 0x3ad - (local.set $0 - ;; code offset: 0x3ab - (i32.const 0) - ) - ;; code offset: 0x3af - (loop $label$5 - ;; code offset: 0x3b9 - (i32.store offset=8 - ;; code offset: 0x3b5 - (local.tee $4 - ;; code offset: 0x3b3 - (call $malloc - ;; code offset: 0x3b1 - (i32.const 12) - ) - ) - ;; code offset: 0x3b7 - (local.get $1) - ) - ;; code offset: 0x3c0 - (i32.store offset=4 - ;; code offset: 0x3bc - (local.get $4) - ;; code offset: 0x3be - (local.get $3) - ) - ;; code offset: 0x3c7 - (i32.store - ;; code offset: 0x3c3 - (local.get $4) - ;; code offset: 0x3c5 - (local.get $0) - ) - ;; code offset: 0x3cc - (local.set $1 - ;; code offset: 0x3ca - (local.get $4) - ) - ;; code offset: 0x3d8 - (br_if $label$5 - ;; code offset: 0x3d7 - (i32.ne - ;; code offset: 0x3d3 - (local.tee $0 - ;; code offset: 0x3d2 - (i32.add - ;; code offset: 0x3ce - (local.get $0) - ;; code offset: 0x3d0 - (i32.const 1) - ) - ) - ;; code offset: 0x3d5 - (local.get $2) - ) - ) - ) - ) - ) - ;; code offset: 0x3de - (local.set $0 - ;; code offset: 0x3dc - (i32.const 0) - ) - ;; code offset: 0x3e9 - (local.set $1 - ;; code offset: 0x3e7 - (call $malloc - ;; code offset: 0x3e5 - (local.tee $2 - ;; code offset: 0x3e4 - (i32.shl - ;; code offset: 0x3e0 - (local.get $3) - ;; code offset: 0x3e2 - (i32.const 2) - ) - ) - ) - ) - ;; code offset: 0x3ef - (local.set $5 - ;; code offset: 0x3ed - (call $malloc - ;; code offset: 0x3eb - (local.get $2) - ) - ) - ;; code offset: 0x3f1 - (block $label$6 - (block $label$7 - (block $label$8 - ;; code offset: 0x3fc - (if - ;; code offset: 0x3fb - (i32.gt_s - ;; code offset: 0x3f7 - (local.get $3) - ;; code offset: 0x3f9 - (i32.const 0) - ) - (block - ;; code offset: 0x3fe - (loop $label$10 - ;; code offset: 0x40a - (i32.store - ;; code offset: 0x407 - (i32.add - ;; code offset: 0x400 - (local.get $1) - ;; code offset: 0x406 - (i32.shl - ;; code offset: 0x402 - (local.get $0) - ;; code offset: 0x404 - (i32.const 2) - ) - ) - ;; code offset: 0x408 - (local.get $0) - ) - ;; code offset: 0x417 - (br_if $label$10 - ;; code offset: 0x416 - (i32.ne - ;; code offset: 0x412 - (local.tee $0 - ;; code offset: 0x411 - (i32.add - ;; code offset: 0x40d - (local.get $0) - ;; code offset: 0x40f - (i32.const 1) - ) - ) - ;; code offset: 0x414 - (local.get $3) - ) - ) - ) - ;; code offset: 0x41c - (local.set $6 - ;; code offset: 0x41a - (i32.const 30) - ) - ;; code offset: 0x420 - (local.set $2 - ;; code offset: 0x41e - (local.get $3) - ) - ;; code offset: 0x422 - (br $label$8) - ) - ) - ;; code offset: 0x427 - (local.set $6 - ;; code offset: 0x425 - (i32.const 30) - ) - ;; code offset: 0x42b - (local.set $2 - ;; code offset: 0x429 - (local.get $3) - ) - ;; code offset: 0x42d - (br $label$7) - ) - ;; code offset: 0x430 - (loop $label$11 - ;; code offset: 0x434 - (local.set $0 - ;; code offset: 0x432 - (i32.const 0) - ) - ;; code offset: 0x436 - (loop $label$12 - ;; code offset: 0x448 - (i32.store offset=16 - ;; code offset: 0x438 - (local.get $8) - ;; code offset: 0x447 - (i32.add - ;; code offset: 0x442 - (i32.load - ;; code offset: 0x441 - (i32.add - ;; code offset: 0x43a - (local.get $1) - ;; code offset: 0x440 - (i32.shl - ;; code offset: 0x43c - (local.get $0) - ;; code offset: 0x43e - (i32.const 2) - ) - ) - ) - ;; code offset: 0x445 - (i32.const 1) - ) - ) - ;; code offset: 0x455 - (drop - ;; code offset: 0x453 - (call $iprintf - ;; code offset: 0x44b - (i32.const 1047) - ;; code offset: 0x452 - (i32.add - ;; code offset: 0x44e - (local.get $8) - ;; code offset: 0x450 - (i32.const 16) - ) - ) - ) - ;; code offset: 0x460 - (br_if $label$12 - ;; code offset: 0x45f - (i32.ne - ;; code offset: 0x45b - (local.tee $0 - ;; code offset: 0x45a - (i32.add - ;; code offset: 0x456 - (local.get $0) - ;; code offset: 0x458 - (i32.const 1) - ) - ) - ;; code offset: 0x45d - (local.get $3) - ) - ) - ) - ;; code offset: 0x467 - (drop - ;; code offset: 0x465 - (call $putchar - ;; code offset: 0x463 - (i32.const 10) - ) - ) - ;; code offset: 0x46d - (if - ;; code offset: 0x46c - (i32.gt_s - ;; code offset: 0x468 - (local.get $2) - ;; code offset: 0x46a - (i32.const 1) - ) - ;; code offset: 0x46f - (loop $label$14 - ;; code offset: 0x480 - (i32.store - ;; code offset: 0x47d - (i32.add - ;; code offset: 0x471 - (local.get $5) - ;; code offset: 0x47c - (i32.shl - ;; code offset: 0x478 - (local.tee $0 - ;; code offset: 0x477 - (i32.add - ;; code offset: 0x473 - (local.get $2) - ;; code offset: 0x475 - (i32.const -1) - ) - ) - ;; code offset: 0x47a - (i32.const 2) - ) - ) - ;; code offset: 0x47e - (local.get $2) - ) - ;; code offset: 0x48c - (br_if $label$14 - (block (result i32) - (local.set $9 - ;; code offset: 0x487 - (i32.gt_s - ;; code offset: 0x483 - (local.get $2) - ;; code offset: 0x485 - (i32.const 2) - ) - ) - ;; code offset: 0x48a - (local.set $2 - ;; code offset: 0x488 - (local.get $0) - ) - (local.get $9) - ) - ) - ) - ) - ;; code offset: 0x495 - (br_if $label$6 - ;; code offset: 0x494 - (i32.eq - ;; code offset: 0x490 - (local.get $2) - ;; code offset: 0x492 - (local.get $3) - ) - ) - ;; code offset: 0x49c - (local.set $6 - ;; code offset: 0x49b - (i32.add - ;; code offset: 0x497 - (local.get $6) - ;; code offset: 0x499 - (i32.const -1) - ) - ) - ;; code offset: 0x49e - (loop $label$15 - ;; code offset: 0x4a2 - (local.set $0 - ;; code offset: 0x4a0 - (i32.const 0) - ) - ;; code offset: 0x4a9 - (local.set $7 - ;; code offset: 0x4a6 - (i32.load - ;; code offset: 0x4a4 - (local.get $1) - ) - ) - ;; code offset: 0x4b0 - (if - ;; code offset: 0x4af - (i32.gt_s - ;; code offset: 0x4ab - (local.get $2) - ;; code offset: 0x4ad - (i32.const 0) - ) - (block - ;; code offset: 0x4b2 - (loop $label$17 - ;; code offset: 0x4cc - (i32.store - ;; code offset: 0x4bb - (i32.add - ;; code offset: 0x4b4 - (local.get $1) - ;; code offset: 0x4ba - (i32.shl - ;; code offset: 0x4b6 - (local.get $0) - ;; code offset: 0x4b8 - (i32.const 2) - ) - ) - ;; code offset: 0x4c9 - (i32.load - ;; code offset: 0x4c8 - (i32.add - ;; code offset: 0x4bc - (local.get $1) - ;; code offset: 0x4c7 - (i32.shl - ;; code offset: 0x4c3 - (local.tee $0 - ;; code offset: 0x4c2 - (i32.add - ;; code offset: 0x4be - (local.get $0) - ;; code offset: 0x4c0 - (i32.const 1) - ) - ) - ;; code offset: 0x4c5 - (i32.const 2) - ) - ) - ) - ) - ;; code offset: 0x4d4 - (br_if $label$17 - ;; code offset: 0x4d3 - (i32.ne - ;; code offset: 0x4cf - (local.get $0) - ;; code offset: 0x4d1 - (local.get $2) - ) - ) - ) - ;; code offset: 0x4d9 - (local.set $0 - ;; code offset: 0x4d7 - (local.get $2) - ) - ) - ) - ;; code offset: 0x4e6 - (i32.store - ;; code offset: 0x4e3 - (i32.add - ;; code offset: 0x4dc - (local.get $1) - ;; code offset: 0x4e2 - (i32.shl - ;; code offset: 0x4de - (local.get $0) - ;; code offset: 0x4e0 - (i32.const 2) - ) - ) - ;; code offset: 0x4e4 - (local.get $7) - ) - ;; code offset: 0x4fd - (i32.store - ;; code offset: 0x4f1 - (local.tee $0 - ;; code offset: 0x4f0 - (i32.add - ;; code offset: 0x4e9 - (local.get $5) - ;; code offset: 0x4ef - (i32.shl - ;; code offset: 0x4eb - (local.get $2) - ;; code offset: 0x4ed - (i32.const 2) - ) - ) - ) - ;; code offset: 0x4fc - (i32.add - ;; code offset: 0x4f8 - (local.tee $0 - ;; code offset: 0x4f5 - (i32.load - ;; code offset: 0x4f3 - (local.get $0) - ) - ) - ;; code offset: 0x4fa - (i32.const -1) - ) - ) - ;; code offset: 0x505 - (if - ;; code offset: 0x504 - (i32.le_s - ;; code offset: 0x500 - (local.get $0) - ;; code offset: 0x502 - (i32.const 1) - ) - (block - ;; code offset: 0x511 - (br_if $label$15 - ;; code offset: 0x510 - (i32.ne - ;; code offset: 0x50c - (local.tee $2 - ;; code offset: 0x50b - (i32.add - ;; code offset: 0x507 - (local.get $2) - ;; code offset: 0x509 - (i32.const 1) - ) - ) - ;; code offset: 0x50e - (local.get $3) - ) - ) - ;; code offset: 0x513 - (br $label$6) - ) - ) - ) - ;; code offset: 0x519 - (br_if $label$11 - ;; code offset: 0x517 - (local.get $6) - ) - ) - ;; code offset: 0x51c - (br $label$6) - ) - ;; code offset: 0x51f - (loop $label$19 - ;; code offset: 0x525 - (drop - ;; code offset: 0x523 - (call $putchar - ;; code offset: 0x521 - (i32.const 10) - ) - ) - ;; code offset: 0x52b - (if - ;; code offset: 0x52a - (i32.gt_s - ;; code offset: 0x526 - (local.get $2) - ;; code offset: 0x528 - (i32.const 1) - ) - ;; code offset: 0x52d - (loop $label$21 - ;; code offset: 0x53e - (i32.store - ;; code offset: 0x53b - (i32.add - ;; code offset: 0x52f - (local.get $5) - ;; code offset: 0x53a - (i32.shl - ;; code offset: 0x536 - (local.tee $0 - ;; code offset: 0x535 - (i32.add - ;; code offset: 0x531 - (local.get $2) - ;; code offset: 0x533 - (i32.const -1) - ) - ) - ;; code offset: 0x538 - (i32.const 2) - ) - ) - ;; code offset: 0x53c - (local.get $2) - ) - ;; code offset: 0x54a - (br_if $label$21 - (block (result i32) - (local.set $10 - ;; code offset: 0x545 - (i32.gt_s - ;; code offset: 0x541 - (local.get $2) - ;; code offset: 0x543 - (i32.const 2) - ) - ) - ;; code offset: 0x548 - (local.set $2 - ;; code offset: 0x546 - (local.get $0) - ) - (local.get $10) - ) - ) - ) - ) - ;; code offset: 0x553 - (br_if $label$6 - ;; code offset: 0x552 - (i32.eq - ;; code offset: 0x54e - (local.get $2) - ;; code offset: 0x550 - (local.get $3) - ) - ) - ;; code offset: 0x55a - (local.set $6 - ;; code offset: 0x559 - (i32.add - ;; code offset: 0x555 - (local.get $6) - ;; code offset: 0x557 - (i32.const -1) - ) - ) - ;; code offset: 0x55c - (loop $label$22 - ;; code offset: 0x563 - (local.set $7 - ;; code offset: 0x560 - (i32.load - ;; code offset: 0x55e - (local.get $1) - ) - ) - ;; code offset: 0x567 - (local.set $0 - ;; code offset: 0x565 - (i32.const 0) - ) - ;; code offset: 0x56e - (if - ;; code offset: 0x56d - (i32.ge_s - ;; code offset: 0x569 - (local.get $2) - ;; code offset: 0x56b - (i32.const 1) - ) - (block - ;; code offset: 0x570 - (loop $label$24 - ;; code offset: 0x58a - (i32.store - ;; code offset: 0x579 - (i32.add - ;; code offset: 0x572 - (local.get $1) - ;; code offset: 0x578 - (i32.shl - ;; code offset: 0x574 - (local.get $0) - ;; code offset: 0x576 - (i32.const 2) - ) - ) - ;; code offset: 0x587 - (i32.load - ;; code offset: 0x586 - (i32.add - ;; code offset: 0x57a - (local.get $1) - ;; code offset: 0x585 - (i32.shl - ;; code offset: 0x581 - (local.tee $0 - ;; code offset: 0x580 - (i32.add - ;; code offset: 0x57c - (local.get $0) - ;; code offset: 0x57e - (i32.const 1) - ) - ) - ;; code offset: 0x583 - (i32.const 2) - ) - ) - ) - ) - ;; code offset: 0x592 - (br_if $label$24 - ;; code offset: 0x591 - (i32.ne - ;; code offset: 0x58d - (local.get $0) - ;; code offset: 0x58f - (local.get $2) - ) - ) - ) - ;; code offset: 0x597 - (local.set $0 - ;; code offset: 0x595 - (local.get $2) - ) - ) - ) - ;; code offset: 0x5a4 - (i32.store - ;; code offset: 0x5a1 - (i32.add - ;; code offset: 0x59a - (local.get $1) - ;; code offset: 0x5a0 - (i32.shl - ;; code offset: 0x59c - (local.get $0) - ;; code offset: 0x59e - (i32.const 2) - ) - ) - ;; code offset: 0x5a2 - (local.get $7) - ) - ;; code offset: 0x5bb - (i32.store - ;; code offset: 0x5af - (local.tee $0 - ;; code offset: 0x5ae - (i32.add - ;; code offset: 0x5a7 - (local.get $5) - ;; code offset: 0x5ad - (i32.shl - ;; code offset: 0x5a9 - (local.get $2) - ;; code offset: 0x5ab - (i32.const 2) - ) - ) - ) - ;; code offset: 0x5ba - (i32.add - ;; code offset: 0x5b6 - (local.tee $0 - ;; code offset: 0x5b3 - (i32.load - ;; code offset: 0x5b1 - (local.get $0) - ) - ) - ;; code offset: 0x5b8 - (i32.const -1) - ) - ) - ;; code offset: 0x5c3 - (if - ;; code offset: 0x5c2 - (i32.le_s - ;; code offset: 0x5be - (local.get $0) - ;; code offset: 0x5c0 - (i32.const 1) - ) - (block - ;; code offset: 0x5cf - (br_if $label$22 - ;; code offset: 0x5ce - (i32.ne - ;; code offset: 0x5ca - (local.tee $2 - ;; code offset: 0x5c9 - (i32.add - ;; code offset: 0x5c5 - (local.get $2) - ;; code offset: 0x5c7 - (i32.const 1) - ) - ) - ;; code offset: 0x5cc - (local.get $3) - ) - ) - ;; code offset: 0x5d1 - (br $label$6) - ) - ) - ) - ;; code offset: 0x5d7 - (br_if $label$19 - ;; code offset: 0x5d5 - (local.get $6) - ) - ) - ) - ;; code offset: 0x5dd - (call $free - ;; code offset: 0x5db - (local.get $1) - ) - ;; code offset: 0x5e1 - (call $free - ;; code offset: 0x5df - (local.get $5) - ) - ;; code offset: 0x5e5 - (local.set $5 - ;; code offset: 0x5e3 - (i32.const 0) - ) - ;; code offset: 0x5e9 - (local.set $0 - ;; code offset: 0x5e7 - (i32.const 0) - ) - ;; code offset: 0x5ed - (if - ;; code offset: 0x5eb - (local.get $4) - ;; code offset: 0x5ef - (loop $label$27 - ;; code offset: 0x5f5 - (local.set $1 - ;; code offset: 0x5f3 - (call $fannkuch_worker\28void*\29 - ;; code offset: 0x5f1 - (local.get $4) - ) - ) - ;; code offset: 0x5fc - (local.set $2 - ;; code offset: 0x5f9 - (i32.load offset=8 - ;; code offset: 0x5f7 - (local.get $4) - ) - ) - ;; code offset: 0x600 - (call $free - ;; code offset: 0x5fe - (local.get $4) - ) - ;; code offset: 0x60c - (local.set $0 - ;; code offset: 0x60b - (select - ;; code offset: 0x602 - (local.get $1) - ;; code offset: 0x604 - (local.get $0) - ;; code offset: 0x60a - (i32.lt_s - ;; code offset: 0x606 - (local.get $0) - ;; code offset: 0x608 - (local.get $1) - ) - ) - ) - ;; code offset: 0x610 - (local.set $4 - ;; code offset: 0x60e - (local.get $2) - ) - ;; code offset: 0x614 - (br_if $label$27 - ;; code offset: 0x612 - (local.get $2) - ) - ) - ) - ;; code offset: 0x61c - (i32.store offset=4 - ;; code offset: 0x618 - (local.get $8) - ;; code offset: 0x61a - (local.get $0) - ) - ;; code offset: 0x623 - (i32.store - ;; code offset: 0x61f - (local.get $8) - ;; code offset: 0x621 - (local.get $3) - ) - ;; code offset: 0x62d - (drop - ;; code offset: 0x62b - (call $iprintf - ;; code offset: 0x626 - (i32.const 1024) - ;; code offset: 0x629 - (local.get $8) - ) - ) - ) - ;; code offset: 0x634 - (global.set $global$0 - ;; code offset: 0x633 - (i32.add - ;; code offset: 0x62f - (local.get $8) - ;; code offset: 0x631 - (i32.const 32) - ) - ) - ;; code offset: 0x636 - (local.get $5) - ) - ;; custom section ".debug_info", size 851 - ;; custom section ".debug_loc", size 1073 - ;; custom section ".debug_ranges", size 88 - ;; custom section ".debug_abbrev", size 333 - ;; custom section ".debug_line", size 2662 - ;; custom section ".debug_str", size 434 - ;; custom section "producers", size 135 -) diff -Nru binaryen-91/test/passes/fannkuch3_manyopts_dwarf.bin.txt binaryen-99/test/passes/fannkuch3_manyopts_dwarf.bin.txt --- binaryen-91/test/passes/fannkuch3_manyopts_dwarf.bin.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/fannkuch3_manyopts_dwarf.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,6855 @@ +DWARF debug info +================ + +Contains section .debug_info (851 bytes) +Contains section .debug_loc (1073 bytes) +Contains section .debug_ranges (88 bytes) +Contains section .debug_abbrev (333 bytes) +Contains section .debug_line (1477 bytes) +Contains section .debug_str (434 bytes) + +.debug_abbrev contents: +Abbrev table for offset: 0x00000000 +[1] DW_TAG_compile_unit DW_CHILDREN_yes + DW_AT_producer DW_FORM_strp + DW_AT_language DW_FORM_data2 + DW_AT_name DW_FORM_strp + DW_AT_stmt_list DW_FORM_sec_offset + DW_AT_comp_dir DW_FORM_strp + DW_AT_low_pc DW_FORM_addr + DW_AT_ranges DW_FORM_sec_offset + +[2] DW_TAG_pointer_type DW_CHILDREN_no + DW_AT_type DW_FORM_ref4 + +[3] DW_TAG_structure_type DW_CHILDREN_yes + DW_AT_calling_convention DW_FORM_data1 + DW_AT_name DW_FORM_strp + DW_AT_byte_size DW_FORM_data1 + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + +[4] DW_TAG_member DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_type DW_FORM_ref4 + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_data_member_location DW_FORM_data1 + +[5] DW_TAG_base_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_encoding DW_FORM_data1 + DW_AT_byte_size DW_FORM_data1 + +[6] DW_TAG_namespace DW_CHILDREN_yes + DW_AT_name DW_FORM_strp + +[7] DW_TAG_typedef DW_CHILDREN_no + DW_AT_type DW_FORM_ref4 + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + +[8] DW_TAG_unspecified_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + +[9] DW_TAG_imported_declaration DW_CHILDREN_no + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_import DW_FORM_ref4 + +[10] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_GNU_all_call_sites DW_FORM_flag_present + DW_AT_linkage_name DW_FORM_strp + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[11] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[12] DW_TAG_variable DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[13] DW_TAG_variable DW_CHILDREN_no + DW_AT_location DW_FORM_sec_offset + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[14] DW_TAG_lexical_block DW_CHILDREN_yes + DW_AT_ranges DW_FORM_sec_offset + +[15] DW_TAG_GNU_call_site DW_CHILDREN_no + DW_AT_low_pc DW_FORM_addr + +[16] DW_TAG_GNU_call_site DW_CHILDREN_no + DW_AT_abstract_origin DW_FORM_ref4 + DW_AT_low_pc DW_FORM_addr + +[17] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_declaration DW_FORM_flag_present + DW_AT_external DW_FORM_flag_present + +[18] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_type DW_FORM_ref4 + +[19] DW_TAG_pointer_type DW_CHILDREN_no + +[20] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_linkage_name DW_FORM_strp + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_inline DW_FORM_data1 + +[21] DW_TAG_label DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + +[22] DW_TAG_lexical_block DW_CHILDREN_yes + +[23] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_GNU_all_call_sites DW_FORM_flag_present + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[24] DW_TAG_inlined_subroutine DW_CHILDREN_yes + DW_AT_abstract_origin DW_FORM_ref4 + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_call_file DW_FORM_data1 + DW_AT_call_line DW_FORM_data1 + DW_AT_call_column DW_FORM_data1 + +[25] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_abstract_origin DW_FORM_ref4 + +[26] DW_TAG_variable DW_CHILDREN_no + DW_AT_location DW_FORM_sec_offset + DW_AT_abstract_origin DW_FORM_ref4 + +[27] DW_TAG_variable DW_CHILDREN_no + DW_AT_abstract_origin DW_FORM_ref4 + +[28] DW_TAG_label DW_CHILDREN_no + DW_AT_abstract_origin DW_FORM_ref4 + DW_AT_low_pc DW_FORM_addr + + +.debug_info contents: +0x00000000: Compile Unit: length = 0x0000034f version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x00000353) + +0x0000000b: DW_TAG_compile_unit [1] * + DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)") + DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000069] = "/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) + DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x000000a9] = "/usr/local/google/home/azakai/Dev/2-binaryen") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) + DW_AT_ranges [DW_FORM_sec_offset] (0x00000040 + [0x00000006, 0x0000039d) + [0x0000039f, 0x000006e1)) + +0x00000026: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x002b => {0x0000002b} "worker_args") + +0x0000002b: DW_TAG_structure_type [3] * + DW_AT_calling_convention [DW_FORM_data1] (DW_CC_pass_by_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e3] = "worker_args") + DW_AT_byte_size [DW_FORM_data1] (0x0c) + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (20) + +0x00000034: DW_TAG_member [4] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (21) + DW_AT_data_member_location [DW_FORM_data1] (0x00) + +0x00000040: DW_TAG_member [4] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (21) + DW_AT_data_member_location [DW_FORM_data1] (0x04) + +0x0000004c: DW_TAG_member [4] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000de] = "next") + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (22) + DW_AT_data_member_location [DW_FORM_data1] (0x08) + +0x00000058: NULL + +0x00000059: DW_TAG_base_type [5] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d8] = "int") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) + DW_AT_byte_size [DW_FORM_data1] (0x04) + +0x00000060: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000065: DW_TAG_namespace [6] * + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ef] = "std") + +0x0000006a: DW_TAG_typedef [7] + DW_AT_type [DW_FORM_ref4] (cu + 0x0076 => {0x00000076} "decltype(nullptr)") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000105] = "nullptr_t") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libcxx/__nullptr") + DW_AT_decl_line [DW_FORM_data1] (57) + +0x00000075: NULL + +0x00000076: DW_TAG_unspecified_type [8] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000f3] = "decltype(nullptr)") + +0x0000007b: DW_TAG_imported_declaration [9] + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libcxx/stddef.h") + DW_AT_decl_line [DW_FORM_data1] (52) + DW_AT_import [DW_FORM_ref4] (cu + 0x006a => {0x0000006a}) + +0x00000082: DW_TAG_subprogram [10] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000006) + DW_AT_high_pc [DW_FORM_data4] (0x00000397) + DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x1 +0, DW_OP_stack_value) + DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) + DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x00000166] = "_Z15fannkuch_workerPv") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000017c] = "fannkuch_worker") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (26) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x0000009e: DW_TAG_formal_parameter [11] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000191] = "_arg") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (26) + DW_AT_type [DW_FORM_ref4] (cu + 0x01a7 => {0x000001a7} "*") + +0x000000a9: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000133] = "args") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (28) + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + +0x000000b4: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x00000000: + [0xffffffff, 0x00000006): + [0x00000000, 0x0000003c): DW_OP_consts +0, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014c] = "maxflips") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000000c3: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x0000001d: + [0xffffffff, 0x00000006): + [0x00000007, 0x0000003c): DW_OP_consts +0, DW_OP_stack_value + [0x00000052, 0x00000057): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x000000ec, 0x000000f5): DW_OP_consts +1, DW_OP_stack_value + [0x00000131, 0x0000013b): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000179, 0x00000186): DW_OP_consts +0, DW_OP_stack_value + [0x00000264, 0x0000026f): DW_OP_consts +0, DW_OP_stack_value + [0x00000275, 0x0000027e): DW_OP_consts +1, DW_OP_stack_value + [0x000002ba, 0x000002c4): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000302, 0x0000030f): DW_OP_consts +0, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000000d2: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000000a5: + [0xffffffff, 0x00000006): + [0x0000000e, 0x0000003c): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000000e1: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000000c3: + [0xffffffff, 0x00000006): + [0x0000001b, 0x0000003c): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000013e] = "perm1") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (29) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x000000f0: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000000e1: + [0xffffffff, 0x00000006): + [0x00000025, 0x0000003c): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000196] = "perm") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (29) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x000000ff: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000000ff: + [0xffffffff, 0x00000006): + [0x0000002f, 0x0000003c): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000144] = "count") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (29) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x0000010e: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x0000011d: + [0xffffffff, 0x00000006): + [0x000001e2, 0x000001e7): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value + [0x0000036b, 0x00000370): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014a] = "r") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000011d: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x00000149: + [0xffffffff, 0x00000006): + [0x000000cf, 0x000000e6): DW_OP_consts +0, DW_OP_stack_value + [0x000000ec, 0x000000f5): DW_OP_WASM_location 0x0 +13, DW_OP_stack_value + [0x0000015a, 0x00000162): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000264, 0x0000026f): DW_OP_consts +0, DW_OP_stack_value + [0x00000275, 0x0000027e): DW_OP_WASM_location 0x0 +10, DW_OP_stack_value + [0x000002e3, 0x000002eb): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000155] = "flips") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000012c: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000001ab: + [0xffffffff, 0x00000006): + [0x000000e2, 0x000000e6): DW_OP_WASM_location 0x0 +12, DW_OP_stack_value + [0x0000026b, 0x0000026f): DW_OP_WASM_location 0x0 +16, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019b] = "k") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000013b: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000001d7: + [0xffffffff, 0x00000006): + [0x000000fc, 0x00000100): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x00000138, 0x0000013b): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x00000285, 0x00000289): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x000002c1, 0x000002c4): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019d] = "j") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000014a: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x0000021f: + [0xffffffff, 0x00000006): + [0x00000111, 0x0000013b): DW_OP_WASM_location 0x0 +15, DW_OP_stack_value + [0x0000014c, 0x00000162): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x0000029a, 0x000002c4): DW_OP_WASM_location 0x0 +14, DW_OP_stack_value + [0x000002d5, 0x000002eb): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019f] = "tmp") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000159: DW_TAG_lexical_block [14] * + DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 + [0x00000185, 0x000001c3) + [0x000001ed, 0x000001f6) + [0x0000030e, 0x0000034c) + [0x00000376, 0x0000037f)) + +0x0000015e: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000163] = "p0") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (74) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000169: NULL + +0x0000016a: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x000000000000001f) + +0x0000016f: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000029) + +0x00000174: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000033) + +0x00000179: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x00000000000000e1) + +0x0000017e: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x000000000000038a) + +0x00000187: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000392) + +0x00000190: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x000000000000039a) + +0x00000199: NULL + +0x0000019a: DW_TAG_subprogram [17] * + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000010f] = "free") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libc/stdlib.h") + DW_AT_decl_line [DW_FORM_data1] (41) + DW_AT_declaration [DW_FORM_flag_present] (true) + DW_AT_external [DW_FORM_flag_present] (true) + +0x000001a1: DW_TAG_formal_parameter [18] + DW_AT_type [DW_FORM_ref4] (cu + 0x01a7 => {0x000001a7} "*") + +0x000001a6: NULL + +0x000001a7: DW_TAG_pointer_type [19] + +0x000001a8: DW_TAG_subprogram [20] * + DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x00000114] = "_ZL8fannkuchi") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000122] = "fannkuch") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (87) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_inline [DW_FORM_data1] (DW_INL_inlined) + +0x000001b8: DW_TAG_formal_parameter [11] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (87) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000001c3: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000012b] = "showmax") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (90) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000001ce: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000133] = "args") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (89) + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + +0x000001d9: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000001e4: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000138] = "targs") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (89) + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + +0x000001ef: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000013e] = "perm1") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x000001fa: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000144] = "count") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x00000205: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014a] = "r") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000210: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014c] = "maxflips") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000021b: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000155] = "flips") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000226: DW_TAG_label [21] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000015b] = "cleanup") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (137) + +0x0000022d: DW_TAG_lexical_block [22] * + +0x0000022e: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000163] = "p0") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (125) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000239: NULL + +0x0000023a: NULL + +0x0000023b: DW_TAG_subprogram [23] * + DW_AT_low_pc [DW_FORM_addr] (0x000000000000039f) + DW_AT_high_pc [DW_FORM_data4] (0x00000342) + DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) + DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000018c] = "main") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (152) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x00000253: DW_TAG_formal_parameter [11] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001a3] = "argc") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (152) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000025e: DW_TAG_formal_parameter [11] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001a8] = "argv") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (152) + DW_AT_type [DW_FORM_ref4] (cu + 0x0341 => {0x00000341} "char**") + +0x00000269: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x00000267: + [0xffffffff, 0x0000039f): + [0x00000032, 0x00000037): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (153) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000278: DW_TAG_inlined_subroutine [24] * + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01a8 => {0x000001a8} "_ZL8fannkuchi") + DW_AT_low_pc [DW_FORM_addr] (0x00000000000003ed) + DW_AT_high_pc [DW_FORM_data4] (0x000002c8) + DW_AT_call_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_call_line [DW_FORM_data1] (159) + DW_AT_call_column [DW_FORM_data1] (0x29) + +0x00000288: DW_TAG_formal_parameter [25] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01b8 => {0x000001b8} "n") + +0x0000028d: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x00000285: + [0xffffffff, 0x0000039f): + [0x0000004c, 0x00000055): DW_OP_consts +30, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01c3 => {0x000001c3} "showmax") + +0x00000296: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x000002a2: + [0xffffffff, 0x0000039f): + [0x0000004c, 0x00000055): DW_OP_lit0, DW_OP_stack_value + [0x000002f8, 0x00000314): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01ce => {0x000001ce} "args") + +0x0000029f: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x000002cc: + [0xffffffff, 0x0000039f): + [0x0000004c, 0x00000055): DW_OP_consts +0, DW_OP_stack_value + [0x0000008e, 0x00000093): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000099, 0x000000c1): DW_OP_consts +0, DW_OP_stack_value + [0x000000d7, 0x000000dc): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x000000f5, 0x000000f9): DW_OP_consts +0, DW_OP_stack_value + [0x00000127, 0x0000012c): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000178, 0x00000188): DW_OP_consts +0, DW_OP_stack_value + [0x000001fa, 0x0000020c): DW_OP_consts +0, DW_OP_stack_value + [0x00000241, 0x00000255): DW_OP_consts +0, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01d9 => {0x000001d9} "i") + +0x000002a8: DW_TAG_variable [27] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01e4 => {0x000001e4} "targs") + +0x000002ad: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x00000354: + [0xffffffff, 0x0000039f): + [0x000000a8, 0x000000c1): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01ef => {0x000001ef} "perm1") + +0x000002b6: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x00000372: + [0xffffffff, 0x0000039f): + [0x000000b2, 0x000000c1): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01fa => {0x000001fa} "count") + +0x000002bf: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x00000390: + [0xffffffff, 0x0000039f): + [0x000001e6, 0x000001ed): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value + [0x000002b3, 0x000002ba): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0205 => {0x00000205} "r") + +0x000002c8: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x000003e8: + [0xffffffff, 0x0000039f): + [0x000002d6, 0x000002e1): DW_OP_consts +0, DW_OP_stack_value + [0x0000030c, 0x00000314): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0210 => {0x00000210} "maxflips") + +0x000002d1: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x00000413: + [0xffffffff, 0x0000039f): + [0x000002f1, 0x00000314): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x021b => {0x0000021b} "flips") + +0x000002da: DW_TAG_label [28] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0226 => {0x00000226} "cleanup") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000661) + +0x000002e3: DW_TAG_lexical_block [14] * + DW_AT_ranges [DW_FORM_sec_offset] (0x00000028 + [0x00000517, 0x0000055e) + [0x000005de, 0x0000062b)) + +0x000002e8: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x000003bc: + [0xffffffff, 0x0000039f): + [0x0000017f, 0x00000188): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value + [0x00000248, 0x00000255): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x022e => {0x0000022e} "p0") + +0x000002f1: NULL + +0x000002f2: NULL + +0x000002f3: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x00000000000003cf) + +0x000002f8: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x00000000000003e3) + +0x000002fd: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x000000000000040d) + +0x00000302: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000445) + +0x00000307: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x000000000000044f) + +0x0000030c: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x00000000000004be) + +0x00000311: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x00000000000004d4) + +0x00000316: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x00000000000005a1) + +0x0000031b: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000669) + +0x00000324: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000671) + +0x0000032d: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x000000000000068e) + +0x00000332: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x000000000000069f) + +0x0000033b: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x00000000000006d1) + +0x00000340: NULL + +0x00000341: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x0346 => {0x00000346} "char*") + +0x00000346: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x034b => {0x0000034b} "char") + +0x0000034b: DW_TAG_base_type [5] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001ad] = "char") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char) + DW_AT_byte_size [DW_FORM_data1] (0x01) + +0x00000352: NULL + +.debug_loc contents: +0x00000000: + [0xffffffff, 0x00000006): + [0x00000000, 0x0000003c): DW_OP_consts +0, DW_OP_stack_value + +0x0000001d: + [0xffffffff, 0x00000006): + [0x00000007, 0x0000003c): DW_OP_consts +0, DW_OP_stack_value + [0x00000052, 0x00000057): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x000000ec, 0x000000f5): DW_OP_consts +1, DW_OP_stack_value + [0x00000131, 0x0000013b): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000179, 0x00000186): DW_OP_consts +0, DW_OP_stack_value + [0x00000264, 0x0000026f): DW_OP_consts +0, DW_OP_stack_value + [0x00000275, 0x0000027e): DW_OP_consts +1, DW_OP_stack_value + [0x000002ba, 0x000002c4): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000302, 0x0000030f): DW_OP_consts +0, DW_OP_stack_value + +0x000000a5: + [0xffffffff, 0x00000006): + [0x0000000e, 0x0000003c): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value + +0x000000c3: + [0xffffffff, 0x00000006): + [0x0000001b, 0x0000003c): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + +0x000000e1: + [0xffffffff, 0x00000006): + [0x00000025, 0x0000003c): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value + +0x000000ff: + [0xffffffff, 0x00000006): + [0x0000002f, 0x0000003c): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value + +0x0000011d: + [0xffffffff, 0x00000006): + [0x000001e2, 0x000001e7): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value + [0x0000036b, 0x00000370): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value + +0x00000149: + [0xffffffff, 0x00000006): + [0x000000cf, 0x000000e6): DW_OP_consts +0, DW_OP_stack_value + [0x000000ec, 0x000000f5): DW_OP_WASM_location 0x0 +13, DW_OP_stack_value + [0x0000015a, 0x00000162): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000264, 0x0000026f): DW_OP_consts +0, DW_OP_stack_value + [0x00000275, 0x0000027e): DW_OP_WASM_location 0x0 +10, DW_OP_stack_value + [0x000002e3, 0x000002eb): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + +0x000001ab: + [0xffffffff, 0x00000006): + [0x000000e2, 0x000000e6): DW_OP_WASM_location 0x0 +12, DW_OP_stack_value + [0x0000026b, 0x0000026f): DW_OP_WASM_location 0x0 +16, DW_OP_stack_value + +0x000001d7: + [0xffffffff, 0x00000006): + [0x000000fc, 0x00000100): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x00000138, 0x0000013b): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x00000285, 0x00000289): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x000002c1, 0x000002c4): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +0x0000021f: + [0xffffffff, 0x00000006): + [0x00000111, 0x0000013b): DW_OP_WASM_location 0x0 +15, DW_OP_stack_value + [0x0000014c, 0x00000162): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x0000029a, 0x000002c4): DW_OP_WASM_location 0x0 +14, DW_OP_stack_value + [0x000002d5, 0x000002eb): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +0x00000267: + [0xffffffff, 0x0000039f): + [0x00000032, 0x00000037): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + +0x00000285: + [0xffffffff, 0x0000039f): + [0x0000004c, 0x00000055): DW_OP_consts +30, DW_OP_stack_value + +0x000002a2: + [0xffffffff, 0x0000039f): + [0x0000004c, 0x00000055): DW_OP_lit0, DW_OP_stack_value + [0x000002f8, 0x00000314): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value + +0x000002cc: + [0xffffffff, 0x0000039f): + [0x0000004c, 0x00000055): DW_OP_consts +0, DW_OP_stack_value + [0x0000008e, 0x00000093): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000099, 0x000000c1): DW_OP_consts +0, DW_OP_stack_value + [0x000000d7, 0x000000dc): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x000000f5, 0x000000f9): DW_OP_consts +0, DW_OP_stack_value + [0x00000127, 0x0000012c): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000178, 0x00000188): DW_OP_consts +0, DW_OP_stack_value + [0x000001fa, 0x0000020c): DW_OP_consts +0, DW_OP_stack_value + [0x00000241, 0x00000255): DW_OP_consts +0, DW_OP_stack_value + +0x00000354: + [0xffffffff, 0x0000039f): + [0x000000a8, 0x000000c1): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +0x00000372: + [0xffffffff, 0x0000039f): + [0x000000b2, 0x000000c1): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value + +0x00000390: + [0xffffffff, 0x0000039f): + [0x000001e6, 0x000001ed): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value + [0x000002b3, 0x000002ba): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value + +0x000003bc: + [0xffffffff, 0x0000039f): + [0x0000017f, 0x00000188): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value + [0x00000248, 0x00000255): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value + +0x000003e8: + [0xffffffff, 0x0000039f): + [0x000002d6, 0x000002e1): DW_OP_consts +0, DW_OP_stack_value + [0x0000030c, 0x00000314): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + +0x00000413: + [0xffffffff, 0x0000039f): + [0x000002f1, 0x00000314): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +.debug_line contents: +debug_line[0x00000000] +Line table prologue: + total_length: 0x000005c1 + version: 4 + prologue_length: 0x000000dd + min_inst_length: 1 +max_ops_per_inst: 1 + default_is_stmt: 1 + line_base: -5 + line_range: 14 + opcode_base: 13 +standard_opcode_lengths[DW_LNS_copy] = 0 +standard_opcode_lengths[DW_LNS_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_advance_line] = 1 +standard_opcode_lengths[DW_LNS_set_file] = 1 +standard_opcode_lengths[DW_LNS_set_column] = 1 +standard_opcode_lengths[DW_LNS_negate_stmt] = 0 +standard_opcode_lengths[DW_LNS_set_basic_block] = 0 +standard_opcode_lengths[DW_LNS_const_add_pc] = 0 +standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 +standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 +standard_opcode_lengths[DW_LNS_set_isa] = 1 +include_directories[ 1] = "/usr/local/google/home/azakai/Dev" +file_names[ 1]: + name: "emscripten/tests/fannkuch.cpp" + dir_index: 1 + mod_time: 0x00000000 + length: 0x00000000 +file_names[ 2]: + name: "emscripten/system/include/libcxx/__nullptr" + dir_index: 1 + mod_time: 0x00000000 + length: 0x00000000 +file_names[ 3]: + name: "emscripten/system/include/libcxx/stddef.h" + dir_index: 1 + mod_time: 0x00000000 + length: 0x00000000 +file_names[ 4]: + name: "emscripten/system/include/libc/stdlib.h" + dir_index: 1 + mod_time: 0x00000000 + length: 0x00000000 +0x000000e7: 00 DW_LNE_set_address (0x0000000000000006) +0x000000ee: 03 DW_LNS_advance_line (27) +0x000000f0: 01 DW_LNS_copy + 0x0000000000000006 27 0 1 0 0 is_stmt + + +0x000000f1: 05 DW_LNS_set_column (14) +0x000000f3: 0a DW_LNS_set_prologue_end +0x000000f4: 7a address += 7, line += 6 + 0x000000000000000d 33 14 1 0 0 is_stmt prologue_end + +0x000000f5: 06 DW_LNS_negate_stmt +0x000000f6: 03 DW_LNS_advance_line (0) +0x000000f8: 58 address += 5, line += 0 + 0x0000000000000012 0 14 1 0 0 + +0x000000f9: 05 DW_LNS_set_column (27) +0x000000fb: 06 DW_LNS_negate_stmt +0x000000fc: 03 DW_LNS_advance_line (34) +0x000000fe: 4a address += 4, line += 0 + 0x0000000000000016 34 27 1 0 0 is_stmt + +0x000000ff: 05 DW_LNS_set_column (18) +0x00000101: 06 DW_LNS_negate_stmt +0x00000102: 20 address += 1, line += 0 + 0x0000000000000017 34 18 1 0 0 + +0x00000103: 05 DW_LNS_set_column (17) +0x00000105: 06 DW_LNS_negate_stmt +0x00000106: 9f address += 10, line += 1 + 0x0000000000000021 35 17 1 0 0 is_stmt + +0x00000107: 05 DW_LNS_set_column (18) +0x00000109: 9f address += 10, line += 1 + 0x000000000000002b 36 18 1 0 0 is_stmt + +0x0000010a: 06 DW_LNS_negate_stmt +0x0000010b: 03 DW_LNS_advance_line (0) +0x0000010d: 9e address += 10, line += 0 + 0x0000000000000035 0 18 1 0 0 + +0x0000010e: 06 DW_LNS_negate_stmt +0x0000010f: 03 DW_LNS_advance_line (37) +0x00000111: 66 address += 6, line += 0 + 0x000000000000003b 37 18 1 0 0 is_stmt + +0x00000112: 05 DW_LNS_set_column (4) +0x00000114: 06 DW_LNS_negate_stmt +0x00000115: 58 address += 5, line += 0 + 0x0000000000000040 37 4 1 0 0 + +0x00000116: 03 DW_LNS_advance_line (0) +0x00000118: 2e address += 2, line += 0 + 0x0000000000000042 0 4 1 0 0 + +0x00000119: 05 DW_LNS_set_column (7) +0x0000011b: 06 DW_LNS_negate_stmt +0x0000011c: 03 DW_LNS_advance_line (38) +0x0000011e: 2e address += 2, line += 0 + 0x0000000000000044 38 7 1 0 0 is_stmt + +0x0000011f: 05 DW_LNS_set_column (16) +0x00000121: 06 DW_LNS_negate_stmt +0x00000122: 82 address += 8, line += 0 + 0x000000000000004c 38 16 1 0 0 + +0x00000123: 05 DW_LNS_set_column (24) +0x00000125: 06 DW_LNS_negate_stmt +0x00000126: 57 address += 5, line += -1 + 0x0000000000000051 37 24 1 0 0 is_stmt + +0x00000127: 05 DW_LNS_set_column (18) +0x00000129: 06 DW_LNS_negate_stmt +0x0000012a: 58 address += 5, line += 0 + 0x0000000000000056 37 18 1 0 0 + +0x0000012b: 05 DW_LNS_set_column (4) +0x0000012d: 58 address += 5, line += 0 + 0x000000000000005b 37 4 1 0 0 + +0x0000012e: 06 DW_LNS_negate_stmt +0x0000012f: 3e address += 3, line += 2 + 0x000000000000005e 39 4 1 0 0 is_stmt + +0x00000130: 05 DW_LNS_set_column (16) +0x00000132: 06 DW_LNS_negate_stmt +0x00000133: 2e address += 2, line += 0 + 0x0000000000000060 39 16 1 0 0 + +0x00000134: 05 DW_LNS_set_column (4) +0x00000136: 90 address += 9, line += 0 + 0x0000000000000069 39 4 1 0 0 + +0x00000137: 05 DW_LNS_set_column (23) +0x00000139: 2e address += 2, line += 0 + 0x000000000000006b 39 23 1 0 0 + +0x0000013a: 05 DW_LNS_set_column (19) +0x0000013c: 58 address += 5, line += 0 + 0x0000000000000070 39 19 1 0 0 + +0x0000013d: 05 DW_LNS_set_column (4) +0x0000013f: 06 DW_LNS_negate_stmt +0x00000140: 59 address += 5, line += 1 + 0x0000000000000075 40 4 1 0 0 is_stmt + +0x00000141: 05 DW_LNS_set_column (17) +0x00000143: 06 DW_LNS_negate_stmt +0x00000144: 82 address += 8, line += 0 + 0x000000000000007d 40 17 1 0 0 + +0x00000145: 05 DW_LNS_set_column (18) +0x00000147: 06 DW_LNS_negate_stmt +0x00000148: a9 address += 11, line += -3 + 0x0000000000000088 37 18 1 0 0 is_stmt + +0x00000149: 05 DW_LNS_set_column (4) +0x0000014b: 5e address += 5, line += 6 + 0x000000000000008d 43 4 1 0 0 is_stmt + +0x0000014c: 06 DW_LNS_negate_stmt +0x0000014d: 03 DW_LNS_advance_line (0) +0x0000014f: 2e address += 2, line += 0 + 0x000000000000008f 0 4 1 0 0 + +0x00000150: 05 DW_LNS_set_column (16) +0x00000152: 06 DW_LNS_negate_stmt +0x00000153: 03 DW_LNS_advance_line (44) +0x00000155: 4a address += 4, line += 0 + 0x0000000000000093 44 16 1 0 0 is_stmt + +0x00000156: 06 DW_LNS_negate_stmt +0x00000157: 03 DW_LNS_advance_line (0) +0x00000159: 74 address += 7, line += 0 + 0x000000000000009a 0 16 1 0 0 + +0x0000015a: 05 DW_LNS_set_column (10) +0x0000015c: 06 DW_LNS_negate_stmt +0x0000015d: 03 DW_LNS_advance_line (45) +0x0000015f: 2e address += 2, line += 0 + 0x000000000000009c 45 10 1 0 0 is_stmt + +0x00000160: 05 DW_LNS_set_column (18) +0x00000162: 06 DW_LNS_negate_stmt +0x00000163: 2e address += 2, line += 0 + 0x000000000000009e 45 18 1 0 0 + +0x00000164: 05 DW_LNS_set_column (10) +0x00000166: 90 address += 9, line += 0 + 0x00000000000000a7 45 10 1 0 0 + +0x00000167: 05 DW_LNS_set_column (23) +0x00000169: 2e address += 2, line += 0 + 0x00000000000000a9 45 23 1 0 0 + +0x0000016a: 05 DW_LNS_set_column (16) +0x0000016c: 06 DW_LNS_negate_stmt +0x0000016d: 57 address += 5, line += -1 + 0x00000000000000ae 44 16 1 0 0 is_stmt + +0x0000016e: 05 DW_LNS_set_column (0) +0x00000170: 06 DW_LNS_negate_stmt +0x00000171: 03 DW_LNS_advance_line (0) +0x00000173: 74 address += 7, line += 0 + 0x00000000000000b5 0 0 1 0 0 + +0x00000174: 05 DW_LNS_set_column (7) +0x00000176: 03 DW_LNS_advance_line (44) +0x00000178: 4a address += 4, line += 0 + 0x00000000000000b9 44 7 1 0 0 + +0x00000179: 05 DW_LNS_set_column (11) +0x0000017b: 06 DW_LNS_negate_stmt +0x0000017c: 68 address += 6, line += 2 + 0x00000000000000bf 46 11 1 0 0 is_stmt + +0x0000017d: 05 DW_LNS_set_column (28) +0x0000017f: 06 DW_LNS_negate_stmt +0x00000180: ba address += 12, line += 0 + 0x00000000000000cb 46 28 1 0 0 + +0x00000181: 05 DW_LNS_set_column (41) +0x00000183: 58 address += 5, line += 0 + 0x00000000000000d0 46 41 1 0 0 + +0x00000184: 05 DW_LNS_set_column (21) +0x00000186: 06 DW_LNS_negate_stmt +0x00000187: 5a address += 5, line += 2 + 0x00000000000000d5 48 21 1 0 0 is_stmt + +0x00000188: 05 DW_LNS_set_column (14) +0x0000018a: bc address += 12, line += 2 + 0x00000000000000e1 50 14 1 0 0 is_stmt + +0x0000018b: 06 DW_LNS_negate_stmt +0x0000018c: 03 DW_LNS_advance_line (0) +0x0000018e: 74 address += 7, line += 0 + 0x00000000000000e8 0 14 1 0 0 + +0x0000018f: 05 DW_LNS_set_column (38) +0x00000191: 06 DW_LNS_negate_stmt +0x00000192: 03 DW_LNS_advance_line (52) +0x00000194: ba address += 12, line += 0 + 0x00000000000000f4 52 38 1 0 0 is_stmt + +0x00000195: 05 DW_LNS_set_column (0) +0x00000197: 06 DW_LNS_negate_stmt +0x00000198: 03 DW_LNS_advance_line (0) +0x0000019a: 74 address += 7, line += 0 + 0x00000000000000fb 0 0 1 0 0 + +0x0000019b: 05 DW_LNS_set_column (22) +0x0000019d: 06 DW_LNS_negate_stmt +0x0000019e: 03 DW_LNS_advance_line (53) +0x000001a0: c8 address += 13, line += 0 + 0x0000000000000108 53 22 1 0 0 is_stmt + +0x000001a1: 05 DW_LNS_set_column (24) +0x000001a3: e5 address += 15, line += 1 + 0x0000000000000117 54 24 1 0 0 is_stmt + +0x000001a4: 05 DW_LNS_set_column (26) +0x000001a6: 06 DW_LNS_negate_stmt +0x000001a7: 2e address += 2, line += 0 + 0x0000000000000119 54 26 1 0 0 + +0x000001a8: 05 DW_LNS_set_column (24) +0x000001aa: c8 address += 13, line += 0 + 0x0000000000000126 54 24 1 0 0 + +0x000001ab: 06 DW_LNS_negate_stmt +0x000001ac: 3d address += 3, line += 1 + 0x0000000000000129 55 24 1 0 0 is_stmt + +0x000001ad: 05 DW_LNS_set_column (44) +0x000001af: 71 address += 7, line += -3 + 0x0000000000000130 52 44 1 0 0 is_stmt + +0x000001b0: 06 DW_LNS_negate_stmt +0x000001b1: 03 DW_LNS_advance_line (0) +0x000001b3: 58 address += 5, line += 0 + 0x0000000000000135 0 44 1 0 0 + +0x000001b4: 05 DW_LNS_set_column (38) +0x000001b6: 03 DW_LNS_advance_line (52) +0x000001b8: 74 address += 7, line += 0 + 0x000000000000013c 52 38 1 0 0 + +0x000001b9: 05 DW_LNS_set_column (13) +0x000001bb: 3c address += 3, line += 0 + 0x000000000000013f 52 13 1 0 0 + +0x000001bc: 05 DW_LNS_set_column (19) +0x000001be: 06 DW_LNS_negate_stmt +0x000001bf: 50 address += 4, line += 6 + 0x0000000000000143 58 19 1 0 0 is_stmt + +0x000001c0: 05 DW_LNS_set_column (21) +0x000001c2: e5 address += 15, line += 1 + 0x0000000000000152 59 21 1 0 0 is_stmt + +0x000001c3: 05 DW_LNS_set_column (18) +0x000001c5: 72 address += 7, line += -2 + 0x0000000000000159 57 18 1 0 0 is_stmt + +0x000001c6: 05 DW_LNS_set_column (0) +0x000001c8: 06 DW_LNS_negate_stmt +0x000001c9: 03 DW_LNS_advance_line (0) +0x000001cb: 74 address += 7, line += 0 + 0x0000000000000160 0 0 1 0 0 + +0x000001cc: 05 DW_LNS_set_column (14) +0x000001ce: 06 DW_LNS_negate_stmt +0x000001cf: 03 DW_LNS_advance_line (62) +0x000001d1: 90 address += 9, line += 0 + 0x0000000000000169 62 14 1 0 0 is_stmt + +0x000001d2: 05 DW_LNS_set_column (23) +0x000001d4: 06 DW_LNS_negate_stmt +0x000001d5: 4a address += 4, line += 0 + 0x000000000000016d 62 23 1 0 0 + +0x000001d6: 05 DW_LNS_set_column (14) +0x000001d8: 58 address += 5, line += 0 + 0x0000000000000172 62 14 1 0 0 + +0x000001d9: 03 DW_LNS_advance_line (0) +0x000001db: 3c address += 3, line += 0 + 0x0000000000000175 0 14 1 0 0 + +0x000001dc: 05 DW_LNS_set_column (16) +0x000001de: 06 DW_LNS_negate_stmt +0x000001df: 03 DW_LNS_advance_line (66) +0x000001e2: 20 address += 1, line += 0 + 0x0000000000000176 66 16 1 0 0 is_stmt + +0x000001e3: 06 DW_LNS_negate_stmt +0x000001e4: 03 DW_LNS_advance_line (0) +0x000001e7: 74 address += 7, line += 0 + 0x000000000000017d 0 16 1 0 0 + +0x000001e8: 05 DW_LNS_set_column (27) +0x000001ea: 06 DW_LNS_negate_stmt +0x000001eb: 03 DW_LNS_advance_line (75) +0x000001ee: 82 address += 8, line += 0 + 0x0000000000000185 75 27 1 0 0 is_stmt + +0x000001ef: 06 DW_LNS_negate_stmt +0x000001f0: 03 DW_LNS_advance_line (0) +0x000001f3: 74 address += 7, line += 0 + 0x000000000000018c 0 27 1 0 0 + +0x000001f4: 05 DW_LNS_set_column (16) +0x000001f6: 06 DW_LNS_negate_stmt +0x000001f7: 03 DW_LNS_advance_line (76) +0x000001fa: 2e address += 2, line += 0 + 0x000000000000018e 76 16 1 0 0 is_stmt + +0x000001fb: 05 DW_LNS_set_column (27) +0x000001fd: 06 DW_LNS_negate_stmt +0x000001fe: 82 address += 8, line += 0 + 0x0000000000000196 76 27 1 0 0 + +0x000001ff: 05 DW_LNS_set_column (35) +0x00000201: 2e address += 2, line += 0 + 0x0000000000000198 76 35 1 0 0 + +0x00000202: 05 DW_LNS_set_column (27) +0x00000204: 90 address += 9, line += 0 + 0x00000000000001a1 76 27 1 0 0 + +0x00000205: 05 DW_LNS_set_column (25) +0x00000207: 58 address += 5, line += 0 + 0x00000000000001a6 76 25 1 0 0 + +0x00000208: 05 DW_LNS_set_column (27) +0x0000020a: 06 DW_LNS_negate_stmt +0x0000020b: 3b address += 3, line += -1 + 0x00000000000001a9 75 27 1 0 0 is_stmt + +0x0000020c: 05 DW_LNS_set_column (13) +0x0000020e: 06 DW_LNS_negate_stmt +0x0000020f: 58 address += 5, line += 0 + 0x00000000000001ae 75 13 1 0 0 + +0x00000210: 05 DW_LNS_set_column (0) +0x00000212: 03 DW_LNS_advance_line (0) +0x00000215: 3c address += 3, line += 0 + 0x00000000000001b1 0 0 1 0 0 + +0x00000216: 05 DW_LNS_set_column (13) +0x00000218: 06 DW_LNS_negate_stmt +0x00000219: 03 DW_LNS_advance_line (77) +0x0000021c: 58 address += 5, line += 0 + 0x00000000000001b6 77 13 1 0 0 is_stmt + +0x0000021d: 05 DW_LNS_set_column (22) +0x0000021f: 06 DW_LNS_negate_stmt +0x00000220: 82 address += 8, line += 0 + 0x00000000000001be 77 22 1 0 0 + +0x00000221: 05 DW_LNS_set_column (16) +0x00000223: 06 DW_LNS_negate_stmt +0x00000224: 5a address += 5, line += 2 + 0x00000000000001c3 79 16 1 0 0 is_stmt + +0x00000225: 05 DW_LNS_set_column (14) +0x00000227: 06 DW_LNS_negate_stmt +0x00000228: 82 address += 8, line += 0 + 0x00000000000001cb 79 14 1 0 0 + +0x00000229: 05 DW_LNS_set_column (25) +0x0000022b: e4 address += 15, line += 0 + 0x00000000000001da 79 25 1 0 0 + +0x0000022c: 05 DW_LNS_set_column (11) +0x0000022e: 06 DW_LNS_negate_stmt +0x0000022f: 76 address += 7, line += 2 + 0x00000000000001e1 81 11 1 0 0 is_stmt + +0x00000230: 05 DW_LNS_set_column (16) +0x00000232: 03 DW_LNS_advance_line (66) +0x00000234: 58 address += 5, line += 0 + 0x00000000000001e6 66 16 1 0 0 is_stmt + +0x00000235: 05 DW_LNS_set_column (22) +0x00000237: 7c address += 7, line += 8 + 0x00000000000001ed 74 22 1 0 0 is_stmt + +0x00000238: 05 DW_LNS_set_column (4) +0x0000023a: 03 DW_LNS_advance_line (37) +0x0000023c: 90 address += 9, line += 0 + 0x00000000000001f6 37 4 1 0 0 is_stmt + +0x0000023d: 3e address += 3, line += 2 + 0x00000000000001f9 39 4 1 0 0 is_stmt + +0x0000023e: 05 DW_LNS_set_column (16) +0x00000240: 06 DW_LNS_negate_stmt +0x00000241: 2e address += 2, line += 0 + 0x00000000000001fb 39 16 1 0 0 + +0x00000242: 05 DW_LNS_set_column (4) +0x00000244: 90 address += 9, line += 0 + 0x0000000000000204 39 4 1 0 0 + +0x00000245: 05 DW_LNS_set_column (23) +0x00000247: 2e address += 2, line += 0 + 0x0000000000000206 39 23 1 0 0 + +0x00000248: 05 DW_LNS_set_column (19) +0x0000024a: 58 address += 5, line += 0 + 0x000000000000020b 39 19 1 0 0 + +0x0000024b: 05 DW_LNS_set_column (4) +0x0000024d: 06 DW_LNS_negate_stmt +0x0000024e: 59 address += 5, line += 1 + 0x0000000000000210 40 4 1 0 0 is_stmt + +0x0000024f: 05 DW_LNS_set_column (17) +0x00000251: 06 DW_LNS_negate_stmt +0x00000252: 82 address += 8, line += 0 + 0x0000000000000218 40 17 1 0 0 + +0x00000253: 03 DW_LNS_advance_line (0) +0x00000255: 74 address += 7, line += 0 + 0x000000000000021f 0 17 1 0 0 + +0x00000256: 05 DW_LNS_set_column (16) +0x00000258: 06 DW_LNS_negate_stmt +0x00000259: 03 DW_LNS_advance_line (44) +0x0000025b: 90 address += 9, line += 0 + 0x0000000000000228 44 16 1 0 0 is_stmt + +0x0000025c: 06 DW_LNS_negate_stmt +0x0000025d: 03 DW_LNS_advance_line (0) +0x0000025f: 74 address += 7, line += 0 + 0x000000000000022f 0 16 1 0 0 + +0x00000260: 05 DW_LNS_set_column (10) +0x00000262: 06 DW_LNS_negate_stmt +0x00000263: 03 DW_LNS_advance_line (45) +0x00000265: 2e address += 2, line += 0 + 0x0000000000000231 45 10 1 0 0 is_stmt + +0x00000266: 05 DW_LNS_set_column (18) +0x00000268: 06 DW_LNS_negate_stmt +0x00000269: 2e address += 2, line += 0 + 0x0000000000000233 45 18 1 0 0 + +0x0000026a: 05 DW_LNS_set_column (10) +0x0000026c: 90 address += 9, line += 0 + 0x000000000000023c 45 10 1 0 0 + +0x0000026d: 05 DW_LNS_set_column (23) +0x0000026f: 2e address += 2, line += 0 + 0x000000000000023e 45 23 1 0 0 + +0x00000270: 05 DW_LNS_set_column (16) +0x00000272: 06 DW_LNS_negate_stmt +0x00000273: 57 address += 5, line += -1 + 0x0000000000000243 44 16 1 0 0 is_stmt + +0x00000274: 06 DW_LNS_negate_stmt +0x00000275: 03 DW_LNS_advance_line (0) +0x00000277: e4 address += 15, line += 0 + 0x0000000000000252 0 16 1 0 0 + +0x00000278: 05 DW_LNS_set_column (11) +0x0000027a: 06 DW_LNS_negate_stmt +0x0000027b: 03 DW_LNS_advance_line (46) +0x0000027d: 2e address += 2, line += 0 + 0x0000000000000254 46 11 1 0 0 is_stmt + +0x0000027e: 05 DW_LNS_set_column (28) +0x00000280: 06 DW_LNS_negate_stmt +0x00000281: ba address += 12, line += 0 + 0x0000000000000260 46 28 1 0 0 + +0x00000282: 05 DW_LNS_set_column (41) +0x00000284: 58 address += 5, line += 0 + 0x0000000000000265 46 41 1 0 0 + +0x00000285: 05 DW_LNS_set_column (14) +0x00000287: 06 DW_LNS_negate_stmt +0x00000288: 5c address += 5, line += 4 + 0x000000000000026a 50 14 1 0 0 is_stmt + +0x00000289: 06 DW_LNS_negate_stmt +0x0000028a: 03 DW_LNS_advance_line (0) +0x0000028c: 74 address += 7, line += 0 + 0x0000000000000271 0 14 1 0 0 + +0x0000028d: 05 DW_LNS_set_column (38) +0x0000028f: 06 DW_LNS_negate_stmt +0x00000290: 03 DW_LNS_advance_line (52) +0x00000292: ba address += 12, line += 0 + 0x000000000000027d 52 38 1 0 0 is_stmt + +0x00000293: 05 DW_LNS_set_column (0) +0x00000295: 06 DW_LNS_negate_stmt +0x00000296: 03 DW_LNS_advance_line (0) +0x00000298: 74 address += 7, line += 0 + 0x0000000000000284 0 0 1 0 0 + +0x00000299: 05 DW_LNS_set_column (22) +0x0000029b: 06 DW_LNS_negate_stmt +0x0000029c: 03 DW_LNS_advance_line (53) +0x0000029e: c8 address += 13, line += 0 + 0x0000000000000291 53 22 1 0 0 is_stmt + +0x0000029f: 05 DW_LNS_set_column (24) +0x000002a1: e5 address += 15, line += 1 + 0x00000000000002a0 54 24 1 0 0 is_stmt + +0x000002a2: 05 DW_LNS_set_column (26) +0x000002a4: 06 DW_LNS_negate_stmt +0x000002a5: 2e address += 2, line += 0 + 0x00000000000002a2 54 26 1 0 0 + +0x000002a6: 05 DW_LNS_set_column (24) +0x000002a8: c8 address += 13, line += 0 + 0x00000000000002af 54 24 1 0 0 + +0x000002a9: 06 DW_LNS_negate_stmt +0x000002aa: 3d address += 3, line += 1 + 0x00000000000002b2 55 24 1 0 0 is_stmt + +0x000002ab: 05 DW_LNS_set_column (44) +0x000002ad: 71 address += 7, line += -3 + 0x00000000000002b9 52 44 1 0 0 is_stmt + +0x000002ae: 06 DW_LNS_negate_stmt +0x000002af: 03 DW_LNS_advance_line (0) +0x000002b1: 58 address += 5, line += 0 + 0x00000000000002be 0 44 1 0 0 + +0x000002b2: 05 DW_LNS_set_column (38) +0x000002b4: 03 DW_LNS_advance_line (52) +0x000002b6: 74 address += 7, line += 0 + 0x00000000000002c5 52 38 1 0 0 + +0x000002b7: 03 DW_LNS_advance_line (0) +0x000002b9: 58 address += 5, line += 0 + 0x00000000000002ca 0 38 1 0 0 + +0x000002ba: 05 DW_LNS_set_column (19) +0x000002bc: 06 DW_LNS_negate_stmt +0x000002bd: 03 DW_LNS_advance_line (58) +0x000002bf: 2e address += 2, line += 0 + 0x00000000000002cc 58 19 1 0 0 is_stmt + +0x000002c0: 05 DW_LNS_set_column (21) +0x000002c2: e5 address += 15, line += 1 + 0x00000000000002db 59 21 1 0 0 is_stmt + +0x000002c3: 05 DW_LNS_set_column (18) +0x000002c5: 72 address += 7, line += -2 + 0x00000000000002e2 57 18 1 0 0 is_stmt + +0x000002c6: 05 DW_LNS_set_column (0) +0x000002c8: 06 DW_LNS_negate_stmt +0x000002c9: 03 DW_LNS_advance_line (0) +0x000002cb: 74 address += 7, line += 0 + 0x00000000000002e9 0 0 1 0 0 + +0x000002cc: 05 DW_LNS_set_column (14) +0x000002ce: 06 DW_LNS_negate_stmt +0x000002cf: 03 DW_LNS_advance_line (62) +0x000002d1: 90 address += 9, line += 0 + 0x00000000000002f2 62 14 1 0 0 is_stmt + +0x000002d2: 05 DW_LNS_set_column (23) +0x000002d4: 06 DW_LNS_negate_stmt +0x000002d5: 4a address += 4, line += 0 + 0x00000000000002f6 62 23 1 0 0 + +0x000002d6: 05 DW_LNS_set_column (14) +0x000002d8: 58 address += 5, line += 0 + 0x00000000000002fb 62 14 1 0 0 + +0x000002d9: 03 DW_LNS_advance_line (0) +0x000002db: 3c address += 3, line += 0 + 0x00000000000002fe 0 14 1 0 0 + +0x000002dc: 05 DW_LNS_set_column (16) +0x000002de: 06 DW_LNS_negate_stmt +0x000002df: 03 DW_LNS_advance_line (66) +0x000002e2: 20 address += 1, line += 0 + 0x00000000000002ff 66 16 1 0 0 is_stmt + +0x000002e3: 06 DW_LNS_negate_stmt +0x000002e4: 03 DW_LNS_advance_line (0) +0x000002e7: 74 address += 7, line += 0 + 0x0000000000000306 0 16 1 0 0 + +0x000002e8: 05 DW_LNS_set_column (27) +0x000002ea: 06 DW_LNS_negate_stmt +0x000002eb: 03 DW_LNS_advance_line (75) +0x000002ee: 82 address += 8, line += 0 + 0x000000000000030e 75 27 1 0 0 is_stmt + +0x000002ef: 06 DW_LNS_negate_stmt +0x000002f0: 03 DW_LNS_advance_line (0) +0x000002f3: 74 address += 7, line += 0 + 0x0000000000000315 0 27 1 0 0 + +0x000002f4: 05 DW_LNS_set_column (16) +0x000002f6: 06 DW_LNS_negate_stmt +0x000002f7: 03 DW_LNS_advance_line (76) +0x000002fa: 2e address += 2, line += 0 + 0x0000000000000317 76 16 1 0 0 is_stmt + +0x000002fb: 05 DW_LNS_set_column (27) +0x000002fd: 06 DW_LNS_negate_stmt +0x000002fe: 82 address += 8, line += 0 + 0x000000000000031f 76 27 1 0 0 + +0x000002ff: 05 DW_LNS_set_column (35) +0x00000301: 2e address += 2, line += 0 + 0x0000000000000321 76 35 1 0 0 + +0x00000302: 05 DW_LNS_set_column (27) +0x00000304: 90 address += 9, line += 0 + 0x000000000000032a 76 27 1 0 0 + +0x00000305: 05 DW_LNS_set_column (25) +0x00000307: 58 address += 5, line += 0 + 0x000000000000032f 76 25 1 0 0 + +0x00000308: 05 DW_LNS_set_column (27) +0x0000030a: 06 DW_LNS_negate_stmt +0x0000030b: 3b address += 3, line += -1 + 0x0000000000000332 75 27 1 0 0 is_stmt + +0x0000030c: 06 DW_LNS_negate_stmt +0x0000030d: 03 DW_LNS_advance_line (0) +0x00000310: 74 address += 7, line += 0 + 0x0000000000000339 0 27 1 0 0 + +0x00000311: 05 DW_LNS_set_column (13) +0x00000313: 06 DW_LNS_negate_stmt +0x00000314: 03 DW_LNS_advance_line (77) +0x00000317: 66 address += 6, line += 0 + 0x000000000000033f 77 13 1 0 0 is_stmt + +0x00000318: 05 DW_LNS_set_column (22) +0x0000031a: 06 DW_LNS_negate_stmt +0x0000031b: 82 address += 8, line += 0 + 0x0000000000000347 77 22 1 0 0 + +0x0000031c: 05 DW_LNS_set_column (16) +0x0000031e: 06 DW_LNS_negate_stmt +0x0000031f: 5a address += 5, line += 2 + 0x000000000000034c 79 16 1 0 0 is_stmt + +0x00000320: 05 DW_LNS_set_column (14) +0x00000322: 06 DW_LNS_negate_stmt +0x00000323: 82 address += 8, line += 0 + 0x0000000000000354 79 14 1 0 0 + +0x00000324: 05 DW_LNS_set_column (25) +0x00000326: e4 address += 15, line += 0 + 0x0000000000000363 79 25 1 0 0 + +0x00000327: 05 DW_LNS_set_column (11) +0x00000329: 06 DW_LNS_negate_stmt +0x0000032a: 76 address += 7, line += 2 + 0x000000000000036a 81 11 1 0 0 is_stmt + +0x0000032b: 05 DW_LNS_set_column (16) +0x0000032d: 03 DW_LNS_advance_line (66) +0x0000032f: 58 address += 5, line += 0 + 0x000000000000036f 66 16 1 0 0 is_stmt + +0x00000330: 05 DW_LNS_set_column (22) +0x00000332: 7c address += 7, line += 8 + 0x0000000000000376 74 22 1 0 0 is_stmt + +0x00000333: 06 DW_LNS_negate_stmt +0x00000334: 03 DW_LNS_advance_line (0) +0x00000337: 90 address += 9, line += 0 + 0x000000000000037f 0 22 1 0 0 + +0x00000338: 05 DW_LNS_set_column (13) +0x0000033a: 06 DW_LNS_negate_stmt +0x0000033b: 03 DW_LNS_advance_line (67) +0x0000033e: 3c address += 3, line += 0 + 0x0000000000000382 67 13 1 0 0 is_stmt + +0x0000033f: 83 address += 8, line += 1 + 0x000000000000038a 68 13 1 0 0 is_stmt + +0x00000340: 83 address += 8, line += 1 + 0x0000000000000392 69 13 1 0 0 is_stmt + +0x00000341: 83 address += 8, line += 1 + 0x000000000000039a 70 13 1 0 0 is_stmt + +0x00000342: 02 DW_LNS_advance_pc (3) +0x00000344: 00 DW_LNE_end_sequence + 0x000000000000039d 70 13 1 0 0 is_stmt end_sequence + +0x00000347: 00 DW_LNE_set_address (0x000000000000039f) +0x0000034e: 03 DW_LNS_advance_line (152) +0x00000351: 01 DW_LNS_copy + 0x000000000000039f 152 0 1 0 0 is_stmt + + +0x00000352: 05 DW_LNS_set_column (17) +0x00000354: 0a DW_LNS_set_prologue_end +0x00000355: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000356: 91 address += 9, line += 1 + 0x00000000000003b9 153 17 1 0 0 is_stmt prologue_end + +0x00000357: 05 DW_LNS_set_column (12) +0x00000359: 06 DW_LNS_negate_stmt +0x0000035a: 58 address += 5, line += 0 + 0x00000000000003be 153 12 1 0 0 + +0x0000035b: 03 DW_LNS_advance_line (0) +0x0000035e: 2e address += 2, line += 0 + 0x00000000000003c0 0 12 1 0 0 + +0x0000035f: 05 DW_LNS_set_column (28) +0x00000361: 03 DW_LNS_advance_line (153) +0x00000364: 4a address += 4, line += 0 + 0x00000000000003c4 153 28 1 0 0 + +0x00000365: 05 DW_LNS_set_column (23) +0x00000367: 58 address += 5, line += 0 + 0x00000000000003c9 153 23 1 0 0 + +0x00000368: 03 DW_LNS_advance_line (0) +0x0000036b: 66 address += 6, line += 0 + 0x00000000000003cf 0 23 1 0 0 + +0x0000036c: 05 DW_LNS_set_column (10) +0x0000036e: 06 DW_LNS_negate_stmt +0x0000036f: 03 DW_LNS_advance_line (155) +0x00000372: 4a address += 4, line += 0 + 0x00000000000003d3 155 10 1 0 0 is_stmt + +0x00000373: 05 DW_LNS_set_column (8) +0x00000375: 06 DW_LNS_negate_stmt +0x00000376: 20 address += 1, line += 0 + 0x00000000000003d4 155 8 1 0 0 + +0x00000377: 03 DW_LNS_advance_line (0) +0x0000037a: 2e address += 2, line += 0 + 0x00000000000003d6 0 8 1 0 0 + +0x0000037b: 05 DW_LNS_set_column (7) +0x0000037d: 06 DW_LNS_negate_stmt +0x0000037e: 03 DW_LNS_advance_line (156) +0x00000381: 20 address += 1, line += 0 + 0x00000000000003d7 156 7 1 0 0 is_stmt + +0x00000382: 06 DW_LNS_negate_stmt +0x00000383: 03 DW_LNS_advance_line (0) +0x00000386: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000387: 2e address += 2, line += 0 + 0x00000000000003ea 0 7 1 0 0 + +0x00000388: 05 DW_LNS_set_column (18) +0x0000038a: 06 DW_LNS_negate_stmt +0x0000038b: 03 DW_LNS_advance_line (94) +0x0000038e: 3c address += 3, line += 0 + 0x00000000000003ed 94 18 1 0 0 is_stmt + +0x0000038f: 05 DW_LNS_set_column (4) +0x00000391: 06 DW_LNS_negate_stmt +0x00000392: 58 address += 5, line += 0 + 0x00000000000003f2 94 4 1 0 0 + +0x00000393: 03 DW_LNS_advance_line (0) +0x00000396: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000397: 12 address += 0, line += 0 + 0x0000000000000403 0 4 1 0 0 + +0x00000398: 05 DW_LNS_set_column (29) +0x0000039a: 06 DW_LNS_negate_stmt +0x0000039b: 03 DW_LNS_advance_line (95) +0x0000039e: 4a address += 4, line += 0 + 0x0000000000000407 95 29 1 0 0 is_stmt + +0x0000039f: 05 DW_LNS_set_column (19) +0x000003a1: 69 address += 6, line += 3 + 0x000000000000040d 98 19 1 0 0 is_stmt + +0x000003a2: 05 DW_LNS_set_column (16) +0x000003a4: 73 address += 7, line += -1 + 0x0000000000000414 97 16 1 0 0 is_stmt + +0x000003a5: 73 address += 7, line += -1 + 0x000000000000041b 96 16 1 0 0 is_stmt + +0x000003a6: 06 DW_LNS_negate_stmt +0x000003a7: 03 DW_LNS_advance_line (0) +0x000003aa: 74 address += 7, line += 0 + 0x0000000000000422 0 16 1 0 0 + +0x000003ab: 05 DW_LNS_set_column (28) +0x000003ad: 06 DW_LNS_negate_stmt +0x000003ae: 03 DW_LNS_advance_line (94) +0x000003b1: 4a address += 4, line += 0 + 0x0000000000000426 94 28 1 0 0 is_stmt + +0x000003b2: 05 DW_LNS_set_column (18) +0x000003b4: 06 DW_LNS_negate_stmt +0x000003b5: 58 address += 5, line += 0 + 0x000000000000042b 94 18 1 0 0 + +0x000003b6: 05 DW_LNS_set_column (4) +0x000003b8: 58 address += 5, line += 0 + 0x0000000000000430 94 4 1 0 0 + +0x000003b9: 03 DW_LNS_advance_line (0) +0x000003bc: 4a address += 4, line += 0 + 0x0000000000000434 0 4 1 0 0 + +0x000003bd: 05 DW_LNS_set_column (27) +0x000003bf: 06 DW_LNS_negate_stmt +0x000003c0: 03 DW_LNS_advance_line (102) +0x000003c3: 4a address += 4, line += 0 + 0x0000000000000438 102 27 1 0 0 is_stmt + +0x000003c4: 05 DW_LNS_set_column (18) +0x000003c6: 06 DW_LNS_negate_stmt +0x000003c7: 58 address += 5, line += 0 + 0x000000000000043d 102 18 1 0 0 + +0x000003c8: 06 DW_LNS_negate_stmt +0x000003c9: 9f address += 10, line += 1 + 0x0000000000000447 103 18 1 0 0 is_stmt + +0x000003ca: 06 DW_LNS_negate_stmt +0x000003cb: 03 DW_LNS_advance_line (0) +0x000003ce: 9e address += 10, line += 0 + 0x0000000000000451 0 18 1 0 0 + +0x000003cf: 06 DW_LNS_negate_stmt +0x000003d0: 03 DW_LNS_advance_line (105) +0x000003d3: 82 address += 8, line += 0 + 0x0000000000000459 105 18 1 0 0 is_stmt + +0x000003d4: 05 DW_LNS_set_column (4) +0x000003d6: 06 DW_LNS_negate_stmt +0x000003d7: 58 address += 5, line += 0 + 0x000000000000045e 105 4 1 0 0 + +0x000003d8: 03 DW_LNS_advance_line (0) +0x000003db: 2e address += 2, line += 0 + 0x0000000000000460 0 4 1 0 0 + +0x000003dc: 05 DW_LNS_set_column (7) +0x000003de: 06 DW_LNS_negate_stmt +0x000003df: 03 DW_LNS_advance_line (106) +0x000003e2: 2e address += 2, line += 0 + 0x0000000000000462 106 7 1 0 0 is_stmt + +0x000003e3: 05 DW_LNS_set_column (16) +0x000003e5: 06 DW_LNS_negate_stmt +0x000003e6: 82 address += 8, line += 0 + 0x000000000000046a 106 16 1 0 0 + +0x000003e7: 05 DW_LNS_set_column (24) +0x000003e9: 06 DW_LNS_negate_stmt +0x000003ea: 57 address += 5, line += -1 + 0x000000000000046f 105 24 1 0 0 is_stmt + +0x000003eb: 05 DW_LNS_set_column (18) +0x000003ed: 06 DW_LNS_negate_stmt +0x000003ee: 58 address += 5, line += 0 + 0x0000000000000474 105 18 1 0 0 + +0x000003ef: 03 DW_LNS_advance_line (0) +0x000003f2: 74 address += 7, line += 0 + 0x000000000000047b 0 18 1 0 0 + +0x000003f3: 05 DW_LNS_set_column (13) +0x000003f5: 06 DW_LNS_negate_stmt +0x000003f6: 03 DW_LNS_advance_line (112) +0x000003f9: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000003fa: d6 address += 14, line += 0 + 0x000000000000049a 112 13 1 0 0 is_stmt + +0x000003fb: 05 DW_LNS_set_column (26) +0x000003fd: 06 DW_LNS_negate_stmt +0x000003fe: 2e address += 2, line += 0 + 0x000000000000049c 112 26 1 0 0 + +0x000003ff: 05 DW_LNS_set_column (35) +0x00000401: c8 address += 13, line += 0 + 0x00000000000004a9 112 35 1 0 0 + +0x00000402: 05 DW_LNS_set_column (13) +0x00000404: 20 address += 1, line += 0 + 0x00000000000004aa 112 13 1 0 0 + +0x00000405: 05 DW_LNS_set_column (30) +0x00000407: 06 DW_LNS_negate_stmt +0x00000408: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000409: 49 address += 4, line += -1 + 0x00000000000004bf 111 30 1 0 0 is_stmt + +0x0000040a: 05 DW_LNS_set_column (24) +0x0000040c: 06 DW_LNS_negate_stmt +0x0000040d: 58 address += 5, line += 0 + 0x00000000000004c4 111 24 1 0 0 + +0x0000040e: 05 DW_LNS_set_column (10) +0x00000410: 58 address += 5, line += 0 + 0x00000000000004c9 111 10 1 0 0 + +0x00000411: 06 DW_LNS_negate_stmt +0x00000412: 5a address += 5, line += 2 + 0x00000000000004ce 113 10 1 0 0 is_stmt + +0x00000413: 06 DW_LNS_negate_stmt +0x00000414: 03 DW_LNS_advance_line (0) +0x00000417: 74 address += 7, line += 0 + 0x00000000000004d5 0 10 1 0 0 + +0x00000418: 05 DW_LNS_set_column (16) +0x0000041a: 06 DW_LNS_negate_stmt +0x0000041b: 03 DW_LNS_advance_line (118) +0x0000041e: 2e address += 2, line += 0 + 0x00000000000004d7 118 16 1 0 0 is_stmt + +0x0000041f: 05 DW_LNS_set_column (7) +0x00000421: 06 DW_LNS_negate_stmt +0x00000422: 58 address += 5, line += 0 + 0x00000000000004dc 118 7 1 0 0 + +0x00000423: 03 DW_LNS_advance_line (0) +0x00000426: 2e address += 2, line += 0 + 0x00000000000004de 0 7 1 0 0 + +0x00000427: 05 DW_LNS_set_column (10) +0x00000429: 06 DW_LNS_negate_stmt +0x0000042a: 03 DW_LNS_advance_line (119) +0x0000042d: 2e address += 2, line += 0 + 0x00000000000004e0 119 10 1 0 0 is_stmt + +0x0000042e: 05 DW_LNS_set_column (18) +0x00000430: 06 DW_LNS_negate_stmt +0x00000431: 2e address += 2, line += 0 + 0x00000000000004e2 119 18 1 0 0 + +0x00000432: 05 DW_LNS_set_column (10) +0x00000434: 90 address += 9, line += 0 + 0x00000000000004eb 119 10 1 0 0 + +0x00000435: 05 DW_LNS_set_column (23) +0x00000437: 2e address += 2, line += 0 + 0x00000000000004ed 119 23 1 0 0 + +0x00000438: 05 DW_LNS_set_column (16) +0x0000043a: 06 DW_LNS_negate_stmt +0x0000043b: 57 address += 5, line += -1 + 0x00000000000004f2 118 16 1 0 0 is_stmt + +0x0000043c: 05 DW_LNS_set_column (7) +0x0000043e: 06 DW_LNS_negate_stmt +0x0000043f: ac address += 11, line += 0 + 0x00000000000004fd 118 7 1 0 0 + +0x00000440: 05 DW_LNS_set_column (16) +0x00000442: 06 DW_LNS_negate_stmt +0x00000443: 6a address += 6, line += 4 + 0x0000000000000503 122 16 1 0 0 is_stmt + +0x00000444: 06 DW_LNS_negate_stmt +0x00000445: 03 DW_LNS_advance_line (0) +0x00000448: 74 address += 7, line += 0 + 0x000000000000050a 0 16 1 0 0 + +0x00000449: 05 DW_LNS_set_column (22) +0x0000044b: 06 DW_LNS_negate_stmt +0x0000044c: 03 DW_LNS_advance_line (125) +0x0000044f: c8 address += 13, line += 0 + 0x0000000000000517 125 22 1 0 0 is_stmt + +0x00000450: 06 DW_LNS_negate_stmt +0x00000451: 03 DW_LNS_advance_line (0) +0x00000454: 74 address += 7, line += 0 + 0x000000000000051e 0 22 1 0 0 + +0x00000455: 05 DW_LNS_set_column (27) +0x00000457: 06 DW_LNS_negate_stmt +0x00000458: 03 DW_LNS_advance_line (126) +0x0000045b: 2e address += 2, line += 0 + 0x0000000000000520 126 27 1 0 0 is_stmt + +0x0000045c: 05 DW_LNS_set_column (13) +0x0000045e: 06 DW_LNS_negate_stmt +0x0000045f: 58 address += 5, line += 0 + 0x0000000000000525 126 13 1 0 0 + +0x00000460: 03 DW_LNS_advance_line (0) +0x00000463: 2e address += 2, line += 0 + 0x0000000000000527 0 13 1 0 0 + +0x00000464: 05 DW_LNS_set_column (16) +0x00000466: 06 DW_LNS_negate_stmt +0x00000467: 03 DW_LNS_advance_line (127) +0x0000046a: 2e address += 2, line += 0 + 0x0000000000000529 127 16 1 0 0 is_stmt + +0x0000046b: 05 DW_LNS_set_column (27) +0x0000046d: 06 DW_LNS_negate_stmt +0x0000046e: 82 address += 8, line += 0 + 0x0000000000000531 127 27 1 0 0 + +0x0000046f: 05 DW_LNS_set_column (35) +0x00000471: 2e address += 2, line += 0 + 0x0000000000000533 127 35 1 0 0 + +0x00000472: 05 DW_LNS_set_column (27) +0x00000474: 90 address += 9, line += 0 + 0x000000000000053c 127 27 1 0 0 + +0x00000475: 05 DW_LNS_set_column (25) +0x00000477: 58 address += 5, line += 0 + 0x0000000000000541 127 25 1 0 0 + +0x00000478: 05 DW_LNS_set_column (27) +0x0000047a: 06 DW_LNS_negate_stmt +0x0000047b: 3b address += 3, line += -1 + 0x0000000000000544 126 27 1 0 0 is_stmt + +0x0000047c: 05 DW_LNS_set_column (13) +0x0000047e: 06 DW_LNS_negate_stmt +0x0000047f: 58 address += 5, line += 0 + 0x0000000000000549 126 13 1 0 0 + +0x00000480: 05 DW_LNS_set_column (0) +0x00000482: 03 DW_LNS_advance_line (0) +0x00000485: 3c address += 3, line += 0 + 0x000000000000054c 0 0 1 0 0 + +0x00000486: 05 DW_LNS_set_column (13) +0x00000488: 06 DW_LNS_negate_stmt +0x00000489: 03 DW_LNS_advance_line (128) +0x0000048c: 58 address += 5, line += 0 + 0x0000000000000551 128 13 1 0 0 is_stmt + +0x0000048d: 05 DW_LNS_set_column (22) +0x0000048f: 06 DW_LNS_negate_stmt +0x00000490: 82 address += 8, line += 0 + 0x0000000000000559 128 22 1 0 0 + +0x00000491: 05 DW_LNS_set_column (16) +0x00000493: 06 DW_LNS_negate_stmt +0x00000494: 5a address += 5, line += 2 + 0x000000000000055e 130 16 1 0 0 is_stmt + +0x00000495: 05 DW_LNS_set_column (14) +0x00000497: 06 DW_LNS_negate_stmt +0x00000498: 82 address += 8, line += 0 + 0x0000000000000566 130 14 1 0 0 + +0x00000499: 05 DW_LNS_set_column (25) +0x0000049b: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x0000049c: 12 address += 0, line += 0 + 0x0000000000000577 130 25 1 0 0 + +0x0000049d: 05 DW_LNS_set_column (14) +0x0000049f: 58 address += 5, line += 0 + 0x000000000000057c 130 14 1 0 0 + +0x000004a0: 05 DW_LNS_set_column (11) +0x000004a2: 06 DW_LNS_negate_stmt +0x000004a3: 31 address += 2, line += 3 + 0x000000000000057e 133 11 1 0 0 is_stmt + +0x000004a4: 05 DW_LNS_set_column (16) +0x000004a6: 03 DW_LNS_advance_line (122) +0x000004a8: 58 address += 5, line += 0 + 0x0000000000000583 122 16 1 0 0 is_stmt + +0x000004a9: 05 DW_LNS_set_column (14) +0x000004ab: 06 DW_LNS_negate_stmt +0x000004ac: 58 address += 5, line += 0 + 0x0000000000000588 122 14 1 0 0 + +0x000004ad: 03 DW_LNS_advance_line (0) +0x000004b0: 4a address += 4, line += 0 + 0x000000000000058c 0 14 1 0 0 + +0x000004b1: 06 DW_LNS_negate_stmt +0x000004b2: 03 DW_LNS_advance_line (130) +0x000004b5: 20 address += 1, line += 0 + 0x000000000000058d 130 14 1 0 0 is_stmt + +0x000004b6: 05 DW_LNS_set_column (11) +0x000004b8: 03 DW_LNS_advance_line (110) +0x000004ba: 20 address += 1, line += 0 + 0x000000000000058e 110 11 1 0 0 is_stmt + +0x000004bb: 06 DW_LNS_negate_stmt +0x000004bc: 03 DW_LNS_advance_line (0) +0x000004bf: 74 address += 7, line += 0 + 0x0000000000000595 0 11 1 0 0 + +0x000004c0: 05 DW_LNS_set_column (10) +0x000004c2: 06 DW_LNS_negate_stmt +0x000004c3: 03 DW_LNS_advance_line (113) +0x000004c6: 66 address += 6, line += 0 + 0x000000000000059b 113 10 1 0 0 is_stmt + +0x000004c7: 06 DW_LNS_negate_stmt +0x000004c8: 03 DW_LNS_advance_line (0) +0x000004cb: 74 address += 7, line += 0 + 0x00000000000005a2 0 10 1 0 0 + +0x000004cc: 05 DW_LNS_set_column (16) +0x000004ce: 06 DW_LNS_negate_stmt +0x000004cf: 03 DW_LNS_advance_line (118) +0x000004d2: 2e address += 2, line += 0 + 0x00000000000005a4 118 16 1 0 0 is_stmt + +0x000004d3: 05 DW_LNS_set_column (7) +0x000004d5: 06 DW_LNS_negate_stmt +0x000004d6: 58 address += 5, line += 0 + 0x00000000000005a9 118 7 1 0 0 + +0x000004d7: 03 DW_LNS_advance_line (0) +0x000004da: 2e address += 2, line += 0 + 0x00000000000005ab 0 7 1 0 0 + +0x000004db: 05 DW_LNS_set_column (10) +0x000004dd: 06 DW_LNS_negate_stmt +0x000004de: 03 DW_LNS_advance_line (119) +0x000004e1: 2e address += 2, line += 0 + 0x00000000000005ad 119 10 1 0 0 is_stmt + +0x000004e2: 05 DW_LNS_set_column (18) +0x000004e4: 06 DW_LNS_negate_stmt +0x000004e5: 2e address += 2, line += 0 + 0x00000000000005af 119 18 1 0 0 + +0x000004e6: 05 DW_LNS_set_column (10) +0x000004e8: 90 address += 9, line += 0 + 0x00000000000005b8 119 10 1 0 0 + +0x000004e9: 05 DW_LNS_set_column (23) +0x000004eb: 2e address += 2, line += 0 + 0x00000000000005ba 119 23 1 0 0 + +0x000004ec: 05 DW_LNS_set_column (16) +0x000004ee: 06 DW_LNS_negate_stmt +0x000004ef: 57 address += 5, line += -1 + 0x00000000000005bf 118 16 1 0 0 is_stmt + +0x000004f0: 05 DW_LNS_set_column (0) +0x000004f2: 06 DW_LNS_negate_stmt +0x000004f3: 03 DW_LNS_advance_line (0) +0x000004f6: 74 address += 7, line += 0 + 0x00000000000005c6 0 0 1 0 0 + +0x000004f7: 05 DW_LNS_set_column (7) +0x000004f9: 03 DW_LNS_advance_line (118) +0x000004fc: 4a address += 4, line += 0 + 0x00000000000005ca 118 7 1 0 0 + +0x000004fd: 05 DW_LNS_set_column (16) +0x000004ff: 06 DW_LNS_negate_stmt +0x00000500: 6a address += 6, line += 4 + 0x00000000000005d0 122 16 1 0 0 is_stmt + +0x00000501: 05 DW_LNS_set_column (14) +0x00000503: 06 DW_LNS_negate_stmt +0x00000504: 58 address += 5, line += 0 + 0x00000000000005d5 122 14 1 0 0 + +0x00000505: 03 DW_LNS_advance_line (0) +0x00000508: 2e address += 2, line += 0 + 0x00000000000005d7 0 14 1 0 0 + +0x00000509: 05 DW_LNS_set_column (22) +0x0000050b: 06 DW_LNS_negate_stmt +0x0000050c: 03 DW_LNS_advance_line (125) +0x0000050f: 74 address += 7, line += 0 + 0x00000000000005de 125 22 1 0 0 is_stmt + +0x00000510: 06 DW_LNS_negate_stmt +0x00000511: 03 DW_LNS_advance_line (0) +0x00000514: 90 address += 9, line += 0 + 0x00000000000005e7 0 22 1 0 0 + +0x00000515: 05 DW_LNS_set_column (27) +0x00000517: 06 DW_LNS_negate_stmt +0x00000518: 03 DW_LNS_advance_line (126) +0x0000051b: 66 address += 6, line += 0 + 0x00000000000005ed 126 27 1 0 0 is_stmt + +0x0000051c: 05 DW_LNS_set_column (13) +0x0000051e: 06 DW_LNS_negate_stmt +0x0000051f: 58 address += 5, line += 0 + 0x00000000000005f2 126 13 1 0 0 + +0x00000520: 03 DW_LNS_advance_line (0) +0x00000523: 2e address += 2, line += 0 + 0x00000000000005f4 0 13 1 0 0 + +0x00000524: 05 DW_LNS_set_column (16) +0x00000526: 06 DW_LNS_negate_stmt +0x00000527: 03 DW_LNS_advance_line (127) +0x0000052a: 2e address += 2, line += 0 + 0x00000000000005f6 127 16 1 0 0 is_stmt + +0x0000052b: 05 DW_LNS_set_column (27) +0x0000052d: 06 DW_LNS_negate_stmt +0x0000052e: 82 address += 8, line += 0 + 0x00000000000005fe 127 27 1 0 0 + +0x0000052f: 05 DW_LNS_set_column (35) +0x00000531: 2e address += 2, line += 0 + 0x0000000000000600 127 35 1 0 0 + +0x00000532: 05 DW_LNS_set_column (27) +0x00000534: 90 address += 9, line += 0 + 0x0000000000000609 127 27 1 0 0 + +0x00000535: 05 DW_LNS_set_column (25) +0x00000537: 58 address += 5, line += 0 + 0x000000000000060e 127 25 1 0 0 + +0x00000538: 05 DW_LNS_set_column (27) +0x0000053a: 06 DW_LNS_negate_stmt +0x0000053b: 3b address += 3, line += -1 + 0x0000000000000611 126 27 1 0 0 is_stmt + +0x0000053c: 05 DW_LNS_set_column (13) +0x0000053e: 06 DW_LNS_negate_stmt +0x0000053f: 58 address += 5, line += 0 + 0x0000000000000616 126 13 1 0 0 + +0x00000540: 05 DW_LNS_set_column (0) +0x00000542: 03 DW_LNS_advance_line (0) +0x00000545: 3c address += 3, line += 0 + 0x0000000000000619 0 0 1 0 0 + +0x00000546: 05 DW_LNS_set_column (13) +0x00000548: 06 DW_LNS_negate_stmt +0x00000549: 03 DW_LNS_advance_line (128) +0x0000054c: 58 address += 5, line += 0 + 0x000000000000061e 128 13 1 0 0 is_stmt + +0x0000054d: 05 DW_LNS_set_column (22) +0x0000054f: 06 DW_LNS_negate_stmt +0x00000550: 82 address += 8, line += 0 + 0x0000000000000626 128 22 1 0 0 + +0x00000551: 05 DW_LNS_set_column (16) +0x00000553: 06 DW_LNS_negate_stmt +0x00000554: 5a address += 5, line += 2 + 0x000000000000062b 130 16 1 0 0 is_stmt + +0x00000555: 05 DW_LNS_set_column (14) +0x00000557: 06 DW_LNS_negate_stmt +0x00000558: 82 address += 8, line += 0 + 0x0000000000000633 130 14 1 0 0 + +0x00000559: 05 DW_LNS_set_column (25) +0x0000055b: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x0000055c: 12 address += 0, line += 0 + 0x0000000000000644 130 25 1 0 0 + +0x0000055d: 05 DW_LNS_set_column (14) +0x0000055f: 58 address += 5, line += 0 + 0x0000000000000649 130 14 1 0 0 + +0x00000560: 05 DW_LNS_set_column (11) +0x00000562: 06 DW_LNS_negate_stmt +0x00000563: 31 address += 2, line += 3 + 0x000000000000064b 133 11 1 0 0 is_stmt + +0x00000564: 05 DW_LNS_set_column (16) +0x00000566: 03 DW_LNS_advance_line (122) +0x00000568: 58 address += 5, line += 0 + 0x0000000000000650 122 16 1 0 0 is_stmt + +0x00000569: 05 DW_LNS_set_column (14) +0x0000056b: 06 DW_LNS_negate_stmt +0x0000056c: 58 address += 5, line += 0 + 0x0000000000000655 122 14 1 0 0 + +0x0000056d: 03 DW_LNS_advance_line (0) +0x00000570: 4a address += 4, line += 0 + 0x0000000000000659 0 14 1 0 0 + +0x00000571: 06 DW_LNS_negate_stmt +0x00000572: 03 DW_LNS_advance_line (130) +0x00000575: 20 address += 1, line += 0 + 0x000000000000065a 130 14 1 0 0 is_stmt + +0x00000576: 05 DW_LNS_set_column (11) +0x00000578: 03 DW_LNS_advance_line (110) +0x0000057a: 20 address += 1, line += 0 + 0x000000000000065b 110 11 1 0 0 is_stmt + +0x0000057b: 05 DW_LNS_set_column (4) +0x0000057d: 03 DW_LNS_advance_line (138) +0x0000057f: 66 address += 6, line += 0 + 0x0000000000000661 138 4 1 0 0 is_stmt + +0x00000580: 83 address += 8, line += 1 + 0x0000000000000669 139 4 1 0 0 is_stmt + +0x00000581: 06 DW_LNS_negate_stmt +0x00000582: 03 DW_LNS_advance_line (0) +0x00000585: 82 address += 8, line += 0 + 0x0000000000000671 0 4 1 0 0 + +0x00000586: 06 DW_LNS_negate_stmt +0x00000587: 03 DW_LNS_advance_line (141) +0x0000058a: 82 address += 8, line += 0 + 0x0000000000000679 141 4 1 0 0 is_stmt + +0x0000058b: 06 DW_LNS_negate_stmt +0x0000058c: 03 DW_LNS_advance_line (0) +0x0000058f: 74 address += 7, line += 0 + 0x0000000000000680 0 4 1 0 0 + +0x00000590: 05 DW_LNS_set_column (20) +0x00000592: 06 DW_LNS_negate_stmt +0x00000593: 03 DW_LNS_advance_line (142) +0x00000596: 4a address += 4, line += 0 + 0x0000000000000684 142 20 1 0 0 is_stmt + +0x00000597: be address += 12, line += 4 + 0x0000000000000690 146 20 1 0 0 is_stmt + +0x00000598: 05 DW_LNS_set_column (7) +0x0000059a: 75 address += 7, line += 1 + 0x0000000000000697 147 7 1 0 0 is_stmt + +0x0000059b: 05 DW_LNS_set_column (11) +0x0000059d: 7e address += 8, line += -4 + 0x000000000000069f 143 11 1 0 0 is_stmt + +0x0000059e: 05 DW_LNS_set_column (20) +0x000005a0: 06 DW_LNS_negate_stmt +0x000005a1: 4a address += 4, line += 0 + 0x00000000000006a3 143 20 1 0 0 + +0x000005a2: 05 DW_LNS_set_column (11) +0x000005a4: 58 address += 5, line += 0 + 0x00000000000006a8 143 11 1 0 0 + +0x000005a5: 03 DW_LNS_advance_line (0) +0x000005a8: 3c address += 3, line += 0 + 0x00000000000006ab 0 11 1 0 0 + +0x000005a9: 05 DW_LNS_set_column (4) +0x000005ab: 06 DW_LNS_negate_stmt +0x000005ac: 03 DW_LNS_advance_line (141) +0x000005af: 4a address += 4, line += 0 + 0x00000000000006af 141 4 1 0 0 is_stmt + +0x000005b0: 03 DW_LNS_advance_line (159) +0x000005b2: 66 address += 6, line += 0 + 0x00000000000006b5 159 4 1 0 0 is_stmt + +0x000005b3: 06 DW_LNS_negate_stmt +0x000005b4: 03 DW_LNS_advance_line (0) +0x000005b7: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x000005b8: ba address += 12, line += 0 + 0x00000000000006d2 0 4 1 0 0 + +0x000005b9: 05 DW_LNS_set_column (1) +0x000005bb: 06 DW_LNS_negate_stmt +0x000005bc: 03 DW_LNS_advance_line (161) +0x000005bf: 20 address += 1, line += 0 + 0x00000000000006d3 161 1 1 0 0 is_stmt + +0x000005c0: 02 DW_LNS_advance_pc (14) +0x000005c2: 00 DW_LNE_end_sequence + 0x00000000000006e1 161 1 1 0 0 is_stmt end_sequence + + +.debug_str contents: +0x00000000: "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)" +0x00000069: "/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp" +0x000000a9: "/usr/local/google/home/azakai/Dev/2-binaryen" +0x000000d6: "i" +0x000000d8: "int" +0x000000dc: "n" +0x000000de: "next" +0x000000e3: "worker_args" +0x000000ef: "std" +0x000000f3: "decltype(nullptr)" +0x00000105: "nullptr_t" +0x0000010f: "free" +0x00000114: "_ZL8fannkuchi" +0x00000122: "fannkuch" +0x0000012b: "showmax" +0x00000133: "args" +0x00000138: "targs" +0x0000013e: "perm1" +0x00000144: "count" +0x0000014a: "r" +0x0000014c: "maxflips" +0x00000155: "flips" +0x0000015b: "cleanup" +0x00000163: "p0" +0x00000166: "_Z15fannkuch_workerPv" +0x0000017c: "fannkuch_worker" +0x0000018c: "main" +0x00000191: "_arg" +0x00000196: "perm" +0x0000019b: "k" +0x0000019d: "j" +0x0000019f: "tmp" +0x000001a3: "argc" +0x000001a8: "argv" +0x000001ad: "char" + +.debug_ranges contents: +00000000 00000185 000001c3 +00000000 000001ed 000001f6 +00000000 0000030e 0000034c +00000000 00000376 0000037f +00000000 +00000028 00000517 0000055e +00000028 000005de 0000062b +00000028 +00000040 00000006 0000039d +00000040 0000039f 000006e1 +00000040 +DWARF debug info +================ + +Contains section .debug_info (851 bytes) +Contains section .debug_loc (1073 bytes) +Contains section .debug_ranges (88 bytes) +Contains section .debug_abbrev (333 bytes) +Contains section .debug_line (2682 bytes) +Contains section .debug_str (434 bytes) + +.debug_abbrev contents: +Abbrev table for offset: 0x00000000 +[1] DW_TAG_compile_unit DW_CHILDREN_yes + DW_AT_producer DW_FORM_strp + DW_AT_language DW_FORM_data2 + DW_AT_name DW_FORM_strp + DW_AT_stmt_list DW_FORM_sec_offset + DW_AT_comp_dir DW_FORM_strp + DW_AT_low_pc DW_FORM_addr + DW_AT_ranges DW_FORM_sec_offset + +[2] DW_TAG_pointer_type DW_CHILDREN_no + DW_AT_type DW_FORM_ref4 + +[3] DW_TAG_structure_type DW_CHILDREN_yes + DW_AT_calling_convention DW_FORM_data1 + DW_AT_name DW_FORM_strp + DW_AT_byte_size DW_FORM_data1 + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + +[4] DW_TAG_member DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_type DW_FORM_ref4 + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_data_member_location DW_FORM_data1 + +[5] DW_TAG_base_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_encoding DW_FORM_data1 + DW_AT_byte_size DW_FORM_data1 + +[6] DW_TAG_namespace DW_CHILDREN_yes + DW_AT_name DW_FORM_strp + +[7] DW_TAG_typedef DW_CHILDREN_no + DW_AT_type DW_FORM_ref4 + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + +[8] DW_TAG_unspecified_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + +[9] DW_TAG_imported_declaration DW_CHILDREN_no + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_import DW_FORM_ref4 + +[10] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_GNU_all_call_sites DW_FORM_flag_present + DW_AT_linkage_name DW_FORM_strp + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[11] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[12] DW_TAG_variable DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[13] DW_TAG_variable DW_CHILDREN_no + DW_AT_location DW_FORM_sec_offset + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[14] DW_TAG_lexical_block DW_CHILDREN_yes + DW_AT_ranges DW_FORM_sec_offset + +[15] DW_TAG_GNU_call_site DW_CHILDREN_no + DW_AT_low_pc DW_FORM_addr + +[16] DW_TAG_GNU_call_site DW_CHILDREN_no + DW_AT_abstract_origin DW_FORM_ref4 + DW_AT_low_pc DW_FORM_addr + +[17] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_declaration DW_FORM_flag_present + DW_AT_external DW_FORM_flag_present + +[18] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_type DW_FORM_ref4 + +[19] DW_TAG_pointer_type DW_CHILDREN_no + +[20] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_linkage_name DW_FORM_strp + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_inline DW_FORM_data1 + +[21] DW_TAG_label DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + +[22] DW_TAG_lexical_block DW_CHILDREN_yes + +[23] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_GNU_all_call_sites DW_FORM_flag_present + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[24] DW_TAG_inlined_subroutine DW_CHILDREN_yes + DW_AT_abstract_origin DW_FORM_ref4 + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_call_file DW_FORM_data1 + DW_AT_call_line DW_FORM_data1 + DW_AT_call_column DW_FORM_data1 + +[25] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_abstract_origin DW_FORM_ref4 + +[26] DW_TAG_variable DW_CHILDREN_no + DW_AT_location DW_FORM_sec_offset + DW_AT_abstract_origin DW_FORM_ref4 + +[27] DW_TAG_variable DW_CHILDREN_no + DW_AT_abstract_origin DW_FORM_ref4 + +[28] DW_TAG_label DW_CHILDREN_no + DW_AT_abstract_origin DW_FORM_ref4 + DW_AT_low_pc DW_FORM_addr + + +.debug_info contents: +0x00000000: Compile Unit: length = 0x0000034f version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x00000353) + +0x0000000b: DW_TAG_compile_unit [1] * + DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)") + DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000069] = "/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) + DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x000000a9] = "/usr/local/google/home/azakai/Dev/2-binaryen") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) + DW_AT_ranges [DW_FORM_sec_offset] (0x00000040 + [0x00000007, 0x0000038a) + [0x0000038c, 0x00000673)) + +0x00000026: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x002b => {0x0000002b} "worker_args") + +0x0000002b: DW_TAG_structure_type [3] * + DW_AT_calling_convention [DW_FORM_data1] (DW_CC_pass_by_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e3] = "worker_args") + DW_AT_byte_size [DW_FORM_data1] (0x0c) + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (20) + +0x00000034: DW_TAG_member [4] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (21) + DW_AT_data_member_location [DW_FORM_data1] (0x00) + +0x00000040: DW_TAG_member [4] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (21) + DW_AT_data_member_location [DW_FORM_data1] (0x04) + +0x0000004c: DW_TAG_member [4] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000de] = "next") + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (22) + DW_AT_data_member_location [DW_FORM_data1] (0x08) + +0x00000058: NULL + +0x00000059: DW_TAG_base_type [5] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d8] = "int") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) + DW_AT_byte_size [DW_FORM_data1] (0x04) + +0x00000060: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000065: DW_TAG_namespace [6] * + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ef] = "std") + +0x0000006a: DW_TAG_typedef [7] + DW_AT_type [DW_FORM_ref4] (cu + 0x0076 => {0x00000076} "decltype(nullptr)") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000105] = "nullptr_t") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libcxx/__nullptr") + DW_AT_decl_line [DW_FORM_data1] (57) + +0x00000075: NULL + +0x00000076: DW_TAG_unspecified_type [8] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000f3] = "decltype(nullptr)") + +0x0000007b: DW_TAG_imported_declaration [9] + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libcxx/stddef.h") + DW_AT_decl_line [DW_FORM_data1] (52) + DW_AT_import [DW_FORM_ref4] (cu + 0x006a => {0x0000006a}) + +0x00000082: DW_TAG_subprogram [10] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000007) + DW_AT_high_pc [DW_FORM_data4] (0x00000383) + DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x1 +0, DW_OP_stack_value) + DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) + DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x00000166] = "_Z15fannkuch_workerPv") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000017c] = "fannkuch_worker") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (26) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x0000009e: DW_TAG_formal_parameter [11] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000191] = "_arg") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (26) + DW_AT_type [DW_FORM_ref4] (cu + 0x01a7 => {0x000001a7} "*") + +0x000000a9: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000133] = "args") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (28) + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + +0x000000b4: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x00000000: + [0xffffffff, 0x00000007): + [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014c] = "maxflips") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000000c3: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x0000001d: + [0xffffffff, 0x00000028): + [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value + [0x0000003d, 0x00000042): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_consts +1, DW_OP_stack_value + [0x00000110, 0x0000011a): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value + [0x0000023d, 0x00000248): DW_OP_consts +0, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_consts +1, DW_OP_stack_value + [0x00000291, 0x0000029b): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000000d2: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000000a5: + [0xffffffff, 0x0000002f): + [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000000e1: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000000c3: + [0xffffffff, 0x00000038): + [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000013e] = "perm1") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (29) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x000000f0: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000000e1: + [0xffffffff, 0x0000003e): + [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000196] = "perm") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (29) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x000000ff: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000000ff: + [0xffffffff, 0x00000044): + [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000144] = "count") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (29) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x0000010e: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x0000011d: + [0xffffffff, 0x000001e7): + [0x00000000, 0x00000005): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value + [0x00000181, 0x00000186): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014a] = "r") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000011d: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x00000149: + [0xffffffff, 0x000000dc): + [0x00000000, 0x00000013): DW_OP_consts +0, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +13, DW_OP_stack_value + [0x00000085, 0x0000008d): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000189, 0x00000194): DW_OP_consts +0, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +10, DW_OP_stack_value + [0x00000206, 0x0000020e): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000155] = "flips") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000012c: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000001ab: + [0xffffffff, 0x000000eb): + [0x00000000, 0x00000004): DW_OP_WASM_location 0x0 +12, DW_OP_stack_value + [0x00000181, 0x00000185): DW_OP_WASM_location 0x0 +16, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019b] = "k") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000013b: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x000001d7: + [0xffffffff, 0x00000103): + [0x00000000, 0x00000004): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x0000003c, 0x0000003f): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x00000181, 0x00000185): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x000001bd, 0x000001c0): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019d] = "j") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000014a: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x0000021f: + [0xffffffff, 0x00000118): + [0x00000000, 0x0000002a): DW_OP_WASM_location 0x0 +15, DW_OP_stack_value + [0x0000003b, 0x00000051): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x00000181, 0x000001ab): DW_OP_WASM_location 0x0 +14, DW_OP_stack_value + [0x000001bc, 0x000001d2): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000019f] = "tmp") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (30) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000159: DW_TAG_lexical_block [14] * + DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 + [0x00000184, 0x000001c2) + [0x000001ec, 0x000001f5) + [0x00000305, 0x00000343) + [0x0000036d, 0x00000376)) + +0x0000015e: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000163] = "p0") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (74) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000169: NULL + +0x0000016a: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000036) + +0x0000016f: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x000000000000003c) + +0x00000174: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000042) + +0x00000179: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x00000000000000e4) + +0x0000017e: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x000000000000037f) + +0x00000187: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000383) + +0x00000190: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000387) + +0x00000199: NULL + +0x0000019a: DW_TAG_subprogram [17] * + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000010f] = "free") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/system/include/libc/stdlib.h") + DW_AT_decl_line [DW_FORM_data1] (41) + DW_AT_declaration [DW_FORM_flag_present] (true) + DW_AT_external [DW_FORM_flag_present] (true) + +0x000001a1: DW_TAG_formal_parameter [18] + DW_AT_type [DW_FORM_ref4] (cu + 0x01a7 => {0x000001a7} "*") + +0x000001a6: NULL + +0x000001a7: DW_TAG_pointer_type [19] + +0x000001a8: DW_TAG_subprogram [20] * + DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x00000114] = "_ZL8fannkuchi") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000122] = "fannkuch") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (87) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_inline [DW_FORM_data1] (DW_INL_inlined) + +0x000001b8: DW_TAG_formal_parameter [11] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (87) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000001c3: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000012b] = "showmax") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (90) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000001ce: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000133] = "args") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (89) + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + +0x000001d9: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d6] = "i") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x000001e4: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000138] = "targs") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (89) + DW_AT_type [DW_FORM_ref4] (cu + 0x0026 => {0x00000026} "worker_args*") + +0x000001ef: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000013e] = "perm1") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x000001fa: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000144] = "count") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0060 => {0x00000060} "int*") + +0x00000205: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014a] = "r") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000210: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000014c] = "maxflips") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000021b: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000155] = "flips") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (91) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000226: DW_TAG_label [21] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000015b] = "cleanup") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (137) + +0x0000022d: DW_TAG_lexical_block [22] * + +0x0000022e: DW_TAG_variable [12] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000163] = "p0") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (125) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000239: NULL + +0x0000023a: NULL + +0x0000023b: DW_TAG_subprogram [23] * + DW_AT_low_pc [DW_FORM_addr] (0x000000000000038c) + DW_AT_high_pc [DW_FORM_data4] (0x000002e7) + DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x0 +2, DW_OP_stack_value) + DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000018c] = "main") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (152) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x00000253: DW_TAG_formal_parameter [11] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001a3] = "argc") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (152) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x0000025e: DW_TAG_formal_parameter [11] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001a8] = "argv") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (152) + DW_AT_type [DW_FORM_ref4] (cu + 0x0341 => {0x00000341} "char**") + +0x00000269: DW_TAG_variable [13] + DW_AT_location [DW_FORM_sec_offset] (0x00000267: + [0xffffffff, 0x000003b8): + [0x00000000, 0x00000005): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dc] = "n") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_decl_line [DW_FORM_data1] (153) + DW_AT_type [DW_FORM_ref4] (cu + 0x0059 => {0x00000059} "int") + +0x00000278: DW_TAG_inlined_subroutine [24] * + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01a8 => {0x000001a8} "_ZL8fannkuchi") + DW_AT_low_pc [DW_FORM_addr] (0x00000000000003cb) + DW_AT_high_pc [DW_FORM_data4] (0xfffffc35) + DW_AT_call_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp") + DW_AT_call_line [DW_FORM_data1] (159) + DW_AT_call_column [DW_FORM_data1] (0x29) + +0x00000288: DW_TAG_formal_parameter [25] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01b8 => {0x000001b8} "n") + +0x0000028d: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x00000285: + [0xffffffff, 0x00000000): + [0x00000001, 0x00000001): DW_OP_consts +30, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01c3 => {0x000001c3} "showmax") + +0x00000296: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x000002a2: + [0xffffffff, 0x00000638): + [0x00000001, 0x00000001): DW_OP_lit0, DW_OP_stack_value + [0x00000000, 0x00000018): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01ce => {0x000001ce} "args") + +0x0000029f: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x000002cc: + [0xffffffff, 0x00000407): + [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value + [0x00000000, 0x00000005): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value + [0x0000003f, 0x00000044): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x0000005d, 0x00000061): DW_OP_consts +0, DW_OP_stack_value + [0x00000088, 0x0000008d): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01d9 => {0x000001d9} "i") + +0x000002a8: DW_TAG_variable [27] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01e4 => {0x000001e4} "targs") + +0x000002ad: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x00000354: + [0xffffffff, 0x0000041d): + [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01ef => {0x000001ef} "perm1") + +0x000002b6: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x00000372: + [0xffffffff, 0x00000423): + [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x01fa => {0x000001fa} "count") + +0x000002bf: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x00000390: + [0xffffffff, 0x00000544): + [0x00000000, 0x00000007): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value + [0x000000c2, 0x000000c9): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0205 => {0x00000205} "r") + +0x000002c8: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x000003e8: + [0xffffffff, 0x00000621): + [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value + [0x00000027, 0x0000002f): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0210 => {0x00000210} "maxflips") + +0x000002d1: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x00000413: + [0xffffffff, 0x00000631): + [0x00000000, 0x0000001f): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x021b => {0x0000021b} "flips") + +0x000002da: DW_TAG_label [28] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0226 => {0x00000226} "cleanup") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000615) + +0x000002e3: DW_TAG_lexical_block [14] * + DW_AT_ranges [DW_FORM_sec_offset] (0x00000028 + [0x000004da, 0x0000051f) + [0x00000596, 0x000005e1)) + +0x000002e8: DW_TAG_variable [26] + DW_AT_location [DW_FORM_sec_offset] (0x000003bc: + [0xffffffff, 0x0000059f): + [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x022e => {0x0000022e} "p0") + +0x000002f1: NULL + +0x000002f2: NULL + +0x000002f3: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x00000000000003b6) + +0x000002f8: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x00000000000003c3) + +0x000002fd: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x00000000000003e7) + +0x00000302: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x000000000000041b) + +0x00000307: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000421) + +0x0000030c: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000487) + +0x00000311: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000499) + +0x00000316: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x000000000000055b) + +0x0000031b: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000619) + +0x00000324: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x000000000000061d) + +0x0000032d: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x000000000000062f) + +0x00000332: DW_TAG_GNU_call_site [16] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x019a => {0x0000019a} "free") + DW_AT_low_pc [DW_FORM_addr] (0x000000000000063c) + +0x0000033b: DW_TAG_GNU_call_site [15] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000667) + +0x00000340: NULL + +0x00000341: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x0346 => {0x00000346} "char*") + +0x00000346: DW_TAG_pointer_type [2] + DW_AT_type [DW_FORM_ref4] (cu + 0x034b => {0x0000034b} "char") + +0x0000034b: DW_TAG_base_type [5] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000001ad] = "char") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char) + DW_AT_byte_size [DW_FORM_data1] (0x01) + +0x00000352: NULL + +.debug_loc contents: +0x00000000: + [0xffffffff, 0x00000007): + [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value + +0x0000001d: + [0xffffffff, 0x00000028): + [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value + [0x0000003d, 0x00000042): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_consts +1, DW_OP_stack_value + [0x00000110, 0x0000011a): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value + [0x0000023d, 0x00000248): DW_OP_consts +0, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_consts +1, DW_OP_stack_value + [0x00000291, 0x0000029b): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value + +0x000000a5: + [0xffffffff, 0x0000002f): + [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value + +0x000000c3: + [0xffffffff, 0x00000038): + [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + +0x000000e1: + [0xffffffff, 0x0000003e): + [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value + +0x000000ff: + [0xffffffff, 0x00000044): + [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value + +0x0000011d: + [0xffffffff, 0x000001e7): + [0x00000000, 0x00000005): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value + [0x00000181, 0x00000186): DW_OP_WASM_location 0x0 +2, DW_OP_stack_value + +0x00000149: + [0xffffffff, 0x000000dc): + [0x00000000, 0x00000013): DW_OP_consts +0, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +13, DW_OP_stack_value + [0x00000085, 0x0000008d): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000189, 0x00000194): DW_OP_consts +0, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +10, DW_OP_stack_value + [0x00000206, 0x0000020e): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + +0x000001ab: + [0xffffffff, 0x000000eb): + [0x00000000, 0x00000004): DW_OP_WASM_location 0x0 +12, DW_OP_stack_value + [0x00000181, 0x00000185): DW_OP_WASM_location 0x0 +16, DW_OP_stack_value + +0x000001d7: + [0xffffffff, 0x00000103): + [0x00000000, 0x00000004): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x0000003c, 0x0000003f): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x00000181, 0x00000185): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x000001bd, 0x000001c0): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +0x0000021f: + [0xffffffff, 0x00000118): + [0x00000000, 0x0000002a): DW_OP_WASM_location 0x0 +15, DW_OP_stack_value + [0x0000003b, 0x00000051): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + [0x00000181, 0x000001ab): DW_OP_WASM_location 0x0 +14, DW_OP_stack_value + [0x000001bc, 0x000001d2): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +0x00000267: + [0xffffffff, 0x000003b8): + [0x00000000, 0x00000005): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + +0x00000285: + [0xffffffff, 0x00000000): + [0x00000001, 0x00000001): DW_OP_consts +30, DW_OP_stack_value + +0x000002a2: + [0xffffffff, 0x00000638): + [0x00000001, 0x00000001): DW_OP_lit0, DW_OP_stack_value + [0x00000000, 0x00000018): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value + +0x000002cc: + [0xffffffff, 0x00000407): + [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value + [0x00000000, 0x00000005): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value + [0x0000003f, 0x00000044): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x0000005d, 0x00000061): DW_OP_consts +0, DW_OP_stack_value + [0x00000088, 0x0000008d): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value + +0x00000354: + [0xffffffff, 0x0000041d): + [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +0x00000372: + [0xffffffff, 0x00000423): + [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +5, DW_OP_stack_value + +0x00000390: + [0xffffffff, 0x00000544): + [0x00000000, 0x00000007): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value + [0x000000c2, 0x000000c9): DW_OP_WASM_location 0x0 +6, DW_OP_stack_value + +0x000003bc: + [0xffffffff, 0x0000059f): + [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_WASM_location 0x0 +8, DW_OP_stack_value + +0x000003e8: + [0xffffffff, 0x00000621): + [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value + [0x00000027, 0x0000002f): DW_OP_WASM_location 0x0 +0, DW_OP_stack_value + +0x00000413: + [0xffffffff, 0x00000631): + [0x00000000, 0x0000001f): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +.debug_line contents: +debug_line[0x00000000] +Line table prologue: + total_length: 0x00000a76 + version: 4 + prologue_length: 0x000000dd + min_inst_length: 1 +max_ops_per_inst: 1 + default_is_stmt: 1 + line_base: -5 + line_range: 14 + opcode_base: 13 +standard_opcode_lengths[DW_LNS_copy] = 0 +standard_opcode_lengths[DW_LNS_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_advance_line] = 1 +standard_opcode_lengths[DW_LNS_set_file] = 1 +standard_opcode_lengths[DW_LNS_set_column] = 1 +standard_opcode_lengths[DW_LNS_negate_stmt] = 0 +standard_opcode_lengths[DW_LNS_set_basic_block] = 0 +standard_opcode_lengths[DW_LNS_const_add_pc] = 0 +standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 +standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 +standard_opcode_lengths[DW_LNS_set_isa] = 1 +include_directories[ 1] = "/usr/local/google/home/azakai/Dev" +file_names[ 1]: + name: "emscripten/tests/fannkuch.cpp" + dir_index: 1 + mod_time: 0x00000000 + length: 0x00000000 +file_names[ 2]: + name: "emscripten/system/include/libcxx/__nullptr" + dir_index: 1 + mod_time: 0x00000000 + length: 0x00000000 +file_names[ 3]: + name: "emscripten/system/include/libcxx/stddef.h" + dir_index: 1 + mod_time: 0x00000000 + length: 0x00000000 +file_names[ 4]: + name: "emscripten/system/include/libc/stdlib.h" + dir_index: 1 + mod_time: 0x00000000 + length: 0x00000000 +0x000000e7: 00 DW_LNE_set_address (0x0000000000000007) +0x000000ee: 03 DW_LNS_advance_line (27) +0x000000f0: 01 DW_LNS_copy + 0x0000000000000007 27 0 1 0 0 is_stmt + + +0x000000f1: 00 DW_LNE_set_address (0x0000000000000028) +0x000000f8: 03 DW_LNS_advance_line (33) +0x000000fa: 05 DW_LNS_set_column (14) +0x000000fc: 0a DW_LNS_set_prologue_end +0x000000fd: 01 DW_LNS_copy + 0x0000000000000028 33 14 1 0 0 is_stmt prologue_end + + +0x000000fe: 00 DW_LNE_set_address (0x0000000000000031) +0x00000105: 03 DW_LNS_advance_line (34) +0x00000107: 05 DW_LNS_set_column (27) +0x00000109: 01 DW_LNS_copy + 0x0000000000000031 34 27 1 0 0 is_stmt + + +0x0000010a: 00 DW_LNE_set_address (0x0000000000000032) +0x00000111: 05 DW_LNS_set_column (18) +0x00000113: 06 DW_LNS_negate_stmt +0x00000114: 01 DW_LNS_copy + 0x0000000000000032 34 18 1 0 0 + + +0x00000115: 00 DW_LNE_set_address (0x0000000000000038) +0x0000011c: 03 DW_LNS_advance_line (35) +0x0000011e: 05 DW_LNS_set_column (17) +0x00000120: 06 DW_LNS_negate_stmt +0x00000121: 01 DW_LNS_copy + 0x0000000000000038 35 17 1 0 0 is_stmt + + +0x00000122: 00 DW_LNE_set_address (0x000000000000003e) +0x00000129: 03 DW_LNS_advance_line (36) +0x0000012b: 05 DW_LNS_set_column (18) +0x0000012d: 01 DW_LNS_copy + 0x000000000000003e 36 18 1 0 0 is_stmt + + +0x0000012e: 00 DW_LNE_set_address (0x0000000000000048) +0x00000135: 03 DW_LNS_advance_line (37) +0x00000137: 01 DW_LNS_copy + 0x0000000000000048 37 18 1 0 0 is_stmt + + +0x00000138: 00 DW_LNE_set_address (0x0000000000000051) +0x0000013f: 03 DW_LNS_advance_line (38) +0x00000141: 05 DW_LNS_set_column (7) +0x00000143: 01 DW_LNS_copy + 0x0000000000000051 38 7 1 0 0 is_stmt + + +0x00000144: 00 DW_LNE_set_address (0x0000000000000059) +0x0000014b: 05 DW_LNS_set_column (16) +0x0000014d: 06 DW_LNS_negate_stmt +0x0000014e: 01 DW_LNS_copy + 0x0000000000000059 38 16 1 0 0 + + +0x0000014f: 00 DW_LNE_set_address (0x000000000000005e) +0x00000156: 03 DW_LNS_advance_line (37) +0x00000158: 05 DW_LNS_set_column (24) +0x0000015a: 06 DW_LNS_negate_stmt +0x0000015b: 01 DW_LNS_copy + 0x000000000000005e 37 24 1 0 0 is_stmt + + +0x0000015c: 00 DW_LNE_set_address (0x0000000000000063) +0x00000163: 05 DW_LNS_set_column (18) +0x00000165: 06 DW_LNS_negate_stmt +0x00000166: 01 DW_LNS_copy + 0x0000000000000063 37 18 1 0 0 + + +0x00000167: 00 DW_LNE_set_address (0x0000000000000068) +0x0000016e: 05 DW_LNS_set_column (4) +0x00000170: 01 DW_LNS_copy + 0x0000000000000068 37 4 1 0 0 + + +0x00000171: 00 DW_LNE_set_address (0x000000000000006b) +0x00000178: 03 DW_LNS_advance_line (39) +0x0000017a: 06 DW_LNS_negate_stmt +0x0000017b: 01 DW_LNS_copy + 0x000000000000006b 39 4 1 0 0 is_stmt + + +0x0000017c: 00 DW_LNE_set_address (0x000000000000006d) +0x00000183: 05 DW_LNS_set_column (16) +0x00000185: 06 DW_LNS_negate_stmt +0x00000186: 01 DW_LNS_copy + 0x000000000000006d 39 16 1 0 0 + + +0x00000187: 00 DW_LNE_set_address (0x0000000000000076) +0x0000018e: 05 DW_LNS_set_column (4) +0x00000190: 01 DW_LNS_copy + 0x0000000000000076 39 4 1 0 0 + + +0x00000191: 00 DW_LNE_set_address (0x0000000000000078) +0x00000198: 05 DW_LNS_set_column (23) +0x0000019a: 01 DW_LNS_copy + 0x0000000000000078 39 23 1 0 0 + + +0x0000019b: 00 DW_LNE_set_address (0x000000000000007d) +0x000001a2: 05 DW_LNS_set_column (19) +0x000001a4: 01 DW_LNS_copy + 0x000000000000007d 39 19 1 0 0 + + +0x000001a5: 00 DW_LNE_set_address (0x0000000000000082) +0x000001ac: 03 DW_LNS_advance_line (40) +0x000001ae: 05 DW_LNS_set_column (4) +0x000001b0: 06 DW_LNS_negate_stmt +0x000001b1: 01 DW_LNS_copy + 0x0000000000000082 40 4 1 0 0 is_stmt + + +0x000001b2: 00 DW_LNE_set_address (0x000000000000008a) +0x000001b9: 05 DW_LNS_set_column (17) +0x000001bb: 06 DW_LNS_negate_stmt +0x000001bc: 01 DW_LNS_copy + 0x000000000000008a 40 17 1 0 0 + + +0x000001bd: 00 DW_LNE_set_address (0x0000000000000091) +0x000001c4: 03 DW_LNS_advance_line (37) +0x000001c6: 05 DW_LNS_set_column (18) +0x000001c8: 06 DW_LNS_negate_stmt +0x000001c9: 01 DW_LNS_copy + 0x0000000000000091 37 18 1 0 0 is_stmt + + +0x000001ca: 00 DW_LNE_set_address (0x0000000000000096) +0x000001d1: 03 DW_LNS_advance_line (43) +0x000001d3: 05 DW_LNS_set_column (4) +0x000001d5: 01 DW_LNS_copy + 0x0000000000000096 43 4 1 0 0 is_stmt + + +0x000001d6: 00 DW_LNE_set_address (0x000000000000009a) +0x000001dd: 03 DW_LNS_advance_line (44) +0x000001df: 05 DW_LNS_set_column (16) +0x000001e1: 01 DW_LNS_copy + 0x000000000000009a 44 16 1 0 0 is_stmt + + +0x000001e2: 00 DW_LNE_set_address (0x00000000000000a3) +0x000001e9: 03 DW_LNS_advance_line (45) +0x000001eb: 05 DW_LNS_set_column (10) +0x000001ed: 01 DW_LNS_copy + 0x00000000000000a3 45 10 1 0 0 is_stmt + + +0x000001ee: 00 DW_LNE_set_address (0x00000000000000a5) +0x000001f5: 05 DW_LNS_set_column (18) +0x000001f7: 06 DW_LNS_negate_stmt +0x000001f8: 01 DW_LNS_copy + 0x00000000000000a5 45 18 1 0 0 + + +0x000001f9: 00 DW_LNE_set_address (0x00000000000000ae) +0x00000200: 05 DW_LNS_set_column (10) +0x00000202: 01 DW_LNS_copy + 0x00000000000000ae 45 10 1 0 0 + + +0x00000203: 00 DW_LNE_set_address (0x00000000000000b0) +0x0000020a: 05 DW_LNS_set_column (23) +0x0000020c: 01 DW_LNS_copy + 0x00000000000000b0 45 23 1 0 0 + + +0x0000020d: 00 DW_LNE_set_address (0x00000000000000b5) +0x00000214: 03 DW_LNS_advance_line (44) +0x00000216: 05 DW_LNS_set_column (16) +0x00000218: 06 DW_LNS_negate_stmt +0x00000219: 01 DW_LNS_copy + 0x00000000000000b5 44 16 1 0 0 is_stmt + + +0x0000021a: 00 DW_LNE_set_address (0x00000000000000c0) +0x00000221: 05 DW_LNS_set_column (7) +0x00000223: 06 DW_LNS_negate_stmt +0x00000224: 01 DW_LNS_copy + 0x00000000000000c0 44 7 1 0 0 + + +0x00000225: 00 DW_LNE_set_address (0x00000000000000c6) +0x0000022c: 03 DW_LNS_advance_line (46) +0x0000022e: 05 DW_LNS_set_column (11) +0x00000230: 06 DW_LNS_negate_stmt +0x00000231: 01 DW_LNS_copy + 0x00000000000000c6 46 11 1 0 0 is_stmt + + +0x00000232: 00 DW_LNE_set_address (0x00000000000000d2) +0x00000239: 05 DW_LNS_set_column (28) +0x0000023b: 06 DW_LNS_negate_stmt +0x0000023c: 01 DW_LNS_copy + 0x00000000000000d2 46 28 1 0 0 + + +0x0000023d: 00 DW_LNE_set_address (0x00000000000000d7) +0x00000244: 05 DW_LNS_set_column (41) +0x00000246: 01 DW_LNS_copy + 0x00000000000000d7 46 41 1 0 0 + + +0x00000247: 00 DW_LNE_set_address (0x00000000000000dc) +0x0000024e: 03 DW_LNS_advance_line (48) +0x00000250: 05 DW_LNS_set_column (21) +0x00000252: 06 DW_LNS_negate_stmt +0x00000253: 01 DW_LNS_copy + 0x00000000000000dc 48 21 1 0 0 is_stmt + + +0x00000254: 00 DW_LNE_set_address (0x00000000000000e4) +0x0000025b: 03 DW_LNS_advance_line (50) +0x0000025d: 05 DW_LNS_set_column (14) +0x0000025f: 01 DW_LNS_copy + 0x00000000000000e4 50 14 1 0 0 is_stmt + + +0x00000260: 00 DW_LNE_set_address (0x00000000000000f5) +0x00000267: 03 DW_LNS_advance_line (52) +0x00000269: 05 DW_LNS_set_column (38) +0x0000026b: 01 DW_LNS_copy + 0x00000000000000f5 52 38 1 0 0 is_stmt + + +0x0000026c: 00 DW_LNE_set_address (0x0000000000000109) +0x00000273: 03 DW_LNS_advance_line (53) +0x00000275: 05 DW_LNS_set_column (22) +0x00000277: 01 DW_LNS_copy + 0x0000000000000109 53 22 1 0 0 is_stmt + + +0x00000278: 00 DW_LNE_set_address (0x0000000000000118) +0x0000027f: 03 DW_LNS_advance_line (54) +0x00000281: 05 DW_LNS_set_column (24) +0x00000283: 01 DW_LNS_copy + 0x0000000000000118 54 24 1 0 0 is_stmt + + +0x00000284: 00 DW_LNE_set_address (0x000000000000011a) +0x0000028b: 05 DW_LNS_set_column (26) +0x0000028d: 06 DW_LNS_negate_stmt +0x0000028e: 01 DW_LNS_copy + 0x000000000000011a 54 26 1 0 0 + + +0x0000028f: 00 DW_LNE_set_address (0x0000000000000127) +0x00000296: 05 DW_LNS_set_column (24) +0x00000298: 01 DW_LNS_copy + 0x0000000000000127 54 24 1 0 0 + + +0x00000299: 00 DW_LNE_set_address (0x000000000000012a) +0x000002a0: 03 DW_LNS_advance_line (55) +0x000002a2: 06 DW_LNS_negate_stmt +0x000002a3: 01 DW_LNS_copy + 0x000000000000012a 55 24 1 0 0 is_stmt + + +0x000002a4: 00 DW_LNE_set_address (0x0000000000000131) +0x000002ab: 03 DW_LNS_advance_line (52) +0x000002ad: 05 DW_LNS_set_column (44) +0x000002af: 01 DW_LNS_copy + 0x0000000000000131 52 44 1 0 0 is_stmt + + +0x000002b0: 00 DW_LNE_set_address (0x000000000000013d) +0x000002b7: 05 DW_LNS_set_column (38) +0x000002b9: 06 DW_LNS_negate_stmt +0x000002ba: 01 DW_LNS_copy + 0x000000000000013d 52 38 1 0 0 + + +0x000002bb: 00 DW_LNE_set_address (0x0000000000000140) +0x000002c2: 05 DW_LNS_set_column (13) +0x000002c4: 01 DW_LNS_copy + 0x0000000000000140 52 13 1 0 0 + + +0x000002c5: 00 DW_LNE_set_address (0x0000000000000144) +0x000002cc: 03 DW_LNS_advance_line (58) +0x000002ce: 05 DW_LNS_set_column (19) +0x000002d0: 06 DW_LNS_negate_stmt +0x000002d1: 01 DW_LNS_copy + 0x0000000000000144 58 19 1 0 0 is_stmt + + +0x000002d2: 00 DW_LNE_set_address (0x0000000000000153) +0x000002d9: 03 DW_LNS_advance_line (59) +0x000002db: 05 DW_LNS_set_column (21) +0x000002dd: 01 DW_LNS_copy + 0x0000000000000153 59 21 1 0 0 is_stmt + + +0x000002de: 00 DW_LNE_set_address (0x000000000000015a) +0x000002e5: 03 DW_LNS_advance_line (57) +0x000002e7: 05 DW_LNS_set_column (18) +0x000002e9: 01 DW_LNS_copy + 0x000000000000015a 57 18 1 0 0 is_stmt + + +0x000002ea: 00 DW_LNE_set_address (0x000000000000016a) +0x000002f1: 03 DW_LNS_advance_line (62) +0x000002f3: 05 DW_LNS_set_column (14) +0x000002f5: 01 DW_LNS_copy + 0x000000000000016a 62 14 1 0 0 is_stmt + + +0x000002f6: 00 DW_LNE_set_address (0x000000000000016e) +0x000002fd: 05 DW_LNS_set_column (23) +0x000002ff: 06 DW_LNS_negate_stmt +0x00000300: 01 DW_LNS_copy + 0x000000000000016e 62 23 1 0 0 + + +0x00000301: 00 DW_LNE_set_address (0x0000000000000173) +0x00000308: 05 DW_LNS_set_column (14) +0x0000030a: 01 DW_LNS_copy + 0x0000000000000173 62 14 1 0 0 + + +0x0000030b: 00 DW_LNE_set_address (0x0000000000000177) +0x00000312: 03 DW_LNS_advance_line (66) +0x00000314: 05 DW_LNS_set_column (16) +0x00000316: 06 DW_LNS_negate_stmt +0x00000317: 01 DW_LNS_copy + 0x0000000000000177 66 16 1 0 0 is_stmt + + +0x00000318: 00 DW_LNE_set_address (0x0000000000000184) +0x0000031f: 03 DW_LNS_advance_line (75) +0x00000321: 05 DW_LNS_set_column (27) +0x00000323: 01 DW_LNS_copy + 0x0000000000000184 75 27 1 0 0 is_stmt + + +0x00000324: 00 DW_LNE_set_address (0x000000000000018d) +0x0000032b: 03 DW_LNS_advance_line (76) +0x0000032d: 05 DW_LNS_set_column (16) +0x0000032f: 01 DW_LNS_copy + 0x000000000000018d 76 16 1 0 0 is_stmt + + +0x00000330: 00 DW_LNE_set_address (0x0000000000000195) +0x00000337: 05 DW_LNS_set_column (27) +0x00000339: 06 DW_LNS_negate_stmt +0x0000033a: 01 DW_LNS_copy + 0x0000000000000195 76 27 1 0 0 + + +0x0000033b: 00 DW_LNE_set_address (0x0000000000000197) +0x00000342: 05 DW_LNS_set_column (35) +0x00000344: 01 DW_LNS_copy + 0x0000000000000197 76 35 1 0 0 + + +0x00000345: 00 DW_LNE_set_address (0x00000000000001a0) +0x0000034c: 05 DW_LNS_set_column (27) +0x0000034e: 01 DW_LNS_copy + 0x00000000000001a0 76 27 1 0 0 + + +0x0000034f: 00 DW_LNE_set_address (0x00000000000001a5) +0x00000356: 05 DW_LNS_set_column (25) +0x00000358: 01 DW_LNS_copy + 0x00000000000001a5 76 25 1 0 0 + + +0x00000359: 00 DW_LNE_set_address (0x00000000000001a8) +0x00000360: 03 DW_LNS_advance_line (75) +0x00000362: 05 DW_LNS_set_column (27) +0x00000364: 06 DW_LNS_negate_stmt +0x00000365: 01 DW_LNS_copy + 0x00000000000001a8 75 27 1 0 0 is_stmt + + +0x00000366: 00 DW_LNE_set_address (0x00000000000001ad) +0x0000036d: 05 DW_LNS_set_column (13) +0x0000036f: 06 DW_LNS_negate_stmt +0x00000370: 01 DW_LNS_copy + 0x00000000000001ad 75 13 1 0 0 + + +0x00000371: 00 DW_LNE_set_address (0x00000000000001b5) +0x00000378: 03 DW_LNS_advance_line (77) +0x0000037a: 06 DW_LNS_negate_stmt +0x0000037b: 01 DW_LNS_copy + 0x00000000000001b5 77 13 1 0 0 is_stmt + + +0x0000037c: 00 DW_LNE_set_address (0x00000000000001bd) +0x00000383: 05 DW_LNS_set_column (22) +0x00000385: 06 DW_LNS_negate_stmt +0x00000386: 01 DW_LNS_copy + 0x00000000000001bd 77 22 1 0 0 + + +0x00000387: 00 DW_LNE_set_address (0x00000000000001c2) +0x0000038e: 03 DW_LNS_advance_line (79) +0x00000390: 05 DW_LNS_set_column (16) +0x00000392: 06 DW_LNS_negate_stmt +0x00000393: 01 DW_LNS_copy + 0x00000000000001c2 79 16 1 0 0 is_stmt + + +0x00000394: 00 DW_LNE_set_address (0x00000000000001ca) +0x0000039b: 05 DW_LNS_set_column (14) +0x0000039d: 06 DW_LNS_negate_stmt +0x0000039e: 01 DW_LNS_copy + 0x00000000000001ca 79 14 1 0 0 + + +0x0000039f: 00 DW_LNE_set_address (0x00000000000001d9) +0x000003a6: 05 DW_LNS_set_column (25) +0x000003a8: 01 DW_LNS_copy + 0x00000000000001d9 79 25 1 0 0 + + +0x000003a9: 00 DW_LNE_set_address (0x00000000000001e0) +0x000003b0: 03 DW_LNS_advance_line (81) +0x000003b2: 05 DW_LNS_set_column (11) +0x000003b4: 06 DW_LNS_negate_stmt +0x000003b5: 01 DW_LNS_copy + 0x00000000000001e0 81 11 1 0 0 is_stmt + + +0x000003b6: 00 DW_LNE_set_address (0x00000000000001e5) +0x000003bd: 03 DW_LNS_advance_line (66) +0x000003bf: 05 DW_LNS_set_column (16) +0x000003c1: 01 DW_LNS_copy + 0x00000000000001e5 66 16 1 0 0 is_stmt + + +0x000003c2: 00 DW_LNE_set_address (0x00000000000001ec) +0x000003c9: 03 DW_LNS_advance_line (74) +0x000003cb: 05 DW_LNS_set_column (22) +0x000003cd: 01 DW_LNS_copy + 0x00000000000001ec 74 22 1 0 0 is_stmt + + +0x000003ce: 00 DW_LNE_set_address (0x00000000000001f5) +0x000003d5: 03 DW_LNS_advance_line (37) +0x000003d7: 05 DW_LNS_set_column (4) +0x000003d9: 01 DW_LNS_copy + 0x00000000000001f5 37 4 1 0 0 is_stmt + + +0x000003da: 00 DW_LNE_set_address (0x00000000000001fa) +0x000003e1: 03 DW_LNS_advance_line (39) +0x000003e3: 01 DW_LNS_copy + 0x00000000000001fa 39 4 1 0 0 is_stmt + + +0x000003e4: 00 DW_LNE_set_address (0x00000000000001fc) +0x000003eb: 05 DW_LNS_set_column (16) +0x000003ed: 06 DW_LNS_negate_stmt +0x000003ee: 01 DW_LNS_copy + 0x00000000000001fc 39 16 1 0 0 + + +0x000003ef: 00 DW_LNE_set_address (0x0000000000000205) +0x000003f6: 05 DW_LNS_set_column (4) +0x000003f8: 01 DW_LNS_copy + 0x0000000000000205 39 4 1 0 0 + + +0x000003f9: 00 DW_LNE_set_address (0x0000000000000207) +0x00000400: 05 DW_LNS_set_column (23) +0x00000402: 01 DW_LNS_copy + 0x0000000000000207 39 23 1 0 0 + + +0x00000403: 00 DW_LNE_set_address (0x000000000000020c) +0x0000040a: 05 DW_LNS_set_column (19) +0x0000040c: 01 DW_LNS_copy + 0x000000000000020c 39 19 1 0 0 + + +0x0000040d: 00 DW_LNE_set_address (0x0000000000000211) +0x00000414: 03 DW_LNS_advance_line (40) +0x00000416: 05 DW_LNS_set_column (4) +0x00000418: 06 DW_LNS_negate_stmt +0x00000419: 01 DW_LNS_copy + 0x0000000000000211 40 4 1 0 0 is_stmt + + +0x0000041a: 00 DW_LNE_set_address (0x0000000000000219) +0x00000421: 05 DW_LNS_set_column (17) +0x00000423: 06 DW_LNS_negate_stmt +0x00000424: 01 DW_LNS_copy + 0x0000000000000219 40 17 1 0 0 + + +0x00000425: 00 DW_LNE_set_address (0x0000000000000223) +0x0000042c: 03 DW_LNS_advance_line (44) +0x0000042e: 05 DW_LNS_set_column (16) +0x00000430: 06 DW_LNS_negate_stmt +0x00000431: 01 DW_LNS_copy + 0x0000000000000223 44 16 1 0 0 is_stmt + + +0x00000432: 00 DW_LNE_set_address (0x000000000000022c) +0x00000439: 03 DW_LNS_advance_line (45) +0x0000043b: 05 DW_LNS_set_column (10) +0x0000043d: 01 DW_LNS_copy + 0x000000000000022c 45 10 1 0 0 is_stmt + + +0x0000043e: 00 DW_LNE_set_address (0x000000000000022e) +0x00000445: 05 DW_LNS_set_column (18) +0x00000447: 06 DW_LNS_negate_stmt +0x00000448: 01 DW_LNS_copy + 0x000000000000022e 45 18 1 0 0 + + +0x00000449: 00 DW_LNE_set_address (0x0000000000000237) +0x00000450: 05 DW_LNS_set_column (10) +0x00000452: 01 DW_LNS_copy + 0x0000000000000237 45 10 1 0 0 + + +0x00000453: 00 DW_LNE_set_address (0x0000000000000239) +0x0000045a: 05 DW_LNS_set_column (23) +0x0000045c: 01 DW_LNS_copy + 0x0000000000000239 45 23 1 0 0 + + +0x0000045d: 00 DW_LNE_set_address (0x000000000000023e) +0x00000464: 03 DW_LNS_advance_line (44) +0x00000466: 05 DW_LNS_set_column (16) +0x00000468: 06 DW_LNS_negate_stmt +0x00000469: 01 DW_LNS_copy + 0x000000000000023e 44 16 1 0 0 is_stmt + + +0x0000046a: 00 DW_LNE_set_address (0x000000000000024f) +0x00000471: 03 DW_LNS_advance_line (46) +0x00000473: 05 DW_LNS_set_column (11) +0x00000475: 01 DW_LNS_copy + 0x000000000000024f 46 11 1 0 0 is_stmt + + +0x00000476: 00 DW_LNE_set_address (0x000000000000025b) +0x0000047d: 05 DW_LNS_set_column (28) +0x0000047f: 06 DW_LNS_negate_stmt +0x00000480: 01 DW_LNS_copy + 0x000000000000025b 46 28 1 0 0 + + +0x00000481: 00 DW_LNE_set_address (0x0000000000000260) +0x00000488: 05 DW_LNS_set_column (41) +0x0000048a: 01 DW_LNS_copy + 0x0000000000000260 46 41 1 0 0 + + +0x0000048b: 00 DW_LNE_set_address (0x0000000000000265) +0x00000492: 03 DW_LNS_advance_line (50) +0x00000494: 05 DW_LNS_set_column (14) +0x00000496: 06 DW_LNS_negate_stmt +0x00000497: 01 DW_LNS_copy + 0x0000000000000265 50 14 1 0 0 is_stmt + + +0x00000498: 00 DW_LNE_set_address (0x0000000000000276) +0x0000049f: 03 DW_LNS_advance_line (52) +0x000004a1: 05 DW_LNS_set_column (38) +0x000004a3: 01 DW_LNS_copy + 0x0000000000000276 52 38 1 0 0 is_stmt + + +0x000004a4: 00 DW_LNE_set_address (0x000000000000028a) +0x000004ab: 03 DW_LNS_advance_line (53) +0x000004ad: 05 DW_LNS_set_column (22) +0x000004af: 01 DW_LNS_copy + 0x000000000000028a 53 22 1 0 0 is_stmt + + +0x000004b0: 00 DW_LNE_set_address (0x0000000000000299) +0x000004b7: 03 DW_LNS_advance_line (54) +0x000004b9: 05 DW_LNS_set_column (24) +0x000004bb: 01 DW_LNS_copy + 0x0000000000000299 54 24 1 0 0 is_stmt + + +0x000004bc: 00 DW_LNE_set_address (0x000000000000029b) +0x000004c3: 05 DW_LNS_set_column (26) +0x000004c5: 06 DW_LNS_negate_stmt +0x000004c6: 01 DW_LNS_copy + 0x000000000000029b 54 26 1 0 0 + + +0x000004c7: 00 DW_LNE_set_address (0x00000000000002a8) +0x000004ce: 05 DW_LNS_set_column (24) +0x000004d0: 01 DW_LNS_copy + 0x00000000000002a8 54 24 1 0 0 + + +0x000004d1: 00 DW_LNE_set_address (0x00000000000002ab) +0x000004d8: 03 DW_LNS_advance_line (55) +0x000004da: 06 DW_LNS_negate_stmt +0x000004db: 01 DW_LNS_copy + 0x00000000000002ab 55 24 1 0 0 is_stmt + + +0x000004dc: 00 DW_LNE_set_address (0x00000000000002b2) +0x000004e3: 03 DW_LNS_advance_line (52) +0x000004e5: 05 DW_LNS_set_column (44) +0x000004e7: 01 DW_LNS_copy + 0x00000000000002b2 52 44 1 0 0 is_stmt + + +0x000004e8: 00 DW_LNE_set_address (0x00000000000002be) +0x000004ef: 05 DW_LNS_set_column (38) +0x000004f1: 06 DW_LNS_negate_stmt +0x000004f2: 01 DW_LNS_copy + 0x00000000000002be 52 38 1 0 0 + + +0x000004f3: 00 DW_LNE_set_address (0x00000000000002c5) +0x000004fa: 03 DW_LNS_advance_line (58) +0x000004fc: 05 DW_LNS_set_column (19) +0x000004fe: 06 DW_LNS_negate_stmt +0x000004ff: 01 DW_LNS_copy + 0x00000000000002c5 58 19 1 0 0 is_stmt + + +0x00000500: 00 DW_LNE_set_address (0x00000000000002d4) +0x00000507: 03 DW_LNS_advance_line (59) +0x00000509: 05 DW_LNS_set_column (21) +0x0000050b: 01 DW_LNS_copy + 0x00000000000002d4 59 21 1 0 0 is_stmt + + +0x0000050c: 00 DW_LNE_set_address (0x00000000000002db) +0x00000513: 03 DW_LNS_advance_line (57) +0x00000515: 05 DW_LNS_set_column (18) +0x00000517: 01 DW_LNS_copy + 0x00000000000002db 57 18 1 0 0 is_stmt + + +0x00000518: 00 DW_LNE_set_address (0x00000000000002eb) +0x0000051f: 03 DW_LNS_advance_line (62) +0x00000521: 05 DW_LNS_set_column (14) +0x00000523: 01 DW_LNS_copy + 0x00000000000002eb 62 14 1 0 0 is_stmt + + +0x00000524: 00 DW_LNE_set_address (0x00000000000002ef) +0x0000052b: 05 DW_LNS_set_column (23) +0x0000052d: 06 DW_LNS_negate_stmt +0x0000052e: 01 DW_LNS_copy + 0x00000000000002ef 62 23 1 0 0 + + +0x0000052f: 00 DW_LNE_set_address (0x00000000000002f4) +0x00000536: 05 DW_LNS_set_column (14) +0x00000538: 01 DW_LNS_copy + 0x00000000000002f4 62 14 1 0 0 + + +0x00000539: 00 DW_LNE_set_address (0x00000000000002f8) +0x00000540: 03 DW_LNS_advance_line (66) +0x00000542: 05 DW_LNS_set_column (16) +0x00000544: 06 DW_LNS_negate_stmt +0x00000545: 01 DW_LNS_copy + 0x00000000000002f8 66 16 1 0 0 is_stmt + + +0x00000546: 00 DW_LNE_set_address (0x0000000000000305) +0x0000054d: 03 DW_LNS_advance_line (75) +0x0000054f: 05 DW_LNS_set_column (27) +0x00000551: 01 DW_LNS_copy + 0x0000000000000305 75 27 1 0 0 is_stmt + + +0x00000552: 00 DW_LNE_set_address (0x000000000000030e) +0x00000559: 03 DW_LNS_advance_line (76) +0x0000055b: 05 DW_LNS_set_column (16) +0x0000055d: 01 DW_LNS_copy + 0x000000000000030e 76 16 1 0 0 is_stmt + + +0x0000055e: 00 DW_LNE_set_address (0x0000000000000316) +0x00000565: 05 DW_LNS_set_column (27) +0x00000567: 06 DW_LNS_negate_stmt +0x00000568: 01 DW_LNS_copy + 0x0000000000000316 76 27 1 0 0 + + +0x00000569: 00 DW_LNE_set_address (0x0000000000000318) +0x00000570: 05 DW_LNS_set_column (35) +0x00000572: 01 DW_LNS_copy + 0x0000000000000318 76 35 1 0 0 + + +0x00000573: 00 DW_LNE_set_address (0x0000000000000321) +0x0000057a: 05 DW_LNS_set_column (27) +0x0000057c: 01 DW_LNS_copy + 0x0000000000000321 76 27 1 0 0 + + +0x0000057d: 00 DW_LNE_set_address (0x0000000000000326) +0x00000584: 05 DW_LNS_set_column (25) +0x00000586: 01 DW_LNS_copy + 0x0000000000000326 76 25 1 0 0 + + +0x00000587: 00 DW_LNE_set_address (0x0000000000000329) +0x0000058e: 03 DW_LNS_advance_line (75) +0x00000590: 05 DW_LNS_set_column (27) +0x00000592: 06 DW_LNS_negate_stmt +0x00000593: 01 DW_LNS_copy + 0x0000000000000329 75 27 1 0 0 is_stmt + + +0x00000594: 00 DW_LNE_set_address (0x0000000000000336) +0x0000059b: 03 DW_LNS_advance_line (77) +0x0000059d: 05 DW_LNS_set_column (13) +0x0000059f: 01 DW_LNS_copy + 0x0000000000000336 77 13 1 0 0 is_stmt + + +0x000005a0: 00 DW_LNE_set_address (0x000000000000033e) +0x000005a7: 05 DW_LNS_set_column (22) +0x000005a9: 06 DW_LNS_negate_stmt +0x000005aa: 01 DW_LNS_copy + 0x000000000000033e 77 22 1 0 0 + + +0x000005ab: 00 DW_LNE_set_address (0x0000000000000343) +0x000005b2: 03 DW_LNS_advance_line (79) +0x000005b4: 05 DW_LNS_set_column (16) +0x000005b6: 06 DW_LNS_negate_stmt +0x000005b7: 01 DW_LNS_copy + 0x0000000000000343 79 16 1 0 0 is_stmt + + +0x000005b8: 00 DW_LNE_set_address (0x000000000000034b) +0x000005bf: 05 DW_LNS_set_column (14) +0x000005c1: 06 DW_LNS_negate_stmt +0x000005c2: 01 DW_LNS_copy + 0x000000000000034b 79 14 1 0 0 + + +0x000005c3: 00 DW_LNE_set_address (0x000000000000035a) +0x000005ca: 05 DW_LNS_set_column (25) +0x000005cc: 01 DW_LNS_copy + 0x000000000000035a 79 25 1 0 0 + + +0x000005cd: 00 DW_LNE_set_address (0x0000000000000361) +0x000005d4: 03 DW_LNS_advance_line (81) +0x000005d6: 05 DW_LNS_set_column (11) +0x000005d8: 06 DW_LNS_negate_stmt +0x000005d9: 01 DW_LNS_copy + 0x0000000000000361 81 11 1 0 0 is_stmt + + +0x000005da: 00 DW_LNE_set_address (0x0000000000000366) +0x000005e1: 03 DW_LNS_advance_line (66) +0x000005e3: 05 DW_LNS_set_column (16) +0x000005e5: 01 DW_LNS_copy + 0x0000000000000366 66 16 1 0 0 is_stmt + + +0x000005e6: 00 DW_LNE_set_address (0x000000000000036d) +0x000005ed: 03 DW_LNS_advance_line (74) +0x000005ef: 05 DW_LNS_set_column (22) +0x000005f1: 01 DW_LNS_copy + 0x000000000000036d 74 22 1 0 0 is_stmt + + +0x000005f2: 00 DW_LNE_set_address (0x000000000000037b) +0x000005f9: 03 DW_LNS_advance_line (67) +0x000005fb: 05 DW_LNS_set_column (13) +0x000005fd: 01 DW_LNS_copy + 0x000000000000037b 67 13 1 0 0 is_stmt + + +0x000005fe: 00 DW_LNE_set_address (0x000000000000037f) +0x00000605: 03 DW_LNS_advance_line (68) +0x00000607: 01 DW_LNS_copy + 0x000000000000037f 68 13 1 0 0 is_stmt + + +0x00000608: 00 DW_LNE_set_address (0x0000000000000383) +0x0000060f: 03 DW_LNS_advance_line (69) +0x00000611: 01 DW_LNS_copy + 0x0000000000000383 69 13 1 0 0 is_stmt + + +0x00000612: 00 DW_LNE_set_address (0x0000000000000387) +0x00000619: 03 DW_LNS_advance_line (70) +0x0000061b: 01 DW_LNS_copy + 0x0000000000000387 70 13 1 0 0 is_stmt + + +0x0000061c: 00 DW_LNE_set_address (0x000000000000038a) +0x00000623: 00 DW_LNE_end_sequence + 0x000000000000038a 70 13 1 0 0 is_stmt end_sequence + +0x00000626: 00 DW_LNE_set_address (0x000000000000038c) +0x0000062d: 03 DW_LNS_advance_line (152) +0x00000630: 01 DW_LNS_copy + 0x000000000000038c 152 0 1 0 0 is_stmt + + +0x00000631: 00 DW_LNE_set_address (0x00000000000003a8) +0x00000638: 03 DW_LNS_advance_line (153) +0x0000063a: 05 DW_LNS_set_column (17) +0x0000063c: 0a DW_LNS_set_prologue_end +0x0000063d: 01 DW_LNS_copy + 0x00000000000003a8 153 17 1 0 0 is_stmt prologue_end + + +0x0000063e: 00 DW_LNE_set_address (0x00000000000003af) +0x00000645: 05 DW_LNS_set_column (28) +0x00000647: 06 DW_LNS_negate_stmt +0x00000648: 01 DW_LNS_copy + 0x00000000000003af 153 28 1 0 0 + + +0x00000649: 00 DW_LNE_set_address (0x00000000000003b4) +0x00000650: 05 DW_LNS_set_column (23) +0x00000652: 01 DW_LNS_copy + 0x00000000000003b4 153 23 1 0 0 + + +0x00000653: 00 DW_LNE_set_address (0x00000000000003ba) +0x0000065a: 03 DW_LNS_advance_line (155) +0x0000065c: 05 DW_LNS_set_column (10) +0x0000065e: 06 DW_LNS_negate_stmt +0x0000065f: 01 DW_LNS_copy + 0x00000000000003ba 155 10 1 0 0 is_stmt + + +0x00000660: 00 DW_LNE_set_address (0x00000000000003bb) +0x00000667: 05 DW_LNS_set_column (8) +0x00000669: 06 DW_LNS_negate_stmt +0x0000066a: 01 DW_LNS_copy + 0x00000000000003bb 155 8 1 0 0 + + +0x0000066b: 00 DW_LNE_set_address (0x00000000000003be) +0x00000672: 03 DW_LNS_advance_line (156) +0x00000674: 05 DW_LNS_set_column (7) +0x00000676: 06 DW_LNS_negate_stmt +0x00000677: 01 DW_LNS_copy + 0x00000000000003be 156 7 1 0 0 is_stmt + + +0x00000678: 00 DW_LNE_set_address (0x00000000000003cb) +0x0000067f: 03 DW_LNS_advance_line (94) +0x00000681: 05 DW_LNS_set_column (18) +0x00000683: 01 DW_LNS_copy + 0x00000000000003cb 94 18 1 0 0 is_stmt + + +0x00000684: 00 DW_LNE_set_address (0x00000000000003e5) +0x0000068b: 03 DW_LNS_advance_line (95) +0x0000068d: 05 DW_LNS_set_column (29) +0x0000068f: 01 DW_LNS_copy + 0x00000000000003e5 95 29 1 0 0 is_stmt + + +0x00000690: 00 DW_LNE_set_address (0x00000000000003e7) +0x00000697: 03 DW_LNS_advance_line (98) +0x00000699: 05 DW_LNS_set_column (19) +0x0000069b: 01 DW_LNS_copy + 0x00000000000003e7 98 19 1 0 0 is_stmt + + +0x0000069c: 00 DW_LNE_set_address (0x00000000000003ee) +0x000006a3: 03 DW_LNS_advance_line (97) +0x000006a5: 05 DW_LNS_set_column (16) +0x000006a7: 01 DW_LNS_copy + 0x00000000000003ee 97 16 1 0 0 is_stmt + + +0x000006a8: 00 DW_LNE_set_address (0x00000000000003f5) +0x000006af: 03 DW_LNS_advance_line (96) +0x000006b1: 01 DW_LNS_copy + 0x00000000000003f5 96 16 1 0 0 is_stmt + + +0x000006b2: 00 DW_LNE_set_address (0x0000000000000400) +0x000006b9: 03 DW_LNS_advance_line (94) +0x000006bb: 05 DW_LNS_set_column (28) +0x000006bd: 01 DW_LNS_copy + 0x0000000000000400 94 28 1 0 0 is_stmt + + +0x000006be: 00 DW_LNE_set_address (0x0000000000000405) +0x000006c5: 05 DW_LNS_set_column (18) +0x000006c7: 06 DW_LNS_negate_stmt +0x000006c8: 01 DW_LNS_copy + 0x0000000000000405 94 18 1 0 0 + + +0x000006c9: 00 DW_LNE_set_address (0x000000000000040a) +0x000006d0: 05 DW_LNS_set_column (4) +0x000006d2: 01 DW_LNS_copy + 0x000000000000040a 94 4 1 0 0 + + +0x000006d3: 00 DW_LNE_set_address (0x0000000000000412) +0x000006da: 03 DW_LNS_advance_line (102) +0x000006dc: 05 DW_LNS_set_column (27) +0x000006de: 06 DW_LNS_negate_stmt +0x000006df: 01 DW_LNS_copy + 0x0000000000000412 102 27 1 0 0 is_stmt + + +0x000006e0: 00 DW_LNE_set_address (0x0000000000000417) +0x000006e7: 05 DW_LNS_set_column (18) +0x000006e9: 06 DW_LNS_negate_stmt +0x000006ea: 01 DW_LNS_copy + 0x0000000000000417 102 18 1 0 0 + + +0x000006eb: 00 DW_LNE_set_address (0x000000000000041d) +0x000006f2: 03 DW_LNS_advance_line (103) +0x000006f4: 06 DW_LNS_negate_stmt +0x000006f5: 01 DW_LNS_copy + 0x000000000000041d 103 18 1 0 0 is_stmt + + +0x000006f6: 00 DW_LNE_set_address (0x0000000000000429) +0x000006fd: 03 DW_LNS_advance_line (105) +0x000006ff: 01 DW_LNS_copy + 0x0000000000000429 105 18 1 0 0 is_stmt + + +0x00000700: 00 DW_LNE_set_address (0x0000000000000432) +0x00000707: 03 DW_LNS_advance_line (106) +0x00000709: 05 DW_LNS_set_column (7) +0x0000070b: 01 DW_LNS_copy + 0x0000000000000432 106 7 1 0 0 is_stmt + + +0x0000070c: 00 DW_LNE_set_address (0x000000000000043a) +0x00000713: 05 DW_LNS_set_column (16) +0x00000715: 06 DW_LNS_negate_stmt +0x00000716: 01 DW_LNS_copy + 0x000000000000043a 106 16 1 0 0 + + +0x00000717: 00 DW_LNE_set_address (0x000000000000043f) +0x0000071e: 03 DW_LNS_advance_line (105) +0x00000720: 05 DW_LNS_set_column (24) +0x00000722: 06 DW_LNS_negate_stmt +0x00000723: 01 DW_LNS_copy + 0x000000000000043f 105 24 1 0 0 is_stmt + + +0x00000724: 00 DW_LNE_set_address (0x0000000000000444) +0x0000072b: 05 DW_LNS_set_column (18) +0x0000072d: 06 DW_LNS_negate_stmt +0x0000072e: 01 DW_LNS_copy + 0x0000000000000444 105 18 1 0 0 + + +0x0000072f: 00 DW_LNE_set_address (0x000000000000046a) +0x00000736: 03 DW_LNS_advance_line (112) +0x00000738: 05 DW_LNS_set_column (13) +0x0000073a: 06 DW_LNS_negate_stmt +0x0000073b: 01 DW_LNS_copy + 0x000000000000046a 112 13 1 0 0 is_stmt + + +0x0000073c: 00 DW_LNE_set_address (0x000000000000046c) +0x00000743: 05 DW_LNS_set_column (26) +0x00000745: 06 DW_LNS_negate_stmt +0x00000746: 01 DW_LNS_copy + 0x000000000000046c 112 26 1 0 0 + + +0x00000747: 00 DW_LNE_set_address (0x0000000000000479) +0x0000074e: 05 DW_LNS_set_column (35) +0x00000750: 01 DW_LNS_copy + 0x0000000000000479 112 35 1 0 0 + + +0x00000751: 00 DW_LNE_set_address (0x000000000000047a) +0x00000758: 05 DW_LNS_set_column (13) +0x0000075a: 01 DW_LNS_copy + 0x000000000000047a 112 13 1 0 0 + + +0x0000075b: 00 DW_LNE_set_address (0x0000000000000488) +0x00000762: 03 DW_LNS_advance_line (111) +0x00000764: 05 DW_LNS_set_column (30) +0x00000766: 06 DW_LNS_negate_stmt +0x00000767: 01 DW_LNS_copy + 0x0000000000000488 111 30 1 0 0 is_stmt + + +0x00000768: 00 DW_LNE_set_address (0x000000000000048d) +0x0000076f: 05 DW_LNS_set_column (24) +0x00000771: 06 DW_LNS_negate_stmt +0x00000772: 01 DW_LNS_copy + 0x000000000000048d 111 24 1 0 0 + + +0x00000773: 00 DW_LNE_set_address (0x0000000000000492) +0x0000077a: 05 DW_LNS_set_column (10) +0x0000077c: 01 DW_LNS_copy + 0x0000000000000492 111 10 1 0 0 + + +0x0000077d: 00 DW_LNE_set_address (0x0000000000000497) +0x00000784: 03 DW_LNS_advance_line (113) +0x00000786: 06 DW_LNS_negate_stmt +0x00000787: 01 DW_LNS_copy + 0x0000000000000497 113 10 1 0 0 is_stmt + + +0x00000788: 00 DW_LNE_set_address (0x000000000000049a) +0x0000078f: 03 DW_LNS_advance_line (118) +0x00000791: 05 DW_LNS_set_column (16) +0x00000793: 01 DW_LNS_copy + 0x000000000000049a 118 16 1 0 0 is_stmt + + +0x00000794: 00 DW_LNE_set_address (0x00000000000004a3) +0x0000079b: 03 DW_LNS_advance_line (119) +0x0000079d: 05 DW_LNS_set_column (10) +0x0000079f: 01 DW_LNS_copy + 0x00000000000004a3 119 10 1 0 0 is_stmt + + +0x000007a0: 00 DW_LNE_set_address (0x00000000000004a5) +0x000007a7: 05 DW_LNS_set_column (18) +0x000007a9: 06 DW_LNS_negate_stmt +0x000007aa: 01 DW_LNS_copy + 0x00000000000004a5 119 18 1 0 0 + + +0x000007ab: 00 DW_LNE_set_address (0x00000000000004ae) +0x000007b2: 05 DW_LNS_set_column (10) +0x000007b4: 01 DW_LNS_copy + 0x00000000000004ae 119 10 1 0 0 + + +0x000007b5: 00 DW_LNE_set_address (0x00000000000004b0) +0x000007bc: 05 DW_LNS_set_column (23) +0x000007be: 01 DW_LNS_copy + 0x00000000000004b0 119 23 1 0 0 + + +0x000007bf: 00 DW_LNE_set_address (0x00000000000004b5) +0x000007c6: 03 DW_LNS_advance_line (118) +0x000007c8: 05 DW_LNS_set_column (16) +0x000007ca: 06 DW_LNS_negate_stmt +0x000007cb: 01 DW_LNS_copy + 0x00000000000004b5 118 16 1 0 0 is_stmt + + +0x000007cc: 00 DW_LNE_set_address (0x00000000000004c0) +0x000007d3: 05 DW_LNS_set_column (7) +0x000007d5: 06 DW_LNS_negate_stmt +0x000007d6: 01 DW_LNS_copy + 0x00000000000004c0 118 7 1 0 0 + + +0x000007d7: 00 DW_LNE_set_address (0x00000000000004c6) +0x000007de: 03 DW_LNS_advance_line (122) +0x000007e0: 05 DW_LNS_set_column (16) +0x000007e2: 06 DW_LNS_negate_stmt +0x000007e3: 01 DW_LNS_copy + 0x00000000000004c6 122 16 1 0 0 is_stmt + + +0x000007e4: 00 DW_LNE_set_address (0x00000000000004da) +0x000007eb: 03 DW_LNS_advance_line (125) +0x000007ed: 05 DW_LNS_set_column (22) +0x000007ef: 01 DW_LNS_copy + 0x00000000000004da 125 22 1 0 0 is_stmt + + +0x000007f0: 00 DW_LNE_set_address (0x00000000000004e1) +0x000007f7: 03 DW_LNS_advance_line (126) +0x000007f9: 05 DW_LNS_set_column (27) +0x000007fb: 01 DW_LNS_copy + 0x00000000000004e1 126 27 1 0 0 is_stmt + + +0x000007fc: 00 DW_LNE_set_address (0x00000000000004ea) +0x00000803: 03 DW_LNS_advance_line (127) +0x00000805: 05 DW_LNS_set_column (16) +0x00000807: 01 DW_LNS_copy + 0x00000000000004ea 127 16 1 0 0 is_stmt + + +0x00000808: 00 DW_LNE_set_address (0x00000000000004f2) +0x0000080f: 05 DW_LNS_set_column (27) +0x00000811: 06 DW_LNS_negate_stmt +0x00000812: 01 DW_LNS_copy + 0x00000000000004f2 127 27 1 0 0 + + +0x00000813: 00 DW_LNE_set_address (0x00000000000004f4) +0x0000081a: 05 DW_LNS_set_column (35) +0x0000081c: 01 DW_LNS_copy + 0x00000000000004f4 127 35 1 0 0 + + +0x0000081d: 00 DW_LNE_set_address (0x00000000000004fd) +0x00000824: 05 DW_LNS_set_column (27) +0x00000826: 01 DW_LNS_copy + 0x00000000000004fd 127 27 1 0 0 + + +0x00000827: 00 DW_LNE_set_address (0x0000000000000502) +0x0000082e: 05 DW_LNS_set_column (25) +0x00000830: 01 DW_LNS_copy + 0x0000000000000502 127 25 1 0 0 + + +0x00000831: 00 DW_LNE_set_address (0x0000000000000505) +0x00000838: 03 DW_LNS_advance_line (126) +0x0000083a: 05 DW_LNS_set_column (27) +0x0000083c: 06 DW_LNS_negate_stmt +0x0000083d: 01 DW_LNS_copy + 0x0000000000000505 126 27 1 0 0 is_stmt + + +0x0000083e: 00 DW_LNE_set_address (0x000000000000050a) +0x00000845: 05 DW_LNS_set_column (13) +0x00000847: 06 DW_LNS_negate_stmt +0x00000848: 01 DW_LNS_copy + 0x000000000000050a 126 13 1 0 0 + + +0x00000849: 00 DW_LNE_set_address (0x0000000000000512) +0x00000850: 03 DW_LNS_advance_line (128) +0x00000852: 06 DW_LNS_negate_stmt +0x00000853: 01 DW_LNS_copy + 0x0000000000000512 128 13 1 0 0 is_stmt + + +0x00000854: 00 DW_LNE_set_address (0x000000000000051a) +0x0000085b: 05 DW_LNS_set_column (22) +0x0000085d: 06 DW_LNS_negate_stmt +0x0000085e: 01 DW_LNS_copy + 0x000000000000051a 128 22 1 0 0 + + +0x0000085f: 00 DW_LNE_set_address (0x000000000000051f) +0x00000866: 03 DW_LNS_advance_line (130) +0x00000868: 05 DW_LNS_set_column (16) +0x0000086a: 06 DW_LNS_negate_stmt +0x0000086b: 01 DW_LNS_copy + 0x000000000000051f 130 16 1 0 0 is_stmt + + +0x0000086c: 00 DW_LNE_set_address (0x0000000000000527) +0x00000873: 05 DW_LNS_set_column (14) +0x00000875: 06 DW_LNS_negate_stmt +0x00000876: 01 DW_LNS_copy + 0x0000000000000527 130 14 1 0 0 + + +0x00000877: 00 DW_LNE_set_address (0x0000000000000536) +0x0000087e: 05 DW_LNS_set_column (25) +0x00000880: 01 DW_LNS_copy + 0x0000000000000536 130 25 1 0 0 + + +0x00000881: 00 DW_LNE_set_address (0x000000000000053d) +0x00000888: 03 DW_LNS_advance_line (133) +0x0000088a: 05 DW_LNS_set_column (11) +0x0000088c: 06 DW_LNS_negate_stmt +0x0000088d: 01 DW_LNS_copy + 0x000000000000053d 133 11 1 0 0 is_stmt + + +0x0000088e: 00 DW_LNE_set_address (0x0000000000000542) +0x00000895: 03 DW_LNS_advance_line (122) +0x00000897: 05 DW_LNS_set_column (16) +0x00000899: 01 DW_LNS_copy + 0x0000000000000542 122 16 1 0 0 is_stmt + + +0x0000089a: 00 DW_LNE_set_address (0x0000000000000547) +0x000008a1: 05 DW_LNS_set_column (14) +0x000008a3: 06 DW_LNS_negate_stmt +0x000008a4: 01 DW_LNS_copy + 0x0000000000000547 122 14 1 0 0 + + +0x000008a5: 00 DW_LNE_set_address (0x000000000000054d) +0x000008ac: 03 DW_LNS_advance_line (110) +0x000008ae: 05 DW_LNS_set_column (11) +0x000008b0: 06 DW_LNS_negate_stmt +0x000008b1: 01 DW_LNS_copy + 0x000000000000054d 110 11 1 0 0 is_stmt + + +0x000008b2: 00 DW_LNE_set_address (0x0000000000000559) +0x000008b9: 03 DW_LNS_advance_line (113) +0x000008bb: 05 DW_LNS_set_column (10) +0x000008bd: 01 DW_LNS_copy + 0x0000000000000559 113 10 1 0 0 is_stmt + + +0x000008be: 00 DW_LNE_set_address (0x000000000000055c) +0x000008c5: 03 DW_LNS_advance_line (118) +0x000008c7: 05 DW_LNS_set_column (16) +0x000008c9: 01 DW_LNS_copy + 0x000000000000055c 118 16 1 0 0 is_stmt + + +0x000008ca: 00 DW_LNE_set_address (0x0000000000000565) +0x000008d1: 03 DW_LNS_advance_line (119) +0x000008d3: 05 DW_LNS_set_column (10) +0x000008d5: 01 DW_LNS_copy + 0x0000000000000565 119 10 1 0 0 is_stmt + + +0x000008d6: 00 DW_LNE_set_address (0x0000000000000567) +0x000008dd: 05 DW_LNS_set_column (18) +0x000008df: 06 DW_LNS_negate_stmt +0x000008e0: 01 DW_LNS_copy + 0x0000000000000567 119 18 1 0 0 + + +0x000008e1: 00 DW_LNE_set_address (0x0000000000000570) +0x000008e8: 05 DW_LNS_set_column (10) +0x000008ea: 01 DW_LNS_copy + 0x0000000000000570 119 10 1 0 0 + + +0x000008eb: 00 DW_LNE_set_address (0x0000000000000572) +0x000008f2: 05 DW_LNS_set_column (23) +0x000008f4: 01 DW_LNS_copy + 0x0000000000000572 119 23 1 0 0 + + +0x000008f5: 00 DW_LNE_set_address (0x0000000000000577) +0x000008fc: 03 DW_LNS_advance_line (118) +0x000008fe: 05 DW_LNS_set_column (16) +0x00000900: 06 DW_LNS_negate_stmt +0x00000901: 01 DW_LNS_copy + 0x0000000000000577 118 16 1 0 0 is_stmt + + +0x00000902: 00 DW_LNE_set_address (0x0000000000000582) +0x00000909: 05 DW_LNS_set_column (7) +0x0000090b: 06 DW_LNS_negate_stmt +0x0000090c: 01 DW_LNS_copy + 0x0000000000000582 118 7 1 0 0 + + +0x0000090d: 00 DW_LNE_set_address (0x0000000000000588) +0x00000914: 03 DW_LNS_advance_line (122) +0x00000916: 05 DW_LNS_set_column (16) +0x00000918: 06 DW_LNS_negate_stmt +0x00000919: 01 DW_LNS_copy + 0x0000000000000588 122 16 1 0 0 is_stmt + + +0x0000091a: 00 DW_LNE_set_address (0x000000000000058d) +0x00000921: 05 DW_LNS_set_column (14) +0x00000923: 06 DW_LNS_negate_stmt +0x00000924: 01 DW_LNS_copy + 0x000000000000058d 122 14 1 0 0 + + +0x00000925: 00 DW_LNE_set_address (0x0000000000000596) +0x0000092c: 03 DW_LNS_advance_line (125) +0x0000092e: 05 DW_LNS_set_column (22) +0x00000930: 06 DW_LNS_negate_stmt +0x00000931: 01 DW_LNS_copy + 0x0000000000000596 125 22 1 0 0 is_stmt + + +0x00000932: 00 DW_LNE_set_address (0x00000000000005a3) +0x00000939: 03 DW_LNS_advance_line (126) +0x0000093b: 05 DW_LNS_set_column (27) +0x0000093d: 01 DW_LNS_copy + 0x00000000000005a3 126 27 1 0 0 is_stmt + + +0x0000093e: 00 DW_LNE_set_address (0x00000000000005ac) +0x00000945: 03 DW_LNS_advance_line (127) +0x00000947: 05 DW_LNS_set_column (16) +0x00000949: 01 DW_LNS_copy + 0x00000000000005ac 127 16 1 0 0 is_stmt + + +0x0000094a: 00 DW_LNE_set_address (0x00000000000005b4) +0x00000951: 05 DW_LNS_set_column (27) +0x00000953: 06 DW_LNS_negate_stmt +0x00000954: 01 DW_LNS_copy + 0x00000000000005b4 127 27 1 0 0 + + +0x00000955: 00 DW_LNE_set_address (0x00000000000005b6) +0x0000095c: 05 DW_LNS_set_column (35) +0x0000095e: 01 DW_LNS_copy + 0x00000000000005b6 127 35 1 0 0 + + +0x0000095f: 00 DW_LNE_set_address (0x00000000000005bf) +0x00000966: 05 DW_LNS_set_column (27) +0x00000968: 01 DW_LNS_copy + 0x00000000000005bf 127 27 1 0 0 + + +0x00000969: 00 DW_LNE_set_address (0x00000000000005c4) +0x00000970: 05 DW_LNS_set_column (25) +0x00000972: 01 DW_LNS_copy + 0x00000000000005c4 127 25 1 0 0 + + +0x00000973: 00 DW_LNE_set_address (0x00000000000005c7) +0x0000097a: 03 DW_LNS_advance_line (126) +0x0000097c: 05 DW_LNS_set_column (27) +0x0000097e: 06 DW_LNS_negate_stmt +0x0000097f: 01 DW_LNS_copy + 0x00000000000005c7 126 27 1 0 0 is_stmt + + +0x00000980: 00 DW_LNE_set_address (0x00000000000005cc) +0x00000987: 05 DW_LNS_set_column (13) +0x00000989: 06 DW_LNS_negate_stmt +0x0000098a: 01 DW_LNS_copy + 0x00000000000005cc 126 13 1 0 0 + + +0x0000098b: 00 DW_LNE_set_address (0x00000000000005d4) +0x00000992: 03 DW_LNS_advance_line (128) +0x00000994: 06 DW_LNS_negate_stmt +0x00000995: 01 DW_LNS_copy + 0x00000000000005d4 128 13 1 0 0 is_stmt + + +0x00000996: 00 DW_LNE_set_address (0x00000000000005dc) +0x0000099d: 05 DW_LNS_set_column (22) +0x0000099f: 06 DW_LNS_negate_stmt +0x000009a0: 01 DW_LNS_copy + 0x00000000000005dc 128 22 1 0 0 + + +0x000009a1: 00 DW_LNE_set_address (0x00000000000005e1) +0x000009a8: 03 DW_LNS_advance_line (130) +0x000009aa: 05 DW_LNS_set_column (16) +0x000009ac: 06 DW_LNS_negate_stmt +0x000009ad: 01 DW_LNS_copy + 0x00000000000005e1 130 16 1 0 0 is_stmt + + +0x000009ae: 00 DW_LNE_set_address (0x00000000000005e9) +0x000009b5: 05 DW_LNS_set_column (14) +0x000009b7: 06 DW_LNS_negate_stmt +0x000009b8: 01 DW_LNS_copy + 0x00000000000005e9 130 14 1 0 0 + + +0x000009b9: 00 DW_LNE_set_address (0x00000000000005f8) +0x000009c0: 05 DW_LNS_set_column (25) +0x000009c2: 01 DW_LNS_copy + 0x00000000000005f8 130 25 1 0 0 + + +0x000009c3: 00 DW_LNE_set_address (0x00000000000005ff) +0x000009ca: 03 DW_LNS_advance_line (133) +0x000009cc: 05 DW_LNS_set_column (11) +0x000009ce: 06 DW_LNS_negate_stmt +0x000009cf: 01 DW_LNS_copy + 0x00000000000005ff 133 11 1 0 0 is_stmt + + +0x000009d0: 00 DW_LNE_set_address (0x0000000000000604) +0x000009d7: 03 DW_LNS_advance_line (122) +0x000009d9: 05 DW_LNS_set_column (16) +0x000009db: 01 DW_LNS_copy + 0x0000000000000604 122 16 1 0 0 is_stmt + + +0x000009dc: 00 DW_LNE_set_address (0x0000000000000609) +0x000009e3: 05 DW_LNS_set_column (14) +0x000009e5: 06 DW_LNS_negate_stmt +0x000009e6: 01 DW_LNS_copy + 0x0000000000000609 122 14 1 0 0 + + +0x000009e7: 00 DW_LNE_set_address (0x000000000000060f) +0x000009ee: 03 DW_LNS_advance_line (110) +0x000009f0: 05 DW_LNS_set_column (11) +0x000009f2: 06 DW_LNS_negate_stmt +0x000009f3: 01 DW_LNS_copy + 0x000000000000060f 110 11 1 0 0 is_stmt + + +0x000009f4: 00 DW_LNE_set_address (0x0000000000000615) +0x000009fb: 03 DW_LNS_advance_line (138) +0x000009fd: 05 DW_LNS_set_column (4) +0x000009ff: 01 DW_LNS_copy + 0x0000000000000615 138 4 1 0 0 is_stmt + + +0x00000a00: 00 DW_LNE_set_address (0x0000000000000619) +0x00000a07: 03 DW_LNS_advance_line (139) +0x00000a09: 01 DW_LNS_copy + 0x0000000000000619 139 4 1 0 0 is_stmt + + +0x00000a0a: 00 DW_LNE_set_address (0x0000000000000629) +0x00000a11: 03 DW_LNS_advance_line (142) +0x00000a13: 05 DW_LNS_set_column (20) +0x00000a15: 01 DW_LNS_copy + 0x0000000000000629 142 20 1 0 0 is_stmt + + +0x00000a16: 00 DW_LNE_set_address (0x0000000000000631) +0x00000a1d: 03 DW_LNS_advance_line (146) +0x00000a1f: 01 DW_LNS_copy + 0x0000000000000631 146 20 1 0 0 is_stmt + + +0x00000a20: 00 DW_LNE_set_address (0x0000000000000638) +0x00000a27: 03 DW_LNS_advance_line (147) +0x00000a29: 05 DW_LNS_set_column (7) +0x00000a2b: 01 DW_LNS_copy + 0x0000000000000638 147 7 1 0 0 is_stmt + + +0x00000a2c: 00 DW_LNE_set_address (0x000000000000063c) +0x00000a33: 03 DW_LNS_advance_line (143) +0x00000a35: 05 DW_LNS_set_column (11) +0x00000a37: 01 DW_LNS_copy + 0x000000000000063c 143 11 1 0 0 is_stmt + + +0x00000a38: 00 DW_LNE_set_address (0x0000000000000640) +0x00000a3f: 05 DW_LNS_set_column (20) +0x00000a41: 06 DW_LNS_negate_stmt +0x00000a42: 01 DW_LNS_copy + 0x0000000000000640 143 20 1 0 0 + + +0x00000a43: 00 DW_LNE_set_address (0x0000000000000645) +0x00000a4a: 05 DW_LNS_set_column (11) +0x00000a4c: 01 DW_LNS_copy + 0x0000000000000645 143 11 1 0 0 + + +0x00000a4d: 00 DW_LNE_set_address (0x000000000000064c) +0x00000a54: 03 DW_LNS_advance_line (141) +0x00000a56: 05 DW_LNS_set_column (4) +0x00000a58: 06 DW_LNS_negate_stmt +0x00000a59: 01 DW_LNS_copy + 0x000000000000064c 141 4 1 0 0 is_stmt + + +0x00000a5a: 00 DW_LNE_set_address (0x0000000000000652) +0x00000a61: 03 DW_LNS_advance_line (159) +0x00000a63: 01 DW_LNS_copy + 0x0000000000000652 159 4 1 0 0 is_stmt + + +0x00000a64: 00 DW_LNE_set_address (0x0000000000000669) +0x00000a6b: 03 DW_LNS_advance_line (161) +0x00000a6d: 05 DW_LNS_set_column (1) +0x00000a6f: 01 DW_LNS_copy + 0x0000000000000669 161 1 1 0 0 is_stmt + + +0x00000a70: 00 DW_LNE_set_address (0x0000000000000673) +0x00000a77: 00 DW_LNE_end_sequence + 0x0000000000000673 161 1 1 0 0 is_stmt end_sequence + + +.debug_str contents: +0x00000000: "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)" +0x00000069: "/usr/local/google/home/azakai/Dev/emscripten/tests/fannkuch.cpp" +0x000000a9: "/usr/local/google/home/azakai/Dev/2-binaryen" +0x000000d6: "i" +0x000000d8: "int" +0x000000dc: "n" +0x000000de: "next" +0x000000e3: "worker_args" +0x000000ef: "std" +0x000000f3: "decltype(nullptr)" +0x00000105: "nullptr_t" +0x0000010f: "free" +0x00000114: "_ZL8fannkuchi" +0x00000122: "fannkuch" +0x0000012b: "showmax" +0x00000133: "args" +0x00000138: "targs" +0x0000013e: "perm1" +0x00000144: "count" +0x0000014a: "r" +0x0000014c: "maxflips" +0x00000155: "flips" +0x0000015b: "cleanup" +0x00000163: "p0" +0x00000166: "_Z15fannkuch_workerPv" +0x0000017c: "fannkuch_worker" +0x0000018c: "main" +0x00000191: "_arg" +0x00000196: "perm" +0x0000019b: "k" +0x0000019d: "j" +0x0000019f: "tmp" +0x000001a3: "argc" +0x000001a8: "argv" +0x000001ad: "char" + +.debug_ranges contents: +00000000 00000184 000001c2 +00000000 000001ec 000001f5 +00000000 00000305 00000343 +00000000 0000036d 00000376 +00000000 +00000028 000004da 0000051f +00000028 00000596 000005e1 +00000028 +00000040 00000007 0000038a +00000040 0000038c 00000673 +00000040 +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (import "env" "memory" (memory $mimport$0 256 256)) + (data (i32.const 1024) "Pfannkuchen(%d) = %d.\n\00%d\00Wrong argument.\00") + (import "env" "malloc" (func $malloc (param i32) (result i32))) + (import "env" "memcpy" (func $memcpy (param i32 i32 i32) (result i32))) + (import "env" "free" (func $free (param i32))) + (import "env" "atoi" (func $atoi (param i32) (result i32))) + (import "env" "puts" (func $puts (param i32) (result i32))) + (import "env" "iprintf" (func $iprintf (param i32 i32) (result i32))) + (import "env" "putchar" (func $putchar (param i32) (result i32))) + (global $global$0 (mut i32) (i32.const 5243952)) + (global $global$1 i32 (i32.const 1066)) + (export "__wasm_call_ctors" (func $__wasm_call_ctors)) + (export "main" (func $main)) + (export "__data_end" (global $global$1)) + (func $__wasm_call_ctors + ;; code offset: 0x3 + (nop) + ) + (func $fannkuch_worker\28void*\29 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + ;; code offset: 0x36 + (local.set $3 + ;; code offset: 0x34 + (call $malloc + ;; code offset: 0x32 + (local.tee $12 + ;; code offset: 0x31 + (i32.shl + ;; code offset: 0x2d + (local.tee $2 + ;; code offset: 0x2a + (i32.load offset=4 + ;; code offset: 0x28 + (local.get $0) + ) + ) + ;; code offset: 0x2f + (i32.const 2) + ) + ) + ) + ) + ;; code offset: 0x3c + (local.set $8 + ;; code offset: 0x3a + (call $malloc + ;; code offset: 0x38 + (local.get $12) + ) + ) + ;; code offset: 0x42 + (local.set $9 + ;; code offset: 0x40 + (call $malloc + ;; code offset: 0x3e + (local.get $12) + ) + ) + ;; code offset: 0x44 + (block $label$1 + (block $label$2 + ;; code offset: 0x4d + (if + ;; code offset: 0x4c + (i32.gt_s + ;; code offset: 0x48 + (local.get $2) + ;; code offset: 0x4a + (i32.const 0) + ) + (block + ;; code offset: 0x4f + (loop $label$4 + ;; code offset: 0x5b + (i32.store + ;; code offset: 0x58 + (i32.add + ;; code offset: 0x51 + (local.get $3) + ;; code offset: 0x57 + (i32.shl + ;; code offset: 0x53 + (local.get $1) + ;; code offset: 0x55 + (i32.const 2) + ) + ) + ;; code offset: 0x59 + (local.get $1) + ) + ;; code offset: 0x68 + (br_if $label$4 + ;; code offset: 0x67 + (i32.ne + ;; code offset: 0x63 + (local.tee $1 + ;; code offset: 0x62 + (i32.add + ;; code offset: 0x5e + (local.get $1) + ;; code offset: 0x60 + (i32.const 1) + ) + ) + ;; code offset: 0x65 + (local.get $2) + ) + ) + ) + ;; code offset: 0x7f + (i32.store + ;; code offset: 0x77 + (i32.add + ;; code offset: 0x6b + (local.get $3) + ;; code offset: 0x76 + (i32.shl + ;; code offset: 0x72 + (local.tee $1 + ;; code offset: 0x6f + (i32.load + ;; code offset: 0x6d + (local.get $0) + ) + ) + ;; code offset: 0x74 + (i32.const 2) + ) + ) + ;; code offset: 0x7d + (local.tee $4 + ;; code offset: 0x7c + (i32.sub + ;; code offset: 0x78 + (local.get $2) + ;; code offset: 0x7a + (i32.const 1) + ) + ) + ) + ;; code offset: 0x8e + (i32.store + ;; code offset: 0x8a + (local.tee $13 + ;; code offset: 0x89 + (i32.add + ;; code offset: 0x82 + (local.get $3) + ;; code offset: 0x88 + (i32.shl + ;; code offset: 0x84 + (local.get $4) + ;; code offset: 0x86 + (i32.const 2) + ) + ) + ) + ;; code offset: 0x8c + (local.get $1) + ) + ;; code offset: 0x96 + (br_if $label$2 + ;; code offset: 0x95 + (i32.le_s + ;; code offset: 0x91 + (local.get $2) + ;; code offset: 0x93 + (i32.const 0) + ) + ) + ;; code offset: 0x98 + (loop $label$5 + ;; code offset: 0x9f + (if + ;; code offset: 0x9e + (i32.gt_s + ;; code offset: 0x9a + (local.get $2) + ;; code offset: 0x9c + (i32.const 1) + ) + ;; code offset: 0xa1 + (loop $label$7 + ;; code offset: 0xb2 + (i32.store + ;; code offset: 0xaf + (i32.add + ;; code offset: 0xa3 + (local.get $9) + ;; code offset: 0xae + (i32.shl + ;; code offset: 0xaa + (local.tee $1 + ;; code offset: 0xa9 + (i32.sub + ;; code offset: 0xa5 + (local.get $2) + ;; code offset: 0xa7 + (i32.const 1) + ) + ) + ;; code offset: 0xac + (i32.const 2) + ) + ) + ;; code offset: 0xb0 + (local.get $2) + ) + ;; code offset: 0xba + (local.set $0 + ;; code offset: 0xb9 + (i32.gt_s + ;; code offset: 0xb5 + (local.get $2) + ;; code offset: 0xb7 + (i32.const 2) + ) + ) + ;; code offset: 0xbe + (local.set $2 + ;; code offset: 0xbc + (local.get $1) + ) + ;; code offset: 0xc2 + (br_if $label$7 + ;; code offset: 0xc0 + (local.get $0) + ) + ) + ) + ;; code offset: 0xc6 + (block $label$8 + ;; code offset: 0xd0 + (br_if $label$8 + ;; code offset: 0xcf + (i32.eqz + ;; code offset: 0xcd + (local.tee $10 + ;; code offset: 0xca + (i32.load + ;; code offset: 0xc8 + (local.get $3) + ) + ) + ) + ) + ;; code offset: 0xda + (br_if $label$8 + ;; code offset: 0xd9 + (i32.eq + ;; code offset: 0xd4 + (i32.load + ;; code offset: 0xd2 + (local.get $13) + ) + ;; code offset: 0xd7 + (local.get $4) + ) + ) + ;; code offset: 0xe9 + (local.set $6 + ;; code offset: 0xe6 + (i32.load + ;; code offset: 0xe4 + (local.tee $11 + ;; code offset: 0xe2 + (call $memcpy + ;; code offset: 0xdc + (local.get $8) + ;; code offset: 0xde + (local.get $3) + ;; code offset: 0xe0 + (local.get $12) + ) + ) + ) + ) + ;; code offset: 0xed + (local.set $0 + ;; code offset: 0xeb + (i32.const 0) + ) + ;; code offset: 0xef + (loop $label$9 + ;; code offset: 0xf3 + (local.set $16 + ;; code offset: 0xf1 + (local.get $0) + ) + ;; code offset: 0xfa + (if + ;; code offset: 0xf9 + (i32.ge_s + ;; code offset: 0xf5 + (local.get $6) + ;; code offset: 0xf7 + (i32.const 3) + ) + (block + ;; code offset: 0x101 + (local.set $1 + ;; code offset: 0x100 + (i32.sub + ;; code offset: 0xfc + (local.get $6) + ;; code offset: 0xfe + (i32.const 1) + ) + ) + ;; code offset: 0x105 + (local.set $0 + ;; code offset: 0x103 + (i32.const 1) + ) + ;; code offset: 0x107 + (loop $label$11 + ;; code offset: 0x116 + (local.set $15 + ;; code offset: 0x113 + (i32.load + ;; code offset: 0x111 + (local.tee $14 + ;; code offset: 0x110 + (i32.add + ;; code offset: 0x109 + (local.get $11) + ;; code offset: 0x10f + (i32.shl + ;; code offset: 0x10b + (local.get $0) + ;; code offset: 0x10d + (i32.const 2) + ) + ) + ) + ) + ) + ;; code offset: 0x127 + (i32.store + ;; code offset: 0x118 + (local.get $14) + ;; code offset: 0x124 + (i32.load + ;; code offset: 0x122 + (local.tee $7 + ;; code offset: 0x121 + (i32.add + ;; code offset: 0x11a + (local.get $11) + ;; code offset: 0x120 + (i32.shl + ;; code offset: 0x11c + (local.get $1) + ;; code offset: 0x11e + (i32.const 2) + ) + ) + ) + ) + ) + ;; code offset: 0x12e + (i32.store + ;; code offset: 0x12a + (local.get $7) + ;; code offset: 0x12c + (local.get $15) + ) + ;; code offset: 0x140 + (br_if $label$11 + ;; code offset: 0x13f + (i32.lt_s + ;; code offset: 0x136 + (local.tee $0 + ;; code offset: 0x135 + (i32.add + ;; code offset: 0x131 + (local.get $0) + ;; code offset: 0x133 + (i32.const 1) + ) + ) + ;; code offset: 0x13d + (local.tee $1 + ;; code offset: 0x13c + (i32.sub + ;; code offset: 0x138 + (local.get $1) + ;; code offset: 0x13a + (i32.const 1) + ) + ) + ) + ) + ) + ) + ) + ;; code offset: 0x151 + (local.set $1 + ;; code offset: 0x14e + (i32.load + ;; code offset: 0x14c + (local.tee $0 + ;; code offset: 0x14b + (i32.add + ;; code offset: 0x144 + (local.get $11) + ;; code offset: 0x14a + (i32.shl + ;; code offset: 0x146 + (local.get $6) + ;; code offset: 0x148 + (i32.const 2) + ) + ) + ) + ) + ) + ;; code offset: 0x157 + (i32.store + ;; code offset: 0x153 + (local.get $0) + ;; code offset: 0x155 + (local.get $6) + ) + ;; code offset: 0x15f + (local.set $0 + ;; code offset: 0x15e + (i32.add + ;; code offset: 0x15a + (local.get $16) + ;; code offset: 0x15c + (i32.const 1) + ) + ) + ;; code offset: 0x163 + (local.set $6 + ;; code offset: 0x161 + (local.get $1) + ) + ;; code offset: 0x167 + (br_if $label$9 + ;; code offset: 0x165 + (local.get $1) + ) + ) + ;; code offset: 0x174 + (local.set $5 + ;; code offset: 0x173 + (select + ;; code offset: 0x16a + (local.get $5) + ;; code offset: 0x16c + (local.get $0) + ;; code offset: 0x172 + (i32.gt_s + ;; code offset: 0x16e + (local.get $5) + ;; code offset: 0x170 + (local.get $16) + ) + ) + ) + ) + ;; code offset: 0x17c + (br_if $label$1 + ;; code offset: 0x17b + (i32.ge_s + ;; code offset: 0x177 + (local.get $2) + ;; code offset: 0x179 + (local.get $4) + ) + ) + ;; code offset: 0x17e + (loop $label$12 + ;; code offset: 0x182 + (local.set $1 + ;; code offset: 0x180 + (i32.const 0) + ) + ;; code offset: 0x189 + (if + ;; code offset: 0x188 + (i32.gt_s + ;; code offset: 0x184 + (local.get $2) + ;; code offset: 0x186 + (i32.const 0) + ) + (block + ;; code offset: 0x18b + (loop $label$14 + ;; code offset: 0x1a5 + (i32.store + ;; code offset: 0x194 + (i32.add + ;; code offset: 0x18d + (local.get $3) + ;; code offset: 0x193 + (i32.shl + ;; code offset: 0x18f + (local.get $1) + ;; code offset: 0x191 + (i32.const 2) + ) + ) + ;; code offset: 0x1a2 + (i32.load + ;; code offset: 0x1a1 + (i32.add + ;; code offset: 0x195 + (local.get $3) + ;; code offset: 0x1a0 + (i32.shl + ;; code offset: 0x19c + (local.tee $1 + ;; code offset: 0x19b + (i32.add + ;; code offset: 0x197 + (local.get $1) + ;; code offset: 0x199 + (i32.const 1) + ) + ) + ;; code offset: 0x19e + (i32.const 2) + ) + ) + ) + ) + ;; code offset: 0x1ad + (br_if $label$14 + ;; code offset: 0x1ac + (i32.ne + ;; code offset: 0x1a8 + (local.get $1) + ;; code offset: 0x1aa + (local.get $2) + ) + ) + ) + ;; code offset: 0x1b2 + (local.set $1 + ;; code offset: 0x1b0 + (local.get $2) + ) + ) + ) + ;; code offset: 0x1bf + (i32.store + ;; code offset: 0x1bc + (i32.add + ;; code offset: 0x1b5 + (local.get $3) + ;; code offset: 0x1bb + (i32.shl + ;; code offset: 0x1b7 + (local.get $1) + ;; code offset: 0x1b9 + (i32.const 2) + ) + ) + ;; code offset: 0x1bd + (local.get $10) + ) + ;; code offset: 0x1d6 + (i32.store + ;; code offset: 0x1ca + (local.tee $1 + ;; code offset: 0x1c9 + (i32.add + ;; code offset: 0x1c2 + (local.get $9) + ;; code offset: 0x1c8 + (i32.shl + ;; code offset: 0x1c4 + (local.get $2) + ;; code offset: 0x1c6 + (i32.const 2) + ) + ) + ) + ;; code offset: 0x1d5 + (i32.sub + ;; code offset: 0x1d1 + (local.tee $1 + ;; code offset: 0x1ce + (i32.load + ;; code offset: 0x1cc + (local.get $1) + ) + ) + ;; code offset: 0x1d3 + (i32.const 1) + ) + ) + ;; code offset: 0x1de + (br_if $label$5 + ;; code offset: 0x1dd + (i32.gt_s + ;; code offset: 0x1d9 + (local.get $1) + ;; code offset: 0x1db + (i32.const 1) + ) + ) + ;; code offset: 0x1ea + (br_if $label$1 + ;; code offset: 0x1e9 + (i32.eq + ;; code offset: 0x1e5 + (local.tee $2 + ;; code offset: 0x1e4 + (i32.add + ;; code offset: 0x1e0 + (local.get $2) + ;; code offset: 0x1e2 + (i32.const 1) + ) + ) + ;; code offset: 0x1e7 + (local.get $4) + ) + ) + ;; code offset: 0x1f1 + (local.set $10 + ;; code offset: 0x1ee + (i32.load + ;; code offset: 0x1ec + (local.get $3) + ) + ) + ;; code offset: 0x1f3 + (br $label$12) + ) + ) + ) + ) + ;; code offset: 0x20e + (i32.store + ;; code offset: 0x206 + (i32.add + ;; code offset: 0x1fa + (local.get $3) + ;; code offset: 0x205 + (i32.shl + ;; code offset: 0x201 + (local.tee $1 + ;; code offset: 0x1fe + (i32.load + ;; code offset: 0x1fc + (local.get $0) + ) + ) + ;; code offset: 0x203 + (i32.const 2) + ) + ) + ;; code offset: 0x20c + (local.tee $4 + ;; code offset: 0x20b + (i32.sub + ;; code offset: 0x207 + (local.get $2) + ;; code offset: 0x209 + (i32.const 1) + ) + ) + ) + ;; code offset: 0x21d + (i32.store + ;; code offset: 0x219 + (local.tee $13 + ;; code offset: 0x218 + (i32.add + ;; code offset: 0x211 + (local.get $3) + ;; code offset: 0x217 + (i32.shl + ;; code offset: 0x213 + (local.get $4) + ;; code offset: 0x215 + (i32.const 2) + ) + ) + ) + ;; code offset: 0x21b + (local.get $1) + ) + ) + ;; code offset: 0x221 + (loop $label$15 + ;; code offset: 0x228 + (if + ;; code offset: 0x227 + (i32.ge_s + ;; code offset: 0x223 + (local.get $2) + ;; code offset: 0x225 + (i32.const 2) + ) + ;; code offset: 0x22a + (loop $label$17 + ;; code offset: 0x23b + (i32.store + ;; code offset: 0x238 + (i32.add + ;; code offset: 0x22c + (local.get $9) + ;; code offset: 0x237 + (i32.shl + ;; code offset: 0x233 + (local.tee $1 + ;; code offset: 0x232 + (i32.sub + ;; code offset: 0x22e + (local.get $2) + ;; code offset: 0x230 + (i32.const 1) + ) + ) + ;; code offset: 0x235 + (i32.const 2) + ) + ) + ;; code offset: 0x239 + (local.get $2) + ) + ;; code offset: 0x243 + (local.set $0 + ;; code offset: 0x242 + (i32.gt_s + ;; code offset: 0x23e + (local.get $2) + ;; code offset: 0x240 + (i32.const 2) + ) + ) + ;; code offset: 0x247 + (local.set $2 + ;; code offset: 0x245 + (local.get $1) + ) + ;; code offset: 0x24b + (br_if $label$17 + ;; code offset: 0x249 + (local.get $0) + ) + ) + ) + ;; code offset: 0x24f + (block $label$18 + ;; code offset: 0x259 + (br_if $label$18 + ;; code offset: 0x258 + (i32.eqz + ;; code offset: 0x256 + (local.tee $6 + ;; code offset: 0x253 + (i32.load + ;; code offset: 0x251 + (local.get $3) + ) + ) + ) + ) + ;; code offset: 0x263 + (br_if $label$18 + ;; code offset: 0x262 + (i32.eq + ;; code offset: 0x25d + (i32.load + ;; code offset: 0x25b + (local.get $13) + ) + ;; code offset: 0x260 + (local.get $4) + ) + ) + ;; code offset: 0x26a + (local.set $7 + ;; code offset: 0x267 + (i32.load + ;; code offset: 0x265 + (local.get $8) + ) + ) + ;; code offset: 0x26e + (local.set $0 + ;; code offset: 0x26c + (i32.const 0) + ) + ;; code offset: 0x270 + (loop $label$19 + ;; code offset: 0x274 + (local.set $10 + ;; code offset: 0x272 + (local.get $0) + ) + ;; code offset: 0x27b + (if + ;; code offset: 0x27a + (i32.ge_s + ;; code offset: 0x276 + (local.get $7) + ;; code offset: 0x278 + (i32.const 3) + ) + (block + ;; code offset: 0x282 + (local.set $1 + ;; code offset: 0x281 + (i32.sub + ;; code offset: 0x27d + (local.get $7) + ;; code offset: 0x27f + (i32.const 1) + ) + ) + ;; code offset: 0x286 + (local.set $0 + ;; code offset: 0x284 + (i32.const 1) + ) + ;; code offset: 0x288 + (loop $label$21 + ;; code offset: 0x297 + (local.set $14 + ;; code offset: 0x294 + (i32.load + ;; code offset: 0x292 + (local.tee $11 + ;; code offset: 0x291 + (i32.add + ;; code offset: 0x28a + (local.get $8) + ;; code offset: 0x290 + (i32.shl + ;; code offset: 0x28c + (local.get $0) + ;; code offset: 0x28e + (i32.const 2) + ) + ) + ) + ) + ) + ;; code offset: 0x2a8 + (i32.store + ;; code offset: 0x299 + (local.get $11) + ;; code offset: 0x2a5 + (i32.load + ;; code offset: 0x2a3 + (local.tee $15 + ;; code offset: 0x2a2 + (i32.add + ;; code offset: 0x29b + (local.get $8) + ;; code offset: 0x2a1 + (i32.shl + ;; code offset: 0x29d + (local.get $1) + ;; code offset: 0x29f + (i32.const 2) + ) + ) + ) + ) + ) + ;; code offset: 0x2af + (i32.store + ;; code offset: 0x2ab + (local.get $15) + ;; code offset: 0x2ad + (local.get $14) + ) + ;; code offset: 0x2c1 + (br_if $label$21 + ;; code offset: 0x2c0 + (i32.lt_s + ;; code offset: 0x2b7 + (local.tee $0 + ;; code offset: 0x2b6 + (i32.add + ;; code offset: 0x2b2 + (local.get $0) + ;; code offset: 0x2b4 + (i32.const 1) + ) + ) + ;; code offset: 0x2be + (local.tee $1 + ;; code offset: 0x2bd + (i32.sub + ;; code offset: 0x2b9 + (local.get $1) + ;; code offset: 0x2bb + (i32.const 1) + ) + ) + ) + ) + ) + ) + ) + ;; code offset: 0x2d2 + (local.set $1 + ;; code offset: 0x2cf + (i32.load + ;; code offset: 0x2cd + (local.tee $0 + ;; code offset: 0x2cc + (i32.add + ;; code offset: 0x2c5 + (local.get $8) + ;; code offset: 0x2cb + (i32.shl + ;; code offset: 0x2c7 + (local.get $7) + ;; code offset: 0x2c9 + (i32.const 2) + ) + ) + ) + ) + ) + ;; code offset: 0x2d8 + (i32.store + ;; code offset: 0x2d4 + (local.get $0) + ;; code offset: 0x2d6 + (local.get $7) + ) + ;; code offset: 0x2e0 + (local.set $0 + ;; code offset: 0x2df + (i32.add + ;; code offset: 0x2db + (local.get $10) + ;; code offset: 0x2dd + (i32.const 1) + ) + ) + ;; code offset: 0x2e4 + (local.set $7 + ;; code offset: 0x2e2 + (local.get $1) + ) + ;; code offset: 0x2e8 + (br_if $label$19 + ;; code offset: 0x2e6 + (local.get $1) + ) + ) + ;; code offset: 0x2f5 + (local.set $5 + ;; code offset: 0x2f4 + (select + ;; code offset: 0x2eb + (local.get $5) + ;; code offset: 0x2ed + (local.get $0) + ;; code offset: 0x2f3 + (i32.gt_s + ;; code offset: 0x2ef + (local.get $5) + ;; code offset: 0x2f1 + (local.get $10) + ) + ) + ) + ) + ;; code offset: 0x2fd + (br_if $label$1 + ;; code offset: 0x2fc + (i32.ge_s + ;; code offset: 0x2f8 + (local.get $2) + ;; code offset: 0x2fa + (local.get $4) + ) + ) + ;; code offset: 0x2ff + (loop $label$22 + ;; code offset: 0x303 + (local.set $1 + ;; code offset: 0x301 + (i32.const 0) + ) + ;; code offset: 0x30a + (if + ;; code offset: 0x309 + (i32.ge_s + ;; code offset: 0x305 + (local.get $2) + ;; code offset: 0x307 + (i32.const 1) + ) + (block + ;; code offset: 0x30c + (loop $label$24 + ;; code offset: 0x326 + (i32.store + ;; code offset: 0x315 + (i32.add + ;; code offset: 0x30e + (local.get $3) + ;; code offset: 0x314 + (i32.shl + ;; code offset: 0x310 + (local.get $1) + ;; code offset: 0x312 + (i32.const 2) + ) + ) + ;; code offset: 0x323 + (i32.load + ;; code offset: 0x322 + (i32.add + ;; code offset: 0x316 + (local.get $3) + ;; code offset: 0x321 + (i32.shl + ;; code offset: 0x31d + (local.tee $1 + ;; code offset: 0x31c + (i32.add + ;; code offset: 0x318 + (local.get $1) + ;; code offset: 0x31a + (i32.const 1) + ) + ) + ;; code offset: 0x31f + (i32.const 2) + ) + ) + ) + ) + ;; code offset: 0x32e + (br_if $label$24 + ;; code offset: 0x32d + (i32.ne + ;; code offset: 0x329 + (local.get $1) + ;; code offset: 0x32b + (local.get $2) + ) + ) + ) + ;; code offset: 0x333 + (local.set $1 + ;; code offset: 0x331 + (local.get $2) + ) + ) + ) + ;; code offset: 0x340 + (i32.store + ;; code offset: 0x33d + (i32.add + ;; code offset: 0x336 + (local.get $3) + ;; code offset: 0x33c + (i32.shl + ;; code offset: 0x338 + (local.get $1) + ;; code offset: 0x33a + (i32.const 2) + ) + ) + ;; code offset: 0x33e + (local.get $6) + ) + ;; code offset: 0x357 + (i32.store + ;; code offset: 0x34b + (local.tee $1 + ;; code offset: 0x34a + (i32.add + ;; code offset: 0x343 + (local.get $9) + ;; code offset: 0x349 + (i32.shl + ;; code offset: 0x345 + (local.get $2) + ;; code offset: 0x347 + (i32.const 2) + ) + ) + ) + ;; code offset: 0x356 + (i32.sub + ;; code offset: 0x352 + (local.tee $1 + ;; code offset: 0x34f + (i32.load + ;; code offset: 0x34d + (local.get $1) + ) + ) + ;; code offset: 0x354 + (i32.const 1) + ) + ) + ;; code offset: 0x35f + (br_if $label$15 + ;; code offset: 0x35e + (i32.gt_s + ;; code offset: 0x35a + (local.get $1) + ;; code offset: 0x35c + (i32.const 1) + ) + ) + ;; code offset: 0x36b + (br_if $label$1 + ;; code offset: 0x36a + (i32.eq + ;; code offset: 0x366 + (local.tee $2 + ;; code offset: 0x365 + (i32.add + ;; code offset: 0x361 + (local.get $2) + ;; code offset: 0x363 + (i32.const 1) + ) + ) + ;; code offset: 0x368 + (local.get $4) + ) + ) + ;; code offset: 0x372 + (local.set $6 + ;; code offset: 0x36f + (i32.load + ;; code offset: 0x36d + (local.get $3) + ) + ) + ;; code offset: 0x374 + (br $label$22) + ) + ) + ) + ;; code offset: 0x37d + (call $free + ;; code offset: 0x37b + (local.get $3) + ) + ;; code offset: 0x381 + (call $free + ;; code offset: 0x37f + (local.get $8) + ) + ;; code offset: 0x385 + (call $free + ;; code offset: 0x383 + (local.get $9) + ) + ;; code offset: 0x387 + (local.get $5) + ) + (func $main (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + ;; code offset: 0x3a2 + (global.set $global$0 + ;; code offset: 0x3a0 + (local.tee $8 + ;; code offset: 0x39f + (i32.sub + ;; code offset: 0x39b + (global.get $global$0) + ;; code offset: 0x39d + (i32.const 32) + ) + ) + ) + ;; code offset: 0x3a4 + (block $label$1 + (block $label$2 + ;; code offset: 0x3ad + (if + ;; code offset: 0x3ac + (i32.ge_s + ;; code offset: 0x3a8 + (local.get $0) + ;; code offset: 0x3aa + (i32.const 2) + ) + ;; code offset: 0x3bb + (br_if $label$2 + ;; code offset: 0x3ba + (i32.gt_s + ;; code offset: 0x3b6 + (local.tee $3 + ;; code offset: 0x3b4 + (call $atoi + ;; code offset: 0x3b1 + (i32.load offset=4 + ;; code offset: 0x3af + (local.get $1) + ) + ) + ) + ;; code offset: 0x3b8 + (i32.const 0) + ) + ) + ) + ;; code offset: 0x3c3 + (drop + ;; code offset: 0x3c1 + (call $puts + ;; code offset: 0x3be + (i32.const 1050) + ) + ) + ;; code offset: 0x3c6 + (local.set $5 + ;; code offset: 0x3c4 + (i32.const 1) + ) + ;; code offset: 0x3c8 + (br $label$1) + ) + ;; code offset: 0x3d0 + (if + ;; code offset: 0x3cf + (i32.ne + ;; code offset: 0x3cb + (local.get $3) + ;; code offset: 0x3cd + (i32.const 1) + ) + (block + ;; code offset: 0x3d7 + (local.set $2 + ;; code offset: 0x3d6 + (i32.sub + ;; code offset: 0x3d2 + (local.get $3) + ;; code offset: 0x3d4 + (i32.const 1) + ) + ) + ;; code offset: 0x3db + (local.set $1 + ;; code offset: 0x3d9 + (i32.const 0) + ) + ;; code offset: 0x3df + (local.set $0 + ;; code offset: 0x3dd + (i32.const 0) + ) + ;; code offset: 0x3e1 + (loop $label$5 + ;; code offset: 0x3eb + (i32.store offset=8 + ;; code offset: 0x3e7 + (local.tee $4 + ;; code offset: 0x3e5 + (call $malloc + ;; code offset: 0x3e3 + (i32.const 12) + ) + ) + ;; code offset: 0x3e9 + (local.get $1) + ) + ;; code offset: 0x3f2 + (i32.store offset=4 + ;; code offset: 0x3ee + (local.get $4) + ;; code offset: 0x3f0 + (local.get $3) + ) + ;; code offset: 0x3f9 + (i32.store + ;; code offset: 0x3f5 + (local.get $4) + ;; code offset: 0x3f7 + (local.get $0) + ) + ;; code offset: 0x3fe + (local.set $1 + ;; code offset: 0x3fc + (local.get $4) + ) + ;; code offset: 0x40a + (br_if $label$5 + ;; code offset: 0x409 + (i32.ne + ;; code offset: 0x405 + (local.tee $0 + ;; code offset: 0x404 + (i32.add + ;; code offset: 0x400 + (local.get $0) + ;; code offset: 0x402 + (i32.const 1) + ) + ) + ;; code offset: 0x407 + (local.get $2) + ) + ) + ) + ) + ) + ;; code offset: 0x410 + (local.set $0 + ;; code offset: 0x40e + (i32.const 0) + ) + ;; code offset: 0x41b + (local.set $1 + ;; code offset: 0x419 + (call $malloc + ;; code offset: 0x417 + (local.tee $2 + ;; code offset: 0x416 + (i32.shl + ;; code offset: 0x412 + (local.get $3) + ;; code offset: 0x414 + (i32.const 2) + ) + ) + ) + ) + ;; code offset: 0x421 + (local.set $5 + ;; code offset: 0x41f + (call $malloc + ;; code offset: 0x41d + (local.get $2) + ) + ) + ;; code offset: 0x423 + (block $label$6 + (block $label$7 + (block $label$8 + ;; code offset: 0x42e + (if + ;; code offset: 0x42d + (i32.gt_s + ;; code offset: 0x429 + (local.get $3) + ;; code offset: 0x42b + (i32.const 0) + ) + (block + ;; code offset: 0x430 + (loop $label$10 + ;; code offset: 0x43c + (i32.store + ;; code offset: 0x439 + (i32.add + ;; code offset: 0x432 + (local.get $1) + ;; code offset: 0x438 + (i32.shl + ;; code offset: 0x434 + (local.get $0) + ;; code offset: 0x436 + (i32.const 2) + ) + ) + ;; code offset: 0x43a + (local.get $0) + ) + ;; code offset: 0x449 + (br_if $label$10 + ;; code offset: 0x448 + (i32.ne + ;; code offset: 0x444 + (local.tee $0 + ;; code offset: 0x443 + (i32.add + ;; code offset: 0x43f + (local.get $0) + ;; code offset: 0x441 + (i32.const 1) + ) + ) + ;; code offset: 0x446 + (local.get $3) + ) + ) + ) + ;; code offset: 0x44e + (local.set $6 + ;; code offset: 0x44c + (i32.const 30) + ) + ;; code offset: 0x452 + (local.set $2 + ;; code offset: 0x450 + (local.get $3) + ) + ;; code offset: 0x454 + (br $label$8) + ) + ) + ;; code offset: 0x459 + (local.set $6 + ;; code offset: 0x457 + (i32.const 30) + ) + ;; code offset: 0x45d + (local.set $2 + ;; code offset: 0x45b + (local.get $3) + ) + ;; code offset: 0x45f + (br $label$7) + ) + ;; code offset: 0x462 + (loop $label$11 + ;; code offset: 0x466 + (local.set $0 + ;; code offset: 0x464 + (i32.const 0) + ) + ;; code offset: 0x468 + (loop $label$12 + ;; code offset: 0x47a + (i32.store offset=16 + ;; code offset: 0x46a + (local.get $8) + ;; code offset: 0x479 + (i32.add + ;; code offset: 0x474 + (i32.load + ;; code offset: 0x473 + (i32.add + ;; code offset: 0x46c + (local.get $1) + ;; code offset: 0x472 + (i32.shl + ;; code offset: 0x46e + (local.get $0) + ;; code offset: 0x470 + (i32.const 2) + ) + ) + ) + ;; code offset: 0x477 + (i32.const 1) + ) + ) + ;; code offset: 0x487 + (drop + ;; code offset: 0x485 + (call $iprintf + ;; code offset: 0x47d + (i32.const 1047) + ;; code offset: 0x484 + (i32.add + ;; code offset: 0x480 + (local.get $8) + ;; code offset: 0x482 + (i32.const 16) + ) + ) + ) + ;; code offset: 0x492 + (br_if $label$12 + ;; code offset: 0x491 + (i32.ne + ;; code offset: 0x48d + (local.tee $0 + ;; code offset: 0x48c + (i32.add + ;; code offset: 0x488 + (local.get $0) + ;; code offset: 0x48a + (i32.const 1) + ) + ) + ;; code offset: 0x48f + (local.get $3) + ) + ) + ) + ;; code offset: 0x499 + (drop + ;; code offset: 0x497 + (call $putchar + ;; code offset: 0x495 + (i32.const 10) + ) + ) + ;; code offset: 0x49f + (if + ;; code offset: 0x49e + (i32.gt_s + ;; code offset: 0x49a + (local.get $2) + ;; code offset: 0x49c + (i32.const 1) + ) + ;; code offset: 0x4a1 + (loop $label$14 + ;; code offset: 0x4b2 + (i32.store + ;; code offset: 0x4af + (i32.add + ;; code offset: 0x4a3 + (local.get $5) + ;; code offset: 0x4ae + (i32.shl + ;; code offset: 0x4aa + (local.tee $0 + ;; code offset: 0x4a9 + (i32.sub + ;; code offset: 0x4a5 + (local.get $2) + ;; code offset: 0x4a7 + (i32.const 1) + ) + ) + ;; code offset: 0x4ac + (i32.const 2) + ) + ) + ;; code offset: 0x4b0 + (local.get $2) + ) + ;; code offset: 0x4ba + (local.set $7 + ;; code offset: 0x4b9 + (i32.gt_s + ;; code offset: 0x4b5 + (local.get $2) + ;; code offset: 0x4b7 + (i32.const 2) + ) + ) + ;; code offset: 0x4be + (local.set $2 + ;; code offset: 0x4bc + (local.get $0) + ) + ;; code offset: 0x4c2 + (br_if $label$14 + ;; code offset: 0x4c0 + (local.get $7) + ) + ) + ) + ;; code offset: 0x4cb + (br_if $label$6 + ;; code offset: 0x4ca + (i32.eq + ;; code offset: 0x4c6 + (local.get $2) + ;; code offset: 0x4c8 + (local.get $3) + ) + ) + ;; code offset: 0x4d2 + (local.set $6 + ;; code offset: 0x4d1 + (i32.sub + ;; code offset: 0x4cd + (local.get $6) + ;; code offset: 0x4cf + (i32.const 1) + ) + ) + ;; code offset: 0x4d4 + (loop $label$15 + ;; code offset: 0x4d8 + (local.set $0 + ;; code offset: 0x4d6 + (i32.const 0) + ) + ;; code offset: 0x4df + (local.set $7 + ;; code offset: 0x4dc + (i32.load + ;; code offset: 0x4da + (local.get $1) + ) + ) + ;; code offset: 0x4e6 + (if + ;; code offset: 0x4e5 + (i32.gt_s + ;; code offset: 0x4e1 + (local.get $2) + ;; code offset: 0x4e3 + (i32.const 0) + ) + (block + ;; code offset: 0x4e8 + (loop $label$17 + ;; code offset: 0x502 + (i32.store + ;; code offset: 0x4f1 + (i32.add + ;; code offset: 0x4ea + (local.get $1) + ;; code offset: 0x4f0 + (i32.shl + ;; code offset: 0x4ec + (local.get $0) + ;; code offset: 0x4ee + (i32.const 2) + ) + ) + ;; code offset: 0x4ff + (i32.load + ;; code offset: 0x4fe + (i32.add + ;; code offset: 0x4f2 + (local.get $1) + ;; code offset: 0x4fd + (i32.shl + ;; code offset: 0x4f9 + (local.tee $0 + ;; code offset: 0x4f8 + (i32.add + ;; code offset: 0x4f4 + (local.get $0) + ;; code offset: 0x4f6 + (i32.const 1) + ) + ) + ;; code offset: 0x4fb + (i32.const 2) + ) + ) + ) + ) + ;; code offset: 0x50a + (br_if $label$17 + ;; code offset: 0x509 + (i32.ne + ;; code offset: 0x505 + (local.get $0) + ;; code offset: 0x507 + (local.get $2) + ) + ) + ) + ;; code offset: 0x50f + (local.set $0 + ;; code offset: 0x50d + (local.get $2) + ) + ) + ) + ;; code offset: 0x51c + (i32.store + ;; code offset: 0x519 + (i32.add + ;; code offset: 0x512 + (local.get $1) + ;; code offset: 0x518 + (i32.shl + ;; code offset: 0x514 + (local.get $0) + ;; code offset: 0x516 + (i32.const 2) + ) + ) + ;; code offset: 0x51a + (local.get $7) + ) + ;; code offset: 0x533 + (i32.store + ;; code offset: 0x527 + (local.tee $0 + ;; code offset: 0x526 + (i32.add + ;; code offset: 0x51f + (local.get $5) + ;; code offset: 0x525 + (i32.shl + ;; code offset: 0x521 + (local.get $2) + ;; code offset: 0x523 + (i32.const 2) + ) + ) + ) + ;; code offset: 0x532 + (i32.sub + ;; code offset: 0x52e + (local.tee $0 + ;; code offset: 0x52b + (i32.load + ;; code offset: 0x529 + (local.get $0) + ) + ) + ;; code offset: 0x530 + (i32.const 1) + ) + ) + ;; code offset: 0x53b + (if + ;; code offset: 0x53a + (i32.le_s + ;; code offset: 0x536 + (local.get $0) + ;; code offset: 0x538 + (i32.const 1) + ) + (block + ;; code offset: 0x547 + (br_if $label$15 + ;; code offset: 0x546 + (i32.ne + ;; code offset: 0x542 + (local.tee $2 + ;; code offset: 0x541 + (i32.add + ;; code offset: 0x53d + (local.get $2) + ;; code offset: 0x53f + (i32.const 1) + ) + ) + ;; code offset: 0x544 + (local.get $3) + ) + ) + ;; code offset: 0x549 + (br $label$6) + ) + ) + ) + ;; code offset: 0x54f + (br_if $label$11 + ;; code offset: 0x54d + (local.get $6) + ) + ) + ;; code offset: 0x552 + (br $label$6) + ) + ;; code offset: 0x555 + (loop $label$19 + ;; code offset: 0x55b + (drop + ;; code offset: 0x559 + (call $putchar + ;; code offset: 0x557 + (i32.const 10) + ) + ) + ;; code offset: 0x561 + (if + ;; code offset: 0x560 + (i32.gt_s + ;; code offset: 0x55c + (local.get $2) + ;; code offset: 0x55e + (i32.const 1) + ) + ;; code offset: 0x563 + (loop $label$21 + ;; code offset: 0x574 + (i32.store + ;; code offset: 0x571 + (i32.add + ;; code offset: 0x565 + (local.get $5) + ;; code offset: 0x570 + (i32.shl + ;; code offset: 0x56c + (local.tee $0 + ;; code offset: 0x56b + (i32.sub + ;; code offset: 0x567 + (local.get $2) + ;; code offset: 0x569 + (i32.const 1) + ) + ) + ;; code offset: 0x56e + (i32.const 2) + ) + ) + ;; code offset: 0x572 + (local.get $2) + ) + ;; code offset: 0x57c + (local.set $7 + ;; code offset: 0x57b + (i32.gt_s + ;; code offset: 0x577 + (local.get $2) + ;; code offset: 0x579 + (i32.const 2) + ) + ) + ;; code offset: 0x580 + (local.set $2 + ;; code offset: 0x57e + (local.get $0) + ) + ;; code offset: 0x584 + (br_if $label$21 + ;; code offset: 0x582 + (local.get $7) + ) + ) + ) + ;; code offset: 0x58d + (br_if $label$6 + ;; code offset: 0x58c + (i32.eq + ;; code offset: 0x588 + (local.get $2) + ;; code offset: 0x58a + (local.get $3) + ) + ) + ;; code offset: 0x594 + (local.set $6 + ;; code offset: 0x593 + (i32.sub + ;; code offset: 0x58f + (local.get $6) + ;; code offset: 0x591 + (i32.const 1) + ) + ) + ;; code offset: 0x596 + (loop $label$22 + ;; code offset: 0x59d + (local.set $7 + ;; code offset: 0x59a + (i32.load + ;; code offset: 0x598 + (local.get $1) + ) + ) + ;; code offset: 0x5a1 + (local.set $0 + ;; code offset: 0x59f + (i32.const 0) + ) + ;; code offset: 0x5a8 + (if + ;; code offset: 0x5a7 + (i32.ge_s + ;; code offset: 0x5a3 + (local.get $2) + ;; code offset: 0x5a5 + (i32.const 1) + ) + (block + ;; code offset: 0x5aa + (loop $label$24 + ;; code offset: 0x5c4 + (i32.store + ;; code offset: 0x5b3 + (i32.add + ;; code offset: 0x5ac + (local.get $1) + ;; code offset: 0x5b2 + (i32.shl + ;; code offset: 0x5ae + (local.get $0) + ;; code offset: 0x5b0 + (i32.const 2) + ) + ) + ;; code offset: 0x5c1 + (i32.load + ;; code offset: 0x5c0 + (i32.add + ;; code offset: 0x5b4 + (local.get $1) + ;; code offset: 0x5bf + (i32.shl + ;; code offset: 0x5bb + (local.tee $0 + ;; code offset: 0x5ba + (i32.add + ;; code offset: 0x5b6 + (local.get $0) + ;; code offset: 0x5b8 + (i32.const 1) + ) + ) + ;; code offset: 0x5bd + (i32.const 2) + ) + ) + ) + ) + ;; code offset: 0x5cc + (br_if $label$24 + ;; code offset: 0x5cb + (i32.ne + ;; code offset: 0x5c7 + (local.get $0) + ;; code offset: 0x5c9 + (local.get $2) + ) + ) + ) + ;; code offset: 0x5d1 + (local.set $0 + ;; code offset: 0x5cf + (local.get $2) + ) + ) + ) + ;; code offset: 0x5de + (i32.store + ;; code offset: 0x5db + (i32.add + ;; code offset: 0x5d4 + (local.get $1) + ;; code offset: 0x5da + (i32.shl + ;; code offset: 0x5d6 + (local.get $0) + ;; code offset: 0x5d8 + (i32.const 2) + ) + ) + ;; code offset: 0x5dc + (local.get $7) + ) + ;; code offset: 0x5f5 + (i32.store + ;; code offset: 0x5e9 + (local.tee $0 + ;; code offset: 0x5e8 + (i32.add + ;; code offset: 0x5e1 + (local.get $5) + ;; code offset: 0x5e7 + (i32.shl + ;; code offset: 0x5e3 + (local.get $2) + ;; code offset: 0x5e5 + (i32.const 2) + ) + ) + ) + ;; code offset: 0x5f4 + (i32.sub + ;; code offset: 0x5f0 + (local.tee $0 + ;; code offset: 0x5ed + (i32.load + ;; code offset: 0x5eb + (local.get $0) + ) + ) + ;; code offset: 0x5f2 + (i32.const 1) + ) + ) + ;; code offset: 0x5fd + (if + ;; code offset: 0x5fc + (i32.le_s + ;; code offset: 0x5f8 + (local.get $0) + ;; code offset: 0x5fa + (i32.const 1) + ) + (block + ;; code offset: 0x609 + (br_if $label$22 + ;; code offset: 0x608 + (i32.ne + ;; code offset: 0x604 + (local.tee $2 + ;; code offset: 0x603 + (i32.add + ;; code offset: 0x5ff + (local.get $2) + ;; code offset: 0x601 + (i32.const 1) + ) + ) + ;; code offset: 0x606 + (local.get $3) + ) + ) + ;; code offset: 0x60b + (br $label$6) + ) + ) + ) + ;; code offset: 0x611 + (br_if $label$19 + ;; code offset: 0x60f + (local.get $6) + ) + ) + ) + ;; code offset: 0x617 + (call $free + ;; code offset: 0x615 + (local.get $1) + ) + ;; code offset: 0x61b + (call $free + ;; code offset: 0x619 + (local.get $5) + ) + ;; code offset: 0x61f + (local.set $5 + ;; code offset: 0x61d + (i32.const 0) + ) + ;; code offset: 0x623 + (local.set $0 + ;; code offset: 0x621 + (i32.const 0) + ) + ;; code offset: 0x627 + (if + ;; code offset: 0x625 + (local.get $4) + ;; code offset: 0x629 + (loop $label$27 + ;; code offset: 0x62f + (local.set $1 + ;; code offset: 0x62d + (call $fannkuch_worker\28void*\29 + ;; code offset: 0x62b + (local.get $4) + ) + ) + ;; code offset: 0x636 + (local.set $2 + ;; code offset: 0x633 + (i32.load offset=8 + ;; code offset: 0x631 + (local.get $4) + ) + ) + ;; code offset: 0x63a + (call $free + ;; code offset: 0x638 + (local.get $4) + ) + ;; code offset: 0x646 + (local.set $0 + ;; code offset: 0x645 + (select + ;; code offset: 0x63c + (local.get $1) + ;; code offset: 0x63e + (local.get $0) + ;; code offset: 0x644 + (i32.lt_s + ;; code offset: 0x640 + (local.get $0) + ;; code offset: 0x642 + (local.get $1) + ) + ) + ) + ;; code offset: 0x64a + (local.set $4 + ;; code offset: 0x648 + (local.get $2) + ) + ;; code offset: 0x64e + (br_if $label$27 + ;; code offset: 0x64c + (local.get $2) + ) + ) + ) + ;; code offset: 0x656 + (i32.store offset=4 + ;; code offset: 0x652 + (local.get $8) + ;; code offset: 0x654 + (local.get $0) + ) + ;; code offset: 0x65d + (i32.store + ;; code offset: 0x659 + (local.get $8) + ;; code offset: 0x65b + (local.get $3) + ) + ;; code offset: 0x667 + (drop + ;; code offset: 0x665 + (call $iprintf + ;; code offset: 0x660 + (i32.const 1024) + ;; code offset: 0x663 + (local.get $8) + ) + ) + ) + ;; code offset: 0x66e + (global.set $global$0 + ;; code offset: 0x66d + (i32.add + ;; code offset: 0x669 + (local.get $8) + ;; code offset: 0x66b + (i32.const 32) + ) + ) + ;; code offset: 0x670 + (local.get $5) + ) + ;; custom section ".debug_info", size 851 + ;; custom section ".debug_loc", size 1073 + ;; custom section ".debug_ranges", size 88 + ;; custom section ".debug_abbrev", size 333 + ;; custom section ".debug_line", size 2682 + ;; custom section ".debug_str", size 434 + ;; custom section "producers", size 135 +) diff -Nru binaryen-91/test/passes/fannkuch3_manyopts_dwarf.passes binaryen-99/test/passes/fannkuch3_manyopts_dwarf.passes --- binaryen-91/test/passes/fannkuch3_manyopts_dwarf.passes 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/fannkuch3_manyopts_dwarf.passes 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +dwarfdump_O4_roundtrip_dwarfdump_g Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/passes/fannkuch3_manyopts_dwarf.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/passes/fannkuch3_manyopts_dwarf.wasm differ diff -Nru binaryen-91/test/passes/fannkuch3_manyopts.passes binaryen-99/test/passes/fannkuch3_manyopts.passes --- binaryen-91/test/passes/fannkuch3_manyopts.passes 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/fannkuch3_manyopts.passes 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -dwarfdump_O4_roundtrip_dwarfdump_g Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/passes/fannkuch3_manyopts.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/passes/fannkuch3_manyopts.wasm differ diff -Nru binaryen-91/test/passes/fannkuch3.passes binaryen-99/test/passes/fannkuch3.passes --- binaryen-91/test/passes/fannkuch3.passes 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/fannkuch3.passes 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -dwarfdump_roundtrip_dwarfdump_g Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/passes/fannkuch3.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/passes/fannkuch3.wasm differ diff -Nru binaryen-91/test/passes/fib2.bin.txt binaryen-99/test/passes/fib2.bin.txt --- binaryen-91/test/passes/fib2.bin.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/fib2.bin.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,722 +0,0 @@ -DWARF debug info -================ - -Contains section .debug_info (168 bytes) -Contains section .debug_loc (143 bytes) -Contains section .debug_ranges (24 bytes) -Contains section .debug_abbrev (131 bytes) -Contains section .debug_line (106 bytes) -Contains section .debug_str (180 bytes) - -.debug_abbrev contents: -Abbrev table for offset: 0x00000000 -[1] DW_TAG_compile_unit DW_CHILDREN_yes - DW_AT_producer DW_FORM_strp - DW_AT_language DW_FORM_data2 - DW_AT_name DW_FORM_strp - DW_AT_stmt_list DW_FORM_sec_offset - DW_AT_comp_dir DW_FORM_strp - DW_AT_low_pc DW_FORM_addr - DW_AT_ranges DW_FORM_sec_offset - -[2] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_frame_base DW_FORM_exprloc - DW_AT_GNU_all_call_sites DW_FORM_flag_present - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_prototyped DW_FORM_flag_present - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - -[3] DW_TAG_formal_parameter DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[4] DW_TAG_variable DW_CHILDREN_no - DW_AT_location DW_FORM_sec_offset - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[5] DW_TAG_variable DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[6] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_frame_base DW_FORM_exprloc - DW_AT_GNU_all_call_sites DW_FORM_flag_present - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - -[7] DW_TAG_GNU_call_site DW_CHILDREN_no - DW_AT_low_pc DW_FORM_addr - -[8] DW_TAG_base_type DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_encoding DW_FORM_data1 - DW_AT_byte_size DW_FORM_data1 - - -.debug_info contents: -0x00000000: Compile Unit: length = 0x000000a4 version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x000000a8) - -0x0000000b: DW_TAG_compile_unit [1] * - DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)") - DW_AT_language [DW_FORM_data2] (DW_LANG_C99) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000069] = "fib2.c") - DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) - DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x00000070] = "/usr/local/google/home/azakai/Dev/2-binaryen") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) - DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 - [0x00000005, 0x0000003d) - [0x0000003e, 0x00000048)) - -0x00000026: DW_TAG_subprogram [2] * - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000005) - DW_AT_high_pc [DW_FORM_data4] (0x00000038) - DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x1 +0, DW_OP_stack_value) - DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000009d] = "fib") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") - DW_AT_decl_line [DW_FORM_data1] (1) - DW_AT_prototyped [DW_FORM_flag_present] (true) - DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x0000003e: DW_TAG_formal_parameter [3] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000aa] = "n") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") - DW_AT_decl_line [DW_FORM_data1] (1) - DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") - -0x00000049: DW_TAG_variable [4] - DW_AT_location [DW_FORM_sec_offset] (0x00000000: - [0xffffffff, 0x00000005): - [0x00000007, 0x00000010): DW_OP_consts +0, DW_OP_stack_value - [0x0000001e, 0x00000033): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ac] = "a") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") - DW_AT_decl_line [DW_FORM_data1] (2) - DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") - -0x00000058: DW_TAG_variable [4] - DW_AT_location [DW_FORM_sec_offset] (0x0000002b: - [0xffffffff, 0x00000005): - [0x00000007, 0x00000010): DW_OP_consts +1, DW_OP_stack_value - [0x0000001e, 0x00000023): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value - [0x00000023, 0x00000033): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ae] = "b") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") - DW_AT_decl_line [DW_FORM_data1] (2) - DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") - -0x00000067: DW_TAG_variable [4] - DW_AT_location [DW_FORM_sec_offset] (0x00000064: - [0xffffffff, 0x00000005): - [0x00000007, 0x00000010): DW_OP_consts +0, DW_OP_stack_value - [0x0000002e, 0x00000033): DW_OP_WASM_location 0x0 +3, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000b0] = "i") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") - DW_AT_decl_line [DW_FORM_data1] (2) - DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") - -0x00000076: DW_TAG_variable [5] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000b2] = "t") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") - DW_AT_decl_line [DW_FORM_data1] (2) - DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") - -0x00000081: NULL - -0x00000082: DW_TAG_subprogram [6] * - DW_AT_low_pc [DW_FORM_addr] (0x000000000000003e) - DW_AT_high_pc [DW_FORM_data4] (0x0000000a) - DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x1 +0, DW_OP_stack_value) - DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000a5] = "main") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") - DW_AT_decl_line [DW_FORM_data1] (11) - DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x0000009a: DW_TAG_GNU_call_site [7] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000047) - -0x0000009f: NULL - -0x000000a0: DW_TAG_base_type [8] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000a1] = "int") - DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) - DW_AT_byte_size [DW_FORM_data1] (0x04) - -0x000000a7: NULL - -.debug_loc contents: -0x00000000: - [0xffffffff, 0x00000005): - [0x00000007, 0x00000010): DW_OP_consts +0, DW_OP_stack_value - [0x0000001e, 0x00000033): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value - -0x0000002b: - [0xffffffff, 0x00000005): - [0x00000007, 0x00000010): DW_OP_consts +1, DW_OP_stack_value - [0x0000001e, 0x00000023): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value - [0x00000023, 0x00000033): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - -0x00000064: - [0xffffffff, 0x00000005): - [0x00000007, 0x00000010): DW_OP_consts +0, DW_OP_stack_value - [0x0000002e, 0x00000033): DW_OP_WASM_location 0x0 +3, DW_OP_stack_value - -.debug_line contents: -debug_line[0x00000000] -Line table prologue: - total_length: 0x00000066 - version: 4 - prologue_length: 0x0000001e - min_inst_length: 1 -max_ops_per_inst: 1 - default_is_stmt: 1 - line_base: -5 - line_range: 14 - opcode_base: 13 -standard_opcode_lengths[DW_LNS_copy] = 0 -standard_opcode_lengths[DW_LNS_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_advance_line] = 1 -standard_opcode_lengths[DW_LNS_set_file] = 1 -standard_opcode_lengths[DW_LNS_set_column] = 1 -standard_opcode_lengths[DW_LNS_negate_stmt] = 0 -standard_opcode_lengths[DW_LNS_set_basic_block] = 0 -standard_opcode_lengths[DW_LNS_const_add_pc] = 0 -standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 -standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 -standard_opcode_lengths[DW_LNS_set_isa] = 1 -file_names[ 1]: - name: "fib2.c" - dir_index: 0 - mod_time: 0x00000000 - length: 0x00000000 -0x00000028: 00 DW_LNE_set_address (0x0000000000000005) -0x0000002f: 01 DW_LNS_copy - 0x0000000000000005 1 0 1 0 0 is_stmt - - -0x00000030: 05 DW_LNS_set_column (17) -0x00000032: 0a DW_LNS_set_prologue_end -0x00000033: 92 address += 9, line += 2 - 0x000000000000000e 3 17 1 0 0 is_stmt prologue_end - -0x00000034: 05 DW_LNS_set_column (3) -0x00000036: 06 DW_LNS_negate_stmt -0x00000037: 58 address += 5, line += 0 - 0x0000000000000013 3 3 1 0 0 - -0x00000038: 2b address += 2, line += -3 - 0x0000000000000015 0 3 1 0 0 - -0x00000039: 05 DW_LNS_set_column (7) -0x0000003b: 06 DW_LNS_negate_stmt -0x0000003c: c0 address += 12, line += 6 - 0x0000000000000021 6 7 1 0 0 is_stmt - -0x0000003d: 06 DW_LNS_negate_stmt -0x0000003e: 03 DW_LNS_advance_line (0) -0x00000040: 74 address += 7, line += 0 - 0x0000000000000028 0 7 1 0 0 - -0x00000041: 05 DW_LNS_set_column (23) -0x00000043: 06 DW_LNS_negate_stmt -0x00000044: 4d address += 4, line += 3 - 0x000000000000002c 3 23 1 0 0 is_stmt - -0x00000045: 05 DW_LNS_set_column (17) -0x00000047: 06 DW_LNS_negate_stmt -0x00000048: 58 address += 5, line += 0 - 0x0000000000000031 3 17 1 0 0 - -0x00000049: 05 DW_LNS_set_column (3) -0x0000004b: 58 address += 5, line += 0 - 0x0000000000000036 3 3 1 0 0 - -0x0000004c: 06 DW_LNS_negate_stmt -0x0000004d: 4f address += 4, line += 5 - 0x000000000000003a 8 3 1 0 0 is_stmt - -0x0000004e: 02 DW_LNS_advance_pc (3) -0x00000050: 00 DW_LNE_end_sequence - 0x000000000000003d 8 3 1 0 0 is_stmt end_sequence - -0x00000053: 00 DW_LNE_set_address (0x000000000000003e) -0x0000005a: 03 DW_LNS_advance_line (11) -0x0000005c: 01 DW_LNS_copy - 0x000000000000003e 11 0 1 0 0 is_stmt - - -0x0000005d: 05 DW_LNS_set_column (10) -0x0000005f: 0a DW_LNS_set_prologue_end -0x00000060: 3d address += 3, line += 1 - 0x0000000000000041 12 10 1 0 0 is_stmt prologue_end - -0x00000061: 05 DW_LNS_set_column (3) -0x00000063: 06 DW_LNS_negate_stmt -0x00000064: 66 address += 6, line += 0 - 0x0000000000000047 12 3 1 0 0 - -0x00000065: 02 DW_LNS_advance_pc (1) -0x00000067: 00 DW_LNE_end_sequence - 0x0000000000000048 12 3 1 0 0 end_sequence - - -.debug_str contents: -0x00000000: "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)" -0x00000069: "fib2.c" -0x00000070: "/usr/local/google/home/azakai/Dev/2-binaryen" -0x0000009d: "fib" -0x000000a1: "int" -0x000000a5: "main" -0x000000aa: "n" -0x000000ac: "a" -0x000000ae: "b" -0x000000b0: "i" -0x000000b2: "t" - -.debug_ranges contents: -00000000 00000005 0000003d -00000000 0000003e 00000048 -00000000 -DWARF debug info -================ - -Contains section .debug_info (168 bytes) -Contains section .debug_loc (143 bytes) -Contains section .debug_ranges (24 bytes) -Contains section .debug_abbrev (131 bytes) -Contains section .debug_line (183 bytes) -Contains section .debug_str (180 bytes) - -.debug_abbrev contents: -Abbrev table for offset: 0x00000000 -[1] DW_TAG_compile_unit DW_CHILDREN_yes - DW_AT_producer DW_FORM_strp - DW_AT_language DW_FORM_data2 - DW_AT_name DW_FORM_strp - DW_AT_stmt_list DW_FORM_sec_offset - DW_AT_comp_dir DW_FORM_strp - DW_AT_low_pc DW_FORM_addr - DW_AT_ranges DW_FORM_sec_offset - -[2] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_frame_base DW_FORM_exprloc - DW_AT_GNU_all_call_sites DW_FORM_flag_present - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_prototyped DW_FORM_flag_present - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - -[3] DW_TAG_formal_parameter DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[4] DW_TAG_variable DW_CHILDREN_no - DW_AT_location DW_FORM_sec_offset - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[5] DW_TAG_variable DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[6] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_frame_base DW_FORM_exprloc - DW_AT_GNU_all_call_sites DW_FORM_flag_present - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - -[7] DW_TAG_GNU_call_site DW_CHILDREN_no - DW_AT_low_pc DW_FORM_addr - -[8] DW_TAG_base_type DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_encoding DW_FORM_data1 - DW_AT_byte_size DW_FORM_data1 - - -.debug_info contents: -0x00000000: Compile Unit: length = 0x000000a4 version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x000000a8) - -0x0000000b: DW_TAG_compile_unit [1] * - DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)") - DW_AT_language [DW_FORM_data2] (DW_LANG_C99) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000069] = "fib2.c") - DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) - DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x00000070] = "/usr/local/google/home/azakai/Dev/2-binaryen") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) - DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 - [0x00000005, 0x0000003d) - [0x0000003e, 0x00000044)) - -0x00000026: DW_TAG_subprogram [2] * - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000005) - DW_AT_high_pc [DW_FORM_data4] (0x00000038) - DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x1 +0, DW_OP_stack_value) - DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000009d] = "fib") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") - DW_AT_decl_line [DW_FORM_data1] (1) - DW_AT_prototyped [DW_FORM_flag_present] (true) - DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x0000003e: DW_TAG_formal_parameter [3] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000aa] = "n") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") - DW_AT_decl_line [DW_FORM_data1] (1) - DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") - -0x00000049: DW_TAG_variable [4] - DW_AT_location [DW_FORM_sec_offset] (0x00000000: - [0xffffffff, 0x00000005): - [0x00000007, 0x00000010): DW_OP_consts +0, DW_OP_stack_value - [0x0000001e, 0x00000033): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ac] = "a") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") - DW_AT_decl_line [DW_FORM_data1] (2) - DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") - -0x00000058: DW_TAG_variable [4] - DW_AT_location [DW_FORM_sec_offset] (0x0000002b: - [0xffffffff, 0x00000005): - [0x00000007, 0x00000010): DW_OP_consts +1, DW_OP_stack_value - [0x0000001e, 0x00000023): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value - [0x00000023, 0x00000033): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ae] = "b") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") - DW_AT_decl_line [DW_FORM_data1] (2) - DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") - -0x00000067: DW_TAG_variable [4] - DW_AT_location [DW_FORM_sec_offset] (0x00000064: - [0xffffffff, 0x00000005): - [0x00000007, 0x00000010): DW_OP_consts +0, DW_OP_stack_value - [0x0000002e, 0x00000033): DW_OP_WASM_location 0x0 +3, DW_OP_stack_value) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000b0] = "i") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") - DW_AT_decl_line [DW_FORM_data1] (2) - DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") - -0x00000076: DW_TAG_variable [5] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000b2] = "t") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") - DW_AT_decl_line [DW_FORM_data1] (2) - DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") - -0x00000081: NULL - -0x00000082: DW_TAG_subprogram [6] * - DW_AT_low_pc [DW_FORM_addr] (0x000000000000003e) - DW_AT_high_pc [DW_FORM_data4] (0x00000006) - DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x1 +0, DW_OP_stack_value) - DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000a5] = "main") - DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") - DW_AT_decl_line [DW_FORM_data1] (11) - DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x0000009a: DW_TAG_GNU_call_site [7] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) - -0x0000009f: NULL - -0x000000a0: DW_TAG_base_type [8] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000a1] = "int") - DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) - DW_AT_byte_size [DW_FORM_data1] (0x04) - -0x000000a7: NULL - -.debug_loc contents: -0x00000000: - [0xffffffff, 0x00000005): - [0x00000007, 0x00000010): DW_OP_consts +0, DW_OP_stack_value - [0x0000001e, 0x00000033): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value - -0x0000002b: - [0xffffffff, 0x00000005): - [0x00000007, 0x00000010): DW_OP_consts +1, DW_OP_stack_value - [0x0000001e, 0x00000023): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value - [0x00000023, 0x00000033): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value - -0x00000064: - [0xffffffff, 0x00000005): - [0x00000007, 0x00000010): DW_OP_consts +0, DW_OP_stack_value - [0x0000002e, 0x00000033): DW_OP_WASM_location 0x0 +3, DW_OP_stack_value - -.debug_line contents: -debug_line[0x00000000] -Line table prologue: - total_length: 0x000000b3 - version: 4 - prologue_length: 0x0000001e - min_inst_length: 1 -max_ops_per_inst: 1 - default_is_stmt: 1 - line_base: -5 - line_range: 14 - opcode_base: 13 -standard_opcode_lengths[DW_LNS_copy] = 0 -standard_opcode_lengths[DW_LNS_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_advance_line] = 1 -standard_opcode_lengths[DW_LNS_set_file] = 1 -standard_opcode_lengths[DW_LNS_set_column] = 1 -standard_opcode_lengths[DW_LNS_negate_stmt] = 0 -standard_opcode_lengths[DW_LNS_set_basic_block] = 0 -standard_opcode_lengths[DW_LNS_const_add_pc] = 0 -standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 -standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 -standard_opcode_lengths[DW_LNS_set_isa] = 1 -file_names[ 1]: - name: "fib2.c" - dir_index: 0 - mod_time: 0x00000000 - length: 0x00000000 -0x00000028: 00 DW_LNE_set_address (0x0000000000000005) -0x0000002f: 01 DW_LNS_copy - 0x0000000000000005 1 0 1 0 0 is_stmt - - -0x00000030: 00 DW_LNE_set_address (0x000000000000000e) -0x00000037: 03 DW_LNS_advance_line (3) -0x00000039: 05 DW_LNS_set_column (17) -0x0000003b: 0a DW_LNS_set_prologue_end -0x0000003c: 01 DW_LNS_copy - 0x000000000000000e 3 17 1 0 0 is_stmt prologue_end - - -0x0000003d: 00 DW_LNE_set_address (0x0000000000000013) -0x00000044: 05 DW_LNS_set_column (3) -0x00000046: 06 DW_LNS_negate_stmt -0x00000047: 01 DW_LNS_copy - 0x0000000000000013 3 3 1 0 0 - - -0x00000048: 00 DW_LNE_set_address (0x0000000000000021) -0x0000004f: 03 DW_LNS_advance_line (6) -0x00000051: 05 DW_LNS_set_column (7) -0x00000053: 06 DW_LNS_negate_stmt -0x00000054: 01 DW_LNS_copy - 0x0000000000000021 6 7 1 0 0 is_stmt - - -0x00000055: 00 DW_LNE_set_address (0x000000000000002c) -0x0000005c: 03 DW_LNS_advance_line (3) -0x0000005e: 05 DW_LNS_set_column (23) -0x00000060: 01 DW_LNS_copy - 0x000000000000002c 3 23 1 0 0 is_stmt - - -0x00000061: 00 DW_LNE_set_address (0x0000000000000031) -0x00000068: 05 DW_LNS_set_column (17) -0x0000006a: 06 DW_LNS_negate_stmt -0x0000006b: 01 DW_LNS_copy - 0x0000000000000031 3 17 1 0 0 - - -0x0000006c: 00 DW_LNE_set_address (0x0000000000000036) -0x00000073: 05 DW_LNS_set_column (3) -0x00000075: 01 DW_LNS_copy - 0x0000000000000036 3 3 1 0 0 - - -0x00000076: 00 DW_LNE_set_address (0x000000000000003a) -0x0000007d: 03 DW_LNS_advance_line (8) -0x0000007f: 06 DW_LNS_negate_stmt -0x00000080: 01 DW_LNS_copy - 0x000000000000003a 8 3 1 0 0 is_stmt - - -0x00000081: 00 DW_LNE_set_address (0x000000000000003d) -0x00000088: 00 DW_LNE_end_sequence - 0x000000000000003d 8 3 1 0 0 is_stmt end_sequence - -0x0000008b: 00 DW_LNE_set_address (0x000000000000003e) -0x00000092: 03 DW_LNS_advance_line (11) -0x00000094: 01 DW_LNS_copy - 0x000000000000003e 11 0 1 0 0 is_stmt - - -0x00000095: 00 DW_LNE_set_address (0x0000000000000041) -0x0000009c: 03 DW_LNS_advance_line (12) -0x0000009e: 05 DW_LNS_set_column (10) -0x000000a0: 0a DW_LNS_set_prologue_end -0x000000a1: 01 DW_LNS_copy - 0x0000000000000041 12 10 1 0 0 is_stmt prologue_end - - -0x000000a2: 00 DW_LNE_set_address (0x0000000000000043) -0x000000a9: 05 DW_LNS_set_column (3) -0x000000ab: 06 DW_LNS_negate_stmt -0x000000ac: 01 DW_LNS_copy - 0x0000000000000043 12 3 1 0 0 - - -0x000000ad: 00 DW_LNE_set_address (0x0000000000000044) -0x000000b4: 00 DW_LNE_end_sequence - 0x0000000000000044 12 3 1 0 0 end_sequence - - -.debug_str contents: -0x00000000: "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)" -0x00000069: "fib2.c" -0x00000070: "/usr/local/google/home/azakai/Dev/2-binaryen" -0x0000009d: "fib" -0x000000a1: "int" -0x000000a5: "main" -0x000000aa: "n" -0x000000ac: "a" -0x000000ae: "b" -0x000000b0: "i" -0x000000b2: "t" - -.debug_ranges contents: -00000000 00000005 0000003d -00000000 0000003e 00000044 -00000000 -(module - (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "memory" (memory $0 256 256)) - (import "env" "__indirect_function_table" (table $timport$1 1 funcref)) - (global $global$0 (mut i32) (i32.const 5243904)) - (global $global$1 i32 (i32.const 1024)) - (export "__wasm_call_ctors" (func $__wasm_call_ctors)) - (export "main" (func $main)) - (export "__data_end" (global $global$1)) - (func $__wasm_call_ctors (; 0 ;) - ) - (func $fib (; 1 ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - ;; code offset: 0xa - (local.set $1 - ;; code offset: 0x8 - (i32.const 1) - ) - ;; code offset: 0xc - (block $label$1 - ;; code offset: 0x13 - (br_if $label$1 - ;; code offset: 0x12 - (i32.lt_s - ;; code offset: 0xe - (local.get $0) - ;; code offset: 0x10 - (i32.const 1) - ) - ) - ;; code offset: 0x17 - (local.set $2 - ;; code offset: 0x15 - (i32.const 0) - ) - ;; code offset: 0x1b - (local.set $3 - ;; code offset: 0x19 - (i32.const 0) - ) - ;; code offset: 0x1d - (loop $label$2 - ;; code offset: 0x26 - (local.set $1 - ;; code offset: 0x25 - (i32.add - ;; code offset: 0x21 - (local.tee $4 - ;; code offset: 0x1f - (local.get $1) - ) - ;; code offset: 0x23 - (local.get $2) - ) - ) - ;; code offset: 0x2a - (local.set $2 - ;; code offset: 0x28 - (local.get $4) - ) - ;; code offset: 0x36 - (br_if $label$2 - ;; code offset: 0x35 - (i32.ne - ;; code offset: 0x31 - (local.tee $3 - ;; code offset: 0x30 - (i32.add - ;; code offset: 0x2c - (local.get $3) - ;; code offset: 0x2e - (i32.const 1) - ) - ) - ;; code offset: 0x33 - (local.get $0) - ) - ) - ) - ) - ;; code offset: 0x3a - (local.get $1) - ) - (func $__original_main (; 2 ;) (result i32) - ;; code offset: 0x41 - (call $fib - ;; code offset: 0x3f - (i32.const 6) - ) - ) - (func $main (; 3 ;) (param $0 i32) (param $1 i32) (result i32) - ;; code offset: 0x46 - (call $__original_main) - ) - ;; custom section ".debug_info", size 168 - ;; custom section ".debug_loc", size 143 - ;; custom section ".debug_ranges", size 24 - ;; custom section ".debug_abbrev", size 131 - ;; custom section ".debug_line", size 183 - ;; custom section ".debug_str", size 180 - ;; custom section "producers", size 127 -) diff -Nru binaryen-91/test/passes/fib2_dwarf.bin.txt binaryen-99/test/passes/fib2_dwarf.bin.txt --- binaryen-91/test/passes/fib2_dwarf.bin.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/fib2_dwarf.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,722 @@ +DWARF debug info +================ + +Contains section .debug_info (168 bytes) +Contains section .debug_loc (143 bytes) +Contains section .debug_ranges (24 bytes) +Contains section .debug_abbrev (131 bytes) +Contains section .debug_line (106 bytes) +Contains section .debug_str (180 bytes) + +.debug_abbrev contents: +Abbrev table for offset: 0x00000000 +[1] DW_TAG_compile_unit DW_CHILDREN_yes + DW_AT_producer DW_FORM_strp + DW_AT_language DW_FORM_data2 + DW_AT_name DW_FORM_strp + DW_AT_stmt_list DW_FORM_sec_offset + DW_AT_comp_dir DW_FORM_strp + DW_AT_low_pc DW_FORM_addr + DW_AT_ranges DW_FORM_sec_offset + +[2] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_GNU_all_call_sites DW_FORM_flag_present + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_prototyped DW_FORM_flag_present + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[3] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[4] DW_TAG_variable DW_CHILDREN_no + DW_AT_location DW_FORM_sec_offset + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[5] DW_TAG_variable DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[6] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_GNU_all_call_sites DW_FORM_flag_present + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[7] DW_TAG_GNU_call_site DW_CHILDREN_no + DW_AT_low_pc DW_FORM_addr + +[8] DW_TAG_base_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_encoding DW_FORM_data1 + DW_AT_byte_size DW_FORM_data1 + + +.debug_info contents: +0x00000000: Compile Unit: length = 0x000000a4 version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x000000a8) + +0x0000000b: DW_TAG_compile_unit [1] * + DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)") + DW_AT_language [DW_FORM_data2] (DW_LANG_C99) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000069] = "fib2.c") + DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) + DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x00000070] = "/usr/local/google/home/azakai/Dev/2-binaryen") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) + DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 + [0x00000005, 0x0000003d) + [0x0000003e, 0x00000048)) + +0x00000026: DW_TAG_subprogram [2] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000005) + DW_AT_high_pc [DW_FORM_data4] (0x00000038) + DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x1 +0, DW_OP_stack_value) + DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000009d] = "fib") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (1) + DW_AT_prototyped [DW_FORM_flag_present] (true) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x0000003e: DW_TAG_formal_parameter [3] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000aa] = "n") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (1) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + +0x00000049: DW_TAG_variable [4] + DW_AT_location [DW_FORM_sec_offset] (0x00000000: + [0xffffffff, 0x00000005): + [0x00000007, 0x00000010): DW_OP_consts +0, DW_OP_stack_value + [0x0000001e, 0x00000033): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ac] = "a") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (2) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + +0x00000058: DW_TAG_variable [4] + DW_AT_location [DW_FORM_sec_offset] (0x0000002b: + [0xffffffff, 0x00000005): + [0x00000007, 0x00000010): DW_OP_consts +1, DW_OP_stack_value + [0x0000001e, 0x00000023): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + [0x00000023, 0x00000033): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ae] = "b") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (2) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + +0x00000067: DW_TAG_variable [4] + DW_AT_location [DW_FORM_sec_offset] (0x00000064: + [0xffffffff, 0x00000005): + [0x00000007, 0x00000010): DW_OP_consts +0, DW_OP_stack_value + [0x0000002e, 0x00000033): DW_OP_WASM_location 0x0 +3, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000b0] = "i") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (2) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + +0x00000076: DW_TAG_variable [5] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000b2] = "t") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (2) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + +0x00000081: NULL + +0x00000082: DW_TAG_subprogram [6] * + DW_AT_low_pc [DW_FORM_addr] (0x000000000000003e) + DW_AT_high_pc [DW_FORM_data4] (0x0000000a) + DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x1 +0, DW_OP_stack_value) + DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000a5] = "main") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (11) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x0000009a: DW_TAG_GNU_call_site [7] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000047) + +0x0000009f: NULL + +0x000000a0: DW_TAG_base_type [8] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000a1] = "int") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) + DW_AT_byte_size [DW_FORM_data1] (0x04) + +0x000000a7: NULL + +.debug_loc contents: +0x00000000: + [0xffffffff, 0x00000005): + [0x00000007, 0x00000010): DW_OP_consts +0, DW_OP_stack_value + [0x0000001e, 0x00000033): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + +0x0000002b: + [0xffffffff, 0x00000005): + [0x00000007, 0x00000010): DW_OP_consts +1, DW_OP_stack_value + [0x0000001e, 0x00000023): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + [0x00000023, 0x00000033): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +0x00000064: + [0xffffffff, 0x00000005): + [0x00000007, 0x00000010): DW_OP_consts +0, DW_OP_stack_value + [0x0000002e, 0x00000033): DW_OP_WASM_location 0x0 +3, DW_OP_stack_value + +.debug_line contents: +debug_line[0x00000000] +Line table prologue: + total_length: 0x00000066 + version: 4 + prologue_length: 0x0000001e + min_inst_length: 1 +max_ops_per_inst: 1 + default_is_stmt: 1 + line_base: -5 + line_range: 14 + opcode_base: 13 +standard_opcode_lengths[DW_LNS_copy] = 0 +standard_opcode_lengths[DW_LNS_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_advance_line] = 1 +standard_opcode_lengths[DW_LNS_set_file] = 1 +standard_opcode_lengths[DW_LNS_set_column] = 1 +standard_opcode_lengths[DW_LNS_negate_stmt] = 0 +standard_opcode_lengths[DW_LNS_set_basic_block] = 0 +standard_opcode_lengths[DW_LNS_const_add_pc] = 0 +standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 +standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 +standard_opcode_lengths[DW_LNS_set_isa] = 1 +file_names[ 1]: + name: "fib2.c" + dir_index: 0 + mod_time: 0x00000000 + length: 0x00000000 +0x00000028: 00 DW_LNE_set_address (0x0000000000000005) +0x0000002f: 01 DW_LNS_copy + 0x0000000000000005 1 0 1 0 0 is_stmt + + +0x00000030: 05 DW_LNS_set_column (17) +0x00000032: 0a DW_LNS_set_prologue_end +0x00000033: 92 address += 9, line += 2 + 0x000000000000000e 3 17 1 0 0 is_stmt prologue_end + +0x00000034: 05 DW_LNS_set_column (3) +0x00000036: 06 DW_LNS_negate_stmt +0x00000037: 58 address += 5, line += 0 + 0x0000000000000013 3 3 1 0 0 + +0x00000038: 2b address += 2, line += -3 + 0x0000000000000015 0 3 1 0 0 + +0x00000039: 05 DW_LNS_set_column (7) +0x0000003b: 06 DW_LNS_negate_stmt +0x0000003c: c0 address += 12, line += 6 + 0x0000000000000021 6 7 1 0 0 is_stmt + +0x0000003d: 06 DW_LNS_negate_stmt +0x0000003e: 03 DW_LNS_advance_line (0) +0x00000040: 74 address += 7, line += 0 + 0x0000000000000028 0 7 1 0 0 + +0x00000041: 05 DW_LNS_set_column (23) +0x00000043: 06 DW_LNS_negate_stmt +0x00000044: 4d address += 4, line += 3 + 0x000000000000002c 3 23 1 0 0 is_stmt + +0x00000045: 05 DW_LNS_set_column (17) +0x00000047: 06 DW_LNS_negate_stmt +0x00000048: 58 address += 5, line += 0 + 0x0000000000000031 3 17 1 0 0 + +0x00000049: 05 DW_LNS_set_column (3) +0x0000004b: 58 address += 5, line += 0 + 0x0000000000000036 3 3 1 0 0 + +0x0000004c: 06 DW_LNS_negate_stmt +0x0000004d: 4f address += 4, line += 5 + 0x000000000000003a 8 3 1 0 0 is_stmt + +0x0000004e: 02 DW_LNS_advance_pc (3) +0x00000050: 00 DW_LNE_end_sequence + 0x000000000000003d 8 3 1 0 0 is_stmt end_sequence + +0x00000053: 00 DW_LNE_set_address (0x000000000000003e) +0x0000005a: 03 DW_LNS_advance_line (11) +0x0000005c: 01 DW_LNS_copy + 0x000000000000003e 11 0 1 0 0 is_stmt + + +0x0000005d: 05 DW_LNS_set_column (10) +0x0000005f: 0a DW_LNS_set_prologue_end +0x00000060: 3d address += 3, line += 1 + 0x0000000000000041 12 10 1 0 0 is_stmt prologue_end + +0x00000061: 05 DW_LNS_set_column (3) +0x00000063: 06 DW_LNS_negate_stmt +0x00000064: 66 address += 6, line += 0 + 0x0000000000000047 12 3 1 0 0 + +0x00000065: 02 DW_LNS_advance_pc (1) +0x00000067: 00 DW_LNE_end_sequence + 0x0000000000000048 12 3 1 0 0 end_sequence + + +.debug_str contents: +0x00000000: "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)" +0x00000069: "fib2.c" +0x00000070: "/usr/local/google/home/azakai/Dev/2-binaryen" +0x0000009d: "fib" +0x000000a1: "int" +0x000000a5: "main" +0x000000aa: "n" +0x000000ac: "a" +0x000000ae: "b" +0x000000b0: "i" +0x000000b2: "t" + +.debug_ranges contents: +00000000 00000005 0000003d +00000000 0000003e 00000048 +00000000 +DWARF debug info +================ + +Contains section .debug_info (168 bytes) +Contains section .debug_loc (143 bytes) +Contains section .debug_ranges (24 bytes) +Contains section .debug_abbrev (131 bytes) +Contains section .debug_line (183 bytes) +Contains section .debug_str (180 bytes) + +.debug_abbrev contents: +Abbrev table for offset: 0x00000000 +[1] DW_TAG_compile_unit DW_CHILDREN_yes + DW_AT_producer DW_FORM_strp + DW_AT_language DW_FORM_data2 + DW_AT_name DW_FORM_strp + DW_AT_stmt_list DW_FORM_sec_offset + DW_AT_comp_dir DW_FORM_strp + DW_AT_low_pc DW_FORM_addr + DW_AT_ranges DW_FORM_sec_offset + +[2] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_GNU_all_call_sites DW_FORM_flag_present + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_prototyped DW_FORM_flag_present + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[3] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[4] DW_TAG_variable DW_CHILDREN_no + DW_AT_location DW_FORM_sec_offset + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[5] DW_TAG_variable DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[6] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_GNU_all_call_sites DW_FORM_flag_present + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[7] DW_TAG_GNU_call_site DW_CHILDREN_no + DW_AT_low_pc DW_FORM_addr + +[8] DW_TAG_base_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_encoding DW_FORM_data1 + DW_AT_byte_size DW_FORM_data1 + + +.debug_info contents: +0x00000000: Compile Unit: length = 0x000000a4 version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x000000a8) + +0x0000000b: DW_TAG_compile_unit [1] * + DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)") + DW_AT_language [DW_FORM_data2] (DW_LANG_C99) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000069] = "fib2.c") + DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) + DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x00000070] = "/usr/local/google/home/azakai/Dev/2-binaryen") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) + DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 + [0x00000005, 0x00000043) + [0x00000044, 0x0000004a)) + +0x00000026: DW_TAG_subprogram [2] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000005) + DW_AT_high_pc [DW_FORM_data4] (0x0000003e) + DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x1 +0, DW_OP_stack_value) + DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000009d] = "fib") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (1) + DW_AT_prototyped [DW_FORM_flag_present] (true) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x0000003e: DW_TAG_formal_parameter [3] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000aa] = "n") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (1) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + +0x00000049: DW_TAG_variable [4] + DW_AT_location [DW_FORM_sec_offset] (0x00000000: + [0xffffffff, 0x00000012): + [0x00000000, 0x00000009): DW_OP_consts +0, DW_OP_stack_value + [0x00000017, 0x0000002c): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ac] = "a") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (2) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + +0x00000058: DW_TAG_variable [4] + DW_AT_location [DW_FORM_sec_offset] (0x0000002b: + [0xffffffff, 0x00000012): + [0x00000000, 0x00000009): DW_OP_consts +1, DW_OP_stack_value + [0x00000017, 0x0000001c): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + [0x0000001c, 0x0000002c): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ae] = "b") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (2) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + +0x00000067: DW_TAG_variable [4] + DW_AT_location [DW_FORM_sec_offset] (0x00000064: + [0xffffffff, 0x00000012): + [0x00000000, 0x00000009): DW_OP_consts +0, DW_OP_stack_value + [0x00000027, 0x0000002c): DW_OP_WASM_location 0x0 +3, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000b0] = "i") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (2) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + +0x00000076: DW_TAG_variable [5] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000b2] = "t") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (2) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + +0x00000081: NULL + +0x00000082: DW_TAG_subprogram [6] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000044) + DW_AT_high_pc [DW_FORM_data4] (0x00000006) + DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x1 +0, DW_OP_stack_value) + DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000a5] = "main") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (11) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x0000009a: DW_TAG_GNU_call_site [7] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) + +0x0000009f: NULL + +0x000000a0: DW_TAG_base_type [8] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000a1] = "int") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) + DW_AT_byte_size [DW_FORM_data1] (0x04) + +0x000000a7: NULL + +.debug_loc contents: +0x00000000: + [0xffffffff, 0x00000012): + [0x00000000, 0x00000009): DW_OP_consts +0, DW_OP_stack_value + [0x00000017, 0x0000002c): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + +0x0000002b: + [0xffffffff, 0x00000012): + [0x00000000, 0x00000009): DW_OP_consts +1, DW_OP_stack_value + [0x00000017, 0x0000001c): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + [0x0000001c, 0x0000002c): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +0x00000064: + [0xffffffff, 0x00000012): + [0x00000000, 0x00000009): DW_OP_consts +0, DW_OP_stack_value + [0x00000027, 0x0000002c): DW_OP_WASM_location 0x0 +3, DW_OP_stack_value + +.debug_line contents: +debug_line[0x00000000] +Line table prologue: + total_length: 0x000000b3 + version: 4 + prologue_length: 0x0000001e + min_inst_length: 1 +max_ops_per_inst: 1 + default_is_stmt: 1 + line_base: -5 + line_range: 14 + opcode_base: 13 +standard_opcode_lengths[DW_LNS_copy] = 0 +standard_opcode_lengths[DW_LNS_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_advance_line] = 1 +standard_opcode_lengths[DW_LNS_set_file] = 1 +standard_opcode_lengths[DW_LNS_set_column] = 1 +standard_opcode_lengths[DW_LNS_negate_stmt] = 0 +standard_opcode_lengths[DW_LNS_set_basic_block] = 0 +standard_opcode_lengths[DW_LNS_const_add_pc] = 0 +standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 +standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 +standard_opcode_lengths[DW_LNS_set_isa] = 1 +file_names[ 1]: + name: "fib2.c" + dir_index: 0 + mod_time: 0x00000000 + length: 0x00000000 +0x00000028: 00 DW_LNE_set_address (0x0000000000000005) +0x0000002f: 01 DW_LNS_copy + 0x0000000000000005 1 0 1 0 0 is_stmt + + +0x00000030: 00 DW_LNE_set_address (0x0000000000000014) +0x00000037: 03 DW_LNS_advance_line (3) +0x00000039: 05 DW_LNS_set_column (17) +0x0000003b: 0a DW_LNS_set_prologue_end +0x0000003c: 01 DW_LNS_copy + 0x0000000000000014 3 17 1 0 0 is_stmt prologue_end + + +0x0000003d: 00 DW_LNE_set_address (0x0000000000000019) +0x00000044: 05 DW_LNS_set_column (3) +0x00000046: 06 DW_LNS_negate_stmt +0x00000047: 01 DW_LNS_copy + 0x0000000000000019 3 3 1 0 0 + + +0x00000048: 00 DW_LNE_set_address (0x0000000000000027) +0x0000004f: 03 DW_LNS_advance_line (6) +0x00000051: 05 DW_LNS_set_column (7) +0x00000053: 06 DW_LNS_negate_stmt +0x00000054: 01 DW_LNS_copy + 0x0000000000000027 6 7 1 0 0 is_stmt + + +0x00000055: 00 DW_LNE_set_address (0x0000000000000032) +0x0000005c: 03 DW_LNS_advance_line (3) +0x0000005e: 05 DW_LNS_set_column (23) +0x00000060: 01 DW_LNS_copy + 0x0000000000000032 3 23 1 0 0 is_stmt + + +0x00000061: 00 DW_LNE_set_address (0x0000000000000037) +0x00000068: 05 DW_LNS_set_column (17) +0x0000006a: 06 DW_LNS_negate_stmt +0x0000006b: 01 DW_LNS_copy + 0x0000000000000037 3 17 1 0 0 + + +0x0000006c: 00 DW_LNE_set_address (0x000000000000003c) +0x00000073: 05 DW_LNS_set_column (3) +0x00000075: 01 DW_LNS_copy + 0x000000000000003c 3 3 1 0 0 + + +0x00000076: 00 DW_LNE_set_address (0x0000000000000040) +0x0000007d: 03 DW_LNS_advance_line (8) +0x0000007f: 06 DW_LNS_negate_stmt +0x00000080: 01 DW_LNS_copy + 0x0000000000000040 8 3 1 0 0 is_stmt + + +0x00000081: 00 DW_LNE_set_address (0x0000000000000043) +0x00000088: 00 DW_LNE_end_sequence + 0x0000000000000043 8 3 1 0 0 is_stmt end_sequence + +0x0000008b: 00 DW_LNE_set_address (0x0000000000000044) +0x00000092: 03 DW_LNS_advance_line (11) +0x00000094: 01 DW_LNS_copy + 0x0000000000000044 11 0 1 0 0 is_stmt + + +0x00000095: 00 DW_LNE_set_address (0x0000000000000047) +0x0000009c: 03 DW_LNS_advance_line (12) +0x0000009e: 05 DW_LNS_set_column (10) +0x000000a0: 0a DW_LNS_set_prologue_end +0x000000a1: 01 DW_LNS_copy + 0x0000000000000047 12 10 1 0 0 is_stmt prologue_end + + +0x000000a2: 00 DW_LNE_set_address (0x0000000000000049) +0x000000a9: 05 DW_LNS_set_column (3) +0x000000ab: 06 DW_LNS_negate_stmt +0x000000ac: 01 DW_LNS_copy + 0x0000000000000049 12 3 1 0 0 + + +0x000000ad: 00 DW_LNE_set_address (0x000000000000004a) +0x000000b4: 00 DW_LNE_end_sequence + 0x000000000000004a 12 3 1 0 0 end_sequence + + +.debug_str contents: +0x00000000: "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)" +0x00000069: "fib2.c" +0x00000070: "/usr/local/google/home/azakai/Dev/2-binaryen" +0x0000009d: "fib" +0x000000a1: "int" +0x000000a5: "main" +0x000000aa: "n" +0x000000ac: "a" +0x000000ae: "b" +0x000000b0: "i" +0x000000b2: "t" + +.debug_ranges contents: +00000000 00000005 00000043 +00000000 00000044 0000004a +00000000 +(module + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (import "env" "memory" (memory $mimport$0 256 256)) + (import "env" "__indirect_function_table" (table $timport$0 1 funcref)) + (global $global$0 (mut i32) (i32.const 5243904)) + (global $global$1 i32 (i32.const 1024)) + (export "__wasm_call_ctors" (func $__wasm_call_ctors)) + (export "main" (func $main)) + (export "__data_end" (global $global$1)) + (func $__wasm_call_ctors + ) + (func $fib (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + ;; code offset: 0x10 + (local.set $1 + ;; code offset: 0xe + (i32.const 1) + ) + ;; code offset: 0x12 + (block $label$1 + ;; code offset: 0x19 + (br_if $label$1 + ;; code offset: 0x18 + (i32.lt_s + ;; code offset: 0x14 + (local.get $0) + ;; code offset: 0x16 + (i32.const 1) + ) + ) + ;; code offset: 0x1d + (local.set $2 + ;; code offset: 0x1b + (i32.const 0) + ) + ;; code offset: 0x21 + (local.set $3 + ;; code offset: 0x1f + (i32.const 0) + ) + ;; code offset: 0x23 + (loop $label$2 + ;; code offset: 0x2c + (local.set $1 + ;; code offset: 0x2b + (i32.add + ;; code offset: 0x27 + (local.tee $4 + ;; code offset: 0x25 + (local.get $1) + ) + ;; code offset: 0x29 + (local.get $2) + ) + ) + ;; code offset: 0x30 + (local.set $2 + ;; code offset: 0x2e + (local.get $4) + ) + ;; code offset: 0x3c + (br_if $label$2 + ;; code offset: 0x3b + (i32.ne + ;; code offset: 0x37 + (local.tee $3 + ;; code offset: 0x36 + (i32.add + ;; code offset: 0x32 + (local.get $3) + ;; code offset: 0x34 + (i32.const 1) + ) + ) + ;; code offset: 0x39 + (local.get $0) + ) + ) + ) + ) + ;; code offset: 0x40 + (local.get $1) + ) + (func $__original_main (result i32) + ;; code offset: 0x47 + (call $fib + ;; code offset: 0x45 + (i32.const 6) + ) + ) + (func $main (param $0 i32) (param $1 i32) (result i32) + ;; code offset: 0x4c + (call $__original_main) + ) + ;; custom section ".debug_info", size 168 + ;; custom section ".debug_loc", size 143 + ;; custom section ".debug_ranges", size 24 + ;; custom section ".debug_abbrev", size 131 + ;; custom section ".debug_line", size 183 + ;; custom section ".debug_str", size 180 + ;; custom section "producers", size 127 +) diff -Nru binaryen-91/test/passes/fib2_dwarf.passes binaryen-99/test/passes/fib2_dwarf.passes --- binaryen-91/test/passes/fib2_dwarf.passes 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/fib2_dwarf.passes 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +dwarfdump_roundtrip_dwarfdump_g Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/passes/fib2_dwarf.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/passes/fib2_dwarf.wasm differ diff -Nru binaryen-91/test/passes/fib2_emptylocspan_dwarf.bin.txt binaryen-99/test/passes/fib2_emptylocspan_dwarf.bin.txt --- binaryen-91/test/passes/fib2_emptylocspan_dwarf.bin.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/fib2_emptylocspan_dwarf.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,722 @@ +DWARF debug info +================ + +Contains section .debug_info (168 bytes) +Contains section .debug_loc (143 bytes) +Contains section .debug_ranges (24 bytes) +Contains section .debug_abbrev (131 bytes) +Contains section .debug_line (106 bytes) +Contains section .debug_str (180 bytes) + +.debug_abbrev contents: +Abbrev table for offset: 0x00000000 +[1] DW_TAG_compile_unit DW_CHILDREN_yes + DW_AT_producer DW_FORM_strp + DW_AT_language DW_FORM_data2 + DW_AT_name DW_FORM_strp + DW_AT_stmt_list DW_FORM_sec_offset + DW_AT_comp_dir DW_FORM_strp + DW_AT_low_pc DW_FORM_addr + DW_AT_ranges DW_FORM_sec_offset + +[2] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_GNU_all_call_sites DW_FORM_flag_present + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_prototyped DW_FORM_flag_present + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[3] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[4] DW_TAG_variable DW_CHILDREN_no + DW_AT_location DW_FORM_sec_offset + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[5] DW_TAG_variable DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[6] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_GNU_all_call_sites DW_FORM_flag_present + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[7] DW_TAG_GNU_call_site DW_CHILDREN_no + DW_AT_low_pc DW_FORM_addr + +[8] DW_TAG_base_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_encoding DW_FORM_data1 + DW_AT_byte_size DW_FORM_data1 + + +.debug_info contents: +0x00000000: Compile Unit: length = 0x000000a4 version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x000000a8) + +0x0000000b: DW_TAG_compile_unit [1] * + DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)") + DW_AT_language [DW_FORM_data2] (DW_LANG_C99) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000069] = "fib2.c") + DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) + DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x00000070] = "/usr/local/google/home/azakai/Dev/2-binaryen") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) + DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 + [0x00000005, 0x0000003d) + [0x0000003e, 0x00000048)) + +0x00000026: DW_TAG_subprogram [2] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000005) + DW_AT_high_pc [DW_FORM_data4] (0x00000038) + DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x1 +0, DW_OP_stack_value) + DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000009d] = "fib") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (1) + DW_AT_prototyped [DW_FORM_flag_present] (true) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x0000003e: DW_TAG_formal_parameter [3] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000aa] = "n") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (1) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + +0x00000049: DW_TAG_variable [4] + DW_AT_location [DW_FORM_sec_offset] (0x00000000: + [0xffffffff, 0x00000005): + [0x00000007, 0x00000007): DW_OP_consts +0, DW_OP_stack_value + [0x0000001e, 0x0000001e): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ac] = "a") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (2) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + +0x00000058: DW_TAG_variable [4] + DW_AT_location [DW_FORM_sec_offset] (0x0000002b: + [0xffffffff, 0x00000005): + [0x00000007, 0x00000010): DW_OP_consts +1, DW_OP_stack_value + [0x0000001e, 0x00000023): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + [0x00000023, 0x00000033): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ae] = "b") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (2) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + +0x00000067: DW_TAG_variable [4] + DW_AT_location [DW_FORM_sec_offset] (0x00000064: + [0xffffffff, 0x00000005): + [0x00000007, 0x00000010): DW_OP_consts +0, DW_OP_stack_value + [0x0000002e, 0x00000033): DW_OP_WASM_location 0x0 +3, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000b0] = "i") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (2) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + +0x00000076: DW_TAG_variable [5] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000b2] = "t") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (2) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + +0x00000081: NULL + +0x00000082: DW_TAG_subprogram [6] * + DW_AT_low_pc [DW_FORM_addr] (0x000000000000003e) + DW_AT_high_pc [DW_FORM_data4] (0x0000000a) + DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x1 +0, DW_OP_stack_value) + DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000a5] = "main") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (11) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x0000009a: DW_TAG_GNU_call_site [7] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000047) + +0x0000009f: NULL + +0x000000a0: DW_TAG_base_type [8] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000a1] = "int") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) + DW_AT_byte_size [DW_FORM_data1] (0x04) + +0x000000a7: NULL + +.debug_loc contents: +0x00000000: + [0xffffffff, 0x00000005): + [0x00000007, 0x00000007): DW_OP_consts +0, DW_OP_stack_value + [0x0000001e, 0x0000001e): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + +0x0000002b: + [0xffffffff, 0x00000005): + [0x00000007, 0x00000010): DW_OP_consts +1, DW_OP_stack_value + [0x0000001e, 0x00000023): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + [0x00000023, 0x00000033): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +0x00000064: + [0xffffffff, 0x00000005): + [0x00000007, 0x00000010): DW_OP_consts +0, DW_OP_stack_value + [0x0000002e, 0x00000033): DW_OP_WASM_location 0x0 +3, DW_OP_stack_value + +.debug_line contents: +debug_line[0x00000000] +Line table prologue: + total_length: 0x00000066 + version: 4 + prologue_length: 0x0000001e + min_inst_length: 1 +max_ops_per_inst: 1 + default_is_stmt: 1 + line_base: -5 + line_range: 14 + opcode_base: 13 +standard_opcode_lengths[DW_LNS_copy] = 0 +standard_opcode_lengths[DW_LNS_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_advance_line] = 1 +standard_opcode_lengths[DW_LNS_set_file] = 1 +standard_opcode_lengths[DW_LNS_set_column] = 1 +standard_opcode_lengths[DW_LNS_negate_stmt] = 0 +standard_opcode_lengths[DW_LNS_set_basic_block] = 0 +standard_opcode_lengths[DW_LNS_const_add_pc] = 0 +standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 +standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 +standard_opcode_lengths[DW_LNS_set_isa] = 1 +file_names[ 1]: + name: "fib2.c" + dir_index: 0 + mod_time: 0x00000000 + length: 0x00000000 +0x00000028: 00 DW_LNE_set_address (0x0000000000000005) +0x0000002f: 01 DW_LNS_copy + 0x0000000000000005 1 0 1 0 0 is_stmt + + +0x00000030: 05 DW_LNS_set_column (17) +0x00000032: 0a DW_LNS_set_prologue_end +0x00000033: 92 address += 9, line += 2 + 0x000000000000000e 3 17 1 0 0 is_stmt prologue_end + +0x00000034: 05 DW_LNS_set_column (3) +0x00000036: 06 DW_LNS_negate_stmt +0x00000037: 58 address += 5, line += 0 + 0x0000000000000013 3 3 1 0 0 + +0x00000038: 2b address += 2, line += -3 + 0x0000000000000015 0 3 1 0 0 + +0x00000039: 05 DW_LNS_set_column (7) +0x0000003b: 06 DW_LNS_negate_stmt +0x0000003c: c0 address += 12, line += 6 + 0x0000000000000021 6 7 1 0 0 is_stmt + +0x0000003d: 06 DW_LNS_negate_stmt +0x0000003e: 03 DW_LNS_advance_line (0) +0x00000040: 74 address += 7, line += 0 + 0x0000000000000028 0 7 1 0 0 + +0x00000041: 05 DW_LNS_set_column (23) +0x00000043: 06 DW_LNS_negate_stmt +0x00000044: 4d address += 4, line += 3 + 0x000000000000002c 3 23 1 0 0 is_stmt + +0x00000045: 05 DW_LNS_set_column (17) +0x00000047: 06 DW_LNS_negate_stmt +0x00000048: 58 address += 5, line += 0 + 0x0000000000000031 3 17 1 0 0 + +0x00000049: 05 DW_LNS_set_column (3) +0x0000004b: 58 address += 5, line += 0 + 0x0000000000000036 3 3 1 0 0 + +0x0000004c: 06 DW_LNS_negate_stmt +0x0000004d: 4f address += 4, line += 5 + 0x000000000000003a 8 3 1 0 0 is_stmt + +0x0000004e: 02 DW_LNS_advance_pc (3) +0x00000050: 00 DW_LNE_end_sequence + 0x000000000000003d 8 3 1 0 0 is_stmt end_sequence + +0x00000053: 00 DW_LNE_set_address (0x000000000000003e) +0x0000005a: 03 DW_LNS_advance_line (11) +0x0000005c: 01 DW_LNS_copy + 0x000000000000003e 11 0 1 0 0 is_stmt + + +0x0000005d: 05 DW_LNS_set_column (10) +0x0000005f: 0a DW_LNS_set_prologue_end +0x00000060: 3d address += 3, line += 1 + 0x0000000000000041 12 10 1 0 0 is_stmt prologue_end + +0x00000061: 05 DW_LNS_set_column (3) +0x00000063: 06 DW_LNS_negate_stmt +0x00000064: 66 address += 6, line += 0 + 0x0000000000000047 12 3 1 0 0 + +0x00000065: 02 DW_LNS_advance_pc (1) +0x00000067: 00 DW_LNE_end_sequence + 0x0000000000000048 12 3 1 0 0 end_sequence + + +.debug_str contents: +0x00000000: "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)" +0x00000069: "fib2.c" +0x00000070: "/usr/local/google/home/azakai/Dev/2-binaryen" +0x0000009d: "fib" +0x000000a1: "int" +0x000000a5: "main" +0x000000aa: "n" +0x000000ac: "a" +0x000000ae: "b" +0x000000b0: "i" +0x000000b2: "t" + +.debug_ranges contents: +00000000 00000005 0000003d +00000000 0000003e 00000048 +00000000 +DWARF debug info +================ + +Contains section .debug_info (168 bytes) +Contains section .debug_loc (143 bytes) +Contains section .debug_ranges (24 bytes) +Contains section .debug_abbrev (131 bytes) +Contains section .debug_line (183 bytes) +Contains section .debug_str (180 bytes) + +.debug_abbrev contents: +Abbrev table for offset: 0x00000000 +[1] DW_TAG_compile_unit DW_CHILDREN_yes + DW_AT_producer DW_FORM_strp + DW_AT_language DW_FORM_data2 + DW_AT_name DW_FORM_strp + DW_AT_stmt_list DW_FORM_sec_offset + DW_AT_comp_dir DW_FORM_strp + DW_AT_low_pc DW_FORM_addr + DW_AT_ranges DW_FORM_sec_offset + +[2] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_GNU_all_call_sites DW_FORM_flag_present + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_prototyped DW_FORM_flag_present + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[3] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[4] DW_TAG_variable DW_CHILDREN_no + DW_AT_location DW_FORM_sec_offset + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[5] DW_TAG_variable DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[6] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_GNU_all_call_sites DW_FORM_flag_present + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[7] DW_TAG_GNU_call_site DW_CHILDREN_no + DW_AT_low_pc DW_FORM_addr + +[8] DW_TAG_base_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_encoding DW_FORM_data1 + DW_AT_byte_size DW_FORM_data1 + + +.debug_info contents: +0x00000000: Compile Unit: length = 0x000000a4 version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x000000a8) + +0x0000000b: DW_TAG_compile_unit [1] * + DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)") + DW_AT_language [DW_FORM_data2] (DW_LANG_C99) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000069] = "fib2.c") + DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) + DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x00000070] = "/usr/local/google/home/azakai/Dev/2-binaryen") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) + DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 + [0x00000005, 0x00000043) + [0x00000044, 0x0000004a)) + +0x00000026: DW_TAG_subprogram [2] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000005) + DW_AT_high_pc [DW_FORM_data4] (0x0000003e) + DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x1 +0, DW_OP_stack_value) + DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000009d] = "fib") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (1) + DW_AT_prototyped [DW_FORM_flag_present] (true) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x0000003e: DW_TAG_formal_parameter [3] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000aa] = "n") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (1) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + +0x00000049: DW_TAG_variable [4] + DW_AT_location [DW_FORM_sec_offset] (0x00000000: + [0xffffffff, 0x00000012): + [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value + [0x00000017, 0x00000017): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ac] = "a") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (2) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + +0x00000058: DW_TAG_variable [4] + DW_AT_location [DW_FORM_sec_offset] (0x0000002b: + [0xffffffff, 0x00000012): + [0x00000000, 0x00000009): DW_OP_consts +1, DW_OP_stack_value + [0x00000017, 0x0000001c): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + [0x0000001c, 0x0000002c): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ae] = "b") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (2) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + +0x00000067: DW_TAG_variable [4] + DW_AT_location [DW_FORM_sec_offset] (0x00000064: + [0xffffffff, 0x00000012): + [0x00000000, 0x00000009): DW_OP_consts +0, DW_OP_stack_value + [0x00000027, 0x0000002c): DW_OP_WASM_location 0x0 +3, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000b0] = "i") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (2) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + +0x00000076: DW_TAG_variable [5] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000b2] = "t") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (2) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + +0x00000081: NULL + +0x00000082: DW_TAG_subprogram [6] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000044) + DW_AT_high_pc [DW_FORM_data4] (0x00000006) + DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x1 +0, DW_OP_stack_value) + DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000a5] = "main") + DW_AT_decl_file [DW_FORM_data1] ("/usr/local/google/home/azakai/Dev/2-binaryen/fib2.c") + DW_AT_decl_line [DW_FORM_data1] (11) + DW_AT_type [DW_FORM_ref4] (cu + 0x00a0 => {0x000000a0} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x0000009a: DW_TAG_GNU_call_site [7] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) + +0x0000009f: NULL + +0x000000a0: DW_TAG_base_type [8] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000a1] = "int") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) + DW_AT_byte_size [DW_FORM_data1] (0x04) + +0x000000a7: NULL + +.debug_loc contents: +0x00000000: + [0xffffffff, 0x00000012): + [0x00000001, 0x00000001): DW_OP_consts +0, DW_OP_stack_value + [0x00000017, 0x00000017): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + +0x0000002b: + [0xffffffff, 0x00000012): + [0x00000000, 0x00000009): DW_OP_consts +1, DW_OP_stack_value + [0x00000017, 0x0000001c): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + [0x0000001c, 0x0000002c): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +0x00000064: + [0xffffffff, 0x00000012): + [0x00000000, 0x00000009): DW_OP_consts +0, DW_OP_stack_value + [0x00000027, 0x0000002c): DW_OP_WASM_location 0x0 +3, DW_OP_stack_value + +.debug_line contents: +debug_line[0x00000000] +Line table prologue: + total_length: 0x000000b3 + version: 4 + prologue_length: 0x0000001e + min_inst_length: 1 +max_ops_per_inst: 1 + default_is_stmt: 1 + line_base: -5 + line_range: 14 + opcode_base: 13 +standard_opcode_lengths[DW_LNS_copy] = 0 +standard_opcode_lengths[DW_LNS_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_advance_line] = 1 +standard_opcode_lengths[DW_LNS_set_file] = 1 +standard_opcode_lengths[DW_LNS_set_column] = 1 +standard_opcode_lengths[DW_LNS_negate_stmt] = 0 +standard_opcode_lengths[DW_LNS_set_basic_block] = 0 +standard_opcode_lengths[DW_LNS_const_add_pc] = 0 +standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 +standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 +standard_opcode_lengths[DW_LNS_set_isa] = 1 +file_names[ 1]: + name: "fib2.c" + dir_index: 0 + mod_time: 0x00000000 + length: 0x00000000 +0x00000028: 00 DW_LNE_set_address (0x0000000000000005) +0x0000002f: 01 DW_LNS_copy + 0x0000000000000005 1 0 1 0 0 is_stmt + + +0x00000030: 00 DW_LNE_set_address (0x0000000000000014) +0x00000037: 03 DW_LNS_advance_line (3) +0x00000039: 05 DW_LNS_set_column (17) +0x0000003b: 0a DW_LNS_set_prologue_end +0x0000003c: 01 DW_LNS_copy + 0x0000000000000014 3 17 1 0 0 is_stmt prologue_end + + +0x0000003d: 00 DW_LNE_set_address (0x0000000000000019) +0x00000044: 05 DW_LNS_set_column (3) +0x00000046: 06 DW_LNS_negate_stmt +0x00000047: 01 DW_LNS_copy + 0x0000000000000019 3 3 1 0 0 + + +0x00000048: 00 DW_LNE_set_address (0x0000000000000027) +0x0000004f: 03 DW_LNS_advance_line (6) +0x00000051: 05 DW_LNS_set_column (7) +0x00000053: 06 DW_LNS_negate_stmt +0x00000054: 01 DW_LNS_copy + 0x0000000000000027 6 7 1 0 0 is_stmt + + +0x00000055: 00 DW_LNE_set_address (0x0000000000000032) +0x0000005c: 03 DW_LNS_advance_line (3) +0x0000005e: 05 DW_LNS_set_column (23) +0x00000060: 01 DW_LNS_copy + 0x0000000000000032 3 23 1 0 0 is_stmt + + +0x00000061: 00 DW_LNE_set_address (0x0000000000000037) +0x00000068: 05 DW_LNS_set_column (17) +0x0000006a: 06 DW_LNS_negate_stmt +0x0000006b: 01 DW_LNS_copy + 0x0000000000000037 3 17 1 0 0 + + +0x0000006c: 00 DW_LNE_set_address (0x000000000000003c) +0x00000073: 05 DW_LNS_set_column (3) +0x00000075: 01 DW_LNS_copy + 0x000000000000003c 3 3 1 0 0 + + +0x00000076: 00 DW_LNE_set_address (0x0000000000000040) +0x0000007d: 03 DW_LNS_advance_line (8) +0x0000007f: 06 DW_LNS_negate_stmt +0x00000080: 01 DW_LNS_copy + 0x0000000000000040 8 3 1 0 0 is_stmt + + +0x00000081: 00 DW_LNE_set_address (0x0000000000000043) +0x00000088: 00 DW_LNE_end_sequence + 0x0000000000000043 8 3 1 0 0 is_stmt end_sequence + +0x0000008b: 00 DW_LNE_set_address (0x0000000000000044) +0x00000092: 03 DW_LNS_advance_line (11) +0x00000094: 01 DW_LNS_copy + 0x0000000000000044 11 0 1 0 0 is_stmt + + +0x00000095: 00 DW_LNE_set_address (0x0000000000000047) +0x0000009c: 03 DW_LNS_advance_line (12) +0x0000009e: 05 DW_LNS_set_column (10) +0x000000a0: 0a DW_LNS_set_prologue_end +0x000000a1: 01 DW_LNS_copy + 0x0000000000000047 12 10 1 0 0 is_stmt prologue_end + + +0x000000a2: 00 DW_LNE_set_address (0x0000000000000049) +0x000000a9: 05 DW_LNS_set_column (3) +0x000000ab: 06 DW_LNS_negate_stmt +0x000000ac: 01 DW_LNS_copy + 0x0000000000000049 12 3 1 0 0 + + +0x000000ad: 00 DW_LNE_set_address (0x000000000000004a) +0x000000b4: 00 DW_LNE_end_sequence + 0x000000000000004a 12 3 1 0 0 end_sequence + + +.debug_str contents: +0x00000000: "clang version 11.0.0 (https://github.com/llvm/llvm-project.git 313d89724ce3ccf66c1c51849903e1e6d184dd85)" +0x00000069: "fib2.c" +0x00000070: "/usr/local/google/home/azakai/Dev/2-binaryen" +0x0000009d: "fib" +0x000000a1: "int" +0x000000a5: "main" +0x000000aa: "n" +0x000000ac: "a" +0x000000ae: "b" +0x000000b0: "i" +0x000000b2: "t" + +.debug_ranges contents: +00000000 00000005 00000043 +00000000 00000044 0000004a +00000000 +(module + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (import "env" "memory" (memory $mimport$0 256 256)) + (import "env" "__indirect_function_table" (table $timport$0 1 funcref)) + (global $global$0 (mut i32) (i32.const 5243904)) + (global $global$1 i32 (i32.const 1024)) + (export "__wasm_call_ctors" (func $__wasm_call_ctors)) + (export "main" (func $main)) + (export "__data_end" (global $global$1)) + (func $__wasm_call_ctors + ) + (func $fib (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + ;; code offset: 0x10 + (local.set $1 + ;; code offset: 0xe + (i32.const 1) + ) + ;; code offset: 0x12 + (block $label$1 + ;; code offset: 0x19 + (br_if $label$1 + ;; code offset: 0x18 + (i32.lt_s + ;; code offset: 0x14 + (local.get $0) + ;; code offset: 0x16 + (i32.const 1) + ) + ) + ;; code offset: 0x1d + (local.set $2 + ;; code offset: 0x1b + (i32.const 0) + ) + ;; code offset: 0x21 + (local.set $3 + ;; code offset: 0x1f + (i32.const 0) + ) + ;; code offset: 0x23 + (loop $label$2 + ;; code offset: 0x2c + (local.set $1 + ;; code offset: 0x2b + (i32.add + ;; code offset: 0x27 + (local.tee $4 + ;; code offset: 0x25 + (local.get $1) + ) + ;; code offset: 0x29 + (local.get $2) + ) + ) + ;; code offset: 0x30 + (local.set $2 + ;; code offset: 0x2e + (local.get $4) + ) + ;; code offset: 0x3c + (br_if $label$2 + ;; code offset: 0x3b + (i32.ne + ;; code offset: 0x37 + (local.tee $3 + ;; code offset: 0x36 + (i32.add + ;; code offset: 0x32 + (local.get $3) + ;; code offset: 0x34 + (i32.const 1) + ) + ) + ;; code offset: 0x39 + (local.get $0) + ) + ) + ) + ) + ;; code offset: 0x40 + (local.get $1) + ) + (func $__original_main (result i32) + ;; code offset: 0x47 + (call $fib + ;; code offset: 0x45 + (i32.const 6) + ) + ) + (func $main (param $0 i32) (param $1 i32) (result i32) + ;; code offset: 0x4c + (call $__original_main) + ) + ;; custom section ".debug_info", size 168 + ;; custom section ".debug_loc", size 143 + ;; custom section ".debug_ranges", size 24 + ;; custom section ".debug_abbrev", size 131 + ;; custom section ".debug_line", size 183 + ;; custom section ".debug_str", size 180 + ;; custom section "producers", size 127 +) diff -Nru binaryen-91/test/passes/fib2_emptylocspan_dwarf.passes binaryen-99/test/passes/fib2_emptylocspan_dwarf.passes --- binaryen-91/test/passes/fib2_emptylocspan_dwarf.passes 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/fib2_emptylocspan_dwarf.passes 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +dwarfdump_roundtrip_dwarfdump_g Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/passes/fib2_emptylocspan_dwarf.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/passes/fib2_emptylocspan_dwarf.wasm differ diff -Nru binaryen-91/test/passes/fib2.passes binaryen-99/test/passes/fib2.passes --- binaryen-91/test/passes/fib2.passes 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/fib2.passes 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -dwarfdump_roundtrip_dwarfdump_g Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/passes/fib2.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/passes/fib2.wasm differ diff -Nru binaryen-91/test/passes/fib_nonzero-low-pc_dwarf.bin.txt binaryen-99/test/passes/fib_nonzero-low-pc_dwarf.bin.txt --- binaryen-91/test/passes/fib_nonzero-low-pc_dwarf.bin.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/fib_nonzero-low-pc_dwarf.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,627 @@ +DWARF debug info +================ + +Contains section .debug_info (155 bytes) +Contains section .debug_loc (182 bytes) +Contains section .debug_abbrev (94 bytes) +Contains section .debug_line (86 bytes) +Contains section .debug_str (157 bytes) + +.debug_abbrev contents: +Abbrev table for offset: 0x00000000 +[1] DW_TAG_compile_unit DW_CHILDREN_yes + DW_AT_producer DW_FORM_strp + DW_AT_language DW_FORM_data2 + DW_AT_name DW_FORM_strp + DW_AT_stmt_list DW_FORM_sec_offset + DW_AT_comp_dir DW_FORM_strp + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + +[2] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_GNU_all_call_sites DW_FORM_flag_present + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_prototyped DW_FORM_flag_present + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[3] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[4] DW_TAG_variable DW_CHILDREN_no + DW_AT_location DW_FORM_sec_offset + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[5] DW_TAG_lexical_block DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + +[6] DW_TAG_base_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_encoding DW_FORM_data1 + DW_AT_byte_size DW_FORM_data1 + + +.debug_info contents: +0x00000000: Compile Unit: length = 0x00000097 version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x0000009b) + +0x0000000b: DW_TAG_compile_unit [1] * + DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 11.0.0 (https://github.com/llvm/llvm-project.git b0e51167aff84e52fb99f69db6f8965304eee2cf)") + DW_AT_language [DW_FORM_data2] (DW_LANG_C99) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000069] = "fib.c") + DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) + DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x0000006f] = "D:\\test\\fib") + DW_AT_low_pc [DW_FORM_addr] (0x000000000000000a) + DW_AT_high_pc [DW_FORM_data4] (0x0000003f) + +0x00000026: DW_TAG_subprogram [2] * + DW_AT_low_pc [DW_FORM_addr] (0x000000000000000a) + DW_AT_high_pc [DW_FORM_data4] (0x0000003f) + DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x3 +0, 00 00 9f) + DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000007b] = "fib") + DW_AT_decl_file [DW_FORM_data1] ("D:\test\fib/fib.c") + DW_AT_decl_line [DW_FORM_data1] (3) + DW_AT_prototyped [DW_FORM_flag_present] (true) + DW_AT_type [DW_FORM_ref4] (cu + 0x0093 => {0x00000093} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x00000041: DW_TAG_formal_parameter [3] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000083] = "n") + DW_AT_decl_file [DW_FORM_data1] ("D:\test\fib/fib.c") + DW_AT_decl_line [DW_FORM_data1] (3) + DW_AT_type [DW_FORM_ref4] (cu + 0x0093 => {0x00000093} "int") + +0x0000004c: DW_TAG_variable [4] + DW_AT_location [DW_FORM_sec_offset] (0x00000000: + [0x0000000a, 0x0000001a): DW_OP_consts +1, DW_OP_stack_value + [0x00000026, 0x00000028): DW_OP_WASM_location 0x2 +0, DW_OP_stack_value + [0x00000028, 0x00000044): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000085] = "previous") + DW_AT_decl_file [DW_FORM_data1] ("D:\test\fib/fib.c") + DW_AT_decl_line [DW_FORM_data1] (4) + DW_AT_type [DW_FORM_ref4] (cu + 0x0093 => {0x00000093} "int") + +0x0000005b: DW_TAG_variable [4] + DW_AT_location [DW_FORM_sec_offset] (0x00000031: + [0x0000000a, 0x0000001a): DW_OP_consts +1, DW_OP_stack_value + [0x0000002d, 0x00000044): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000008e] = "current") + DW_AT_decl_file [DW_FORM_data1] ("D:\test\fib/fib.c") + DW_AT_decl_line [DW_FORM_data1] (5) + DW_AT_type [DW_FORM_ref4] (cu + 0x0093 => {0x00000093} "int") + +0x0000006a: DW_TAG_variable [4] + DW_AT_location [DW_FORM_sec_offset] (0x00000054: + [0x0000000a, 0x0000001a): DW_OP_consts +1, DW_OP_stack_value + [0x00000026, 0x00000028): DW_OP_WASM_location 0x2 +0, DW_OP_stack_value + [0x00000028, 0x0000002d): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + [0x0000002d, 0x00000044): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000096] = "next") + DW_AT_decl_file [DW_FORM_data1] ("D:\test\fib/fib.c") + DW_AT_decl_line [DW_FORM_data1] (6) + DW_AT_type [DW_FORM_ref4] (cu + 0x0093 => {0x00000093} "int") + +0x00000079: DW_TAG_lexical_block [5] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000013) + DW_AT_high_pc [DW_FORM_data4] (0x00000033) + +0x00000082: DW_TAG_variable [4] + DW_AT_location [DW_FORM_sec_offset] (0x00000093: + [0x0000000a, 0x0000001a): DW_OP_consts +3, DW_OP_stack_value + [0x00000039, 0x0000003b): DW_OP_WASM_location 0x2 +0, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000009b] = "i") + DW_AT_decl_file [DW_FORM_data1] ("D:\test\fib/fib.c") + DW_AT_decl_line [DW_FORM_data1] (7) + DW_AT_type [DW_FORM_ref4] (cu + 0x0093 => {0x00000093} "int") + +0x00000091: NULL + +0x00000092: NULL + +0x00000093: DW_TAG_base_type [6] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000007f] = "int") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) + DW_AT_byte_size [DW_FORM_data1] (0x04) + +0x0000009a: NULL + +.debug_loc contents: +0x00000000: + [0x00000000, 0x00000010): DW_OP_consts +1, DW_OP_stack_value + [0x0000001c, 0x0000001e): DW_OP_WASM_location 0x2 +0, DW_OP_stack_value + [0x0000001e, 0x0000003a): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + +0x00000031: + [0x00000000, 0x00000010): DW_OP_consts +1, DW_OP_stack_value + [0x00000023, 0x0000003a): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +0x00000054: + [0x00000000, 0x00000010): DW_OP_consts +1, DW_OP_stack_value + [0x0000001c, 0x0000001e): DW_OP_WASM_location 0x2 +0, DW_OP_stack_value + [0x0000001e, 0x00000023): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + [0x00000023, 0x0000003a): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +0x00000093: + [0x00000000, 0x00000010): DW_OP_consts +3, DW_OP_stack_value + [0x0000002f, 0x00000031): DW_OP_WASM_location 0x2 +0, DW_OP_stack_value + +.debug_line contents: +debug_line[0x00000000] +Line table prologue: + total_length: 0x00000052 + version: 4 + prologue_length: 0x0000001d + min_inst_length: 1 +max_ops_per_inst: 1 + default_is_stmt: 1 + line_base: -5 + line_range: 14 + opcode_base: 13 +standard_opcode_lengths[DW_LNS_copy] = 0 +standard_opcode_lengths[DW_LNS_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_advance_line] = 1 +standard_opcode_lengths[DW_LNS_set_file] = 1 +standard_opcode_lengths[DW_LNS_set_column] = 1 +standard_opcode_lengths[DW_LNS_negate_stmt] = 0 +standard_opcode_lengths[DW_LNS_set_basic_block] = 0 +standard_opcode_lengths[DW_LNS_const_add_pc] = 0 +standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 +standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 +standard_opcode_lengths[DW_LNS_set_isa] = 1 +file_names[ 1]: + name: "fib.c" + dir_index: 0 + mod_time: 0x00000000 + length: 0x00000000 +0x00000027: 00 DW_LNE_set_address (0x000000000000000a) +0x0000002e: 14 address += 0, line += 2 + 0x000000000000000a 3 0 1 0 0 is_stmt + +0x0000002f: 05 DW_LNS_set_column (23) +0x00000031: 0a DW_LNS_set_prologue_end +0x00000032: 94 address += 9, line += 4 + 0x0000000000000013 7 23 1 0 0 is_stmt prologue_end + +0x00000033: 05 DW_LNS_set_column (5) +0x00000035: 06 DW_LNS_negate_stmt +0x00000036: 58 address += 5, line += 0 + 0x0000000000000018 7 5 1 0 0 + +0x00000037: 03 DW_LNS_advance_line (0) +0x00000039: 2e address += 2, line += 0 + 0x000000000000001a 0 5 1 0 0 + +0x0000003a: 05 DW_LNS_set_column (24) +0x0000003c: 06 DW_LNS_negate_stmt +0x0000003d: 03 DW_LNS_advance_line (9) +0x0000003f: ba address += 12, line += 0 + 0x0000000000000026 9 24 1 0 0 is_stmt + +0x00000040: 05 DW_LNS_set_column (23) +0x00000042: 72 address += 7, line += -2 + 0x000000000000002d 7 23 1 0 0 is_stmt + +0x00000043: 05 DW_LNS_set_column (29) +0x00000045: 06 DW_LNS_negate_stmt +0x00000046: 74 address += 7, line += 0 + 0x0000000000000034 7 29 1 0 0 + +0x00000047: 03 DW_LNS_advance_line (0) +0x00000049: 58 address += 5, line += 0 + 0x0000000000000039 0 29 1 0 0 + +0x0000004a: 05 DW_LNS_set_column (5) +0x0000004c: 6d address += 6, line += 7 + 0x000000000000003f 7 5 1 0 0 + +0x0000004d: 06 DW_LNS_negate_stmt +0x0000004e: 03 DW_LNS_advance_line (16) +0x00000050: 74 address += 7, line += 0 + 0x0000000000000046 16 5 1 0 0 is_stmt + +0x00000051: 02 DW_LNS_advance_pc (3) +0x00000053: 00 DW_LNE_end_sequence + 0x0000000000000049 16 5 1 0 0 is_stmt end_sequence + + +.debug_str contents: +0x00000000: "clang version 11.0.0 (https://github.com/llvm/llvm-project.git b0e51167aff84e52fb99f69db6f8965304eee2cf)" +0x00000069: "fib.c" +0x0000006f: "D:\test\fib" +0x0000007b: "fib" +0x0000007f: "int" +0x00000083: "n" +0x00000085: "previous" +0x0000008e: "current" +0x00000096: "next" +0x0000009b: "i" +DWARF debug info +================ + +Contains section .debug_info (155 bytes) +Contains section .debug_loc (182 bytes) +Contains section .debug_abbrev (94 bytes) +Contains section .debug_line (140 bytes) +Contains section .debug_str (157 bytes) + +.debug_abbrev contents: +Abbrev table for offset: 0x00000000 +[1] DW_TAG_compile_unit DW_CHILDREN_yes + DW_AT_producer DW_FORM_strp + DW_AT_language DW_FORM_data2 + DW_AT_name DW_FORM_strp + DW_AT_stmt_list DW_FORM_sec_offset + DW_AT_comp_dir DW_FORM_strp + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + +[2] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_GNU_all_call_sites DW_FORM_flag_present + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_prototyped DW_FORM_flag_present + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[3] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[4] DW_TAG_variable DW_CHILDREN_no + DW_AT_location DW_FORM_sec_offset + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[5] DW_TAG_lexical_block DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + +[6] DW_TAG_base_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_encoding DW_FORM_data1 + DW_AT_byte_size DW_FORM_data1 + + +.debug_info contents: +0x00000000: Compile Unit: length = 0x00000097 version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x0000009b) + +0x0000000b: DW_TAG_compile_unit [1] * + DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 11.0.0 (https://github.com/llvm/llvm-project.git b0e51167aff84e52fb99f69db6f8965304eee2cf)") + DW_AT_language [DW_FORM_data2] (DW_LANG_C99) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000069] = "fib.c") + DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) + DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x0000006f] = "D:\\test\\fib") + DW_AT_low_pc [DW_FORM_addr] (0x000000000000000a) + DW_AT_high_pc [DW_FORM_data4] (0x00000047) + +0x00000026: DW_TAG_subprogram [2] * + DW_AT_low_pc [DW_FORM_addr] (0x000000000000000a) + DW_AT_high_pc [DW_FORM_data4] (0x00000047) + DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x3 +0, 00 00 9f) + DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000007b] = "fib") + DW_AT_decl_file [DW_FORM_data1] ("D:\test\fib/fib.c") + DW_AT_decl_line [DW_FORM_data1] (3) + DW_AT_prototyped [DW_FORM_flag_present] (true) + DW_AT_type [DW_FORM_ref4] (cu + 0x0093 => {0x00000093} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x00000041: DW_TAG_formal_parameter [3] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000083] = "n") + DW_AT_decl_file [DW_FORM_data1] ("D:\test\fib/fib.c") + DW_AT_decl_line [DW_FORM_data1] (3) + DW_AT_type [DW_FORM_ref4] (cu + 0x0093 => {0x00000093} "int") + +0x0000004c: DW_TAG_variable [4] + DW_AT_location [DW_FORM_sec_offset] (0x00000000: + [0x0000000a, 0x00000022): DW_OP_consts +1, DW_OP_stack_value + [0x0000002e, 0x00000030): DW_OP_WASM_location 0x2 +0, DW_OP_stack_value + [0x00000030, 0x0000004c): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000085] = "previous") + DW_AT_decl_file [DW_FORM_data1] ("D:\test\fib/fib.c") + DW_AT_decl_line [DW_FORM_data1] (4) + DW_AT_type [DW_FORM_ref4] (cu + 0x0093 => {0x00000093} "int") + +0x0000005b: DW_TAG_variable [4] + DW_AT_location [DW_FORM_sec_offset] (0x00000031: + [0x0000000a, 0x00000022): DW_OP_consts +1, DW_OP_stack_value + [0x00000035, 0x0000004c): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000008e] = "current") + DW_AT_decl_file [DW_FORM_data1] ("D:\test\fib/fib.c") + DW_AT_decl_line [DW_FORM_data1] (5) + DW_AT_type [DW_FORM_ref4] (cu + 0x0093 => {0x00000093} "int") + +0x0000006a: DW_TAG_variable [4] + DW_AT_location [DW_FORM_sec_offset] (0x00000054: + [0x0000000a, 0x00000022): DW_OP_consts +1, DW_OP_stack_value + [0x0000002e, 0x00000030): DW_OP_WASM_location 0x2 +0, DW_OP_stack_value + [0x00000030, 0x00000035): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + [0x00000035, 0x0000004c): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000096] = "next") + DW_AT_decl_file [DW_FORM_data1] ("D:\test\fib/fib.c") + DW_AT_decl_line [DW_FORM_data1] (6) + DW_AT_type [DW_FORM_ref4] (cu + 0x0093 => {0x00000093} "int") + +0x00000079: DW_TAG_lexical_block [5] * + DW_AT_low_pc [DW_FORM_addr] (0x000000000000001b) + DW_AT_high_pc [DW_FORM_data4] (0x00000033) + +0x00000082: DW_TAG_variable [4] + DW_AT_location [DW_FORM_sec_offset] (0x00000093: + [0x0000000a, 0x00000022): DW_OP_consts +3, DW_OP_stack_value + [0x00000041, 0x00000043): DW_OP_WASM_location 0x2 +0, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000009b] = "i") + DW_AT_decl_file [DW_FORM_data1] ("D:\test\fib/fib.c") + DW_AT_decl_line [DW_FORM_data1] (7) + DW_AT_type [DW_FORM_ref4] (cu + 0x0093 => {0x00000093} "int") + +0x00000091: NULL + +0x00000092: NULL + +0x00000093: DW_TAG_base_type [6] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000007f] = "int") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) + DW_AT_byte_size [DW_FORM_data1] (0x04) + +0x0000009a: NULL + +.debug_loc contents: +0x00000000: + [0x00000000, 0x00000018): DW_OP_consts +1, DW_OP_stack_value + [0x00000024, 0x00000026): DW_OP_WASM_location 0x2 +0, DW_OP_stack_value + [0x00000026, 0x00000042): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + +0x00000031: + [0x00000000, 0x00000018): DW_OP_consts +1, DW_OP_stack_value + [0x0000002b, 0x00000042): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +0x00000054: + [0x00000000, 0x00000018): DW_OP_consts +1, DW_OP_stack_value + [0x00000024, 0x00000026): DW_OP_WASM_location 0x2 +0, DW_OP_stack_value + [0x00000026, 0x0000002b): DW_OP_WASM_location 0x0 +4, DW_OP_stack_value + [0x0000002b, 0x00000042): DW_OP_WASM_location 0x0 +1, DW_OP_stack_value + +0x00000093: + [0x00000000, 0x00000018): DW_OP_consts +3, DW_OP_stack_value + [0x00000037, 0x00000039): DW_OP_WASM_location 0x2 +0, DW_OP_stack_value + +.debug_line contents: +debug_line[0x00000000] +Line table prologue: + total_length: 0x00000088 + version: 4 + prologue_length: 0x0000001d + min_inst_length: 1 +max_ops_per_inst: 1 + default_is_stmt: 1 + line_base: -5 + line_range: 14 + opcode_base: 13 +standard_opcode_lengths[DW_LNS_copy] = 0 +standard_opcode_lengths[DW_LNS_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_advance_line] = 1 +standard_opcode_lengths[DW_LNS_set_file] = 1 +standard_opcode_lengths[DW_LNS_set_column] = 1 +standard_opcode_lengths[DW_LNS_negate_stmt] = 0 +standard_opcode_lengths[DW_LNS_set_basic_block] = 0 +standard_opcode_lengths[DW_LNS_const_add_pc] = 0 +standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 +standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 +standard_opcode_lengths[DW_LNS_set_isa] = 1 +file_names[ 1]: + name: "fib.c" + dir_index: 0 + mod_time: 0x00000000 + length: 0x00000000 +0x00000027: 00 DW_LNE_set_address (0x000000000000000a) +0x0000002e: 03 DW_LNS_advance_line (3) +0x00000030: 01 DW_LNS_copy + 0x000000000000000a 3 0 1 0 0 is_stmt + + +0x00000031: 00 DW_LNE_set_address (0x000000000000001b) +0x00000038: 03 DW_LNS_advance_line (7) +0x0000003a: 05 DW_LNS_set_column (23) +0x0000003c: 0a DW_LNS_set_prologue_end +0x0000003d: 01 DW_LNS_copy + 0x000000000000001b 7 23 1 0 0 is_stmt prologue_end + + +0x0000003e: 00 DW_LNE_set_address (0x0000000000000020) +0x00000045: 05 DW_LNS_set_column (5) +0x00000047: 06 DW_LNS_negate_stmt +0x00000048: 01 DW_LNS_copy + 0x0000000000000020 7 5 1 0 0 + + +0x00000049: 00 DW_LNE_set_address (0x000000000000002e) +0x00000050: 03 DW_LNS_advance_line (9) +0x00000052: 05 DW_LNS_set_column (24) +0x00000054: 06 DW_LNS_negate_stmt +0x00000055: 01 DW_LNS_copy + 0x000000000000002e 9 24 1 0 0 is_stmt + + +0x00000056: 00 DW_LNE_set_address (0x0000000000000035) +0x0000005d: 03 DW_LNS_advance_line (7) +0x0000005f: 05 DW_LNS_set_column (23) +0x00000061: 01 DW_LNS_copy + 0x0000000000000035 7 23 1 0 0 is_stmt + + +0x00000062: 00 DW_LNE_set_address (0x000000000000003c) +0x00000069: 05 DW_LNS_set_column (29) +0x0000006b: 06 DW_LNS_negate_stmt +0x0000006c: 01 DW_LNS_copy + 0x000000000000003c 7 29 1 0 0 + + +0x0000006d: 00 DW_LNE_set_address (0x0000000000000047) +0x00000074: 05 DW_LNS_set_column (5) +0x00000076: 01 DW_LNS_copy + 0x0000000000000047 7 5 1 0 0 + + +0x00000077: 00 DW_LNE_set_address (0x000000000000004e) +0x0000007e: 03 DW_LNS_advance_line (16) +0x00000080: 06 DW_LNS_negate_stmt +0x00000081: 01 DW_LNS_copy + 0x000000000000004e 16 5 1 0 0 is_stmt + + +0x00000082: 00 DW_LNE_set_address (0x0000000000000051) +0x00000089: 00 DW_LNE_end_sequence + 0x0000000000000051 16 5 1 0 0 is_stmt end_sequence + + +.debug_str contents: +0x00000000: "clang version 11.0.0 (https://github.com/llvm/llvm-project.git b0e51167aff84e52fb99f69db6f8965304eee2cf)" +0x00000069: "fib.c" +0x0000006f: "D:\test\fib" +0x0000007b: "fib" +0x0000007f: "int" +0x00000083: "n" +0x00000085: "previous" +0x0000008e: "current" +0x00000096: "next" +0x0000009b: "i" +(module + (type $none_=>_none (func)) + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "env" "memory" (memory $mimport$0 0)) + (import "env" "__indirect_function_table" (table $timport$0 0 funcref)) + (import "env" "__stack_pointer" (global $gimport$0 (mut i32))) + (import "env" "__memory_base" (global $gimport$1 i32)) + (import "env" "__table_base" (global $gimport$2 i32)) + (global $global$0 i32 (i32.const 0)) + (export "__wasm_call_ctors" (func $__wasm_call_ctors)) + (export "__wasm_apply_relocs" (func $__wasm_apply_relocs)) + (export "fib" (func $fib)) + (export "__dso_handle" (global $global$0)) + (func $__wasm_call_ctors + ;; code offset: 0x3 + (call $__wasm_apply_relocs) + ) + (func $__wasm_apply_relocs + ) + (func $fib (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + ;; code offset: 0x17 + (local.set $1 + ;; code offset: 0x15 + (i32.const 1) + ) + ;; code offset: 0x19 + (block $label$1 + ;; code offset: 0x20 + (br_if $label$1 + ;; code offset: 0x1f + (i32.le_s + ;; code offset: 0x1b + (local.get $0) + ;; code offset: 0x1d + (i32.const 2) + ) + ) + ;; code offset: 0x24 + (local.set $2 + ;; code offset: 0x22 + (i32.const 3) + ) + ;; code offset: 0x28 + (local.set $3 + ;; code offset: 0x26 + (i32.const 1) + ) + ;; code offset: 0x2a + (loop $label$2 + ;; code offset: 0x33 + (local.set $1 + ;; code offset: 0x32 + (i32.add + ;; code offset: 0x2e + (local.tee $4 + ;; code offset: 0x2c + (local.get $1) + ) + ;; code offset: 0x30 + (local.get $3) + ) + ) + ;; code offset: 0x3a + (local.set $5 + ;; code offset: 0x39 + (i32.eq + ;; code offset: 0x35 + (local.get $2) + ;; code offset: 0x37 + (local.get $0) + ) + ) + ;; code offset: 0x41 + (local.set $2 + ;; code offset: 0x40 + (i32.add + ;; code offset: 0x3c + (local.get $2) + ;; code offset: 0x3e + (i32.const 1) + ) + ) + ;; code offset: 0x45 + (local.set $3 + ;; code offset: 0x43 + (local.get $4) + ) + ;; code offset: 0x4a + (br_if $label$2 + ;; code offset: 0x49 + (i32.eqz + ;; code offset: 0x47 + (local.get $5) + ) + ) + ) + ) + ;; code offset: 0x4e + (local.get $1) + ) + ;; dylink section + ;; memorysize: 0 + ;; memoryalignment: 0 + ;; tablesize: 0 + ;; tablealignment: 0 + ;; custom section ".debug_info", size 155 + ;; custom section ".debug_loc", size 182 + ;; custom section ".debug_abbrev", size 94 + ;; custom section ".debug_line", size 140 + ;; custom section ".debug_str", size 157 + ;; custom section "producers", size 127 +) diff -Nru binaryen-91/test/passes/fib_nonzero-low-pc_dwarf.passes binaryen-99/test/passes/fib_nonzero-low-pc_dwarf.passes --- binaryen-91/test/passes/fib_nonzero-low-pc_dwarf.passes 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/fib_nonzero-low-pc_dwarf.passes 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +enable-mutable-globals_dwarfdump_roundtrip_dwarfdump_g Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/passes/fib_nonzero-low-pc_dwarf.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/passes/fib_nonzero-low-pc_dwarf.wasm differ diff -Nru binaryen-91/test/passes/flatten_all-features.txt binaryen-99/test/passes/flatten_all-features.txt --- binaryen-91/test/passes/flatten_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/flatten_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -10,7 +10,7 @@ (table $0 1 1 funcref) (elem (i32.const 0) $call-me) (global $x (mut i32) (i32.const 0)) - (func $a1 (; 0 ;) + (func $a1 (local $0 i32) (local.set $0 (i32.add @@ -22,7 +22,7 @@ (local.get $0) ) ) - (func $a2 (; 1 ;) (result i32) + (func $a2 (result i32) (local $0 i32) (local.set $0 (i32.add @@ -34,7 +34,7 @@ (local.get $0) ) ) - (func $a3 (; 2 ;) (result i32) + (func $a3 (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -56,7 +56,7 @@ (local.get $2) ) ) - (func $a4 (; 3 ;) + (func $a4 (local $0 i32) (local $1 i32) (local $2 i32) @@ -78,7 +78,7 @@ (local.get $2) ) ) - (func $a5 (; 4 ;) (result i32) + (func $a5 (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -110,7 +110,7 @@ (local.get $4) ) ) - (func $a6 (; 5 ;) (result i32) + (func $a6 (result i32) (local $x i32) (local $1 i32) (local $2 i32) @@ -157,7 +157,7 @@ (local.get $7) ) ) - (func $a7 (; 6 ;) (result i32) + (func $a7 (result i32) (local $x i32) (local $1 i32) (local $2 i32) @@ -214,7 +214,7 @@ (local.get $9) ) ) - (func $a8 (; 7 ;) (result i32) + (func $a8 (result i32) (local $x i32) (local $1 i32) (local $2 i32) @@ -289,7 +289,7 @@ (local.get $10) ) ) - (func $a9 (; 8 ;) (result i32) + (func $a9 (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -334,7 +334,7 @@ (local.get $6) ) ) - (func $a10 (; 9 ;) (result i32) + (func $a10 (result i32) (local $x i32) (local $1 i32) (local $2 i32) @@ -432,7 +432,7 @@ (local.get $10) ) ) - (func $a11 (; 10 ;) + (func $a11 (if (i32.const 0) (drop @@ -440,7 +440,7 @@ ) ) ) - (func $a12 (; 11 ;) (result i32) + (func $a12 (result i32) (local $0 i32) (local $1 i32) (if @@ -459,7 +459,7 @@ (local.get $1) ) ) - (func $a13 (; 12 ;) (result i32) + (func $a13 (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -500,7 +500,7 @@ (local.get $4) ) ) - (func $a14 (; 13 ;) (result i32) + (func $a14 (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -528,7 +528,7 @@ (local.get $2) ) ) - (func $a15 (; 14 ;) + (func $a15 (local $0 i32) (local $1 f32) (local $2 f32) @@ -540,10 +540,14 @@ ) (if (local.get $0) - (unreachable) + (block + (unreachable) + (unreachable) + ) (block (block $label$3 (unreachable) + (unreachable) ) (local.set $2 (local.get $1) @@ -556,7 +560,7 @@ ) (unreachable) ) - (func $a16 (; 15 ;) (result i32) + (func $a16 (result i32) (local $x i32) (local $1 i32) (local $2 i32) @@ -611,7 +615,7 @@ (local.get $7) ) ) - (func $a17 (; 16 ;) (result f32) + (func $a17 (result f32) (local $var$0 f32) (local $1 f32) (local $2 f32) @@ -647,10 +651,11 @@ (local.get $5) ) ) - (func $a18 (; 17 ;) (result i32) + (func $a18 (result i32) (local $0 i32) (local $1 i32) (block $label$1 + (unreachable) (local.set $0 (i32.const 1) ) @@ -673,9 +678,10 @@ (local.get $1) ) ) - (func $a19 (; 18 ;) (result f32) + (func $a19 (result f32) (block $label$0 (block $label$1 + (unreachable) (return (f32.const 4289944320) ) @@ -693,10 +699,10 @@ ) (unreachable) ) - (func $call-me (; 19 ;) (param $0 i32) (param $1 i32) + (func $call-me (param $0 i32) (param $1 i32) (nop) ) - (func $code-to-kill (; 20 ;) + (func $code-to-kill (local $x i32) (local $1 i32) (local $2 i32) @@ -727,6 +733,7 @@ (block (block $out1 (unreachable) + (unreachable) (drop (i32.const 0) ) @@ -773,6 +780,7 @@ (block (block $out8 (unreachable) + (unreachable) (drop (i32.const 0) ) @@ -782,6 +790,7 @@ (block (block $out9 (unreachable) + (unreachable) (drop (i32.const 0) ) @@ -803,10 +812,12 @@ (block $out11 (unreachable) (unreachable) + (unreachable) (drop (i32.const 0) ) (unreachable) + (unreachable) ) (local.set $2 (local.get $1) @@ -822,10 +833,12 @@ (block $out13 (unreachable) (unreachable) + (unreachable) (drop (i32.const 0) ) (unreachable) + (unreachable) ) (local.set $4 (local.get $3) @@ -841,10 +854,13 @@ (block $out15 (unreachable) (unreachable) + (unreachable) + (unreachable) (drop (i32.const 0) ) (unreachable) + (unreachable) ) (local.set $6 (local.get $5) @@ -861,6 +877,7 @@ ) ) (unreachable) + (unreachable) ) (if (i32.const 0) @@ -873,6 +890,7 @@ ) ) (unreachable) + (unreachable) ) (unreachable) (drop @@ -890,6 +908,7 @@ (unreachable) ) (unreachable) + (unreachable) ) (block $out22 (block $in23 @@ -899,6 +918,7 @@ (unreachable) ) (unreachable) + (unreachable) ) (if (i32.const 0) @@ -912,6 +932,7 @@ (unreachable) ) (unreachable) + (unreachable) ) (unreachable) (drop @@ -932,11 +953,14 @@ (i32.const 42) ) (unreachable) + (unreachable) + (unreachable) (return (unreachable) ) (unreachable) (unreachable) + (unreachable) (return) (unreachable) ) @@ -948,6 +972,7 @@ (block (loop $loop-in18 (unreachable) + (unreachable) ) (unreachable) ) @@ -959,6 +984,7 @@ (i32.const 1) ) (unreachable) + (unreachable) ) (unreachable) ) @@ -974,6 +1000,7 @@ (i32.const 1) ) (unreachable) + (unreachable) ) (unreachable) ) @@ -988,6 +1015,7 @@ (if (i32.const 1) (block + (unreachable) (call $call-me (i32.const 123) (unreachable) @@ -998,6 +1026,7 @@ (if (i32.const 2) (block + (unreachable) (call $call-me (unreachable) (i32.const 0) @@ -1008,6 +1037,8 @@ (if (i32.const 3) (block + (unreachable) + (unreachable) (call $call-me (unreachable) (unreachable) @@ -1018,6 +1049,7 @@ (if (i32.const -1) (block + (unreachable) (call_indirect (type $i32_i32_=>_none) (i32.const 123) (i32.const 456) @@ -1029,6 +1061,7 @@ (if (i32.const -2) (block + (unreachable) (call_indirect (type $i32_i32_=>_none) (i32.const 139) (unreachable) @@ -1040,6 +1073,8 @@ (if (i32.const -3) (block + (unreachable) + (unreachable) (call_indirect (type $i32_i32_=>_none) (i32.const 246) (unreachable) @@ -1051,6 +1086,9 @@ (if (i32.const -4) (block + (unreachable) + (unreachable) + (unreachable) (call_indirect (type $i32_i32_=>_none) (unreachable) (unreachable) @@ -1064,11 +1102,13 @@ (block (unreachable) (unreachable) + (unreachable) ) ) (if (i32.const 22) (block + (unreachable) (i32.load (unreachable) ) @@ -1081,6 +1121,7 @@ (if (i32.const 33) (block + (unreachable) (i32.store (i32.const 0) (unreachable) @@ -1091,6 +1132,7 @@ (if (i32.const 44) (block + (unreachable) (i32.store (unreachable) (i32.const 0) @@ -1101,6 +1143,8 @@ (if (i32.const 55) (block + (unreachable) + (unreachable) (i32.store (unreachable) (unreachable) @@ -1111,6 +1155,7 @@ (if (i32.const 66) (block + (unreachable) (i32.eqz (unreachable) ) @@ -1123,6 +1168,7 @@ (if (i32.const 77) (block + (unreachable) (i32.add (unreachable) (i32.const 0) @@ -1136,6 +1182,7 @@ (if (i32.const 88) (block + (unreachable) (i32.add (i32.const 0) (unreachable) @@ -1149,6 +1196,8 @@ (if (i32.const 99) (block + (unreachable) + (unreachable) (i32.add (unreachable) (unreachable) @@ -1159,6 +1208,7 @@ (if (i32.const 100) (block + (unreachable) (select (i32.const 123) (i32.const 456) @@ -1173,6 +1223,7 @@ (if (i32.const 101) (block + (unreachable) (select (i32.const 123) (unreachable) @@ -1187,6 +1238,7 @@ (if (i32.const 102) (block + (unreachable) (select (unreachable) (i32.const 123) @@ -1202,21 +1254,22 @@ (i32.const 1337) ) ) - (func $killer (; 21 ;) + (func $killer (block (unreachable) + (unreachable) (drop (i32.const 1000) ) ) (unreachable) ) - (func $target (; 22 ;) + (func $target (drop (i32.const 2000) ) ) - (func $typed-block-none-then-unreachable (; 23 ;) (result i32) + (func $typed-block-none-then-unreachable (result i32) (local $0 i32) (local $1 i32) (block $top-typed @@ -1240,7 +1293,7 @@ (local.get $1) ) ) - (func $typed-block-remove-br-changes-type (; 24 ;) (param $$$0 i32) (result i32) + (func $typed-block-remove-br-changes-type (param $$$0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1286,10 +1339,11 @@ (local.get $4) ) ) - (func $global (; 25 ;) + (func $global (local $0 i32) (block (unreachable) + (unreachable) (local.set $0 (global.get $x) ) @@ -1302,7 +1356,7 @@ ) (unreachable) ) - (func $ret (; 26 ;) (result i32) + (func $ret (result i32) (local $0 i32) (local $1 i32) (block @@ -1322,7 +1376,7 @@ (local.get $1) ) ) - (func $unreachable-br (; 27 ;) (result i32) + (func $unreachable-br (result i32) (local $0 i32) (local $1 i32) (block $out @@ -1340,24 +1394,26 @@ (local.get $1) ) ) - (func $unreachable-br-loop (; 28 ;) (result i32) + (func $unreachable-br-loop (result i32) (loop $out (br $out) (unreachable) ) (unreachable) ) - (func $unreachable-block-ends-switch (; 29 ;) (result i32) + (func $unreachable-block-ends-switch (result i32) (local $0 i32) (local $1 i32) (block $label$0 (block $label$3 (nop) + (unreachable) (br_table $label$3 (unreachable) ) (unreachable) (unreachable) + (unreachable) ) (local.set $0 (i32.const 19) @@ -1370,17 +1426,19 @@ (local.get $1) ) ) - (func $unreachable-block-ends-br_if (; 30 ;) (result i32) + (func $unreachable-block-ends-br_if (result i32) (local $0 i32) (local $1 i32) (block $label$0 (block $label$2 (nop) + (unreachable) (br_if $label$2 (unreachable) ) (unreachable) (unreachable) + (unreachable) ) (local.set $0 (i32.const 19) @@ -1393,7 +1451,7 @@ (local.get $1) ) ) - (func $unreachable-brs-3 (; 31 ;) (result i32) + (func $unreachable-brs-3 (result i32) (local $0 i32) (local $1 i32) (block $label$0 @@ -1417,7 +1475,7 @@ (local.get $1) ) ) - (func $unreachable-brs-4 (; 32 ;) (param $var$0 i32) (result i32) + (func $unreachable-brs-4 (param $var$0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1425,6 +1483,7 @@ (local $5 i32) (block $label$0 (block $label$1 + (unreachable) (local.set $1 (i32.const 4104) ) @@ -1465,7 +1524,7 @@ (local.get $5) ) ) - (func $call-unreach (; 33 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (func $call-unreach (param $var$0 i64) (param $var$1 i64) (result i64) (local $2 i64) (local $3 i64) (local $4 i32) @@ -1538,6 +1597,7 @@ (local.set $13 (local.get $12) ) + (unreachable) (i64.mul (local.get $13) (unreachable) @@ -1564,7 +1624,7 @@ (local.get $17) ) ) - (func $test-flatten (; 34 ;) + (func $test-flatten (local $0 i32) (local $1 i32) (local $2 i32) @@ -1897,6 +1957,7 @@ (unreachable) ) (unreachable) + (unreachable) (i32.add (i32.const 1) (unreachable) @@ -1970,7 +2031,7 @@ ) ) ) - (func $flatten-return-value (; 35 ;) (result i32) + (func $flatten-return-value (result i32) (local $0 i32) (local $1 i32) (block @@ -1996,7 +2057,7 @@ (local.get $1) ) ) - (func $unbug (; 36 ;) + (func $unbug (local $12 i32) (local $432 i32) (local $430 i32) @@ -2119,7 +2180,7 @@ (local.get $22) ) ) - (func $outer-block-typed (; 37 ;) (param $var$0 i32) (result i32) + (func $outer-block-typed (param $var$0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2151,7 +2212,7 @@ (local.get $5) ) ) - (func $nested-br_if-with-value (; 38 ;) (result i32) + (func $nested-br_if-with-value (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -2194,15 +2255,16 @@ (local.get $6) ) ) - (func $switch-unreachable (; 39 ;) + (func $switch-unreachable (block $label$3 + (unreachable) (br_table $label$3 (unreachable) ) (unreachable) ) ) - (func $br_if_order (; 40 ;) (param $x i32) (result i32) + (func $br_if_order (param $x i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2263,7 +2325,7 @@ (local.get $9) ) ) - (func $tees (; 41 ;) (param $x i32) (param $y i32) + (func $tees (param $x i32) (param $y i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2278,6 +2340,7 @@ (local.get $2) ) (unreachable) + (unreachable) (drop (unreachable) ) @@ -2300,7 +2363,7 @@ ) (unreachable) ) - (func $return (; 42 ;) (param $x i32) (result i32) + (func $return (param $x i32) (result i32) (local $1 i32) (local.set $1 (i32.sub @@ -2313,22 +2376,22 @@ ) (unreachable) ) - (func $subtype (; 43 ;) (result anyref) - (local $0 nullref) + (func $subtype (result anyref) + (local $0 externref) (local $1 anyref) - (local $2 nullref) - (local $3 nullref) - (local $4 nullref) - (local $5 nullref) - (local $6 nullref) + (local $2 externref) + (local $3 externref) + (local $4 externref) + (local $5 externref) + (local $6 externref) (local $7 anyref) (block $label0 (block $block (local.set $1 - (ref.null) + (ref.null extern) ) (local.set $2 - (ref.null) + (ref.null extern) ) (br_if $label0 (i32.const 0) @@ -2361,3 +2424,22 @@ ) ) ) +(module + (type $i64_f32_=>_none (func (param i64 f32))) + (type $none_=>_i32 (func (result i32))) + (export "test" (func $1)) + (func $0 (param $0 i64) (param $1 f32) + (nop) + ) + (func $1 (result i32) + (unreachable) + (return + (i32.const -111) + ) + (call $0 + (unreachable) + (unreachable) + ) + (unreachable) + ) +) diff -Nru binaryen-91/test/passes/flatten_all-features.wast binaryen-99/test/passes/flatten_all-features.wast --- binaryen-91/test/passes/flatten_all-features.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/flatten_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -1027,12 +1027,13 @@ ;; targets an outer branch whose return type is a supertype of the br_if's ;; value type, we need the value to be set into two locals: one with the outer ;; block's type, and one with its value type. - (func $subtype (result anyref) (local $0 nullref) + (func $subtype (result anyref) + (local $0 externref) (block $label0 (result anyref) - (block (result nullref) + (block (result externref) (local.tee $0 (br_if $label0 - (ref.null) + (ref.null extern) (i32.const 0) ) ) @@ -1040,3 +1041,17 @@ ) ) ) +(module + (func $0 (param $0 i64) (param $1 f32) + (nop) + ) + (func "test" (result i32) + (call $0 + (unreachable) ;; the unreachable should be handled properly, and not be + ;; reordered with the return + (return + (i32.const -111) + ) + ) + ) +) diff -Nru binaryen-91/test/passes/flatten.bin.txt binaryen-99/test/passes/flatten.bin.txt --- binaryen-91/test/passes/flatten.bin.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/flatten.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -7,8 +7,8 @@ (type $none_=>_f32 (func (result f32))) (type $f32_=>_f32 (func (param f32) (result f32))) (type $none_=>_f64 (func (result f64))) - (type $i64_f32_f64_i32_i32_=>_f64 (func (param i64 f32 f64 i32 i32) (result f64))) (type $f64_=>_f64 (func (param f64) (result f64))) + (type $i64_f32_f64_i32_i32_=>_f64 (func (param i64 f32 f64 i32 i32) (result f64))) (export "type-local-i32" (func $0)) (export "type-local-i64" (func $1)) (export "type-local-f32" (func $2)) @@ -19,7 +19,7 @@ (export "type-param-f64" (func $7)) (export "type-mixed" (func $8)) (export "read" (func $9)) - (func $0 (; 0 ;) (result i32) + (func $0 (result i32) (local $0 i32) (local $1 i32) (local.set $1 @@ -29,7 +29,7 @@ (local.get $1) ) ) - (func $1 (; 1 ;) (result i64) + (func $1 (result i64) (local $0 i64) (local $1 i64) (local.set $1 @@ -39,7 +39,7 @@ (local.get $1) ) ) - (func $2 (; 2 ;) (result f32) + (func $2 (result f32) (local $0 f32) (local $1 f32) (local.set $1 @@ -49,7 +49,7 @@ (local.get $1) ) ) - (func $3 (; 3 ;) (result f64) + (func $3 (result f64) (local $0 f64) (local $1 f64) (local.set $1 @@ -59,7 +59,7 @@ (local.get $1) ) ) - (func $4 (; 4 ;) (param $0 i32) (result i32) + (func $4 (param $0 i32) (result i32) (local $1 i32) (local.set $1 (local.get $0) @@ -68,7 +68,7 @@ (local.get $1) ) ) - (func $5 (; 5 ;) (param $0 i64) (result i64) + (func $5 (param $0 i64) (result i64) (local $1 i64) (local.set $1 (local.get $0) @@ -77,7 +77,7 @@ (local.get $1) ) ) - (func $6 (; 6 ;) (param $0 f32) (result f32) + (func $6 (param $0 f32) (result f32) (local $1 f32) (local.set $1 (local.get $0) @@ -86,7 +86,7 @@ (local.get $1) ) ) - (func $7 (; 7 ;) (param $0 f64) (result f64) + (func $7 (param $0 f64) (result f64) (local $1 f64) (local.set $1 (local.get $0) @@ -95,7 +95,7 @@ (local.get $1) ) ) - (func $8 (; 8 ;) (param $0 i64) (param $1 f32) (param $2 f64) (param $3 i32) (param $4 i32) + (func $8 (param $0 i64) (param $1 f32) (param $2 f64) (param $3 i32) (param $4 i32) (local $5 i64) (local $6 i64) (local $7 f32) @@ -103,10 +103,11 @@ (block $label$1 (nop) (unreachable) + (unreachable) ) (unreachable) ) - (func $9 (; 9 ;) (param $0 i64) (param $1 f32) (param $2 f64) (param $3 i32) (param $4 i32) (result f64) + (func $9 (param $0 i64) (param $1 f32) (param $2 f64) (param $3 i32) (param $4 i32) (result f64) (local $5 i64) (local $6 i64) (local $7 f32) diff -Nru binaryen-91/test/passes/flatten_dfo_O3_enable-threads.txt binaryen-99/test/passes/flatten_dfo_O3_enable-threads.txt --- binaryen-91/test/passes/flatten_dfo_O3_enable-threads.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/flatten_dfo_O3_enable-threads.txt 2021-01-07 20:01:06.000000000 +0000 @@ -2,8 +2,8 @@ (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i64_i32_=>_f64 (func (param i64 i32) (result f64))) (type $f64_=>_f64 (func (param f64) (result f64))) + (type $i64_i32_=>_f64 (func (param i64 i32) (result f64))) (memory $0 (shared 1 1)) (export "one" (func $0)) (export "two" (func $1)) @@ -11,7 +11,7 @@ (export "bad1" (func $3)) (export "only-dfo" (func $4)) (export "dfo-tee-get" (func $5)) - (func $0 (; 0 ;) (; has Stack IR ;) + (func $0 (; has Stack IR ;) (block $label$3 (br_if $label$3 (i32.load @@ -21,10 +21,10 @@ ) (unreachable) ) - (func $1 (; 1 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) + (func $1 (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) (i32.const 0) ) - (func $2 (; 2 ;) (; has Stack IR ;) (param $0 i64) (param $1 i32) (result f64) + (func $2 (; has Stack IR ;) (param $0 i64) (param $1 i32) (result f64) (loop $label$8 (br_if $label$8 (local.get $1) @@ -32,19 +32,19 @@ ) (unreachable) ) - (func $3 (; 3 ;) (; has Stack IR ;) + (func $3 (; has Stack IR ;) (i32.store (i32.const 1) (i32.const -16384) ) ) - (func $4 (; 4 ;) (; has Stack IR ;) (param $0 f64) (result f64) + (func $4 (; has Stack IR ;) (param $0 f64) (result f64) (local $1 i32) (loop $label$1 (br $label$1) ) ) - (func $5 (; 5 ;) (; has Stack IR ;) (result i32) + (func $5 (; has Stack IR ;) (result i32) (i32.const 1) ) ) diff -Nru binaryen-91/test/passes/flatten_i64-to-i32-lowering.txt binaryen-99/test/passes/flatten_i64-to-i32-lowering.txt --- binaryen-91/test/passes/flatten_i64-to-i32-lowering.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/flatten_i64-to-i32-lowering.txt 2021-01-07 20:01:06.000000000 +0000 @@ -5,7 +5,7 @@ (import "env" "func" (func $import (result i64))) (memory $0 1 1) (global $i64toi32_i32$HIGH_BITS (mut i32) (i32.const 0)) - (func $defined (; 1 ;) (result i32) + (func $defined (result i32) (local $0 i32) (local $0$hi i32) (local $i64toi32_i32$0 i32) @@ -81,8 +81,9 @@ ) ) ) - (func $unreachable-select-i64 (; 2 ;) (result i32) + (func $unreachable-select-i64 (result i32) (local $i64toi32_i32$0 i32) + (unreachable) (block (drop (block (result i32) @@ -99,8 +100,9 @@ ) (unreachable) ) - (func $unreachable-select-i64-b (; 3 ;) (result i32) + (func $unreachable-select-i64-b (result i32) (local $i64toi32_i32$0 i32) + (unreachable) (block (unreachable) (drop @@ -117,9 +119,10 @@ ) (unreachable) ) - (func $unreachable-select-i64-c (; 4 ;) (result i32) + (func $unreachable-select-i64-c (result i32) (local $i64toi32_i32$0 i32) (local $i64toi32_i32$1 i32) + (unreachable) (block (drop (block (result i32) @@ -141,7 +144,7 @@ ) (unreachable) ) - (func $mem (; 5 ;) + (func $mem (local $0 i32) (local $0$hi i32) (local $1 i32) @@ -412,10 +415,10 @@ (global $i64toi32_i32$HIGH_BITS (mut i32) (i32.const 0)) (export "exp" (func $1)) (export "unreach" (func $2)) - (func $call (; 0 ;) (param $0 i32) (param $0$hi i32) + (func $call (param $0 i32) (param $0$hi i32) (nop) ) - (func $1 (; 1 ;) + (func $1 (local $0 i32) (local $0$hi i32) (local $i64toi32_i32$0 i32) @@ -455,7 +458,7 @@ ) ) ) - (func $2 (; 2 ;) + (func $2 (local $0 i32) (local $0$hi i32) (local $1 i32) @@ -463,6 +466,7 @@ (local $i64toi32_i32$0 i32) (block $label$1 (unreachable) + (unreachable) ) (block (local.set $1 @@ -501,10 +505,10 @@ (global $g$hi (mut i32) (global.get $f$hi)) (global $i64toi32_i32$HIGH_BITS (mut i32) (i32.const 0)) (export "exp" (func $1)) - (func $call (; 0 ;) (param $0 i32) (param $0$hi i32) + (func $call (param $0 i32) (param $0$hi i32) (nop) ) - (func $1 (; 1 ;) + (func $1 (local $0 i32) (local $0$hi i32) (local $i64toi32_i32$0 i32) @@ -545,3 +549,24 @@ ) ) ) +(module + (type $none_=>_none (func)) + (table $0 37 funcref) + (global $i64toi32_i32$HIGH_BITS (mut i32) (i32.const 0)) + (func $0 + (unreachable) + (block + (unreachable) + (drop + (f64.const 1) + ) + (drop + (i32.const -32768) + ) + (drop + (i32.const 20) + ) + ) + (unreachable) + ) +) diff -Nru binaryen-91/test/passes/flatten_i64-to-i32-lowering.wast binaryen-99/test/passes/flatten_i64-to-i32-lowering.wast --- binaryen-91/test/passes/flatten_i64-to-i32-lowering.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/flatten_i64-to-i32-lowering.wast 2021-01-07 20:01:06.000000000 +0000 @@ -63,4 +63,15 @@ (global.set $f (i64.const 0x1122334455667788)) ) ) - +(module + (type $i64_f64_i32_=>_none (func (param i64 f64 i32))) + (table $0 37 funcref) + (func $0 + (call_indirect (type $i64_f64_i32_=>_none) + (unreachable) + (f64.const 1) + (i32.const -32768) + (i32.const 20) + ) + ) +) diff -Nru binaryen-91/test/passes/flatten_local-cse_all-features.txt binaryen-99/test/passes/flatten_local-cse_all-features.txt --- binaryen-91/test/passes/flatten_local-cse_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/flatten_local-cse_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -5,7 +5,7 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $f64_f64_i32_=>_f32 (func (param f64 f64 i32) (result f32))) (memory $0 100 100) - (func $basics (; 0 ;) + (func $basics (local $x i32) (local $y i32) (local $2 i32) @@ -125,7 +125,7 @@ (local.get $19) ) ) - (func $recursive1 (; 1 ;) + (func $recursive1 (local $x i32) (local $y i32) (local $2 i32) @@ -164,7 +164,7 @@ (local.get $2) ) ) - (func $recursive2 (; 2 ;) + (func $recursive2 (local $x i32) (local $y i32) (local $2 i32) @@ -203,7 +203,7 @@ (local.get $3) ) ) - (func $self (; 3 ;) + (func $self (local $x i32) (local $y i32) (local $2 i32) @@ -235,7 +235,7 @@ (local.get $2) ) ) - (func $loads (; 4 ;) + (func $loads (local $0 i32) (local $1 i32) (local.set $0 @@ -255,7 +255,7 @@ (local.get $1) ) ) - (func $8 (; 5 ;) (param $var$0 i32) (result i32) + (func $8 (param $var$0 i32) (result i32) (local $var$1 i32) (local $var$2 i32) (local $var$3 i32) @@ -373,7 +373,7 @@ (local.get $20) ) ) - (func $loop1 (; 6 ;) (param $x i32) (param $y i32) (result i32) + (func $loop1 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -421,7 +421,7 @@ (local.get $7) ) ) - (func $loop2 (; 7 ;) (param $x i32) (param $y i32) (param $z i32) (result i32) + (func $loop2 (param $x i32) (param $y i32) (param $z i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -483,7 +483,7 @@ (local.get $10) ) ) - (func $loop3 (; 8 ;) (param $x i32) (param $y i32) (param $z i32) (result i32) + (func $loop3 (param $x i32) (param $y i32) (param $z i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -538,7 +538,7 @@ (local.get $9) ) ) - (func $handle-removing (; 9 ;) (param $var$0 f64) (param $var$1 f64) (param $var$2 i32) (result f32) + (func $handle-removing (param $var$0 f64) (param $var$1 f64) (param $var$2 i32) (result f32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -587,7 +587,7 @@ (global $global$0 (mut i32) (i32.const 10)) (export "func_1_invoker" (func $1)) (export "func_6" (func $2)) - (func $0 (; 0 ;) (param $var$0 i64) (param $var$1 f32) (param $var$2 i32) + (func $0 (param $var$0 i64) (param $var$1 f32) (param $var$2 i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -628,14 +628,14 @@ ) ) ) - (func $1 (; 1 ;) + (func $1 (call $0 (i64.const 1125899906842624) (f32.const -nan:0x7fc91a) (i32.const -46) ) ) - (func $2 (; 2 ;) (param $var$0 i32) (param $var$1 f64) (result i32) + (func $2 (param $var$0 i32) (param $var$1 f64) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -646,7 +646,10 @@ ) (if (local.get $2) - (unreachable) + (block + (unreachable) + (unreachable) + ) ) ) (local.set $3 @@ -664,7 +667,7 @@ (module (type $i32_=>_none (func (param i32))) (import "env" "out" (func $out (param i32))) - (func $each-pass-must-clear (; 1 ;) (param $var$0 i32) + (func $each-pass-must-clear (param $var$0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -695,7 +698,7 @@ (type $none_=>_none (func)) (type $none_=>_i64 (func (result i64))) (global $glob (mut i32) (i32.const 1)) - (func $i64-shifts (; 0 ;) (result i64) + (func $i64-shifts (result i64) (local $temp i64) (local $1 i64) (local $2 i64) @@ -735,7 +738,7 @@ (local.get $temp) ) ) - (func $global (; 1 ;) + (func $global (local $x i32) (local $y i32) (local $2 i32) @@ -763,17 +766,17 @@ ) (module (type $none_=>_none (func)) - (type $none_=>_funcref (func (result funcref))) - (func $subtype-test (; 0 ;) (result funcref) - (local $0 nullref) - (local $1 nullref) - (local $2 funcref) - (local $3 funcref) + (type $none_=>_anyref (func (result anyref))) + (func $subtype-test (result anyref) + (local $0 funcref) + (local $1 funcref) + (local $2 anyref) + (local $3 anyref) (block (nop) (loop $label$1 (local.set $0 - (ref.null) + (ref.null func) ) ) (local.set $1 @@ -790,16 +793,16 @@ (local.get $2) ) ) - (func $test (; 1 ;) + (func $test (local $0 anyref) - (local $1 nullref) - (local $2 nullref) + (local $1 funcref) + (local $2 funcref) (block $label$1 (local.set $0 - (ref.null) + (ref.null func) ) (local.set $1 - (ref.null) + (ref.null func) ) ) (local.set $2 diff -Nru binaryen-91/test/passes/flatten_local-cse_all-features.wast binaryen-99/test/passes/flatten_local-cse_all-features.wast --- binaryen-91/test/passes/flatten_local-cse_all-features.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/flatten_local-cse_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -290,26 +290,26 @@ (module ;; After --flatten, there will be a series of chain copies between multiple - ;; locals, but some of the locals will be nullref type and others funcref type. - ;; We cannot make locals of different types a common subexpression. - (func $subtype-test (result funcref) + ;; locals, but some of the locals will be funcref type and others anyref + ;; type. We cannot make locals of different types a common subexpression. + (func $subtype-test (result anyref) (nop) - (loop $label$1 (result nullref) - (ref.null) + (loop $label$1 (result funcref) + (ref.null func) ) ) (func $test (local $0 anyref) (drop - (block $label$1 (result nullref) + (block $label$1 (result funcref) (local.set $0 - (ref.null) + (ref.null func) ) - ;; After --flatten, this will be assigned to a local of nullref type. After - ;; --local-cse, even if we set (ref.null) to local $0 above, this should not - ;; be replaced with $0, because it is of type anyref. - (ref.null) + ;; After --flatten, this will be assigned to a local of funcref type. After + ;; --local-cse, even if we set (ref.null func) to local $0 above, this + ;; should not be replaced with $0, because it is of type anyref. + (ref.null func) ) ) ) diff -Nru binaryen-91/test/passes/flatten_local-cse_Os.txt binaryen-99/test/passes/flatten_local-cse_Os.txt --- binaryen-91/test/passes/flatten_local-cse_Os.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/flatten_local-cse_Os.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (export "div16_internal" (func $0)) - (func $0 (; 0 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) + (func $0 (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) (i32.add (local.tee $0 (i32.xor diff -Nru binaryen-91/test/passes/flatten_rereloop.txt binaryen-99/test/passes/flatten_rereloop.txt --- binaryen-91/test/passes/flatten_rereloop.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/flatten_rereloop.txt 2021-01-07 20:01:06.000000000 +0000 @@ -7,7 +7,7 @@ (type $none_=>_f64 (func (result f64))) (memory $0 1) (global $global (mut i32) (i32.const 0)) - (func $0 (; 0 ;) (result f64) + (func $0 (result f64) (local $0 f64) (local $1 f64) (local $2 i32) @@ -33,7 +33,7 @@ ) ) ) - (func $1 (; 1 ;) (result i32) + (func $1 (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -95,7 +95,7 @@ ) (unreachable) ) - (func $skip-empty (; 2 ;) + (func $skip-empty (local $0 i32) (block $block$2$break (block @@ -108,7 +108,7 @@ (return) ) ) - (func $skip-empty-2 (; 3 ;) + (func $skip-empty-2 (local $0 i32) (block $block$5$break (block @@ -137,7 +137,7 @@ ) ) ) - (func $skip-empty-3 (; 4 ;) + (func $skip-empty-3 (local $0 i32) (block $block$5$break (block @@ -166,7 +166,7 @@ ) ) ) - (func $skip-empty-4 (; 5 ;) (param $x i32) + (func $skip-empty-4 (param $x i32) (local $1 i32) (local $2 i32) (block $block$2$break @@ -181,7 +181,7 @@ (return) ) ) - (func $skipping (; 6 ;) (param $0 i32) (result f32) + (func $skipping (param $0 i32) (result f32) (local $1 f32) (local $2 f32) (local $3 f32) @@ -215,7 +215,7 @@ ) ) ) - (func $merging (; 7 ;) + (func $merging (local $0 i32) (block (block @@ -223,7 +223,7 @@ (return) ) ) - (func $unswitch (; 8 ;) + (func $unswitch (local $0 i32) (block $block$2$break (block @@ -236,7 +236,7 @@ (return) ) ) - (func $skip-only-empty (; 9 ;) + (func $skip-only-empty (local $0 i32) (block $block$3$break (block @@ -258,7 +258,7 @@ (return) ) ) - (func $skip-only-one-branch-out (; 10 ;) (result i32) + (func $skip-only-one-branch-out (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -288,7 +288,7 @@ ) ) ) - (func $multipass-for-skips (; 11 ;) (result f32) + (func $multipass-for-skips (result f32) (local $0 f32) (local $1 f32) (local $2 f32) @@ -338,7 +338,7 @@ ) ) ) - (func $branch-merge-vs-replace (; 12 ;) + (func $branch-merge-vs-replace (local $0 i32) (block ) @@ -352,7 +352,7 @@ ) ) ) - (func $unswitch-amount (; 13 ;) + (func $unswitch-amount (local $0 i32) (block $block$2$break (block @@ -396,11 +396,11 @@ (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_i32 (func (result i32))) - (func $trivial (; 0 ;) + (func $trivial (local $0 i32) (return) ) - (func $trivial2 (; 1 ;) + (func $trivial2 (local $0 i32) (block (block @@ -410,11 +410,11 @@ (return) ) ) - (func $return-void (; 2 ;) + (func $return-void (local $0 i32) (return) ) - (func $return-val (; 3 ;) (result i32) + (func $return-val (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -422,7 +422,7 @@ (i32.const 1) ) ) - (func $ifs (; 4 ;) (param $x i32) (result i32) + (func $ifs (param $x i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -506,7 +506,7 @@ ) ) ) - (func $loops (; 5 ;) (param $x i32) + (func $loops (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -517,7 +517,7 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (block $block$18$break + (block $block$21$break (block (local.set $4 (local.get $x) @@ -537,11 +537,11 @@ (br $shape$2$continue) ) ) - (br $block$18$break) + (br $block$21$break) ) ) (block - (block $block$21$break + (block $block$24$break (loop $shape$4$continue (block (call $trivial) @@ -558,7 +558,7 @@ (if (local.get $7) (br $shape$4$continue) - (br $block$21$break) + (br $block$24$break) ) ) ) @@ -590,7 +590,7 @@ ) ) ) - (func $br-out (; 6 ;) (param $x i32) + (func $br-out (param $x i32) (local $1 i32) (block $block$2$break (call $br-out @@ -604,7 +604,7 @@ (return) ) ) - (func $unreachable (; 7 ;) (param $x i32) + (func $unreachable (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -675,7 +675,7 @@ ) ) ) - (func $empty-blocks (; 8 ;) (param $x i32) + (func $empty-blocks (param $x i32) (local $1 i32) (block $block$2$break (block @@ -688,7 +688,7 @@ (return) ) ) - (func $before-and-after (; 9 ;) (param $x i32) + (func $before-and-after (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -947,7 +947,7 @@ ) ) ) - (func $switch (; 10 ;) (param $x i32) + (func $switch (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -972,7 +972,7 @@ ) ) (block - (block $block$8$break + (block $block$9$break (block (call $switch (i32.const 1) @@ -989,13 +989,13 @@ ) (block $switch$3$leave (block $switch$3$default - (block $switch$3$case$8 - (br_table $switch$3$case$8 $switch$3$case$8 $switch$3$case$8 $switch$3$default + (block $switch$3$case$9 + (br_table $switch$3$case$9 $switch$3$case$9 $switch$3$case$9 $switch$3$default (local.get $6) ) ) (block - (br $block$8$break) + (br $block$9$break) ) ) (block @@ -1004,7 +1004,7 @@ (i32.const 2) ) (block - (br $block$8$break) + (br $block$9$break) ) ) ) @@ -1020,7 +1020,7 @@ ) ) ) - (func $no-return (; 11 ;) + (func $no-return (local $0 i32) (block $block$6$break (block @@ -1049,7 +1049,7 @@ (return) ) ) - (func $if-br-wat (; 12 ;) (param $x i32) + (func $if-br-wat (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1121,7 +1121,7 @@ ) ) ) - (func $switcher-to-nowhere (; 13 ;) (param $0 i32) (result i32) + (func $switcher-to-nowhere (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) diff -Nru binaryen-91/test/passes/flatten_simplify-locals-nonesting_dfo_O3.txt binaryen-99/test/passes/flatten_simplify-locals-nonesting_dfo_O3.txt --- binaryen-91/test/passes/flatten_simplify-locals-nonesting_dfo_O3.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/flatten_simplify-locals-nonesting_dfo_O3.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,27 +1,27 @@ (module (type $none_=>_none (func)) (type $i64_=>_none (func (param i64))) - (type $i32_f64_f64_=>_i32 (func (param i32 f64 f64) (result i32))) (type $f64_=>_i32 (func (param f64) (result i32))) + (type $i32_f64_f64_=>_i32 (func (param i32 f64 f64) (result i32))) (type $none_=>_f64 (func (result f64))) (export "if-select" (func $0)) (export "unreachable-body-update-zext" (func $1)) (export "ssa-const" (func $2)) (export "if-nothing" (func $3)) (export "only-dfo" (func $4)) - (func $0 (; 0 ;) (; has Stack IR ;) + (func $0 (; has Stack IR ;) (nop) ) - (func $1 (; 1 ;) (; has Stack IR ;) (result f64) + (func $1 (; has Stack IR ;) (result f64) (unreachable) ) - (func $2 (; 2 ;) (; has Stack IR ;) (param $0 i32) (param $1 f64) (param $2 f64) (result i32) + (func $2 (; has Stack IR ;) (param $0 i32) (param $1 f64) (param $2 f64) (result i32) (unreachable) ) - (func $3 (; 3 ;) (; has Stack IR ;) (param $0 i64) + (func $3 (; has Stack IR ;) (param $0 i64) (unreachable) ) - (func $4 (; 4 ;) (; has Stack IR ;) (param $0 f64) (result i32) + (func $4 (; has Stack IR ;) (param $0 f64) (result i32) (local $1 i32) (loop $label$1 (if diff -Nru binaryen-91/test/passes/flatten_simplify-locals-nonesting_souperify_enable-threads.txt binaryen-99/test/passes/flatten_simplify-locals-nonesting_souperify_enable-threads.txt --- binaryen-91/test/passes/flatten_simplify-locals-nonesting_souperify_enable-threads.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/flatten_simplify-locals-nonesting_souperify_enable-threads.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1488,7 +1488,7 @@ (type $i64_i64_i64_=>_i64 (func (param i64 i64 i64) (result i64))) (memory $0 (shared 1 1)) (export "replaced-print-internal" (func $56)) - (func $figure-1a (; 0 ;) (param $a i64) (param $x i64) (param $y i64) (result i32) + (func $figure-1a (param $a i64) (param $x i64) (param $y i64) (result i32) (local $i i32) (local $j i32) (local $r i32) @@ -1543,7 +1543,7 @@ (local.get $16) ) ) - (func $figure-1b (; 1 ;) (param $a i64) (param $x i64) (param $y i64) (result i32) + (func $figure-1b (param $a i64) (param $x i64) (param $y i64) (result i32) (local $i i32) (local $j i32) (local $r i32) @@ -1608,12 +1608,15 @@ ) (unreachable) ) - (unreachable) + (block + (unreachable) + (unreachable) + ) ) ) (unreachable) ) - (func $figure-3-if (; 2 ;) (param $x i32) (result i32) + (func $figure-3-if (param $x i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1674,10 +1677,10 @@ (local.get $9) ) ) - (func $send-i32 (; 3 ;) (param $0 i32) + (func $send-i32 (param $0 i32) (nop) ) - (func $flips (; 4 ;) + (func $flips (local $x i32) (local $y i32) (local $z i64) @@ -1787,7 +1790,7 @@ (local.get $27) ) ) - (func $various-conditions-1 (; 5 ;) (param $x i32) + (func $various-conditions-1 (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1806,7 +1809,7 @@ ) ) ) - (func $various-conditions-2 (; 6 ;) (param $x i32) + (func $various-conditions-2 (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1832,7 +1835,7 @@ ) ) ) - (func $various-conditions-3 (; 7 ;) (param $x i32) + (func $various-conditions-3 (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1855,25 +1858,28 @@ ) ) ) - (func $various-conditions-4 (; 8 ;) (param $x i32) + (func $various-conditions-4 (param $x i32) (local $1 i32) (local $2 i32) - (if + (block (unreachable) - (block - (nop) - (nop) - (local.set $x - (i32.add - (local.get $x) - (i32.const 3) + (if + (unreachable) + (block + (nop) + (nop) + (local.set $x + (i32.add + (local.get $x) + (i32.const 3) + ) ) ) ) ) (unreachable) ) - (func $unaries (; 9 ;) (param $x i32) (param $y i32) + (func $unaries (param $x i32) (param $y i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1927,7 +1933,7 @@ ) ) ) - (func $unary-condition (; 10 ;) (param $x i32) + (func $unary-condition (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1959,7 +1965,7 @@ ) ) ) - (func $unary-condition-2 (; 11 ;) (param $x i32) + (func $unary-condition-2 (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1991,7 +1997,7 @@ ) ) ) - (func $if-else-cond (; 12 ;) (param $x i32) (result i32) + (func $if-else-cond (param $x i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2052,7 +2058,7 @@ (local.get $9) ) ) - (func $trivial-ret (; 13 ;) (result i32) + (func $trivial-ret (result i32) (local $0 i32) (local.set $0 (i32.add @@ -2064,12 +2070,12 @@ (local.get $0) ) ) - (func $trivial-const (; 14 ;) (result i32) + (func $trivial-const (result i32) (return (i32.const 0) ) ) - (func $trivial-const-block (; 15 ;) (result i32) + (func $trivial-const-block (result i32) (local $0 i32) (local $1 i32) (block @@ -2083,7 +2089,7 @@ (local.get $1) ) ) - (func $bad-phi-value (; 16 ;) (result i32) + (func $bad-phi-value (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -2120,7 +2126,7 @@ (local.get $3) ) ) - (func $bad-phi-value-2 (; 17 ;) (param $x i32) (result i32) + (func $bad-phi-value-2 (param $x i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2162,7 +2168,7 @@ (local.get $x) ) ) - (func $select (; 18 ;) (param $x i32) (result i32) + (func $select (param $x i32) (result i32) (local $1 i32) (local.set $1 (select @@ -2176,7 +2182,7 @@ ) (unreachable) ) - (func $select-2 (; 19 ;) (param $x i32) (param $y i32) (result i32) + (func $select-2 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2219,7 +2225,7 @@ ) (unreachable) ) - (func $block-phi-1 (; 20 ;) (param $x i32) (param $y i32) (result i32) + (func $block-phi-1 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2266,7 +2272,7 @@ (local.get $10) ) ) - (func $block-phi-2 (; 21 ;) (param $x i32) (param $y i32) (result i32) + (func $block-phi-2 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2299,7 +2305,7 @@ (local.get $6) ) ) - (func $zero_init-phi-bad_type (; 22 ;) (result f64) + (func $zero_init-phi-bad_type (result f64) (local $x f64) (local $1 f64) (local $2 f64) @@ -2319,7 +2325,7 @@ (local.get $x) ) ) - (func $phi-bad-type (; 23 ;) (result f64) + (func $phi-bad-type (result f64) (local $0 f64) (local $1 f64) (local $2 f64) @@ -2342,7 +2348,7 @@ (local.get $0) ) ) - (func $phi-one-side-i1 (; 24 ;) (param $x i32) (param $y i32) (result i32) + (func $phi-one-side-i1 (param $x i32) (param $y i32) (result i32) (local $i i32) (local $3 i32) (local $4 i32) @@ -2400,7 +2406,7 @@ (local.get $i) ) ) - (func $call (; 25 ;) (result i32) + (func $call (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -2439,7 +2445,7 @@ ) (unreachable) ) - (func $in-unreachable-1 (; 26 ;) (param $x i32) (param $y i32) (result i32) + (func $in-unreachable-1 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2479,7 +2485,7 @@ (local.get $5) ) ) - (func $in-unreachable-2 (; 27 ;) (param $x i32) (param $y i32) (result i32) + (func $in-unreachable-2 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2495,6 +2501,7 @@ (i32.const 1) ) (unreachable) + (unreachable) ) (unreachable) ) @@ -2514,7 +2521,7 @@ (local.get $4) ) ) - (func $in-unreachable-3 (; 28 ;) (param $x i32) (param $y i32) (result i32) + (func $in-unreachable-3 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2558,7 +2565,7 @@ (local.get $5) ) ) - (func $in-unreachable-4 (; 29 ;) (param $x i32) (param $y i32) (result i32) + (func $in-unreachable-4 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2604,7 +2611,7 @@ (local.get $5) ) ) - (func $in-unreachable-br_if (; 30 ;) (param $x i32) (param $y i32) (result i32) + (func $in-unreachable-br_if (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2648,7 +2655,7 @@ (local.get $6) ) ) - (func $in-unreachable-big (; 31 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $in-unreachable-big (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -2711,17 +2718,19 @@ (local.get $1) ) (unreachable) + (unreachable) ) (i32.store16 (i32.const 0) (i32.const -8531) ) ) - (func $in-unreachable-operations (; 32 ;) (param $x i32) (param $y i32) (result i32) + (func $in-unreachable-operations (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (block $block (unreachable) + (unreachable) (block (nop) (if @@ -2742,7 +2751,7 @@ ) (unreachable) ) - (func $merge-with-one-less (; 33 ;) (param $var$0 i32) (result i32) + (func $merge-with-one-less (param $var$0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2766,6 +2775,7 @@ (unreachable) ) (unreachable) + (unreachable) ) (br $label$1) (unreachable) @@ -2787,6 +2797,7 @@ (unreachable) ) (unreachable) + (unreachable) ) (nop) (i32.store @@ -2802,7 +2813,7 @@ (local.get $6) ) ) - (func $deep (; 34 ;) (param $x i32) (result i32) + (func $deep (param $x i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -3075,7 +3086,7 @@ (local.get $x) ) ) - (func $two-pcs (; 35 ;) (param $x i64) (param $y i64) (param $t i64) (result i64) + (func $two-pcs (param $x i64) (param $y i64) (param $t i64) (result i64) (local $3 i64) (local $4 i64) (local $5 i32) @@ -3189,7 +3200,7 @@ (local.get $23) ) ) - (func $loop-1 (; 36 ;) (param $x i32) (param $y i32) (result i32) + (func $loop-1 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3223,7 +3234,7 @@ (local.get $5) ) ) - (func $loop-2 (; 37 ;) (param $x i32) (param $y i32) (result i32) + (func $loop-2 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3276,7 +3287,7 @@ (local.get $9) ) ) - (func $loop-3 (; 38 ;) (param $x i32) (param $y i32) (result i32) + (func $loop-3 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3334,7 +3345,7 @@ (local.get $10) ) ) - (func $loop-4 (; 39 ;) (param $x i32) (param $y i32) (result i32) + (func $loop-4 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3382,7 +3393,7 @@ (local.get $8) ) ) - (func $loop-5 (; 40 ;) (param $x i32) (param $y i32) (result i32) + (func $loop-5 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3433,7 +3444,7 @@ (local.get $8) ) ) - (func $loop-6 (; 41 ;) (param $x i32) (param $y i32) (result i32) + (func $loop-6 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3484,7 +3495,7 @@ (local.get $9) ) ) - (func $loop-7 (; 42 ;) (param $x i32) (param $y i32) (result i32) + (func $loop-7 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3535,7 +3546,7 @@ (local.get $8) ) ) - (func $loop-8 (; 43 ;) (param $x i32) (param $y i32) (result i32) + (func $loop-8 (param $x i32) (param $y i32) (result i32) (local $z i32) (local $w i32) (local $4 i32) @@ -3609,7 +3620,7 @@ (local.get $14) ) ) - (func $loop-9 (; 44 ;) (param $x i32) (param $y i32) (result i32) + (func $loop-9 (param $x i32) (param $y i32) (result i32) (local $t i32) (local $3 i32) (local $4 i32) @@ -3663,7 +3674,7 @@ (local.get $10) ) ) - (func $loop-10 (; 45 ;) (param $x i32) (param $y i32) (result i32) + (func $loop-10 (param $x i32) (param $y i32) (result i32) (local $t i32) (local $3 i32) (local $4 i32) @@ -3717,7 +3728,7 @@ (local.get $10) ) ) - (func $loop-multicond-1 (; 46 ;) (param $x i32) (param $y i32) (param $z i32) (result i32) + (func $loop-multicond-1 (param $x i32) (param $y i32) (param $z i32) (result i32) (local $t i32) (local $4 i32) (local $5 i32) @@ -3776,7 +3787,7 @@ (local.get $10) ) ) - (func $loop-multicond-2 (; 47 ;) (param $x i32) (param $y i32) (param $z i32) (result i32) + (func $loop-multicond-2 (param $x i32) (param $y i32) (param $z i32) (result i32) (local $t i32) (local $4 i32) (local $5 i32) @@ -3856,7 +3867,7 @@ (local.get $16) ) ) - (func $loop-block-1 (; 48 ;) (param $x i32) (param $y i32) (param $z i32) (result i32) + (func $loop-block-1 (param $x i32) (param $y i32) (param $z i32) (result i32) (local $t i32) (local $4 i32) (local $5 i32) @@ -3940,7 +3951,7 @@ (local.get $16) ) ) - (func $loop-block-2 (; 49 ;) (param $x i32) (param $y i32) (param $z i32) (result i32) + (func $loop-block-2 (param $x i32) (param $y i32) (param $z i32) (result i32) (local $t i32) (local $4 i32) (local $5 i32) @@ -4028,7 +4039,7 @@ (local.get $16) ) ) - (func $bad-phi-type (; 50 ;) (param $var$0 i64) (param $var$1 i64) (param $var$2 i32) (param $var$3 f32) + (func $bad-phi-type (param $var$0 i64) (param $var$1 i64) (param $var$2 i32) (param $var$3 f32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -4047,7 +4058,10 @@ (block $label$3 (if (i32.const 0) - (unreachable) + (block + (unreachable) + (unreachable) + ) ) (nop) (nop) @@ -4057,7 +4071,10 @@ ) (if (local.get $6) - (unreachable) + (block + (unreachable) + (unreachable) + ) ) ) (nop) @@ -4078,7 +4095,7 @@ ) ) ) - (func $loop-unreachable (; 51 ;) + (func $loop-unreachable (local $var$0 i32) (local $var$1 f64) (local $2 i32) @@ -4100,7 +4117,10 @@ (block $label$4 (if (i32.const 1337) - (unreachable) + (block + (unreachable) + (unreachable) + ) ) (nop) (nop) @@ -4132,6 +4152,7 @@ (local.get $6) ) (unreachable) + (unreachable) ) (nop) (br_if $label$6 @@ -4151,7 +4172,7 @@ ) (unreachable) ) - (func $phi-value-turns-bad (; 52 ;) (result f64) + (func $phi-value-turns-bad (result f64) (local $var$0 i32) (local $var$1 i32) (local $var$2 f32) @@ -4182,7 +4203,10 @@ (nop) (if (local.get $var$0) - (unreachable) + (block + (unreachable) + (unreachable) + ) (block (block $block (block @@ -4224,13 +4248,14 @@ (nop) (nop) (unreachable) + (unreachable) ) (nop) (return (local.get $16) ) ) - (func $multi-use (; 53 ;) (param $x i32) (result i32) + (func $multi-use (param $x i32) (result i32) (local $temp i32) (local $2 i32) (local $3 i32) @@ -4263,7 +4288,7 @@ (local.get $8) ) ) - (func $multi-use-2 (; 54 ;) (param $x i32) (result i32) + (func $multi-use-2 (param $x i32) (result i32) (local $temp i32) (local $2 i32) (local $3 i32) @@ -4306,7 +4331,7 @@ (local.get $10) ) ) - (func $many-single-uses-with-param (; 55 ;) (param $x i32) (result i32) + (func $many-single-uses-with-param (param $x i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4349,7 +4374,7 @@ ) (unreachable) ) - (func $56 (; 56 ;) (param $var$0 i32) + (func $56 (param $var$0 i32) (local $var$1 i32) (local $var$2 i32) (local $var$3 i32) @@ -4388,6 +4413,7 @@ (local.get $8) ) (unreachable) + (unreachable) ) (nop) (local.set $10 @@ -4413,14 +4439,18 @@ ) (if (local.get $13) - (unreachable) + (block + (unreachable) + (unreachable) + ) ) ) (unreachable) + (unreachable) ) ) ) - (func $multiple-uses-to-non-expression (; 57 ;) (param $x i32) + (func $multiple-uses-to-non-expression (param $x i32) (local $temp i32) (local $2 i32) (local $3 i32) @@ -4452,7 +4482,7 @@ (local.get $6) ) ) - (func $nested-phi-forwarding (; 58 ;) (param $var$0 i32) (result i32) + (func $nested-phi-forwarding (param $var$0 i32) (result i32) (local $var$1 i32) (local $var$2 i32) (local $3 i32) @@ -4485,6 +4515,7 @@ (unreachable) ) (unreachable) + (unreachable) ) (br $label$1) (unreachable) @@ -4511,6 +4542,7 @@ ) ) (unreachable) + (unreachable) ) (nop) (i32.store offset=176 @@ -4526,7 +4558,7 @@ (local.get $9) ) ) - (func $zext-numGets (; 59 ;) (param $var$0 i32) (param $var$1 i32) + (func $zext-numGets (param $var$0 i32) (param $var$1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4570,10 +4602,13 @@ ) (if (local.get $8) - (unreachable) + (block + (unreachable) + (unreachable) + ) ) ) - (func $zext-numGets-hasAnotherUse (; 60 ;) (param $var$0 i32) (param $var$1 i32) + (func $zext-numGets-hasAnotherUse (param $var$0 i32) (param $var$1 i32) (local $temp i32) (local $3 i32) (local $4 i32) @@ -4628,10 +4663,13 @@ ) (if (local.get $11) - (unreachable) + (block + (unreachable) + (unreachable) + ) ) ) - (func $flipped-needs-right-origin (; 61 ;) (param $var$0 i32) (result i32) + (func $flipped-needs-right-origin (param $var$0 i32) (result i32) (local $var$1 i32) (local $2 i32) (local $3 i32) @@ -4669,7 +4707,10 @@ ) (if (local.get $5) - (unreachable) + (block + (unreachable) + (unreachable) + ) ) ) (nop) @@ -4681,7 +4722,7 @@ (local.get $7) ) ) - (func $non-expr-nodes-may-have-multiple-uses-too-its-the-ORIGIN (; 62 ;) (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (result i32) + (func $non-expr-nodes-may-have-multiple-uses-too-its-the-ORIGIN (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4715,13 +4756,14 @@ (local.get $7) ) (unreachable) + (unreachable) ) (nop) (return (local.get $8) ) ) - (func $loop-of-set-connections (; 63 ;) (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (param $var$3 i32) (param $var$4 i32) (result i32) + (func $loop-of-set-connections (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (param $var$3 i32) (param $var$4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -4755,7 +4797,7 @@ ) (unreachable) ) - (func $conditions-in-conditions (; 64 ;) (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (result i32) + (func $conditions-in-conditions (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (result i32) (local $var$3 i32) (local $var$4 i32) (local $var$5 i32) @@ -4825,6 +4867,7 @@ (i32.const 64) ) (unreachable) + (unreachable) ) (nop) (return diff -Nru binaryen-91/test/passes/flatten_simplify-locals-nonesting_souperify-single-use_enable-threads.txt binaryen-99/test/passes/flatten_simplify-locals-nonesting_souperify-single-use_enable-threads.txt --- binaryen-91/test/passes/flatten_simplify-locals-nonesting_souperify-single-use_enable-threads.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/flatten_simplify-locals-nonesting_souperify-single-use_enable-threads.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1447,7 +1447,7 @@ (type $i64_i64_i64_=>_i64 (func (param i64 i64 i64) (result i64))) (memory $0 (shared 1 1)) (export "replaced-print-internal" (func $55)) - (func $figure-1a (; 0 ;) (param $a i64) (param $x i64) (param $y i64) (result i32) + (func $figure-1a (param $a i64) (param $x i64) (param $y i64) (result i32) (local $i i32) (local $j i32) (local $r i32) @@ -1502,7 +1502,7 @@ (local.get $16) ) ) - (func $figure-1b (; 1 ;) (param $a i64) (param $x i64) (param $y i64) (result i32) + (func $figure-1b (param $a i64) (param $x i64) (param $y i64) (result i32) (local $i i32) (local $j i32) (local $r i32) @@ -1567,12 +1567,15 @@ ) (unreachable) ) - (unreachable) + (block + (unreachable) + (unreachable) + ) ) ) (unreachable) ) - (func $figure-3-if (; 2 ;) (param $x i32) (result i32) + (func $figure-3-if (param $x i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1633,7 +1636,7 @@ (local.get $9) ) ) - (func $flips (; 3 ;) + (func $flips (local $x i32) (local $y i32) (local $2 i32) @@ -1685,7 +1688,7 @@ ) ) ) - (func $various-conditions-1 (; 4 ;) (param $x i32) + (func $various-conditions-1 (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1704,7 +1707,7 @@ ) ) ) - (func $various-conditions-2 (; 5 ;) (param $x i32) + (func $various-conditions-2 (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1730,7 +1733,7 @@ ) ) ) - (func $various-conditions-3 (; 6 ;) (param $x i32) + (func $various-conditions-3 (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1753,25 +1756,28 @@ ) ) ) - (func $various-conditions-4 (; 7 ;) (param $x i32) + (func $various-conditions-4 (param $x i32) (local $1 i32) (local $2 i32) - (if + (block (unreachable) - (block - (nop) - (nop) - (local.set $x - (i32.add - (local.get $x) - (i32.const 3) + (if + (unreachable) + (block + (nop) + (nop) + (local.set $x + (i32.add + (local.get $x) + (i32.const 3) + ) ) ) ) ) (unreachable) ) - (func $unaries (; 8 ;) (param $x i32) (param $y i32) + (func $unaries (param $x i32) (param $y i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1825,7 +1831,7 @@ ) ) ) - (func $unary-condition (; 9 ;) (param $x i32) + (func $unary-condition (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1857,7 +1863,7 @@ ) ) ) - (func $unary-condition-2 (; 10 ;) (param $x i32) + (func $unary-condition-2 (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1889,7 +1895,7 @@ ) ) ) - (func $if-else-cond (; 11 ;) (param $x i32) (result i32) + (func $if-else-cond (param $x i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1950,7 +1956,7 @@ (local.get $9) ) ) - (func $trivial-ret (; 12 ;) (result i32) + (func $trivial-ret (result i32) (local $0 i32) (local.set $0 (i32.add @@ -1962,12 +1968,12 @@ (local.get $0) ) ) - (func $trivial-const (; 13 ;) (result i32) + (func $trivial-const (result i32) (return (i32.const 0) ) ) - (func $trivial-const-block (; 14 ;) (result i32) + (func $trivial-const-block (result i32) (local $0 i32) (local $1 i32) (block @@ -1981,7 +1987,7 @@ (local.get $1) ) ) - (func $bad-phi-value (; 15 ;) (result i32) + (func $bad-phi-value (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -2018,7 +2024,7 @@ (local.get $3) ) ) - (func $bad-phi-value-2 (; 16 ;) (param $x i32) (result i32) + (func $bad-phi-value-2 (param $x i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2060,7 +2066,7 @@ (local.get $x) ) ) - (func $select (; 17 ;) (param $x i32) (result i32) + (func $select (param $x i32) (result i32) (local $1 i32) (local.set $1 (select @@ -2074,7 +2080,7 @@ ) (unreachable) ) - (func $select-2 (; 18 ;) (param $x i32) (param $y i32) (result i32) + (func $select-2 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2117,7 +2123,7 @@ ) (unreachable) ) - (func $block-phi-1 (; 19 ;) (param $x i32) (param $y i32) (result i32) + (func $block-phi-1 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2164,7 +2170,7 @@ (local.get $10) ) ) - (func $block-phi-2 (; 20 ;) (param $x i32) (param $y i32) (result i32) + (func $block-phi-2 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2197,7 +2203,7 @@ (local.get $6) ) ) - (func $zero_init-phi-bad_type (; 21 ;) (result f64) + (func $zero_init-phi-bad_type (result f64) (local $x f64) (local $1 f64) (local $2 f64) @@ -2217,7 +2223,7 @@ (local.get $x) ) ) - (func $phi-bad-type (; 22 ;) (result f64) + (func $phi-bad-type (result f64) (local $0 f64) (local $1 f64) (local $2 f64) @@ -2240,7 +2246,7 @@ (local.get $0) ) ) - (func $phi-one-side-i1 (; 23 ;) (param $x i32) (param $y i32) (result i32) + (func $phi-one-side-i1 (param $x i32) (param $y i32) (result i32) (local $i i32) (local $3 i32) (local $4 i32) @@ -2298,7 +2304,7 @@ (local.get $i) ) ) - (func $call (; 24 ;) (result i32) + (func $call (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -2337,7 +2343,7 @@ ) (unreachable) ) - (func $in-unreachable-1 (; 25 ;) (param $x i32) (param $y i32) (result i32) + (func $in-unreachable-1 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2377,7 +2383,7 @@ (local.get $5) ) ) - (func $in-unreachable-2 (; 26 ;) (param $x i32) (param $y i32) (result i32) + (func $in-unreachable-2 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2393,6 +2399,7 @@ (i32.const 1) ) (unreachable) + (unreachable) ) (unreachable) ) @@ -2412,7 +2419,7 @@ (local.get $4) ) ) - (func $in-unreachable-3 (; 27 ;) (param $x i32) (param $y i32) (result i32) + (func $in-unreachable-3 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2456,7 +2463,7 @@ (local.get $5) ) ) - (func $in-unreachable-4 (; 28 ;) (param $x i32) (param $y i32) (result i32) + (func $in-unreachable-4 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2502,7 +2509,7 @@ (local.get $5) ) ) - (func $in-unreachable-br_if (; 29 ;) (param $x i32) (param $y i32) (result i32) + (func $in-unreachable-br_if (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -2546,7 +2553,7 @@ (local.get $6) ) ) - (func $in-unreachable-big (; 30 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $in-unreachable-big (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -2609,17 +2616,19 @@ (local.get $1) ) (unreachable) + (unreachable) ) (i32.store16 (i32.const 0) (i32.const -8531) ) ) - (func $in-unreachable-operations (; 31 ;) (param $x i32) (param $y i32) (result i32) + (func $in-unreachable-operations (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (block $block (unreachable) + (unreachable) (block (nop) (if @@ -2640,7 +2649,7 @@ ) (unreachable) ) - (func $merge-with-one-less (; 32 ;) (param $var$0 i32) (result i32) + (func $merge-with-one-less (param $var$0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2664,6 +2673,7 @@ (unreachable) ) (unreachable) + (unreachable) ) (br $label$1) (unreachable) @@ -2685,6 +2695,7 @@ (unreachable) ) (unreachable) + (unreachable) ) (nop) (i32.store @@ -2700,7 +2711,7 @@ (local.get $6) ) ) - (func $deep (; 33 ;) (param $x i32) (result i32) + (func $deep (param $x i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2973,7 +2984,7 @@ (local.get $x) ) ) - (func $two-pcs (; 34 ;) (param $x i64) (param $y i64) (param $t i64) (result i64) + (func $two-pcs (param $x i64) (param $y i64) (param $t i64) (result i64) (local $3 i64) (local $4 i64) (local $5 i32) @@ -3087,7 +3098,7 @@ (local.get $23) ) ) - (func $loop-1 (; 35 ;) (param $x i32) (param $y i32) (result i32) + (func $loop-1 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3121,7 +3132,7 @@ (local.get $5) ) ) - (func $loop-2 (; 36 ;) (param $x i32) (param $y i32) (result i32) + (func $loop-2 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3174,7 +3185,7 @@ (local.get $9) ) ) - (func $loop-3 (; 37 ;) (param $x i32) (param $y i32) (result i32) + (func $loop-3 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3232,7 +3243,7 @@ (local.get $10) ) ) - (func $loop-4 (; 38 ;) (param $x i32) (param $y i32) (result i32) + (func $loop-4 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3280,7 +3291,7 @@ (local.get $8) ) ) - (func $loop-5 (; 39 ;) (param $x i32) (param $y i32) (result i32) + (func $loop-5 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3331,7 +3342,7 @@ (local.get $8) ) ) - (func $loop-6 (; 40 ;) (param $x i32) (param $y i32) (result i32) + (func $loop-6 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3382,7 +3393,7 @@ (local.get $9) ) ) - (func $loop-7 (; 41 ;) (param $x i32) (param $y i32) (result i32) + (func $loop-7 (param $x i32) (param $y i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -3433,7 +3444,7 @@ (local.get $8) ) ) - (func $loop-8 (; 42 ;) (param $x i32) (param $y i32) (result i32) + (func $loop-8 (param $x i32) (param $y i32) (result i32) (local $z i32) (local $w i32) (local $4 i32) @@ -3507,7 +3518,7 @@ (local.get $14) ) ) - (func $loop-9 (; 43 ;) (param $x i32) (param $y i32) (result i32) + (func $loop-9 (param $x i32) (param $y i32) (result i32) (local $t i32) (local $3 i32) (local $4 i32) @@ -3561,7 +3572,7 @@ (local.get $10) ) ) - (func $loop-10 (; 44 ;) (param $x i32) (param $y i32) (result i32) + (func $loop-10 (param $x i32) (param $y i32) (result i32) (local $t i32) (local $3 i32) (local $4 i32) @@ -3615,7 +3626,7 @@ (local.get $10) ) ) - (func $loop-multicond-1 (; 45 ;) (param $x i32) (param $y i32) (param $z i32) (result i32) + (func $loop-multicond-1 (param $x i32) (param $y i32) (param $z i32) (result i32) (local $t i32) (local $4 i32) (local $5 i32) @@ -3674,7 +3685,7 @@ (local.get $10) ) ) - (func $loop-multicond-2 (; 46 ;) (param $x i32) (param $y i32) (param $z i32) (result i32) + (func $loop-multicond-2 (param $x i32) (param $y i32) (param $z i32) (result i32) (local $t i32) (local $4 i32) (local $5 i32) @@ -3754,7 +3765,7 @@ (local.get $16) ) ) - (func $loop-block-1 (; 47 ;) (param $x i32) (param $y i32) (param $z i32) (result i32) + (func $loop-block-1 (param $x i32) (param $y i32) (param $z i32) (result i32) (local $t i32) (local $4 i32) (local $5 i32) @@ -3838,7 +3849,7 @@ (local.get $16) ) ) - (func $loop-block-2 (; 48 ;) (param $x i32) (param $y i32) (param $z i32) (result i32) + (func $loop-block-2 (param $x i32) (param $y i32) (param $z i32) (result i32) (local $t i32) (local $4 i32) (local $5 i32) @@ -3926,7 +3937,7 @@ (local.get $16) ) ) - (func $bad-phi-type (; 49 ;) (param $var$0 i64) (param $var$1 i64) (param $var$2 i32) (param $var$3 f32) + (func $bad-phi-type (param $var$0 i64) (param $var$1 i64) (param $var$2 i32) (param $var$3 f32) (local $4 i32) (local $5 i32) (local $6 i32) @@ -3945,7 +3956,10 @@ (block $label$3 (if (i32.const 0) - (unreachable) + (block + (unreachable) + (unreachable) + ) ) (nop) (nop) @@ -3955,7 +3969,10 @@ ) (if (local.get $6) - (unreachable) + (block + (unreachable) + (unreachable) + ) ) ) (nop) @@ -3976,7 +3993,7 @@ ) ) ) - (func $loop-unreachable (; 50 ;) + (func $loop-unreachable (local $var$0 i32) (local $var$1 f64) (local $2 i32) @@ -3998,7 +4015,10 @@ (block $label$4 (if (i32.const 1337) - (unreachable) + (block + (unreachable) + (unreachable) + ) ) (nop) (nop) @@ -4030,6 +4050,7 @@ (local.get $6) ) (unreachable) + (unreachable) ) (nop) (br_if $label$6 @@ -4049,7 +4070,7 @@ ) (unreachable) ) - (func $phi-value-turns-bad (; 51 ;) (result f64) + (func $phi-value-turns-bad (result f64) (local $var$0 i32) (local $var$1 i32) (local $var$2 f32) @@ -4080,7 +4101,10 @@ (nop) (if (local.get $var$0) - (unreachable) + (block + (unreachable) + (unreachable) + ) (block (block $block (block @@ -4122,13 +4146,14 @@ (nop) (nop) (unreachable) + (unreachable) ) (nop) (return (local.get $16) ) ) - (func $multi-use (; 52 ;) (param $x i32) (result i32) + (func $multi-use (param $x i32) (result i32) (local $temp i32) (local $2 i32) (local $3 i32) @@ -4161,7 +4186,7 @@ (local.get $8) ) ) - (func $multi-use-2 (; 53 ;) (param $x i32) (result i32) + (func $multi-use-2 (param $x i32) (result i32) (local $temp i32) (local $2 i32) (local $3 i32) @@ -4204,7 +4229,7 @@ (local.get $10) ) ) - (func $many-single-uses-with-param (; 54 ;) (param $x i32) (result i32) + (func $many-single-uses-with-param (param $x i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -4247,7 +4272,7 @@ ) (unreachable) ) - (func $55 (; 55 ;) (param $var$0 i32) + (func $55 (param $var$0 i32) (local $var$1 i32) (local $var$2 i32) (local $var$3 i32) @@ -4286,6 +4311,7 @@ (local.get $8) ) (unreachable) + (unreachable) ) (nop) (local.set $10 @@ -4311,14 +4337,18 @@ ) (if (local.get $13) - (unreachable) + (block + (unreachable) + (unreachable) + ) ) ) (unreachable) + (unreachable) ) ) ) - (func $multiple-uses-to-non-expression (; 56 ;) (param $x i32) + (func $multiple-uses-to-non-expression (param $x i32) (local $temp i32) (local $2 i32) (local $3 i32) @@ -4350,7 +4380,7 @@ (local.get $6) ) ) - (func $nested-phi-forwarding (; 57 ;) (param $var$0 i32) (result i32) + (func $nested-phi-forwarding (param $var$0 i32) (result i32) (local $var$1 i32) (local $var$2 i32) (local $3 i32) @@ -4383,6 +4413,7 @@ (unreachable) ) (unreachable) + (unreachable) ) (br $label$1) (unreachable) @@ -4409,6 +4440,7 @@ ) ) (unreachable) + (unreachable) ) (nop) (i32.store offset=176 @@ -4424,7 +4456,7 @@ (local.get $9) ) ) - (func $zext-numGets (; 58 ;) (param $var$0 i32) (param $var$1 i32) + (func $zext-numGets (param $var$0 i32) (param $var$1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4468,10 +4500,13 @@ ) (if (local.get $8) - (unreachable) + (block + (unreachable) + (unreachable) + ) ) ) - (func $zext-numGets-hasAnotherUse (; 59 ;) (param $var$0 i32) (param $var$1 i32) + (func $zext-numGets-hasAnotherUse (param $var$0 i32) (param $var$1 i32) (local $temp i32) (local $3 i32) (local $4 i32) @@ -4526,10 +4561,13 @@ ) (if (local.get $11) - (unreachable) + (block + (unreachable) + (unreachable) + ) ) ) - (func $flipped-needs-right-origin (; 60 ;) (param $var$0 i32) (result i32) + (func $flipped-needs-right-origin (param $var$0 i32) (result i32) (local $var$1 i32) (local $2 i32) (local $3 i32) @@ -4567,7 +4605,10 @@ ) (if (local.get $5) - (unreachable) + (block + (unreachable) + (unreachable) + ) ) ) (nop) @@ -4579,7 +4620,7 @@ (local.get $7) ) ) - (func $non-expr-nodes-may-have-multiple-uses-too-its-the-ORIGIN (; 61 ;) (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (result i32) + (func $non-expr-nodes-may-have-multiple-uses-too-its-the-ORIGIN (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -4613,13 +4654,14 @@ (local.get $7) ) (unreachable) + (unreachable) ) (nop) (return (local.get $8) ) ) - (func $loop-of-set-connections (; 62 ;) (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (param $var$3 i32) (param $var$4 i32) (result i32) + (func $loop-of-set-connections (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (param $var$3 i32) (param $var$4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -4653,7 +4695,7 @@ ) (unreachable) ) - (func $conditions-in-conditions (; 63 ;) (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (result i32) + (func $conditions-in-conditions (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (result i32) (local $var$3 i32) (local $var$4 i32) (local $var$5 i32) @@ -4723,6 +4765,7 @@ (i32.const 64) ) (unreachable) + (unreachable) ) (nop) (return diff -Nru binaryen-91/test/passes/fpcast-emu_pass-arg=max-func-params@5.txt binaryen-99/test/passes/fpcast-emu_pass-arg=max-func-params@5.txt --- binaryen-91/test/passes/fpcast-emu_pass-arg=max-func-params@5.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/fpcast-emu_pass-arg=max-func-params@5.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,43 @@ +(module + (type $i64_i64_i64_i64_i64_=>_i64 (func (param i64 i64 i64 i64 i64) (result i64))) + (type $i32_i64_f32_f64_=>_none (func (param i32 i64 f32 f64))) + (table $0 10 10 funcref) + (elem (i32.const 0) $byn$fpcast-emu$a) + (func $a (param $x i32) (param $y i64) (param $z f32) (param $w f64) + (drop + (call_indirect (type $i64_i64_i64_i64_i64_=>_i64) + (i64.extend_i32_u + (i32.const 1) + ) + (i64.const 2) + (i64.extend_i32_u + (i32.reinterpret_f32 + (f32.const 3) + ) + ) + (i64.reinterpret_f64 + (f64.const 4) + ) + (i64.const 0) + (i32.const 1337) + ) + ) + ) + (func $byn$fpcast-emu$a (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) (result i64) + (call $a + (i32.wrap_i64 + (local.get $0) + ) + (local.get $1) + (f32.reinterpret_i32 + (i32.wrap_i64 + (local.get $2) + ) + ) + (f64.reinterpret_i64 + (local.get $3) + ) + ) + (i64.const 0) + ) +) diff -Nru binaryen-91/test/passes/fpcast-emu_pass-arg=max-func-params@5.wast binaryen-99/test/passes/fpcast-emu_pass-arg=max-func-params@5.wast --- binaryen-91/test/passes/fpcast-emu_pass-arg=max-func-params@5.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/fpcast-emu_pass-arg=max-func-params@5.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,14 @@ +(module + (type $vijfd (func (param i32) (param i64) (param f32) (param f64))) + (table 10 10 funcref) + (elem (i32.const 0) $a) + (func $a (param $x i32) (param $y i64) (param $z f32) (param $w f64) + (call_indirect (type $vijfd) + (i32.const 1) + (i64.const 2) + (f32.const 3) + (f64.const 4) + (i32.const 1337) + ) + ) +) diff -Nru binaryen-91/test/passes/fpcast-emu.txt binaryen-99/test/passes/fpcast-emu.txt --- binaryen-91/test/passes/fpcast-emu.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/fpcast-emu.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,27 +1,15 @@ (module (type $i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_=>_i64 (func (param i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64) (result i64))) - (type $i32_i32_i64_f32_f64_=>_none (func (param i32 i32 i64 f32 f64))) (type $i32_i64_f32_f64_=>_none (func (param i32 i64 f32 f64))) - (type $i32_f64_f64_=>_i32 (func (param i32 f64 f64) (result i32))) (type $f64_f64_=>_i32 (func (param f64 f64) (result i32))) (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) - (type $i32_i32_i32_=>_i64 (func (param i32 i32 i32) (result i64))) - (type $i32_i32_i64_f32_f64_=>_f32 (func (param i32 i32 i64 f32 f64) (result f32))) - (type $i32_i64_i64_=>_f32 (func (param i32 i64 i64) (result f32))) (type $i32_i64_f32_f64_=>_f32 (func (param i32 i64 f32 f64) (result f32))) (type $i64_i64_=>_f32 (func (param i64 i64) (result f32))) - (type $i32_f32_f32_=>_f64 (func (param i32 f32 f32) (result f64))) (type $f32_f32_=>_f64 (func (param f32 f32) (result f64))) (import "env" "imported_func" (func $imported-func (param i32 i64 f32 f64) (result f32))) (table $0 10 10 funcref) (elem (i32.const 0) $byn$fpcast-emu$a $byn$fpcast-emu$b $byn$fpcast-emu$c $byn$fpcast-emu$d $byn$fpcast-emu$e $byn$fpcast-emu$e $byn$fpcast-emu$imported-func) - (export "dynCall_vijfd" (func $dynCall_vijfd)) - (export "dynCall_jii" (func $dynCall_jii)) - (export "dynCall_fjj" (func $dynCall_fjj)) - (export "dynCall_dff" (func $dynCall_dff)) - (export "dynCall_idd" (func $dynCall_idd)) - (export "dynCall_fijfd" (func $dynCall_fijfd)) - (func $a (; 1 ;) (param $x i32) (param $y i64) (param $z f32) (param $w f64) + (func $a (param $x i32) (param $y i64) (param $z f32) (param $w f64) (drop (call_indirect (type $i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_=>_i64) (i64.extend_i32_u @@ -52,7 +40,7 @@ ) ) ) - (func $b (; 2 ;) (param $x i32) (param $y i32) (result i64) + (func $b (param $x i32) (param $y i32) (result i64) (call_indirect (type $i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_=>_i64) (i64.extend_i32_u (i32.const 1) @@ -77,7 +65,7 @@ (i32.const 1337) ) ) - (func $c (; 3 ;) (param $x i64) (param $y i64) (result f32) + (func $c (param $x i64) (param $y i64) (result f32) (f32.reinterpret_i32 (i32.wrap_i64 (call_indirect (type $i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_=>_i64) @@ -102,7 +90,7 @@ ) ) ) - (func $d (; 4 ;) (param $x f32) (param $y f32) (result f64) + (func $d (param $x f32) (param $y f32) (result f64) (f64.reinterpret_i64 (call_indirect (type $i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_=>_i64) (i64.extend_i32_u @@ -133,7 +121,7 @@ ) ) ) - (func $e (; 5 ;) (param $x f64) (param $y f64) (result i32) + (func $e (param $x f64) (param $y f64) (result i32) (i32.wrap_i64 (call_indirect (type $i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_=>_i64) (i64.reinterpret_f64 @@ -160,179 +148,7 @@ ) ) ) - (func $dynCall_vijfd (; 6 ;) (param $fptr i32) (param $0 i32) (param $1 i64) (param $2 f32) (param $3 f64) - (drop - (call_indirect (type $i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_=>_i64) - (i64.extend_i32_u - (local.get $0) - ) - (local.get $1) - (i64.extend_i32_u - (i32.reinterpret_f32 - (local.get $2) - ) - ) - (i64.reinterpret_f64 - (local.get $3) - ) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (local.get $fptr) - ) - ) - ) - (func $dynCall_jii (; 7 ;) (param $fptr i32) (param $0 i32) (param $1 i32) (result i64) - (call_indirect (type $i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_=>_i64) - (i64.extend_i32_u - (local.get $0) - ) - (i64.extend_i32_u - (local.get $1) - ) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (local.get $fptr) - ) - ) - (func $dynCall_fjj (; 8 ;) (param $fptr i32) (param $0 i64) (param $1 i64) (result f32) - (f32.reinterpret_i32 - (i32.wrap_i64 - (call_indirect (type $i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_=>_i64) - (local.get $0) - (local.get $1) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (local.get $fptr) - ) - ) - ) - ) - (func $dynCall_dff (; 9 ;) (param $fptr i32) (param $0 f32) (param $1 f32) (result f64) - (f64.reinterpret_i64 - (call_indirect (type $i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_=>_i64) - (i64.extend_i32_u - (i32.reinterpret_f32 - (local.get $0) - ) - ) - (i64.extend_i32_u - (i32.reinterpret_f32 - (local.get $1) - ) - ) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (local.get $fptr) - ) - ) - ) - (func $dynCall_idd (; 10 ;) (param $fptr i32) (param $0 f64) (param $1 f64) (result i32) - (i32.wrap_i64 - (call_indirect (type $i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_=>_i64) - (i64.reinterpret_f64 - (local.get $0) - ) - (i64.reinterpret_f64 - (local.get $1) - ) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (local.get $fptr) - ) - ) - ) - (func $dynCall_fijfd (; 11 ;) (param $fptr i32) (param $0 i32) (param $1 i64) (param $2 f32) (param $3 f64) (result f32) - (f32.reinterpret_i32 - (i32.wrap_i64 - (call_indirect (type $i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_=>_i64) - (i64.extend_i32_u - (local.get $0) - ) - (local.get $1) - (i64.extend_i32_u - (i32.reinterpret_f32 - (local.get $2) - ) - ) - (i64.reinterpret_f64 - (local.get $3) - ) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (i64.const 0) - (local.get $fptr) - ) - ) - ) - ) - (func $byn$fpcast-emu$a (; 12 ;) (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) (param $5 i64) (param $6 i64) (param $7 i64) (param $8 i64) (param $9 i64) (param $10 i64) (param $11 i64) (param $12 i64) (param $13 i64) (param $14 i64) (param $15 i64) (result i64) + (func $byn$fpcast-emu$a (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) (param $5 i64) (param $6 i64) (param $7 i64) (param $8 i64) (param $9 i64) (param $10 i64) (param $11 i64) (param $12 i64) (param $13 i64) (param $14 i64) (param $15 i64) (result i64) (call $a (i32.wrap_i64 (local.get $0) @@ -349,7 +165,7 @@ ) (i64.const 0) ) - (func $byn$fpcast-emu$b (; 13 ;) (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) (param $5 i64) (param $6 i64) (param $7 i64) (param $8 i64) (param $9 i64) (param $10 i64) (param $11 i64) (param $12 i64) (param $13 i64) (param $14 i64) (param $15 i64) (result i64) + (func $byn$fpcast-emu$b (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) (param $5 i64) (param $6 i64) (param $7 i64) (param $8 i64) (param $9 i64) (param $10 i64) (param $11 i64) (param $12 i64) (param $13 i64) (param $14 i64) (param $15 i64) (result i64) (call $b (i32.wrap_i64 (local.get $0) @@ -359,7 +175,7 @@ ) ) ) - (func $byn$fpcast-emu$c (; 14 ;) (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) (param $5 i64) (param $6 i64) (param $7 i64) (param $8 i64) (param $9 i64) (param $10 i64) (param $11 i64) (param $12 i64) (param $13 i64) (param $14 i64) (param $15 i64) (result i64) + (func $byn$fpcast-emu$c (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) (param $5 i64) (param $6 i64) (param $7 i64) (param $8 i64) (param $9 i64) (param $10 i64) (param $11 i64) (param $12 i64) (param $13 i64) (param $14 i64) (param $15 i64) (result i64) (i64.extend_i32_u (i32.reinterpret_f32 (call $c @@ -369,7 +185,7 @@ ) ) ) - (func $byn$fpcast-emu$d (; 15 ;) (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) (param $5 i64) (param $6 i64) (param $7 i64) (param $8 i64) (param $9 i64) (param $10 i64) (param $11 i64) (param $12 i64) (param $13 i64) (param $14 i64) (param $15 i64) (result i64) + (func $byn$fpcast-emu$d (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) (param $5 i64) (param $6 i64) (param $7 i64) (param $8 i64) (param $9 i64) (param $10 i64) (param $11 i64) (param $12 i64) (param $13 i64) (param $14 i64) (param $15 i64) (result i64) (i64.reinterpret_f64 (call $d (f32.reinterpret_i32 @@ -385,7 +201,7 @@ ) ) ) - (func $byn$fpcast-emu$e (; 16 ;) (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) (param $5 i64) (param $6 i64) (param $7 i64) (param $8 i64) (param $9 i64) (param $10 i64) (param $11 i64) (param $12 i64) (param $13 i64) (param $14 i64) (param $15 i64) (result i64) + (func $byn$fpcast-emu$e (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) (param $5 i64) (param $6 i64) (param $7 i64) (param $8 i64) (param $9 i64) (param $10 i64) (param $11 i64) (param $12 i64) (param $13 i64) (param $14 i64) (param $15 i64) (result i64) (i64.extend_i32_u (call $e (f64.reinterpret_i64 @@ -397,7 +213,7 @@ ) ) ) - (func $byn$fpcast-emu$imported-func (; 17 ;) (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) (param $5 i64) (param $6 i64) (param $7 i64) (param $8 i64) (param $9 i64) (param $10 i64) (param $11 i64) (param $12 i64) (param $13 i64) (param $14 i64) (param $15 i64) (result i64) + (func $byn$fpcast-emu$imported-func (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) (param $5 i64) (param $6 i64) (param $7 i64) (param $8 i64) (param $9 i64) (param $10 i64) (param $11 i64) (param $12 i64) (param $13 i64) (param $14 i64) (param $15 i64) (result i64) (i64.extend_i32_u (i32.reinterpret_f32 (call $imported-func @@ -419,12 +235,12 @@ ) ) (module - (type $i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_=>_i64 (func (param i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64) (result i64))) (type $f32_=>_i64 (func (param f32) (result i64))) + (type $i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_i64_=>_i64 (func (param i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64) (result i64))) (table $0 42 42 funcref) (global $global$0 (mut i32) (i32.const 10)) (export "func_106" (func $0)) - (func $0 (; 0 ;) (param $0 f32) (result i64) + (func $0 (param $0 f32) (result i64) (block $label$1 (result i64) (loop $label$2 (global.set $global$0 @@ -463,19 +279,19 @@ (elem (i32.const 0) $byn$fpcast-emu$a $byn$fpcast-emu$b) (export "dynCall_vf" (func $dynCall_vf)) (export "dynCall_vd" (func $min_vd)) - (func $a (; 0 ;) (param $0 f32) + (func $a (param $0 f32) (nop) ) - (func $b (; 1 ;) (param $0 f64) + (func $b (param $0 f64) (nop) ) - (func $dynCall_vf (; 2 ;) (param $0 f32) + (func $dynCall_vf (param $0 f32) (nop) ) - (func $min_vd (; 3 ;) (param $0 f32) + (func $min_vd (param $0 f32) (nop) ) - (func $byn$fpcast-emu$a (; 4 ;) (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) (param $5 i64) (param $6 i64) (param $7 i64) (param $8 i64) (param $9 i64) (param $10 i64) (param $11 i64) (param $12 i64) (param $13 i64) (param $14 i64) (param $15 i64) (result i64) + (func $byn$fpcast-emu$a (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) (param $5 i64) (param $6 i64) (param $7 i64) (param $8 i64) (param $9 i64) (param $10 i64) (param $11 i64) (param $12 i64) (param $13 i64) (param $14 i64) (param $15 i64) (result i64) (call $a (f32.reinterpret_i32 (i32.wrap_i64 @@ -485,7 +301,7 @@ ) (i64.const 0) ) - (func $byn$fpcast-emu$b (; 5 ;) (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) (param $5 i64) (param $6 i64) (param $7 i64) (param $8 i64) (param $9 i64) (param $10 i64) (param $11 i64) (param $12 i64) (param $13 i64) (param $14 i64) (param $15 i64) (result i64) + (func $byn$fpcast-emu$b (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) (param $5 i64) (param $6 i64) (param $7 i64) (param $8 i64) (param $9 i64) (param $10 i64) (param $11 i64) (param $12 i64) (param $13 i64) (param $14 i64) (param $15 i64) (result i64) (call $b (f64.reinterpret_i64 (local.get $0) diff -Nru binaryen-91/test/passes/func-metrics.txt binaryen-99/test/passes/func-metrics.txt --- binaryen-91/test/passes/func-metrics.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/func-metrics.txt 2021-01-07 20:01:06.000000000 +0000 @@ -39,17 +39,17 @@ (table $0 256 256 funcref) (elem (i32.const 0) $ifs $ifs $ifs) (global $glob i32 (i32.const 1337)) - (func $empty (; 0 ;) + (func $empty (nop) ) - (func $small (; 1 ;) + (func $small (nop) (drop (i32.const 100421) ) (return) ) - (func $ifs (; 2 ;) (param $x i32) + (func $ifs (param $x i32) (local $y f32) (block $block0 (if @@ -134,7 +134,7 @@ (import "env" "waka" (func $waka)) (export "a" (func $func_a)) (export "b" (func $func_b)) - (func $func_a (; 1 ;) + (func $func_a (call $waka) (call $waka) (call $waka) @@ -143,7 +143,7 @@ (call $func_b) (call $func_c) ) - (func $func_b (; 2 ;) + (func $func_b (call $waka) (call $waka) (call $waka) @@ -155,7 +155,7 @@ (call $waka) (call $waka) ) - (func $func_c (; 3 ;) + (func $func_c (call $waka) (call $waka) (call $waka) @@ -197,7 +197,7 @@ (import "env" "waka" (func $waka)) (export "a" (func $func_a)) (start $func_a) - (func $func_a (; 1 ;) + (func $func_a (call $waka) (call $waka) (call $waka) @@ -219,13 +219,13 @@ block : 1 call : 5 start: func_a - [removable-bytes-without-it]: 67 + [removable-bytes-without-it]: 57 [total] : 0 (module (type $none_=>_none (func)) (import "env" "waka" (func $waka)) (start $func_a) - (func $func_a (; 1 ;) + (func $func_a (call $waka) (call $waka) (call $waka) @@ -247,14 +247,14 @@ [vars] : 0 global.get : 1 export: stackSave (0) - [removable-bytes-without-it]: 66 + [removable-bytes-without-it]: 56 [total] : 0 (module (type $none_=>_i32 (func (result i32))) (import "env" "STACKTOP" (global $gimport$0 i32)) (global $global$0 (mut i32) (global.get $gimport$0)) (export "stackSave" (func $0)) - (func $0 (; 0 ;) (result i32) + (func $0 (result i32) (global.get $global$0) ) ) diff -Nru binaryen-91/test/passes/fuzz-exec_all-features.txt binaryen-99/test/passes/fuzz-exec_all-features.txt --- binaryen-91/test/passes/fuzz-exec_all-features.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/fuzz-exec_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,221 @@ +[fuzz-exec] calling a +[fuzz-exec] note result: a => -69 +[fuzz-exec] calling b +[fuzz-exec] note result: b => -31768 +[fuzz-exec] calling c +[fuzz-exec] note result: c => -69 +[fuzz-exec] calling d +[fuzz-exec] note result: d => -31768 +[fuzz-exec] calling e +[fuzz-exec] note result: e => -2146649112 +(module + (type $none_=>_i64 (func (result i64))) + (type $none_=>_i32 (func (result i32))) + (export "a" (func $a)) + (export "b" (func $b)) + (export "c" (func $c)) + (export "d" (func $d)) + (export "e" (func $e)) + (func $a (result i32) + (i32.extend8_s + (i32.const 187) + ) + ) + (func $b (result i32) + (i32.extend16_s + (i32.const 33768) + ) + ) + (func $c (result i64) + (i64.extend8_s + (i64.const 187) + ) + ) + (func $d (result i64) + (i64.extend16_s + (i64.const 33768) + ) + ) + (func $e (result i64) + (i64.extend32_s + (i64.const 2148318184) + ) + ) +) +[fuzz-exec] calling a +[fuzz-exec] note result: a => -69 +[fuzz-exec] calling b +[fuzz-exec] note result: b => -31768 +[fuzz-exec] calling c +[fuzz-exec] note result: c => -69 +[fuzz-exec] calling d +[fuzz-exec] note result: d => -31768 +[fuzz-exec] calling e +[fuzz-exec] note result: e => -2146649112 +[fuzz-exec] comparing a +[fuzz-exec] comparing b +[fuzz-exec] comparing c +[fuzz-exec] comparing d +[fuzz-exec] comparing e +[fuzz-exec] calling unaligned_load +[trap unaligned atomic operation] +[fuzz-exec] calling unaligned_load_offset +[trap unaligned atomic operation] +[fuzz-exec] calling aligned_for_size +[fuzz-exec] note result: aligned_for_size => 0 +[fuzz-exec] calling unaligned_notify +[trap unaligned atomic operation] +[fuzz-exec] calling wrap_cmpxchg +[LoggingExternalInterface logging 42] +[fuzz-exec] calling oob_notify +[trap final > memory: 18446744073709551512 > 65514] +(module + (type $none_=>_i32 (func (result i32))) + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (import "fuzzing-support" "log-i32" (func $fimport$0 (param i32))) + (memory $0 (shared 1 1)) + (export "unaligned_load" (func $0)) + (export "unaligned_load_offset" (func $1)) + (export "aligned_for_size" (func $2)) + (export "unaligned_notify" (func $3)) + (export "wrap_cmpxchg" (func $4)) + (export "oob_notify" (func $5)) + (func $0 (result i32) + (i32.atomic.load + (i32.const 1) + ) + ) + (func $1 (result i32) + (i32.atomic.load offset=1 + (i32.const 0) + ) + ) + (func $2 (result i32) + (i32.atomic.load16_u offset=2 + (i32.const 0) + ) + ) + (func $3 (result i32) + (memory.atomic.notify + (i32.const 1) + (i32.const 1) + ) + ) + (func $4 (param $0 i32) (param $1 i32) + (drop + (i32.atomic.rmw8.cmpxchg_u + (i32.const 0) + (i32.const 256) + (i32.const 42) + ) + ) + (call $fimport$0 + (i32.load + (i32.const 0) + ) + ) + ) + (func $5 + (drop + (memory.atomic.notify offset=22 + (i32.const -104) + (i32.const -72) + ) + ) + ) +) +[fuzz-exec] calling unaligned_load +[trap unaligned atomic operation] +[fuzz-exec] calling unaligned_load_offset +[trap unaligned atomic operation] +[fuzz-exec] calling aligned_for_size +[fuzz-exec] note result: aligned_for_size => 0 +[fuzz-exec] calling unaligned_notify +[trap unaligned atomic operation] +[fuzz-exec] calling wrap_cmpxchg +[LoggingExternalInterface logging 42] +[fuzz-exec] calling oob_notify +[trap final > memory: 18446744073709551512 > 65514] +[fuzz-exec] comparing aligned_for_size +[fuzz-exec] comparing unaligned_load +[fuzz-exec] comparing unaligned_load_offset +[fuzz-exec] comparing unaligned_notify +[fuzz-exec] calling unsigned_2_bytes +[fuzz-exec] note result: unsigned_2_bytes => 65535 +(module + (type $none_=>_i32 (func (result i32))) + (memory $0 (shared 1 1)) + (data (i32.const 0) "\ff\ff") + (export "unsigned_2_bytes" (func $0)) + (func $0 (result i32) + (i32.atomic.rmw16.xor_u + (i32.const 0) + (i32.const 0) + ) + ) +) +[fuzz-exec] calling unsigned_2_bytes +[fuzz-exec] note result: unsigned_2_bytes => 65535 +[fuzz-exec] comparing unsigned_2_bytes +[fuzz-exec] calling rmw-reads-modifies-and-writes +[LoggingExternalInterface logging 0] +(module + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (import "fuzzing-support" "log-i32" (func $fimport$0 (param i32))) + (memory $0 (shared 1 1)) + (export "rmw-reads-modifies-and-writes" (func $0)) + (func $0 + (drop + (i64.atomic.rmw16.and_u offset=4 + (i32.const 0) + (i64.const 65535) + ) + ) + (call $fimport$0 + (i32.load8_u + (i32.const 5) + ) + ) + ) +) +[fuzz-exec] calling rmw-reads-modifies-and-writes +[LoggingExternalInterface logging 0] +[fuzz-exec] calling rmw-reads-modifies-and-writes-asymmetrical +[LoggingExternalInterface logging 214] +(module + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (import "fuzzing-support" "log-i32" (func $fimport$0 (param i32))) + (memory $0 (shared 1 1)) + (export "rmw-reads-modifies-and-writes-asymmetrical" (func $0)) + (func $0 + (drop + (i32.atomic.rmw8.sub_u + (i32.const 3) + (i32.const 42) + ) + ) + (call $fimport$0 + (i32.load8_u + (i32.const 3) + ) + ) + ) +) +[fuzz-exec] calling rmw-reads-modifies-and-writes-asymmetrical +[LoggingExternalInterface logging 214] +[fuzz-exec] calling func +[fuzz-exec] note result: func => funcref(func) +(module + (type $none_=>_funcref (func (result funcref))) + (export "func" (func $func)) + (func $func (result funcref) + (ref.func $func) + ) +) +[fuzz-exec] calling func +[fuzz-exec] note result: func => funcref(func) +[fuzz-exec] comparing func diff -Nru binaryen-91/test/passes/fuzz-exec_all-features.wast binaryen-99/test/passes/fuzz-exec_all-features.wast --- binaryen-91/test/passes/fuzz-exec_all-features.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/fuzz-exec_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,129 @@ +(module + (export "a" (func $a)) + (export "b" (func $b)) + (export "c" (func $c)) + (export "d" (func $d)) + (export "e" (func $e)) + (func $a (result i32) + (i32.extend8_s + (i32.const 187) + ) + ) + (func $b (result i32) + (i32.extend16_s + (i32.const 33768) + ) + ) + (func $c (result i64) + (i64.extend8_s + (i64.const 187) + ) + ) + (func $d (result i64) + (i64.extend16_s + (i64.const 33768) + ) + ) + (func $e (result i64) + (i64.extend32_s + (i64.const 2148318184) + ) + ) +) +(module + (import "fuzzing-support" "log-i32" (func $fimport$0 (param i32))) + (memory $0 (shared 1 1)) + (func "unaligned_load" (result i32) + (i32.atomic.load + (i32.const 1) ;; unaligned ptr + (i32.const 1) + ) + ) + (func "unaligned_load_offset" (result i32) + (i32.atomic.load offset=1 ;; unaligned with offset + (i32.const 0) + (i32.const 1) + ) + ) + (func "aligned_for_size" (result i32) + (i32.atomic.load16_u offset=2 ;; just 2 bytes loaded, so size is ok + (i32.const 0) + ) + ) + (func "unaligned_notify" (result i32) + (memory.atomic.notify + (i32.const 1) ;; unaligned + (i32.const 1) + ) + ) + (func "wrap_cmpxchg" (param $0 i32) (param $1 i32) + (drop + (i32.atomic.rmw8.cmpxchg_u + (i32.const 0) + (i32.const 256) ;; 0x100, lower byte is 0 - should be wrapped to that + (i32.const 42) + ) + ) + (call $fimport$0 + (i32.load (i32.const 0)) + ) + ) + (func "oob_notify" + (drop + (memory.atomic.notify offset=22 + (i32.const -104) ;; illegal address + (i32.const -72) + ) + ) + ) +) +(module + (memory $0 (shared 1 1)) + (data (i32.const 0) "\ff\ff") + (func "unsigned_2_bytes" (result i32) + (i32.atomic.rmw16.xor_u ;; should be unsigned + (i32.const 0) + (i32.const 0) + ) + ) +) +(module + (import "fuzzing-support" "log-i32" (func $fimport$0 (param i32))) + (memory $0 (shared 1 1)) + (func "rmw-reads-modifies-and-writes" + (drop + (i64.atomic.rmw16.and_u offset=4 + (i32.const 0) + (i64.const 65535) + ) + ) + (call $fimport$0 + (i32.load8_u + (i32.const 5) + ) + ) + ) +) +(module + (import "fuzzing-support" "log-i32" (func $fimport$0 (param i32))) + (memory $0 (shared 1 1)) + (func "rmw-reads-modifies-and-writes-asymmetrical" + (drop + (i32.atomic.rmw8.sub_u + (i32.const 3) + (i32.const 42) + ) + ) + (call $fimport$0 + (i32.load8_u + (i32.const 3) + ) + ) + ) +) +(module + (export "func" (func $func)) + (func $func (result funcref) + (ref.func $func) + ) +) diff -Nru binaryen-91/test/passes/fuzz-exec_enable-sign-ext.txt binaryen-99/test/passes/fuzz-exec_enable-sign-ext.txt --- binaryen-91/test/passes/fuzz-exec_enable-sign-ext.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/fuzz-exec_enable-sign-ext.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ -[fuzz-exec] calling a -[fuzz-exec] note result: a => -69 -[fuzz-exec] calling b -[fuzz-exec] note result: b => -31768 -[fuzz-exec] calling c -[fuzz-exec] note result: c => -69 -[fuzz-exec] calling d -[fuzz-exec] note result: d => -31768 -[fuzz-exec] calling e -[fuzz-exec] note result: e => -2146649112 -(module - (type $none_=>_i64 (func (result i64))) - (type $none_=>_i32 (func (result i32))) - (export "a" (func $a)) - (export "b" (func $b)) - (export "c" (func $c)) - (export "d" (func $d)) - (export "e" (func $e)) - (func $a (; 0 ;) (result i32) - (i32.extend8_s - (i32.const 187) - ) - ) - (func $b (; 1 ;) (result i32) - (i32.extend16_s - (i32.const 33768) - ) - ) - (func $c (; 2 ;) (result i64) - (i64.extend8_s - (i64.const 187) - ) - ) - (func $d (; 3 ;) (result i64) - (i64.extend16_s - (i64.const 33768) - ) - ) - (func $e (; 4 ;) (result i64) - (i64.extend32_s - (i64.const 2148318184) - ) - ) -) -[fuzz-exec] calling a -[fuzz-exec] note result: a => -69 -[fuzz-exec] calling b -[fuzz-exec] note result: b => -31768 -[fuzz-exec] calling c -[fuzz-exec] note result: c => -69 -[fuzz-exec] calling d -[fuzz-exec] note result: d => -31768 -[fuzz-exec] calling e -[fuzz-exec] note result: e => -2146649112 -[fuzz-exec] comparing a -[fuzz-exec] comparing b -[fuzz-exec] comparing c -[fuzz-exec] comparing d -[fuzz-exec] comparing e diff -Nru binaryen-91/test/passes/fuzz-exec_enable-sign-ext.wast binaryen-99/test/passes/fuzz-exec_enable-sign-ext.wast --- binaryen-91/test/passes/fuzz-exec_enable-sign-ext.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/fuzz-exec_enable-sign-ext.wast 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -(module - (export "a" (func $a)) - (export "b" (func $b)) - (export "c" (func $c)) - (export "d" (func $d)) - (export "e" (func $e)) - (func $a (result i32) - (i32.extend8_s - (i32.const 187) - ) - ) - (func $b (result i32) - (i32.extend16_s - (i32.const 33768) - ) - ) - (func $c (result i64) - (i64.extend8_s - (i64.const 187) - ) - ) - (func $d (result i64) - (i64.extend16_s - (i64.const 33768) - ) - ) - (func $e (result i64) - (i64.extend32_s - (i64.const 2148318184) - ) - ) -) - diff -Nru binaryen-91/test/passes/fuzz-exec_O.txt binaryen-99/test/passes/fuzz-exec_O.txt --- binaryen-91/test/passes/fuzz-exec_O.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/fuzz-exec_O.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,12 +1,14 @@ [fuzz-exec] calling func_0 +[trap final > memory: 18446744073709551615 > 65514] [fuzz-exec] calling func_1 +[trap final > memory: 18446744073709551615 > 65514] (module (type $none_=>_i32 (func (result i32))) (type $none_=>_i64 (func (result i64))) (memory $0 1 1) (export "func_0" (func $func_0)) (export "func_1" (func $func_1)) - (func $func_0 (; 0 ;) (; has Stack IR ;) (result i64) + (func $func_0 (; has Stack IR ;) (result i64) (block $label$0 (result i64) (br_if $label$0 (i64.const 1234) @@ -16,13 +18,75 @@ ) ) ) - (func $func_1 (; 1 ;) (; has Stack IR ;) (result i32) + (func $func_1 (; has Stack IR ;) (result i32) (i32.load16_s offset=22 align=1 (i32.const -1) ) ) ) [fuzz-exec] calling func_0 +[trap final > memory: 18446744073709551615 > 65514] [fuzz-exec] calling func_1 +[trap final > memory: 18446744073709551615 > 65514] [fuzz-exec] comparing func_0 [fuzz-exec] comparing func_1 +[fuzz-exec] calling div +[fuzz-exec] note result: div => nan:0x400000 +[fuzz-exec] calling mul1 +[fuzz-exec] note result: mul1 => nan:0x400000 +[fuzz-exec] calling mul2 +[fuzz-exec] note result: mul2 => nan:0x400000 +[fuzz-exec] calling add1 +[fuzz-exec] note result: add1 => nan:0x400000 +[fuzz-exec] calling add2 +[fuzz-exec] note result: add2 => nan:0x400000 +[fuzz-exec] calling add3 +[fuzz-exec] note result: add3 => nan:0x400000 +[fuzz-exec] calling add4 +[fuzz-exec] note result: add4 => nan:0x400000 +[fuzz-exec] calling sub1 +[fuzz-exec] note result: sub1 => nan:0x400000 +[fuzz-exec] calling sub2 +[fuzz-exec] note result: sub2 => nan:0x400000 +(module + (type $none_=>_f32 (func (result f32))) + (export "div" (func $0)) + (export "mul1" (func $0)) + (export "mul2" (func $0)) + (export "add1" (func $0)) + (export "add2" (func $0)) + (export "add3" (func $0)) + (export "add4" (func $0)) + (export "sub1" (func $0)) + (export "sub2" (func $0)) + (func $0 (; has Stack IR ;) (result f32) + (f32.const nan:0x400000) + ) +) +[fuzz-exec] calling div +[fuzz-exec] note result: div => nan:0x400000 +[fuzz-exec] calling mul1 +[fuzz-exec] note result: mul1 => nan:0x400000 +[fuzz-exec] calling mul2 +[fuzz-exec] note result: mul2 => nan:0x400000 +[fuzz-exec] calling add1 +[fuzz-exec] note result: add1 => nan:0x400000 +[fuzz-exec] calling add2 +[fuzz-exec] note result: add2 => nan:0x400000 +[fuzz-exec] calling add3 +[fuzz-exec] note result: add3 => nan:0x400000 +[fuzz-exec] calling add4 +[fuzz-exec] note result: add4 => nan:0x400000 +[fuzz-exec] calling sub1 +[fuzz-exec] note result: sub1 => nan:0x400000 +[fuzz-exec] calling sub2 +[fuzz-exec] note result: sub2 => nan:0x400000 +[fuzz-exec] comparing add1 +[fuzz-exec] comparing add2 +[fuzz-exec] comparing add3 +[fuzz-exec] comparing add4 +[fuzz-exec] comparing div +[fuzz-exec] comparing mul1 +[fuzz-exec] comparing mul2 +[fuzz-exec] comparing sub1 +[fuzz-exec] comparing sub2 diff -Nru binaryen-91/test/passes/fuzz-exec_O.wast binaryen-99/test/passes/fuzz-exec_O.wast --- binaryen-91/test/passes/fuzz-exec_O.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/fuzz-exec_O.wast 2021-01-07 20:01:06.000000000 +0000 @@ -20,4 +20,59 @@ ) ) ) - +(module + (func "div" (result f32) + (f32.div + (f32.const -nan:0x23017a) + (f32.const 1) + ) + ) + (func "mul1" (result f32) + (f32.mul + (f32.const -nan:0x34546d) + (f32.const 1) + ) + ) + (func "mul2" (result f32) + (f32.mul + (f32.const 1) + (f32.const -nan:0x34546d) + ) + ) + (func "add1" (result f32) + (f32.add + (f32.const -nan:0x34546d) + (f32.const -0) + ) + ) + (func "add2" (result f32) + (f32.add + (f32.const -0) + (f32.const -nan:0x34546d) + ) + ) + (func "add3" (result f32) + (f32.add + (f32.const -nan:0x34546d) + (f32.const 0) + ) + ) + (func "add4" (result f32) + (f32.add + (f32.const 0) + (f32.const -nan:0x34546d) + ) + ) + (func "sub1" (result f32) + (f32.sub + (f32.const -nan:0x34546d) + (f32.const 0) + ) + ) + (func "sub2" (result f32) + (f32.sub + (f32.const -nan:0x34546d) + (f32.const -0) + ) + ) +) diff -Nru binaryen-91/test/passes/fuzz_metrics_noprint.bin.txt binaryen-99/test/passes/fuzz_metrics_noprint.bin.txt --- binaryen-91/test/passes/fuzz_metrics_noprint.bin.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/fuzz_metrics_noprint.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,30 @@ +total + [events] : 0 + [exports] : 51 + [funcs] : 67 + [globals] : 7 + [imports] : 4 + [memory-data] : 4 + [table-data] : 18 + [total] : 4870 + [vars] : 236 + binary : 368 + block : 699 + break : 191 + call : 300 + call_indirect : 39 + const : 847 + drop : 91 + global.get : 403 + global.set : 171 + if : 260 + load : 85 + local.get : 374 + local.set : 251 + loop : 111 + nop : 86 + return : 187 + select : 30 + store : 36 + unary : 340 + unreachable : 1 diff -Nru binaryen-91/test/passes/fuzz_metrics_noprint.passes binaryen-99/test/passes/fuzz_metrics_noprint.passes --- binaryen-91/test/passes/fuzz_metrics_noprint.passes 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/fuzz_metrics_noprint.passes 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +translate-to-fuzz_metrics Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/passes/fuzz_metrics_noprint.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/passes/fuzz_metrics_noprint.wasm differ diff -Nru binaryen-91/test/passes/generate-dyncalls.txt binaryen-99/test/passes/generate-dyncalls.txt --- binaryen-91/test/passes/generate-dyncalls.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/generate-dyncalls.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,38 @@ +(module + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i64 (func (param i32) (result i64))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) + (import "env" "invoke_vii" (func $invoke_vii (param i32 i32 i32))) + (table $0 2 2 funcref) + (elem (i32.const 0) $f1 $f2) + (export "dynCall_i" (func $dynCall_i)) + (export "dynCall_ji" (func $dynCall_ji)) + (export "dynCall_vii" (func $dynCall_vii)) + (func $f1 (result i32) + (i32.const 1024) + ) + (func $f2 (param $0 i32) (result i64) + (i64.const 42) + ) + (func $dynCall_i (param $fptr i32) (result i32) + (call_indirect (type $none_=>_i32) + (local.get $fptr) + ) + ) + (func $dynCall_ji (param $fptr i32) (param $0 i32) (result i64) + (call_indirect (type $i32_=>_i64) + (local.get $0) + (local.get $fptr) + ) + ) + (func $dynCall_vii (param $fptr i32) (param $0 i32) (param $1 i32) + (call_indirect (type $i32_i32_=>_none) + (local.get $0) + (local.get $1) + (local.get $fptr) + ) + ) +) diff -Nru binaryen-91/test/passes/generate-dyncalls.wast binaryen-99/test/passes/generate-dyncalls.wast --- binaryen-91/test/passes/generate-dyncalls.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/generate-dyncalls.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,11 @@ +(module + (import "env" "invoke_vii" (func $invoke_vii (param i32 i32 i32))) + (func $f1 (result i32) + (i32.const 1024) + ) + (func $f2 (param i32) (result i64) + (i64.const 42) + ) + (table 2 2 funcref) + (elem (i32.const 0) $f1 $f2) +) diff -Nru binaryen-91/test/passes/generate-i64-dyncalls.txt binaryen-99/test/passes/generate-i64-dyncalls.txt --- binaryen-91/test/passes/generate-i64-dyncalls.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/generate-i64-dyncalls.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,20 @@ +(module + (type $i32_=>_i64 (func (param i32) (result i64))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) + (table $0 2 2 funcref) + (elem (i32.const 0) $f1 $f2) + (export "dynCall_ji" (func $dynCall_ji)) + (func $f1 (result i32) + (i32.const 1024) + ) + (func $f2 (param $0 i32) (result i64) + (i64.const 42) + ) + (func $dynCall_ji (param $fptr i32) (param $0 i32) (result i64) + (call_indirect (type $i32_=>_i64) + (local.get $0) + (local.get $fptr) + ) + ) +) diff -Nru binaryen-91/test/passes/generate-i64-dyncalls.wast binaryen-99/test/passes/generate-i64-dyncalls.wast --- binaryen-91/test/passes/generate-i64-dyncalls.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/generate-i64-dyncalls.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,10 @@ +(module + (func $f1 (result i32) + (i32.const 1024) + ) + (func $f2 (param i32) (result i64) + (i64.const 42) + ) + (table 2 2 funcref) + (elem (i32.const 0) $f1 $f2) +) diff -Nru binaryen-91/test/passes/generate-stack-ir_optimize-stack-ir_print-stack-ir_all-features.txt binaryen-99/test/passes/generate-stack-ir_optimize-stack-ir_print-stack-ir_all-features.txt --- binaryen-91/test/passes/generate-stack-ir_optimize-stack-ir_print-stack-ir_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/generate-stack-ir_optimize-stack-ir_print-stack-ir_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -2,7 +2,7 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (event $e0 (attr 0) (param i32)) - (func $eh (; 0 ;) + (func $eh (local $exn exnref) try i32.const 0 @@ -23,15 +23,17 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (event $e0 (attr 0) (param i32)) - (func $eh (; 0 ;) (; has Stack IR ;) + (func $eh (; has Stack IR ;) (local $exn exnref) (try - (throw $e0 - (i32.const 0) + (do + (throw $e0 + (i32.const 0) + ) ) (catch (local.set $exn - (exnref.pop) + (pop exnref) ) (drop (block $l0 (result i32) diff -Nru binaryen-91/test/passes/generate-stack-ir_optimize-stack-ir_print-stack-ir_all-features.wast binaryen-99/test/passes/generate-stack-ir_optimize-stack-ir_print-stack-ir_all-features.wast --- binaryen-91/test/passes/generate-stack-ir_optimize-stack-ir_print-stack-ir_all-features.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/generate-stack-ir_optimize-stack-ir_print-stack-ir_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -3,9 +3,11 @@ (func $eh (local $exn exnref) (try - (throw $e0 (i32.const 0)) + (do + (throw $e0 (i32.const 0)) + ) (catch - (local.set $exn (exnref.pop)) + (local.set $exn (pop exnref)) (drop (block $l0 (result i32) (rethrow diff -Nru binaryen-91/test/passes/generate-stack-ir_optimize-stack-ir_print-stack-ir_optimize-level=3.txt binaryen-99/test/passes/generate-stack-ir_optimize-stack-ir_print-stack-ir_optimize-level=3.txt --- binaryen-91/test/passes/generate-stack-ir_optimize-stack-ir_print-stack-ir_optimize-level=3.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/generate-stack-ir_optimize-stack-ir_print-stack-ir_optimize-level=3.txt 2021-01-07 20:01:06.000000000 +0000 @@ -17,7 +17,7 @@ (table $0 10 funcref) (elem (i32.const 0) $z $big_negative $z $z $w $w $importedDoubles $w $z $cneg) (export "big_negative" (func $big_negative)) - (func $big_negative (; 3 ;) + (func $big_negative (local $temp f64) f64.const -2147483648 local.set $temp @@ -30,7 +30,7 @@ f64.const -0.039625 local.set $temp ) - (func $importedDoubles (; 4 ;) (result f64) + (func $importedDoubles (result f64) (local $temp f64) block $topmost (result f64) i32.const 8 @@ -66,7 +66,7 @@ f64.const 1.2 end ) - (func $doubleCompares (; 5 ;) (param $x f64) (param $y f64) (result f64) + (func $doubleCompares (param $x f64) (param $y f64) (result f64) (local $t f64) (local $Int f64) (local $Double i32) @@ -102,13 +102,13 @@ local.get $y end ) - (func $intOps (; 6 ;) (result i32) + (func $intOps (result i32) (local $x i32) local.get $x i32.const 0 i32.eq ) - (func $hexLiterals (; 7 ;) + (func $hexLiterals i32.const 0 i32.const 313249263 i32.add @@ -116,7 +116,7 @@ i32.add drop ) - (func $conversions (; 8 ;) + (func $conversions (local $i i32) (local $d f64) local.get $d @@ -131,7 +131,7 @@ f64.convert_i32_u local.set $d ) - (func $seq (; 9 ;) + (func $seq (local $J f64) f64.const 0.1 drop @@ -142,7 +142,7 @@ f64.sub local.set $J ) - (func $switcher (; 10 ;) (param $x i32) (result i32) + (func $switcher (param $x i32) (result i32) block $topmost (result i32) block $switch-default$3 block $switch-case$2 @@ -206,17 +206,17 @@ i32.const 0 end ) - (func $blocker (; 11 ;) + (func $blocker block $label$break$L br $label$break$L end ) - (func $frem (; 12 ;) (result f64) + (func $frem (result f64) f64.const 5.5 f64.const 1.2 call $f64-rem ) - (func $big_uint_div_u (; 13 ;) (result i32) + (func $big_uint_div_u (result i32) (local $x i32) i32.const -1 i32.const 2 @@ -224,7 +224,7 @@ i32.const -1 i32.and ) - (func $fr (; 14 ;) (param $x f32) + (func $fr (param $x f32) (local $y f32) (local $z f64) local.get $z @@ -241,10 +241,10 @@ f32.const 0 drop ) - (func $negZero (; 15 ;) (result f64) + (func $negZero (result f64) f64.const -0 ) - (func $abs (; 16 ;) + (func $abs (local $x i32) (local $y f64) (local $z f32) @@ -267,7 +267,7 @@ f32.abs local.set $z ) - (func $neg (; 17 ;) + (func $neg (local $x f32) local.get $x f32.neg @@ -278,7 +278,7 @@ i32.add call_indirect (type $f32_=>_none) ) - (func $cneg (; 18 ;) (param $x f32) + (func $cneg (param $x f32) local.get $x i32.const 1 i32.const 7 @@ -287,7 +287,7 @@ i32.add call_indirect (type $f32_=>_none) ) - (func $___syscall_ret (; 19 ;) + (func $___syscall_ret (local $$0 i32) local.get $$0 i32.const 0 @@ -296,13 +296,13 @@ i32.gt_u drop ) - (func $z (; 20 ;) + (func $z nop ) - (func $w (; 21 ;) + (func $w nop ) - (func $block_and_after (; 22 ;) (result i32) + (func $block_and_after (result i32) block $waka i32.const 1 drop @@ -310,46 +310,46 @@ end i32.const 0 ) - (func $loop-roundtrip (; 23 ;) (param $0 f64) (result f64) + (func $loop-roundtrip (param $0 f64) (result f64) loop $loop-in1 (result f64) local.get $0 drop local.get $0 end ) - (func $big-i64 (; 24 ;) (result i64) + (func $big-i64 (result i64) i64.const -9218868437227405313 ) - (func $i64-store32 (; 25 ;) (param $0 i32) (param $1 i64) + (func $i64-store32 (param $0 i32) (param $1 i64) local.get $0 local.get $1 i64.store32 ) - (func $return-unreachable (; 26 ;) (result i32) + (func $return-unreachable (result i32) i32.const 1 return ) - (func $unreachable-block (; 27 ;) (result i32) + (func $unreachable-block (result i32) i32.const 1 drop i32.const 2 return ) - (func $unreachable-block-toplevel (; 28 ;) (result i32) + (func $unreachable-block-toplevel (result i32) i32.const 1 drop i32.const 2 return ) - (func $unreachable-block0 (; 29 ;) (result i32) + (func $unreachable-block0 (result i32) i32.const 2 return ) - (func $unreachable-block0-toplevel (; 30 ;) (result i32) + (func $unreachable-block0-toplevel (result i32) i32.const 2 return ) - (func $unreachable-block-with-br (; 31 ;) (result i32) + (func $unreachable-block-with-br (result i32) block $block i32.const 1 drop @@ -357,7 +357,7 @@ end i32.const 1 ) - (func $unreachable-if (; 32 ;) (result i32) + (func $unreachable-if (result i32) i32.const 3 if i32.const 2 @@ -368,7 +368,7 @@ end unreachable ) - (func $unreachable-if-toplevel (; 33 ;) (result i32) + (func $unreachable-if-toplevel (result i32) i32.const 3 if i32.const 2 @@ -379,7 +379,7 @@ end unreachable ) - (func $unreachable-loop (; 34 ;) (result i32) + (func $unreachable-loop (result i32) loop $loop-in nop i32.const 1 @@ -387,14 +387,14 @@ end unreachable ) - (func $unreachable-loop0 (; 35 ;) (result i32) + (func $unreachable-loop0 (result i32) loop $loop-in i32.const 1 return end unreachable ) - (func $unreachable-loop-toplevel (; 36 ;) (result i32) + (func $unreachable-loop-toplevel (result i32) loop $loop-in nop i32.const 1 @@ -402,17 +402,17 @@ end unreachable ) - (func $unreachable-loop0-toplevel (; 37 ;) (result i32) + (func $unreachable-loop0-toplevel (result i32) loop $loop-in i32.const 1 return end unreachable ) - (func $unreachable-ifs (; 38 ;) + (func $unreachable-ifs unreachable ) - (func $unreachable-if-arm (; 39 ;) + (func $unreachable-if-arm i32.const 1 if nop @@ -420,7 +420,7 @@ unreachable end ) - (func $local-to-stack (; 40 ;) (param $x i32) (result i32) + (func $local-to-stack (param $x i32) (result i32) (local $temp i32) i32.const 1 call $local-to-stack @@ -428,7 +428,7 @@ call $local-to-stack drop ) - (func $local-to-stack-1 (; 41 ;) (param $x i32) (result i32) + (func $local-to-stack-1 (param $x i32) (result i32) (local $temp i32) i32.const 1 call $local-to-stack @@ -437,7 +437,7 @@ drop i32.eqz ) - (func $local-to-stack-1b (; 42 ;) (param $x i32) (result i32) + (func $local-to-stack-1b (param $x i32) (result i32) (local $temp i32) i32.const 1 call $local-to-stack @@ -447,7 +447,7 @@ i32.const 3 i32.add ) - (func $local-to-stack-1c-no (; 43 ;) (param $x i32) (result i32) + (func $local-to-stack-1c-no (param $x i32) (result i32) (local $temp i32) i32.const 1 call $local-to-stack @@ -459,7 +459,7 @@ local.get $temp i32.add ) - (func $local-to-stack-2-no (; 44 ;) (param $x i32) (result i32) + (func $local-to-stack-2-no (param $x i32) (result i32) (local $temp i32) i32.const 1 call $local-to-stack @@ -471,7 +471,7 @@ local.get $temp i32.add ) - (func $local-to-stack-3-no (; 45 ;) (param $x i32) (result i32) + (func $local-to-stack-3-no (param $x i32) (result i32) (local $temp i32) i32.const 1 if @@ -488,7 +488,7 @@ drop local.get $temp ) - (func $local-to-stack-multi-4 (; 46 ;) (param $x i32) (result i32) + (func $local-to-stack-multi-4 (param $x i32) (result i32) (local $temp1 i32) (local $temp2 i32) i32.const 1 @@ -503,7 +503,7 @@ call $local-to-stack-multi-4 drop ) - (func $local-to-stack-multi-5 (; 47 ;) (param $x i32) (result i32) + (func $local-to-stack-multi-5 (param $x i32) (result i32) (local $temp1 i32) (local $temp2 i32) i32.const 1 @@ -518,7 +518,7 @@ call $local-to-stack-multi-4 drop ) - (func $local-to-stack-multi-6-justone (; 48 ;) (param $x i32) (result i32) + (func $local-to-stack-multi-6-justone (param $x i32) (result i32) (local $temp1 i32) (local $temp2 i32) i32.const 1 @@ -537,7 +537,7 @@ local.get $temp2 i32.add ) - (func $local-to-stack-multi-7-justone (; 49 ;) (param $x i32) (result i32) + (func $local-to-stack-multi-7-justone (param $x i32) (result i32) (local $temp1 i32) (local $temp2 i32) i32.const 1 @@ -556,7 +556,7 @@ call $local-to-stack-multi-4 drop ) - (func $local-to-stack-overlapping-multi-8-no (; 50 ;) (param $x i32) (result i32) + (func $local-to-stack-overlapping-multi-8-no (param $x i32) (result i32) (local $temp1 i32) (local $temp2 i32) i32.const 1 @@ -570,7 +570,7 @@ local.get $temp1 i32.add ) - (func $local-to-stack-overlapping-multi-9-yes (; 51 ;) (param $x i32) (result i32) + (func $local-to-stack-overlapping-multi-9-yes (param $x i32) (result i32) (local $temp1 i32) (local $temp2 i32) i32.const 1 @@ -582,7 +582,7 @@ drop i32.add ) - (func $local-to-stack-through-control-flow (; 52 ;) + (func $local-to-stack-through-control-flow (local $temp1 i32) (local $temp2 i32) i32.const 0 @@ -602,7 +602,7 @@ drop drop ) - (func $local-to-stack-in-control-flow (; 53 ;) + (func $local-to-stack-in-control-flow (local $temp1 i32) i32.const 0 if @@ -615,7 +615,7 @@ drop end ) - (func $remove-block (; 54 ;) (param $x i32) (result i32) + (func $remove-block (param $x i32) (result i32) (local $temp i32) i32.const 0 call $remove-block @@ -647,7 +647,7 @@ (table $0 10 funcref) (elem (i32.const 0) $z $big_negative $z $z $w $w $importedDoubles $w $z $cneg) (export "big_negative" (func $big_negative)) - (func $big_negative (; 3 ;) (; has Stack IR ;) + (func $big_negative (; has Stack IR ;) (local $temp f64) (block $block0 (local.set $temp @@ -667,7 +667,7 @@ ) ) ) - (func $importedDoubles (; 4 ;) (; has Stack IR ;) (result f64) + (func $importedDoubles (; has Stack IR ;) (result f64) (local $temp f64) (block $topmost (result f64) (local.set $temp @@ -719,7 +719,7 @@ (f64.const 1.2) ) ) - (func $doubleCompares (; 5 ;) (; has Stack IR ;) (param $x f64) (param $y f64) (result f64) + (func $doubleCompares (; has Stack IR ;) (param $x f64) (param $y f64) (result f64) (local $t f64) (local $Int f64) (local $Double i32) @@ -763,14 +763,14 @@ (local.get $y) ) ) - (func $intOps (; 6 ;) (; has Stack IR ;) (result i32) + (func $intOps (; has Stack IR ;) (result i32) (local $x i32) (i32.eq (local.get $x) (i32.const 0) ) ) - (func $hexLiterals (; 7 ;) (; has Stack IR ;) + (func $hexLiterals (; has Stack IR ;) (drop (i32.add (i32.add @@ -781,7 +781,7 @@ ) ) ) - (func $conversions (; 8 ;) (; has Stack IR ;) + (func $conversions (; has Stack IR ;) (local $i i32) (local $d f64) (block $block0 @@ -805,7 +805,7 @@ ) ) ) - (func $seq (; 9 ;) (; has Stack IR ;) + (func $seq (; has Stack IR ;) (local $J f64) (local.set $J (f64.sub @@ -824,7 +824,7 @@ ) ) ) - (func $switcher (; 10 ;) (; has Stack IR ;) (param $x i32) (result i32) + (func $switcher (; has Stack IR ;) (param $x i32) (result i32) (block $topmost (result i32) (block $switch$0 (block $switch-default$3 @@ -910,18 +910,18 @@ (i32.const 0) ) ) - (func $blocker (; 11 ;) (; has Stack IR ;) + (func $blocker (; has Stack IR ;) (block $label$break$L (br $label$break$L) ) ) - (func $frem (; 12 ;) (; has Stack IR ;) (result f64) + (func $frem (; has Stack IR ;) (result f64) (call $f64-rem (f64.const 5.5) (f64.const 1.2) ) ) - (func $big_uint_div_u (; 13 ;) (; has Stack IR ;) (result i32) + (func $big_uint_div_u (; has Stack IR ;) (result i32) (local $x i32) (block $topmost (result i32) (local.set $x @@ -936,7 +936,7 @@ (local.get $x) ) ) - (func $fr (; 14 ;) (; has Stack IR ;) (param $x f32) + (func $fr (; has Stack IR ;) (param $x f32) (local $y f32) (local $z f64) (block $block0 @@ -962,10 +962,10 @@ ) ) ) - (func $negZero (; 15 ;) (; has Stack IR ;) (result f64) + (func $negZero (; has Stack IR ;) (result f64) (f64.const -0) ) - (func $abs (; 16 ;) (; has Stack IR ;) + (func $abs (; has Stack IR ;) (local $x i32) (local $y f64) (local $z f32) @@ -1001,7 +1001,7 @@ ) ) ) - (func $neg (; 17 ;) (; has Stack IR ;) + (func $neg (; has Stack IR ;) (local $x f32) (block $block0 (local.set $x @@ -1021,7 +1021,7 @@ ) ) ) - (func $cneg (; 18 ;) (; has Stack IR ;) (param $x f32) + (func $cneg (; has Stack IR ;) (param $x f32) (call_indirect (type $f32_=>_none) (local.get $x) (i32.add @@ -1033,7 +1033,7 @@ ) ) ) - (func $___syscall_ret (; 19 ;) (; has Stack IR ;) + (func $___syscall_ret (; has Stack IR ;) (local $$0 i32) (drop (i32.gt_u @@ -1045,13 +1045,13 @@ ) ) ) - (func $z (; 20 ;) (; has Stack IR ;) + (func $z (; has Stack IR ;) (nop) ) - (func $w (; 21 ;) (; has Stack IR ;) + (func $w (; has Stack IR ;) (nop) ) - (func $block_and_after (; 22 ;) (; has Stack IR ;) (result i32) + (func $block_and_after (; has Stack IR ;) (result i32) (block $waka (drop (i32.const 1) @@ -1060,7 +1060,7 @@ ) (i32.const 0) ) - (func $loop-roundtrip (; 23 ;) (; has Stack IR ;) (param $0 f64) (result f64) + (func $loop-roundtrip (; has Stack IR ;) (param $0 f64) (result f64) (loop $loop-in1 (result f64) (drop (local.get $0) @@ -1068,21 +1068,21 @@ (local.get $0) ) ) - (func $big-i64 (; 24 ;) (; has Stack IR ;) (result i64) + (func $big-i64 (; has Stack IR ;) (result i64) (i64.const -9218868437227405313) ) - (func $i64-store32 (; 25 ;) (; has Stack IR ;) (param $0 i32) (param $1 i64) + (func $i64-store32 (; has Stack IR ;) (param $0 i32) (param $1 i64) (i64.store32 (local.get $0) (local.get $1) ) ) - (func $return-unreachable (; 26 ;) (; has Stack IR ;) (result i32) + (func $return-unreachable (; has Stack IR ;) (result i32) (return (i32.const 1) ) ) - (func $unreachable-block (; 27 ;) (; has Stack IR ;) (result i32) + (func $unreachable-block (; has Stack IR ;) (result i32) (f64.abs (block $block (drop @@ -1094,7 +1094,7 @@ ) ) ) - (func $unreachable-block-toplevel (; 28 ;) (; has Stack IR ;) (result i32) + (func $unreachable-block-toplevel (; has Stack IR ;) (result i32) (block $block (drop (i32.const 1) @@ -1104,7 +1104,7 @@ ) ) ) - (func $unreachable-block0 (; 29 ;) (; has Stack IR ;) (result i32) + (func $unreachable-block0 (; has Stack IR ;) (result i32) (f64.abs (block $block (return @@ -1113,14 +1113,14 @@ ) ) ) - (func $unreachable-block0-toplevel (; 30 ;) (; has Stack IR ;) (result i32) + (func $unreachable-block0-toplevel (; has Stack IR ;) (result i32) (block $block (return (i32.const 2) ) ) ) - (func $unreachable-block-with-br (; 31 ;) (; has Stack IR ;) (result i32) + (func $unreachable-block-with-br (; has Stack IR ;) (result i32) (block $block (drop (i32.const 1) @@ -1129,7 +1129,7 @@ ) (i32.const 1) ) - (func $unreachable-if (; 32 ;) (; has Stack IR ;) (result i32) + (func $unreachable-if (; has Stack IR ;) (result i32) (f64.abs (if (i32.const 3) @@ -1142,7 +1142,7 @@ ) ) ) - (func $unreachable-if-toplevel (; 33 ;) (; has Stack IR ;) (result i32) + (func $unreachable-if-toplevel (; has Stack IR ;) (result i32) (if (i32.const 3) (return @@ -1153,7 +1153,7 @@ ) ) ) - (func $unreachable-loop (; 34 ;) (; has Stack IR ;) (result i32) + (func $unreachable-loop (; has Stack IR ;) (result i32) (f64.abs (loop $loop-in (nop) @@ -1163,7 +1163,7 @@ ) ) ) - (func $unreachable-loop0 (; 35 ;) (; has Stack IR ;) (result i32) + (func $unreachable-loop0 (; has Stack IR ;) (result i32) (f64.abs (loop $loop-in (return @@ -1172,7 +1172,7 @@ ) ) ) - (func $unreachable-loop-toplevel (; 36 ;) (; has Stack IR ;) (result i32) + (func $unreachable-loop-toplevel (; has Stack IR ;) (result i32) (loop $loop-in (nop) (return @@ -1180,14 +1180,14 @@ ) ) ) - (func $unreachable-loop0-toplevel (; 37 ;) (; has Stack IR ;) (result i32) + (func $unreachable-loop0-toplevel (; has Stack IR ;) (result i32) (loop $loop-in (return (i32.const 1) ) ) ) - (func $unreachable-ifs (; 38 ;) (; has Stack IR ;) + (func $unreachable-ifs (; has Stack IR ;) (if (unreachable) (nop) @@ -1232,7 +1232,7 @@ (unreachable) ) ) - (func $unreachable-if-arm (; 39 ;) (; has Stack IR ;) + (func $unreachable-if-arm (; has Stack IR ;) (if (i32.const 1) (block $block @@ -1246,7 +1246,7 @@ ) ) ) - (func $local-to-stack (; 40 ;) (; has Stack IR ;) (param $x i32) (result i32) + (func $local-to-stack (; has Stack IR ;) (param $x i32) (result i32) (local $temp i32) (local.set $temp (call $local-to-stack @@ -1260,7 +1260,7 @@ ) (local.get $temp) ) - (func $local-to-stack-1 (; 41 ;) (; has Stack IR ;) (param $x i32) (result i32) + (func $local-to-stack-1 (; has Stack IR ;) (param $x i32) (result i32) (local $temp i32) (local.set $temp (call $local-to-stack @@ -1276,7 +1276,7 @@ (local.get $temp) ) ) - (func $local-to-stack-1b (; 42 ;) (; has Stack IR ;) (param $x i32) (result i32) + (func $local-to-stack-1b (; has Stack IR ;) (param $x i32) (result i32) (local $temp i32) (local.set $temp (call $local-to-stack @@ -1293,7 +1293,7 @@ (i32.const 3) ) ) - (func $local-to-stack-1c-no (; 43 ;) (; has Stack IR ;) (param $x i32) (result i32) + (func $local-to-stack-1c-no (; has Stack IR ;) (param $x i32) (result i32) (local $temp i32) (local.set $temp (call $local-to-stack @@ -1310,7 +1310,7 @@ (local.get $temp) ) ) - (func $local-to-stack-2-no (; 44 ;) (; has Stack IR ;) (param $x i32) (result i32) + (func $local-to-stack-2-no (; has Stack IR ;) (param $x i32) (result i32) (local $temp i32) (local.set $temp (call $local-to-stack @@ -1327,7 +1327,7 @@ (local.get $temp) ) ) - (func $local-to-stack-3-no (; 45 ;) (; has Stack IR ;) (param $x i32) (result i32) + (func $local-to-stack-3-no (; has Stack IR ;) (param $x i32) (result i32) (local $temp i32) (if (i32.const 1) @@ -1349,7 +1349,7 @@ ) (local.get $temp) ) - (func $local-to-stack-multi-4 (; 46 ;) (; has Stack IR ;) (param $x i32) (result i32) + (func $local-to-stack-multi-4 (; has Stack IR ;) (param $x i32) (result i32) (local $temp1 i32) (local $temp2 i32) (local.set $temp1 @@ -1377,7 +1377,7 @@ ) (local.get $temp1) ) - (func $local-to-stack-multi-5 (; 47 ;) (; has Stack IR ;) (param $x i32) (result i32) + (func $local-to-stack-multi-5 (; has Stack IR ;) (param $x i32) (result i32) (local $temp1 i32) (local $temp2 i32) (local.set $temp1 @@ -1405,7 +1405,7 @@ ) (local.get $temp2) ) - (func $local-to-stack-multi-6-justone (; 48 ;) (; has Stack IR ;) (param $x i32) (result i32) + (func $local-to-stack-multi-6-justone (; has Stack IR ;) (param $x i32) (result i32) (local $temp1 i32) (local $temp2 i32) (local.set $temp1 @@ -1436,7 +1436,7 @@ (local.get $temp2) ) ) - (func $local-to-stack-multi-7-justone (; 49 ;) (; has Stack IR ;) (param $x i32) (result i32) + (func $local-to-stack-multi-7-justone (; has Stack IR ;) (param $x i32) (result i32) (local $temp1 i32) (local $temp2 i32) (local.set $temp1 @@ -1467,7 +1467,7 @@ ) (local.get $temp2) ) - (func $local-to-stack-overlapping-multi-8-no (; 50 ;) (; has Stack IR ;) (param $x i32) (result i32) + (func $local-to-stack-overlapping-multi-8-no (; has Stack IR ;) (param $x i32) (result i32) (local $temp1 i32) (local $temp2 i32) (local.set $temp1 @@ -1490,7 +1490,7 @@ (local.get $temp1) ) ) - (func $local-to-stack-overlapping-multi-9-yes (; 51 ;) (; has Stack IR ;) (param $x i32) (result i32) + (func $local-to-stack-overlapping-multi-9-yes (; has Stack IR ;) (param $x i32) (result i32) (local $temp1 i32) (local $temp2 i32) (local.set $temp1 @@ -1513,7 +1513,7 @@ (local.get $temp2) ) ) - (func $local-to-stack-through-control-flow (; 52 ;) (; has Stack IR ;) + (func $local-to-stack-through-control-flow (; has Stack IR ;) (local $temp1 i32) (local $temp2 i32) (local.set $temp2 @@ -1548,7 +1548,7 @@ (local.get $temp2) ) ) - (func $local-to-stack-in-control-flow (; 53 ;) (; has Stack IR ;) + (func $local-to-stack-in-control-flow (; has Stack IR ;) (local $temp1 i32) (if (i32.const 0) @@ -1574,7 +1574,7 @@ ) ) ) - (func $remove-block (; 54 ;) (; has Stack IR ;) (param $x i32) (result i32) + (func $remove-block (; has Stack IR ;) (param $x i32) (result i32) (local $temp i32) (i32.add (call $remove-block diff -Nru binaryen-91/test/passes/ignore_missing_func.bin.txt binaryen-99/test/passes/ignore_missing_func.bin.txt --- binaryen-91/test/passes/ignore_missing_func.bin.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/ignore_missing_func.bin.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,1082 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "memory" (memory $0 256 256)) - (data (i32.const 1024) "\nvoid used(int x) {\n x++;\n x--;\n return x;\n}\n\nvoid unused(int x) {\n x >>= 1;\n x <<= 1;\n return x;\n}\n\nint main() {\n return used(42);\n}\n\00") - (data (i32.const 1168) "\00\04\00\00") - (import "env" "__indirect_function_table" (table $timport$1 1 funcref)) - (global $global$0 (mut i32) (i32.const 5244064)) - (global $global$1 i32 (i32.const 1172)) - (export "__wasm_call_ctors" (func $__wasm_call_ctors)) - (export "main" (func $main)) - (export "__data_end" (global $global$1)) - (func $__wasm_call_ctors (; 0 ;) - ) - (func $used\28int\29 (; 1 ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - ;; code offset: 0xe - (local.set $1 - ;; code offset: 0x8 - (global.get $global$0) - ) - ;; code offset: 0x12 - (local.set $2 - ;; code offset: 0x10 - (i32.const 16) - ) - ;; code offset: 0x19 - (local.set $3 - ;; code offset: 0x18 - (i32.sub - ;; code offset: 0x14 - (local.get $1) - ;; code offset: 0x16 - (local.get $2) - ) - ) - ;; code offset: 0x1f - (i32.store offset=12 - ;; code offset: 0x1b - (local.get $3) - ;; code offset: 0x1d - (local.get $0) - ) - ;; code offset: 0x27 - (local.set $4 - ;; code offset: 0x24 - (i32.load offset=12 - ;; code offset: 0x22 - (local.get $3) - ) - ) - ;; code offset: 0x2b - (local.set $5 - ;; code offset: 0x29 - (i32.const 1) - ) - ;; code offset: 0x32 - (local.set $6 - ;; code offset: 0x31 - (i32.add - ;; code offset: 0x2d - (local.get $4) - ;; code offset: 0x2f - (local.get $5) - ) - ) - ;; code offset: 0x38 - (i32.store offset=12 - ;; code offset: 0x34 - (local.get $3) - ;; code offset: 0x36 - (local.get $6) - ) - ;; code offset: 0x40 - (local.set $7 - ;; code offset: 0x3d - (i32.load offset=12 - ;; code offset: 0x3b - (local.get $3) - ) - ) - ;; code offset: 0x44 - (local.set $8 - ;; code offset: 0x42 - (i32.const -1) - ) - ;; code offset: 0x4b - (local.set $9 - ;; code offset: 0x4a - (i32.add - ;; code offset: 0x46 - (local.get $7) - ;; code offset: 0x48 - (local.get $8) - ) - ) - ;; code offset: 0x51 - (i32.store offset=12 - ;; code offset: 0x4d - (local.get $3) - ;; code offset: 0x4f - (local.get $9) - ) - ;; code offset: 0x59 - (local.set $10 - ;; code offset: 0x56 - (i32.load offset=12 - ;; code offset: 0x54 - (local.get $3) - ) - ) - ;; code offset: 0x5d - (return - ;; code offset: 0x5b - (local.get $10) - ) - ) - (func $__original_main (; 2 ;) (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - ;; code offset: 0x69 - (local.set $0 - ;; code offset: 0x63 - (global.get $global$0) - ) - ;; code offset: 0x6d - (local.set $1 - ;; code offset: 0x6b - (i32.const 16) - ) - ;; code offset: 0x74 - (local.set $2 - ;; code offset: 0x73 - (i32.sub - ;; code offset: 0x6f - (local.get $0) - ;; code offset: 0x71 - (local.get $1) - ) - ) - ;; code offset: 0x78 - (global.set $global$0 - ;; code offset: 0x76 - (local.get $2) - ) - ;; code offset: 0x80 - (local.set $3 - ;; code offset: 0x7e - (i32.const 42) - ) - ;; code offset: 0x84 - (local.set $4 - ;; code offset: 0x82 - (i32.const 0) - ) - ;; code offset: 0x8a - (i32.store offset=12 - ;; code offset: 0x86 - (local.get $2) - ;; code offset: 0x88 - (local.get $4) - ) - ;; code offset: 0x95 - (local.set $5 - ;; code offset: 0x8f - (call $used\28int\29 - ;; code offset: 0x8d - (local.get $3) - ) - ) - ;; code offset: 0x99 - (local.set $6 - ;; code offset: 0x97 - (i32.const 0) - ) - ;; code offset: 0xa4 - (local.set $7 - ;; code offset: 0x9d - (i32.load offset=1168 - ;; code offset: 0x9b - (local.get $6) - ) - ) - ;; code offset: 0xab - (local.set $8 - ;; code offset: 0xaa - (i32.add - ;; code offset: 0xa6 - (local.get $5) - ;; code offset: 0xa8 - (local.get $7) - ) - ) - ;; code offset: 0xaf - (local.set $9 - ;; code offset: 0xad - (i32.const 16) - ) - ;; code offset: 0xb6 - (local.set $10 - ;; code offset: 0xb5 - (i32.add - ;; code offset: 0xb1 - (local.get $2) - ;; code offset: 0xb3 - (local.get $9) - ) - ) - ;; code offset: 0xba - (global.set $global$0 - ;; code offset: 0xb8 - (local.get $10) - ) - ;; code offset: 0xc2 - (return - ;; code offset: 0xc0 - (local.get $8) - ) - ) - (func $main (; 3 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - ;; code offset: 0xce - (local.set $2 - ;; code offset: 0xc8 - (call $__original_main) - ) - ;; code offset: 0xd2 - (return - ;; code offset: 0xd0 - (local.get $2) - ) - ) - ;; custom section ".debug_info", size 175 - ;; custom section ".debug_ranges", size 32 - ;; custom section ".debug_abbrev", size 117 - ;; custom section ".debug_line", size 128 - ;; custom section ".debug_str", size 235 - ;; custom section "producers", size 180 -) -DWARF debug info -================ - -Contains section .debug_info (175 bytes) -Contains section .debug_ranges (32 bytes) -Contains section .debug_abbrev (117 bytes) -Contains section .debug_line (128 bytes) -Contains section .debug_str (235 bytes) - -.debug_abbrev contents: -Abbrev table for offset: 0x00000000 -[1] DW_TAG_compile_unit DW_CHILDREN_yes - DW_AT_producer DW_FORM_strp - DW_AT_language DW_FORM_data2 - DW_AT_name DW_FORM_strp - DW_AT_stmt_list DW_FORM_sec_offset - DW_AT_comp_dir DW_FORM_strp - DW_AT_low_pc DW_FORM_addr - DW_AT_ranges DW_FORM_sec_offset - -[2] DW_TAG_variable DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_location DW_FORM_exprloc - -[3] DW_TAG_pointer_type DW_CHILDREN_no - DW_AT_type DW_FORM_ref4 - -[4] DW_TAG_const_type DW_CHILDREN_no - DW_AT_type DW_FORM_ref4 - -[5] DW_TAG_base_type DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_encoding DW_FORM_data1 - DW_AT_byte_size DW_FORM_data1 - -[6] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_linkage_name DW_FORM_strp - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - -[7] DW_TAG_formal_parameter DW_CHILDREN_no - DW_AT_location DW_FORM_exprloc - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[8] DW_TAG_subprogram DW_CHILDREN_no - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - - -.debug_info contents: -0x00000000: Compile Unit: length = 0x000000ab version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x000000af) - -0x0000000b: DW_TAG_compile_unit [1] * - DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project f39277c1d370ccbbec2e20a20375ee6fb7281ae4)") - DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000095] = "a.cpp") - DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) - DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x0000009b] = "/home/alon/Dev/emscripten") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) - DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 - [0x00000005, 0x0000005f)) - -0x00000026: DW_TAG_variable [2] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000b5] = "quine") - DW_AT_type [DW_FORM_ref4] (cu + 0x0037 => {0x00000037} "const char*") - DW_AT_external [DW_FORM_flag_present] (true) - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") - DW_AT_decl_line [DW_FORM_data1] (2) - DW_AT_location [DW_FORM_exprloc] (DW_OP_addr 0x490) - -0x00000037: DW_TAG_pointer_type [3] - DW_AT_type [DW_FORM_ref4] (cu + 0x003c => {0x0000003c} "const char") - -0x0000003c: DW_TAG_const_type [4] - DW_AT_type [DW_FORM_ref4] (cu + 0x0041 => {0x00000041} "char") - -0x00000041: DW_TAG_base_type [5] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000bb] = "char") - DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char) - DW_AT_byte_size [DW_FORM_data1] (0x01) - -0x00000048: DW_TAG_base_type [5] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c0] = "int") - DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) - DW_AT_byte_size [DW_FORM_data1] (0x04) - -0x0000004f: DW_TAG_subprogram [6] * - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000005) - DW_AT_high_pc [DW_FORM_data4] (0x0000005a) - DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x000000c4] = "_Z4usedi") - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000cd] = "used") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") - DW_AT_decl_line [DW_FORM_data1] (4) - DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x00000066: DW_TAG_formal_parameter [7] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0xc) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e9] = "x") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") - DW_AT_decl_line [DW_FORM_data1] (4) - DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") - -0x00000074: NULL - -0x00000075: DW_TAG_subprogram [6] * - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) - DW_AT_high_pc [DW_FORM_data4] (0x0000005a) - DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x000000d2] = "_Z6unusedi") - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dd] = "unused") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") - DW_AT_decl_line [DW_FORM_data1] (10) - DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x0000008c: DW_TAG_formal_parameter [7] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0xc) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e9] = "x") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") - DW_AT_decl_line [DW_FORM_data1] (10) - DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") - -0x0000009a: NULL - -0x0000009b: DW_TAG_subprogram [8] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000060) - DW_AT_high_pc [DW_FORM_data4] (0x00000064) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e4] = "main") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") - DW_AT_decl_line [DW_FORM_data1] (16) - DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x000000ae: NULL - -.debug_line contents: -debug_line[0x00000000] -Line table prologue: - total_length: 0x0000007c - version: 4 - prologue_length: 0x0000001d - min_inst_length: 1 -max_ops_per_inst: 1 - default_is_stmt: 1 - line_base: -5 - line_range: 14 - opcode_base: 13 -standard_opcode_lengths[DW_LNS_copy] = 0 -standard_opcode_lengths[DW_LNS_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_advance_line] = 1 -standard_opcode_lengths[DW_LNS_set_file] = 1 -standard_opcode_lengths[DW_LNS_set_column] = 1 -standard_opcode_lengths[DW_LNS_negate_stmt] = 0 -standard_opcode_lengths[DW_LNS_set_basic_block] = 0 -standard_opcode_lengths[DW_LNS_const_add_pc] = 0 -standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 -standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 -standard_opcode_lengths[DW_LNS_set_isa] = 1 -file_names[ 1]: - name: "a.cpp" - dir_index: 0 - mod_time: 0x00000000 - length: 0x00000000 -0x00000027: 00 DW_LNE_set_address (0x0000000000000005) -0x0000002e: 15 address += 0, line += 3 - 0x0000000000000005 4 0 1 0 0 is_stmt - -0x0000002f: 05 DW_LNS_set_column (4) -0x00000031: 0a DW_LNS_set_prologue_end -0x00000032: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000033: bb address += 12, line += 1 - 0x0000000000000022 5 4 1 0 0 is_stmt prologue_end - -0x00000034: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000035: 83 address += 8, line += 1 - 0x000000000000003b 6 4 1 0 0 is_stmt - -0x00000036: 05 DW_LNS_set_column (10) -0x00000038: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000039: 83 address += 8, line += 1 - 0x0000000000000054 7 10 1 0 0 is_stmt - -0x0000003a: 05 DW_LNS_set_column (3) -0x0000003c: 06 DW_LNS_negate_stmt -0x0000003d: 74 address += 7, line += 0 - 0x000000000000005b 7 3 1 0 0 - -0x0000003e: 02 DW_LNS_advance_pc (4) -0x00000040: 00 DW_LNE_end_sequence - 0x000000000000005f 7 3 1 0 0 end_sequence - -0x00000043: 00 DW_LNE_set_address (0x0000000000000000) -0x0000004a: 03 DW_LNS_advance_line (10) -0x0000004c: 01 DW_LNS_copy - 0x0000000000000000 10 0 1 0 0 is_stmt - - -0x0000004d: 05 DW_LNS_set_column (5) -0x0000004f: 0a DW_LNS_set_prologue_end -0x00000050: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000051: bb address += 12, line += 1 - 0x000000000000001d 11 5 1 0 0 is_stmt prologue_end - -0x00000052: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000053: 83 address += 8, line += 1 - 0x0000000000000036 12 5 1 0 0 is_stmt - -0x00000054: 05 DW_LNS_set_column (10) -0x00000056: 08 DW_LNS_const_add_pc (0x0000000000000011) -0x00000057: 83 address += 8, line += 1 - 0x000000000000004f 13 10 1 0 0 is_stmt - -0x00000058: 05 DW_LNS_set_column (3) -0x0000005a: 06 DW_LNS_negate_stmt -0x0000005b: 74 address += 7, line += 0 - 0x0000000000000056 13 3 1 0 0 - -0x0000005c: 02 DW_LNS_advance_pc (4) -0x0000005e: 00 DW_LNE_end_sequence - 0x000000000000005a 13 3 1 0 0 end_sequence - -0x00000061: 00 DW_LNE_set_address (0x0000000000000060) -0x00000068: 03 DW_LNS_advance_line (16) -0x0000006a: 01 DW_LNS_copy - 0x0000000000000060 16 0 1 0 0 is_stmt - - -0x0000006b: 05 DW_LNS_set_column (10) -0x0000006d: 0a DW_LNS_set_prologue_end -0x0000006e: 02 DW_LNS_advance_pc (45) -0x00000070: 13 address += 0, line += 1 - 0x000000000000008d 17 10 1 0 0 is_stmt prologue_end - -0x00000071: 05 DW_LNS_set_column (25) -0x00000073: 06 DW_LNS_negate_stmt -0x00000074: 9e address += 10, line += 0 - 0x0000000000000097 17 25 1 0 0 - -0x00000075: 05 DW_LNS_set_column (19) -0x00000077: e4 address += 15, line += 0 - 0x00000000000000a6 17 19 1 0 0 - -0x00000078: 05 DW_LNS_set_column (3) -0x0000007a: 74 address += 7, line += 0 - 0x00000000000000ad 17 3 1 0 0 - -0x0000007b: 02 DW_LNS_advance_pc (23) -0x0000007d: 00 DW_LNE_end_sequence - 0x00000000000000c4 17 3 1 0 0 end_sequence - - -.debug_str contents: -0x00000000: "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project f39277c1d370ccbbec2e20a20375ee6fb7281ae4)" -0x00000095: "a.cpp" -0x0000009b: "/home/alon/Dev/emscripten" -0x000000b5: "quine" -0x000000bb: "char" -0x000000c0: "int" -0x000000c4: "_Z4usedi" -0x000000cd: "used" -0x000000d2: "_Z6unusedi" -0x000000dd: "unused" -0x000000e4: "main" -0x000000e9: "x" - -.debug_ranges contents: -00000000 00000005 0000005f -00000000 -00000010 00000060 000000c4 -00000010 -DWARF debug info -================ - -Contains section .debug_info (175 bytes) -Contains section .debug_ranges (32 bytes) -Contains section .debug_abbrev (117 bytes) -Contains section .debug_line (169 bytes) -Contains section .debug_str (235 bytes) - -.debug_abbrev contents: -Abbrev table for offset: 0x00000000 -[1] DW_TAG_compile_unit DW_CHILDREN_yes - DW_AT_producer DW_FORM_strp - DW_AT_language DW_FORM_data2 - DW_AT_name DW_FORM_strp - DW_AT_stmt_list DW_FORM_sec_offset - DW_AT_comp_dir DW_FORM_strp - DW_AT_low_pc DW_FORM_addr - DW_AT_ranges DW_FORM_sec_offset - -[2] DW_TAG_variable DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_location DW_FORM_exprloc - -[3] DW_TAG_pointer_type DW_CHILDREN_no - DW_AT_type DW_FORM_ref4 - -[4] DW_TAG_const_type DW_CHILDREN_no - DW_AT_type DW_FORM_ref4 - -[5] DW_TAG_base_type DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_encoding DW_FORM_data1 - DW_AT_byte_size DW_FORM_data1 - -[6] DW_TAG_subprogram DW_CHILDREN_yes - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_linkage_name DW_FORM_strp - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - -[7] DW_TAG_formal_parameter DW_CHILDREN_no - DW_AT_location DW_FORM_exprloc - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - -[8] DW_TAG_subprogram DW_CHILDREN_no - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - - -.debug_info contents: -0x00000000: Compile Unit: length = 0x000000ab version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x000000af) - -0x0000000b: DW_TAG_compile_unit [1] * - DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project f39277c1d370ccbbec2e20a20375ee6fb7281ae4)") - DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000095] = "a.cpp") - DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) - DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x0000009b] = "/home/alon/Dev/emscripten") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) - DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 - [0x00000005, 0x0000005b)) - -0x00000026: DW_TAG_variable [2] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000b5] = "quine") - DW_AT_type [DW_FORM_ref4] (cu + 0x0037 => {0x00000037} "const char*") - DW_AT_external [DW_FORM_flag_present] (true) - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") - DW_AT_decl_line [DW_FORM_data1] (2) - DW_AT_location [DW_FORM_exprloc] (DW_OP_addr 0x490) - -0x00000037: DW_TAG_pointer_type [3] - DW_AT_type [DW_FORM_ref4] (cu + 0x003c => {0x0000003c} "const char") - -0x0000003c: DW_TAG_const_type [4] - DW_AT_type [DW_FORM_ref4] (cu + 0x0041 => {0x00000041} "char") - -0x00000041: DW_TAG_base_type [5] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000bb] = "char") - DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char) - DW_AT_byte_size [DW_FORM_data1] (0x01) - -0x00000048: DW_TAG_base_type [5] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c0] = "int") - DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) - DW_AT_byte_size [DW_FORM_data1] (0x04) - -0x0000004f: DW_TAG_subprogram [6] * - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000005) - DW_AT_high_pc [DW_FORM_data4] (0x00000056) - DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x000000c4] = "_Z4usedi") - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000cd] = "used") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") - DW_AT_decl_line [DW_FORM_data1] (4) - DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x00000066: DW_TAG_formal_parameter [7] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0xc) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e9] = "x") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") - DW_AT_decl_line [DW_FORM_data1] (4) - DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") - -0x00000074: NULL - -0x00000075: DW_TAG_subprogram [6] * - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) - DW_AT_high_pc [DW_FORM_data4] (0x00000000) - DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x000000d2] = "_Z6unusedi") - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dd] = "unused") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") - DW_AT_decl_line [DW_FORM_data1] (10) - DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x0000008c: DW_TAG_formal_parameter [7] - DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0xc) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e9] = "x") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") - DW_AT_decl_line [DW_FORM_data1] (10) - DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") - -0x0000009a: NULL - -0x0000009b: DW_TAG_subprogram [8] - DW_AT_low_pc [DW_FORM_addr] (0x000000000000005c) - DW_AT_high_pc [DW_FORM_data4] (0x00000051) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e4] = "main") - DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") - DW_AT_decl_line [DW_FORM_data1] (16) - DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x000000ae: NULL - -.debug_line contents: -debug_line[0x00000000] -Line table prologue: - total_length: 0x000000a5 - version: 4 - prologue_length: 0x0000001d - min_inst_length: 1 -max_ops_per_inst: 1 - default_is_stmt: 1 - line_base: -5 - line_range: 14 - opcode_base: 13 -standard_opcode_lengths[DW_LNS_copy] = 0 -standard_opcode_lengths[DW_LNS_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_advance_line] = 1 -standard_opcode_lengths[DW_LNS_set_file] = 1 -standard_opcode_lengths[DW_LNS_set_column] = 1 -standard_opcode_lengths[DW_LNS_negate_stmt] = 0 -standard_opcode_lengths[DW_LNS_set_basic_block] = 0 -standard_opcode_lengths[DW_LNS_const_add_pc] = 0 -standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 -standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 -standard_opcode_lengths[DW_LNS_set_isa] = 1 -file_names[ 1]: - name: "a.cpp" - dir_index: 0 - mod_time: 0x00000000 - length: 0x00000000 -0x00000027: 00 DW_LNE_set_address (0x0000000000000005) -0x0000002e: 03 DW_LNS_advance_line (4) -0x00000030: 01 DW_LNS_copy - 0x0000000000000005 4 0 1 0 0 is_stmt - - -0x00000031: 00 DW_LNE_set_address (0x000000000000001e) -0x00000038: 03 DW_LNS_advance_line (5) -0x0000003a: 05 DW_LNS_set_column (4) -0x0000003c: 0a DW_LNS_set_prologue_end -0x0000003d: 01 DW_LNS_copy - 0x000000000000001e 5 4 1 0 0 is_stmt prologue_end - - -0x0000003e: 00 DW_LNE_set_address (0x0000000000000037) -0x00000045: 03 DW_LNS_advance_line (6) -0x00000047: 01 DW_LNS_copy - 0x0000000000000037 6 4 1 0 0 is_stmt - - -0x00000048: 00 DW_LNE_set_address (0x0000000000000050) -0x0000004f: 03 DW_LNS_advance_line (7) -0x00000051: 05 DW_LNS_set_column (10) -0x00000053: 01 DW_LNS_copy - 0x0000000000000050 7 10 1 0 0 is_stmt - - -0x00000054: 00 DW_LNE_set_address (0x0000000000000057) -0x0000005b: 05 DW_LNS_set_column (3) -0x0000005d: 06 DW_LNS_negate_stmt -0x0000005e: 01 DW_LNS_copy - 0x0000000000000057 7 3 1 0 0 - - -0x0000005f: 00 DW_LNE_set_address (0x000000000000005b) -0x00000066: 00 DW_LNE_end_sequence - 0x000000000000005b 7 3 1 0 0 end_sequence - -0x00000069: 00 DW_LNE_set_address (0x000000000000005c) -0x00000070: 03 DW_LNS_advance_line (16) -0x00000072: 01 DW_LNS_copy - 0x000000000000005c 16 0 1 0 0 is_stmt - - -0x00000073: 00 DW_LNE_set_address (0x0000000000000081) -0x0000007a: 03 DW_LNS_advance_line (17) -0x0000007c: 05 DW_LNS_set_column (10) -0x0000007e: 0a DW_LNS_set_prologue_end -0x0000007f: 01 DW_LNS_copy - 0x0000000000000081 17 10 1 0 0 is_stmt prologue_end - - -0x00000080: 00 DW_LNE_set_address (0x0000000000000087) -0x00000087: 05 DW_LNS_set_column (25) -0x00000089: 06 DW_LNS_negate_stmt -0x0000008a: 01 DW_LNS_copy - 0x0000000000000087 17 25 1 0 0 - - -0x0000008b: 00 DW_LNE_set_address (0x0000000000000093) -0x00000092: 05 DW_LNS_set_column (19) -0x00000094: 01 DW_LNS_copy - 0x0000000000000093 17 19 1 0 0 - - -0x00000095: 00 DW_LNE_set_address (0x000000000000009a) -0x0000009c: 05 DW_LNS_set_column (3) -0x0000009e: 01 DW_LNS_copy - 0x000000000000009a 17 3 1 0 0 - - -0x0000009f: 00 DW_LNE_set_address (0x00000000000000ad) -0x000000a6: 00 DW_LNE_end_sequence - 0x00000000000000ad 17 3 1 0 0 end_sequence - - -.debug_str contents: -0x00000000: "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project f39277c1d370ccbbec2e20a20375ee6fb7281ae4)" -0x00000095: "a.cpp" -0x0000009b: "/home/alon/Dev/emscripten" -0x000000b5: "quine" -0x000000bb: "char" -0x000000c0: "int" -0x000000c4: "_Z4usedi" -0x000000cd: "used" -0x000000d2: "_Z6unusedi" -0x000000dd: "unused" -0x000000e4: "main" -0x000000e9: "x" - -.debug_ranges contents: -00000000 00000005 0000005b -00000000 -00000010 0000005c 000000ad -00000010 -(module - (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "memory" (memory $0 256 256)) - (data (i32.const 1024) "\nvoid used(int x) {\n x++;\n x--;\n return x;\n}\n\nvoid unused(int x) {\n x >>= 1;\n x <<= 1;\n return x;\n}\n\nint main() {\n return used(42);\n}\n\00") - (data (i32.const 1168) "\00\04\00\00") - (import "env" "__indirect_function_table" (table $timport$1 1 funcref)) - (global $global$0 (mut i32) (i32.const 5244064)) - (global $global$1 i32 (i32.const 1172)) - (export "__wasm_call_ctors" (func $__wasm_call_ctors)) - (export "main" (func $main)) - (export "__data_end" (global $global$1)) - (func $__wasm_call_ctors (; 0 ;) - ) - (func $used\28int\29 (; 1 ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - ;; code offset: 0xa - (local.set $1 - ;; code offset: 0x8 - (global.get $global$0) - ) - ;; code offset: 0xe - (local.set $2 - ;; code offset: 0xc - (i32.const 16) - ) - ;; code offset: 0x15 - (local.set $3 - ;; code offset: 0x14 - (i32.sub - ;; code offset: 0x10 - (local.get $1) - ;; code offset: 0x12 - (local.get $2) - ) - ) - ;; code offset: 0x1b - (i32.store offset=12 - ;; code offset: 0x17 - (local.get $3) - ;; code offset: 0x19 - (local.get $0) - ) - ;; code offset: 0x23 - (local.set $4 - ;; code offset: 0x20 - (i32.load offset=12 - ;; code offset: 0x1e - (local.get $3) - ) - ) - ;; code offset: 0x27 - (local.set $5 - ;; code offset: 0x25 - (i32.const 1) - ) - ;; code offset: 0x2e - (local.set $6 - ;; code offset: 0x2d - (i32.add - ;; code offset: 0x29 - (local.get $4) - ;; code offset: 0x2b - (local.get $5) - ) - ) - ;; code offset: 0x34 - (i32.store offset=12 - ;; code offset: 0x30 - (local.get $3) - ;; code offset: 0x32 - (local.get $6) - ) - ;; code offset: 0x3c - (local.set $7 - ;; code offset: 0x39 - (i32.load offset=12 - ;; code offset: 0x37 - (local.get $3) - ) - ) - ;; code offset: 0x40 - (local.set $8 - ;; code offset: 0x3e - (i32.const -1) - ) - ;; code offset: 0x47 - (local.set $9 - ;; code offset: 0x46 - (i32.add - ;; code offset: 0x42 - (local.get $7) - ;; code offset: 0x44 - (local.get $8) - ) - ) - ;; code offset: 0x4d - (i32.store offset=12 - ;; code offset: 0x49 - (local.get $3) - ;; code offset: 0x4b - (local.get $9) - ) - ;; code offset: 0x55 - (local.set $10 - ;; code offset: 0x52 - (i32.load offset=12 - ;; code offset: 0x50 - (local.get $3) - ) - ) - ;; code offset: 0x59 - (return - ;; code offset: 0x57 - (local.get $10) - ) - ) - (func $__original_main (; 2 ;) (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - ;; code offset: 0x61 - (local.set $0 - ;; code offset: 0x5f - (global.get $global$0) - ) - ;; code offset: 0x65 - (local.set $1 - ;; code offset: 0x63 - (i32.const 16) - ) - ;; code offset: 0x6c - (local.set $2 - ;; code offset: 0x6b - (i32.sub - ;; code offset: 0x67 - (local.get $0) - ;; code offset: 0x69 - (local.get $1) - ) - ) - ;; code offset: 0x70 - (global.set $global$0 - ;; code offset: 0x6e - (local.get $2) - ) - ;; code offset: 0x74 - (local.set $3 - ;; code offset: 0x72 - (i32.const 42) - ) - ;; code offset: 0x78 - (local.set $4 - ;; code offset: 0x76 - (i32.const 0) - ) - ;; code offset: 0x7e - (i32.store offset=12 - ;; code offset: 0x7a - (local.get $2) - ;; code offset: 0x7c - (local.get $4) - ) - ;; code offset: 0x85 - (local.set $5 - ;; code offset: 0x83 - (call $used\28int\29 - ;; code offset: 0x81 - (local.get $3) - ) - ) - ;; code offset: 0x89 - (local.set $6 - ;; code offset: 0x87 - (i32.const 0) - ) - ;; code offset: 0x91 - (local.set $7 - ;; code offset: 0x8d - (i32.load offset=1168 - ;; code offset: 0x8b - (local.get $6) - ) - ) - ;; code offset: 0x98 - (local.set $8 - ;; code offset: 0x97 - (i32.add - ;; code offset: 0x93 - (local.get $5) - ;; code offset: 0x95 - (local.get $7) - ) - ) - ;; code offset: 0x9c - (local.set $9 - ;; code offset: 0x9a - (i32.const 16) - ) - ;; code offset: 0xa3 - (local.set $10 - ;; code offset: 0xa2 - (i32.add - ;; code offset: 0x9e - (local.get $2) - ;; code offset: 0xa0 - (local.get $9) - ) - ) - ;; code offset: 0xa7 - (global.set $global$0 - ;; code offset: 0xa5 - (local.get $10) - ) - ;; code offset: 0xab - (return - ;; code offset: 0xa9 - (local.get $8) - ) - ) - (func $main (; 3 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - ;; code offset: 0xb3 - (local.set $2 - ;; code offset: 0xb1 - (call $__original_main) - ) - ;; code offset: 0xb7 - (return - ;; code offset: 0xb5 - (local.get $2) - ) - ) - ;; custom section ".debug_info", size 175 - ;; custom section ".debug_ranges", size 32 - ;; custom section ".debug_abbrev", size 117 - ;; custom section ".debug_line", size 169 - ;; custom section ".debug_str", size 235 - ;; custom section "producers", size 180 -) diff -Nru binaryen-91/test/passes/ignore_missing_func_dwarf.bin.txt binaryen-99/test/passes/ignore_missing_func_dwarf.bin.txt --- binaryen-91/test/passes/ignore_missing_func_dwarf.bin.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/ignore_missing_func_dwarf.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,1082 @@ +(module + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (import "env" "memory" (memory $mimport$0 256 256)) + (data (i32.const 1024) "\nvoid used(int x) {\n x++;\n x--;\n return x;\n}\n\nvoid unused(int x) {\n x >>= 1;\n x <<= 1;\n return x;\n}\n\nint main() {\n return used(42);\n}\n\00") + (data (i32.const 1168) "\00\04\00\00") + (import "env" "__indirect_function_table" (table $timport$0 1 funcref)) + (global $global$0 (mut i32) (i32.const 5244064)) + (global $global$1 i32 (i32.const 1172)) + (export "__wasm_call_ctors" (func $__wasm_call_ctors)) + (export "main" (func $main)) + (export "__data_end" (global $global$1)) + (func $__wasm_call_ctors + ) + (func $used\28int\29 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + ;; code offset: 0xe + (local.set $1 + ;; code offset: 0x8 + (global.get $global$0) + ) + ;; code offset: 0x12 + (local.set $2 + ;; code offset: 0x10 + (i32.const 16) + ) + ;; code offset: 0x19 + (local.set $3 + ;; code offset: 0x18 + (i32.sub + ;; code offset: 0x14 + (local.get $1) + ;; code offset: 0x16 + (local.get $2) + ) + ) + ;; code offset: 0x1f + (i32.store offset=12 + ;; code offset: 0x1b + (local.get $3) + ;; code offset: 0x1d + (local.get $0) + ) + ;; code offset: 0x27 + (local.set $4 + ;; code offset: 0x24 + (i32.load offset=12 + ;; code offset: 0x22 + (local.get $3) + ) + ) + ;; code offset: 0x2b + (local.set $5 + ;; code offset: 0x29 + (i32.const 1) + ) + ;; code offset: 0x32 + (local.set $6 + ;; code offset: 0x31 + (i32.add + ;; code offset: 0x2d + (local.get $4) + ;; code offset: 0x2f + (local.get $5) + ) + ) + ;; code offset: 0x38 + (i32.store offset=12 + ;; code offset: 0x34 + (local.get $3) + ;; code offset: 0x36 + (local.get $6) + ) + ;; code offset: 0x40 + (local.set $7 + ;; code offset: 0x3d + (i32.load offset=12 + ;; code offset: 0x3b + (local.get $3) + ) + ) + ;; code offset: 0x44 + (local.set $8 + ;; code offset: 0x42 + (i32.const -1) + ) + ;; code offset: 0x4b + (local.set $9 + ;; code offset: 0x4a + (i32.add + ;; code offset: 0x46 + (local.get $7) + ;; code offset: 0x48 + (local.get $8) + ) + ) + ;; code offset: 0x51 + (i32.store offset=12 + ;; code offset: 0x4d + (local.get $3) + ;; code offset: 0x4f + (local.get $9) + ) + ;; code offset: 0x59 + (local.set $10 + ;; code offset: 0x56 + (i32.load offset=12 + ;; code offset: 0x54 + (local.get $3) + ) + ) + ;; code offset: 0x5d + (return + ;; code offset: 0x5b + (local.get $10) + ) + ) + (func $__original_main (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + ;; code offset: 0x69 + (local.set $0 + ;; code offset: 0x63 + (global.get $global$0) + ) + ;; code offset: 0x6d + (local.set $1 + ;; code offset: 0x6b + (i32.const 16) + ) + ;; code offset: 0x74 + (local.set $2 + ;; code offset: 0x73 + (i32.sub + ;; code offset: 0x6f + (local.get $0) + ;; code offset: 0x71 + (local.get $1) + ) + ) + ;; code offset: 0x78 + (global.set $global$0 + ;; code offset: 0x76 + (local.get $2) + ) + ;; code offset: 0x80 + (local.set $3 + ;; code offset: 0x7e + (i32.const 42) + ) + ;; code offset: 0x84 + (local.set $4 + ;; code offset: 0x82 + (i32.const 0) + ) + ;; code offset: 0x8a + (i32.store offset=12 + ;; code offset: 0x86 + (local.get $2) + ;; code offset: 0x88 + (local.get $4) + ) + ;; code offset: 0x95 + (local.set $5 + ;; code offset: 0x8f + (call $used\28int\29 + ;; code offset: 0x8d + (local.get $3) + ) + ) + ;; code offset: 0x99 + (local.set $6 + ;; code offset: 0x97 + (i32.const 0) + ) + ;; code offset: 0xa4 + (local.set $7 + ;; code offset: 0x9d + (i32.load offset=1168 + ;; code offset: 0x9b + (local.get $6) + ) + ) + ;; code offset: 0xab + (local.set $8 + ;; code offset: 0xaa + (i32.add + ;; code offset: 0xa6 + (local.get $5) + ;; code offset: 0xa8 + (local.get $7) + ) + ) + ;; code offset: 0xaf + (local.set $9 + ;; code offset: 0xad + (i32.const 16) + ) + ;; code offset: 0xb6 + (local.set $10 + ;; code offset: 0xb5 + (i32.add + ;; code offset: 0xb1 + (local.get $2) + ;; code offset: 0xb3 + (local.get $9) + ) + ) + ;; code offset: 0xba + (global.set $global$0 + ;; code offset: 0xb8 + (local.get $10) + ) + ;; code offset: 0xc2 + (return + ;; code offset: 0xc0 + (local.get $8) + ) + ) + (func $main (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + ;; code offset: 0xce + (local.set $2 + ;; code offset: 0xc8 + (call $__original_main) + ) + ;; code offset: 0xd2 + (return + ;; code offset: 0xd0 + (local.get $2) + ) + ) + ;; custom section ".debug_info", size 175 + ;; custom section ".debug_ranges", size 32 + ;; custom section ".debug_abbrev", size 117 + ;; custom section ".debug_line", size 128 + ;; custom section ".debug_str", size 235 + ;; custom section "producers", size 180 +) +DWARF debug info +================ + +Contains section .debug_info (175 bytes) +Contains section .debug_ranges (32 bytes) +Contains section .debug_abbrev (117 bytes) +Contains section .debug_line (128 bytes) +Contains section .debug_str (235 bytes) + +.debug_abbrev contents: +Abbrev table for offset: 0x00000000 +[1] DW_TAG_compile_unit DW_CHILDREN_yes + DW_AT_producer DW_FORM_strp + DW_AT_language DW_FORM_data2 + DW_AT_name DW_FORM_strp + DW_AT_stmt_list DW_FORM_sec_offset + DW_AT_comp_dir DW_FORM_strp + DW_AT_low_pc DW_FORM_addr + DW_AT_ranges DW_FORM_sec_offset + +[2] DW_TAG_variable DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_location DW_FORM_exprloc + +[3] DW_TAG_pointer_type DW_CHILDREN_no + DW_AT_type DW_FORM_ref4 + +[4] DW_TAG_const_type DW_CHILDREN_no + DW_AT_type DW_FORM_ref4 + +[5] DW_TAG_base_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_encoding DW_FORM_data1 + DW_AT_byte_size DW_FORM_data1 + +[6] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_linkage_name DW_FORM_strp + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[7] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_location DW_FORM_exprloc + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[8] DW_TAG_subprogram DW_CHILDREN_no + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + + +.debug_info contents: +0x00000000: Compile Unit: length = 0x000000ab version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x000000af) + +0x0000000b: DW_TAG_compile_unit [1] * + DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project f39277c1d370ccbbec2e20a20375ee6fb7281ae4)") + DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000095] = "a.cpp") + DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) + DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x0000009b] = "/home/alon/Dev/emscripten") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) + DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 + [0x00000005, 0x0000005f)) + +0x00000026: DW_TAG_variable [2] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000b5] = "quine") + DW_AT_type [DW_FORM_ref4] (cu + 0x0037 => {0x00000037} "const char*") + DW_AT_external [DW_FORM_flag_present] (true) + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") + DW_AT_decl_line [DW_FORM_data1] (2) + DW_AT_location [DW_FORM_exprloc] (DW_OP_addr 0x490) + +0x00000037: DW_TAG_pointer_type [3] + DW_AT_type [DW_FORM_ref4] (cu + 0x003c => {0x0000003c} "const char") + +0x0000003c: DW_TAG_const_type [4] + DW_AT_type [DW_FORM_ref4] (cu + 0x0041 => {0x00000041} "char") + +0x00000041: DW_TAG_base_type [5] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000bb] = "char") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char) + DW_AT_byte_size [DW_FORM_data1] (0x01) + +0x00000048: DW_TAG_base_type [5] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c0] = "int") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) + DW_AT_byte_size [DW_FORM_data1] (0x04) + +0x0000004f: DW_TAG_subprogram [6] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000005) + DW_AT_high_pc [DW_FORM_data4] (0x0000005a) + DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x000000c4] = "_Z4usedi") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000cd] = "used") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") + DW_AT_decl_line [DW_FORM_data1] (4) + DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x00000066: DW_TAG_formal_parameter [7] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0xc) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e9] = "x") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") + DW_AT_decl_line [DW_FORM_data1] (4) + DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") + +0x00000074: NULL + +0x00000075: DW_TAG_subprogram [6] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) + DW_AT_high_pc [DW_FORM_data4] (0x0000005a) + DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x000000d2] = "_Z6unusedi") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dd] = "unused") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") + DW_AT_decl_line [DW_FORM_data1] (10) + DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x0000008c: DW_TAG_formal_parameter [7] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0xc) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e9] = "x") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") + DW_AT_decl_line [DW_FORM_data1] (10) + DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") + +0x0000009a: NULL + +0x0000009b: DW_TAG_subprogram [8] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000060) + DW_AT_high_pc [DW_FORM_data4] (0x00000064) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e4] = "main") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") + DW_AT_decl_line [DW_FORM_data1] (16) + DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x000000ae: NULL + +.debug_line contents: +debug_line[0x00000000] +Line table prologue: + total_length: 0x0000007c + version: 4 + prologue_length: 0x0000001d + min_inst_length: 1 +max_ops_per_inst: 1 + default_is_stmt: 1 + line_base: -5 + line_range: 14 + opcode_base: 13 +standard_opcode_lengths[DW_LNS_copy] = 0 +standard_opcode_lengths[DW_LNS_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_advance_line] = 1 +standard_opcode_lengths[DW_LNS_set_file] = 1 +standard_opcode_lengths[DW_LNS_set_column] = 1 +standard_opcode_lengths[DW_LNS_negate_stmt] = 0 +standard_opcode_lengths[DW_LNS_set_basic_block] = 0 +standard_opcode_lengths[DW_LNS_const_add_pc] = 0 +standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 +standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 +standard_opcode_lengths[DW_LNS_set_isa] = 1 +file_names[ 1]: + name: "a.cpp" + dir_index: 0 + mod_time: 0x00000000 + length: 0x00000000 +0x00000027: 00 DW_LNE_set_address (0x0000000000000005) +0x0000002e: 15 address += 0, line += 3 + 0x0000000000000005 4 0 1 0 0 is_stmt + +0x0000002f: 05 DW_LNS_set_column (4) +0x00000031: 0a DW_LNS_set_prologue_end +0x00000032: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000033: bb address += 12, line += 1 + 0x0000000000000022 5 4 1 0 0 is_stmt prologue_end + +0x00000034: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000035: 83 address += 8, line += 1 + 0x000000000000003b 6 4 1 0 0 is_stmt + +0x00000036: 05 DW_LNS_set_column (10) +0x00000038: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000039: 83 address += 8, line += 1 + 0x0000000000000054 7 10 1 0 0 is_stmt + +0x0000003a: 05 DW_LNS_set_column (3) +0x0000003c: 06 DW_LNS_negate_stmt +0x0000003d: 74 address += 7, line += 0 + 0x000000000000005b 7 3 1 0 0 + +0x0000003e: 02 DW_LNS_advance_pc (4) +0x00000040: 00 DW_LNE_end_sequence + 0x000000000000005f 7 3 1 0 0 end_sequence + +0x00000043: 00 DW_LNE_set_address (0x0000000000000000) +0x0000004a: 03 DW_LNS_advance_line (10) +0x0000004c: 01 DW_LNS_copy + 0x0000000000000000 10 0 1 0 0 is_stmt + + +0x0000004d: 05 DW_LNS_set_column (5) +0x0000004f: 0a DW_LNS_set_prologue_end +0x00000050: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000051: bb address += 12, line += 1 + 0x000000000000001d 11 5 1 0 0 is_stmt prologue_end + +0x00000052: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000053: 83 address += 8, line += 1 + 0x0000000000000036 12 5 1 0 0 is_stmt + +0x00000054: 05 DW_LNS_set_column (10) +0x00000056: 08 DW_LNS_const_add_pc (0x0000000000000011) +0x00000057: 83 address += 8, line += 1 + 0x000000000000004f 13 10 1 0 0 is_stmt + +0x00000058: 05 DW_LNS_set_column (3) +0x0000005a: 06 DW_LNS_negate_stmt +0x0000005b: 74 address += 7, line += 0 + 0x0000000000000056 13 3 1 0 0 + +0x0000005c: 02 DW_LNS_advance_pc (4) +0x0000005e: 00 DW_LNE_end_sequence + 0x000000000000005a 13 3 1 0 0 end_sequence + +0x00000061: 00 DW_LNE_set_address (0x0000000000000060) +0x00000068: 03 DW_LNS_advance_line (16) +0x0000006a: 01 DW_LNS_copy + 0x0000000000000060 16 0 1 0 0 is_stmt + + +0x0000006b: 05 DW_LNS_set_column (10) +0x0000006d: 0a DW_LNS_set_prologue_end +0x0000006e: 02 DW_LNS_advance_pc (45) +0x00000070: 13 address += 0, line += 1 + 0x000000000000008d 17 10 1 0 0 is_stmt prologue_end + +0x00000071: 05 DW_LNS_set_column (25) +0x00000073: 06 DW_LNS_negate_stmt +0x00000074: 9e address += 10, line += 0 + 0x0000000000000097 17 25 1 0 0 + +0x00000075: 05 DW_LNS_set_column (19) +0x00000077: e4 address += 15, line += 0 + 0x00000000000000a6 17 19 1 0 0 + +0x00000078: 05 DW_LNS_set_column (3) +0x0000007a: 74 address += 7, line += 0 + 0x00000000000000ad 17 3 1 0 0 + +0x0000007b: 02 DW_LNS_advance_pc (23) +0x0000007d: 00 DW_LNE_end_sequence + 0x00000000000000c4 17 3 1 0 0 end_sequence + + +.debug_str contents: +0x00000000: "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project f39277c1d370ccbbec2e20a20375ee6fb7281ae4)" +0x00000095: "a.cpp" +0x0000009b: "/home/alon/Dev/emscripten" +0x000000b5: "quine" +0x000000bb: "char" +0x000000c0: "int" +0x000000c4: "_Z4usedi" +0x000000cd: "used" +0x000000d2: "_Z6unusedi" +0x000000dd: "unused" +0x000000e4: "main" +0x000000e9: "x" + +.debug_ranges contents: +00000000 00000005 0000005f +00000000 +00000010 00000060 000000c4 +00000010 +DWARF debug info +================ + +Contains section .debug_info (175 bytes) +Contains section .debug_ranges (32 bytes) +Contains section .debug_abbrev (117 bytes) +Contains section .debug_line (169 bytes) +Contains section .debug_str (235 bytes) + +.debug_abbrev contents: +Abbrev table for offset: 0x00000000 +[1] DW_TAG_compile_unit DW_CHILDREN_yes + DW_AT_producer DW_FORM_strp + DW_AT_language DW_FORM_data2 + DW_AT_name DW_FORM_strp + DW_AT_stmt_list DW_FORM_sec_offset + DW_AT_comp_dir DW_FORM_strp + DW_AT_low_pc DW_FORM_addr + DW_AT_ranges DW_FORM_sec_offset + +[2] DW_TAG_variable DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_location DW_FORM_exprloc + +[3] DW_TAG_pointer_type DW_CHILDREN_no + DW_AT_type DW_FORM_ref4 + +[4] DW_TAG_const_type DW_CHILDREN_no + DW_AT_type DW_FORM_ref4 + +[5] DW_TAG_base_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_encoding DW_FORM_data1 + DW_AT_byte_size DW_FORM_data1 + +[6] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_linkage_name DW_FORM_strp + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[7] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_location DW_FORM_exprloc + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[8] DW_TAG_subprogram DW_CHILDREN_no + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + + +.debug_info contents: +0x00000000: Compile Unit: length = 0x000000ab version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x000000af) + +0x0000000b: DW_TAG_compile_unit [1] * + DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project f39277c1d370ccbbec2e20a20375ee6fb7281ae4)") + DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000095] = "a.cpp") + DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) + DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x0000009b] = "/home/alon/Dev/emscripten") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) + DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 + [0x00000005, 0x0000006d)) + +0x00000026: DW_TAG_variable [2] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000b5] = "quine") + DW_AT_type [DW_FORM_ref4] (cu + 0x0037 => {0x00000037} "const char*") + DW_AT_external [DW_FORM_flag_present] (true) + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") + DW_AT_decl_line [DW_FORM_data1] (2) + DW_AT_location [DW_FORM_exprloc] (DW_OP_addr 0x490) + +0x00000037: DW_TAG_pointer_type [3] + DW_AT_type [DW_FORM_ref4] (cu + 0x003c => {0x0000003c} "const char") + +0x0000003c: DW_TAG_const_type [4] + DW_AT_type [DW_FORM_ref4] (cu + 0x0041 => {0x00000041} "char") + +0x00000041: DW_TAG_base_type [5] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000bb] = "char") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char) + DW_AT_byte_size [DW_FORM_data1] (0x01) + +0x00000048: DW_TAG_base_type [5] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c0] = "int") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) + DW_AT_byte_size [DW_FORM_data1] (0x04) + +0x0000004f: DW_TAG_subprogram [6] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000005) + DW_AT_high_pc [DW_FORM_data4] (0x00000068) + DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x000000c4] = "_Z4usedi") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000cd] = "used") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") + DW_AT_decl_line [DW_FORM_data1] (4) + DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x00000066: DW_TAG_formal_parameter [7] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0xc) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e9] = "x") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") + DW_AT_decl_line [DW_FORM_data1] (4) + DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") + +0x00000074: NULL + +0x00000075: DW_TAG_subprogram [6] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) + DW_AT_high_pc [DW_FORM_data4] (0x00000000) + DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x000000d2] = "_Z6unusedi") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000dd] = "unused") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") + DW_AT_decl_line [DW_FORM_data1] (10) + DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x0000008c: DW_TAG_formal_parameter [7] + DW_AT_location [DW_FORM_exprloc] (DW_OP_plus_uconst 0xc) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e9] = "x") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") + DW_AT_decl_line [DW_FORM_data1] (10) + DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") + +0x0000009a: NULL + +0x0000009b: DW_TAG_subprogram [8] + DW_AT_low_pc [DW_FORM_addr] (0x000000000000006e) + DW_AT_high_pc [DW_FORM_data4] (0x00000065) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000e4] = "main") + DW_AT_decl_file [DW_FORM_data1] ("/home/alon/Dev/emscripten/a.cpp") + DW_AT_decl_line [DW_FORM_data1] (16) + DW_AT_type [DW_FORM_ref4] (cu + 0x0048 => {0x00000048} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x000000ae: NULL + +.debug_line contents: +debug_line[0x00000000] +Line table prologue: + total_length: 0x000000a5 + version: 4 + prologue_length: 0x0000001d + min_inst_length: 1 +max_ops_per_inst: 1 + default_is_stmt: 1 + line_base: -5 + line_range: 14 + opcode_base: 13 +standard_opcode_lengths[DW_LNS_copy] = 0 +standard_opcode_lengths[DW_LNS_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_advance_line] = 1 +standard_opcode_lengths[DW_LNS_set_file] = 1 +standard_opcode_lengths[DW_LNS_set_column] = 1 +standard_opcode_lengths[DW_LNS_negate_stmt] = 0 +standard_opcode_lengths[DW_LNS_set_basic_block] = 0 +standard_opcode_lengths[DW_LNS_const_add_pc] = 0 +standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 +standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 +standard_opcode_lengths[DW_LNS_set_isa] = 1 +file_names[ 1]: + name: "a.cpp" + dir_index: 0 + mod_time: 0x00000000 + length: 0x00000000 +0x00000027: 00 DW_LNE_set_address (0x0000000000000005) +0x0000002e: 03 DW_LNS_advance_line (4) +0x00000030: 01 DW_LNS_copy + 0x0000000000000005 4 0 1 0 0 is_stmt + + +0x00000031: 00 DW_LNE_set_address (0x0000000000000030) +0x00000038: 03 DW_LNS_advance_line (5) +0x0000003a: 05 DW_LNS_set_column (4) +0x0000003c: 0a DW_LNS_set_prologue_end +0x0000003d: 01 DW_LNS_copy + 0x0000000000000030 5 4 1 0 0 is_stmt prologue_end + + +0x0000003e: 00 DW_LNE_set_address (0x0000000000000049) +0x00000045: 03 DW_LNS_advance_line (6) +0x00000047: 01 DW_LNS_copy + 0x0000000000000049 6 4 1 0 0 is_stmt + + +0x00000048: 00 DW_LNE_set_address (0x0000000000000062) +0x0000004f: 03 DW_LNS_advance_line (7) +0x00000051: 05 DW_LNS_set_column (10) +0x00000053: 01 DW_LNS_copy + 0x0000000000000062 7 10 1 0 0 is_stmt + + +0x00000054: 00 DW_LNE_set_address (0x0000000000000069) +0x0000005b: 05 DW_LNS_set_column (3) +0x0000005d: 06 DW_LNS_negate_stmt +0x0000005e: 01 DW_LNS_copy + 0x0000000000000069 7 3 1 0 0 + + +0x0000005f: 00 DW_LNE_set_address (0x000000000000006d) +0x00000066: 00 DW_LNE_end_sequence + 0x000000000000006d 7 3 1 0 0 end_sequence + +0x00000069: 00 DW_LNE_set_address (0x000000000000006e) +0x00000070: 03 DW_LNS_advance_line (16) +0x00000072: 01 DW_LNS_copy + 0x000000000000006e 16 0 1 0 0 is_stmt + + +0x00000073: 00 DW_LNE_set_address (0x00000000000000a7) +0x0000007a: 03 DW_LNS_advance_line (17) +0x0000007c: 05 DW_LNS_set_column (10) +0x0000007e: 0a DW_LNS_set_prologue_end +0x0000007f: 01 DW_LNS_copy + 0x00000000000000a7 17 10 1 0 0 is_stmt prologue_end + + +0x00000080: 00 DW_LNE_set_address (0x00000000000000ad) +0x00000087: 05 DW_LNS_set_column (25) +0x00000089: 06 DW_LNS_negate_stmt +0x0000008a: 01 DW_LNS_copy + 0x00000000000000ad 17 25 1 0 0 + + +0x0000008b: 00 DW_LNE_set_address (0x00000000000000b9) +0x00000092: 05 DW_LNS_set_column (19) +0x00000094: 01 DW_LNS_copy + 0x00000000000000b9 17 19 1 0 0 + + +0x00000095: 00 DW_LNE_set_address (0x00000000000000c0) +0x0000009c: 05 DW_LNS_set_column (3) +0x0000009e: 01 DW_LNS_copy + 0x00000000000000c0 17 3 1 0 0 + + +0x0000009f: 00 DW_LNE_set_address (0x00000000000000d3) +0x000000a6: 00 DW_LNE_end_sequence + 0x00000000000000d3 17 3 1 0 0 end_sequence + + +.debug_str contents: +0x00000000: "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project f39277c1d370ccbbec2e20a20375ee6fb7281ae4)" +0x00000095: "a.cpp" +0x0000009b: "/home/alon/Dev/emscripten" +0x000000b5: "quine" +0x000000bb: "char" +0x000000c0: "int" +0x000000c4: "_Z4usedi" +0x000000cd: "used" +0x000000d2: "_Z6unusedi" +0x000000dd: "unused" +0x000000e4: "main" +0x000000e9: "x" + +.debug_ranges contents: +00000000 00000005 0000006d +00000000 +00000010 0000006e 000000d3 +00000010 +(module + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (import "env" "memory" (memory $mimport$0 256 256)) + (data (i32.const 1024) "\nvoid used(int x) {\n x++;\n x--;\n return x;\n}\n\nvoid unused(int x) {\n x >>= 1;\n x <<= 1;\n return x;\n}\n\nint main() {\n return used(42);\n}\n\00") + (data (i32.const 1168) "\00\04\00\00") + (import "env" "__indirect_function_table" (table $timport$0 1 funcref)) + (global $global$0 (mut i32) (i32.const 5244064)) + (global $global$1 i32 (i32.const 1172)) + (export "__wasm_call_ctors" (func $__wasm_call_ctors)) + (export "main" (func $main)) + (export "__data_end" (global $global$1)) + (func $__wasm_call_ctors + ) + (func $used\28int\29 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + ;; code offset: 0x1c + (local.set $1 + ;; code offset: 0x1a + (global.get $global$0) + ) + ;; code offset: 0x20 + (local.set $2 + ;; code offset: 0x1e + (i32.const 16) + ) + ;; code offset: 0x27 + (local.set $3 + ;; code offset: 0x26 + (i32.sub + ;; code offset: 0x22 + (local.get $1) + ;; code offset: 0x24 + (local.get $2) + ) + ) + ;; code offset: 0x2d + (i32.store offset=12 + ;; code offset: 0x29 + (local.get $3) + ;; code offset: 0x2b + (local.get $0) + ) + ;; code offset: 0x35 + (local.set $4 + ;; code offset: 0x32 + (i32.load offset=12 + ;; code offset: 0x30 + (local.get $3) + ) + ) + ;; code offset: 0x39 + (local.set $5 + ;; code offset: 0x37 + (i32.const 1) + ) + ;; code offset: 0x40 + (local.set $6 + ;; code offset: 0x3f + (i32.add + ;; code offset: 0x3b + (local.get $4) + ;; code offset: 0x3d + (local.get $5) + ) + ) + ;; code offset: 0x46 + (i32.store offset=12 + ;; code offset: 0x42 + (local.get $3) + ;; code offset: 0x44 + (local.get $6) + ) + ;; code offset: 0x4e + (local.set $7 + ;; code offset: 0x4b + (i32.load offset=12 + ;; code offset: 0x49 + (local.get $3) + ) + ) + ;; code offset: 0x52 + (local.set $8 + ;; code offset: 0x50 + (i32.const -1) + ) + ;; code offset: 0x59 + (local.set $9 + ;; code offset: 0x58 + (i32.add + ;; code offset: 0x54 + (local.get $7) + ;; code offset: 0x56 + (local.get $8) + ) + ) + ;; code offset: 0x5f + (i32.store offset=12 + ;; code offset: 0x5b + (local.get $3) + ;; code offset: 0x5d + (local.get $9) + ) + ;; code offset: 0x67 + (local.set $10 + ;; code offset: 0x64 + (i32.load offset=12 + ;; code offset: 0x62 + (local.get $3) + ) + ) + ;; code offset: 0x6b + (return + ;; code offset: 0x69 + (local.get $10) + ) + ) + (func $__original_main (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + ;; code offset: 0x87 + (local.set $0 + ;; code offset: 0x85 + (global.get $global$0) + ) + ;; code offset: 0x8b + (local.set $1 + ;; code offset: 0x89 + (i32.const 16) + ) + ;; code offset: 0x92 + (local.set $2 + ;; code offset: 0x91 + (i32.sub + ;; code offset: 0x8d + (local.get $0) + ;; code offset: 0x8f + (local.get $1) + ) + ) + ;; code offset: 0x96 + (global.set $global$0 + ;; code offset: 0x94 + (local.get $2) + ) + ;; code offset: 0x9a + (local.set $3 + ;; code offset: 0x98 + (i32.const 42) + ) + ;; code offset: 0x9e + (local.set $4 + ;; code offset: 0x9c + (i32.const 0) + ) + ;; code offset: 0xa4 + (i32.store offset=12 + ;; code offset: 0xa0 + (local.get $2) + ;; code offset: 0xa2 + (local.get $4) + ) + ;; code offset: 0xab + (local.set $5 + ;; code offset: 0xa9 + (call $used\28int\29 + ;; code offset: 0xa7 + (local.get $3) + ) + ) + ;; code offset: 0xaf + (local.set $6 + ;; code offset: 0xad + (i32.const 0) + ) + ;; code offset: 0xb7 + (local.set $7 + ;; code offset: 0xb3 + (i32.load offset=1168 + ;; code offset: 0xb1 + (local.get $6) + ) + ) + ;; code offset: 0xbe + (local.set $8 + ;; code offset: 0xbd + (i32.add + ;; code offset: 0xb9 + (local.get $5) + ;; code offset: 0xbb + (local.get $7) + ) + ) + ;; code offset: 0xc2 + (local.set $9 + ;; code offset: 0xc0 + (i32.const 16) + ) + ;; code offset: 0xc9 + (local.set $10 + ;; code offset: 0xc8 + (i32.add + ;; code offset: 0xc4 + (local.get $2) + ;; code offset: 0xc6 + (local.get $9) + ) + ) + ;; code offset: 0xcd + (global.set $global$0 + ;; code offset: 0xcb + (local.get $10) + ) + ;; code offset: 0xd1 + (return + ;; code offset: 0xcf + (local.get $8) + ) + ) + (func $main (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + ;; code offset: 0xd9 + (local.set $2 + ;; code offset: 0xd7 + (call $__original_main) + ) + ;; code offset: 0xdd + (return + ;; code offset: 0xdb + (local.get $2) + ) + ) + ;; custom section ".debug_info", size 175 + ;; custom section ".debug_ranges", size 32 + ;; custom section ".debug_abbrev", size 117 + ;; custom section ".debug_line", size 169 + ;; custom section ".debug_str", size 235 + ;; custom section "producers", size 180 +) diff -Nru binaryen-91/test/passes/ignore_missing_func_dwarf.passes binaryen-99/test/passes/ignore_missing_func_dwarf.passes --- binaryen-91/test/passes/ignore_missing_func_dwarf.passes 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/ignore_missing_func_dwarf.passes 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +print_dwarfdump_roundtrip_dwarfdump_g Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/passes/ignore_missing_func_dwarf.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/passes/ignore_missing_func_dwarf.wasm differ diff -Nru binaryen-91/test/passes/ignore_missing_func.passes binaryen-99/test/passes/ignore_missing_func.passes --- binaryen-91/test/passes/ignore_missing_func.passes 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/ignore_missing_func.passes 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -print_dwarfdump_roundtrip_dwarfdump_g Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/passes/ignore_missing_func.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/passes/ignore_missing_func.wasm differ diff -Nru binaryen-91/test/passes/inlined_to_start_dwarf.bin.txt binaryen-99/test/passes/inlined_to_start_dwarf.bin.txt --- binaryen-91/test/passes/inlined_to_start_dwarf.bin.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/inlined_to_start_dwarf.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,505 @@ +DWARF debug info +================ + +Contains section .debug_info (321 bytes) +Contains section .debug_loc (104 bytes) +Contains section .debug_ranges (32 bytes) +Contains section .debug_abbrev (206 bytes) +Contains section .debug_line (151 bytes) +Contains section .debug_str (217 bytes) + +.debug_abbrev contents: +Abbrev table for offset: 0x00000000 +[1] DW_TAG_compile_unit DW_CHILDREN_yes + DW_AT_producer DW_FORM_strp + DW_AT_language DW_FORM_data2 + DW_AT_name DW_FORM_strp + DW_AT_stmt_list DW_FORM_sec_offset + DW_AT_comp_dir DW_FORM_strp + DW_AT_low_pc DW_FORM_addr + DW_AT_ranges DW_FORM_sec_offset + +[2] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_GNU_all_call_sites DW_FORM_flag_present + DW_AT_abstract_origin DW_FORM_ref4 + +[3] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_abstract_origin DW_FORM_ref4 + +[4] DW_TAG_variable DW_CHILDREN_no + DW_AT_location DW_FORM_sec_offset + DW_AT_abstract_origin DW_FORM_ref4 + +[5] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_linkage_name DW_FORM_strp + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + DW_AT_inline DW_FORM_data1 + +[6] DW_TAG_formal_parameter DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[7] DW_TAG_variable DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[8] DW_TAG_base_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_encoding DW_FORM_data1 + DW_AT_byte_size DW_FORM_data1 + +[9] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_GNU_all_call_sites DW_FORM_flag_present + DW_AT_linkage_name DW_FORM_strp + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[10] DW_TAG_variable DW_CHILDREN_no + DW_AT_location DW_FORM_sec_offset + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + +[11] DW_TAG_inlined_subroutine DW_CHILDREN_yes + DW_AT_abstract_origin DW_FORM_ref4 + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_call_file DW_FORM_data1 + DW_AT_call_line DW_FORM_data1 + DW_AT_call_column DW_FORM_data1 + +[12] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_GNU_all_call_sites DW_FORM_flag_present + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[13] DW_TAG_GNU_call_site DW_CHILDREN_no + DW_AT_low_pc DW_FORM_addr + +[14] DW_TAG_pointer_type DW_CHILDREN_no + DW_AT_type DW_FORM_ref4 + + +.debug_info contents: +0x00000000: Compile Unit: length = 0x0000013d version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x00000141) + +0x0000000b: DW_TAG_compile_unit [1] * + DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 12.0.0 (https://github.com/llvm/llvm-project.git 132f29ce0611754e0ffb2b534c34b2ffe27b40a8)") + DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus_14) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000069] = "a.cpp") + DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) + DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x0000006f] = "/home/azakai/Dev/emscripten") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) + DW_AT_ranges [DW_FORM_sec_offset] (0x00000000 + [0x00000000, 0x00000007) + [0x00000005, 0x00000012) + [0x00000013, 0x0000001b)) + +0x00000026: DW_TAG_subprogram [2] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) + DW_AT_high_pc [DW_FORM_data4] (0x00000000) + DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x3 +0, 00 00 9f) + DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x004a => {0x0000004a} "_Z6squarei") + +0x0000003b: DW_TAG_formal_parameter [3] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x005a => {0x0000005a} "x") + +0x00000040: DW_TAG_variable [4] + DW_AT_location [DW_FORM_sec_offset] (0x00000000: + [0xffffffff, 0x00000006): + [0x00000001, 0x00000001): DW_OP_WASM_location 0x2 +0, DW_OP_stack_value) + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x0065 => {0x00000065} "result") + +0x00000049: NULL + +0x0000004a: DW_TAG_subprogram [5] * + DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x0000008b] = "_Z6squarei") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000096] = "square") + DW_AT_decl_file [DW_FORM_data1] ("/home/azakai/Dev/emscripten/a.cpp") + DW_AT_decl_line [DW_FORM_data1] (1) + DW_AT_type [DW_FORM_ref4] (cu + 0x0071 => {0x00000071} "int") + DW_AT_external [DW_FORM_flag_present] (true) + DW_AT_inline [DW_FORM_data1] (DW_INL_inlined) + +0x0000005a: DW_TAG_formal_parameter [6] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000a1] = "x") + DW_AT_decl_file [DW_FORM_data1] ("/home/azakai/Dev/emscripten/a.cpp") + DW_AT_decl_line [DW_FORM_data1] (1) + DW_AT_type [DW_FORM_ref4] (cu + 0x0071 => {0x00000071} "int") + +0x00000065: DW_TAG_variable [7] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000a3] = "result") + DW_AT_decl_file [DW_FORM_data1] ("/home/azakai/Dev/emscripten/a.cpp") + DW_AT_decl_line [DW_FORM_data1] (2) + DW_AT_type [DW_FORM_ref4] (cu + 0x0071 => {0x00000071} "int") + +0x00000070: NULL + +0x00000071: DW_TAG_base_type [8] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000009d] = "int") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) + DW_AT_byte_size [DW_FORM_data1] (0x04) + +0x00000078: DW_TAG_subprogram [9] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000005) + DW_AT_high_pc [DW_FORM_data4] (0x0000000d) + DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x3 +0, 00 00 9f) + DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) + DW_AT_linkage_name [DW_FORM_strp] ( .debug_str[0x000000aa] = "_Z7dsquareii") + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000b7] = "dsquare") + DW_AT_decl_file [DW_FORM_data1] ("/home/azakai/Dev/emscripten/a.cpp") + DW_AT_decl_line [DW_FORM_data1] (6) + DW_AT_type [DW_FORM_ref4] (cu + 0x0071 => {0x00000071} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x00000097: DW_TAG_formal_parameter [6] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000a1] = "x") + DW_AT_decl_file [DW_FORM_data1] ("/home/azakai/Dev/emscripten/a.cpp") + DW_AT_decl_line [DW_FORM_data1] (6) + DW_AT_type [DW_FORM_ref4] (cu + 0x0071 => {0x00000071} "int") + +0x000000a2: DW_TAG_formal_parameter [6] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c4] = "y") + DW_AT_decl_file [DW_FORM_data1] ("/home/azakai/Dev/emscripten/a.cpp") + DW_AT_decl_line [DW_FORM_data1] (6) + DW_AT_type [DW_FORM_ref4] (cu + 0x0071 => {0x00000071} "int") + +0x000000ad: DW_TAG_variable [10] + DW_AT_location [DW_FORM_sec_offset] (0x0000001e: + [0xffffffff, 0x00000010): + [0x00000000, 0x00000001): DW_OP_WASM_location 0x2 +1, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_WASM_location 0x2 +0, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c6] = "dsq") + DW_AT_decl_file [DW_FORM_data1] ("/home/azakai/Dev/emscripten/a.cpp") + DW_AT_decl_line [DW_FORM_data1] (7) + DW_AT_type [DW_FORM_ref4] (cu + 0x0071 => {0x00000071} "int") + +0x000000bc: DW_TAG_inlined_subroutine [11] * + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x004a => {0x0000004a} "_Z6squarei") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000005) + DW_AT_high_pc [DW_FORM_data4] (0x00000006) + DW_AT_call_file [DW_FORM_data1] ("/home/azakai/Dev/emscripten/a.cpp") + DW_AT_call_line [DW_FORM_data1] (8) + DW_AT_call_column [DW_FORM_data1] (0x0a) + +0x000000cc: DW_TAG_formal_parameter [3] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x005a => {0x0000005a} "x") + +0x000000d1: NULL + +0x000000d2: DW_TAG_inlined_subroutine [11] * + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x004a => {0x0000004a} "_Z6squarei") + DW_AT_low_pc [DW_FORM_addr] (0x000000000000000b) + DW_AT_high_pc [DW_FORM_data4] (0x00000005) + DW_AT_call_file [DW_FORM_data1] ("/home/azakai/Dev/emscripten/a.cpp") + DW_AT_call_line [DW_FORM_data1] (7) + DW_AT_call_column [DW_FORM_data1] (0x0d) + +0x000000e2: DW_TAG_formal_parameter [3] + DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x005a => {0x0000005a} "x") + +0x000000e7: NULL + +0x000000e8: NULL + +0x000000e9: DW_TAG_subprogram [12] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000013) + DW_AT_high_pc [DW_FORM_data4] (0x00000008) + DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x3 +0, 00 00 9f) + DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000bf] = "main") + DW_AT_decl_file [DW_FORM_data1] ("/home/azakai/Dev/emscripten/a.cpp") + DW_AT_decl_line [DW_FORM_data1] (12) + DW_AT_type [DW_FORM_ref4] (cu + 0x0071 => {0x00000071} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x00000104: DW_TAG_formal_parameter [6] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ca] = "argc") + DW_AT_decl_file [DW_FORM_data1] ("/home/azakai/Dev/emscripten/a.cpp") + DW_AT_decl_line [DW_FORM_data1] (12) + DW_AT_type [DW_FORM_ref4] (cu + 0x0071 => {0x00000071} "int") + +0x0000010f: DW_TAG_formal_parameter [6] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000cf] = "argv") + DW_AT_decl_file [DW_FORM_data1] ("/home/azakai/Dev/emscripten/a.cpp") + DW_AT_decl_line [DW_FORM_data1] (12) + DW_AT_type [DW_FORM_ref4] (cu + 0x012f => {0x0000012f} "char**") + +0x0000011a: DW_TAG_variable [10] + DW_AT_location [DW_FORM_sec_offset] (0x0000004a: + [0xffffffff, 0x00000000): + [0x00000001, 0x00000001): DW_OP_WASM_location 0x2 +0, DW_OP_stack_value) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000a3] = "result") + DW_AT_decl_file [DW_FORM_data1] ("/home/azakai/Dev/emscripten/a.cpp") + DW_AT_decl_line [DW_FORM_data1] (13) + DW_AT_type [DW_FORM_ref4] (cu + 0x0071 => {0x00000071} "int") + +0x00000129: DW_TAG_GNU_call_site [13] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) + +0x0000012e: NULL + +0x0000012f: DW_TAG_pointer_type [14] + DW_AT_type [DW_FORM_ref4] (cu + 0x0134 => {0x00000134} "char*") + +0x00000134: DW_TAG_pointer_type [14] + DW_AT_type [DW_FORM_ref4] (cu + 0x0139 => {0x00000139} "char") + +0x00000139: DW_TAG_base_type [8] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000d4] = "char") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed_char) + DW_AT_byte_size [DW_FORM_data1] (0x01) + +0x00000140: NULL + +.debug_loc contents: +0x00000000: + [0xffffffff, 0x00000006): + [0x00000001, 0x00000001): DW_OP_WASM_location 0x2 +0, DW_OP_stack_value + +0x0000001e: + [0xffffffff, 0x00000010): + [0x00000000, 0x00000001): DW_OP_WASM_location 0x2 +1, DW_OP_stack_value + [0x00000001, 0x00000001): DW_OP_WASM_location 0x2 +0, DW_OP_stack_value + +0x0000004a: + [0xffffffff, 0x00000000): + [0x00000001, 0x00000001): DW_OP_WASM_location 0x2 +0, DW_OP_stack_value + +.debug_line contents: +debug_line[0x00000000] +Line table prologue: + total_length: 0x00000093 + version: 4 + prologue_length: 0x0000001d + min_inst_length: 1 +max_ops_per_inst: 1 + default_is_stmt: 1 + line_base: -5 + line_range: 14 + opcode_base: 13 +standard_opcode_lengths[DW_LNS_copy] = 0 +standard_opcode_lengths[DW_LNS_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_advance_line] = 1 +standard_opcode_lengths[DW_LNS_set_file] = 1 +standard_opcode_lengths[DW_LNS_set_column] = 1 +standard_opcode_lengths[DW_LNS_negate_stmt] = 0 +standard_opcode_lengths[DW_LNS_set_basic_block] = 0 +standard_opcode_lengths[DW_LNS_const_add_pc] = 0 +standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 +standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 +standard_opcode_lengths[DW_LNS_set_isa] = 1 +file_names[ 1]: + name: "a.cpp" + dir_index: 0 + mod_time: 0x00000000 + length: 0x00000000 +0x00000027: 00 DW_LNE_set_address (0x0000000000000005) +0x0000002e: 03 DW_LNS_advance_line (6) +0x00000030: 01 DW_LNS_copy + 0x0000000000000005 6 0 1 0 0 is_stmt + + +0x00000031: 00 DW_LNE_set_address (0x0000000000000006) +0x00000038: 03 DW_LNS_advance_line (2) +0x0000003a: 05 DW_LNS_set_column (18) +0x0000003c: 0a DW_LNS_set_prologue_end +0x0000003d: 01 DW_LNS_copy + 0x0000000000000006 2 18 1 0 0 is_stmt prologue_end + + +0x0000003e: 00 DW_LNE_set_address (0x000000000000000b) +0x00000045: 06 DW_LNS_negate_stmt +0x00000046: 01 DW_LNS_copy + 0x000000000000000b 2 18 1 0 0 + + +0x00000047: 00 DW_LNE_set_address (0x0000000000000010) +0x0000004e: 03 DW_LNS_advance_line (8) +0x00000050: 05 DW_LNS_set_column (7) +0x00000052: 06 DW_LNS_negate_stmt +0x00000053: 01 DW_LNS_copy + 0x0000000000000010 8 7 1 0 0 is_stmt + + +0x00000054: 00 DW_LNE_set_address (0x0000000000000011) +0x0000005b: 03 DW_LNS_advance_line (9) +0x0000005d: 05 DW_LNS_set_column (3) +0x0000005f: 01 DW_LNS_copy + 0x0000000000000011 9 3 1 0 0 is_stmt + + +0x00000060: 00 DW_LNE_set_address (0x0000000000000012) +0x00000067: 00 DW_LNE_end_sequence + 0x0000000000000012 9 3 1 0 0 is_stmt end_sequence + +0x0000006a: 00 DW_LNE_set_address (0x0000000000000013) +0x00000071: 03 DW_LNS_advance_line (12) +0x00000073: 01 DW_LNS_copy + 0x0000000000000013 12 0 1 0 0 is_stmt + + +0x00000074: 00 DW_LNE_set_address (0x0000000000000018) +0x0000007b: 03 DW_LNS_advance_line (13) +0x0000007d: 05 DW_LNS_set_column (16) +0x0000007f: 0a DW_LNS_set_prologue_end +0x00000080: 01 DW_LNS_copy + 0x0000000000000018 13 16 1 0 0 is_stmt prologue_end + + +0x00000081: 00 DW_LNE_set_address (0x000000000000001a) +0x00000088: 03 DW_LNS_advance_line (14) +0x0000008a: 05 DW_LNS_set_column (3) +0x0000008c: 01 DW_LNS_copy + 0x000000000000001a 14 3 1 0 0 is_stmt + + +0x0000008d: 00 DW_LNE_set_address (0x000000000000001b) +0x00000094: 00 DW_LNE_end_sequence + 0x000000000000001b 14 3 1 0 0 is_stmt end_sequence + + +.debug_str contents: +0x00000000: "clang version 12.0.0 (https://github.com/llvm/llvm-project.git 132f29ce0611754e0ffb2b534c34b2ffe27b40a8)" +0x00000069: "a.cpp" +0x0000006f: "/home/azakai/Dev/emscripten" +0x0000008b: "_Z6squarei" +0x00000096: "square" +0x0000009d: "int" +0x000000a1: "x" +0x000000a3: "result" +0x000000aa: "_Z7dsquareii" +0x000000b7: "dsquare" +0x000000bf: "main" +0x000000c4: "y" +0x000000c6: "dsq" +0x000000ca: "argc" +0x000000cf: "argv" +0x000000d4: "char" + +.debug_ranges contents: +00000000 00000000 00000007 +00000000 00000005 00000012 +00000000 00000013 0000001b +00000000 +(module + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "env" "memory" (memory $mimport$0 256 256)) + (data (i32.const 1024) "\00\00\00\00") + (table $0 1 1 funcref) + (global $global$0 (mut i32) (i32.const 5243920)) + (global $global$1 i32 (i32.const 1028)) + (export "__indirect_function_table" (table $0)) + (export "__wasm_call_ctors" (func $__wasm_call_ctors)) + (export "main" (func $main)) + (export "__errno_location" (func $__errno_location)) + (export "stackSave" (func $stackSave)) + (export "stackRestore" (func $stackRestore)) + (export "stackAlloc" (func $stackAlloc)) + (export "__data_end" (global $global$1)) + (func $__wasm_call_ctors + ) + (func $dsquare\28int\2c\20int\29 (param $0 i32) (param $1 i32) (result i32) + ;; code offset: 0x10 + (i32.add + ;; code offset: 0xa + (i32.mul + ;; code offset: 0x6 + (local.get $1) + ;; code offset: 0x8 + (local.get $1) + ) + ;; code offset: 0xf + (i32.mul + ;; code offset: 0xb + (local.get $0) + ;; code offset: 0xd + (local.get $0) + ) + ) + ) + (func $main (param $0 i32) (param $1 i32) (result i32) + ;; code offset: 0x18 + (call $dsquare\28int\2c\20int\29 + ;; code offset: 0x14 + (i32.const 6) + ;; code offset: 0x16 + (i32.const 8) + ) + ) + (func $stackSave (result i32) + ;; code offset: 0x1d + (global.get $global$0) + ) + (func $stackRestore (param $0 i32) + ;; code offset: 0x24 + (global.set $global$0 + ;; code offset: 0x22 + (local.get $0) + ) + ) + (func $stackAlloc (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + ;; code offset: 0x37 + (global.set $global$0 + ;; code offset: 0x35 + (local.tee $1 + ;; code offset: 0x34 + (i32.and + ;; code offset: 0x31 + (i32.sub + ;; code offset: 0x2d + (global.get $global$0) + ;; code offset: 0x2f + (local.get $0) + ) + ;; code offset: 0x32 + (i32.const -16) + ) + ) + ) + ;; code offset: 0x39 + (local.get $1) + ) + (func $__errno_location (result i32) + ;; code offset: 0x3e + (i32.const 1024) + ) + ;; custom section ".debug_info", size 321 + ;; custom section ".debug_loc", size 104 + ;; custom section ".debug_ranges", size 32 + ;; custom section ".debug_abbrev", size 206 + ;; custom section ".debug_line", size 151 + ;; custom section ".debug_str", size 217 +) diff -Nru binaryen-91/test/passes/inlined_to_start_dwarf.passes binaryen-99/test/passes/inlined_to_start_dwarf.passes --- binaryen-91/test/passes/inlined_to_start_dwarf.passes 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/inlined_to_start_dwarf.passes 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +g_roundtrip_dwarfdump Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/passes/inlined_to_start_dwarf.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/passes/inlined_to_start_dwarf.wasm differ diff -Nru binaryen-91/test/passes/inline-main.txt binaryen-99/test/passes/inline-main.txt --- binaryen-91/test/passes/inline-main.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/inline-main.txt 2021-01-07 20:01:06.000000000 +0000 @@ -2,10 +2,10 @@ (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (export "main" (func $main)) - (func $__original_main (; 0 ;) (result i32) + (func $__original_main (result i32) (i32.const 0) ) - (func $main (; 1 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (block $__inlined_func$__original_main (result i32) (i32.const 0) ) @@ -15,17 +15,17 @@ (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (export "main" (func $main)) - (func $__original_main (; 0 ;) (result i32) + (func $__original_main (result i32) (i32.const 0) ) - (func $main (; 1 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (i32.const 0) ) ) (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (export "main" (func $main)) - (func $main (; 0 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (i32.const 0) ) ) @@ -33,10 +33,10 @@ (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (export "main" (func $main)) - (func $__original_main (; 0 ;) (result i32) + (func $__original_main (result i32) (i32.const 0) ) - (func $main (; 1 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (drop (call $__original_main) ) @@ -45,7 +45,7 @@ ) (module (type $none_=>_i32 (func (result i32))) - (func $__original_main (; 0 ;) (result i32) + (func $__original_main (result i32) (i32.const 0) ) ) @@ -54,7 +54,7 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "main" (func $main (param i32 i32) (result i32))) (export "main" (func $main)) - (func $__original_main (; 1 ;) (result i32) + (func $__original_main (result i32) (i32.const 0) ) ) @@ -63,7 +63,7 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (import "env" "original_main" (func $__original_main (result i32))) (export "main" (func $main)) - (func $main (; 1 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (call $__original_main) ) ) diff -Nru binaryen-91/test/passes/inlining_all-features.txt binaryen-99/test/passes/inlining_all-features.txt --- binaryen-91/test/passes/inlining_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/inlining_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -4,10 +4,10 @@ (type $none_=>_funcref (func (result funcref))) (event $e (attr 0) (param i32)) (export "ref_func_test" (func $ref_func_test)) - (func $foo (; 0 ;) + (func $foo (nop) ) - (func $ref_func_test (; 1 ;) (result funcref) + (func $ref_func_test (result funcref) (block (block $__inlined_func$foo (nop) @@ -15,7 +15,7 @@ ) (ref.func $foo) ) - (func $br_on_exn_name_uniquify_test (; 2 ;) + (func $br_on_exn_name_uniquify_test (local $exn exnref) (local $1 exnref) (drop @@ -23,7 +23,7 @@ (block (block $__inlined_func$func_inner (local.set $1 - (ref.null) + (ref.null exn) ) (drop (block $l0 (result i32) @@ -47,3 +47,42 @@ ) ) ) +(module + (type $none_=>_i32 (func (result i32))) + (global $global$0 (mut funcref) (ref.func $0)) + (func $0 (result i32) + (i32.const 1337) + ) + (func $1 (result i32) + (block $__inlined_func$0 (result i32) + (i32.const 1337) + ) + ) +) +(module + (type $none_=>_none (func)) + (start $0) + (func $0 + (nop) + ) + (func $1 + (block $__inlined_func$0 + (nop) + ) + ) +) +(module + (type $none_=>_none (func)) + (export "func_36_invoker" (func $1)) + (func $1 + (block $__inlined_func$0 + (block + (call_ref + (ref.null $none_=>_none) + ) + (br $__inlined_func$0) + ) + (br $__inlined_func$0) + ) + ) +) diff -Nru binaryen-91/test/passes/inlining_all-features.wast binaryen-99/test/passes/inlining_all-features.wast --- binaryen-91/test/passes/inlining_all-features.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/inlining_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -36,3 +36,38 @@ ) ) ) +(module + ;; a function reference in a global's init should be noticed, and prevent us + ;; from removing an inlined function + (global $global$0 (mut funcref) (ref.func $0)) + (func $0 (result i32) + (i32.const 1337) + ) + (func $1 (result i32) + (call $0) + ) +) +(module + ;; a function reference in the start should be noticed, and prevent us + ;; from removing an inlined function + (start $0) + (func $0 + (nop) + ) + (func $1 + (call $0) + ) +) +;; inline a return_call_ref +(module + (type $none_=>_none (func)) + (export "func_36_invoker" (func $1)) + (func $0 + (return_call_ref + (ref.null $none_=>_none) + ) + ) + (func $1 + (call $0) + ) +) diff -Nru binaryen-91/test/passes/inlining_enable-tail-call.txt binaryen-99/test/passes/inlining_enable-tail-call.txt --- binaryen-91/test/passes/inlining_enable-tail-call.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/inlining_enable-tail-call.txt 2021-01-07 20:01:06.000000000 +0000 @@ -4,7 +4,7 @@ (elem (i32.const 0) $tabled) (export "user" (func $user)) (export "exported" (func $exported)) - (func $user (; 0 ;) + (func $user (local $x i32) (local $y f64) (local $2 f32) @@ -134,16 +134,16 @@ ) ) ) - (func $exported (; 1 ;) + (func $exported (nop) ) - (func $recursive (; 2 ;) + (func $recursive (call $recursive) ) - (func $tabled (; 3 ;) + (func $tabled (nop) ) - (func $cycle1 (; 4 ;) + (func $cycle1 (block $__inlined_func$cycle2 (block (call $cycle1) @@ -154,10 +154,10 @@ (module (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (func $child (; 0 ;) (param $0 i32) (result i32) + (func $child (param $0 i32) (result i32) (i32.const 1234) ) - (func $parent (; 1 ;) (result i32) + (func $parent (result i32) (call $child (unreachable) ) @@ -169,7 +169,7 @@ (memory $0 1 1) (global $hangLimit (mut i32) (i32.const 25)) (export "hangLimitInitializer" (func $hangLimitInitializer)) - (func $func_4 (; 0 ;) (param $0 f32) (param $1 i32) (result i32) + (func $func_4 (param $0 f32) (param $1 i32) (result i32) (local $2 i64) (local $3 f64) (local $4 f32) @@ -222,7 +222,7 @@ ) ) ) - (func $hangLimitInitializer (; 1 ;) + (func $hangLimitInitializer (global.set $hangLimit (i32.const 25) ) @@ -232,7 +232,7 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (table $0 10 funcref) - (func $0 (; 0 ;) + (func $0 (block $__inlined_func$1 (call_indirect (type $i32_=>_none) (if (result i32) @@ -247,7 +247,7 @@ ) (module (type $none_=>_none (func)) - (func $1 (; 0 ;) + (func $1 (block $__inlined_func$0 (block $label$1 (br_table $label$1 $label$1 @@ -259,7 +259,7 @@ ) (module (type $none_=>_i32 (func (result i32))) - (func $0 (; 0 ;) (result i32) + (func $0 (result i32) (return (block $__inlined_func$1 (result i32) (i32.const 42) @@ -269,7 +269,7 @@ ) (module (type $none_=>_none (func)) - (func $0 (; 0 ;) + (func $0 (local $0 i32) (block (block $__inlined_func$1 @@ -286,7 +286,7 @@ ) (module (type $none_=>_i32 (func (result i32))) - (func $0 (; 0 ;) (result i32) + (func $0 (result i32) (local $0 i32) (return (block $__inlined_func$1 (result i32) @@ -300,7 +300,7 @@ ) (module (type $none_=>_none (func)) - (func $0 (; 0 ;) + (func $0 (drop (block (result i32) (block $__inlined_func$1 (result i32) @@ -320,7 +320,7 @@ ) (module (type $none_=>_none (func)) - (func $0 (; 0 ;) + (func $0 (local $0 i32) (block $__inlined_func$1 (block @@ -346,7 +346,7 @@ (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) (table $0 10 funcref) - (func $0 (; 0 ;) + (func $0 (drop (block (result i32) (block $__inlined_func$1 (result i32) @@ -365,7 +365,7 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (table $0 10 funcref) - (func $0 (; 0 ;) + (func $0 (block $__inlined_func$1 (block (call_indirect (type $i32_=>_none) @@ -383,7 +383,7 @@ (memory $0 1 1) (global $global$0 (mut i32) (i32.const 10)) (export "func_102_invoker" (func $19)) - (func $19 (; 0 ;) + (func $19 (block (block (block $__inlined_func$13 diff -Nru binaryen-91/test/passes/inlining_optimize-level=3.txt binaryen-99/test/passes/inlining_optimize-level=3.txt --- binaryen-91/test/passes/inlining_optimize-level=3.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/inlining_optimize-level=3.txt 2021-01-07 20:01:06.000000000 +0000 @@ -5,10 +5,10 @@ (elem (i32.const 0) $no-loops-but-one-use-but-tabled) (export "yes" (func $yes)) (export "no-loops-but-one-use-but-exported" (func $no-loops-but-one-use-but-exported)) - (func $yes (; 0 ;) (result i32) + (func $yes (result i32) (i32.const 1) ) - (func $no-tooBig (; 1 ;) (result i32) + (func $no-tooBig (result i32) (nop) (nop) (nop) @@ -47,17 +47,17 @@ (nop) (i32.const 1) ) - (func $no-loops-but-one-use-but-exported (; 2 ;) (result i32) + (func $no-loops-but-one-use-but-exported (result i32) (loop $loop-in (result i32) (i32.const 1) ) ) - (func $no-loops-but-one-use-but-tabled (; 3 ;) (result i32) + (func $no-loops-but-one-use-but-tabled (result i32) (loop $loop-in (result i32) (i32.const 1) ) ) - (func $intoHere (; 4 ;) + (func $intoHere (drop (block (result i32) (block $__inlined_func$yes (result i32) diff -Nru binaryen-91/test/passes/inlining-optimizing_enable-threads.txt binaryen-99/test/passes/inlining-optimizing_enable-threads.txt --- binaryen-91/test/passes/inlining-optimizing_enable-threads.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/inlining-optimizing_enable-threads.txt 2021-01-07 20:01:06.000000000 +0000 @@ -5,44 +5,44 @@ (export "user" (func $user)) (export "exported" (func $exported)) (export "exported_small" (func $exported_small)) - (func $user (; 0 ;) + (func $user (call $exported) (call $tabled) (call $multi) (call $multi) ) - (func $exported (; 1 ;) + (func $exported (nop) (nop) ) - (func $exported_small (; 2 ;) + (func $exported_small (nop) ) - (func $recursive (; 3 ;) + (func $recursive (call $recursive) ) - (func $tabled (; 4 ;) + (func $tabled (nop) (nop) ) - (func $cycle1 (; 5 ;) + (func $cycle1 (call $cycle1) ) - (func $multi (; 6 ;) + (func $multi (nop) (nop) ) ) (module (type $none_=>_i32 (func (result i32))) - (func $main (; 0 ;) (result i32) + (func $main (result i32) (unreachable) ) ) (module (type $none_=>_i64 (func (result i64))) (memory $0 (shared 1 1)) - (func $1 (; 0 ;) (result i64) + (func $1 (result i64) (i32.atomic.store16 (i32.const 0) (i32.const 0) @@ -52,21 +52,21 @@ ) (module (type $none_=>_none (func)) - (func $main (; 0 ;) + (func $main (call $one) (call $one) ) - (func $one (; 1 ;) + (func $one (call $one) ) ) (module (type $none_=>_none (func)) - (func $main (; 0 ;) + (func $main (call $two) (call $two) ) - (func $two (; 1 ;) + (func $two (call $two) ) ) @@ -75,7 +75,7 @@ (memory $0 17) (table $0 89 89 funcref) (start $1) - (func $1 (; 0 ;) + (func $1 (i32.store (i32.const 4) (i32.const 0) diff -Nru binaryen-91/test/passes/inlining-optimizing_optimize-level=3.txt binaryen-99/test/passes/inlining-optimizing_optimize-level=3.txt --- binaryen-91/test/passes/inlining-optimizing_optimize-level=3.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/inlining-optimizing_optimize-level=3.txt 2021-01-07 20:01:06.000000000 +0000 @@ -13,7 +13,7 @@ (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) (import "env" "memory" (memory $0 256 256)) (data (i32.const 1024) "emcc_hello_world.asm.js") - (import "env" "table" (table $0 18 18 funcref)) + (import "env" "table" (table $timport$0 18 18 funcref)) (elem (global.get $tableBase) $b0 $___stdio_close $b1 $b1 $___stdout_write $___stdio_seek $___stdio_write $b1 $b1 $b1 $b2 $b2 $b2 $b2 $b2 $_cleanup $b2 $b2) (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) @@ -67,7 +67,7 @@ (export "dynCall_iiii" (func $dynCall_iiii)) (export "dynCall_vi" (func $dynCall_vi)) (export "___udivmoddi4" (func $___udivmoddi4)) - (func $stackAlloc (; 18 ;) (param $0 i32) (result i32) + (func $stackAlloc (param $0 i32) (result i32) (local $1 i32) (local.set $1 (global.get $STACKTOP) @@ -96,15 +96,15 @@ ) (local.get $1) ) - (func $stackSave (; 19 ;) (result i32) + (func $stackSave (result i32) (global.get $STACKTOP) ) - (func $stackRestore (; 20 ;) (param $0 i32) + (func $stackRestore (param $0 i32) (global.set $STACKTOP (local.get $0) ) ) - (func $establishStackSpace (; 21 ;) (param $0 i32) (param $1 i32) + (func $establishStackSpace (param $0 i32) (param $1 i32) (global.set $STACKTOP (local.get $0) ) @@ -112,7 +112,7 @@ (local.get $1) ) ) - (func $setThrew (; 22 ;) (param $0 i32) (param $1 i32) + (func $setThrew (param $0 i32) (param $1 i32) (if (i32.eqz (global.get $__THREW__) @@ -127,15 +127,15 @@ ) ) ) - (func $setTempRet0 (; 23 ;) (param $0 i32) + (func $setTempRet0 (param $0 i32) (global.set $tempRet0 (local.get $0) ) ) - (func $getTempRet0 (; 24 ;) (result i32) + (func $getTempRet0 (result i32) (global.get $tempRet0) ) - (func $_main (; 25 ;) (result i32) + (func $_main (result i32) (local $0 i32) (local.set $0 (global.get $STACKTOP) @@ -164,7 +164,7 @@ ) (i32.const 0) ) - (func $_frexp (; 26 ;) (param $0 f64) (param $1 i32) (result f64) + (func $_frexp (param $0 f64) (param $1 i32) (result f64) (local $2 i32) (local $3 i32) (local $4 i32) @@ -261,7 +261,7 @@ ) (local.get $0) ) - (func $_strerror (; 27 ;) (param $0 i32) (result i32) + (func $_strerror (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local.set $1 @@ -342,7 +342,7 @@ ) (local.get $0) ) - (func $___errno_location (; 28 ;) (result i32) + (func $___errno_location (result i32) (if (result i32) (i32.load (i32.const 16) @@ -353,7 +353,7 @@ (i32.const 60) ) ) - (func $___stdio_close (; 29 ;) (param $0 i32) (result i32) + (func $___stdio_close (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local.set $1 @@ -393,7 +393,7 @@ ) (local.get $0) ) - (func $___stdout_write (; 30 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $___stdout_write (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -474,7 +474,7 @@ ) (local.get $0) ) - (func $___stdio_seek (; 31 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $___stdio_seek (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local.set $4 @@ -550,7 +550,7 @@ ) (local.get $0) ) - (func $_fflush (; 32 ;) (param $0 i32) (result i32) + (func $_fflush (param $0 i32) (result i32) (local $1 i32) (if (local.get $0) @@ -639,7 +639,7 @@ ) (local.get $0) ) - (func $_printf (; 33 ;) (param $0 i32) (param $1 i32) (result i32) + (func $_printf (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local.set $2 @@ -678,7 +678,7 @@ ) (local.get $0) ) - (func $___stdio_write (; 34 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $___stdio_write (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1024,7 +1024,7 @@ ) (local.get $2) ) - (func $_vfprintf (; 35 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $_vfprintf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1296,7 +1296,7 @@ ) (local.get $0) ) - (func $___fwritex (; 36 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $___fwritex (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1482,7 +1482,7 @@ ) (local.get $3) ) - (func $___towrite (; 37 ;) (param $0 i32) (result i32) + (func $___towrite (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local.set $1 @@ -1560,7 +1560,7 @@ ) ) ) - (func $_wcrtomb (; 38 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $_wcrtomb (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (block $do-once (result i32) (if (result i32) (local.get $0) @@ -1734,7 +1734,7 @@ ) ) ) - (func $_wctomb (; 39 ;) (param $0 i32) (param $1 i32) (result i32) + (func $_wctomb (param $0 i32) (param $1 i32) (result i32) (if (result i32) (local.get $0) (call $_wcrtomb @@ -1745,7 +1745,7 @@ (i32.const 0) ) ) - (func $_memchr (; 40 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $_memchr (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1976,7 +1976,7 @@ (local.get $0) ) ) - (func $___syscall_ret (; 41 ;) (param $0 i32) (result i32) + (func $___syscall_ret (param $0 i32) (result i32) (if (result i32) (i32.gt_u (local.get $0) @@ -1995,7 +1995,7 @@ (local.get $0) ) ) - (func $___fflush_unlocked (; 42 ;) (param $0 i32) (result i32) + (func $___fflush_unlocked (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -2117,14 +2117,14 @@ ) ) ) - (func $_cleanup (; 43 ;) (param $0 i32) + (func $_cleanup (param $0 i32) (drop (i32.load offset=68 (local.get $0) ) ) ) - (func $_printf_core (; 44 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (func $_printf_core (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -2467,7 +2467,7 @@ (if (result i32) (i32.lt_u (local.tee $8 - (i32.add + (i32.sub (local.tee $12 (i32.load8_s (local.tee $10 @@ -2478,7 +2478,7 @@ ) ) ) - (i32.const -48) + (i32.const 48) ) ) (i32.const 10) @@ -2562,9 +2562,9 @@ (i32.and (i32.shl (i32.const 1) - (i32.add + (i32.sub (local.get $6) - (i32.const -32) + (i32.const 32) ) ) (i32.const 75913) @@ -2583,7 +2583,7 @@ (i32.or (i32.shl (i32.const 1) - (i32.add + (i32.sub (i32.shr_s (i32.shl (local.get $1) @@ -2591,7 +2591,7 @@ ) (i32.const 24) ) - (i32.const -32) + (i32.const 32) ) ) (local.get $12) @@ -2642,7 +2642,7 @@ (br_if $__rjti$0 (i32.ge_u (local.tee $12 - (i32.add + (i32.sub (i32.load8_s (local.tee $6 (i32.add @@ -2651,7 +2651,7 @@ ) ) ) - (i32.const -48) + (i32.const 48) ) ) (i32.const 10) @@ -2681,11 +2681,11 @@ (i32.add (local.get $3) (i32.shl - (i32.add + (i32.sub (i32.load8_s (local.get $6) ) - (i32.const -48) + (i32.const 48) ) (i32.const 3) ) @@ -2790,7 +2790,7 @@ (if (result i32) (i32.lt_u (local.tee $6 - (i32.add + (i32.sub (i32.shr_s (i32.shl (local.get $6) @@ -2798,7 +2798,7 @@ ) (i32.const 24) ) - (i32.const -48) + (i32.const 48) ) ) (i32.const 10) @@ -2820,7 +2820,7 @@ (if (i32.lt_u (local.tee $9 - (i32.add + (i32.sub (i32.load8_s (local.tee $10 (i32.add @@ -2829,7 +2829,7 @@ ) ) ) - (i32.const -48) + (i32.const 48) ) ) (i32.const 10) @@ -2907,9 +2907,9 @@ (if (result i32) (i32.lt_u (local.tee $9 - (i32.add + (i32.sub (local.get $8) - (i32.const -48) + (i32.const 48) ) ) (i32.const 10) @@ -2947,7 +2947,7 @@ ) (i32.ge_u (local.tee $6 - (i32.add + (i32.sub (i32.load8_s (local.tee $10 (i32.add @@ -2956,7 +2956,7 @@ ) ) ) - (i32.const -48) + (i32.const 48) ) ) (i32.const 10) @@ -2970,7 +2970,7 @@ (if (i32.lt_u (local.tee $8 - (i32.add + (i32.sub (i32.load8_s (local.tee $6 (i32.add @@ -2979,7 +2979,7 @@ ) ) ) - (i32.const -48) + (i32.const 48) ) ) (i32.const 10) @@ -3008,11 +3008,11 @@ (i32.add (local.get $3) (i32.shl - (i32.add + (i32.sub (i32.load8_s (local.get $6) ) - (i32.const -48) + (i32.const 48) ) (i32.const 3) ) @@ -3095,11 +3095,11 @@ (if (i32.gt_u (local.tee $11 - (i32.add + (i32.sub (i32.load8_s (local.get $8) ) - (i32.const -65) + (i32.const 65) ) ) (i32.const 57) @@ -3119,7 +3119,7 @@ ) (if (result i32) (i32.lt_u - (i32.add + (i32.sub (local.tee $11 (i32.and (local.tee $15 @@ -3139,7 +3139,7 @@ (i32.const 255) ) ) - (i32.const -1) + (i32.const 1) ) (i32.const 8) ) @@ -3548,9 +3548,9 @@ (loop $while-in32 (i32.store8 (local.tee $8 - (i32.add + (i32.sub (local.get $8) - (i32.const -1) + (i32.const 1) ) ) (i32.or @@ -3602,9 +3602,9 @@ ) ) (local.get $6) - (i32.lt_s - (local.get $6) + (i32.gt_s (local.get $5) + (local.get $6) ) ) ) @@ -3645,7 +3645,7 @@ (i32.const 0) (local.get $7) ) - (i32.gt_u + (i32.ne (local.get $5) (i32.const 0) ) @@ -3926,11 +3926,11 @@ ) (i32.store (local.get $21) - (i32.add + (i32.sub (i32.load (local.get $21) ) - (i32.const -1) + (i32.const 1) ) ) ) @@ -3990,20 +3990,14 @@ ) (br_if $while-in54 (local.tee $5 - (i32.add + (i32.sub (local.get $5) - (i32.const -1) + (i32.const 1) ) ) ) ) - (if (result f64) - (i32.eq - (i32.load8_s - (local.get $9) - ) - (i32.const 45) - ) + (select (f64.neg (f64.add (local.get $14) @@ -4022,6 +4016,12 @@ ) (local.get $14) ) + (i32.eq + (i32.load8_s + (local.get $9) + ) + (i32.const 45) + ) ) ) ) @@ -4079,9 +4079,9 @@ ) ) (i32.store8 - (i32.add + (i32.sub (local.get $5) - (i32.const -1) + (i32.const 1) ) (i32.add (i32.and @@ -4096,9 +4096,9 @@ ) (i32.store8 (local.tee $8 - (i32.add + (i32.sub (local.get $5) - (i32.const -2) + (i32.const 2) ) ) (i32.add @@ -4375,11 +4375,11 @@ (i32.store (local.get $21) (local.tee $5 - (i32.add + (i32.sub (i32.load (local.get $21) ) - (i32.const -28) + (i32.const 28) ) ) ) @@ -4490,9 +4490,9 @@ (if (i32.ge_u (local.tee $9 - (i32.add + (i32.sub (local.get $7) - (i32.const -4) + (i32.const 4) ) ) (local.get $5) @@ -4508,22 +4508,22 @@ (block (result i32) (global.set $tempRet0 (i32.add - (i32.lt_u + (i32.gt_u + (local.tee $20 + (call $_bitshift64Shl + (i32.load + (local.get $9) + ) + (i32.const 0) + (local.get $15) + ) + ) (local.tee $11 (i32.add (local.get $11) - (local.tee $20 - (call $_bitshift64Shl - (i32.load - (local.get $9) - ) - (i32.const 0) - (local.get $15) - ) - ) + (local.get $20) ) ) - (local.get $20) ) (global.get $tempRet0) ) @@ -4548,9 +4548,9 @@ (br_if $while-in66 (i32.ge_u (local.tee $9 - (i32.add + (i32.sub (local.get $9) - (i32.const -4) + (i32.const 4) ) ) (local.get $5) @@ -4564,9 +4564,9 @@ ) (i32.store (local.tee $5 - (i32.add + (i32.sub (local.get $5) - (i32.const -4) + (i32.const 4) ) ) (local.get $11) @@ -4575,17 +4575,17 @@ ) (loop $while-in68 (if - (i32.gt_u - (local.get $7) + (i32.lt_u (local.get $5) + (local.get $7) ) (if (i32.eqz (i32.load (local.tee $9 - (i32.add + (i32.sub (local.get $7) - (i32.const -4) + (i32.const 4) ) ) ) @@ -4680,18 +4680,18 @@ ) ) (if - (i32.lt_u - (local.get $6) + (i32.gt_u (local.get $5) + (local.get $6) ) (block $do-once71 (local.set $11 - (i32.add + (i32.sub (i32.shl (i32.const 1) (local.get $15) ) - (i32.const -1) + (i32.const 1) ) ) (local.set $35 @@ -4946,7 +4946,7 @@ ) ) ) - (i32.add + (i32.sub (i32.mul (i32.shr_s (i32.sub @@ -4957,7 +4957,7 @@ ) (i32.const 9) ) - (i32.const -9) + (i32.const 9) ) ) (block (result i32) @@ -5017,7 +5017,7 @@ (local.tee $8 (i32.load (local.tee $6 - (i32.add + (i32.sub (i32.add (local.get $20) (i32.shl @@ -5025,7 +5025,7 @@ (i32.const 2) ) ) - (i32.const -4092) + (i32.const 4092) ) ) ) @@ -5167,18 +5167,18 @@ (if (i32.lt_u (local.tee $6 - (i32.add + (i32.sub (local.get $6) - (i32.const -4) + (i32.const 4) ) ) (local.get $5) ) (i32.store (local.tee $5 - (i32.add + (i32.sub (local.get $5) - (i32.const -4) + (i32.const 4) ) ) (i32.const 0) @@ -5263,9 +5263,9 @@ ) ) (local.get $9) - (i32.gt_u - (local.get $9) + (i32.lt_u (local.get $5) + (local.get $9) ) ) ) @@ -5306,9 +5306,9 @@ (if (result i32) (i32.load (local.tee $7 - (i32.add + (i32.sub (local.get $5) - (i32.const -4) + (i32.const 4) ) ) ) @@ -5363,28 +5363,28 @@ (block (result i32) (local.set $19 (i32.sub - (i32.add + (i32.sub (local.get $5) - (i32.const -1) + (i32.const 1) ) (local.get $8) ) ) - (i32.add + (i32.sub (local.get $16) - (i32.const -1) + (i32.const 1) ) ) (block (result i32) (local.set $19 - (i32.add + (i32.sub (local.get $5) - (i32.const -1) + (i32.const 1) ) ) - (i32.add + (i32.sub (local.get $16) - (i32.const -2) + (i32.const 2) ) ) ) @@ -5407,9 +5407,9 @@ (i32.eqz (local.tee $16 (i32.load - (i32.add + (i32.sub (local.get $9) - (i32.const -4) + (i32.const 4) ) ) ) @@ -5474,7 +5474,7 @@ ) ) (local.set $6 - (i32.add + (i32.sub (i32.mul (i32.shr_s (i32.sub @@ -5485,7 +5485,7 @@ ) (i32.const 9) ) - (i32.const -9) + (i32.const 9) ) ) (if (result i32) @@ -5517,9 +5517,9 @@ ) ) ) - (i32.lt_s - (local.get $19) + (i32.gt_s (local.get $5) + (local.get $19) ) ) ) @@ -5547,9 +5547,9 @@ ) ) ) - (i32.lt_s - (local.get $19) + (i32.gt_s (local.get $5) + (local.get $19) ) ) ) @@ -5643,9 +5643,9 @@ (loop $while-in98 (i32.store8 (local.tee $6 - (i32.add + (i32.sub (local.get $6) - (i32.const -1) + (i32.const 1) ) ) (i32.const 48) @@ -5662,9 +5662,9 @@ ) ) (i32.store8 - (i32.add + (i32.sub (local.get $6) - (i32.const -1) + (i32.const 1) ) (i32.add (i32.and @@ -5679,9 +5679,9 @@ ) (i32.store8 (local.tee $16 - (i32.add + (i32.sub (local.get $6) - (i32.const -2) + (i32.const 2) ) ) (local.get $7) @@ -5779,9 +5779,9 @@ (loop $while-in106 (i32.store8 (local.tee $7 - (i32.add + (i32.sub (local.get $7) - (i32.const -1) + (i32.const 1) ) ) (i32.const 48) @@ -5886,9 +5886,9 @@ (loop $while-in112 (i32.store8 (local.tee $6 - (i32.add + (i32.sub (local.get $6) - (i32.const -1) + (i32.const 1) ) ) (i32.const 48) @@ -5926,9 +5926,9 @@ ) ) (local.set $6 - (i32.add + (i32.sub (local.get $5) - (i32.const -9) + (i32.const 9) ) ) (if (result i32) @@ -6085,9 +6085,9 @@ (loop $while-in118 (i32.store8 (local.tee $5 - (i32.add + (i32.sub (local.get $5) - (i32.const -1) + (i32.const 1) ) ) (i32.const 48) @@ -6359,9 +6359,9 @@ (loop $while-in123 (result i32) (i32.store8 (local.tee $8 - (i32.add + (i32.sub (local.get $8) - (i32.const -1) + (i32.const 1) ) ) (i32.or @@ -6651,9 +6651,9 @@ ) ) (br_if $while-in127 - (i32.lt_u - (local.get $6) + (i32.gt_u (local.get $5) + (local.get $6) ) ) (local.get $5) @@ -6675,9 +6675,9 @@ (select (local.get $17) (local.get $7) - (i32.gt_s - (local.get $17) + (i32.lt_s (local.get $7) + (local.get $17) ) ) ) @@ -6733,9 +6733,9 @@ ) ) ) - (i32.gt_s - (local.get $6) + (i32.lt_s (local.get $5) + (local.get $6) ) ) (block (result i32) @@ -6762,9 +6762,9 @@ ) ) (local.get $17) - (i32.lt_s - (local.get $17) + (i32.gt_s (local.get $5) + (local.get $17) ) ) ) @@ -6946,7 +6946,7 @@ ) (local.get $18) ) - (func $_pop_arg_336 (; 45 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $_pop_arg_336 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 f64) (local $5 i32) @@ -7346,96 +7346,61 @@ ) ) ) - (func $_fmt_u (; 46 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $_fmt_u (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 i32) (if - (block (result i32) - (if - (i32.or - (i32.and - (i32.eqz - (local.get $1) - ) - (i32.gt_u - (local.get $0) - (i32.const -1) - ) + (local.get $1) + (loop $while-in + (i32.store8 + (local.tee $2 + (i32.sub + (local.get $2) + (i32.const 1) ) - (i32.gt_u + ) + (i32.or + (call $___uremdi3 + (local.get $0) (local.get $1) + (i32.const 10) (i32.const 0) ) + (i32.const 48) ) - (local.set $0 - (loop $while-in (result i32) - (i32.store8 - (local.tee $2 - (i32.add - (local.get $2) - (i32.const -1) - ) - ) - (i32.or - (call $___uremdi3 - (local.get $0) - (local.get $1) - (i32.const 10) - (i32.const 0) - ) - (i32.const 48) - ) - ) - (local.set $3 - (call $___udivdi3 - (local.get $0) - (local.get $1) - (i32.const 10) - (i32.const 0) - ) - ) - (local.set $4 - (global.get $tempRet0) - ) - (if (result i32) - (i32.or - (i32.and - (i32.eq - (local.get $1) - (i32.const 9) - ) - (i32.gt_u - (local.get $0) - (i32.const -1) - ) - ) - (i32.gt_u - (local.get $1) - (i32.const 9) - ) - ) - (block - (local.set $0 - (local.get $3) - ) - (local.set $1 - (local.get $4) - ) - (br $while-in) - ) - (local.get $3) - ) + ) + (local.set $0 + (call $___udivdi3 + (local.get $0) + (local.get $1) + (i32.const 10) + (i32.const 0) + ) + ) + (local.set $3 + (global.get $tempRet0) + ) + (if + (i32.gt_u + (local.get $1) + (i32.const 9) + ) + (block + (local.set $1 + (local.get $3) ) + (br $while-in) ) ) - (local.get $0) ) + ) + (if + (local.get $0) (loop $while-in1 (i32.store8 (local.tee $2 - (i32.add + (i32.sub (local.get $2) - (i32.const -1) + (i32.const 1) ) ) (i32.or @@ -7446,25 +7411,29 @@ (i32.const 48) ) ) - (local.set $0 + (local.set $1 (i32.div_u - (local.tee $1 - (local.get $0) - ) + (local.get $0) (i32.const 10) ) ) - (br_if $while-in1 + (if (i32.ge_u - (local.get $1) + (local.get $0) (i32.const 10) ) + (block + (local.set $0 + (local.get $1) + ) + (br $while-in1) + ) ) ) ) (local.get $2) ) - (func $_pad (; 47 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $_pad (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) @@ -7612,7 +7581,7 @@ (local.get $7) ) ) - (func $_malloc (; 48 ;) (param $0 i32) (result i32) + (func $_malloc (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -13091,7 +13060,7 @@ (i32.const 8) ) ) - (func $_free (; 49 ;) (param $0 i32) + (func $_free (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -14881,10 +14850,10 @@ (i32.const -1) ) ) - (func $runPostSets (; 50 ;) + (func $runPostSets (nop) ) - (func $_i64Subtract (; 51 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $_i64Subtract (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (global.set $tempRet0 (i32.sub (i32.sub @@ -14902,7 +14871,7 @@ (local.get $2) ) ) - (func $_i64Add (; 52 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $_i64Add (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (global.set $tempRet0 (i32.add @@ -14923,7 +14892,7 @@ ) (local.get $4) ) - (func $_memset (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $_memset (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -15061,7 +15030,7 @@ (local.get $2) ) ) - (func $_bitshift64Lshr (; 54 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $_bitshift64Lshr (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (if (i32.lt_s (local.get $2) @@ -15111,7 +15080,7 @@ ) ) ) - (func $_bitshift64Shl (; 55 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $_bitshift64Shl (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (if (i32.lt_s (local.get $2) @@ -15167,7 +15136,7 @@ ) (i32.const 0) ) - (func $_memcpy (; 56 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $_memcpy (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (if (i32.ge_s @@ -15314,7 +15283,7 @@ ) (local.get $3) ) - (func $___udivdi3 (; 57 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $___udivdi3 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (call $___udivmoddi4 (local.get $0) (local.get $1) @@ -15323,7 +15292,7 @@ (i32.const 0) ) ) - (func $___uremdi3 (; 58 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $___uremdi3 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local.set $4 (global.get $STACKTOP) @@ -15357,7 +15326,7 @@ (local.get $0) ) ) - (func $___udivmoddi4 (; 59 ;) (param $xl i32) (param $xh i32) (param $yl i32) (param $yh i32) (param $r i32) (result i32) + (func $___udivmoddi4 (param $xl i32) (param $xh i32) (param $yl i32) (param $yh i32) (param $r i32) (result i32) (local $x64 i64) (local $y64 i64) (local.set $x64 @@ -15414,7 +15383,7 @@ (local.get $x64) ) ) - (func $dynCall_ii (; 60 ;) (param $0 i32) (param $1 i32) (result i32) + (func $dynCall_ii (param $0 i32) (param $1 i32) (result i32) (call_indirect (type $i32_=>_i32) (local.get $1) (i32.and @@ -15423,7 +15392,7 @@ ) ) ) - (func $dynCall_iiii (; 61 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $dynCall_iiii (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (call_indirect (type $i32_i32_i32_=>_i32) (local.get $1) (local.get $2) @@ -15437,7 +15406,7 @@ ) ) ) - (func $dynCall_vi (; 62 ;) (param $0 i32) (param $1 i32) + (func $dynCall_vi (param $0 i32) (param $1 i32) (call_indirect (type $i32_=>_none) (local.get $1) (i32.add @@ -15449,19 +15418,19 @@ ) ) ) - (func $b0 (; 63 ;) (param $0 i32) (result i32) + (func $b0 (param $0 i32) (result i32) (call $nullFunc_ii (i32.const 0) ) (i32.const 0) ) - (func $b1 (; 64 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $b1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (call $nullFunc_iiii (i32.const 1) ) (i32.const 0) ) - (func $b2 (; 65 ;) (param $0 i32) + (func $b2 (param $0 i32) (call $nullFunc_vi (i32.const 2) ) diff -Nru binaryen-91/test/passes/instrument-locals_all-features_disable-typed-function-references.txt binaryen-99/test/passes/instrument-locals_all-features_disable-typed-function-references.txt --- binaryen-91/test/passes/instrument-locals_all-features_disable-typed-function-references.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/instrument-locals_all-features_disable-typed-function-references.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,286 @@ +(module + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_i64_=>_i64 (func (param i32 i32 i64) (result i64))) + (type $i32_i32_f32_=>_f32 (func (param i32 i32 f32) (result f32))) + (type $i32_i32_f64_=>_f64 (func (param i32 i32 f64) (result f64))) + (type $i32_i32_v128_=>_v128 (func (param i32 i32 v128) (result v128))) + (type $i32_i32_funcref_=>_funcref (func (param i32 i32 funcref) (result funcref))) + (type $i32_i32_externref_=>_externref (func (param i32 i32 externref) (result externref))) + (type $i32_i32_exnref_=>_exnref (func (param i32 i32 exnref) (result exnref))) + (type $i32_i32_anyref_=>_anyref (func (param i32 i32 anyref) (result anyref))) + (type $i32_i32_eqref_=>_eqref (func (param i32 i32 eqref) (result eqref))) + (type $i32_i32_i31ref_=>_i31ref (func (param i32 i32 i31ref) (result i31ref))) + (type $none_=>_none (func)) + (import "env" "get_i32" (func $get_i32 (param i32 i32 i32) (result i32))) + (import "env" "get_i64" (func $get_i64 (param i32 i32 i64) (result i64))) + (import "env" "get_f32" (func $get_f32 (param i32 i32 f32) (result f32))) + (import "env" "get_f64" (func $get_f64 (param i32 i32 f64) (result f64))) + (import "env" "set_i32" (func $set_i32 (param i32 i32 i32) (result i32))) + (import "env" "set_i64" (func $set_i64 (param i32 i32 i64) (result i64))) + (import "env" "set_f32" (func $set_f32 (param i32 i32 f32) (result f32))) + (import "env" "set_f64" (func $set_f64 (param i32 i32 f64) (result f64))) + (import "env" "get_funcref" (func $get_funcref (param i32 i32 funcref) (result funcref))) + (import "env" "set_funcref" (func $set_funcref (param i32 i32 funcref) (result funcref))) + (import "env" "get_externref" (func $get_externref (param i32 i32 externref) (result externref))) + (import "env" "set_externref" (func $set_externref (param i32 i32 externref) (result externref))) + (import "env" "get_exnref" (func $get_exnref (param i32 i32 exnref) (result exnref))) + (import "env" "set_exnref" (func $set_exnref (param i32 i32 exnref) (result exnref))) + (import "env" "get_anyref" (func $get_anyref (param i32 i32 anyref) (result anyref))) + (import "env" "set_anyref" (func $set_anyref (param i32 i32 anyref) (result anyref))) + (import "env" "get_eqref" (func $get_eqref (param i32 i32 eqref) (result eqref))) + (import "env" "set_eqref" (func $set_eqref (param i32 i32 eqref) (result eqref))) + (import "env" "get_i31ref" (func $get_i31ref (param i32 i32 i31ref) (result i31ref))) + (import "env" "set_i31ref" (func $set_i31ref (param i32 i32 i31ref) (result i31ref))) + (import "env" "get_v128" (func $get_v128 (param i32 i32 v128) (result v128))) + (import "env" "set_v128" (func $set_v128 (param i32 i32 v128) (result v128))) + (func $test + (local $x i32) + (local $y i64) + (local $z f32) + (local $w f64) + (local $F funcref) + (local $X externref) + (local $E exnref) + (local $S v128) + (drop + (call $get_i32 + (i32.const 0) + (i32.const 0) + (local.get $x) + ) + ) + (drop + (local.get $y) + ) + (drop + (call $get_f32 + (i32.const 1) + (i32.const 2) + (local.get $z) + ) + ) + (drop + (call $get_f64 + (i32.const 2) + (i32.const 3) + (local.get $w) + ) + ) + (drop + (call $get_funcref + (i32.const 3) + (i32.const 4) + (local.get $F) + ) + ) + (drop + (call $get_externref + (i32.const 4) + (i32.const 5) + (local.get $X) + ) + ) + (drop + (call $get_exnref + (i32.const 5) + (i32.const 6) + (local.get $E) + ) + ) + (drop + (call $get_i32 + (i32.const 6) + (i32.const 0) + (local.get $x) + ) + ) + (drop + (local.get $y) + ) + (drop + (call $get_f32 + (i32.const 7) + (i32.const 2) + (local.get $z) + ) + ) + (drop + (call $get_f64 + (i32.const 8) + (i32.const 3) + (local.get $w) + ) + ) + (drop + (call $get_funcref + (i32.const 9) + (i32.const 4) + (local.get $F) + ) + ) + (drop + (call $get_externref + (i32.const 10) + (i32.const 5) + (local.get $X) + ) + ) + (drop + (call $get_exnref + (i32.const 11) + (i32.const 6) + (local.get $E) + ) + ) + (local.set $x + (call $set_i32 + (i32.const 12) + (i32.const 0) + (i32.const 1) + ) + ) + (local.set $y + (i64.const 2) + ) + (local.set $z + (call $set_f32 + (i32.const 13) + (i32.const 2) + (f32.const 3.2100000381469727) + ) + ) + (local.set $w + (call $set_f64 + (i32.const 14) + (i32.const 3) + (f64.const 4.321) + ) + ) + (local.set $F + (ref.func $test) + ) + (local.set $X + (call $set_externref + (i32.const 16) + (i32.const 5) + (call $get_externref + (i32.const 15) + (i32.const 5) + (local.get $X) + ) + ) + ) + (local.set $E + (call $set_exnref + (i32.const 18) + (i32.const 6) + (call $get_exnref + (i32.const 17) + (i32.const 6) + (local.get $E) + ) + ) + ) + (local.set $x + (call $set_i32 + (i32.const 19) + (i32.const 0) + (i32.const 11) + ) + ) + (local.set $y + (i64.const 22) + ) + (local.set $z + (call $set_f32 + (i32.const 20) + (i32.const 2) + (f32.const 33.209999084472656) + ) + ) + (local.set $w + (call $set_f64 + (i32.const 21) + (i32.const 3) + (f64.const 44.321) + ) + ) + (local.set $F + (call $set_funcref + (i32.const 23) + (i32.const 4) + (call $get_funcref + (i32.const 22) + (i32.const 4) + (local.get $F) + ) + ) + ) + (local.set $X + (call $set_externref + (i32.const 25) + (i32.const 5) + (call $get_externref + (i32.const 24) + (i32.const 5) + (local.get $X) + ) + ) + ) + (local.set $E + (call $set_exnref + (i32.const 27) + (i32.const 6) + (call $get_exnref + (i32.const 26) + (i32.const 6) + (local.get $E) + ) + ) + ) + (try + (do + (nop) + ) + (catch + (local.set $F + (pop funcref) + ) + ) + ) + (try + (do + (nop) + ) + (catch + (local.set $X + (pop externref) + ) + ) + ) + (try + (do + (nop) + ) + (catch + (local.set $E + (pop exnref) + ) + ) + ) + (drop + (call $get_v128 + (i32.const 28) + (i32.const 7) + (local.get $S) + ) + ) + (local.set $S + (call $set_v128 + (i32.const 29) + (i32.const 7) + (v128.const i32x4 0x00000000 0x00000001 0x00000002 0x00000003) + ) + ) + ) +) diff -Nru binaryen-91/test/passes/instrument-locals_all-features_disable-typed-function-references.wast binaryen-99/test/passes/instrument-locals_all-features_disable-typed-function-references.wast --- binaryen-91/test/passes/instrument-locals_all-features_disable-typed-function-references.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/instrument-locals_all-features_disable-typed-function-references.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,69 @@ +(module + (func $test + (local $x i32) + (local $y i64) + (local $z f32) + (local $w f64) + (local $F funcref) + (local $X externref) + (local $E exnref) + (local $S v128) + + (drop (local.get $x)) + (drop (local.get $y)) + (drop (local.get $z)) + (drop (local.get $w)) + (drop (local.get $F)) + (drop (local.get $X)) + (drop (local.get $E)) + + (drop (local.get $x)) + (drop (local.get $y)) + (drop (local.get $z)) + (drop (local.get $w)) + (drop (local.get $F)) + (drop (local.get $X)) + (drop (local.get $E)) + + (local.set $x (i32.const 1)) + (local.set $y (i64.const 2)) + (local.set $z (f32.const 3.21)) + (local.set $w (f64.const 4.321)) + (local.set $F (ref.func $test)) + (local.set $X (local.get $X)) + (local.set $E (local.get $E)) + + (local.set $x (i32.const 11)) + (local.set $y (i64.const 22)) + (local.set $z (f32.const 33.21)) + (local.set $w (f64.const 44.321)) + (local.set $F (local.get $F)) + (local.set $X (local.get $X)) + (local.set $E (local.get $E)) + + ;; Pop instructions should not be instrumented + (try + (do) + (catch + (local.set $F (pop funcref)) + ) + ) + (try + (do) + (catch + (local.set $X (pop externref)) + ) + ) + (try + (do) + (catch + (local.set $E (pop exnref)) + ) + ) + + ;; Add new instructions here so expected output doesn't change too much, it + ;; depends on order of instructions in this file. + (drop (local.get $S)) + (local.set $S (v128.const i32x4 0x00000000 0x00000001 0x00000002 0x00000003)) + ) +) diff -Nru binaryen-91/test/passes/instrument-locals_all-features.txt binaryen-99/test/passes/instrument-locals_all-features.txt --- binaryen-91/test/passes/instrument-locals_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/instrument-locals_all-features.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,281 +0,0 @@ -(module - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_i64_=>_i64 (func (param i32 i32 i64) (result i64))) - (type $i32_i32_f32_=>_f32 (func (param i32 i32 f32) (result f32))) - (type $i32_i32_f64_=>_f64 (func (param i32 i32 f64) (result f64))) - (type $i32_i32_funcref_=>_funcref (func (param i32 i32 funcref) (result funcref))) - (type $i32_i32_anyref_=>_anyref (func (param i32 i32 anyref) (result anyref))) - (type $i32_i32_nullref_=>_nullref (func (param i32 i32 nullref) (result nullref))) - (type $i32_i32_exnref_=>_exnref (func (param i32 i32 exnref) (result exnref))) - (type $none_=>_none (func)) - (import "env" "get_i32" (func $get_i32 (param i32 i32 i32) (result i32))) - (import "env" "get_i64" (func $get_i64 (param i32 i32 i64) (result i64))) - (import "env" "get_f32" (func $get_f32 (param i32 i32 f32) (result f32))) - (import "env" "get_f64" (func $get_f64 (param i32 i32 f64) (result f64))) - (import "env" "set_i32" (func $set_i32 (param i32 i32 i32) (result i32))) - (import "env" "set_i64" (func $set_i64 (param i32 i32 i64) (result i64))) - (import "env" "set_f32" (func $set_f32 (param i32 i32 f32) (result f32))) - (import "env" "set_f64" (func $set_f64 (param i32 i32 f64) (result f64))) - (import "env" "get_funcref" (func $get_funcref (param i32 i32 funcref) (result funcref))) - (import "env" "set_funcref" (func $set_funcref (param i32 i32 funcref) (result funcref))) - (import "env" "get_anyref" (func $get_anyref (param i32 i32 anyref) (result anyref))) - (import "env" "set_anyref" (func $set_anyref (param i32 i32 anyref) (result anyref))) - (import "env" "get_nullref" (func $get_nullref (param i32 i32 nullref) (result nullref))) - (import "env" "set_nullref" (func $set_nullref (param i32 i32 nullref) (result nullref))) - (import "env" "get_exnref" (func $get_exnref (param i32 i32 exnref) (result exnref))) - (import "env" "set_exnref" (func $set_exnref (param i32 i32 exnref) (result exnref))) - (func $test (; 16 ;) - (local $x i32) - (local $y i64) - (local $z f32) - (local $w f64) - (local $F funcref) - (local $A anyref) - (local $N nullref) - (local $E exnref) - (drop - (call $get_i32 - (i32.const 0) - (i32.const 0) - (local.get $x) - ) - ) - (drop - (local.get $y) - ) - (drop - (call $get_f32 - (i32.const 1) - (i32.const 2) - (local.get $z) - ) - ) - (drop - (call $get_f64 - (i32.const 2) - (i32.const 3) - (local.get $w) - ) - ) - (drop - (call $get_funcref - (i32.const 3) - (i32.const 4) - (local.get $F) - ) - ) - (drop - (call $get_anyref - (i32.const 4) - (i32.const 5) - (local.get $A) - ) - ) - (drop - (call $get_nullref - (i32.const 5) - (i32.const 6) - (local.get $N) - ) - ) - (drop - (call $get_exnref - (i32.const 6) - (i32.const 7) - (local.get $E) - ) - ) - (drop - (call $get_i32 - (i32.const 7) - (i32.const 0) - (local.get $x) - ) - ) - (drop - (local.get $y) - ) - (drop - (call $get_f32 - (i32.const 8) - (i32.const 2) - (local.get $z) - ) - ) - (drop - (call $get_f64 - (i32.const 9) - (i32.const 3) - (local.get $w) - ) - ) - (drop - (call $get_funcref - (i32.const 10) - (i32.const 4) - (local.get $F) - ) - ) - (drop - (call $get_anyref - (i32.const 11) - (i32.const 5) - (local.get $A) - ) - ) - (drop - (call $get_nullref - (i32.const 12) - (i32.const 6) - (local.get $N) - ) - ) - (drop - (call $get_exnref - (i32.const 13) - (i32.const 7) - (local.get $E) - ) - ) - (local.set $x - (call $set_i32 - (i32.const 14) - (i32.const 0) - (i32.const 1) - ) - ) - (local.set $y - (i64.const 2) - ) - (local.set $z - (call $set_f32 - (i32.const 15) - (i32.const 2) - (f32.const 3.2100000381469727) - ) - ) - (local.set $w - (call $set_f64 - (i32.const 16) - (i32.const 3) - (f64.const 4.321) - ) - ) - (local.set $F - (call $set_funcref - (i32.const 17) - (i32.const 4) - (ref.func $test) - ) - ) - (local.set $A - (call $set_anyref - (i32.const 19) - (i32.const 5) - (call $get_anyref - (i32.const 18) - (i32.const 5) - (local.get $A) - ) - ) - ) - (local.set $N - (call $set_nullref - (i32.const 20) - (i32.const 6) - (ref.null) - ) - ) - (local.set $E - (call $set_exnref - (i32.const 22) - (i32.const 7) - (call $get_exnref - (i32.const 21) - (i32.const 7) - (local.get $E) - ) - ) - ) - (local.set $x - (call $set_i32 - (i32.const 23) - (i32.const 0) - (i32.const 11) - ) - ) - (local.set $y - (i64.const 22) - ) - (local.set $z - (call $set_f32 - (i32.const 24) - (i32.const 2) - (f32.const 33.209999084472656) - ) - ) - (local.set $w - (call $set_f64 - (i32.const 25) - (i32.const 3) - (f64.const 44.321) - ) - ) - (local.set $F - (call $set_funcref - (i32.const 27) - (i32.const 4) - (call $get_funcref - (i32.const 26) - (i32.const 4) - (local.get $F) - ) - ) - ) - (local.set $A - (call $set_anyref - (i32.const 29) - (i32.const 5) - (call $get_anyref - (i32.const 28) - (i32.const 5) - (local.get $A) - ) - ) - ) - (local.set $N - (call $set_nullref - (i32.const 31) - (i32.const 6) - (call $get_nullref - (i32.const 30) - (i32.const 6) - (local.get $N) - ) - ) - ) - (local.set $E - (call $set_exnref - (i32.const 33) - (i32.const 7) - (call $get_exnref - (i32.const 32) - (i32.const 7) - (local.get $E) - ) - ) - ) - (local.set $F - (funcref.pop) - ) - (local.set $A - (anyref.pop) - ) - (local.set $N - (nullref.pop) - ) - (local.set $E - (exnref.pop) - ) - ) -) diff -Nru binaryen-91/test/passes/instrument-locals_all-features.wast binaryen-99/test/passes/instrument-locals_all-features.wast --- binaryen-91/test/passes/instrument-locals_all-features.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/instrument-locals_all-features.wast 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ -(module - (func $test - (local $x i32) - (local $y i64) - (local $z f32) - (local $w f64) - (local $F funcref) - (local $A anyref) - (local $N nullref) - (local $E exnref) - - (drop (local.get $x)) - (drop (local.get $y)) - (drop (local.get $z)) - (drop (local.get $w)) - (drop (local.get $F)) - (drop (local.get $A)) - (drop (local.get $N)) - (drop (local.get $E)) - - (drop (local.get $x)) - (drop (local.get $y)) - (drop (local.get $z)) - (drop (local.get $w)) - (drop (local.get $F)) - (drop (local.get $A)) - (drop (local.get $N)) - (drop (local.get $E)) - - (local.set $x (i32.const 1)) - (local.set $y (i64.const 2)) - (local.set $z (f32.const 3.21)) - (local.set $w (f64.const 4.321)) - (local.set $F (ref.func $test)) - (local.set $A (local.get $A)) - (local.set $N (ref.null)) - (local.set $E (local.get $E)) - - (local.set $x (i32.const 11)) - (local.set $y (i64.const 22)) - (local.set $z (f32.const 33.21)) - (local.set $w (f64.const 44.321)) - (local.set $F (local.get $F)) - (local.set $A (local.get $A)) - (local.set $N (local.get $N)) - (local.set $E (local.get $E)) - - ;; Pop instructions should not be instrumented - (local.set $F (funcref.pop)) - (local.set $A (anyref.pop)) - (local.set $N (nullref.pop)) - (local.set $E (exnref.pop)) - ) -) - diff -Nru binaryen-91/test/passes/instrument-memory64.passes binaryen-99/test/passes/instrument-memory64.passes --- binaryen-91/test/passes/instrument-memory64.passes 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/instrument-memory64.passes 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +instrument-memory_enable-memory64 diff -Nru binaryen-91/test/passes/instrument-memory64.txt binaryen-99/test/passes/instrument-memory64.txt --- binaryen-91/test/passes/instrument-memory64.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/instrument-memory64.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,603 @@ +(module + (type $none_=>_none (func)) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i64_i64_=>_i64 (func (param i32 i32 i64 i64) (result i64))) + (type $i32_i64_=>_i64 (func (param i32 i64) (result i64))) + (type $i32_f32_=>_f32 (func (param i32 f32) (result f32))) + (type $i32_f64_=>_f64 (func (param i32 f64) (result f64))) + (import "env" "load_ptr" (func $load_ptr (param i32 i32 i64 i64) (result i64))) + (import "env" "load_val_i32" (func $load_val_i32 (param i32 i32) (result i32))) + (import "env" "load_val_i64" (func $load_val_i64 (param i32 i64) (result i64))) + (import "env" "load_val_f32" (func $load_val_f32 (param i32 f32) (result f32))) + (import "env" "load_val_f64" (func $load_val_f64 (param i32 f64) (result f64))) + (import "env" "store_ptr" (func $store_ptr (param i32 i32 i64 i64) (result i64))) + (import "env" "store_val_i32" (func $store_val_i32 (param i32 i32) (result i32))) + (import "env" "store_val_i64" (func $store_val_i64 (param i32 i64) (result i64))) + (import "env" "store_val_f32" (func $store_val_f32 (param i32 f32) (result f32))) + (import "env" "store_val_f64" (func $store_val_f64 (param i32 f64) (result f64))) + (memory $0 i64 256 256) + (func $A + (drop + (call $load_val_i32 + (i32.const 1) + (i32.load8_s + (call $load_ptr + (i32.const 1) + (i32.const 1) + (i64.const 0) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_i32 + (i32.const 2) + (i32.load8_u + (call $load_ptr + (i32.const 2) + (i32.const 1) + (i64.const 0) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_i32 + (i32.const 3) + (i32.load16_s + (call $load_ptr + (i32.const 3) + (i32.const 2) + (i64.const 0) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_i32 + (i32.const 4) + (i32.load16_u + (call $load_ptr + (i32.const 4) + (i32.const 2) + (i64.const 0) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_i32 + (i32.const 5) + (i32.load + (call $load_ptr + (i32.const 5) + (i32.const 4) + (i64.const 0) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_i64 + (i32.const 6) + (i64.load8_s + (call $load_ptr + (i32.const 6) + (i32.const 1) + (i64.const 0) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_i64 + (i32.const 7) + (i64.load8_u + (call $load_ptr + (i32.const 7) + (i32.const 1) + (i64.const 0) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_i64 + (i32.const 8) + (i64.load16_s + (call $load_ptr + (i32.const 8) + (i32.const 2) + (i64.const 0) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_i64 + (i32.const 9) + (i64.load16_u + (call $load_ptr + (i32.const 9) + (i32.const 2) + (i64.const 0) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_i64 + (i32.const 10) + (i64.load32_s + (call $load_ptr + (i32.const 10) + (i32.const 4) + (i64.const 0) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_i64 + (i32.const 11) + (i64.load32_u + (call $load_ptr + (i32.const 11) + (i32.const 4) + (i64.const 0) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_i64 + (i32.const 12) + (i64.load + (call $load_ptr + (i32.const 12) + (i32.const 8) + (i64.const 0) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_f32 + (i32.const 13) + (f32.load + (call $load_ptr + (i32.const 13) + (i32.const 4) + (i64.const 0) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_f64 + (i32.const 14) + (f64.load + (call $load_ptr + (i32.const 14) + (i32.const 8) + (i64.const 0) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_i32 + (i32.const 15) + (i32.load8_s offset=1 + (call $load_ptr + (i32.const 15) + (i32.const 1) + (i64.const 1) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_i32 + (i32.const 16) + (i32.load8_u offset=2 + (call $load_ptr + (i32.const 16) + (i32.const 1) + (i64.const 2) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_i32 + (i32.const 17) + (i32.load16_s offset=3 align=1 + (call $load_ptr + (i32.const 17) + (i32.const 2) + (i64.const 3) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_i32 + (i32.const 18) + (i32.load16_u offset=4 align=1 + (call $load_ptr + (i32.const 18) + (i32.const 2) + (i64.const 4) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_i32 + (i32.const 19) + (i32.load offset=5 align=2 + (call $load_ptr + (i32.const 19) + (i32.const 4) + (i64.const 5) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_i64 + (i32.const 20) + (i64.load8_s offset=6 + (call $load_ptr + (i32.const 20) + (i32.const 1) + (i64.const 6) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_i64 + (i32.const 21) + (i64.load8_u offset=7 + (call $load_ptr + (i32.const 21) + (i32.const 1) + (i64.const 7) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_i64 + (i32.const 22) + (i64.load16_s offset=8 align=1 + (call $load_ptr + (i32.const 22) + (i32.const 2) + (i64.const 8) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_i64 + (i32.const 23) + (i64.load16_u offset=9 align=1 + (call $load_ptr + (i32.const 23) + (i32.const 2) + (i64.const 9) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_i64 + (i32.const 24) + (i64.load32_s offset=10 align=2 + (call $load_ptr + (i32.const 24) + (i32.const 4) + (i64.const 10) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_i64 + (i32.const 25) + (i64.load32_u offset=11 align=2 + (call $load_ptr + (i32.const 25) + (i32.const 4) + (i64.const 11) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_i64 + (i32.const 26) + (i64.load offset=12 align=2 + (call $load_ptr + (i32.const 26) + (i32.const 8) + (i64.const 12) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_f32 + (i32.const 27) + (f32.load offset=13 align=2 + (call $load_ptr + (i32.const 27) + (i32.const 4) + (i64.const 13) + (i64.const 0) + ) + ) + ) + ) + (drop + (call $load_val_f64 + (i32.const 28) + (f64.load offset=14 align=2 + (call $load_ptr + (i32.const 28) + (i32.const 8) + (i64.const 14) + (i64.const 0) + ) + ) + ) + ) + ) + (func $B + (i32.store8 + (call $store_ptr + (i32.const 29) + (i32.const 1) + (i64.const 0) + (i64.const 0) + ) + (call $store_val_i32 + (i32.const 29) + (i32.const 1) + ) + ) + (i32.store16 + (call $store_ptr + (i32.const 30) + (i32.const 2) + (i64.const 0) + (i64.const 0) + ) + (call $store_val_i32 + (i32.const 30) + (i32.const 2) + ) + ) + (i32.store + (call $store_ptr + (i32.const 31) + (i32.const 4) + (i64.const 0) + (i64.const 0) + ) + (call $store_val_i32 + (i32.const 31) + (i32.const 3) + ) + ) + (i64.store8 + (call $store_ptr + (i32.const 32) + (i32.const 1) + (i64.const 0) + (i64.const 0) + ) + (call $store_val_i64 + (i32.const 32) + (i64.const 4) + ) + ) + (i64.store16 + (call $store_ptr + (i32.const 33) + (i32.const 2) + (i64.const 0) + (i64.const 0) + ) + (call $store_val_i64 + (i32.const 33) + (i64.const 5) + ) + ) + (i64.store32 + (call $store_ptr + (i32.const 34) + (i32.const 4) + (i64.const 0) + (i64.const 0) + ) + (call $store_val_i64 + (i32.const 34) + (i64.const 6) + ) + ) + (i64.store + (call $store_ptr + (i32.const 35) + (i32.const 8) + (i64.const 0) + (i64.const 0) + ) + (call $store_val_i64 + (i32.const 35) + (i64.const 7) + ) + ) + (f32.store + (call $store_ptr + (i32.const 36) + (i32.const 4) + (i64.const 0) + (i64.const 0) + ) + (call $store_val_f32 + (i32.const 36) + (f32.const 8) + ) + ) + (f64.store + (call $store_ptr + (i32.const 37) + (i32.const 8) + (i64.const 0) + (i64.const 0) + ) + (call $store_val_f64 + (i32.const 37) + (f64.const 9) + ) + ) + (i32.store8 offset=1 + (call $store_ptr + (i32.const 38) + (i32.const 1) + (i64.const 1) + (i64.const 0) + ) + (call $store_val_i32 + (i32.const 38) + (i32.const 1) + ) + ) + (i32.store16 offset=2 align=1 + (call $store_ptr + (i32.const 39) + (i32.const 2) + (i64.const 2) + (i64.const 0) + ) + (call $store_val_i32 + (i32.const 39) + (i32.const 2) + ) + ) + (i32.store offset=3 align=2 + (call $store_ptr + (i32.const 40) + (i32.const 4) + (i64.const 3) + (i64.const 0) + ) + (call $store_val_i32 + (i32.const 40) + (i32.const 3) + ) + ) + (i64.store8 offset=4 + (call $store_ptr + (i32.const 41) + (i32.const 1) + (i64.const 4) + (i64.const 0) + ) + (call $store_val_i64 + (i32.const 41) + (i64.const 4) + ) + ) + (i64.store16 offset=5 + (call $store_ptr + (i32.const 42) + (i32.const 2) + (i64.const 5) + (i64.const 0) + ) + (call $store_val_i64 + (i32.const 42) + (i64.const 5) + ) + ) + (i64.store32 offset=6 align=2 + (call $store_ptr + (i32.const 43) + (i32.const 4) + (i64.const 6) + (i64.const 0) + ) + (call $store_val_i64 + (i32.const 43) + (i64.const 6) + ) + ) + (i64.store offset=7 align=2 + (call $store_ptr + (i32.const 44) + (i32.const 8) + (i64.const 7) + (i64.const 0) + ) + (call $store_val_i64 + (i32.const 44) + (i64.const 7) + ) + ) + (f32.store offset=8 align=2 + (call $store_ptr + (i32.const 45) + (i32.const 4) + (i64.const 8) + (i64.const 0) + ) + (call $store_val_f32 + (i32.const 45) + (f32.const 8) + ) + ) + (f64.store offset=9 align=2 + (call $store_ptr + (i32.const 46) + (i32.const 8) + (i64.const 9) + (i64.const 0) + ) + (call $store_val_f64 + (i32.const 46) + (f64.const 9) + ) + ) + ) +) diff -Nru binaryen-91/test/passes/instrument-memory64.wast binaryen-99/test/passes/instrument-memory64.wast --- binaryen-91/test/passes/instrument-memory64.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/instrument-memory64.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,57 @@ +(module + (memory i64 256 256) + (type $1 (func)) + (func $A (type $1) + (drop (i32.load8_s (i64.const 0))) + (drop (i32.load8_u (i64.const 0))) + (drop (i32.load16_s (i64.const 0))) + (drop (i32.load16_u (i64.const 0))) + (drop (i32.load (i64.const 0))) + (drop (i64.load8_s (i64.const 0))) + (drop (i64.load8_u (i64.const 0))) + (drop (i64.load16_s (i64.const 0))) + (drop (i64.load16_u (i64.const 0))) + (drop (i64.load32_s (i64.const 0))) + (drop (i64.load32_u (i64.const 0))) + (drop (i64.load (i64.const 0))) + (drop (f32.load (i64.const 0))) + (drop (f64.load (i64.const 0))) + + (drop (i32.load8_s align=1 offset=1 (i64.const 0))) + (drop (i32.load8_u align=1 offset=2 (i64.const 0))) + (drop (i32.load16_s align=1 offset=3 (i64.const 0))) + (drop (i32.load16_u align=1 offset=4 (i64.const 0))) + (drop (i32.load align=2 offset=5 (i64.const 0))) + (drop (i64.load8_s align=1 offset=6 (i64.const 0))) + (drop (i64.load8_u align=1 offset=7 (i64.const 0))) + (drop (i64.load16_s align=1 offset=8 (i64.const 0))) + (drop (i64.load16_u align=1 offset=9 (i64.const 0))) + (drop (i64.load32_s align=2 offset=10 (i64.const 0))) + (drop (i64.load32_u align=2 offset=11 (i64.const 0))) + (drop (i64.load align=2 offset=12 (i64.const 0))) + (drop (f32.load align=2 offset=13 (i64.const 0))) + (drop (f64.load align=2 offset=14 (i64.const 0))) + ) + + (func $B (type $1) + (i32.store8 (i64.const 0) (i32.const 1)) + (i32.store16 (i64.const 0) (i32.const 2)) + (i32.store (i64.const 0) (i32.const 3)) + (i64.store8 (i64.const 0) (i64.const 4)) + (i64.store16 (i64.const 0) (i64.const 5)) + (i64.store32 (i64.const 0) (i64.const 6)) + (i64.store (i64.const 0) (i64.const 7)) + (f32.store (i64.const 0) (f32.const 8)) + (f64.store (i64.const 0) (f64.const 9)) + + (i32.store8 align=1 offset=1 (i64.const 0) (i32.const 1)) + (i32.store16 align=1 offset=2 (i64.const 0) (i32.const 2)) + (i32.store align=2 offset=3 (i64.const 0) (i32.const 3)) + (i64.store8 align=1 offset=4 (i64.const 0) (i64.const 4)) + (i64.store16 align=2 offset=5 (i64.const 0) (i64.const 5)) + (i64.store32 align=2 offset=6 (i64.const 0) (i64.const 6)) + (i64.store align=2 offset=7 (i64.const 0) (i64.const 7)) + (f32.store align=2 offset=8 (i64.const 0) (f32.const 8)) + (f64.store align=2 offset=9 (i64.const 0) (f64.const 9)) + ) +) diff -Nru binaryen-91/test/passes/instrument-memory.txt binaryen-99/test/passes/instrument-memory.txt --- binaryen-91/test/passes/instrument-memory.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/instrument-memory.txt 2021-01-07 20:01:06.000000000 +0000 @@ -16,7 +16,7 @@ (import "env" "store_val_f32" (func $store_val_f32 (param i32 f32) (result f32))) (import "env" "store_val_f64" (func $store_val_f64 (param i32 f64) (result f64))) (memory $0 256 256) - (func $A (; 10 ;) + (func $A (drop (call $load_val_i32 (i32.const 1) @@ -382,7 +382,7 @@ ) ) ) - (func $B (; 11 ;) + (func $B (i32.store8 (call $store_ptr (i32.const 29) diff -Nru binaryen-91/test/passes/interesting-pass-mix.txt binaryen-99/test/passes/interesting-pass-mix.txt --- binaryen-91/test/passes/interesting-pass-mix.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/interesting-pass-mix.txt 2021-01-07 20:01:06.000000000 +0000 @@ -3,22 +3,21 @@ (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (func $trivial (; 0 ;) + (func $trivial (nop) ) - (func $trivial2 (; 1 ;) + (func $trivial2 (call $trivial) (call $trivial) ) - (func $return-void (; 2 ;) + (func $return-void (nop) ) - (func $return-val (; 3 ;) (result i32) + (func $return-val (result i32) (i32.const 1) ) - (func $ifs (; 4 ;) (param $0 i32) (result i32) - (if (result i32) - (local.get $0) + (func $ifs (param $0 i32) (result i32) + (select (select (i32.const 2) (i32.const 3) @@ -29,9 +28,10 @@ (i32.const 5) (local.get $0) ) + (local.get $0) ) ) - (func $loops (; 5 ;) (param $0 i32) + (func $loops (param $0 i32) (if (local.get $0) (loop $shape$2$continue @@ -41,23 +41,25 @@ ) (loop $shape$4$continue (call $trivial) - (br_if $shape$4$continue + (if (local.get $0) + (br $shape$4$continue) ) ) (loop $shape$6$continue (call $trivial) - (br_if $shape$6$continue + (if (local.get $0) + (br $shape$6$continue) ) ) ) - (func $br-out (; 6 ;) (param $0 i32) + (func $br-out (param $0 i32) (call $br-out (i32.const 5) ) ) - (func $unreachable (; 7 ;) (param $0 i32) + (func $unreachable (param $0 i32) (if (i32.eqz (local.get $0) @@ -82,10 +84,10 @@ ) ) ) - (func $empty-blocks (; 8 ;) (param $0 i32) + (func $empty-blocks (param $0 i32) (nop) ) - (func $before-and-after (; 9 ;) (param $0 i32) + (func $before-and-after (param $0 i32) (call $before-and-after (i32.const 1) ) @@ -119,8 +121,9 @@ (call $before-and-after (i32.const 9) ) - (br_if $shape$4$continue + (if (local.get $0) + (br $shape$4$continue) ) ) (call $before-and-after @@ -181,15 +184,18 @@ (i32.const 25) ) ) - (func $switch (; 10 ;) (param $0 i32) + (func $switch (param $0 i32) (call $switch (i32.const 1) ) (block $block$7$break (block $switch$3$default - (br_table $block$7$break $block$7$break $block$7$break $switch$3$default - (local.get $0) + (block $switch$3$case$7 + (br_table $switch$3$case$7 $switch$3$case$7 $switch$3$case$7 $switch$3$default + (local.get $0) + ) ) + (br $block$7$break) ) (call $switch (i32.const 2) @@ -199,10 +205,10 @@ (i32.const 3) ) ) - (func $no-return (; 11 ;) + (func $no-return (nop) ) - (func $if-br-wat (; 12 ;) (param $0 i32) + (func $if-br-wat (param $0 i32) (call $if-br-wat (i32.const 0) ) @@ -212,8 +218,9 @@ (call $if-br-wat (i32.const 1) ) - (br_if $block$2$break + (if (local.get $0) + (br $block$2$break) ) ) (call $if-br-wat diff -Nru binaryen-91/test/passes/legalize-js-interface_all-features.txt binaryen-99/test/passes/legalize-js-interface_all-features.txt --- binaryen-91/test/passes/legalize-js-interface_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/legalize-js-interface_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -16,7 +16,7 @@ (export "imported" (func $legalstub$imported)) (export "imported_again" (func $legalstub$imported)) (export "other" (func $legalstub$other)) - (func $func (; 6 ;) (result i64) + (func $func (result i64) (drop (call $legalfunc$imported) ) @@ -27,7 +27,7 @@ ) (unreachable) ) - (func $ref-func-test (; 7 ;) + (func $ref-func-test (drop (call $legalfunc$ref-func-arg) ) @@ -35,7 +35,7 @@ (ref.func $ref-func-arg) ) ) - (func $legalstub$func (; 8 ;) (result i32) + (func $legalstub$func (result i32) (local $0 i64) (local.set $0 (call $func) @@ -52,7 +52,7 @@ (local.get $0) ) ) - (func $legalstub$imported (; 9 ;) (result i32) + (func $legalstub$imported (result i32) (local $0 i64) (local.set $0 (call $legalfunc$imported) @@ -69,7 +69,7 @@ (local.get $0) ) ) - (func $legalstub$other (; 10 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $legalstub$other (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (call $legalfunc$other (local.get $0) (i64.or @@ -96,7 +96,7 @@ ) ) ) - (func $legalfunc$imported (; 11 ;) (result i64) + (func $legalfunc$imported (result i64) (i64.or (i64.extend_i32_u (call $legalimport$imported) @@ -109,7 +109,7 @@ ) ) ) - (func $legalfunc$other (; 12 ;) (param $0 i32) (param $1 i64) (param $2 i64) + (func $legalfunc$other (param $0 i32) (param $1 i64) (param $2 i64) (call $legalimport$other (local.get $0) (i32.wrap_i64 @@ -132,7 +132,7 @@ ) ) ) - (func $legalfunc$ref-func-arg (; 13 ;) (result i64) + (func $legalfunc$ref-func-arg (result i64) (i64.or (i64.extend_i32_u (call $legalimport$ref-func-arg) diff -Nru binaryen-91/test/passes/legalize-js-interface-minimally.txt binaryen-99/test/passes/legalize-js-interface-minimally.txt --- binaryen-91/test/passes/legalize-js-interface-minimally.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/legalize-js-interface-minimally.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,15 +1,15 @@ (module (type $none_=>_i64 (func (result i64))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i64_=>_none (func (param i64))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $none_=>_i32 (func (result i32))) (import "env" "imported" (func $imported (result i64))) (import "env" "setTempRet0" (func $setTempRet0 (param i32))) (import "env" "invoke_vj" (func $legalimport$invoke_vj (param i32 i32))) (export "func" (func $func)) (export "dynCall_foo" (func $legalstub$dyn)) - (func $func (; 3 ;) (result i64) + (func $func (result i64) (drop (call $imported) ) @@ -18,13 +18,13 @@ ) (unreachable) ) - (func $dyn (; 4 ;) (result i64) + (func $dyn (result i64) (drop (call $imported) ) (unreachable) ) - (func $legalstub$dyn (; 5 ;) (result i32) + (func $legalstub$dyn (result i32) (local $0 i64) (local.set $0 (call $dyn) @@ -41,7 +41,7 @@ (local.get $0) ) ) - (func $legalfunc$invoke_vj (; 6 ;) (param $0 i64) + (func $legalfunc$invoke_vj (param $0 i64) (call $legalimport$invoke_vj (i32.wrap_i64 (local.get $0) diff -Nru binaryen-91/test/passes/legalize-js-interface_pass-arg=legalize-js-interface-export-originals.txt binaryen-99/test/passes/legalize-js-interface_pass-arg=legalize-js-interface-export-originals.txt --- binaryen-91/test/passes/legalize-js-interface_pass-arg=legalize-js-interface-export-originals.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/legalize-js-interface_pass-arg=legalize-js-interface-export-originals.txt 2021-01-07 20:01:06.000000000 +0000 @@ -5,10 +5,10 @@ (import "env" "setTempRet0" (func $setTempRet0 (param i32))) (export "func" (func $legalstub$func)) (export "orig$func" (func $func)) - (func $func (; 1 ;) (result i64) + (func $func (result i64) (unreachable) ) - (func $legalstub$func (; 2 ;) (result i32) + (func $legalstub$func (result i32) (local $0 i64) (local.set $0 (call $func) diff -Nru binaryen-91/test/passes/licm.txt binaryen-99/test/passes/licm.txt --- binaryen-91/test/passes/licm.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/licm.txt 2021-01-07 20:01:06.000000000 +0000 @@ -6,7 +6,7 @@ (type $none_=>_i64 (func (result i64))) (memory $0 1) (global $glob (mut i32) (i32.const 1)) - (func $loop1 (; 0 ;) + (func $loop1 (drop (i32.const 10) ) @@ -17,7 +17,7 @@ ) ) ) - (func $loop2 (; 1 ;) + (func $loop2 (drop (i32.const 10) ) @@ -32,7 +32,7 @@ ) ) ) - (func $loop3 (; 2 ;) + (func $loop3 (drop (i32.const 10) ) @@ -48,7 +48,7 @@ ) ) ) - (func $loop4 (; 3 ;) + (func $loop4 (drop (i32.load (i32.const 1) @@ -61,7 +61,7 @@ ) ) ) - (func $loop3-4 (; 4 ;) + (func $loop3-4 (loop $loop (drop (i32.load @@ -79,7 +79,7 @@ ) ) ) - (func $loop3-4-b (; 5 ;) + (func $loop3-4-b (drop (i32.load (i32.const 10) @@ -98,7 +98,7 @@ ) ) ) - (func $loop5 (; 6 ;) + (func $loop5 (loop $loop (i32.store (i32.const 1) @@ -109,7 +109,7 @@ ) ) ) - (func $loop6 (; 7 ;) + (func $loop6 (loop $loop (i32.store (i32.const 1) @@ -121,7 +121,7 @@ ) ) ) - (func $loop7 (; 8 ;) + (func $loop7 (loop $loop (i32.store (i32.const 1) @@ -136,7 +136,7 @@ ) ) ) - (func $loop8 (; 9 ;) + (func $loop8 (loop $loop (i32.store (i32.const 1) @@ -147,7 +147,7 @@ ) ) ) - (func $loop9 (; 10 ;) + (func $loop9 (loop $loop (drop (i32.load @@ -163,7 +163,7 @@ ) ) ) - (func $loop10 (; 11 ;) + (func $loop10 (drop (i32.load (i32.const 1) @@ -182,7 +182,7 @@ ) ) ) - (func $loop11 (; 12 ;) + (func $loop11 (local $x i32) (local $y i32) (loop $loop @@ -196,7 +196,7 @@ ) ) ) - (func $loop12 (; 13 ;) + (func $loop12 (local $x i32) (local $y i32) (drop @@ -211,7 +211,7 @@ ) ) ) - (func $loop13 (; 14 ;) + (func $loop13 (local $x i32) (local $y i32) (local.set $x @@ -227,7 +227,7 @@ ) ) ) - (func $loop14 (; 15 ;) + (func $loop14 (local $x i32) (local $y i32) (local.set $x @@ -246,7 +246,7 @@ ) ) ) - (func $loop14-1 (; 16 ;) + (func $loop14-1 (local $x i32) (local $y i32) (loop $loop @@ -264,7 +264,7 @@ ) ) ) - (func $loop15 (; 17 ;) + (func $loop15 (local $x i32) (local $y i32) (local.set $x @@ -283,7 +283,7 @@ ) ) ) - (func $loop15-1 (; 18 ;) + (func $loop15-1 (local $x i32) (local $y i32) (local.set $x @@ -303,7 +303,7 @@ ) ) ) - (func $loop16 (; 19 ;) + (func $loop16 (local $x i32) (local $y i32) (local.set $x @@ -322,7 +322,7 @@ ) ) ) - (func $loop16-1 (; 20 ;) + (func $loop16-1 (local $x i32) (local $y i32) (local.set $x @@ -342,7 +342,7 @@ ) ) ) - (func $loop16-2 (; 21 ;) + (func $loop16-2 (local $x i32) (local $y i32) (local.set $x @@ -367,7 +367,7 @@ ) ) ) - (func $loop16-3 (; 22 ;) + (func $loop16-3 (local $x i32) (local $y i32) (local.set $y @@ -392,7 +392,7 @@ ) ) ) - (func $nop (; 23 ;) + (func $nop (loop $loop (nop) (br_if $loop @@ -400,7 +400,7 @@ ) ) ) - (func $nested-blocks (; 24 ;) + (func $nested-blocks (loop $loop (block $block (nop) @@ -420,7 +420,7 @@ ) ) ) - (func $nested-unhoistable-blocks (; 25 ;) + (func $nested-unhoistable-blocks (loop $loop (block $block (call $nested-unhoistable-blocks) @@ -440,7 +440,7 @@ ) ) ) - (func $conditional (; 26 ;) + (func $conditional (if (i32.const 0) (drop @@ -454,7 +454,7 @@ ) ) ) - (func $conditional1 (; 27 ;) (result i32) + (func $conditional1 (result i32) (loop $loop (if (call $conditional1) @@ -468,7 +468,7 @@ ) (unreachable) ) - (func $conditional2 (; 28 ;) + (func $conditional2 (block $out (loop $loop (br_if $out @@ -483,7 +483,7 @@ ) ) ) - (func $conditional3 (; 29 ;) + (func $conditional3 (block $out (block (drop @@ -501,7 +501,7 @@ ) ) ) - (func $after (; 30 ;) + (func $after (loop $loop (nop) ) @@ -509,7 +509,7 @@ (i32.const 10) ) ) - (func $loops (; 31 ;) + (func $loops (drop (i32.const 10) ) @@ -523,7 +523,7 @@ ) ) ) - (func $loops2 (; 32 ;) + (func $loops2 (drop (i32.const 10) ) @@ -537,7 +537,7 @@ ) ) ) - (func $fuzz1 (; 33 ;) (result i64) + (func $fuzz1 (result i64) (local $var$1 i64) (drop (block (result i32) @@ -566,7 +566,7 @@ (local.get $var$1) ) ) - (func $self (; 34 ;) (result i32) + (func $self (result i32) (local $x i32) (loop $loop (local.set $x @@ -581,7 +581,7 @@ ) (local.get $x) ) - (func $nested-set (; 35 ;) + (func $nested-set (local $var$0 i32) (local $var$1 i64) (loop $label$1 @@ -601,7 +601,7 @@ ) ) ) - (func $load-store (; 36 ;) (param $x i32) + (func $load-store (param $x i32) (loop $loop (drop (i32.load @@ -617,7 +617,7 @@ ) ) ) - (func $set-set (; 37 ;) (param $x i32) (result i32) + (func $set-set (param $x i32) (result i32) (loop $loop (local.set $x (i32.const 1) @@ -634,7 +634,7 @@ ) (local.get $x) ) - (func $copies-no (; 38 ;) + (func $copies-no (local $x i32) (local $y i32) (local $z i32) @@ -658,7 +658,7 @@ ) ) ) - (func $consts-no (; 39 ;) + (func $consts-no (local $x i32) (local $a i32) (local $b i32) @@ -676,7 +676,7 @@ ) ) ) - (func $global (; 40 ;) + (func $global (local $x i32) (local.set $x (global.get $glob) diff -Nru binaryen-91/test/passes/log-execution.txt binaryen-99/test/passes/log-execution.txt --- binaryen-91/test/passes/log-execution.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/log-execution.txt 2021-01-07 20:01:06.000000000 +0000 @@ -4,19 +4,19 @@ (type $none_=>_i32 (func (result i32))) (import "env" "func" (func $import)) (import "env" "log_execution" (func $log_execution (param i32))) - (func $nopp (; 2 ;) + (func $nopp (call $log_execution (i32.const 0) ) (nop) ) - (func $intt (; 3 ;) (result i32) + (func $intt (result i32) (call $log_execution (i32.const 1) ) (i32.const 10) ) - (func $workk (; 4 ;) + (func $workk (call $log_execution (i32.const 3) ) @@ -35,7 +35,7 @@ ) ) ) - (func $loops (; 5 ;) + (func $loops (call $log_execution (i32.const 8) ) @@ -81,7 +81,7 @@ ) ) ) - (func $loops-similar (; 6 ;) + (func $loops-similar (call $log_execution (i32.const 10) ) diff -Nru binaryen-91/test/passes/memory64-lowering_enable-memory64_enable-bulk-memory.txt binaryen-99/test/passes/memory64-lowering_enable-memory64_enable-bulk-memory.txt --- binaryen-91/test/passes/memory64-lowering_enable-memory64_enable-bulk-memory.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/memory64-lowering_enable-memory64_enable-bulk-memory.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,168 @@ +(module + (type $none_=>_none (func)) + (memory $0 1 1) + (data (i32.const 0) "\00\00\00\00\00\00\00\00\00\00") + (func $func_1 + (local $0 i64) + (drop + (i32.load + (i32.wrap_i64 + (i64.const 4) + ) + ) + ) + (drop + (i32.load align=1 + (i32.wrap_i64 + (i64.const 4) + ) + ) + ) + (drop + (i32.load align=2 + (i32.wrap_i64 + (i64.const 4) + ) + ) + ) + (drop + (i32.load + (i32.wrap_i64 + (i64.const 4) + ) + ) + ) + (drop + (i32.load offset=100 + (i32.wrap_i64 + (i64.const 4) + ) + ) + ) + (drop + (i32.load offset=100 align=1 + (i32.wrap_i64 + (i64.const 4) + ) + ) + ) + (drop + (i32.load offset=100 align=2 + (i32.wrap_i64 + (i64.const 4) + ) + ) + ) + (drop + (i32.load offset=100 + (i32.wrap_i64 + (i64.const 4) + ) + ) + ) + (drop + (i32.load offset=100 align=1 + (unreachable) + ) + ) + (i32.store + (i32.wrap_i64 + (i64.const 4) + ) + (i32.const 8) + ) + (i32.store align=1 + (i32.wrap_i64 + (i64.const 4) + ) + (i32.const 8) + ) + (i32.store align=2 + (i32.wrap_i64 + (i64.const 4) + ) + (i32.const 8) + ) + (i32.store + (i32.wrap_i64 + (i64.const 4) + ) + (i32.const 8) + ) + (i32.store offset=100 + (i32.wrap_i64 + (i64.const 4) + ) + (i32.const 8) + ) + (i32.store offset=100 align=1 + (i32.wrap_i64 + (i64.const 4) + ) + (i32.const 8) + ) + (i32.store offset=100 align=2 + (i32.wrap_i64 + (i64.const 4) + ) + (i32.const 8) + ) + (i32.store offset=100 + (i32.wrap_i64 + (i64.const 4) + ) + (i32.const 8) + ) + (i32.store offset=100 align=1 + (unreachable) + (i32.const 8) + ) + (i32.store offset=100 align=1 + (i32.wrap_i64 + (i64.const 4) + ) + (unreachable) + ) + (local.set $0 + (i64.extend_i32_u + (memory.size) + ) + ) + (local.set $0 + (i64.extend_i32_u + (memory.grow + (i32.wrap_i64 + (i64.const 1) + ) + ) + ) + ) + (memory.init 0 + (i32.wrap_i64 + (i64.const 1) + ) + (i32.const 2) + (i32.const 3) + ) + (memory.fill + (i32.wrap_i64 + (i64.const 1) + ) + (i32.const 2) + (i32.wrap_i64 + (i64.const 3) + ) + ) + (memory.copy + (i32.wrap_i64 + (i64.const 1) + ) + (i32.wrap_i64 + (i64.const 2) + ) + (i32.wrap_i64 + (i64.const 3) + ) + ) + ) +) diff -Nru binaryen-91/test/passes/memory64-lowering_enable-memory64_enable-bulk-memory.wast binaryen-99/test/passes/memory64-lowering_enable-memory64_enable-bulk-memory.wast --- binaryen-91/test/passes/memory64-lowering_enable-memory64_enable-bulk-memory.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/memory64-lowering_enable-memory64_enable-bulk-memory.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,31 @@ +(module + (memory $0 i64 1 1) + (data (i32.const 0) "\00\00\00\00\00\00\00\00\00\00") + (func $func_1 + (local i64) + (drop (i32.load (i64.const 4))) + (drop (i32.load align=1 (i64.const 4))) + (drop (i32.load align=2 (i64.const 4))) + (drop (i32.load align=4 (i64.const 4))) + (drop (i32.load offset=100 (i64.const 4))) + (drop (i32.load offset=100 align=1 (i64.const 4))) + (drop (i32.load offset=100 align=2 (i64.const 4))) + (drop (i32.load offset=100 align=4 (i64.const 4))) + (drop (i32.load offset=100 align=1 (unreachable))) + (i32.store (i64.const 4) (i32.const 8)) + (i32.store align=1 (i64.const 4) (i32.const 8)) + (i32.store align=2 (i64.const 4) (i32.const 8)) + (i32.store align=4 (i64.const 4) (i32.const 8)) + (i32.store offset=100 (i64.const 4) (i32.const 8)) + (i32.store offset=100 align=1 (i64.const 4) (i32.const 8)) + (i32.store offset=100 align=2 (i64.const 4) (i32.const 8)) + (i32.store offset=100 align=4 (i64.const 4) (i32.const 8)) + (i32.store offset=100 align=1 (unreachable) (i32.const 8)) + (i32.store offset=100 align=1 (i64.const 4) (unreachable)) + (local.set 0 (memory.size)) + (local.set 0 (memory.grow (i64.const 1))) + (memory.init 0 (i64.const 1) (i32.const 2) (i32.const 3)) + (memory.fill (i64.const 1) (i32.const 2) (i64.const 3)) + (memory.copy (i64.const 1) (i64.const 2) (i64.const 3)) + ) +) diff -Nru binaryen-91/test/passes/memory-packing_all-features.txt binaryen-99/test/passes/memory-packing_all-features.txt --- binaryen-91/test/passes/memory-packing_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/memory-packing_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,15 +1,19 @@ (module - (import "env" "memory" (memory $0 2048 2048)) (import "env" "memoryBase" (global $memoryBase i32)) + (memory $0 2048 2048) ) (module - (import "env" "memory" (memory $0 2048 2048)) (import "env" "memoryBase" (global $memoryBase i32)) + (memory $0 2048 2048) ) (module - (type $none_=>_none (func)) - (import "env" "memory" (memory $0 2048 2048)) + (import "env" "memoryBase" (global $memoryBase i32)) + (memory $0 2048 2048) (data (global.get $memoryBase) "waka this cannot be optimized\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00we don\'t know where it will go") +) +(module + (type $none_=>_none (func)) + (memory $0 1 1) (data (i32.const 1024) "waka this CAN be optimized") (data (i32.const 1107) "we DO know where it will go") (data (i32.const 2057) "zeros before") @@ -17,8 +21,7 @@ (data (i32.const 4000) "zeros\00in\00the\00middle") (data (i32.const 4035) "nice skip here") (data (i32.const 4066) "another\00but no") - (import "env" "memoryBase" (global $memoryBase i32)) - (func $nonzero-size-init-of-active-will-trap (; 0 ;) + (func $nonzero-size-init-of-active-will-trap (block (drop (i32.const 42) @@ -33,7 +36,7 @@ ) (nop) ) - (func $nonzero-offset-init-of-active-will-trap (; 1 ;) + (func $nonzero-offset-init-of-active-will-trap (block (drop (i32.const 42) @@ -48,7 +51,7 @@ ) (nop) ) - (func $zero-offset-size-init-of-active-may-trap (; 2 ;) + (func $zero-offset-size-init-of-active-may-trap (if (i32.gt_u (i32.const 42) @@ -64,7 +67,7 @@ ) (module (type $none_=>_none (func)) - (import "env" "memory" (memory $0 2048 2048)) + (memory $0 2048 2048) (data passive "zeroes at start") (data passive "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00zeroes at start") (data passive "\00\00\00few zeroes at start") @@ -82,13 +85,13 @@ (data passive "more") (data passive "zeroes") (data passive "no zeroes") + (global $__mem_segment_drop_state (mut i32) (i32.const 0)) (global $__mem_segment_drop_state_0 (mut i32) (i32.const 0)) (global $__mem_segment_drop_state_1 (mut i32) (i32.const 0)) - (global $__mem_segment_drop_state_2 (mut i32) (i32.const 0)) - (func $zeroes-at-start (; 0 ;) + (func $zeroes-at-start (block (if - (global.get $__mem_segment_drop_state_0) + (global.get $__mem_segment_drop_state) (unreachable) ) (memory.fill @@ -103,13 +106,13 @@ ) ) (block - (global.set $__mem_segment_drop_state_0 + (global.set $__mem_segment_drop_state (i32.const 1) ) (data.drop 0) ) ) - (func $zeroes-at-start-not-split (; 1 ;) + (func $zeroes-at-start-not-split (memory.init 1 (i32.const 0) (i32.const 0) @@ -132,7 +135,7 @@ ) (data.drop 1) ) - (func $few-zeroes-at-start (; 2 ;) + (func $few-zeroes-at-start (memory.init 2 (i32.const 0) (i32.const 0) @@ -140,7 +143,7 @@ ) (data.drop 2) ) - (func $zeroes-at-end (; 3 ;) + (func $zeroes-at-end (block (memory.init 3 (i32.const 0) @@ -155,7 +158,7 @@ ) (data.drop 3) ) - (func $zeroes-at-end-not-split (; 4 ;) + (func $zeroes-at-end-not-split (memory.init 4 (i32.const 0) (i32.const 0) @@ -178,7 +181,7 @@ ) (data.drop 4) ) - (func $few-zeroes-at-end (; 5 ;) + (func $few-zeroes-at-end (memory.init 5 (i32.const 0) (i32.const 0) @@ -186,7 +189,7 @@ ) (data.drop 5) ) - (func $zeroes-in-middle (; 6 ;) + (func $zeroes-in-middle (block (memory.init 6 (i32.const 0) @@ -209,7 +212,7 @@ (data.drop 7) ) ) - (func $zeroes-in-middle-not-split (; 7 ;) + (func $zeroes-in-middle-not-split (memory.init 8 (i32.const 0) (i32.const 0) @@ -222,7 +225,7 @@ ) (data.drop 8) ) - (func $few-zeroes-in-middle (; 8 ;) + (func $few-zeroes-in-middle (memory.init 9 (i32.const 0) (i32.const 0) @@ -230,7 +233,7 @@ ) (data.drop 9) ) - (func $multiple-spans-of-zeroes (; 9 ;) + (func $multiple-spans-of-zeroes (block (memory.init 10 (i32.const 0) @@ -264,10 +267,10 @@ (data.drop 12) ) ) - (func $even-more-zeroes (; 10 ;) + (func $even-more-zeroes (block (if - (global.get $__mem_segment_drop_state_1) + (global.get $__mem_segment_drop_state_0) (unreachable) ) (memory.fill @@ -307,7 +310,7 @@ ) ) (block - (global.set $__mem_segment_drop_state_1 + (global.set $__mem_segment_drop_state_0 (i32.const 1) ) (data.drop 13) @@ -315,10 +318,10 @@ (data.drop 15) ) ) - (func $only-zeroes (; 11 ;) + (func $only-zeroes (block (if - (global.get $__mem_segment_drop_state_2) + (global.get $__mem_segment_drop_state_1) (unreachable) ) (memory.fill @@ -327,11 +330,11 @@ (i32.const 30) ) ) - (global.set $__mem_segment_drop_state_2 + (global.set $__mem_segment_drop_state_1 (i32.const 1) ) ) - (func $no-zeroes (; 12 ;) + (func $no-zeroes (memory.init 16 (i32.const 0) (i32.const 0) @@ -339,7 +342,7 @@ ) (data.drop 16) ) - (func $empty (; 13 ;) + (func $empty (if (i32.gt_u (i32.const 13) @@ -352,18 +355,19 @@ ) (nop) ) - (func $only-dropped (; 14 ;) + (func $only-dropped (nop) (nop) ) - (func $only-dropped-zeroes (; 15 ;) + (func $only-dropped-zeroes (nop) (nop) ) ) (module (type $none_=>_none (func)) - (import "env" "memory" (memory $0 2048 2048)) + (import "env" "param" (global $param i32)) + (memory $0 2048 2048) (data passive "even") (data passive "more") (data passive "zeroes") @@ -396,7 +400,7 @@ (data passive "even") (data passive "more") (data passive "zeroes") - (import "env" "param" (global $param i32)) + (global $__mem_segment_drop_state (mut i32) (i32.const 0)) (global $__mem_segment_drop_state_0 (mut i32) (i32.const 0)) (global $__mem_segment_drop_state_1 (mut i32) (i32.const 0)) (global $__mem_segment_drop_state_2 (mut i32) (i32.const 0)) @@ -404,15 +408,14 @@ (global $__mem_segment_drop_state_4 (mut i32) (i32.const 0)) (global $__mem_segment_drop_state_5 (mut i32) (i32.const 0)) (global $__mem_segment_drop_state_6 (mut i32) (i32.const 0)) - (global $__mem_segment_drop_state_7 (mut i32) (i32.const 0)) - (func $nonconst-dest (; 0 ;) + (func $nonconst-dest (local $0 i32) (block (local.set $0 (global.get $param) ) (if - (global.get $__mem_segment_drop_state_0) + (global.get $__mem_segment_drop_state) (unreachable) ) (memory.fill @@ -470,7 +473,7 @@ ) ) (block - (global.set $__mem_segment_drop_state_0 + (global.set $__mem_segment_drop_state (i32.const 1) ) (data.drop 0) @@ -478,7 +481,7 @@ (data.drop 2) ) ) - (func $nonconst-offset (; 1 ;) + (func $nonconst-offset (memory.init 3 (i32.const 0) (global.get $param) @@ -486,7 +489,7 @@ ) (data.drop 3) ) - (func $nonconst-size (; 2 ;) + (func $nonconst-size (memory.init 4 (i32.const 0) (i32.const 0) @@ -494,10 +497,10 @@ ) (data.drop 4) ) - (func $partial-skip-start (; 3 ;) + (func $partial-skip-start (block (if - (global.get $__mem_segment_drop_state_1) + (global.get $__mem_segment_drop_state_0) (unreachable) ) (memory.fill @@ -537,7 +540,7 @@ ) ) (block - (global.set $__mem_segment_drop_state_1 + (global.set $__mem_segment_drop_state_0 (i32.const 1) ) (data.drop 5) @@ -545,7 +548,7 @@ (data.drop 7) ) ) - (func $full-skip-start (; 4 ;) + (func $full-skip-start (block (memory.init 8 (i32.const 0) @@ -584,10 +587,10 @@ (data.drop 10) ) ) - (func $partial-skip-end (; 5 ;) + (func $partial-skip-end (block (if - (global.get $__mem_segment_drop_state_2) + (global.get $__mem_segment_drop_state_1) (unreachable) ) (memory.fill @@ -627,7 +630,7 @@ ) ) (block - (global.set $__mem_segment_drop_state_2 + (global.set $__mem_segment_drop_state_1 (i32.const 1) ) (data.drop 11) @@ -635,10 +638,10 @@ (data.drop 13) ) ) - (func $full-skip-end (; 6 ;) + (func $full-skip-end (block (if - (global.get $__mem_segment_drop_state_3) + (global.get $__mem_segment_drop_state_2) (unreachable) ) (memory.fill @@ -673,7 +676,7 @@ ) ) (block - (global.set $__mem_segment_drop_state_3 + (global.set $__mem_segment_drop_state_2 (i32.const 1) ) (data.drop 14) @@ -681,10 +684,10 @@ (data.drop 16) ) ) - (func $slice-zeroes (; 7 ;) + (func $slice-zeroes (block (if - (global.get $__mem_segment_drop_state_4) + (global.get $__mem_segment_drop_state_3) (unreachable) ) (memory.fill @@ -694,7 +697,7 @@ ) ) (block - (global.set $__mem_segment_drop_state_4 + (global.set $__mem_segment_drop_state_3 (i32.const 1) ) (data.drop 17) @@ -702,7 +705,7 @@ (data.drop 19) ) ) - (func $slice-nonzeroes (; 8 ;) + (func $slice-nonzeroes (memory.init 20 (i32.const 0) (i32.const 1) @@ -714,7 +717,7 @@ (data.drop 22) ) ) - (func $zero-size (; 9 ;) + (func $zero-size (if (i32.or (i32.gt_u @@ -724,12 +727,12 @@ (i32.const 16) ) ) - (global.get $__mem_segment_drop_state_5) + (global.get $__mem_segment_drop_state_4) ) (unreachable) ) (block - (global.set $__mem_segment_drop_state_5 + (global.set $__mem_segment_drop_state_4 (i32.const 1) ) (data.drop 23) @@ -737,7 +740,7 @@ (data.drop 25) ) ) - (func $zero-size-undropped (; 10 ;) + (func $zero-size-undropped (if (i32.or (i32.gt_u @@ -747,12 +750,12 @@ (i32.const 16) ) ) - (global.get $__mem_segment_drop_state_6) + (global.get $__mem_segment_drop_state_5) ) (unreachable) ) ) - (func $out-of-bounds-offset (; 11 ;) + (func $out-of-bounds-offset (block (drop (i32.const 0) @@ -767,7 +770,7 @@ ) (nop) ) - (func $zero-size-out-of-bounds-offset (; 12 ;) + (func $zero-size-out-of-bounds-offset (block (drop (i32.const 0) @@ -782,7 +785,7 @@ ) (nop) ) - (func $out-of-bounds-size (; 13 ;) + (func $out-of-bounds-size (block (drop (i32.const 0) @@ -797,7 +800,7 @@ ) (nop) ) - (func $zero-size-at-bounds-offset (; 14 ;) + (func $zero-size-at-bounds-offset (if (i32.or (i32.gt_u @@ -807,12 +810,12 @@ (i32.const 16) ) ) - (global.get $__mem_segment_drop_state_7) + (global.get $__mem_segment_drop_state_6) ) (unreachable) ) (block - (global.set $__mem_segment_drop_state_7 + (global.set $__mem_segment_drop_state_6 (i32.const 1) ) (data.drop 29) @@ -823,7 +826,7 @@ ) (module (type $none_=>_none (func)) - (import "env" "memory" (memory $0 2048 2048)) + (memory $0 2048 2048) (data passive "hi") (data passive "even") (data passive "hi") @@ -834,11 +837,11 @@ (data passive "hi") (data passive "even") (data passive "hi") + (global $__mem_segment_drop_state (mut i32) (i32.const 0)) (global $__mem_segment_drop_state_0 (mut i32) (i32.const 0)) (global $__mem_segment_drop_state_1 (mut i32) (i32.const 0)) (global $__mem_segment_drop_state_2 (mut i32) (i32.const 0)) - (global $__mem_segment_drop_state_3 (mut i32) (i32.const 0)) - (func $zero-length-init-zeroes (; 0 ;) + (func $zero-length-init-zeroes (if (i32.or (i32.gt_u @@ -848,12 +851,12 @@ (i32.const 16) ) ) - (global.get $__mem_segment_drop_state_0) + (global.get $__mem_segment_drop_state) ) (unreachable) ) (block - (global.set $__mem_segment_drop_state_0 + (global.set $__mem_segment_drop_state (i32.const 1) ) (data.drop 0) @@ -861,7 +864,7 @@ (data.drop 2) ) ) - (func $zero-length-init-nonzeroes (; 1 ;) + (func $zero-length-init-nonzeroes (if (i32.or (i32.gt_u @@ -871,12 +874,12 @@ (i32.const 16) ) ) - (global.get $__mem_segment_drop_state_1) + (global.get $__mem_segment_drop_state_0) ) (unreachable) ) (block - (global.set $__mem_segment_drop_state_1 + (global.set $__mem_segment_drop_state_0 (i32.const 1) ) (data.drop 3) @@ -884,7 +887,7 @@ (data.drop 5) ) ) - (func $zero-length-init-zeroes-2 (; 2 ;) + (func $zero-length-init-zeroes-2 (if (i32.or (i32.gt_u @@ -894,19 +897,19 @@ (i32.const 16) ) ) - (global.get $__mem_segment_drop_state_2) + (global.get $__mem_segment_drop_state_1) ) (unreachable) ) (block - (global.set $__mem_segment_drop_state_2 + (global.set $__mem_segment_drop_state_1 (i32.const 1) ) (data.drop 6) (data.drop 7) ) ) - (func $zero-length-init-nonzeroes-2 (; 3 ;) + (func $zero-length-init-nonzeroes-2 (if (i32.or (i32.gt_u @@ -916,12 +919,12 @@ (i32.const 16) ) ) - (global.get $__mem_segment_drop_state_3) + (global.get $__mem_segment_drop_state_2) ) (unreachable) ) (block - (global.set $__mem_segment_drop_state_3 + (global.set $__mem_segment_drop_state_2 (i32.const 1) ) (data.drop 8) @@ -931,7 +934,7 @@ ) (module (type $none_=>_none (func)) - (import "env" "memory" (memory $0 2048 2048)) + (memory $0 2048 2048) (data passive "a") (data passive "a") (data passive "a") @@ -995,7 +998,7 @@ (data passive "a") (data passive "a") (data passive "a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a") - (func $init-lots (; 0 ;) + (func $init-lots (block (memory.init 0 (i32.const 0) @@ -1505,3 +1508,67 @@ ) ) ) +(module + (memory $0 1 1) + (data (i32.const 1024) "x") + (data (i32.const 1024) "\00") +) +(module + (memory $0 1 1) + (data (i32.const 1024) "x") +) +(module + (memory $0 1 1) + (data (i32.const 1024) "x") +) +(module + (memory $0 1 1) + (data (i32.const 1024) "x") + (data (i32.const 1024) "\00") + (data (i32.const 4096) "\00") +) +(module + (import "env" "memoryBase" (global $memoryBase i32)) + (memory $0 1 1) + (data (i32.const 1024) "x") + (data (global.get $memoryBase) "\00") +) +(module + (import "env" "memoryBase" (global $memoryBase i32)) + (memory $0 1 1) + (data (i32.const 1024) "\00") + (data (global.get $memoryBase) "x") +) +(module + (type $none_=>_none (func)) + (memory $0 1 1) + (data passive "skipped") + (data passive "included") + (global $__mem_segment_drop_state (mut i32) (i32.const 0)) + (export "func_54" (func $0)) + (func $0 + (if + (global.get $__mem_segment_drop_state) + (unreachable) + ) + (memory.fill + (i32.const 0) + (i32.const 0) + (i32.const 30) + ) + (memory.init 1 + (i32.const 30) + (i32.const 0) + (i32.const 8) + ) + ) +) +(module + (import "env" "memory" (memory $0 1 1)) + (data (i32.const 1024) "x") + (data (i32.const 2048) "\00") +) +(module + (memory $0 1 1) + (data (i32.const 1024) "x") +) diff -Nru binaryen-91/test/passes/memory-packing_all-features.wast binaryen-99/test/passes/memory-packing_all-features.wast --- binaryen-91/test/passes/memory-packing_all-features.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/memory-packing_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,20 +1,24 @@ (module - (import "env" "memory" (memory $0 2048 2048)) + (memory $0 2048 2048) (import "env" "memoryBase" (global $memoryBase i32)) ;; nothing ) (module - (import "env" "memory" (memory $0 2048 2048)) + (memory $0 2048 2048) (import "env" "memoryBase" (global $memoryBase i32)) (data (i32.const 4066) "") ;; empty ) (module - (import "env" "memory" (memory $0 2048 2048)) + (memory $0 2048 2048) (import "env" "memoryBase" (global $memoryBase i32)) (data (global.get $memoryBase) "waka this cannot be optimized\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00we don't know where it will go") +) + +(module + (memory 1 1) (data (i32.const 1024) "waka this CAN be optimized\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00we DO know where it will go") @@ -53,7 +57,7 @@ ) (module - (import "env" "memory" (memory $0 2048 2048)) + (memory $0 2048 2048) (data passive "not referenced, delete me") ;; 0 @@ -267,7 +271,7 @@ ) (module - (import "env" "memory" (memory $0 2048 2048)) + (memory $0 2048 2048) (import "env" "param" (global $param i32)) (data passive "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00even\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00more\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00zeroes\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") ;; 0 @@ -436,7 +440,7 @@ ) (module - (import "env" "memory" (memory $0 2048 2048)) + (memory $0 2048 2048) (data passive "hi\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00even\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00hi") ;; 0 (func $zero-length-init-zeroes @@ -483,7 +487,7 @@ ) (module - (import "env" "memory" (memory $0 2048 2048)) + (memory $0 2048 2048) (data passive "a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00a") ;; 64 ranges of zeroes (func $init-lots @@ -494,4 +498,61 @@ ) (data.drop 0) ) -) \ No newline at end of file +) +(module + (memory $0 1 1) + (data (i32.const 1024) "x") + (data (i32.const 1024) "\00") ;; this tramples the "x", and so must be kept. +) +(module + (memory $0 1 1) + (data (i32.const 1024) "x") + (data (i32.const 1025) "\00") +) +(module + (memory $0 1 1) + (data (i32.const 1024) "x") + (data (i32.const 1023) "\00") +) +(module + (memory $0 1 1) + (data (i32.const 1024) "x") + (data (i32.const 1024) "\00") ;; when we see one bad thing, we give up + (data (i32.const 4096) "\00") +) +(module + (memory $0 1 1) + (import "env" "memoryBase" (global $memoryBase i32)) + (data (i32.const 1024) "x") + (data (global.get $memoryBase) "\00") ;; this could trample, or not +) +(module + (memory $0 1 1) + (import "env" "memoryBase" (global $memoryBase i32)) + (data (i32.const 1024) "\00") ;; this could trample, or not + (data (global.get $memoryBase) "x") +) +(module + (memory $0 1 1) + (data passive "skipped\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00included") + (export "func_54" (func $0)) + (func $0 + (memory.init 0 + (i32.const 0) + (i32.const 7) + (i32.const 38) + ) + ) +) +(module + ;; we can't optimize on an imported memory without zeroFilledMemory being set. + (import "env" "memory" (memory $0 1 1)) + (data (i32.const 1024) "x") + (data (i32.const 2048) "\00") +) +(module + ;; we can when not imported + (memory $0 1 1) + (data (i32.const 1024) "x") + (data (i32.const 2048) "\00") +) diff -Nru binaryen-91/test/passes/memory-packing_all-features_zero-filled-memory.txt binaryen-99/test/passes/memory-packing_all-features_zero-filled-memory.txt --- binaryen-91/test/passes/memory-packing_all-features_zero-filled-memory.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/memory-packing_all-features_zero-filled-memory.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,4 @@ +(module + (import "env" "memory" (memory $0 1 1)) + (data (i32.const 1024) "x") +) diff -Nru binaryen-91/test/passes/memory-packing_all-features_zero-filled-memory.wast binaryen-99/test/passes/memory-packing_all-features_zero-filled-memory.wast --- binaryen-91/test/passes/memory-packing_all-features_zero-filled-memory.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/memory-packing_all-features_zero-filled-memory.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,6 @@ +(module + ;; we can optimize on an imported memory with zeroFilledMemory being set. + (import "env" "memory" (memory $0 1 1)) + (data (i32.const 1024) "x") + (data (i32.const 1023) "\00") +) diff -Nru binaryen-91/test/passes/merge-blocks_remove-unused-brs.txt binaryen-99/test/passes/merge-blocks_remove-unused-brs.txt --- binaryen-91/test/passes/merge-blocks_remove-unused-brs.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/merge-blocks_remove-unused-brs.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ (module (type $i32_=>_none (func (param i32))) - (func $func (; 0 ;) (param $x i32) + (func $func (param $x i32) (loop $loop (block $out (block diff -Nru binaryen-91/test/passes/merge-blocks.txt binaryen-99/test/passes/merge-blocks.txt --- binaryen-91/test/passes/merge-blocks.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/merge-blocks.txt 2021-01-07 20:01:06.000000000 +0000 @@ -4,14 +4,14 @@ (type $i32_=>_none (func (param i32))) (type $none_=>_f32 (func (result f32))) (global $global$0 (mut i32) (i32.const 10)) - (func $drop-block (; 0 ;) + (func $drop-block (block $block (drop (i32.const 0) ) ) ) - (func $drop-block-br (; 1 ;) + (func $drop-block-br (block $block (drop (block $x (result i32) @@ -23,7 +23,7 @@ ) ) ) - (func $drop-block-br-if (; 2 ;) + (func $drop-block-br-if (block $block (drop (i32.const 1) @@ -38,7 +38,7 @@ ) ) ) - (func $undroppable-block-br-if (; 3 ;) (param $0 i32) + (func $undroppable-block-br-if (param $0 i32) (block $block (drop (block $x (result i32) @@ -53,7 +53,7 @@ ) ) ) - (func $drop-block-nested-br-if (; 4 ;) + (func $drop-block-nested-br-if (block $block (block $x (if @@ -74,7 +74,7 @@ ) ) ) - (func $drop-unreachable-br_if (; 5 ;) (result i32) + (func $drop-unreachable-br_if (result i32) (block $label$0 (result i32) (block $label$2 (result i32) (br_if $label$2 @@ -86,7 +86,7 @@ ) ) ) - (func $drop-block-squared-iloop (; 6 ;) + (func $drop-block-squared-iloop (drop (block $label$0 (result i32) (drop @@ -99,7 +99,7 @@ ) ) ) - (func $br-goes-away-label2-becomes-unreachable (; 7 ;) + (func $br-goes-away-label2-becomes-unreachable (block $block (drop (block $label$1 (result i32) @@ -118,7 +118,7 @@ ) ) ) - (func $loop-block-drop-block-return (; 8 ;) + (func $loop-block-drop-block-return (loop $label$4 (block $label$5 (drop @@ -129,7 +129,7 @@ ) ) ) - (func $if-block (; 9 ;) + (func $if-block (block $label (if (i32.const 1) @@ -144,7 +144,7 @@ ) ) ) - (func $if-block-bad (; 10 ;) + (func $if-block-bad (block $label (if (br $label) @@ -159,7 +159,7 @@ ) ) ) - (func $if-block-br (; 11 ;) + (func $if-block-br (block $label (if (i32.const 1) @@ -167,7 +167,7 @@ ) ) ) - (func $if-block-br-1 (; 12 ;) + (func $if-block-br-1 (block $label (if (i32.const 1) @@ -178,7 +178,7 @@ ) ) ) - (func $if-block-br-2 (; 13 ;) + (func $if-block-br-2 (block $label (if (i32.const 1) @@ -189,7 +189,7 @@ ) ) ) - (func $if-block-br-3 (; 14 ;) + (func $if-block-br-3 (block $label (if (i32.const 1) @@ -198,7 +198,7 @@ ) ) ) - (func $if-block-br-4-eithre (; 15 ;) + (func $if-block-br-4-eithre (block $label (if (i32.const 1) @@ -211,7 +211,7 @@ ) ) ) - (func $if-block-br-5-value (; 16 ;) (result i32) + (func $if-block-br-5-value (result i32) (block $label (result i32) (if (result i32) (i32.const 1) @@ -220,7 +220,7 @@ ) ) ) - (func $restructure-if-outerType-change (; 17 ;) + (func $restructure-if-outerType-change (loop $label$1 (br_if $label$1 (block $label$2 @@ -237,7 +237,7 @@ ) ) ) - (func $if-arm-unreachable (; 18 ;) + (func $if-arm-unreachable (block $label$1 (if (unreachable) @@ -246,7 +246,7 @@ ) ) ) - (func $propagate-type-if-we-optimize (; 19 ;) + (func $propagate-type-if-we-optimize (if (i32.const 1) (nop) @@ -269,7 +269,7 @@ ) ) ) - (func $br-value-blocktypechange (; 20 ;) (result f32) + (func $br-value-blocktypechange (result f32) (global.set $global$0 (i32.const 0) ) diff -Nru binaryen-91/test/passes/merge-locals_all-features.txt binaryen-99/test/passes/merge-locals_all-features.txt --- binaryen-91/test/passes/merge-locals_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/merge-locals_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -5,7 +5,7 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_f32_f32_=>_i64 (func (param i32 f32 f32) (result i64))) (global $global$0 (mut i32) (i32.const 10)) - (func $test (; 0 ;) (param $x i32) (param $y i32) (result i32) + (func $test (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x @@ -17,7 +17,7 @@ ) (local.get $x) ) - (func $test2 (; 1 ;) (param $x i32) (param $y i32) (result i32) + (func $test2 (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x @@ -29,7 +29,7 @@ ) (local.get $x) ) - (func $test-multiple (; 2 ;) (param $x i32) (param $y i32) (result i32) + (func $test-multiple (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x @@ -44,7 +44,7 @@ ) (local.get $x) ) - (func $test-just-some (; 3 ;) (param $x i32) (param $y i32) (result i32) + (func $test-just-some (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x @@ -62,7 +62,7 @@ ) (local.get $y) ) - (func $test-just-some2 (; 4 ;) (param $x i32) (param $y i32) (result i32) + (func $test-just-some2 (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x @@ -83,7 +83,7 @@ ) (i32.const 500) ) - (func $test-just-some3 (; 5 ;) (param $x i32) (param $y i32) (result i32) + (func $test-just-some3 (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x @@ -104,7 +104,7 @@ ) (local.get $y) ) - (func $silly-self (; 6 ;) (param $x i32) (param $y i32) (result i32) + (func $silly-self (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x @@ -116,7 +116,7 @@ ) (local.get $y) ) - (func $silly-multi (; 7 ;) (param $x i32) (param $y i32) (result i32) + (func $silly-multi (param $x i32) (param $y i32) (result i32) (drop (if (result i32) (local.tee $x @@ -130,7 +130,7 @@ ) (local.get $y) ) - (func $undo-1 (; 8 ;) (param $var$1 i32) (param $var$2 i32) + (func $undo-1 (param $var$1 i32) (param $var$2 i32) (local $var$5 i32) (local.set $var$2 (local.get $var$1) @@ -142,7 +142,7 @@ (local.get $var$1) ) ) - (func $undo-2 (; 9 ;) (param $var$1 i32) (param $var$2 i32) + (func $undo-2 (param $var$1 i32) (param $var$2 i32) (local $var$5 i32) (local.set $var$2 (local.get $var$1) @@ -157,7 +157,7 @@ (local.get $var$1) ) ) - (func $reverse (; 10 ;) (param $x i32) (param $y i32) + (func $reverse (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x @@ -180,7 +180,7 @@ (local.get $y) ) ) - (func $reverse-end (; 11 ;) (param $x i32) (param $y i32) + (func $reverse-end (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x @@ -191,7 +191,7 @@ ) ) ) - (func $reverse-lone-end-2 (; 12 ;) (param $x i32) (param $y i32) + (func $reverse-lone-end-2 (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x @@ -208,7 +208,7 @@ (local.get $y) ) ) - (func $reverse-undo (; 13 ;) (param $x i32) (param $y i32) + (func $reverse-undo (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x @@ -234,7 +234,7 @@ (local.get $y) ) ) - (func $reverse-undo2 (; 14 ;) (param $x i32) (param $y i32) + (func $reverse-undo2 (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x @@ -260,7 +260,7 @@ (local.get $y) ) ) - (func $reverse-undo3-conditional (; 15 ;) (param $x i32) (param $y i32) + (func $reverse-undo3-conditional (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x @@ -289,7 +289,7 @@ (local.get $y) ) ) - (func $reverse-undo3-conditional-b (; 16 ;) (param $x i32) (param $y i32) + (func $reverse-undo3-conditional-b (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x @@ -318,7 +318,7 @@ (local.get $y) ) ) - (func $reverse-undo3-conditional-c (; 17 ;) (param $x i32) (param $y i32) + (func $reverse-undo3-conditional-c (param $x i32) (param $y i32) (drop (if (result i32) (local.tee $x @@ -355,7 +355,7 @@ (local.get $y) ) ) - (func $fuzz (; 18 ;) (param $var$0 i32) (param $var$1 f32) (param $var$2 f32) (result i64) + (func $fuzz (param $var$0 i32) (param $var$1 f32) (param $var$2 f32) (result i64) (local $var$3 i32) (global.set $global$0 (i32.sub @@ -439,7 +439,7 @@ (i64.const -36028797018963968) ) ) - (func $trivial-confusion (; 19 ;) (param $unused i32) (param $param i32) (param $result i32) + (func $trivial-confusion (param $unused i32) (param $param i32) (param $result i32) (loop $label$1 (if (i32.const 1) @@ -457,10 +457,10 @@ ) ) ) - (func $subtype-test (; 20 ;) + (func $subtype-test (local $0 anyref) - (local $1 nullref) - (local $2 nullref) + (local $1 funcref) + (local $2 funcref) (local.set $0 (local.get $1) ) diff -Nru binaryen-91/test/passes/merge-locals_all-features.wast binaryen-99/test/passes/merge-locals_all-features.wast --- binaryen-91/test/passes/merge-locals_all-features.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/merge-locals_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -377,8 +377,8 @@ ) (func $subtype-test (local $0 anyref) - (local $1 nullref) - (local $2 nullref) + (local $1 funcref) + (local $2 funcref) (local.set $0 (local.get $1) ) @@ -388,4 +388,3 @@ ) ) ) - diff -Nru binaryen-91/test/passes/metrics_all-features.txt binaryen-99/test/passes/metrics_all-features.txt --- binaryen-91/test/passes/metrics_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/metrics_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -23,7 +23,7 @@ (global $glob i32 (i32.const 1337)) (event $e0 (attr 0) (param i32)) (event $e1 (attr 0) (param i32 i32)) - (func $ifs (; 0 ;) (param $x i32) + (func $ifs (param $x i32) (local $y f32) (block $block0 (if diff -Nru binaryen-91/test/passes/metrics_strip-debug_metrics.bin.txt binaryen-99/test/passes/metrics_strip-debug_metrics.bin.txt --- binaryen-91/test/passes/metrics_strip-debug_metrics.bin.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/metrics_strip-debug_metrics.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -19,7 +19,7 @@ (module (type $none_=>_none (func)) (export "a" (func $0)) - (func $0 (; 0 ;) + (func $0 (nop) ) ;; custom section "emscripten_metadata", size 7 diff -Nru binaryen-91/test/passes/metrics_strip-producers_metrics.bin.txt binaryen-99/test/passes/metrics_strip-producers_metrics.bin.txt --- binaryen-91/test/passes/metrics_strip-producers_metrics.bin.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/metrics_strip-producers_metrics.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -19,7 +19,7 @@ (module (type $none_=>_none (func)) (export "a" (func $0)) - (func $0 (; 0 ;) + (func $0 (nop) ) ;; custom section "emscripten_metadata", size 7 diff -Nru binaryen-91/test/passes/minify-imports_all-features.txt binaryen-99/test/passes/minify-imports_all-features.txt --- binaryen-91/test/passes/minify-imports_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/minify-imports_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,10020 +1,10022 @@ -longname53 => $ -longname2966 => $$ -longname3020 => $0 -longname3074 => $1 -longname3128 => $2 -longname3182 => $3 -longname3236 => $4 -longname3290 => $5 -longname3344 => $6 -longname3398 => $7 -longname3452 => $8 -longname3506 => $9 -longname1508 => $A -longname4964 => $Aa -longname1562 => $B -longname1616 => $C -longname1670 => $D -longname1724 => $E -longname1778 => $F -longname1832 => $G -longname1886 => $H -longname1940 => $I -longname1994 => $J -longname2048 => $K -longname2102 => $L -longname2156 => $M -longname2210 => $N -longname2264 => $O -longname2318 => $P -longname2372 => $Q -longname2426 => $R -longname2480 => $S -longname2534 => $T -longname2588 => $U -longname2642 => $V -longname2696 => $W -longname2750 => $X -longname2804 => $Y -longname2858 => $Z -longname2912 => $_ -longname107 => $a -longname3560 => $aa -longname161 => $b -longname3614 => $ba -longname215 => $c -longname3668 => $ca -longname269 => $d -longname3722 => $da -longname323 => $e -longname3776 => $ea -longname376 => $f -longname3830 => $fa -longname430 => $g -longname3884 => $ga -longname484 => $h -longname3938 => $ha -longname538 => $i -longname3992 => $ia -longname592 => $j -longname4046 => $ja -longname646 => $k -longname4100 => $ka -longname700 => $l -longname4154 => $la -longname754 => $m -longname4208 => $ma -longname807 => $n -longname4262 => $na -longname860 => $o -longname4316 => $oa -longname914 => $p -longname4370 => $pa -longname968 => $q -longname4424 => $qa -longname1022 => $r -longname4478 => $ra -longname1076 => $s -longname4532 => $sa -longname1130 => $t -longname4586 => $ta -longname1184 => $u -longname4640 => $ua -longname1238 => $v -longname4694 => $va -longname1292 => $w -longname4748 => $wa -longname1346 => $x -longname4802 => $xa -longname1400 => $y -longname4856 => $ya -longname1454 => $z -longname4910 => $za -longname26 => A -longname2939 => A$ -longname2993 => A0 -longname3047 => A1 -longname3101 => A2 -longname3155 => A3 -longname3209 => A4 -longname3263 => A5 -longname3317 => A6 -longname3371 => A7 -longname3425 => A8 -longname3479 => A9 -longname1481 => AA -longname4937 => AAa -longname1535 => AB -longname4991 => ABa -longname1589 => AC -longname1643 => AD -longname1697 => AE -longname1751 => AF -longname1805 => AG -longname1859 => AH -longname1913 => AI -longname1967 => AJ -longname2021 => AK -longname2075 => AL -longname2129 => AM -longname2183 => AN -longname2237 => AO -longname2291 => AP -longname2345 => AQ -longname2399 => AR -longname2453 => AS -longname2507 => AT -longname2561 => AU -longname2615 => AV -longname2669 => AW -longname2723 => AX -longname2777 => AY -longname2831 => AZ -longname2885 => A_ -longname80 => Aa -longname3533 => Aaa -longname134 => Ab -longname3587 => Aba -longname188 => Ac -longname3641 => Aca -longname242 => Ad -longname3695 => Ada -longname296 => Ae -longname3749 => Aea -longname349 => Af -longname3803 => Afa -longname403 => Ag -longname3857 => Aga -longname457 => Ah -longname3911 => Aha -longname511 => Ai -longname3965 => Aia -longname565 => Aj -longname4019 => Aja -longname619 => Ak -longname4073 => Aka -longname673 => Al -longname4127 => Ala -longname727 => Am -longname4181 => Ama -longname780 => An -longname4235 => Ana -longname833 => Ao -longname4289 => Aoa -longname887 => Ap -longname4343 => Apa -longname941 => Aq -longname4397 => Aqa -longname995 => Ar -longname4451 => Ara -longname1049 => As -longname4505 => Asa -longname1103 => At -longname4559 => Ata -longname1157 => Au -longname4613 => Aua -longname1211 => Av -longname4667 => Ava -longname1265 => Aw -longname4721 => Awa -longname1319 => Ax -longname4775 => Axa -longname1373 => Ay -longname4829 => Aya -longname1427 => Az -longname4883 => Aza -longname27 => B -longname2940 => B$ -longname2994 => B0 -longname3048 => B1 -longname3102 => B2 -longname3156 => B3 -longname3210 => B4 -longname3264 => B5 -longname3318 => B6 -longname3372 => B7 -longname3426 => B8 -longname3480 => B9 -longname1482 => BA -longname4938 => BAa -longname1536 => BB -longname4992 => BBa -longname1590 => BC -longname1644 => BD -longname1698 => BE -longname1752 => BF -longname1806 => BG -longname1860 => BH -longname1914 => BI -longname1968 => BJ -longname2022 => BK -longname2076 => BL -longname2130 => BM -longname2184 => BN -longname2238 => BO -longname2292 => BP -longname2346 => BQ -longname2400 => BR -longname2454 => BS -longname2508 => BT -longname2562 => BU -longname2616 => BV -longname2670 => BW -longname2724 => BX -longname2778 => BY -longname2832 => BZ -longname2886 => B_ -longname81 => Ba -longname3534 => Baa -longname135 => Bb -longname3588 => Bba -longname189 => Bc -longname3642 => Bca -longname243 => Bd -longname3696 => Bda -longname297 => Be -longname3750 => Bea -longname350 => Bf -longname3804 => Bfa -longname404 => Bg -longname3858 => Bga -longname458 => Bh -longname3912 => Bha -longname512 => Bi -longname3966 => Bia -longname566 => Bj -longname4020 => Bja -longname620 => Bk -longname4074 => Bka -longname674 => Bl -longname4128 => Bla -longname728 => Bm -longname4182 => Bma -longname781 => Bn -longname4236 => Bna -longname834 => Bo -longname4290 => Boa -longname888 => Bp -longname4344 => Bpa -longname942 => Bq -longname4398 => Bqa -longname996 => Br -longname4452 => Bra -longname1050 => Bs -longname4506 => Bsa -longname1104 => Bt -longname4560 => Bta -longname1158 => Bu -longname4614 => Bua -longname1212 => Bv -longname4668 => Bva -longname1266 => Bw -longname4722 => Bwa -longname1320 => Bx -longname4776 => Bxa -longname1374 => By -longname4830 => Bya -longname1428 => Bz -longname4884 => Bza -longname28 => C -longname2941 => C$ -longname2995 => C0 -longname3049 => C1 -longname3103 => C2 -longname3157 => C3 -longname3211 => C4 -longname3265 => C5 -longname3319 => C6 -longname3373 => C7 -longname3427 => C8 -longname3481 => C9 -longname1483 => CA -longname4939 => CAa -longname1537 => CB -longname4993 => CBa -longname1591 => CC -longname1645 => CD -longname1699 => CE -longname1753 => CF -longname1807 => CG -longname1861 => CH -longname1915 => CI -longname1969 => CJ -longname2023 => CK -longname2077 => CL -longname2131 => CM -longname2185 => CN -longname2239 => CO -longname2293 => CP -longname2347 => CQ -longname2401 => CR -longname2455 => CS -longname2509 => CT -longname2563 => CU -longname2617 => CV -longname2671 => CW -longname2725 => CX -longname2779 => CY -longname2833 => CZ -longname2887 => C_ -longname82 => Ca -longname3535 => Caa -longname136 => Cb -longname3589 => Cba -longname190 => Cc -longname3643 => Cca -longname244 => Cd -longname3697 => Cda -longname298 => Ce -longname3751 => Cea -longname351 => Cf -longname3805 => Cfa -longname405 => Cg -longname3859 => Cga -longname459 => Ch -longname3913 => Cha -longname513 => Ci -longname3967 => Cia -longname567 => Cj -longname4021 => Cja -longname621 => Ck -longname4075 => Cka -longname675 => Cl -longname4129 => Cla -longname729 => Cm -longname4183 => Cma -longname782 => Cn -longname4237 => Cna -longname835 => Co -longname4291 => Coa -longname889 => Cp -longname4345 => Cpa -longname943 => Cq -longname4399 => Cqa -longname997 => Cr -longname4453 => Cra -longname1051 => Cs -longname4507 => Csa -longname1105 => Ct -longname4561 => Cta -longname1159 => Cu -longname4615 => Cua -longname1213 => Cv -longname4669 => Cva -longname1267 => Cw -longname4723 => Cwa -longname1321 => Cx -longname4777 => Cxa -longname1375 => Cy -longname4831 => Cya -longname1429 => Cz -longname4885 => Cza -longname29 => D -longname2942 => D$ -longname2996 => D0 -longname3050 => D1 -longname3104 => D2 -longname3158 => D3 -longname3212 => D4 -longname3266 => D5 -longname3320 => D6 -longname3374 => D7 -longname3428 => D8 -longname3482 => D9 -longname1484 => DA -longname4940 => DAa -longname1538 => DB -longname4994 => DBa -longname1592 => DC -longname1646 => DD -longname1700 => DE -longname1754 => DF -longname1808 => DG -longname1862 => DH -longname1916 => DI -longname1970 => DJ -longname2024 => DK -longname2078 => DL -longname2132 => DM -longname2186 => DN -longname2240 => DO -longname2294 => DP -longname2348 => DQ -longname2402 => DR -longname2456 => DS -longname2510 => DT -longname2564 => DU -longname2618 => DV -longname2672 => DW -longname2726 => DX -longname2780 => DY -longname2834 => DZ -longname2888 => D_ -longname83 => Da -longname3536 => Daa -longname137 => Db -longname3590 => Dba -longname191 => Dc -longname3644 => Dca -longname245 => Dd -longname3698 => Dda -longname299 => De -longname3752 => Dea -longname352 => Df -longname3806 => Dfa -longname406 => Dg -longname3860 => Dga -longname460 => Dh -longname3914 => Dha -longname514 => Di -longname3968 => Dia -longname568 => Dj -longname4022 => Dja -longname622 => Dk -longname4076 => Dka -longname676 => Dl -longname4130 => Dla -longname730 => Dm -longname4184 => Dma -longname783 => Dn -longname4238 => Dna -longname836 => Do -longname4292 => Doa -longname890 => Dp -longname4346 => Dpa -longname944 => Dq -longname4400 => Dqa -longname998 => Dr -longname4454 => Dra -longname1052 => Ds -longname4508 => Dsa -longname1106 => Dt -longname4562 => Dta -longname1160 => Du -longname4616 => Dua -longname1214 => Dv -longname4670 => Dva -longname1268 => Dw -longname4724 => Dwa -longname1322 => Dx -longname4778 => Dxa -longname1376 => Dy -longname4832 => Dya -longname1430 => Dz -longname4886 => Dza -longname30 => E -longname2943 => E$ -longname2997 => E0 -longname3051 => E1 -longname3105 => E2 -longname3159 => E3 -longname3213 => E4 -longname3267 => E5 -longname3321 => E6 -longname3375 => E7 -longname3429 => E8 -longname3483 => E9 -longname1485 => EA -longname4941 => EAa -longname1539 => EB -longname4995 => EBa -longname1593 => EC -longname1647 => ED -longname1701 => EE -longname1755 => EF -longname1809 => EG -longname1863 => EH -longname1917 => EI -longname1971 => EJ -longname2025 => EK -longname2079 => EL -longname2133 => EM -longname2187 => EN -longname2241 => EO -longname2295 => EP -longname2349 => EQ -longname2403 => ER -longname2457 => ES -longname2511 => ET -longname2565 => EU -longname2619 => EV -longname2673 => EW -longname2727 => EX -longname2781 => EY -longname2835 => EZ -longname2889 => E_ -longname84 => Ea -longname3537 => Eaa -longname138 => Eb -longname3591 => Eba -longname192 => Ec -longname3645 => Eca -longname246 => Ed -longname3699 => Eda -longname300 => Ee -longname3753 => Eea -longname353 => Ef -longname3807 => Efa -longname407 => Eg -longname3861 => Ega -longname461 => Eh -longname3915 => Eha -longname515 => Ei -longname3969 => Eia -longname569 => Ej -longname4023 => Eja -longname623 => Ek -longname4077 => Eka -longname677 => El -longname4131 => Ela -longname731 => Em -longname4185 => Ema -longname784 => En -longname4239 => Ena -longname837 => Eo -longname4293 => Eoa -longname891 => Ep -longname4347 => Epa -longname945 => Eq -longname4401 => Eqa -longname999 => Er -longname4455 => Era -longname1053 => Es -longname4509 => Esa -longname1107 => Et -longname4563 => Eta -longname1161 => Eu -longname4617 => Eua -longname1215 => Ev -longname4671 => Eva -longname1269 => Ew -longname4725 => Ewa -longname1323 => Ex -longname4779 => Exa -longname1377 => Ey -longname4833 => Eya -longname1431 => Ez -longname4887 => Eza -longname31 => F -longname2944 => F$ -longname2998 => F0 -longname3052 => F1 -longname3106 => F2 -longname3160 => F3 -longname3214 => F4 -longname3268 => F5 -longname3322 => F6 -longname3376 => F7 -longname3430 => F8 -longname3484 => F9 -longname1486 => FA -longname4942 => FAa -longname1540 => FB -longname4996 => FBa -longname1594 => FC -longname1648 => FD -longname1702 => FE -longname1756 => FF -longname1810 => FG -longname1864 => FH -longname1918 => FI -longname1972 => FJ -longname2026 => FK -longname2080 => FL -longname2134 => FM -longname2188 => FN -longname2242 => FO -longname2296 => FP -longname2350 => FQ -longname2404 => FR -longname2458 => FS -longname2512 => FT -longname2566 => FU -longname2620 => FV -longname2674 => FW -longname2728 => FX -longname2782 => FY -longname2836 => FZ -longname2890 => F_ -longname85 => Fa -longname3538 => Faa -longname139 => Fb -longname3592 => Fba -longname193 => Fc -longname3646 => Fca -longname247 => Fd -longname3700 => Fda -longname301 => Fe -longname3754 => Fea -longname354 => Ff -longname3808 => Ffa -longname408 => Fg -longname3862 => Fga -longname462 => Fh -longname3916 => Fha -longname516 => Fi -longname3970 => Fia -longname570 => Fj -longname4024 => Fja -longname624 => Fk -longname4078 => Fka -longname678 => Fl -longname4132 => Fla -longname732 => Fm -longname4186 => Fma -longname785 => Fn -longname4240 => Fna -longname838 => Fo -longname4294 => Foa -longname892 => Fp -longname4348 => Fpa -longname946 => Fq -longname4402 => Fqa -longname1000 => Fr -longname4456 => Fra -longname1054 => Fs -longname4510 => Fsa -longname1108 => Ft -longname4564 => Fta -longname1162 => Fu -longname4618 => Fua -longname1216 => Fv -longname4672 => Fva -longname1270 => Fw -longname4726 => Fwa -longname1324 => Fx -longname4780 => Fxa -longname1378 => Fy -longname4834 => Fya -longname1432 => Fz -longname4888 => Fza -longname32 => G -longname2945 => G$ -longname2999 => G0 -longname3053 => G1 -longname3107 => G2 -longname3161 => G3 -longname3215 => G4 -longname3269 => G5 -longname3323 => G6 -longname3377 => G7 -longname3431 => G8 -longname3485 => G9 -longname1487 => GA -longname4943 => GAa -longname1541 => GB -longname4997 => GBa -longname1595 => GC -longname1649 => GD -longname1703 => GE -longname1757 => GF -longname1811 => GG -longname1865 => GH -longname1919 => GI -longname1973 => GJ -longname2027 => GK -longname2081 => GL -longname2135 => GM -longname2189 => GN -longname2243 => GO -longname2297 => GP -longname2351 => GQ -longname2405 => GR -longname2459 => GS -longname2513 => GT -longname2567 => GU -longname2621 => GV -longname2675 => GW -longname2729 => GX -longname2783 => GY -longname2837 => GZ -longname2891 => G_ -longname86 => Ga -longname3539 => Gaa -longname140 => Gb -longname3593 => Gba -longname194 => Gc -longname3647 => Gca -longname248 => Gd -longname3701 => Gda -longname302 => Ge -longname3755 => Gea -longname355 => Gf -longname3809 => Gfa -longname409 => Gg -longname3863 => Gga -longname463 => Gh -longname3917 => Gha -longname517 => Gi -longname3971 => Gia -longname571 => Gj -longname4025 => Gja -longname625 => Gk -longname4079 => Gka -longname679 => Gl -longname4133 => Gla -longname733 => Gm -longname4187 => Gma -longname786 => Gn -longname4241 => Gna -longname839 => Go -longname4295 => Goa -longname893 => Gp -longname4349 => Gpa -longname947 => Gq -longname4403 => Gqa -longname1001 => Gr -longname4457 => Gra -longname1055 => Gs -longname4511 => Gsa -longname1109 => Gt -longname4565 => Gta -longname1163 => Gu -longname4619 => Gua -longname1217 => Gv -longname4673 => Gva -longname1271 => Gw -longname4727 => Gwa -longname1325 => Gx -longname4781 => Gxa -longname1379 => Gy -longname4835 => Gya -longname1433 => Gz -longname4889 => Gza -longname33 => H -longname2946 => H$ -longname3000 => H0 -longname3054 => H1 -longname3108 => H2 -longname3162 => H3 -longname3216 => H4 -longname3270 => H5 -longname3324 => H6 -longname3378 => H7 -longname3432 => H8 -longname3486 => H9 -longname1488 => HA -longname4944 => HAa -longname1542 => HB -longname4998 => HBa -longname1596 => HC -longname1650 => HD -longname1704 => HE -longname1758 => HF -longname1812 => HG -longname1866 => HH -longname1920 => HI -longname1974 => HJ -longname2028 => HK -longname2082 => HL -longname2136 => HM -longname2190 => HN -longname2244 => HO -longname2298 => HP -longname2352 => HQ -longname2406 => HR -longname2460 => HS -longname2514 => HT -longname2568 => HU -longname2622 => HV -longname2676 => HW -longname2730 => HX -longname2784 => HY -longname2838 => HZ -longname2892 => H_ -longname87 => Ha -longname3540 => Haa -longname141 => Hb -longname3594 => Hba -longname195 => Hc -longname3648 => Hca -longname249 => Hd -longname3702 => Hda -longname303 => He -longname3756 => Hea -longname356 => Hf -longname3810 => Hfa -longname410 => Hg -longname3864 => Hga -longname464 => Hh -longname3918 => Hha -longname518 => Hi -longname3972 => Hia -longname572 => Hj -longname4026 => Hja -longname626 => Hk -longname4080 => Hka -longname680 => Hl -longname4134 => Hla -longname734 => Hm -longname4188 => Hma -longname787 => Hn -longname4242 => Hna -longname840 => Ho -longname4296 => Hoa -longname894 => Hp -longname4350 => Hpa -longname948 => Hq -longname4404 => Hqa -longname1002 => Hr -longname4458 => Hra -longname1056 => Hs -longname4512 => Hsa -longname1110 => Ht -longname4566 => Hta -longname1164 => Hu -longname4620 => Hua -longname1218 => Hv -longname4674 => Hva -longname1272 => Hw -longname4728 => Hwa -longname1326 => Hx -longname4782 => Hxa -longname1380 => Hy -longname4836 => Hya -longname1434 => Hz -longname4890 => Hza -longname34 => I -longname2947 => I$ -longname3001 => I0 -longname3055 => I1 -longname3109 => I2 -longname3163 => I3 -longname3217 => I4 -longname3271 => I5 -longname3325 => I6 -longname3379 => I7 -longname3433 => I8 -longname3487 => I9 -longname1489 => IA -longname4945 => IAa -longname1543 => IB -longname4999 => IBa -longname1597 => IC -longname1651 => ID -longname1705 => IE -longname1759 => IF -longname1813 => IG -longname1867 => IH -longname1921 => II -longname1975 => IJ -longname2029 => IK -longname2083 => IL -longname2137 => IM -longname2191 => IN -longname2245 => IO -longname2299 => IP -longname2353 => IQ -longname2407 => IR -longname2461 => IS -longname2515 => IT -longname2569 => IU -longname2623 => IV -longname2677 => IW -longname2731 => IX -longname2785 => IY -longname2839 => IZ -longname2893 => I_ -longname88 => Ia -longname3541 => Iaa -longname142 => Ib -longname3595 => Iba -longname196 => Ic -longname3649 => Ica -longname250 => Id -longname3703 => Ida -longname304 => Ie -longname3757 => Iea -longname357 => If -longname3811 => Ifa -longname411 => Ig -longname3865 => Iga -longname465 => Ih -longname3919 => Iha -longname519 => Ii -longname3973 => Iia -longname573 => Ij -longname4027 => Ija -longname627 => Ik -longname4081 => Ika -longname681 => Il -longname4135 => Ila -longname735 => Im -longname4189 => Ima -longname788 => In -longname4243 => Ina -longname841 => Io -longname4297 => Ioa -longname895 => Ip -longname4351 => Ipa -longname949 => Iq -longname4405 => Iqa -longname1003 => Ir -longname4459 => Ira -longname1057 => Is -longname4513 => Isa -longname1111 => It -longname4567 => Ita -longname1165 => Iu -longname4621 => Iua -longname1219 => Iv -longname4675 => Iva -longname1273 => Iw -longname4729 => Iwa -longname1327 => Ix -longname4783 => Ixa -longname1381 => Iy -longname4837 => Iya -longname1435 => Iz -longname4891 => Iza -longname35 => J -longname2948 => J$ -longname3002 => J0 -longname3056 => J1 -longname3110 => J2 -longname3164 => J3 -longname3218 => J4 -longname3272 => J5 -longname3326 => J6 -longname3380 => J7 -longname3434 => J8 -longname3488 => J9 -longname1490 => JA -longname4946 => JAa -longname1544 => JB -eventname1 => JBa -longname1598 => JC -longname1652 => JD -longname1706 => JE -longname1760 => JF -longname1814 => JG -longname1868 => JH -longname1922 => JI -longname1976 => JJ -longname2030 => JK -longname2084 => JL -longname2138 => JM -longname2192 => JN -longname2246 => JO -longname2300 => JP -longname2354 => JQ -longname2408 => JR -longname2462 => JS -longname2516 => JT -longname2570 => JU -longname2624 => JV -longname2678 => JW -longname2732 => JX -longname2786 => JY -longname2840 => JZ -longname2894 => J_ -longname89 => Ja -longname3542 => Jaa -longname143 => Jb -longname3596 => Jba -longname197 => Jc -longname3650 => Jca -longname251 => Jd -longname3704 => Jda -longname305 => Je -longname3758 => Jea -longname358 => Jf -longname3812 => Jfa -longname412 => Jg -longname3866 => Jga -longname466 => Jh -longname3920 => Jha -longname520 => Ji -longname3974 => Jia -longname574 => Jj -longname4028 => Jja -longname628 => Jk -longname4082 => Jka -longname682 => Jl -longname4136 => Jla -longname736 => Jm -longname4190 => Jma -longname789 => Jn -longname4244 => Jna -longname842 => Jo -longname4298 => Joa -longname896 => Jp -longname4352 => Jpa -longname950 => Jq -longname4406 => Jqa -longname1004 => Jr -longname4460 => Jra -longname1058 => Js -longname4514 => Jsa -longname1112 => Jt -longname4568 => Jta -longname1166 => Ju -longname4622 => Jua -longname1220 => Jv -longname4676 => Jva -longname1274 => Jw -longname4730 => Jwa -longname1328 => Jx -longname4784 => Jxa -longname1382 => Jy -longname4838 => Jya -longname1436 => Jz -longname4892 => Jza -longname36 => K -longname2949 => K$ -longname3003 => K0 -longname3057 => K1 -longname3111 => K2 -longname3165 => K3 -longname3219 => K4 -longname3273 => K5 -longname3327 => K6 -longname3381 => K7 -longname3435 => K8 -longname3489 => K9 -longname1491 => KA -longname4947 => KAa -longname1545 => KB -longname1599 => KC -longname1653 => KD -longname1707 => KE -longname1761 => KF -longname1815 => KG -longname1869 => KH -longname1923 => KI -longname1977 => KJ -longname2031 => KK -longname2085 => KL -longname2139 => KM -longname2193 => KN -longname2247 => KO -longname2301 => KP -longname2355 => KQ -longname2409 => KR -longname2463 => KS -longname2517 => KT -longname2571 => KU -longname2625 => KV -longname2679 => KW -longname2733 => KX -longname2787 => KY -longname2841 => KZ -longname2895 => K_ -longname90 => Ka -longname3543 => Kaa -longname144 => Kb -longname3597 => Kba -longname198 => Kc -longname3651 => Kca -longname252 => Kd -longname3705 => Kda -longname306 => Ke -longname3759 => Kea -longname359 => Kf -longname3813 => Kfa -longname413 => Kg -longname3867 => Kga -longname467 => Kh -longname3921 => Kha -longname521 => Ki -longname3975 => Kia -longname575 => Kj -longname4029 => Kja -longname629 => Kk -longname4083 => Kka -longname683 => Kl -longname4137 => Kla -longname737 => Km -longname4191 => Kma -longname790 => Kn -longname4245 => Kna -longname843 => Ko -longname4299 => Koa -longname897 => Kp -longname4353 => Kpa -longname951 => Kq -longname4407 => Kqa -longname1005 => Kr -longname4461 => Kra -longname1059 => Ks -longname4515 => Ksa -longname1113 => Kt -longname4569 => Kta -longname1167 => Ku -longname4623 => Kua -longname1221 => Kv -longname4677 => Kva -longname1275 => Kw -longname4731 => Kwa -longname1329 => Kx -longname4785 => Kxa -longname1383 => Ky -longname4839 => Kya -longname1437 => Kz -longname4893 => Kza -longname37 => L -longname2950 => L$ -longname3004 => L0 -longname3058 => L1 -longname3112 => L2 -longname3166 => L3 -longname3220 => L4 -longname3274 => L5 -longname3328 => L6 -longname3382 => L7 -longname3436 => L8 -longname3490 => L9 -longname1492 => LA -longname4948 => LAa -longname1546 => LB -longname1600 => LC -longname1654 => LD -longname1708 => LE -longname1762 => LF -longname1816 => LG -longname1870 => LH -longname1924 => LI -longname1978 => LJ -longname2032 => LK -longname2086 => LL -longname2140 => LM -longname2194 => LN -longname2248 => LO -longname2302 => LP -longname2356 => LQ -longname2410 => LR -longname2464 => LS -longname2518 => LT -longname2572 => LU -longname2626 => LV -longname2680 => LW -longname2734 => LX -longname2788 => LY -longname2842 => LZ -longname2896 => L_ -longname91 => La -longname3544 => Laa -longname145 => Lb -longname3598 => Lba -longname199 => Lc -longname3652 => Lca -longname253 => Ld -longname3706 => Lda -longname307 => Le -longname3760 => Lea -longname360 => Lf -longname3814 => Lfa -longname414 => Lg -longname3868 => Lga -longname468 => Lh -longname3922 => Lha -longname522 => Li -longname3976 => Lia -longname576 => Lj -longname4030 => Lja -longname630 => Lk -longname4084 => Lka -longname684 => Ll -longname4138 => Lla -longname738 => Lm -longname4192 => Lma -longname791 => Ln -longname4246 => Lna -longname844 => Lo -longname4300 => Loa -longname898 => Lp -longname4354 => Lpa -longname952 => Lq -longname4408 => Lqa -longname1006 => Lr -longname4462 => Lra -longname1060 => Ls -longname4516 => Lsa -longname1114 => Lt -longname4570 => Lta -longname1168 => Lu -longname4624 => Lua -longname1222 => Lv -longname4678 => Lva -longname1276 => Lw -longname4732 => Lwa -longname1330 => Lx -longname4786 => Lxa -longname1384 => Ly -longname4840 => Lya -longname1438 => Lz -longname4894 => Lza -longname38 => M -longname2951 => M$ -longname3005 => M0 -longname3059 => M1 -longname3113 => M2 -longname3167 => M3 -longname3221 => M4 -longname3275 => M5 -longname3329 => M6 -longname3383 => M7 -longname3437 => M8 -longname3491 => M9 -longname1493 => MA -longname4949 => MAa -longname1547 => MB -longname1601 => MC -longname1655 => MD -longname1709 => ME -longname1763 => MF -longname1817 => MG -longname1871 => MH -longname1925 => MI -longname1979 => MJ -longname2033 => MK -longname2087 => ML -longname2141 => MM -longname2195 => MN -longname2249 => MO -longname2303 => MP -longname2357 => MQ -longname2411 => MR -longname2465 => MS -longname2519 => MT -longname2573 => MU -longname2627 => MV -longname2681 => MW -longname2735 => MX -longname2789 => MY -longname2843 => MZ -longname2897 => M_ -longname92 => Ma -longname3545 => Maa -longname146 => Mb -longname3599 => Mba -longname200 => Mc -longname3653 => Mca -longname254 => Md -longname3707 => Mda -longname308 => Me -longname3761 => Mea -longname361 => Mf -longname3815 => Mfa -longname415 => Mg -longname3869 => Mga -longname469 => Mh -longname3923 => Mha -longname523 => Mi -longname3977 => Mia -longname577 => Mj -longname4031 => Mja -longname631 => Mk -longname4085 => Mka -longname685 => Ml -longname4139 => Mla -longname739 => Mm -longname4193 => Mma -longname792 => Mn -longname4247 => Mna -longname845 => Mo -longname4301 => Moa -longname899 => Mp -longname4355 => Mpa -longname953 => Mq -longname4409 => Mqa -longname1007 => Mr -longname4463 => Mra -longname1061 => Ms -longname4517 => Msa -longname1115 => Mt -longname4571 => Mta -longname1169 => Mu -longname4625 => Mua -longname1223 => Mv -longname4679 => Mva -longname1277 => Mw -longname4733 => Mwa -longname1331 => Mx -longname4787 => Mxa -longname1385 => My -longname4841 => Mya -longname1439 => Mz -longname4895 => Mza -longname39 => N -longname2952 => N$ -longname3006 => N0 -longname3060 => N1 -longname3114 => N2 -longname3168 => N3 -longname3222 => N4 -longname3276 => N5 -longname3330 => N6 -longname3384 => N7 -longname3438 => N8 -longname3492 => N9 -longname1494 => NA -longname4950 => NAa -longname1548 => NB -longname1602 => NC -longname1656 => ND -longname1710 => NE -longname1764 => NF -longname1818 => NG -longname1872 => NH -longname1926 => NI -longname1980 => NJ -longname2034 => NK -longname2088 => NL -longname2142 => NM -longname2196 => NN -longname2250 => NO -longname2304 => NP -longname2358 => NQ -longname2412 => NR -longname2466 => NS -longname2520 => NT -longname2574 => NU -longname2628 => NV -longname2682 => NW -longname2736 => NX -longname2790 => NY -longname2844 => NZ -longname2898 => N_ -longname93 => Na -longname3546 => Naa -longname147 => Nb -longname3600 => Nba -longname201 => Nc -longname3654 => Nca -longname255 => Nd -longname3708 => Nda -longname309 => Ne -longname3762 => Nea -longname362 => Nf -longname3816 => Nfa -longname416 => Ng -longname3870 => Nga -longname470 => Nh -longname3924 => Nha -longname524 => Ni -longname3978 => Nia -longname578 => Nj -longname4032 => Nja -longname632 => Nk -longname4086 => Nka -longname686 => Nl -longname4140 => Nla -longname740 => Nm -longname4194 => Nma -longname793 => Nn -longname4248 => Nna -longname846 => No -longname4302 => Noa -longname900 => Np -longname4356 => Npa -longname954 => Nq -longname4410 => Nqa -longname1008 => Nr -longname4464 => Nra -longname1062 => Ns -longname4518 => Nsa -longname1116 => Nt -longname4572 => Nta -longname1170 => Nu -longname4626 => Nua -longname1224 => Nv -longname4680 => Nva -longname1278 => Nw -longname4734 => Nwa -longname1332 => Nx -longname4788 => Nxa -longname1386 => Ny -longname4842 => Nya -longname1440 => Nz -longname4896 => Nza -longname40 => O -longname2953 => O$ -longname3007 => O0 -longname3061 => O1 -longname3115 => O2 -longname3169 => O3 -longname3223 => O4 -longname3277 => O5 -longname3331 => O6 -longname3385 => O7 -longname3439 => O8 -longname3493 => O9 -longname1495 => OA -longname4951 => OAa -longname1549 => OB -longname1603 => OC -longname1657 => OD -longname1711 => OE -longname1765 => OF -longname1819 => OG -longname1873 => OH -longname1927 => OI -longname1981 => OJ -longname2035 => OK -longname2089 => OL -longname2143 => OM -longname2197 => ON -longname2251 => OO -longname2305 => OP -longname2359 => OQ -longname2413 => OR -longname2467 => OS -longname2521 => OT -longname2575 => OU -longname2629 => OV -longname2683 => OW -longname2737 => OX -longname2791 => OY -longname2845 => OZ -longname2899 => O_ -longname94 => Oa -longname3547 => Oaa -longname148 => Ob -longname3601 => Oba -longname202 => Oc -longname3655 => Oca -longname256 => Od -longname3709 => Oda -longname310 => Oe -longname3763 => Oea -longname363 => Of -longname3817 => Ofa -longname417 => Og -longname3871 => Oga -longname471 => Oh -longname3925 => Oha -longname525 => Oi -longname3979 => Oia -longname579 => Oj -longname4033 => Oja -longname633 => Ok -longname4087 => Oka -longname687 => Ol -longname4141 => Ola -longname741 => Om -longname4195 => Oma -longname794 => On -longname4249 => Ona -longname847 => Oo -longname4303 => Ooa -longname901 => Op -longname4357 => Opa -longname955 => Oq -longname4411 => Oqa -longname1009 => Or -longname4465 => Ora -longname1063 => Os -longname4519 => Osa -longname1117 => Ot -longname4573 => Ota -longname1171 => Ou -longname4627 => Oua -longname1225 => Ov -longname4681 => Ova -longname1279 => Ow -longname4735 => Owa -longname1333 => Ox -longname4789 => Oxa -longname1387 => Oy -longname4843 => Oya -longname1441 => Oz -longname4897 => Oza -longname41 => P -longname2954 => P$ -longname3008 => P0 -longname3062 => P1 -longname3116 => P2 -longname3170 => P3 -longname3224 => P4 -longname3278 => P5 -longname3332 => P6 -longname3386 => P7 -longname3440 => P8 -longname3494 => P9 -longname1496 => PA -longname4952 => PAa -longname1550 => PB -longname1604 => PC -longname1658 => PD -longname1712 => PE -longname1766 => PF -longname1820 => PG -longname1874 => PH -longname1928 => PI -longname1982 => PJ -longname2036 => PK -longname2090 => PL -longname2144 => PM -longname2198 => PN -longname2252 => PO -longname2306 => PP -longname2360 => PQ -longname2414 => PR -longname2468 => PS -longname2522 => PT -longname2576 => PU -longname2630 => PV -longname2684 => PW -longname2738 => PX -longname2792 => PY -longname2846 => PZ -longname2900 => P_ -longname95 => Pa -longname3548 => Paa -longname149 => Pb -longname3602 => Pba -longname203 => Pc -longname3656 => Pca -longname257 => Pd -longname3710 => Pda -longname311 => Pe -longname3764 => Pea -longname364 => Pf -longname3818 => Pfa -longname418 => Pg -longname3872 => Pga -longname472 => Ph -longname3926 => Pha -longname526 => Pi -longname3980 => Pia -longname580 => Pj -longname4034 => Pja -longname634 => Pk -longname4088 => Pka -longname688 => Pl -longname4142 => Pla -longname742 => Pm -longname4196 => Pma -longname795 => Pn -longname4250 => Pna -longname848 => Po -longname4304 => Poa -longname902 => Pp -longname4358 => Ppa -longname956 => Pq -longname4412 => Pqa -longname1010 => Pr -longname4466 => Pra -longname1064 => Ps -longname4520 => Psa -longname1118 => Pt -longname4574 => Pta -longname1172 => Pu -longname4628 => Pua -longname1226 => Pv -longname4682 => Pva -longname1280 => Pw -longname4736 => Pwa -longname1334 => Px -longname4790 => Pxa -longname1388 => Py -longname4844 => Pya -longname1442 => Pz -longname4898 => Pza -longname42 => Q -longname2955 => Q$ -longname3009 => Q0 -longname3063 => Q1 -longname3117 => Q2 -longname3171 => Q3 -longname3225 => Q4 -longname3279 => Q5 -longname3333 => Q6 -longname3387 => Q7 -longname3441 => Q8 -longname3495 => Q9 -longname1497 => QA -longname4953 => QAa -longname1551 => QB -longname1605 => QC -longname1659 => QD -longname1713 => QE -longname1767 => QF -longname1821 => QG -longname1875 => QH -longname1929 => QI -longname1983 => QJ -longname2037 => QK -longname2091 => QL -longname2145 => QM -longname2199 => QN -longname2253 => QO -longname2307 => QP -longname2361 => QQ -longname2415 => QR -longname2469 => QS -longname2523 => QT -longname2577 => QU -longname2631 => QV -longname2685 => QW -longname2739 => QX -longname2793 => QY -longname2847 => QZ -longname2901 => Q_ -longname96 => Qa -longname3549 => Qaa -longname150 => Qb -longname3603 => Qba -longname204 => Qc -longname3657 => Qca -longname258 => Qd -longname3711 => Qda -longname312 => Qe -longname3765 => Qea -longname365 => Qf -longname3819 => Qfa -longname419 => Qg -longname3873 => Qga -longname473 => Qh -longname3927 => Qha -longname527 => Qi -longname3981 => Qia -longname581 => Qj -longname4035 => Qja -longname635 => Qk -longname4089 => Qka -longname689 => Ql -longname4143 => Qla -longname743 => Qm -longname4197 => Qma -longname796 => Qn -longname4251 => Qna -longname849 => Qo -longname4305 => Qoa -longname903 => Qp -longname4359 => Qpa -longname957 => Qq -longname4413 => Qqa -longname1011 => Qr -longname4467 => Qra -longname1065 => Qs -longname4521 => Qsa -longname1119 => Qt -longname4575 => Qta -longname1173 => Qu -longname4629 => Qua -longname1227 => Qv -longname4683 => Qva -longname1281 => Qw -longname4737 => Qwa -longname1335 => Qx -longname4791 => Qxa -longname1389 => Qy -longname4845 => Qya -longname1443 => Qz -longname4899 => Qza -longname43 => R -longname2956 => R$ -longname3010 => R0 -longname3064 => R1 -longname3118 => R2 -longname3172 => R3 -longname3226 => R4 -longname3280 => R5 -longname3334 => R6 -longname3388 => R7 -longname3442 => R8 -longname3496 => R9 -longname1498 => RA -longname4954 => RAa -longname1552 => RB -longname1606 => RC -longname1660 => RD -longname1714 => RE -longname1768 => RF -longname1822 => RG -longname1876 => RH -longname1930 => RI -longname1984 => RJ -longname2038 => RK -longname2092 => RL -longname2146 => RM -longname2200 => RN -longname2254 => RO -longname2308 => RP -longname2362 => RQ -longname2416 => RR -longname2470 => RS -longname2524 => RT -longname2578 => RU -longname2632 => RV -longname2686 => RW -longname2740 => RX -longname2794 => RY -longname2848 => RZ -longname2902 => R_ -longname97 => Ra -longname3550 => Raa -longname151 => Rb -longname3604 => Rba -longname205 => Rc -longname3658 => Rca -longname259 => Rd -longname3712 => Rda -longname313 => Re -longname3766 => Rea -longname366 => Rf -longname3820 => Rfa -longname420 => Rg -longname3874 => Rga -longname474 => Rh -longname3928 => Rha -longname528 => Ri -longname3982 => Ria -longname582 => Rj -longname4036 => Rja -longname636 => Rk -longname4090 => Rka -longname690 => Rl -longname4144 => Rla -longname744 => Rm -longname4198 => Rma -longname797 => Rn -longname4252 => Rna -longname850 => Ro -longname4306 => Roa -longname904 => Rp -longname4360 => Rpa -longname958 => Rq -longname4414 => Rqa -longname1012 => Rr -longname4468 => Rra -longname1066 => Rs -longname4522 => Rsa -longname1120 => Rt -longname4576 => Rta -longname1174 => Ru -longname4630 => Rua -longname1228 => Rv -longname4684 => Rva -longname1282 => Rw -longname4738 => Rwa -longname1336 => Rx -longname4792 => Rxa -longname1390 => Ry -longname4846 => Rya -longname1444 => Rz -longname4900 => Rza -longname44 => S -longname2957 => S$ -longname3011 => S0 -longname3065 => S1 -longname3119 => S2 -longname3173 => S3 -longname3227 => S4 -longname3281 => S5 -longname3335 => S6 -longname3389 => S7 -longname3443 => S8 -longname3497 => S9 -longname1499 => SA -longname4955 => SAa -longname1553 => SB -longname1607 => SC -longname1661 => SD -longname1715 => SE -longname1769 => SF -longname1823 => SG -longname1877 => SH -longname1931 => SI -longname1985 => SJ -longname2039 => SK -longname2093 => SL -longname2147 => SM -longname2201 => SN -longname2255 => SO -longname2309 => SP -longname2363 => SQ -longname2417 => SR -longname2471 => SS -longname2525 => ST -longname2579 => SU -longname2633 => SV -longname2687 => SW -longname2741 => SX -longname2795 => SY -longname2849 => SZ -longname2903 => S_ -longname98 => Sa -longname3551 => Saa -longname152 => Sb -longname3605 => Sba -longname206 => Sc -longname3659 => Sca -longname260 => Sd -longname3713 => Sda -longname314 => Se -longname3767 => Sea -longname367 => Sf -longname3821 => Sfa -longname421 => Sg -longname3875 => Sga -longname475 => Sh -longname3929 => Sha -longname529 => Si -longname3983 => Sia -longname583 => Sj -longname4037 => Sja -longname637 => Sk -longname4091 => Ska -longname691 => Sl -longname4145 => Sla -longname745 => Sm -longname4199 => Sma -longname798 => Sn -longname4253 => Sna -longname851 => So -longname4307 => Soa -longname905 => Sp -longname4361 => Spa -longname959 => Sq -longname4415 => Sqa -longname1013 => Sr -longname4469 => Sra -longname1067 => Ss -longname4523 => Ssa -longname1121 => St -longname4577 => Sta -longname1175 => Su -longname4631 => Sua -longname1229 => Sv -longname4685 => Sva -longname1283 => Sw -longname4739 => Swa -longname1337 => Sx -longname4793 => Sxa -longname1391 => Sy -longname4847 => Sya -longname1445 => Sz -longname4901 => Sza -longname45 => T -longname2958 => T$ -longname3012 => T0 -longname3066 => T1 -longname3120 => T2 -longname3174 => T3 -longname3228 => T4 -longname3282 => T5 -longname3336 => T6 -longname3390 => T7 -longname3444 => T8 -longname3498 => T9 -longname1500 => TA -longname4956 => TAa -longname1554 => TB -longname1608 => TC -longname1662 => TD -longname1716 => TE -longname1770 => TF -longname1824 => TG -longname1878 => TH -longname1932 => TI -longname1986 => TJ -longname2040 => TK -longname2094 => TL -longname2148 => TM -longname2202 => TN -longname2256 => TO -longname2310 => TP -longname2364 => TQ -longname2418 => TR -longname2472 => TS -longname2526 => TT -longname2580 => TU -longname2634 => TV -longname2688 => TW -longname2742 => TX -longname2796 => TY -longname2850 => TZ -longname2904 => T_ -longname99 => Ta -longname3552 => Taa -longname153 => Tb -longname3606 => Tba -longname207 => Tc -longname3660 => Tca -longname261 => Td -longname3714 => Tda -longname315 => Te -longname3768 => Tea -longname368 => Tf -longname3822 => Tfa -longname422 => Tg -longname3876 => Tga -longname476 => Th -longname3930 => Tha -longname530 => Ti -longname3984 => Tia -longname584 => Tj -longname4038 => Tja -longname638 => Tk -longname4092 => Tka -longname692 => Tl -longname4146 => Tla -longname746 => Tm -longname4200 => Tma -longname799 => Tn -longname4254 => Tna -longname852 => To -longname4308 => Toa -longname906 => Tp -longname4362 => Tpa -longname960 => Tq -longname4416 => Tqa -longname1014 => Tr -longname4470 => Tra -longname1068 => Ts -longname4524 => Tsa -longname1122 => Tt -longname4578 => Tta -longname1176 => Tu -longname4632 => Tua -longname1230 => Tv -longname4686 => Tva -longname1284 => Tw -longname4740 => Twa -longname1338 => Tx -longname4794 => Txa -longname1392 => Ty -longname4848 => Tya -longname1446 => Tz -longname4902 => Tza -longname46 => U -longname2959 => U$ -longname3013 => U0 -longname3067 => U1 -longname3121 => U2 -longname3175 => U3 -longname3229 => U4 -longname3283 => U5 -longname3337 => U6 -longname3391 => U7 -longname3445 => U8 -longname3499 => U9 -longname1501 => UA -longname4957 => UAa -longname1555 => UB -longname1609 => UC -longname1663 => UD -longname1717 => UE -longname1771 => UF -longname1825 => UG -longname1879 => UH -longname1933 => UI -longname1987 => UJ -longname2041 => UK -longname2095 => UL -longname2149 => UM -longname2203 => UN -longname2257 => UO -longname2311 => UP -longname2365 => UQ -longname2419 => UR -longname2473 => US -longname2527 => UT -longname2581 => UU -longname2635 => UV -longname2689 => UW -longname2743 => UX -longname2797 => UY -longname2851 => UZ -longname2905 => U_ -longname100 => Ua -longname3553 => Uaa -longname154 => Ub -longname3607 => Uba -longname208 => Uc -longname3661 => Uca -longname262 => Ud -longname3715 => Uda -longname316 => Ue -longname3769 => Uea -longname369 => Uf -longname3823 => Ufa -longname423 => Ug -longname3877 => Uga -longname477 => Uh -longname3931 => Uha -longname531 => Ui -longname3985 => Uia -longname585 => Uj -longname4039 => Uja -longname639 => Uk -longname4093 => Uka -longname693 => Ul -longname4147 => Ula -longname747 => Um -longname4201 => Uma -longname800 => Un -longname4255 => Una -longname853 => Uo -longname4309 => Uoa -longname907 => Up -longname4363 => Upa -longname961 => Uq -longname4417 => Uqa -longname1015 => Ur -longname4471 => Ura -longname1069 => Us -longname4525 => Usa -longname1123 => Ut -longname4579 => Uta -longname1177 => Uu -longname4633 => Uua -longname1231 => Uv -longname4687 => Uva -longname1285 => Uw -longname4741 => Uwa -longname1339 => Ux -longname4795 => Uxa -longname1393 => Uy -longname4849 => Uya -longname1447 => Uz -longname4903 => Uza -longname47 => V -longname2960 => V$ -longname3014 => V0 -longname3068 => V1 -longname3122 => V2 -longname3176 => V3 -longname3230 => V4 -longname3284 => V5 -longname3338 => V6 -longname3392 => V7 -longname3446 => V8 -longname3500 => V9 -longname1502 => VA -longname4958 => VAa -longname1556 => VB -longname1610 => VC -longname1664 => VD -longname1718 => VE -longname1772 => VF -longname1826 => VG -longname1880 => VH -longname1934 => VI -longname1988 => VJ -longname2042 => VK -longname2096 => VL -longname2150 => VM -longname2204 => VN -longname2258 => VO -longname2312 => VP -longname2366 => VQ -longname2420 => VR -longname2474 => VS -longname2528 => VT -longname2582 => VU -longname2636 => VV -longname2690 => VW -longname2744 => VX -longname2798 => VY -longname2852 => VZ -longname2906 => V_ -longname101 => Va -longname3554 => Vaa -longname155 => Vb -longname3608 => Vba -longname209 => Vc -longname3662 => Vca -longname263 => Vd -longname3716 => Vda -longname317 => Ve -longname3770 => Vea -longname370 => Vf -longname3824 => Vfa -longname424 => Vg -longname3878 => Vga -longname478 => Vh -longname3932 => Vha -longname532 => Vi -longname3986 => Via -longname586 => Vj -longname4040 => Vja -longname640 => Vk -longname4094 => Vka -longname694 => Vl -longname4148 => Vla -longname748 => Vm -longname4202 => Vma -longname801 => Vn -longname4256 => Vna -longname854 => Vo -longname4310 => Voa -longname908 => Vp -longname4364 => Vpa -longname962 => Vq -longname4418 => Vqa -longname1016 => Vr -longname4472 => Vra -longname1070 => Vs -longname4526 => Vsa -longname1124 => Vt -longname4580 => Vta -longname1178 => Vu -longname4634 => Vua -longname1232 => Vv -longname4688 => Vva -longname1286 => Vw -longname4742 => Vwa -longname1340 => Vx -longname4796 => Vxa -longname1394 => Vy -longname4850 => Vya -longname1448 => Vz -longname4904 => Vza -longname48 => W -longname2961 => W$ -longname3015 => W0 -longname3069 => W1 -longname3123 => W2 -longname3177 => W3 -longname3231 => W4 -longname3285 => W5 -longname3339 => W6 -longname3393 => W7 -longname3447 => W8 -longname3501 => W9 -longname1503 => WA -longname4959 => WAa -longname1557 => WB -longname1611 => WC -longname1665 => WD -longname1719 => WE -longname1773 => WF -longname1827 => WG -longname1881 => WH -longname1935 => WI -longname1989 => WJ -longname2043 => WK -longname2097 => WL -longname2151 => WM -longname2205 => WN -longname2259 => WO -longname2313 => WP -longname2367 => WQ -longname2421 => WR -longname2475 => WS -longname2529 => WT -longname2583 => WU -longname2637 => WV -longname2691 => WW -longname2745 => WX -longname2799 => WY -longname2853 => WZ -longname2907 => W_ -longname102 => Wa -longname3555 => Waa -longname156 => Wb -longname3609 => Wba -longname210 => Wc -longname3663 => Wca -longname264 => Wd -longname3717 => Wda -longname318 => We -longname3771 => Wea -longname371 => Wf -longname3825 => Wfa -longname425 => Wg -longname3879 => Wga -longname479 => Wh -longname3933 => Wha -longname533 => Wi -longname3987 => Wia -longname587 => Wj -longname4041 => Wja -longname641 => Wk -longname4095 => Wka -longname695 => Wl -longname4149 => Wla -longname749 => Wm -longname4203 => Wma -longname802 => Wn -longname4257 => Wna -longname855 => Wo -longname4311 => Woa -longname909 => Wp -longname4365 => Wpa -longname963 => Wq -longname4419 => Wqa -longname1017 => Wr -longname4473 => Wra -longname1071 => Ws -longname4527 => Wsa -longname1125 => Wt -longname4581 => Wta -longname1179 => Wu -longname4635 => Wua -longname1233 => Wv -longname4689 => Wva -longname1287 => Ww -longname4743 => Wwa -longname1341 => Wx -longname4797 => Wxa -longname1395 => Wy -longname4851 => Wya -longname1449 => Wz -longname4905 => Wza -longname49 => X -longname2962 => X$ -longname3016 => X0 -longname3070 => X1 -longname3124 => X2 -longname3178 => X3 -longname3232 => X4 -longname3286 => X5 -longname3340 => X6 -longname3394 => X7 -longname3448 => X8 -longname3502 => X9 -longname1504 => XA -longname4960 => XAa -longname1558 => XB -longname1612 => XC -longname1666 => XD -longname1720 => XE -longname1774 => XF -longname1828 => XG -longname1882 => XH -longname1936 => XI -longname1990 => XJ -longname2044 => XK -longname2098 => XL -longname2152 => XM -longname2206 => XN -longname2260 => XO -longname2314 => XP -longname2368 => XQ -longname2422 => XR -longname2476 => XS -longname2530 => XT -longname2584 => XU -longname2638 => XV -longname2692 => XW -longname2746 => XX -longname2800 => XY -longname2854 => XZ -longname2908 => X_ -longname103 => Xa -longname3556 => Xaa -longname157 => Xb -longname3610 => Xba -longname211 => Xc -longname3664 => Xca -longname265 => Xd -longname3718 => Xda -longname319 => Xe -longname3772 => Xea -longname372 => Xf -longname3826 => Xfa -longname426 => Xg -longname3880 => Xga -longname480 => Xh -longname3934 => Xha -longname534 => Xi -longname3988 => Xia -longname588 => Xj -longname4042 => Xja -longname642 => Xk -longname4096 => Xka -longname696 => Xl -longname4150 => Xla -longname750 => Xm -longname4204 => Xma -longname803 => Xn -longname4258 => Xna -longname856 => Xo -longname4312 => Xoa -longname910 => Xp -longname4366 => Xpa -longname964 => Xq -longname4420 => Xqa -longname1018 => Xr -longname4474 => Xra -longname1072 => Xs -longname4528 => Xsa -longname1126 => Xt -longname4582 => Xta -longname1180 => Xu -longname4636 => Xua -longname1234 => Xv -longname4690 => Xva -longname1288 => Xw -longname4744 => Xwa -longname1342 => Xx -longname4798 => Xxa -longname1396 => Xy -longname4852 => Xya -longname1450 => Xz -longname4906 => Xza -longname50 => Y -longname2963 => Y$ -longname3017 => Y0 -longname3071 => Y1 -longname3125 => Y2 -longname3179 => Y3 -longname3233 => Y4 -longname3287 => Y5 -longname3341 => Y6 -longname3395 => Y7 -longname3449 => Y8 -longname3503 => Y9 -longname1505 => YA -longname4961 => YAa -longname1559 => YB -longname1613 => YC -longname1667 => YD -longname1721 => YE -longname1775 => YF -longname1829 => YG -longname1883 => YH -longname1937 => YI -longname1991 => YJ -longname2045 => YK -longname2099 => YL -longname2153 => YM -longname2207 => YN -longname2261 => YO -longname2315 => YP -longname2369 => YQ -longname2423 => YR -longname2477 => YS -longname2531 => YT -longname2585 => YU -longname2639 => YV -longname2693 => YW -longname2747 => YX -longname2801 => YY -longname2855 => YZ -longname2909 => Y_ -longname104 => Ya -longname3557 => Yaa -longname158 => Yb -longname3611 => Yba -longname212 => Yc -longname3665 => Yca -longname266 => Yd -longname3719 => Yda -longname320 => Ye -longname3773 => Yea -longname373 => Yf -longname3827 => Yfa -longname427 => Yg -longname3881 => Yga -longname481 => Yh -longname3935 => Yha -longname535 => Yi -longname3989 => Yia -longname589 => Yj -longname4043 => Yja -longname643 => Yk -longname4097 => Yka -longname697 => Yl -longname4151 => Yla -longname751 => Ym -longname4205 => Yma -longname804 => Yn -longname4259 => Yna -longname857 => Yo -longname4313 => Yoa -longname911 => Yp -longname4367 => Ypa -longname965 => Yq -longname4421 => Yqa -longname1019 => Yr -longname4475 => Yra -longname1073 => Ys -longname4529 => Ysa -longname1127 => Yt -longname4583 => Yta -longname1181 => Yu -longname4637 => Yua -longname1235 => Yv -longname4691 => Yva -longname1289 => Yw -longname4745 => Ywa -longname1343 => Yx -longname4799 => Yxa -longname1397 => Yy -longname4853 => Yya -longname1451 => Yz -longname4907 => Yza -longname51 => Z -longname2964 => Z$ -longname3018 => Z0 -longname3072 => Z1 -longname3126 => Z2 -longname3180 => Z3 -longname3234 => Z4 -longname3288 => Z5 -longname3342 => Z6 -longname3396 => Z7 -longname3450 => Z8 -longname3504 => Z9 -longname1506 => ZA -longname4962 => ZAa -longname1560 => ZB -longname1614 => ZC -longname1668 => ZD -longname1722 => ZE -longname1776 => ZF -longname1830 => ZG -longname1884 => ZH -longname1938 => ZI -longname1992 => ZJ -longname2046 => ZK -longname2100 => ZL -longname2154 => ZM -longname2208 => ZN -longname2262 => ZO -longname2316 => ZP -longname2370 => ZQ -longname2424 => ZR -longname2478 => ZS -longname2532 => ZT -longname2586 => ZU -longname2640 => ZV -longname2694 => ZW -longname2748 => ZX -longname2802 => ZY -longname2856 => ZZ -longname2910 => Z_ -longname105 => Za -longname3558 => Zaa -longname159 => Zb -longname3612 => Zba -longname213 => Zc -longname3666 => Zca -longname267 => Zd -longname3720 => Zda -longname321 => Ze -longname3774 => Zea -longname374 => Zf -longname3828 => Zfa -longname428 => Zg -longname3882 => Zga -longname482 => Zh -longname3936 => Zha -longname536 => Zi -longname3990 => Zia -longname590 => Zj -longname4044 => Zja -longname644 => Zk -longname4098 => Zka -longname698 => Zl -longname4152 => Zla -longname752 => Zm -longname4206 => Zma -longname805 => Zn -longname4260 => Zna -longname858 => Zo -longname4314 => Zoa -longname912 => Zp -longname4368 => Zpa -longname966 => Zq -longname4422 => Zqa -longname1020 => Zr -longname4476 => Zra -longname1074 => Zs -longname4530 => Zsa -longname1128 => Zt -longname4584 => Zta -longname1182 => Zu -longname4638 => Zua -longname1236 => Zv -longname4692 => Zva -longname1290 => Zw -longname4746 => Zwa -longname1344 => Zx -longname4800 => Zxa -longname1398 => Zy -longname4854 => Zya -longname1452 => Zz -longname4908 => Zza -longname52 => _ -longname2965 => _$ -longname3019 => _0 -longname3073 => _1 -longname3127 => _2 -longname3181 => _3 -longname3235 => _4 -longname3289 => _5 -longname3343 => _6 -longname3397 => _7 -longname3451 => _8 -longname3505 => _9 -longname1507 => _A -longname4963 => _Aa -longname1561 => _B -longname1615 => _C -longname1669 => _D -longname1723 => _E -longname1777 => _F -longname1831 => _G -longname1885 => _H -longname1939 => _I -longname1993 => _J -longname2047 => _K -longname2101 => _L -longname2155 => _M -longname2209 => _N -longname2263 => _O -longname2317 => _P -longname2371 => _Q -longname2425 => _R -longname2479 => _S -longname2533 => _T -longname2587 => _U -longname2641 => _V -longname2695 => _W -longname2749 => _X -longname2803 => _Y -longname2857 => _Z -longname2911 => __ -longname106 => _a -longname3559 => _aa -longname160 => _b -longname3613 => _ba -longname214 => _c -longname3667 => _ca -longname268 => _d -longname3721 => _da -longname322 => _e -longname3775 => _ea -longname375 => _f -longname3829 => _fa -longname429 => _g -longname3883 => _ga -longname483 => _h -longname3937 => _ha -longname537 => _i -longname3991 => _ia -longname591 => _j -longname4045 => _ja -longname645 => _k -longname4099 => _ka -longname699 => _l -longname4153 => _la -longname753 => _m -longname4207 => _ma -longname806 => _n -longname4261 => _na -longname859 => _o -longname4315 => _oa -longname913 => _p -longname4369 => _pa -longname967 => _q -longname4423 => _qa -longname1021 => _r -longname4477 => _ra -longname1075 => _s -longname4531 => _sa -longname1129 => _t -longname4585 => _ta -longname1183 => _u -longname4639 => _ua -longname1237 => _v -longname4693 => _va -longname1291 => _w -longname4747 => _wa -longname1345 => _x -longname4801 => _xa -longname1399 => _y -longname4855 => _ya -longname1453 => _z -longname4909 => _za +longname51 => $ +longname2964 => $$ +longname3018 => $0 +longname3072 => $1 +longname3126 => $2 +longname3180 => $3 +longname3234 => $4 +longname3288 => $5 +longname3342 => $6 +longname3396 => $7 +longname3450 => $8 +longname3504 => $9 +longname1506 => $A +longname4962 => $Aa +longname1560 => $B +longname1614 => $C +longname1668 => $D +longname1722 => $E +longname1776 => $F +longname1830 => $G +longname1884 => $H +longname1938 => $I +longname1992 => $J +longname2046 => $K +longname2100 => $L +longname2154 => $M +longname2208 => $N +longname2262 => $O +longname2316 => $P +longname2370 => $Q +longname2424 => $R +longname2478 => $S +longname2532 => $T +longname2586 => $U +longname2640 => $V +longname2694 => $W +longname2748 => $X +longname2802 => $Y +longname2856 => $Z +longname2910 => $_ +longname105 => $a +longname3558 => $aa +longname159 => $b +longname3612 => $ba +longname213 => $c +longname3666 => $ca +longname267 => $d +longname3720 => $da +longname321 => $e +longname3774 => $ea +longname374 => $f +longname3828 => $fa +longname428 => $g +longname3882 => $ga +longname482 => $h +longname3936 => $ha +longname536 => $i +longname3990 => $ia +longname590 => $j +longname4044 => $ja +longname644 => $k +longname4098 => $ka +longname698 => $l +longname4152 => $la +longname752 => $m +longname4206 => $ma +longname805 => $n +longname4260 => $na +longname858 => $o +longname4314 => $oa +longname912 => $p +longname4368 => $pa +longname966 => $q +longname4422 => $qa +longname1020 => $r +longname4476 => $ra +longname1074 => $s +longname4530 => $sa +longname1128 => $t +longname4584 => $ta +longname1182 => $u +longname4638 => $ua +longname1236 => $v +longname4692 => $va +longname1290 => $w +longname4746 => $wa +longname1344 => $x +longname4800 => $xa +longname1398 => $y +longname4854 => $ya +longname1452 => $z +longname4908 => $za +longname24 => A +longname2937 => A$ +longname2991 => A0 +longname3045 => A1 +longname3099 => A2 +longname3153 => A3 +longname3207 => A4 +longname3261 => A5 +longname3315 => A6 +longname3369 => A7 +longname3423 => A8 +longname3477 => A9 +longname1479 => AA +longname4935 => AAa +longname1533 => AB +longname4989 => ABa +longname1587 => AC +longname1641 => AD +longname1695 => AE +longname1749 => AF +longname1803 => AG +longname1857 => AH +longname1911 => AI +longname1965 => AJ +longname2019 => AK +longname2073 => AL +longname2127 => AM +longname2181 => AN +longname2235 => AO +longname2289 => AP +longname2343 => AQ +longname2397 => AR +longname2451 => AS +longname2505 => AT +longname2559 => AU +longname2613 => AV +longname2667 => AW +longname2721 => AX +longname2775 => AY +longname2829 => AZ +longname2883 => A_ +longname78 => Aa +longname3531 => Aaa +longname132 => Ab +longname3585 => Aba +longname186 => Ac +longname3639 => Aca +longname240 => Ad +longname3693 => Ada +longname294 => Ae +longname3747 => Aea +longname347 => Af +longname3801 => Afa +longname401 => Ag +longname3855 => Aga +longname455 => Ah +longname3909 => Aha +longname509 => Ai +longname3963 => Aia +longname563 => Aj +longname4017 => Aja +longname617 => Ak +longname4071 => Aka +longname671 => Al +longname4125 => Ala +longname725 => Am +longname4179 => Ama +longname778 => An +longname4233 => Ana +longname831 => Ao +longname4287 => Aoa +longname885 => Ap +longname4341 => Apa +longname939 => Aq +longname4395 => Aqa +longname993 => Ar +longname4449 => Ara +longname1047 => As +longname4503 => Asa +longname1101 => At +longname4557 => Ata +longname1155 => Au +longname4611 => Aua +longname1209 => Av +longname4665 => Ava +longname1263 => Aw +longname4719 => Awa +longname1317 => Ax +longname4773 => Axa +longname1371 => Ay +longname4827 => Aya +longname1425 => Az +longname4881 => Aza +longname25 => B +longname2938 => B$ +longname2992 => B0 +longname3046 => B1 +longname3100 => B2 +longname3154 => B3 +longname3208 => B4 +longname3262 => B5 +longname3316 => B6 +longname3370 => B7 +longname3424 => B8 +longname3478 => B9 +longname1480 => BA +longname4936 => BAa +longname1534 => BB +longname4990 => BBa +longname1588 => BC +longname1642 => BD +longname1696 => BE +longname1750 => BF +longname1804 => BG +longname1858 => BH +longname1912 => BI +longname1966 => BJ +longname2020 => BK +longname2074 => BL +longname2128 => BM +longname2182 => BN +longname2236 => BO +longname2290 => BP +longname2344 => BQ +longname2398 => BR +longname2452 => BS +longname2506 => BT +longname2560 => BU +longname2614 => BV +longname2668 => BW +longname2722 => BX +longname2776 => BY +longname2830 => BZ +longname2884 => B_ +longname79 => Ba +longname3532 => Baa +longname133 => Bb +longname3586 => Bba +longname187 => Bc +longname3640 => Bca +longname241 => Bd +longname3694 => Bda +longname295 => Be +longname3748 => Bea +longname348 => Bf +longname3802 => Bfa +longname402 => Bg +longname3856 => Bga +longname456 => Bh +longname3910 => Bha +longname510 => Bi +longname3964 => Bia +longname564 => Bj +longname4018 => Bja +longname618 => Bk +longname4072 => Bka +longname672 => Bl +longname4126 => Bla +longname726 => Bm +longname4180 => Bma +longname779 => Bn +longname4234 => Bna +longname832 => Bo +longname4288 => Boa +longname886 => Bp +longname4342 => Bpa +longname940 => Bq +longname4396 => Bqa +longname994 => Br +longname4450 => Bra +longname1048 => Bs +longname4504 => Bsa +longname1102 => Bt +longname4558 => Bta +longname1156 => Bu +longname4612 => Bua +longname1210 => Bv +longname4666 => Bva +longname1264 => Bw +longname4720 => Bwa +longname1318 => Bx +longname4774 => Bxa +longname1372 => By +longname4828 => Bya +longname1426 => Bz +longname4882 => Bza +longname26 => C +longname2939 => C$ +longname2993 => C0 +longname3047 => C1 +longname3101 => C2 +longname3155 => C3 +longname3209 => C4 +longname3263 => C5 +longname3317 => C6 +longname3371 => C7 +longname3425 => C8 +longname3479 => C9 +longname1481 => CA +longname4937 => CAa +longname1535 => CB +longname4991 => CBa +longname1589 => CC +longname1643 => CD +longname1697 => CE +longname1751 => CF +longname1805 => CG +longname1859 => CH +longname1913 => CI +longname1967 => CJ +longname2021 => CK +longname2075 => CL +longname2129 => CM +longname2183 => CN +longname2237 => CO +longname2291 => CP +longname2345 => CQ +longname2399 => CR +longname2453 => CS +longname2507 => CT +longname2561 => CU +longname2615 => CV +longname2669 => CW +longname2723 => CX +longname2777 => CY +longname2831 => CZ +longname2885 => C_ +longname80 => Ca +longname3533 => Caa +longname134 => Cb +longname3587 => Cba +longname188 => Cc +longname3641 => Cca +longname242 => Cd +longname3695 => Cda +longname296 => Ce +longname3749 => Cea +longname349 => Cf +longname3803 => Cfa +longname403 => Cg +longname3857 => Cga +longname457 => Ch +longname3911 => Cha +longname511 => Ci +longname3965 => Cia +longname565 => Cj +longname4019 => Cja +longname619 => Ck +longname4073 => Cka +longname673 => Cl +longname4127 => Cla +longname727 => Cm +longname4181 => Cma +longname780 => Cn +longname4235 => Cna +longname833 => Co +longname4289 => Coa +longname887 => Cp +longname4343 => Cpa +longname941 => Cq +longname4397 => Cqa +longname995 => Cr +longname4451 => Cra +longname1049 => Cs +longname4505 => Csa +longname1103 => Ct +longname4559 => Cta +longname1157 => Cu +longname4613 => Cua +longname1211 => Cv +longname4667 => Cva +longname1265 => Cw +longname4721 => Cwa +longname1319 => Cx +longname4775 => Cxa +longname1373 => Cy +longname4829 => Cya +longname1427 => Cz +longname4883 => Cza +longname27 => D +longname2940 => D$ +longname2994 => D0 +longname3048 => D1 +longname3102 => D2 +longname3156 => D3 +longname3210 => D4 +longname3264 => D5 +longname3318 => D6 +longname3372 => D7 +longname3426 => D8 +longname3480 => D9 +longname1482 => DA +longname4938 => DAa +longname1536 => DB +longname4992 => DBa +longname1590 => DC +longname1644 => DD +longname1698 => DE +longname1752 => DF +longname1806 => DG +longname1860 => DH +longname1914 => DI +longname1968 => DJ +longname2022 => DK +longname2076 => DL +longname2130 => DM +longname2184 => DN +longname2238 => DO +longname2292 => DP +longname2346 => DQ +longname2400 => DR +longname2454 => DS +longname2508 => DT +longname2562 => DU +longname2616 => DV +longname2670 => DW +longname2724 => DX +longname2778 => DY +longname2832 => DZ +longname2886 => D_ +longname81 => Da +longname3534 => Daa +longname135 => Db +longname3588 => Dba +longname189 => Dc +longname3642 => Dca +longname243 => Dd +longname3696 => Dda +longname297 => De +longname3750 => Dea +longname350 => Df +longname3804 => Dfa +longname404 => Dg +longname3858 => Dga +longname458 => Dh +longname3912 => Dha +longname512 => Di +longname3966 => Dia +longname566 => Dj +longname4020 => Dja +longname620 => Dk +longname4074 => Dka +longname674 => Dl +longname4128 => Dla +longname728 => Dm +longname4182 => Dma +longname781 => Dn +longname4236 => Dna +longname834 => Do +longname4290 => Doa +longname888 => Dp +longname4344 => Dpa +longname942 => Dq +longname4398 => Dqa +longname996 => Dr +longname4452 => Dra +longname1050 => Ds +longname4506 => Dsa +longname1104 => Dt +longname4560 => Dta +longname1158 => Du +longname4614 => Dua +longname1212 => Dv +longname4668 => Dva +longname1266 => Dw +longname4722 => Dwa +longname1320 => Dx +longname4776 => Dxa +longname1374 => Dy +longname4830 => Dya +longname1428 => Dz +longname4884 => Dza +longname28 => E +longname2941 => E$ +longname2995 => E0 +longname3049 => E1 +longname3103 => E2 +longname3157 => E3 +longname3211 => E4 +longname3265 => E5 +longname3319 => E6 +longname3373 => E7 +longname3427 => E8 +longname3481 => E9 +longname1483 => EA +longname4939 => EAa +longname1537 => EB +longname4993 => EBa +longname1591 => EC +longname1645 => ED +longname1699 => EE +longname1753 => EF +longname1807 => EG +longname1861 => EH +longname1915 => EI +longname1969 => EJ +longname2023 => EK +longname2077 => EL +longname2131 => EM +longname2185 => EN +longname2239 => EO +longname2293 => EP +longname2347 => EQ +longname2401 => ER +longname2455 => ES +longname2509 => ET +longname2563 => EU +longname2617 => EV +longname2671 => EW +longname2725 => EX +longname2779 => EY +longname2833 => EZ +longname2887 => E_ +longname82 => Ea +longname3535 => Eaa +longname136 => Eb +longname3589 => Eba +longname190 => Ec +longname3643 => Eca +longname244 => Ed +longname3697 => Eda +longname298 => Ee +longname3751 => Eea +longname351 => Ef +longname3805 => Efa +longname405 => Eg +longname3859 => Ega +longname459 => Eh +longname3913 => Eha +longname513 => Ei +longname3967 => Eia +longname567 => Ej +longname4021 => Eja +longname621 => Ek +longname4075 => Eka +longname675 => El +longname4129 => Ela +longname729 => Em +longname4183 => Ema +longname782 => En +longname4237 => Ena +longname835 => Eo +longname4291 => Eoa +longname889 => Ep +longname4345 => Epa +longname943 => Eq +longname4399 => Eqa +longname997 => Er +longname4453 => Era +longname1051 => Es +longname4507 => Esa +longname1105 => Et +longname4561 => Eta +longname1159 => Eu +longname4615 => Eua +longname1213 => Ev +longname4669 => Eva +longname1267 => Ew +longname4723 => Ewa +longname1321 => Ex +longname4777 => Exa +longname1375 => Ey +longname4831 => Eya +longname1429 => Ez +longname4885 => Eza +longname29 => F +longname2942 => F$ +longname2996 => F0 +longname3050 => F1 +longname3104 => F2 +longname3158 => F3 +longname3212 => F4 +longname3266 => F5 +longname3320 => F6 +longname3374 => F7 +longname3428 => F8 +longname3482 => F9 +longname1484 => FA +longname4940 => FAa +longname1538 => FB +longname4994 => FBa +longname1592 => FC +longname1646 => FD +longname1700 => FE +longname1754 => FF +longname1808 => FG +longname1862 => FH +longname1916 => FI +longname1970 => FJ +longname2024 => FK +longname2078 => FL +longname2132 => FM +longname2186 => FN +longname2240 => FO +longname2294 => FP +longname2348 => FQ +longname2402 => FR +longname2456 => FS +longname2510 => FT +longname2564 => FU +longname2618 => FV +longname2672 => FW +longname2726 => FX +longname2780 => FY +longname2834 => FZ +longname2888 => F_ +longname83 => Fa +longname3536 => Faa +longname137 => Fb +longname3590 => Fba +longname191 => Fc +longname3644 => Fca +longname245 => Fd +longname3698 => Fda +longname299 => Fe +longname3752 => Fea +longname352 => Ff +longname3806 => Ffa +longname406 => Fg +longname3860 => Fga +longname460 => Fh +longname3914 => Fha +longname514 => Fi +longname3968 => Fia +longname568 => Fj +longname4022 => Fja +longname622 => Fk +longname4076 => Fka +longname676 => Fl +longname4130 => Fla +longname730 => Fm +longname4184 => Fma +longname783 => Fn +longname4238 => Fna +longname836 => Fo +longname4292 => Foa +longname890 => Fp +longname4346 => Fpa +longname944 => Fq +longname4400 => Fqa +longname998 => Fr +longname4454 => Fra +longname1052 => Fs +longname4508 => Fsa +longname1106 => Ft +longname4562 => Fta +longname1160 => Fu +longname4616 => Fua +longname1214 => Fv +longname4670 => Fva +longname1268 => Fw +longname4724 => Fwa +longname1322 => Fx +longname4778 => Fxa +longname1376 => Fy +longname4832 => Fya +longname1430 => Fz +longname4886 => Fza +longname30 => G +longname2943 => G$ +longname2997 => G0 +longname3051 => G1 +longname3105 => G2 +longname3159 => G3 +longname3213 => G4 +longname3267 => G5 +longname3321 => G6 +longname3375 => G7 +longname3429 => G8 +longname3483 => G9 +longname1485 => GA +longname4941 => GAa +longname1539 => GB +longname4995 => GBa +longname1593 => GC +longname1647 => GD +longname1701 => GE +longname1755 => GF +longname1809 => GG +longname1863 => GH +longname1917 => GI +longname1971 => GJ +longname2025 => GK +longname2079 => GL +longname2133 => GM +longname2187 => GN +longname2241 => GO +longname2295 => GP +longname2349 => GQ +longname2403 => GR +longname2457 => GS +longname2511 => GT +longname2565 => GU +longname2619 => GV +longname2673 => GW +longname2727 => GX +longname2781 => GY +longname2835 => GZ +longname2889 => G_ +longname84 => Ga +longname3537 => Gaa +longname138 => Gb +longname3591 => Gba +longname192 => Gc +longname3645 => Gca +longname246 => Gd +longname3699 => Gda +longname300 => Ge +longname3753 => Gea +longname353 => Gf +longname3807 => Gfa +longname407 => Gg +longname3861 => Gga +longname461 => Gh +longname3915 => Gha +longname515 => Gi +longname3969 => Gia +longname569 => Gj +longname4023 => Gja +longname623 => Gk +longname4077 => Gka +longname677 => Gl +longname4131 => Gla +longname731 => Gm +longname4185 => Gma +longname784 => Gn +longname4239 => Gna +longname837 => Go +longname4293 => Goa +longname891 => Gp +longname4347 => Gpa +longname945 => Gq +longname4401 => Gqa +longname999 => Gr +longname4455 => Gra +longname1053 => Gs +longname4509 => Gsa +longname1107 => Gt +longname4563 => Gta +longname1161 => Gu +longname4617 => Gua +longname1215 => Gv +longname4671 => Gva +longname1269 => Gw +longname4725 => Gwa +longname1323 => Gx +longname4779 => Gxa +longname1377 => Gy +longname4833 => Gya +longname1431 => Gz +longname4887 => Gza +longname31 => H +longname2944 => H$ +longname2998 => H0 +longname3052 => H1 +longname3106 => H2 +longname3160 => H3 +longname3214 => H4 +longname3268 => H5 +longname3322 => H6 +longname3376 => H7 +longname3430 => H8 +longname3484 => H9 +longname1486 => HA +longname4942 => HAa +longname1540 => HB +longname4996 => HBa +longname1594 => HC +longname1648 => HD +longname1702 => HE +longname1756 => HF +longname1810 => HG +longname1864 => HH +longname1918 => HI +longname1972 => HJ +longname2026 => HK +longname2080 => HL +longname2134 => HM +longname2188 => HN +longname2242 => HO +longname2296 => HP +longname2350 => HQ +longname2404 => HR +longname2458 => HS +longname2512 => HT +longname2566 => HU +longname2620 => HV +longname2674 => HW +longname2728 => HX +longname2782 => HY +longname2836 => HZ +longname2890 => H_ +longname85 => Ha +longname3538 => Haa +longname139 => Hb +longname3592 => Hba +longname193 => Hc +longname3646 => Hca +longname247 => Hd +longname3700 => Hda +longname301 => He +longname3754 => Hea +longname354 => Hf +longname3808 => Hfa +longname408 => Hg +longname3862 => Hga +longname462 => Hh +longname3916 => Hha +longname516 => Hi +longname3970 => Hia +longname570 => Hj +longname4024 => Hja +longname624 => Hk +longname4078 => Hka +longname678 => Hl +longname4132 => Hla +longname732 => Hm +longname4186 => Hma +longname785 => Hn +longname4240 => Hna +longname838 => Ho +longname4294 => Hoa +longname892 => Hp +longname4348 => Hpa +longname946 => Hq +longname4402 => Hqa +longname1000 => Hr +longname4456 => Hra +longname1054 => Hs +longname4510 => Hsa +longname1108 => Ht +longname4564 => Hta +longname1162 => Hu +longname4618 => Hua +longname1216 => Hv +longname4672 => Hva +longname1270 => Hw +longname4726 => Hwa +longname1324 => Hx +longname4780 => Hxa +longname1378 => Hy +longname4834 => Hya +longname1432 => Hz +longname4888 => Hza +longname32 => I +longname2945 => I$ +longname2999 => I0 +longname3053 => I1 +longname3107 => I2 +longname3161 => I3 +longname3215 => I4 +longname3269 => I5 +longname3323 => I6 +longname3377 => I7 +longname3431 => I8 +longname3485 => I9 +longname1487 => IA +longname4943 => IAa +longname1541 => IB +longname4997 => IBa +longname1595 => IC +longname1649 => ID +longname1703 => IE +longname1757 => IF +longname1811 => IG +longname1865 => IH +longname1919 => II +longname1973 => IJ +longname2027 => IK +longname2081 => IL +longname2135 => IM +longname2189 => IN +longname2243 => IO +longname2297 => IP +longname2351 => IQ +longname2405 => IR +longname2459 => IS +longname2513 => IT +longname2567 => IU +longname2621 => IV +longname2675 => IW +longname2729 => IX +longname2783 => IY +longname2837 => IZ +longname2891 => I_ +longname86 => Ia +longname3539 => Iaa +longname140 => Ib +longname3593 => Iba +longname194 => Ic +longname3647 => Ica +longname248 => Id +longname3701 => Ida +longname302 => Ie +longname3755 => Iea +longname355 => If +longname3809 => Ifa +longname409 => Ig +longname3863 => Iga +longname463 => Ih +longname3917 => Iha +longname517 => Ii +longname3971 => Iia +longname571 => Ij +longname4025 => Ija +longname625 => Ik +longname4079 => Ika +longname679 => Il +longname4133 => Ila +longname733 => Im +longname4187 => Ima +longname786 => In +longname4241 => Ina +longname839 => Io +longname4295 => Ioa +longname893 => Ip +longname4349 => Ipa +longname947 => Iq +longname4403 => Iqa +longname1001 => Ir +longname4457 => Ira +longname1055 => Is +longname4511 => Isa +longname1109 => It +longname4565 => Ita +longname1163 => Iu +longname4619 => Iua +longname1217 => Iv +longname4673 => Iva +longname1271 => Iw +longname4727 => Iwa +longname1325 => Ix +longname4781 => Ixa +longname1379 => Iy +longname4835 => Iya +longname1433 => Iz +longname4889 => Iza +longname33 => J +longname2946 => J$ +longname3000 => J0 +longname3054 => J1 +longname3108 => J2 +longname3162 => J3 +longname3216 => J4 +longname3270 => J5 +longname3324 => J6 +longname3378 => J7 +longname3432 => J8 +longname3486 => J9 +longname1488 => JA +longname4944 => JAa +longname1542 => JB +longname4998 => JBa +longname1596 => JC +longname1650 => JD +longname1704 => JE +longname1758 => JF +longname1812 => JG +longname1866 => JH +longname1920 => JI +longname1974 => JJ +longname2028 => JK +longname2082 => JL +longname2136 => JM +longname2190 => JN +longname2244 => JO +longname2298 => JP +longname2352 => JQ +longname2406 => JR +longname2460 => JS +longname2514 => JT +longname2568 => JU +longname2622 => JV +longname2676 => JW +longname2730 => JX +longname2784 => JY +longname2838 => JZ +longname2892 => J_ +longname87 => Ja +longname3540 => Jaa +longname141 => Jb +longname3594 => Jba +longname195 => Jc +longname3648 => Jca +longname249 => Jd +longname3702 => Jda +longname303 => Je +longname3756 => Jea +longname356 => Jf +longname3810 => Jfa +longname410 => Jg +longname3864 => Jga +longname464 => Jh +longname3918 => Jha +longname518 => Ji +longname3972 => Jia +longname572 => Jj +longname4026 => Jja +longname626 => Jk +longname4080 => Jka +longname680 => Jl +longname4134 => Jla +longname734 => Jm +longname4188 => Jma +longname787 => Jn +longname4242 => Jna +longname840 => Jo +longname4296 => Joa +longname894 => Jp +longname4350 => Jpa +longname948 => Jq +longname4404 => Jqa +longname1002 => Jr +longname4458 => Jra +longname1056 => Js +longname4512 => Jsa +longname1110 => Jt +longname4566 => Jta +longname1164 => Ju +longname4620 => Jua +longname1218 => Jv +longname4674 => Jva +longname1272 => Jw +longname4728 => Jwa +longname1326 => Jx +longname4782 => Jxa +longname1380 => Jy +longname4836 => Jya +longname1434 => Jz +longname4890 => Jza +longname34 => K +longname2947 => K$ +longname3001 => K0 +longname3055 => K1 +longname3109 => K2 +longname3163 => K3 +longname3217 => K4 +longname3271 => K5 +longname3325 => K6 +longname3379 => K7 +longname3433 => K8 +longname3487 => K9 +longname1489 => KA +longname4945 => KAa +longname1543 => KB +longname4999 => KBa +longname1597 => KC +longname1651 => KD +longname1705 => KE +longname1759 => KF +longname1813 => KG +longname1867 => KH +longname1921 => KI +longname1975 => KJ +longname2029 => KK +longname2083 => KL +longname2137 => KM +longname2191 => KN +longname2245 => KO +longname2299 => KP +longname2353 => KQ +longname2407 => KR +longname2461 => KS +longname2515 => KT +longname2569 => KU +longname2623 => KV +longname2677 => KW +longname2731 => KX +longname2785 => KY +longname2839 => KZ +longname2893 => K_ +longname88 => Ka +longname3541 => Kaa +longname142 => Kb +longname3595 => Kba +longname196 => Kc +longname3649 => Kca +longname250 => Kd +longname3703 => Kda +longname304 => Ke +longname3757 => Kea +longname357 => Kf +longname3811 => Kfa +longname411 => Kg +longname3865 => Kga +longname465 => Kh +longname3919 => Kha +longname519 => Ki +longname3973 => Kia +longname573 => Kj +longname4027 => Kja +longname627 => Kk +longname4081 => Kka +longname681 => Kl +longname4135 => Kla +longname735 => Km +longname4189 => Kma +longname788 => Kn +longname4243 => Kna +longname841 => Ko +longname4297 => Koa +longname895 => Kp +longname4351 => Kpa +longname949 => Kq +longname4405 => Kqa +longname1003 => Kr +longname4459 => Kra +longname1057 => Ks +longname4513 => Ksa +longname1111 => Kt +longname4567 => Kta +longname1165 => Ku +longname4621 => Kua +longname1219 => Kv +longname4675 => Kva +longname1273 => Kw +longname4729 => Kwa +longname1327 => Kx +longname4783 => Kxa +longname1381 => Ky +longname4837 => Kya +longname1435 => Kz +longname4891 => Kza +longname35 => L +longname2948 => L$ +longname3002 => L0 +longname3056 => L1 +longname3110 => L2 +longname3164 => L3 +longname3218 => L4 +longname3272 => L5 +longname3326 => L6 +longname3380 => L7 +longname3434 => L8 +longname3488 => L9 +longname1490 => LA +longname4946 => LAa +longname1544 => LB +eventname1 => LBa +longname1598 => LC +longname1652 => LD +longname1706 => LE +longname1760 => LF +longname1814 => LG +longname1868 => LH +longname1922 => LI +longname1976 => LJ +longname2030 => LK +longname2084 => LL +longname2138 => LM +longname2192 => LN +longname2246 => LO +longname2300 => LP +longname2354 => LQ +longname2408 => LR +longname2462 => LS +longname2516 => LT +longname2570 => LU +longname2624 => LV +longname2678 => LW +longname2732 => LX +longname2786 => LY +longname2840 => LZ +longname2894 => L_ +longname89 => La +longname3542 => Laa +longname143 => Lb +longname3596 => Lba +longname197 => Lc +longname3650 => Lca +longname251 => Ld +longname3704 => Lda +longname305 => Le +longname3758 => Lea +longname358 => Lf +longname3812 => Lfa +longname412 => Lg +longname3866 => Lga +longname466 => Lh +longname3920 => Lha +longname520 => Li +longname3974 => Lia +longname574 => Lj +longname4028 => Lja +longname628 => Lk +longname4082 => Lka +longname682 => Ll +longname4136 => Lla +longname736 => Lm +longname4190 => Lma +longname789 => Ln +longname4244 => Lna +longname842 => Lo +longname4298 => Loa +longname896 => Lp +longname4352 => Lpa +longname950 => Lq +longname4406 => Lqa +longname1004 => Lr +longname4460 => Lra +longname1058 => Ls +longname4514 => Lsa +longname1112 => Lt +longname4568 => Lta +longname1166 => Lu +longname4622 => Lua +longname1220 => Lv +longname4676 => Lva +longname1274 => Lw +longname4730 => Lwa +longname1328 => Lx +longname4784 => Lxa +longname1382 => Ly +longname4838 => Lya +longname1436 => Lz +longname4892 => Lza +longname36 => M +longname2949 => M$ +longname3003 => M0 +longname3057 => M1 +longname3111 => M2 +longname3165 => M3 +longname3219 => M4 +longname3273 => M5 +longname3327 => M6 +longname3381 => M7 +longname3435 => M8 +longname3489 => M9 +longname1491 => MA +longname4947 => MAa +longname1545 => MB +longname1599 => MC +longname1653 => MD +longname1707 => ME +longname1761 => MF +longname1815 => MG +longname1869 => MH +longname1923 => MI +longname1977 => MJ +longname2031 => MK +longname2085 => ML +longname2139 => MM +longname2193 => MN +longname2247 => MO +longname2301 => MP +longname2355 => MQ +longname2409 => MR +longname2463 => MS +longname2517 => MT +longname2571 => MU +longname2625 => MV +longname2679 => MW +longname2733 => MX +longname2787 => MY +longname2841 => MZ +longname2895 => M_ +longname90 => Ma +longname3543 => Maa +longname144 => Mb +longname3597 => Mba +longname198 => Mc +longname3651 => Mca +longname252 => Md +longname3705 => Mda +longname306 => Me +longname3759 => Mea +longname359 => Mf +longname3813 => Mfa +longname413 => Mg +longname3867 => Mga +longname467 => Mh +longname3921 => Mha +longname521 => Mi +longname3975 => Mia +longname575 => Mj +longname4029 => Mja +longname629 => Mk +longname4083 => Mka +longname683 => Ml +longname4137 => Mla +longname737 => Mm +longname4191 => Mma +longname790 => Mn +longname4245 => Mna +longname843 => Mo +longname4299 => Moa +longname897 => Mp +longname4353 => Mpa +longname951 => Mq +longname4407 => Mqa +longname1005 => Mr +longname4461 => Mra +longname1059 => Ms +longname4515 => Msa +longname1113 => Mt +longname4569 => Mta +longname1167 => Mu +longname4623 => Mua +longname1221 => Mv +longname4677 => Mva +longname1275 => Mw +longname4731 => Mwa +longname1329 => Mx +longname4785 => Mxa +longname1383 => My +longname4839 => Mya +longname1437 => Mz +longname4893 => Mza +longname37 => N +longname2950 => N$ +longname3004 => N0 +longname3058 => N1 +longname3112 => N2 +longname3166 => N3 +longname3220 => N4 +longname3274 => N5 +longname3328 => N6 +longname3382 => N7 +longname3436 => N8 +longname3490 => N9 +longname1492 => NA +longname4948 => NAa +longname1546 => NB +longname1600 => NC +longname1654 => ND +longname1708 => NE +longname1762 => NF +longname1816 => NG +longname1870 => NH +longname1924 => NI +longname1978 => NJ +longname2032 => NK +longname2086 => NL +longname2140 => NM +longname2194 => NN +longname2248 => NO +longname2302 => NP +longname2356 => NQ +longname2410 => NR +longname2464 => NS +longname2518 => NT +longname2572 => NU +longname2626 => NV +longname2680 => NW +longname2734 => NX +longname2788 => NY +longname2842 => NZ +longname2896 => N_ +longname91 => Na +longname3544 => Naa +longname145 => Nb +longname3598 => Nba +longname199 => Nc +longname3652 => Nca +longname253 => Nd +longname3706 => Nda +longname307 => Ne +longname3760 => Nea +longname360 => Nf +longname3814 => Nfa +longname414 => Ng +longname3868 => Nga +longname468 => Nh +longname3922 => Nha +longname522 => Ni +longname3976 => Nia +longname576 => Nj +longname4030 => Nja +longname630 => Nk +longname4084 => Nka +longname684 => Nl +longname4138 => Nla +longname738 => Nm +longname4192 => Nma +longname791 => Nn +longname4246 => Nna +longname844 => No +longname4300 => Noa +longname898 => Np +longname4354 => Npa +longname952 => Nq +longname4408 => Nqa +longname1006 => Nr +longname4462 => Nra +longname1060 => Ns +longname4516 => Nsa +longname1114 => Nt +longname4570 => Nta +longname1168 => Nu +longname4624 => Nua +longname1222 => Nv +longname4678 => Nva +longname1276 => Nw +longname4732 => Nwa +longname1330 => Nx +longname4786 => Nxa +longname1384 => Ny +longname4840 => Nya +longname1438 => Nz +longname4894 => Nza +longname38 => O +longname2951 => O$ +longname3005 => O0 +longname3059 => O1 +longname3113 => O2 +longname3167 => O3 +longname3221 => O4 +longname3275 => O5 +longname3329 => O6 +longname3383 => O7 +longname3437 => O8 +longname3491 => O9 +longname1493 => OA +longname4949 => OAa +longname1547 => OB +longname1601 => OC +longname1655 => OD +longname1709 => OE +longname1763 => OF +longname1817 => OG +longname1871 => OH +longname1925 => OI +longname1979 => OJ +longname2033 => OK +longname2087 => OL +longname2141 => OM +longname2195 => ON +longname2249 => OO +longname2303 => OP +longname2357 => OQ +longname2411 => OR +longname2465 => OS +longname2519 => OT +longname2573 => OU +longname2627 => OV +longname2681 => OW +longname2735 => OX +longname2789 => OY +longname2843 => OZ +longname2897 => O_ +longname92 => Oa +longname3545 => Oaa +longname146 => Ob +longname3599 => Oba +longname200 => Oc +longname3653 => Oca +longname254 => Od +longname3707 => Oda +longname308 => Oe +longname3761 => Oea +longname361 => Of +longname3815 => Ofa +longname415 => Og +longname3869 => Oga +longname469 => Oh +longname3923 => Oha +longname523 => Oi +longname3977 => Oia +longname577 => Oj +longname4031 => Oja +longname631 => Ok +longname4085 => Oka +longname685 => Ol +longname4139 => Ola +longname739 => Om +longname4193 => Oma +longname792 => On +longname4247 => Ona +longname845 => Oo +longname4301 => Ooa +longname899 => Op +longname4355 => Opa +longname953 => Oq +longname4409 => Oqa +longname1007 => Or +longname4463 => Ora +longname1061 => Os +longname4517 => Osa +longname1115 => Ot +longname4571 => Ota +longname1169 => Ou +longname4625 => Oua +longname1223 => Ov +longname4679 => Ova +longname1277 => Ow +longname4733 => Owa +longname1331 => Ox +longname4787 => Oxa +longname1385 => Oy +longname4841 => Oya +longname1439 => Oz +longname4895 => Oza +longname39 => P +longname2952 => P$ +longname3006 => P0 +longname3060 => P1 +longname3114 => P2 +longname3168 => P3 +longname3222 => P4 +longname3276 => P5 +longname3330 => P6 +longname3384 => P7 +longname3438 => P8 +longname3492 => P9 +longname1494 => PA +longname4950 => PAa +longname1548 => PB +longname1602 => PC +longname1656 => PD +longname1710 => PE +longname1764 => PF +longname1818 => PG +longname1872 => PH +longname1926 => PI +longname1980 => PJ +longname2034 => PK +longname2088 => PL +longname2142 => PM +longname2196 => PN +longname2250 => PO +longname2304 => PP +longname2358 => PQ +longname2412 => PR +longname2466 => PS +longname2520 => PT +longname2574 => PU +longname2628 => PV +longname2682 => PW +longname2736 => PX +longname2790 => PY +longname2844 => PZ +longname2898 => P_ +longname93 => Pa +longname3546 => Paa +longname147 => Pb +longname3600 => Pba +longname201 => Pc +longname3654 => Pca +longname255 => Pd +longname3708 => Pda +longname309 => Pe +longname3762 => Pea +longname362 => Pf +longname3816 => Pfa +longname416 => Pg +longname3870 => Pga +longname470 => Ph +longname3924 => Pha +longname524 => Pi +longname3978 => Pia +longname578 => Pj +longname4032 => Pja +longname632 => Pk +longname4086 => Pka +longname686 => Pl +longname4140 => Pla +longname740 => Pm +longname4194 => Pma +longname793 => Pn +longname4248 => Pna +longname846 => Po +longname4302 => Poa +longname900 => Pp +longname4356 => Ppa +longname954 => Pq +longname4410 => Pqa +longname1008 => Pr +longname4464 => Pra +longname1062 => Ps +longname4518 => Psa +longname1116 => Pt +longname4572 => Pta +longname1170 => Pu +longname4626 => Pua +longname1224 => Pv +longname4680 => Pva +longname1278 => Pw +longname4734 => Pwa +longname1332 => Px +longname4788 => Pxa +longname1386 => Py +longname4842 => Pya +longname1440 => Pz +longname4896 => Pza +longname40 => Q +longname2953 => Q$ +longname3007 => Q0 +longname3061 => Q1 +longname3115 => Q2 +longname3169 => Q3 +longname3223 => Q4 +longname3277 => Q5 +longname3331 => Q6 +longname3385 => Q7 +longname3439 => Q8 +longname3493 => Q9 +longname1495 => QA +longname4951 => QAa +longname1549 => QB +longname1603 => QC +longname1657 => QD +longname1711 => QE +longname1765 => QF +longname1819 => QG +longname1873 => QH +longname1927 => QI +longname1981 => QJ +longname2035 => QK +longname2089 => QL +longname2143 => QM +longname2197 => QN +longname2251 => QO +longname2305 => QP +longname2359 => QQ +longname2413 => QR +longname2467 => QS +longname2521 => QT +longname2575 => QU +longname2629 => QV +longname2683 => QW +longname2737 => QX +longname2791 => QY +longname2845 => QZ +longname2899 => Q_ +longname94 => Qa +longname3547 => Qaa +longname148 => Qb +longname3601 => Qba +longname202 => Qc +longname3655 => Qca +longname256 => Qd +longname3709 => Qda +longname310 => Qe +longname3763 => Qea +longname363 => Qf +longname3817 => Qfa +longname417 => Qg +longname3871 => Qga +longname471 => Qh +longname3925 => Qha +longname525 => Qi +longname3979 => Qia +longname579 => Qj +longname4033 => Qja +longname633 => Qk +longname4087 => Qka +longname687 => Ql +longname4141 => Qla +longname741 => Qm +longname4195 => Qma +longname794 => Qn +longname4249 => Qna +longname847 => Qo +longname4303 => Qoa +longname901 => Qp +longname4357 => Qpa +longname955 => Qq +longname4411 => Qqa +longname1009 => Qr +longname4465 => Qra +longname1063 => Qs +longname4519 => Qsa +longname1117 => Qt +longname4573 => Qta +longname1171 => Qu +longname4627 => Qua +longname1225 => Qv +longname4681 => Qva +longname1279 => Qw +longname4735 => Qwa +longname1333 => Qx +longname4789 => Qxa +longname1387 => Qy +longname4843 => Qya +longname1441 => Qz +longname4897 => Qza +longname41 => R +longname2954 => R$ +longname3008 => R0 +longname3062 => R1 +longname3116 => R2 +longname3170 => R3 +longname3224 => R4 +longname3278 => R5 +longname3332 => R6 +longname3386 => R7 +longname3440 => R8 +longname3494 => R9 +longname1496 => RA +longname4952 => RAa +longname1550 => RB +longname1604 => RC +longname1658 => RD +longname1712 => RE +longname1766 => RF +longname1820 => RG +longname1874 => RH +longname1928 => RI +longname1982 => RJ +longname2036 => RK +longname2090 => RL +longname2144 => RM +longname2198 => RN +longname2252 => RO +longname2306 => RP +longname2360 => RQ +longname2414 => RR +longname2468 => RS +longname2522 => RT +longname2576 => RU +longname2630 => RV +longname2684 => RW +longname2738 => RX +longname2792 => RY +longname2846 => RZ +longname2900 => R_ +longname95 => Ra +longname3548 => Raa +longname149 => Rb +longname3602 => Rba +longname203 => Rc +longname3656 => Rca +longname257 => Rd +longname3710 => Rda +longname311 => Re +longname3764 => Rea +longname364 => Rf +longname3818 => Rfa +longname418 => Rg +longname3872 => Rga +longname472 => Rh +longname3926 => Rha +longname526 => Ri +longname3980 => Ria +longname580 => Rj +longname4034 => Rja +longname634 => Rk +longname4088 => Rka +longname688 => Rl +longname4142 => Rla +longname742 => Rm +longname4196 => Rma +longname795 => Rn +longname4250 => Rna +longname848 => Ro +longname4304 => Roa +longname902 => Rp +longname4358 => Rpa +longname956 => Rq +longname4412 => Rqa +longname1010 => Rr +longname4466 => Rra +longname1064 => Rs +longname4520 => Rsa +longname1118 => Rt +longname4574 => Rta +longname1172 => Ru +longname4628 => Rua +longname1226 => Rv +longname4682 => Rva +longname1280 => Rw +longname4736 => Rwa +longname1334 => Rx +longname4790 => Rxa +longname1388 => Ry +longname4844 => Rya +longname1442 => Rz +longname4898 => Rza +longname42 => S +longname2955 => S$ +longname3009 => S0 +longname3063 => S1 +longname3117 => S2 +longname3171 => S3 +longname3225 => S4 +longname3279 => S5 +longname3333 => S6 +longname3387 => S7 +longname3441 => S8 +longname3495 => S9 +longname1497 => SA +longname4953 => SAa +longname1551 => SB +longname1605 => SC +longname1659 => SD +longname1713 => SE +longname1767 => SF +longname1821 => SG +longname1875 => SH +longname1929 => SI +longname1983 => SJ +longname2037 => SK +longname2091 => SL +longname2145 => SM +longname2199 => SN +longname2253 => SO +longname2307 => SP +longname2361 => SQ +longname2415 => SR +longname2469 => SS +longname2523 => ST +longname2577 => SU +longname2631 => SV +longname2685 => SW +longname2739 => SX +longname2793 => SY +longname2847 => SZ +longname2901 => S_ +longname96 => Sa +longname3549 => Saa +longname150 => Sb +longname3603 => Sba +longname204 => Sc +longname3657 => Sca +longname258 => Sd +longname3711 => Sda +longname312 => Se +longname3765 => Sea +longname365 => Sf +longname3819 => Sfa +longname419 => Sg +longname3873 => Sga +longname473 => Sh +longname3927 => Sha +longname527 => Si +longname3981 => Sia +longname581 => Sj +longname4035 => Sja +longname635 => Sk +longname4089 => Ska +longname689 => Sl +longname4143 => Sla +longname743 => Sm +longname4197 => Sma +longname796 => Sn +longname4251 => Sna +longname849 => So +longname4305 => Soa +longname903 => Sp +longname4359 => Spa +longname957 => Sq +longname4413 => Sqa +longname1011 => Sr +longname4467 => Sra +longname1065 => Ss +longname4521 => Ssa +longname1119 => St +longname4575 => Sta +longname1173 => Su +longname4629 => Sua +longname1227 => Sv +longname4683 => Sva +longname1281 => Sw +longname4737 => Swa +longname1335 => Sx +longname4791 => Sxa +longname1389 => Sy +longname4845 => Sya +longname1443 => Sz +longname4899 => Sza +longname43 => T +longname2956 => T$ +longname3010 => T0 +longname3064 => T1 +longname3118 => T2 +longname3172 => T3 +longname3226 => T4 +longname3280 => T5 +longname3334 => T6 +longname3388 => T7 +longname3442 => T8 +longname3496 => T9 +longname1498 => TA +longname4954 => TAa +longname1552 => TB +longname1606 => TC +longname1660 => TD +longname1714 => TE +longname1768 => TF +longname1822 => TG +longname1876 => TH +longname1930 => TI +longname1984 => TJ +longname2038 => TK +longname2092 => TL +longname2146 => TM +longname2200 => TN +longname2254 => TO +longname2308 => TP +longname2362 => TQ +longname2416 => TR +longname2470 => TS +longname2524 => TT +longname2578 => TU +longname2632 => TV +longname2686 => TW +longname2740 => TX +longname2794 => TY +longname2848 => TZ +longname2902 => T_ +longname97 => Ta +longname3550 => Taa +longname151 => Tb +longname3604 => Tba +longname205 => Tc +longname3658 => Tca +longname259 => Td +longname3712 => Tda +longname313 => Te +longname3766 => Tea +longname366 => Tf +longname3820 => Tfa +longname420 => Tg +longname3874 => Tga +longname474 => Th +longname3928 => Tha +longname528 => Ti +longname3982 => Tia +longname582 => Tj +longname4036 => Tja +longname636 => Tk +longname4090 => Tka +longname690 => Tl +longname4144 => Tla +longname744 => Tm +longname4198 => Tma +longname797 => Tn +longname4252 => Tna +longname850 => To +longname4306 => Toa +longname904 => Tp +longname4360 => Tpa +longname958 => Tq +longname4414 => Tqa +longname1012 => Tr +longname4468 => Tra +longname1066 => Ts +longname4522 => Tsa +longname1120 => Tt +longname4576 => Tta +longname1174 => Tu +longname4630 => Tua +longname1228 => Tv +longname4684 => Tva +longname1282 => Tw +longname4738 => Twa +longname1336 => Tx +longname4792 => Txa +longname1390 => Ty +longname4846 => Tya +longname1444 => Tz +longname4900 => Tza +longname44 => U +longname2957 => U$ +longname3011 => U0 +longname3065 => U1 +longname3119 => U2 +longname3173 => U3 +longname3227 => U4 +longname3281 => U5 +longname3335 => U6 +longname3389 => U7 +longname3443 => U8 +longname3497 => U9 +longname1499 => UA +longname4955 => UAa +longname1553 => UB +longname1607 => UC +longname1661 => UD +longname1715 => UE +longname1769 => UF +longname1823 => UG +longname1877 => UH +longname1931 => UI +longname1985 => UJ +longname2039 => UK +longname2093 => UL +longname2147 => UM +longname2201 => UN +longname2255 => UO +longname2309 => UP +longname2363 => UQ +longname2417 => UR +longname2471 => US +longname2525 => UT +longname2579 => UU +longname2633 => UV +longname2687 => UW +longname2741 => UX +longname2795 => UY +longname2849 => UZ +longname2903 => U_ +longname98 => Ua +longname3551 => Uaa +longname152 => Ub +longname3605 => Uba +longname206 => Uc +longname3659 => Uca +longname260 => Ud +longname3713 => Uda +longname314 => Ue +longname3767 => Uea +longname367 => Uf +longname3821 => Ufa +longname421 => Ug +longname3875 => Uga +longname475 => Uh +longname3929 => Uha +longname529 => Ui +longname3983 => Uia +longname583 => Uj +longname4037 => Uja +longname637 => Uk +longname4091 => Uka +longname691 => Ul +longname4145 => Ula +longname745 => Um +longname4199 => Uma +longname798 => Un +longname4253 => Una +longname851 => Uo +longname4307 => Uoa +longname905 => Up +longname4361 => Upa +longname959 => Uq +longname4415 => Uqa +longname1013 => Ur +longname4469 => Ura +longname1067 => Us +longname4523 => Usa +longname1121 => Ut +longname4577 => Uta +longname1175 => Uu +longname4631 => Uua +longname1229 => Uv +longname4685 => Uva +longname1283 => Uw +longname4739 => Uwa +longname1337 => Ux +longname4793 => Uxa +longname1391 => Uy +longname4847 => Uya +longname1445 => Uz +longname4901 => Uza +longname45 => V +longname2958 => V$ +longname3012 => V0 +longname3066 => V1 +longname3120 => V2 +longname3174 => V3 +longname3228 => V4 +longname3282 => V5 +longname3336 => V6 +longname3390 => V7 +longname3444 => V8 +longname3498 => V9 +longname1500 => VA +longname4956 => VAa +longname1554 => VB +longname1608 => VC +longname1662 => VD +longname1716 => VE +longname1770 => VF +longname1824 => VG +longname1878 => VH +longname1932 => VI +longname1986 => VJ +longname2040 => VK +longname2094 => VL +longname2148 => VM +longname2202 => VN +longname2256 => VO +longname2310 => VP +longname2364 => VQ +longname2418 => VR +longname2472 => VS +longname2526 => VT +longname2580 => VU +longname2634 => VV +longname2688 => VW +longname2742 => VX +longname2796 => VY +longname2850 => VZ +longname2904 => V_ +longname99 => Va +longname3552 => Vaa +longname153 => Vb +longname3606 => Vba +longname207 => Vc +longname3660 => Vca +longname261 => Vd +longname3714 => Vda +longname315 => Ve +longname3768 => Vea +longname368 => Vf +longname3822 => Vfa +longname422 => Vg +longname3876 => Vga +longname476 => Vh +longname3930 => Vha +longname530 => Vi +longname3984 => Via +longname584 => Vj +longname4038 => Vja +longname638 => Vk +longname4092 => Vka +longname692 => Vl +longname4146 => Vla +longname746 => Vm +longname4200 => Vma +longname799 => Vn +longname4254 => Vna +longname852 => Vo +longname4308 => Voa +longname906 => Vp +longname4362 => Vpa +longname960 => Vq +longname4416 => Vqa +longname1014 => Vr +longname4470 => Vra +longname1068 => Vs +longname4524 => Vsa +longname1122 => Vt +longname4578 => Vta +longname1176 => Vu +longname4632 => Vua +longname1230 => Vv +longname4686 => Vva +longname1284 => Vw +longname4740 => Vwa +longname1338 => Vx +longname4794 => Vxa +longname1392 => Vy +longname4848 => Vya +longname1446 => Vz +longname4902 => Vza +longname46 => W +longname2959 => W$ +longname3013 => W0 +longname3067 => W1 +longname3121 => W2 +longname3175 => W3 +longname3229 => W4 +longname3283 => W5 +longname3337 => W6 +longname3391 => W7 +longname3445 => W8 +longname3499 => W9 +longname1501 => WA +longname4957 => WAa +longname1555 => WB +longname1609 => WC +longname1663 => WD +longname1717 => WE +longname1771 => WF +longname1825 => WG +longname1879 => WH +longname1933 => WI +longname1987 => WJ +longname2041 => WK +longname2095 => WL +longname2149 => WM +longname2203 => WN +longname2257 => WO +longname2311 => WP +longname2365 => WQ +longname2419 => WR +longname2473 => WS +longname2527 => WT +longname2581 => WU +longname2635 => WV +longname2689 => WW +longname2743 => WX +longname2797 => WY +longname2851 => WZ +longname2905 => W_ +longname100 => Wa +longname3553 => Waa +longname154 => Wb +longname3607 => Wba +longname208 => Wc +longname3661 => Wca +longname262 => Wd +longname3715 => Wda +longname316 => We +longname3769 => Wea +longname369 => Wf +longname3823 => Wfa +longname423 => Wg +longname3877 => Wga +longname477 => Wh +longname3931 => Wha +longname531 => Wi +longname3985 => Wia +longname585 => Wj +longname4039 => Wja +longname639 => Wk +longname4093 => Wka +longname693 => Wl +longname4147 => Wla +longname747 => Wm +longname4201 => Wma +longname800 => Wn +longname4255 => Wna +longname853 => Wo +longname4309 => Woa +longname907 => Wp +longname4363 => Wpa +longname961 => Wq +longname4417 => Wqa +longname1015 => Wr +longname4471 => Wra +longname1069 => Ws +longname4525 => Wsa +longname1123 => Wt +longname4579 => Wta +longname1177 => Wu +longname4633 => Wua +longname1231 => Wv +longname4687 => Wva +longname1285 => Ww +longname4741 => Wwa +longname1339 => Wx +longname4795 => Wxa +longname1393 => Wy +longname4849 => Wya +longname1447 => Wz +longname4903 => Wza +longname47 => X +longname2960 => X$ +longname3014 => X0 +longname3068 => X1 +longname3122 => X2 +longname3176 => X3 +longname3230 => X4 +longname3284 => X5 +longname3338 => X6 +longname3392 => X7 +longname3446 => X8 +longname3500 => X9 +longname1502 => XA +longname4958 => XAa +longname1556 => XB +longname1610 => XC +longname1664 => XD +longname1718 => XE +longname1772 => XF +longname1826 => XG +longname1880 => XH +longname1934 => XI +longname1988 => XJ +longname2042 => XK +longname2096 => XL +longname2150 => XM +longname2204 => XN +longname2258 => XO +longname2312 => XP +longname2366 => XQ +longname2420 => XR +longname2474 => XS +longname2528 => XT +longname2582 => XU +longname2636 => XV +longname2690 => XW +longname2744 => XX +longname2798 => XY +longname2852 => XZ +longname2906 => X_ +longname101 => Xa +longname3554 => Xaa +longname155 => Xb +longname3608 => Xba +longname209 => Xc +longname3662 => Xca +longname263 => Xd +longname3716 => Xda +longname317 => Xe +longname3770 => Xea +longname370 => Xf +longname3824 => Xfa +longname424 => Xg +longname3878 => Xga +longname478 => Xh +longname3932 => Xha +longname532 => Xi +longname3986 => Xia +longname586 => Xj +longname4040 => Xja +longname640 => Xk +longname4094 => Xka +longname694 => Xl +longname4148 => Xla +longname748 => Xm +longname4202 => Xma +longname801 => Xn +longname4256 => Xna +longname854 => Xo +longname4310 => Xoa +longname908 => Xp +longname4364 => Xpa +longname962 => Xq +longname4418 => Xqa +longname1016 => Xr +longname4472 => Xra +longname1070 => Xs +longname4526 => Xsa +longname1124 => Xt +longname4580 => Xta +longname1178 => Xu +longname4634 => Xua +longname1232 => Xv +longname4688 => Xva +longname1286 => Xw +longname4742 => Xwa +longname1340 => Xx +longname4796 => Xxa +longname1394 => Xy +longname4850 => Xya +longname1448 => Xz +longname4904 => Xza +longname48 => Y +longname2961 => Y$ +longname3015 => Y0 +longname3069 => Y1 +longname3123 => Y2 +longname3177 => Y3 +longname3231 => Y4 +longname3285 => Y5 +longname3339 => Y6 +longname3393 => Y7 +longname3447 => Y8 +longname3501 => Y9 +longname1503 => YA +longname4959 => YAa +longname1557 => YB +longname1611 => YC +longname1665 => YD +longname1719 => YE +longname1773 => YF +longname1827 => YG +longname1881 => YH +longname1935 => YI +longname1989 => YJ +longname2043 => YK +longname2097 => YL +longname2151 => YM +longname2205 => YN +longname2259 => YO +longname2313 => YP +longname2367 => YQ +longname2421 => YR +longname2475 => YS +longname2529 => YT +longname2583 => YU +longname2637 => YV +longname2691 => YW +longname2745 => YX +longname2799 => YY +longname2853 => YZ +longname2907 => Y_ +longname102 => Ya +longname3555 => Yaa +longname156 => Yb +longname3609 => Yba +longname210 => Yc +longname3663 => Yca +longname264 => Yd +longname3717 => Yda +longname318 => Ye +longname3771 => Yea +longname371 => Yf +longname3825 => Yfa +longname425 => Yg +longname3879 => Yga +longname479 => Yh +longname3933 => Yha +longname533 => Yi +longname3987 => Yia +longname587 => Yj +longname4041 => Yja +longname641 => Yk +longname4095 => Yka +longname695 => Yl +longname4149 => Yla +longname749 => Ym +longname4203 => Yma +longname802 => Yn +longname4257 => Yna +longname855 => Yo +longname4311 => Yoa +longname909 => Yp +longname4365 => Ypa +longname963 => Yq +longname4419 => Yqa +longname1017 => Yr +longname4473 => Yra +longname1071 => Ys +longname4527 => Ysa +longname1125 => Yt +longname4581 => Yta +longname1179 => Yu +longname4635 => Yua +longname1233 => Yv +longname4689 => Yva +longname1287 => Yw +longname4743 => Ywa +longname1341 => Yx +longname4797 => Yxa +longname1395 => Yy +longname4851 => Yya +longname1449 => Yz +longname4905 => Yza +longname49 => Z +longname2962 => Z$ +longname3016 => Z0 +longname3070 => Z1 +longname3124 => Z2 +longname3178 => Z3 +longname3232 => Z4 +longname3286 => Z5 +longname3340 => Z6 +longname3394 => Z7 +longname3448 => Z8 +longname3502 => Z9 +longname1504 => ZA +longname4960 => ZAa +longname1558 => ZB +longname1612 => ZC +longname1666 => ZD +longname1720 => ZE +longname1774 => ZF +longname1828 => ZG +longname1882 => ZH +longname1936 => ZI +longname1990 => ZJ +longname2044 => ZK +longname2098 => ZL +longname2152 => ZM +longname2206 => ZN +longname2260 => ZO +longname2314 => ZP +longname2368 => ZQ +longname2422 => ZR +longname2476 => ZS +longname2530 => ZT +longname2584 => ZU +longname2638 => ZV +longname2692 => ZW +longname2746 => ZX +longname2800 => ZY +longname2854 => ZZ +longname2908 => Z_ +longname103 => Za +longname3556 => Zaa +longname157 => Zb +longname3610 => Zba +longname211 => Zc +longname3664 => Zca +longname265 => Zd +longname3718 => Zda +longname319 => Ze +longname3772 => Zea +longname372 => Zf +longname3826 => Zfa +longname426 => Zg +longname3880 => Zga +longname480 => Zh +longname3934 => Zha +longname534 => Zi +longname3988 => Zia +longname588 => Zj +longname4042 => Zja +longname642 => Zk +longname4096 => Zka +longname696 => Zl +longname4150 => Zla +longname750 => Zm +longname4204 => Zma +longname803 => Zn +longname4258 => Zna +longname856 => Zo +longname4312 => Zoa +longname910 => Zp +longname4366 => Zpa +longname964 => Zq +longname4420 => Zqa +longname1018 => Zr +longname4474 => Zra +longname1072 => Zs +longname4528 => Zsa +longname1126 => Zt +longname4582 => Zta +longname1180 => Zu +longname4636 => Zua +longname1234 => Zv +longname4690 => Zva +longname1288 => Zw +longname4744 => Zwa +longname1342 => Zx +longname4798 => Zxa +longname1396 => Zy +longname4852 => Zya +longname1450 => Zz +longname4906 => Zza +longname50 => _ +longname2963 => _$ +longname3017 => _0 +longname3071 => _1 +longname3125 => _2 +longname3179 => _3 +longname3233 => _4 +longname3287 => _5 +longname3341 => _6 +longname3395 => _7 +longname3449 => _8 +longname3503 => _9 +longname1505 => _A +longname4961 => _Aa +longname1559 => _B +longname1613 => _C +longname1667 => _D +longname1721 => _E +longname1775 => _F +longname1829 => _G +longname1883 => _H +longname1937 => _I +longname1991 => _J +longname2045 => _K +longname2099 => _L +longname2153 => _M +longname2207 => _N +longname2261 => _O +longname2315 => _P +longname2369 => _Q +longname2423 => _R +longname2477 => _S +longname2531 => _T +longname2585 => _U +longname2639 => _V +longname2693 => _W +longname2747 => _X +longname2801 => _Y +longname2855 => _Z +longname2909 => __ +longname104 => _a +longname3557 => _aa +longname158 => _b +longname3611 => _ba +longname212 => _c +longname3665 => _ca +longname266 => _d +longname3719 => _da +longname320 => _e +longname3773 => _ea +longname373 => _f +longname3827 => _fa +longname427 => _g +longname3881 => _ga +longname481 => _h +longname3935 => _ha +longname535 => _i +longname3989 => _ia +longname589 => _j +longname4043 => _ja +longname643 => _k +longname4097 => _ka +longname697 => _l +longname4151 => _la +longname751 => _m +longname4205 => _ma +longname804 => _n +longname4259 => _na +longname857 => _o +longname4313 => _oa +longname911 => _p +longname4367 => _pa +longname965 => _q +longname4421 => _qa +longname1019 => _r +longname4475 => _ra +longname1073 => _s +longname4529 => _sa +longname1127 => _t +longname4583 => _ta +longname1181 => _u +longname4637 => _ua +longname1235 => _v +longname4691 => _va +longname1289 => _w +longname4745 => _wa +longname1343 => _x +longname4799 => _xa +longname1397 => _y +longname4853 => _ya +longname1451 => _z +longname4907 => _za global => a -longname2913 => a$ -longname2967 => a0 -longname3021 => a1 -longname3075 => a2 -longname3129 => a3 -longname3183 => a4 -longname3237 => a5 -longname3291 => a6 -longname3345 => a7 -longname3399 => a8 -longname3453 => a9 -longname1455 => aA -longname4911 => aAa -longname1509 => aB -longname4965 => aBa -longname1563 => aC -longname1617 => aD -longname1671 => aE -longname1725 => aF -longname1779 => aG -longname1833 => aH -longname1887 => aI -longname1941 => aJ -longname1995 => aK -longname2049 => aL -longname2103 => aM -longname2157 => aN -longname2211 => aO -longname2265 => aP -longname2319 => aQ -longname2373 => aR -longname2427 => aS -longname2481 => aT -longname2535 => aU -longname2589 => aV -longname2643 => aW -longname2697 => aX -longname2751 => aY -longname2805 => aZ -longname2859 => a_ -longname54 => aa -longname3507 => aaa -longname108 => ab -longname3561 => aba -longname162 => ac -longname3615 => aca -longname216 => ad -longname3669 => ada -longname270 => ae -longname3723 => aea -longname324 => af -longname3777 => afa -longname377 => ag -longname3831 => aga -longname431 => ah -longname3885 => aha -longname485 => ai -longname3939 => aia -longname539 => aj -longname3993 => aja -longname593 => ak -longname4047 => aka -longname647 => al -longname4101 => ala -longname701 => am -longname4155 => ama -longname755 => an -longname4209 => ana -longname808 => ao -longname4263 => aoa -longname861 => ap -longname4317 => apa -longname915 => aq -longname4371 => aqa -longname969 => ar -longname4425 => ara -longname1023 => as -longname4479 => asa -longname1077 => at -longname4533 => ata -longname1131 => au -longname4587 => aua -longname1185 => av -longname4641 => ava -longname1239 => aw -longname4695 => awa -longname1293 => ax -longname4749 => axa -longname1347 => ay -longname4803 => aya -longname1401 => az -longname4857 => aza -longname1 => b -longname2914 => b$ -longname2968 => b0 -longname3022 => b1 -longname3076 => b2 -longname3130 => b3 -longname3184 => b4 -longname3238 => b5 -longname3292 => b6 -longname3346 => b7 -longname3400 => b8 -longname3454 => b9 -longname1456 => bA -longname4912 => bAa -longname1510 => bB -longname4966 => bBa -longname1564 => bC -longname1618 => bD -longname1672 => bE -longname1726 => bF -longname1780 => bG -longname1834 => bH -longname1888 => bI -longname1942 => bJ -longname1996 => bK -longname2050 => bL -longname2104 => bM -longname2158 => bN -longname2212 => bO -longname2266 => bP -longname2320 => bQ -longname2374 => bR -longname2428 => bS -longname2482 => bT -longname2536 => bU -longname2590 => bV -longname2644 => bW -longname2698 => bX -longname2752 => bY -longname2806 => bZ -longname2860 => b_ -longname55 => ba -longname3508 => baa -longname109 => bb -longname3562 => bba -longname163 => bc -longname3616 => bca -longname217 => bd -longname3670 => bda -longname271 => be -longname3724 => bea -longname325 => bf -longname3778 => bfa -longname378 => bg -longname3832 => bga -longname432 => bh -longname3886 => bha -longname486 => bi -longname3940 => bia -longname540 => bj -longname3994 => bja -longname594 => bk -longname4048 => bka -longname648 => bl -longname4102 => bla -longname702 => bm -longname4156 => bma -longname756 => bn -longname4210 => bna -longname809 => bo -longname4264 => boa -longname862 => bp -longname4318 => bpa -longname916 => bq -longname4372 => bqa -longname970 => br -longname4426 => bra -longname1024 => bs -longname4480 => bsa -longname1078 => bt -longname4534 => bta -longname1132 => bu -longname4588 => bua -longname1186 => bv -longname4642 => bva -longname1240 => bw -longname4696 => bwa -longname1294 => bx -longname4750 => bxa -longname1348 => by -longname4804 => bya -longname1402 => bz -longname4858 => bza -longname2 => c -longname2915 => c$ -longname2969 => c0 -longname3023 => c1 -longname3077 => c2 -longname3131 => c3 -longname3185 => c4 -longname3239 => c5 -longname3293 => c6 -longname3347 => c7 -longname3401 => c8 -longname3455 => c9 -longname1457 => cA -longname4913 => cAa -longname1511 => cB -longname4967 => cBa -longname1565 => cC -longname1619 => cD -longname1673 => cE -longname1727 => cF -longname1781 => cG -longname1835 => cH -longname1889 => cI -longname1943 => cJ -longname1997 => cK -longname2051 => cL -longname2105 => cM -longname2159 => cN -longname2213 => cO -longname2267 => cP -longname2321 => cQ -longname2375 => cR -longname2429 => cS -longname2483 => cT -longname2537 => cU -longname2591 => cV -longname2645 => cW -longname2699 => cX -longname2753 => cY -longname2807 => cZ -longname2861 => c_ -longname56 => ca -longname3509 => caa -longname110 => cb -longname3563 => cba -longname164 => cc -longname3617 => cca -longname218 => cd -longname3671 => cda -longname272 => ce -longname3725 => cea -longname326 => cf -longname3779 => cfa -longname379 => cg -longname3833 => cga -longname433 => ch -longname3887 => cha -longname487 => ci -longname3941 => cia -longname541 => cj -longname3995 => cja -longname595 => ck -longname4049 => cka -longname649 => cl -longname4103 => cla -longname703 => cm -longname4157 => cma -longname757 => cn -longname4211 => cna -longname810 => co -longname4265 => coa -longname863 => cp -longname4319 => cpa -longname917 => cq -longname4373 => cqa -longname971 => cr -longname4427 => cra -longname1025 => cs -longname4481 => csa -longname1079 => ct -longname4535 => cta -longname1133 => cu -longname4589 => cua -longname1187 => cv -longname4643 => cva -longname1241 => cw -longname4697 => cwa -longname1295 => cx -longname4751 => cxa -longname1349 => cy -longname4805 => cya -longname1403 => cz -longname4859 => cza -longname3 => d -longname2916 => d$ -longname2970 => d0 -longname3024 => d1 -longname3078 => d2 -longname3132 => d3 -longname3186 => d4 -longname3240 => d5 -longname3294 => d6 -longname3348 => d7 -longname3402 => d8 -longname3456 => d9 -longname1458 => dA -longname4914 => dAa -longname1512 => dB -longname4968 => dBa -longname1566 => dC -longname1620 => dD -longname1674 => dE -longname1728 => dF -longname1782 => dG -longname1836 => dH -longname1890 => dI -longname1944 => dJ -longname1998 => dK -longname2052 => dL -longname2106 => dM -longname2160 => dN -longname2214 => dO -longname2268 => dP -longname2322 => dQ -longname2376 => dR -longname2430 => dS -longname2484 => dT -longname2538 => dU -longname2592 => dV -longname2646 => dW -longname2700 => dX -longname2754 => dY -longname2808 => dZ -longname2862 => d_ -longname57 => da -longname3510 => daa -longname111 => db -longname3564 => dba -longname165 => dc -longname3618 => dca -longname219 => dd -longname3672 => dda -longname273 => de -longname3726 => dea -longname327 => df -longname3780 => dfa -longname380 => dg -longname3834 => dga -longname434 => dh -longname3888 => dha -longname488 => di -longname3942 => dia -longname542 => dj -longname3996 => dja -longname596 => dk -longname4050 => dka -longname650 => dl -longname4104 => dla -longname704 => dm -longname4158 => dma -longname758 => dn -longname4212 => dna -longname4266 => doa -longname864 => dp -longname4320 => dpa -longname918 => dq -longname4374 => dqa -longname972 => dr -longname4428 => dra -longname1026 => ds -longname4482 => dsa -longname1080 => dt -longname4536 => dta -longname1134 => du -longname4590 => dua -longname1188 => dv -longname4644 => dva -longname1242 => dw -longname4698 => dwa -longname1296 => dx -longname4752 => dxa -longname1350 => dy -longname4806 => dya -longname1404 => dz -longname4860 => dza -longname4 => e -longname2917 => e$ -longname2971 => e0 -longname3025 => e1 -longname3079 => e2 -longname3133 => e3 -longname3187 => e4 -longname3241 => e5 -longname3295 => e6 -longname3349 => e7 -longname3403 => e8 -longname3457 => e9 -longname1459 => eA -longname4915 => eAa -longname1513 => eB -longname4969 => eBa -longname1567 => eC -longname1621 => eD -longname1675 => eE -longname1729 => eF -longname1783 => eG -longname1837 => eH -longname1891 => eI -longname1945 => eJ -longname1999 => eK -longname2053 => eL -longname2107 => eM -longname2161 => eN -longname2215 => eO -longname2269 => eP -longname2323 => eQ -longname2377 => eR -longname2431 => eS -longname2485 => eT -longname2539 => eU -longname2593 => eV -longname2647 => eW -longname2701 => eX -longname2755 => eY -longname2809 => eZ -longname2863 => e_ -longname58 => ea -longname3511 => eaa -longname112 => eb -longname3565 => eba -longname166 => ec -longname3619 => eca -longname220 => ed -longname3673 => eda -longname274 => ee -longname3727 => eea -longname328 => ef -longname3781 => efa -longname381 => eg -longname3835 => ega -longname435 => eh -longname3889 => eha -longname489 => ei -longname3943 => eia -longname543 => ej -longname3997 => eja -longname597 => ek -longname4051 => eka -longname651 => el -longname4105 => ela -longname705 => em -longname4159 => ema -longname759 => en -longname4213 => ena -longname811 => eo -longname4267 => eoa -longname865 => ep -longname4321 => epa -longname919 => eq -longname4375 => eqa -longname973 => er -longname4429 => era -longname1027 => es -longname4483 => esa -longname1081 => et -longname4537 => eta -longname1135 => eu -longname4591 => eua -longname1189 => ev -longname4645 => eva -longname1243 => ew -longname4699 => ewa -longname1297 => ex -longname4753 => exa -longname1351 => ey -longname4807 => eya -longname1405 => ez -longname4861 => eza -longname5 => f -longname2918 => f$ -longname2972 => f0 -longname3026 => f1 -longname3080 => f2 -longname3134 => f3 -longname3188 => f4 -longname3242 => f5 -longname3296 => f6 -longname3350 => f7 -longname3404 => f8 -longname3458 => f9 -longname1460 => fA -longname4916 => fAa -longname1514 => fB -longname4970 => fBa -longname1568 => fC -longname1622 => fD -longname1676 => fE -longname1730 => fF -longname1784 => fG -longname1838 => fH -longname1892 => fI -longname1946 => fJ -longname2000 => fK -longname2054 => fL -longname2108 => fM -longname2162 => fN -longname2216 => fO -longname2270 => fP -longname2324 => fQ -longname2378 => fR -longname2432 => fS -longname2486 => fT -longname2540 => fU -longname2594 => fV -longname2648 => fW -longname2702 => fX -longname2756 => fY -longname2810 => fZ -longname2864 => f_ -longname59 => fa -longname3512 => faa -longname113 => fb -longname3566 => fba -longname167 => fc -longname3620 => fca -longname221 => fd -longname3674 => fda -longname275 => fe -longname3728 => fea -longname329 => ff -longname3782 => ffa -longname382 => fg -longname3836 => fga -longname436 => fh -longname3890 => fha -longname490 => fi -longname3944 => fia -longname544 => fj -longname3998 => fja -longname598 => fk -longname4052 => fka -longname652 => fl -longname4106 => fla -longname706 => fm -longname4160 => fma -longname760 => fn -longname4214 => fna -longname812 => fo -longname4268 => foa -longname866 => fp -longname4322 => fpa -longname920 => fq -longname4376 => fqa -longname974 => fr -longname4430 => fra -longname1028 => fs -longname4484 => fsa -longname1082 => ft -longname4538 => fta -longname1136 => fu -longname4592 => fua -longname1190 => fv -longname4646 => fva -longname1244 => fw -longname4700 => fwa -longname1298 => fx -longname4754 => fxa -longname1352 => fy -longname4808 => fya -longname1406 => fz -longname4862 => fza -longname6 => g -longname2919 => g$ -longname2973 => g0 -longname3027 => g1 -longname3081 => g2 -longname3135 => g3 -longname3189 => g4 -longname3243 => g5 -longname3297 => g6 -longname3351 => g7 -longname3405 => g8 -longname3459 => g9 -longname1461 => gA -longname4917 => gAa -longname1515 => gB -longname4971 => gBa -longname1569 => gC -longname1623 => gD -longname1677 => gE -longname1731 => gF -longname1785 => gG -longname1839 => gH -longname1893 => gI -longname1947 => gJ -longname2001 => gK -longname2055 => gL -longname2109 => gM -longname2163 => gN -longname2217 => gO -longname2271 => gP -longname2325 => gQ -longname2379 => gR -longname2433 => gS -longname2487 => gT -longname2541 => gU -longname2595 => gV -longname2649 => gW -longname2703 => gX -longname2757 => gY -longname2811 => gZ -longname2865 => g_ -longname60 => ga -longname3513 => gaa -longname114 => gb -longname3567 => gba -longname168 => gc -longname3621 => gca -longname222 => gd -longname3675 => gda -longname276 => ge -longname3729 => gea -longname330 => gf -longname3783 => gfa -longname383 => gg -longname3837 => gga -longname437 => gh -longname3891 => gha -longname491 => gi -longname3945 => gia -longname545 => gj -longname3999 => gja -longname599 => gk -longname4053 => gka -longname653 => gl -longname4107 => gla -longname707 => gm -longname4161 => gma -longname761 => gn -longname4215 => gna -longname813 => go -longname4269 => goa -longname867 => gp -longname4323 => gpa -longname921 => gq -longname4377 => gqa -longname975 => gr -longname4431 => gra -longname1029 => gs -longname4485 => gsa -longname1083 => gt -longname4539 => gta -longname1137 => gu -longname4593 => gua -longname1191 => gv -longname4647 => gva -longname1245 => gw -longname4701 => gwa -longname1299 => gx -longname4755 => gxa -longname1353 => gy -longname4809 => gya -longname1407 => gz -longname4863 => gza -longname7 => h -longname2920 => h$ -longname2974 => h0 -longname3028 => h1 -longname3082 => h2 -longname3136 => h3 -longname3190 => h4 -longname3244 => h5 -longname3298 => h6 -longname3352 => h7 -longname3406 => h8 -longname3460 => h9 -longname1462 => hA -longname4918 => hAa -longname1516 => hB -longname4972 => hBa -longname1570 => hC -longname1624 => hD -longname1678 => hE -longname1732 => hF -longname1786 => hG -longname1840 => hH -longname1894 => hI -longname1948 => hJ -longname2002 => hK -longname2056 => hL -longname2110 => hM -longname2164 => hN -longname2218 => hO -longname2272 => hP -longname2326 => hQ -longname2380 => hR -longname2434 => hS -longname2488 => hT -longname2542 => hU -longname2596 => hV -longname2650 => hW -longname2704 => hX -longname2758 => hY -longname2812 => hZ -longname2866 => h_ -longname61 => ha -longname3514 => haa -longname115 => hb -longname3568 => hba -longname169 => hc -longname3622 => hca -longname223 => hd -longname3676 => hda -longname277 => he -longname3730 => hea -longname331 => hf -longname3784 => hfa -longname384 => hg -longname3838 => hga -longname438 => hh -longname3892 => hha -longname492 => hi -longname3946 => hia -longname546 => hj -longname4000 => hja -longname600 => hk -longname4054 => hka -longname654 => hl -longname4108 => hla -longname708 => hm -longname4162 => hma -longname762 => hn -longname4216 => hna -longname814 => ho -longname4270 => hoa -longname868 => hp -longname4324 => hpa -longname922 => hq -longname4378 => hqa -longname976 => hr -longname4432 => hra -longname1030 => hs -longname4486 => hsa -longname1084 => ht -longname4540 => hta -longname1138 => hu -longname4594 => hua -longname1192 => hv -longname4648 => hva -longname1246 => hw -longname4702 => hwa -longname1300 => hx -longname4756 => hxa -longname1354 => hy -longname4810 => hya -longname1408 => hz -longname4864 => hza -longname8 => i -longname2921 => i$ -longname2975 => i0 -longname3029 => i1 -longname3083 => i2 -longname3137 => i3 -longname3191 => i4 -longname3245 => i5 -longname3299 => i6 -longname3353 => i7 -longname3407 => i8 -longname3461 => i9 -longname1463 => iA -longname4919 => iAa -longname1517 => iB -longname4973 => iBa -longname1571 => iC -longname1625 => iD -longname1679 => iE -longname1733 => iF -longname1787 => iG -longname1841 => iH -longname1895 => iI -longname1949 => iJ -longname2003 => iK -longname2057 => iL -longname2111 => iM -longname2165 => iN -longname2219 => iO -longname2273 => iP -longname2327 => iQ -longname2381 => iR -longname2435 => iS -longname2489 => iT -longname2543 => iU -longname2597 => iV -longname2651 => iW -longname2705 => iX -longname2759 => iY -longname2813 => iZ -longname2867 => i_ -longname62 => ia -longname3515 => iaa -longname116 => ib -longname3569 => iba -longname170 => ic -longname3623 => ica -longname224 => id -longname3677 => ida -longname278 => ie -longname3731 => iea -longname3785 => ifa -longname385 => ig -longname3839 => iga -longname439 => ih -longname3893 => iha -longname493 => ii -longname3947 => iia -longname547 => ij -longname4001 => ija -longname601 => ik -longname4055 => ika -longname655 => il -longname4109 => ila -longname709 => im -longname4163 => ima -longname4217 => ina -longname815 => io -longname4271 => ioa -longname869 => ip -longname4325 => ipa -longname923 => iq -longname4379 => iqa -longname977 => ir -longname4433 => ira -longname1031 => is -longname4487 => isa -longname1085 => it -longname4541 => ita -longname1139 => iu -longname4595 => iua -longname1193 => iv -longname4649 => iva -longname1247 => iw -longname4703 => iwa -longname1301 => ix -longname4757 => ixa -longname1355 => iy -longname4811 => iya -longname1409 => iz -longname4865 => iza -longname9 => j -longname2922 => j$ -longname2976 => j0 -longname3030 => j1 -longname3084 => j2 -longname3138 => j3 -longname3192 => j4 -longname3246 => j5 -longname3300 => j6 -longname3354 => j7 -longname3408 => j8 -longname3462 => j9 -longname1464 => jA -longname4920 => jAa -longname1518 => jB -longname4974 => jBa -longname1572 => jC -longname1626 => jD -longname1680 => jE -longname1734 => jF -longname1788 => jG -longname1842 => jH -longname1896 => jI -longname1950 => jJ -longname2004 => jK -longname2058 => jL -longname2112 => jM -longname2166 => jN -longname2220 => jO -longname2274 => jP -longname2328 => jQ -longname2382 => jR -longname2436 => jS -longname2490 => jT -longname2544 => jU -longname2598 => jV -longname2652 => jW -longname2706 => jX -longname2760 => jY -longname2814 => jZ -longname2868 => j_ -longname63 => ja -longname3516 => jaa -longname117 => jb -longname3570 => jba -longname171 => jc -longname3624 => jca -longname225 => jd -longname3678 => jda -longname279 => je -longname3732 => jea -longname332 => jf -longname3786 => jfa -longname386 => jg -longname3840 => jga -longname440 => jh -longname3894 => jha -longname494 => ji -longname3948 => jia -longname548 => jj -longname4002 => jja -longname602 => jk -longname4056 => jka -longname656 => jl -longname4110 => jla -longname710 => jm -longname4164 => jma -longname763 => jn -longname4218 => jna -longname816 => jo -longname4272 => joa -longname870 => jp -longname4326 => jpa -longname924 => jq -longname4380 => jqa -longname978 => jr -longname4434 => jra -longname1032 => js -longname4488 => jsa -longname1086 => jt -longname4542 => jta -longname1140 => ju -longname4596 => jua -longname1194 => jv -longname4650 => jva -longname1248 => jw -longname4704 => jwa -longname1302 => jx -longname4758 => jxa -longname1356 => jy -longname4812 => jya -longname1410 => jz -longname4866 => jza -longname10 => k -longname2923 => k$ -longname2977 => k0 -longname3031 => k1 -longname3085 => k2 -longname3139 => k3 -longname3193 => k4 -longname3247 => k5 -longname3301 => k6 -longname3355 => k7 -longname3409 => k8 -longname3463 => k9 -longname1465 => kA -longname4921 => kAa -longname1519 => kB -longname4975 => kBa -longname1573 => kC -longname1627 => kD -longname1681 => kE -longname1735 => kF -longname1789 => kG -longname1843 => kH -longname1897 => kI -longname1951 => kJ -longname2005 => kK -longname2059 => kL -longname2113 => kM -longname2167 => kN -longname2221 => kO -longname2275 => kP -longname2329 => kQ -longname2383 => kR -longname2437 => kS -longname2491 => kT -longname2545 => kU -longname2599 => kV -longname2653 => kW -longname2707 => kX -longname2761 => kY -longname2815 => kZ -longname2869 => k_ -longname64 => ka -longname3517 => kaa -longname118 => kb -longname3571 => kba -longname172 => kc -longname3625 => kca -longname226 => kd -longname3679 => kda -longname280 => ke -longname3733 => kea -longname333 => kf -longname3787 => kfa -longname387 => kg -longname3841 => kga -longname441 => kh -longname3895 => kha -longname495 => ki -longname3949 => kia -longname549 => kj -longname4003 => kja -longname603 => kk -longname4057 => kka -longname657 => kl -longname4111 => kla -longname711 => km -longname4165 => kma -longname764 => kn -longname4219 => kna -longname817 => ko -longname4273 => koa -longname871 => kp -longname4327 => kpa -longname925 => kq -longname4381 => kqa -longname979 => kr -longname4435 => kra -longname1033 => ks -longname4489 => ksa -longname1087 => kt -longname4543 => kta -longname1141 => ku -longname4597 => kua -longname1195 => kv -longname4651 => kva -longname1249 => kw -longname4705 => kwa -longname1303 => kx -longname4759 => kxa -longname1357 => ky -longname4813 => kya -longname1411 => kz -longname4867 => kza -longname11 => l -longname2924 => l$ -longname2978 => l0 -longname3032 => l1 -longname3086 => l2 -longname3140 => l3 -longname3194 => l4 -longname3248 => l5 -longname3302 => l6 -longname3356 => l7 -longname3410 => l8 -longname3464 => l9 -longname1466 => lA -longname4922 => lAa -longname1520 => lB -longname4976 => lBa -longname1574 => lC -longname1628 => lD -longname1682 => lE -longname1736 => lF -longname1790 => lG -longname1844 => lH -longname1898 => lI -longname1952 => lJ -longname2006 => lK -longname2060 => lL -longname2114 => lM -longname2168 => lN -longname2222 => lO -longname2276 => lP -longname2330 => lQ -longname2384 => lR -longname2438 => lS -longname2492 => lT -longname2546 => lU -longname2600 => lV -longname2654 => lW -longname2708 => lX -longname2762 => lY -longname2816 => lZ -longname2870 => l_ -longname65 => la -longname3518 => laa -longname119 => lb -longname3572 => lba -longname173 => lc -longname3626 => lca -longname227 => ld -longname3680 => lda -longname281 => le -longname3734 => lea -longname334 => lf -longname3788 => lfa -longname388 => lg -longname3842 => lga -longname442 => lh -longname3896 => lha -longname496 => li -longname3950 => lia -longname550 => lj -longname4004 => lja -longname604 => lk -longname4058 => lka -longname658 => ll -longname4112 => lla -longname712 => lm -longname4166 => lma -longname765 => ln -longname4220 => lna -longname818 => lo -longname4274 => loa -longname872 => lp -longname4328 => lpa -longname926 => lq -longname4382 => lqa -longname980 => lr -longname4436 => lra -longname1034 => ls -longname4490 => lsa -longname1088 => lt -longname4544 => lta -longname1142 => lu -longname4598 => lua -longname1196 => lv -longname4652 => lva -longname1250 => lw -longname4706 => lwa -longname1304 => lx -longname4760 => lxa -longname1358 => ly -longname4814 => lya -longname1412 => lz -longname4868 => lza -longname12 => m -longname2925 => m$ -longname2979 => m0 -longname3033 => m1 -longname3087 => m2 -longname3141 => m3 -longname3195 => m4 -longname3249 => m5 -longname3303 => m6 -longname3357 => m7 -longname3411 => m8 -longname3465 => m9 -longname1467 => mA -longname4923 => mAa -longname1521 => mB -longname4977 => mBa -longname1575 => mC -longname1629 => mD -longname1683 => mE -longname1737 => mF -longname1791 => mG -longname1845 => mH -longname1899 => mI -longname1953 => mJ -longname2007 => mK -longname2061 => mL -longname2115 => mM -longname2169 => mN -longname2223 => mO -longname2277 => mP -longname2331 => mQ -longname2385 => mR -longname2439 => mS -longname2493 => mT -longname2547 => mU -longname2601 => mV -longname2655 => mW -longname2709 => mX -longname2763 => mY -longname2817 => mZ -longname2871 => m_ -longname66 => ma -longname3519 => maa -longname120 => mb -longname3573 => mba -longname174 => mc -longname3627 => mca -longname228 => md -longname3681 => mda -longname282 => me -longname3735 => mea -longname335 => mf -longname3789 => mfa -longname389 => mg -longname3843 => mga -longname443 => mh -longname3897 => mha -longname497 => mi -longname3951 => mia -longname551 => mj -longname4005 => mja -longname605 => mk -longname4059 => mka -longname659 => ml -longname4113 => mla -longname713 => mm -longname4167 => mma -longname766 => mn -longname4221 => mna -longname819 => mo -longname4275 => moa -longname873 => mp -longname4329 => mpa -longname927 => mq -longname4383 => mqa -longname981 => mr -longname4437 => mra -longname1035 => ms -longname4491 => msa -longname1089 => mt -longname4545 => mta -longname1143 => mu -longname4599 => mua -longname1197 => mv -longname4653 => mva -longname1251 => mw -longname4707 => mwa -longname1305 => mx -longname4761 => mxa -longname1359 => my -longname4815 => mya -longname1413 => mz -longname4869 => mza -longname13 => n -longname2926 => n$ -longname2980 => n0 -longname3034 => n1 -longname3088 => n2 -longname3142 => n3 -longname3196 => n4 -longname3250 => n5 -longname3304 => n6 -longname3358 => n7 -longname3412 => n8 -longname3466 => n9 -longname1468 => nA -longname4924 => nAa -longname1522 => nB -longname4978 => nBa -longname1576 => nC -longname1630 => nD -longname1684 => nE -longname1738 => nF -longname1792 => nG -longname1846 => nH -longname1900 => nI -longname1954 => nJ -longname2008 => nK -longname2062 => nL -longname2116 => nM -longname2170 => nN -longname2224 => nO -longname2278 => nP -longname2332 => nQ -longname2386 => nR -longname2440 => nS -longname2494 => nT -longname2548 => nU -longname2602 => nV -longname2656 => nW -longname2710 => nX -longname2764 => nY -longname2818 => nZ -longname2872 => n_ -longname67 => na -longname3520 => naa -longname121 => nb -longname3574 => nba -longname175 => nc -longname3628 => nca -longname229 => nd -longname3682 => nda -longname283 => ne -longname3736 => nea -longname336 => nf -longname3790 => nfa -longname390 => ng -longname3844 => nga -longname444 => nh -longname3898 => nha -longname498 => ni -longname3952 => nia -longname552 => nj -longname4006 => nja -longname606 => nk -longname4060 => nka -longname660 => nl -longname4114 => nla -longname714 => nm -longname4168 => nma -longname767 => nn -longname4222 => nna -longname820 => no -longname4276 => noa -longname874 => np -longname4330 => npa -longname928 => nq -longname4384 => nqa -longname982 => nr -longname4438 => nra -longname1036 => ns -longname4492 => nsa -longname1090 => nt -longname4546 => nta -longname1144 => nu -longname4600 => nua -longname1198 => nv -longname4654 => nva -longname1252 => nw -longname4708 => nwa -longname1306 => nx -longname4762 => nxa -longname1360 => ny -longname4816 => nya -longname1414 => nz -longname4870 => nza -longname14 => o -longname2927 => o$ -longname2981 => o0 -longname3035 => o1 -longname3089 => o2 -longname3143 => o3 -longname3197 => o4 -longname3251 => o5 -longname3305 => o6 -longname3359 => o7 -longname3413 => o8 -longname3467 => o9 -longname1469 => oA -longname4925 => oAa -longname1523 => oB -longname4979 => oBa -longname1577 => oC -longname1631 => oD -longname1685 => oE -longname1739 => oF -longname1793 => oG -longname1847 => oH -longname1901 => oI -longname1955 => oJ -longname2009 => oK -longname2063 => oL -longname2117 => oM -longname2171 => oN -longname2225 => oO -longname2279 => oP -longname2333 => oQ -longname2387 => oR -longname2441 => oS -longname2495 => oT -longname2549 => oU -longname2603 => oV -longname2657 => oW -longname2711 => oX -longname2765 => oY -longname2819 => oZ -longname2873 => o_ -longname68 => oa -longname3521 => oaa -longname122 => ob -longname3575 => oba -longname176 => oc -longname3629 => oca -longname230 => od -longname3683 => oda -longname284 => oe -longname3737 => oea -longname337 => of -longname3791 => ofa -longname391 => og -longname3845 => oga -longname445 => oh -longname3899 => oha -longname499 => oi -longname3953 => oia -longname553 => oj -longname4007 => oja -longname607 => ok -longname4061 => oka -longname661 => ol -longname4115 => ola -longname715 => om -longname4169 => oma -longname768 => on -longname4223 => ona -longname821 => oo -longname4277 => ooa -longname875 => op -longname4331 => opa -longname929 => oq -longname4385 => oqa -longname983 => or -longname4439 => ora -longname1037 => os -longname4493 => osa -longname1091 => ot -longname4547 => ota -longname1145 => ou -longname4601 => oua -longname1199 => ov -longname4655 => ova -longname1253 => ow -longname4709 => owa -longname1307 => ox -longname4763 => oxa -longname1361 => oy -longname4817 => oya -longname1415 => oz -longname4871 => oza -longname15 => p -longname2928 => p$ -longname2982 => p0 -longname3036 => p1 -longname3090 => p2 -longname3144 => p3 -longname3198 => p4 -longname3252 => p5 -longname3306 => p6 -longname3360 => p7 -longname3414 => p8 -longname3468 => p9 -longname1470 => pA -longname4926 => pAa -longname1524 => pB -longname4980 => pBa -longname1578 => pC -longname1632 => pD -longname1686 => pE -longname1740 => pF -longname1794 => pG -longname1848 => pH -longname1902 => pI -longname1956 => pJ -longname2010 => pK -longname2064 => pL -longname2118 => pM -longname2172 => pN -longname2226 => pO -longname2280 => pP -longname2334 => pQ -longname2388 => pR -longname2442 => pS -longname2496 => pT -longname2550 => pU -longname2604 => pV -longname2658 => pW -longname2712 => pX -longname2766 => pY -longname2820 => pZ -longname2874 => p_ -longname69 => pa -longname3522 => paa -longname123 => pb -longname3576 => pba -longname177 => pc -longname3630 => pca -longname231 => pd -longname3684 => pda -longname285 => pe -longname3738 => pea -longname338 => pf -longname3792 => pfa -longname392 => pg -longname3846 => pga -longname446 => ph -longname3900 => pha -longname500 => pi -longname3954 => pia -longname554 => pj -longname4008 => pja -longname608 => pk -longname4062 => pka -longname662 => pl -longname4116 => pla -longname716 => pm -longname4170 => pma -longname769 => pn -longname4224 => pna -longname822 => po -longname4278 => poa -longname876 => pp -longname4332 => ppa -longname930 => pq -longname4386 => pqa -longname984 => pr -longname4440 => pra -longname1038 => ps -longname4494 => psa -longname1092 => pt -longname4548 => pta -longname1146 => pu -longname4602 => pua -longname1200 => pv -longname4656 => pva -longname1254 => pw -longname4710 => pwa -longname1308 => px -longname4764 => pxa -longname1362 => py -longname4818 => pya -longname1416 => pz -longname4872 => pza -longname16 => q -longname2929 => q$ -longname2983 => q0 -longname3037 => q1 -longname3091 => q2 -longname3145 => q3 -longname3199 => q4 -longname3253 => q5 -longname3307 => q6 -longname3361 => q7 -longname3415 => q8 -longname3469 => q9 -longname1471 => qA -longname4927 => qAa -longname1525 => qB -longname4981 => qBa -longname1579 => qC -longname1633 => qD -longname1687 => qE -longname1741 => qF -longname1795 => qG -longname1849 => qH -longname1903 => qI -longname1957 => qJ -longname2011 => qK -longname2065 => qL -longname2119 => qM -longname2173 => qN -longname2227 => qO -longname2281 => qP -longname2335 => qQ -longname2389 => qR -longname2443 => qS -longname2497 => qT -longname2551 => qU -longname2605 => qV -longname2659 => qW -longname2713 => qX -longname2767 => qY -longname2821 => qZ -longname2875 => q_ -longname70 => qa -longname3523 => qaa -longname124 => qb -longname3577 => qba -longname178 => qc -longname3631 => qca -longname232 => qd -longname3685 => qda -longname286 => qe -longname3739 => qea -longname339 => qf -longname3793 => qfa -longname393 => qg -longname3847 => qga -longname447 => qh -longname3901 => qha -longname501 => qi -longname3955 => qia -longname555 => qj -longname4009 => qja -longname609 => qk -longname4063 => qka -longname663 => ql -longname4117 => qla -longname717 => qm -longname4171 => qma -longname770 => qn -longname4225 => qna -longname823 => qo -longname4279 => qoa -longname877 => qp -longname4333 => qpa -longname931 => qq -longname4387 => qqa -longname985 => qr -longname4441 => qra -longname1039 => qs -longname4495 => qsa -longname1093 => qt -longname4549 => qta -longname1147 => qu -longname4603 => qua -longname1201 => qv -longname4657 => qva -longname1255 => qw -longname4711 => qwa -longname1309 => qx -longname4765 => qxa -longname1363 => qy -longname4819 => qya -longname1417 => qz -longname4873 => qza -longname17 => r -longname2930 => r$ -longname2984 => r0 -longname3038 => r1 -longname3092 => r2 -longname3146 => r3 -longname3200 => r4 -longname3254 => r5 -longname3308 => r6 -longname3362 => r7 -longname3416 => r8 -longname3470 => r9 -longname1472 => rA -longname4928 => rAa -longname1526 => rB -longname4982 => rBa -longname1580 => rC -longname1634 => rD -longname1688 => rE -longname1742 => rF -longname1796 => rG -longname1850 => rH -longname1904 => rI -longname1958 => rJ -longname2012 => rK -longname2066 => rL -longname2120 => rM -longname2174 => rN -longname2228 => rO -longname2282 => rP -longname2336 => rQ -longname2390 => rR -longname2444 => rS -longname2498 => rT -longname2552 => rU -longname2606 => rV -longname2660 => rW -longname2714 => rX -longname2768 => rY -longname2822 => rZ -longname2876 => r_ -longname71 => ra -longname3524 => raa -longname125 => rb -longname3578 => rba -longname179 => rc -longname3632 => rca -longname233 => rd -longname3686 => rda -longname287 => re -longname3740 => rea -longname340 => rf -longname3794 => rfa -longname394 => rg -longname3848 => rga -longname448 => rh -longname3902 => rha -longname502 => ri -longname3956 => ria -longname556 => rj -longname4010 => rja -longname610 => rk -longname4064 => rka -longname664 => rl -longname4118 => rla -longname718 => rm -longname4172 => rma -longname771 => rn -longname4226 => rna -longname824 => ro -longname4280 => roa -longname878 => rp -longname4334 => rpa -longname932 => rq -longname4388 => rqa -longname986 => rr -longname4442 => rra -longname1040 => rs -longname4496 => rsa -longname1094 => rt -longname4550 => rta -longname1148 => ru -longname4604 => rua -longname1202 => rv -longname4658 => rva -longname1256 => rw -longname4712 => rwa -longname1310 => rx -longname4766 => rxa -longname1364 => ry -longname4820 => rya -longname1418 => rz -longname4874 => rza -longname18 => s -longname2931 => s$ -longname2985 => s0 -longname3039 => s1 -longname3093 => s2 -longname3147 => s3 -longname3201 => s4 -longname3255 => s5 -longname3309 => s6 -longname3363 => s7 -longname3417 => s8 -longname3471 => s9 -longname1473 => sA -longname4929 => sAa -longname1527 => sB -longname4983 => sBa -longname1581 => sC -longname1635 => sD -longname1689 => sE -longname1743 => sF -longname1797 => sG -longname1851 => sH -longname1905 => sI -longname1959 => sJ -longname2013 => sK -longname2067 => sL -longname2121 => sM -longname2175 => sN -longname2229 => sO -longname2283 => sP -longname2337 => sQ -longname2391 => sR -longname2445 => sS -longname2499 => sT -longname2553 => sU -longname2607 => sV -longname2661 => sW -longname2715 => sX -longname2769 => sY -longname2823 => sZ -longname2877 => s_ -longname72 => sa -longname3525 => saa -longname126 => sb -longname3579 => sba -longname180 => sc -longname3633 => sca -longname234 => sd -longname3687 => sda -longname288 => se -longname3741 => sea -longname341 => sf -longname3795 => sfa -longname395 => sg -longname3849 => sga -longname449 => sh -longname3903 => sha -longname503 => si -longname3957 => sia -longname557 => sj -longname4011 => sja -longname611 => sk -longname4065 => ska -longname665 => sl -longname4119 => sla -longname719 => sm -longname4173 => sma -longname772 => sn -longname4227 => sna -longname825 => so -longname4281 => soa -longname879 => sp -longname4335 => spa -longname933 => sq -longname4389 => sqa -longname987 => sr -longname4443 => sra -longname1041 => ss -longname4497 => ssa -longname1095 => st -longname4551 => sta -longname1149 => su -longname4605 => sua -longname1203 => sv -longname4659 => sva -longname1257 => sw -longname4713 => swa -longname1311 => sx -longname4767 => sxa -longname1365 => sy -longname4821 => sya -longname1419 => sz -longname4875 => sza -longname19 => t -longname2932 => t$ -longname2986 => t0 -longname3040 => t1 -longname3094 => t2 -longname3148 => t3 -longname3202 => t4 -longname3256 => t5 -longname3310 => t6 -longname3364 => t7 -longname3418 => t8 -longname3472 => t9 -longname1474 => tA -longname4930 => tAa -longname1528 => tB -longname4984 => tBa -longname1582 => tC -longname1636 => tD -longname1690 => tE -longname1744 => tF -longname1798 => tG -longname1852 => tH -longname1906 => tI -longname1960 => tJ -longname2014 => tK -longname2068 => tL -longname2122 => tM -longname2176 => tN -longname2230 => tO -longname2284 => tP -longname2338 => tQ -longname2392 => tR -longname2446 => tS -longname2500 => tT -longname2554 => tU -longname2608 => tV -longname2662 => tW -longname2716 => tX -longname2770 => tY -longname2824 => tZ -longname2878 => t_ -longname73 => ta -longname3526 => taa -longname127 => tb -longname3580 => tba -longname181 => tc -longname3634 => tca -longname235 => td -longname3688 => tda -longname289 => te -longname3742 => tea -longname342 => tf -longname3796 => tfa -longname396 => tg -longname3850 => tga -longname450 => th -longname3904 => tha -longname504 => ti -longname3958 => tia -longname558 => tj -longname4012 => tja -longname612 => tk -longname4066 => tka -longname666 => tl -longname4120 => tla -longname720 => tm -longname4174 => tma -longname773 => tn -longname4228 => tna -longname826 => to -longname4282 => toa -longname880 => tp -longname4336 => tpa -longname934 => tq -longname4390 => tqa -longname988 => tr -longname4444 => tra -longname1042 => ts -longname4498 => tsa -longname1096 => tt -longname4552 => tta -longname1150 => tu -longname4606 => tua -longname1204 => tv -longname4660 => tva -longname1258 => tw -longname4714 => twa -longname1312 => tx -longname4768 => txa -longname1366 => ty -longname4822 => tya -longname1420 => tz -longname4876 => tza -longname20 => u -longname2933 => u$ -longname2987 => u0 -longname3041 => u1 -longname3095 => u2 -longname3149 => u3 -longname3203 => u4 -longname3257 => u5 -longname3311 => u6 -longname3365 => u7 -longname3419 => u8 -longname3473 => u9 -longname1475 => uA -longname4931 => uAa -longname1529 => uB -longname4985 => uBa -longname1583 => uC -longname1637 => uD -longname1691 => uE -longname1745 => uF -longname1799 => uG -longname1853 => uH -longname1907 => uI -longname1961 => uJ -longname2015 => uK -longname2069 => uL -longname2123 => uM -longname2177 => uN -longname2231 => uO -longname2285 => uP -longname2339 => uQ -longname2393 => uR -longname2447 => uS -longname2501 => uT -longname2555 => uU -longname2609 => uV -longname2663 => uW -longname2717 => uX -longname2771 => uY -longname2825 => uZ -longname2879 => u_ -longname74 => ua -longname3527 => uaa -longname128 => ub -longname3581 => uba -longname182 => uc -longname3635 => uca -longname236 => ud -longname3689 => uda -longname290 => ue -longname3743 => uea -longname343 => uf -longname3797 => ufa -longname397 => ug -longname3851 => uga -longname451 => uh -longname3905 => uha -longname505 => ui -longname3959 => uia -longname559 => uj -longname4013 => uja -longname613 => uk -longname4067 => uka -longname667 => ul -longname4121 => ula -longname721 => um -longname4175 => uma -longname774 => un -longname4229 => una -longname827 => uo -longname4283 => uoa -longname881 => up -longname4337 => upa -longname935 => uq -longname4391 => uqa -longname989 => ur -longname4445 => ura -longname1043 => us -longname4499 => usa -longname1097 => ut -longname4553 => uta -longname1151 => uu -longname4607 => uua -longname1205 => uv -longname4661 => uva -longname1259 => uw -longname4715 => uwa -longname1313 => ux -longname4769 => uxa -longname1367 => uy -longname4823 => uya -longname1421 => uz -longname4877 => uza -longname21 => v -longname2934 => v$ -longname2988 => v0 -longname3042 => v1 -longname3096 => v2 -longname3150 => v3 -longname3204 => v4 -longname3258 => v5 -longname3312 => v6 -longname3366 => v7 -longname3420 => v8 -longname3474 => v9 -longname1476 => vA -longname4932 => vAa -longname1530 => vB -longname4986 => vBa -longname1584 => vC -longname1638 => vD -longname1692 => vE -longname1746 => vF -longname1800 => vG -longname1854 => vH -longname1908 => vI -longname1962 => vJ -longname2016 => vK -longname2070 => vL -longname2124 => vM -longname2178 => vN -longname2232 => vO -longname2286 => vP -longname2340 => vQ -longname2394 => vR -longname2448 => vS -longname2502 => vT -longname2556 => vU -longname2610 => vV -longname2664 => vW -longname2718 => vX -longname2772 => vY -longname2826 => vZ -longname2880 => v_ -longname75 => va -longname3528 => vaa -longname129 => vb -longname3582 => vba -longname183 => vc -longname3636 => vca -longname237 => vd -longname3690 => vda -longname291 => ve -longname3744 => vea -longname344 => vf -longname3798 => vfa -longname398 => vg -longname3852 => vga -longname452 => vh -longname3906 => vha -longname506 => vi -longname3960 => via -longname560 => vj -longname4014 => vja -longname614 => vk -longname4068 => vka -longname668 => vl -longname4122 => vla -longname722 => vm -longname4176 => vma -longname775 => vn -longname4230 => vna -longname828 => vo -longname4284 => voa -longname882 => vp -longname4338 => vpa -longname936 => vq -longname4392 => vqa -longname990 => vr -longname4446 => vra -longname1044 => vs -longname4500 => vsa -longname1098 => vt -longname4554 => vta -longname1152 => vu -longname4608 => vua -longname1206 => vv -longname4662 => vva -longname1260 => vw -longname4716 => vwa -longname1314 => vx -longname4770 => vxa -longname1368 => vy -longname4824 => vya -longname1422 => vz -longname4878 => vza -longname22 => w -longname2935 => w$ -longname2989 => w0 -longname3043 => w1 -longname3097 => w2 -longname3151 => w3 -longname3205 => w4 -longname3259 => w5 -longname3313 => w6 -longname3367 => w7 -longname3421 => w8 -longname3475 => w9 -longname1477 => wA -longname4933 => wAa -longname1531 => wB -longname4987 => wBa -longname1585 => wC -longname1639 => wD -longname1693 => wE -longname1747 => wF -longname1801 => wG -longname1855 => wH -longname1909 => wI -longname1963 => wJ -longname2017 => wK -longname2071 => wL -longname2125 => wM -longname2179 => wN -longname2233 => wO -longname2287 => wP -longname2341 => wQ -longname2395 => wR -longname2449 => wS -longname2503 => wT -longname2557 => wU -longname2611 => wV -longname2665 => wW -longname2719 => wX -longname2773 => wY -longname2827 => wZ -longname2881 => w_ -longname76 => wa -longname3529 => waa -longname130 => wb -longname3583 => wba -longname184 => wc -longname3637 => wca -longname238 => wd -longname3691 => wda -longname292 => we -longname3745 => wea -longname345 => wf -longname3799 => wfa -longname399 => wg -longname3853 => wga -longname453 => wh -longname3907 => wha -longname507 => wi -longname3961 => wia -longname561 => wj -longname4015 => wja -longname615 => wk -longname4069 => wka -longname669 => wl -longname4123 => wla -longname723 => wm -longname4177 => wma -longname776 => wn -longname4231 => wna -longname829 => wo -longname4285 => woa -longname883 => wp -longname4339 => wpa -longname937 => wq -longname4393 => wqa -longname991 => wr -longname4447 => wra -longname1045 => ws -longname4501 => wsa -longname1099 => wt -longname4555 => wta -longname1153 => wu -longname4609 => wua -longname1207 => wv -longname4663 => wva -longname1261 => ww -longname4717 => wwa -longname1315 => wx -longname4771 => wxa -longname1369 => wy -longname4825 => wya -longname1423 => wz -longname4879 => wza -longname23 => x -longname2936 => x$ -longname2990 => x0 -longname3044 => x1 -longname3098 => x2 -longname3152 => x3 -longname3206 => x4 -longname3260 => x5 -longname3314 => x6 -longname3368 => x7 -longname3422 => x8 -longname3476 => x9 -longname1478 => xA -longname4934 => xAa -longname1532 => xB -longname4988 => xBa -longname1586 => xC -longname1640 => xD -longname1694 => xE -longname1748 => xF -longname1802 => xG -longname1856 => xH -longname1910 => xI -longname1964 => xJ -longname2018 => xK -longname2072 => xL -longname2126 => xM -longname2180 => xN -longname2234 => xO -longname2288 => xP -longname2342 => xQ -longname2396 => xR -longname2450 => xS -longname2504 => xT -longname2558 => xU -longname2612 => xV -longname2666 => xW -longname2720 => xX -longname2774 => xY -longname2828 => xZ -longname2882 => x_ -longname77 => xa -longname3530 => xaa -longname131 => xb -longname3584 => xba -longname185 => xc -longname3638 => xca -longname239 => xd -longname3692 => xda -longname293 => xe -longname3746 => xea -longname346 => xf -longname3800 => xfa -longname400 => xg -longname3854 => xga -longname454 => xh -longname3908 => xha -longname508 => xi -longname3962 => xia -longname562 => xj -longname4016 => xja -longname616 => xk -longname4070 => xka -longname670 => xl -longname4124 => xla -longname724 => xm -longname4178 => xma -longname777 => xn -longname4232 => xna -longname830 => xo -longname4286 => xoa -longname884 => xp -longname4340 => xpa -longname938 => xq -longname4394 => xqa -longname992 => xr -longname4448 => xra -longname1046 => xs -longname4502 => xsa -longname1100 => xt -longname4556 => xta -longname1154 => xu -longname4610 => xua -longname1208 => xv -longname4664 => xva -longname1262 => xw -longname4718 => xwa -longname1316 => xx -longname4772 => xxa -longname1370 => xy -longname4826 => xya -longname1424 => xz -longname4880 => xza -longname24 => y -longname2937 => y$ -longname2991 => y0 -longname3045 => y1 -longname3099 => y2 -longname3153 => y3 -longname3207 => y4 -longname3261 => y5 -longname3315 => y6 -longname3369 => y7 -longname3423 => y8 -longname3477 => y9 -longname1479 => yA -longname4935 => yAa -longname1533 => yB -longname4989 => yBa -longname1587 => yC -longname1641 => yD -longname1695 => yE -longname1749 => yF -longname1803 => yG -longname1857 => yH -longname1911 => yI -longname1965 => yJ -longname2019 => yK -longname2073 => yL -longname2127 => yM -longname2181 => yN -longname2235 => yO -longname2289 => yP -longname2343 => yQ -longname2397 => yR -longname2451 => yS -longname2505 => yT -longname2559 => yU -longname2613 => yV -longname2667 => yW -longname2721 => yX -longname2775 => yY -longname2829 => yZ -longname2883 => y_ -longname78 => ya -longname3531 => yaa -longname132 => yb -longname3585 => yba -longname186 => yc -longname3639 => yca -longname240 => yd -longname3693 => yda -longname294 => ye -longname3747 => yea -longname347 => yf -longname3801 => yfa -longname401 => yg -longname3855 => yga -longname455 => yh -longname3909 => yha -longname509 => yi -longname3963 => yia -longname563 => yj -longname4017 => yja -longname617 => yk -longname4071 => yka -longname671 => yl -longname4125 => yla -longname725 => ym -longname4179 => yma -longname778 => yn -longname4233 => yna -longname831 => yo -longname4287 => yoa -longname885 => yp -longname4341 => ypa -longname939 => yq -longname4395 => yqa -longname993 => yr -longname4449 => yra -longname1047 => ys -longname4503 => ysa -longname1101 => yt -longname4557 => yta -longname1155 => yu -longname4611 => yua -longname1209 => yv -longname4665 => yva -longname1263 => yw -longname4719 => ywa -longname1317 => yx -longname4773 => yxa -longname1371 => yy -longname4827 => yya -longname1425 => yz -longname4881 => yza -longname25 => z -longname2938 => z$ -longname2992 => z0 -longname3046 => z1 -longname3100 => z2 -longname3154 => z3 -longname3208 => z4 -longname3262 => z5 -longname3316 => z6 -longname3370 => z7 -longname3424 => z8 -longname3478 => z9 -longname1480 => zA -longname4936 => zAa -longname1534 => zB -longname4990 => zBa -longname1588 => zC -longname1642 => zD -longname1696 => zE -longname1750 => zF -longname1804 => zG -longname1858 => zH -longname1912 => zI -longname1966 => zJ -longname2020 => zK -longname2074 => zL -longname2128 => zM -longname2182 => zN -longname2236 => zO -longname2290 => zP -longname2344 => zQ -longname2398 => zR -longname2452 => zS -longname2506 => zT -longname2560 => zU -longname2614 => zV -longname2668 => zW -longname2722 => zX -longname2776 => zY -longname2830 => zZ -longname2884 => z_ -longname79 => za -longname3532 => zaa -longname133 => zb -longname3586 => zba -longname187 => zc -longname3640 => zca -longname241 => zd -longname3694 => zda -longname295 => ze -longname3748 => zea -longname348 => zf -longname3802 => zfa -longname402 => zg -longname3856 => zga -longname456 => zh -longname3910 => zha -longname510 => zi -longname3964 => zia -longname564 => zj -longname4018 => zja -longname618 => zk -longname4072 => zka -longname672 => zl -longname4126 => zla -longname726 => zm -longname4180 => zma -longname779 => zn -longname4234 => zna -longname832 => zo -longname4288 => zoa -longname886 => zp -longname4342 => zpa -longname940 => zq -longname4396 => zqa -longname994 => zr -longname4450 => zra -longname1048 => zs -longname4504 => zsa -longname1102 => zt -longname4558 => zta -longname1156 => zu -longname4612 => zua -longname1210 => zv -longname4666 => zva -longname1264 => zw -longname4720 => zwa -longname1318 => zx -longname4774 => zxa -longname1372 => zy -longname4828 => zya -longname1426 => zz -longname4882 => zza +longname2911 => a$ +longname2965 => a0 +longname3019 => a1 +longname3073 => a2 +longname3127 => a3 +longname3181 => a4 +longname3235 => a5 +longname3289 => a6 +longname3343 => a7 +longname3397 => a8 +longname3451 => a9 +longname1453 => aA +longname4909 => aAa +longname1507 => aB +longname4963 => aBa +longname1561 => aC +longname1615 => aD +longname1669 => aE +longname1723 => aF +longname1777 => aG +longname1831 => aH +longname1885 => aI +longname1939 => aJ +longname1993 => aK +longname2047 => aL +longname2101 => aM +longname2155 => aN +longname2209 => aO +longname2263 => aP +longname2317 => aQ +longname2371 => aR +longname2425 => aS +longname2479 => aT +longname2533 => aU +longname2587 => aV +longname2641 => aW +longname2695 => aX +longname2749 => aY +longname2803 => aZ +longname2857 => a_ +longname52 => aa +longname3505 => aaa +longname106 => ab +longname3559 => aba +longname160 => ac +longname3613 => aca +longname214 => ad +longname3667 => ada +longname268 => ae +longname3721 => aea +longname322 => af +longname3775 => afa +longname375 => ag +longname3829 => aga +longname429 => ah +longname3883 => aha +longname483 => ai +longname3937 => aia +longname537 => aj +longname3991 => aja +longname591 => ak +longname4045 => aka +longname645 => al +longname4099 => ala +longname699 => am +longname4153 => ama +longname753 => an +longname4207 => ana +longname806 => ao +longname4261 => aoa +longname859 => ap +longname4315 => apa +longname913 => aq +longname4369 => aqa +longname967 => ar +longname4423 => ara +longname1021 => as +longname4477 => asa +longname1075 => at +longname4531 => ata +longname1129 => au +longname4585 => aua +longname1183 => av +longname4639 => ava +longname1237 => aw +longname4693 => awa +longname1291 => ax +longname4747 => axa +longname1345 => ay +longname4801 => aya +longname1399 => az +longname4855 => aza +__memory_base => b +longname2912 => b$ +longname2966 => b0 +longname3020 => b1 +longname3074 => b2 +longname3128 => b3 +longname3182 => b4 +longname3236 => b5 +longname3290 => b6 +longname3344 => b7 +longname3398 => b8 +longname3452 => b9 +longname1454 => bA +longname4910 => bAa +longname1508 => bB +longname4964 => bBa +longname1562 => bC +longname1616 => bD +longname1670 => bE +longname1724 => bF +longname1778 => bG +longname1832 => bH +longname1886 => bI +longname1940 => bJ +longname1994 => bK +longname2048 => bL +longname2102 => bM +longname2156 => bN +longname2210 => bO +longname2264 => bP +longname2318 => bQ +longname2372 => bR +longname2426 => bS +longname2480 => bT +longname2534 => bU +longname2588 => bV +longname2642 => bW +longname2696 => bX +longname2750 => bY +longname2804 => bZ +longname2858 => b_ +longname53 => ba +longname3506 => baa +longname107 => bb +longname3560 => bba +longname161 => bc +longname3614 => bca +longname215 => bd +longname3668 => bda +longname269 => be +longname3722 => bea +longname323 => bf +longname3776 => bfa +longname376 => bg +longname3830 => bga +longname430 => bh +longname3884 => bha +longname484 => bi +longname3938 => bia +longname538 => bj +longname3992 => bja +longname592 => bk +longname4046 => bka +longname646 => bl +longname4100 => bla +longname700 => bm +longname4154 => bma +longname754 => bn +longname4208 => bna +longname807 => bo +longname4262 => boa +longname860 => bp +longname4316 => bpa +longname914 => bq +longname4370 => bqa +longname968 => br +longname4424 => bra +longname1022 => bs +longname4478 => bsa +longname1076 => bt +longname4532 => bta +longname1130 => bu +longname4586 => bua +longname1184 => bv +longname4640 => bva +longname1238 => bw +longname4694 => bwa +longname1292 => bx +longname4748 => bxa +longname1346 => by +longname4802 => bya +longname1400 => bz +longname4856 => bza +__table_base => c +longname2913 => c$ +longname2967 => c0 +longname3021 => c1 +longname3075 => c2 +longname3129 => c3 +longname3183 => c4 +longname3237 => c5 +longname3291 => c6 +longname3345 => c7 +longname3399 => c8 +longname3453 => c9 +longname1455 => cA +longname4911 => cAa +longname1509 => cB +longname4965 => cBa +longname1563 => cC +longname1617 => cD +longname1671 => cE +longname1725 => cF +longname1779 => cG +longname1833 => cH +longname1887 => cI +longname1941 => cJ +longname1995 => cK +longname2049 => cL +longname2103 => cM +longname2157 => cN +longname2211 => cO +longname2265 => cP +longname2319 => cQ +longname2373 => cR +longname2427 => cS +longname2481 => cT +longname2535 => cU +longname2589 => cV +longname2643 => cW +longname2697 => cX +longname2751 => cY +longname2805 => cZ +longname2859 => c_ +longname54 => ca +longname3507 => caa +longname108 => cb +longname3561 => cba +longname162 => cc +longname3615 => cca +longname216 => cd +longname3669 => cda +longname270 => ce +longname3723 => cea +longname324 => cf +longname3777 => cfa +longname377 => cg +longname3831 => cga +longname431 => ch +longname3885 => cha +longname485 => ci +longname3939 => cia +longname539 => cj +longname3993 => cja +longname593 => ck +longname4047 => cka +longname647 => cl +longname4101 => cla +longname701 => cm +longname4155 => cma +longname755 => cn +longname4209 => cna +longname808 => co +longname4263 => coa +longname861 => cp +longname4317 => cpa +longname915 => cq +longname4371 => cqa +longname969 => cr +longname4425 => cra +longname1023 => cs +longname4479 => csa +longname1077 => ct +longname4533 => cta +longname1131 => cu +longname4587 => cua +longname1185 => cv +longname4641 => cva +longname1239 => cw +longname4695 => cwa +longname1293 => cx +longname4749 => cxa +longname1347 => cy +longname4803 => cya +longname1401 => cz +longname4857 => cza +longname1 => d +longname2914 => d$ +longname2968 => d0 +longname3022 => d1 +longname3076 => d2 +longname3130 => d3 +longname3184 => d4 +longname3238 => d5 +longname3292 => d6 +longname3346 => d7 +longname3400 => d8 +longname3454 => d9 +longname1456 => dA +longname4912 => dAa +longname1510 => dB +longname4966 => dBa +longname1564 => dC +longname1618 => dD +longname1672 => dE +longname1726 => dF +longname1780 => dG +longname1834 => dH +longname1888 => dI +longname1942 => dJ +longname1996 => dK +longname2050 => dL +longname2104 => dM +longname2158 => dN +longname2212 => dO +longname2266 => dP +longname2320 => dQ +longname2374 => dR +longname2428 => dS +longname2482 => dT +longname2536 => dU +longname2590 => dV +longname2644 => dW +longname2698 => dX +longname2752 => dY +longname2806 => dZ +longname2860 => d_ +longname55 => da +longname3508 => daa +longname109 => db +longname3562 => dba +longname163 => dc +longname3616 => dca +longname217 => dd +longname3670 => dda +longname271 => de +longname3724 => dea +longname325 => df +longname3778 => dfa +longname378 => dg +longname3832 => dga +longname432 => dh +longname3886 => dha +longname486 => di +longname3940 => dia +longname540 => dj +longname3994 => dja +longname594 => dk +longname4048 => dka +longname648 => dl +longname4102 => dla +longname702 => dm +longname4156 => dma +longname756 => dn +longname4210 => dna +longname4264 => doa +longname862 => dp +longname4318 => dpa +longname916 => dq +longname4372 => dqa +longname970 => dr +longname4426 => dra +longname1024 => ds +longname4480 => dsa +longname1078 => dt +longname4534 => dta +longname1132 => du +longname4588 => dua +longname1186 => dv +longname4642 => dva +longname1240 => dw +longname4696 => dwa +longname1294 => dx +longname4750 => dxa +longname1348 => dy +longname4804 => dya +longname1402 => dz +longname4858 => dza +longname2 => e +longname2915 => e$ +longname2969 => e0 +longname3023 => e1 +longname3077 => e2 +longname3131 => e3 +longname3185 => e4 +longname3239 => e5 +longname3293 => e6 +longname3347 => e7 +longname3401 => e8 +longname3455 => e9 +longname1457 => eA +longname4913 => eAa +longname1511 => eB +longname4967 => eBa +longname1565 => eC +longname1619 => eD +longname1673 => eE +longname1727 => eF +longname1781 => eG +longname1835 => eH +longname1889 => eI +longname1943 => eJ +longname1997 => eK +longname2051 => eL +longname2105 => eM +longname2159 => eN +longname2213 => eO +longname2267 => eP +longname2321 => eQ +longname2375 => eR +longname2429 => eS +longname2483 => eT +longname2537 => eU +longname2591 => eV +longname2645 => eW +longname2699 => eX +longname2753 => eY +longname2807 => eZ +longname2861 => e_ +longname56 => ea +longname3509 => eaa +longname110 => eb +longname3563 => eba +longname164 => ec +longname3617 => eca +longname218 => ed +longname3671 => eda +longname272 => ee +longname3725 => eea +longname326 => ef +longname3779 => efa +longname379 => eg +longname3833 => ega +longname433 => eh +longname3887 => eha +longname487 => ei +longname3941 => eia +longname541 => ej +longname3995 => eja +longname595 => ek +longname4049 => eka +longname649 => el +longname4103 => ela +longname703 => em +longname4157 => ema +longname757 => en +longname4211 => ena +longname809 => eo +longname4265 => eoa +longname863 => ep +longname4319 => epa +longname917 => eq +longname4373 => eqa +longname971 => er +longname4427 => era +longname1025 => es +longname4481 => esa +longname1079 => et +longname4535 => eta +longname1133 => eu +longname4589 => eua +longname1187 => ev +longname4643 => eva +longname1241 => ew +longname4697 => ewa +longname1295 => ex +longname4751 => exa +longname1349 => ey +longname4805 => eya +longname1403 => ez +longname4859 => eza +longname3 => f +longname2916 => f$ +longname2970 => f0 +longname3024 => f1 +longname3078 => f2 +longname3132 => f3 +longname3186 => f4 +longname3240 => f5 +longname3294 => f6 +longname3348 => f7 +longname3402 => f8 +longname3456 => f9 +longname1458 => fA +longname4914 => fAa +longname1512 => fB +longname4968 => fBa +longname1566 => fC +longname1620 => fD +longname1674 => fE +longname1728 => fF +longname1782 => fG +longname1836 => fH +longname1890 => fI +longname1944 => fJ +longname1998 => fK +longname2052 => fL +longname2106 => fM +longname2160 => fN +longname2214 => fO +longname2268 => fP +longname2322 => fQ +longname2376 => fR +longname2430 => fS +longname2484 => fT +longname2538 => fU +longname2592 => fV +longname2646 => fW +longname2700 => fX +longname2754 => fY +longname2808 => fZ +longname2862 => f_ +longname57 => fa +longname3510 => faa +longname111 => fb +longname3564 => fba +longname165 => fc +longname3618 => fca +longname219 => fd +longname3672 => fda +longname273 => fe +longname3726 => fea +longname327 => ff +longname3780 => ffa +longname380 => fg +longname3834 => fga +longname434 => fh +longname3888 => fha +longname488 => fi +longname3942 => fia +longname542 => fj +longname3996 => fja +longname596 => fk +longname4050 => fka +longname650 => fl +longname4104 => fla +longname704 => fm +longname4158 => fma +longname758 => fn +longname4212 => fna +longname810 => fo +longname4266 => foa +longname864 => fp +longname4320 => fpa +longname918 => fq +longname4374 => fqa +longname972 => fr +longname4428 => fra +longname1026 => fs +longname4482 => fsa +longname1080 => ft +longname4536 => fta +longname1134 => fu +longname4590 => fua +longname1188 => fv +longname4644 => fva +longname1242 => fw +longname4698 => fwa +longname1296 => fx +longname4752 => fxa +longname1350 => fy +longname4806 => fya +longname1404 => fz +longname4860 => fza +longname4 => g +longname2917 => g$ +longname2971 => g0 +longname3025 => g1 +longname3079 => g2 +longname3133 => g3 +longname3187 => g4 +longname3241 => g5 +longname3295 => g6 +longname3349 => g7 +longname3403 => g8 +longname3457 => g9 +longname1459 => gA +longname4915 => gAa +longname1513 => gB +longname4969 => gBa +longname1567 => gC +longname1621 => gD +longname1675 => gE +longname1729 => gF +longname1783 => gG +longname1837 => gH +longname1891 => gI +longname1945 => gJ +longname1999 => gK +longname2053 => gL +longname2107 => gM +longname2161 => gN +longname2215 => gO +longname2269 => gP +longname2323 => gQ +longname2377 => gR +longname2431 => gS +longname2485 => gT +longname2539 => gU +longname2593 => gV +longname2647 => gW +longname2701 => gX +longname2755 => gY +longname2809 => gZ +longname2863 => g_ +longname58 => ga +longname3511 => gaa +longname112 => gb +longname3565 => gba +longname166 => gc +longname3619 => gca +longname220 => gd +longname3673 => gda +longname274 => ge +longname3727 => gea +longname328 => gf +longname3781 => gfa +longname381 => gg +longname3835 => gga +longname435 => gh +longname3889 => gha +longname489 => gi +longname3943 => gia +longname543 => gj +longname3997 => gja +longname597 => gk +longname4051 => gka +longname651 => gl +longname4105 => gla +longname705 => gm +longname4159 => gma +longname759 => gn +longname4213 => gna +longname811 => go +longname4267 => goa +longname865 => gp +longname4321 => gpa +longname919 => gq +longname4375 => gqa +longname973 => gr +longname4429 => gra +longname1027 => gs +longname4483 => gsa +longname1081 => gt +longname4537 => gta +longname1135 => gu +longname4591 => gua +longname1189 => gv +longname4645 => gva +longname1243 => gw +longname4699 => gwa +longname1297 => gx +longname4753 => gxa +longname1351 => gy +longname4807 => gya +longname1405 => gz +longname4861 => gza +longname5 => h +longname2918 => h$ +longname2972 => h0 +longname3026 => h1 +longname3080 => h2 +longname3134 => h3 +longname3188 => h4 +longname3242 => h5 +longname3296 => h6 +longname3350 => h7 +longname3404 => h8 +longname3458 => h9 +longname1460 => hA +longname4916 => hAa +longname1514 => hB +longname4970 => hBa +longname1568 => hC +longname1622 => hD +longname1676 => hE +longname1730 => hF +longname1784 => hG +longname1838 => hH +longname1892 => hI +longname1946 => hJ +longname2000 => hK +longname2054 => hL +longname2108 => hM +longname2162 => hN +longname2216 => hO +longname2270 => hP +longname2324 => hQ +longname2378 => hR +longname2432 => hS +longname2486 => hT +longname2540 => hU +longname2594 => hV +longname2648 => hW +longname2702 => hX +longname2756 => hY +longname2810 => hZ +longname2864 => h_ +longname59 => ha +longname3512 => haa +longname113 => hb +longname3566 => hba +longname167 => hc +longname3620 => hca +longname221 => hd +longname3674 => hda +longname275 => he +longname3728 => hea +longname329 => hf +longname3782 => hfa +longname382 => hg +longname3836 => hga +longname436 => hh +longname3890 => hha +longname490 => hi +longname3944 => hia +longname544 => hj +longname3998 => hja +longname598 => hk +longname4052 => hka +longname652 => hl +longname4106 => hla +longname706 => hm +longname4160 => hma +longname760 => hn +longname4214 => hna +longname812 => ho +longname4268 => hoa +longname866 => hp +longname4322 => hpa +longname920 => hq +longname4376 => hqa +longname974 => hr +longname4430 => hra +longname1028 => hs +longname4484 => hsa +longname1082 => ht +longname4538 => hta +longname1136 => hu +longname4592 => hua +longname1190 => hv +longname4646 => hva +longname1244 => hw +longname4700 => hwa +longname1298 => hx +longname4754 => hxa +longname1352 => hy +longname4808 => hya +longname1406 => hz +longname4862 => hza +longname6 => i +longname2919 => i$ +longname2973 => i0 +longname3027 => i1 +longname3081 => i2 +longname3135 => i3 +longname3189 => i4 +longname3243 => i5 +longname3297 => i6 +longname3351 => i7 +longname3405 => i8 +longname3459 => i9 +longname1461 => iA +longname4917 => iAa +longname1515 => iB +longname4971 => iBa +longname1569 => iC +longname1623 => iD +longname1677 => iE +longname1731 => iF +longname1785 => iG +longname1839 => iH +longname1893 => iI +longname1947 => iJ +longname2001 => iK +longname2055 => iL +longname2109 => iM +longname2163 => iN +longname2217 => iO +longname2271 => iP +longname2325 => iQ +longname2379 => iR +longname2433 => iS +longname2487 => iT +longname2541 => iU +longname2595 => iV +longname2649 => iW +longname2703 => iX +longname2757 => iY +longname2811 => iZ +longname2865 => i_ +longname60 => ia +longname3513 => iaa +longname114 => ib +longname3567 => iba +longname168 => ic +longname3621 => ica +longname222 => id +longname3675 => ida +longname276 => ie +longname3729 => iea +longname3783 => ifa +longname383 => ig +longname3837 => iga +longname437 => ih +longname3891 => iha +longname491 => ii +longname3945 => iia +longname545 => ij +longname3999 => ija +longname599 => ik +longname4053 => ika +longname653 => il +longname4107 => ila +longname707 => im +longname4161 => ima +longname4215 => ina +longname813 => io +longname4269 => ioa +longname867 => ip +longname4323 => ipa +longname921 => iq +longname4377 => iqa +longname975 => ir +longname4431 => ira +longname1029 => is +longname4485 => isa +longname1083 => it +longname4539 => ita +longname1137 => iu +longname4593 => iua +longname1191 => iv +longname4647 => iva +longname1245 => iw +longname4701 => iwa +longname1299 => ix +longname4755 => ixa +longname1353 => iy +longname4809 => iya +longname1407 => iz +longname4863 => iza +longname7 => j +longname2920 => j$ +longname2974 => j0 +longname3028 => j1 +longname3082 => j2 +longname3136 => j3 +longname3190 => j4 +longname3244 => j5 +longname3298 => j6 +longname3352 => j7 +longname3406 => j8 +longname3460 => j9 +longname1462 => jA +longname4918 => jAa +longname1516 => jB +longname4972 => jBa +longname1570 => jC +longname1624 => jD +longname1678 => jE +longname1732 => jF +longname1786 => jG +longname1840 => jH +longname1894 => jI +longname1948 => jJ +longname2002 => jK +longname2056 => jL +longname2110 => jM +longname2164 => jN +longname2218 => jO +longname2272 => jP +longname2326 => jQ +longname2380 => jR +longname2434 => jS +longname2488 => jT +longname2542 => jU +longname2596 => jV +longname2650 => jW +longname2704 => jX +longname2758 => jY +longname2812 => jZ +longname2866 => j_ +longname61 => ja +longname3514 => jaa +longname115 => jb +longname3568 => jba +longname169 => jc +longname3622 => jca +longname223 => jd +longname3676 => jda +longname277 => je +longname3730 => jea +longname330 => jf +longname3784 => jfa +longname384 => jg +longname3838 => jga +longname438 => jh +longname3892 => jha +longname492 => ji +longname3946 => jia +longname546 => jj +longname4000 => jja +longname600 => jk +longname4054 => jka +longname654 => jl +longname4108 => jla +longname708 => jm +longname4162 => jma +longname761 => jn +longname4216 => jna +longname814 => jo +longname4270 => joa +longname868 => jp +longname4324 => jpa +longname922 => jq +longname4378 => jqa +longname976 => jr +longname4432 => jra +longname1030 => js +longname4486 => jsa +longname1084 => jt +longname4540 => jta +longname1138 => ju +longname4594 => jua +longname1192 => jv +longname4648 => jva +longname1246 => jw +longname4702 => jwa +longname1300 => jx +longname4756 => jxa +longname1354 => jy +longname4810 => jya +longname1408 => jz +longname4864 => jza +longname8 => k +longname2921 => k$ +longname2975 => k0 +longname3029 => k1 +longname3083 => k2 +longname3137 => k3 +longname3191 => k4 +longname3245 => k5 +longname3299 => k6 +longname3353 => k7 +longname3407 => k8 +longname3461 => k9 +longname1463 => kA +longname4919 => kAa +longname1517 => kB +longname4973 => kBa +longname1571 => kC +longname1625 => kD +longname1679 => kE +longname1733 => kF +longname1787 => kG +longname1841 => kH +longname1895 => kI +longname1949 => kJ +longname2003 => kK +longname2057 => kL +longname2111 => kM +longname2165 => kN +longname2219 => kO +longname2273 => kP +longname2327 => kQ +longname2381 => kR +longname2435 => kS +longname2489 => kT +longname2543 => kU +longname2597 => kV +longname2651 => kW +longname2705 => kX +longname2759 => kY +longname2813 => kZ +longname2867 => k_ +longname62 => ka +longname3515 => kaa +longname116 => kb +longname3569 => kba +longname170 => kc +longname3623 => kca +longname224 => kd +longname3677 => kda +longname278 => ke +longname3731 => kea +longname331 => kf +longname3785 => kfa +longname385 => kg +longname3839 => kga +longname439 => kh +longname3893 => kha +longname493 => ki +longname3947 => kia +longname547 => kj +longname4001 => kja +longname601 => kk +longname4055 => kka +longname655 => kl +longname4109 => kla +longname709 => km +longname4163 => kma +longname762 => kn +longname4217 => kna +longname815 => ko +longname4271 => koa +longname869 => kp +longname4325 => kpa +longname923 => kq +longname4379 => kqa +longname977 => kr +longname4433 => kra +longname1031 => ks +longname4487 => ksa +longname1085 => kt +longname4541 => kta +longname1139 => ku +longname4595 => kua +longname1193 => kv +longname4649 => kva +longname1247 => kw +longname4703 => kwa +longname1301 => kx +longname4757 => kxa +longname1355 => ky +longname4811 => kya +longname1409 => kz +longname4865 => kza +longname9 => l +longname2922 => l$ +longname2976 => l0 +longname3030 => l1 +longname3084 => l2 +longname3138 => l3 +longname3192 => l4 +longname3246 => l5 +longname3300 => l6 +longname3354 => l7 +longname3408 => l8 +longname3462 => l9 +longname1464 => lA +longname4920 => lAa +longname1518 => lB +longname4974 => lBa +longname1572 => lC +longname1626 => lD +longname1680 => lE +longname1734 => lF +longname1788 => lG +longname1842 => lH +longname1896 => lI +longname1950 => lJ +longname2004 => lK +longname2058 => lL +longname2112 => lM +longname2166 => lN +longname2220 => lO +longname2274 => lP +longname2328 => lQ +longname2382 => lR +longname2436 => lS +longname2490 => lT +longname2544 => lU +longname2598 => lV +longname2652 => lW +longname2706 => lX +longname2760 => lY +longname2814 => lZ +longname2868 => l_ +longname63 => la +longname3516 => laa +longname117 => lb +longname3570 => lba +longname171 => lc +longname3624 => lca +longname225 => ld +longname3678 => lda +longname279 => le +longname3732 => lea +longname332 => lf +longname3786 => lfa +longname386 => lg +longname3840 => lga +longname440 => lh +longname3894 => lha +longname494 => li +longname3948 => lia +longname548 => lj +longname4002 => lja +longname602 => lk +longname4056 => lka +longname656 => ll +longname4110 => lla +longname710 => lm +longname4164 => lma +longname763 => ln +longname4218 => lna +longname816 => lo +longname4272 => loa +longname870 => lp +longname4326 => lpa +longname924 => lq +longname4380 => lqa +longname978 => lr +longname4434 => lra +longname1032 => ls +longname4488 => lsa +longname1086 => lt +longname4542 => lta +longname1140 => lu +longname4596 => lua +longname1194 => lv +longname4650 => lva +longname1248 => lw +longname4704 => lwa +longname1302 => lx +longname4758 => lxa +longname1356 => ly +longname4812 => lya +longname1410 => lz +longname4866 => lza +longname10 => m +longname2923 => m$ +longname2977 => m0 +longname3031 => m1 +longname3085 => m2 +longname3139 => m3 +longname3193 => m4 +longname3247 => m5 +longname3301 => m6 +longname3355 => m7 +longname3409 => m8 +longname3463 => m9 +longname1465 => mA +longname4921 => mAa +longname1519 => mB +longname4975 => mBa +longname1573 => mC +longname1627 => mD +longname1681 => mE +longname1735 => mF +longname1789 => mG +longname1843 => mH +longname1897 => mI +longname1951 => mJ +longname2005 => mK +longname2059 => mL +longname2113 => mM +longname2167 => mN +longname2221 => mO +longname2275 => mP +longname2329 => mQ +longname2383 => mR +longname2437 => mS +longname2491 => mT +longname2545 => mU +longname2599 => mV +longname2653 => mW +longname2707 => mX +longname2761 => mY +longname2815 => mZ +longname2869 => m_ +longname64 => ma +longname3517 => maa +longname118 => mb +longname3571 => mba +longname172 => mc +longname3625 => mca +longname226 => md +longname3679 => mda +longname280 => me +longname3733 => mea +longname333 => mf +longname3787 => mfa +longname387 => mg +longname3841 => mga +longname441 => mh +longname3895 => mha +longname495 => mi +longname3949 => mia +longname549 => mj +longname4003 => mja +longname603 => mk +longname4057 => mka +longname657 => ml +longname4111 => mla +longname711 => mm +longname4165 => mma +longname764 => mn +longname4219 => mna +longname817 => mo +longname4273 => moa +longname871 => mp +longname4327 => mpa +longname925 => mq +longname4381 => mqa +longname979 => mr +longname4435 => mra +longname1033 => ms +longname4489 => msa +longname1087 => mt +longname4543 => mta +longname1141 => mu +longname4597 => mua +longname1195 => mv +longname4651 => mva +longname1249 => mw +longname4705 => mwa +longname1303 => mx +longname4759 => mxa +longname1357 => my +longname4813 => mya +longname1411 => mz +longname4867 => mza +longname11 => n +longname2924 => n$ +longname2978 => n0 +longname3032 => n1 +longname3086 => n2 +longname3140 => n3 +longname3194 => n4 +longname3248 => n5 +longname3302 => n6 +longname3356 => n7 +longname3410 => n8 +longname3464 => n9 +longname1466 => nA +longname4922 => nAa +longname1520 => nB +longname4976 => nBa +longname1574 => nC +longname1628 => nD +longname1682 => nE +longname1736 => nF +longname1790 => nG +longname1844 => nH +longname1898 => nI +longname1952 => nJ +longname2006 => nK +longname2060 => nL +longname2114 => nM +longname2168 => nN +longname2222 => nO +longname2276 => nP +longname2330 => nQ +longname2384 => nR +longname2438 => nS +longname2492 => nT +longname2546 => nU +longname2600 => nV +longname2654 => nW +longname2708 => nX +longname2762 => nY +longname2816 => nZ +longname2870 => n_ +longname65 => na +longname3518 => naa +longname119 => nb +longname3572 => nba +longname173 => nc +longname3626 => nca +longname227 => nd +longname3680 => nda +longname281 => ne +longname3734 => nea +longname334 => nf +longname3788 => nfa +longname388 => ng +longname3842 => nga +longname442 => nh +longname3896 => nha +longname496 => ni +longname3950 => nia +longname550 => nj +longname4004 => nja +longname604 => nk +longname4058 => nka +longname658 => nl +longname4112 => nla +longname712 => nm +longname4166 => nma +longname765 => nn +longname4220 => nna +longname818 => no +longname4274 => noa +longname872 => np +longname4328 => npa +longname926 => nq +longname4382 => nqa +longname980 => nr +longname4436 => nra +longname1034 => ns +longname4490 => nsa +longname1088 => nt +longname4544 => nta +longname1142 => nu +longname4598 => nua +longname1196 => nv +longname4652 => nva +longname1250 => nw +longname4706 => nwa +longname1304 => nx +longname4760 => nxa +longname1358 => ny +longname4814 => nya +longname1412 => nz +longname4868 => nza +longname12 => o +longname2925 => o$ +longname2979 => o0 +longname3033 => o1 +longname3087 => o2 +longname3141 => o3 +longname3195 => o4 +longname3249 => o5 +longname3303 => o6 +longname3357 => o7 +longname3411 => o8 +longname3465 => o9 +longname1467 => oA +longname4923 => oAa +longname1521 => oB +longname4977 => oBa +longname1575 => oC +longname1629 => oD +longname1683 => oE +longname1737 => oF +longname1791 => oG +longname1845 => oH +longname1899 => oI +longname1953 => oJ +longname2007 => oK +longname2061 => oL +longname2115 => oM +longname2169 => oN +longname2223 => oO +longname2277 => oP +longname2331 => oQ +longname2385 => oR +longname2439 => oS +longname2493 => oT +longname2547 => oU +longname2601 => oV +longname2655 => oW +longname2709 => oX +longname2763 => oY +longname2817 => oZ +longname2871 => o_ +longname66 => oa +longname3519 => oaa +longname120 => ob +longname3573 => oba +longname174 => oc +longname3627 => oca +longname228 => od +longname3681 => oda +longname282 => oe +longname3735 => oea +longname335 => of +longname3789 => ofa +longname389 => og +longname3843 => oga +longname443 => oh +longname3897 => oha +longname497 => oi +longname3951 => oia +longname551 => oj +longname4005 => oja +longname605 => ok +longname4059 => oka +longname659 => ol +longname4113 => ola +longname713 => om +longname4167 => oma +longname766 => on +longname4221 => ona +longname819 => oo +longname4275 => ooa +longname873 => op +longname4329 => opa +longname927 => oq +longname4383 => oqa +longname981 => or +longname4437 => ora +longname1035 => os +longname4491 => osa +longname1089 => ot +longname4545 => ota +longname1143 => ou +longname4599 => oua +longname1197 => ov +longname4653 => ova +longname1251 => ow +longname4707 => owa +longname1305 => ox +longname4761 => oxa +longname1359 => oy +longname4815 => oya +longname1413 => oz +longname4869 => oza +longname13 => p +longname2926 => p$ +longname2980 => p0 +longname3034 => p1 +longname3088 => p2 +longname3142 => p3 +longname3196 => p4 +longname3250 => p5 +longname3304 => p6 +longname3358 => p7 +longname3412 => p8 +longname3466 => p9 +longname1468 => pA +longname4924 => pAa +longname1522 => pB +longname4978 => pBa +longname1576 => pC +longname1630 => pD +longname1684 => pE +longname1738 => pF +longname1792 => pG +longname1846 => pH +longname1900 => pI +longname1954 => pJ +longname2008 => pK +longname2062 => pL +longname2116 => pM +longname2170 => pN +longname2224 => pO +longname2278 => pP +longname2332 => pQ +longname2386 => pR +longname2440 => pS +longname2494 => pT +longname2548 => pU +longname2602 => pV +longname2656 => pW +longname2710 => pX +longname2764 => pY +longname2818 => pZ +longname2872 => p_ +longname67 => pa +longname3520 => paa +longname121 => pb +longname3574 => pba +longname175 => pc +longname3628 => pca +longname229 => pd +longname3682 => pda +longname283 => pe +longname3736 => pea +longname336 => pf +longname3790 => pfa +longname390 => pg +longname3844 => pga +longname444 => ph +longname3898 => pha +longname498 => pi +longname3952 => pia +longname552 => pj +longname4006 => pja +longname606 => pk +longname4060 => pka +longname660 => pl +longname4114 => pla +longname714 => pm +longname4168 => pma +longname767 => pn +longname4222 => pna +longname820 => po +longname4276 => poa +longname874 => pp +longname4330 => ppa +longname928 => pq +longname4384 => pqa +longname982 => pr +longname4438 => pra +longname1036 => ps +longname4492 => psa +longname1090 => pt +longname4546 => pta +longname1144 => pu +longname4600 => pua +longname1198 => pv +longname4654 => pva +longname1252 => pw +longname4708 => pwa +longname1306 => px +longname4762 => pxa +longname1360 => py +longname4816 => pya +longname1414 => pz +longname4870 => pza +longname14 => q +longname2927 => q$ +longname2981 => q0 +longname3035 => q1 +longname3089 => q2 +longname3143 => q3 +longname3197 => q4 +longname3251 => q5 +longname3305 => q6 +longname3359 => q7 +longname3413 => q8 +longname3467 => q9 +longname1469 => qA +longname4925 => qAa +longname1523 => qB +longname4979 => qBa +longname1577 => qC +longname1631 => qD +longname1685 => qE +longname1739 => qF +longname1793 => qG +longname1847 => qH +longname1901 => qI +longname1955 => qJ +longname2009 => qK +longname2063 => qL +longname2117 => qM +longname2171 => qN +longname2225 => qO +longname2279 => qP +longname2333 => qQ +longname2387 => qR +longname2441 => qS +longname2495 => qT +longname2549 => qU +longname2603 => qV +longname2657 => qW +longname2711 => qX +longname2765 => qY +longname2819 => qZ +longname2873 => q_ +longname68 => qa +longname3521 => qaa +longname122 => qb +longname3575 => qba +longname176 => qc +longname3629 => qca +longname230 => qd +longname3683 => qda +longname284 => qe +longname3737 => qea +longname337 => qf +longname3791 => qfa +longname391 => qg +longname3845 => qga +longname445 => qh +longname3899 => qha +longname499 => qi +longname3953 => qia +longname553 => qj +longname4007 => qja +longname607 => qk +longname4061 => qka +longname661 => ql +longname4115 => qla +longname715 => qm +longname4169 => qma +longname768 => qn +longname4223 => qna +longname821 => qo +longname4277 => qoa +longname875 => qp +longname4331 => qpa +longname929 => qq +longname4385 => qqa +longname983 => qr +longname4439 => qra +longname1037 => qs +longname4493 => qsa +longname1091 => qt +longname4547 => qta +longname1145 => qu +longname4601 => qua +longname1199 => qv +longname4655 => qva +longname1253 => qw +longname4709 => qwa +longname1307 => qx +longname4763 => qxa +longname1361 => qy +longname4817 => qya +longname1415 => qz +longname4871 => qza +longname15 => r +longname2928 => r$ +longname2982 => r0 +longname3036 => r1 +longname3090 => r2 +longname3144 => r3 +longname3198 => r4 +longname3252 => r5 +longname3306 => r6 +longname3360 => r7 +longname3414 => r8 +longname3468 => r9 +longname1470 => rA +longname4926 => rAa +longname1524 => rB +longname4980 => rBa +longname1578 => rC +longname1632 => rD +longname1686 => rE +longname1740 => rF +longname1794 => rG +longname1848 => rH +longname1902 => rI +longname1956 => rJ +longname2010 => rK +longname2064 => rL +longname2118 => rM +longname2172 => rN +longname2226 => rO +longname2280 => rP +longname2334 => rQ +longname2388 => rR +longname2442 => rS +longname2496 => rT +longname2550 => rU +longname2604 => rV +longname2658 => rW +longname2712 => rX +longname2766 => rY +longname2820 => rZ +longname2874 => r_ +longname69 => ra +longname3522 => raa +longname123 => rb +longname3576 => rba +longname177 => rc +longname3630 => rca +longname231 => rd +longname3684 => rda +longname285 => re +longname3738 => rea +longname338 => rf +longname3792 => rfa +longname392 => rg +longname3846 => rga +longname446 => rh +longname3900 => rha +longname500 => ri +longname3954 => ria +longname554 => rj +longname4008 => rja +longname608 => rk +longname4062 => rka +longname662 => rl +longname4116 => rla +longname716 => rm +longname4170 => rma +longname769 => rn +longname4224 => rna +longname822 => ro +longname4278 => roa +longname876 => rp +longname4332 => rpa +longname930 => rq +longname4386 => rqa +longname984 => rr +longname4440 => rra +longname1038 => rs +longname4494 => rsa +longname1092 => rt +longname4548 => rta +longname1146 => ru +longname4602 => rua +longname1200 => rv +longname4656 => rva +longname1254 => rw +longname4710 => rwa +longname1308 => rx +longname4764 => rxa +longname1362 => ry +longname4818 => rya +longname1416 => rz +longname4872 => rza +longname16 => s +longname2929 => s$ +longname2983 => s0 +longname3037 => s1 +longname3091 => s2 +longname3145 => s3 +longname3199 => s4 +longname3253 => s5 +longname3307 => s6 +longname3361 => s7 +longname3415 => s8 +longname3469 => s9 +longname1471 => sA +longname4927 => sAa +longname1525 => sB +longname4981 => sBa +longname1579 => sC +longname1633 => sD +longname1687 => sE +longname1741 => sF +longname1795 => sG +longname1849 => sH +longname1903 => sI +longname1957 => sJ +longname2011 => sK +longname2065 => sL +longname2119 => sM +longname2173 => sN +longname2227 => sO +longname2281 => sP +longname2335 => sQ +longname2389 => sR +longname2443 => sS +longname2497 => sT +longname2551 => sU +longname2605 => sV +longname2659 => sW +longname2713 => sX +longname2767 => sY +longname2821 => sZ +longname2875 => s_ +longname70 => sa +longname3523 => saa +longname124 => sb +longname3577 => sba +longname178 => sc +longname3631 => sca +longname232 => sd +longname3685 => sda +longname286 => se +longname3739 => sea +longname339 => sf +longname3793 => sfa +longname393 => sg +longname3847 => sga +longname447 => sh +longname3901 => sha +longname501 => si +longname3955 => sia +longname555 => sj +longname4009 => sja +longname609 => sk +longname4063 => ska +longname663 => sl +longname4117 => sla +longname717 => sm +longname4171 => sma +longname770 => sn +longname4225 => sna +longname823 => so +longname4279 => soa +longname877 => sp +longname4333 => spa +longname931 => sq +longname4387 => sqa +longname985 => sr +longname4441 => sra +longname1039 => ss +longname4495 => ssa +longname1093 => st +longname4549 => sta +longname1147 => su +longname4603 => sua +longname1201 => sv +longname4657 => sva +longname1255 => sw +longname4711 => swa +longname1309 => sx +longname4765 => sxa +longname1363 => sy +longname4819 => sya +longname1417 => sz +longname4873 => sza +longname17 => t +longname2930 => t$ +longname2984 => t0 +longname3038 => t1 +longname3092 => t2 +longname3146 => t3 +longname3200 => t4 +longname3254 => t5 +longname3308 => t6 +longname3362 => t7 +longname3416 => t8 +longname3470 => t9 +longname1472 => tA +longname4928 => tAa +longname1526 => tB +longname4982 => tBa +longname1580 => tC +longname1634 => tD +longname1688 => tE +longname1742 => tF +longname1796 => tG +longname1850 => tH +longname1904 => tI +longname1958 => tJ +longname2012 => tK +longname2066 => tL +longname2120 => tM +longname2174 => tN +longname2228 => tO +longname2282 => tP +longname2336 => tQ +longname2390 => tR +longname2444 => tS +longname2498 => tT +longname2552 => tU +longname2606 => tV +longname2660 => tW +longname2714 => tX +longname2768 => tY +longname2822 => tZ +longname2876 => t_ +longname71 => ta +longname3524 => taa +longname125 => tb +longname3578 => tba +longname179 => tc +longname3632 => tca +longname233 => td +longname3686 => tda +longname287 => te +longname3740 => tea +longname340 => tf +longname3794 => tfa +longname394 => tg +longname3848 => tga +longname448 => th +longname3902 => tha +longname502 => ti +longname3956 => tia +longname556 => tj +longname4010 => tja +longname610 => tk +longname4064 => tka +longname664 => tl +longname4118 => tla +longname718 => tm +longname4172 => tma +longname771 => tn +longname4226 => tna +longname824 => to +longname4280 => toa +longname878 => tp +longname4334 => tpa +longname932 => tq +longname4388 => tqa +longname986 => tr +longname4442 => tra +longname1040 => ts +longname4496 => tsa +longname1094 => tt +longname4550 => tta +longname1148 => tu +longname4604 => tua +longname1202 => tv +longname4658 => tva +longname1256 => tw +longname4712 => twa +longname1310 => tx +longname4766 => txa +longname1364 => ty +longname4820 => tya +longname1418 => tz +longname4874 => tza +longname18 => u +longname2931 => u$ +longname2985 => u0 +longname3039 => u1 +longname3093 => u2 +longname3147 => u3 +longname3201 => u4 +longname3255 => u5 +longname3309 => u6 +longname3363 => u7 +longname3417 => u8 +longname3471 => u9 +longname1473 => uA +longname4929 => uAa +longname1527 => uB +longname4983 => uBa +longname1581 => uC +longname1635 => uD +longname1689 => uE +longname1743 => uF +longname1797 => uG +longname1851 => uH +longname1905 => uI +longname1959 => uJ +longname2013 => uK +longname2067 => uL +longname2121 => uM +longname2175 => uN +longname2229 => uO +longname2283 => uP +longname2337 => uQ +longname2391 => uR +longname2445 => uS +longname2499 => uT +longname2553 => uU +longname2607 => uV +longname2661 => uW +longname2715 => uX +longname2769 => uY +longname2823 => uZ +longname2877 => u_ +longname72 => ua +longname3525 => uaa +longname126 => ub +longname3579 => uba +longname180 => uc +longname3633 => uca +longname234 => ud +longname3687 => uda +longname288 => ue +longname3741 => uea +longname341 => uf +longname3795 => ufa +longname395 => ug +longname3849 => uga +longname449 => uh +longname3903 => uha +longname503 => ui +longname3957 => uia +longname557 => uj +longname4011 => uja +longname611 => uk +longname4065 => uka +longname665 => ul +longname4119 => ula +longname719 => um +longname4173 => uma +longname772 => un +longname4227 => una +longname825 => uo +longname4281 => uoa +longname879 => up +longname4335 => upa +longname933 => uq +longname4389 => uqa +longname987 => ur +longname4443 => ura +longname1041 => us +longname4497 => usa +longname1095 => ut +longname4551 => uta +longname1149 => uu +longname4605 => uua +longname1203 => uv +longname4659 => uva +longname1257 => uw +longname4713 => uwa +longname1311 => ux +longname4767 => uxa +longname1365 => uy +longname4821 => uya +longname1419 => uz +longname4875 => uza +longname19 => v +longname2932 => v$ +longname2986 => v0 +longname3040 => v1 +longname3094 => v2 +longname3148 => v3 +longname3202 => v4 +longname3256 => v5 +longname3310 => v6 +longname3364 => v7 +longname3418 => v8 +longname3472 => v9 +longname1474 => vA +longname4930 => vAa +longname1528 => vB +longname4984 => vBa +longname1582 => vC +longname1636 => vD +longname1690 => vE +longname1744 => vF +longname1798 => vG +longname1852 => vH +longname1906 => vI +longname1960 => vJ +longname2014 => vK +longname2068 => vL +longname2122 => vM +longname2176 => vN +longname2230 => vO +longname2284 => vP +longname2338 => vQ +longname2392 => vR +longname2446 => vS +longname2500 => vT +longname2554 => vU +longname2608 => vV +longname2662 => vW +longname2716 => vX +longname2770 => vY +longname2824 => vZ +longname2878 => v_ +longname73 => va +longname3526 => vaa +longname127 => vb +longname3580 => vba +longname181 => vc +longname3634 => vca +longname235 => vd +longname3688 => vda +longname289 => ve +longname3742 => vea +longname342 => vf +longname3796 => vfa +longname396 => vg +longname3850 => vga +longname450 => vh +longname3904 => vha +longname504 => vi +longname3958 => via +longname558 => vj +longname4012 => vja +longname612 => vk +longname4066 => vka +longname666 => vl +longname4120 => vla +longname720 => vm +longname4174 => vma +longname773 => vn +longname4228 => vna +longname826 => vo +longname4282 => voa +longname880 => vp +longname4336 => vpa +longname934 => vq +longname4390 => vqa +longname988 => vr +longname4444 => vra +longname1042 => vs +longname4498 => vsa +longname1096 => vt +longname4552 => vta +longname1150 => vu +longname4606 => vua +longname1204 => vv +longname4660 => vva +longname1258 => vw +longname4714 => vwa +longname1312 => vx +longname4768 => vxa +longname1366 => vy +longname4822 => vya +longname1420 => vz +longname4876 => vza +longname20 => w +longname2933 => w$ +longname2987 => w0 +longname3041 => w1 +longname3095 => w2 +longname3149 => w3 +longname3203 => w4 +longname3257 => w5 +longname3311 => w6 +longname3365 => w7 +longname3419 => w8 +longname3473 => w9 +longname1475 => wA +longname4931 => wAa +longname1529 => wB +longname4985 => wBa +longname1583 => wC +longname1637 => wD +longname1691 => wE +longname1745 => wF +longname1799 => wG +longname1853 => wH +longname1907 => wI +longname1961 => wJ +longname2015 => wK +longname2069 => wL +longname2123 => wM +longname2177 => wN +longname2231 => wO +longname2285 => wP +longname2339 => wQ +longname2393 => wR +longname2447 => wS +longname2501 => wT +longname2555 => wU +longname2609 => wV +longname2663 => wW +longname2717 => wX +longname2771 => wY +longname2825 => wZ +longname2879 => w_ +longname74 => wa +longname3527 => waa +longname128 => wb +longname3581 => wba +longname182 => wc +longname3635 => wca +longname236 => wd +longname3689 => wda +longname290 => we +longname3743 => wea +longname343 => wf +longname3797 => wfa +longname397 => wg +longname3851 => wga +longname451 => wh +longname3905 => wha +longname505 => wi +longname3959 => wia +longname559 => wj +longname4013 => wja +longname613 => wk +longname4067 => wka +longname667 => wl +longname4121 => wla +longname721 => wm +longname4175 => wma +longname774 => wn +longname4229 => wna +longname827 => wo +longname4283 => woa +longname881 => wp +longname4337 => wpa +longname935 => wq +longname4391 => wqa +longname989 => wr +longname4445 => wra +longname1043 => ws +longname4499 => wsa +longname1097 => wt +longname4553 => wta +longname1151 => wu +longname4607 => wua +longname1205 => wv +longname4661 => wva +longname1259 => ww +longname4715 => wwa +longname1313 => wx +longname4769 => wxa +longname1367 => wy +longname4823 => wya +longname1421 => wz +longname4877 => wza +longname21 => x +longname2934 => x$ +longname2988 => x0 +longname3042 => x1 +longname3096 => x2 +longname3150 => x3 +longname3204 => x4 +longname3258 => x5 +longname3312 => x6 +longname3366 => x7 +longname3420 => x8 +longname3474 => x9 +longname1476 => xA +longname4932 => xAa +longname1530 => xB +longname4986 => xBa +longname1584 => xC +longname1638 => xD +longname1692 => xE +longname1746 => xF +longname1800 => xG +longname1854 => xH +longname1908 => xI +longname1962 => xJ +longname2016 => xK +longname2070 => xL +longname2124 => xM +longname2178 => xN +longname2232 => xO +longname2286 => xP +longname2340 => xQ +longname2394 => xR +longname2448 => xS +longname2502 => xT +longname2556 => xU +longname2610 => xV +longname2664 => xW +longname2718 => xX +longname2772 => xY +longname2826 => xZ +longname2880 => x_ +longname75 => xa +longname3528 => xaa +longname129 => xb +longname3582 => xba +longname183 => xc +longname3636 => xca +longname237 => xd +longname3690 => xda +longname291 => xe +longname3744 => xea +longname344 => xf +longname3798 => xfa +longname398 => xg +longname3852 => xga +longname452 => xh +longname3906 => xha +longname506 => xi +longname3960 => xia +longname560 => xj +longname4014 => xja +longname614 => xk +longname4068 => xka +longname668 => xl +longname4122 => xla +longname722 => xm +longname4176 => xma +longname775 => xn +longname4230 => xna +longname828 => xo +longname4284 => xoa +longname882 => xp +longname4338 => xpa +longname936 => xq +longname4392 => xqa +longname990 => xr +longname4446 => xra +longname1044 => xs +longname4500 => xsa +longname1098 => xt +longname4554 => xta +longname1152 => xu +longname4608 => xua +longname1206 => xv +longname4662 => xva +longname1260 => xw +longname4716 => xwa +longname1314 => xx +longname4770 => xxa +longname1368 => xy +longname4824 => xya +longname1422 => xz +longname4878 => xza +longname22 => y +longname2935 => y$ +longname2989 => y0 +longname3043 => y1 +longname3097 => y2 +longname3151 => y3 +longname3205 => y4 +longname3259 => y5 +longname3313 => y6 +longname3367 => y7 +longname3421 => y8 +longname3475 => y9 +longname1477 => yA +longname4933 => yAa +longname1531 => yB +longname4987 => yBa +longname1585 => yC +longname1639 => yD +longname1693 => yE +longname1747 => yF +longname1801 => yG +longname1855 => yH +longname1909 => yI +longname1963 => yJ +longname2017 => yK +longname2071 => yL +longname2125 => yM +longname2179 => yN +longname2233 => yO +longname2287 => yP +longname2341 => yQ +longname2395 => yR +longname2449 => yS +longname2503 => yT +longname2557 => yU +longname2611 => yV +longname2665 => yW +longname2719 => yX +longname2773 => yY +longname2827 => yZ +longname2881 => y_ +longname76 => ya +longname3529 => yaa +longname130 => yb +longname3583 => yba +longname184 => yc +longname3637 => yca +longname238 => yd +longname3691 => yda +longname292 => ye +longname3745 => yea +longname345 => yf +longname3799 => yfa +longname399 => yg +longname3853 => yga +longname453 => yh +longname3907 => yha +longname507 => yi +longname3961 => yia +longname561 => yj +longname4015 => yja +longname615 => yk +longname4069 => yka +longname669 => yl +longname4123 => yla +longname723 => ym +longname4177 => yma +longname776 => yn +longname4231 => yna +longname829 => yo +longname4285 => yoa +longname883 => yp +longname4339 => ypa +longname937 => yq +longname4393 => yqa +longname991 => yr +longname4447 => yra +longname1045 => ys +longname4501 => ysa +longname1099 => yt +longname4555 => yta +longname1153 => yu +longname4609 => yua +longname1207 => yv +longname4663 => yva +longname1261 => yw +longname4717 => ywa +longname1315 => yx +longname4771 => yxa +longname1369 => yy +longname4825 => yya +longname1423 => yz +longname4879 => yza +longname23 => z +longname2936 => z$ +longname2990 => z0 +longname3044 => z1 +longname3098 => z2 +longname3152 => z3 +longname3206 => z4 +longname3260 => z5 +longname3314 => z6 +longname3368 => z7 +longname3422 => z8 +longname3476 => z9 +longname1478 => zA +longname4934 => zAa +longname1532 => zB +longname4988 => zBa +longname1586 => zC +longname1640 => zD +longname1694 => zE +longname1748 => zF +longname1802 => zG +longname1856 => zH +longname1910 => zI +longname1964 => zJ +longname2018 => zK +longname2072 => zL +longname2126 => zM +longname2180 => zN +longname2234 => zO +longname2288 => zP +longname2342 => zQ +longname2396 => zR +longname2450 => zS +longname2504 => zT +longname2558 => zU +longname2612 => zV +longname2666 => zW +longname2720 => zX +longname2774 => zY +longname2828 => zZ +longname2882 => z_ +longname77 => za +longname3530 => zaa +longname131 => zb +longname3584 => zba +longname185 => zc +longname3638 => zca +longname239 => zd +longname3692 => zda +longname293 => ze +longname3746 => zea +longname346 => zf +longname3800 => zfa +longname400 => zg +longname3854 => zga +longname454 => zh +longname3908 => zha +longname508 => zi +longname3962 => zia +longname562 => zj +longname4016 => zja +longname616 => zk +longname4070 => zka +longname670 => zl +longname4124 => zla +longname724 => zm +longname4178 => zma +longname777 => zn +longname4232 => zna +longname830 => zo +longname4286 => zoa +longname884 => zp +longname4340 => zpa +longname938 => zq +longname4394 => zqa +longname992 => zr +longname4448 => zra +longname1046 => zs +longname4502 => zsa +longname1100 => zt +longname4556 => zta +longname1154 => zu +longname4610 => zua +longname1208 => zv +longname4664 => zva +longname1262 => zw +longname4718 => zwa +longname1316 => zx +longname4772 => zxa +longname1370 => zy +longname4826 => zya +longname1424 => zz +longname4880 => zza (module (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (import "env" "a" (global $import$global0 i32)) - (import "env" "__memory_base" (global $import$global1 i32)) - (import "env" "__table_base" (global $import$global2 i32)) - (import "env" "b" (func $internal1)) - (import "env" "c" (func $internal2)) - (import "env" "d" (func $internal3)) - (import "env" "e" (func $internal4)) - (import "env" "f" (func $internal5)) - (import "env" "g" (func $internal6)) - (import "env" "h" (func $internal7)) - (import "env" "i" (func $internal8)) - (import "env" "j" (func $internal9)) - (import "env" "k" (func $internal10)) - (import "env" "l" (func $internal11)) - (import "env" "m" (func $internal12)) - (import "env" "n" (func $internal13)) - (import "env" "o" (func $internal14)) - (import "env" "p" (func $internal15)) - (import "env" "q" (func $internal16)) - (import "env" "r" (func $internal17)) - (import "env" "s" (func $internal18)) - (import "env" "t" (func $internal19)) - (import "env" "u" (func $internal20)) - (import "env" "v" (func $internal21)) - (import "env" "w" (func $internal22)) - (import "env" "x" (func $internal23)) - (import "env" "y" (func $internal24)) - (import "env" "z" (func $internal25)) - (import "env" "A" (func $internal26)) - (import "env" "B" (func $internal27)) - (import "env" "C" (func $internal28)) - (import "env" "D" (func $internal29)) - (import "env" "E" (func $internal30)) - (import "env" "F" (func $internal31)) - (import "env" "G" (func $internal32)) - (import "env" "H" (func $internal33)) - (import "env" "I" (func $internal34)) - (import "env" "J" (func $internal35)) - (import "env" "K" (func $internal36)) - (import "env" "L" (func $internal37)) - (import "env" "M" (func $internal38)) - (import "env" "N" (func $internal39)) - (import "env" "O" (func $internal40)) - (import "env" "P" (func $internal41)) - (import "env" "Q" (func $internal42)) - (import "env" "R" (func $internal43)) - (import "env" "S" (func $internal44)) - (import "env" "T" (func $internal45)) - (import "env" "U" (func $internal46)) - (import "env" "V" (func $internal47)) - (import "env" "W" (func $internal48)) - (import "env" "X" (func $internal49)) - (import "env" "Y" (func $internal50)) - (import "env" "Z" (func $internal51)) - (import "env" "_" (func $internal52)) - (import "env" "$" (func $internal53)) - (import "env" "aa" (func $internal54)) - (import "env" "ba" (func $internal55)) - (import "env" "ca" (func $internal56)) - (import "env" "da" (func $internal57)) - (import "env" "ea" (func $internal58)) - (import "env" "fa" (func $internal59)) - (import "env" "ga" (func $internal60)) - (import "env" "ha" (func $internal61)) - (import "env" "ia" (func $internal62)) - (import "env" "ja" (func $internal63)) - (import "env" "ka" (func $internal64)) - (import "env" "la" (func $internal65)) - (import "env" "ma" (func $internal66)) - (import "env" "na" (func $internal67)) - (import "env" "oa" (func $internal68)) - (import "env" "pa" (func $internal69)) - (import "env" "qa" (func $internal70)) - (import "env" "ra" (func $internal71)) - (import "env" "sa" (func $internal72)) - (import "env" "ta" (func $internal73)) - (import "env" "ua" (func $internal74)) - (import "env" "va" (func $internal75)) - (import "env" "wa" (func $internal76)) - (import "env" "xa" (func $internal77)) - (import "env" "ya" (func $internal78)) - (import "env" "za" (func $internal79)) - (import "env" "Aa" (func $internal80)) - (import "env" "Ba" (func $internal81)) - (import "env" "Ca" (func $internal82)) - (import "env" "Da" (func $internal83)) - (import "env" "Ea" (func $internal84)) - (import "env" "Fa" (func $internal85)) - (import "env" "Ga" (func $internal86)) - (import "env" "Ha" (func $internal87)) - (import "env" "Ia" (func $internal88)) - (import "env" "Ja" (func $internal89)) - (import "env" "Ka" (func $internal90)) - (import "env" "La" (func $internal91)) - (import "env" "Ma" (func $internal92)) - (import "env" "Na" (func $internal93)) - (import "env" "Oa" (func $internal94)) - (import "env" "Pa" (func $internal95)) - (import "env" "Qa" (func $internal96)) - (import "env" "Ra" (func $internal97)) - (import "env" "Sa" (func $internal98)) - (import "env" "Ta" (func $internal99)) - (import "env" "Ua" (func $internal100)) - (import "env" "Va" (func $internal101)) - (import "env" "Wa" (func $internal102)) - (import "env" "Xa" (func $internal103)) - (import "env" "Ya" (func $internal104)) - (import "env" "Za" (func $internal105)) - (import "env" "_a" (func $internal106)) - (import "env" "$a" (func $internal107)) - (import "env" "ab" (func $internal108)) - (import "env" "bb" (func $internal109)) - (import "env" "cb" (func $internal110)) - (import "env" "db" (func $internal111)) - (import "env" "eb" (func $internal112)) - (import "env" "fb" (func $internal113)) - (import "env" "gb" (func $internal114)) - (import "env" "hb" (func $internal115)) - (import "env" "ib" (func $internal116)) - (import "env" "jb" (func $internal117)) - (import "env" "kb" (func $internal118)) - (import "env" "lb" (func $internal119)) - (import "env" "mb" (func $internal120)) - (import "env" "nb" (func $internal121)) - (import "env" "ob" (func $internal122)) - (import "env" "pb" (func $internal123)) - (import "env" "qb" (func $internal124)) - (import "env" "rb" (func $internal125)) - (import "env" "sb" (func $internal126)) - (import "env" "tb" (func $internal127)) - (import "env" "ub" (func $internal128)) - (import "env" "vb" (func $internal129)) - (import "env" "wb" (func $internal130)) - (import "env" "xb" (func $internal131)) - (import "env" "yb" (func $internal132)) - (import "env" "zb" (func $internal133)) - (import "env" "Ab" (func $internal134)) - (import "env" "Bb" (func $internal135)) - (import "env" "Cb" (func $internal136)) - (import "env" "Db" (func $internal137)) - (import "env" "Eb" (func $internal138)) - (import "env" "Fb" (func $internal139)) - (import "env" "Gb" (func $internal140)) - (import "env" "Hb" (func $internal141)) - (import "env" "Ib" (func $internal142)) - (import "env" "Jb" (func $internal143)) - (import "env" "Kb" (func $internal144)) - (import "env" "Lb" (func $internal145)) - (import "env" "Mb" (func $internal146)) - (import "env" "Nb" (func $internal147)) - (import "env" "Ob" (func $internal148)) - (import "env" "Pb" (func $internal149)) - (import "env" "Qb" (func $internal150)) - (import "env" "Rb" (func $internal151)) - (import "env" "Sb" (func $internal152)) - (import "env" "Tb" (func $internal153)) - (import "env" "Ub" (func $internal154)) - (import "env" "Vb" (func $internal155)) - (import "env" "Wb" (func $internal156)) - (import "env" "Xb" (func $internal157)) - (import "env" "Yb" (func $internal158)) - (import "env" "Zb" (func $internal159)) - (import "env" "_b" (func $internal160)) - (import "env" "$b" (func $internal161)) - (import "env" "ac" (func $internal162)) - (import "env" "bc" (func $internal163)) - (import "env" "cc" (func $internal164)) - (import "env" "dc" (func $internal165)) - (import "env" "ec" (func $internal166)) - (import "env" "fc" (func $internal167)) - (import "env" "gc" (func $internal168)) - (import "env" "hc" (func $internal169)) - (import "env" "ic" (func $internal170)) - (import "env" "jc" (func $internal171)) - (import "env" "kc" (func $internal172)) - (import "env" "lc" (func $internal173)) - (import "env" "mc" (func $internal174)) - (import "env" "nc" (func $internal175)) - (import "env" "oc" (func $internal176)) - (import "env" "pc" (func $internal177)) - (import "env" "qc" (func $internal178)) - (import "env" "rc" (func $internal179)) - (import "env" "sc" (func $internal180)) - (import "env" "tc" (func $internal181)) - (import "env" "uc" (func $internal182)) - (import "env" "vc" (func $internal183)) - (import "env" "wc" (func $internal184)) - (import "env" "xc" (func $internal185)) - (import "env" "yc" (func $internal186)) - (import "env" "zc" (func $internal187)) - (import "env" "Ac" (func $internal188)) - (import "env" "Bc" (func $internal189)) - (import "env" "Cc" (func $internal190)) - (import "env" "Dc" (func $internal191)) - (import "env" "Ec" (func $internal192)) - (import "env" "Fc" (func $internal193)) - (import "env" "Gc" (func $internal194)) - (import "env" "Hc" (func $internal195)) - (import "env" "Ic" (func $internal196)) - (import "env" "Jc" (func $internal197)) - (import "env" "Kc" (func $internal198)) - (import "env" "Lc" (func $internal199)) - (import "env" "Mc" (func $internal200)) - (import "env" "Nc" (func $internal201)) - (import "env" "Oc" (func $internal202)) - (import "env" "Pc" (func $internal203)) - (import "env" "Qc" (func $internal204)) - (import "env" "Rc" (func $internal205)) - (import "env" "Sc" (func $internal206)) - (import "env" "Tc" (func $internal207)) - (import "env" "Uc" (func $internal208)) - (import "env" "Vc" (func $internal209)) - (import "env" "Wc" (func $internal210)) - (import "env" "Xc" (func $internal211)) - (import "env" "Yc" (func $internal212)) - (import "env" "Zc" (func $internal213)) - (import "env" "_c" (func $internal214)) - (import "env" "$c" (func $internal215)) - (import "env" "ad" (func $internal216)) - (import "env" "bd" (func $internal217)) - (import "env" "cd" (func $internal218)) - (import "env" "dd" (func $internal219)) - (import "env" "ed" (func $internal220)) - (import "env" "fd" (func $internal221)) - (import "env" "gd" (func $internal222)) - (import "env" "hd" (func $internal223)) - (import "env" "id" (func $internal224)) - (import "env" "jd" (func $internal225)) - (import "env" "kd" (func $internal226)) - (import "env" "ld" (func $internal227)) - (import "env" "md" (func $internal228)) - (import "env" "nd" (func $internal229)) - (import "env" "od" (func $internal230)) - (import "env" "pd" (func $internal231)) - (import "env" "qd" (func $internal232)) - (import "env" "rd" (func $internal233)) - (import "env" "sd" (func $internal234)) - (import "env" "td" (func $internal235)) - (import "env" "ud" (func $internal236)) - (import "env" "vd" (func $internal237)) - (import "env" "wd" (func $internal238)) - (import "env" "xd" (func $internal239)) - (import "env" "yd" (func $internal240)) - (import "env" "zd" (func $internal241)) - (import "env" "Ad" (func $internal242)) - (import "env" "Bd" (func $internal243)) - (import "env" "Cd" (func $internal244)) - (import "env" "Dd" (func $internal245)) - (import "env" "Ed" (func $internal246)) - (import "env" "Fd" (func $internal247)) - (import "env" "Gd" (func $internal248)) - (import "env" "Hd" (func $internal249)) - (import "env" "Id" (func $internal250)) - (import "env" "Jd" (func $internal251)) - (import "env" "Kd" (func $internal252)) - (import "env" "Ld" (func $internal253)) - (import "env" "Md" (func $internal254)) - (import "env" "Nd" (func $internal255)) - (import "env" "Od" (func $internal256)) - (import "env" "Pd" (func $internal257)) - (import "env" "Qd" (func $internal258)) - (import "env" "Rd" (func $internal259)) - (import "env" "Sd" (func $internal260)) - (import "env" "Td" (func $internal261)) - (import "env" "Ud" (func $internal262)) - (import "env" "Vd" (func $internal263)) - (import "env" "Wd" (func $internal264)) - (import "env" "Xd" (func $internal265)) - (import "env" "Yd" (func $internal266)) - (import "env" "Zd" (func $internal267)) - (import "env" "_d" (func $internal268)) - (import "env" "$d" (func $internal269)) - (import "env" "ae" (func $internal270)) - (import "env" "be" (func $internal271)) - (import "env" "ce" (func $internal272)) - (import "env" "de" (func $internal273)) - (import "env" "ee" (func $internal274)) - (import "env" "fe" (func $internal275)) - (import "env" "ge" (func $internal276)) - (import "env" "he" (func $internal277)) - (import "env" "ie" (func $internal278)) - (import "env" "je" (func $internal279)) - (import "env" "ke" (func $internal280)) - (import "env" "le" (func $internal281)) - (import "env" "me" (func $internal282)) - (import "env" "ne" (func $internal283)) - (import "env" "oe" (func $internal284)) - (import "env" "pe" (func $internal285)) - (import "env" "qe" (func $internal286)) - (import "env" "re" (func $internal287)) - (import "env" "se" (func $internal288)) - (import "env" "te" (func $internal289)) - (import "env" "ue" (func $internal290)) - (import "env" "ve" (func $internal291)) - (import "env" "we" (func $internal292)) - (import "env" "xe" (func $internal293)) - (import "env" "ye" (func $internal294)) - (import "env" "ze" (func $internal295)) - (import "env" "Ae" (func $internal296)) - (import "env" "Be" (func $internal297)) - (import "env" "Ce" (func $internal298)) - (import "env" "De" (func $internal299)) - (import "env" "Ee" (func $internal300)) - (import "env" "Fe" (func $internal301)) - (import "env" "Ge" (func $internal302)) - (import "env" "He" (func $internal303)) - (import "env" "Ie" (func $internal304)) - (import "env" "Je" (func $internal305)) - (import "env" "Ke" (func $internal306)) - (import "env" "Le" (func $internal307)) - (import "env" "Me" (func $internal308)) - (import "env" "Ne" (func $internal309)) - (import "env" "Oe" (func $internal310)) - (import "env" "Pe" (func $internal311)) - (import "env" "Qe" (func $internal312)) - (import "env" "Re" (func $internal313)) - (import "env" "Se" (func $internal314)) - (import "env" "Te" (func $internal315)) - (import "env" "Ue" (func $internal316)) - (import "env" "Ve" (func $internal317)) - (import "env" "We" (func $internal318)) - (import "env" "Xe" (func $internal319)) - (import "env" "Ye" (func $internal320)) - (import "env" "Ze" (func $internal321)) - (import "env" "_e" (func $internal322)) - (import "env" "$e" (func $internal323)) - (import "env" "af" (func $internal324)) - (import "env" "bf" (func $internal325)) - (import "env" "cf" (func $internal326)) - (import "env" "df" (func $internal327)) - (import "env" "ef" (func $internal328)) - (import "env" "ff" (func $internal329)) - (import "env" "gf" (func $internal330)) - (import "env" "hf" (func $internal331)) - (import "env" "jf" (func $internal332)) - (import "env" "kf" (func $internal333)) - (import "env" "lf" (func $internal334)) - (import "env" "mf" (func $internal335)) - (import "env" "nf" (func $internal336)) - (import "env" "of" (func $internal337)) - (import "env" "pf" (func $internal338)) - (import "env" "qf" (func $internal339)) - (import "env" "rf" (func $internal340)) - (import "env" "sf" (func $internal341)) - (import "env" "tf" (func $internal342)) - (import "env" "uf" (func $internal343)) - (import "env" "vf" (func $internal344)) - (import "env" "wf" (func $internal345)) - (import "env" "xf" (func $internal346)) - (import "env" "yf" (func $internal347)) - (import "env" "zf" (func $internal348)) - (import "env" "Af" (func $internal349)) - (import "env" "Bf" (func $internal350)) - (import "env" "Cf" (func $internal351)) - (import "env" "Df" (func $internal352)) - (import "env" "Ef" (func $internal353)) - (import "env" "Ff" (func $internal354)) - (import "env" "Gf" (func $internal355)) - (import "env" "Hf" (func $internal356)) - (import "env" "If" (func $internal357)) - (import "env" "Jf" (func $internal358)) - (import "env" "Kf" (func $internal359)) - (import "env" "Lf" (func $internal360)) - (import "env" "Mf" (func $internal361)) - (import "env" "Nf" (func $internal362)) - (import "env" "Of" (func $internal363)) - (import "env" "Pf" (func $internal364)) - (import "env" "Qf" (func $internal365)) - (import "env" "Rf" (func $internal366)) - (import "env" "Sf" (func $internal367)) - (import "env" "Tf" (func $internal368)) - (import "env" "Uf" (func $internal369)) - (import "env" "Vf" (func $internal370)) - (import "env" "Wf" (func $internal371)) - (import "env" "Xf" (func $internal372)) - (import "env" "Yf" (func $internal373)) - (import "env" "Zf" (func $internal374)) - (import "env" "_f" (func $internal375)) - (import "env" "$f" (func $internal376)) - (import "env" "ag" (func $internal377)) - (import "env" "bg" (func $internal378)) - (import "env" "cg" (func $internal379)) - (import "env" "dg" (func $internal380)) - (import "env" "eg" (func $internal381)) - (import "env" "fg" (func $internal382)) - (import "env" "gg" (func $internal383)) - (import "env" "hg" (func $internal384)) - (import "env" "ig" (func $internal385)) - (import "env" "jg" (func $internal386)) - (import "env" "kg" (func $internal387)) - (import "env" "lg" (func $internal388)) - (import "env" "mg" (func $internal389)) - (import "env" "ng" (func $internal390)) - (import "env" "og" (func $internal391)) - (import "env" "pg" (func $internal392)) - (import "env" "qg" (func $internal393)) - (import "env" "rg" (func $internal394)) - (import "env" "sg" (func $internal395)) - (import "env" "tg" (func $internal396)) - (import "env" "ug" (func $internal397)) - (import "env" "vg" (func $internal398)) - (import "env" "wg" (func $internal399)) - (import "env" "xg" (func $internal400)) - (import "env" "yg" (func $internal401)) - (import "env" "zg" (func $internal402)) - (import "env" "Ag" (func $internal403)) - (import "env" "Bg" (func $internal404)) - (import "env" "Cg" (func $internal405)) - (import "env" "Dg" (func $internal406)) - (import "env" "Eg" (func $internal407)) - (import "env" "Fg" (func $internal408)) - (import "env" "Gg" (func $internal409)) - (import "env" "Hg" (func $internal410)) - (import "env" "Ig" (func $internal411)) - (import "env" "Jg" (func $internal412)) - (import "env" "Kg" (func $internal413)) - (import "env" "Lg" (func $internal414)) - (import "env" "Mg" (func $internal415)) - (import "env" "Ng" (func $internal416)) - (import "env" "Og" (func $internal417)) - (import "env" "Pg" (func $internal418)) - (import "env" "Qg" (func $internal419)) - (import "env" "Rg" (func $internal420)) - (import "env" "Sg" (func $internal421)) - (import "env" "Tg" (func $internal422)) - (import "env" "Ug" (func $internal423)) - (import "env" "Vg" (func $internal424)) - (import "env" "Wg" (func $internal425)) - (import "env" "Xg" (func $internal426)) - (import "env" "Yg" (func $internal427)) - (import "env" "Zg" (func $internal428)) - (import "env" "_g" (func $internal429)) - (import "env" "$g" (func $internal430)) - (import "env" "ah" (func $internal431)) - (import "env" "bh" (func $internal432)) - (import "env" "ch" (func $internal433)) - (import "env" "dh" (func $internal434)) - (import "env" "eh" (func $internal435)) - (import "env" "fh" (func $internal436)) - (import "env" "gh" (func $internal437)) - (import "env" "hh" (func $internal438)) - (import "env" "ih" (func $internal439)) - (import "env" "jh" (func $internal440)) - (import "env" "kh" (func $internal441)) - (import "env" "lh" (func $internal442)) - (import "env" "mh" (func $internal443)) - (import "env" "nh" (func $internal444)) - (import "env" "oh" (func $internal445)) - (import "env" "ph" (func $internal446)) - (import "env" "qh" (func $internal447)) - (import "env" "rh" (func $internal448)) - (import "env" "sh" (func $internal449)) - (import "env" "th" (func $internal450)) - (import "env" "uh" (func $internal451)) - (import "env" "vh" (func $internal452)) - (import "env" "wh" (func $internal453)) - (import "env" "xh" (func $internal454)) - (import "env" "yh" (func $internal455)) - (import "env" "zh" (func $internal456)) - (import "env" "Ah" (func $internal457)) - (import "env" "Bh" (func $internal458)) - (import "env" "Ch" (func $internal459)) - (import "env" "Dh" (func $internal460)) - (import "env" "Eh" (func $internal461)) - (import "env" "Fh" (func $internal462)) - (import "env" "Gh" (func $internal463)) - (import "env" "Hh" (func $internal464)) - (import "env" "Ih" (func $internal465)) - (import "env" "Jh" (func $internal466)) - (import "env" "Kh" (func $internal467)) - (import "env" "Lh" (func $internal468)) - (import "env" "Mh" (func $internal469)) - (import "env" "Nh" (func $internal470)) - (import "env" "Oh" (func $internal471)) - (import "env" "Ph" (func $internal472)) - (import "env" "Qh" (func $internal473)) - (import "env" "Rh" (func $internal474)) - (import "env" "Sh" (func $internal475)) - (import "env" "Th" (func $internal476)) - (import "env" "Uh" (func $internal477)) - (import "env" "Vh" (func $internal478)) - (import "env" "Wh" (func $internal479)) - (import "env" "Xh" (func $internal480)) - (import "env" "Yh" (func $internal481)) - (import "env" "Zh" (func $internal482)) - (import "env" "_h" (func $internal483)) - (import "env" "$h" (func $internal484)) - (import "env" "ai" (func $internal485)) - (import "env" "bi" (func $internal486)) - (import "env" "ci" (func $internal487)) - (import "env" "di" (func $internal488)) - (import "env" "ei" (func $internal489)) - (import "env" "fi" (func $internal490)) - (import "env" "gi" (func $internal491)) - (import "env" "hi" (func $internal492)) - (import "env" "ii" (func $internal493)) - (import "env" "ji" (func $internal494)) - (import "env" "ki" (func $internal495)) - (import "env" "li" (func $internal496)) - (import "env" "mi" (func $internal497)) - (import "env" "ni" (func $internal498)) - (import "env" "oi" (func $internal499)) - (import "env" "pi" (func $internal500)) - (import "env" "qi" (func $internal501)) - (import "env" "ri" (func $internal502)) - (import "env" "si" (func $internal503)) - (import "env" "ti" (func $internal504)) - (import "env" "ui" (func $internal505)) - (import "env" "vi" (func $internal506)) - (import "env" "wi" (func $internal507)) - (import "env" "xi" (func $internal508)) - (import "env" "yi" (func $internal509)) - (import "env" "zi" (func $internal510)) - (import "env" "Ai" (func $internal511)) - (import "env" "Bi" (func $internal512)) - (import "env" "Ci" (func $internal513)) - (import "env" "Di" (func $internal514)) - (import "env" "Ei" (func $internal515)) - (import "env" "Fi" (func $internal516)) - (import "env" "Gi" (func $internal517)) - (import "env" "Hi" (func $internal518)) - (import "env" "Ii" (func $internal519)) - (import "env" "Ji" (func $internal520)) - (import "env" "Ki" (func $internal521)) - (import "env" "Li" (func $internal522)) - (import "env" "Mi" (func $internal523)) - (import "env" "Ni" (func $internal524)) - (import "env" "Oi" (func $internal525)) - (import "env" "Pi" (func $internal526)) - (import "env" "Qi" (func $internal527)) - (import "env" "Ri" (func $internal528)) - (import "env" "Si" (func $internal529)) - (import "env" "Ti" (func $internal530)) - (import "env" "Ui" (func $internal531)) - (import "env" "Vi" (func $internal532)) - (import "env" "Wi" (func $internal533)) - (import "env" "Xi" (func $internal534)) - (import "env" "Yi" (func $internal535)) - (import "env" "Zi" (func $internal536)) - (import "env" "_i" (func $internal537)) - (import "env" "$i" (func $internal538)) - (import "env" "aj" (func $internal539)) - (import "env" "bj" (func $internal540)) - (import "env" "cj" (func $internal541)) - (import "env" "dj" (func $internal542)) - (import "env" "ej" (func $internal543)) - (import "env" "fj" (func $internal544)) - (import "env" "gj" (func $internal545)) - (import "env" "hj" (func $internal546)) - (import "env" "ij" (func $internal547)) - (import "env" "jj" (func $internal548)) - (import "env" "kj" (func $internal549)) - (import "env" "lj" (func $internal550)) - (import "env" "mj" (func $internal551)) - (import "env" "nj" (func $internal552)) - (import "env" "oj" (func $internal553)) - (import "env" "pj" (func $internal554)) - (import "env" "qj" (func $internal555)) - (import "env" "rj" (func $internal556)) - (import "env" "sj" (func $internal557)) - (import "env" "tj" (func $internal558)) - (import "env" "uj" (func $internal559)) - (import "env" "vj" (func $internal560)) - (import "env" "wj" (func $internal561)) - (import "env" "xj" (func $internal562)) - (import "env" "yj" (func $internal563)) - (import "env" "zj" (func $internal564)) - (import "env" "Aj" (func $internal565)) - (import "env" "Bj" (func $internal566)) - (import "env" "Cj" (func $internal567)) - (import "env" "Dj" (func $internal568)) - (import "env" "Ej" (func $internal569)) - (import "env" "Fj" (func $internal570)) - (import "env" "Gj" (func $internal571)) - (import "env" "Hj" (func $internal572)) - (import "env" "Ij" (func $internal573)) - (import "env" "Jj" (func $internal574)) - (import "env" "Kj" (func $internal575)) - (import "env" "Lj" (func $internal576)) - (import "env" "Mj" (func $internal577)) - (import "env" "Nj" (func $internal578)) - (import "env" "Oj" (func $internal579)) - (import "env" "Pj" (func $internal580)) - (import "env" "Qj" (func $internal581)) - (import "env" "Rj" (func $internal582)) - (import "env" "Sj" (func $internal583)) - (import "env" "Tj" (func $internal584)) - (import "env" "Uj" (func $internal585)) - (import "env" "Vj" (func $internal586)) - (import "env" "Wj" (func $internal587)) - (import "env" "Xj" (func $internal588)) - (import "env" "Yj" (func $internal589)) - (import "env" "Zj" (func $internal590)) - (import "env" "_j" (func $internal591)) - (import "env" "$j" (func $internal592)) - (import "env" "ak" (func $internal593)) - (import "env" "bk" (func $internal594)) - (import "env" "ck" (func $internal595)) - (import "env" "dk" (func $internal596)) - (import "env" "ek" (func $internal597)) - (import "env" "fk" (func $internal598)) - (import "env" "gk" (func $internal599)) - (import "env" "hk" (func $internal600)) - (import "env" "ik" (func $internal601)) - (import "env" "jk" (func $internal602)) - (import "env" "kk" (func $internal603)) - (import "env" "lk" (func $internal604)) - (import "env" "mk" (func $internal605)) - (import "env" "nk" (func $internal606)) - (import "env" "ok" (func $internal607)) - (import "env" "pk" (func $internal608)) - (import "env" "qk" (func $internal609)) - (import "env" "rk" (func $internal610)) - (import "env" "sk" (func $internal611)) - (import "env" "tk" (func $internal612)) - (import "env" "uk" (func $internal613)) - (import "env" "vk" (func $internal614)) - (import "env" "wk" (func $internal615)) - (import "env" "xk" (func $internal616)) - (import "env" "yk" (func $internal617)) - (import "env" "zk" (func $internal618)) - (import "env" "Ak" (func $internal619)) - (import "env" "Bk" (func $internal620)) - (import "env" "Ck" (func $internal621)) - (import "env" "Dk" (func $internal622)) - (import "env" "Ek" (func $internal623)) - (import "env" "Fk" (func $internal624)) - (import "env" "Gk" (func $internal625)) - (import "env" "Hk" (func $internal626)) - (import "env" "Ik" (func $internal627)) - (import "env" "Jk" (func $internal628)) - (import "env" "Kk" (func $internal629)) - (import "env" "Lk" (func $internal630)) - (import "env" "Mk" (func $internal631)) - (import "env" "Nk" (func $internal632)) - (import "env" "Ok" (func $internal633)) - (import "env" "Pk" (func $internal634)) - (import "env" "Qk" (func $internal635)) - (import "env" "Rk" (func $internal636)) - (import "env" "Sk" (func $internal637)) - (import "env" "Tk" (func $internal638)) - (import "env" "Uk" (func $internal639)) - (import "env" "Vk" (func $internal640)) - (import "env" "Wk" (func $internal641)) - (import "env" "Xk" (func $internal642)) - (import "env" "Yk" (func $internal643)) - (import "env" "Zk" (func $internal644)) - (import "env" "_k" (func $internal645)) - (import "env" "$k" (func $internal646)) - (import "env" "al" (func $internal647)) - (import "env" "bl" (func $internal648)) - (import "env" "cl" (func $internal649)) - (import "env" "dl" (func $internal650)) - (import "env" "el" (func $internal651)) - (import "env" "fl" (func $internal652)) - (import "env" "gl" (func $internal653)) - (import "env" "hl" (func $internal654)) - (import "env" "il" (func $internal655)) - (import "env" "jl" (func $internal656)) - (import "env" "kl" (func $internal657)) - (import "env" "ll" (func $internal658)) - (import "env" "ml" (func $internal659)) - (import "env" "nl" (func $internal660)) - (import "env" "ol" (func $internal661)) - (import "env" "pl" (func $internal662)) - (import "env" "ql" (func $internal663)) - (import "env" "rl" (func $internal664)) - (import "env" "sl" (func $internal665)) - (import "env" "tl" (func $internal666)) - (import "env" "ul" (func $internal667)) - (import "env" "vl" (func $internal668)) - (import "env" "wl" (func $internal669)) - (import "env" "xl" (func $internal670)) - (import "env" "yl" (func $internal671)) - (import "env" "zl" (func $internal672)) - (import "env" "Al" (func $internal673)) - (import "env" "Bl" (func $internal674)) - (import "env" "Cl" (func $internal675)) - (import "env" "Dl" (func $internal676)) - (import "env" "El" (func $internal677)) - (import "env" "Fl" (func $internal678)) - (import "env" "Gl" (func $internal679)) - (import "env" "Hl" (func $internal680)) - (import "env" "Il" (func $internal681)) - (import "env" "Jl" (func $internal682)) - (import "env" "Kl" (func $internal683)) - (import "env" "Ll" (func $internal684)) - (import "env" "Ml" (func $internal685)) - (import "env" "Nl" (func $internal686)) - (import "env" "Ol" (func $internal687)) - (import "env" "Pl" (func $internal688)) - (import "env" "Ql" (func $internal689)) - (import "env" "Rl" (func $internal690)) - (import "env" "Sl" (func $internal691)) - (import "env" "Tl" (func $internal692)) - (import "env" "Ul" (func $internal693)) - (import "env" "Vl" (func $internal694)) - (import "env" "Wl" (func $internal695)) - (import "env" "Xl" (func $internal696)) - (import "env" "Yl" (func $internal697)) - (import "env" "Zl" (func $internal698)) - (import "env" "_l" (func $internal699)) - (import "env" "$l" (func $internal700)) - (import "env" "am" (func $internal701)) - (import "env" "bm" (func $internal702)) - (import "env" "cm" (func $internal703)) - (import "env" "dm" (func $internal704)) - (import "env" "em" (func $internal705)) - (import "env" "fm" (func $internal706)) - (import "env" "gm" (func $internal707)) - (import "env" "hm" (func $internal708)) - (import "env" "im" (func $internal709)) - (import "env" "jm" (func $internal710)) - (import "env" "km" (func $internal711)) - (import "env" "lm" (func $internal712)) - (import "env" "mm" (func $internal713)) - (import "env" "nm" (func $internal714)) - (import "env" "om" (func $internal715)) - (import "env" "pm" (func $internal716)) - (import "env" "qm" (func $internal717)) - (import "env" "rm" (func $internal718)) - (import "env" "sm" (func $internal719)) - (import "env" "tm" (func $internal720)) - (import "env" "um" (func $internal721)) - (import "env" "vm" (func $internal722)) - (import "env" "wm" (func $internal723)) - (import "env" "xm" (func $internal724)) - (import "env" "ym" (func $internal725)) - (import "env" "zm" (func $internal726)) - (import "env" "Am" (func $internal727)) - (import "env" "Bm" (func $internal728)) - (import "env" "Cm" (func $internal729)) - (import "env" "Dm" (func $internal730)) - (import "env" "Em" (func $internal731)) - (import "env" "Fm" (func $internal732)) - (import "env" "Gm" (func $internal733)) - (import "env" "Hm" (func $internal734)) - (import "env" "Im" (func $internal735)) - (import "env" "Jm" (func $internal736)) - (import "env" "Km" (func $internal737)) - (import "env" "Lm" (func $internal738)) - (import "env" "Mm" (func $internal739)) - (import "env" "Nm" (func $internal740)) - (import "env" "Om" (func $internal741)) - (import "env" "Pm" (func $internal742)) - (import "env" "Qm" (func $internal743)) - (import "env" "Rm" (func $internal744)) - (import "env" "Sm" (func $internal745)) - (import "env" "Tm" (func $internal746)) - (import "env" "Um" (func $internal747)) - (import "env" "Vm" (func $internal748)) - (import "env" "Wm" (func $internal749)) - (import "env" "Xm" (func $internal750)) - (import "env" "Ym" (func $internal751)) - (import "env" "Zm" (func $internal752)) - (import "env" "_m" (func $internal753)) - (import "env" "$m" (func $internal754)) - (import "env" "an" (func $internal755)) - (import "env" "bn" (func $internal756)) - (import "env" "cn" (func $internal757)) - (import "env" "dn" (func $internal758)) - (import "env" "en" (func $internal759)) - (import "env" "fn" (func $internal760)) - (import "env" "gn" (func $internal761)) - (import "env" "hn" (func $internal762)) - (import "env" "jn" (func $internal763)) - (import "env" "kn" (func $internal764)) - (import "env" "ln" (func $internal765)) - (import "env" "mn" (func $internal766)) - (import "env" "nn" (func $internal767)) - (import "env" "on" (func $internal768)) - (import "env" "pn" (func $internal769)) - (import "env" "qn" (func $internal770)) - (import "env" "rn" (func $internal771)) - (import "env" "sn" (func $internal772)) - (import "env" "tn" (func $internal773)) - (import "env" "un" (func $internal774)) - (import "env" "vn" (func $internal775)) - (import "env" "wn" (func $internal776)) - (import "env" "xn" (func $internal777)) - (import "env" "yn" (func $internal778)) - (import "env" "zn" (func $internal779)) - (import "env" "An" (func $internal780)) - (import "env" "Bn" (func $internal781)) - (import "env" "Cn" (func $internal782)) - (import "env" "Dn" (func $internal783)) - (import "env" "En" (func $internal784)) - (import "env" "Fn" (func $internal785)) - (import "env" "Gn" (func $internal786)) - (import "env" "Hn" (func $internal787)) - (import "env" "In" (func $internal788)) - (import "env" "Jn" (func $internal789)) - (import "env" "Kn" (func $internal790)) - (import "env" "Ln" (func $internal791)) - (import "env" "Mn" (func $internal792)) - (import "env" "Nn" (func $internal793)) - (import "env" "On" (func $internal794)) - (import "env" "Pn" (func $internal795)) - (import "env" "Qn" (func $internal796)) - (import "env" "Rn" (func $internal797)) - (import "env" "Sn" (func $internal798)) - (import "env" "Tn" (func $internal799)) - (import "env" "Un" (func $internal800)) - (import "env" "Vn" (func $internal801)) - (import "env" "Wn" (func $internal802)) - (import "env" "Xn" (func $internal803)) - (import "env" "Yn" (func $internal804)) - (import "env" "Zn" (func $internal805)) - (import "env" "_n" (func $internal806)) - (import "env" "$n" (func $internal807)) - (import "env" "ao" (func $internal808)) - (import "env" "bo" (func $internal809)) - (import "env" "co" (func $internal810)) - (import "env" "eo" (func $internal811)) - (import "env" "fo" (func $internal812)) - (import "env" "go" (func $internal813)) - (import "env" "ho" (func $internal814)) - (import "env" "io" (func $internal815)) - (import "env" "jo" (func $internal816)) - (import "env" "ko" (func $internal817)) - (import "env" "lo" (func $internal818)) - (import "env" "mo" (func $internal819)) - (import "env" "no" (func $internal820)) - (import "env" "oo" (func $internal821)) - (import "env" "po" (func $internal822)) - (import "env" "qo" (func $internal823)) - (import "env" "ro" (func $internal824)) - (import "env" "so" (func $internal825)) - (import "env" "to" (func $internal826)) - (import "env" "uo" (func $internal827)) - (import "env" "vo" (func $internal828)) - (import "env" "wo" (func $internal829)) - (import "env" "xo" (func $internal830)) - (import "env" "yo" (func $internal831)) - (import "env" "zo" (func $internal832)) - (import "env" "Ao" (func $internal833)) - (import "env" "Bo" (func $internal834)) - (import "env" "Co" (func $internal835)) - (import "env" "Do" (func $internal836)) - (import "env" "Eo" (func $internal837)) - (import "env" "Fo" (func $internal838)) - (import "env" "Go" (func $internal839)) - (import "env" "Ho" (func $internal840)) - (import "env" "Io" (func $internal841)) - (import "env" "Jo" (func $internal842)) - (import "env" "Ko" (func $internal843)) - (import "env" "Lo" (func $internal844)) - (import "env" "Mo" (func $internal845)) - (import "env" "No" (func $internal846)) - (import "env" "Oo" (func $internal847)) - (import "env" "Po" (func $internal848)) - (import "env" "Qo" (func $internal849)) - (import "env" "Ro" (func $internal850)) - (import "env" "So" (func $internal851)) - (import "env" "To" (func $internal852)) - (import "env" "Uo" (func $internal853)) - (import "env" "Vo" (func $internal854)) - (import "env" "Wo" (func $internal855)) - (import "env" "Xo" (func $internal856)) - (import "env" "Yo" (func $internal857)) - (import "env" "Zo" (func $internal858)) - (import "env" "_o" (func $internal859)) - (import "env" "$o" (func $internal860)) - (import "env" "ap" (func $internal861)) - (import "env" "bp" (func $internal862)) - (import "env" "cp" (func $internal863)) - (import "env" "dp" (func $internal864)) - (import "env" "ep" (func $internal865)) - (import "env" "fp" (func $internal866)) - (import "env" "gp" (func $internal867)) - (import "env" "hp" (func $internal868)) - (import "env" "ip" (func $internal869)) - (import "env" "jp" (func $internal870)) - (import "env" "kp" (func $internal871)) - (import "env" "lp" (func $internal872)) - (import "env" "mp" (func $internal873)) - (import "env" "np" (func $internal874)) - (import "env" "op" (func $internal875)) - (import "env" "pp" (func $internal876)) - (import "env" "qp" (func $internal877)) - (import "env" "rp" (func $internal878)) - (import "env" "sp" (func $internal879)) - (import "env" "tp" (func $internal880)) - (import "env" "up" (func $internal881)) - (import "env" "vp" (func $internal882)) - (import "env" "wp" (func $internal883)) - (import "env" "xp" (func $internal884)) - (import "env" "yp" (func $internal885)) - (import "env" "zp" (func $internal886)) - (import "env" "Ap" (func $internal887)) - (import "env" "Bp" (func $internal888)) - (import "env" "Cp" (func $internal889)) - (import "env" "Dp" (func $internal890)) - (import "env" "Ep" (func $internal891)) - (import "env" "Fp" (func $internal892)) - (import "env" "Gp" (func $internal893)) - (import "env" "Hp" (func $internal894)) - (import "env" "Ip" (func $internal895)) - (import "env" "Jp" (func $internal896)) - (import "env" "Kp" (func $internal897)) - (import "env" "Lp" (func $internal898)) - (import "env" "Mp" (func $internal899)) - (import "env" "Np" (func $internal900)) - (import "env" "Op" (func $internal901)) - (import "env" "Pp" (func $internal902)) - (import "env" "Qp" (func $internal903)) - (import "env" "Rp" (func $internal904)) - (import "env" "Sp" (func $internal905)) - (import "env" "Tp" (func $internal906)) - (import "env" "Up" (func $internal907)) - (import "env" "Vp" (func $internal908)) - (import "env" "Wp" (func $internal909)) - (import "env" "Xp" (func $internal910)) - (import "env" "Yp" (func $internal911)) - (import "env" "Zp" (func $internal912)) - (import "env" "_p" (func $internal913)) - (import "env" "$p" (func $internal914)) - (import "env" "aq" (func $internal915)) - (import "env" "bq" (func $internal916)) - (import "env" "cq" (func $internal917)) - (import "env" "dq" (func $internal918)) - (import "env" "eq" (func $internal919)) - (import "env" "fq" (func $internal920)) - (import "env" "gq" (func $internal921)) - (import "env" "hq" (func $internal922)) - (import "env" "iq" (func $internal923)) - (import "env" "jq" (func $internal924)) - (import "env" "kq" (func $internal925)) - (import "env" "lq" (func $internal926)) - (import "env" "mq" (func $internal927)) - (import "env" "nq" (func $internal928)) - (import "env" "oq" (func $internal929)) - (import "env" "pq" (func $internal930)) - (import "env" "qq" (func $internal931)) - (import "env" "rq" (func $internal932)) - (import "env" "sq" (func $internal933)) - (import "env" "tq" (func $internal934)) - (import "env" "uq" (func $internal935)) - (import "env" "vq" (func $internal936)) - (import "env" "wq" (func $internal937)) - (import "env" "xq" (func $internal938)) - (import "env" "yq" (func $internal939)) - (import "env" "zq" (func $internal940)) - (import "env" "Aq" (func $internal941)) - (import "env" "Bq" (func $internal942)) - (import "env" "Cq" (func $internal943)) - (import "env" "Dq" (func $internal944)) - (import "env" "Eq" (func $internal945)) - (import "env" "Fq" (func $internal946)) - (import "env" "Gq" (func $internal947)) - (import "env" "Hq" (func $internal948)) - (import "env" "Iq" (func $internal949)) - (import "env" "Jq" (func $internal950)) - (import "env" "Kq" (func $internal951)) - (import "env" "Lq" (func $internal952)) - (import "env" "Mq" (func $internal953)) - (import "env" "Nq" (func $internal954)) - (import "env" "Oq" (func $internal955)) - (import "env" "Pq" (func $internal956)) - (import "env" "Qq" (func $internal957)) - (import "env" "Rq" (func $internal958)) - (import "env" "Sq" (func $internal959)) - (import "env" "Tq" (func $internal960)) - (import "env" "Uq" (func $internal961)) - (import "env" "Vq" (func $internal962)) - (import "env" "Wq" (func $internal963)) - (import "env" "Xq" (func $internal964)) - (import "env" "Yq" (func $internal965)) - (import "env" "Zq" (func $internal966)) - (import "env" "_q" (func $internal967)) - (import "env" "$q" (func $internal968)) - (import "env" "ar" (func $internal969)) - (import "env" "br" (func $internal970)) - (import "env" "cr" (func $internal971)) - (import "env" "dr" (func $internal972)) - (import "env" "er" (func $internal973)) - (import "env" "fr" (func $internal974)) - (import "env" "gr" (func $internal975)) - (import "env" "hr" (func $internal976)) - (import "env" "ir" (func $internal977)) - (import "env" "jr" (func $internal978)) - (import "env" "kr" (func $internal979)) - (import "env" "lr" (func $internal980)) - (import "env" "mr" (func $internal981)) - (import "env" "nr" (func $internal982)) - (import "env" "or" (func $internal983)) - (import "env" "pr" (func $internal984)) - (import "env" "qr" (func $internal985)) - (import "env" "rr" (func $internal986)) - (import "env" "sr" (func $internal987)) - (import "env" "tr" (func $internal988)) - (import "env" "ur" (func $internal989)) - (import "env" "vr" (func $internal990)) - (import "env" "wr" (func $internal991)) - (import "env" "xr" (func $internal992)) - (import "env" "yr" (func $internal993)) - (import "env" "zr" (func $internal994)) - (import "env" "Ar" (func $internal995)) - (import "env" "Br" (func $internal996)) - (import "env" "Cr" (func $internal997)) - (import "env" "Dr" (func $internal998)) - (import "env" "Er" (func $internal999)) - (import "env" "Fr" (func $internal1000)) - (import "env" "Gr" (func $internal1001)) - (import "env" "Hr" (func $internal1002)) - (import "env" "Ir" (func $internal1003)) - (import "env" "Jr" (func $internal1004)) - (import "env" "Kr" (func $internal1005)) - (import "env" "Lr" (func $internal1006)) - (import "env" "Mr" (func $internal1007)) - (import "env" "Nr" (func $internal1008)) - (import "env" "Or" (func $internal1009)) - (import "env" "Pr" (func $internal1010)) - (import "env" "Qr" (func $internal1011)) - (import "env" "Rr" (func $internal1012)) - (import "env" "Sr" (func $internal1013)) - (import "env" "Tr" (func $internal1014)) - (import "env" "Ur" (func $internal1015)) - (import "env" "Vr" (func $internal1016)) - (import "env" "Wr" (func $internal1017)) - (import "env" "Xr" (func $internal1018)) - (import "env" "Yr" (func $internal1019)) - (import "env" "Zr" (func $internal1020)) - (import "env" "_r" (func $internal1021)) - (import "env" "$r" (func $internal1022)) - (import "env" "as" (func $internal1023)) - (import "env" "bs" (func $internal1024)) - (import "env" "cs" (func $internal1025)) - (import "env" "ds" (func $internal1026)) - (import "env" "es" (func $internal1027)) - (import "env" "fs" (func $internal1028)) - (import "env" "gs" (func $internal1029)) - (import "env" "hs" (func $internal1030)) - (import "env" "is" (func $internal1031)) - (import "env" "js" (func $internal1032)) - (import "env" "ks" (func $internal1033)) - (import "env" "ls" (func $internal1034)) - (import "env" "ms" (func $internal1035)) - (import "env" "ns" (func $internal1036)) - (import "env" "os" (func $internal1037)) - (import "env" "ps" (func $internal1038)) - (import "env" "qs" (func $internal1039)) - (import "env" "rs" (func $internal1040)) - (import "env" "ss" (func $internal1041)) - (import "env" "ts" (func $internal1042)) - (import "env" "us" (func $internal1043)) - (import "env" "vs" (func $internal1044)) - (import "env" "ws" (func $internal1045)) - (import "env" "xs" (func $internal1046)) - (import "env" "ys" (func $internal1047)) - (import "env" "zs" (func $internal1048)) - (import "env" "As" (func $internal1049)) - (import "env" "Bs" (func $internal1050)) - (import "env" "Cs" (func $internal1051)) - (import "env" "Ds" (func $internal1052)) - (import "env" "Es" (func $internal1053)) - (import "env" "Fs" (func $internal1054)) - (import "env" "Gs" (func $internal1055)) - (import "env" "Hs" (func $internal1056)) - (import "env" "Is" (func $internal1057)) - (import "env" "Js" (func $internal1058)) - (import "env" "Ks" (func $internal1059)) - (import "env" "Ls" (func $internal1060)) - (import "env" "Ms" (func $internal1061)) - (import "env" "Ns" (func $internal1062)) - (import "env" "Os" (func $internal1063)) - (import "env" "Ps" (func $internal1064)) - (import "env" "Qs" (func $internal1065)) - (import "env" "Rs" (func $internal1066)) - (import "env" "Ss" (func $internal1067)) - (import "env" "Ts" (func $internal1068)) - (import "env" "Us" (func $internal1069)) - (import "env" "Vs" (func $internal1070)) - (import "env" "Ws" (func $internal1071)) - (import "env" "Xs" (func $internal1072)) - (import "env" "Ys" (func $internal1073)) - (import "env" "Zs" (func $internal1074)) - (import "env" "_s" (func $internal1075)) - (import "env" "$s" (func $internal1076)) - (import "env" "at" (func $internal1077)) - (import "env" "bt" (func $internal1078)) - (import "env" "ct" (func $internal1079)) - (import "env" "dt" (func $internal1080)) - (import "env" "et" (func $internal1081)) - (import "env" "ft" (func $internal1082)) - (import "env" "gt" (func $internal1083)) - (import "env" "ht" (func $internal1084)) - (import "env" "it" (func $internal1085)) - (import "env" "jt" (func $internal1086)) - (import "env" "kt" (func $internal1087)) - (import "env" "lt" (func $internal1088)) - (import "env" "mt" (func $internal1089)) - (import "env" "nt" (func $internal1090)) - (import "env" "ot" (func $internal1091)) - (import "env" "pt" (func $internal1092)) - (import "env" "qt" (func $internal1093)) - (import "env" "rt" (func $internal1094)) - (import "env" "st" (func $internal1095)) - (import "env" "tt" (func $internal1096)) - (import "env" "ut" (func $internal1097)) - (import "env" "vt" (func $internal1098)) - (import "env" "wt" (func $internal1099)) - (import "env" "xt" (func $internal1100)) - (import "env" "yt" (func $internal1101)) - (import "env" "zt" (func $internal1102)) - (import "env" "At" (func $internal1103)) - (import "env" "Bt" (func $internal1104)) - (import "env" "Ct" (func $internal1105)) - (import "env" "Dt" (func $internal1106)) - (import "env" "Et" (func $internal1107)) - (import "env" "Ft" (func $internal1108)) - (import "env" "Gt" (func $internal1109)) - (import "env" "Ht" (func $internal1110)) - (import "env" "It" (func $internal1111)) - (import "env" "Jt" (func $internal1112)) - (import "env" "Kt" (func $internal1113)) - (import "env" "Lt" (func $internal1114)) - (import "env" "Mt" (func $internal1115)) - (import "env" "Nt" (func $internal1116)) - (import "env" "Ot" (func $internal1117)) - (import "env" "Pt" (func $internal1118)) - (import "env" "Qt" (func $internal1119)) - (import "env" "Rt" (func $internal1120)) - (import "env" "St" (func $internal1121)) - (import "env" "Tt" (func $internal1122)) - (import "env" "Ut" (func $internal1123)) - (import "env" "Vt" (func $internal1124)) - (import "env" "Wt" (func $internal1125)) - (import "env" "Xt" (func $internal1126)) - (import "env" "Yt" (func $internal1127)) - (import "env" "Zt" (func $internal1128)) - (import "env" "_t" (func $internal1129)) - (import "env" "$t" (func $internal1130)) - (import "env" "au" (func $internal1131)) - (import "env" "bu" (func $internal1132)) - (import "env" "cu" (func $internal1133)) - (import "env" "du" (func $internal1134)) - (import "env" "eu" (func $internal1135)) - (import "env" "fu" (func $internal1136)) - (import "env" "gu" (func $internal1137)) - (import "env" "hu" (func $internal1138)) - (import "env" "iu" (func $internal1139)) - (import "env" "ju" (func $internal1140)) - (import "env" "ku" (func $internal1141)) - (import "env" "lu" (func $internal1142)) - (import "env" "mu" (func $internal1143)) - (import "env" "nu" (func $internal1144)) - (import "env" "ou" (func $internal1145)) - (import "env" "pu" (func $internal1146)) - (import "env" "qu" (func $internal1147)) - (import "env" "ru" (func $internal1148)) - (import "env" "su" (func $internal1149)) - (import "env" "tu" (func $internal1150)) - (import "env" "uu" (func $internal1151)) - (import "env" "vu" (func $internal1152)) - (import "env" "wu" (func $internal1153)) - (import "env" "xu" (func $internal1154)) - (import "env" "yu" (func $internal1155)) - (import "env" "zu" (func $internal1156)) - (import "env" "Au" (func $internal1157)) - (import "env" "Bu" (func $internal1158)) - (import "env" "Cu" (func $internal1159)) - (import "env" "Du" (func $internal1160)) - (import "env" "Eu" (func $internal1161)) - (import "env" "Fu" (func $internal1162)) - (import "env" "Gu" (func $internal1163)) - (import "env" "Hu" (func $internal1164)) - (import "env" "Iu" (func $internal1165)) - (import "env" "Ju" (func $internal1166)) - (import "env" "Ku" (func $internal1167)) - (import "env" "Lu" (func $internal1168)) - (import "env" "Mu" (func $internal1169)) - (import "env" "Nu" (func $internal1170)) - (import "env" "Ou" (func $internal1171)) - (import "env" "Pu" (func $internal1172)) - (import "env" "Qu" (func $internal1173)) - (import "env" "Ru" (func $internal1174)) - (import "env" "Su" (func $internal1175)) - (import "env" "Tu" (func $internal1176)) - (import "env" "Uu" (func $internal1177)) - (import "env" "Vu" (func $internal1178)) - (import "env" "Wu" (func $internal1179)) - (import "env" "Xu" (func $internal1180)) - (import "env" "Yu" (func $internal1181)) - (import "env" "Zu" (func $internal1182)) - (import "env" "_u" (func $internal1183)) - (import "env" "$u" (func $internal1184)) - (import "env" "av" (func $internal1185)) - (import "env" "bv" (func $internal1186)) - (import "env" "cv" (func $internal1187)) - (import "env" "dv" (func $internal1188)) - (import "env" "ev" (func $internal1189)) - (import "env" "fv" (func $internal1190)) - (import "env" "gv" (func $internal1191)) - (import "env" "hv" (func $internal1192)) - (import "env" "iv" (func $internal1193)) - (import "env" "jv" (func $internal1194)) - (import "env" "kv" (func $internal1195)) - (import "env" "lv" (func $internal1196)) - (import "env" "mv" (func $internal1197)) - (import "env" "nv" (func $internal1198)) - (import "env" "ov" (func $internal1199)) - (import "env" "pv" (func $internal1200)) - (import "env" "qv" (func $internal1201)) - (import "env" "rv" (func $internal1202)) - (import "env" "sv" (func $internal1203)) - (import "env" "tv" (func $internal1204)) - (import "env" "uv" (func $internal1205)) - (import "env" "vv" (func $internal1206)) - (import "env" "wv" (func $internal1207)) - (import "env" "xv" (func $internal1208)) - (import "env" "yv" (func $internal1209)) - (import "env" "zv" (func $internal1210)) - (import "env" "Av" (func $internal1211)) - (import "env" "Bv" (func $internal1212)) - (import "env" "Cv" (func $internal1213)) - (import "env" "Dv" (func $internal1214)) - (import "env" "Ev" (func $internal1215)) - (import "env" "Fv" (func $internal1216)) - (import "env" "Gv" (func $internal1217)) - (import "env" "Hv" (func $internal1218)) - (import "env" "Iv" (func $internal1219)) - (import "env" "Jv" (func $internal1220)) - (import "env" "Kv" (func $internal1221)) - (import "env" "Lv" (func $internal1222)) - (import "env" "Mv" (func $internal1223)) - (import "env" "Nv" (func $internal1224)) - (import "env" "Ov" (func $internal1225)) - (import "env" "Pv" (func $internal1226)) - (import "env" "Qv" (func $internal1227)) - (import "env" "Rv" (func $internal1228)) - (import "env" "Sv" (func $internal1229)) - (import "env" "Tv" (func $internal1230)) - (import "env" "Uv" (func $internal1231)) - (import "env" "Vv" (func $internal1232)) - (import "env" "Wv" (func $internal1233)) - (import "env" "Xv" (func $internal1234)) - (import "env" "Yv" (func $internal1235)) - (import "env" "Zv" (func $internal1236)) - (import "env" "_v" (func $internal1237)) - (import "env" "$v" (func $internal1238)) - (import "env" "aw" (func $internal1239)) - (import "env" "bw" (func $internal1240)) - (import "env" "cw" (func $internal1241)) - (import "env" "dw" (func $internal1242)) - (import "env" "ew" (func $internal1243)) - (import "env" "fw" (func $internal1244)) - (import "env" "gw" (func $internal1245)) - (import "env" "hw" (func $internal1246)) - (import "env" "iw" (func $internal1247)) - (import "env" "jw" (func $internal1248)) - (import "env" "kw" (func $internal1249)) - (import "env" "lw" (func $internal1250)) - (import "env" "mw" (func $internal1251)) - (import "env" "nw" (func $internal1252)) - (import "env" "ow" (func $internal1253)) - (import "env" "pw" (func $internal1254)) - (import "env" "qw" (func $internal1255)) - (import "env" "rw" (func $internal1256)) - (import "env" "sw" (func $internal1257)) - (import "env" "tw" (func $internal1258)) - (import "env" "uw" (func $internal1259)) - (import "env" "vw" (func $internal1260)) - (import "env" "ww" (func $internal1261)) - (import "env" "xw" (func $internal1262)) - (import "env" "yw" (func $internal1263)) - (import "env" "zw" (func $internal1264)) - (import "env" "Aw" (func $internal1265)) - (import "env" "Bw" (func $internal1266)) - (import "env" "Cw" (func $internal1267)) - (import "env" "Dw" (func $internal1268)) - (import "env" "Ew" (func $internal1269)) - (import "env" "Fw" (func $internal1270)) - (import "env" "Gw" (func $internal1271)) - (import "env" "Hw" (func $internal1272)) - (import "env" "Iw" (func $internal1273)) - (import "env" "Jw" (func $internal1274)) - (import "env" "Kw" (func $internal1275)) - (import "env" "Lw" (func $internal1276)) - (import "env" "Mw" (func $internal1277)) - (import "env" "Nw" (func $internal1278)) - (import "env" "Ow" (func $internal1279)) - (import "env" "Pw" (func $internal1280)) - (import "env" "Qw" (func $internal1281)) - (import "env" "Rw" (func $internal1282)) - (import "env" "Sw" (func $internal1283)) - (import "env" "Tw" (func $internal1284)) - (import "env" "Uw" (func $internal1285)) - (import "env" "Vw" (func $internal1286)) - (import "env" "Ww" (func $internal1287)) - (import "env" "Xw" (func $internal1288)) - (import "env" "Yw" (func $internal1289)) - (import "env" "Zw" (func $internal1290)) - (import "env" "_w" (func $internal1291)) - (import "env" "$w" (func $internal1292)) - (import "env" "ax" (func $internal1293)) - (import "env" "bx" (func $internal1294)) - (import "env" "cx" (func $internal1295)) - (import "env" "dx" (func $internal1296)) - (import "env" "ex" (func $internal1297)) - (import "env" "fx" (func $internal1298)) - (import "env" "gx" (func $internal1299)) - (import "env" "hx" (func $internal1300)) - (import "env" "ix" (func $internal1301)) - (import "env" "jx" (func $internal1302)) - (import "env" "kx" (func $internal1303)) - (import "env" "lx" (func $internal1304)) - (import "env" "mx" (func $internal1305)) - (import "env" "nx" (func $internal1306)) - (import "env" "ox" (func $internal1307)) - (import "env" "px" (func $internal1308)) - (import "env" "qx" (func $internal1309)) - (import "env" "rx" (func $internal1310)) - (import "env" "sx" (func $internal1311)) - (import "env" "tx" (func $internal1312)) - (import "env" "ux" (func $internal1313)) - (import "env" "vx" (func $internal1314)) - (import "env" "wx" (func $internal1315)) - (import "env" "xx" (func $internal1316)) - (import "env" "yx" (func $internal1317)) - (import "env" "zx" (func $internal1318)) - (import "env" "Ax" (func $internal1319)) - (import "env" "Bx" (func $internal1320)) - (import "env" "Cx" (func $internal1321)) - (import "env" "Dx" (func $internal1322)) - (import "env" "Ex" (func $internal1323)) - (import "env" "Fx" (func $internal1324)) - (import "env" "Gx" (func $internal1325)) - (import "env" "Hx" (func $internal1326)) - (import "env" "Ix" (func $internal1327)) - (import "env" "Jx" (func $internal1328)) - (import "env" "Kx" (func $internal1329)) - (import "env" "Lx" (func $internal1330)) - (import "env" "Mx" (func $internal1331)) - (import "env" "Nx" (func $internal1332)) - (import "env" "Ox" (func $internal1333)) - (import "env" "Px" (func $internal1334)) - (import "env" "Qx" (func $internal1335)) - (import "env" "Rx" (func $internal1336)) - (import "env" "Sx" (func $internal1337)) - (import "env" "Tx" (func $internal1338)) - (import "env" "Ux" (func $internal1339)) - (import "env" "Vx" (func $internal1340)) - (import "env" "Wx" (func $internal1341)) - (import "env" "Xx" (func $internal1342)) - (import "env" "Yx" (func $internal1343)) - (import "env" "Zx" (func $internal1344)) - (import "env" "_x" (func $internal1345)) - (import "env" "$x" (func $internal1346)) - (import "env" "ay" (func $internal1347)) - (import "env" "by" (func $internal1348)) - (import "env" "cy" (func $internal1349)) - (import "env" "dy" (func $internal1350)) - (import "env" "ey" (func $internal1351)) - (import "env" "fy" (func $internal1352)) - (import "env" "gy" (func $internal1353)) - (import "env" "hy" (func $internal1354)) - (import "env" "iy" (func $internal1355)) - (import "env" "jy" (func $internal1356)) - (import "env" "ky" (func $internal1357)) - (import "env" "ly" (func $internal1358)) - (import "env" "my" (func $internal1359)) - (import "env" "ny" (func $internal1360)) - (import "env" "oy" (func $internal1361)) - (import "env" "py" (func $internal1362)) - (import "env" "qy" (func $internal1363)) - (import "env" "ry" (func $internal1364)) - (import "env" "sy" (func $internal1365)) - (import "env" "ty" (func $internal1366)) - (import "env" "uy" (func $internal1367)) - (import "env" "vy" (func $internal1368)) - (import "env" "wy" (func $internal1369)) - (import "env" "xy" (func $internal1370)) - (import "env" "yy" (func $internal1371)) - (import "env" "zy" (func $internal1372)) - (import "env" "Ay" (func $internal1373)) - (import "env" "By" (func $internal1374)) - (import "env" "Cy" (func $internal1375)) - (import "env" "Dy" (func $internal1376)) - (import "env" "Ey" (func $internal1377)) - (import "env" "Fy" (func $internal1378)) - (import "env" "Gy" (func $internal1379)) - (import "env" "Hy" (func $internal1380)) - (import "env" "Iy" (func $internal1381)) - (import "env" "Jy" (func $internal1382)) - (import "env" "Ky" (func $internal1383)) - (import "env" "Ly" (func $internal1384)) - (import "env" "My" (func $internal1385)) - (import "env" "Ny" (func $internal1386)) - (import "env" "Oy" (func $internal1387)) - (import "env" "Py" (func $internal1388)) - (import "env" "Qy" (func $internal1389)) - (import "env" "Ry" (func $internal1390)) - (import "env" "Sy" (func $internal1391)) - (import "env" "Ty" (func $internal1392)) - (import "env" "Uy" (func $internal1393)) - (import "env" "Vy" (func $internal1394)) - (import "env" "Wy" (func $internal1395)) - (import "env" "Xy" (func $internal1396)) - (import "env" "Yy" (func $internal1397)) - (import "env" "Zy" (func $internal1398)) - (import "env" "_y" (func $internal1399)) - (import "env" "$y" (func $internal1400)) - (import "env" "az" (func $internal1401)) - (import "env" "bz" (func $internal1402)) - (import "env" "cz" (func $internal1403)) - (import "env" "dz" (func $internal1404)) - (import "env" "ez" (func $internal1405)) - (import "env" "fz" (func $internal1406)) - (import "env" "gz" (func $internal1407)) - (import "env" "hz" (func $internal1408)) - (import "env" "iz" (func $internal1409)) - (import "env" "jz" (func $internal1410)) - (import "env" "kz" (func $internal1411)) - (import "env" "lz" (func $internal1412)) - (import "env" "mz" (func $internal1413)) - (import "env" "nz" (func $internal1414)) - (import "env" "oz" (func $internal1415)) - (import "env" "pz" (func $internal1416)) - (import "env" "qz" (func $internal1417)) - (import "env" "rz" (func $internal1418)) - (import "env" "sz" (func $internal1419)) - (import "env" "tz" (func $internal1420)) - (import "env" "uz" (func $internal1421)) - (import "env" "vz" (func $internal1422)) - (import "env" "wz" (func $internal1423)) - (import "env" "xz" (func $internal1424)) - (import "env" "yz" (func $internal1425)) - (import "env" "zz" (func $internal1426)) - (import "env" "Az" (func $internal1427)) - (import "env" "Bz" (func $internal1428)) - (import "env" "Cz" (func $internal1429)) - (import "env" "Dz" (func $internal1430)) - (import "env" "Ez" (func $internal1431)) - (import "env" "Fz" (func $internal1432)) - (import "env" "Gz" (func $internal1433)) - (import "env" "Hz" (func $internal1434)) - (import "env" "Iz" (func $internal1435)) - (import "env" "Jz" (func $internal1436)) - (import "env" "Kz" (func $internal1437)) - (import "env" "Lz" (func $internal1438)) - (import "env" "Mz" (func $internal1439)) - (import "env" "Nz" (func $internal1440)) - (import "env" "Oz" (func $internal1441)) - (import "env" "Pz" (func $internal1442)) - (import "env" "Qz" (func $internal1443)) - (import "env" "Rz" (func $internal1444)) - (import "env" "Sz" (func $internal1445)) - (import "env" "Tz" (func $internal1446)) - (import "env" "Uz" (func $internal1447)) - (import "env" "Vz" (func $internal1448)) - (import "env" "Wz" (func $internal1449)) - (import "env" "Xz" (func $internal1450)) - (import "env" "Yz" (func $internal1451)) - (import "env" "Zz" (func $internal1452)) - (import "env" "_z" (func $internal1453)) - (import "env" "$z" (func $internal1454)) - (import "env" "aA" (func $internal1455)) - (import "env" "bA" (func $internal1456)) - (import "env" "cA" (func $internal1457)) - (import "env" "dA" (func $internal1458)) - (import "env" "eA" (func $internal1459)) - (import "env" "fA" (func $internal1460)) - (import "env" "gA" (func $internal1461)) - (import "env" "hA" (func $internal1462)) - (import "env" "iA" (func $internal1463)) - (import "env" "jA" (func $internal1464)) - (import "env" "kA" (func $internal1465)) - (import "env" "lA" (func $internal1466)) - (import "env" "mA" (func $internal1467)) - (import "env" "nA" (func $internal1468)) - (import "env" "oA" (func $internal1469)) - (import "env" "pA" (func $internal1470)) - (import "env" "qA" (func $internal1471)) - (import "env" "rA" (func $internal1472)) - (import "env" "sA" (func $internal1473)) - (import "env" "tA" (func $internal1474)) - (import "env" "uA" (func $internal1475)) - (import "env" "vA" (func $internal1476)) - (import "env" "wA" (func $internal1477)) - (import "env" "xA" (func $internal1478)) - (import "env" "yA" (func $internal1479)) - (import "env" "zA" (func $internal1480)) - (import "env" "AA" (func $internal1481)) - (import "env" "BA" (func $internal1482)) - (import "env" "CA" (func $internal1483)) - (import "env" "DA" (func $internal1484)) - (import "env" "EA" (func $internal1485)) - (import "env" "FA" (func $internal1486)) - (import "env" "GA" (func $internal1487)) - (import "env" "HA" (func $internal1488)) - (import "env" "IA" (func $internal1489)) - (import "env" "JA" (func $internal1490)) - (import "env" "KA" (func $internal1491)) - (import "env" "LA" (func $internal1492)) - (import "env" "MA" (func $internal1493)) - (import "env" "NA" (func $internal1494)) - (import "env" "OA" (func $internal1495)) - (import "env" "PA" (func $internal1496)) - (import "env" "QA" (func $internal1497)) - (import "env" "RA" (func $internal1498)) - (import "env" "SA" (func $internal1499)) - (import "env" "TA" (func $internal1500)) - (import "env" "UA" (func $internal1501)) - (import "env" "VA" (func $internal1502)) - (import "env" "WA" (func $internal1503)) - (import "env" "XA" (func $internal1504)) - (import "env" "YA" (func $internal1505)) - (import "env" "ZA" (func $internal1506)) - (import "env" "_A" (func $internal1507)) - (import "env" "$A" (func $internal1508)) - (import "env" "aB" (func $internal1509)) - (import "env" "bB" (func $internal1510)) - (import "env" "cB" (func $internal1511)) - (import "env" "dB" (func $internal1512)) - (import "env" "eB" (func $internal1513)) - (import "env" "fB" (func $internal1514)) - (import "env" "gB" (func $internal1515)) - (import "env" "hB" (func $internal1516)) - (import "env" "iB" (func $internal1517)) - (import "env" "jB" (func $internal1518)) - (import "env" "kB" (func $internal1519)) - (import "env" "lB" (func $internal1520)) - (import "env" "mB" (func $internal1521)) - (import "env" "nB" (func $internal1522)) - (import "env" "oB" (func $internal1523)) - (import "env" "pB" (func $internal1524)) - (import "env" "qB" (func $internal1525)) - (import "env" "rB" (func $internal1526)) - (import "env" "sB" (func $internal1527)) - (import "env" "tB" (func $internal1528)) - (import "env" "uB" (func $internal1529)) - (import "env" "vB" (func $internal1530)) - (import "env" "wB" (func $internal1531)) - (import "env" "xB" (func $internal1532)) - (import "env" "yB" (func $internal1533)) - (import "env" "zB" (func $internal1534)) - (import "env" "AB" (func $internal1535)) - (import "env" "BB" (func $internal1536)) - (import "env" "CB" (func $internal1537)) - (import "env" "DB" (func $internal1538)) - (import "env" "EB" (func $internal1539)) - (import "env" "FB" (func $internal1540)) - (import "env" "GB" (func $internal1541)) - (import "env" "HB" (func $internal1542)) - (import "env" "IB" (func $internal1543)) - (import "env" "JB" (func $internal1544)) - (import "env" "KB" (func $internal1545)) - (import "env" "LB" (func $internal1546)) - (import "env" "MB" (func $internal1547)) - (import "env" "NB" (func $internal1548)) - (import "env" "OB" (func $internal1549)) - (import "env" "PB" (func $internal1550)) - (import "env" "QB" (func $internal1551)) - (import "env" "RB" (func $internal1552)) - (import "env" "SB" (func $internal1553)) - (import "env" "TB" (func $internal1554)) - (import "env" "UB" (func $internal1555)) - (import "env" "VB" (func $internal1556)) - (import "env" "WB" (func $internal1557)) - (import "env" "XB" (func $internal1558)) - (import "env" "YB" (func $internal1559)) - (import "env" "ZB" (func $internal1560)) - (import "env" "_B" (func $internal1561)) - (import "env" "$B" (func $internal1562)) - (import "env" "aC" (func $internal1563)) - (import "env" "bC" (func $internal1564)) - (import "env" "cC" (func $internal1565)) - (import "env" "dC" (func $internal1566)) - (import "env" "eC" (func $internal1567)) - (import "env" "fC" (func $internal1568)) - (import "env" "gC" (func $internal1569)) - (import "env" "hC" (func $internal1570)) - (import "env" "iC" (func $internal1571)) - (import "env" "jC" (func $internal1572)) - (import "env" "kC" (func $internal1573)) - (import "env" "lC" (func $internal1574)) - (import "env" "mC" (func $internal1575)) - (import "env" "nC" (func $internal1576)) - (import "env" "oC" (func $internal1577)) - (import "env" "pC" (func $internal1578)) - (import "env" "qC" (func $internal1579)) - (import "env" "rC" (func $internal1580)) - (import "env" "sC" (func $internal1581)) - (import "env" "tC" (func $internal1582)) - (import "env" "uC" (func $internal1583)) - (import "env" "vC" (func $internal1584)) - (import "env" "wC" (func $internal1585)) - (import "env" "xC" (func $internal1586)) - (import "env" "yC" (func $internal1587)) - (import "env" "zC" (func $internal1588)) - (import "env" "AC" (func $internal1589)) - (import "env" "BC" (func $internal1590)) - (import "env" "CC" (func $internal1591)) - (import "env" "DC" (func $internal1592)) - (import "env" "EC" (func $internal1593)) - (import "env" "FC" (func $internal1594)) - (import "env" "GC" (func $internal1595)) - (import "env" "HC" (func $internal1596)) - (import "env" "IC" (func $internal1597)) - (import "env" "JC" (func $internal1598)) - (import "env" "KC" (func $internal1599)) - (import "env" "LC" (func $internal1600)) - (import "env" "MC" (func $internal1601)) - (import "env" "NC" (func $internal1602)) - (import "env" "OC" (func $internal1603)) - (import "env" "PC" (func $internal1604)) - (import "env" "QC" (func $internal1605)) - (import "env" "RC" (func $internal1606)) - (import "env" "SC" (func $internal1607)) - (import "env" "TC" (func $internal1608)) - (import "env" "UC" (func $internal1609)) - (import "env" "VC" (func $internal1610)) - (import "env" "WC" (func $internal1611)) - (import "env" "XC" (func $internal1612)) - (import "env" "YC" (func $internal1613)) - (import "env" "ZC" (func $internal1614)) - (import "env" "_C" (func $internal1615)) - (import "env" "$C" (func $internal1616)) - (import "env" "aD" (func $internal1617)) - (import "env" "bD" (func $internal1618)) - (import "env" "cD" (func $internal1619)) - (import "env" "dD" (func $internal1620)) - (import "env" "eD" (func $internal1621)) - (import "env" "fD" (func $internal1622)) - (import "env" "gD" (func $internal1623)) - (import "env" "hD" (func $internal1624)) - (import "env" "iD" (func $internal1625)) - (import "env" "jD" (func $internal1626)) - (import "env" "kD" (func $internal1627)) - (import "env" "lD" (func $internal1628)) - (import "env" "mD" (func $internal1629)) - (import "env" "nD" (func $internal1630)) - (import "env" "oD" (func $internal1631)) - (import "env" "pD" (func $internal1632)) - (import "env" "qD" (func $internal1633)) - (import "env" "rD" (func $internal1634)) - (import "env" "sD" (func $internal1635)) - (import "env" "tD" (func $internal1636)) - (import "env" "uD" (func $internal1637)) - (import "env" "vD" (func $internal1638)) - (import "env" "wD" (func $internal1639)) - (import "env" "xD" (func $internal1640)) - (import "env" "yD" (func $internal1641)) - (import "env" "zD" (func $internal1642)) - (import "env" "AD" (func $internal1643)) - (import "env" "BD" (func $internal1644)) - (import "env" "CD" (func $internal1645)) - (import "env" "DD" (func $internal1646)) - (import "env" "ED" (func $internal1647)) - (import "env" "FD" (func $internal1648)) - (import "env" "GD" (func $internal1649)) - (import "env" "HD" (func $internal1650)) - (import "env" "ID" (func $internal1651)) - (import "env" "JD" (func $internal1652)) - (import "env" "KD" (func $internal1653)) - (import "env" "LD" (func $internal1654)) - (import "env" "MD" (func $internal1655)) - (import "env" "ND" (func $internal1656)) - (import "env" "OD" (func $internal1657)) - (import "env" "PD" (func $internal1658)) - (import "env" "QD" (func $internal1659)) - (import "env" "RD" (func $internal1660)) - (import "env" "SD" (func $internal1661)) - (import "env" "TD" (func $internal1662)) - (import "env" "UD" (func $internal1663)) - (import "env" "VD" (func $internal1664)) - (import "env" "WD" (func $internal1665)) - (import "env" "XD" (func $internal1666)) - (import "env" "YD" (func $internal1667)) - (import "env" "ZD" (func $internal1668)) - (import "env" "_D" (func $internal1669)) - (import "env" "$D" (func $internal1670)) - (import "env" "aE" (func $internal1671)) - (import "env" "bE" (func $internal1672)) - (import "env" "cE" (func $internal1673)) - (import "env" "dE" (func $internal1674)) - (import "env" "eE" (func $internal1675)) - (import "env" "fE" (func $internal1676)) - (import "env" "gE" (func $internal1677)) - (import "env" "hE" (func $internal1678)) - (import "env" "iE" (func $internal1679)) - (import "env" "jE" (func $internal1680)) - (import "env" "kE" (func $internal1681)) - (import "env" "lE" (func $internal1682)) - (import "env" "mE" (func $internal1683)) - (import "env" "nE" (func $internal1684)) - (import "env" "oE" (func $internal1685)) - (import "env" "pE" (func $internal1686)) - (import "env" "qE" (func $internal1687)) - (import "env" "rE" (func $internal1688)) - (import "env" "sE" (func $internal1689)) - (import "env" "tE" (func $internal1690)) - (import "env" "uE" (func $internal1691)) - (import "env" "vE" (func $internal1692)) - (import "env" "wE" (func $internal1693)) - (import "env" "xE" (func $internal1694)) - (import "env" "yE" (func $internal1695)) - (import "env" "zE" (func $internal1696)) - (import "env" "AE" (func $internal1697)) - (import "env" "BE" (func $internal1698)) - (import "env" "CE" (func $internal1699)) - (import "env" "DE" (func $internal1700)) - (import "env" "EE" (func $internal1701)) - (import "env" "FE" (func $internal1702)) - (import "env" "GE" (func $internal1703)) - (import "env" "HE" (func $internal1704)) - (import "env" "IE" (func $internal1705)) - (import "env" "JE" (func $internal1706)) - (import "env" "KE" (func $internal1707)) - (import "env" "LE" (func $internal1708)) - (import "env" "ME" (func $internal1709)) - (import "env" "NE" (func $internal1710)) - (import "env" "OE" (func $internal1711)) - (import "env" "PE" (func $internal1712)) - (import "env" "QE" (func $internal1713)) - (import "env" "RE" (func $internal1714)) - (import "env" "SE" (func $internal1715)) - (import "env" "TE" (func $internal1716)) - (import "env" "UE" (func $internal1717)) - (import "env" "VE" (func $internal1718)) - (import "env" "WE" (func $internal1719)) - (import "env" "XE" (func $internal1720)) - (import "env" "YE" (func $internal1721)) - (import "env" "ZE" (func $internal1722)) - (import "env" "_E" (func $internal1723)) - (import "env" "$E" (func $internal1724)) - (import "env" "aF" (func $internal1725)) - (import "env" "bF" (func $internal1726)) - (import "env" "cF" (func $internal1727)) - (import "env" "dF" (func $internal1728)) - (import "env" "eF" (func $internal1729)) - (import "env" "fF" (func $internal1730)) - (import "env" "gF" (func $internal1731)) - (import "env" "hF" (func $internal1732)) - (import "env" "iF" (func $internal1733)) - (import "env" "jF" (func $internal1734)) - (import "env" "kF" (func $internal1735)) - (import "env" "lF" (func $internal1736)) - (import "env" "mF" (func $internal1737)) - (import "env" "nF" (func $internal1738)) - (import "env" "oF" (func $internal1739)) - (import "env" "pF" (func $internal1740)) - (import "env" "qF" (func $internal1741)) - (import "env" "rF" (func $internal1742)) - (import "env" "sF" (func $internal1743)) - (import "env" "tF" (func $internal1744)) - (import "env" "uF" (func $internal1745)) - (import "env" "vF" (func $internal1746)) - (import "env" "wF" (func $internal1747)) - (import "env" "xF" (func $internal1748)) - (import "env" "yF" (func $internal1749)) - (import "env" "zF" (func $internal1750)) - (import "env" "AF" (func $internal1751)) - (import "env" "BF" (func $internal1752)) - (import "env" "CF" (func $internal1753)) - (import "env" "DF" (func $internal1754)) - (import "env" "EF" (func $internal1755)) - (import "env" "FF" (func $internal1756)) - (import "env" "GF" (func $internal1757)) - (import "env" "HF" (func $internal1758)) - (import "env" "IF" (func $internal1759)) - (import "env" "JF" (func $internal1760)) - (import "env" "KF" (func $internal1761)) - (import "env" "LF" (func $internal1762)) - (import "env" "MF" (func $internal1763)) - (import "env" "NF" (func $internal1764)) - (import "env" "OF" (func $internal1765)) - (import "env" "PF" (func $internal1766)) - (import "env" "QF" (func $internal1767)) - (import "env" "RF" (func $internal1768)) - (import "env" "SF" (func $internal1769)) - (import "env" "TF" (func $internal1770)) - (import "env" "UF" (func $internal1771)) - (import "env" "VF" (func $internal1772)) - (import "env" "WF" (func $internal1773)) - (import "env" "XF" (func $internal1774)) - (import "env" "YF" (func $internal1775)) - (import "env" "ZF" (func $internal1776)) - (import "env" "_F" (func $internal1777)) - (import "env" "$F" (func $internal1778)) - (import "env" "aG" (func $internal1779)) - (import "env" "bG" (func $internal1780)) - (import "env" "cG" (func $internal1781)) - (import "env" "dG" (func $internal1782)) - (import "env" "eG" (func $internal1783)) - (import "env" "fG" (func $internal1784)) - (import "env" "gG" (func $internal1785)) - (import "env" "hG" (func $internal1786)) - (import "env" "iG" (func $internal1787)) - (import "env" "jG" (func $internal1788)) - (import "env" "kG" (func $internal1789)) - (import "env" "lG" (func $internal1790)) - (import "env" "mG" (func $internal1791)) - (import "env" "nG" (func $internal1792)) - (import "env" "oG" (func $internal1793)) - (import "env" "pG" (func $internal1794)) - (import "env" "qG" (func $internal1795)) - (import "env" "rG" (func $internal1796)) - (import "env" "sG" (func $internal1797)) - (import "env" "tG" (func $internal1798)) - (import "env" "uG" (func $internal1799)) - (import "env" "vG" (func $internal1800)) - (import "env" "wG" (func $internal1801)) - (import "env" "xG" (func $internal1802)) - (import "env" "yG" (func $internal1803)) - (import "env" "zG" (func $internal1804)) - (import "env" "AG" (func $internal1805)) - (import "env" "BG" (func $internal1806)) - (import "env" "CG" (func $internal1807)) - (import "env" "DG" (func $internal1808)) - (import "env" "EG" (func $internal1809)) - (import "env" "FG" (func $internal1810)) - (import "env" "GG" (func $internal1811)) - (import "env" "HG" (func $internal1812)) - (import "env" "IG" (func $internal1813)) - (import "env" "JG" (func $internal1814)) - (import "env" "KG" (func $internal1815)) - (import "env" "LG" (func $internal1816)) - (import "env" "MG" (func $internal1817)) - (import "env" "NG" (func $internal1818)) - (import "env" "OG" (func $internal1819)) - (import "env" "PG" (func $internal1820)) - (import "env" "QG" (func $internal1821)) - (import "env" "RG" (func $internal1822)) - (import "env" "SG" (func $internal1823)) - (import "env" "TG" (func $internal1824)) - (import "env" "UG" (func $internal1825)) - (import "env" "VG" (func $internal1826)) - (import "env" "WG" (func $internal1827)) - (import "env" "XG" (func $internal1828)) - (import "env" "YG" (func $internal1829)) - (import "env" "ZG" (func $internal1830)) - (import "env" "_G" (func $internal1831)) - (import "env" "$G" (func $internal1832)) - (import "env" "aH" (func $internal1833)) - (import "env" "bH" (func $internal1834)) - (import "env" "cH" (func $internal1835)) - (import "env" "dH" (func $internal1836)) - (import "env" "eH" (func $internal1837)) - (import "env" "fH" (func $internal1838)) - (import "env" "gH" (func $internal1839)) - (import "env" "hH" (func $internal1840)) - (import "env" "iH" (func $internal1841)) - (import "env" "jH" (func $internal1842)) - (import "env" "kH" (func $internal1843)) - (import "env" "lH" (func $internal1844)) - (import "env" "mH" (func $internal1845)) - (import "env" "nH" (func $internal1846)) - (import "env" "oH" (func $internal1847)) - (import "env" "pH" (func $internal1848)) - (import "env" "qH" (func $internal1849)) - (import "env" "rH" (func $internal1850)) - (import "env" "sH" (func $internal1851)) - (import "env" "tH" (func $internal1852)) - (import "env" "uH" (func $internal1853)) - (import "env" "vH" (func $internal1854)) - (import "env" "wH" (func $internal1855)) - (import "env" "xH" (func $internal1856)) - (import "env" "yH" (func $internal1857)) - (import "env" "zH" (func $internal1858)) - (import "env" "AH" (func $internal1859)) - (import "env" "BH" (func $internal1860)) - (import "env" "CH" (func $internal1861)) - (import "env" "DH" (func $internal1862)) - (import "env" "EH" (func $internal1863)) - (import "env" "FH" (func $internal1864)) - (import "env" "GH" (func $internal1865)) - (import "env" "HH" (func $internal1866)) - (import "env" "IH" (func $internal1867)) - (import "env" "JH" (func $internal1868)) - (import "env" "KH" (func $internal1869)) - (import "env" "LH" (func $internal1870)) - (import "env" "MH" (func $internal1871)) - (import "env" "NH" (func $internal1872)) - (import "env" "OH" (func $internal1873)) - (import "env" "PH" (func $internal1874)) - (import "env" "QH" (func $internal1875)) - (import "env" "RH" (func $internal1876)) - (import "env" "SH" (func $internal1877)) - (import "env" "TH" (func $internal1878)) - (import "env" "UH" (func $internal1879)) - (import "env" "VH" (func $internal1880)) - (import "env" "WH" (func $internal1881)) - (import "env" "XH" (func $internal1882)) - (import "env" "YH" (func $internal1883)) - (import "env" "ZH" (func $internal1884)) - (import "env" "_H" (func $internal1885)) - (import "env" "$H" (func $internal1886)) - (import "env" "aI" (func $internal1887)) - (import "env" "bI" (func $internal1888)) - (import "env" "cI" (func $internal1889)) - (import "env" "dI" (func $internal1890)) - (import "env" "eI" (func $internal1891)) - (import "env" "fI" (func $internal1892)) - (import "env" "gI" (func $internal1893)) - (import "env" "hI" (func $internal1894)) - (import "env" "iI" (func $internal1895)) - (import "env" "jI" (func $internal1896)) - (import "env" "kI" (func $internal1897)) - (import "env" "lI" (func $internal1898)) - (import "env" "mI" (func $internal1899)) - (import "env" "nI" (func $internal1900)) - (import "env" "oI" (func $internal1901)) - (import "env" "pI" (func $internal1902)) - (import "env" "qI" (func $internal1903)) - (import "env" "rI" (func $internal1904)) - (import "env" "sI" (func $internal1905)) - (import "env" "tI" (func $internal1906)) - (import "env" "uI" (func $internal1907)) - (import "env" "vI" (func $internal1908)) - (import "env" "wI" (func $internal1909)) - (import "env" "xI" (func $internal1910)) - (import "env" "yI" (func $internal1911)) - (import "env" "zI" (func $internal1912)) - (import "env" "AI" (func $internal1913)) - (import "env" "BI" (func $internal1914)) - (import "env" "CI" (func $internal1915)) - (import "env" "DI" (func $internal1916)) - (import "env" "EI" (func $internal1917)) - (import "env" "FI" (func $internal1918)) - (import "env" "GI" (func $internal1919)) - (import "env" "HI" (func $internal1920)) - (import "env" "II" (func $internal1921)) - (import "env" "JI" (func $internal1922)) - (import "env" "KI" (func $internal1923)) - (import "env" "LI" (func $internal1924)) - (import "env" "MI" (func $internal1925)) - (import "env" "NI" (func $internal1926)) - (import "env" "OI" (func $internal1927)) - (import "env" "PI" (func $internal1928)) - (import "env" "QI" (func $internal1929)) - (import "env" "RI" (func $internal1930)) - (import "env" "SI" (func $internal1931)) - (import "env" "TI" (func $internal1932)) - (import "env" "UI" (func $internal1933)) - (import "env" "VI" (func $internal1934)) - (import "env" "WI" (func $internal1935)) - (import "env" "XI" (func $internal1936)) - (import "env" "YI" (func $internal1937)) - (import "env" "ZI" (func $internal1938)) - (import "env" "_I" (func $internal1939)) - (import "env" "$I" (func $internal1940)) - (import "env" "aJ" (func $internal1941)) - (import "env" "bJ" (func $internal1942)) - (import "env" "cJ" (func $internal1943)) - (import "env" "dJ" (func $internal1944)) - (import "env" "eJ" (func $internal1945)) - (import "env" "fJ" (func $internal1946)) - (import "env" "gJ" (func $internal1947)) - (import "env" "hJ" (func $internal1948)) - (import "env" "iJ" (func $internal1949)) - (import "env" "jJ" (func $internal1950)) - (import "env" "kJ" (func $internal1951)) - (import "env" "lJ" (func $internal1952)) - (import "env" "mJ" (func $internal1953)) - (import "env" "nJ" (func $internal1954)) - (import "env" "oJ" (func $internal1955)) - (import "env" "pJ" (func $internal1956)) - (import "env" "qJ" (func $internal1957)) - (import "env" "rJ" (func $internal1958)) - (import "env" "sJ" (func $internal1959)) - (import "env" "tJ" (func $internal1960)) - (import "env" "uJ" (func $internal1961)) - (import "env" "vJ" (func $internal1962)) - (import "env" "wJ" (func $internal1963)) - (import "env" "xJ" (func $internal1964)) - (import "env" "yJ" (func $internal1965)) - (import "env" "zJ" (func $internal1966)) - (import "env" "AJ" (func $internal1967)) - (import "env" "BJ" (func $internal1968)) - (import "env" "CJ" (func $internal1969)) - (import "env" "DJ" (func $internal1970)) - (import "env" "EJ" (func $internal1971)) - (import "env" "FJ" (func $internal1972)) - (import "env" "GJ" (func $internal1973)) - (import "env" "HJ" (func $internal1974)) - (import "env" "IJ" (func $internal1975)) - (import "env" "JJ" (func $internal1976)) - (import "env" "KJ" (func $internal1977)) - (import "env" "LJ" (func $internal1978)) - (import "env" "MJ" (func $internal1979)) - (import "env" "NJ" (func $internal1980)) - (import "env" "OJ" (func $internal1981)) - (import "env" "PJ" (func $internal1982)) - (import "env" "QJ" (func $internal1983)) - (import "env" "RJ" (func $internal1984)) - (import "env" "SJ" (func $internal1985)) - (import "env" "TJ" (func $internal1986)) - (import "env" "UJ" (func $internal1987)) - (import "env" "VJ" (func $internal1988)) - (import "env" "WJ" (func $internal1989)) - (import "env" "XJ" (func $internal1990)) - (import "env" "YJ" (func $internal1991)) - (import "env" "ZJ" (func $internal1992)) - (import "env" "_J" (func $internal1993)) - (import "env" "$J" (func $internal1994)) - (import "env" "aK" (func $internal1995)) - (import "env" "bK" (func $internal1996)) - (import "env" "cK" (func $internal1997)) - (import "env" "dK" (func $internal1998)) - (import "env" "eK" (func $internal1999)) - (import "env" "fK" (func $internal2000)) - (import "env" "gK" (func $internal2001)) - (import "env" "hK" (func $internal2002)) - (import "env" "iK" (func $internal2003)) - (import "env" "jK" (func $internal2004)) - (import "env" "kK" (func $internal2005)) - (import "env" "lK" (func $internal2006)) - (import "env" "mK" (func $internal2007)) - (import "env" "nK" (func $internal2008)) - (import "env" "oK" (func $internal2009)) - (import "env" "pK" (func $internal2010)) - (import "env" "qK" (func $internal2011)) - (import "env" "rK" (func $internal2012)) - (import "env" "sK" (func $internal2013)) - (import "env" "tK" (func $internal2014)) - (import "env" "uK" (func $internal2015)) - (import "env" "vK" (func $internal2016)) - (import "env" "wK" (func $internal2017)) - (import "env" "xK" (func $internal2018)) - (import "env" "yK" (func $internal2019)) - (import "env" "zK" (func $internal2020)) - (import "env" "AK" (func $internal2021)) - (import "env" "BK" (func $internal2022)) - (import "env" "CK" (func $internal2023)) - (import "env" "DK" (func $internal2024)) - (import "env" "EK" (func $internal2025)) - (import "env" "FK" (func $internal2026)) - (import "env" "GK" (func $internal2027)) - (import "env" "HK" (func $internal2028)) - (import "env" "IK" (func $internal2029)) - (import "env" "JK" (func $internal2030)) - (import "env" "KK" (func $internal2031)) - (import "env" "LK" (func $internal2032)) - (import "env" "MK" (func $internal2033)) - (import "env" "NK" (func $internal2034)) - (import "env" "OK" (func $internal2035)) - (import "env" "PK" (func $internal2036)) - (import "env" "QK" (func $internal2037)) - (import "env" "RK" (func $internal2038)) - (import "env" "SK" (func $internal2039)) - (import "env" "TK" (func $internal2040)) - (import "env" "UK" (func $internal2041)) - (import "env" "VK" (func $internal2042)) - (import "env" "WK" (func $internal2043)) - (import "env" "XK" (func $internal2044)) - (import "env" "YK" (func $internal2045)) - (import "env" "ZK" (func $internal2046)) - (import "env" "_K" (func $internal2047)) - (import "env" "$K" (func $internal2048)) - (import "env" "aL" (func $internal2049)) - (import "env" "bL" (func $internal2050)) - (import "env" "cL" (func $internal2051)) - (import "env" "dL" (func $internal2052)) - (import "env" "eL" (func $internal2053)) - (import "env" "fL" (func $internal2054)) - (import "env" "gL" (func $internal2055)) - (import "env" "hL" (func $internal2056)) - (import "env" "iL" (func $internal2057)) - (import "env" "jL" (func $internal2058)) - (import "env" "kL" (func $internal2059)) - (import "env" "lL" (func $internal2060)) - (import "env" "mL" (func $internal2061)) - (import "env" "nL" (func $internal2062)) - (import "env" "oL" (func $internal2063)) - (import "env" "pL" (func $internal2064)) - (import "env" "qL" (func $internal2065)) - (import "env" "rL" (func $internal2066)) - (import "env" "sL" (func $internal2067)) - (import "env" "tL" (func $internal2068)) - (import "env" "uL" (func $internal2069)) - (import "env" "vL" (func $internal2070)) - (import "env" "wL" (func $internal2071)) - (import "env" "xL" (func $internal2072)) - (import "env" "yL" (func $internal2073)) - (import "env" "zL" (func $internal2074)) - (import "env" "AL" (func $internal2075)) - (import "env" "BL" (func $internal2076)) - (import "env" "CL" (func $internal2077)) - (import "env" "DL" (func $internal2078)) - (import "env" "EL" (func $internal2079)) - (import "env" "FL" (func $internal2080)) - (import "env" "GL" (func $internal2081)) - (import "env" "HL" (func $internal2082)) - (import "env" "IL" (func $internal2083)) - (import "env" "JL" (func $internal2084)) - (import "env" "KL" (func $internal2085)) - (import "env" "LL" (func $internal2086)) - (import "env" "ML" (func $internal2087)) - (import "env" "NL" (func $internal2088)) - (import "env" "OL" (func $internal2089)) - (import "env" "PL" (func $internal2090)) - (import "env" "QL" (func $internal2091)) - (import "env" "RL" (func $internal2092)) - (import "env" "SL" (func $internal2093)) - (import "env" "TL" (func $internal2094)) - (import "env" "UL" (func $internal2095)) - (import "env" "VL" (func $internal2096)) - (import "env" "WL" (func $internal2097)) - (import "env" "XL" (func $internal2098)) - (import "env" "YL" (func $internal2099)) - (import "env" "ZL" (func $internal2100)) - (import "env" "_L" (func $internal2101)) - (import "env" "$L" (func $internal2102)) - (import "env" "aM" (func $internal2103)) - (import "env" "bM" (func $internal2104)) - (import "env" "cM" (func $internal2105)) - (import "env" "dM" (func $internal2106)) - (import "env" "eM" (func $internal2107)) - (import "env" "fM" (func $internal2108)) - (import "env" "gM" (func $internal2109)) - (import "env" "hM" (func $internal2110)) - (import "env" "iM" (func $internal2111)) - (import "env" "jM" (func $internal2112)) - (import "env" "kM" (func $internal2113)) - (import "env" "lM" (func $internal2114)) - (import "env" "mM" (func $internal2115)) - (import "env" "nM" (func $internal2116)) - (import "env" "oM" (func $internal2117)) - (import "env" "pM" (func $internal2118)) - (import "env" "qM" (func $internal2119)) - (import "env" "rM" (func $internal2120)) - (import "env" "sM" (func $internal2121)) - (import "env" "tM" (func $internal2122)) - (import "env" "uM" (func $internal2123)) - (import "env" "vM" (func $internal2124)) - (import "env" "wM" (func $internal2125)) - (import "env" "xM" (func $internal2126)) - (import "env" "yM" (func $internal2127)) - (import "env" "zM" (func $internal2128)) - (import "env" "AM" (func $internal2129)) - (import "env" "BM" (func $internal2130)) - (import "env" "CM" (func $internal2131)) - (import "env" "DM" (func $internal2132)) - (import "env" "EM" (func $internal2133)) - (import "env" "FM" (func $internal2134)) - (import "env" "GM" (func $internal2135)) - (import "env" "HM" (func $internal2136)) - (import "env" "IM" (func $internal2137)) - (import "env" "JM" (func $internal2138)) - (import "env" "KM" (func $internal2139)) - (import "env" "LM" (func $internal2140)) - (import "env" "MM" (func $internal2141)) - (import "env" "NM" (func $internal2142)) - (import "env" "OM" (func $internal2143)) - (import "env" "PM" (func $internal2144)) - (import "env" "QM" (func $internal2145)) - (import "env" "RM" (func $internal2146)) - (import "env" "SM" (func $internal2147)) - (import "env" "TM" (func $internal2148)) - (import "env" "UM" (func $internal2149)) - (import "env" "VM" (func $internal2150)) - (import "env" "WM" (func $internal2151)) - (import "env" "XM" (func $internal2152)) - (import "env" "YM" (func $internal2153)) - (import "env" "ZM" (func $internal2154)) - (import "env" "_M" (func $internal2155)) - (import "env" "$M" (func $internal2156)) - (import "env" "aN" (func $internal2157)) - (import "env" "bN" (func $internal2158)) - (import "env" "cN" (func $internal2159)) - (import "env" "dN" (func $internal2160)) - (import "env" "eN" (func $internal2161)) - (import "env" "fN" (func $internal2162)) - (import "env" "gN" (func $internal2163)) - (import "env" "hN" (func $internal2164)) - (import "env" "iN" (func $internal2165)) - (import "env" "jN" (func $internal2166)) - (import "env" "kN" (func $internal2167)) - (import "env" "lN" (func $internal2168)) - (import "env" "mN" (func $internal2169)) - (import "env" "nN" (func $internal2170)) - (import "env" "oN" (func $internal2171)) - (import "env" "pN" (func $internal2172)) - (import "env" "qN" (func $internal2173)) - (import "env" "rN" (func $internal2174)) - (import "env" "sN" (func $internal2175)) - (import "env" "tN" (func $internal2176)) - (import "env" "uN" (func $internal2177)) - (import "env" "vN" (func $internal2178)) - (import "env" "wN" (func $internal2179)) - (import "env" "xN" (func $internal2180)) - (import "env" "yN" (func $internal2181)) - (import "env" "zN" (func $internal2182)) - (import "env" "AN" (func $internal2183)) - (import "env" "BN" (func $internal2184)) - (import "env" "CN" (func $internal2185)) - (import "env" "DN" (func $internal2186)) - (import "env" "EN" (func $internal2187)) - (import "env" "FN" (func $internal2188)) - (import "env" "GN" (func $internal2189)) - (import "env" "HN" (func $internal2190)) - (import "env" "IN" (func $internal2191)) - (import "env" "JN" (func $internal2192)) - (import "env" "KN" (func $internal2193)) - (import "env" "LN" (func $internal2194)) - (import "env" "MN" (func $internal2195)) - (import "env" "NN" (func $internal2196)) - (import "env" "ON" (func $internal2197)) - (import "env" "PN" (func $internal2198)) - (import "env" "QN" (func $internal2199)) - (import "env" "RN" (func $internal2200)) - (import "env" "SN" (func $internal2201)) - (import "env" "TN" (func $internal2202)) - (import "env" "UN" (func $internal2203)) - (import "env" "VN" (func $internal2204)) - (import "env" "WN" (func $internal2205)) - (import "env" "XN" (func $internal2206)) - (import "env" "YN" (func $internal2207)) - (import "env" "ZN" (func $internal2208)) - (import "env" "_N" (func $internal2209)) - (import "env" "$N" (func $internal2210)) - (import "env" "aO" (func $internal2211)) - (import "env" "bO" (func $internal2212)) - (import "env" "cO" (func $internal2213)) - (import "env" "dO" (func $internal2214)) - (import "env" "eO" (func $internal2215)) - (import "env" "fO" (func $internal2216)) - (import "env" "gO" (func $internal2217)) - (import "env" "hO" (func $internal2218)) - (import "env" "iO" (func $internal2219)) - (import "env" "jO" (func $internal2220)) - (import "env" "kO" (func $internal2221)) - (import "env" "lO" (func $internal2222)) - (import "env" "mO" (func $internal2223)) - (import "env" "nO" (func $internal2224)) - (import "env" "oO" (func $internal2225)) - (import "env" "pO" (func $internal2226)) - (import "env" "qO" (func $internal2227)) - (import "env" "rO" (func $internal2228)) - (import "env" "sO" (func $internal2229)) - (import "env" "tO" (func $internal2230)) - (import "env" "uO" (func $internal2231)) - (import "env" "vO" (func $internal2232)) - (import "env" "wO" (func $internal2233)) - (import "env" "xO" (func $internal2234)) - (import "env" "yO" (func $internal2235)) - (import "env" "zO" (func $internal2236)) - (import "env" "AO" (func $internal2237)) - (import "env" "BO" (func $internal2238)) - (import "env" "CO" (func $internal2239)) - (import "env" "DO" (func $internal2240)) - (import "env" "EO" (func $internal2241)) - (import "env" "FO" (func $internal2242)) - (import "env" "GO" (func $internal2243)) - (import "env" "HO" (func $internal2244)) - (import "env" "IO" (func $internal2245)) - (import "env" "JO" (func $internal2246)) - (import "env" "KO" (func $internal2247)) - (import "env" "LO" (func $internal2248)) - (import "env" "MO" (func $internal2249)) - (import "env" "NO" (func $internal2250)) - (import "env" "OO" (func $internal2251)) - (import "env" "PO" (func $internal2252)) - (import "env" "QO" (func $internal2253)) - (import "env" "RO" (func $internal2254)) - (import "env" "SO" (func $internal2255)) - (import "env" "TO" (func $internal2256)) - (import "env" "UO" (func $internal2257)) - (import "env" "VO" (func $internal2258)) - (import "env" "WO" (func $internal2259)) - (import "env" "XO" (func $internal2260)) - (import "env" "YO" (func $internal2261)) - (import "env" "ZO" (func $internal2262)) - (import "env" "_O" (func $internal2263)) - (import "env" "$O" (func $internal2264)) - (import "env" "aP" (func $internal2265)) - (import "env" "bP" (func $internal2266)) - (import "env" "cP" (func $internal2267)) - (import "env" "dP" (func $internal2268)) - (import "env" "eP" (func $internal2269)) - (import "env" "fP" (func $internal2270)) - (import "env" "gP" (func $internal2271)) - (import "env" "hP" (func $internal2272)) - (import "env" "iP" (func $internal2273)) - (import "env" "jP" (func $internal2274)) - (import "env" "kP" (func $internal2275)) - (import "env" "lP" (func $internal2276)) - (import "env" "mP" (func $internal2277)) - (import "env" "nP" (func $internal2278)) - (import "env" "oP" (func $internal2279)) - (import "env" "pP" (func $internal2280)) - (import "env" "qP" (func $internal2281)) - (import "env" "rP" (func $internal2282)) - (import "env" "sP" (func $internal2283)) - (import "env" "tP" (func $internal2284)) - (import "env" "uP" (func $internal2285)) - (import "env" "vP" (func $internal2286)) - (import "env" "wP" (func $internal2287)) - (import "env" "xP" (func $internal2288)) - (import "env" "yP" (func $internal2289)) - (import "env" "zP" (func $internal2290)) - (import "env" "AP" (func $internal2291)) - (import "env" "BP" (func $internal2292)) - (import "env" "CP" (func $internal2293)) - (import "env" "DP" (func $internal2294)) - (import "env" "EP" (func $internal2295)) - (import "env" "FP" (func $internal2296)) - (import "env" "GP" (func $internal2297)) - (import "env" "HP" (func $internal2298)) - (import "env" "IP" (func $internal2299)) - (import "env" "JP" (func $internal2300)) - (import "env" "KP" (func $internal2301)) - (import "env" "LP" (func $internal2302)) - (import "env" "MP" (func $internal2303)) - (import "env" "NP" (func $internal2304)) - (import "env" "OP" (func $internal2305)) - (import "env" "PP" (func $internal2306)) - (import "env" "QP" (func $internal2307)) - (import "env" "RP" (func $internal2308)) - (import "env" "SP" (func $internal2309)) - (import "env" "TP" (func $internal2310)) - (import "env" "UP" (func $internal2311)) - (import "env" "VP" (func $internal2312)) - (import "env" "WP" (func $internal2313)) - (import "env" "XP" (func $internal2314)) - (import "env" "YP" (func $internal2315)) - (import "env" "ZP" (func $internal2316)) - (import "env" "_P" (func $internal2317)) - (import "env" "$P" (func $internal2318)) - (import "env" "aQ" (func $internal2319)) - (import "env" "bQ" (func $internal2320)) - (import "env" "cQ" (func $internal2321)) - (import "env" "dQ" (func $internal2322)) - (import "env" "eQ" (func $internal2323)) - (import "env" "fQ" (func $internal2324)) - (import "env" "gQ" (func $internal2325)) - (import "env" "hQ" (func $internal2326)) - (import "env" "iQ" (func $internal2327)) - (import "env" "jQ" (func $internal2328)) - (import "env" "kQ" (func $internal2329)) - (import "env" "lQ" (func $internal2330)) - (import "env" "mQ" (func $internal2331)) - (import "env" "nQ" (func $internal2332)) - (import "env" "oQ" (func $internal2333)) - (import "env" "pQ" (func $internal2334)) - (import "env" "qQ" (func $internal2335)) - (import "env" "rQ" (func $internal2336)) - (import "env" "sQ" (func $internal2337)) - (import "env" "tQ" (func $internal2338)) - (import "env" "uQ" (func $internal2339)) - (import "env" "vQ" (func $internal2340)) - (import "env" "wQ" (func $internal2341)) - (import "env" "xQ" (func $internal2342)) - (import "env" "yQ" (func $internal2343)) - (import "env" "zQ" (func $internal2344)) - (import "env" "AQ" (func $internal2345)) - (import "env" "BQ" (func $internal2346)) - (import "env" "CQ" (func $internal2347)) - (import "env" "DQ" (func $internal2348)) - (import "env" "EQ" (func $internal2349)) - (import "env" "FQ" (func $internal2350)) - (import "env" "GQ" (func $internal2351)) - (import "env" "HQ" (func $internal2352)) - (import "env" "IQ" (func $internal2353)) - (import "env" "JQ" (func $internal2354)) - (import "env" "KQ" (func $internal2355)) - (import "env" "LQ" (func $internal2356)) - (import "env" "MQ" (func $internal2357)) - (import "env" "NQ" (func $internal2358)) - (import "env" "OQ" (func $internal2359)) - (import "env" "PQ" (func $internal2360)) - (import "env" "QQ" (func $internal2361)) - (import "env" "RQ" (func $internal2362)) - (import "env" "SQ" (func $internal2363)) - (import "env" "TQ" (func $internal2364)) - (import "env" "UQ" (func $internal2365)) - (import "env" "VQ" (func $internal2366)) - (import "env" "WQ" (func $internal2367)) - (import "env" "XQ" (func $internal2368)) - (import "env" "YQ" (func $internal2369)) - (import "env" "ZQ" (func $internal2370)) - (import "env" "_Q" (func $internal2371)) - (import "env" "$Q" (func $internal2372)) - (import "env" "aR" (func $internal2373)) - (import "env" "bR" (func $internal2374)) - (import "env" "cR" (func $internal2375)) - (import "env" "dR" (func $internal2376)) - (import "env" "eR" (func $internal2377)) - (import "env" "fR" (func $internal2378)) - (import "env" "gR" (func $internal2379)) - (import "env" "hR" (func $internal2380)) - (import "env" "iR" (func $internal2381)) - (import "env" "jR" (func $internal2382)) - (import "env" "kR" (func $internal2383)) - (import "env" "lR" (func $internal2384)) - (import "env" "mR" (func $internal2385)) - (import "env" "nR" (func $internal2386)) - (import "env" "oR" (func $internal2387)) - (import "env" "pR" (func $internal2388)) - (import "env" "qR" (func $internal2389)) - (import "env" "rR" (func $internal2390)) - (import "env" "sR" (func $internal2391)) - (import "env" "tR" (func $internal2392)) - (import "env" "uR" (func $internal2393)) - (import "env" "vR" (func $internal2394)) - (import "env" "wR" (func $internal2395)) - (import "env" "xR" (func $internal2396)) - (import "env" "yR" (func $internal2397)) - (import "env" "zR" (func $internal2398)) - (import "env" "AR" (func $internal2399)) - (import "env" "BR" (func $internal2400)) - (import "env" "CR" (func $internal2401)) - (import "env" "DR" (func $internal2402)) - (import "env" "ER" (func $internal2403)) - (import "env" "FR" (func $internal2404)) - (import "env" "GR" (func $internal2405)) - (import "env" "HR" (func $internal2406)) - (import "env" "IR" (func $internal2407)) - (import "env" "JR" (func $internal2408)) - (import "env" "KR" (func $internal2409)) - (import "env" "LR" (func $internal2410)) - (import "env" "MR" (func $internal2411)) - (import "env" "NR" (func $internal2412)) - (import "env" "OR" (func $internal2413)) - (import "env" "PR" (func $internal2414)) - (import "env" "QR" (func $internal2415)) - (import "env" "RR" (func $internal2416)) - (import "env" "SR" (func $internal2417)) - (import "env" "TR" (func $internal2418)) - (import "env" "UR" (func $internal2419)) - (import "env" "VR" (func $internal2420)) - (import "env" "WR" (func $internal2421)) - (import "env" "XR" (func $internal2422)) - (import "env" "YR" (func $internal2423)) - (import "env" "ZR" (func $internal2424)) - (import "env" "_R" (func $internal2425)) - (import "env" "$R" (func $internal2426)) - (import "env" "aS" (func $internal2427)) - (import "env" "bS" (func $internal2428)) - (import "env" "cS" (func $internal2429)) - (import "env" "dS" (func $internal2430)) - (import "env" "eS" (func $internal2431)) - (import "env" "fS" (func $internal2432)) - (import "env" "gS" (func $internal2433)) - (import "env" "hS" (func $internal2434)) - (import "env" "iS" (func $internal2435)) - (import "env" "jS" (func $internal2436)) - (import "env" "kS" (func $internal2437)) - (import "env" "lS" (func $internal2438)) - (import "env" "mS" (func $internal2439)) - (import "env" "nS" (func $internal2440)) - (import "env" "oS" (func $internal2441)) - (import "env" "pS" (func $internal2442)) - (import "env" "qS" (func $internal2443)) - (import "env" "rS" (func $internal2444)) - (import "env" "sS" (func $internal2445)) - (import "env" "tS" (func $internal2446)) - (import "env" "uS" (func $internal2447)) - (import "env" "vS" (func $internal2448)) - (import "env" "wS" (func $internal2449)) - (import "env" "xS" (func $internal2450)) - (import "env" "yS" (func $internal2451)) - (import "env" "zS" (func $internal2452)) - (import "env" "AS" (func $internal2453)) - (import "env" "BS" (func $internal2454)) - (import "env" "CS" (func $internal2455)) - (import "env" "DS" (func $internal2456)) - (import "env" "ES" (func $internal2457)) - (import "env" "FS" (func $internal2458)) - (import "env" "GS" (func $internal2459)) - (import "env" "HS" (func $internal2460)) - (import "env" "IS" (func $internal2461)) - (import "env" "JS" (func $internal2462)) - (import "env" "KS" (func $internal2463)) - (import "env" "LS" (func $internal2464)) - (import "env" "MS" (func $internal2465)) - (import "env" "NS" (func $internal2466)) - (import "env" "OS" (func $internal2467)) - (import "env" "PS" (func $internal2468)) - (import "env" "QS" (func $internal2469)) - (import "env" "RS" (func $internal2470)) - (import "env" "SS" (func $internal2471)) - (import "env" "TS" (func $internal2472)) - (import "env" "US" (func $internal2473)) - (import "env" "VS" (func $internal2474)) - (import "env" "WS" (func $internal2475)) - (import "env" "XS" (func $internal2476)) - (import "env" "YS" (func $internal2477)) - (import "env" "ZS" (func $internal2478)) - (import "env" "_S" (func $internal2479)) - (import "env" "$S" (func $internal2480)) - (import "env" "aT" (func $internal2481)) - (import "env" "bT" (func $internal2482)) - (import "env" "cT" (func $internal2483)) - (import "env" "dT" (func $internal2484)) - (import "env" "eT" (func $internal2485)) - (import "env" "fT" (func $internal2486)) - (import "env" "gT" (func $internal2487)) - (import "env" "hT" (func $internal2488)) - (import "env" "iT" (func $internal2489)) - (import "env" "jT" (func $internal2490)) - (import "env" "kT" (func $internal2491)) - (import "env" "lT" (func $internal2492)) - (import "env" "mT" (func $internal2493)) - (import "env" "nT" (func $internal2494)) - (import "env" "oT" (func $internal2495)) - (import "env" "pT" (func $internal2496)) - (import "env" "qT" (func $internal2497)) - (import "env" "rT" (func $internal2498)) - (import "env" "sT" (func $internal2499)) - (import "env" "tT" (func $internal2500)) - (import "env" "uT" (func $internal2501)) - (import "env" "vT" (func $internal2502)) - (import "env" "wT" (func $internal2503)) - (import "env" "xT" (func $internal2504)) - (import "env" "yT" (func $internal2505)) - (import "env" "zT" (func $internal2506)) - (import "env" "AT" (func $internal2507)) - (import "env" "BT" (func $internal2508)) - (import "env" "CT" (func $internal2509)) - (import "env" "DT" (func $internal2510)) - (import "env" "ET" (func $internal2511)) - (import "env" "FT" (func $internal2512)) - (import "env" "GT" (func $internal2513)) - (import "env" "HT" (func $internal2514)) - (import "env" "IT" (func $internal2515)) - (import "env" "JT" (func $internal2516)) - (import "env" "KT" (func $internal2517)) - (import "env" "LT" (func $internal2518)) - (import "env" "MT" (func $internal2519)) - (import "env" "NT" (func $internal2520)) - (import "env" "OT" (func $internal2521)) - (import "env" "PT" (func $internal2522)) - (import "env" "QT" (func $internal2523)) - (import "env" "RT" (func $internal2524)) - (import "env" "ST" (func $internal2525)) - (import "env" "TT" (func $internal2526)) - (import "env" "UT" (func $internal2527)) - (import "env" "VT" (func $internal2528)) - (import "env" "WT" (func $internal2529)) - (import "env" "XT" (func $internal2530)) - (import "env" "YT" (func $internal2531)) - (import "env" "ZT" (func $internal2532)) - (import "env" "_T" (func $internal2533)) - (import "env" "$T" (func $internal2534)) - (import "env" "aU" (func $internal2535)) - (import "env" "bU" (func $internal2536)) - (import "env" "cU" (func $internal2537)) - (import "env" "dU" (func $internal2538)) - (import "env" "eU" (func $internal2539)) - (import "env" "fU" (func $internal2540)) - (import "env" "gU" (func $internal2541)) - (import "env" "hU" (func $internal2542)) - (import "env" "iU" (func $internal2543)) - (import "env" "jU" (func $internal2544)) - (import "env" "kU" (func $internal2545)) - (import "env" "lU" (func $internal2546)) - (import "env" "mU" (func $internal2547)) - (import "env" "nU" (func $internal2548)) - (import "env" "oU" (func $internal2549)) - (import "env" "pU" (func $internal2550)) - (import "env" "qU" (func $internal2551)) - (import "env" "rU" (func $internal2552)) - (import "env" "sU" (func $internal2553)) - (import "env" "tU" (func $internal2554)) - (import "env" "uU" (func $internal2555)) - (import "env" "vU" (func $internal2556)) - (import "env" "wU" (func $internal2557)) - (import "env" "xU" (func $internal2558)) - (import "env" "yU" (func $internal2559)) - (import "env" "zU" (func $internal2560)) - (import "env" "AU" (func $internal2561)) - (import "env" "BU" (func $internal2562)) - (import "env" "CU" (func $internal2563)) - (import "env" "DU" (func $internal2564)) - (import "env" "EU" (func $internal2565)) - (import "env" "FU" (func $internal2566)) - (import "env" "GU" (func $internal2567)) - (import "env" "HU" (func $internal2568)) - (import "env" "IU" (func $internal2569)) - (import "env" "JU" (func $internal2570)) - (import "env" "KU" (func $internal2571)) - (import "env" "LU" (func $internal2572)) - (import "env" "MU" (func $internal2573)) - (import "env" "NU" (func $internal2574)) - (import "env" "OU" (func $internal2575)) - (import "env" "PU" (func $internal2576)) - (import "env" "QU" (func $internal2577)) - (import "env" "RU" (func $internal2578)) - (import "env" "SU" (func $internal2579)) - (import "env" "TU" (func $internal2580)) - (import "env" "UU" (func $internal2581)) - (import "env" "VU" (func $internal2582)) - (import "env" "WU" (func $internal2583)) - (import "env" "XU" (func $internal2584)) - (import "env" "YU" (func $internal2585)) - (import "env" "ZU" (func $internal2586)) - (import "env" "_U" (func $internal2587)) - (import "env" "$U" (func $internal2588)) - (import "env" "aV" (func $internal2589)) - (import "env" "bV" (func $internal2590)) - (import "env" "cV" (func $internal2591)) - (import "env" "dV" (func $internal2592)) - (import "env" "eV" (func $internal2593)) - (import "env" "fV" (func $internal2594)) - (import "env" "gV" (func $internal2595)) - (import "env" "hV" (func $internal2596)) - (import "env" "iV" (func $internal2597)) - (import "env" "jV" (func $internal2598)) - (import "env" "kV" (func $internal2599)) - (import "env" "lV" (func $internal2600)) - (import "env" "mV" (func $internal2601)) - (import "env" "nV" (func $internal2602)) - (import "env" "oV" (func $internal2603)) - (import "env" "pV" (func $internal2604)) - (import "env" "qV" (func $internal2605)) - (import "env" "rV" (func $internal2606)) - (import "env" "sV" (func $internal2607)) - (import "env" "tV" (func $internal2608)) - (import "env" "uV" (func $internal2609)) - (import "env" "vV" (func $internal2610)) - (import "env" "wV" (func $internal2611)) - (import "env" "xV" (func $internal2612)) - (import "env" "yV" (func $internal2613)) - (import "env" "zV" (func $internal2614)) - (import "env" "AV" (func $internal2615)) - (import "env" "BV" (func $internal2616)) - (import "env" "CV" (func $internal2617)) - (import "env" "DV" (func $internal2618)) - (import "env" "EV" (func $internal2619)) - (import "env" "FV" (func $internal2620)) - (import "env" "GV" (func $internal2621)) - (import "env" "HV" (func $internal2622)) - (import "env" "IV" (func $internal2623)) - (import "env" "JV" (func $internal2624)) - (import "env" "KV" (func $internal2625)) - (import "env" "LV" (func $internal2626)) - (import "env" "MV" (func $internal2627)) - (import "env" "NV" (func $internal2628)) - (import "env" "OV" (func $internal2629)) - (import "env" "PV" (func $internal2630)) - (import "env" "QV" (func $internal2631)) - (import "env" "RV" (func $internal2632)) - (import "env" "SV" (func $internal2633)) - (import "env" "TV" (func $internal2634)) - (import "env" "UV" (func $internal2635)) - (import "env" "VV" (func $internal2636)) - (import "env" "WV" (func $internal2637)) - (import "env" "XV" (func $internal2638)) - (import "env" "YV" (func $internal2639)) - (import "env" "ZV" (func $internal2640)) - (import "env" "_V" (func $internal2641)) - (import "env" "$V" (func $internal2642)) - (import "env" "aW" (func $internal2643)) - (import "env" "bW" (func $internal2644)) - (import "env" "cW" (func $internal2645)) - (import "env" "dW" (func $internal2646)) - (import "env" "eW" (func $internal2647)) - (import "env" "fW" (func $internal2648)) - (import "env" "gW" (func $internal2649)) - (import "env" "hW" (func $internal2650)) - (import "env" "iW" (func $internal2651)) - (import "env" "jW" (func $internal2652)) - (import "env" "kW" (func $internal2653)) - (import "env" "lW" (func $internal2654)) - (import "env" "mW" (func $internal2655)) - (import "env" "nW" (func $internal2656)) - (import "env" "oW" (func $internal2657)) - (import "env" "pW" (func $internal2658)) - (import "env" "qW" (func $internal2659)) - (import "env" "rW" (func $internal2660)) - (import "env" "sW" (func $internal2661)) - (import "env" "tW" (func $internal2662)) - (import "env" "uW" (func $internal2663)) - (import "env" "vW" (func $internal2664)) - (import "env" "wW" (func $internal2665)) - (import "env" "xW" (func $internal2666)) - (import "env" "yW" (func $internal2667)) - (import "env" "zW" (func $internal2668)) - (import "env" "AW" (func $internal2669)) - (import "env" "BW" (func $internal2670)) - (import "env" "CW" (func $internal2671)) - (import "env" "DW" (func $internal2672)) - (import "env" "EW" (func $internal2673)) - (import "env" "FW" (func $internal2674)) - (import "env" "GW" (func $internal2675)) - (import "env" "HW" (func $internal2676)) - (import "env" "IW" (func $internal2677)) - (import "env" "JW" (func $internal2678)) - (import "env" "KW" (func $internal2679)) - (import "env" "LW" (func $internal2680)) - (import "env" "MW" (func $internal2681)) - (import "env" "NW" (func $internal2682)) - (import "env" "OW" (func $internal2683)) - (import "env" "PW" (func $internal2684)) - (import "env" "QW" (func $internal2685)) - (import "env" "RW" (func $internal2686)) - (import "env" "SW" (func $internal2687)) - (import "env" "TW" (func $internal2688)) - (import "env" "UW" (func $internal2689)) - (import "env" "VW" (func $internal2690)) - (import "env" "WW" (func $internal2691)) - (import "env" "XW" (func $internal2692)) - (import "env" "YW" (func $internal2693)) - (import "env" "ZW" (func $internal2694)) - (import "env" "_W" (func $internal2695)) - (import "env" "$W" (func $internal2696)) - (import "env" "aX" (func $internal2697)) - (import "env" "bX" (func $internal2698)) - (import "env" "cX" (func $internal2699)) - (import "env" "dX" (func $internal2700)) - (import "env" "eX" (func $internal2701)) - (import "env" "fX" (func $internal2702)) - (import "env" "gX" (func $internal2703)) - (import "env" "hX" (func $internal2704)) - (import "env" "iX" (func $internal2705)) - (import "env" "jX" (func $internal2706)) - (import "env" "kX" (func $internal2707)) - (import "env" "lX" (func $internal2708)) - (import "env" "mX" (func $internal2709)) - (import "env" "nX" (func $internal2710)) - (import "env" "oX" (func $internal2711)) - (import "env" "pX" (func $internal2712)) - (import "env" "qX" (func $internal2713)) - (import "env" "rX" (func $internal2714)) - (import "env" "sX" (func $internal2715)) - (import "env" "tX" (func $internal2716)) - (import "env" "uX" (func $internal2717)) - (import "env" "vX" (func $internal2718)) - (import "env" "wX" (func $internal2719)) - (import "env" "xX" (func $internal2720)) - (import "env" "yX" (func $internal2721)) - (import "env" "zX" (func $internal2722)) - (import "env" "AX" (func $internal2723)) - (import "env" "BX" (func $internal2724)) - (import "env" "CX" (func $internal2725)) - (import "env" "DX" (func $internal2726)) - (import "env" "EX" (func $internal2727)) - (import "env" "FX" (func $internal2728)) - (import "env" "GX" (func $internal2729)) - (import "env" "HX" (func $internal2730)) - (import "env" "IX" (func $internal2731)) - (import "env" "JX" (func $internal2732)) - (import "env" "KX" (func $internal2733)) - (import "env" "LX" (func $internal2734)) - (import "env" "MX" (func $internal2735)) - (import "env" "NX" (func $internal2736)) - (import "env" "OX" (func $internal2737)) - (import "env" "PX" (func $internal2738)) - (import "env" "QX" (func $internal2739)) - (import "env" "RX" (func $internal2740)) - (import "env" "SX" (func $internal2741)) - (import "env" "TX" (func $internal2742)) - (import "env" "UX" (func $internal2743)) - (import "env" "VX" (func $internal2744)) - (import "env" "WX" (func $internal2745)) - (import "env" "XX" (func $internal2746)) - (import "env" "YX" (func $internal2747)) - (import "env" "ZX" (func $internal2748)) - (import "env" "_X" (func $internal2749)) - (import "env" "$X" (func $internal2750)) - (import "env" "aY" (func $internal2751)) - (import "env" "bY" (func $internal2752)) - (import "env" "cY" (func $internal2753)) - (import "env" "dY" (func $internal2754)) - (import "env" "eY" (func $internal2755)) - (import "env" "fY" (func $internal2756)) - (import "env" "gY" (func $internal2757)) - (import "env" "hY" (func $internal2758)) - (import "env" "iY" (func $internal2759)) - (import "env" "jY" (func $internal2760)) - (import "env" "kY" (func $internal2761)) - (import "env" "lY" (func $internal2762)) - (import "env" "mY" (func $internal2763)) - (import "env" "nY" (func $internal2764)) - (import "env" "oY" (func $internal2765)) - (import "env" "pY" (func $internal2766)) - (import "env" "qY" (func $internal2767)) - (import "env" "rY" (func $internal2768)) - (import "env" "sY" (func $internal2769)) - (import "env" "tY" (func $internal2770)) - (import "env" "uY" (func $internal2771)) - (import "env" "vY" (func $internal2772)) - (import "env" "wY" (func $internal2773)) - (import "env" "xY" (func $internal2774)) - (import "env" "yY" (func $internal2775)) - (import "env" "zY" (func $internal2776)) - (import "env" "AY" (func $internal2777)) - (import "env" "BY" (func $internal2778)) - (import "env" "CY" (func $internal2779)) - (import "env" "DY" (func $internal2780)) - (import "env" "EY" (func $internal2781)) - (import "env" "FY" (func $internal2782)) - (import "env" "GY" (func $internal2783)) - (import "env" "HY" (func $internal2784)) - (import "env" "IY" (func $internal2785)) - (import "env" "JY" (func $internal2786)) - (import "env" "KY" (func $internal2787)) - (import "env" "LY" (func $internal2788)) - (import "env" "MY" (func $internal2789)) - (import "env" "NY" (func $internal2790)) - (import "env" "OY" (func $internal2791)) - (import "env" "PY" (func $internal2792)) - (import "env" "QY" (func $internal2793)) - (import "env" "RY" (func $internal2794)) - (import "env" "SY" (func $internal2795)) - (import "env" "TY" (func $internal2796)) - (import "env" "UY" (func $internal2797)) - (import "env" "VY" (func $internal2798)) - (import "env" "WY" (func $internal2799)) - (import "env" "XY" (func $internal2800)) - (import "env" "YY" (func $internal2801)) - (import "env" "ZY" (func $internal2802)) - (import "env" "_Y" (func $internal2803)) - (import "env" "$Y" (func $internal2804)) - (import "env" "aZ" (func $internal2805)) - (import "env" "bZ" (func $internal2806)) - (import "env" "cZ" (func $internal2807)) - (import "env" "dZ" (func $internal2808)) - (import "env" "eZ" (func $internal2809)) - (import "env" "fZ" (func $internal2810)) - (import "env" "gZ" (func $internal2811)) - (import "env" "hZ" (func $internal2812)) - (import "env" "iZ" (func $internal2813)) - (import "env" "jZ" (func $internal2814)) - (import "env" "kZ" (func $internal2815)) - (import "env" "lZ" (func $internal2816)) - (import "env" "mZ" (func $internal2817)) - (import "env" "nZ" (func $internal2818)) - (import "env" "oZ" (func $internal2819)) - (import "env" "pZ" (func $internal2820)) - (import "env" "qZ" (func $internal2821)) - (import "env" "rZ" (func $internal2822)) - (import "env" "sZ" (func $internal2823)) - (import "env" "tZ" (func $internal2824)) - (import "env" "uZ" (func $internal2825)) - (import "env" "vZ" (func $internal2826)) - (import "env" "wZ" (func $internal2827)) - (import "env" "xZ" (func $internal2828)) - (import "env" "yZ" (func $internal2829)) - (import "env" "zZ" (func $internal2830)) - (import "env" "AZ" (func $internal2831)) - (import "env" "BZ" (func $internal2832)) - (import "env" "CZ" (func $internal2833)) - (import "env" "DZ" (func $internal2834)) - (import "env" "EZ" (func $internal2835)) - (import "env" "FZ" (func $internal2836)) - (import "env" "GZ" (func $internal2837)) - (import "env" "HZ" (func $internal2838)) - (import "env" "IZ" (func $internal2839)) - (import "env" "JZ" (func $internal2840)) - (import "env" "KZ" (func $internal2841)) - (import "env" "LZ" (func $internal2842)) - (import "env" "MZ" (func $internal2843)) - (import "env" "NZ" (func $internal2844)) - (import "env" "OZ" (func $internal2845)) - (import "env" "PZ" (func $internal2846)) - (import "env" "QZ" (func $internal2847)) - (import "env" "RZ" (func $internal2848)) - (import "env" "SZ" (func $internal2849)) - (import "env" "TZ" (func $internal2850)) - (import "env" "UZ" (func $internal2851)) - (import "env" "VZ" (func $internal2852)) - (import "env" "WZ" (func $internal2853)) - (import "env" "XZ" (func $internal2854)) - (import "env" "YZ" (func $internal2855)) - (import "env" "ZZ" (func $internal2856)) - (import "env" "_Z" (func $internal2857)) - (import "env" "$Z" (func $internal2858)) - (import "env" "a_" (func $internal2859)) - (import "env" "b_" (func $internal2860)) - (import "env" "c_" (func $internal2861)) - (import "env" "d_" (func $internal2862)) - (import "env" "e_" (func $internal2863)) - (import "env" "f_" (func $internal2864)) - (import "env" "g_" (func $internal2865)) - (import "env" "h_" (func $internal2866)) - (import "env" "i_" (func $internal2867)) - (import "env" "j_" (func $internal2868)) - (import "env" "k_" (func $internal2869)) - (import "env" "l_" (func $internal2870)) - (import "env" "m_" (func $internal2871)) - (import "env" "n_" (func $internal2872)) - (import "env" "o_" (func $internal2873)) - (import "env" "p_" (func $internal2874)) - (import "env" "q_" (func $internal2875)) - (import "env" "r_" (func $internal2876)) - (import "env" "s_" (func $internal2877)) - (import "env" "t_" (func $internal2878)) - (import "env" "u_" (func $internal2879)) - (import "env" "v_" (func $internal2880)) - (import "env" "w_" (func $internal2881)) - (import "env" "x_" (func $internal2882)) - (import "env" "y_" (func $internal2883)) - (import "env" "z_" (func $internal2884)) - (import "env" "A_" (func $internal2885)) - (import "env" "B_" (func $internal2886)) - (import "env" "C_" (func $internal2887)) - (import "env" "D_" (func $internal2888)) - (import "env" "E_" (func $internal2889)) - (import "env" "F_" (func $internal2890)) - (import "env" "G_" (func $internal2891)) - (import "env" "H_" (func $internal2892)) - (import "env" "I_" (func $internal2893)) - (import "env" "J_" (func $internal2894)) - (import "env" "K_" (func $internal2895)) - (import "env" "L_" (func $internal2896)) - (import "env" "M_" (func $internal2897)) - (import "env" "N_" (func $internal2898)) - (import "env" "O_" (func $internal2899)) - (import "env" "P_" (func $internal2900)) - (import "env" "Q_" (func $internal2901)) - (import "env" "R_" (func $internal2902)) - (import "env" "S_" (func $internal2903)) - (import "env" "T_" (func $internal2904)) - (import "env" "U_" (func $internal2905)) - (import "env" "V_" (func $internal2906)) - (import "env" "W_" (func $internal2907)) - (import "env" "X_" (func $internal2908)) - (import "env" "Y_" (func $internal2909)) - (import "env" "Z_" (func $internal2910)) - (import "env" "__" (func $internal2911)) - (import "env" "$_" (func $internal2912)) - (import "env" "a$" (func $internal2913)) - (import "env" "b$" (func $internal2914)) - (import "env" "c$" (func $internal2915)) - (import "env" "d$" (func $internal2916)) - (import "env" "e$" (func $internal2917)) - (import "env" "f$" (func $internal2918)) - (import "env" "g$" (func $internal2919)) - (import "env" "h$" (func $internal2920)) - (import "env" "i$" (func $internal2921)) - (import "env" "j$" (func $internal2922)) - (import "env" "k$" (func $internal2923)) - (import "env" "l$" (func $internal2924)) - (import "env" "m$" (func $internal2925)) - (import "env" "n$" (func $internal2926)) - (import "env" "o$" (func $internal2927)) - (import "env" "p$" (func $internal2928)) - (import "env" "q$" (func $internal2929)) - (import "env" "r$" (func $internal2930)) - (import "env" "s$" (func $internal2931)) - (import "env" "t$" (func $internal2932)) - (import "env" "u$" (func $internal2933)) - (import "env" "v$" (func $internal2934)) - (import "env" "w$" (func $internal2935)) - (import "env" "x$" (func $internal2936)) - (import "env" "y$" (func $internal2937)) - (import "env" "z$" (func $internal2938)) - (import "env" "A$" (func $internal2939)) - (import "env" "B$" (func $internal2940)) - (import "env" "C$" (func $internal2941)) - (import "env" "D$" (func $internal2942)) - (import "env" "E$" (func $internal2943)) - (import "env" "F$" (func $internal2944)) - (import "env" "G$" (func $internal2945)) - (import "env" "H$" (func $internal2946)) - (import "env" "I$" (func $internal2947)) - (import "env" "J$" (func $internal2948)) - (import "env" "K$" (func $internal2949)) - (import "env" "L$" (func $internal2950)) - (import "env" "M$" (func $internal2951)) - (import "env" "N$" (func $internal2952)) - (import "env" "O$" (func $internal2953)) - (import "env" "P$" (func $internal2954)) - (import "env" "Q$" (func $internal2955)) - (import "env" "R$" (func $internal2956)) - (import "env" "S$" (func $internal2957)) - (import "env" "T$" (func $internal2958)) - (import "env" "U$" (func $internal2959)) - (import "env" "V$" (func $internal2960)) - (import "env" "W$" (func $internal2961)) - (import "env" "X$" (func $internal2962)) - (import "env" "Y$" (func $internal2963)) - (import "env" "Z$" (func $internal2964)) - (import "env" "_$" (func $internal2965)) - (import "env" "$$" (func $internal2966)) - (import "env" "a0" (func $internal2967)) - (import "env" "b0" (func $internal2968)) - (import "env" "c0" (func $internal2969)) - (import "env" "d0" (func $internal2970)) - (import "env" "e0" (func $internal2971)) - (import "env" "f0" (func $internal2972)) - (import "env" "g0" (func $internal2973)) - (import "env" "h0" (func $internal2974)) - (import "env" "i0" (func $internal2975)) - (import "env" "j0" (func $internal2976)) - (import "env" "k0" (func $internal2977)) - (import "env" "l0" (func $internal2978)) - (import "env" "m0" (func $internal2979)) - (import "env" "n0" (func $internal2980)) - (import "env" "o0" (func $internal2981)) - (import "env" "p0" (func $internal2982)) - (import "env" "q0" (func $internal2983)) - (import "env" "r0" (func $internal2984)) - (import "env" "s0" (func $internal2985)) - (import "env" "t0" (func $internal2986)) - (import "env" "u0" (func $internal2987)) - (import "env" "v0" (func $internal2988)) - (import "env" "w0" (func $internal2989)) - (import "env" "x0" (func $internal2990)) - (import "env" "y0" (func $internal2991)) - (import "env" "z0" (func $internal2992)) - (import "env" "A0" (func $internal2993)) - (import "env" "B0" (func $internal2994)) - (import "env" "C0" (func $internal2995)) - (import "env" "D0" (func $internal2996)) - (import "env" "E0" (func $internal2997)) - (import "env" "F0" (func $internal2998)) - (import "env" "G0" (func $internal2999)) - (import "env" "H0" (func $internal3000)) - (import "env" "I0" (func $internal3001)) - (import "env" "J0" (func $internal3002)) - (import "env" "K0" (func $internal3003)) - (import "env" "L0" (func $internal3004)) - (import "env" "M0" (func $internal3005)) - (import "env" "N0" (func $internal3006)) - (import "env" "O0" (func $internal3007)) - (import "env" "P0" (func $internal3008)) - (import "env" "Q0" (func $internal3009)) - (import "env" "R0" (func $internal3010)) - (import "env" "S0" (func $internal3011)) - (import "env" "T0" (func $internal3012)) - (import "env" "U0" (func $internal3013)) - (import "env" "V0" (func $internal3014)) - (import "env" "W0" (func $internal3015)) - (import "env" "X0" (func $internal3016)) - (import "env" "Y0" (func $internal3017)) - (import "env" "Z0" (func $internal3018)) - (import "env" "_0" (func $internal3019)) - (import "env" "$0" (func $internal3020)) - (import "env" "a1" (func $internal3021)) - (import "env" "b1" (func $internal3022)) - (import "env" "c1" (func $internal3023)) - (import "env" "d1" (func $internal3024)) - (import "env" "e1" (func $internal3025)) - (import "env" "f1" (func $internal3026)) - (import "env" "g1" (func $internal3027)) - (import "env" "h1" (func $internal3028)) - (import "env" "i1" (func $internal3029)) - (import "env" "j1" (func $internal3030)) - (import "env" "k1" (func $internal3031)) - (import "env" "l1" (func $internal3032)) - (import "env" "m1" (func $internal3033)) - (import "env" "n1" (func $internal3034)) - (import "env" "o1" (func $internal3035)) - (import "env" "p1" (func $internal3036)) - (import "env" "q1" (func $internal3037)) - (import "env" "r1" (func $internal3038)) - (import "env" "s1" (func $internal3039)) - (import "env" "t1" (func $internal3040)) - (import "env" "u1" (func $internal3041)) - (import "env" "v1" (func $internal3042)) - (import "env" "w1" (func $internal3043)) - (import "env" "x1" (func $internal3044)) - (import "env" "y1" (func $internal3045)) - (import "env" "z1" (func $internal3046)) - (import "env" "A1" (func $internal3047)) - (import "env" "B1" (func $internal3048)) - (import "env" "C1" (func $internal3049)) - (import "env" "D1" (func $internal3050)) - (import "env" "E1" (func $internal3051)) - (import "env" "F1" (func $internal3052)) - (import "env" "G1" (func $internal3053)) - (import "env" "H1" (func $internal3054)) - (import "env" "I1" (func $internal3055)) - (import "env" "J1" (func $internal3056)) - (import "env" "K1" (func $internal3057)) - (import "env" "L1" (func $internal3058)) - (import "env" "M1" (func $internal3059)) - (import "env" "N1" (func $internal3060)) - (import "env" "O1" (func $internal3061)) - (import "env" "P1" (func $internal3062)) - (import "env" "Q1" (func $internal3063)) - (import "env" "R1" (func $internal3064)) - (import "env" "S1" (func $internal3065)) - (import "env" "T1" (func $internal3066)) - (import "env" "U1" (func $internal3067)) - (import "env" "V1" (func $internal3068)) - (import "env" "W1" (func $internal3069)) - (import "env" "X1" (func $internal3070)) - (import "env" "Y1" (func $internal3071)) - (import "env" "Z1" (func $internal3072)) - (import "env" "_1" (func $internal3073)) - (import "env" "$1" (func $internal3074)) - (import "env" "a2" (func $internal3075)) - (import "env" "b2" (func $internal3076)) - (import "env" "c2" (func $internal3077)) - (import "env" "d2" (func $internal3078)) - (import "env" "e2" (func $internal3079)) - (import "env" "f2" (func $internal3080)) - (import "env" "g2" (func $internal3081)) - (import "env" "h2" (func $internal3082)) - (import "env" "i2" (func $internal3083)) - (import "env" "j2" (func $internal3084)) - (import "env" "k2" (func $internal3085)) - (import "env" "l2" (func $internal3086)) - (import "env" "m2" (func $internal3087)) - (import "env" "n2" (func $internal3088)) - (import "env" "o2" (func $internal3089)) - (import "env" "p2" (func $internal3090)) - (import "env" "q2" (func $internal3091)) - (import "env" "r2" (func $internal3092)) - (import "env" "s2" (func $internal3093)) - (import "env" "t2" (func $internal3094)) - (import "env" "u2" (func $internal3095)) - (import "env" "v2" (func $internal3096)) - (import "env" "w2" (func $internal3097)) - (import "env" "x2" (func $internal3098)) - (import "env" "y2" (func $internal3099)) - (import "env" "z2" (func $internal3100)) - (import "env" "A2" (func $internal3101)) - (import "env" "B2" (func $internal3102)) - (import "env" "C2" (func $internal3103)) - (import "env" "D2" (func $internal3104)) - (import "env" "E2" (func $internal3105)) - (import "env" "F2" (func $internal3106)) - (import "env" "G2" (func $internal3107)) - (import "env" "H2" (func $internal3108)) - (import "env" "I2" (func $internal3109)) - (import "env" "J2" (func $internal3110)) - (import "env" "K2" (func $internal3111)) - (import "env" "L2" (func $internal3112)) - (import "env" "M2" (func $internal3113)) - (import "env" "N2" (func $internal3114)) - (import "env" "O2" (func $internal3115)) - (import "env" "P2" (func $internal3116)) - (import "env" "Q2" (func $internal3117)) - (import "env" "R2" (func $internal3118)) - (import "env" "S2" (func $internal3119)) - (import "env" "T2" (func $internal3120)) - (import "env" "U2" (func $internal3121)) - (import "env" "V2" (func $internal3122)) - (import "env" "W2" (func $internal3123)) - (import "env" "X2" (func $internal3124)) - (import "env" "Y2" (func $internal3125)) - (import "env" "Z2" (func $internal3126)) - (import "env" "_2" (func $internal3127)) - (import "env" "$2" (func $internal3128)) - (import "env" "a3" (func $internal3129)) - (import "env" "b3" (func $internal3130)) - (import "env" "c3" (func $internal3131)) - (import "env" "d3" (func $internal3132)) - (import "env" "e3" (func $internal3133)) - (import "env" "f3" (func $internal3134)) - (import "env" "g3" (func $internal3135)) - (import "env" "h3" (func $internal3136)) - (import "env" "i3" (func $internal3137)) - (import "env" "j3" (func $internal3138)) - (import "env" "k3" (func $internal3139)) - (import "env" "l3" (func $internal3140)) - (import "env" "m3" (func $internal3141)) - (import "env" "n3" (func $internal3142)) - (import "env" "o3" (func $internal3143)) - (import "env" "p3" (func $internal3144)) - (import "env" "q3" (func $internal3145)) - (import "env" "r3" (func $internal3146)) - (import "env" "s3" (func $internal3147)) - (import "env" "t3" (func $internal3148)) - (import "env" "u3" (func $internal3149)) - (import "env" "v3" (func $internal3150)) - (import "env" "w3" (func $internal3151)) - (import "env" "x3" (func $internal3152)) - (import "env" "y3" (func $internal3153)) - (import "env" "z3" (func $internal3154)) - (import "env" "A3" (func $internal3155)) - (import "env" "B3" (func $internal3156)) - (import "env" "C3" (func $internal3157)) - (import "env" "D3" (func $internal3158)) - (import "env" "E3" (func $internal3159)) - (import "env" "F3" (func $internal3160)) - (import "env" "G3" (func $internal3161)) - (import "env" "H3" (func $internal3162)) - (import "env" "I3" (func $internal3163)) - (import "env" "J3" (func $internal3164)) - (import "env" "K3" (func $internal3165)) - (import "env" "L3" (func $internal3166)) - (import "env" "M3" (func $internal3167)) - (import "env" "N3" (func $internal3168)) - (import "env" "O3" (func $internal3169)) - (import "env" "P3" (func $internal3170)) - (import "env" "Q3" (func $internal3171)) - (import "env" "R3" (func $internal3172)) - (import "env" "S3" (func $internal3173)) - (import "env" "T3" (func $internal3174)) - (import "env" "U3" (func $internal3175)) - (import "env" "V3" (func $internal3176)) - (import "env" "W3" (func $internal3177)) - (import "env" "X3" (func $internal3178)) - (import "env" "Y3" (func $internal3179)) - (import "env" "Z3" (func $internal3180)) - (import "env" "_3" (func $internal3181)) - (import "env" "$3" (func $internal3182)) - (import "env" "a4" (func $internal3183)) - (import "env" "b4" (func $internal3184)) - (import "env" "c4" (func $internal3185)) - (import "env" "d4" (func $internal3186)) - (import "env" "e4" (func $internal3187)) - (import "env" "f4" (func $internal3188)) - (import "env" "g4" (func $internal3189)) - (import "env" "h4" (func $internal3190)) - (import "env" "i4" (func $internal3191)) - (import "env" "j4" (func $internal3192)) - (import "env" "k4" (func $internal3193)) - (import "env" "l4" (func $internal3194)) - (import "env" "m4" (func $internal3195)) - (import "env" "n4" (func $internal3196)) - (import "env" "o4" (func $internal3197)) - (import "env" "p4" (func $internal3198)) - (import "env" "q4" (func $internal3199)) - (import "env" "r4" (func $internal3200)) - (import "env" "s4" (func $internal3201)) - (import "env" "t4" (func $internal3202)) - (import "env" "u4" (func $internal3203)) - (import "env" "v4" (func $internal3204)) - (import "env" "w4" (func $internal3205)) - (import "env" "x4" (func $internal3206)) - (import "env" "y4" (func $internal3207)) - (import "env" "z4" (func $internal3208)) - (import "env" "A4" (func $internal3209)) - (import "env" "B4" (func $internal3210)) - (import "env" "C4" (func $internal3211)) - (import "env" "D4" (func $internal3212)) - (import "env" "E4" (func $internal3213)) - (import "env" "F4" (func $internal3214)) - (import "env" "G4" (func $internal3215)) - (import "env" "H4" (func $internal3216)) - (import "env" "I4" (func $internal3217)) - (import "env" "J4" (func $internal3218)) - (import "env" "K4" (func $internal3219)) - (import "env" "L4" (func $internal3220)) - (import "env" "M4" (func $internal3221)) - (import "env" "N4" (func $internal3222)) - (import "env" "O4" (func $internal3223)) - (import "env" "P4" (func $internal3224)) - (import "env" "Q4" (func $internal3225)) - (import "env" "R4" (func $internal3226)) - (import "env" "S4" (func $internal3227)) - (import "env" "T4" (func $internal3228)) - (import "env" "U4" (func $internal3229)) - (import "env" "V4" (func $internal3230)) - (import "env" "W4" (func $internal3231)) - (import "env" "X4" (func $internal3232)) - (import "env" "Y4" (func $internal3233)) - (import "env" "Z4" (func $internal3234)) - (import "env" "_4" (func $internal3235)) - (import "env" "$4" (func $internal3236)) - (import "env" "a5" (func $internal3237)) - (import "env" "b5" (func $internal3238)) - (import "env" "c5" (func $internal3239)) - (import "env" "d5" (func $internal3240)) - (import "env" "e5" (func $internal3241)) - (import "env" "f5" (func $internal3242)) - (import "env" "g5" (func $internal3243)) - (import "env" "h5" (func $internal3244)) - (import "env" "i5" (func $internal3245)) - (import "env" "j5" (func $internal3246)) - (import "env" "k5" (func $internal3247)) - (import "env" "l5" (func $internal3248)) - (import "env" "m5" (func $internal3249)) - (import "env" "n5" (func $internal3250)) - (import "env" "o5" (func $internal3251)) - (import "env" "p5" (func $internal3252)) - (import "env" "q5" (func $internal3253)) - (import "env" "r5" (func $internal3254)) - (import "env" "s5" (func $internal3255)) - (import "env" "t5" (func $internal3256)) - (import "env" "u5" (func $internal3257)) - (import "env" "v5" (func $internal3258)) - (import "env" "w5" (func $internal3259)) - (import "env" "x5" (func $internal3260)) - (import "env" "y5" (func $internal3261)) - (import "env" "z5" (func $internal3262)) - (import "env" "A5" (func $internal3263)) - (import "env" "B5" (func $internal3264)) - (import "env" "C5" (func $internal3265)) - (import "env" "D5" (func $internal3266)) - (import "env" "E5" (func $internal3267)) - (import "env" "F5" (func $internal3268)) - (import "env" "G5" (func $internal3269)) - (import "env" "H5" (func $internal3270)) - (import "env" "I5" (func $internal3271)) - (import "env" "J5" (func $internal3272)) - (import "env" "K5" (func $internal3273)) - (import "env" "L5" (func $internal3274)) - (import "env" "M5" (func $internal3275)) - (import "env" "N5" (func $internal3276)) - (import "env" "O5" (func $internal3277)) - (import "env" "P5" (func $internal3278)) - (import "env" "Q5" (func $internal3279)) - (import "env" "R5" (func $internal3280)) - (import "env" "S5" (func $internal3281)) - (import "env" "T5" (func $internal3282)) - (import "env" "U5" (func $internal3283)) - (import "env" "V5" (func $internal3284)) - (import "env" "W5" (func $internal3285)) - (import "env" "X5" (func $internal3286)) - (import "env" "Y5" (func $internal3287)) - (import "env" "Z5" (func $internal3288)) - (import "env" "_5" (func $internal3289)) - (import "env" "$5" (func $internal3290)) - (import "env" "a6" (func $internal3291)) - (import "env" "b6" (func $internal3292)) - (import "env" "c6" (func $internal3293)) - (import "env" "d6" (func $internal3294)) - (import "env" "e6" (func $internal3295)) - (import "env" "f6" (func $internal3296)) - (import "env" "g6" (func $internal3297)) - (import "env" "h6" (func $internal3298)) - (import "env" "i6" (func $internal3299)) - (import "env" "j6" (func $internal3300)) - (import "env" "k6" (func $internal3301)) - (import "env" "l6" (func $internal3302)) - (import "env" "m6" (func $internal3303)) - (import "env" "n6" (func $internal3304)) - (import "env" "o6" (func $internal3305)) - (import "env" "p6" (func $internal3306)) - (import "env" "q6" (func $internal3307)) - (import "env" "r6" (func $internal3308)) - (import "env" "s6" (func $internal3309)) - (import "env" "t6" (func $internal3310)) - (import "env" "u6" (func $internal3311)) - (import "env" "v6" (func $internal3312)) - (import "env" "w6" (func $internal3313)) - (import "env" "x6" (func $internal3314)) - (import "env" "y6" (func $internal3315)) - (import "env" "z6" (func $internal3316)) - (import "env" "A6" (func $internal3317)) - (import "env" "B6" (func $internal3318)) - (import "env" "C6" (func $internal3319)) - (import "env" "D6" (func $internal3320)) - (import "env" "E6" (func $internal3321)) - (import "env" "F6" (func $internal3322)) - (import "env" "G6" (func $internal3323)) - (import "env" "H6" (func $internal3324)) - (import "env" "I6" (func $internal3325)) - (import "env" "J6" (func $internal3326)) - (import "env" "K6" (func $internal3327)) - (import "env" "L6" (func $internal3328)) - (import "env" "M6" (func $internal3329)) - (import "env" "N6" (func $internal3330)) - (import "env" "O6" (func $internal3331)) - (import "env" "P6" (func $internal3332)) - (import "env" "Q6" (func $internal3333)) - (import "env" "R6" (func $internal3334)) - (import "env" "S6" (func $internal3335)) - (import "env" "T6" (func $internal3336)) - (import "env" "U6" (func $internal3337)) - (import "env" "V6" (func $internal3338)) - (import "env" "W6" (func $internal3339)) - (import "env" "X6" (func $internal3340)) - (import "env" "Y6" (func $internal3341)) - (import "env" "Z6" (func $internal3342)) - (import "env" "_6" (func $internal3343)) - (import "env" "$6" (func $internal3344)) - (import "env" "a7" (func $internal3345)) - (import "env" "b7" (func $internal3346)) - (import "env" "c7" (func $internal3347)) - (import "env" "d7" (func $internal3348)) - (import "env" "e7" (func $internal3349)) - (import "env" "f7" (func $internal3350)) - (import "env" "g7" (func $internal3351)) - (import "env" "h7" (func $internal3352)) - (import "env" "i7" (func $internal3353)) - (import "env" "j7" (func $internal3354)) - (import "env" "k7" (func $internal3355)) - (import "env" "l7" (func $internal3356)) - (import "env" "m7" (func $internal3357)) - (import "env" "n7" (func $internal3358)) - (import "env" "o7" (func $internal3359)) - (import "env" "p7" (func $internal3360)) - (import "env" "q7" (func $internal3361)) - (import "env" "r7" (func $internal3362)) - (import "env" "s7" (func $internal3363)) - (import "env" "t7" (func $internal3364)) - (import "env" "u7" (func $internal3365)) - (import "env" "v7" (func $internal3366)) - (import "env" "w7" (func $internal3367)) - (import "env" "x7" (func $internal3368)) - (import "env" "y7" (func $internal3369)) - (import "env" "z7" (func $internal3370)) - (import "env" "A7" (func $internal3371)) - (import "env" "B7" (func $internal3372)) - (import "env" "C7" (func $internal3373)) - (import "env" "D7" (func $internal3374)) - (import "env" "E7" (func $internal3375)) - (import "env" "F7" (func $internal3376)) - (import "env" "G7" (func $internal3377)) - (import "env" "H7" (func $internal3378)) - (import "env" "I7" (func $internal3379)) - (import "env" "J7" (func $internal3380)) - (import "env" "K7" (func $internal3381)) - (import "env" "L7" (func $internal3382)) - (import "env" "M7" (func $internal3383)) - (import "env" "N7" (func $internal3384)) - (import "env" "O7" (func $internal3385)) - (import "env" "P7" (func $internal3386)) - (import "env" "Q7" (func $internal3387)) - (import "env" "R7" (func $internal3388)) - (import "env" "S7" (func $internal3389)) - (import "env" "T7" (func $internal3390)) - (import "env" "U7" (func $internal3391)) - (import "env" "V7" (func $internal3392)) - (import "env" "W7" (func $internal3393)) - (import "env" "X7" (func $internal3394)) - (import "env" "Y7" (func $internal3395)) - (import "env" "Z7" (func $internal3396)) - (import "env" "_7" (func $internal3397)) - (import "env" "$7" (func $internal3398)) - (import "env" "a8" (func $internal3399)) - (import "env" "b8" (func $internal3400)) - (import "env" "c8" (func $internal3401)) - (import "env" "d8" (func $internal3402)) - (import "env" "e8" (func $internal3403)) - (import "env" "f8" (func $internal3404)) - (import "env" "g8" (func $internal3405)) - (import "env" "h8" (func $internal3406)) - (import "env" "i8" (func $internal3407)) - (import "env" "j8" (func $internal3408)) - (import "env" "k8" (func $internal3409)) - (import "env" "l8" (func $internal3410)) - (import "env" "m8" (func $internal3411)) - (import "env" "n8" (func $internal3412)) - (import "env" "o8" (func $internal3413)) - (import "env" "p8" (func $internal3414)) - (import "env" "q8" (func $internal3415)) - (import "env" "r8" (func $internal3416)) - (import "env" "s8" (func $internal3417)) - (import "env" "t8" (func $internal3418)) - (import "env" "u8" (func $internal3419)) - (import "env" "v8" (func $internal3420)) - (import "env" "w8" (func $internal3421)) - (import "env" "x8" (func $internal3422)) - (import "env" "y8" (func $internal3423)) - (import "env" "z8" (func $internal3424)) - (import "env" "A8" (func $internal3425)) - (import "env" "B8" (func $internal3426)) - (import "env" "C8" (func $internal3427)) - (import "env" "D8" (func $internal3428)) - (import "env" "E8" (func $internal3429)) - (import "env" "F8" (func $internal3430)) - (import "env" "G8" (func $internal3431)) - (import "env" "H8" (func $internal3432)) - (import "env" "I8" (func $internal3433)) - (import "env" "J8" (func $internal3434)) - (import "env" "K8" (func $internal3435)) - (import "env" "L8" (func $internal3436)) - (import "env" "M8" (func $internal3437)) - (import "env" "N8" (func $internal3438)) - (import "env" "O8" (func $internal3439)) - (import "env" "P8" (func $internal3440)) - (import "env" "Q8" (func $internal3441)) - (import "env" "R8" (func $internal3442)) - (import "env" "S8" (func $internal3443)) - (import "env" "T8" (func $internal3444)) - (import "env" "U8" (func $internal3445)) - (import "env" "V8" (func $internal3446)) - (import "env" "W8" (func $internal3447)) - (import "env" "X8" (func $internal3448)) - (import "env" "Y8" (func $internal3449)) - (import "env" "Z8" (func $internal3450)) - (import "env" "_8" (func $internal3451)) - (import "env" "$8" (func $internal3452)) - (import "env" "a9" (func $internal3453)) - (import "env" "b9" (func $internal3454)) - (import "env" "c9" (func $internal3455)) - (import "env" "d9" (func $internal3456)) - (import "env" "e9" (func $internal3457)) - (import "env" "f9" (func $internal3458)) - (import "env" "g9" (func $internal3459)) - (import "env" "h9" (func $internal3460)) - (import "env" "i9" (func $internal3461)) - (import "env" "j9" (func $internal3462)) - (import "env" "k9" (func $internal3463)) - (import "env" "l9" (func $internal3464)) - (import "env" "m9" (func $internal3465)) - (import "env" "n9" (func $internal3466)) - (import "env" "o9" (func $internal3467)) - (import "env" "p9" (func $internal3468)) - (import "env" "q9" (func $internal3469)) - (import "env" "r9" (func $internal3470)) - (import "env" "s9" (func $internal3471)) - (import "env" "t9" (func $internal3472)) - (import "env" "u9" (func $internal3473)) - (import "env" "v9" (func $internal3474)) - (import "env" "w9" (func $internal3475)) - (import "env" "x9" (func $internal3476)) - (import "env" "y9" (func $internal3477)) - (import "env" "z9" (func $internal3478)) - (import "env" "A9" (func $internal3479)) - (import "env" "B9" (func $internal3480)) - (import "env" "C9" (func $internal3481)) - (import "env" "D9" (func $internal3482)) - (import "env" "E9" (func $internal3483)) - (import "env" "F9" (func $internal3484)) - (import "env" "G9" (func $internal3485)) - (import "env" "H9" (func $internal3486)) - (import "env" "I9" (func $internal3487)) - (import "env" "J9" (func $internal3488)) - (import "env" "K9" (func $internal3489)) - (import "env" "L9" (func $internal3490)) - (import "env" "M9" (func $internal3491)) - (import "env" "N9" (func $internal3492)) - (import "env" "O9" (func $internal3493)) - (import "env" "P9" (func $internal3494)) - (import "env" "Q9" (func $internal3495)) - (import "env" "R9" (func $internal3496)) - (import "env" "S9" (func $internal3497)) - (import "env" "T9" (func $internal3498)) - (import "env" "U9" (func $internal3499)) - (import "env" "V9" (func $internal3500)) - (import "env" "W9" (func $internal3501)) - (import "env" "X9" (func $internal3502)) - (import "env" "Y9" (func $internal3503)) - (import "env" "Z9" (func $internal3504)) - (import "env" "_9" (func $internal3505)) - (import "env" "$9" (func $internal3506)) - (import "env" "aaa" (func $internal3507)) - (import "env" "baa" (func $internal3508)) - (import "env" "caa" (func $internal3509)) - (import "env" "daa" (func $internal3510)) - (import "env" "eaa" (func $internal3511)) - (import "env" "faa" (func $internal3512)) - (import "env" "gaa" (func $internal3513)) - (import "env" "haa" (func $internal3514)) - (import "env" "iaa" (func $internal3515)) - (import "env" "jaa" (func $internal3516)) - (import "env" "kaa" (func $internal3517)) - (import "env" "laa" (func $internal3518)) - (import "env" "maa" (func $internal3519)) - (import "env" "naa" (func $internal3520)) - (import "env" "oaa" (func $internal3521)) - (import "env" "paa" (func $internal3522)) - (import "env" "qaa" (func $internal3523)) - (import "env" "raa" (func $internal3524)) - (import "env" "saa" (func $internal3525)) - (import "env" "taa" (func $internal3526)) - (import "env" "uaa" (func $internal3527)) - (import "env" "vaa" (func $internal3528)) - (import "env" "waa" (func $internal3529)) - (import "env" "xaa" (func $internal3530)) - (import "env" "yaa" (func $internal3531)) - (import "env" "zaa" (func $internal3532)) - (import "env" "Aaa" (func $internal3533)) - (import "env" "Baa" (func $internal3534)) - (import "env" "Caa" (func $internal3535)) - (import "env" "Daa" (func $internal3536)) - (import "env" "Eaa" (func $internal3537)) - (import "env" "Faa" (func $internal3538)) - (import "env" "Gaa" (func $internal3539)) - (import "env" "Haa" (func $internal3540)) - (import "env" "Iaa" (func $internal3541)) - (import "env" "Jaa" (func $internal3542)) - (import "env" "Kaa" (func $internal3543)) - (import "env" "Laa" (func $internal3544)) - (import "env" "Maa" (func $internal3545)) - (import "env" "Naa" (func $internal3546)) - (import "env" "Oaa" (func $internal3547)) - (import "env" "Paa" (func $internal3548)) - (import "env" "Qaa" (func $internal3549)) - (import "env" "Raa" (func $internal3550)) - (import "env" "Saa" (func $internal3551)) - (import "env" "Taa" (func $internal3552)) - (import "env" "Uaa" (func $internal3553)) - (import "env" "Vaa" (func $internal3554)) - (import "env" "Waa" (func $internal3555)) - (import "env" "Xaa" (func $internal3556)) - (import "env" "Yaa" (func $internal3557)) - (import "env" "Zaa" (func $internal3558)) - (import "env" "_aa" (func $internal3559)) - (import "env" "$aa" (func $internal3560)) - (import "env" "aba" (func $internal3561)) - (import "env" "bba" (func $internal3562)) - (import "env" "cba" (func $internal3563)) - (import "env" "dba" (func $internal3564)) - (import "env" "eba" (func $internal3565)) - (import "env" "fba" (func $internal3566)) - (import "env" "gba" (func $internal3567)) - (import "env" "hba" (func $internal3568)) - (import "env" "iba" (func $internal3569)) - (import "env" "jba" (func $internal3570)) - (import "env" "kba" (func $internal3571)) - (import "env" "lba" (func $internal3572)) - (import "env" "mba" (func $internal3573)) - (import "env" "nba" (func $internal3574)) - (import "env" "oba" (func $internal3575)) - (import "env" "pba" (func $internal3576)) - (import "env" "qba" (func $internal3577)) - (import "env" "rba" (func $internal3578)) - (import "env" "sba" (func $internal3579)) - (import "env" "tba" (func $internal3580)) - (import "env" "uba" (func $internal3581)) - (import "env" "vba" (func $internal3582)) - (import "env" "wba" (func $internal3583)) - (import "env" "xba" (func $internal3584)) - (import "env" "yba" (func $internal3585)) - (import "env" "zba" (func $internal3586)) - (import "env" "Aba" (func $internal3587)) - (import "env" "Bba" (func $internal3588)) - (import "env" "Cba" (func $internal3589)) - (import "env" "Dba" (func $internal3590)) - (import "env" "Eba" (func $internal3591)) - (import "env" "Fba" (func $internal3592)) - (import "env" "Gba" (func $internal3593)) - (import "env" "Hba" (func $internal3594)) - (import "env" "Iba" (func $internal3595)) - (import "env" "Jba" (func $internal3596)) - (import "env" "Kba" (func $internal3597)) - (import "env" "Lba" (func $internal3598)) - (import "env" "Mba" (func $internal3599)) - (import "env" "Nba" (func $internal3600)) - (import "env" "Oba" (func $internal3601)) - (import "env" "Pba" (func $internal3602)) - (import "env" "Qba" (func $internal3603)) - (import "env" "Rba" (func $internal3604)) - (import "env" "Sba" (func $internal3605)) - (import "env" "Tba" (func $internal3606)) - (import "env" "Uba" (func $internal3607)) - (import "env" "Vba" (func $internal3608)) - (import "env" "Wba" (func $internal3609)) - (import "env" "Xba" (func $internal3610)) - (import "env" "Yba" (func $internal3611)) - (import "env" "Zba" (func $internal3612)) - (import "env" "_ba" (func $internal3613)) - (import "env" "$ba" (func $internal3614)) - (import "env" "aca" (func $internal3615)) - (import "env" "bca" (func $internal3616)) - (import "env" "cca" (func $internal3617)) - (import "env" "dca" (func $internal3618)) - (import "env" "eca" (func $internal3619)) - (import "env" "fca" (func $internal3620)) - (import "env" "gca" (func $internal3621)) - (import "env" "hca" (func $internal3622)) - (import "env" "ica" (func $internal3623)) - (import "env" "jca" (func $internal3624)) - (import "env" "kca" (func $internal3625)) - (import "env" "lca" (func $internal3626)) - (import "env" "mca" (func $internal3627)) - (import "env" "nca" (func $internal3628)) - (import "env" "oca" (func $internal3629)) - (import "env" "pca" (func $internal3630)) - (import "env" "qca" (func $internal3631)) - (import "env" "rca" (func $internal3632)) - (import "env" "sca" (func $internal3633)) - (import "env" "tca" (func $internal3634)) - (import "env" "uca" (func $internal3635)) - (import "env" "vca" (func $internal3636)) - (import "env" "wca" (func $internal3637)) - (import "env" "xca" (func $internal3638)) - (import "env" "yca" (func $internal3639)) - (import "env" "zca" (func $internal3640)) - (import "env" "Aca" (func $internal3641)) - (import "env" "Bca" (func $internal3642)) - (import "env" "Cca" (func $internal3643)) - (import "env" "Dca" (func $internal3644)) - (import "env" "Eca" (func $internal3645)) - (import "env" "Fca" (func $internal3646)) - (import "env" "Gca" (func $internal3647)) - (import "env" "Hca" (func $internal3648)) - (import "env" "Ica" (func $internal3649)) - (import "env" "Jca" (func $internal3650)) - (import "env" "Kca" (func $internal3651)) - (import "env" "Lca" (func $internal3652)) - (import "env" "Mca" (func $internal3653)) - (import "env" "Nca" (func $internal3654)) - (import "env" "Oca" (func $internal3655)) - (import "env" "Pca" (func $internal3656)) - (import "env" "Qca" (func $internal3657)) - (import "env" "Rca" (func $internal3658)) - (import "env" "Sca" (func $internal3659)) - (import "env" "Tca" (func $internal3660)) - (import "env" "Uca" (func $internal3661)) - (import "env" "Vca" (func $internal3662)) - (import "env" "Wca" (func $internal3663)) - (import "env" "Xca" (func $internal3664)) - (import "env" "Yca" (func $internal3665)) - (import "env" "Zca" (func $internal3666)) - (import "env" "_ca" (func $internal3667)) - (import "env" "$ca" (func $internal3668)) - (import "env" "ada" (func $internal3669)) - (import "env" "bda" (func $internal3670)) - (import "env" "cda" (func $internal3671)) - (import "env" "dda" (func $internal3672)) - (import "env" "eda" (func $internal3673)) - (import "env" "fda" (func $internal3674)) - (import "env" "gda" (func $internal3675)) - (import "env" "hda" (func $internal3676)) - (import "env" "ida" (func $internal3677)) - (import "env" "jda" (func $internal3678)) - (import "env" "kda" (func $internal3679)) - (import "env" "lda" (func $internal3680)) - (import "env" "mda" (func $internal3681)) - (import "env" "nda" (func $internal3682)) - (import "env" "oda" (func $internal3683)) - (import "env" "pda" (func $internal3684)) - (import "env" "qda" (func $internal3685)) - (import "env" "rda" (func $internal3686)) - (import "env" "sda" (func $internal3687)) - (import "env" "tda" (func $internal3688)) - (import "env" "uda" (func $internal3689)) - (import "env" "vda" (func $internal3690)) - (import "env" "wda" (func $internal3691)) - (import "env" "xda" (func $internal3692)) - (import "env" "yda" (func $internal3693)) - (import "env" "zda" (func $internal3694)) - (import "env" "Ada" (func $internal3695)) - (import "env" "Bda" (func $internal3696)) - (import "env" "Cda" (func $internal3697)) - (import "env" "Dda" (func $internal3698)) - (import "env" "Eda" (func $internal3699)) - (import "env" "Fda" (func $internal3700)) - (import "env" "Gda" (func $internal3701)) - (import "env" "Hda" (func $internal3702)) - (import "env" "Ida" (func $internal3703)) - (import "env" "Jda" (func $internal3704)) - (import "env" "Kda" (func $internal3705)) - (import "env" "Lda" (func $internal3706)) - (import "env" "Mda" (func $internal3707)) - (import "env" "Nda" (func $internal3708)) - (import "env" "Oda" (func $internal3709)) - (import "env" "Pda" (func $internal3710)) - (import "env" "Qda" (func $internal3711)) - (import "env" "Rda" (func $internal3712)) - (import "env" "Sda" (func $internal3713)) - (import "env" "Tda" (func $internal3714)) - (import "env" "Uda" (func $internal3715)) - (import "env" "Vda" (func $internal3716)) - (import "env" "Wda" (func $internal3717)) - (import "env" "Xda" (func $internal3718)) - (import "env" "Yda" (func $internal3719)) - (import "env" "Zda" (func $internal3720)) - (import "env" "_da" (func $internal3721)) - (import "env" "$da" (func $internal3722)) - (import "env" "aea" (func $internal3723)) - (import "env" "bea" (func $internal3724)) - (import "env" "cea" (func $internal3725)) - (import "env" "dea" (func $internal3726)) - (import "env" "eea" (func $internal3727)) - (import "env" "fea" (func $internal3728)) - (import "env" "gea" (func $internal3729)) - (import "env" "hea" (func $internal3730)) - (import "env" "iea" (func $internal3731)) - (import "env" "jea" (func $internal3732)) - (import "env" "kea" (func $internal3733)) - (import "env" "lea" (func $internal3734)) - (import "env" "mea" (func $internal3735)) - (import "env" "nea" (func $internal3736)) - (import "env" "oea" (func $internal3737)) - (import "env" "pea" (func $internal3738)) - (import "env" "qea" (func $internal3739)) - (import "env" "rea" (func $internal3740)) - (import "env" "sea" (func $internal3741)) - (import "env" "tea" (func $internal3742)) - (import "env" "uea" (func $internal3743)) - (import "env" "vea" (func $internal3744)) - (import "env" "wea" (func $internal3745)) - (import "env" "xea" (func $internal3746)) - (import "env" "yea" (func $internal3747)) - (import "env" "zea" (func $internal3748)) - (import "env" "Aea" (func $internal3749)) - (import "env" "Bea" (func $internal3750)) - (import "env" "Cea" (func $internal3751)) - (import "env" "Dea" (func $internal3752)) - (import "env" "Eea" (func $internal3753)) - (import "env" "Fea" (func $internal3754)) - (import "env" "Gea" (func $internal3755)) - (import "env" "Hea" (func $internal3756)) - (import "env" "Iea" (func $internal3757)) - (import "env" "Jea" (func $internal3758)) - (import "env" "Kea" (func $internal3759)) - (import "env" "Lea" (func $internal3760)) - (import "env" "Mea" (func $internal3761)) - (import "env" "Nea" (func $internal3762)) - (import "env" "Oea" (func $internal3763)) - (import "env" "Pea" (func $internal3764)) - (import "env" "Qea" (func $internal3765)) - (import "env" "Rea" (func $internal3766)) - (import "env" "Sea" (func $internal3767)) - (import "env" "Tea" (func $internal3768)) - (import "env" "Uea" (func $internal3769)) - (import "env" "Vea" (func $internal3770)) - (import "env" "Wea" (func $internal3771)) - (import "env" "Xea" (func $internal3772)) - (import "env" "Yea" (func $internal3773)) - (import "env" "Zea" (func $internal3774)) - (import "env" "_ea" (func $internal3775)) - (import "env" "$ea" (func $internal3776)) - (import "env" "afa" (func $internal3777)) - (import "env" "bfa" (func $internal3778)) - (import "env" "cfa" (func $internal3779)) - (import "env" "dfa" (func $internal3780)) - (import "env" "efa" (func $internal3781)) - (import "env" "ffa" (func $internal3782)) - (import "env" "gfa" (func $internal3783)) - (import "env" "hfa" (func $internal3784)) - (import "env" "ifa" (func $internal3785)) - (import "env" "jfa" (func $internal3786)) - (import "env" "kfa" (func $internal3787)) - (import "env" "lfa" (func $internal3788)) - (import "env" "mfa" (func $internal3789)) - (import "env" "nfa" (func $internal3790)) - (import "env" "ofa" (func $internal3791)) - (import "env" "pfa" (func $internal3792)) - (import "env" "qfa" (func $internal3793)) - (import "env" "rfa" (func $internal3794)) - (import "env" "sfa" (func $internal3795)) - (import "env" "tfa" (func $internal3796)) - (import "env" "ufa" (func $internal3797)) - (import "env" "vfa" (func $internal3798)) - (import "env" "wfa" (func $internal3799)) - (import "env" "xfa" (func $internal3800)) - (import "env" "yfa" (func $internal3801)) - (import "env" "zfa" (func $internal3802)) - (import "env" "Afa" (func $internal3803)) - (import "env" "Bfa" (func $internal3804)) - (import "env" "Cfa" (func $internal3805)) - (import "env" "Dfa" (func $internal3806)) - (import "env" "Efa" (func $internal3807)) - (import "env" "Ffa" (func $internal3808)) - (import "env" "Gfa" (func $internal3809)) - (import "env" "Hfa" (func $internal3810)) - (import "env" "Ifa" (func $internal3811)) - (import "env" "Jfa" (func $internal3812)) - (import "env" "Kfa" (func $internal3813)) - (import "env" "Lfa" (func $internal3814)) - (import "env" "Mfa" (func $internal3815)) - (import "env" "Nfa" (func $internal3816)) - (import "env" "Ofa" (func $internal3817)) - (import "env" "Pfa" (func $internal3818)) - (import "env" "Qfa" (func $internal3819)) - (import "env" "Rfa" (func $internal3820)) - (import "env" "Sfa" (func $internal3821)) - (import "env" "Tfa" (func $internal3822)) - (import "env" "Ufa" (func $internal3823)) - (import "env" "Vfa" (func $internal3824)) - (import "env" "Wfa" (func $internal3825)) - (import "env" "Xfa" (func $internal3826)) - (import "env" "Yfa" (func $internal3827)) - (import "env" "Zfa" (func $internal3828)) - (import "env" "_fa" (func $internal3829)) - (import "env" "$fa" (func $internal3830)) - (import "env" "aga" (func $internal3831)) - (import "env" "bga" (func $internal3832)) - (import "env" "cga" (func $internal3833)) - (import "env" "dga" (func $internal3834)) - (import "env" "ega" (func $internal3835)) - (import "env" "fga" (func $internal3836)) - (import "env" "gga" (func $internal3837)) - (import "env" "hga" (func $internal3838)) - (import "env" "iga" (func $internal3839)) - (import "env" "jga" (func $internal3840)) - (import "env" "kga" (func $internal3841)) - (import "env" "lga" (func $internal3842)) - (import "env" "mga" (func $internal3843)) - (import "env" "nga" (func $internal3844)) - (import "env" "oga" (func $internal3845)) - (import "env" "pga" (func $internal3846)) - (import "env" "qga" (func $internal3847)) - (import "env" "rga" (func $internal3848)) - (import "env" "sga" (func $internal3849)) - (import "env" "tga" (func $internal3850)) - (import "env" "uga" (func $internal3851)) - (import "env" "vga" (func $internal3852)) - (import "env" "wga" (func $internal3853)) - (import "env" "xga" (func $internal3854)) - (import "env" "yga" (func $internal3855)) - (import "env" "zga" (func $internal3856)) - (import "env" "Aga" (func $internal3857)) - (import "env" "Bga" (func $internal3858)) - (import "env" "Cga" (func $internal3859)) - (import "env" "Dga" (func $internal3860)) - (import "env" "Ega" (func $internal3861)) - (import "env" "Fga" (func $internal3862)) - (import "env" "Gga" (func $internal3863)) - (import "env" "Hga" (func $internal3864)) - (import "env" "Iga" (func $internal3865)) - (import "env" "Jga" (func $internal3866)) - (import "env" "Kga" (func $internal3867)) - (import "env" "Lga" (func $internal3868)) - (import "env" "Mga" (func $internal3869)) - (import "env" "Nga" (func $internal3870)) - (import "env" "Oga" (func $internal3871)) - (import "env" "Pga" (func $internal3872)) - (import "env" "Qga" (func $internal3873)) - (import "env" "Rga" (func $internal3874)) - (import "env" "Sga" (func $internal3875)) - (import "env" "Tga" (func $internal3876)) - (import "env" "Uga" (func $internal3877)) - (import "env" "Vga" (func $internal3878)) - (import "env" "Wga" (func $internal3879)) - (import "env" "Xga" (func $internal3880)) - (import "env" "Yga" (func $internal3881)) - (import "env" "Zga" (func $internal3882)) - (import "env" "_ga" (func $internal3883)) - (import "env" "$ga" (func $internal3884)) - (import "env" "aha" (func $internal3885)) - (import "env" "bha" (func $internal3886)) - (import "env" "cha" (func $internal3887)) - (import "env" "dha" (func $internal3888)) - (import "env" "eha" (func $internal3889)) - (import "env" "fha" (func $internal3890)) - (import "env" "gha" (func $internal3891)) - (import "env" "hha" (func $internal3892)) - (import "env" "iha" (func $internal3893)) - (import "env" "jha" (func $internal3894)) - (import "env" "kha" (func $internal3895)) - (import "env" "lha" (func $internal3896)) - (import "env" "mha" (func $internal3897)) - (import "env" "nha" (func $internal3898)) - (import "env" "oha" (func $internal3899)) - (import "env" "pha" (func $internal3900)) - (import "env" "qha" (func $internal3901)) - (import "env" "rha" (func $internal3902)) - (import "env" "sha" (func $internal3903)) - (import "env" "tha" (func $internal3904)) - (import "env" "uha" (func $internal3905)) - (import "env" "vha" (func $internal3906)) - (import "env" "wha" (func $internal3907)) - (import "env" "xha" (func $internal3908)) - (import "env" "yha" (func $internal3909)) - (import "env" "zha" (func $internal3910)) - (import "env" "Aha" (func $internal3911)) - (import "env" "Bha" (func $internal3912)) - (import "env" "Cha" (func $internal3913)) - (import "env" "Dha" (func $internal3914)) - (import "env" "Eha" (func $internal3915)) - (import "env" "Fha" (func $internal3916)) - (import "env" "Gha" (func $internal3917)) - (import "env" "Hha" (func $internal3918)) - (import "env" "Iha" (func $internal3919)) - (import "env" "Jha" (func $internal3920)) - (import "env" "Kha" (func $internal3921)) - (import "env" "Lha" (func $internal3922)) - (import "env" "Mha" (func $internal3923)) - (import "env" "Nha" (func $internal3924)) - (import "env" "Oha" (func $internal3925)) - (import "env" "Pha" (func $internal3926)) - (import "env" "Qha" (func $internal3927)) - (import "env" "Rha" (func $internal3928)) - (import "env" "Sha" (func $internal3929)) - (import "env" "Tha" (func $internal3930)) - (import "env" "Uha" (func $internal3931)) - (import "env" "Vha" (func $internal3932)) - (import "env" "Wha" (func $internal3933)) - (import "env" "Xha" (func $internal3934)) - (import "env" "Yha" (func $internal3935)) - (import "env" "Zha" (func $internal3936)) - (import "env" "_ha" (func $internal3937)) - (import "env" "$ha" (func $internal3938)) - (import "env" "aia" (func $internal3939)) - (import "env" "bia" (func $internal3940)) - (import "env" "cia" (func $internal3941)) - (import "env" "dia" (func $internal3942)) - (import "env" "eia" (func $internal3943)) - (import "env" "fia" (func $internal3944)) - (import "env" "gia" (func $internal3945)) - (import "env" "hia" (func $internal3946)) - (import "env" "iia" (func $internal3947)) - (import "env" "jia" (func $internal3948)) - (import "env" "kia" (func $internal3949)) - (import "env" "lia" (func $internal3950)) - (import "env" "mia" (func $internal3951)) - (import "env" "nia" (func $internal3952)) - (import "env" "oia" (func $internal3953)) - (import "env" "pia" (func $internal3954)) - (import "env" "qia" (func $internal3955)) - (import "env" "ria" (func $internal3956)) - (import "env" "sia" (func $internal3957)) - (import "env" "tia" (func $internal3958)) - (import "env" "uia" (func $internal3959)) - (import "env" "via" (func $internal3960)) - (import "env" "wia" (func $internal3961)) - (import "env" "xia" (func $internal3962)) - (import "env" "yia" (func $internal3963)) - (import "env" "zia" (func $internal3964)) - (import "env" "Aia" (func $internal3965)) - (import "env" "Bia" (func $internal3966)) - (import "env" "Cia" (func $internal3967)) - (import "env" "Dia" (func $internal3968)) - (import "env" "Eia" (func $internal3969)) - (import "env" "Fia" (func $internal3970)) - (import "env" "Gia" (func $internal3971)) - (import "env" "Hia" (func $internal3972)) - (import "env" "Iia" (func $internal3973)) - (import "env" "Jia" (func $internal3974)) - (import "env" "Kia" (func $internal3975)) - (import "env" "Lia" (func $internal3976)) - (import "env" "Mia" (func $internal3977)) - (import "env" "Nia" (func $internal3978)) - (import "env" "Oia" (func $internal3979)) - (import "env" "Pia" (func $internal3980)) - (import "env" "Qia" (func $internal3981)) - (import "env" "Ria" (func $internal3982)) - (import "env" "Sia" (func $internal3983)) - (import "env" "Tia" (func $internal3984)) - (import "env" "Uia" (func $internal3985)) - (import "env" "Via" (func $internal3986)) - (import "env" "Wia" (func $internal3987)) - (import "env" "Xia" (func $internal3988)) - (import "env" "Yia" (func $internal3989)) - (import "env" "Zia" (func $internal3990)) - (import "env" "_ia" (func $internal3991)) - (import "env" "$ia" (func $internal3992)) - (import "env" "aja" (func $internal3993)) - (import "env" "bja" (func $internal3994)) - (import "env" "cja" (func $internal3995)) - (import "env" "dja" (func $internal3996)) - (import "env" "eja" (func $internal3997)) - (import "env" "fja" (func $internal3998)) - (import "env" "gja" (func $internal3999)) - (import "env" "hja" (func $internal4000)) - (import "env" "ija" (func $internal4001)) - (import "env" "jja" (func $internal4002)) - (import "env" "kja" (func $internal4003)) - (import "env" "lja" (func $internal4004)) - (import "env" "mja" (func $internal4005)) - (import "env" "nja" (func $internal4006)) - (import "env" "oja" (func $internal4007)) - (import "env" "pja" (func $internal4008)) - (import "env" "qja" (func $internal4009)) - (import "env" "rja" (func $internal4010)) - (import "env" "sja" (func $internal4011)) - (import "env" "tja" (func $internal4012)) - (import "env" "uja" (func $internal4013)) - (import "env" "vja" (func $internal4014)) - (import "env" "wja" (func $internal4015)) - (import "env" "xja" (func $internal4016)) - (import "env" "yja" (func $internal4017)) - (import "env" "zja" (func $internal4018)) - (import "env" "Aja" (func $internal4019)) - (import "env" "Bja" (func $internal4020)) - (import "env" "Cja" (func $internal4021)) - (import "env" "Dja" (func $internal4022)) - (import "env" "Eja" (func $internal4023)) - (import "env" "Fja" (func $internal4024)) - (import "env" "Gja" (func $internal4025)) - (import "env" "Hja" (func $internal4026)) - (import "env" "Ija" (func $internal4027)) - (import "env" "Jja" (func $internal4028)) - (import "env" "Kja" (func $internal4029)) - (import "env" "Lja" (func $internal4030)) - (import "env" "Mja" (func $internal4031)) - (import "env" "Nja" (func $internal4032)) - (import "env" "Oja" (func $internal4033)) - (import "env" "Pja" (func $internal4034)) - (import "env" "Qja" (func $internal4035)) - (import "env" "Rja" (func $internal4036)) - (import "env" "Sja" (func $internal4037)) - (import "env" "Tja" (func $internal4038)) - (import "env" "Uja" (func $internal4039)) - (import "env" "Vja" (func $internal4040)) - (import "env" "Wja" (func $internal4041)) - (import "env" "Xja" (func $internal4042)) - (import "env" "Yja" (func $internal4043)) - (import "env" "Zja" (func $internal4044)) - (import "env" "_ja" (func $internal4045)) - (import "env" "$ja" (func $internal4046)) - (import "env" "aka" (func $internal4047)) - (import "env" "bka" (func $internal4048)) - (import "env" "cka" (func $internal4049)) - (import "env" "dka" (func $internal4050)) - (import "env" "eka" (func $internal4051)) - (import "env" "fka" (func $internal4052)) - (import "env" "gka" (func $internal4053)) - (import "env" "hka" (func $internal4054)) - (import "env" "ika" (func $internal4055)) - (import "env" "jka" (func $internal4056)) - (import "env" "kka" (func $internal4057)) - (import "env" "lka" (func $internal4058)) - (import "env" "mka" (func $internal4059)) - (import "env" "nka" (func $internal4060)) - (import "env" "oka" (func $internal4061)) - (import "env" "pka" (func $internal4062)) - (import "env" "qka" (func $internal4063)) - (import "env" "rka" (func $internal4064)) - (import "env" "ska" (func $internal4065)) - (import "env" "tka" (func $internal4066)) - (import "env" "uka" (func $internal4067)) - (import "env" "vka" (func $internal4068)) - (import "env" "wka" (func $internal4069)) - (import "env" "xka" (func $internal4070)) - (import "env" "yka" (func $internal4071)) - (import "env" "zka" (func $internal4072)) - (import "env" "Aka" (func $internal4073)) - (import "env" "Bka" (func $internal4074)) - (import "env" "Cka" (func $internal4075)) - (import "env" "Dka" (func $internal4076)) - (import "env" "Eka" (func $internal4077)) - (import "env" "Fka" (func $internal4078)) - (import "env" "Gka" (func $internal4079)) - (import "env" "Hka" (func $internal4080)) - (import "env" "Ika" (func $internal4081)) - (import "env" "Jka" (func $internal4082)) - (import "env" "Kka" (func $internal4083)) - (import "env" "Lka" (func $internal4084)) - (import "env" "Mka" (func $internal4085)) - (import "env" "Nka" (func $internal4086)) - (import "env" "Oka" (func $internal4087)) - (import "env" "Pka" (func $internal4088)) - (import "env" "Qka" (func $internal4089)) - (import "env" "Rka" (func $internal4090)) - (import "env" "Ska" (func $internal4091)) - (import "env" "Tka" (func $internal4092)) - (import "env" "Uka" (func $internal4093)) - (import "env" "Vka" (func $internal4094)) - (import "env" "Wka" (func $internal4095)) - (import "env" "Xka" (func $internal4096)) - (import "env" "Yka" (func $internal4097)) - (import "env" "Zka" (func $internal4098)) - (import "env" "_ka" (func $internal4099)) - (import "env" "$ka" (func $internal4100)) - (import "env" "ala" (func $internal4101)) - (import "env" "bla" (func $internal4102)) - (import "env" "cla" (func $internal4103)) - (import "env" "dla" (func $internal4104)) - (import "env" "ela" (func $internal4105)) - (import "env" "fla" (func $internal4106)) - (import "env" "gla" (func $internal4107)) - (import "env" "hla" (func $internal4108)) - (import "env" "ila" (func $internal4109)) - (import "env" "jla" (func $internal4110)) - (import "env" "kla" (func $internal4111)) - (import "env" "lla" (func $internal4112)) - (import "env" "mla" (func $internal4113)) - (import "env" "nla" (func $internal4114)) - (import "env" "ola" (func $internal4115)) - (import "env" "pla" (func $internal4116)) - (import "env" "qla" (func $internal4117)) - (import "env" "rla" (func $internal4118)) - (import "env" "sla" (func $internal4119)) - (import "env" "tla" (func $internal4120)) - (import "env" "ula" (func $internal4121)) - (import "env" "vla" (func $internal4122)) - (import "env" "wla" (func $internal4123)) - (import "env" "xla" (func $internal4124)) - (import "env" "yla" (func $internal4125)) - (import "env" "zla" (func $internal4126)) - (import "env" "Ala" (func $internal4127)) - (import "env" "Bla" (func $internal4128)) - (import "env" "Cla" (func $internal4129)) - (import "env" "Dla" (func $internal4130)) - (import "env" "Ela" (func $internal4131)) - (import "env" "Fla" (func $internal4132)) - (import "env" "Gla" (func $internal4133)) - (import "env" "Hla" (func $internal4134)) - (import "env" "Ila" (func $internal4135)) - (import "env" "Jla" (func $internal4136)) - (import "env" "Kla" (func $internal4137)) - (import "env" "Lla" (func $internal4138)) - (import "env" "Mla" (func $internal4139)) - (import "env" "Nla" (func $internal4140)) - (import "env" "Ola" (func $internal4141)) - (import "env" "Pla" (func $internal4142)) - (import "env" "Qla" (func $internal4143)) - (import "env" "Rla" (func $internal4144)) - (import "env" "Sla" (func $internal4145)) - (import "env" "Tla" (func $internal4146)) - (import "env" "Ula" (func $internal4147)) - (import "env" "Vla" (func $internal4148)) - (import "env" "Wla" (func $internal4149)) - (import "env" "Xla" (func $internal4150)) - (import "env" "Yla" (func $internal4151)) - (import "env" "Zla" (func $internal4152)) - (import "env" "_la" (func $internal4153)) - (import "env" "$la" (func $internal4154)) - (import "env" "ama" (func $internal4155)) - (import "env" "bma" (func $internal4156)) - (import "env" "cma" (func $internal4157)) - (import "env" "dma" (func $internal4158)) - (import "env" "ema" (func $internal4159)) - (import "env" "fma" (func $internal4160)) - (import "env" "gma" (func $internal4161)) - (import "env" "hma" (func $internal4162)) - (import "env" "ima" (func $internal4163)) - (import "env" "jma" (func $internal4164)) - (import "env" "kma" (func $internal4165)) - (import "env" "lma" (func $internal4166)) - (import "env" "mma" (func $internal4167)) - (import "env" "nma" (func $internal4168)) - (import "env" "oma" (func $internal4169)) - (import "env" "pma" (func $internal4170)) - (import "env" "qma" (func $internal4171)) - (import "env" "rma" (func $internal4172)) - (import "env" "sma" (func $internal4173)) - (import "env" "tma" (func $internal4174)) - (import "env" "uma" (func $internal4175)) - (import "env" "vma" (func $internal4176)) - (import "env" "wma" (func $internal4177)) - (import "env" "xma" (func $internal4178)) - (import "env" "yma" (func $internal4179)) - (import "env" "zma" (func $internal4180)) - (import "env" "Ama" (func $internal4181)) - (import "env" "Bma" (func $internal4182)) - (import "env" "Cma" (func $internal4183)) - (import "env" "Dma" (func $internal4184)) - (import "env" "Ema" (func $internal4185)) - (import "env" "Fma" (func $internal4186)) - (import "env" "Gma" (func $internal4187)) - (import "env" "Hma" (func $internal4188)) - (import "env" "Ima" (func $internal4189)) - (import "env" "Jma" (func $internal4190)) - (import "env" "Kma" (func $internal4191)) - (import "env" "Lma" (func $internal4192)) - (import "env" "Mma" (func $internal4193)) - (import "env" "Nma" (func $internal4194)) - (import "env" "Oma" (func $internal4195)) - (import "env" "Pma" (func $internal4196)) - (import "env" "Qma" (func $internal4197)) - (import "env" "Rma" (func $internal4198)) - (import "env" "Sma" (func $internal4199)) - (import "env" "Tma" (func $internal4200)) - (import "env" "Uma" (func $internal4201)) - (import "env" "Vma" (func $internal4202)) - (import "env" "Wma" (func $internal4203)) - (import "env" "Xma" (func $internal4204)) - (import "env" "Yma" (func $internal4205)) - (import "env" "Zma" (func $internal4206)) - (import "env" "_ma" (func $internal4207)) - (import "env" "$ma" (func $internal4208)) - (import "env" "ana" (func $internal4209)) - (import "env" "bna" (func $internal4210)) - (import "env" "cna" (func $internal4211)) - (import "env" "dna" (func $internal4212)) - (import "env" "ena" (func $internal4213)) - (import "env" "fna" (func $internal4214)) - (import "env" "gna" (func $internal4215)) - (import "env" "hna" (func $internal4216)) - (import "env" "ina" (func $internal4217)) - (import "env" "jna" (func $internal4218)) - (import "env" "kna" (func $internal4219)) - (import "env" "lna" (func $internal4220)) - (import "env" "mna" (func $internal4221)) - (import "env" "nna" (func $internal4222)) - (import "env" "ona" (func $internal4223)) - (import "env" "pna" (func $internal4224)) - (import "env" "qna" (func $internal4225)) - (import "env" "rna" (func $internal4226)) - (import "env" "sna" (func $internal4227)) - (import "env" "tna" (func $internal4228)) - (import "env" "una" (func $internal4229)) - (import "env" "vna" (func $internal4230)) - (import "env" "wna" (func $internal4231)) - (import "env" "xna" (func $internal4232)) - (import "env" "yna" (func $internal4233)) - (import "env" "zna" (func $internal4234)) - (import "env" "Ana" (func $internal4235)) - (import "env" "Bna" (func $internal4236)) - (import "env" "Cna" (func $internal4237)) - (import "env" "Dna" (func $internal4238)) - (import "env" "Ena" (func $internal4239)) - (import "env" "Fna" (func $internal4240)) - (import "env" "Gna" (func $internal4241)) - (import "env" "Hna" (func $internal4242)) - (import "env" "Ina" (func $internal4243)) - (import "env" "Jna" (func $internal4244)) - (import "env" "Kna" (func $internal4245)) - (import "env" "Lna" (func $internal4246)) - (import "env" "Mna" (func $internal4247)) - (import "env" "Nna" (func $internal4248)) - (import "env" "Ona" (func $internal4249)) - (import "env" "Pna" (func $internal4250)) - (import "env" "Qna" (func $internal4251)) - (import "env" "Rna" (func $internal4252)) - (import "env" "Sna" (func $internal4253)) - (import "env" "Tna" (func $internal4254)) - (import "env" "Una" (func $internal4255)) - (import "env" "Vna" (func $internal4256)) - (import "env" "Wna" (func $internal4257)) - (import "env" "Xna" (func $internal4258)) - (import "env" "Yna" (func $internal4259)) - (import "env" "Zna" (func $internal4260)) - (import "env" "_na" (func $internal4261)) - (import "env" "$na" (func $internal4262)) - (import "env" "aoa" (func $internal4263)) - (import "env" "boa" (func $internal4264)) - (import "env" "coa" (func $internal4265)) - (import "env" "doa" (func $internal4266)) - (import "env" "eoa" (func $internal4267)) - (import "env" "foa" (func $internal4268)) - (import "env" "goa" (func $internal4269)) - (import "env" "hoa" (func $internal4270)) - (import "env" "ioa" (func $internal4271)) - (import "env" "joa" (func $internal4272)) - (import "env" "koa" (func $internal4273)) - (import "env" "loa" (func $internal4274)) - (import "env" "moa" (func $internal4275)) - (import "env" "noa" (func $internal4276)) - (import "env" "ooa" (func $internal4277)) - (import "env" "poa" (func $internal4278)) - (import "env" "qoa" (func $internal4279)) - (import "env" "roa" (func $internal4280)) - (import "env" "soa" (func $internal4281)) - (import "env" "toa" (func $internal4282)) - (import "env" "uoa" (func $internal4283)) - (import "env" "voa" (func $internal4284)) - (import "env" "woa" (func $internal4285)) - (import "env" "xoa" (func $internal4286)) - (import "env" "yoa" (func $internal4287)) - (import "env" "zoa" (func $internal4288)) - (import "env" "Aoa" (func $internal4289)) - (import "env" "Boa" (func $internal4290)) - (import "env" "Coa" (func $internal4291)) - (import "env" "Doa" (func $internal4292)) - (import "env" "Eoa" (func $internal4293)) - (import "env" "Foa" (func $internal4294)) - (import "env" "Goa" (func $internal4295)) - (import "env" "Hoa" (func $internal4296)) - (import "env" "Ioa" (func $internal4297)) - (import "env" "Joa" (func $internal4298)) - (import "env" "Koa" (func $internal4299)) - (import "env" "Loa" (func $internal4300)) - (import "env" "Moa" (func $internal4301)) - (import "env" "Noa" (func $internal4302)) - (import "env" "Ooa" (func $internal4303)) - (import "env" "Poa" (func $internal4304)) - (import "env" "Qoa" (func $internal4305)) - (import "env" "Roa" (func $internal4306)) - (import "env" "Soa" (func $internal4307)) - (import "env" "Toa" (func $internal4308)) - (import "env" "Uoa" (func $internal4309)) - (import "env" "Voa" (func $internal4310)) - (import "env" "Woa" (func $internal4311)) - (import "env" "Xoa" (func $internal4312)) - (import "env" "Yoa" (func $internal4313)) - (import "env" "Zoa" (func $internal4314)) - (import "env" "_oa" (func $internal4315)) - (import "env" "$oa" (func $internal4316)) - (import "env" "apa" (func $internal4317)) - (import "env" "bpa" (func $internal4318)) - (import "env" "cpa" (func $internal4319)) - (import "env" "dpa" (func $internal4320)) - (import "env" "epa" (func $internal4321)) - (import "env" "fpa" (func $internal4322)) - (import "env" "gpa" (func $internal4323)) - (import "env" "hpa" (func $internal4324)) - (import "env" "ipa" (func $internal4325)) - (import "env" "jpa" (func $internal4326)) - (import "env" "kpa" (func $internal4327)) - (import "env" "lpa" (func $internal4328)) - (import "env" "mpa" (func $internal4329)) - (import "env" "npa" (func $internal4330)) - (import "env" "opa" (func $internal4331)) - (import "env" "ppa" (func $internal4332)) - (import "env" "qpa" (func $internal4333)) - (import "env" "rpa" (func $internal4334)) - (import "env" "spa" (func $internal4335)) - (import "env" "tpa" (func $internal4336)) - (import "env" "upa" (func $internal4337)) - (import "env" "vpa" (func $internal4338)) - (import "env" "wpa" (func $internal4339)) - (import "env" "xpa" (func $internal4340)) - (import "env" "ypa" (func $internal4341)) - (import "env" "zpa" (func $internal4342)) - (import "env" "Apa" (func $internal4343)) - (import "env" "Bpa" (func $internal4344)) - (import "env" "Cpa" (func $internal4345)) - (import "env" "Dpa" (func $internal4346)) - (import "env" "Epa" (func $internal4347)) - (import "env" "Fpa" (func $internal4348)) - (import "env" "Gpa" (func $internal4349)) - (import "env" "Hpa" (func $internal4350)) - (import "env" "Ipa" (func $internal4351)) - (import "env" "Jpa" (func $internal4352)) - (import "env" "Kpa" (func $internal4353)) - (import "env" "Lpa" (func $internal4354)) - (import "env" "Mpa" (func $internal4355)) - (import "env" "Npa" (func $internal4356)) - (import "env" "Opa" (func $internal4357)) - (import "env" "Ppa" (func $internal4358)) - (import "env" "Qpa" (func $internal4359)) - (import "env" "Rpa" (func $internal4360)) - (import "env" "Spa" (func $internal4361)) - (import "env" "Tpa" (func $internal4362)) - (import "env" "Upa" (func $internal4363)) - (import "env" "Vpa" (func $internal4364)) - (import "env" "Wpa" (func $internal4365)) - (import "env" "Xpa" (func $internal4366)) - (import "env" "Ypa" (func $internal4367)) - (import "env" "Zpa" (func $internal4368)) - (import "env" "_pa" (func $internal4369)) - (import "env" "$pa" (func $internal4370)) - (import "env" "aqa" (func $internal4371)) - (import "env" "bqa" (func $internal4372)) - (import "env" "cqa" (func $internal4373)) - (import "env" "dqa" (func $internal4374)) - (import "env" "eqa" (func $internal4375)) - (import "env" "fqa" (func $internal4376)) - (import "env" "gqa" (func $internal4377)) - (import "env" "hqa" (func $internal4378)) - (import "env" "iqa" (func $internal4379)) - (import "env" "jqa" (func $internal4380)) - (import "env" "kqa" (func $internal4381)) - (import "env" "lqa" (func $internal4382)) - (import "env" "mqa" (func $internal4383)) - (import "env" "nqa" (func $internal4384)) - (import "env" "oqa" (func $internal4385)) - (import "env" "pqa" (func $internal4386)) - (import "env" "qqa" (func $internal4387)) - (import "env" "rqa" (func $internal4388)) - (import "env" "sqa" (func $internal4389)) - (import "env" "tqa" (func $internal4390)) - (import "env" "uqa" (func $internal4391)) - (import "env" "vqa" (func $internal4392)) - (import "env" "wqa" (func $internal4393)) - (import "env" "xqa" (func $internal4394)) - (import "env" "yqa" (func $internal4395)) - (import "env" "zqa" (func $internal4396)) - (import "env" "Aqa" (func $internal4397)) - (import "env" "Bqa" (func $internal4398)) - (import "env" "Cqa" (func $internal4399)) - (import "env" "Dqa" (func $internal4400)) - (import "env" "Eqa" (func $internal4401)) - (import "env" "Fqa" (func $internal4402)) - (import "env" "Gqa" (func $internal4403)) - (import "env" "Hqa" (func $internal4404)) - (import "env" "Iqa" (func $internal4405)) - (import "env" "Jqa" (func $internal4406)) - (import "env" "Kqa" (func $internal4407)) - (import "env" "Lqa" (func $internal4408)) - (import "env" "Mqa" (func $internal4409)) - (import "env" "Nqa" (func $internal4410)) - (import "env" "Oqa" (func $internal4411)) - (import "env" "Pqa" (func $internal4412)) - (import "env" "Qqa" (func $internal4413)) - (import "env" "Rqa" (func $internal4414)) - (import "env" "Sqa" (func $internal4415)) - (import "env" "Tqa" (func $internal4416)) - (import "env" "Uqa" (func $internal4417)) - (import "env" "Vqa" (func $internal4418)) - (import "env" "Wqa" (func $internal4419)) - (import "env" "Xqa" (func $internal4420)) - (import "env" "Yqa" (func $internal4421)) - (import "env" "Zqa" (func $internal4422)) - (import "env" "_qa" (func $internal4423)) - (import "env" "$qa" (func $internal4424)) - (import "env" "ara" (func $internal4425)) - (import "env" "bra" (func $internal4426)) - (import "env" "cra" (func $internal4427)) - (import "env" "dra" (func $internal4428)) - (import "env" "era" (func $internal4429)) - (import "env" "fra" (func $internal4430)) - (import "env" "gra" (func $internal4431)) - (import "env" "hra" (func $internal4432)) - (import "env" "ira" (func $internal4433)) - (import "env" "jra" (func $internal4434)) - (import "env" "kra" (func $internal4435)) - (import "env" "lra" (func $internal4436)) - (import "env" "mra" (func $internal4437)) - (import "env" "nra" (func $internal4438)) - (import "env" "ora" (func $internal4439)) - (import "env" "pra" (func $internal4440)) - (import "env" "qra" (func $internal4441)) - (import "env" "rra" (func $internal4442)) - (import "env" "sra" (func $internal4443)) - (import "env" "tra" (func $internal4444)) - (import "env" "ura" (func $internal4445)) - (import "env" "vra" (func $internal4446)) - (import "env" "wra" (func $internal4447)) - (import "env" "xra" (func $internal4448)) - (import "env" "yra" (func $internal4449)) - (import "env" "zra" (func $internal4450)) - (import "env" "Ara" (func $internal4451)) - (import "env" "Bra" (func $internal4452)) - (import "env" "Cra" (func $internal4453)) - (import "env" "Dra" (func $internal4454)) - (import "env" "Era" (func $internal4455)) - (import "env" "Fra" (func $internal4456)) - (import "env" "Gra" (func $internal4457)) - (import "env" "Hra" (func $internal4458)) - (import "env" "Ira" (func $internal4459)) - (import "env" "Jra" (func $internal4460)) - (import "env" "Kra" (func $internal4461)) - (import "env" "Lra" (func $internal4462)) - (import "env" "Mra" (func $internal4463)) - (import "env" "Nra" (func $internal4464)) - (import "env" "Ora" (func $internal4465)) - (import "env" "Pra" (func $internal4466)) - (import "env" "Qra" (func $internal4467)) - (import "env" "Rra" (func $internal4468)) - (import "env" "Sra" (func $internal4469)) - (import "env" "Tra" (func $internal4470)) - (import "env" "Ura" (func $internal4471)) - (import "env" "Vra" (func $internal4472)) - (import "env" "Wra" (func $internal4473)) - (import "env" "Xra" (func $internal4474)) - (import "env" "Yra" (func $internal4475)) - (import "env" "Zra" (func $internal4476)) - (import "env" "_ra" (func $internal4477)) - (import "env" "$ra" (func $internal4478)) - (import "env" "asa" (func $internal4479)) - (import "env" "bsa" (func $internal4480)) - (import "env" "csa" (func $internal4481)) - (import "env" "dsa" (func $internal4482)) - (import "env" "esa" (func $internal4483)) - (import "env" "fsa" (func $internal4484)) - (import "env" "gsa" (func $internal4485)) - (import "env" "hsa" (func $internal4486)) - (import "env" "isa" (func $internal4487)) - (import "env" "jsa" (func $internal4488)) - (import "env" "ksa" (func $internal4489)) - (import "env" "lsa" (func $internal4490)) - (import "env" "msa" (func $internal4491)) - (import "env" "nsa" (func $internal4492)) - (import "env" "osa" (func $internal4493)) - (import "env" "psa" (func $internal4494)) - (import "env" "qsa" (func $internal4495)) - (import "env" "rsa" (func $internal4496)) - (import "env" "ssa" (func $internal4497)) - (import "env" "tsa" (func $internal4498)) - (import "env" "usa" (func $internal4499)) - (import "env" "vsa" (func $internal4500)) - (import "env" "wsa" (func $internal4501)) - (import "env" "xsa" (func $internal4502)) - (import "env" "ysa" (func $internal4503)) - (import "env" "zsa" (func $internal4504)) - (import "env" "Asa" (func $internal4505)) - (import "env" "Bsa" (func $internal4506)) - (import "env" "Csa" (func $internal4507)) - (import "env" "Dsa" (func $internal4508)) - (import "env" "Esa" (func $internal4509)) - (import "env" "Fsa" (func $internal4510)) - (import "env" "Gsa" (func $internal4511)) - (import "env" "Hsa" (func $internal4512)) - (import "env" "Isa" (func $internal4513)) - (import "env" "Jsa" (func $internal4514)) - (import "env" "Ksa" (func $internal4515)) - (import "env" "Lsa" (func $internal4516)) - (import "env" "Msa" (func $internal4517)) - (import "env" "Nsa" (func $internal4518)) - (import "env" "Osa" (func $internal4519)) - (import "env" "Psa" (func $internal4520)) - (import "env" "Qsa" (func $internal4521)) - (import "env" "Rsa" (func $internal4522)) - (import "env" "Ssa" (func $internal4523)) - (import "env" "Tsa" (func $internal4524)) - (import "env" "Usa" (func $internal4525)) - (import "env" "Vsa" (func $internal4526)) - (import "env" "Wsa" (func $internal4527)) - (import "env" "Xsa" (func $internal4528)) - (import "env" "Ysa" (func $internal4529)) - (import "env" "Zsa" (func $internal4530)) - (import "env" "_sa" (func $internal4531)) - (import "env" "$sa" (func $internal4532)) - (import "env" "ata" (func $internal4533)) - (import "env" "bta" (func $internal4534)) - (import "env" "cta" (func $internal4535)) - (import "env" "dta" (func $internal4536)) - (import "env" "eta" (func $internal4537)) - (import "env" "fta" (func $internal4538)) - (import "env" "gta" (func $internal4539)) - (import "env" "hta" (func $internal4540)) - (import "env" "ita" (func $internal4541)) - (import "env" "jta" (func $internal4542)) - (import "env" "kta" (func $internal4543)) - (import "env" "lta" (func $internal4544)) - (import "env" "mta" (func $internal4545)) - (import "env" "nta" (func $internal4546)) - (import "env" "ota" (func $internal4547)) - (import "env" "pta" (func $internal4548)) - (import "env" "qta" (func $internal4549)) - (import "env" "rta" (func $internal4550)) - (import "env" "sta" (func $internal4551)) - (import "env" "tta" (func $internal4552)) - (import "env" "uta" (func $internal4553)) - (import "env" "vta" (func $internal4554)) - (import "env" "wta" (func $internal4555)) - (import "env" "xta" (func $internal4556)) - (import "env" "yta" (func $internal4557)) - (import "env" "zta" (func $internal4558)) - (import "env" "Ata" (func $internal4559)) - (import "env" "Bta" (func $internal4560)) - (import "env" "Cta" (func $internal4561)) - (import "env" "Dta" (func $internal4562)) - (import "env" "Eta" (func $internal4563)) - (import "env" "Fta" (func $internal4564)) - (import "env" "Gta" (func $internal4565)) - (import "env" "Hta" (func $internal4566)) - (import "env" "Ita" (func $internal4567)) - (import "env" "Jta" (func $internal4568)) - (import "env" "Kta" (func $internal4569)) - (import "env" "Lta" (func $internal4570)) - (import "env" "Mta" (func $internal4571)) - (import "env" "Nta" (func $internal4572)) - (import "env" "Ota" (func $internal4573)) - (import "env" "Pta" (func $internal4574)) - (import "env" "Qta" (func $internal4575)) - (import "env" "Rta" (func $internal4576)) - (import "env" "Sta" (func $internal4577)) - (import "env" "Tta" (func $internal4578)) - (import "env" "Uta" (func $internal4579)) - (import "env" "Vta" (func $internal4580)) - (import "env" "Wta" (func $internal4581)) - (import "env" "Xta" (func $internal4582)) - (import "env" "Yta" (func $internal4583)) - (import "env" "Zta" (func $internal4584)) - (import "env" "_ta" (func $internal4585)) - (import "env" "$ta" (func $internal4586)) - (import "env" "aua" (func $internal4587)) - (import "env" "bua" (func $internal4588)) - (import "env" "cua" (func $internal4589)) - (import "env" "dua" (func $internal4590)) - (import "env" "eua" (func $internal4591)) - (import "env" "fua" (func $internal4592)) - (import "env" "gua" (func $internal4593)) - (import "env" "hua" (func $internal4594)) - (import "env" "iua" (func $internal4595)) - (import "env" "jua" (func $internal4596)) - (import "env" "kua" (func $internal4597)) - (import "env" "lua" (func $internal4598)) - (import "env" "mua" (func $internal4599)) - (import "env" "nua" (func $internal4600)) - (import "env" "oua" (func $internal4601)) - (import "env" "pua" (func $internal4602)) - (import "env" "qua" (func $internal4603)) - (import "env" "rua" (func $internal4604)) - (import "env" "sua" (func $internal4605)) - (import "env" "tua" (func $internal4606)) - (import "env" "uua" (func $internal4607)) - (import "env" "vua" (func $internal4608)) - (import "env" "wua" (func $internal4609)) - (import "env" "xua" (func $internal4610)) - (import "env" "yua" (func $internal4611)) - (import "env" "zua" (func $internal4612)) - (import "env" "Aua" (func $internal4613)) - (import "env" "Bua" (func $internal4614)) - (import "env" "Cua" (func $internal4615)) - (import "env" "Dua" (func $internal4616)) - (import "env" "Eua" (func $internal4617)) - (import "env" "Fua" (func $internal4618)) - (import "env" "Gua" (func $internal4619)) - (import "env" "Hua" (func $internal4620)) - (import "env" "Iua" (func $internal4621)) - (import "env" "Jua" (func $internal4622)) - (import "env" "Kua" (func $internal4623)) - (import "env" "Lua" (func $internal4624)) - (import "env" "Mua" (func $internal4625)) - (import "env" "Nua" (func $internal4626)) - (import "env" "Oua" (func $internal4627)) - (import "env" "Pua" (func $internal4628)) - (import "env" "Qua" (func $internal4629)) - (import "env" "Rua" (func $internal4630)) - (import "env" "Sua" (func $internal4631)) - (import "env" "Tua" (func $internal4632)) - (import "env" "Uua" (func $internal4633)) - (import "env" "Vua" (func $internal4634)) - (import "env" "Wua" (func $internal4635)) - (import "env" "Xua" (func $internal4636)) - (import "env" "Yua" (func $internal4637)) - (import "env" "Zua" (func $internal4638)) - (import "env" "_ua" (func $internal4639)) - (import "env" "$ua" (func $internal4640)) - (import "env" "ava" (func $internal4641)) - (import "env" "bva" (func $internal4642)) - (import "env" "cva" (func $internal4643)) - (import "env" "dva" (func $internal4644)) - (import "env" "eva" (func $internal4645)) - (import "env" "fva" (func $internal4646)) - (import "env" "gva" (func $internal4647)) - (import "env" "hva" (func $internal4648)) - (import "env" "iva" (func $internal4649)) - (import "env" "jva" (func $internal4650)) - (import "env" "kva" (func $internal4651)) - (import "env" "lva" (func $internal4652)) - (import "env" "mva" (func $internal4653)) - (import "env" "nva" (func $internal4654)) - (import "env" "ova" (func $internal4655)) - (import "env" "pva" (func $internal4656)) - (import "env" "qva" (func $internal4657)) - (import "env" "rva" (func $internal4658)) - (import "env" "sva" (func $internal4659)) - (import "env" "tva" (func $internal4660)) - (import "env" "uva" (func $internal4661)) - (import "env" "vva" (func $internal4662)) - (import "env" "wva" (func $internal4663)) - (import "env" "xva" (func $internal4664)) - (import "env" "yva" (func $internal4665)) - (import "env" "zva" (func $internal4666)) - (import "env" "Ava" (func $internal4667)) - (import "env" "Bva" (func $internal4668)) - (import "env" "Cva" (func $internal4669)) - (import "env" "Dva" (func $internal4670)) - (import "env" "Eva" (func $internal4671)) - (import "env" "Fva" (func $internal4672)) - (import "env" "Gva" (func $internal4673)) - (import "env" "Hva" (func $internal4674)) - (import "env" "Iva" (func $internal4675)) - (import "env" "Jva" (func $internal4676)) - (import "env" "Kva" (func $internal4677)) - (import "env" "Lva" (func $internal4678)) - (import "env" "Mva" (func $internal4679)) - (import "env" "Nva" (func $internal4680)) - (import "env" "Ova" (func $internal4681)) - (import "env" "Pva" (func $internal4682)) - (import "env" "Qva" (func $internal4683)) - (import "env" "Rva" (func $internal4684)) - (import "env" "Sva" (func $internal4685)) - (import "env" "Tva" (func $internal4686)) - (import "env" "Uva" (func $internal4687)) - (import "env" "Vva" (func $internal4688)) - (import "env" "Wva" (func $internal4689)) - (import "env" "Xva" (func $internal4690)) - (import "env" "Yva" (func $internal4691)) - (import "env" "Zva" (func $internal4692)) - (import "env" "_va" (func $internal4693)) - (import "env" "$va" (func $internal4694)) - (import "env" "awa" (func $internal4695)) - (import "env" "bwa" (func $internal4696)) - (import "env" "cwa" (func $internal4697)) - (import "env" "dwa" (func $internal4698)) - (import "env" "ewa" (func $internal4699)) - (import "env" "fwa" (func $internal4700)) - (import "env" "gwa" (func $internal4701)) - (import "env" "hwa" (func $internal4702)) - (import "env" "iwa" (func $internal4703)) - (import "env" "jwa" (func $internal4704)) - (import "env" "kwa" (func $internal4705)) - (import "env" "lwa" (func $internal4706)) - (import "env" "mwa" (func $internal4707)) - (import "env" "nwa" (func $internal4708)) - (import "env" "owa" (func $internal4709)) - (import "env" "pwa" (func $internal4710)) - (import "env" "qwa" (func $internal4711)) - (import "env" "rwa" (func $internal4712)) - (import "env" "swa" (func $internal4713)) - (import "env" "twa" (func $internal4714)) - (import "env" "uwa" (func $internal4715)) - (import "env" "vwa" (func $internal4716)) - (import "env" "wwa" (func $internal4717)) - (import "env" "xwa" (func $internal4718)) - (import "env" "ywa" (func $internal4719)) - (import "env" "zwa" (func $internal4720)) - (import "env" "Awa" (func $internal4721)) - (import "env" "Bwa" (func $internal4722)) - (import "env" "Cwa" (func $internal4723)) - (import "env" "Dwa" (func $internal4724)) - (import "env" "Ewa" (func $internal4725)) - (import "env" "Fwa" (func $internal4726)) - (import "env" "Gwa" (func $internal4727)) - (import "env" "Hwa" (func $internal4728)) - (import "env" "Iwa" (func $internal4729)) - (import "env" "Jwa" (func $internal4730)) - (import "env" "Kwa" (func $internal4731)) - (import "env" "Lwa" (func $internal4732)) - (import "env" "Mwa" (func $internal4733)) - (import "env" "Nwa" (func $internal4734)) - (import "env" "Owa" (func $internal4735)) - (import "env" "Pwa" (func $internal4736)) - (import "env" "Qwa" (func $internal4737)) - (import "env" "Rwa" (func $internal4738)) - (import "env" "Swa" (func $internal4739)) - (import "env" "Twa" (func $internal4740)) - (import "env" "Uwa" (func $internal4741)) - (import "env" "Vwa" (func $internal4742)) - (import "env" "Wwa" (func $internal4743)) - (import "env" "Xwa" (func $internal4744)) - (import "env" "Ywa" (func $internal4745)) - (import "env" "Zwa" (func $internal4746)) - (import "env" "_wa" (func $internal4747)) - (import "env" "$wa" (func $internal4748)) - (import "env" "axa" (func $internal4749)) - (import "env" "bxa" (func $internal4750)) - (import "env" "cxa" (func $internal4751)) - (import "env" "dxa" (func $internal4752)) - (import "env" "exa" (func $internal4753)) - (import "env" "fxa" (func $internal4754)) - (import "env" "gxa" (func $internal4755)) - (import "env" "hxa" (func $internal4756)) - (import "env" "ixa" (func $internal4757)) - (import "env" "jxa" (func $internal4758)) - (import "env" "kxa" (func $internal4759)) - (import "env" "lxa" (func $internal4760)) - (import "env" "mxa" (func $internal4761)) - (import "env" "nxa" (func $internal4762)) - (import "env" "oxa" (func $internal4763)) - (import "env" "pxa" (func $internal4764)) - (import "env" "qxa" (func $internal4765)) - (import "env" "rxa" (func $internal4766)) - (import "env" "sxa" (func $internal4767)) - (import "env" "txa" (func $internal4768)) - (import "env" "uxa" (func $internal4769)) - (import "env" "vxa" (func $internal4770)) - (import "env" "wxa" (func $internal4771)) - (import "env" "xxa" (func $internal4772)) - (import "env" "yxa" (func $internal4773)) - (import "env" "zxa" (func $internal4774)) - (import "env" "Axa" (func $internal4775)) - (import "env" "Bxa" (func $internal4776)) - (import "env" "Cxa" (func $internal4777)) - (import "env" "Dxa" (func $internal4778)) - (import "env" "Exa" (func $internal4779)) - (import "env" "Fxa" (func $internal4780)) - (import "env" "Gxa" (func $internal4781)) - (import "env" "Hxa" (func $internal4782)) - (import "env" "Ixa" (func $internal4783)) - (import "env" "Jxa" (func $internal4784)) - (import "env" "Kxa" (func $internal4785)) - (import "env" "Lxa" (func $internal4786)) - (import "env" "Mxa" (func $internal4787)) - (import "env" "Nxa" (func $internal4788)) - (import "env" "Oxa" (func $internal4789)) - (import "env" "Pxa" (func $internal4790)) - (import "env" "Qxa" (func $internal4791)) - (import "env" "Rxa" (func $internal4792)) - (import "env" "Sxa" (func $internal4793)) - (import "env" "Txa" (func $internal4794)) - (import "env" "Uxa" (func $internal4795)) - (import "env" "Vxa" (func $internal4796)) - (import "env" "Wxa" (func $internal4797)) - (import "env" "Xxa" (func $internal4798)) - (import "env" "Yxa" (func $internal4799)) - (import "env" "Zxa" (func $internal4800)) - (import "env" "_xa" (func $internal4801)) - (import "env" "$xa" (func $internal4802)) - (import "env" "aya" (func $internal4803)) - (import "env" "bya" (func $internal4804)) - (import "env" "cya" (func $internal4805)) - (import "env" "dya" (func $internal4806)) - (import "env" "eya" (func $internal4807)) - (import "env" "fya" (func $internal4808)) - (import "env" "gya" (func $internal4809)) - (import "env" "hya" (func $internal4810)) - (import "env" "iya" (func $internal4811)) - (import "env" "jya" (func $internal4812)) - (import "env" "kya" (func $internal4813)) - (import "env" "lya" (func $internal4814)) - (import "env" "mya" (func $internal4815)) - (import "env" "nya" (func $internal4816)) - (import "env" "oya" (func $internal4817)) - (import "env" "pya" (func $internal4818)) - (import "env" "qya" (func $internal4819)) - (import "env" "rya" (func $internal4820)) - (import "env" "sya" (func $internal4821)) - (import "env" "tya" (func $internal4822)) - (import "env" "uya" (func $internal4823)) - (import "env" "vya" (func $internal4824)) - (import "env" "wya" (func $internal4825)) - (import "env" "xya" (func $internal4826)) - (import "env" "yya" (func $internal4827)) - (import "env" "zya" (func $internal4828)) - (import "env" "Aya" (func $internal4829)) - (import "env" "Bya" (func $internal4830)) - (import "env" "Cya" (func $internal4831)) - (import "env" "Dya" (func $internal4832)) - (import "env" "Eya" (func $internal4833)) - (import "env" "Fya" (func $internal4834)) - (import "env" "Gya" (func $internal4835)) - (import "env" "Hya" (func $internal4836)) - (import "env" "Iya" (func $internal4837)) - (import "env" "Jya" (func $internal4838)) - (import "env" "Kya" (func $internal4839)) - (import "env" "Lya" (func $internal4840)) - (import "env" "Mya" (func $internal4841)) - (import "env" "Nya" (func $internal4842)) - (import "env" "Oya" (func $internal4843)) - (import "env" "Pya" (func $internal4844)) - (import "env" "Qya" (func $internal4845)) - (import "env" "Rya" (func $internal4846)) - (import "env" "Sya" (func $internal4847)) - (import "env" "Tya" (func $internal4848)) - (import "env" "Uya" (func $internal4849)) - (import "env" "Vya" (func $internal4850)) - (import "env" "Wya" (func $internal4851)) - (import "env" "Xya" (func $internal4852)) - (import "env" "Yya" (func $internal4853)) - (import "env" "Zya" (func $internal4854)) - (import "env" "_ya" (func $internal4855)) - (import "env" "$ya" (func $internal4856)) - (import "env" "aza" (func $internal4857)) - (import "env" "bza" (func $internal4858)) - (import "env" "cza" (func $internal4859)) - (import "env" "dza" (func $internal4860)) - (import "env" "eza" (func $internal4861)) - (import "env" "fza" (func $internal4862)) - (import "env" "gza" (func $internal4863)) - (import "env" "hza" (func $internal4864)) - (import "env" "iza" (func $internal4865)) - (import "env" "jza" (func $internal4866)) - (import "env" "kza" (func $internal4867)) - (import "env" "lza" (func $internal4868)) - (import "env" "mza" (func $internal4869)) - (import "env" "nza" (func $internal4870)) - (import "env" "oza" (func $internal4871)) - (import "env" "pza" (func $internal4872)) - (import "env" "qza" (func $internal4873)) - (import "env" "rza" (func $internal4874)) - (import "env" "sza" (func $internal4875)) - (import "env" "tza" (func $internal4876)) - (import "env" "uza" (func $internal4877)) - (import "env" "vza" (func $internal4878)) - (import "env" "wza" (func $internal4879)) - (import "env" "xza" (func $internal4880)) - (import "env" "yza" (func $internal4881)) - (import "env" "zza" (func $internal4882)) - (import "env" "Aza" (func $internal4883)) - (import "env" "Bza" (func $internal4884)) - (import "env" "Cza" (func $internal4885)) - (import "env" "Dza" (func $internal4886)) - (import "env" "Eza" (func $internal4887)) - (import "env" "Fza" (func $internal4888)) - (import "env" "Gza" (func $internal4889)) - (import "env" "Hza" (func $internal4890)) - (import "env" "Iza" (func $internal4891)) - (import "env" "Jza" (func $internal4892)) - (import "env" "Kza" (func $internal4893)) - (import "env" "Lza" (func $internal4894)) - (import "env" "Mza" (func $internal4895)) - (import "env" "Nza" (func $internal4896)) - (import "env" "Oza" (func $internal4897)) - (import "env" "Pza" (func $internal4898)) - (import "env" "Qza" (func $internal4899)) - (import "env" "Rza" (func $internal4900)) - (import "env" "Sza" (func $internal4901)) - (import "env" "Tza" (func $internal4902)) - (import "env" "Uza" (func $internal4903)) - (import "env" "Vza" (func $internal4904)) - (import "env" "Wza" (func $internal4905)) - (import "env" "Xza" (func $internal4906)) - (import "env" "Yza" (func $internal4907)) - (import "env" "Zza" (func $internal4908)) - (import "env" "_za" (func $internal4909)) - (import "env" "$za" (func $internal4910)) - (import "env" "aAa" (func $internal4911)) - (import "env" "bAa" (func $internal4912)) - (import "env" "cAa" (func $internal4913)) - (import "env" "dAa" (func $internal4914)) - (import "env" "eAa" (func $internal4915)) - (import "env" "fAa" (func $internal4916)) - (import "env" "gAa" (func $internal4917)) - (import "env" "hAa" (func $internal4918)) - (import "env" "iAa" (func $internal4919)) - (import "env" "jAa" (func $internal4920)) - (import "env" "kAa" (func $internal4921)) - (import "env" "lAa" (func $internal4922)) - (import "env" "mAa" (func $internal4923)) - (import "env" "nAa" (func $internal4924)) - (import "env" "oAa" (func $internal4925)) - (import "env" "pAa" (func $internal4926)) - (import "env" "qAa" (func $internal4927)) - (import "env" "rAa" (func $internal4928)) - (import "env" "sAa" (func $internal4929)) - (import "env" "tAa" (func $internal4930)) - (import "env" "uAa" (func $internal4931)) - (import "env" "vAa" (func $internal4932)) - (import "env" "wAa" (func $internal4933)) - (import "env" "xAa" (func $internal4934)) - (import "env" "yAa" (func $internal4935)) - (import "env" "zAa" (func $internal4936)) - (import "env" "AAa" (func $internal4937)) - (import "env" "BAa" (func $internal4938)) - (import "env" "CAa" (func $internal4939)) - (import "env" "DAa" (func $internal4940)) - (import "env" "EAa" (func $internal4941)) - (import "env" "FAa" (func $internal4942)) - (import "env" "GAa" (func $internal4943)) - (import "env" "HAa" (func $internal4944)) - (import "env" "IAa" (func $internal4945)) - (import "env" "JAa" (func $internal4946)) - (import "env" "KAa" (func $internal4947)) - (import "env" "LAa" (func $internal4948)) - (import "env" "MAa" (func $internal4949)) - (import "env" "NAa" (func $internal4950)) - (import "env" "OAa" (func $internal4951)) - (import "env" "PAa" (func $internal4952)) - (import "env" "QAa" (func $internal4953)) - (import "env" "RAa" (func $internal4954)) - (import "env" "SAa" (func $internal4955)) - (import "env" "TAa" (func $internal4956)) - (import "env" "UAa" (func $internal4957)) - (import "env" "VAa" (func $internal4958)) - (import "env" "WAa" (func $internal4959)) - (import "env" "XAa" (func $internal4960)) - (import "env" "YAa" (func $internal4961)) - (import "env" "ZAa" (func $internal4962)) - (import "env" "_Aa" (func $internal4963)) - (import "env" "$Aa" (func $internal4964)) - (import "env" "aBa" (func $internal4965)) - (import "env" "bBa" (func $internal4966)) - (import "env" "cBa" (func $internal4967)) - (import "env" "dBa" (func $internal4968)) - (import "env" "eBa" (func $internal4969)) - (import "env" "fBa" (func $internal4970)) - (import "env" "gBa" (func $internal4971)) - (import "env" "hBa" (func $internal4972)) - (import "env" "iBa" (func $internal4973)) - (import "env" "jBa" (func $internal4974)) - (import "env" "kBa" (func $internal4975)) - (import "env" "lBa" (func $internal4976)) - (import "env" "mBa" (func $internal4977)) - (import "env" "nBa" (func $internal4978)) - (import "env" "oBa" (func $internal4979)) - (import "env" "pBa" (func $internal4980)) - (import "env" "qBa" (func $internal4981)) - (import "env" "rBa" (func $internal4982)) - (import "env" "sBa" (func $internal4983)) - (import "env" "tBa" (func $internal4984)) - (import "env" "uBa" (func $internal4985)) - (import "env" "vBa" (func $internal4986)) - (import "env" "wBa" (func $internal4987)) - (import "env" "xBa" (func $internal4988)) - (import "env" "yBa" (func $internal4989)) - (import "env" "zBa" (func $internal4990)) - (import "env" "ABa" (func $internal4991)) - (import "env" "BBa" (func $internal4992)) - (import "env" "CBa" (func $internal4993)) - (import "env" "DBa" (func $internal4994)) - (import "env" "EBa" (func $internal4995)) - (import "env" "FBa" (func $internal4996)) - (import "env" "GBa" (func $internal4997)) - (import "env" "HBa" (func $internal4998)) - (import "env" "IBa" (func $internal4999)) + (import "env" "a" (global $gimport$0 i32)) + (import "env" "b" (global $gimport$1 i32)) + (import "env" "c" (global $gimport$2 i32)) + (import "env" "d" (func $internal1)) + (import "env" "e" (func $internal2)) + (import "env" "f" (func $internal3)) + (import "env" "g" (func $internal4)) + (import "env" "h" (func $internal5)) + (import "env" "i" (func $internal6)) + (import "env" "j" (func $internal7)) + (import "env" "k" (func $internal8)) + (import "env" "l" (func $internal9)) + (import "env" "m" (func $internal10)) + (import "env" "n" (func $internal11)) + (import "env" "o" (func $internal12)) + (import "env" "p" (func $internal13)) + (import "env" "q" (func $internal14)) + (import "env" "r" (func $internal15)) + (import "env" "s" (func $internal16)) + (import "env" "t" (func $internal17)) + (import "env" "u" (func $internal18)) + (import "env" "v" (func $internal19)) + (import "env" "w" (func $internal20)) + (import "env" "x" (func $internal21)) + (import "env" "y" (func $internal22)) + (import "env" "z" (func $internal23)) + (import "env" "A" (func $internal24)) + (import "env" "B" (func $internal25)) + (import "env" "C" (func $internal26)) + (import "env" "D" (func $internal27)) + (import "env" "E" (func $internal28)) + (import "env" "F" (func $internal29)) + (import "env" "G" (func $internal30)) + (import "env" "H" (func $internal31)) + (import "env" "I" (func $internal32)) + (import "env" "J" (func $internal33)) + (import "env" "K" (func $internal34)) + (import "env" "L" (func $internal35)) + (import "env" "M" (func $internal36)) + (import "env" "N" (func $internal37)) + (import "env" "O" (func $internal38)) + (import "env" "P" (func $internal39)) + (import "env" "Q" (func $internal40)) + (import "env" "R" (func $internal41)) + (import "env" "S" (func $internal42)) + (import "env" "T" (func $internal43)) + (import "env" "U" (func $internal44)) + (import "env" "V" (func $internal45)) + (import "env" "W" (func $internal46)) + (import "env" "X" (func $internal47)) + (import "env" "Y" (func $internal48)) + (import "env" "Z" (func $internal49)) + (import "env" "_" (func $internal50)) + (import "env" "$" (func $internal51)) + (import "env" "aa" (func $internal52)) + (import "env" "ba" (func $internal53)) + (import "env" "ca" (func $internal54)) + (import "env" "da" (func $internal55)) + (import "env" "ea" (func $internal56)) + (import "env" "fa" (func $internal57)) + (import "env" "ga" (func $internal58)) + (import "env" "ha" (func $internal59)) + (import "env" "ia" (func $internal60)) + (import "env" "ja" (func $internal61)) + (import "env" "ka" (func $internal62)) + (import "env" "la" (func $internal63)) + (import "env" "ma" (func $internal64)) + (import "env" "na" (func $internal65)) + (import "env" "oa" (func $internal66)) + (import "env" "pa" (func $internal67)) + (import "env" "qa" (func $internal68)) + (import "env" "ra" (func $internal69)) + (import "env" "sa" (func $internal70)) + (import "env" "ta" (func $internal71)) + (import "env" "ua" (func $internal72)) + (import "env" "va" (func $internal73)) + (import "env" "wa" (func $internal74)) + (import "env" "xa" (func $internal75)) + (import "env" "ya" (func $internal76)) + (import "env" "za" (func $internal77)) + (import "env" "Aa" (func $internal78)) + (import "env" "Ba" (func $internal79)) + (import "env" "Ca" (func $internal80)) + (import "env" "Da" (func $internal81)) + (import "env" "Ea" (func $internal82)) + (import "env" "Fa" (func $internal83)) + (import "env" "Ga" (func $internal84)) + (import "env" "Ha" (func $internal85)) + (import "env" "Ia" (func $internal86)) + (import "env" "Ja" (func $internal87)) + (import "env" "Ka" (func $internal88)) + (import "env" "La" (func $internal89)) + (import "env" "Ma" (func $internal90)) + (import "env" "Na" (func $internal91)) + (import "env" "Oa" (func $internal92)) + (import "env" "Pa" (func $internal93)) + (import "env" "Qa" (func $internal94)) + (import "env" "Ra" (func $internal95)) + (import "env" "Sa" (func $internal96)) + (import "env" "Ta" (func $internal97)) + (import "env" "Ua" (func $internal98)) + (import "env" "Va" (func $internal99)) + (import "env" "Wa" (func $internal100)) + (import "env" "Xa" (func $internal101)) + (import "env" "Ya" (func $internal102)) + (import "env" "Za" (func $internal103)) + (import "env" "_a" (func $internal104)) + (import "env" "$a" (func $internal105)) + (import "env" "ab" (func $internal106)) + (import "env" "bb" (func $internal107)) + (import "env" "cb" (func $internal108)) + (import "env" "db" (func $internal109)) + (import "env" "eb" (func $internal110)) + (import "env" "fb" (func $internal111)) + (import "env" "gb" (func $internal112)) + (import "env" "hb" (func $internal113)) + (import "env" "ib" (func $internal114)) + (import "env" "jb" (func $internal115)) + (import "env" "kb" (func $internal116)) + (import "env" "lb" (func $internal117)) + (import "env" "mb" (func $internal118)) + (import "env" "nb" (func $internal119)) + (import "env" "ob" (func $internal120)) + (import "env" "pb" (func $internal121)) + (import "env" "qb" (func $internal122)) + (import "env" "rb" (func $internal123)) + (import "env" "sb" (func $internal124)) + (import "env" "tb" (func $internal125)) + (import "env" "ub" (func $internal126)) + (import "env" "vb" (func $internal127)) + (import "env" "wb" (func $internal128)) + (import "env" "xb" (func $internal129)) + (import "env" "yb" (func $internal130)) + (import "env" "zb" (func $internal131)) + (import "env" "Ab" (func $internal132)) + (import "env" "Bb" (func $internal133)) + (import "env" "Cb" (func $internal134)) + (import "env" "Db" (func $internal135)) + (import "env" "Eb" (func $internal136)) + (import "env" "Fb" (func $internal137)) + (import "env" "Gb" (func $internal138)) + (import "env" "Hb" (func $internal139)) + (import "env" "Ib" (func $internal140)) + (import "env" "Jb" (func $internal141)) + (import "env" "Kb" (func $internal142)) + (import "env" "Lb" (func $internal143)) + (import "env" "Mb" (func $internal144)) + (import "env" "Nb" (func $internal145)) + (import "env" "Ob" (func $internal146)) + (import "env" "Pb" (func $internal147)) + (import "env" "Qb" (func $internal148)) + (import "env" "Rb" (func $internal149)) + (import "env" "Sb" (func $internal150)) + (import "env" "Tb" (func $internal151)) + (import "env" "Ub" (func $internal152)) + (import "env" "Vb" (func $internal153)) + (import "env" "Wb" (func $internal154)) + (import "env" "Xb" (func $internal155)) + (import "env" "Yb" (func $internal156)) + (import "env" "Zb" (func $internal157)) + (import "env" "_b" (func $internal158)) + (import "env" "$b" (func $internal159)) + (import "env" "ac" (func $internal160)) + (import "env" "bc" (func $internal161)) + (import "env" "cc" (func $internal162)) + (import "env" "dc" (func $internal163)) + (import "env" "ec" (func $internal164)) + (import "env" "fc" (func $internal165)) + (import "env" "gc" (func $internal166)) + (import "env" "hc" (func $internal167)) + (import "env" "ic" (func $internal168)) + (import "env" "jc" (func $internal169)) + (import "env" "kc" (func $internal170)) + (import "env" "lc" (func $internal171)) + (import "env" "mc" (func $internal172)) + (import "env" "nc" (func $internal173)) + (import "env" "oc" (func $internal174)) + (import "env" "pc" (func $internal175)) + (import "env" "qc" (func $internal176)) + (import "env" "rc" (func $internal177)) + (import "env" "sc" (func $internal178)) + (import "env" "tc" (func $internal179)) + (import "env" "uc" (func $internal180)) + (import "env" "vc" (func $internal181)) + (import "env" "wc" (func $internal182)) + (import "env" "xc" (func $internal183)) + (import "env" "yc" (func $internal184)) + (import "env" "zc" (func $internal185)) + (import "env" "Ac" (func $internal186)) + (import "env" "Bc" (func $internal187)) + (import "env" "Cc" (func $internal188)) + (import "env" "Dc" (func $internal189)) + (import "env" "Ec" (func $internal190)) + (import "env" "Fc" (func $internal191)) + (import "env" "Gc" (func $internal192)) + (import "env" "Hc" (func $internal193)) + (import "env" "Ic" (func $internal194)) + (import "env" "Jc" (func $internal195)) + (import "env" "Kc" (func $internal196)) + (import "env" "Lc" (func $internal197)) + (import "env" "Mc" (func $internal198)) + (import "env" "Nc" (func $internal199)) + (import "env" "Oc" (func $internal200)) + (import "env" "Pc" (func $internal201)) + (import "env" "Qc" (func $internal202)) + (import "env" "Rc" (func $internal203)) + (import "env" "Sc" (func $internal204)) + (import "env" "Tc" (func $internal205)) + (import "env" "Uc" (func $internal206)) + (import "env" "Vc" (func $internal207)) + (import "env" "Wc" (func $internal208)) + (import "env" "Xc" (func $internal209)) + (import "env" "Yc" (func $internal210)) + (import "env" "Zc" (func $internal211)) + (import "env" "_c" (func $internal212)) + (import "env" "$c" (func $internal213)) + (import "env" "ad" (func $internal214)) + (import "env" "bd" (func $internal215)) + (import "env" "cd" (func $internal216)) + (import "env" "dd" (func $internal217)) + (import "env" "ed" (func $internal218)) + (import "env" "fd" (func $internal219)) + (import "env" "gd" (func $internal220)) + (import "env" "hd" (func $internal221)) + (import "env" "id" (func $internal222)) + (import "env" "jd" (func $internal223)) + (import "env" "kd" (func $internal224)) + (import "env" "ld" (func $internal225)) + (import "env" "md" (func $internal226)) + (import "env" "nd" (func $internal227)) + (import "env" "od" (func $internal228)) + (import "env" "pd" (func $internal229)) + (import "env" "qd" (func $internal230)) + (import "env" "rd" (func $internal231)) + (import "env" "sd" (func $internal232)) + (import "env" "td" (func $internal233)) + (import "env" "ud" (func $internal234)) + (import "env" "vd" (func $internal235)) + (import "env" "wd" (func $internal236)) + (import "env" "xd" (func $internal237)) + (import "env" "yd" (func $internal238)) + (import "env" "zd" (func $internal239)) + (import "env" "Ad" (func $internal240)) + (import "env" "Bd" (func $internal241)) + (import "env" "Cd" (func $internal242)) + (import "env" "Dd" (func $internal243)) + (import "env" "Ed" (func $internal244)) + (import "env" "Fd" (func $internal245)) + (import "env" "Gd" (func $internal246)) + (import "env" "Hd" (func $internal247)) + (import "env" "Id" (func $internal248)) + (import "env" "Jd" (func $internal249)) + (import "env" "Kd" (func $internal250)) + (import "env" "Ld" (func $internal251)) + (import "env" "Md" (func $internal252)) + (import "env" "Nd" (func $internal253)) + (import "env" "Od" (func $internal254)) + (import "env" "Pd" (func $internal255)) + (import "env" "Qd" (func $internal256)) + (import "env" "Rd" (func $internal257)) + (import "env" "Sd" (func $internal258)) + (import "env" "Td" (func $internal259)) + (import "env" "Ud" (func $internal260)) + (import "env" "Vd" (func $internal261)) + (import "env" "Wd" (func $internal262)) + (import "env" "Xd" (func $internal263)) + (import "env" "Yd" (func $internal264)) + (import "env" "Zd" (func $internal265)) + (import "env" "_d" (func $internal266)) + (import "env" "$d" (func $internal267)) + (import "env" "ae" (func $internal268)) + (import "env" "be" (func $internal269)) + (import "env" "ce" (func $internal270)) + (import "env" "de" (func $internal271)) + (import "env" "ee" (func $internal272)) + (import "env" "fe" (func $internal273)) + (import "env" "ge" (func $internal274)) + (import "env" "he" (func $internal275)) + (import "env" "ie" (func $internal276)) + (import "env" "je" (func $internal277)) + (import "env" "ke" (func $internal278)) + (import "env" "le" (func $internal279)) + (import "env" "me" (func $internal280)) + (import "env" "ne" (func $internal281)) + (import "env" "oe" (func $internal282)) + (import "env" "pe" (func $internal283)) + (import "env" "qe" (func $internal284)) + (import "env" "re" (func $internal285)) + (import "env" "se" (func $internal286)) + (import "env" "te" (func $internal287)) + (import "env" "ue" (func $internal288)) + (import "env" "ve" (func $internal289)) + (import "env" "we" (func $internal290)) + (import "env" "xe" (func $internal291)) + (import "env" "ye" (func $internal292)) + (import "env" "ze" (func $internal293)) + (import "env" "Ae" (func $internal294)) + (import "env" "Be" (func $internal295)) + (import "env" "Ce" (func $internal296)) + (import "env" "De" (func $internal297)) + (import "env" "Ee" (func $internal298)) + (import "env" "Fe" (func $internal299)) + (import "env" "Ge" (func $internal300)) + (import "env" "He" (func $internal301)) + (import "env" "Ie" (func $internal302)) + (import "env" "Je" (func $internal303)) + (import "env" "Ke" (func $internal304)) + (import "env" "Le" (func $internal305)) + (import "env" "Me" (func $internal306)) + (import "env" "Ne" (func $internal307)) + (import "env" "Oe" (func $internal308)) + (import "env" "Pe" (func $internal309)) + (import "env" "Qe" (func $internal310)) + (import "env" "Re" (func $internal311)) + (import "env" "Se" (func $internal312)) + (import "env" "Te" (func $internal313)) + (import "env" "Ue" (func $internal314)) + (import "env" "Ve" (func $internal315)) + (import "env" "We" (func $internal316)) + (import "env" "Xe" (func $internal317)) + (import "env" "Ye" (func $internal318)) + (import "env" "Ze" (func $internal319)) + (import "env" "_e" (func $internal320)) + (import "env" "$e" (func $internal321)) + (import "env" "af" (func $internal322)) + (import "env" "bf" (func $internal323)) + (import "env" "cf" (func $internal324)) + (import "env" "df" (func $internal325)) + (import "env" "ef" (func $internal326)) + (import "env" "ff" (func $internal327)) + (import "env" "gf" (func $internal328)) + (import "env" "hf" (func $internal329)) + (import "env" "jf" (func $internal330)) + (import "env" "kf" (func $internal331)) + (import "env" "lf" (func $internal332)) + (import "env" "mf" (func $internal333)) + (import "env" "nf" (func $internal334)) + (import "env" "of" (func $internal335)) + (import "env" "pf" (func $internal336)) + (import "env" "qf" (func $internal337)) + (import "env" "rf" (func $internal338)) + (import "env" "sf" (func $internal339)) + (import "env" "tf" (func $internal340)) + (import "env" "uf" (func $internal341)) + (import "env" "vf" (func $internal342)) + (import "env" "wf" (func $internal343)) + (import "env" "xf" (func $internal344)) + (import "env" "yf" (func $internal345)) + (import "env" "zf" (func $internal346)) + (import "env" "Af" (func $internal347)) + (import "env" "Bf" (func $internal348)) + (import "env" "Cf" (func $internal349)) + (import "env" "Df" (func $internal350)) + (import "env" "Ef" (func $internal351)) + (import "env" "Ff" (func $internal352)) + (import "env" "Gf" (func $internal353)) + (import "env" "Hf" (func $internal354)) + (import "env" "If" (func $internal355)) + (import "env" "Jf" (func $internal356)) + (import "env" "Kf" (func $internal357)) + (import "env" "Lf" (func $internal358)) + (import "env" "Mf" (func $internal359)) + (import "env" "Nf" (func $internal360)) + (import "env" "Of" (func $internal361)) + (import "env" "Pf" (func $internal362)) + (import "env" "Qf" (func $internal363)) + (import "env" "Rf" (func $internal364)) + (import "env" "Sf" (func $internal365)) + (import "env" "Tf" (func $internal366)) + (import "env" "Uf" (func $internal367)) + (import "env" "Vf" (func $internal368)) + (import "env" "Wf" (func $internal369)) + (import "env" "Xf" (func $internal370)) + (import "env" "Yf" (func $internal371)) + (import "env" "Zf" (func $internal372)) + (import "env" "_f" (func $internal373)) + (import "env" "$f" (func $internal374)) + (import "env" "ag" (func $internal375)) + (import "env" "bg" (func $internal376)) + (import "env" "cg" (func $internal377)) + (import "env" "dg" (func $internal378)) + (import "env" "eg" (func $internal379)) + (import "env" "fg" (func $internal380)) + (import "env" "gg" (func $internal381)) + (import "env" "hg" (func $internal382)) + (import "env" "ig" (func $internal383)) + (import "env" "jg" (func $internal384)) + (import "env" "kg" (func $internal385)) + (import "env" "lg" (func $internal386)) + (import "env" "mg" (func $internal387)) + (import "env" "ng" (func $internal388)) + (import "env" "og" (func $internal389)) + (import "env" "pg" (func $internal390)) + (import "env" "qg" (func $internal391)) + (import "env" "rg" (func $internal392)) + (import "env" "sg" (func $internal393)) + (import "env" "tg" (func $internal394)) + (import "env" "ug" (func $internal395)) + (import "env" "vg" (func $internal396)) + (import "env" "wg" (func $internal397)) + (import "env" "xg" (func $internal398)) + (import "env" "yg" (func $internal399)) + (import "env" "zg" (func $internal400)) + (import "env" "Ag" (func $internal401)) + (import "env" "Bg" (func $internal402)) + (import "env" "Cg" (func $internal403)) + (import "env" "Dg" (func $internal404)) + (import "env" "Eg" (func $internal405)) + (import "env" "Fg" (func $internal406)) + (import "env" "Gg" (func $internal407)) + (import "env" "Hg" (func $internal408)) + (import "env" "Ig" (func $internal409)) + (import "env" "Jg" (func $internal410)) + (import "env" "Kg" (func $internal411)) + (import "env" "Lg" (func $internal412)) + (import "env" "Mg" (func $internal413)) + (import "env" "Ng" (func $internal414)) + (import "env" "Og" (func $internal415)) + (import "env" "Pg" (func $internal416)) + (import "env" "Qg" (func $internal417)) + (import "env" "Rg" (func $internal418)) + (import "env" "Sg" (func $internal419)) + (import "env" "Tg" (func $internal420)) + (import "env" "Ug" (func $internal421)) + (import "env" "Vg" (func $internal422)) + (import "env" "Wg" (func $internal423)) + (import "env" "Xg" (func $internal424)) + (import "env" "Yg" (func $internal425)) + (import "env" "Zg" (func $internal426)) + (import "env" "_g" (func $internal427)) + (import "env" "$g" (func $internal428)) + (import "env" "ah" (func $internal429)) + (import "env" "bh" (func $internal430)) + (import "env" "ch" (func $internal431)) + (import "env" "dh" (func $internal432)) + (import "env" "eh" (func $internal433)) + (import "env" "fh" (func $internal434)) + (import "env" "gh" (func $internal435)) + (import "env" "hh" (func $internal436)) + (import "env" "ih" (func $internal437)) + (import "env" "jh" (func $internal438)) + (import "env" "kh" (func $internal439)) + (import "env" "lh" (func $internal440)) + (import "env" "mh" (func $internal441)) + (import "env" "nh" (func $internal442)) + (import "env" "oh" (func $internal443)) + (import "env" "ph" (func $internal444)) + (import "env" "qh" (func $internal445)) + (import "env" "rh" (func $internal446)) + (import "env" "sh" (func $internal447)) + (import "env" "th" (func $internal448)) + (import "env" "uh" (func $internal449)) + (import "env" "vh" (func $internal450)) + (import "env" "wh" (func $internal451)) + (import "env" "xh" (func $internal452)) + (import "env" "yh" (func $internal453)) + (import "env" "zh" (func $internal454)) + (import "env" "Ah" (func $internal455)) + (import "env" "Bh" (func $internal456)) + (import "env" "Ch" (func $internal457)) + (import "env" "Dh" (func $internal458)) + (import "env" "Eh" (func $internal459)) + (import "env" "Fh" (func $internal460)) + (import "env" "Gh" (func $internal461)) + (import "env" "Hh" (func $internal462)) + (import "env" "Ih" (func $internal463)) + (import "env" "Jh" (func $internal464)) + (import "env" "Kh" (func $internal465)) + (import "env" "Lh" (func $internal466)) + (import "env" "Mh" (func $internal467)) + (import "env" "Nh" (func $internal468)) + (import "env" "Oh" (func $internal469)) + (import "env" "Ph" (func $internal470)) + (import "env" "Qh" (func $internal471)) + (import "env" "Rh" (func $internal472)) + (import "env" "Sh" (func $internal473)) + (import "env" "Th" (func $internal474)) + (import "env" "Uh" (func $internal475)) + (import "env" "Vh" (func $internal476)) + (import "env" "Wh" (func $internal477)) + (import "env" "Xh" (func $internal478)) + (import "env" "Yh" (func $internal479)) + (import "env" "Zh" (func $internal480)) + (import "env" "_h" (func $internal481)) + (import "env" "$h" (func $internal482)) + (import "env" "ai" (func $internal483)) + (import "env" "bi" (func $internal484)) + (import "env" "ci" (func $internal485)) + (import "env" "di" (func $internal486)) + (import "env" "ei" (func $internal487)) + (import "env" "fi" (func $internal488)) + (import "env" "gi" (func $internal489)) + (import "env" "hi" (func $internal490)) + (import "env" "ii" (func $internal491)) + (import "env" "ji" (func $internal492)) + (import "env" "ki" (func $internal493)) + (import "env" "li" (func $internal494)) + (import "env" "mi" (func $internal495)) + (import "env" "ni" (func $internal496)) + (import "env" "oi" (func $internal497)) + (import "env" "pi" (func $internal498)) + (import "env" "qi" (func $internal499)) + (import "env" "ri" (func $internal500)) + (import "env" "si" (func $internal501)) + (import "env" "ti" (func $internal502)) + (import "env" "ui" (func $internal503)) + (import "env" "vi" (func $internal504)) + (import "env" "wi" (func $internal505)) + (import "env" "xi" (func $internal506)) + (import "env" "yi" (func $internal507)) + (import "env" "zi" (func $internal508)) + (import "env" "Ai" (func $internal509)) + (import "env" "Bi" (func $internal510)) + (import "env" "Ci" (func $internal511)) + (import "env" "Di" (func $internal512)) + (import "env" "Ei" (func $internal513)) + (import "env" "Fi" (func $internal514)) + (import "env" "Gi" (func $internal515)) + (import "env" "Hi" (func $internal516)) + (import "env" "Ii" (func $internal517)) + (import "env" "Ji" (func $internal518)) + (import "env" "Ki" (func $internal519)) + (import "env" "Li" (func $internal520)) + (import "env" "Mi" (func $internal521)) + (import "env" "Ni" (func $internal522)) + (import "env" "Oi" (func $internal523)) + (import "env" "Pi" (func $internal524)) + (import "env" "Qi" (func $internal525)) + (import "env" "Ri" (func $internal526)) + (import "env" "Si" (func $internal527)) + (import "env" "Ti" (func $internal528)) + (import "env" "Ui" (func $internal529)) + (import "env" "Vi" (func $internal530)) + (import "env" "Wi" (func $internal531)) + (import "env" "Xi" (func $internal532)) + (import "env" "Yi" (func $internal533)) + (import "env" "Zi" (func $internal534)) + (import "env" "_i" (func $internal535)) + (import "env" "$i" (func $internal536)) + (import "env" "aj" (func $internal537)) + (import "env" "bj" (func $internal538)) + (import "env" "cj" (func $internal539)) + (import "env" "dj" (func $internal540)) + (import "env" "ej" (func $internal541)) + (import "env" "fj" (func $internal542)) + (import "env" "gj" (func $internal543)) + (import "env" "hj" (func $internal544)) + (import "env" "ij" (func $internal545)) + (import "env" "jj" (func $internal546)) + (import "env" "kj" (func $internal547)) + (import "env" "lj" (func $internal548)) + (import "env" "mj" (func $internal549)) + (import "env" "nj" (func $internal550)) + (import "env" "oj" (func $internal551)) + (import "env" "pj" (func $internal552)) + (import "env" "qj" (func $internal553)) + (import "env" "rj" (func $internal554)) + (import "env" "sj" (func $internal555)) + (import "env" "tj" (func $internal556)) + (import "env" "uj" (func $internal557)) + (import "env" "vj" (func $internal558)) + (import "env" "wj" (func $internal559)) + (import "env" "xj" (func $internal560)) + (import "env" "yj" (func $internal561)) + (import "env" "zj" (func $internal562)) + (import "env" "Aj" (func $internal563)) + (import "env" "Bj" (func $internal564)) + (import "env" "Cj" (func $internal565)) + (import "env" "Dj" (func $internal566)) + (import "env" "Ej" (func $internal567)) + (import "env" "Fj" (func $internal568)) + (import "env" "Gj" (func $internal569)) + (import "env" "Hj" (func $internal570)) + (import "env" "Ij" (func $internal571)) + (import "env" "Jj" (func $internal572)) + (import "env" "Kj" (func $internal573)) + (import "env" "Lj" (func $internal574)) + (import "env" "Mj" (func $internal575)) + (import "env" "Nj" (func $internal576)) + (import "env" "Oj" (func $internal577)) + (import "env" "Pj" (func $internal578)) + (import "env" "Qj" (func $internal579)) + (import "env" "Rj" (func $internal580)) + (import "env" "Sj" (func $internal581)) + (import "env" "Tj" (func $internal582)) + (import "env" "Uj" (func $internal583)) + (import "env" "Vj" (func $internal584)) + (import "env" "Wj" (func $internal585)) + (import "env" "Xj" (func $internal586)) + (import "env" "Yj" (func $internal587)) + (import "env" "Zj" (func $internal588)) + (import "env" "_j" (func $internal589)) + (import "env" "$j" (func $internal590)) + (import "env" "ak" (func $internal591)) + (import "env" "bk" (func $internal592)) + (import "env" "ck" (func $internal593)) + (import "env" "dk" (func $internal594)) + (import "env" "ek" (func $internal595)) + (import "env" "fk" (func $internal596)) + (import "env" "gk" (func $internal597)) + (import "env" "hk" (func $internal598)) + (import "env" "ik" (func $internal599)) + (import "env" "jk" (func $internal600)) + (import "env" "kk" (func $internal601)) + (import "env" "lk" (func $internal602)) + (import "env" "mk" (func $internal603)) + (import "env" "nk" (func $internal604)) + (import "env" "ok" (func $internal605)) + (import "env" "pk" (func $internal606)) + (import "env" "qk" (func $internal607)) + (import "env" "rk" (func $internal608)) + (import "env" "sk" (func $internal609)) + (import "env" "tk" (func $internal610)) + (import "env" "uk" (func $internal611)) + (import "env" "vk" (func $internal612)) + (import "env" "wk" (func $internal613)) + (import "env" "xk" (func $internal614)) + (import "env" "yk" (func $internal615)) + (import "env" "zk" (func $internal616)) + (import "env" "Ak" (func $internal617)) + (import "env" "Bk" (func $internal618)) + (import "env" "Ck" (func $internal619)) + (import "env" "Dk" (func $internal620)) + (import "env" "Ek" (func $internal621)) + (import "env" "Fk" (func $internal622)) + (import "env" "Gk" (func $internal623)) + (import "env" "Hk" (func $internal624)) + (import "env" "Ik" (func $internal625)) + (import "env" "Jk" (func $internal626)) + (import "env" "Kk" (func $internal627)) + (import "env" "Lk" (func $internal628)) + (import "env" "Mk" (func $internal629)) + (import "env" "Nk" (func $internal630)) + (import "env" "Ok" (func $internal631)) + (import "env" "Pk" (func $internal632)) + (import "env" "Qk" (func $internal633)) + (import "env" "Rk" (func $internal634)) + (import "env" "Sk" (func $internal635)) + (import "env" "Tk" (func $internal636)) + (import "env" "Uk" (func $internal637)) + (import "env" "Vk" (func $internal638)) + (import "env" "Wk" (func $internal639)) + (import "env" "Xk" (func $internal640)) + (import "env" "Yk" (func $internal641)) + (import "env" "Zk" (func $internal642)) + (import "env" "_k" (func $internal643)) + (import "env" "$k" (func $internal644)) + (import "env" "al" (func $internal645)) + (import "env" "bl" (func $internal646)) + (import "env" "cl" (func $internal647)) + (import "env" "dl" (func $internal648)) + (import "env" "el" (func $internal649)) + (import "env" "fl" (func $internal650)) + (import "env" "gl" (func $internal651)) + (import "env" "hl" (func $internal652)) + (import "env" "il" (func $internal653)) + (import "env" "jl" (func $internal654)) + (import "env" "kl" (func $internal655)) + (import "env" "ll" (func $internal656)) + (import "env" "ml" (func $internal657)) + (import "env" "nl" (func $internal658)) + (import "env" "ol" (func $internal659)) + (import "env" "pl" (func $internal660)) + (import "env" "ql" (func $internal661)) + (import "env" "rl" (func $internal662)) + (import "env" "sl" (func $internal663)) + (import "env" "tl" (func $internal664)) + (import "env" "ul" (func $internal665)) + (import "env" "vl" (func $internal666)) + (import "env" "wl" (func $internal667)) + (import "env" "xl" (func $internal668)) + (import "env" "yl" (func $internal669)) + (import "env" "zl" (func $internal670)) + (import "env" "Al" (func $internal671)) + (import "env" "Bl" (func $internal672)) + (import "env" "Cl" (func $internal673)) + (import "env" "Dl" (func $internal674)) + (import "env" "El" (func $internal675)) + (import "env" "Fl" (func $internal676)) + (import "env" "Gl" (func $internal677)) + (import "env" "Hl" (func $internal678)) + (import "env" "Il" (func $internal679)) + (import "env" "Jl" (func $internal680)) + (import "env" "Kl" (func $internal681)) + (import "env" "Ll" (func $internal682)) + (import "env" "Ml" (func $internal683)) + (import "env" "Nl" (func $internal684)) + (import "env" "Ol" (func $internal685)) + (import "env" "Pl" (func $internal686)) + (import "env" "Ql" (func $internal687)) + (import "env" "Rl" (func $internal688)) + (import "env" "Sl" (func $internal689)) + (import "env" "Tl" (func $internal690)) + (import "env" "Ul" (func $internal691)) + (import "env" "Vl" (func $internal692)) + (import "env" "Wl" (func $internal693)) + (import "env" "Xl" (func $internal694)) + (import "env" "Yl" (func $internal695)) + (import "env" "Zl" (func $internal696)) + (import "env" "_l" (func $internal697)) + (import "env" "$l" (func $internal698)) + (import "env" "am" (func $internal699)) + (import "env" "bm" (func $internal700)) + (import "env" "cm" (func $internal701)) + (import "env" "dm" (func $internal702)) + (import "env" "em" (func $internal703)) + (import "env" "fm" (func $internal704)) + (import "env" "gm" (func $internal705)) + (import "env" "hm" (func $internal706)) + (import "env" "im" (func $internal707)) + (import "env" "jm" (func $internal708)) + (import "env" "km" (func $internal709)) + (import "env" "lm" (func $internal710)) + (import "env" "mm" (func $internal711)) + (import "env" "nm" (func $internal712)) + (import "env" "om" (func $internal713)) + (import "env" "pm" (func $internal714)) + (import "env" "qm" (func $internal715)) + (import "env" "rm" (func $internal716)) + (import "env" "sm" (func $internal717)) + (import "env" "tm" (func $internal718)) + (import "env" "um" (func $internal719)) + (import "env" "vm" (func $internal720)) + (import "env" "wm" (func $internal721)) + (import "env" "xm" (func $internal722)) + (import "env" "ym" (func $internal723)) + (import "env" "zm" (func $internal724)) + (import "env" "Am" (func $internal725)) + (import "env" "Bm" (func $internal726)) + (import "env" "Cm" (func $internal727)) + (import "env" "Dm" (func $internal728)) + (import "env" "Em" (func $internal729)) + (import "env" "Fm" (func $internal730)) + (import "env" "Gm" (func $internal731)) + (import "env" "Hm" (func $internal732)) + (import "env" "Im" (func $internal733)) + (import "env" "Jm" (func $internal734)) + (import "env" "Km" (func $internal735)) + (import "env" "Lm" (func $internal736)) + (import "env" "Mm" (func $internal737)) + (import "env" "Nm" (func $internal738)) + (import "env" "Om" (func $internal739)) + (import "env" "Pm" (func $internal740)) + (import "env" "Qm" (func $internal741)) + (import "env" "Rm" (func $internal742)) + (import "env" "Sm" (func $internal743)) + (import "env" "Tm" (func $internal744)) + (import "env" "Um" (func $internal745)) + (import "env" "Vm" (func $internal746)) + (import "env" "Wm" (func $internal747)) + (import "env" "Xm" (func $internal748)) + (import "env" "Ym" (func $internal749)) + (import "env" "Zm" (func $internal750)) + (import "env" "_m" (func $internal751)) + (import "env" "$m" (func $internal752)) + (import "env" "an" (func $internal753)) + (import "env" "bn" (func $internal754)) + (import "env" "cn" (func $internal755)) + (import "env" "dn" (func $internal756)) + (import "env" "en" (func $internal757)) + (import "env" "fn" (func $internal758)) + (import "env" "gn" (func $internal759)) + (import "env" "hn" (func $internal760)) + (import "env" "jn" (func $internal761)) + (import "env" "kn" (func $internal762)) + (import "env" "ln" (func $internal763)) + (import "env" "mn" (func $internal764)) + (import "env" "nn" (func $internal765)) + (import "env" "on" (func $internal766)) + (import "env" "pn" (func $internal767)) + (import "env" "qn" (func $internal768)) + (import "env" "rn" (func $internal769)) + (import "env" "sn" (func $internal770)) + (import "env" "tn" (func $internal771)) + (import "env" "un" (func $internal772)) + (import "env" "vn" (func $internal773)) + (import "env" "wn" (func $internal774)) + (import "env" "xn" (func $internal775)) + (import "env" "yn" (func $internal776)) + (import "env" "zn" (func $internal777)) + (import "env" "An" (func $internal778)) + (import "env" "Bn" (func $internal779)) + (import "env" "Cn" (func $internal780)) + (import "env" "Dn" (func $internal781)) + (import "env" "En" (func $internal782)) + (import "env" "Fn" (func $internal783)) + (import "env" "Gn" (func $internal784)) + (import "env" "Hn" (func $internal785)) + (import "env" "In" (func $internal786)) + (import "env" "Jn" (func $internal787)) + (import "env" "Kn" (func $internal788)) + (import "env" "Ln" (func $internal789)) + (import "env" "Mn" (func $internal790)) + (import "env" "Nn" (func $internal791)) + (import "env" "On" (func $internal792)) + (import "env" "Pn" (func $internal793)) + (import "env" "Qn" (func $internal794)) + (import "env" "Rn" (func $internal795)) + (import "env" "Sn" (func $internal796)) + (import "env" "Tn" (func $internal797)) + (import "env" "Un" (func $internal798)) + (import "env" "Vn" (func $internal799)) + (import "env" "Wn" (func $internal800)) + (import "env" "Xn" (func $internal801)) + (import "env" "Yn" (func $internal802)) + (import "env" "Zn" (func $internal803)) + (import "env" "_n" (func $internal804)) + (import "env" "$n" (func $internal805)) + (import "env" "ao" (func $internal806)) + (import "env" "bo" (func $internal807)) + (import "env" "co" (func $internal808)) + (import "env" "eo" (func $internal809)) + (import "env" "fo" (func $internal810)) + (import "env" "go" (func $internal811)) + (import "env" "ho" (func $internal812)) + (import "env" "io" (func $internal813)) + (import "env" "jo" (func $internal814)) + (import "env" "ko" (func $internal815)) + (import "env" "lo" (func $internal816)) + (import "env" "mo" (func $internal817)) + (import "env" "no" (func $internal818)) + (import "env" "oo" (func $internal819)) + (import "env" "po" (func $internal820)) + (import "env" "qo" (func $internal821)) + (import "env" "ro" (func $internal822)) + (import "env" "so" (func $internal823)) + (import "env" "to" (func $internal824)) + (import "env" "uo" (func $internal825)) + (import "env" "vo" (func $internal826)) + (import "env" "wo" (func $internal827)) + (import "env" "xo" (func $internal828)) + (import "env" "yo" (func $internal829)) + (import "env" "zo" (func $internal830)) + (import "env" "Ao" (func $internal831)) + (import "env" "Bo" (func $internal832)) + (import "env" "Co" (func $internal833)) + (import "env" "Do" (func $internal834)) + (import "env" "Eo" (func $internal835)) + (import "env" "Fo" (func $internal836)) + (import "env" "Go" (func $internal837)) + (import "env" "Ho" (func $internal838)) + (import "env" "Io" (func $internal839)) + (import "env" "Jo" (func $internal840)) + (import "env" "Ko" (func $internal841)) + (import "env" "Lo" (func $internal842)) + (import "env" "Mo" (func $internal843)) + (import "env" "No" (func $internal844)) + (import "env" "Oo" (func $internal845)) + (import "env" "Po" (func $internal846)) + (import "env" "Qo" (func $internal847)) + (import "env" "Ro" (func $internal848)) + (import "env" "So" (func $internal849)) + (import "env" "To" (func $internal850)) + (import "env" "Uo" (func $internal851)) + (import "env" "Vo" (func $internal852)) + (import "env" "Wo" (func $internal853)) + (import "env" "Xo" (func $internal854)) + (import "env" "Yo" (func $internal855)) + (import "env" "Zo" (func $internal856)) + (import "env" "_o" (func $internal857)) + (import "env" "$o" (func $internal858)) + (import "env" "ap" (func $internal859)) + (import "env" "bp" (func $internal860)) + (import "env" "cp" (func $internal861)) + (import "env" "dp" (func $internal862)) + (import "env" "ep" (func $internal863)) + (import "env" "fp" (func $internal864)) + (import "env" "gp" (func $internal865)) + (import "env" "hp" (func $internal866)) + (import "env" "ip" (func $internal867)) + (import "env" "jp" (func $internal868)) + (import "env" "kp" (func $internal869)) + (import "env" "lp" (func $internal870)) + (import "env" "mp" (func $internal871)) + (import "env" "np" (func $internal872)) + (import "env" "op" (func $internal873)) + (import "env" "pp" (func $internal874)) + (import "env" "qp" (func $internal875)) + (import "env" "rp" (func $internal876)) + (import "env" "sp" (func $internal877)) + (import "env" "tp" (func $internal878)) + (import "env" "up" (func $internal879)) + (import "env" "vp" (func $internal880)) + (import "env" "wp" (func $internal881)) + (import "env" "xp" (func $internal882)) + (import "env" "yp" (func $internal883)) + (import "env" "zp" (func $internal884)) + (import "env" "Ap" (func $internal885)) + (import "env" "Bp" (func $internal886)) + (import "env" "Cp" (func $internal887)) + (import "env" "Dp" (func $internal888)) + (import "env" "Ep" (func $internal889)) + (import "env" "Fp" (func $internal890)) + (import "env" "Gp" (func $internal891)) + (import "env" "Hp" (func $internal892)) + (import "env" "Ip" (func $internal893)) + (import "env" "Jp" (func $internal894)) + (import "env" "Kp" (func $internal895)) + (import "env" "Lp" (func $internal896)) + (import "env" "Mp" (func $internal897)) + (import "env" "Np" (func $internal898)) + (import "env" "Op" (func $internal899)) + (import "env" "Pp" (func $internal900)) + (import "env" "Qp" (func $internal901)) + (import "env" "Rp" (func $internal902)) + (import "env" "Sp" (func $internal903)) + (import "env" "Tp" (func $internal904)) + (import "env" "Up" (func $internal905)) + (import "env" "Vp" (func $internal906)) + (import "env" "Wp" (func $internal907)) + (import "env" "Xp" (func $internal908)) + (import "env" "Yp" (func $internal909)) + (import "env" "Zp" (func $internal910)) + (import "env" "_p" (func $internal911)) + (import "env" "$p" (func $internal912)) + (import "env" "aq" (func $internal913)) + (import "env" "bq" (func $internal914)) + (import "env" "cq" (func $internal915)) + (import "env" "dq" (func $internal916)) + (import "env" "eq" (func $internal917)) + (import "env" "fq" (func $internal918)) + (import "env" "gq" (func $internal919)) + (import "env" "hq" (func $internal920)) + (import "env" "iq" (func $internal921)) + (import "env" "jq" (func $internal922)) + (import "env" "kq" (func $internal923)) + (import "env" "lq" (func $internal924)) + (import "env" "mq" (func $internal925)) + (import "env" "nq" (func $internal926)) + (import "env" "oq" (func $internal927)) + (import "env" "pq" (func $internal928)) + (import "env" "qq" (func $internal929)) + (import "env" "rq" (func $internal930)) + (import "env" "sq" (func $internal931)) + (import "env" "tq" (func $internal932)) + (import "env" "uq" (func $internal933)) + (import "env" "vq" (func $internal934)) + (import "env" "wq" (func $internal935)) + (import "env" "xq" (func $internal936)) + (import "env" "yq" (func $internal937)) + (import "env" "zq" (func $internal938)) + (import "env" "Aq" (func $internal939)) + (import "env" "Bq" (func $internal940)) + (import "env" "Cq" (func $internal941)) + (import "env" "Dq" (func $internal942)) + (import "env" "Eq" (func $internal943)) + (import "env" "Fq" (func $internal944)) + (import "env" "Gq" (func $internal945)) + (import "env" "Hq" (func $internal946)) + (import "env" "Iq" (func $internal947)) + (import "env" "Jq" (func $internal948)) + (import "env" "Kq" (func $internal949)) + (import "env" "Lq" (func $internal950)) + (import "env" "Mq" (func $internal951)) + (import "env" "Nq" (func $internal952)) + (import "env" "Oq" (func $internal953)) + (import "env" "Pq" (func $internal954)) + (import "env" "Qq" (func $internal955)) + (import "env" "Rq" (func $internal956)) + (import "env" "Sq" (func $internal957)) + (import "env" "Tq" (func $internal958)) + (import "env" "Uq" (func $internal959)) + (import "env" "Vq" (func $internal960)) + (import "env" "Wq" (func $internal961)) + (import "env" "Xq" (func $internal962)) + (import "env" "Yq" (func $internal963)) + (import "env" "Zq" (func $internal964)) + (import "env" "_q" (func $internal965)) + (import "env" "$q" (func $internal966)) + (import "env" "ar" (func $internal967)) + (import "env" "br" (func $internal968)) + (import "env" "cr" (func $internal969)) + (import "env" "dr" (func $internal970)) + (import "env" "er" (func $internal971)) + (import "env" "fr" (func $internal972)) + (import "env" "gr" (func $internal973)) + (import "env" "hr" (func $internal974)) + (import "env" "ir" (func $internal975)) + (import "env" "jr" (func $internal976)) + (import "env" "kr" (func $internal977)) + (import "env" "lr" (func $internal978)) + (import "env" "mr" (func $internal979)) + (import "env" "nr" (func $internal980)) + (import "env" "or" (func $internal981)) + (import "env" "pr" (func $internal982)) + (import "env" "qr" (func $internal983)) + (import "env" "rr" (func $internal984)) + (import "env" "sr" (func $internal985)) + (import "env" "tr" (func $internal986)) + (import "env" "ur" (func $internal987)) + (import "env" "vr" (func $internal988)) + (import "env" "wr" (func $internal989)) + (import "env" "xr" (func $internal990)) + (import "env" "yr" (func $internal991)) + (import "env" "zr" (func $internal992)) + (import "env" "Ar" (func $internal993)) + (import "env" "Br" (func $internal994)) + (import "env" "Cr" (func $internal995)) + (import "env" "Dr" (func $internal996)) + (import "env" "Er" (func $internal997)) + (import "env" "Fr" (func $internal998)) + (import "env" "Gr" (func $internal999)) + (import "env" "Hr" (func $internal1000)) + (import "env" "Ir" (func $internal1001)) + (import "env" "Jr" (func $internal1002)) + (import "env" "Kr" (func $internal1003)) + (import "env" "Lr" (func $internal1004)) + (import "env" "Mr" (func $internal1005)) + (import "env" "Nr" (func $internal1006)) + (import "env" "Or" (func $internal1007)) + (import "env" "Pr" (func $internal1008)) + (import "env" "Qr" (func $internal1009)) + (import "env" "Rr" (func $internal1010)) + (import "env" "Sr" (func $internal1011)) + (import "env" "Tr" (func $internal1012)) + (import "env" "Ur" (func $internal1013)) + (import "env" "Vr" (func $internal1014)) + (import "env" "Wr" (func $internal1015)) + (import "env" "Xr" (func $internal1016)) + (import "env" "Yr" (func $internal1017)) + (import "env" "Zr" (func $internal1018)) + (import "env" "_r" (func $internal1019)) + (import "env" "$r" (func $internal1020)) + (import "env" "as" (func $internal1021)) + (import "env" "bs" (func $internal1022)) + (import "env" "cs" (func $internal1023)) + (import "env" "ds" (func $internal1024)) + (import "env" "es" (func $internal1025)) + (import "env" "fs" (func $internal1026)) + (import "env" "gs" (func $internal1027)) + (import "env" "hs" (func $internal1028)) + (import "env" "is" (func $internal1029)) + (import "env" "js" (func $internal1030)) + (import "env" "ks" (func $internal1031)) + (import "env" "ls" (func $internal1032)) + (import "env" "ms" (func $internal1033)) + (import "env" "ns" (func $internal1034)) + (import "env" "os" (func $internal1035)) + (import "env" "ps" (func $internal1036)) + (import "env" "qs" (func $internal1037)) + (import "env" "rs" (func $internal1038)) + (import "env" "ss" (func $internal1039)) + (import "env" "ts" (func $internal1040)) + (import "env" "us" (func $internal1041)) + (import "env" "vs" (func $internal1042)) + (import "env" "ws" (func $internal1043)) + (import "env" "xs" (func $internal1044)) + (import "env" "ys" (func $internal1045)) + (import "env" "zs" (func $internal1046)) + (import "env" "As" (func $internal1047)) + (import "env" "Bs" (func $internal1048)) + (import "env" "Cs" (func $internal1049)) + (import "env" "Ds" (func $internal1050)) + (import "env" "Es" (func $internal1051)) + (import "env" "Fs" (func $internal1052)) + (import "env" "Gs" (func $internal1053)) + (import "env" "Hs" (func $internal1054)) + (import "env" "Is" (func $internal1055)) + (import "env" "Js" (func $internal1056)) + (import "env" "Ks" (func $internal1057)) + (import "env" "Ls" (func $internal1058)) + (import "env" "Ms" (func $internal1059)) + (import "env" "Ns" (func $internal1060)) + (import "env" "Os" (func $internal1061)) + (import "env" "Ps" (func $internal1062)) + (import "env" "Qs" (func $internal1063)) + (import "env" "Rs" (func $internal1064)) + (import "env" "Ss" (func $internal1065)) + (import "env" "Ts" (func $internal1066)) + (import "env" "Us" (func $internal1067)) + (import "env" "Vs" (func $internal1068)) + (import "env" "Ws" (func $internal1069)) + (import "env" "Xs" (func $internal1070)) + (import "env" "Ys" (func $internal1071)) + (import "env" "Zs" (func $internal1072)) + (import "env" "_s" (func $internal1073)) + (import "env" "$s" (func $internal1074)) + (import "env" "at" (func $internal1075)) + (import "env" "bt" (func $internal1076)) + (import "env" "ct" (func $internal1077)) + (import "env" "dt" (func $internal1078)) + (import "env" "et" (func $internal1079)) + (import "env" "ft" (func $internal1080)) + (import "env" "gt" (func $internal1081)) + (import "env" "ht" (func $internal1082)) + (import "env" "it" (func $internal1083)) + (import "env" "jt" (func $internal1084)) + (import "env" "kt" (func $internal1085)) + (import "env" "lt" (func $internal1086)) + (import "env" "mt" (func $internal1087)) + (import "env" "nt" (func $internal1088)) + (import "env" "ot" (func $internal1089)) + (import "env" "pt" (func $internal1090)) + (import "env" "qt" (func $internal1091)) + (import "env" "rt" (func $internal1092)) + (import "env" "st" (func $internal1093)) + (import "env" "tt" (func $internal1094)) + (import "env" "ut" (func $internal1095)) + (import "env" "vt" (func $internal1096)) + (import "env" "wt" (func $internal1097)) + (import "env" "xt" (func $internal1098)) + (import "env" "yt" (func $internal1099)) + (import "env" "zt" (func $internal1100)) + (import "env" "At" (func $internal1101)) + (import "env" "Bt" (func $internal1102)) + (import "env" "Ct" (func $internal1103)) + (import "env" "Dt" (func $internal1104)) + (import "env" "Et" (func $internal1105)) + (import "env" "Ft" (func $internal1106)) + (import "env" "Gt" (func $internal1107)) + (import "env" "Ht" (func $internal1108)) + (import "env" "It" (func $internal1109)) + (import "env" "Jt" (func $internal1110)) + (import "env" "Kt" (func $internal1111)) + (import "env" "Lt" (func $internal1112)) + (import "env" "Mt" (func $internal1113)) + (import "env" "Nt" (func $internal1114)) + (import "env" "Ot" (func $internal1115)) + (import "env" "Pt" (func $internal1116)) + (import "env" "Qt" (func $internal1117)) + (import "env" "Rt" (func $internal1118)) + (import "env" "St" (func $internal1119)) + (import "env" "Tt" (func $internal1120)) + (import "env" "Ut" (func $internal1121)) + (import "env" "Vt" (func $internal1122)) + (import "env" "Wt" (func $internal1123)) + (import "env" "Xt" (func $internal1124)) + (import "env" "Yt" (func $internal1125)) + (import "env" "Zt" (func $internal1126)) + (import "env" "_t" (func $internal1127)) + (import "env" "$t" (func $internal1128)) + (import "env" "au" (func $internal1129)) + (import "env" "bu" (func $internal1130)) + (import "env" "cu" (func $internal1131)) + (import "env" "du" (func $internal1132)) + (import "env" "eu" (func $internal1133)) + (import "env" "fu" (func $internal1134)) + (import "env" "gu" (func $internal1135)) + (import "env" "hu" (func $internal1136)) + (import "env" "iu" (func $internal1137)) + (import "env" "ju" (func $internal1138)) + (import "env" "ku" (func $internal1139)) + (import "env" "lu" (func $internal1140)) + (import "env" "mu" (func $internal1141)) + (import "env" "nu" (func $internal1142)) + (import "env" "ou" (func $internal1143)) + (import "env" "pu" (func $internal1144)) + (import "env" "qu" (func $internal1145)) + (import "env" "ru" (func $internal1146)) + (import "env" "su" (func $internal1147)) + (import "env" "tu" (func $internal1148)) + (import "env" "uu" (func $internal1149)) + (import "env" "vu" (func $internal1150)) + (import "env" "wu" (func $internal1151)) + (import "env" "xu" (func $internal1152)) + (import "env" "yu" (func $internal1153)) + (import "env" "zu" (func $internal1154)) + (import "env" "Au" (func $internal1155)) + (import "env" "Bu" (func $internal1156)) + (import "env" "Cu" (func $internal1157)) + (import "env" "Du" (func $internal1158)) + (import "env" "Eu" (func $internal1159)) + (import "env" "Fu" (func $internal1160)) + (import "env" "Gu" (func $internal1161)) + (import "env" "Hu" (func $internal1162)) + (import "env" "Iu" (func $internal1163)) + (import "env" "Ju" (func $internal1164)) + (import "env" "Ku" (func $internal1165)) + (import "env" "Lu" (func $internal1166)) + (import "env" "Mu" (func $internal1167)) + (import "env" "Nu" (func $internal1168)) + (import "env" "Ou" (func $internal1169)) + (import "env" "Pu" (func $internal1170)) + (import "env" "Qu" (func $internal1171)) + (import "env" "Ru" (func $internal1172)) + (import "env" "Su" (func $internal1173)) + (import "env" "Tu" (func $internal1174)) + (import "env" "Uu" (func $internal1175)) + (import "env" "Vu" (func $internal1176)) + (import "env" "Wu" (func $internal1177)) + (import "env" "Xu" (func $internal1178)) + (import "env" "Yu" (func $internal1179)) + (import "env" "Zu" (func $internal1180)) + (import "env" "_u" (func $internal1181)) + (import "env" "$u" (func $internal1182)) + (import "env" "av" (func $internal1183)) + (import "env" "bv" (func $internal1184)) + (import "env" "cv" (func $internal1185)) + (import "env" "dv" (func $internal1186)) + (import "env" "ev" (func $internal1187)) + (import "env" "fv" (func $internal1188)) + (import "env" "gv" (func $internal1189)) + (import "env" "hv" (func $internal1190)) + (import "env" "iv" (func $internal1191)) + (import "env" "jv" (func $internal1192)) + (import "env" "kv" (func $internal1193)) + (import "env" "lv" (func $internal1194)) + (import "env" "mv" (func $internal1195)) + (import "env" "nv" (func $internal1196)) + (import "env" "ov" (func $internal1197)) + (import "env" "pv" (func $internal1198)) + (import "env" "qv" (func $internal1199)) + (import "env" "rv" (func $internal1200)) + (import "env" "sv" (func $internal1201)) + (import "env" "tv" (func $internal1202)) + (import "env" "uv" (func $internal1203)) + (import "env" "vv" (func $internal1204)) + (import "env" "wv" (func $internal1205)) + (import "env" "xv" (func $internal1206)) + (import "env" "yv" (func $internal1207)) + (import "env" "zv" (func $internal1208)) + (import "env" "Av" (func $internal1209)) + (import "env" "Bv" (func $internal1210)) + (import "env" "Cv" (func $internal1211)) + (import "env" "Dv" (func $internal1212)) + (import "env" "Ev" (func $internal1213)) + (import "env" "Fv" (func $internal1214)) + (import "env" "Gv" (func $internal1215)) + (import "env" "Hv" (func $internal1216)) + (import "env" "Iv" (func $internal1217)) + (import "env" "Jv" (func $internal1218)) + (import "env" "Kv" (func $internal1219)) + (import "env" "Lv" (func $internal1220)) + (import "env" "Mv" (func $internal1221)) + (import "env" "Nv" (func $internal1222)) + (import "env" "Ov" (func $internal1223)) + (import "env" "Pv" (func $internal1224)) + (import "env" "Qv" (func $internal1225)) + (import "env" "Rv" (func $internal1226)) + (import "env" "Sv" (func $internal1227)) + (import "env" "Tv" (func $internal1228)) + (import "env" "Uv" (func $internal1229)) + (import "env" "Vv" (func $internal1230)) + (import "env" "Wv" (func $internal1231)) + (import "env" "Xv" (func $internal1232)) + (import "env" "Yv" (func $internal1233)) + (import "env" "Zv" (func $internal1234)) + (import "env" "_v" (func $internal1235)) + (import "env" "$v" (func $internal1236)) + (import "env" "aw" (func $internal1237)) + (import "env" "bw" (func $internal1238)) + (import "env" "cw" (func $internal1239)) + (import "env" "dw" (func $internal1240)) + (import "env" "ew" (func $internal1241)) + (import "env" "fw" (func $internal1242)) + (import "env" "gw" (func $internal1243)) + (import "env" "hw" (func $internal1244)) + (import "env" "iw" (func $internal1245)) + (import "env" "jw" (func $internal1246)) + (import "env" "kw" (func $internal1247)) + (import "env" "lw" (func $internal1248)) + (import "env" "mw" (func $internal1249)) + (import "env" "nw" (func $internal1250)) + (import "env" "ow" (func $internal1251)) + (import "env" "pw" (func $internal1252)) + (import "env" "qw" (func $internal1253)) + (import "env" "rw" (func $internal1254)) + (import "env" "sw" (func $internal1255)) + (import "env" "tw" (func $internal1256)) + (import "env" "uw" (func $internal1257)) + (import "env" "vw" (func $internal1258)) + (import "env" "ww" (func $internal1259)) + (import "env" "xw" (func $internal1260)) + (import "env" "yw" (func $internal1261)) + (import "env" "zw" (func $internal1262)) + (import "env" "Aw" (func $internal1263)) + (import "env" "Bw" (func $internal1264)) + (import "env" "Cw" (func $internal1265)) + (import "env" "Dw" (func $internal1266)) + (import "env" "Ew" (func $internal1267)) + (import "env" "Fw" (func $internal1268)) + (import "env" "Gw" (func $internal1269)) + (import "env" "Hw" (func $internal1270)) + (import "env" "Iw" (func $internal1271)) + (import "env" "Jw" (func $internal1272)) + (import "env" "Kw" (func $internal1273)) + (import "env" "Lw" (func $internal1274)) + (import "env" "Mw" (func $internal1275)) + (import "env" "Nw" (func $internal1276)) + (import "env" "Ow" (func $internal1277)) + (import "env" "Pw" (func $internal1278)) + (import "env" "Qw" (func $internal1279)) + (import "env" "Rw" (func $internal1280)) + (import "env" "Sw" (func $internal1281)) + (import "env" "Tw" (func $internal1282)) + (import "env" "Uw" (func $internal1283)) + (import "env" "Vw" (func $internal1284)) + (import "env" "Ww" (func $internal1285)) + (import "env" "Xw" (func $internal1286)) + (import "env" "Yw" (func $internal1287)) + (import "env" "Zw" (func $internal1288)) + (import "env" "_w" (func $internal1289)) + (import "env" "$w" (func $internal1290)) + (import "env" "ax" (func $internal1291)) + (import "env" "bx" (func $internal1292)) + (import "env" "cx" (func $internal1293)) + (import "env" "dx" (func $internal1294)) + (import "env" "ex" (func $internal1295)) + (import "env" "fx" (func $internal1296)) + (import "env" "gx" (func $internal1297)) + (import "env" "hx" (func $internal1298)) + (import "env" "ix" (func $internal1299)) + (import "env" "jx" (func $internal1300)) + (import "env" "kx" (func $internal1301)) + (import "env" "lx" (func $internal1302)) + (import "env" "mx" (func $internal1303)) + (import "env" "nx" (func $internal1304)) + (import "env" "ox" (func $internal1305)) + (import "env" "px" (func $internal1306)) + (import "env" "qx" (func $internal1307)) + (import "env" "rx" (func $internal1308)) + (import "env" "sx" (func $internal1309)) + (import "env" "tx" (func $internal1310)) + (import "env" "ux" (func $internal1311)) + (import "env" "vx" (func $internal1312)) + (import "env" "wx" (func $internal1313)) + (import "env" "xx" (func $internal1314)) + (import "env" "yx" (func $internal1315)) + (import "env" "zx" (func $internal1316)) + (import "env" "Ax" (func $internal1317)) + (import "env" "Bx" (func $internal1318)) + (import "env" "Cx" (func $internal1319)) + (import "env" "Dx" (func $internal1320)) + (import "env" "Ex" (func $internal1321)) + (import "env" "Fx" (func $internal1322)) + (import "env" "Gx" (func $internal1323)) + (import "env" "Hx" (func $internal1324)) + (import "env" "Ix" (func $internal1325)) + (import "env" "Jx" (func $internal1326)) + (import "env" "Kx" (func $internal1327)) + (import "env" "Lx" (func $internal1328)) + (import "env" "Mx" (func $internal1329)) + (import "env" "Nx" (func $internal1330)) + (import "env" "Ox" (func $internal1331)) + (import "env" "Px" (func $internal1332)) + (import "env" "Qx" (func $internal1333)) + (import "env" "Rx" (func $internal1334)) + (import "env" "Sx" (func $internal1335)) + (import "env" "Tx" (func $internal1336)) + (import "env" "Ux" (func $internal1337)) + (import "env" "Vx" (func $internal1338)) + (import "env" "Wx" (func $internal1339)) + (import "env" "Xx" (func $internal1340)) + (import "env" "Yx" (func $internal1341)) + (import "env" "Zx" (func $internal1342)) + (import "env" "_x" (func $internal1343)) + (import "env" "$x" (func $internal1344)) + (import "env" "ay" (func $internal1345)) + (import "env" "by" (func $internal1346)) + (import "env" "cy" (func $internal1347)) + (import "env" "dy" (func $internal1348)) + (import "env" "ey" (func $internal1349)) + (import "env" "fy" (func $internal1350)) + (import "env" "gy" (func $internal1351)) + (import "env" "hy" (func $internal1352)) + (import "env" "iy" (func $internal1353)) + (import "env" "jy" (func $internal1354)) + (import "env" "ky" (func $internal1355)) + (import "env" "ly" (func $internal1356)) + (import "env" "my" (func $internal1357)) + (import "env" "ny" (func $internal1358)) + (import "env" "oy" (func $internal1359)) + (import "env" "py" (func $internal1360)) + (import "env" "qy" (func $internal1361)) + (import "env" "ry" (func $internal1362)) + (import "env" "sy" (func $internal1363)) + (import "env" "ty" (func $internal1364)) + (import "env" "uy" (func $internal1365)) + (import "env" "vy" (func $internal1366)) + (import "env" "wy" (func $internal1367)) + (import "env" "xy" (func $internal1368)) + (import "env" "yy" (func $internal1369)) + (import "env" "zy" (func $internal1370)) + (import "env" "Ay" (func $internal1371)) + (import "env" "By" (func $internal1372)) + (import "env" "Cy" (func $internal1373)) + (import "env" "Dy" (func $internal1374)) + (import "env" "Ey" (func $internal1375)) + (import "env" "Fy" (func $internal1376)) + (import "env" "Gy" (func $internal1377)) + (import "env" "Hy" (func $internal1378)) + (import "env" "Iy" (func $internal1379)) + (import "env" "Jy" (func $internal1380)) + (import "env" "Ky" (func $internal1381)) + (import "env" "Ly" (func $internal1382)) + (import "env" "My" (func $internal1383)) + (import "env" "Ny" (func $internal1384)) + (import "env" "Oy" (func $internal1385)) + (import "env" "Py" (func $internal1386)) + (import "env" "Qy" (func $internal1387)) + (import "env" "Ry" (func $internal1388)) + (import "env" "Sy" (func $internal1389)) + (import "env" "Ty" (func $internal1390)) + (import "env" "Uy" (func $internal1391)) + (import "env" "Vy" (func $internal1392)) + (import "env" "Wy" (func $internal1393)) + (import "env" "Xy" (func $internal1394)) + (import "env" "Yy" (func $internal1395)) + (import "env" "Zy" (func $internal1396)) + (import "env" "_y" (func $internal1397)) + (import "env" "$y" (func $internal1398)) + (import "env" "az" (func $internal1399)) + (import "env" "bz" (func $internal1400)) + (import "env" "cz" (func $internal1401)) + (import "env" "dz" (func $internal1402)) + (import "env" "ez" (func $internal1403)) + (import "env" "fz" (func $internal1404)) + (import "env" "gz" (func $internal1405)) + (import "env" "hz" (func $internal1406)) + (import "env" "iz" (func $internal1407)) + (import "env" "jz" (func $internal1408)) + (import "env" "kz" (func $internal1409)) + (import "env" "lz" (func $internal1410)) + (import "env" "mz" (func $internal1411)) + (import "env" "nz" (func $internal1412)) + (import "env" "oz" (func $internal1413)) + (import "env" "pz" (func $internal1414)) + (import "env" "qz" (func $internal1415)) + (import "env" "rz" (func $internal1416)) + (import "env" "sz" (func $internal1417)) + (import "env" "tz" (func $internal1418)) + (import "env" "uz" (func $internal1419)) + (import "env" "vz" (func $internal1420)) + (import "env" "wz" (func $internal1421)) + (import "env" "xz" (func $internal1422)) + (import "env" "yz" (func $internal1423)) + (import "env" "zz" (func $internal1424)) + (import "env" "Az" (func $internal1425)) + (import "env" "Bz" (func $internal1426)) + (import "env" "Cz" (func $internal1427)) + (import "env" "Dz" (func $internal1428)) + (import "env" "Ez" (func $internal1429)) + (import "env" "Fz" (func $internal1430)) + (import "env" "Gz" (func $internal1431)) + (import "env" "Hz" (func $internal1432)) + (import "env" "Iz" (func $internal1433)) + (import "env" "Jz" (func $internal1434)) + (import "env" "Kz" (func $internal1435)) + (import "env" "Lz" (func $internal1436)) + (import "env" "Mz" (func $internal1437)) + (import "env" "Nz" (func $internal1438)) + (import "env" "Oz" (func $internal1439)) + (import "env" "Pz" (func $internal1440)) + (import "env" "Qz" (func $internal1441)) + (import "env" "Rz" (func $internal1442)) + (import "env" "Sz" (func $internal1443)) + (import "env" "Tz" (func $internal1444)) + (import "env" "Uz" (func $internal1445)) + (import "env" "Vz" (func $internal1446)) + (import "env" "Wz" (func $internal1447)) + (import "env" "Xz" (func $internal1448)) + (import "env" "Yz" (func $internal1449)) + (import "env" "Zz" (func $internal1450)) + (import "env" "_z" (func $internal1451)) + (import "env" "$z" (func $internal1452)) + (import "env" "aA" (func $internal1453)) + (import "env" "bA" (func $internal1454)) + (import "env" "cA" (func $internal1455)) + (import "env" "dA" (func $internal1456)) + (import "env" "eA" (func $internal1457)) + (import "env" "fA" (func $internal1458)) + (import "env" "gA" (func $internal1459)) + (import "env" "hA" (func $internal1460)) + (import "env" "iA" (func $internal1461)) + (import "env" "jA" (func $internal1462)) + (import "env" "kA" (func $internal1463)) + (import "env" "lA" (func $internal1464)) + (import "env" "mA" (func $internal1465)) + (import "env" "nA" (func $internal1466)) + (import "env" "oA" (func $internal1467)) + (import "env" "pA" (func $internal1468)) + (import "env" "qA" (func $internal1469)) + (import "env" "rA" (func $internal1470)) + (import "env" "sA" (func $internal1471)) + (import "env" "tA" (func $internal1472)) + (import "env" "uA" (func $internal1473)) + (import "env" "vA" (func $internal1474)) + (import "env" "wA" (func $internal1475)) + (import "env" "xA" (func $internal1476)) + (import "env" "yA" (func $internal1477)) + (import "env" "zA" (func $internal1478)) + (import "env" "AA" (func $internal1479)) + (import "env" "BA" (func $internal1480)) + (import "env" "CA" (func $internal1481)) + (import "env" "DA" (func $internal1482)) + (import "env" "EA" (func $internal1483)) + (import "env" "FA" (func $internal1484)) + (import "env" "GA" (func $internal1485)) + (import "env" "HA" (func $internal1486)) + (import "env" "IA" (func $internal1487)) + (import "env" "JA" (func $internal1488)) + (import "env" "KA" (func $internal1489)) + (import "env" "LA" (func $internal1490)) + (import "env" "MA" (func $internal1491)) + (import "env" "NA" (func $internal1492)) + (import "env" "OA" (func $internal1493)) + (import "env" "PA" (func $internal1494)) + (import "env" "QA" (func $internal1495)) + (import "env" "RA" (func $internal1496)) + (import "env" "SA" (func $internal1497)) + (import "env" "TA" (func $internal1498)) + (import "env" "UA" (func $internal1499)) + (import "env" "VA" (func $internal1500)) + (import "env" "WA" (func $internal1501)) + (import "env" "XA" (func $internal1502)) + (import "env" "YA" (func $internal1503)) + (import "env" "ZA" (func $internal1504)) + (import "env" "_A" (func $internal1505)) + (import "env" "$A" (func $internal1506)) + (import "env" "aB" (func $internal1507)) + (import "env" "bB" (func $internal1508)) + (import "env" "cB" (func $internal1509)) + (import "env" "dB" (func $internal1510)) + (import "env" "eB" (func $internal1511)) + (import "env" "fB" (func $internal1512)) + (import "env" "gB" (func $internal1513)) + (import "env" "hB" (func $internal1514)) + (import "env" "iB" (func $internal1515)) + (import "env" "jB" (func $internal1516)) + (import "env" "kB" (func $internal1517)) + (import "env" "lB" (func $internal1518)) + (import "env" "mB" (func $internal1519)) + (import "env" "nB" (func $internal1520)) + (import "env" "oB" (func $internal1521)) + (import "env" "pB" (func $internal1522)) + (import "env" "qB" (func $internal1523)) + (import "env" "rB" (func $internal1524)) + (import "env" "sB" (func $internal1525)) + (import "env" "tB" (func $internal1526)) + (import "env" "uB" (func $internal1527)) + (import "env" "vB" (func $internal1528)) + (import "env" "wB" (func $internal1529)) + (import "env" "xB" (func $internal1530)) + (import "env" "yB" (func $internal1531)) + (import "env" "zB" (func $internal1532)) + (import "env" "AB" (func $internal1533)) + (import "env" "BB" (func $internal1534)) + (import "env" "CB" (func $internal1535)) + (import "env" "DB" (func $internal1536)) + (import "env" "EB" (func $internal1537)) + (import "env" "FB" (func $internal1538)) + (import "env" "GB" (func $internal1539)) + (import "env" "HB" (func $internal1540)) + (import "env" "IB" (func $internal1541)) + (import "env" "JB" (func $internal1542)) + (import "env" "KB" (func $internal1543)) + (import "env" "LB" (func $internal1544)) + (import "env" "MB" (func $internal1545)) + (import "env" "NB" (func $internal1546)) + (import "env" "OB" (func $internal1547)) + (import "env" "PB" (func $internal1548)) + (import "env" "QB" (func $internal1549)) + (import "env" "RB" (func $internal1550)) + (import "env" "SB" (func $internal1551)) + (import "env" "TB" (func $internal1552)) + (import "env" "UB" (func $internal1553)) + (import "env" "VB" (func $internal1554)) + (import "env" "WB" (func $internal1555)) + (import "env" "XB" (func $internal1556)) + (import "env" "YB" (func $internal1557)) + (import "env" "ZB" (func $internal1558)) + (import "env" "_B" (func $internal1559)) + (import "env" "$B" (func $internal1560)) + (import "env" "aC" (func $internal1561)) + (import "env" "bC" (func $internal1562)) + (import "env" "cC" (func $internal1563)) + (import "env" "dC" (func $internal1564)) + (import "env" "eC" (func $internal1565)) + (import "env" "fC" (func $internal1566)) + (import "env" "gC" (func $internal1567)) + (import "env" "hC" (func $internal1568)) + (import "env" "iC" (func $internal1569)) + (import "env" "jC" (func $internal1570)) + (import "env" "kC" (func $internal1571)) + (import "env" "lC" (func $internal1572)) + (import "env" "mC" (func $internal1573)) + (import "env" "nC" (func $internal1574)) + (import "env" "oC" (func $internal1575)) + (import "env" "pC" (func $internal1576)) + (import "env" "qC" (func $internal1577)) + (import "env" "rC" (func $internal1578)) + (import "env" "sC" (func $internal1579)) + (import "env" "tC" (func $internal1580)) + (import "env" "uC" (func $internal1581)) + (import "env" "vC" (func $internal1582)) + (import "env" "wC" (func $internal1583)) + (import "env" "xC" (func $internal1584)) + (import "env" "yC" (func $internal1585)) + (import "env" "zC" (func $internal1586)) + (import "env" "AC" (func $internal1587)) + (import "env" "BC" (func $internal1588)) + (import "env" "CC" (func $internal1589)) + (import "env" "DC" (func $internal1590)) + (import "env" "EC" (func $internal1591)) + (import "env" "FC" (func $internal1592)) + (import "env" "GC" (func $internal1593)) + (import "env" "HC" (func $internal1594)) + (import "env" "IC" (func $internal1595)) + (import "env" "JC" (func $internal1596)) + (import "env" "KC" (func $internal1597)) + (import "env" "LC" (func $internal1598)) + (import "env" "MC" (func $internal1599)) + (import "env" "NC" (func $internal1600)) + (import "env" "OC" (func $internal1601)) + (import "env" "PC" (func $internal1602)) + (import "env" "QC" (func $internal1603)) + (import "env" "RC" (func $internal1604)) + (import "env" "SC" (func $internal1605)) + (import "env" "TC" (func $internal1606)) + (import "env" "UC" (func $internal1607)) + (import "env" "VC" (func $internal1608)) + (import "env" "WC" (func $internal1609)) + (import "env" "XC" (func $internal1610)) + (import "env" "YC" (func $internal1611)) + (import "env" "ZC" (func $internal1612)) + (import "env" "_C" (func $internal1613)) + (import "env" "$C" (func $internal1614)) + (import "env" "aD" (func $internal1615)) + (import "env" "bD" (func $internal1616)) + (import "env" "cD" (func $internal1617)) + (import "env" "dD" (func $internal1618)) + (import "env" "eD" (func $internal1619)) + (import "env" "fD" (func $internal1620)) + (import "env" "gD" (func $internal1621)) + (import "env" "hD" (func $internal1622)) + (import "env" "iD" (func $internal1623)) + (import "env" "jD" (func $internal1624)) + (import "env" "kD" (func $internal1625)) + (import "env" "lD" (func $internal1626)) + (import "env" "mD" (func $internal1627)) + (import "env" "nD" (func $internal1628)) + (import "env" "oD" (func $internal1629)) + (import "env" "pD" (func $internal1630)) + (import "env" "qD" (func $internal1631)) + (import "env" "rD" (func $internal1632)) + (import "env" "sD" (func $internal1633)) + (import "env" "tD" (func $internal1634)) + (import "env" "uD" (func $internal1635)) + (import "env" "vD" (func $internal1636)) + (import "env" "wD" (func $internal1637)) + (import "env" "xD" (func $internal1638)) + (import "env" "yD" (func $internal1639)) + (import "env" "zD" (func $internal1640)) + (import "env" "AD" (func $internal1641)) + (import "env" "BD" (func $internal1642)) + (import "env" "CD" (func $internal1643)) + (import "env" "DD" (func $internal1644)) + (import "env" "ED" (func $internal1645)) + (import "env" "FD" (func $internal1646)) + (import "env" "GD" (func $internal1647)) + (import "env" "HD" (func $internal1648)) + (import "env" "ID" (func $internal1649)) + (import "env" "JD" (func $internal1650)) + (import "env" "KD" (func $internal1651)) + (import "env" "LD" (func $internal1652)) + (import "env" "MD" (func $internal1653)) + (import "env" "ND" (func $internal1654)) + (import "env" "OD" (func $internal1655)) + (import "env" "PD" (func $internal1656)) + (import "env" "QD" (func $internal1657)) + (import "env" "RD" (func $internal1658)) + (import "env" "SD" (func $internal1659)) + (import "env" "TD" (func $internal1660)) + (import "env" "UD" (func $internal1661)) + (import "env" "VD" (func $internal1662)) + (import "env" "WD" (func $internal1663)) + (import "env" "XD" (func $internal1664)) + (import "env" "YD" (func $internal1665)) + (import "env" "ZD" (func $internal1666)) + (import "env" "_D" (func $internal1667)) + (import "env" "$D" (func $internal1668)) + (import "env" "aE" (func $internal1669)) + (import "env" "bE" (func $internal1670)) + (import "env" "cE" (func $internal1671)) + (import "env" "dE" (func $internal1672)) + (import "env" "eE" (func $internal1673)) + (import "env" "fE" (func $internal1674)) + (import "env" "gE" (func $internal1675)) + (import "env" "hE" (func $internal1676)) + (import "env" "iE" (func $internal1677)) + (import "env" "jE" (func $internal1678)) + (import "env" "kE" (func $internal1679)) + (import "env" "lE" (func $internal1680)) + (import "env" "mE" (func $internal1681)) + (import "env" "nE" (func $internal1682)) + (import "env" "oE" (func $internal1683)) + (import "env" "pE" (func $internal1684)) + (import "env" "qE" (func $internal1685)) + (import "env" "rE" (func $internal1686)) + (import "env" "sE" (func $internal1687)) + (import "env" "tE" (func $internal1688)) + (import "env" "uE" (func $internal1689)) + (import "env" "vE" (func $internal1690)) + (import "env" "wE" (func $internal1691)) + (import "env" "xE" (func $internal1692)) + (import "env" "yE" (func $internal1693)) + (import "env" "zE" (func $internal1694)) + (import "env" "AE" (func $internal1695)) + (import "env" "BE" (func $internal1696)) + (import "env" "CE" (func $internal1697)) + (import "env" "DE" (func $internal1698)) + (import "env" "EE" (func $internal1699)) + (import "env" "FE" (func $internal1700)) + (import "env" "GE" (func $internal1701)) + (import "env" "HE" (func $internal1702)) + (import "env" "IE" (func $internal1703)) + (import "env" "JE" (func $internal1704)) + (import "env" "KE" (func $internal1705)) + (import "env" "LE" (func $internal1706)) + (import "env" "ME" (func $internal1707)) + (import "env" "NE" (func $internal1708)) + (import "env" "OE" (func $internal1709)) + (import "env" "PE" (func $internal1710)) + (import "env" "QE" (func $internal1711)) + (import "env" "RE" (func $internal1712)) + (import "env" "SE" (func $internal1713)) + (import "env" "TE" (func $internal1714)) + (import "env" "UE" (func $internal1715)) + (import "env" "VE" (func $internal1716)) + (import "env" "WE" (func $internal1717)) + (import "env" "XE" (func $internal1718)) + (import "env" "YE" (func $internal1719)) + (import "env" "ZE" (func $internal1720)) + (import "env" "_E" (func $internal1721)) + (import "env" "$E" (func $internal1722)) + (import "env" "aF" (func $internal1723)) + (import "env" "bF" (func $internal1724)) + (import "env" "cF" (func $internal1725)) + (import "env" "dF" (func $internal1726)) + (import "env" "eF" (func $internal1727)) + (import "env" "fF" (func $internal1728)) + (import "env" "gF" (func $internal1729)) + (import "env" "hF" (func $internal1730)) + (import "env" "iF" (func $internal1731)) + (import "env" "jF" (func $internal1732)) + (import "env" "kF" (func $internal1733)) + (import "env" "lF" (func $internal1734)) + (import "env" "mF" (func $internal1735)) + (import "env" "nF" (func $internal1736)) + (import "env" "oF" (func $internal1737)) + (import "env" "pF" (func $internal1738)) + (import "env" "qF" (func $internal1739)) + (import "env" "rF" (func $internal1740)) + (import "env" "sF" (func $internal1741)) + (import "env" "tF" (func $internal1742)) + (import "env" "uF" (func $internal1743)) + (import "env" "vF" (func $internal1744)) + (import "env" "wF" (func $internal1745)) + (import "env" "xF" (func $internal1746)) + (import "env" "yF" (func $internal1747)) + (import "env" "zF" (func $internal1748)) + (import "env" "AF" (func $internal1749)) + (import "env" "BF" (func $internal1750)) + (import "env" "CF" (func $internal1751)) + (import "env" "DF" (func $internal1752)) + (import "env" "EF" (func $internal1753)) + (import "env" "FF" (func $internal1754)) + (import "env" "GF" (func $internal1755)) + (import "env" "HF" (func $internal1756)) + (import "env" "IF" (func $internal1757)) + (import "env" "JF" (func $internal1758)) + (import "env" "KF" (func $internal1759)) + (import "env" "LF" (func $internal1760)) + (import "env" "MF" (func $internal1761)) + (import "env" "NF" (func $internal1762)) + (import "env" "OF" (func $internal1763)) + (import "env" "PF" (func $internal1764)) + (import "env" "QF" (func $internal1765)) + (import "env" "RF" (func $internal1766)) + (import "env" "SF" (func $internal1767)) + (import "env" "TF" (func $internal1768)) + (import "env" "UF" (func $internal1769)) + (import "env" "VF" (func $internal1770)) + (import "env" "WF" (func $internal1771)) + (import "env" "XF" (func $internal1772)) + (import "env" "YF" (func $internal1773)) + (import "env" "ZF" (func $internal1774)) + (import "env" "_F" (func $internal1775)) + (import "env" "$F" (func $internal1776)) + (import "env" "aG" (func $internal1777)) + (import "env" "bG" (func $internal1778)) + (import "env" "cG" (func $internal1779)) + (import "env" "dG" (func $internal1780)) + (import "env" "eG" (func $internal1781)) + (import "env" "fG" (func $internal1782)) + (import "env" "gG" (func $internal1783)) + (import "env" "hG" (func $internal1784)) + (import "env" "iG" (func $internal1785)) + (import "env" "jG" (func $internal1786)) + (import "env" "kG" (func $internal1787)) + (import "env" "lG" (func $internal1788)) + (import "env" "mG" (func $internal1789)) + (import "env" "nG" (func $internal1790)) + (import "env" "oG" (func $internal1791)) + (import "env" "pG" (func $internal1792)) + (import "env" "qG" (func $internal1793)) + (import "env" "rG" (func $internal1794)) + (import "env" "sG" (func $internal1795)) + (import "env" "tG" (func $internal1796)) + (import "env" "uG" (func $internal1797)) + (import "env" "vG" (func $internal1798)) + (import "env" "wG" (func $internal1799)) + (import "env" "xG" (func $internal1800)) + (import "env" "yG" (func $internal1801)) + (import "env" "zG" (func $internal1802)) + (import "env" "AG" (func $internal1803)) + (import "env" "BG" (func $internal1804)) + (import "env" "CG" (func $internal1805)) + (import "env" "DG" (func $internal1806)) + (import "env" "EG" (func $internal1807)) + (import "env" "FG" (func $internal1808)) + (import "env" "GG" (func $internal1809)) + (import "env" "HG" (func $internal1810)) + (import "env" "IG" (func $internal1811)) + (import "env" "JG" (func $internal1812)) + (import "env" "KG" (func $internal1813)) + (import "env" "LG" (func $internal1814)) + (import "env" "MG" (func $internal1815)) + (import "env" "NG" (func $internal1816)) + (import "env" "OG" (func $internal1817)) + (import "env" "PG" (func $internal1818)) + (import "env" "QG" (func $internal1819)) + (import "env" "RG" (func $internal1820)) + (import "env" "SG" (func $internal1821)) + (import "env" "TG" (func $internal1822)) + (import "env" "UG" (func $internal1823)) + (import "env" "VG" (func $internal1824)) + (import "env" "WG" (func $internal1825)) + (import "env" "XG" (func $internal1826)) + (import "env" "YG" (func $internal1827)) + (import "env" "ZG" (func $internal1828)) + (import "env" "_G" (func $internal1829)) + (import "env" "$G" (func $internal1830)) + (import "env" "aH" (func $internal1831)) + (import "env" "bH" (func $internal1832)) + (import "env" "cH" (func $internal1833)) + (import "env" "dH" (func $internal1834)) + (import "env" "eH" (func $internal1835)) + (import "env" "fH" (func $internal1836)) + (import "env" "gH" (func $internal1837)) + (import "env" "hH" (func $internal1838)) + (import "env" "iH" (func $internal1839)) + (import "env" "jH" (func $internal1840)) + (import "env" "kH" (func $internal1841)) + (import "env" "lH" (func $internal1842)) + (import "env" "mH" (func $internal1843)) + (import "env" "nH" (func $internal1844)) + (import "env" "oH" (func $internal1845)) + (import "env" "pH" (func $internal1846)) + (import "env" "qH" (func $internal1847)) + (import "env" "rH" (func $internal1848)) + (import "env" "sH" (func $internal1849)) + (import "env" "tH" (func $internal1850)) + (import "env" "uH" (func $internal1851)) + (import "env" "vH" (func $internal1852)) + (import "env" "wH" (func $internal1853)) + (import "env" "xH" (func $internal1854)) + (import "env" "yH" (func $internal1855)) + (import "env" "zH" (func $internal1856)) + (import "env" "AH" (func $internal1857)) + (import "env" "BH" (func $internal1858)) + (import "env" "CH" (func $internal1859)) + (import "env" "DH" (func $internal1860)) + (import "env" "EH" (func $internal1861)) + (import "env" "FH" (func $internal1862)) + (import "env" "GH" (func $internal1863)) + (import "env" "HH" (func $internal1864)) + (import "env" "IH" (func $internal1865)) + (import "env" "JH" (func $internal1866)) + (import "env" "KH" (func $internal1867)) + (import "env" "LH" (func $internal1868)) + (import "env" "MH" (func $internal1869)) + (import "env" "NH" (func $internal1870)) + (import "env" "OH" (func $internal1871)) + (import "env" "PH" (func $internal1872)) + (import "env" "QH" (func $internal1873)) + (import "env" "RH" (func $internal1874)) + (import "env" "SH" (func $internal1875)) + (import "env" "TH" (func $internal1876)) + (import "env" "UH" (func $internal1877)) + (import "env" "VH" (func $internal1878)) + (import "env" "WH" (func $internal1879)) + (import "env" "XH" (func $internal1880)) + (import "env" "YH" (func $internal1881)) + (import "env" "ZH" (func $internal1882)) + (import "env" "_H" (func $internal1883)) + (import "env" "$H" (func $internal1884)) + (import "env" "aI" (func $internal1885)) + (import "env" "bI" (func $internal1886)) + (import "env" "cI" (func $internal1887)) + (import "env" "dI" (func $internal1888)) + (import "env" "eI" (func $internal1889)) + (import "env" "fI" (func $internal1890)) + (import "env" "gI" (func $internal1891)) + (import "env" "hI" (func $internal1892)) + (import "env" "iI" (func $internal1893)) + (import "env" "jI" (func $internal1894)) + (import "env" "kI" (func $internal1895)) + (import "env" "lI" (func $internal1896)) + (import "env" "mI" (func $internal1897)) + (import "env" "nI" (func $internal1898)) + (import "env" "oI" (func $internal1899)) + (import "env" "pI" (func $internal1900)) + (import "env" "qI" (func $internal1901)) + (import "env" "rI" (func $internal1902)) + (import "env" "sI" (func $internal1903)) + (import "env" "tI" (func $internal1904)) + (import "env" "uI" (func $internal1905)) + (import "env" "vI" (func $internal1906)) + (import "env" "wI" (func $internal1907)) + (import "env" "xI" (func $internal1908)) + (import "env" "yI" (func $internal1909)) + (import "env" "zI" (func $internal1910)) + (import "env" "AI" (func $internal1911)) + (import "env" "BI" (func $internal1912)) + (import "env" "CI" (func $internal1913)) + (import "env" "DI" (func $internal1914)) + (import "env" "EI" (func $internal1915)) + (import "env" "FI" (func $internal1916)) + (import "env" "GI" (func $internal1917)) + (import "env" "HI" (func $internal1918)) + (import "env" "II" (func $internal1919)) + (import "env" "JI" (func $internal1920)) + (import "env" "KI" (func $internal1921)) + (import "env" "LI" (func $internal1922)) + (import "env" "MI" (func $internal1923)) + (import "env" "NI" (func $internal1924)) + (import "env" "OI" (func $internal1925)) + (import "env" "PI" (func $internal1926)) + (import "env" "QI" (func $internal1927)) + (import "env" "RI" (func $internal1928)) + (import "env" "SI" (func $internal1929)) + (import "env" "TI" (func $internal1930)) + (import "env" "UI" (func $internal1931)) + (import "env" "VI" (func $internal1932)) + (import "env" "WI" (func $internal1933)) + (import "env" "XI" (func $internal1934)) + (import "env" "YI" (func $internal1935)) + (import "env" "ZI" (func $internal1936)) + (import "env" "_I" (func $internal1937)) + (import "env" "$I" (func $internal1938)) + (import "env" "aJ" (func $internal1939)) + (import "env" "bJ" (func $internal1940)) + (import "env" "cJ" (func $internal1941)) + (import "env" "dJ" (func $internal1942)) + (import "env" "eJ" (func $internal1943)) + (import "env" "fJ" (func $internal1944)) + (import "env" "gJ" (func $internal1945)) + (import "env" "hJ" (func $internal1946)) + (import "env" "iJ" (func $internal1947)) + (import "env" "jJ" (func $internal1948)) + (import "env" "kJ" (func $internal1949)) + (import "env" "lJ" (func $internal1950)) + (import "env" "mJ" (func $internal1951)) + (import "env" "nJ" (func $internal1952)) + (import "env" "oJ" (func $internal1953)) + (import "env" "pJ" (func $internal1954)) + (import "env" "qJ" (func $internal1955)) + (import "env" "rJ" (func $internal1956)) + (import "env" "sJ" (func $internal1957)) + (import "env" "tJ" (func $internal1958)) + (import "env" "uJ" (func $internal1959)) + (import "env" "vJ" (func $internal1960)) + (import "env" "wJ" (func $internal1961)) + (import "env" "xJ" (func $internal1962)) + (import "env" "yJ" (func $internal1963)) + (import "env" "zJ" (func $internal1964)) + (import "env" "AJ" (func $internal1965)) + (import "env" "BJ" (func $internal1966)) + (import "env" "CJ" (func $internal1967)) + (import "env" "DJ" (func $internal1968)) + (import "env" "EJ" (func $internal1969)) + (import "env" "FJ" (func $internal1970)) + (import "env" "GJ" (func $internal1971)) + (import "env" "HJ" (func $internal1972)) + (import "env" "IJ" (func $internal1973)) + (import "env" "JJ" (func $internal1974)) + (import "env" "KJ" (func $internal1975)) + (import "env" "LJ" (func $internal1976)) + (import "env" "MJ" (func $internal1977)) + (import "env" "NJ" (func $internal1978)) + (import "env" "OJ" (func $internal1979)) + (import "env" "PJ" (func $internal1980)) + (import "env" "QJ" (func $internal1981)) + (import "env" "RJ" (func $internal1982)) + (import "env" "SJ" (func $internal1983)) + (import "env" "TJ" (func $internal1984)) + (import "env" "UJ" (func $internal1985)) + (import "env" "VJ" (func $internal1986)) + (import "env" "WJ" (func $internal1987)) + (import "env" "XJ" (func $internal1988)) + (import "env" "YJ" (func $internal1989)) + (import "env" "ZJ" (func $internal1990)) + (import "env" "_J" (func $internal1991)) + (import "env" "$J" (func $internal1992)) + (import "env" "aK" (func $internal1993)) + (import "env" "bK" (func $internal1994)) + (import "env" "cK" (func $internal1995)) + (import "env" "dK" (func $internal1996)) + (import "env" "eK" (func $internal1997)) + (import "env" "fK" (func $internal1998)) + (import "env" "gK" (func $internal1999)) + (import "env" "hK" (func $internal2000)) + (import "env" "iK" (func $internal2001)) + (import "env" "jK" (func $internal2002)) + (import "env" "kK" (func $internal2003)) + (import "env" "lK" (func $internal2004)) + (import "env" "mK" (func $internal2005)) + (import "env" "nK" (func $internal2006)) + (import "env" "oK" (func $internal2007)) + (import "env" "pK" (func $internal2008)) + (import "env" "qK" (func $internal2009)) + (import "env" "rK" (func $internal2010)) + (import "env" "sK" (func $internal2011)) + (import "env" "tK" (func $internal2012)) + (import "env" "uK" (func $internal2013)) + (import "env" "vK" (func $internal2014)) + (import "env" "wK" (func $internal2015)) + (import "env" "xK" (func $internal2016)) + (import "env" "yK" (func $internal2017)) + (import "env" "zK" (func $internal2018)) + (import "env" "AK" (func $internal2019)) + (import "env" "BK" (func $internal2020)) + (import "env" "CK" (func $internal2021)) + (import "env" "DK" (func $internal2022)) + (import "env" "EK" (func $internal2023)) + (import "env" "FK" (func $internal2024)) + (import "env" "GK" (func $internal2025)) + (import "env" "HK" (func $internal2026)) + (import "env" "IK" (func $internal2027)) + (import "env" "JK" (func $internal2028)) + (import "env" "KK" (func $internal2029)) + (import "env" "LK" (func $internal2030)) + (import "env" "MK" (func $internal2031)) + (import "env" "NK" (func $internal2032)) + (import "env" "OK" (func $internal2033)) + (import "env" "PK" (func $internal2034)) + (import "env" "QK" (func $internal2035)) + (import "env" "RK" (func $internal2036)) + (import "env" "SK" (func $internal2037)) + (import "env" "TK" (func $internal2038)) + (import "env" "UK" (func $internal2039)) + (import "env" "VK" (func $internal2040)) + (import "env" "WK" (func $internal2041)) + (import "env" "XK" (func $internal2042)) + (import "env" "YK" (func $internal2043)) + (import "env" "ZK" (func $internal2044)) + (import "env" "_K" (func $internal2045)) + (import "env" "$K" (func $internal2046)) + (import "env" "aL" (func $internal2047)) + (import "env" "bL" (func $internal2048)) + (import "env" "cL" (func $internal2049)) + (import "env" "dL" (func $internal2050)) + (import "env" "eL" (func $internal2051)) + (import "env" "fL" (func $internal2052)) + (import "env" "gL" (func $internal2053)) + (import "env" "hL" (func $internal2054)) + (import "env" "iL" (func $internal2055)) + (import "env" "jL" (func $internal2056)) + (import "env" "kL" (func $internal2057)) + (import "env" "lL" (func $internal2058)) + (import "env" "mL" (func $internal2059)) + (import "env" "nL" (func $internal2060)) + (import "env" "oL" (func $internal2061)) + (import "env" "pL" (func $internal2062)) + (import "env" "qL" (func $internal2063)) + (import "env" "rL" (func $internal2064)) + (import "env" "sL" (func $internal2065)) + (import "env" "tL" (func $internal2066)) + (import "env" "uL" (func $internal2067)) + (import "env" "vL" (func $internal2068)) + (import "env" "wL" (func $internal2069)) + (import "env" "xL" (func $internal2070)) + (import "env" "yL" (func $internal2071)) + (import "env" "zL" (func $internal2072)) + (import "env" "AL" (func $internal2073)) + (import "env" "BL" (func $internal2074)) + (import "env" "CL" (func $internal2075)) + (import "env" "DL" (func $internal2076)) + (import "env" "EL" (func $internal2077)) + (import "env" "FL" (func $internal2078)) + (import "env" "GL" (func $internal2079)) + (import "env" "HL" (func $internal2080)) + (import "env" "IL" (func $internal2081)) + (import "env" "JL" (func $internal2082)) + (import "env" "KL" (func $internal2083)) + (import "env" "LL" (func $internal2084)) + (import "env" "ML" (func $internal2085)) + (import "env" "NL" (func $internal2086)) + (import "env" "OL" (func $internal2087)) + (import "env" "PL" (func $internal2088)) + (import "env" "QL" (func $internal2089)) + (import "env" "RL" (func $internal2090)) + (import "env" "SL" (func $internal2091)) + (import "env" "TL" (func $internal2092)) + (import "env" "UL" (func $internal2093)) + (import "env" "VL" (func $internal2094)) + (import "env" "WL" (func $internal2095)) + (import "env" "XL" (func $internal2096)) + (import "env" "YL" (func $internal2097)) + (import "env" "ZL" (func $internal2098)) + (import "env" "_L" (func $internal2099)) + (import "env" "$L" (func $internal2100)) + (import "env" "aM" (func $internal2101)) + (import "env" "bM" (func $internal2102)) + (import "env" "cM" (func $internal2103)) + (import "env" "dM" (func $internal2104)) + (import "env" "eM" (func $internal2105)) + (import "env" "fM" (func $internal2106)) + (import "env" "gM" (func $internal2107)) + (import "env" "hM" (func $internal2108)) + (import "env" "iM" (func $internal2109)) + (import "env" "jM" (func $internal2110)) + (import "env" "kM" (func $internal2111)) + (import "env" "lM" (func $internal2112)) + (import "env" "mM" (func $internal2113)) + (import "env" "nM" (func $internal2114)) + (import "env" "oM" (func $internal2115)) + (import "env" "pM" (func $internal2116)) + (import "env" "qM" (func $internal2117)) + (import "env" "rM" (func $internal2118)) + (import "env" "sM" (func $internal2119)) + (import "env" "tM" (func $internal2120)) + (import "env" "uM" (func $internal2121)) + (import "env" "vM" (func $internal2122)) + (import "env" "wM" (func $internal2123)) + (import "env" "xM" (func $internal2124)) + (import "env" "yM" (func $internal2125)) + (import "env" "zM" (func $internal2126)) + (import "env" "AM" (func $internal2127)) + (import "env" "BM" (func $internal2128)) + (import "env" "CM" (func $internal2129)) + (import "env" "DM" (func $internal2130)) + (import "env" "EM" (func $internal2131)) + (import "env" "FM" (func $internal2132)) + (import "env" "GM" (func $internal2133)) + (import "env" "HM" (func $internal2134)) + (import "env" "IM" (func $internal2135)) + (import "env" "JM" (func $internal2136)) + (import "env" "KM" (func $internal2137)) + (import "env" "LM" (func $internal2138)) + (import "env" "MM" (func $internal2139)) + (import "env" "NM" (func $internal2140)) + (import "env" "OM" (func $internal2141)) + (import "env" "PM" (func $internal2142)) + (import "env" "QM" (func $internal2143)) + (import "env" "RM" (func $internal2144)) + (import "env" "SM" (func $internal2145)) + (import "env" "TM" (func $internal2146)) + (import "env" "UM" (func $internal2147)) + (import "env" "VM" (func $internal2148)) + (import "env" "WM" (func $internal2149)) + (import "env" "XM" (func $internal2150)) + (import "env" "YM" (func $internal2151)) + (import "env" "ZM" (func $internal2152)) + (import "env" "_M" (func $internal2153)) + (import "env" "$M" (func $internal2154)) + (import "env" "aN" (func $internal2155)) + (import "env" "bN" (func $internal2156)) + (import "env" "cN" (func $internal2157)) + (import "env" "dN" (func $internal2158)) + (import "env" "eN" (func $internal2159)) + (import "env" "fN" (func $internal2160)) + (import "env" "gN" (func $internal2161)) + (import "env" "hN" (func $internal2162)) + (import "env" "iN" (func $internal2163)) + (import "env" "jN" (func $internal2164)) + (import "env" "kN" (func $internal2165)) + (import "env" "lN" (func $internal2166)) + (import "env" "mN" (func $internal2167)) + (import "env" "nN" (func $internal2168)) + (import "env" "oN" (func $internal2169)) + (import "env" "pN" (func $internal2170)) + (import "env" "qN" (func $internal2171)) + (import "env" "rN" (func $internal2172)) + (import "env" "sN" (func $internal2173)) + (import "env" "tN" (func $internal2174)) + (import "env" "uN" (func $internal2175)) + (import "env" "vN" (func $internal2176)) + (import "env" "wN" (func $internal2177)) + (import "env" "xN" (func $internal2178)) + (import "env" "yN" (func $internal2179)) + (import "env" "zN" (func $internal2180)) + (import "env" "AN" (func $internal2181)) + (import "env" "BN" (func $internal2182)) + (import "env" "CN" (func $internal2183)) + (import "env" "DN" (func $internal2184)) + (import "env" "EN" (func $internal2185)) + (import "env" "FN" (func $internal2186)) + (import "env" "GN" (func $internal2187)) + (import "env" "HN" (func $internal2188)) + (import "env" "IN" (func $internal2189)) + (import "env" "JN" (func $internal2190)) + (import "env" "KN" (func $internal2191)) + (import "env" "LN" (func $internal2192)) + (import "env" "MN" (func $internal2193)) + (import "env" "NN" (func $internal2194)) + (import "env" "ON" (func $internal2195)) + (import "env" "PN" (func $internal2196)) + (import "env" "QN" (func $internal2197)) + (import "env" "RN" (func $internal2198)) + (import "env" "SN" (func $internal2199)) + (import "env" "TN" (func $internal2200)) + (import "env" "UN" (func $internal2201)) + (import "env" "VN" (func $internal2202)) + (import "env" "WN" (func $internal2203)) + (import "env" "XN" (func $internal2204)) + (import "env" "YN" (func $internal2205)) + (import "env" "ZN" (func $internal2206)) + (import "env" "_N" (func $internal2207)) + (import "env" "$N" (func $internal2208)) + (import "env" "aO" (func $internal2209)) + (import "env" "bO" (func $internal2210)) + (import "env" "cO" (func $internal2211)) + (import "env" "dO" (func $internal2212)) + (import "env" "eO" (func $internal2213)) + (import "env" "fO" (func $internal2214)) + (import "env" "gO" (func $internal2215)) + (import "env" "hO" (func $internal2216)) + (import "env" "iO" (func $internal2217)) + (import "env" "jO" (func $internal2218)) + (import "env" "kO" (func $internal2219)) + (import "env" "lO" (func $internal2220)) + (import "env" "mO" (func $internal2221)) + (import "env" "nO" (func $internal2222)) + (import "env" "oO" (func $internal2223)) + (import "env" "pO" (func $internal2224)) + (import "env" "qO" (func $internal2225)) + (import "env" "rO" (func $internal2226)) + (import "env" "sO" (func $internal2227)) + (import "env" "tO" (func $internal2228)) + (import "env" "uO" (func $internal2229)) + (import "env" "vO" (func $internal2230)) + (import "env" "wO" (func $internal2231)) + (import "env" "xO" (func $internal2232)) + (import "env" "yO" (func $internal2233)) + (import "env" "zO" (func $internal2234)) + (import "env" "AO" (func $internal2235)) + (import "env" "BO" (func $internal2236)) + (import "env" "CO" (func $internal2237)) + (import "env" "DO" (func $internal2238)) + (import "env" "EO" (func $internal2239)) + (import "env" "FO" (func $internal2240)) + (import "env" "GO" (func $internal2241)) + (import "env" "HO" (func $internal2242)) + (import "env" "IO" (func $internal2243)) + (import "env" "JO" (func $internal2244)) + (import "env" "KO" (func $internal2245)) + (import "env" "LO" (func $internal2246)) + (import "env" "MO" (func $internal2247)) + (import "env" "NO" (func $internal2248)) + (import "env" "OO" (func $internal2249)) + (import "env" "PO" (func $internal2250)) + (import "env" "QO" (func $internal2251)) + (import "env" "RO" (func $internal2252)) + (import "env" "SO" (func $internal2253)) + (import "env" "TO" (func $internal2254)) + (import "env" "UO" (func $internal2255)) + (import "env" "VO" (func $internal2256)) + (import "env" "WO" (func $internal2257)) + (import "env" "XO" (func $internal2258)) + (import "env" "YO" (func $internal2259)) + (import "env" "ZO" (func $internal2260)) + (import "env" "_O" (func $internal2261)) + (import "env" "$O" (func $internal2262)) + (import "env" "aP" (func $internal2263)) + (import "env" "bP" (func $internal2264)) + (import "env" "cP" (func $internal2265)) + (import "env" "dP" (func $internal2266)) + (import "env" "eP" (func $internal2267)) + (import "env" "fP" (func $internal2268)) + (import "env" "gP" (func $internal2269)) + (import "env" "hP" (func $internal2270)) + (import "env" "iP" (func $internal2271)) + (import "env" "jP" (func $internal2272)) + (import "env" "kP" (func $internal2273)) + (import "env" "lP" (func $internal2274)) + (import "env" "mP" (func $internal2275)) + (import "env" "nP" (func $internal2276)) + (import "env" "oP" (func $internal2277)) + (import "env" "pP" (func $internal2278)) + (import "env" "qP" (func $internal2279)) + (import "env" "rP" (func $internal2280)) + (import "env" "sP" (func $internal2281)) + (import "env" "tP" (func $internal2282)) + (import "env" "uP" (func $internal2283)) + (import "env" "vP" (func $internal2284)) + (import "env" "wP" (func $internal2285)) + (import "env" "xP" (func $internal2286)) + (import "env" "yP" (func $internal2287)) + (import "env" "zP" (func $internal2288)) + (import "env" "AP" (func $internal2289)) + (import "env" "BP" (func $internal2290)) + (import "env" "CP" (func $internal2291)) + (import "env" "DP" (func $internal2292)) + (import "env" "EP" (func $internal2293)) + (import "env" "FP" (func $internal2294)) + (import "env" "GP" (func $internal2295)) + (import "env" "HP" (func $internal2296)) + (import "env" "IP" (func $internal2297)) + (import "env" "JP" (func $internal2298)) + (import "env" "KP" (func $internal2299)) + (import "env" "LP" (func $internal2300)) + (import "env" "MP" (func $internal2301)) + (import "env" "NP" (func $internal2302)) + (import "env" "OP" (func $internal2303)) + (import "env" "PP" (func $internal2304)) + (import "env" "QP" (func $internal2305)) + (import "env" "RP" (func $internal2306)) + (import "env" "SP" (func $internal2307)) + (import "env" "TP" (func $internal2308)) + (import "env" "UP" (func $internal2309)) + (import "env" "VP" (func $internal2310)) + (import "env" "WP" (func $internal2311)) + (import "env" "XP" (func $internal2312)) + (import "env" "YP" (func $internal2313)) + (import "env" "ZP" (func $internal2314)) + (import "env" "_P" (func $internal2315)) + (import "env" "$P" (func $internal2316)) + (import "env" "aQ" (func $internal2317)) + (import "env" "bQ" (func $internal2318)) + (import "env" "cQ" (func $internal2319)) + (import "env" "dQ" (func $internal2320)) + (import "env" "eQ" (func $internal2321)) + (import "env" "fQ" (func $internal2322)) + (import "env" "gQ" (func $internal2323)) + (import "env" "hQ" (func $internal2324)) + (import "env" "iQ" (func $internal2325)) + (import "env" "jQ" (func $internal2326)) + (import "env" "kQ" (func $internal2327)) + (import "env" "lQ" (func $internal2328)) + (import "env" "mQ" (func $internal2329)) + (import "env" "nQ" (func $internal2330)) + (import "env" "oQ" (func $internal2331)) + (import "env" "pQ" (func $internal2332)) + (import "env" "qQ" (func $internal2333)) + (import "env" "rQ" (func $internal2334)) + (import "env" "sQ" (func $internal2335)) + (import "env" "tQ" (func $internal2336)) + (import "env" "uQ" (func $internal2337)) + (import "env" "vQ" (func $internal2338)) + (import "env" "wQ" (func $internal2339)) + (import "env" "xQ" (func $internal2340)) + (import "env" "yQ" (func $internal2341)) + (import "env" "zQ" (func $internal2342)) + (import "env" "AQ" (func $internal2343)) + (import "env" "BQ" (func $internal2344)) + (import "env" "CQ" (func $internal2345)) + (import "env" "DQ" (func $internal2346)) + (import "env" "EQ" (func $internal2347)) + (import "env" "FQ" (func $internal2348)) + (import "env" "GQ" (func $internal2349)) + (import "env" "HQ" (func $internal2350)) + (import "env" "IQ" (func $internal2351)) + (import "env" "JQ" (func $internal2352)) + (import "env" "KQ" (func $internal2353)) + (import "env" "LQ" (func $internal2354)) + (import "env" "MQ" (func $internal2355)) + (import "env" "NQ" (func $internal2356)) + (import "env" "OQ" (func $internal2357)) + (import "env" "PQ" (func $internal2358)) + (import "env" "QQ" (func $internal2359)) + (import "env" "RQ" (func $internal2360)) + (import "env" "SQ" (func $internal2361)) + (import "env" "TQ" (func $internal2362)) + (import "env" "UQ" (func $internal2363)) + (import "env" "VQ" (func $internal2364)) + (import "env" "WQ" (func $internal2365)) + (import "env" "XQ" (func $internal2366)) + (import "env" "YQ" (func $internal2367)) + (import "env" "ZQ" (func $internal2368)) + (import "env" "_Q" (func $internal2369)) + (import "env" "$Q" (func $internal2370)) + (import "env" "aR" (func $internal2371)) + (import "env" "bR" (func $internal2372)) + (import "env" "cR" (func $internal2373)) + (import "env" "dR" (func $internal2374)) + (import "env" "eR" (func $internal2375)) + (import "env" "fR" (func $internal2376)) + (import "env" "gR" (func $internal2377)) + (import "env" "hR" (func $internal2378)) + (import "env" "iR" (func $internal2379)) + (import "env" "jR" (func $internal2380)) + (import "env" "kR" (func $internal2381)) + (import "env" "lR" (func $internal2382)) + (import "env" "mR" (func $internal2383)) + (import "env" "nR" (func $internal2384)) + (import "env" "oR" (func $internal2385)) + (import "env" "pR" (func $internal2386)) + (import "env" "qR" (func $internal2387)) + (import "env" "rR" (func $internal2388)) + (import "env" "sR" (func $internal2389)) + (import "env" "tR" (func $internal2390)) + (import "env" "uR" (func $internal2391)) + (import "env" "vR" (func $internal2392)) + (import "env" "wR" (func $internal2393)) + (import "env" "xR" (func $internal2394)) + (import "env" "yR" (func $internal2395)) + (import "env" "zR" (func $internal2396)) + (import "env" "AR" (func $internal2397)) + (import "env" "BR" (func $internal2398)) + (import "env" "CR" (func $internal2399)) + (import "env" "DR" (func $internal2400)) + (import "env" "ER" (func $internal2401)) + (import "env" "FR" (func $internal2402)) + (import "env" "GR" (func $internal2403)) + (import "env" "HR" (func $internal2404)) + (import "env" "IR" (func $internal2405)) + (import "env" "JR" (func $internal2406)) + (import "env" "KR" (func $internal2407)) + (import "env" "LR" (func $internal2408)) + (import "env" "MR" (func $internal2409)) + (import "env" "NR" (func $internal2410)) + (import "env" "OR" (func $internal2411)) + (import "env" "PR" (func $internal2412)) + (import "env" "QR" (func $internal2413)) + (import "env" "RR" (func $internal2414)) + (import "env" "SR" (func $internal2415)) + (import "env" "TR" (func $internal2416)) + (import "env" "UR" (func $internal2417)) + (import "env" "VR" (func $internal2418)) + (import "env" "WR" (func $internal2419)) + (import "env" "XR" (func $internal2420)) + (import "env" "YR" (func $internal2421)) + (import "env" "ZR" (func $internal2422)) + (import "env" "_R" (func $internal2423)) + (import "env" "$R" (func $internal2424)) + (import "env" "aS" (func $internal2425)) + (import "env" "bS" (func $internal2426)) + (import "env" "cS" (func $internal2427)) + (import "env" "dS" (func $internal2428)) + (import "env" "eS" (func $internal2429)) + (import "env" "fS" (func $internal2430)) + (import "env" "gS" (func $internal2431)) + (import "env" "hS" (func $internal2432)) + (import "env" "iS" (func $internal2433)) + (import "env" "jS" (func $internal2434)) + (import "env" "kS" (func $internal2435)) + (import "env" "lS" (func $internal2436)) + (import "env" "mS" (func $internal2437)) + (import "env" "nS" (func $internal2438)) + (import "env" "oS" (func $internal2439)) + (import "env" "pS" (func $internal2440)) + (import "env" "qS" (func $internal2441)) + (import "env" "rS" (func $internal2442)) + (import "env" "sS" (func $internal2443)) + (import "env" "tS" (func $internal2444)) + (import "env" "uS" (func $internal2445)) + (import "env" "vS" (func $internal2446)) + (import "env" "wS" (func $internal2447)) + (import "env" "xS" (func $internal2448)) + (import "env" "yS" (func $internal2449)) + (import "env" "zS" (func $internal2450)) + (import "env" "AS" (func $internal2451)) + (import "env" "BS" (func $internal2452)) + (import "env" "CS" (func $internal2453)) + (import "env" "DS" (func $internal2454)) + (import "env" "ES" (func $internal2455)) + (import "env" "FS" (func $internal2456)) + (import "env" "GS" (func $internal2457)) + (import "env" "HS" (func $internal2458)) + (import "env" "IS" (func $internal2459)) + (import "env" "JS" (func $internal2460)) + (import "env" "KS" (func $internal2461)) + (import "env" "LS" (func $internal2462)) + (import "env" "MS" (func $internal2463)) + (import "env" "NS" (func $internal2464)) + (import "env" "OS" (func $internal2465)) + (import "env" "PS" (func $internal2466)) + (import "env" "QS" (func $internal2467)) + (import "env" "RS" (func $internal2468)) + (import "env" "SS" (func $internal2469)) + (import "env" "TS" (func $internal2470)) + (import "env" "US" (func $internal2471)) + (import "env" "VS" (func $internal2472)) + (import "env" "WS" (func $internal2473)) + (import "env" "XS" (func $internal2474)) + (import "env" "YS" (func $internal2475)) + (import "env" "ZS" (func $internal2476)) + (import "env" "_S" (func $internal2477)) + (import "env" "$S" (func $internal2478)) + (import "env" "aT" (func $internal2479)) + (import "env" "bT" (func $internal2480)) + (import "env" "cT" (func $internal2481)) + (import "env" "dT" (func $internal2482)) + (import "env" "eT" (func $internal2483)) + (import "env" "fT" (func $internal2484)) + (import "env" "gT" (func $internal2485)) + (import "env" "hT" (func $internal2486)) + (import "env" "iT" (func $internal2487)) + (import "env" "jT" (func $internal2488)) + (import "env" "kT" (func $internal2489)) + (import "env" "lT" (func $internal2490)) + (import "env" "mT" (func $internal2491)) + (import "env" "nT" (func $internal2492)) + (import "env" "oT" (func $internal2493)) + (import "env" "pT" (func $internal2494)) + (import "env" "qT" (func $internal2495)) + (import "env" "rT" (func $internal2496)) + (import "env" "sT" (func $internal2497)) + (import "env" "tT" (func $internal2498)) + (import "env" "uT" (func $internal2499)) + (import "env" "vT" (func $internal2500)) + (import "env" "wT" (func $internal2501)) + (import "env" "xT" (func $internal2502)) + (import "env" "yT" (func $internal2503)) + (import "env" "zT" (func $internal2504)) + (import "env" "AT" (func $internal2505)) + (import "env" "BT" (func $internal2506)) + (import "env" "CT" (func $internal2507)) + (import "env" "DT" (func $internal2508)) + (import "env" "ET" (func $internal2509)) + (import "env" "FT" (func $internal2510)) + (import "env" "GT" (func $internal2511)) + (import "env" "HT" (func $internal2512)) + (import "env" "IT" (func $internal2513)) + (import "env" "JT" (func $internal2514)) + (import "env" "KT" (func $internal2515)) + (import "env" "LT" (func $internal2516)) + (import "env" "MT" (func $internal2517)) + (import "env" "NT" (func $internal2518)) + (import "env" "OT" (func $internal2519)) + (import "env" "PT" (func $internal2520)) + (import "env" "QT" (func $internal2521)) + (import "env" "RT" (func $internal2522)) + (import "env" "ST" (func $internal2523)) + (import "env" "TT" (func $internal2524)) + (import "env" "UT" (func $internal2525)) + (import "env" "VT" (func $internal2526)) + (import "env" "WT" (func $internal2527)) + (import "env" "XT" (func $internal2528)) + (import "env" "YT" (func $internal2529)) + (import "env" "ZT" (func $internal2530)) + (import "env" "_T" (func $internal2531)) + (import "env" "$T" (func $internal2532)) + (import "env" "aU" (func $internal2533)) + (import "env" "bU" (func $internal2534)) + (import "env" "cU" (func $internal2535)) + (import "env" "dU" (func $internal2536)) + (import "env" "eU" (func $internal2537)) + (import "env" "fU" (func $internal2538)) + (import "env" "gU" (func $internal2539)) + (import "env" "hU" (func $internal2540)) + (import "env" "iU" (func $internal2541)) + (import "env" "jU" (func $internal2542)) + (import "env" "kU" (func $internal2543)) + (import "env" "lU" (func $internal2544)) + (import "env" "mU" (func $internal2545)) + (import "env" "nU" (func $internal2546)) + (import "env" "oU" (func $internal2547)) + (import "env" "pU" (func $internal2548)) + (import "env" "qU" (func $internal2549)) + (import "env" "rU" (func $internal2550)) + (import "env" "sU" (func $internal2551)) + (import "env" "tU" (func $internal2552)) + (import "env" "uU" (func $internal2553)) + (import "env" "vU" (func $internal2554)) + (import "env" "wU" (func $internal2555)) + (import "env" "xU" (func $internal2556)) + (import "env" "yU" (func $internal2557)) + (import "env" "zU" (func $internal2558)) + (import "env" "AU" (func $internal2559)) + (import "env" "BU" (func $internal2560)) + (import "env" "CU" (func $internal2561)) + (import "env" "DU" (func $internal2562)) + (import "env" "EU" (func $internal2563)) + (import "env" "FU" (func $internal2564)) + (import "env" "GU" (func $internal2565)) + (import "env" "HU" (func $internal2566)) + (import "env" "IU" (func $internal2567)) + (import "env" "JU" (func $internal2568)) + (import "env" "KU" (func $internal2569)) + (import "env" "LU" (func $internal2570)) + (import "env" "MU" (func $internal2571)) + (import "env" "NU" (func $internal2572)) + (import "env" "OU" (func $internal2573)) + (import "env" "PU" (func $internal2574)) + (import "env" "QU" (func $internal2575)) + (import "env" "RU" (func $internal2576)) + (import "env" "SU" (func $internal2577)) + (import "env" "TU" (func $internal2578)) + (import "env" "UU" (func $internal2579)) + (import "env" "VU" (func $internal2580)) + (import "env" "WU" (func $internal2581)) + (import "env" "XU" (func $internal2582)) + (import "env" "YU" (func $internal2583)) + (import "env" "ZU" (func $internal2584)) + (import "env" "_U" (func $internal2585)) + (import "env" "$U" (func $internal2586)) + (import "env" "aV" (func $internal2587)) + (import "env" "bV" (func $internal2588)) + (import "env" "cV" (func $internal2589)) + (import "env" "dV" (func $internal2590)) + (import "env" "eV" (func $internal2591)) + (import "env" "fV" (func $internal2592)) + (import "env" "gV" (func $internal2593)) + (import "env" "hV" (func $internal2594)) + (import "env" "iV" (func $internal2595)) + (import "env" "jV" (func $internal2596)) + (import "env" "kV" (func $internal2597)) + (import "env" "lV" (func $internal2598)) + (import "env" "mV" (func $internal2599)) + (import "env" "nV" (func $internal2600)) + (import "env" "oV" (func $internal2601)) + (import "env" "pV" (func $internal2602)) + (import "env" "qV" (func $internal2603)) + (import "env" "rV" (func $internal2604)) + (import "env" "sV" (func $internal2605)) + (import "env" "tV" (func $internal2606)) + (import "env" "uV" (func $internal2607)) + (import "env" "vV" (func $internal2608)) + (import "env" "wV" (func $internal2609)) + (import "env" "xV" (func $internal2610)) + (import "env" "yV" (func $internal2611)) + (import "env" "zV" (func $internal2612)) + (import "env" "AV" (func $internal2613)) + (import "env" "BV" (func $internal2614)) + (import "env" "CV" (func $internal2615)) + (import "env" "DV" (func $internal2616)) + (import "env" "EV" (func $internal2617)) + (import "env" "FV" (func $internal2618)) + (import "env" "GV" (func $internal2619)) + (import "env" "HV" (func $internal2620)) + (import "env" "IV" (func $internal2621)) + (import "env" "JV" (func $internal2622)) + (import "env" "KV" (func $internal2623)) + (import "env" "LV" (func $internal2624)) + (import "env" "MV" (func $internal2625)) + (import "env" "NV" (func $internal2626)) + (import "env" "OV" (func $internal2627)) + (import "env" "PV" (func $internal2628)) + (import "env" "QV" (func $internal2629)) + (import "env" "RV" (func $internal2630)) + (import "env" "SV" (func $internal2631)) + (import "env" "TV" (func $internal2632)) + (import "env" "UV" (func $internal2633)) + (import "env" "VV" (func $internal2634)) + (import "env" "WV" (func $internal2635)) + (import "env" "XV" (func $internal2636)) + (import "env" "YV" (func $internal2637)) + (import "env" "ZV" (func $internal2638)) + (import "env" "_V" (func $internal2639)) + (import "env" "$V" (func $internal2640)) + (import "env" "aW" (func $internal2641)) + (import "env" "bW" (func $internal2642)) + (import "env" "cW" (func $internal2643)) + (import "env" "dW" (func $internal2644)) + (import "env" "eW" (func $internal2645)) + (import "env" "fW" (func $internal2646)) + (import "env" "gW" (func $internal2647)) + (import "env" "hW" (func $internal2648)) + (import "env" "iW" (func $internal2649)) + (import "env" "jW" (func $internal2650)) + (import "env" "kW" (func $internal2651)) + (import "env" "lW" (func $internal2652)) + (import "env" "mW" (func $internal2653)) + (import "env" "nW" (func $internal2654)) + (import "env" "oW" (func $internal2655)) + (import "env" "pW" (func $internal2656)) + (import "env" "qW" (func $internal2657)) + (import "env" "rW" (func $internal2658)) + (import "env" "sW" (func $internal2659)) + (import "env" "tW" (func $internal2660)) + (import "env" "uW" (func $internal2661)) + (import "env" "vW" (func $internal2662)) + (import "env" "wW" (func $internal2663)) + (import "env" "xW" (func $internal2664)) + (import "env" "yW" (func $internal2665)) + (import "env" "zW" (func $internal2666)) + (import "env" "AW" (func $internal2667)) + (import "env" "BW" (func $internal2668)) + (import "env" "CW" (func $internal2669)) + (import "env" "DW" (func $internal2670)) + (import "env" "EW" (func $internal2671)) + (import "env" "FW" (func $internal2672)) + (import "env" "GW" (func $internal2673)) + (import "env" "HW" (func $internal2674)) + (import "env" "IW" (func $internal2675)) + (import "env" "JW" (func $internal2676)) + (import "env" "KW" (func $internal2677)) + (import "env" "LW" (func $internal2678)) + (import "env" "MW" (func $internal2679)) + (import "env" "NW" (func $internal2680)) + (import "env" "OW" (func $internal2681)) + (import "env" "PW" (func $internal2682)) + (import "env" "QW" (func $internal2683)) + (import "env" "RW" (func $internal2684)) + (import "env" "SW" (func $internal2685)) + (import "env" "TW" (func $internal2686)) + (import "env" "UW" (func $internal2687)) + (import "env" "VW" (func $internal2688)) + (import "env" "WW" (func $internal2689)) + (import "env" "XW" (func $internal2690)) + (import "env" "YW" (func $internal2691)) + (import "env" "ZW" (func $internal2692)) + (import "env" "_W" (func $internal2693)) + (import "env" "$W" (func $internal2694)) + (import "env" "aX" (func $internal2695)) + (import "env" "bX" (func $internal2696)) + (import "env" "cX" (func $internal2697)) + (import "env" "dX" (func $internal2698)) + (import "env" "eX" (func $internal2699)) + (import "env" "fX" (func $internal2700)) + (import "env" "gX" (func $internal2701)) + (import "env" "hX" (func $internal2702)) + (import "env" "iX" (func $internal2703)) + (import "env" "jX" (func $internal2704)) + (import "env" "kX" (func $internal2705)) + (import "env" "lX" (func $internal2706)) + (import "env" "mX" (func $internal2707)) + (import "env" "nX" (func $internal2708)) + (import "env" "oX" (func $internal2709)) + (import "env" "pX" (func $internal2710)) + (import "env" "qX" (func $internal2711)) + (import "env" "rX" (func $internal2712)) + (import "env" "sX" (func $internal2713)) + (import "env" "tX" (func $internal2714)) + (import "env" "uX" (func $internal2715)) + (import "env" "vX" (func $internal2716)) + (import "env" "wX" (func $internal2717)) + (import "env" "xX" (func $internal2718)) + (import "env" "yX" (func $internal2719)) + (import "env" "zX" (func $internal2720)) + (import "env" "AX" (func $internal2721)) + (import "env" "BX" (func $internal2722)) + (import "env" "CX" (func $internal2723)) + (import "env" "DX" (func $internal2724)) + (import "env" "EX" (func $internal2725)) + (import "env" "FX" (func $internal2726)) + (import "env" "GX" (func $internal2727)) + (import "env" "HX" (func $internal2728)) + (import "env" "IX" (func $internal2729)) + (import "env" "JX" (func $internal2730)) + (import "env" "KX" (func $internal2731)) + (import "env" "LX" (func $internal2732)) + (import "env" "MX" (func $internal2733)) + (import "env" "NX" (func $internal2734)) + (import "env" "OX" (func $internal2735)) + (import "env" "PX" (func $internal2736)) + (import "env" "QX" (func $internal2737)) + (import "env" "RX" (func $internal2738)) + (import "env" "SX" (func $internal2739)) + (import "env" "TX" (func $internal2740)) + (import "env" "UX" (func $internal2741)) + (import "env" "VX" (func $internal2742)) + (import "env" "WX" (func $internal2743)) + (import "env" "XX" (func $internal2744)) + (import "env" "YX" (func $internal2745)) + (import "env" "ZX" (func $internal2746)) + (import "env" "_X" (func $internal2747)) + (import "env" "$X" (func $internal2748)) + (import "env" "aY" (func $internal2749)) + (import "env" "bY" (func $internal2750)) + (import "env" "cY" (func $internal2751)) + (import "env" "dY" (func $internal2752)) + (import "env" "eY" (func $internal2753)) + (import "env" "fY" (func $internal2754)) + (import "env" "gY" (func $internal2755)) + (import "env" "hY" (func $internal2756)) + (import "env" "iY" (func $internal2757)) + (import "env" "jY" (func $internal2758)) + (import "env" "kY" (func $internal2759)) + (import "env" "lY" (func $internal2760)) + (import "env" "mY" (func $internal2761)) + (import "env" "nY" (func $internal2762)) + (import "env" "oY" (func $internal2763)) + (import "env" "pY" (func $internal2764)) + (import "env" "qY" (func $internal2765)) + (import "env" "rY" (func $internal2766)) + (import "env" "sY" (func $internal2767)) + (import "env" "tY" (func $internal2768)) + (import "env" "uY" (func $internal2769)) + (import "env" "vY" (func $internal2770)) + (import "env" "wY" (func $internal2771)) + (import "env" "xY" (func $internal2772)) + (import "env" "yY" (func $internal2773)) + (import "env" "zY" (func $internal2774)) + (import "env" "AY" (func $internal2775)) + (import "env" "BY" (func $internal2776)) + (import "env" "CY" (func $internal2777)) + (import "env" "DY" (func $internal2778)) + (import "env" "EY" (func $internal2779)) + (import "env" "FY" (func $internal2780)) + (import "env" "GY" (func $internal2781)) + (import "env" "HY" (func $internal2782)) + (import "env" "IY" (func $internal2783)) + (import "env" "JY" (func $internal2784)) + (import "env" "KY" (func $internal2785)) + (import "env" "LY" (func $internal2786)) + (import "env" "MY" (func $internal2787)) + (import "env" "NY" (func $internal2788)) + (import "env" "OY" (func $internal2789)) + (import "env" "PY" (func $internal2790)) + (import "env" "QY" (func $internal2791)) + (import "env" "RY" (func $internal2792)) + (import "env" "SY" (func $internal2793)) + (import "env" "TY" (func $internal2794)) + (import "env" "UY" (func $internal2795)) + (import "env" "VY" (func $internal2796)) + (import "env" "WY" (func $internal2797)) + (import "env" "XY" (func $internal2798)) + (import "env" "YY" (func $internal2799)) + (import "env" "ZY" (func $internal2800)) + (import "env" "_Y" (func $internal2801)) + (import "env" "$Y" (func $internal2802)) + (import "env" "aZ" (func $internal2803)) + (import "env" "bZ" (func $internal2804)) + (import "env" "cZ" (func $internal2805)) + (import "env" "dZ" (func $internal2806)) + (import "env" "eZ" (func $internal2807)) + (import "env" "fZ" (func $internal2808)) + (import "env" "gZ" (func $internal2809)) + (import "env" "hZ" (func $internal2810)) + (import "env" "iZ" (func $internal2811)) + (import "env" "jZ" (func $internal2812)) + (import "env" "kZ" (func $internal2813)) + (import "env" "lZ" (func $internal2814)) + (import "env" "mZ" (func $internal2815)) + (import "env" "nZ" (func $internal2816)) + (import "env" "oZ" (func $internal2817)) + (import "env" "pZ" (func $internal2818)) + (import "env" "qZ" (func $internal2819)) + (import "env" "rZ" (func $internal2820)) + (import "env" "sZ" (func $internal2821)) + (import "env" "tZ" (func $internal2822)) + (import "env" "uZ" (func $internal2823)) + (import "env" "vZ" (func $internal2824)) + (import "env" "wZ" (func $internal2825)) + (import "env" "xZ" (func $internal2826)) + (import "env" "yZ" (func $internal2827)) + (import "env" "zZ" (func $internal2828)) + (import "env" "AZ" (func $internal2829)) + (import "env" "BZ" (func $internal2830)) + (import "env" "CZ" (func $internal2831)) + (import "env" "DZ" (func $internal2832)) + (import "env" "EZ" (func $internal2833)) + (import "env" "FZ" (func $internal2834)) + (import "env" "GZ" (func $internal2835)) + (import "env" "HZ" (func $internal2836)) + (import "env" "IZ" (func $internal2837)) + (import "env" "JZ" (func $internal2838)) + (import "env" "KZ" (func $internal2839)) + (import "env" "LZ" (func $internal2840)) + (import "env" "MZ" (func $internal2841)) + (import "env" "NZ" (func $internal2842)) + (import "env" "OZ" (func $internal2843)) + (import "env" "PZ" (func $internal2844)) + (import "env" "QZ" (func $internal2845)) + (import "env" "RZ" (func $internal2846)) + (import "env" "SZ" (func $internal2847)) + (import "env" "TZ" (func $internal2848)) + (import "env" "UZ" (func $internal2849)) + (import "env" "VZ" (func $internal2850)) + (import "env" "WZ" (func $internal2851)) + (import "env" "XZ" (func $internal2852)) + (import "env" "YZ" (func $internal2853)) + (import "env" "ZZ" (func $internal2854)) + (import "env" "_Z" (func $internal2855)) + (import "env" "$Z" (func $internal2856)) + (import "env" "a_" (func $internal2857)) + (import "env" "b_" (func $internal2858)) + (import "env" "c_" (func $internal2859)) + (import "env" "d_" (func $internal2860)) + (import "env" "e_" (func $internal2861)) + (import "env" "f_" (func $internal2862)) + (import "env" "g_" (func $internal2863)) + (import "env" "h_" (func $internal2864)) + (import "env" "i_" (func $internal2865)) + (import "env" "j_" (func $internal2866)) + (import "env" "k_" (func $internal2867)) + (import "env" "l_" (func $internal2868)) + (import "env" "m_" (func $internal2869)) + (import "env" "n_" (func $internal2870)) + (import "env" "o_" (func $internal2871)) + (import "env" "p_" (func $internal2872)) + (import "env" "q_" (func $internal2873)) + (import "env" "r_" (func $internal2874)) + (import "env" "s_" (func $internal2875)) + (import "env" "t_" (func $internal2876)) + (import "env" "u_" (func $internal2877)) + (import "env" "v_" (func $internal2878)) + (import "env" "w_" (func $internal2879)) + (import "env" "x_" (func $internal2880)) + (import "env" "y_" (func $internal2881)) + (import "env" "z_" (func $internal2882)) + (import "env" "A_" (func $internal2883)) + (import "env" "B_" (func $internal2884)) + (import "env" "C_" (func $internal2885)) + (import "env" "D_" (func $internal2886)) + (import "env" "E_" (func $internal2887)) + (import "env" "F_" (func $internal2888)) + (import "env" "G_" (func $internal2889)) + (import "env" "H_" (func $internal2890)) + (import "env" "I_" (func $internal2891)) + (import "env" "J_" (func $internal2892)) + (import "env" "K_" (func $internal2893)) + (import "env" "L_" (func $internal2894)) + (import "env" "M_" (func $internal2895)) + (import "env" "N_" (func $internal2896)) + (import "env" "O_" (func $internal2897)) + (import "env" "P_" (func $internal2898)) + (import "env" "Q_" (func $internal2899)) + (import "env" "R_" (func $internal2900)) + (import "env" "S_" (func $internal2901)) + (import "env" "T_" (func $internal2902)) + (import "env" "U_" (func $internal2903)) + (import "env" "V_" (func $internal2904)) + (import "env" "W_" (func $internal2905)) + (import "env" "X_" (func $internal2906)) + (import "env" "Y_" (func $internal2907)) + (import "env" "Z_" (func $internal2908)) + (import "env" "__" (func $internal2909)) + (import "env" "$_" (func $internal2910)) + (import "env" "a$" (func $internal2911)) + (import "env" "b$" (func $internal2912)) + (import "env" "c$" (func $internal2913)) + (import "env" "d$" (func $internal2914)) + (import "env" "e$" (func $internal2915)) + (import "env" "f$" (func $internal2916)) + (import "env" "g$" (func $internal2917)) + (import "env" "h$" (func $internal2918)) + (import "env" "i$" (func $internal2919)) + (import "env" "j$" (func $internal2920)) + (import "env" "k$" (func $internal2921)) + (import "env" "l$" (func $internal2922)) + (import "env" "m$" (func $internal2923)) + (import "env" "n$" (func $internal2924)) + (import "env" "o$" (func $internal2925)) + (import "env" "p$" (func $internal2926)) + (import "env" "q$" (func $internal2927)) + (import "env" "r$" (func $internal2928)) + (import "env" "s$" (func $internal2929)) + (import "env" "t$" (func $internal2930)) + (import "env" "u$" (func $internal2931)) + (import "env" "v$" (func $internal2932)) + (import "env" "w$" (func $internal2933)) + (import "env" "x$" (func $internal2934)) + (import "env" "y$" (func $internal2935)) + (import "env" "z$" (func $internal2936)) + (import "env" "A$" (func $internal2937)) + (import "env" "B$" (func $internal2938)) + (import "env" "C$" (func $internal2939)) + (import "env" "D$" (func $internal2940)) + (import "env" "E$" (func $internal2941)) + (import "env" "F$" (func $internal2942)) + (import "env" "G$" (func $internal2943)) + (import "env" "H$" (func $internal2944)) + (import "env" "I$" (func $internal2945)) + (import "env" "J$" (func $internal2946)) + (import "env" "K$" (func $internal2947)) + (import "env" "L$" (func $internal2948)) + (import "env" "M$" (func $internal2949)) + (import "env" "N$" (func $internal2950)) + (import "env" "O$" (func $internal2951)) + (import "env" "P$" (func $internal2952)) + (import "env" "Q$" (func $internal2953)) + (import "env" "R$" (func $internal2954)) + (import "env" "S$" (func $internal2955)) + (import "env" "T$" (func $internal2956)) + (import "env" "U$" (func $internal2957)) + (import "env" "V$" (func $internal2958)) + (import "env" "W$" (func $internal2959)) + (import "env" "X$" (func $internal2960)) + (import "env" "Y$" (func $internal2961)) + (import "env" "Z$" (func $internal2962)) + (import "env" "_$" (func $internal2963)) + (import "env" "$$" (func $internal2964)) + (import "env" "a0" (func $internal2965)) + (import "env" "b0" (func $internal2966)) + (import "env" "c0" (func $internal2967)) + (import "env" "d0" (func $internal2968)) + (import "env" "e0" (func $internal2969)) + (import "env" "f0" (func $internal2970)) + (import "env" "g0" (func $internal2971)) + (import "env" "h0" (func $internal2972)) + (import "env" "i0" (func $internal2973)) + (import "env" "j0" (func $internal2974)) + (import "env" "k0" (func $internal2975)) + (import "env" "l0" (func $internal2976)) + (import "env" "m0" (func $internal2977)) + (import "env" "n0" (func $internal2978)) + (import "env" "o0" (func $internal2979)) + (import "env" "p0" (func $internal2980)) + (import "env" "q0" (func $internal2981)) + (import "env" "r0" (func $internal2982)) + (import "env" "s0" (func $internal2983)) + (import "env" "t0" (func $internal2984)) + (import "env" "u0" (func $internal2985)) + (import "env" "v0" (func $internal2986)) + (import "env" "w0" (func $internal2987)) + (import "env" "x0" (func $internal2988)) + (import "env" "y0" (func $internal2989)) + (import "env" "z0" (func $internal2990)) + (import "env" "A0" (func $internal2991)) + (import "env" "B0" (func $internal2992)) + (import "env" "C0" (func $internal2993)) + (import "env" "D0" (func $internal2994)) + (import "env" "E0" (func $internal2995)) + (import "env" "F0" (func $internal2996)) + (import "env" "G0" (func $internal2997)) + (import "env" "H0" (func $internal2998)) + (import "env" "I0" (func $internal2999)) + (import "env" "J0" (func $internal3000)) + (import "env" "K0" (func $internal3001)) + (import "env" "L0" (func $internal3002)) + (import "env" "M0" (func $internal3003)) + (import "env" "N0" (func $internal3004)) + (import "env" "O0" (func $internal3005)) + (import "env" "P0" (func $internal3006)) + (import "env" "Q0" (func $internal3007)) + (import "env" "R0" (func $internal3008)) + (import "env" "S0" (func $internal3009)) + (import "env" "T0" (func $internal3010)) + (import "env" "U0" (func $internal3011)) + (import "env" "V0" (func $internal3012)) + (import "env" "W0" (func $internal3013)) + (import "env" "X0" (func $internal3014)) + (import "env" "Y0" (func $internal3015)) + (import "env" "Z0" (func $internal3016)) + (import "env" "_0" (func $internal3017)) + (import "env" "$0" (func $internal3018)) + (import "env" "a1" (func $internal3019)) + (import "env" "b1" (func $internal3020)) + (import "env" "c1" (func $internal3021)) + (import "env" "d1" (func $internal3022)) + (import "env" "e1" (func $internal3023)) + (import "env" "f1" (func $internal3024)) + (import "env" "g1" (func $internal3025)) + (import "env" "h1" (func $internal3026)) + (import "env" "i1" (func $internal3027)) + (import "env" "j1" (func $internal3028)) + (import "env" "k1" (func $internal3029)) + (import "env" "l1" (func $internal3030)) + (import "env" "m1" (func $internal3031)) + (import "env" "n1" (func $internal3032)) + (import "env" "o1" (func $internal3033)) + (import "env" "p1" (func $internal3034)) + (import "env" "q1" (func $internal3035)) + (import "env" "r1" (func $internal3036)) + (import "env" "s1" (func $internal3037)) + (import "env" "t1" (func $internal3038)) + (import "env" "u1" (func $internal3039)) + (import "env" "v1" (func $internal3040)) + (import "env" "w1" (func $internal3041)) + (import "env" "x1" (func $internal3042)) + (import "env" "y1" (func $internal3043)) + (import "env" "z1" (func $internal3044)) + (import "env" "A1" (func $internal3045)) + (import "env" "B1" (func $internal3046)) + (import "env" "C1" (func $internal3047)) + (import "env" "D1" (func $internal3048)) + (import "env" "E1" (func $internal3049)) + (import "env" "F1" (func $internal3050)) + (import "env" "G1" (func $internal3051)) + (import "env" "H1" (func $internal3052)) + (import "env" "I1" (func $internal3053)) + (import "env" "J1" (func $internal3054)) + (import "env" "K1" (func $internal3055)) + (import "env" "L1" (func $internal3056)) + (import "env" "M1" (func $internal3057)) + (import "env" "N1" (func $internal3058)) + (import "env" "O1" (func $internal3059)) + (import "env" "P1" (func $internal3060)) + (import "env" "Q1" (func $internal3061)) + (import "env" "R1" (func $internal3062)) + (import "env" "S1" (func $internal3063)) + (import "env" "T1" (func $internal3064)) + (import "env" "U1" (func $internal3065)) + (import "env" "V1" (func $internal3066)) + (import "env" "W1" (func $internal3067)) + (import "env" "X1" (func $internal3068)) + (import "env" "Y1" (func $internal3069)) + (import "env" "Z1" (func $internal3070)) + (import "env" "_1" (func $internal3071)) + (import "env" "$1" (func $internal3072)) + (import "env" "a2" (func $internal3073)) + (import "env" "b2" (func $internal3074)) + (import "env" "c2" (func $internal3075)) + (import "env" "d2" (func $internal3076)) + (import "env" "e2" (func $internal3077)) + (import "env" "f2" (func $internal3078)) + (import "env" "g2" (func $internal3079)) + (import "env" "h2" (func $internal3080)) + (import "env" "i2" (func $internal3081)) + (import "env" "j2" (func $internal3082)) + (import "env" "k2" (func $internal3083)) + (import "env" "l2" (func $internal3084)) + (import "env" "m2" (func $internal3085)) + (import "env" "n2" (func $internal3086)) + (import "env" "o2" (func $internal3087)) + (import "env" "p2" (func $internal3088)) + (import "env" "q2" (func $internal3089)) + (import "env" "r2" (func $internal3090)) + (import "env" "s2" (func $internal3091)) + (import "env" "t2" (func $internal3092)) + (import "env" "u2" (func $internal3093)) + (import "env" "v2" (func $internal3094)) + (import "env" "w2" (func $internal3095)) + (import "env" "x2" (func $internal3096)) + (import "env" "y2" (func $internal3097)) + (import "env" "z2" (func $internal3098)) + (import "env" "A2" (func $internal3099)) + (import "env" "B2" (func $internal3100)) + (import "env" "C2" (func $internal3101)) + (import "env" "D2" (func $internal3102)) + (import "env" "E2" (func $internal3103)) + (import "env" "F2" (func $internal3104)) + (import "env" "G2" (func $internal3105)) + (import "env" "H2" (func $internal3106)) + (import "env" "I2" (func $internal3107)) + (import "env" "J2" (func $internal3108)) + (import "env" "K2" (func $internal3109)) + (import "env" "L2" (func $internal3110)) + (import "env" "M2" (func $internal3111)) + (import "env" "N2" (func $internal3112)) + (import "env" "O2" (func $internal3113)) + (import "env" "P2" (func $internal3114)) + (import "env" "Q2" (func $internal3115)) + (import "env" "R2" (func $internal3116)) + (import "env" "S2" (func $internal3117)) + (import "env" "T2" (func $internal3118)) + (import "env" "U2" (func $internal3119)) + (import "env" "V2" (func $internal3120)) + (import "env" "W2" (func $internal3121)) + (import "env" "X2" (func $internal3122)) + (import "env" "Y2" (func $internal3123)) + (import "env" "Z2" (func $internal3124)) + (import "env" "_2" (func $internal3125)) + (import "env" "$2" (func $internal3126)) + (import "env" "a3" (func $internal3127)) + (import "env" "b3" (func $internal3128)) + (import "env" "c3" (func $internal3129)) + (import "env" "d3" (func $internal3130)) + (import "env" "e3" (func $internal3131)) + (import "env" "f3" (func $internal3132)) + (import "env" "g3" (func $internal3133)) + (import "env" "h3" (func $internal3134)) + (import "env" "i3" (func $internal3135)) + (import "env" "j3" (func $internal3136)) + (import "env" "k3" (func $internal3137)) + (import "env" "l3" (func $internal3138)) + (import "env" "m3" (func $internal3139)) + (import "env" "n3" (func $internal3140)) + (import "env" "o3" (func $internal3141)) + (import "env" "p3" (func $internal3142)) + (import "env" "q3" (func $internal3143)) + (import "env" "r3" (func $internal3144)) + (import "env" "s3" (func $internal3145)) + (import "env" "t3" (func $internal3146)) + (import "env" "u3" (func $internal3147)) + (import "env" "v3" (func $internal3148)) + (import "env" "w3" (func $internal3149)) + (import "env" "x3" (func $internal3150)) + (import "env" "y3" (func $internal3151)) + (import "env" "z3" (func $internal3152)) + (import "env" "A3" (func $internal3153)) + (import "env" "B3" (func $internal3154)) + (import "env" "C3" (func $internal3155)) + (import "env" "D3" (func $internal3156)) + (import "env" "E3" (func $internal3157)) + (import "env" "F3" (func $internal3158)) + (import "env" "G3" (func $internal3159)) + (import "env" "H3" (func $internal3160)) + (import "env" "I3" (func $internal3161)) + (import "env" "J3" (func $internal3162)) + (import "env" "K3" (func $internal3163)) + (import "env" "L3" (func $internal3164)) + (import "env" "M3" (func $internal3165)) + (import "env" "N3" (func $internal3166)) + (import "env" "O3" (func $internal3167)) + (import "env" "P3" (func $internal3168)) + (import "env" "Q3" (func $internal3169)) + (import "env" "R3" (func $internal3170)) + (import "env" "S3" (func $internal3171)) + (import "env" "T3" (func $internal3172)) + (import "env" "U3" (func $internal3173)) + (import "env" "V3" (func $internal3174)) + (import "env" "W3" (func $internal3175)) + (import "env" "X3" (func $internal3176)) + (import "env" "Y3" (func $internal3177)) + (import "env" "Z3" (func $internal3178)) + (import "env" "_3" (func $internal3179)) + (import "env" "$3" (func $internal3180)) + (import "env" "a4" (func $internal3181)) + (import "env" "b4" (func $internal3182)) + (import "env" "c4" (func $internal3183)) + (import "env" "d4" (func $internal3184)) + (import "env" "e4" (func $internal3185)) + (import "env" "f4" (func $internal3186)) + (import "env" "g4" (func $internal3187)) + (import "env" "h4" (func $internal3188)) + (import "env" "i4" (func $internal3189)) + (import "env" "j4" (func $internal3190)) + (import "env" "k4" (func $internal3191)) + (import "env" "l4" (func $internal3192)) + (import "env" "m4" (func $internal3193)) + (import "env" "n4" (func $internal3194)) + (import "env" "o4" (func $internal3195)) + (import "env" "p4" (func $internal3196)) + (import "env" "q4" (func $internal3197)) + (import "env" "r4" (func $internal3198)) + (import "env" "s4" (func $internal3199)) + (import "env" "t4" (func $internal3200)) + (import "env" "u4" (func $internal3201)) + (import "env" "v4" (func $internal3202)) + (import "env" "w4" (func $internal3203)) + (import "env" "x4" (func $internal3204)) + (import "env" "y4" (func $internal3205)) + (import "env" "z4" (func $internal3206)) + (import "env" "A4" (func $internal3207)) + (import "env" "B4" (func $internal3208)) + (import "env" "C4" (func $internal3209)) + (import "env" "D4" (func $internal3210)) + (import "env" "E4" (func $internal3211)) + (import "env" "F4" (func $internal3212)) + (import "env" "G4" (func $internal3213)) + (import "env" "H4" (func $internal3214)) + (import "env" "I4" (func $internal3215)) + (import "env" "J4" (func $internal3216)) + (import "env" "K4" (func $internal3217)) + (import "env" "L4" (func $internal3218)) + (import "env" "M4" (func $internal3219)) + (import "env" "N4" (func $internal3220)) + (import "env" "O4" (func $internal3221)) + (import "env" "P4" (func $internal3222)) + (import "env" "Q4" (func $internal3223)) + (import "env" "R4" (func $internal3224)) + (import "env" "S4" (func $internal3225)) + (import "env" "T4" (func $internal3226)) + (import "env" "U4" (func $internal3227)) + (import "env" "V4" (func $internal3228)) + (import "env" "W4" (func $internal3229)) + (import "env" "X4" (func $internal3230)) + (import "env" "Y4" (func $internal3231)) + (import "env" "Z4" (func $internal3232)) + (import "env" "_4" (func $internal3233)) + (import "env" "$4" (func $internal3234)) + (import "env" "a5" (func $internal3235)) + (import "env" "b5" (func $internal3236)) + (import "env" "c5" (func $internal3237)) + (import "env" "d5" (func $internal3238)) + (import "env" "e5" (func $internal3239)) + (import "env" "f5" (func $internal3240)) + (import "env" "g5" (func $internal3241)) + (import "env" "h5" (func $internal3242)) + (import "env" "i5" (func $internal3243)) + (import "env" "j5" (func $internal3244)) + (import "env" "k5" (func $internal3245)) + (import "env" "l5" (func $internal3246)) + (import "env" "m5" (func $internal3247)) + (import "env" "n5" (func $internal3248)) + (import "env" "o5" (func $internal3249)) + (import "env" "p5" (func $internal3250)) + (import "env" "q5" (func $internal3251)) + (import "env" "r5" (func $internal3252)) + (import "env" "s5" (func $internal3253)) + (import "env" "t5" (func $internal3254)) + (import "env" "u5" (func $internal3255)) + (import "env" "v5" (func $internal3256)) + (import "env" "w5" (func $internal3257)) + (import "env" "x5" (func $internal3258)) + (import "env" "y5" (func $internal3259)) + (import "env" "z5" (func $internal3260)) + (import "env" "A5" (func $internal3261)) + (import "env" "B5" (func $internal3262)) + (import "env" "C5" (func $internal3263)) + (import "env" "D5" (func $internal3264)) + (import "env" "E5" (func $internal3265)) + (import "env" "F5" (func $internal3266)) + (import "env" "G5" (func $internal3267)) + (import "env" "H5" (func $internal3268)) + (import "env" "I5" (func $internal3269)) + (import "env" "J5" (func $internal3270)) + (import "env" "K5" (func $internal3271)) + (import "env" "L5" (func $internal3272)) + (import "env" "M5" (func $internal3273)) + (import "env" "N5" (func $internal3274)) + (import "env" "O5" (func $internal3275)) + (import "env" "P5" (func $internal3276)) + (import "env" "Q5" (func $internal3277)) + (import "env" "R5" (func $internal3278)) + (import "env" "S5" (func $internal3279)) + (import "env" "T5" (func $internal3280)) + (import "env" "U5" (func $internal3281)) + (import "env" "V5" (func $internal3282)) + (import "env" "W5" (func $internal3283)) + (import "env" "X5" (func $internal3284)) + (import "env" "Y5" (func $internal3285)) + (import "env" "Z5" (func $internal3286)) + (import "env" "_5" (func $internal3287)) + (import "env" "$5" (func $internal3288)) + (import "env" "a6" (func $internal3289)) + (import "env" "b6" (func $internal3290)) + (import "env" "c6" (func $internal3291)) + (import "env" "d6" (func $internal3292)) + (import "env" "e6" (func $internal3293)) + (import "env" "f6" (func $internal3294)) + (import "env" "g6" (func $internal3295)) + (import "env" "h6" (func $internal3296)) + (import "env" "i6" (func $internal3297)) + (import "env" "j6" (func $internal3298)) + (import "env" "k6" (func $internal3299)) + (import "env" "l6" (func $internal3300)) + (import "env" "m6" (func $internal3301)) + (import "env" "n6" (func $internal3302)) + (import "env" "o6" (func $internal3303)) + (import "env" "p6" (func $internal3304)) + (import "env" "q6" (func $internal3305)) + (import "env" "r6" (func $internal3306)) + (import "env" "s6" (func $internal3307)) + (import "env" "t6" (func $internal3308)) + (import "env" "u6" (func $internal3309)) + (import "env" "v6" (func $internal3310)) + (import "env" "w6" (func $internal3311)) + (import "env" "x6" (func $internal3312)) + (import "env" "y6" (func $internal3313)) + (import "env" "z6" (func $internal3314)) + (import "env" "A6" (func $internal3315)) + (import "env" "B6" (func $internal3316)) + (import "env" "C6" (func $internal3317)) + (import "env" "D6" (func $internal3318)) + (import "env" "E6" (func $internal3319)) + (import "env" "F6" (func $internal3320)) + (import "env" "G6" (func $internal3321)) + (import "env" "H6" (func $internal3322)) + (import "env" "I6" (func $internal3323)) + (import "env" "J6" (func $internal3324)) + (import "env" "K6" (func $internal3325)) + (import "env" "L6" (func $internal3326)) + (import "env" "M6" (func $internal3327)) + (import "env" "N6" (func $internal3328)) + (import "env" "O6" (func $internal3329)) + (import "env" "P6" (func $internal3330)) + (import "env" "Q6" (func $internal3331)) + (import "env" "R6" (func $internal3332)) + (import "env" "S6" (func $internal3333)) + (import "env" "T6" (func $internal3334)) + (import "env" "U6" (func $internal3335)) + (import "env" "V6" (func $internal3336)) + (import "env" "W6" (func $internal3337)) + (import "env" "X6" (func $internal3338)) + (import "env" "Y6" (func $internal3339)) + (import "env" "Z6" (func $internal3340)) + (import "env" "_6" (func $internal3341)) + (import "env" "$6" (func $internal3342)) + (import "env" "a7" (func $internal3343)) + (import "env" "b7" (func $internal3344)) + (import "env" "c7" (func $internal3345)) + (import "env" "d7" (func $internal3346)) + (import "env" "e7" (func $internal3347)) + (import "env" "f7" (func $internal3348)) + (import "env" "g7" (func $internal3349)) + (import "env" "h7" (func $internal3350)) + (import "env" "i7" (func $internal3351)) + (import "env" "j7" (func $internal3352)) + (import "env" "k7" (func $internal3353)) + (import "env" "l7" (func $internal3354)) + (import "env" "m7" (func $internal3355)) + (import "env" "n7" (func $internal3356)) + (import "env" "o7" (func $internal3357)) + (import "env" "p7" (func $internal3358)) + (import "env" "q7" (func $internal3359)) + (import "env" "r7" (func $internal3360)) + (import "env" "s7" (func $internal3361)) + (import "env" "t7" (func $internal3362)) + (import "env" "u7" (func $internal3363)) + (import "env" "v7" (func $internal3364)) + (import "env" "w7" (func $internal3365)) + (import "env" "x7" (func $internal3366)) + (import "env" "y7" (func $internal3367)) + (import "env" "z7" (func $internal3368)) + (import "env" "A7" (func $internal3369)) + (import "env" "B7" (func $internal3370)) + (import "env" "C7" (func $internal3371)) + (import "env" "D7" (func $internal3372)) + (import "env" "E7" (func $internal3373)) + (import "env" "F7" (func $internal3374)) + (import "env" "G7" (func $internal3375)) + (import "env" "H7" (func $internal3376)) + (import "env" "I7" (func $internal3377)) + (import "env" "J7" (func $internal3378)) + (import "env" "K7" (func $internal3379)) + (import "env" "L7" (func $internal3380)) + (import "env" "M7" (func $internal3381)) + (import "env" "N7" (func $internal3382)) + (import "env" "O7" (func $internal3383)) + (import "env" "P7" (func $internal3384)) + (import "env" "Q7" (func $internal3385)) + (import "env" "R7" (func $internal3386)) + (import "env" "S7" (func $internal3387)) + (import "env" "T7" (func $internal3388)) + (import "env" "U7" (func $internal3389)) + (import "env" "V7" (func $internal3390)) + (import "env" "W7" (func $internal3391)) + (import "env" "X7" (func $internal3392)) + (import "env" "Y7" (func $internal3393)) + (import "env" "Z7" (func $internal3394)) + (import "env" "_7" (func $internal3395)) + (import "env" "$7" (func $internal3396)) + (import "env" "a8" (func $internal3397)) + (import "env" "b8" (func $internal3398)) + (import "env" "c8" (func $internal3399)) + (import "env" "d8" (func $internal3400)) + (import "env" "e8" (func $internal3401)) + (import "env" "f8" (func $internal3402)) + (import "env" "g8" (func $internal3403)) + (import "env" "h8" (func $internal3404)) + (import "env" "i8" (func $internal3405)) + (import "env" "j8" (func $internal3406)) + (import "env" "k8" (func $internal3407)) + (import "env" "l8" (func $internal3408)) + (import "env" "m8" (func $internal3409)) + (import "env" "n8" (func $internal3410)) + (import "env" "o8" (func $internal3411)) + (import "env" "p8" (func $internal3412)) + (import "env" "q8" (func $internal3413)) + (import "env" "r8" (func $internal3414)) + (import "env" "s8" (func $internal3415)) + (import "env" "t8" (func $internal3416)) + (import "env" "u8" (func $internal3417)) + (import "env" "v8" (func $internal3418)) + (import "env" "w8" (func $internal3419)) + (import "env" "x8" (func $internal3420)) + (import "env" "y8" (func $internal3421)) + (import "env" "z8" (func $internal3422)) + (import "env" "A8" (func $internal3423)) + (import "env" "B8" (func $internal3424)) + (import "env" "C8" (func $internal3425)) + (import "env" "D8" (func $internal3426)) + (import "env" "E8" (func $internal3427)) + (import "env" "F8" (func $internal3428)) + (import "env" "G8" (func $internal3429)) + (import "env" "H8" (func $internal3430)) + (import "env" "I8" (func $internal3431)) + (import "env" "J8" (func $internal3432)) + (import "env" "K8" (func $internal3433)) + (import "env" "L8" (func $internal3434)) + (import "env" "M8" (func $internal3435)) + (import "env" "N8" (func $internal3436)) + (import "env" "O8" (func $internal3437)) + (import "env" "P8" (func $internal3438)) + (import "env" "Q8" (func $internal3439)) + (import "env" "R8" (func $internal3440)) + (import "env" "S8" (func $internal3441)) + (import "env" "T8" (func $internal3442)) + (import "env" "U8" (func $internal3443)) + (import "env" "V8" (func $internal3444)) + (import "env" "W8" (func $internal3445)) + (import "env" "X8" (func $internal3446)) + (import "env" "Y8" (func $internal3447)) + (import "env" "Z8" (func $internal3448)) + (import "env" "_8" (func $internal3449)) + (import "env" "$8" (func $internal3450)) + (import "env" "a9" (func $internal3451)) + (import "env" "b9" (func $internal3452)) + (import "env" "c9" (func $internal3453)) + (import "env" "d9" (func $internal3454)) + (import "env" "e9" (func $internal3455)) + (import "env" "f9" (func $internal3456)) + (import "env" "g9" (func $internal3457)) + (import "env" "h9" (func $internal3458)) + (import "env" "i9" (func $internal3459)) + (import "env" "j9" (func $internal3460)) + (import "env" "k9" (func $internal3461)) + (import "env" "l9" (func $internal3462)) + (import "env" "m9" (func $internal3463)) + (import "env" "n9" (func $internal3464)) + (import "env" "o9" (func $internal3465)) + (import "env" "p9" (func $internal3466)) + (import "env" "q9" (func $internal3467)) + (import "env" "r9" (func $internal3468)) + (import "env" "s9" (func $internal3469)) + (import "env" "t9" (func $internal3470)) + (import "env" "u9" (func $internal3471)) + (import "env" "v9" (func $internal3472)) + (import "env" "w9" (func $internal3473)) + (import "env" "x9" (func $internal3474)) + (import "env" "y9" (func $internal3475)) + (import "env" "z9" (func $internal3476)) + (import "env" "A9" (func $internal3477)) + (import "env" "B9" (func $internal3478)) + (import "env" "C9" (func $internal3479)) + (import "env" "D9" (func $internal3480)) + (import "env" "E9" (func $internal3481)) + (import "env" "F9" (func $internal3482)) + (import "env" "G9" (func $internal3483)) + (import "env" "H9" (func $internal3484)) + (import "env" "I9" (func $internal3485)) + (import "env" "J9" (func $internal3486)) + (import "env" "K9" (func $internal3487)) + (import "env" "L9" (func $internal3488)) + (import "env" "M9" (func $internal3489)) + (import "env" "N9" (func $internal3490)) + (import "env" "O9" (func $internal3491)) + (import "env" "P9" (func $internal3492)) + (import "env" "Q9" (func $internal3493)) + (import "env" "R9" (func $internal3494)) + (import "env" "S9" (func $internal3495)) + (import "env" "T9" (func $internal3496)) + (import "env" "U9" (func $internal3497)) + (import "env" "V9" (func $internal3498)) + (import "env" "W9" (func $internal3499)) + (import "env" "X9" (func $internal3500)) + (import "env" "Y9" (func $internal3501)) + (import "env" "Z9" (func $internal3502)) + (import "env" "_9" (func $internal3503)) + (import "env" "$9" (func $internal3504)) + (import "env" "aaa" (func $internal3505)) + (import "env" "baa" (func $internal3506)) + (import "env" "caa" (func $internal3507)) + (import "env" "daa" (func $internal3508)) + (import "env" "eaa" (func $internal3509)) + (import "env" "faa" (func $internal3510)) + (import "env" "gaa" (func $internal3511)) + (import "env" "haa" (func $internal3512)) + (import "env" "iaa" (func $internal3513)) + (import "env" "jaa" (func $internal3514)) + (import "env" "kaa" (func $internal3515)) + (import "env" "laa" (func $internal3516)) + (import "env" "maa" (func $internal3517)) + (import "env" "naa" (func $internal3518)) + (import "env" "oaa" (func $internal3519)) + (import "env" "paa" (func $internal3520)) + (import "env" "qaa" (func $internal3521)) + (import "env" "raa" (func $internal3522)) + (import "env" "saa" (func $internal3523)) + (import "env" "taa" (func $internal3524)) + (import "env" "uaa" (func $internal3525)) + (import "env" "vaa" (func $internal3526)) + (import "env" "waa" (func $internal3527)) + (import "env" "xaa" (func $internal3528)) + (import "env" "yaa" (func $internal3529)) + (import "env" "zaa" (func $internal3530)) + (import "env" "Aaa" (func $internal3531)) + (import "env" "Baa" (func $internal3532)) + (import "env" "Caa" (func $internal3533)) + (import "env" "Daa" (func $internal3534)) + (import "env" "Eaa" (func $internal3535)) + (import "env" "Faa" (func $internal3536)) + (import "env" "Gaa" (func $internal3537)) + (import "env" "Haa" (func $internal3538)) + (import "env" "Iaa" (func $internal3539)) + (import "env" "Jaa" (func $internal3540)) + (import "env" "Kaa" (func $internal3541)) + (import "env" "Laa" (func $internal3542)) + (import "env" "Maa" (func $internal3543)) + (import "env" "Naa" (func $internal3544)) + (import "env" "Oaa" (func $internal3545)) + (import "env" "Paa" (func $internal3546)) + (import "env" "Qaa" (func $internal3547)) + (import "env" "Raa" (func $internal3548)) + (import "env" "Saa" (func $internal3549)) + (import "env" "Taa" (func $internal3550)) + (import "env" "Uaa" (func $internal3551)) + (import "env" "Vaa" (func $internal3552)) + (import "env" "Waa" (func $internal3553)) + (import "env" "Xaa" (func $internal3554)) + (import "env" "Yaa" (func $internal3555)) + (import "env" "Zaa" (func $internal3556)) + (import "env" "_aa" (func $internal3557)) + (import "env" "$aa" (func $internal3558)) + (import "env" "aba" (func $internal3559)) + (import "env" "bba" (func $internal3560)) + (import "env" "cba" (func $internal3561)) + (import "env" "dba" (func $internal3562)) + (import "env" "eba" (func $internal3563)) + (import "env" "fba" (func $internal3564)) + (import "env" "gba" (func $internal3565)) + (import "env" "hba" (func $internal3566)) + (import "env" "iba" (func $internal3567)) + (import "env" "jba" (func $internal3568)) + (import "env" "kba" (func $internal3569)) + (import "env" "lba" (func $internal3570)) + (import "env" "mba" (func $internal3571)) + (import "env" "nba" (func $internal3572)) + (import "env" "oba" (func $internal3573)) + (import "env" "pba" (func $internal3574)) + (import "env" "qba" (func $internal3575)) + (import "env" "rba" (func $internal3576)) + (import "env" "sba" (func $internal3577)) + (import "env" "tba" (func $internal3578)) + (import "env" "uba" (func $internal3579)) + (import "env" "vba" (func $internal3580)) + (import "env" "wba" (func $internal3581)) + (import "env" "xba" (func $internal3582)) + (import "env" "yba" (func $internal3583)) + (import "env" "zba" (func $internal3584)) + (import "env" "Aba" (func $internal3585)) + (import "env" "Bba" (func $internal3586)) + (import "env" "Cba" (func $internal3587)) + (import "env" "Dba" (func $internal3588)) + (import "env" "Eba" (func $internal3589)) + (import "env" "Fba" (func $internal3590)) + (import "env" "Gba" (func $internal3591)) + (import "env" "Hba" (func $internal3592)) + (import "env" "Iba" (func $internal3593)) + (import "env" "Jba" (func $internal3594)) + (import "env" "Kba" (func $internal3595)) + (import "env" "Lba" (func $internal3596)) + (import "env" "Mba" (func $internal3597)) + (import "env" "Nba" (func $internal3598)) + (import "env" "Oba" (func $internal3599)) + (import "env" "Pba" (func $internal3600)) + (import "env" "Qba" (func $internal3601)) + (import "env" "Rba" (func $internal3602)) + (import "env" "Sba" (func $internal3603)) + (import "env" "Tba" (func $internal3604)) + (import "env" "Uba" (func $internal3605)) + (import "env" "Vba" (func $internal3606)) + (import "env" "Wba" (func $internal3607)) + (import "env" "Xba" (func $internal3608)) + (import "env" "Yba" (func $internal3609)) + (import "env" "Zba" (func $internal3610)) + (import "env" "_ba" (func $internal3611)) + (import "env" "$ba" (func $internal3612)) + (import "env" "aca" (func $internal3613)) + (import "env" "bca" (func $internal3614)) + (import "env" "cca" (func $internal3615)) + (import "env" "dca" (func $internal3616)) + (import "env" "eca" (func $internal3617)) + (import "env" "fca" (func $internal3618)) + (import "env" "gca" (func $internal3619)) + (import "env" "hca" (func $internal3620)) + (import "env" "ica" (func $internal3621)) + (import "env" "jca" (func $internal3622)) + (import "env" "kca" (func $internal3623)) + (import "env" "lca" (func $internal3624)) + (import "env" "mca" (func $internal3625)) + (import "env" "nca" (func $internal3626)) + (import "env" "oca" (func $internal3627)) + (import "env" "pca" (func $internal3628)) + (import "env" "qca" (func $internal3629)) + (import "env" "rca" (func $internal3630)) + (import "env" "sca" (func $internal3631)) + (import "env" "tca" (func $internal3632)) + (import "env" "uca" (func $internal3633)) + (import "env" "vca" (func $internal3634)) + (import "env" "wca" (func $internal3635)) + (import "env" "xca" (func $internal3636)) + (import "env" "yca" (func $internal3637)) + (import "env" "zca" (func $internal3638)) + (import "env" "Aca" (func $internal3639)) + (import "env" "Bca" (func $internal3640)) + (import "env" "Cca" (func $internal3641)) + (import "env" "Dca" (func $internal3642)) + (import "env" "Eca" (func $internal3643)) + (import "env" "Fca" (func $internal3644)) + (import "env" "Gca" (func $internal3645)) + (import "env" "Hca" (func $internal3646)) + (import "env" "Ica" (func $internal3647)) + (import "env" "Jca" (func $internal3648)) + (import "env" "Kca" (func $internal3649)) + (import "env" "Lca" (func $internal3650)) + (import "env" "Mca" (func $internal3651)) + (import "env" "Nca" (func $internal3652)) + (import "env" "Oca" (func $internal3653)) + (import "env" "Pca" (func $internal3654)) + (import "env" "Qca" (func $internal3655)) + (import "env" "Rca" (func $internal3656)) + (import "env" "Sca" (func $internal3657)) + (import "env" "Tca" (func $internal3658)) + (import "env" "Uca" (func $internal3659)) + (import "env" "Vca" (func $internal3660)) + (import "env" "Wca" (func $internal3661)) + (import "env" "Xca" (func $internal3662)) + (import "env" "Yca" (func $internal3663)) + (import "env" "Zca" (func $internal3664)) + (import "env" "_ca" (func $internal3665)) + (import "env" "$ca" (func $internal3666)) + (import "env" "ada" (func $internal3667)) + (import "env" "bda" (func $internal3668)) + (import "env" "cda" (func $internal3669)) + (import "env" "dda" (func $internal3670)) + (import "env" "eda" (func $internal3671)) + (import "env" "fda" (func $internal3672)) + (import "env" "gda" (func $internal3673)) + (import "env" "hda" (func $internal3674)) + (import "env" "ida" (func $internal3675)) + (import "env" "jda" (func $internal3676)) + (import "env" "kda" (func $internal3677)) + (import "env" "lda" (func $internal3678)) + (import "env" "mda" (func $internal3679)) + (import "env" "nda" (func $internal3680)) + (import "env" "oda" (func $internal3681)) + (import "env" "pda" (func $internal3682)) + (import "env" "qda" (func $internal3683)) + (import "env" "rda" (func $internal3684)) + (import "env" "sda" (func $internal3685)) + (import "env" "tda" (func $internal3686)) + (import "env" "uda" (func $internal3687)) + (import "env" "vda" (func $internal3688)) + (import "env" "wda" (func $internal3689)) + (import "env" "xda" (func $internal3690)) + (import "env" "yda" (func $internal3691)) + (import "env" "zda" (func $internal3692)) + (import "env" "Ada" (func $internal3693)) + (import "env" "Bda" (func $internal3694)) + (import "env" "Cda" (func $internal3695)) + (import "env" "Dda" (func $internal3696)) + (import "env" "Eda" (func $internal3697)) + (import "env" "Fda" (func $internal3698)) + (import "env" "Gda" (func $internal3699)) + (import "env" "Hda" (func $internal3700)) + (import "env" "Ida" (func $internal3701)) + (import "env" "Jda" (func $internal3702)) + (import "env" "Kda" (func $internal3703)) + (import "env" "Lda" (func $internal3704)) + (import "env" "Mda" (func $internal3705)) + (import "env" "Nda" (func $internal3706)) + (import "env" "Oda" (func $internal3707)) + (import "env" "Pda" (func $internal3708)) + (import "env" "Qda" (func $internal3709)) + (import "env" "Rda" (func $internal3710)) + (import "env" "Sda" (func $internal3711)) + (import "env" "Tda" (func $internal3712)) + (import "env" "Uda" (func $internal3713)) + (import "env" "Vda" (func $internal3714)) + (import "env" "Wda" (func $internal3715)) + (import "env" "Xda" (func $internal3716)) + (import "env" "Yda" (func $internal3717)) + (import "env" "Zda" (func $internal3718)) + (import "env" "_da" (func $internal3719)) + (import "env" "$da" (func $internal3720)) + (import "env" "aea" (func $internal3721)) + (import "env" "bea" (func $internal3722)) + (import "env" "cea" (func $internal3723)) + (import "env" "dea" (func $internal3724)) + (import "env" "eea" (func $internal3725)) + (import "env" "fea" (func $internal3726)) + (import "env" "gea" (func $internal3727)) + (import "env" "hea" (func $internal3728)) + (import "env" "iea" (func $internal3729)) + (import "env" "jea" (func $internal3730)) + (import "env" "kea" (func $internal3731)) + (import "env" "lea" (func $internal3732)) + (import "env" "mea" (func $internal3733)) + (import "env" "nea" (func $internal3734)) + (import "env" "oea" (func $internal3735)) + (import "env" "pea" (func $internal3736)) + (import "env" "qea" (func $internal3737)) + (import "env" "rea" (func $internal3738)) + (import "env" "sea" (func $internal3739)) + (import "env" "tea" (func $internal3740)) + (import "env" "uea" (func $internal3741)) + (import "env" "vea" (func $internal3742)) + (import "env" "wea" (func $internal3743)) + (import "env" "xea" (func $internal3744)) + (import "env" "yea" (func $internal3745)) + (import "env" "zea" (func $internal3746)) + (import "env" "Aea" (func $internal3747)) + (import "env" "Bea" (func $internal3748)) + (import "env" "Cea" (func $internal3749)) + (import "env" "Dea" (func $internal3750)) + (import "env" "Eea" (func $internal3751)) + (import "env" "Fea" (func $internal3752)) + (import "env" "Gea" (func $internal3753)) + (import "env" "Hea" (func $internal3754)) + (import "env" "Iea" (func $internal3755)) + (import "env" "Jea" (func $internal3756)) + (import "env" "Kea" (func $internal3757)) + (import "env" "Lea" (func $internal3758)) + (import "env" "Mea" (func $internal3759)) + (import "env" "Nea" (func $internal3760)) + (import "env" "Oea" (func $internal3761)) + (import "env" "Pea" (func $internal3762)) + (import "env" "Qea" (func $internal3763)) + (import "env" "Rea" (func $internal3764)) + (import "env" "Sea" (func $internal3765)) + (import "env" "Tea" (func $internal3766)) + (import "env" "Uea" (func $internal3767)) + (import "env" "Vea" (func $internal3768)) + (import "env" "Wea" (func $internal3769)) + (import "env" "Xea" (func $internal3770)) + (import "env" "Yea" (func $internal3771)) + (import "env" "Zea" (func $internal3772)) + (import "env" "_ea" (func $internal3773)) + (import "env" "$ea" (func $internal3774)) + (import "env" "afa" (func $internal3775)) + (import "env" "bfa" (func $internal3776)) + (import "env" "cfa" (func $internal3777)) + (import "env" "dfa" (func $internal3778)) + (import "env" "efa" (func $internal3779)) + (import "env" "ffa" (func $internal3780)) + (import "env" "gfa" (func $internal3781)) + (import "env" "hfa" (func $internal3782)) + (import "env" "ifa" (func $internal3783)) + (import "env" "jfa" (func $internal3784)) + (import "env" "kfa" (func $internal3785)) + (import "env" "lfa" (func $internal3786)) + (import "env" "mfa" (func $internal3787)) + (import "env" "nfa" (func $internal3788)) + (import "env" "ofa" (func $internal3789)) + (import "env" "pfa" (func $internal3790)) + (import "env" "qfa" (func $internal3791)) + (import "env" "rfa" (func $internal3792)) + (import "env" "sfa" (func $internal3793)) + (import "env" "tfa" (func $internal3794)) + (import "env" "ufa" (func $internal3795)) + (import "env" "vfa" (func $internal3796)) + (import "env" "wfa" (func $internal3797)) + (import "env" "xfa" (func $internal3798)) + (import "env" "yfa" (func $internal3799)) + (import "env" "zfa" (func $internal3800)) + (import "env" "Afa" (func $internal3801)) + (import "env" "Bfa" (func $internal3802)) + (import "env" "Cfa" (func $internal3803)) + (import "env" "Dfa" (func $internal3804)) + (import "env" "Efa" (func $internal3805)) + (import "env" "Ffa" (func $internal3806)) + (import "env" "Gfa" (func $internal3807)) + (import "env" "Hfa" (func $internal3808)) + (import "env" "Ifa" (func $internal3809)) + (import "env" "Jfa" (func $internal3810)) + (import "env" "Kfa" (func $internal3811)) + (import "env" "Lfa" (func $internal3812)) + (import "env" "Mfa" (func $internal3813)) + (import "env" "Nfa" (func $internal3814)) + (import "env" "Ofa" (func $internal3815)) + (import "env" "Pfa" (func $internal3816)) + (import "env" "Qfa" (func $internal3817)) + (import "env" "Rfa" (func $internal3818)) + (import "env" "Sfa" (func $internal3819)) + (import "env" "Tfa" (func $internal3820)) + (import "env" "Ufa" (func $internal3821)) + (import "env" "Vfa" (func $internal3822)) + (import "env" "Wfa" (func $internal3823)) + (import "env" "Xfa" (func $internal3824)) + (import "env" "Yfa" (func $internal3825)) + (import "env" "Zfa" (func $internal3826)) + (import "env" "_fa" (func $internal3827)) + (import "env" "$fa" (func $internal3828)) + (import "env" "aga" (func $internal3829)) + (import "env" "bga" (func $internal3830)) + (import "env" "cga" (func $internal3831)) + (import "env" "dga" (func $internal3832)) + (import "env" "ega" (func $internal3833)) + (import "env" "fga" (func $internal3834)) + (import "env" "gga" (func $internal3835)) + (import "env" "hga" (func $internal3836)) + (import "env" "iga" (func $internal3837)) + (import "env" "jga" (func $internal3838)) + (import "env" "kga" (func $internal3839)) + (import "env" "lga" (func $internal3840)) + (import "env" "mga" (func $internal3841)) + (import "env" "nga" (func $internal3842)) + (import "env" "oga" (func $internal3843)) + (import "env" "pga" (func $internal3844)) + (import "env" "qga" (func $internal3845)) + (import "env" "rga" (func $internal3846)) + (import "env" "sga" (func $internal3847)) + (import "env" "tga" (func $internal3848)) + (import "env" "uga" (func $internal3849)) + (import "env" "vga" (func $internal3850)) + (import "env" "wga" (func $internal3851)) + (import "env" "xga" (func $internal3852)) + (import "env" "yga" (func $internal3853)) + (import "env" "zga" (func $internal3854)) + (import "env" "Aga" (func $internal3855)) + (import "env" "Bga" (func $internal3856)) + (import "env" "Cga" (func $internal3857)) + (import "env" "Dga" (func $internal3858)) + (import "env" "Ega" (func $internal3859)) + (import "env" "Fga" (func $internal3860)) + (import "env" "Gga" (func $internal3861)) + (import "env" "Hga" (func $internal3862)) + (import "env" "Iga" (func $internal3863)) + (import "env" "Jga" (func $internal3864)) + (import "env" "Kga" (func $internal3865)) + (import "env" "Lga" (func $internal3866)) + (import "env" "Mga" (func $internal3867)) + (import "env" "Nga" (func $internal3868)) + (import "env" "Oga" (func $internal3869)) + (import "env" "Pga" (func $internal3870)) + (import "env" "Qga" (func $internal3871)) + (import "env" "Rga" (func $internal3872)) + (import "env" "Sga" (func $internal3873)) + (import "env" "Tga" (func $internal3874)) + (import "env" "Uga" (func $internal3875)) + (import "env" "Vga" (func $internal3876)) + (import "env" "Wga" (func $internal3877)) + (import "env" "Xga" (func $internal3878)) + (import "env" "Yga" (func $internal3879)) + (import "env" "Zga" (func $internal3880)) + (import "env" "_ga" (func $internal3881)) + (import "env" "$ga" (func $internal3882)) + (import "env" "aha" (func $internal3883)) + (import "env" "bha" (func $internal3884)) + (import "env" "cha" (func $internal3885)) + (import "env" "dha" (func $internal3886)) + (import "env" "eha" (func $internal3887)) + (import "env" "fha" (func $internal3888)) + (import "env" "gha" (func $internal3889)) + (import "env" "hha" (func $internal3890)) + (import "env" "iha" (func $internal3891)) + (import "env" "jha" (func $internal3892)) + (import "env" "kha" (func $internal3893)) + (import "env" "lha" (func $internal3894)) + (import "env" "mha" (func $internal3895)) + (import "env" "nha" (func $internal3896)) + (import "env" "oha" (func $internal3897)) + (import "env" "pha" (func $internal3898)) + (import "env" "qha" (func $internal3899)) + (import "env" "rha" (func $internal3900)) + (import "env" "sha" (func $internal3901)) + (import "env" "tha" (func $internal3902)) + (import "env" "uha" (func $internal3903)) + (import "env" "vha" (func $internal3904)) + (import "env" "wha" (func $internal3905)) + (import "env" "xha" (func $internal3906)) + (import "env" "yha" (func $internal3907)) + (import "env" "zha" (func $internal3908)) + (import "env" "Aha" (func $internal3909)) + (import "env" "Bha" (func $internal3910)) + (import "env" "Cha" (func $internal3911)) + (import "env" "Dha" (func $internal3912)) + (import "env" "Eha" (func $internal3913)) + (import "env" "Fha" (func $internal3914)) + (import "env" "Gha" (func $internal3915)) + (import "env" "Hha" (func $internal3916)) + (import "env" "Iha" (func $internal3917)) + (import "env" "Jha" (func $internal3918)) + (import "env" "Kha" (func $internal3919)) + (import "env" "Lha" (func $internal3920)) + (import "env" "Mha" (func $internal3921)) + (import "env" "Nha" (func $internal3922)) + (import "env" "Oha" (func $internal3923)) + (import "env" "Pha" (func $internal3924)) + (import "env" "Qha" (func $internal3925)) + (import "env" "Rha" (func $internal3926)) + (import "env" "Sha" (func $internal3927)) + (import "env" "Tha" (func $internal3928)) + (import "env" "Uha" (func $internal3929)) + (import "env" "Vha" (func $internal3930)) + (import "env" "Wha" (func $internal3931)) + (import "env" "Xha" (func $internal3932)) + (import "env" "Yha" (func $internal3933)) + (import "env" "Zha" (func $internal3934)) + (import "env" "_ha" (func $internal3935)) + (import "env" "$ha" (func $internal3936)) + (import "env" "aia" (func $internal3937)) + (import "env" "bia" (func $internal3938)) + (import "env" "cia" (func $internal3939)) + (import "env" "dia" (func $internal3940)) + (import "env" "eia" (func $internal3941)) + (import "env" "fia" (func $internal3942)) + (import "env" "gia" (func $internal3943)) + (import "env" "hia" (func $internal3944)) + (import "env" "iia" (func $internal3945)) + (import "env" "jia" (func $internal3946)) + (import "env" "kia" (func $internal3947)) + (import "env" "lia" (func $internal3948)) + (import "env" "mia" (func $internal3949)) + (import "env" "nia" (func $internal3950)) + (import "env" "oia" (func $internal3951)) + (import "env" "pia" (func $internal3952)) + (import "env" "qia" (func $internal3953)) + (import "env" "ria" (func $internal3954)) + (import "env" "sia" (func $internal3955)) + (import "env" "tia" (func $internal3956)) + (import "env" "uia" (func $internal3957)) + (import "env" "via" (func $internal3958)) + (import "env" "wia" (func $internal3959)) + (import "env" "xia" (func $internal3960)) + (import "env" "yia" (func $internal3961)) + (import "env" "zia" (func $internal3962)) + (import "env" "Aia" (func $internal3963)) + (import "env" "Bia" (func $internal3964)) + (import "env" "Cia" (func $internal3965)) + (import "env" "Dia" (func $internal3966)) + (import "env" "Eia" (func $internal3967)) + (import "env" "Fia" (func $internal3968)) + (import "env" "Gia" (func $internal3969)) + (import "env" "Hia" (func $internal3970)) + (import "env" "Iia" (func $internal3971)) + (import "env" "Jia" (func $internal3972)) + (import "env" "Kia" (func $internal3973)) + (import "env" "Lia" (func $internal3974)) + (import "env" "Mia" (func $internal3975)) + (import "env" "Nia" (func $internal3976)) + (import "env" "Oia" (func $internal3977)) + (import "env" "Pia" (func $internal3978)) + (import "env" "Qia" (func $internal3979)) + (import "env" "Ria" (func $internal3980)) + (import "env" "Sia" (func $internal3981)) + (import "env" "Tia" (func $internal3982)) + (import "env" "Uia" (func $internal3983)) + (import "env" "Via" (func $internal3984)) + (import "env" "Wia" (func $internal3985)) + (import "env" "Xia" (func $internal3986)) + (import "env" "Yia" (func $internal3987)) + (import "env" "Zia" (func $internal3988)) + (import "env" "_ia" (func $internal3989)) + (import "env" "$ia" (func $internal3990)) + (import "env" "aja" (func $internal3991)) + (import "env" "bja" (func $internal3992)) + (import "env" "cja" (func $internal3993)) + (import "env" "dja" (func $internal3994)) + (import "env" "eja" (func $internal3995)) + (import "env" "fja" (func $internal3996)) + (import "env" "gja" (func $internal3997)) + (import "env" "hja" (func $internal3998)) + (import "env" "ija" (func $internal3999)) + (import "env" "jja" (func $internal4000)) + (import "env" "kja" (func $internal4001)) + (import "env" "lja" (func $internal4002)) + (import "env" "mja" (func $internal4003)) + (import "env" "nja" (func $internal4004)) + (import "env" "oja" (func $internal4005)) + (import "env" "pja" (func $internal4006)) + (import "env" "qja" (func $internal4007)) + (import "env" "rja" (func $internal4008)) + (import "env" "sja" (func $internal4009)) + (import "env" "tja" (func $internal4010)) + (import "env" "uja" (func $internal4011)) + (import "env" "vja" (func $internal4012)) + (import "env" "wja" (func $internal4013)) + (import "env" "xja" (func $internal4014)) + (import "env" "yja" (func $internal4015)) + (import "env" "zja" (func $internal4016)) + (import "env" "Aja" (func $internal4017)) + (import "env" "Bja" (func $internal4018)) + (import "env" "Cja" (func $internal4019)) + (import "env" "Dja" (func $internal4020)) + (import "env" "Eja" (func $internal4021)) + (import "env" "Fja" (func $internal4022)) + (import "env" "Gja" (func $internal4023)) + (import "env" "Hja" (func $internal4024)) + (import "env" "Ija" (func $internal4025)) + (import "env" "Jja" (func $internal4026)) + (import "env" "Kja" (func $internal4027)) + (import "env" "Lja" (func $internal4028)) + (import "env" "Mja" (func $internal4029)) + (import "env" "Nja" (func $internal4030)) + (import "env" "Oja" (func $internal4031)) + (import "env" "Pja" (func $internal4032)) + (import "env" "Qja" (func $internal4033)) + (import "env" "Rja" (func $internal4034)) + (import "env" "Sja" (func $internal4035)) + (import "env" "Tja" (func $internal4036)) + (import "env" "Uja" (func $internal4037)) + (import "env" "Vja" (func $internal4038)) + (import "env" "Wja" (func $internal4039)) + (import "env" "Xja" (func $internal4040)) + (import "env" "Yja" (func $internal4041)) + (import "env" "Zja" (func $internal4042)) + (import "env" "_ja" (func $internal4043)) + (import "env" "$ja" (func $internal4044)) + (import "env" "aka" (func $internal4045)) + (import "env" "bka" (func $internal4046)) + (import "env" "cka" (func $internal4047)) + (import "env" "dka" (func $internal4048)) + (import "env" "eka" (func $internal4049)) + (import "env" "fka" (func $internal4050)) + (import "env" "gka" (func $internal4051)) + (import "env" "hka" (func $internal4052)) + (import "env" "ika" (func $internal4053)) + (import "env" "jka" (func $internal4054)) + (import "env" "kka" (func $internal4055)) + (import "env" "lka" (func $internal4056)) + (import "env" "mka" (func $internal4057)) + (import "env" "nka" (func $internal4058)) + (import "env" "oka" (func $internal4059)) + (import "env" "pka" (func $internal4060)) + (import "env" "qka" (func $internal4061)) + (import "env" "rka" (func $internal4062)) + (import "env" "ska" (func $internal4063)) + (import "env" "tka" (func $internal4064)) + (import "env" "uka" (func $internal4065)) + (import "env" "vka" (func $internal4066)) + (import "env" "wka" (func $internal4067)) + (import "env" "xka" (func $internal4068)) + (import "env" "yka" (func $internal4069)) + (import "env" "zka" (func $internal4070)) + (import "env" "Aka" (func $internal4071)) + (import "env" "Bka" (func $internal4072)) + (import "env" "Cka" (func $internal4073)) + (import "env" "Dka" (func $internal4074)) + (import "env" "Eka" (func $internal4075)) + (import "env" "Fka" (func $internal4076)) + (import "env" "Gka" (func $internal4077)) + (import "env" "Hka" (func $internal4078)) + (import "env" "Ika" (func $internal4079)) + (import "env" "Jka" (func $internal4080)) + (import "env" "Kka" (func $internal4081)) + (import "env" "Lka" (func $internal4082)) + (import "env" "Mka" (func $internal4083)) + (import "env" "Nka" (func $internal4084)) + (import "env" "Oka" (func $internal4085)) + (import "env" "Pka" (func $internal4086)) + (import "env" "Qka" (func $internal4087)) + (import "env" "Rka" (func $internal4088)) + (import "env" "Ska" (func $internal4089)) + (import "env" "Tka" (func $internal4090)) + (import "env" "Uka" (func $internal4091)) + (import "env" "Vka" (func $internal4092)) + (import "env" "Wka" (func $internal4093)) + (import "env" "Xka" (func $internal4094)) + (import "env" "Yka" (func $internal4095)) + (import "env" "Zka" (func $internal4096)) + (import "env" "_ka" (func $internal4097)) + (import "env" "$ka" (func $internal4098)) + (import "env" "ala" (func $internal4099)) + (import "env" "bla" (func $internal4100)) + (import "env" "cla" (func $internal4101)) + (import "env" "dla" (func $internal4102)) + (import "env" "ela" (func $internal4103)) + (import "env" "fla" (func $internal4104)) + (import "env" "gla" (func $internal4105)) + (import "env" "hla" (func $internal4106)) + (import "env" "ila" (func $internal4107)) + (import "env" "jla" (func $internal4108)) + (import "env" "kla" (func $internal4109)) + (import "env" "lla" (func $internal4110)) + (import "env" "mla" (func $internal4111)) + (import "env" "nla" (func $internal4112)) + (import "env" "ola" (func $internal4113)) + (import "env" "pla" (func $internal4114)) + (import "env" "qla" (func $internal4115)) + (import "env" "rla" (func $internal4116)) + (import "env" "sla" (func $internal4117)) + (import "env" "tla" (func $internal4118)) + (import "env" "ula" (func $internal4119)) + (import "env" "vla" (func $internal4120)) + (import "env" "wla" (func $internal4121)) + (import "env" "xla" (func $internal4122)) + (import "env" "yla" (func $internal4123)) + (import "env" "zla" (func $internal4124)) + (import "env" "Ala" (func $internal4125)) + (import "env" "Bla" (func $internal4126)) + (import "env" "Cla" (func $internal4127)) + (import "env" "Dla" (func $internal4128)) + (import "env" "Ela" (func $internal4129)) + (import "env" "Fla" (func $internal4130)) + (import "env" "Gla" (func $internal4131)) + (import "env" "Hla" (func $internal4132)) + (import "env" "Ila" (func $internal4133)) + (import "env" "Jla" (func $internal4134)) + (import "env" "Kla" (func $internal4135)) + (import "env" "Lla" (func $internal4136)) + (import "env" "Mla" (func $internal4137)) + (import "env" "Nla" (func $internal4138)) + (import "env" "Ola" (func $internal4139)) + (import "env" "Pla" (func $internal4140)) + (import "env" "Qla" (func $internal4141)) + (import "env" "Rla" (func $internal4142)) + (import "env" "Sla" (func $internal4143)) + (import "env" "Tla" (func $internal4144)) + (import "env" "Ula" (func $internal4145)) + (import "env" "Vla" (func $internal4146)) + (import "env" "Wla" (func $internal4147)) + (import "env" "Xla" (func $internal4148)) + (import "env" "Yla" (func $internal4149)) + (import "env" "Zla" (func $internal4150)) + (import "env" "_la" (func $internal4151)) + (import "env" "$la" (func $internal4152)) + (import "env" "ama" (func $internal4153)) + (import "env" "bma" (func $internal4154)) + (import "env" "cma" (func $internal4155)) + (import "env" "dma" (func $internal4156)) + (import "env" "ema" (func $internal4157)) + (import "env" "fma" (func $internal4158)) + (import "env" "gma" (func $internal4159)) + (import "env" "hma" (func $internal4160)) + (import "env" "ima" (func $internal4161)) + (import "env" "jma" (func $internal4162)) + (import "env" "kma" (func $internal4163)) + (import "env" "lma" (func $internal4164)) + (import "env" "mma" (func $internal4165)) + (import "env" "nma" (func $internal4166)) + (import "env" "oma" (func $internal4167)) + (import "env" "pma" (func $internal4168)) + (import "env" "qma" (func $internal4169)) + (import "env" "rma" (func $internal4170)) + (import "env" "sma" (func $internal4171)) + (import "env" "tma" (func $internal4172)) + (import "env" "uma" (func $internal4173)) + (import "env" "vma" (func $internal4174)) + (import "env" "wma" (func $internal4175)) + (import "env" "xma" (func $internal4176)) + (import "env" "yma" (func $internal4177)) + (import "env" "zma" (func $internal4178)) + (import "env" "Ama" (func $internal4179)) + (import "env" "Bma" (func $internal4180)) + (import "env" "Cma" (func $internal4181)) + (import "env" "Dma" (func $internal4182)) + (import "env" "Ema" (func $internal4183)) + (import "env" "Fma" (func $internal4184)) + (import "env" "Gma" (func $internal4185)) + (import "env" "Hma" (func $internal4186)) + (import "env" "Ima" (func $internal4187)) + (import "env" "Jma" (func $internal4188)) + (import "env" "Kma" (func $internal4189)) + (import "env" "Lma" (func $internal4190)) + (import "env" "Mma" (func $internal4191)) + (import "env" "Nma" (func $internal4192)) + (import "env" "Oma" (func $internal4193)) + (import "env" "Pma" (func $internal4194)) + (import "env" "Qma" (func $internal4195)) + (import "env" "Rma" (func $internal4196)) + (import "env" "Sma" (func $internal4197)) + (import "env" "Tma" (func $internal4198)) + (import "env" "Uma" (func $internal4199)) + (import "env" "Vma" (func $internal4200)) + (import "env" "Wma" (func $internal4201)) + (import "env" "Xma" (func $internal4202)) + (import "env" "Yma" (func $internal4203)) + (import "env" "Zma" (func $internal4204)) + (import "env" "_ma" (func $internal4205)) + (import "env" "$ma" (func $internal4206)) + (import "env" "ana" (func $internal4207)) + (import "env" "bna" (func $internal4208)) + (import "env" "cna" (func $internal4209)) + (import "env" "dna" (func $internal4210)) + (import "env" "ena" (func $internal4211)) + (import "env" "fna" (func $internal4212)) + (import "env" "gna" (func $internal4213)) + (import "env" "hna" (func $internal4214)) + (import "env" "ina" (func $internal4215)) + (import "env" "jna" (func $internal4216)) + (import "env" "kna" (func $internal4217)) + (import "env" "lna" (func $internal4218)) + (import "env" "mna" (func $internal4219)) + (import "env" "nna" (func $internal4220)) + (import "env" "ona" (func $internal4221)) + (import "env" "pna" (func $internal4222)) + (import "env" "qna" (func $internal4223)) + (import "env" "rna" (func $internal4224)) + (import "env" "sna" (func $internal4225)) + (import "env" "tna" (func $internal4226)) + (import "env" "una" (func $internal4227)) + (import "env" "vna" (func $internal4228)) + (import "env" "wna" (func $internal4229)) + (import "env" "xna" (func $internal4230)) + (import "env" "yna" (func $internal4231)) + (import "env" "zna" (func $internal4232)) + (import "env" "Ana" (func $internal4233)) + (import "env" "Bna" (func $internal4234)) + (import "env" "Cna" (func $internal4235)) + (import "env" "Dna" (func $internal4236)) + (import "env" "Ena" (func $internal4237)) + (import "env" "Fna" (func $internal4238)) + (import "env" "Gna" (func $internal4239)) + (import "env" "Hna" (func $internal4240)) + (import "env" "Ina" (func $internal4241)) + (import "env" "Jna" (func $internal4242)) + (import "env" "Kna" (func $internal4243)) + (import "env" "Lna" (func $internal4244)) + (import "env" "Mna" (func $internal4245)) + (import "env" "Nna" (func $internal4246)) + (import "env" "Ona" (func $internal4247)) + (import "env" "Pna" (func $internal4248)) + (import "env" "Qna" (func $internal4249)) + (import "env" "Rna" (func $internal4250)) + (import "env" "Sna" (func $internal4251)) + (import "env" "Tna" (func $internal4252)) + (import "env" "Una" (func $internal4253)) + (import "env" "Vna" (func $internal4254)) + (import "env" "Wna" (func $internal4255)) + (import "env" "Xna" (func $internal4256)) + (import "env" "Yna" (func $internal4257)) + (import "env" "Zna" (func $internal4258)) + (import "env" "_na" (func $internal4259)) + (import "env" "$na" (func $internal4260)) + (import "env" "aoa" (func $internal4261)) + (import "env" "boa" (func $internal4262)) + (import "env" "coa" (func $internal4263)) + (import "env" "doa" (func $internal4264)) + (import "env" "eoa" (func $internal4265)) + (import "env" "foa" (func $internal4266)) + (import "env" "goa" (func $internal4267)) + (import "env" "hoa" (func $internal4268)) + (import "env" "ioa" (func $internal4269)) + (import "env" "joa" (func $internal4270)) + (import "env" "koa" (func $internal4271)) + (import "env" "loa" (func $internal4272)) + (import "env" "moa" (func $internal4273)) + (import "env" "noa" (func $internal4274)) + (import "env" "ooa" (func $internal4275)) + (import "env" "poa" (func $internal4276)) + (import "env" "qoa" (func $internal4277)) + (import "env" "roa" (func $internal4278)) + (import "env" "soa" (func $internal4279)) + (import "env" "toa" (func $internal4280)) + (import "env" "uoa" (func $internal4281)) + (import "env" "voa" (func $internal4282)) + (import "env" "woa" (func $internal4283)) + (import "env" "xoa" (func $internal4284)) + (import "env" "yoa" (func $internal4285)) + (import "env" "zoa" (func $internal4286)) + (import "env" "Aoa" (func $internal4287)) + (import "env" "Boa" (func $internal4288)) + (import "env" "Coa" (func $internal4289)) + (import "env" "Doa" (func $internal4290)) + (import "env" "Eoa" (func $internal4291)) + (import "env" "Foa" (func $internal4292)) + (import "env" "Goa" (func $internal4293)) + (import "env" "Hoa" (func $internal4294)) + (import "env" "Ioa" (func $internal4295)) + (import "env" "Joa" (func $internal4296)) + (import "env" "Koa" (func $internal4297)) + (import "env" "Loa" (func $internal4298)) + (import "env" "Moa" (func $internal4299)) + (import "env" "Noa" (func $internal4300)) + (import "env" "Ooa" (func $internal4301)) + (import "env" "Poa" (func $internal4302)) + (import "env" "Qoa" (func $internal4303)) + (import "env" "Roa" (func $internal4304)) + (import "env" "Soa" (func $internal4305)) + (import "env" "Toa" (func $internal4306)) + (import "env" "Uoa" (func $internal4307)) + (import "env" "Voa" (func $internal4308)) + (import "env" "Woa" (func $internal4309)) + (import "env" "Xoa" (func $internal4310)) + (import "env" "Yoa" (func $internal4311)) + (import "env" "Zoa" (func $internal4312)) + (import "env" "_oa" (func $internal4313)) + (import "env" "$oa" (func $internal4314)) + (import "env" "apa" (func $internal4315)) + (import "env" "bpa" (func $internal4316)) + (import "env" "cpa" (func $internal4317)) + (import "env" "dpa" (func $internal4318)) + (import "env" "epa" (func $internal4319)) + (import "env" "fpa" (func $internal4320)) + (import "env" "gpa" (func $internal4321)) + (import "env" "hpa" (func $internal4322)) + (import "env" "ipa" (func $internal4323)) + (import "env" "jpa" (func $internal4324)) + (import "env" "kpa" (func $internal4325)) + (import "env" "lpa" (func $internal4326)) + (import "env" "mpa" (func $internal4327)) + (import "env" "npa" (func $internal4328)) + (import "env" "opa" (func $internal4329)) + (import "env" "ppa" (func $internal4330)) + (import "env" "qpa" (func $internal4331)) + (import "env" "rpa" (func $internal4332)) + (import "env" "spa" (func $internal4333)) + (import "env" "tpa" (func $internal4334)) + (import "env" "upa" (func $internal4335)) + (import "env" "vpa" (func $internal4336)) + (import "env" "wpa" (func $internal4337)) + (import "env" "xpa" (func $internal4338)) + (import "env" "ypa" (func $internal4339)) + (import "env" "zpa" (func $internal4340)) + (import "env" "Apa" (func $internal4341)) + (import "env" "Bpa" (func $internal4342)) + (import "env" "Cpa" (func $internal4343)) + (import "env" "Dpa" (func $internal4344)) + (import "env" "Epa" (func $internal4345)) + (import "env" "Fpa" (func $internal4346)) + (import "env" "Gpa" (func $internal4347)) + (import "env" "Hpa" (func $internal4348)) + (import "env" "Ipa" (func $internal4349)) + (import "env" "Jpa" (func $internal4350)) + (import "env" "Kpa" (func $internal4351)) + (import "env" "Lpa" (func $internal4352)) + (import "env" "Mpa" (func $internal4353)) + (import "env" "Npa" (func $internal4354)) + (import "env" "Opa" (func $internal4355)) + (import "env" "Ppa" (func $internal4356)) + (import "env" "Qpa" (func $internal4357)) + (import "env" "Rpa" (func $internal4358)) + (import "env" "Spa" (func $internal4359)) + (import "env" "Tpa" (func $internal4360)) + (import "env" "Upa" (func $internal4361)) + (import "env" "Vpa" (func $internal4362)) + (import "env" "Wpa" (func $internal4363)) + (import "env" "Xpa" (func $internal4364)) + (import "env" "Ypa" (func $internal4365)) + (import "env" "Zpa" (func $internal4366)) + (import "env" "_pa" (func $internal4367)) + (import "env" "$pa" (func $internal4368)) + (import "env" "aqa" (func $internal4369)) + (import "env" "bqa" (func $internal4370)) + (import "env" "cqa" (func $internal4371)) + (import "env" "dqa" (func $internal4372)) + (import "env" "eqa" (func $internal4373)) + (import "env" "fqa" (func $internal4374)) + (import "env" "gqa" (func $internal4375)) + (import "env" "hqa" (func $internal4376)) + (import "env" "iqa" (func $internal4377)) + (import "env" "jqa" (func $internal4378)) + (import "env" "kqa" (func $internal4379)) + (import "env" "lqa" (func $internal4380)) + (import "env" "mqa" (func $internal4381)) + (import "env" "nqa" (func $internal4382)) + (import "env" "oqa" (func $internal4383)) + (import "env" "pqa" (func $internal4384)) + (import "env" "qqa" (func $internal4385)) + (import "env" "rqa" (func $internal4386)) + (import "env" "sqa" (func $internal4387)) + (import "env" "tqa" (func $internal4388)) + (import "env" "uqa" (func $internal4389)) + (import "env" "vqa" (func $internal4390)) + (import "env" "wqa" (func $internal4391)) + (import "env" "xqa" (func $internal4392)) + (import "env" "yqa" (func $internal4393)) + (import "env" "zqa" (func $internal4394)) + (import "env" "Aqa" (func $internal4395)) + (import "env" "Bqa" (func $internal4396)) + (import "env" "Cqa" (func $internal4397)) + (import "env" "Dqa" (func $internal4398)) + (import "env" "Eqa" (func $internal4399)) + (import "env" "Fqa" (func $internal4400)) + (import "env" "Gqa" (func $internal4401)) + (import "env" "Hqa" (func $internal4402)) + (import "env" "Iqa" (func $internal4403)) + (import "env" "Jqa" (func $internal4404)) + (import "env" "Kqa" (func $internal4405)) + (import "env" "Lqa" (func $internal4406)) + (import "env" "Mqa" (func $internal4407)) + (import "env" "Nqa" (func $internal4408)) + (import "env" "Oqa" (func $internal4409)) + (import "env" "Pqa" (func $internal4410)) + (import "env" "Qqa" (func $internal4411)) + (import "env" "Rqa" (func $internal4412)) + (import "env" "Sqa" (func $internal4413)) + (import "env" "Tqa" (func $internal4414)) + (import "env" "Uqa" (func $internal4415)) + (import "env" "Vqa" (func $internal4416)) + (import "env" "Wqa" (func $internal4417)) + (import "env" "Xqa" (func $internal4418)) + (import "env" "Yqa" (func $internal4419)) + (import "env" "Zqa" (func $internal4420)) + (import "env" "_qa" (func $internal4421)) + (import "env" "$qa" (func $internal4422)) + (import "env" "ara" (func $internal4423)) + (import "env" "bra" (func $internal4424)) + (import "env" "cra" (func $internal4425)) + (import "env" "dra" (func $internal4426)) + (import "env" "era" (func $internal4427)) + (import "env" "fra" (func $internal4428)) + (import "env" "gra" (func $internal4429)) + (import "env" "hra" (func $internal4430)) + (import "env" "ira" (func $internal4431)) + (import "env" "jra" (func $internal4432)) + (import "env" "kra" (func $internal4433)) + (import "env" "lra" (func $internal4434)) + (import "env" "mra" (func $internal4435)) + (import "env" "nra" (func $internal4436)) + (import "env" "ora" (func $internal4437)) + (import "env" "pra" (func $internal4438)) + (import "env" "qra" (func $internal4439)) + (import "env" "rra" (func $internal4440)) + (import "env" "sra" (func $internal4441)) + (import "env" "tra" (func $internal4442)) + (import "env" "ura" (func $internal4443)) + (import "env" "vra" (func $internal4444)) + (import "env" "wra" (func $internal4445)) + (import "env" "xra" (func $internal4446)) + (import "env" "yra" (func $internal4447)) + (import "env" "zra" (func $internal4448)) + (import "env" "Ara" (func $internal4449)) + (import "env" "Bra" (func $internal4450)) + (import "env" "Cra" (func $internal4451)) + (import "env" "Dra" (func $internal4452)) + (import "env" "Era" (func $internal4453)) + (import "env" "Fra" (func $internal4454)) + (import "env" "Gra" (func $internal4455)) + (import "env" "Hra" (func $internal4456)) + (import "env" "Ira" (func $internal4457)) + (import "env" "Jra" (func $internal4458)) + (import "env" "Kra" (func $internal4459)) + (import "env" "Lra" (func $internal4460)) + (import "env" "Mra" (func $internal4461)) + (import "env" "Nra" (func $internal4462)) + (import "env" "Ora" (func $internal4463)) + (import "env" "Pra" (func $internal4464)) + (import "env" "Qra" (func $internal4465)) + (import "env" "Rra" (func $internal4466)) + (import "env" "Sra" (func $internal4467)) + (import "env" "Tra" (func $internal4468)) + (import "env" "Ura" (func $internal4469)) + (import "env" "Vra" (func $internal4470)) + (import "env" "Wra" (func $internal4471)) + (import "env" "Xra" (func $internal4472)) + (import "env" "Yra" (func $internal4473)) + (import "env" "Zra" (func $internal4474)) + (import "env" "_ra" (func $internal4475)) + (import "env" "$ra" (func $internal4476)) + (import "env" "asa" (func $internal4477)) + (import "env" "bsa" (func $internal4478)) + (import "env" "csa" (func $internal4479)) + (import "env" "dsa" (func $internal4480)) + (import "env" "esa" (func $internal4481)) + (import "env" "fsa" (func $internal4482)) + (import "env" "gsa" (func $internal4483)) + (import "env" "hsa" (func $internal4484)) + (import "env" "isa" (func $internal4485)) + (import "env" "jsa" (func $internal4486)) + (import "env" "ksa" (func $internal4487)) + (import "env" "lsa" (func $internal4488)) + (import "env" "msa" (func $internal4489)) + (import "env" "nsa" (func $internal4490)) + (import "env" "osa" (func $internal4491)) + (import "env" "psa" (func $internal4492)) + (import "env" "qsa" (func $internal4493)) + (import "env" "rsa" (func $internal4494)) + (import "env" "ssa" (func $internal4495)) + (import "env" "tsa" (func $internal4496)) + (import "env" "usa" (func $internal4497)) + (import "env" "vsa" (func $internal4498)) + (import "env" "wsa" (func $internal4499)) + (import "env" "xsa" (func $internal4500)) + (import "env" "ysa" (func $internal4501)) + (import "env" "zsa" (func $internal4502)) + (import "env" "Asa" (func $internal4503)) + (import "env" "Bsa" (func $internal4504)) + (import "env" "Csa" (func $internal4505)) + (import "env" "Dsa" (func $internal4506)) + (import "env" "Esa" (func $internal4507)) + (import "env" "Fsa" (func $internal4508)) + (import "env" "Gsa" (func $internal4509)) + (import "env" "Hsa" (func $internal4510)) + (import "env" "Isa" (func $internal4511)) + (import "env" "Jsa" (func $internal4512)) + (import "env" "Ksa" (func $internal4513)) + (import "env" "Lsa" (func $internal4514)) + (import "env" "Msa" (func $internal4515)) + (import "env" "Nsa" (func $internal4516)) + (import "env" "Osa" (func $internal4517)) + (import "env" "Psa" (func $internal4518)) + (import "env" "Qsa" (func $internal4519)) + (import "env" "Rsa" (func $internal4520)) + (import "env" "Ssa" (func $internal4521)) + (import "env" "Tsa" (func $internal4522)) + (import "env" "Usa" (func $internal4523)) + (import "env" "Vsa" (func $internal4524)) + (import "env" "Wsa" (func $internal4525)) + (import "env" "Xsa" (func $internal4526)) + (import "env" "Ysa" (func $internal4527)) + (import "env" "Zsa" (func $internal4528)) + (import "env" "_sa" (func $internal4529)) + (import "env" "$sa" (func $internal4530)) + (import "env" "ata" (func $internal4531)) + (import "env" "bta" (func $internal4532)) + (import "env" "cta" (func $internal4533)) + (import "env" "dta" (func $internal4534)) + (import "env" "eta" (func $internal4535)) + (import "env" "fta" (func $internal4536)) + (import "env" "gta" (func $internal4537)) + (import "env" "hta" (func $internal4538)) + (import "env" "ita" (func $internal4539)) + (import "env" "jta" (func $internal4540)) + (import "env" "kta" (func $internal4541)) + (import "env" "lta" (func $internal4542)) + (import "env" "mta" (func $internal4543)) + (import "env" "nta" (func $internal4544)) + (import "env" "ota" (func $internal4545)) + (import "env" "pta" (func $internal4546)) + (import "env" "qta" (func $internal4547)) + (import "env" "rta" (func $internal4548)) + (import "env" "sta" (func $internal4549)) + (import "env" "tta" (func $internal4550)) + (import "env" "uta" (func $internal4551)) + (import "env" "vta" (func $internal4552)) + (import "env" "wta" (func $internal4553)) + (import "env" "xta" (func $internal4554)) + (import "env" "yta" (func $internal4555)) + (import "env" "zta" (func $internal4556)) + (import "env" "Ata" (func $internal4557)) + (import "env" "Bta" (func $internal4558)) + (import "env" "Cta" (func $internal4559)) + (import "env" "Dta" (func $internal4560)) + (import "env" "Eta" (func $internal4561)) + (import "env" "Fta" (func $internal4562)) + (import "env" "Gta" (func $internal4563)) + (import "env" "Hta" (func $internal4564)) + (import "env" "Ita" (func $internal4565)) + (import "env" "Jta" (func $internal4566)) + (import "env" "Kta" (func $internal4567)) + (import "env" "Lta" (func $internal4568)) + (import "env" "Mta" (func $internal4569)) + (import "env" "Nta" (func $internal4570)) + (import "env" "Ota" (func $internal4571)) + (import "env" "Pta" (func $internal4572)) + (import "env" "Qta" (func $internal4573)) + (import "env" "Rta" (func $internal4574)) + (import "env" "Sta" (func $internal4575)) + (import "env" "Tta" (func $internal4576)) + (import "env" "Uta" (func $internal4577)) + (import "env" "Vta" (func $internal4578)) + (import "env" "Wta" (func $internal4579)) + (import "env" "Xta" (func $internal4580)) + (import "env" "Yta" (func $internal4581)) + (import "env" "Zta" (func $internal4582)) + (import "env" "_ta" (func $internal4583)) + (import "env" "$ta" (func $internal4584)) + (import "env" "aua" (func $internal4585)) + (import "env" "bua" (func $internal4586)) + (import "env" "cua" (func $internal4587)) + (import "env" "dua" (func $internal4588)) + (import "env" "eua" (func $internal4589)) + (import "env" "fua" (func $internal4590)) + (import "env" "gua" (func $internal4591)) + (import "env" "hua" (func $internal4592)) + (import "env" "iua" (func $internal4593)) + (import "env" "jua" (func $internal4594)) + (import "env" "kua" (func $internal4595)) + (import "env" "lua" (func $internal4596)) + (import "env" "mua" (func $internal4597)) + (import "env" "nua" (func $internal4598)) + (import "env" "oua" (func $internal4599)) + (import "env" "pua" (func $internal4600)) + (import "env" "qua" (func $internal4601)) + (import "env" "rua" (func $internal4602)) + (import "env" "sua" (func $internal4603)) + (import "env" "tua" (func $internal4604)) + (import "env" "uua" (func $internal4605)) + (import "env" "vua" (func $internal4606)) + (import "env" "wua" (func $internal4607)) + (import "env" "xua" (func $internal4608)) + (import "env" "yua" (func $internal4609)) + (import "env" "zua" (func $internal4610)) + (import "env" "Aua" (func $internal4611)) + (import "env" "Bua" (func $internal4612)) + (import "env" "Cua" (func $internal4613)) + (import "env" "Dua" (func $internal4614)) + (import "env" "Eua" (func $internal4615)) + (import "env" "Fua" (func $internal4616)) + (import "env" "Gua" (func $internal4617)) + (import "env" "Hua" (func $internal4618)) + (import "env" "Iua" (func $internal4619)) + (import "env" "Jua" (func $internal4620)) + (import "env" "Kua" (func $internal4621)) + (import "env" "Lua" (func $internal4622)) + (import "env" "Mua" (func $internal4623)) + (import "env" "Nua" (func $internal4624)) + (import "env" "Oua" (func $internal4625)) + (import "env" "Pua" (func $internal4626)) + (import "env" "Qua" (func $internal4627)) + (import "env" "Rua" (func $internal4628)) + (import "env" "Sua" (func $internal4629)) + (import "env" "Tua" (func $internal4630)) + (import "env" "Uua" (func $internal4631)) + (import "env" "Vua" (func $internal4632)) + (import "env" "Wua" (func $internal4633)) + (import "env" "Xua" (func $internal4634)) + (import "env" "Yua" (func $internal4635)) + (import "env" "Zua" (func $internal4636)) + (import "env" "_ua" (func $internal4637)) + (import "env" "$ua" (func $internal4638)) + (import "env" "ava" (func $internal4639)) + (import "env" "bva" (func $internal4640)) + (import "env" "cva" (func $internal4641)) + (import "env" "dva" (func $internal4642)) + (import "env" "eva" (func $internal4643)) + (import "env" "fva" (func $internal4644)) + (import "env" "gva" (func $internal4645)) + (import "env" "hva" (func $internal4646)) + (import "env" "iva" (func $internal4647)) + (import "env" "jva" (func $internal4648)) + (import "env" "kva" (func $internal4649)) + (import "env" "lva" (func $internal4650)) + (import "env" "mva" (func $internal4651)) + (import "env" "nva" (func $internal4652)) + (import "env" "ova" (func $internal4653)) + (import "env" "pva" (func $internal4654)) + (import "env" "qva" (func $internal4655)) + (import "env" "rva" (func $internal4656)) + (import "env" "sva" (func $internal4657)) + (import "env" "tva" (func $internal4658)) + (import "env" "uva" (func $internal4659)) + (import "env" "vva" (func $internal4660)) + (import "env" "wva" (func $internal4661)) + (import "env" "xva" (func $internal4662)) + (import "env" "yva" (func $internal4663)) + (import "env" "zva" (func $internal4664)) + (import "env" "Ava" (func $internal4665)) + (import "env" "Bva" (func $internal4666)) + (import "env" "Cva" (func $internal4667)) + (import "env" "Dva" (func $internal4668)) + (import "env" "Eva" (func $internal4669)) + (import "env" "Fva" (func $internal4670)) + (import "env" "Gva" (func $internal4671)) + (import "env" "Hva" (func $internal4672)) + (import "env" "Iva" (func $internal4673)) + (import "env" "Jva" (func $internal4674)) + (import "env" "Kva" (func $internal4675)) + (import "env" "Lva" (func $internal4676)) + (import "env" "Mva" (func $internal4677)) + (import "env" "Nva" (func $internal4678)) + (import "env" "Ova" (func $internal4679)) + (import "env" "Pva" (func $internal4680)) + (import "env" "Qva" (func $internal4681)) + (import "env" "Rva" (func $internal4682)) + (import "env" "Sva" (func $internal4683)) + (import "env" "Tva" (func $internal4684)) + (import "env" "Uva" (func $internal4685)) + (import "env" "Vva" (func $internal4686)) + (import "env" "Wva" (func $internal4687)) + (import "env" "Xva" (func $internal4688)) + (import "env" "Yva" (func $internal4689)) + (import "env" "Zva" (func $internal4690)) + (import "env" "_va" (func $internal4691)) + (import "env" "$va" (func $internal4692)) + (import "env" "awa" (func $internal4693)) + (import "env" "bwa" (func $internal4694)) + (import "env" "cwa" (func $internal4695)) + (import "env" "dwa" (func $internal4696)) + (import "env" "ewa" (func $internal4697)) + (import "env" "fwa" (func $internal4698)) + (import "env" "gwa" (func $internal4699)) + (import "env" "hwa" (func $internal4700)) + (import "env" "iwa" (func $internal4701)) + (import "env" "jwa" (func $internal4702)) + (import "env" "kwa" (func $internal4703)) + (import "env" "lwa" (func $internal4704)) + (import "env" "mwa" (func $internal4705)) + (import "env" "nwa" (func $internal4706)) + (import "env" "owa" (func $internal4707)) + (import "env" "pwa" (func $internal4708)) + (import "env" "qwa" (func $internal4709)) + (import "env" "rwa" (func $internal4710)) + (import "env" "swa" (func $internal4711)) + (import "env" "twa" (func $internal4712)) + (import "env" "uwa" (func $internal4713)) + (import "env" "vwa" (func $internal4714)) + (import "env" "wwa" (func $internal4715)) + (import "env" "xwa" (func $internal4716)) + (import "env" "ywa" (func $internal4717)) + (import "env" "zwa" (func $internal4718)) + (import "env" "Awa" (func $internal4719)) + (import "env" "Bwa" (func $internal4720)) + (import "env" "Cwa" (func $internal4721)) + (import "env" "Dwa" (func $internal4722)) + (import "env" "Ewa" (func $internal4723)) + (import "env" "Fwa" (func $internal4724)) + (import "env" "Gwa" (func $internal4725)) + (import "env" "Hwa" (func $internal4726)) + (import "env" "Iwa" (func $internal4727)) + (import "env" "Jwa" (func $internal4728)) + (import "env" "Kwa" (func $internal4729)) + (import "env" "Lwa" (func $internal4730)) + (import "env" "Mwa" (func $internal4731)) + (import "env" "Nwa" (func $internal4732)) + (import "env" "Owa" (func $internal4733)) + (import "env" "Pwa" (func $internal4734)) + (import "env" "Qwa" (func $internal4735)) + (import "env" "Rwa" (func $internal4736)) + (import "env" "Swa" (func $internal4737)) + (import "env" "Twa" (func $internal4738)) + (import "env" "Uwa" (func $internal4739)) + (import "env" "Vwa" (func $internal4740)) + (import "env" "Wwa" (func $internal4741)) + (import "env" "Xwa" (func $internal4742)) + (import "env" "Ywa" (func $internal4743)) + (import "env" "Zwa" (func $internal4744)) + (import "env" "_wa" (func $internal4745)) + (import "env" "$wa" (func $internal4746)) + (import "env" "axa" (func $internal4747)) + (import "env" "bxa" (func $internal4748)) + (import "env" "cxa" (func $internal4749)) + (import "env" "dxa" (func $internal4750)) + (import "env" "exa" (func $internal4751)) + (import "env" "fxa" (func $internal4752)) + (import "env" "gxa" (func $internal4753)) + (import "env" "hxa" (func $internal4754)) + (import "env" "ixa" (func $internal4755)) + (import "env" "jxa" (func $internal4756)) + (import "env" "kxa" (func $internal4757)) + (import "env" "lxa" (func $internal4758)) + (import "env" "mxa" (func $internal4759)) + (import "env" "nxa" (func $internal4760)) + (import "env" "oxa" (func $internal4761)) + (import "env" "pxa" (func $internal4762)) + (import "env" "qxa" (func $internal4763)) + (import "env" "rxa" (func $internal4764)) + (import "env" "sxa" (func $internal4765)) + (import "env" "txa" (func $internal4766)) + (import "env" "uxa" (func $internal4767)) + (import "env" "vxa" (func $internal4768)) + (import "env" "wxa" (func $internal4769)) + (import "env" "xxa" (func $internal4770)) + (import "env" "yxa" (func $internal4771)) + (import "env" "zxa" (func $internal4772)) + (import "env" "Axa" (func $internal4773)) + (import "env" "Bxa" (func $internal4774)) + (import "env" "Cxa" (func $internal4775)) + (import "env" "Dxa" (func $internal4776)) + (import "env" "Exa" (func $internal4777)) + (import "env" "Fxa" (func $internal4778)) + (import "env" "Gxa" (func $internal4779)) + (import "env" "Hxa" (func $internal4780)) + (import "env" "Ixa" (func $internal4781)) + (import "env" "Jxa" (func $internal4782)) + (import "env" "Kxa" (func $internal4783)) + (import "env" "Lxa" (func $internal4784)) + (import "env" "Mxa" (func $internal4785)) + (import "env" "Nxa" (func $internal4786)) + (import "env" "Oxa" (func $internal4787)) + (import "env" "Pxa" (func $internal4788)) + (import "env" "Qxa" (func $internal4789)) + (import "env" "Rxa" (func $internal4790)) + (import "env" "Sxa" (func $internal4791)) + (import "env" "Txa" (func $internal4792)) + (import "env" "Uxa" (func $internal4793)) + (import "env" "Vxa" (func $internal4794)) + (import "env" "Wxa" (func $internal4795)) + (import "env" "Xxa" (func $internal4796)) + (import "env" "Yxa" (func $internal4797)) + (import "env" "Zxa" (func $internal4798)) + (import "env" "_xa" (func $internal4799)) + (import "env" "$xa" (func $internal4800)) + (import "env" "aya" (func $internal4801)) + (import "env" "bya" (func $internal4802)) + (import "env" "cya" (func $internal4803)) + (import "env" "dya" (func $internal4804)) + (import "env" "eya" (func $internal4805)) + (import "env" "fya" (func $internal4806)) + (import "env" "gya" (func $internal4807)) + (import "env" "hya" (func $internal4808)) + (import "env" "iya" (func $internal4809)) + (import "env" "jya" (func $internal4810)) + (import "env" "kya" (func $internal4811)) + (import "env" "lya" (func $internal4812)) + (import "env" "mya" (func $internal4813)) + (import "env" "nya" (func $internal4814)) + (import "env" "oya" (func $internal4815)) + (import "env" "pya" (func $internal4816)) + (import "env" "qya" (func $internal4817)) + (import "env" "rya" (func $internal4818)) + (import "env" "sya" (func $internal4819)) + (import "env" "tya" (func $internal4820)) + (import "env" "uya" (func $internal4821)) + (import "env" "vya" (func $internal4822)) + (import "env" "wya" (func $internal4823)) + (import "env" "xya" (func $internal4824)) + (import "env" "yya" (func $internal4825)) + (import "env" "zya" (func $internal4826)) + (import "env" "Aya" (func $internal4827)) + (import "env" "Bya" (func $internal4828)) + (import "env" "Cya" (func $internal4829)) + (import "env" "Dya" (func $internal4830)) + (import "env" "Eya" (func $internal4831)) + (import "env" "Fya" (func $internal4832)) + (import "env" "Gya" (func $internal4833)) + (import "env" "Hya" (func $internal4834)) + (import "env" "Iya" (func $internal4835)) + (import "env" "Jya" (func $internal4836)) + (import "env" "Kya" (func $internal4837)) + (import "env" "Lya" (func $internal4838)) + (import "env" "Mya" (func $internal4839)) + (import "env" "Nya" (func $internal4840)) + (import "env" "Oya" (func $internal4841)) + (import "env" "Pya" (func $internal4842)) + (import "env" "Qya" (func $internal4843)) + (import "env" "Rya" (func $internal4844)) + (import "env" "Sya" (func $internal4845)) + (import "env" "Tya" (func $internal4846)) + (import "env" "Uya" (func $internal4847)) + (import "env" "Vya" (func $internal4848)) + (import "env" "Wya" (func $internal4849)) + (import "env" "Xya" (func $internal4850)) + (import "env" "Yya" (func $internal4851)) + (import "env" "Zya" (func $internal4852)) + (import "env" "_ya" (func $internal4853)) + (import "env" "$ya" (func $internal4854)) + (import "env" "aza" (func $internal4855)) + (import "env" "bza" (func $internal4856)) + (import "env" "cza" (func $internal4857)) + (import "env" "dza" (func $internal4858)) + (import "env" "eza" (func $internal4859)) + (import "env" "fza" (func $internal4860)) + (import "env" "gza" (func $internal4861)) + (import "env" "hza" (func $internal4862)) + (import "env" "iza" (func $internal4863)) + (import "env" "jza" (func $internal4864)) + (import "env" "kza" (func $internal4865)) + (import "env" "lza" (func $internal4866)) + (import "env" "mza" (func $internal4867)) + (import "env" "nza" (func $internal4868)) + (import "env" "oza" (func $internal4869)) + (import "env" "pza" (func $internal4870)) + (import "env" "qza" (func $internal4871)) + (import "env" "rza" (func $internal4872)) + (import "env" "sza" (func $internal4873)) + (import "env" "tza" (func $internal4874)) + (import "env" "uza" (func $internal4875)) + (import "env" "vza" (func $internal4876)) + (import "env" "wza" (func $internal4877)) + (import "env" "xza" (func $internal4878)) + (import "env" "yza" (func $internal4879)) + (import "env" "zza" (func $internal4880)) + (import "env" "Aza" (func $internal4881)) + (import "env" "Bza" (func $internal4882)) + (import "env" "Cza" (func $internal4883)) + (import "env" "Dza" (func $internal4884)) + (import "env" "Eza" (func $internal4885)) + (import "env" "Fza" (func $internal4886)) + (import "env" "Gza" (func $internal4887)) + (import "env" "Hza" (func $internal4888)) + (import "env" "Iza" (func $internal4889)) + (import "env" "Jza" (func $internal4890)) + (import "env" "Kza" (func $internal4891)) + (import "env" "Lza" (func $internal4892)) + (import "env" "Mza" (func $internal4893)) + (import "env" "Nza" (func $internal4894)) + (import "env" "Oza" (func $internal4895)) + (import "env" "Pza" (func $internal4896)) + (import "env" "Qza" (func $internal4897)) + (import "env" "Rza" (func $internal4898)) + (import "env" "Sza" (func $internal4899)) + (import "env" "Tza" (func $internal4900)) + (import "env" "Uza" (func $internal4901)) + (import "env" "Vza" (func $internal4902)) + (import "env" "Wza" (func $internal4903)) + (import "env" "Xza" (func $internal4904)) + (import "env" "Yza" (func $internal4905)) + (import "env" "Zza" (func $internal4906)) + (import "env" "_za" (func $internal4907)) + (import "env" "$za" (func $internal4908)) + (import "env" "aAa" (func $internal4909)) + (import "env" "bAa" (func $internal4910)) + (import "env" "cAa" (func $internal4911)) + (import "env" "dAa" (func $internal4912)) + (import "env" "eAa" (func $internal4913)) + (import "env" "fAa" (func $internal4914)) + (import "env" "gAa" (func $internal4915)) + (import "env" "hAa" (func $internal4916)) + (import "env" "iAa" (func $internal4917)) + (import "env" "jAa" (func $internal4918)) + (import "env" "kAa" (func $internal4919)) + (import "env" "lAa" (func $internal4920)) + (import "env" "mAa" (func $internal4921)) + (import "env" "nAa" (func $internal4922)) + (import "env" "oAa" (func $internal4923)) + (import "env" "pAa" (func $internal4924)) + (import "env" "qAa" (func $internal4925)) + (import "env" "rAa" (func $internal4926)) + (import "env" "sAa" (func $internal4927)) + (import "env" "tAa" (func $internal4928)) + (import "env" "uAa" (func $internal4929)) + (import "env" "vAa" (func $internal4930)) + (import "env" "wAa" (func $internal4931)) + (import "env" "xAa" (func $internal4932)) + (import "env" "yAa" (func $internal4933)) + (import "env" "zAa" (func $internal4934)) + (import "env" "AAa" (func $internal4935)) + (import "env" "BAa" (func $internal4936)) + (import "env" "CAa" (func $internal4937)) + (import "env" "DAa" (func $internal4938)) + (import "env" "EAa" (func $internal4939)) + (import "env" "FAa" (func $internal4940)) + (import "env" "GAa" (func $internal4941)) + (import "env" "HAa" (func $internal4942)) + (import "env" "IAa" (func $internal4943)) + (import "env" "JAa" (func $internal4944)) + (import "env" "KAa" (func $internal4945)) + (import "env" "LAa" (func $internal4946)) + (import "env" "MAa" (func $internal4947)) + (import "env" "NAa" (func $internal4948)) + (import "env" "OAa" (func $internal4949)) + (import "env" "PAa" (func $internal4950)) + (import "env" "QAa" (func $internal4951)) + (import "env" "RAa" (func $internal4952)) + (import "env" "SAa" (func $internal4953)) + (import "env" "TAa" (func $internal4954)) + (import "env" "UAa" (func $internal4955)) + (import "env" "VAa" (func $internal4956)) + (import "env" "WAa" (func $internal4957)) + (import "env" "XAa" (func $internal4958)) + (import "env" "YAa" (func $internal4959)) + (import "env" "ZAa" (func $internal4960)) + (import "env" "_Aa" (func $internal4961)) + (import "env" "$Aa" (func $internal4962)) + (import "env" "aBa" (func $internal4963)) + (import "env" "bBa" (func $internal4964)) + (import "env" "cBa" (func $internal4965)) + (import "env" "dBa" (func $internal4966)) + (import "env" "eBa" (func $internal4967)) + (import "env" "fBa" (func $internal4968)) + (import "env" "gBa" (func $internal4969)) + (import "env" "hBa" (func $internal4970)) + (import "env" "iBa" (func $internal4971)) + (import "env" "jBa" (func $internal4972)) + (import "env" "kBa" (func $internal4973)) + (import "env" "lBa" (func $internal4974)) + (import "env" "mBa" (func $internal4975)) + (import "env" "nBa" (func $internal4976)) + (import "env" "oBa" (func $internal4977)) + (import "env" "pBa" (func $internal4978)) + (import "env" "qBa" (func $internal4979)) + (import "env" "rBa" (func $internal4980)) + (import "env" "sBa" (func $internal4981)) + (import "env" "tBa" (func $internal4982)) + (import "env" "uBa" (func $internal4983)) + (import "env" "vBa" (func $internal4984)) + (import "env" "wBa" (func $internal4985)) + (import "env" "xBa" (func $internal4986)) + (import "env" "yBa" (func $internal4987)) + (import "env" "zBa" (func $internal4988)) + (import "env" "ABa" (func $internal4989)) + (import "env" "BBa" (func $internal4990)) + (import "env" "CBa" (func $internal4991)) + (import "env" "DBa" (func $internal4992)) + (import "env" "EBa" (func $internal4993)) + (import "env" "FBa" (func $internal4994)) + (import "env" "GBa" (func $internal4995)) + (import "env" "HBa" (func $internal4996)) + (import "env" "IBa" (func $internal4997)) + (import "env" "JBa" (func $internal4998)) + (import "env" "KBa" (func $internal4999)) (import "other" "anything" (func $internalInfinity)) - (import "env" "JBa" (event $eventname1 (attr 0) (param i32))) + (import "env" "LBa" (event $eventname1 (attr 0) (param i32))) (event $event1 (attr 0) (param i32 i32)) (export "foo1" (func $foo1)) (export "foo2" (func $foo2)) (export "event1" (event $event1)) - (func $foo1 (; 5000 ;) + (func $foo1 (nop) ) - (func $foo2 (; 5001 ;) + (func $foo2 (nop) ) ) diff -Nru binaryen-91/test/passes/minify-imports-and-exports_all-features.txt binaryen-99/test/passes/minify-imports-and-exports_all-features.txt --- binaryen-91/test/passes/minify-imports-and-exports_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/minify-imports-and-exports_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,10026 +1,10028 @@ -longname53 => $ -longname2966 => $$ -longname3020 => $0 -longname3074 => $1 -longname3128 => $2 -longname3182 => $3 -longname3236 => $4 -longname3290 => $5 -longname3344 => $6 -longname3398 => $7 -longname3452 => $8 -longname3506 => $9 -longname1508 => $A -longname4964 => $Aa -longname1562 => $B -longname1616 => $C -longname1670 => $D -longname1724 => $E -longname1778 => $F -longname1832 => $G -longname1886 => $H -longname1940 => $I -longname1994 => $J -longname2048 => $K -longname2102 => $L -longname2156 => $M -longname2210 => $N -longname2264 => $O -longname2318 => $P -longname2372 => $Q -longname2426 => $R -longname2480 => $S -longname2534 => $T -longname2588 => $U -longname2642 => $V -longname2696 => $W -longname2750 => $X -longname2804 => $Y -longname2858 => $Z -longname2912 => $_ -longname107 => $a -longname3560 => $aa -longname161 => $b -longname3614 => $ba -longname215 => $c -longname3668 => $ca -longname269 => $d -longname3722 => $da -longname323 => $e -longname3776 => $ea -longname376 => $f -longname3830 => $fa -longname430 => $g -longname3884 => $ga -longname484 => $h -longname3938 => $ha -longname538 => $i -longname3992 => $ia -longname592 => $j -longname4046 => $ja -longname646 => $k -longname4100 => $ka -longname700 => $l -longname4154 => $la -longname754 => $m -longname4208 => $ma -longname807 => $n -longname4262 => $na -longname860 => $o -longname4316 => $oa -longname914 => $p -longname4370 => $pa -longname968 => $q -longname4424 => $qa -longname1022 => $r -longname4478 => $ra -longname1076 => $s -longname4532 => $sa -longname1130 => $t -longname4586 => $ta -longname1184 => $u -longname4640 => $ua -longname1238 => $v -longname4694 => $va -longname1292 => $w -longname4748 => $wa -longname1346 => $x -longname4802 => $xa -longname1400 => $y -longname4856 => $ya -longname1454 => $z -longname4910 => $za -longname26 => A -longname2939 => A$ -longname2993 => A0 -longname3047 => A1 -longname3101 => A2 -longname3155 => A3 -longname3209 => A4 -longname3263 => A5 -longname3317 => A6 -longname3371 => A7 -longname3425 => A8 -longname3479 => A9 -longname1481 => AA -longname4937 => AAa -longname1535 => AB -longname4991 => ABa -longname1589 => AC -longname1643 => AD -longname1697 => AE -longname1751 => AF -longname1805 => AG -longname1859 => AH -longname1913 => AI -longname1967 => AJ -longname2021 => AK -longname2075 => AL -longname2129 => AM -longname2183 => AN -longname2237 => AO -longname2291 => AP -longname2345 => AQ -longname2399 => AR -longname2453 => AS -longname2507 => AT -longname2561 => AU -longname2615 => AV -longname2669 => AW -longname2723 => AX -longname2777 => AY -longname2831 => AZ -longname2885 => A_ -longname80 => Aa -longname3533 => Aaa -longname134 => Ab -longname3587 => Aba -longname188 => Ac -longname3641 => Aca -longname242 => Ad -longname3695 => Ada -longname296 => Ae -longname3749 => Aea -longname349 => Af -longname3803 => Afa -longname403 => Ag -longname3857 => Aga -longname457 => Ah -longname3911 => Aha -longname511 => Ai -longname3965 => Aia -longname565 => Aj -longname4019 => Aja -longname619 => Ak -longname4073 => Aka -longname673 => Al -longname4127 => Ala -longname727 => Am -longname4181 => Ama -longname780 => An -longname4235 => Ana -longname833 => Ao -longname4289 => Aoa -longname887 => Ap -longname4343 => Apa -longname941 => Aq -longname4397 => Aqa -longname995 => Ar -longname4451 => Ara -longname1049 => As -longname4505 => Asa -longname1103 => At -longname4559 => Ata -longname1157 => Au -longname4613 => Aua -longname1211 => Av -longname4667 => Ava -longname1265 => Aw -longname4721 => Awa -longname1319 => Ax -longname4775 => Axa -longname1373 => Ay -longname4829 => Aya -longname1427 => Az -longname4883 => Aza -longname27 => B -longname2940 => B$ -longname2994 => B0 -longname3048 => B1 -longname3102 => B2 -longname3156 => B3 -longname3210 => B4 -longname3264 => B5 -longname3318 => B6 -longname3372 => B7 -longname3426 => B8 -longname3480 => B9 -longname1482 => BA -longname4938 => BAa -longname1536 => BB -longname4992 => BBa -longname1590 => BC -longname1644 => BD -longname1698 => BE -longname1752 => BF -longname1806 => BG -longname1860 => BH -longname1914 => BI -longname1968 => BJ -longname2022 => BK -longname2076 => BL -longname2130 => BM -longname2184 => BN -longname2238 => BO -longname2292 => BP -longname2346 => BQ -longname2400 => BR -longname2454 => BS -longname2508 => BT -longname2562 => BU -longname2616 => BV -longname2670 => BW -longname2724 => BX -longname2778 => BY -longname2832 => BZ -longname2886 => B_ -longname81 => Ba -longname3534 => Baa -longname135 => Bb -longname3588 => Bba -longname189 => Bc -longname3642 => Bca -longname243 => Bd -longname3696 => Bda -longname297 => Be -longname3750 => Bea -longname350 => Bf -longname3804 => Bfa -longname404 => Bg -longname3858 => Bga -longname458 => Bh -longname3912 => Bha -longname512 => Bi -longname3966 => Bia -longname566 => Bj -longname4020 => Bja -longname620 => Bk -longname4074 => Bka -longname674 => Bl -longname4128 => Bla -longname728 => Bm -longname4182 => Bma -longname781 => Bn -longname4236 => Bna -longname834 => Bo -longname4290 => Boa -longname888 => Bp -longname4344 => Bpa -longname942 => Bq -longname4398 => Bqa -longname996 => Br -longname4452 => Bra -longname1050 => Bs -longname4506 => Bsa -longname1104 => Bt -longname4560 => Bta -longname1158 => Bu -longname4614 => Bua -longname1212 => Bv -longname4668 => Bva -longname1266 => Bw -longname4722 => Bwa -longname1320 => Bx -longname4776 => Bxa -longname1374 => By -longname4830 => Bya -longname1428 => Bz -longname4884 => Bza -longname28 => C -longname2941 => C$ -longname2995 => C0 -longname3049 => C1 -longname3103 => C2 -longname3157 => C3 -longname3211 => C4 -longname3265 => C5 -longname3319 => C6 -longname3373 => C7 -longname3427 => C8 -longname3481 => C9 -longname1483 => CA -longname4939 => CAa -longname1537 => CB -longname4993 => CBa -longname1591 => CC -longname1645 => CD -longname1699 => CE -longname1753 => CF -longname1807 => CG -longname1861 => CH -longname1915 => CI -longname1969 => CJ -longname2023 => CK -longname2077 => CL -longname2131 => CM -longname2185 => CN -longname2239 => CO -longname2293 => CP -longname2347 => CQ -longname2401 => CR -longname2455 => CS -longname2509 => CT -longname2563 => CU -longname2617 => CV -longname2671 => CW -longname2725 => CX -longname2779 => CY -longname2833 => CZ -longname2887 => C_ -longname82 => Ca -longname3535 => Caa -longname136 => Cb -longname3589 => Cba -longname190 => Cc -longname3643 => Cca -longname244 => Cd -longname3697 => Cda -longname298 => Ce -longname3751 => Cea -longname351 => Cf -longname3805 => Cfa -longname405 => Cg -longname3859 => Cga -longname459 => Ch -longname3913 => Cha -longname513 => Ci -longname3967 => Cia -longname567 => Cj -longname4021 => Cja -longname621 => Ck -longname4075 => Cka -longname675 => Cl -longname4129 => Cla -longname729 => Cm -longname4183 => Cma -longname782 => Cn -longname4237 => Cna -longname835 => Co -longname4291 => Coa -longname889 => Cp -longname4345 => Cpa -longname943 => Cq -longname4399 => Cqa -longname997 => Cr -longname4453 => Cra -longname1051 => Cs -longname4507 => Csa -longname1105 => Ct -longname4561 => Cta -longname1159 => Cu -longname4615 => Cua -longname1213 => Cv -longname4669 => Cva -longname1267 => Cw -longname4723 => Cwa -longname1321 => Cx -longname4777 => Cxa -longname1375 => Cy -longname4831 => Cya -longname1429 => Cz -longname4885 => Cza -longname29 => D -longname2942 => D$ -longname2996 => D0 -longname3050 => D1 -longname3104 => D2 -longname3158 => D3 -longname3212 => D4 -longname3266 => D5 -longname3320 => D6 -longname3374 => D7 -longname3428 => D8 -longname3482 => D9 -longname1484 => DA -longname4940 => DAa -longname1538 => DB -longname4994 => DBa -longname1592 => DC -longname1646 => DD -longname1700 => DE -longname1754 => DF -longname1808 => DG -longname1862 => DH -longname1916 => DI -longname1970 => DJ -longname2024 => DK -longname2078 => DL -longname2132 => DM -longname2186 => DN -longname2240 => DO -longname2294 => DP -longname2348 => DQ -longname2402 => DR -longname2456 => DS -longname2510 => DT -longname2564 => DU -longname2618 => DV -longname2672 => DW -longname2726 => DX -longname2780 => DY -longname2834 => DZ -longname2888 => D_ -longname83 => Da -longname3536 => Daa -longname137 => Db -longname3590 => Dba -longname191 => Dc -longname3644 => Dca -longname245 => Dd -longname3698 => Dda -longname299 => De -longname3752 => Dea -longname352 => Df -longname3806 => Dfa -longname406 => Dg -longname3860 => Dga -longname460 => Dh -longname3914 => Dha -longname514 => Di -longname3968 => Dia -longname568 => Dj -longname4022 => Dja -longname622 => Dk -longname4076 => Dka -longname676 => Dl -longname4130 => Dla -longname730 => Dm -longname4184 => Dma -longname783 => Dn -longname4238 => Dna -longname836 => Do -longname4292 => Doa -longname890 => Dp -longname4346 => Dpa -longname944 => Dq -longname4400 => Dqa -longname998 => Dr -longname4454 => Dra -longname1052 => Ds -longname4508 => Dsa -longname1106 => Dt -longname4562 => Dta -longname1160 => Du -longname4616 => Dua -longname1214 => Dv -longname4670 => Dva -longname1268 => Dw -longname4724 => Dwa -longname1322 => Dx -longname4778 => Dxa -longname1376 => Dy -longname4832 => Dya -longname1430 => Dz -longname4886 => Dza -longname30 => E -longname2943 => E$ -longname2997 => E0 -longname3051 => E1 -longname3105 => E2 -longname3159 => E3 -longname3213 => E4 -longname3267 => E5 -longname3321 => E6 -longname3375 => E7 -longname3429 => E8 -longname3483 => E9 -longname1485 => EA -longname4941 => EAa -longname1539 => EB -longname4995 => EBa -longname1593 => EC -longname1647 => ED -longname1701 => EE -longname1755 => EF -longname1809 => EG -longname1863 => EH -longname1917 => EI -longname1971 => EJ -longname2025 => EK -longname2079 => EL -longname2133 => EM -longname2187 => EN -longname2241 => EO -longname2295 => EP -longname2349 => EQ -longname2403 => ER -longname2457 => ES -longname2511 => ET -longname2565 => EU -longname2619 => EV -longname2673 => EW -longname2727 => EX -longname2781 => EY -longname2835 => EZ -longname2889 => E_ -longname84 => Ea -longname3537 => Eaa -longname138 => Eb -longname3591 => Eba -longname192 => Ec -longname3645 => Eca -longname246 => Ed -longname3699 => Eda -longname300 => Ee -longname3753 => Eea -longname353 => Ef -longname3807 => Efa -longname407 => Eg -longname3861 => Ega -longname461 => Eh -longname3915 => Eha -longname515 => Ei -longname3969 => Eia -longname569 => Ej -longname4023 => Eja -longname623 => Ek -longname4077 => Eka -longname677 => El -longname4131 => Ela -longname731 => Em -longname4185 => Ema -longname784 => En -longname4239 => Ena -longname837 => Eo -longname4293 => Eoa -longname891 => Ep -longname4347 => Epa -longname945 => Eq -longname4401 => Eqa -longname999 => Er -longname4455 => Era -longname1053 => Es -longname4509 => Esa -longname1107 => Et -longname4563 => Eta -longname1161 => Eu -longname4617 => Eua -longname1215 => Ev -longname4671 => Eva -longname1269 => Ew -longname4725 => Ewa -longname1323 => Ex -longname4779 => Exa -longname1377 => Ey -longname4833 => Eya -longname1431 => Ez -longname4887 => Eza -longname31 => F -longname2944 => F$ -longname2998 => F0 -longname3052 => F1 -longname3106 => F2 -longname3160 => F3 -longname3214 => F4 -longname3268 => F5 -longname3322 => F6 -longname3376 => F7 -longname3430 => F8 -longname3484 => F9 -longname1486 => FA -longname4942 => FAa -longname1540 => FB -longname4996 => FBa -longname1594 => FC -longname1648 => FD -longname1702 => FE -longname1756 => FF -longname1810 => FG -longname1864 => FH -longname1918 => FI -longname1972 => FJ -longname2026 => FK -longname2080 => FL -longname2134 => FM -longname2188 => FN -longname2242 => FO -longname2296 => FP -longname2350 => FQ -longname2404 => FR -longname2458 => FS -longname2512 => FT -longname2566 => FU -longname2620 => FV -longname2674 => FW -longname2728 => FX -longname2782 => FY -longname2836 => FZ -longname2890 => F_ -longname85 => Fa -longname3538 => Faa -longname139 => Fb -longname3592 => Fba -longname193 => Fc -longname3646 => Fca -longname247 => Fd -longname3700 => Fda -longname301 => Fe -longname3754 => Fea -longname354 => Ff -longname3808 => Ffa -longname408 => Fg -longname3862 => Fga -longname462 => Fh -longname3916 => Fha -longname516 => Fi -longname3970 => Fia -longname570 => Fj -longname4024 => Fja -longname624 => Fk -longname4078 => Fka -longname678 => Fl -longname4132 => Fla -longname732 => Fm -longname4186 => Fma -longname785 => Fn -longname4240 => Fna -longname838 => Fo -longname4294 => Foa -longname892 => Fp -longname4348 => Fpa -longname946 => Fq -longname4402 => Fqa -longname1000 => Fr -longname4456 => Fra -longname1054 => Fs -longname4510 => Fsa -longname1108 => Ft -longname4564 => Fta -longname1162 => Fu -longname4618 => Fua -longname1216 => Fv -longname4672 => Fva -longname1270 => Fw -longname4726 => Fwa -longname1324 => Fx -longname4780 => Fxa -longname1378 => Fy -longname4834 => Fya -longname1432 => Fz -longname4888 => Fza -longname32 => G -longname2945 => G$ -longname2999 => G0 -longname3053 => G1 -longname3107 => G2 -longname3161 => G3 -longname3215 => G4 -longname3269 => G5 -longname3323 => G6 -longname3377 => G7 -longname3431 => G8 -longname3485 => G9 -longname1487 => GA -longname4943 => GAa -longname1541 => GB -longname4997 => GBa -longname1595 => GC -longname1649 => GD -longname1703 => GE -longname1757 => GF -longname1811 => GG -longname1865 => GH -longname1919 => GI -longname1973 => GJ -longname2027 => GK -longname2081 => GL -longname2135 => GM -longname2189 => GN -longname2243 => GO -longname2297 => GP -longname2351 => GQ -longname2405 => GR -longname2459 => GS -longname2513 => GT -longname2567 => GU -longname2621 => GV -longname2675 => GW -longname2729 => GX -longname2783 => GY -longname2837 => GZ -longname2891 => G_ -longname86 => Ga -longname3539 => Gaa -longname140 => Gb -longname3593 => Gba -longname194 => Gc -longname3647 => Gca -longname248 => Gd -longname3701 => Gda -longname302 => Ge -longname3755 => Gea -longname355 => Gf -longname3809 => Gfa -longname409 => Gg -longname3863 => Gga -longname463 => Gh -longname3917 => Gha -longname517 => Gi -longname3971 => Gia -longname571 => Gj -longname4025 => Gja -longname625 => Gk -longname4079 => Gka -longname679 => Gl -longname4133 => Gla -longname733 => Gm -longname4187 => Gma -longname786 => Gn -longname4241 => Gna -longname839 => Go -longname4295 => Goa -longname893 => Gp -longname4349 => Gpa -longname947 => Gq -longname4403 => Gqa -longname1001 => Gr -longname4457 => Gra -longname1055 => Gs -longname4511 => Gsa -longname1109 => Gt -longname4565 => Gta -longname1163 => Gu -longname4619 => Gua -longname1217 => Gv -longname4673 => Gva -longname1271 => Gw -longname4727 => Gwa -longname1325 => Gx -longname4781 => Gxa -longname1379 => Gy -longname4835 => Gya -longname1433 => Gz -longname4889 => Gza -longname33 => H -longname2946 => H$ -longname3000 => H0 -longname3054 => H1 -longname3108 => H2 -longname3162 => H3 -longname3216 => H4 -longname3270 => H5 -longname3324 => H6 -longname3378 => H7 -longname3432 => H8 -longname3486 => H9 -longname1488 => HA -longname4944 => HAa -longname1542 => HB -longname4998 => HBa -longname1596 => HC -longname1650 => HD -longname1704 => HE -longname1758 => HF -longname1812 => HG -longname1866 => HH -longname1920 => HI -longname1974 => HJ -longname2028 => HK -longname2082 => HL -longname2136 => HM -longname2190 => HN -longname2244 => HO -longname2298 => HP -longname2352 => HQ -longname2406 => HR -longname2460 => HS -longname2514 => HT -longname2568 => HU -longname2622 => HV -longname2676 => HW -longname2730 => HX -longname2784 => HY -longname2838 => HZ -longname2892 => H_ -longname87 => Ha -longname3540 => Haa -longname141 => Hb -longname3594 => Hba -longname195 => Hc -longname3648 => Hca -longname249 => Hd -longname3702 => Hda -longname303 => He -longname3756 => Hea -longname356 => Hf -longname3810 => Hfa -longname410 => Hg -longname3864 => Hga -longname464 => Hh -longname3918 => Hha -longname518 => Hi -longname3972 => Hia -longname572 => Hj -longname4026 => Hja -longname626 => Hk -longname4080 => Hka -longname680 => Hl -longname4134 => Hla -longname734 => Hm -longname4188 => Hma -longname787 => Hn -longname4242 => Hna -longname840 => Ho -longname4296 => Hoa -longname894 => Hp -longname4350 => Hpa -longname948 => Hq -longname4404 => Hqa -longname1002 => Hr -longname4458 => Hra -longname1056 => Hs -longname4512 => Hsa -longname1110 => Ht -longname4566 => Hta -longname1164 => Hu -longname4620 => Hua -longname1218 => Hv -longname4674 => Hva -longname1272 => Hw -longname4728 => Hwa -longname1326 => Hx -longname4782 => Hxa -longname1380 => Hy -longname4836 => Hya -longname1434 => Hz -longname4890 => Hza -longname34 => I -longname2947 => I$ -longname3001 => I0 -longname3055 => I1 -longname3109 => I2 -longname3163 => I3 -longname3217 => I4 -longname3271 => I5 -longname3325 => I6 -longname3379 => I7 -longname3433 => I8 -longname3487 => I9 -longname1489 => IA -longname4945 => IAa -longname1543 => IB -longname4999 => IBa -longname1597 => IC -longname1651 => ID -longname1705 => IE -longname1759 => IF -longname1813 => IG -longname1867 => IH -longname1921 => II -longname1975 => IJ -longname2029 => IK -longname2083 => IL -longname2137 => IM -longname2191 => IN -longname2245 => IO -longname2299 => IP -longname2353 => IQ -longname2407 => IR -longname2461 => IS -longname2515 => IT -longname2569 => IU -longname2623 => IV -longname2677 => IW -longname2731 => IX -longname2785 => IY -longname2839 => IZ -longname2893 => I_ -longname88 => Ia -longname3541 => Iaa -longname142 => Ib -longname3595 => Iba -longname196 => Ic -longname3649 => Ica -longname250 => Id -longname3703 => Ida -longname304 => Ie -longname3757 => Iea -longname357 => If -longname3811 => Ifa -longname411 => Ig -longname3865 => Iga -longname465 => Ih -longname3919 => Iha -longname519 => Ii -longname3973 => Iia -longname573 => Ij -longname4027 => Ija -longname627 => Ik -longname4081 => Ika -longname681 => Il -longname4135 => Ila -longname735 => Im -longname4189 => Ima -longname788 => In -longname4243 => Ina -longname841 => Io -longname4297 => Ioa -longname895 => Ip -longname4351 => Ipa -longname949 => Iq -longname4405 => Iqa -longname1003 => Ir -longname4459 => Ira -longname1057 => Is -longname4513 => Isa -longname1111 => It -longname4567 => Ita -longname1165 => Iu -longname4621 => Iua -longname1219 => Iv -longname4675 => Iva -longname1273 => Iw -longname4729 => Iwa -longname1327 => Ix -longname4783 => Ixa -longname1381 => Iy -longname4837 => Iya -longname1435 => Iz -longname4891 => Iza -longname35 => J -longname2948 => J$ -longname3002 => J0 -longname3056 => J1 -longname3110 => J2 -longname3164 => J3 -longname3218 => J4 -longname3272 => J5 -longname3326 => J6 -longname3380 => J7 -longname3434 => J8 -longname3488 => J9 -longname1490 => JA -longname4946 => JAa -longname1544 => JB -longname3-only => JBa -longname1598 => JC -longname1652 => JD -longname1706 => JE -longname1760 => JF -longname1814 => JG -longname1868 => JH -longname1922 => JI -longname1976 => JJ -longname2030 => JK -longname2084 => JL -longname2138 => JM -longname2192 => JN -longname2246 => JO -longname2300 => JP -longname2354 => JQ -longname2408 => JR -longname2462 => JS -longname2516 => JT -longname2570 => JU -longname2624 => JV -longname2678 => JW -longname2732 => JX -longname2786 => JY -longname2840 => JZ -longname2894 => J_ -longname89 => Ja -longname3542 => Jaa -longname143 => Jb -longname3596 => Jba -longname197 => Jc -longname3650 => Jca -longname251 => Jd -longname3704 => Jda -longname305 => Je -longname3758 => Jea -longname358 => Jf -longname3812 => Jfa -longname412 => Jg -longname3866 => Jga -longname466 => Jh -longname3920 => Jha -longname520 => Ji -longname3974 => Jia -longname574 => Jj -longname4028 => Jja -longname628 => Jk -longname4082 => Jka -longname682 => Jl -longname4136 => Jla -longname736 => Jm -longname4190 => Jma -longname789 => Jn -longname4244 => Jna -longname842 => Jo -longname4298 => Joa -longname896 => Jp -longname4352 => Jpa -longname950 => Jq -longname4406 => Jqa -longname1004 => Jr -longname4460 => Jra -longname1058 => Js -longname4514 => Jsa -longname1112 => Jt -longname4568 => Jta -longname1166 => Ju -longname4622 => Jua -longname1220 => Jv -longname4676 => Jva -longname1274 => Jw -longname4730 => Jwa -longname1328 => Jx -longname4784 => Jxa -longname1382 => Jy -longname4838 => Jya -longname1436 => Jz -longname4892 => Jza -longname36 => K -longname2949 => K$ -longname3003 => K0 -longname3057 => K1 -longname3111 => K2 -longname3165 => K3 -longname3219 => K4 -longname3273 => K5 -longname3327 => K6 -longname3381 => K7 -longname3435 => K8 -longname3489 => K9 -longname1491 => KA -longname4947 => KAa -longname1545 => KB -eventname1 => KBa -longname1599 => KC -longname1653 => KD -longname1707 => KE -longname1761 => KF -longname1815 => KG -longname1869 => KH -longname1923 => KI -longname1977 => KJ -longname2031 => KK -longname2085 => KL -longname2139 => KM -longname2193 => KN -longname2247 => KO -longname2301 => KP -longname2355 => KQ -longname2409 => KR -longname2463 => KS -longname2517 => KT -longname2571 => KU -longname2625 => KV -longname2679 => KW -longname2733 => KX -longname2787 => KY -longname2841 => KZ -longname2895 => K_ -longname90 => Ka -longname3543 => Kaa -longname144 => Kb -longname3597 => Kba -longname198 => Kc -longname3651 => Kca -longname252 => Kd -longname3705 => Kda -longname306 => Ke -longname3759 => Kea -longname359 => Kf -longname3813 => Kfa -longname413 => Kg -longname3867 => Kga -longname467 => Kh -longname3921 => Kha -longname521 => Ki -longname3975 => Kia -longname575 => Kj -longname4029 => Kja -longname629 => Kk -longname4083 => Kka -longname683 => Kl -longname4137 => Kla -longname737 => Km -longname4191 => Kma -longname790 => Kn -longname4245 => Kna -longname843 => Ko -longname4299 => Koa -longname897 => Kp -longname4353 => Kpa -longname951 => Kq -longname4407 => Kqa -longname1005 => Kr -longname4461 => Kra -longname1059 => Ks -longname4515 => Ksa -longname1113 => Kt -longname4569 => Kta -longname1167 => Ku -longname4623 => Kua -longname1221 => Kv -longname4677 => Kva -longname1275 => Kw -longname4731 => Kwa -longname1329 => Kx -longname4785 => Kxa -longname1383 => Ky -longname4839 => Kya -longname1437 => Kz -longname4893 => Kza -longname37 => L -longname2950 => L$ -longname3004 => L0 -longname3058 => L1 -longname3112 => L2 -longname3166 => L3 -longname3220 => L4 -longname3274 => L5 -longname3328 => L6 -longname3382 => L7 -longname3436 => L8 -longname3490 => L9 -longname1492 => LA -longname4948 => LAa -longname1546 => LB -exp1 => LBa -longname1600 => LC -longname1654 => LD -longname1708 => LE -longname1762 => LF -longname1816 => LG -longname1870 => LH -longname1924 => LI -longname1978 => LJ -longname2032 => LK -longname2086 => LL -longname2140 => LM -longname2194 => LN -longname2248 => LO -longname2302 => LP -longname2356 => LQ -longname2410 => LR -longname2464 => LS -longname2518 => LT -longname2572 => LU -longname2626 => LV -longname2680 => LW -longname2734 => LX -longname2788 => LY -longname2842 => LZ -longname2896 => L_ -longname91 => La -longname3544 => Laa -longname145 => Lb -longname3598 => Lba -longname199 => Lc -longname3652 => Lca -longname253 => Ld -longname3706 => Lda -longname307 => Le -longname3760 => Lea -longname360 => Lf -longname3814 => Lfa -longname414 => Lg -longname3868 => Lga -longname468 => Lh -longname3922 => Lha -longname522 => Li -longname3976 => Lia -longname576 => Lj -longname4030 => Lja -longname630 => Lk -longname4084 => Lka -longname684 => Ll -longname4138 => Lla -longname738 => Lm -longname4192 => Lma -longname791 => Ln -longname4246 => Lna -longname844 => Lo -longname4300 => Loa -longname898 => Lp -longname4354 => Lpa -longname952 => Lq -longname4408 => Lqa -longname1006 => Lr -longname4462 => Lra -longname1060 => Ls -longname4516 => Lsa -longname1114 => Lt -longname4570 => Lta -longname1168 => Lu -longname4624 => Lua -longname1222 => Lv -longname4678 => Lva -longname1276 => Lw -longname4732 => Lwa -longname1330 => Lx -longname4786 => Lxa -longname1384 => Ly -longname4840 => Lya -longname1438 => Lz -longname4894 => Lza -longname38 => M -longname2951 => M$ -longname3005 => M0 -longname3059 => M1 -longname3113 => M2 -longname3167 => M3 -longname3221 => M4 -longname3275 => M5 -longname3329 => M6 -longname3383 => M7 -longname3437 => M8 -longname3491 => M9 -longname1493 => MA -longname4949 => MAa -longname1547 => MB -exp2 => MBa -longname1601 => MC -longname1655 => MD -longname1709 => ME -longname1763 => MF -longname1817 => MG -longname1871 => MH -longname1925 => MI -longname1979 => MJ -longname2033 => MK -longname2087 => ML -longname2141 => MM -longname2195 => MN -longname2249 => MO -longname2303 => MP -longname2357 => MQ -longname2411 => MR -longname2465 => MS -longname2519 => MT -longname2573 => MU -longname2627 => MV -longname2681 => MW -longname2735 => MX -longname2789 => MY -longname2843 => MZ -longname2897 => M_ -longname92 => Ma -longname3545 => Maa -longname146 => Mb -longname3599 => Mba -longname200 => Mc -longname3653 => Mca -longname254 => Md -longname3707 => Mda -longname308 => Me -longname3761 => Mea -longname361 => Mf -longname3815 => Mfa -longname415 => Mg -longname3869 => Mga -longname469 => Mh -longname3923 => Mha -longname523 => Mi -longname3977 => Mia -longname577 => Mj -longname4031 => Mja -longname631 => Mk -longname4085 => Mka -longname685 => Ml -longname4139 => Mla -longname739 => Mm -longname4193 => Mma -longname792 => Mn -longname4247 => Mna -longname845 => Mo -longname4301 => Moa -longname899 => Mp -longname4355 => Mpa -longname953 => Mq -longname4409 => Mqa -longname1007 => Mr -longname4463 => Mra -longname1061 => Ms -longname4517 => Msa -longname1115 => Mt -longname4571 => Mta -longname1169 => Mu -longname4625 => Mua -longname1223 => Mv -longname4679 => Mva -longname1277 => Mw -longname4733 => Mwa -longname1331 => Mx -longname4787 => Mxa -longname1385 => My -longname4841 => Mya -longname1439 => Mz -longname4895 => Mza -longname39 => N -longname2952 => N$ -longname3006 => N0 -longname3060 => N1 -longname3114 => N2 -longname3168 => N3 -longname3222 => N4 -longname3276 => N5 -longname3330 => N6 -longname3384 => N7 -longname3438 => N8 -longname3492 => N9 -longname1494 => NA -longname4950 => NAa -longname1548 => NB -event1 => NBa -longname1602 => NC -longname1656 => ND -longname1710 => NE -longname1764 => NF -longname1818 => NG -longname1872 => NH -longname1926 => NI -longname1980 => NJ -longname2034 => NK -longname2088 => NL -longname2142 => NM -longname2196 => NN -longname2250 => NO -longname2304 => NP -longname2358 => NQ -longname2412 => NR -longname2466 => NS -longname2520 => NT -longname2574 => NU -longname2628 => NV -longname2682 => NW -longname2736 => NX -longname2790 => NY -longname2844 => NZ -longname2898 => N_ -longname93 => Na -longname3546 => Naa -longname147 => Nb -longname3600 => Nba -longname201 => Nc -longname3654 => Nca -longname255 => Nd -longname3708 => Nda -longname309 => Ne -longname3762 => Nea -longname362 => Nf -longname3816 => Nfa -longname416 => Ng -longname3870 => Nga -longname470 => Nh -longname3924 => Nha -longname524 => Ni -longname3978 => Nia -longname578 => Nj -longname4032 => Nja -longname632 => Nk -longname4086 => Nka -longname686 => Nl -longname4140 => Nla -longname740 => Nm -longname4194 => Nma -longname793 => Nn -longname4248 => Nna -longname846 => No -longname4302 => Noa -longname900 => Np -longname4356 => Npa -longname954 => Nq -longname4410 => Nqa -longname1008 => Nr -longname4464 => Nra -longname1062 => Ns -longname4518 => Nsa -longname1116 => Nt -longname4572 => Nta -longname1170 => Nu -longname4626 => Nua -longname1224 => Nv -longname4680 => Nva -longname1278 => Nw -longname4734 => Nwa -longname1332 => Nx -longname4788 => Nxa -longname1386 => Ny -longname4842 => Nya -longname1440 => Nz -longname4896 => Nza -longname40 => O -longname2953 => O$ -longname3007 => O0 -longname3061 => O1 -longname3115 => O2 -longname3169 => O3 -longname3223 => O4 -longname3277 => O5 -longname3331 => O6 -longname3385 => O7 -longname3439 => O8 -longname3493 => O9 -longname1495 => OA -longname4951 => OAa -longname1549 => OB -longname1603 => OC -longname1657 => OD -longname1711 => OE -longname1765 => OF -longname1819 => OG -longname1873 => OH -longname1927 => OI -longname1981 => OJ -longname2035 => OK -longname2089 => OL -longname2143 => OM -longname2197 => ON -longname2251 => OO -longname2305 => OP -longname2359 => OQ -longname2413 => OR -longname2467 => OS -longname2521 => OT -longname2575 => OU -longname2629 => OV -longname2683 => OW -longname2737 => OX -longname2791 => OY -longname2845 => OZ -longname2899 => O_ -longname94 => Oa -longname3547 => Oaa -longname148 => Ob -longname3601 => Oba -longname202 => Oc -longname3655 => Oca -longname256 => Od -longname3709 => Oda -longname310 => Oe -longname3763 => Oea -longname363 => Of -longname3817 => Ofa -longname417 => Og -longname3871 => Oga -longname471 => Oh -longname3925 => Oha -longname525 => Oi -longname3979 => Oia -longname579 => Oj -longname4033 => Oja -longname633 => Ok -longname4087 => Oka -longname687 => Ol -longname4141 => Ola -longname741 => Om -longname4195 => Oma -longname794 => On -longname4249 => Ona -longname847 => Oo -longname4303 => Ooa -longname901 => Op -longname4357 => Opa -longname955 => Oq -longname4411 => Oqa -longname1009 => Or -longname4465 => Ora -longname1063 => Os -longname4519 => Osa -longname1117 => Ot -longname4573 => Ota -longname1171 => Ou -longname4627 => Oua -longname1225 => Ov -longname4681 => Ova -longname1279 => Ow -longname4735 => Owa -longname1333 => Ox -longname4789 => Oxa -longname1387 => Oy -longname4843 => Oya -longname1441 => Oz -longname4897 => Oza -longname41 => P -longname2954 => P$ -longname3008 => P0 -longname3062 => P1 -longname3116 => P2 -longname3170 => P3 -longname3224 => P4 -longname3278 => P5 -longname3332 => P6 -longname3386 => P7 -longname3440 => P8 -longname3494 => P9 -longname1496 => PA -longname4952 => PAa -longname1550 => PB -longname1604 => PC -longname1658 => PD -longname1712 => PE -longname1766 => PF -longname1820 => PG -longname1874 => PH -longname1928 => PI -longname1982 => PJ -longname2036 => PK -longname2090 => PL -longname2144 => PM -longname2198 => PN -longname2252 => PO -longname2306 => PP -longname2360 => PQ -longname2414 => PR -longname2468 => PS -longname2522 => PT -longname2576 => PU -longname2630 => PV -longname2684 => PW -longname2738 => PX -longname2792 => PY -longname2846 => PZ -longname2900 => P_ -longname95 => Pa -longname3548 => Paa -longname149 => Pb -longname3602 => Pba -longname203 => Pc -longname3656 => Pca -longname257 => Pd -longname3710 => Pda -longname311 => Pe -longname3764 => Pea -longname364 => Pf -longname3818 => Pfa -longname418 => Pg -longname3872 => Pga -longname472 => Ph -longname3926 => Pha -longname526 => Pi -longname3980 => Pia -longname580 => Pj -longname4034 => Pja -longname634 => Pk -longname4088 => Pka -longname688 => Pl -longname4142 => Pla -longname742 => Pm -longname4196 => Pma -longname795 => Pn -longname4250 => Pna -longname848 => Po -longname4304 => Poa -longname902 => Pp -longname4358 => Ppa -longname956 => Pq -longname4412 => Pqa -longname1010 => Pr -longname4466 => Pra -longname1064 => Ps -longname4520 => Psa -longname1118 => Pt -longname4574 => Pta -longname1172 => Pu -longname4628 => Pua -longname1226 => Pv -longname4682 => Pva -longname1280 => Pw -longname4736 => Pwa -longname1334 => Px -longname4790 => Pxa -longname1388 => Py -longname4844 => Pya -longname1442 => Pz -longname4898 => Pza -longname42 => Q -longname2955 => Q$ -longname3009 => Q0 -longname3063 => Q1 -longname3117 => Q2 -longname3171 => Q3 -longname3225 => Q4 -longname3279 => Q5 -longname3333 => Q6 -longname3387 => Q7 -longname3441 => Q8 -longname3495 => Q9 -longname1497 => QA -longname4953 => QAa -longname1551 => QB -longname1605 => QC -longname1659 => QD -longname1713 => QE -longname1767 => QF -longname1821 => QG -longname1875 => QH -longname1929 => QI -longname1983 => QJ -longname2037 => QK -longname2091 => QL -longname2145 => QM -longname2199 => QN -longname2253 => QO -longname2307 => QP -longname2361 => QQ -longname2415 => QR -longname2469 => QS -longname2523 => QT -longname2577 => QU -longname2631 => QV -longname2685 => QW -longname2739 => QX -longname2793 => QY -longname2847 => QZ -longname2901 => Q_ -longname96 => Qa -longname3549 => Qaa -longname150 => Qb -longname3603 => Qba -longname204 => Qc -longname3657 => Qca -longname258 => Qd -longname3711 => Qda -longname312 => Qe -longname3765 => Qea -longname365 => Qf -longname3819 => Qfa -longname419 => Qg -longname3873 => Qga -longname473 => Qh -longname3927 => Qha -longname527 => Qi -longname3981 => Qia -longname581 => Qj -longname4035 => Qja -longname635 => Qk -longname4089 => Qka -longname689 => Ql -longname4143 => Qla -longname743 => Qm -longname4197 => Qma -longname796 => Qn -longname4251 => Qna -longname849 => Qo -longname4305 => Qoa -longname903 => Qp -longname4359 => Qpa -longname957 => Qq -longname4413 => Qqa -longname1011 => Qr -longname4467 => Qra -longname1065 => Qs -longname4521 => Qsa -longname1119 => Qt -longname4575 => Qta -longname1173 => Qu -longname4629 => Qua -longname1227 => Qv -longname4683 => Qva -longname1281 => Qw -longname4737 => Qwa -longname1335 => Qx -longname4791 => Qxa -longname1389 => Qy -longname4845 => Qya -longname1443 => Qz -longname4899 => Qza -longname43 => R -longname2956 => R$ -longname3010 => R0 -longname3064 => R1 -longname3118 => R2 -longname3172 => R3 -longname3226 => R4 -longname3280 => R5 -longname3334 => R6 -longname3388 => R7 -longname3442 => R8 -longname3496 => R9 -longname1498 => RA -longname4954 => RAa -longname1552 => RB -longname1606 => RC -longname1660 => RD -longname1714 => RE -longname1768 => RF -longname1822 => RG -longname1876 => RH -longname1930 => RI -longname1984 => RJ -longname2038 => RK -longname2092 => RL -longname2146 => RM -longname2200 => RN -longname2254 => RO -longname2308 => RP -longname2362 => RQ -longname2416 => RR -longname2470 => RS -longname2524 => RT -longname2578 => RU -longname2632 => RV -longname2686 => RW -longname2740 => RX -longname2794 => RY -longname2848 => RZ -longname2902 => R_ -longname97 => Ra -longname3550 => Raa -longname151 => Rb -longname3604 => Rba -longname205 => Rc -longname3658 => Rca -longname259 => Rd -longname3712 => Rda -longname313 => Re -longname3766 => Rea -longname366 => Rf -longname3820 => Rfa -longname420 => Rg -longname3874 => Rga -longname474 => Rh -longname3928 => Rha -longname528 => Ri -longname3982 => Ria -longname582 => Rj -longname4036 => Rja -longname636 => Rk -longname4090 => Rka -longname690 => Rl -longname4144 => Rla -longname744 => Rm -longname4198 => Rma -longname797 => Rn -longname4252 => Rna -longname850 => Ro -longname4306 => Roa -longname904 => Rp -longname4360 => Rpa -longname958 => Rq -longname4414 => Rqa -longname1012 => Rr -longname4468 => Rra -longname1066 => Rs -longname4522 => Rsa -longname1120 => Rt -longname4576 => Rta -longname1174 => Ru -longname4630 => Rua -longname1228 => Rv -longname4684 => Rva -longname1282 => Rw -longname4738 => Rwa -longname1336 => Rx -longname4792 => Rxa -longname1390 => Ry -longname4846 => Rya -longname1444 => Rz -longname4900 => Rza -longname44 => S -longname2957 => S$ -longname3011 => S0 -longname3065 => S1 -longname3119 => S2 -longname3173 => S3 -longname3227 => S4 -longname3281 => S5 -longname3335 => S6 -longname3389 => S7 -longname3443 => S8 -longname3497 => S9 -longname1499 => SA -longname4955 => SAa -longname1553 => SB -longname1607 => SC -longname1661 => SD -longname1715 => SE -longname1769 => SF -longname1823 => SG -longname1877 => SH -longname1931 => SI -longname1985 => SJ -longname2039 => SK -longname2093 => SL -longname2147 => SM -longname2201 => SN -longname2255 => SO -longname2309 => SP -longname2363 => SQ -longname2417 => SR -longname2471 => SS -longname2525 => ST -longname2579 => SU -longname2633 => SV -longname2687 => SW -longname2741 => SX -longname2795 => SY -longname2849 => SZ -longname2903 => S_ -longname98 => Sa -longname3551 => Saa -longname152 => Sb -longname3605 => Sba -longname206 => Sc -longname3659 => Sca -longname260 => Sd -longname3713 => Sda -longname314 => Se -longname3767 => Sea -longname367 => Sf -longname3821 => Sfa -longname421 => Sg -longname3875 => Sga -longname475 => Sh -longname3929 => Sha -longname529 => Si -longname3983 => Sia -longname583 => Sj -longname4037 => Sja -longname637 => Sk -longname4091 => Ska -longname691 => Sl -longname4145 => Sla -longname745 => Sm -longname4199 => Sma -longname798 => Sn -longname4253 => Sna -longname851 => So -longname4307 => Soa -longname905 => Sp -longname4361 => Spa -longname959 => Sq -longname4415 => Sqa -longname1013 => Sr -longname4469 => Sra -longname1067 => Ss -longname4523 => Ssa -longname1121 => St -longname4577 => Sta -longname1175 => Su -longname4631 => Sua -longname1229 => Sv -longname4685 => Sva -longname1283 => Sw -longname4739 => Swa -longname1337 => Sx -longname4793 => Sxa -longname1391 => Sy -longname4847 => Sya -longname1445 => Sz -longname4901 => Sza -longname45 => T -longname2958 => T$ -longname3012 => T0 -longname3066 => T1 -longname3120 => T2 -longname3174 => T3 -longname3228 => T4 -longname3282 => T5 -longname3336 => T6 -longname3390 => T7 -longname3444 => T8 -longname3498 => T9 -longname1500 => TA -longname4956 => TAa -longname1554 => TB -longname1608 => TC -longname1662 => TD -longname1716 => TE -longname1770 => TF -longname1824 => TG -longname1878 => TH -longname1932 => TI -longname1986 => TJ -longname2040 => TK -longname2094 => TL -longname2148 => TM -longname2202 => TN -longname2256 => TO -longname2310 => TP -longname2364 => TQ -longname2418 => TR -longname2472 => TS -longname2526 => TT -longname2580 => TU -longname2634 => TV -longname2688 => TW -longname2742 => TX -longname2796 => TY -longname2850 => TZ -longname2904 => T_ -longname99 => Ta -longname3552 => Taa -longname153 => Tb -longname3606 => Tba -longname207 => Tc -longname3660 => Tca -longname261 => Td -longname3714 => Tda -longname315 => Te -longname3768 => Tea -longname368 => Tf -longname3822 => Tfa -longname422 => Tg -longname3876 => Tga -longname476 => Th -longname3930 => Tha -longname530 => Ti -longname3984 => Tia -longname584 => Tj -longname4038 => Tja -longname638 => Tk -longname4092 => Tka -longname692 => Tl -longname4146 => Tla -longname746 => Tm -longname4200 => Tma -longname799 => Tn -longname4254 => Tna -longname852 => To -longname4308 => Toa -longname906 => Tp -longname4362 => Tpa -longname960 => Tq -longname4416 => Tqa -longname1014 => Tr -longname4470 => Tra -longname1068 => Ts -longname4524 => Tsa -longname1122 => Tt -longname4578 => Tta -longname1176 => Tu -longname4632 => Tua -longname1230 => Tv -longname4686 => Tva -longname1284 => Tw -longname4740 => Twa -longname1338 => Tx -longname4794 => Txa -longname1392 => Ty -longname4848 => Tya -longname1446 => Tz -longname4902 => Tza -longname46 => U -longname2959 => U$ -longname3013 => U0 -longname3067 => U1 -longname3121 => U2 -longname3175 => U3 -longname3229 => U4 -longname3283 => U5 -longname3337 => U6 -longname3391 => U7 -longname3445 => U8 -longname3499 => U9 -longname1501 => UA -longname4957 => UAa -longname1555 => UB -longname1609 => UC -longname1663 => UD -longname1717 => UE -longname1771 => UF -longname1825 => UG -longname1879 => UH -longname1933 => UI -longname1987 => UJ -longname2041 => UK -longname2095 => UL -longname2149 => UM -longname2203 => UN -longname2257 => UO -longname2311 => UP -longname2365 => UQ -longname2419 => UR -longname2473 => US -longname2527 => UT -longname2581 => UU -longname2635 => UV -longname2689 => UW -longname2743 => UX -longname2797 => UY -longname2851 => UZ -longname2905 => U_ -longname100 => Ua -longname3553 => Uaa -longname154 => Ub -longname3607 => Uba -longname208 => Uc -longname3661 => Uca -longname262 => Ud -longname3715 => Uda -longname316 => Ue -longname3769 => Uea -longname369 => Uf -longname3823 => Ufa -longname423 => Ug -longname3877 => Uga -longname477 => Uh -longname3931 => Uha -longname531 => Ui -longname3985 => Uia -longname585 => Uj -longname4039 => Uja -longname639 => Uk -longname4093 => Uka -longname693 => Ul -longname4147 => Ula -longname747 => Um -longname4201 => Uma -longname800 => Un -longname4255 => Una -longname853 => Uo -longname4309 => Uoa -longname907 => Up -longname4363 => Upa -longname961 => Uq -longname4417 => Uqa -longname1015 => Ur -longname4471 => Ura -longname1069 => Us -longname4525 => Usa -longname1123 => Ut -longname4579 => Uta -longname1177 => Uu -longname4633 => Uua -longname1231 => Uv -longname4687 => Uva -longname1285 => Uw -longname4741 => Uwa -longname1339 => Ux -longname4795 => Uxa -longname1393 => Uy -longname4849 => Uya -longname1447 => Uz -longname4903 => Uza -longname47 => V -longname2960 => V$ -longname3014 => V0 -longname3068 => V1 -longname3122 => V2 -longname3176 => V3 -longname3230 => V4 -longname3284 => V5 -longname3338 => V6 -longname3392 => V7 -longname3446 => V8 -longname3500 => V9 -longname1502 => VA -longname4958 => VAa -longname1556 => VB -longname1610 => VC -longname1664 => VD -longname1718 => VE -longname1772 => VF -longname1826 => VG -longname1880 => VH -longname1934 => VI -longname1988 => VJ -longname2042 => VK -longname2096 => VL -longname2150 => VM -longname2204 => VN -longname2258 => VO -longname2312 => VP -longname2366 => VQ -longname2420 => VR -longname2474 => VS -longname2528 => VT -longname2582 => VU -longname2636 => VV -longname2690 => VW -longname2744 => VX -longname2798 => VY -longname2852 => VZ -longname2906 => V_ -longname101 => Va -longname3554 => Vaa -longname155 => Vb -longname3608 => Vba -longname209 => Vc -longname3662 => Vca -longname263 => Vd -longname3716 => Vda -longname317 => Ve -longname3770 => Vea -longname370 => Vf -longname3824 => Vfa -longname424 => Vg -longname3878 => Vga -longname478 => Vh -longname3932 => Vha -longname532 => Vi -longname3986 => Via -longname586 => Vj -longname4040 => Vja -longname640 => Vk -longname4094 => Vka -longname694 => Vl -longname4148 => Vla -longname748 => Vm -longname4202 => Vma -longname801 => Vn -longname4256 => Vna -longname854 => Vo -longname4310 => Voa -longname908 => Vp -longname4364 => Vpa -longname962 => Vq -longname4418 => Vqa -longname1016 => Vr -longname4472 => Vra -longname1070 => Vs -longname4526 => Vsa -longname1124 => Vt -longname4580 => Vta -longname1178 => Vu -longname4634 => Vua -longname1232 => Vv -longname4688 => Vva -longname1286 => Vw -longname4742 => Vwa -longname1340 => Vx -longname4796 => Vxa -longname1394 => Vy -longname4850 => Vya -longname1448 => Vz -longname4904 => Vza -longname48 => W -longname2961 => W$ -longname3015 => W0 -longname3069 => W1 -longname3123 => W2 -longname3177 => W3 -longname3231 => W4 -longname3285 => W5 -longname3339 => W6 -longname3393 => W7 -longname3447 => W8 -longname3501 => W9 -longname1503 => WA -longname4959 => WAa -longname1557 => WB -longname1611 => WC -longname1665 => WD -longname1719 => WE -longname1773 => WF -longname1827 => WG -longname1881 => WH -longname1935 => WI -longname1989 => WJ -longname2043 => WK -longname2097 => WL -longname2151 => WM -longname2205 => WN -longname2259 => WO -longname2313 => WP -longname2367 => WQ -longname2421 => WR -longname2475 => WS -longname2529 => WT -longname2583 => WU -longname2637 => WV -longname2691 => WW -longname2745 => WX -longname2799 => WY -longname2853 => WZ -longname2907 => W_ -longname102 => Wa -longname3555 => Waa -longname156 => Wb -longname3609 => Wba -longname210 => Wc -longname3663 => Wca -longname264 => Wd -longname3717 => Wda -longname318 => We -longname3771 => Wea -longname371 => Wf -longname3825 => Wfa -longname425 => Wg -longname3879 => Wga -longname479 => Wh -longname3933 => Wha -longname533 => Wi -longname3987 => Wia -longname587 => Wj -longname4041 => Wja -longname641 => Wk -longname4095 => Wka -longname695 => Wl -longname4149 => Wla -longname749 => Wm -longname4203 => Wma -longname802 => Wn -longname4257 => Wna -longname855 => Wo -longname4311 => Woa -longname909 => Wp -longname4365 => Wpa -longname963 => Wq -longname4419 => Wqa -longname1017 => Wr -longname4473 => Wra -longname1071 => Ws -longname4527 => Wsa -longname1125 => Wt -longname4581 => Wta -longname1179 => Wu -longname4635 => Wua -longname1233 => Wv -longname4689 => Wva -longname1287 => Ww -longname4743 => Wwa -longname1341 => Wx -longname4797 => Wxa -longname1395 => Wy -longname4851 => Wya -longname1449 => Wz -longname4905 => Wza -longname49 => X -longname2962 => X$ -longname3016 => X0 -longname3070 => X1 -longname3124 => X2 -longname3178 => X3 -longname3232 => X4 -longname3286 => X5 -longname3340 => X6 -longname3394 => X7 -longname3448 => X8 -longname3502 => X9 -longname1504 => XA -longname4960 => XAa -longname1558 => XB -longname1612 => XC -longname1666 => XD -longname1720 => XE -longname1774 => XF -longname1828 => XG -longname1882 => XH -longname1936 => XI -longname1990 => XJ -longname2044 => XK -longname2098 => XL -longname2152 => XM -longname2206 => XN -longname2260 => XO -longname2314 => XP -longname2368 => XQ -longname2422 => XR -longname2476 => XS -longname2530 => XT -longname2584 => XU -longname2638 => XV -longname2692 => XW -longname2746 => XX -longname2800 => XY -longname2854 => XZ -longname2908 => X_ -longname103 => Xa -longname3556 => Xaa -longname157 => Xb -longname3610 => Xba -longname211 => Xc -longname3664 => Xca -longname265 => Xd -longname3718 => Xda -longname319 => Xe -longname3772 => Xea -longname372 => Xf -longname3826 => Xfa -longname426 => Xg -longname3880 => Xga -longname480 => Xh -longname3934 => Xha -longname534 => Xi -longname3988 => Xia -longname588 => Xj -longname4042 => Xja -longname642 => Xk -longname4096 => Xka -longname696 => Xl -longname4150 => Xla -longname750 => Xm -longname4204 => Xma -longname803 => Xn -longname4258 => Xna -longname856 => Xo -longname4312 => Xoa -longname910 => Xp -longname4366 => Xpa -longname964 => Xq -longname4420 => Xqa -longname1018 => Xr -longname4474 => Xra -longname1072 => Xs -longname4528 => Xsa -longname1126 => Xt -longname4582 => Xta -longname1180 => Xu -longname4636 => Xua -longname1234 => Xv -longname4690 => Xva -longname1288 => Xw -longname4744 => Xwa -longname1342 => Xx -longname4798 => Xxa -longname1396 => Xy -longname4852 => Xya -longname1450 => Xz -longname4906 => Xza -longname50 => Y -longname2963 => Y$ -longname3017 => Y0 -longname3071 => Y1 -longname3125 => Y2 -longname3179 => Y3 -longname3233 => Y4 -longname3287 => Y5 -longname3341 => Y6 -longname3395 => Y7 -longname3449 => Y8 -longname3503 => Y9 -longname1505 => YA -longname4961 => YAa -longname1559 => YB -longname1613 => YC -longname1667 => YD -longname1721 => YE -longname1775 => YF -longname1829 => YG -longname1883 => YH -longname1937 => YI -longname1991 => YJ -longname2045 => YK -longname2099 => YL -longname2153 => YM -longname2207 => YN -longname2261 => YO -longname2315 => YP -longname2369 => YQ -longname2423 => YR -longname2477 => YS -longname2531 => YT -longname2585 => YU -longname2639 => YV -longname2693 => YW -longname2747 => YX -longname2801 => YY -longname2855 => YZ -longname2909 => Y_ -longname104 => Ya -longname3557 => Yaa -longname158 => Yb -longname3611 => Yba -longname212 => Yc -longname3665 => Yca -longname266 => Yd -longname3719 => Yda -longname320 => Ye -longname3773 => Yea -longname373 => Yf -longname3827 => Yfa -longname427 => Yg -longname3881 => Yga -longname481 => Yh -longname3935 => Yha -longname535 => Yi -longname3989 => Yia -longname589 => Yj -longname4043 => Yja -longname643 => Yk -longname4097 => Yka -longname697 => Yl -longname4151 => Yla -longname751 => Ym -longname4205 => Yma -longname804 => Yn -longname4259 => Yna -longname857 => Yo -longname4313 => Yoa -longname911 => Yp -longname4367 => Ypa -longname965 => Yq -longname4421 => Yqa -longname1019 => Yr -longname4475 => Yra -longname1073 => Ys -longname4529 => Ysa -longname1127 => Yt -longname4583 => Yta -longname1181 => Yu -longname4637 => Yua -longname1235 => Yv -longname4691 => Yva -longname1289 => Yw -longname4745 => Ywa -longname1343 => Yx -longname4799 => Yxa -longname1397 => Yy -longname4853 => Yya -longname1451 => Yz -longname4907 => Yza -longname51 => Z -longname2964 => Z$ -longname3018 => Z0 -longname3072 => Z1 -longname3126 => Z2 -longname3180 => Z3 -longname3234 => Z4 -longname3288 => Z5 -longname3342 => Z6 -longname3396 => Z7 -longname3450 => Z8 -longname3504 => Z9 -longname1506 => ZA -longname4962 => ZAa -longname1560 => ZB -longname1614 => ZC -longname1668 => ZD -longname1722 => ZE -longname1776 => ZF -longname1830 => ZG -longname1884 => ZH -longname1938 => ZI -longname1992 => ZJ -longname2046 => ZK -longname2100 => ZL -longname2154 => ZM -longname2208 => ZN -longname2262 => ZO -longname2316 => ZP -longname2370 => ZQ -longname2424 => ZR -longname2478 => ZS -longname2532 => ZT -longname2586 => ZU -longname2640 => ZV -longname2694 => ZW -longname2748 => ZX -longname2802 => ZY -longname2856 => ZZ -longname2910 => Z_ -longname105 => Za -longname3558 => Zaa -longname159 => Zb -longname3612 => Zba -longname213 => Zc -longname3666 => Zca -longname267 => Zd -longname3720 => Zda -longname321 => Ze -longname3774 => Zea -longname374 => Zf -longname3828 => Zfa -longname428 => Zg -longname3882 => Zga -longname482 => Zh -longname3936 => Zha -longname536 => Zi -longname3990 => Zia -longname590 => Zj -longname4044 => Zja -longname644 => Zk -longname4098 => Zka -longname698 => Zl -longname4152 => Zla -longname752 => Zm -longname4206 => Zma -longname805 => Zn -longname4260 => Zna -longname858 => Zo -longname4314 => Zoa -longname912 => Zp -longname4368 => Zpa -longname966 => Zq -longname4422 => Zqa -longname1020 => Zr -longname4476 => Zra -longname1074 => Zs -longname4530 => Zsa -longname1128 => Zt -longname4584 => Zta -longname1182 => Zu -longname4638 => Zua -longname1236 => Zv -longname4692 => Zva -longname1290 => Zw -longname4746 => Zwa -longname1344 => Zx -longname4800 => Zxa -longname1398 => Zy -longname4854 => Zya -longname1452 => Zz -longname4908 => Zza -longname52 => _ -longname2965 => _$ -longname3019 => _0 -longname3073 => _1 -longname3127 => _2 -longname3181 => _3 -longname3235 => _4 -longname3289 => _5 -longname3343 => _6 -longname3397 => _7 -longname3451 => _8 -longname3505 => _9 -longname1507 => _A -longname4963 => _Aa -longname1561 => _B -longname1615 => _C -longname1669 => _D -longname1723 => _E -longname1777 => _F -longname1831 => _G -longname1885 => _H -longname1939 => _I -longname1993 => _J -longname2047 => _K -longname2101 => _L -longname2155 => _M -longname2209 => _N -longname2263 => _O -longname2317 => _P -longname2371 => _Q -longname2425 => _R -longname2479 => _S -longname2533 => _T -longname2587 => _U -longname2641 => _V -longname2695 => _W -longname2749 => _X -longname2803 => _Y -longname2857 => _Z -longname2911 => __ -longname106 => _a -longname3559 => _aa -longname160 => _b -longname3613 => _ba -longname214 => _c -longname3667 => _ca -longname268 => _d -longname3721 => _da -longname322 => _e -longname3775 => _ea -longname375 => _f -longname3829 => _fa -longname429 => _g -longname3883 => _ga -longname483 => _h -longname3937 => _ha -longname537 => _i -longname3991 => _ia -longname591 => _j -longname4045 => _ja -longname645 => _k -longname4099 => _ka -longname699 => _l -longname4153 => _la -longname753 => _m -longname4207 => _ma -longname806 => _n -longname4261 => _na -longname859 => _o -longname4315 => _oa -longname913 => _p -longname4369 => _pa -longname967 => _q -longname4423 => _qa -longname1021 => _r -longname4477 => _ra -longname1075 => _s -longname4531 => _sa -longname1129 => _t -longname4585 => _ta -longname1183 => _u -longname4639 => _ua -longname1237 => _v -longname4693 => _va -longname1291 => _w -longname4747 => _wa -longname1345 => _x -longname4801 => _xa -longname1399 => _y -longname4855 => _ya -longname1453 => _z -longname4909 => _za +longname51 => $ +longname2964 => $$ +longname3018 => $0 +longname3072 => $1 +longname3126 => $2 +longname3180 => $3 +longname3234 => $4 +longname3288 => $5 +longname3342 => $6 +longname3396 => $7 +longname3450 => $8 +longname3504 => $9 +longname1506 => $A +longname4962 => $Aa +longname1560 => $B +longname1614 => $C +longname1668 => $D +longname1722 => $E +longname1776 => $F +longname1830 => $G +longname1884 => $H +longname1938 => $I +longname1992 => $J +longname2046 => $K +longname2100 => $L +longname2154 => $M +longname2208 => $N +longname2262 => $O +longname2316 => $P +longname2370 => $Q +longname2424 => $R +longname2478 => $S +longname2532 => $T +longname2586 => $U +longname2640 => $V +longname2694 => $W +longname2748 => $X +longname2802 => $Y +longname2856 => $Z +longname2910 => $_ +longname105 => $a +longname3558 => $aa +longname159 => $b +longname3612 => $ba +longname213 => $c +longname3666 => $ca +longname267 => $d +longname3720 => $da +longname321 => $e +longname3774 => $ea +longname374 => $f +longname3828 => $fa +longname428 => $g +longname3882 => $ga +longname482 => $h +longname3936 => $ha +longname536 => $i +longname3990 => $ia +longname590 => $j +longname4044 => $ja +longname644 => $k +longname4098 => $ka +longname698 => $l +longname4152 => $la +longname752 => $m +longname4206 => $ma +longname805 => $n +longname4260 => $na +longname858 => $o +longname4314 => $oa +longname912 => $p +longname4368 => $pa +longname966 => $q +longname4422 => $qa +longname1020 => $r +longname4476 => $ra +longname1074 => $s +longname4530 => $sa +longname1128 => $t +longname4584 => $ta +longname1182 => $u +longname4638 => $ua +longname1236 => $v +longname4692 => $va +longname1290 => $w +longname4746 => $wa +longname1344 => $x +longname4800 => $xa +longname1398 => $y +longname4854 => $ya +longname1452 => $z +longname4908 => $za +longname24 => A +longname2937 => A$ +longname2991 => A0 +longname3045 => A1 +longname3099 => A2 +longname3153 => A3 +longname3207 => A4 +longname3261 => A5 +longname3315 => A6 +longname3369 => A7 +longname3423 => A8 +longname3477 => A9 +longname1479 => AA +longname4935 => AAa +longname1533 => AB +longname4989 => ABa +longname1587 => AC +longname1641 => AD +longname1695 => AE +longname1749 => AF +longname1803 => AG +longname1857 => AH +longname1911 => AI +longname1965 => AJ +longname2019 => AK +longname2073 => AL +longname2127 => AM +longname2181 => AN +longname2235 => AO +longname2289 => AP +longname2343 => AQ +longname2397 => AR +longname2451 => AS +longname2505 => AT +longname2559 => AU +longname2613 => AV +longname2667 => AW +longname2721 => AX +longname2775 => AY +longname2829 => AZ +longname2883 => A_ +longname78 => Aa +longname3531 => Aaa +longname132 => Ab +longname3585 => Aba +longname186 => Ac +longname3639 => Aca +longname240 => Ad +longname3693 => Ada +longname294 => Ae +longname3747 => Aea +longname347 => Af +longname3801 => Afa +longname401 => Ag +longname3855 => Aga +longname455 => Ah +longname3909 => Aha +longname509 => Ai +longname3963 => Aia +longname563 => Aj +longname4017 => Aja +longname617 => Ak +longname4071 => Aka +longname671 => Al +longname4125 => Ala +longname725 => Am +longname4179 => Ama +longname778 => An +longname4233 => Ana +longname831 => Ao +longname4287 => Aoa +longname885 => Ap +longname4341 => Apa +longname939 => Aq +longname4395 => Aqa +longname993 => Ar +longname4449 => Ara +longname1047 => As +longname4503 => Asa +longname1101 => At +longname4557 => Ata +longname1155 => Au +longname4611 => Aua +longname1209 => Av +longname4665 => Ava +longname1263 => Aw +longname4719 => Awa +longname1317 => Ax +longname4773 => Axa +longname1371 => Ay +longname4827 => Aya +longname1425 => Az +longname4881 => Aza +longname25 => B +longname2938 => B$ +longname2992 => B0 +longname3046 => B1 +longname3100 => B2 +longname3154 => B3 +longname3208 => B4 +longname3262 => B5 +longname3316 => B6 +longname3370 => B7 +longname3424 => B8 +longname3478 => B9 +longname1480 => BA +longname4936 => BAa +longname1534 => BB +longname4990 => BBa +longname1588 => BC +longname1642 => BD +longname1696 => BE +longname1750 => BF +longname1804 => BG +longname1858 => BH +longname1912 => BI +longname1966 => BJ +longname2020 => BK +longname2074 => BL +longname2128 => BM +longname2182 => BN +longname2236 => BO +longname2290 => BP +longname2344 => BQ +longname2398 => BR +longname2452 => BS +longname2506 => BT +longname2560 => BU +longname2614 => BV +longname2668 => BW +longname2722 => BX +longname2776 => BY +longname2830 => BZ +longname2884 => B_ +longname79 => Ba +longname3532 => Baa +longname133 => Bb +longname3586 => Bba +longname187 => Bc +longname3640 => Bca +longname241 => Bd +longname3694 => Bda +longname295 => Be +longname3748 => Bea +longname348 => Bf +longname3802 => Bfa +longname402 => Bg +longname3856 => Bga +longname456 => Bh +longname3910 => Bha +longname510 => Bi +longname3964 => Bia +longname564 => Bj +longname4018 => Bja +longname618 => Bk +longname4072 => Bka +longname672 => Bl +longname4126 => Bla +longname726 => Bm +longname4180 => Bma +longname779 => Bn +longname4234 => Bna +longname832 => Bo +longname4288 => Boa +longname886 => Bp +longname4342 => Bpa +longname940 => Bq +longname4396 => Bqa +longname994 => Br +longname4450 => Bra +longname1048 => Bs +longname4504 => Bsa +longname1102 => Bt +longname4558 => Bta +longname1156 => Bu +longname4612 => Bua +longname1210 => Bv +longname4666 => Bva +longname1264 => Bw +longname4720 => Bwa +longname1318 => Bx +longname4774 => Bxa +longname1372 => By +longname4828 => Bya +longname1426 => Bz +longname4882 => Bza +longname26 => C +longname2939 => C$ +longname2993 => C0 +longname3047 => C1 +longname3101 => C2 +longname3155 => C3 +longname3209 => C4 +longname3263 => C5 +longname3317 => C6 +longname3371 => C7 +longname3425 => C8 +longname3479 => C9 +longname1481 => CA +longname4937 => CAa +longname1535 => CB +longname4991 => CBa +longname1589 => CC +longname1643 => CD +longname1697 => CE +longname1751 => CF +longname1805 => CG +longname1859 => CH +longname1913 => CI +longname1967 => CJ +longname2021 => CK +longname2075 => CL +longname2129 => CM +longname2183 => CN +longname2237 => CO +longname2291 => CP +longname2345 => CQ +longname2399 => CR +longname2453 => CS +longname2507 => CT +longname2561 => CU +longname2615 => CV +longname2669 => CW +longname2723 => CX +longname2777 => CY +longname2831 => CZ +longname2885 => C_ +longname80 => Ca +longname3533 => Caa +longname134 => Cb +longname3587 => Cba +longname188 => Cc +longname3641 => Cca +longname242 => Cd +longname3695 => Cda +longname296 => Ce +longname3749 => Cea +longname349 => Cf +longname3803 => Cfa +longname403 => Cg +longname3857 => Cga +longname457 => Ch +longname3911 => Cha +longname511 => Ci +longname3965 => Cia +longname565 => Cj +longname4019 => Cja +longname619 => Ck +longname4073 => Cka +longname673 => Cl +longname4127 => Cla +longname727 => Cm +longname4181 => Cma +longname780 => Cn +longname4235 => Cna +longname833 => Co +longname4289 => Coa +longname887 => Cp +longname4343 => Cpa +longname941 => Cq +longname4397 => Cqa +longname995 => Cr +longname4451 => Cra +longname1049 => Cs +longname4505 => Csa +longname1103 => Ct +longname4559 => Cta +longname1157 => Cu +longname4613 => Cua +longname1211 => Cv +longname4667 => Cva +longname1265 => Cw +longname4721 => Cwa +longname1319 => Cx +longname4775 => Cxa +longname1373 => Cy +longname4829 => Cya +longname1427 => Cz +longname4883 => Cza +longname27 => D +longname2940 => D$ +longname2994 => D0 +longname3048 => D1 +longname3102 => D2 +longname3156 => D3 +longname3210 => D4 +longname3264 => D5 +longname3318 => D6 +longname3372 => D7 +longname3426 => D8 +longname3480 => D9 +longname1482 => DA +longname4938 => DAa +longname1536 => DB +longname4992 => DBa +longname1590 => DC +longname1644 => DD +longname1698 => DE +longname1752 => DF +longname1806 => DG +longname1860 => DH +longname1914 => DI +longname1968 => DJ +longname2022 => DK +longname2076 => DL +longname2130 => DM +longname2184 => DN +longname2238 => DO +longname2292 => DP +longname2346 => DQ +longname2400 => DR +longname2454 => DS +longname2508 => DT +longname2562 => DU +longname2616 => DV +longname2670 => DW +longname2724 => DX +longname2778 => DY +longname2832 => DZ +longname2886 => D_ +longname81 => Da +longname3534 => Daa +longname135 => Db +longname3588 => Dba +longname189 => Dc +longname3642 => Dca +longname243 => Dd +longname3696 => Dda +longname297 => De +longname3750 => Dea +longname350 => Df +longname3804 => Dfa +longname404 => Dg +longname3858 => Dga +longname458 => Dh +longname3912 => Dha +longname512 => Di +longname3966 => Dia +longname566 => Dj +longname4020 => Dja +longname620 => Dk +longname4074 => Dka +longname674 => Dl +longname4128 => Dla +longname728 => Dm +longname4182 => Dma +longname781 => Dn +longname4236 => Dna +longname834 => Do +longname4290 => Doa +longname888 => Dp +longname4344 => Dpa +longname942 => Dq +longname4398 => Dqa +longname996 => Dr +longname4452 => Dra +longname1050 => Ds +longname4506 => Dsa +longname1104 => Dt +longname4560 => Dta +longname1158 => Du +longname4614 => Dua +longname1212 => Dv +longname4668 => Dva +longname1266 => Dw +longname4722 => Dwa +longname1320 => Dx +longname4776 => Dxa +longname1374 => Dy +longname4830 => Dya +longname1428 => Dz +longname4884 => Dza +longname28 => E +longname2941 => E$ +longname2995 => E0 +longname3049 => E1 +longname3103 => E2 +longname3157 => E3 +longname3211 => E4 +longname3265 => E5 +longname3319 => E6 +longname3373 => E7 +longname3427 => E8 +longname3481 => E9 +longname1483 => EA +longname4939 => EAa +longname1537 => EB +longname4993 => EBa +longname1591 => EC +longname1645 => ED +longname1699 => EE +longname1753 => EF +longname1807 => EG +longname1861 => EH +longname1915 => EI +longname1969 => EJ +longname2023 => EK +longname2077 => EL +longname2131 => EM +longname2185 => EN +longname2239 => EO +longname2293 => EP +longname2347 => EQ +longname2401 => ER +longname2455 => ES +longname2509 => ET +longname2563 => EU +longname2617 => EV +longname2671 => EW +longname2725 => EX +longname2779 => EY +longname2833 => EZ +longname2887 => E_ +longname82 => Ea +longname3535 => Eaa +longname136 => Eb +longname3589 => Eba +longname190 => Ec +longname3643 => Eca +longname244 => Ed +longname3697 => Eda +longname298 => Ee +longname3751 => Eea +longname351 => Ef +longname3805 => Efa +longname405 => Eg +longname3859 => Ega +longname459 => Eh +longname3913 => Eha +longname513 => Ei +longname3967 => Eia +longname567 => Ej +longname4021 => Eja +longname621 => Ek +longname4075 => Eka +longname675 => El +longname4129 => Ela +longname729 => Em +longname4183 => Ema +longname782 => En +longname4237 => Ena +longname835 => Eo +longname4291 => Eoa +longname889 => Ep +longname4345 => Epa +longname943 => Eq +longname4399 => Eqa +longname997 => Er +longname4453 => Era +longname1051 => Es +longname4507 => Esa +longname1105 => Et +longname4561 => Eta +longname1159 => Eu +longname4615 => Eua +longname1213 => Ev +longname4669 => Eva +longname1267 => Ew +longname4723 => Ewa +longname1321 => Ex +longname4777 => Exa +longname1375 => Ey +longname4831 => Eya +longname1429 => Ez +longname4885 => Eza +longname29 => F +longname2942 => F$ +longname2996 => F0 +longname3050 => F1 +longname3104 => F2 +longname3158 => F3 +longname3212 => F4 +longname3266 => F5 +longname3320 => F6 +longname3374 => F7 +longname3428 => F8 +longname3482 => F9 +longname1484 => FA +longname4940 => FAa +longname1538 => FB +longname4994 => FBa +longname1592 => FC +longname1646 => FD +longname1700 => FE +longname1754 => FF +longname1808 => FG +longname1862 => FH +longname1916 => FI +longname1970 => FJ +longname2024 => FK +longname2078 => FL +longname2132 => FM +longname2186 => FN +longname2240 => FO +longname2294 => FP +longname2348 => FQ +longname2402 => FR +longname2456 => FS +longname2510 => FT +longname2564 => FU +longname2618 => FV +longname2672 => FW +longname2726 => FX +longname2780 => FY +longname2834 => FZ +longname2888 => F_ +longname83 => Fa +longname3536 => Faa +longname137 => Fb +longname3590 => Fba +longname191 => Fc +longname3644 => Fca +longname245 => Fd +longname3698 => Fda +longname299 => Fe +longname3752 => Fea +longname352 => Ff +longname3806 => Ffa +longname406 => Fg +longname3860 => Fga +longname460 => Fh +longname3914 => Fha +longname514 => Fi +longname3968 => Fia +longname568 => Fj +longname4022 => Fja +longname622 => Fk +longname4076 => Fka +longname676 => Fl +longname4130 => Fla +longname730 => Fm +longname4184 => Fma +longname783 => Fn +longname4238 => Fna +longname836 => Fo +longname4292 => Foa +longname890 => Fp +longname4346 => Fpa +longname944 => Fq +longname4400 => Fqa +longname998 => Fr +longname4454 => Fra +longname1052 => Fs +longname4508 => Fsa +longname1106 => Ft +longname4562 => Fta +longname1160 => Fu +longname4616 => Fua +longname1214 => Fv +longname4670 => Fva +longname1268 => Fw +longname4724 => Fwa +longname1322 => Fx +longname4778 => Fxa +longname1376 => Fy +longname4832 => Fya +longname1430 => Fz +longname4886 => Fza +longname30 => G +longname2943 => G$ +longname2997 => G0 +longname3051 => G1 +longname3105 => G2 +longname3159 => G3 +longname3213 => G4 +longname3267 => G5 +longname3321 => G6 +longname3375 => G7 +longname3429 => G8 +longname3483 => G9 +longname1485 => GA +longname4941 => GAa +longname1539 => GB +longname4995 => GBa +longname1593 => GC +longname1647 => GD +longname1701 => GE +longname1755 => GF +longname1809 => GG +longname1863 => GH +longname1917 => GI +longname1971 => GJ +longname2025 => GK +longname2079 => GL +longname2133 => GM +longname2187 => GN +longname2241 => GO +longname2295 => GP +longname2349 => GQ +longname2403 => GR +longname2457 => GS +longname2511 => GT +longname2565 => GU +longname2619 => GV +longname2673 => GW +longname2727 => GX +longname2781 => GY +longname2835 => GZ +longname2889 => G_ +longname84 => Ga +longname3537 => Gaa +longname138 => Gb +longname3591 => Gba +longname192 => Gc +longname3645 => Gca +longname246 => Gd +longname3699 => Gda +longname300 => Ge +longname3753 => Gea +longname353 => Gf +longname3807 => Gfa +longname407 => Gg +longname3861 => Gga +longname461 => Gh +longname3915 => Gha +longname515 => Gi +longname3969 => Gia +longname569 => Gj +longname4023 => Gja +longname623 => Gk +longname4077 => Gka +longname677 => Gl +longname4131 => Gla +longname731 => Gm +longname4185 => Gma +longname784 => Gn +longname4239 => Gna +longname837 => Go +longname4293 => Goa +longname891 => Gp +longname4347 => Gpa +longname945 => Gq +longname4401 => Gqa +longname999 => Gr +longname4455 => Gra +longname1053 => Gs +longname4509 => Gsa +longname1107 => Gt +longname4563 => Gta +longname1161 => Gu +longname4617 => Gua +longname1215 => Gv +longname4671 => Gva +longname1269 => Gw +longname4725 => Gwa +longname1323 => Gx +longname4779 => Gxa +longname1377 => Gy +longname4833 => Gya +longname1431 => Gz +longname4887 => Gza +longname31 => H +longname2944 => H$ +longname2998 => H0 +longname3052 => H1 +longname3106 => H2 +longname3160 => H3 +longname3214 => H4 +longname3268 => H5 +longname3322 => H6 +longname3376 => H7 +longname3430 => H8 +longname3484 => H9 +longname1486 => HA +longname4942 => HAa +longname1540 => HB +longname4996 => HBa +longname1594 => HC +longname1648 => HD +longname1702 => HE +longname1756 => HF +longname1810 => HG +longname1864 => HH +longname1918 => HI +longname1972 => HJ +longname2026 => HK +longname2080 => HL +longname2134 => HM +longname2188 => HN +longname2242 => HO +longname2296 => HP +longname2350 => HQ +longname2404 => HR +longname2458 => HS +longname2512 => HT +longname2566 => HU +longname2620 => HV +longname2674 => HW +longname2728 => HX +longname2782 => HY +longname2836 => HZ +longname2890 => H_ +longname85 => Ha +longname3538 => Haa +longname139 => Hb +longname3592 => Hba +longname193 => Hc +longname3646 => Hca +longname247 => Hd +longname3700 => Hda +longname301 => He +longname3754 => Hea +longname354 => Hf +longname3808 => Hfa +longname408 => Hg +longname3862 => Hga +longname462 => Hh +longname3916 => Hha +longname516 => Hi +longname3970 => Hia +longname570 => Hj +longname4024 => Hja +longname624 => Hk +longname4078 => Hka +longname678 => Hl +longname4132 => Hla +longname732 => Hm +longname4186 => Hma +longname785 => Hn +longname4240 => Hna +longname838 => Ho +longname4294 => Hoa +longname892 => Hp +longname4348 => Hpa +longname946 => Hq +longname4402 => Hqa +longname1000 => Hr +longname4456 => Hra +longname1054 => Hs +longname4510 => Hsa +longname1108 => Ht +longname4564 => Hta +longname1162 => Hu +longname4618 => Hua +longname1216 => Hv +longname4672 => Hva +longname1270 => Hw +longname4726 => Hwa +longname1324 => Hx +longname4780 => Hxa +longname1378 => Hy +longname4834 => Hya +longname1432 => Hz +longname4888 => Hza +longname32 => I +longname2945 => I$ +longname2999 => I0 +longname3053 => I1 +longname3107 => I2 +longname3161 => I3 +longname3215 => I4 +longname3269 => I5 +longname3323 => I6 +longname3377 => I7 +longname3431 => I8 +longname3485 => I9 +longname1487 => IA +longname4943 => IAa +longname1541 => IB +longname4997 => IBa +longname1595 => IC +longname1649 => ID +longname1703 => IE +longname1757 => IF +longname1811 => IG +longname1865 => IH +longname1919 => II +longname1973 => IJ +longname2027 => IK +longname2081 => IL +longname2135 => IM +longname2189 => IN +longname2243 => IO +longname2297 => IP +longname2351 => IQ +longname2405 => IR +longname2459 => IS +longname2513 => IT +longname2567 => IU +longname2621 => IV +longname2675 => IW +longname2729 => IX +longname2783 => IY +longname2837 => IZ +longname2891 => I_ +longname86 => Ia +longname3539 => Iaa +longname140 => Ib +longname3593 => Iba +longname194 => Ic +longname3647 => Ica +longname248 => Id +longname3701 => Ida +longname302 => Ie +longname3755 => Iea +longname355 => If +longname3809 => Ifa +longname409 => Ig +longname3863 => Iga +longname463 => Ih +longname3917 => Iha +longname517 => Ii +longname3971 => Iia +longname571 => Ij +longname4025 => Ija +longname625 => Ik +longname4079 => Ika +longname679 => Il +longname4133 => Ila +longname733 => Im +longname4187 => Ima +longname786 => In +longname4241 => Ina +longname839 => Io +longname4295 => Ioa +longname893 => Ip +longname4349 => Ipa +longname947 => Iq +longname4403 => Iqa +longname1001 => Ir +longname4457 => Ira +longname1055 => Is +longname4511 => Isa +longname1109 => It +longname4565 => Ita +longname1163 => Iu +longname4619 => Iua +longname1217 => Iv +longname4673 => Iva +longname1271 => Iw +longname4727 => Iwa +longname1325 => Ix +longname4781 => Ixa +longname1379 => Iy +longname4835 => Iya +longname1433 => Iz +longname4889 => Iza +longname33 => J +longname2946 => J$ +longname3000 => J0 +longname3054 => J1 +longname3108 => J2 +longname3162 => J3 +longname3216 => J4 +longname3270 => J5 +longname3324 => J6 +longname3378 => J7 +longname3432 => J8 +longname3486 => J9 +longname1488 => JA +longname4944 => JAa +longname1542 => JB +longname4998 => JBa +longname1596 => JC +longname1650 => JD +longname1704 => JE +longname1758 => JF +longname1812 => JG +longname1866 => JH +longname1920 => JI +longname1974 => JJ +longname2028 => JK +longname2082 => JL +longname2136 => JM +longname2190 => JN +longname2244 => JO +longname2298 => JP +longname2352 => JQ +longname2406 => JR +longname2460 => JS +longname2514 => JT +longname2568 => JU +longname2622 => JV +longname2676 => JW +longname2730 => JX +longname2784 => JY +longname2838 => JZ +longname2892 => J_ +longname87 => Ja +longname3540 => Jaa +longname141 => Jb +longname3594 => Jba +longname195 => Jc +longname3648 => Jca +longname249 => Jd +longname3702 => Jda +longname303 => Je +longname3756 => Jea +longname356 => Jf +longname3810 => Jfa +longname410 => Jg +longname3864 => Jga +longname464 => Jh +longname3918 => Jha +longname518 => Ji +longname3972 => Jia +longname572 => Jj +longname4026 => Jja +longname626 => Jk +longname4080 => Jka +longname680 => Jl +longname4134 => Jla +longname734 => Jm +longname4188 => Jma +longname787 => Jn +longname4242 => Jna +longname840 => Jo +longname4296 => Joa +longname894 => Jp +longname4350 => Jpa +longname948 => Jq +longname4404 => Jqa +longname1002 => Jr +longname4458 => Jra +longname1056 => Js +longname4512 => Jsa +longname1110 => Jt +longname4566 => Jta +longname1164 => Ju +longname4620 => Jua +longname1218 => Jv +longname4674 => Jva +longname1272 => Jw +longname4728 => Jwa +longname1326 => Jx +longname4782 => Jxa +longname1380 => Jy +longname4836 => Jya +longname1434 => Jz +longname4890 => Jza +longname34 => K +longname2947 => K$ +longname3001 => K0 +longname3055 => K1 +longname3109 => K2 +longname3163 => K3 +longname3217 => K4 +longname3271 => K5 +longname3325 => K6 +longname3379 => K7 +longname3433 => K8 +longname3487 => K9 +longname1489 => KA +longname4945 => KAa +longname1543 => KB +longname4999 => KBa +longname1597 => KC +longname1651 => KD +longname1705 => KE +longname1759 => KF +longname1813 => KG +longname1867 => KH +longname1921 => KI +longname1975 => KJ +longname2029 => KK +longname2083 => KL +longname2137 => KM +longname2191 => KN +longname2245 => KO +longname2299 => KP +longname2353 => KQ +longname2407 => KR +longname2461 => KS +longname2515 => KT +longname2569 => KU +longname2623 => KV +longname2677 => KW +longname2731 => KX +longname2785 => KY +longname2839 => KZ +longname2893 => K_ +longname88 => Ka +longname3541 => Kaa +longname142 => Kb +longname3595 => Kba +longname196 => Kc +longname3649 => Kca +longname250 => Kd +longname3703 => Kda +longname304 => Ke +longname3757 => Kea +longname357 => Kf +longname3811 => Kfa +longname411 => Kg +longname3865 => Kga +longname465 => Kh +longname3919 => Kha +longname519 => Ki +longname3973 => Kia +longname573 => Kj +longname4027 => Kja +longname627 => Kk +longname4081 => Kka +longname681 => Kl +longname4135 => Kla +longname735 => Km +longname4189 => Kma +longname788 => Kn +longname4243 => Kna +longname841 => Ko +longname4297 => Koa +longname895 => Kp +longname4351 => Kpa +longname949 => Kq +longname4405 => Kqa +longname1003 => Kr +longname4459 => Kra +longname1057 => Ks +longname4513 => Ksa +longname1111 => Kt +longname4567 => Kta +longname1165 => Ku +longname4621 => Kua +longname1219 => Kv +longname4675 => Kva +longname1273 => Kw +longname4729 => Kwa +longname1327 => Kx +longname4783 => Kxa +longname1381 => Ky +longname4837 => Kya +longname1435 => Kz +longname4891 => Kza +longname35 => L +longname2948 => L$ +longname3002 => L0 +longname3056 => L1 +longname3110 => L2 +longname3164 => L3 +longname3218 => L4 +longname3272 => L5 +longname3326 => L6 +longname3380 => L7 +longname3434 => L8 +longname3488 => L9 +longname1490 => LA +longname4946 => LAa +longname1544 => LB +longname3-only => LBa +longname1598 => LC +longname1652 => LD +longname1706 => LE +longname1760 => LF +longname1814 => LG +longname1868 => LH +longname1922 => LI +longname1976 => LJ +longname2030 => LK +longname2084 => LL +longname2138 => LM +longname2192 => LN +longname2246 => LO +longname2300 => LP +longname2354 => LQ +longname2408 => LR +longname2462 => LS +longname2516 => LT +longname2570 => LU +longname2624 => LV +longname2678 => LW +longname2732 => LX +longname2786 => LY +longname2840 => LZ +longname2894 => L_ +longname89 => La +longname3542 => Laa +longname143 => Lb +longname3596 => Lba +longname197 => Lc +longname3650 => Lca +longname251 => Ld +longname3704 => Lda +longname305 => Le +longname3758 => Lea +longname358 => Lf +longname3812 => Lfa +longname412 => Lg +longname3866 => Lga +longname466 => Lh +longname3920 => Lha +longname520 => Li +longname3974 => Lia +longname574 => Lj +longname4028 => Lja +longname628 => Lk +longname4082 => Lka +longname682 => Ll +longname4136 => Lla +longname736 => Lm +longname4190 => Lma +longname789 => Ln +longname4244 => Lna +longname842 => Lo +longname4298 => Loa +longname896 => Lp +longname4352 => Lpa +longname950 => Lq +longname4406 => Lqa +longname1004 => Lr +longname4460 => Lra +longname1058 => Ls +longname4514 => Lsa +longname1112 => Lt +longname4568 => Lta +longname1166 => Lu +longname4622 => Lua +longname1220 => Lv +longname4676 => Lva +longname1274 => Lw +longname4730 => Lwa +longname1328 => Lx +longname4784 => Lxa +longname1382 => Ly +longname4838 => Lya +longname1436 => Lz +longname4892 => Lza +longname36 => M +longname2949 => M$ +longname3003 => M0 +longname3057 => M1 +longname3111 => M2 +longname3165 => M3 +longname3219 => M4 +longname3273 => M5 +longname3327 => M6 +longname3381 => M7 +longname3435 => M8 +longname3489 => M9 +longname1491 => MA +longname4947 => MAa +longname1545 => MB +eventname1 => MBa +longname1599 => MC +longname1653 => MD +longname1707 => ME +longname1761 => MF +longname1815 => MG +longname1869 => MH +longname1923 => MI +longname1977 => MJ +longname2031 => MK +longname2085 => ML +longname2139 => MM +longname2193 => MN +longname2247 => MO +longname2301 => MP +longname2355 => MQ +longname2409 => MR +longname2463 => MS +longname2517 => MT +longname2571 => MU +longname2625 => MV +longname2679 => MW +longname2733 => MX +longname2787 => MY +longname2841 => MZ +longname2895 => M_ +longname90 => Ma +longname3543 => Maa +longname144 => Mb +longname3597 => Mba +longname198 => Mc +longname3651 => Mca +longname252 => Md +longname3705 => Mda +longname306 => Me +longname3759 => Mea +longname359 => Mf +longname3813 => Mfa +longname413 => Mg +longname3867 => Mga +longname467 => Mh +longname3921 => Mha +longname521 => Mi +longname3975 => Mia +longname575 => Mj +longname4029 => Mja +longname629 => Mk +longname4083 => Mka +longname683 => Ml +longname4137 => Mla +longname737 => Mm +longname4191 => Mma +longname790 => Mn +longname4245 => Mna +longname843 => Mo +longname4299 => Moa +longname897 => Mp +longname4353 => Mpa +longname951 => Mq +longname4407 => Mqa +longname1005 => Mr +longname4461 => Mra +longname1059 => Ms +longname4515 => Msa +longname1113 => Mt +longname4569 => Mta +longname1167 => Mu +longname4623 => Mua +longname1221 => Mv +longname4677 => Mva +longname1275 => Mw +longname4731 => Mwa +longname1329 => Mx +longname4785 => Mxa +longname1383 => My +longname4839 => Mya +longname1437 => Mz +longname4893 => Mza +longname37 => N +longname2950 => N$ +longname3004 => N0 +longname3058 => N1 +longname3112 => N2 +longname3166 => N3 +longname3220 => N4 +longname3274 => N5 +longname3328 => N6 +longname3382 => N7 +longname3436 => N8 +longname3490 => N9 +longname1492 => NA +longname4948 => NAa +longname1546 => NB +exp1 => NBa +longname1600 => NC +longname1654 => ND +longname1708 => NE +longname1762 => NF +longname1816 => NG +longname1870 => NH +longname1924 => NI +longname1978 => NJ +longname2032 => NK +longname2086 => NL +longname2140 => NM +longname2194 => NN +longname2248 => NO +longname2302 => NP +longname2356 => NQ +longname2410 => NR +longname2464 => NS +longname2518 => NT +longname2572 => NU +longname2626 => NV +longname2680 => NW +longname2734 => NX +longname2788 => NY +longname2842 => NZ +longname2896 => N_ +longname91 => Na +longname3544 => Naa +longname145 => Nb +longname3598 => Nba +longname199 => Nc +longname3652 => Nca +longname253 => Nd +longname3706 => Nda +longname307 => Ne +longname3760 => Nea +longname360 => Nf +longname3814 => Nfa +longname414 => Ng +longname3868 => Nga +longname468 => Nh +longname3922 => Nha +longname522 => Ni +longname3976 => Nia +longname576 => Nj +longname4030 => Nja +longname630 => Nk +longname4084 => Nka +longname684 => Nl +longname4138 => Nla +longname738 => Nm +longname4192 => Nma +longname791 => Nn +longname4246 => Nna +longname844 => No +longname4300 => Noa +longname898 => Np +longname4354 => Npa +longname952 => Nq +longname4408 => Nqa +longname1006 => Nr +longname4462 => Nra +longname1060 => Ns +longname4516 => Nsa +longname1114 => Nt +longname4570 => Nta +longname1168 => Nu +longname4624 => Nua +longname1222 => Nv +longname4678 => Nva +longname1276 => Nw +longname4732 => Nwa +longname1330 => Nx +longname4786 => Nxa +longname1384 => Ny +longname4840 => Nya +longname1438 => Nz +longname4894 => Nza +longname38 => O +longname2951 => O$ +longname3005 => O0 +longname3059 => O1 +longname3113 => O2 +longname3167 => O3 +longname3221 => O4 +longname3275 => O5 +longname3329 => O6 +longname3383 => O7 +longname3437 => O8 +longname3491 => O9 +longname1493 => OA +longname4949 => OAa +longname1547 => OB +exp2 => OBa +longname1601 => OC +longname1655 => OD +longname1709 => OE +longname1763 => OF +longname1817 => OG +longname1871 => OH +longname1925 => OI +longname1979 => OJ +longname2033 => OK +longname2087 => OL +longname2141 => OM +longname2195 => ON +longname2249 => OO +longname2303 => OP +longname2357 => OQ +longname2411 => OR +longname2465 => OS +longname2519 => OT +longname2573 => OU +longname2627 => OV +longname2681 => OW +longname2735 => OX +longname2789 => OY +longname2843 => OZ +longname2897 => O_ +longname92 => Oa +longname3545 => Oaa +longname146 => Ob +longname3599 => Oba +longname200 => Oc +longname3653 => Oca +longname254 => Od +longname3707 => Oda +longname308 => Oe +longname3761 => Oea +longname361 => Of +longname3815 => Ofa +longname415 => Og +longname3869 => Oga +longname469 => Oh +longname3923 => Oha +longname523 => Oi +longname3977 => Oia +longname577 => Oj +longname4031 => Oja +longname631 => Ok +longname4085 => Oka +longname685 => Ol +longname4139 => Ola +longname739 => Om +longname4193 => Oma +longname792 => On +longname4247 => Ona +longname845 => Oo +longname4301 => Ooa +longname899 => Op +longname4355 => Opa +longname953 => Oq +longname4409 => Oqa +longname1007 => Or +longname4463 => Ora +longname1061 => Os +longname4517 => Osa +longname1115 => Ot +longname4571 => Ota +longname1169 => Ou +longname4625 => Oua +longname1223 => Ov +longname4679 => Ova +longname1277 => Ow +longname4733 => Owa +longname1331 => Ox +longname4787 => Oxa +longname1385 => Oy +longname4841 => Oya +longname1439 => Oz +longname4895 => Oza +longname39 => P +longname2952 => P$ +longname3006 => P0 +longname3060 => P1 +longname3114 => P2 +longname3168 => P3 +longname3222 => P4 +longname3276 => P5 +longname3330 => P6 +longname3384 => P7 +longname3438 => P8 +longname3492 => P9 +longname1494 => PA +longname4950 => PAa +longname1548 => PB +event1 => PBa +longname1602 => PC +longname1656 => PD +longname1710 => PE +longname1764 => PF +longname1818 => PG +longname1872 => PH +longname1926 => PI +longname1980 => PJ +longname2034 => PK +longname2088 => PL +longname2142 => PM +longname2196 => PN +longname2250 => PO +longname2304 => PP +longname2358 => PQ +longname2412 => PR +longname2466 => PS +longname2520 => PT +longname2574 => PU +longname2628 => PV +longname2682 => PW +longname2736 => PX +longname2790 => PY +longname2844 => PZ +longname2898 => P_ +longname93 => Pa +longname3546 => Paa +longname147 => Pb +longname3600 => Pba +longname201 => Pc +longname3654 => Pca +longname255 => Pd +longname3708 => Pda +longname309 => Pe +longname3762 => Pea +longname362 => Pf +longname3816 => Pfa +longname416 => Pg +longname3870 => Pga +longname470 => Ph +longname3924 => Pha +longname524 => Pi +longname3978 => Pia +longname578 => Pj +longname4032 => Pja +longname632 => Pk +longname4086 => Pka +longname686 => Pl +longname4140 => Pla +longname740 => Pm +longname4194 => Pma +longname793 => Pn +longname4248 => Pna +longname846 => Po +longname4302 => Poa +longname900 => Pp +longname4356 => Ppa +longname954 => Pq +longname4410 => Pqa +longname1008 => Pr +longname4464 => Pra +longname1062 => Ps +longname4518 => Psa +longname1116 => Pt +longname4572 => Pta +longname1170 => Pu +longname4626 => Pua +longname1224 => Pv +longname4680 => Pva +longname1278 => Pw +longname4734 => Pwa +longname1332 => Px +longname4788 => Pxa +longname1386 => Py +longname4842 => Pya +longname1440 => Pz +longname4896 => Pza +longname40 => Q +longname2953 => Q$ +longname3007 => Q0 +longname3061 => Q1 +longname3115 => Q2 +longname3169 => Q3 +longname3223 => Q4 +longname3277 => Q5 +longname3331 => Q6 +longname3385 => Q7 +longname3439 => Q8 +longname3493 => Q9 +longname1495 => QA +longname4951 => QAa +longname1549 => QB +longname1603 => QC +longname1657 => QD +longname1711 => QE +longname1765 => QF +longname1819 => QG +longname1873 => QH +longname1927 => QI +longname1981 => QJ +longname2035 => QK +longname2089 => QL +longname2143 => QM +longname2197 => QN +longname2251 => QO +longname2305 => QP +longname2359 => QQ +longname2413 => QR +longname2467 => QS +longname2521 => QT +longname2575 => QU +longname2629 => QV +longname2683 => QW +longname2737 => QX +longname2791 => QY +longname2845 => QZ +longname2899 => Q_ +longname94 => Qa +longname3547 => Qaa +longname148 => Qb +longname3601 => Qba +longname202 => Qc +longname3655 => Qca +longname256 => Qd +longname3709 => Qda +longname310 => Qe +longname3763 => Qea +longname363 => Qf +longname3817 => Qfa +longname417 => Qg +longname3871 => Qga +longname471 => Qh +longname3925 => Qha +longname525 => Qi +longname3979 => Qia +longname579 => Qj +longname4033 => Qja +longname633 => Qk +longname4087 => Qka +longname687 => Ql +longname4141 => Qla +longname741 => Qm +longname4195 => Qma +longname794 => Qn +longname4249 => Qna +longname847 => Qo +longname4303 => Qoa +longname901 => Qp +longname4357 => Qpa +longname955 => Qq +longname4411 => Qqa +longname1009 => Qr +longname4465 => Qra +longname1063 => Qs +longname4519 => Qsa +longname1117 => Qt +longname4573 => Qta +longname1171 => Qu +longname4627 => Qua +longname1225 => Qv +longname4681 => Qva +longname1279 => Qw +longname4735 => Qwa +longname1333 => Qx +longname4789 => Qxa +longname1387 => Qy +longname4843 => Qya +longname1441 => Qz +longname4897 => Qza +longname41 => R +longname2954 => R$ +longname3008 => R0 +longname3062 => R1 +longname3116 => R2 +longname3170 => R3 +longname3224 => R4 +longname3278 => R5 +longname3332 => R6 +longname3386 => R7 +longname3440 => R8 +longname3494 => R9 +longname1496 => RA +longname4952 => RAa +longname1550 => RB +longname1604 => RC +longname1658 => RD +longname1712 => RE +longname1766 => RF +longname1820 => RG +longname1874 => RH +longname1928 => RI +longname1982 => RJ +longname2036 => RK +longname2090 => RL +longname2144 => RM +longname2198 => RN +longname2252 => RO +longname2306 => RP +longname2360 => RQ +longname2414 => RR +longname2468 => RS +longname2522 => RT +longname2576 => RU +longname2630 => RV +longname2684 => RW +longname2738 => RX +longname2792 => RY +longname2846 => RZ +longname2900 => R_ +longname95 => Ra +longname3548 => Raa +longname149 => Rb +longname3602 => Rba +longname203 => Rc +longname3656 => Rca +longname257 => Rd +longname3710 => Rda +longname311 => Re +longname3764 => Rea +longname364 => Rf +longname3818 => Rfa +longname418 => Rg +longname3872 => Rga +longname472 => Rh +longname3926 => Rha +longname526 => Ri +longname3980 => Ria +longname580 => Rj +longname4034 => Rja +longname634 => Rk +longname4088 => Rka +longname688 => Rl +longname4142 => Rla +longname742 => Rm +longname4196 => Rma +longname795 => Rn +longname4250 => Rna +longname848 => Ro +longname4304 => Roa +longname902 => Rp +longname4358 => Rpa +longname956 => Rq +longname4412 => Rqa +longname1010 => Rr +longname4466 => Rra +longname1064 => Rs +longname4520 => Rsa +longname1118 => Rt +longname4574 => Rta +longname1172 => Ru +longname4628 => Rua +longname1226 => Rv +longname4682 => Rva +longname1280 => Rw +longname4736 => Rwa +longname1334 => Rx +longname4790 => Rxa +longname1388 => Ry +longname4844 => Rya +longname1442 => Rz +longname4898 => Rza +longname42 => S +longname2955 => S$ +longname3009 => S0 +longname3063 => S1 +longname3117 => S2 +longname3171 => S3 +longname3225 => S4 +longname3279 => S5 +longname3333 => S6 +longname3387 => S7 +longname3441 => S8 +longname3495 => S9 +longname1497 => SA +longname4953 => SAa +longname1551 => SB +longname1605 => SC +longname1659 => SD +longname1713 => SE +longname1767 => SF +longname1821 => SG +longname1875 => SH +longname1929 => SI +longname1983 => SJ +longname2037 => SK +longname2091 => SL +longname2145 => SM +longname2199 => SN +longname2253 => SO +longname2307 => SP +longname2361 => SQ +longname2415 => SR +longname2469 => SS +longname2523 => ST +longname2577 => SU +longname2631 => SV +longname2685 => SW +longname2739 => SX +longname2793 => SY +longname2847 => SZ +longname2901 => S_ +longname96 => Sa +longname3549 => Saa +longname150 => Sb +longname3603 => Sba +longname204 => Sc +longname3657 => Sca +longname258 => Sd +longname3711 => Sda +longname312 => Se +longname3765 => Sea +longname365 => Sf +longname3819 => Sfa +longname419 => Sg +longname3873 => Sga +longname473 => Sh +longname3927 => Sha +longname527 => Si +longname3981 => Sia +longname581 => Sj +longname4035 => Sja +longname635 => Sk +longname4089 => Ska +longname689 => Sl +longname4143 => Sla +longname743 => Sm +longname4197 => Sma +longname796 => Sn +longname4251 => Sna +longname849 => So +longname4305 => Soa +longname903 => Sp +longname4359 => Spa +longname957 => Sq +longname4413 => Sqa +longname1011 => Sr +longname4467 => Sra +longname1065 => Ss +longname4521 => Ssa +longname1119 => St +longname4575 => Sta +longname1173 => Su +longname4629 => Sua +longname1227 => Sv +longname4683 => Sva +longname1281 => Sw +longname4737 => Swa +longname1335 => Sx +longname4791 => Sxa +longname1389 => Sy +longname4845 => Sya +longname1443 => Sz +longname4899 => Sza +longname43 => T +longname2956 => T$ +longname3010 => T0 +longname3064 => T1 +longname3118 => T2 +longname3172 => T3 +longname3226 => T4 +longname3280 => T5 +longname3334 => T6 +longname3388 => T7 +longname3442 => T8 +longname3496 => T9 +longname1498 => TA +longname4954 => TAa +longname1552 => TB +longname1606 => TC +longname1660 => TD +longname1714 => TE +longname1768 => TF +longname1822 => TG +longname1876 => TH +longname1930 => TI +longname1984 => TJ +longname2038 => TK +longname2092 => TL +longname2146 => TM +longname2200 => TN +longname2254 => TO +longname2308 => TP +longname2362 => TQ +longname2416 => TR +longname2470 => TS +longname2524 => TT +longname2578 => TU +longname2632 => TV +longname2686 => TW +longname2740 => TX +longname2794 => TY +longname2848 => TZ +longname2902 => T_ +longname97 => Ta +longname3550 => Taa +longname151 => Tb +longname3604 => Tba +longname205 => Tc +longname3658 => Tca +longname259 => Td +longname3712 => Tda +longname313 => Te +longname3766 => Tea +longname366 => Tf +longname3820 => Tfa +longname420 => Tg +longname3874 => Tga +longname474 => Th +longname3928 => Tha +longname528 => Ti +longname3982 => Tia +longname582 => Tj +longname4036 => Tja +longname636 => Tk +longname4090 => Tka +longname690 => Tl +longname4144 => Tla +longname744 => Tm +longname4198 => Tma +longname797 => Tn +longname4252 => Tna +longname850 => To +longname4306 => Toa +longname904 => Tp +longname4360 => Tpa +longname958 => Tq +longname4414 => Tqa +longname1012 => Tr +longname4468 => Tra +longname1066 => Ts +longname4522 => Tsa +longname1120 => Tt +longname4576 => Tta +longname1174 => Tu +longname4630 => Tua +longname1228 => Tv +longname4684 => Tva +longname1282 => Tw +longname4738 => Twa +longname1336 => Tx +longname4792 => Txa +longname1390 => Ty +longname4846 => Tya +longname1444 => Tz +longname4900 => Tza +longname44 => U +longname2957 => U$ +longname3011 => U0 +longname3065 => U1 +longname3119 => U2 +longname3173 => U3 +longname3227 => U4 +longname3281 => U5 +longname3335 => U6 +longname3389 => U7 +longname3443 => U8 +longname3497 => U9 +longname1499 => UA +longname4955 => UAa +longname1553 => UB +longname1607 => UC +longname1661 => UD +longname1715 => UE +longname1769 => UF +longname1823 => UG +longname1877 => UH +longname1931 => UI +longname1985 => UJ +longname2039 => UK +longname2093 => UL +longname2147 => UM +longname2201 => UN +longname2255 => UO +longname2309 => UP +longname2363 => UQ +longname2417 => UR +longname2471 => US +longname2525 => UT +longname2579 => UU +longname2633 => UV +longname2687 => UW +longname2741 => UX +longname2795 => UY +longname2849 => UZ +longname2903 => U_ +longname98 => Ua +longname3551 => Uaa +longname152 => Ub +longname3605 => Uba +longname206 => Uc +longname3659 => Uca +longname260 => Ud +longname3713 => Uda +longname314 => Ue +longname3767 => Uea +longname367 => Uf +longname3821 => Ufa +longname421 => Ug +longname3875 => Uga +longname475 => Uh +longname3929 => Uha +longname529 => Ui +longname3983 => Uia +longname583 => Uj +longname4037 => Uja +longname637 => Uk +longname4091 => Uka +longname691 => Ul +longname4145 => Ula +longname745 => Um +longname4199 => Uma +longname798 => Un +longname4253 => Una +longname851 => Uo +longname4307 => Uoa +longname905 => Up +longname4361 => Upa +longname959 => Uq +longname4415 => Uqa +longname1013 => Ur +longname4469 => Ura +longname1067 => Us +longname4523 => Usa +longname1121 => Ut +longname4577 => Uta +longname1175 => Uu +longname4631 => Uua +longname1229 => Uv +longname4685 => Uva +longname1283 => Uw +longname4739 => Uwa +longname1337 => Ux +longname4793 => Uxa +longname1391 => Uy +longname4847 => Uya +longname1445 => Uz +longname4901 => Uza +longname45 => V +longname2958 => V$ +longname3012 => V0 +longname3066 => V1 +longname3120 => V2 +longname3174 => V3 +longname3228 => V4 +longname3282 => V5 +longname3336 => V6 +longname3390 => V7 +longname3444 => V8 +longname3498 => V9 +longname1500 => VA +longname4956 => VAa +longname1554 => VB +longname1608 => VC +longname1662 => VD +longname1716 => VE +longname1770 => VF +longname1824 => VG +longname1878 => VH +longname1932 => VI +longname1986 => VJ +longname2040 => VK +longname2094 => VL +longname2148 => VM +longname2202 => VN +longname2256 => VO +longname2310 => VP +longname2364 => VQ +longname2418 => VR +longname2472 => VS +longname2526 => VT +longname2580 => VU +longname2634 => VV +longname2688 => VW +longname2742 => VX +longname2796 => VY +longname2850 => VZ +longname2904 => V_ +longname99 => Va +longname3552 => Vaa +longname153 => Vb +longname3606 => Vba +longname207 => Vc +longname3660 => Vca +longname261 => Vd +longname3714 => Vda +longname315 => Ve +longname3768 => Vea +longname368 => Vf +longname3822 => Vfa +longname422 => Vg +longname3876 => Vga +longname476 => Vh +longname3930 => Vha +longname530 => Vi +longname3984 => Via +longname584 => Vj +longname4038 => Vja +longname638 => Vk +longname4092 => Vka +longname692 => Vl +longname4146 => Vla +longname746 => Vm +longname4200 => Vma +longname799 => Vn +longname4254 => Vna +longname852 => Vo +longname4308 => Voa +longname906 => Vp +longname4362 => Vpa +longname960 => Vq +longname4416 => Vqa +longname1014 => Vr +longname4470 => Vra +longname1068 => Vs +longname4524 => Vsa +longname1122 => Vt +longname4578 => Vta +longname1176 => Vu +longname4632 => Vua +longname1230 => Vv +longname4686 => Vva +longname1284 => Vw +longname4740 => Vwa +longname1338 => Vx +longname4794 => Vxa +longname1392 => Vy +longname4848 => Vya +longname1446 => Vz +longname4902 => Vza +longname46 => W +longname2959 => W$ +longname3013 => W0 +longname3067 => W1 +longname3121 => W2 +longname3175 => W3 +longname3229 => W4 +longname3283 => W5 +longname3337 => W6 +longname3391 => W7 +longname3445 => W8 +longname3499 => W9 +longname1501 => WA +longname4957 => WAa +longname1555 => WB +longname1609 => WC +longname1663 => WD +longname1717 => WE +longname1771 => WF +longname1825 => WG +longname1879 => WH +longname1933 => WI +longname1987 => WJ +longname2041 => WK +longname2095 => WL +longname2149 => WM +longname2203 => WN +longname2257 => WO +longname2311 => WP +longname2365 => WQ +longname2419 => WR +longname2473 => WS +longname2527 => WT +longname2581 => WU +longname2635 => WV +longname2689 => WW +longname2743 => WX +longname2797 => WY +longname2851 => WZ +longname2905 => W_ +longname100 => Wa +longname3553 => Waa +longname154 => Wb +longname3607 => Wba +longname208 => Wc +longname3661 => Wca +longname262 => Wd +longname3715 => Wda +longname316 => We +longname3769 => Wea +longname369 => Wf +longname3823 => Wfa +longname423 => Wg +longname3877 => Wga +longname477 => Wh +longname3931 => Wha +longname531 => Wi +longname3985 => Wia +longname585 => Wj +longname4039 => Wja +longname639 => Wk +longname4093 => Wka +longname693 => Wl +longname4147 => Wla +longname747 => Wm +longname4201 => Wma +longname800 => Wn +longname4255 => Wna +longname853 => Wo +longname4309 => Woa +longname907 => Wp +longname4363 => Wpa +longname961 => Wq +longname4417 => Wqa +longname1015 => Wr +longname4471 => Wra +longname1069 => Ws +longname4525 => Wsa +longname1123 => Wt +longname4579 => Wta +longname1177 => Wu +longname4633 => Wua +longname1231 => Wv +longname4687 => Wva +longname1285 => Ww +longname4741 => Wwa +longname1339 => Wx +longname4795 => Wxa +longname1393 => Wy +longname4849 => Wya +longname1447 => Wz +longname4903 => Wza +longname47 => X +longname2960 => X$ +longname3014 => X0 +longname3068 => X1 +longname3122 => X2 +longname3176 => X3 +longname3230 => X4 +longname3284 => X5 +longname3338 => X6 +longname3392 => X7 +longname3446 => X8 +longname3500 => X9 +longname1502 => XA +longname4958 => XAa +longname1556 => XB +longname1610 => XC +longname1664 => XD +longname1718 => XE +longname1772 => XF +longname1826 => XG +longname1880 => XH +longname1934 => XI +longname1988 => XJ +longname2042 => XK +longname2096 => XL +longname2150 => XM +longname2204 => XN +longname2258 => XO +longname2312 => XP +longname2366 => XQ +longname2420 => XR +longname2474 => XS +longname2528 => XT +longname2582 => XU +longname2636 => XV +longname2690 => XW +longname2744 => XX +longname2798 => XY +longname2852 => XZ +longname2906 => X_ +longname101 => Xa +longname3554 => Xaa +longname155 => Xb +longname3608 => Xba +longname209 => Xc +longname3662 => Xca +longname263 => Xd +longname3716 => Xda +longname317 => Xe +longname3770 => Xea +longname370 => Xf +longname3824 => Xfa +longname424 => Xg +longname3878 => Xga +longname478 => Xh +longname3932 => Xha +longname532 => Xi +longname3986 => Xia +longname586 => Xj +longname4040 => Xja +longname640 => Xk +longname4094 => Xka +longname694 => Xl +longname4148 => Xla +longname748 => Xm +longname4202 => Xma +longname801 => Xn +longname4256 => Xna +longname854 => Xo +longname4310 => Xoa +longname908 => Xp +longname4364 => Xpa +longname962 => Xq +longname4418 => Xqa +longname1016 => Xr +longname4472 => Xra +longname1070 => Xs +longname4526 => Xsa +longname1124 => Xt +longname4580 => Xta +longname1178 => Xu +longname4634 => Xua +longname1232 => Xv +longname4688 => Xva +longname1286 => Xw +longname4742 => Xwa +longname1340 => Xx +longname4796 => Xxa +longname1394 => Xy +longname4850 => Xya +longname1448 => Xz +longname4904 => Xza +longname48 => Y +longname2961 => Y$ +longname3015 => Y0 +longname3069 => Y1 +longname3123 => Y2 +longname3177 => Y3 +longname3231 => Y4 +longname3285 => Y5 +longname3339 => Y6 +longname3393 => Y7 +longname3447 => Y8 +longname3501 => Y9 +longname1503 => YA +longname4959 => YAa +longname1557 => YB +longname1611 => YC +longname1665 => YD +longname1719 => YE +longname1773 => YF +longname1827 => YG +longname1881 => YH +longname1935 => YI +longname1989 => YJ +longname2043 => YK +longname2097 => YL +longname2151 => YM +longname2205 => YN +longname2259 => YO +longname2313 => YP +longname2367 => YQ +longname2421 => YR +longname2475 => YS +longname2529 => YT +longname2583 => YU +longname2637 => YV +longname2691 => YW +longname2745 => YX +longname2799 => YY +longname2853 => YZ +longname2907 => Y_ +longname102 => Ya +longname3555 => Yaa +longname156 => Yb +longname3609 => Yba +longname210 => Yc +longname3663 => Yca +longname264 => Yd +longname3717 => Yda +longname318 => Ye +longname3771 => Yea +longname371 => Yf +longname3825 => Yfa +longname425 => Yg +longname3879 => Yga +longname479 => Yh +longname3933 => Yha +longname533 => Yi +longname3987 => Yia +longname587 => Yj +longname4041 => Yja +longname641 => Yk +longname4095 => Yka +longname695 => Yl +longname4149 => Yla +longname749 => Ym +longname4203 => Yma +longname802 => Yn +longname4257 => Yna +longname855 => Yo +longname4311 => Yoa +longname909 => Yp +longname4365 => Ypa +longname963 => Yq +longname4419 => Yqa +longname1017 => Yr +longname4473 => Yra +longname1071 => Ys +longname4527 => Ysa +longname1125 => Yt +longname4581 => Yta +longname1179 => Yu +longname4635 => Yua +longname1233 => Yv +longname4689 => Yva +longname1287 => Yw +longname4743 => Ywa +longname1341 => Yx +longname4797 => Yxa +longname1395 => Yy +longname4851 => Yya +longname1449 => Yz +longname4905 => Yza +longname49 => Z +longname2962 => Z$ +longname3016 => Z0 +longname3070 => Z1 +longname3124 => Z2 +longname3178 => Z3 +longname3232 => Z4 +longname3286 => Z5 +longname3340 => Z6 +longname3394 => Z7 +longname3448 => Z8 +longname3502 => Z9 +longname1504 => ZA +longname4960 => ZAa +longname1558 => ZB +longname1612 => ZC +longname1666 => ZD +longname1720 => ZE +longname1774 => ZF +longname1828 => ZG +longname1882 => ZH +longname1936 => ZI +longname1990 => ZJ +longname2044 => ZK +longname2098 => ZL +longname2152 => ZM +longname2206 => ZN +longname2260 => ZO +longname2314 => ZP +longname2368 => ZQ +longname2422 => ZR +longname2476 => ZS +longname2530 => ZT +longname2584 => ZU +longname2638 => ZV +longname2692 => ZW +longname2746 => ZX +longname2800 => ZY +longname2854 => ZZ +longname2908 => Z_ +longname103 => Za +longname3556 => Zaa +longname157 => Zb +longname3610 => Zba +longname211 => Zc +longname3664 => Zca +longname265 => Zd +longname3718 => Zda +longname319 => Ze +longname3772 => Zea +longname372 => Zf +longname3826 => Zfa +longname426 => Zg +longname3880 => Zga +longname480 => Zh +longname3934 => Zha +longname534 => Zi +longname3988 => Zia +longname588 => Zj +longname4042 => Zja +longname642 => Zk +longname4096 => Zka +longname696 => Zl +longname4150 => Zla +longname750 => Zm +longname4204 => Zma +longname803 => Zn +longname4258 => Zna +longname856 => Zo +longname4312 => Zoa +longname910 => Zp +longname4366 => Zpa +longname964 => Zq +longname4420 => Zqa +longname1018 => Zr +longname4474 => Zra +longname1072 => Zs +longname4528 => Zsa +longname1126 => Zt +longname4582 => Zta +longname1180 => Zu +longname4636 => Zua +longname1234 => Zv +longname4690 => Zva +longname1288 => Zw +longname4744 => Zwa +longname1342 => Zx +longname4798 => Zxa +longname1396 => Zy +longname4852 => Zya +longname1450 => Zz +longname4906 => Zza +longname50 => _ +longname2963 => _$ +longname3017 => _0 +longname3071 => _1 +longname3125 => _2 +longname3179 => _3 +longname3233 => _4 +longname3287 => _5 +longname3341 => _6 +longname3395 => _7 +longname3449 => _8 +longname3503 => _9 +longname1505 => _A +longname4961 => _Aa +longname1559 => _B +longname1613 => _C +longname1667 => _D +longname1721 => _E +longname1775 => _F +longname1829 => _G +longname1883 => _H +longname1937 => _I +longname1991 => _J +longname2045 => _K +longname2099 => _L +longname2153 => _M +longname2207 => _N +longname2261 => _O +longname2315 => _P +longname2369 => _Q +longname2423 => _R +longname2477 => _S +longname2531 => _T +longname2585 => _U +longname2639 => _V +longname2693 => _W +longname2747 => _X +longname2801 => _Y +longname2855 => _Z +longname2909 => __ +longname104 => _a +longname3557 => _aa +longname158 => _b +longname3611 => _ba +longname212 => _c +longname3665 => _ca +longname266 => _d +longname3719 => _da +longname320 => _e +longname3773 => _ea +longname373 => _f +longname3827 => _fa +longname427 => _g +longname3881 => _ga +longname481 => _h +longname3935 => _ha +longname535 => _i +longname3989 => _ia +longname589 => _j +longname4043 => _ja +longname643 => _k +longname4097 => _ka +longname697 => _l +longname4151 => _la +longname751 => _m +longname4205 => _ma +longname804 => _n +longname4259 => _na +longname857 => _o +longname4313 => _oa +longname911 => _p +longname4367 => _pa +longname965 => _q +longname4421 => _qa +longname1019 => _r +longname4475 => _ra +longname1073 => _s +longname4529 => _sa +longname1127 => _t +longname4583 => _ta +longname1181 => _u +longname4637 => _ua +longname1235 => _v +longname4691 => _va +longname1289 => _w +longname4745 => _wa +longname1343 => _x +longname4799 => _xa +longname1397 => _y +longname4853 => _ya +longname1451 => _z +longname4907 => _za global => a -longname2913 => a$ -longname2967 => a0 -longname3021 => a1 -longname3075 => a2 -longname3129 => a3 -longname3183 => a4 -longname3237 => a5 -longname3291 => a6 -longname3345 => a7 -longname3399 => a8 -longname3453 => a9 -longname1455 => aA -longname4911 => aAa -longname1509 => aB -longname4965 => aBa -longname1563 => aC -longname1617 => aD -longname1671 => aE -longname1725 => aF -longname1779 => aG -longname1833 => aH -longname1887 => aI -longname1941 => aJ -longname1995 => aK -longname2049 => aL -longname2103 => aM -longname2157 => aN -longname2211 => aO -longname2265 => aP -longname2319 => aQ -longname2373 => aR -longname2427 => aS -longname2481 => aT -longname2535 => aU -longname2589 => aV -longname2643 => aW -longname2697 => aX -longname2751 => aY -longname2805 => aZ -longname2859 => a_ -longname54 => aa -longname3507 => aaa -longname108 => ab -longname3561 => aba -longname162 => ac -longname3615 => aca -longname216 => ad -longname3669 => ada -longname270 => ae -longname3723 => aea -longname324 => af -longname3777 => afa -longname377 => ag -longname3831 => aga -longname431 => ah -longname3885 => aha -longname485 => ai -longname3939 => aia -longname539 => aj -longname3993 => aja -longname593 => ak -longname4047 => aka -longname647 => al -longname4101 => ala -longname701 => am -longname4155 => ama -longname755 => an -longname4209 => ana -longname808 => ao -longname4263 => aoa -longname861 => ap -longname4317 => apa -longname915 => aq -longname4371 => aqa -longname969 => ar -longname4425 => ara -longname1023 => as -longname4479 => asa -longname1077 => at -longname4533 => ata -longname1131 => au -longname4587 => aua -longname1185 => av -longname4641 => ava -longname1239 => aw -longname4695 => awa -longname1293 => ax -longname4749 => axa -longname1347 => ay -longname4803 => aya -longname1401 => az -longname4857 => aza -longname1 => b -longname2914 => b$ -longname2968 => b0 -longname3022 => b1 -longname3076 => b2 -longname3130 => b3 -longname3184 => b4 -longname3238 => b5 -longname3292 => b6 -longname3346 => b7 -longname3400 => b8 -longname3454 => b9 -longname1456 => bA -longname4912 => bAa -longname1510 => bB -longname4966 => bBa -longname1564 => bC -longname1618 => bD -longname1672 => bE -longname1726 => bF -longname1780 => bG -longname1834 => bH -longname1888 => bI -longname1942 => bJ -longname1996 => bK -longname2050 => bL -longname2104 => bM -longname2158 => bN -longname2212 => bO -longname2266 => bP -longname2320 => bQ -longname2374 => bR -longname2428 => bS -longname2482 => bT -longname2536 => bU -longname2590 => bV -longname2644 => bW -longname2698 => bX -longname2752 => bY -longname2806 => bZ -longname2860 => b_ -longname55 => ba -longname3508 => baa -longname109 => bb -longname3562 => bba -longname163 => bc -longname3616 => bca -longname217 => bd -longname3670 => bda -longname271 => be -longname3724 => bea -longname325 => bf -longname3778 => bfa -longname378 => bg -longname3832 => bga -longname432 => bh -longname3886 => bha -longname486 => bi -longname3940 => bia -longname540 => bj -longname3994 => bja -longname594 => bk -longname4048 => bka -longname648 => bl -longname4102 => bla -longname702 => bm -longname4156 => bma -longname756 => bn -longname4210 => bna -longname809 => bo -longname4264 => boa -longname862 => bp -longname4318 => bpa -longname916 => bq -longname4372 => bqa -longname970 => br -longname4426 => bra -longname1024 => bs -longname4480 => bsa -longname1078 => bt -longname4534 => bta -longname1132 => bu -longname4588 => bua -longname1186 => bv -longname4642 => bva -longname1240 => bw -longname4696 => bwa -longname1294 => bx -longname4750 => bxa -longname1348 => by -longname4804 => bya -longname1402 => bz -longname4858 => bza -longname2 => c -longname2915 => c$ -longname2969 => c0 -longname3023 => c1 -longname3077 => c2 -longname3131 => c3 -longname3185 => c4 -longname3239 => c5 -longname3293 => c6 -longname3347 => c7 -longname3401 => c8 -longname3455 => c9 -longname1457 => cA -longname4913 => cAa -longname1511 => cB -longname4967 => cBa -longname1565 => cC -longname1619 => cD -longname1673 => cE -longname1727 => cF -longname1781 => cG -longname1835 => cH -longname1889 => cI -longname1943 => cJ -longname1997 => cK -longname2051 => cL -longname2105 => cM -longname2159 => cN -longname2213 => cO -longname2267 => cP -longname2321 => cQ -longname2375 => cR -longname2429 => cS -longname2483 => cT -longname2537 => cU -longname2591 => cV -longname2645 => cW -longname2699 => cX -longname2753 => cY -longname2807 => cZ -longname2861 => c_ -longname56 => ca -longname3509 => caa -longname110 => cb -longname3563 => cba -longname164 => cc -longname3617 => cca -longname218 => cd -longname3671 => cda -longname272 => ce -longname3725 => cea -longname326 => cf -longname3779 => cfa -longname379 => cg -longname3833 => cga -longname433 => ch -longname3887 => cha -longname487 => ci -longname3941 => cia -longname541 => cj -longname3995 => cja -longname595 => ck -longname4049 => cka -longname649 => cl -longname4103 => cla -longname703 => cm -longname4157 => cma -longname757 => cn -longname4211 => cna -longname810 => co -longname4265 => coa -longname863 => cp -longname4319 => cpa -longname917 => cq -longname4373 => cqa -longname971 => cr -longname4427 => cra -longname1025 => cs -longname4481 => csa -longname1079 => ct -longname4535 => cta -longname1133 => cu -longname4589 => cua -longname1187 => cv -longname4643 => cva -longname1241 => cw -longname4697 => cwa -longname1295 => cx -longname4751 => cxa -longname1349 => cy -longname4805 => cya -longname1403 => cz -longname4859 => cza -longname3 => d -longname2916 => d$ -longname2970 => d0 -longname3024 => d1 -longname3078 => d2 -longname3132 => d3 -longname3186 => d4 -longname3240 => d5 -longname3294 => d6 -longname3348 => d7 -longname3402 => d8 -longname3456 => d9 -longname1458 => dA -longname4914 => dAa -longname1512 => dB -longname4968 => dBa -longname1566 => dC -longname1620 => dD -longname1674 => dE -longname1728 => dF -longname1782 => dG -longname1836 => dH -longname1890 => dI -longname1944 => dJ -longname1998 => dK -longname2052 => dL -longname2106 => dM -longname2160 => dN -longname2214 => dO -longname2268 => dP -longname2322 => dQ -longname2376 => dR -longname2430 => dS -longname2484 => dT -longname2538 => dU -longname2592 => dV -longname2646 => dW -longname2700 => dX -longname2754 => dY -longname2808 => dZ -longname2862 => d_ -longname57 => da -longname3510 => daa -longname111 => db -longname3564 => dba -longname165 => dc -longname3618 => dca -longname219 => dd -longname3672 => dda -longname273 => de -longname3726 => dea -longname327 => df -longname3780 => dfa -longname380 => dg -longname3834 => dga -longname434 => dh -longname3888 => dha -longname488 => di -longname3942 => dia -longname542 => dj -longname3996 => dja -longname596 => dk -longname4050 => dka -longname650 => dl -longname4104 => dla -longname704 => dm -longname4158 => dma -longname758 => dn -longname4212 => dna -longname4266 => doa -longname864 => dp -longname4320 => dpa -longname918 => dq -longname4374 => dqa -longname972 => dr -longname4428 => dra -longname1026 => ds -longname4482 => dsa -longname1080 => dt -longname4536 => dta -longname1134 => du -longname4590 => dua -longname1188 => dv -longname4644 => dva -longname1242 => dw -longname4698 => dwa -longname1296 => dx -longname4752 => dxa -longname1350 => dy -longname4806 => dya -longname1404 => dz -longname4860 => dza -longname4 => e -longname2917 => e$ -longname2971 => e0 -longname3025 => e1 -longname3079 => e2 -longname3133 => e3 -longname3187 => e4 -longname3241 => e5 -longname3295 => e6 -longname3349 => e7 -longname3403 => e8 -longname3457 => e9 -longname1459 => eA -longname4915 => eAa -longname1513 => eB -longname4969 => eBa -longname1567 => eC -longname1621 => eD -longname1675 => eE -longname1729 => eF -longname1783 => eG -longname1837 => eH -longname1891 => eI -longname1945 => eJ -longname1999 => eK -longname2053 => eL -longname2107 => eM -longname2161 => eN -longname2215 => eO -longname2269 => eP -longname2323 => eQ -longname2377 => eR -longname2431 => eS -longname2485 => eT -longname2539 => eU -longname2593 => eV -longname2647 => eW -longname2701 => eX -longname2755 => eY -longname2809 => eZ -longname2863 => e_ -longname58 => ea -longname3511 => eaa -longname112 => eb -longname3565 => eba -longname166 => ec -longname3619 => eca -longname220 => ed -longname3673 => eda -longname274 => ee -longname3727 => eea -longname328 => ef -longname3781 => efa -longname381 => eg -longname3835 => ega -longname435 => eh -longname3889 => eha -longname489 => ei -longname3943 => eia -longname543 => ej -longname3997 => eja -longname597 => ek -longname4051 => eka -longname651 => el -longname4105 => ela -longname705 => em -longname4159 => ema -longname759 => en -longname4213 => ena -longname811 => eo -longname4267 => eoa -longname865 => ep -longname4321 => epa -longname919 => eq -longname4375 => eqa -longname973 => er -longname4429 => era -longname1027 => es -longname4483 => esa -longname1081 => et -longname4537 => eta -longname1135 => eu -longname4591 => eua -longname1189 => ev -longname4645 => eva -longname1243 => ew -longname4699 => ewa -longname1297 => ex -longname4753 => exa -longname1351 => ey -longname4807 => eya -longname1405 => ez -longname4861 => eza -longname5 => f -longname2918 => f$ -longname2972 => f0 -longname3026 => f1 -longname3080 => f2 -longname3134 => f3 -longname3188 => f4 -longname3242 => f5 -longname3296 => f6 -longname3350 => f7 -longname3404 => f8 -longname3458 => f9 -longname1460 => fA -longname4916 => fAa -longname1514 => fB -longname4970 => fBa -longname1568 => fC -longname1622 => fD -longname1676 => fE -longname1730 => fF -longname1784 => fG -longname1838 => fH -longname1892 => fI -longname1946 => fJ -longname2000 => fK -longname2054 => fL -longname2108 => fM -longname2162 => fN -longname2216 => fO -longname2270 => fP -longname2324 => fQ -longname2378 => fR -longname2432 => fS -longname2486 => fT -longname2540 => fU -longname2594 => fV -longname2648 => fW -longname2702 => fX -longname2756 => fY -longname2810 => fZ -longname2864 => f_ -longname59 => fa -longname3512 => faa -longname113 => fb -longname3566 => fba -longname167 => fc -longname3620 => fca -longname221 => fd -longname3674 => fda -longname275 => fe -longname3728 => fea -longname329 => ff -longname3782 => ffa -longname382 => fg -longname3836 => fga -longname436 => fh -longname3890 => fha -longname490 => fi -longname3944 => fia -longname544 => fj -longname3998 => fja -longname598 => fk -longname4052 => fka -longname652 => fl -longname4106 => fla -longname706 => fm -longname4160 => fma -longname760 => fn -longname4214 => fna -longname812 => fo -longname4268 => foa -longname866 => fp -longname4322 => fpa -longname920 => fq -longname4376 => fqa -longname974 => fr -longname4430 => fra -longname1028 => fs -longname4484 => fsa -longname1082 => ft -longname4538 => fta -longname1136 => fu -longname4592 => fua -longname1190 => fv -longname4646 => fva -longname1244 => fw -longname4700 => fwa -longname1298 => fx -longname4754 => fxa -longname1352 => fy -longname4808 => fya -longname1406 => fz -longname4862 => fza -longname6 => g -longname2919 => g$ -longname2973 => g0 -longname3027 => g1 -longname3081 => g2 -longname3135 => g3 -longname3189 => g4 -longname3243 => g5 -longname3297 => g6 -longname3351 => g7 -longname3405 => g8 -longname3459 => g9 -longname1461 => gA -longname4917 => gAa -longname1515 => gB -longname4971 => gBa -longname1569 => gC -longname1623 => gD -longname1677 => gE -longname1731 => gF -longname1785 => gG -longname1839 => gH -longname1893 => gI -longname1947 => gJ -longname2001 => gK -longname2055 => gL -longname2109 => gM -longname2163 => gN -longname2217 => gO -longname2271 => gP -longname2325 => gQ -longname2379 => gR -longname2433 => gS -longname2487 => gT -longname2541 => gU -longname2595 => gV -longname2649 => gW -longname2703 => gX -longname2757 => gY -longname2811 => gZ -longname2865 => g_ -longname60 => ga -longname3513 => gaa -longname114 => gb -longname3567 => gba -longname168 => gc -longname3621 => gca -longname222 => gd -longname3675 => gda -longname276 => ge -longname3729 => gea -longname330 => gf -longname3783 => gfa -longname383 => gg -longname3837 => gga -longname437 => gh -longname3891 => gha -longname491 => gi -longname3945 => gia -longname545 => gj -longname3999 => gja -longname599 => gk -longname4053 => gka -longname653 => gl -longname4107 => gla -longname707 => gm -longname4161 => gma -longname761 => gn -longname4215 => gna -longname813 => go -longname4269 => goa -longname867 => gp -longname4323 => gpa -longname921 => gq -longname4377 => gqa -longname975 => gr -longname4431 => gra -longname1029 => gs -longname4485 => gsa -longname1083 => gt -longname4539 => gta -longname1137 => gu -longname4593 => gua -longname1191 => gv -longname4647 => gva -longname1245 => gw -longname4701 => gwa -longname1299 => gx -longname4755 => gxa -longname1353 => gy -longname4809 => gya -longname1407 => gz -longname4863 => gza -longname7 => h -longname2920 => h$ -longname2974 => h0 -longname3028 => h1 -longname3082 => h2 -longname3136 => h3 -longname3190 => h4 -longname3244 => h5 -longname3298 => h6 -longname3352 => h7 -longname3406 => h8 -longname3460 => h9 -longname1462 => hA -longname4918 => hAa -longname1516 => hB -longname4972 => hBa -longname1570 => hC -longname1624 => hD -longname1678 => hE -longname1732 => hF -longname1786 => hG -longname1840 => hH -longname1894 => hI -longname1948 => hJ -longname2002 => hK -longname2056 => hL -longname2110 => hM -longname2164 => hN -longname2218 => hO -longname2272 => hP -longname2326 => hQ -longname2380 => hR -longname2434 => hS -longname2488 => hT -longname2542 => hU -longname2596 => hV -longname2650 => hW -longname2704 => hX -longname2758 => hY -longname2812 => hZ -longname2866 => h_ -longname61 => ha -longname3514 => haa -longname115 => hb -longname3568 => hba -longname169 => hc -longname3622 => hca -longname223 => hd -longname3676 => hda -longname277 => he -longname3730 => hea -longname331 => hf -longname3784 => hfa -longname384 => hg -longname3838 => hga -longname438 => hh -longname3892 => hha -longname492 => hi -longname3946 => hia -longname546 => hj -longname4000 => hja -longname600 => hk -longname4054 => hka -longname654 => hl -longname4108 => hla -longname708 => hm -longname4162 => hma -longname762 => hn -longname4216 => hna -longname814 => ho -longname4270 => hoa -longname868 => hp -longname4324 => hpa -longname922 => hq -longname4378 => hqa -longname976 => hr -longname4432 => hra -longname1030 => hs -longname4486 => hsa -longname1084 => ht -longname4540 => hta -longname1138 => hu -longname4594 => hua -longname1192 => hv -longname4648 => hva -longname1246 => hw -longname4702 => hwa -longname1300 => hx -longname4756 => hxa -longname1354 => hy -longname4810 => hya -longname1408 => hz -longname4864 => hza -longname8 => i -longname2921 => i$ -longname2975 => i0 -longname3029 => i1 -longname3083 => i2 -longname3137 => i3 -longname3191 => i4 -longname3245 => i5 -longname3299 => i6 -longname3353 => i7 -longname3407 => i8 -longname3461 => i9 -longname1463 => iA -longname4919 => iAa -longname1517 => iB -longname4973 => iBa -longname1571 => iC -longname1625 => iD -longname1679 => iE -longname1733 => iF -longname1787 => iG -longname1841 => iH -longname1895 => iI -longname1949 => iJ -longname2003 => iK -longname2057 => iL -longname2111 => iM -longname2165 => iN -longname2219 => iO -longname2273 => iP -longname2327 => iQ -longname2381 => iR -longname2435 => iS -longname2489 => iT -longname2543 => iU -longname2597 => iV -longname2651 => iW -longname2705 => iX -longname2759 => iY -longname2813 => iZ -longname2867 => i_ -longname62 => ia -longname3515 => iaa -longname116 => ib -longname3569 => iba -longname170 => ic -longname3623 => ica -longname224 => id -longname3677 => ida -longname278 => ie -longname3731 => iea -longname3785 => ifa -longname385 => ig -longname3839 => iga -longname439 => ih -longname3893 => iha -longname493 => ii -longname3947 => iia -longname547 => ij -longname4001 => ija -longname601 => ik -longname4055 => ika -longname655 => il -longname4109 => ila -longname709 => im -longname4163 => ima -longname4217 => ina -longname815 => io -longname4271 => ioa -longname869 => ip -longname4325 => ipa -longname923 => iq -longname4379 => iqa -longname977 => ir -longname4433 => ira -longname1031 => is -longname4487 => isa -longname1085 => it -longname4541 => ita -longname1139 => iu -longname4595 => iua -longname1193 => iv -longname4649 => iva -longname1247 => iw -longname4703 => iwa -longname1301 => ix -longname4757 => ixa -longname1355 => iy -longname4811 => iya -longname1409 => iz -longname4865 => iza -longname9 => j -longname2922 => j$ -longname2976 => j0 -longname3030 => j1 -longname3084 => j2 -longname3138 => j3 -longname3192 => j4 -longname3246 => j5 -longname3300 => j6 -longname3354 => j7 -longname3408 => j8 -longname3462 => j9 -longname1464 => jA -longname4920 => jAa -longname1518 => jB -longname4974 => jBa -longname1572 => jC -longname1626 => jD -longname1680 => jE -longname1734 => jF -longname1788 => jG -longname1842 => jH -longname1896 => jI -longname1950 => jJ -longname2004 => jK -longname2058 => jL -longname2112 => jM -longname2166 => jN -longname2220 => jO -longname2274 => jP -longname2328 => jQ -longname2382 => jR -longname2436 => jS -longname2490 => jT -longname2544 => jU -longname2598 => jV -longname2652 => jW -longname2706 => jX -longname2760 => jY -longname2814 => jZ -longname2868 => j_ -longname63 => ja -longname3516 => jaa -longname117 => jb -longname3570 => jba -longname171 => jc -longname3624 => jca -longname225 => jd -longname3678 => jda -longname279 => je -longname3732 => jea -longname332 => jf -longname3786 => jfa -longname386 => jg -longname3840 => jga -longname440 => jh -longname3894 => jha -longname494 => ji -longname3948 => jia -longname548 => jj -longname4002 => jja -longname602 => jk -longname4056 => jka -longname656 => jl -longname4110 => jla -longname710 => jm -longname4164 => jma -longname763 => jn -longname4218 => jna -longname816 => jo -longname4272 => joa -longname870 => jp -longname4326 => jpa -longname924 => jq -longname4380 => jqa -longname978 => jr -longname4434 => jra -longname1032 => js -longname4488 => jsa -longname1086 => jt -longname4542 => jta -longname1140 => ju -longname4596 => jua -longname1194 => jv -longname4650 => jva -longname1248 => jw -longname4704 => jwa -longname1302 => jx -longname4758 => jxa -longname1356 => jy -longname4812 => jya -longname1410 => jz -longname4866 => jza -longname10 => k -longname2923 => k$ -longname2977 => k0 -longname3031 => k1 -longname3085 => k2 -longname3139 => k3 -longname3193 => k4 -longname3247 => k5 -longname3301 => k6 -longname3355 => k7 -longname3409 => k8 -longname3463 => k9 -longname1465 => kA -longname4921 => kAa -longname1519 => kB -longname4975 => kBa -longname1573 => kC -longname1627 => kD -longname1681 => kE -longname1735 => kF -longname1789 => kG -longname1843 => kH -longname1897 => kI -longname1951 => kJ -longname2005 => kK -longname2059 => kL -longname2113 => kM -longname2167 => kN -longname2221 => kO -longname2275 => kP -longname2329 => kQ -longname2383 => kR -longname2437 => kS -longname2491 => kT -longname2545 => kU -longname2599 => kV -longname2653 => kW -longname2707 => kX -longname2761 => kY -longname2815 => kZ -longname2869 => k_ -longname64 => ka -longname3517 => kaa -longname118 => kb -longname3571 => kba -longname172 => kc -longname3625 => kca -longname226 => kd -longname3679 => kda -longname280 => ke -longname3733 => kea -longname333 => kf -longname3787 => kfa -longname387 => kg -longname3841 => kga -longname441 => kh -longname3895 => kha -longname495 => ki -longname3949 => kia -longname549 => kj -longname4003 => kja -longname603 => kk -longname4057 => kka -longname657 => kl -longname4111 => kla -longname711 => km -longname4165 => kma -longname764 => kn -longname4219 => kna -longname817 => ko -longname4273 => koa -longname871 => kp -longname4327 => kpa -longname925 => kq -longname4381 => kqa -longname979 => kr -longname4435 => kra -longname1033 => ks -longname4489 => ksa -longname1087 => kt -longname4543 => kta -longname1141 => ku -longname4597 => kua -longname1195 => kv -longname4651 => kva -longname1249 => kw -longname4705 => kwa -longname1303 => kx -longname4759 => kxa -longname1357 => ky -longname4813 => kya -longname1411 => kz -longname4867 => kza -longname11 => l -longname2924 => l$ -longname2978 => l0 -longname3032 => l1 -longname3086 => l2 -longname3140 => l3 -longname3194 => l4 -longname3248 => l5 -longname3302 => l6 -longname3356 => l7 -longname3410 => l8 -longname3464 => l9 -longname1466 => lA -longname4922 => lAa -longname1520 => lB -longname4976 => lBa -longname1574 => lC -longname1628 => lD -longname1682 => lE -longname1736 => lF -longname1790 => lG -longname1844 => lH -longname1898 => lI -longname1952 => lJ -longname2006 => lK -longname2060 => lL -longname2114 => lM -longname2168 => lN -longname2222 => lO -longname2276 => lP -longname2330 => lQ -longname2384 => lR -longname2438 => lS -longname2492 => lT -longname2546 => lU -longname2600 => lV -longname2654 => lW -longname2708 => lX -longname2762 => lY -longname2816 => lZ -longname2870 => l_ -longname65 => la -longname3518 => laa -longname119 => lb -longname3572 => lba -longname173 => lc -longname3626 => lca -longname227 => ld -longname3680 => lda -longname281 => le -longname3734 => lea -longname334 => lf -longname3788 => lfa -longname388 => lg -longname3842 => lga -longname442 => lh -longname3896 => lha -longname496 => li -longname3950 => lia -longname550 => lj -longname4004 => lja -longname604 => lk -longname4058 => lka -longname658 => ll -longname4112 => lla -longname712 => lm -longname4166 => lma -longname765 => ln -longname4220 => lna -longname818 => lo -longname4274 => loa -longname872 => lp -longname4328 => lpa -longname926 => lq -longname4382 => lqa -longname980 => lr -longname4436 => lra -longname1034 => ls -longname4490 => lsa -longname1088 => lt -longname4544 => lta -longname1142 => lu -longname4598 => lua -longname1196 => lv -longname4652 => lva -longname1250 => lw -longname4706 => lwa -longname1304 => lx -longname4760 => lxa -longname1358 => ly -longname4814 => lya -longname1412 => lz -longname4868 => lza -longname12 => m -longname2925 => m$ -longname2979 => m0 -longname3033 => m1 -longname3087 => m2 -longname3141 => m3 -longname3195 => m4 -longname3249 => m5 -longname3303 => m6 -longname3357 => m7 -longname3411 => m8 -longname3465 => m9 -longname1467 => mA -longname4923 => mAa -longname1521 => mB -longname4977 => mBa -longname1575 => mC -longname1629 => mD -longname1683 => mE -longname1737 => mF -longname1791 => mG -longname1845 => mH -longname1899 => mI -longname1953 => mJ -longname2007 => mK -longname2061 => mL -longname2115 => mM -longname2169 => mN -longname2223 => mO -longname2277 => mP -longname2331 => mQ -longname2385 => mR -longname2439 => mS -longname2493 => mT -longname2547 => mU -longname2601 => mV -longname2655 => mW -longname2709 => mX -longname2763 => mY -longname2817 => mZ -longname2871 => m_ -longname66 => ma -longname3519 => maa -longname120 => mb -longname3573 => mba -longname174 => mc -longname3627 => mca -longname228 => md -longname3681 => mda -longname282 => me -longname3735 => mea -longname335 => mf -longname3789 => mfa -longname389 => mg -longname3843 => mga -longname443 => mh -longname3897 => mha -longname497 => mi -longname3951 => mia -longname551 => mj -longname4005 => mja -longname605 => mk -longname4059 => mka -longname659 => ml -longname4113 => mla -longname713 => mm -longname4167 => mma -longname766 => mn -longname4221 => mna -longname819 => mo -longname4275 => moa -longname873 => mp -longname4329 => mpa -longname927 => mq -longname4383 => mqa -longname981 => mr -longname4437 => mra -longname1035 => ms -longname4491 => msa -longname1089 => mt -longname4545 => mta -longname1143 => mu -longname4599 => mua -longname1197 => mv -longname4653 => mva -longname1251 => mw -longname4707 => mwa -longname1305 => mx -longname4761 => mxa -longname1359 => my -longname4815 => mya -longname1413 => mz -longname4869 => mza -longname13 => n -longname2926 => n$ -longname2980 => n0 -longname3034 => n1 -longname3088 => n2 -longname3142 => n3 -longname3196 => n4 -longname3250 => n5 -longname3304 => n6 -longname3358 => n7 -longname3412 => n8 -longname3466 => n9 -longname1468 => nA -longname4924 => nAa -longname1522 => nB -longname4978 => nBa -longname1576 => nC -longname1630 => nD -longname1684 => nE -longname1738 => nF -longname1792 => nG -longname1846 => nH -longname1900 => nI -longname1954 => nJ -longname2008 => nK -longname2062 => nL -longname2116 => nM -longname2170 => nN -longname2224 => nO -longname2278 => nP -longname2332 => nQ -longname2386 => nR -longname2440 => nS -longname2494 => nT -longname2548 => nU -longname2602 => nV -longname2656 => nW -longname2710 => nX -longname2764 => nY -longname2818 => nZ -longname2872 => n_ -longname67 => na -longname3520 => naa -longname121 => nb -longname3574 => nba -longname175 => nc -longname3628 => nca -longname229 => nd -longname3682 => nda -longname283 => ne -longname3736 => nea -longname336 => nf -longname3790 => nfa -longname390 => ng -longname3844 => nga -longname444 => nh -longname3898 => nha -longname498 => ni -longname3952 => nia -longname552 => nj -longname4006 => nja -longname606 => nk -longname4060 => nka -longname660 => nl -longname4114 => nla -longname714 => nm -longname4168 => nma -longname767 => nn -longname4222 => nna -longname820 => no -longname4276 => noa -longname874 => np -longname4330 => npa -longname928 => nq -longname4384 => nqa -longname982 => nr -longname4438 => nra -longname1036 => ns -longname4492 => nsa -longname1090 => nt -longname4546 => nta -longname1144 => nu -longname4600 => nua -longname1198 => nv -longname4654 => nva -longname1252 => nw -longname4708 => nwa -longname1306 => nx -longname4762 => nxa -longname1360 => ny -longname4816 => nya -longname1414 => nz -longname4870 => nza -longname14 => o -longname2927 => o$ -longname2981 => o0 -longname3035 => o1 -longname3089 => o2 -longname3143 => o3 -longname3197 => o4 -longname3251 => o5 -longname3305 => o6 -longname3359 => o7 -longname3413 => o8 -longname3467 => o9 -longname1469 => oA -longname4925 => oAa -longname1523 => oB -longname4979 => oBa -longname1577 => oC -longname1631 => oD -longname1685 => oE -longname1739 => oF -longname1793 => oG -longname1847 => oH -longname1901 => oI -longname1955 => oJ -longname2009 => oK -longname2063 => oL -longname2117 => oM -longname2171 => oN -longname2225 => oO -longname2279 => oP -longname2333 => oQ -longname2387 => oR -longname2441 => oS -longname2495 => oT -longname2549 => oU -longname2603 => oV -longname2657 => oW -longname2711 => oX -longname2765 => oY -longname2819 => oZ -longname2873 => o_ -longname68 => oa -longname3521 => oaa -longname122 => ob -longname3575 => oba -longname176 => oc -longname3629 => oca -longname230 => od -longname3683 => oda -longname284 => oe -longname3737 => oea -longname337 => of -longname3791 => ofa -longname391 => og -longname3845 => oga -longname445 => oh -longname3899 => oha -longname499 => oi -longname3953 => oia -longname553 => oj -longname4007 => oja -longname607 => ok -longname4061 => oka -longname661 => ol -longname4115 => ola -longname715 => om -longname4169 => oma -longname768 => on -longname4223 => ona -longname821 => oo -longname4277 => ooa -longname875 => op -longname4331 => opa -longname929 => oq -longname4385 => oqa -longname983 => or -longname4439 => ora -longname1037 => os -longname4493 => osa -longname1091 => ot -longname4547 => ota -longname1145 => ou -longname4601 => oua -longname1199 => ov -longname4655 => ova -longname1253 => ow -longname4709 => owa -longname1307 => ox -longname4763 => oxa -longname1361 => oy -longname4817 => oya -longname1415 => oz -longname4871 => oza -longname15 => p -longname2928 => p$ -longname2982 => p0 -longname3036 => p1 -longname3090 => p2 -longname3144 => p3 -longname3198 => p4 -longname3252 => p5 -longname3306 => p6 -longname3360 => p7 -longname3414 => p8 -longname3468 => p9 -longname1470 => pA -longname4926 => pAa -longname1524 => pB -longname4980 => pBa -longname1578 => pC -longname1632 => pD -longname1686 => pE -longname1740 => pF -longname1794 => pG -longname1848 => pH -longname1902 => pI -longname1956 => pJ -longname2010 => pK -longname2064 => pL -longname2118 => pM -longname2172 => pN -longname2226 => pO -longname2280 => pP -longname2334 => pQ -longname2388 => pR -longname2442 => pS -longname2496 => pT -longname2550 => pU -longname2604 => pV -longname2658 => pW -longname2712 => pX -longname2766 => pY -longname2820 => pZ -longname2874 => p_ -longname69 => pa -longname3522 => paa -longname123 => pb -longname3576 => pba -longname177 => pc -longname3630 => pca -longname231 => pd -longname3684 => pda -longname285 => pe -longname3738 => pea -longname338 => pf -longname3792 => pfa -longname392 => pg -longname3846 => pga -longname446 => ph -longname3900 => pha -longname500 => pi -longname3954 => pia -longname554 => pj -longname4008 => pja -longname608 => pk -longname4062 => pka -longname662 => pl -longname4116 => pla -longname716 => pm -longname4170 => pma -longname769 => pn -longname4224 => pna -longname822 => po -longname4278 => poa -longname876 => pp -longname4332 => ppa -longname930 => pq -longname4386 => pqa -longname984 => pr -longname4440 => pra -longname1038 => ps -longname4494 => psa -longname1092 => pt -longname4548 => pta -longname1146 => pu -longname4602 => pua -longname1200 => pv -longname4656 => pva -longname1254 => pw -longname4710 => pwa -longname1308 => px -longname4764 => pxa -longname1362 => py -longname4818 => pya -longname1416 => pz -longname4872 => pza -longname16 => q -longname2929 => q$ -longname2983 => q0 -longname3037 => q1 -longname3091 => q2 -longname3145 => q3 -longname3199 => q4 -longname3253 => q5 -longname3307 => q6 -longname3361 => q7 -longname3415 => q8 -longname3469 => q9 -longname1471 => qA -longname4927 => qAa -longname1525 => qB -longname4981 => qBa -longname1579 => qC -longname1633 => qD -longname1687 => qE -longname1741 => qF -longname1795 => qG -longname1849 => qH -longname1903 => qI -longname1957 => qJ -longname2011 => qK -longname2065 => qL -longname2119 => qM -longname2173 => qN -longname2227 => qO -longname2281 => qP -longname2335 => qQ -longname2389 => qR -longname2443 => qS -longname2497 => qT -longname2551 => qU -longname2605 => qV -longname2659 => qW -longname2713 => qX -longname2767 => qY -longname2821 => qZ -longname2875 => q_ -longname70 => qa -longname3523 => qaa -longname124 => qb -longname3577 => qba -longname178 => qc -longname3631 => qca -longname232 => qd -longname3685 => qda -longname286 => qe -longname3739 => qea -longname339 => qf -longname3793 => qfa -longname393 => qg -longname3847 => qga -longname447 => qh -longname3901 => qha -longname501 => qi -longname3955 => qia -longname555 => qj -longname4009 => qja -longname609 => qk -longname4063 => qka -longname663 => ql -longname4117 => qla -longname717 => qm -longname4171 => qma -longname770 => qn -longname4225 => qna -longname823 => qo -longname4279 => qoa -longname877 => qp -longname4333 => qpa -longname931 => qq -longname4387 => qqa -longname985 => qr -longname4441 => qra -longname1039 => qs -longname4495 => qsa -longname1093 => qt -longname4549 => qta -longname1147 => qu -longname4603 => qua -longname1201 => qv -longname4657 => qva -longname1255 => qw -longname4711 => qwa -longname1309 => qx -longname4765 => qxa -longname1363 => qy -longname4819 => qya -longname1417 => qz -longname4873 => qza -longname17 => r -longname2930 => r$ -longname2984 => r0 -longname3038 => r1 -longname3092 => r2 -longname3146 => r3 -longname3200 => r4 -longname3254 => r5 -longname3308 => r6 -longname3362 => r7 -longname3416 => r8 -longname3470 => r9 -longname1472 => rA -longname4928 => rAa -longname1526 => rB -longname4982 => rBa -longname1580 => rC -longname1634 => rD -longname1688 => rE -longname1742 => rF -longname1796 => rG -longname1850 => rH -longname1904 => rI -longname1958 => rJ -longname2012 => rK -longname2066 => rL -longname2120 => rM -longname2174 => rN -longname2228 => rO -longname2282 => rP -longname2336 => rQ -longname2390 => rR -longname2444 => rS -longname2498 => rT -longname2552 => rU -longname2606 => rV -longname2660 => rW -longname2714 => rX -longname2768 => rY -longname2822 => rZ -longname2876 => r_ -longname71 => ra -longname3524 => raa -longname125 => rb -longname3578 => rba -longname179 => rc -longname3632 => rca -longname233 => rd -longname3686 => rda -longname287 => re -longname3740 => rea -longname340 => rf -longname3794 => rfa -longname394 => rg -longname3848 => rga -longname448 => rh -longname3902 => rha -longname502 => ri -longname3956 => ria -longname556 => rj -longname4010 => rja -longname610 => rk -longname4064 => rka -longname664 => rl -longname4118 => rla -longname718 => rm -longname4172 => rma -longname771 => rn -longname4226 => rna -longname824 => ro -longname4280 => roa -longname878 => rp -longname4334 => rpa -longname932 => rq -longname4388 => rqa -longname986 => rr -longname4442 => rra -longname1040 => rs -longname4496 => rsa -longname1094 => rt -longname4550 => rta -longname1148 => ru -longname4604 => rua -longname1202 => rv -longname4658 => rva -longname1256 => rw -longname4712 => rwa -longname1310 => rx -longname4766 => rxa -longname1364 => ry -longname4820 => rya -longname1418 => rz -longname4874 => rza -longname18 => s -longname2931 => s$ -longname2985 => s0 -longname3039 => s1 -longname3093 => s2 -longname3147 => s3 -longname3201 => s4 -longname3255 => s5 -longname3309 => s6 -longname3363 => s7 -longname3417 => s8 -longname3471 => s9 -longname1473 => sA -longname4929 => sAa -longname1527 => sB -longname4983 => sBa -longname1581 => sC -longname1635 => sD -longname1689 => sE -longname1743 => sF -longname1797 => sG -longname1851 => sH -longname1905 => sI -longname1959 => sJ -longname2013 => sK -longname2067 => sL -longname2121 => sM -longname2175 => sN -longname2229 => sO -longname2283 => sP -longname2337 => sQ -longname2391 => sR -longname2445 => sS -longname2499 => sT -longname2553 => sU -longname2607 => sV -longname2661 => sW -longname2715 => sX -longname2769 => sY -longname2823 => sZ -longname2877 => s_ -longname72 => sa -longname3525 => saa -longname126 => sb -longname3579 => sba -longname180 => sc -longname3633 => sca -longname234 => sd -longname3687 => sda -longname288 => se -longname3741 => sea -longname341 => sf -longname3795 => sfa -longname395 => sg -longname3849 => sga -longname449 => sh -longname3903 => sha -longname503 => si -longname3957 => sia -longname557 => sj -longname4011 => sja -longname611 => sk -longname4065 => ska -longname665 => sl -longname4119 => sla -longname719 => sm -longname4173 => sma -longname772 => sn -longname4227 => sna -longname825 => so -longname4281 => soa -longname879 => sp -longname4335 => spa -longname933 => sq -longname4389 => sqa -longname987 => sr -longname4443 => sra -longname1041 => ss -longname4497 => ssa -longname1095 => st -longname4551 => sta -longname1149 => su -longname4605 => sua -longname1203 => sv -longname4659 => sva -longname1257 => sw -longname4713 => swa -longname1311 => sx -longname4767 => sxa -longname1365 => sy -longname4821 => sya -longname1419 => sz -longname4875 => sza -longname19 => t -longname2932 => t$ -longname2986 => t0 -longname3040 => t1 -longname3094 => t2 -longname3148 => t3 -longname3202 => t4 -longname3256 => t5 -longname3310 => t6 -longname3364 => t7 -longname3418 => t8 -longname3472 => t9 -longname1474 => tA -longname4930 => tAa -longname1528 => tB -longname4984 => tBa -longname1582 => tC -longname1636 => tD -longname1690 => tE -longname1744 => tF -longname1798 => tG -longname1852 => tH -longname1906 => tI -longname1960 => tJ -longname2014 => tK -longname2068 => tL -longname2122 => tM -longname2176 => tN -longname2230 => tO -longname2284 => tP -longname2338 => tQ -longname2392 => tR -longname2446 => tS -longname2500 => tT -longname2554 => tU -longname2608 => tV -longname2662 => tW -longname2716 => tX -longname2770 => tY -longname2824 => tZ -longname2878 => t_ -longname73 => ta -longname3526 => taa -longname127 => tb -longname3580 => tba -longname181 => tc -longname3634 => tca -longname235 => td -longname3688 => tda -longname289 => te -longname3742 => tea -longname342 => tf -longname3796 => tfa -longname396 => tg -longname3850 => tga -longname450 => th -longname3904 => tha -longname504 => ti -longname3958 => tia -longname558 => tj -longname4012 => tja -longname612 => tk -longname4066 => tka -longname666 => tl -longname4120 => tla -longname720 => tm -longname4174 => tma -longname773 => tn -longname4228 => tna -longname826 => to -longname4282 => toa -longname880 => tp -longname4336 => tpa -longname934 => tq -longname4390 => tqa -longname988 => tr -longname4444 => tra -longname1042 => ts -longname4498 => tsa -longname1096 => tt -longname4552 => tta -longname1150 => tu -longname4606 => tua -longname1204 => tv -longname4660 => tva -longname1258 => tw -longname4714 => twa -longname1312 => tx -longname4768 => txa -longname1366 => ty -longname4822 => tya -longname1420 => tz -longname4876 => tza -longname20 => u -longname2933 => u$ -longname2987 => u0 -longname3041 => u1 -longname3095 => u2 -longname3149 => u3 -longname3203 => u4 -longname3257 => u5 -longname3311 => u6 -longname3365 => u7 -longname3419 => u8 -longname3473 => u9 -longname1475 => uA -longname4931 => uAa -longname1529 => uB -longname4985 => uBa -longname1583 => uC -longname1637 => uD -longname1691 => uE -longname1745 => uF -longname1799 => uG -longname1853 => uH -longname1907 => uI -longname1961 => uJ -longname2015 => uK -longname2069 => uL -longname2123 => uM -longname2177 => uN -longname2231 => uO -longname2285 => uP -longname2339 => uQ -longname2393 => uR -longname2447 => uS -longname2501 => uT -longname2555 => uU -longname2609 => uV -longname2663 => uW -longname2717 => uX -longname2771 => uY -longname2825 => uZ -longname2879 => u_ -longname74 => ua -longname3527 => uaa -longname128 => ub -longname3581 => uba -longname182 => uc -longname3635 => uca -longname236 => ud -longname3689 => uda -longname290 => ue -longname3743 => uea -longname343 => uf -longname3797 => ufa -longname397 => ug -longname3851 => uga -longname451 => uh -longname3905 => uha -longname505 => ui -longname3959 => uia -longname559 => uj -longname4013 => uja -longname613 => uk -longname4067 => uka -longname667 => ul -longname4121 => ula -longname721 => um -longname4175 => uma -longname774 => un -longname4229 => una -longname827 => uo -longname4283 => uoa -longname881 => up -longname4337 => upa -longname935 => uq -longname4391 => uqa -longname989 => ur -longname4445 => ura -longname1043 => us -longname4499 => usa -longname1097 => ut -longname4553 => uta -longname1151 => uu -longname4607 => uua -longname1205 => uv -longname4661 => uva -longname1259 => uw -longname4715 => uwa -longname1313 => ux -longname4769 => uxa -longname1367 => uy -longname4823 => uya -longname1421 => uz -longname4877 => uza -longname21 => v -longname2934 => v$ -longname2988 => v0 -longname3042 => v1 -longname3096 => v2 -longname3150 => v3 -longname3204 => v4 -longname3258 => v5 -longname3312 => v6 -longname3366 => v7 -longname3420 => v8 -longname3474 => v9 -longname1476 => vA -longname4932 => vAa -longname1530 => vB -longname4986 => vBa -longname1584 => vC -longname1638 => vD -longname1692 => vE -longname1746 => vF -longname1800 => vG -longname1854 => vH -longname1908 => vI -longname1962 => vJ -longname2016 => vK -longname2070 => vL -longname2124 => vM -longname2178 => vN -longname2232 => vO -longname2286 => vP -longname2340 => vQ -longname2394 => vR -longname2448 => vS -longname2502 => vT -longname2556 => vU -longname2610 => vV -longname2664 => vW -longname2718 => vX -longname2772 => vY -longname2826 => vZ -longname2880 => v_ -longname75 => va -longname3528 => vaa -longname129 => vb -longname3582 => vba -longname183 => vc -longname3636 => vca -longname237 => vd -longname3690 => vda -longname291 => ve -longname3744 => vea -longname344 => vf -longname3798 => vfa -longname398 => vg -longname3852 => vga -longname452 => vh -longname3906 => vha -longname506 => vi -longname3960 => via -longname560 => vj -longname4014 => vja -longname614 => vk -longname4068 => vka -longname668 => vl -longname4122 => vla -longname722 => vm -longname4176 => vma -longname775 => vn -longname4230 => vna -longname828 => vo -longname4284 => voa -longname882 => vp -longname4338 => vpa -longname936 => vq -longname4392 => vqa -longname990 => vr -longname4446 => vra -longname1044 => vs -longname4500 => vsa -longname1098 => vt -longname4554 => vta -longname1152 => vu -longname4608 => vua -longname1206 => vv -longname4662 => vva -longname1260 => vw -longname4716 => vwa -longname1314 => vx -longname4770 => vxa -longname1368 => vy -longname4824 => vya -longname1422 => vz -longname4878 => vza -longname22 => w -longname2935 => w$ -longname2989 => w0 -longname3043 => w1 -longname3097 => w2 -longname3151 => w3 -longname3205 => w4 -longname3259 => w5 -longname3313 => w6 -longname3367 => w7 -longname3421 => w8 -longname3475 => w9 -longname1477 => wA -longname4933 => wAa -longname1531 => wB -longname4987 => wBa -longname1585 => wC -longname1639 => wD -longname1693 => wE -longname1747 => wF -longname1801 => wG -longname1855 => wH -longname1909 => wI -longname1963 => wJ -longname2017 => wK -longname2071 => wL -longname2125 => wM -longname2179 => wN -longname2233 => wO -longname2287 => wP -longname2341 => wQ -longname2395 => wR -longname2449 => wS -longname2503 => wT -longname2557 => wU -longname2611 => wV -longname2665 => wW -longname2719 => wX -longname2773 => wY -longname2827 => wZ -longname2881 => w_ -longname76 => wa -longname3529 => waa -longname130 => wb -longname3583 => wba -longname184 => wc -longname3637 => wca -longname238 => wd -longname3691 => wda -longname292 => we -longname3745 => wea -longname345 => wf -longname3799 => wfa -longname399 => wg -longname3853 => wga -longname453 => wh -longname3907 => wha -longname507 => wi -longname3961 => wia -longname561 => wj -longname4015 => wja -longname615 => wk -longname4069 => wka -longname669 => wl -longname4123 => wla -longname723 => wm -longname4177 => wma -longname776 => wn -longname4231 => wna -longname829 => wo -longname4285 => woa -longname883 => wp -longname4339 => wpa -longname937 => wq -longname4393 => wqa -longname991 => wr -longname4447 => wra -longname1045 => ws -longname4501 => wsa -longname1099 => wt -longname4555 => wta -longname1153 => wu -longname4609 => wua -longname1207 => wv -longname4663 => wva -longname1261 => ww -longname4717 => wwa -longname1315 => wx -longname4771 => wxa -longname1369 => wy -longname4825 => wya -longname1423 => wz -longname4879 => wza -longname23 => x -longname2936 => x$ -longname2990 => x0 -longname3044 => x1 -longname3098 => x2 -longname3152 => x3 -longname3206 => x4 -longname3260 => x5 -longname3314 => x6 -longname3368 => x7 -longname3422 => x8 -longname3476 => x9 -longname1478 => xA -longname4934 => xAa -longname1532 => xB -longname4988 => xBa -longname1586 => xC -longname1640 => xD -longname1694 => xE -longname1748 => xF -longname1802 => xG -longname1856 => xH -longname1910 => xI -longname1964 => xJ -longname2018 => xK -longname2072 => xL -longname2126 => xM -longname2180 => xN -longname2234 => xO -longname2288 => xP -longname2342 => xQ -longname2396 => xR -longname2450 => xS -longname2504 => xT -longname2558 => xU -longname2612 => xV -longname2666 => xW -longname2720 => xX -longname2774 => xY -longname2828 => xZ -longname2882 => x_ -longname77 => xa -longname3530 => xaa -longname131 => xb -longname3584 => xba -longname185 => xc -longname3638 => xca -longname239 => xd -longname3692 => xda -longname293 => xe -longname3746 => xea -longname346 => xf -longname3800 => xfa -longname400 => xg -longname3854 => xga -longname454 => xh -longname3908 => xha -longname508 => xi -longname3962 => xia -longname562 => xj -longname4016 => xja -longname616 => xk -longname4070 => xka -longname670 => xl -longname4124 => xla -longname724 => xm -longname4178 => xma -longname777 => xn -longname4232 => xna -longname830 => xo -longname4286 => xoa -longname884 => xp -longname4340 => xpa -longname938 => xq -longname4394 => xqa -longname992 => xr -longname4448 => xra -longname1046 => xs -longname4502 => xsa -longname1100 => xt -longname4556 => xta -longname1154 => xu -longname4610 => xua -longname1208 => xv -longname4664 => xva -longname1262 => xw -longname4718 => xwa -longname1316 => xx -longname4772 => xxa -longname1370 => xy -longname4826 => xya -longname1424 => xz -longname4880 => xza -longname24 => y -longname2937 => y$ -longname2991 => y0 -longname3045 => y1 -longname3099 => y2 -longname3153 => y3 -longname3207 => y4 -longname3261 => y5 -longname3315 => y6 -longname3369 => y7 -longname3423 => y8 -longname3477 => y9 -longname1479 => yA -longname4935 => yAa -longname1533 => yB -longname4989 => yBa -longname1587 => yC -longname1641 => yD -longname1695 => yE -longname1749 => yF -longname1803 => yG -longname1857 => yH -longname1911 => yI -longname1965 => yJ -longname2019 => yK -longname2073 => yL -longname2127 => yM -longname2181 => yN -longname2235 => yO -longname2289 => yP -longname2343 => yQ -longname2397 => yR -longname2451 => yS -longname2505 => yT -longname2559 => yU -longname2613 => yV -longname2667 => yW -longname2721 => yX -longname2775 => yY -longname2829 => yZ -longname2883 => y_ -longname78 => ya -longname3531 => yaa -longname132 => yb -longname3585 => yba -longname186 => yc -longname3639 => yca -longname240 => yd -longname3693 => yda -longname294 => ye -longname3747 => yea -longname347 => yf -longname3801 => yfa -longname401 => yg -longname3855 => yga -longname455 => yh -longname3909 => yha -longname509 => yi -longname3963 => yia -longname563 => yj -longname4017 => yja -longname617 => yk -longname4071 => yka -longname671 => yl -longname4125 => yla -longname725 => ym -longname4179 => yma -longname778 => yn -longname4233 => yna -longname831 => yo -longname4287 => yoa -longname885 => yp -longname4341 => ypa -longname939 => yq -longname4395 => yqa -longname993 => yr -longname4449 => yra -longname1047 => ys -longname4503 => ysa -longname1101 => yt -longname4557 => yta -longname1155 => yu -longname4611 => yua -longname1209 => yv -longname4665 => yva -longname1263 => yw -longname4719 => ywa -longname1317 => yx -longname4773 => yxa -longname1371 => yy -longname4827 => yya -longname1425 => yz -longname4881 => yza -longname25 => z -longname2938 => z$ -longname2992 => z0 -longname3046 => z1 -longname3100 => z2 -longname3154 => z3 -longname3208 => z4 -longname3262 => z5 -longname3316 => z6 -longname3370 => z7 -longname3424 => z8 -longname3478 => z9 -longname1480 => zA -longname4936 => zAa -longname1534 => zB -longname4990 => zBa -longname1588 => zC -longname1642 => zD -longname1696 => zE -longname1750 => zF -longname1804 => zG -longname1858 => zH -longname1912 => zI -longname1966 => zJ -longname2020 => zK -longname2074 => zL -longname2128 => zM -longname2182 => zN -longname2236 => zO -longname2290 => zP -longname2344 => zQ -longname2398 => zR -longname2452 => zS -longname2506 => zT -longname2560 => zU -longname2614 => zV -longname2668 => zW -longname2722 => zX -longname2776 => zY -longname2830 => zZ -longname2884 => z_ -longname79 => za -longname3532 => zaa -longname133 => zb -longname3586 => zba -longname187 => zc -longname3640 => zca -longname241 => zd -longname3694 => zda -longname295 => ze -longname3748 => zea -longname348 => zf -longname3802 => zfa -longname402 => zg -longname3856 => zga -longname456 => zh -longname3910 => zha -longname510 => zi -longname3964 => zia -longname564 => zj -longname4018 => zja -longname618 => zk -longname4072 => zka -longname672 => zl -longname4126 => zla -longname726 => zm -longname4180 => zma -longname779 => zn -longname4234 => zna -longname832 => zo -longname4288 => zoa -longname886 => zp -longname4342 => zpa -longname940 => zq -longname4396 => zqa -longname994 => zr -longname4450 => zra -longname1048 => zs -longname4504 => zsa -longname1102 => zt -longname4558 => zta -longname1156 => zu -longname4612 => zua -longname1210 => zv -longname4666 => zva -longname1264 => zw -longname4720 => zwa -longname1318 => zx -longname4774 => zxa -longname1372 => zy -longname4828 => zya -longname1426 => zz -longname4882 => zza +longname2911 => a$ +longname2965 => a0 +longname3019 => a1 +longname3073 => a2 +longname3127 => a3 +longname3181 => a4 +longname3235 => a5 +longname3289 => a6 +longname3343 => a7 +longname3397 => a8 +longname3451 => a9 +longname1453 => aA +longname4909 => aAa +longname1507 => aB +longname4963 => aBa +longname1561 => aC +longname1615 => aD +longname1669 => aE +longname1723 => aF +longname1777 => aG +longname1831 => aH +longname1885 => aI +longname1939 => aJ +longname1993 => aK +longname2047 => aL +longname2101 => aM +longname2155 => aN +longname2209 => aO +longname2263 => aP +longname2317 => aQ +longname2371 => aR +longname2425 => aS +longname2479 => aT +longname2533 => aU +longname2587 => aV +longname2641 => aW +longname2695 => aX +longname2749 => aY +longname2803 => aZ +longname2857 => a_ +longname52 => aa +longname3505 => aaa +longname106 => ab +longname3559 => aba +longname160 => ac +longname3613 => aca +longname214 => ad +longname3667 => ada +longname268 => ae +longname3721 => aea +longname322 => af +longname3775 => afa +longname375 => ag +longname3829 => aga +longname429 => ah +longname3883 => aha +longname483 => ai +longname3937 => aia +longname537 => aj +longname3991 => aja +longname591 => ak +longname4045 => aka +longname645 => al +longname4099 => ala +longname699 => am +longname4153 => ama +longname753 => an +longname4207 => ana +longname806 => ao +longname4261 => aoa +longname859 => ap +longname4315 => apa +longname913 => aq +longname4369 => aqa +longname967 => ar +longname4423 => ara +longname1021 => as +longname4477 => asa +longname1075 => at +longname4531 => ata +longname1129 => au +longname4585 => aua +longname1183 => av +longname4639 => ava +longname1237 => aw +longname4693 => awa +longname1291 => ax +longname4747 => axa +longname1345 => ay +longname4801 => aya +longname1399 => az +longname4855 => aza +__memory_base => b +longname2912 => b$ +longname2966 => b0 +longname3020 => b1 +longname3074 => b2 +longname3128 => b3 +longname3182 => b4 +longname3236 => b5 +longname3290 => b6 +longname3344 => b7 +longname3398 => b8 +longname3452 => b9 +longname1454 => bA +longname4910 => bAa +longname1508 => bB +longname4964 => bBa +longname1562 => bC +longname1616 => bD +longname1670 => bE +longname1724 => bF +longname1778 => bG +longname1832 => bH +longname1886 => bI +longname1940 => bJ +longname1994 => bK +longname2048 => bL +longname2102 => bM +longname2156 => bN +longname2210 => bO +longname2264 => bP +longname2318 => bQ +longname2372 => bR +longname2426 => bS +longname2480 => bT +longname2534 => bU +longname2588 => bV +longname2642 => bW +longname2696 => bX +longname2750 => bY +longname2804 => bZ +longname2858 => b_ +longname53 => ba +longname3506 => baa +longname107 => bb +longname3560 => bba +longname161 => bc +longname3614 => bca +longname215 => bd +longname3668 => bda +longname269 => be +longname3722 => bea +longname323 => bf +longname3776 => bfa +longname376 => bg +longname3830 => bga +longname430 => bh +longname3884 => bha +longname484 => bi +longname3938 => bia +longname538 => bj +longname3992 => bja +longname592 => bk +longname4046 => bka +longname646 => bl +longname4100 => bla +longname700 => bm +longname4154 => bma +longname754 => bn +longname4208 => bna +longname807 => bo +longname4262 => boa +longname860 => bp +longname4316 => bpa +longname914 => bq +longname4370 => bqa +longname968 => br +longname4424 => bra +longname1022 => bs +longname4478 => bsa +longname1076 => bt +longname4532 => bta +longname1130 => bu +longname4586 => bua +longname1184 => bv +longname4640 => bva +longname1238 => bw +longname4694 => bwa +longname1292 => bx +longname4748 => bxa +longname1346 => by +longname4802 => bya +longname1400 => bz +longname4856 => bza +__table_base => c +longname2913 => c$ +longname2967 => c0 +longname3021 => c1 +longname3075 => c2 +longname3129 => c3 +longname3183 => c4 +longname3237 => c5 +longname3291 => c6 +longname3345 => c7 +longname3399 => c8 +longname3453 => c9 +longname1455 => cA +longname4911 => cAa +longname1509 => cB +longname4965 => cBa +longname1563 => cC +longname1617 => cD +longname1671 => cE +longname1725 => cF +longname1779 => cG +longname1833 => cH +longname1887 => cI +longname1941 => cJ +longname1995 => cK +longname2049 => cL +longname2103 => cM +longname2157 => cN +longname2211 => cO +longname2265 => cP +longname2319 => cQ +longname2373 => cR +longname2427 => cS +longname2481 => cT +longname2535 => cU +longname2589 => cV +longname2643 => cW +longname2697 => cX +longname2751 => cY +longname2805 => cZ +longname2859 => c_ +longname54 => ca +longname3507 => caa +longname108 => cb +longname3561 => cba +longname162 => cc +longname3615 => cca +longname216 => cd +longname3669 => cda +longname270 => ce +longname3723 => cea +longname324 => cf +longname3777 => cfa +longname377 => cg +longname3831 => cga +longname431 => ch +longname3885 => cha +longname485 => ci +longname3939 => cia +longname539 => cj +longname3993 => cja +longname593 => ck +longname4047 => cka +longname647 => cl +longname4101 => cla +longname701 => cm +longname4155 => cma +longname755 => cn +longname4209 => cna +longname808 => co +longname4263 => coa +longname861 => cp +longname4317 => cpa +longname915 => cq +longname4371 => cqa +longname969 => cr +longname4425 => cra +longname1023 => cs +longname4479 => csa +longname1077 => ct +longname4533 => cta +longname1131 => cu +longname4587 => cua +longname1185 => cv +longname4641 => cva +longname1239 => cw +longname4695 => cwa +longname1293 => cx +longname4749 => cxa +longname1347 => cy +longname4803 => cya +longname1401 => cz +longname4857 => cza +longname1 => d +longname2914 => d$ +longname2968 => d0 +longname3022 => d1 +longname3076 => d2 +longname3130 => d3 +longname3184 => d4 +longname3238 => d5 +longname3292 => d6 +longname3346 => d7 +longname3400 => d8 +longname3454 => d9 +longname1456 => dA +longname4912 => dAa +longname1510 => dB +longname4966 => dBa +longname1564 => dC +longname1618 => dD +longname1672 => dE +longname1726 => dF +longname1780 => dG +longname1834 => dH +longname1888 => dI +longname1942 => dJ +longname1996 => dK +longname2050 => dL +longname2104 => dM +longname2158 => dN +longname2212 => dO +longname2266 => dP +longname2320 => dQ +longname2374 => dR +longname2428 => dS +longname2482 => dT +longname2536 => dU +longname2590 => dV +longname2644 => dW +longname2698 => dX +longname2752 => dY +longname2806 => dZ +longname2860 => d_ +longname55 => da +longname3508 => daa +longname109 => db +longname3562 => dba +longname163 => dc +longname3616 => dca +longname217 => dd +longname3670 => dda +longname271 => de +longname3724 => dea +longname325 => df +longname3778 => dfa +longname378 => dg +longname3832 => dga +longname432 => dh +longname3886 => dha +longname486 => di +longname3940 => dia +longname540 => dj +longname3994 => dja +longname594 => dk +longname4048 => dka +longname648 => dl +longname4102 => dla +longname702 => dm +longname4156 => dma +longname756 => dn +longname4210 => dna +longname4264 => doa +longname862 => dp +longname4318 => dpa +longname916 => dq +longname4372 => dqa +longname970 => dr +longname4426 => dra +longname1024 => ds +longname4480 => dsa +longname1078 => dt +longname4534 => dta +longname1132 => du +longname4588 => dua +longname1186 => dv +longname4642 => dva +longname1240 => dw +longname4696 => dwa +longname1294 => dx +longname4750 => dxa +longname1348 => dy +longname4804 => dya +longname1402 => dz +longname4858 => dza +longname2 => e +longname2915 => e$ +longname2969 => e0 +longname3023 => e1 +longname3077 => e2 +longname3131 => e3 +longname3185 => e4 +longname3239 => e5 +longname3293 => e6 +longname3347 => e7 +longname3401 => e8 +longname3455 => e9 +longname1457 => eA +longname4913 => eAa +longname1511 => eB +longname4967 => eBa +longname1565 => eC +longname1619 => eD +longname1673 => eE +longname1727 => eF +longname1781 => eG +longname1835 => eH +longname1889 => eI +longname1943 => eJ +longname1997 => eK +longname2051 => eL +longname2105 => eM +longname2159 => eN +longname2213 => eO +longname2267 => eP +longname2321 => eQ +longname2375 => eR +longname2429 => eS +longname2483 => eT +longname2537 => eU +longname2591 => eV +longname2645 => eW +longname2699 => eX +longname2753 => eY +longname2807 => eZ +longname2861 => e_ +longname56 => ea +longname3509 => eaa +longname110 => eb +longname3563 => eba +longname164 => ec +longname3617 => eca +longname218 => ed +longname3671 => eda +longname272 => ee +longname3725 => eea +longname326 => ef +longname3779 => efa +longname379 => eg +longname3833 => ega +longname433 => eh +longname3887 => eha +longname487 => ei +longname3941 => eia +longname541 => ej +longname3995 => eja +longname595 => ek +longname4049 => eka +longname649 => el +longname4103 => ela +longname703 => em +longname4157 => ema +longname757 => en +longname4211 => ena +longname809 => eo +longname4265 => eoa +longname863 => ep +longname4319 => epa +longname917 => eq +longname4373 => eqa +longname971 => er +longname4427 => era +longname1025 => es +longname4481 => esa +longname1079 => et +longname4535 => eta +longname1133 => eu +longname4589 => eua +longname1187 => ev +longname4643 => eva +longname1241 => ew +longname4697 => ewa +longname1295 => ex +longname4751 => exa +longname1349 => ey +longname4805 => eya +longname1403 => ez +longname4859 => eza +longname3 => f +longname2916 => f$ +longname2970 => f0 +longname3024 => f1 +longname3078 => f2 +longname3132 => f3 +longname3186 => f4 +longname3240 => f5 +longname3294 => f6 +longname3348 => f7 +longname3402 => f8 +longname3456 => f9 +longname1458 => fA +longname4914 => fAa +longname1512 => fB +longname4968 => fBa +longname1566 => fC +longname1620 => fD +longname1674 => fE +longname1728 => fF +longname1782 => fG +longname1836 => fH +longname1890 => fI +longname1944 => fJ +longname1998 => fK +longname2052 => fL +longname2106 => fM +longname2160 => fN +longname2214 => fO +longname2268 => fP +longname2322 => fQ +longname2376 => fR +longname2430 => fS +longname2484 => fT +longname2538 => fU +longname2592 => fV +longname2646 => fW +longname2700 => fX +longname2754 => fY +longname2808 => fZ +longname2862 => f_ +longname57 => fa +longname3510 => faa +longname111 => fb +longname3564 => fba +longname165 => fc +longname3618 => fca +longname219 => fd +longname3672 => fda +longname273 => fe +longname3726 => fea +longname327 => ff +longname3780 => ffa +longname380 => fg +longname3834 => fga +longname434 => fh +longname3888 => fha +longname488 => fi +longname3942 => fia +longname542 => fj +longname3996 => fja +longname596 => fk +longname4050 => fka +longname650 => fl +longname4104 => fla +longname704 => fm +longname4158 => fma +longname758 => fn +longname4212 => fna +longname810 => fo +longname4266 => foa +longname864 => fp +longname4320 => fpa +longname918 => fq +longname4374 => fqa +longname972 => fr +longname4428 => fra +longname1026 => fs +longname4482 => fsa +longname1080 => ft +longname4536 => fta +longname1134 => fu +longname4590 => fua +longname1188 => fv +longname4644 => fva +longname1242 => fw +longname4698 => fwa +longname1296 => fx +longname4752 => fxa +longname1350 => fy +longname4806 => fya +longname1404 => fz +longname4860 => fza +longname4 => g +longname2917 => g$ +longname2971 => g0 +longname3025 => g1 +longname3079 => g2 +longname3133 => g3 +longname3187 => g4 +longname3241 => g5 +longname3295 => g6 +longname3349 => g7 +longname3403 => g8 +longname3457 => g9 +longname1459 => gA +longname4915 => gAa +longname1513 => gB +longname4969 => gBa +longname1567 => gC +longname1621 => gD +longname1675 => gE +longname1729 => gF +longname1783 => gG +longname1837 => gH +longname1891 => gI +longname1945 => gJ +longname1999 => gK +longname2053 => gL +longname2107 => gM +longname2161 => gN +longname2215 => gO +longname2269 => gP +longname2323 => gQ +longname2377 => gR +longname2431 => gS +longname2485 => gT +longname2539 => gU +longname2593 => gV +longname2647 => gW +longname2701 => gX +longname2755 => gY +longname2809 => gZ +longname2863 => g_ +longname58 => ga +longname3511 => gaa +longname112 => gb +longname3565 => gba +longname166 => gc +longname3619 => gca +longname220 => gd +longname3673 => gda +longname274 => ge +longname3727 => gea +longname328 => gf +longname3781 => gfa +longname381 => gg +longname3835 => gga +longname435 => gh +longname3889 => gha +longname489 => gi +longname3943 => gia +longname543 => gj +longname3997 => gja +longname597 => gk +longname4051 => gka +longname651 => gl +longname4105 => gla +longname705 => gm +longname4159 => gma +longname759 => gn +longname4213 => gna +longname811 => go +longname4267 => goa +longname865 => gp +longname4321 => gpa +longname919 => gq +longname4375 => gqa +longname973 => gr +longname4429 => gra +longname1027 => gs +longname4483 => gsa +longname1081 => gt +longname4537 => gta +longname1135 => gu +longname4591 => gua +longname1189 => gv +longname4645 => gva +longname1243 => gw +longname4699 => gwa +longname1297 => gx +longname4753 => gxa +longname1351 => gy +longname4807 => gya +longname1405 => gz +longname4861 => gza +longname5 => h +longname2918 => h$ +longname2972 => h0 +longname3026 => h1 +longname3080 => h2 +longname3134 => h3 +longname3188 => h4 +longname3242 => h5 +longname3296 => h6 +longname3350 => h7 +longname3404 => h8 +longname3458 => h9 +longname1460 => hA +longname4916 => hAa +longname1514 => hB +longname4970 => hBa +longname1568 => hC +longname1622 => hD +longname1676 => hE +longname1730 => hF +longname1784 => hG +longname1838 => hH +longname1892 => hI +longname1946 => hJ +longname2000 => hK +longname2054 => hL +longname2108 => hM +longname2162 => hN +longname2216 => hO +longname2270 => hP +longname2324 => hQ +longname2378 => hR +longname2432 => hS +longname2486 => hT +longname2540 => hU +longname2594 => hV +longname2648 => hW +longname2702 => hX +longname2756 => hY +longname2810 => hZ +longname2864 => h_ +longname59 => ha +longname3512 => haa +longname113 => hb +longname3566 => hba +longname167 => hc +longname3620 => hca +longname221 => hd +longname3674 => hda +longname275 => he +longname3728 => hea +longname329 => hf +longname3782 => hfa +longname382 => hg +longname3836 => hga +longname436 => hh +longname3890 => hha +longname490 => hi +longname3944 => hia +longname544 => hj +longname3998 => hja +longname598 => hk +longname4052 => hka +longname652 => hl +longname4106 => hla +longname706 => hm +longname4160 => hma +longname760 => hn +longname4214 => hna +longname812 => ho +longname4268 => hoa +longname866 => hp +longname4322 => hpa +longname920 => hq +longname4376 => hqa +longname974 => hr +longname4430 => hra +longname1028 => hs +longname4484 => hsa +longname1082 => ht +longname4538 => hta +longname1136 => hu +longname4592 => hua +longname1190 => hv +longname4646 => hva +longname1244 => hw +longname4700 => hwa +longname1298 => hx +longname4754 => hxa +longname1352 => hy +longname4808 => hya +longname1406 => hz +longname4862 => hza +longname6 => i +longname2919 => i$ +longname2973 => i0 +longname3027 => i1 +longname3081 => i2 +longname3135 => i3 +longname3189 => i4 +longname3243 => i5 +longname3297 => i6 +longname3351 => i7 +longname3405 => i8 +longname3459 => i9 +longname1461 => iA +longname4917 => iAa +longname1515 => iB +longname4971 => iBa +longname1569 => iC +longname1623 => iD +longname1677 => iE +longname1731 => iF +longname1785 => iG +longname1839 => iH +longname1893 => iI +longname1947 => iJ +longname2001 => iK +longname2055 => iL +longname2109 => iM +longname2163 => iN +longname2217 => iO +longname2271 => iP +longname2325 => iQ +longname2379 => iR +longname2433 => iS +longname2487 => iT +longname2541 => iU +longname2595 => iV +longname2649 => iW +longname2703 => iX +longname2757 => iY +longname2811 => iZ +longname2865 => i_ +longname60 => ia +longname3513 => iaa +longname114 => ib +longname3567 => iba +longname168 => ic +longname3621 => ica +longname222 => id +longname3675 => ida +longname276 => ie +longname3729 => iea +longname3783 => ifa +longname383 => ig +longname3837 => iga +longname437 => ih +longname3891 => iha +longname491 => ii +longname3945 => iia +longname545 => ij +longname3999 => ija +longname599 => ik +longname4053 => ika +longname653 => il +longname4107 => ila +longname707 => im +longname4161 => ima +longname4215 => ina +longname813 => io +longname4269 => ioa +longname867 => ip +longname4323 => ipa +longname921 => iq +longname4377 => iqa +longname975 => ir +longname4431 => ira +longname1029 => is +longname4485 => isa +longname1083 => it +longname4539 => ita +longname1137 => iu +longname4593 => iua +longname1191 => iv +longname4647 => iva +longname1245 => iw +longname4701 => iwa +longname1299 => ix +longname4755 => ixa +longname1353 => iy +longname4809 => iya +longname1407 => iz +longname4863 => iza +longname7 => j +longname2920 => j$ +longname2974 => j0 +longname3028 => j1 +longname3082 => j2 +longname3136 => j3 +longname3190 => j4 +longname3244 => j5 +longname3298 => j6 +longname3352 => j7 +longname3406 => j8 +longname3460 => j9 +longname1462 => jA +longname4918 => jAa +longname1516 => jB +longname4972 => jBa +longname1570 => jC +longname1624 => jD +longname1678 => jE +longname1732 => jF +longname1786 => jG +longname1840 => jH +longname1894 => jI +longname1948 => jJ +longname2002 => jK +longname2056 => jL +longname2110 => jM +longname2164 => jN +longname2218 => jO +longname2272 => jP +longname2326 => jQ +longname2380 => jR +longname2434 => jS +longname2488 => jT +longname2542 => jU +longname2596 => jV +longname2650 => jW +longname2704 => jX +longname2758 => jY +longname2812 => jZ +longname2866 => j_ +longname61 => ja +longname3514 => jaa +longname115 => jb +longname3568 => jba +longname169 => jc +longname3622 => jca +longname223 => jd +longname3676 => jda +longname277 => je +longname3730 => jea +longname330 => jf +longname3784 => jfa +longname384 => jg +longname3838 => jga +longname438 => jh +longname3892 => jha +longname492 => ji +longname3946 => jia +longname546 => jj +longname4000 => jja +longname600 => jk +longname4054 => jka +longname654 => jl +longname4108 => jla +longname708 => jm +longname4162 => jma +longname761 => jn +longname4216 => jna +longname814 => jo +longname4270 => joa +longname868 => jp +longname4324 => jpa +longname922 => jq +longname4378 => jqa +longname976 => jr +longname4432 => jra +longname1030 => js +longname4486 => jsa +longname1084 => jt +longname4540 => jta +longname1138 => ju +longname4594 => jua +longname1192 => jv +longname4648 => jva +longname1246 => jw +longname4702 => jwa +longname1300 => jx +longname4756 => jxa +longname1354 => jy +longname4810 => jya +longname1408 => jz +longname4864 => jza +longname8 => k +longname2921 => k$ +longname2975 => k0 +longname3029 => k1 +longname3083 => k2 +longname3137 => k3 +longname3191 => k4 +longname3245 => k5 +longname3299 => k6 +longname3353 => k7 +longname3407 => k8 +longname3461 => k9 +longname1463 => kA +longname4919 => kAa +longname1517 => kB +longname4973 => kBa +longname1571 => kC +longname1625 => kD +longname1679 => kE +longname1733 => kF +longname1787 => kG +longname1841 => kH +longname1895 => kI +longname1949 => kJ +longname2003 => kK +longname2057 => kL +longname2111 => kM +longname2165 => kN +longname2219 => kO +longname2273 => kP +longname2327 => kQ +longname2381 => kR +longname2435 => kS +longname2489 => kT +longname2543 => kU +longname2597 => kV +longname2651 => kW +longname2705 => kX +longname2759 => kY +longname2813 => kZ +longname2867 => k_ +longname62 => ka +longname3515 => kaa +longname116 => kb +longname3569 => kba +longname170 => kc +longname3623 => kca +longname224 => kd +longname3677 => kda +longname278 => ke +longname3731 => kea +longname331 => kf +longname3785 => kfa +longname385 => kg +longname3839 => kga +longname439 => kh +longname3893 => kha +longname493 => ki +longname3947 => kia +longname547 => kj +longname4001 => kja +longname601 => kk +longname4055 => kka +longname655 => kl +longname4109 => kla +longname709 => km +longname4163 => kma +longname762 => kn +longname4217 => kna +longname815 => ko +longname4271 => koa +longname869 => kp +longname4325 => kpa +longname923 => kq +longname4379 => kqa +longname977 => kr +longname4433 => kra +longname1031 => ks +longname4487 => ksa +longname1085 => kt +longname4541 => kta +longname1139 => ku +longname4595 => kua +longname1193 => kv +longname4649 => kva +longname1247 => kw +longname4703 => kwa +longname1301 => kx +longname4757 => kxa +longname1355 => ky +longname4811 => kya +longname1409 => kz +longname4865 => kza +longname9 => l +longname2922 => l$ +longname2976 => l0 +longname3030 => l1 +longname3084 => l2 +longname3138 => l3 +longname3192 => l4 +longname3246 => l5 +longname3300 => l6 +longname3354 => l7 +longname3408 => l8 +longname3462 => l9 +longname1464 => lA +longname4920 => lAa +longname1518 => lB +longname4974 => lBa +longname1572 => lC +longname1626 => lD +longname1680 => lE +longname1734 => lF +longname1788 => lG +longname1842 => lH +longname1896 => lI +longname1950 => lJ +longname2004 => lK +longname2058 => lL +longname2112 => lM +longname2166 => lN +longname2220 => lO +longname2274 => lP +longname2328 => lQ +longname2382 => lR +longname2436 => lS +longname2490 => lT +longname2544 => lU +longname2598 => lV +longname2652 => lW +longname2706 => lX +longname2760 => lY +longname2814 => lZ +longname2868 => l_ +longname63 => la +longname3516 => laa +longname117 => lb +longname3570 => lba +longname171 => lc +longname3624 => lca +longname225 => ld +longname3678 => lda +longname279 => le +longname3732 => lea +longname332 => lf +longname3786 => lfa +longname386 => lg +longname3840 => lga +longname440 => lh +longname3894 => lha +longname494 => li +longname3948 => lia +longname548 => lj +longname4002 => lja +longname602 => lk +longname4056 => lka +longname656 => ll +longname4110 => lla +longname710 => lm +longname4164 => lma +longname763 => ln +longname4218 => lna +longname816 => lo +longname4272 => loa +longname870 => lp +longname4326 => lpa +longname924 => lq +longname4380 => lqa +longname978 => lr +longname4434 => lra +longname1032 => ls +longname4488 => lsa +longname1086 => lt +longname4542 => lta +longname1140 => lu +longname4596 => lua +longname1194 => lv +longname4650 => lva +longname1248 => lw +longname4704 => lwa +longname1302 => lx +longname4758 => lxa +longname1356 => ly +longname4812 => lya +longname1410 => lz +longname4866 => lza +longname10 => m +longname2923 => m$ +longname2977 => m0 +longname3031 => m1 +longname3085 => m2 +longname3139 => m3 +longname3193 => m4 +longname3247 => m5 +longname3301 => m6 +longname3355 => m7 +longname3409 => m8 +longname3463 => m9 +longname1465 => mA +longname4921 => mAa +longname1519 => mB +longname4975 => mBa +longname1573 => mC +longname1627 => mD +longname1681 => mE +longname1735 => mF +longname1789 => mG +longname1843 => mH +longname1897 => mI +longname1951 => mJ +longname2005 => mK +longname2059 => mL +longname2113 => mM +longname2167 => mN +longname2221 => mO +longname2275 => mP +longname2329 => mQ +longname2383 => mR +longname2437 => mS +longname2491 => mT +longname2545 => mU +longname2599 => mV +longname2653 => mW +longname2707 => mX +longname2761 => mY +longname2815 => mZ +longname2869 => m_ +longname64 => ma +longname3517 => maa +longname118 => mb +longname3571 => mba +longname172 => mc +longname3625 => mca +longname226 => md +longname3679 => mda +longname280 => me +longname3733 => mea +longname333 => mf +longname3787 => mfa +longname387 => mg +longname3841 => mga +longname441 => mh +longname3895 => mha +longname495 => mi +longname3949 => mia +longname549 => mj +longname4003 => mja +longname603 => mk +longname4057 => mka +longname657 => ml +longname4111 => mla +longname711 => mm +longname4165 => mma +longname764 => mn +longname4219 => mna +longname817 => mo +longname4273 => moa +longname871 => mp +longname4327 => mpa +longname925 => mq +longname4381 => mqa +longname979 => mr +longname4435 => mra +longname1033 => ms +longname4489 => msa +longname1087 => mt +longname4543 => mta +longname1141 => mu +longname4597 => mua +longname1195 => mv +longname4651 => mva +longname1249 => mw +longname4705 => mwa +longname1303 => mx +longname4759 => mxa +longname1357 => my +longname4813 => mya +longname1411 => mz +longname4867 => mza +longname11 => n +longname2924 => n$ +longname2978 => n0 +longname3032 => n1 +longname3086 => n2 +longname3140 => n3 +longname3194 => n4 +longname3248 => n5 +longname3302 => n6 +longname3356 => n7 +longname3410 => n8 +longname3464 => n9 +longname1466 => nA +longname4922 => nAa +longname1520 => nB +longname4976 => nBa +longname1574 => nC +longname1628 => nD +longname1682 => nE +longname1736 => nF +longname1790 => nG +longname1844 => nH +longname1898 => nI +longname1952 => nJ +longname2006 => nK +longname2060 => nL +longname2114 => nM +longname2168 => nN +longname2222 => nO +longname2276 => nP +longname2330 => nQ +longname2384 => nR +longname2438 => nS +longname2492 => nT +longname2546 => nU +longname2600 => nV +longname2654 => nW +longname2708 => nX +longname2762 => nY +longname2816 => nZ +longname2870 => n_ +longname65 => na +longname3518 => naa +longname119 => nb +longname3572 => nba +longname173 => nc +longname3626 => nca +longname227 => nd +longname3680 => nda +longname281 => ne +longname3734 => nea +longname334 => nf +longname3788 => nfa +longname388 => ng +longname3842 => nga +longname442 => nh +longname3896 => nha +longname496 => ni +longname3950 => nia +longname550 => nj +longname4004 => nja +longname604 => nk +longname4058 => nka +longname658 => nl +longname4112 => nla +longname712 => nm +longname4166 => nma +longname765 => nn +longname4220 => nna +longname818 => no +longname4274 => noa +longname872 => np +longname4328 => npa +longname926 => nq +longname4382 => nqa +longname980 => nr +longname4436 => nra +longname1034 => ns +longname4490 => nsa +longname1088 => nt +longname4544 => nta +longname1142 => nu +longname4598 => nua +longname1196 => nv +longname4652 => nva +longname1250 => nw +longname4706 => nwa +longname1304 => nx +longname4760 => nxa +longname1358 => ny +longname4814 => nya +longname1412 => nz +longname4868 => nza +longname12 => o +longname2925 => o$ +longname2979 => o0 +longname3033 => o1 +longname3087 => o2 +longname3141 => o3 +longname3195 => o4 +longname3249 => o5 +longname3303 => o6 +longname3357 => o7 +longname3411 => o8 +longname3465 => o9 +longname1467 => oA +longname4923 => oAa +longname1521 => oB +longname4977 => oBa +longname1575 => oC +longname1629 => oD +longname1683 => oE +longname1737 => oF +longname1791 => oG +longname1845 => oH +longname1899 => oI +longname1953 => oJ +longname2007 => oK +longname2061 => oL +longname2115 => oM +longname2169 => oN +longname2223 => oO +longname2277 => oP +longname2331 => oQ +longname2385 => oR +longname2439 => oS +longname2493 => oT +longname2547 => oU +longname2601 => oV +longname2655 => oW +longname2709 => oX +longname2763 => oY +longname2817 => oZ +longname2871 => o_ +longname66 => oa +longname3519 => oaa +longname120 => ob +longname3573 => oba +longname174 => oc +longname3627 => oca +longname228 => od +longname3681 => oda +longname282 => oe +longname3735 => oea +longname335 => of +longname3789 => ofa +longname389 => og +longname3843 => oga +longname443 => oh +longname3897 => oha +longname497 => oi +longname3951 => oia +longname551 => oj +longname4005 => oja +longname605 => ok +longname4059 => oka +longname659 => ol +longname4113 => ola +longname713 => om +longname4167 => oma +longname766 => on +longname4221 => ona +longname819 => oo +longname4275 => ooa +longname873 => op +longname4329 => opa +longname927 => oq +longname4383 => oqa +longname981 => or +longname4437 => ora +longname1035 => os +longname4491 => osa +longname1089 => ot +longname4545 => ota +longname1143 => ou +longname4599 => oua +longname1197 => ov +longname4653 => ova +longname1251 => ow +longname4707 => owa +longname1305 => ox +longname4761 => oxa +longname1359 => oy +longname4815 => oya +longname1413 => oz +longname4869 => oza +longname13 => p +longname2926 => p$ +longname2980 => p0 +longname3034 => p1 +longname3088 => p2 +longname3142 => p3 +longname3196 => p4 +longname3250 => p5 +longname3304 => p6 +longname3358 => p7 +longname3412 => p8 +longname3466 => p9 +longname1468 => pA +longname4924 => pAa +longname1522 => pB +longname4978 => pBa +longname1576 => pC +longname1630 => pD +longname1684 => pE +longname1738 => pF +longname1792 => pG +longname1846 => pH +longname1900 => pI +longname1954 => pJ +longname2008 => pK +longname2062 => pL +longname2116 => pM +longname2170 => pN +longname2224 => pO +longname2278 => pP +longname2332 => pQ +longname2386 => pR +longname2440 => pS +longname2494 => pT +longname2548 => pU +longname2602 => pV +longname2656 => pW +longname2710 => pX +longname2764 => pY +longname2818 => pZ +longname2872 => p_ +longname67 => pa +longname3520 => paa +longname121 => pb +longname3574 => pba +longname175 => pc +longname3628 => pca +longname229 => pd +longname3682 => pda +longname283 => pe +longname3736 => pea +longname336 => pf +longname3790 => pfa +longname390 => pg +longname3844 => pga +longname444 => ph +longname3898 => pha +longname498 => pi +longname3952 => pia +longname552 => pj +longname4006 => pja +longname606 => pk +longname4060 => pka +longname660 => pl +longname4114 => pla +longname714 => pm +longname4168 => pma +longname767 => pn +longname4222 => pna +longname820 => po +longname4276 => poa +longname874 => pp +longname4330 => ppa +longname928 => pq +longname4384 => pqa +longname982 => pr +longname4438 => pra +longname1036 => ps +longname4492 => psa +longname1090 => pt +longname4546 => pta +longname1144 => pu +longname4600 => pua +longname1198 => pv +longname4654 => pva +longname1252 => pw +longname4708 => pwa +longname1306 => px +longname4762 => pxa +longname1360 => py +longname4816 => pya +longname1414 => pz +longname4870 => pza +longname14 => q +longname2927 => q$ +longname2981 => q0 +longname3035 => q1 +longname3089 => q2 +longname3143 => q3 +longname3197 => q4 +longname3251 => q5 +longname3305 => q6 +longname3359 => q7 +longname3413 => q8 +longname3467 => q9 +longname1469 => qA +longname4925 => qAa +longname1523 => qB +longname4979 => qBa +longname1577 => qC +longname1631 => qD +longname1685 => qE +longname1739 => qF +longname1793 => qG +longname1847 => qH +longname1901 => qI +longname1955 => qJ +longname2009 => qK +longname2063 => qL +longname2117 => qM +longname2171 => qN +longname2225 => qO +longname2279 => qP +longname2333 => qQ +longname2387 => qR +longname2441 => qS +longname2495 => qT +longname2549 => qU +longname2603 => qV +longname2657 => qW +longname2711 => qX +longname2765 => qY +longname2819 => qZ +longname2873 => q_ +longname68 => qa +longname3521 => qaa +longname122 => qb +longname3575 => qba +longname176 => qc +longname3629 => qca +longname230 => qd +longname3683 => qda +longname284 => qe +longname3737 => qea +longname337 => qf +longname3791 => qfa +longname391 => qg +longname3845 => qga +longname445 => qh +longname3899 => qha +longname499 => qi +longname3953 => qia +longname553 => qj +longname4007 => qja +longname607 => qk +longname4061 => qka +longname661 => ql +longname4115 => qla +longname715 => qm +longname4169 => qma +longname768 => qn +longname4223 => qna +longname821 => qo +longname4277 => qoa +longname875 => qp +longname4331 => qpa +longname929 => qq +longname4385 => qqa +longname983 => qr +longname4439 => qra +longname1037 => qs +longname4493 => qsa +longname1091 => qt +longname4547 => qta +longname1145 => qu +longname4601 => qua +longname1199 => qv +longname4655 => qva +longname1253 => qw +longname4709 => qwa +longname1307 => qx +longname4763 => qxa +longname1361 => qy +longname4817 => qya +longname1415 => qz +longname4871 => qza +longname15 => r +longname2928 => r$ +longname2982 => r0 +longname3036 => r1 +longname3090 => r2 +longname3144 => r3 +longname3198 => r4 +longname3252 => r5 +longname3306 => r6 +longname3360 => r7 +longname3414 => r8 +longname3468 => r9 +longname1470 => rA +longname4926 => rAa +longname1524 => rB +longname4980 => rBa +longname1578 => rC +longname1632 => rD +longname1686 => rE +longname1740 => rF +longname1794 => rG +longname1848 => rH +longname1902 => rI +longname1956 => rJ +longname2010 => rK +longname2064 => rL +longname2118 => rM +longname2172 => rN +longname2226 => rO +longname2280 => rP +longname2334 => rQ +longname2388 => rR +longname2442 => rS +longname2496 => rT +longname2550 => rU +longname2604 => rV +longname2658 => rW +longname2712 => rX +longname2766 => rY +longname2820 => rZ +longname2874 => r_ +longname69 => ra +longname3522 => raa +longname123 => rb +longname3576 => rba +longname177 => rc +longname3630 => rca +longname231 => rd +longname3684 => rda +longname285 => re +longname3738 => rea +longname338 => rf +longname3792 => rfa +longname392 => rg +longname3846 => rga +longname446 => rh +longname3900 => rha +longname500 => ri +longname3954 => ria +longname554 => rj +longname4008 => rja +longname608 => rk +longname4062 => rka +longname662 => rl +longname4116 => rla +longname716 => rm +longname4170 => rma +longname769 => rn +longname4224 => rna +longname822 => ro +longname4278 => roa +longname876 => rp +longname4332 => rpa +longname930 => rq +longname4386 => rqa +longname984 => rr +longname4440 => rra +longname1038 => rs +longname4494 => rsa +longname1092 => rt +longname4548 => rta +longname1146 => ru +longname4602 => rua +longname1200 => rv +longname4656 => rva +longname1254 => rw +longname4710 => rwa +longname1308 => rx +longname4764 => rxa +longname1362 => ry +longname4818 => rya +longname1416 => rz +longname4872 => rza +longname16 => s +longname2929 => s$ +longname2983 => s0 +longname3037 => s1 +longname3091 => s2 +longname3145 => s3 +longname3199 => s4 +longname3253 => s5 +longname3307 => s6 +longname3361 => s7 +longname3415 => s8 +longname3469 => s9 +longname1471 => sA +longname4927 => sAa +longname1525 => sB +longname4981 => sBa +longname1579 => sC +longname1633 => sD +longname1687 => sE +longname1741 => sF +longname1795 => sG +longname1849 => sH +longname1903 => sI +longname1957 => sJ +longname2011 => sK +longname2065 => sL +longname2119 => sM +longname2173 => sN +longname2227 => sO +longname2281 => sP +longname2335 => sQ +longname2389 => sR +longname2443 => sS +longname2497 => sT +longname2551 => sU +longname2605 => sV +longname2659 => sW +longname2713 => sX +longname2767 => sY +longname2821 => sZ +longname2875 => s_ +longname70 => sa +longname3523 => saa +longname124 => sb +longname3577 => sba +longname178 => sc +longname3631 => sca +longname232 => sd +longname3685 => sda +longname286 => se +longname3739 => sea +longname339 => sf +longname3793 => sfa +longname393 => sg +longname3847 => sga +longname447 => sh +longname3901 => sha +longname501 => si +longname3955 => sia +longname555 => sj +longname4009 => sja +longname609 => sk +longname4063 => ska +longname663 => sl +longname4117 => sla +longname717 => sm +longname4171 => sma +longname770 => sn +longname4225 => sna +longname823 => so +longname4279 => soa +longname877 => sp +longname4333 => spa +longname931 => sq +longname4387 => sqa +longname985 => sr +longname4441 => sra +longname1039 => ss +longname4495 => ssa +longname1093 => st +longname4549 => sta +longname1147 => su +longname4603 => sua +longname1201 => sv +longname4657 => sva +longname1255 => sw +longname4711 => swa +longname1309 => sx +longname4765 => sxa +longname1363 => sy +longname4819 => sya +longname1417 => sz +longname4873 => sza +longname17 => t +longname2930 => t$ +longname2984 => t0 +longname3038 => t1 +longname3092 => t2 +longname3146 => t3 +longname3200 => t4 +longname3254 => t5 +longname3308 => t6 +longname3362 => t7 +longname3416 => t8 +longname3470 => t9 +longname1472 => tA +longname4928 => tAa +longname1526 => tB +longname4982 => tBa +longname1580 => tC +longname1634 => tD +longname1688 => tE +longname1742 => tF +longname1796 => tG +longname1850 => tH +longname1904 => tI +longname1958 => tJ +longname2012 => tK +longname2066 => tL +longname2120 => tM +longname2174 => tN +longname2228 => tO +longname2282 => tP +longname2336 => tQ +longname2390 => tR +longname2444 => tS +longname2498 => tT +longname2552 => tU +longname2606 => tV +longname2660 => tW +longname2714 => tX +longname2768 => tY +longname2822 => tZ +longname2876 => t_ +longname71 => ta +longname3524 => taa +longname125 => tb +longname3578 => tba +longname179 => tc +longname3632 => tca +longname233 => td +longname3686 => tda +longname287 => te +longname3740 => tea +longname340 => tf +longname3794 => tfa +longname394 => tg +longname3848 => tga +longname448 => th +longname3902 => tha +longname502 => ti +longname3956 => tia +longname556 => tj +longname4010 => tja +longname610 => tk +longname4064 => tka +longname664 => tl +longname4118 => tla +longname718 => tm +longname4172 => tma +longname771 => tn +longname4226 => tna +longname824 => to +longname4280 => toa +longname878 => tp +longname4334 => tpa +longname932 => tq +longname4388 => tqa +longname986 => tr +longname4442 => tra +longname1040 => ts +longname4496 => tsa +longname1094 => tt +longname4550 => tta +longname1148 => tu +longname4604 => tua +longname1202 => tv +longname4658 => tva +longname1256 => tw +longname4712 => twa +longname1310 => tx +longname4766 => txa +longname1364 => ty +longname4820 => tya +longname1418 => tz +longname4874 => tza +longname18 => u +longname2931 => u$ +longname2985 => u0 +longname3039 => u1 +longname3093 => u2 +longname3147 => u3 +longname3201 => u4 +longname3255 => u5 +longname3309 => u6 +longname3363 => u7 +longname3417 => u8 +longname3471 => u9 +longname1473 => uA +longname4929 => uAa +longname1527 => uB +longname4983 => uBa +longname1581 => uC +longname1635 => uD +longname1689 => uE +longname1743 => uF +longname1797 => uG +longname1851 => uH +longname1905 => uI +longname1959 => uJ +longname2013 => uK +longname2067 => uL +longname2121 => uM +longname2175 => uN +longname2229 => uO +longname2283 => uP +longname2337 => uQ +longname2391 => uR +longname2445 => uS +longname2499 => uT +longname2553 => uU +longname2607 => uV +longname2661 => uW +longname2715 => uX +longname2769 => uY +longname2823 => uZ +longname2877 => u_ +longname72 => ua +longname3525 => uaa +longname126 => ub +longname3579 => uba +longname180 => uc +longname3633 => uca +longname234 => ud +longname3687 => uda +longname288 => ue +longname3741 => uea +longname341 => uf +longname3795 => ufa +longname395 => ug +longname3849 => uga +longname449 => uh +longname3903 => uha +longname503 => ui +longname3957 => uia +longname557 => uj +longname4011 => uja +longname611 => uk +longname4065 => uka +longname665 => ul +longname4119 => ula +longname719 => um +longname4173 => uma +longname772 => un +longname4227 => una +longname825 => uo +longname4281 => uoa +longname879 => up +longname4335 => upa +longname933 => uq +longname4389 => uqa +longname987 => ur +longname4443 => ura +longname1041 => us +longname4497 => usa +longname1095 => ut +longname4551 => uta +longname1149 => uu +longname4605 => uua +longname1203 => uv +longname4659 => uva +longname1257 => uw +longname4713 => uwa +longname1311 => ux +longname4767 => uxa +longname1365 => uy +longname4821 => uya +longname1419 => uz +longname4875 => uza +longname19 => v +longname2932 => v$ +longname2986 => v0 +longname3040 => v1 +longname3094 => v2 +longname3148 => v3 +longname3202 => v4 +longname3256 => v5 +longname3310 => v6 +longname3364 => v7 +longname3418 => v8 +longname3472 => v9 +longname1474 => vA +longname4930 => vAa +longname1528 => vB +longname4984 => vBa +longname1582 => vC +longname1636 => vD +longname1690 => vE +longname1744 => vF +longname1798 => vG +longname1852 => vH +longname1906 => vI +longname1960 => vJ +longname2014 => vK +longname2068 => vL +longname2122 => vM +longname2176 => vN +longname2230 => vO +longname2284 => vP +longname2338 => vQ +longname2392 => vR +longname2446 => vS +longname2500 => vT +longname2554 => vU +longname2608 => vV +longname2662 => vW +longname2716 => vX +longname2770 => vY +longname2824 => vZ +longname2878 => v_ +longname73 => va +longname3526 => vaa +longname127 => vb +longname3580 => vba +longname181 => vc +longname3634 => vca +longname235 => vd +longname3688 => vda +longname289 => ve +longname3742 => vea +longname342 => vf +longname3796 => vfa +longname396 => vg +longname3850 => vga +longname450 => vh +longname3904 => vha +longname504 => vi +longname3958 => via +longname558 => vj +longname4012 => vja +longname612 => vk +longname4066 => vka +longname666 => vl +longname4120 => vla +longname720 => vm +longname4174 => vma +longname773 => vn +longname4228 => vna +longname826 => vo +longname4282 => voa +longname880 => vp +longname4336 => vpa +longname934 => vq +longname4390 => vqa +longname988 => vr +longname4444 => vra +longname1042 => vs +longname4498 => vsa +longname1096 => vt +longname4552 => vta +longname1150 => vu +longname4606 => vua +longname1204 => vv +longname4660 => vva +longname1258 => vw +longname4714 => vwa +longname1312 => vx +longname4768 => vxa +longname1366 => vy +longname4822 => vya +longname1420 => vz +longname4876 => vza +longname20 => w +longname2933 => w$ +longname2987 => w0 +longname3041 => w1 +longname3095 => w2 +longname3149 => w3 +longname3203 => w4 +longname3257 => w5 +longname3311 => w6 +longname3365 => w7 +longname3419 => w8 +longname3473 => w9 +longname1475 => wA +longname4931 => wAa +longname1529 => wB +longname4985 => wBa +longname1583 => wC +longname1637 => wD +longname1691 => wE +longname1745 => wF +longname1799 => wG +longname1853 => wH +longname1907 => wI +longname1961 => wJ +longname2015 => wK +longname2069 => wL +longname2123 => wM +longname2177 => wN +longname2231 => wO +longname2285 => wP +longname2339 => wQ +longname2393 => wR +longname2447 => wS +longname2501 => wT +longname2555 => wU +longname2609 => wV +longname2663 => wW +longname2717 => wX +longname2771 => wY +longname2825 => wZ +longname2879 => w_ +longname74 => wa +longname3527 => waa +longname128 => wb +longname3581 => wba +longname182 => wc +longname3635 => wca +longname236 => wd +longname3689 => wda +longname290 => we +longname3743 => wea +longname343 => wf +longname3797 => wfa +longname397 => wg +longname3851 => wga +longname451 => wh +longname3905 => wha +longname505 => wi +longname3959 => wia +longname559 => wj +longname4013 => wja +longname613 => wk +longname4067 => wka +longname667 => wl +longname4121 => wla +longname721 => wm +longname4175 => wma +longname774 => wn +longname4229 => wna +longname827 => wo +longname4283 => woa +longname881 => wp +longname4337 => wpa +longname935 => wq +longname4391 => wqa +longname989 => wr +longname4445 => wra +longname1043 => ws +longname4499 => wsa +longname1097 => wt +longname4553 => wta +longname1151 => wu +longname4607 => wua +longname1205 => wv +longname4661 => wva +longname1259 => ww +longname4715 => wwa +longname1313 => wx +longname4769 => wxa +longname1367 => wy +longname4823 => wya +longname1421 => wz +longname4877 => wza +longname21 => x +longname2934 => x$ +longname2988 => x0 +longname3042 => x1 +longname3096 => x2 +longname3150 => x3 +longname3204 => x4 +longname3258 => x5 +longname3312 => x6 +longname3366 => x7 +longname3420 => x8 +longname3474 => x9 +longname1476 => xA +longname4932 => xAa +longname1530 => xB +longname4986 => xBa +longname1584 => xC +longname1638 => xD +longname1692 => xE +longname1746 => xF +longname1800 => xG +longname1854 => xH +longname1908 => xI +longname1962 => xJ +longname2016 => xK +longname2070 => xL +longname2124 => xM +longname2178 => xN +longname2232 => xO +longname2286 => xP +longname2340 => xQ +longname2394 => xR +longname2448 => xS +longname2502 => xT +longname2556 => xU +longname2610 => xV +longname2664 => xW +longname2718 => xX +longname2772 => xY +longname2826 => xZ +longname2880 => x_ +longname75 => xa +longname3528 => xaa +longname129 => xb +longname3582 => xba +longname183 => xc +longname3636 => xca +longname237 => xd +longname3690 => xda +longname291 => xe +longname3744 => xea +longname344 => xf +longname3798 => xfa +longname398 => xg +longname3852 => xga +longname452 => xh +longname3906 => xha +longname506 => xi +longname3960 => xia +longname560 => xj +longname4014 => xja +longname614 => xk +longname4068 => xka +longname668 => xl +longname4122 => xla +longname722 => xm +longname4176 => xma +longname775 => xn +longname4230 => xna +longname828 => xo +longname4284 => xoa +longname882 => xp +longname4338 => xpa +longname936 => xq +longname4392 => xqa +longname990 => xr +longname4446 => xra +longname1044 => xs +longname4500 => xsa +longname1098 => xt +longname4554 => xta +longname1152 => xu +longname4608 => xua +longname1206 => xv +longname4662 => xva +longname1260 => xw +longname4716 => xwa +longname1314 => xx +longname4770 => xxa +longname1368 => xy +longname4824 => xya +longname1422 => xz +longname4878 => xza +longname22 => y +longname2935 => y$ +longname2989 => y0 +longname3043 => y1 +longname3097 => y2 +longname3151 => y3 +longname3205 => y4 +longname3259 => y5 +longname3313 => y6 +longname3367 => y7 +longname3421 => y8 +longname3475 => y9 +longname1477 => yA +longname4933 => yAa +longname1531 => yB +longname4987 => yBa +longname1585 => yC +longname1639 => yD +longname1693 => yE +longname1747 => yF +longname1801 => yG +longname1855 => yH +longname1909 => yI +longname1963 => yJ +longname2017 => yK +longname2071 => yL +longname2125 => yM +longname2179 => yN +longname2233 => yO +longname2287 => yP +longname2341 => yQ +longname2395 => yR +longname2449 => yS +longname2503 => yT +longname2557 => yU +longname2611 => yV +longname2665 => yW +longname2719 => yX +longname2773 => yY +longname2827 => yZ +longname2881 => y_ +longname76 => ya +longname3529 => yaa +longname130 => yb +longname3583 => yba +longname184 => yc +longname3637 => yca +longname238 => yd +longname3691 => yda +longname292 => ye +longname3745 => yea +longname345 => yf +longname3799 => yfa +longname399 => yg +longname3853 => yga +longname453 => yh +longname3907 => yha +longname507 => yi +longname3961 => yia +longname561 => yj +longname4015 => yja +longname615 => yk +longname4069 => yka +longname669 => yl +longname4123 => yla +longname723 => ym +longname4177 => yma +longname776 => yn +longname4231 => yna +longname829 => yo +longname4285 => yoa +longname883 => yp +longname4339 => ypa +longname937 => yq +longname4393 => yqa +longname991 => yr +longname4447 => yra +longname1045 => ys +longname4501 => ysa +longname1099 => yt +longname4555 => yta +longname1153 => yu +longname4609 => yua +longname1207 => yv +longname4663 => yva +longname1261 => yw +longname4717 => ywa +longname1315 => yx +longname4771 => yxa +longname1369 => yy +longname4825 => yya +longname1423 => yz +longname4879 => yza +longname23 => z +longname2936 => z$ +longname2990 => z0 +longname3044 => z1 +longname3098 => z2 +longname3152 => z3 +longname3206 => z4 +longname3260 => z5 +longname3314 => z6 +longname3368 => z7 +longname3422 => z8 +longname3476 => z9 +longname1478 => zA +longname4934 => zAa +longname1532 => zB +longname4988 => zBa +longname1586 => zC +longname1640 => zD +longname1694 => zE +longname1748 => zF +longname1802 => zG +longname1856 => zH +longname1910 => zI +longname1964 => zJ +longname2018 => zK +longname2072 => zL +longname2126 => zM +longname2180 => zN +longname2234 => zO +longname2288 => zP +longname2342 => zQ +longname2396 => zR +longname2450 => zS +longname2504 => zT +longname2558 => zU +longname2612 => zV +longname2666 => zW +longname2720 => zX +longname2774 => zY +longname2828 => zZ +longname2882 => z_ +longname77 => za +longname3530 => zaa +longname131 => zb +longname3584 => zba +longname185 => zc +longname3638 => zca +longname239 => zd +longname3692 => zda +longname293 => ze +longname3746 => zea +longname346 => zf +longname3800 => zfa +longname400 => zg +longname3854 => zga +longname454 => zh +longname3908 => zha +longname508 => zi +longname3962 => zia +longname562 => zj +longname4016 => zja +longname616 => zk +longname4070 => zka +longname670 => zl +longname4124 => zla +longname724 => zm +longname4178 => zma +longname777 => zn +longname4232 => zna +longname830 => zo +longname4286 => zoa +longname884 => zp +longname4340 => zpa +longname938 => zq +longname4394 => zqa +longname992 => zr +longname4448 => zra +longname1046 => zs +longname4502 => zsa +longname1100 => zt +longname4556 => zta +longname1154 => zu +longname4610 => zua +longname1208 => zv +longname4664 => zva +longname1262 => zw +longname4718 => zwa +longname1316 => zx +longname4772 => zxa +longname1370 => zy +longname4826 => zya +longname1424 => zz +longname4880 => zza (module (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) - (import "env" "a" (global $import$global0 i32)) - (import "env" "__memory_base" (global $import$global1 i32)) - (import "env" "__table_base" (global $import$global2 i32)) - (import "env" "b" (func $internal1)) - (import "env" "c" (func $internal2)) - (import "env" "d" (func $internal3)) - (import "env" "e" (func $internal4)) - (import "env" "f" (func $internal5)) - (import "env" "g" (func $internal6)) - (import "env" "h" (func $internal7)) - (import "env" "i" (func $internal8)) - (import "env" "j" (func $internal9)) - (import "env" "k" (func $internal10)) - (import "env" "l" (func $internal11)) - (import "env" "m" (func $internal12)) - (import "env" "n" (func $internal13)) - (import "env" "o" (func $internal14)) - (import "env" "p" (func $internal15)) - (import "env" "q" (func $internal16)) - (import "env" "r" (func $internal17)) - (import "env" "s" (func $internal18)) - (import "env" "t" (func $internal19)) - (import "env" "u" (func $internal20)) - (import "env" "v" (func $internal21)) - (import "env" "w" (func $internal22)) - (import "env" "x" (func $internal23)) - (import "env" "y" (func $internal24)) - (import "env" "z" (func $internal25)) - (import "env" "A" (func $internal26)) - (import "env" "B" (func $internal27)) - (import "env" "C" (func $internal28)) - (import "env" "D" (func $internal29)) - (import "env" "E" (func $internal30)) - (import "env" "F" (func $internal31)) - (import "env" "G" (func $internal32)) - (import "env" "H" (func $internal33)) - (import "env" "I" (func $internal34)) - (import "env" "J" (func $internal35)) - (import "env" "K" (func $internal36)) - (import "env" "L" (func $internal37)) - (import "env" "M" (func $internal38)) - (import "env" "N" (func $internal39)) - (import "env" "O" (func $internal40)) - (import "env" "P" (func $internal41)) - (import "env" "Q" (func $internal42)) - (import "env" "R" (func $internal43)) - (import "env" "S" (func $internal44)) - (import "env" "T" (func $internal45)) - (import "env" "U" (func $internal46)) - (import "env" "V" (func $internal47)) - (import "env" "W" (func $internal48)) - (import "env" "X" (func $internal49)) - (import "env" "Y" (func $internal50)) - (import "env" "Z" (func $internal51)) - (import "env" "_" (func $internal52)) - (import "env" "$" (func $internal53)) - (import "env" "aa" (func $internal54)) - (import "env" "ba" (func $internal55)) - (import "env" "ca" (func $internal56)) - (import "env" "da" (func $internal57)) - (import "env" "ea" (func $internal58)) - (import "env" "fa" (func $internal59)) - (import "env" "ga" (func $internal60)) - (import "env" "ha" (func $internal61)) - (import "env" "ia" (func $internal62)) - (import "env" "ja" (func $internal63)) - (import "env" "ka" (func $internal64)) - (import "env" "la" (func $internal65)) - (import "env" "ma" (func $internal66)) - (import "env" "na" (func $internal67)) - (import "env" "oa" (func $internal68)) - (import "env" "pa" (func $internal69)) - (import "env" "qa" (func $internal70)) - (import "env" "ra" (func $internal71)) - (import "env" "sa" (func $internal72)) - (import "env" "ta" (func $internal73)) - (import "env" "ua" (func $internal74)) - (import "env" "va" (func $internal75)) - (import "env" "wa" (func $internal76)) - (import "env" "xa" (func $internal77)) - (import "env" "ya" (func $internal78)) - (import "env" "za" (func $internal79)) - (import "env" "Aa" (func $internal80)) - (import "env" "Ba" (func $internal81)) - (import "env" "Ca" (func $internal82)) - (import "env" "Da" (func $internal83)) - (import "env" "Ea" (func $internal84)) - (import "env" "Fa" (func $internal85)) - (import "env" "Ga" (func $internal86)) - (import "env" "Ha" (func $internal87)) - (import "env" "Ia" (func $internal88)) - (import "env" "Ja" (func $internal89)) - (import "env" "Ka" (func $internal90)) - (import "env" "La" (func $internal91)) - (import "env" "Ma" (func $internal92)) - (import "env" "Na" (func $internal93)) - (import "env" "Oa" (func $internal94)) - (import "env" "Pa" (func $internal95)) - (import "env" "Qa" (func $internal96)) - (import "env" "Ra" (func $internal97)) - (import "env" "Sa" (func $internal98)) - (import "env" "Ta" (func $internal99)) - (import "env" "Ua" (func $internal100)) - (import "env" "Va" (func $internal101)) - (import "env" "Wa" (func $internal102)) - (import "env" "Xa" (func $internal103)) - (import "env" "Ya" (func $internal104)) - (import "env" "Za" (func $internal105)) - (import "env" "_a" (func $internal106)) - (import "env" "$a" (func $internal107)) - (import "env" "ab" (func $internal108)) - (import "env" "bb" (func $internal109)) - (import "env" "cb" (func $internal110)) - (import "env" "db" (func $internal111)) - (import "env" "eb" (func $internal112)) - (import "env" "fb" (func $internal113)) - (import "env" "gb" (func $internal114)) - (import "env" "hb" (func $internal115)) - (import "env" "ib" (func $internal116)) - (import "env" "jb" (func $internal117)) - (import "env" "kb" (func $internal118)) - (import "env" "lb" (func $internal119)) - (import "env" "mb" (func $internal120)) - (import "env" "nb" (func $internal121)) - (import "env" "ob" (func $internal122)) - (import "env" "pb" (func $internal123)) - (import "env" "qb" (func $internal124)) - (import "env" "rb" (func $internal125)) - (import "env" "sb" (func $internal126)) - (import "env" "tb" (func $internal127)) - (import "env" "ub" (func $internal128)) - (import "env" "vb" (func $internal129)) - (import "env" "wb" (func $internal130)) - (import "env" "xb" (func $internal131)) - (import "env" "yb" (func $internal132)) - (import "env" "zb" (func $internal133)) - (import "env" "Ab" (func $internal134)) - (import "env" "Bb" (func $internal135)) - (import "env" "Cb" (func $internal136)) - (import "env" "Db" (func $internal137)) - (import "env" "Eb" (func $internal138)) - (import "env" "Fb" (func $internal139)) - (import "env" "Gb" (func $internal140)) - (import "env" "Hb" (func $internal141)) - (import "env" "Ib" (func $internal142)) - (import "env" "Jb" (func $internal143)) - (import "env" "Kb" (func $internal144)) - (import "env" "Lb" (func $internal145)) - (import "env" "Mb" (func $internal146)) - (import "env" "Nb" (func $internal147)) - (import "env" "Ob" (func $internal148)) - (import "env" "Pb" (func $internal149)) - (import "env" "Qb" (func $internal150)) - (import "env" "Rb" (func $internal151)) - (import "env" "Sb" (func $internal152)) - (import "env" "Tb" (func $internal153)) - (import "env" "Ub" (func $internal154)) - (import "env" "Vb" (func $internal155)) - (import "env" "Wb" (func $internal156)) - (import "env" "Xb" (func $internal157)) - (import "env" "Yb" (func $internal158)) - (import "env" "Zb" (func $internal159)) - (import "env" "_b" (func $internal160)) - (import "env" "$b" (func $internal161)) - (import "env" "ac" (func $internal162)) - (import "env" "bc" (func $internal163)) - (import "env" "cc" (func $internal164)) - (import "env" "dc" (func $internal165)) - (import "env" "ec" (func $internal166)) - (import "env" "fc" (func $internal167)) - (import "env" "gc" (func $internal168)) - (import "env" "hc" (func $internal169)) - (import "env" "ic" (func $internal170)) - (import "env" "jc" (func $internal171)) - (import "env" "kc" (func $internal172)) - (import "env" "lc" (func $internal173)) - (import "env" "mc" (func $internal174)) - (import "env" "nc" (func $internal175)) - (import "env" "oc" (func $internal176)) - (import "env" "pc" (func $internal177)) - (import "env" "qc" (func $internal178)) - (import "env" "rc" (func $internal179)) - (import "env" "sc" (func $internal180)) - (import "env" "tc" (func $internal181)) - (import "env" "uc" (func $internal182)) - (import "env" "vc" (func $internal183)) - (import "env" "wc" (func $internal184)) - (import "env" "xc" (func $internal185)) - (import "env" "yc" (func $internal186)) - (import "env" "zc" (func $internal187)) - (import "env" "Ac" (func $internal188)) - (import "env" "Bc" (func $internal189)) - (import "env" "Cc" (func $internal190)) - (import "env" "Dc" (func $internal191)) - (import "env" "Ec" (func $internal192)) - (import "env" "Fc" (func $internal193)) - (import "env" "Gc" (func $internal194)) - (import "env" "Hc" (func $internal195)) - (import "env" "Ic" (func $internal196)) - (import "env" "Jc" (func $internal197)) - (import "env" "Kc" (func $internal198)) - (import "env" "Lc" (func $internal199)) - (import "env" "Mc" (func $internal200)) - (import "env" "Nc" (func $internal201)) - (import "env" "Oc" (func $internal202)) - (import "env" "Pc" (func $internal203)) - (import "env" "Qc" (func $internal204)) - (import "env" "Rc" (func $internal205)) - (import "env" "Sc" (func $internal206)) - (import "env" "Tc" (func $internal207)) - (import "env" "Uc" (func $internal208)) - (import "env" "Vc" (func $internal209)) - (import "env" "Wc" (func $internal210)) - (import "env" "Xc" (func $internal211)) - (import "env" "Yc" (func $internal212)) - (import "env" "Zc" (func $internal213)) - (import "env" "_c" (func $internal214)) - (import "env" "$c" (func $internal215)) - (import "env" "ad" (func $internal216)) - (import "env" "bd" (func $internal217)) - (import "env" "cd" (func $internal218)) - (import "env" "dd" (func $internal219)) - (import "env" "ed" (func $internal220)) - (import "env" "fd" (func $internal221)) - (import "env" "gd" (func $internal222)) - (import "env" "hd" (func $internal223)) - (import "env" "id" (func $internal224)) - (import "env" "jd" (func $internal225)) - (import "env" "kd" (func $internal226)) - (import "env" "ld" (func $internal227)) - (import "env" "md" (func $internal228)) - (import "env" "nd" (func $internal229)) - (import "env" "od" (func $internal230)) - (import "env" "pd" (func $internal231)) - (import "env" "qd" (func $internal232)) - (import "env" "rd" (func $internal233)) - (import "env" "sd" (func $internal234)) - (import "env" "td" (func $internal235)) - (import "env" "ud" (func $internal236)) - (import "env" "vd" (func $internal237)) - (import "env" "wd" (func $internal238)) - (import "env" "xd" (func $internal239)) - (import "env" "yd" (func $internal240)) - (import "env" "zd" (func $internal241)) - (import "env" "Ad" (func $internal242)) - (import "env" "Bd" (func $internal243)) - (import "env" "Cd" (func $internal244)) - (import "env" "Dd" (func $internal245)) - (import "env" "Ed" (func $internal246)) - (import "env" "Fd" (func $internal247)) - (import "env" "Gd" (func $internal248)) - (import "env" "Hd" (func $internal249)) - (import "env" "Id" (func $internal250)) - (import "env" "Jd" (func $internal251)) - (import "env" "Kd" (func $internal252)) - (import "env" "Ld" (func $internal253)) - (import "env" "Md" (func $internal254)) - (import "env" "Nd" (func $internal255)) - (import "env" "Od" (func $internal256)) - (import "env" "Pd" (func $internal257)) - (import "env" "Qd" (func $internal258)) - (import "env" "Rd" (func $internal259)) - (import "env" "Sd" (func $internal260)) - (import "env" "Td" (func $internal261)) - (import "env" "Ud" (func $internal262)) - (import "env" "Vd" (func $internal263)) - (import "env" "Wd" (func $internal264)) - (import "env" "Xd" (func $internal265)) - (import "env" "Yd" (func $internal266)) - (import "env" "Zd" (func $internal267)) - (import "env" "_d" (func $internal268)) - (import "env" "$d" (func $internal269)) - (import "env" "ae" (func $internal270)) - (import "env" "be" (func $internal271)) - (import "env" "ce" (func $internal272)) - (import "env" "de" (func $internal273)) - (import "env" "ee" (func $internal274)) - (import "env" "fe" (func $internal275)) - (import "env" "ge" (func $internal276)) - (import "env" "he" (func $internal277)) - (import "env" "ie" (func $internal278)) - (import "env" "je" (func $internal279)) - (import "env" "ke" (func $internal280)) - (import "env" "le" (func $internal281)) - (import "env" "me" (func $internal282)) - (import "env" "ne" (func $internal283)) - (import "env" "oe" (func $internal284)) - (import "env" "pe" (func $internal285)) - (import "env" "qe" (func $internal286)) - (import "env" "re" (func $internal287)) - (import "env" "se" (func $internal288)) - (import "env" "te" (func $internal289)) - (import "env" "ue" (func $internal290)) - (import "env" "ve" (func $internal291)) - (import "env" "we" (func $internal292)) - (import "env" "xe" (func $internal293)) - (import "env" "ye" (func $internal294)) - (import "env" "ze" (func $internal295)) - (import "env" "Ae" (func $internal296)) - (import "env" "Be" (func $internal297)) - (import "env" "Ce" (func $internal298)) - (import "env" "De" (func $internal299)) - (import "env" "Ee" (func $internal300)) - (import "env" "Fe" (func $internal301)) - (import "env" "Ge" (func $internal302)) - (import "env" "He" (func $internal303)) - (import "env" "Ie" (func $internal304)) - (import "env" "Je" (func $internal305)) - (import "env" "Ke" (func $internal306)) - (import "env" "Le" (func $internal307)) - (import "env" "Me" (func $internal308)) - (import "env" "Ne" (func $internal309)) - (import "env" "Oe" (func $internal310)) - (import "env" "Pe" (func $internal311)) - (import "env" "Qe" (func $internal312)) - (import "env" "Re" (func $internal313)) - (import "env" "Se" (func $internal314)) - (import "env" "Te" (func $internal315)) - (import "env" "Ue" (func $internal316)) - (import "env" "Ve" (func $internal317)) - (import "env" "We" (func $internal318)) - (import "env" "Xe" (func $internal319)) - (import "env" "Ye" (func $internal320)) - (import "env" "Ze" (func $internal321)) - (import "env" "_e" (func $internal322)) - (import "env" "$e" (func $internal323)) - (import "env" "af" (func $internal324)) - (import "env" "bf" (func $internal325)) - (import "env" "cf" (func $internal326)) - (import "env" "df" (func $internal327)) - (import "env" "ef" (func $internal328)) - (import "env" "ff" (func $internal329)) - (import "env" "gf" (func $internal330)) - (import "env" "hf" (func $internal331)) - (import "env" "jf" (func $internal332)) - (import "env" "kf" (func $internal333)) - (import "env" "lf" (func $internal334)) - (import "env" "mf" (func $internal335)) - (import "env" "nf" (func $internal336)) - (import "env" "of" (func $internal337)) - (import "env" "pf" (func $internal338)) - (import "env" "qf" (func $internal339)) - (import "env" "rf" (func $internal340)) - (import "env" "sf" (func $internal341)) - (import "env" "tf" (func $internal342)) - (import "env" "uf" (func $internal343)) - (import "env" "vf" (func $internal344)) - (import "env" "wf" (func $internal345)) - (import "env" "xf" (func $internal346)) - (import "env" "yf" (func $internal347)) - (import "env" "zf" (func $internal348)) - (import "env" "Af" (func $internal349)) - (import "env" "Bf" (func $internal350)) - (import "env" "Cf" (func $internal351)) - (import "env" "Df" (func $internal352)) - (import "env" "Ef" (func $internal353)) - (import "env" "Ff" (func $internal354)) - (import "env" "Gf" (func $internal355)) - (import "env" "Hf" (func $internal356)) - (import "env" "If" (func $internal357)) - (import "env" "Jf" (func $internal358)) - (import "env" "Kf" (func $internal359)) - (import "env" "Lf" (func $internal360)) - (import "env" "Mf" (func $internal361)) - (import "env" "Nf" (func $internal362)) - (import "env" "Of" (func $internal363)) - (import "env" "Pf" (func $internal364)) - (import "env" "Qf" (func $internal365)) - (import "env" "Rf" (func $internal366)) - (import "env" "Sf" (func $internal367)) - (import "env" "Tf" (func $internal368)) - (import "env" "Uf" (func $internal369)) - (import "env" "Vf" (func $internal370)) - (import "env" "Wf" (func $internal371)) - (import "env" "Xf" (func $internal372)) - (import "env" "Yf" (func $internal373)) - (import "env" "Zf" (func $internal374)) - (import "env" "_f" (func $internal375)) - (import "env" "$f" (func $internal376)) - (import "env" "ag" (func $internal377)) - (import "env" "bg" (func $internal378)) - (import "env" "cg" (func $internal379)) - (import "env" "dg" (func $internal380)) - (import "env" "eg" (func $internal381)) - (import "env" "fg" (func $internal382)) - (import "env" "gg" (func $internal383)) - (import "env" "hg" (func $internal384)) - (import "env" "ig" (func $internal385)) - (import "env" "jg" (func $internal386)) - (import "env" "kg" (func $internal387)) - (import "env" "lg" (func $internal388)) - (import "env" "mg" (func $internal389)) - (import "env" "ng" (func $internal390)) - (import "env" "og" (func $internal391)) - (import "env" "pg" (func $internal392)) - (import "env" "qg" (func $internal393)) - (import "env" "rg" (func $internal394)) - (import "env" "sg" (func $internal395)) - (import "env" "tg" (func $internal396)) - (import "env" "ug" (func $internal397)) - (import "env" "vg" (func $internal398)) - (import "env" "wg" (func $internal399)) - (import "env" "xg" (func $internal400)) - (import "env" "yg" (func $internal401)) - (import "env" "zg" (func $internal402)) - (import "env" "Ag" (func $internal403)) - (import "env" "Bg" (func $internal404)) - (import "env" "Cg" (func $internal405)) - (import "env" "Dg" (func $internal406)) - (import "env" "Eg" (func $internal407)) - (import "env" "Fg" (func $internal408)) - (import "env" "Gg" (func $internal409)) - (import "env" "Hg" (func $internal410)) - (import "env" "Ig" (func $internal411)) - (import "env" "Jg" (func $internal412)) - (import "env" "Kg" (func $internal413)) - (import "env" "Lg" (func $internal414)) - (import "env" "Mg" (func $internal415)) - (import "env" "Ng" (func $internal416)) - (import "env" "Og" (func $internal417)) - (import "env" "Pg" (func $internal418)) - (import "env" "Qg" (func $internal419)) - (import "env" "Rg" (func $internal420)) - (import "env" "Sg" (func $internal421)) - (import "env" "Tg" (func $internal422)) - (import "env" "Ug" (func $internal423)) - (import "env" "Vg" (func $internal424)) - (import "env" "Wg" (func $internal425)) - (import "env" "Xg" (func $internal426)) - (import "env" "Yg" (func $internal427)) - (import "env" "Zg" (func $internal428)) - (import "env" "_g" (func $internal429)) - (import "env" "$g" (func $internal430)) - (import "env" "ah" (func $internal431)) - (import "env" "bh" (func $internal432)) - (import "env" "ch" (func $internal433)) - (import "env" "dh" (func $internal434)) - (import "env" "eh" (func $internal435)) - (import "env" "fh" (func $internal436)) - (import "env" "gh" (func $internal437)) - (import "env" "hh" (func $internal438)) - (import "env" "ih" (func $internal439)) - (import "env" "jh" (func $internal440)) - (import "env" "kh" (func $internal441)) - (import "env" "lh" (func $internal442)) - (import "env" "mh" (func $internal443)) - (import "env" "nh" (func $internal444)) - (import "env" "oh" (func $internal445)) - (import "env" "ph" (func $internal446)) - (import "env" "qh" (func $internal447)) - (import "env" "rh" (func $internal448)) - (import "env" "sh" (func $internal449)) - (import "env" "th" (func $internal450)) - (import "env" "uh" (func $internal451)) - (import "env" "vh" (func $internal452)) - (import "env" "wh" (func $internal453)) - (import "env" "xh" (func $internal454)) - (import "env" "yh" (func $internal455)) - (import "env" "zh" (func $internal456)) - (import "env" "Ah" (func $internal457)) - (import "env" "Bh" (func $internal458)) - (import "env" "Ch" (func $internal459)) - (import "env" "Dh" (func $internal460)) - (import "env" "Eh" (func $internal461)) - (import "env" "Fh" (func $internal462)) - (import "env" "Gh" (func $internal463)) - (import "env" "Hh" (func $internal464)) - (import "env" "Ih" (func $internal465)) - (import "env" "Jh" (func $internal466)) - (import "env" "Kh" (func $internal467)) - (import "env" "Lh" (func $internal468)) - (import "env" "Mh" (func $internal469)) - (import "env" "Nh" (func $internal470)) - (import "env" "Oh" (func $internal471)) - (import "env" "Ph" (func $internal472)) - (import "env" "Qh" (func $internal473)) - (import "env" "Rh" (func $internal474)) - (import "env" "Sh" (func $internal475)) - (import "env" "Th" (func $internal476)) - (import "env" "Uh" (func $internal477)) - (import "env" "Vh" (func $internal478)) - (import "env" "Wh" (func $internal479)) - (import "env" "Xh" (func $internal480)) - (import "env" "Yh" (func $internal481)) - (import "env" "Zh" (func $internal482)) - (import "env" "_h" (func $internal483)) - (import "env" "$h" (func $internal484)) - (import "env" "ai" (func $internal485)) - (import "env" "bi" (func $internal486)) - (import "env" "ci" (func $internal487)) - (import "env" "di" (func $internal488)) - (import "env" "ei" (func $internal489)) - (import "env" "fi" (func $internal490)) - (import "env" "gi" (func $internal491)) - (import "env" "hi" (func $internal492)) - (import "env" "ii" (func $internal493)) - (import "env" "ji" (func $internal494)) - (import "env" "ki" (func $internal495)) - (import "env" "li" (func $internal496)) - (import "env" "mi" (func $internal497)) - (import "env" "ni" (func $internal498)) - (import "env" "oi" (func $internal499)) - (import "env" "pi" (func $internal500)) - (import "env" "qi" (func $internal501)) - (import "env" "ri" (func $internal502)) - (import "env" "si" (func $internal503)) - (import "env" "ti" (func $internal504)) - (import "env" "ui" (func $internal505)) - (import "env" "vi" (func $internal506)) - (import "env" "wi" (func $internal507)) - (import "env" "xi" (func $internal508)) - (import "env" "yi" (func $internal509)) - (import "env" "zi" (func $internal510)) - (import "env" "Ai" (func $internal511)) - (import "env" "Bi" (func $internal512)) - (import "env" "Ci" (func $internal513)) - (import "env" "Di" (func $internal514)) - (import "env" "Ei" (func $internal515)) - (import "env" "Fi" (func $internal516)) - (import "env" "Gi" (func $internal517)) - (import "env" "Hi" (func $internal518)) - (import "env" "Ii" (func $internal519)) - (import "env" "Ji" (func $internal520)) - (import "env" "Ki" (func $internal521)) - (import "env" "Li" (func $internal522)) - (import "env" "Mi" (func $internal523)) - (import "env" "Ni" (func $internal524)) - (import "env" "Oi" (func $internal525)) - (import "env" "Pi" (func $internal526)) - (import "env" "Qi" (func $internal527)) - (import "env" "Ri" (func $internal528)) - (import "env" "Si" (func $internal529)) - (import "env" "Ti" (func $internal530)) - (import "env" "Ui" (func $internal531)) - (import "env" "Vi" (func $internal532)) - (import "env" "Wi" (func $internal533)) - (import "env" "Xi" (func $internal534)) - (import "env" "Yi" (func $internal535)) - (import "env" "Zi" (func $internal536)) - (import "env" "_i" (func $internal537)) - (import "env" "$i" (func $internal538)) - (import "env" "aj" (func $internal539)) - (import "env" "bj" (func $internal540)) - (import "env" "cj" (func $internal541)) - (import "env" "dj" (func $internal542)) - (import "env" "ej" (func $internal543)) - (import "env" "fj" (func $internal544)) - (import "env" "gj" (func $internal545)) - (import "env" "hj" (func $internal546)) - (import "env" "ij" (func $internal547)) - (import "env" "jj" (func $internal548)) - (import "env" "kj" (func $internal549)) - (import "env" "lj" (func $internal550)) - (import "env" "mj" (func $internal551)) - (import "env" "nj" (func $internal552)) - (import "env" "oj" (func $internal553)) - (import "env" "pj" (func $internal554)) - (import "env" "qj" (func $internal555)) - (import "env" "rj" (func $internal556)) - (import "env" "sj" (func $internal557)) - (import "env" "tj" (func $internal558)) - (import "env" "uj" (func $internal559)) - (import "env" "vj" (func $internal560)) - (import "env" "wj" (func $internal561)) - (import "env" "xj" (func $internal562)) - (import "env" "yj" (func $internal563)) - (import "env" "zj" (func $internal564)) - (import "env" "Aj" (func $internal565)) - (import "env" "Bj" (func $internal566)) - (import "env" "Cj" (func $internal567)) - (import "env" "Dj" (func $internal568)) - (import "env" "Ej" (func $internal569)) - (import "env" "Fj" (func $internal570)) - (import "env" "Gj" (func $internal571)) - (import "env" "Hj" (func $internal572)) - (import "env" "Ij" (func $internal573)) - (import "env" "Jj" (func $internal574)) - (import "env" "Kj" (func $internal575)) - (import "env" "Lj" (func $internal576)) - (import "env" "Mj" (func $internal577)) - (import "env" "Nj" (func $internal578)) - (import "env" "Oj" (func $internal579)) - (import "env" "Pj" (func $internal580)) - (import "env" "Qj" (func $internal581)) - (import "env" "Rj" (func $internal582)) - (import "env" "Sj" (func $internal583)) - (import "env" "Tj" (func $internal584)) - (import "env" "Uj" (func $internal585)) - (import "env" "Vj" (func $internal586)) - (import "env" "Wj" (func $internal587)) - (import "env" "Xj" (func $internal588)) - (import "env" "Yj" (func $internal589)) - (import "env" "Zj" (func $internal590)) - (import "env" "_j" (func $internal591)) - (import "env" "$j" (func $internal592)) - (import "env" "ak" (func $internal593)) - (import "env" "bk" (func $internal594)) - (import "env" "ck" (func $internal595)) - (import "env" "dk" (func $internal596)) - (import "env" "ek" (func $internal597)) - (import "env" "fk" (func $internal598)) - (import "env" "gk" (func $internal599)) - (import "env" "hk" (func $internal600)) - (import "env" "ik" (func $internal601)) - (import "env" "jk" (func $internal602)) - (import "env" "kk" (func $internal603)) - (import "env" "lk" (func $internal604)) - (import "env" "mk" (func $internal605)) - (import "env" "nk" (func $internal606)) - (import "env" "ok" (func $internal607)) - (import "env" "pk" (func $internal608)) - (import "env" "qk" (func $internal609)) - (import "env" "rk" (func $internal610)) - (import "env" "sk" (func $internal611)) - (import "env" "tk" (func $internal612)) - (import "env" "uk" (func $internal613)) - (import "env" "vk" (func $internal614)) - (import "env" "wk" (func $internal615)) - (import "env" "xk" (func $internal616)) - (import "env" "yk" (func $internal617)) - (import "env" "zk" (func $internal618)) - (import "env" "Ak" (func $internal619)) - (import "env" "Bk" (func $internal620)) - (import "env" "Ck" (func $internal621)) - (import "env" "Dk" (func $internal622)) - (import "env" "Ek" (func $internal623)) - (import "env" "Fk" (func $internal624)) - (import "env" "Gk" (func $internal625)) - (import "env" "Hk" (func $internal626)) - (import "env" "Ik" (func $internal627)) - (import "env" "Jk" (func $internal628)) - (import "env" "Kk" (func $internal629)) - (import "env" "Lk" (func $internal630)) - (import "env" "Mk" (func $internal631)) - (import "env" "Nk" (func $internal632)) - (import "env" "Ok" (func $internal633)) - (import "env" "Pk" (func $internal634)) - (import "env" "Qk" (func $internal635)) - (import "env" "Rk" (func $internal636)) - (import "env" "Sk" (func $internal637)) - (import "env" "Tk" (func $internal638)) - (import "env" "Uk" (func $internal639)) - (import "env" "Vk" (func $internal640)) - (import "env" "Wk" (func $internal641)) - (import "env" "Xk" (func $internal642)) - (import "env" "Yk" (func $internal643)) - (import "env" "Zk" (func $internal644)) - (import "env" "_k" (func $internal645)) - (import "env" "$k" (func $internal646)) - (import "env" "al" (func $internal647)) - (import "env" "bl" (func $internal648)) - (import "env" "cl" (func $internal649)) - (import "env" "dl" (func $internal650)) - (import "env" "el" (func $internal651)) - (import "env" "fl" (func $internal652)) - (import "env" "gl" (func $internal653)) - (import "env" "hl" (func $internal654)) - (import "env" "il" (func $internal655)) - (import "env" "jl" (func $internal656)) - (import "env" "kl" (func $internal657)) - (import "env" "ll" (func $internal658)) - (import "env" "ml" (func $internal659)) - (import "env" "nl" (func $internal660)) - (import "env" "ol" (func $internal661)) - (import "env" "pl" (func $internal662)) - (import "env" "ql" (func $internal663)) - (import "env" "rl" (func $internal664)) - (import "env" "sl" (func $internal665)) - (import "env" "tl" (func $internal666)) - (import "env" "ul" (func $internal667)) - (import "env" "vl" (func $internal668)) - (import "env" "wl" (func $internal669)) - (import "env" "xl" (func $internal670)) - (import "env" "yl" (func $internal671)) - (import "env" "zl" (func $internal672)) - (import "env" "Al" (func $internal673)) - (import "env" "Bl" (func $internal674)) - (import "env" "Cl" (func $internal675)) - (import "env" "Dl" (func $internal676)) - (import "env" "El" (func $internal677)) - (import "env" "Fl" (func $internal678)) - (import "env" "Gl" (func $internal679)) - (import "env" "Hl" (func $internal680)) - (import "env" "Il" (func $internal681)) - (import "env" "Jl" (func $internal682)) - (import "env" "Kl" (func $internal683)) - (import "env" "Ll" (func $internal684)) - (import "env" "Ml" (func $internal685)) - (import "env" "Nl" (func $internal686)) - (import "env" "Ol" (func $internal687)) - (import "env" "Pl" (func $internal688)) - (import "env" "Ql" (func $internal689)) - (import "env" "Rl" (func $internal690)) - (import "env" "Sl" (func $internal691)) - (import "env" "Tl" (func $internal692)) - (import "env" "Ul" (func $internal693)) - (import "env" "Vl" (func $internal694)) - (import "env" "Wl" (func $internal695)) - (import "env" "Xl" (func $internal696)) - (import "env" "Yl" (func $internal697)) - (import "env" "Zl" (func $internal698)) - (import "env" "_l" (func $internal699)) - (import "env" "$l" (func $internal700)) - (import "env" "am" (func $internal701)) - (import "env" "bm" (func $internal702)) - (import "env" "cm" (func $internal703)) - (import "env" "dm" (func $internal704)) - (import "env" "em" (func $internal705)) - (import "env" "fm" (func $internal706)) - (import "env" "gm" (func $internal707)) - (import "env" "hm" (func $internal708)) - (import "env" "im" (func $internal709)) - (import "env" "jm" (func $internal710)) - (import "env" "km" (func $internal711)) - (import "env" "lm" (func $internal712)) - (import "env" "mm" (func $internal713)) - (import "env" "nm" (func $internal714)) - (import "env" "om" (func $internal715)) - (import "env" "pm" (func $internal716)) - (import "env" "qm" (func $internal717)) - (import "env" "rm" (func $internal718)) - (import "env" "sm" (func $internal719)) - (import "env" "tm" (func $internal720)) - (import "env" "um" (func $internal721)) - (import "env" "vm" (func $internal722)) - (import "env" "wm" (func $internal723)) - (import "env" "xm" (func $internal724)) - (import "env" "ym" (func $internal725)) - (import "env" "zm" (func $internal726)) - (import "env" "Am" (func $internal727)) - (import "env" "Bm" (func $internal728)) - (import "env" "Cm" (func $internal729)) - (import "env" "Dm" (func $internal730)) - (import "env" "Em" (func $internal731)) - (import "env" "Fm" (func $internal732)) - (import "env" "Gm" (func $internal733)) - (import "env" "Hm" (func $internal734)) - (import "env" "Im" (func $internal735)) - (import "env" "Jm" (func $internal736)) - (import "env" "Km" (func $internal737)) - (import "env" "Lm" (func $internal738)) - (import "env" "Mm" (func $internal739)) - (import "env" "Nm" (func $internal740)) - (import "env" "Om" (func $internal741)) - (import "env" "Pm" (func $internal742)) - (import "env" "Qm" (func $internal743)) - (import "env" "Rm" (func $internal744)) - (import "env" "Sm" (func $internal745)) - (import "env" "Tm" (func $internal746)) - (import "env" "Um" (func $internal747)) - (import "env" "Vm" (func $internal748)) - (import "env" "Wm" (func $internal749)) - (import "env" "Xm" (func $internal750)) - (import "env" "Ym" (func $internal751)) - (import "env" "Zm" (func $internal752)) - (import "env" "_m" (func $internal753)) - (import "env" "$m" (func $internal754)) - (import "env" "an" (func $internal755)) - (import "env" "bn" (func $internal756)) - (import "env" "cn" (func $internal757)) - (import "env" "dn" (func $internal758)) - (import "env" "en" (func $internal759)) - (import "env" "fn" (func $internal760)) - (import "env" "gn" (func $internal761)) - (import "env" "hn" (func $internal762)) - (import "env" "jn" (func $internal763)) - (import "env" "kn" (func $internal764)) - (import "env" "ln" (func $internal765)) - (import "env" "mn" (func $internal766)) - (import "env" "nn" (func $internal767)) - (import "env" "on" (func $internal768)) - (import "env" "pn" (func $internal769)) - (import "env" "qn" (func $internal770)) - (import "env" "rn" (func $internal771)) - (import "env" "sn" (func $internal772)) - (import "env" "tn" (func $internal773)) - (import "env" "un" (func $internal774)) - (import "env" "vn" (func $internal775)) - (import "env" "wn" (func $internal776)) - (import "env" "xn" (func $internal777)) - (import "env" "yn" (func $internal778)) - (import "env" "zn" (func $internal779)) - (import "env" "An" (func $internal780)) - (import "env" "Bn" (func $internal781)) - (import "env" "Cn" (func $internal782)) - (import "env" "Dn" (func $internal783)) - (import "env" "En" (func $internal784)) - (import "env" "Fn" (func $internal785)) - (import "env" "Gn" (func $internal786)) - (import "env" "Hn" (func $internal787)) - (import "env" "In" (func $internal788)) - (import "env" "Jn" (func $internal789)) - (import "env" "Kn" (func $internal790)) - (import "env" "Ln" (func $internal791)) - (import "env" "Mn" (func $internal792)) - (import "env" "Nn" (func $internal793)) - (import "env" "On" (func $internal794)) - (import "env" "Pn" (func $internal795)) - (import "env" "Qn" (func $internal796)) - (import "env" "Rn" (func $internal797)) - (import "env" "Sn" (func $internal798)) - (import "env" "Tn" (func $internal799)) - (import "env" "Un" (func $internal800)) - (import "env" "Vn" (func $internal801)) - (import "env" "Wn" (func $internal802)) - (import "env" "Xn" (func $internal803)) - (import "env" "Yn" (func $internal804)) - (import "env" "Zn" (func $internal805)) - (import "env" "_n" (func $internal806)) - (import "env" "$n" (func $internal807)) - (import "env" "ao" (func $internal808)) - (import "env" "bo" (func $internal809)) - (import "env" "co" (func $internal810)) - (import "env" "eo" (func $internal811)) - (import "env" "fo" (func $internal812)) - (import "env" "go" (func $internal813)) - (import "env" "ho" (func $internal814)) - (import "env" "io" (func $internal815)) - (import "env" "jo" (func $internal816)) - (import "env" "ko" (func $internal817)) - (import "env" "lo" (func $internal818)) - (import "env" "mo" (func $internal819)) - (import "env" "no" (func $internal820)) - (import "env" "oo" (func $internal821)) - (import "env" "po" (func $internal822)) - (import "env" "qo" (func $internal823)) - (import "env" "ro" (func $internal824)) - (import "env" "so" (func $internal825)) - (import "env" "to" (func $internal826)) - (import "env" "uo" (func $internal827)) - (import "env" "vo" (func $internal828)) - (import "env" "wo" (func $internal829)) - (import "env" "xo" (func $internal830)) - (import "env" "yo" (func $internal831)) - (import "env" "zo" (func $internal832)) - (import "env" "Ao" (func $internal833)) - (import "env" "Bo" (func $internal834)) - (import "env" "Co" (func $internal835)) - (import "env" "Do" (func $internal836)) - (import "env" "Eo" (func $internal837)) - (import "env" "Fo" (func $internal838)) - (import "env" "Go" (func $internal839)) - (import "env" "Ho" (func $internal840)) - (import "env" "Io" (func $internal841)) - (import "env" "Jo" (func $internal842)) - (import "env" "Ko" (func $internal843)) - (import "env" "Lo" (func $internal844)) - (import "env" "Mo" (func $internal845)) - (import "env" "No" (func $internal846)) - (import "env" "Oo" (func $internal847)) - (import "env" "Po" (func $internal848)) - (import "env" "Qo" (func $internal849)) - (import "env" "Ro" (func $internal850)) - (import "env" "So" (func $internal851)) - (import "env" "To" (func $internal852)) - (import "env" "Uo" (func $internal853)) - (import "env" "Vo" (func $internal854)) - (import "env" "Wo" (func $internal855)) - (import "env" "Xo" (func $internal856)) - (import "env" "Yo" (func $internal857)) - (import "env" "Zo" (func $internal858)) - (import "env" "_o" (func $internal859)) - (import "env" "$o" (func $internal860)) - (import "env" "ap" (func $internal861)) - (import "env" "bp" (func $internal862)) - (import "env" "cp" (func $internal863)) - (import "env" "dp" (func $internal864)) - (import "env" "ep" (func $internal865)) - (import "env" "fp" (func $internal866)) - (import "env" "gp" (func $internal867)) - (import "env" "hp" (func $internal868)) - (import "env" "ip" (func $internal869)) - (import "env" "jp" (func $internal870)) - (import "env" "kp" (func $internal871)) - (import "env" "lp" (func $internal872)) - (import "env" "mp" (func $internal873)) - (import "env" "np" (func $internal874)) - (import "env" "op" (func $internal875)) - (import "env" "pp" (func $internal876)) - (import "env" "qp" (func $internal877)) - (import "env" "rp" (func $internal878)) - (import "env" "sp" (func $internal879)) - (import "env" "tp" (func $internal880)) - (import "env" "up" (func $internal881)) - (import "env" "vp" (func $internal882)) - (import "env" "wp" (func $internal883)) - (import "env" "xp" (func $internal884)) - (import "env" "yp" (func $internal885)) - (import "env" "zp" (func $internal886)) - (import "env" "Ap" (func $internal887)) - (import "env" "Bp" (func $internal888)) - (import "env" "Cp" (func $internal889)) - (import "env" "Dp" (func $internal890)) - (import "env" "Ep" (func $internal891)) - (import "env" "Fp" (func $internal892)) - (import "env" "Gp" (func $internal893)) - (import "env" "Hp" (func $internal894)) - (import "env" "Ip" (func $internal895)) - (import "env" "Jp" (func $internal896)) - (import "env" "Kp" (func $internal897)) - (import "env" "Lp" (func $internal898)) - (import "env" "Mp" (func $internal899)) - (import "env" "Np" (func $internal900)) - (import "env" "Op" (func $internal901)) - (import "env" "Pp" (func $internal902)) - (import "env" "Qp" (func $internal903)) - (import "env" "Rp" (func $internal904)) - (import "env" "Sp" (func $internal905)) - (import "env" "Tp" (func $internal906)) - (import "env" "Up" (func $internal907)) - (import "env" "Vp" (func $internal908)) - (import "env" "Wp" (func $internal909)) - (import "env" "Xp" (func $internal910)) - (import "env" "Yp" (func $internal911)) - (import "env" "Zp" (func $internal912)) - (import "env" "_p" (func $internal913)) - (import "env" "$p" (func $internal914)) - (import "env" "aq" (func $internal915)) - (import "env" "bq" (func $internal916)) - (import "env" "cq" (func $internal917)) - (import "env" "dq" (func $internal918)) - (import "env" "eq" (func $internal919)) - (import "env" "fq" (func $internal920)) - (import "env" "gq" (func $internal921)) - (import "env" "hq" (func $internal922)) - (import "env" "iq" (func $internal923)) - (import "env" "jq" (func $internal924)) - (import "env" "kq" (func $internal925)) - (import "env" "lq" (func $internal926)) - (import "env" "mq" (func $internal927)) - (import "env" "nq" (func $internal928)) - (import "env" "oq" (func $internal929)) - (import "env" "pq" (func $internal930)) - (import "env" "qq" (func $internal931)) - (import "env" "rq" (func $internal932)) - (import "env" "sq" (func $internal933)) - (import "env" "tq" (func $internal934)) - (import "env" "uq" (func $internal935)) - (import "env" "vq" (func $internal936)) - (import "env" "wq" (func $internal937)) - (import "env" "xq" (func $internal938)) - (import "env" "yq" (func $internal939)) - (import "env" "zq" (func $internal940)) - (import "env" "Aq" (func $internal941)) - (import "env" "Bq" (func $internal942)) - (import "env" "Cq" (func $internal943)) - (import "env" "Dq" (func $internal944)) - (import "env" "Eq" (func $internal945)) - (import "env" "Fq" (func $internal946)) - (import "env" "Gq" (func $internal947)) - (import "env" "Hq" (func $internal948)) - (import "env" "Iq" (func $internal949)) - (import "env" "Jq" (func $internal950)) - (import "env" "Kq" (func $internal951)) - (import "env" "Lq" (func $internal952)) - (import "env" "Mq" (func $internal953)) - (import "env" "Nq" (func $internal954)) - (import "env" "Oq" (func $internal955)) - (import "env" "Pq" (func $internal956)) - (import "env" "Qq" (func $internal957)) - (import "env" "Rq" (func $internal958)) - (import "env" "Sq" (func $internal959)) - (import "env" "Tq" (func $internal960)) - (import "env" "Uq" (func $internal961)) - (import "env" "Vq" (func $internal962)) - (import "env" "Wq" (func $internal963)) - (import "env" "Xq" (func $internal964)) - (import "env" "Yq" (func $internal965)) - (import "env" "Zq" (func $internal966)) - (import "env" "_q" (func $internal967)) - (import "env" "$q" (func $internal968)) - (import "env" "ar" (func $internal969)) - (import "env" "br" (func $internal970)) - (import "env" "cr" (func $internal971)) - (import "env" "dr" (func $internal972)) - (import "env" "er" (func $internal973)) - (import "env" "fr" (func $internal974)) - (import "env" "gr" (func $internal975)) - (import "env" "hr" (func $internal976)) - (import "env" "ir" (func $internal977)) - (import "env" "jr" (func $internal978)) - (import "env" "kr" (func $internal979)) - (import "env" "lr" (func $internal980)) - (import "env" "mr" (func $internal981)) - (import "env" "nr" (func $internal982)) - (import "env" "or" (func $internal983)) - (import "env" "pr" (func $internal984)) - (import "env" "qr" (func $internal985)) - (import "env" "rr" (func $internal986)) - (import "env" "sr" (func $internal987)) - (import "env" "tr" (func $internal988)) - (import "env" "ur" (func $internal989)) - (import "env" "vr" (func $internal990)) - (import "env" "wr" (func $internal991)) - (import "env" "xr" (func $internal992)) - (import "env" "yr" (func $internal993)) - (import "env" "zr" (func $internal994)) - (import "env" "Ar" (func $internal995)) - (import "env" "Br" (func $internal996)) - (import "env" "Cr" (func $internal997)) - (import "env" "Dr" (func $internal998)) - (import "env" "Er" (func $internal999)) - (import "env" "Fr" (func $internal1000)) - (import "env" "Gr" (func $internal1001)) - (import "env" "Hr" (func $internal1002)) - (import "env" "Ir" (func $internal1003)) - (import "env" "Jr" (func $internal1004)) - (import "env" "Kr" (func $internal1005)) - (import "env" "Lr" (func $internal1006)) - (import "env" "Mr" (func $internal1007)) - (import "env" "Nr" (func $internal1008)) - (import "env" "Or" (func $internal1009)) - (import "env" "Pr" (func $internal1010)) - (import "env" "Qr" (func $internal1011)) - (import "env" "Rr" (func $internal1012)) - (import "env" "Sr" (func $internal1013)) - (import "env" "Tr" (func $internal1014)) - (import "env" "Ur" (func $internal1015)) - (import "env" "Vr" (func $internal1016)) - (import "env" "Wr" (func $internal1017)) - (import "env" "Xr" (func $internal1018)) - (import "env" "Yr" (func $internal1019)) - (import "env" "Zr" (func $internal1020)) - (import "env" "_r" (func $internal1021)) - (import "env" "$r" (func $internal1022)) - (import "env" "as" (func $internal1023)) - (import "env" "bs" (func $internal1024)) - (import "env" "cs" (func $internal1025)) - (import "env" "ds" (func $internal1026)) - (import "env" "es" (func $internal1027)) - (import "env" "fs" (func $internal1028)) - (import "env" "gs" (func $internal1029)) - (import "env" "hs" (func $internal1030)) - (import "env" "is" (func $internal1031)) - (import "env" "js" (func $internal1032)) - (import "env" "ks" (func $internal1033)) - (import "env" "ls" (func $internal1034)) - (import "env" "ms" (func $internal1035)) - (import "env" "ns" (func $internal1036)) - (import "env" "os" (func $internal1037)) - (import "env" "ps" (func $internal1038)) - (import "env" "qs" (func $internal1039)) - (import "env" "rs" (func $internal1040)) - (import "env" "ss" (func $internal1041)) - (import "env" "ts" (func $internal1042)) - (import "env" "us" (func $internal1043)) - (import "env" "vs" (func $internal1044)) - (import "env" "ws" (func $internal1045)) - (import "env" "xs" (func $internal1046)) - (import "env" "ys" (func $internal1047)) - (import "env" "zs" (func $internal1048)) - (import "env" "As" (func $internal1049)) - (import "env" "Bs" (func $internal1050)) - (import "env" "Cs" (func $internal1051)) - (import "env" "Ds" (func $internal1052)) - (import "env" "Es" (func $internal1053)) - (import "env" "Fs" (func $internal1054)) - (import "env" "Gs" (func $internal1055)) - (import "env" "Hs" (func $internal1056)) - (import "env" "Is" (func $internal1057)) - (import "env" "Js" (func $internal1058)) - (import "env" "Ks" (func $internal1059)) - (import "env" "Ls" (func $internal1060)) - (import "env" "Ms" (func $internal1061)) - (import "env" "Ns" (func $internal1062)) - (import "env" "Os" (func $internal1063)) - (import "env" "Ps" (func $internal1064)) - (import "env" "Qs" (func $internal1065)) - (import "env" "Rs" (func $internal1066)) - (import "env" "Ss" (func $internal1067)) - (import "env" "Ts" (func $internal1068)) - (import "env" "Us" (func $internal1069)) - (import "env" "Vs" (func $internal1070)) - (import "env" "Ws" (func $internal1071)) - (import "env" "Xs" (func $internal1072)) - (import "env" "Ys" (func $internal1073)) - (import "env" "Zs" (func $internal1074)) - (import "env" "_s" (func $internal1075)) - (import "env" "$s" (func $internal1076)) - (import "env" "at" (func $internal1077)) - (import "env" "bt" (func $internal1078)) - (import "env" "ct" (func $internal1079)) - (import "env" "dt" (func $internal1080)) - (import "env" "et" (func $internal1081)) - (import "env" "ft" (func $internal1082)) - (import "env" "gt" (func $internal1083)) - (import "env" "ht" (func $internal1084)) - (import "env" "it" (func $internal1085)) - (import "env" "jt" (func $internal1086)) - (import "env" "kt" (func $internal1087)) - (import "env" "lt" (func $internal1088)) - (import "env" "mt" (func $internal1089)) - (import "env" "nt" (func $internal1090)) - (import "env" "ot" (func $internal1091)) - (import "env" "pt" (func $internal1092)) - (import "env" "qt" (func $internal1093)) - (import "env" "rt" (func $internal1094)) - (import "env" "st" (func $internal1095)) - (import "env" "tt" (func $internal1096)) - (import "env" "ut" (func $internal1097)) - (import "env" "vt" (func $internal1098)) - (import "env" "wt" (func $internal1099)) - (import "env" "xt" (func $internal1100)) - (import "env" "yt" (func $internal1101)) - (import "env" "zt" (func $internal1102)) - (import "env" "At" (func $internal1103)) - (import "env" "Bt" (func $internal1104)) - (import "env" "Ct" (func $internal1105)) - (import "env" "Dt" (func $internal1106)) - (import "env" "Et" (func $internal1107)) - (import "env" "Ft" (func $internal1108)) - (import "env" "Gt" (func $internal1109)) - (import "env" "Ht" (func $internal1110)) - (import "env" "It" (func $internal1111)) - (import "env" "Jt" (func $internal1112)) - (import "env" "Kt" (func $internal1113)) - (import "env" "Lt" (func $internal1114)) - (import "env" "Mt" (func $internal1115)) - (import "env" "Nt" (func $internal1116)) - (import "env" "Ot" (func $internal1117)) - (import "env" "Pt" (func $internal1118)) - (import "env" "Qt" (func $internal1119)) - (import "env" "Rt" (func $internal1120)) - (import "env" "St" (func $internal1121)) - (import "env" "Tt" (func $internal1122)) - (import "env" "Ut" (func $internal1123)) - (import "env" "Vt" (func $internal1124)) - (import "env" "Wt" (func $internal1125)) - (import "env" "Xt" (func $internal1126)) - (import "env" "Yt" (func $internal1127)) - (import "env" "Zt" (func $internal1128)) - (import "env" "_t" (func $internal1129)) - (import "env" "$t" (func $internal1130)) - (import "env" "au" (func $internal1131)) - (import "env" "bu" (func $internal1132)) - (import "env" "cu" (func $internal1133)) - (import "env" "du" (func $internal1134)) - (import "env" "eu" (func $internal1135)) - (import "env" "fu" (func $internal1136)) - (import "env" "gu" (func $internal1137)) - (import "env" "hu" (func $internal1138)) - (import "env" "iu" (func $internal1139)) - (import "env" "ju" (func $internal1140)) - (import "env" "ku" (func $internal1141)) - (import "env" "lu" (func $internal1142)) - (import "env" "mu" (func $internal1143)) - (import "env" "nu" (func $internal1144)) - (import "env" "ou" (func $internal1145)) - (import "env" "pu" (func $internal1146)) - (import "env" "qu" (func $internal1147)) - (import "env" "ru" (func $internal1148)) - (import "env" "su" (func $internal1149)) - (import "env" "tu" (func $internal1150)) - (import "env" "uu" (func $internal1151)) - (import "env" "vu" (func $internal1152)) - (import "env" "wu" (func $internal1153)) - (import "env" "xu" (func $internal1154)) - (import "env" "yu" (func $internal1155)) - (import "env" "zu" (func $internal1156)) - (import "env" "Au" (func $internal1157)) - (import "env" "Bu" (func $internal1158)) - (import "env" "Cu" (func $internal1159)) - (import "env" "Du" (func $internal1160)) - (import "env" "Eu" (func $internal1161)) - (import "env" "Fu" (func $internal1162)) - (import "env" "Gu" (func $internal1163)) - (import "env" "Hu" (func $internal1164)) - (import "env" "Iu" (func $internal1165)) - (import "env" "Ju" (func $internal1166)) - (import "env" "Ku" (func $internal1167)) - (import "env" "Lu" (func $internal1168)) - (import "env" "Mu" (func $internal1169)) - (import "env" "Nu" (func $internal1170)) - (import "env" "Ou" (func $internal1171)) - (import "env" "Pu" (func $internal1172)) - (import "env" "Qu" (func $internal1173)) - (import "env" "Ru" (func $internal1174)) - (import "env" "Su" (func $internal1175)) - (import "env" "Tu" (func $internal1176)) - (import "env" "Uu" (func $internal1177)) - (import "env" "Vu" (func $internal1178)) - (import "env" "Wu" (func $internal1179)) - (import "env" "Xu" (func $internal1180)) - (import "env" "Yu" (func $internal1181)) - (import "env" "Zu" (func $internal1182)) - (import "env" "_u" (func $internal1183)) - (import "env" "$u" (func $internal1184)) - (import "env" "av" (func $internal1185)) - (import "env" "bv" (func $internal1186)) - (import "env" "cv" (func $internal1187)) - (import "env" "dv" (func $internal1188)) - (import "env" "ev" (func $internal1189)) - (import "env" "fv" (func $internal1190)) - (import "env" "gv" (func $internal1191)) - (import "env" "hv" (func $internal1192)) - (import "env" "iv" (func $internal1193)) - (import "env" "jv" (func $internal1194)) - (import "env" "kv" (func $internal1195)) - (import "env" "lv" (func $internal1196)) - (import "env" "mv" (func $internal1197)) - (import "env" "nv" (func $internal1198)) - (import "env" "ov" (func $internal1199)) - (import "env" "pv" (func $internal1200)) - (import "env" "qv" (func $internal1201)) - (import "env" "rv" (func $internal1202)) - (import "env" "sv" (func $internal1203)) - (import "env" "tv" (func $internal1204)) - (import "env" "uv" (func $internal1205)) - (import "env" "vv" (func $internal1206)) - (import "env" "wv" (func $internal1207)) - (import "env" "xv" (func $internal1208)) - (import "env" "yv" (func $internal1209)) - (import "env" "zv" (func $internal1210)) - (import "env" "Av" (func $internal1211)) - (import "env" "Bv" (func $internal1212)) - (import "env" "Cv" (func $internal1213)) - (import "env" "Dv" (func $internal1214)) - (import "env" "Ev" (func $internal1215)) - (import "env" "Fv" (func $internal1216)) - (import "env" "Gv" (func $internal1217)) - (import "env" "Hv" (func $internal1218)) - (import "env" "Iv" (func $internal1219)) - (import "env" "Jv" (func $internal1220)) - (import "env" "Kv" (func $internal1221)) - (import "env" "Lv" (func $internal1222)) - (import "env" "Mv" (func $internal1223)) - (import "env" "Nv" (func $internal1224)) - (import "env" "Ov" (func $internal1225)) - (import "env" "Pv" (func $internal1226)) - (import "env" "Qv" (func $internal1227)) - (import "env" "Rv" (func $internal1228)) - (import "env" "Sv" (func $internal1229)) - (import "env" "Tv" (func $internal1230)) - (import "env" "Uv" (func $internal1231)) - (import "env" "Vv" (func $internal1232)) - (import "env" "Wv" (func $internal1233)) - (import "env" "Xv" (func $internal1234)) - (import "env" "Yv" (func $internal1235)) - (import "env" "Zv" (func $internal1236)) - (import "env" "_v" (func $internal1237)) - (import "env" "$v" (func $internal1238)) - (import "env" "aw" (func $internal1239)) - (import "env" "bw" (func $internal1240)) - (import "env" "cw" (func $internal1241)) - (import "env" "dw" (func $internal1242)) - (import "env" "ew" (func $internal1243)) - (import "env" "fw" (func $internal1244)) - (import "env" "gw" (func $internal1245)) - (import "env" "hw" (func $internal1246)) - (import "env" "iw" (func $internal1247)) - (import "env" "jw" (func $internal1248)) - (import "env" "kw" (func $internal1249)) - (import "env" "lw" (func $internal1250)) - (import "env" "mw" (func $internal1251)) - (import "env" "nw" (func $internal1252)) - (import "env" "ow" (func $internal1253)) - (import "env" "pw" (func $internal1254)) - (import "env" "qw" (func $internal1255)) - (import "env" "rw" (func $internal1256)) - (import "env" "sw" (func $internal1257)) - (import "env" "tw" (func $internal1258)) - (import "env" "uw" (func $internal1259)) - (import "env" "vw" (func $internal1260)) - (import "env" "ww" (func $internal1261)) - (import "env" "xw" (func $internal1262)) - (import "env" "yw" (func $internal1263)) - (import "env" "zw" (func $internal1264)) - (import "env" "Aw" (func $internal1265)) - (import "env" "Bw" (func $internal1266)) - (import "env" "Cw" (func $internal1267)) - (import "env" "Dw" (func $internal1268)) - (import "env" "Ew" (func $internal1269)) - (import "env" "Fw" (func $internal1270)) - (import "env" "Gw" (func $internal1271)) - (import "env" "Hw" (func $internal1272)) - (import "env" "Iw" (func $internal1273)) - (import "env" "Jw" (func $internal1274)) - (import "env" "Kw" (func $internal1275)) - (import "env" "Lw" (func $internal1276)) - (import "env" "Mw" (func $internal1277)) - (import "env" "Nw" (func $internal1278)) - (import "env" "Ow" (func $internal1279)) - (import "env" "Pw" (func $internal1280)) - (import "env" "Qw" (func $internal1281)) - (import "env" "Rw" (func $internal1282)) - (import "env" "Sw" (func $internal1283)) - (import "env" "Tw" (func $internal1284)) - (import "env" "Uw" (func $internal1285)) - (import "env" "Vw" (func $internal1286)) - (import "env" "Ww" (func $internal1287)) - (import "env" "Xw" (func $internal1288)) - (import "env" "Yw" (func $internal1289)) - (import "env" "Zw" (func $internal1290)) - (import "env" "_w" (func $internal1291)) - (import "env" "$w" (func $internal1292)) - (import "env" "ax" (func $internal1293)) - (import "env" "bx" (func $internal1294)) - (import "env" "cx" (func $internal1295)) - (import "env" "dx" (func $internal1296)) - (import "env" "ex" (func $internal1297)) - (import "env" "fx" (func $internal1298)) - (import "env" "gx" (func $internal1299)) - (import "env" "hx" (func $internal1300)) - (import "env" "ix" (func $internal1301)) - (import "env" "jx" (func $internal1302)) - (import "env" "kx" (func $internal1303)) - (import "env" "lx" (func $internal1304)) - (import "env" "mx" (func $internal1305)) - (import "env" "nx" (func $internal1306)) - (import "env" "ox" (func $internal1307)) - (import "env" "px" (func $internal1308)) - (import "env" "qx" (func $internal1309)) - (import "env" "rx" (func $internal1310)) - (import "env" "sx" (func $internal1311)) - (import "env" "tx" (func $internal1312)) - (import "env" "ux" (func $internal1313)) - (import "env" "vx" (func $internal1314)) - (import "env" "wx" (func $internal1315)) - (import "env" "xx" (func $internal1316)) - (import "env" "yx" (func $internal1317)) - (import "env" "zx" (func $internal1318)) - (import "env" "Ax" (func $internal1319)) - (import "env" "Bx" (func $internal1320)) - (import "env" "Cx" (func $internal1321)) - (import "env" "Dx" (func $internal1322)) - (import "env" "Ex" (func $internal1323)) - (import "env" "Fx" (func $internal1324)) - (import "env" "Gx" (func $internal1325)) - (import "env" "Hx" (func $internal1326)) - (import "env" "Ix" (func $internal1327)) - (import "env" "Jx" (func $internal1328)) - (import "env" "Kx" (func $internal1329)) - (import "env" "Lx" (func $internal1330)) - (import "env" "Mx" (func $internal1331)) - (import "env" "Nx" (func $internal1332)) - (import "env" "Ox" (func $internal1333)) - (import "env" "Px" (func $internal1334)) - (import "env" "Qx" (func $internal1335)) - (import "env" "Rx" (func $internal1336)) - (import "env" "Sx" (func $internal1337)) - (import "env" "Tx" (func $internal1338)) - (import "env" "Ux" (func $internal1339)) - (import "env" "Vx" (func $internal1340)) - (import "env" "Wx" (func $internal1341)) - (import "env" "Xx" (func $internal1342)) - (import "env" "Yx" (func $internal1343)) - (import "env" "Zx" (func $internal1344)) - (import "env" "_x" (func $internal1345)) - (import "env" "$x" (func $internal1346)) - (import "env" "ay" (func $internal1347)) - (import "env" "by" (func $internal1348)) - (import "env" "cy" (func $internal1349)) - (import "env" "dy" (func $internal1350)) - (import "env" "ey" (func $internal1351)) - (import "env" "fy" (func $internal1352)) - (import "env" "gy" (func $internal1353)) - (import "env" "hy" (func $internal1354)) - (import "env" "iy" (func $internal1355)) - (import "env" "jy" (func $internal1356)) - (import "env" "ky" (func $internal1357)) - (import "env" "ly" (func $internal1358)) - (import "env" "my" (func $internal1359)) - (import "env" "ny" (func $internal1360)) - (import "env" "oy" (func $internal1361)) - (import "env" "py" (func $internal1362)) - (import "env" "qy" (func $internal1363)) - (import "env" "ry" (func $internal1364)) - (import "env" "sy" (func $internal1365)) - (import "env" "ty" (func $internal1366)) - (import "env" "uy" (func $internal1367)) - (import "env" "vy" (func $internal1368)) - (import "env" "wy" (func $internal1369)) - (import "env" "xy" (func $internal1370)) - (import "env" "yy" (func $internal1371)) - (import "env" "zy" (func $internal1372)) - (import "env" "Ay" (func $internal1373)) - (import "env" "By" (func $internal1374)) - (import "env" "Cy" (func $internal1375)) - (import "env" "Dy" (func $internal1376)) - (import "env" "Ey" (func $internal1377)) - (import "env" "Fy" (func $internal1378)) - (import "env" "Gy" (func $internal1379)) - (import "env" "Hy" (func $internal1380)) - (import "env" "Iy" (func $internal1381)) - (import "env" "Jy" (func $internal1382)) - (import "env" "Ky" (func $internal1383)) - (import "env" "Ly" (func $internal1384)) - (import "env" "My" (func $internal1385)) - (import "env" "Ny" (func $internal1386)) - (import "env" "Oy" (func $internal1387)) - (import "env" "Py" (func $internal1388)) - (import "env" "Qy" (func $internal1389)) - (import "env" "Ry" (func $internal1390)) - (import "env" "Sy" (func $internal1391)) - (import "env" "Ty" (func $internal1392)) - (import "env" "Uy" (func $internal1393)) - (import "env" "Vy" (func $internal1394)) - (import "env" "Wy" (func $internal1395)) - (import "env" "Xy" (func $internal1396)) - (import "env" "Yy" (func $internal1397)) - (import "env" "Zy" (func $internal1398)) - (import "env" "_y" (func $internal1399)) - (import "env" "$y" (func $internal1400)) - (import "env" "az" (func $internal1401)) - (import "env" "bz" (func $internal1402)) - (import "env" "cz" (func $internal1403)) - (import "env" "dz" (func $internal1404)) - (import "env" "ez" (func $internal1405)) - (import "env" "fz" (func $internal1406)) - (import "env" "gz" (func $internal1407)) - (import "env" "hz" (func $internal1408)) - (import "env" "iz" (func $internal1409)) - (import "env" "jz" (func $internal1410)) - (import "env" "kz" (func $internal1411)) - (import "env" "lz" (func $internal1412)) - (import "env" "mz" (func $internal1413)) - (import "env" "nz" (func $internal1414)) - (import "env" "oz" (func $internal1415)) - (import "env" "pz" (func $internal1416)) - (import "env" "qz" (func $internal1417)) - (import "env" "rz" (func $internal1418)) - (import "env" "sz" (func $internal1419)) - (import "env" "tz" (func $internal1420)) - (import "env" "uz" (func $internal1421)) - (import "env" "vz" (func $internal1422)) - (import "env" "wz" (func $internal1423)) - (import "env" "xz" (func $internal1424)) - (import "env" "yz" (func $internal1425)) - (import "env" "zz" (func $internal1426)) - (import "env" "Az" (func $internal1427)) - (import "env" "Bz" (func $internal1428)) - (import "env" "Cz" (func $internal1429)) - (import "env" "Dz" (func $internal1430)) - (import "env" "Ez" (func $internal1431)) - (import "env" "Fz" (func $internal1432)) - (import "env" "Gz" (func $internal1433)) - (import "env" "Hz" (func $internal1434)) - (import "env" "Iz" (func $internal1435)) - (import "env" "Jz" (func $internal1436)) - (import "env" "Kz" (func $internal1437)) - (import "env" "Lz" (func $internal1438)) - (import "env" "Mz" (func $internal1439)) - (import "env" "Nz" (func $internal1440)) - (import "env" "Oz" (func $internal1441)) - (import "env" "Pz" (func $internal1442)) - (import "env" "Qz" (func $internal1443)) - (import "env" "Rz" (func $internal1444)) - (import "env" "Sz" (func $internal1445)) - (import "env" "Tz" (func $internal1446)) - (import "env" "Uz" (func $internal1447)) - (import "env" "Vz" (func $internal1448)) - (import "env" "Wz" (func $internal1449)) - (import "env" "Xz" (func $internal1450)) - (import "env" "Yz" (func $internal1451)) - (import "env" "Zz" (func $internal1452)) - (import "env" "_z" (func $internal1453)) - (import "env" "$z" (func $internal1454)) - (import "env" "aA" (func $internal1455)) - (import "env" "bA" (func $internal1456)) - (import "env" "cA" (func $internal1457)) - (import "env" "dA" (func $internal1458)) - (import "env" "eA" (func $internal1459)) - (import "env" "fA" (func $internal1460)) - (import "env" "gA" (func $internal1461)) - (import "env" "hA" (func $internal1462)) - (import "env" "iA" (func $internal1463)) - (import "env" "jA" (func $internal1464)) - (import "env" "kA" (func $internal1465)) - (import "env" "lA" (func $internal1466)) - (import "env" "mA" (func $internal1467)) - (import "env" "nA" (func $internal1468)) - (import "env" "oA" (func $internal1469)) - (import "env" "pA" (func $internal1470)) - (import "env" "qA" (func $internal1471)) - (import "env" "rA" (func $internal1472)) - (import "env" "sA" (func $internal1473)) - (import "env" "tA" (func $internal1474)) - (import "env" "uA" (func $internal1475)) - (import "env" "vA" (func $internal1476)) - (import "env" "wA" (func $internal1477)) - (import "env" "xA" (func $internal1478)) - (import "env" "yA" (func $internal1479)) - (import "env" "zA" (func $internal1480)) - (import "env" "AA" (func $internal1481)) - (import "env" "BA" (func $internal1482)) - (import "env" "CA" (func $internal1483)) - (import "env" "DA" (func $internal1484)) - (import "env" "EA" (func $internal1485)) - (import "env" "FA" (func $internal1486)) - (import "env" "GA" (func $internal1487)) - (import "env" "HA" (func $internal1488)) - (import "env" "IA" (func $internal1489)) - (import "env" "JA" (func $internal1490)) - (import "env" "KA" (func $internal1491)) - (import "env" "LA" (func $internal1492)) - (import "env" "MA" (func $internal1493)) - (import "env" "NA" (func $internal1494)) - (import "env" "OA" (func $internal1495)) - (import "env" "PA" (func $internal1496)) - (import "env" "QA" (func $internal1497)) - (import "env" "RA" (func $internal1498)) - (import "env" "SA" (func $internal1499)) - (import "env" "TA" (func $internal1500)) - (import "env" "UA" (func $internal1501)) - (import "env" "VA" (func $internal1502)) - (import "env" "WA" (func $internal1503)) - (import "env" "XA" (func $internal1504)) - (import "env" "YA" (func $internal1505)) - (import "env" "ZA" (func $internal1506)) - (import "env" "_A" (func $internal1507)) - (import "env" "$A" (func $internal1508)) - (import "env" "aB" (func $internal1509)) - (import "env" "bB" (func $internal1510)) - (import "env" "cB" (func $internal1511)) - (import "env" "dB" (func $internal1512)) - (import "env" "eB" (func $internal1513)) - (import "env" "fB" (func $internal1514)) - (import "env" "gB" (func $internal1515)) - (import "env" "hB" (func $internal1516)) - (import "env" "iB" (func $internal1517)) - (import "env" "jB" (func $internal1518)) - (import "env" "kB" (func $internal1519)) - (import "env" "lB" (func $internal1520)) - (import "env" "mB" (func $internal1521)) - (import "env" "nB" (func $internal1522)) - (import "env" "oB" (func $internal1523)) - (import "env" "pB" (func $internal1524)) - (import "env" "qB" (func $internal1525)) - (import "env" "rB" (func $internal1526)) - (import "env" "sB" (func $internal1527)) - (import "env" "tB" (func $internal1528)) - (import "env" "uB" (func $internal1529)) - (import "env" "vB" (func $internal1530)) - (import "env" "wB" (func $internal1531)) - (import "env" "xB" (func $internal1532)) - (import "env" "yB" (func $internal1533)) - (import "env" "zB" (func $internal1534)) - (import "env" "AB" (func $internal1535)) - (import "env" "BB" (func $internal1536)) - (import "env" "CB" (func $internal1537)) - (import "env" "DB" (func $internal1538)) - (import "env" "EB" (func $internal1539)) - (import "env" "FB" (func $internal1540)) - (import "env" "GB" (func $internal1541)) - (import "env" "HB" (func $internal1542)) - (import "env" "IB" (func $internal1543)) - (import "env" "JB" (func $internal1544)) - (import "env" "KB" (func $internal1545)) - (import "env" "LB" (func $internal1546)) - (import "env" "MB" (func $internal1547)) - (import "env" "NB" (func $internal1548)) - (import "env" "OB" (func $internal1549)) - (import "env" "PB" (func $internal1550)) - (import "env" "QB" (func $internal1551)) - (import "env" "RB" (func $internal1552)) - (import "env" "SB" (func $internal1553)) - (import "env" "TB" (func $internal1554)) - (import "env" "UB" (func $internal1555)) - (import "env" "VB" (func $internal1556)) - (import "env" "WB" (func $internal1557)) - (import "env" "XB" (func $internal1558)) - (import "env" "YB" (func $internal1559)) - (import "env" "ZB" (func $internal1560)) - (import "env" "_B" (func $internal1561)) - (import "env" "$B" (func $internal1562)) - (import "env" "aC" (func $internal1563)) - (import "env" "bC" (func $internal1564)) - (import "env" "cC" (func $internal1565)) - (import "env" "dC" (func $internal1566)) - (import "env" "eC" (func $internal1567)) - (import "env" "fC" (func $internal1568)) - (import "env" "gC" (func $internal1569)) - (import "env" "hC" (func $internal1570)) - (import "env" "iC" (func $internal1571)) - (import "env" "jC" (func $internal1572)) - (import "env" "kC" (func $internal1573)) - (import "env" "lC" (func $internal1574)) - (import "env" "mC" (func $internal1575)) - (import "env" "nC" (func $internal1576)) - (import "env" "oC" (func $internal1577)) - (import "env" "pC" (func $internal1578)) - (import "env" "qC" (func $internal1579)) - (import "env" "rC" (func $internal1580)) - (import "env" "sC" (func $internal1581)) - (import "env" "tC" (func $internal1582)) - (import "env" "uC" (func $internal1583)) - (import "env" "vC" (func $internal1584)) - (import "env" "wC" (func $internal1585)) - (import "env" "xC" (func $internal1586)) - (import "env" "yC" (func $internal1587)) - (import "env" "zC" (func $internal1588)) - (import "env" "AC" (func $internal1589)) - (import "env" "BC" (func $internal1590)) - (import "env" "CC" (func $internal1591)) - (import "env" "DC" (func $internal1592)) - (import "env" "EC" (func $internal1593)) - (import "env" "FC" (func $internal1594)) - (import "env" "GC" (func $internal1595)) - (import "env" "HC" (func $internal1596)) - (import "env" "IC" (func $internal1597)) - (import "env" "JC" (func $internal1598)) - (import "env" "KC" (func $internal1599)) - (import "env" "LC" (func $internal1600)) - (import "env" "MC" (func $internal1601)) - (import "env" "NC" (func $internal1602)) - (import "env" "OC" (func $internal1603)) - (import "env" "PC" (func $internal1604)) - (import "env" "QC" (func $internal1605)) - (import "env" "RC" (func $internal1606)) - (import "env" "SC" (func $internal1607)) - (import "env" "TC" (func $internal1608)) - (import "env" "UC" (func $internal1609)) - (import "env" "VC" (func $internal1610)) - (import "env" "WC" (func $internal1611)) - (import "env" "XC" (func $internal1612)) - (import "env" "YC" (func $internal1613)) - (import "env" "ZC" (func $internal1614)) - (import "env" "_C" (func $internal1615)) - (import "env" "$C" (func $internal1616)) - (import "env" "aD" (func $internal1617)) - (import "env" "bD" (func $internal1618)) - (import "env" "cD" (func $internal1619)) - (import "env" "dD" (func $internal1620)) - (import "env" "eD" (func $internal1621)) - (import "env" "fD" (func $internal1622)) - (import "env" "gD" (func $internal1623)) - (import "env" "hD" (func $internal1624)) - (import "env" "iD" (func $internal1625)) - (import "env" "jD" (func $internal1626)) - (import "env" "kD" (func $internal1627)) - (import "env" "lD" (func $internal1628)) - (import "env" "mD" (func $internal1629)) - (import "env" "nD" (func $internal1630)) - (import "env" "oD" (func $internal1631)) - (import "env" "pD" (func $internal1632)) - (import "env" "qD" (func $internal1633)) - (import "env" "rD" (func $internal1634)) - (import "env" "sD" (func $internal1635)) - (import "env" "tD" (func $internal1636)) - (import "env" "uD" (func $internal1637)) - (import "env" "vD" (func $internal1638)) - (import "env" "wD" (func $internal1639)) - (import "env" "xD" (func $internal1640)) - (import "env" "yD" (func $internal1641)) - (import "env" "zD" (func $internal1642)) - (import "env" "AD" (func $internal1643)) - (import "env" "BD" (func $internal1644)) - (import "env" "CD" (func $internal1645)) - (import "env" "DD" (func $internal1646)) - (import "env" "ED" (func $internal1647)) - (import "env" "FD" (func $internal1648)) - (import "env" "GD" (func $internal1649)) - (import "env" "HD" (func $internal1650)) - (import "env" "ID" (func $internal1651)) - (import "env" "JD" (func $internal1652)) - (import "env" "KD" (func $internal1653)) - (import "env" "LD" (func $internal1654)) - (import "env" "MD" (func $internal1655)) - (import "env" "ND" (func $internal1656)) - (import "env" "OD" (func $internal1657)) - (import "env" "PD" (func $internal1658)) - (import "env" "QD" (func $internal1659)) - (import "env" "RD" (func $internal1660)) - (import "env" "SD" (func $internal1661)) - (import "env" "TD" (func $internal1662)) - (import "env" "UD" (func $internal1663)) - (import "env" "VD" (func $internal1664)) - (import "env" "WD" (func $internal1665)) - (import "env" "XD" (func $internal1666)) - (import "env" "YD" (func $internal1667)) - (import "env" "ZD" (func $internal1668)) - (import "env" "_D" (func $internal1669)) - (import "env" "$D" (func $internal1670)) - (import "env" "aE" (func $internal1671)) - (import "env" "bE" (func $internal1672)) - (import "env" "cE" (func $internal1673)) - (import "env" "dE" (func $internal1674)) - (import "env" "eE" (func $internal1675)) - (import "env" "fE" (func $internal1676)) - (import "env" "gE" (func $internal1677)) - (import "env" "hE" (func $internal1678)) - (import "env" "iE" (func $internal1679)) - (import "env" "jE" (func $internal1680)) - (import "env" "kE" (func $internal1681)) - (import "env" "lE" (func $internal1682)) - (import "env" "mE" (func $internal1683)) - (import "env" "nE" (func $internal1684)) - (import "env" "oE" (func $internal1685)) - (import "env" "pE" (func $internal1686)) - (import "env" "qE" (func $internal1687)) - (import "env" "rE" (func $internal1688)) - (import "env" "sE" (func $internal1689)) - (import "env" "tE" (func $internal1690)) - (import "env" "uE" (func $internal1691)) - (import "env" "vE" (func $internal1692)) - (import "env" "wE" (func $internal1693)) - (import "env" "xE" (func $internal1694)) - (import "env" "yE" (func $internal1695)) - (import "env" "zE" (func $internal1696)) - (import "env" "AE" (func $internal1697)) - (import "env" "BE" (func $internal1698)) - (import "env" "CE" (func $internal1699)) - (import "env" "DE" (func $internal1700)) - (import "env" "EE" (func $internal1701)) - (import "env" "FE" (func $internal1702)) - (import "env" "GE" (func $internal1703)) - (import "env" "HE" (func $internal1704)) - (import "env" "IE" (func $internal1705)) - (import "env" "JE" (func $internal1706)) - (import "env" "KE" (func $internal1707)) - (import "env" "LE" (func $internal1708)) - (import "env" "ME" (func $internal1709)) - (import "env" "NE" (func $internal1710)) - (import "env" "OE" (func $internal1711)) - (import "env" "PE" (func $internal1712)) - (import "env" "QE" (func $internal1713)) - (import "env" "RE" (func $internal1714)) - (import "env" "SE" (func $internal1715)) - (import "env" "TE" (func $internal1716)) - (import "env" "UE" (func $internal1717)) - (import "env" "VE" (func $internal1718)) - (import "env" "WE" (func $internal1719)) - (import "env" "XE" (func $internal1720)) - (import "env" "YE" (func $internal1721)) - (import "env" "ZE" (func $internal1722)) - (import "env" "_E" (func $internal1723)) - (import "env" "$E" (func $internal1724)) - (import "env" "aF" (func $internal1725)) - (import "env" "bF" (func $internal1726)) - (import "env" "cF" (func $internal1727)) - (import "env" "dF" (func $internal1728)) - (import "env" "eF" (func $internal1729)) - (import "env" "fF" (func $internal1730)) - (import "env" "gF" (func $internal1731)) - (import "env" "hF" (func $internal1732)) - (import "env" "iF" (func $internal1733)) - (import "env" "jF" (func $internal1734)) - (import "env" "kF" (func $internal1735)) - (import "env" "lF" (func $internal1736)) - (import "env" "mF" (func $internal1737)) - (import "env" "nF" (func $internal1738)) - (import "env" "oF" (func $internal1739)) - (import "env" "pF" (func $internal1740)) - (import "env" "qF" (func $internal1741)) - (import "env" "rF" (func $internal1742)) - (import "env" "sF" (func $internal1743)) - (import "env" "tF" (func $internal1744)) - (import "env" "uF" (func $internal1745)) - (import "env" "vF" (func $internal1746)) - (import "env" "wF" (func $internal1747)) - (import "env" "xF" (func $internal1748)) - (import "env" "yF" (func $internal1749)) - (import "env" "zF" (func $internal1750)) - (import "env" "AF" (func $internal1751)) - (import "env" "BF" (func $internal1752)) - (import "env" "CF" (func $internal1753)) - (import "env" "DF" (func $internal1754)) - (import "env" "EF" (func $internal1755)) - (import "env" "FF" (func $internal1756)) - (import "env" "GF" (func $internal1757)) - (import "env" "HF" (func $internal1758)) - (import "env" "IF" (func $internal1759)) - (import "env" "JF" (func $internal1760)) - (import "env" "KF" (func $internal1761)) - (import "env" "LF" (func $internal1762)) - (import "env" "MF" (func $internal1763)) - (import "env" "NF" (func $internal1764)) - (import "env" "OF" (func $internal1765)) - (import "env" "PF" (func $internal1766)) - (import "env" "QF" (func $internal1767)) - (import "env" "RF" (func $internal1768)) - (import "env" "SF" (func $internal1769)) - (import "env" "TF" (func $internal1770)) - (import "env" "UF" (func $internal1771)) - (import "env" "VF" (func $internal1772)) - (import "env" "WF" (func $internal1773)) - (import "env" "XF" (func $internal1774)) - (import "env" "YF" (func $internal1775)) - (import "env" "ZF" (func $internal1776)) - (import "env" "_F" (func $internal1777)) - (import "env" "$F" (func $internal1778)) - (import "env" "aG" (func $internal1779)) - (import "env" "bG" (func $internal1780)) - (import "env" "cG" (func $internal1781)) - (import "env" "dG" (func $internal1782)) - (import "env" "eG" (func $internal1783)) - (import "env" "fG" (func $internal1784)) - (import "env" "gG" (func $internal1785)) - (import "env" "hG" (func $internal1786)) - (import "env" "iG" (func $internal1787)) - (import "env" "jG" (func $internal1788)) - (import "env" "kG" (func $internal1789)) - (import "env" "lG" (func $internal1790)) - (import "env" "mG" (func $internal1791)) - (import "env" "nG" (func $internal1792)) - (import "env" "oG" (func $internal1793)) - (import "env" "pG" (func $internal1794)) - (import "env" "qG" (func $internal1795)) - (import "env" "rG" (func $internal1796)) - (import "env" "sG" (func $internal1797)) - (import "env" "tG" (func $internal1798)) - (import "env" "uG" (func $internal1799)) - (import "env" "vG" (func $internal1800)) - (import "env" "wG" (func $internal1801)) - (import "env" "xG" (func $internal1802)) - (import "env" "yG" (func $internal1803)) - (import "env" "zG" (func $internal1804)) - (import "env" "AG" (func $internal1805)) - (import "env" "BG" (func $internal1806)) - (import "env" "CG" (func $internal1807)) - (import "env" "DG" (func $internal1808)) - (import "env" "EG" (func $internal1809)) - (import "env" "FG" (func $internal1810)) - (import "env" "GG" (func $internal1811)) - (import "env" "HG" (func $internal1812)) - (import "env" "IG" (func $internal1813)) - (import "env" "JG" (func $internal1814)) - (import "env" "KG" (func $internal1815)) - (import "env" "LG" (func $internal1816)) - (import "env" "MG" (func $internal1817)) - (import "env" "NG" (func $internal1818)) - (import "env" "OG" (func $internal1819)) - (import "env" "PG" (func $internal1820)) - (import "env" "QG" (func $internal1821)) - (import "env" "RG" (func $internal1822)) - (import "env" "SG" (func $internal1823)) - (import "env" "TG" (func $internal1824)) - (import "env" "UG" (func $internal1825)) - (import "env" "VG" (func $internal1826)) - (import "env" "WG" (func $internal1827)) - (import "env" "XG" (func $internal1828)) - (import "env" "YG" (func $internal1829)) - (import "env" "ZG" (func $internal1830)) - (import "env" "_G" (func $internal1831)) - (import "env" "$G" (func $internal1832)) - (import "env" "aH" (func $internal1833)) - (import "env" "bH" (func $internal1834)) - (import "env" "cH" (func $internal1835)) - (import "env" "dH" (func $internal1836)) - (import "env" "eH" (func $internal1837)) - (import "env" "fH" (func $internal1838)) - (import "env" "gH" (func $internal1839)) - (import "env" "hH" (func $internal1840)) - (import "env" "iH" (func $internal1841)) - (import "env" "jH" (func $internal1842)) - (import "env" "kH" (func $internal1843)) - (import "env" "lH" (func $internal1844)) - (import "env" "mH" (func $internal1845)) - (import "env" "nH" (func $internal1846)) - (import "env" "oH" (func $internal1847)) - (import "env" "pH" (func $internal1848)) - (import "env" "qH" (func $internal1849)) - (import "env" "rH" (func $internal1850)) - (import "env" "sH" (func $internal1851)) - (import "env" "tH" (func $internal1852)) - (import "env" "uH" (func $internal1853)) - (import "env" "vH" (func $internal1854)) - (import "env" "wH" (func $internal1855)) - (import "env" "xH" (func $internal1856)) - (import "env" "yH" (func $internal1857)) - (import "env" "zH" (func $internal1858)) - (import "env" "AH" (func $internal1859)) - (import "env" "BH" (func $internal1860)) - (import "env" "CH" (func $internal1861)) - (import "env" "DH" (func $internal1862)) - (import "env" "EH" (func $internal1863)) - (import "env" "FH" (func $internal1864)) - (import "env" "GH" (func $internal1865)) - (import "env" "HH" (func $internal1866)) - (import "env" "IH" (func $internal1867)) - (import "env" "JH" (func $internal1868)) - (import "env" "KH" (func $internal1869)) - (import "env" "LH" (func $internal1870)) - (import "env" "MH" (func $internal1871)) - (import "env" "NH" (func $internal1872)) - (import "env" "OH" (func $internal1873)) - (import "env" "PH" (func $internal1874)) - (import "env" "QH" (func $internal1875)) - (import "env" "RH" (func $internal1876)) - (import "env" "SH" (func $internal1877)) - (import "env" "TH" (func $internal1878)) - (import "env" "UH" (func $internal1879)) - (import "env" "VH" (func $internal1880)) - (import "env" "WH" (func $internal1881)) - (import "env" "XH" (func $internal1882)) - (import "env" "YH" (func $internal1883)) - (import "env" "ZH" (func $internal1884)) - (import "env" "_H" (func $internal1885)) - (import "env" "$H" (func $internal1886)) - (import "env" "aI" (func $internal1887)) - (import "env" "bI" (func $internal1888)) - (import "env" "cI" (func $internal1889)) - (import "env" "dI" (func $internal1890)) - (import "env" "eI" (func $internal1891)) - (import "env" "fI" (func $internal1892)) - (import "env" "gI" (func $internal1893)) - (import "env" "hI" (func $internal1894)) - (import "env" "iI" (func $internal1895)) - (import "env" "jI" (func $internal1896)) - (import "env" "kI" (func $internal1897)) - (import "env" "lI" (func $internal1898)) - (import "env" "mI" (func $internal1899)) - (import "env" "nI" (func $internal1900)) - (import "env" "oI" (func $internal1901)) - (import "env" "pI" (func $internal1902)) - (import "env" "qI" (func $internal1903)) - (import "env" "rI" (func $internal1904)) - (import "env" "sI" (func $internal1905)) - (import "env" "tI" (func $internal1906)) - (import "env" "uI" (func $internal1907)) - (import "env" "vI" (func $internal1908)) - (import "env" "wI" (func $internal1909)) - (import "env" "xI" (func $internal1910)) - (import "env" "yI" (func $internal1911)) - (import "env" "zI" (func $internal1912)) - (import "env" "AI" (func $internal1913)) - (import "env" "BI" (func $internal1914)) - (import "env" "CI" (func $internal1915)) - (import "env" "DI" (func $internal1916)) - (import "env" "EI" (func $internal1917)) - (import "env" "FI" (func $internal1918)) - (import "env" "GI" (func $internal1919)) - (import "env" "HI" (func $internal1920)) - (import "env" "II" (func $internal1921)) - (import "env" "JI" (func $internal1922)) - (import "env" "KI" (func $internal1923)) - (import "env" "LI" (func $internal1924)) - (import "env" "MI" (func $internal1925)) - (import "env" "NI" (func $internal1926)) - (import "env" "OI" (func $internal1927)) - (import "env" "PI" (func $internal1928)) - (import "env" "QI" (func $internal1929)) - (import "env" "RI" (func $internal1930)) - (import "env" "SI" (func $internal1931)) - (import "env" "TI" (func $internal1932)) - (import "env" "UI" (func $internal1933)) - (import "env" "VI" (func $internal1934)) - (import "env" "WI" (func $internal1935)) - (import "env" "XI" (func $internal1936)) - (import "env" "YI" (func $internal1937)) - (import "env" "ZI" (func $internal1938)) - (import "env" "_I" (func $internal1939)) - (import "env" "$I" (func $internal1940)) - (import "env" "aJ" (func $internal1941)) - (import "env" "bJ" (func $internal1942)) - (import "env" "cJ" (func $internal1943)) - (import "env" "dJ" (func $internal1944)) - (import "env" "eJ" (func $internal1945)) - (import "env" "fJ" (func $internal1946)) - (import "env" "gJ" (func $internal1947)) - (import "env" "hJ" (func $internal1948)) - (import "env" "iJ" (func $internal1949)) - (import "env" "jJ" (func $internal1950)) - (import "env" "kJ" (func $internal1951)) - (import "env" "lJ" (func $internal1952)) - (import "env" "mJ" (func $internal1953)) - (import "env" "nJ" (func $internal1954)) - (import "env" "oJ" (func $internal1955)) - (import "env" "pJ" (func $internal1956)) - (import "env" "qJ" (func $internal1957)) - (import "env" "rJ" (func $internal1958)) - (import "env" "sJ" (func $internal1959)) - (import "env" "tJ" (func $internal1960)) - (import "env" "uJ" (func $internal1961)) - (import "env" "vJ" (func $internal1962)) - (import "env" "wJ" (func $internal1963)) - (import "env" "xJ" (func $internal1964)) - (import "env" "yJ" (func $internal1965)) - (import "env" "zJ" (func $internal1966)) - (import "env" "AJ" (func $internal1967)) - (import "env" "BJ" (func $internal1968)) - (import "env" "CJ" (func $internal1969)) - (import "env" "DJ" (func $internal1970)) - (import "env" "EJ" (func $internal1971)) - (import "env" "FJ" (func $internal1972)) - (import "env" "GJ" (func $internal1973)) - (import "env" "HJ" (func $internal1974)) - (import "env" "IJ" (func $internal1975)) - (import "env" "JJ" (func $internal1976)) - (import "env" "KJ" (func $internal1977)) - (import "env" "LJ" (func $internal1978)) - (import "env" "MJ" (func $internal1979)) - (import "env" "NJ" (func $internal1980)) - (import "env" "OJ" (func $internal1981)) - (import "env" "PJ" (func $internal1982)) - (import "env" "QJ" (func $internal1983)) - (import "env" "RJ" (func $internal1984)) - (import "env" "SJ" (func $internal1985)) - (import "env" "TJ" (func $internal1986)) - (import "env" "UJ" (func $internal1987)) - (import "env" "VJ" (func $internal1988)) - (import "env" "WJ" (func $internal1989)) - (import "env" "XJ" (func $internal1990)) - (import "env" "YJ" (func $internal1991)) - (import "env" "ZJ" (func $internal1992)) - (import "env" "_J" (func $internal1993)) - (import "env" "$J" (func $internal1994)) - (import "env" "aK" (func $internal1995)) - (import "env" "bK" (func $internal1996)) - (import "env" "cK" (func $internal1997)) - (import "env" "dK" (func $internal1998)) - (import "env" "eK" (func $internal1999)) - (import "env" "fK" (func $internal2000)) - (import "env" "gK" (func $internal2001)) - (import "env" "hK" (func $internal2002)) - (import "env" "iK" (func $internal2003)) - (import "env" "jK" (func $internal2004)) - (import "env" "kK" (func $internal2005)) - (import "env" "lK" (func $internal2006)) - (import "env" "mK" (func $internal2007)) - (import "env" "nK" (func $internal2008)) - (import "env" "oK" (func $internal2009)) - (import "env" "pK" (func $internal2010)) - (import "env" "qK" (func $internal2011)) - (import "env" "rK" (func $internal2012)) - (import "env" "sK" (func $internal2013)) - (import "env" "tK" (func $internal2014)) - (import "env" "uK" (func $internal2015)) - (import "env" "vK" (func $internal2016)) - (import "env" "wK" (func $internal2017)) - (import "env" "xK" (func $internal2018)) - (import "env" "yK" (func $internal2019)) - (import "env" "zK" (func $internal2020)) - (import "env" "AK" (func $internal2021)) - (import "env" "BK" (func $internal2022)) - (import "env" "CK" (func $internal2023)) - (import "env" "DK" (func $internal2024)) - (import "env" "EK" (func $internal2025)) - (import "env" "FK" (func $internal2026)) - (import "env" "GK" (func $internal2027)) - (import "env" "HK" (func $internal2028)) - (import "env" "IK" (func $internal2029)) - (import "env" "JK" (func $internal2030)) - (import "env" "KK" (func $internal2031)) - (import "env" "LK" (func $internal2032)) - (import "env" "MK" (func $internal2033)) - (import "env" "NK" (func $internal2034)) - (import "env" "OK" (func $internal2035)) - (import "env" "PK" (func $internal2036)) - (import "env" "QK" (func $internal2037)) - (import "env" "RK" (func $internal2038)) - (import "env" "SK" (func $internal2039)) - (import "env" "TK" (func $internal2040)) - (import "env" "UK" (func $internal2041)) - (import "env" "VK" (func $internal2042)) - (import "env" "WK" (func $internal2043)) - (import "env" "XK" (func $internal2044)) - (import "env" "YK" (func $internal2045)) - (import "env" "ZK" (func $internal2046)) - (import "env" "_K" (func $internal2047)) - (import "env" "$K" (func $internal2048)) - (import "env" "aL" (func $internal2049)) - (import "env" "bL" (func $internal2050)) - (import "env" "cL" (func $internal2051)) - (import "env" "dL" (func $internal2052)) - (import "env" "eL" (func $internal2053)) - (import "env" "fL" (func $internal2054)) - (import "env" "gL" (func $internal2055)) - (import "env" "hL" (func $internal2056)) - (import "env" "iL" (func $internal2057)) - (import "env" "jL" (func $internal2058)) - (import "env" "kL" (func $internal2059)) - (import "env" "lL" (func $internal2060)) - (import "env" "mL" (func $internal2061)) - (import "env" "nL" (func $internal2062)) - (import "env" "oL" (func $internal2063)) - (import "env" "pL" (func $internal2064)) - (import "env" "qL" (func $internal2065)) - (import "env" "rL" (func $internal2066)) - (import "env" "sL" (func $internal2067)) - (import "env" "tL" (func $internal2068)) - (import "env" "uL" (func $internal2069)) - (import "env" "vL" (func $internal2070)) - (import "env" "wL" (func $internal2071)) - (import "env" "xL" (func $internal2072)) - (import "env" "yL" (func $internal2073)) - (import "env" "zL" (func $internal2074)) - (import "env" "AL" (func $internal2075)) - (import "env" "BL" (func $internal2076)) - (import "env" "CL" (func $internal2077)) - (import "env" "DL" (func $internal2078)) - (import "env" "EL" (func $internal2079)) - (import "env" "FL" (func $internal2080)) - (import "env" "GL" (func $internal2081)) - (import "env" "HL" (func $internal2082)) - (import "env" "IL" (func $internal2083)) - (import "env" "JL" (func $internal2084)) - (import "env" "KL" (func $internal2085)) - (import "env" "LL" (func $internal2086)) - (import "env" "ML" (func $internal2087)) - (import "env" "NL" (func $internal2088)) - (import "env" "OL" (func $internal2089)) - (import "env" "PL" (func $internal2090)) - (import "env" "QL" (func $internal2091)) - (import "env" "RL" (func $internal2092)) - (import "env" "SL" (func $internal2093)) - (import "env" "TL" (func $internal2094)) - (import "env" "UL" (func $internal2095)) - (import "env" "VL" (func $internal2096)) - (import "env" "WL" (func $internal2097)) - (import "env" "XL" (func $internal2098)) - (import "env" "YL" (func $internal2099)) - (import "env" "ZL" (func $internal2100)) - (import "env" "_L" (func $internal2101)) - (import "env" "$L" (func $internal2102)) - (import "env" "aM" (func $internal2103)) - (import "env" "bM" (func $internal2104)) - (import "env" "cM" (func $internal2105)) - (import "env" "dM" (func $internal2106)) - (import "env" "eM" (func $internal2107)) - (import "env" "fM" (func $internal2108)) - (import "env" "gM" (func $internal2109)) - (import "env" "hM" (func $internal2110)) - (import "env" "iM" (func $internal2111)) - (import "env" "jM" (func $internal2112)) - (import "env" "kM" (func $internal2113)) - (import "env" "lM" (func $internal2114)) - (import "env" "mM" (func $internal2115)) - (import "env" "nM" (func $internal2116)) - (import "env" "oM" (func $internal2117)) - (import "env" "pM" (func $internal2118)) - (import "env" "qM" (func $internal2119)) - (import "env" "rM" (func $internal2120)) - (import "env" "sM" (func $internal2121)) - (import "env" "tM" (func $internal2122)) - (import "env" "uM" (func $internal2123)) - (import "env" "vM" (func $internal2124)) - (import "env" "wM" (func $internal2125)) - (import "env" "xM" (func $internal2126)) - (import "env" "yM" (func $internal2127)) - (import "env" "zM" (func $internal2128)) - (import "env" "AM" (func $internal2129)) - (import "env" "BM" (func $internal2130)) - (import "env" "CM" (func $internal2131)) - (import "env" "DM" (func $internal2132)) - (import "env" "EM" (func $internal2133)) - (import "env" "FM" (func $internal2134)) - (import "env" "GM" (func $internal2135)) - (import "env" "HM" (func $internal2136)) - (import "env" "IM" (func $internal2137)) - (import "env" "JM" (func $internal2138)) - (import "env" "KM" (func $internal2139)) - (import "env" "LM" (func $internal2140)) - (import "env" "MM" (func $internal2141)) - (import "env" "NM" (func $internal2142)) - (import "env" "OM" (func $internal2143)) - (import "env" "PM" (func $internal2144)) - (import "env" "QM" (func $internal2145)) - (import "env" "RM" (func $internal2146)) - (import "env" "SM" (func $internal2147)) - (import "env" "TM" (func $internal2148)) - (import "env" "UM" (func $internal2149)) - (import "env" "VM" (func $internal2150)) - (import "env" "WM" (func $internal2151)) - (import "env" "XM" (func $internal2152)) - (import "env" "YM" (func $internal2153)) - (import "env" "ZM" (func $internal2154)) - (import "env" "_M" (func $internal2155)) - (import "env" "$M" (func $internal2156)) - (import "env" "aN" (func $internal2157)) - (import "env" "bN" (func $internal2158)) - (import "env" "cN" (func $internal2159)) - (import "env" "dN" (func $internal2160)) - (import "env" "eN" (func $internal2161)) - (import "env" "fN" (func $internal2162)) - (import "env" "gN" (func $internal2163)) - (import "env" "hN" (func $internal2164)) - (import "env" "iN" (func $internal2165)) - (import "env" "jN" (func $internal2166)) - (import "env" "kN" (func $internal2167)) - (import "env" "lN" (func $internal2168)) - (import "env" "mN" (func $internal2169)) - (import "env" "nN" (func $internal2170)) - (import "env" "oN" (func $internal2171)) - (import "env" "pN" (func $internal2172)) - (import "env" "qN" (func $internal2173)) - (import "env" "rN" (func $internal2174)) - (import "env" "sN" (func $internal2175)) - (import "env" "tN" (func $internal2176)) - (import "env" "uN" (func $internal2177)) - (import "env" "vN" (func $internal2178)) - (import "env" "wN" (func $internal2179)) - (import "env" "xN" (func $internal2180)) - (import "env" "yN" (func $internal2181)) - (import "env" "zN" (func $internal2182)) - (import "env" "AN" (func $internal2183)) - (import "env" "BN" (func $internal2184)) - (import "env" "CN" (func $internal2185)) - (import "env" "DN" (func $internal2186)) - (import "env" "EN" (func $internal2187)) - (import "env" "FN" (func $internal2188)) - (import "env" "GN" (func $internal2189)) - (import "env" "HN" (func $internal2190)) - (import "env" "IN" (func $internal2191)) - (import "env" "JN" (func $internal2192)) - (import "env" "KN" (func $internal2193)) - (import "env" "LN" (func $internal2194)) - (import "env" "MN" (func $internal2195)) - (import "env" "NN" (func $internal2196)) - (import "env" "ON" (func $internal2197)) - (import "env" "PN" (func $internal2198)) - (import "env" "QN" (func $internal2199)) - (import "env" "RN" (func $internal2200)) - (import "env" "SN" (func $internal2201)) - (import "env" "TN" (func $internal2202)) - (import "env" "UN" (func $internal2203)) - (import "env" "VN" (func $internal2204)) - (import "env" "WN" (func $internal2205)) - (import "env" "XN" (func $internal2206)) - (import "env" "YN" (func $internal2207)) - (import "env" "ZN" (func $internal2208)) - (import "env" "_N" (func $internal2209)) - (import "env" "$N" (func $internal2210)) - (import "env" "aO" (func $internal2211)) - (import "env" "bO" (func $internal2212)) - (import "env" "cO" (func $internal2213)) - (import "env" "dO" (func $internal2214)) - (import "env" "eO" (func $internal2215)) - (import "env" "fO" (func $internal2216)) - (import "env" "gO" (func $internal2217)) - (import "env" "hO" (func $internal2218)) - (import "env" "iO" (func $internal2219)) - (import "env" "jO" (func $internal2220)) - (import "env" "kO" (func $internal2221)) - (import "env" "lO" (func $internal2222)) - (import "env" "mO" (func $internal2223)) - (import "env" "nO" (func $internal2224)) - (import "env" "oO" (func $internal2225)) - (import "env" "pO" (func $internal2226)) - (import "env" "qO" (func $internal2227)) - (import "env" "rO" (func $internal2228)) - (import "env" "sO" (func $internal2229)) - (import "env" "tO" (func $internal2230)) - (import "env" "uO" (func $internal2231)) - (import "env" "vO" (func $internal2232)) - (import "env" "wO" (func $internal2233)) - (import "env" "xO" (func $internal2234)) - (import "env" "yO" (func $internal2235)) - (import "env" "zO" (func $internal2236)) - (import "env" "AO" (func $internal2237)) - (import "env" "BO" (func $internal2238)) - (import "env" "CO" (func $internal2239)) - (import "env" "DO" (func $internal2240)) - (import "env" "EO" (func $internal2241)) - (import "env" "FO" (func $internal2242)) - (import "env" "GO" (func $internal2243)) - (import "env" "HO" (func $internal2244)) - (import "env" "IO" (func $internal2245)) - (import "env" "JO" (func $internal2246)) - (import "env" "KO" (func $internal2247)) - (import "env" "LO" (func $internal2248)) - (import "env" "MO" (func $internal2249)) - (import "env" "NO" (func $internal2250)) - (import "env" "OO" (func $internal2251)) - (import "env" "PO" (func $internal2252)) - (import "env" "QO" (func $internal2253)) - (import "env" "RO" (func $internal2254)) - (import "env" "SO" (func $internal2255)) - (import "env" "TO" (func $internal2256)) - (import "env" "UO" (func $internal2257)) - (import "env" "VO" (func $internal2258)) - (import "env" "WO" (func $internal2259)) - (import "env" "XO" (func $internal2260)) - (import "env" "YO" (func $internal2261)) - (import "env" "ZO" (func $internal2262)) - (import "env" "_O" (func $internal2263)) - (import "env" "$O" (func $internal2264)) - (import "env" "aP" (func $internal2265)) - (import "env" "bP" (func $internal2266)) - (import "env" "cP" (func $internal2267)) - (import "env" "dP" (func $internal2268)) - (import "env" "eP" (func $internal2269)) - (import "env" "fP" (func $internal2270)) - (import "env" "gP" (func $internal2271)) - (import "env" "hP" (func $internal2272)) - (import "env" "iP" (func $internal2273)) - (import "env" "jP" (func $internal2274)) - (import "env" "kP" (func $internal2275)) - (import "env" "lP" (func $internal2276)) - (import "env" "mP" (func $internal2277)) - (import "env" "nP" (func $internal2278)) - (import "env" "oP" (func $internal2279)) - (import "env" "pP" (func $internal2280)) - (import "env" "qP" (func $internal2281)) - (import "env" "rP" (func $internal2282)) - (import "env" "sP" (func $internal2283)) - (import "env" "tP" (func $internal2284)) - (import "env" "uP" (func $internal2285)) - (import "env" "vP" (func $internal2286)) - (import "env" "wP" (func $internal2287)) - (import "env" "xP" (func $internal2288)) - (import "env" "yP" (func $internal2289)) - (import "env" "zP" (func $internal2290)) - (import "env" "AP" (func $internal2291)) - (import "env" "BP" (func $internal2292)) - (import "env" "CP" (func $internal2293)) - (import "env" "DP" (func $internal2294)) - (import "env" "EP" (func $internal2295)) - (import "env" "FP" (func $internal2296)) - (import "env" "GP" (func $internal2297)) - (import "env" "HP" (func $internal2298)) - (import "env" "IP" (func $internal2299)) - (import "env" "JP" (func $internal2300)) - (import "env" "KP" (func $internal2301)) - (import "env" "LP" (func $internal2302)) - (import "env" "MP" (func $internal2303)) - (import "env" "NP" (func $internal2304)) - (import "env" "OP" (func $internal2305)) - (import "env" "PP" (func $internal2306)) - (import "env" "QP" (func $internal2307)) - (import "env" "RP" (func $internal2308)) - (import "env" "SP" (func $internal2309)) - (import "env" "TP" (func $internal2310)) - (import "env" "UP" (func $internal2311)) - (import "env" "VP" (func $internal2312)) - (import "env" "WP" (func $internal2313)) - (import "env" "XP" (func $internal2314)) - (import "env" "YP" (func $internal2315)) - (import "env" "ZP" (func $internal2316)) - (import "env" "_P" (func $internal2317)) - (import "env" "$P" (func $internal2318)) - (import "env" "aQ" (func $internal2319)) - (import "env" "bQ" (func $internal2320)) - (import "env" "cQ" (func $internal2321)) - (import "env" "dQ" (func $internal2322)) - (import "env" "eQ" (func $internal2323)) - (import "env" "fQ" (func $internal2324)) - (import "env" "gQ" (func $internal2325)) - (import "env" "hQ" (func $internal2326)) - (import "env" "iQ" (func $internal2327)) - (import "env" "jQ" (func $internal2328)) - (import "env" "kQ" (func $internal2329)) - (import "env" "lQ" (func $internal2330)) - (import "env" "mQ" (func $internal2331)) - (import "env" "nQ" (func $internal2332)) - (import "env" "oQ" (func $internal2333)) - (import "env" "pQ" (func $internal2334)) - (import "env" "qQ" (func $internal2335)) - (import "env" "rQ" (func $internal2336)) - (import "env" "sQ" (func $internal2337)) - (import "env" "tQ" (func $internal2338)) - (import "env" "uQ" (func $internal2339)) - (import "env" "vQ" (func $internal2340)) - (import "env" "wQ" (func $internal2341)) - (import "env" "xQ" (func $internal2342)) - (import "env" "yQ" (func $internal2343)) - (import "env" "zQ" (func $internal2344)) - (import "env" "AQ" (func $internal2345)) - (import "env" "BQ" (func $internal2346)) - (import "env" "CQ" (func $internal2347)) - (import "env" "DQ" (func $internal2348)) - (import "env" "EQ" (func $internal2349)) - (import "env" "FQ" (func $internal2350)) - (import "env" "GQ" (func $internal2351)) - (import "env" "HQ" (func $internal2352)) - (import "env" "IQ" (func $internal2353)) - (import "env" "JQ" (func $internal2354)) - (import "env" "KQ" (func $internal2355)) - (import "env" "LQ" (func $internal2356)) - (import "env" "MQ" (func $internal2357)) - (import "env" "NQ" (func $internal2358)) - (import "env" "OQ" (func $internal2359)) - (import "env" "PQ" (func $internal2360)) - (import "env" "QQ" (func $internal2361)) - (import "env" "RQ" (func $internal2362)) - (import "env" "SQ" (func $internal2363)) - (import "env" "TQ" (func $internal2364)) - (import "env" "UQ" (func $internal2365)) - (import "env" "VQ" (func $internal2366)) - (import "env" "WQ" (func $internal2367)) - (import "env" "XQ" (func $internal2368)) - (import "env" "YQ" (func $internal2369)) - (import "env" "ZQ" (func $internal2370)) - (import "env" "_Q" (func $internal2371)) - (import "env" "$Q" (func $internal2372)) - (import "env" "aR" (func $internal2373)) - (import "env" "bR" (func $internal2374)) - (import "env" "cR" (func $internal2375)) - (import "env" "dR" (func $internal2376)) - (import "env" "eR" (func $internal2377)) - (import "env" "fR" (func $internal2378)) - (import "env" "gR" (func $internal2379)) - (import "env" "hR" (func $internal2380)) - (import "env" "iR" (func $internal2381)) - (import "env" "jR" (func $internal2382)) - (import "env" "kR" (func $internal2383)) - (import "env" "lR" (func $internal2384)) - (import "env" "mR" (func $internal2385)) - (import "env" "nR" (func $internal2386)) - (import "env" "oR" (func $internal2387)) - (import "env" "pR" (func $internal2388)) - (import "env" "qR" (func $internal2389)) - (import "env" "rR" (func $internal2390)) - (import "env" "sR" (func $internal2391)) - (import "env" "tR" (func $internal2392)) - (import "env" "uR" (func $internal2393)) - (import "env" "vR" (func $internal2394)) - (import "env" "wR" (func $internal2395)) - (import "env" "xR" (func $internal2396)) - (import "env" "yR" (func $internal2397)) - (import "env" "zR" (func $internal2398)) - (import "env" "AR" (func $internal2399)) - (import "env" "BR" (func $internal2400)) - (import "env" "CR" (func $internal2401)) - (import "env" "DR" (func $internal2402)) - (import "env" "ER" (func $internal2403)) - (import "env" "FR" (func $internal2404)) - (import "env" "GR" (func $internal2405)) - (import "env" "HR" (func $internal2406)) - (import "env" "IR" (func $internal2407)) - (import "env" "JR" (func $internal2408)) - (import "env" "KR" (func $internal2409)) - (import "env" "LR" (func $internal2410)) - (import "env" "MR" (func $internal2411)) - (import "env" "NR" (func $internal2412)) - (import "env" "OR" (func $internal2413)) - (import "env" "PR" (func $internal2414)) - (import "env" "QR" (func $internal2415)) - (import "env" "RR" (func $internal2416)) - (import "env" "SR" (func $internal2417)) - (import "env" "TR" (func $internal2418)) - (import "env" "UR" (func $internal2419)) - (import "env" "VR" (func $internal2420)) - (import "env" "WR" (func $internal2421)) - (import "env" "XR" (func $internal2422)) - (import "env" "YR" (func $internal2423)) - (import "env" "ZR" (func $internal2424)) - (import "env" "_R" (func $internal2425)) - (import "env" "$R" (func $internal2426)) - (import "env" "aS" (func $internal2427)) - (import "env" "bS" (func $internal2428)) - (import "env" "cS" (func $internal2429)) - (import "env" "dS" (func $internal2430)) - (import "env" "eS" (func $internal2431)) - (import "env" "fS" (func $internal2432)) - (import "env" "gS" (func $internal2433)) - (import "env" "hS" (func $internal2434)) - (import "env" "iS" (func $internal2435)) - (import "env" "jS" (func $internal2436)) - (import "env" "kS" (func $internal2437)) - (import "env" "lS" (func $internal2438)) - (import "env" "mS" (func $internal2439)) - (import "env" "nS" (func $internal2440)) - (import "env" "oS" (func $internal2441)) - (import "env" "pS" (func $internal2442)) - (import "env" "qS" (func $internal2443)) - (import "env" "rS" (func $internal2444)) - (import "env" "sS" (func $internal2445)) - (import "env" "tS" (func $internal2446)) - (import "env" "uS" (func $internal2447)) - (import "env" "vS" (func $internal2448)) - (import "env" "wS" (func $internal2449)) - (import "env" "xS" (func $internal2450)) - (import "env" "yS" (func $internal2451)) - (import "env" "zS" (func $internal2452)) - (import "env" "AS" (func $internal2453)) - (import "env" "BS" (func $internal2454)) - (import "env" "CS" (func $internal2455)) - (import "env" "DS" (func $internal2456)) - (import "env" "ES" (func $internal2457)) - (import "env" "FS" (func $internal2458)) - (import "env" "GS" (func $internal2459)) - (import "env" "HS" (func $internal2460)) - (import "env" "IS" (func $internal2461)) - (import "env" "JS" (func $internal2462)) - (import "env" "KS" (func $internal2463)) - (import "env" "LS" (func $internal2464)) - (import "env" "MS" (func $internal2465)) - (import "env" "NS" (func $internal2466)) - (import "env" "OS" (func $internal2467)) - (import "env" "PS" (func $internal2468)) - (import "env" "QS" (func $internal2469)) - (import "env" "RS" (func $internal2470)) - (import "env" "SS" (func $internal2471)) - (import "env" "TS" (func $internal2472)) - (import "env" "US" (func $internal2473)) - (import "env" "VS" (func $internal2474)) - (import "env" "WS" (func $internal2475)) - (import "env" "XS" (func $internal2476)) - (import "env" "YS" (func $internal2477)) - (import "env" "ZS" (func $internal2478)) - (import "env" "_S" (func $internal2479)) - (import "env" "$S" (func $internal2480)) - (import "env" "aT" (func $internal2481)) - (import "env" "bT" (func $internal2482)) - (import "env" "cT" (func $internal2483)) - (import "env" "dT" (func $internal2484)) - (import "env" "eT" (func $internal2485)) - (import "env" "fT" (func $internal2486)) - (import "env" "gT" (func $internal2487)) - (import "env" "hT" (func $internal2488)) - (import "env" "iT" (func $internal2489)) - (import "env" "jT" (func $internal2490)) - (import "env" "kT" (func $internal2491)) - (import "env" "lT" (func $internal2492)) - (import "env" "mT" (func $internal2493)) - (import "env" "nT" (func $internal2494)) - (import "env" "oT" (func $internal2495)) - (import "env" "pT" (func $internal2496)) - (import "env" "qT" (func $internal2497)) - (import "env" "rT" (func $internal2498)) - (import "env" "sT" (func $internal2499)) - (import "env" "tT" (func $internal2500)) - (import "env" "uT" (func $internal2501)) - (import "env" "vT" (func $internal2502)) - (import "env" "wT" (func $internal2503)) - (import "env" "xT" (func $internal2504)) - (import "env" "yT" (func $internal2505)) - (import "env" "zT" (func $internal2506)) - (import "env" "AT" (func $internal2507)) - (import "env" "BT" (func $internal2508)) - (import "env" "CT" (func $internal2509)) - (import "env" "DT" (func $internal2510)) - (import "env" "ET" (func $internal2511)) - (import "env" "FT" (func $internal2512)) - (import "env" "GT" (func $internal2513)) - (import "env" "HT" (func $internal2514)) - (import "env" "IT" (func $internal2515)) - (import "env" "JT" (func $internal2516)) - (import "env" "KT" (func $internal2517)) - (import "env" "LT" (func $internal2518)) - (import "env" "MT" (func $internal2519)) - (import "env" "NT" (func $internal2520)) - (import "env" "OT" (func $internal2521)) - (import "env" "PT" (func $internal2522)) - (import "env" "QT" (func $internal2523)) - (import "env" "RT" (func $internal2524)) - (import "env" "ST" (func $internal2525)) - (import "env" "TT" (func $internal2526)) - (import "env" "UT" (func $internal2527)) - (import "env" "VT" (func $internal2528)) - (import "env" "WT" (func $internal2529)) - (import "env" "XT" (func $internal2530)) - (import "env" "YT" (func $internal2531)) - (import "env" "ZT" (func $internal2532)) - (import "env" "_T" (func $internal2533)) - (import "env" "$T" (func $internal2534)) - (import "env" "aU" (func $internal2535)) - (import "env" "bU" (func $internal2536)) - (import "env" "cU" (func $internal2537)) - (import "env" "dU" (func $internal2538)) - (import "env" "eU" (func $internal2539)) - (import "env" "fU" (func $internal2540)) - (import "env" "gU" (func $internal2541)) - (import "env" "hU" (func $internal2542)) - (import "env" "iU" (func $internal2543)) - (import "env" "jU" (func $internal2544)) - (import "env" "kU" (func $internal2545)) - (import "env" "lU" (func $internal2546)) - (import "env" "mU" (func $internal2547)) - (import "env" "nU" (func $internal2548)) - (import "env" "oU" (func $internal2549)) - (import "env" "pU" (func $internal2550)) - (import "env" "qU" (func $internal2551)) - (import "env" "rU" (func $internal2552)) - (import "env" "sU" (func $internal2553)) - (import "env" "tU" (func $internal2554)) - (import "env" "uU" (func $internal2555)) - (import "env" "vU" (func $internal2556)) - (import "env" "wU" (func $internal2557)) - (import "env" "xU" (func $internal2558)) - (import "env" "yU" (func $internal2559)) - (import "env" "zU" (func $internal2560)) - (import "env" "AU" (func $internal2561)) - (import "env" "BU" (func $internal2562)) - (import "env" "CU" (func $internal2563)) - (import "env" "DU" (func $internal2564)) - (import "env" "EU" (func $internal2565)) - (import "env" "FU" (func $internal2566)) - (import "env" "GU" (func $internal2567)) - (import "env" "HU" (func $internal2568)) - (import "env" "IU" (func $internal2569)) - (import "env" "JU" (func $internal2570)) - (import "env" "KU" (func $internal2571)) - (import "env" "LU" (func $internal2572)) - (import "env" "MU" (func $internal2573)) - (import "env" "NU" (func $internal2574)) - (import "env" "OU" (func $internal2575)) - (import "env" "PU" (func $internal2576)) - (import "env" "QU" (func $internal2577)) - (import "env" "RU" (func $internal2578)) - (import "env" "SU" (func $internal2579)) - (import "env" "TU" (func $internal2580)) - (import "env" "UU" (func $internal2581)) - (import "env" "VU" (func $internal2582)) - (import "env" "WU" (func $internal2583)) - (import "env" "XU" (func $internal2584)) - (import "env" "YU" (func $internal2585)) - (import "env" "ZU" (func $internal2586)) - (import "env" "_U" (func $internal2587)) - (import "env" "$U" (func $internal2588)) - (import "env" "aV" (func $internal2589)) - (import "env" "bV" (func $internal2590)) - (import "env" "cV" (func $internal2591)) - (import "env" "dV" (func $internal2592)) - (import "env" "eV" (func $internal2593)) - (import "env" "fV" (func $internal2594)) - (import "env" "gV" (func $internal2595)) - (import "env" "hV" (func $internal2596)) - (import "env" "iV" (func $internal2597)) - (import "env" "jV" (func $internal2598)) - (import "env" "kV" (func $internal2599)) - (import "env" "lV" (func $internal2600)) - (import "env" "mV" (func $internal2601)) - (import "env" "nV" (func $internal2602)) - (import "env" "oV" (func $internal2603)) - (import "env" "pV" (func $internal2604)) - (import "env" "qV" (func $internal2605)) - (import "env" "rV" (func $internal2606)) - (import "env" "sV" (func $internal2607)) - (import "env" "tV" (func $internal2608)) - (import "env" "uV" (func $internal2609)) - (import "env" "vV" (func $internal2610)) - (import "env" "wV" (func $internal2611)) - (import "env" "xV" (func $internal2612)) - (import "env" "yV" (func $internal2613)) - (import "env" "zV" (func $internal2614)) - (import "env" "AV" (func $internal2615)) - (import "env" "BV" (func $internal2616)) - (import "env" "CV" (func $internal2617)) - (import "env" "DV" (func $internal2618)) - (import "env" "EV" (func $internal2619)) - (import "env" "FV" (func $internal2620)) - (import "env" "GV" (func $internal2621)) - (import "env" "HV" (func $internal2622)) - (import "env" "IV" (func $internal2623)) - (import "env" "JV" (func $internal2624)) - (import "env" "KV" (func $internal2625)) - (import "env" "LV" (func $internal2626)) - (import "env" "MV" (func $internal2627)) - (import "env" "NV" (func $internal2628)) - (import "env" "OV" (func $internal2629)) - (import "env" "PV" (func $internal2630)) - (import "env" "QV" (func $internal2631)) - (import "env" "RV" (func $internal2632)) - (import "env" "SV" (func $internal2633)) - (import "env" "TV" (func $internal2634)) - (import "env" "UV" (func $internal2635)) - (import "env" "VV" (func $internal2636)) - (import "env" "WV" (func $internal2637)) - (import "env" "XV" (func $internal2638)) - (import "env" "YV" (func $internal2639)) - (import "env" "ZV" (func $internal2640)) - (import "env" "_V" (func $internal2641)) - (import "env" "$V" (func $internal2642)) - (import "env" "aW" (func $internal2643)) - (import "env" "bW" (func $internal2644)) - (import "env" "cW" (func $internal2645)) - (import "env" "dW" (func $internal2646)) - (import "env" "eW" (func $internal2647)) - (import "env" "fW" (func $internal2648)) - (import "env" "gW" (func $internal2649)) - (import "env" "hW" (func $internal2650)) - (import "env" "iW" (func $internal2651)) - (import "env" "jW" (func $internal2652)) - (import "env" "kW" (func $internal2653)) - (import "env" "lW" (func $internal2654)) - (import "env" "mW" (func $internal2655)) - (import "env" "nW" (func $internal2656)) - (import "env" "oW" (func $internal2657)) - (import "env" "pW" (func $internal2658)) - (import "env" "qW" (func $internal2659)) - (import "env" "rW" (func $internal2660)) - (import "env" "sW" (func $internal2661)) - (import "env" "tW" (func $internal2662)) - (import "env" "uW" (func $internal2663)) - (import "env" "vW" (func $internal2664)) - (import "env" "wW" (func $internal2665)) - (import "env" "xW" (func $internal2666)) - (import "env" "yW" (func $internal2667)) - (import "env" "zW" (func $internal2668)) - (import "env" "AW" (func $internal2669)) - (import "env" "BW" (func $internal2670)) - (import "env" "CW" (func $internal2671)) - (import "env" "DW" (func $internal2672)) - (import "env" "EW" (func $internal2673)) - (import "env" "FW" (func $internal2674)) - (import "env" "GW" (func $internal2675)) - (import "env" "HW" (func $internal2676)) - (import "env" "IW" (func $internal2677)) - (import "env" "JW" (func $internal2678)) - (import "env" "KW" (func $internal2679)) - (import "env" "LW" (func $internal2680)) - (import "env" "MW" (func $internal2681)) - (import "env" "NW" (func $internal2682)) - (import "env" "OW" (func $internal2683)) - (import "env" "PW" (func $internal2684)) - (import "env" "QW" (func $internal2685)) - (import "env" "RW" (func $internal2686)) - (import "env" "SW" (func $internal2687)) - (import "env" "TW" (func $internal2688)) - (import "env" "UW" (func $internal2689)) - (import "env" "VW" (func $internal2690)) - (import "env" "WW" (func $internal2691)) - (import "env" "XW" (func $internal2692)) - (import "env" "YW" (func $internal2693)) - (import "env" "ZW" (func $internal2694)) - (import "env" "_W" (func $internal2695)) - (import "env" "$W" (func $internal2696)) - (import "env" "aX" (func $internal2697)) - (import "env" "bX" (func $internal2698)) - (import "env" "cX" (func $internal2699)) - (import "env" "dX" (func $internal2700)) - (import "env" "eX" (func $internal2701)) - (import "env" "fX" (func $internal2702)) - (import "env" "gX" (func $internal2703)) - (import "env" "hX" (func $internal2704)) - (import "env" "iX" (func $internal2705)) - (import "env" "jX" (func $internal2706)) - (import "env" "kX" (func $internal2707)) - (import "env" "lX" (func $internal2708)) - (import "env" "mX" (func $internal2709)) - (import "env" "nX" (func $internal2710)) - (import "env" "oX" (func $internal2711)) - (import "env" "pX" (func $internal2712)) - (import "env" "qX" (func $internal2713)) - (import "env" "rX" (func $internal2714)) - (import "env" "sX" (func $internal2715)) - (import "env" "tX" (func $internal2716)) - (import "env" "uX" (func $internal2717)) - (import "env" "vX" (func $internal2718)) - (import "env" "wX" (func $internal2719)) - (import "env" "xX" (func $internal2720)) - (import "env" "yX" (func $internal2721)) - (import "env" "zX" (func $internal2722)) - (import "env" "AX" (func $internal2723)) - (import "env" "BX" (func $internal2724)) - (import "env" "CX" (func $internal2725)) - (import "env" "DX" (func $internal2726)) - (import "env" "EX" (func $internal2727)) - (import "env" "FX" (func $internal2728)) - (import "env" "GX" (func $internal2729)) - (import "env" "HX" (func $internal2730)) - (import "env" "IX" (func $internal2731)) - (import "env" "JX" (func $internal2732)) - (import "env" "KX" (func $internal2733)) - (import "env" "LX" (func $internal2734)) - (import "env" "MX" (func $internal2735)) - (import "env" "NX" (func $internal2736)) - (import "env" "OX" (func $internal2737)) - (import "env" "PX" (func $internal2738)) - (import "env" "QX" (func $internal2739)) - (import "env" "RX" (func $internal2740)) - (import "env" "SX" (func $internal2741)) - (import "env" "TX" (func $internal2742)) - (import "env" "UX" (func $internal2743)) - (import "env" "VX" (func $internal2744)) - (import "env" "WX" (func $internal2745)) - (import "env" "XX" (func $internal2746)) - (import "env" "YX" (func $internal2747)) - (import "env" "ZX" (func $internal2748)) - (import "env" "_X" (func $internal2749)) - (import "env" "$X" (func $internal2750)) - (import "env" "aY" (func $internal2751)) - (import "env" "bY" (func $internal2752)) - (import "env" "cY" (func $internal2753)) - (import "env" "dY" (func $internal2754)) - (import "env" "eY" (func $internal2755)) - (import "env" "fY" (func $internal2756)) - (import "env" "gY" (func $internal2757)) - (import "env" "hY" (func $internal2758)) - (import "env" "iY" (func $internal2759)) - (import "env" "jY" (func $internal2760)) - (import "env" "kY" (func $internal2761)) - (import "env" "lY" (func $internal2762)) - (import "env" "mY" (func $internal2763)) - (import "env" "nY" (func $internal2764)) - (import "env" "oY" (func $internal2765)) - (import "env" "pY" (func $internal2766)) - (import "env" "qY" (func $internal2767)) - (import "env" "rY" (func $internal2768)) - (import "env" "sY" (func $internal2769)) - (import "env" "tY" (func $internal2770)) - (import "env" "uY" (func $internal2771)) - (import "env" "vY" (func $internal2772)) - (import "env" "wY" (func $internal2773)) - (import "env" "xY" (func $internal2774)) - (import "env" "yY" (func $internal2775)) - (import "env" "zY" (func $internal2776)) - (import "env" "AY" (func $internal2777)) - (import "env" "BY" (func $internal2778)) - (import "env" "CY" (func $internal2779)) - (import "env" "DY" (func $internal2780)) - (import "env" "EY" (func $internal2781)) - (import "env" "FY" (func $internal2782)) - (import "env" "GY" (func $internal2783)) - (import "env" "HY" (func $internal2784)) - (import "env" "IY" (func $internal2785)) - (import "env" "JY" (func $internal2786)) - (import "env" "KY" (func $internal2787)) - (import "env" "LY" (func $internal2788)) - (import "env" "MY" (func $internal2789)) - (import "env" "NY" (func $internal2790)) - (import "env" "OY" (func $internal2791)) - (import "env" "PY" (func $internal2792)) - (import "env" "QY" (func $internal2793)) - (import "env" "RY" (func $internal2794)) - (import "env" "SY" (func $internal2795)) - (import "env" "TY" (func $internal2796)) - (import "env" "UY" (func $internal2797)) - (import "env" "VY" (func $internal2798)) - (import "env" "WY" (func $internal2799)) - (import "env" "XY" (func $internal2800)) - (import "env" "YY" (func $internal2801)) - (import "env" "ZY" (func $internal2802)) - (import "env" "_Y" (func $internal2803)) - (import "env" "$Y" (func $internal2804)) - (import "env" "aZ" (func $internal2805)) - (import "env" "bZ" (func $internal2806)) - (import "env" "cZ" (func $internal2807)) - (import "env" "dZ" (func $internal2808)) - (import "env" "eZ" (func $internal2809)) - (import "env" "fZ" (func $internal2810)) - (import "env" "gZ" (func $internal2811)) - (import "env" "hZ" (func $internal2812)) - (import "env" "iZ" (func $internal2813)) - (import "env" "jZ" (func $internal2814)) - (import "env" "kZ" (func $internal2815)) - (import "env" "lZ" (func $internal2816)) - (import "env" "mZ" (func $internal2817)) - (import "env" "nZ" (func $internal2818)) - (import "env" "oZ" (func $internal2819)) - (import "env" "pZ" (func $internal2820)) - (import "env" "qZ" (func $internal2821)) - (import "env" "rZ" (func $internal2822)) - (import "env" "sZ" (func $internal2823)) - (import "env" "tZ" (func $internal2824)) - (import "env" "uZ" (func $internal2825)) - (import "env" "vZ" (func $internal2826)) - (import "env" "wZ" (func $internal2827)) - (import "env" "xZ" (func $internal2828)) - (import "env" "yZ" (func $internal2829)) - (import "env" "zZ" (func $internal2830)) - (import "env" "AZ" (func $internal2831)) - (import "env" "BZ" (func $internal2832)) - (import "env" "CZ" (func $internal2833)) - (import "env" "DZ" (func $internal2834)) - (import "env" "EZ" (func $internal2835)) - (import "env" "FZ" (func $internal2836)) - (import "env" "GZ" (func $internal2837)) - (import "env" "HZ" (func $internal2838)) - (import "env" "IZ" (func $internal2839)) - (import "env" "JZ" (func $internal2840)) - (import "env" "KZ" (func $internal2841)) - (import "env" "LZ" (func $internal2842)) - (import "env" "MZ" (func $internal2843)) - (import "env" "NZ" (func $internal2844)) - (import "env" "OZ" (func $internal2845)) - (import "env" "PZ" (func $internal2846)) - (import "env" "QZ" (func $internal2847)) - (import "env" "RZ" (func $internal2848)) - (import "env" "SZ" (func $internal2849)) - (import "env" "TZ" (func $internal2850)) - (import "env" "UZ" (func $internal2851)) - (import "env" "VZ" (func $internal2852)) - (import "env" "WZ" (func $internal2853)) - (import "env" "XZ" (func $internal2854)) - (import "env" "YZ" (func $internal2855)) - (import "env" "ZZ" (func $internal2856)) - (import "env" "_Z" (func $internal2857)) - (import "env" "$Z" (func $internal2858)) - (import "env" "a_" (func $internal2859)) - (import "env" "b_" (func $internal2860)) - (import "env" "c_" (func $internal2861)) - (import "env" "d_" (func $internal2862)) - (import "env" "e_" (func $internal2863)) - (import "env" "f_" (func $internal2864)) - (import "env" "g_" (func $internal2865)) - (import "env" "h_" (func $internal2866)) - (import "env" "i_" (func $internal2867)) - (import "env" "j_" (func $internal2868)) - (import "env" "k_" (func $internal2869)) - (import "env" "l_" (func $internal2870)) - (import "env" "m_" (func $internal2871)) - (import "env" "n_" (func $internal2872)) - (import "env" "o_" (func $internal2873)) - (import "env" "p_" (func $internal2874)) - (import "env" "q_" (func $internal2875)) - (import "env" "r_" (func $internal2876)) - (import "env" "s_" (func $internal2877)) - (import "env" "t_" (func $internal2878)) - (import "env" "u_" (func $internal2879)) - (import "env" "v_" (func $internal2880)) - (import "env" "w_" (func $internal2881)) - (import "env" "x_" (func $internal2882)) - (import "env" "y_" (func $internal2883)) - (import "env" "z_" (func $internal2884)) - (import "env" "A_" (func $internal2885)) - (import "env" "B_" (func $internal2886)) - (import "env" "C_" (func $internal2887)) - (import "env" "D_" (func $internal2888)) - (import "env" "E_" (func $internal2889)) - (import "env" "F_" (func $internal2890)) - (import "env" "G_" (func $internal2891)) - (import "env" "H_" (func $internal2892)) - (import "env" "I_" (func $internal2893)) - (import "env" "J_" (func $internal2894)) - (import "env" "K_" (func $internal2895)) - (import "env" "L_" (func $internal2896)) - (import "env" "M_" (func $internal2897)) - (import "env" "N_" (func $internal2898)) - (import "env" "O_" (func $internal2899)) - (import "env" "P_" (func $internal2900)) - (import "env" "Q_" (func $internal2901)) - (import "env" "R_" (func $internal2902)) - (import "env" "S_" (func $internal2903)) - (import "env" "T_" (func $internal2904)) - (import "env" "U_" (func $internal2905)) - (import "env" "V_" (func $internal2906)) - (import "env" "W_" (func $internal2907)) - (import "env" "X_" (func $internal2908)) - (import "env" "Y_" (func $internal2909)) - (import "env" "Z_" (func $internal2910)) - (import "env" "__" (func $internal2911)) - (import "env" "$_" (func $internal2912)) - (import "env" "a$" (func $internal2913)) - (import "env" "b$" (func $internal2914)) - (import "env" "c$" (func $internal2915)) - (import "env" "d$" (func $internal2916)) - (import "env" "e$" (func $internal2917)) - (import "env" "f$" (func $internal2918)) - (import "env" "g$" (func $internal2919)) - (import "env" "h$" (func $internal2920)) - (import "env" "i$" (func $internal2921)) - (import "env" "j$" (func $internal2922)) - (import "env" "k$" (func $internal2923)) - (import "env" "l$" (func $internal2924)) - (import "env" "m$" (func $internal2925)) - (import "env" "n$" (func $internal2926)) - (import "env" "o$" (func $internal2927)) - (import "env" "p$" (func $internal2928)) - (import "env" "q$" (func $internal2929)) - (import "env" "r$" (func $internal2930)) - (import "env" "s$" (func $internal2931)) - (import "env" "t$" (func $internal2932)) - (import "env" "u$" (func $internal2933)) - (import "env" "v$" (func $internal2934)) - (import "env" "w$" (func $internal2935)) - (import "env" "x$" (func $internal2936)) - (import "env" "y$" (func $internal2937)) - (import "env" "z$" (func $internal2938)) - (import "env" "A$" (func $internal2939)) - (import "env" "B$" (func $internal2940)) - (import "env" "C$" (func $internal2941)) - (import "env" "D$" (func $internal2942)) - (import "env" "E$" (func $internal2943)) - (import "env" "F$" (func $internal2944)) - (import "env" "G$" (func $internal2945)) - (import "env" "H$" (func $internal2946)) - (import "env" "I$" (func $internal2947)) - (import "env" "J$" (func $internal2948)) - (import "env" "K$" (func $internal2949)) - (import "env" "L$" (func $internal2950)) - (import "env" "M$" (func $internal2951)) - (import "env" "N$" (func $internal2952)) - (import "env" "O$" (func $internal2953)) - (import "env" "P$" (func $internal2954)) - (import "env" "Q$" (func $internal2955)) - (import "env" "R$" (func $internal2956)) - (import "env" "S$" (func $internal2957)) - (import "env" "T$" (func $internal2958)) - (import "env" "U$" (func $internal2959)) - (import "env" "V$" (func $internal2960)) - (import "env" "W$" (func $internal2961)) - (import "env" "X$" (func $internal2962)) - (import "env" "Y$" (func $internal2963)) - (import "env" "Z$" (func $internal2964)) - (import "env" "_$" (func $internal2965)) - (import "env" "$$" (func $internal2966)) - (import "env" "a0" (func $internal2967)) - (import "env" "b0" (func $internal2968)) - (import "env" "c0" (func $internal2969)) - (import "env" "d0" (func $internal2970)) - (import "env" "e0" (func $internal2971)) - (import "env" "f0" (func $internal2972)) - (import "env" "g0" (func $internal2973)) - (import "env" "h0" (func $internal2974)) - (import "env" "i0" (func $internal2975)) - (import "env" "j0" (func $internal2976)) - (import "env" "k0" (func $internal2977)) - (import "env" "l0" (func $internal2978)) - (import "env" "m0" (func $internal2979)) - (import "env" "n0" (func $internal2980)) - (import "env" "o0" (func $internal2981)) - (import "env" "p0" (func $internal2982)) - (import "env" "q0" (func $internal2983)) - (import "env" "r0" (func $internal2984)) - (import "env" "s0" (func $internal2985)) - (import "env" "t0" (func $internal2986)) - (import "env" "u0" (func $internal2987)) - (import "env" "v0" (func $internal2988)) - (import "env" "w0" (func $internal2989)) - (import "env" "x0" (func $internal2990)) - (import "env" "y0" (func $internal2991)) - (import "env" "z0" (func $internal2992)) - (import "env" "A0" (func $internal2993)) - (import "env" "B0" (func $internal2994)) - (import "env" "C0" (func $internal2995)) - (import "env" "D0" (func $internal2996)) - (import "env" "E0" (func $internal2997)) - (import "env" "F0" (func $internal2998)) - (import "env" "G0" (func $internal2999)) - (import "env" "H0" (func $internal3000)) - (import "env" "I0" (func $internal3001)) - (import "env" "J0" (func $internal3002)) - (import "env" "K0" (func $internal3003)) - (import "env" "L0" (func $internal3004)) - (import "env" "M0" (func $internal3005)) - (import "env" "N0" (func $internal3006)) - (import "env" "O0" (func $internal3007)) - (import "env" "P0" (func $internal3008)) - (import "env" "Q0" (func $internal3009)) - (import "env" "R0" (func $internal3010)) - (import "env" "S0" (func $internal3011)) - (import "env" "T0" (func $internal3012)) - (import "env" "U0" (func $internal3013)) - (import "env" "V0" (func $internal3014)) - (import "env" "W0" (func $internal3015)) - (import "env" "X0" (func $internal3016)) - (import "env" "Y0" (func $internal3017)) - (import "env" "Z0" (func $internal3018)) - (import "env" "_0" (func $internal3019)) - (import "env" "$0" (func $internal3020)) - (import "env" "a1" (func $internal3021)) - (import "env" "b1" (func $internal3022)) - (import "env" "c1" (func $internal3023)) - (import "env" "d1" (func $internal3024)) - (import "env" "e1" (func $internal3025)) - (import "env" "f1" (func $internal3026)) - (import "env" "g1" (func $internal3027)) - (import "env" "h1" (func $internal3028)) - (import "env" "i1" (func $internal3029)) - (import "env" "j1" (func $internal3030)) - (import "env" "k1" (func $internal3031)) - (import "env" "l1" (func $internal3032)) - (import "env" "m1" (func $internal3033)) - (import "env" "n1" (func $internal3034)) - (import "env" "o1" (func $internal3035)) - (import "env" "p1" (func $internal3036)) - (import "env" "q1" (func $internal3037)) - (import "env" "r1" (func $internal3038)) - (import "env" "s1" (func $internal3039)) - (import "env" "t1" (func $internal3040)) - (import "env" "u1" (func $internal3041)) - (import "env" "v1" (func $internal3042)) - (import "env" "w1" (func $internal3043)) - (import "env" "x1" (func $internal3044)) - (import "env" "y1" (func $internal3045)) - (import "env" "z1" (func $internal3046)) - (import "env" "A1" (func $internal3047)) - (import "env" "B1" (func $internal3048)) - (import "env" "C1" (func $internal3049)) - (import "env" "D1" (func $internal3050)) - (import "env" "E1" (func $internal3051)) - (import "env" "F1" (func $internal3052)) - (import "env" "G1" (func $internal3053)) - (import "env" "H1" (func $internal3054)) - (import "env" "I1" (func $internal3055)) - (import "env" "J1" (func $internal3056)) - (import "env" "K1" (func $internal3057)) - (import "env" "L1" (func $internal3058)) - (import "env" "M1" (func $internal3059)) - (import "env" "N1" (func $internal3060)) - (import "env" "O1" (func $internal3061)) - (import "env" "P1" (func $internal3062)) - (import "env" "Q1" (func $internal3063)) - (import "env" "R1" (func $internal3064)) - (import "env" "S1" (func $internal3065)) - (import "env" "T1" (func $internal3066)) - (import "env" "U1" (func $internal3067)) - (import "env" "V1" (func $internal3068)) - (import "env" "W1" (func $internal3069)) - (import "env" "X1" (func $internal3070)) - (import "env" "Y1" (func $internal3071)) - (import "env" "Z1" (func $internal3072)) - (import "env" "_1" (func $internal3073)) - (import "env" "$1" (func $internal3074)) - (import "env" "a2" (func $internal3075)) - (import "env" "b2" (func $internal3076)) - (import "env" "c2" (func $internal3077)) - (import "env" "d2" (func $internal3078)) - (import "env" "e2" (func $internal3079)) - (import "env" "f2" (func $internal3080)) - (import "env" "g2" (func $internal3081)) - (import "env" "h2" (func $internal3082)) - (import "env" "i2" (func $internal3083)) - (import "env" "j2" (func $internal3084)) - (import "env" "k2" (func $internal3085)) - (import "env" "l2" (func $internal3086)) - (import "env" "m2" (func $internal3087)) - (import "env" "n2" (func $internal3088)) - (import "env" "o2" (func $internal3089)) - (import "env" "p2" (func $internal3090)) - (import "env" "q2" (func $internal3091)) - (import "env" "r2" (func $internal3092)) - (import "env" "s2" (func $internal3093)) - (import "env" "t2" (func $internal3094)) - (import "env" "u2" (func $internal3095)) - (import "env" "v2" (func $internal3096)) - (import "env" "w2" (func $internal3097)) - (import "env" "x2" (func $internal3098)) - (import "env" "y2" (func $internal3099)) - (import "env" "z2" (func $internal3100)) - (import "env" "A2" (func $internal3101)) - (import "env" "B2" (func $internal3102)) - (import "env" "C2" (func $internal3103)) - (import "env" "D2" (func $internal3104)) - (import "env" "E2" (func $internal3105)) - (import "env" "F2" (func $internal3106)) - (import "env" "G2" (func $internal3107)) - (import "env" "H2" (func $internal3108)) - (import "env" "I2" (func $internal3109)) - (import "env" "J2" (func $internal3110)) - (import "env" "K2" (func $internal3111)) - (import "env" "L2" (func $internal3112)) - (import "env" "M2" (func $internal3113)) - (import "env" "N2" (func $internal3114)) - (import "env" "O2" (func $internal3115)) - (import "env" "P2" (func $internal3116)) - (import "env" "Q2" (func $internal3117)) - (import "env" "R2" (func $internal3118)) - (import "env" "S2" (func $internal3119)) - (import "env" "T2" (func $internal3120)) - (import "env" "U2" (func $internal3121)) - (import "env" "V2" (func $internal3122)) - (import "env" "W2" (func $internal3123)) - (import "env" "X2" (func $internal3124)) - (import "env" "Y2" (func $internal3125)) - (import "env" "Z2" (func $internal3126)) - (import "env" "_2" (func $internal3127)) - (import "env" "$2" (func $internal3128)) - (import "env" "a3" (func $internal3129)) - (import "env" "b3" (func $internal3130)) - (import "env" "c3" (func $internal3131)) - (import "env" "d3" (func $internal3132)) - (import "env" "e3" (func $internal3133)) - (import "env" "f3" (func $internal3134)) - (import "env" "g3" (func $internal3135)) - (import "env" "h3" (func $internal3136)) - (import "env" "i3" (func $internal3137)) - (import "env" "j3" (func $internal3138)) - (import "env" "k3" (func $internal3139)) - (import "env" "l3" (func $internal3140)) - (import "env" "m3" (func $internal3141)) - (import "env" "n3" (func $internal3142)) - (import "env" "o3" (func $internal3143)) - (import "env" "p3" (func $internal3144)) - (import "env" "q3" (func $internal3145)) - (import "env" "r3" (func $internal3146)) - (import "env" "s3" (func $internal3147)) - (import "env" "t3" (func $internal3148)) - (import "env" "u3" (func $internal3149)) - (import "env" "v3" (func $internal3150)) - (import "env" "w3" (func $internal3151)) - (import "env" "x3" (func $internal3152)) - (import "env" "y3" (func $internal3153)) - (import "env" "z3" (func $internal3154)) - (import "env" "A3" (func $internal3155)) - (import "env" "B3" (func $internal3156)) - (import "env" "C3" (func $internal3157)) - (import "env" "D3" (func $internal3158)) - (import "env" "E3" (func $internal3159)) - (import "env" "F3" (func $internal3160)) - (import "env" "G3" (func $internal3161)) - (import "env" "H3" (func $internal3162)) - (import "env" "I3" (func $internal3163)) - (import "env" "J3" (func $internal3164)) - (import "env" "K3" (func $internal3165)) - (import "env" "L3" (func $internal3166)) - (import "env" "M3" (func $internal3167)) - (import "env" "N3" (func $internal3168)) - (import "env" "O3" (func $internal3169)) - (import "env" "P3" (func $internal3170)) - (import "env" "Q3" (func $internal3171)) - (import "env" "R3" (func $internal3172)) - (import "env" "S3" (func $internal3173)) - (import "env" "T3" (func $internal3174)) - (import "env" "U3" (func $internal3175)) - (import "env" "V3" (func $internal3176)) - (import "env" "W3" (func $internal3177)) - (import "env" "X3" (func $internal3178)) - (import "env" "Y3" (func $internal3179)) - (import "env" "Z3" (func $internal3180)) - (import "env" "_3" (func $internal3181)) - (import "env" "$3" (func $internal3182)) - (import "env" "a4" (func $internal3183)) - (import "env" "b4" (func $internal3184)) - (import "env" "c4" (func $internal3185)) - (import "env" "d4" (func $internal3186)) - (import "env" "e4" (func $internal3187)) - (import "env" "f4" (func $internal3188)) - (import "env" "g4" (func $internal3189)) - (import "env" "h4" (func $internal3190)) - (import "env" "i4" (func $internal3191)) - (import "env" "j4" (func $internal3192)) - (import "env" "k4" (func $internal3193)) - (import "env" "l4" (func $internal3194)) - (import "env" "m4" (func $internal3195)) - (import "env" "n4" (func $internal3196)) - (import "env" "o4" (func $internal3197)) - (import "env" "p4" (func $internal3198)) - (import "env" "q4" (func $internal3199)) - (import "env" "r4" (func $internal3200)) - (import "env" "s4" (func $internal3201)) - (import "env" "t4" (func $internal3202)) - (import "env" "u4" (func $internal3203)) - (import "env" "v4" (func $internal3204)) - (import "env" "w4" (func $internal3205)) - (import "env" "x4" (func $internal3206)) - (import "env" "y4" (func $internal3207)) - (import "env" "z4" (func $internal3208)) - (import "env" "A4" (func $internal3209)) - (import "env" "B4" (func $internal3210)) - (import "env" "C4" (func $internal3211)) - (import "env" "D4" (func $internal3212)) - (import "env" "E4" (func $internal3213)) - (import "env" "F4" (func $internal3214)) - (import "env" "G4" (func $internal3215)) - (import "env" "H4" (func $internal3216)) - (import "env" "I4" (func $internal3217)) - (import "env" "J4" (func $internal3218)) - (import "env" "K4" (func $internal3219)) - (import "env" "L4" (func $internal3220)) - (import "env" "M4" (func $internal3221)) - (import "env" "N4" (func $internal3222)) - (import "env" "O4" (func $internal3223)) - (import "env" "P4" (func $internal3224)) - (import "env" "Q4" (func $internal3225)) - (import "env" "R4" (func $internal3226)) - (import "env" "S4" (func $internal3227)) - (import "env" "T4" (func $internal3228)) - (import "env" "U4" (func $internal3229)) - (import "env" "V4" (func $internal3230)) - (import "env" "W4" (func $internal3231)) - (import "env" "X4" (func $internal3232)) - (import "env" "Y4" (func $internal3233)) - (import "env" "Z4" (func $internal3234)) - (import "env" "_4" (func $internal3235)) - (import "env" "$4" (func $internal3236)) - (import "env" "a5" (func $internal3237)) - (import "env" "b5" (func $internal3238)) - (import "env" "c5" (func $internal3239)) - (import "env" "d5" (func $internal3240)) - (import "env" "e5" (func $internal3241)) - (import "env" "f5" (func $internal3242)) - (import "env" "g5" (func $internal3243)) - (import "env" "h5" (func $internal3244)) - (import "env" "i5" (func $internal3245)) - (import "env" "j5" (func $internal3246)) - (import "env" "k5" (func $internal3247)) - (import "env" "l5" (func $internal3248)) - (import "env" "m5" (func $internal3249)) - (import "env" "n5" (func $internal3250)) - (import "env" "o5" (func $internal3251)) - (import "env" "p5" (func $internal3252)) - (import "env" "q5" (func $internal3253)) - (import "env" "r5" (func $internal3254)) - (import "env" "s5" (func $internal3255)) - (import "env" "t5" (func $internal3256)) - (import "env" "u5" (func $internal3257)) - (import "env" "v5" (func $internal3258)) - (import "env" "w5" (func $internal3259)) - (import "env" "x5" (func $internal3260)) - (import "env" "y5" (func $internal3261)) - (import "env" "z5" (func $internal3262)) - (import "env" "A5" (func $internal3263)) - (import "env" "B5" (func $internal3264)) - (import "env" "C5" (func $internal3265)) - (import "env" "D5" (func $internal3266)) - (import "env" "E5" (func $internal3267)) - (import "env" "F5" (func $internal3268)) - (import "env" "G5" (func $internal3269)) - (import "env" "H5" (func $internal3270)) - (import "env" "I5" (func $internal3271)) - (import "env" "J5" (func $internal3272)) - (import "env" "K5" (func $internal3273)) - (import "env" "L5" (func $internal3274)) - (import "env" "M5" (func $internal3275)) - (import "env" "N5" (func $internal3276)) - (import "env" "O5" (func $internal3277)) - (import "env" "P5" (func $internal3278)) - (import "env" "Q5" (func $internal3279)) - (import "env" "R5" (func $internal3280)) - (import "env" "S5" (func $internal3281)) - (import "env" "T5" (func $internal3282)) - (import "env" "U5" (func $internal3283)) - (import "env" "V5" (func $internal3284)) - (import "env" "W5" (func $internal3285)) - (import "env" "X5" (func $internal3286)) - (import "env" "Y5" (func $internal3287)) - (import "env" "Z5" (func $internal3288)) - (import "env" "_5" (func $internal3289)) - (import "env" "$5" (func $internal3290)) - (import "env" "a6" (func $internal3291)) - (import "env" "b6" (func $internal3292)) - (import "env" "c6" (func $internal3293)) - (import "env" "d6" (func $internal3294)) - (import "env" "e6" (func $internal3295)) - (import "env" "f6" (func $internal3296)) - (import "env" "g6" (func $internal3297)) - (import "env" "h6" (func $internal3298)) - (import "env" "i6" (func $internal3299)) - (import "env" "j6" (func $internal3300)) - (import "env" "k6" (func $internal3301)) - (import "env" "l6" (func $internal3302)) - (import "env" "m6" (func $internal3303)) - (import "env" "n6" (func $internal3304)) - (import "env" "o6" (func $internal3305)) - (import "env" "p6" (func $internal3306)) - (import "env" "q6" (func $internal3307)) - (import "env" "r6" (func $internal3308)) - (import "env" "s6" (func $internal3309)) - (import "env" "t6" (func $internal3310)) - (import "env" "u6" (func $internal3311)) - (import "env" "v6" (func $internal3312)) - (import "env" "w6" (func $internal3313)) - (import "env" "x6" (func $internal3314)) - (import "env" "y6" (func $internal3315)) - (import "env" "z6" (func $internal3316)) - (import "env" "A6" (func $internal3317)) - (import "env" "B6" (func $internal3318)) - (import "env" "C6" (func $internal3319)) - (import "env" "D6" (func $internal3320)) - (import "env" "E6" (func $internal3321)) - (import "env" "F6" (func $internal3322)) - (import "env" "G6" (func $internal3323)) - (import "env" "H6" (func $internal3324)) - (import "env" "I6" (func $internal3325)) - (import "env" "J6" (func $internal3326)) - (import "env" "K6" (func $internal3327)) - (import "env" "L6" (func $internal3328)) - (import "env" "M6" (func $internal3329)) - (import "env" "N6" (func $internal3330)) - (import "env" "O6" (func $internal3331)) - (import "env" "P6" (func $internal3332)) - (import "env" "Q6" (func $internal3333)) - (import "env" "R6" (func $internal3334)) - (import "env" "S6" (func $internal3335)) - (import "env" "T6" (func $internal3336)) - (import "env" "U6" (func $internal3337)) - (import "env" "V6" (func $internal3338)) - (import "env" "W6" (func $internal3339)) - (import "env" "X6" (func $internal3340)) - (import "env" "Y6" (func $internal3341)) - (import "env" "Z6" (func $internal3342)) - (import "env" "_6" (func $internal3343)) - (import "env" "$6" (func $internal3344)) - (import "env" "a7" (func $internal3345)) - (import "env" "b7" (func $internal3346)) - (import "env" "c7" (func $internal3347)) - (import "env" "d7" (func $internal3348)) - (import "env" "e7" (func $internal3349)) - (import "env" "f7" (func $internal3350)) - (import "env" "g7" (func $internal3351)) - (import "env" "h7" (func $internal3352)) - (import "env" "i7" (func $internal3353)) - (import "env" "j7" (func $internal3354)) - (import "env" "k7" (func $internal3355)) - (import "env" "l7" (func $internal3356)) - (import "env" "m7" (func $internal3357)) - (import "env" "n7" (func $internal3358)) - (import "env" "o7" (func $internal3359)) - (import "env" "p7" (func $internal3360)) - (import "env" "q7" (func $internal3361)) - (import "env" "r7" (func $internal3362)) - (import "env" "s7" (func $internal3363)) - (import "env" "t7" (func $internal3364)) - (import "env" "u7" (func $internal3365)) - (import "env" "v7" (func $internal3366)) - (import "env" "w7" (func $internal3367)) - (import "env" "x7" (func $internal3368)) - (import "env" "y7" (func $internal3369)) - (import "env" "z7" (func $internal3370)) - (import "env" "A7" (func $internal3371)) - (import "env" "B7" (func $internal3372)) - (import "env" "C7" (func $internal3373)) - (import "env" "D7" (func $internal3374)) - (import "env" "E7" (func $internal3375)) - (import "env" "F7" (func $internal3376)) - (import "env" "G7" (func $internal3377)) - (import "env" "H7" (func $internal3378)) - (import "env" "I7" (func $internal3379)) - (import "env" "J7" (func $internal3380)) - (import "env" "K7" (func $internal3381)) - (import "env" "L7" (func $internal3382)) - (import "env" "M7" (func $internal3383)) - (import "env" "N7" (func $internal3384)) - (import "env" "O7" (func $internal3385)) - (import "env" "P7" (func $internal3386)) - (import "env" "Q7" (func $internal3387)) - (import "env" "R7" (func $internal3388)) - (import "env" "S7" (func $internal3389)) - (import "env" "T7" (func $internal3390)) - (import "env" "U7" (func $internal3391)) - (import "env" "V7" (func $internal3392)) - (import "env" "W7" (func $internal3393)) - (import "env" "X7" (func $internal3394)) - (import "env" "Y7" (func $internal3395)) - (import "env" "Z7" (func $internal3396)) - (import "env" "_7" (func $internal3397)) - (import "env" "$7" (func $internal3398)) - (import "env" "a8" (func $internal3399)) - (import "env" "b8" (func $internal3400)) - (import "env" "c8" (func $internal3401)) - (import "env" "d8" (func $internal3402)) - (import "env" "e8" (func $internal3403)) - (import "env" "f8" (func $internal3404)) - (import "env" "g8" (func $internal3405)) - (import "env" "h8" (func $internal3406)) - (import "env" "i8" (func $internal3407)) - (import "env" "j8" (func $internal3408)) - (import "env" "k8" (func $internal3409)) - (import "env" "l8" (func $internal3410)) - (import "env" "m8" (func $internal3411)) - (import "env" "n8" (func $internal3412)) - (import "env" "o8" (func $internal3413)) - (import "env" "p8" (func $internal3414)) - (import "env" "q8" (func $internal3415)) - (import "env" "r8" (func $internal3416)) - (import "env" "s8" (func $internal3417)) - (import "env" "t8" (func $internal3418)) - (import "env" "u8" (func $internal3419)) - (import "env" "v8" (func $internal3420)) - (import "env" "w8" (func $internal3421)) - (import "env" "x8" (func $internal3422)) - (import "env" "y8" (func $internal3423)) - (import "env" "z8" (func $internal3424)) - (import "env" "A8" (func $internal3425)) - (import "env" "B8" (func $internal3426)) - (import "env" "C8" (func $internal3427)) - (import "env" "D8" (func $internal3428)) - (import "env" "E8" (func $internal3429)) - (import "env" "F8" (func $internal3430)) - (import "env" "G8" (func $internal3431)) - (import "env" "H8" (func $internal3432)) - (import "env" "I8" (func $internal3433)) - (import "env" "J8" (func $internal3434)) - (import "env" "K8" (func $internal3435)) - (import "env" "L8" (func $internal3436)) - (import "env" "M8" (func $internal3437)) - (import "env" "N8" (func $internal3438)) - (import "env" "O8" (func $internal3439)) - (import "env" "P8" (func $internal3440)) - (import "env" "Q8" (func $internal3441)) - (import "env" "R8" (func $internal3442)) - (import "env" "S8" (func $internal3443)) - (import "env" "T8" (func $internal3444)) - (import "env" "U8" (func $internal3445)) - (import "env" "V8" (func $internal3446)) - (import "env" "W8" (func $internal3447)) - (import "env" "X8" (func $internal3448)) - (import "env" "Y8" (func $internal3449)) - (import "env" "Z8" (func $internal3450)) - (import "env" "_8" (func $internal3451)) - (import "env" "$8" (func $internal3452)) - (import "env" "a9" (func $internal3453)) - (import "env" "b9" (func $internal3454)) - (import "env" "c9" (func $internal3455)) - (import "env" "d9" (func $internal3456)) - (import "env" "e9" (func $internal3457)) - (import "env" "f9" (func $internal3458)) - (import "env" "g9" (func $internal3459)) - (import "env" "h9" (func $internal3460)) - (import "env" "i9" (func $internal3461)) - (import "env" "j9" (func $internal3462)) - (import "env" "k9" (func $internal3463)) - (import "env" "l9" (func $internal3464)) - (import "env" "m9" (func $internal3465)) - (import "env" "n9" (func $internal3466)) - (import "env" "o9" (func $internal3467)) - (import "env" "p9" (func $internal3468)) - (import "env" "q9" (func $internal3469)) - (import "env" "r9" (func $internal3470)) - (import "env" "s9" (func $internal3471)) - (import "env" "t9" (func $internal3472)) - (import "env" "u9" (func $internal3473)) - (import "env" "v9" (func $internal3474)) - (import "env" "w9" (func $internal3475)) - (import "env" "x9" (func $internal3476)) - (import "env" "y9" (func $internal3477)) - (import "env" "z9" (func $internal3478)) - (import "env" "A9" (func $internal3479)) - (import "env" "B9" (func $internal3480)) - (import "env" "C9" (func $internal3481)) - (import "env" "D9" (func $internal3482)) - (import "env" "E9" (func $internal3483)) - (import "env" "F9" (func $internal3484)) - (import "env" "G9" (func $internal3485)) - (import "env" "H9" (func $internal3486)) - (import "env" "I9" (func $internal3487)) - (import "env" "J9" (func $internal3488)) - (import "env" "K9" (func $internal3489)) - (import "env" "L9" (func $internal3490)) - (import "env" "M9" (func $internal3491)) - (import "env" "N9" (func $internal3492)) - (import "env" "O9" (func $internal3493)) - (import "env" "P9" (func $internal3494)) - (import "env" "Q9" (func $internal3495)) - (import "env" "R9" (func $internal3496)) - (import "env" "S9" (func $internal3497)) - (import "env" "T9" (func $internal3498)) - (import "env" "U9" (func $internal3499)) - (import "env" "V9" (func $internal3500)) - (import "env" "W9" (func $internal3501)) - (import "env" "X9" (func $internal3502)) - (import "env" "Y9" (func $internal3503)) - (import "env" "Z9" (func $internal3504)) - (import "env" "_9" (func $internal3505)) - (import "env" "$9" (func $internal3506)) - (import "env" "aaa" (func $internal3507)) - (import "env" "baa" (func $internal3508)) - (import "env" "caa" (func $internal3509)) - (import "env" "daa" (func $internal3510)) - (import "env" "eaa" (func $internal3511)) - (import "env" "faa" (func $internal3512)) - (import "env" "gaa" (func $internal3513)) - (import "env" "haa" (func $internal3514)) - (import "env" "iaa" (func $internal3515)) - (import "env" "jaa" (func $internal3516)) - (import "env" "kaa" (func $internal3517)) - (import "env" "laa" (func $internal3518)) - (import "env" "maa" (func $internal3519)) - (import "env" "naa" (func $internal3520)) - (import "env" "oaa" (func $internal3521)) - (import "env" "paa" (func $internal3522)) - (import "env" "qaa" (func $internal3523)) - (import "env" "raa" (func $internal3524)) - (import "env" "saa" (func $internal3525)) - (import "env" "taa" (func $internal3526)) - (import "env" "uaa" (func $internal3527)) - (import "env" "vaa" (func $internal3528)) - (import "env" "waa" (func $internal3529)) - (import "env" "xaa" (func $internal3530)) - (import "env" "yaa" (func $internal3531)) - (import "env" "zaa" (func $internal3532)) - (import "env" "Aaa" (func $internal3533)) - (import "env" "Baa" (func $internal3534)) - (import "env" "Caa" (func $internal3535)) - (import "env" "Daa" (func $internal3536)) - (import "env" "Eaa" (func $internal3537)) - (import "env" "Faa" (func $internal3538)) - (import "env" "Gaa" (func $internal3539)) - (import "env" "Haa" (func $internal3540)) - (import "env" "Iaa" (func $internal3541)) - (import "env" "Jaa" (func $internal3542)) - (import "env" "Kaa" (func $internal3543)) - (import "env" "Laa" (func $internal3544)) - (import "env" "Maa" (func $internal3545)) - (import "env" "Naa" (func $internal3546)) - (import "env" "Oaa" (func $internal3547)) - (import "env" "Paa" (func $internal3548)) - (import "env" "Qaa" (func $internal3549)) - (import "env" "Raa" (func $internal3550)) - (import "env" "Saa" (func $internal3551)) - (import "env" "Taa" (func $internal3552)) - (import "env" "Uaa" (func $internal3553)) - (import "env" "Vaa" (func $internal3554)) - (import "env" "Waa" (func $internal3555)) - (import "env" "Xaa" (func $internal3556)) - (import "env" "Yaa" (func $internal3557)) - (import "env" "Zaa" (func $internal3558)) - (import "env" "_aa" (func $internal3559)) - (import "env" "$aa" (func $internal3560)) - (import "env" "aba" (func $internal3561)) - (import "env" "bba" (func $internal3562)) - (import "env" "cba" (func $internal3563)) - (import "env" "dba" (func $internal3564)) - (import "env" "eba" (func $internal3565)) - (import "env" "fba" (func $internal3566)) - (import "env" "gba" (func $internal3567)) - (import "env" "hba" (func $internal3568)) - (import "env" "iba" (func $internal3569)) - (import "env" "jba" (func $internal3570)) - (import "env" "kba" (func $internal3571)) - (import "env" "lba" (func $internal3572)) - (import "env" "mba" (func $internal3573)) - (import "env" "nba" (func $internal3574)) - (import "env" "oba" (func $internal3575)) - (import "env" "pba" (func $internal3576)) - (import "env" "qba" (func $internal3577)) - (import "env" "rba" (func $internal3578)) - (import "env" "sba" (func $internal3579)) - (import "env" "tba" (func $internal3580)) - (import "env" "uba" (func $internal3581)) - (import "env" "vba" (func $internal3582)) - (import "env" "wba" (func $internal3583)) - (import "env" "xba" (func $internal3584)) - (import "env" "yba" (func $internal3585)) - (import "env" "zba" (func $internal3586)) - (import "env" "Aba" (func $internal3587)) - (import "env" "Bba" (func $internal3588)) - (import "env" "Cba" (func $internal3589)) - (import "env" "Dba" (func $internal3590)) - (import "env" "Eba" (func $internal3591)) - (import "env" "Fba" (func $internal3592)) - (import "env" "Gba" (func $internal3593)) - (import "env" "Hba" (func $internal3594)) - (import "env" "Iba" (func $internal3595)) - (import "env" "Jba" (func $internal3596)) - (import "env" "Kba" (func $internal3597)) - (import "env" "Lba" (func $internal3598)) - (import "env" "Mba" (func $internal3599)) - (import "env" "Nba" (func $internal3600)) - (import "env" "Oba" (func $internal3601)) - (import "env" "Pba" (func $internal3602)) - (import "env" "Qba" (func $internal3603)) - (import "env" "Rba" (func $internal3604)) - (import "env" "Sba" (func $internal3605)) - (import "env" "Tba" (func $internal3606)) - (import "env" "Uba" (func $internal3607)) - (import "env" "Vba" (func $internal3608)) - (import "env" "Wba" (func $internal3609)) - (import "env" "Xba" (func $internal3610)) - (import "env" "Yba" (func $internal3611)) - (import "env" "Zba" (func $internal3612)) - (import "env" "_ba" (func $internal3613)) - (import "env" "$ba" (func $internal3614)) - (import "env" "aca" (func $internal3615)) - (import "env" "bca" (func $internal3616)) - (import "env" "cca" (func $internal3617)) - (import "env" "dca" (func $internal3618)) - (import "env" "eca" (func $internal3619)) - (import "env" "fca" (func $internal3620)) - (import "env" "gca" (func $internal3621)) - (import "env" "hca" (func $internal3622)) - (import "env" "ica" (func $internal3623)) - (import "env" "jca" (func $internal3624)) - (import "env" "kca" (func $internal3625)) - (import "env" "lca" (func $internal3626)) - (import "env" "mca" (func $internal3627)) - (import "env" "nca" (func $internal3628)) - (import "env" "oca" (func $internal3629)) - (import "env" "pca" (func $internal3630)) - (import "env" "qca" (func $internal3631)) - (import "env" "rca" (func $internal3632)) - (import "env" "sca" (func $internal3633)) - (import "env" "tca" (func $internal3634)) - (import "env" "uca" (func $internal3635)) - (import "env" "vca" (func $internal3636)) - (import "env" "wca" (func $internal3637)) - (import "env" "xca" (func $internal3638)) - (import "env" "yca" (func $internal3639)) - (import "env" "zca" (func $internal3640)) - (import "env" "Aca" (func $internal3641)) - (import "env" "Bca" (func $internal3642)) - (import "env" "Cca" (func $internal3643)) - (import "env" "Dca" (func $internal3644)) - (import "env" "Eca" (func $internal3645)) - (import "env" "Fca" (func $internal3646)) - (import "env" "Gca" (func $internal3647)) - (import "env" "Hca" (func $internal3648)) - (import "env" "Ica" (func $internal3649)) - (import "env" "Jca" (func $internal3650)) - (import "env" "Kca" (func $internal3651)) - (import "env" "Lca" (func $internal3652)) - (import "env" "Mca" (func $internal3653)) - (import "env" "Nca" (func $internal3654)) - (import "env" "Oca" (func $internal3655)) - (import "env" "Pca" (func $internal3656)) - (import "env" "Qca" (func $internal3657)) - (import "env" "Rca" (func $internal3658)) - (import "env" "Sca" (func $internal3659)) - (import "env" "Tca" (func $internal3660)) - (import "env" "Uca" (func $internal3661)) - (import "env" "Vca" (func $internal3662)) - (import "env" "Wca" (func $internal3663)) - (import "env" "Xca" (func $internal3664)) - (import "env" "Yca" (func $internal3665)) - (import "env" "Zca" (func $internal3666)) - (import "env" "_ca" (func $internal3667)) - (import "env" "$ca" (func $internal3668)) - (import "env" "ada" (func $internal3669)) - (import "env" "bda" (func $internal3670)) - (import "env" "cda" (func $internal3671)) - (import "env" "dda" (func $internal3672)) - (import "env" "eda" (func $internal3673)) - (import "env" "fda" (func $internal3674)) - (import "env" "gda" (func $internal3675)) - (import "env" "hda" (func $internal3676)) - (import "env" "ida" (func $internal3677)) - (import "env" "jda" (func $internal3678)) - (import "env" "kda" (func $internal3679)) - (import "env" "lda" (func $internal3680)) - (import "env" "mda" (func $internal3681)) - (import "env" "nda" (func $internal3682)) - (import "env" "oda" (func $internal3683)) - (import "env" "pda" (func $internal3684)) - (import "env" "qda" (func $internal3685)) - (import "env" "rda" (func $internal3686)) - (import "env" "sda" (func $internal3687)) - (import "env" "tda" (func $internal3688)) - (import "env" "uda" (func $internal3689)) - (import "env" "vda" (func $internal3690)) - (import "env" "wda" (func $internal3691)) - (import "env" "xda" (func $internal3692)) - (import "env" "yda" (func $internal3693)) - (import "env" "zda" (func $internal3694)) - (import "env" "Ada" (func $internal3695)) - (import "env" "Bda" (func $internal3696)) - (import "env" "Cda" (func $internal3697)) - (import "env" "Dda" (func $internal3698)) - (import "env" "Eda" (func $internal3699)) - (import "env" "Fda" (func $internal3700)) - (import "env" "Gda" (func $internal3701)) - (import "env" "Hda" (func $internal3702)) - (import "env" "Ida" (func $internal3703)) - (import "env" "Jda" (func $internal3704)) - (import "env" "Kda" (func $internal3705)) - (import "env" "Lda" (func $internal3706)) - (import "env" "Mda" (func $internal3707)) - (import "env" "Nda" (func $internal3708)) - (import "env" "Oda" (func $internal3709)) - (import "env" "Pda" (func $internal3710)) - (import "env" "Qda" (func $internal3711)) - (import "env" "Rda" (func $internal3712)) - (import "env" "Sda" (func $internal3713)) - (import "env" "Tda" (func $internal3714)) - (import "env" "Uda" (func $internal3715)) - (import "env" "Vda" (func $internal3716)) - (import "env" "Wda" (func $internal3717)) - (import "env" "Xda" (func $internal3718)) - (import "env" "Yda" (func $internal3719)) - (import "env" "Zda" (func $internal3720)) - (import "env" "_da" (func $internal3721)) - (import "env" "$da" (func $internal3722)) - (import "env" "aea" (func $internal3723)) - (import "env" "bea" (func $internal3724)) - (import "env" "cea" (func $internal3725)) - (import "env" "dea" (func $internal3726)) - (import "env" "eea" (func $internal3727)) - (import "env" "fea" (func $internal3728)) - (import "env" "gea" (func $internal3729)) - (import "env" "hea" (func $internal3730)) - (import "env" "iea" (func $internal3731)) - (import "env" "jea" (func $internal3732)) - (import "env" "kea" (func $internal3733)) - (import "env" "lea" (func $internal3734)) - (import "env" "mea" (func $internal3735)) - (import "env" "nea" (func $internal3736)) - (import "env" "oea" (func $internal3737)) - (import "env" "pea" (func $internal3738)) - (import "env" "qea" (func $internal3739)) - (import "env" "rea" (func $internal3740)) - (import "env" "sea" (func $internal3741)) - (import "env" "tea" (func $internal3742)) - (import "env" "uea" (func $internal3743)) - (import "env" "vea" (func $internal3744)) - (import "env" "wea" (func $internal3745)) - (import "env" "xea" (func $internal3746)) - (import "env" "yea" (func $internal3747)) - (import "env" "zea" (func $internal3748)) - (import "env" "Aea" (func $internal3749)) - (import "env" "Bea" (func $internal3750)) - (import "env" "Cea" (func $internal3751)) - (import "env" "Dea" (func $internal3752)) - (import "env" "Eea" (func $internal3753)) - (import "env" "Fea" (func $internal3754)) - (import "env" "Gea" (func $internal3755)) - (import "env" "Hea" (func $internal3756)) - (import "env" "Iea" (func $internal3757)) - (import "env" "Jea" (func $internal3758)) - (import "env" "Kea" (func $internal3759)) - (import "env" "Lea" (func $internal3760)) - (import "env" "Mea" (func $internal3761)) - (import "env" "Nea" (func $internal3762)) - (import "env" "Oea" (func $internal3763)) - (import "env" "Pea" (func $internal3764)) - (import "env" "Qea" (func $internal3765)) - (import "env" "Rea" (func $internal3766)) - (import "env" "Sea" (func $internal3767)) - (import "env" "Tea" (func $internal3768)) - (import "env" "Uea" (func $internal3769)) - (import "env" "Vea" (func $internal3770)) - (import "env" "Wea" (func $internal3771)) - (import "env" "Xea" (func $internal3772)) - (import "env" "Yea" (func $internal3773)) - (import "env" "Zea" (func $internal3774)) - (import "env" "_ea" (func $internal3775)) - (import "env" "$ea" (func $internal3776)) - (import "env" "afa" (func $internal3777)) - (import "env" "bfa" (func $internal3778)) - (import "env" "cfa" (func $internal3779)) - (import "env" "dfa" (func $internal3780)) - (import "env" "efa" (func $internal3781)) - (import "env" "ffa" (func $internal3782)) - (import "env" "gfa" (func $internal3783)) - (import "env" "hfa" (func $internal3784)) - (import "env" "ifa" (func $internal3785)) - (import "env" "jfa" (func $internal3786)) - (import "env" "kfa" (func $internal3787)) - (import "env" "lfa" (func $internal3788)) - (import "env" "mfa" (func $internal3789)) - (import "env" "nfa" (func $internal3790)) - (import "env" "ofa" (func $internal3791)) - (import "env" "pfa" (func $internal3792)) - (import "env" "qfa" (func $internal3793)) - (import "env" "rfa" (func $internal3794)) - (import "env" "sfa" (func $internal3795)) - (import "env" "tfa" (func $internal3796)) - (import "env" "ufa" (func $internal3797)) - (import "env" "vfa" (func $internal3798)) - (import "env" "wfa" (func $internal3799)) - (import "env" "xfa" (func $internal3800)) - (import "env" "yfa" (func $internal3801)) - (import "env" "zfa" (func $internal3802)) - (import "env" "Afa" (func $internal3803)) - (import "env" "Bfa" (func $internal3804)) - (import "env" "Cfa" (func $internal3805)) - (import "env" "Dfa" (func $internal3806)) - (import "env" "Efa" (func $internal3807)) - (import "env" "Ffa" (func $internal3808)) - (import "env" "Gfa" (func $internal3809)) - (import "env" "Hfa" (func $internal3810)) - (import "env" "Ifa" (func $internal3811)) - (import "env" "Jfa" (func $internal3812)) - (import "env" "Kfa" (func $internal3813)) - (import "env" "Lfa" (func $internal3814)) - (import "env" "Mfa" (func $internal3815)) - (import "env" "Nfa" (func $internal3816)) - (import "env" "Ofa" (func $internal3817)) - (import "env" "Pfa" (func $internal3818)) - (import "env" "Qfa" (func $internal3819)) - (import "env" "Rfa" (func $internal3820)) - (import "env" "Sfa" (func $internal3821)) - (import "env" "Tfa" (func $internal3822)) - (import "env" "Ufa" (func $internal3823)) - (import "env" "Vfa" (func $internal3824)) - (import "env" "Wfa" (func $internal3825)) - (import "env" "Xfa" (func $internal3826)) - (import "env" "Yfa" (func $internal3827)) - (import "env" "Zfa" (func $internal3828)) - (import "env" "_fa" (func $internal3829)) - (import "env" "$fa" (func $internal3830)) - (import "env" "aga" (func $internal3831)) - (import "env" "bga" (func $internal3832)) - (import "env" "cga" (func $internal3833)) - (import "env" "dga" (func $internal3834)) - (import "env" "ega" (func $internal3835)) - (import "env" "fga" (func $internal3836)) - (import "env" "gga" (func $internal3837)) - (import "env" "hga" (func $internal3838)) - (import "env" "iga" (func $internal3839)) - (import "env" "jga" (func $internal3840)) - (import "env" "kga" (func $internal3841)) - (import "env" "lga" (func $internal3842)) - (import "env" "mga" (func $internal3843)) - (import "env" "nga" (func $internal3844)) - (import "env" "oga" (func $internal3845)) - (import "env" "pga" (func $internal3846)) - (import "env" "qga" (func $internal3847)) - (import "env" "rga" (func $internal3848)) - (import "env" "sga" (func $internal3849)) - (import "env" "tga" (func $internal3850)) - (import "env" "uga" (func $internal3851)) - (import "env" "vga" (func $internal3852)) - (import "env" "wga" (func $internal3853)) - (import "env" "xga" (func $internal3854)) - (import "env" "yga" (func $internal3855)) - (import "env" "zga" (func $internal3856)) - (import "env" "Aga" (func $internal3857)) - (import "env" "Bga" (func $internal3858)) - (import "env" "Cga" (func $internal3859)) - (import "env" "Dga" (func $internal3860)) - (import "env" "Ega" (func $internal3861)) - (import "env" "Fga" (func $internal3862)) - (import "env" "Gga" (func $internal3863)) - (import "env" "Hga" (func $internal3864)) - (import "env" "Iga" (func $internal3865)) - (import "env" "Jga" (func $internal3866)) - (import "env" "Kga" (func $internal3867)) - (import "env" "Lga" (func $internal3868)) - (import "env" "Mga" (func $internal3869)) - (import "env" "Nga" (func $internal3870)) - (import "env" "Oga" (func $internal3871)) - (import "env" "Pga" (func $internal3872)) - (import "env" "Qga" (func $internal3873)) - (import "env" "Rga" (func $internal3874)) - (import "env" "Sga" (func $internal3875)) - (import "env" "Tga" (func $internal3876)) - (import "env" "Uga" (func $internal3877)) - (import "env" "Vga" (func $internal3878)) - (import "env" "Wga" (func $internal3879)) - (import "env" "Xga" (func $internal3880)) - (import "env" "Yga" (func $internal3881)) - (import "env" "Zga" (func $internal3882)) - (import "env" "_ga" (func $internal3883)) - (import "env" "$ga" (func $internal3884)) - (import "env" "aha" (func $internal3885)) - (import "env" "bha" (func $internal3886)) - (import "env" "cha" (func $internal3887)) - (import "env" "dha" (func $internal3888)) - (import "env" "eha" (func $internal3889)) - (import "env" "fha" (func $internal3890)) - (import "env" "gha" (func $internal3891)) - (import "env" "hha" (func $internal3892)) - (import "env" "iha" (func $internal3893)) - (import "env" "jha" (func $internal3894)) - (import "env" "kha" (func $internal3895)) - (import "env" "lha" (func $internal3896)) - (import "env" "mha" (func $internal3897)) - (import "env" "nha" (func $internal3898)) - (import "env" "oha" (func $internal3899)) - (import "env" "pha" (func $internal3900)) - (import "env" "qha" (func $internal3901)) - (import "env" "rha" (func $internal3902)) - (import "env" "sha" (func $internal3903)) - (import "env" "tha" (func $internal3904)) - (import "env" "uha" (func $internal3905)) - (import "env" "vha" (func $internal3906)) - (import "env" "wha" (func $internal3907)) - (import "env" "xha" (func $internal3908)) - (import "env" "yha" (func $internal3909)) - (import "env" "zha" (func $internal3910)) - (import "env" "Aha" (func $internal3911)) - (import "env" "Bha" (func $internal3912)) - (import "env" "Cha" (func $internal3913)) - (import "env" "Dha" (func $internal3914)) - (import "env" "Eha" (func $internal3915)) - (import "env" "Fha" (func $internal3916)) - (import "env" "Gha" (func $internal3917)) - (import "env" "Hha" (func $internal3918)) - (import "env" "Iha" (func $internal3919)) - (import "env" "Jha" (func $internal3920)) - (import "env" "Kha" (func $internal3921)) - (import "env" "Lha" (func $internal3922)) - (import "env" "Mha" (func $internal3923)) - (import "env" "Nha" (func $internal3924)) - (import "env" "Oha" (func $internal3925)) - (import "env" "Pha" (func $internal3926)) - (import "env" "Qha" (func $internal3927)) - (import "env" "Rha" (func $internal3928)) - (import "env" "Sha" (func $internal3929)) - (import "env" "Tha" (func $internal3930)) - (import "env" "Uha" (func $internal3931)) - (import "env" "Vha" (func $internal3932)) - (import "env" "Wha" (func $internal3933)) - (import "env" "Xha" (func $internal3934)) - (import "env" "Yha" (func $internal3935)) - (import "env" "Zha" (func $internal3936)) - (import "env" "_ha" (func $internal3937)) - (import "env" "$ha" (func $internal3938)) - (import "env" "aia" (func $internal3939)) - (import "env" "bia" (func $internal3940)) - (import "env" "cia" (func $internal3941)) - (import "env" "dia" (func $internal3942)) - (import "env" "eia" (func $internal3943)) - (import "env" "fia" (func $internal3944)) - (import "env" "gia" (func $internal3945)) - (import "env" "hia" (func $internal3946)) - (import "env" "iia" (func $internal3947)) - (import "env" "jia" (func $internal3948)) - (import "env" "kia" (func $internal3949)) - (import "env" "lia" (func $internal3950)) - (import "env" "mia" (func $internal3951)) - (import "env" "nia" (func $internal3952)) - (import "env" "oia" (func $internal3953)) - (import "env" "pia" (func $internal3954)) - (import "env" "qia" (func $internal3955)) - (import "env" "ria" (func $internal3956)) - (import "env" "sia" (func $internal3957)) - (import "env" "tia" (func $internal3958)) - (import "env" "uia" (func $internal3959)) - (import "env" "via" (func $internal3960)) - (import "env" "wia" (func $internal3961)) - (import "env" "xia" (func $internal3962)) - (import "env" "yia" (func $internal3963)) - (import "env" "zia" (func $internal3964)) - (import "env" "Aia" (func $internal3965)) - (import "env" "Bia" (func $internal3966)) - (import "env" "Cia" (func $internal3967)) - (import "env" "Dia" (func $internal3968)) - (import "env" "Eia" (func $internal3969)) - (import "env" "Fia" (func $internal3970)) - (import "env" "Gia" (func $internal3971)) - (import "env" "Hia" (func $internal3972)) - (import "env" "Iia" (func $internal3973)) - (import "env" "Jia" (func $internal3974)) - (import "env" "Kia" (func $internal3975)) - (import "env" "Lia" (func $internal3976)) - (import "env" "Mia" (func $internal3977)) - (import "env" "Nia" (func $internal3978)) - (import "env" "Oia" (func $internal3979)) - (import "env" "Pia" (func $internal3980)) - (import "env" "Qia" (func $internal3981)) - (import "env" "Ria" (func $internal3982)) - (import "env" "Sia" (func $internal3983)) - (import "env" "Tia" (func $internal3984)) - (import "env" "Uia" (func $internal3985)) - (import "env" "Via" (func $internal3986)) - (import "env" "Wia" (func $internal3987)) - (import "env" "Xia" (func $internal3988)) - (import "env" "Yia" (func $internal3989)) - (import "env" "Zia" (func $internal3990)) - (import "env" "_ia" (func $internal3991)) - (import "env" "$ia" (func $internal3992)) - (import "env" "aja" (func $internal3993)) - (import "env" "bja" (func $internal3994)) - (import "env" "cja" (func $internal3995)) - (import "env" "dja" (func $internal3996)) - (import "env" "eja" (func $internal3997)) - (import "env" "fja" (func $internal3998)) - (import "env" "gja" (func $internal3999)) - (import "env" "hja" (func $internal4000)) - (import "env" "ija" (func $internal4001)) - (import "env" "jja" (func $internal4002)) - (import "env" "kja" (func $internal4003)) - (import "env" "lja" (func $internal4004)) - (import "env" "mja" (func $internal4005)) - (import "env" "nja" (func $internal4006)) - (import "env" "oja" (func $internal4007)) - (import "env" "pja" (func $internal4008)) - (import "env" "qja" (func $internal4009)) - (import "env" "rja" (func $internal4010)) - (import "env" "sja" (func $internal4011)) - (import "env" "tja" (func $internal4012)) - (import "env" "uja" (func $internal4013)) - (import "env" "vja" (func $internal4014)) - (import "env" "wja" (func $internal4015)) - (import "env" "xja" (func $internal4016)) - (import "env" "yja" (func $internal4017)) - (import "env" "zja" (func $internal4018)) - (import "env" "Aja" (func $internal4019)) - (import "env" "Bja" (func $internal4020)) - (import "env" "Cja" (func $internal4021)) - (import "env" "Dja" (func $internal4022)) - (import "env" "Eja" (func $internal4023)) - (import "env" "Fja" (func $internal4024)) - (import "env" "Gja" (func $internal4025)) - (import "env" "Hja" (func $internal4026)) - (import "env" "Ija" (func $internal4027)) - (import "env" "Jja" (func $internal4028)) - (import "env" "Kja" (func $internal4029)) - (import "env" "Lja" (func $internal4030)) - (import "env" "Mja" (func $internal4031)) - (import "env" "Nja" (func $internal4032)) - (import "env" "Oja" (func $internal4033)) - (import "env" "Pja" (func $internal4034)) - (import "env" "Qja" (func $internal4035)) - (import "env" "Rja" (func $internal4036)) - (import "env" "Sja" (func $internal4037)) - (import "env" "Tja" (func $internal4038)) - (import "env" "Uja" (func $internal4039)) - (import "env" "Vja" (func $internal4040)) - (import "env" "Wja" (func $internal4041)) - (import "env" "Xja" (func $internal4042)) - (import "env" "Yja" (func $internal4043)) - (import "env" "Zja" (func $internal4044)) - (import "env" "_ja" (func $internal4045)) - (import "env" "$ja" (func $internal4046)) - (import "env" "aka" (func $internal4047)) - (import "env" "bka" (func $internal4048)) - (import "env" "cka" (func $internal4049)) - (import "env" "dka" (func $internal4050)) - (import "env" "eka" (func $internal4051)) - (import "env" "fka" (func $internal4052)) - (import "env" "gka" (func $internal4053)) - (import "env" "hka" (func $internal4054)) - (import "env" "ika" (func $internal4055)) - (import "env" "jka" (func $internal4056)) - (import "env" "kka" (func $internal4057)) - (import "env" "lka" (func $internal4058)) - (import "env" "mka" (func $internal4059)) - (import "env" "nka" (func $internal4060)) - (import "env" "oka" (func $internal4061)) - (import "env" "pka" (func $internal4062)) - (import "env" "qka" (func $internal4063)) - (import "env" "rka" (func $internal4064)) - (import "env" "ska" (func $internal4065)) - (import "env" "tka" (func $internal4066)) - (import "env" "uka" (func $internal4067)) - (import "env" "vka" (func $internal4068)) - (import "env" "wka" (func $internal4069)) - (import "env" "xka" (func $internal4070)) - (import "env" "yka" (func $internal4071)) - (import "env" "zka" (func $internal4072)) - (import "env" "Aka" (func $internal4073)) - (import "env" "Bka" (func $internal4074)) - (import "env" "Cka" (func $internal4075)) - (import "env" "Dka" (func $internal4076)) - (import "env" "Eka" (func $internal4077)) - (import "env" "Fka" (func $internal4078)) - (import "env" "Gka" (func $internal4079)) - (import "env" "Hka" (func $internal4080)) - (import "env" "Ika" (func $internal4081)) - (import "env" "Jka" (func $internal4082)) - (import "env" "Kka" (func $internal4083)) - (import "env" "Lka" (func $internal4084)) - (import "env" "Mka" (func $internal4085)) - (import "env" "Nka" (func $internal4086)) - (import "env" "Oka" (func $internal4087)) - (import "env" "Pka" (func $internal4088)) - (import "env" "Qka" (func $internal4089)) - (import "env" "Rka" (func $internal4090)) - (import "env" "Ska" (func $internal4091)) - (import "env" "Tka" (func $internal4092)) - (import "env" "Uka" (func $internal4093)) - (import "env" "Vka" (func $internal4094)) - (import "env" "Wka" (func $internal4095)) - (import "env" "Xka" (func $internal4096)) - (import "env" "Yka" (func $internal4097)) - (import "env" "Zka" (func $internal4098)) - (import "env" "_ka" (func $internal4099)) - (import "env" "$ka" (func $internal4100)) - (import "env" "ala" (func $internal4101)) - (import "env" "bla" (func $internal4102)) - (import "env" "cla" (func $internal4103)) - (import "env" "dla" (func $internal4104)) - (import "env" "ela" (func $internal4105)) - (import "env" "fla" (func $internal4106)) - (import "env" "gla" (func $internal4107)) - (import "env" "hla" (func $internal4108)) - (import "env" "ila" (func $internal4109)) - (import "env" "jla" (func $internal4110)) - (import "env" "kla" (func $internal4111)) - (import "env" "lla" (func $internal4112)) - (import "env" "mla" (func $internal4113)) - (import "env" "nla" (func $internal4114)) - (import "env" "ola" (func $internal4115)) - (import "env" "pla" (func $internal4116)) - (import "env" "qla" (func $internal4117)) - (import "env" "rla" (func $internal4118)) - (import "env" "sla" (func $internal4119)) - (import "env" "tla" (func $internal4120)) - (import "env" "ula" (func $internal4121)) - (import "env" "vla" (func $internal4122)) - (import "env" "wla" (func $internal4123)) - (import "env" "xla" (func $internal4124)) - (import "env" "yla" (func $internal4125)) - (import "env" "zla" (func $internal4126)) - (import "env" "Ala" (func $internal4127)) - (import "env" "Bla" (func $internal4128)) - (import "env" "Cla" (func $internal4129)) - (import "env" "Dla" (func $internal4130)) - (import "env" "Ela" (func $internal4131)) - (import "env" "Fla" (func $internal4132)) - (import "env" "Gla" (func $internal4133)) - (import "env" "Hla" (func $internal4134)) - (import "env" "Ila" (func $internal4135)) - (import "env" "Jla" (func $internal4136)) - (import "env" "Kla" (func $internal4137)) - (import "env" "Lla" (func $internal4138)) - (import "env" "Mla" (func $internal4139)) - (import "env" "Nla" (func $internal4140)) - (import "env" "Ola" (func $internal4141)) - (import "env" "Pla" (func $internal4142)) - (import "env" "Qla" (func $internal4143)) - (import "env" "Rla" (func $internal4144)) - (import "env" "Sla" (func $internal4145)) - (import "env" "Tla" (func $internal4146)) - (import "env" "Ula" (func $internal4147)) - (import "env" "Vla" (func $internal4148)) - (import "env" "Wla" (func $internal4149)) - (import "env" "Xla" (func $internal4150)) - (import "env" "Yla" (func $internal4151)) - (import "env" "Zla" (func $internal4152)) - (import "env" "_la" (func $internal4153)) - (import "env" "$la" (func $internal4154)) - (import "env" "ama" (func $internal4155)) - (import "env" "bma" (func $internal4156)) - (import "env" "cma" (func $internal4157)) - (import "env" "dma" (func $internal4158)) - (import "env" "ema" (func $internal4159)) - (import "env" "fma" (func $internal4160)) - (import "env" "gma" (func $internal4161)) - (import "env" "hma" (func $internal4162)) - (import "env" "ima" (func $internal4163)) - (import "env" "jma" (func $internal4164)) - (import "env" "kma" (func $internal4165)) - (import "env" "lma" (func $internal4166)) - (import "env" "mma" (func $internal4167)) - (import "env" "nma" (func $internal4168)) - (import "env" "oma" (func $internal4169)) - (import "env" "pma" (func $internal4170)) - (import "env" "qma" (func $internal4171)) - (import "env" "rma" (func $internal4172)) - (import "env" "sma" (func $internal4173)) - (import "env" "tma" (func $internal4174)) - (import "env" "uma" (func $internal4175)) - (import "env" "vma" (func $internal4176)) - (import "env" "wma" (func $internal4177)) - (import "env" "xma" (func $internal4178)) - (import "env" "yma" (func $internal4179)) - (import "env" "zma" (func $internal4180)) - (import "env" "Ama" (func $internal4181)) - (import "env" "Bma" (func $internal4182)) - (import "env" "Cma" (func $internal4183)) - (import "env" "Dma" (func $internal4184)) - (import "env" "Ema" (func $internal4185)) - (import "env" "Fma" (func $internal4186)) - (import "env" "Gma" (func $internal4187)) - (import "env" "Hma" (func $internal4188)) - (import "env" "Ima" (func $internal4189)) - (import "env" "Jma" (func $internal4190)) - (import "env" "Kma" (func $internal4191)) - (import "env" "Lma" (func $internal4192)) - (import "env" "Mma" (func $internal4193)) - (import "env" "Nma" (func $internal4194)) - (import "env" "Oma" (func $internal4195)) - (import "env" "Pma" (func $internal4196)) - (import "env" "Qma" (func $internal4197)) - (import "env" "Rma" (func $internal4198)) - (import "env" "Sma" (func $internal4199)) - (import "env" "Tma" (func $internal4200)) - (import "env" "Uma" (func $internal4201)) - (import "env" "Vma" (func $internal4202)) - (import "env" "Wma" (func $internal4203)) - (import "env" "Xma" (func $internal4204)) - (import "env" "Yma" (func $internal4205)) - (import "env" "Zma" (func $internal4206)) - (import "env" "_ma" (func $internal4207)) - (import "env" "$ma" (func $internal4208)) - (import "env" "ana" (func $internal4209)) - (import "env" "bna" (func $internal4210)) - (import "env" "cna" (func $internal4211)) - (import "env" "dna" (func $internal4212)) - (import "env" "ena" (func $internal4213)) - (import "env" "fna" (func $internal4214)) - (import "env" "gna" (func $internal4215)) - (import "env" "hna" (func $internal4216)) - (import "env" "ina" (func $internal4217)) - (import "env" "jna" (func $internal4218)) - (import "env" "kna" (func $internal4219)) - (import "env" "lna" (func $internal4220)) - (import "env" "mna" (func $internal4221)) - (import "env" "nna" (func $internal4222)) - (import "env" "ona" (func $internal4223)) - (import "env" "pna" (func $internal4224)) - (import "env" "qna" (func $internal4225)) - (import "env" "rna" (func $internal4226)) - (import "env" "sna" (func $internal4227)) - (import "env" "tna" (func $internal4228)) - (import "env" "una" (func $internal4229)) - (import "env" "vna" (func $internal4230)) - (import "env" "wna" (func $internal4231)) - (import "env" "xna" (func $internal4232)) - (import "env" "yna" (func $internal4233)) - (import "env" "zna" (func $internal4234)) - (import "env" "Ana" (func $internal4235)) - (import "env" "Bna" (func $internal4236)) - (import "env" "Cna" (func $internal4237)) - (import "env" "Dna" (func $internal4238)) - (import "env" "Ena" (func $internal4239)) - (import "env" "Fna" (func $internal4240)) - (import "env" "Gna" (func $internal4241)) - (import "env" "Hna" (func $internal4242)) - (import "env" "Ina" (func $internal4243)) - (import "env" "Jna" (func $internal4244)) - (import "env" "Kna" (func $internal4245)) - (import "env" "Lna" (func $internal4246)) - (import "env" "Mna" (func $internal4247)) - (import "env" "Nna" (func $internal4248)) - (import "env" "Ona" (func $internal4249)) - (import "env" "Pna" (func $internal4250)) - (import "env" "Qna" (func $internal4251)) - (import "env" "Rna" (func $internal4252)) - (import "env" "Sna" (func $internal4253)) - (import "env" "Tna" (func $internal4254)) - (import "env" "Una" (func $internal4255)) - (import "env" "Vna" (func $internal4256)) - (import "env" "Wna" (func $internal4257)) - (import "env" "Xna" (func $internal4258)) - (import "env" "Yna" (func $internal4259)) - (import "env" "Zna" (func $internal4260)) - (import "env" "_na" (func $internal4261)) - (import "env" "$na" (func $internal4262)) - (import "env" "aoa" (func $internal4263)) - (import "env" "boa" (func $internal4264)) - (import "env" "coa" (func $internal4265)) - (import "env" "doa" (func $internal4266)) - (import "env" "eoa" (func $internal4267)) - (import "env" "foa" (func $internal4268)) - (import "env" "goa" (func $internal4269)) - (import "env" "hoa" (func $internal4270)) - (import "env" "ioa" (func $internal4271)) - (import "env" "joa" (func $internal4272)) - (import "env" "koa" (func $internal4273)) - (import "env" "loa" (func $internal4274)) - (import "env" "moa" (func $internal4275)) - (import "env" "noa" (func $internal4276)) - (import "env" "ooa" (func $internal4277)) - (import "env" "poa" (func $internal4278)) - (import "env" "qoa" (func $internal4279)) - (import "env" "roa" (func $internal4280)) - (import "env" "soa" (func $internal4281)) - (import "env" "toa" (func $internal4282)) - (import "env" "uoa" (func $internal4283)) - (import "env" "voa" (func $internal4284)) - (import "env" "woa" (func $internal4285)) - (import "env" "xoa" (func $internal4286)) - (import "env" "yoa" (func $internal4287)) - (import "env" "zoa" (func $internal4288)) - (import "env" "Aoa" (func $internal4289)) - (import "env" "Boa" (func $internal4290)) - (import "env" "Coa" (func $internal4291)) - (import "env" "Doa" (func $internal4292)) - (import "env" "Eoa" (func $internal4293)) - (import "env" "Foa" (func $internal4294)) - (import "env" "Goa" (func $internal4295)) - (import "env" "Hoa" (func $internal4296)) - (import "env" "Ioa" (func $internal4297)) - (import "env" "Joa" (func $internal4298)) - (import "env" "Koa" (func $internal4299)) - (import "env" "Loa" (func $internal4300)) - (import "env" "Moa" (func $internal4301)) - (import "env" "Noa" (func $internal4302)) - (import "env" "Ooa" (func $internal4303)) - (import "env" "Poa" (func $internal4304)) - (import "env" "Qoa" (func $internal4305)) - (import "env" "Roa" (func $internal4306)) - (import "env" "Soa" (func $internal4307)) - (import "env" "Toa" (func $internal4308)) - (import "env" "Uoa" (func $internal4309)) - (import "env" "Voa" (func $internal4310)) - (import "env" "Woa" (func $internal4311)) - (import "env" "Xoa" (func $internal4312)) - (import "env" "Yoa" (func $internal4313)) - (import "env" "Zoa" (func $internal4314)) - (import "env" "_oa" (func $internal4315)) - (import "env" "$oa" (func $internal4316)) - (import "env" "apa" (func $internal4317)) - (import "env" "bpa" (func $internal4318)) - (import "env" "cpa" (func $internal4319)) - (import "env" "dpa" (func $internal4320)) - (import "env" "epa" (func $internal4321)) - (import "env" "fpa" (func $internal4322)) - (import "env" "gpa" (func $internal4323)) - (import "env" "hpa" (func $internal4324)) - (import "env" "ipa" (func $internal4325)) - (import "env" "jpa" (func $internal4326)) - (import "env" "kpa" (func $internal4327)) - (import "env" "lpa" (func $internal4328)) - (import "env" "mpa" (func $internal4329)) - (import "env" "npa" (func $internal4330)) - (import "env" "opa" (func $internal4331)) - (import "env" "ppa" (func $internal4332)) - (import "env" "qpa" (func $internal4333)) - (import "env" "rpa" (func $internal4334)) - (import "env" "spa" (func $internal4335)) - (import "env" "tpa" (func $internal4336)) - (import "env" "upa" (func $internal4337)) - (import "env" "vpa" (func $internal4338)) - (import "env" "wpa" (func $internal4339)) - (import "env" "xpa" (func $internal4340)) - (import "env" "ypa" (func $internal4341)) - (import "env" "zpa" (func $internal4342)) - (import "env" "Apa" (func $internal4343)) - (import "env" "Bpa" (func $internal4344)) - (import "env" "Cpa" (func $internal4345)) - (import "env" "Dpa" (func $internal4346)) - (import "env" "Epa" (func $internal4347)) - (import "env" "Fpa" (func $internal4348)) - (import "env" "Gpa" (func $internal4349)) - (import "env" "Hpa" (func $internal4350)) - (import "env" "Ipa" (func $internal4351)) - (import "env" "Jpa" (func $internal4352)) - (import "env" "Kpa" (func $internal4353)) - (import "env" "Lpa" (func $internal4354)) - (import "env" "Mpa" (func $internal4355)) - (import "env" "Npa" (func $internal4356)) - (import "env" "Opa" (func $internal4357)) - (import "env" "Ppa" (func $internal4358)) - (import "env" "Qpa" (func $internal4359)) - (import "env" "Rpa" (func $internal4360)) - (import "env" "Spa" (func $internal4361)) - (import "env" "Tpa" (func $internal4362)) - (import "env" "Upa" (func $internal4363)) - (import "env" "Vpa" (func $internal4364)) - (import "env" "Wpa" (func $internal4365)) - (import "env" "Xpa" (func $internal4366)) - (import "env" "Ypa" (func $internal4367)) - (import "env" "Zpa" (func $internal4368)) - (import "env" "_pa" (func $internal4369)) - (import "env" "$pa" (func $internal4370)) - (import "env" "aqa" (func $internal4371)) - (import "env" "bqa" (func $internal4372)) - (import "env" "cqa" (func $internal4373)) - (import "env" "dqa" (func $internal4374)) - (import "env" "eqa" (func $internal4375)) - (import "env" "fqa" (func $internal4376)) - (import "env" "gqa" (func $internal4377)) - (import "env" "hqa" (func $internal4378)) - (import "env" "iqa" (func $internal4379)) - (import "env" "jqa" (func $internal4380)) - (import "env" "kqa" (func $internal4381)) - (import "env" "lqa" (func $internal4382)) - (import "env" "mqa" (func $internal4383)) - (import "env" "nqa" (func $internal4384)) - (import "env" "oqa" (func $internal4385)) - (import "env" "pqa" (func $internal4386)) - (import "env" "qqa" (func $internal4387)) - (import "env" "rqa" (func $internal4388)) - (import "env" "sqa" (func $internal4389)) - (import "env" "tqa" (func $internal4390)) - (import "env" "uqa" (func $internal4391)) - (import "env" "vqa" (func $internal4392)) - (import "env" "wqa" (func $internal4393)) - (import "env" "xqa" (func $internal4394)) - (import "env" "yqa" (func $internal4395)) - (import "env" "zqa" (func $internal4396)) - (import "env" "Aqa" (func $internal4397)) - (import "env" "Bqa" (func $internal4398)) - (import "env" "Cqa" (func $internal4399)) - (import "env" "Dqa" (func $internal4400)) - (import "env" "Eqa" (func $internal4401)) - (import "env" "Fqa" (func $internal4402)) - (import "env" "Gqa" (func $internal4403)) - (import "env" "Hqa" (func $internal4404)) - (import "env" "Iqa" (func $internal4405)) - (import "env" "Jqa" (func $internal4406)) - (import "env" "Kqa" (func $internal4407)) - (import "env" "Lqa" (func $internal4408)) - (import "env" "Mqa" (func $internal4409)) - (import "env" "Nqa" (func $internal4410)) - (import "env" "Oqa" (func $internal4411)) - (import "env" "Pqa" (func $internal4412)) - (import "env" "Qqa" (func $internal4413)) - (import "env" "Rqa" (func $internal4414)) - (import "env" "Sqa" (func $internal4415)) - (import "env" "Tqa" (func $internal4416)) - (import "env" "Uqa" (func $internal4417)) - (import "env" "Vqa" (func $internal4418)) - (import "env" "Wqa" (func $internal4419)) - (import "env" "Xqa" (func $internal4420)) - (import "env" "Yqa" (func $internal4421)) - (import "env" "Zqa" (func $internal4422)) - (import "env" "_qa" (func $internal4423)) - (import "env" "$qa" (func $internal4424)) - (import "env" "ara" (func $internal4425)) - (import "env" "bra" (func $internal4426)) - (import "env" "cra" (func $internal4427)) - (import "env" "dra" (func $internal4428)) - (import "env" "era" (func $internal4429)) - (import "env" "fra" (func $internal4430)) - (import "env" "gra" (func $internal4431)) - (import "env" "hra" (func $internal4432)) - (import "env" "ira" (func $internal4433)) - (import "env" "jra" (func $internal4434)) - (import "env" "kra" (func $internal4435)) - (import "env" "lra" (func $internal4436)) - (import "env" "mra" (func $internal4437)) - (import "env" "nra" (func $internal4438)) - (import "env" "ora" (func $internal4439)) - (import "env" "pra" (func $internal4440)) - (import "env" "qra" (func $internal4441)) - (import "env" "rra" (func $internal4442)) - (import "env" "sra" (func $internal4443)) - (import "env" "tra" (func $internal4444)) - (import "env" "ura" (func $internal4445)) - (import "env" "vra" (func $internal4446)) - (import "env" "wra" (func $internal4447)) - (import "env" "xra" (func $internal4448)) - (import "env" "yra" (func $internal4449)) - (import "env" "zra" (func $internal4450)) - (import "env" "Ara" (func $internal4451)) - (import "env" "Bra" (func $internal4452)) - (import "env" "Cra" (func $internal4453)) - (import "env" "Dra" (func $internal4454)) - (import "env" "Era" (func $internal4455)) - (import "env" "Fra" (func $internal4456)) - (import "env" "Gra" (func $internal4457)) - (import "env" "Hra" (func $internal4458)) - (import "env" "Ira" (func $internal4459)) - (import "env" "Jra" (func $internal4460)) - (import "env" "Kra" (func $internal4461)) - (import "env" "Lra" (func $internal4462)) - (import "env" "Mra" (func $internal4463)) - (import "env" "Nra" (func $internal4464)) - (import "env" "Ora" (func $internal4465)) - (import "env" "Pra" (func $internal4466)) - (import "env" "Qra" (func $internal4467)) - (import "env" "Rra" (func $internal4468)) - (import "env" "Sra" (func $internal4469)) - (import "env" "Tra" (func $internal4470)) - (import "env" "Ura" (func $internal4471)) - (import "env" "Vra" (func $internal4472)) - (import "env" "Wra" (func $internal4473)) - (import "env" "Xra" (func $internal4474)) - (import "env" "Yra" (func $internal4475)) - (import "env" "Zra" (func $internal4476)) - (import "env" "_ra" (func $internal4477)) - (import "env" "$ra" (func $internal4478)) - (import "env" "asa" (func $internal4479)) - (import "env" "bsa" (func $internal4480)) - (import "env" "csa" (func $internal4481)) - (import "env" "dsa" (func $internal4482)) - (import "env" "esa" (func $internal4483)) - (import "env" "fsa" (func $internal4484)) - (import "env" "gsa" (func $internal4485)) - (import "env" "hsa" (func $internal4486)) - (import "env" "isa" (func $internal4487)) - (import "env" "jsa" (func $internal4488)) - (import "env" "ksa" (func $internal4489)) - (import "env" "lsa" (func $internal4490)) - (import "env" "msa" (func $internal4491)) - (import "env" "nsa" (func $internal4492)) - (import "env" "osa" (func $internal4493)) - (import "env" "psa" (func $internal4494)) - (import "env" "qsa" (func $internal4495)) - (import "env" "rsa" (func $internal4496)) - (import "env" "ssa" (func $internal4497)) - (import "env" "tsa" (func $internal4498)) - (import "env" "usa" (func $internal4499)) - (import "env" "vsa" (func $internal4500)) - (import "env" "wsa" (func $internal4501)) - (import "env" "xsa" (func $internal4502)) - (import "env" "ysa" (func $internal4503)) - (import "env" "zsa" (func $internal4504)) - (import "env" "Asa" (func $internal4505)) - (import "env" "Bsa" (func $internal4506)) - (import "env" "Csa" (func $internal4507)) - (import "env" "Dsa" (func $internal4508)) - (import "env" "Esa" (func $internal4509)) - (import "env" "Fsa" (func $internal4510)) - (import "env" "Gsa" (func $internal4511)) - (import "env" "Hsa" (func $internal4512)) - (import "env" "Isa" (func $internal4513)) - (import "env" "Jsa" (func $internal4514)) - (import "env" "Ksa" (func $internal4515)) - (import "env" "Lsa" (func $internal4516)) - (import "env" "Msa" (func $internal4517)) - (import "env" "Nsa" (func $internal4518)) - (import "env" "Osa" (func $internal4519)) - (import "env" "Psa" (func $internal4520)) - (import "env" "Qsa" (func $internal4521)) - (import "env" "Rsa" (func $internal4522)) - (import "env" "Ssa" (func $internal4523)) - (import "env" "Tsa" (func $internal4524)) - (import "env" "Usa" (func $internal4525)) - (import "env" "Vsa" (func $internal4526)) - (import "env" "Wsa" (func $internal4527)) - (import "env" "Xsa" (func $internal4528)) - (import "env" "Ysa" (func $internal4529)) - (import "env" "Zsa" (func $internal4530)) - (import "env" "_sa" (func $internal4531)) - (import "env" "$sa" (func $internal4532)) - (import "env" "ata" (func $internal4533)) - (import "env" "bta" (func $internal4534)) - (import "env" "cta" (func $internal4535)) - (import "env" "dta" (func $internal4536)) - (import "env" "eta" (func $internal4537)) - (import "env" "fta" (func $internal4538)) - (import "env" "gta" (func $internal4539)) - (import "env" "hta" (func $internal4540)) - (import "env" "ita" (func $internal4541)) - (import "env" "jta" (func $internal4542)) - (import "env" "kta" (func $internal4543)) - (import "env" "lta" (func $internal4544)) - (import "env" "mta" (func $internal4545)) - (import "env" "nta" (func $internal4546)) - (import "env" "ota" (func $internal4547)) - (import "env" "pta" (func $internal4548)) - (import "env" "qta" (func $internal4549)) - (import "env" "rta" (func $internal4550)) - (import "env" "sta" (func $internal4551)) - (import "env" "tta" (func $internal4552)) - (import "env" "uta" (func $internal4553)) - (import "env" "vta" (func $internal4554)) - (import "env" "wta" (func $internal4555)) - (import "env" "xta" (func $internal4556)) - (import "env" "yta" (func $internal4557)) - (import "env" "zta" (func $internal4558)) - (import "env" "Ata" (func $internal4559)) - (import "env" "Bta" (func $internal4560)) - (import "env" "Cta" (func $internal4561)) - (import "env" "Dta" (func $internal4562)) - (import "env" "Eta" (func $internal4563)) - (import "env" "Fta" (func $internal4564)) - (import "env" "Gta" (func $internal4565)) - (import "env" "Hta" (func $internal4566)) - (import "env" "Ita" (func $internal4567)) - (import "env" "Jta" (func $internal4568)) - (import "env" "Kta" (func $internal4569)) - (import "env" "Lta" (func $internal4570)) - (import "env" "Mta" (func $internal4571)) - (import "env" "Nta" (func $internal4572)) - (import "env" "Ota" (func $internal4573)) - (import "env" "Pta" (func $internal4574)) - (import "env" "Qta" (func $internal4575)) - (import "env" "Rta" (func $internal4576)) - (import "env" "Sta" (func $internal4577)) - (import "env" "Tta" (func $internal4578)) - (import "env" "Uta" (func $internal4579)) - (import "env" "Vta" (func $internal4580)) - (import "env" "Wta" (func $internal4581)) - (import "env" "Xta" (func $internal4582)) - (import "env" "Yta" (func $internal4583)) - (import "env" "Zta" (func $internal4584)) - (import "env" "_ta" (func $internal4585)) - (import "env" "$ta" (func $internal4586)) - (import "env" "aua" (func $internal4587)) - (import "env" "bua" (func $internal4588)) - (import "env" "cua" (func $internal4589)) - (import "env" "dua" (func $internal4590)) - (import "env" "eua" (func $internal4591)) - (import "env" "fua" (func $internal4592)) - (import "env" "gua" (func $internal4593)) - (import "env" "hua" (func $internal4594)) - (import "env" "iua" (func $internal4595)) - (import "env" "jua" (func $internal4596)) - (import "env" "kua" (func $internal4597)) - (import "env" "lua" (func $internal4598)) - (import "env" "mua" (func $internal4599)) - (import "env" "nua" (func $internal4600)) - (import "env" "oua" (func $internal4601)) - (import "env" "pua" (func $internal4602)) - (import "env" "qua" (func $internal4603)) - (import "env" "rua" (func $internal4604)) - (import "env" "sua" (func $internal4605)) - (import "env" "tua" (func $internal4606)) - (import "env" "uua" (func $internal4607)) - (import "env" "vua" (func $internal4608)) - (import "env" "wua" (func $internal4609)) - (import "env" "xua" (func $internal4610)) - (import "env" "yua" (func $internal4611)) - (import "env" "zua" (func $internal4612)) - (import "env" "Aua" (func $internal4613)) - (import "env" "Bua" (func $internal4614)) - (import "env" "Cua" (func $internal4615)) - (import "env" "Dua" (func $internal4616)) - (import "env" "Eua" (func $internal4617)) - (import "env" "Fua" (func $internal4618)) - (import "env" "Gua" (func $internal4619)) - (import "env" "Hua" (func $internal4620)) - (import "env" "Iua" (func $internal4621)) - (import "env" "Jua" (func $internal4622)) - (import "env" "Kua" (func $internal4623)) - (import "env" "Lua" (func $internal4624)) - (import "env" "Mua" (func $internal4625)) - (import "env" "Nua" (func $internal4626)) - (import "env" "Oua" (func $internal4627)) - (import "env" "Pua" (func $internal4628)) - (import "env" "Qua" (func $internal4629)) - (import "env" "Rua" (func $internal4630)) - (import "env" "Sua" (func $internal4631)) - (import "env" "Tua" (func $internal4632)) - (import "env" "Uua" (func $internal4633)) - (import "env" "Vua" (func $internal4634)) - (import "env" "Wua" (func $internal4635)) - (import "env" "Xua" (func $internal4636)) - (import "env" "Yua" (func $internal4637)) - (import "env" "Zua" (func $internal4638)) - (import "env" "_ua" (func $internal4639)) - (import "env" "$ua" (func $internal4640)) - (import "env" "ava" (func $internal4641)) - (import "env" "bva" (func $internal4642)) - (import "env" "cva" (func $internal4643)) - (import "env" "dva" (func $internal4644)) - (import "env" "eva" (func $internal4645)) - (import "env" "fva" (func $internal4646)) - (import "env" "gva" (func $internal4647)) - (import "env" "hva" (func $internal4648)) - (import "env" "iva" (func $internal4649)) - (import "env" "jva" (func $internal4650)) - (import "env" "kva" (func $internal4651)) - (import "env" "lva" (func $internal4652)) - (import "env" "mva" (func $internal4653)) - (import "env" "nva" (func $internal4654)) - (import "env" "ova" (func $internal4655)) - (import "env" "pva" (func $internal4656)) - (import "env" "qva" (func $internal4657)) - (import "env" "rva" (func $internal4658)) - (import "env" "sva" (func $internal4659)) - (import "env" "tva" (func $internal4660)) - (import "env" "uva" (func $internal4661)) - (import "env" "vva" (func $internal4662)) - (import "env" "wva" (func $internal4663)) - (import "env" "xva" (func $internal4664)) - (import "env" "yva" (func $internal4665)) - (import "env" "zva" (func $internal4666)) - (import "env" "Ava" (func $internal4667)) - (import "env" "Bva" (func $internal4668)) - (import "env" "Cva" (func $internal4669)) - (import "env" "Dva" (func $internal4670)) - (import "env" "Eva" (func $internal4671)) - (import "env" "Fva" (func $internal4672)) - (import "env" "Gva" (func $internal4673)) - (import "env" "Hva" (func $internal4674)) - (import "env" "Iva" (func $internal4675)) - (import "env" "Jva" (func $internal4676)) - (import "env" "Kva" (func $internal4677)) - (import "env" "Lva" (func $internal4678)) - (import "env" "Mva" (func $internal4679)) - (import "env" "Nva" (func $internal4680)) - (import "env" "Ova" (func $internal4681)) - (import "env" "Pva" (func $internal4682)) - (import "env" "Qva" (func $internal4683)) - (import "env" "Rva" (func $internal4684)) - (import "env" "Sva" (func $internal4685)) - (import "env" "Tva" (func $internal4686)) - (import "env" "Uva" (func $internal4687)) - (import "env" "Vva" (func $internal4688)) - (import "env" "Wva" (func $internal4689)) - (import "env" "Xva" (func $internal4690)) - (import "env" "Yva" (func $internal4691)) - (import "env" "Zva" (func $internal4692)) - (import "env" "_va" (func $internal4693)) - (import "env" "$va" (func $internal4694)) - (import "env" "awa" (func $internal4695)) - (import "env" "bwa" (func $internal4696)) - (import "env" "cwa" (func $internal4697)) - (import "env" "dwa" (func $internal4698)) - (import "env" "ewa" (func $internal4699)) - (import "env" "fwa" (func $internal4700)) - (import "env" "gwa" (func $internal4701)) - (import "env" "hwa" (func $internal4702)) - (import "env" "iwa" (func $internal4703)) - (import "env" "jwa" (func $internal4704)) - (import "env" "kwa" (func $internal4705)) - (import "env" "lwa" (func $internal4706)) - (import "env" "mwa" (func $internal4707)) - (import "env" "nwa" (func $internal4708)) - (import "env" "owa" (func $internal4709)) - (import "env" "pwa" (func $internal4710)) - (import "env" "qwa" (func $internal4711)) - (import "env" "rwa" (func $internal4712)) - (import "env" "swa" (func $internal4713)) - (import "env" "twa" (func $internal4714)) - (import "env" "uwa" (func $internal4715)) - (import "env" "vwa" (func $internal4716)) - (import "env" "wwa" (func $internal4717)) - (import "env" "xwa" (func $internal4718)) - (import "env" "ywa" (func $internal4719)) - (import "env" "zwa" (func $internal4720)) - (import "env" "Awa" (func $internal4721)) - (import "env" "Bwa" (func $internal4722)) - (import "env" "Cwa" (func $internal4723)) - (import "env" "Dwa" (func $internal4724)) - (import "env" "Ewa" (func $internal4725)) - (import "env" "Fwa" (func $internal4726)) - (import "env" "Gwa" (func $internal4727)) - (import "env" "Hwa" (func $internal4728)) - (import "env" "Iwa" (func $internal4729)) - (import "env" "Jwa" (func $internal4730)) - (import "env" "Kwa" (func $internal4731)) - (import "env" "Lwa" (func $internal4732)) - (import "env" "Mwa" (func $internal4733)) - (import "env" "Nwa" (func $internal4734)) - (import "env" "Owa" (func $internal4735)) - (import "env" "Pwa" (func $internal4736)) - (import "env" "Qwa" (func $internal4737)) - (import "env" "Rwa" (func $internal4738)) - (import "env" "Swa" (func $internal4739)) - (import "env" "Twa" (func $internal4740)) - (import "env" "Uwa" (func $internal4741)) - (import "env" "Vwa" (func $internal4742)) - (import "env" "Wwa" (func $internal4743)) - (import "env" "Xwa" (func $internal4744)) - (import "env" "Ywa" (func $internal4745)) - (import "env" "Zwa" (func $internal4746)) - (import "env" "_wa" (func $internal4747)) - (import "env" "$wa" (func $internal4748)) - (import "env" "axa" (func $internal4749)) - (import "env" "bxa" (func $internal4750)) - (import "env" "cxa" (func $internal4751)) - (import "env" "dxa" (func $internal4752)) - (import "env" "exa" (func $internal4753)) - (import "env" "fxa" (func $internal4754)) - (import "env" "gxa" (func $internal4755)) - (import "env" "hxa" (func $internal4756)) - (import "env" "ixa" (func $internal4757)) - (import "env" "jxa" (func $internal4758)) - (import "env" "kxa" (func $internal4759)) - (import "env" "lxa" (func $internal4760)) - (import "env" "mxa" (func $internal4761)) - (import "env" "nxa" (func $internal4762)) - (import "env" "oxa" (func $internal4763)) - (import "env" "pxa" (func $internal4764)) - (import "env" "qxa" (func $internal4765)) - (import "env" "rxa" (func $internal4766)) - (import "env" "sxa" (func $internal4767)) - (import "env" "txa" (func $internal4768)) - (import "env" "uxa" (func $internal4769)) - (import "env" "vxa" (func $internal4770)) - (import "env" "wxa" (func $internal4771)) - (import "env" "xxa" (func $internal4772)) - (import "env" "yxa" (func $internal4773)) - (import "env" "zxa" (func $internal4774)) - (import "env" "Axa" (func $internal4775)) - (import "env" "Bxa" (func $internal4776)) - (import "env" "Cxa" (func $internal4777)) - (import "env" "Dxa" (func $internal4778)) - (import "env" "Exa" (func $internal4779)) - (import "env" "Fxa" (func $internal4780)) - (import "env" "Gxa" (func $internal4781)) - (import "env" "Hxa" (func $internal4782)) - (import "env" "Ixa" (func $internal4783)) - (import "env" "Jxa" (func $internal4784)) - (import "env" "Kxa" (func $internal4785)) - (import "env" "Lxa" (func $internal4786)) - (import "env" "Mxa" (func $internal4787)) - (import "env" "Nxa" (func $internal4788)) - (import "env" "Oxa" (func $internal4789)) - (import "env" "Pxa" (func $internal4790)) - (import "env" "Qxa" (func $internal4791)) - (import "env" "Rxa" (func $internal4792)) - (import "env" "Sxa" (func $internal4793)) - (import "env" "Txa" (func $internal4794)) - (import "env" "Uxa" (func $internal4795)) - (import "env" "Vxa" (func $internal4796)) - (import "env" "Wxa" (func $internal4797)) - (import "env" "Xxa" (func $internal4798)) - (import "env" "Yxa" (func $internal4799)) - (import "env" "Zxa" (func $internal4800)) - (import "env" "_xa" (func $internal4801)) - (import "env" "$xa" (func $internal4802)) - (import "env" "aya" (func $internal4803)) - (import "env" "bya" (func $internal4804)) - (import "env" "cya" (func $internal4805)) - (import "env" "dya" (func $internal4806)) - (import "env" "eya" (func $internal4807)) - (import "env" "fya" (func $internal4808)) - (import "env" "gya" (func $internal4809)) - (import "env" "hya" (func $internal4810)) - (import "env" "iya" (func $internal4811)) - (import "env" "jya" (func $internal4812)) - (import "env" "kya" (func $internal4813)) - (import "env" "lya" (func $internal4814)) - (import "env" "mya" (func $internal4815)) - (import "env" "nya" (func $internal4816)) - (import "env" "oya" (func $internal4817)) - (import "env" "pya" (func $internal4818)) - (import "env" "qya" (func $internal4819)) - (import "env" "rya" (func $internal4820)) - (import "env" "sya" (func $internal4821)) - (import "env" "tya" (func $internal4822)) - (import "env" "uya" (func $internal4823)) - (import "env" "vya" (func $internal4824)) - (import "env" "wya" (func $internal4825)) - (import "env" "xya" (func $internal4826)) - (import "env" "yya" (func $internal4827)) - (import "env" "zya" (func $internal4828)) - (import "env" "Aya" (func $internal4829)) - (import "env" "Bya" (func $internal4830)) - (import "env" "Cya" (func $internal4831)) - (import "env" "Dya" (func $internal4832)) - (import "env" "Eya" (func $internal4833)) - (import "env" "Fya" (func $internal4834)) - (import "env" "Gya" (func $internal4835)) - (import "env" "Hya" (func $internal4836)) - (import "env" "Iya" (func $internal4837)) - (import "env" "Jya" (func $internal4838)) - (import "env" "Kya" (func $internal4839)) - (import "env" "Lya" (func $internal4840)) - (import "env" "Mya" (func $internal4841)) - (import "env" "Nya" (func $internal4842)) - (import "env" "Oya" (func $internal4843)) - (import "env" "Pya" (func $internal4844)) - (import "env" "Qya" (func $internal4845)) - (import "env" "Rya" (func $internal4846)) - (import "env" "Sya" (func $internal4847)) - (import "env" "Tya" (func $internal4848)) - (import "env" "Uya" (func $internal4849)) - (import "env" "Vya" (func $internal4850)) - (import "env" "Wya" (func $internal4851)) - (import "env" "Xya" (func $internal4852)) - (import "env" "Yya" (func $internal4853)) - (import "env" "Zya" (func $internal4854)) - (import "env" "_ya" (func $internal4855)) - (import "env" "$ya" (func $internal4856)) - (import "env" "aza" (func $internal4857)) - (import "env" "bza" (func $internal4858)) - (import "env" "cza" (func $internal4859)) - (import "env" "dza" (func $internal4860)) - (import "env" "eza" (func $internal4861)) - (import "env" "fza" (func $internal4862)) - (import "env" "gza" (func $internal4863)) - (import "env" "hza" (func $internal4864)) - (import "env" "iza" (func $internal4865)) - (import "env" "jza" (func $internal4866)) - (import "env" "kza" (func $internal4867)) - (import "env" "lza" (func $internal4868)) - (import "env" "mza" (func $internal4869)) - (import "env" "nza" (func $internal4870)) - (import "env" "oza" (func $internal4871)) - (import "env" "pza" (func $internal4872)) - (import "env" "qza" (func $internal4873)) - (import "env" "rza" (func $internal4874)) - (import "env" "sza" (func $internal4875)) - (import "env" "tza" (func $internal4876)) - (import "env" "uza" (func $internal4877)) - (import "env" "vza" (func $internal4878)) - (import "env" "wza" (func $internal4879)) - (import "env" "xza" (func $internal4880)) - (import "env" "yza" (func $internal4881)) - (import "env" "zza" (func $internal4882)) - (import "env" "Aza" (func $internal4883)) - (import "env" "Bza" (func $internal4884)) - (import "env" "Cza" (func $internal4885)) - (import "env" "Dza" (func $internal4886)) - (import "env" "Eza" (func $internal4887)) - (import "env" "Fza" (func $internal4888)) - (import "env" "Gza" (func $internal4889)) - (import "env" "Hza" (func $internal4890)) - (import "env" "Iza" (func $internal4891)) - (import "env" "Jza" (func $internal4892)) - (import "env" "Kza" (func $internal4893)) - (import "env" "Lza" (func $internal4894)) - (import "env" "Mza" (func $internal4895)) - (import "env" "Nza" (func $internal4896)) - (import "env" "Oza" (func $internal4897)) - (import "env" "Pza" (func $internal4898)) - (import "env" "Qza" (func $internal4899)) - (import "env" "Rza" (func $internal4900)) - (import "env" "Sza" (func $internal4901)) - (import "env" "Tza" (func $internal4902)) - (import "env" "Uza" (func $internal4903)) - (import "env" "Vza" (func $internal4904)) - (import "env" "Wza" (func $internal4905)) - (import "env" "Xza" (func $internal4906)) - (import "env" "Yza" (func $internal4907)) - (import "env" "Zza" (func $internal4908)) - (import "env" "_za" (func $internal4909)) - (import "env" "$za" (func $internal4910)) - (import "env" "aAa" (func $internal4911)) - (import "env" "bAa" (func $internal4912)) - (import "env" "cAa" (func $internal4913)) - (import "env" "dAa" (func $internal4914)) - (import "env" "eAa" (func $internal4915)) - (import "env" "fAa" (func $internal4916)) - (import "env" "gAa" (func $internal4917)) - (import "env" "hAa" (func $internal4918)) - (import "env" "iAa" (func $internal4919)) - (import "env" "jAa" (func $internal4920)) - (import "env" "kAa" (func $internal4921)) - (import "env" "lAa" (func $internal4922)) - (import "env" "mAa" (func $internal4923)) - (import "env" "nAa" (func $internal4924)) - (import "env" "oAa" (func $internal4925)) - (import "env" "pAa" (func $internal4926)) - (import "env" "qAa" (func $internal4927)) - (import "env" "rAa" (func $internal4928)) - (import "env" "sAa" (func $internal4929)) - (import "env" "tAa" (func $internal4930)) - (import "env" "uAa" (func $internal4931)) - (import "env" "vAa" (func $internal4932)) - (import "env" "wAa" (func $internal4933)) - (import "env" "xAa" (func $internal4934)) - (import "env" "yAa" (func $internal4935)) - (import "env" "zAa" (func $internal4936)) - (import "env" "AAa" (func $internal4937)) - (import "env" "BAa" (func $internal4938)) - (import "env" "CAa" (func $internal4939)) - (import "env" "DAa" (func $internal4940)) - (import "env" "EAa" (func $internal4941)) - (import "env" "FAa" (func $internal4942)) - (import "env" "GAa" (func $internal4943)) - (import "env" "HAa" (func $internal4944)) - (import "env" "IAa" (func $internal4945)) - (import "env" "JAa" (func $internal4946)) - (import "env" "KAa" (func $internal4947)) - (import "env" "LAa" (func $internal4948)) - (import "env" "MAa" (func $internal4949)) - (import "env" "NAa" (func $internal4950)) - (import "env" "OAa" (func $internal4951)) - (import "env" "PAa" (func $internal4952)) - (import "env" "QAa" (func $internal4953)) - (import "env" "RAa" (func $internal4954)) - (import "env" "SAa" (func $internal4955)) - (import "env" "TAa" (func $internal4956)) - (import "env" "UAa" (func $internal4957)) - (import "env" "VAa" (func $internal4958)) - (import "env" "WAa" (func $internal4959)) - (import "env" "XAa" (func $internal4960)) - (import "env" "YAa" (func $internal4961)) - (import "env" "ZAa" (func $internal4962)) - (import "env" "_Aa" (func $internal4963)) - (import "env" "$Aa" (func $internal4964)) - (import "env" "aBa" (func $internal4965)) - (import "env" "bBa" (func $internal4966)) - (import "env" "cBa" (func $internal4967)) - (import "env" "dBa" (func $internal4968)) - (import "env" "eBa" (func $internal4969)) - (import "env" "fBa" (func $internal4970)) - (import "env" "gBa" (func $internal4971)) - (import "env" "hBa" (func $internal4972)) - (import "env" "iBa" (func $internal4973)) - (import "env" "jBa" (func $internal4974)) - (import "env" "kBa" (func $internal4975)) - (import "env" "lBa" (func $internal4976)) - (import "env" "mBa" (func $internal4977)) - (import "env" "nBa" (func $internal4978)) - (import "env" "oBa" (func $internal4979)) - (import "env" "pBa" (func $internal4980)) - (import "env" "qBa" (func $internal4981)) - (import "env" "rBa" (func $internal4982)) - (import "env" "sBa" (func $internal4983)) - (import "env" "tBa" (func $internal4984)) - (import "env" "uBa" (func $internal4985)) - (import "env" "vBa" (func $internal4986)) - (import "env" "wBa" (func $internal4987)) - (import "env" "xBa" (func $internal4988)) - (import "env" "yBa" (func $internal4989)) - (import "env" "zBa" (func $internal4990)) - (import "env" "ABa" (func $internal4991)) - (import "env" "BBa" (func $internal4992)) - (import "env" "CBa" (func $internal4993)) - (import "env" "DBa" (func $internal4994)) - (import "env" "EBa" (func $internal4995)) - (import "env" "FBa" (func $internal4996)) - (import "env" "GBa" (func $internal4997)) - (import "env" "HBa" (func $internal4998)) - (import "env" "IBa" (func $internal4999)) + (import "env" "a" (global $gimport$0 i32)) + (import "env" "b" (global $gimport$1 i32)) + (import "env" "c" (global $gimport$2 i32)) + (import "env" "d" (func $internal1)) + (import "env" "e" (func $internal2)) + (import "env" "f" (func $internal3)) + (import "env" "g" (func $internal4)) + (import "env" "h" (func $internal5)) + (import "env" "i" (func $internal6)) + (import "env" "j" (func $internal7)) + (import "env" "k" (func $internal8)) + (import "env" "l" (func $internal9)) + (import "env" "m" (func $internal10)) + (import "env" "n" (func $internal11)) + (import "env" "o" (func $internal12)) + (import "env" "p" (func $internal13)) + (import "env" "q" (func $internal14)) + (import "env" "r" (func $internal15)) + (import "env" "s" (func $internal16)) + (import "env" "t" (func $internal17)) + (import "env" "u" (func $internal18)) + (import "env" "v" (func $internal19)) + (import "env" "w" (func $internal20)) + (import "env" "x" (func $internal21)) + (import "env" "y" (func $internal22)) + (import "env" "z" (func $internal23)) + (import "env" "A" (func $internal24)) + (import "env" "B" (func $internal25)) + (import "env" "C" (func $internal26)) + (import "env" "D" (func $internal27)) + (import "env" "E" (func $internal28)) + (import "env" "F" (func $internal29)) + (import "env" "G" (func $internal30)) + (import "env" "H" (func $internal31)) + (import "env" "I" (func $internal32)) + (import "env" "J" (func $internal33)) + (import "env" "K" (func $internal34)) + (import "env" "L" (func $internal35)) + (import "env" "M" (func $internal36)) + (import "env" "N" (func $internal37)) + (import "env" "O" (func $internal38)) + (import "env" "P" (func $internal39)) + (import "env" "Q" (func $internal40)) + (import "env" "R" (func $internal41)) + (import "env" "S" (func $internal42)) + (import "env" "T" (func $internal43)) + (import "env" "U" (func $internal44)) + (import "env" "V" (func $internal45)) + (import "env" "W" (func $internal46)) + (import "env" "X" (func $internal47)) + (import "env" "Y" (func $internal48)) + (import "env" "Z" (func $internal49)) + (import "env" "_" (func $internal50)) + (import "env" "$" (func $internal51)) + (import "env" "aa" (func $internal52)) + (import "env" "ba" (func $internal53)) + (import "env" "ca" (func $internal54)) + (import "env" "da" (func $internal55)) + (import "env" "ea" (func $internal56)) + (import "env" "fa" (func $internal57)) + (import "env" "ga" (func $internal58)) + (import "env" "ha" (func $internal59)) + (import "env" "ia" (func $internal60)) + (import "env" "ja" (func $internal61)) + (import "env" "ka" (func $internal62)) + (import "env" "la" (func $internal63)) + (import "env" "ma" (func $internal64)) + (import "env" "na" (func $internal65)) + (import "env" "oa" (func $internal66)) + (import "env" "pa" (func $internal67)) + (import "env" "qa" (func $internal68)) + (import "env" "ra" (func $internal69)) + (import "env" "sa" (func $internal70)) + (import "env" "ta" (func $internal71)) + (import "env" "ua" (func $internal72)) + (import "env" "va" (func $internal73)) + (import "env" "wa" (func $internal74)) + (import "env" "xa" (func $internal75)) + (import "env" "ya" (func $internal76)) + (import "env" "za" (func $internal77)) + (import "env" "Aa" (func $internal78)) + (import "env" "Ba" (func $internal79)) + (import "env" "Ca" (func $internal80)) + (import "env" "Da" (func $internal81)) + (import "env" "Ea" (func $internal82)) + (import "env" "Fa" (func $internal83)) + (import "env" "Ga" (func $internal84)) + (import "env" "Ha" (func $internal85)) + (import "env" "Ia" (func $internal86)) + (import "env" "Ja" (func $internal87)) + (import "env" "Ka" (func $internal88)) + (import "env" "La" (func $internal89)) + (import "env" "Ma" (func $internal90)) + (import "env" "Na" (func $internal91)) + (import "env" "Oa" (func $internal92)) + (import "env" "Pa" (func $internal93)) + (import "env" "Qa" (func $internal94)) + (import "env" "Ra" (func $internal95)) + (import "env" "Sa" (func $internal96)) + (import "env" "Ta" (func $internal97)) + (import "env" "Ua" (func $internal98)) + (import "env" "Va" (func $internal99)) + (import "env" "Wa" (func $internal100)) + (import "env" "Xa" (func $internal101)) + (import "env" "Ya" (func $internal102)) + (import "env" "Za" (func $internal103)) + (import "env" "_a" (func $internal104)) + (import "env" "$a" (func $internal105)) + (import "env" "ab" (func $internal106)) + (import "env" "bb" (func $internal107)) + (import "env" "cb" (func $internal108)) + (import "env" "db" (func $internal109)) + (import "env" "eb" (func $internal110)) + (import "env" "fb" (func $internal111)) + (import "env" "gb" (func $internal112)) + (import "env" "hb" (func $internal113)) + (import "env" "ib" (func $internal114)) + (import "env" "jb" (func $internal115)) + (import "env" "kb" (func $internal116)) + (import "env" "lb" (func $internal117)) + (import "env" "mb" (func $internal118)) + (import "env" "nb" (func $internal119)) + (import "env" "ob" (func $internal120)) + (import "env" "pb" (func $internal121)) + (import "env" "qb" (func $internal122)) + (import "env" "rb" (func $internal123)) + (import "env" "sb" (func $internal124)) + (import "env" "tb" (func $internal125)) + (import "env" "ub" (func $internal126)) + (import "env" "vb" (func $internal127)) + (import "env" "wb" (func $internal128)) + (import "env" "xb" (func $internal129)) + (import "env" "yb" (func $internal130)) + (import "env" "zb" (func $internal131)) + (import "env" "Ab" (func $internal132)) + (import "env" "Bb" (func $internal133)) + (import "env" "Cb" (func $internal134)) + (import "env" "Db" (func $internal135)) + (import "env" "Eb" (func $internal136)) + (import "env" "Fb" (func $internal137)) + (import "env" "Gb" (func $internal138)) + (import "env" "Hb" (func $internal139)) + (import "env" "Ib" (func $internal140)) + (import "env" "Jb" (func $internal141)) + (import "env" "Kb" (func $internal142)) + (import "env" "Lb" (func $internal143)) + (import "env" "Mb" (func $internal144)) + (import "env" "Nb" (func $internal145)) + (import "env" "Ob" (func $internal146)) + (import "env" "Pb" (func $internal147)) + (import "env" "Qb" (func $internal148)) + (import "env" "Rb" (func $internal149)) + (import "env" "Sb" (func $internal150)) + (import "env" "Tb" (func $internal151)) + (import "env" "Ub" (func $internal152)) + (import "env" "Vb" (func $internal153)) + (import "env" "Wb" (func $internal154)) + (import "env" "Xb" (func $internal155)) + (import "env" "Yb" (func $internal156)) + (import "env" "Zb" (func $internal157)) + (import "env" "_b" (func $internal158)) + (import "env" "$b" (func $internal159)) + (import "env" "ac" (func $internal160)) + (import "env" "bc" (func $internal161)) + (import "env" "cc" (func $internal162)) + (import "env" "dc" (func $internal163)) + (import "env" "ec" (func $internal164)) + (import "env" "fc" (func $internal165)) + (import "env" "gc" (func $internal166)) + (import "env" "hc" (func $internal167)) + (import "env" "ic" (func $internal168)) + (import "env" "jc" (func $internal169)) + (import "env" "kc" (func $internal170)) + (import "env" "lc" (func $internal171)) + (import "env" "mc" (func $internal172)) + (import "env" "nc" (func $internal173)) + (import "env" "oc" (func $internal174)) + (import "env" "pc" (func $internal175)) + (import "env" "qc" (func $internal176)) + (import "env" "rc" (func $internal177)) + (import "env" "sc" (func $internal178)) + (import "env" "tc" (func $internal179)) + (import "env" "uc" (func $internal180)) + (import "env" "vc" (func $internal181)) + (import "env" "wc" (func $internal182)) + (import "env" "xc" (func $internal183)) + (import "env" "yc" (func $internal184)) + (import "env" "zc" (func $internal185)) + (import "env" "Ac" (func $internal186)) + (import "env" "Bc" (func $internal187)) + (import "env" "Cc" (func $internal188)) + (import "env" "Dc" (func $internal189)) + (import "env" "Ec" (func $internal190)) + (import "env" "Fc" (func $internal191)) + (import "env" "Gc" (func $internal192)) + (import "env" "Hc" (func $internal193)) + (import "env" "Ic" (func $internal194)) + (import "env" "Jc" (func $internal195)) + (import "env" "Kc" (func $internal196)) + (import "env" "Lc" (func $internal197)) + (import "env" "Mc" (func $internal198)) + (import "env" "Nc" (func $internal199)) + (import "env" "Oc" (func $internal200)) + (import "env" "Pc" (func $internal201)) + (import "env" "Qc" (func $internal202)) + (import "env" "Rc" (func $internal203)) + (import "env" "Sc" (func $internal204)) + (import "env" "Tc" (func $internal205)) + (import "env" "Uc" (func $internal206)) + (import "env" "Vc" (func $internal207)) + (import "env" "Wc" (func $internal208)) + (import "env" "Xc" (func $internal209)) + (import "env" "Yc" (func $internal210)) + (import "env" "Zc" (func $internal211)) + (import "env" "_c" (func $internal212)) + (import "env" "$c" (func $internal213)) + (import "env" "ad" (func $internal214)) + (import "env" "bd" (func $internal215)) + (import "env" "cd" (func $internal216)) + (import "env" "dd" (func $internal217)) + (import "env" "ed" (func $internal218)) + (import "env" "fd" (func $internal219)) + (import "env" "gd" (func $internal220)) + (import "env" "hd" (func $internal221)) + (import "env" "id" (func $internal222)) + (import "env" "jd" (func $internal223)) + (import "env" "kd" (func $internal224)) + (import "env" "ld" (func $internal225)) + (import "env" "md" (func $internal226)) + (import "env" "nd" (func $internal227)) + (import "env" "od" (func $internal228)) + (import "env" "pd" (func $internal229)) + (import "env" "qd" (func $internal230)) + (import "env" "rd" (func $internal231)) + (import "env" "sd" (func $internal232)) + (import "env" "td" (func $internal233)) + (import "env" "ud" (func $internal234)) + (import "env" "vd" (func $internal235)) + (import "env" "wd" (func $internal236)) + (import "env" "xd" (func $internal237)) + (import "env" "yd" (func $internal238)) + (import "env" "zd" (func $internal239)) + (import "env" "Ad" (func $internal240)) + (import "env" "Bd" (func $internal241)) + (import "env" "Cd" (func $internal242)) + (import "env" "Dd" (func $internal243)) + (import "env" "Ed" (func $internal244)) + (import "env" "Fd" (func $internal245)) + (import "env" "Gd" (func $internal246)) + (import "env" "Hd" (func $internal247)) + (import "env" "Id" (func $internal248)) + (import "env" "Jd" (func $internal249)) + (import "env" "Kd" (func $internal250)) + (import "env" "Ld" (func $internal251)) + (import "env" "Md" (func $internal252)) + (import "env" "Nd" (func $internal253)) + (import "env" "Od" (func $internal254)) + (import "env" "Pd" (func $internal255)) + (import "env" "Qd" (func $internal256)) + (import "env" "Rd" (func $internal257)) + (import "env" "Sd" (func $internal258)) + (import "env" "Td" (func $internal259)) + (import "env" "Ud" (func $internal260)) + (import "env" "Vd" (func $internal261)) + (import "env" "Wd" (func $internal262)) + (import "env" "Xd" (func $internal263)) + (import "env" "Yd" (func $internal264)) + (import "env" "Zd" (func $internal265)) + (import "env" "_d" (func $internal266)) + (import "env" "$d" (func $internal267)) + (import "env" "ae" (func $internal268)) + (import "env" "be" (func $internal269)) + (import "env" "ce" (func $internal270)) + (import "env" "de" (func $internal271)) + (import "env" "ee" (func $internal272)) + (import "env" "fe" (func $internal273)) + (import "env" "ge" (func $internal274)) + (import "env" "he" (func $internal275)) + (import "env" "ie" (func $internal276)) + (import "env" "je" (func $internal277)) + (import "env" "ke" (func $internal278)) + (import "env" "le" (func $internal279)) + (import "env" "me" (func $internal280)) + (import "env" "ne" (func $internal281)) + (import "env" "oe" (func $internal282)) + (import "env" "pe" (func $internal283)) + (import "env" "qe" (func $internal284)) + (import "env" "re" (func $internal285)) + (import "env" "se" (func $internal286)) + (import "env" "te" (func $internal287)) + (import "env" "ue" (func $internal288)) + (import "env" "ve" (func $internal289)) + (import "env" "we" (func $internal290)) + (import "env" "xe" (func $internal291)) + (import "env" "ye" (func $internal292)) + (import "env" "ze" (func $internal293)) + (import "env" "Ae" (func $internal294)) + (import "env" "Be" (func $internal295)) + (import "env" "Ce" (func $internal296)) + (import "env" "De" (func $internal297)) + (import "env" "Ee" (func $internal298)) + (import "env" "Fe" (func $internal299)) + (import "env" "Ge" (func $internal300)) + (import "env" "He" (func $internal301)) + (import "env" "Ie" (func $internal302)) + (import "env" "Je" (func $internal303)) + (import "env" "Ke" (func $internal304)) + (import "env" "Le" (func $internal305)) + (import "env" "Me" (func $internal306)) + (import "env" "Ne" (func $internal307)) + (import "env" "Oe" (func $internal308)) + (import "env" "Pe" (func $internal309)) + (import "env" "Qe" (func $internal310)) + (import "env" "Re" (func $internal311)) + (import "env" "Se" (func $internal312)) + (import "env" "Te" (func $internal313)) + (import "env" "Ue" (func $internal314)) + (import "env" "Ve" (func $internal315)) + (import "env" "We" (func $internal316)) + (import "env" "Xe" (func $internal317)) + (import "env" "Ye" (func $internal318)) + (import "env" "Ze" (func $internal319)) + (import "env" "_e" (func $internal320)) + (import "env" "$e" (func $internal321)) + (import "env" "af" (func $internal322)) + (import "env" "bf" (func $internal323)) + (import "env" "cf" (func $internal324)) + (import "env" "df" (func $internal325)) + (import "env" "ef" (func $internal326)) + (import "env" "ff" (func $internal327)) + (import "env" "gf" (func $internal328)) + (import "env" "hf" (func $internal329)) + (import "env" "jf" (func $internal330)) + (import "env" "kf" (func $internal331)) + (import "env" "lf" (func $internal332)) + (import "env" "mf" (func $internal333)) + (import "env" "nf" (func $internal334)) + (import "env" "of" (func $internal335)) + (import "env" "pf" (func $internal336)) + (import "env" "qf" (func $internal337)) + (import "env" "rf" (func $internal338)) + (import "env" "sf" (func $internal339)) + (import "env" "tf" (func $internal340)) + (import "env" "uf" (func $internal341)) + (import "env" "vf" (func $internal342)) + (import "env" "wf" (func $internal343)) + (import "env" "xf" (func $internal344)) + (import "env" "yf" (func $internal345)) + (import "env" "zf" (func $internal346)) + (import "env" "Af" (func $internal347)) + (import "env" "Bf" (func $internal348)) + (import "env" "Cf" (func $internal349)) + (import "env" "Df" (func $internal350)) + (import "env" "Ef" (func $internal351)) + (import "env" "Ff" (func $internal352)) + (import "env" "Gf" (func $internal353)) + (import "env" "Hf" (func $internal354)) + (import "env" "If" (func $internal355)) + (import "env" "Jf" (func $internal356)) + (import "env" "Kf" (func $internal357)) + (import "env" "Lf" (func $internal358)) + (import "env" "Mf" (func $internal359)) + (import "env" "Nf" (func $internal360)) + (import "env" "Of" (func $internal361)) + (import "env" "Pf" (func $internal362)) + (import "env" "Qf" (func $internal363)) + (import "env" "Rf" (func $internal364)) + (import "env" "Sf" (func $internal365)) + (import "env" "Tf" (func $internal366)) + (import "env" "Uf" (func $internal367)) + (import "env" "Vf" (func $internal368)) + (import "env" "Wf" (func $internal369)) + (import "env" "Xf" (func $internal370)) + (import "env" "Yf" (func $internal371)) + (import "env" "Zf" (func $internal372)) + (import "env" "_f" (func $internal373)) + (import "env" "$f" (func $internal374)) + (import "env" "ag" (func $internal375)) + (import "env" "bg" (func $internal376)) + (import "env" "cg" (func $internal377)) + (import "env" "dg" (func $internal378)) + (import "env" "eg" (func $internal379)) + (import "env" "fg" (func $internal380)) + (import "env" "gg" (func $internal381)) + (import "env" "hg" (func $internal382)) + (import "env" "ig" (func $internal383)) + (import "env" "jg" (func $internal384)) + (import "env" "kg" (func $internal385)) + (import "env" "lg" (func $internal386)) + (import "env" "mg" (func $internal387)) + (import "env" "ng" (func $internal388)) + (import "env" "og" (func $internal389)) + (import "env" "pg" (func $internal390)) + (import "env" "qg" (func $internal391)) + (import "env" "rg" (func $internal392)) + (import "env" "sg" (func $internal393)) + (import "env" "tg" (func $internal394)) + (import "env" "ug" (func $internal395)) + (import "env" "vg" (func $internal396)) + (import "env" "wg" (func $internal397)) + (import "env" "xg" (func $internal398)) + (import "env" "yg" (func $internal399)) + (import "env" "zg" (func $internal400)) + (import "env" "Ag" (func $internal401)) + (import "env" "Bg" (func $internal402)) + (import "env" "Cg" (func $internal403)) + (import "env" "Dg" (func $internal404)) + (import "env" "Eg" (func $internal405)) + (import "env" "Fg" (func $internal406)) + (import "env" "Gg" (func $internal407)) + (import "env" "Hg" (func $internal408)) + (import "env" "Ig" (func $internal409)) + (import "env" "Jg" (func $internal410)) + (import "env" "Kg" (func $internal411)) + (import "env" "Lg" (func $internal412)) + (import "env" "Mg" (func $internal413)) + (import "env" "Ng" (func $internal414)) + (import "env" "Og" (func $internal415)) + (import "env" "Pg" (func $internal416)) + (import "env" "Qg" (func $internal417)) + (import "env" "Rg" (func $internal418)) + (import "env" "Sg" (func $internal419)) + (import "env" "Tg" (func $internal420)) + (import "env" "Ug" (func $internal421)) + (import "env" "Vg" (func $internal422)) + (import "env" "Wg" (func $internal423)) + (import "env" "Xg" (func $internal424)) + (import "env" "Yg" (func $internal425)) + (import "env" "Zg" (func $internal426)) + (import "env" "_g" (func $internal427)) + (import "env" "$g" (func $internal428)) + (import "env" "ah" (func $internal429)) + (import "env" "bh" (func $internal430)) + (import "env" "ch" (func $internal431)) + (import "env" "dh" (func $internal432)) + (import "env" "eh" (func $internal433)) + (import "env" "fh" (func $internal434)) + (import "env" "gh" (func $internal435)) + (import "env" "hh" (func $internal436)) + (import "env" "ih" (func $internal437)) + (import "env" "jh" (func $internal438)) + (import "env" "kh" (func $internal439)) + (import "env" "lh" (func $internal440)) + (import "env" "mh" (func $internal441)) + (import "env" "nh" (func $internal442)) + (import "env" "oh" (func $internal443)) + (import "env" "ph" (func $internal444)) + (import "env" "qh" (func $internal445)) + (import "env" "rh" (func $internal446)) + (import "env" "sh" (func $internal447)) + (import "env" "th" (func $internal448)) + (import "env" "uh" (func $internal449)) + (import "env" "vh" (func $internal450)) + (import "env" "wh" (func $internal451)) + (import "env" "xh" (func $internal452)) + (import "env" "yh" (func $internal453)) + (import "env" "zh" (func $internal454)) + (import "env" "Ah" (func $internal455)) + (import "env" "Bh" (func $internal456)) + (import "env" "Ch" (func $internal457)) + (import "env" "Dh" (func $internal458)) + (import "env" "Eh" (func $internal459)) + (import "env" "Fh" (func $internal460)) + (import "env" "Gh" (func $internal461)) + (import "env" "Hh" (func $internal462)) + (import "env" "Ih" (func $internal463)) + (import "env" "Jh" (func $internal464)) + (import "env" "Kh" (func $internal465)) + (import "env" "Lh" (func $internal466)) + (import "env" "Mh" (func $internal467)) + (import "env" "Nh" (func $internal468)) + (import "env" "Oh" (func $internal469)) + (import "env" "Ph" (func $internal470)) + (import "env" "Qh" (func $internal471)) + (import "env" "Rh" (func $internal472)) + (import "env" "Sh" (func $internal473)) + (import "env" "Th" (func $internal474)) + (import "env" "Uh" (func $internal475)) + (import "env" "Vh" (func $internal476)) + (import "env" "Wh" (func $internal477)) + (import "env" "Xh" (func $internal478)) + (import "env" "Yh" (func $internal479)) + (import "env" "Zh" (func $internal480)) + (import "env" "_h" (func $internal481)) + (import "env" "$h" (func $internal482)) + (import "env" "ai" (func $internal483)) + (import "env" "bi" (func $internal484)) + (import "env" "ci" (func $internal485)) + (import "env" "di" (func $internal486)) + (import "env" "ei" (func $internal487)) + (import "env" "fi" (func $internal488)) + (import "env" "gi" (func $internal489)) + (import "env" "hi" (func $internal490)) + (import "env" "ii" (func $internal491)) + (import "env" "ji" (func $internal492)) + (import "env" "ki" (func $internal493)) + (import "env" "li" (func $internal494)) + (import "env" "mi" (func $internal495)) + (import "env" "ni" (func $internal496)) + (import "env" "oi" (func $internal497)) + (import "env" "pi" (func $internal498)) + (import "env" "qi" (func $internal499)) + (import "env" "ri" (func $internal500)) + (import "env" "si" (func $internal501)) + (import "env" "ti" (func $internal502)) + (import "env" "ui" (func $internal503)) + (import "env" "vi" (func $internal504)) + (import "env" "wi" (func $internal505)) + (import "env" "xi" (func $internal506)) + (import "env" "yi" (func $internal507)) + (import "env" "zi" (func $internal508)) + (import "env" "Ai" (func $internal509)) + (import "env" "Bi" (func $internal510)) + (import "env" "Ci" (func $internal511)) + (import "env" "Di" (func $internal512)) + (import "env" "Ei" (func $internal513)) + (import "env" "Fi" (func $internal514)) + (import "env" "Gi" (func $internal515)) + (import "env" "Hi" (func $internal516)) + (import "env" "Ii" (func $internal517)) + (import "env" "Ji" (func $internal518)) + (import "env" "Ki" (func $internal519)) + (import "env" "Li" (func $internal520)) + (import "env" "Mi" (func $internal521)) + (import "env" "Ni" (func $internal522)) + (import "env" "Oi" (func $internal523)) + (import "env" "Pi" (func $internal524)) + (import "env" "Qi" (func $internal525)) + (import "env" "Ri" (func $internal526)) + (import "env" "Si" (func $internal527)) + (import "env" "Ti" (func $internal528)) + (import "env" "Ui" (func $internal529)) + (import "env" "Vi" (func $internal530)) + (import "env" "Wi" (func $internal531)) + (import "env" "Xi" (func $internal532)) + (import "env" "Yi" (func $internal533)) + (import "env" "Zi" (func $internal534)) + (import "env" "_i" (func $internal535)) + (import "env" "$i" (func $internal536)) + (import "env" "aj" (func $internal537)) + (import "env" "bj" (func $internal538)) + (import "env" "cj" (func $internal539)) + (import "env" "dj" (func $internal540)) + (import "env" "ej" (func $internal541)) + (import "env" "fj" (func $internal542)) + (import "env" "gj" (func $internal543)) + (import "env" "hj" (func $internal544)) + (import "env" "ij" (func $internal545)) + (import "env" "jj" (func $internal546)) + (import "env" "kj" (func $internal547)) + (import "env" "lj" (func $internal548)) + (import "env" "mj" (func $internal549)) + (import "env" "nj" (func $internal550)) + (import "env" "oj" (func $internal551)) + (import "env" "pj" (func $internal552)) + (import "env" "qj" (func $internal553)) + (import "env" "rj" (func $internal554)) + (import "env" "sj" (func $internal555)) + (import "env" "tj" (func $internal556)) + (import "env" "uj" (func $internal557)) + (import "env" "vj" (func $internal558)) + (import "env" "wj" (func $internal559)) + (import "env" "xj" (func $internal560)) + (import "env" "yj" (func $internal561)) + (import "env" "zj" (func $internal562)) + (import "env" "Aj" (func $internal563)) + (import "env" "Bj" (func $internal564)) + (import "env" "Cj" (func $internal565)) + (import "env" "Dj" (func $internal566)) + (import "env" "Ej" (func $internal567)) + (import "env" "Fj" (func $internal568)) + (import "env" "Gj" (func $internal569)) + (import "env" "Hj" (func $internal570)) + (import "env" "Ij" (func $internal571)) + (import "env" "Jj" (func $internal572)) + (import "env" "Kj" (func $internal573)) + (import "env" "Lj" (func $internal574)) + (import "env" "Mj" (func $internal575)) + (import "env" "Nj" (func $internal576)) + (import "env" "Oj" (func $internal577)) + (import "env" "Pj" (func $internal578)) + (import "env" "Qj" (func $internal579)) + (import "env" "Rj" (func $internal580)) + (import "env" "Sj" (func $internal581)) + (import "env" "Tj" (func $internal582)) + (import "env" "Uj" (func $internal583)) + (import "env" "Vj" (func $internal584)) + (import "env" "Wj" (func $internal585)) + (import "env" "Xj" (func $internal586)) + (import "env" "Yj" (func $internal587)) + (import "env" "Zj" (func $internal588)) + (import "env" "_j" (func $internal589)) + (import "env" "$j" (func $internal590)) + (import "env" "ak" (func $internal591)) + (import "env" "bk" (func $internal592)) + (import "env" "ck" (func $internal593)) + (import "env" "dk" (func $internal594)) + (import "env" "ek" (func $internal595)) + (import "env" "fk" (func $internal596)) + (import "env" "gk" (func $internal597)) + (import "env" "hk" (func $internal598)) + (import "env" "ik" (func $internal599)) + (import "env" "jk" (func $internal600)) + (import "env" "kk" (func $internal601)) + (import "env" "lk" (func $internal602)) + (import "env" "mk" (func $internal603)) + (import "env" "nk" (func $internal604)) + (import "env" "ok" (func $internal605)) + (import "env" "pk" (func $internal606)) + (import "env" "qk" (func $internal607)) + (import "env" "rk" (func $internal608)) + (import "env" "sk" (func $internal609)) + (import "env" "tk" (func $internal610)) + (import "env" "uk" (func $internal611)) + (import "env" "vk" (func $internal612)) + (import "env" "wk" (func $internal613)) + (import "env" "xk" (func $internal614)) + (import "env" "yk" (func $internal615)) + (import "env" "zk" (func $internal616)) + (import "env" "Ak" (func $internal617)) + (import "env" "Bk" (func $internal618)) + (import "env" "Ck" (func $internal619)) + (import "env" "Dk" (func $internal620)) + (import "env" "Ek" (func $internal621)) + (import "env" "Fk" (func $internal622)) + (import "env" "Gk" (func $internal623)) + (import "env" "Hk" (func $internal624)) + (import "env" "Ik" (func $internal625)) + (import "env" "Jk" (func $internal626)) + (import "env" "Kk" (func $internal627)) + (import "env" "Lk" (func $internal628)) + (import "env" "Mk" (func $internal629)) + (import "env" "Nk" (func $internal630)) + (import "env" "Ok" (func $internal631)) + (import "env" "Pk" (func $internal632)) + (import "env" "Qk" (func $internal633)) + (import "env" "Rk" (func $internal634)) + (import "env" "Sk" (func $internal635)) + (import "env" "Tk" (func $internal636)) + (import "env" "Uk" (func $internal637)) + (import "env" "Vk" (func $internal638)) + (import "env" "Wk" (func $internal639)) + (import "env" "Xk" (func $internal640)) + (import "env" "Yk" (func $internal641)) + (import "env" "Zk" (func $internal642)) + (import "env" "_k" (func $internal643)) + (import "env" "$k" (func $internal644)) + (import "env" "al" (func $internal645)) + (import "env" "bl" (func $internal646)) + (import "env" "cl" (func $internal647)) + (import "env" "dl" (func $internal648)) + (import "env" "el" (func $internal649)) + (import "env" "fl" (func $internal650)) + (import "env" "gl" (func $internal651)) + (import "env" "hl" (func $internal652)) + (import "env" "il" (func $internal653)) + (import "env" "jl" (func $internal654)) + (import "env" "kl" (func $internal655)) + (import "env" "ll" (func $internal656)) + (import "env" "ml" (func $internal657)) + (import "env" "nl" (func $internal658)) + (import "env" "ol" (func $internal659)) + (import "env" "pl" (func $internal660)) + (import "env" "ql" (func $internal661)) + (import "env" "rl" (func $internal662)) + (import "env" "sl" (func $internal663)) + (import "env" "tl" (func $internal664)) + (import "env" "ul" (func $internal665)) + (import "env" "vl" (func $internal666)) + (import "env" "wl" (func $internal667)) + (import "env" "xl" (func $internal668)) + (import "env" "yl" (func $internal669)) + (import "env" "zl" (func $internal670)) + (import "env" "Al" (func $internal671)) + (import "env" "Bl" (func $internal672)) + (import "env" "Cl" (func $internal673)) + (import "env" "Dl" (func $internal674)) + (import "env" "El" (func $internal675)) + (import "env" "Fl" (func $internal676)) + (import "env" "Gl" (func $internal677)) + (import "env" "Hl" (func $internal678)) + (import "env" "Il" (func $internal679)) + (import "env" "Jl" (func $internal680)) + (import "env" "Kl" (func $internal681)) + (import "env" "Ll" (func $internal682)) + (import "env" "Ml" (func $internal683)) + (import "env" "Nl" (func $internal684)) + (import "env" "Ol" (func $internal685)) + (import "env" "Pl" (func $internal686)) + (import "env" "Ql" (func $internal687)) + (import "env" "Rl" (func $internal688)) + (import "env" "Sl" (func $internal689)) + (import "env" "Tl" (func $internal690)) + (import "env" "Ul" (func $internal691)) + (import "env" "Vl" (func $internal692)) + (import "env" "Wl" (func $internal693)) + (import "env" "Xl" (func $internal694)) + (import "env" "Yl" (func $internal695)) + (import "env" "Zl" (func $internal696)) + (import "env" "_l" (func $internal697)) + (import "env" "$l" (func $internal698)) + (import "env" "am" (func $internal699)) + (import "env" "bm" (func $internal700)) + (import "env" "cm" (func $internal701)) + (import "env" "dm" (func $internal702)) + (import "env" "em" (func $internal703)) + (import "env" "fm" (func $internal704)) + (import "env" "gm" (func $internal705)) + (import "env" "hm" (func $internal706)) + (import "env" "im" (func $internal707)) + (import "env" "jm" (func $internal708)) + (import "env" "km" (func $internal709)) + (import "env" "lm" (func $internal710)) + (import "env" "mm" (func $internal711)) + (import "env" "nm" (func $internal712)) + (import "env" "om" (func $internal713)) + (import "env" "pm" (func $internal714)) + (import "env" "qm" (func $internal715)) + (import "env" "rm" (func $internal716)) + (import "env" "sm" (func $internal717)) + (import "env" "tm" (func $internal718)) + (import "env" "um" (func $internal719)) + (import "env" "vm" (func $internal720)) + (import "env" "wm" (func $internal721)) + (import "env" "xm" (func $internal722)) + (import "env" "ym" (func $internal723)) + (import "env" "zm" (func $internal724)) + (import "env" "Am" (func $internal725)) + (import "env" "Bm" (func $internal726)) + (import "env" "Cm" (func $internal727)) + (import "env" "Dm" (func $internal728)) + (import "env" "Em" (func $internal729)) + (import "env" "Fm" (func $internal730)) + (import "env" "Gm" (func $internal731)) + (import "env" "Hm" (func $internal732)) + (import "env" "Im" (func $internal733)) + (import "env" "Jm" (func $internal734)) + (import "env" "Km" (func $internal735)) + (import "env" "Lm" (func $internal736)) + (import "env" "Mm" (func $internal737)) + (import "env" "Nm" (func $internal738)) + (import "env" "Om" (func $internal739)) + (import "env" "Pm" (func $internal740)) + (import "env" "Qm" (func $internal741)) + (import "env" "Rm" (func $internal742)) + (import "env" "Sm" (func $internal743)) + (import "env" "Tm" (func $internal744)) + (import "env" "Um" (func $internal745)) + (import "env" "Vm" (func $internal746)) + (import "env" "Wm" (func $internal747)) + (import "env" "Xm" (func $internal748)) + (import "env" "Ym" (func $internal749)) + (import "env" "Zm" (func $internal750)) + (import "env" "_m" (func $internal751)) + (import "env" "$m" (func $internal752)) + (import "env" "an" (func $internal753)) + (import "env" "bn" (func $internal754)) + (import "env" "cn" (func $internal755)) + (import "env" "dn" (func $internal756)) + (import "env" "en" (func $internal757)) + (import "env" "fn" (func $internal758)) + (import "env" "gn" (func $internal759)) + (import "env" "hn" (func $internal760)) + (import "env" "jn" (func $internal761)) + (import "env" "kn" (func $internal762)) + (import "env" "ln" (func $internal763)) + (import "env" "mn" (func $internal764)) + (import "env" "nn" (func $internal765)) + (import "env" "on" (func $internal766)) + (import "env" "pn" (func $internal767)) + (import "env" "qn" (func $internal768)) + (import "env" "rn" (func $internal769)) + (import "env" "sn" (func $internal770)) + (import "env" "tn" (func $internal771)) + (import "env" "un" (func $internal772)) + (import "env" "vn" (func $internal773)) + (import "env" "wn" (func $internal774)) + (import "env" "xn" (func $internal775)) + (import "env" "yn" (func $internal776)) + (import "env" "zn" (func $internal777)) + (import "env" "An" (func $internal778)) + (import "env" "Bn" (func $internal779)) + (import "env" "Cn" (func $internal780)) + (import "env" "Dn" (func $internal781)) + (import "env" "En" (func $internal782)) + (import "env" "Fn" (func $internal783)) + (import "env" "Gn" (func $internal784)) + (import "env" "Hn" (func $internal785)) + (import "env" "In" (func $internal786)) + (import "env" "Jn" (func $internal787)) + (import "env" "Kn" (func $internal788)) + (import "env" "Ln" (func $internal789)) + (import "env" "Mn" (func $internal790)) + (import "env" "Nn" (func $internal791)) + (import "env" "On" (func $internal792)) + (import "env" "Pn" (func $internal793)) + (import "env" "Qn" (func $internal794)) + (import "env" "Rn" (func $internal795)) + (import "env" "Sn" (func $internal796)) + (import "env" "Tn" (func $internal797)) + (import "env" "Un" (func $internal798)) + (import "env" "Vn" (func $internal799)) + (import "env" "Wn" (func $internal800)) + (import "env" "Xn" (func $internal801)) + (import "env" "Yn" (func $internal802)) + (import "env" "Zn" (func $internal803)) + (import "env" "_n" (func $internal804)) + (import "env" "$n" (func $internal805)) + (import "env" "ao" (func $internal806)) + (import "env" "bo" (func $internal807)) + (import "env" "co" (func $internal808)) + (import "env" "eo" (func $internal809)) + (import "env" "fo" (func $internal810)) + (import "env" "go" (func $internal811)) + (import "env" "ho" (func $internal812)) + (import "env" "io" (func $internal813)) + (import "env" "jo" (func $internal814)) + (import "env" "ko" (func $internal815)) + (import "env" "lo" (func $internal816)) + (import "env" "mo" (func $internal817)) + (import "env" "no" (func $internal818)) + (import "env" "oo" (func $internal819)) + (import "env" "po" (func $internal820)) + (import "env" "qo" (func $internal821)) + (import "env" "ro" (func $internal822)) + (import "env" "so" (func $internal823)) + (import "env" "to" (func $internal824)) + (import "env" "uo" (func $internal825)) + (import "env" "vo" (func $internal826)) + (import "env" "wo" (func $internal827)) + (import "env" "xo" (func $internal828)) + (import "env" "yo" (func $internal829)) + (import "env" "zo" (func $internal830)) + (import "env" "Ao" (func $internal831)) + (import "env" "Bo" (func $internal832)) + (import "env" "Co" (func $internal833)) + (import "env" "Do" (func $internal834)) + (import "env" "Eo" (func $internal835)) + (import "env" "Fo" (func $internal836)) + (import "env" "Go" (func $internal837)) + (import "env" "Ho" (func $internal838)) + (import "env" "Io" (func $internal839)) + (import "env" "Jo" (func $internal840)) + (import "env" "Ko" (func $internal841)) + (import "env" "Lo" (func $internal842)) + (import "env" "Mo" (func $internal843)) + (import "env" "No" (func $internal844)) + (import "env" "Oo" (func $internal845)) + (import "env" "Po" (func $internal846)) + (import "env" "Qo" (func $internal847)) + (import "env" "Ro" (func $internal848)) + (import "env" "So" (func $internal849)) + (import "env" "To" (func $internal850)) + (import "env" "Uo" (func $internal851)) + (import "env" "Vo" (func $internal852)) + (import "env" "Wo" (func $internal853)) + (import "env" "Xo" (func $internal854)) + (import "env" "Yo" (func $internal855)) + (import "env" "Zo" (func $internal856)) + (import "env" "_o" (func $internal857)) + (import "env" "$o" (func $internal858)) + (import "env" "ap" (func $internal859)) + (import "env" "bp" (func $internal860)) + (import "env" "cp" (func $internal861)) + (import "env" "dp" (func $internal862)) + (import "env" "ep" (func $internal863)) + (import "env" "fp" (func $internal864)) + (import "env" "gp" (func $internal865)) + (import "env" "hp" (func $internal866)) + (import "env" "ip" (func $internal867)) + (import "env" "jp" (func $internal868)) + (import "env" "kp" (func $internal869)) + (import "env" "lp" (func $internal870)) + (import "env" "mp" (func $internal871)) + (import "env" "np" (func $internal872)) + (import "env" "op" (func $internal873)) + (import "env" "pp" (func $internal874)) + (import "env" "qp" (func $internal875)) + (import "env" "rp" (func $internal876)) + (import "env" "sp" (func $internal877)) + (import "env" "tp" (func $internal878)) + (import "env" "up" (func $internal879)) + (import "env" "vp" (func $internal880)) + (import "env" "wp" (func $internal881)) + (import "env" "xp" (func $internal882)) + (import "env" "yp" (func $internal883)) + (import "env" "zp" (func $internal884)) + (import "env" "Ap" (func $internal885)) + (import "env" "Bp" (func $internal886)) + (import "env" "Cp" (func $internal887)) + (import "env" "Dp" (func $internal888)) + (import "env" "Ep" (func $internal889)) + (import "env" "Fp" (func $internal890)) + (import "env" "Gp" (func $internal891)) + (import "env" "Hp" (func $internal892)) + (import "env" "Ip" (func $internal893)) + (import "env" "Jp" (func $internal894)) + (import "env" "Kp" (func $internal895)) + (import "env" "Lp" (func $internal896)) + (import "env" "Mp" (func $internal897)) + (import "env" "Np" (func $internal898)) + (import "env" "Op" (func $internal899)) + (import "env" "Pp" (func $internal900)) + (import "env" "Qp" (func $internal901)) + (import "env" "Rp" (func $internal902)) + (import "env" "Sp" (func $internal903)) + (import "env" "Tp" (func $internal904)) + (import "env" "Up" (func $internal905)) + (import "env" "Vp" (func $internal906)) + (import "env" "Wp" (func $internal907)) + (import "env" "Xp" (func $internal908)) + (import "env" "Yp" (func $internal909)) + (import "env" "Zp" (func $internal910)) + (import "env" "_p" (func $internal911)) + (import "env" "$p" (func $internal912)) + (import "env" "aq" (func $internal913)) + (import "env" "bq" (func $internal914)) + (import "env" "cq" (func $internal915)) + (import "env" "dq" (func $internal916)) + (import "env" "eq" (func $internal917)) + (import "env" "fq" (func $internal918)) + (import "env" "gq" (func $internal919)) + (import "env" "hq" (func $internal920)) + (import "env" "iq" (func $internal921)) + (import "env" "jq" (func $internal922)) + (import "env" "kq" (func $internal923)) + (import "env" "lq" (func $internal924)) + (import "env" "mq" (func $internal925)) + (import "env" "nq" (func $internal926)) + (import "env" "oq" (func $internal927)) + (import "env" "pq" (func $internal928)) + (import "env" "qq" (func $internal929)) + (import "env" "rq" (func $internal930)) + (import "env" "sq" (func $internal931)) + (import "env" "tq" (func $internal932)) + (import "env" "uq" (func $internal933)) + (import "env" "vq" (func $internal934)) + (import "env" "wq" (func $internal935)) + (import "env" "xq" (func $internal936)) + (import "env" "yq" (func $internal937)) + (import "env" "zq" (func $internal938)) + (import "env" "Aq" (func $internal939)) + (import "env" "Bq" (func $internal940)) + (import "env" "Cq" (func $internal941)) + (import "env" "Dq" (func $internal942)) + (import "env" "Eq" (func $internal943)) + (import "env" "Fq" (func $internal944)) + (import "env" "Gq" (func $internal945)) + (import "env" "Hq" (func $internal946)) + (import "env" "Iq" (func $internal947)) + (import "env" "Jq" (func $internal948)) + (import "env" "Kq" (func $internal949)) + (import "env" "Lq" (func $internal950)) + (import "env" "Mq" (func $internal951)) + (import "env" "Nq" (func $internal952)) + (import "env" "Oq" (func $internal953)) + (import "env" "Pq" (func $internal954)) + (import "env" "Qq" (func $internal955)) + (import "env" "Rq" (func $internal956)) + (import "env" "Sq" (func $internal957)) + (import "env" "Tq" (func $internal958)) + (import "env" "Uq" (func $internal959)) + (import "env" "Vq" (func $internal960)) + (import "env" "Wq" (func $internal961)) + (import "env" "Xq" (func $internal962)) + (import "env" "Yq" (func $internal963)) + (import "env" "Zq" (func $internal964)) + (import "env" "_q" (func $internal965)) + (import "env" "$q" (func $internal966)) + (import "env" "ar" (func $internal967)) + (import "env" "br" (func $internal968)) + (import "env" "cr" (func $internal969)) + (import "env" "dr" (func $internal970)) + (import "env" "er" (func $internal971)) + (import "env" "fr" (func $internal972)) + (import "env" "gr" (func $internal973)) + (import "env" "hr" (func $internal974)) + (import "env" "ir" (func $internal975)) + (import "env" "jr" (func $internal976)) + (import "env" "kr" (func $internal977)) + (import "env" "lr" (func $internal978)) + (import "env" "mr" (func $internal979)) + (import "env" "nr" (func $internal980)) + (import "env" "or" (func $internal981)) + (import "env" "pr" (func $internal982)) + (import "env" "qr" (func $internal983)) + (import "env" "rr" (func $internal984)) + (import "env" "sr" (func $internal985)) + (import "env" "tr" (func $internal986)) + (import "env" "ur" (func $internal987)) + (import "env" "vr" (func $internal988)) + (import "env" "wr" (func $internal989)) + (import "env" "xr" (func $internal990)) + (import "env" "yr" (func $internal991)) + (import "env" "zr" (func $internal992)) + (import "env" "Ar" (func $internal993)) + (import "env" "Br" (func $internal994)) + (import "env" "Cr" (func $internal995)) + (import "env" "Dr" (func $internal996)) + (import "env" "Er" (func $internal997)) + (import "env" "Fr" (func $internal998)) + (import "env" "Gr" (func $internal999)) + (import "env" "Hr" (func $internal1000)) + (import "env" "Ir" (func $internal1001)) + (import "env" "Jr" (func $internal1002)) + (import "env" "Kr" (func $internal1003)) + (import "env" "Lr" (func $internal1004)) + (import "env" "Mr" (func $internal1005)) + (import "env" "Nr" (func $internal1006)) + (import "env" "Or" (func $internal1007)) + (import "env" "Pr" (func $internal1008)) + (import "env" "Qr" (func $internal1009)) + (import "env" "Rr" (func $internal1010)) + (import "env" "Sr" (func $internal1011)) + (import "env" "Tr" (func $internal1012)) + (import "env" "Ur" (func $internal1013)) + (import "env" "Vr" (func $internal1014)) + (import "env" "Wr" (func $internal1015)) + (import "env" "Xr" (func $internal1016)) + (import "env" "Yr" (func $internal1017)) + (import "env" "Zr" (func $internal1018)) + (import "env" "_r" (func $internal1019)) + (import "env" "$r" (func $internal1020)) + (import "env" "as" (func $internal1021)) + (import "env" "bs" (func $internal1022)) + (import "env" "cs" (func $internal1023)) + (import "env" "ds" (func $internal1024)) + (import "env" "es" (func $internal1025)) + (import "env" "fs" (func $internal1026)) + (import "env" "gs" (func $internal1027)) + (import "env" "hs" (func $internal1028)) + (import "env" "is" (func $internal1029)) + (import "env" "js" (func $internal1030)) + (import "env" "ks" (func $internal1031)) + (import "env" "ls" (func $internal1032)) + (import "env" "ms" (func $internal1033)) + (import "env" "ns" (func $internal1034)) + (import "env" "os" (func $internal1035)) + (import "env" "ps" (func $internal1036)) + (import "env" "qs" (func $internal1037)) + (import "env" "rs" (func $internal1038)) + (import "env" "ss" (func $internal1039)) + (import "env" "ts" (func $internal1040)) + (import "env" "us" (func $internal1041)) + (import "env" "vs" (func $internal1042)) + (import "env" "ws" (func $internal1043)) + (import "env" "xs" (func $internal1044)) + (import "env" "ys" (func $internal1045)) + (import "env" "zs" (func $internal1046)) + (import "env" "As" (func $internal1047)) + (import "env" "Bs" (func $internal1048)) + (import "env" "Cs" (func $internal1049)) + (import "env" "Ds" (func $internal1050)) + (import "env" "Es" (func $internal1051)) + (import "env" "Fs" (func $internal1052)) + (import "env" "Gs" (func $internal1053)) + (import "env" "Hs" (func $internal1054)) + (import "env" "Is" (func $internal1055)) + (import "env" "Js" (func $internal1056)) + (import "env" "Ks" (func $internal1057)) + (import "env" "Ls" (func $internal1058)) + (import "env" "Ms" (func $internal1059)) + (import "env" "Ns" (func $internal1060)) + (import "env" "Os" (func $internal1061)) + (import "env" "Ps" (func $internal1062)) + (import "env" "Qs" (func $internal1063)) + (import "env" "Rs" (func $internal1064)) + (import "env" "Ss" (func $internal1065)) + (import "env" "Ts" (func $internal1066)) + (import "env" "Us" (func $internal1067)) + (import "env" "Vs" (func $internal1068)) + (import "env" "Ws" (func $internal1069)) + (import "env" "Xs" (func $internal1070)) + (import "env" "Ys" (func $internal1071)) + (import "env" "Zs" (func $internal1072)) + (import "env" "_s" (func $internal1073)) + (import "env" "$s" (func $internal1074)) + (import "env" "at" (func $internal1075)) + (import "env" "bt" (func $internal1076)) + (import "env" "ct" (func $internal1077)) + (import "env" "dt" (func $internal1078)) + (import "env" "et" (func $internal1079)) + (import "env" "ft" (func $internal1080)) + (import "env" "gt" (func $internal1081)) + (import "env" "ht" (func $internal1082)) + (import "env" "it" (func $internal1083)) + (import "env" "jt" (func $internal1084)) + (import "env" "kt" (func $internal1085)) + (import "env" "lt" (func $internal1086)) + (import "env" "mt" (func $internal1087)) + (import "env" "nt" (func $internal1088)) + (import "env" "ot" (func $internal1089)) + (import "env" "pt" (func $internal1090)) + (import "env" "qt" (func $internal1091)) + (import "env" "rt" (func $internal1092)) + (import "env" "st" (func $internal1093)) + (import "env" "tt" (func $internal1094)) + (import "env" "ut" (func $internal1095)) + (import "env" "vt" (func $internal1096)) + (import "env" "wt" (func $internal1097)) + (import "env" "xt" (func $internal1098)) + (import "env" "yt" (func $internal1099)) + (import "env" "zt" (func $internal1100)) + (import "env" "At" (func $internal1101)) + (import "env" "Bt" (func $internal1102)) + (import "env" "Ct" (func $internal1103)) + (import "env" "Dt" (func $internal1104)) + (import "env" "Et" (func $internal1105)) + (import "env" "Ft" (func $internal1106)) + (import "env" "Gt" (func $internal1107)) + (import "env" "Ht" (func $internal1108)) + (import "env" "It" (func $internal1109)) + (import "env" "Jt" (func $internal1110)) + (import "env" "Kt" (func $internal1111)) + (import "env" "Lt" (func $internal1112)) + (import "env" "Mt" (func $internal1113)) + (import "env" "Nt" (func $internal1114)) + (import "env" "Ot" (func $internal1115)) + (import "env" "Pt" (func $internal1116)) + (import "env" "Qt" (func $internal1117)) + (import "env" "Rt" (func $internal1118)) + (import "env" "St" (func $internal1119)) + (import "env" "Tt" (func $internal1120)) + (import "env" "Ut" (func $internal1121)) + (import "env" "Vt" (func $internal1122)) + (import "env" "Wt" (func $internal1123)) + (import "env" "Xt" (func $internal1124)) + (import "env" "Yt" (func $internal1125)) + (import "env" "Zt" (func $internal1126)) + (import "env" "_t" (func $internal1127)) + (import "env" "$t" (func $internal1128)) + (import "env" "au" (func $internal1129)) + (import "env" "bu" (func $internal1130)) + (import "env" "cu" (func $internal1131)) + (import "env" "du" (func $internal1132)) + (import "env" "eu" (func $internal1133)) + (import "env" "fu" (func $internal1134)) + (import "env" "gu" (func $internal1135)) + (import "env" "hu" (func $internal1136)) + (import "env" "iu" (func $internal1137)) + (import "env" "ju" (func $internal1138)) + (import "env" "ku" (func $internal1139)) + (import "env" "lu" (func $internal1140)) + (import "env" "mu" (func $internal1141)) + (import "env" "nu" (func $internal1142)) + (import "env" "ou" (func $internal1143)) + (import "env" "pu" (func $internal1144)) + (import "env" "qu" (func $internal1145)) + (import "env" "ru" (func $internal1146)) + (import "env" "su" (func $internal1147)) + (import "env" "tu" (func $internal1148)) + (import "env" "uu" (func $internal1149)) + (import "env" "vu" (func $internal1150)) + (import "env" "wu" (func $internal1151)) + (import "env" "xu" (func $internal1152)) + (import "env" "yu" (func $internal1153)) + (import "env" "zu" (func $internal1154)) + (import "env" "Au" (func $internal1155)) + (import "env" "Bu" (func $internal1156)) + (import "env" "Cu" (func $internal1157)) + (import "env" "Du" (func $internal1158)) + (import "env" "Eu" (func $internal1159)) + (import "env" "Fu" (func $internal1160)) + (import "env" "Gu" (func $internal1161)) + (import "env" "Hu" (func $internal1162)) + (import "env" "Iu" (func $internal1163)) + (import "env" "Ju" (func $internal1164)) + (import "env" "Ku" (func $internal1165)) + (import "env" "Lu" (func $internal1166)) + (import "env" "Mu" (func $internal1167)) + (import "env" "Nu" (func $internal1168)) + (import "env" "Ou" (func $internal1169)) + (import "env" "Pu" (func $internal1170)) + (import "env" "Qu" (func $internal1171)) + (import "env" "Ru" (func $internal1172)) + (import "env" "Su" (func $internal1173)) + (import "env" "Tu" (func $internal1174)) + (import "env" "Uu" (func $internal1175)) + (import "env" "Vu" (func $internal1176)) + (import "env" "Wu" (func $internal1177)) + (import "env" "Xu" (func $internal1178)) + (import "env" "Yu" (func $internal1179)) + (import "env" "Zu" (func $internal1180)) + (import "env" "_u" (func $internal1181)) + (import "env" "$u" (func $internal1182)) + (import "env" "av" (func $internal1183)) + (import "env" "bv" (func $internal1184)) + (import "env" "cv" (func $internal1185)) + (import "env" "dv" (func $internal1186)) + (import "env" "ev" (func $internal1187)) + (import "env" "fv" (func $internal1188)) + (import "env" "gv" (func $internal1189)) + (import "env" "hv" (func $internal1190)) + (import "env" "iv" (func $internal1191)) + (import "env" "jv" (func $internal1192)) + (import "env" "kv" (func $internal1193)) + (import "env" "lv" (func $internal1194)) + (import "env" "mv" (func $internal1195)) + (import "env" "nv" (func $internal1196)) + (import "env" "ov" (func $internal1197)) + (import "env" "pv" (func $internal1198)) + (import "env" "qv" (func $internal1199)) + (import "env" "rv" (func $internal1200)) + (import "env" "sv" (func $internal1201)) + (import "env" "tv" (func $internal1202)) + (import "env" "uv" (func $internal1203)) + (import "env" "vv" (func $internal1204)) + (import "env" "wv" (func $internal1205)) + (import "env" "xv" (func $internal1206)) + (import "env" "yv" (func $internal1207)) + (import "env" "zv" (func $internal1208)) + (import "env" "Av" (func $internal1209)) + (import "env" "Bv" (func $internal1210)) + (import "env" "Cv" (func $internal1211)) + (import "env" "Dv" (func $internal1212)) + (import "env" "Ev" (func $internal1213)) + (import "env" "Fv" (func $internal1214)) + (import "env" "Gv" (func $internal1215)) + (import "env" "Hv" (func $internal1216)) + (import "env" "Iv" (func $internal1217)) + (import "env" "Jv" (func $internal1218)) + (import "env" "Kv" (func $internal1219)) + (import "env" "Lv" (func $internal1220)) + (import "env" "Mv" (func $internal1221)) + (import "env" "Nv" (func $internal1222)) + (import "env" "Ov" (func $internal1223)) + (import "env" "Pv" (func $internal1224)) + (import "env" "Qv" (func $internal1225)) + (import "env" "Rv" (func $internal1226)) + (import "env" "Sv" (func $internal1227)) + (import "env" "Tv" (func $internal1228)) + (import "env" "Uv" (func $internal1229)) + (import "env" "Vv" (func $internal1230)) + (import "env" "Wv" (func $internal1231)) + (import "env" "Xv" (func $internal1232)) + (import "env" "Yv" (func $internal1233)) + (import "env" "Zv" (func $internal1234)) + (import "env" "_v" (func $internal1235)) + (import "env" "$v" (func $internal1236)) + (import "env" "aw" (func $internal1237)) + (import "env" "bw" (func $internal1238)) + (import "env" "cw" (func $internal1239)) + (import "env" "dw" (func $internal1240)) + (import "env" "ew" (func $internal1241)) + (import "env" "fw" (func $internal1242)) + (import "env" "gw" (func $internal1243)) + (import "env" "hw" (func $internal1244)) + (import "env" "iw" (func $internal1245)) + (import "env" "jw" (func $internal1246)) + (import "env" "kw" (func $internal1247)) + (import "env" "lw" (func $internal1248)) + (import "env" "mw" (func $internal1249)) + (import "env" "nw" (func $internal1250)) + (import "env" "ow" (func $internal1251)) + (import "env" "pw" (func $internal1252)) + (import "env" "qw" (func $internal1253)) + (import "env" "rw" (func $internal1254)) + (import "env" "sw" (func $internal1255)) + (import "env" "tw" (func $internal1256)) + (import "env" "uw" (func $internal1257)) + (import "env" "vw" (func $internal1258)) + (import "env" "ww" (func $internal1259)) + (import "env" "xw" (func $internal1260)) + (import "env" "yw" (func $internal1261)) + (import "env" "zw" (func $internal1262)) + (import "env" "Aw" (func $internal1263)) + (import "env" "Bw" (func $internal1264)) + (import "env" "Cw" (func $internal1265)) + (import "env" "Dw" (func $internal1266)) + (import "env" "Ew" (func $internal1267)) + (import "env" "Fw" (func $internal1268)) + (import "env" "Gw" (func $internal1269)) + (import "env" "Hw" (func $internal1270)) + (import "env" "Iw" (func $internal1271)) + (import "env" "Jw" (func $internal1272)) + (import "env" "Kw" (func $internal1273)) + (import "env" "Lw" (func $internal1274)) + (import "env" "Mw" (func $internal1275)) + (import "env" "Nw" (func $internal1276)) + (import "env" "Ow" (func $internal1277)) + (import "env" "Pw" (func $internal1278)) + (import "env" "Qw" (func $internal1279)) + (import "env" "Rw" (func $internal1280)) + (import "env" "Sw" (func $internal1281)) + (import "env" "Tw" (func $internal1282)) + (import "env" "Uw" (func $internal1283)) + (import "env" "Vw" (func $internal1284)) + (import "env" "Ww" (func $internal1285)) + (import "env" "Xw" (func $internal1286)) + (import "env" "Yw" (func $internal1287)) + (import "env" "Zw" (func $internal1288)) + (import "env" "_w" (func $internal1289)) + (import "env" "$w" (func $internal1290)) + (import "env" "ax" (func $internal1291)) + (import "env" "bx" (func $internal1292)) + (import "env" "cx" (func $internal1293)) + (import "env" "dx" (func $internal1294)) + (import "env" "ex" (func $internal1295)) + (import "env" "fx" (func $internal1296)) + (import "env" "gx" (func $internal1297)) + (import "env" "hx" (func $internal1298)) + (import "env" "ix" (func $internal1299)) + (import "env" "jx" (func $internal1300)) + (import "env" "kx" (func $internal1301)) + (import "env" "lx" (func $internal1302)) + (import "env" "mx" (func $internal1303)) + (import "env" "nx" (func $internal1304)) + (import "env" "ox" (func $internal1305)) + (import "env" "px" (func $internal1306)) + (import "env" "qx" (func $internal1307)) + (import "env" "rx" (func $internal1308)) + (import "env" "sx" (func $internal1309)) + (import "env" "tx" (func $internal1310)) + (import "env" "ux" (func $internal1311)) + (import "env" "vx" (func $internal1312)) + (import "env" "wx" (func $internal1313)) + (import "env" "xx" (func $internal1314)) + (import "env" "yx" (func $internal1315)) + (import "env" "zx" (func $internal1316)) + (import "env" "Ax" (func $internal1317)) + (import "env" "Bx" (func $internal1318)) + (import "env" "Cx" (func $internal1319)) + (import "env" "Dx" (func $internal1320)) + (import "env" "Ex" (func $internal1321)) + (import "env" "Fx" (func $internal1322)) + (import "env" "Gx" (func $internal1323)) + (import "env" "Hx" (func $internal1324)) + (import "env" "Ix" (func $internal1325)) + (import "env" "Jx" (func $internal1326)) + (import "env" "Kx" (func $internal1327)) + (import "env" "Lx" (func $internal1328)) + (import "env" "Mx" (func $internal1329)) + (import "env" "Nx" (func $internal1330)) + (import "env" "Ox" (func $internal1331)) + (import "env" "Px" (func $internal1332)) + (import "env" "Qx" (func $internal1333)) + (import "env" "Rx" (func $internal1334)) + (import "env" "Sx" (func $internal1335)) + (import "env" "Tx" (func $internal1336)) + (import "env" "Ux" (func $internal1337)) + (import "env" "Vx" (func $internal1338)) + (import "env" "Wx" (func $internal1339)) + (import "env" "Xx" (func $internal1340)) + (import "env" "Yx" (func $internal1341)) + (import "env" "Zx" (func $internal1342)) + (import "env" "_x" (func $internal1343)) + (import "env" "$x" (func $internal1344)) + (import "env" "ay" (func $internal1345)) + (import "env" "by" (func $internal1346)) + (import "env" "cy" (func $internal1347)) + (import "env" "dy" (func $internal1348)) + (import "env" "ey" (func $internal1349)) + (import "env" "fy" (func $internal1350)) + (import "env" "gy" (func $internal1351)) + (import "env" "hy" (func $internal1352)) + (import "env" "iy" (func $internal1353)) + (import "env" "jy" (func $internal1354)) + (import "env" "ky" (func $internal1355)) + (import "env" "ly" (func $internal1356)) + (import "env" "my" (func $internal1357)) + (import "env" "ny" (func $internal1358)) + (import "env" "oy" (func $internal1359)) + (import "env" "py" (func $internal1360)) + (import "env" "qy" (func $internal1361)) + (import "env" "ry" (func $internal1362)) + (import "env" "sy" (func $internal1363)) + (import "env" "ty" (func $internal1364)) + (import "env" "uy" (func $internal1365)) + (import "env" "vy" (func $internal1366)) + (import "env" "wy" (func $internal1367)) + (import "env" "xy" (func $internal1368)) + (import "env" "yy" (func $internal1369)) + (import "env" "zy" (func $internal1370)) + (import "env" "Ay" (func $internal1371)) + (import "env" "By" (func $internal1372)) + (import "env" "Cy" (func $internal1373)) + (import "env" "Dy" (func $internal1374)) + (import "env" "Ey" (func $internal1375)) + (import "env" "Fy" (func $internal1376)) + (import "env" "Gy" (func $internal1377)) + (import "env" "Hy" (func $internal1378)) + (import "env" "Iy" (func $internal1379)) + (import "env" "Jy" (func $internal1380)) + (import "env" "Ky" (func $internal1381)) + (import "env" "Ly" (func $internal1382)) + (import "env" "My" (func $internal1383)) + (import "env" "Ny" (func $internal1384)) + (import "env" "Oy" (func $internal1385)) + (import "env" "Py" (func $internal1386)) + (import "env" "Qy" (func $internal1387)) + (import "env" "Ry" (func $internal1388)) + (import "env" "Sy" (func $internal1389)) + (import "env" "Ty" (func $internal1390)) + (import "env" "Uy" (func $internal1391)) + (import "env" "Vy" (func $internal1392)) + (import "env" "Wy" (func $internal1393)) + (import "env" "Xy" (func $internal1394)) + (import "env" "Yy" (func $internal1395)) + (import "env" "Zy" (func $internal1396)) + (import "env" "_y" (func $internal1397)) + (import "env" "$y" (func $internal1398)) + (import "env" "az" (func $internal1399)) + (import "env" "bz" (func $internal1400)) + (import "env" "cz" (func $internal1401)) + (import "env" "dz" (func $internal1402)) + (import "env" "ez" (func $internal1403)) + (import "env" "fz" (func $internal1404)) + (import "env" "gz" (func $internal1405)) + (import "env" "hz" (func $internal1406)) + (import "env" "iz" (func $internal1407)) + (import "env" "jz" (func $internal1408)) + (import "env" "kz" (func $internal1409)) + (import "env" "lz" (func $internal1410)) + (import "env" "mz" (func $internal1411)) + (import "env" "nz" (func $internal1412)) + (import "env" "oz" (func $internal1413)) + (import "env" "pz" (func $internal1414)) + (import "env" "qz" (func $internal1415)) + (import "env" "rz" (func $internal1416)) + (import "env" "sz" (func $internal1417)) + (import "env" "tz" (func $internal1418)) + (import "env" "uz" (func $internal1419)) + (import "env" "vz" (func $internal1420)) + (import "env" "wz" (func $internal1421)) + (import "env" "xz" (func $internal1422)) + (import "env" "yz" (func $internal1423)) + (import "env" "zz" (func $internal1424)) + (import "env" "Az" (func $internal1425)) + (import "env" "Bz" (func $internal1426)) + (import "env" "Cz" (func $internal1427)) + (import "env" "Dz" (func $internal1428)) + (import "env" "Ez" (func $internal1429)) + (import "env" "Fz" (func $internal1430)) + (import "env" "Gz" (func $internal1431)) + (import "env" "Hz" (func $internal1432)) + (import "env" "Iz" (func $internal1433)) + (import "env" "Jz" (func $internal1434)) + (import "env" "Kz" (func $internal1435)) + (import "env" "Lz" (func $internal1436)) + (import "env" "Mz" (func $internal1437)) + (import "env" "Nz" (func $internal1438)) + (import "env" "Oz" (func $internal1439)) + (import "env" "Pz" (func $internal1440)) + (import "env" "Qz" (func $internal1441)) + (import "env" "Rz" (func $internal1442)) + (import "env" "Sz" (func $internal1443)) + (import "env" "Tz" (func $internal1444)) + (import "env" "Uz" (func $internal1445)) + (import "env" "Vz" (func $internal1446)) + (import "env" "Wz" (func $internal1447)) + (import "env" "Xz" (func $internal1448)) + (import "env" "Yz" (func $internal1449)) + (import "env" "Zz" (func $internal1450)) + (import "env" "_z" (func $internal1451)) + (import "env" "$z" (func $internal1452)) + (import "env" "aA" (func $internal1453)) + (import "env" "bA" (func $internal1454)) + (import "env" "cA" (func $internal1455)) + (import "env" "dA" (func $internal1456)) + (import "env" "eA" (func $internal1457)) + (import "env" "fA" (func $internal1458)) + (import "env" "gA" (func $internal1459)) + (import "env" "hA" (func $internal1460)) + (import "env" "iA" (func $internal1461)) + (import "env" "jA" (func $internal1462)) + (import "env" "kA" (func $internal1463)) + (import "env" "lA" (func $internal1464)) + (import "env" "mA" (func $internal1465)) + (import "env" "nA" (func $internal1466)) + (import "env" "oA" (func $internal1467)) + (import "env" "pA" (func $internal1468)) + (import "env" "qA" (func $internal1469)) + (import "env" "rA" (func $internal1470)) + (import "env" "sA" (func $internal1471)) + (import "env" "tA" (func $internal1472)) + (import "env" "uA" (func $internal1473)) + (import "env" "vA" (func $internal1474)) + (import "env" "wA" (func $internal1475)) + (import "env" "xA" (func $internal1476)) + (import "env" "yA" (func $internal1477)) + (import "env" "zA" (func $internal1478)) + (import "env" "AA" (func $internal1479)) + (import "env" "BA" (func $internal1480)) + (import "env" "CA" (func $internal1481)) + (import "env" "DA" (func $internal1482)) + (import "env" "EA" (func $internal1483)) + (import "env" "FA" (func $internal1484)) + (import "env" "GA" (func $internal1485)) + (import "env" "HA" (func $internal1486)) + (import "env" "IA" (func $internal1487)) + (import "env" "JA" (func $internal1488)) + (import "env" "KA" (func $internal1489)) + (import "env" "LA" (func $internal1490)) + (import "env" "MA" (func $internal1491)) + (import "env" "NA" (func $internal1492)) + (import "env" "OA" (func $internal1493)) + (import "env" "PA" (func $internal1494)) + (import "env" "QA" (func $internal1495)) + (import "env" "RA" (func $internal1496)) + (import "env" "SA" (func $internal1497)) + (import "env" "TA" (func $internal1498)) + (import "env" "UA" (func $internal1499)) + (import "env" "VA" (func $internal1500)) + (import "env" "WA" (func $internal1501)) + (import "env" "XA" (func $internal1502)) + (import "env" "YA" (func $internal1503)) + (import "env" "ZA" (func $internal1504)) + (import "env" "_A" (func $internal1505)) + (import "env" "$A" (func $internal1506)) + (import "env" "aB" (func $internal1507)) + (import "env" "bB" (func $internal1508)) + (import "env" "cB" (func $internal1509)) + (import "env" "dB" (func $internal1510)) + (import "env" "eB" (func $internal1511)) + (import "env" "fB" (func $internal1512)) + (import "env" "gB" (func $internal1513)) + (import "env" "hB" (func $internal1514)) + (import "env" "iB" (func $internal1515)) + (import "env" "jB" (func $internal1516)) + (import "env" "kB" (func $internal1517)) + (import "env" "lB" (func $internal1518)) + (import "env" "mB" (func $internal1519)) + (import "env" "nB" (func $internal1520)) + (import "env" "oB" (func $internal1521)) + (import "env" "pB" (func $internal1522)) + (import "env" "qB" (func $internal1523)) + (import "env" "rB" (func $internal1524)) + (import "env" "sB" (func $internal1525)) + (import "env" "tB" (func $internal1526)) + (import "env" "uB" (func $internal1527)) + (import "env" "vB" (func $internal1528)) + (import "env" "wB" (func $internal1529)) + (import "env" "xB" (func $internal1530)) + (import "env" "yB" (func $internal1531)) + (import "env" "zB" (func $internal1532)) + (import "env" "AB" (func $internal1533)) + (import "env" "BB" (func $internal1534)) + (import "env" "CB" (func $internal1535)) + (import "env" "DB" (func $internal1536)) + (import "env" "EB" (func $internal1537)) + (import "env" "FB" (func $internal1538)) + (import "env" "GB" (func $internal1539)) + (import "env" "HB" (func $internal1540)) + (import "env" "IB" (func $internal1541)) + (import "env" "JB" (func $internal1542)) + (import "env" "KB" (func $internal1543)) + (import "env" "LB" (func $internal1544)) + (import "env" "MB" (func $internal1545)) + (import "env" "NB" (func $internal1546)) + (import "env" "OB" (func $internal1547)) + (import "env" "PB" (func $internal1548)) + (import "env" "QB" (func $internal1549)) + (import "env" "RB" (func $internal1550)) + (import "env" "SB" (func $internal1551)) + (import "env" "TB" (func $internal1552)) + (import "env" "UB" (func $internal1553)) + (import "env" "VB" (func $internal1554)) + (import "env" "WB" (func $internal1555)) + (import "env" "XB" (func $internal1556)) + (import "env" "YB" (func $internal1557)) + (import "env" "ZB" (func $internal1558)) + (import "env" "_B" (func $internal1559)) + (import "env" "$B" (func $internal1560)) + (import "env" "aC" (func $internal1561)) + (import "env" "bC" (func $internal1562)) + (import "env" "cC" (func $internal1563)) + (import "env" "dC" (func $internal1564)) + (import "env" "eC" (func $internal1565)) + (import "env" "fC" (func $internal1566)) + (import "env" "gC" (func $internal1567)) + (import "env" "hC" (func $internal1568)) + (import "env" "iC" (func $internal1569)) + (import "env" "jC" (func $internal1570)) + (import "env" "kC" (func $internal1571)) + (import "env" "lC" (func $internal1572)) + (import "env" "mC" (func $internal1573)) + (import "env" "nC" (func $internal1574)) + (import "env" "oC" (func $internal1575)) + (import "env" "pC" (func $internal1576)) + (import "env" "qC" (func $internal1577)) + (import "env" "rC" (func $internal1578)) + (import "env" "sC" (func $internal1579)) + (import "env" "tC" (func $internal1580)) + (import "env" "uC" (func $internal1581)) + (import "env" "vC" (func $internal1582)) + (import "env" "wC" (func $internal1583)) + (import "env" "xC" (func $internal1584)) + (import "env" "yC" (func $internal1585)) + (import "env" "zC" (func $internal1586)) + (import "env" "AC" (func $internal1587)) + (import "env" "BC" (func $internal1588)) + (import "env" "CC" (func $internal1589)) + (import "env" "DC" (func $internal1590)) + (import "env" "EC" (func $internal1591)) + (import "env" "FC" (func $internal1592)) + (import "env" "GC" (func $internal1593)) + (import "env" "HC" (func $internal1594)) + (import "env" "IC" (func $internal1595)) + (import "env" "JC" (func $internal1596)) + (import "env" "KC" (func $internal1597)) + (import "env" "LC" (func $internal1598)) + (import "env" "MC" (func $internal1599)) + (import "env" "NC" (func $internal1600)) + (import "env" "OC" (func $internal1601)) + (import "env" "PC" (func $internal1602)) + (import "env" "QC" (func $internal1603)) + (import "env" "RC" (func $internal1604)) + (import "env" "SC" (func $internal1605)) + (import "env" "TC" (func $internal1606)) + (import "env" "UC" (func $internal1607)) + (import "env" "VC" (func $internal1608)) + (import "env" "WC" (func $internal1609)) + (import "env" "XC" (func $internal1610)) + (import "env" "YC" (func $internal1611)) + (import "env" "ZC" (func $internal1612)) + (import "env" "_C" (func $internal1613)) + (import "env" "$C" (func $internal1614)) + (import "env" "aD" (func $internal1615)) + (import "env" "bD" (func $internal1616)) + (import "env" "cD" (func $internal1617)) + (import "env" "dD" (func $internal1618)) + (import "env" "eD" (func $internal1619)) + (import "env" "fD" (func $internal1620)) + (import "env" "gD" (func $internal1621)) + (import "env" "hD" (func $internal1622)) + (import "env" "iD" (func $internal1623)) + (import "env" "jD" (func $internal1624)) + (import "env" "kD" (func $internal1625)) + (import "env" "lD" (func $internal1626)) + (import "env" "mD" (func $internal1627)) + (import "env" "nD" (func $internal1628)) + (import "env" "oD" (func $internal1629)) + (import "env" "pD" (func $internal1630)) + (import "env" "qD" (func $internal1631)) + (import "env" "rD" (func $internal1632)) + (import "env" "sD" (func $internal1633)) + (import "env" "tD" (func $internal1634)) + (import "env" "uD" (func $internal1635)) + (import "env" "vD" (func $internal1636)) + (import "env" "wD" (func $internal1637)) + (import "env" "xD" (func $internal1638)) + (import "env" "yD" (func $internal1639)) + (import "env" "zD" (func $internal1640)) + (import "env" "AD" (func $internal1641)) + (import "env" "BD" (func $internal1642)) + (import "env" "CD" (func $internal1643)) + (import "env" "DD" (func $internal1644)) + (import "env" "ED" (func $internal1645)) + (import "env" "FD" (func $internal1646)) + (import "env" "GD" (func $internal1647)) + (import "env" "HD" (func $internal1648)) + (import "env" "ID" (func $internal1649)) + (import "env" "JD" (func $internal1650)) + (import "env" "KD" (func $internal1651)) + (import "env" "LD" (func $internal1652)) + (import "env" "MD" (func $internal1653)) + (import "env" "ND" (func $internal1654)) + (import "env" "OD" (func $internal1655)) + (import "env" "PD" (func $internal1656)) + (import "env" "QD" (func $internal1657)) + (import "env" "RD" (func $internal1658)) + (import "env" "SD" (func $internal1659)) + (import "env" "TD" (func $internal1660)) + (import "env" "UD" (func $internal1661)) + (import "env" "VD" (func $internal1662)) + (import "env" "WD" (func $internal1663)) + (import "env" "XD" (func $internal1664)) + (import "env" "YD" (func $internal1665)) + (import "env" "ZD" (func $internal1666)) + (import "env" "_D" (func $internal1667)) + (import "env" "$D" (func $internal1668)) + (import "env" "aE" (func $internal1669)) + (import "env" "bE" (func $internal1670)) + (import "env" "cE" (func $internal1671)) + (import "env" "dE" (func $internal1672)) + (import "env" "eE" (func $internal1673)) + (import "env" "fE" (func $internal1674)) + (import "env" "gE" (func $internal1675)) + (import "env" "hE" (func $internal1676)) + (import "env" "iE" (func $internal1677)) + (import "env" "jE" (func $internal1678)) + (import "env" "kE" (func $internal1679)) + (import "env" "lE" (func $internal1680)) + (import "env" "mE" (func $internal1681)) + (import "env" "nE" (func $internal1682)) + (import "env" "oE" (func $internal1683)) + (import "env" "pE" (func $internal1684)) + (import "env" "qE" (func $internal1685)) + (import "env" "rE" (func $internal1686)) + (import "env" "sE" (func $internal1687)) + (import "env" "tE" (func $internal1688)) + (import "env" "uE" (func $internal1689)) + (import "env" "vE" (func $internal1690)) + (import "env" "wE" (func $internal1691)) + (import "env" "xE" (func $internal1692)) + (import "env" "yE" (func $internal1693)) + (import "env" "zE" (func $internal1694)) + (import "env" "AE" (func $internal1695)) + (import "env" "BE" (func $internal1696)) + (import "env" "CE" (func $internal1697)) + (import "env" "DE" (func $internal1698)) + (import "env" "EE" (func $internal1699)) + (import "env" "FE" (func $internal1700)) + (import "env" "GE" (func $internal1701)) + (import "env" "HE" (func $internal1702)) + (import "env" "IE" (func $internal1703)) + (import "env" "JE" (func $internal1704)) + (import "env" "KE" (func $internal1705)) + (import "env" "LE" (func $internal1706)) + (import "env" "ME" (func $internal1707)) + (import "env" "NE" (func $internal1708)) + (import "env" "OE" (func $internal1709)) + (import "env" "PE" (func $internal1710)) + (import "env" "QE" (func $internal1711)) + (import "env" "RE" (func $internal1712)) + (import "env" "SE" (func $internal1713)) + (import "env" "TE" (func $internal1714)) + (import "env" "UE" (func $internal1715)) + (import "env" "VE" (func $internal1716)) + (import "env" "WE" (func $internal1717)) + (import "env" "XE" (func $internal1718)) + (import "env" "YE" (func $internal1719)) + (import "env" "ZE" (func $internal1720)) + (import "env" "_E" (func $internal1721)) + (import "env" "$E" (func $internal1722)) + (import "env" "aF" (func $internal1723)) + (import "env" "bF" (func $internal1724)) + (import "env" "cF" (func $internal1725)) + (import "env" "dF" (func $internal1726)) + (import "env" "eF" (func $internal1727)) + (import "env" "fF" (func $internal1728)) + (import "env" "gF" (func $internal1729)) + (import "env" "hF" (func $internal1730)) + (import "env" "iF" (func $internal1731)) + (import "env" "jF" (func $internal1732)) + (import "env" "kF" (func $internal1733)) + (import "env" "lF" (func $internal1734)) + (import "env" "mF" (func $internal1735)) + (import "env" "nF" (func $internal1736)) + (import "env" "oF" (func $internal1737)) + (import "env" "pF" (func $internal1738)) + (import "env" "qF" (func $internal1739)) + (import "env" "rF" (func $internal1740)) + (import "env" "sF" (func $internal1741)) + (import "env" "tF" (func $internal1742)) + (import "env" "uF" (func $internal1743)) + (import "env" "vF" (func $internal1744)) + (import "env" "wF" (func $internal1745)) + (import "env" "xF" (func $internal1746)) + (import "env" "yF" (func $internal1747)) + (import "env" "zF" (func $internal1748)) + (import "env" "AF" (func $internal1749)) + (import "env" "BF" (func $internal1750)) + (import "env" "CF" (func $internal1751)) + (import "env" "DF" (func $internal1752)) + (import "env" "EF" (func $internal1753)) + (import "env" "FF" (func $internal1754)) + (import "env" "GF" (func $internal1755)) + (import "env" "HF" (func $internal1756)) + (import "env" "IF" (func $internal1757)) + (import "env" "JF" (func $internal1758)) + (import "env" "KF" (func $internal1759)) + (import "env" "LF" (func $internal1760)) + (import "env" "MF" (func $internal1761)) + (import "env" "NF" (func $internal1762)) + (import "env" "OF" (func $internal1763)) + (import "env" "PF" (func $internal1764)) + (import "env" "QF" (func $internal1765)) + (import "env" "RF" (func $internal1766)) + (import "env" "SF" (func $internal1767)) + (import "env" "TF" (func $internal1768)) + (import "env" "UF" (func $internal1769)) + (import "env" "VF" (func $internal1770)) + (import "env" "WF" (func $internal1771)) + (import "env" "XF" (func $internal1772)) + (import "env" "YF" (func $internal1773)) + (import "env" "ZF" (func $internal1774)) + (import "env" "_F" (func $internal1775)) + (import "env" "$F" (func $internal1776)) + (import "env" "aG" (func $internal1777)) + (import "env" "bG" (func $internal1778)) + (import "env" "cG" (func $internal1779)) + (import "env" "dG" (func $internal1780)) + (import "env" "eG" (func $internal1781)) + (import "env" "fG" (func $internal1782)) + (import "env" "gG" (func $internal1783)) + (import "env" "hG" (func $internal1784)) + (import "env" "iG" (func $internal1785)) + (import "env" "jG" (func $internal1786)) + (import "env" "kG" (func $internal1787)) + (import "env" "lG" (func $internal1788)) + (import "env" "mG" (func $internal1789)) + (import "env" "nG" (func $internal1790)) + (import "env" "oG" (func $internal1791)) + (import "env" "pG" (func $internal1792)) + (import "env" "qG" (func $internal1793)) + (import "env" "rG" (func $internal1794)) + (import "env" "sG" (func $internal1795)) + (import "env" "tG" (func $internal1796)) + (import "env" "uG" (func $internal1797)) + (import "env" "vG" (func $internal1798)) + (import "env" "wG" (func $internal1799)) + (import "env" "xG" (func $internal1800)) + (import "env" "yG" (func $internal1801)) + (import "env" "zG" (func $internal1802)) + (import "env" "AG" (func $internal1803)) + (import "env" "BG" (func $internal1804)) + (import "env" "CG" (func $internal1805)) + (import "env" "DG" (func $internal1806)) + (import "env" "EG" (func $internal1807)) + (import "env" "FG" (func $internal1808)) + (import "env" "GG" (func $internal1809)) + (import "env" "HG" (func $internal1810)) + (import "env" "IG" (func $internal1811)) + (import "env" "JG" (func $internal1812)) + (import "env" "KG" (func $internal1813)) + (import "env" "LG" (func $internal1814)) + (import "env" "MG" (func $internal1815)) + (import "env" "NG" (func $internal1816)) + (import "env" "OG" (func $internal1817)) + (import "env" "PG" (func $internal1818)) + (import "env" "QG" (func $internal1819)) + (import "env" "RG" (func $internal1820)) + (import "env" "SG" (func $internal1821)) + (import "env" "TG" (func $internal1822)) + (import "env" "UG" (func $internal1823)) + (import "env" "VG" (func $internal1824)) + (import "env" "WG" (func $internal1825)) + (import "env" "XG" (func $internal1826)) + (import "env" "YG" (func $internal1827)) + (import "env" "ZG" (func $internal1828)) + (import "env" "_G" (func $internal1829)) + (import "env" "$G" (func $internal1830)) + (import "env" "aH" (func $internal1831)) + (import "env" "bH" (func $internal1832)) + (import "env" "cH" (func $internal1833)) + (import "env" "dH" (func $internal1834)) + (import "env" "eH" (func $internal1835)) + (import "env" "fH" (func $internal1836)) + (import "env" "gH" (func $internal1837)) + (import "env" "hH" (func $internal1838)) + (import "env" "iH" (func $internal1839)) + (import "env" "jH" (func $internal1840)) + (import "env" "kH" (func $internal1841)) + (import "env" "lH" (func $internal1842)) + (import "env" "mH" (func $internal1843)) + (import "env" "nH" (func $internal1844)) + (import "env" "oH" (func $internal1845)) + (import "env" "pH" (func $internal1846)) + (import "env" "qH" (func $internal1847)) + (import "env" "rH" (func $internal1848)) + (import "env" "sH" (func $internal1849)) + (import "env" "tH" (func $internal1850)) + (import "env" "uH" (func $internal1851)) + (import "env" "vH" (func $internal1852)) + (import "env" "wH" (func $internal1853)) + (import "env" "xH" (func $internal1854)) + (import "env" "yH" (func $internal1855)) + (import "env" "zH" (func $internal1856)) + (import "env" "AH" (func $internal1857)) + (import "env" "BH" (func $internal1858)) + (import "env" "CH" (func $internal1859)) + (import "env" "DH" (func $internal1860)) + (import "env" "EH" (func $internal1861)) + (import "env" "FH" (func $internal1862)) + (import "env" "GH" (func $internal1863)) + (import "env" "HH" (func $internal1864)) + (import "env" "IH" (func $internal1865)) + (import "env" "JH" (func $internal1866)) + (import "env" "KH" (func $internal1867)) + (import "env" "LH" (func $internal1868)) + (import "env" "MH" (func $internal1869)) + (import "env" "NH" (func $internal1870)) + (import "env" "OH" (func $internal1871)) + (import "env" "PH" (func $internal1872)) + (import "env" "QH" (func $internal1873)) + (import "env" "RH" (func $internal1874)) + (import "env" "SH" (func $internal1875)) + (import "env" "TH" (func $internal1876)) + (import "env" "UH" (func $internal1877)) + (import "env" "VH" (func $internal1878)) + (import "env" "WH" (func $internal1879)) + (import "env" "XH" (func $internal1880)) + (import "env" "YH" (func $internal1881)) + (import "env" "ZH" (func $internal1882)) + (import "env" "_H" (func $internal1883)) + (import "env" "$H" (func $internal1884)) + (import "env" "aI" (func $internal1885)) + (import "env" "bI" (func $internal1886)) + (import "env" "cI" (func $internal1887)) + (import "env" "dI" (func $internal1888)) + (import "env" "eI" (func $internal1889)) + (import "env" "fI" (func $internal1890)) + (import "env" "gI" (func $internal1891)) + (import "env" "hI" (func $internal1892)) + (import "env" "iI" (func $internal1893)) + (import "env" "jI" (func $internal1894)) + (import "env" "kI" (func $internal1895)) + (import "env" "lI" (func $internal1896)) + (import "env" "mI" (func $internal1897)) + (import "env" "nI" (func $internal1898)) + (import "env" "oI" (func $internal1899)) + (import "env" "pI" (func $internal1900)) + (import "env" "qI" (func $internal1901)) + (import "env" "rI" (func $internal1902)) + (import "env" "sI" (func $internal1903)) + (import "env" "tI" (func $internal1904)) + (import "env" "uI" (func $internal1905)) + (import "env" "vI" (func $internal1906)) + (import "env" "wI" (func $internal1907)) + (import "env" "xI" (func $internal1908)) + (import "env" "yI" (func $internal1909)) + (import "env" "zI" (func $internal1910)) + (import "env" "AI" (func $internal1911)) + (import "env" "BI" (func $internal1912)) + (import "env" "CI" (func $internal1913)) + (import "env" "DI" (func $internal1914)) + (import "env" "EI" (func $internal1915)) + (import "env" "FI" (func $internal1916)) + (import "env" "GI" (func $internal1917)) + (import "env" "HI" (func $internal1918)) + (import "env" "II" (func $internal1919)) + (import "env" "JI" (func $internal1920)) + (import "env" "KI" (func $internal1921)) + (import "env" "LI" (func $internal1922)) + (import "env" "MI" (func $internal1923)) + (import "env" "NI" (func $internal1924)) + (import "env" "OI" (func $internal1925)) + (import "env" "PI" (func $internal1926)) + (import "env" "QI" (func $internal1927)) + (import "env" "RI" (func $internal1928)) + (import "env" "SI" (func $internal1929)) + (import "env" "TI" (func $internal1930)) + (import "env" "UI" (func $internal1931)) + (import "env" "VI" (func $internal1932)) + (import "env" "WI" (func $internal1933)) + (import "env" "XI" (func $internal1934)) + (import "env" "YI" (func $internal1935)) + (import "env" "ZI" (func $internal1936)) + (import "env" "_I" (func $internal1937)) + (import "env" "$I" (func $internal1938)) + (import "env" "aJ" (func $internal1939)) + (import "env" "bJ" (func $internal1940)) + (import "env" "cJ" (func $internal1941)) + (import "env" "dJ" (func $internal1942)) + (import "env" "eJ" (func $internal1943)) + (import "env" "fJ" (func $internal1944)) + (import "env" "gJ" (func $internal1945)) + (import "env" "hJ" (func $internal1946)) + (import "env" "iJ" (func $internal1947)) + (import "env" "jJ" (func $internal1948)) + (import "env" "kJ" (func $internal1949)) + (import "env" "lJ" (func $internal1950)) + (import "env" "mJ" (func $internal1951)) + (import "env" "nJ" (func $internal1952)) + (import "env" "oJ" (func $internal1953)) + (import "env" "pJ" (func $internal1954)) + (import "env" "qJ" (func $internal1955)) + (import "env" "rJ" (func $internal1956)) + (import "env" "sJ" (func $internal1957)) + (import "env" "tJ" (func $internal1958)) + (import "env" "uJ" (func $internal1959)) + (import "env" "vJ" (func $internal1960)) + (import "env" "wJ" (func $internal1961)) + (import "env" "xJ" (func $internal1962)) + (import "env" "yJ" (func $internal1963)) + (import "env" "zJ" (func $internal1964)) + (import "env" "AJ" (func $internal1965)) + (import "env" "BJ" (func $internal1966)) + (import "env" "CJ" (func $internal1967)) + (import "env" "DJ" (func $internal1968)) + (import "env" "EJ" (func $internal1969)) + (import "env" "FJ" (func $internal1970)) + (import "env" "GJ" (func $internal1971)) + (import "env" "HJ" (func $internal1972)) + (import "env" "IJ" (func $internal1973)) + (import "env" "JJ" (func $internal1974)) + (import "env" "KJ" (func $internal1975)) + (import "env" "LJ" (func $internal1976)) + (import "env" "MJ" (func $internal1977)) + (import "env" "NJ" (func $internal1978)) + (import "env" "OJ" (func $internal1979)) + (import "env" "PJ" (func $internal1980)) + (import "env" "QJ" (func $internal1981)) + (import "env" "RJ" (func $internal1982)) + (import "env" "SJ" (func $internal1983)) + (import "env" "TJ" (func $internal1984)) + (import "env" "UJ" (func $internal1985)) + (import "env" "VJ" (func $internal1986)) + (import "env" "WJ" (func $internal1987)) + (import "env" "XJ" (func $internal1988)) + (import "env" "YJ" (func $internal1989)) + (import "env" "ZJ" (func $internal1990)) + (import "env" "_J" (func $internal1991)) + (import "env" "$J" (func $internal1992)) + (import "env" "aK" (func $internal1993)) + (import "env" "bK" (func $internal1994)) + (import "env" "cK" (func $internal1995)) + (import "env" "dK" (func $internal1996)) + (import "env" "eK" (func $internal1997)) + (import "env" "fK" (func $internal1998)) + (import "env" "gK" (func $internal1999)) + (import "env" "hK" (func $internal2000)) + (import "env" "iK" (func $internal2001)) + (import "env" "jK" (func $internal2002)) + (import "env" "kK" (func $internal2003)) + (import "env" "lK" (func $internal2004)) + (import "env" "mK" (func $internal2005)) + (import "env" "nK" (func $internal2006)) + (import "env" "oK" (func $internal2007)) + (import "env" "pK" (func $internal2008)) + (import "env" "qK" (func $internal2009)) + (import "env" "rK" (func $internal2010)) + (import "env" "sK" (func $internal2011)) + (import "env" "tK" (func $internal2012)) + (import "env" "uK" (func $internal2013)) + (import "env" "vK" (func $internal2014)) + (import "env" "wK" (func $internal2015)) + (import "env" "xK" (func $internal2016)) + (import "env" "yK" (func $internal2017)) + (import "env" "zK" (func $internal2018)) + (import "env" "AK" (func $internal2019)) + (import "env" "BK" (func $internal2020)) + (import "env" "CK" (func $internal2021)) + (import "env" "DK" (func $internal2022)) + (import "env" "EK" (func $internal2023)) + (import "env" "FK" (func $internal2024)) + (import "env" "GK" (func $internal2025)) + (import "env" "HK" (func $internal2026)) + (import "env" "IK" (func $internal2027)) + (import "env" "JK" (func $internal2028)) + (import "env" "KK" (func $internal2029)) + (import "env" "LK" (func $internal2030)) + (import "env" "MK" (func $internal2031)) + (import "env" "NK" (func $internal2032)) + (import "env" "OK" (func $internal2033)) + (import "env" "PK" (func $internal2034)) + (import "env" "QK" (func $internal2035)) + (import "env" "RK" (func $internal2036)) + (import "env" "SK" (func $internal2037)) + (import "env" "TK" (func $internal2038)) + (import "env" "UK" (func $internal2039)) + (import "env" "VK" (func $internal2040)) + (import "env" "WK" (func $internal2041)) + (import "env" "XK" (func $internal2042)) + (import "env" "YK" (func $internal2043)) + (import "env" "ZK" (func $internal2044)) + (import "env" "_K" (func $internal2045)) + (import "env" "$K" (func $internal2046)) + (import "env" "aL" (func $internal2047)) + (import "env" "bL" (func $internal2048)) + (import "env" "cL" (func $internal2049)) + (import "env" "dL" (func $internal2050)) + (import "env" "eL" (func $internal2051)) + (import "env" "fL" (func $internal2052)) + (import "env" "gL" (func $internal2053)) + (import "env" "hL" (func $internal2054)) + (import "env" "iL" (func $internal2055)) + (import "env" "jL" (func $internal2056)) + (import "env" "kL" (func $internal2057)) + (import "env" "lL" (func $internal2058)) + (import "env" "mL" (func $internal2059)) + (import "env" "nL" (func $internal2060)) + (import "env" "oL" (func $internal2061)) + (import "env" "pL" (func $internal2062)) + (import "env" "qL" (func $internal2063)) + (import "env" "rL" (func $internal2064)) + (import "env" "sL" (func $internal2065)) + (import "env" "tL" (func $internal2066)) + (import "env" "uL" (func $internal2067)) + (import "env" "vL" (func $internal2068)) + (import "env" "wL" (func $internal2069)) + (import "env" "xL" (func $internal2070)) + (import "env" "yL" (func $internal2071)) + (import "env" "zL" (func $internal2072)) + (import "env" "AL" (func $internal2073)) + (import "env" "BL" (func $internal2074)) + (import "env" "CL" (func $internal2075)) + (import "env" "DL" (func $internal2076)) + (import "env" "EL" (func $internal2077)) + (import "env" "FL" (func $internal2078)) + (import "env" "GL" (func $internal2079)) + (import "env" "HL" (func $internal2080)) + (import "env" "IL" (func $internal2081)) + (import "env" "JL" (func $internal2082)) + (import "env" "KL" (func $internal2083)) + (import "env" "LL" (func $internal2084)) + (import "env" "ML" (func $internal2085)) + (import "env" "NL" (func $internal2086)) + (import "env" "OL" (func $internal2087)) + (import "env" "PL" (func $internal2088)) + (import "env" "QL" (func $internal2089)) + (import "env" "RL" (func $internal2090)) + (import "env" "SL" (func $internal2091)) + (import "env" "TL" (func $internal2092)) + (import "env" "UL" (func $internal2093)) + (import "env" "VL" (func $internal2094)) + (import "env" "WL" (func $internal2095)) + (import "env" "XL" (func $internal2096)) + (import "env" "YL" (func $internal2097)) + (import "env" "ZL" (func $internal2098)) + (import "env" "_L" (func $internal2099)) + (import "env" "$L" (func $internal2100)) + (import "env" "aM" (func $internal2101)) + (import "env" "bM" (func $internal2102)) + (import "env" "cM" (func $internal2103)) + (import "env" "dM" (func $internal2104)) + (import "env" "eM" (func $internal2105)) + (import "env" "fM" (func $internal2106)) + (import "env" "gM" (func $internal2107)) + (import "env" "hM" (func $internal2108)) + (import "env" "iM" (func $internal2109)) + (import "env" "jM" (func $internal2110)) + (import "env" "kM" (func $internal2111)) + (import "env" "lM" (func $internal2112)) + (import "env" "mM" (func $internal2113)) + (import "env" "nM" (func $internal2114)) + (import "env" "oM" (func $internal2115)) + (import "env" "pM" (func $internal2116)) + (import "env" "qM" (func $internal2117)) + (import "env" "rM" (func $internal2118)) + (import "env" "sM" (func $internal2119)) + (import "env" "tM" (func $internal2120)) + (import "env" "uM" (func $internal2121)) + (import "env" "vM" (func $internal2122)) + (import "env" "wM" (func $internal2123)) + (import "env" "xM" (func $internal2124)) + (import "env" "yM" (func $internal2125)) + (import "env" "zM" (func $internal2126)) + (import "env" "AM" (func $internal2127)) + (import "env" "BM" (func $internal2128)) + (import "env" "CM" (func $internal2129)) + (import "env" "DM" (func $internal2130)) + (import "env" "EM" (func $internal2131)) + (import "env" "FM" (func $internal2132)) + (import "env" "GM" (func $internal2133)) + (import "env" "HM" (func $internal2134)) + (import "env" "IM" (func $internal2135)) + (import "env" "JM" (func $internal2136)) + (import "env" "KM" (func $internal2137)) + (import "env" "LM" (func $internal2138)) + (import "env" "MM" (func $internal2139)) + (import "env" "NM" (func $internal2140)) + (import "env" "OM" (func $internal2141)) + (import "env" "PM" (func $internal2142)) + (import "env" "QM" (func $internal2143)) + (import "env" "RM" (func $internal2144)) + (import "env" "SM" (func $internal2145)) + (import "env" "TM" (func $internal2146)) + (import "env" "UM" (func $internal2147)) + (import "env" "VM" (func $internal2148)) + (import "env" "WM" (func $internal2149)) + (import "env" "XM" (func $internal2150)) + (import "env" "YM" (func $internal2151)) + (import "env" "ZM" (func $internal2152)) + (import "env" "_M" (func $internal2153)) + (import "env" "$M" (func $internal2154)) + (import "env" "aN" (func $internal2155)) + (import "env" "bN" (func $internal2156)) + (import "env" "cN" (func $internal2157)) + (import "env" "dN" (func $internal2158)) + (import "env" "eN" (func $internal2159)) + (import "env" "fN" (func $internal2160)) + (import "env" "gN" (func $internal2161)) + (import "env" "hN" (func $internal2162)) + (import "env" "iN" (func $internal2163)) + (import "env" "jN" (func $internal2164)) + (import "env" "kN" (func $internal2165)) + (import "env" "lN" (func $internal2166)) + (import "env" "mN" (func $internal2167)) + (import "env" "nN" (func $internal2168)) + (import "env" "oN" (func $internal2169)) + (import "env" "pN" (func $internal2170)) + (import "env" "qN" (func $internal2171)) + (import "env" "rN" (func $internal2172)) + (import "env" "sN" (func $internal2173)) + (import "env" "tN" (func $internal2174)) + (import "env" "uN" (func $internal2175)) + (import "env" "vN" (func $internal2176)) + (import "env" "wN" (func $internal2177)) + (import "env" "xN" (func $internal2178)) + (import "env" "yN" (func $internal2179)) + (import "env" "zN" (func $internal2180)) + (import "env" "AN" (func $internal2181)) + (import "env" "BN" (func $internal2182)) + (import "env" "CN" (func $internal2183)) + (import "env" "DN" (func $internal2184)) + (import "env" "EN" (func $internal2185)) + (import "env" "FN" (func $internal2186)) + (import "env" "GN" (func $internal2187)) + (import "env" "HN" (func $internal2188)) + (import "env" "IN" (func $internal2189)) + (import "env" "JN" (func $internal2190)) + (import "env" "KN" (func $internal2191)) + (import "env" "LN" (func $internal2192)) + (import "env" "MN" (func $internal2193)) + (import "env" "NN" (func $internal2194)) + (import "env" "ON" (func $internal2195)) + (import "env" "PN" (func $internal2196)) + (import "env" "QN" (func $internal2197)) + (import "env" "RN" (func $internal2198)) + (import "env" "SN" (func $internal2199)) + (import "env" "TN" (func $internal2200)) + (import "env" "UN" (func $internal2201)) + (import "env" "VN" (func $internal2202)) + (import "env" "WN" (func $internal2203)) + (import "env" "XN" (func $internal2204)) + (import "env" "YN" (func $internal2205)) + (import "env" "ZN" (func $internal2206)) + (import "env" "_N" (func $internal2207)) + (import "env" "$N" (func $internal2208)) + (import "env" "aO" (func $internal2209)) + (import "env" "bO" (func $internal2210)) + (import "env" "cO" (func $internal2211)) + (import "env" "dO" (func $internal2212)) + (import "env" "eO" (func $internal2213)) + (import "env" "fO" (func $internal2214)) + (import "env" "gO" (func $internal2215)) + (import "env" "hO" (func $internal2216)) + (import "env" "iO" (func $internal2217)) + (import "env" "jO" (func $internal2218)) + (import "env" "kO" (func $internal2219)) + (import "env" "lO" (func $internal2220)) + (import "env" "mO" (func $internal2221)) + (import "env" "nO" (func $internal2222)) + (import "env" "oO" (func $internal2223)) + (import "env" "pO" (func $internal2224)) + (import "env" "qO" (func $internal2225)) + (import "env" "rO" (func $internal2226)) + (import "env" "sO" (func $internal2227)) + (import "env" "tO" (func $internal2228)) + (import "env" "uO" (func $internal2229)) + (import "env" "vO" (func $internal2230)) + (import "env" "wO" (func $internal2231)) + (import "env" "xO" (func $internal2232)) + (import "env" "yO" (func $internal2233)) + (import "env" "zO" (func $internal2234)) + (import "env" "AO" (func $internal2235)) + (import "env" "BO" (func $internal2236)) + (import "env" "CO" (func $internal2237)) + (import "env" "DO" (func $internal2238)) + (import "env" "EO" (func $internal2239)) + (import "env" "FO" (func $internal2240)) + (import "env" "GO" (func $internal2241)) + (import "env" "HO" (func $internal2242)) + (import "env" "IO" (func $internal2243)) + (import "env" "JO" (func $internal2244)) + (import "env" "KO" (func $internal2245)) + (import "env" "LO" (func $internal2246)) + (import "env" "MO" (func $internal2247)) + (import "env" "NO" (func $internal2248)) + (import "env" "OO" (func $internal2249)) + (import "env" "PO" (func $internal2250)) + (import "env" "QO" (func $internal2251)) + (import "env" "RO" (func $internal2252)) + (import "env" "SO" (func $internal2253)) + (import "env" "TO" (func $internal2254)) + (import "env" "UO" (func $internal2255)) + (import "env" "VO" (func $internal2256)) + (import "env" "WO" (func $internal2257)) + (import "env" "XO" (func $internal2258)) + (import "env" "YO" (func $internal2259)) + (import "env" "ZO" (func $internal2260)) + (import "env" "_O" (func $internal2261)) + (import "env" "$O" (func $internal2262)) + (import "env" "aP" (func $internal2263)) + (import "env" "bP" (func $internal2264)) + (import "env" "cP" (func $internal2265)) + (import "env" "dP" (func $internal2266)) + (import "env" "eP" (func $internal2267)) + (import "env" "fP" (func $internal2268)) + (import "env" "gP" (func $internal2269)) + (import "env" "hP" (func $internal2270)) + (import "env" "iP" (func $internal2271)) + (import "env" "jP" (func $internal2272)) + (import "env" "kP" (func $internal2273)) + (import "env" "lP" (func $internal2274)) + (import "env" "mP" (func $internal2275)) + (import "env" "nP" (func $internal2276)) + (import "env" "oP" (func $internal2277)) + (import "env" "pP" (func $internal2278)) + (import "env" "qP" (func $internal2279)) + (import "env" "rP" (func $internal2280)) + (import "env" "sP" (func $internal2281)) + (import "env" "tP" (func $internal2282)) + (import "env" "uP" (func $internal2283)) + (import "env" "vP" (func $internal2284)) + (import "env" "wP" (func $internal2285)) + (import "env" "xP" (func $internal2286)) + (import "env" "yP" (func $internal2287)) + (import "env" "zP" (func $internal2288)) + (import "env" "AP" (func $internal2289)) + (import "env" "BP" (func $internal2290)) + (import "env" "CP" (func $internal2291)) + (import "env" "DP" (func $internal2292)) + (import "env" "EP" (func $internal2293)) + (import "env" "FP" (func $internal2294)) + (import "env" "GP" (func $internal2295)) + (import "env" "HP" (func $internal2296)) + (import "env" "IP" (func $internal2297)) + (import "env" "JP" (func $internal2298)) + (import "env" "KP" (func $internal2299)) + (import "env" "LP" (func $internal2300)) + (import "env" "MP" (func $internal2301)) + (import "env" "NP" (func $internal2302)) + (import "env" "OP" (func $internal2303)) + (import "env" "PP" (func $internal2304)) + (import "env" "QP" (func $internal2305)) + (import "env" "RP" (func $internal2306)) + (import "env" "SP" (func $internal2307)) + (import "env" "TP" (func $internal2308)) + (import "env" "UP" (func $internal2309)) + (import "env" "VP" (func $internal2310)) + (import "env" "WP" (func $internal2311)) + (import "env" "XP" (func $internal2312)) + (import "env" "YP" (func $internal2313)) + (import "env" "ZP" (func $internal2314)) + (import "env" "_P" (func $internal2315)) + (import "env" "$P" (func $internal2316)) + (import "env" "aQ" (func $internal2317)) + (import "env" "bQ" (func $internal2318)) + (import "env" "cQ" (func $internal2319)) + (import "env" "dQ" (func $internal2320)) + (import "env" "eQ" (func $internal2321)) + (import "env" "fQ" (func $internal2322)) + (import "env" "gQ" (func $internal2323)) + (import "env" "hQ" (func $internal2324)) + (import "env" "iQ" (func $internal2325)) + (import "env" "jQ" (func $internal2326)) + (import "env" "kQ" (func $internal2327)) + (import "env" "lQ" (func $internal2328)) + (import "env" "mQ" (func $internal2329)) + (import "env" "nQ" (func $internal2330)) + (import "env" "oQ" (func $internal2331)) + (import "env" "pQ" (func $internal2332)) + (import "env" "qQ" (func $internal2333)) + (import "env" "rQ" (func $internal2334)) + (import "env" "sQ" (func $internal2335)) + (import "env" "tQ" (func $internal2336)) + (import "env" "uQ" (func $internal2337)) + (import "env" "vQ" (func $internal2338)) + (import "env" "wQ" (func $internal2339)) + (import "env" "xQ" (func $internal2340)) + (import "env" "yQ" (func $internal2341)) + (import "env" "zQ" (func $internal2342)) + (import "env" "AQ" (func $internal2343)) + (import "env" "BQ" (func $internal2344)) + (import "env" "CQ" (func $internal2345)) + (import "env" "DQ" (func $internal2346)) + (import "env" "EQ" (func $internal2347)) + (import "env" "FQ" (func $internal2348)) + (import "env" "GQ" (func $internal2349)) + (import "env" "HQ" (func $internal2350)) + (import "env" "IQ" (func $internal2351)) + (import "env" "JQ" (func $internal2352)) + (import "env" "KQ" (func $internal2353)) + (import "env" "LQ" (func $internal2354)) + (import "env" "MQ" (func $internal2355)) + (import "env" "NQ" (func $internal2356)) + (import "env" "OQ" (func $internal2357)) + (import "env" "PQ" (func $internal2358)) + (import "env" "QQ" (func $internal2359)) + (import "env" "RQ" (func $internal2360)) + (import "env" "SQ" (func $internal2361)) + (import "env" "TQ" (func $internal2362)) + (import "env" "UQ" (func $internal2363)) + (import "env" "VQ" (func $internal2364)) + (import "env" "WQ" (func $internal2365)) + (import "env" "XQ" (func $internal2366)) + (import "env" "YQ" (func $internal2367)) + (import "env" "ZQ" (func $internal2368)) + (import "env" "_Q" (func $internal2369)) + (import "env" "$Q" (func $internal2370)) + (import "env" "aR" (func $internal2371)) + (import "env" "bR" (func $internal2372)) + (import "env" "cR" (func $internal2373)) + (import "env" "dR" (func $internal2374)) + (import "env" "eR" (func $internal2375)) + (import "env" "fR" (func $internal2376)) + (import "env" "gR" (func $internal2377)) + (import "env" "hR" (func $internal2378)) + (import "env" "iR" (func $internal2379)) + (import "env" "jR" (func $internal2380)) + (import "env" "kR" (func $internal2381)) + (import "env" "lR" (func $internal2382)) + (import "env" "mR" (func $internal2383)) + (import "env" "nR" (func $internal2384)) + (import "env" "oR" (func $internal2385)) + (import "env" "pR" (func $internal2386)) + (import "env" "qR" (func $internal2387)) + (import "env" "rR" (func $internal2388)) + (import "env" "sR" (func $internal2389)) + (import "env" "tR" (func $internal2390)) + (import "env" "uR" (func $internal2391)) + (import "env" "vR" (func $internal2392)) + (import "env" "wR" (func $internal2393)) + (import "env" "xR" (func $internal2394)) + (import "env" "yR" (func $internal2395)) + (import "env" "zR" (func $internal2396)) + (import "env" "AR" (func $internal2397)) + (import "env" "BR" (func $internal2398)) + (import "env" "CR" (func $internal2399)) + (import "env" "DR" (func $internal2400)) + (import "env" "ER" (func $internal2401)) + (import "env" "FR" (func $internal2402)) + (import "env" "GR" (func $internal2403)) + (import "env" "HR" (func $internal2404)) + (import "env" "IR" (func $internal2405)) + (import "env" "JR" (func $internal2406)) + (import "env" "KR" (func $internal2407)) + (import "env" "LR" (func $internal2408)) + (import "env" "MR" (func $internal2409)) + (import "env" "NR" (func $internal2410)) + (import "env" "OR" (func $internal2411)) + (import "env" "PR" (func $internal2412)) + (import "env" "QR" (func $internal2413)) + (import "env" "RR" (func $internal2414)) + (import "env" "SR" (func $internal2415)) + (import "env" "TR" (func $internal2416)) + (import "env" "UR" (func $internal2417)) + (import "env" "VR" (func $internal2418)) + (import "env" "WR" (func $internal2419)) + (import "env" "XR" (func $internal2420)) + (import "env" "YR" (func $internal2421)) + (import "env" "ZR" (func $internal2422)) + (import "env" "_R" (func $internal2423)) + (import "env" "$R" (func $internal2424)) + (import "env" "aS" (func $internal2425)) + (import "env" "bS" (func $internal2426)) + (import "env" "cS" (func $internal2427)) + (import "env" "dS" (func $internal2428)) + (import "env" "eS" (func $internal2429)) + (import "env" "fS" (func $internal2430)) + (import "env" "gS" (func $internal2431)) + (import "env" "hS" (func $internal2432)) + (import "env" "iS" (func $internal2433)) + (import "env" "jS" (func $internal2434)) + (import "env" "kS" (func $internal2435)) + (import "env" "lS" (func $internal2436)) + (import "env" "mS" (func $internal2437)) + (import "env" "nS" (func $internal2438)) + (import "env" "oS" (func $internal2439)) + (import "env" "pS" (func $internal2440)) + (import "env" "qS" (func $internal2441)) + (import "env" "rS" (func $internal2442)) + (import "env" "sS" (func $internal2443)) + (import "env" "tS" (func $internal2444)) + (import "env" "uS" (func $internal2445)) + (import "env" "vS" (func $internal2446)) + (import "env" "wS" (func $internal2447)) + (import "env" "xS" (func $internal2448)) + (import "env" "yS" (func $internal2449)) + (import "env" "zS" (func $internal2450)) + (import "env" "AS" (func $internal2451)) + (import "env" "BS" (func $internal2452)) + (import "env" "CS" (func $internal2453)) + (import "env" "DS" (func $internal2454)) + (import "env" "ES" (func $internal2455)) + (import "env" "FS" (func $internal2456)) + (import "env" "GS" (func $internal2457)) + (import "env" "HS" (func $internal2458)) + (import "env" "IS" (func $internal2459)) + (import "env" "JS" (func $internal2460)) + (import "env" "KS" (func $internal2461)) + (import "env" "LS" (func $internal2462)) + (import "env" "MS" (func $internal2463)) + (import "env" "NS" (func $internal2464)) + (import "env" "OS" (func $internal2465)) + (import "env" "PS" (func $internal2466)) + (import "env" "QS" (func $internal2467)) + (import "env" "RS" (func $internal2468)) + (import "env" "SS" (func $internal2469)) + (import "env" "TS" (func $internal2470)) + (import "env" "US" (func $internal2471)) + (import "env" "VS" (func $internal2472)) + (import "env" "WS" (func $internal2473)) + (import "env" "XS" (func $internal2474)) + (import "env" "YS" (func $internal2475)) + (import "env" "ZS" (func $internal2476)) + (import "env" "_S" (func $internal2477)) + (import "env" "$S" (func $internal2478)) + (import "env" "aT" (func $internal2479)) + (import "env" "bT" (func $internal2480)) + (import "env" "cT" (func $internal2481)) + (import "env" "dT" (func $internal2482)) + (import "env" "eT" (func $internal2483)) + (import "env" "fT" (func $internal2484)) + (import "env" "gT" (func $internal2485)) + (import "env" "hT" (func $internal2486)) + (import "env" "iT" (func $internal2487)) + (import "env" "jT" (func $internal2488)) + (import "env" "kT" (func $internal2489)) + (import "env" "lT" (func $internal2490)) + (import "env" "mT" (func $internal2491)) + (import "env" "nT" (func $internal2492)) + (import "env" "oT" (func $internal2493)) + (import "env" "pT" (func $internal2494)) + (import "env" "qT" (func $internal2495)) + (import "env" "rT" (func $internal2496)) + (import "env" "sT" (func $internal2497)) + (import "env" "tT" (func $internal2498)) + (import "env" "uT" (func $internal2499)) + (import "env" "vT" (func $internal2500)) + (import "env" "wT" (func $internal2501)) + (import "env" "xT" (func $internal2502)) + (import "env" "yT" (func $internal2503)) + (import "env" "zT" (func $internal2504)) + (import "env" "AT" (func $internal2505)) + (import "env" "BT" (func $internal2506)) + (import "env" "CT" (func $internal2507)) + (import "env" "DT" (func $internal2508)) + (import "env" "ET" (func $internal2509)) + (import "env" "FT" (func $internal2510)) + (import "env" "GT" (func $internal2511)) + (import "env" "HT" (func $internal2512)) + (import "env" "IT" (func $internal2513)) + (import "env" "JT" (func $internal2514)) + (import "env" "KT" (func $internal2515)) + (import "env" "LT" (func $internal2516)) + (import "env" "MT" (func $internal2517)) + (import "env" "NT" (func $internal2518)) + (import "env" "OT" (func $internal2519)) + (import "env" "PT" (func $internal2520)) + (import "env" "QT" (func $internal2521)) + (import "env" "RT" (func $internal2522)) + (import "env" "ST" (func $internal2523)) + (import "env" "TT" (func $internal2524)) + (import "env" "UT" (func $internal2525)) + (import "env" "VT" (func $internal2526)) + (import "env" "WT" (func $internal2527)) + (import "env" "XT" (func $internal2528)) + (import "env" "YT" (func $internal2529)) + (import "env" "ZT" (func $internal2530)) + (import "env" "_T" (func $internal2531)) + (import "env" "$T" (func $internal2532)) + (import "env" "aU" (func $internal2533)) + (import "env" "bU" (func $internal2534)) + (import "env" "cU" (func $internal2535)) + (import "env" "dU" (func $internal2536)) + (import "env" "eU" (func $internal2537)) + (import "env" "fU" (func $internal2538)) + (import "env" "gU" (func $internal2539)) + (import "env" "hU" (func $internal2540)) + (import "env" "iU" (func $internal2541)) + (import "env" "jU" (func $internal2542)) + (import "env" "kU" (func $internal2543)) + (import "env" "lU" (func $internal2544)) + (import "env" "mU" (func $internal2545)) + (import "env" "nU" (func $internal2546)) + (import "env" "oU" (func $internal2547)) + (import "env" "pU" (func $internal2548)) + (import "env" "qU" (func $internal2549)) + (import "env" "rU" (func $internal2550)) + (import "env" "sU" (func $internal2551)) + (import "env" "tU" (func $internal2552)) + (import "env" "uU" (func $internal2553)) + (import "env" "vU" (func $internal2554)) + (import "env" "wU" (func $internal2555)) + (import "env" "xU" (func $internal2556)) + (import "env" "yU" (func $internal2557)) + (import "env" "zU" (func $internal2558)) + (import "env" "AU" (func $internal2559)) + (import "env" "BU" (func $internal2560)) + (import "env" "CU" (func $internal2561)) + (import "env" "DU" (func $internal2562)) + (import "env" "EU" (func $internal2563)) + (import "env" "FU" (func $internal2564)) + (import "env" "GU" (func $internal2565)) + (import "env" "HU" (func $internal2566)) + (import "env" "IU" (func $internal2567)) + (import "env" "JU" (func $internal2568)) + (import "env" "KU" (func $internal2569)) + (import "env" "LU" (func $internal2570)) + (import "env" "MU" (func $internal2571)) + (import "env" "NU" (func $internal2572)) + (import "env" "OU" (func $internal2573)) + (import "env" "PU" (func $internal2574)) + (import "env" "QU" (func $internal2575)) + (import "env" "RU" (func $internal2576)) + (import "env" "SU" (func $internal2577)) + (import "env" "TU" (func $internal2578)) + (import "env" "UU" (func $internal2579)) + (import "env" "VU" (func $internal2580)) + (import "env" "WU" (func $internal2581)) + (import "env" "XU" (func $internal2582)) + (import "env" "YU" (func $internal2583)) + (import "env" "ZU" (func $internal2584)) + (import "env" "_U" (func $internal2585)) + (import "env" "$U" (func $internal2586)) + (import "env" "aV" (func $internal2587)) + (import "env" "bV" (func $internal2588)) + (import "env" "cV" (func $internal2589)) + (import "env" "dV" (func $internal2590)) + (import "env" "eV" (func $internal2591)) + (import "env" "fV" (func $internal2592)) + (import "env" "gV" (func $internal2593)) + (import "env" "hV" (func $internal2594)) + (import "env" "iV" (func $internal2595)) + (import "env" "jV" (func $internal2596)) + (import "env" "kV" (func $internal2597)) + (import "env" "lV" (func $internal2598)) + (import "env" "mV" (func $internal2599)) + (import "env" "nV" (func $internal2600)) + (import "env" "oV" (func $internal2601)) + (import "env" "pV" (func $internal2602)) + (import "env" "qV" (func $internal2603)) + (import "env" "rV" (func $internal2604)) + (import "env" "sV" (func $internal2605)) + (import "env" "tV" (func $internal2606)) + (import "env" "uV" (func $internal2607)) + (import "env" "vV" (func $internal2608)) + (import "env" "wV" (func $internal2609)) + (import "env" "xV" (func $internal2610)) + (import "env" "yV" (func $internal2611)) + (import "env" "zV" (func $internal2612)) + (import "env" "AV" (func $internal2613)) + (import "env" "BV" (func $internal2614)) + (import "env" "CV" (func $internal2615)) + (import "env" "DV" (func $internal2616)) + (import "env" "EV" (func $internal2617)) + (import "env" "FV" (func $internal2618)) + (import "env" "GV" (func $internal2619)) + (import "env" "HV" (func $internal2620)) + (import "env" "IV" (func $internal2621)) + (import "env" "JV" (func $internal2622)) + (import "env" "KV" (func $internal2623)) + (import "env" "LV" (func $internal2624)) + (import "env" "MV" (func $internal2625)) + (import "env" "NV" (func $internal2626)) + (import "env" "OV" (func $internal2627)) + (import "env" "PV" (func $internal2628)) + (import "env" "QV" (func $internal2629)) + (import "env" "RV" (func $internal2630)) + (import "env" "SV" (func $internal2631)) + (import "env" "TV" (func $internal2632)) + (import "env" "UV" (func $internal2633)) + (import "env" "VV" (func $internal2634)) + (import "env" "WV" (func $internal2635)) + (import "env" "XV" (func $internal2636)) + (import "env" "YV" (func $internal2637)) + (import "env" "ZV" (func $internal2638)) + (import "env" "_V" (func $internal2639)) + (import "env" "$V" (func $internal2640)) + (import "env" "aW" (func $internal2641)) + (import "env" "bW" (func $internal2642)) + (import "env" "cW" (func $internal2643)) + (import "env" "dW" (func $internal2644)) + (import "env" "eW" (func $internal2645)) + (import "env" "fW" (func $internal2646)) + (import "env" "gW" (func $internal2647)) + (import "env" "hW" (func $internal2648)) + (import "env" "iW" (func $internal2649)) + (import "env" "jW" (func $internal2650)) + (import "env" "kW" (func $internal2651)) + (import "env" "lW" (func $internal2652)) + (import "env" "mW" (func $internal2653)) + (import "env" "nW" (func $internal2654)) + (import "env" "oW" (func $internal2655)) + (import "env" "pW" (func $internal2656)) + (import "env" "qW" (func $internal2657)) + (import "env" "rW" (func $internal2658)) + (import "env" "sW" (func $internal2659)) + (import "env" "tW" (func $internal2660)) + (import "env" "uW" (func $internal2661)) + (import "env" "vW" (func $internal2662)) + (import "env" "wW" (func $internal2663)) + (import "env" "xW" (func $internal2664)) + (import "env" "yW" (func $internal2665)) + (import "env" "zW" (func $internal2666)) + (import "env" "AW" (func $internal2667)) + (import "env" "BW" (func $internal2668)) + (import "env" "CW" (func $internal2669)) + (import "env" "DW" (func $internal2670)) + (import "env" "EW" (func $internal2671)) + (import "env" "FW" (func $internal2672)) + (import "env" "GW" (func $internal2673)) + (import "env" "HW" (func $internal2674)) + (import "env" "IW" (func $internal2675)) + (import "env" "JW" (func $internal2676)) + (import "env" "KW" (func $internal2677)) + (import "env" "LW" (func $internal2678)) + (import "env" "MW" (func $internal2679)) + (import "env" "NW" (func $internal2680)) + (import "env" "OW" (func $internal2681)) + (import "env" "PW" (func $internal2682)) + (import "env" "QW" (func $internal2683)) + (import "env" "RW" (func $internal2684)) + (import "env" "SW" (func $internal2685)) + (import "env" "TW" (func $internal2686)) + (import "env" "UW" (func $internal2687)) + (import "env" "VW" (func $internal2688)) + (import "env" "WW" (func $internal2689)) + (import "env" "XW" (func $internal2690)) + (import "env" "YW" (func $internal2691)) + (import "env" "ZW" (func $internal2692)) + (import "env" "_W" (func $internal2693)) + (import "env" "$W" (func $internal2694)) + (import "env" "aX" (func $internal2695)) + (import "env" "bX" (func $internal2696)) + (import "env" "cX" (func $internal2697)) + (import "env" "dX" (func $internal2698)) + (import "env" "eX" (func $internal2699)) + (import "env" "fX" (func $internal2700)) + (import "env" "gX" (func $internal2701)) + (import "env" "hX" (func $internal2702)) + (import "env" "iX" (func $internal2703)) + (import "env" "jX" (func $internal2704)) + (import "env" "kX" (func $internal2705)) + (import "env" "lX" (func $internal2706)) + (import "env" "mX" (func $internal2707)) + (import "env" "nX" (func $internal2708)) + (import "env" "oX" (func $internal2709)) + (import "env" "pX" (func $internal2710)) + (import "env" "qX" (func $internal2711)) + (import "env" "rX" (func $internal2712)) + (import "env" "sX" (func $internal2713)) + (import "env" "tX" (func $internal2714)) + (import "env" "uX" (func $internal2715)) + (import "env" "vX" (func $internal2716)) + (import "env" "wX" (func $internal2717)) + (import "env" "xX" (func $internal2718)) + (import "env" "yX" (func $internal2719)) + (import "env" "zX" (func $internal2720)) + (import "env" "AX" (func $internal2721)) + (import "env" "BX" (func $internal2722)) + (import "env" "CX" (func $internal2723)) + (import "env" "DX" (func $internal2724)) + (import "env" "EX" (func $internal2725)) + (import "env" "FX" (func $internal2726)) + (import "env" "GX" (func $internal2727)) + (import "env" "HX" (func $internal2728)) + (import "env" "IX" (func $internal2729)) + (import "env" "JX" (func $internal2730)) + (import "env" "KX" (func $internal2731)) + (import "env" "LX" (func $internal2732)) + (import "env" "MX" (func $internal2733)) + (import "env" "NX" (func $internal2734)) + (import "env" "OX" (func $internal2735)) + (import "env" "PX" (func $internal2736)) + (import "env" "QX" (func $internal2737)) + (import "env" "RX" (func $internal2738)) + (import "env" "SX" (func $internal2739)) + (import "env" "TX" (func $internal2740)) + (import "env" "UX" (func $internal2741)) + (import "env" "VX" (func $internal2742)) + (import "env" "WX" (func $internal2743)) + (import "env" "XX" (func $internal2744)) + (import "env" "YX" (func $internal2745)) + (import "env" "ZX" (func $internal2746)) + (import "env" "_X" (func $internal2747)) + (import "env" "$X" (func $internal2748)) + (import "env" "aY" (func $internal2749)) + (import "env" "bY" (func $internal2750)) + (import "env" "cY" (func $internal2751)) + (import "env" "dY" (func $internal2752)) + (import "env" "eY" (func $internal2753)) + (import "env" "fY" (func $internal2754)) + (import "env" "gY" (func $internal2755)) + (import "env" "hY" (func $internal2756)) + (import "env" "iY" (func $internal2757)) + (import "env" "jY" (func $internal2758)) + (import "env" "kY" (func $internal2759)) + (import "env" "lY" (func $internal2760)) + (import "env" "mY" (func $internal2761)) + (import "env" "nY" (func $internal2762)) + (import "env" "oY" (func $internal2763)) + (import "env" "pY" (func $internal2764)) + (import "env" "qY" (func $internal2765)) + (import "env" "rY" (func $internal2766)) + (import "env" "sY" (func $internal2767)) + (import "env" "tY" (func $internal2768)) + (import "env" "uY" (func $internal2769)) + (import "env" "vY" (func $internal2770)) + (import "env" "wY" (func $internal2771)) + (import "env" "xY" (func $internal2772)) + (import "env" "yY" (func $internal2773)) + (import "env" "zY" (func $internal2774)) + (import "env" "AY" (func $internal2775)) + (import "env" "BY" (func $internal2776)) + (import "env" "CY" (func $internal2777)) + (import "env" "DY" (func $internal2778)) + (import "env" "EY" (func $internal2779)) + (import "env" "FY" (func $internal2780)) + (import "env" "GY" (func $internal2781)) + (import "env" "HY" (func $internal2782)) + (import "env" "IY" (func $internal2783)) + (import "env" "JY" (func $internal2784)) + (import "env" "KY" (func $internal2785)) + (import "env" "LY" (func $internal2786)) + (import "env" "MY" (func $internal2787)) + (import "env" "NY" (func $internal2788)) + (import "env" "OY" (func $internal2789)) + (import "env" "PY" (func $internal2790)) + (import "env" "QY" (func $internal2791)) + (import "env" "RY" (func $internal2792)) + (import "env" "SY" (func $internal2793)) + (import "env" "TY" (func $internal2794)) + (import "env" "UY" (func $internal2795)) + (import "env" "VY" (func $internal2796)) + (import "env" "WY" (func $internal2797)) + (import "env" "XY" (func $internal2798)) + (import "env" "YY" (func $internal2799)) + (import "env" "ZY" (func $internal2800)) + (import "env" "_Y" (func $internal2801)) + (import "env" "$Y" (func $internal2802)) + (import "env" "aZ" (func $internal2803)) + (import "env" "bZ" (func $internal2804)) + (import "env" "cZ" (func $internal2805)) + (import "env" "dZ" (func $internal2806)) + (import "env" "eZ" (func $internal2807)) + (import "env" "fZ" (func $internal2808)) + (import "env" "gZ" (func $internal2809)) + (import "env" "hZ" (func $internal2810)) + (import "env" "iZ" (func $internal2811)) + (import "env" "jZ" (func $internal2812)) + (import "env" "kZ" (func $internal2813)) + (import "env" "lZ" (func $internal2814)) + (import "env" "mZ" (func $internal2815)) + (import "env" "nZ" (func $internal2816)) + (import "env" "oZ" (func $internal2817)) + (import "env" "pZ" (func $internal2818)) + (import "env" "qZ" (func $internal2819)) + (import "env" "rZ" (func $internal2820)) + (import "env" "sZ" (func $internal2821)) + (import "env" "tZ" (func $internal2822)) + (import "env" "uZ" (func $internal2823)) + (import "env" "vZ" (func $internal2824)) + (import "env" "wZ" (func $internal2825)) + (import "env" "xZ" (func $internal2826)) + (import "env" "yZ" (func $internal2827)) + (import "env" "zZ" (func $internal2828)) + (import "env" "AZ" (func $internal2829)) + (import "env" "BZ" (func $internal2830)) + (import "env" "CZ" (func $internal2831)) + (import "env" "DZ" (func $internal2832)) + (import "env" "EZ" (func $internal2833)) + (import "env" "FZ" (func $internal2834)) + (import "env" "GZ" (func $internal2835)) + (import "env" "HZ" (func $internal2836)) + (import "env" "IZ" (func $internal2837)) + (import "env" "JZ" (func $internal2838)) + (import "env" "KZ" (func $internal2839)) + (import "env" "LZ" (func $internal2840)) + (import "env" "MZ" (func $internal2841)) + (import "env" "NZ" (func $internal2842)) + (import "env" "OZ" (func $internal2843)) + (import "env" "PZ" (func $internal2844)) + (import "env" "QZ" (func $internal2845)) + (import "env" "RZ" (func $internal2846)) + (import "env" "SZ" (func $internal2847)) + (import "env" "TZ" (func $internal2848)) + (import "env" "UZ" (func $internal2849)) + (import "env" "VZ" (func $internal2850)) + (import "env" "WZ" (func $internal2851)) + (import "env" "XZ" (func $internal2852)) + (import "env" "YZ" (func $internal2853)) + (import "env" "ZZ" (func $internal2854)) + (import "env" "_Z" (func $internal2855)) + (import "env" "$Z" (func $internal2856)) + (import "env" "a_" (func $internal2857)) + (import "env" "b_" (func $internal2858)) + (import "env" "c_" (func $internal2859)) + (import "env" "d_" (func $internal2860)) + (import "env" "e_" (func $internal2861)) + (import "env" "f_" (func $internal2862)) + (import "env" "g_" (func $internal2863)) + (import "env" "h_" (func $internal2864)) + (import "env" "i_" (func $internal2865)) + (import "env" "j_" (func $internal2866)) + (import "env" "k_" (func $internal2867)) + (import "env" "l_" (func $internal2868)) + (import "env" "m_" (func $internal2869)) + (import "env" "n_" (func $internal2870)) + (import "env" "o_" (func $internal2871)) + (import "env" "p_" (func $internal2872)) + (import "env" "q_" (func $internal2873)) + (import "env" "r_" (func $internal2874)) + (import "env" "s_" (func $internal2875)) + (import "env" "t_" (func $internal2876)) + (import "env" "u_" (func $internal2877)) + (import "env" "v_" (func $internal2878)) + (import "env" "w_" (func $internal2879)) + (import "env" "x_" (func $internal2880)) + (import "env" "y_" (func $internal2881)) + (import "env" "z_" (func $internal2882)) + (import "env" "A_" (func $internal2883)) + (import "env" "B_" (func $internal2884)) + (import "env" "C_" (func $internal2885)) + (import "env" "D_" (func $internal2886)) + (import "env" "E_" (func $internal2887)) + (import "env" "F_" (func $internal2888)) + (import "env" "G_" (func $internal2889)) + (import "env" "H_" (func $internal2890)) + (import "env" "I_" (func $internal2891)) + (import "env" "J_" (func $internal2892)) + (import "env" "K_" (func $internal2893)) + (import "env" "L_" (func $internal2894)) + (import "env" "M_" (func $internal2895)) + (import "env" "N_" (func $internal2896)) + (import "env" "O_" (func $internal2897)) + (import "env" "P_" (func $internal2898)) + (import "env" "Q_" (func $internal2899)) + (import "env" "R_" (func $internal2900)) + (import "env" "S_" (func $internal2901)) + (import "env" "T_" (func $internal2902)) + (import "env" "U_" (func $internal2903)) + (import "env" "V_" (func $internal2904)) + (import "env" "W_" (func $internal2905)) + (import "env" "X_" (func $internal2906)) + (import "env" "Y_" (func $internal2907)) + (import "env" "Z_" (func $internal2908)) + (import "env" "__" (func $internal2909)) + (import "env" "$_" (func $internal2910)) + (import "env" "a$" (func $internal2911)) + (import "env" "b$" (func $internal2912)) + (import "env" "c$" (func $internal2913)) + (import "env" "d$" (func $internal2914)) + (import "env" "e$" (func $internal2915)) + (import "env" "f$" (func $internal2916)) + (import "env" "g$" (func $internal2917)) + (import "env" "h$" (func $internal2918)) + (import "env" "i$" (func $internal2919)) + (import "env" "j$" (func $internal2920)) + (import "env" "k$" (func $internal2921)) + (import "env" "l$" (func $internal2922)) + (import "env" "m$" (func $internal2923)) + (import "env" "n$" (func $internal2924)) + (import "env" "o$" (func $internal2925)) + (import "env" "p$" (func $internal2926)) + (import "env" "q$" (func $internal2927)) + (import "env" "r$" (func $internal2928)) + (import "env" "s$" (func $internal2929)) + (import "env" "t$" (func $internal2930)) + (import "env" "u$" (func $internal2931)) + (import "env" "v$" (func $internal2932)) + (import "env" "w$" (func $internal2933)) + (import "env" "x$" (func $internal2934)) + (import "env" "y$" (func $internal2935)) + (import "env" "z$" (func $internal2936)) + (import "env" "A$" (func $internal2937)) + (import "env" "B$" (func $internal2938)) + (import "env" "C$" (func $internal2939)) + (import "env" "D$" (func $internal2940)) + (import "env" "E$" (func $internal2941)) + (import "env" "F$" (func $internal2942)) + (import "env" "G$" (func $internal2943)) + (import "env" "H$" (func $internal2944)) + (import "env" "I$" (func $internal2945)) + (import "env" "J$" (func $internal2946)) + (import "env" "K$" (func $internal2947)) + (import "env" "L$" (func $internal2948)) + (import "env" "M$" (func $internal2949)) + (import "env" "N$" (func $internal2950)) + (import "env" "O$" (func $internal2951)) + (import "env" "P$" (func $internal2952)) + (import "env" "Q$" (func $internal2953)) + (import "env" "R$" (func $internal2954)) + (import "env" "S$" (func $internal2955)) + (import "env" "T$" (func $internal2956)) + (import "env" "U$" (func $internal2957)) + (import "env" "V$" (func $internal2958)) + (import "env" "W$" (func $internal2959)) + (import "env" "X$" (func $internal2960)) + (import "env" "Y$" (func $internal2961)) + (import "env" "Z$" (func $internal2962)) + (import "env" "_$" (func $internal2963)) + (import "env" "$$" (func $internal2964)) + (import "env" "a0" (func $internal2965)) + (import "env" "b0" (func $internal2966)) + (import "env" "c0" (func $internal2967)) + (import "env" "d0" (func $internal2968)) + (import "env" "e0" (func $internal2969)) + (import "env" "f0" (func $internal2970)) + (import "env" "g0" (func $internal2971)) + (import "env" "h0" (func $internal2972)) + (import "env" "i0" (func $internal2973)) + (import "env" "j0" (func $internal2974)) + (import "env" "k0" (func $internal2975)) + (import "env" "l0" (func $internal2976)) + (import "env" "m0" (func $internal2977)) + (import "env" "n0" (func $internal2978)) + (import "env" "o0" (func $internal2979)) + (import "env" "p0" (func $internal2980)) + (import "env" "q0" (func $internal2981)) + (import "env" "r0" (func $internal2982)) + (import "env" "s0" (func $internal2983)) + (import "env" "t0" (func $internal2984)) + (import "env" "u0" (func $internal2985)) + (import "env" "v0" (func $internal2986)) + (import "env" "w0" (func $internal2987)) + (import "env" "x0" (func $internal2988)) + (import "env" "y0" (func $internal2989)) + (import "env" "z0" (func $internal2990)) + (import "env" "A0" (func $internal2991)) + (import "env" "B0" (func $internal2992)) + (import "env" "C0" (func $internal2993)) + (import "env" "D0" (func $internal2994)) + (import "env" "E0" (func $internal2995)) + (import "env" "F0" (func $internal2996)) + (import "env" "G0" (func $internal2997)) + (import "env" "H0" (func $internal2998)) + (import "env" "I0" (func $internal2999)) + (import "env" "J0" (func $internal3000)) + (import "env" "K0" (func $internal3001)) + (import "env" "L0" (func $internal3002)) + (import "env" "M0" (func $internal3003)) + (import "env" "N0" (func $internal3004)) + (import "env" "O0" (func $internal3005)) + (import "env" "P0" (func $internal3006)) + (import "env" "Q0" (func $internal3007)) + (import "env" "R0" (func $internal3008)) + (import "env" "S0" (func $internal3009)) + (import "env" "T0" (func $internal3010)) + (import "env" "U0" (func $internal3011)) + (import "env" "V0" (func $internal3012)) + (import "env" "W0" (func $internal3013)) + (import "env" "X0" (func $internal3014)) + (import "env" "Y0" (func $internal3015)) + (import "env" "Z0" (func $internal3016)) + (import "env" "_0" (func $internal3017)) + (import "env" "$0" (func $internal3018)) + (import "env" "a1" (func $internal3019)) + (import "env" "b1" (func $internal3020)) + (import "env" "c1" (func $internal3021)) + (import "env" "d1" (func $internal3022)) + (import "env" "e1" (func $internal3023)) + (import "env" "f1" (func $internal3024)) + (import "env" "g1" (func $internal3025)) + (import "env" "h1" (func $internal3026)) + (import "env" "i1" (func $internal3027)) + (import "env" "j1" (func $internal3028)) + (import "env" "k1" (func $internal3029)) + (import "env" "l1" (func $internal3030)) + (import "env" "m1" (func $internal3031)) + (import "env" "n1" (func $internal3032)) + (import "env" "o1" (func $internal3033)) + (import "env" "p1" (func $internal3034)) + (import "env" "q1" (func $internal3035)) + (import "env" "r1" (func $internal3036)) + (import "env" "s1" (func $internal3037)) + (import "env" "t1" (func $internal3038)) + (import "env" "u1" (func $internal3039)) + (import "env" "v1" (func $internal3040)) + (import "env" "w1" (func $internal3041)) + (import "env" "x1" (func $internal3042)) + (import "env" "y1" (func $internal3043)) + (import "env" "z1" (func $internal3044)) + (import "env" "A1" (func $internal3045)) + (import "env" "B1" (func $internal3046)) + (import "env" "C1" (func $internal3047)) + (import "env" "D1" (func $internal3048)) + (import "env" "E1" (func $internal3049)) + (import "env" "F1" (func $internal3050)) + (import "env" "G1" (func $internal3051)) + (import "env" "H1" (func $internal3052)) + (import "env" "I1" (func $internal3053)) + (import "env" "J1" (func $internal3054)) + (import "env" "K1" (func $internal3055)) + (import "env" "L1" (func $internal3056)) + (import "env" "M1" (func $internal3057)) + (import "env" "N1" (func $internal3058)) + (import "env" "O1" (func $internal3059)) + (import "env" "P1" (func $internal3060)) + (import "env" "Q1" (func $internal3061)) + (import "env" "R1" (func $internal3062)) + (import "env" "S1" (func $internal3063)) + (import "env" "T1" (func $internal3064)) + (import "env" "U1" (func $internal3065)) + (import "env" "V1" (func $internal3066)) + (import "env" "W1" (func $internal3067)) + (import "env" "X1" (func $internal3068)) + (import "env" "Y1" (func $internal3069)) + (import "env" "Z1" (func $internal3070)) + (import "env" "_1" (func $internal3071)) + (import "env" "$1" (func $internal3072)) + (import "env" "a2" (func $internal3073)) + (import "env" "b2" (func $internal3074)) + (import "env" "c2" (func $internal3075)) + (import "env" "d2" (func $internal3076)) + (import "env" "e2" (func $internal3077)) + (import "env" "f2" (func $internal3078)) + (import "env" "g2" (func $internal3079)) + (import "env" "h2" (func $internal3080)) + (import "env" "i2" (func $internal3081)) + (import "env" "j2" (func $internal3082)) + (import "env" "k2" (func $internal3083)) + (import "env" "l2" (func $internal3084)) + (import "env" "m2" (func $internal3085)) + (import "env" "n2" (func $internal3086)) + (import "env" "o2" (func $internal3087)) + (import "env" "p2" (func $internal3088)) + (import "env" "q2" (func $internal3089)) + (import "env" "r2" (func $internal3090)) + (import "env" "s2" (func $internal3091)) + (import "env" "t2" (func $internal3092)) + (import "env" "u2" (func $internal3093)) + (import "env" "v2" (func $internal3094)) + (import "env" "w2" (func $internal3095)) + (import "env" "x2" (func $internal3096)) + (import "env" "y2" (func $internal3097)) + (import "env" "z2" (func $internal3098)) + (import "env" "A2" (func $internal3099)) + (import "env" "B2" (func $internal3100)) + (import "env" "C2" (func $internal3101)) + (import "env" "D2" (func $internal3102)) + (import "env" "E2" (func $internal3103)) + (import "env" "F2" (func $internal3104)) + (import "env" "G2" (func $internal3105)) + (import "env" "H2" (func $internal3106)) + (import "env" "I2" (func $internal3107)) + (import "env" "J2" (func $internal3108)) + (import "env" "K2" (func $internal3109)) + (import "env" "L2" (func $internal3110)) + (import "env" "M2" (func $internal3111)) + (import "env" "N2" (func $internal3112)) + (import "env" "O2" (func $internal3113)) + (import "env" "P2" (func $internal3114)) + (import "env" "Q2" (func $internal3115)) + (import "env" "R2" (func $internal3116)) + (import "env" "S2" (func $internal3117)) + (import "env" "T2" (func $internal3118)) + (import "env" "U2" (func $internal3119)) + (import "env" "V2" (func $internal3120)) + (import "env" "W2" (func $internal3121)) + (import "env" "X2" (func $internal3122)) + (import "env" "Y2" (func $internal3123)) + (import "env" "Z2" (func $internal3124)) + (import "env" "_2" (func $internal3125)) + (import "env" "$2" (func $internal3126)) + (import "env" "a3" (func $internal3127)) + (import "env" "b3" (func $internal3128)) + (import "env" "c3" (func $internal3129)) + (import "env" "d3" (func $internal3130)) + (import "env" "e3" (func $internal3131)) + (import "env" "f3" (func $internal3132)) + (import "env" "g3" (func $internal3133)) + (import "env" "h3" (func $internal3134)) + (import "env" "i3" (func $internal3135)) + (import "env" "j3" (func $internal3136)) + (import "env" "k3" (func $internal3137)) + (import "env" "l3" (func $internal3138)) + (import "env" "m3" (func $internal3139)) + (import "env" "n3" (func $internal3140)) + (import "env" "o3" (func $internal3141)) + (import "env" "p3" (func $internal3142)) + (import "env" "q3" (func $internal3143)) + (import "env" "r3" (func $internal3144)) + (import "env" "s3" (func $internal3145)) + (import "env" "t3" (func $internal3146)) + (import "env" "u3" (func $internal3147)) + (import "env" "v3" (func $internal3148)) + (import "env" "w3" (func $internal3149)) + (import "env" "x3" (func $internal3150)) + (import "env" "y3" (func $internal3151)) + (import "env" "z3" (func $internal3152)) + (import "env" "A3" (func $internal3153)) + (import "env" "B3" (func $internal3154)) + (import "env" "C3" (func $internal3155)) + (import "env" "D3" (func $internal3156)) + (import "env" "E3" (func $internal3157)) + (import "env" "F3" (func $internal3158)) + (import "env" "G3" (func $internal3159)) + (import "env" "H3" (func $internal3160)) + (import "env" "I3" (func $internal3161)) + (import "env" "J3" (func $internal3162)) + (import "env" "K3" (func $internal3163)) + (import "env" "L3" (func $internal3164)) + (import "env" "M3" (func $internal3165)) + (import "env" "N3" (func $internal3166)) + (import "env" "O3" (func $internal3167)) + (import "env" "P3" (func $internal3168)) + (import "env" "Q3" (func $internal3169)) + (import "env" "R3" (func $internal3170)) + (import "env" "S3" (func $internal3171)) + (import "env" "T3" (func $internal3172)) + (import "env" "U3" (func $internal3173)) + (import "env" "V3" (func $internal3174)) + (import "env" "W3" (func $internal3175)) + (import "env" "X3" (func $internal3176)) + (import "env" "Y3" (func $internal3177)) + (import "env" "Z3" (func $internal3178)) + (import "env" "_3" (func $internal3179)) + (import "env" "$3" (func $internal3180)) + (import "env" "a4" (func $internal3181)) + (import "env" "b4" (func $internal3182)) + (import "env" "c4" (func $internal3183)) + (import "env" "d4" (func $internal3184)) + (import "env" "e4" (func $internal3185)) + (import "env" "f4" (func $internal3186)) + (import "env" "g4" (func $internal3187)) + (import "env" "h4" (func $internal3188)) + (import "env" "i4" (func $internal3189)) + (import "env" "j4" (func $internal3190)) + (import "env" "k4" (func $internal3191)) + (import "env" "l4" (func $internal3192)) + (import "env" "m4" (func $internal3193)) + (import "env" "n4" (func $internal3194)) + (import "env" "o4" (func $internal3195)) + (import "env" "p4" (func $internal3196)) + (import "env" "q4" (func $internal3197)) + (import "env" "r4" (func $internal3198)) + (import "env" "s4" (func $internal3199)) + (import "env" "t4" (func $internal3200)) + (import "env" "u4" (func $internal3201)) + (import "env" "v4" (func $internal3202)) + (import "env" "w4" (func $internal3203)) + (import "env" "x4" (func $internal3204)) + (import "env" "y4" (func $internal3205)) + (import "env" "z4" (func $internal3206)) + (import "env" "A4" (func $internal3207)) + (import "env" "B4" (func $internal3208)) + (import "env" "C4" (func $internal3209)) + (import "env" "D4" (func $internal3210)) + (import "env" "E4" (func $internal3211)) + (import "env" "F4" (func $internal3212)) + (import "env" "G4" (func $internal3213)) + (import "env" "H4" (func $internal3214)) + (import "env" "I4" (func $internal3215)) + (import "env" "J4" (func $internal3216)) + (import "env" "K4" (func $internal3217)) + (import "env" "L4" (func $internal3218)) + (import "env" "M4" (func $internal3219)) + (import "env" "N4" (func $internal3220)) + (import "env" "O4" (func $internal3221)) + (import "env" "P4" (func $internal3222)) + (import "env" "Q4" (func $internal3223)) + (import "env" "R4" (func $internal3224)) + (import "env" "S4" (func $internal3225)) + (import "env" "T4" (func $internal3226)) + (import "env" "U4" (func $internal3227)) + (import "env" "V4" (func $internal3228)) + (import "env" "W4" (func $internal3229)) + (import "env" "X4" (func $internal3230)) + (import "env" "Y4" (func $internal3231)) + (import "env" "Z4" (func $internal3232)) + (import "env" "_4" (func $internal3233)) + (import "env" "$4" (func $internal3234)) + (import "env" "a5" (func $internal3235)) + (import "env" "b5" (func $internal3236)) + (import "env" "c5" (func $internal3237)) + (import "env" "d5" (func $internal3238)) + (import "env" "e5" (func $internal3239)) + (import "env" "f5" (func $internal3240)) + (import "env" "g5" (func $internal3241)) + (import "env" "h5" (func $internal3242)) + (import "env" "i5" (func $internal3243)) + (import "env" "j5" (func $internal3244)) + (import "env" "k5" (func $internal3245)) + (import "env" "l5" (func $internal3246)) + (import "env" "m5" (func $internal3247)) + (import "env" "n5" (func $internal3248)) + (import "env" "o5" (func $internal3249)) + (import "env" "p5" (func $internal3250)) + (import "env" "q5" (func $internal3251)) + (import "env" "r5" (func $internal3252)) + (import "env" "s5" (func $internal3253)) + (import "env" "t5" (func $internal3254)) + (import "env" "u5" (func $internal3255)) + (import "env" "v5" (func $internal3256)) + (import "env" "w5" (func $internal3257)) + (import "env" "x5" (func $internal3258)) + (import "env" "y5" (func $internal3259)) + (import "env" "z5" (func $internal3260)) + (import "env" "A5" (func $internal3261)) + (import "env" "B5" (func $internal3262)) + (import "env" "C5" (func $internal3263)) + (import "env" "D5" (func $internal3264)) + (import "env" "E5" (func $internal3265)) + (import "env" "F5" (func $internal3266)) + (import "env" "G5" (func $internal3267)) + (import "env" "H5" (func $internal3268)) + (import "env" "I5" (func $internal3269)) + (import "env" "J5" (func $internal3270)) + (import "env" "K5" (func $internal3271)) + (import "env" "L5" (func $internal3272)) + (import "env" "M5" (func $internal3273)) + (import "env" "N5" (func $internal3274)) + (import "env" "O5" (func $internal3275)) + (import "env" "P5" (func $internal3276)) + (import "env" "Q5" (func $internal3277)) + (import "env" "R5" (func $internal3278)) + (import "env" "S5" (func $internal3279)) + (import "env" "T5" (func $internal3280)) + (import "env" "U5" (func $internal3281)) + (import "env" "V5" (func $internal3282)) + (import "env" "W5" (func $internal3283)) + (import "env" "X5" (func $internal3284)) + (import "env" "Y5" (func $internal3285)) + (import "env" "Z5" (func $internal3286)) + (import "env" "_5" (func $internal3287)) + (import "env" "$5" (func $internal3288)) + (import "env" "a6" (func $internal3289)) + (import "env" "b6" (func $internal3290)) + (import "env" "c6" (func $internal3291)) + (import "env" "d6" (func $internal3292)) + (import "env" "e6" (func $internal3293)) + (import "env" "f6" (func $internal3294)) + (import "env" "g6" (func $internal3295)) + (import "env" "h6" (func $internal3296)) + (import "env" "i6" (func $internal3297)) + (import "env" "j6" (func $internal3298)) + (import "env" "k6" (func $internal3299)) + (import "env" "l6" (func $internal3300)) + (import "env" "m6" (func $internal3301)) + (import "env" "n6" (func $internal3302)) + (import "env" "o6" (func $internal3303)) + (import "env" "p6" (func $internal3304)) + (import "env" "q6" (func $internal3305)) + (import "env" "r6" (func $internal3306)) + (import "env" "s6" (func $internal3307)) + (import "env" "t6" (func $internal3308)) + (import "env" "u6" (func $internal3309)) + (import "env" "v6" (func $internal3310)) + (import "env" "w6" (func $internal3311)) + (import "env" "x6" (func $internal3312)) + (import "env" "y6" (func $internal3313)) + (import "env" "z6" (func $internal3314)) + (import "env" "A6" (func $internal3315)) + (import "env" "B6" (func $internal3316)) + (import "env" "C6" (func $internal3317)) + (import "env" "D6" (func $internal3318)) + (import "env" "E6" (func $internal3319)) + (import "env" "F6" (func $internal3320)) + (import "env" "G6" (func $internal3321)) + (import "env" "H6" (func $internal3322)) + (import "env" "I6" (func $internal3323)) + (import "env" "J6" (func $internal3324)) + (import "env" "K6" (func $internal3325)) + (import "env" "L6" (func $internal3326)) + (import "env" "M6" (func $internal3327)) + (import "env" "N6" (func $internal3328)) + (import "env" "O6" (func $internal3329)) + (import "env" "P6" (func $internal3330)) + (import "env" "Q6" (func $internal3331)) + (import "env" "R6" (func $internal3332)) + (import "env" "S6" (func $internal3333)) + (import "env" "T6" (func $internal3334)) + (import "env" "U6" (func $internal3335)) + (import "env" "V6" (func $internal3336)) + (import "env" "W6" (func $internal3337)) + (import "env" "X6" (func $internal3338)) + (import "env" "Y6" (func $internal3339)) + (import "env" "Z6" (func $internal3340)) + (import "env" "_6" (func $internal3341)) + (import "env" "$6" (func $internal3342)) + (import "env" "a7" (func $internal3343)) + (import "env" "b7" (func $internal3344)) + (import "env" "c7" (func $internal3345)) + (import "env" "d7" (func $internal3346)) + (import "env" "e7" (func $internal3347)) + (import "env" "f7" (func $internal3348)) + (import "env" "g7" (func $internal3349)) + (import "env" "h7" (func $internal3350)) + (import "env" "i7" (func $internal3351)) + (import "env" "j7" (func $internal3352)) + (import "env" "k7" (func $internal3353)) + (import "env" "l7" (func $internal3354)) + (import "env" "m7" (func $internal3355)) + (import "env" "n7" (func $internal3356)) + (import "env" "o7" (func $internal3357)) + (import "env" "p7" (func $internal3358)) + (import "env" "q7" (func $internal3359)) + (import "env" "r7" (func $internal3360)) + (import "env" "s7" (func $internal3361)) + (import "env" "t7" (func $internal3362)) + (import "env" "u7" (func $internal3363)) + (import "env" "v7" (func $internal3364)) + (import "env" "w7" (func $internal3365)) + (import "env" "x7" (func $internal3366)) + (import "env" "y7" (func $internal3367)) + (import "env" "z7" (func $internal3368)) + (import "env" "A7" (func $internal3369)) + (import "env" "B7" (func $internal3370)) + (import "env" "C7" (func $internal3371)) + (import "env" "D7" (func $internal3372)) + (import "env" "E7" (func $internal3373)) + (import "env" "F7" (func $internal3374)) + (import "env" "G7" (func $internal3375)) + (import "env" "H7" (func $internal3376)) + (import "env" "I7" (func $internal3377)) + (import "env" "J7" (func $internal3378)) + (import "env" "K7" (func $internal3379)) + (import "env" "L7" (func $internal3380)) + (import "env" "M7" (func $internal3381)) + (import "env" "N7" (func $internal3382)) + (import "env" "O7" (func $internal3383)) + (import "env" "P7" (func $internal3384)) + (import "env" "Q7" (func $internal3385)) + (import "env" "R7" (func $internal3386)) + (import "env" "S7" (func $internal3387)) + (import "env" "T7" (func $internal3388)) + (import "env" "U7" (func $internal3389)) + (import "env" "V7" (func $internal3390)) + (import "env" "W7" (func $internal3391)) + (import "env" "X7" (func $internal3392)) + (import "env" "Y7" (func $internal3393)) + (import "env" "Z7" (func $internal3394)) + (import "env" "_7" (func $internal3395)) + (import "env" "$7" (func $internal3396)) + (import "env" "a8" (func $internal3397)) + (import "env" "b8" (func $internal3398)) + (import "env" "c8" (func $internal3399)) + (import "env" "d8" (func $internal3400)) + (import "env" "e8" (func $internal3401)) + (import "env" "f8" (func $internal3402)) + (import "env" "g8" (func $internal3403)) + (import "env" "h8" (func $internal3404)) + (import "env" "i8" (func $internal3405)) + (import "env" "j8" (func $internal3406)) + (import "env" "k8" (func $internal3407)) + (import "env" "l8" (func $internal3408)) + (import "env" "m8" (func $internal3409)) + (import "env" "n8" (func $internal3410)) + (import "env" "o8" (func $internal3411)) + (import "env" "p8" (func $internal3412)) + (import "env" "q8" (func $internal3413)) + (import "env" "r8" (func $internal3414)) + (import "env" "s8" (func $internal3415)) + (import "env" "t8" (func $internal3416)) + (import "env" "u8" (func $internal3417)) + (import "env" "v8" (func $internal3418)) + (import "env" "w8" (func $internal3419)) + (import "env" "x8" (func $internal3420)) + (import "env" "y8" (func $internal3421)) + (import "env" "z8" (func $internal3422)) + (import "env" "A8" (func $internal3423)) + (import "env" "B8" (func $internal3424)) + (import "env" "C8" (func $internal3425)) + (import "env" "D8" (func $internal3426)) + (import "env" "E8" (func $internal3427)) + (import "env" "F8" (func $internal3428)) + (import "env" "G8" (func $internal3429)) + (import "env" "H8" (func $internal3430)) + (import "env" "I8" (func $internal3431)) + (import "env" "J8" (func $internal3432)) + (import "env" "K8" (func $internal3433)) + (import "env" "L8" (func $internal3434)) + (import "env" "M8" (func $internal3435)) + (import "env" "N8" (func $internal3436)) + (import "env" "O8" (func $internal3437)) + (import "env" "P8" (func $internal3438)) + (import "env" "Q8" (func $internal3439)) + (import "env" "R8" (func $internal3440)) + (import "env" "S8" (func $internal3441)) + (import "env" "T8" (func $internal3442)) + (import "env" "U8" (func $internal3443)) + (import "env" "V8" (func $internal3444)) + (import "env" "W8" (func $internal3445)) + (import "env" "X8" (func $internal3446)) + (import "env" "Y8" (func $internal3447)) + (import "env" "Z8" (func $internal3448)) + (import "env" "_8" (func $internal3449)) + (import "env" "$8" (func $internal3450)) + (import "env" "a9" (func $internal3451)) + (import "env" "b9" (func $internal3452)) + (import "env" "c9" (func $internal3453)) + (import "env" "d9" (func $internal3454)) + (import "env" "e9" (func $internal3455)) + (import "env" "f9" (func $internal3456)) + (import "env" "g9" (func $internal3457)) + (import "env" "h9" (func $internal3458)) + (import "env" "i9" (func $internal3459)) + (import "env" "j9" (func $internal3460)) + (import "env" "k9" (func $internal3461)) + (import "env" "l9" (func $internal3462)) + (import "env" "m9" (func $internal3463)) + (import "env" "n9" (func $internal3464)) + (import "env" "o9" (func $internal3465)) + (import "env" "p9" (func $internal3466)) + (import "env" "q9" (func $internal3467)) + (import "env" "r9" (func $internal3468)) + (import "env" "s9" (func $internal3469)) + (import "env" "t9" (func $internal3470)) + (import "env" "u9" (func $internal3471)) + (import "env" "v9" (func $internal3472)) + (import "env" "w9" (func $internal3473)) + (import "env" "x9" (func $internal3474)) + (import "env" "y9" (func $internal3475)) + (import "env" "z9" (func $internal3476)) + (import "env" "A9" (func $internal3477)) + (import "env" "B9" (func $internal3478)) + (import "env" "C9" (func $internal3479)) + (import "env" "D9" (func $internal3480)) + (import "env" "E9" (func $internal3481)) + (import "env" "F9" (func $internal3482)) + (import "env" "G9" (func $internal3483)) + (import "env" "H9" (func $internal3484)) + (import "env" "I9" (func $internal3485)) + (import "env" "J9" (func $internal3486)) + (import "env" "K9" (func $internal3487)) + (import "env" "L9" (func $internal3488)) + (import "env" "M9" (func $internal3489)) + (import "env" "N9" (func $internal3490)) + (import "env" "O9" (func $internal3491)) + (import "env" "P9" (func $internal3492)) + (import "env" "Q9" (func $internal3493)) + (import "env" "R9" (func $internal3494)) + (import "env" "S9" (func $internal3495)) + (import "env" "T9" (func $internal3496)) + (import "env" "U9" (func $internal3497)) + (import "env" "V9" (func $internal3498)) + (import "env" "W9" (func $internal3499)) + (import "env" "X9" (func $internal3500)) + (import "env" "Y9" (func $internal3501)) + (import "env" "Z9" (func $internal3502)) + (import "env" "_9" (func $internal3503)) + (import "env" "$9" (func $internal3504)) + (import "env" "aaa" (func $internal3505)) + (import "env" "baa" (func $internal3506)) + (import "env" "caa" (func $internal3507)) + (import "env" "daa" (func $internal3508)) + (import "env" "eaa" (func $internal3509)) + (import "env" "faa" (func $internal3510)) + (import "env" "gaa" (func $internal3511)) + (import "env" "haa" (func $internal3512)) + (import "env" "iaa" (func $internal3513)) + (import "env" "jaa" (func $internal3514)) + (import "env" "kaa" (func $internal3515)) + (import "env" "laa" (func $internal3516)) + (import "env" "maa" (func $internal3517)) + (import "env" "naa" (func $internal3518)) + (import "env" "oaa" (func $internal3519)) + (import "env" "paa" (func $internal3520)) + (import "env" "qaa" (func $internal3521)) + (import "env" "raa" (func $internal3522)) + (import "env" "saa" (func $internal3523)) + (import "env" "taa" (func $internal3524)) + (import "env" "uaa" (func $internal3525)) + (import "env" "vaa" (func $internal3526)) + (import "env" "waa" (func $internal3527)) + (import "env" "xaa" (func $internal3528)) + (import "env" "yaa" (func $internal3529)) + (import "env" "zaa" (func $internal3530)) + (import "env" "Aaa" (func $internal3531)) + (import "env" "Baa" (func $internal3532)) + (import "env" "Caa" (func $internal3533)) + (import "env" "Daa" (func $internal3534)) + (import "env" "Eaa" (func $internal3535)) + (import "env" "Faa" (func $internal3536)) + (import "env" "Gaa" (func $internal3537)) + (import "env" "Haa" (func $internal3538)) + (import "env" "Iaa" (func $internal3539)) + (import "env" "Jaa" (func $internal3540)) + (import "env" "Kaa" (func $internal3541)) + (import "env" "Laa" (func $internal3542)) + (import "env" "Maa" (func $internal3543)) + (import "env" "Naa" (func $internal3544)) + (import "env" "Oaa" (func $internal3545)) + (import "env" "Paa" (func $internal3546)) + (import "env" "Qaa" (func $internal3547)) + (import "env" "Raa" (func $internal3548)) + (import "env" "Saa" (func $internal3549)) + (import "env" "Taa" (func $internal3550)) + (import "env" "Uaa" (func $internal3551)) + (import "env" "Vaa" (func $internal3552)) + (import "env" "Waa" (func $internal3553)) + (import "env" "Xaa" (func $internal3554)) + (import "env" "Yaa" (func $internal3555)) + (import "env" "Zaa" (func $internal3556)) + (import "env" "_aa" (func $internal3557)) + (import "env" "$aa" (func $internal3558)) + (import "env" "aba" (func $internal3559)) + (import "env" "bba" (func $internal3560)) + (import "env" "cba" (func $internal3561)) + (import "env" "dba" (func $internal3562)) + (import "env" "eba" (func $internal3563)) + (import "env" "fba" (func $internal3564)) + (import "env" "gba" (func $internal3565)) + (import "env" "hba" (func $internal3566)) + (import "env" "iba" (func $internal3567)) + (import "env" "jba" (func $internal3568)) + (import "env" "kba" (func $internal3569)) + (import "env" "lba" (func $internal3570)) + (import "env" "mba" (func $internal3571)) + (import "env" "nba" (func $internal3572)) + (import "env" "oba" (func $internal3573)) + (import "env" "pba" (func $internal3574)) + (import "env" "qba" (func $internal3575)) + (import "env" "rba" (func $internal3576)) + (import "env" "sba" (func $internal3577)) + (import "env" "tba" (func $internal3578)) + (import "env" "uba" (func $internal3579)) + (import "env" "vba" (func $internal3580)) + (import "env" "wba" (func $internal3581)) + (import "env" "xba" (func $internal3582)) + (import "env" "yba" (func $internal3583)) + (import "env" "zba" (func $internal3584)) + (import "env" "Aba" (func $internal3585)) + (import "env" "Bba" (func $internal3586)) + (import "env" "Cba" (func $internal3587)) + (import "env" "Dba" (func $internal3588)) + (import "env" "Eba" (func $internal3589)) + (import "env" "Fba" (func $internal3590)) + (import "env" "Gba" (func $internal3591)) + (import "env" "Hba" (func $internal3592)) + (import "env" "Iba" (func $internal3593)) + (import "env" "Jba" (func $internal3594)) + (import "env" "Kba" (func $internal3595)) + (import "env" "Lba" (func $internal3596)) + (import "env" "Mba" (func $internal3597)) + (import "env" "Nba" (func $internal3598)) + (import "env" "Oba" (func $internal3599)) + (import "env" "Pba" (func $internal3600)) + (import "env" "Qba" (func $internal3601)) + (import "env" "Rba" (func $internal3602)) + (import "env" "Sba" (func $internal3603)) + (import "env" "Tba" (func $internal3604)) + (import "env" "Uba" (func $internal3605)) + (import "env" "Vba" (func $internal3606)) + (import "env" "Wba" (func $internal3607)) + (import "env" "Xba" (func $internal3608)) + (import "env" "Yba" (func $internal3609)) + (import "env" "Zba" (func $internal3610)) + (import "env" "_ba" (func $internal3611)) + (import "env" "$ba" (func $internal3612)) + (import "env" "aca" (func $internal3613)) + (import "env" "bca" (func $internal3614)) + (import "env" "cca" (func $internal3615)) + (import "env" "dca" (func $internal3616)) + (import "env" "eca" (func $internal3617)) + (import "env" "fca" (func $internal3618)) + (import "env" "gca" (func $internal3619)) + (import "env" "hca" (func $internal3620)) + (import "env" "ica" (func $internal3621)) + (import "env" "jca" (func $internal3622)) + (import "env" "kca" (func $internal3623)) + (import "env" "lca" (func $internal3624)) + (import "env" "mca" (func $internal3625)) + (import "env" "nca" (func $internal3626)) + (import "env" "oca" (func $internal3627)) + (import "env" "pca" (func $internal3628)) + (import "env" "qca" (func $internal3629)) + (import "env" "rca" (func $internal3630)) + (import "env" "sca" (func $internal3631)) + (import "env" "tca" (func $internal3632)) + (import "env" "uca" (func $internal3633)) + (import "env" "vca" (func $internal3634)) + (import "env" "wca" (func $internal3635)) + (import "env" "xca" (func $internal3636)) + (import "env" "yca" (func $internal3637)) + (import "env" "zca" (func $internal3638)) + (import "env" "Aca" (func $internal3639)) + (import "env" "Bca" (func $internal3640)) + (import "env" "Cca" (func $internal3641)) + (import "env" "Dca" (func $internal3642)) + (import "env" "Eca" (func $internal3643)) + (import "env" "Fca" (func $internal3644)) + (import "env" "Gca" (func $internal3645)) + (import "env" "Hca" (func $internal3646)) + (import "env" "Ica" (func $internal3647)) + (import "env" "Jca" (func $internal3648)) + (import "env" "Kca" (func $internal3649)) + (import "env" "Lca" (func $internal3650)) + (import "env" "Mca" (func $internal3651)) + (import "env" "Nca" (func $internal3652)) + (import "env" "Oca" (func $internal3653)) + (import "env" "Pca" (func $internal3654)) + (import "env" "Qca" (func $internal3655)) + (import "env" "Rca" (func $internal3656)) + (import "env" "Sca" (func $internal3657)) + (import "env" "Tca" (func $internal3658)) + (import "env" "Uca" (func $internal3659)) + (import "env" "Vca" (func $internal3660)) + (import "env" "Wca" (func $internal3661)) + (import "env" "Xca" (func $internal3662)) + (import "env" "Yca" (func $internal3663)) + (import "env" "Zca" (func $internal3664)) + (import "env" "_ca" (func $internal3665)) + (import "env" "$ca" (func $internal3666)) + (import "env" "ada" (func $internal3667)) + (import "env" "bda" (func $internal3668)) + (import "env" "cda" (func $internal3669)) + (import "env" "dda" (func $internal3670)) + (import "env" "eda" (func $internal3671)) + (import "env" "fda" (func $internal3672)) + (import "env" "gda" (func $internal3673)) + (import "env" "hda" (func $internal3674)) + (import "env" "ida" (func $internal3675)) + (import "env" "jda" (func $internal3676)) + (import "env" "kda" (func $internal3677)) + (import "env" "lda" (func $internal3678)) + (import "env" "mda" (func $internal3679)) + (import "env" "nda" (func $internal3680)) + (import "env" "oda" (func $internal3681)) + (import "env" "pda" (func $internal3682)) + (import "env" "qda" (func $internal3683)) + (import "env" "rda" (func $internal3684)) + (import "env" "sda" (func $internal3685)) + (import "env" "tda" (func $internal3686)) + (import "env" "uda" (func $internal3687)) + (import "env" "vda" (func $internal3688)) + (import "env" "wda" (func $internal3689)) + (import "env" "xda" (func $internal3690)) + (import "env" "yda" (func $internal3691)) + (import "env" "zda" (func $internal3692)) + (import "env" "Ada" (func $internal3693)) + (import "env" "Bda" (func $internal3694)) + (import "env" "Cda" (func $internal3695)) + (import "env" "Dda" (func $internal3696)) + (import "env" "Eda" (func $internal3697)) + (import "env" "Fda" (func $internal3698)) + (import "env" "Gda" (func $internal3699)) + (import "env" "Hda" (func $internal3700)) + (import "env" "Ida" (func $internal3701)) + (import "env" "Jda" (func $internal3702)) + (import "env" "Kda" (func $internal3703)) + (import "env" "Lda" (func $internal3704)) + (import "env" "Mda" (func $internal3705)) + (import "env" "Nda" (func $internal3706)) + (import "env" "Oda" (func $internal3707)) + (import "env" "Pda" (func $internal3708)) + (import "env" "Qda" (func $internal3709)) + (import "env" "Rda" (func $internal3710)) + (import "env" "Sda" (func $internal3711)) + (import "env" "Tda" (func $internal3712)) + (import "env" "Uda" (func $internal3713)) + (import "env" "Vda" (func $internal3714)) + (import "env" "Wda" (func $internal3715)) + (import "env" "Xda" (func $internal3716)) + (import "env" "Yda" (func $internal3717)) + (import "env" "Zda" (func $internal3718)) + (import "env" "_da" (func $internal3719)) + (import "env" "$da" (func $internal3720)) + (import "env" "aea" (func $internal3721)) + (import "env" "bea" (func $internal3722)) + (import "env" "cea" (func $internal3723)) + (import "env" "dea" (func $internal3724)) + (import "env" "eea" (func $internal3725)) + (import "env" "fea" (func $internal3726)) + (import "env" "gea" (func $internal3727)) + (import "env" "hea" (func $internal3728)) + (import "env" "iea" (func $internal3729)) + (import "env" "jea" (func $internal3730)) + (import "env" "kea" (func $internal3731)) + (import "env" "lea" (func $internal3732)) + (import "env" "mea" (func $internal3733)) + (import "env" "nea" (func $internal3734)) + (import "env" "oea" (func $internal3735)) + (import "env" "pea" (func $internal3736)) + (import "env" "qea" (func $internal3737)) + (import "env" "rea" (func $internal3738)) + (import "env" "sea" (func $internal3739)) + (import "env" "tea" (func $internal3740)) + (import "env" "uea" (func $internal3741)) + (import "env" "vea" (func $internal3742)) + (import "env" "wea" (func $internal3743)) + (import "env" "xea" (func $internal3744)) + (import "env" "yea" (func $internal3745)) + (import "env" "zea" (func $internal3746)) + (import "env" "Aea" (func $internal3747)) + (import "env" "Bea" (func $internal3748)) + (import "env" "Cea" (func $internal3749)) + (import "env" "Dea" (func $internal3750)) + (import "env" "Eea" (func $internal3751)) + (import "env" "Fea" (func $internal3752)) + (import "env" "Gea" (func $internal3753)) + (import "env" "Hea" (func $internal3754)) + (import "env" "Iea" (func $internal3755)) + (import "env" "Jea" (func $internal3756)) + (import "env" "Kea" (func $internal3757)) + (import "env" "Lea" (func $internal3758)) + (import "env" "Mea" (func $internal3759)) + (import "env" "Nea" (func $internal3760)) + (import "env" "Oea" (func $internal3761)) + (import "env" "Pea" (func $internal3762)) + (import "env" "Qea" (func $internal3763)) + (import "env" "Rea" (func $internal3764)) + (import "env" "Sea" (func $internal3765)) + (import "env" "Tea" (func $internal3766)) + (import "env" "Uea" (func $internal3767)) + (import "env" "Vea" (func $internal3768)) + (import "env" "Wea" (func $internal3769)) + (import "env" "Xea" (func $internal3770)) + (import "env" "Yea" (func $internal3771)) + (import "env" "Zea" (func $internal3772)) + (import "env" "_ea" (func $internal3773)) + (import "env" "$ea" (func $internal3774)) + (import "env" "afa" (func $internal3775)) + (import "env" "bfa" (func $internal3776)) + (import "env" "cfa" (func $internal3777)) + (import "env" "dfa" (func $internal3778)) + (import "env" "efa" (func $internal3779)) + (import "env" "ffa" (func $internal3780)) + (import "env" "gfa" (func $internal3781)) + (import "env" "hfa" (func $internal3782)) + (import "env" "ifa" (func $internal3783)) + (import "env" "jfa" (func $internal3784)) + (import "env" "kfa" (func $internal3785)) + (import "env" "lfa" (func $internal3786)) + (import "env" "mfa" (func $internal3787)) + (import "env" "nfa" (func $internal3788)) + (import "env" "ofa" (func $internal3789)) + (import "env" "pfa" (func $internal3790)) + (import "env" "qfa" (func $internal3791)) + (import "env" "rfa" (func $internal3792)) + (import "env" "sfa" (func $internal3793)) + (import "env" "tfa" (func $internal3794)) + (import "env" "ufa" (func $internal3795)) + (import "env" "vfa" (func $internal3796)) + (import "env" "wfa" (func $internal3797)) + (import "env" "xfa" (func $internal3798)) + (import "env" "yfa" (func $internal3799)) + (import "env" "zfa" (func $internal3800)) + (import "env" "Afa" (func $internal3801)) + (import "env" "Bfa" (func $internal3802)) + (import "env" "Cfa" (func $internal3803)) + (import "env" "Dfa" (func $internal3804)) + (import "env" "Efa" (func $internal3805)) + (import "env" "Ffa" (func $internal3806)) + (import "env" "Gfa" (func $internal3807)) + (import "env" "Hfa" (func $internal3808)) + (import "env" "Ifa" (func $internal3809)) + (import "env" "Jfa" (func $internal3810)) + (import "env" "Kfa" (func $internal3811)) + (import "env" "Lfa" (func $internal3812)) + (import "env" "Mfa" (func $internal3813)) + (import "env" "Nfa" (func $internal3814)) + (import "env" "Ofa" (func $internal3815)) + (import "env" "Pfa" (func $internal3816)) + (import "env" "Qfa" (func $internal3817)) + (import "env" "Rfa" (func $internal3818)) + (import "env" "Sfa" (func $internal3819)) + (import "env" "Tfa" (func $internal3820)) + (import "env" "Ufa" (func $internal3821)) + (import "env" "Vfa" (func $internal3822)) + (import "env" "Wfa" (func $internal3823)) + (import "env" "Xfa" (func $internal3824)) + (import "env" "Yfa" (func $internal3825)) + (import "env" "Zfa" (func $internal3826)) + (import "env" "_fa" (func $internal3827)) + (import "env" "$fa" (func $internal3828)) + (import "env" "aga" (func $internal3829)) + (import "env" "bga" (func $internal3830)) + (import "env" "cga" (func $internal3831)) + (import "env" "dga" (func $internal3832)) + (import "env" "ega" (func $internal3833)) + (import "env" "fga" (func $internal3834)) + (import "env" "gga" (func $internal3835)) + (import "env" "hga" (func $internal3836)) + (import "env" "iga" (func $internal3837)) + (import "env" "jga" (func $internal3838)) + (import "env" "kga" (func $internal3839)) + (import "env" "lga" (func $internal3840)) + (import "env" "mga" (func $internal3841)) + (import "env" "nga" (func $internal3842)) + (import "env" "oga" (func $internal3843)) + (import "env" "pga" (func $internal3844)) + (import "env" "qga" (func $internal3845)) + (import "env" "rga" (func $internal3846)) + (import "env" "sga" (func $internal3847)) + (import "env" "tga" (func $internal3848)) + (import "env" "uga" (func $internal3849)) + (import "env" "vga" (func $internal3850)) + (import "env" "wga" (func $internal3851)) + (import "env" "xga" (func $internal3852)) + (import "env" "yga" (func $internal3853)) + (import "env" "zga" (func $internal3854)) + (import "env" "Aga" (func $internal3855)) + (import "env" "Bga" (func $internal3856)) + (import "env" "Cga" (func $internal3857)) + (import "env" "Dga" (func $internal3858)) + (import "env" "Ega" (func $internal3859)) + (import "env" "Fga" (func $internal3860)) + (import "env" "Gga" (func $internal3861)) + (import "env" "Hga" (func $internal3862)) + (import "env" "Iga" (func $internal3863)) + (import "env" "Jga" (func $internal3864)) + (import "env" "Kga" (func $internal3865)) + (import "env" "Lga" (func $internal3866)) + (import "env" "Mga" (func $internal3867)) + (import "env" "Nga" (func $internal3868)) + (import "env" "Oga" (func $internal3869)) + (import "env" "Pga" (func $internal3870)) + (import "env" "Qga" (func $internal3871)) + (import "env" "Rga" (func $internal3872)) + (import "env" "Sga" (func $internal3873)) + (import "env" "Tga" (func $internal3874)) + (import "env" "Uga" (func $internal3875)) + (import "env" "Vga" (func $internal3876)) + (import "env" "Wga" (func $internal3877)) + (import "env" "Xga" (func $internal3878)) + (import "env" "Yga" (func $internal3879)) + (import "env" "Zga" (func $internal3880)) + (import "env" "_ga" (func $internal3881)) + (import "env" "$ga" (func $internal3882)) + (import "env" "aha" (func $internal3883)) + (import "env" "bha" (func $internal3884)) + (import "env" "cha" (func $internal3885)) + (import "env" "dha" (func $internal3886)) + (import "env" "eha" (func $internal3887)) + (import "env" "fha" (func $internal3888)) + (import "env" "gha" (func $internal3889)) + (import "env" "hha" (func $internal3890)) + (import "env" "iha" (func $internal3891)) + (import "env" "jha" (func $internal3892)) + (import "env" "kha" (func $internal3893)) + (import "env" "lha" (func $internal3894)) + (import "env" "mha" (func $internal3895)) + (import "env" "nha" (func $internal3896)) + (import "env" "oha" (func $internal3897)) + (import "env" "pha" (func $internal3898)) + (import "env" "qha" (func $internal3899)) + (import "env" "rha" (func $internal3900)) + (import "env" "sha" (func $internal3901)) + (import "env" "tha" (func $internal3902)) + (import "env" "uha" (func $internal3903)) + (import "env" "vha" (func $internal3904)) + (import "env" "wha" (func $internal3905)) + (import "env" "xha" (func $internal3906)) + (import "env" "yha" (func $internal3907)) + (import "env" "zha" (func $internal3908)) + (import "env" "Aha" (func $internal3909)) + (import "env" "Bha" (func $internal3910)) + (import "env" "Cha" (func $internal3911)) + (import "env" "Dha" (func $internal3912)) + (import "env" "Eha" (func $internal3913)) + (import "env" "Fha" (func $internal3914)) + (import "env" "Gha" (func $internal3915)) + (import "env" "Hha" (func $internal3916)) + (import "env" "Iha" (func $internal3917)) + (import "env" "Jha" (func $internal3918)) + (import "env" "Kha" (func $internal3919)) + (import "env" "Lha" (func $internal3920)) + (import "env" "Mha" (func $internal3921)) + (import "env" "Nha" (func $internal3922)) + (import "env" "Oha" (func $internal3923)) + (import "env" "Pha" (func $internal3924)) + (import "env" "Qha" (func $internal3925)) + (import "env" "Rha" (func $internal3926)) + (import "env" "Sha" (func $internal3927)) + (import "env" "Tha" (func $internal3928)) + (import "env" "Uha" (func $internal3929)) + (import "env" "Vha" (func $internal3930)) + (import "env" "Wha" (func $internal3931)) + (import "env" "Xha" (func $internal3932)) + (import "env" "Yha" (func $internal3933)) + (import "env" "Zha" (func $internal3934)) + (import "env" "_ha" (func $internal3935)) + (import "env" "$ha" (func $internal3936)) + (import "env" "aia" (func $internal3937)) + (import "env" "bia" (func $internal3938)) + (import "env" "cia" (func $internal3939)) + (import "env" "dia" (func $internal3940)) + (import "env" "eia" (func $internal3941)) + (import "env" "fia" (func $internal3942)) + (import "env" "gia" (func $internal3943)) + (import "env" "hia" (func $internal3944)) + (import "env" "iia" (func $internal3945)) + (import "env" "jia" (func $internal3946)) + (import "env" "kia" (func $internal3947)) + (import "env" "lia" (func $internal3948)) + (import "env" "mia" (func $internal3949)) + (import "env" "nia" (func $internal3950)) + (import "env" "oia" (func $internal3951)) + (import "env" "pia" (func $internal3952)) + (import "env" "qia" (func $internal3953)) + (import "env" "ria" (func $internal3954)) + (import "env" "sia" (func $internal3955)) + (import "env" "tia" (func $internal3956)) + (import "env" "uia" (func $internal3957)) + (import "env" "via" (func $internal3958)) + (import "env" "wia" (func $internal3959)) + (import "env" "xia" (func $internal3960)) + (import "env" "yia" (func $internal3961)) + (import "env" "zia" (func $internal3962)) + (import "env" "Aia" (func $internal3963)) + (import "env" "Bia" (func $internal3964)) + (import "env" "Cia" (func $internal3965)) + (import "env" "Dia" (func $internal3966)) + (import "env" "Eia" (func $internal3967)) + (import "env" "Fia" (func $internal3968)) + (import "env" "Gia" (func $internal3969)) + (import "env" "Hia" (func $internal3970)) + (import "env" "Iia" (func $internal3971)) + (import "env" "Jia" (func $internal3972)) + (import "env" "Kia" (func $internal3973)) + (import "env" "Lia" (func $internal3974)) + (import "env" "Mia" (func $internal3975)) + (import "env" "Nia" (func $internal3976)) + (import "env" "Oia" (func $internal3977)) + (import "env" "Pia" (func $internal3978)) + (import "env" "Qia" (func $internal3979)) + (import "env" "Ria" (func $internal3980)) + (import "env" "Sia" (func $internal3981)) + (import "env" "Tia" (func $internal3982)) + (import "env" "Uia" (func $internal3983)) + (import "env" "Via" (func $internal3984)) + (import "env" "Wia" (func $internal3985)) + (import "env" "Xia" (func $internal3986)) + (import "env" "Yia" (func $internal3987)) + (import "env" "Zia" (func $internal3988)) + (import "env" "_ia" (func $internal3989)) + (import "env" "$ia" (func $internal3990)) + (import "env" "aja" (func $internal3991)) + (import "env" "bja" (func $internal3992)) + (import "env" "cja" (func $internal3993)) + (import "env" "dja" (func $internal3994)) + (import "env" "eja" (func $internal3995)) + (import "env" "fja" (func $internal3996)) + (import "env" "gja" (func $internal3997)) + (import "env" "hja" (func $internal3998)) + (import "env" "ija" (func $internal3999)) + (import "env" "jja" (func $internal4000)) + (import "env" "kja" (func $internal4001)) + (import "env" "lja" (func $internal4002)) + (import "env" "mja" (func $internal4003)) + (import "env" "nja" (func $internal4004)) + (import "env" "oja" (func $internal4005)) + (import "env" "pja" (func $internal4006)) + (import "env" "qja" (func $internal4007)) + (import "env" "rja" (func $internal4008)) + (import "env" "sja" (func $internal4009)) + (import "env" "tja" (func $internal4010)) + (import "env" "uja" (func $internal4011)) + (import "env" "vja" (func $internal4012)) + (import "env" "wja" (func $internal4013)) + (import "env" "xja" (func $internal4014)) + (import "env" "yja" (func $internal4015)) + (import "env" "zja" (func $internal4016)) + (import "env" "Aja" (func $internal4017)) + (import "env" "Bja" (func $internal4018)) + (import "env" "Cja" (func $internal4019)) + (import "env" "Dja" (func $internal4020)) + (import "env" "Eja" (func $internal4021)) + (import "env" "Fja" (func $internal4022)) + (import "env" "Gja" (func $internal4023)) + (import "env" "Hja" (func $internal4024)) + (import "env" "Ija" (func $internal4025)) + (import "env" "Jja" (func $internal4026)) + (import "env" "Kja" (func $internal4027)) + (import "env" "Lja" (func $internal4028)) + (import "env" "Mja" (func $internal4029)) + (import "env" "Nja" (func $internal4030)) + (import "env" "Oja" (func $internal4031)) + (import "env" "Pja" (func $internal4032)) + (import "env" "Qja" (func $internal4033)) + (import "env" "Rja" (func $internal4034)) + (import "env" "Sja" (func $internal4035)) + (import "env" "Tja" (func $internal4036)) + (import "env" "Uja" (func $internal4037)) + (import "env" "Vja" (func $internal4038)) + (import "env" "Wja" (func $internal4039)) + (import "env" "Xja" (func $internal4040)) + (import "env" "Yja" (func $internal4041)) + (import "env" "Zja" (func $internal4042)) + (import "env" "_ja" (func $internal4043)) + (import "env" "$ja" (func $internal4044)) + (import "env" "aka" (func $internal4045)) + (import "env" "bka" (func $internal4046)) + (import "env" "cka" (func $internal4047)) + (import "env" "dka" (func $internal4048)) + (import "env" "eka" (func $internal4049)) + (import "env" "fka" (func $internal4050)) + (import "env" "gka" (func $internal4051)) + (import "env" "hka" (func $internal4052)) + (import "env" "ika" (func $internal4053)) + (import "env" "jka" (func $internal4054)) + (import "env" "kka" (func $internal4055)) + (import "env" "lka" (func $internal4056)) + (import "env" "mka" (func $internal4057)) + (import "env" "nka" (func $internal4058)) + (import "env" "oka" (func $internal4059)) + (import "env" "pka" (func $internal4060)) + (import "env" "qka" (func $internal4061)) + (import "env" "rka" (func $internal4062)) + (import "env" "ska" (func $internal4063)) + (import "env" "tka" (func $internal4064)) + (import "env" "uka" (func $internal4065)) + (import "env" "vka" (func $internal4066)) + (import "env" "wka" (func $internal4067)) + (import "env" "xka" (func $internal4068)) + (import "env" "yka" (func $internal4069)) + (import "env" "zka" (func $internal4070)) + (import "env" "Aka" (func $internal4071)) + (import "env" "Bka" (func $internal4072)) + (import "env" "Cka" (func $internal4073)) + (import "env" "Dka" (func $internal4074)) + (import "env" "Eka" (func $internal4075)) + (import "env" "Fka" (func $internal4076)) + (import "env" "Gka" (func $internal4077)) + (import "env" "Hka" (func $internal4078)) + (import "env" "Ika" (func $internal4079)) + (import "env" "Jka" (func $internal4080)) + (import "env" "Kka" (func $internal4081)) + (import "env" "Lka" (func $internal4082)) + (import "env" "Mka" (func $internal4083)) + (import "env" "Nka" (func $internal4084)) + (import "env" "Oka" (func $internal4085)) + (import "env" "Pka" (func $internal4086)) + (import "env" "Qka" (func $internal4087)) + (import "env" "Rka" (func $internal4088)) + (import "env" "Ska" (func $internal4089)) + (import "env" "Tka" (func $internal4090)) + (import "env" "Uka" (func $internal4091)) + (import "env" "Vka" (func $internal4092)) + (import "env" "Wka" (func $internal4093)) + (import "env" "Xka" (func $internal4094)) + (import "env" "Yka" (func $internal4095)) + (import "env" "Zka" (func $internal4096)) + (import "env" "_ka" (func $internal4097)) + (import "env" "$ka" (func $internal4098)) + (import "env" "ala" (func $internal4099)) + (import "env" "bla" (func $internal4100)) + (import "env" "cla" (func $internal4101)) + (import "env" "dla" (func $internal4102)) + (import "env" "ela" (func $internal4103)) + (import "env" "fla" (func $internal4104)) + (import "env" "gla" (func $internal4105)) + (import "env" "hla" (func $internal4106)) + (import "env" "ila" (func $internal4107)) + (import "env" "jla" (func $internal4108)) + (import "env" "kla" (func $internal4109)) + (import "env" "lla" (func $internal4110)) + (import "env" "mla" (func $internal4111)) + (import "env" "nla" (func $internal4112)) + (import "env" "ola" (func $internal4113)) + (import "env" "pla" (func $internal4114)) + (import "env" "qla" (func $internal4115)) + (import "env" "rla" (func $internal4116)) + (import "env" "sla" (func $internal4117)) + (import "env" "tla" (func $internal4118)) + (import "env" "ula" (func $internal4119)) + (import "env" "vla" (func $internal4120)) + (import "env" "wla" (func $internal4121)) + (import "env" "xla" (func $internal4122)) + (import "env" "yla" (func $internal4123)) + (import "env" "zla" (func $internal4124)) + (import "env" "Ala" (func $internal4125)) + (import "env" "Bla" (func $internal4126)) + (import "env" "Cla" (func $internal4127)) + (import "env" "Dla" (func $internal4128)) + (import "env" "Ela" (func $internal4129)) + (import "env" "Fla" (func $internal4130)) + (import "env" "Gla" (func $internal4131)) + (import "env" "Hla" (func $internal4132)) + (import "env" "Ila" (func $internal4133)) + (import "env" "Jla" (func $internal4134)) + (import "env" "Kla" (func $internal4135)) + (import "env" "Lla" (func $internal4136)) + (import "env" "Mla" (func $internal4137)) + (import "env" "Nla" (func $internal4138)) + (import "env" "Ola" (func $internal4139)) + (import "env" "Pla" (func $internal4140)) + (import "env" "Qla" (func $internal4141)) + (import "env" "Rla" (func $internal4142)) + (import "env" "Sla" (func $internal4143)) + (import "env" "Tla" (func $internal4144)) + (import "env" "Ula" (func $internal4145)) + (import "env" "Vla" (func $internal4146)) + (import "env" "Wla" (func $internal4147)) + (import "env" "Xla" (func $internal4148)) + (import "env" "Yla" (func $internal4149)) + (import "env" "Zla" (func $internal4150)) + (import "env" "_la" (func $internal4151)) + (import "env" "$la" (func $internal4152)) + (import "env" "ama" (func $internal4153)) + (import "env" "bma" (func $internal4154)) + (import "env" "cma" (func $internal4155)) + (import "env" "dma" (func $internal4156)) + (import "env" "ema" (func $internal4157)) + (import "env" "fma" (func $internal4158)) + (import "env" "gma" (func $internal4159)) + (import "env" "hma" (func $internal4160)) + (import "env" "ima" (func $internal4161)) + (import "env" "jma" (func $internal4162)) + (import "env" "kma" (func $internal4163)) + (import "env" "lma" (func $internal4164)) + (import "env" "mma" (func $internal4165)) + (import "env" "nma" (func $internal4166)) + (import "env" "oma" (func $internal4167)) + (import "env" "pma" (func $internal4168)) + (import "env" "qma" (func $internal4169)) + (import "env" "rma" (func $internal4170)) + (import "env" "sma" (func $internal4171)) + (import "env" "tma" (func $internal4172)) + (import "env" "uma" (func $internal4173)) + (import "env" "vma" (func $internal4174)) + (import "env" "wma" (func $internal4175)) + (import "env" "xma" (func $internal4176)) + (import "env" "yma" (func $internal4177)) + (import "env" "zma" (func $internal4178)) + (import "env" "Ama" (func $internal4179)) + (import "env" "Bma" (func $internal4180)) + (import "env" "Cma" (func $internal4181)) + (import "env" "Dma" (func $internal4182)) + (import "env" "Ema" (func $internal4183)) + (import "env" "Fma" (func $internal4184)) + (import "env" "Gma" (func $internal4185)) + (import "env" "Hma" (func $internal4186)) + (import "env" "Ima" (func $internal4187)) + (import "env" "Jma" (func $internal4188)) + (import "env" "Kma" (func $internal4189)) + (import "env" "Lma" (func $internal4190)) + (import "env" "Mma" (func $internal4191)) + (import "env" "Nma" (func $internal4192)) + (import "env" "Oma" (func $internal4193)) + (import "env" "Pma" (func $internal4194)) + (import "env" "Qma" (func $internal4195)) + (import "env" "Rma" (func $internal4196)) + (import "env" "Sma" (func $internal4197)) + (import "env" "Tma" (func $internal4198)) + (import "env" "Uma" (func $internal4199)) + (import "env" "Vma" (func $internal4200)) + (import "env" "Wma" (func $internal4201)) + (import "env" "Xma" (func $internal4202)) + (import "env" "Yma" (func $internal4203)) + (import "env" "Zma" (func $internal4204)) + (import "env" "_ma" (func $internal4205)) + (import "env" "$ma" (func $internal4206)) + (import "env" "ana" (func $internal4207)) + (import "env" "bna" (func $internal4208)) + (import "env" "cna" (func $internal4209)) + (import "env" "dna" (func $internal4210)) + (import "env" "ena" (func $internal4211)) + (import "env" "fna" (func $internal4212)) + (import "env" "gna" (func $internal4213)) + (import "env" "hna" (func $internal4214)) + (import "env" "ina" (func $internal4215)) + (import "env" "jna" (func $internal4216)) + (import "env" "kna" (func $internal4217)) + (import "env" "lna" (func $internal4218)) + (import "env" "mna" (func $internal4219)) + (import "env" "nna" (func $internal4220)) + (import "env" "ona" (func $internal4221)) + (import "env" "pna" (func $internal4222)) + (import "env" "qna" (func $internal4223)) + (import "env" "rna" (func $internal4224)) + (import "env" "sna" (func $internal4225)) + (import "env" "tna" (func $internal4226)) + (import "env" "una" (func $internal4227)) + (import "env" "vna" (func $internal4228)) + (import "env" "wna" (func $internal4229)) + (import "env" "xna" (func $internal4230)) + (import "env" "yna" (func $internal4231)) + (import "env" "zna" (func $internal4232)) + (import "env" "Ana" (func $internal4233)) + (import "env" "Bna" (func $internal4234)) + (import "env" "Cna" (func $internal4235)) + (import "env" "Dna" (func $internal4236)) + (import "env" "Ena" (func $internal4237)) + (import "env" "Fna" (func $internal4238)) + (import "env" "Gna" (func $internal4239)) + (import "env" "Hna" (func $internal4240)) + (import "env" "Ina" (func $internal4241)) + (import "env" "Jna" (func $internal4242)) + (import "env" "Kna" (func $internal4243)) + (import "env" "Lna" (func $internal4244)) + (import "env" "Mna" (func $internal4245)) + (import "env" "Nna" (func $internal4246)) + (import "env" "Ona" (func $internal4247)) + (import "env" "Pna" (func $internal4248)) + (import "env" "Qna" (func $internal4249)) + (import "env" "Rna" (func $internal4250)) + (import "env" "Sna" (func $internal4251)) + (import "env" "Tna" (func $internal4252)) + (import "env" "Una" (func $internal4253)) + (import "env" "Vna" (func $internal4254)) + (import "env" "Wna" (func $internal4255)) + (import "env" "Xna" (func $internal4256)) + (import "env" "Yna" (func $internal4257)) + (import "env" "Zna" (func $internal4258)) + (import "env" "_na" (func $internal4259)) + (import "env" "$na" (func $internal4260)) + (import "env" "aoa" (func $internal4261)) + (import "env" "boa" (func $internal4262)) + (import "env" "coa" (func $internal4263)) + (import "env" "doa" (func $internal4264)) + (import "env" "eoa" (func $internal4265)) + (import "env" "foa" (func $internal4266)) + (import "env" "goa" (func $internal4267)) + (import "env" "hoa" (func $internal4268)) + (import "env" "ioa" (func $internal4269)) + (import "env" "joa" (func $internal4270)) + (import "env" "koa" (func $internal4271)) + (import "env" "loa" (func $internal4272)) + (import "env" "moa" (func $internal4273)) + (import "env" "noa" (func $internal4274)) + (import "env" "ooa" (func $internal4275)) + (import "env" "poa" (func $internal4276)) + (import "env" "qoa" (func $internal4277)) + (import "env" "roa" (func $internal4278)) + (import "env" "soa" (func $internal4279)) + (import "env" "toa" (func $internal4280)) + (import "env" "uoa" (func $internal4281)) + (import "env" "voa" (func $internal4282)) + (import "env" "woa" (func $internal4283)) + (import "env" "xoa" (func $internal4284)) + (import "env" "yoa" (func $internal4285)) + (import "env" "zoa" (func $internal4286)) + (import "env" "Aoa" (func $internal4287)) + (import "env" "Boa" (func $internal4288)) + (import "env" "Coa" (func $internal4289)) + (import "env" "Doa" (func $internal4290)) + (import "env" "Eoa" (func $internal4291)) + (import "env" "Foa" (func $internal4292)) + (import "env" "Goa" (func $internal4293)) + (import "env" "Hoa" (func $internal4294)) + (import "env" "Ioa" (func $internal4295)) + (import "env" "Joa" (func $internal4296)) + (import "env" "Koa" (func $internal4297)) + (import "env" "Loa" (func $internal4298)) + (import "env" "Moa" (func $internal4299)) + (import "env" "Noa" (func $internal4300)) + (import "env" "Ooa" (func $internal4301)) + (import "env" "Poa" (func $internal4302)) + (import "env" "Qoa" (func $internal4303)) + (import "env" "Roa" (func $internal4304)) + (import "env" "Soa" (func $internal4305)) + (import "env" "Toa" (func $internal4306)) + (import "env" "Uoa" (func $internal4307)) + (import "env" "Voa" (func $internal4308)) + (import "env" "Woa" (func $internal4309)) + (import "env" "Xoa" (func $internal4310)) + (import "env" "Yoa" (func $internal4311)) + (import "env" "Zoa" (func $internal4312)) + (import "env" "_oa" (func $internal4313)) + (import "env" "$oa" (func $internal4314)) + (import "env" "apa" (func $internal4315)) + (import "env" "bpa" (func $internal4316)) + (import "env" "cpa" (func $internal4317)) + (import "env" "dpa" (func $internal4318)) + (import "env" "epa" (func $internal4319)) + (import "env" "fpa" (func $internal4320)) + (import "env" "gpa" (func $internal4321)) + (import "env" "hpa" (func $internal4322)) + (import "env" "ipa" (func $internal4323)) + (import "env" "jpa" (func $internal4324)) + (import "env" "kpa" (func $internal4325)) + (import "env" "lpa" (func $internal4326)) + (import "env" "mpa" (func $internal4327)) + (import "env" "npa" (func $internal4328)) + (import "env" "opa" (func $internal4329)) + (import "env" "ppa" (func $internal4330)) + (import "env" "qpa" (func $internal4331)) + (import "env" "rpa" (func $internal4332)) + (import "env" "spa" (func $internal4333)) + (import "env" "tpa" (func $internal4334)) + (import "env" "upa" (func $internal4335)) + (import "env" "vpa" (func $internal4336)) + (import "env" "wpa" (func $internal4337)) + (import "env" "xpa" (func $internal4338)) + (import "env" "ypa" (func $internal4339)) + (import "env" "zpa" (func $internal4340)) + (import "env" "Apa" (func $internal4341)) + (import "env" "Bpa" (func $internal4342)) + (import "env" "Cpa" (func $internal4343)) + (import "env" "Dpa" (func $internal4344)) + (import "env" "Epa" (func $internal4345)) + (import "env" "Fpa" (func $internal4346)) + (import "env" "Gpa" (func $internal4347)) + (import "env" "Hpa" (func $internal4348)) + (import "env" "Ipa" (func $internal4349)) + (import "env" "Jpa" (func $internal4350)) + (import "env" "Kpa" (func $internal4351)) + (import "env" "Lpa" (func $internal4352)) + (import "env" "Mpa" (func $internal4353)) + (import "env" "Npa" (func $internal4354)) + (import "env" "Opa" (func $internal4355)) + (import "env" "Ppa" (func $internal4356)) + (import "env" "Qpa" (func $internal4357)) + (import "env" "Rpa" (func $internal4358)) + (import "env" "Spa" (func $internal4359)) + (import "env" "Tpa" (func $internal4360)) + (import "env" "Upa" (func $internal4361)) + (import "env" "Vpa" (func $internal4362)) + (import "env" "Wpa" (func $internal4363)) + (import "env" "Xpa" (func $internal4364)) + (import "env" "Ypa" (func $internal4365)) + (import "env" "Zpa" (func $internal4366)) + (import "env" "_pa" (func $internal4367)) + (import "env" "$pa" (func $internal4368)) + (import "env" "aqa" (func $internal4369)) + (import "env" "bqa" (func $internal4370)) + (import "env" "cqa" (func $internal4371)) + (import "env" "dqa" (func $internal4372)) + (import "env" "eqa" (func $internal4373)) + (import "env" "fqa" (func $internal4374)) + (import "env" "gqa" (func $internal4375)) + (import "env" "hqa" (func $internal4376)) + (import "env" "iqa" (func $internal4377)) + (import "env" "jqa" (func $internal4378)) + (import "env" "kqa" (func $internal4379)) + (import "env" "lqa" (func $internal4380)) + (import "env" "mqa" (func $internal4381)) + (import "env" "nqa" (func $internal4382)) + (import "env" "oqa" (func $internal4383)) + (import "env" "pqa" (func $internal4384)) + (import "env" "qqa" (func $internal4385)) + (import "env" "rqa" (func $internal4386)) + (import "env" "sqa" (func $internal4387)) + (import "env" "tqa" (func $internal4388)) + (import "env" "uqa" (func $internal4389)) + (import "env" "vqa" (func $internal4390)) + (import "env" "wqa" (func $internal4391)) + (import "env" "xqa" (func $internal4392)) + (import "env" "yqa" (func $internal4393)) + (import "env" "zqa" (func $internal4394)) + (import "env" "Aqa" (func $internal4395)) + (import "env" "Bqa" (func $internal4396)) + (import "env" "Cqa" (func $internal4397)) + (import "env" "Dqa" (func $internal4398)) + (import "env" "Eqa" (func $internal4399)) + (import "env" "Fqa" (func $internal4400)) + (import "env" "Gqa" (func $internal4401)) + (import "env" "Hqa" (func $internal4402)) + (import "env" "Iqa" (func $internal4403)) + (import "env" "Jqa" (func $internal4404)) + (import "env" "Kqa" (func $internal4405)) + (import "env" "Lqa" (func $internal4406)) + (import "env" "Mqa" (func $internal4407)) + (import "env" "Nqa" (func $internal4408)) + (import "env" "Oqa" (func $internal4409)) + (import "env" "Pqa" (func $internal4410)) + (import "env" "Qqa" (func $internal4411)) + (import "env" "Rqa" (func $internal4412)) + (import "env" "Sqa" (func $internal4413)) + (import "env" "Tqa" (func $internal4414)) + (import "env" "Uqa" (func $internal4415)) + (import "env" "Vqa" (func $internal4416)) + (import "env" "Wqa" (func $internal4417)) + (import "env" "Xqa" (func $internal4418)) + (import "env" "Yqa" (func $internal4419)) + (import "env" "Zqa" (func $internal4420)) + (import "env" "_qa" (func $internal4421)) + (import "env" "$qa" (func $internal4422)) + (import "env" "ara" (func $internal4423)) + (import "env" "bra" (func $internal4424)) + (import "env" "cra" (func $internal4425)) + (import "env" "dra" (func $internal4426)) + (import "env" "era" (func $internal4427)) + (import "env" "fra" (func $internal4428)) + (import "env" "gra" (func $internal4429)) + (import "env" "hra" (func $internal4430)) + (import "env" "ira" (func $internal4431)) + (import "env" "jra" (func $internal4432)) + (import "env" "kra" (func $internal4433)) + (import "env" "lra" (func $internal4434)) + (import "env" "mra" (func $internal4435)) + (import "env" "nra" (func $internal4436)) + (import "env" "ora" (func $internal4437)) + (import "env" "pra" (func $internal4438)) + (import "env" "qra" (func $internal4439)) + (import "env" "rra" (func $internal4440)) + (import "env" "sra" (func $internal4441)) + (import "env" "tra" (func $internal4442)) + (import "env" "ura" (func $internal4443)) + (import "env" "vra" (func $internal4444)) + (import "env" "wra" (func $internal4445)) + (import "env" "xra" (func $internal4446)) + (import "env" "yra" (func $internal4447)) + (import "env" "zra" (func $internal4448)) + (import "env" "Ara" (func $internal4449)) + (import "env" "Bra" (func $internal4450)) + (import "env" "Cra" (func $internal4451)) + (import "env" "Dra" (func $internal4452)) + (import "env" "Era" (func $internal4453)) + (import "env" "Fra" (func $internal4454)) + (import "env" "Gra" (func $internal4455)) + (import "env" "Hra" (func $internal4456)) + (import "env" "Ira" (func $internal4457)) + (import "env" "Jra" (func $internal4458)) + (import "env" "Kra" (func $internal4459)) + (import "env" "Lra" (func $internal4460)) + (import "env" "Mra" (func $internal4461)) + (import "env" "Nra" (func $internal4462)) + (import "env" "Ora" (func $internal4463)) + (import "env" "Pra" (func $internal4464)) + (import "env" "Qra" (func $internal4465)) + (import "env" "Rra" (func $internal4466)) + (import "env" "Sra" (func $internal4467)) + (import "env" "Tra" (func $internal4468)) + (import "env" "Ura" (func $internal4469)) + (import "env" "Vra" (func $internal4470)) + (import "env" "Wra" (func $internal4471)) + (import "env" "Xra" (func $internal4472)) + (import "env" "Yra" (func $internal4473)) + (import "env" "Zra" (func $internal4474)) + (import "env" "_ra" (func $internal4475)) + (import "env" "$ra" (func $internal4476)) + (import "env" "asa" (func $internal4477)) + (import "env" "bsa" (func $internal4478)) + (import "env" "csa" (func $internal4479)) + (import "env" "dsa" (func $internal4480)) + (import "env" "esa" (func $internal4481)) + (import "env" "fsa" (func $internal4482)) + (import "env" "gsa" (func $internal4483)) + (import "env" "hsa" (func $internal4484)) + (import "env" "isa" (func $internal4485)) + (import "env" "jsa" (func $internal4486)) + (import "env" "ksa" (func $internal4487)) + (import "env" "lsa" (func $internal4488)) + (import "env" "msa" (func $internal4489)) + (import "env" "nsa" (func $internal4490)) + (import "env" "osa" (func $internal4491)) + (import "env" "psa" (func $internal4492)) + (import "env" "qsa" (func $internal4493)) + (import "env" "rsa" (func $internal4494)) + (import "env" "ssa" (func $internal4495)) + (import "env" "tsa" (func $internal4496)) + (import "env" "usa" (func $internal4497)) + (import "env" "vsa" (func $internal4498)) + (import "env" "wsa" (func $internal4499)) + (import "env" "xsa" (func $internal4500)) + (import "env" "ysa" (func $internal4501)) + (import "env" "zsa" (func $internal4502)) + (import "env" "Asa" (func $internal4503)) + (import "env" "Bsa" (func $internal4504)) + (import "env" "Csa" (func $internal4505)) + (import "env" "Dsa" (func $internal4506)) + (import "env" "Esa" (func $internal4507)) + (import "env" "Fsa" (func $internal4508)) + (import "env" "Gsa" (func $internal4509)) + (import "env" "Hsa" (func $internal4510)) + (import "env" "Isa" (func $internal4511)) + (import "env" "Jsa" (func $internal4512)) + (import "env" "Ksa" (func $internal4513)) + (import "env" "Lsa" (func $internal4514)) + (import "env" "Msa" (func $internal4515)) + (import "env" "Nsa" (func $internal4516)) + (import "env" "Osa" (func $internal4517)) + (import "env" "Psa" (func $internal4518)) + (import "env" "Qsa" (func $internal4519)) + (import "env" "Rsa" (func $internal4520)) + (import "env" "Ssa" (func $internal4521)) + (import "env" "Tsa" (func $internal4522)) + (import "env" "Usa" (func $internal4523)) + (import "env" "Vsa" (func $internal4524)) + (import "env" "Wsa" (func $internal4525)) + (import "env" "Xsa" (func $internal4526)) + (import "env" "Ysa" (func $internal4527)) + (import "env" "Zsa" (func $internal4528)) + (import "env" "_sa" (func $internal4529)) + (import "env" "$sa" (func $internal4530)) + (import "env" "ata" (func $internal4531)) + (import "env" "bta" (func $internal4532)) + (import "env" "cta" (func $internal4533)) + (import "env" "dta" (func $internal4534)) + (import "env" "eta" (func $internal4535)) + (import "env" "fta" (func $internal4536)) + (import "env" "gta" (func $internal4537)) + (import "env" "hta" (func $internal4538)) + (import "env" "ita" (func $internal4539)) + (import "env" "jta" (func $internal4540)) + (import "env" "kta" (func $internal4541)) + (import "env" "lta" (func $internal4542)) + (import "env" "mta" (func $internal4543)) + (import "env" "nta" (func $internal4544)) + (import "env" "ota" (func $internal4545)) + (import "env" "pta" (func $internal4546)) + (import "env" "qta" (func $internal4547)) + (import "env" "rta" (func $internal4548)) + (import "env" "sta" (func $internal4549)) + (import "env" "tta" (func $internal4550)) + (import "env" "uta" (func $internal4551)) + (import "env" "vta" (func $internal4552)) + (import "env" "wta" (func $internal4553)) + (import "env" "xta" (func $internal4554)) + (import "env" "yta" (func $internal4555)) + (import "env" "zta" (func $internal4556)) + (import "env" "Ata" (func $internal4557)) + (import "env" "Bta" (func $internal4558)) + (import "env" "Cta" (func $internal4559)) + (import "env" "Dta" (func $internal4560)) + (import "env" "Eta" (func $internal4561)) + (import "env" "Fta" (func $internal4562)) + (import "env" "Gta" (func $internal4563)) + (import "env" "Hta" (func $internal4564)) + (import "env" "Ita" (func $internal4565)) + (import "env" "Jta" (func $internal4566)) + (import "env" "Kta" (func $internal4567)) + (import "env" "Lta" (func $internal4568)) + (import "env" "Mta" (func $internal4569)) + (import "env" "Nta" (func $internal4570)) + (import "env" "Ota" (func $internal4571)) + (import "env" "Pta" (func $internal4572)) + (import "env" "Qta" (func $internal4573)) + (import "env" "Rta" (func $internal4574)) + (import "env" "Sta" (func $internal4575)) + (import "env" "Tta" (func $internal4576)) + (import "env" "Uta" (func $internal4577)) + (import "env" "Vta" (func $internal4578)) + (import "env" "Wta" (func $internal4579)) + (import "env" "Xta" (func $internal4580)) + (import "env" "Yta" (func $internal4581)) + (import "env" "Zta" (func $internal4582)) + (import "env" "_ta" (func $internal4583)) + (import "env" "$ta" (func $internal4584)) + (import "env" "aua" (func $internal4585)) + (import "env" "bua" (func $internal4586)) + (import "env" "cua" (func $internal4587)) + (import "env" "dua" (func $internal4588)) + (import "env" "eua" (func $internal4589)) + (import "env" "fua" (func $internal4590)) + (import "env" "gua" (func $internal4591)) + (import "env" "hua" (func $internal4592)) + (import "env" "iua" (func $internal4593)) + (import "env" "jua" (func $internal4594)) + (import "env" "kua" (func $internal4595)) + (import "env" "lua" (func $internal4596)) + (import "env" "mua" (func $internal4597)) + (import "env" "nua" (func $internal4598)) + (import "env" "oua" (func $internal4599)) + (import "env" "pua" (func $internal4600)) + (import "env" "qua" (func $internal4601)) + (import "env" "rua" (func $internal4602)) + (import "env" "sua" (func $internal4603)) + (import "env" "tua" (func $internal4604)) + (import "env" "uua" (func $internal4605)) + (import "env" "vua" (func $internal4606)) + (import "env" "wua" (func $internal4607)) + (import "env" "xua" (func $internal4608)) + (import "env" "yua" (func $internal4609)) + (import "env" "zua" (func $internal4610)) + (import "env" "Aua" (func $internal4611)) + (import "env" "Bua" (func $internal4612)) + (import "env" "Cua" (func $internal4613)) + (import "env" "Dua" (func $internal4614)) + (import "env" "Eua" (func $internal4615)) + (import "env" "Fua" (func $internal4616)) + (import "env" "Gua" (func $internal4617)) + (import "env" "Hua" (func $internal4618)) + (import "env" "Iua" (func $internal4619)) + (import "env" "Jua" (func $internal4620)) + (import "env" "Kua" (func $internal4621)) + (import "env" "Lua" (func $internal4622)) + (import "env" "Mua" (func $internal4623)) + (import "env" "Nua" (func $internal4624)) + (import "env" "Oua" (func $internal4625)) + (import "env" "Pua" (func $internal4626)) + (import "env" "Qua" (func $internal4627)) + (import "env" "Rua" (func $internal4628)) + (import "env" "Sua" (func $internal4629)) + (import "env" "Tua" (func $internal4630)) + (import "env" "Uua" (func $internal4631)) + (import "env" "Vua" (func $internal4632)) + (import "env" "Wua" (func $internal4633)) + (import "env" "Xua" (func $internal4634)) + (import "env" "Yua" (func $internal4635)) + (import "env" "Zua" (func $internal4636)) + (import "env" "_ua" (func $internal4637)) + (import "env" "$ua" (func $internal4638)) + (import "env" "ava" (func $internal4639)) + (import "env" "bva" (func $internal4640)) + (import "env" "cva" (func $internal4641)) + (import "env" "dva" (func $internal4642)) + (import "env" "eva" (func $internal4643)) + (import "env" "fva" (func $internal4644)) + (import "env" "gva" (func $internal4645)) + (import "env" "hva" (func $internal4646)) + (import "env" "iva" (func $internal4647)) + (import "env" "jva" (func $internal4648)) + (import "env" "kva" (func $internal4649)) + (import "env" "lva" (func $internal4650)) + (import "env" "mva" (func $internal4651)) + (import "env" "nva" (func $internal4652)) + (import "env" "ova" (func $internal4653)) + (import "env" "pva" (func $internal4654)) + (import "env" "qva" (func $internal4655)) + (import "env" "rva" (func $internal4656)) + (import "env" "sva" (func $internal4657)) + (import "env" "tva" (func $internal4658)) + (import "env" "uva" (func $internal4659)) + (import "env" "vva" (func $internal4660)) + (import "env" "wva" (func $internal4661)) + (import "env" "xva" (func $internal4662)) + (import "env" "yva" (func $internal4663)) + (import "env" "zva" (func $internal4664)) + (import "env" "Ava" (func $internal4665)) + (import "env" "Bva" (func $internal4666)) + (import "env" "Cva" (func $internal4667)) + (import "env" "Dva" (func $internal4668)) + (import "env" "Eva" (func $internal4669)) + (import "env" "Fva" (func $internal4670)) + (import "env" "Gva" (func $internal4671)) + (import "env" "Hva" (func $internal4672)) + (import "env" "Iva" (func $internal4673)) + (import "env" "Jva" (func $internal4674)) + (import "env" "Kva" (func $internal4675)) + (import "env" "Lva" (func $internal4676)) + (import "env" "Mva" (func $internal4677)) + (import "env" "Nva" (func $internal4678)) + (import "env" "Ova" (func $internal4679)) + (import "env" "Pva" (func $internal4680)) + (import "env" "Qva" (func $internal4681)) + (import "env" "Rva" (func $internal4682)) + (import "env" "Sva" (func $internal4683)) + (import "env" "Tva" (func $internal4684)) + (import "env" "Uva" (func $internal4685)) + (import "env" "Vva" (func $internal4686)) + (import "env" "Wva" (func $internal4687)) + (import "env" "Xva" (func $internal4688)) + (import "env" "Yva" (func $internal4689)) + (import "env" "Zva" (func $internal4690)) + (import "env" "_va" (func $internal4691)) + (import "env" "$va" (func $internal4692)) + (import "env" "awa" (func $internal4693)) + (import "env" "bwa" (func $internal4694)) + (import "env" "cwa" (func $internal4695)) + (import "env" "dwa" (func $internal4696)) + (import "env" "ewa" (func $internal4697)) + (import "env" "fwa" (func $internal4698)) + (import "env" "gwa" (func $internal4699)) + (import "env" "hwa" (func $internal4700)) + (import "env" "iwa" (func $internal4701)) + (import "env" "jwa" (func $internal4702)) + (import "env" "kwa" (func $internal4703)) + (import "env" "lwa" (func $internal4704)) + (import "env" "mwa" (func $internal4705)) + (import "env" "nwa" (func $internal4706)) + (import "env" "owa" (func $internal4707)) + (import "env" "pwa" (func $internal4708)) + (import "env" "qwa" (func $internal4709)) + (import "env" "rwa" (func $internal4710)) + (import "env" "swa" (func $internal4711)) + (import "env" "twa" (func $internal4712)) + (import "env" "uwa" (func $internal4713)) + (import "env" "vwa" (func $internal4714)) + (import "env" "wwa" (func $internal4715)) + (import "env" "xwa" (func $internal4716)) + (import "env" "ywa" (func $internal4717)) + (import "env" "zwa" (func $internal4718)) + (import "env" "Awa" (func $internal4719)) + (import "env" "Bwa" (func $internal4720)) + (import "env" "Cwa" (func $internal4721)) + (import "env" "Dwa" (func $internal4722)) + (import "env" "Ewa" (func $internal4723)) + (import "env" "Fwa" (func $internal4724)) + (import "env" "Gwa" (func $internal4725)) + (import "env" "Hwa" (func $internal4726)) + (import "env" "Iwa" (func $internal4727)) + (import "env" "Jwa" (func $internal4728)) + (import "env" "Kwa" (func $internal4729)) + (import "env" "Lwa" (func $internal4730)) + (import "env" "Mwa" (func $internal4731)) + (import "env" "Nwa" (func $internal4732)) + (import "env" "Owa" (func $internal4733)) + (import "env" "Pwa" (func $internal4734)) + (import "env" "Qwa" (func $internal4735)) + (import "env" "Rwa" (func $internal4736)) + (import "env" "Swa" (func $internal4737)) + (import "env" "Twa" (func $internal4738)) + (import "env" "Uwa" (func $internal4739)) + (import "env" "Vwa" (func $internal4740)) + (import "env" "Wwa" (func $internal4741)) + (import "env" "Xwa" (func $internal4742)) + (import "env" "Ywa" (func $internal4743)) + (import "env" "Zwa" (func $internal4744)) + (import "env" "_wa" (func $internal4745)) + (import "env" "$wa" (func $internal4746)) + (import "env" "axa" (func $internal4747)) + (import "env" "bxa" (func $internal4748)) + (import "env" "cxa" (func $internal4749)) + (import "env" "dxa" (func $internal4750)) + (import "env" "exa" (func $internal4751)) + (import "env" "fxa" (func $internal4752)) + (import "env" "gxa" (func $internal4753)) + (import "env" "hxa" (func $internal4754)) + (import "env" "ixa" (func $internal4755)) + (import "env" "jxa" (func $internal4756)) + (import "env" "kxa" (func $internal4757)) + (import "env" "lxa" (func $internal4758)) + (import "env" "mxa" (func $internal4759)) + (import "env" "nxa" (func $internal4760)) + (import "env" "oxa" (func $internal4761)) + (import "env" "pxa" (func $internal4762)) + (import "env" "qxa" (func $internal4763)) + (import "env" "rxa" (func $internal4764)) + (import "env" "sxa" (func $internal4765)) + (import "env" "txa" (func $internal4766)) + (import "env" "uxa" (func $internal4767)) + (import "env" "vxa" (func $internal4768)) + (import "env" "wxa" (func $internal4769)) + (import "env" "xxa" (func $internal4770)) + (import "env" "yxa" (func $internal4771)) + (import "env" "zxa" (func $internal4772)) + (import "env" "Axa" (func $internal4773)) + (import "env" "Bxa" (func $internal4774)) + (import "env" "Cxa" (func $internal4775)) + (import "env" "Dxa" (func $internal4776)) + (import "env" "Exa" (func $internal4777)) + (import "env" "Fxa" (func $internal4778)) + (import "env" "Gxa" (func $internal4779)) + (import "env" "Hxa" (func $internal4780)) + (import "env" "Ixa" (func $internal4781)) + (import "env" "Jxa" (func $internal4782)) + (import "env" "Kxa" (func $internal4783)) + (import "env" "Lxa" (func $internal4784)) + (import "env" "Mxa" (func $internal4785)) + (import "env" "Nxa" (func $internal4786)) + (import "env" "Oxa" (func $internal4787)) + (import "env" "Pxa" (func $internal4788)) + (import "env" "Qxa" (func $internal4789)) + (import "env" "Rxa" (func $internal4790)) + (import "env" "Sxa" (func $internal4791)) + (import "env" "Txa" (func $internal4792)) + (import "env" "Uxa" (func $internal4793)) + (import "env" "Vxa" (func $internal4794)) + (import "env" "Wxa" (func $internal4795)) + (import "env" "Xxa" (func $internal4796)) + (import "env" "Yxa" (func $internal4797)) + (import "env" "Zxa" (func $internal4798)) + (import "env" "_xa" (func $internal4799)) + (import "env" "$xa" (func $internal4800)) + (import "env" "aya" (func $internal4801)) + (import "env" "bya" (func $internal4802)) + (import "env" "cya" (func $internal4803)) + (import "env" "dya" (func $internal4804)) + (import "env" "eya" (func $internal4805)) + (import "env" "fya" (func $internal4806)) + (import "env" "gya" (func $internal4807)) + (import "env" "hya" (func $internal4808)) + (import "env" "iya" (func $internal4809)) + (import "env" "jya" (func $internal4810)) + (import "env" "kya" (func $internal4811)) + (import "env" "lya" (func $internal4812)) + (import "env" "mya" (func $internal4813)) + (import "env" "nya" (func $internal4814)) + (import "env" "oya" (func $internal4815)) + (import "env" "pya" (func $internal4816)) + (import "env" "qya" (func $internal4817)) + (import "env" "rya" (func $internal4818)) + (import "env" "sya" (func $internal4819)) + (import "env" "tya" (func $internal4820)) + (import "env" "uya" (func $internal4821)) + (import "env" "vya" (func $internal4822)) + (import "env" "wya" (func $internal4823)) + (import "env" "xya" (func $internal4824)) + (import "env" "yya" (func $internal4825)) + (import "env" "zya" (func $internal4826)) + (import "env" "Aya" (func $internal4827)) + (import "env" "Bya" (func $internal4828)) + (import "env" "Cya" (func $internal4829)) + (import "env" "Dya" (func $internal4830)) + (import "env" "Eya" (func $internal4831)) + (import "env" "Fya" (func $internal4832)) + (import "env" "Gya" (func $internal4833)) + (import "env" "Hya" (func $internal4834)) + (import "env" "Iya" (func $internal4835)) + (import "env" "Jya" (func $internal4836)) + (import "env" "Kya" (func $internal4837)) + (import "env" "Lya" (func $internal4838)) + (import "env" "Mya" (func $internal4839)) + (import "env" "Nya" (func $internal4840)) + (import "env" "Oya" (func $internal4841)) + (import "env" "Pya" (func $internal4842)) + (import "env" "Qya" (func $internal4843)) + (import "env" "Rya" (func $internal4844)) + (import "env" "Sya" (func $internal4845)) + (import "env" "Tya" (func $internal4846)) + (import "env" "Uya" (func $internal4847)) + (import "env" "Vya" (func $internal4848)) + (import "env" "Wya" (func $internal4849)) + (import "env" "Xya" (func $internal4850)) + (import "env" "Yya" (func $internal4851)) + (import "env" "Zya" (func $internal4852)) + (import "env" "_ya" (func $internal4853)) + (import "env" "$ya" (func $internal4854)) + (import "env" "aza" (func $internal4855)) + (import "env" "bza" (func $internal4856)) + (import "env" "cza" (func $internal4857)) + (import "env" "dza" (func $internal4858)) + (import "env" "eza" (func $internal4859)) + (import "env" "fza" (func $internal4860)) + (import "env" "gza" (func $internal4861)) + (import "env" "hza" (func $internal4862)) + (import "env" "iza" (func $internal4863)) + (import "env" "jza" (func $internal4864)) + (import "env" "kza" (func $internal4865)) + (import "env" "lza" (func $internal4866)) + (import "env" "mza" (func $internal4867)) + (import "env" "nza" (func $internal4868)) + (import "env" "oza" (func $internal4869)) + (import "env" "pza" (func $internal4870)) + (import "env" "qza" (func $internal4871)) + (import "env" "rza" (func $internal4872)) + (import "env" "sza" (func $internal4873)) + (import "env" "tza" (func $internal4874)) + (import "env" "uza" (func $internal4875)) + (import "env" "vza" (func $internal4876)) + (import "env" "wza" (func $internal4877)) + (import "env" "xza" (func $internal4878)) + (import "env" "yza" (func $internal4879)) + (import "env" "zza" (func $internal4880)) + (import "env" "Aza" (func $internal4881)) + (import "env" "Bza" (func $internal4882)) + (import "env" "Cza" (func $internal4883)) + (import "env" "Dza" (func $internal4884)) + (import "env" "Eza" (func $internal4885)) + (import "env" "Fza" (func $internal4886)) + (import "env" "Gza" (func $internal4887)) + (import "env" "Hza" (func $internal4888)) + (import "env" "Iza" (func $internal4889)) + (import "env" "Jza" (func $internal4890)) + (import "env" "Kza" (func $internal4891)) + (import "env" "Lza" (func $internal4892)) + (import "env" "Mza" (func $internal4893)) + (import "env" "Nza" (func $internal4894)) + (import "env" "Oza" (func $internal4895)) + (import "env" "Pza" (func $internal4896)) + (import "env" "Qza" (func $internal4897)) + (import "env" "Rza" (func $internal4898)) + (import "env" "Sza" (func $internal4899)) + (import "env" "Tza" (func $internal4900)) + (import "env" "Uza" (func $internal4901)) + (import "env" "Vza" (func $internal4902)) + (import "env" "Wza" (func $internal4903)) + (import "env" "Xza" (func $internal4904)) + (import "env" "Yza" (func $internal4905)) + (import "env" "Zza" (func $internal4906)) + (import "env" "_za" (func $internal4907)) + (import "env" "$za" (func $internal4908)) + (import "env" "aAa" (func $internal4909)) + (import "env" "bAa" (func $internal4910)) + (import "env" "cAa" (func $internal4911)) + (import "env" "dAa" (func $internal4912)) + (import "env" "eAa" (func $internal4913)) + (import "env" "fAa" (func $internal4914)) + (import "env" "gAa" (func $internal4915)) + (import "env" "hAa" (func $internal4916)) + (import "env" "iAa" (func $internal4917)) + (import "env" "jAa" (func $internal4918)) + (import "env" "kAa" (func $internal4919)) + (import "env" "lAa" (func $internal4920)) + (import "env" "mAa" (func $internal4921)) + (import "env" "nAa" (func $internal4922)) + (import "env" "oAa" (func $internal4923)) + (import "env" "pAa" (func $internal4924)) + (import "env" "qAa" (func $internal4925)) + (import "env" "rAa" (func $internal4926)) + (import "env" "sAa" (func $internal4927)) + (import "env" "tAa" (func $internal4928)) + (import "env" "uAa" (func $internal4929)) + (import "env" "vAa" (func $internal4930)) + (import "env" "wAa" (func $internal4931)) + (import "env" "xAa" (func $internal4932)) + (import "env" "yAa" (func $internal4933)) + (import "env" "zAa" (func $internal4934)) + (import "env" "AAa" (func $internal4935)) + (import "env" "BAa" (func $internal4936)) + (import "env" "CAa" (func $internal4937)) + (import "env" "DAa" (func $internal4938)) + (import "env" "EAa" (func $internal4939)) + (import "env" "FAa" (func $internal4940)) + (import "env" "GAa" (func $internal4941)) + (import "env" "HAa" (func $internal4942)) + (import "env" "IAa" (func $internal4943)) + (import "env" "JAa" (func $internal4944)) + (import "env" "KAa" (func $internal4945)) + (import "env" "LAa" (func $internal4946)) + (import "env" "MAa" (func $internal4947)) + (import "env" "NAa" (func $internal4948)) + (import "env" "OAa" (func $internal4949)) + (import "env" "PAa" (func $internal4950)) + (import "env" "QAa" (func $internal4951)) + (import "env" "RAa" (func $internal4952)) + (import "env" "SAa" (func $internal4953)) + (import "env" "TAa" (func $internal4954)) + (import "env" "UAa" (func $internal4955)) + (import "env" "VAa" (func $internal4956)) + (import "env" "WAa" (func $internal4957)) + (import "env" "XAa" (func $internal4958)) + (import "env" "YAa" (func $internal4959)) + (import "env" "ZAa" (func $internal4960)) + (import "env" "_Aa" (func $internal4961)) + (import "env" "$Aa" (func $internal4962)) + (import "env" "aBa" (func $internal4963)) + (import "env" "bBa" (func $internal4964)) + (import "env" "cBa" (func $internal4965)) + (import "env" "dBa" (func $internal4966)) + (import "env" "eBa" (func $internal4967)) + (import "env" "fBa" (func $internal4968)) + (import "env" "gBa" (func $internal4969)) + (import "env" "hBa" (func $internal4970)) + (import "env" "iBa" (func $internal4971)) + (import "env" "jBa" (func $internal4972)) + (import "env" "kBa" (func $internal4973)) + (import "env" "lBa" (func $internal4974)) + (import "env" "mBa" (func $internal4975)) + (import "env" "nBa" (func $internal4976)) + (import "env" "oBa" (func $internal4977)) + (import "env" "pBa" (func $internal4978)) + (import "env" "qBa" (func $internal4979)) + (import "env" "rBa" (func $internal4980)) + (import "env" "sBa" (func $internal4981)) + (import "env" "tBa" (func $internal4982)) + (import "env" "uBa" (func $internal4983)) + (import "env" "vBa" (func $internal4984)) + (import "env" "wBa" (func $internal4985)) + (import "env" "xBa" (func $internal4986)) + (import "env" "yBa" (func $internal4987)) + (import "env" "zBa" (func $internal4988)) + (import "env" "ABa" (func $internal4989)) + (import "env" "BBa" (func $internal4990)) + (import "env" "CBa" (func $internal4991)) + (import "env" "DBa" (func $internal4992)) + (import "env" "EBa" (func $internal4993)) + (import "env" "FBa" (func $internal4994)) + (import "env" "GBa" (func $internal4995)) + (import "env" "HBa" (func $internal4996)) + (import "env" "IBa" (func $internal4997)) + (import "env" "JBa" (func $internal4998)) + (import "env" "KBa" (func $internal4999)) (import "other" "anything" (func $internalInfinity)) - (import "wasi_unstable" "d" (func $internal3_wasi)) - (import "wasi_unstable" "JBa" (func $internal3_wasi_only)) - (import "env" "KBa" (event $eventname1 (attr 0) (param i32))) + (import "wasi_unstable" "f" (func $internal3_wasi)) + (import "wasi_unstable" "LBa" (func $internal3_wasi_only)) + (import "env" "MBa" (event $eventname1 (attr 0) (param i32))) (event $event1 (attr 0) (param i32 i32)) - (export "LBa" (func $foo1)) - (export "MBa" (func $foo2)) - (export "NBa" (event $event1)) - (func $foo1 (; 5002 ;) + (export "NBa" (func $foo1)) + (export "OBa" (func $foo2)) + (export "PBa" (event $event1)) + (func $foo1 (nop) ) - (func $foo2 (; 5003 ;) + (func $foo2 (nop) ) ) diff -Nru binaryen-91/test/passes/minify-imports-and-exports-and-modules.txt binaryen-99/test/passes/minify-imports-and-exports-and-modules.txt --- binaryen-91/test/passes/minify-imports-and-exports-and-modules.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/minify-imports-and-exports-and-modules.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,13 +1,15 @@ -longname1 => a -longname2 => b -longname3 => c -longname4 => d +memory => a +table => b +longname1 => c +longname2 => d +longname3 => e +longname4 => f (module (type $none_=>_none (func)) - (import "a" "memory" (memory $0 256 256)) - (import "a" "table" (table $0 4 funcref)) - (import "a" "a" (func $internal1)) - (import "a" "b" (func $internal2)) - (import "a" "c" (func $internal3)) - (import "a" "d" (func $internal4)) + (import "a" "a" (memory $0 256 256)) + (import "a" "b" (table $0 4 funcref)) + (import "a" "c" (func $internal1)) + (import "a" "d" (func $internal2)) + (import "a" "e" (func $internal3)) + (import "a" "f" (func $internal4)) ) diff -Nru binaryen-91/test/passes/multi_line_table.bin.txt binaryen-99/test/passes/multi_line_table.bin.txt --- binaryen-91/test/passes/multi_line_table.bin.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/multi_line_table.bin.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,475 +0,0 @@ -DWARF debug info -================ - -Contains section .debug_info (130 bytes) -Contains section .debug_abbrev (100 bytes) -Contains section .debug_line (121 bytes) -Contains section .debug_str (407 bytes) - -.debug_abbrev contents: -Abbrev table for offset: 0x00000000 -[1] DW_TAG_compile_unit DW_CHILDREN_yes - DW_AT_producer DW_FORM_strp - DW_AT_language DW_FORM_data2 - DW_AT_name DW_FORM_strp - DW_AT_stmt_list DW_FORM_sec_offset - DW_AT_comp_dir DW_FORM_strp - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - -[2] DW_TAG_subprogram DW_CHILDREN_no - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - -[3] DW_TAG_base_type DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_encoding DW_FORM_data1 - DW_AT_byte_size DW_FORM_data1 - -Abbrev table for offset: 0x00000032 -[1] DW_TAG_compile_unit DW_CHILDREN_yes - DW_AT_producer DW_FORM_strp - DW_AT_language DW_FORM_data2 - DW_AT_name DW_FORM_strp - DW_AT_stmt_list DW_FORM_sec_offset - DW_AT_comp_dir DW_FORM_strp - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - -[2] DW_TAG_subprogram DW_CHILDREN_no - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - -[3] DW_TAG_base_type DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_encoding DW_FORM_data1 - DW_AT_byte_size DW_FORM_data1 - - -.debug_info contents: -0x00000000: Compile Unit: length = 0x0000003d version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x00000041) - -0x0000000b: DW_TAG_compile_unit [1] * - DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 7fcd9e3f70830a9c4bf631a602c2764180b5c3a8)") - DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000095] = "fourth.cpp") - DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) - DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x000000a0] = "/tmp/emscripten_test_wasm0_xkAHBX") - DW_AT_low_pc [DW_FORM_addr] (0x000000000000000a) - DW_AT_high_pc [DW_FORM_data4] (0x0000000b) - -0x00000026: DW_TAG_subprogram [2] - DW_AT_low_pc [DW_FORM_addr] (0x000000000000000a) - DW_AT_high_pc [DW_FORM_data4] (0x0000000b) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c2] = "sideg") - DW_AT_decl_file [DW_FORM_data1] ("/tmp/emscripten_test_wasm0_xkAHBX/fourth.cpp") - DW_AT_decl_line [DW_FORM_data1] (1) - DW_AT_type [DW_FORM_ref4] (cu + 0x0039 => {0x00000039} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x00000039: DW_TAG_base_type [3] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c8] = "int") - DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) - DW_AT_byte_size [DW_FORM_data1] (0x04) - -0x00000040: NULL -0x00000041: Compile Unit: length = 0x0000003d version = 0x0004 abbr_offset = 0x0032 addr_size = 0x04 (next unit at 0x00000082) - -0x0000004c: DW_TAG_compile_unit [1] * - DW_AT_producer [DW_FORM_strp] ( .debug_str[0x000000cc] = "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 7fcd9e3f70830a9c4bf631a602c2764180b5c3a8)") - DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000161] = "third.cpp") - DW_AT_stmt_list [DW_FORM_sec_offset] (0x0000003d) - DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x0000016b] = "/tmp/emscripten_test_wasm0_xkAHBX") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000016) - DW_AT_high_pc [DW_FORM_data4] (0x0000000b) - -0x00000067: DW_TAG_subprogram [2] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000016) - DW_AT_high_pc [DW_FORM_data4] (0x0000000b) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000018d] = "sidef") - DW_AT_decl_file [DW_FORM_data1] ("/tmp/emscripten_test_wasm0_xkAHBX/third.cpp") - DW_AT_decl_line [DW_FORM_data1] (1) - DW_AT_type [DW_FORM_ref4] (cu + 0x0039 => {0x0000007a} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x0000007a: DW_TAG_base_type [3] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000193] = "int") - DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) - DW_AT_byte_size [DW_FORM_data1] (0x04) - -0x00000081: NULL - -.debug_line contents: -debug_line[0x00000000] -Line table prologue: - total_length: 0x00000039 - version: 4 - prologue_length: 0x00000022 - min_inst_length: 1 -max_ops_per_inst: 1 - default_is_stmt: 1 - line_base: -5 - line_range: 14 - opcode_base: 13 -standard_opcode_lengths[DW_LNS_copy] = 0 -standard_opcode_lengths[DW_LNS_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_advance_line] = 1 -standard_opcode_lengths[DW_LNS_set_file] = 1 -standard_opcode_lengths[DW_LNS_set_column] = 1 -standard_opcode_lengths[DW_LNS_negate_stmt] = 0 -standard_opcode_lengths[DW_LNS_set_basic_block] = 0 -standard_opcode_lengths[DW_LNS_const_add_pc] = 0 -standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 -standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 -standard_opcode_lengths[DW_LNS_set_isa] = 1 -file_names[ 1]: - name: "fourth.cpp" - dir_index: 0 - mod_time: 0x00000000 - length: 0x00000000 -0x0000002c: 00 DW_LNE_set_address (0x000000000000000a) -0x00000033: 01 DW_LNS_copy - 0x000000000000000a 1 0 1 0 0 is_stmt - - -0x00000034: 05 DW_LNS_set_column (26) -0x00000036: 0a DW_LNS_set_prologue_end -0x00000037: 74 address += 7, line += 0 - 0x0000000000000011 1 26 1 0 0 is_stmt prologue_end - -0x00000038: 02 DW_LNS_advance_pc (4) -0x0000003a: 00 DW_LNE_end_sequence - 0x0000000000000015 1 26 1 0 0 is_stmt end_sequence - -debug_line[0x0000003d] -Line table prologue: - total_length: 0x00000038 - version: 4 - prologue_length: 0x00000021 - min_inst_length: 1 -max_ops_per_inst: 1 - default_is_stmt: 1 - line_base: -5 - line_range: 14 - opcode_base: 13 -standard_opcode_lengths[DW_LNS_copy] = 0 -standard_opcode_lengths[DW_LNS_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_advance_line] = 1 -standard_opcode_lengths[DW_LNS_set_file] = 1 -standard_opcode_lengths[DW_LNS_set_column] = 1 -standard_opcode_lengths[DW_LNS_negate_stmt] = 0 -standard_opcode_lengths[DW_LNS_set_basic_block] = 0 -standard_opcode_lengths[DW_LNS_const_add_pc] = 0 -standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 -standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 -standard_opcode_lengths[DW_LNS_set_isa] = 1 -file_names[ 1]: - name: "third.cpp" - dir_index: 0 - mod_time: 0x00000000 - length: 0x00000000 -0x00000068: 00 DW_LNE_set_address (0x0000000000000016) -0x0000006f: 01 DW_LNS_copy - 0x0000000000000016 1 0 1 0 0 is_stmt - - -0x00000070: 05 DW_LNS_set_column (26) -0x00000072: 0a DW_LNS_set_prologue_end -0x00000073: 74 address += 7, line += 0 - 0x000000000000001d 1 26 1 0 0 is_stmt prologue_end - -0x00000074: 02 DW_LNS_advance_pc (4) -0x00000076: 00 DW_LNE_end_sequence - 0x0000000000000021 1 26 1 0 0 is_stmt end_sequence - - -.debug_str contents: -0x00000000: "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 7fcd9e3f70830a9c4bf631a602c2764180b5c3a8)" -0x00000095: "fourth.cpp" -0x000000a0: "/tmp/emscripten_test_wasm0_xkAHBX" -0x000000c2: "sideg" -0x000000c8: "int" -0x000000cc: "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 7fcd9e3f70830a9c4bf631a602c2764180b5c3a8)" -0x00000161: "third.cpp" -0x0000016b: "/tmp/emscripten_test_wasm0_xkAHBX" -0x0000018d: "sidef" -0x00000193: "int" -DWARF debug info -================ - -Contains section .debug_info (130 bytes) -Contains section .debug_abbrev (100 bytes) -Contains section .debug_line (145 bytes) -Contains section .debug_str (407 bytes) - -.debug_abbrev contents: -Abbrev table for offset: 0x00000000 -[1] DW_TAG_compile_unit DW_CHILDREN_yes - DW_AT_producer DW_FORM_strp - DW_AT_language DW_FORM_data2 - DW_AT_name DW_FORM_strp - DW_AT_stmt_list DW_FORM_sec_offset - DW_AT_comp_dir DW_FORM_strp - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - -[2] DW_TAG_subprogram DW_CHILDREN_no - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - -[3] DW_TAG_base_type DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_encoding DW_FORM_data1 - DW_AT_byte_size DW_FORM_data1 - -Abbrev table for offset: 0x00000032 -[1] DW_TAG_compile_unit DW_CHILDREN_yes - DW_AT_producer DW_FORM_strp - DW_AT_language DW_FORM_data2 - DW_AT_name DW_FORM_strp - DW_AT_stmt_list DW_FORM_sec_offset - DW_AT_comp_dir DW_FORM_strp - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - -[2] DW_TAG_subprogram DW_CHILDREN_no - DW_AT_low_pc DW_FORM_addr - DW_AT_high_pc DW_FORM_data4 - DW_AT_name DW_FORM_strp - DW_AT_decl_file DW_FORM_data1 - DW_AT_decl_line DW_FORM_data1 - DW_AT_type DW_FORM_ref4 - DW_AT_external DW_FORM_flag_present - -[3] DW_TAG_base_type DW_CHILDREN_no - DW_AT_name DW_FORM_strp - DW_AT_encoding DW_FORM_data1 - DW_AT_byte_size DW_FORM_data1 - - -.debug_info contents: -0x00000000: Compile Unit: length = 0x0000003d version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x00000041) - -0x0000000b: DW_TAG_compile_unit [1] * - DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 7fcd9e3f70830a9c4bf631a602c2764180b5c3a8)") - DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000095] = "fourth.cpp") - DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) - DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x000000a0] = "/tmp/emscripten_test_wasm0_xkAHBX") - DW_AT_low_pc [DW_FORM_addr] (0x000000000000000a) - DW_AT_high_pc [DW_FORM_data4] (0x0000000b) - -0x00000026: DW_TAG_subprogram [2] - DW_AT_low_pc [DW_FORM_addr] (0x000000000000000a) - DW_AT_high_pc [DW_FORM_data4] (0x0000000b) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c2] = "sideg") - DW_AT_decl_file [DW_FORM_data1] ("/tmp/emscripten_test_wasm0_xkAHBX/fourth.cpp") - DW_AT_decl_line [DW_FORM_data1] (1) - DW_AT_type [DW_FORM_ref4] (cu + 0x0039 => {0x00000039} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x00000039: DW_TAG_base_type [3] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c8] = "int") - DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) - DW_AT_byte_size [DW_FORM_data1] (0x04) - -0x00000040: NULL -0x00000041: Compile Unit: length = 0x0000003d version = 0x0004 abbr_offset = 0x0032 addr_size = 0x04 (next unit at 0x00000082) - -0x0000004c: DW_TAG_compile_unit [1] * - DW_AT_producer [DW_FORM_strp] ( .debug_str[0x000000cc] = "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 7fcd9e3f70830a9c4bf631a602c2764180b5c3a8)") - DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000161] = "third.cpp") - DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000049) - DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x0000016b] = "/tmp/emscripten_test_wasm0_xkAHBX") - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000016) - DW_AT_high_pc [DW_FORM_data4] (0x0000000b) - -0x00000067: DW_TAG_subprogram [2] - DW_AT_low_pc [DW_FORM_addr] (0x0000000000000016) - DW_AT_high_pc [DW_FORM_data4] (0x0000000b) - DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000018d] = "sidef") - DW_AT_decl_file [DW_FORM_data1] ("/tmp/emscripten_test_wasm0_xkAHBX/third.cpp") - DW_AT_decl_line [DW_FORM_data1] (1) - DW_AT_type [DW_FORM_ref4] (cu + 0x0039 => {0x0000007a} "int") - DW_AT_external [DW_FORM_flag_present] (true) - -0x0000007a: DW_TAG_base_type [3] - DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000193] = "int") - DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) - DW_AT_byte_size [DW_FORM_data1] (0x04) - -0x00000081: NULL - -.debug_line contents: -debug_line[0x00000000] -Line table prologue: - total_length: 0x00000045 - version: 4 - prologue_length: 0x00000022 - min_inst_length: 1 -max_ops_per_inst: 1 - default_is_stmt: 1 - line_base: -5 - line_range: 14 - opcode_base: 13 -standard_opcode_lengths[DW_LNS_copy] = 0 -standard_opcode_lengths[DW_LNS_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_advance_line] = 1 -standard_opcode_lengths[DW_LNS_set_file] = 1 -standard_opcode_lengths[DW_LNS_set_column] = 1 -standard_opcode_lengths[DW_LNS_negate_stmt] = 0 -standard_opcode_lengths[DW_LNS_set_basic_block] = 0 -standard_opcode_lengths[DW_LNS_const_add_pc] = 0 -standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 -standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 -standard_opcode_lengths[DW_LNS_set_isa] = 1 -file_names[ 1]: - name: "fourth.cpp" - dir_index: 0 - mod_time: 0x00000000 - length: 0x00000000 -0x0000002c: 00 DW_LNE_set_address (0x000000000000000a) -0x00000033: 01 DW_LNS_copy - 0x000000000000000a 1 0 1 0 0 is_stmt - - -0x00000034: 00 DW_LNE_set_address (0x0000000000000011) -0x0000003b: 05 DW_LNS_set_column (26) -0x0000003d: 0a DW_LNS_set_prologue_end -0x0000003e: 01 DW_LNS_copy - 0x0000000000000011 1 26 1 0 0 is_stmt prologue_end - - -0x0000003f: 00 DW_LNE_set_address (0x0000000000000015) -0x00000046: 00 DW_LNE_end_sequence - 0x0000000000000015 1 26 1 0 0 is_stmt end_sequence - -debug_line[0x00000049] -Line table prologue: - total_length: 0x00000044 - version: 4 - prologue_length: 0x00000021 - min_inst_length: 1 -max_ops_per_inst: 1 - default_is_stmt: 1 - line_base: -5 - line_range: 14 - opcode_base: 13 -standard_opcode_lengths[DW_LNS_copy] = 0 -standard_opcode_lengths[DW_LNS_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_advance_line] = 1 -standard_opcode_lengths[DW_LNS_set_file] = 1 -standard_opcode_lengths[DW_LNS_set_column] = 1 -standard_opcode_lengths[DW_LNS_negate_stmt] = 0 -standard_opcode_lengths[DW_LNS_set_basic_block] = 0 -standard_opcode_lengths[DW_LNS_const_add_pc] = 0 -standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 -standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 -standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 -standard_opcode_lengths[DW_LNS_set_isa] = 1 -file_names[ 1]: - name: "third.cpp" - dir_index: 0 - mod_time: 0x00000000 - length: 0x00000000 -0x00000074: 00 DW_LNE_set_address (0x0000000000000016) -0x0000007b: 01 DW_LNS_copy - 0x0000000000000016 1 0 1 0 0 is_stmt - - -0x0000007c: 00 DW_LNE_set_address (0x000000000000001d) -0x00000083: 05 DW_LNS_set_column (26) -0x00000085: 0a DW_LNS_set_prologue_end -0x00000086: 01 DW_LNS_copy - 0x000000000000001d 1 26 1 0 0 is_stmt prologue_end - - -0x00000087: 00 DW_LNE_set_address (0x0000000000000021) -0x0000008e: 00 DW_LNE_end_sequence - 0x0000000000000021 1 26 1 0 0 is_stmt end_sequence - - -.debug_str contents: -0x00000000: "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 7fcd9e3f70830a9c4bf631a602c2764180b5c3a8)" -0x00000095: "fourth.cpp" -0x000000a0: "/tmp/emscripten_test_wasm0_xkAHBX" -0x000000c2: "sideg" -0x000000c8: "int" -0x000000cc: "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 7fcd9e3f70830a9c4bf631a602c2764180b5c3a8)" -0x00000161: "third.cpp" -0x0000016b: "/tmp/emscripten_test_wasm0_xkAHBX" -0x0000018d: "sidef" -0x00000193: "int" -(module - (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) - (import "env" "memory" (memory $3 0)) - (import "env" "__indirect_function_table" (table $timport$4 0 funcref)) - (import "env" "__stack_pointer" (global $gimport$0 (mut i32))) - (import "env" "__memory_base" (global $gimport$1 i32)) - (import "env" "__table_base" (global $gimport$2 i32)) - (global $global$0 i32 (i32.const 0)) - (export "__wasm_call_ctors" (func $__wasm_call_ctors)) - (export "__wasm_apply_relocs" (func $__wasm_apply_relocs)) - (export "sideg" (func $sideg)) - (export "sidef" (func $sidef)) - (export "__dso_handle" (global $global$0)) - (func $__wasm_call_ctors (; 0 ;) - ;; code offset: 0x3 - (call $__wasm_apply_relocs) - ) - (func $__wasm_apply_relocs (; 1 ;) - ) - (func $sideg (; 2 ;) (result i32) - (local $0 i32) - ;; code offset: 0xf - (local.set $0 - ;; code offset: 0xd - (i32.const 17) - ) - ;; code offset: 0x13 - (return - ;; code offset: 0x11 - (local.get $0) - ) - ) - (func $sidef (; 3 ;) (result i32) - (local $0 i32) - ;; code offset: 0x1b - (local.set $0 - ;; code offset: 0x19 - (i32.const 36) - ) - ;; code offset: 0x1f - (return - ;; code offset: 0x1d - (local.get $0) - ) - ) - ;; custom section "dylink", size 5 - ;; custom section ".debug_info", size 130 - ;; custom section ".debug_abbrev", size 100 - ;; custom section ".debug_line", size 145 - ;; custom section ".debug_str", size 407 - ;; custom section "producers", size 180 -) diff -Nru binaryen-91/test/passes/multi_line_table_dwarf.bin.txt binaryen-99/test/passes/multi_line_table_dwarf.bin.txt --- binaryen-91/test/passes/multi_line_table_dwarf.bin.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/multi_line_table_dwarf.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,479 @@ +DWARF debug info +================ + +Contains section .debug_info (130 bytes) +Contains section .debug_abbrev (100 bytes) +Contains section .debug_line (121 bytes) +Contains section .debug_str (407 bytes) + +.debug_abbrev contents: +Abbrev table for offset: 0x00000000 +[1] DW_TAG_compile_unit DW_CHILDREN_yes + DW_AT_producer DW_FORM_strp + DW_AT_language DW_FORM_data2 + DW_AT_name DW_FORM_strp + DW_AT_stmt_list DW_FORM_sec_offset + DW_AT_comp_dir DW_FORM_strp + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + +[2] DW_TAG_subprogram DW_CHILDREN_no + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[3] DW_TAG_base_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_encoding DW_FORM_data1 + DW_AT_byte_size DW_FORM_data1 + +Abbrev table for offset: 0x00000032 +[1] DW_TAG_compile_unit DW_CHILDREN_yes + DW_AT_producer DW_FORM_strp + DW_AT_language DW_FORM_data2 + DW_AT_name DW_FORM_strp + DW_AT_stmt_list DW_FORM_sec_offset + DW_AT_comp_dir DW_FORM_strp + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + +[2] DW_TAG_subprogram DW_CHILDREN_no + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[3] DW_TAG_base_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_encoding DW_FORM_data1 + DW_AT_byte_size DW_FORM_data1 + + +.debug_info contents: +0x00000000: Compile Unit: length = 0x0000003d version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x00000041) + +0x0000000b: DW_TAG_compile_unit [1] * + DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 7fcd9e3f70830a9c4bf631a602c2764180b5c3a8)") + DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000095] = "fourth.cpp") + DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) + DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x000000a0] = "/tmp/emscripten_test_wasm0_xkAHBX") + DW_AT_low_pc [DW_FORM_addr] (0x000000000000000a) + DW_AT_high_pc [DW_FORM_data4] (0x0000000b) + +0x00000026: DW_TAG_subprogram [2] + DW_AT_low_pc [DW_FORM_addr] (0x000000000000000a) + DW_AT_high_pc [DW_FORM_data4] (0x0000000b) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c2] = "sideg") + DW_AT_decl_file [DW_FORM_data1] ("/tmp/emscripten_test_wasm0_xkAHBX/fourth.cpp") + DW_AT_decl_line [DW_FORM_data1] (1) + DW_AT_type [DW_FORM_ref4] (cu + 0x0039 => {0x00000039} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x00000039: DW_TAG_base_type [3] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c8] = "int") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) + DW_AT_byte_size [DW_FORM_data1] (0x04) + +0x00000040: NULL +0x00000041: Compile Unit: length = 0x0000003d version = 0x0004 abbr_offset = 0x0032 addr_size = 0x04 (next unit at 0x00000082) + +0x0000004c: DW_TAG_compile_unit [1] * + DW_AT_producer [DW_FORM_strp] ( .debug_str[0x000000cc] = "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 7fcd9e3f70830a9c4bf631a602c2764180b5c3a8)") + DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000161] = "third.cpp") + DW_AT_stmt_list [DW_FORM_sec_offset] (0x0000003d) + DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x0000016b] = "/tmp/emscripten_test_wasm0_xkAHBX") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000016) + DW_AT_high_pc [DW_FORM_data4] (0x0000000b) + +0x00000067: DW_TAG_subprogram [2] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000016) + DW_AT_high_pc [DW_FORM_data4] (0x0000000b) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000018d] = "sidef") + DW_AT_decl_file [DW_FORM_data1] ("/tmp/emscripten_test_wasm0_xkAHBX/third.cpp") + DW_AT_decl_line [DW_FORM_data1] (1) + DW_AT_type [DW_FORM_ref4] (cu + 0x0039 => {0x0000007a} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x0000007a: DW_TAG_base_type [3] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000193] = "int") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) + DW_AT_byte_size [DW_FORM_data1] (0x04) + +0x00000081: NULL + +.debug_line contents: +debug_line[0x00000000] +Line table prologue: + total_length: 0x00000039 + version: 4 + prologue_length: 0x00000022 + min_inst_length: 1 +max_ops_per_inst: 1 + default_is_stmt: 1 + line_base: -5 + line_range: 14 + opcode_base: 13 +standard_opcode_lengths[DW_LNS_copy] = 0 +standard_opcode_lengths[DW_LNS_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_advance_line] = 1 +standard_opcode_lengths[DW_LNS_set_file] = 1 +standard_opcode_lengths[DW_LNS_set_column] = 1 +standard_opcode_lengths[DW_LNS_negate_stmt] = 0 +standard_opcode_lengths[DW_LNS_set_basic_block] = 0 +standard_opcode_lengths[DW_LNS_const_add_pc] = 0 +standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 +standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 +standard_opcode_lengths[DW_LNS_set_isa] = 1 +file_names[ 1]: + name: "fourth.cpp" + dir_index: 0 + mod_time: 0x00000000 + length: 0x00000000 +0x0000002c: 00 DW_LNE_set_address (0x000000000000000a) +0x00000033: 01 DW_LNS_copy + 0x000000000000000a 1 0 1 0 0 is_stmt + + +0x00000034: 05 DW_LNS_set_column (26) +0x00000036: 0a DW_LNS_set_prologue_end +0x00000037: 74 address += 7, line += 0 + 0x0000000000000011 1 26 1 0 0 is_stmt prologue_end + +0x00000038: 02 DW_LNS_advance_pc (4) +0x0000003a: 00 DW_LNE_end_sequence + 0x0000000000000015 1 26 1 0 0 is_stmt end_sequence + +debug_line[0x0000003d] +Line table prologue: + total_length: 0x00000038 + version: 4 + prologue_length: 0x00000021 + min_inst_length: 1 +max_ops_per_inst: 1 + default_is_stmt: 1 + line_base: -5 + line_range: 14 + opcode_base: 13 +standard_opcode_lengths[DW_LNS_copy] = 0 +standard_opcode_lengths[DW_LNS_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_advance_line] = 1 +standard_opcode_lengths[DW_LNS_set_file] = 1 +standard_opcode_lengths[DW_LNS_set_column] = 1 +standard_opcode_lengths[DW_LNS_negate_stmt] = 0 +standard_opcode_lengths[DW_LNS_set_basic_block] = 0 +standard_opcode_lengths[DW_LNS_const_add_pc] = 0 +standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 +standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 +standard_opcode_lengths[DW_LNS_set_isa] = 1 +file_names[ 1]: + name: "third.cpp" + dir_index: 0 + mod_time: 0x00000000 + length: 0x00000000 +0x00000068: 00 DW_LNE_set_address (0x0000000000000016) +0x0000006f: 01 DW_LNS_copy + 0x0000000000000016 1 0 1 0 0 is_stmt + + +0x00000070: 05 DW_LNS_set_column (26) +0x00000072: 0a DW_LNS_set_prologue_end +0x00000073: 74 address += 7, line += 0 + 0x000000000000001d 1 26 1 0 0 is_stmt prologue_end + +0x00000074: 02 DW_LNS_advance_pc (4) +0x00000076: 00 DW_LNE_end_sequence + 0x0000000000000021 1 26 1 0 0 is_stmt end_sequence + + +.debug_str contents: +0x00000000: "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 7fcd9e3f70830a9c4bf631a602c2764180b5c3a8)" +0x00000095: "fourth.cpp" +0x000000a0: "/tmp/emscripten_test_wasm0_xkAHBX" +0x000000c2: "sideg" +0x000000c8: "int" +0x000000cc: "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 7fcd9e3f70830a9c4bf631a602c2764180b5c3a8)" +0x00000161: "third.cpp" +0x0000016b: "/tmp/emscripten_test_wasm0_xkAHBX" +0x0000018d: "sidef" +0x00000193: "int" +DWARF debug info +================ + +Contains section .debug_info (130 bytes) +Contains section .debug_abbrev (100 bytes) +Contains section .debug_line (145 bytes) +Contains section .debug_str (407 bytes) + +.debug_abbrev contents: +Abbrev table for offset: 0x00000000 +[1] DW_TAG_compile_unit DW_CHILDREN_yes + DW_AT_producer DW_FORM_strp + DW_AT_language DW_FORM_data2 + DW_AT_name DW_FORM_strp + DW_AT_stmt_list DW_FORM_sec_offset + DW_AT_comp_dir DW_FORM_strp + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + +[2] DW_TAG_subprogram DW_CHILDREN_no + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[3] DW_TAG_base_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_encoding DW_FORM_data1 + DW_AT_byte_size DW_FORM_data1 + +Abbrev table for offset: 0x00000032 +[1] DW_TAG_compile_unit DW_CHILDREN_yes + DW_AT_producer DW_FORM_strp + DW_AT_language DW_FORM_data2 + DW_AT_name DW_FORM_strp + DW_AT_stmt_list DW_FORM_sec_offset + DW_AT_comp_dir DW_FORM_strp + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + +[2] DW_TAG_subprogram DW_CHILDREN_no + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[3] DW_TAG_base_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_encoding DW_FORM_data1 + DW_AT_byte_size DW_FORM_data1 + + +.debug_info contents: +0x00000000: Compile Unit: length = 0x0000003d version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x00000041) + +0x0000000b: DW_TAG_compile_unit [1] * + DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 7fcd9e3f70830a9c4bf631a602c2764180b5c3a8)") + DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000095] = "fourth.cpp") + DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) + DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x000000a0] = "/tmp/emscripten_test_wasm0_xkAHBX") + DW_AT_low_pc [DW_FORM_addr] (0x000000000000000a) + DW_AT_high_pc [DW_FORM_data4] (0x0000000b) + +0x00000026: DW_TAG_subprogram [2] + DW_AT_low_pc [DW_FORM_addr] (0x000000000000000a) + DW_AT_high_pc [DW_FORM_data4] (0x0000000b) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c2] = "sideg") + DW_AT_decl_file [DW_FORM_data1] ("/tmp/emscripten_test_wasm0_xkAHBX/fourth.cpp") + DW_AT_decl_line [DW_FORM_data1] (1) + DW_AT_type [DW_FORM_ref4] (cu + 0x0039 => {0x00000039} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x00000039: DW_TAG_base_type [3] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c8] = "int") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) + DW_AT_byte_size [DW_FORM_data1] (0x04) + +0x00000040: NULL +0x00000041: Compile Unit: length = 0x0000003d version = 0x0004 abbr_offset = 0x0032 addr_size = 0x04 (next unit at 0x00000082) + +0x0000004c: DW_TAG_compile_unit [1] * + DW_AT_producer [DW_FORM_strp] ( .debug_str[0x000000cc] = "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 7fcd9e3f70830a9c4bf631a602c2764180b5c3a8)") + DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000161] = "third.cpp") + DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000049) + DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x0000016b] = "/tmp/emscripten_test_wasm0_xkAHBX") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000016) + DW_AT_high_pc [DW_FORM_data4] (0x0000000b) + +0x00000067: DW_TAG_subprogram [2] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000016) + DW_AT_high_pc [DW_FORM_data4] (0x0000000b) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x0000018d] = "sidef") + DW_AT_decl_file [DW_FORM_data1] ("/tmp/emscripten_test_wasm0_xkAHBX/third.cpp") + DW_AT_decl_line [DW_FORM_data1] (1) + DW_AT_type [DW_FORM_ref4] (cu + 0x0039 => {0x0000007a} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x0000007a: DW_TAG_base_type [3] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000193] = "int") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) + DW_AT_byte_size [DW_FORM_data1] (0x04) + +0x00000081: NULL + +.debug_line contents: +debug_line[0x00000000] +Line table prologue: + total_length: 0x00000045 + version: 4 + prologue_length: 0x00000022 + min_inst_length: 1 +max_ops_per_inst: 1 + default_is_stmt: 1 + line_base: -5 + line_range: 14 + opcode_base: 13 +standard_opcode_lengths[DW_LNS_copy] = 0 +standard_opcode_lengths[DW_LNS_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_advance_line] = 1 +standard_opcode_lengths[DW_LNS_set_file] = 1 +standard_opcode_lengths[DW_LNS_set_column] = 1 +standard_opcode_lengths[DW_LNS_negate_stmt] = 0 +standard_opcode_lengths[DW_LNS_set_basic_block] = 0 +standard_opcode_lengths[DW_LNS_const_add_pc] = 0 +standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 +standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 +standard_opcode_lengths[DW_LNS_set_isa] = 1 +file_names[ 1]: + name: "fourth.cpp" + dir_index: 0 + mod_time: 0x00000000 + length: 0x00000000 +0x0000002c: 00 DW_LNE_set_address (0x000000000000000a) +0x00000033: 01 DW_LNS_copy + 0x000000000000000a 1 0 1 0 0 is_stmt + + +0x00000034: 00 DW_LNE_set_address (0x0000000000000011) +0x0000003b: 05 DW_LNS_set_column (26) +0x0000003d: 0a DW_LNS_set_prologue_end +0x0000003e: 01 DW_LNS_copy + 0x0000000000000011 1 26 1 0 0 is_stmt prologue_end + + +0x0000003f: 00 DW_LNE_set_address (0x0000000000000015) +0x00000046: 00 DW_LNE_end_sequence + 0x0000000000000015 1 26 1 0 0 is_stmt end_sequence + +debug_line[0x00000049] +Line table prologue: + total_length: 0x00000044 + version: 4 + prologue_length: 0x00000021 + min_inst_length: 1 +max_ops_per_inst: 1 + default_is_stmt: 1 + line_base: -5 + line_range: 14 + opcode_base: 13 +standard_opcode_lengths[DW_LNS_copy] = 0 +standard_opcode_lengths[DW_LNS_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_advance_line] = 1 +standard_opcode_lengths[DW_LNS_set_file] = 1 +standard_opcode_lengths[DW_LNS_set_column] = 1 +standard_opcode_lengths[DW_LNS_negate_stmt] = 0 +standard_opcode_lengths[DW_LNS_set_basic_block] = 0 +standard_opcode_lengths[DW_LNS_const_add_pc] = 0 +standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 +standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 +standard_opcode_lengths[DW_LNS_set_isa] = 1 +file_names[ 1]: + name: "third.cpp" + dir_index: 0 + mod_time: 0x00000000 + length: 0x00000000 +0x00000074: 00 DW_LNE_set_address (0x0000000000000016) +0x0000007b: 01 DW_LNS_copy + 0x0000000000000016 1 0 1 0 0 is_stmt + + +0x0000007c: 00 DW_LNE_set_address (0x000000000000001d) +0x00000083: 05 DW_LNS_set_column (26) +0x00000085: 0a DW_LNS_set_prologue_end +0x00000086: 01 DW_LNS_copy + 0x000000000000001d 1 26 1 0 0 is_stmt prologue_end + + +0x00000087: 00 DW_LNE_set_address (0x0000000000000021) +0x0000008e: 00 DW_LNE_end_sequence + 0x0000000000000021 1 26 1 0 0 is_stmt end_sequence + + +.debug_str contents: +0x00000000: "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 7fcd9e3f70830a9c4bf631a602c2764180b5c3a8)" +0x00000095: "fourth.cpp" +0x000000a0: "/tmp/emscripten_test_wasm0_xkAHBX" +0x000000c2: "sideg" +0x000000c8: "int" +0x000000cc: "clang version 10.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 7fcd9e3f70830a9c4bf631a602c2764180b5c3a8)" +0x00000161: "third.cpp" +0x0000016b: "/tmp/emscripten_test_wasm0_xkAHBX" +0x0000018d: "sidef" +0x00000193: "int" +(module + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (import "env" "memory" (memory $mimport$0 0)) + (import "env" "__indirect_function_table" (table $timport$0 0 funcref)) + (import "env" "__stack_pointer" (global $gimport$0 (mut i32))) + (import "env" "__memory_base" (global $gimport$1 i32)) + (import "env" "__table_base" (global $gimport$2 i32)) + (global $global$0 i32 (i32.const 0)) + (export "__wasm_call_ctors" (func $__wasm_call_ctors)) + (export "__wasm_apply_relocs" (func $__wasm_apply_relocs)) + (export "sideg" (func $sideg)) + (export "sidef" (func $sidef)) + (export "__dso_handle" (global $global$0)) + (func $__wasm_call_ctors + ;; code offset: 0x3 + (call $__wasm_apply_relocs) + ) + (func $__wasm_apply_relocs + ) + (func $sideg (result i32) + (local $0 i32) + ;; code offset: 0xf + (local.set $0 + ;; code offset: 0xd + (i32.const 17) + ) + ;; code offset: 0x13 + (return + ;; code offset: 0x11 + (local.get $0) + ) + ) + (func $sidef (result i32) + (local $0 i32) + ;; code offset: 0x1b + (local.set $0 + ;; code offset: 0x19 + (i32.const 36) + ) + ;; code offset: 0x1f + (return + ;; code offset: 0x1d + (local.get $0) + ) + ) + ;; dylink section + ;; memorysize: 0 + ;; memoryalignment: 0 + ;; tablesize: 0 + ;; tablealignment: 0 + ;; custom section ".debug_info", size 130 + ;; custom section ".debug_abbrev", size 100 + ;; custom section ".debug_line", size 145 + ;; custom section ".debug_str", size 407 + ;; custom section "producers", size 180 +) diff -Nru binaryen-91/test/passes/multi_line_table_dwarf.passes binaryen-99/test/passes/multi_line_table_dwarf.passes --- binaryen-91/test/passes/multi_line_table_dwarf.passes 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/multi_line_table_dwarf.passes 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +g_dwarfdump_roundtrip_dwarfdump_all-features Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/passes/multi_line_table_dwarf.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/passes/multi_line_table_dwarf.wasm differ diff -Nru binaryen-91/test/passes/multi_line_table.passes binaryen-99/test/passes/multi_line_table.passes --- binaryen-91/test/passes/multi_line_table.passes 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/multi_line_table.passes 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -g_dwarfdump_roundtrip_dwarfdump_all-features Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/passes/multi_line_table.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/passes/multi_line_table.wasm differ diff -Nru binaryen-91/test/passes/multi_unit_abbrev_noprint.passes binaryen-99/test/passes/multi_unit_abbrev_noprint.passes --- binaryen-91/test/passes/multi_unit_abbrev_noprint.passes 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/multi_unit_abbrev_noprint.passes 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +g_roundtrip_roundtrip_roundtrip Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/passes/multi_unit_abbrev_noprint.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/passes/multi_unit_abbrev_noprint.wasm differ diff -Nru binaryen-91/test/passes/nm.txt binaryen-99/test/passes/nm.txt --- binaryen-91/test/passes/nm.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/nm.txt 2021-01-07 20:01:06.000000000 +0000 @@ -4,10 +4,10 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $a (; 0 ;) + (func $a (nop) ) - (func $b (; 1 ;) + (func $b (drop (loop $loop-in1 (result i32) (nop) @@ -15,7 +15,7 @@ ) ) ) - (func $c (; 2 ;) + (func $c (block $top (nop) (drop diff -Nru binaryen-91/test/passes/no-exit-runtime.txt binaryen-99/test/passes/no-exit-runtime.txt --- binaryen-91/test/passes/no-exit-runtime.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/no-exit-runtime.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,23 +1,56 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) (import "env" "atexit" (func $fimport$0 (param i32 i32) (result i32))) (import "env" "__cxa_atexit" (func $fimport$1 (param i32 i32) (result i32))) (import "env" "_atexit" (func $fimport$2 (param i32 i32) (result i32))) (import "env" "___cxa_atexit" (func $fimport$3 (param i32 i32) (result i32))) (import "env" "other" (func $fimport$4 (param i32 i32) (result i32))) - (func $caller (; 5 ;) + (func $caller (drop - (i32.const 0) + (block (result i32) + (drop + (i32.const 0) + ) + (drop + (i32.const 1) + ) + (i32.const 0) + ) ) (drop - (i32.const 0) + (block (result i32) + (drop + (i32.const 0) + ) + (drop + (i32.const 1) + ) + (i32.const 0) + ) ) (drop - (i32.const 0) + (block (result i32) + (drop + (i32.const 0) + ) + (drop + (i32.const 1) + ) + (i32.const 0) + ) ) (drop - (i32.const 0) + (block (result i32) + (drop + (i32.const 0) + ) + (drop + (i32.const 1) + ) + (i32.const 0) + ) ) (drop (call $fimport$4 @@ -26,7 +59,108 @@ ) ) (drop - (unreachable) + (block + (drop + (unreachable) + ) + (drop + (i32.const 1) + ) + (unreachable) + ) + ) + ) + (func $side-effects (result i32) + (local $x i32) + (drop + (block (result i32) + (drop + (local.tee $x + (i32.const 1) + ) + ) + (drop + (i32.const 2) + ) + (i32.const 0) + ) + ) + (drop + (block (result i32) + (drop + (i32.const 3) + ) + (drop + (local.tee $x + (i32.const 4) + ) + ) + (i32.const 0) + ) + ) + (drop + (block (result i32) + (drop + (local.tee $x + (i32.const 5) + ) + ) + (drop + (local.tee $x + (i32.const 6) + ) + ) + (i32.const 0) + ) + ) + (drop + (block + (drop + (unreachable) + ) + (drop + (local.tee $x + (i32.const 7) + ) + ) + (unreachable) + ) + ) + (drop + (block + (drop + (local.tee $x + (i32.const 8) + ) + ) + (drop + (unreachable) + ) + (unreachable) + ) + ) + (drop + (block + (drop + (unreachable) + ) + (drop + (i32.const 9) + ) + (unreachable) + ) + ) + (drop + (block + (drop + (i32.const 10) + ) + (drop + (unreachable) + ) + (unreachable) + ) ) + (local.get $x) ) ) diff -Nru binaryen-91/test/passes/no-exit-runtime.wast binaryen-99/test/passes/no-exit-runtime.wast --- binaryen-91/test/passes/no-exit-runtime.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/no-exit-runtime.wast 2021-01-07 20:01:06.000000000 +0000 @@ -12,4 +12,36 @@ (drop (call $fimport$4 (i32.const 0) (i32.const 1))) (drop (call $fimport$0 (unreachable) (i32.const 1))) ) + (func $side-effects (result i32) + (local $x i32) + (drop (call $fimport$0 + (local.tee $x (i32.const 1)) + (i32.const 2) + )) + (drop (call $fimport$0 + (i32.const 3) + (local.tee $x (i32.const 4)) + )) + (drop (call $fimport$0 + (local.tee $x (i32.const 5)) + (local.tee $x (i32.const 6)) + )) + (drop (call $fimport$0 + (unreachable) + (local.tee $x (i32.const 7)) + )) + (drop (call $fimport$0 + (local.tee $x (i32.const 8)) + (unreachable) + )) + (drop (call $fimport$0 + (unreachable) + (i32.const 9) + )) + (drop (call $fimport$0 + (i32.const 10) + (unreachable) + )) + (local.get $x) + ) ) diff -Nru binaryen-91/test/passes/O1_print-stack-ir.txt binaryen-99/test/passes/O1_print-stack-ir.txt --- binaryen-91/test/passes/O1_print-stack-ir.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/O1_print-stack-ir.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (export "stacky-help" (func $stacky-help)) - (func $stacky-help (; 0 ;) (param $0 i32) (result i32) + (func $stacky-help (param $0 i32) (result i32) (i32.add (call $stacky-help (i32.const 0) @@ -27,7 +27,7 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (export "stacky-help" (func $stacky-help)) - (func $stacky-help (; 0 ;) (param $0 i32) (result i32) + (func $stacky-help (param $0 i32) (result i32) (i32.add (call $stacky-help (i32.const 0) diff -Nru binaryen-91/test/passes/O1.txt binaryen-99/test/passes/O1.txt --- binaryen-91/test/passes/O1.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/O1.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,10 +1,9 @@ (module (type $none_=>_i32 (func (result i32))) (memory $0 1 1) - (global $global$0 (mut i32) (i32.const 10)) (export "foo" (func $0)) - (func $0 (; 0 ;) (result i32) - (global.set $global$0 + (func $0 (result i32) + (drop (i32.const 0) ) (i32.load align=1 diff -Nru binaryen-91/test/passes/O2_precompute-propagate_print-stack-ir.txt binaryen-99/test/passes/O2_precompute-propagate_print-stack-ir.txt --- binaryen-91/test/passes/O2_precompute-propagate_print-stack-ir.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/O2_precompute-propagate_print-stack-ir.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $i32_i32_i32_i64_=>_i64 (func (param i32 i32 i32 i64) (result i64))) (export "func" (func $0)) - (func $0 (; 0 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i64) (result i64) + (func $0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i64) (result i64) (local $4 i32) (local.set $3 (i64.const 2147483647) @@ -13,7 +13,7 @@ (module (type $i32_i32_i32_i64_=>_i64 (func (param i32 i32 i32 i64) (result i64))) (export "func" (func $0)) - (func $0 (; 0 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i64) (result i64) + (func $0 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i64) (result i64) (local $4 i32) (local.set $3 (i64.const 2147483647) diff -Nru binaryen-91/test/passes/O2_print-stack-ir.txt binaryen-99/test/passes/O2_print-stack-ir.txt --- binaryen-91/test/passes/O2_print-stack-ir.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/O2_print-stack-ir.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (export "stacky-help" (func $stacky-help)) - (func $stacky-help (; 0 ;) (param $0 i32) (result i32) + (func $stacky-help (param $0 i32) (result i32) i32.const 0 call $stacky-help i32.const 1 @@ -18,7 +18,7 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (export "stacky-help" (func $stacky-help)) - (func $stacky-help (; 0 ;) (; has Stack IR ;) (param $0 i32) (result i32) + (func $stacky-help (; has Stack IR ;) (param $0 i32) (result i32) (i32.add (call $stacky-help (i32.const 0) diff -Nru binaryen-91/test/passes/O3_inline-functions-with-loops_flexible-inline-max-function-size=30.txt binaryen-99/test/passes/O3_inline-functions-with-loops_flexible-inline-max-function-size=30.txt --- binaryen-91/test/passes/O3_inline-functions-with-loops_flexible-inline-max-function-size=30.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/O3_inline-functions-with-loops_flexible-inline-max-function-size=30.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,95 @@ +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (memory $memory 0) + (export "fib" (func $fib)) + (export "looped" (func $looped)) + (export "t0" (func $looped)) + (export "t1" (func $t1)) + (export "t2" (func $t2)) + (export "t3" (func $t3)) + (export "memory" (memory $memory)) + (func $fib (; has Stack IR ;) (param $0 i32) (result i32) + (if + (i32.le_s + (local.get $0) + (i32.const 2) + ) + (return + (local.get $0) + ) + ) + (i32.add + (call $fib + (i32.sub + (local.get $0) + (i32.const 1) + ) + ) + (call $fib + (i32.sub + (local.get $0) + (i32.const 2) + ) + ) + ) + ) + (func $looped (; has Stack IR ;) (param $0 i32) (result i32) + (loop $L0 + (if + (i32.ge_s + (local.get $0) + (i32.const 0) + ) + (block + (local.set $0 + (i32.sub + (local.get $0) + (i32.const 1) + ) + ) + (br $L0) + ) + ) + ) + (local.get $0) + ) + (func $t1 (; has Stack IR ;) (param $0 i32) (result i32) + (local.set $0 + (i32.add + (local.get $0) + (i32.const 1) + ) + ) + (loop $L0 + (if + (i32.ge_s + (local.get $0) + (i32.const 0) + ) + (block + (local.set $0 + (i32.sub + (local.get $0) + (i32.const 1) + ) + ) + (br $L0) + ) + ) + ) + (local.get $0) + ) + (func $t2 (; has Stack IR ;) (param $0 i32) (result i32) + (call $fib + (local.get $0) + ) + ) + (func $t3 (; has Stack IR ;) (param $0 i32) (result i32) + (call $fib + (i32.add + (local.get $0) + (i32.const 1) + ) + ) + ) +) diff -Nru binaryen-91/test/passes/O3_inline-functions-with-loops_flexible-inline-max-function-size=30.wast binaryen-99/test/passes/O3_inline-functions-with-loops_flexible-inline-max-function-size=30.wast --- binaryen-91/test/passes/O3_inline-functions-with-loops_flexible-inline-max-function-size=30.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/O3_inline-functions-with-loops_flexible-inline-max-function-size=30.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,80 @@ +(module + (type $t0 (func (param i32) (result i32))) + (func $fib (export "fib") (type $t0) (param $p0 i32) (result i32) + (if $I0 + (i32.le_s + (local.get $p0) + (i32.const 2) + ) + (then + (return + (local.get $p0) + ) + ) + ) + (i32.add + (call $fib + (i32.sub + (local.get $p0) + (i32.const 1) + ) + ) + (call $fib + (i32.sub + (local.get $p0) + (i32.const 2) + ) + ) + ) + ) + (func $looped (export "looped") (type $t0) (param $p0 i32) (result i32) + (loop $L0 + (if $I1 + (i32.ge_s + (local.get $p0) + (i32.const 0) + ) + (then + (local.set $p0 + (i32.sub + (local.get $p0) + (i32.const 1) + ) + ) + (br $L0) + ) + ) + ) + (local.get $p0) + ) + + (func $t0 (export "t0") (type $t0) (param $p0 i32) (result i32) + (call $looped + (local.get $p0) + ) + ) + + (func $t1 (export "t1") (type $t0) (param $p0 i32) (result i32) + (call $looped + (i32.add + (local.get $p0) + (i32.const 1) + ) + ) + ) + (func $t2 (export "t2") (type $t0) (param $p0 i32) (result i32) + (call $fib + (local.get $p0) + ) + ) + + (func $t3 (export "t3") (type $t0) (param $p0 i32) (result i32) + (call $fib + (i32.add + (local.get $p0) + (i32.const 1) + ) + ) + ) + (memory $memory (export "memory") 0) +) diff -Nru binaryen-91/test/passes/O3_inlining.txt binaryen-99/test/passes/O3_inlining.txt --- binaryen-91/test/passes/O3_inlining.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/O3_inlining.txt 2021-01-07 20:01:06.000000000 +0000 @@ -3,7 +3,7 @@ (memory $0 1 1) (global $global$1 (mut i32) (i32.const 100)) (export "func_217" (func $1)) - (func $1 (; 0 ;) (param $0 i32) + (func $1 (param $0 i32) (if (global.get $global$1) (unreachable) @@ -13,12 +13,8 @@ ) (if (i32.eqz - (if (result i32) - (i32.load16_u - (i32.const 3) - ) - (i32.const 1) - (i32.const 0) + (i32.load16_u + (i32.const 3) ) ) (unreachable) diff -Nru binaryen-91/test/passes/O3_low-memory-unused_metrics.txt binaryen-99/test/passes/O3_low-memory-unused_metrics.txt --- binaryen-91/test/passes/O3_low-memory-unused_metrics.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/O3_low-memory-unused_metrics.txt 2021-01-07 20:01:06.000000000 +0000 @@ -6,14 +6,14 @@ [imports] : 10 [memory-data] : 0 [table-data] : 0 - [total] : 1965 + [total] : 1964 [vars] : 9 - binary : 241 + binary : 240 block : 68 break : 90 call : 22 call_indirect : 1 - const : 176 + const : 175 drop : 8 if : 27 load : 313 @@ -23,14 +23,14 @@ return : 3 select : 11 store : 160 - unary : 28 + unary : 29 (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (import "env" "memory" (memory $0 4096 4096)) - (import "env" "table" (table $0 10 funcref)) + (import "env" "memory" (memory $108 4096 4096)) + (import "env" "table" (table $timport$109 10 funcref)) (import "env" "crc32" (func $fimport$14 (param i32 i32 i32) (result i32))) (import "env" "adler32" (func $fimport$15 (param i32 i32 i32) (result i32))) (import "env" "deflate_huff" (func $fimport$20 (param i32 i32) (result i32))) @@ -40,7 +40,7 @@ (import "env" "memset" (func $fimport$97 (param i32 i32 i32) (result i32))) (import "env" "memcpy" (func $fimport$98 (param i32 i32 i32) (result i32))) (export "deflate" (func $0)) - (func $0 (; 8 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) + (func $0 (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -799,14 +799,14 @@ ) ) (local.set $5 - (i32.add + (i32.sub (i32.shl (i32.load offset=48 (local.get $2) ) (i32.const 12) ) - (i32.const -30720) + (i32.const 30720) ) ) (local.set $3 @@ -1142,9 +1142,9 @@ ) ) ) - (i32.gt_u - (local.get $5) + (i32.lt_u (local.get $3) + (local.get $5) ) ) ) @@ -1287,8 +1287,7 @@ ) ) (if - (i32.ge_u - (local.get $6) + (i32.le_u (i32.load16_u offset=20 (local.tee $5 (i32.load offset=28 @@ -1296,6 +1295,7 @@ ) ) ) + (local.get $6) ) (block (local.set $3 @@ -1482,9 +1482,9 @@ ) ) ) - (i32.gt_u - (local.get $5) + (i32.lt_u (local.get $3) + (local.get $5) ) ) ) @@ -1795,9 +1795,9 @@ ) ) ) - (i32.gt_u - (local.get $5) + (i32.lt_u (local.get $3) + (local.get $5) ) ) ) @@ -2030,16 +2030,16 @@ (block (block $label$52 (br_if $label$52 - (i32.le_u + (i32.ge_u + (i32.load offset=12 + (local.get $2) + ) (i32.add (i32.load offset=20 (local.get $2) ) (i32.const 2) ) - (i32.load offset=12 - (local.get $2) - ) ) ) (br_if $label$52 @@ -2060,9 +2060,9 @@ ) ) ) - (i32.gt_u - (local.get $5) + (i32.lt_u (local.get $3) + (local.get $5) ) ) ) @@ -2141,7 +2141,10 @@ ) ) (br_if $label$6 - (i32.gt_u + (i32.lt_u + (i32.load offset=12 + (local.get $2) + ) (i32.add (local.tee $3 (i32.load offset=20 @@ -2150,9 +2153,6 @@ ) (i32.const 2) ) - (i32.load offset=12 - (local.get $2) - ) ) ) (local.set $4 @@ -2344,9 +2344,9 @@ ) ) (br_if $label$53 - (i32.lt_s - (local.get $7) + (i32.gt_s (local.get $1) + (local.get $7) ) ) (br_if $label$53 @@ -2387,7 +2387,7 @@ ) ) (br_if $label$57 - (i32.ne + (i32.eqz (i32.or (i32.eqz (local.get $1) @@ -2397,7 +2397,6 @@ (i32.const 666) ) ) - (i32.const 1) ) ) (br_if $label$56 @@ -2535,14 +2534,14 @@ ) ) (local.tee $4 - (i32.add + (i32.sub (i32.shl (i32.load offset=76 (local.get $2) ) (i32.const 1) ) - (i32.const -2) + (i32.const 2) ) ) ) @@ -3025,9 +3024,9 @@ ) ) ) - (i32.gt_u - (local.get $4) + (i32.lt_u (local.get $1) + (local.get $4) ) ) ) diff -Nru binaryen-91/test/passes/O3_print-stack-ir.txt binaryen-99/test/passes/O3_print-stack-ir.txt --- binaryen-91/test/passes/O3_print-stack-ir.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/O3_print-stack-ir.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (export "stacky-help" (func $stacky-help)) - (func $stacky-help (; 0 ;) (param $0 i32) (result i32) + (func $stacky-help (param $0 i32) (result i32) i32.const 0 call $stacky-help i32.const 1 @@ -16,7 +16,7 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (export "stacky-help" (func $stacky-help)) - (func $stacky-help (; 0 ;) (; has Stack IR ;) (param $0 i32) (result i32) + (func $stacky-help (; has Stack IR ;) (param $0 i32) (result i32) (i32.add (call $stacky-help (i32.const 0) diff -Nru binaryen-91/test/passes/O4_disable-bulk-memory.txt binaryen-99/test/passes/O4_disable-bulk-memory.txt --- binaryen-91/test/passes/O4_disable-bulk-memory.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/O4_disable-bulk-memory.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,11 +1,7 @@ (module (type $none_=>_none (func)) - (global $global$0 (mut i32) (i32.const 10)) (export "func_59_invoker" (func $0)) - (func $0 (; 0 ;) (; has Stack IR ;) - (global.set $global$0 - (i32.const 0) - ) + (func $0 (; has Stack IR ;) (unreachable) ) ) @@ -17,9 +13,9 @@ (type $f64_f64_f64_f64_f64_f64_f64_=>_i32 (func (param f64 f64 f64 f64 f64 f64 f64) (result i32))) (type $none_=>_f64 (func (result f64))) (type $i32_=>_f64 (func (param i32) (result f64))) - (import "env" "memory" (memory $0 1)) - (data (i32.const 8) "\0d\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") - (data (i32.const 40) "\1c\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s") + (import "env" "memory" (memory $1 1)) + (data (i32.const 8) "\0d\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") + (data (i32.const 40) "\1c\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") (table $0 1 funcref) (elem (i32.const 0) $null) (global $global$0 (mut i32) (i32.const 0)) @@ -32,7 +28,7 @@ (export "bench" (func $assembly/index/bench)) (export "getBody" (func $assembly/index/getBody)) (start $start) - (func $~lib/allocator/arena/__memory_allocate (; 0 ;) (; has Stack IR ;) (param $0 i32) (result i32) + (func $~lib/allocator/arena/__memory_allocate (; has Stack IR ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -117,7 +113,7 @@ ) (local.get $1) ) - (func $assembly/index/NBodySystem#constructor (; 1 ;) (; has Stack IR ;) (param $0 i32) (result i32) + (func $assembly/index/NBodySystem#constructor (; has Stack IR ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 f64) @@ -200,18 +196,15 @@ (f64.store offset=24 (local.tee $1 (if (result i32) - (i32.lt_u - (i32.const 0) - (i32.shr_u - (i32.load - (local.tee $1 - (i32.load - (local.get $0) - ) + (i32.shr_u + (i32.load + (local.tee $1 + (i32.load + (local.get $0) ) ) - (i32.const 2) ) + (i32.const 2) ) (i32.load offset=8 (local.get $1) @@ -220,28 +213,22 @@ ) ) (f64.div - (f64.neg - (local.get $4) - ) - (f64.const 39.47841760435743) + (local.get $4) + (f64.const -39.47841760435743) ) ) (f64.store offset=32 (local.get $1) (f64.div - (f64.neg - (local.get $5) - ) - (f64.const 39.47841760435743) + (local.get $5) + (f64.const -39.47841760435743) ) ) (f64.store offset=40 (local.get $1) (f64.div - (f64.neg - (local.get $6) - ) - (f64.const 39.47841760435743) + (local.get $6) + (f64.const -39.47841760435743) ) ) (i32.store @@ -254,7 +241,7 @@ ) (local.get $1) ) - (func $assembly/index/Body#constructor (; 2 ;) (; has Stack IR ;) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 f64) (param $5 f64) (param $6 f64) (result i32) + (func $assembly/index/Body#constructor (; has Stack IR ;) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 f64) (param $5 f64) (param $6 f64) (result i32) (local $7 i32) (f64.store (local.tee $7 @@ -290,7 +277,7 @@ ) (local.get $7) ) - (func $~lib/internal/memory/memset (; 3 ;) (; has Stack IR ;) (param $0 i32) + (func $~lib/internal/memory/memset (; has Stack IR ;) (param $0 i32) (local $1 i32) (local $2 i32) (i32.store8 @@ -563,7 +550,7 @@ ) ) ) - (func $~lib/array/Array#constructor (; 4 ;) (; has Stack IR ;) (result i32) + (func $~lib/array/Array#constructor (; has Stack IR ;) (result i32) (local $0 i32) (local $1 i32) (i32.store @@ -602,7 +589,7 @@ ) (local.get $0) ) - (func $assembly/index/init (; 5 ;) (; has Stack IR ;) + (func $assembly/index/init (; has Stack IR ;) (local $0 i32) (local $1 i32) (local.set $1 @@ -711,7 +698,7 @@ ) ) ) - (func $assembly/index/NBodySystem#advance (; 6 ;) (; has Stack IR ;) (param $0 i32) + (func $assembly/index/NBodySystem#advance (; has Stack IR ;) (param $0 i32) (local $1 i32) (local $2 f64) (local $3 i32) @@ -972,8 +959,8 @@ (local.get $0) ) (f64.mul - (f64.const 0.01) (local.get $4) + (f64.const 0.01) ) ) ) @@ -984,8 +971,8 @@ (local.get $0) ) (f64.mul - (f64.const 0.01) (local.get $5) + (f64.const 0.01) ) ) ) @@ -996,8 +983,8 @@ (local.get $0) ) (f64.mul - (f64.const 0.01) (local.get $6) + (f64.const 0.01) ) ) ) @@ -1012,7 +999,7 @@ ) ) ) - (func $assembly/index/NBodySystem#energy (; 7 ;) (; has Stack IR ;) (param $0 i32) (result f64) + (func $assembly/index/NBodySystem#energy (; has Stack IR ;) (param $0 i32) (result f64) (local $1 f64) (local $2 i32) (local $3 i32) @@ -1071,12 +1058,12 @@ (local.get $1) (f64.mul (f64.mul - (f64.const 0.5) (local.tee $10 (f64.load offset=48 (local.get $0) ) ) + (f64.const 0.5) ) (f64.add (f64.add @@ -1209,7 +1196,7 @@ ) (local.get $1) ) - (func $assembly/index/step (; 8 ;) (; has Stack IR ;) (result f64) + (func $assembly/index/step (; has Stack IR ;) (result f64) (call $assembly/index/NBodySystem#advance (global.get $global$5) ) @@ -1217,14 +1204,14 @@ (global.get $global$5) ) ) - (func $assembly/index/bench (; 9 ;) (; has Stack IR ;) (param $0 i32) + (func $assembly/index/bench (; has Stack IR ;) (param $0 i32) (local $1 i32) (block $label$1 (loop $label$2 (br_if $label$1 - (i32.ge_u - (local.get $1) + (i32.le_u (local.get $0) + (local.get $1) ) ) (call $assembly/index/NBodySystem#advance @@ -1240,11 +1227,10 @@ ) ) ) - (func $assembly/index/getBody (; 10 ;) (; has Stack IR ;) (param $0 i32) (result i32) + (func $assembly/index/getBody (; has Stack IR ;) (param $0 i32) (result i32) (local $1 i32) (if (result i32) - (i32.lt_u - (local.get $0) + (i32.gt_u (i32.load offset=4 (local.tee $1 (i32.load @@ -1252,10 +1238,10 @@ ) ) ) + (local.get $0) ) (if (result i32) - (i32.lt_u - (local.get $0) + (i32.gt_u (i32.shr_u (i32.load (local.tee $1 @@ -1266,6 +1252,7 @@ ) (i32.const 2) ) + (local.get $0) ) (i32.load offset=8 (i32.add @@ -1281,7 +1268,7 @@ (i32.const 0) ) ) - (func $start (; 11 ;) (; has Stack IR ;) + (func $start (; has Stack IR ;) (global.set $global$0 (i32.const 104) ) @@ -1289,7 +1276,7 @@ (i32.const 104) ) ) - (func $null (; 12 ;) (; has Stack IR ;) + (func $null (; has Stack IR ;) (nop) ) ) diff -Nru binaryen-91/test/passes/O_all-features_ignore-implicit-traps.txt binaryen-99/test/passes/O_all-features_ignore-implicit-traps.txt --- binaryen-91/test/passes/O_all-features_ignore-implicit-traps.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/O_all-features_ignore-implicit-traps.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,8 @@ +(module + (type ${i32} (struct (field i32))) + (type $ref?|{i32}|_=>_none (func (param (ref null ${i32})))) + (export "foo" (func $0)) + (func $0 (; has Stack IR ;) (param $0 (ref null ${i32})) + (nop) + ) +) diff -Nru binaryen-91/test/passes/O_all-features_ignore-implicit-traps.wast binaryen-99/test/passes/O_all-features_ignore-implicit-traps.wast --- binaryen-91/test/passes/O_all-features_ignore-implicit-traps.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/O_all-features_ignore-implicit-traps.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,17 @@ +;; Test that we can run GC types through the optimizer +(module + (type $struct.A (struct i32)) + + (func "foo" (param $x (ref null $struct.A)) + ;; get a struct reference + (drop + (local.get $x) + ) + ;; get a struct field value + ;; (note that since this is a nullable reference, it may trap, but we + ;; are ignoring implicit traps, so it has no side effects) + (drop + (struct.get $struct.A 0 (local.get $x)) + ) + ) +) diff -Nru binaryen-91/test/passes/O_all-features.txt binaryen-99/test/passes/O_all-features.txt --- binaryen-91/test/passes/O_all-features.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/O_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,12 @@ +(module + (type ${i32} (struct (field i32))) + (type $ref?|{i32}|_=>_none (func (param (ref null ${i32})))) + (export "foo" (func $0)) + (func $0 (; has Stack IR ;) (param $0 (ref null ${i32})) + (drop + (struct.get ${i32} 0 + (local.get $0) + ) + ) + ) +) diff -Nru binaryen-91/test/passes/O_all-features.wast binaryen-99/test/passes/O_all-features.wast --- binaryen-91/test/passes/O_all-features.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/O_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,16 @@ +;; Test that we can run GC types through the optimizer +(module + (type $struct.A (struct i32)) + + (func "foo" (param $x (ref null $struct.A)) + ;; get a struct reference + (drop + (local.get $x) + ) + ;; get a struct field value + ;; (note that since this is a nullable reference, it may trap) + (drop + (struct.get $struct.A 0 (local.get $x)) + ) + ) +) diff -Nru binaryen-91/test/passes/O.bin.txt binaryen-99/test/passes/O.bin.txt --- binaryen-91/test/passes/O.bin.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/O.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -5,7 +5,7 @@ (export "fac-iter" (func $2)) (export "fac-iter-named" (func $3)) (export "fac-opt" (func $4)) - (func $0 (; 0 ;) (; has Stack IR ;) (param $0 i64) (result i64) + (func $0 (; has Stack IR ;) (param $0 i64) (result i64) (if (result i64) (i64.eqz (local.get $0) @@ -22,7 +22,7 @@ ) ) ) - (func $1 (; 1 ;) (; has Stack IR ;) (param $0 i64) (result i64) + (func $1 (; has Stack IR ;) (param $0 i64) (result i64) (if (result i64) (i64.eqz (local.get $0) @@ -39,10 +39,10 @@ ) ) ) - (func $2 (; 2 ;) (; has Stack IR ;) (param $0 i64) (result i64) + (func $2 (; has Stack IR ;) (param $0 i64) (result i64) (unreachable) ) - (func $3 (; 3 ;) (; has Stack IR ;) (param $0 i64) (result i64) + (func $3 (; has Stack IR ;) (param $0 i64) (result i64) (local $1 i64) (local.set $1 (i64.const 1) @@ -73,7 +73,7 @@ ) (local.get $1) ) - (func $4 (; 4 ;) (; has Stack IR ;) (param $0 i64) (result i64) + (func $4 (; has Stack IR ;) (param $0 i64) (result i64) (local $1 i64) (local.set $1 (i64.const 1) @@ -93,9 +93,9 @@ (br_if $label$3 (i64.gt_s (local.tee $0 - (i64.add + (i64.sub (local.get $0) - (i64.const -1) + (i64.const 1) ) ) (i64.const 1) diff -Nru binaryen-91/test/passes/O_fast-math.txt binaryen-99/test/passes/O_fast-math.txt --- binaryen-91/test/passes/O_fast-math.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/O_fast-math.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,47 @@ +(module + (type $none_=>_f32 (func (result f32))) + (type $f32_=>_f32 (func (param f32) (result f32))) + (type $f64_=>_f64 (func (param f64) (result f64))) + (export "div" (func $0)) + (export "mul1" (func $1)) + (export "mul2" (func $2)) + (export "add1" (func $1)) + (export "add2" (func $2)) + (export "add3" (func $2)) + (export "add4" (func $2)) + (export "sub1" (func $1)) + (export "sub2" (func $2)) + (export "mul_neg_one1" (func $9)) + (export "mul_neg_one2" (func $10)) + (export "abs_sub_zero1" (func $11)) + (export "abs_sub_zero2" (func $12)) + (func $0 (; has Stack IR ;) (result f32) + (f32.const -nan:0x23017a) + ) + (func $1 (; has Stack IR ;) (result f32) + (f32.const -nan:0x34546d) + ) + (func $2 (; has Stack IR ;) (result f32) + (f32.const nan:0x400000) + ) + (func $9 (; has Stack IR ;) (param $0 f32) (result f32) + (f32.neg + (local.get $0) + ) + ) + (func $10 (; has Stack IR ;) (param $0 f64) (result f64) + (f64.neg + (local.get $0) + ) + ) + (func $11 (; has Stack IR ;) (param $0 f32) (result f32) + (f32.abs + (local.get $0) + ) + ) + (func $12 (; has Stack IR ;) (param $0 f64) (result f64) + (f64.abs + (local.get $0) + ) + ) +) diff -Nru binaryen-91/test/passes/O_fast-math.wast binaryen-99/test/passes/O_fast-math.wast --- binaryen-91/test/passes/O_fast-math.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/O_fast-math.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,87 @@ +;; with fast-math we can optimize some of these patterns +(module + (func "div" (result f32) + (f32.div + (f32.const -nan:0x23017a) + (f32.const 1) + ) + ) + (func "mul1" (result f32) + (f32.mul + (f32.const -nan:0x34546d) + (f32.const 1) + ) + ) + (func "mul2" (result f32) + (f32.mul + (f32.const 1) + (f32.const -nan:0x34546d) + ) + ) + (func "add1" (result f32) + (f32.add + (f32.const -nan:0x34546d) + (f32.const -0) + ) + ) + (func "add2" (result f32) + (f32.add + (f32.const -0) + (f32.const -nan:0x34546d) + ) + ) + (func "add3" (result f32) + (f32.add + (f32.const -nan:0x34546d) + (f32.const 0) + ) + ) + (func "add4" (result f32) + (f32.add + (f32.const 0) + (f32.const -nan:0x34546d) + ) + ) + (func "sub1" (result f32) + (f32.sub + (f32.const -nan:0x34546d) + (f32.const 0) + ) + ) + (func "sub2" (result f32) + (f32.sub + (f32.const -nan:0x34546d) + (f32.const -0) + ) + ) + (func "mul_neg_one1" (param $x f32) (result f32) + (f32.mul + (local.get $x) + (f32.const -1) + ) + ) + (func "mul_neg_one2" (param $x f64) (result f64) + (f64.mul + (local.get $x) + (f64.const -1) + ) + ) + (func "abs_sub_zero1" (param $x f32) (result f32) + ;; abs(0 - x) ==> abs(x) + (f32.abs + (f32.sub + (f32.const 0) + (local.get $x) + ) + ) + ) + (func "abs_sub_zero2" (param $x f64) (result f64) + ;; abs(0 - x) ==> abs(x) + (f64.abs + (f64.sub + (f64.const 0) + (local.get $x) + ) + ) + ) +) diff -Nru binaryen-91/test/passes/optimize-added-constants_low-memory-unused.txt binaryen-99/test/passes/optimize-added-constants_low-memory-unused.txt --- binaryen-91/test/passes/optimize-added-constants_low-memory-unused.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/optimize-added-constants_low-memory-unused.txt 2021-01-07 20:01:06.000000000 +0000 @@ -3,7 +3,7 @@ (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (memory $0 1 1) - (func $consts (; 0 ;) + (func $consts (drop (i32.load (i32.const 0) @@ -59,7 +59,7 @@ (i32.const 1) ) ) - (func $offsets (; 1 ;) (param $x i32) + (func $offsets (param $x i32) (drop (i32.load offset=1 (local.get $x) @@ -97,7 +97,7 @@ ) ) ) - (func $load-off-2 (; 2 ;) (param $0 i32) (result i32) + (func $load-off-2 (param $0 i32) (result i32) (i32.store (i32.const 6) (local.get $0) @@ -168,7 +168,7 @@ (local.get $0) ) ) - (func $offset-constant (; 3 ;) + (func $offset-constant (drop (i32.load (i32.const 10) @@ -205,7 +205,7 @@ ) ) ) - (func $offset-propagate-param (; 4 ;) (param $x i32) + (func $offset-propagate-param (param $x i32) (local $y i32) (local.set $x (i32.add @@ -219,7 +219,7 @@ ) ) ) - (func $offset-propagate (; 5 ;) + (func $offset-propagate (local $x i32) (local $y i32) (local.set $x @@ -234,7 +234,7 @@ ) ) ) - (func $offset-propagate2 (; 6 ;) + (func $offset-propagate2 (local $x i32) (local $y i32) (local.set $x @@ -252,7 +252,7 @@ ) ) ) - (func $offset-propagate3 (; 7 ;) + (func $offset-propagate3 (local $x i32) (local $y i32) (local.set $x @@ -267,7 +267,7 @@ ) ) ) - (func $offset-propagate4 (; 8 ;) + (func $offset-propagate4 (local $x i32) (local $y i32) (local.set $y @@ -285,7 +285,7 @@ ) ) ) - (func $offset-propagate5 (; 9 ;) (param $z i32) + (func $offset-propagate5 (param $z i32) (local $x i32) (local $y i32) (if @@ -306,7 +306,7 @@ ) ) ) - (func $offset-propagate6 (; 10 ;) (param $z i32) + (func $offset-propagate6 (param $z i32) (local $x i32) (local $y i32) (local.set $y @@ -327,7 +327,7 @@ ) ) ) - (func $offset-realistic (; 11 ;) (param $ptr i32) + (func $offset-realistic (param $ptr i32) (local $x i32) (local $y i32) (local $z i32) diff -Nru binaryen-91/test/passes/optimize-added-constants-propagate_low-memory-unused.txt binaryen-99/test/passes/optimize-added-constants-propagate_low-memory-unused.txt --- binaryen-91/test/passes/optimize-added-constants-propagate_low-memory-unused.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/optimize-added-constants-propagate_low-memory-unused.txt 2021-01-07 20:01:06.000000000 +0000 @@ -3,7 +3,7 @@ (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) (memory $0 1 1) - (func $consts (; 0 ;) + (func $consts (drop (i32.load (i32.const 0) @@ -59,7 +59,7 @@ (i32.const 1) ) ) - (func $offsets (; 1 ;) (param $x i32) + (func $offsets (param $x i32) (drop (i32.load offset=1 (local.get $x) @@ -97,7 +97,7 @@ ) ) ) - (func $load-off-2 (; 2 ;) (param $0 i32) (result i32) + (func $load-off-2 (param $0 i32) (result i32) (i32.store (i32.const 6) (local.get $0) @@ -168,7 +168,7 @@ (local.get $0) ) ) - (func $offset-constant (; 3 ;) + (func $offset-constant (drop (i32.load (i32.const 10) @@ -205,7 +205,7 @@ ) ) ) - (func $offset-propagate-param (; 4 ;) (param $x i32) + (func $offset-propagate-param (param $x i32) (local $y i32) (nop) (drop @@ -214,7 +214,7 @@ ) ) ) - (func $offset-propagate (; 5 ;) + (func $offset-propagate (local $x i32) (local $y i32) (nop) @@ -224,7 +224,7 @@ ) ) ) - (func $offset-propagate2 (; 6 ;) + (func $offset-propagate2 (local $x i32) (local $y i32) (local.set $x @@ -242,7 +242,7 @@ ) ) ) - (func $offset-propagate3 (; 7 ;) + (func $offset-propagate3 (local $x i32) (local $y i32) (nop) @@ -252,7 +252,7 @@ ) ) ) - (func $offset-propagate4 (; 8 ;) + (func $offset-propagate4 (local $x i32) (local $y i32) (local.set $y @@ -265,7 +265,7 @@ ) ) ) - (func $offset-propagate5 (; 9 ;) (param $z i32) + (func $offset-propagate5 (param $z i32) (local $x i32) (local $y i32) (local $3 i32) @@ -287,7 +287,7 @@ ) ) ) - (func $offset-propagate6 (; 10 ;) (param $z i32) + (func $offset-propagate6 (param $z i32) (local $x i32) (local $y i32) (local $3 i32) @@ -309,7 +309,7 @@ ) ) ) - (func $offset-propagate7 (; 11 ;) (param $z i32) + (func $offset-propagate7 (param $z i32) (local $x i32) (local $y i32) (local.set $y @@ -336,7 +336,7 @@ ) ) ) - (func $offset-realistic (; 12 ;) (param $ptr i32) + (func $offset-realistic (param $ptr i32) (local $x i32) (local $y i32) (local $z i32) @@ -375,7 +375,7 @@ ) ) ) - (func $multiadd (; 13 ;) (param $sp i32) + (func $multiadd (param $sp i32) (local $$vararg_buffer i32) (local $$vararg_ptr1 i32) (nop) @@ -385,7 +385,7 @@ (i32.const 1) ) ) - (func $multiadd-extraUse (; 14 ;) (param $sp i32) + (func $multiadd-extraUse (param $sp i32) (local $$vararg_buffer i32) (local $$vararg_ptr1 i32) (local.set $$vararg_buffer diff -Nru binaryen-91/test/passes/optimize-instructions_all-features.txt binaryen-99/test/passes/optimize-instructions_all-features.txt --- binaryen-91/test/passes/optimize-instructions_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/optimize-instructions_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,22 +1,58 @@ (module (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i64_=>_none (func (param i32 i64))) (type $none_=>_none (func)) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i64_=>_none (func (param i32 i64))) + (type $i32_i32_i64_i64_=>_none (func (param i32 i32 i64 i64))) + (type $i32_i64_f32_f64_=>_none (func (param i32 i64 f32 f64))) (type $none_=>_i64 (func (result i64))) - (type $i32_i64_f32_=>_none (func (param i32 i64 f32))) (type $i64_=>_i64 (func (param i64) (result i64))) + (type $i32_i64_f32_=>_none (func (param i32 i64 f32))) + (type $f32_=>_none (func (param f32))) + (type $f64_=>_none (func (param f64))) + (type $i32_i32_i32_f64_=>_none (func (param i32 i32 i32 f64))) (type $i32_i32_f64_f64_=>_none (func (param i32 i32 f64 f64))) - (type $i32_i64_f32_f64_=>_none (func (param i32 i64 f32 f64))) (type $i32_i64_f64_i32_=>_none (func (param i32 i64 f64 i32))) + (type $f32_f64_=>_none (func (param f32 f64))) + (type $f64_f32_=>_none (func (param f64 f32))) + (type $f64_f64_f32_f32_=>_none (func (param f64 f64 f32 f32))) (type $none_=>_f64 (func (result f64))) - (type $none_=>_anyref (func (result anyref))) (memory $0 0) (export "load-off-2" (func $load-off-2)) - (func $f (; 0 ;) (param $i1 i32) (param $i2 i64) + (func $f (param $i1 i32) (param $i2 i64) + (drop + (i32.and + (local.get $i1) + (i32.const 1) + ) + ) + (drop + (i32.or + (local.get $i1) + (i32.const 3) + ) + ) + (drop + (i32.xor + (local.get $i1) + (i32.const 5) + ) + ) + (drop + (i32.mul + (local.get $i1) + (i32.const -10) + ) + ) + (drop + (i32.mul + (local.get $i1) + (i32.const -133169153) + ) + ) (if (i32.eqz (local.get $i1) @@ -46,25 +82,25 @@ ) ) (drop - (i32.le_s + (i32.le_u (i32.const 1) (i32.const 2) ) ) (drop - (i32.lt_s + (i32.lt_u (i32.const 1) (i32.const 2) ) ) (drop - (i32.ge_s + (i32.ge_u (i32.const 1) (i32.const 2) ) ) (drop - (i32.gt_s + (i32.gt_u (i32.const 1) (i32.const 2) ) @@ -217,18 +253,6 @@ (i32.const 123) (nop) ) - (if - (try (result i32) - (i32.const 123) - (catch - (drop - (exnref.pop) - ) - (i32.const 456) - ) - ) - (nop) - ) (drop (select (i32.const 102) @@ -253,7 +277,7 @@ (i32.const 0) ) ) - (func $load-store (; 1 ;) + (func $load-store (drop (i32.load8_u (i32.const 0) @@ -340,8 +364,64 @@ (i32.const 11) (i64.const 3) ) + (i32.store8 + (i32.const 7) + (i32.const 255) + ) + (i32.store8 + (i32.const 8) + (i32.const 255) + ) + (i32.store8 + (i32.const 9) + (i32.const 0) + ) + (i32.store16 + (i32.const 10) + (i32.const 65535) + ) + (i32.store16 + (i32.const 11) + (i32.const 0) + ) + (i32.store16 + (i32.const 13) + (i32.const 65535) + ) + (i32.store + (i32.const 14) + (i32.const 65536) + ) + (i64.store8 + (i32.const 8) + (i64.const 255) + ) + (i64.store8 + (i32.const 9) + (i64.const 0) + ) + (i64.store16 + (i32.const 10) + (i64.const 65535) + ) + (i64.store16 + (i32.const 11) + (i64.const 0) + ) + (i64.store32 + (i32.const 12) + (i64.const 4294967295) + ) + (i64.store32 + (i32.const 13) + (i64.const 0) + ) + (i64.store + (i32.const 14) + (i64.const 4294967296) + ) ) - (func $and-neg1 (; 2 ;) + (func $and-neg1 (drop (i32.const 100) ) @@ -352,7 +432,7 @@ ) ) ) - (func $and-pos1 (; 3 ;) + (func $and-pos1 (drop (i32.eqz (i32.const 1000) @@ -370,13 +450,13 @@ ) ) (drop - (i32.lt_s + (i32.lt_u (i32.const 2000) (i32.const 3000) ) ) ) - (func $canonicalize (; 4 ;) (param $x i32) (param $y i32) (param $fx f64) (param $fy f64) + (func $canonicalize (param $x i32) (param $y i32) (param $fx f64) (param $fy f64) (drop (i32.and (unreachable) @@ -449,7 +529,7 @@ ) (drop (i32.and - (block $block4 (result i32) + (block $block3 (result i32) (i32.const -6) ) (local.get $x) @@ -457,7 +537,7 @@ ) (drop (i32.and - (block $block5 (result i32) + (block $block4 (result i32) (i32.const 5) ) (loop $loop-in (result i32) @@ -467,20 +547,20 @@ ) (drop (i32.and - (block $block7 (result i32) + (block $block6 (result i32) (i32.const 8) ) - (loop $loop-in6 (result i32) + (loop $loop-in5 (result i32) (i32.const 7) ) ) ) (drop (i32.and - (block $block9 (result i32) + (block $block8 (result i32) (i32.const 10) ) - (loop $loop-in8 (result i32) + (loop $loop-in7 (result i32) (call $and-pos1) (i32.const 9) ) @@ -488,22 +568,22 @@ ) (drop (i32.and - (block $block11 (result i32) + (block $block10 (result i32) (call $and-pos1) (i32.const 12) ) - (loop $loop-in10 (result i32) + (loop $loop-in9 (result i32) (i32.const 11) ) ) ) (drop (i32.and - (loop $loop-in12 (result i32) + (loop $loop-in11 (result i32) (call $and-pos1) (i32.const 13) ) - (block $block13 (result i32) + (block $block12 (result i32) (call $and-pos1) (i32.const 14) ) @@ -511,11 +591,11 @@ ) (drop (i32.and - (block $block14 (result i32) + (block $block13 (result i32) (call $and-pos1) (i32.const 14) ) - (loop $loop-in15 (result i32) + (loop $loop-in14 (result i32) (call $and-pos1) (i32.const 13) ) @@ -523,7 +603,7 @@ ) (drop (i32.and - (block $block16 (result i32) + (block $block15 (result i32) (i32.const 15) ) (local.get $x) @@ -531,7 +611,7 @@ ) (drop (i32.and - (block $block17 (result i32) + (block $block16 (result i32) (i32.const 15) ) (local.get $x) @@ -539,7 +619,7 @@ ) (drop (i32.and - (i32.gt_s + (i32.gt_u (i32.const 16) (i32.const 17) ) @@ -551,14 +631,59 @@ ) (drop (i32.and - (i32.gt_s - (i32.const 22) - (i32.const 23) - ) (i32.gt_u (i32.const 20) (i32.const 21) ) + (i32.gt_u + (i32.const 22) + (i32.const 23) + ) + ) + ) + (drop + (i32.lt_s + (local.get $x) + (i32.const 1) + ) + ) + (drop + (i32.const 0) + ) + (drop + (i32.ne + (local.get $x) + (i32.const -1) + ) + ) + (drop + (f64.ne + (local.get $fx) + (f64.const -1) + ) + ) + (drop + (f64.gt + (local.get $fx) + (f64.const -2) + ) + ) + (drop + (f64.le + (local.get $fx) + (f64.const inf) + ) + ) + (drop + (f64.ge + (local.get $fx) + (f64.const nan:0x8000000000000) + ) + ) + (drop + (f64.ge + (f64.const 1) + (f64.const 2) ) ) (drop @@ -602,7 +727,7 @@ ) ) ) - (func $ne0 (; 5 ;) (result i32) + (func $ne0 (result i32) (if (call $ne0) (nop) @@ -633,7 +758,7 @@ ) (i32.const 1) ) - (func $recurse-bool (; 6 ;) + (func $recurse-bool (if (if (result i32) (i32.const 1) @@ -650,10 +775,10 @@ (nop) ) ) - (func $ne1 (; 7 ;) (result i32) + (func $ne1 (result i32) (unreachable) ) - (func $load-off-2 (; 8 ;) (param $0 i32) (result i32) + (func $load-off-2 (param $0 i32) (result i32) (i32.store (i32.const 6) (local.get $0) @@ -677,16 +802,16 @@ (local.get $0) ) (i32.store offset=2 - (i32.add + (i32.sub (local.get $0) - (i32.const -11) + (i32.const 11) ) (local.get $0) ) (i32.store offset=2 - (i32.add + (i32.sub (local.get $0) - (i32.const -13) + (i32.const 13) ) (local.get $0) ) @@ -736,7 +861,7 @@ ) ) ) - (func $sign-ext (; 9 ;) (param $0 i32) (param $1 i32) + (func $sign-ext (param $0 i32) (param $1 i32) (drop (i32.eqz (i32.and @@ -771,21 +896,19 @@ ) ) (drop - (i32.eq - (i32.and + (block (result i32) + (drop (local.get $0) - (i32.const 255) ) - (i32.const -2147483648) + (i32.const 0) ) ) (drop - (i32.eq - (i32.and + (block (result i32) + (drop (local.get $0) - (i32.const 255) ) - (i32.const 107) + (i32.const 0) ) ) (drop @@ -846,8 +969,21 @@ (i32.const 0) ) ) + (drop + (if (result i32) + (i32.shr_s + (i32.shl + (unreachable) + (i32.const 16) + ) + (i32.const 16) + ) + (i32.const 111) + (i32.const 222) + ) + ) ) - (func $sign-ext-input (; 10 ;) (param $0 i32) (param $1 i32) + (func $sign-ext-input (param $0 i32) (param $1 i32) (drop (i32.const 100) ) @@ -882,15 +1018,9 @@ ) ) (drop - (i32.shr_s - (i32.shl - (i32.div_s - (i32.const 1) - (i32.const 2) - ) - (i32.const 24) - ) - (i32.const 24) + (i32.shr_u + (i32.const 1) + (i32.const 1) ) ) (drop @@ -992,13 +1122,13 @@ (drop (i32.shr_u (i32.const 128) - (i32.const 35) + (i32.const 3) ) ) (drop (i32.shr_s (i32.shl - (i32.shr_s + (i32.shr_u (i32.const 256) (i32.const 1) ) @@ -1008,31 +1138,28 @@ ) ) (drop - (i32.shr_s + (i32.shr_u (i32.const 256) (i32.const 2) ) ) (drop - (i32.shr_s + (i32.shr_u (i32.const 128) - (i32.const 35) + (i32.const 3) ) ) (drop (i32.shr_s (i32.shl - (i32.shr_s - (i32.const -1) - (i32.const 32) - ) + (i32.const -1) (i32.const 24) ) (i32.const 24) ) ) (drop - (i32.shr_s + (i32.shr_u (i32.and (i32.const -1) (i32.const 2147483647) @@ -1178,7 +1305,7 @@ ) ) ) - (func $linear-sums (; 11 ;) (param $0 i32) (param $1 i32) + (func $linear-sums (param $0 i32) (param $1 i32) (drop (i32.add (i32.shl @@ -1237,12 +1364,12 @@ ) ) (drop - (i32.add + (i32.sub (i32.shl (local.get $1) (i32.const 3) ) - (i32.const -66) + (i32.const 66) ) ) (drop @@ -1270,7 +1397,7 @@ (local.get $0) ) ) - (func $almost-sign-ext (; 12 ;) (param $0 i32) + (func $almost-sign-ext (param $0 i32) (drop (i32.shr_s (i32.shl @@ -1287,7 +1414,7 @@ ) ) ) - (func $squaring (; 13 ;) (param $0 i32) (param $1 i32) + (func $squaring (param $0 i32) (param $1 i32) (drop (i32.and (local.get $0) @@ -1297,10 +1424,7 @@ (drop (i32.and (local.get $0) - (i32.and - (local.get $0) - (i32.const 11) - ) + (i32.const 11) ) ) (drop @@ -1339,36 +1463,33 @@ (local.get $0) (i32.const 11) ) - (i32.const 200) + (i32.const 8) ) ) ) - (func $sign-ext-ne (; 14 ;) (param $0 i32) (param $1 i32) + (func $sign-ext-ne (param $0 i32) (param $1 i32) (drop - (i32.ne - (i32.and + (block (result i32) + (drop (local.get $0) - (i32.const 255) ) - (i32.const -2147483648) + (i32.const 1) ) ) (drop - (i32.ne - (i32.and + (block (result i32) + (drop (local.get $0) - (i32.const 255) ) - (i32.const -2147483648) + (i32.const 1) ) ) (drop - (i32.ne - (i32.and + (block (result i32) + (drop (local.get $0) - (i32.const 255) ) - (i32.const 107) + (i32.const 1) ) ) (drop @@ -1393,7 +1514,7 @@ ) ) ) - (func $sign-ext-eqz (; 15 ;) (param $0 i32) (param $1 i32) + (func $sign-ext-eqz (param $0 i32) (param $1 i32) (drop (i32.eqz (i32.and @@ -1403,7 +1524,7 @@ ) ) ) - (func $sign-ext-boolean (; 16 ;) (param $0 i32) (param $1 i32) + (func $sign-ext-boolean (param $0 i32) (param $1 i32) (drop (if (result i32) (i32.and @@ -1415,15 +1536,21 @@ ) ) ) - (func $add-sub-zero (; 17 ;) (param $0 i32) (param $1 i32) + (func $add-sub-zero (param $0 i32) (param $1 i64) (drop (local.get $0) ) (drop (local.get $0) ) + (drop + (local.get $1) + ) + (drop + (local.get $1) + ) ) - (func $store-signext (; 18 ;) (param $0 i32) + (func $store-signext (param $0 i32) (i32.store8 (i32.const 8) (local.get $0) @@ -1481,7 +1608,7 @@ ) ) ) - (func $sign-ext-tee (; 19 ;) (param $0 i32) (param $1 i32) + (func $sign-ext-tee (param $0 i32) (param $1 i32) (drop (i32.shr_s (i32.shl @@ -1499,7 +1626,7 @@ ) ) ) - (func $sign-ext-load (; 20 ;) (param $0 i32) (param $1 i32) + (func $sign-ext-load (param $0 i32) (param $1 i32) (drop (i32.load8_s (i32.const 256) @@ -1570,7 +1697,7 @@ ) ) ) - (func $mask-bits (; 21 ;) (param $0 i32) (param $1 i32) + (func $mask-bits (param $0 i32) (param $1 i32) (drop (local.tee $0 (i32.const 127) @@ -1624,7 +1751,7 @@ ) ) ) - (func $local-info-zero-ext (; 22 ;) (param $0 i32) (param $1 i32) + (func $local-info-zero-ext (param $0 i32) (param $1 i32) (local $x i32) (local $y i32) (local $z i32) @@ -1675,7 +1802,7 @@ ) ) ) - (func $local-info-sign-ext-bitsize (; 23 ;) (param $0 i32) (param $1 i32) + (func $local-info-sign-ext-bitsize (param $0 i32) (param $1 i32) (local $x i32) (local $y i32) (local $z i32) @@ -1735,7 +1862,7 @@ ) ) ) - (func $local-info-sign-ext-already-exted (; 24 ;) (param $0 i32) (param $1 i32) + (func $local-info-sign-ext-already-exted (param $0 i32) (param $1 i32) (local $x i32) (local $y i32) (local $z i32) @@ -1846,7 +1973,7 @@ ) ) ) - (func $signed-loads-fill-the-bits (; 25 ;) (param $$e i32) (result i32) + (func $signed-loads-fill-the-bits (param $$e i32) (result i32) (local $$0 i32) (local $$conv i32) (local.set $$0 @@ -1867,7 +1994,7 @@ ) ) ) - (func $local-info-sign-ext-already-exted-by-load (; 26 ;) (param $0 i32) (param $1 i32) + (func $local-info-sign-ext-already-exted-by-load (param $0 i32) (param $1 i32) (local $x i32) (local $y i32) (local $z i32) @@ -1909,7 +2036,7 @@ ) ) ) - (func $compare-load-s-sign-extend (; 27 ;) (param $0 i32) (param $1 i32) + (func $compare-load-s-sign-extend (param $0 i32) (param $1 i32) (drop (i32.eq (i32.load8_u @@ -1989,7 +2116,7 @@ ) ) ) - (func $unsign-diff-sizes (; 28 ;) (param $x i32) (param $y i32) (result i32) + (func $unsign-diff-sizes (param $x i32) (param $y i32) (result i32) (i32.ne (i32.shr_s (i32.shl @@ -2013,7 +2140,7 @@ ) ) ) - (func $unsign-same-sizes (; 29 ;) (param $x i32) (param $y i32) (result i32) + (func $unsign-same-sizes (param $x i32) (param $y i32) (result i32) (i32.ne (i32.and (call $unsign-same-sizes @@ -2031,7 +2158,7 @@ ) ) ) - (func $fuzz-almost-sign-ext (; 30 ;) + (func $fuzz-almost-sign-ext (drop (i32.shr_s (i32.shl @@ -2055,23 +2182,21 @@ ) ) ) - (func $fuzz-comp-impossible (; 31 ;) (param $x i32) + (func $fuzz-comp-impossible (param $x i32) (drop - (i32.eq - (i32.and + (block (result i32) + (drop (local.get $x) - (i32.const 65535) ) - (i32.const -2147483648) + (i32.const 0) ) ) (drop - (i32.eq - (i32.and + (block (result i32) + (drop (local.get $x) - (i32.const 255) ) - (i32.const -2147483648) + (i32.const 0) ) ) (drop @@ -2084,30 +2209,27 @@ ) ) (drop - (i32.eq - (i32.and + (block (result i32) + (drop (local.get $x) - (i32.const 255) ) - (i32.const -2147483648) + (i32.const 0) ) ) (drop - (i32.eq - (i32.and + (block (result i32) + (drop (local.get $x) - (i32.const 255) ) - (i32.const -2147483648) + (i32.const 0) ) ) (drop - (i32.eq - (i32.and + (block (result i32) + (drop (local.get $x) - (i32.const 255) ) - (i32.const -2147483648) + (i32.const 0) ) ) (drop @@ -2120,7 +2242,7 @@ ) ) ) - (func $if-parallel (; 32 ;) (param $0 i32) (param $1 i32) + (func $if-parallel (param $0 i32) (param $1 i32) (drop (i32.add (local.get $1) @@ -2175,7 +2297,7 @@ ) ) ) - (func $select-parallel (; 33 ;) (param $0 i32) (param $1 i32) + (func $select-parallel (param $0 i32) (param $1 i32) (drop (i32.add (local.get $1) @@ -2231,7 +2353,7 @@ ) ) ) - (func $zero-shifts-is-not-sign-ext (; 34 ;) + (func $zero-shifts-is-not-sign-ext (drop (i32.eq (i32.load16_s align=1 @@ -2252,7 +2374,7 @@ ) ) ) - (func $zero-ops (; 35 ;) (result i32) + (func $zero-ops (result i32) (return (i32.eq (i32.load16_s align=1 @@ -2262,64 +2384,74 @@ ) ) ) - (func $sign-ext-1-and-ne (; 36 ;) (result i32) - (i32.ne - (i32.and - (call $sign-ext-1-and-ne) - (i32.const 2147483647) + (func $zero-ops-64 (result i32) + (return + (i64.eq + (i64.load16_s align=1 + (i32.const 790656516) + ) + (i64.const -1337) ) - (i32.const -2147483648) ) ) - (func $neg-shifts-and-255 (; 37 ;) (result i32) - (i32.and - (i32.shr_u - (i32.const -99) - (i32.const -32) + (func $zero-ops-64-special (result i32) + (return + (i32.wrap_i64 + (i64.popcnt + (i64.const 7377) + ) ) + ) + ) + (func $sign-ext-1-and-ne (result i32) + (drop + (call $sign-ext-1-and-ne) + ) + (i32.const 1) + ) + (func $neg-shifts-and-255 (result i32) + (i32.and + (i32.const -99) (i32.const 255) ) ) - (func $neg-shifts-and-255-b (; 38 ;) (result i32) + (func $neg-shifts-and-255-b (result i32) (i32.and - (i32.shl - (i32.const -2349025) - (i32.const -32) - ) + (i32.const -2349025) (i32.const 255) ) ) - (func $shifts-square-overflow (; 39 ;) (param $x i32) (result i32) + (func $shifts-square-overflow (param $x i32) (result i32) (i32.shr_u (i32.shr_u (local.get $x) - (i32.const 65535) + (i32.const 31) ) - (i32.const 32767) + (i32.const 31) ) ) - (func $shifts-square-no-overflow-small (; 40 ;) (param $x i32) (result i32) + (func $shifts-square-no-overflow-small (param $x i32) (result i32) (i32.shr_u (local.get $x) (i32.const 9) ) ) - (func $shifts-square-overflow-64 (; 41 ;) (param $x i64) (result i64) + (func $shifts-square-overflow-64 (param $x i64) (result i64) (i64.shr_u (i64.shr_u (local.get $x) - (i64.const 65535) + (i64.const 63) ) - (i64.const 64767) + (i64.const 63) ) ) - (func $shifts-square-no-overflow-small-64 (; 42 ;) (param $x i64) (result i64) + (func $shifts-square-no-overflow-small-64 (param $x i64) (result i64) (i64.shr_u (local.get $x) (i64.const 9) ) ) - (func $shifts-square-unreachable (; 43 ;) (param $x i32) (result i32) + (func $shifts-square-unreachable (param $x i32) (result i32) (i32.shr_u (i32.shr_u (unreachable) @@ -2328,22 +2460,22 @@ (i32.const 4098) ) ) - (func $mix-shifts (; 44 ;) (result i32) - (i32.shr_s + (func $mix-shifts (result i32) + (i32.shr_u (i32.shl (i32.const 23) - (i32.const -61) + (i32.const 3) ) - (i32.const 168) + (i32.const 8) ) ) - (func $actually-no-shifts (; 45 ;) (result i32) + (func $actually-no-shifts (result i32) (i32.const 33) ) - (func $less-shifts-than-it-seems (; 46 ;) (param $x i32) (result i32) + (func $less-shifts-than-it-seems (param $x i32) (result i32) (i32.const 4800) ) - (func $and-popcount32 (; 47 ;) (result i32) + (func $and-popcount32 (result i32) (i32.and (i32.popcnt (i32.const -1) @@ -2351,12 +2483,12 @@ (i32.const 31) ) ) - (func $and-popcount32-big (; 48 ;) (result i32) + (func $and-popcount32-big (result i32) (i32.popcnt (i32.const -1) ) ) - (func $and-popcount64 (; 49 ;) (result i64) + (func $and-popcount64 (result i64) (i64.and (i64.popcnt (i64.const -1) @@ -2364,7 +2496,7 @@ (i64.const 63) ) ) - (func $and-popcount64-big (; 50 ;) (result i64) + (func $and-popcount64-big (result i64) (i64.and (i64.popcnt (i64.const -1) @@ -2372,7 +2504,7 @@ (i64.const 127) ) ) - (func $and-popcount64-bigger (; 51 ;) (result i64) + (func $and-popcount64-bigger (result i64) (i64.and (i64.popcnt (i64.const -1) @@ -2380,29 +2512,29 @@ (i64.const 255) ) ) - (func $optimizeAddedConstants-filters-through-nonzero (; 52 ;) (result i32) - (i32.add + (func $optimizeAddedConstants-filters-through-nonzero (result i32) + (i32.sub (i32.shl (i32.const -536870912) (i32.wrap_i64 (i64.const 0) ) ) - (i32.const -31744) + (i32.const 31744) ) ) - (func $optimizeAddedConstants-filters-through-nonzero-b (; 53 ;) (result i32) - (i32.add + (func $optimizeAddedConstants-filters-through-nonzero-b (result i32) + (i32.sub (i32.shl (i32.const -536870912) (i32.wrap_i64 (i64.const -1) ) ) - (i32.const -31744) + (i32.const 31744) ) ) - (func $return-proper-value-from-shift-left-by-zero (; 54 ;) (result i32) + (func $return-proper-value-from-shift-left-by-zero (result i32) (if (result i32) (i32.add (loop $label$0 (result i32) @@ -2421,7 +2553,7 @@ (i32.const 0) ) ) - (func $de-morgan-2 (; 55 ;) (param $x i32) (param $y i32) + (func $de-morgan-2 (param $x i32) (param $y i32) (drop (i32.eqz (i32.or @@ -2487,7 +2619,7 @@ ) ) ) - (func $subzero1 (; 56 ;) (param $0 i32) (result i32) + (func $subzero1 (param $0 i32) (result i32) (i32.sub (i32.const 32) (i32.clz @@ -2495,7 +2627,7 @@ ) ) ) - (func $subzero2 (; 57 ;) (param $0 i32) (result i32) + (func $subzero2 (param $0 i32) (result i32) (i32.sub (i32.const 32) (i32.clz @@ -2503,7 +2635,7 @@ ) ) ) - (func $subzero3 (; 58 ;) (param $0 i32) (param $1 i32) (result i32) + (func $subzero3 (param $0 i32) (param $1 i32) (result i32) (i32.sub (local.get $1) (i32.clz @@ -2511,7 +2643,7 @@ ) ) ) - (func $subzero4 (; 59 ;) (param $0 i32) (param $1 i32) (result i32) + (func $subzero4 (param $0 i32) (param $1 i32) (result i32) (i32.sub (local.get $0) (i32.clz @@ -2519,9 +2651,9 @@ ) ) ) - (func $mul-power-2 (; 60 ;) (param $x i32) (result i32) + (func $mul-32-power-2 (param $x i32) (result i32) (drop - (call $mul-power-2 + (call $mul-32-power-2 (i32.shl (local.get $x) (i32.const 2) @@ -2529,7 +2661,7 @@ ) ) (drop - (call $mul-power-2 + (call $mul-32-power-2 (i32.mul (local.get $x) (i32.const 5) @@ -2537,19 +2669,19 @@ ) ) (drop - (call $mul-power-2 + (call $mul-32-power-2 (local.get $x) ) ) (drop - (call $mul-power-2 + (call $mul-32-power-2 (i32.const 0) ) ) (drop - (call $mul-power-2 + (call $mul-32-power-2 (i32.mul - (call $mul-power-2 + (call $mul-32-power-2 (i32.const 123) ) (i32.const 0) @@ -2557,15 +2689,15 @@ ) ) (drop - (call $mul-power-2 - (i32.mul + (call $mul-32-power-2 + (i32.sub + (i32.const 0) (local.get $x) - (i32.const -1) ) ) ) (drop - (call $mul-power-2 + (call $mul-32-power-2 (i32.shl (local.get $x) (i32.const 31) @@ -2574,482 +2706,2387 @@ ) (unreachable) ) - (func $urem-power-2 (; 61 ;) (param $x i32) (result i32) + (func $mul-64-power-2 (param $x i64) (result i64) (drop - (call $urem-power-2 - (i32.and + (call $mul-64-power-2 + (i64.shl (local.get $x) - (i32.const 3) + (i64.const 2) ) ) ) (drop - (call $urem-power-2 - (i32.rem_u + (call $mul-64-power-2 + (i64.mul (local.get $x) - (i32.const 5) + (i64.const 5) ) ) ) (drop - (call $urem-power-2 - (i32.const 0) + (call $mul-64-power-2 + (local.get $x) ) ) (drop - (call $urem-power-2 - (i32.rem_u - (local.get $x) - (i32.const 0) + (call $mul-64-power-2 + (i64.const 0) + ) + ) + (drop + (call $mul-64-power-2 + (i64.mul + (call $mul-64-power-2 + (i64.const 123) + ) + (i64.const 0) ) ) ) (drop - (call $urem-power-2 - (i32.rem_u + (call $mul-64-power-2 + (i64.sub + (i64.const 0) (local.get $x) - (i32.const -1) ) ) ) (drop - (call $urem-power-2 - (i32.and + (call $mul-64-power-2 + (i64.shl (local.get $x) - (i32.const 2147483647) + (i64.const 63) ) ) ) (unreachable) ) - (func $orZero (; 62 ;) (param $0 i32) (result i32) - (local.get $0) - ) - (func $andZero (; 63 ;) (param $0 i32) (result i32) + (func $div-32-power-2 (param $x i32) (result i32) (drop - (i32.const 0) + (call $div-32-power-2 + (i32.shr_u + (local.get $x) + (i32.const 2) + ) + ) ) (drop - (i32.and - (call $andZero - (i32.const 1234) + (call $div-32-power-2 + (i32.div_u + (local.get $x) + (i32.const 5) ) - (i32.const 0) ) ) - (unreachable) - ) - (func $abstract-additions (; 64 ;) (param $x32 i32) (param $x64 i64) (param $y32 f32) (param $y64 f64) (drop - (local.get $x32) + (call $div-32-power-2 + (local.get $x) + ) ) (drop - (local.get $x32) + (call $div-32-power-2 + (i32.div_u + (local.get $x) + (i32.const 0) + ) + ) ) (drop - (local.get $x32) + (call $div-32-power-2 + (i32.div_u + (call $div-32-power-2 + (i32.const 123) + ) + (i32.const 0) + ) + ) ) (drop - (local.get $x32) + (call $div-32-power-2 + (i32.eq + (local.get $x) + (i32.const -1) + ) + ) ) (drop - (local.get $x64) + (call $div-32-power-2 + (i32.shr_u + (local.get $x) + (i32.const 31) + ) + ) ) + (unreachable) + ) + (func $urem-32-power-2 (param $x i32) (result i32) (drop - (local.get $x64) + (call $urem-32-power-2 + (i32.and + (local.get $x) + (i32.const 3) + ) + ) ) (drop - (local.get $x64) + (call $urem-32-power-2 + (i32.rem_u + (local.get $x) + (i32.const 5) + ) + ) ) (drop - (local.get $x64) + (call $urem-32-power-2 + (i32.const 0) + ) ) (drop - (i32.const 0) + (call $urem-32-power-2 + (i32.rem_u + (local.get $x) + (i32.const 0) + ) + ) ) (drop - (i64.const 0) + (call $urem-32-power-2 + (i32.rem_u + (local.get $x) + (i32.const -1) + ) + ) ) (drop - (f32.mul - (local.get $y32) - (f32.const 0) + (call $urem-32-power-2 + (i32.and + (local.get $x) + (i32.const 2147483647) + ) ) ) (drop - (f64.mul - (local.get $y64) - (f64.const 0) + (call $urem-32-power-2 + (i32.const 0) ) ) + (unreachable) + ) + (func $fdiv-32-power-2 (param $x f32) (drop - (local.get $x32) + (f32.mul + (local.get $x) + (f32.const 0.5) + ) ) (drop - (local.get $x64) + (f32.mul + (local.get $x) + (f32.const -0.5) + ) ) (drop - (local.get $y32) + (f32.mul + (local.get $x) + (f32.const 2.3283064365386963e-10) + ) ) (drop - (local.get $y64) + (f32.mul + (local.get $x) + (f32.const 5.421010862427522e-20) + ) ) (drop - (i32.const 0) + (f32.mul + (local.get $x) + (f32.const 8507059173023461586584365e13) + ) ) (drop - (i64.const 0) + (f32.mul + (local.get $x) + (f32.const 1.1754943508222875e-38) + ) ) (drop - (i32.and - (unreachable) - (i32.const 0) + (f32.mul + (local.get $x) + (f32.const -8507059173023461586584365e13) ) ) (drop - (i64.and - (unreachable) - (i64.const 0) + (f32.mul + (local.get $x) + (f32.const -1.1754943508222875e-38) ) ) (drop - (local.get $x32) + (f32.div + (local.get $x) + (f32.const 5.877471754111438e-39) + ) ) (drop - (local.get $x32) + (f32.div + (local.get $x) + (f32.const 5.877471754111438e-39) + ) ) (drop - (local.get $x64) + (f32.div + (local.get $x) + (f32.const 0) + ) ) (drop - (local.get $x64) + (f32.div + (local.get $x) + (f32.const nan:0x400000) + ) ) (drop - (local.get $y32) + (f32.div + (local.get $x) + (f32.const inf) + ) ) (drop - (local.get $y64) + (f32.div + (local.get $x) + (f32.const -inf) + ) ) + ) + (func $fdiv-64-power-2 (param $x f64) (drop - (f32.div - (local.get $y32) - (f32.const 1.2000000476837158) + (f64.mul + (local.get $x) + (f64.const 0.5) ) ) (drop - (i32.mul - (local.get $x32) - (i32.const -1) + (f64.mul + (local.get $x) + (f64.const -0.5) ) ) (drop - (i64.mul - (local.get $x64) - (i64.const -1) + (f64.mul + (local.get $x) + (f64.const 2.3283064365386963e-10) ) ) (drop - (f32.mul - (local.get $y32) - (f32.const -1) + (f64.mul + (local.get $x) + (f64.const 5.421010862427522e-20) ) ) (drop (f64.mul - (local.get $y64) - (f64.const -1) + (local.get $x) + (f64.const 4494232837155789769323262e283) ) ) (drop - (i32.eq - (local.get $x32) - (i32.const 10) + (f64.mul + (local.get $x) + (f64.const 2.2250738585072014e-308) ) ) (drop - (i32.le_u - (i32.add - (local.get $x32) - (i32.const 10) - ) - (i32.const 20) + (f64.mul + (local.get $x) + (f64.const -4494232837155789769323262e283) ) ) (drop - (i32.eq - (local.get $x32) - (i32.const 30) + (f64.mul + (local.get $x) + (f64.const -2.2250738585072014e-308) ) ) (drop - (i64.eq - (local.get $x64) - (i64.const 10) + (f64.div + (local.get $x) + (f64.const 1.1125369292536007e-308) ) ) (drop - (i32.eq - (local.get $x32) - (i32.const 10) + (f64.div + (local.get $x) + (f64.const 8988465674311579538646525e283) ) ) (drop - (i32.eq - (i32.add - (local.get $x32) - (i32.const 10) - ) - (local.get $x32) + (f64.div + (local.get $x) + (f64.const 0) ) ) (drop - (i32.eq - (local.get $x32) - (i32.const 30) + (f64.div + (local.get $x) + (f64.const nan:0x8000000000000) ) ) (drop - (i32.eq - (i32.sub - (local.get $x32) - (i32.const 30) - ) - (local.get $x32) + (f64.div + (local.get $x) + (f64.const inf) ) ) (drop - (i32.eq - (i32.sub - (local.get $x32) - (i32.const 30) - ) - (local.get $x32) + (f64.div + (local.get $x) + (f64.const -inf) ) ) + ) + (func $srem-by-const (param $x i32) (param $y i64) (drop - (i32.eq - (i32.sub - (local.get $x32) - (i32.const 10) - ) - (local.get $x32) - ) + (i32.const 0) ) (drop - (i64.le_s - (i64.sub - (local.get $x64) - (i64.const 288230376151711744) - ) - (i64.const 9223372036854775807) - ) + (i64.const 0) ) - ) - (func $negatives-are-sometimes-better (; 65 ;) (param $x i32) (param $y i64) (param $z f32) (drop - (i32.sub + (i32.rem_s (local.get $x) - (i32.const -64) + (i32.const -2147483648) ) ) (drop - (i32.add - (local.get $x) - (i32.const -64) + (i64.rem_s + (local.get $y) + (i64.const -9223372036854775808) ) ) + ) + (func $srem-by-pot-eq-ne-zero (param $x i32) (param $y i64) (drop - (i32.sub - (local.get $x) - (i32.const -8192) + (i32.eqz + (i32.and + (local.get $x) + (i32.const 3) + ) ) ) (drop - (i32.sub - (local.get $x) - (i32.const -1048576) + (i64.eqz + (i64.and + (local.get $y) + (i64.const 3) + ) ) ) (drop - (i32.sub - (local.get $x) - (i32.const -134217728) + (i32.eqz + (i32.and + (local.get $x) + (i32.const 3) + ) ) ) (drop - (i64.sub - (local.get $y) - (i64.const -64) + (i64.eqz + (i64.and + (local.get $y) + (i64.const 3) + ) ) ) (drop - (i64.add - (local.get $y) - (i64.const -64) + (i32.eqz + (i32.and + (local.get $x) + (i32.const 3) + ) ) ) (drop - (i64.sub - (local.get $y) - (i64.const -8192) + (i64.eqz + (i64.and + (local.get $y) + (i64.const 1) + ) ) ) (drop - (i64.sub - (local.get $y) - (i64.const -1048576) + (i32.eqz + (i32.and + (local.get $x) + (i32.const 3) + ) ) ) (drop - (i64.sub - (local.get $y) - (i64.const -134217728) + (i64.eqz + (i64.and + (local.get $y) + (i64.const 3) + ) ) ) (drop - (i64.sub - (local.get $y) - (i64.const -17179869184) + (i32.and + (local.get $x) + (i32.const 1) ) ) (drop - (i64.sub - (local.get $y) - (i64.const -2199023255552) + (i32.wrap_i64 + (i64.and + (local.get $y) + (i64.const 1) + ) ) ) (drop - (i64.sub - (local.get $y) - (i64.const -281474976710656) + (i32.eqz + (i32.const 0) ) ) (drop - (i64.sub - (local.get $y) - (i64.const -36028797018963968) + (i32.eqz + (i32.and + (local.get $x) + (i32.const 2147483647) + ) ) ) (drop - (i64.sub - (local.get $y) - (i64.const -4611686018427387904) + (i32.ne + (i32.and + (local.get $x) + (i32.const 2147483647) + ) + (i32.const 0) ) ) (drop - (f32.add - (local.get $z) - (f32.const 64) + (i64.eqz + (i64.and + (local.get $y) + (i64.const 9223372036854775807) + ) ) ) - ) - (func $shift-a-zero (; 66 ;) (param $x i32) (param $y i64) (param $z f32) (drop - (i32.const 0) + (i64.ne + (i64.and + (local.get $y) + (i64.const 9223372036854775807) + ) + (i64.const 0) + ) ) (drop - (i32.const 0) + (i32.eqz + (i32.rem_s + (local.get $x) + (i32.const 3) + ) + ) ) (drop - (i32.const 0) + (i64.eqz + (i64.rem_s + (local.get $y) + (i64.const 3) + ) + ) ) + ) + (func $orZero (param $0 i32) (result i32) + (local.get $0) + ) + (func $andZero (param $0 i32) (result i32) (drop - (i64.const 0) + (i32.const 0) ) (drop - (i32.shl + (i32.and + (call $andZero + (i32.const 1234) + ) (i32.const 0) - (unreachable) ) ) + (unreachable) ) - (func $identical-siblings (; 67 ;) (param $x i32) (param $y i64) (param $z f64) (param $xx i32) + (func $abstract-additions (param $x32 i32) (param $x64 i64) (param $y32 f32) (param $y64 f64) (drop - (i32.const 0) + (local.get $x32) ) (drop - (i64.const 0) + (local.get $x32) ) (drop - (f64.sub - (local.get $z) - (local.get $z) - ) + (local.get $x32) ) (drop - (i32.sub - (local.get $x) - (local.get $xx) - ) + (local.get $x32) ) (drop - (i32.sub - (unreachable) - (unreachable) - ) + (local.get $x64) ) (drop - (i32.add - (local.get $x) - (local.get $x) - ) + (local.get $x64) ) (drop - (i32.const 0) + (local.get $x64) ) (drop - (i32.const 0) + (local.get $x64) ) (drop (i32.const 0) ) (drop - (i32.const 0) + (i64.const 0) ) (drop - (i32.const 0) + (f32.mul + (local.get $y32) + (f32.const 0) + ) ) (drop - (i32.const 0) + (f64.mul + (local.get $y64) + (f64.const 0) + ) ) (drop - (local.get $x) + (local.get $x32) ) (drop - (local.get $x) + (local.get $x64) ) (drop - (i32.const 1) + (f32.mul + (local.get $y32) + (f32.const 1) + ) ) (drop - (i32.const 1) + (f64.mul + (local.get $y64) + (f64.const 1) + ) ) (drop - (i32.const 1) + (i32.const 0) ) (drop - (i32.const 1) + (i64.const 0) ) (drop - (i32.const 1) + (i32.and + (unreachable) + (i32.const 0) + ) ) (drop - (i64.const 0) + (i64.and + (unreachable) + (i64.const 0) + ) ) (drop - (i32.const 0) + (local.get $x32) ) (drop - (i32.const 0) + (local.get $x32) ) (drop - (i32.const 0) + (local.get $x64) ) (drop - (i32.const 0) + (local.get $x64) + ) + (drop + (f32.mul + (local.get $y32) + (f32.const 1) + ) + ) + (drop + (f64.mul + (local.get $y64) + (f64.const 1) + ) + ) + (drop + (f32.div + (local.get $y32) + (f32.const 1.2000000476837158) + ) + ) + (drop + (i32.sub + (i32.const 0) + (local.get $x32) + ) + ) + (drop + (i64.sub + (i64.const 0) + (local.get $x64) + ) + ) + (drop + (f32.sub + (f32.const -0) + (local.get $y32) + ) + ) + (drop + (f64.sub + (f64.const -0) + (local.get $y64) + ) + ) + (drop + (i32.eq + (local.get $x32) + (i32.const 10) + ) + ) + (drop + (i32.le_u + (i32.add + (local.get $x32) + (i32.const 10) + ) + (i32.const 20) + ) + ) + (drop + (i32.eq + (local.get $x32) + (i32.const 30) + ) + ) + (drop + (i64.eq + (local.get $x64) + (i64.const 10) + ) + ) + (drop + (i32.eq + (local.get $x32) + (i32.const 10) + ) + ) + (drop + (i32.eq + (i32.add + (local.get $x32) + (i32.const 10) + ) + (local.get $x32) + ) + ) + (drop + (i32.eq + (local.get $x32) + (i32.const 30) + ) + ) + (drop + (i32.eq + (i32.sub + (local.get $x32) + (i32.const 30) + ) + (local.get $x32) + ) + ) + (drop + (i32.eq + (i32.add + (local.get $x32) + (i32.const 30) + ) + (local.get $x32) + ) + ) + (drop + (i32.eq + (i32.sub + (local.get $x32) + (i32.const 10) + ) + (local.get $x32) + ) + ) + (drop + (i32.const 1) + ) + ) + (func $negatives-are-sometimes-better (param $x i32) (param $y i64) (param $z f32) + (drop + (i32.sub + (local.get $x) + (i32.const -64) + ) + ) + (drop + (i32.add + (local.get $x) + (i32.const -64) + ) + ) + (drop + (i32.sub + (local.get $x) + (i32.const -8192) + ) + ) + (drop + (i32.sub + (local.get $x) + (i32.const -1048576) + ) + ) + (drop + (i32.sub + (local.get $x) + (i32.const -134217728) + ) + ) + (drop + (i64.sub + (local.get $y) + (i64.const -64) + ) + ) + (drop + (i64.add + (local.get $y) + (i64.const -64) + ) + ) + (drop + (i64.sub + (local.get $y) + (i64.const -8192) + ) + ) + (drop + (i64.sub + (local.get $y) + (i64.const -1048576) + ) + ) + (drop + (i64.sub + (local.get $y) + (i64.const -134217728) + ) + ) + (drop + (i64.sub + (local.get $y) + (i64.const -17179869184) + ) + ) + (drop + (i64.sub + (local.get $y) + (i64.const -2199023255552) + ) + ) + (drop + (i64.sub + (local.get $y) + (i64.const -281474976710656) + ) + ) + (drop + (i64.sub + (local.get $y) + (i64.const -36028797018963968) + ) + ) + (drop + (i64.sub + (local.get $y) + (i64.const -4611686018427387904) + ) + ) + (drop + (f32.add + (local.get $z) + (f32.const 64) + ) + ) + ) + (func $shift-a-zero (param $x i32) (param $y i64) (param $z f32) + (drop + (i32.const 0) + ) + (drop + (i32.const 0) + ) + (drop + (i32.const 0) + ) + (drop + (i64.const 0) + ) + (drop + (i32.shl + (i32.const 0) + (unreachable) + ) + ) + ) + (func $identical-siblings (param $x i32) (param $y i64) (param $z f64) (param $xx i32) + (drop + (i32.const 0) + ) + (drop + (i64.const 0) + ) + (drop + (f64.sub + (local.get $z) + (local.get $z) + ) + ) + (drop + (i32.sub + (local.get $x) + (local.get $xx) + ) + ) + (drop + (i32.sub + (unreachable) + (unreachable) + ) + ) + (drop + (i32.add + (local.get $x) + (local.get $x) + ) + ) + (drop + (i32.const 0) + ) + (drop + (i32.const 0) + ) + (drop + (i32.const 0) + ) + (drop + (i32.const 0) + ) + (drop + (i32.const 0) + ) + (drop + (i32.const 0) + ) + (drop + (local.get $x) + ) + (drop + (local.get $x) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 1) + ) + (drop + (i64.const 0) + ) + (drop + (i32.const 0) + ) + (drop + (i32.const 0) + ) + (drop + (i32.const 0) + ) + (drop + (i32.const 0) + ) + (drop + (i32.const 0) + ) + (drop + (local.get $y) + ) + (drop + (local.get $y) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 1) + ) + ) + (func $all_ones (param $x i32) (param $y i64) + (drop + (local.get $x) + ) + (drop + (i32.const -1) + ) + (drop + (i32.or + (local.tee $x + (i32.const 1337) + ) + (i32.const -1) + ) + ) + (drop + (local.get $y) + ) + (drop + (i64.const -1) + ) + ) + (func $xor (param $x i32) (param $y i64) + (drop + (local.get $x) + ) + ) + (func $select-on-const (param $x i32) (param $y i64) + (drop + (local.get $x) + ) + (drop + (i32.const 3) + ) + (drop + (local.tee $x + (i32.const 5) + ) + ) + (drop + (block (result i32) + (drop + (local.tee $x + (i32.const 6) + ) + ) + (i32.const 7) + ) + ) + (drop + (select + (i32.const 4) + (local.tee $x + (i32.const 5) + ) + (i32.const 1) + ) + ) + (drop + (local.tee $x + (i32.const 6) + ) + ) + (drop + (i32.eqz + (i32.eqz + (local.get $x) + ) + ) + ) + (drop + (i32.eqz + (local.get $x) + ) + ) + (drop + (i32.ge_s + (local.get $x) + (i32.const 0) + ) + ) + (drop + (i32.lt_s + (local.get $x) + (i32.const 0) + ) + ) + (drop + (i32.lt_s + (local.get $x) + (i32.const 0) + ) + ) + (drop + (i32.gt_s + (local.get $x) + (i32.const 0) + ) + ) + (drop + (i32.le_s + (local.get $x) + (i32.const 0) + ) + ) + (drop + (i32.ge_s + (local.get $x) + (i32.const 0) + ) + ) + (drop + (i64.extend_i32_u + (i32.eqz + (i32.eqz + (local.get $x) + ) + ) + ) + ) + (drop + (i64.extend_i32_u + (i32.eqz + (local.get $x) + ) + ) + ) + (drop + (i64.extend_i32_u + (i64.eqz + (local.get $y) + ) + ) + ) + (drop + (i64.extend_i32_u + (i32.eqz + (i64.eqz + (local.get $y) + ) + ) + ) + ) + (drop + (i64.extend_i32_u + (i64.ge_s + (local.get $y) + (i64.const 0) + ) + ) + ) + (drop + (i64.extend_i32_u + (i64.lt_s + (local.get $y) + (i64.const 0) + ) + ) + ) + (drop + (i64.extend_i32_u + (i64.lt_s + (local.get $y) + (i64.const 0) + ) + ) + ) + (drop + (i64.extend_i32_u + (i64.ge_s + (local.get $y) + (i64.const 0) + ) + ) + ) + (drop + (select + (i32.const 0) + (local.get $x) + (i32.const 0) + ) + ) + (drop + (select + (i32.const 2) + (local.get $x) + (i32.const 2) + ) + ) + (drop + (select + (local.get $x) + (i32.const 2) + (local.get $x) + ) + ) + (drop + (select + (local.get $y) + (i64.const 0) + (i64.eqz + (i64.const 0) + ) + ) + ) + (drop + (select + (local.get $y) + (i64.const 2) + (i64.eqz + (i64.const 2) + ) + ) + ) + ) + (func $optimize-boolean (param $x i32) (param $y i64) + (drop + (select + (i32.const 1) + (i32.const 2) + (local.get $x) + ) + ) + (drop + (i32.and + (local.get $x) + (i32.const 1) + ) + ) + (drop + (i32.eqz + (i32.and + (local.get $x) + (i32.const 1) + ) + ) + ) + (drop + (i32.wrap_i64 + (i64.shr_u + (local.get $y) + (i64.const 63) + ) + ) + ) + (drop + (i32.eqz + (i32.shr_u + (local.get $x) + (i32.const 31) + ) + ) + ) + (drop + (i64.eqz + (i64.shr_u + (local.get $y) + (i64.const 63) + ) + ) + ) + (drop + (i64.eqz + (i64.shr_u + (local.get $y) + (i64.const 63) + ) + ) + ) + (drop + (i64.eqz + (local.get $y) + ) + ) + (drop + (i32.eqz + (i32.wrap_i64 + (local.get $y) + ) + ) + ) + (drop + (i32.wrap_i64 + (i64.and + (local.get $y) + (i64.const 1) + ) + ) + ) + (drop + (i64.eqz + (i64.and + (local.get $y) + (i64.const 1) + ) + ) + ) + (drop + (i32.and + (local.get $x) + (i32.const 1) + ) + ) + (drop + (i32.const 1) + ) + (drop + (i64.and + (local.get $y) + (i64.const 1) + ) + ) + (drop + (i64.const 1) + ) + (drop + (i32.and + (local.get $x) + (i32.const 1) + ) + ) + (drop + (i64.ne + (local.get $y) + (i64.const 0) + ) + ) + (drop + (i32.ne + (local.get $x) + (i32.const 0) + ) + ) + (drop + (if (result i32) + (i32.and + (local.get $x) + (i32.const 3) + ) + (i32.const 1) + (i32.const 0) + ) + ) + (drop + (if (result i32) + (i32.and + (local.get $x) + (i32.const 2147483647) + ) + (i32.const 1) + (i32.const 0) + ) + ) + ) + (func $optimize-bitwise-oprations (param $x i32) (param $y i32) (param $z i64) (param $w i64) + (drop + (i32.rotl + (i32.const -2) + (local.get $x) + ) + ) + (drop + (i64.rotl + (i64.const -2) + (local.get $z) + ) + ) + ) + (func $getFallthrough + (local $x0 i32) + (local $x1 i32) + (local $x2 i32) + (local $x3 i32) + (local $x4 i32) + (local $x5 i32) + (local $x6 i32) + (local $x7 i32) + (local.set $x0 + (i32.const 1) + ) + (drop + (local.get $x0) + ) + (local.set $x1 + (local.tee $x2 + (i32.const 1) + ) + ) + (drop + (local.get $x1) + ) + (local.set $x3 + (loop $loop-in (result i32) + (i32.const 1) + ) + ) + (drop + (local.get $x3) + ) + (local.set $x4 + (if (result i32) + (i32.const 1) + (i32.const 2) + (i32.const 3) + ) + ) + (drop + (i32.and + (local.get $x4) + (i32.const 7) + ) + ) + (local.set $x5 + (if (result i32) + (i32.const 1) + (unreachable) + (i32.const 3) + ) + ) + (drop + (local.get $x5) + ) + (local.set $x6 + (if (result i32) + (i32.const 1) + (i32.const 3) + (unreachable) + ) + ) + (drop + (local.get $x6) + ) + (drop + (block $out (result i32) + (local.set $x7 + (br_if $out + (i32.const 1) + (i32.const 1) + ) + ) + (drop + (local.get $x7) + ) + (unreachable) + ) + ) + ) + (func $tee-with-unreachable-value (result f64) + (local $var$0 i32) + (block $label$1 (result f64) + (local.tee $var$0 + (br_if $label$1 + (f64.const 1) + (unreachable) + ) + ) + ) + ) + (func $add-sub-zero-reorder-1 (param $temp i32) (result i32) + (i32.add + (i32.add + (i32.sub + (i32.const 0) + (local.get $temp) + ) + (local.tee $temp + (i32.const 1) + ) + ) + (i32.const 2) + ) + ) + (func $add-sub-zero-reorder-2 (param $temp i32) (result i32) + (i32.add + (i32.sub + (local.tee $temp + (i32.const 1) + ) + (local.get $temp) + ) + (i32.const 2) + ) + ) + (func $const-float-zero (param $fx f32) (param $fy f64) + (drop + (f32.sub + (local.get $fx) + (f32.const 0) + ) + ) + (drop + (f64.sub + (local.get $fy) + (f64.const 0) + ) + ) + (drop + (f32.add + (local.get $fx) + (f32.const -0) + ) + ) + (drop + (f64.add + (local.get $fy) + (f64.const -0) + ) + ) + (drop + (f32.add + (local.get $fx) + (f32.const 0) + ) + ) + (drop + (f64.add + (local.get $fy) + (f64.const 0) + ) + ) + (drop + (f32.sub + (f32.const 0) + (local.get $fx) + ) + ) + (drop + (f64.sub + (f64.const 0) + (local.get $fy) + ) + ) + (drop + (f32.add + (local.get $fx) + (f32.const 0) + ) + ) + (drop + (f64.add + (local.get $fy) + (f64.const 0) + ) + ) + (drop + (f32.sub + (f32.const -nan:0x34546d) + (f32.const 0) + ) + ) + ) + (func $rhs-is-neg-one (param $x i32) (param $y i64) (param $fx f32) (param $fy f64) + (drop + (i32.add + (local.get $x) + (i32.const 1) + ) + ) + (drop + (i64.add + (local.get $y) + (i64.const 1) + ) + ) + (drop + (i32.const 0) + ) + (drop + (i32.const 0) + ) + (drop + (i32.gt_s + (local.get $x) + (i32.const -1) + ) + ) + (drop + (i64.gt_s + (local.get $y) + (i64.const -1) + ) + ) + (drop + (i64.extend_i32_s + (i32.const 0) + ) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 1) + ) + (drop + (i32.le_s + (local.get $x) + (i32.const -1) + ) + ) + (drop + (i64.le_s + (local.get $y) + (i64.const -1) + ) + ) + (drop + (i32.eq + (local.get $x) + (i32.const -1) + ) + ) + (drop + (i64.eq + (local.get $y) + (i64.const -1) + ) + ) + (drop + (i32.ne + (local.get $x) + (i32.const -1) + ) + ) + (drop + (i64.ne + (local.get $y) + (i64.const -1) + ) + ) + (drop + (i32.sub + (i32.const 0) + (local.get $x) + ) + ) + (drop + (i64.sub + (i64.const 0) + (local.get $y) + ) + ) + (drop + (f32.sub + (f32.const -0) + (local.get $fx) + ) + ) + (drop + (f64.sub + (f64.const -0) + (local.get $fy) + ) + ) + (drop + (i32.eq + (local.get $x) + (i32.const -1) + ) + ) + (drop + (i64.extend_i32_u + (i64.eq + (local.get $y) + (i64.const -1) + ) + ) + ) + ) + (func $rhs-is-const (param $x i32) (param $y i64) (param $fx f32) (param $fy f64) + (drop + (i32.eq + (local.get $x) + (i32.const -2147483648) + ) + ) + (drop + (i64.extend_i32_u + (i64.eq + (local.get $y) + (i64.const -9223372036854775808) + ) + ) + ) + (drop + (i64.div_s + (local.get $y) + (i64.const -2147483648) + ) + ) + (drop + (i32.ge_u + (local.get $x) + (i32.const -2) + ) + ) + (drop + (i32.eq + (local.get $x) + (i32.const -1) + ) + ) + (drop + (i32.ge_u + (local.get $x) + (i32.const -2147483647) + ) + ) + (drop + (i32.shr_u + (local.get $x) + (i32.const 31) + ) + ) + (drop + (i64.extend_i32_u + (i64.eq + (local.get $y) + (i64.const -1) + ) + ) + ) + (drop + (i64.shr_u + (local.get $y) + (i64.const 63) + ) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 0) + ) + (drop + (i32.const 0) + ) + (drop + (i32.ne + (local.get $x) + (i32.const 0) + ) + ) + (drop + (i64.ne + (local.get $y) + (i64.const 0) + ) + ) + (drop + (i32.eqz + (local.get $x) + ) + ) + (drop + (i64.eqz + (local.get $y) + ) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 0) + ) + (drop + (i32.const 0) + ) + (drop + (i32.const 0) + ) + (drop + (i32.const 0) + ) + (drop + (i32.ne + (local.get $x) + (i32.const 2147483647) + ) + ) + (drop + (i64.ne + (local.get $y) + (i64.const 9223372036854775807) + ) + ) + (drop + (i32.ne + (local.get $x) + (i32.const -2147483648) + ) + ) + (drop + (i64.ne + (local.get $y) + (i64.const -9223372036854775808) + ) + ) + (drop + (i32.eq + (local.get $x) + (i32.const -2147483648) + ) + ) + (drop + (i64.eq + (local.get $y) + (i64.const -9223372036854775808) + ) + ) + (drop + (i32.eq + (local.get $x) + (i32.const 2147483647) + ) + ) + (drop + (i64.eq + (local.get $y) + (i64.const 9223372036854775807) + ) + ) + (drop + (f32.sub + (f32.const -0) + (local.get $fx) + ) + ) + (drop + (f64.mul + (local.get $fy) + (f64.const 2.1) + ) + ) + (drop + (f64.mul + (local.get $fy) + (f64.const -2) + ) + ) + (drop + (f32.div + (local.get $fx) + (f32.const -inf) + ) + ) + (drop + (f64.div + (local.get $fy) + (f64.const 0) + ) + ) + (drop + (f64.div + (local.get $fy) + (f64.const -nan:0x8000000000000) + ) + ) + (drop + (f64.div + (f64.const -5) + (local.get $fy) + ) + ) + ) + (func $lhs-is-neg-one (param $x i32) (param $y i64) + (drop + (i32.const -1) + ) + (drop + (i64.const -1) + ) + (drop + (i32.const -1) + ) + (drop + (i64.const -1) + ) + (drop + (i32.const -1) + ) + (drop + (i64.const -1) + ) + (drop + (i32.shr_s + (i32.const -1) + (call $ne0) + ) + ) + (drop + (i32.shr_u + (i32.const -1) + (local.get $x) + ) + ) + ) + (func $lhs-is-const (param $x i32) (param $y i64) + (drop + (i32.sub + (i32.const 1) + (local.get $x) + ) + ) + (drop + (i64.sub + (i64.const 1) + (local.get $y) + ) + ) + (drop + (i32.sub + (i32.const -2) + (local.get $x) + ) + ) + (drop + (i64.sub + (i64.const -2) + (local.get $y) + ) + ) + (drop + (i32.sub + (local.get $x) + (i32.const 1) + ) + ) + (drop + (i64.sub + (local.get $y) + (i64.const 1) + ) + ) + (drop + (i32.sub + (local.get $x) + (i32.const -2147483648) + ) + ) + ) + (func $pre-combine-or (param $x i32) (param $y i32) + (drop + (i32.ge_s + (local.get $x) + (local.get $y) + ) + ) + (drop + (i32.ge_s + (local.get $x) + (local.get $y) + ) + ) + (drop + (i32.or + (i32.eq + (local.get $x) + (i32.const 1) + ) + (i32.gt_s + (local.get $x) + (local.get $y) + ) + ) + ) + (drop + (i32.or + (i32.eq + (local.get $x) + (local.get $y) + ) + (i32.gt_s + (local.get $x) + (i32.const 1) + ) + ) + ) + (drop + (i32.or + (i32.gt_s + (call $ne0) + (local.get $y) + ) + (i32.eq + (call $ne0) + (local.get $y) + ) + ) + ) + (drop + (i32.or + (i32.lt_s + (call $ne0) + (local.get $y) + ) + (i32.eq + (call $ne0) + (local.get $y) + ) + ) + ) + ) + (func $combine-or (param $x i32) (param $y i32) + (drop + (i32.ge_s + (local.get $x) + (local.get $y) + ) + ) + ) + (func $select-into-arms (param $x i32) (param $y i32) + (if + (select + (local.get $x) + (local.get $y) + (local.get $y) + ) + (unreachable) + ) + ) + (func $optimize-boolean-context (param $x i32) (param $y i32) + (if + (local.get $x) + (unreachable) + ) + (drop + (select + (local.get $x) + (local.get $y) + (local.get $x) + ) + ) + ) + (func $optimize-relationals (param $x i32) (param $y i32) (param $X i64) (param $Y i64) + (drop + (i32.eq + (local.get $x) + (i32.const -2147483647) + ) + ) + (drop + (i32.eq + (local.get $x) + (i32.const -2147483648) + ) + ) + (drop + (i32.eq + (local.get $x) + (i32.const 2147483647) + ) + ) + (drop + (i32.eq + (local.get $x) + (local.get $y) + ) + ) + (drop + (i64.eq + (local.get $X) + (local.get $Y) + ) + ) + (drop + (i32.eq + (local.get $x) + (local.get $y) + ) + ) + (drop + (i64.eq + (local.get $X) + (local.get $Y) + ) + ) + (drop + (i32.ne + (local.get $x) + (local.get $y) + ) + ) + (drop + (i64.ne + (local.get $X) + (local.get $Y) + ) + ) + (drop + (i32.gt_s + (i32.sub + (local.get $x) + (local.get $y) + ) + (i32.const 0) + ) + ) + (drop + (i32.ge_s + (i32.sub + (local.get $x) + (local.get $y) + ) + (i32.const 0) + ) + ) + (drop + (i32.ne + (local.get $x) + (local.get $y) + ) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 1) + ) + (drop + (i32.lt_s + (i32.sub + (local.get $x) + (local.get $y) + ) + (i32.const 0) + ) + ) + (drop + (i32.le_s + (i32.sub + (local.get $x) + (local.get $y) + ) + (i32.const 0) + ) + ) + (drop + (i32.const 0) + ) + (drop + (i32.const 0) + ) + (drop + (i32.eq + (local.get $x) + (local.get $y) + ) + ) + (drop + (i32.eq + (local.get $x) + (i32.const -2147483648) + ) + ) + (drop + (i32.ne + (local.get $x) + (i32.const -2147483648) + ) + ) + (drop + (i32.lt_s + (i32.sub + (local.get $x) + (i32.const -2147483648) + ) + (i32.const 0) + ) + ) + (drop + (i32.ge_s + (i32.sub + (local.get $x) + (i32.const -2147483648) + ) + (i32.const 0) + ) + ) + (drop + (i32.gt_s + (i32.sub + (local.get $x) + (block $block (result i32) + (i32.const -2147483648) + ) + ) + (i32.const 0) + ) + ) + (drop + (i32.gt_s + (i32.sub + (local.get $x) + (block $block29 (result i32) + (i32.const -2147483648) + ) + ) + (i32.const 0) + ) + ) + ) + (func $unsigned-context (param $x i32) (param $y i64) + (drop + (i32.div_u + (i32.and + (local.get $x) + (i32.const 2147483647) + ) + (i32.const 3) + ) + ) + (drop + (i32.div_s + (i32.and + (local.get $x) + (i32.const 2147483647) + ) + (i32.const -3) + ) + ) + (drop + (i32.eq + (i32.and + (local.get $x) + (i32.const 2147483647) + ) + (i32.const -2147483648) + ) + ) + (drop + (i64.shr_u + (i64.and + (local.get $y) + (i64.const 9223372036854775807) + ) + (i64.const 1) + ) + ) + (drop + (i64.div_s + (i64.and + (local.get $y) + (i64.const 9223372036854775807) + ) + (i64.const -1) + ) + ) + (drop + (i32.rem_u + (i32.and + (local.get $x) + (i32.const 2147483647) + ) + (i32.const 3) + ) + ) + (drop + (i32.shr_u + (i32.and + (local.get $x) + (i32.const 2147483647) + ) + (i32.const 7) + ) + ) + (drop + (i32.ge_u + (i32.and + (local.get $x) + (i32.const 2147483647) + ) + (i32.const 7) + ) + ) + (drop + (i32.ge_s + (i32.and + (local.get $x) + (i32.const 2147483647) + ) + (i32.const -7) + ) + ) + ) + (func $optimize-float-mul-by-two (param $0 f64) (param $1 f32) + (drop + (f64.add + (local.get $0) + (local.get $0) + ) + ) + (drop + (f32.add + (local.get $1) + (local.get $1) + ) + ) + (drop + (f64.mul + (call $tee-with-unreachable-value) + (f64.const 2) + ) + ) + (drop + (f64.mul + (local.get $0) + (f64.const -2) + ) + ) + ) + (func $duplicate-elimination (param $x i32) (param $y i32) (param $z i32) (param $w f64) + (drop + (f64.abs + (local.get $w) + ) + ) + (drop + (f64.ceil + (local.get $w) + ) + ) + (drop + (f64.floor + (local.get $w) + ) + ) + (drop + (f64.trunc + (local.get $w) + ) + ) + (drop + (f64.nearest + (local.get $w) + ) + ) + (drop + (f64.nearest + (f64.trunc + (local.get $w) + ) + ) + ) + (drop + (f64.trunc + (f64.nearest + (local.get $w) + ) + ) + ) + (drop + (local.get $w) + ) + (drop + (f64.neg + (local.get $w) + ) + ) + (drop + (local.get $w) + ) + (drop + (i32.eqz + (i32.eqz + (local.get $x) + ) + ) + ) + (drop + (i32.eqz + (local.get $x) + ) + ) + (drop + (i64.eqz + (i64.const 1) + ) + ) + (drop + (i32.ne + (local.get $x) + (i32.const 2) + ) + ) + (drop + (i32.and + (local.get $x) + (i32.const 1) + ) + ) + (drop + (i32.rem_s + (local.get $x) + (local.get $y) + ) + ) + (drop + (i32.rem_u + (local.get $x) + (local.get $y) + ) + ) + (drop + (local.get $y) + ) + (drop + (local.get $y) + ) + (drop + (i32.sub + (local.get $y) + (i32.sub + (local.get $x) + (local.get $y) + ) + ) ) (drop - (i32.const 0) + (local.get $y) ) (drop (local.get $y) @@ -3058,298 +5095,613 @@ (local.get $y) ) (drop - (i32.const 1) + (local.get $y) ) (drop - (i32.const 1) + (local.get $x) ) (drop - (i32.const 1) + (i32.and + (local.get $x) + (local.get $y) + ) ) (drop - (i32.const 1) + (i32.and + (local.get $x) + (local.get $y) + ) ) (drop - (i32.const 1) + (i32.and + (local.get $x) + (local.get $y) + ) + ) + (drop + (i32.and + (local.get $x) + (local.get $y) + ) + ) + (drop + (i32.or + (local.get $x) + (local.get $y) + ) + ) + (drop + (i32.or + (local.get $x) + (local.get $y) + ) + ) + (drop + (i32.or + (local.get $x) + (local.get $y) + ) + ) + (drop + (i32.or + (local.get $x) + (local.get $y) + ) + ) + (drop + (i32.or + (local.get $z) + (i32.or + (local.get $x) + (local.get $y) + ) + ) + ) + (drop + (i32.or + (local.get $y) + (i32.or + (local.get $x) + (local.get $z) + ) + ) + ) + (drop + (i32.or + (call $ne0) + (local.get $x) + ) + ) + (drop + (i32.or + (i32.or + (call $ne0) + (local.get $x) + ) + (call $ne0) + ) + ) + (drop + (i32.or + (call $ne0) + (local.get $x) + ) + ) + (drop + (i32.or + (call $ne0) + (i32.or + (call $ne0) + (local.get $x) + ) + ) + ) + (drop + (i32.rem_s + (i32.rem_s + (local.get $y) + (local.get $x) + ) + (local.get $y) + ) + ) + (drop + (i32.rem_u + (local.get $y) + (i32.rem_u + (local.get $x) + (local.get $y) + ) + ) + ) + (drop + (i32.or + (local.get $x) + (i32.or + (local.tee $x + (i32.const 1) + ) + (local.get $x) + ) + ) + ) + (drop + (i32.or + (i32.or + (local.get $x) + (local.tee $x + (i32.const 1) + ) + ) + (local.get $x) + ) + ) + (drop + (i32.xor + (local.get $x) + (i32.xor + (local.tee $x + (i32.const 1) + ) + (local.get $x) + ) + ) + ) + (drop + (i32.xor + (i32.xor + (local.get $x) + (local.tee $x + (i32.const 1) + ) + ) + (local.get $x) + ) + ) + ) + (func $optimize-shifts (param $x i32) (param $y i32) (param $z i64) (param $w i64) + (drop + (local.get $x) + ) + (drop + (local.get $x) + ) + (drop + (local.get $x) + ) + (drop + (local.get $x) + ) + (drop + (local.get $x) + ) + (drop + (local.get $z) + ) + (drop + (local.get $z) + ) + (drop + (local.get $z) + ) + (drop + (local.get $z) + ) + (drop + (local.get $z) + ) + (drop + (i32.shl + (local.get $x) + (local.get $y) + ) + ) + (drop + (i32.shl + (local.get $x) + (local.get $y) + ) + ) + (drop + (i32.shr_s + (local.get $x) + (local.get $y) + ) + ) + (drop + (i32.shr_u + (local.get $x) + (local.get $y) + ) + ) + (drop + (i64.shl + (local.get $z) + (local.get $w) + ) + ) + (drop + (i64.shl + (local.get $z) + (local.get $w) + ) + ) + (drop + (i64.shr_s + (local.get $z) + (local.get $w) + ) + ) + (drop + (i64.shr_u + (local.get $z) + (local.get $w) + ) + ) + (drop + (local.get $x) + ) + (drop + (local.get $z) + ) + (drop + (i64.shl + (local.get $z) + (i64.and + (local.get $w) + (i64.const 32) + ) + ) + ) + (drop + (i64.shr_u + (local.get $z) + (i64.and + (local.get $w) + (i64.const 31) + ) + ) + ) + ) + (func $optimize-float-points (param $x0 f64) (param $x1 f64) (param $y0 f32) (param $y1 f32) + (drop + (f64.mul + (local.get $x0) + (local.get $x0) + ) ) - ) - (func $all_ones (; 68 ;) (param $x i32) (param $y i64) (drop - (local.get $x) + (f32.mul + (local.get $y0) + (local.get $y0) + ) ) (drop - (i32.const -1) + (f64.mul + (f64.add + (local.get $x0) + (local.get $x1) + ) + (f64.add + (local.get $x0) + (local.get $x1) + ) + ) ) (drop - (i32.or - (local.tee $x - (i32.const 1337) + (f64.abs + (f64.mul + (local.get $x0) + (local.get $x1) ) - (i32.const -1) ) ) (drop - (local.get $y) + (f32.abs + (f32.mul + (local.get $y1) + (local.get $y0) + ) + ) ) (drop - (i64.const -1) + (f64.abs + (f64.mul + (local.get $x0) + (f64.const 0) + ) + ) ) - ) - (func $xor (; 69 ;) (param $x i32) (param $y i64) (drop - (local.get $x) + (f32.abs + (f32.mul + (f32.const 0) + (local.get $y0) + ) + ) ) - ) - (func $select-on-const (; 70 ;) (param $x i32) (param $y i32) (drop - (local.get $x) + (f64.abs + (f64.mul + (f64.add + (local.get $x0) + (local.get $x1) + ) + (f64.add + (local.get $x0) + (local.get $x0) + ) + ) + ) ) (drop - (i32.const 3) + (f64.abs + (local.get $x0) + ) ) (drop - (local.tee $x - (i32.const 5) + (f32.abs + (local.get $y0) ) ) (drop - (block (result i32) - (drop - (local.tee $x - (i32.const 6) - ) + (f64.abs + (f64.sub + (f64.const 0) + (local.get $x0) ) - (i32.const 7) ) ) (drop - (select - (i32.const 4) - (local.tee $x - (i32.const 5) + (f32.abs + (f32.sub + (f32.const 0) + (local.get $y0) ) - (i32.const 1) ) ) (drop - (local.tee $x - (i32.const 6) + (f64.div + (local.get $x0) + (local.get $x0) ) ) - ) - (func $getFallthrough (; 71 ;) - (local $x0 i32) - (local $x1 i32) - (local $x2 i32) - (local $x3 i32) - (local $x4 i32) - (local $x5 i32) - (local $x6 i32) - (local $x7 i32) - (local.set $x0 - (i32.const 1) - ) (drop - (local.get $x0) - ) - (local.set $x1 - (local.tee $x2 - (i32.const 1) + (f32.div + (local.get $y0) + (local.get $y0) ) ) (drop - (local.get $x1) - ) - (local.set $x3 - (loop $loop-in (result i32) - (i32.const 1) + (f64.div + (f64.add + (local.get $x0) + (local.get $x1) + ) + (f64.add + (local.get $x0) + (local.get $x1) + ) ) ) (drop - (local.get $x3) - ) - (local.set $x4 - (if (result i32) - (i32.const 1) - (i32.const 2) - (i32.const 3) + (f64.abs + (f64.div + (local.get $x0) + (local.get $x1) + ) ) ) (drop - (i32.and - (local.get $x4) - (i32.const 7) + (f32.abs + (f32.div + (local.get $y1) + (local.get $y0) + ) ) ) - (local.set $x5 - (if (result i32) - (i32.const 1) - (unreachable) - (i32.const 3) + (drop + (f64.mul + (local.get $x0) + (local.get $x0) ) ) (drop - (local.get $x5) + (f32.mul + (local.get $y0) + (local.get $y0) + ) ) - (local.set $x6 - (if (result i32) - (i32.const 1) - (i32.const 3) - (unreachable) + (drop + (f64.div + (local.get $x0) + (local.get $x0) ) ) (drop - (local.get $x6) + (f32.div + (local.get $y0) + (local.get $y0) + ) ) (drop - (block $out (result i32) - (local.set $x7 - (br_if $out - (i32.const 1) - (i32.const 1) - ) - ) - (drop - (local.get $x7) + (f64.abs + (f64.div + (local.get $x0) + (f64.const 0) ) - (unreachable) ) ) - ) - (func $tee-with-unreachable-value (; 72 ;) (result f64) - (local $var$0 i32) - (block $label$1 (result f64) - (local.tee $var$0 - (br_if $label$1 - (f64.const 1) - (unreachable) + (drop + (f32.abs + (f32.div + (f32.const 0) + (local.get $y0) ) ) ) - ) - (func $add-sub-zero-reorder-1 (; 73 ;) (param $temp i32) (result i32) - (i32.add - (i32.add - (i32.sub - (i32.const 0) - (local.get $temp) - ) - (local.tee $temp - (i32.const 1) + (drop + (f64.abs + (f64.div + (f64.add + (local.get $x0) + (local.get $x1) + ) + (f64.add + (local.get $x0) + (local.get $x0) + ) ) ) - (i32.const 2) ) ) - (func $add-sub-zero-reorder-2 (; 74 ;) (param $temp i32) (result i32) - (i32.add - (i32.sub - (local.tee $temp - (i32.const 1) +) +(module + (type $none_=>_none (func)) + (import "env" "memory" (memory $0 (shared 256 256))) + (func $x + (drop + (i32.shr_s + (i32.shl + (i32.atomic.load8_u + (i32.const 100) + ) + (i32.const 24) ) - (local.get $temp) + (i32.const 24) ) - (i32.const 2) ) ) - (func $pre-combine-or (; 75 ;) (param $x i32) (param $y i32) - (drop - (i32.ge_s - (local.get $x) - (local.get $y) +) +(module + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (memory $0 0) + (func $optimize-bulk-memory-copy (param $dst i32) (param $src i32) (param $sz i32) + (memory.copy + (local.get $dst) + (local.get $dst) + (local.get $sz) + ) + (memory.copy + (local.get $dst) + (local.get $src) + (i32.const 0) + ) + (i32.store8 + (local.get $dst) + (i32.load8_u + (local.get $src) ) ) - (drop - (i32.ge_s - (local.get $x) - (local.get $y) + (i32.store16 align=1 + (local.get $dst) + (i32.load16_u align=1 + (local.get $src) ) ) - (drop - (i32.or - (i32.eq - (local.get $x) - (i32.const 1) - ) - (i32.gt_s - (local.get $x) - (local.get $y) - ) + (memory.copy + (local.get $dst) + (local.get $src) + (i32.const 3) + ) + (i32.store align=1 + (local.get $dst) + (i32.load align=1 + (local.get $src) ) ) - (drop - (i32.or - (i32.eq - (local.get $x) - (local.get $y) - ) - (i32.gt_s - (local.get $x) - (i32.const 1) - ) + (memory.copy + (local.get $dst) + (local.get $src) + (i32.const 5) + ) + (memory.copy + (local.get $dst) + (local.get $src) + (i32.const 6) + ) + (memory.copy + (local.get $dst) + (local.get $src) + (i32.const 7) + ) + (i64.store align=1 + (local.get $dst) + (i64.load align=1 + (local.get $src) ) ) - (drop - (i32.or - (i32.gt_s - (call $ne0) - (local.get $y) - ) - (i32.eq - (call $ne0) - (local.get $y) - ) + (v128.store align=1 + (local.get $dst) + (v128.load align=1 + (local.get $src) ) ) - (drop - (i32.or - (i32.gt_s - (local.get $y) - (call $ne0) - ) - (i32.eq - (call $ne0) - (local.get $y) - ) + (memory.copy + (local.get $dst) + (local.get $src) + (local.get $sz) + ) + (memory.copy + (i32.const 0) + (i32.const 0) + (i32.load + (i32.const 3) ) ) ) - (func $combine-or (; 76 ;) (param $x i32) (param $y i32) +) +(module + (type $none_=>_anyref (func (result anyref))) + (func $if-arms-subtype-fold (result anyref) + (ref.null extern) + ) + (func $if-arms-subtype-nofold (result anyref) + (if (result anyref) + (i32.const 0) + (ref.null extern) + (ref.null func) + ) + ) +) +(module + (type $i32_i32_i32_f64_=>_none (func (param i32 i32 i32 f64))) + (func $duplicate-elimination (param $x i32) (param $y i32) (param $z i32) (param $w f64) (drop - (i32.ge_s + (i32.extend8_s (local.get $x) - (local.get $y) ) ) - ) - (func $select-into-arms (; 77 ;) (param $x i32) (param $y i32) - (if - (select + (drop + (i32.extend16_s (local.get $x) - (local.get $y) - (local.get $y) ) - (unreachable) ) ) - (func $if-arms-subtype (; 78 ;) (result anyref) - (ref.null) - ) ) (module (type $none_=>_none (func)) - (import "env" "memory" (memory $0 (shared 256 256))) - (func $x (; 0 ;) - (drop - (i32.shr_s - (i32.shl - (i32.atomic.load8_u - (i32.const 100) + (func $test + (if + (try (result i32) + (do + (i32.const 123) + ) + (catch + (drop + (pop exnref) ) - (i32.const 24) + (i32.const 456) ) - (i32.const 24) ) + (nop) ) ) ) +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $ref?|i32_->_i32|_=>_i32 (func (param (ref null $i32_=>_i32)) (result i32))) + (func $call_from-param (param $f (ref null $i32_=>_i32)) (result i32) + (unreachable) + ) +) diff -Nru binaryen-91/test/passes/optimize-instructions_all-features.wast binaryen-99/test/passes/optimize-instructions_all-features.wast --- binaryen-91/test/passes/optimize-instructions_all-features.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/optimize-instructions_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -2,6 +2,52 @@ (memory 0) (type $0 (func (param i32 i64))) (func $f (type $0) (param $i1 i32) (param $i2 i64) + (drop + (i32.and + (i32.and + (local.get $i1) + (i32.const 5) + ) + (i32.const 3) + ) + ) + (drop + (i32.or + (i32.or + (local.get $i1) + (i32.const 1) + ) + (i32.const 2) + ) + ) + (drop + (i32.xor + (i32.xor + (local.get $i1) + (i32.const -2) + ) + (i32.const -5) + ) + ) + (drop + (i32.mul + (i32.mul + (local.get $i1) + (i32.const -2) + ) + (i32.const 5) + ) + ) + ;; overflow also valid + (drop + (i32.mul + (i32.mul + (local.get $i1) + (i32.const 0xfffff) + ) + (i32.const 0x8000001) + ) + ) (if (i32.eqz (local.get $i1) @@ -238,26 +284,6 @@ ) (nop) ) - (if - (try (result i32) - (i32.eqz - (i32.eqz - (i32.const 123) - ) - ) - (catch - (drop - (exnref.pop) - ) - (i32.eqz - (i32.eqz - (i32.const 456) - ) - ) - ) - ) - (nop) - ) (drop (select (i32.const 101) @@ -310,6 +336,22 @@ (i32.store8 (i32.const 11) (i32.wrap_i64 (i64.const 1))) (i32.store16 (i32.const 11) (i32.wrap_i64 (i64.const 2))) (i32.store (i32.const 11) (i32.wrap_i64 (i64.const 3))) + ;; + (i32.store8 (i32.const 7) (i32.const -1)) ;; 255 + (i32.store8 (i32.const 8) (i32.const 255)) + (i32.store8 (i32.const 9) (i32.const 256)) ;; 0 + (i32.store16 (i32.const 10) (i32.const 65535)) + (i32.store16 (i32.const 11) (i32.const 65536)) ;; 0 + (i32.store16 (i32.const 13) (i32.const -1)) ;; 65535 + (i32.store (i32.const 14) (i32.const 65536)) + ;; + (i64.store8 (i32.const 8) (i64.const 255)) + (i64.store8 (i32.const 9) (i64.const 256)) ;; 0 + (i64.store16 (i32.const 10) (i64.const 65535)) + (i64.store16 (i32.const 11) (i64.const 65536)) ;; 0 + (i64.store32 (i32.const 12) (i64.const 4294967295)) + (i64.store32 (i32.const 13) (i64.const 4294967296)) ;; 0 + (i64.store (i32.const 14) (i64.const 4294967296)) ) (func $and-neg1 (drop (i32.and (i32.const 100) (i32.const -1))) @@ -431,6 +473,39 @@ (i32.const 23) ) )) + (drop (i32.gt_s + (i32.const 1) + (local.get $x) + )) + (drop (i32.gt_u + (i32.const 0) + (local.get $x) + )) + (drop (i32.ne + (i32.const -1) + (local.get $x) + )) + (drop (f64.ne + (f64.const -1) + (local.get $fx) + )) + (drop (f64.lt + (f64.const -2) + (local.get $fx) + )) + (drop (f64.ge + (f64.const inf) + (local.get $fx) + )) + (drop (f64.le + (f64.const nan) + (local.get $fx) + )) + ;; skip + (drop (f64.ge + (f64.const 1) + (f64.const 2) + )) (drop (i32.add (i32.ctz (local.get $x)) (i32.ctz (local.get $y)))) (drop (i32.add (i32.ctz (local.get $y)) (i32.ctz (local.get $x)))) (drop (i32.add (i32.ctz (local.get $x)) (i32.eqz (local.get $y)))) @@ -730,6 +805,19 @@ (i32.const 0) ) ) + (drop + (if (result i32) + (i32.shr_s + (i32.shl + (unreachable) ;; ignore an unreachable value + (i32.const 16) + ) + (i32.const 16) + ) + (i32.const 111) + (i32.const 222) + ) + ) ) (func $sign-ext-input (param $0 i32) (param $1 i32) (drop @@ -1606,7 +1694,7 @@ ) ) ) - (func $add-sub-zero (param $0 i32) (param $1 i32) + (func $add-sub-zero (param $0 i32) (param $1 i64) (drop (i32.add (local.get $0) @@ -1619,6 +1707,18 @@ (i32.const 0) ) ) + (drop + (i64.add + (local.get $1) + (i64.const 0) + ) + ) + (drop + (i64.sub + (local.get $1) + (i64.const 0) + ) + ) ) (func $store-signext (param $0 i32) (i32.store8 @@ -2585,6 +2685,43 @@ ) ) ) + (func $zero-ops-64 (result i32) + (return + (i64.eq + (i64.const -1337) + (i64.shr_u + (i64.add + (i64.const 0) + (i64.shr_s + (i64.shl + (i64.load16_s align=1 + (i32.const 790656516) + ) + (i64.const 0) + ) + (i64.const 0) + ) + ) + (i64.const 0) + ) + ) + ) + ) + (func $zero-ops-64-special (result i32) + (return + (i32.wrap_i64 + (i64.popcnt + (i64.sub + (i64.shl + (i64.const 4294783828) + (i64.const 17179869183) + ) + (i64.const -7377) + ) + ) + ) + ) + ) (func $sign-ext-1-and-ne (result i32) (select (i32.ne @@ -2854,9 +2991,9 @@ ) ) ) - (func $mul-power-2 (param $x i32) (result i32) + (func $mul-32-power-2 (param $x i32) (result i32) (drop - (call $mul-power-2 + (call $mul-32-power-2 (i32.mul (local.get $x) (i32.const 4) @@ -2864,7 +3001,7 @@ ) ) (drop - (call $mul-power-2 + (call $mul-32-power-2 (i32.mul (local.get $x) (i32.const 5) @@ -2872,7 +3009,7 @@ ) ) (drop - (call $mul-power-2 + (call $mul-32-power-2 (i32.mul (local.get $x) (i32.const 1) @@ -2880,7 +3017,7 @@ ) ) (drop - (call $mul-power-2 + (call $mul-32-power-2 (i32.mul (local.get $x) (i32.const 0) @@ -2888,15 +3025,15 @@ ) ) (drop - (call $mul-power-2 + (call $mul-32-power-2 (i32.mul - (call $mul-power-2 (i32.const 123)) ;; side effects + (call $mul-32-power-2 (i32.const 123)) ;; side effects (i32.const 0) ) ) ) (drop - (call $mul-power-2 + (call $mul-32-power-2 (i32.mul (local.get $x) (i32.const 0xffffffff) @@ -2904,7 +3041,7 @@ ) ) (drop - (call $mul-power-2 + (call $mul-32-power-2 (i32.mul (local.get $x) (i32.const 0x80000000) @@ -2913,179 +3050,571 @@ ) (unreachable) ) - (func $urem-power-2 (param $x i32) (result i32) + (func $mul-64-power-2 (param $x i64) (result i64) (drop - (call $urem-power-2 - (i32.rem_u + (call $mul-64-power-2 + (i64.mul (local.get $x) - (i32.const 4) + (i64.const 4) ) ) ) (drop - (call $urem-power-2 - (i32.rem_u + (call $mul-64-power-2 + (i64.mul (local.get $x) - (i32.const 5) + (i64.const 5) ) ) ) (drop - (call $urem-power-2 - (i32.rem_u + (call $mul-64-power-2 + (i64.mul (local.get $x) - (i32.const 1) + (i64.const 1) ) ) ) (drop - (call $urem-power-2 - (i32.rem_u + (call $mul-64-power-2 + (i64.mul (local.get $x) - (i32.const 0) + (i64.const 0) ) ) ) (drop - (call $urem-power-2 - (i32.rem_u - (local.get $x) - (i32.const 0xffffffff) + (call $mul-64-power-2 + (i64.mul + (call $mul-64-power-2 (i64.const 123)) ;; side effects + (i64.const 0) ) ) ) (drop - (call $urem-power-2 - (i32.rem_u + (call $mul-64-power-2 + (i64.mul (local.get $x) - (i32.const 0x80000000) + (i64.const 0xffffffffffffffff) ) ) ) - (unreachable) - ) - (func $orZero (param $0 i32) (result i32) - (i32.or - (local.get $0) - (i32.const 0) - ) - ) - (func $andZero (param $0 i32) (result i32) - (drop - (i32.and - (local.get $0) - (i32.const 0) - ) - ) (drop - (i32.and - (call $andZero (i32.const 1234)) ;; side effects - (i32.const 0) + (call $mul-64-power-2 + (i64.mul + (local.get $x) + (i64.const 0x8000000000000000) + ) ) ) (unreachable) ) - (func $abstract-additions (param $x32 i32) (param $x64 i64) (param $y32 f32) (param $y64 f64) - (drop - (i32.or - (i32.const 0) - (local.get $x32) - ) - ) - (drop - (i32.shl - (local.get $x32) - (i32.const 0) - ) - ) + (func $div-32-power-2 (param $x i32) (result i32) (drop - (i32.shr_u - (local.get $x32) - (i32.const 0) + (call $div-32-power-2 + (i32.div_u + (local.get $x) + (i32.const 4) + ) ) ) (drop - (i32.shr_s - (local.get $x32) - (i32.const 0) + (call $div-32-power-2 + (i32.div_u + (local.get $x) + (i32.const 5) + ) ) ) (drop - (i64.or - (i64.const 0) - (local.get $x64) + (call $div-32-power-2 + (i32.div_u + (local.get $x) + (i32.const 1) + ) ) ) (drop - (i64.shl - (local.get $x64) - (i64.const 0) + (call $div-32-power-2 + (i32.div_u + (local.get $x) + (i32.const 0) + ) ) ) (drop - (i64.shr_u - (local.get $x64) - (i64.const 0) + (call $div-32-power-2 + (i32.div_u + (call $div-32-power-2 (i32.const 123)) ;; side effects + (i32.const 0) + ) ) ) (drop - (i64.shr_s - (local.get $x64) - (i64.const 0) + (call $div-32-power-2 + (i32.div_u + (local.get $x) + (i32.const 0xffffffff) + ) ) ) (drop - (i32.mul - (local.get $x32) - (i32.const 0) + (call $div-32-power-2 + (i32.div_u + (local.get $x) + (i32.const 0x80000000) + ) ) ) + (unreachable) + ) + (func $urem-32-power-2 (param $x i32) (result i32) (drop - (i64.mul - (local.get $x64) - (i64.const 0) + (call $urem-32-power-2 + (i32.rem_u + (local.get $x) + (i32.const 4) + ) ) ) (drop - (f32.mul - (local.get $y32) - (f32.const 0) + (call $urem-32-power-2 + (i32.rem_u + (local.get $x) + (i32.const 5) + ) ) ) (drop - (f64.mul - (local.get $y64) - (f64.const 0) + (call $urem-32-power-2 + (i32.rem_u + (local.get $x) + (i32.const 1) + ) ) ) (drop - (i32.mul - (local.get $x32) - (i32.const 1) + (call $urem-32-power-2 + (i32.rem_u + (local.get $x) + (i32.const 0) + ) ) ) (drop - (i64.mul - (local.get $x64) - (i64.const 1) + (call $urem-32-power-2 + (i32.rem_u + (local.get $x) + (i32.const 0xffffffff) + ) ) ) (drop - (f32.mul - (local.get $y32) - (f32.const 1) + (call $urem-32-power-2 + (i32.rem_u + (local.get $x) + (i32.const 0x80000000) + ) ) ) + ;; (unsigned)x % 1 (drop - (f64.mul - (local.get $y64) - (f64.const 1) + (call $urem-32-power-2 + (i32.rem_u + (local.get $x) + (i32.const 1) + ) ) ) - (drop - (i32.and - (local.get $x32) - (i32.const 0) + (unreachable) + ) + (func $fdiv-32-power-2 (param $x f32) + (drop (f32.div + (local.get $x) + (f32.const 2) + )) + (drop (f32.div + (local.get $x) + (f32.const -2) + )) + (drop (f32.div + (local.get $x) + (f32.const 4294967296) + )) + (drop (f32.div + (local.get $x) + (f32.const 18446744073709551616) + )) + (drop (f32.div + (local.get $x) + (f32.const 0x1p-126) + )) + (drop (f32.div + (local.get $x) + (f32.const 0x1p+126) + )) + (drop (f32.div + (local.get $x) + (f32.const -0x1p-126) + )) + (drop (f32.div + (local.get $x) + (f32.const -0x1p+126) + )) + (drop (f32.div + (local.get $x) + (f32.const 0x1p-127) ;; skip + )) + (drop (f32.div + (local.get $x) + (f32.const 0x1p-127) ;; skip + )) + (drop (f32.div + (local.get $x) + (f32.const 0) ;; skip + )) + (drop (f32.div + (local.get $x) + (f32.const nan) ;; skip + )) + (drop (f32.div + (local.get $x) + (f32.const inf) ;; skip + )) + (drop (f32.div + (local.get $x) + (f32.const -inf) ;; skip + )) + ) + (func $fdiv-64-power-2 (param $x f64) + (drop (f64.div + (local.get $x) + (f64.const 2) + )) + (drop (f64.div + (local.get $x) + (f64.const -2) + )) + (drop (f64.div + (local.get $x) + (f64.const 4294967296) + )) + (drop (f64.div + (local.get $x) + (f64.const 18446744073709551616) + )) + (drop (f64.div + (local.get $x) + (f64.const 0x1p-1022) + )) + (drop (f64.div + (local.get $x) + (f64.const 0x1p+1022) + )) + (drop (f64.div + (local.get $x) + (f64.const -0x1p-1022) + )) + (drop (f64.div + (local.get $x) + (f64.const -0x1p+1022) + )) + (drop (f64.div + (local.get $x) + (f64.const 0x1p-1023) ;; skip + )) + (drop (f64.div + (local.get $x) + (f64.const 0x1p+1023) ;; skip + )) + (drop (f64.div + (local.get $x) + (f64.const 0) ;; skip + )) + (drop (f64.div + (local.get $x) + (f64.const nan) ;; skip + )) + (drop (f64.div + (local.get $x) + (f64.const inf) ;; skip + )) + (drop (f64.div + (local.get $x) + (f64.const -inf) ;; skip + )) + ) + (func $srem-by-const (param $x i32) (param $y i64) + ;; (signed)x % 1 + (drop (i32.rem_s + (local.get $x) + (i32.const 1) + )) + (drop (i64.rem_s + (local.get $y) + (i64.const 1) + )) + ;; (signed)x % 0x80000000 -> x & 0x7FFFFFFF + (drop (i32.rem_s + (local.get $x) + (i32.const 0x80000000) + )) + ;; (signed)x % 0x8000000000000000 -> x & 0x7FFFFFFFFFFFFFFF + (drop (i64.rem_s + (local.get $y) + (i64.const 0x8000000000000000) + )) + ) + (func $srem-by-pot-eq-ne-zero (param $x i32) (param $y i64) + ;; eqz((signed)x % 4) + (drop (i32.eqz + (i32.rem_s + (local.get $x) + (i32.const 4) + ) + )) + (drop (i64.eqz + (i64.rem_s + (local.get $y) + (i64.const 4) + ) + )) + ;; eqz((signed)x % -4) + (drop (i32.eqz + (i32.rem_s + (local.get $x) + (i32.const -4) + ) + )) + (drop (i64.eqz + (i64.rem_s + (local.get $y) + (i64.const -4) + ) + )) + ;; (signed)x % 4 == 0 + (drop (i32.eq + (i32.rem_s + (local.get $x) + (i32.const 4) + ) + (i32.const 0) + )) + (drop (i64.eq + (i64.rem_s + (local.get $y) + (i64.const 2) + ) + (i64.const 0) + )) + ;; (signed)x % -4 == 0 + (drop (i32.eq + (i32.rem_s + (local.get $x) + (i32.const -4) + ) + (i32.const 0) + )) + (drop (i64.eq + (i64.rem_s + (local.get $y) + (i64.const -4) + ) + (i64.const 0) + )) + ;; (signed)x % 2 != 0 + (drop (i32.ne + (i32.rem_s + (local.get $x) + (i32.const 2) + ) + (i32.const 0) + )) + (drop (i64.ne + (i64.rem_s + (local.get $y) + (i64.const 2) + ) + (i64.const 0) + )) + ;; (signed)x % -1 == 0 -> 0 == 0 + (drop (i32.eq + (i32.rem_s + (local.get $x) + (i32.const -1) + ) + (i32.const 0) + )) + ;; (signed)x % 0x80000000 == 0 + (drop (i32.eq + (i32.rem_s + (local.get $x) + (i32.const 0x80000000) + ) + (i32.const 0) + )) + ;; (signed)x % 0x80000000 != 0 + (drop (i32.ne + (i32.rem_s + (local.get $x) + (i32.const 0x80000000) + ) + (i32.const 0) + )) + ;; (signed)x % 0x8000000000000000 == 0 + (drop (i64.eq + (i64.rem_s + (local.get $y) + (i64.const 0x8000000000000000) + ) + (i64.const 0) + )) + ;; (signed)x % 0x8000000000000000 != 0 + (drop (i64.ne + (i64.rem_s + (local.get $y) + (i64.const 0x8000000000000000) + ) + (i64.const 0) + )) + ;; + (drop (i32.eq + (i32.rem_s + (local.get $x) + (i32.const 3) ;; skip + ) + (i32.const 0) + )) + (drop (i64.eq + (i64.rem_s + (local.get $y) + (i64.const 3) ;; skip + ) + (i64.const 0) + )) + ) + (func $orZero (param $0 i32) (result i32) + (i32.or + (local.get $0) + (i32.const 0) + ) + ) + (func $andZero (param $0 i32) (result i32) + (drop + (i32.and + (local.get $0) + (i32.const 0) + ) + ) + (drop + (i32.and + (call $andZero (i32.const 1234)) ;; side effects + (i32.const 0) + ) + ) + (unreachable) + ) + (func $abstract-additions (param $x32 i32) (param $x64 i64) (param $y32 f32) (param $y64 f64) + (drop + (i32.or + (i32.const 0) + (local.get $x32) + ) + ) + (drop + (i32.shl + (local.get $x32) + (i32.const 0) + ) + ) + (drop + (i32.shr_u + (local.get $x32) + (i32.const 0) + ) + ) + (drop + (i32.shr_s + (local.get $x32) + (i32.const 0) + ) + ) + (drop + (i64.or + (i64.const 0) + (local.get $x64) + ) + ) + (drop + (i64.shl + (local.get $x64) + (i64.const 0) + ) + ) + (drop + (i64.shr_u + (local.get $x64) + (i64.const 0) + ) + ) + (drop + (i64.shr_s + (local.get $x64) + (i64.const 0) + ) + ) + (drop + (i32.mul + (local.get $x32) + (i32.const 0) + ) + ) + (drop + (i64.mul + (local.get $x64) + (i64.const 0) + ) + ) + (drop + (f32.mul + (local.get $y32) + (f32.const 0) + ) + ) + (drop + (f64.mul + (local.get $y64) + (f64.const 0) + ) + ) + (drop + (i32.mul + (local.get $x32) + (i32.const 1) + ) + ) + (drop + (i64.mul + (local.get $x64) + (i64.const 1) + ) + ) + (drop + (f32.mul + (local.get $y32) + (f32.const 1) + ) + ) + (drop + (f64.mul + (local.get $y64) + (f64.const 1) + ) + ) + (drop + (i32.and + (local.get $x32) + (i32.const 0) ) ) (drop @@ -3574,7 +4103,7 @@ ) ) ) - (func $select-on-const (param $x i32) (param $y i32) + (func $select-on-const (param $x i32) (param $y i64) (drop (select (i32.const 2) @@ -3625,176 +4154,1872 @@ (i32.const 1) ) ) - ) - (func $getFallthrough ;; unit tests for Properties::getFallthrough - (local $x0 i32) - (local $x1 i32) - (local $x2 i32) - (local $x3 i32) - (local $x4 i32) - (local $x5 i32) - (local $x6 i32) - (local $x7 i32) - ;; the trivial case - (local.set $x0 (i32.const 1)) - (drop (i32.and (local.get $x0) (i32.const 7))) - ;; tees - (local.set $x1 (local.tee $x2 (i32.const 1))) - (drop (i32.and (local.get $x1) (i32.const 7))) - ;; loop - (local.set $x3 (loop (result i32) (i32.const 1))) - (drop (i32.and (local.get $x3) (i32.const 7))) - ;; if - two sides, can't - (local.set $x4 (if (result i32) (i32.const 1) (i32.const 2) (i32.const 3))) - (drop (i32.and (local.get $x4) (i32.const 7))) - ;; if - one side, can - (local.set $x5 (if (result i32) (i32.const 1) (unreachable) (i32.const 3))) - (drop (i32.and (local.get $x5) (i32.const 7))) - ;; if - one side, can - (local.set $x6 (if (result i32) (i32.const 1) (i32.const 3) (unreachable))) - (drop (i32.and (local.get $x6) (i32.const 7))) - ;; br_if with value (drop - (block $out (result i32) - (local.set $x7 (br_if $out (i32.const 1) (i32.const 1))) - (drop (i32.and (local.get $x7) (i32.const 7))) - (unreachable) + (select + (i32.const 1) + (i32.const 0) + (local.get $x) + ) + ) + (drop + (select + (i32.const 0) + (i32.const 1) + (local.get $x) + ) + ) + (drop + (select + (i32.const 0) + (i32.const 1) + (i32.lt_s + (local.get $x) + (i32.const 0) + ) + ) + ) + (drop + (select + (i32.const 1) + (i32.const 0) + (i32.lt_s + (local.get $x) + (i32.const 0) + ) + ) + ) + (drop + (select + (i32.const 0) + (i32.const 1) + (i32.ge_s + (local.get $x) + (i32.const 0) + ) + ) + ) + (drop + (select + (i32.const 1) + (i32.const 0) + (i32.gt_s + (local.get $x) + (i32.const 0) + ) + ) + ) + (drop + (select + (i32.const 0) + (i32.const 1) + (i32.gt_s + (local.get $x) + (i32.const 0) + ) + ) + ) + (drop + (select + (i32.const 1) + (i32.const 0) + (i32.ge_s + (local.get $x) + (i32.const 0) + ) + ) + ) + (drop + (select + (i64.const 1) + (i64.const 0) + (local.get $x) + ) + ) + (drop + (select + (i64.const 0) + (i64.const 1) + (local.get $x) + ) + ) + (drop + (select + (i64.const 1) + (i64.const 0) + (i64.eqz + (local.get $y) + ) + ) + ) + (drop + (select + (i64.const 0) + (i64.const 1) + (i64.eqz + (local.get $y) + ) + ) + ) + (drop + (select + (i64.const 0) + (i64.const 1) + (i64.lt_s + (local.get $y) + (i64.const 0) + ) + ) + ) + (drop + (select + (i64.const 1) + (i64.const 0) + (i64.lt_s + (local.get $y) + (i64.const 0) + ) + ) + ) + (drop + (select + (i64.const 0) + (i64.const 1) + (i64.ge_s + (local.get $y) + (i64.const 0) + ) + ) + ) + (drop + (select + (i64.const 1) + (i64.const 0) + (i64.ge_s + (local.get $y) + (i64.const 0) + ) + ) + ) + ;; optimize boolean + (drop + (select + (local.get $x) + (i32.const 0) + (i32.eqz + (i32.const 0) + ) + ) + ) + (drop + (select + (local.get $x) + (i32.const 2) + (i32.eqz + (i32.const 2) + ) + ) + ) + (drop + (select + (local.get $x) + (i32.const 2) + (i32.eqz + (i32.eqz + (local.get $x) + ) + ) + ) + ) + (drop + (select + (local.get $y) + (i64.const 0) + (i64.eqz + (i64.const 0) + ) + ) + ) + (drop + (select + (local.get $y) + (i64.const 2) + (i64.eqz + (i64.const 2) + ) + ) + ) + ) + (func $optimize-boolean (param $x i32) (param $y i64) + ;; bool(-x) -> bool(x) + (drop + (select + (i32.const 1) + (i32.const 2) + (i32.sub + (i32.const 0) + (local.get $x) + ) + ) + ) + ;; i32(bool(expr)) == 1 -> bool(expr) + (drop (i32.eq + (i32.and + (local.get $x) + (i32.const 1) + ) + (i32.const 1) + )) + ;; i32(bool(expr)) != 1 -> !bool(expr) + (drop (i32.ne + (i32.and + (local.get $x) + (i32.const 1) + ) + (i32.const 1) + )) + ;; i64(bool(expr)) != 0 -> i32(bool(expr)) + (drop (i64.ne + (i64.shr_u + (local.get $y) + (i64.const 63) + ) + (i64.const 0) + )) + ;; eqz((i32(bool(expr)) != 0) != 0) + (drop (i32.eqz + (i32.ne + (i32.ne + (i32.shr_u + (local.get $x) + (i32.const 31) + ) + (i32.const 0) + ) + (i32.const 0) + ) + )) + ;; i32.eqz(wrap(i64(x))) + (drop (i32.eqz + (i32.wrap_i64 + (i64.shr_u + (local.get $y) + (i64.const 63) + ) + ) + )) + ;; eqz((i64(bool(expr)) != 0) != 0) + (drop (i32.eqz + (i32.ne + (i64.ne + (i64.shr_u + (local.get $y) + (i64.const 63) + ) + (i64.const 0) + ) + (i32.const 0) + ) + )) + ;; eqz((i64(bool(expr)) != 0) != 0) + (drop (i32.eqz + (i32.ne + (i64.ne + (local.get $y) + (i64.const 0) + ) + (i32.const 0) + ) + )) + ;; i32.eqz(wrap(i64(x))) -> skip + (drop (i32.eqz + (i32.wrap_i64 + (local.get $y) + ) + )) + ;; i64(bool(expr)) == 1 -> i32(bool(expr)) + (drop (i64.eq + (i64.and + (local.get $y) + (i64.const 1) + ) + (i64.const 1) + )) + ;; i64(bool(expr)) != 1 -> !i64(bool(expr)) + (drop (i64.ne + (i64.and + (local.get $y) + (i64.const 1) + ) + (i64.const 1) + )) + ;; i32(bool(expr)) & 1 -> bool(expr) + (drop (i32.and + (i32.and + (local.get $x) + (i32.const 1) + ) + (i32.const 1) + )) + ;; i32(bool(expr)) | 1 -> 1 + (drop (i32.or + (i32.and + (local.get $x) + (i32.const 1) + ) + (i32.const 1) + )) + ;; i64(bool(expr)) & 1 -> i64(bool(expr)) + (drop (i64.and + (i64.and + (local.get $y) + (i64.const 1) + ) + (i64.const 1) + )) + ;; i64(bool(expr)) | 1 -> 1 + (drop (i64.or + (i64.and + (local.get $y) + (i64.const 1) + ) + (i64.const 1) + )) + ;; i32(bool(expr)) != 0 -> i32(bool(expr)) + (drop (i32.ne + (i32.and + (local.get $x) + (i32.const 1) + ) + (i32.const 0) + )) + ;; i32(bool(expr)) != 0 -> i32(bool(expr)) + (drop (i32.ne + (i64.ne + (local.get $y) + (i64.const 0) + ) + (i32.const 0) + )) + ;; (i32(expr) != 0) != 0 -> (expr != 0) + (drop (i32.ne + (i32.ne + (local.get $x) + (i32.const 0) + ) + (i32.const 0) + )) + ;; (signed)x % 4 ? 1 : 0 + (drop (if (result i32) + (i32.rem_s + (local.get $x) + (i32.const 4) + ) + (i32.const 1) + (i32.const 0) + )) + ;; (signed)x % min_s ? 1 : 0 + (drop (if (result i32) + (i32.rem_s + (local.get $x) + (i32.const 0x80000000) + ) + (i32.const 1) + (i32.const 0) + )) + ) + (func $optimize-bitwise-oprations (param $x i32) (param $y i32) (param $z i64) (param $w i64) + ;; ~(1 << x) -> rotl(-2, x) + (drop (i32.xor + (i32.shl + (i32.const 1) + (local.get $x) + ) + (i32.const -1) + )) + (drop (i64.xor + (i64.shl + (i64.const 1) + (local.get $z) + ) + (i64.const -1) + )) + ) + (func $getFallthrough ;; unit tests for Properties::getFallthrough + (local $x0 i32) + (local $x1 i32) + (local $x2 i32) + (local $x3 i32) + (local $x4 i32) + (local $x5 i32) + (local $x6 i32) + (local $x7 i32) + ;; the trivial case + (local.set $x0 (i32.const 1)) + (drop (i32.and (local.get $x0) (i32.const 7))) + ;; tees + (local.set $x1 (local.tee $x2 (i32.const 1))) + (drop (i32.and (local.get $x1) (i32.const 7))) + ;; loop + (local.set $x3 (loop (result i32) (i32.const 1))) + (drop (i32.and (local.get $x3) (i32.const 7))) + ;; if - two sides, can't + (local.set $x4 (if (result i32) (i32.const 1) (i32.const 2) (i32.const 3))) + (drop (i32.and (local.get $x4) (i32.const 7))) + ;; if - one side, can + (local.set $x5 (if (result i32) (i32.const 1) (unreachable) (i32.const 3))) + (drop (i32.and (local.get $x5) (i32.const 7))) + ;; if - one side, can + (local.set $x6 (if (result i32) (i32.const 1) (i32.const 3) (unreachable))) + (drop (i32.and (local.get $x6) (i32.const 7))) + ;; br_if with value + (drop + (block $out (result i32) + (local.set $x7 (br_if $out (i32.const 1) (i32.const 1))) + (drop (i32.and (local.get $x7) (i32.const 7))) + (unreachable) + ) + ) + ) + (func $tee-with-unreachable-value (result f64) + (local $var$0 i32) + (block $label$1 (result f64) + (local.tee $var$0 + (br_if $label$1 ;; the f64 does not actually flow through this, it's unreachable (and the type is wrong - but unchecked) + (f64.const 1) + (unreachable) + ) + ) + ) + ) + (func $add-sub-zero-reorder-1 (param $temp i32) (result i32) + (i32.add + (i32.add + (i32.sub + (i32.const 0) ;; this zero looks like we could remove it by subtracting the get of $temp from the parent, but that would reorder it *after* the tee :( + (local.get $temp) + ) + (local.tee $temp ;; cannot move this tee before the get + (i32.const 1) + ) + ) + (i32.const 2) + ) + ) + (func $add-sub-zero-reorder-2 (param $temp i32) (result i32) + (i32.add + (i32.add + (local.tee $temp ;; in this order, the tee already comes first, so all is good for the optimization + (i32.const 1) + ) + (i32.sub + (i32.const 0) + (local.get $temp) + ) + ) + (i32.const 2) + ) + ) + (func $const-float-zero (param $fx f32) (param $fy f64) + ;; x - 0.0 ==> x + (drop (f32.sub + (local.get $fx) + (f32.const 0) + )) + (drop (f64.sub + (local.get $fy) + (f64.const 0) + )) + ;; x + (-0.0) ==> x + (drop (f32.add + (local.get $fx) + (f32.const -0) + )) + (drop (f64.add + (local.get $fy) + (f64.const -0) + )) + ;; x - (-0.0) ==> x + 0.0 + (drop (f32.sub + (local.get $fx) + (f32.const -0) ;; skip + )) + (drop (f64.sub + (local.get $fy) + (f64.const -0) ;; skip + )) + ;; 0.0 - x ==> 0.0 - x + (drop (f32.sub + (f32.const 0) + (local.get $fx) ;; skip + )) + (drop (f64.sub + (f64.const 0) + (local.get $fy) ;; skip + )) + ;; x + 0.0 ==> x + 0.0 + (drop (f32.add + (local.get $fx) ;; skip + (f32.const 0) + )) + (drop (f64.add + (local.get $fy) ;; skip + (f64.const 0) + )) + (drop (f32.sub + (f32.const -nan:0x34546d) ;; skip + (f32.const 0) + )) + ) + (func $rhs-is-neg-one (param $x i32) (param $y i64) (param $fx f32) (param $fy f64) + (drop (i32.sub + (local.get $x) + (i32.const -1) + )) + (drop (i64.sub + (local.get $y) + (i64.const -1) + )) + ;; (unsigned)x > -1 ==> 0 + (drop (i32.gt_u + (local.get $x) + (i32.const -1) + )) + (drop (i64.gt_u + (local.get $y) + (i64.const -1) + )) + (drop (i32.gt_s + (local.get $x) + (i32.const -1) + )) + (drop (i64.gt_s + (local.get $y) + (i64.const -1) + )) + (drop (i64.extend_i32_s + (i64.gt_u + (i64.const 0) + (i64.const -1) + ) + )) + ;; (unsigned)x <= -1 ==> 1 + (drop (i32.le_u + (local.get $x) + (i32.const -1) + )) + (drop (i64.le_u + (local.get $y) + (i64.const -1) + )) + (drop (i32.le_s + (local.get $x) + (i32.const -1) + )) + (drop (i64.le_s + (local.get $y) + (i64.const -1) + )) + ;; (unsigned)x >= -1 ==> x == -1 + (drop (i32.ge_u + (local.get $x) + (i32.const -1) + )) + (drop (i64.ge_u + (local.get $y) + (i64.const -1) + )) + ;; (unsigned)x < -1 ==> x != -1 + (drop (i32.lt_u + (local.get $x) + (i32.const -1) + )) + (drop (i64.lt_u + (local.get $y) + (i64.const -1) + )) + ;; x * -1 + (drop (i32.mul + (local.get $x) + (i32.const -1) + )) + (drop (i64.mul + (local.get $y) + (i64.const -1) + )) + (drop (f32.mul ;; skip + (local.get $fx) + (f32.const -1) + )) + (drop (f64.mul ;; skip + (local.get $fy) + (f64.const -1) + )) + ;; (unsigned)x / -1 + (drop (i32.div_u + (local.get $x) + (i32.const -1) + )) + (drop (i64.div_u + (local.get $y) + (i64.const -1) + )) + ) + (func $rhs-is-const (param $x i32) (param $y i64) (param $fx f32) (param $fy f64) + ;; signed divs + ;; i32(x) / -2147483648 -> x == -2147483648 + (drop (i32.div_s + (local.get $x) + (i32.const -2147483648) + )) + ;; i64(x) / -9223372036854775808 -> x == -9223372036854775808 + (drop (i64.div_s + (local.get $y) + (i64.const -9223372036854775808) + )) + ;; skip + (drop (i64.div_s + (local.get $y) + (i64.const -2147483648) + )) + + ;; unsigned divs + ;; u32(x) / -2 => x >= -2 + (drop (i32.div_u + (local.get $x) + (i32.const -2) + )) + ;; u32(x) / -1 => x == -1 + (drop (i32.div_u + (local.get $x) + (i32.const -1) + )) + ;; u32(x) / (i32.min + 1) + (drop (i32.div_u + (local.get $x) + (i32.const -2147483647) + )) + ;; u32(x) / i32.min => x >>> 31 + (drop (i32.div_u + (local.get $x) + (i32.const -2147483648) + )) + ;; u64(x) / -1 => u64(x == -1) + (drop (i64.div_u + (local.get $y) + (i64.const -1) + )) + ;; u64(x) / i64.min => x >>> 63 + (drop (i64.div_u + (local.get $y) + (i64.const -9223372036854775808) + )) + + ;; (unsigned)x >= 0 => i32(1) + (drop (i32.ge_u + (local.get $x) + (i32.const 0) + )) + (drop (i64.ge_u + (local.get $y) + (i64.const 0) + )) + + ;; (unsigned)x < 0 => i32(0) + (drop (i32.lt_u + (local.get $x) + (i32.const 0) + )) + (drop (i64.lt_u + (local.get $y) + (i64.const 0) + )) + + ;; (unsigned)x > 0 => x != 0 + (drop (i32.gt_u + (local.get $x) + (i32.const 0) + )) + (drop (i64.gt_u + (local.get $y) + (i64.const 0) + )) + + ;; (unsigned)x <= 0 => x == 0 + (drop (i32.le_u + (local.get $x) + (i32.const 0) + )) + (drop (i64.le_u + (local.get $y) + (i64.const 0) + )) + + ;; i32(x) <= 0x7fffffff => i32(1) + (drop (i32.le_s + (local.get $x) + (i32.const 0x7fffffff) + )) + ;; i64(x) <= 0x7fffffffffffffff => i32(1) + (drop (i64.le_s + (local.get $y) + (i64.const 0x7fffffffffffffff) + )) + + ;; i32(x) >= 0x80000000 => i32(1) + (drop (i32.ge_s + (local.get $x) + (i32.const 0x80000000) + )) + ;; i64(x) >= 0x8000000000000000 => i32(1) + (drop (i64.ge_s + (local.get $y) + (i64.const 0x8000000000000000) + )) + + ;; i32(x) < 0x80000000 => 0 + (drop (i32.lt_s + (local.get $x) + (i32.const 0x80000000) + )) + ;; i64(x) < 0x8000000000000000 => 0 + (drop (i64.lt_s + (local.get $y) + (i64.const 0x8000000000000000) + )) + + ;; i32(x) > 0x7fffffff => 0 + (drop (i32.gt_s + (local.get $x) + (i32.const 0x7fffffff) + )) + ;; i64(x) > 0x7fffffffffffffff => 0 + (drop (i64.gt_s + (local.get $y) + (i64.const 0x7fffffffffffffff) + )) + + ;; i32(x) < 0x7fffffff => x != 0x7fffffff + (drop (i32.lt_s + (local.get $x) + (i32.const 0x7fffffff) + )) + ;; i64(x) < 0x7fffffffffffffff => x != 0x7fffffffffffffff + (drop (i64.lt_s + (local.get $y) + (i64.const 0x7fffffffffffffff) + )) + + ;; i32(x) > 0x80000000 => x != 0x80000000 + (drop (i32.gt_s + (local.get $x) + (i32.const 0x80000000) + )) + ;; i64(x) > 0x8000000000000000 => x != 0x8000000000000000 + (drop (i64.gt_s + (local.get $y) + (i64.const 0x8000000000000000) + )) + + ;; i32(x) <= 0x80000000 => x == 0x80000000 + (drop (i32.le_s + (local.get $x) + (i32.const 0x80000000) + )) + ;; i64(x) <= 0x8000000000000000 => x == 0x8000000000000000 + (drop (i64.le_s + (local.get $y) + (i64.const 0x8000000000000000) + )) + + ;; i32(x) >= 0x7fffffff => x == 0x7fffffff + (drop (i32.ge_s + (local.get $x) + (i32.const 0x7fffffff) + )) + ;; i64(x) >= 0x7fffffffffffffff => x == 0x7fffffffffffffff + (drop (i64.ge_s + (local.get $y) + (i64.const 0x7fffffffffffffff) + )) + + ;; -x * 1 => x * -1 + (drop (f32.mul + (f32.neg + (local.get $fx) + ) + (f32.const 1) + )) + ;; -x * -2.1 => x * 2.1 + (drop (f64.mul + (f64.neg + (local.get $fy) + ) + (f64.const -2.1) + )) + ;; 2 * -x => x * -2 + (drop (f64.mul + (f64.const 2) + (f64.neg + (local.get $fy) + ) + )) + ;; -x / inf => x / -inf + (drop (f32.div + (f32.neg + (local.get $fx) + ) + (f32.const inf) + )) + ;; -x / -0.0 => x / 0.0 + (drop (f64.div + (f64.neg + (local.get $fy) + ) + (f64.const -0.0) + )) + ;; -x / nan => x / -nan + (drop (f64.div + (f64.neg + (local.get $fy) + ) + (f64.const nan) + )) + ;; 5.0 / -x => -5 / x + (drop (f64.div + (f64.const 5) + (f64.neg + (local.get $fy) + ) + )) + ) + (func $lhs-is-neg-one (param $x i32) (param $y i64) + ;; -1 >> x ==> -1 + (drop (i32.shr_s + (i32.const -1) + (local.get $x) + )) + (drop (i64.shr_s + (i64.const -1) + (local.get $y) + )) + ;; rotl(-1, x) ==> -1 + (drop (i32.rotl + (i32.const -1) + (local.get $x) + )) + (drop (i64.rotl + (i64.const -1) + (local.get $y) + )) + ;; rotr(-1, x) ==> -1 + (drop (i32.rotr + (i32.const -1) + (local.get $x) + )) + (drop (i64.rotr + (i64.const -1) + (local.get $y) + )) + ;; skip + (drop (i32.shr_s + (i32.const -1) + (call $ne0) ;; side effect + )) + ;; skip + (drop (i32.shr_u + (i32.const -1) + (local.get $x) + )) + ) + (func $lhs-is-const (param $x i32) (param $y i64) + ;; 0 - (x - 1) + (drop (i32.sub + (i32.const 0) + (i32.sub + (local.get $x) + (i32.const 1) + ) + )) + (drop (i64.sub + (i64.const 0) + (i64.sub + (local.get $y) + (i64.const 1) + ) + )) + ;; -1 - (x + 1) + (drop (i32.sub + (i32.const -1) + (i32.add + (local.get $x) + (i32.const 1) + ) + )) + (drop (i64.sub + (i64.const -1) + (i64.add + (local.get $y) + (i64.const 1) + ) + )) + ;; 1 - (2 - x) + (drop (i32.sub + (i32.const 1) + (i32.sub + (i32.const 2) + (local.get $x) + ) + )) + (drop (i64.sub + (i64.const 1) + (i64.sub + (i64.const 2) + (local.get $y) + ) + )) + ;; 0 - (0x80000000 - x) + (drop (i32.sub + (i32.const 0) + (i32.sub + (i32.const 0x80000000) + (local.get $x) + ) + )) + ) + (func $pre-combine-or (param $x i32) (param $y i32) + (drop (i32.or + (i32.gt_s + (local.get $x) + (local.get $y) + ) + (i32.eq + (local.get $y) ;; ordering should not stop us + (local.get $x) + ) + )) + (drop (i32.or + (i32.eq ;; ordering should not stop us + (local.get $y) + (local.get $x) + ) + (i32.gt_s + (local.get $x) + (local.get $y) + ) + )) + (drop (i32.or + (i32.gt_s + (local.get $x) + (local.get $y) + ) + (i32.eq + (local.get $x) + (i32.const 1) ;; not equal + ) + )) + (drop (i32.or + (i32.gt_s + (local.get $x) + (i32.const 1) ;; not equal + ) + (i32.eq + (local.get $x) + (local.get $y) + ) + )) + (drop (i32.or + (i32.gt_s + (call $ne0) ;; side effects + (local.get $y) + ) + (i32.eq + (call $ne0) + (local.get $y) + ) + )) + (drop (i32.or + (i32.gt_s + (local.get $y) + (call $ne0) ;; side effects + ) + (i32.eq + (local.get $y) + (call $ne0) + ) + )) + ) + (func $combine-or (param $x i32) (param $y i32) + (drop (i32.or + (i32.gt_s + (local.get $x) + (local.get $y) + ) + (i32.eq + (local.get $x) + (local.get $y) + ) + )) + ;; TODO: more stuff here + ) + (func $select-into-arms (param $x i32) (param $y i32) + (if + (select + (i32.eqz (i32.eqz (local.get $x))) + (i32.eqz (i32.eqz (local.get $y))) + (local.get $y) + ) + (unreachable) + ) + ) + (func $optimize-boolean-context (param $x i32) (param $y i32) + ;; 0 - x ==> x + (if + (i32.sub + (i32.const 0) + (local.get $x) + ) + (unreachable) + ) + (drop (select + (local.get $x) + (local.get $y) + (i32.sub + (i32.const 0) + (local.get $x) + ) + )) + ) + (func $optimize-relationals (param $x i32) (param $y i32) (param $X i64) (param $Y i64) + ;; eqz(x + 0x7FFFFFFF) -> x == -2147483647 + (drop (i32.eqz + (i32.add + (local.get $x) + (i32.const 0x7FFFFFFF) + ) + )) + ;; eqz(x + 0x80000000) -> x == -2147483648 + (drop (i32.eqz + (i32.add + (local.get $x) + (i32.const 0x80000000) + ) + )) + ;; eqz(x + 0x80000001) -> x == 2147483647 + (drop (i32.eqz + (i32.add + (local.get $x) + (i32.const 0x80000001) + ) + )) + ;; eqz(x - y) + (drop (i32.eqz + (i32.sub + (local.get $x) + (local.get $y) + ) + )) + (drop (i64.eqz + (i64.sub + (local.get $X) + (local.get $Y) + ) + )) + ;; x - y == 0 + (drop (i32.eq + (i32.sub + (local.get $x) + (local.get $y) + ) + (i32.const 0) + )) + (drop (i64.eq + (i64.sub + (local.get $X) + (local.get $Y) + ) + (i64.const 0) + )) + ;; x - y != 0 + (drop (i32.ne + (i32.sub + (local.get $x) + (local.get $y) + ) + (i32.const 0) + )) + (drop (i64.ne + (i64.sub + (local.get $X) + (local.get $Y) + ) + (i64.const 0) + )) + ;; i32(x - y) > 0 -> x > y + (drop (i32.gt_s + (i32.sub + (local.get $x) + (local.get $y) + ) + (i32.const 0) + )) + ;; i32(x - y) >= 0 -> x >= y + (drop (i32.ge_s + (i32.sub + (local.get $x) + (local.get $y) + ) + (i32.const 0) + )) + ;; u32(x - y) > 0 -> x != y + (drop (i32.gt_u + (i32.sub + (local.get $x) + (local.get $y) + ) + (i32.const 0) + )) + ;; u32(x - y) >= 0 -> 1 + (drop (i32.ge_u + (i32.sub + (local.get $x) + (local.get $y) + ) + (i32.const 0) + )) + ;; u64(x - y) >= 0 -> i32(1) + (drop (i64.ge_u + (i64.sub + (local.get $X) + (local.get $Y) + ) + (i64.const 0) + )) + ;; i32(x - y) < 0 -> x < y + (drop (i32.lt_s + (i32.sub + (local.get $x) + (local.get $y) + ) + (i32.const 0) + )) + ;; i32(x - y) <= 0 -> x <= y + (drop (i32.le_s + (i32.sub + (local.get $x) + (local.get $y) + ) + (i32.const 0) + )) + ;; u32(x - y) < 0 -> 0 + (drop (i32.lt_u + (i32.sub + (local.get $x) + (local.get $y) + ) + (i32.const 0) + )) + ;; u64(x - y) < 0 -> i32(0) + (drop (i64.lt_u + (i64.sub + (local.get $X) + (local.get $Y) + ) + (i64.const 0) + )) + ;; u32(x - y) <= 0 -> x == y + (drop (i32.le_u + (i32.sub + (local.get $x) + (local.get $y) + ) + (i32.const 0) + )) + ;; i32(x - 0x80000000) == 0 -> x == 0x80000000 + (drop (i32.eq + (i32.sub + (local.get $x) + (i32.const 0x80000000) + ) + (i32.const 0) + )) + ;; i32(x - 0x80000000) != 0 -> x == 0x80000000 + (drop (i32.ne + (i32.sub + (local.get $x) + (i32.const 0x80000000) ) - ) + (i32.const 0) + )) + ;; i32(x - { 0x80000000 }) < 0 -> skip + (drop (i32.lt_s + (i32.sub + (local.get $x) + (i32.const 0x80000000) + ) + (i32.const 0) + )) + ;; i32(x - { 0x80000000 }) >= 0 -> skip + (drop (i32.ge_s + (i32.sub + (local.get $x) + (i32.const 0x80000000) + ) + (i32.const 0) + )) + ;; i32(x - { 0x80000000 }) > 0 -> skip + (drop (i32.gt_s + (i32.sub + (local.get $x) + (block (result i32) + (i32.const 0x80000000) + ) + ) + (i32.const 0) + )) + ;; i32(x - { 0x80000000 }) <= 0 -> skip + (drop (i32.gt_s + (i32.sub + (local.get $x) + (block (result i32) + (i32.const 0x80000000) + ) + ) + (i32.const 0) + )) ) - (func $tee-with-unreachable-value (result f64) - (local $var$0 i32) - (block $label$1 (result f64) - (local.tee $var$0 - (br_if $label$1 ;; the f64 does not actually flow through this, it's unreachable (and the type is wrong - but unchecked) - (f64.const 1) - (unreachable) - ) - ) - ) + (func $unsigned-context (param $x i32) (param $y i64) + (drop (i32.div_s + (i32.and + (local.get $x) + (i32.const 0x7fffffff) + ) + (i32.const 3) + )) + (drop (i32.div_s + (i32.and + (local.get $x) + (i32.const 0x7fffffff) + ) + (i32.const -3) ;; skip + )) + (drop (i32.div_s + (i32.and + (local.get $x) + (i32.const 0x7fffffff) + ) + (i32.const 0x80000000) ;; skip + )) + (drop (i64.div_s + (i64.and + (local.get $y) + (i64.const 0x7fffffffffffffff) + ) + (i64.const 2) + )) + (drop (i64.div_s + (i64.and + (local.get $y) + (i64.const 0x7fffffffffffffff) + ) + (i64.const -1) ;; skip + )) + (drop (i32.rem_s + (i32.and + (local.get $x) + (i32.const 0x7fffffff) + ) + (i32.const 3) + )) + (drop (i32.shr_s + (i32.and + (local.get $x) + (i32.const 0x7fffffff) + ) + (i32.const 7) + )) + (drop (i32.ge_s + (i32.and + (local.get $x) + (i32.const 0x7fffffff) + ) + (i32.const 7) + )) + (drop (i32.ge_s + (i32.and + (local.get $x) + (i32.const 0x7fffffff) + ) + (i32.const -7) ;; skip + )) ) - (func $add-sub-zero-reorder-1 (param $temp i32) (result i32) - (i32.add - (i32.add - (i32.sub - (i32.const 0) ;; this zero looks like we could remove it by subtracting the get of $temp from the parent, but that would reorder it *after* the tee :( - (local.get $temp) - ) - (local.tee $temp ;; cannot move this tee before the get - (i32.const 1) - ) - ) - (i32.const 2) - ) + (func $optimize-float-mul-by-two (param $0 f64) (param $1 f32) + (drop (f64.mul + (local.get $0) + (f64.const 2) + )) + (drop (f32.mul + (local.get $1) + (f32.const 2) + )) + + (drop (f64.mul + (call $tee-with-unreachable-value) ;; side effect + (f64.const 2) + )) + (drop (f64.mul + (f64.neg (local.get $0)) ;; complex expression + (f64.const 2) + )) ) - (func $add-sub-zero-reorder-2 (param $temp i32) (result i32) - (i32.add - (i32.add - (local.tee $temp ;; in this order, the tee already comes first, so all is good for the optimization - (i32.const 1) - ) - (i32.sub + (func $duplicate-elimination (param $x i32) (param $y i32) (param $z i32) (param $w f64) + ;; unary + (drop (f64.abs (f64.abs (local.get $w)))) + (drop (f64.ceil (f64.ceil (local.get $w)))) + (drop (f64.floor (f64.floor (local.get $w)))) + (drop (f64.trunc (f64.trunc (local.get $w)))) + (drop (f64.nearest (f64.nearest (local.get $w)))) + + (drop (f64.nearest (f64.trunc (local.get $w)))) ;; skip + (drop (f64.trunc (f64.nearest (local.get $w)))) ;; skip + + (drop (f64.neg (f64.neg (local.get $w)))) + (drop (f64.neg (f64.neg (f64.neg (local.get $w))))) + (drop (f64.neg (f64.neg (f64.neg (f64.neg (local.get $w)))))) + + (drop (i32.eqz (i32.eqz (local.get $x)))) ;; skip + (drop (i32.eqz (i32.eqz (i32.eqz (local.get $x))))) + (drop (i32.eqz (i32.eqz (i64.eqz (i64.const 1))))) + (drop (i32.eqz (i32.eqz (i32.ne (local.get $x) (i32.const 2))))) + + (drop (i32.eqz + (i32.eqz + (i32.and + (local.get $x) + (i32.const 1) + ) + ) + )) + + ;; binary + ;; ((signed)x % y) % y + (drop (i32.rem_s + (i32.rem_s + (local.get $x) + (local.get $y) + ) + (local.get $y) + )) + ;; ((unsigned)x % y) % y + (drop (i32.rem_u + (i32.rem_u + (local.get $x) + (local.get $y) + ) + (local.get $y) + )) + ;; 0 - (0 - y) + (drop (i32.sub (i32.const 0) - (local.get $temp) - ) - ) - (i32.const 2) - ) - ) - (func $pre-combine-or (param $x i32) (param $y i32) + (i32.sub + (i32.const 0) + (local.get $y) + ) + )) + ;; x - (x - y) + (drop (i32.sub + (local.get $x) + (i32.sub + (local.get $x) + (local.get $y) + ) + )) + ;; y - (x - y) - skip + (drop (i32.sub + (local.get $y) + (i32.sub + (local.get $x) + (local.get $y) + ) + )) + ;; x ^ (x ^ y) + (drop (i32.xor + (local.get $x) + (i32.xor + (local.get $x) + (local.get $y) + ) + )) + ;; x ^ (y ^ x) + (drop (i32.xor + (local.get $x) + (i32.xor + (local.get $y) + (local.get $x) + ) + )) + ;; (x ^ y) ^ x + (drop (i32.xor + (i32.xor + (local.get $x) + (local.get $y) + ) + (local.get $x) + )) + ;; (y ^ x) ^ x + (drop (i32.xor + (i32.xor + (local.get $y) + (local.get $x) + ) + (local.get $x) + )) + ;; x ^ (x ^ x) + (drop (i32.xor + (local.get $x) + (i32.xor + (local.get $x) + (local.get $x) + ) + )) + ;; x & (x & y) + (drop (i32.and + (local.get $x) + (i32.and + (local.get $x) + (local.get $y) + ) + )) + ;; x & (y & x) + (drop (i32.and + (local.get $x) + (i32.and + (local.get $y) + (local.get $x) + ) + )) + ;; (x & y) & x + (drop (i32.and + (i32.and + (local.get $x) + (local.get $y) + ) + (local.get $x) + )) + ;; (y & x) & x + (drop (i32.and + (i32.and + (local.get $y) + (local.get $x) + ) + (local.get $x) + )) + ;; x | (x | y) (drop (i32.or - (i32.gt_s + (local.get $x) + (i32.or (local.get $x) (local.get $y) ) - (i32.eq - (local.get $y) ;; ordering should not stop us + )) + ;; x | (y | x) + (drop (i32.or + (local.get $x) + (i32.or + (local.get $y) + (local.get $x) + ) + )) + ;; (x | y) | x + (drop (i32.or + (i32.or + (local.get $x) + (local.get $y) + ) + (local.get $x) + )) + ;; (y | x) | x + (drop (i32.or + (i32.or + (local.get $y) + (local.get $x) + ) + (local.get $x) + )) + ;; (y | x) | z - skip + (drop (i32.or + (i32.or + (local.get $y) + (local.get $x) + ) + (local.get $z) + )) + ;; (z | x) | y - skip + (drop (i32.or + (i32.or + (local.get $z) + (local.get $x) + ) + (local.get $y) + )) + ;; (SE() | x) | x + (drop (i32.or + (i32.or + (call $ne0) ;; side effect + (local.get $x) + ) + (local.get $x) + )) + ;; (x | SE()) | SE() - skip + (drop (i32.or + (i32.or + (local.get $x) + (call $ne0) ;; side effect + ) + (call $ne0) ;; side effect + )) + ;; x | (SE() | x) + (drop (i32.or + (local.get $x) + (i32.or (local.get $x) + (call $ne0) ;; side effect ) )) + ;; SE() | (x | SE()) - skip (drop (i32.or - (i32.eq ;; ordering should not stop us + (call $ne0) ;; side effect + (i32.or + (call $ne0) ;; side effect + (local.get $x) + ) + )) + ;; (y % x) % y - skip + (drop (i32.rem_s + (i32.rem_s (local.get $y) (local.get $x) ) - (i32.gt_s + (local.get $y) + )) + ;; y % (x % y) - skip + (drop (i32.rem_u + (local.get $y) + (i32.rem_u (local.get $x) (local.get $y) ) )) - (drop (i32.or - (i32.gt_s + ;; x | (y | x) where x and y cannot be reordered - skip + (drop + (i32.or (local.get $x) - (local.get $y) + (i32.or + (local.tee $x + (i32.const 1) + ) + (local.get $x) + ) ) - (i32.eq + ) + (drop + (i32.or + (i32.or + (local.get $x) + (local.tee $x + (i32.const 1) + ) + ) (local.get $x) - (i32.const 1) ;; not equal ) - )) - (drop (i32.or - (i32.gt_s + ) + ;; x ^ (y ^ x) where x and y cannot be reordered - skip + (drop + (i32.xor (local.get $x) - (i32.const 1) ;; not equal + (i32.xor + (local.tee $x + (i32.const 1) + ) + (local.get $x) + ) ) - (i32.eq + ) + (drop + (i32.xor + (i32.xor + (local.get $x) + (local.tee $x + (i32.const 1) + ) + ) (local.get $x) - (local.get $y) ) + ) + ) + (func $optimize-shifts (param $x i32) (param $y i32) (param $z i64) (param $w i64) + ;; i32 + (drop (i32.shl + (local.get $x) + (i32.const 32) )) - (drop (i32.or - (i32.gt_s - (call $ne0) ;; side effects + (drop (i32.shr_s + (local.get $x) + (i32.const 32) + )) + (drop (i32.shr_u + (local.get $x) + (i32.const 64) + )) + (drop (i32.rotl + (local.get $x) + (i32.const 64) + )) + (drop (i32.rotr + (local.get $x) + (i32.const 64) + )) + ;; i64 + (drop (i64.shl + (local.get $z) + (i64.const 64) + )) + (drop (i64.shr_s + (local.get $z) + (i64.const 64) + )) + (drop (i64.shr_u + (local.get $z) + (i64.const 128) + )) + (drop (i64.rotl + (local.get $z) + (i64.const 128) + )) + (drop (i64.rotr + (local.get $z) + (i64.const 128) + )) + + ;; i32 + (drop (i32.shl + (local.get $x) + (i32.and (local.get $y) + (i32.const 31) ) - (i32.eq - (call $ne0) + )) + (drop (i32.shl + (local.get $x) + (i32.and (local.get $y) + (i32.const 63) ) )) - (drop (i32.or - (i32.gt_s + (drop (i32.shr_s + (local.get $x) + (i32.and (local.get $y) - (call $ne0) ;; side effects + (i32.const 31) ) - (i32.eq + )) + (drop (i32.shr_u + (local.get $x) + (i32.and (local.get $y) - (call $ne0) + (i32.const 31) ) )) - ) - (func $combine-or (param $x i32) (param $y i32) - (drop (i32.or - (i32.gt_s - (local.get $x) - (local.get $y) + ;; i64 + (drop (i64.shl + (local.get $z) + (i64.and + (local.get $w) + (i64.const 63) ) - (i32.eq - (local.get $x) - (local.get $y) + )) + (drop (i64.shl + (local.get $z) + (i64.and + (local.get $w) + (i64.const 127) ) )) - ;; TODO: more stuff here - ) - (func $select-into-arms (param $x i32) (param $y i32) - (if - (select - (i32.eqz (i32.eqz (local.get $x))) - (i32.eqz (i32.eqz (local.get $y))) + (drop (i64.shr_s + (local.get $z) + (i64.and + (local.get $w) + (i64.const 63) + ) + )) + (drop (i64.shr_u + (local.get $z) + (i64.and + (local.get $w) + (i64.const 63) + ) + )) + ;; i32(x) >> (y & 32) -> x + (drop (i32.shr_u + (local.get $x) + (i32.and (local.get $y) + (i32.const 32) ) - (unreachable) - ) + )) + ;; i64(x) >> (y & 64) -> x + (drop (i64.shr_u + (local.get $z) + (i64.and + (local.get $w) + (i64.const 128) + ) + )) + + ;; skip + (drop (i64.shl + (local.get $z) + (i64.and + (local.get $w) + (i64.const 32) + ) + )) + ;; skip + (drop (i64.shr_u + (local.get $z) + (i64.and + (local.get $w) + (i64.const 31) + ) + )) ) - ;; Tests when if arms are subtype of if's type - (func $if-arms-subtype (result anyref) - (if (result anyref) - (i32.const 0) - (ref.null) - (ref.null) - ) + (func $optimize-float-points (param $x0 f64) (param $x1 f64) (param $y0 f32) (param $y1 f32) + ;; abs(x) * abs(x) ==> x * x + (drop (f64.mul + (f64.abs (local.get $x0)) + (f64.abs (local.get $x0)) + )) + (drop (f32.mul + (f32.abs (local.get $y0)) + (f32.abs (local.get $y0)) + )) + (drop (f64.mul + (f64.abs (f64.add (local.get $x0) (local.get $x1))) + (f64.abs (f64.add (local.get $x0) (local.get $x1))) + )) + + ;; abs(x) * abs(y) ==> abs(x * y) + (drop (f64.mul + (f64.abs (local.get $x0)) + (f64.abs (local.get $x1)) + )) + (drop (f32.mul + (f32.abs (local.get $y1)) + (f32.abs (local.get $y0)) + )) + + (drop (f64.mul + (f64.abs (local.get $x0)) + (f64.abs (f64.const 0)) ;; skip + )) + (drop (f32.mul + (f32.abs (f32.const 0)) ;; skip + (f32.abs (local.get $y0)) + )) + (drop (f64.mul + (f64.abs (f64.add (local.get $x0) (local.get $x1))) + (f64.abs (f64.add (local.get $x0) (local.get $x0))) + )) + + + ;; abs(-x) ==> abs(x) + (drop (f64.abs + (f64.neg (local.get $x0)) + )) + (drop (f32.abs + (f32.neg (local.get $y0)) + )) + + ;; abs(0 - x) ==> skip for non-fast math + (drop (f64.abs + (f64.sub + (f64.const 0) + (local.get $x0) + ) + )) + (drop (f32.abs + (f32.sub + (f32.const 0) + (local.get $y0) + ) + )) + + ;; abs(x) / abs(x) ==> x / x + (drop (f64.div + (f64.abs (local.get $x0)) + (f64.abs (local.get $x0)) + )) + (drop (f32.div + (f32.abs (local.get $y0)) + (f32.abs (local.get $y0)) + )) + (drop (f64.div + (f64.abs (f64.add (local.get $x0) (local.get $x1))) + (f64.abs (f64.add (local.get $x0) (local.get $x1))) + )) + + ;; abs(x) / abs(y) ==> abs(x / y) + (drop (f64.div + (f64.abs (local.get $x0)) + (f64.abs (local.get $x1)) + )) + (drop (f32.div + (f32.abs (local.get $y1)) + (f32.abs (local.get $y0)) + )) + + ;; abs(x * x) ==> x * x + (drop (f64.abs + (f64.mul + (local.get $x0) + (local.get $x0) + ) + )) + (drop (f32.abs + (f32.mul + (local.get $y0) + (local.get $y0) + ) + )) + + ;; abs(x / x) ==> x / x + (drop (f64.abs + (f64.div + (local.get $x0) + (local.get $x0) + ) + )) + (drop (f32.abs + (f32.div + (local.get $y0) + (local.get $y0) + ) + )) + + (drop (f64.div + (f64.abs (local.get $x0)) + (f64.abs (f64.const 0)) ;; skip + )) + (drop (f32.div + (f32.abs (f32.const 0)) ;; skip + (f32.abs (local.get $y0)) + )) + (drop (f64.div + (f64.abs (f64.add (local.get $x0) (local.get $x1))) + (f64.abs (f64.add (local.get $x0) (local.get $x0))) + )) ) ) +;; atomics (module (import "env" "memory" (memory $0 (shared 256 256))) (func $x @@ -3811,3 +6036,152 @@ ) ) ) +;; bulk memory +(module + (memory 0) + (func $optimize-bulk-memory-copy (param $dst i32) (param $src i32) (param $sz i32) + (memory.copy ;; skip + (local.get $dst) + (local.get $dst) + (local.get $sz) + ) + + (memory.copy ;; skip + (local.get $dst) + (local.get $src) + (i32.const 0) + ) + + (memory.copy + (local.get $dst) + (local.get $src) + (i32.const 1) + ) + + (memory.copy + (local.get $dst) + (local.get $src) + (i32.const 2) + ) + + (memory.copy + (local.get $dst) + (local.get $src) + (i32.const 3) + ) + + (memory.copy + (local.get $dst) + (local.get $src) + (i32.const 4) + ) + + (memory.copy + (local.get $dst) + (local.get $src) + (i32.const 5) + ) + + (memory.copy + (local.get $dst) + (local.get $src) + (i32.const 6) + ) + + (memory.copy + (local.get $dst) + (local.get $src) + (i32.const 7) + ) + + (memory.copy + (local.get $dst) + (local.get $src) + (i32.const 8) + ) + + (memory.copy + (local.get $dst) + (local.get $src) + (i32.const 16) + ) + + (memory.copy ;; skip + (local.get $dst) + (local.get $src) + (local.get $sz) + ) + + (memory.copy ;; skip + (i32.const 0) + (i32.const 0) + (i32.load + (i32.const 3) ;; side effect + ) + ) + ) +) +;; reference types +(module + ;; These functions test if an `if` with subtyped arms is correctly folded + ;; 1. if its `ifTrue` and `ifFalse` arms are identical (can fold) + (func $if-arms-subtype-fold (result anyref) + (if (result anyref) + (i32.const 0) + (ref.null extern) + (ref.null extern) + ) + ) + ;; 2. if its `ifTrue` and `ifFalse` arms are not identical (cannot fold) + (func $if-arms-subtype-nofold (result anyref) + (if (result anyref) + (i32.const 0) + (ref.null extern) + (ref.null func) + ) + ) +) +;; sign-extensions +(module + (func $duplicate-elimination (param $x i32) (param $y i32) (param $z i32) (param $w f64) + (drop (i32.extend8_s (i32.extend8_s (local.get $x)))) + (drop (i32.extend16_s (i32.extend16_s (local.get $x)))) + ) +) +;; exceptions +(module + (func $test + (if + (try (result i32) + (do + (i32.eqz + (i32.eqz + (i32.const 123) + ) + ) + ) + (catch + (drop + (pop exnref) + ) + (i32.eqz + (i32.eqz + (i32.const 456) + ) + ) + ) + ) + (nop) + ) + ) +) +;; typed function references +(module + (type $i32-i32 (func (param i32) (result i32))) + ;; this function has a reference parameter. we analyze parameters, and should + ;; not be confused by a type that has no bit size, in particular. this test + ;; just verifies that we do not crash on that. + (func $call_from-param (param $f (ref null $i32-i32)) (result i32) + (unreachable) + ) +) diff -Nru binaryen-91/test/passes/optimize-instructions_fuzz-exec.txt binaryen-99/test/passes/optimize-instructions_fuzz-exec.txt --- binaryen-91/test/passes/optimize-instructions_fuzz-exec.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/optimize-instructions_fuzz-exec.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,383 @@ +[fuzz-exec] calling test32 +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x7fff82] +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +[fuzz-exec] calling test64 +[LoggingExternalInterface logging nan:0x8000000000000] +[LoggingExternalInterface logging nan:0x8000000000000] +[LoggingExternalInterface logging nan:0x8000000000000] +[LoggingExternalInterface logging nan:0x8000000000000] +[LoggingExternalInterface logging nan:0xfffffffffff82] +[LoggingExternalInterface logging nan:0x8000000000000] +[LoggingExternalInterface logging nan:0x8000000000000] +[fuzz-exec] calling just-one-nan +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +[fuzz-exec] calling ignore +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +(module + (type $none_=>_none (func)) + (type $f32_=>_none (func (param f32))) + (type $f64_=>_none (func (param f64))) + (import "fuzzing-support" "log-f32" (func $logf32 (param f32))) + (import "fuzzing-support" "log-f64" (func $logf64 (param f64))) + (export "test32" (func $0)) + (export "test64" (func $1)) + (export "just-one-nan" (func $2)) + (export "ignore" (func $3)) + (func $0 + (call $logf32 + (f32.add + (f32.const -nan:0x7fff82) + (f32.neg + (f32.const -nan:0x7ff622) + ) + ) + ) + (call $logf32 + (f32.sub + (f32.const -nan:0x7fff82) + (f32.neg + (f32.const -nan:0x7ff622) + ) + ) + ) + (call $logf32 + (f32.mul + (f32.const -nan:0x7fff82) + (f32.neg + (f32.const -nan:0x7ff622) + ) + ) + ) + (call $logf32 + (f32.div + (f32.const nan:0x7fff82) + (f32.const -nan:0x7ff622) + ) + ) + (call $logf32 + (f32.copysign + (f32.const -nan:0x7fff82) + (f32.neg + (f32.const -nan:0x7ff622) + ) + ) + ) + (call $logf32 + (f32.min + (f32.const -nan:0x7fff82) + (f32.neg + (f32.const -nan:0x7ff622) + ) + ) + ) + (call $logf32 + (f32.max + (f32.const -nan:0x7fff82) + (f32.neg + (f32.const -nan:0x7ff622) + ) + ) + ) + ) + (func $1 + (call $logf64 + (f64.add + (f64.const -nan:0xfffffffffff82) + (f64.neg + (f64.const -nan:0xfffffffffa622) + ) + ) + ) + (call $logf64 + (f64.sub + (f64.const -nan:0xfffffffffff82) + (f64.neg + (f64.const -nan:0xfffffffffa622) + ) + ) + ) + (call $logf64 + (f64.mul + (f64.const -nan:0xfffffffffff82) + (f64.neg + (f64.const -nan:0xfffffffffa622) + ) + ) + ) + (call $logf64 + (f64.div + (f64.const nan:0xfffffffffff82) + (f64.const -nan:0xfffffffffa622) + ) + ) + (call $logf64 + (f64.copysign + (f64.const -nan:0xfffffffffff82) + (f64.neg + (f64.const -nan:0xfffffffffa622) + ) + ) + ) + (call $logf64 + (f64.min + (f64.const -nan:0xfffffffffff82) + (f64.neg + (f64.const -nan:0xfffffffffa622) + ) + ) + ) + (call $logf64 + (f64.max + (f64.const -nan:0xfffffffffff82) + (f64.neg + (f64.const -nan:0xfffffffffa622) + ) + ) + ) + ) + (func $2 + (call $logf32 + (f32.add + (f32.neg + (f32.const -nan:0x7ff622) + ) + (f32.const 0) + ) + ) + (call $logf32 + (f32.add + (f32.const -nan:0x7ff622) + (f32.neg + (f32.const 0) + ) + ) + ) + (call $logf32 + (f32.add + (f32.neg + (f32.const -nan:0x7ff622) + ) + (f32.const -0) + ) + ) + (call $logf32 + (f32.add + (f32.const -nan:0x7ff622) + (f32.neg + (f32.const -0) + ) + ) + ) + (call $logf32 + (f32.add + (f32.neg + (f32.const nan:0x7ff622) + ) + (f32.const 0) + ) + ) + (call $logf32 + (f32.add + (f32.const nan:0x7ff622) + (f32.neg + (f32.const 0) + ) + ) + ) + ) + (func $3 + (call $logf32 + (f32.div + (f32.const -0) + (f32.const 0) + ) + ) + (call $logf32 + (f32.div + (f32.const 0) + (f32.const 0) + ) + ) + (call $logf32 + (f32.div + (f32.const -0) + (f32.const -0) + ) + ) + (call $logf32 + (f32.div + (f32.const 0) + (f32.const -0) + ) + ) + ) +) +[fuzz-exec] calling test32 +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x7fff82] +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +[fuzz-exec] calling test64 +[LoggingExternalInterface logging nan:0x8000000000000] +[LoggingExternalInterface logging nan:0x8000000000000] +[LoggingExternalInterface logging nan:0x8000000000000] +[LoggingExternalInterface logging nan:0x8000000000000] +[LoggingExternalInterface logging nan:0xfffffffffff82] +[LoggingExternalInterface logging nan:0x8000000000000] +[LoggingExternalInterface logging nan:0x8000000000000] +[fuzz-exec] calling just-one-nan +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +[fuzz-exec] calling ignore +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +[LoggingExternalInterface logging nan:0x400000] +[fuzz-exec] calling foo +[LoggingExternalInterface logging 1] +[LoggingExternalInterface logging 1] +[LoggingExternalInterface logging 0] +[fuzz-exec] calling do-shift +[LoggingExternalInterface logging -64] +[fuzz-exec] calling call-compare-maybe-signed-eq +[fuzz-exec] note result: call-compare-maybe-signed-eq => 0 +[fuzz-exec] calling call-compare-maybe-signed-ne +[fuzz-exec] note result: call-compare-maybe-signed-ne => 1 +(module + (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (import "fuzzing-support" "log-i32" (func $log (param i32))) + (export "foo" (func $1)) + (export "do-shift" (func $3)) + (export "call-compare-maybe-signed-eq" (func $5)) + (export "call-compare-maybe-signed-ne" (func $7)) + (func $signed-comparison-to-unsigned + (call $log + (block (result i32) + (drop + (i32.const -25749) + ) + (i32.const 0) + ) + ) + (call $log + (block (result i32) + (drop + (i32.const -25749) + ) + (i32.const 0) + ) + ) + (call $log + (block (result i32) + (drop + (i32.const -25749) + ) + (i32.const 1) + ) + ) + ) + (func $1 (param $0 i32) + (call $log + (i32.le_s + (i32.sub + (i32.const 8) + (block $label$1 (result i32) + (i32.const -2147483648) + ) + ) + (i32.const 0) + ) + ) + (call $log + (i32.le_s + (i32.const -2147483640) + (i32.const 0) + ) + ) + (call $log + (i32.eq + (i32.const 8) + (i32.const -2147483648) + ) + ) + ) + (func $shift (param $0 i32) + (call $log + (i32.shr_s + (i32.shl + (i32.shr_s + (i32.shl + (local.get $0) + (i32.const 24) + ) + (i32.const 24) + ) + (i32.const 30) + ) + (i32.const 24) + ) + ) + ) + (func $3 + (call $shift + (i32.const 65419) + ) + ) + (func $compare-maybe-signed-eq (param $0 i32) (result i32) + (drop + (local.get $0) + ) + (i32.const 0) + ) + (func $5 (result i32) + (call $compare-maybe-signed-eq + (i32.const 128) + ) + ) + (func $compare-maybe-signed-ne (param $0 i32) (result i32) + (drop + (local.get $0) + ) + (i32.const 1) + ) + (func $7 (result i32) + (call $compare-maybe-signed-ne + (i32.const 128) + ) + ) +) +[fuzz-exec] calling foo +[LoggingExternalInterface logging 1] +[LoggingExternalInterface logging 1] +[LoggingExternalInterface logging 0] +[fuzz-exec] calling do-shift +[LoggingExternalInterface logging -64] +[fuzz-exec] calling call-compare-maybe-signed-eq +[fuzz-exec] note result: call-compare-maybe-signed-eq => 0 +[fuzz-exec] calling call-compare-maybe-signed-ne +[fuzz-exec] note result: call-compare-maybe-signed-ne => 1 +[fuzz-exec] comparing call-compare-maybe-signed-eq +[fuzz-exec] comparing call-compare-maybe-signed-ne diff -Nru binaryen-91/test/passes/optimize-instructions_fuzz-exec.wast binaryen-99/test/passes/optimize-instructions_fuzz-exec.wast --- binaryen-91/test/passes/optimize-instructions_fuzz-exec.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/optimize-instructions_fuzz-exec.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,352 @@ +(module + (import "fuzzing-support" "log-f32" (func $logf32 (param f32))) + (import "fuzzing-support" "log-f64" (func $logf64 (param f64))) + (func "test32" + (call $logf32 + (f32.add + (f32.const -nan:0xffff82) + (f32.neg + (f32.const -nan:0xfff622) + ) + ) + ) + (call $logf32 + (f32.sub + (f32.const -nan:0xffff82) + (f32.neg + (f32.const -nan:0xfff622) + ) + ) + ) + (call $logf32 + (f32.mul + (f32.const -nan:0xffff82) + (f32.neg + (f32.const -nan:0xfff622) + ) + ) + ) + (call $logf32 + (f32.div + (f32.const -nan:0xffff82) + (f32.neg + (f32.const -nan:0xfff622) + ) + ) + ) + (call $logf32 + (f32.copysign + (f32.const -nan:0xffff82) + (f32.neg + (f32.const -nan:0xfff622) + ) + ) + ) + (call $logf32 + (f32.min + (f32.const -nan:0xffff82) + (f32.neg + (f32.const -nan:0xfff622) + ) + ) + ) + (call $logf32 + (f32.max + (f32.const -nan:0xffff82) + (f32.neg + (f32.const -nan:0xfff622) + ) + ) + ) + ) + (func "test64" + (call $logf64 + (f64.add + (f64.const -nan:0xfffffffffff82) + (f64.neg + (f64.const -nan:0xfffffffffa622) + ) + ) + ) + (call $logf64 + (f64.sub + (f64.const -nan:0xfffffffffff82) + (f64.neg + (f64.const -nan:0xfffffffffa622) + ) + ) + ) + (call $logf64 + (f64.mul + (f64.const -nan:0xfffffffffff82) + (f64.neg + (f64.const -nan:0xfffffffffa622) + ) + ) + ) + (call $logf64 + (f64.div + (f64.const -nan:0xfffffffffff82) + (f64.neg + (f64.const -nan:0xfffffffffa622) + ) + ) + ) + (call $logf64 + (f64.copysign + (f64.const -nan:0xfffffffffff82) + (f64.neg + (f64.const -nan:0xfffffffffa622) + ) + ) + ) + (call $logf64 + (f64.min + (f64.const -nan:0xfffffffffff82) + (f64.neg + (f64.const -nan:0xfffffffffa622) + ) + ) + ) + (call $logf64 + (f64.max + (f64.const -nan:0xfffffffffff82) + (f64.neg + (f64.const -nan:0xfffffffffa622) + ) + ) + ) + ) + (func "just-one-nan" + (call $logf32 + (f32.add + (f32.const 0) + (f32.neg + (f32.const -nan:0xfff622) + ) + ) + ) + (call $logf32 + (f32.add + (f32.const -nan:0xfff622) + (f32.neg + (f32.const 0) + ) + ) + ) + (call $logf32 + (f32.add + (f32.const -0) + (f32.neg + (f32.const -nan:0xfff622) + ) + ) + ) + (call $logf32 + (f32.add + (f32.const -nan:0xfff622) + (f32.neg + (f32.const -0) + ) + ) + ) + (call $logf32 + (f32.add + (f32.const 0) + (f32.neg + (f32.const nan:0xfff622) + ) + ) + ) + (call $logf32 + (f32.add + (f32.const nan:0xfff622) + (f32.neg + (f32.const 0) + ) + ) + ) + ) + (func "ignore" + ;; none of these are nan inputs, so the interpreter must not change the sign + (call $logf32 + (f32.div + (f32.const 0) + (f32.neg + (f32.const 0) + ) + ) + ) + (call $logf32 + (f32.div + (f32.const -0) + (f32.neg + (f32.const 0) + ) + ) + ) + (call $logf32 + (f32.div + (f32.const 0) + (f32.neg + (f32.const -0) + ) + ) + ) + (call $logf32 + (f32.div + (f32.const -0) + (f32.neg + (f32.const -0) + ) + ) + ) + ) +) +(module + (import "fuzzing-support" "log-i32" (func $log (param i32))) + (func $signed-comparison-to-unsigned + (call $log + (i32.eq ;; should be false + (i32.shr_s ;; 0x0000006b after the sign-extend + (i32.shl + (i32.const -25749) ;; 0xffff9b6b + (i32.const 24) + ) + (i32.const 24) + ) + (i32.const -149) ;; 0xffffff6b - high bits are set, but not sign bit + ) + ) + ;; the same, with mixed high bits. mixed bits mean the two sides can never be + ;; equal, so the eq is always false + (call $log + (i32.eq + (i32.shr_s + (i32.shl + (i32.const -25749) + (i32.const 24) + ) + (i32.const 24) + ) + (i32.const 0xffffeb) + ) + ) + ;; the same, with !=, so the result is always true + (call $log + (i32.ne + (i32.shr_s + (i32.shl + (i32.const -25749) + (i32.const 24) + ) + (i32.const 24) + ) + (i32.const 0xffffeb) + ) + ) + ) + (func "foo" (param $0 i32) + ;; 8 - 0x80000000 < 0 + ;; + ;; is not the same as + ;; + ;; 8 < 0x80000000 + ;; + ;; because of overflow. the former is true, the latter is false + (call $log + (i32.le_s + (i32.sub + (i32.const 8) + (block $label$1 (result i32) ;; the block prevents us from optimizing this + ;; which would avoid the issue. a global or a + ;; call would do the same, all would make the + ;; value only visible at runtime + (i32.const 0x80000000) + ) + ) + (i32.const 0) + ) + ) + ;; for comparison, without the block. + (call $log + (i32.le_s + (i32.sub + (i32.const 8) + (i32.const 0x80000000) + ) + (i32.const 0) + ) + ) + ;; for comparison, what X - Y < 0 => X < Y would lead to, which has a + ;; different value + (call $log + (i32.le_s + (i32.const 8) + (i32.const 0x80000000) + ) + ) + ) + (func $shift (param $0 i32) + (call $log + ;; x << 24 >> 24 << 30 >> 24 - the extra shifts make it invalid to do the + ;; optimization of not repeating a sign-extend. That is, this would be valid + ;; if the 30 were replaced by a 24. + (i32.shr_s + (i32.shl + (i32.shr_s + (i32.shl + (local.get $0) + (i32.const 24) + ) + (i32.const 24) + ) + (i32.const 30) + ) + (i32.const 24) + ) + ) + ) + (func "do-shift" + (call $shift + (i32.const 65419) + ) + ) + ;; similar, but with the value compared to having the sign bit set but no + ;; upper bits + (func $compare-maybe-signed-eq (param $0 i32) (result i32) + (i32.eq + (i32.shr_s + (i32.shl + (local.get $0) + (i32.const 24) + ) + (i32.const 24) + ) + (i32.const 128) + ) + ) + (func "call-compare-maybe-signed-eq" (result i32) + (call $compare-maybe-signed-eq + (i32.const 128) + ) + ) + ;; the same with != + (func $compare-maybe-signed-ne (param $0 i32) (result i32) + (i32.ne + (i32.shr_s + (i32.shl + (local.get $0) + (i32.const 24) + ) + (i32.const 24) + ) + (i32.const 128) + ) + ) + (func "call-compare-maybe-signed-ne" (result i32) + (call $compare-maybe-signed-ne + (i32.const 128) + ) + ) +) diff -Nru binaryen-91/test/passes/optimize-instructions_optimize-level=2_all-features_ignore-implicit-traps.txt binaryen-99/test/passes/optimize-instructions_optimize-level=2_all-features_ignore-implicit-traps.txt --- binaryen-91/test/passes/optimize-instructions_optimize-level=2_all-features_ignore-implicit-traps.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/optimize-instructions_optimize-level=2_all-features_ignore-implicit-traps.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,384 @@ +(module + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_f64 (func (result f64))) + (memory $0 0) + (func $conditionals (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local.set $0 + (i32.const 0) + ) + (loop $while-in + (local.set $3 + (i32.const 0) + ) + (loop $while-in6 + (local.set $6 + (i32.add + (local.get $0) + (i32.const 1) + ) + ) + (local.set $0 + (if (result i32) + (if (result i32) + (i32.rem_s + (i32.add + (i32.mul + (local.get $0) + (local.tee $7 + (i32.add + (local.get $0) + (i32.const 2) + ) + ) + ) + (i32.const 17) + ) + (i32.const 5) + ) + (i32.eqz + (i32.rem_u + (i32.add + (i32.mul + (local.get $0) + (local.get $0) + ) + (i32.const 11) + ) + (i32.const 3) + ) + ) + (i32.const 1) + ) + (local.get $7) + (local.get $6) + ) + ) + (br_if $while-in6 + (i32.gt_s + (local.get $4) + (local.tee $3 + (i32.add + (local.get $3) + (i32.const 1) + ) + ) + ) + ) + ) + (br_if $while-in + (i32.ne + (local.tee $1 + (i32.add + (local.get $1) + (i32.const 1) + ) + ) + (i32.const 27000) + ) + ) + ) + (return + (local.get $5) + ) + ) + (func $side-effect (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local.set $0 + (i32.const 0) + ) + (loop $while-in + (local.set $3 + (i32.const 0) + ) + (loop $while-in6 + (local.set $6 + (i32.add + (local.get $0) + (i32.const 1) + ) + ) + (local.set $0 + (if (result i32) + (i32.or + (i32.eqz + (i32.rem_s + (i32.add + (i32.mul + (local.get $0) + (local.tee $7 + (local.get $0) + ) + ) + (i32.const 17) + ) + (i32.const 5) + ) + ) + (i32.eqz + (i32.rem_u + (i32.add + (i32.mul + (local.get $0) + (local.get $0) + ) + (unreachable) + ) + (i32.const 3) + ) + ) + ) + (local.get $7) + (local.get $6) + ) + ) + (br_if $while-in6 + (i32.gt_s + (local.get $4) + (local.tee $3 + (i32.add + (local.get $3) + (i32.const 1) + ) + ) + ) + ) + ) + (br_if $while-in + (i32.ne + (local.tee $1 + (i32.add + (local.get $1) + (i32.const 1) + ) + ) + (i32.const 27000) + ) + ) + ) + (return + (local.get $5) + ) + ) + (func $flip (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local.set $0 + (i32.const 0) + ) + (loop $while-in + (local.set $3 + (i32.const 0) + ) + (loop $while-in6 + (local.set $6 + (i32.add + (local.get $0) + (i32.const 1) + ) + ) + (local.set $0 + (if (result i32) + (if (result i32) + (i32.rem_u + (i32.add + (i32.mul + (local.get $0) + (local.get $0) + ) + (i32.const 100) + ) + (i32.const 3) + ) + (i32.eqz + (i32.rem_s + (i32.add + (i32.mul + (local.get $0) + (i32.eqz + (local.get $0) + ) + ) + (i32.const 17) + ) + (i32.const 5) + ) + ) + (i32.const 1) + ) + (local.get $7) + (local.get $6) + ) + ) + (br_if $while-in6 + (i32.gt_s + (local.get $4) + (local.tee $3 + (i32.add + (local.get $3) + (i32.const 1) + ) + ) + ) + ) + ) + (br_if $while-in + (i32.ne + (local.tee $1 + (i32.add + (local.get $1) + (i32.const 1) + ) + ) + (i32.const 27000) + ) + ) + ) + (return + (local.get $5) + ) + ) + (func $invalidate-conditionalizeExpensiveOnBitwise (param $0 i32) (param $1 i32) (result i32) + (if + (i32.eqz + (i32.and + (i32.lt_u + (i32.and + (i32.shr_s + (i32.shl + (i32.sub + (local.get $1) + (i32.const 1) + ) + (i32.const 24) + ) + (i32.const 24) + ) + (i32.const 255) + ) + (i32.const 3) + ) + (i32.ne + (local.tee $1 + (i32.const 0) + ) + (i32.const 0) + ) + ) + ) + (return + (local.get $0) + ) + ) + (return + (local.get $1) + ) + ) + (func $invalidate-conditionalizeExpensiveOnBitwise-ok (param $0 i32) (param $1 i32) (result i32) + (if + (i32.eqz + (if (result i32) + (local.tee $1 + (i32.const 0) + ) + (i32.lt_u + (i32.and + (i32.shr_s + (i32.shl + (i32.sub + (local.get $0) + (i32.const 1) + ) + (i32.const 24) + ) + (i32.const 24) + ) + (i32.const 255) + ) + (i32.const 3) + ) + (i32.const 0) + ) + ) + (return + (local.get $0) + ) + ) + (return + (local.get $1) + ) + ) + (func $conditionalize-if-type-change (result f64) + (local $0 i32) + (drop + (loop $label$1 (result f32) + (block $label$2 (result f32) + (drop + (block $label$3 (result f32) + (br_if $label$1 + (i32.or + (f32.gt + (br_if $label$3 + (f32.const 1) + (local.get $0) + ) + (br $label$2 + (f32.const 71) + ) + ) + (i64.eqz + (select + (i64.const 58) + (i64.const -982757) + (i64.eqz + (i64.const 0) + ) + ) + ) + ) + ) + ) + ) + (f32.const 1) + ) + ) + ) + (f64.const -nan:0xfffffffffffff) + ) + (func $optimize-bulk-memory-copy (param $dst i32) (param $src i32) (param $sz i32) + (block + (drop + (local.get $dst) + ) + (drop + (local.get $dst) + ) + (drop + (local.get $sz) + ) + ) + (block + (drop + (local.get $dst) + ) + (drop + (local.get $src) + ) + ) + ) +) diff -Nru binaryen-91/test/passes/optimize-instructions_optimize-level=2_all-features_ignore-implicit-traps.wast binaryen-99/test/passes/optimize-instructions_optimize-level=2_all-features_ignore-implicit-traps.wast --- binaryen-91/test/passes/optimize-instructions_optimize-level=2_all-features_ignore-implicit-traps.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/optimize-instructions_optimize-level=2_all-features_ignore-implicit-traps.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,378 @@ +(module + (type $0 (func (param i32 i32) (result i32))) + (memory $0 0) + (func $conditionals (type $0) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local.set $0 + (i32.const 0) + ) + (loop $while-in + (local.set $3 + (i32.const 0) + ) + (loop $while-in6 + (local.set $6 + (i32.add + (local.get $0) + (i32.const 1) + ) + ) + (local.set $0 + (if (result i32) + (i32.or ;; this or is very expensive. we should compute one side, then see if we even need the other + (i32.eqz + (i32.rem_s + (i32.add + (i32.mul + (local.tee $7 ;; side effect, so we can't do this one + (i32.add + (local.get $0) + (i32.const 2) + ) + ) + (local.get $0) + ) + (i32.const 17) + ) + (i32.const 5) + ) + ) + (i32.eqz + (i32.rem_u + (i32.add + (i32.mul + (local.get $0) + (local.get $0) + ) + (i32.const 11) + ) + (i32.const 3) + ) + ) + ) + (local.get $7) + (local.get $6) + ) + ) + (br_if $while-in6 + (i32.lt_s + (local.tee $3 + (i32.add + (local.get $3) + (i32.const 1) + ) + ) + (local.get $4) + ) + ) + ) + (br_if $while-in + (i32.ne + (local.tee $1 + (i32.add + (local.get $1) + (i32.const 1) + ) + ) + (i32.const 27000) + ) + ) + ) + (return + (local.get $5) + ) + ) + (func $side-effect (type $0) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local.set $0 + (i32.const 0) + ) + (loop $while-in + (local.set $3 + (i32.const 0) + ) + (loop $while-in6 + (local.set $6 + (i32.add + (local.get $0) + (i32.const 1) + ) + ) + (local.set $0 + (if (result i32) + (i32.or ;; this or is very expensive, but has a side effect on both sides + (i32.eqz + (i32.rem_s + (i32.add + (i32.mul + (local.tee $7 + (i32.add + (local.get $0) + (i32.const 0) + ) + ) + (local.get $0) + ) + (i32.const 17) + ) + (i32.const 5) + ) + ) + (i32.eqz + (i32.rem_u + (i32.add + (i32.mul + (local.get $0) + (local.get $0) + ) + (unreachable) + ) + (i32.const 3) + ) + ) + ) + (local.get $7) + (local.get $6) + ) + ) + (br_if $while-in6 + (i32.lt_s + (local.tee $3 + (i32.add + (local.get $3) + (i32.const 1) + ) + ) + (local.get $4) + ) + ) + ) + (br_if $while-in + (i32.ne + (local.tee $1 + (i32.add + (local.get $1) + (i32.const 1) + ) + ) + (i32.const 27000) + ) + ) + ) + (return + (local.get $5) + ) + ) + (func $flip (type $0) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local.set $0 + (i32.const 0) + ) + (loop $while-in + (local.set $3 + (i32.const 0) + ) + (loop $while-in6 + (local.set $6 + (i32.add + (local.get $0) + (i32.const 1) + ) + ) + (local.set $0 + (if (result i32) + (i32.or ;; this or is very expensive, and the first side has no side effect + (i32.eqz + (i32.rem_s + (i32.add + (i32.mul + (i32.eqz + (i32.add + (local.get $0) + (i32.const 0) + ) + ) + (local.get $0) + ) + (i32.const 17) + ) + (i32.const 5) + ) + ) + (i32.eqz + (i32.rem_u + (i32.add + (i32.mul + (local.get $0) + (local.get $0) + ) + (i32.const 100) + ) + (i32.const 3) + ) + ) + ) + (local.get $7) + (local.get $6) + ) + ) + (br_if $while-in6 + (i32.lt_s + (local.tee $3 + (i32.add + (local.get $3) + (i32.const 1) + ) + ) + (local.get $4) + ) + ) + ) + (br_if $while-in + (i32.ne + (local.tee $1 + (i32.add + (local.get $1) + (i32.const 1) + ) + ) + (i32.const 27000) + ) + ) + ) + (return + (local.get $5) + ) + ) + (func $invalidate-conditionalizeExpensiveOnBitwise (param $0 i32) (param $1 i32) (result i32) + (if + (i32.eqz + (i32.and + (i32.lt_s + (i32.and + (i32.shr_s + (i32.shl + (i32.add + (local.get $1) ;; conflict with tee + (i32.const -1) + ) + (i32.const 24) + ) + (i32.const 24) + ) + (i32.const 255) + ) + (i32.const 3) + ) + (i32.ne + (local.tee $1 + (i32.const 0) + ) + (i32.const 0) + ) + ) + ) + (return (local.get $0)) + ) + (return (local.get $1)) + ) + (func $invalidate-conditionalizeExpensiveOnBitwise-ok (param $0 i32) (param $1 i32) (result i32) + (if + (i32.eqz + (i32.and + (i32.lt_s + (i32.and + (i32.shr_s + (i32.shl + (i32.add + (local.get $0) ;; no conflict + (i32.const -1) + ) + (i32.const 24) + ) + (i32.const 24) + ) + (i32.const 255) + ) + (i32.const 3) + ) + (i32.ne + (local.tee $1 + (i32.const 0) + ) + (i32.const 0) + ) + ) + ) + (return (local.get $0)) + ) + (return (local.get $1)) + ) + + (func $conditionalize-if-type-change (result f64) + (local $0 i32) + (drop + (loop $label$1 (result f32) + (block $label$2 (result f32) + (drop + (block $label$3 (result f32) + (br_if $label$1 + (i32.or ;; this turns into an if, but then the if might not be unreachable + (f32.gt + (br_if $label$3 + (f32.const 1) + (local.get $0) + ) + (br $label$2 + (f32.const 71) + ) + ) + (i64.eqz + (select + (i64.const 58) + (i64.const -982757) + (i64.eqz + (i64.const 0) + ) + ) + ) + ) + ) + ) + ) + (f32.const 1) + ) + ) + ) + (f64.const -nan:0xfffffffffffff) + ) + (func $optimize-bulk-memory-copy (param $dst i32) (param $src i32) (param $sz i32) + (memory.copy ;; nop + (local.get $dst) + (local.get $dst) + (local.get $sz) + ) + + (memory.copy ;; nop + (local.get $dst) + (local.get $src) + (i32.const 0) + ) + ) +) + diff -Nru binaryen-91/test/passes/optimize-instructions_optimize-level=2_ignore-implicit-traps.txt binaryen-99/test/passes/optimize-instructions_optimize-level=2_ignore-implicit-traps.txt --- binaryen-91/test/passes/optimize-instructions_optimize-level=2_ignore-implicit-traps.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/optimize-instructions_optimize-level=2_ignore-implicit-traps.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,362 +0,0 @@ -(module - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_f64 (func (result f64))) - (memory $0 0) - (func $conditionals (; 0 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local.set $0 - (i32.const 0) - ) - (loop $while-in - (local.set $3 - (i32.const 0) - ) - (loop $while-in6 - (local.set $6 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $0 - (if (result i32) - (if (result i32) - (i32.rem_s - (i32.add - (i32.mul - (local.get $0) - (local.tee $7 - (i32.add - (local.get $0) - (i32.const 2) - ) - ) - ) - (i32.const 17) - ) - (i32.const 5) - ) - (i32.eqz - (i32.rem_u - (i32.add - (i32.mul - (local.get $0) - (local.get $0) - ) - (i32.const 11) - ) - (i32.const 3) - ) - ) - (i32.const 1) - ) - (local.get $7) - (local.get $6) - ) - ) - (br_if $while-in6 - (i32.lt_s - (local.tee $3 - (i32.add - (local.get $3) - (i32.const 1) - ) - ) - (local.get $4) - ) - ) - ) - (br_if $while-in - (i32.ne - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.const 27000) - ) - ) - ) - (return - (local.get $5) - ) - ) - (func $side-effect (; 1 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local.set $0 - (i32.const 0) - ) - (loop $while-in - (local.set $3 - (i32.const 0) - ) - (loop $while-in6 - (local.set $6 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $0 - (if (result i32) - (i32.or - (i32.eqz - (i32.rem_s - (i32.add - (i32.mul - (local.get $0) - (local.tee $7 - (local.get $0) - ) - ) - (i32.const 17) - ) - (i32.const 5) - ) - ) - (i32.eqz - (i32.rem_u - (i32.add - (i32.mul - (local.get $0) - (local.get $0) - ) - (unreachable) - ) - (i32.const 3) - ) - ) - ) - (local.get $7) - (local.get $6) - ) - ) - (br_if $while-in6 - (i32.lt_s - (local.tee $3 - (i32.add - (local.get $3) - (i32.const 1) - ) - ) - (local.get $4) - ) - ) - ) - (br_if $while-in - (i32.ne - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.const 27000) - ) - ) - ) - (return - (local.get $5) - ) - ) - (func $flip (; 2 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local.set $0 - (i32.const 0) - ) - (loop $while-in - (local.set $3 - (i32.const 0) - ) - (loop $while-in6 - (local.set $6 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $0 - (if (result i32) - (if (result i32) - (i32.rem_u - (i32.add - (i32.mul - (local.get $0) - (local.get $0) - ) - (i32.const 100) - ) - (i32.const 3) - ) - (i32.eqz - (i32.rem_s - (i32.add - (i32.mul - (local.get $0) - (i32.eqz - (local.get $0) - ) - ) - (i32.const 17) - ) - (i32.const 5) - ) - ) - (i32.const 1) - ) - (local.get $7) - (local.get $6) - ) - ) - (br_if $while-in6 - (i32.lt_s - (local.tee $3 - (i32.add - (local.get $3) - (i32.const 1) - ) - ) - (local.get $4) - ) - ) - ) - (br_if $while-in - (i32.ne - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.const 27000) - ) - ) - ) - (return - (local.get $5) - ) - ) - (func $invalidate-conditionalizeExpensiveOnBitwise (; 3 ;) (param $0 i32) (param $1 i32) (result i32) - (if - (i32.eqz - (i32.and - (i32.lt_s - (i32.and - (i32.shr_s - (i32.shl - (i32.add - (local.get $1) - (i32.const -1) - ) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 255) - ) - (i32.const 3) - ) - (i32.ne - (local.tee $1 - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - (return - (local.get $0) - ) - ) - (return - (local.get $1) - ) - ) - (func $invalidate-conditionalizeExpensiveOnBitwise-ok (; 4 ;) (param $0 i32) (param $1 i32) (result i32) - (if - (i32.eqz - (if (result i32) - (local.tee $1 - (i32.const 0) - ) - (i32.lt_s - (i32.and - (i32.shr_s - (i32.shl - (i32.add - (local.get $0) - (i32.const -1) - ) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 255) - ) - (i32.const 3) - ) - (i32.const 0) - ) - ) - (return - (local.get $0) - ) - ) - (return - (local.get $1) - ) - ) - (func $conditionalize-if-type-change (; 5 ;) (result f64) - (local $0 i32) - (drop - (loop $label$1 (result f32) - (block $label$2 (result f32) - (drop - (block $label$3 (result f32) - (br_if $label$1 - (i32.or - (f32.gt - (br_if $label$3 - (f32.const 1) - (local.get $0) - ) - (br $label$2 - (f32.const 71) - ) - ) - (i64.eqz - (select - (i64.const 58) - (i64.const -982757) - (i64.eqz - (i64.const 0) - ) - ) - ) - ) - ) - ) - ) - (f32.const 1) - ) - ) - ) - (f64.const -nan:0xfffffffffffff) - ) -) diff -Nru binaryen-91/test/passes/optimize-instructions_optimize-level=2_ignore-implicit-traps.wast binaryen-99/test/passes/optimize-instructions_optimize-level=2_ignore-implicit-traps.wast --- binaryen-91/test/passes/optimize-instructions_optimize-level=2_ignore-implicit-traps.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/optimize-instructions_optimize-level=2_ignore-implicit-traps.wast 1970-01-01 00:00:00.000000000 +0000 @@ -1,365 +0,0 @@ -(module - (type $0 (func (param i32 i32) (result i32))) - (memory $0 0) - (func $conditionals (type $0) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local.set $0 - (i32.const 0) - ) - (loop $while-in - (local.set $3 - (i32.const 0) - ) - (loop $while-in6 - (local.set $6 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $0 - (if (result i32) - (i32.or ;; this or is very expensive. we should compute one side, then see if we even need the other - (i32.eqz - (i32.rem_s - (i32.add - (i32.mul - (local.tee $7 ;; side effect, so we can't do this one - (i32.add - (local.get $0) - (i32.const 2) - ) - ) - (local.get $0) - ) - (i32.const 17) - ) - (i32.const 5) - ) - ) - (i32.eqz - (i32.rem_u - (i32.add - (i32.mul - (local.get $0) - (local.get $0) - ) - (i32.const 11) - ) - (i32.const 3) - ) - ) - ) - (local.get $7) - (local.get $6) - ) - ) - (br_if $while-in6 - (i32.lt_s - (local.tee $3 - (i32.add - (local.get $3) - (i32.const 1) - ) - ) - (local.get $4) - ) - ) - ) - (br_if $while-in - (i32.ne - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.const 27000) - ) - ) - ) - (return - (local.get $5) - ) - ) - (func $side-effect (type $0) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local.set $0 - (i32.const 0) - ) - (loop $while-in - (local.set $3 - (i32.const 0) - ) - (loop $while-in6 - (local.set $6 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $0 - (if (result i32) - (i32.or ;; this or is very expensive, but has a side effect on both sides - (i32.eqz - (i32.rem_s - (i32.add - (i32.mul - (local.tee $7 - (i32.add - (local.get $0) - (i32.const 0) - ) - ) - (local.get $0) - ) - (i32.const 17) - ) - (i32.const 5) - ) - ) - (i32.eqz - (i32.rem_u - (i32.add - (i32.mul - (local.get $0) - (local.get $0) - ) - (unreachable) - ) - (i32.const 3) - ) - ) - ) - (local.get $7) - (local.get $6) - ) - ) - (br_if $while-in6 - (i32.lt_s - (local.tee $3 - (i32.add - (local.get $3) - (i32.const 1) - ) - ) - (local.get $4) - ) - ) - ) - (br_if $while-in - (i32.ne - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.const 27000) - ) - ) - ) - (return - (local.get $5) - ) - ) - (func $flip (type $0) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - (local.set $0 - (i32.const 0) - ) - (loop $while-in - (local.set $3 - (i32.const 0) - ) - (loop $while-in6 - (local.set $6 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (local.set $0 - (if (result i32) - (i32.or ;; this or is very expensive, and the first side has no side effect - (i32.eqz - (i32.rem_s - (i32.add - (i32.mul - (i32.eqz - (i32.add - (local.get $0) - (i32.const 0) - ) - ) - (local.get $0) - ) - (i32.const 17) - ) - (i32.const 5) - ) - ) - (i32.eqz - (i32.rem_u - (i32.add - (i32.mul - (local.get $0) - (local.get $0) - ) - (i32.const 100) - ) - (i32.const 3) - ) - ) - ) - (local.get $7) - (local.get $6) - ) - ) - (br_if $while-in6 - (i32.lt_s - (local.tee $3 - (i32.add - (local.get $3) - (i32.const 1) - ) - ) - (local.get $4) - ) - ) - ) - (br_if $while-in - (i32.ne - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.const 27000) - ) - ) - ) - (return - (local.get $5) - ) - ) - (func $invalidate-conditionalizeExpensiveOnBitwise (param $0 i32) (param $1 i32) (result i32) - (if - (i32.eqz - (i32.and - (i32.lt_s - (i32.and - (i32.shr_s - (i32.shl - (i32.add - (local.get $1) ;; conflict with tee - (i32.const -1) - ) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 255) - ) - (i32.const 3) - ) - (i32.ne - (local.tee $1 - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - (return (local.get $0)) - ) - (return (local.get $1)) - ) - (func $invalidate-conditionalizeExpensiveOnBitwise-ok (param $0 i32) (param $1 i32) (result i32) - (if - (i32.eqz - (i32.and - (i32.lt_s - (i32.and - (i32.shr_s - (i32.shl - (i32.add - (local.get $0) ;; no conflict - (i32.const -1) - ) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 255) - ) - (i32.const 3) - ) - (i32.ne - (local.tee $1 - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - (return (local.get $0)) - ) - (return (local.get $1)) - ) - - (func $conditionalize-if-type-change (result f64) - (local $0 i32) - (drop - (loop $label$1 (result f32) - (block $label$2 (result f32) - (drop - (block $label$3 (result f32) - (br_if $label$1 - (i32.or ;; this turns into an if, but then the if might not be unreachable - (f32.gt - (br_if $label$3 - (f32.const 1) - (local.get $0) - ) - (br $label$2 - (f32.const 71) - ) - ) - (i64.eqz - (select - (i64.const 58) - (i64.const -982757) - (i64.eqz - (i64.const 0) - ) - ) - ) - ) - ) - ) - ) - (f32.const 1) - ) - ) - ) - (f64.const -nan:0xfffffffffffff) - ) -) - diff -Nru binaryen-91/test/passes/Os_print-stack-ir_all-features.txt binaryen-99/test/passes/Os_print-stack-ir_all-features.txt --- binaryen-91/test/passes/Os_print-stack-ir_all-features.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/Os_print-stack-ir_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,41 @@ +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (export "stacky-help" (func $stacky-help)) + (func $stacky-help (param $0 i32) (result i32) + i32.const 0 + call $stacky-help + i32.const 1 + call $stacky-help + i32.const 2 + call $stacky-help + drop + i32.eqz + i32.add + ) +) +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (export "stacky-help" (func $stacky-help)) + (func $stacky-help (; has Stack IR ;) (param $0 i32) (result i32) + (i32.add + (call $stacky-help + (i32.const 0) + ) + (block (result i32) + (local.set $0 + (call $stacky-help + (i32.const 1) + ) + ) + (drop + (call $stacky-help + (i32.const 2) + ) + ) + (i32.eqz + (local.get $0) + ) + ) + ) + ) +) diff -Nru binaryen-91/test/passes/Os_print-stack-ir_all-features.wast binaryen-99/test/passes/Os_print-stack-ir_all-features.wast --- binaryen-91/test/passes/Os_print-stack-ir_all-features.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/Os_print-stack-ir_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,16 @@ +(module + (export "stacky-help" (func $stacky-help)) + (func $stacky-help (param $x i32) (result i32) + (local $temp i32) + (i32.add + (call $stacky-help (i32.const 0)) + (i32.eqz + (block (result i32) ;; after we use the stack instead of the local, we can remove this block + (local.set $temp (call $stacky-help (i32.const 1))) + (drop (call $stacky-help (i32.const 2))) + (local.get $temp) + ) + ) + ) + ) +) diff -Nru binaryen-91/test/passes/Os_print-stack-ir.txt binaryen-99/test/passes/Os_print-stack-ir.txt --- binaryen-91/test/passes/Os_print-stack-ir.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/Os_print-stack-ir.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,105 +0,0 @@ -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (export "stacky-help" (func $stacky-help)) - (func $stacky-help (; 0 ;) (param $0 i32) (result i32) - i32.const 0 - call $stacky-help - i32.const 1 - call $stacky-help - i32.const 2 - call $stacky-help - drop - i32.eqz - i32.add - ) -) -(module - (type $i32_=>_i32 (func (param i32) (result i32))) - (export "stacky-help" (func $stacky-help)) - (func $stacky-help (; 0 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (i32.add - (call $stacky-help - (i32.const 0) - ) - (block (result i32) - (local.set $0 - (call $stacky-help - (i32.const 1) - ) - ) - (drop - (call $stacky-help - (i32.const 2) - ) - ) - (i32.eqz - (local.get $0) - ) - ) - ) - ) -) -(module - (type $none_=>_i32 (func (result i32))) - (type $none_=>_i64 (func (result i64))) - (type $none_=>_f32 (func (result f32))) - (type $none_=>_f64 (func (result f64))) - (export "ppi32" (func $0)) - (export "ppi64" (func $1)) - (export "ppf32" (func $2)) - (export "ppf64" (func $3)) - (func $0 (; 0 ;) (result i32) - i32.const 1 - - - ) - (func $1 (; 1 ;) (result i64) - i64.const 1 - - - ) - (func $2 (; 2 ;) (result f32) - f32.const 1 - - - ) - (func $3 (; 3 ;) (result f64) - f64.const 1 - - - ) -) -(module - (type $none_=>_i32 (func (result i32))) - (type $none_=>_i64 (func (result i64))) - (type $none_=>_f32 (func (result f32))) - (type $none_=>_f64 (func (result f64))) - (export "ppi32" (func $0)) - (export "ppi64" (func $1)) - (export "ppf32" (func $2)) - (export "ppf64" (func $3)) - (func $0 (; 0 ;) (; has Stack IR ;) (result i32) - (push - (i32.const 1) - ) - (i32.pop) - ) - (func $1 (; 1 ;) (; has Stack IR ;) (result i64) - (push - (i64.const 1) - ) - (i64.pop) - ) - (func $2 (; 2 ;) (; has Stack IR ;) (result f32) - (push - (f32.const 1) - ) - (f32.pop) - ) - (func $3 (; 3 ;) (; has Stack IR ;) (result f64) - (push - (f64.const 1) - ) - (f64.pop) - ) -) diff -Nru binaryen-91/test/passes/Os_print-stack-ir.wast binaryen-99/test/passes/Os_print-stack-ir.wast --- binaryen-91/test/passes/Os_print-stack-ir.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/Os_print-stack-ir.wast 1970-01-01 00:00:00.000000000 +0000 @@ -1,39 +0,0 @@ -(module - (export "stacky-help" (func $stacky-help)) - (func $stacky-help (param $x i32) (result i32) - (local $temp i32) - (i32.add - (call $stacky-help (i32.const 0)) - (i32.eqz - (block (result i32) ;; after we use the stack instead of the local, we can remove this block - (local.set $temp (call $stacky-help (i32.const 1))) - (drop (call $stacky-help (i32.const 2))) - (local.get $temp) - ) - ) - ) - ) -) -(module - ;; These are not quite valid usages of push/pop - they are not meant to be used - ;; with each other. This just tests we can emit them/handle them in the optimizer. - ;; Once we have proper places to use them, we can tighten up the validation and - ;; replace this test with something correct. - (func "ppi32" (result i32) - (push (i32.const 1)) - (i32.pop) - ) - (func "ppi64" (result i64) - (push (i64.const 1)) - (i64.pop) - ) - (func "ppf32" (result f32) - (push (f32.const 1)) - (f32.pop) - ) - (func "ppf64" (result f64) - (push (f64.const 1)) - (f64.pop) - ) -) - diff -Nru binaryen-91/test/passes/O.txt binaryen-99/test/passes/O.txt --- binaryen-91/test/passes/O.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/O.txt 2021-01-07 20:01:06.000000000 +0000 @@ -7,7 +7,7 @@ (export "many-selects" (func $many-selects)) (export "end-if-else" (func $end-if-else)) (export "end-if-else-call" (func $end-if-else-call)) - (func $ret (; 0 ;) (; has Stack IR ;) (result i32) + (func $ret (; has Stack IR ;) (result i32) (drop (call $ret) ) @@ -19,10 +19,10 @@ ) (i32.const 999) ) - (func $if-0-unreachable-to-none (; 1 ;) (; has Stack IR ;) (param $0 i64) + (func $if-0-unreachable-to-none (; has Stack IR ;) (param $0 i64) (unreachable) ) - (func $many-selects (; 2 ;) (; has Stack IR ;) (param $0 i32) (result i32) + (func $many-selects (; has Stack IR ;) (param $0 i32) (result i32) (select (i32.const -1073741824) (select @@ -39,14 +39,14 @@ ) ) ) - (func $end-if-else (; 3 ;) (; has Stack IR ;) (param $0 i32) (result i32) + (func $end-if-else (; has Stack IR ;) (param $0 i32) (result i32) (select (i32.const 1) (local.get $0) (local.get $0) ) ) - (func $end-if-else-call (; 4 ;) (; has Stack IR ;) (param $0 i32) (result i32) + (func $end-if-else-call (; has Stack IR ;) (param $0 i32) (result i32) (if (result i32) (local.get $0) (call $ret) diff -Nru binaryen-91/test/passes/Oz_fuzz-exec_all-features.txt binaryen-99/test/passes/Oz_fuzz-exec_all-features.txt --- binaryen-91/test/passes/Oz_fuzz-exec_all-features.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/Oz_fuzz-exec_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,220 @@ +[fuzz-exec] calling structs +[LoggingExternalInterface logging 0] +[LoggingExternalInterface logging 42] +[LoggingExternalInterface logging 100] +[LoggingExternalInterface logging 100] +[fuzz-exec] calling arrays +[LoggingExternalInterface logging 50] +[LoggingExternalInterface logging 42] +[LoggingExternalInterface logging 128] +[LoggingExternalInterface logging -128] +[LoggingExternalInterface logging 42] +[fuzz-exec] calling rtts +[LoggingExternalInterface logging 1] +[LoggingExternalInterface logging 0] +[LoggingExternalInterface logging 0] +[LoggingExternalInterface logging 1] +[LoggingExternalInterface logging 0] +[LoggingExternalInterface logging 1] +[LoggingExternalInterface logging 0] +[LoggingExternalInterface logging 1] +[fuzz-exec] calling br_on_cast +[LoggingExternalInterface logging 3] +[trap unreachable] +(module + (type ${i32} (struct (field i32))) + (type $none_=>_none (func)) + (type ${i32_f64} (struct (field i32) (field f64))) + (type $[mut:i8] (array (mut i8))) + (type $i32_=>_none (func (param i32))) + (import "fuzzing-support" "log-i32" (func $log (param i32))) + (export "structs" (func $0)) + (export "arrays" (func $1)) + (export "rtts" (func $2)) + (export "br_on_cast" (func $3)) + (func $0 (; has Stack IR ;) + (local $0 (ref null ${i32})) + (call $log + (struct.get ${i32} 0 + (local.tee $0 + (struct.new_default_with_rtt ${i32} + (rtt.canon ${i32}) + ) + ) + ) + ) + (struct.set ${i32} 0 + (local.get $0) + (i32.const 42) + ) + (call $log + (struct.get ${i32} 0 + (local.get $0) + ) + ) + (struct.set ${i32} 0 + (local.get $0) + (i32.const 100) + ) + (call $log + (struct.get ${i32} 0 + (local.get $0) + ) + ) + (call $log + (struct.get ${i32} 0 + (local.get $0) + ) + ) + ) + (func $1 (; has Stack IR ;) + (local $0 (ref null $[mut:i8])) + (call $log + (array.len $[mut:i8] + (local.tee $0 + (array.new_with_rtt $[mut:i8] + (rtt.canon $[mut:i8]) + (i32.const 50) + (i32.const 42) + ) + ) + ) + ) + (call $log + (array.get_u $[mut:i8] + (local.get $0) + (i32.const 10) + ) + ) + (array.set $[mut:i8] + (local.get $0) + (i32.const 10) + (i32.const 65408) + ) + (call $log + (array.get_u $[mut:i8] + (local.get $0) + (i32.const 10) + ) + ) + (call $log + (array.get_s $[mut:i8] + (local.get $0) + (i32.const 10) + ) + ) + (call $log + (array.get_s $[mut:i8] + (local.get $0) + (i32.const 20) + ) + ) + ) + (func $2 (; has Stack IR ;) + (local $0 (rtt ${i32})) + (local $1 (rtt ${i32_f64})) + (local $2 (rtt ${i32_f64})) + (local $3 anyref) + (local.set $1 + (rtt.sub ${i32_f64} + (local.tee $0 + (rtt.canon ${i32}) + ) + ) + ) + (local.set $2 + (rtt.canon ${i32_f64}) + ) + (call $log + (ref.is_null + (ref.cast ${i32} + (ref.null ${i32}) + (local.get $0) + ) + ) + ) + (call $log + (ref.test ${i32} + (ref.null ${i32}) + (local.get $0) + ) + ) + (call $log + (ref.test ${i32} + (array.new_with_rtt $[mut:i8] + (rtt.canon $[mut:i8]) + (i32.const 10) + (i32.const 20) + ) + (local.get $0) + ) + ) + (call $log + (ref.test ${i32} + (struct.new_default_with_rtt ${i32} + (local.get $0) + ) + (local.get $0) + ) + ) + (call $log + (ref.test ${i32_f64} + (struct.new_default_with_rtt ${i32} + (local.get $0) + ) + (local.get $2) + ) + ) + (call $log + (ref.test ${i32_f64} + (local.tee $3 + (struct.new_default_with_rtt ${i32_f64} + (local.get $1) + ) + ) + (local.get $1) + ) + ) + (call $log + (ref.test ${i32_f64} + (local.get $3) + (local.get $2) + ) + ) + (call $log + (ref.test ${i32} + (local.get $3) + (local.get $0) + ) + ) + ) + (func $3 (; has Stack IR ;) + (call $log + (i32.const 3) + ) + (unreachable) + ) +) +[fuzz-exec] calling structs +[LoggingExternalInterface logging 0] +[LoggingExternalInterface logging 42] +[LoggingExternalInterface logging 100] +[LoggingExternalInterface logging 100] +[fuzz-exec] calling arrays +[LoggingExternalInterface logging 50] +[LoggingExternalInterface logging 42] +[LoggingExternalInterface logging 128] +[LoggingExternalInterface logging -128] +[LoggingExternalInterface logging 42] +[fuzz-exec] calling rtts +[LoggingExternalInterface logging 1] +[LoggingExternalInterface logging 0] +[LoggingExternalInterface logging 0] +[LoggingExternalInterface logging 1] +[LoggingExternalInterface logging 0] +[LoggingExternalInterface logging 1] +[LoggingExternalInterface logging 0] +[LoggingExternalInterface logging 1] +[fuzz-exec] calling br_on_cast +[LoggingExternalInterface logging 3] +[trap unreachable] diff -Nru binaryen-91/test/passes/Oz_fuzz-exec_all-features.wast binaryen-99/test/passes/Oz_fuzz-exec_all-features.wast --- binaryen-91/test/passes/Oz_fuzz-exec_all-features.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/Oz_fuzz-exec_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,182 @@ +(module + (type $struct (struct i32)) + (type $extendedstruct (struct i32 f64)) + (type $bytes (array (mut i8))) + (import "fuzzing-support" "log-i32" (func $log (param i32))) + (func "structs" + (local $x (ref null $struct)) + (local $y (ref null $struct)) + (local.set $x + (struct.new_default_with_rtt $struct + (rtt.canon $struct) + ) + ) + ;; The value is initialized to 0 + ;; Note: -Oz will optimize all these to constants thanks to Precompute + (call $log + (struct.get $struct 0 (local.get $x)) + ) + ;; Assigning a value works + (struct.set $struct 0 + (local.get $x) + (i32.const 42) + ) + (call $log + (struct.get $struct 0 (local.get $x)) + ) + ;; References are references, so writing to one's value affects the other's + (local.set $y (local.get $x)) + (struct.set $struct 0 + (local.get $y) + (i32.const 100) + ) + (call $log + (struct.get $struct 0 (local.get $x)) + ) + (call $log + (struct.get $struct 0 (local.get $y)) + ) + ) + (func "arrays" + (local $x (ref null $bytes)) + (local.set $x + (array.new_with_rtt $bytes + (rtt.canon $bytes) + (i32.const 50) ;; size + (i32.const 42) ;; value to splat into the array + ) + ) + ;; The length should be 50 + (call $log + (array.len $bytes (local.get $x)) + ) + ;; The value should be 42 + (call $log + (array.get_u $bytes (local.get $x) (i32.const 10)) + ) + ;; Write a value that will be truncated into an i8 + (array.set $bytes (local.get $x) (i32.const 10) (i32.const 0xff80)) + ;; The value should be 0x80 (-128 or 128 depending on signed/unsigned) + (call $log + (array.get_u $bytes (local.get $x) (i32.const 10)) + ) + (call $log + (array.get_s $bytes (local.get $x) (i32.const 10)) + ) + ;; Other items than the one at index 10 are unaffected. + (call $log + (array.get_s $bytes (local.get $x) (i32.const 20)) + ) + ) + (func "rtts" + (local $x (rtt $struct)) + (local $y (rtt $extendedstruct)) + (local $z (rtt $extendedstruct)) + (local $any anyref) + (local.set $x (rtt.canon $struct)) + (local.set $y (rtt.sub $extendedstruct (local.get $x))) + (local.set $z (rtt.canon $extendedstruct)) + ;; Casting null returns null. + (call $log (ref.is_null + (ref.cast $struct (ref.null $struct) (local.get $x)) + )) + ;; Testing null returns 0. + (call $log + (ref.test $struct (ref.null $struct) (local.get $x)) + ) + ;; Testing something completely wrong (struct vs array) returns 0. + (call $log + (ref.test $struct + (array.new_with_rtt $bytes + (rtt.canon $bytes) + (i32.const 10) + (i32.const 20) + ) + (local.get $x) + ) + ) + ;; Testing a thing with the same RTT returns 1. + (call $log + (ref.test $struct + (struct.new_default_with_rtt $struct + (local.get $x) + ) + (local.get $x) + ) + ) + ;; A bad downcast returns 0: we create a struct, which is not a extendedstruct. + (call $log + (ref.test $extendedstruct + (struct.new_default_with_rtt $struct + (local.get $x) + ) + (local.get $z) + ) + ) + ;; Create a extendedstruct with RTT y, and upcast statically to anyref. + (local.set $any + (struct.new_default_with_rtt $extendedstruct + (local.get $y) + ) + ) + ;; Casting to y, the exact same RTT, works. + (call $log + (ref.test $extendedstruct + (local.get $any) + (local.get $y) + ) + ) + ;; Casting to z, another RTT of the same data type, fails. + (call $log + (ref.test $extendedstruct + (local.get $any) + (local.get $z) + ) + ) + ;; Casting to x, the parent of y, works. + (call $log + (ref.test $struct + (local.get $any) + (local.get $x) + ) + ) + ) + (func "br_on_cast" + (local $any anyref) + ;; create a simple $struct, store it in an anyref + (local.set $any + (struct.new_default_with_rtt $struct (rtt.canon $struct)) + ) + (drop + (block $block (result ($ref $struct)) + (drop + (block $extendedblock (result (ref $extendedstruct)) + (drop + ;; second, try to cast our simple $struct to what it is, which will work + (br_on_cast $block $struct + ;; first, try to cast our simple $struct to an extended, which will fail + (br_on_cast $extendedblock $extendedstruct + (local.get $any) (rtt.canon $extendedstruct) + ) + (rtt.canon $struct) + ) + ) + (call $log (i32.const -1)) ;; we should never get here + (return) + ) + ) + (call $log (i32.const -2)) ;; we should never get here either + (return) + ) + ) + (call $log (i32.const 3)) ;; we should get here + (drop + (block $never (result (ref $extendedstruct)) + ;; an untaken br_on_cast, with unreachable rtt - so we cannot use the + ;; RTT in binaryen IR to find the cast type. + (br_on_cast $never $extendedstruct (ref.null $struct) (unreachable)) + (unreachable) + ) + ) + ) +) diff -Nru binaryen-91/test/passes/Oz.txt binaryen-99/test/passes/Oz.txt --- binaryen-91/test/passes/Oz.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/Oz.txt 2021-01-07 20:01:06.000000000 +0000 @@ -4,7 +4,7 @@ (memory $0 100 100) (export "localcse" (func $basics)) (export "localcse-2" (func $8)) - (func $basics (; 0 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) + (func $basics (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) (i32.add (i32.add (local.get $0) @@ -16,7 +16,7 @@ ) ) ) - (func $8 (; 1 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $8 (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (i32.store (local.tee $0 (i32.add diff -Nru binaryen-91/test/passes/pick-load-signs_all-features.txt binaryen-99/test/passes/pick-load-signs_all-features.txt --- binaryen-91/test/passes/pick-load-signs_all-features.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/pick-load-signs_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,24 @@ +(module + (type $none_=>_i32 (func (result i32))) + (memory $0 (shared 16 16)) + (func $atomics-are-always-unsigned (result i32) + (local $0 i32) + (drop + (block $block (result i32) + (local.set $0 + (i32.atomic.load16_u + (i32.const 27) + ) + ) + (i32.shr_s + (i32.shl + (local.get $0) + (i32.const 16) + ) + (i32.const 16) + ) + ) + ) + (i32.const -65) + ) +) diff -Nru binaryen-91/test/passes/pick-load-signs_all-features.wast binaryen-99/test/passes/pick-load-signs_all-features.wast --- binaryen-91/test/passes/pick-load-signs_all-features.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/pick-load-signs_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,23 @@ +(module + (memory $0 (shared 16 16)) + (func $atomics-are-always-unsigned (result i32) + (local $0 i32) + (drop + (block (result i32) + (local.set $0 + (i32.atomic.load16_u ;; an atomic load cannot become signed + (i32.const 27) + ) + ) + (i32.shr_s + (i32.shl + (local.get $0) + (i32.const 16) + ) + (i32.const 16) + ) + ) + ) + (i32.const -65) + ) +) diff -Nru binaryen-91/test/passes/pick-load-signs.txt binaryen-99/test/passes/pick-load-signs.txt --- binaryen-91/test/passes/pick-load-signs.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/pick-load-signs.txt 2021-01-07 20:01:06.000000000 +0000 @@ -2,7 +2,7 @@ (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) (memory $0 1) - (func $a (; 0 ;) + (func $a (local $y i32) (local.set $y (i32.load8_u @@ -16,7 +16,7 @@ ) ) ) - (func $b (; 1 ;) + (func $b (local $y i32) (local.set $y (i32.load16_u @@ -30,7 +30,7 @@ ) ) ) - (func $c (; 2 ;) + (func $c (local $y i32) (local.set $y (i32.load8_u @@ -44,7 +44,7 @@ ) ) ) - (func $d (; 3 ;) + (func $d (local $y i32) (local.set $y (i32.load16_u @@ -58,7 +58,7 @@ ) ) ) - (func $one-of-each (; 4 ;) + (func $one-of-each (local $y i32) (local.set $y (i32.load8_s @@ -81,7 +81,7 @@ ) ) ) - (func $more-of-one (; 5 ;) + (func $more-of-one (local $y i32) (local.set $y (i32.load8_s @@ -110,7 +110,7 @@ ) ) ) - (func $many-more-of-one (; 6 ;) + (func $many-more-of-one (local $y i32) (local.set $y (i32.load8_u @@ -145,7 +145,7 @@ ) ) ) - (func $a-sign (; 7 ;) + (func $a-sign (local $y i32) (local.set $y (i32.load8_s @@ -162,7 +162,7 @@ ) ) ) - (func $multivar (; 8 ;) + (func $multivar (local $x i32) (local $y i32) (local.set $x @@ -191,7 +191,7 @@ ) ) ) - (func $corners (; 9 ;) + (func $corners (local $y i32) (drop (i32.load8_s @@ -207,7 +207,7 @@ (i32.const 1024) ) ) - (func $wrong-size (; 10 ;) + (func $wrong-size (local $y i32) (local.set $y (i32.load8_s @@ -221,7 +221,7 @@ ) ) ) - (func $wrong-size_s (; 11 ;) + (func $wrong-size_s (local $y i32) (local.set $y (i32.load8_u @@ -238,7 +238,7 @@ ) ) ) - (func $non-sign-or-unsigned-use (; 12 ;) + (func $non-sign-or-unsigned-use (local $y i32) (local.set $y (i32.load8_s @@ -255,12 +255,12 @@ (local.get $y) ) ) - (func $toplevel-load (; 13 ;) (result i32) + (func $toplevel-load (result i32) (i32.load8_s (i32.const 1024) ) ) - (func $tees (; 14 ;) + (func $tees (local $y i32) (drop (local.tee $y diff -Nru binaryen-91/test/passes/post-assemblyscript-finalize.txt binaryen-99/test/passes/post-assemblyscript-finalize.txt --- binaryen-91/test/passes/post-assemblyscript-finalize.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/post-assemblyscript-finalize.txt 2021-01-07 20:01:06.000000000 +0000 @@ -6,33 +6,33 @@ (import "rt" "retain" (func $~lib/rt/pure/__retain (param i32) (result i32))) (import "rt" "release" (func $~lib/rt/pure/__release (param i32))) (import "rt" "alloc" (func $~lib/rt/tlsf/__alloc (param i32 i32) (result i32))) - (func $eliminates.unnecessaryAllocation (; 3 ;) + (func $eliminates.unnecessaryAllocation (nop) ) - (func $eliminates.unnecessaryPair (; 4 ;) (param $0 i32) + (func $eliminates.unnecessaryPair (param $0 i32) (drop (local.get $0) ) ) - (func $eliminates.unnecessaryStaticPair (; 5 ;) + (func $eliminates.unnecessaryStaticPair (nop) ) - (func $eliminates.unnecessaryStaticRetain (; 6 ;) + (func $eliminates.unnecessaryStaticRetain (drop (i32.const 272) ) ) - (func $eliminates.unnecessaryStaticRelease (; 7 ;) + (func $eliminates.unnecessaryStaticRelease (nop) ) - (func $keeps.dynamicRetain (; 8 ;) (param $0 i32) + (func $keeps.dynamicRetain (param $0 i32) (local.set $0 (call $~lib/rt/pure/__retain (local.get $0) ) ) ) - (func $keeps.dynamicRelease (; 9 ;) (param $0 i32) + (func $keeps.dynamicRelease (param $0 i32) (call $~lib/rt/pure/__release (local.get $0) ) diff -Nru binaryen-91/test/passes/post-assemblyscript.txt binaryen-99/test/passes/post-assemblyscript.txt --- binaryen-91/test/passes/post-assemblyscript.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/post-assemblyscript.txt 2021-01-07 20:01:06.000000000 +0000 @@ -8,20 +8,20 @@ (import "rt" "retain" (func $~lib/rt/pure/__retain (param i32) (result i32))) (import "rt" "release" (func $~lib/rt/pure/__release (param i32))) (import "rc" "getRetainedRef" (func $getRetainedRef (result i32))) - (func $eliminates.linearArgument (; 3 ;) (param $0 i32) + (func $eliminates.linearArgument (param $0 i32) (local.set $0 (local.get $0) ) (nop) ) - (func $eliminates.linearLocal (; 4 ;) (param $0 i32) + (func $eliminates.linearLocal (param $0 i32) (local $1 i32) (local.set $1 (local.get $0) ) (nop) ) - (func $eliminates.linearChain (; 5 ;) (param $0 i32) + (func $eliminates.linearChain (param $0 i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -38,7 +38,7 @@ (nop) (nop) ) - (func $eliminates.balancedReleases (; 6 ;) (param $0 i32) (param $cond i32) + (func $eliminates.balancedReleases (param $0 i32) (param $cond i32) (local $2 i32) (local.set $2 (local.get $0) @@ -49,7 +49,7 @@ (nop) ) ) - (func $eliminates.partialReleases (; 7 ;) (param $0 i32) (param $cond i32) + (func $eliminates.partialReleases (param $0 i32) (param $cond i32) (local $2 i32) (local.set $2 (local.get $0) @@ -59,7 +59,7 @@ (nop) ) ) - (func $eliminates.balancedRetains (; 8 ;) (param $0 i32) (param $cond1 i32) (param $cond2 i32) + (func $eliminates.balancedRetains (param $0 i32) (param $cond1 i32) (param $cond2 i32) (local $3 i32) (if (local.get $cond1) @@ -78,7 +78,7 @@ ) (nop) ) - (func $eliminates.balancedInsideLoop (; 9 ;) (param $0 i32) (param $cond i32) + (func $eliminates.balancedInsideLoop (param $0 i32) (param $cond i32) (local $flat i32) (block $break|0 (loop $continue|0 @@ -99,7 +99,7 @@ (unreachable) ) ) - (func $eliminates.balancedOutsideLoop (; 10 ;) (param $0 i32) (param $cond i32) + (func $eliminates.balancedOutsideLoop (param $0 i32) (param $cond i32) (local $flat i32) (local.set $0 (local.get $0) @@ -120,7 +120,7 @@ ) (nop) ) - (func $eliminates.balancedInsideOutsideLoop (; 11 ;) (param $0 i32) (param $cond i32) + (func $eliminates.balancedInsideOutsideLoop (param $0 i32) (param $cond i32) (local $flat i32) (local.set $0 (local.get $0) @@ -145,7 +145,7 @@ ) (nop) ) - (func $eliminates.balancedInsideOutsideLoopWithBranch (; 12 ;) (param $0 i32) (param $cond1 i32) (param $cond2 i32) + (func $eliminates.balancedInsideOutsideLoopWithBranch (param $0 i32) (param $cond1 i32) (param $cond2 i32) (local $flat i32) (local.set $0 (local.get $0) @@ -177,7 +177,7 @@ ) (nop) ) - (func $eliminates.replace (; 13 ;) (param $0 i32) (param $1 i32) + (func $eliminates.replace (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local.set $0 @@ -208,7 +208,7 @@ (nop) (nop) ) - (func $eliminates.replaceAlreadyRetained (; 14 ;) (param $0 i32) (result i32) + (func $eliminates.replaceAlreadyRetained (param $0 i32) (result i32) (local $1 i32) (block $block (local.set $0 @@ -226,7 +226,7 @@ ) ) ) - (func $keeps.partialRetains (; 15 ;) (param $0 i32) (param $cond i32) + (func $keeps.partialRetains (param $0 i32) (param $cond i32) (if (local.get $cond) (local.set $0 @@ -239,7 +239,7 @@ (local.get $0) ) ) - (func $keeps.reachesReturn (; 16 ;) (param $0 i32) (param $cond i32) (result i32) + (func $keeps.reachesReturn (param $0 i32) (param $cond i32) (result i32) (block $block (local.set $0 (call $~lib/rt/pure/__retain diff -Nru binaryen-91/test/passes/post-emscripten_pass-arg=emscripten-sbrk-ptr@16_pass-arg=emscripten-sbrk-val@42.txt binaryen-99/test/passes/post-emscripten_pass-arg=emscripten-sbrk-ptr@16_pass-arg=emscripten-sbrk-val@42.txt --- binaryen-91/test/passes/post-emscripten_pass-arg=emscripten-sbrk-ptr@16_pass-arg=emscripten-sbrk-val@42.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/post-emscripten_pass-arg=emscripten-sbrk-ptr@16_pass-arg=emscripten-sbrk-val@42.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (memory $0 1 1) - (data (i32.const 0) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00*\00\00\00") - (func $internal (; 0 ;) (result i32) - (i32.const 16) - ) -) -(module - (memory $0 1 1) - (data (i32.const 0) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00*\00\00\00") -) -(module - (type $none_=>_i32 (func (result i32))) - (memory $0 10 10) - (data (i32.const 0) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00*\00\00\00") - (func $internal (; 0 ;) (result i32) - (i32.const 16) - ) -) -(module - (type $none_=>_i32 (func (result i32))) - (memory $0 10 10) - (data (i32.const 0) "1234567890123456*\00\00\00") - (func $internal (; 0 ;) (result i32) - (i32.const 16) - ) -) -(module - (type $none_=>_i32 (func (result i32))) - (memory $0 10 10) - (data (i32.const 0) "1234567890\00\00\00\00\00\00*\00\00\00") - (func $internal (; 0 ;) (result i32) - (i32.const 16) - ) -) -(module - (type $none_=>_i32 (func (result i32))) - (memory $0 10 10) - (data (i32.const 0) "\00\00\00\00\00\00\00\00\00\00123456*\00\00\001234567890") - (func $internal (; 0 ;) (result i32) - (i32.const 16) - ) -) -(module - (type $none_=>_i32 (func (result i32))) - (memory $0 10 10) - (data (i32.const 0) "\00\00\00\00\00\00\00\00\00\00123456*\00\00\00") - (func $internal (; 0 ;) (result i32) - (i32.const 16) - ) -) -(module - (type $none_=>_i32 (func (result i32))) - (memory $0 10 10) - (data (i32.const 0) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00*\00\00\00\00\00\00\001234567890") - (func $internal (; 0 ;) (result i32) - (i32.const 16) - ) -) diff -Nru binaryen-91/test/passes/post-emscripten_pass-arg=emscripten-sbrk-ptr@16_pass-arg=emscripten-sbrk-val@42.wast binaryen-99/test/passes/post-emscripten_pass-arg=emscripten-sbrk-ptr@16_pass-arg=emscripten-sbrk-val@42.wast --- binaryen-91/test/passes/post-emscripten_pass-arg=emscripten-sbrk-ptr@16_pass-arg=emscripten-sbrk-val@42.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/post-emscripten_pass-arg=emscripten-sbrk-ptr@16_pass-arg=emscripten-sbrk-val@42.wast 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -(module - (import "env" "emscripten_get_sbrk_ptr" (func $internal(result i32))) -) -(module -) -(module - (memory $0 10 10) - (import "env" "emscripten_get_sbrk_ptr" (func $internal(result i32))) -) -(module - (memory $0 10 10) - (data (i32.const 0) "12345678901234567890") - (import "env" "emscripten_get_sbrk_ptr" (func $internal(result i32))) -) -(module - (memory $0 10 10) - (data (i32.const 0) "1234567890") - (import "env" "emscripten_get_sbrk_ptr" (func $internal(result i32))) -) -(module - (memory $0 10 10) - (data (i32.const 10) "12345678901234567890") - (import "env" "emscripten_get_sbrk_ptr" (func $internal(result i32))) -) -(module - (memory $0 10 10) - (data (i32.const 10) "1234567890") - (import "env" "emscripten_get_sbrk_ptr" (func $internal(result i32))) -) -(module - (memory $0 10 10) - (data (i32.const 24) "1234567890") - (import "env" "emscripten_get_sbrk_ptr" (func $internal(result i32))) -) - diff -Nru binaryen-91/test/passes/post-emscripten_pass-arg=emscripten-sbrk-ptr@4008.txt binaryen-99/test/passes/post-emscripten_pass-arg=emscripten-sbrk-ptr@4008.txt --- binaryen-91/test/passes/post-emscripten_pass-arg=emscripten-sbrk-ptr@4008.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/post-emscripten_pass-arg=emscripten-sbrk-ptr@4008.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ -(module - (type $none_=>_i32 (func (result i32))) - (func $internal (; 0 ;) (result i32) - (i32.const 4008) - ) -) -(module -) diff -Nru binaryen-91/test/passes/post-emscripten_pass-arg=emscripten-sbrk-ptr@4008.wast binaryen-99/test/passes/post-emscripten_pass-arg=emscripten-sbrk-ptr@4008.wast --- binaryen-91/test/passes/post-emscripten_pass-arg=emscripten-sbrk-ptr@4008.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/post-emscripten_pass-arg=emscripten-sbrk-ptr@4008.wast 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -(module - (import "env" "emscripten_get_sbrk_ptr" (func $internal(result i32))) -) -(module -) diff -Nru binaryen-91/test/passes/post-emscripten.txt binaryen-99/test/passes/post-emscripten.txt --- binaryen-91/test/passes/post-emscripten.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/post-emscripten.txt 2021-01-07 20:01:06.000000000 +0000 @@ -2,83 +2,19 @@ (type $i32_f32_=>_none (func (param i32 f32))) (type $none_=>_none (func)) (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (import "global.Math" "pow" (func $Math_pow (param f64 f64) (result f64))) (import "env" "invoke_vif" (func $invoke_vif (param i32 i32 f32))) (memory $0 256 256) (table $0 7 7 funcref) - (elem (i32.const 0) $pow2 $pow.2 $exc $other_safe $other_unsafe $deep_safe $deep_unsafe) - (func $pow2 (; 2 ;) - (local $x f64) - (local $y f64) - (local $2 f64) - (local $3 f64) - (drop - (f64.mul - (local.tee $2 - (f64.const 1) - ) - (local.get $2) - ) - ) - (drop - (call $Math_pow - (f64.const 1) - (f64.const 3) - ) - ) - (drop - (call $Math_pow - (f64.const 2) - (f64.const 1) - ) - ) - (local.set $x - (f64.const 5) - ) - (drop - (f64.mul - (local.get $x) - (local.get $x) - ) - ) - (drop - (f64.mul - (local.tee $y - (f64.const 7) - ) - (local.get $y) - ) - ) - (drop - (f64.mul - (local.tee $3 - (f64.const 8) - ) - (local.get $3) - ) - ) - ) - (func $pow.2 (; 3 ;) - (drop - (f64.sqrt - (f64.const 1) - ) - ) - (drop - (call $Math_pow - (f64.const 1) - (f64.const 0.51) - ) - ) + (elem (i32.const 0) $f1 $exc $other_safe $other_unsafe $deep_safe $deep_unsafe) + (func $f1 + (nop) ) - (func $exc (; 4 ;) + (func $exc (call $other_safe (i32.const 42) (f32.const 3.141590118408203) ) - (call $invoke_vif - (i32.const 4) + (call $other_unsafe (i32.const 55) (f32.const 2.1828181743621826) ) @@ -86,8 +22,7 @@ (i32.const 100) (f32.const 1.1109999418258667) ) - (call $invoke_vif - (i32.const 6) + (call $deep_unsafe (i32.const 999) (f32.const 1.4140000343322754) ) @@ -100,24 +35,19 @@ (f32.const 3.141590118408203) ) ) - (func $other_safe (; 5 ;) (param $0 i32) (param $1 f32) + (func $other_safe (param $0 i32) (param $1 f32) (nop) ) - (func $other_unsafe (; 6 ;) (param $0 i32) (param $1 f32) - (drop - (call $Math_pow - (f64.const 1) - (f64.const 3) - ) - ) + (func $other_unsafe (param $0 i32) (param $1 f32) + (nop) ) - (func $deep_safe (; 7 ;) (param $0 i32) (param $1 f32) + (func $deep_safe (param $0 i32) (param $1 f32) (call $other_safe (unreachable) (unreachable) ) ) - (func $deep_unsafe (; 8 ;) (param $0 i32) (param $1 f32) + (func $deep_unsafe (param $0 i32) (param $1 f32) (call $other_unsafe (unreachable) (unreachable) @@ -126,7 +56,7 @@ ) (module (type $none_=>_none (func)) - (func $call (; 0 ;) + (func $call (call $call) ) ) @@ -134,21 +64,19 @@ (type $none_=>_none (func)) (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) (type $i32_f32_=>_none (func (param i32 f32))) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) (import "env" "glob" (global $glob i32)) - (import "global.Math" "pow" (func $Math_pow (param f64 f64) (result f64))) (import "env" "invoke_vif" (func $invoke_vif (param i32 i32 f32))) (memory $0 256 256) (table $0 7 7 funcref) (elem (global.get $glob) $other_safe) - (func $exc (; 2 ;) + (func $exc (call $invoke_vif (i32.const 3) (i32.const 42) (f32.const 3.141590118408203) ) ) - (func $other_safe (; 3 ;) (param $0 i32) (param $1 f32) + (func $other_safe (param $0 i32) (param $1 f32) (nop) ) ) @@ -156,21 +84,19 @@ (type $none_=>_none (func)) (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) (type $i32_f32_=>_none (func (param i32 f32))) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) (import "env" "glob" (global $glob i32)) - (import "global.Math" "pow" (func $Math_pow (param f64 f64) (result f64))) (import "env" "invoke_vif" (func $invoke_vif (param i32 i32 f32))) (memory $0 256 256) (table $0 7 7 funcref) (elem (i32.const 0) $other_safe) - (func $exc (; 2 ;) + (func $exc (call $invoke_vif (i32.const 0) (i32.const 42) (f32.const 3.141590118408203) ) ) - (func $other_safe (; 3 ;) (param $0 i32) (param $1 f32) + (func $other_safe (param $0 i32) (param $1 f32) (call_indirect (type $none_=>_none) (i32.const 0) ) diff -Nru binaryen-91/test/passes/post-emscripten.wast binaryen-99/test/passes/post-emscripten.wast --- binaryen-91/test/passes/post-emscripten.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/post-emscripten.wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,83 +1,28 @@ (module (type $0 (func (param i32))) - (import "global.Math" "pow" (func $Math_pow (param f64 f64) (result f64))) (import "env" "invoke_vif" (func $invoke_vif (param i32 i32 f32))) (memory 256 256) (table 7 7 funcref) - (elem (i32.const 0) $pow2 $pow.2 $exc $other_safe $other_unsafe $deep_safe $deep_unsafe) - (func $pow2 - (local $x f64) - (local $y f64) - (drop - (call $Math_pow - (f64.const 1) - (f64.const 2) - ) - ) - (drop - (call $Math_pow - (f64.const 1) - (f64.const 3) - ) - ) - (drop - (call $Math_pow - (f64.const 2) - (f64.const 1) - ) - ) - (local.set $x (f64.const 5)) - (drop - (call $Math_pow - (local.get $x) - (f64.const 2) - ) - ) - (drop - (call $Math_pow - (local.tee $y (f64.const 7)) - (f64.const 2) - ) - ) - (drop - (call $Math_pow - (f64.const 8) - (f64.const 2) - ) - ) - ) - (func $pow.2 - (drop - (call $Math_pow - (f64.const 1) - (f64.const 0.5) - ) - ) - (drop - (call $Math_pow - (f64.const 1) - (f64.const 0.51) - ) - ) - ) + (elem (i32.const 0) $f1 $exc $other_safe $other_unsafe $deep_safe $deep_unsafe) + (func $f1) (func $exc (call $invoke_vif - (i32.const 3) ;; other_safe() + (i32.const 2) ;; other_safe() (i32.const 42) (f32.const 3.14159) ) (call $invoke_vif - (i32.const 4) ;; other_unsafe() + (i32.const 3) ;; other_unsafe() (i32.const 55) (f32.const 2.18281828) ) (call $invoke_vif - (i32.const 5) ;; deep_safe() + (i32.const 4) ;; deep_safe() (i32.const 100) (f32.const 1.111) ) (call $invoke_vif - (i32.const 6) ;; deep_unsafe() + (i32.const 5) ;; deep_unsafe() (i32.const 999) (f32.const 1.414) ) @@ -90,12 +35,6 @@ (func $other_safe (param i32) (param f32) ) (func $other_unsafe (param i32) (param f32) - (drop - (call $Math_pow - (f64.const 1) - (f64.const 3) - ) - ) ) (func $deep_safe (param i32) (param f32) (call $other_safe (unreachable) (unreachable)) @@ -111,7 +50,6 @@ ) (module ;; non-constant base for elem (type $0 (func (param i32))) - (import "global.Math" "pow" (func $Math_pow (param f64 f64) (result f64))) (import "env" "invoke_vif" (func $invoke_vif (param i32 i32 f32))) (import "env" "glob" (global $glob i32)) ;; non-constant table offset (memory 256 256) @@ -129,7 +67,6 @@ ) (module ;; indirect call in the invoke target, which we assume might throw (type $none_=>_none (func)) - (import "global.Math" "pow" (func $Math_pow (param f64 f64) (result f64))) (import "env" "invoke_vif" (func $invoke_vif (param i32 i32 f32))) (import "env" "glob" (global $glob i32)) ;; non-constant table offset (memory 256 256) diff -Nru binaryen-91/test/passes/precompute_all-features.txt binaryen-99/test/passes/precompute_all-features.txt --- binaryen-91/test/passes/precompute_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/precompute_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -4,12 +4,14 @@ (type $none_=>_f64 (func (result f64))) (type $none_=>_v128 (func (result v128))) (type $i32_=>_none (func (param i32))) - (type $none_=>_nullref (func (result nullref))) + (type $none_=>_externref (func (result externref))) + (type $none_=>_i32_i64 (func (result i32 i64))) (memory $0 512 512) (data (i32.const 0) "passive") (global $global i32 (i32.const 1)) (global $global-mut (mut i32) (i32.const 2)) - (func $x (; 0 ;) (param $x i32) + (event $event$0 (attr 0) (param)) + (func $x (param $x i32) (call $x (i32.const 2300) ) @@ -23,6 +25,7 @@ (nop) (nop) (nop) + (nop) (loop $in (br $in) ) @@ -90,7 +93,7 @@ (i32.const 0) ) ) - (func $ret (; 1 ;) (result i32) + (func $ret (result i32) (if (call $ret) (return @@ -105,13 +108,13 @@ ) (i32.const 1) ) - (func $noret (; 2 ;) + (func $noret (if (call $ret) (return) ) ) - (func $refinalize-br-condition-unreachable (; 3 ;) + (func $refinalize-br-condition-unreachable (block $label$1 (drop (br_if $label$1 @@ -120,7 +123,7 @@ ) ) ) - (func $br_if-condition-is-block-i32-but-unreachable-so-refinalize-tricky (; 4 ;) + (func $br_if-condition-is-block-i32-but-unreachable-so-refinalize-tricky (drop (block $label$1 (result i32) (drop @@ -135,7 +138,7 @@ ) ) ) - (func $reuse-br-value (; 5 ;) (result f64) + (func $reuse-br-value (result f64) (block $label$0 (result f64) (i32.store8 (i32.const 1919623207) @@ -162,7 +165,7 @@ (f64.const 4776014875438170098655851e156) ) ) - (func $refinalize-two-breaks-one-unreachable (; 6 ;) + (func $refinalize-two-breaks-one-unreachable (drop (block $label$0 (result i64) (block @@ -185,7 +188,7 @@ ) ) ) - (func $one-break-value-and-it-is-unreachable (; 7 ;) (result f64) + (func $one-break-value-and-it-is-unreachable (result f64) (local $var$0 i32) (block $label$6 (block @@ -196,16 +199,16 @@ ) ) ) - (func $global-notprecomputable (; 8 ;) (result i32) + (func $global-notprecomputable (result i32) (i32.add (i32.const 1) (global.get $global-mut) ) ) - (func $global-precomputable (; 9 ;) (result i32) + (func $global-precomputable (result i32) (i32.const 2) ) - (func $global-partiallyprecomputable (; 10 ;) (result i32) + (func $global-partiallyprecomputable (result i32) (i32.sub (i32.add (i32.const 1) @@ -214,43 +217,111 @@ (i32.const 2) ) ) - (func $no-simd-precompute (; 11 ;) (result v128) + (func $no-simd-precompute (result v128) (i32x4.splat (i32.const 0) ) ) - (func $no-simd-precompute-if (; 12 ;) (result v128) + (func $no-simd-precompute-if (result v128) (return (i32x4.splat (i32.const 0) ) ) ) - (func $no-memory-init-precompute (; 13 ;) + (func $no-memory-init-precompute (memory.init 0 (i32.const 512) (i32.const 0) (i32.const 12) ) ) - (func $no-data-drop-precompute (; 14 ;) + (func $no-data-drop-precompute (data.drop 0) ) - (func $no-memory-copy-precompute (; 15 ;) + (func $no-memory-copy-precompute (memory.copy (i32.const 512) (i32.const 0) (i32.const 12) ) ) - (func $no-memory-fill-precompute (; 16 ;) + (func $no-memory-fill-precompute (memory.fill (i32.const 512) (i32.const 0) (i32.const 12) ) ) - (func $reftype-test (; 17 ;) (result nullref) - (ref.null) + (func $tuple-precompute (result i32 i64) + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + (func $loop-precompute (result i32) + (i32.const 1) + ) + (func $reftype-test (result externref) + (ref.null extern) + ) + (func $dummy + (nop) + ) + (func $br_reuse_node + (drop + (block $l0 (result f32) + (drop + (block $l1 + (global.set $global-mut + (i32.const 1) + ) + (br $l0 + (f32.const 3.5) + ) + ) + ) + (f32.const 0) + ) + ) + (drop + (block $l2 (result externref) + (drop + (block $l3 + (global.set $global-mut + (i32.const 1) + ) + (br $l2 + (ref.null extern) + ) + ) + ) + (ref.null extern) + ) + ) + (drop + (block $l4 (result funcref) + (drop + (block $l5 + (global.set $global-mut + (i32.const 1) + ) + (br $l4 + (ref.func $dummy) + ) + ) + ) + (ref.null func) + ) + ) + ) + (func $unreachable-br_on_exn + (block $label$1 + (drop + (loop $label$2 + (br $label$2) + ) + ) + ) ) ) diff -Nru binaryen-91/test/passes/precompute_all-features.wast binaryen-99/test/passes/precompute_all-features.wast --- binaryen-91/test/passes/precompute_all-features.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/precompute_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -48,6 +48,22 @@ (i32.const 1) ) ) + (drop + (tuple.make + (tuple.extract 0 + (tuple.make + (i32.const 42) + (i32.const 0) + ) + ) + (tuple.extract 1 + (tuple.make + (i64.const 0) + (i64.const 42) + ) + ) + ) + ) (loop $in (br $in) ) @@ -344,8 +360,120 @@ (i32.const 12) ) ) + (func $tuple-precompute (result i32 i64) + (tuple.make + (tuple.extract 0 + (tuple.make + (i32.const 42) + (i32.const 0) + ) + ) + (tuple.extract 1 + (tuple.make + (i64.const 0) + (i64.const 42) + ) + ) + ) + ) + (func $loop-precompute (result i32) + (block $block (result i32) + (loop $loop + (br $block (i32.const 1)) + ) + ) + ) + ;; Check if Precompute pass does not crash on reference types - (func $reftype-test (result nullref) - (ref.null) + (func $reftype-test (result externref) + (ref.null extern) + ) + + ;; Check if constant nodes (const, ref.null, and ref.func) are correctly + ;; reused. (We shouldn't reuse a const node for something like ref.null, which + ;; will incorrectly cause an expression like 'someref.const'.) + (func $dummy) + (func $br_reuse_node + (drop + (block $l0 (result f32) + (drop + (block $l1 (result i32) + (global.set $global-mut + (i32.const 1) + ) + (br_if $l1 + (i32.const 1) + (f32.lt + (br_if $l0 + (f32.const 3.5) + (i32.const 1) + ) + (f32.const 3) + ) + ) + ) + ) + (f32.const 0) + ) + ) + + (drop + (block $l2 (result externref) + (drop + (block $l3 (result i32) + (global.set $global-mut + (i32.const 1) + ) + (br_if $l3 + (i32.const 1) + (ref.is_null + (br_if $l2 + (ref.null extern) + (i32.const 3) + ) + ) + ) + ) + ) + (ref.null extern) + ) + ) + + (drop + (block $l4 (result funcref) + (drop + (block $l5 (result i32) + (global.set $global-mut + (i32.const 1) + ) + (br_if $l5 + (i32.const 1) + (ref.is_null + (br_if $l4 + (ref.func $dummy) + (i32.const 3) + ) + ) + ) + ) + ) + (ref.null func) + ) + ) + ) + + ;; br_on_exn's argument becomes unreachable, so br_on_exn itself is replaced + ;; with its argument in ReFinalize process after precompute. + (event $event$0 (attr 0) (param)) + (func $unreachable-br_on_exn + (block $label$1 + (drop + (br_on_exn $label$1 $event$0 + (loop $label$2 (result exnref) + (br $label$2) + ) + ) + ) + ) ) ) diff -Nru binaryen-91/test/passes/precompute_coalesce-locals_vacuum.txt binaryen-99/test/passes/precompute_coalesce-locals_vacuum.txt --- binaryen-91/test/passes/precompute_coalesce-locals_vacuum.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/precompute_coalesce-locals_vacuum.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) - (func $nested-br_if-value (; 0 ;) (param $0 i32) (result i32) + (func $nested-br_if-value (param $0 i32) (result i32) (loop $label$0 (br $label$0) ) diff -Nru binaryen-91/test/passes/precompute-propagate_all-features.txt binaryen-99/test/passes/precompute-propagate_all-features.txt --- binaryen-91/test/passes/precompute-propagate_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/precompute-propagate_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -2,10 +2,11 @@ (type $i32_=>_none (func (param i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_i32_i64 (func (result i32 i64))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $none_=>_v128 (func (result v128))) (memory $0 10 10) - (func $basic (; 0 ;) (param $p i32) + (func $basic (param $p i32) (local $x i32) (local.set $x (i32.const 10) @@ -14,7 +15,7 @@ (i32.const 20) ) ) - (func $split (; 1 ;) (param $p i32) + (func $split (param $p i32) (local $x i32) (if (i32.const 1) @@ -29,7 +30,7 @@ ) ) ) - (func $split-but-join (; 2 ;) (param $p i32) + (func $split-but-join (param $p i32) (local $x i32) (if (i32.const 1) @@ -44,7 +45,7 @@ (i32.const 20) ) ) - (func $split-but-join-different (; 3 ;) (param $p i32) + (func $split-but-join-different (param $p i32) (local $x i32) (if (i32.const 1) @@ -62,7 +63,7 @@ ) ) ) - (func $split-but-join-different-b (; 4 ;) (param $p i32) + (func $split-but-join-different-b (param $p i32) (local $x i32) (if (i32.const 1) @@ -80,7 +81,7 @@ ) ) ) - (func $split-but-join-init0 (; 5 ;) (param $p i32) + (func $split-but-join-init0 (param $p i32) (local $x i32) (if (i32.const 1) @@ -92,7 +93,7 @@ (i32.const 0) ) ) - (func $later (; 6 ;) (param $p i32) + (func $later (param $p i32) (local $x i32) (local.set $x (i32.const 10) @@ -110,7 +111,7 @@ (i32.const 39) ) ) - (func $later2 (; 7 ;) (param $p i32) (result i32) + (func $later2 (param $p i32) (result i32) (local $x i32) (local.set $x (i32.const 10) @@ -120,7 +121,7 @@ ) (i32.const 20) ) - (func $two-ways-but-identical (; 8 ;) (param $p i32) (result i32) + (func $two-ways-but-identical (param $p i32) (result i32) (local $x i32) (local $y i32) (local.set $x @@ -140,7 +141,7 @@ ) (i32.const 21) ) - (func $two-ways-but-almost-identical (; 9 ;) (param $p i32) (result i32) + (func $two-ways-but-almost-identical (param $p i32) (result i32) (local $x i32) (local $y i32) (local.set $x @@ -163,7 +164,7 @@ ) (local.get $y) ) - (func $deadloop (; 10 ;) (param $p i32) (result i32) + (func $deadloop (param $p i32) (result i32) (local $x i32) (local $y i32) (loop $loop @@ -176,7 +177,7 @@ (br $loop) ) ) - (func $deadloop2 (; 11 ;) (param $p i32) + (func $deadloop2 (param $p i32) (local $x i32) (local $y i32) (loop $loop @@ -195,7 +196,7 @@ (br $loop) ) ) - (func $deadloop3 (; 12 ;) (param $p i32) + (func $deadloop3 (param $p i32) (local $x i32) (local $y i32) (loop $loop @@ -214,7 +215,7 @@ (br $loop) ) ) - (func $through-tee (; 13 ;) (param $x i32) (param $y i32) (result i32) + (func $through-tee (param $x i32) (param $y i32) (result i32) (local.set $x (local.tee $y (i32.const 7) @@ -224,7 +225,7 @@ (i32.const 14) ) ) - (func $through-tee-more (; 14 ;) (param $x i32) (param $y i32) (result i32) + (func $through-tee-more (param $x i32) (param $y i32) (result i32) (local.set $x (i32.eqz (local.tee $y @@ -236,13 +237,13 @@ (i32.const 7) ) ) - (func $multipass (; 15 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $multipass (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (nop) (nop) (local.get $2) ) - (func $through-fallthrough (; 16 ;) (param $x i32) (param $y i32) (result i32) + (func $through-fallthrough (param $x i32) (param $y i32) (result i32) (local.set $x (block $block (result i32) (nop) @@ -255,7 +256,7 @@ (i32.const 14) ) ) - (func $simd-load (; 17 ;) (result v128) + (func $simd-load (result v128) (local $x v128) (local.set $x (v8x16.load_splat @@ -264,4 +265,24 @@ ) (local.get $x) ) + (func $tuple-local (result i32 i64) + (local $i32s (i32 i32)) + (local $i64s (i64 i64)) + (local.set $i32s + (tuple.make + (i32.const 42) + (i32.const 0) + ) + ) + (local.set $i64s + (tuple.make + (i64.const 42) + (i64.const 0) + ) + ) + (tuple.make + (i32.const 42) + (i64.const 0) + ) + ) ) diff -Nru binaryen-91/test/passes/precompute-propagate_all-features.wast binaryen-99/test/passes/precompute-propagate_all-features.wast --- binaryen-91/test/passes/precompute-propagate_all-features.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/precompute-propagate_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -175,4 +175,28 @@ (local.set $x (v8x16.load_splat (i32.const 0))) (local.get $x) ) + (func $tuple-local (result i32 i64) + (local $i32s (i32 i32)) + (local $i64s (i64 i64)) + (local.set $i32s + (tuple.make + (i32.const 42) + (i32.const 0) + ) + ) + (local.set $i64s + (tuple.make + (i64.const 42) + (i64.const 0) + ) + ) + (tuple.make + (tuple.extract 0 + (local.get $i32s) + ) + (tuple.extract 1 + (local.get $i64s) + ) + ) + ) ) diff -Nru binaryen-91/test/passes/print.bin.txt binaryen-99/test/passes/print.bin.txt --- binaryen-91/test/passes/print.bin.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/print.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -4,7 +4,7 @@ (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "memory" (memory $0 256 256)) + (import "env" "memory" (memory $mimport$0 256 256)) (global $global$0 (mut i32) (i32.const 5243904)) (global $global$1 i32 (i32.const 1024)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) @@ -14,10 +14,10 @@ (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) (export "__growWasmMemory" (func $__growWasmMemory)) - (func $__wasm_call_ctors (; 0 ;) + (func $__wasm_call_ctors (nop) ) - (func $main (; 1 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (if (i32.ne (i32.rem_s @@ -57,10 +57,10 @@ ) (local.get $0) ) - (func $stackSave (; 2 ;) (result i32) + (func $stackSave (result i32) (global.get $global$0) ) - (func $stackAlloc (; 3 ;) (param $0 i32) (result i32) + (func $stackAlloc (param $0 i32) (result i32) (global.set $global$0 (local.tee $0 (i32.and @@ -74,12 +74,12 @@ ) (local.get $0) ) - (func $stackRestore (; 4 ;) (param $0 i32) + (func $stackRestore (param $0 i32) (global.set $global$0 (local.get $0) ) ) - (func $__growWasmMemory (; 5 ;) (param $0 i32) (result i32) + (func $__growWasmMemory (param $0 i32) (result i32) (memory.grow (local.get $0) ) @@ -95,7 +95,7 @@ (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "memory" (memory $0 256 256)) + (import "env" "memory" (memory $mimport$0 256 256)) (global $global$0 (mut i32) (i32.const 5243904)) (global $global$1 i32 (i32.const 1024)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) @@ -105,10 +105,10 @@ (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) (export "__growWasmMemory" (func $__growWasmMemory)) - (func $__wasm_call_ctors (; 0 ;) + (func $__wasm_call_ctors (nop) ) - (func $main (; 1 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (if (i32.ne (i32.rem_s @@ -148,10 +148,10 @@ ) (local.get $0) ) - (func $stackSave (; 2 ;) (result i32) + (func $stackSave (result i32) (global.get $global$0) ) - (func $stackAlloc (; 3 ;) (param $0 i32) (result i32) + (func $stackAlloc (param $0 i32) (result i32) (global.set $global$0 (local.tee $0 (i32.and @@ -165,12 +165,12 @@ ) (local.get $0) ) - (func $stackRestore (; 4 ;) (param $0 i32) + (func $stackRestore (param $0 i32) (global.set $global$0 (local.get $0) ) ) - (func $__growWasmMemory (; 5 ;) (param $0 i32) (result i32) + (func $__growWasmMemory (param $0 i32) (result i32) (memory.grow (local.get $0) ) diff -Nru binaryen-91/test/passes/print-call-graph.txt binaryen-99/test/passes/print-call-graph.txt --- binaryen-91/test/passes/print-call-graph.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/print-call-graph.txt 2021-01-07 20:01:06.000000000 +0000 @@ -122,12 +122,10 @@ (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (import "env" "memory" (memory $0 256 256)) (data (global.get $memoryBase) "\05\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\b0\04\00\00\00\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04") - (import "env" "table" (table $0 9 9 funcref)) + (import "env" "table" (table $timport$0 9 9 funcref)) (elem (i32.const 0) $b0 $___stdio_close $b1 $___stdout_write $___stdio_seek $___stdio_write $b2 $_cleanup_387 $b3) (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) - (import "env" "DYNAMICTOP_PTR" (global $DYNAMICTOP_PTR$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) (import "env" "ABORT" (global $ABORT$asm2wasm$import i32)) (import "global" "NaN" (global $nan$asm2wasm$import f64)) (import "global" "Infinity" (global $inf$asm2wasm$import f64)) @@ -145,8 +143,6 @@ (import "env" "___syscall146" (func $___syscall146 (param i32 i32) (result i32))) (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) (global $STACK_MAX (mut i32) (global.get $STACK_MAX$asm2wasm$import)) - (global $DYNAMICTOP_PTR (mut i32) (global.get $DYNAMICTOP_PTR$asm2wasm$import)) - (global $tempDoublePtr (mut i32) (global.get $tempDoublePtr$asm2wasm$import)) (global $ABORT (mut i32) (global.get $ABORT$asm2wasm$import)) (global $__THREW__ (mut i32) (i32.const 0)) (global $threwValue (mut i32) (i32.const 0)) @@ -186,7 +182,7 @@ (export "dynCall_iiii" (func $dynCall_iiii)) (export "dynCall_vi" (func $dynCall_vi)) (export "dynCall_v" (func $dynCall_v)) - (func $stackAlloc (; 10 ;) (param $0 i32) (result i32) + (func $stackAlloc (param $0 i32) (result i32) (local $1 i32) (local.set $1 (global.get $STACKTOP) @@ -208,15 +204,15 @@ ) (local.get $1) ) - (func $stackSave (; 11 ;) (result i32) + (func $stackSave (result i32) (global.get $STACKTOP) ) - (func $stackRestore (; 12 ;) (param $0 i32) + (func $stackRestore (param $0 i32) (global.set $STACKTOP (local.get $0) ) ) - (func $establishStackSpace (; 13 ;) (param $0 i32) (param $1 i32) + (func $establishStackSpace (param $0 i32) (param $1 i32) (global.set $STACKTOP (local.get $0) ) @@ -224,7 +220,7 @@ (local.get $1) ) ) - (func $setThrew (; 14 ;) (param $0 i32) (param $1 i32) + (func $setThrew (param $0 i32) (param $1 i32) (if (i32.eqz (global.get $__THREW__) @@ -239,21 +235,21 @@ ) ) ) - (func $setTempRet0 (; 15 ;) (param $0 i32) + (func $setTempRet0 (param $0 i32) (global.set $tempRet0 (local.get $0) ) ) - (func $getTempRet0 (; 16 ;) (result i32) + (func $getTempRet0 (result i32) (global.get $tempRet0) ) - (func $_malloc (; 17 ;) (param $0 i32) (result i32) + (func $_malloc (param $0 i32) (result i32) (i32.const 0) ) - (func $_free (; 18 ;) (param $0 i32) + (func $_free (param $0 i32) (nop) ) - (func $_main (; 19 ;) (result i32) + (func $_main (result i32) (local $0 i32) (i64.store align=4 (local.tee $0 @@ -265,7 +261,7 @@ ) (local.get $0) ) - (func $___stdio_close (; 20 ;) (param $0 i32) (result i32) + (func $___stdio_close (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local.set $1 @@ -298,7 +294,7 @@ ) (local.get $0) ) - (func $___stdio_write (; 21 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $___stdio_write (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -645,7 +641,7 @@ ) (local.get $0) ) - (func $___stdio_seek (; 22 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $___stdio_seek (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local.set $4 @@ -714,7 +710,7 @@ ) (local.get $0) ) - (func $___syscall_ret (; 23 ;) (param $0 i32) (result i32) + (func $___syscall_ret (param $0 i32) (result i32) (if (result i32) (i32.gt_u (local.get $0) @@ -733,7 +729,7 @@ (local.get $0) ) ) - (func $___errno_location (; 24 ;) (result i32) + (func $___errno_location (result i32) (if (result i32) (i32.load (i32.const 1140) @@ -744,7 +740,7 @@ (i32.const 1184) ) ) - (func $_cleanup_387 (; 25 ;) (param $0 i32) + (func $_cleanup_387 (param $0 i32) (if (i32.eqz (i32.load offset=68 @@ -756,7 +752,7 @@ ) ) ) - (func $___stdout_write (; 26 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $___stdout_write (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -830,7 +826,7 @@ ) (local.get $0) ) - (func $_fflush (; 27 ;) (param $0 i32) (result i32) + (func $_fflush (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (block $do-once (result i32) @@ -953,7 +949,7 @@ ) ) ) - (func $___fflush_unlocked (; 28 ;) (param $0 i32) (result i32) + (func $___fflush_unlocked (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1073,7 +1069,7 @@ (i32.const 0) ) ) - (func $__Znwj (; 29 ;) (param $0 i32) (result i32) + (func $__Znwj (param $0 i32) (result i32) (local $1 i32) (local.set $1 (select @@ -1115,7 +1111,7 @@ ) (local.get $0) ) - (func $__ZSt15get_new_handlerv (; 30 ;) (result i32) + (func $__ZSt15get_new_handlerv (result i32) (local $0 i32) (i32.store (i32.const 1188) @@ -1130,10 +1126,10 @@ ) (local.get $0) ) - (func $runPostSets (; 31 ;) + (func $runPostSets (nop) ) - (func $_memset (; 32 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $_memset (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -1271,7 +1267,7 @@ (local.get $2) ) ) - (func $_memcpy (; 33 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $_memcpy (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (if (i32.ge_s @@ -1420,10 +1416,10 @@ ) (local.get $3) ) - (func $_pthread_self (; 34 ;) (result i32) + (func $_pthread_self (result i32) (i32.const 0) ) - (func $dynCall_ii (; 35 ;) (param $0 i32) (param $1 i32) (result i32) + (func $dynCall_ii (param $0 i32) (param $1 i32) (result i32) (call_indirect (type $i32_=>_i32) (local.get $1) (i32.add @@ -1435,7 +1431,7 @@ ) ) ) - (func $dynCall_iiii (; 36 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (func $dynCall_iiii (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (call_indirect (type $i32_i32_i32_=>_i32) (local.get $1) (local.get $2) @@ -1449,7 +1445,7 @@ ) ) ) - (func $dynCall_vi (; 37 ;) (param $0 i32) (param $1 i32) + (func $dynCall_vi (param $0 i32) (param $1 i32) (call_indirect (type $i32_=>_none) (local.get $1) (i32.add @@ -1461,7 +1457,7 @@ ) ) ) - (func $dynCall_v (; 38 ;) (param $0 i32) + (func $dynCall_v (param $0 i32) (call_indirect (type $none_=>_none) (i32.add (i32.and @@ -1472,24 +1468,24 @@ ) ) ) - (func $b0 (; 39 ;) (param $0 i32) (result i32) + (func $b0 (param $0 i32) (result i32) (call $abort (i32.const 0) ) (i32.const 0) ) - (func $b1 (; 40 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $b1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (call $abort (i32.const 1) ) (i32.const 0) ) - (func $b2 (; 41 ;) (param $0 i32) + (func $b2 (param $0 i32) (call $abort (i32.const 2) ) ) - (func $b3 (; 42 ;) + (func $b3 (call $abort (i32.const 3) ) diff -Nru binaryen-91/test/passes/print-call-graph.wast binaryen-99/test/passes/print-call-graph.wast --- binaryen-91/test/passes/print-call-graph.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/print-call-graph.wast 2021-01-07 20:01:06.000000000 +0000 @@ -7,8 +7,6 @@ (type $FUNCSIG$vii (func (param i32 i32))) (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) - (import "env" "DYNAMICTOP_PTR" (global $DYNAMICTOP_PTR$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) (import "env" "ABORT" (global $ABORT$asm2wasm$import i32)) (import "global" "NaN" (global $nan$asm2wasm$import f64)) (import "global" "Infinity" (global $inf$asm2wasm$import f64)) @@ -30,8 +28,6 @@ (data (global.get $memoryBase) "\05\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\02\00\00\00\b0\04\00\00\00\04\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\n\ff\ff\ff\ff\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04") (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) (global $STACK_MAX (mut i32) (global.get $STACK_MAX$asm2wasm$import)) - (global $DYNAMICTOP_PTR (mut i32) (global.get $DYNAMICTOP_PTR$asm2wasm$import)) - (global $tempDoublePtr (mut i32) (global.get $tempDoublePtr$asm2wasm$import)) (global $ABORT (mut i32) (global.get $ABORT$asm2wasm$import)) (global $__THREW__ (mut i32) (i32.const 0)) (global $threwValue (mut i32) (i32.const 0)) diff -Nru binaryen-91/test/passes/print-function-map.txt binaryen-99/test/passes/print-function-map.txt --- binaryen-91/test/passes/print-function-map.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/print-function-map.txt 2021-01-07 20:01:06.000000000 +0000 @@ -4,10 +4,10 @@ (module (type $none_=>_none (func)) (import "env" "foo" (func $Foo)) - (func $bar (; 1 ;) + (func $bar (nop) ) - (func $baz (; 2 ;) + (func $baz (nop) ) ) diff -Nru binaryen-91/test/passes/print_g.bin.txt binaryen-99/test/passes/print_g.bin.txt --- binaryen-91/test/passes/print_g.bin.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/print_g.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -4,7 +4,7 @@ (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "memory" (memory $0 256 256)) + (import "env" "memory" (memory $mimport$0 256 256)) (global $global$0 (mut i32) (i32.const 5243904)) (global $global$1 i32 (i32.const 1024)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) @@ -14,11 +14,11 @@ (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) (export "__growWasmMemory" (func $__growWasmMemory)) - (func $__wasm_call_ctors (; 0 ;) + (func $__wasm_call_ctors ;; code offset: 0x3 (nop) ) - (func $main (; 1 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) ;; code offset: 0x10 (if ;; code offset: 0xf @@ -83,11 +83,11 @@ ;; code offset: 0x32 (local.get $0) ) - (func $stackSave (; 2 ;) (result i32) + (func $stackSave (result i32) ;; code offset: 0x37 (global.get $global$0) ) - (func $stackAlloc (; 3 ;) (param $0 i32) (result i32) + (func $stackAlloc (param $0 i32) (result i32) ;; code offset: 0x46 (global.set $global$0 ;; code offset: 0x44 @@ -109,14 +109,14 @@ ;; code offset: 0x48 (local.get $0) ) - (func $stackRestore (; 4 ;) (param $0 i32) + (func $stackRestore (param $0 i32) ;; code offset: 0x4f (global.set $global$0 ;; code offset: 0x4d (local.get $0) ) ) - (func $__growWasmMemory (; 5 ;) (param $0 i32) (result i32) + (func $__growWasmMemory (param $0 i32) (result i32) ;; code offset: 0x56 (memory.grow ;; code offset: 0x54 @@ -134,7 +134,7 @@ (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "memory" (memory $0 256 256)) + (import "env" "memory" (memory $mimport$0 256 256)) (global $global$0 (mut i32) (i32.const 5243904)) (global $global$1 i32 (i32.const 1024)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) @@ -144,11 +144,11 @@ (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) (export "__growWasmMemory" (func $__growWasmMemory)) - (func $__wasm_call_ctors (; 0 ;) + (func $__wasm_call_ctors ;; code offset: 0x3 (nop) ) - (func $main (; 1 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) ;; code offset: 0x10 (if ;; code offset: 0xf @@ -213,11 +213,11 @@ ;; code offset: 0x32 (local.get $0) ) - (func $stackSave (; 2 ;) (result i32) + (func $stackSave (result i32) ;; code offset: 0x37 (global.get $global$0) ) - (func $stackAlloc (; 3 ;) (param $0 i32) (result i32) + (func $stackAlloc (param $0 i32) (result i32) ;; code offset: 0x46 (global.set $global$0 ;; code offset: 0x44 @@ -239,14 +239,14 @@ ;; code offset: 0x48 (local.get $0) ) - (func $stackRestore (; 4 ;) (param $0 i32) + (func $stackRestore (param $0 i32) ;; code offset: 0x4f (global.set $global$0 ;; code offset: 0x4d (local.get $0) ) ) - (func $__growWasmMemory (; 5 ;) (param $0 i32) (result i32) + (func $__growWasmMemory (param $0 i32) (result i32) ;; code offset: 0x56 (memory.grow ;; code offset: 0x54 diff -Nru binaryen-91/test/passes/print_g_metrics.bin.txt binaryen-99/test/passes/print_g_metrics.bin.txt --- binaryen-91/test/passes/print_g_metrics.bin.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/print_g_metrics.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -6,7 +6,7 @@ (export "a" (func $__wasm_call_ctors)) (export "b" (func $main)) (export "c" (func $stackAlloc)) - (func $stackAlloc (; 0 ;) (param $0 i32) (result i32) + (func $stackAlloc (param $0 i32) (result i32) (global.set $global$0 (local.tee $0 (i32.and @@ -20,7 +20,7 @@ ) (local.get $0) ) - (func $main (; 1 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (if (i32.ne (i32.rem_s @@ -60,7 +60,7 @@ ) (local.get $0) ) - (func $__wasm_call_ctors (; 2 ;) + (func $__wasm_call_ctors (nop) ) ) @@ -91,7 +91,7 @@ (export "a" (func $__wasm_call_ctors)) (export "b" (func $main)) (export "c" (func $stackAlloc)) - (func $stackAlloc (; 0 ;) (param $0 i32) (result i32) + (func $stackAlloc (param $0 i32) (result i32) (global.set $global$0 (local.tee $0 (i32.and @@ -105,7 +105,7 @@ ) (local.get $0) ) - (func $main (; 1 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (if (i32.ne (i32.rem_s @@ -145,7 +145,7 @@ ) (local.get $0) ) - (func $__wasm_call_ctors (; 2 ;) + (func $__wasm_call_ctors (nop) ) ) diff -Nru binaryen-91/test/passes/print_g_strip-dwarf.bin.txt binaryen-99/test/passes/print_g_strip-dwarf.bin.txt --- binaryen-91/test/passes/print_g_strip-dwarf.bin.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/print_g_strip-dwarf.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -4,7 +4,7 @@ (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "memory" (memory $0 256 256)) + (import "env" "memory" (memory $mimport$0 256 256)) (global $global$0 (mut i32) (i32.const 5243904)) (global $global$1 i32 (i32.const 1024)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) @@ -14,10 +14,10 @@ (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) (export "__growWasmMemory" (func $__growWasmMemory)) - (func $__wasm_call_ctors (; 0 ;) + (func $__wasm_call_ctors (nop) ) - (func $main (; 1 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (if (i32.ne (i32.rem_s @@ -57,10 +57,10 @@ ) (local.get $0) ) - (func $stackSave (; 2 ;) (result i32) + (func $stackSave (result i32) (global.get $global$0) ) - (func $stackAlloc (; 3 ;) (param $0 i32) (result i32) + (func $stackAlloc (param $0 i32) (result i32) (global.set $global$0 (local.tee $0 (i32.and @@ -74,12 +74,12 @@ ) (local.get $0) ) - (func $stackRestore (; 4 ;) (param $0 i32) + (func $stackRestore (param $0 i32) (global.set $global$0 (local.get $0) ) ) - (func $__growWasmMemory (; 5 ;) (param $0 i32) (result i32) + (func $__growWasmMemory (param $0 i32) (result i32) (memory.grow (local.get $0) ) @@ -95,7 +95,7 @@ (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (import "env" "memory" (memory $0 256 256)) + (import "env" "memory" (memory $mimport$0 256 256)) (global $global$0 (mut i32) (i32.const 5243904)) (global $global$1 i32 (i32.const 1024)) (export "__wasm_call_ctors" (func $__wasm_call_ctors)) @@ -105,10 +105,10 @@ (export "stackAlloc" (func $stackAlloc)) (export "stackRestore" (func $stackRestore)) (export "__growWasmMemory" (func $__growWasmMemory)) - (func $__wasm_call_ctors (; 0 ;) + (func $__wasm_call_ctors (nop) ) - (func $main (; 1 ;) (param $0 i32) (param $1 i32) (result i32) + (func $main (param $0 i32) (param $1 i32) (result i32) (if (i32.ne (i32.rem_s @@ -148,10 +148,10 @@ ) (local.get $0) ) - (func $stackSave (; 2 ;) (result i32) + (func $stackSave (result i32) (global.get $global$0) ) - (func $stackAlloc (; 3 ;) (param $0 i32) (result i32) + (func $stackAlloc (param $0 i32) (result i32) (global.set $global$0 (local.tee $0 (i32.and @@ -165,12 +165,12 @@ ) (local.get $0) ) - (func $stackRestore (; 4 ;) (param $0 i32) + (func $stackRestore (param $0 i32) (global.set $global$0 (local.get $0) ) ) - (func $__growWasmMemory (; 5 ;) (param $0 i32) (result i32) + (func $__growWasmMemory (param $0 i32) (result i32) (memory.grow (local.get $0) ) diff -Nru binaryen-91/test/passes/remove-imports.txt binaryen-99/test/passes/remove-imports.txt --- binaryen-91/test/passes/remove-imports.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-imports.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,11 +1,11 @@ (module (type $none_=>_none (func)) - (import "env" "table" (table $0 1 1 funcref)) + (import "env" "table" (table $table 1 1 funcref)) (elem (i32.const 0) $waka-sneaky) - (import "env" "memBase" (global $import$global0 i32)) + (import "env" "memBase" (global $gimport$0 i32)) (import "somewhere" "waka-sneaky" (func $waka-sneaky)) (memory $0 1024 1024) - (func $nada (; 1 ;) + (func $nada (nop) (drop (i32.const 0) diff -Nru binaryen-91/test/passes/remove-non-js-ops.txt binaryen-99/test/passes/remove-non-js-ops.txt --- binaryen-91/test/passes/remove-non-js-ops.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-non-js-ops.txt 2021-01-07 20:01:06.000000000 +0000 @@ -4,25 +4,35 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $f32_=>_f32 (func (param f32) (result f32))) (type $f64_=>_f64 (func (param f64) (result f64))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i64_=>_none (func (param i64))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_none (func (param i32))) (type $f32_=>_none (func (param f32))) (type $f64_=>_none (func (param f64))) - (type $none_=>_i64 (func (result i64))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $i32_i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32 i32) (result i32))) (type $none_=>_f32 (func (result f32))) (type $f32_f32_=>_f32 (func (param f32 f32) (result f32))) (type $none_=>_f64 (func (result f64))) (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) (import "env" "wasm2js_scratch_load_i32" (func $wasm2js_scratch_load_i32 (param i32) (result i32))) (import "env" "wasm2js_scratch_store_i32" (func $wasm2js_scratch_store_i32 (param i32 i32))) - (import "env" "wasm2js_scratch_load_i64" (func $wasm2js_scratch_load_i64 (result i64))) - (import "env" "wasm2js_scratch_store_i64" (func $wasm2js_scratch_store_i64 (param i64))) (import "env" "wasm2js_scratch_load_f32" (func $wasm2js_scratch_load_f32 (result f32))) (import "env" "wasm2js_scratch_store_f32" (func $wasm2js_scratch_store_f32 (param f32))) (import "env" "wasm2js_scratch_load_f64" (func $wasm2js_scratch_load_f64 (result f64))) (import "env" "wasm2js_scratch_store_f64" (func $wasm2js_scratch_store_f64 (param f64))) + (import "env" "wasm2js_memory_init" (func $wasm2js_memory_init (param i32 i32 i32 i32))) + (import "env" "wasm2js_memory_fill" (func $wasm2js_memory_fill (param i32 i32 i32))) + (import "env" "wasm2js_memory_copy" (func $wasm2js_memory_copy (param i32 i32 i32))) + (import "env" "wasm2js_data_drop" (func $wasm2js_data_drop (param i32))) + (import "env" "wasm2js_atomic_wait_i32" (func $wasm2js_atomic_wait_i32 (param i32 i32 i32 i32) (result i32))) + (import "env" "wasm2js_atomic_rmw_i64" (func $wasm2js_atomic_rmw_i64 (param i32 i32 i32 i32 i32 i32) (result i32))) + (import "env" "wasm2js_get_stashed_bits" (func $wasm2js_get_stashed_bits (result i32))) (memory $0 1) - (func $copysign64 (; 8 ;) (param $0 f64) (param $1 f64) (result f64) + (global $__wasm-intrinsics-temp-i64 (mut i64) (i64.const 0)) + (func $copysign64 (param $0 f64) (param $1 f64) (result f64) (f64.reinterpret_i64 (i64.or (i64.and @@ -40,7 +50,7 @@ ) ) ) - (func $copysign32 (; 9 ;) (param $0 f32) (param $1 f32) (result f32) + (func $copysign32 (param $0 f32) (param $1 f32) (result f32) (f32.reinterpret_i32 (i32.or (i32.and @@ -58,91 +68,91 @@ ) ) ) - (func $rotl32 (; 10 ;) (param $0 i32) (param $1 i32) (result i32) + (func $rotl32 (param $0 i32) (param $1 i32) (result i32) (call $__wasm_rotl_i32 (local.get $0) (local.get $1) ) ) - (func $rotr32 (; 11 ;) (param $0 i32) (param $1 i32) (result i32) + (func $rotr32 (param $0 i32) (param $1 i32) (result i32) (call $__wasm_rotr_i32 (local.get $0) (local.get $1) ) ) - (func $rotl64 (; 12 ;) (param $0 i64) (param $1 i64) (result i64) + (func $rotl64 (param $0 i64) (param $1 i64) (result i64) (call $__wasm_rotl_i64 (local.get $0) (local.get $1) ) ) - (func $rotr64 (; 13 ;) (param $0 i64) (param $1 i64) (result i64) + (func $rotr64 (param $0 i64) (param $1 i64) (result i64) (call $__wasm_rotr_i64 (local.get $0) (local.get $1) ) ) - (func $nearest64 (; 14 ;) (param $0 f64) (result f64) + (func $nearest64 (param $0 f64) (result f64) (call $__wasm_nearest_f64 (local.get $0) ) ) - (func $nearest32 (; 15 ;) (param $0 f32) (result f32) + (func $nearest32 (param $0 f32) (result f32) (call $__wasm_nearest_f32 (local.get $0) ) ) - (func $trunc64 (; 16 ;) (param $0 f64) (result f64) - (call $__wasm_trunc_f64 + (func $trunc64 (param $0 f64) (result f64) + (f64.trunc (local.get $0) ) ) - (func $trunc32 (; 17 ;) (param $0 f32) (result f32) - (call $__wasm_trunc_f32 + (func $trunc32 (param $0 f32) (result f32) + (f32.trunc (local.get $0) ) ) - (func $popcnt32 (; 18 ;) (param $0 i32) (result i32) + (func $popcnt32 (param $0 i32) (result i32) (call $__wasm_popcnt_i32 (local.get $0) ) ) - (func $ctz32 (; 19 ;) (param $0 i32) (result i32) + (func $ctz32 (param $0 i32) (result i32) (call $__wasm_ctz_i32 (local.get $0) ) ) - (func $i64_sdiv (; 20 ;) (param $0 i64) (param $1 i64) (result i64) + (func $i64_sdiv (param $0 i64) (param $1 i64) (result i64) (call $__wasm_i64_sdiv (local.get $0) (local.get $1) ) ) - (func $i64_udiv (; 21 ;) (param $0 i64) (param $1 i64) (result i64) + (func $i64_udiv (param $0 i64) (param $1 i64) (result i64) (call $__wasm_i64_udiv (local.get $0) (local.get $1) ) ) - (func $i64_srem (; 22 ;) (param $0 i64) (param $1 i64) (result i64) + (func $i64_srem (param $0 i64) (param $1 i64) (result i64) (call $__wasm_i64_srem (local.get $0) (local.get $1) ) ) - (func $i64_urem (; 23 ;) (param $0 i64) (param $1 i64) (result i64) + (func $i64_urem (param $0 i64) (param $1 i64) (result i64) (call $__wasm_i64_urem (local.get $0) (local.get $1) ) ) - (func $i64_mul (; 24 ;) (param $0 i64) (param $1 i64) (result i64) + (func $i64_mul (param $0 i64) (param $1 i64) (result i64) (call $__wasm_i64_mul (local.get $0) (local.get $1) ) ) - (func $_ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE (; 25 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (func $_ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE (param $var$0 i64) (param $var$1 i64) (result i64) (local $var$2 i32) (local $var$3 i32) (local $var$4 i32) @@ -261,7 +271,7 @@ ) ) ) - (func $_ZN17compiler_builtins3int4sdiv3Div3div17he78fc483e41d7ec7E (; 26 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (func $_ZN17compiler_builtins3int4sdiv3Div3div17he78fc483e41d7ec7E (param $var$0 i64) (param $var$1 i64) (result i64) (local $var$2 i64) (i64.sub (i64.xor @@ -304,7 +314,7 @@ (local.get $var$0) ) ) - (func $_ZN17compiler_builtins3int4sdiv3Mod4mod_17h2cbb7bbf36e41d68E (; 27 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (func $_ZN17compiler_builtins3int4sdiv3Mod4mod_17h2cbb7bbf36e41d68E (param $var$0 i64) (param $var$1 i64) (result i64) (local $var$2 i64) (i64.sub (i64.xor @@ -339,7 +349,7 @@ (local.get $var$2) ) ) - (func $_ZN17compiler_builtins3int4udiv10divmod_u6417h6026910b5ed08e40E (; 28 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (func $_ZN17compiler_builtins3int4udiv10divmod_u6417h6026910b5ed08e40E (param $var$0 i64) (param $var$1 i64) (result i64) (local $var$2 i32) (local $var$3 i32) (local $var$4 i32) @@ -413,7 +423,7 @@ (i64.const 4294967296) ) ) - (call $wasm2js_scratch_store_i64 + (global.set $__wasm-intrinsics-temp-i64 (i64.extend_i32_u (i32.sub (local.tee $var$2 @@ -474,7 +484,7 @@ (local.get $var$3) ) ) - (call $wasm2js_scratch_store_i64 + (global.set $__wasm-intrinsics-temp-i64 (i64.or (i64.shl (i64.extend_i32_u @@ -554,7 +564,7 @@ ) (br $label$3) ) - (call $wasm2js_scratch_store_i64 + (global.set $__wasm-intrinsics-temp-i64 (i64.shl (i64.extend_i32_u (i32.sub @@ -596,7 +606,7 @@ ) (br $label$2) ) - (call $wasm2js_scratch_store_i64 + (global.set $__wasm-intrinsics-temp-i64 (i64.extend_i32_u (i32.and (local.get $var$4) @@ -727,7 +737,7 @@ ) ) ) - (call $wasm2js_scratch_store_i64 + (global.set $__wasm-intrinsics-temp-i64 (local.get $var$5) ) (return @@ -740,7 +750,7 @@ ) ) ) - (call $wasm2js_scratch_store_i64 + (global.set $__wasm-intrinsics-temp-i64 (local.get $var$0) ) (local.set $var$0 @@ -749,7 +759,7 @@ ) (local.get $var$0) ) - (func $__wasm_ctz_i32 (; 29 ;) (param $var$0 i32) (result i32) + (func $__wasm_ctz_i32 (param $var$0 i32) (result i32) (if (local.get $var$0) (return @@ -769,40 +779,40 @@ ) (i32.const 32) ) - (func $__wasm_i64_mul (; 30 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (func $__wasm_i64_mul (param $var$0 i64) (param $var$1 i64) (result i64) (call $_ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE (local.get $var$0) (local.get $var$1) ) ) - (func $__wasm_i64_sdiv (; 31 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (func $__wasm_i64_sdiv (param $var$0 i64) (param $var$1 i64) (result i64) (call $_ZN17compiler_builtins3int4sdiv3Div3div17he78fc483e41d7ec7E (local.get $var$0) (local.get $var$1) ) ) - (func $__wasm_i64_srem (; 32 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (func $__wasm_i64_srem (param $var$0 i64) (param $var$1 i64) (result i64) (call $_ZN17compiler_builtins3int4sdiv3Mod4mod_17h2cbb7bbf36e41d68E (local.get $var$0) (local.get $var$1) ) ) - (func $__wasm_i64_udiv (; 33 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (func $__wasm_i64_udiv (param $var$0 i64) (param $var$1 i64) (result i64) (call $_ZN17compiler_builtins3int4udiv10divmod_u6417h6026910b5ed08e40E (local.get $var$0) (local.get $var$1) ) ) - (func $__wasm_i64_urem (; 34 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (func $__wasm_i64_urem (param $var$0 i64) (param $var$1 i64) (result i64) (drop (call $_ZN17compiler_builtins3int4udiv10divmod_u6417h6026910b5ed08e40E (local.get $var$0) (local.get $var$1) ) ) - (call $wasm2js_scratch_load_i64) + (global.get $__wasm-intrinsics-temp-i64) ) - (func $__wasm_nearest_f32 (; 35 ;) (param $var$0 f32) (result f32) + (func $__wasm_nearest_f32 (param $var$0 f32) (result f32) (local $var$1 f32) (local $var$2 f32) (if @@ -860,7 +870,7 @@ ) (local.get $var$1) ) - (func $__wasm_nearest_f64 (; 36 ;) (param $var$0 f64) (result f64) + (func $__wasm_nearest_f64 (param $var$0 f64) (result f64) (local $var$1 f64) (local $var$2 f64) (if @@ -918,7 +928,7 @@ ) (local.get $var$1) ) - (func $__wasm_popcnt_i32 (; 37 ;) (param $var$0 i32) (result i32) + (func $__wasm_popcnt_i32 (param $var$0 i32) (result i32) (local $var$1 i32) (block $label$1 (result i32) (loop $label$2 @@ -949,7 +959,7 @@ ) ) ) - (func $__wasm_rotl_i32 (; 38 ;) (param $var$0 i32) (param $var$1 i32) (result i32) + (func $__wasm_rotl_i32 (param $var$0 i32) (param $var$1 i32) (result i32) (local $var$2 i32) (i32.or (i32.shl @@ -987,7 +997,7 @@ ) ) ) - (func $__wasm_rotl_i64 (; 39 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (func $__wasm_rotl_i64 (param $var$0 i64) (param $var$1 i64) (result i64) (local $var$2 i64) (i64.or (i64.shl @@ -1025,7 +1035,7 @@ ) ) ) - (func $__wasm_rotr_i32 (; 40 ;) (param $var$0 i32) (param $var$1 i32) (result i32) + (func $__wasm_rotr_i32 (param $var$0 i32) (param $var$1 i32) (result i32) (local $var$2 i32) (i32.or (i32.shr_u @@ -1063,7 +1073,7 @@ ) ) ) - (func $__wasm_rotr_i64 (; 41 ;) (param $var$0 i64) (param $var$1 i64) (result i64) + (func $__wasm_rotr_i64 (param $var$0 i64) (param $var$1 i64) (result i64) (local $var$2 i64) (i64.or (i64.shr_u @@ -1101,32 +1111,4 @@ ) ) ) - (func $__wasm_trunc_f32 (; 42 ;) (param $var$0 f32) (result f32) - (select - (f32.ceil - (local.get $var$0) - ) - (f32.floor - (local.get $var$0) - ) - (f32.lt - (local.get $var$0) - (f32.const 0) - ) - ) - ) - (func $__wasm_trunc_f64 (; 43 ;) (param $var$0 f64) (result f64) - (select - (f64.ceil - (local.get $var$0) - ) - (f64.floor - (local.get $var$0) - ) - (f64.lt - (local.get $var$0) - (f64.const 0) - ) - ) - ) ) diff -Nru binaryen-91/test/passes/remove-unused-brs_enable-multivalue.txt binaryen-99/test/passes/remove-unused-brs_enable-multivalue.txt --- binaryen-91/test/passes/remove-unused-brs_enable-multivalue.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-brs_enable-multivalue.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,2616 @@ +(module + (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_i32_i64 (func (result i32 i64))) + (type $none_=>_i64 (func (result i64))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_f64_i32_f64_f32_f32_=>_i32 (func (param i32 f64 i32 f64 f32 f32) (result i32))) + (type $f32_i32_f32_i32_i32_f64_f32_=>_i32 (func (param f32 i32 f32 i32 i32 f64 f32) (result i32))) + (type $i32_=>_i64 (func (param i32) (result i64))) + (type $none_=>_f32 (func (result f32))) + (type $i32_=>_f32 (func (param i32) (result f32))) + (memory $0 256 256) + (func $b0-yes (param $i1 i32) + (block $topmost + ) + ) + (func $b1 (param $i1 i32) + (block $topmost + (block $block + (drop + (i32.const 0) + ) + ) + ) + ) + (func $b2 (param $i1 i32) + (block $topmost + (block $inner + ) + ) + ) + (func $b3-yes (param $i1 i32) + (block $topmost + (block $inner + ) + ) + ) + (func $b4 (param $i1 i32) + (block $topmost + (block $inner + (block $block + (drop + (i32.const 0) + ) + ) + ) + ) + ) + (func $b5 (param $i1 i32) + (block $topmost + (block $inner + (block $block + (drop + (i32.const 0) + ) + ) + ) + ) + ) + (func $b6 (param $i1 i32) + (block $topmost + (br_if $topmost + (i32.const 1) + ) + ) + ) + (func $b7 (param $i1 i32) + (block $topmost + (block $block + (drop + (i32.const 0) + ) + (br_if $topmost + (i32.const 1) + ) + ) + ) + ) + (func $b8 (param $i1 i32) + (block $topmost + (block $inner + (br_if $topmost + (i32.const 1) + ) + ) + ) + ) + (func $b9 (param $i1 i32) + (block $topmost + (block $inner + (br_if $topmost + (i32.const 1) + ) + ) + ) + ) + (func $b10 (param $i1 i32) + (block $topmost + (block $inner + (block $block + (drop + (i32.const 0) + ) + (br_if $topmost + (i32.const 1) + ) + ) + ) + ) + ) + (func $b11 (param $i1 i32) + (block $topmost + (block $inner + (block $block + (drop + (i32.const 0) + ) + (br_if $topmost + (i32.const 1) + ) + ) + ) + ) + ) + (func $b12-yes + (if + (i32.const 1) + (block $topmost + (block $block1 + (drop + (i32.const 12) + ) + (block $block + (drop + (i32.const 1) + ) + ) + ) + ) + (block $block3 + (drop + (i32.const 27) + ) + (block $block0 + (drop + (i32.const 2) + ) + ) + ) + ) + ) + (func $b13 (result i32) + (block $topmost (result i32) + (if + (i32.const 1) + (block $block1 + (drop + (i32.const 12) + ) + (drop + (br_if $topmost + (i32.const 1) + (i32.const 1) + ) + ) + ) + (block $block3 + (drop + (i32.const 27) + ) + (br $topmost + (i32.const 2) + ) + ) + ) + (i32.const 3) + ) + ) + (func $b14 (result i32) + (select + (block $topmost (result i32) + (block $block1 (result i32) + (i32.const 12) + ) + ) + (block $block3 (result i32) + (i32.const 27) + ) + (i32.const 1) + ) + ) + (func $b14-tuple (result i32 i64) + (if (result i32 i64) + (i32.const 1) + (block $topmost (result i32 i64) + (block $block1 (result i32 i64) + (tuple.make + (i32.const 12) + (i64.const 12) + ) + ) + ) + (block $block3 (result i32 i64) + (tuple.make + (i32.const 27) + (i64.const 27) + ) + ) + ) + ) + (func $b15 + (block $topmost + (br_if $topmost + (i32.const 17) + ) + ) + ) + (func $b15b + (if + (i32.const 18) + (block $topmost + (block $block + (drop + (i32.const 0) + ) + ) + ) + ) + ) + (func $b16 + (block $a + (block $b + (block $c + ) + ) + ) + (block $a1 + (block $b2 + (block $c3 + ) + ) + ) + (block $a4 + (block $b5 + (block $c6 + ) + ) + ) + ) + (func $b17 + (if + (i32.const 0) + (block $a + (block $block1 + ) + ) + (block $block3 + ) + ) + (if + (i32.const 0) + (block $a7 + (drop + (i32.const 1) + ) + ) + (block $block6 + ) + ) + (if + (i32.const 0) + (block $a9 + (block $block8 + ) + ) + (drop + (i32.const 1) + ) + ) + (if + (i32.const 0) + (block $c + (block $b + (block $block11 + ) + ) + ) + (block $block13 + ) + ) + ) + (func $ret-1 + (nop) + ) + (func $ret-2 + (block $block0 + (block $block1 + ) + ) + ) + (func $ret-3 + (if + (i32.const 0) + (block $block0 + ) + (block $block3 + ) + ) + ) + (func $ret-value (result i32) + (block $block0 (result i32) + (block $block1 (result i32) + (i32.const 1) + ) + ) + ) + (func $no-select-but-the-last + (block $a + (if + (i32.const 0) + (drop + (i32.const 1) + ) + (block $block2 + (block $block + (drop + (i32.const 2) + ) + (br $a) + ) + (drop + (i32.const 3) + ) + ) + ) + (if + (i32.const 0) + (block $block4 + (block $block13 + (drop + (i32.const 2) + ) + (br $a) + ) + (drop + (i32.const 3) + ) + ) + (drop + (i32.const 1) + ) + ) + (if + (block $block6 (result i32) + (block $block15 + (drop + (i32.const 2) + ) + (br $a) + ) + (i32.const 3) + ) + (drop + (i32.const 0) + ) + (drop + (i32.const 1) + ) + ) + (if + (block $a17 (result i32) + (i32.const 0) + ) + (block $a18 + (block $block19 + (drop + (i32.const 1) + ) + ) + ) + (block $a20 + (block $block21 + (drop + (i32.const 2) + ) + ) + ) + ) + ) + ) + (func $side-effects-and-order (result i32) + (local $x i32) + (block $do-once$0 + (if + (call $b13) + (block $block + (drop + (i32.const 0) + ) + (br $do-once$0) + ) + ) + (drop + (i32.const 1) + ) + ) + (block $do-once$022 + (if + (call $b13) + (block $block24 + (drop + (call $b14) + ) + (br $do-once$022) + ) + ) + (drop + (i32.const 1) + ) + ) + (block $do-once$025 + (if + (i32.const 0) + (block $block27 + (drop + (call $b14) + ) + (br $do-once$025) + ) + ) + (drop + (i32.const 1) + ) + ) + (block $do-once$028 (result i32) + (if + (local.tee $x + (i32.const 1) + ) + (br $do-once$028 + (local.tee $x + (i32.const 2) + ) + ) + ) + (i32.const 1) + ) + ) + (func $loops + (loop $in + (block $out + (br_if $in + (i32.eqz + (i32.const 0) + ) + ) + ) + ) + (loop $in30 + (br $in30) + ) + (loop $loop-in + (block $out31 + (br_if $out31 + (i32.const 0) + ) + ) + ) + (loop $in33 + (block $out34 + (br_if $out34 + (i32.const 0) + ) + ) + ) + (loop $in36 + (nop) + ) + (loop $in37 + (block $out38 + ) + ) + (loop $in39 + (if + (i32.eqz + (i32.const 0) + ) + (block $out40 + (nop) + (br_if $in39 + (i32.const 1) + ) + ) + ) + ) + (loop $in42 + (block $out43 + (br_if $in42 + (i32.const 0) + ) + ) + ) + (loop $in45 + (if + (i32.const 0) + (block $out46 + (unreachable) + ) + (br $in45) + ) + ) + (loop $in48 + (if + (i32.const 0) + (block $out49 + (block $block + (call $loops) + ) + ) + (br $in48) + ) + ) + (loop $in-todo + (if + (i32.const 0) + (block $out-todo + ) + (block + (call $loops) + (br $in-todo) + ) + ) + ) + (loop $in52 + (if + (i32.const 0) + (block $out53 + ) + (block + (call $loops) + (br $in52) + ) + ) + ) + (loop $in55 + (if + (i32.const 0) + (block + (call $loops) + (br $in55) + ) + (block $out56 + ) + ) + ) + (loop $in58 + (if + (i32.const 0) + (block + (block $block61 + (drop + (i32.const 1) + ) + (call $loops) + ) + (br $in58) + ) + (block $out59 + ) + ) + ) + (loop $in62 + (if + (i32.const 0) + (block $out63 + ) + (block + (call $loops) + (drop + (i32.const 100) + ) + (br $in62) + ) + ) + ) + (loop $in65 + (if + (i32.const 0) + (block + (call $loops) + (drop + (i32.const 101) + ) + (br $in65) + ) + (block $out66 + ) + ) + ) + (loop $in68 + (if + (i32.const 0) + (block + (block $block71 + (drop + (i32.const 1) + ) + (call $loops) + ) + (drop + (i32.const 102) + ) + (br $in68) + ) + (block $out69 + ) + ) + ) + (loop $in72 + (if + (i32.eqz + (i32.const 0) + ) + (block $out73 + (nop) + (call $loops) + (return) + (br $in72) + ) + ) + ) + (loop $in75 + (block $out76 + (br_if $out76 + (i32.const 0) + ) + (call $loops) + (br $out76) + (br $in75) + ) + ) + (loop $in78 + (if + (i32.const 0) + (block $out79 + ) + (block + (call $loops) + (drop + (block $out2 (result i32) + (i32.const 1) + ) + ) + (br $in78) + ) + ) + ) + (loop $in81 + (block $out82 + (br_if $in81 + (i32.eqz + (i32.const 0) + ) + ) + ) + ) + (loop $in-todo2 + (if + (i32.const 0) + (block $out-todo2 + ) + (block + (call $loops) + (br $in-todo2) + ) + ) + ) + (loop $in83 + (block $out84 + (br $out84) + (br $in83) + ) + ) + (loop $in85 + (block $out86 + (drop + (i32.const 0) + ) + (br $in85) + ) + ) + (loop $in-not + (block $out-not + (br_if $out-not + (i32.const -1) + ) + (br_if $out-not + (i32.const 0) + ) + (call $loops) + (br $in-not) + ) + ) + (loop $in-todo287 + (if + (i32.const 0) + (block $out-todo288 + ) + (block + (call $loops) + (drop + (i32.const 1) + ) + (br $in-todo287) + ) + ) + ) + ) + (func $br_if_in_block (result i32) + (block $outval (result i32) + (block $in + (drop + (i32.const 1) + ) + (br $in) + (drop + (i32.const 2) + ) + (br_if $in + (i32.eqz + (i32.const 3) + ) + ) + (unreachable) + (drop + (i32.const 4) + ) + (br_if $in + (i32.const 5) + ) + (unreachable) + (drop + (i32.const 6) + ) + ) + (select + (i32.const 7) + (i32.const 8) + (i32.const 6) + ) + ) + ) + (func $threading + (drop + (block $value-out (result i32) + (block $value-in (result i32) + (block $out + (block $in + (br_if $out + (i32.const 1) + ) + (br_if $out + (i32.const 2) + ) + (br $value-in + (i32.const 3) + ) + ) + ) + (i32.const 4) + ) + ) + ) + (block $stack1 + (block $stack2 + (block $stack3 + (block $stack4 + (br_if $stack1 + (i32.const 1) + ) + (unreachable) + ) + ) + ) + ) + ) + (func $if-to-br_if-conflict (param $x i32) (param $y i32) (result i32) + (block $leave + (local.set $y + (block $out (result i32) + (if + (local.get $x) + (br $out + (block $block (result i32) + (local.set $x + (i32.const 0) + ) + (i32.const 1) + ) + ) + (br_if $leave + (i32.const 1) + ) + ) + (unreachable) + ) + ) + ) + (i32.add + (local.get $x) + (local.get $y) + ) + ) + (func $if-to-br_if-conflict2 (param $x i32) (param $y i32) (result i32) + (block $leave + (local.set $y + (block $out (result i32) + (if + (local.get $x) + (br_if $leave + (i32.const 1) + ) + (br $out + (block $block (result i32) + (local.set $x + (i32.const 0) + ) + (i32.const 1) + ) + ) + ) + (unreachable) + ) + ) + ) + (i32.add + (local.get $x) + (local.get $y) + ) + ) + (func $if-to-br_if-value-sideeffect (param $x i32) (param $y i32) (result i32) + (block $leave + (local.set $y + (block $out (result i32) + (if + (local.get $x) + (br $out + (block $block (result i32) + (drop + (call $if-to-br_if-value-sideeffect + (i32.const 0) + (i32.const 1) + ) + ) + (nop) + (i32.const 1) + ) + ) + ) + (unreachable) + ) + ) + ) + (i32.add + (local.get $x) + (local.get $y) + ) + ) + (func $fuzz (param $j i32) (param $g i32) + (loop $label$continue$d + (block $label$break$c + (block $label$break$d + (if + (i32.lt_s + (local.get $j) + (i32.const 2147483640) + ) + (block $x + (block $y + (block $z + (br_if $x + (local.get $j) + ) + ) + ) + ) + (block $switch$26 + ) + ) + (i32.store + (i32.const 5724) + (i32.const -254899267) + ) + (br $label$continue$d) + ) + ) + ) + ) + (func $iffify + (if + (i32.eqz + (i32.const 0) + ) + (block $yes + (nop) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + ) + ) + (block $no + (br_if $no + (i32.const 0) + ) + (drop + (i32.const 1) + ) + (br $no) + (drop + (i32.const 2) + ) + ) + (block $no2 + (br_if $no2 + (i32.const 0) + ) + ) + (block $no3 + (br $no3) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + ) + (block $no5 + (block $no4 + (br_if $no5 + (i32.const 0) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + ) + ) + ) + (func $loop-if (result i32) + (loop $typed (result i32) + (block $outer (result i32) + (block (result i32) + (br_if $typed + (i32.eqz + (i32.const 2) + ) + ) + (block $block (result i32) + (drop + (call $loop-if) + ) + (i32.const 0) + ) + ) + ) + ) + ) + (func $block-break (param $0 i32) + (block $block$7$break + (block $shape$6$continue + (call $block-break + (i32.const 1) + ) + ) + ) + ) + (func $loop-break (param $0 i32) + (loop $shape$6$continue + (block $block$7$break + (block + (call $loop-break + (i32.const 1) + ) + (br_if $shape$6$continue + (local.get $0) + ) + (nop) + ) + ) + ) + ) + (func $untaken-brs-might-prevent-block-removal (param $0 f32) (param $1 i32) (param $2 f32) (param $3 i32) (param $4 i32) (param $5 f64) (param $6 f32) (result i32) + (block $label$0 (result i32) + (block $label$1 + (br_if $label$1 + (i32.const 607395945) + ) + (br_if $label$1 + (i32.load offset=3 align=1 + (select + (call $untaken-brs-might-prevent-block-removal + (f32.const 1.4904844647389837e-07) + (br_if $label$0 + (i32.store16 offset=4 align=1 + (i32.const 1900641) + (br $label$0 + (i32.const 1628075109) + ) + ) + (i32.const 1764950569) + ) + (f32.const 1.1910939690100655e-32) + (i32.const 1628057906) + (i32.const 859068982) + (f64.const 2.524518840347722e-258) + (f32.const -nan:0x40a63) + ) + (i32.const 688529440) + (i32.const 1751478890) + ) + ) + ) + ) + (i32.const 1935947830) + ) + ) + (func $unexitable-loops-result (param $0 i32) (result i64) + (loop $label$0 + (loop $label$1 + (br_if $label$0 + (i32.load8_s + (i32.const 201460482) + ) + ) + (block + (block $label$3 + (br_if $label$1 + (local.get $0) + ) + ) + (br $label$1) + ) + ) + ) + ) + (func $untaken-br-with-concrete-last-element + (block $label$8 + (block $label$11 + (block $label$14 + (br_if $label$8 + (br $label$8) + ) + ) + ) + ) + ) + (func $untaken-br-with-concrete-last-element2 (result i32) + (block $label$8 (result i32) + (block $label$11 (result i32) + (block $label$14 (result i32) + (br_if $label$14 + (i32.const 102) + (br $label$11 + (i32.const 103) + ) + ) + ) + ) + ) + ) + (func $untaken-br_if-then-if + (block $label$0 + (br_if $label$0 + (unreachable) + ) + (if + (i32.const 0) + (nop) + ) + ) + ) + (func $unreachable-if-that-could-be-a-br_if (result i64) + (loop $label$3 (result i64) + (drop + (if (result f64) + (unreachable) + (f64.const 1) + (br $label$3) + ) + ) + (i64.const 1) + ) + ) + (func $nop-br-might-update-type + (block $label$39 + (drop + (if (result i32) + (unreachable) + (if (result i32) + (i32.const 1) + (br $label$39) + (i32.const 0) + ) + (i32.const 0) + ) + ) + ) + ) + (func $no-flow-through-if-without-else (result f32) + (local $0 i32) + (local $2 f32) + (if (result f32) + (local.get $0) + (block $label$0 + (block $label$11 + (return + (f32.const 239) + ) + (if + (i32.const 0) + (return + (local.get $2) + ) + ) + ) + ) + (f32.const -9223372036854775808) + ) + ) + (func $unreachable-return-loop-value (result i64) + (loop $loop + (if + (i32.const 1) + (block $block + (br_if $block + (br $loop) + ) + (br $loop) + ) + ) + (br $loop) + ) + ) + (func $obviously-flows-out-maybe (param $var$0 i32) (result f32) + (block $label$1 (result f32) + (br $label$1 + (f32.const 1) + ) + (loop $label$5 + (if + (i32.const 11) + (block $label$8 + (br_if $label$8 + (unreachable) + ) + (br $label$5) + ) + ) + (br $label$5) + ) + ) + ) + (func $br-to-table (param $a i32) + (block $x + (block $y + (block $z + (nop) + (nop) + (block $tablify|0 + (br_table $x $y $z $tablify|0 + (local.get $a) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-too-few (param $a i32) + (block $x + (block $y + (block $z + (br_if $x + (i32.eq + (local.get $a) + (i32.const 0) + ) + ) + (br_if $x + (i32.eq + (local.get $a) + (i32.const 1) + ) + ) + ) + ) + ) + ) + (func $br-to-table-one-more (param $a i32) + (block $x + (block $y + (block $z + (nop) + (nop) + (nop) + (block $tablify|0 + (br_table $x $y $z $x $tablify|0 + (local.get $a) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-overlap (param $a i32) + (block $x + (block $y + (block $z + (br_if $x + (i32.eq + (local.get $a) + (i32.const 0) + ) + ) + (br_if $y + (i32.eq + (local.get $a) + (i32.const 1) + ) + ) + (br_if $z + (i32.eq + (local.get $a) + (i32.const 1) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-overlap-start (param $a i32) + (block $x + (block $y + (block $z + (br_if $x + (i32.eq + (local.get $a) + (i32.const 0) + ) + ) + (br_if $y + (i32.eq + (local.get $a) + (i32.const 0) + ) + ) + (br_if $z + (i32.eq + (local.get $a) + (i32.const 1) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-offset (param $a i32) + (block $x + (block $y + (block $z + (nop) + (nop) + (block $tablify|0 + (br_table $x $y $z $tablify|0 + (i32.sub + (local.get $a) + (i32.const 15) + ) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-RANGE-high (param $a i32) + (block $x + (block $y + (block $z + (br_if $x + (i32.eq + (local.get $a) + (i32.const 0) + ) + ) + (br_if $y + (i32.eq + (local.get $a) + (i32.const 1) + ) + ) + (br_if $z + (i32.eq + (local.get $a) + (i32.const 10) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-RANGE-low (param $a i32) + (block $x + (block $y + (block $z + (nop) + (nop) + (block $tablify|0 + (br_table $x $tablify|0 $tablify|0 $y $tablify|0 $tablify|0 $tablify|0 $tablify|0 $tablify|0 $z $tablify|0 + (local.get $a) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-bad (param $a i32) (result i32) + (block $value (result i32) + (block $x + (block $y + (block $z + (nop) + (br $x) + (nop) + (nop) + (block $tablify|0 + (br_table $x $y $z $tablify|0 + (local.get $a) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (i32.const 2000) + ) + ) + (func $br-to-table-bad2 (param $a i32) (result i32) + (block $value (result i32) + (block $x + (block $y + (block $z + (nop) + (drop + (br_if $value + (i32.const 1000) + (i32.eq + (local.get $a) + (i32.const 0) + ) + ) + ) + (nop) + (nop) + (block $tablify|0 + (br_table $x $y $z $tablify|0 + (local.get $a) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (i32.const 2000) + ) + ) + (func $br-to-table-bad3 (param $a i32) + (block $x + (block $y + (block $z + (br_if $x + (i32.eq + (i32.const 10) + (i32.const 0) + ) + ) + (nop) + (nop) + (block $tablify|0 + (br_table $x $y $z $tablify|0 + (local.get $a) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-multi (param $a i32) + (block $x + (block $y + (block $z + (nop) + (nop) + (block $tablify|0 + (br_table $z $y $x $tablify|0 + (i32.sub + (i32.const 10) + (i32.const 5) + ) + ) + ) + (nop) + (nop) + (block $tablify|00 + (br_table $x $y $z $tablify|00 + (local.get $a) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-bad4 (param $a i32) + (block $x + (block $y + (block $z + (br_if $x + (i32.ne + (local.get $a) + (i32.const 0) + ) + ) + (br_if $y + (i32.eq + (local.get $a) + (i32.const 1) + ) + ) + (br_if $z + (i32.eq + (local.get $a) + (i32.const 2) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-bad5 (param $a i32) + (block $x + (block $y + (block $z + (br_if $x + (i32.eq + (local.get $a) + (local.get $a) + ) + ) + (br_if $y + (i32.eq + (local.get $a) + (local.get $a) + ) + ) + (br_if $z + (i32.eq + (local.get $a) + (local.get $a) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-bad6 (param $a i32) + (block $x + (block $y + (block $z + (br_if $x + (i32.eq + (call $b13) + (i32.const 0) + ) + ) + (br_if $y + (i32.eq + (call $b13) + (i32.const 1) + ) + ) + (br_if $z + (i32.eq + (call $b13) + (i32.const 2) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-bad7 (param $a i32) + (block $x + (block $y + (block $z + (br_if $x + (i32.eq + (local.get $a) + (i32.const -1) + ) + ) + (br_if $y + (i32.eq + (local.get $a) + (i32.const -1) + ) + ) + (br_if $z + (i32.eq + (local.get $a) + (i32.const -1) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-defaultNameOverlaps (param $a i32) + (block $x + (block $tablify|0 + (block $z + (nop) + (nop) + (block $tablify|1 + (br_table $x $tablify|0 $z $tablify|1 + (local.get $a) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-unreach (param $a i32) + (block $x + (block $y + (block $z + (br_if $x + (i32.eq + (unreachable) + (i32.const 0) + ) + ) + (br_if $y + (i32.eq + (unreachable) + (i32.const 1) + ) + ) + (br_if $z + (i32.eq + (unreachable) + (i32.const 2) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-overlap-but-later (param $a i32) + (block $x + (block $y + (block $z + (br_if $x + (i32.eq + (local.get $a) + (i32.const 0) + ) + ) + (br_if $y + (i32.eq + (local.get $a) + (i32.const 1) + ) + ) + (nop) + (nop) + (block $tablify|0 + (br_table $z $x $y $tablify|0 + (i32.sub + (local.get $a) + (i32.const 1) + ) + ) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $tiny-switch + (if + (i32.const 0) + (block $y + ) + (block $x + ) + ) + (block $z + (block + (drop + (i32.const 0) + ) + (nop) + ) + ) + ) + (func $trim-switch + (block $A + (block $y + (br_table $A $y $A $y $A $y + (i32.sub + (i32.const 0) + (i32.const 2) + ) + ) + ) + (call $trim-switch) + ) + ) + (func $same-target-br_if-and-br + (block $x + (drop + (i32.const 0) + ) + (br $x) + (unreachable) + ) + ) + (func $simple-switch (result i32) + (block $A + (block $B + (block $y + (br_table $A $y $y $y $y $y $A $y $y $y $y $A $y + (i32.const 0) + ) + (return + (i32.const 0) + ) + ) + (return + (i32.const 1) + ) + ) + (return + (i32.const 2) + ) + ) + (i32.const 3) + ) + (func $simple-switch-2 (result i32) + (block $A + (block $B + (block $y + (br_table $A $y $y $y $y $y $y $y $y $y $y $y $A $y + (i32.const 0) + ) + (return + (i32.const 0) + ) + ) + (return + (i32.const 1) + ) + ) + (return + (i32.const 2) + ) + ) + (i32.const 3) + ) + (func $simple-switch-3 (result i32) + (block $A + (block $B + (block $y + (br_table $A $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $B $y + (i32.const 0) + ) + (return + (i32.const 0) + ) + ) + (return + (i32.const 1) + ) + ) + (return + (i32.const 2) + ) + ) + (i32.const 3) + ) + (func $simple-switch43 (result i32) + (local $0 i32) + (block $A + (block $B + (block $y + (br_if $A + (i32.eqz + (local.tee $0 + (i32.const 0) + ) + ) + ) + (br_if $B + (i32.eq + (local.get $0) + (i32.const 127) + ) + ) + (br $y) + (return + (i32.const 0) + ) + ) + (return + (i32.const 1) + ) + ) + (return + (i32.const 2) + ) + ) + (i32.const 3) + ) + (func $simple-switch-5 (result i32) + (block $A + (block $B + (block $y + (br_table $A $y $y $y $y $y $A $y $y $y $y $y $A $y + (i32.const 0) + ) + (return + (i32.const 0) + ) + ) + (return + (i32.const 1) + ) + ) + (return + (i32.const 2) + ) + ) + (i32.const 3) + ) + (func $undo-if-return (param $p i32) (result i32) + (local $x i32) + (block $out + (block + (br_if $out + (local.get $p) + ) + (local.set $x + (i32.const 1) + ) + ) + (block + (br_if $out + (i32.eqz + (local.get $p) + ) + ) + (local.set $x + (i32.const 2) + ) + ) + (local.set $x + (if (result i32) + (local.get $p) + (br $out) + (br $out) + ) + ) + ) + (local.get $p) + ) + (func $if-unreachable-but-declares-value (param $var$0 i32) (param $var$1 f64) (param $var$2 i32) (param $var$3 f64) (param $var$4 f32) (param $var$5 f32) (result i32) + (local $var$6 f64) + (if + (i32.const 0) + (drop + (loop $label$3 (result i64) + (block $label$4 (result i64) + (block $label$5 + (block $label$6 + (local.set $var$1 + (if (result f64) + (unreachable) + (br $label$5) + (f64.const 1) + ) + ) + ) + ) + (i64.const 1) + ) + ) + ) + ) + (i32.const 0) + ) + (func $if-flow-1 (result i32) + (select + (i32.const 1) + (i32.const 2) + (i32.const 0) + ) + ) + (func $if-flow-2 (result i32) + (if (result i32) + (i32.const 0) + (unreachable) + (i32.const 2) + ) + ) + (func $if-flow-3 (result i32) + (if (result i32) + (i32.const 0) + (i32.const 1) + (unreachable) + ) + ) + (func $if-flow-4 (result i32) + (if + (return + (i32.const 0) + ) + (return + (i32.const 1) + ) + (return + (i32.const 2) + ) + ) + ) + (func $iff-flow-fuzz-bug (result i32) + (loop $label$1 + (br_if $label$1 + (i32.eqz + (i32.const 1) + ) + ) + (loop $label$2 + (unreachable) + (if + (i32.const 0) + (nop) + (return + (i32.const 0) + ) + ) + ) + ) + ) + (func $fuzz-block-unreachable-brs-with-values (result i32) + (local $0 i32) + (loop $label$1 + (if + (local.get $0) + (block $label$2 + (local.tee $0 + (loop $label$5 + (br_if $label$5 + (block + (unreachable) + (drop + (i32.const 0) + ) + ) + ) + ) + ) + ) + (br $label$1) + ) + ) + ) + (func $drop-restructure-if (param $x i32) (param $y i32) (result i32) + (if (result i32) + (local.get $y) + (local.get $x) + (block $label$2 (result i32) + (nop) + (i32.const 0) + ) + ) + ) + (func $drop-restructure-if-final (param $x i32) (param $y i32) (result i32) + (if (result i32) + (local.get $y) + (local.get $x) + (block $label$2 (result i32) + (nop) + (unreachable) + ) + ) + ) + (func $drop-restructure-if-middle (param $x i32) (param $y i32) (result i32) + (if (result i32) + (local.get $y) + (local.get $x) + (block $label$2 (result i32) + (nop) + (nop) + (i32.const 0) + ) + ) + ) + (func $drop-restructure-if-bad (param $x i32) (param $y i32) (result i32) + (block $label$2 (result i32) + (drop + (br_if $label$2 + (local.tee $y + (local.get $x) + ) + (local.get $y) + ) + ) + (i32.const 0) + ) + ) + (func $drop-restructure-if-bad-2 (param $x i32) (param $y i32) (result i32) + (block $label$2 (result i32) + (drop + (br_if $label$2 + (local.get $y) + (local.tee $y + (local.get $x) + ) + ) + ) + (i32.const 0) + ) + ) + (func $if-block + (if + (i32.const 1) + (block $label + (block $block + (drop + (i32.const 2) + ) + (drop + (i32.const 3) + ) + ) + ) + ) + ) + (func $if-block-bad + (block $label + (if + (br $label) + (block $block + (drop + (i32.const 2) + ) + (drop + (i32.const 3) + ) + ) + ) + ) + ) + (func $if-block-br + (block $label + (br_if $label + (i32.const 1) + ) + ) + ) + (func $if-block-br-1 + (if + (i32.const 1) + (block $label + ) + (drop + (i32.const 3) + ) + ) + ) + (func $if-block-br-2 + (if + (i32.const 1) + (block $label + (drop + (i32.const 3) + ) + ) + (nop) + ) + ) + (func $if-block-br-3 + (if + (i32.const 1) + (block $label + ) + (nop) + ) + ) + (func $if-block-br-4-eithre + (if + (i32.const 1) + (block $label + (drop + (i32.const 2) + ) + ) + (drop + (i32.const 3) + ) + ) + ) + (func $if-block-br-5-value (result i32) + (select + (block $label (result i32) + (i32.const 2) + ) + (i32.const 3) + (i32.const 1) + ) + ) + (func $restructure-if-outerType-change + (loop $label$1 + (br_if $label$1 + (block $label$2 + (if + (block $label$4 + (unreachable) + ) + (block $label$3 + (br $label$3) + ) + ) + (unreachable) + ) + ) + ) + ) + (func $if-arm-unreachable + (if + (unreachable) + (block $label$1 + (nop) + ) + (unreachable) + ) + ) + (func $propagate-type-if-we-optimize + (if + (i32.const 1) + (nop) + (block $block + (drop + (loop $label$3 (result i64) + (br_if $label$3 + (if + (i32.const 0) + (block $label$4 + (unreachable) + ) + (unreachable) + ) + ) + (i64.const -9) + ) + ) + (unreachable) + ) + ) + ) + (func $switch-to-br + (block $A + (block $y + (block + (drop + (i32.const 0) + ) + (br $A) + ) + ) + ) + ) + (func $switch-to-br-value (result i32) + (block $A (result i32) + (block $y (result i32) + (block + (drop + (i32.const 1) + ) + (br $A + (i32.const 0) + ) + ) + ) + ) + ) + (func $switch-threading-multi (param $x i32) (param $y i32) (result i32) + (block $block$5$break + (block $block$4$break + (loop $shape$1$continue + (block $block$3$break + (block $switch$2$case$5 + (block $switch$2$case$4 + (block $switch$2$default + (block $switch$2$case$2 + (br_table $shape$1$continue $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$5$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$4$break $block$3$break + (local.get $x) + ) + ) + (br $shape$1$continue) + ) + (br $block$3$break) + ) + (br $block$4$break) + ) + (br $block$5$break) + ) + ) + (unreachable) + ) + (local.set $y + (i32.const 1) + ) + (unreachable) + ) + (local.set $y + (i32.const 2) + ) + (unreachable) + ) + (func $fuzz-type-changes-in-our-cycles (result i32) + (loop $label$1 + (if + (i32.const 0) + (if + (i32.const 0) + (block $label$3 + (block $block + ) + ) + (return + (i32.const -8192) + ) + ) + ) + (br $label$1) + ) + ) + (func $refinalize-need-br-value (result i32) + (loop $label$3 (result i32) + (block $label$6 (result i32) + (block $label$10 + (unreachable) + (block $label$503 + (br_if $label$3 + (block $label$530 (result i32) + (br_if $label$503 + (i32.const 0) + ) + (i32.const 0) + ) + ) + (return + (i32.const 127) + ) + ) + ) + ) + ) + ) + (func $selectify (param $x i32) + (drop + (if (result i32) + (i32.eq + (local.get $x) + (i32.const 1) + ) + (i32.mul + (i32.const 2) + (i32.const 3) + ) + (i32.mul + (i32.const 2) + (i32.const 3) + ) + ) + ) + (drop + (select + (i32.add + (i32.const 2) + (i32.const 3) + ) + (i32.add + (i32.const 2) + (i32.const 3) + ) + (i32.eq + (local.get $x) + (i32.const 1) + ) + ) + ) + ) + (func $selectify-even-with-condition-side-effects (param $0 i32) + (drop + (select + (i32.const 1) + (i32.const 0) + (i32.rem_s + (local.get $0) + (i32.const 2) + ) + ) + ) + ) + (func $no-selectify-when-arm-side-effects (param $0 i32) + (drop + (if (result i32) + (i32.rem_s + (local.get $0) + (i32.const 2) + ) + (local.tee $0 + (i32.const 1) + ) + (i32.const 0) + ) + ) + (drop + (if (result i32) + (i32.rem_s + (local.get $0) + (i32.const 2) + ) + (i32.const 0) + (local.tee $0 + (i32.const 1) + ) + ) + ) + ) + (func $no-selectify-when-effects-invalidate (param $0 i32) + (local $1 i32) + (drop + (if (result i32) + (i32.rem_s + (local.tee $0 + (i32.const 3) + ) + (i32.const 2) + ) + (local.get $0) + (i32.const 0) + ) + ) + (drop + (if (result i32) + (i32.rem_s + (local.tee $0 + (i32.const 3) + ) + (i32.const 2) + ) + (i32.const 0) + (local.get $0) + ) + ) + (drop + (select + (i32.const 0) + (local.get $1) + (i32.rem_s + (local.tee $0 + (i32.const 3) + ) + (i32.const 2) + ) + ) + ) + ) + (func $if-one-side (result i32) + (local $x i32) + (local.set $x + (select + (i32.const 2) + (local.get $x) + (i32.const 1) + ) + ) + (local.get $x) + ) + (func $if-one-side-b (result i32) + (local $x i32) + (local.set $x + (select + (local.get $x) + (i32.const 2) + (i32.const 1) + ) + ) + (local.get $x) + ) + (func $if-one-side-tee-etc (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $x i32) + (local $y i32) + (local $z i32) + (drop + (call $if-one-side-tee-etc + (local.tee $x + (select + (i32.const -4) + (local.get $x) + (i32.const -3) + ) + ) + ) + ) + (i32.const 0) + ) + (func $ifs-copies-recursive (param $20 i32) (result i32) + (local.set $20 + (select + (select + (select + (i32.const 4) + (local.get $20) + (i32.const 3) + ) + (local.get $20) + (i32.const 2) + ) + (local.get $20) + (i32.const 1) + ) + ) + (local.get $20) + ) + (func $if-copy1 + (local $x i32) + (local $y i32) + (loop $top + (local.set $x + (select + (local.get $x) + (local.get $y) + (i32.const 1) + ) + ) + (br $top) + ) + ) + (func $if-copy3 + (local $x i32) + (local $y i32) + (loop $top + (if + (i32.const 1) + (local.tee $x + (unreachable) + ) + ) + (br $top) + ) + ) + (func $if-copy4 + (local $x i32) + (local $y i32) + (loop $top + (local.set $x + (if (result i32) + (i32.const 1) + (unreachable) + (local.get $y) + ) + ) + (br $top) + ) + ) + (func $if-copy-tee + (local $x i32) + (local $y i32) + (loop $top + (drop + (local.tee $x + (select + (local.get $x) + (i32.const 2) + (i32.const 1) + ) + ) + ) + (br $top) + ) + ) + (func $loop-end-set (param $x i32) (result i32) + (loop $loop + (nop) + (br_if $loop + (local.get $x) + ) + (local.set $x + (i32.const 1) + ) + ) + (local.get $x) + ) + (func $loop-end-value (param $x i32) (result i32) + (loop $loop (result i32) + (nop) + (br_if $loop + (local.get $x) + ) + (i32.const 1) + ) + ) + (func $do-not-flow-values-through-unreachable-code (result i32) + (block $block + (unreachable) + (if + (i32.const 0) + (block $A + (return + (i32.const 0) + ) + ) + (nop) + ) + ) + ) + (func $do-not-flow-values-through-unreachable-code-b (result i32) + (loop $loop-in + (unreachable) + (if + (i32.const 0) + (block $A + (return + (i32.const 0) + ) + ) + (nop) + ) + ) + ) + (func $if_br_if + (local $0 i32) + (block $label$1 + (br_if $label$1 + (select + (local.tee $0 + (i32.const 1024) + ) + (i32.const 0) + (i32.eqz + (i32.const -4) + ) + ) + ) + (br_if $label$1 + (select + (i32.const 1025) + (i32.const 0) + (i32.eqz + (i32.const -5) + ) + ) + ) + (br_if $label$1 + (select + (local.tee $0 + (i32.const 1025) + ) + (i32.const 0) + (i32.eqz + (i32.const -6) + ) + ) + ) + (if + (i32.const 1026) + (br_if $label$1 + (local.tee $0 + (i32.const -7) + ) + ) + ) + (i32.store + (i32.const 1024) + (i32.add + (local.get $0) + (i32.const 1) + ) + ) + ) + ) + (func $unswitch-reordering (param $x i32) (result i32) + (block $label$1 (result i32) + (br_table $label$1 + (block $label$2 (result i32) + (i32.store + (i32.const 1) + (i32.const 2) + ) + (i32.const 3) + ) + (block $block (result i32) + (if + (local.get $x) + (return + (i32.const 5) + ) + ) + (i32.const 6) + ) + ) + ) + ) + (func $no-selectify-if-condition-unreachable (result i32) + (select + (if (result i32) + (unreachable) + (i32.const 3) + (i32.const 4) + ) + (i32.const 1) + (i32.const 2) + ) + ) +) diff -Nru binaryen-91/test/passes/remove-unused-brs_enable-multivalue.wast binaryen-99/test/passes/remove-unused-brs_enable-multivalue.wast --- binaryen-91/test/passes/remove-unused-brs_enable-multivalue.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-brs_enable-multivalue.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,2198 @@ +(module + (memory 256 256) + (type $0 (func (param i32))) + (type $1 (func)) + (type $2 (func (result i32))) + (func $b0-yes (type $0) (param $i1 i32) + (block $topmost + (br $topmost) + ) + ) + (func $b1 (type $0) (param $i1 i32) + (block $topmost + (block + (drop + (i32.const 0) + ) + (br $topmost) + ) + ) + ) + (func $b2 (type $0) (param $i1 i32) + (block $topmost + (block $inner + (br $topmost) + ) + ) + ) + (func $b3-yes (type $0) (param $i1 i32) + (block $topmost + (block $inner + (br $inner) + ) + ) + ) + (func $b4 (type $0) (param $i1 i32) + (block $topmost + (block $inner + (block + (drop + (i32.const 0) + ) + (br $topmost) + ) + ) + ) + ) + (func $b5 (type $0) (param $i1 i32) + (block $topmost + (block $inner + (block + (drop + (i32.const 0) + ) + (br $inner) + ) + ) + ) + ) + (func $b6 (type $0) (param $i1 i32) + (block $topmost + (br_if $topmost + (i32.const 1) + ) + ) + ) + (func $b7 (type $0) (param $i1 i32) + (block $topmost + (block + (drop + (i32.const 0) + ) + (br_if $topmost + (i32.const 1) + ) + ) + ) + ) + (func $b8 (type $0) (param $i1 i32) + (block $topmost + (block $inner + (br_if $topmost + (i32.const 1) + ) + ) + ) + ) + (func $b9 (type $0) (param $i1 i32) + (block $topmost + (block $inner + (br_if $topmost + (i32.const 1) + ) + ) + ) + ) + (func $b10 (type $0) (param $i1 i32) + (block $topmost + (block $inner + (block + (drop + (i32.const 0) + ) + (br_if $topmost + (i32.const 1) + ) + ) + ) + ) + ) + (func $b11 (type $0) (param $i1 i32) + (block $topmost + (block $inner + (block + (drop + (i32.const 0) + ) + (br_if $inner + (i32.const 1) + ) + ) + ) + ) + ) + (func $b12-yes (type $1) + (block $topmost + (if + (i32.const 1) + (block $block1 + (drop + (i32.const 12) + ) + (block + (drop + (i32.const 1) + ) + (br $topmost) + ) + ) + (block $block3 + (drop + (i32.const 27) + ) + (block + (drop + (i32.const 2) + ) + (br $topmost) + ) + ) + ) + ) + ) + (func $b13 (type $2) (result i32) + (block $topmost (result i32) + (if + (i32.const 1) + (block $block1 + (drop + (i32.const 12) + ) + (drop + (br_if $topmost + (i32.const 1) + (i32.const 1) + ) + ) + ) + (block $block3 + (drop + (i32.const 27) + ) + (br $topmost + (i32.const 2) + ) + ) + ) + (i32.const 3) + ) + ) + (func $b14 (type $2) (result i32) + (block $topmost (result i32) + (if (result i32) + (i32.const 1) + (block $block1 (result i32) + (i32.const 12) + ) + (block $block3 (result i32) + (i32.const 27) + ) + ) + ) + ) + (func $b14-tuple (result i32 i64) + (block $topmost (result i32 i64) + (if (result i32 i64) + (i32.const 1) + (block $block1 (result i32 i64) + (tuple.make + (i32.const 12) + (i64.const 12) + ) + ) + (block $block3 (result i32 i64) + (tuple.make + (i32.const 27) + (i64.const 27) + ) + ) + ) + ) + ) + (func $b15 (type $1) + (block $topmost + (if + (i32.const 17) + (br $topmost) + ) + ) + ) + (func $b15b (type $1) + (block $topmost + (if + (i32.const 18) + (block + (drop + (i32.const 0) + ) + (br $topmost) + ) + ) + ) + ) + (func $b16 (type $1) + (block $a + (block $b + (block $c + (br $a) + ) + (br $a) + ) + (br $a) + ) + (block $a + (block $b + (block $c + (br $c) + ) + (br $b) + ) + (br $a) + ) + (block $a + (block $b + (block $c + (br $b) + ) + (br $a) + ) + (br $a) + ) + ) + (func $b17 (type $1) + (block $a + (if + (i32.const 0) + (block $block1 + (br $a) + ) + (block $block3 + (br $a) + ) + ) + ) + (block $a + (if + (i32.const 0) + (drop + (i32.const 1) + ) + (block $block6 + (br $a) + ) + ) + ) + (block $a + (if + (i32.const 0) + (block $block8 + (br $a) + ) + (drop + (i32.const 1) + ) + ) + ) + (block $c + (block $b + (if + (i32.const 0) + (block $block11 + (br $b) + ) + (block $block13 + (br $c) + ) + ) + ) + ) + ) + (func $ret-1 (type $1) + (return) + ) + (func $ret-2 (type $1) + (block $block0 + (block $block1 + (return) + ) + ) + ) + (func $ret-3 (type $1) + (block $block0 + (if + (i32.const 0) + (return) + (block $block3 + (return) + ) + ) + ) + ) + (func $ret-value (type $2) (result i32) + (block $block0 + (block $block1 + (return + (i32.const 1) + ) + ) + ) + ) + (func $no-select-but-the-last (type $1) + (block $a + (if + (i32.const 0) + (drop + (i32.const 1) + ) + (block $block2 + (block + (drop + (i32.const 2) + ) + (br $a) + ) + (drop + (i32.const 3) + ) + ) + ) + (if + (i32.const 0) + (block $block4 + (block + (drop + (i32.const 2) + ) + (br $a) + ) + (drop + (i32.const 3) + ) + ) + (drop + (i32.const 1) + ) + ) + (if + (block $block6 (result i32) + (block + (drop + (i32.const 2) + ) + (br $a) + ) + (i32.const 3) + ) + (drop + (i32.const 0) + ) + (drop + (i32.const 1) + ) + ) + (if + (block $a (result i32) + (br $a + (i32.const 0) + ) + ) + (block $a + (block + (drop + (i32.const 1) + ) + (br $a) + ) + ) + (block $a + (block + (drop + (i32.const 2) + ) + (br $a) + ) + ) + ) + ) + ) + (func $side-effects-and-order (type $2) (result i32) + (local $x i32) + (block $do-once$0 + (if + (call $b13) + (block + (drop + (i32.const 0) + ) + (br $do-once$0) + ) + ) + (drop + (i32.const 1) + ) + ) + (block $do-once$0 + (if + (call $b13) + (block + (drop + (call $b14) + ) + (br $do-once$0) + ) + ) + (drop + (i32.const 1) + ) + ) + (block $do-once$0 + (if + (i32.const 0) + (block + (drop + (call $b14) + ) + (br $do-once$0) + ) + ) + (drop + (i32.const 1) + ) + ) + (block $do-once$0 (result i32) + (if + (local.tee $x + (i32.const 1) + ) + (br $do-once$0 + (local.tee $x + (i32.const 2) + ) + ) + ) + (i32.const 1) + ) + ) + (func $loops + (loop $in + (block $out + (if (i32.const 0) (br $out)) + (br $in) ;; we can conditionalize this, and then the br out can vanish + ) + ) + (loop $in + (br $in) + ) + (loop + (block $out + (if (i32.const 0) (br $out)) + (br $out) + ) + ) + (loop $in + (block $out + (if (i32.const 0) (br $out)) + (br $out) + ) + ) + (loop $in) + (loop $in + (block $out) + ) + (loop $in + (block $out + (if (i32.const 0) (br $out)) + (br_if $in (i32.const 1)) + ) + ) + (loop $in + (block $out + (if (i32.const 0) (br $in)) + (br $out) + ) + ) + (loop $in + (block $out + (if (i32.const 0) (unreachable)) + (br $in) + ) + ) + (loop $in + (block $out + (if (i32.const 0) + (block + (call $loops) + (br $out) + ) + ) + (br $in) + ) + ) + (loop $in-todo ;; br_if into if + (block $out-todo + (if (i32.const 0) (br $out-todo)) + (call $loops) + (br $in-todo) + ) + ) + (loop $in + (block $out + (if (i32.const 0) + (br $out) + (call $loops) + ) + (br $in) + ) + ) + (loop $in + (block $out + (if (i32.const 0) + (call $loops) + (br $out) + ) + (br $in) + ) + ) + (loop $in + (block $out + (if (i32.const 0) + (block + (drop (i32.const 1)) + (call $loops) + ) + (br $out) + ) + (br $in) + ) + ) + (loop $in + (block $out + (if (i32.const 0) + (br $out) + (call $loops) + ) + (drop (i32.const 100)) + (br $in) + ) + ) + (loop $in + (block $out + (if (i32.const 0) + (call $loops) + (br $out) + ) + (drop (i32.const 101)) + (br $in) + ) + ) + (loop $in + (block $out + (if (i32.const 0) + (block + (drop (i32.const 1)) + (call $loops) + ) + (br $out) + ) + (drop (i32.const 102)) + (br $in) + ) + ) + (loop $in + (block $out + (if (i32.const 0) + (br $out) + (call $loops) + ) + (return) + (br $in) + ) + ) + (loop $in + (block $out + (if (i32.const 0) + (br $out) + (call $loops) + ) + (br $out) + (br $in) + ) + ) + (loop $in + (block $out + (if (i32.const 0) + (br $out) + (call $loops) + ) + (drop + (block $out2 (result i32) + (br $out2 (i32.const 1)) + ) + ) + (br $in) + ) + ) + (loop $in + (block $out + (br_if $out (i32.const 0)) + (br $in) + ) + ) + (loop $in-todo2 ;; if-ify + (block $out-todo2 + (br_if $out-todo2 (i32.const 0)) + (call $loops) + (br $in-todo2) + ) + ) + (loop $in + (block $out + (br $out) + (br $in) + ) + ) + (loop $in + (block $out + (br_if $in (i32.const 0)) + (br $in) + ) + ) + (loop $in-not ;; do NOT if-ify, the block can't be removed + (block $out-not + (br_if $out-not (i32.const -1)) + (br_if $out-not (i32.const 0)) + (call $loops) + (br $in-not) + ) + ) + (loop $in-todo2 ;; if-ify a slice with 2 things + (block $out-todo2 + (br_if $out-todo2 (i32.const 0)) + (call $loops) + (drop (i32.const 1)) + (br $in-todo2) + ) + ) + ) + (func $br_if_in_block (result i32) + (block $outval (result i32) + (block $in + (if (i32.const 1) (br $in) (br $in)) + (drop (i32.const 2)) + (if (i32.const 3) (unreachable) (br $in)) + (drop (i32.const 4)) + (if (i32.const 5) (br $in) (unreachable)) + (drop (i32.const 6)) + ) + (if (result i32) (i32.const 6) (br $outval (i32.const 7)) (i32.const 8)) + ) + ) + (func $threading + (drop + (block $value-out (result i32) + (block $value-in (result i32) + (block $out + (block $in + (if (i32.const 1) + (br $in) + ) + (br_if $in (i32.const 2)) + (br $value-in (i32.const 3)) + ) + (br $out) + ) + (i32.const 4) + ) + ) + ) + (block $stack1 + (block $stack2 + (block $stack3 + (block $stack4 + (if (i32.const 1) + (br $stack4) + ) + (unreachable) + ) + (br $stack3) + ) + (br $stack2) + ) + (br $stack1) + ) + ) + (func $if-to-br_if-conflict (param $x i32) (param $y i32) (result i32) + (block $leave + (local.set $y + (block $out (result i32) + (if + (local.get $x) + (br $out + (block (result i32) + (local.set $x (i32.const 0)) + (i32.const 1) + ) + ) + (br_if $leave (i32.const 1)) + ) + (unreachable) + ) + ) + ) + (i32.add (local.get $x) (local.get $y)) + ) + (func $if-to-br_if-conflict2 (param $x i32) (param $y i32) (result i32) + (block $leave + (local.set $y + (block $out (result i32) + (if + (local.get $x) + (br_if $leave (i32.const 1)) + (br $out + (block (result i32) + (local.set $x (i32.const 0)) + (i32.const 1) + ) + ) + ) + (unreachable) + ) + ) + ) + (i32.add (local.get $x) (local.get $y)) + ) + (func $if-to-br_if-value-sideeffect (param $x i32) (param $y i32) (result i32) + (block $leave + (local.set $y + (block $out (result i32) + (if + (local.get $x) + (br $out + (block (result i32) + (drop (call $if-to-br_if-value-sideeffect (i32.const 0) (i32.const 1))) + (nop) + (i32.const 1) + ) + ) + ) + (unreachable) + ) + ) + ) + (i32.add (local.get $x) (local.get $y)) + ) + (func $fuzz (param $j i32) (param $g i32) + (block $label$break$c + (loop $label$continue$d + (block $label$break$d + (if + (i32.lt_s + (local.get $j) + (i32.const 2147483640) + ) + (block $x + (block $y + (block $z + (br_if $y + (local.get $j) + ) + (br $x) ;; don't be confused by this + ) + (nop) ;; get me to the store! + ) + ) + (block $switch$26 + (nop) + ) + ) + (i32.store + (i32.const 5724) + (i32.const -254899267) + ) + (br $label$continue$d) + ) + ) + ) + ) + (func $iffify + (block $yes + (br_if $yes + (i32.const 0) + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + ) + (block $no + (br_if $no + (i32.const 0) + ) + (drop (i32.const 1)) + (br $no) + (drop (i32.const 2)) + ) + (block $no2 + (br_if $no2 + (i32.const 0) + ) + ) + (block $no3 + (br $no3) + (drop (i32.const 1)) + (drop (i32.const 2)) + ) + (block $no5 + (block $no4 + (br_if $no5 + (i32.const 0) + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + ) + ) + ) + (func $loop-if (result i32) + (block $outer (result i32) + (loop $typed (result i32) + ;; we can move the br after us into our if-else, which means we are the final + ;; element in the block, + (if + (i32.const 2) + (block + (drop (call $loop-if)) + (br $outer (i32.const 0)) + ) + ) + (br $typed) + ) + ) + ) + (func $block-break (param $0 i32) + (block $block$7$break + (block $shape$6$continue + (call $block-break (i32.const 1)) + (br $block$7$break) + ) + ) + ) + (func $loop-break (param $0 i32) + (block $block$7$break + (loop $shape$6$continue + (call $loop-break (i32.const 1)) + (br_if $shape$6$continue + (local.get $0) + ) + (br $block$7$break) + ) + ) + ) + (func $untaken-brs-might-prevent-block-removal (param $0 f32) (param $1 i32) (param $2 f32) (param $3 i32) (param $4 i32) (param $5 f64) (param $6 f32) (result i32) + (block $label$0 (result i32) + (block $label$1 ;; this block has no taken brs, but we can't remove it without removing them first + (br_if $label$1 + (i32.const 607395945) + ) + (br_if $label$1 + (i32.load16_s offset=3 align=1 + (select + (call $untaken-brs-might-prevent-block-removal + (f32.const 1.4904844647389837e-07) + (br_if $label$0 + (i32.store16 offset=4 align=1 + (i32.const 1900641) + (br $label$0 + (i32.const 1628075109) + ) + ) + (i32.const 1764950569) + ) + (f32.const 1.1910939690100655e-32) + (i32.const 1628057906) + (i32.const 859068982) + (f64.const 2.524518840347722e-258) + (f32.const -nan:0x40a63) + ) + (i32.const 688529440) + (i32.const 1751478890) + ) + ) + ) + ) + (i32.const 1935947830) + ) + ) + (func $unexitable-loops-result (param $0 i32) (result i64) + (loop $label$0 + (loop $label$1 + (if + (i32.load8_s + (i32.const 201460482) + ) + (br $label$0) + (block $label$3 + (br_if $label$3 + (local.get $0) + ) + ) + ) + (br $label$1) + ) + ) + ) + (func $untaken-br-with-concrete-last-element + (block $label$8 + (block $label$11 + (block $label$14 + (br_if $label$14 + (br $label$11 + ) + ) + ) + ) + ) + ) + (func $untaken-br-with-concrete-last-element2 (result i32) + (block $label$8 (result i32) + (block $label$11 (result i32) + (block $label$14 (result i32) + (br_if $label$14 + (i32.const 102) + (br $label$11 + (i32.const 103) + ) + ) + ) + ) + ) + ) + (func $untaken-br_if-then-if + (block $label$0 + (br_if $label$0 + (unreachable) + ) + (if + (i32.const 0) + (nop) + ) + ) + ) + (func $unreachable-if-that-could-be-a-br_if (result i64) + (loop $label$3 (result i64) + (drop + (if (result f64) + (unreachable) + (f64.const 1) + (br $label$3) + ) + ) + (i64.const 1) + ) + ) + (func $nop-br-might-update-type + (block $label$39 + (drop + (if (result i32) + (unreachable) + (if (result i32) + (i32.const 1) + (br $label$39) ;; if we nop this, then the parent type must change + (i32.const 0) + ) + (i32.const 0) + ) + ) + ) + ) + (func $no-flow-through-if-without-else (result f32) + (local $0 i32) + (local $2 f32) + (block $label$0 + (if + (local.get $0) + (block $label$11 + (return + (f32.const 239) + ) + (if + (i32.const 0) + (return + (local.get $2) + ) + ) + ) + (return + (f32.const -9223372036854775808) + ) + ) + ) + ) + (func $unreachable-return-loop-value (result i64) + (loop $loop + (if + (i32.const 1) + (block $block + (br_if $block + (br $loop) + ) + (br $loop) + ) + ) + (br $loop) ;; we 100% go back to the loop top, the loop is never exited. but opts move code around so that is not obvious anymore, and the loop becomes a nop, but the func has a return value + ) + ) + (func $obviously-flows-out-maybe (param $var$0 i32) (result f32) + (block $label$1 (result f32) + (br $label$1 + (f32.const 1) + ) + (loop $label$5 + (if + (i32.const 11) + (block $label$8 ;; this block is none - it has a break, even if not taken - and so looks like it might flow out, + (br_if $label$8 ;; and so we can't move it outside to be the end of the loop's block + (unreachable) + ) + (br $label$5) + ) + ) + (br $label$5) + ) + ) + ) + (func $br-to-table (param $a i32) + (block $x + (block $y + (block $z + (br_if $x (i32.eq (local.get $a) (i32.const 0))) + (br_if $y (i32.eq (local.get $a) (i32.const 1))) + (br_if $z (i32.eq (local.get $a) (i32.const 2))) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-too-few (param $a i32) + (block $x + (block $y + (block $z + (br_if $x (i32.eq (local.get $a) (i32.const 0))) + (br_if $y (i32.eq (local.get $a) (i32.const 1))) + ) + ) + ) + ) + (func $br-to-table-one-more (param $a i32) + (block $x + (block $y + (block $z + (br_if $x (i32.eq (local.get $a) (i32.const 0))) + (br_if $y (i32.eq (local.get $a) (i32.const 1))) + (br_if $z (i32.eq (local.get $a) (i32.const 2))) + (br_if $x (i32.eq (local.get $a) (i32.const 3))) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-overlap (param $a i32) + (block $x + (block $y + (block $z + (br_if $x (i32.eq (local.get $a) (i32.const 0))) + (br_if $y (i32.eq (local.get $a) (i32.const 1))) + (br_if $z (i32.eq (local.get $a) (i32.const 1))) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-overlap-start (param $a i32) + (block $x + (block $y + (block $z + (br_if $x (i32.eq (local.get $a) (i32.const 0))) + (br_if $y (i32.eq (local.get $a) (i32.const 0))) + (br_if $z (i32.eq (local.get $a) (i32.const 1))) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-offset (param $a i32) + (block $x + (block $y + (block $z + (br_if $x (i32.eq (local.get $a) (i32.const 15))) + (br_if $y (i32.eq (local.get $a) (i32.const 16))) + (br_if $z (i32.eq (local.get $a) (i32.const 17))) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-RANGE-high (param $a i32) + (block $x + (block $y + (block $z + (br_if $x (i32.eq (local.get $a) (i32.const 0))) + (br_if $y (i32.eq (local.get $a) (i32.const 1))) + (br_if $z (i32.eq (local.get $a) (i32.const 10))) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-RANGE-low (param $a i32) + (block $x + (block $y + (block $z + (br_if $x (i32.eq (local.get $a) (i32.const 0))) + (br_if $y (i32.eq (local.get $a) (i32.const 3))) + (br_if $z (i32.eq (local.get $a) (i32.const 9))) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-bad (param $a i32) (result i32) + (block $value (result i32) + (block $x + (block $y + (block $z + (nop) + (br $x) + (br_if $x (i32.eq (local.get $a) (i32.const 0))) + (br_if $y (i32.eq (local.get $a) (i32.const 1))) + (br_if $z (i32.eq (local.get $a) (i32.const 2))) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (i32.const 2000) + ) + ) + (func $br-to-table-bad2 (param $a i32) (result i32) + (block $value (result i32) + (block $x + (block $y + (block $z + (nop) + (drop (br_if $value (i32.const 1000) (i32.eq (local.get $a) (i32.const 0)))) + (br_if $x (i32.eq (local.get $a) (i32.const 0))) + (br_if $y (i32.eq (local.get $a) (i32.const 1))) + (br_if $z (i32.eq (local.get $a) (i32.const 2))) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (i32.const 2000) + ) + ) + (func $br-to-table-bad3 (param $a i32) + (block $x + (block $y + (block $z + (br_if $x (i32.eq (i32.const 10) (i32.const 0))) + (br_if $x (i32.eq (local.get $a) (i32.const 0))) + (br_if $y (i32.eq (local.get $a) (i32.const 1))) + (br_if $z (i32.eq (local.get $a) (i32.const 2))) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-multi (param $a i32) + (block $x + (block $y + (block $z + (br_if $z (i32.eq (i32.const 10) (i32.const 5))) + (br_if $y (i32.eq (i32.const 10) (i32.const 6))) + (br_if $x (i32.eq (i32.const 10) (i32.const 7))) + (br_if $x (i32.eq (local.get $a) (i32.const 0))) + (br_if $y (i32.eq (local.get $a) (i32.const 1))) + (br_if $z (i32.eq (local.get $a) (i32.const 2))) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-bad4 (param $a i32) + (block $x + (block $y + (block $z + (br_if $x (i32.ne (local.get $a) (i32.const 0))) + (br_if $y (i32.eq (local.get $a) (i32.const 1))) + (br_if $z (i32.eq (local.get $a) (i32.const 2))) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-bad5 (param $a i32) + (block $x + (block $y + (block $z + (br_if $x (i32.eq (local.get $a) (local.get $a))) + (br_if $y (i32.eq (local.get $a) (local.get $a))) + (br_if $z (i32.eq (local.get $a) (local.get $a))) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-bad6 (param $a i32) + (block $x + (block $y + (block $z + (br_if $x (i32.eq (call $b13) (i32.const 0))) + (br_if $y (i32.eq (call $b13) (i32.const 1))) + (br_if $z (i32.eq (call $b13) (i32.const 2))) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-bad7 (param $a i32) + (block $x + (block $y + (block $z + (br_if $x (i32.eq (local.get $a) (i32.const -1))) ;; negative, we support only positive up to int32_max + (br_if $y (i32.eq (local.get $a) (i32.const -1))) + (br_if $z (i32.eq (local.get $a) (i32.const -1))) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-defaultNameOverlaps (param $a i32) + (block $x + (block $tablify|0 + (block $z + (br_if $x (i32.eq (local.get $a) (i32.const 0))) + (br_if $tablify|0 (i32.eq (local.get $a) (i32.const 1))) + (br_if $z (i32.eq (local.get $a) (i32.const 2))) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-unreach (param $a i32) + (block $x + (block $y + (block $z + (br_if $x (i32.eq (unreachable) (i32.const 0))) + (br_if $y (i32.eq (unreachable) (i32.const 1))) + (br_if $z (i32.eq (unreachable) (i32.const 2))) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $br-to-table-overlap-but-later (param $a i32) + (block $x + (block $y + (block $z + (br_if $x (i32.eq (local.get $a) (i32.const 0))) + (br_if $y (i32.eq (local.get $a) (i32.const 1))) + (br_if $z (i32.eq (local.get $a) (i32.const 1))) + (br_if $x (i32.eq (local.get $a) (i32.const 2))) + (br_if $y (i32.eq (local.get $a) (i32.const 3))) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (unreachable) + ) + (func $tiny-switch + (block $x + (block $y + (br_table $x $y + (i32.const 0) + ) + ) + ) + (block $z + (br_table $z + (i32.const 0) + ) + ) + ) + (func $trim-switch + (block $A + (block $y + (br_table $y $y $A $y $A $y $A $y $y $y $y $y $y $y $y $y $y $y + (i32.const 0) + ) + ) + (call $trim-switch) + ) + ) + (func $same-target-br_if-and-br + (block $x + (br_if $x + (i32.const 0) + ) + (br $x) + (unreachable) + ) + ) + (func $simple-switch (result i32) + (block $A + (block $B + (block $y + (br_table $A $y $y $y $y $y $A $y $y $y $y $A $y + (i32.const 0) + ) + (return (i32.const 0)) + ) + (return (i32.const 1)) + ) + (return (i32.const 2)) + ) + (return (i32.const 3)) + ) + (func $simple-switch-2 (result i32) + (block $A + (block $B + (block $y + (br_table $A $y $y $y $y $y $y $y $y $y $y $y $A $y + (i32.const 0) + ) + (return (i32.const 0)) + ) + (return (i32.const 1)) + ) + (return (i32.const 2)) + ) + (return (i32.const 3)) + ) + (func $simple-switch-3 (result i32) + (block $A + (block $B + (block $y + (br_table $A $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $B $y + (i32.const 0) + ) + (return (i32.const 0)) + ) + (return (i32.const 1)) + ) + (return (i32.const 2)) + ) + (return (i32.const 3)) + ) + (func $simple-switch43 (result i32) + (block $A + (block $B + (block $y + (br_table $A $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $B $y + (i32.const 0) + ) + (return (i32.const 0)) + ) + (return (i32.const 1)) + ) + (return (i32.const 2)) + ) + (return (i32.const 3)) + ) + (func $simple-switch-5 (result i32) + (block $A + (block $B + (block $y + (br_table $A $y $y $y $y $y $A $y $y $y $y $y $A $y + (i32.const 0) + ) + (return (i32.const 0)) + ) + (return (i32.const 1)) + ) + (return (i32.const 2)) + ) + (return (i32.const 3)) + ) + (func $undo-if-return (param $p i32) (result i32) + (local $x i32) + (block $out + (local.set $x + (if (result i32) + (local.get $p) + (br $out) + (i32.const 1) + ) + ) + (local.set $x + (if (result i32) + (local.get $p) + (i32.const 2) + (br $out) + ) + ) + (local.set $x + (if (result i32) + (local.get $p) + (br $out) + (br $out) + ) + ) + ) + (local.get $p) + ) + (func $if-unreachable-but-declares-value (param $var$0 i32) (param $var$1 f64) (param $var$2 i32) (param $var$3 f64) (param $var$4 f32) (param $var$5 f32) (result i32) + (local $var$6 f64) + (if + (i32.const 0) + (drop + (loop $label$3 (result i64) + (block $label$4 (result i64) + (block $label$5 + (block $label$6 + (local.set $var$1 + (if (result f64) + (unreachable) + (br $label$5) + (f64.const 1) + ) + ) + ) + (nop) + ) + (i64.const 1) + ) + ) + ) + ) + (i32.const 0) + ) + (func $if-flow-1 (result i32) + (if + (i32.const 0) + (return (i32.const 1)) + (return (i32.const 2)) + ) + ) + (func $if-flow-2 (result i32) + (if + (i32.const 0) + (unreachable) + (return (i32.const 2)) + ) + ) + (func $if-flow-3 (result i32) + (if + (i32.const 0) + (return (i32.const 1)) + (unreachable) + ) + ) + (func $if-flow-4 (result i32) + (if + (return (i32.const 0)) + (return (i32.const 1)) + (return (i32.const 2)) + ) + ) + (func $iff-flow-fuzz-bug (result i32) + (loop $label$1 + (if + (i32.const 1) + (loop $label$2 + (unreachable) + (if ;; a loop that is never reached at the end of a loop + (i32.const 0) + (nop) + (return + (i32.const 0) + ) + ) + ) + ) + (br $label$1) + ) + ) + (func $fuzz-block-unreachable-brs-with-values (result i32) + (local $0 i32) + (loop $label$1 (result i32) + (block $label$2 (result i32) + (if + (local.get $0) + (local.set $0 + (loop $label$5 + (br_if $label$5 + (br_if $label$2 + (unreachable) + (i32.const 0) + ) + ) + ) + ) + ) + (br $label$1) + ) + ) + ) + (func $drop-restructure-if (param $x i32) (param $y i32) (result i32) + (block $label$2 (result i32) + (drop + (br_if $label$2 + (local.get $x) + (local.get $y) + ) + ) + (i32.const 0) + ) + ) + (func $drop-restructure-if-final (param $x i32) (param $y i32) (result i32) + (block $label$2 (result i32) + (drop + (br_if $label$2 + (local.get $x) + (local.get $y) + ) + ) + (unreachable) + ) + ) + (func $drop-restructure-if-middle (param $x i32) (param $y i32) (result i32) + (block $label$2 (result i32) + (drop + (br_if $label$2 + (local.get $x) + (local.get $y) + ) + ) + (nop) ;; the middle + (i32.const 0) + ) + ) + (func $drop-restructure-if-bad (param $x i32) (param $y i32) (result i32) + (block $label$2 (result i32) + (drop + (br_if $label$2 + (local.tee $y (local.get $x)) + (local.get $y) + ) + ) + (i32.const 0) + ) + ) + (func $drop-restructure-if-bad-2 (param $x i32) (param $y i32) (result i32) + (block $label$2 (result i32) + (drop + (br_if $label$2 + (local.get $y) + (local.tee $y (local.get $x)) + ) + ) + (i32.const 0) + ) + ) + (func $if-block + (block $label + (if + (i32.const 1) + (block + (drop (i32.const 2)) + (drop (i32.const 3)) + ) + ) + ) + ) + (func $if-block-bad + (block $label + (if + (br $label) ;; use outside of arm + (block + (drop (i32.const 2)) + (drop (i32.const 3)) + ) + ) + ) + ) + (func $if-block-br + (block $label + (if + (i32.const 1) + (br $label) + ) + ) + ) + (func $if-block-br-1 + (block $label + (if + (i32.const 1) + (br $label) + (drop (i32.const 3)) + ) + ) + ) + (func $if-block-br-2 + (block $label + (if + (i32.const 1) + (drop (i32.const 3)) + (br $label) + ) + ) + ) + (func $if-block-br-3 + (block $label + (if + (i32.const 1) + (br $label) + (br $label) + ) + ) + ) + (func $if-block-br-4-eithre + (block $label + (if + (i32.const 1) + (drop (i32.const 2)) + (drop (i32.const 3)) + ) + ) + ) + (func $if-block-br-5-value (result i32) + (block $label (result i32) + (if (result i32) + (i32.const 1) + (i32.const 2) + (i32.const 3) + ) + ) + ) + (func $restructure-if-outerType-change + (loop $label$1 + (br_if $label$1 + (block $label$2 + (block $label$3 + (if + (block $label$4 + (unreachable) + ) + (br $label$3) + ) + ) + (unreachable) + ) + ) + ) + ) + (func $if-arm-unreachable + (block $label$1 + (if + (unreachable) ;; unreachable condition + (nop) + (unreachable) + ) + ) + ) + (func $propagate-type-if-we-optimize + (if + (i32.const 1) + (nop) + (block + (drop + (loop $label$3 (result i64) + (br_if $label$3 + (block $label$4 (result i32) + (if + (i32.const 0) + (unreachable) + (unreachable) + ) + ) + ) + (i64.const -9) + ) + ) + (unreachable) + ) + ) + ) + (func $switch-to-br + (block $A + (block $y + (br_table $y $y $A $A + (i32.const 0) + ) + ) + ) + ) + (func $switch-to-br-value (result i32) + (block $A (result i32) + (block $y (result i32) + (br_table $A $A $A + (i32.const 0) + (i32.const 1) + ) + ) + ) + ) + (func $switch-threading-multi (param $x i32) (param $y i32) (result i32) + (block $block$5$break + (block $block$4$break + (loop $shape$1$continue + (block $block$3$break + (block $switch$2$case$5 + (block $switch$2$case$4 + (block $switch$2$default + (block $switch$2$case$2 + (br_table $switch$2$case$2 $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$case$5 $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$case$4 $switch$2$default + (local.get $x) + ) + ) + (br $shape$1$continue) + ) + (br $block$3$break) + ) ;; switch$2$case$4 + (br $block$4$break) + ) + (br $block$5$break) + ) + ) + (unreachable) + ) ;; block$4$break + (local.set $y + (i32.const 1) + ) + (unreachable) + ) + (local.set $y + (i32.const 2) + ) + (unreachable) + ) + (func $fuzz-type-changes-in-our-cycles (result i32) + (loop $label$1 + (if + (i32.const 0) + (block $label$3 + (if + (i32.const 0) + (block + (nop) + (br $label$3) + ) + (return + (i32.const -8192) + ) + ) + ) + ) + (br $label$1) + ) + ) + (func $refinalize-need-br-value (result i32) + (loop $label$3 (result i32) + (block $label$6 (result i32) + (block $label$10 + (unreachable) + (block $label$503 ;; this block will get a value flowing out + (br_if $label$3 + (block $label$530 (result i32) + (br_if $label$503 ;; while this br does not send a value + (i32.const 0) + ) + (i32.const 0) + ) + ) + (return + (i32.const 127) + ) + ) + ) + ) + ) + ) + (func $selectify (param $x i32) + (drop + (if (result i32) + (i32.eq + (local.get $x) + (i32.const 1) + ) + (i32.mul + (i32.const 2) + (i32.const 3) + ) + (i32.mul + (i32.const 2) + (i32.const 3) + ) + ) + ) + (drop + (if (result i32) + (i32.eq + (local.get $x) + (i32.const 1) + ) + (i32.add + (i32.const 2) + (i32.const 3) + ) + (i32.add + (i32.const 2) + (i32.const 3) + ) + ) + ) + ) + (func $selectify-even-with-condition-side-effects (param $0 i32) + (drop (if (result i32) + (i32.rem_s + (local.get $0) + (i32.const 2) + ) + (i32.const 1) + (i32.const 0) + )) + ) + (func $no-selectify-when-arm-side-effects (param $0 i32) + (drop (if (result i32) + (i32.rem_s + (local.get $0) + (i32.const 2) + ) + (local.tee $0 (i32.const 1)) + (i32.const 0) + )) + (drop (if (result i32) + (i32.rem_s + (local.get $0) + (i32.const 2) + ) + (i32.const 0) + (local.tee $0 (i32.const 1)) + )) + ) + (func $no-selectify-when-effects-invalidate (param $0 i32) + (local $1 i32) + (drop (if (result i32) + (i32.rem_s + (local.tee $0 (i32.const 3)) + (i32.const 2) + ) + (local.get $0) + (i32.const 0) + )) + (drop (if (result i32) + (i32.rem_s + (local.tee $0 (i32.const 3)) + (i32.const 2) + ) + (i32.const 0) + (local.get $0) + )) + ;; but different locals do not invalidate + (drop (if (result i32) + (i32.rem_s + (local.tee $0 (i32.const 3)) + (i32.const 2) + ) + (i32.const 0) + (local.get $1) + )) + ) + (func $if-one-side (result i32) + (local $x i32) + (local.set $x + (if (result i32) + (i32.const 1) + (i32.const 2) + (local.get $x) + ) + ) + (local.get $x) + ) + (func $if-one-side-b (result i32) + (local $x i32) + (local.set $x + (if (result i32) + (i32.const 1) + (local.get $x) + (i32.const 2) + ) + ) + (local.get $x) + ) + (func $if-one-side-tee-etc (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $x i32) + (local $y i32) + (local $z i32) + (drop + (call $if-one-side-tee-etc + (local.tee $x + (if (result i32) + (i32.const -3) + (i32.const -4) + (local.get $x) + ) + ) + ) + ) + (i32.const 0) + ) + (func $ifs-copies-recursive (param $20 i32) (result i32) + (local.set $20 + (if (result i32) + (i32.const 1) + (if (result i32) + (i32.const 2) + (if (result i32) + (i32.const 3) + (i32.const 4) + (local.get $20) + ) + (local.get $20) + ) + (local.get $20) + ) + ) + (local.get $20) + ) + (func $if-copy1 + (local $x i32) + (local $y i32) + (loop $top + (local.set $x + (if (result i32) + (i32.const 1) + (local.get $x) + (local.get $y) + ) + ) + (br $top) + ) + ) + (func $if-copy3 + (local $x i32) + (local $y i32) + (loop $top + (local.set $x + (if (result i32) + (i32.const 1) + (unreachable) + (local.get $x) + ) + ) + (br $top) + ) + ) + (func $if-copy4 + (local $x i32) + (local $y i32) + (loop $top + (local.set $x + (if (result i32) + (i32.const 1) + (unreachable) + (local.get $y) + ) + ) + (br $top) + ) + ) + (func $if-copy-tee + (local $x i32) + (local $y i32) + (loop $top + (drop + (local.tee $x + (if (result i32) + (i32.const 1) + (local.get $x) + (i32.const 2) + ) + ) + ) + (br $top) + ) + ) + (func $loop-end-set (param $x i32) (result i32) + (loop $loop + (nop) + (if + (local.get $x) + (br $loop) + (local.set $x (i32.const 1)) + ) + ) + (local.get $x) + ) + (func $loop-end-value (param $x i32) (result i32) + (loop $loop (result i32) + (nop) + (if (result i32) + (local.get $x) + (br $loop) + (i32.const 1) + ) + ) + ) + (func $do-not-flow-values-through-unreachable-code (result i32) + (block + (unreachable) + (block $A + (if + (i32.const 0) + (return + (i32.const 0) ;; seems to flow out, but we are in unreachable code, and do not actually reach anywhere + ) + (br $A) ;; can be a nop + ) + ) + ) + ) + (func $do-not-flow-values-through-unreachable-code-b (result i32) + (loop + (unreachable) + (block $A + (if + (i32.const 0) + (return + (i32.const 0) + ) + (br $A) + ) + ) + ) + ) + (func $if_br_if + (local $0 i32) + (block $label$1 + (if + (local.tee $0 ;; note side effect; it's ok + (i32.const 1024) + ) + (br_if $label$1 + (i32.eqz + (i32.const -4) + ) + ) + ) + (if + (i32.const 1025) + (br_if $label$1 + (i32.eqz + (i32.const -5) + ) + ) + ) + (if + (local.tee $0 ;; note side effect; it's ok + (i32.const 1025) + ) + (br_if $label$1 + (i32.eqz + (i32.const -6) + ) + ) + ) + (if + (i32.const 1026) + (br_if $label$1 + (local.tee $0 ;; but here it is *not* ok + (i32.const -7) + ) + ) + ) + (i32.store + (i32.const 1024) + (i32.add + (local.get $0) + (i32.const 1) + ) + ) + ) + ) + (func $unswitch-reordering (param $x i32) (result i32) + (block $label$1 (result i32) + (br_table $label$1 + (block $label$2 (result i32) + (i32.store ;; has a possible side effect + (i32.const 1) + (i32.const 2) + ) + (i32.const 3) + ) + (block (result i32) + (if + (local.get $x) + (return + (i32.const 5) + ) + ) + (i32.const 6) + ) + ) + ) + ) + (func $no-selectify-if-condition-unreachable (result i32) + (select + (if (result i32) + (unreachable) + (i32.const 3) + (i32.const 4) + ) + (i32.const 1) + (i32.const 2) + ) + ) +) diff -Nru binaryen-91/test/passes/remove-unused-brs_generate-stack-ir_print-stack-ir.txt binaryen-99/test/passes/remove-unused-brs_generate-stack-ir_print-stack-ir.txt --- binaryen-91/test/passes/remove-unused-brs_generate-stack-ir_print-stack-ir.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-brs_generate-stack-ir_print-stack-ir.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,30 +1,23 @@ (module (type $i64_=>_none (func (param i64))) - (func $0 (; 0 ;) (param $var$0 i64) + (func $0 (param $var$0 i64) block $label$1 block $label$2 loop $label$3 block $label$4 unreachable - unreachable end unreachable - unreachable - unreachable end unreachable - unreachable - unreachable end unreachable - br_if $label$1 - unreachable end ) ) (module (type $i64_=>_none (func (param i64))) - (func $0 (; 0 ;) (; has Stack IR ;) (param $var$0 i64) + (func $0 (; has Stack IR ;) (param $var$0 i64) (block $label$1 (br_if $label$1 (block $label$2 diff -Nru binaryen-91/test/passes/remove-unused-brs_precompute_vacuum_remove-unused-brs.txt binaryen-99/test/passes/remove-unused-brs_precompute_vacuum_remove-unused-brs.txt --- binaryen-91/test/passes/remove-unused-brs_precompute_vacuum_remove-unused-brs.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-brs_precompute_vacuum_remove-unused-brs.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $i32_=>_f64 (func (param i32) (result f64))) (global $global$3 (mut f64) (f64.const 0)) - (func $1 (; 0 ;) (param $x i32) (result f64) + (func $1 (param $x i32) (result f64) (local $var$0 f64) (block $label$0 (result f64) (local.set $var$0 diff -Nru binaryen-91/test/passes/remove-unused-brs_shrink-level=1_ignore-implicit-traps.txt binaryen-99/test/passes/remove-unused-brs_shrink-level=1_ignore-implicit-traps.txt --- binaryen-91/test/passes/remove-unused-brs_shrink-level=1_ignore-implicit-traps.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-brs_shrink-level=1_ignore-implicit-traps.txt 2021-01-07 20:01:06.000000000 +0000 @@ -2,7 +2,7 @@ (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) (memory $0 256 256) - (func $b14 (; 0 ;) (result i32) + (func $b14 (result i32) (drop (select (block $block1 (result i32) @@ -44,7 +44,7 @@ ) (i32.const 0) ) - (func $join-br_ifs (; 1 ;) + (func $join-br_ifs (block $out (br_if $out (i32.or diff -Nru binaryen-91/test/passes/remove-unused-brs_shrink-level=1.txt binaryen-99/test/passes/remove-unused-brs_shrink-level=1.txt --- binaryen-91/test/passes/remove-unused-brs_shrink-level=1.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-brs_shrink-level=1.txt 2021-01-07 20:01:06.000000000 +0000 @@ -2,7 +2,7 @@ (type $none_=>_i32 (func (result i32))) (type $none_=>_none (func)) (memory $0 256 256) - (func $b14 (; 0 ;) (result i32) + (func $b14 (result i32) (drop (select (block $block1 (result i32) @@ -24,13 +24,13 @@ ) ) (drop - (if (result i32) - (i32.const 1) + (select (i32.rem_s (i32.const 11) (i32.const 12) ) (i32.const 27) + (i32.const 1) ) ) (drop @@ -44,7 +44,7 @@ ) (i32.const 0) ) - (func $join-br_ifs (; 1 ;) + (func $join-br_ifs (block $out (br_if $out (i32.or @@ -122,7 +122,7 @@ ) ) ) - (func $join-and-it-becomes-unreachable (; 2 ;) + (func $join-and-it-becomes-unreachable (block $label$1 (block $block (br_if $label$1 @@ -138,7 +138,7 @@ ) ) ) - (func $br-if-unreachable-pair (; 3 ;) + (func $br-if-unreachable-pair (block $label$14 (br_if $label$14 (unreachable) @@ -148,7 +148,7 @@ ) ) ) - (func $br-if-unreachable-pair2 (; 4 ;) + (func $br-if-unreachable-pair2 (block $label$14 (br_if $label$14 (i32.const 0) @@ -158,7 +158,7 @@ ) ) ) - (func $simple-switch (; 5 ;) (result i32) + (func $simple-switch (result i32) (block $A (block $B (block $y @@ -179,7 +179,7 @@ ) (i32.const 3) ) - (func $simple-switch-2 (; 6 ;) (result i32) + (func $simple-switch-2 (result i32) (local $0 i32) (block $A (block $B @@ -213,7 +213,7 @@ ) (i32.const 3) ) - (func $simple-switch-3 (; 7 ;) (result i32) + (func $simple-switch-3 (result i32) (local $0 i32) (block $A (block $B @@ -246,7 +246,7 @@ ) (i32.const 3) ) - (func $simple-switch-4 (; 8 ;) (result i32) + (func $simple-switch-4 (result i32) (block $A (block $B (block $y diff -Nru binaryen-91/test/passes/remove-unused-brs.txt binaryen-99/test/passes/remove-unused-brs.txt --- binaryen-91/test/passes/remove-unused-brs.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-brs.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,2485 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_i64 (func (result i64))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_f64_i32_f64_f32_f32_=>_i32 (func (param i32 f64 i32 f64 f32 f32) (result i32))) - (type $f32_i32_f32_i32_i32_f64_f32_=>_i32 (func (param f32 i32 f32 i32 i32 f64 f32) (result i32))) - (type $i32_=>_i64 (func (param i32) (result i64))) - (type $none_=>_f32 (func (result f32))) - (type $i32_=>_f32 (func (param i32) (result f32))) - (memory $0 256 256) - (func $b0-yes (; 0 ;) (param $i1 i32) - (block $topmost - ) - ) - (func $b1 (; 1 ;) (param $i1 i32) - (block $topmost - (block $block - (drop - (i32.const 0) - ) - ) - ) - ) - (func $b2 (; 2 ;) (param $i1 i32) - (block $topmost - (block $inner - ) - ) - ) - (func $b3-yes (; 3 ;) (param $i1 i32) - (block $topmost - (block $inner - ) - ) - ) - (func $b4 (; 4 ;) (param $i1 i32) - (block $topmost - (block $inner - (block $block - (drop - (i32.const 0) - ) - ) - ) - ) - ) - (func $b5 (; 5 ;) (param $i1 i32) - (block $topmost - (block $inner - (block $block - (drop - (i32.const 0) - ) - ) - ) - ) - ) - (func $b6 (; 6 ;) (param $i1 i32) - (block $topmost - (br_if $topmost - (i32.const 1) - ) - ) - ) - (func $b7 (; 7 ;) (param $i1 i32) - (block $topmost - (block $block - (drop - (i32.const 0) - ) - (br_if $topmost - (i32.const 1) - ) - ) - ) - ) - (func $b8 (; 8 ;) (param $i1 i32) - (block $topmost - (block $inner - (br_if $topmost - (i32.const 1) - ) - ) - ) - ) - (func $b9 (; 9 ;) (param $i1 i32) - (block $topmost - (block $inner - (br_if $topmost - (i32.const 1) - ) - ) - ) - ) - (func $b10 (; 10 ;) (param $i1 i32) - (block $topmost - (block $inner - (block $block - (drop - (i32.const 0) - ) - (br_if $topmost - (i32.const 1) - ) - ) - ) - ) - ) - (func $b11 (; 11 ;) (param $i1 i32) - (block $topmost - (block $inner - (block $block - (drop - (i32.const 0) - ) - (br_if $topmost - (i32.const 1) - ) - ) - ) - ) - ) - (func $b12-yes (; 12 ;) - (if - (i32.const 1) - (block $topmost - (block $block1 - (drop - (i32.const 12) - ) - (block $block - (drop - (i32.const 1) - ) - ) - ) - ) - (block $block3 - (drop - (i32.const 27) - ) - (block $block0 - (drop - (i32.const 2) - ) - ) - ) - ) - ) - (func $b13 (; 13 ;) (result i32) - (block $topmost (result i32) - (if - (i32.const 1) - (block $block1 - (drop - (i32.const 12) - ) - (drop - (br_if $topmost - (i32.const 1) - (i32.const 1) - ) - ) - ) - (block $block3 - (drop - (i32.const 27) - ) - (br $topmost - (i32.const 2) - ) - ) - ) - (i32.const 3) - ) - ) - (func $b14 (; 14 ;) (result i32) - (select - (block $topmost (result i32) - (block $block1 (result i32) - (i32.const 12) - ) - ) - (block $block3 (result i32) - (i32.const 27) - ) - (i32.const 1) - ) - ) - (func $b15 (; 15 ;) - (block $topmost - (br_if $topmost - (i32.const 17) - ) - ) - ) - (func $b15b (; 16 ;) - (if - (i32.const 18) - (block $topmost - (block $block - (drop - (i32.const 0) - ) - ) - ) - ) - ) - (func $b16 (; 17 ;) - (block $a - (block $b - (block $c - ) - ) - ) - (block $a1 - (block $b2 - (block $c3 - ) - ) - ) - (block $a4 - (block $b5 - (block $c6 - ) - ) - ) - ) - (func $b17 (; 18 ;) - (if - (i32.const 0) - (block $a - (block $block1 - ) - ) - (block $block3 - ) - ) - (if - (i32.const 0) - (block $a7 - (drop - (i32.const 1) - ) - ) - (block $block6 - ) - ) - (if - (i32.const 0) - (block $a9 - (block $block8 - ) - ) - (drop - (i32.const 1) - ) - ) - (if - (i32.const 0) - (block $c - (block $b - (block $block11 - ) - ) - ) - (block $block13 - ) - ) - ) - (func $ret-1 (; 19 ;) - (nop) - ) - (func $ret-2 (; 20 ;) - (block $block0 - (block $block1 - ) - ) - ) - (func $ret-3 (; 21 ;) - (if - (i32.const 0) - (block $block0 - ) - (block $block3 - ) - ) - ) - (func $ret-value (; 22 ;) (result i32) - (block $block0 (result i32) - (block $block1 (result i32) - (i32.const 1) - ) - ) - ) - (func $no-select-but-the-last (; 23 ;) - (block $a - (if - (i32.const 0) - (drop - (i32.const 1) - ) - (block $block2 - (block $block - (drop - (i32.const 2) - ) - (br $a) - ) - (drop - (i32.const 3) - ) - ) - ) - (if - (i32.const 0) - (block $block4 - (block $block13 - (drop - (i32.const 2) - ) - (br $a) - ) - (drop - (i32.const 3) - ) - ) - (drop - (i32.const 1) - ) - ) - (if - (block $block6 (result i32) - (block $block15 - (drop - (i32.const 2) - ) - (br $a) - ) - (i32.const 3) - ) - (drop - (i32.const 0) - ) - (drop - (i32.const 1) - ) - ) - (if - (block $a17 (result i32) - (i32.const 0) - ) - (block $a18 - (block $block19 - (drop - (i32.const 1) - ) - ) - ) - (block $a20 - (block $block21 - (drop - (i32.const 2) - ) - ) - ) - ) - ) - ) - (func $side-effects-and-order (; 24 ;) (result i32) - (local $x i32) - (block $do-once$0 - (if - (call $b13) - (block $block - (drop - (i32.const 0) - ) - (br $do-once$0) - ) - ) - (drop - (i32.const 1) - ) - ) - (block $do-once$022 - (if - (call $b13) - (block $block24 - (drop - (call $b14) - ) - (br $do-once$022) - ) - ) - (drop - (i32.const 1) - ) - ) - (block $do-once$025 - (if - (i32.const 0) - (block $block27 - (drop - (call $b14) - ) - (br $do-once$025) - ) - ) - (drop - (i32.const 1) - ) - ) - (block $do-once$028 (result i32) - (if - (local.tee $x - (i32.const 1) - ) - (br $do-once$028 - (local.tee $x - (i32.const 2) - ) - ) - ) - (i32.const 1) - ) - ) - (func $loops (; 25 ;) - (loop $in - (block $out - (br_if $in - (i32.eqz - (i32.const 0) - ) - ) - ) - ) - (loop $in30 - (br $in30) - ) - (loop $loop-in - (block $out31 - (br_if $out31 - (i32.const 0) - ) - ) - ) - (loop $in33 - (block $out34 - (br_if $out34 - (i32.const 0) - ) - ) - ) - (loop $in36 - (nop) - ) - (loop $in37 - (block $out38 - ) - ) - (loop $in39 - (if - (i32.eqz - (i32.const 0) - ) - (block $out40 - (nop) - (br_if $in39 - (i32.const 1) - ) - ) - ) - ) - (loop $in42 - (block $out43 - (br_if $in42 - (i32.const 0) - ) - ) - ) - (loop $in45 - (if - (i32.const 0) - (block $out46 - (unreachable) - ) - (br $in45) - ) - ) - (loop $in48 - (if - (i32.const 0) - (block $out49 - (block $block - (call $loops) - ) - ) - (br $in48) - ) - ) - (loop $in-todo - (if - (i32.const 0) - (block $out-todo - ) - (block - (call $loops) - (br $in-todo) - ) - ) - ) - (loop $in52 - (if - (i32.const 0) - (block $out53 - ) - (block - (call $loops) - (br $in52) - ) - ) - ) - (loop $in55 - (if - (i32.const 0) - (block - (call $loops) - (br $in55) - ) - (block $out56 - ) - ) - ) - (loop $in58 - (if - (i32.const 0) - (block - (block $block61 - (drop - (i32.const 1) - ) - (call $loops) - ) - (br $in58) - ) - (block $out59 - ) - ) - ) - (loop $in62 - (if - (i32.const 0) - (block $out63 - ) - (block - (call $loops) - (drop - (i32.const 100) - ) - (br $in62) - ) - ) - ) - (loop $in65 - (if - (i32.const 0) - (block - (call $loops) - (drop - (i32.const 101) - ) - (br $in65) - ) - (block $out66 - ) - ) - ) - (loop $in68 - (if - (i32.const 0) - (block - (block $block71 - (drop - (i32.const 1) - ) - (call $loops) - ) - (drop - (i32.const 102) - ) - (br $in68) - ) - (block $out69 - ) - ) - ) - (loop $in72 - (if - (i32.eqz - (i32.const 0) - ) - (block $out73 - (nop) - (call $loops) - (return) - (br $in72) - ) - ) - ) - (loop $in75 - (block $out76 - (br_if $out76 - (i32.const 0) - ) - (call $loops) - (br $out76) - (br $in75) - ) - ) - (loop $in78 - (if - (i32.const 0) - (block $out79 - ) - (block - (call $loops) - (drop - (block $out2 (result i32) - (i32.const 1) - ) - ) - (br $in78) - ) - ) - ) - (loop $in81 - (block $out82 - (br_if $in81 - (i32.eqz - (i32.const 0) - ) - ) - ) - ) - (loop $in-todo2 - (if - (i32.const 0) - (block $out-todo2 - ) - (block - (call $loops) - (br $in-todo2) - ) - ) - ) - (loop $in83 - (block $out84 - (br $out84) - (br $in83) - ) - ) - (loop $in85 - (block $out86 - (drop - (i32.const 0) - ) - (br $in85) - ) - ) - (loop $in-not - (block $out-not - (br_if $out-not - (i32.const -1) - ) - (br_if $out-not - (i32.const 0) - ) - (call $loops) - (br $in-not) - ) - ) - (loop $in-todo287 - (if - (i32.const 0) - (block $out-todo288 - ) - (block - (call $loops) - (drop - (i32.const 1) - ) - (br $in-todo287) - ) - ) - ) - ) - (func $br_if_in_block (; 26 ;) (result i32) - (block $outval (result i32) - (block $in - (drop - (i32.const 1) - ) - (br $in) - (drop - (i32.const 2) - ) - (br_if $in - (i32.eqz - (i32.const 3) - ) - ) - (unreachable) - (drop - (i32.const 4) - ) - (br_if $in - (i32.const 5) - ) - (unreachable) - (drop - (i32.const 6) - ) - ) - (select - (i32.const 7) - (i32.const 8) - (i32.const 6) - ) - ) - ) - (func $threading (; 27 ;) - (drop - (block $value-out (result i32) - (block $value-in (result i32) - (block $out - (block $in - (br_if $out - (i32.const 1) - ) - (br_if $out - (i32.const 2) - ) - (br $value-in - (i32.const 3) - ) - ) - ) - (i32.const 4) - ) - ) - ) - (block $stack1 - (block $stack2 - (block $stack3 - (block $stack4 - (br_if $stack1 - (i32.const 1) - ) - (unreachable) - ) - ) - ) - ) - ) - (func $if-to-br_if-conflict (; 28 ;) (param $x i32) (param $y i32) (result i32) - (block $leave - (local.set $y - (block $out (result i32) - (if - (local.get $x) - (br $out - (block $block (result i32) - (local.set $x - (i32.const 0) - ) - (i32.const 1) - ) - ) - (br_if $leave - (i32.const 1) - ) - ) - (unreachable) - ) - ) - ) - (i32.add - (local.get $x) - (local.get $y) - ) - ) - (func $if-to-br_if-conflict2 (; 29 ;) (param $x i32) (param $y i32) (result i32) - (block $leave - (local.set $y - (block $out (result i32) - (if - (local.get $x) - (br_if $leave - (i32.const 1) - ) - (br $out - (block $block (result i32) - (local.set $x - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (unreachable) - ) - ) - ) - (i32.add - (local.get $x) - (local.get $y) - ) - ) - (func $if-to-br_if-value-sideeffect (; 30 ;) (param $x i32) (param $y i32) (result i32) - (block $leave - (local.set $y - (block $out (result i32) - (if - (local.get $x) - (br $out - (block $block (result i32) - (drop - (call $if-to-br_if-value-sideeffect - (i32.const 0) - (i32.const 1) - ) - ) - (nop) - (i32.const 1) - ) - ) - ) - (unreachable) - ) - ) - ) - (i32.add - (local.get $x) - (local.get $y) - ) - ) - (func $fuzz (; 31 ;) (param $j i32) (param $g i32) - (loop $label$continue$d - (block $label$break$c - (block $label$break$d - (if - (i32.lt_s - (local.get $j) - (i32.const 2147483640) - ) - (block $x - (block $y - (block $z - (br_if $x - (local.get $j) - ) - ) - ) - ) - (block $switch$26 - ) - ) - (i32.store - (i32.const 5724) - (i32.const -254899267) - ) - (br $label$continue$d) - ) - ) - ) - ) - (func $iffify (; 32 ;) - (if - (i32.eqz - (i32.const 0) - ) - (block $yes - (nop) - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - ) - ) - (block $no - (br_if $no - (i32.const 0) - ) - (drop - (i32.const 1) - ) - (br $no) - (drop - (i32.const 2) - ) - ) - (block $no2 - (br_if $no2 - (i32.const 0) - ) - ) - (block $no3 - (br $no3) - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - ) - (block $no5 - (block $no4 - (br_if $no5 - (i32.const 0) - ) - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - ) - ) - ) - (func $loop-if (; 33 ;) (result i32) - (loop $typed (result i32) - (block $outer (result i32) - (block (result i32) - (br_if $typed - (i32.eqz - (i32.const 2) - ) - ) - (block $block (result i32) - (drop - (call $loop-if) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (func $block-break (; 34 ;) (param $0 i32) - (block $block$7$break - (block $shape$6$continue - (call $block-break - (i32.const 1) - ) - ) - ) - ) - (func $loop-break (; 35 ;) (param $0 i32) - (loop $shape$6$continue - (block $block$7$break - (block - (call $loop-break - (i32.const 1) - ) - (br_if $shape$6$continue - (local.get $0) - ) - (nop) - ) - ) - ) - ) - (func $untaken-brs-might-prevent-block-removal (; 36 ;) (param $0 f32) (param $1 i32) (param $2 f32) (param $3 i32) (param $4 i32) (param $5 f64) (param $6 f32) (result i32) - (block $label$0 (result i32) - (block $label$1 - (br_if $label$1 - (i32.const 607395945) - ) - (br_if $label$1 - (i32.load offset=3 align=1 - (select - (call $untaken-brs-might-prevent-block-removal - (f32.const 1.4904844647389837e-07) - (br_if $label$0 - (i32.store16 offset=4 align=1 - (i32.const 1900641) - (br $label$0 - (i32.const 1628075109) - ) - ) - (i32.const 1764950569) - ) - (f32.const 1.1910939690100655e-32) - (i32.const 1628057906) - (i32.const 859068982) - (f64.const 2.524518840347722e-258) - (f32.const -nan:0x40a63) - ) - (i32.const 688529440) - (i32.const 1751478890) - ) - ) - ) - ) - (i32.const 1935947830) - ) - ) - (func $unexitable-loops-result (; 37 ;) (param $0 i32) (result i64) - (loop $label$0 - (loop $label$1 - (br_if $label$0 - (i32.load8_s - (i32.const 201460482) - ) - ) - (block - (block $label$3 - (br_if $label$1 - (local.get $0) - ) - ) - (br $label$1) - ) - ) - ) - ) - (func $untaken-br-with-concrete-last-element (; 38 ;) - (block $label$8 - (block $label$11 - (block $label$14 - (br_if $label$8 - (br $label$8) - ) - ) - ) - ) - ) - (func $untaken-br-with-concrete-last-element2 (; 39 ;) (result i32) - (block $label$8 (result i32) - (block $label$11 (result i32) - (block $label$14 (result i32) - (br_if $label$14 - (i32.const 102) - (br $label$11 - (i32.const 103) - ) - ) - ) - ) - ) - ) - (func $untaken-br_if-then-if (; 40 ;) - (block $label$0 - (br_if $label$0 - (unreachable) - ) - (if - (i32.const 0) - (nop) - ) - ) - ) - (func $unreachable-if-that-could-be-a-br_if (; 41 ;) (result i64) - (loop $label$3 (result i64) - (drop - (if (result f64) - (unreachable) - (f64.const 1) - (br $label$3) - ) - ) - (i64.const 1) - ) - ) - (func $nop-br-might-update-type (; 42 ;) - (block $label$39 - (drop - (if (result i32) - (unreachable) - (if (result i32) - (i32.const 1) - (br $label$39) - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - ) - (func $no-flow-through-if-without-else (; 43 ;) (result f32) - (local $0 i32) - (local $2 f32) - (if (result f32) - (local.get $0) - (block $label$0 - (block $label$11 - (return - (f32.const 239) - ) - (if - (i32.const 0) - (return - (local.get $2) - ) - ) - ) - ) - (f32.const -9223372036854775808) - ) - ) - (func $unreachable-return-loop-value (; 44 ;) (result i64) - (loop $loop - (if - (i32.const 1) - (block $block - (br_if $block - (br $loop) - ) - (br $loop) - ) - ) - (br $loop) - ) - ) - (func $obviously-flows-out-maybe (; 45 ;) (param $var$0 i32) (result f32) - (block $label$1 (result f32) - (br $label$1 - (f32.const 1) - ) - (loop $label$5 - (if - (i32.const 11) - (block $label$8 - (br_if $label$8 - (unreachable) - ) - (br $label$5) - ) - ) - (br $label$5) - ) - ) - ) - (func $br-to-table (; 46 ;) (param $a i32) - (block $x - (block $y - (block $z - (nop) - (nop) - (block $tablify|0 - (br_table $x $y $z $tablify|0 - (local.get $a) - ) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-too-few (; 47 ;) (param $a i32) - (block $x - (block $y - (block $z - (br_if $x - (i32.eq - (local.get $a) - (i32.const 0) - ) - ) - (br_if $x - (i32.eq - (local.get $a) - (i32.const 1) - ) - ) - ) - ) - ) - ) - (func $br-to-table-one-more (; 48 ;) (param $a i32) - (block $x - (block $y - (block $z - (nop) - (nop) - (nop) - (block $tablify|0 - (br_table $x $y $z $x $tablify|0 - (local.get $a) - ) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-overlap (; 49 ;) (param $a i32) - (block $x - (block $y - (block $z - (br_if $x - (i32.eq - (local.get $a) - (i32.const 0) - ) - ) - (br_if $y - (i32.eq - (local.get $a) - (i32.const 1) - ) - ) - (br_if $z - (i32.eq - (local.get $a) - (i32.const 1) - ) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-overlap-start (; 50 ;) (param $a i32) - (block $x - (block $y - (block $z - (br_if $x - (i32.eq - (local.get $a) - (i32.const 0) - ) - ) - (br_if $y - (i32.eq - (local.get $a) - (i32.const 0) - ) - ) - (br_if $z - (i32.eq - (local.get $a) - (i32.const 1) - ) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-offset (; 51 ;) (param $a i32) - (block $x - (block $y - (block $z - (nop) - (nop) - (block $tablify|0 - (br_table $x $y $z $tablify|0 - (i32.sub - (local.get $a) - (i32.const 15) - ) - ) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-RANGE-high (; 52 ;) (param $a i32) - (block $x - (block $y - (block $z - (br_if $x - (i32.eq - (local.get $a) - (i32.const 0) - ) - ) - (br_if $y - (i32.eq - (local.get $a) - (i32.const 1) - ) - ) - (br_if $z - (i32.eq - (local.get $a) - (i32.const 10) - ) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-RANGE-low (; 53 ;) (param $a i32) - (block $x - (block $y - (block $z - (nop) - (nop) - (block $tablify|0 - (br_table $x $tablify|0 $tablify|0 $y $tablify|0 $tablify|0 $tablify|0 $tablify|0 $tablify|0 $z $tablify|0 - (local.get $a) - ) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-bad (; 54 ;) (param $a i32) (result i32) - (block $value (result i32) - (block $x - (block $y - (block $z - (nop) - (br $x) - (nop) - (nop) - (block $tablify|0 - (br_table $x $y $z $tablify|0 - (local.get $a) - ) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (i32.const 2000) - ) - ) - (func $br-to-table-bad2 (; 55 ;) (param $a i32) (result i32) - (block $value (result i32) - (block $x - (block $y - (block $z - (nop) - (drop - (br_if $value - (i32.const 1000) - (i32.eq - (local.get $a) - (i32.const 0) - ) - ) - ) - (nop) - (nop) - (block $tablify|0 - (br_table $x $y $z $tablify|0 - (local.get $a) - ) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (i32.const 2000) - ) - ) - (func $br-to-table-bad3 (; 56 ;) (param $a i32) - (block $x - (block $y - (block $z - (br_if $x - (i32.eq - (i32.const 10) - (i32.const 0) - ) - ) - (nop) - (nop) - (block $tablify|0 - (br_table $x $y $z $tablify|0 - (local.get $a) - ) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-multi (; 57 ;) (param $a i32) - (block $x - (block $y - (block $z - (nop) - (nop) - (block $tablify|0 - (br_table $z $y $x $tablify|0 - (i32.sub - (i32.const 10) - (i32.const 5) - ) - ) - ) - (nop) - (nop) - (block $tablify|00 - (br_table $x $y $z $tablify|00 - (local.get $a) - ) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-bad4 (; 58 ;) (param $a i32) - (block $x - (block $y - (block $z - (br_if $x - (i32.ne - (local.get $a) - (i32.const 0) - ) - ) - (br_if $y - (i32.eq - (local.get $a) - (i32.const 1) - ) - ) - (br_if $z - (i32.eq - (local.get $a) - (i32.const 2) - ) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-bad5 (; 59 ;) (param $a i32) - (block $x - (block $y - (block $z - (br_if $x - (i32.eq - (local.get $a) - (local.get $a) - ) - ) - (br_if $y - (i32.eq - (local.get $a) - (local.get $a) - ) - ) - (br_if $z - (i32.eq - (local.get $a) - (local.get $a) - ) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-bad6 (; 60 ;) (param $a i32) - (block $x - (block $y - (block $z - (br_if $x - (i32.eq - (call $b13) - (i32.const 0) - ) - ) - (br_if $y - (i32.eq - (call $b13) - (i32.const 1) - ) - ) - (br_if $z - (i32.eq - (call $b13) - (i32.const 2) - ) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-bad7 (; 61 ;) (param $a i32) - (block $x - (block $y - (block $z - (br_if $x - (i32.eq - (local.get $a) - (i32.const -1) - ) - ) - (br_if $y - (i32.eq - (local.get $a) - (i32.const -1) - ) - ) - (br_if $z - (i32.eq - (local.get $a) - (i32.const -1) - ) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-defaultNameOverlaps (; 62 ;) (param $a i32) - (block $x - (block $tablify|0 - (block $z - (nop) - (nop) - (block $tablify|1 - (br_table $x $tablify|0 $z $tablify|1 - (local.get $a) - ) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-unreach (; 63 ;) (param $a i32) - (block $x - (block $y - (block $z - (br_if $x - (i32.eq - (unreachable) - (i32.const 0) - ) - ) - (br_if $y - (i32.eq - (unreachable) - (i32.const 1) - ) - ) - (br_if $z - (i32.eq - (unreachable) - (i32.const 2) - ) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-overlap-but-later (; 64 ;) (param $a i32) - (block $x - (block $y - (block $z - (br_if $x - (i32.eq - (local.get $a) - (i32.const 0) - ) - ) - (br_if $y - (i32.eq - (local.get $a) - (i32.const 1) - ) - ) - (nop) - (nop) - (block $tablify|0 - (br_table $z $x $y $tablify|0 - (i32.sub - (local.get $a) - (i32.const 1) - ) - ) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $tiny-switch (; 65 ;) - (if - (i32.const 0) - (block $y - ) - (block $x - ) - ) - (block $z - (block - (drop - (i32.const 0) - ) - (nop) - ) - ) - ) - (func $trim-switch (; 66 ;) - (block $A - (block $y - (br_table $A $y $A $y $A $y - (i32.sub - (i32.const 0) - (i32.const 2) - ) - ) - ) - (call $trim-switch) - ) - ) - (func $same-target-br_if-and-br (; 67 ;) - (block $x - (drop - (i32.const 0) - ) - (br $x) - (unreachable) - ) - ) - (func $simple-switch (; 68 ;) (result i32) - (block $A - (block $B - (block $y - (br_table $A $y $y $y $y $y $A $y $y $y $y $A $y - (i32.const 0) - ) - (return - (i32.const 0) - ) - ) - (return - (i32.const 1) - ) - ) - (return - (i32.const 2) - ) - ) - (i32.const 3) - ) - (func $simple-switch-2 (; 69 ;) (result i32) - (block $A - (block $B - (block $y - (br_table $A $y $y $y $y $y $y $y $y $y $y $y $A $y - (i32.const 0) - ) - (return - (i32.const 0) - ) - ) - (return - (i32.const 1) - ) - ) - (return - (i32.const 2) - ) - ) - (i32.const 3) - ) - (func $simple-switch-3 (; 70 ;) (result i32) - (block $A - (block $B - (block $y - (br_table $A $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $B $y - (i32.const 0) - ) - (return - (i32.const 0) - ) - ) - (return - (i32.const 1) - ) - ) - (return - (i32.const 2) - ) - ) - (i32.const 3) - ) - (func $simple-switch43 (; 71 ;) (result i32) - (local $0 i32) - (block $A - (block $B - (block $y - (br_if $A - (i32.eqz - (local.tee $0 - (i32.const 0) - ) - ) - ) - (br_if $B - (i32.eq - (local.get $0) - (i32.const 127) - ) - ) - (br $y) - (return - (i32.const 0) - ) - ) - (return - (i32.const 1) - ) - ) - (return - (i32.const 2) - ) - ) - (i32.const 3) - ) - (func $simple-switch-5 (; 72 ;) (result i32) - (block $A - (block $B - (block $y - (br_table $A $y $y $y $y $y $A $y $y $y $y $y $A $y - (i32.const 0) - ) - (return - (i32.const 0) - ) - ) - (return - (i32.const 1) - ) - ) - (return - (i32.const 2) - ) - ) - (i32.const 3) - ) - (func $undo-if-return (; 73 ;) (param $p i32) (result i32) - (local $x i32) - (block $out - (block - (br_if $out - (local.get $p) - ) - (local.set $x - (i32.const 1) - ) - ) - (block - (br_if $out - (i32.eqz - (local.get $p) - ) - ) - (local.set $x - (i32.const 2) - ) - ) - (local.set $x - (if (result i32) - (local.get $p) - (br $out) - (br $out) - ) - ) - ) - (local.get $p) - ) - (func $if-unreachable-but-declares-value (; 74 ;) (param $var$0 i32) (param $var$1 f64) (param $var$2 i32) (param $var$3 f64) (param $var$4 f32) (param $var$5 f32) (result i32) - (local $var$6 f64) - (if - (i32.const 0) - (drop - (loop $label$3 (result i64) - (block $label$4 (result i64) - (block $label$5 - (block $label$6 - (local.set $var$1 - (if (result f64) - (unreachable) - (br $label$5) - (f64.const 1) - ) - ) - ) - ) - (i64.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - (func $if-flow-1 (; 75 ;) (result i32) - (select - (i32.const 1) - (i32.const 2) - (i32.const 0) - ) - ) - (func $if-flow-2 (; 76 ;) (result i32) - (if (result i32) - (i32.const 0) - (unreachable) - (i32.const 2) - ) - ) - (func $if-flow-3 (; 77 ;) (result i32) - (if (result i32) - (i32.const 0) - (i32.const 1) - (unreachable) - ) - ) - (func $if-flow-4 (; 78 ;) (result i32) - (if - (return - (i32.const 0) - ) - (return - (i32.const 1) - ) - (return - (i32.const 2) - ) - ) - ) - (func $iff-flow-fuzz-bug (; 79 ;) (result i32) - (loop $label$1 - (br_if $label$1 - (i32.eqz - (i32.const 1) - ) - ) - (loop $label$2 - (unreachable) - (if - (i32.const 0) - (nop) - (return - (i32.const 0) - ) - ) - ) - ) - ) - (func $fuzz-block-unreachable-brs-with-values (; 80 ;) (result i32) - (local $0 i32) - (loop $label$1 - (if - (local.get $0) - (block $label$2 - (local.tee $0 - (loop $label$5 - (br_if $label$5 - (block - (unreachable) - (drop - (i32.const 0) - ) - ) - ) - ) - ) - ) - (br $label$1) - ) - ) - ) - (func $drop-restructure-if (; 81 ;) (param $x i32) (param $y i32) (result i32) - (if (result i32) - (local.get $y) - (local.get $x) - (block $label$2 (result i32) - (nop) - (i32.const 0) - ) - ) - ) - (func $drop-restructure-if-final (; 82 ;) (param $x i32) (param $y i32) (result i32) - (if (result i32) - (local.get $y) - (local.get $x) - (block $label$2 (result i32) - (nop) - (unreachable) - ) - ) - ) - (func $drop-restructure-if-middle (; 83 ;) (param $x i32) (param $y i32) (result i32) - (if (result i32) - (local.get $y) - (local.get $x) - (block $label$2 (result i32) - (nop) - (nop) - (i32.const 0) - ) - ) - ) - (func $drop-restructure-if-bad (; 84 ;) (param $x i32) (param $y i32) (result i32) - (block $label$2 (result i32) - (drop - (br_if $label$2 - (local.tee $y - (local.get $x) - ) - (local.get $y) - ) - ) - (i32.const 0) - ) - ) - (func $drop-restructure-if-bad-2 (; 85 ;) (param $x i32) (param $y i32) (result i32) - (block $label$2 (result i32) - (drop - (br_if $label$2 - (local.get $y) - (local.tee $y - (local.get $x) - ) - ) - ) - (i32.const 0) - ) - ) - (func $if-block (; 86 ;) - (if - (i32.const 1) - (block $label - (block $block - (drop - (i32.const 2) - ) - (drop - (i32.const 3) - ) - ) - ) - ) - ) - (func $if-block-bad (; 87 ;) - (block $label - (if - (br $label) - (block $block - (drop - (i32.const 2) - ) - (drop - (i32.const 3) - ) - ) - ) - ) - ) - (func $if-block-br (; 88 ;) - (block $label - (br_if $label - (i32.const 1) - ) - ) - ) - (func $if-block-br-1 (; 89 ;) - (if - (i32.const 1) - (block $label - ) - (drop - (i32.const 3) - ) - ) - ) - (func $if-block-br-2 (; 90 ;) - (if - (i32.const 1) - (block $label - (drop - (i32.const 3) - ) - ) - (nop) - ) - ) - (func $if-block-br-3 (; 91 ;) - (if - (i32.const 1) - (block $label - ) - (nop) - ) - ) - (func $if-block-br-4-eithre (; 92 ;) - (if - (i32.const 1) - (block $label - (drop - (i32.const 2) - ) - ) - (drop - (i32.const 3) - ) - ) - ) - (func $if-block-br-5-value (; 93 ;) (result i32) - (select - (block $label (result i32) - (i32.const 2) - ) - (i32.const 3) - (i32.const 1) - ) - ) - (func $restructure-if-outerType-change (; 94 ;) - (loop $label$1 - (br_if $label$1 - (block $label$2 - (if - (block $label$4 - (unreachable) - ) - (block $label$3 - (br $label$3) - ) - ) - (unreachable) - ) - ) - ) - ) - (func $if-arm-unreachable (; 95 ;) - (if - (unreachable) - (block $label$1 - (nop) - ) - (unreachable) - ) - ) - (func $propagate-type-if-we-optimize (; 96 ;) - (if - (i32.const 1) - (nop) - (block $block - (drop - (loop $label$3 (result i64) - (br_if $label$3 - (if - (i32.const 0) - (block $label$4 - (unreachable) - ) - (unreachable) - ) - ) - (i64.const -9) - ) - ) - (unreachable) - ) - ) - ) - (func $switch-to-br (; 97 ;) - (block $A - (block $y - (block - (drop - (i32.const 0) - ) - (br $A) - ) - ) - ) - ) - (func $switch-to-br-value (; 98 ;) (result i32) - (block $A (result i32) - (block $y (result i32) - (block - (drop - (i32.const 1) - ) - (br $A - (i32.const 0) - ) - ) - ) - ) - ) - (func $switch-threading-multi (; 99 ;) (param $x i32) (param $y i32) (result i32) - (block $block$5$break - (block $block$4$break - (loop $shape$1$continue - (block $block$3$break - (block $switch$2$case$5 - (block $switch$2$case$4 - (block $switch$2$default - (block $switch$2$case$2 - (br_table $shape$1$continue $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$5$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$3$break $block$4$break $block$3$break - (local.get $x) - ) - ) - (br $shape$1$continue) - ) - (br $block$3$break) - ) - (br $block$4$break) - ) - (br $block$5$break) - ) - ) - (unreachable) - ) - (local.set $y - (i32.const 1) - ) - (unreachable) - ) - (local.set $y - (i32.const 2) - ) - (unreachable) - ) - (func $fuzz-type-changes-in-our-cycles (; 100 ;) (result i32) - (loop $label$1 - (if - (i32.const 0) - (if - (i32.const 0) - (block $label$3 - (block $block - ) - ) - (return - (i32.const -8192) - ) - ) - ) - (br $label$1) - ) - ) - (func $refinalize-need-br-value (; 101 ;) (result i32) - (loop $label$3 (result i32) - (block $label$6 (result i32) - (block $label$10 - (unreachable) - (block $label$503 - (br_if $label$3 - (block $label$530 (result i32) - (br_if $label$503 - (i32.const 0) - ) - (i32.const 0) - ) - ) - (return - (i32.const 127) - ) - ) - ) - ) - ) - ) - (func $selectify (; 102 ;) (param $x i32) - (drop - (if (result i32) - (i32.eq - (local.get $x) - (i32.const 1) - ) - (i32.mul - (i32.const 2) - (i32.const 3) - ) - (i32.mul - (i32.const 2) - (i32.const 3) - ) - ) - ) - (drop - (select - (i32.add - (i32.const 2) - (i32.const 3) - ) - (i32.add - (i32.const 2) - (i32.const 3) - ) - (i32.eq - (local.get $x) - (i32.const 1) - ) - ) - ) - ) - (func $if-one-side (; 103 ;) (result i32) - (local $x i32) - (local.set $x - (select - (i32.const 2) - (local.get $x) - (i32.const 1) - ) - ) - (local.get $x) - ) - (func $if-one-side-b (; 104 ;) (result i32) - (local $x i32) - (local.set $x - (select - (local.get $x) - (i32.const 2) - (i32.const 1) - ) - ) - (local.get $x) - ) - (func $if-one-side-tee-etc (; 105 ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $x i32) - (local $y i32) - (local $z i32) - (drop - (call $if-one-side-tee-etc - (local.tee $x - (select - (i32.const -4) - (local.get $x) - (i32.const -3) - ) - ) - ) - ) - (i32.const 0) - ) - (func $ifs-copies-recursive (; 106 ;) (param $20 i32) (result i32) - (if - (i32.const 1) - (local.set $20 - (select - (select - (i32.const 4) - (local.get $20) - (i32.const 3) - ) - (local.get $20) - (i32.const 2) - ) - ) - ) - (local.get $20) - ) - (func $if-copy1 (; 107 ;) - (local $x i32) - (local $y i32) - (loop $top - (local.set $x - (select - (local.get $x) - (local.get $y) - (i32.const 1) - ) - ) - (br $top) - ) - ) - (func $if-copy3 (; 108 ;) - (local $x i32) - (local $y i32) - (loop $top - (if - (i32.const 1) - (local.tee $x - (unreachable) - ) - ) - (br $top) - ) - ) - (func $if-copy4 (; 109 ;) - (local $x i32) - (local $y i32) - (loop $top - (local.set $x - (if (result i32) - (i32.const 1) - (unreachable) - (local.get $y) - ) - ) - (br $top) - ) - ) - (func $if-copy-tee (; 110 ;) - (local $x i32) - (local $y i32) - (loop $top - (drop - (local.tee $x - (select - (local.get $x) - (i32.const 2) - (i32.const 1) - ) - ) - ) - (br $top) - ) - ) - (func $loop-end-set (; 111 ;) (param $x i32) (result i32) - (loop $loop - (nop) - (br_if $loop - (local.get $x) - ) - (local.set $x - (i32.const 1) - ) - ) - (local.get $x) - ) - (func $loop-end-value (; 112 ;) (param $x i32) (result i32) - (loop $loop (result i32) - (nop) - (br_if $loop - (local.get $x) - ) - (i32.const 1) - ) - ) - (func $do-not-flow-values-through-unreachable-code (; 113 ;) (result i32) - (block $block - (unreachable) - (if - (i32.const 0) - (block $A - (return - (i32.const 0) - ) - ) - (nop) - ) - ) - ) - (func $do-not-flow-values-through-unreachable-code-b (; 114 ;) (result i32) - (loop $loop-in - (unreachable) - (if - (i32.const 0) - (block $A - (return - (i32.const 0) - ) - ) - (nop) - ) - ) - ) - (func $if_br_if (; 115 ;) - (local $0 i32) - (block $label$1 - (br_if $label$1 - (select - (local.tee $0 - (i32.const 1024) - ) - (i32.const 0) - (i32.eqz - (i32.const -4) - ) - ) - ) - (br_if $label$1 - (select - (i32.const 1025) - (i32.const 0) - (i32.eqz - (i32.const -5) - ) - ) - ) - (br_if $label$1 - (select - (local.tee $0 - (i32.const 1025) - ) - (i32.const 0) - (i32.eqz - (i32.const -6) - ) - ) - ) - (if - (i32.const 1026) - (br_if $label$1 - (local.tee $0 - (i32.const -7) - ) - ) - ) - (i32.store - (i32.const 1024) - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - ) - ) -) diff -Nru binaryen-91/test/passes/remove-unused-brs.wast binaryen-99/test/passes/remove-unused-brs.wast --- binaryen-91/test/passes/remove-unused-brs.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-brs.wast 1970-01-01 00:00:00.000000000 +0000 @@ -1,2091 +0,0 @@ -(module - (memory 256 256) - (type $0 (func (param i32))) - (type $1 (func)) - (type $2 (func (result i32))) - (func $b0-yes (type $0) (param $i1 i32) - (block $topmost - (br $topmost) - ) - ) - (func $b1 (type $0) (param $i1 i32) - (block $topmost - (block - (drop - (i32.const 0) - ) - (br $topmost) - ) - ) - ) - (func $b2 (type $0) (param $i1 i32) - (block $topmost - (block $inner - (br $topmost) - ) - ) - ) - (func $b3-yes (type $0) (param $i1 i32) - (block $topmost - (block $inner - (br $inner) - ) - ) - ) - (func $b4 (type $0) (param $i1 i32) - (block $topmost - (block $inner - (block - (drop - (i32.const 0) - ) - (br $topmost) - ) - ) - ) - ) - (func $b5 (type $0) (param $i1 i32) - (block $topmost - (block $inner - (block - (drop - (i32.const 0) - ) - (br $inner) - ) - ) - ) - ) - (func $b6 (type $0) (param $i1 i32) - (block $topmost - (br_if $topmost - (i32.const 1) - ) - ) - ) - (func $b7 (type $0) (param $i1 i32) - (block $topmost - (block - (drop - (i32.const 0) - ) - (br_if $topmost - (i32.const 1) - ) - ) - ) - ) - (func $b8 (type $0) (param $i1 i32) - (block $topmost - (block $inner - (br_if $topmost - (i32.const 1) - ) - ) - ) - ) - (func $b9 (type $0) (param $i1 i32) - (block $topmost - (block $inner - (br_if $topmost - (i32.const 1) - ) - ) - ) - ) - (func $b10 (type $0) (param $i1 i32) - (block $topmost - (block $inner - (block - (drop - (i32.const 0) - ) - (br_if $topmost - (i32.const 1) - ) - ) - ) - ) - ) - (func $b11 (type $0) (param $i1 i32) - (block $topmost - (block $inner - (block - (drop - (i32.const 0) - ) - (br_if $inner - (i32.const 1) - ) - ) - ) - ) - ) - (func $b12-yes (type $1) - (block $topmost - (if - (i32.const 1) - (block $block1 - (drop - (i32.const 12) - ) - (block - (drop - (i32.const 1) - ) - (br $topmost) - ) - ) - (block $block3 - (drop - (i32.const 27) - ) - (block - (drop - (i32.const 2) - ) - (br $topmost) - ) - ) - ) - ) - ) - (func $b13 (type $2) (result i32) - (block $topmost (result i32) - (if - (i32.const 1) - (block $block1 - (drop - (i32.const 12) - ) - (drop - (br_if $topmost - (i32.const 1) - (i32.const 1) - ) - ) - ) - (block $block3 - (drop - (i32.const 27) - ) - (br $topmost - (i32.const 2) - ) - ) - ) - (i32.const 3) - ) - ) - (func $b14 (type $2) (result i32) - (block $topmost (result i32) - (if (result i32) - (i32.const 1) - (block $block1 (result i32) - (i32.const 12) - ) - (block $block3 (result i32) - (i32.const 27) - ) - ) - ) - ) - (func $b15 (type $1) - (block $topmost - (if - (i32.const 17) - (br $topmost) - ) - ) - ) - (func $b15b (type $1) - (block $topmost - (if - (i32.const 18) - (block - (drop - (i32.const 0) - ) - (br $topmost) - ) - ) - ) - ) - (func $b16 (type $1) - (block $a - (block $b - (block $c - (br $a) - ) - (br $a) - ) - (br $a) - ) - (block $a - (block $b - (block $c - (br $c) - ) - (br $b) - ) - (br $a) - ) - (block $a - (block $b - (block $c - (br $b) - ) - (br $a) - ) - (br $a) - ) - ) - (func $b17 (type $1) - (block $a - (if - (i32.const 0) - (block $block1 - (br $a) - ) - (block $block3 - (br $a) - ) - ) - ) - (block $a - (if - (i32.const 0) - (drop - (i32.const 1) - ) - (block $block6 - (br $a) - ) - ) - ) - (block $a - (if - (i32.const 0) - (block $block8 - (br $a) - ) - (drop - (i32.const 1) - ) - ) - ) - (block $c - (block $b - (if - (i32.const 0) - (block $block11 - (br $b) - ) - (block $block13 - (br $c) - ) - ) - ) - ) - ) - (func $ret-1 (type $1) - (return) - ) - (func $ret-2 (type $1) - (block $block0 - (block $block1 - (return) - ) - ) - ) - (func $ret-3 (type $1) - (block $block0 - (if - (i32.const 0) - (return) - (block $block3 - (return) - ) - ) - ) - ) - (func $ret-value (type $2) (result i32) - (block $block0 - (block $block1 - (return - (i32.const 1) - ) - ) - ) - ) - (func $no-select-but-the-last (type $1) - (block $a - (if - (i32.const 0) - (drop - (i32.const 1) - ) - (block $block2 - (block - (drop - (i32.const 2) - ) - (br $a) - ) - (drop - (i32.const 3) - ) - ) - ) - (if - (i32.const 0) - (block $block4 - (block - (drop - (i32.const 2) - ) - (br $a) - ) - (drop - (i32.const 3) - ) - ) - (drop - (i32.const 1) - ) - ) - (if - (block $block6 (result i32) - (block - (drop - (i32.const 2) - ) - (br $a) - ) - (i32.const 3) - ) - (drop - (i32.const 0) - ) - (drop - (i32.const 1) - ) - ) - (if - (block $a (result i32) - (br $a - (i32.const 0) - ) - ) - (block $a - (block - (drop - (i32.const 1) - ) - (br $a) - ) - ) - (block $a - (block - (drop - (i32.const 2) - ) - (br $a) - ) - ) - ) - ) - ) - (func $side-effects-and-order (type $2) (result i32) - (local $x i32) - (block $do-once$0 - (if - (call $b13) - (block - (drop - (i32.const 0) - ) - (br $do-once$0) - ) - ) - (drop - (i32.const 1) - ) - ) - (block $do-once$0 - (if - (call $b13) - (block - (drop - (call $b14) - ) - (br $do-once$0) - ) - ) - (drop - (i32.const 1) - ) - ) - (block $do-once$0 - (if - (i32.const 0) - (block - (drop - (call $b14) - ) - (br $do-once$0) - ) - ) - (drop - (i32.const 1) - ) - ) - (block $do-once$0 (result i32) - (if - (local.tee $x - (i32.const 1) - ) - (br $do-once$0 - (local.tee $x - (i32.const 2) - ) - ) - ) - (i32.const 1) - ) - ) - (func $loops - (loop $in - (block $out - (if (i32.const 0) (br $out)) - (br $in) ;; we can conditionalize this, and then the br out can vanish - ) - ) - (loop $in - (br $in) - ) - (loop - (block $out - (if (i32.const 0) (br $out)) - (br $out) - ) - ) - (loop $in - (block $out - (if (i32.const 0) (br $out)) - (br $out) - ) - ) - (loop $in) - (loop $in - (block $out) - ) - (loop $in - (block $out - (if (i32.const 0) (br $out)) - (br_if $in (i32.const 1)) - ) - ) - (loop $in - (block $out - (if (i32.const 0) (br $in)) - (br $out) - ) - ) - (loop $in - (block $out - (if (i32.const 0) (unreachable)) - (br $in) - ) - ) - (loop $in - (block $out - (if (i32.const 0) - (block - (call $loops) - (br $out) - ) - ) - (br $in) - ) - ) - (loop $in-todo ;; br_if into if - (block $out-todo - (if (i32.const 0) (br $out-todo)) - (call $loops) - (br $in-todo) - ) - ) - (loop $in - (block $out - (if (i32.const 0) - (br $out) - (call $loops) - ) - (br $in) - ) - ) - (loop $in - (block $out - (if (i32.const 0) - (call $loops) - (br $out) - ) - (br $in) - ) - ) - (loop $in - (block $out - (if (i32.const 0) - (block - (drop (i32.const 1)) - (call $loops) - ) - (br $out) - ) - (br $in) - ) - ) - (loop $in - (block $out - (if (i32.const 0) - (br $out) - (call $loops) - ) - (drop (i32.const 100)) - (br $in) - ) - ) - (loop $in - (block $out - (if (i32.const 0) - (call $loops) - (br $out) - ) - (drop (i32.const 101)) - (br $in) - ) - ) - (loop $in - (block $out - (if (i32.const 0) - (block - (drop (i32.const 1)) - (call $loops) - ) - (br $out) - ) - (drop (i32.const 102)) - (br $in) - ) - ) - (loop $in - (block $out - (if (i32.const 0) - (br $out) - (call $loops) - ) - (return) - (br $in) - ) - ) - (loop $in - (block $out - (if (i32.const 0) - (br $out) - (call $loops) - ) - (br $out) - (br $in) - ) - ) - (loop $in - (block $out - (if (i32.const 0) - (br $out) - (call $loops) - ) - (drop - (block $out2 (result i32) - (br $out2 (i32.const 1)) - ) - ) - (br $in) - ) - ) - (loop $in - (block $out - (br_if $out (i32.const 0)) - (br $in) - ) - ) - (loop $in-todo2 ;; if-ify - (block $out-todo2 - (br_if $out-todo2 (i32.const 0)) - (call $loops) - (br $in-todo2) - ) - ) - (loop $in - (block $out - (br $out) - (br $in) - ) - ) - (loop $in - (block $out - (br_if $in (i32.const 0)) - (br $in) - ) - ) - (loop $in-not ;; do NOT if-ify, the block can't be removed - (block $out-not - (br_if $out-not (i32.const -1)) - (br_if $out-not (i32.const 0)) - (call $loops) - (br $in-not) - ) - ) - (loop $in-todo2 ;; if-ify a slice with 2 things - (block $out-todo2 - (br_if $out-todo2 (i32.const 0)) - (call $loops) - (drop (i32.const 1)) - (br $in-todo2) - ) - ) - ) - (func $br_if_in_block (result i32) - (block $outval (result i32) - (block $in - (if (i32.const 1) (br $in) (br $in)) - (drop (i32.const 2)) - (if (i32.const 3) (unreachable) (br $in)) - (drop (i32.const 4)) - (if (i32.const 5) (br $in) (unreachable)) - (drop (i32.const 6)) - ) - (if (result i32) (i32.const 6) (br $outval (i32.const 7)) (i32.const 8)) - ) - ) - (func $threading - (drop - (block $value-out (result i32) - (block $value-in (result i32) - (block $out - (block $in - (if (i32.const 1) - (br $in) - ) - (br_if $in (i32.const 2)) - (br $value-in (i32.const 3)) - ) - (br $out) - ) - (i32.const 4) - ) - ) - ) - (block $stack1 - (block $stack2 - (block $stack3 - (block $stack4 - (if (i32.const 1) - (br $stack4) - ) - (unreachable) - ) - (br $stack3) - ) - (br $stack2) - ) - (br $stack1) - ) - ) - (func $if-to-br_if-conflict (param $x i32) (param $y i32) (result i32) - (block $leave - (local.set $y - (block $out (result i32) - (if - (local.get $x) - (br $out - (block (result i32) - (local.set $x (i32.const 0)) - (i32.const 1) - ) - ) - (br_if $leave (i32.const 1)) - ) - (unreachable) - ) - ) - ) - (i32.add (local.get $x) (local.get $y)) - ) - (func $if-to-br_if-conflict2 (param $x i32) (param $y i32) (result i32) - (block $leave - (local.set $y - (block $out (result i32) - (if - (local.get $x) - (br_if $leave (i32.const 1)) - (br $out - (block (result i32) - (local.set $x (i32.const 0)) - (i32.const 1) - ) - ) - ) - (unreachable) - ) - ) - ) - (i32.add (local.get $x) (local.get $y)) - ) - (func $if-to-br_if-value-sideeffect (param $x i32) (param $y i32) (result i32) - (block $leave - (local.set $y - (block $out (result i32) - (if - (local.get $x) - (br $out - (block (result i32) - (drop (call $if-to-br_if-value-sideeffect (i32.const 0) (i32.const 1))) - (nop) - (i32.const 1) - ) - ) - ) - (unreachable) - ) - ) - ) - (i32.add (local.get $x) (local.get $y)) - ) - (func $fuzz (param $j i32) (param $g i32) - (block $label$break$c - (loop $label$continue$d - (block $label$break$d - (if - (i32.lt_s - (local.get $j) - (i32.const 2147483640) - ) - (block $x - (block $y - (block $z - (br_if $y - (local.get $j) - ) - (br $x) ;; don't be confused by this - ) - (nop) ;; get me to the store! - ) - ) - (block $switch$26 - (nop) - ) - ) - (i32.store - (i32.const 5724) - (i32.const -254899267) - ) - (br $label$continue$d) - ) - ) - ) - ) - (func $iffify - (block $yes - (br_if $yes - (i32.const 0) - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - ) - (block $no - (br_if $no - (i32.const 0) - ) - (drop (i32.const 1)) - (br $no) - (drop (i32.const 2)) - ) - (block $no2 - (br_if $no2 - (i32.const 0) - ) - ) - (block $no3 - (br $no3) - (drop (i32.const 1)) - (drop (i32.const 2)) - ) - (block $no5 - (block $no4 - (br_if $no5 - (i32.const 0) - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - ) - ) - ) - (func $loop-if (result i32) - (block $outer (result i32) - (loop $typed (result i32) - ;; we can move the br after us into our if-else, which means we are the final - ;; element in the block, - (if - (i32.const 2) - (block - (drop (call $loop-if)) - (br $outer (i32.const 0)) - ) - ) - (br $typed) - ) - ) - ) - (func $block-break (param $0 i32) - (block $block$7$break - (block $shape$6$continue - (call $block-break (i32.const 1)) - (br $block$7$break) - ) - ) - ) - (func $loop-break (param $0 i32) - (block $block$7$break - (loop $shape$6$continue - (call $loop-break (i32.const 1)) - (br_if $shape$6$continue - (local.get $0) - ) - (br $block$7$break) - ) - ) - ) - (func $untaken-brs-might-prevent-block-removal (param $0 f32) (param $1 i32) (param $2 f32) (param $3 i32) (param $4 i32) (param $5 f64) (param $6 f32) (result i32) - (block $label$0 (result i32) - (block $label$1 ;; this block has no taken brs, but we can't remove it without removing them first - (br_if $label$1 - (i32.const 607395945) - ) - (br_if $label$1 - (i32.load16_s offset=3 align=1 - (select - (call $untaken-brs-might-prevent-block-removal - (f32.const 1.4904844647389837e-07) - (br_if $label$0 - (i32.store16 offset=4 align=1 - (i32.const 1900641) - (br $label$0 - (i32.const 1628075109) - ) - ) - (i32.const 1764950569) - ) - (f32.const 1.1910939690100655e-32) - (i32.const 1628057906) - (i32.const 859068982) - (f64.const 2.524518840347722e-258) - (f32.const -nan:0x40a63) - ) - (i32.const 688529440) - (i32.const 1751478890) - ) - ) - ) - ) - (i32.const 1935947830) - ) - ) - (func $unexitable-loops-result (param $0 i32) (result i64) - (loop $label$0 - (loop $label$1 - (if - (i32.load8_s - (i32.const 201460482) - ) - (br $label$0) - (block $label$3 - (br_if $label$3 - (local.get $0) - ) - ) - ) - (br $label$1) - ) - ) - ) - (func $untaken-br-with-concrete-last-element - (block $label$8 - (block $label$11 - (block $label$14 - (br_if $label$14 - (br $label$11 - ) - ) - ) - ) - ) - ) - (func $untaken-br-with-concrete-last-element2 (result i32) - (block $label$8 (result i32) - (block $label$11 (result i32) - (block $label$14 (result i32) - (br_if $label$14 - (i32.const 102) - (br $label$11 - (i32.const 103) - ) - ) - ) - ) - ) - ) - (func $untaken-br_if-then-if - (block $label$0 - (br_if $label$0 - (unreachable) - ) - (if - (i32.const 0) - (nop) - ) - ) - ) - (func $unreachable-if-that-could-be-a-br_if (result i64) - (loop $label$3 (result i64) - (drop - (if (result f64) - (unreachable) - (f64.const 1) - (br $label$3) - ) - ) - (i64.const 1) - ) - ) - (func $nop-br-might-update-type - (block $label$39 - (drop - (if (result i32) - (unreachable) - (if (result i32) - (i32.const 1) - (br $label$39) ;; if we nop this, then the parent type must change - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - ) - (func $no-flow-through-if-without-else (result f32) - (local $0 i32) - (local $2 f32) - (block $label$0 - (if - (local.get $0) - (block $label$11 - (return - (f32.const 239) - ) - (if - (i32.const 0) - (return - (local.get $2) - ) - ) - ) - (return - (f32.const -9223372036854775808) - ) - ) - ) - ) - (func $unreachable-return-loop-value (result i64) - (loop $loop - (if - (i32.const 1) - (block $block - (br_if $block - (br $loop) - ) - (br $loop) - ) - ) - (br $loop) ;; we 100% go back to the loop top, the loop is never exited. but opts move code around so that is not obvious anymore, and the loop becomes a nop, but the func has a return value - ) - ) - (func $obviously-flows-out-maybe (param $var$0 i32) (result f32) - (block $label$1 (result f32) - (br $label$1 - (f32.const 1) - ) - (loop $label$5 - (if - (i32.const 11) - (block $label$8 ;; this block is none - it has a break, even if not taken - and so looks like it might flow out, - (br_if $label$8 ;; and so we can't move it outside to be the end of the loop's block - (unreachable) - ) - (br $label$5) - ) - ) - (br $label$5) - ) - ) - ) - (func $br-to-table (param $a i32) - (block $x - (block $y - (block $z - (br_if $x (i32.eq (local.get $a) (i32.const 0))) - (br_if $y (i32.eq (local.get $a) (i32.const 1))) - (br_if $z (i32.eq (local.get $a) (i32.const 2))) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-too-few (param $a i32) - (block $x - (block $y - (block $z - (br_if $x (i32.eq (local.get $a) (i32.const 0))) - (br_if $y (i32.eq (local.get $a) (i32.const 1))) - ) - ) - ) - ) - (func $br-to-table-one-more (param $a i32) - (block $x - (block $y - (block $z - (br_if $x (i32.eq (local.get $a) (i32.const 0))) - (br_if $y (i32.eq (local.get $a) (i32.const 1))) - (br_if $z (i32.eq (local.get $a) (i32.const 2))) - (br_if $x (i32.eq (local.get $a) (i32.const 3))) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-overlap (param $a i32) - (block $x - (block $y - (block $z - (br_if $x (i32.eq (local.get $a) (i32.const 0))) - (br_if $y (i32.eq (local.get $a) (i32.const 1))) - (br_if $z (i32.eq (local.get $a) (i32.const 1))) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-overlap-start (param $a i32) - (block $x - (block $y - (block $z - (br_if $x (i32.eq (local.get $a) (i32.const 0))) - (br_if $y (i32.eq (local.get $a) (i32.const 0))) - (br_if $z (i32.eq (local.get $a) (i32.const 1))) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-offset (param $a i32) - (block $x - (block $y - (block $z - (br_if $x (i32.eq (local.get $a) (i32.const 15))) - (br_if $y (i32.eq (local.get $a) (i32.const 16))) - (br_if $z (i32.eq (local.get $a) (i32.const 17))) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-RANGE-high (param $a i32) - (block $x - (block $y - (block $z - (br_if $x (i32.eq (local.get $a) (i32.const 0))) - (br_if $y (i32.eq (local.get $a) (i32.const 1))) - (br_if $z (i32.eq (local.get $a) (i32.const 10))) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-RANGE-low (param $a i32) - (block $x - (block $y - (block $z - (br_if $x (i32.eq (local.get $a) (i32.const 0))) - (br_if $y (i32.eq (local.get $a) (i32.const 3))) - (br_if $z (i32.eq (local.get $a) (i32.const 9))) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-bad (param $a i32) (result i32) - (block $value (result i32) - (block $x - (block $y - (block $z - (nop) - (br $x) - (br_if $x (i32.eq (local.get $a) (i32.const 0))) - (br_if $y (i32.eq (local.get $a) (i32.const 1))) - (br_if $z (i32.eq (local.get $a) (i32.const 2))) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (i32.const 2000) - ) - ) - (func $br-to-table-bad2 (param $a i32) (result i32) - (block $value (result i32) - (block $x - (block $y - (block $z - (nop) - (drop (br_if $value (i32.const 1000) (i32.eq (local.get $a) (i32.const 0)))) - (br_if $x (i32.eq (local.get $a) (i32.const 0))) - (br_if $y (i32.eq (local.get $a) (i32.const 1))) - (br_if $z (i32.eq (local.get $a) (i32.const 2))) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (i32.const 2000) - ) - ) - (func $br-to-table-bad3 (param $a i32) - (block $x - (block $y - (block $z - (br_if $x (i32.eq (i32.const 10) (i32.const 0))) - (br_if $x (i32.eq (local.get $a) (i32.const 0))) - (br_if $y (i32.eq (local.get $a) (i32.const 1))) - (br_if $z (i32.eq (local.get $a) (i32.const 2))) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-multi (param $a i32) - (block $x - (block $y - (block $z - (br_if $z (i32.eq (i32.const 10) (i32.const 5))) - (br_if $y (i32.eq (i32.const 10) (i32.const 6))) - (br_if $x (i32.eq (i32.const 10) (i32.const 7))) - (br_if $x (i32.eq (local.get $a) (i32.const 0))) - (br_if $y (i32.eq (local.get $a) (i32.const 1))) - (br_if $z (i32.eq (local.get $a) (i32.const 2))) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-bad4 (param $a i32) - (block $x - (block $y - (block $z - (br_if $x (i32.ne (local.get $a) (i32.const 0))) - (br_if $y (i32.eq (local.get $a) (i32.const 1))) - (br_if $z (i32.eq (local.get $a) (i32.const 2))) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-bad5 (param $a i32) - (block $x - (block $y - (block $z - (br_if $x (i32.eq (local.get $a) (local.get $a))) - (br_if $y (i32.eq (local.get $a) (local.get $a))) - (br_if $z (i32.eq (local.get $a) (local.get $a))) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-bad6 (param $a i32) - (block $x - (block $y - (block $z - (br_if $x (i32.eq (call $b13) (i32.const 0))) - (br_if $y (i32.eq (call $b13) (i32.const 1))) - (br_if $z (i32.eq (call $b13) (i32.const 2))) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-bad7 (param $a i32) - (block $x - (block $y - (block $z - (br_if $x (i32.eq (local.get $a) (i32.const -1))) ;; negative, we support only positive up to int32_max - (br_if $y (i32.eq (local.get $a) (i32.const -1))) - (br_if $z (i32.eq (local.get $a) (i32.const -1))) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-defaultNameOverlaps (param $a i32) - (block $x - (block $tablify|0 - (block $z - (br_if $x (i32.eq (local.get $a) (i32.const 0))) - (br_if $tablify|0 (i32.eq (local.get $a) (i32.const 1))) - (br_if $z (i32.eq (local.get $a) (i32.const 2))) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-unreach (param $a i32) - (block $x - (block $y - (block $z - (br_if $x (i32.eq (unreachable) (i32.const 0))) - (br_if $y (i32.eq (unreachable) (i32.const 1))) - (br_if $z (i32.eq (unreachable) (i32.const 2))) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $br-to-table-overlap-but-later (param $a i32) - (block $x - (block $y - (block $z - (br_if $x (i32.eq (local.get $a) (i32.const 0))) - (br_if $y (i32.eq (local.get $a) (i32.const 1))) - (br_if $z (i32.eq (local.get $a) (i32.const 1))) - (br_if $x (i32.eq (local.get $a) (i32.const 2))) - (br_if $y (i32.eq (local.get $a) (i32.const 3))) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (unreachable) - ) - (func $tiny-switch - (block $x - (block $y - (br_table $x $y - (i32.const 0) - ) - ) - ) - (block $z - (br_table $z - (i32.const 0) - ) - ) - ) - (func $trim-switch - (block $A - (block $y - (br_table $y $y $A $y $A $y $A $y $y $y $y $y $y $y $y $y $y $y - (i32.const 0) - ) - ) - (call $trim-switch) - ) - ) - (func $same-target-br_if-and-br - (block $x - (br_if $x - (i32.const 0) - ) - (br $x) - (unreachable) - ) - ) - (func $simple-switch (result i32) - (block $A - (block $B - (block $y - (br_table $A $y $y $y $y $y $A $y $y $y $y $A $y - (i32.const 0) - ) - (return (i32.const 0)) - ) - (return (i32.const 1)) - ) - (return (i32.const 2)) - ) - (return (i32.const 3)) - ) - (func $simple-switch-2 (result i32) - (block $A - (block $B - (block $y - (br_table $A $y $y $y $y $y $y $y $y $y $y $y $A $y - (i32.const 0) - ) - (return (i32.const 0)) - ) - (return (i32.const 1)) - ) - (return (i32.const 2)) - ) - (return (i32.const 3)) - ) - (func $simple-switch-3 (result i32) - (block $A - (block $B - (block $y - (br_table $A $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $B $y - (i32.const 0) - ) - (return (i32.const 0)) - ) - (return (i32.const 1)) - ) - (return (i32.const 2)) - ) - (return (i32.const 3)) - ) - (func $simple-switch43 (result i32) - (block $A - (block $B - (block $y - (br_table $A $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $y $B $y - (i32.const 0) - ) - (return (i32.const 0)) - ) - (return (i32.const 1)) - ) - (return (i32.const 2)) - ) - (return (i32.const 3)) - ) - (func $simple-switch-5 (result i32) - (block $A - (block $B - (block $y - (br_table $A $y $y $y $y $y $A $y $y $y $y $y $A $y - (i32.const 0) - ) - (return (i32.const 0)) - ) - (return (i32.const 1)) - ) - (return (i32.const 2)) - ) - (return (i32.const 3)) - ) - (func $undo-if-return (param $p i32) (result i32) - (local $x i32) - (block $out - (local.set $x - (if (result i32) - (local.get $p) - (br $out) - (i32.const 1) - ) - ) - (local.set $x - (if (result i32) - (local.get $p) - (i32.const 2) - (br $out) - ) - ) - (local.set $x - (if (result i32) - (local.get $p) - (br $out) - (br $out) - ) - ) - ) - (local.get $p) - ) - (func $if-unreachable-but-declares-value (param $var$0 i32) (param $var$1 f64) (param $var$2 i32) (param $var$3 f64) (param $var$4 f32) (param $var$5 f32) (result i32) - (local $var$6 f64) - (if - (i32.const 0) - (drop - (loop $label$3 (result i64) - (block $label$4 (result i64) - (block $label$5 - (block $label$6 - (local.set $var$1 - (if (result f64) - (unreachable) - (br $label$5) - (f64.const 1) - ) - ) - ) - (nop) - ) - (i64.const 1) - ) - ) - ) - ) - (i32.const 0) - ) - (func $if-flow-1 (result i32) - (if - (i32.const 0) - (return (i32.const 1)) - (return (i32.const 2)) - ) - ) - (func $if-flow-2 (result i32) - (if - (i32.const 0) - (unreachable) - (return (i32.const 2)) - ) - ) - (func $if-flow-3 (result i32) - (if - (i32.const 0) - (return (i32.const 1)) - (unreachable) - ) - ) - (func $if-flow-4 (result i32) - (if - (return (i32.const 0)) - (return (i32.const 1)) - (return (i32.const 2)) - ) - ) - (func $iff-flow-fuzz-bug (result i32) - (loop $label$1 - (if - (i32.const 1) - (loop $label$2 - (unreachable) - (if ;; a loop that is never reached at the end of a loop - (i32.const 0) - (nop) - (return - (i32.const 0) - ) - ) - ) - ) - (br $label$1) - ) - ) - (func $fuzz-block-unreachable-brs-with-values (result i32) - (local $0 i32) - (loop $label$1 (result i32) - (block $label$2 (result i32) - (if - (local.get $0) - (local.set $0 - (loop $label$5 - (br_if $label$5 - (br_if $label$2 - (unreachable) - (i32.const 0) - ) - ) - ) - ) - ) - (br $label$1) - ) - ) - ) - (func $drop-restructure-if (param $x i32) (param $y i32) (result i32) - (block $label$2 (result i32) - (drop - (br_if $label$2 - (local.get $x) - (local.get $y) - ) - ) - (i32.const 0) - ) - ) - (func $drop-restructure-if-final (param $x i32) (param $y i32) (result i32) - (block $label$2 (result i32) - (drop - (br_if $label$2 - (local.get $x) - (local.get $y) - ) - ) - (unreachable) - ) - ) - (func $drop-restructure-if-middle (param $x i32) (param $y i32) (result i32) - (block $label$2 (result i32) - (drop - (br_if $label$2 - (local.get $x) - (local.get $y) - ) - ) - (nop) ;; the middle - (i32.const 0) - ) - ) - (func $drop-restructure-if-bad (param $x i32) (param $y i32) (result i32) - (block $label$2 (result i32) - (drop - (br_if $label$2 - (local.tee $y (local.get $x)) - (local.get $y) - ) - ) - (i32.const 0) - ) - ) - (func $drop-restructure-if-bad-2 (param $x i32) (param $y i32) (result i32) - (block $label$2 (result i32) - (drop - (br_if $label$2 - (local.get $y) - (local.tee $y (local.get $x)) - ) - ) - (i32.const 0) - ) - ) - (func $if-block - (block $label - (if - (i32.const 1) - (block - (drop (i32.const 2)) - (drop (i32.const 3)) - ) - ) - ) - ) - (func $if-block-bad - (block $label - (if - (br $label) ;; use outside of arm - (block - (drop (i32.const 2)) - (drop (i32.const 3)) - ) - ) - ) - ) - (func $if-block-br - (block $label - (if - (i32.const 1) - (br $label) - ) - ) - ) - (func $if-block-br-1 - (block $label - (if - (i32.const 1) - (br $label) - (drop (i32.const 3)) - ) - ) - ) - (func $if-block-br-2 - (block $label - (if - (i32.const 1) - (drop (i32.const 3)) - (br $label) - ) - ) - ) - (func $if-block-br-3 - (block $label - (if - (i32.const 1) - (br $label) - (br $label) - ) - ) - ) - (func $if-block-br-4-eithre - (block $label - (if - (i32.const 1) - (drop (i32.const 2)) - (drop (i32.const 3)) - ) - ) - ) - (func $if-block-br-5-value (result i32) - (block $label (result i32) - (if (result i32) - (i32.const 1) - (i32.const 2) - (i32.const 3) - ) - ) - ) - (func $restructure-if-outerType-change - (loop $label$1 - (br_if $label$1 - (block $label$2 - (block $label$3 - (if - (block $label$4 - (unreachable) - ) - (br $label$3) - ) - ) - (unreachable) - ) - ) - ) - ) - (func $if-arm-unreachable - (block $label$1 - (if - (unreachable) ;; unreachable condition - (nop) - (unreachable) - ) - ) - ) - (func $propagate-type-if-we-optimize - (if - (i32.const 1) - (nop) - (block - (drop - (loop $label$3 (result i64) - (br_if $label$3 - (block $label$4 (result i32) - (if - (i32.const 0) - (unreachable) - (unreachable) - ) - ) - ) - (i64.const -9) - ) - ) - (unreachable) - ) - ) - ) - (func $switch-to-br - (block $A - (block $y - (br_table $y $y $A $A - (i32.const 0) - ) - ) - ) - ) - (func $switch-to-br-value (result i32) - (block $A (result i32) - (block $y (result i32) - (br_table $A $A $A - (i32.const 0) - (i32.const 1) - ) - ) - ) - ) - (func $switch-threading-multi (param $x i32) (param $y i32) (result i32) - (block $block$5$break - (block $block$4$break - (loop $shape$1$continue - (block $block$3$break - (block $switch$2$case$5 - (block $switch$2$case$4 - (block $switch$2$default - (block $switch$2$case$2 - (br_table $switch$2$case$2 $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$case$5 $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$default $switch$2$case$4 $switch$2$default - (local.get $x) - ) - ) - (br $shape$1$continue) - ) - (br $block$3$break) - ) ;; switch$2$case$4 - (br $block$4$break) - ) - (br $block$5$break) - ) - ) - (unreachable) - ) ;; block$4$break - (local.set $y - (i32.const 1) - ) - (unreachable) - ) - (local.set $y - (i32.const 2) - ) - (unreachable) - ) - (func $fuzz-type-changes-in-our-cycles (result i32) - (loop $label$1 - (if - (i32.const 0) - (block $label$3 - (if - (i32.const 0) - (block - (nop) - (br $label$3) - ) - (return - (i32.const -8192) - ) - ) - ) - ) - (br $label$1) - ) - ) - (func $refinalize-need-br-value (result i32) - (loop $label$3 (result i32) - (block $label$6 (result i32) - (block $label$10 - (unreachable) - (block $label$503 ;; this block will get a value flowing out - (br_if $label$3 - (block $label$530 (result i32) - (br_if $label$503 ;; while this br does not send a value - (i32.const 0) - ) - (i32.const 0) - ) - ) - (return - (i32.const 127) - ) - ) - ) - ) - ) - ) - (func $selectify (param $x i32) - (drop - (if (result i32) - (i32.eq - (local.get $x) - (i32.const 1) - ) - (i32.mul - (i32.const 2) - (i32.const 3) - ) - (i32.mul - (i32.const 2) - (i32.const 3) - ) - ) - ) - (drop - (if (result i32) - (i32.eq - (local.get $x) - (i32.const 1) - ) - (i32.add - (i32.const 2) - (i32.const 3) - ) - (i32.add - (i32.const 2) - (i32.const 3) - ) - ) - ) - ) - (func $if-one-side (result i32) - (local $x i32) - (local.set $x - (if (result i32) - (i32.const 1) - (i32.const 2) - (local.get $x) - ) - ) - (local.get $x) - ) - (func $if-one-side-b (result i32) - (local $x i32) - (local.set $x - (if (result i32) - (i32.const 1) - (local.get $x) - (i32.const 2) - ) - ) - (local.get $x) - ) - (func $if-one-side-tee-etc (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $x i32) - (local $y i32) - (local $z i32) - (drop - (call $if-one-side-tee-etc - (local.tee $x - (if (result i32) - (i32.const -3) - (i32.const -4) - (local.get $x) - ) - ) - ) - ) - (i32.const 0) - ) - (func $ifs-copies-recursive (param $20 i32) (result i32) - (local.set $20 - (if (result i32) - (i32.const 1) - (if (result i32) - (i32.const 2) - (if (result i32) - (i32.const 3) - (i32.const 4) - (local.get $20) - ) - (local.get $20) - ) - (local.get $20) - ) - ) - (local.get $20) - ) - (func $if-copy1 - (local $x i32) - (local $y i32) - (loop $top - (local.set $x - (if (result i32) - (i32.const 1) - (local.get $x) - (local.get $y) - ) - ) - (br $top) - ) - ) - (func $if-copy3 - (local $x i32) - (local $y i32) - (loop $top - (local.set $x - (if (result i32) - (i32.const 1) - (unreachable) - (local.get $x) - ) - ) - (br $top) - ) - ) - (func $if-copy4 - (local $x i32) - (local $y i32) - (loop $top - (local.set $x - (if (result i32) - (i32.const 1) - (unreachable) - (local.get $y) - ) - ) - (br $top) - ) - ) - (func $if-copy-tee - (local $x i32) - (local $y i32) - (loop $top - (drop - (local.tee $x - (if (result i32) - (i32.const 1) - (local.get $x) - (i32.const 2) - ) - ) - ) - (br $top) - ) - ) - (func $loop-end-set (param $x i32) (result i32) - (loop $loop - (nop) - (if - (local.get $x) - (br $loop) - (local.set $x (i32.const 1)) - ) - ) - (local.get $x) - ) - (func $loop-end-value (param $x i32) (result i32) - (loop $loop (result i32) - (nop) - (if (result i32) - (local.get $x) - (br $loop) - (i32.const 1) - ) - ) - ) - (func $do-not-flow-values-through-unreachable-code (result i32) - (block - (unreachable) - (block $A - (if - (i32.const 0) - (return - (i32.const 0) ;; seems to flow out, but we are in unreachable code, and do not actually reach anywhere - ) - (br $A) ;; can be a nop - ) - ) - ) - ) - (func $do-not-flow-values-through-unreachable-code-b (result i32) - (loop - (unreachable) - (block $A - (if - (i32.const 0) - (return - (i32.const 0) - ) - (br $A) - ) - ) - ) - ) - (func $if_br_if - (local $0 i32) - (block $label$1 - (if - (local.tee $0 ;; note side effect; it's ok - (i32.const 1024) - ) - (br_if $label$1 - (i32.eqz - (i32.const -4) - ) - ) - ) - (if - (i32.const 1025) - (br_if $label$1 - (i32.eqz - (i32.const -5) - ) - ) - ) - (if - (local.tee $0 ;; note side effect; it's ok - (i32.const 1025) - ) - (br_if $label$1 - (i32.eqz - (i32.const -6) - ) - ) - ) - (if - (i32.const 1026) - (br_if $label$1 - (local.tee $0 ;; but here it is *not* ok - (i32.const -7) - ) - ) - ) - (i32.store - (i32.const 1024) - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - ) - ) -) - diff -Nru binaryen-91/test/passes/remove-unused-module-elements_all-features.txt binaryen-99/test/passes/remove-unused-module-elements_all-features.txt --- binaryen-91/test/passes/remove-unused-module-elements_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-module-elements_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -10,32 +10,32 @@ (export "other1" (func $other1)) (export "other2" (func $other2)) (start $start) - (func $start (; 0 ;) + (func $start (call $called0) ) - (func $called0 (; 1 ;) + (func $called0 (call $called1) ) - (func $called1 (; 2 ;) + (func $called1 (nop) ) - (func $called_indirect (; 3 ;) + (func $called_indirect (nop) ) - (func $exported (; 4 ;) + (func $exported (call $called2) ) - (func $called2 (; 5 ;) + (func $called2 (call $called2) (call $called3) ) - (func $called3 (; 6 ;) + (func $called3 (call $called4) ) - (func $called4 (; 7 ;) + (func $called4 (call $called3) ) - (func $other1 (; 8 ;) (param $0 i32) + (func $other1 (param $0 i32) (call_indirect (type $none_=>_none) (i32.const 0) ) @@ -75,7 +75,7 @@ ) ) ) - (func $other2 (; 9 ;) (param $0 i32) + (func $other2 (param $0 i32) (unreachable) ) ) @@ -85,7 +85,7 @@ ) (module (import "env" "memory" (memory $0 256)) - (import "env" "table" (table $0 1 funcref)) + (import "env" "table" (table $timport$0 1 funcref)) (export "mem" (memory $0)) (export "tab" (table $0)) ) @@ -93,18 +93,18 @@ (type $none_=>_none (func)) (import "env" "memory" (memory $0 256)) (data (i32.const 1) "hello, world!") - (import "env" "table" (table $0 1 funcref)) + (import "env" "table" (table $timport$0 1 funcref)) (elem (i32.const 0) $waka) - (func $waka (; 0 ;) + (func $waka (nop) ) ) (module (type $none_=>_none (func)) (import "env" "memory" (memory $0 256)) - (import "env" "table" (table $0 0 funcref)) + (import "env" "table" (table $timport$0 0 funcref)) (export "user" (func $user)) - (func $user (; 0 ;) + (func $user (drop (i32.load (i32.const 0) @@ -119,7 +119,7 @@ (type $none_=>_none (func)) (memory $0 (shared 23 256)) (export "user" (func $user)) - (func $user (; 0 ;) + (func $user (i32.store (i32.const 0) (i32.const 0) @@ -130,7 +130,7 @@ (type $none_=>_i32 (func (result i32))) (memory $0 (shared 23 256)) (export "user" (func $user)) - (func $user (; 0 ;) (result i32) + (func $user (result i32) (i32.atomic.rmw.add (i32.const 0) (i32.const 0) @@ -141,7 +141,7 @@ (type $none_=>_i32 (func (result i32))) (memory $0 (shared 23 256)) (export "user" (func $user)) - (func $user (; 0 ;) (result i32) + (func $user (result i32) (i32.atomic.rmw8.cmpxchg_u (i32.const 0) (i32.const 0) @@ -153,11 +153,11 @@ (type $none_=>_none (func)) (memory $0 (shared 23 256)) (export "user" (func $user)) - (func $user (; 0 ;) + (func $user (local $0 i32) (local $1 i64) (drop - (i32.atomic.wait + (memory.atomic.wait32 (local.get $0) (local.get $0) (local.get $1) @@ -169,8 +169,8 @@ (type $none_=>_i32 (func (result i32))) (memory $0 (shared 23 256)) (export "user" (func $user)) - (func $user (; 0 ;) (result i32) - (atomic.notify + (func $user (result i32) + (memory.atomic.notify (i32.const 0) (i32.const 0) ) @@ -180,7 +180,7 @@ (type $none_=>_i32 (func (result i32))) (memory $0 23 256) (export "user" (func $user)) - (func $user (; 0 ;) (result i32) + (func $user (result i32) (memory.grow (i32.const 0) ) @@ -190,7 +190,7 @@ (type $none_=>_i32 (func (result i32))) (import "env" "memory" (memory $0 256)) (export "user" (func $user)) - (func $user (; 0 ;) (result i32) + (func $user (result i32) (memory.grow (i32.const 0) ) @@ -200,7 +200,7 @@ (type $none_=>_i32 (func (result i32))) (memory $0 23 256) (export "user" (func $user)) - (func $user (; 0 ;) (result i32) + (func $user (result i32) (memory.size) ) ) @@ -208,11 +208,11 @@ (type $none_=>_none (func)) (import "env" "memory" (memory $0 256)) (data (global.get $memoryBase) "hello, world!") - (import "env" "table" (table $0 0 funcref)) + (import "env" "table" (table $timport$0 0 funcref)) (elem (global.get $tableBase) $waka) (import "env" "memoryBase" (global $memoryBase i32)) (import "env" "tableBase" (global $tableBase i32)) - (func $waka (; 0 ;) + (func $waka (nop) ) ) @@ -228,16 +228,16 @@ (export "one" (func $one)) (export "three" (func $three)) (export "exp_glob" (global $exp_glob)) - (func $one (; 1 ;) (result i32) + (func $one (result i32) (call $two) ) - (func $two (; 2 ;) (result i32) + (func $two (result i32) (global.get $int) ) - (func $three (; 3 ;) + (func $three (call $four) ) - (func $four (; 4 ;) + (func $four (global.set $set (i32.const 200) ) @@ -253,7 +253,7 @@ (module (type $none_=>_none (func)) (start $starter) - (func $starter (; 0 ;) + (func $starter (drop (i32.const 0) ) @@ -265,9 +265,9 @@ ) (module (type $f64_=>_f64 (func (param f64) (result f64))) - (import "env" "table" (table $0 6 6 funcref)) + (import "env" "table" (table $timport$0 6 6 funcref)) (elem (i32.const 0) $0) - (func $0 (; 0 ;) (param $var$0 f64) (result f64) + (func $0 (param $var$0 f64) (result f64) (if (result f64) (f64.eq (f64.const 1) @@ -287,15 +287,17 @@ (event $e-bronexn (attr 0) (param i32)) (export "e-export" (event $e-export)) (start $start) - (func $start (; 0 ;) + (func $start (local $exn exnref) (try - (throw $e-throw - (i32.const 0) + (do + (throw $e-throw + (i32.const 0) + ) ) (catch (local.set $exn - (exnref.pop) + (pop exnref) ) (drop (block $l0 (result i32) @@ -313,10 +315,10 @@ (module (type $none_=>_none (func)) (export "test" (func $test)) - (func $foo (; 0 ;) + (func $foo (nop) ) - (func $test (; 1 ;) + (func $test (drop (ref.func $foo) ) diff -Nru binaryen-91/test/passes/remove-unused-module-elements_all-features.wast binaryen-99/test/passes/remove-unused-module-elements_all-features.wast --- binaryen-91/test/passes/remove-unused-module-elements_all-features.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-module-elements_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -128,7 +128,7 @@ (local $0 i32) (local $1 i64) (drop - (i32.atomic.wait + (memory.atomic.wait32 (local.get $0) (local.get $0) (local.get $1) @@ -140,7 +140,7 @@ (memory $0 (shared 23 256)) (export "user" $user) (func $user (result i32) - (atomic.notify (i32.const 0) (i32.const 0)) + (memory.atomic.notify (i32.const 0) (i32.const 0)) ) ) (module ;; more use checks @@ -272,9 +272,11 @@ (start $start) (func $start (local $exn exnref) (; 0 ;) (try - (throw $e-throw (i32.const 0)) + (do + (throw $e-throw (i32.const 0)) + ) (catch - (local.set $exn (exnref.pop)) + (local.set $exn (pop exnref)) (drop (block $l0 (result i32) (rethrow diff -Nru binaryen-91/test/passes/remove-unused-names_code-folding_all-features.txt binaryen-99/test/passes/remove-unused-names_code-folding_all-features.txt --- binaryen-91/test/passes/remove-unused-names_code-folding_all-features.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-names_code-folding_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,1843 @@ +(module + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_exnref (func (result exnref))) + (event $e (attr 0) (param)) + (func $ifs + (if + (i32.const 0) + (nop) + ) + (block + (drop + (i32.const 0) + ) + (nop) + ) + (if + (i32.const 0) + (nop) + (unreachable) + ) + (drop + (block (result i32) + (drop + (i32.const 0) + ) + (i32.add + (i32.const 1) + (i32.const 2) + ) + ) + ) + (drop + (if (result i32) + (i32.const 0) + (i32.add + (i32.const 1) + (i32.const 2) + ) + (i32.add + (i32.const 1) + (i32.const 333333333) + ) + ) + ) + ) + (func $ifs-blocks + (block + (drop + (i32.const 0) + ) + (block + (nop) + ) + ) + (block + (if + (i32.const 0) + (unreachable) + (block + ) + ) + (nop) + ) + (block + (if + (i32.const 0) + (block + ) + (unreachable) + ) + (nop) + ) + (if + (i32.const 0) + (block + (nop) + (unreachable) + ) + (nop) + ) + (if + (i32.const 0) + (nop) + (block + (nop) + (unreachable) + ) + ) + ) + (func $ifs-blocks-big + (block + (drop + (i32.const 0) + ) + (block + (drop + (i32.add + (i32.const 1) + (i32.const 2) + ) + ) + ) + ) + (block + (if + (i32.const 0) + (unreachable) + (block + ) + ) + (drop + (i32.add + (i32.const 1) + (i32.const 2) + ) + ) + ) + (block + (if + (i32.const 0) + (block + ) + (unreachable) + ) + (drop + (i32.add + (i32.const 1) + (i32.const 2) + ) + ) + ) + (if + (i32.const 0) + (block + (drop + (i32.add + (i32.const 1) + (i32.const 2) + ) + ) + (unreachable) + ) + (drop + (i32.add + (i32.const 1) + (i32.const 2) + ) + ) + ) + (if + (i32.const 0) + (drop + (i32.add + (i32.const 1) + (i32.const 2) + ) + ) + (block + (drop + (i32.add + (i32.const 1) + (i32.const 2) + ) + ) + (unreachable) + ) + ) + ) + (func $ifs-blocks-long + (block + (if + (i32.const 1) + (block + (drop + (i32.const -1234) + ) + (drop + (i32.const -1000) + ) + ) + (drop + (i32.const 999) + ) + ) + (drop + (i32.const 1) + ) + (nop) + (unreachable) + ) + (drop + (block (result i32) + (if + (i32.const 2) + (block + (drop + (i32.const -1234) + ) + (drop + (i32.const -1000) + ) + ) + (drop + (i32.const 999) + ) + ) + (drop + (i32.const 1) + ) + (nop) + (unreachable) + (i32.const 2) + ) + ) + (drop + (block (result i32) + (if + (i32.const 3) + (block + (drop + (i32.const -1234) + ) + (drop + (i32.const -1000) + ) + ) + (drop + (i32.const 999) + ) + ) + (drop + (i32.const 1) + ) + (nop) + (i32.const 2) + ) + ) + ) + (func $if-worth-it-i-dunno + (block $folding-inner0 + (block + (if + (i32.const 0) + (if + (i32.const 0) + (block + (drop + (i32.const -1234) + ) + (drop + (i32.const -1000) + ) + (br $folding-inner0) + ) + (block + (drop + (i32.const 999) + ) + (drop + (i32.const 1) + ) + (br $folding-inner0) + ) + ) + ) + (if + (i32.const 0) + (block + (if + (i32.const 0) + (block + (drop + (i32.const -1234) + ) + (drop + (i32.const -1000) + ) + ) + (block + (drop + (i32.const 999) + ) + (drop + (i32.const 1) + ) + ) + ) + (unreachable) + (br $folding-inner0) + ) + ) + (if + (i32.const 0) + (block + (if + (i32.const 0) + (block + ) + (block + (drop + (i32.const 999) + ) + (drop + (i32.const 1) + ) + ) + ) + (br $folding-inner0) + ) + ) + (if + (i32.const 0) + (block + (if + (i32.const 0) + (block + (drop + (i32.const -1234) + ) + (drop + (i32.const -1000) + ) + ) + (block + ) + ) + (br $folding-inner0) + ) + ) + (block + (block + (if + (i32.const 9999) + (block + (drop + (i32.const -51234) + ) + (drop + (i32.const -51000) + ) + ) + (block + (drop + (i32.const 5999) + ) + (drop + (i32.const 51) + ) + ) + ) + (br $folding-inner0) + ) + ) + (drop + (block (result i32) + (block (result i32) + (if + (i32.const 9999) + (block + (drop + (i32.const -51234) + ) + (drop + (i32.const -51000) + ) + ) + (block + (drop + (i32.const 5999) + ) + (drop + (i32.const 51) + ) + ) + ) + (unreachable) + (i32.const 10) + ) + ) + ) + (block + (drop + (if (result i32) + (i32.const 9999) + (block (result i32) + (drop + (i32.const -51234) + ) + (drop + (i32.const -51000) + ) + (unreachable) + (i32.const 10) + ) + (block (result i32) + (drop + (i32.const 5999) + ) + (drop + (i32.const 51) + ) + (unreachable) + (i32.const 10) + ) + ) + ) + ) + ) + ) + (unreachable) + (unreachable) + ) + (func $no-grandparent + (if + (i32.const 9999) + (block + (drop + (i32.const -51234) + ) + (drop + (i32.const -51000) + ) + (unreachable) + (unreachable) + ) + (block + (drop + (i32.const 5999) + ) + (drop + (i32.const 51) + ) + (unreachable) + (unreachable) + ) + ) + ) + (func $yes-grandparent + (block + (if + (i32.const 9999) + (block + (drop + (i32.const -51234) + ) + (drop + (i32.const -51000) + ) + ) + (block + (drop + (i32.const 5999) + ) + (drop + (i32.const 51) + ) + ) + ) + (unreachable) + (unreachable) + ) + ) + (func $ifs-named-block (param $x i32) (param $y i32) (result i32) + (block $out + (block $out2 + (block + (drop + (local.get $x) + ) + (block + (br_if $out + (local.get $y) + ) + (nop) + ) + ) + (block + (if + (local.get $x) + (br_if $out + (local.get $y) + ) + (br_if $out2 + (local.get $y) + ) + ) + (nop) + ) + (if + (i32.const 1234) + (if + (local.get $x) + (block + (nop) + (br_if $out + (local.get $y) + ) + (nop) + ) + (block + (nop) + (br_if $out2 + (local.get $y) + ) + (nop) + ) + ) + ) + (if + (local.get $x) + (block $left + (br_if $left + (local.get $y) + ) + (nop) + ) + (block + (br_if $out + (local.get $y) + ) + (nop) + ) + ) + (if + (local.get $x) + (block + (br_if $out + (local.get $y) + ) + (nop) + ) + (block $right + (br_if $right + (local.get $y) + ) + (nop) + ) + ) + ) + (return + (i32.const 10) + ) + ) + (return + (i32.const 20) + ) + ) + (func $block + (block $x + (if + (i32.const 0) + (br $x) + ) + (if + (i32.const 0) + (br $x) + ) + (br $x) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + ) + (func $block2 + (block $x + (if + (i32.const 0) + (block + (drop + (i32.const 1) + ) + (drop + (i32.const 333333) + ) + (br $x) + ) + ) + (if + (i32.const 0) + (block + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + (br $x) + ) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + (br $x) + ) + ) + (func $block3 + (block $x + (if + (i32.const 0) + (block + (drop + (i32.const 1000) + ) + (br $x) + ) + ) + (if + (i32.const 0) + (block + (drop + (i32.const 2000) + ) + (drop + (i32.const 3000) + ) + (br $x) + ) + ) + (drop + (i32.const 4000) + ) + (drop + (i32.const 5000) + ) + (drop + (i32.const 6000) + ) + (br $x) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + ) + (func $mixture + (block $out + (block + (drop + (i32.const 1) + ) + (block + (drop + (i32.const 2) + ) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (br $out) + ) + ) + ) + (block $out2 + (block + (if + (i32.const 1) + (drop + (i32.const 3) + ) + (block + (drop + (i32.const 4) + ) + (drop + (i32.const 5) + ) + ) + ) + (drop + (i32.const 2) + ) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (br $out2) + ) + ) + (block + (block $out3 + (block + (drop + (i32.const 1) + ) + (block + (br $out3) + ) + ) + (block + (drop + (i32.const 1) + ) + (block + (br $out3) + ) + ) + (br $out3) + ) + (drop + (i32.const 2) + ) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + ) + ) + (func $block-corners + (block + (block $x + (if + (i32.const 0) + (br $x) + ) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + ) + (drop + (block $y (result i32) + (if + (i32.const 0) + (block + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + (br $y + (i32.const 3) + ) + ) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + (br $y + (i32.const 3) + ) + ) + ) + (drop + (block $z (result i32) + (if + (i32.const 0) + (block + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + (br $z + (i32.const 2) + ) + ) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + (i32.const 3) + ) + ) + (block $w + (if + (i32.const 0) + (block + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + (br_if $w + (i32.const 3) + ) + ) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + ) + (block $x1 + (if + (i32.const 0) + (block + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + (br $x1) + (nop) + ) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + ) + (block $side + (block $x2 + (br_table $x2 $side + (i32.const 0) + ) + (if + (i32.const 0) + (block + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + (br $x2) + ) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + ) + (block $x3 + (br_table $side $x3 + (i32.const 0) + ) + (if + (i32.const 0) + (block + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + (br $x3) + ) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + ) + ) + ) + (func $terminating + (block $folding-inner0 + (block + (if + (i32.const 1) + (br $folding-inner0) + ) + (if + (i32.const 2) + (br $folding-inner0) + ) + (if + (i32.const 3) + (br $folding-inner0) + ) + ) + (return) + ) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (unreachable) + ) + (func $terminating-unreachable + (block $folding-inner0 + (block + (if + (i32.const 1) + (br $folding-inner0) + ) + (if + (i32.const 2) + (br $folding-inner0) + ) + (if + (i32.const 3) + (br $folding-inner0) + ) + (unreachable) + ) + ) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (unreachable) + ) + (func $terminating-value (result i32) + (block $folding-inner0 + (return + (block (result i32) + (if + (i32.const 1) + (br $folding-inner0) + ) + (if + (i32.const 2) + (br $folding-inner0) + ) + (if + (i32.const 3) + (br $folding-inner0) + ) + (i32.const 4) + ) + ) + ) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (unreachable) + ) + (func $terminating-just-2 + (block $folding-inner0 + (block + (if + (i32.const 1) + (br $folding-inner0) + ) + (if + (i32.const 2) + (br $folding-inner0) + ) + (if + (i32.const 3) + (block + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (drop + (i32.const 10) + ) + (unreachable) + ) + ) + ) + (return) + ) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (unreachable) + ) + (func $terminating-shortness + (block $folding-inner1 + (block + (block $folding-inner0 + (block + (if + (i32.const 1) + (br $folding-inner0) + ) + (if + (i32.const 2) + (br $folding-inner1) + ) + (if + (i32.const 3) + (block + (drop + (i32.const 10) + ) + (br $folding-inner0) + ) + ) + ) + (return) + ) + (nop) + (br $folding-inner1) + ) + ) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (unreachable) + ) + (func $terminating-multiple-separate + (block $folding-inner1 + (block + (block $folding-inner0 + (block + (if + (i32.const 1) + (br $folding-inner0) + ) + (if + (i32.const 1) + (br $folding-inner0) + ) + (if + (i32.const 1) + (br $folding-inner1) + ) + (if + (i32.const 1) + (br $folding-inner1) + ) + ) + (return) + ) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (drop + (i32.const 1) + ) + (unreachable) + ) + ) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (drop + (i32.const 2) + ) + (unreachable) + ) + (func $terminating-just-worth-it + (block $folding-inner0 + (block + (if + (i32.const 1) + (br $folding-inner0) + ) + (if + (i32.const 2) + (br $folding-inner0) + ) + (if + (i32.const 3) + (br $folding-inner0) + ) + ) + (return) + ) + (nop) + (nop) + (nop) + (unreachable) + ) + (func $terminating-not-worth-it + (if + (i32.const 1) + (block + (nop) + (nop) + (unreachable) + ) + ) + (if + (i32.const 2) + (block + (nop) + (nop) + (unreachable) + ) + ) + (if + (i32.const 3) + (block + (nop) + (nop) + (unreachable) + ) + ) + ) + (func $terminating-return + (block $folding-inner0 + (block + (if + (i32.const 1) + (br $folding-inner0) + ) + (if + (i32.const 2) + (br $folding-inner0) + ) + (if + (i32.const 3) + (br $folding-inner0) + ) + ) + (return) + ) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (return) + ) + (func $terminating-return-value (result i32) + (block $folding-inner0 + (block + (if + (i32.const 1) + (br $folding-inner0) + ) + (if + (i32.const 2) + (br $folding-inner0) + ) + (if + (i32.const 3) + (br $folding-inner0) + ) + (if + (i32.const 3) + (block + (nop) + (return + (i32.add + (i32.const 111111111) + (i32.const 2222222) + ) + ) + ) + ) + (return + (i32.const 1234) + ) + ) + ) + (nop) + (return + (i32.add + (i32.const 1) + (i32.const 2) + ) + ) + ) + (func $terminating-fallthrough-value (result i32) + (block $folding-inner0 + (return + (block (result i32) + (if + (i32.const 1) + (br $folding-inner0) + ) + (if + (i32.const 2) + (br $folding-inner0) + ) + (if + (i32.const 3) + (br $folding-inner0) + ) + (if + (i32.const 3) + (block + (nop) + (return + (i32.add + (i32.const 111111111) + (i32.const 2222222) + ) + ) + ) + ) + (i32.const 1234) + ) + ) + ) + (nop) + (return + (i32.add + (i32.const 1) + (i32.const 2) + ) + ) + ) + (func $big-return (result i32) + (block $folding-inner0 + (block + (if + (i32.const 1) + (br $folding-inner0) + ) + (if + (i32.const 2) + (br $folding-inner0) + ) + (if + (i32.const 3) + (br $folding-inner0) + ) + (if + (i32.const 4) + (br $folding-inner0) + ) + (if + (i32.const 5) + (br $folding-inner0) + ) + (if + (i32.const 6) + (br $folding-inner0) + ) + (unreachable) + ) + ) + (return + (i32.add + (i32.const 1) + (i32.const 2) + ) + ) + ) + (func $return-mix (result i32) + (block $folding-inner0 + (block + (if + (i32.const 1) + (br $folding-inner0) + ) + (if + (i32.const 2) + (br $folding-inner0) + ) + (if + (i32.const 3) + (br $folding-inner0) + ) + (if + (i32.const 4) + (br $folding-inner0) + ) + (if + (i32.const 3) + (return + (i32.add + (i32.const 1) + (i32.const 234567) + ) + ) + ) + (br $folding-inner0) + ) + ) + (return + (i32.add + (i32.const 1) + (i32.const 2) + ) + ) + ) + (func $just-unreachable + (unreachable) + ) + (func $just-return (result i32) + (return + (i32.add + (i32.const 1) + (i32.const 2) + ) + ) + ) + (func $drop-if-with-value-but-unreachable + (if + (i32.const 0) + (nop) + ) + (block + (drop + (i32.const 0) + ) + (block + (nop) + ) + ) + (if + (i32.const 0) + (nop) + (unreachable) + ) + (nop) + (drop + (block (result i32) + (drop + (unreachable) + ) + (block (result i32) + (i32.add + (i32.const 1) + (i32.const 2) + ) + ) + ) + ) + (drop + (if (result i32) + (i32.const 0) + (i32.add + (i32.const 1) + (i32.const 2) + ) + (i32.add + (i32.const 1) + (i32.const 333333333) + ) + ) + ) + ) + (func $nested-control-flow + (block $out + (block + (block $x + (if + (i32.const 0) + (br $x) + ) + (if + (i32.const 0) + (br $x) + ) + (br $x) + ) + (if + (i32.const 1) + (br $out) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + ) + (drop + (i32.const 3) + ) + ) + ) + (func $nested-control-flow-dangerous + (block $folding-inner0 + (block $out + (block + (if + (i32.const 0) + (block + (if + (i32.const 1) + (br $out) + ) + (br $folding-inner0) + ) + ) + (if + (i32.const 0) + (block + (if + (i32.const 1) + (br $out) + ) + (br $folding-inner0) + ) + ) + (if + (i32.const 1) + (br $out) + ) + (br $folding-inner0) + ) + (drop + (i32.const 3) + ) + ) + (return) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + (return) + ) + (func $nested-control-flow-dangerous-but-ok + (block $folding-inner0 + (block + (block $middle + (block + (if + (i32.const 0) + (block + (if + (i32.add + (i32.const 0) + (i32.const 1) + ) + (br $middle) + ) + (br $folding-inner0) + ) + ) + (if + (i32.const 0) + (block + (if + (i32.add + (i32.const 0) + (i32.const 1) + ) + (br $middle) + ) + (br $folding-inner0) + ) + ) + (if + (i32.add + (i32.const 0) + (i32.const 1) + ) + (br $middle) + ) + (br $folding-inner0) + ) + ) + (drop + (i32.const 3) + ) + ) + (return) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + (return) + ) + (func $nested-control-flow-dangerous-but-ok-b + (block $out + (block $middle + (block + (if + (i32.const 0) + (block + (if + (i32.add + (i32.const 0) + (i32.const 1) + ) + (br $middle) + ) + (br $out) + ) + ) + (if + (i32.const 0) + (block + (if + (i32.add + (i32.const 0) + (i32.const 1) + ) + (br $middle) + ) + (br $out) + ) + ) + (if + (i32.add + (i32.const 0) + (i32.const 1) + ) + (br $middle) + ) + ) + ) + (unreachable) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + (drop + (i32.const 3) + ) + (drop + (i32.const 4) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + (drop + (i32.const 3) + ) + (drop + (i32.const 4) + ) + ) + (func $nested-control-flow-dangerous-but-ok-c + (block $x + (block + (block $out + (block + (if + (i32.const 0) + (br $out) + ) + (if + (i32.const 0) + (br $out) + ) + (br $out) + ) + (unreachable) + ) + (if + (i32.add + (i32.const 0) + (i32.const 1) + ) + (br $x) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + ) + (unreachable) + ) + (drop + (i32.const 5) + ) + ) + (func $nested-control-flow-dangerous-but-ok-d + (block + (block $out + (block + (if + (i32.const 0) + (br $out) + ) + (if + (i32.const 0) + (br $out) + ) + (br $out) + ) + ) + (block $x + (if + (i32.add + (i32.const 0) + (i32.const 1) + ) + (br $x) + ) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + ) + (drop + (i32.const 3) + ) + ) + (func $if-suffix (param $x i32) (result i32) + (block + (if + (local.get $x) + (block + ) + (drop + (call $if-suffix + (i32.const -1) + ) + ) + ) + (local.set $x + (i32.const 1) + ) + ) + (block (result i32) + (if + (local.get $x) + (block + ) + (drop + (call $if-suffix + (i32.const -2) + ) + ) + ) + (i32.const 2) + ) + ) + (func $exnref_pop-test + (local $exn exnref) + (block $folding-inner0 + (try + (do + (try + (do + (nop) + ) + (catch + (local.set $exn + (pop exnref) + ) + (br $folding-inner0) + ) + ) + ) + (catch + (local.set $exn + (pop exnref) + ) + (br $folding-inner0) + ) + ) + (return) + ) + (drop + (i32.const 111) + ) + (drop + (i32.const 222) + ) + (drop + (i32.const 333) + ) + (unreachable) + ) + (func $br_on_exn-target-block + (local $exn exnref) + (block $x + (if + (i32.const 0) + (block + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + (br $x) + ) + ) + (if + (i32.const 0) + (block + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + (br $x) + ) + ) + (drop + (br_on_exn $x $e + (local.get $exn) + ) + ) + (drop + (i32.const 1) + ) + (drop + (i32.const 2) + ) + (br $x) + ) + ) + (func $foo + (nop) + ) + (func $try-call-optimize-terminating-tails (result exnref) + (try + (do + (call $foo) + (call $foo) + (call $foo) + (call $foo) + (return + (ref.null exn) + ) + ) + (catch + (drop + (pop exnref) + ) + (call $foo) + (call $foo) + (call $foo) + (call $foo) + (return + (ref.null exn) + ) + ) + ) + (ref.null exn) + ) + (func $try-call-optimize-expression-tails + (local $exn exnref) + (block $x + (try + (do + (call $foo) + (call $foo) + (call $foo) + (br $x) + ) + (catch + (local.set $exn + (pop exnref) + ) + (call $foo) + (call $foo) + (call $foo) + (br $x) + ) + ) + (unreachable) + ) + ) +) diff -Nru binaryen-91/test/passes/remove-unused-names_code-folding_all-features.wast binaryen-99/test/passes/remove-unused-names_code-folding_all-features.wast --- binaryen-91/test/passes/remove-unused-names_code-folding_all-features.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-names_code-folding_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,1292 @@ +(module + (func $ifs + (if (i32.const 0) (nop)) + (if (i32.const 0) (nop) (nop)) + (if (i32.const 0) (nop) (unreachable)) + (drop + (if (result i32) (i32.const 0) + (i32.add (i32.const 1) (i32.const 2)) + (i32.add (i32.const 1) (i32.const 2)) + ) + ) + (drop + (if (result i32) (i32.const 0) + (i32.add (i32.const 1) (i32.const 2)) + (i32.add (i32.const 1) (i32.const 333333333)) + ) + ) + ) + (func $ifs-blocks + (if (i32.const 0) + (block + (nop) + ) + (block + (nop) + ) + ) + (if (i32.const 0) + (block + (unreachable) + (nop) + ) + (block + (nop) + ) + ) + (if (i32.const 0) + (block + (nop) + ) + (block + (unreachable) + (nop) + ) + ) + (if (i32.const 0) + (block + (nop) + (unreachable) + ) + (block + (nop) + ) + ) + (if (i32.const 0) + (block + (nop) + ) + (block + (nop) + (unreachable) + ) + ) + ) + (func $ifs-blocks-big + (if (i32.const 0) + (block + (drop (i32.add (i32.const 1) (i32.const 2))) + ) + (block + (drop (i32.add (i32.const 1) (i32.const 2))) + ) + ) + (if (i32.const 0) + (block + (unreachable) + (drop (i32.add (i32.const 1) (i32.const 2))) + ) + (block + (drop (i32.add (i32.const 1) (i32.const 2))) + ) + ) + (if (i32.const 0) + (block + (drop (i32.add (i32.const 1) (i32.const 2))) + ) + (block + (unreachable) + (drop (i32.add (i32.const 1) (i32.const 2))) + ) + ) + (if (i32.const 0) + (block + (drop (i32.add (i32.const 1) (i32.const 2))) + (unreachable) + ) + (block + (drop (i32.add (i32.const 1) (i32.const 2))) + ) + ) + (if (i32.const 0) + (block + (drop (i32.add (i32.const 1) (i32.const 2))) + ) + (block + (drop (i32.add (i32.const 1) (i32.const 2))) + (unreachable) + ) + ) + ) + (func $ifs-blocks-long + (if (i32.const 1) + (block + (drop (i32.const -1234)) + (drop (i32.const -1000)) + (drop (i32.const 1)) + (nop) + (unreachable) + ) + (block + (drop (i32.const 999)) + (drop (i32.const 1)) + (nop) + (unreachable) + ) + ) + (drop + (if (result i32) (i32.const 2) + (block (result i32) + (drop (i32.const -1234)) + (drop (i32.const -1000)) + (drop (i32.const 1)) + (nop) + (unreachable) + (i32.const 2) + ) + (block (result i32) + (drop (i32.const 999)) + (drop (i32.const 1)) + (nop) + (unreachable) + (i32.const 2) + ) + ) + ) + (drop + (if (result i32) (i32.const 3) + (block (result i32) + (drop (i32.const -1234)) + (drop (i32.const -1000)) + (drop (i32.const 1)) + (nop) + (i32.const 2) + ) + (block (result i32) + (drop (i32.const 999)) + (drop (i32.const 1)) + (nop) + (i32.const 2) + ) + ) + ) + ) + (func $if-worth-it-i-dunno + ;; just 2, so not worth it + (if (i32.const 0) ;; (put them in ifs, so no block outside which would make us more confident in creating a block in hopes it would vanish) + (if (i32.const 0) + (block + (drop (i32.const -1234)) + (drop (i32.const -1000)) + (unreachable) + (unreachable) + ) + (block + (drop (i32.const 999)) + (drop (i32.const 1)) + (unreachable) + (unreachable) + ) + ) + ) + ;; 3, so why not + (if (i32.const 0) ;; (put them in ifs, so no block outside which would make us more confident in creating a block in hopes it would vanish) + (if (i32.const 0) + (block + (drop (i32.const -1234)) + (drop (i32.const -1000)) + (unreachable) + (unreachable) + (unreachable) + ) + (block + (drop (i32.const 999)) + (drop (i32.const 1)) + (unreachable) + (unreachable) + (unreachable) + ) + ) + ) + ;; just 2, but we'll empty out a block + (if (i32.const 0) ;; (put them in ifs, so no block outside which would make us more confident in creating a block in hopes it would vanish) + (if (i32.const 0) + (block + (unreachable) + (unreachable) + ) + (block + (drop (i32.const 999)) + (drop (i32.const 1)) + (unreachable) + (unreachable) + ) + ) + ) + ;; just 2, but we'll empty out a block + (if (i32.const 0) ;; (put them in ifs, so no block outside which would make us more confident in creating a block in hopes it would vanish) + (if (i32.const 0) + (block + (drop (i32.const -1234)) + (drop (i32.const -1000)) + (unreachable) + (unreachable) + ) + (block + (unreachable) + (unreachable) + ) + ) + ) + ;; just two, but on a block, so we hope to merge, and can optimize here + (block $a-holding-block + (if (i32.const 9999) + (block + (drop (i32.const -51234)) + (drop (i32.const -51000)) + (unreachable) + (unreachable) + ) + (block + (drop (i32.const 5999)) + (drop (i32.const 51)) + (unreachable) + (unreachable) + ) + ) + ) + ;; with value + (drop + (block $b-holding-block (result i32) + (if (result i32) (i32.const 9999) + (block (result i32) + (drop (i32.const -51234)) + (drop (i32.const -51000)) + (unreachable) + (i32.const 10) + ) + (block (result i32) + (drop (i32.const 5999)) + (drop (i32.const 51)) + (unreachable) + (i32.const 10) + ) + ) + ) + ) + ;; oops, something in between + (block $c-holding-block + (drop + (if (result i32) (i32.const 9999) + (block (result i32) + (drop (i32.const -51234)) + (drop (i32.const -51000)) + (unreachable) + (i32.const 10) + ) + (block (result i32) + (drop (i32.const 5999)) + (drop (i32.const 51)) + (unreachable) + (i32.const 10) + ) + ) + ) + ) + ) + (func $no-grandparent + ;; if we had a parent block, we might optimize this + (if (i32.const 9999) + (block + (drop (i32.const -51234)) + (drop (i32.const -51000)) + (unreachable) + (unreachable) + ) + (block + (drop (i32.const 5999)) + (drop (i32.const 51)) + (unreachable) + (unreachable) + ) + ) + ) + (func $yes-grandparent + (block + (if (i32.const 9999) + (block + (drop (i32.const -51234)) + (drop (i32.const -51000)) + (unreachable) + (unreachable) + ) + (block + (drop (i32.const 5999)) + (drop (i32.const 51)) + (unreachable) + (unreachable) + ) + ) + ) + ) + (func $ifs-named-block (param $x i32) (param $y i32) (result i32) + (block $out + (block $out2 + (if (local.get $x) + (block + (br_if $out (local.get $y i32)) + (nop) + ) + (block + (br_if $out (local.get $y i32)) + (nop) + ) + ) + (if (local.get $x) + (block + (br_if $out (local.get $y i32)) + (nop) + ) + (block + (br_if $out2 (local.get $y i32)) + (nop) + ) + ) + (if (i32.const 1234) + (if (local.get $x) + (block + (nop) + (br_if $out (local.get $y i32)) + (nop) + ) + (block + (nop) + (br_if $out2 (local.get $y i32)) + (nop) + ) + ) + ) + (if (local.get $x) + (block $left + (br_if $left (local.get $y i32)) + (nop) + ) + (block + (br_if $out (local.get $y i32)) + (nop) + ) + ) + (if (local.get $x) + (block + (br_if $out (local.get $y i32)) + (nop) + ) + (block $right + (br_if $right (local.get $y i32)) + (nop) + ) + ) + ) + (return (i32.const 10)) + ) + (return (i32.const 20)) + ) + (func $block + (block $x + (if (i32.const 0) + (block + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $x) + ) + ) + (if (i32.const 0) + (block + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $x) + ) + ) + ;; no fallthrough, another thing to merge + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $x) + ) + ) + (func $block2 + (block $x + (if (i32.const 0) + (block + (drop (i32.const 1)) + (drop (i32.const 333333)) + (br $x) + ) + ) + (if (i32.const 0) + (block + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $x) + ) + ) + ;; no fallthrough, another thing to merge + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $x) + ) + ) + (func $block3 + (block $x + (if (i32.const 0) + (block + (drop (i32.const 1000)) + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $x) + ) + ) + (if (i32.const 0) + (block + (drop (i32.const 2000)) + (drop (i32.const 3000)) + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $x) + ) + ) + (drop (i32.const 4000)) + (drop (i32.const 5000)) + (drop (i32.const 6000)) + ;; no fallthrough, another thing to merge + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $x) + ) + ) + (func $mixture + (block $out ;; then we reach the block, and the tail infos are stale, should ignore + (if (i32.const 1) ;; then we optimize the if, pushing those brs outside! + (block + (drop (i32.const 2)) ;; first we note the block tails for $out + (nop) (nop) (nop) (nop) (nop) (nop) ;; totally worth it + (br $out) + ) + (block + (drop (i32.const 2)) + (nop) (nop) (nop) (nop) (nop) (nop) + (br $out) + ) + ) + ) + (block $out2 + (if (i32.const 1) + (block + (drop (i32.const 3)) ;; leave something + (drop (i32.const 2)) + (nop) (nop) (nop) (nop) (nop) (nop) + (br $out2) + ) + (block + (drop (i32.const 4)) ;; leave something + (drop (i32.const 5)) ;; leave something + (drop (i32.const 2)) + (nop) (nop) (nop) (nop) (nop) (nop) + (br $out2) + ) + ) + ) + ;; now a case where do **do** want to fold for the block (which we can only do in a later pass) + (block $out3 + (if (i32.const 1) + (block + (drop (i32.const 2)) + (nop) (nop) (nop) (nop) (nop) (nop) + (br $out3) + ) + (block + (drop (i32.const 2)) + (nop) (nop) (nop) (nop) (nop) (nop) + (br $out3) + ) + ) + (if (i32.const 1) + (block + (drop (i32.const 2)) + (nop) (nop) (nop) (nop) (nop) (nop) + (br $out3) + ) + (block + (drop (i32.const 2)) + (nop) (nop) (nop) (nop) (nop) (nop) + (br $out3) + ) + ) + (drop (i32.const 2)) + (nop) (nop) (nop) (nop) (nop) (nop) + (br $out3) + ) + ) + (func $block-corners + ;; these should be merged + (block $x + (if (i32.const 0) + (block + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $x) + ) + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + ) + ;; these should not + ;; values + (drop + (block $y (result i32) + (if (i32.const 0) + (block + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $y (i32.const 3)) + ) + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $y (i32.const 3)) + ) + ) + (drop + (block $z (result i32) + (if (i32.const 0) + (block + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $z (i32.const 2)) + ) + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + (i32.const 3) + ) + ) + ;; condition + (block $w + (if (i32.const 0) + (block + (drop (i32.const 1)) + (drop (i32.const 2)) + (br_if $w (i32.const 3)) + ) + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + ) + ;; not at the end + (block $x1 + (if (i32.const 0) + (block + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $x1) + (nop) + ) + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + ) + ;; switches + (block $side + (block $x2 + (br_table $x2 $side (i32.const 0)) + (if (i32.const 0) + (block + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $x2) + ) + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + ) + (block $x3 + (br_table $side $x3 (i32.const 0)) + (if (i32.const 0) + (block + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $x3) + ) + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + ) + ) + ) + (func $terminating + (if (i32.const 1) + (block + (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) + (unreachable) + ) + ) + (if (i32.const 2) + (block + (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) + (unreachable) + ) + ) + (if (i32.const 3) + (block + (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) + (unreachable) + ) + ) + ) + (func $terminating-unreachable + (if (i32.const 1) + (block + (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) + (unreachable) + ) + ) + (if (i32.const 2) + (block + (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) + (unreachable) + ) + ) + (if (i32.const 3) + (block + (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) + (unreachable) + ) + ) + (unreachable) + ) + (func $terminating-value (result i32) + (if (i32.const 1) + (block + (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) + (unreachable) + ) + ) + (if (i32.const 2) + (block + (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) + (unreachable) + ) + ) + (if (i32.const 3) + (block + (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) + (unreachable) + ) + ) + (i32.const 4) + ) + (func $terminating-just-2 + (if (i32.const 1) + (block + (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) + (unreachable) + ) + ) + (if (i32.const 2) + (block + (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) + (unreachable) + ) + ) + (if (i32.const 3) + (block + (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) + (drop (i32.const 10)) + (unreachable) + ) + ) + ) + (func $terminating-shortness + (if (i32.const 1) + (block + (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) + (unreachable) + ) + ) + (if (i32.const 2) + (block + (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) ;; shorter. we do the two long ones greedily, then the merged one and this can also be opted + (unreachable) + ) + ) + (if (i32.const 3) + (block + (drop (i32.const 10)) + (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) + (unreachable) + ) + ) + ) + (func $terminating-multiple-separate + (if (i32.const 1) + (block + (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) + (drop (i32.const 1)) + (unreachable) + ) + ) + (if (i32.const 1) + (block + (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) + (drop (i32.const 1)) + (unreachable) + ) + ) + (if (i32.const 1) + (block + (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) + (drop (i32.const 2)) + (unreachable) + ) + ) + (if (i32.const 1) + (block + (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) + (drop (i32.const 2)) + (unreachable) + ) + ) + ) + (func $terminating-just-worth-it + (if (i32.const 1) + (block + (nop) (nop) (nop) + (unreachable) + ) + ) + (if (i32.const 2) + (block + (nop) (nop) (nop) + (unreachable) + ) + ) + (if (i32.const 3) + (block + (nop) (nop) (nop) + (unreachable) + ) + ) + ) + (func $terminating-not-worth-it + (if (i32.const 1) + (block + (nop) (nop) + (unreachable) + ) + ) + (if (i32.const 2) + (block + (nop) (nop) + (unreachable) + ) + ) + (if (i32.const 3) + (block + (nop) (nop) + (unreachable) + ) + ) + ) + (func $terminating-return + (if (i32.const 1) + (block + (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) + (return) + ) + ) + (if (i32.const 2) + (block + (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) + (return) + ) + ) + (if (i32.const 3) + (block + (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) + (return) + ) + ) + ) + (func $terminating-return-value (result i32) + (if (i32.const 1) + (block + (nop) + (return (i32.add (i32.const 1) (i32.const 2))) + ) + ) + (if (i32.const 2) + (block + (nop) + (return (i32.add (i32.const 1) (i32.const 2))) + ) + ) + (if (i32.const 3) + (block + (nop) + (return (i32.add (i32.const 1) (i32.const 2))) + ) + ) + (if (i32.const 3) + (block + (nop) + (return (i32.add (i32.const 111111111) (i32.const 2222222))) + ) + ) + (return (i32.const 1234)) + ) + (func $terminating-fallthrough-value (result i32) + (if (i32.const 1) + (block + (nop) + (return (i32.add (i32.const 1) (i32.const 2))) + ) + ) + (if (i32.const 2) + (block + (nop) + (return (i32.add (i32.const 1) (i32.const 2))) + ) + ) + (if (i32.const 3) + (block + (nop) + (return (i32.add (i32.const 1) (i32.const 2))) + ) + ) + (if (i32.const 3) + (block + (nop) + (return (i32.add (i32.const 111111111) (i32.const 2222222))) + ) + ) + (i32.const 1234) + ) + (func $big-return (result i32) + (if (i32.const 1) (return (i32.add (i32.const 1) (i32.const 2)))) + (if (i32.const 2) (return (i32.add (i32.const 1) (i32.const 2)))) + (if (i32.const 3) (return (i32.add (i32.const 1) (i32.const 2)))) + (if (i32.const 4) (return (i32.add (i32.const 1) (i32.const 2)))) + (if (i32.const 5) (return (i32.add (i32.const 1) (i32.const 2)))) + (if (i32.const 6) (return (i32.add (i32.const 1) (i32.const 2)))) + (unreachable) + ) + (func $return-mix (result i32) + (if (i32.const 1) (return (i32.add (i32.const 1) (i32.const 2)))) + (if (i32.const 2) (return (i32.add (i32.const 1) (i32.const 2)))) + (if (i32.const 3) (return (i32.add (i32.const 1) (i32.const 2)))) + (if (i32.const 4) (return (i32.add (i32.const 1) (i32.const 2)))) + (if (i32.const 3) (return (i32.add (i32.const 1) (i32.const 234567)))) + (return (i32.add (i32.const 1) (i32.const 2))) ;; on a block, and the toplevel in fact + ) + (func $just-unreachable + (unreachable) + ) + (func $just-return (result i32) + (return (i32.add (i32.const 1) (i32.const 2))) ;; on a block, and the toplevel in fact + ) + (func $drop-if-with-value-but-unreachable + (block $label$0 + (if + (i32.const 0) + (block $label$1 + (nop) + ) + ) + (if + (i32.const 0) + (block $label$2 + (nop) + ) + (block $label$3 + (nop) + ) + ) + (if + (i32.const 0) + (block $label$4 + (nop) + ) + (block $label$5 + (unreachable) + ) + ) + (nop) + (drop + (if (result i32) ;; we replace this if, must replace with same type! + (unreachable) + (block $label$6 (result i32) + (i32.add + (i32.const 1) + (i32.const 2) + ) + ) + (block $label$7 (result i32) + (i32.add + (i32.const 1) + (i32.const 2) + ) + ) + ) + ) + (drop + (if (result i32) + (i32.const 0) + (block $label$8 (result i32) + (i32.add + (i32.const 1) + (i32.const 2) + ) + ) + (block $label$9 (result i32) + (i32.add + (i32.const 1) + (i32.const 333333333) + ) + ) + ) + ) + ) + ) + (func $nested-control-flow + (block $out + (block $x + (if (i32.const 0) + (block + (if (i32.const 1) + (br $out) + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $x) + ) + ) + (if (i32.const 0) + (block + (if (i32.const 1) + (br $out) + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $x) + ) + ) + ;; no fallthrough, another thing to merge + (if (i32.const 1) + (br $out) + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $x) + ) + (drop (i32.const 3)) + ) + ) + (func $nested-control-flow-dangerous + (block $out + (block $x + (if (i32.const 0) + (block + (if (i32.const 1) + (br $out) ;; this br cannot be moved out of the $out block! + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + (return) + ) + ) + (if (i32.const 0) + (block + (if (i32.const 1) + (br $out) + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + (return) + ) + ) + ;; no fallthrough, another thing to merge + (if (i32.const 1) + (br $out) + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + (return) + ) + (drop (i32.const 3)) + ) + ) + (func $nested-control-flow-dangerous-but-ok + (block $out + (block $middle + (block $x + (if (i32.const 0) + (block + (if (i32.add (i32.const 0) (i32.const 1)) + (br $middle) + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + (return) + ) + ) + (if (i32.const 0) + (block + (if (i32.add (i32.const 0) (i32.const 1)) + (br $middle) + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + (return) + ) + ) + ;; no fallthrough, another thing to merge + (if (i32.add (i32.const 0) (i32.const 1)) + (br $middle) + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + (return) + ) + ) + (drop (i32.const 3)) + ) + ) + (func $nested-control-flow-dangerous-but-ok-b + (block $out + (block $middle + (block $x + (if (i32.const 0) + (block + (if (i32.add (i32.const 0) (i32.const 1)) + (br $middle) ;; this is dangerous - we branch to middle with is inside out, so we can't move this out of out + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + (drop (i32.const 3)) + (drop (i32.const 4)) + (drop (i32.const 1)) + (drop (i32.const 2)) + (drop (i32.const 3)) + (drop (i32.const 4)) + (br $out) + ) + ) + (if (i32.const 0) + (block + (if (i32.add (i32.const 0) (i32.const 1)) + (br $middle) + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + (drop (i32.const 3)) + (drop (i32.const 4)) + (drop (i32.const 1)) + (drop (i32.const 2)) + (drop (i32.const 3)) + (drop (i32.const 4)) + (br $out) + ) + ) + ;; no fallthrough, another thing to merge + (if (i32.add (i32.const 0) (i32.const 1)) + (br $middle) + ) + ) + ) + (unreachable) ;; no fallthrough + ) + ) + (func $nested-control-flow-dangerous-but-ok-c + (block $x + (block $out + (block $middle + (if (i32.const 0) + (block + (if (i32.add (i32.const 0) (i32.const 1)) + (br $x) ;; this is ok - we branch to x which is outside of out + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $out) + ) + ) + (if (i32.const 0) + (block + (if (i32.add (i32.const 0) (i32.const 1)) + (br $x) + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $out) + ) + ) + ;; no fallthrough, another thing to merge + (if (i32.add (i32.const 0) (i32.const 1)) + (br $x) + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $out) + ) + (unreachable) ;; no fallthrough + ) + (unreachable) ;; no fallthrough + ) + (drop (i32.const 5)) + ) + (func $nested-control-flow-dangerous-but-ok-d + (block $out + (block $middle + (if (i32.const 0) + (block + (block $x + (if (i32.add (i32.const 0) (i32.const 1)) + (br $x) ;; this is ok - we branch to x which is nested in us + ) + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $out) + ) + ) + (if (i32.const 0) + (block + (block $x + (if (i32.add (i32.const 0) (i32.const 1)) + (br $x) ;; this is ok - we branch to x which is nested in us + ) + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $out) + ) + ) + ;; no fallthrough, another thing to merge + (block $x + (if (i32.add (i32.const 0) (i32.const 1)) + (br $x) ;; this is ok - we branch to x which is nested in us + ) + ) + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $out) + ) + ) + (drop (i32.const 3)) + ) + (func $if-suffix (param $x i32) (result i32) + (if + (local.get $x) + (local.set $x (i32.const 1)) + (block + (drop (call $if-suffix (i32.const -1))) + (local.set $x (i32.const 1)) + ) + ) + (if (result i32) + (local.get $x) + (i32.const 2) + (block (result i32) + (drop (call $if-suffix (i32.const -2))) + (i32.const 2) + ) + ) + ) + + (func $exnref_pop-test (local $exn exnref) + (try + (do + (try + (do) + (catch + ;; Expressions containing (pop exnref) should NOT be taken out and + ;; folded. + (local.set $exn (pop exnref)) + (drop (i32.const 111)) + (drop (i32.const 222)) + (drop (i32.const 333)) + (unreachable) + ) + ) + ) + (catch + (local.set $exn (pop exnref)) + (drop (i32.const 111)) + (drop (i32.const 222)) + (drop (i32.const 333)) + (unreachable) + ) + ) + ) + + (event $e (attr 0)) ;; exception with no param + (func $br_on_exn-target-block (local $exn exnref) + ;; Here this block $x is targeted by br_on_exn, so code folding out of this + ;; block should NOT happen. + (block $x + (if (i32.const 0) + (block + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $x) + ) + ) + (if (i32.const 0) + (block + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $x) + ) + ) + (drop (br_on_exn $x $e (local.get $exn))) + ;; no fallthrough, another thing to merge + (drop (i32.const 1)) + (drop (i32.const 2)) + (br $x) + ) + ) + + (func $foo) + (func $try-call-optimize-terminating-tails (result exnref) + (try + (do + ;; Expressions that can throw should NOT be taken out of 'try' scope. + (call $foo) + (call $foo) + (call $foo) + (call $foo) + (return (ref.null exn)) + ) + (catch + (drop (pop exnref)) + (call $foo) + (call $foo) + (call $foo) + (call $foo) + (return (ref.null exn)) + ) + ) + (ref.null exn) + ) + + (func $try-call-optimize-expression-tails (local $exn exnref) + (block $x + (try + (do + ;; Expressions that can throw should NOT be taken out of 'try' scope. + (call $foo) + (call $foo) + (call $foo) + (br $x) + ) + (catch + (local.set $exn (pop exnref)) + (call $foo) + (call $foo) + (call $foo) + (br $x) + ) + ) + (unreachable) + ) + ) +) diff -Nru binaryen-91/test/passes/remove-unused-names_code-folding.txt binaryen-99/test/passes/remove-unused-names_code-folding.txt --- binaryen-91/test/passes/remove-unused-names_code-folding.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-names_code-folding.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,1711 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (func $ifs (; 0 ;) - (if - (i32.const 0) - (nop) - ) - (block - (drop - (i32.const 0) - ) - (nop) - ) - (if - (i32.const 0) - (nop) - (unreachable) - ) - (drop - (block (result i32) - (drop - (i32.const 0) - ) - (i32.add - (i32.const 1) - (i32.const 2) - ) - ) - ) - (drop - (if (result i32) - (i32.const 0) - (i32.add - (i32.const 1) - (i32.const 2) - ) - (i32.add - (i32.const 1) - (i32.const 333333333) - ) - ) - ) - ) - (func $ifs-blocks (; 1 ;) - (block - (drop - (i32.const 0) - ) - (block - (nop) - ) - ) - (block - (if - (i32.const 0) - (unreachable) - (block - ) - ) - (nop) - ) - (block - (if - (i32.const 0) - (block - ) - (unreachable) - ) - (nop) - ) - (if - (i32.const 0) - (block - (nop) - (unreachable) - ) - (nop) - ) - (if - (i32.const 0) - (nop) - (block - (nop) - (unreachable) - ) - ) - ) - (func $ifs-blocks-big (; 2 ;) - (block - (drop - (i32.const 0) - ) - (block - (drop - (i32.add - (i32.const 1) - (i32.const 2) - ) - ) - ) - ) - (block - (if - (i32.const 0) - (unreachable) - (block - ) - ) - (drop - (i32.add - (i32.const 1) - (i32.const 2) - ) - ) - ) - (block - (if - (i32.const 0) - (block - ) - (unreachable) - ) - (drop - (i32.add - (i32.const 1) - (i32.const 2) - ) - ) - ) - (if - (i32.const 0) - (block - (drop - (i32.add - (i32.const 1) - (i32.const 2) - ) - ) - (unreachable) - ) - (drop - (i32.add - (i32.const 1) - (i32.const 2) - ) - ) - ) - (if - (i32.const 0) - (drop - (i32.add - (i32.const 1) - (i32.const 2) - ) - ) - (block - (drop - (i32.add - (i32.const 1) - (i32.const 2) - ) - ) - (unreachable) - ) - ) - ) - (func $ifs-blocks-long (; 3 ;) - (block - (if - (i32.const 1) - (block - (drop - (i32.const -1234) - ) - (drop - (i32.const -1000) - ) - ) - (drop - (i32.const 999) - ) - ) - (drop - (i32.const 1) - ) - (nop) - (unreachable) - ) - (drop - (block (result i32) - (if - (i32.const 2) - (block - (drop - (i32.const -1234) - ) - (drop - (i32.const -1000) - ) - ) - (drop - (i32.const 999) - ) - ) - (drop - (i32.const 1) - ) - (nop) - (unreachable) - (i32.const 2) - ) - ) - (drop - (block (result i32) - (if - (i32.const 3) - (block - (drop - (i32.const -1234) - ) - (drop - (i32.const -1000) - ) - ) - (drop - (i32.const 999) - ) - ) - (drop - (i32.const 1) - ) - (nop) - (i32.const 2) - ) - ) - ) - (func $if-worth-it-i-dunno (; 4 ;) - (block $folding-inner0 - (block - (if - (i32.const 0) - (if - (i32.const 0) - (block - (drop - (i32.const -1234) - ) - (drop - (i32.const -1000) - ) - (br $folding-inner0) - ) - (block - (drop - (i32.const 999) - ) - (drop - (i32.const 1) - ) - (br $folding-inner0) - ) - ) - ) - (if - (i32.const 0) - (block - (if - (i32.const 0) - (block - (drop - (i32.const -1234) - ) - (drop - (i32.const -1000) - ) - ) - (block - (drop - (i32.const 999) - ) - (drop - (i32.const 1) - ) - ) - ) - (unreachable) - (br $folding-inner0) - ) - ) - (if - (i32.const 0) - (block - (if - (i32.const 0) - (block - ) - (block - (drop - (i32.const 999) - ) - (drop - (i32.const 1) - ) - ) - ) - (br $folding-inner0) - ) - ) - (if - (i32.const 0) - (block - (if - (i32.const 0) - (block - (drop - (i32.const -1234) - ) - (drop - (i32.const -1000) - ) - ) - (block - ) - ) - (br $folding-inner0) - ) - ) - (block - (block - (if - (i32.const 9999) - (block - (drop - (i32.const -51234) - ) - (drop - (i32.const -51000) - ) - ) - (block - (drop - (i32.const 5999) - ) - (drop - (i32.const 51) - ) - ) - ) - (br $folding-inner0) - ) - ) - (drop - (block (result i32) - (block (result i32) - (if - (i32.const 9999) - (block - (drop - (i32.const -51234) - ) - (drop - (i32.const -51000) - ) - ) - (block - (drop - (i32.const 5999) - ) - (drop - (i32.const 51) - ) - ) - ) - (unreachable) - (i32.const 10) - ) - ) - ) - (block - (drop - (if (result i32) - (i32.const 9999) - (block (result i32) - (drop - (i32.const -51234) - ) - (drop - (i32.const -51000) - ) - (unreachable) - (i32.const 10) - ) - (block (result i32) - (drop - (i32.const 5999) - ) - (drop - (i32.const 51) - ) - (unreachable) - (i32.const 10) - ) - ) - ) - ) - ) - ) - (unreachable) - (unreachable) - ) - (func $no-grandparent (; 5 ;) - (if - (i32.const 9999) - (block - (drop - (i32.const -51234) - ) - (drop - (i32.const -51000) - ) - (unreachable) - (unreachable) - ) - (block - (drop - (i32.const 5999) - ) - (drop - (i32.const 51) - ) - (unreachable) - (unreachable) - ) - ) - ) - (func $yes-grandparent (; 6 ;) - (block - (if - (i32.const 9999) - (block - (drop - (i32.const -51234) - ) - (drop - (i32.const -51000) - ) - ) - (block - (drop - (i32.const 5999) - ) - (drop - (i32.const 51) - ) - ) - ) - (unreachable) - (unreachable) - ) - ) - (func $ifs-named-block (; 7 ;) (param $x i32) (param $y i32) (result i32) - (block $out - (block $out2 - (block - (drop - (local.get $x) - ) - (block - (br_if $out - (local.get $y) - ) - (nop) - ) - ) - (block - (if - (local.get $x) - (br_if $out - (local.get $y) - ) - (br_if $out2 - (local.get $y) - ) - ) - (nop) - ) - (if - (i32.const 1234) - (if - (local.get $x) - (block - (nop) - (br_if $out - (local.get $y) - ) - (nop) - ) - (block - (nop) - (br_if $out2 - (local.get $y) - ) - (nop) - ) - ) - ) - (if - (local.get $x) - (block $left - (br_if $left - (local.get $y) - ) - (nop) - ) - (block - (br_if $out - (local.get $y) - ) - (nop) - ) - ) - (if - (local.get $x) - (block - (br_if $out - (local.get $y) - ) - (nop) - ) - (block $right - (br_if $right - (local.get $y) - ) - (nop) - ) - ) - ) - (return - (i32.const 10) - ) - ) - (return - (i32.const 20) - ) - ) - (func $block (; 8 ;) - (block $x - (if - (i32.const 0) - (br $x) - ) - (if - (i32.const 0) - (br $x) - ) - (br $x) - ) - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - ) - (func $block2 (; 9 ;) - (block $x - (if - (i32.const 0) - (block - (drop - (i32.const 1) - ) - (drop - (i32.const 333333) - ) - (br $x) - ) - ) - (if - (i32.const 0) - (block - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - (br $x) - ) - ) - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - (br $x) - ) - ) - (func $block3 (; 10 ;) - (block $x - (if - (i32.const 0) - (block - (drop - (i32.const 1000) - ) - (br $x) - ) - ) - (if - (i32.const 0) - (block - (drop - (i32.const 2000) - ) - (drop - (i32.const 3000) - ) - (br $x) - ) - ) - (drop - (i32.const 4000) - ) - (drop - (i32.const 5000) - ) - (drop - (i32.const 6000) - ) - (br $x) - ) - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - ) - (func $mixture (; 11 ;) - (block $out - (block - (drop - (i32.const 1) - ) - (block - (drop - (i32.const 2) - ) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (br $out) - ) - ) - ) - (block $out2 - (block - (if - (i32.const 1) - (drop - (i32.const 3) - ) - (block - (drop - (i32.const 4) - ) - (drop - (i32.const 5) - ) - ) - ) - (drop - (i32.const 2) - ) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (br $out2) - ) - ) - (block - (block $out3 - (block - (drop - (i32.const 1) - ) - (block - (br $out3) - ) - ) - (block - (drop - (i32.const 1) - ) - (block - (br $out3) - ) - ) - (br $out3) - ) - (drop - (i32.const 2) - ) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - ) - ) - (func $block-corners (; 12 ;) - (block - (block $x - (if - (i32.const 0) - (br $x) - ) - ) - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - ) - (drop - (block $y (result i32) - (if - (i32.const 0) - (block - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - (br $y - (i32.const 3) - ) - ) - ) - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - (br $y - (i32.const 3) - ) - ) - ) - (drop - (block $z (result i32) - (if - (i32.const 0) - (block - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - (br $z - (i32.const 2) - ) - ) - ) - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - (i32.const 3) - ) - ) - (block $w - (if - (i32.const 0) - (block - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - (br_if $w - (i32.const 3) - ) - ) - ) - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - ) - (block $x1 - (if - (i32.const 0) - (block - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - (br $x1) - (nop) - ) - ) - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - ) - (block $side - (block $x2 - (br_table $x2 $side - (i32.const 0) - ) - (if - (i32.const 0) - (block - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - (br $x2) - ) - ) - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - ) - (block $x3 - (br_table $side $x3 - (i32.const 0) - ) - (if - (i32.const 0) - (block - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - (br $x3) - ) - ) - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - ) - ) - ) - (func $terminating (; 13 ;) - (block $folding-inner0 - (block - (if - (i32.const 1) - (br $folding-inner0) - ) - (if - (i32.const 2) - (br $folding-inner0) - ) - (if - (i32.const 3) - (br $folding-inner0) - ) - ) - (return) - ) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (unreachable) - ) - (func $terminating-unreachable (; 14 ;) - (block $folding-inner0 - (block - (if - (i32.const 1) - (br $folding-inner0) - ) - (if - (i32.const 2) - (br $folding-inner0) - ) - (if - (i32.const 3) - (br $folding-inner0) - ) - (unreachable) - ) - ) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (unreachable) - ) - (func $terminating-value (; 15 ;) (result i32) - (block $folding-inner0 - (return - (block (result i32) - (if - (i32.const 1) - (br $folding-inner0) - ) - (if - (i32.const 2) - (br $folding-inner0) - ) - (if - (i32.const 3) - (br $folding-inner0) - ) - (i32.const 4) - ) - ) - ) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (unreachable) - ) - (func $terminating-just-2 (; 16 ;) - (block $folding-inner0 - (block - (if - (i32.const 1) - (br $folding-inner0) - ) - (if - (i32.const 2) - (br $folding-inner0) - ) - (if - (i32.const 3) - (block - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (drop - (i32.const 10) - ) - (unreachable) - ) - ) - ) - (return) - ) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (unreachable) - ) - (func $terminating-shortness (; 17 ;) - (block $folding-inner1 - (block - (block $folding-inner0 - (block - (if - (i32.const 1) - (br $folding-inner0) - ) - (if - (i32.const 2) - (br $folding-inner1) - ) - (if - (i32.const 3) - (block - (drop - (i32.const 10) - ) - (br $folding-inner0) - ) - ) - ) - (return) - ) - (nop) - (br $folding-inner1) - ) - ) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (unreachable) - ) - (func $terminating-multiple-separate (; 18 ;) - (block $folding-inner1 - (block - (block $folding-inner0 - (block - (if - (i32.const 1) - (br $folding-inner0) - ) - (if - (i32.const 1) - (br $folding-inner0) - ) - (if - (i32.const 1) - (br $folding-inner1) - ) - (if - (i32.const 1) - (br $folding-inner1) - ) - ) - (return) - ) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (drop - (i32.const 1) - ) - (unreachable) - ) - ) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (drop - (i32.const 2) - ) - (unreachable) - ) - (func $terminating-just-worth-it (; 19 ;) - (block $folding-inner0 - (block - (if - (i32.const 1) - (br $folding-inner0) - ) - (if - (i32.const 2) - (br $folding-inner0) - ) - (if - (i32.const 3) - (br $folding-inner0) - ) - ) - (return) - ) - (nop) - (nop) - (nop) - (unreachable) - ) - (func $terminating-not-worth-it (; 20 ;) - (if - (i32.const 1) - (block - (nop) - (nop) - (unreachable) - ) - ) - (if - (i32.const 2) - (block - (nop) - (nop) - (unreachable) - ) - ) - (if - (i32.const 3) - (block - (nop) - (nop) - (unreachable) - ) - ) - ) - (func $terminating-return (; 21 ;) - (block $folding-inner0 - (block - (if - (i32.const 1) - (br $folding-inner0) - ) - (if - (i32.const 2) - (br $folding-inner0) - ) - (if - (i32.const 3) - (br $folding-inner0) - ) - ) - (return) - ) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (return) - ) - (func $terminating-return-value (; 22 ;) (result i32) - (block $folding-inner0 - (block - (if - (i32.const 1) - (br $folding-inner0) - ) - (if - (i32.const 2) - (br $folding-inner0) - ) - (if - (i32.const 3) - (br $folding-inner0) - ) - (if - (i32.const 3) - (block - (nop) - (return - (i32.add - (i32.const 111111111) - (i32.const 2222222) - ) - ) - ) - ) - (return - (i32.const 1234) - ) - ) - ) - (nop) - (return - (i32.add - (i32.const 1) - (i32.const 2) - ) - ) - ) - (func $terminating-fallthrough-value (; 23 ;) (result i32) - (block $folding-inner0 - (return - (block (result i32) - (if - (i32.const 1) - (br $folding-inner0) - ) - (if - (i32.const 2) - (br $folding-inner0) - ) - (if - (i32.const 3) - (br $folding-inner0) - ) - (if - (i32.const 3) - (block - (nop) - (return - (i32.add - (i32.const 111111111) - (i32.const 2222222) - ) - ) - ) - ) - (i32.const 1234) - ) - ) - ) - (nop) - (return - (i32.add - (i32.const 1) - (i32.const 2) - ) - ) - ) - (func $big-return (; 24 ;) (result i32) - (block $folding-inner0 - (block - (if - (i32.const 1) - (br $folding-inner0) - ) - (if - (i32.const 2) - (br $folding-inner0) - ) - (if - (i32.const 3) - (br $folding-inner0) - ) - (if - (i32.const 4) - (br $folding-inner0) - ) - (if - (i32.const 5) - (br $folding-inner0) - ) - (if - (i32.const 6) - (br $folding-inner0) - ) - (unreachable) - ) - ) - (return - (i32.add - (i32.const 1) - (i32.const 2) - ) - ) - ) - (func $return-mix (; 25 ;) (result i32) - (block $folding-inner0 - (block - (if - (i32.const 1) - (br $folding-inner0) - ) - (if - (i32.const 2) - (br $folding-inner0) - ) - (if - (i32.const 3) - (br $folding-inner0) - ) - (if - (i32.const 4) - (br $folding-inner0) - ) - (if - (i32.const 3) - (return - (i32.add - (i32.const 1) - (i32.const 234567) - ) - ) - ) - (br $folding-inner0) - ) - ) - (return - (i32.add - (i32.const 1) - (i32.const 2) - ) - ) - ) - (func $just-unreachable (; 26 ;) - (unreachable) - ) - (func $just-return (; 27 ;) (result i32) - (return - (i32.add - (i32.const 1) - (i32.const 2) - ) - ) - ) - (func $drop-if-with-value-but-unreachable (; 28 ;) - (if - (i32.const 0) - (nop) - ) - (block - (drop - (i32.const 0) - ) - (block - (nop) - ) - ) - (if - (i32.const 0) - (nop) - (unreachable) - ) - (nop) - (drop - (block (result i32) - (drop - (unreachable) - ) - (block (result i32) - (i32.add - (i32.const 1) - (i32.const 2) - ) - ) - ) - ) - (drop - (if (result i32) - (i32.const 0) - (i32.add - (i32.const 1) - (i32.const 2) - ) - (i32.add - (i32.const 1) - (i32.const 333333333) - ) - ) - ) - ) - (func $nested-control-flow (; 29 ;) - (block $out - (block - (block $x - (if - (i32.const 0) - (br $x) - ) - (if - (i32.const 0) - (br $x) - ) - (br $x) - ) - (if - (i32.const 1) - (br $out) - ) - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - ) - (drop - (i32.const 3) - ) - ) - ) - (func $nested-control-flow-dangerous (; 30 ;) - (block $folding-inner0 - (block $out - (block - (if - (i32.const 0) - (block - (if - (i32.const 1) - (br $out) - ) - (br $folding-inner0) - ) - ) - (if - (i32.const 0) - (block - (if - (i32.const 1) - (br $out) - ) - (br $folding-inner0) - ) - ) - (if - (i32.const 1) - (br $out) - ) - (br $folding-inner0) - ) - (drop - (i32.const 3) - ) - ) - (return) - ) - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - (return) - ) - (func $nested-control-flow-dangerous-but-ok (; 31 ;) - (block $folding-inner0 - (block - (block $middle - (block - (if - (i32.const 0) - (block - (if - (i32.add - (i32.const 0) - (i32.const 1) - ) - (br $middle) - ) - (br $folding-inner0) - ) - ) - (if - (i32.const 0) - (block - (if - (i32.add - (i32.const 0) - (i32.const 1) - ) - (br $middle) - ) - (br $folding-inner0) - ) - ) - (if - (i32.add - (i32.const 0) - (i32.const 1) - ) - (br $middle) - ) - (br $folding-inner0) - ) - ) - (drop - (i32.const 3) - ) - ) - (return) - ) - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - (return) - ) - (func $nested-control-flow-dangerous-but-ok-b (; 32 ;) - (block $out - (block $middle - (block - (if - (i32.const 0) - (block - (if - (i32.add - (i32.const 0) - (i32.const 1) - ) - (br $middle) - ) - (br $out) - ) - ) - (if - (i32.const 0) - (block - (if - (i32.add - (i32.const 0) - (i32.const 1) - ) - (br $middle) - ) - (br $out) - ) - ) - (if - (i32.add - (i32.const 0) - (i32.const 1) - ) - (br $middle) - ) - ) - ) - (unreachable) - ) - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - (drop - (i32.const 3) - ) - (drop - (i32.const 4) - ) - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - (drop - (i32.const 3) - ) - (drop - (i32.const 4) - ) - ) - (func $nested-control-flow-dangerous-but-ok-c (; 33 ;) - (block $x - (block - (block $out - (block - (if - (i32.const 0) - (br $out) - ) - (if - (i32.const 0) - (br $out) - ) - (br $out) - ) - (unreachable) - ) - (if - (i32.add - (i32.const 0) - (i32.const 1) - ) - (br $x) - ) - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - ) - (unreachable) - ) - (drop - (i32.const 5) - ) - ) - (func $nested-control-flow-dangerous-but-ok-d (; 34 ;) - (block - (block $out - (block - (if - (i32.const 0) - (br $out) - ) - (if - (i32.const 0) - (br $out) - ) - (br $out) - ) - ) - (block $x - (if - (i32.add - (i32.const 0) - (i32.const 1) - ) - (br $x) - ) - ) - (drop - (i32.const 1) - ) - (drop - (i32.const 2) - ) - ) - (drop - (i32.const 3) - ) - ) - (func $if-suffix (; 35 ;) (param $x i32) (result i32) - (block - (if - (local.get $x) - (block - ) - (drop - (call $if-suffix - (i32.const -1) - ) - ) - ) - (local.set $x - (i32.const 1) - ) - ) - (block (result i32) - (if - (local.get $x) - (block - ) - (drop - (call $if-suffix - (i32.const -2) - ) - ) - ) - (i32.const 2) - ) - ) -) diff -Nru binaryen-91/test/passes/remove-unused-names_code-folding.wast binaryen-99/test/passes/remove-unused-names_code-folding.wast --- binaryen-91/test/passes/remove-unused-names_code-folding.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-names_code-folding.wast 1970-01-01 00:00:00.000000000 +0000 @@ -1,1194 +0,0 @@ -(module - (func $ifs - (if (i32.const 0) (nop)) - (if (i32.const 0) (nop) (nop)) - (if (i32.const 0) (nop) (unreachable)) - (drop - (if (result i32) (i32.const 0) - (i32.add (i32.const 1) (i32.const 2)) - (i32.add (i32.const 1) (i32.const 2)) - ) - ) - (drop - (if (result i32) (i32.const 0) - (i32.add (i32.const 1) (i32.const 2)) - (i32.add (i32.const 1) (i32.const 333333333)) - ) - ) - ) - (func $ifs-blocks - (if (i32.const 0) - (block - (nop) - ) - (block - (nop) - ) - ) - (if (i32.const 0) - (block - (unreachable) - (nop) - ) - (block - (nop) - ) - ) - (if (i32.const 0) - (block - (nop) - ) - (block - (unreachable) - (nop) - ) - ) - (if (i32.const 0) - (block - (nop) - (unreachable) - ) - (block - (nop) - ) - ) - (if (i32.const 0) - (block - (nop) - ) - (block - (nop) - (unreachable) - ) - ) - ) - (func $ifs-blocks-big - (if (i32.const 0) - (block - (drop (i32.add (i32.const 1) (i32.const 2))) - ) - (block - (drop (i32.add (i32.const 1) (i32.const 2))) - ) - ) - (if (i32.const 0) - (block - (unreachable) - (drop (i32.add (i32.const 1) (i32.const 2))) - ) - (block - (drop (i32.add (i32.const 1) (i32.const 2))) - ) - ) - (if (i32.const 0) - (block - (drop (i32.add (i32.const 1) (i32.const 2))) - ) - (block - (unreachable) - (drop (i32.add (i32.const 1) (i32.const 2))) - ) - ) - (if (i32.const 0) - (block - (drop (i32.add (i32.const 1) (i32.const 2))) - (unreachable) - ) - (block - (drop (i32.add (i32.const 1) (i32.const 2))) - ) - ) - (if (i32.const 0) - (block - (drop (i32.add (i32.const 1) (i32.const 2))) - ) - (block - (drop (i32.add (i32.const 1) (i32.const 2))) - (unreachable) - ) - ) - ) - (func $ifs-blocks-long - (if (i32.const 1) - (block - (drop (i32.const -1234)) - (drop (i32.const -1000)) - (drop (i32.const 1)) - (nop) - (unreachable) - ) - (block - (drop (i32.const 999)) - (drop (i32.const 1)) - (nop) - (unreachable) - ) - ) - (drop - (if (result i32) (i32.const 2) - (block (result i32) - (drop (i32.const -1234)) - (drop (i32.const -1000)) - (drop (i32.const 1)) - (nop) - (unreachable) - (i32.const 2) - ) - (block (result i32) - (drop (i32.const 999)) - (drop (i32.const 1)) - (nop) - (unreachable) - (i32.const 2) - ) - ) - ) - (drop - (if (result i32) (i32.const 3) - (block (result i32) - (drop (i32.const -1234)) - (drop (i32.const -1000)) - (drop (i32.const 1)) - (nop) - (i32.const 2) - ) - (block (result i32) - (drop (i32.const 999)) - (drop (i32.const 1)) - (nop) - (i32.const 2) - ) - ) - ) - ) - (func $if-worth-it-i-dunno - ;; just 2, so not worth it - (if (i32.const 0) ;; (put them in ifs, so no block outside which would make us more confident in creating a block in hopes it would vanish) - (if (i32.const 0) - (block - (drop (i32.const -1234)) - (drop (i32.const -1000)) - (unreachable) - (unreachable) - ) - (block - (drop (i32.const 999)) - (drop (i32.const 1)) - (unreachable) - (unreachable) - ) - ) - ) - ;; 3, so why not - (if (i32.const 0) ;; (put them in ifs, so no block outside which would make us more confident in creating a block in hopes it would vanish) - (if (i32.const 0) - (block - (drop (i32.const -1234)) - (drop (i32.const -1000)) - (unreachable) - (unreachable) - (unreachable) - ) - (block - (drop (i32.const 999)) - (drop (i32.const 1)) - (unreachable) - (unreachable) - (unreachable) - ) - ) - ) - ;; just 2, but we'll empty out a block - (if (i32.const 0) ;; (put them in ifs, so no block outside which would make us more confident in creating a block in hopes it would vanish) - (if (i32.const 0) - (block - (unreachable) - (unreachable) - ) - (block - (drop (i32.const 999)) - (drop (i32.const 1)) - (unreachable) - (unreachable) - ) - ) - ) - ;; just 2, but we'll empty out a block - (if (i32.const 0) ;; (put them in ifs, so no block outside which would make us more confident in creating a block in hopes it would vanish) - (if (i32.const 0) - (block - (drop (i32.const -1234)) - (drop (i32.const -1000)) - (unreachable) - (unreachable) - ) - (block - (unreachable) - (unreachable) - ) - ) - ) - ;; just two, but on a block, so we hope to merge, and can optimize here - (block $a-holding-block - (if (i32.const 9999) - (block - (drop (i32.const -51234)) - (drop (i32.const -51000)) - (unreachable) - (unreachable) - ) - (block - (drop (i32.const 5999)) - (drop (i32.const 51)) - (unreachable) - (unreachable) - ) - ) - ) - ;; with value - (drop - (block $b-holding-block (result i32) - (if (result i32) (i32.const 9999) - (block (result i32) - (drop (i32.const -51234)) - (drop (i32.const -51000)) - (unreachable) - (i32.const 10) - ) - (block (result i32) - (drop (i32.const 5999)) - (drop (i32.const 51)) - (unreachable) - (i32.const 10) - ) - ) - ) - ) - ;; oops, something in between - (block $c-holding-block - (drop - (if (result i32) (i32.const 9999) - (block (result i32) - (drop (i32.const -51234)) - (drop (i32.const -51000)) - (unreachable) - (i32.const 10) - ) - (block (result i32) - (drop (i32.const 5999)) - (drop (i32.const 51)) - (unreachable) - (i32.const 10) - ) - ) - ) - ) - ) - (func $no-grandparent - ;; if we had a parent block, we might optimize this - (if (i32.const 9999) - (block - (drop (i32.const -51234)) - (drop (i32.const -51000)) - (unreachable) - (unreachable) - ) - (block - (drop (i32.const 5999)) - (drop (i32.const 51)) - (unreachable) - (unreachable) - ) - ) - ) - (func $yes-grandparent - (block - (if (i32.const 9999) - (block - (drop (i32.const -51234)) - (drop (i32.const -51000)) - (unreachable) - (unreachable) - ) - (block - (drop (i32.const 5999)) - (drop (i32.const 51)) - (unreachable) - (unreachable) - ) - ) - ) - ) - (func $ifs-named-block (param $x i32) (param $y i32) (result i32) - (block $out - (block $out2 - (if (local.get $x) - (block - (br_if $out (local.get $y i32)) - (nop) - ) - (block - (br_if $out (local.get $y i32)) - (nop) - ) - ) - (if (local.get $x) - (block - (br_if $out (local.get $y i32)) - (nop) - ) - (block - (br_if $out2 (local.get $y i32)) - (nop) - ) - ) - (if (i32.const 1234) - (if (local.get $x) - (block - (nop) - (br_if $out (local.get $y i32)) - (nop) - ) - (block - (nop) - (br_if $out2 (local.get $y i32)) - (nop) - ) - ) - ) - (if (local.get $x) - (block $left - (br_if $left (local.get $y i32)) - (nop) - ) - (block - (br_if $out (local.get $y i32)) - (nop) - ) - ) - (if (local.get $x) - (block - (br_if $out (local.get $y i32)) - (nop) - ) - (block $right - (br_if $right (local.get $y i32)) - (nop) - ) - ) - ) - (return (i32.const 10)) - ) - (return (i32.const 20)) - ) - (func $block - (block $x - (if (i32.const 0) - (block - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $x) - ) - ) - (if (i32.const 0) - (block - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $x) - ) - ) - ;; no fallthrough, another thing to merge - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $x) - ) - ) - (func $block2 - (block $x - (if (i32.const 0) - (block - (drop (i32.const 1)) - (drop (i32.const 333333)) - (br $x) - ) - ) - (if (i32.const 0) - (block - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $x) - ) - ) - ;; no fallthrough, another thing to merge - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $x) - ) - ) - (func $block3 - (block $x - (if (i32.const 0) - (block - (drop (i32.const 1000)) - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $x) - ) - ) - (if (i32.const 0) - (block - (drop (i32.const 2000)) - (drop (i32.const 3000)) - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $x) - ) - ) - (drop (i32.const 4000)) - (drop (i32.const 5000)) - (drop (i32.const 6000)) - ;; no fallthrough, another thing to merge - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $x) - ) - ) - (func $mixture - (block $out ;; then we reach the block, and the tail infos are stale, should ignore - (if (i32.const 1) ;; then we optimize the if, pushing those brs outside! - (block - (drop (i32.const 2)) ;; first we note the block tails for $out - (nop) (nop) (nop) (nop) (nop) (nop) ;; totally worth it - (br $out) - ) - (block - (drop (i32.const 2)) - (nop) (nop) (nop) (nop) (nop) (nop) - (br $out) - ) - ) - ) - (block $out2 - (if (i32.const 1) - (block - (drop (i32.const 3)) ;; leave something - (drop (i32.const 2)) - (nop) (nop) (nop) (nop) (nop) (nop) - (br $out2) - ) - (block - (drop (i32.const 4)) ;; leave something - (drop (i32.const 5)) ;; leave something - (drop (i32.const 2)) - (nop) (nop) (nop) (nop) (nop) (nop) - (br $out2) - ) - ) - ) - ;; now a case where do **do** want to fold for the block (which we can only do in a later pass) - (block $out3 - (if (i32.const 1) - (block - (drop (i32.const 2)) - (nop) (nop) (nop) (nop) (nop) (nop) - (br $out3) - ) - (block - (drop (i32.const 2)) - (nop) (nop) (nop) (nop) (nop) (nop) - (br $out3) - ) - ) - (if (i32.const 1) - (block - (drop (i32.const 2)) - (nop) (nop) (nop) (nop) (nop) (nop) - (br $out3) - ) - (block - (drop (i32.const 2)) - (nop) (nop) (nop) (nop) (nop) (nop) - (br $out3) - ) - ) - (drop (i32.const 2)) - (nop) (nop) (nop) (nop) (nop) (nop) - (br $out3) - ) - ) - (func $block-corners - ;; these should be merged - (block $x - (if (i32.const 0) - (block - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $x) - ) - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - ) - ;; these should not - ;; values - (drop - (block $y (result i32) - (if (i32.const 0) - (block - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $y (i32.const 3)) - ) - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $y (i32.const 3)) - ) - ) - (drop - (block $z (result i32) - (if (i32.const 0) - (block - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $z (i32.const 2)) - ) - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - (i32.const 3) - ) - ) - ;; condition - (block $w - (if (i32.const 0) - (block - (drop (i32.const 1)) - (drop (i32.const 2)) - (br_if $w (i32.const 3)) - ) - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - ) - ;; not at the end - (block $x1 - (if (i32.const 0) - (block - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $x1) - (nop) - ) - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - ) - ;; switches - (block $side - (block $x2 - (br_table $x2 $side (i32.const 0)) - (if (i32.const 0) - (block - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $x2) - ) - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - ) - (block $x3 - (br_table $side $x3 (i32.const 0)) - (if (i32.const 0) - (block - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $x3) - ) - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - ) - ) - ) - (func $terminating - (if (i32.const 1) - (block - (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) - (unreachable) - ) - ) - (if (i32.const 2) - (block - (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) - (unreachable) - ) - ) - (if (i32.const 3) - (block - (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) - (unreachable) - ) - ) - ) - (func $terminating-unreachable - (if (i32.const 1) - (block - (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) - (unreachable) - ) - ) - (if (i32.const 2) - (block - (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) - (unreachable) - ) - ) - (if (i32.const 3) - (block - (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) - (unreachable) - ) - ) - (unreachable) - ) - (func $terminating-value (result i32) - (if (i32.const 1) - (block - (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) - (unreachable) - ) - ) - (if (i32.const 2) - (block - (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) - (unreachable) - ) - ) - (if (i32.const 3) - (block - (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) - (unreachable) - ) - ) - (i32.const 4) - ) - (func $terminating-just-2 - (if (i32.const 1) - (block - (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) - (unreachable) - ) - ) - (if (i32.const 2) - (block - (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) - (unreachable) - ) - ) - (if (i32.const 3) - (block - (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) - (drop (i32.const 10)) - (unreachable) - ) - ) - ) - (func $terminating-shortness - (if (i32.const 1) - (block - (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) - (unreachable) - ) - ) - (if (i32.const 2) - (block - (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) ;; shorter. we do the two long ones greedily, then the merged one and this can also be opted - (unreachable) - ) - ) - (if (i32.const 3) - (block - (drop (i32.const 10)) - (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) - (unreachable) - ) - ) - ) - (func $terminating-multiple-separate - (if (i32.const 1) - (block - (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) - (drop (i32.const 1)) - (unreachable) - ) - ) - (if (i32.const 1) - (block - (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) - (drop (i32.const 1)) - (unreachable) - ) - ) - (if (i32.const 1) - (block - (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) - (drop (i32.const 2)) - (unreachable) - ) - ) - (if (i32.const 1) - (block - (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) - (drop (i32.const 2)) - (unreachable) - ) - ) - ) - (func $terminating-just-worth-it - (if (i32.const 1) - (block - (nop) (nop) (nop) - (unreachable) - ) - ) - (if (i32.const 2) - (block - (nop) (nop) (nop) - (unreachable) - ) - ) - (if (i32.const 3) - (block - (nop) (nop) (nop) - (unreachable) - ) - ) - ) - (func $terminating-not-worth-it - (if (i32.const 1) - (block - (nop) (nop) - (unreachable) - ) - ) - (if (i32.const 2) - (block - (nop) (nop) - (unreachable) - ) - ) - (if (i32.const 3) - (block - (nop) (nop) - (unreachable) - ) - ) - ) - (func $terminating-return - (if (i32.const 1) - (block - (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) - (return) - ) - ) - (if (i32.const 2) - (block - (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) - (return) - ) - ) - (if (i32.const 3) - (block - (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) - (return) - ) - ) - ) - (func $terminating-return-value (result i32) - (if (i32.const 1) - (block - (nop) - (return (i32.add (i32.const 1) (i32.const 2))) - ) - ) - (if (i32.const 2) - (block - (nop) - (return (i32.add (i32.const 1) (i32.const 2))) - ) - ) - (if (i32.const 3) - (block - (nop) - (return (i32.add (i32.const 1) (i32.const 2))) - ) - ) - (if (i32.const 3) - (block - (nop) - (return (i32.add (i32.const 111111111) (i32.const 2222222))) - ) - ) - (return (i32.const 1234)) - ) - (func $terminating-fallthrough-value (result i32) - (if (i32.const 1) - (block - (nop) - (return (i32.add (i32.const 1) (i32.const 2))) - ) - ) - (if (i32.const 2) - (block - (nop) - (return (i32.add (i32.const 1) (i32.const 2))) - ) - ) - (if (i32.const 3) - (block - (nop) - (return (i32.add (i32.const 1) (i32.const 2))) - ) - ) - (if (i32.const 3) - (block - (nop) - (return (i32.add (i32.const 111111111) (i32.const 2222222))) - ) - ) - (i32.const 1234) - ) - (func $big-return (result i32) - (if (i32.const 1) (return (i32.add (i32.const 1) (i32.const 2)))) - (if (i32.const 2) (return (i32.add (i32.const 1) (i32.const 2)))) - (if (i32.const 3) (return (i32.add (i32.const 1) (i32.const 2)))) - (if (i32.const 4) (return (i32.add (i32.const 1) (i32.const 2)))) - (if (i32.const 5) (return (i32.add (i32.const 1) (i32.const 2)))) - (if (i32.const 6) (return (i32.add (i32.const 1) (i32.const 2)))) - (unreachable) - ) - (func $return-mix (result i32) - (if (i32.const 1) (return (i32.add (i32.const 1) (i32.const 2)))) - (if (i32.const 2) (return (i32.add (i32.const 1) (i32.const 2)))) - (if (i32.const 3) (return (i32.add (i32.const 1) (i32.const 2)))) - (if (i32.const 4) (return (i32.add (i32.const 1) (i32.const 2)))) - (if (i32.const 3) (return (i32.add (i32.const 1) (i32.const 234567)))) - (return (i32.add (i32.const 1) (i32.const 2))) ;; on a block, and the toplevel in fact - ) - (func $just-unreachable - (unreachable) - ) - (func $just-return (result i32) - (return (i32.add (i32.const 1) (i32.const 2))) ;; on a block, and the toplevel in fact - ) - (func $drop-if-with-value-but-unreachable - (block $label$0 - (if - (i32.const 0) - (block $label$1 - (nop) - ) - ) - (if - (i32.const 0) - (block $label$2 - (nop) - ) - (block $label$3 - (nop) - ) - ) - (if - (i32.const 0) - (block $label$4 - (nop) - ) - (block $label$5 - (unreachable) - ) - ) - (nop) - (drop - (if (result i32) ;; we replace this if, must replace with same type! - (unreachable) - (block $label$6 (result i32) - (i32.add - (i32.const 1) - (i32.const 2) - ) - ) - (block $label$7 (result i32) - (i32.add - (i32.const 1) - (i32.const 2) - ) - ) - ) - ) - (drop - (if (result i32) - (i32.const 0) - (block $label$8 (result i32) - (i32.add - (i32.const 1) - (i32.const 2) - ) - ) - (block $label$9 (result i32) - (i32.add - (i32.const 1) - (i32.const 333333333) - ) - ) - ) - ) - ) - ) - (func $nested-control-flow - (block $out - (block $x - (if (i32.const 0) - (block - (if (i32.const 1) - (br $out) - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $x) - ) - ) - (if (i32.const 0) - (block - (if (i32.const 1) - (br $out) - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $x) - ) - ) - ;; no fallthrough, another thing to merge - (if (i32.const 1) - (br $out) - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $x) - ) - (drop (i32.const 3)) - ) - ) - (func $nested-control-flow-dangerous - (block $out - (block $x - (if (i32.const 0) - (block - (if (i32.const 1) - (br $out) ;; this br cannot be moved out of the $out block! - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - (return) - ) - ) - (if (i32.const 0) - (block - (if (i32.const 1) - (br $out) - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - (return) - ) - ) - ;; no fallthrough, another thing to merge - (if (i32.const 1) - (br $out) - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - (return) - ) - (drop (i32.const 3)) - ) - ) - (func $nested-control-flow-dangerous-but-ok - (block $out - (block $middle - (block $x - (if (i32.const 0) - (block - (if (i32.add (i32.const 0) (i32.const 1)) - (br $middle) - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - (return) - ) - ) - (if (i32.const 0) - (block - (if (i32.add (i32.const 0) (i32.const 1)) - (br $middle) - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - (return) - ) - ) - ;; no fallthrough, another thing to merge - (if (i32.add (i32.const 0) (i32.const 1)) - (br $middle) - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - (return) - ) - ) - (drop (i32.const 3)) - ) - ) - (func $nested-control-flow-dangerous-but-ok-b - (block $out - (block $middle - (block $x - (if (i32.const 0) - (block - (if (i32.add (i32.const 0) (i32.const 1)) - (br $middle) ;; this is dangerous - we branch to middle with is inside out, so we can't move this out of out - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - (drop (i32.const 3)) - (drop (i32.const 4)) - (drop (i32.const 1)) - (drop (i32.const 2)) - (drop (i32.const 3)) - (drop (i32.const 4)) - (br $out) - ) - ) - (if (i32.const 0) - (block - (if (i32.add (i32.const 0) (i32.const 1)) - (br $middle) - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - (drop (i32.const 3)) - (drop (i32.const 4)) - (drop (i32.const 1)) - (drop (i32.const 2)) - (drop (i32.const 3)) - (drop (i32.const 4)) - (br $out) - ) - ) - ;; no fallthrough, another thing to merge - (if (i32.add (i32.const 0) (i32.const 1)) - (br $middle) - ) - ) - ) - (unreachable) ;; no fallthrough - ) - ) - (func $nested-control-flow-dangerous-but-ok-c - (block $x - (block $out - (block $middle - (if (i32.const 0) - (block - (if (i32.add (i32.const 0) (i32.const 1)) - (br $x) ;; this is ok - we branch to x which is outside of out - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $out) - ) - ) - (if (i32.const 0) - (block - (if (i32.add (i32.const 0) (i32.const 1)) - (br $x) - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $out) - ) - ) - ;; no fallthrough, another thing to merge - (if (i32.add (i32.const 0) (i32.const 1)) - (br $x) - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $out) - ) - (unreachable) ;; no fallthrough - ) - (unreachable) ;; no fallthrough - ) - (drop (i32.const 5)) - ) - (func $nested-control-flow-dangerous-but-ok-d - (block $out - (block $middle - (if (i32.const 0) - (block - (block $x - (if (i32.add (i32.const 0) (i32.const 1)) - (br $x) ;; this is ok - we branch to x which is nested in us - ) - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $out) - ) - ) - (if (i32.const 0) - (block - (block $x - (if (i32.add (i32.const 0) (i32.const 1)) - (br $x) ;; this is ok - we branch to x which is nested in us - ) - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $out) - ) - ) - ;; no fallthrough, another thing to merge - (block $x - (if (i32.add (i32.const 0) (i32.const 1)) - (br $x) ;; this is ok - we branch to x which is nested in us - ) - ) - (drop (i32.const 1)) - (drop (i32.const 2)) - (br $out) - ) - ) - (drop (i32.const 3)) - ) - (func $if-suffix (param $x i32) (result i32) - (if - (local.get $x) - (local.set $x (i32.const 1)) - (block - (drop (call $if-suffix (i32.const -1))) - (local.set $x (i32.const 1)) - ) - ) - (if (result i32) - (local.get $x) - (i32.const 2) - (block (result i32) - (drop (call $if-suffix (i32.const -2))) - (i32.const 2) - ) - ) - ) -) diff -Nru binaryen-91/test/passes/remove-unused-names_merge-blocks_all-features.txt binaryen-99/test/passes/remove-unused-names_merge-blocks_all-features.txt --- binaryen-91/test/passes/remove-unused-names_merge-blocks_all-features.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-names_merge-blocks_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,1746 @@ +(module + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_f64 (func (result f64))) + (memory $0 (shared 256 256)) + (table $0 1 1 funcref) + (elem (i32.const 0) $call-i) + (func $call-i (param $0 i32) + (nop) + ) + (func $call-ii (param $0 i32) (param $1 i32) + (nop) + ) + (func $call-iii (param $0 i32) (param $1 i32) (param $2 i32) + (nop) + ) + (func $b0-yes (param $i1 i32) + (drop + (i32.const 10) + ) + ) + (func $b0-no (param $i1 i32) + (block $topmost + (block $block0 + (br $block0) + ) + (br $topmost) + ) + ) + (func $b0-br-but-ok (param $i1 i32) + (block $topmost + (br $topmost) + ) + ) + (func $b1-yes (param $i1 i32) + (drop + (i32.const 10) + ) + ) + (func $b2-yes (param $i1 i32) + (drop + (i32.const 5) + ) + (drop + (i32.const 10) + ) + (drop + (i32.const 15) + ) + ) + (func $b3-yes (param $i1 i32) + (drop + (i32.const 3) + ) + (drop + (i32.const 6) + ) + (drop + (i32.const 10) + ) + (drop + (i32.const 15) + ) + (drop + (i32.const 20) + ) + ) + (func $b4 (param $i1 i32) + (block $inner + (drop + (i32.const 10) + ) + (br $inner) + ) + ) + (func $b5 (param $i1 i32) + (block $middle + (drop + (i32.const 10) + ) + (block $inner + (br $inner) + ) + (br $middle) + ) + ) + (func $b6 (param $i1 i32) + (drop + (i32.const 5) + ) + (drop + (i32.const 10) + ) + (block $inner + (br $inner) + ) + (drop + (i32.const 15) + ) + ) + (func $b7 (param $i1 i32) + (drop + (i32.const 3) + ) + (drop + (i32.const 6) + ) + (drop + (i32.const 10) + ) + (block $inner + (br $inner) + ) + (drop + (i32.const 15) + ) + (block $middle + (br $middle) + ) + (drop + (i32.const 20) + ) + ) + (func $unary + (local $x i32) + (drop + (i32.eqz + (block (result i32) + (i32.const 10) + ) + ) + ) + (drop + (i32.const 10) + ) + (drop + (i32.eqz + (i32.const 20) + ) + ) + (drop + (i32.const 10) + ) + (drop + (i32.const 20) + ) + (drop + (i32.eqz + (i32.const 30) + ) + ) + (drop + (i32.const 10) + ) + (local.set $x + (i32.const 20) + ) + (drop + (i32.const 10) + ) + (drop + (i32.load + (i32.const 20) + ) + ) + (return + (block + (drop + (i32.const 10) + ) + (unreachable) + ) + ) + ) + (func $binary + (drop + (i32.add + (block (result i32) + (i32.const 10) + ) + (i32.const 20) + ) + ) + (drop + (i32.const 10) + ) + (drop + (i32.add + (i32.const 20) + (i32.const 30) + ) + ) + (drop + (i32.const 10) + ) + (drop + (i32.const 20) + ) + (drop + (i32.add + (i32.const 30) + (i32.const 40) + ) + ) + (drop + (i32.add + (i32.const 10) + (block (result i32) + (i32.const 20) + ) + ) + ) + (drop + (i32.const 20) + ) + (drop + (i32.add + (i32.const 10) + (i32.const 30) + ) + ) + (drop + (i32.const 20) + ) + (drop + (i32.const 30) + ) + (drop + (i32.add + (i32.const 10) + (i32.const 40) + ) + ) + (drop + (i32.add + (block (result i32) + (i32.const 10) + ) + (block (result i32) + (i32.const 20) + ) + ) + ) + (drop + (i32.const 10) + ) + (drop + (i32.const 30) + ) + (drop + (i32.add + (i32.const 20) + (i32.const 40) + ) + ) + (drop + (i32.const 10) + ) + (drop + (i32.const 20) + ) + (drop + (i32.const 40) + ) + (drop + (i32.const 50) + ) + (drop + (i32.add + (i32.const 30) + (i32.const 60) + ) + ) + (drop + (i32.const 20) + ) + (i32.store + (i32.const 10) + (i32.const 30) + ) + (drop + (i32.const 10) + ) + (i32.store + (i32.const 20) + (i32.const 30) + ) + (drop + (block + (drop + (i32.const 10) + ) + (i32.add + (unreachable) + (i32.const 20) + ) + ) + ) + (drop + (block (result i32) + (unreachable) + (drop + (i32.const 20) + ) + (i32.add + (i32.const 10) + (i32.const 30) + ) + ) + ) + ) + (func $trinary + (drop + (i32.const 10) + ) + (drop + (i32.const 30) + ) + (drop + (i32.const 50) + ) + (drop + (select + (i32.const 20) + (i32.const 40) + (i32.const 60) + ) + ) + (drop + (i32.const 20) + ) + (drop + (i32.const 40) + ) + (drop + (select + (block (result i32) + (i32.const 10) + ) + (i32.const 30) + (i32.const 50) + ) + ) + (drop + (i32.const 10) + ) + (drop + (i32.const 40) + ) + (drop + (select + (i32.const 20) + (block (result i32) + (i32.const 30) + ) + (i32.const 50) + ) + ) + (drop + (i32.const 10) + ) + (drop + (i32.const 30) + ) + (drop + (select + (i32.const 20) + (i32.const 40) + (block (result i32) + (i32.const 50) + ) + ) + ) + (drop + (i32.const 30) + ) + (drop + (select + (block (result i32) + (i32.const 10) + ) + (block (result i32) + (i32.const 20) + ) + (i32.const 40) + ) + ) + (drop + (i32.const 20) + ) + (drop + (select + (block (result i32) + (i32.const 10) + ) + (i32.const 30) + (block (result i32) + (i32.const 40) + ) + ) + ) + (drop + (i32.const 10) + ) + (drop + (select + (i32.const 20) + (block (result i32) + (i32.const 30) + ) + (block (result i32) + (i32.const 40) + ) + ) + ) + (drop + (select + (block (result i32) + (unreachable) + (i32.const 20) + ) + (block (result i32) + (drop + (i32.const 30) + ) + (i32.const 40) + ) + (block (result i32) + (drop + (i32.const 50) + ) + (i32.const 60) + ) + ) + ) + (drop + (select + (block (result i32) + (drop + (i32.const 10) + ) + (unreachable) + ) + (block (result i32) + (drop + (i32.const 30) + ) + (i32.const 40) + ) + (block (result i32) + (drop + (i32.const 50) + ) + (i32.const 60) + ) + ) + ) + (drop + (i32.const 10) + ) + (drop + (select + (i32.const 20) + (block (result i32) + (unreachable) + (i32.const 40) + ) + (block (result i32) + (drop + (i32.const 50) + ) + (i32.const 60) + ) + ) + ) + (drop + (i32.const 10) + ) + (drop + (select + (i32.const 20) + (block (result i32) + (drop + (i32.const 30) + ) + (unreachable) + ) + (block (result i32) + (drop + (i32.const 50) + ) + (i32.const 60) + ) + ) + ) + (drop + (i32.const 10) + ) + (drop + (i32.const 30) + ) + (drop + (select + (i32.const 20) + (i32.const 40) + (block (result i32) + (unreachable) + (i32.const 60) + ) + ) + ) + (drop + (i32.const 10) + ) + (drop + (i32.const 30) + ) + (drop + (select + (i32.const 20) + (i32.const 40) + (block (result i32) + (drop + (i32.const 50) + ) + (unreachable) + ) + ) + ) + ) + (func $breaks + (block $out + (drop + (i32.const 10) + ) + (drop + (i32.const 20) + ) + (br $out) + (drop + (i32.const 10) + ) + (br_if $out + (i32.const 20) + ) + (drop + (i32.const 10) + ) + (drop + (i32.const 20) + ) + (drop + (i32.const 30) + ) + (br_if $out + (i32.const 40) + ) + (drop + (i32.const 10) + ) + (br_table $out $out + (i32.const 20) + ) + (drop + (block $out2 (result i32) + (drop + (i32.const 10) + ) + (drop + (i32.const 30) + ) + (br_table $out2 $out2 + (i32.const 20) + (i32.const 40) + ) + ) + ) + (unreachable) + ) + ) + (func $calls + (call $call-i + (block (result i32) + (i32.const 10) + ) + ) + (drop + (i32.const 10) + ) + (call $call-i + (i32.const 20) + ) + (drop + (i32.const 10) + ) + (drop + (i32.const 20) + ) + (call $call-i + (i32.const 30) + ) + (drop + (i32.const 10) + ) + (drop + (i32.const 30) + ) + (call $call-ii + (i32.const 20) + (i32.const 40) + ) + (call $call-ii + (block (result i32) + (unreachable) + (i32.const 10) + ) + (block (result i32) + (drop + (i32.const 20) + ) + (i32.const 30) + ) + ) + (call $call-ii + (block (result i32) + (drop + (i32.const 10) + ) + (unreachable) + ) + (block (result i32) + (drop + (i32.const 20) + ) + (i32.const 30) + ) + ) + (drop + (i32.const 10) + ) + (call $call-ii + (i32.const 20) + (block (result i32) + (unreachable) + (i32.const 30) + ) + ) + (drop + (i32.const 10) + ) + (call $call-ii + (i32.const 20) + (block (result i32) + (drop + (i32.const 30) + ) + (unreachable) + ) + ) + (drop + (i32.const 10) + ) + (drop + (i32.const 30) + ) + (drop + (i32.const 50) + ) + (call $call-iii + (i32.const 20) + (i32.const 40) + (i32.const 60) + ) + (drop + (i32.const 10) + ) + (drop + (i32.const 40) + ) + (call $call-iii + (i32.const 20) + (i32.const 30) + (i32.const 50) + ) + (drop + (i32.const 10) + ) + (drop + (i32.const 30) + ) + (drop + (i32.const 50) + ) + (call_indirect (type $i32_i32_=>_none) + (i32.const 20) + (i32.const 40) + (i32.const 60) + ) + (call_indirect (type $i32_i32_=>_none) + (unreachable) + (block (result i32) + (drop + (i32.const 30) + ) + (i32.const 40) + ) + (block (result i32) + (drop + (i32.const 50) + ) + (i32.const 60) + ) + ) + (drop + (i32.const 31) + ) + (call_indirect (type $i32_i32_=>_none) + (i32.const 41) + (unreachable) + (block (result i32) + (drop + (i32.const 51) + ) + (i32.const 61) + ) + ) + (drop + (i32.const 32) + ) + (drop + (i32.const 52) + ) + (call_indirect (type $i32_i32_=>_none) + (i32.const 42) + (i32.const 62) + (unreachable) + ) + ) + (func $atomics + (drop + (i32.const 10) + ) + (drop + (i32.const 30) + ) + (drop + (i32.const 50) + ) + (drop + (i32.atomic.rmw.cmpxchg + (i32.const 20) + (i32.const 40) + (i32.const 60) + ) + ) + (drop + (i32.const 10) + ) + (drop + (i32.atomic.rmw.add + (i32.const 20) + (i32.const 30) + ) + ) + ) + (func $mix-select (param $x i32) + (drop + (select + (local.get $x) + (local.get $x) + (block (result i32) + (local.set $x + (i32.const 1) + ) + (i32.const 2) + ) + ) + ) + ) + (func $block-type-change + (local $0 f64) + (local $1 f64) + (if + (block (result i32) + (nop) + (f64.gt + (local.get $0) + (local.get $1) + ) + ) + (nop) + ) + ) + (func $do-reorder (param $x i32) + (local $y i32) + (if + (i32.const 1) + (block + (local.set $y + (i32.const 5) + ) + (local.set $x + (i32.le_u + (local.get $x) + (i32.const 10) + ) + ) + ) + ) + ) + (func $do-not-reorder (param $x i32) + (local $y i32) + (if + (i32.const 1) + (local.set $x + (i32.le_u + (local.get $y) + (block (result i32) + (local.set $y + (i32.const 5) + ) + (i32.const 10) + ) + ) + ) + ) + ) + (func $return-different-type (result i32) + (drop + (f64.abs + (block + (drop + (i32.const 2) + ) + (return + (i32.const 1) + ) + ) + ) + ) + (unreachable) + ) + (func $drop-unreachable (result i32) + (local $0 i32) + (drop + (block (result i32) + (unreachable) + ) + ) + (unreachable) + ) + (func $concrete_finale_in_unreachable (result f64) + (drop + (block (result f64) + (unreachable) + (f64.const 6.322092475576799e-96) + ) + ) + (f64.const -1) + ) + (func $dont-move-unreachable + (loop $label$0 + (drop + (block (result i32) + (br $label$0) + (i32.const 1) + ) + ) + ) + ) + (func $dont-move-unreachable-last + (loop $label$0 + (drop + (block (result i32) + (call $dont-move-unreachable-last) + (br $label$0) + ) + ) + ) + ) + (func $move-around-unreachable-in-middle + (loop $label$0 + (nop) + (drop + (block $label$3 (result i32) + (drop + (br_if $label$3 + (br $label$0) + (i32.const 0) + ) + ) + (i32.const 1) + ) + ) + ) + ) + (func $drop-unreachable-block-with-concrete-final + (drop + (block (result i32) + (drop + (block + (drop + (return) + ) + ) + ) + (i32.const -452) + ) + ) + ) + (func $merging-with-unreachable-in-middle (result i32) + (block (result i32) + (return + (i32.const 21536) + ) + (block $label$15 + (br $label$15) + ) + (i32.const 19299) + ) + ) + (func $remove-br-after-unreachable + (block $label$9 + (drop + (block + (block + (return) + (br $label$9) + ) + ) + ) + ) + ) + (func $block-tails + (block $l1 + (drop + (i32.const -2) + ) + (drop + (i32.const -1) + ) + (br $l1) + (drop + (i32.const 0) + ) + (drop + (i32.const 1) + ) + ) + (block $l2 + (br_if $l2 + (i32.const 2) + ) + (drop + (i32.const 3) + ) + ) + (block $l3 + (br_if $l3 + (i32.const 4) + ) + (br_if $l3 + (i32.const 5) + ) + (drop + (i32.const 6) + ) + ) + (block $l4 + (br_if $l4 + (i32.const 7) + ) + (br_if $l4 + (i32.const 8) + ) + (drop + (i32.const 9) + ) + ) + (block $l5 + (if + (i32.const 10) + (br_if $l5 + (i32.const 11) + ) + ) + (drop + (i32.const 12) + ) + ) + (block $l8 + (br_if $l8 + (i32.const 13) + ) + (br_if $l8 + (i32.const 14) + ) + (br_if $l8 + (i32.const 15) + ) + (drop + (i32.const 16) + ) + ) + (block $l11 + (br_if $l11 + (i32.const 17) + ) + (br_if $l11 + (i32.const 18) + ) + (br_if $l11 + (i32.const 19) + ) + (drop + (i32.const 20) + ) + ) + (block $l12 + (br_if $l12 + (i32.const 21) + ) + (block $l13 + (br_if $l13 + (i32.const 22) + ) + (block $l14 + (br_if $l14 + (i32.const 23) + ) + (drop + (i32.const 24) + ) + ) + (drop + (i32.const 25) + ) + ) + (drop + (i32.const 26) + ) + ) + (drop + (i32.const 27) + ) + (block $l17 + (br_if $l17 + (i32.const 28) + ) + (drop + (i32.const 29) + ) + ) + (block $l16 + (br_if $l16 + (i32.const 30) + ) + (drop + (i32.const 31) + ) + ) + (block $l15 + (br_if $l15 + (i32.const 32) + ) + (drop + (i32.const 33) + ) + ) + ) + (func $loop-tails + (loop $l1 + (drop + (i32.const -2) + ) + (drop + (i32.const -1) + ) + (br $l1) + (drop + (i32.const 0) + ) + (drop + (i32.const 1) + ) + ) + (loop $l2 + (br_if $l2 + (i32.const 2) + ) + ) + (drop + (i32.const 3) + ) + (block $b1 + (loop $l3 + (br_if $b1 + (i32.const 4) + ) + (br_if $l3 + (i32.const 5) + ) + ) + (drop + (i32.const 6) + ) + ) + (loop $l4 + (br_if $l4 + (i32.const 7) + ) + ) + (block $b2 + (br_if $b2 + (i32.const 8) + ) + (drop + (i32.const 9) + ) + ) + (loop $l5 + (if + (i32.const 10) + (br_if $l5 + (i32.const 11) + ) + ) + ) + (drop + (i32.const 12) + ) + (loop $l6 + (loop $l7 + (loop $l8 + (br_if $l6 + (i32.const 13) + ) + (br_if $l7 + (i32.const 14) + ) + (br_if $l8 + (i32.const 15) + ) + (drop + (i32.const 16) + ) + ) + ) + ) + (loop $l9 + (loop $l10 + (loop $l11 + (br_if $l11 + (i32.const 17) + ) + (br_if $l10 + (i32.const 18) + ) + (br_if $l9 + (i32.const 19) + ) + (drop + (i32.const 20) + ) + ) + ) + ) + (loop $l12 + (loop $l13 + (loop $l14 + (br_if $l12 + (i32.const 21) + ) + (br_if $l13 + (i32.const 22) + ) + (br_if $l14 + (i32.const 23) + ) + ) + ) + ) + (drop + (i32.const 24) + ) + (drop + (i32.const 25) + ) + (drop + (i32.const 26) + ) + (loop $l15 + (loop $l16 + (loop $l17 + (drop + (i32.const 27) + ) + (br_if $l17 + (i32.const 28) + ) + ) + (drop + (i32.const 29) + ) + (br_if $l16 + (i32.const 30) + ) + ) + (drop + (i32.const 31) + ) + (br_if $l15 + (i32.const 32) + ) + ) + (drop + (i32.const 33) + ) + ) + (func $block-tail-one + (block $l1 + (drop + (i32.const -2) + ) + (drop + (i32.const -1) + ) + (br $l1) + (drop + (i32.const 0) + ) + (drop + (i32.const 1) + ) + ) + (drop + (i32.const 2) + ) + ) + (func $loop-tail-one + (loop $l1 + (drop + (i32.const -2) + ) + (drop + (i32.const -1) + ) + (br $l1) + (drop + (i32.const 0) + ) + (drop + (i32.const 1) + ) + ) + (drop + (i32.const 2) + ) + ) + (func $block-tail-value (result i32) + (block $l1 (result i32) + (drop + (i32.const -1) + ) + (br $l1 + (i32.const 0) + ) + (drop + (i32.const 1) + ) + (i32.const 2) + ) + ) + (func $block-tail-empty + (block $l1 + (drop + (i32.const -1) + ) + (br $l1) + ) + ) + (func $loop-tail-empty + (loop $l1 + (drop + (i32.const -1) + ) + (br $l1) + ) + ) + (func $block-tail-unreachable (result i32) + (block $l1 (result i32) + (drop + (i32.const -1) + ) + (drop + (br_if $l1 + (i32.const 0) + (i32.const 1) + ) + ) + (drop + (i32.const 1) + ) + (unreachable) + ) + ) + (func $loop-tail-unreachable (result i32) + (loop $l1 + (drop + (i32.const -1) + ) + (br_if $l1 + (i32.const 1) + ) + ) + (drop + (i32.const 1) + ) + (unreachable) + ) +) +(module + (type $none_=>_i32 (func (result i32))) + (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) + (func $unreachable-in-sub-block (param $0 f64) (param $1 i32) (result i32) + (local $2 i32) + (local $9 i32) + (loop $label$1 + (local.set $9 + (local.tee $2 + (block $label$2 (result i32) + (drop + (br_if $label$2 + (local.tee $2 + (i32.const 0) + ) + (i32.const 0) + ) + ) + (br_if $label$1 + (i32.const 0) + ) + (block + (unreachable) + (nop) + ) + ) + ) + ) + ) + (nop) + (local.get $9) + ) + (func $trivial (result i32) + (block + (unreachable) + (nop) + ) + ) + (func $trivial-more (result i32) + (block + (nop) + (unreachable) + (nop) + (nop) + (nop) + ) + (block + (nop) + (unreachable) + (nop) + ) + ) +) +(module + (type $none_=>_none (func)) + (func $merge-some-block + (drop + (i32.const 1) + ) + (block $b1 + (br_if $b1 + (i32.const 0) + ) + ) + (block $b2 + (br_if $b2 + (i32.const 0) + ) + (drop + (i32.const 2) + ) + ) + (drop + (i32.const 3) + ) + (block $b3 + (br_if $b3 + (i32.const 0) + ) + (drop + (i32.const 4) + ) + ) + (block $b3-dead-code-so-ignore + (drop + (i32.const 3) + ) + (br $b3-dead-code-so-ignore) + (drop + (i32.const 4) + ) + ) + (drop + (i32.const 5) + ) + (block $b4 + (br_if $b4 + (i32.const 0) + ) + (drop + (i32.const 6) + ) + (br_if $b4 + (i32.const 0) + ) + ) + (block $b5 + (br_if $b5 + (i32.const 0) + ) + (drop + (i32.const 7) + ) + (br_if $b5 + (i32.const 0) + ) + (drop + (i32.const 8) + ) + ) + (drop + (i32.const 9) + ) + (drop + (i32.const 10) + ) + (block $b6 + (br_if $b6 + (i32.const 0) + ) + ) + ) + (func $merge-some-loop + (drop + (i32.const 1) + ) + (block $b1 + (br_if $b1 + (i32.const 0) + ) + ) + (block $b2 + (br_if $b2 + (i32.const 0) + ) + (drop + (i32.const 2) + ) + ) + (drop + (i32.const 3) + ) + (block $b3 + (br_if $b3 + (i32.const 0) + ) + (drop + (i32.const 4) + ) + ) + (drop + (i32.const 5) + ) + (block $b4 + (br_if $b4 + (i32.const 0) + ) + (drop + (i32.const 6) + ) + (br_if $b4 + (i32.const 0) + ) + ) + (block $b5 + (br_if $b5 + (i32.const 0) + ) + (drop + (i32.const 7) + ) + (br_if $b5 + (i32.const 0) + ) + (drop + (i32.const 8) + ) + ) + (drop + (i32.const 9) + ) + (drop + (i32.const 10) + ) + (block $b6 + (br_if $b6 + (i32.const 0) + ) + ) + ) + (func $merge-some-loop-taken + (loop $l1 + (block $b1 + (drop + (i32.const 1) + ) + (br_if $l1 + (i32.const 0) + ) + (drop + (i32.const 2) + ) + (br_if $b1 + (i32.const 0) + ) + (drop + (i32.const 3) + ) + ) + ) + (loop $l2 + (block $b2 + (drop + (i32.const 4) + ) + (br_if $b2 + (i32.const 0) + ) + (drop + (i32.const 5) + ) + (br_if $l2 + (i32.const 0) + ) + (drop + (i32.const 6) + ) + ) + ) + (loop $l3 + (block $b3 + (drop + (i32.const 7) + ) + (br_if $b3 + (i32.const 0) + ) + (drop + (i32.const 8) + ) + (br_if $l3 + (i32.const 0) + ) + ) + ) + (loop $l4 + (block $b4 + (br_if $l4 + (i32.const 0) + ) + (drop + (i32.const 9) + ) + (br_if $b4 + (i32.const 0) + ) + (drop + (i32.const 10) + ) + ) + ) + (loop $l5 + (block $b5 + (drop + (i32.const 7) + ) + (br_if $b5 + (i32.const 0) + ) + (br_if $l5 + (i32.const 0) + ) + ) + ) + (loop $l6 + (block $b6 + (br_if $l6 + (i32.const 0) + ) + (br_if $b6 + (i32.const 0) + ) + (drop + (i32.const 10) + ) + ) + ) + (loop $l7 + (block $b7 + (drop + (i32.const 11) + ) + (br_if $l7 + (i32.const 0) + ) + (br_if $b7 + (i32.const 0) + ) + (drop + (i32.const 13) + ) + ) + ) + (loop $l8 + (block $b8 + (drop + (i32.const 14) + ) + (br_if $b8 + (i32.const 0) + ) + (br_if $l8 + (i32.const 0) + ) + (drop + (i32.const 16) + ) + ) + ) + (loop $l9 + (drop + (i32.const 17) + ) + (br_if $l9 + (i32.const 0) + ) + (drop + (i32.const 18) + ) + (br_if $l9 + (i32.const 0) + ) + ) + (drop + (i32.const 19) + ) + (loop $l10 + (drop + (i32.const 20) + ) + (br_if $l10 + (i32.const 0) + ) + ) + (drop + (i32.const 21) + ) + (loop $l11 + (br_if $l11 + (i32.const 0) + ) + ) + (drop + (i32.const 23) + ) + (loop $l12 + (drop + (i32.const 24) + ) + (br_if $l12 + (i32.const 0) + ) + ) + ) +) +(module + (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) + (event $e (attr 0) (param i32)) + (func $foo + (nop) + ) + (func $throw + (nop) + (throw $e + (i32.const 3) + ) + ) + (func $rethrow + (local $0 exnref) + (call $foo) + (rethrow + (local.get $0) + ) + ) + (func $br_on_exn (result i32) + (local $0 exnref) + (block $label$0 (result i32) + (call $foo) + (drop + (br_on_exn $label$0 $e + (local.get $0) + ) + ) + (i32.const 3) + ) + ) + (func $cannot_extract_br_on_exn_exnref + (local $0 exnref) + (drop + (block $label$0 (result i32) + (drop + (br_on_exn $label$0 $e + (local.get $0) + ) + ) + (i32.const 5) + ) + ) + ) +) diff -Nru binaryen-91/test/passes/remove-unused-names_merge-blocks_all-features.wast binaryen-99/test/passes/remove-unused-names_merge-blocks_all-features.wast --- binaryen-91/test/passes/remove-unused-names_merge-blocks_all-features.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-names_merge-blocks_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,1615 @@ +(module + (memory (shared 256 256)) + (type $i (func (param i32))) + (type $ii (func (param i32 i32))) + (type $iii (func (param i32 i32 i32))) + (type $3 (func)) + (table 1 1 funcref) + (elem (i32.const 0) $call-i) + (func $call-i (type $i) (param $0 i32) + (nop) + ) + (func $call-ii (type $ii) (param $0 i32) (param $1 i32) + (nop) + ) + (func $call-iii (type $iii) (param $0 i32) (param $1 i32) (param $2 i32) + (nop) + ) + (func $b0-yes (type $i) (param $i1 i32) + (block $topmost + (block $block0 + (drop + (i32.const 10) + ) + ) + ) + ) + (func $b0-no (type $i) (param $i1 i32) + (block $topmost + (block $block0 + (br $block0) + ) + (br $topmost) + ) + ) + (func $b0-br-but-ok (type $i) (param $i1 i32) + (block $topmost + (block $block0 + (br $topmost) + ) + ) + ) + (func $b1-yes (type $i) (param $i1 i32) + (block $topmost + (block $block0 + (block $block1 + (drop + (i32.const 10) + ) + ) + ) + ) + ) + (func $b2-yes (type $i) (param $i1 i32) + (block $topmost + (drop + (i32.const 5) + ) + (block $block0 + (drop + (i32.const 10) + ) + ) + (drop + (i32.const 15) + ) + ) + ) + (func $b3-yes (type $i) (param $i1 i32) + (block $topmost + (drop + (i32.const 3) + ) + (block $block0 + (drop + (i32.const 6) + ) + (block $block1 + (drop + (i32.const 10) + ) + ) + (drop + (i32.const 15) + ) + ) + (drop + (i32.const 20) + ) + ) + ) + (func $b4 (type $i) (param $i1 i32) + (block $topmost + (block $inner + (drop + (i32.const 10) + ) + (br $inner) + ) + ) + ) + (func $b5 (type $i) (param $i1 i32) + (block $topmost + (block $middle + (block $inner + (drop + (i32.const 10) + ) + (br $inner) + ) + (br $middle) + ) + ) + ) + (func $b6 (type $i) (param $i1 i32) + (block $topmost + (drop + (i32.const 5) + ) + (block $inner + (drop + (i32.const 10) + ) + (br $inner) + ) + (drop + (i32.const 15) + ) + ) + ) + (func $b7 (type $i) (param $i1 i32) + (block $topmost + (drop + (i32.const 3) + ) + (block $middle + (drop + (i32.const 6) + ) + (block $inner + (drop + (i32.const 10) + ) + (br $inner) + ) + (drop + (i32.const 15) + ) + (br $middle) + ) + (drop + (i32.const 20) + ) + ) + ) + (func $unary (type $3) + (local $x i32) + (drop + (i32.eqz + (block $block0 (result i32) + (i32.const 10) + ) + ) + ) + (drop + (i32.eqz + (block $block1 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + ) + ) + (drop + (i32.eqz + (block $block2 (result i32) + (drop + (i32.const 10) + ) + (drop + (i32.const 20) + ) + (i32.const 30) + ) + ) + ) + (local.set $x + (block $block3 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + ) + (drop + (i32.load + (block $block4 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + ) + ) + (return + (block $block5 + (drop + (i32.const 10) + ) + (unreachable) + ) + ) + ) + (func $binary (type $3) + (drop + (i32.add + (block $block0 (result i32) + (i32.const 10) + ) + (i32.const 20) + ) + ) + (drop + (i32.add + (block $block1 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + (i32.const 30) + ) + ) + (drop + (i32.add + (block $block2 (result i32) + (drop + (i32.const 10) + ) + (drop + (i32.const 20) + ) + (i32.const 30) + ) + (i32.const 40) + ) + ) + (drop + (i32.add + (i32.const 10) + (block $block3 (result i32) + (i32.const 20) + ) + ) + ) + (drop + (i32.add + (i32.const 10) + (block $block4 (result i32) + (drop + (i32.const 20) + ) + (i32.const 30) + ) + ) + ) + (drop + (i32.add + (i32.const 10) + (block $block5 (result i32) + (drop + (i32.const 20) + ) + (drop + (i32.const 30) + ) + (i32.const 40) + ) + ) + ) + (drop + (i32.add + (block $block6 (result i32) + (i32.const 10) + ) + (block $block7 (result i32) + (i32.const 20) + ) + ) + ) + (drop + (i32.add + (block $block8 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + (block $block9 (result i32) + (drop + (i32.const 30) + ) + (i32.const 40) + ) + ) + ) + (drop + (i32.add + (block $block10 (result i32) + (drop + (i32.const 10) + ) + (drop + (i32.const 20) + ) + (i32.const 30) + ) + (block $block11 (result i32) + (drop + (i32.const 40) + ) + (drop + (i32.const 50) + ) + (i32.const 60) + ) + ) + ) + (i32.store + (i32.const 10) + (block $block12 (result i32) + (drop + (i32.const 20) + ) + (i32.const 30) + ) + ) + (i32.store + (block $block13 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + (i32.const 30) + ) + (drop + (i32.add + (unreachable) + (block $block14 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + ) + ) + (drop + (i32.add + (block $block15 (result i32) + (unreachable) + (i32.const 10) + ) + (block $block16 (result i32) + (drop + (i32.const 20) + ) + (i32.const 30) + ) + ) + ) + ) + (func $trinary (type $3) + (drop + (select + (block $block0 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + (block $block1 (result i32) + (drop + (i32.const 30) + ) + (i32.const 40) + ) + (block $block2 (result i32) + (drop + (i32.const 50) + ) + (i32.const 60) + ) + ) + ) + (drop + (select + (block $block3 (result i32) + (i32.const 10) + ) + (block $block4 (result i32) + (drop + (i32.const 20) + ) + (i32.const 30) + ) + (block $block5 (result i32) + (drop + (i32.const 40) + ) + (i32.const 50) + ) + ) + ) + (drop + (select + (block $block6 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + (block $block7 (result i32) + (i32.const 30) + ) + (block $block8 (result i32) + (drop + (i32.const 40) + ) + (i32.const 50) + ) + ) + ) + (drop + (select + (block $block9 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + (block $block10 (result i32) + (drop + (i32.const 30) + ) + (i32.const 40) + ) + (block $block11 (result i32) + (i32.const 50) + ) + ) + ) + (drop + (select + (block $block12 (result i32) + (i32.const 10) + ) + (block $block13 (result i32) + (i32.const 20) + ) + (block $block14 (result i32) + (drop + (i32.const 30) + ) + (i32.const 40) + ) + ) + ) + (drop + (select + (block $block15 (result i32) + (i32.const 10) + ) + (block $block16 (result i32) + (drop + (i32.const 20) + ) + (i32.const 30) + ) + (block $block17 (result i32) + (i32.const 40) + ) + ) + ) + (drop + (select + (block $block18 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + (block $block19 (result i32) + (i32.const 30) + ) + (block $block20 (result i32) + (i32.const 40) + ) + ) + ) + (drop + (select + (block $block21 (result i32) + (unreachable) + (i32.const 20) + ) + (block $block22 (result i32) + (drop + (i32.const 30) + ) + (i32.const 40) + ) + (block $block23 (result i32) + (drop + (i32.const 50) + ) + (i32.const 60) + ) + ) + ) + (drop + (select + (block $block24 (result i32) + (drop + (i32.const 10) + ) + (unreachable) + ) + (block $block25 (result i32) + (drop + (i32.const 30) + ) + (i32.const 40) + ) + (block $block26 (result i32) + (drop + (i32.const 50) + ) + (i32.const 60) + ) + ) + ) + (drop + (select + (block $block27 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + (block $block28 (result i32) + (unreachable) + (i32.const 40) + ) + (block $block29 (result i32) + (drop + (i32.const 50) + ) + (i32.const 60) + ) + ) + ) + (drop + (select + (block $block30 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + (block $block31 (result i32) + (drop + (i32.const 30) + ) + (unreachable) + ) + (block $block32 (result i32) + (drop + (i32.const 50) + ) + (i32.const 60) + ) + ) + ) + (drop + (select + (block $block33 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + (block $block34 (result i32) + (drop + (i32.const 30) + ) + (i32.const 40) + ) + (block $block35 (result i32) + (unreachable) + (i32.const 60) + ) + ) + ) + (drop + (select + (block $block36 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + (block $block37 (result i32) + (drop + (i32.const 30) + ) + (i32.const 40) + ) + (block $block38 (result i32) + (drop + (i32.const 50) + ) + (unreachable) + ) + ) + ) + ) + (func $breaks (type $3) + (block $out + (block + (drop + (block $block0 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + ) + (br $out) + ) + (br_if $out + (block $block1 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + ) + (block + (drop + (block $block2 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + ) + (br_if $out + (block $block3 (result i32) + (drop + (i32.const 30) + ) + (i32.const 40) + ) + ) + ) + (br_table $out $out + (block $block4 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + ) + (drop + (block $out2 (result i32) + (br_table $out2 $out2 + (block $block5 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + (block $block6 (result i32) + (drop + (i32.const 30) + ) + (i32.const 40) + ) + ) + ) + ) + (unreachable) + ) + ) + (func $calls (type $3) + (call $call-i + (block $block0 (result i32) + (i32.const 10) + ) + ) + (call $call-i + (block $block1 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + ) + (call $call-i + (block $block2 (result i32) + (drop + (i32.const 10) + ) + (drop + (i32.const 20) + ) + (i32.const 30) + ) + ) + (call $call-ii + (block $block3 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + (block $block4 (result i32) + (drop + (i32.const 30) + ) + (i32.const 40) + ) + ) + (call $call-ii + (block $block5 (result i32) + (unreachable) + (i32.const 10) + ) + (block $block6 (result i32) + (drop + (i32.const 20) + ) + (i32.const 30) + ) + ) + (call $call-ii + (block $block7 (result i32) + (drop + (i32.const 10) + ) + (unreachable) + ) + (block $block8 (result i32) + (drop + (i32.const 20) + ) + (i32.const 30) + ) + ) + (call $call-ii + (block $block9 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + (block $block10 (result i32) + (unreachable) + (i32.const 30) + ) + ) + (call $call-ii + (block $block11 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + (block $block12 (result i32) + (drop + (i32.const 30) + ) + (unreachable) + ) + ) + (call $call-iii + (block $block13 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + (block $block14 (result i32) + (drop + (i32.const 30) + ) + (i32.const 40) + ) + (block $block15 (result i32) + (drop + (i32.const 50) + ) + (i32.const 60) + ) + ) + (call $call-iii + (block $block16 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + (i32.const 30) + (block $block17 (result i32) + (drop + (i32.const 40) + ) + (i32.const 50) + ) + ) + (call_indirect (type $ii) + (block $block18 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + (block $block19 (result i32) + (drop + (i32.const 30) + ) + (i32.const 40) + ) + (block $block20 (result i32) + (drop + (i32.const 50) + ) + (i32.const 60) + ) + ) + (call_indirect (type $ii) + (unreachable) + (block $block21 (result i32) + (drop + (i32.const 30) + ) + (i32.const 40) + ) + (block $block22 (result i32) + (drop + (i32.const 50) + ) + (i32.const 60) + ) + ) + (call_indirect (type $ii) + (block $block21 (result i32) + (drop + (i32.const 31) + ) + (i32.const 41) + ) + (unreachable) + (block $block22 (result i32) + (drop + (i32.const 51) + ) + (i32.const 61) + ) + ) + (call_indirect (type $ii) + (block $block21 (result i32) + (drop + (i32.const 32) + ) + (i32.const 42) + ) + (block $block22 (result i32) + (drop + (i32.const 52) + ) + (i32.const 62) + ) + (unreachable) + ) + ) + (func $atomics (type $3) + (drop + (i32.atomic.rmw.cmpxchg ;; mergeblock logic should be same as select + (block $block0 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + (block $block1 (result i32) + (drop + (i32.const 30) + ) + (i32.const 40) + ) + (block $block2 (result i32) + (drop + (i32.const 50) + ) + (i32.const 60) + ) + ) + ) + (drop + (i32.atomic.rmw.add ;; atomicrmw is like a binary + (block $block1 (result i32) + (drop + (i32.const 10) + ) + (i32.const 20) + ) + (i32.const 30) + ) + ) + ) + (func $mix-select (param $x i32) + (drop + (select + (local.get $x) + (local.get $x) + (block (result i32) + (local.set $x ;; cannot be moved before the gets + (i32.const 1) + ) + (i32.const 2) + ) + ) + ) + ) + (func $block-type-change (type $3) + (local $0 f64) + (local $1 f64) + (if + (f64.gt + (local.get $0) + (block $block0 (result f64) + (nop) + (local.get $1) + ) + ) + (nop) + ) + ) + (func $do-reorder (param $x i32) + (local $y i32) + (if (i32.const 1) + (block + (local.set $x + (i32.le_u + (local.get $x) + (block (result i32) + (local.set $y (i32.const 5)) + (i32.const 10) + ) + ) + ) + ) + ) + ) + (func $do-not-reorder (param $x i32) + (local $y i32) + (if (i32.const 1) + (block + (local.set $x + (i32.le_u + (local.get $y) + (block (result i32) + (local.set $y (i32.const 5)) + (i32.const 10) + ) + ) + ) + ) + ) + ) + (func $return-different-type (result i32) + (drop + (f64.abs + (return + (block (result i32) ;; when we flip the block out, it should have an ok type for the (dead) f64 op + (drop (i32.const 2)) + (i32.const 1) + ) + ) + ) + ) + (unreachable) + ) + + (func $drop-unreachable (result i32) + (local $0 i32) + (block $label$1 (result i32) + (drop + (block (result i32) + (unreachable) + ) + ) + (unreachable) + ) + ) + (func $concrete_finale_in_unreachable (result f64) + (block $label$0 (result f64) + (drop + (block (result f64) + (unreachable) + (f64.const 6.322092475576799e-96) + ) + ) + (f64.const -1) + ) + ) + (func $dont-move-unreachable + (loop $label$0 + (drop + (block $label$3 (result i32) + (br $label$0) + (i32.const 1) + ) + ) + ) + ) + (func $dont-move-unreachable-last + (loop $label$0 + (drop + (block $label$3 (result i32) + (call $dont-move-unreachable-last) + (br $label$0) + ) + ) + ) + ) + (func $move-around-unreachable-in-middle + (loop $label$0 + (drop + (block $label$2 (result i32) + (block $block2 + (nop) + ) + (block $label$3 (result i32) + (drop + (br_if $label$3 + (br $label$0) + (i32.const 0) + ) + ) + (i32.const 1) + ) + ) + ) + ) + ) + (func $drop-unreachable-block-with-concrete-final + (drop + (block (result i32) + (drop + (block + (drop + (return) + ) + ) + ) + (i32.const -452) + ) + ) + ) + (func $merging-with-unreachable-in-middle (result i32) + (block $label$1 (result i32) + (block (result i32) + (return + (i32.const 21536) + ) + (block $label$15 + (br $label$15) + ) + (i32.const 19299) + ) + ) + ) + (func $remove-br-after-unreachable + (block $label$9 + (drop + (block + (block + (return) + (br $label$9) ;; removing this leads to the block becoming unreachable + ) + ) + ) + ) + ) + (func $block-tails + (block $l1 + (drop (i32.const -2)) + (drop (i32.const -1)) + (br $l1) + (drop (i32.const 0)) + (drop (i32.const 1)) + ) + (block $l2 + (br_if $l2 (i32.const 2)) + (drop (i32.const 3)) + ) + (block $b1 + (block $l3 + (br_if $b1 (i32.const 4)) + (br_if $l3 (i32.const 5)) + (drop (i32.const 6)) + ) + ) + (block $b2 + (block $l4 + (br_if $l4 (i32.const 7)) + (br_if $b2 (i32.const 8)) + (drop (i32.const 9)) + ) + ) + (block $l5 + (if (i32.const 10) + (br_if $l5 (i32.const 11)) + ) + (drop (i32.const 12)) + ) + (block $l6 + (block $l7 + (block $l8 + (br_if $l6 (i32.const 13)) + (br_if $l7 (i32.const 14)) + (br_if $l8 (i32.const 15)) + (drop (i32.const 16)) + ) + ) + ) + (block $l9 + (block $l10 + (block $l11 + (br_if $l11 (i32.const 17)) + (br_if $l10 (i32.const 18)) + (br_if $l9 (i32.const 19)) + (drop (i32.const 20)) + ) + ) + ) + (block $l12 + (block $l13 + (block $l14 + (br_if $l12 (i32.const 21)) + (br_if $l13 (i32.const 22)) + (br_if $l14 (i32.const 23)) + (drop (i32.const 24)) + ) + (drop (i32.const 25)) + ) + (drop (i32.const 26)) + ) + (block $l15 + (block $l16 + (block $l17 + (drop (i32.const 27)) + (br_if $l17 (i32.const 28)) + (drop (i32.const 29)) + ) + (br_if $l16 (i32.const 30)) + (drop (i32.const 31)) + ) + (br_if $l15 (i32.const 32)) + (drop (i32.const 33)) + ) + ) + (func $loop-tails + (loop $l1 + (drop (i32.const -2)) + (drop (i32.const -1)) + (br $l1) + (drop (i32.const 0)) + (drop (i32.const 1)) + ) + (loop $l2 + (br_if $l2 (i32.const 2)) + (drop (i32.const 3)) + ) + (block $b1 + (loop $l3 + (br_if $b1 (i32.const 4)) + (br_if $l3 (i32.const 5)) + (drop (i32.const 6)) + ) + ) + (block $b2 + (loop $l4 + (br_if $l4 (i32.const 7)) + (br_if $b2 (i32.const 8)) + (drop (i32.const 9)) + ) + ) + (loop $l5 + (if (i32.const 10) + (br_if $l5 (i32.const 11)) + ) + (drop (i32.const 12)) + ) + (loop $l6 + (loop $l7 + (loop $l8 + (br_if $l6 (i32.const 13)) + (br_if $l7 (i32.const 14)) + (br_if $l8 (i32.const 15)) + (drop (i32.const 16)) + ) + ) + ) + (loop $l9 + (loop $l10 + (loop $l11 + (br_if $l11 (i32.const 17)) + (br_if $l10 (i32.const 18)) + (br_if $l9 (i32.const 19)) + (drop (i32.const 20)) + ) + ) + ) + (loop $l12 + (loop $l13 + (loop $l14 + (br_if $l12 (i32.const 21)) + (br_if $l13 (i32.const 22)) + (br_if $l14 (i32.const 23)) + (drop (i32.const 24)) + ) + (drop (i32.const 25)) + ) + (drop (i32.const 26)) + ) + (loop $l15 + (loop $l16 + (loop $l17 + (drop (i32.const 27)) + (br_if $l17 (i32.const 28)) + (drop (i32.const 29)) + ) + (br_if $l16 (i32.const 30)) + (drop (i32.const 31)) + ) + (br_if $l15 (i32.const 32)) + (drop (i32.const 33)) + ) + ) + (func $block-tail-one + (block $outer + (block $l1 + (drop (i32.const -2)) + (drop (i32.const -1)) + (br $l1) + (drop (i32.const 0)) + (drop (i32.const 1)) + ) + (drop (i32.const 2)) + ) + ) + (func $loop-tail-one + (block $outer + (loop $l1 + (drop (i32.const -2)) + (drop (i32.const -1)) + (br $l1) + (drop (i32.const 0)) + (drop (i32.const 1)) + ) + (drop (i32.const 2)) + ) + ) + (func $block-tail-value (result i32) + (block $outer (result i32) + (block $l1 (result i32) + (drop (i32.const -1)) + (br $l1 (i32.const 0)) + (drop (i32.const 1)) + (i32.const 2) + ) + ) + ) + (func $block-tail-empty + (block $outer + (block $l1 + (drop (i32.const -1)) + (br $l1) + ) + ) + ) + (func $loop-tail-empty + (block $outer + (loop $l1 + (drop (i32.const -1)) + (br $l1) + ) + ) + ) + (func $block-tail-unreachable (result i32) + (block $outer (result i32) + (block $l1 (result i32) + (drop (i32.const -1)) + (drop (br_if $l1 (i32.const 0) (i32.const 1))) + (drop (i32.const 1)) + (unreachable) + ) + ) + ) + (func $loop-tail-unreachable (result i32) + (block $outer (result i32) + (loop $l1 (result i32) + (drop (i32.const -1)) + (br_if $l1 (i32.const 1)) + (drop (i32.const 1)) + (unreachable) + ) + ) + ) +) +(module + (func $unreachable-in-sub-block (param $0 f64) (param $1 i32) (result i32) + (local $2 i32) + (local $9 i32) + (loop $label$1 + (local.set $9 + (local.tee $2 + (block $label$2 (result i32) + (block + (drop + (br_if $label$2 + (local.tee $2 + (i32.const 0) + ) + (i32.const 0) + ) + ) + ) + (br_if $label$1 + (i32.const 0) + ) + (block + (unreachable) + (nop) ;; bad if moved out to the outer block which is i32. current state works since this block is unreachable! + ) + ) + ) + ) + ) + (nop) + (local.get $9) + ) + (func $trivial (result i32) + (block (result i32) + (block + (unreachable) + (nop) + ) + ) + ) + (func $trivial-more (result i32) + (block (result i32) + (block + (nop) + (unreachable) + (nop) + (nop) + (nop) + ) + (block + (nop) + (unreachable) + (nop) + ) + ) + ) +) +(module + (func $merge-some-block + (block $b1 + (drop (i32.const 1)) + (br_if $b1 (i32.const 0)) + ) + (block $b2 + (br_if $b2 (i32.const 0)) + (drop (i32.const 2)) + ) + (block $b3 + (drop (i32.const 3)) + (br_if $b3 (i32.const 0)) + (drop (i32.const 4)) + ) + (block $b3-dead-code-so-ignore + (drop (i32.const 3)) + (br $b3-dead-code-so-ignore) + (drop (i32.const 4)) + ) + (block $b4 + (drop (i32.const 5)) + (br_if $b4 (i32.const 0)) + (drop (i32.const 6)) + (br_if $b4 (i32.const 0)) + ) + (block $b5 + (br_if $b5 (i32.const 0)) + (drop (i32.const 7)) + (br_if $b5 (i32.const 0)) + (drop (i32.const 8)) + ) + (block $b6 + (drop (i32.const 9)) + (drop (i32.const 10)) + (br_if $b6 (i32.const 0)) + ) + ) + (func $merge-some-loop + (loop $l1 + (block $b1 + (drop (i32.const 1)) + (br_if $b1 (i32.const 0)) + ) + ) + (loop $l2 + (block $b2 + (br_if $b2 (i32.const 0)) + (drop (i32.const 2)) + ) + ) + (loop $l3 + (block $b3 + (drop (i32.const 3)) + (br_if $b3 (i32.const 0)) + (drop (i32.const 4)) + ) + ) + (loop $l4 + (block $b4 + (drop (i32.const 5)) + (br_if $b4 (i32.const 0)) + (drop (i32.const 6)) + (br_if $b4 (i32.const 0)) + ) + ) + (loop $l5 + (block $b5 + (br_if $b5 (i32.const 0)) + (drop (i32.const 7)) + (br_if $b5 (i32.const 0)) + (drop (i32.const 8)) + ) + ) + (loop $l6 + (block $b6 + (drop (i32.const 9)) + (drop (i32.const 10)) + (br_if $b6 (i32.const 0)) + ) + ) + ) + (func $merge-some-loop-taken + (loop $l1 + (block $b1 + (drop (i32.const 1)) + (br_if $l1 (i32.const 0)) + (drop (i32.const 2)) + (br_if $b1 (i32.const 0)) + (drop (i32.const 3)) + ) + ) + (loop $l2 + (block $b2 + (drop (i32.const 4)) + (br_if $b2 (i32.const 0)) + (drop (i32.const 5)) + (br_if $l2 (i32.const 0)) + (drop (i32.const 6)) + ) + ) + (loop $l3 + (block $b3 + (drop (i32.const 7)) + (br_if $b3 (i32.const 0)) + (drop (i32.const 8)) + (br_if $l3 (i32.const 0)) + ) + ) + (loop $l4 + (block $b4 + (br_if $l4 (i32.const 0)) + (drop (i32.const 9)) + (br_if $b4 (i32.const 0)) + (drop (i32.const 10)) + ) + ) + (loop $l5 + (block $b5 + (drop (i32.const 7)) + (br_if $b5 (i32.const 0)) + (br_if $l5 (i32.const 0)) + ) + ) + (loop $l6 + (block $b6 + (br_if $l6 (i32.const 0)) + (br_if $b6 (i32.const 0)) + (drop (i32.const 10)) + ) + ) + (loop $l7 + (block $b7 + (drop (i32.const 11)) + (br_if $l7 (i32.const 0)) + (br_if $b7 (i32.const 0)) + (drop (i32.const 13)) + ) + ) + (loop $l8 + (block $b8 + (drop (i32.const 14)) + (br_if $b8 (i32.const 0)) + (br_if $l8 (i32.const 0)) + (drop (i32.const 16)) + ) + ) + (loop $l9 + (block $b9 + (drop (i32.const 17)) + (br_if $l9 (i32.const 0)) + (drop (i32.const 18)) + (br_if $l9 (i32.const 0)) + (drop (i32.const 19)) + ) + ) + (loop $l10 + (block $b10 + (drop (i32.const 20)) + (br_if $l10 (i32.const 0)) + (drop (i32.const 21)) + ) + ) + (loop $l11 + (block $b11 + (br_if $l11 (i32.const 0)) + (drop (i32.const 23)) + ) + ) + (loop $l12 + (block $b12 + (drop (i32.const 24)) + (br_if $l12 (i32.const 0)) + ) + ) + ) +) + +(module + (event $e (attr 0) (param i32)) + (func $foo) + + ;; 'nop' within 'block' of `throw' can be hoisted + (func $throw + (throw $e + (block (result i32) + (nop) + (i32.const 3) + ) + ) + ) + + ;; 'call $foo' within 'block' of `rethrow' can be hoisted + (func $rethrow (local $0 exnref) + (rethrow + (block (result exnref) + (call $foo) + (local.get $0) + ) + ) + ) + + ;; 'call $foo' within 'block' of `br_on_exn' can be hoisted + (func $br_on_exn (result i32) (local $0 exnref) + (block $label$0 (result i32) + (drop + (br_on_exn $label$0 $e + (block (result exnref) + (call $foo) + (local.get $0) + ) + ) + ) + (i32.const 3) + ) + ) + + ;; Unlike br_if, br_on_exn's exnref argument itself cannot be extracted. + ;; Without proper handling for br_on_exn in ProblemFinder, this crashes. + (func $cannot_extract_br_on_exn_exnref (local $0 exnref) + (block + (drop + (block $label$0 (result i32) + (drop + (br_on_exn $label$0 $e + (local.get $0) + ) + ) + (i32.const 5) + ) + ) + ) + ) +) diff -Nru binaryen-91/test/passes/remove-unused-names_merge-blocks_enable-threads.txt binaryen-99/test/passes/remove-unused-names_merge-blocks_enable-threads.txt --- binaryen-91/test/passes/remove-unused-names_merge-blocks_enable-threads.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-names_merge-blocks_enable-threads.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,1699 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_f64 (func (result f64))) - (memory $0 (shared 256 256)) - (table $0 1 1 funcref) - (elem (i32.const 0) $call-i) - (func $call-i (; 0 ;) (param $0 i32) - (nop) - ) - (func $call-ii (; 1 ;) (param $0 i32) (param $1 i32) - (nop) - ) - (func $call-iii (; 2 ;) (param $0 i32) (param $1 i32) (param $2 i32) - (nop) - ) - (func $b0-yes (; 3 ;) (param $i1 i32) - (drop - (i32.const 10) - ) - ) - (func $b0-no (; 4 ;) (param $i1 i32) - (block $topmost - (block $block0 - (br $block0) - ) - (br $topmost) - ) - ) - (func $b0-br-but-ok (; 5 ;) (param $i1 i32) - (block $topmost - (br $topmost) - ) - ) - (func $b1-yes (; 6 ;) (param $i1 i32) - (drop - (i32.const 10) - ) - ) - (func $b2-yes (; 7 ;) (param $i1 i32) - (drop - (i32.const 5) - ) - (drop - (i32.const 10) - ) - (drop - (i32.const 15) - ) - ) - (func $b3-yes (; 8 ;) (param $i1 i32) - (drop - (i32.const 3) - ) - (drop - (i32.const 6) - ) - (drop - (i32.const 10) - ) - (drop - (i32.const 15) - ) - (drop - (i32.const 20) - ) - ) - (func $b4 (; 9 ;) (param $i1 i32) - (block $inner - (drop - (i32.const 10) - ) - (br $inner) - ) - ) - (func $b5 (; 10 ;) (param $i1 i32) - (block $middle - (drop - (i32.const 10) - ) - (block $inner - (br $inner) - ) - (br $middle) - ) - ) - (func $b6 (; 11 ;) (param $i1 i32) - (drop - (i32.const 5) - ) - (drop - (i32.const 10) - ) - (block $inner - (br $inner) - ) - (drop - (i32.const 15) - ) - ) - (func $b7 (; 12 ;) (param $i1 i32) - (drop - (i32.const 3) - ) - (drop - (i32.const 6) - ) - (drop - (i32.const 10) - ) - (block $inner - (br $inner) - ) - (drop - (i32.const 15) - ) - (block $middle - (br $middle) - ) - (drop - (i32.const 20) - ) - ) - (func $unary (; 13 ;) - (local $x i32) - (drop - (i32.eqz - (block (result i32) - (i32.const 10) - ) - ) - ) - (drop - (i32.const 10) - ) - (drop - (i32.eqz - (i32.const 20) - ) - ) - (drop - (i32.const 10) - ) - (drop - (i32.const 20) - ) - (drop - (i32.eqz - (i32.const 30) - ) - ) - (drop - (i32.const 10) - ) - (local.set $x - (i32.const 20) - ) - (drop - (i32.const 10) - ) - (drop - (i32.load - (i32.const 20) - ) - ) - (return - (block - (drop - (i32.const 10) - ) - (unreachable) - ) - ) - ) - (func $binary (; 14 ;) - (drop - (i32.add - (block (result i32) - (i32.const 10) - ) - (i32.const 20) - ) - ) - (drop - (i32.const 10) - ) - (drop - (i32.add - (i32.const 20) - (i32.const 30) - ) - ) - (drop - (i32.const 10) - ) - (drop - (i32.const 20) - ) - (drop - (i32.add - (i32.const 30) - (i32.const 40) - ) - ) - (drop - (i32.add - (i32.const 10) - (block (result i32) - (i32.const 20) - ) - ) - ) - (drop - (i32.const 20) - ) - (drop - (i32.add - (i32.const 10) - (i32.const 30) - ) - ) - (drop - (i32.const 20) - ) - (drop - (i32.const 30) - ) - (drop - (i32.add - (i32.const 10) - (i32.const 40) - ) - ) - (drop - (i32.add - (block (result i32) - (i32.const 10) - ) - (block (result i32) - (i32.const 20) - ) - ) - ) - (drop - (i32.const 10) - ) - (drop - (i32.const 30) - ) - (drop - (i32.add - (i32.const 20) - (i32.const 40) - ) - ) - (drop - (i32.const 10) - ) - (drop - (i32.const 20) - ) - (drop - (i32.const 40) - ) - (drop - (i32.const 50) - ) - (drop - (i32.add - (i32.const 30) - (i32.const 60) - ) - ) - (drop - (i32.const 20) - ) - (i32.store - (i32.const 10) - (i32.const 30) - ) - (drop - (i32.const 10) - ) - (i32.store - (i32.const 20) - (i32.const 30) - ) - (drop - (block - (drop - (i32.const 10) - ) - (i32.add - (unreachable) - (i32.const 20) - ) - ) - ) - (drop - (block (result i32) - (unreachable) - (drop - (i32.const 20) - ) - (i32.add - (i32.const 10) - (i32.const 30) - ) - ) - ) - ) - (func $trinary (; 15 ;) - (drop - (i32.const 10) - ) - (drop - (i32.const 30) - ) - (drop - (i32.const 50) - ) - (drop - (select - (i32.const 20) - (i32.const 40) - (i32.const 60) - ) - ) - (drop - (i32.const 20) - ) - (drop - (i32.const 40) - ) - (drop - (select - (block (result i32) - (i32.const 10) - ) - (i32.const 30) - (i32.const 50) - ) - ) - (drop - (i32.const 10) - ) - (drop - (i32.const 40) - ) - (drop - (select - (i32.const 20) - (block (result i32) - (i32.const 30) - ) - (i32.const 50) - ) - ) - (drop - (i32.const 10) - ) - (drop - (i32.const 30) - ) - (drop - (select - (i32.const 20) - (i32.const 40) - (block (result i32) - (i32.const 50) - ) - ) - ) - (drop - (i32.const 30) - ) - (drop - (select - (block (result i32) - (i32.const 10) - ) - (block (result i32) - (i32.const 20) - ) - (i32.const 40) - ) - ) - (drop - (i32.const 20) - ) - (drop - (select - (block (result i32) - (i32.const 10) - ) - (i32.const 30) - (block (result i32) - (i32.const 40) - ) - ) - ) - (drop - (i32.const 10) - ) - (drop - (select - (i32.const 20) - (block (result i32) - (i32.const 30) - ) - (block (result i32) - (i32.const 40) - ) - ) - ) - (drop - (select - (block (result i32) - (unreachable) - (i32.const 20) - ) - (block (result i32) - (drop - (i32.const 30) - ) - (i32.const 40) - ) - (block (result i32) - (drop - (i32.const 50) - ) - (i32.const 60) - ) - ) - ) - (drop - (select - (block (result i32) - (drop - (i32.const 10) - ) - (unreachable) - ) - (block (result i32) - (drop - (i32.const 30) - ) - (i32.const 40) - ) - (block (result i32) - (drop - (i32.const 50) - ) - (i32.const 60) - ) - ) - ) - (drop - (i32.const 10) - ) - (drop - (select - (i32.const 20) - (block (result i32) - (unreachable) - (i32.const 40) - ) - (block (result i32) - (drop - (i32.const 50) - ) - (i32.const 60) - ) - ) - ) - (drop - (i32.const 10) - ) - (drop - (select - (i32.const 20) - (block (result i32) - (drop - (i32.const 30) - ) - (unreachable) - ) - (block (result i32) - (drop - (i32.const 50) - ) - (i32.const 60) - ) - ) - ) - (drop - (i32.const 10) - ) - (drop - (i32.const 30) - ) - (drop - (select - (i32.const 20) - (i32.const 40) - (block (result i32) - (unreachable) - (i32.const 60) - ) - ) - ) - (drop - (i32.const 10) - ) - (drop - (i32.const 30) - ) - (drop - (select - (i32.const 20) - (i32.const 40) - (block (result i32) - (drop - (i32.const 50) - ) - (unreachable) - ) - ) - ) - ) - (func $breaks (; 16 ;) - (block $out - (drop - (i32.const 10) - ) - (drop - (i32.const 20) - ) - (br $out) - (drop - (i32.const 10) - ) - (br_if $out - (i32.const 20) - ) - (drop - (i32.const 10) - ) - (drop - (i32.const 20) - ) - (drop - (i32.const 30) - ) - (br_if $out - (i32.const 40) - ) - (drop - (i32.const 10) - ) - (br_table $out $out - (i32.const 20) - ) - (drop - (block $out2 (result i32) - (drop - (i32.const 10) - ) - (drop - (i32.const 30) - ) - (br_table $out2 $out2 - (i32.const 20) - (i32.const 40) - ) - ) - ) - (unreachable) - ) - ) - (func $calls (; 17 ;) - (call $call-i - (block (result i32) - (i32.const 10) - ) - ) - (drop - (i32.const 10) - ) - (call $call-i - (i32.const 20) - ) - (drop - (i32.const 10) - ) - (drop - (i32.const 20) - ) - (call $call-i - (i32.const 30) - ) - (drop - (i32.const 10) - ) - (drop - (i32.const 30) - ) - (call $call-ii - (i32.const 20) - (i32.const 40) - ) - (call $call-ii - (block (result i32) - (unreachable) - (i32.const 10) - ) - (block (result i32) - (drop - (i32.const 20) - ) - (i32.const 30) - ) - ) - (call $call-ii - (block (result i32) - (drop - (i32.const 10) - ) - (unreachable) - ) - (block (result i32) - (drop - (i32.const 20) - ) - (i32.const 30) - ) - ) - (drop - (i32.const 10) - ) - (call $call-ii - (i32.const 20) - (block (result i32) - (unreachable) - (i32.const 30) - ) - ) - (drop - (i32.const 10) - ) - (call $call-ii - (i32.const 20) - (block (result i32) - (drop - (i32.const 30) - ) - (unreachable) - ) - ) - (drop - (i32.const 10) - ) - (drop - (i32.const 30) - ) - (drop - (i32.const 50) - ) - (call $call-iii - (i32.const 20) - (i32.const 40) - (i32.const 60) - ) - (drop - (i32.const 10) - ) - (drop - (i32.const 40) - ) - (call $call-iii - (i32.const 20) - (i32.const 30) - (i32.const 50) - ) - (drop - (i32.const 10) - ) - (drop - (i32.const 30) - ) - (drop - (i32.const 50) - ) - (call_indirect (type $i32_i32_=>_none) - (i32.const 20) - (i32.const 40) - (i32.const 60) - ) - (call_indirect (type $i32_i32_=>_none) - (unreachable) - (block (result i32) - (drop - (i32.const 30) - ) - (i32.const 40) - ) - (block (result i32) - (drop - (i32.const 50) - ) - (i32.const 60) - ) - ) - (drop - (i32.const 31) - ) - (call_indirect (type $i32_i32_=>_none) - (i32.const 41) - (unreachable) - (block (result i32) - (drop - (i32.const 51) - ) - (i32.const 61) - ) - ) - (drop - (i32.const 32) - ) - (drop - (i32.const 52) - ) - (call_indirect (type $i32_i32_=>_none) - (i32.const 42) - (i32.const 62) - (unreachable) - ) - ) - (func $atomics (; 18 ;) - (drop - (i32.const 10) - ) - (drop - (i32.const 30) - ) - (drop - (i32.const 50) - ) - (drop - (i32.atomic.rmw.cmpxchg - (i32.const 20) - (i32.const 40) - (i32.const 60) - ) - ) - (drop - (i32.const 10) - ) - (drop - (i32.atomic.rmw.add - (i32.const 20) - (i32.const 30) - ) - ) - ) - (func $mix-select (; 19 ;) (param $x i32) - (drop - (select - (local.get $x) - (local.get $x) - (block (result i32) - (local.set $x - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - ) - (func $block-type-change (; 20 ;) - (local $0 f64) - (local $1 f64) - (if - (block (result i32) - (nop) - (f64.gt - (local.get $0) - (local.get $1) - ) - ) - (nop) - ) - ) - (func $do-reorder (; 21 ;) (param $x i32) - (local $y i32) - (if - (i32.const 1) - (block - (local.set $y - (i32.const 5) - ) - (local.set $x - (i32.le_u - (local.get $x) - (i32.const 10) - ) - ) - ) - ) - ) - (func $do-not-reorder (; 22 ;) (param $x i32) - (local $y i32) - (if - (i32.const 1) - (local.set $x - (i32.le_u - (local.get $y) - (block (result i32) - (local.set $y - (i32.const 5) - ) - (i32.const 10) - ) - ) - ) - ) - ) - (func $return-different-type (; 23 ;) (result i32) - (drop - (f64.abs - (block - (drop - (i32.const 2) - ) - (return - (i32.const 1) - ) - ) - ) - ) - (unreachable) - ) - (func $drop-unreachable (; 24 ;) (result i32) - (local $0 i32) - (drop - (block (result i32) - (unreachable) - ) - ) - (unreachable) - ) - (func $concrete_finale_in_unreachable (; 25 ;) (result f64) - (drop - (block (result f64) - (unreachable) - (f64.const 6.322092475576799e-96) - ) - ) - (f64.const -1) - ) - (func $dont-move-unreachable (; 26 ;) - (loop $label$0 - (drop - (block (result i32) - (br $label$0) - (i32.const 1) - ) - ) - ) - ) - (func $dont-move-unreachable-last (; 27 ;) - (loop $label$0 - (drop - (block (result i32) - (call $dont-move-unreachable-last) - (br $label$0) - ) - ) - ) - ) - (func $move-around-unreachable-in-middle (; 28 ;) - (loop $label$0 - (nop) - (drop - (block $label$3 (result i32) - (drop - (br_if $label$3 - (br $label$0) - (i32.const 0) - ) - ) - (i32.const 1) - ) - ) - ) - ) - (func $drop-unreachable-block-with-concrete-final (; 29 ;) - (drop - (block (result i32) - (drop - (block - (drop - (return) - ) - ) - ) - (i32.const -452) - ) - ) - ) - (func $merging-with-unreachable-in-middle (; 30 ;) (result i32) - (block (result i32) - (return - (i32.const 21536) - ) - (block $label$15 - (br $label$15) - ) - (i32.const 19299) - ) - ) - (func $remove-br-after-unreachable (; 31 ;) - (block $label$9 - (drop - (block - (block - (return) - (br $label$9) - ) - ) - ) - ) - ) - (func $block-tails (; 32 ;) - (block $l1 - (drop - (i32.const -2) - ) - (drop - (i32.const -1) - ) - (br $l1) - (drop - (i32.const 0) - ) - (drop - (i32.const 1) - ) - ) - (block $l2 - (br_if $l2 - (i32.const 2) - ) - (drop - (i32.const 3) - ) - ) - (block $l3 - (br_if $l3 - (i32.const 4) - ) - (br_if $l3 - (i32.const 5) - ) - (drop - (i32.const 6) - ) - ) - (block $l4 - (br_if $l4 - (i32.const 7) - ) - (br_if $l4 - (i32.const 8) - ) - (drop - (i32.const 9) - ) - ) - (block $l5 - (if - (i32.const 10) - (br_if $l5 - (i32.const 11) - ) - ) - (drop - (i32.const 12) - ) - ) - (block $l8 - (br_if $l8 - (i32.const 13) - ) - (br_if $l8 - (i32.const 14) - ) - (br_if $l8 - (i32.const 15) - ) - (drop - (i32.const 16) - ) - ) - (block $l11 - (br_if $l11 - (i32.const 17) - ) - (br_if $l11 - (i32.const 18) - ) - (br_if $l11 - (i32.const 19) - ) - (drop - (i32.const 20) - ) - ) - (block $l12 - (br_if $l12 - (i32.const 21) - ) - (block $l13 - (br_if $l13 - (i32.const 22) - ) - (block $l14 - (br_if $l14 - (i32.const 23) - ) - (drop - (i32.const 24) - ) - ) - (drop - (i32.const 25) - ) - ) - (drop - (i32.const 26) - ) - ) - (drop - (i32.const 27) - ) - (block $l17 - (br_if $l17 - (i32.const 28) - ) - (drop - (i32.const 29) - ) - ) - (block $l16 - (br_if $l16 - (i32.const 30) - ) - (drop - (i32.const 31) - ) - ) - (block $l15 - (br_if $l15 - (i32.const 32) - ) - (drop - (i32.const 33) - ) - ) - ) - (func $loop-tails (; 33 ;) - (loop $l1 - (drop - (i32.const -2) - ) - (drop - (i32.const -1) - ) - (br $l1) - (drop - (i32.const 0) - ) - (drop - (i32.const 1) - ) - ) - (loop $l2 - (br_if $l2 - (i32.const 2) - ) - ) - (drop - (i32.const 3) - ) - (block $b1 - (loop $l3 - (br_if $b1 - (i32.const 4) - ) - (br_if $l3 - (i32.const 5) - ) - ) - (drop - (i32.const 6) - ) - ) - (loop $l4 - (br_if $l4 - (i32.const 7) - ) - ) - (block $b2 - (br_if $b2 - (i32.const 8) - ) - (drop - (i32.const 9) - ) - ) - (loop $l5 - (if - (i32.const 10) - (br_if $l5 - (i32.const 11) - ) - ) - ) - (drop - (i32.const 12) - ) - (loop $l6 - (loop $l7 - (loop $l8 - (br_if $l6 - (i32.const 13) - ) - (br_if $l7 - (i32.const 14) - ) - (br_if $l8 - (i32.const 15) - ) - (drop - (i32.const 16) - ) - ) - ) - ) - (loop $l9 - (loop $l10 - (loop $l11 - (br_if $l11 - (i32.const 17) - ) - (br_if $l10 - (i32.const 18) - ) - (br_if $l9 - (i32.const 19) - ) - (drop - (i32.const 20) - ) - ) - ) - ) - (loop $l12 - (loop $l13 - (loop $l14 - (br_if $l12 - (i32.const 21) - ) - (br_if $l13 - (i32.const 22) - ) - (br_if $l14 - (i32.const 23) - ) - ) - ) - ) - (drop - (i32.const 24) - ) - (drop - (i32.const 25) - ) - (drop - (i32.const 26) - ) - (loop $l15 - (loop $l16 - (loop $l17 - (drop - (i32.const 27) - ) - (br_if $l17 - (i32.const 28) - ) - ) - (drop - (i32.const 29) - ) - (br_if $l16 - (i32.const 30) - ) - ) - (drop - (i32.const 31) - ) - (br_if $l15 - (i32.const 32) - ) - ) - (drop - (i32.const 33) - ) - ) - (func $block-tail-one (; 34 ;) - (block $l1 - (drop - (i32.const -2) - ) - (drop - (i32.const -1) - ) - (br $l1) - (drop - (i32.const 0) - ) - (drop - (i32.const 1) - ) - ) - (drop - (i32.const 2) - ) - ) - (func $loop-tail-one (; 35 ;) - (loop $l1 - (drop - (i32.const -2) - ) - (drop - (i32.const -1) - ) - (br $l1) - (drop - (i32.const 0) - ) - (drop - (i32.const 1) - ) - ) - (drop - (i32.const 2) - ) - ) - (func $block-tail-value (; 36 ;) (result i32) - (block $l1 (result i32) - (drop - (i32.const -1) - ) - (br $l1 - (i32.const 0) - ) - (drop - (i32.const 1) - ) - (i32.const 2) - ) - ) - (func $block-tail-empty (; 37 ;) - (block $l1 - (drop - (i32.const -1) - ) - (br $l1) - ) - ) - (func $loop-tail-empty (; 38 ;) - (loop $l1 - (drop - (i32.const -1) - ) - (br $l1) - ) - ) - (func $block-tail-unreachable (; 39 ;) (result i32) - (block $l1 (result i32) - (drop - (i32.const -1) - ) - (drop - (br_if $l1 - (i32.const 0) - (i32.const 1) - ) - ) - (drop - (i32.const 1) - ) - (unreachable) - ) - ) - (func $loop-tail-unreachable (; 40 ;) (result i32) - (loop $l1 - (drop - (i32.const -1) - ) - (br_if $l1 - (i32.const 1) - ) - ) - (drop - (i32.const 1) - ) - (unreachable) - ) -) -(module - (type $none_=>_i32 (func (result i32))) - (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) - (func $unreachable-in-sub-block (; 0 ;) (param $0 f64) (param $1 i32) (result i32) - (local $2 i32) - (local $9 i32) - (loop $label$1 - (local.set $9 - (local.tee $2 - (block $label$2 (result i32) - (drop - (br_if $label$2 - (local.tee $2 - (i32.const 0) - ) - (i32.const 0) - ) - ) - (br_if $label$1 - (i32.const 0) - ) - (block - (unreachable) - (nop) - ) - ) - ) - ) - ) - (nop) - (local.get $9) - ) - (func $trivial (; 1 ;) (result i32) - (block - (unreachable) - (nop) - ) - ) - (func $trivial-more (; 2 ;) (result i32) - (block - (nop) - (unreachable) - (nop) - (nop) - (nop) - ) - (block - (nop) - (unreachable) - (nop) - ) - ) -) -(module - (type $none_=>_none (func)) - (func $merge-some-block (; 0 ;) - (drop - (i32.const 1) - ) - (block $b1 - (br_if $b1 - (i32.const 0) - ) - ) - (block $b2 - (br_if $b2 - (i32.const 0) - ) - (drop - (i32.const 2) - ) - ) - (drop - (i32.const 3) - ) - (block $b3 - (br_if $b3 - (i32.const 0) - ) - (drop - (i32.const 4) - ) - ) - (block $b3-dead-code-so-ignore - (drop - (i32.const 3) - ) - (br $b3-dead-code-so-ignore) - (drop - (i32.const 4) - ) - ) - (drop - (i32.const 5) - ) - (block $b4 - (br_if $b4 - (i32.const 0) - ) - (drop - (i32.const 6) - ) - (br_if $b4 - (i32.const 0) - ) - ) - (block $b5 - (br_if $b5 - (i32.const 0) - ) - (drop - (i32.const 7) - ) - (br_if $b5 - (i32.const 0) - ) - (drop - (i32.const 8) - ) - ) - (drop - (i32.const 9) - ) - (drop - (i32.const 10) - ) - (block $b6 - (br_if $b6 - (i32.const 0) - ) - ) - ) - (func $merge-some-loop (; 1 ;) - (drop - (i32.const 1) - ) - (block $b1 - (br_if $b1 - (i32.const 0) - ) - ) - (block $b2 - (br_if $b2 - (i32.const 0) - ) - (drop - (i32.const 2) - ) - ) - (drop - (i32.const 3) - ) - (block $b3 - (br_if $b3 - (i32.const 0) - ) - (drop - (i32.const 4) - ) - ) - (drop - (i32.const 5) - ) - (block $b4 - (br_if $b4 - (i32.const 0) - ) - (drop - (i32.const 6) - ) - (br_if $b4 - (i32.const 0) - ) - ) - (block $b5 - (br_if $b5 - (i32.const 0) - ) - (drop - (i32.const 7) - ) - (br_if $b5 - (i32.const 0) - ) - (drop - (i32.const 8) - ) - ) - (drop - (i32.const 9) - ) - (drop - (i32.const 10) - ) - (block $b6 - (br_if $b6 - (i32.const 0) - ) - ) - ) - (func $merge-some-loop-taken (; 2 ;) - (loop $l1 - (block $b1 - (drop - (i32.const 1) - ) - (br_if $l1 - (i32.const 0) - ) - (drop - (i32.const 2) - ) - (br_if $b1 - (i32.const 0) - ) - (drop - (i32.const 3) - ) - ) - ) - (loop $l2 - (block $b2 - (drop - (i32.const 4) - ) - (br_if $b2 - (i32.const 0) - ) - (drop - (i32.const 5) - ) - (br_if $l2 - (i32.const 0) - ) - (drop - (i32.const 6) - ) - ) - ) - (loop $l3 - (block $b3 - (drop - (i32.const 7) - ) - (br_if $b3 - (i32.const 0) - ) - (drop - (i32.const 8) - ) - (br_if $l3 - (i32.const 0) - ) - ) - ) - (loop $l4 - (block $b4 - (br_if $l4 - (i32.const 0) - ) - (drop - (i32.const 9) - ) - (br_if $b4 - (i32.const 0) - ) - (drop - (i32.const 10) - ) - ) - ) - (loop $l5 - (block $b5 - (drop - (i32.const 7) - ) - (br_if $b5 - (i32.const 0) - ) - (br_if $l5 - (i32.const 0) - ) - ) - ) - (loop $l6 - (block $b6 - (br_if $l6 - (i32.const 0) - ) - (br_if $b6 - (i32.const 0) - ) - (drop - (i32.const 10) - ) - ) - ) - (loop $l7 - (block $b7 - (drop - (i32.const 11) - ) - (br_if $l7 - (i32.const 0) - ) - (br_if $b7 - (i32.const 0) - ) - (drop - (i32.const 13) - ) - ) - ) - (loop $l8 - (block $b8 - (drop - (i32.const 14) - ) - (br_if $b8 - (i32.const 0) - ) - (br_if $l8 - (i32.const 0) - ) - (drop - (i32.const 16) - ) - ) - ) - (loop $l9 - (drop - (i32.const 17) - ) - (br_if $l9 - (i32.const 0) - ) - (drop - (i32.const 18) - ) - (br_if $l9 - (i32.const 0) - ) - ) - (drop - (i32.const 19) - ) - (loop $l10 - (drop - (i32.const 20) - ) - (br_if $l10 - (i32.const 0) - ) - ) - (drop - (i32.const 21) - ) - (loop $l11 - (br_if $l11 - (i32.const 0) - ) - ) - (drop - (i32.const 23) - ) - (loop $l12 - (drop - (i32.const 24) - ) - (br_if $l12 - (i32.const 0) - ) - ) - ) -) diff -Nru binaryen-91/test/passes/remove-unused-names_merge-blocks_enable-threads.wast binaryen-99/test/passes/remove-unused-names_merge-blocks_enable-threads.wast --- binaryen-91/test/passes/remove-unused-names_merge-blocks_enable-threads.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-names_merge-blocks_enable-threads.wast 1970-01-01 00:00:00.000000000 +0000 @@ -1,1558 +0,0 @@ -(module - (memory (shared 256 256)) - (type $i (func (param i32))) - (type $ii (func (param i32 i32))) - (type $iii (func (param i32 i32 i32))) - (type $3 (func)) - (table 1 1 funcref) - (elem (i32.const 0) $call-i) - (func $call-i (type $i) (param $0 i32) - (nop) - ) - (func $call-ii (type $ii) (param $0 i32) (param $1 i32) - (nop) - ) - (func $call-iii (type $iii) (param $0 i32) (param $1 i32) (param $2 i32) - (nop) - ) - (func $b0-yes (type $i) (param $i1 i32) - (block $topmost - (block $block0 - (drop - (i32.const 10) - ) - ) - ) - ) - (func $b0-no (type $i) (param $i1 i32) - (block $topmost - (block $block0 - (br $block0) - ) - (br $topmost) - ) - ) - (func $b0-br-but-ok (type $i) (param $i1 i32) - (block $topmost - (block $block0 - (br $topmost) - ) - ) - ) - (func $b1-yes (type $i) (param $i1 i32) - (block $topmost - (block $block0 - (block $block1 - (drop - (i32.const 10) - ) - ) - ) - ) - ) - (func $b2-yes (type $i) (param $i1 i32) - (block $topmost - (drop - (i32.const 5) - ) - (block $block0 - (drop - (i32.const 10) - ) - ) - (drop - (i32.const 15) - ) - ) - ) - (func $b3-yes (type $i) (param $i1 i32) - (block $topmost - (drop - (i32.const 3) - ) - (block $block0 - (drop - (i32.const 6) - ) - (block $block1 - (drop - (i32.const 10) - ) - ) - (drop - (i32.const 15) - ) - ) - (drop - (i32.const 20) - ) - ) - ) - (func $b4 (type $i) (param $i1 i32) - (block $topmost - (block $inner - (drop - (i32.const 10) - ) - (br $inner) - ) - ) - ) - (func $b5 (type $i) (param $i1 i32) - (block $topmost - (block $middle - (block $inner - (drop - (i32.const 10) - ) - (br $inner) - ) - (br $middle) - ) - ) - ) - (func $b6 (type $i) (param $i1 i32) - (block $topmost - (drop - (i32.const 5) - ) - (block $inner - (drop - (i32.const 10) - ) - (br $inner) - ) - (drop - (i32.const 15) - ) - ) - ) - (func $b7 (type $i) (param $i1 i32) - (block $topmost - (drop - (i32.const 3) - ) - (block $middle - (drop - (i32.const 6) - ) - (block $inner - (drop - (i32.const 10) - ) - (br $inner) - ) - (drop - (i32.const 15) - ) - (br $middle) - ) - (drop - (i32.const 20) - ) - ) - ) - (func $unary (type $3) - (local $x i32) - (drop - (i32.eqz - (block $block0 (result i32) - (i32.const 10) - ) - ) - ) - (drop - (i32.eqz - (block $block1 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - ) - ) - (drop - (i32.eqz - (block $block2 (result i32) - (drop - (i32.const 10) - ) - (drop - (i32.const 20) - ) - (i32.const 30) - ) - ) - ) - (local.set $x - (block $block3 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - ) - (drop - (i32.load - (block $block4 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - ) - ) - (return - (block $block5 - (drop - (i32.const 10) - ) - (unreachable) - ) - ) - ) - (func $binary (type $3) - (drop - (i32.add - (block $block0 (result i32) - (i32.const 10) - ) - (i32.const 20) - ) - ) - (drop - (i32.add - (block $block1 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - (i32.const 30) - ) - ) - (drop - (i32.add - (block $block2 (result i32) - (drop - (i32.const 10) - ) - (drop - (i32.const 20) - ) - (i32.const 30) - ) - (i32.const 40) - ) - ) - (drop - (i32.add - (i32.const 10) - (block $block3 (result i32) - (i32.const 20) - ) - ) - ) - (drop - (i32.add - (i32.const 10) - (block $block4 (result i32) - (drop - (i32.const 20) - ) - (i32.const 30) - ) - ) - ) - (drop - (i32.add - (i32.const 10) - (block $block5 (result i32) - (drop - (i32.const 20) - ) - (drop - (i32.const 30) - ) - (i32.const 40) - ) - ) - ) - (drop - (i32.add - (block $block6 (result i32) - (i32.const 10) - ) - (block $block7 (result i32) - (i32.const 20) - ) - ) - ) - (drop - (i32.add - (block $block8 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - (block $block9 (result i32) - (drop - (i32.const 30) - ) - (i32.const 40) - ) - ) - ) - (drop - (i32.add - (block $block10 (result i32) - (drop - (i32.const 10) - ) - (drop - (i32.const 20) - ) - (i32.const 30) - ) - (block $block11 (result i32) - (drop - (i32.const 40) - ) - (drop - (i32.const 50) - ) - (i32.const 60) - ) - ) - ) - (i32.store - (i32.const 10) - (block $block12 (result i32) - (drop - (i32.const 20) - ) - (i32.const 30) - ) - ) - (i32.store - (block $block13 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - (i32.const 30) - ) - (drop - (i32.add - (unreachable) - (block $block14 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - ) - ) - (drop - (i32.add - (block $block15 (result i32) - (unreachable) - (i32.const 10) - ) - (block $block16 (result i32) - (drop - (i32.const 20) - ) - (i32.const 30) - ) - ) - ) - ) - (func $trinary (type $3) - (drop - (select - (block $block0 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - (block $block1 (result i32) - (drop - (i32.const 30) - ) - (i32.const 40) - ) - (block $block2 (result i32) - (drop - (i32.const 50) - ) - (i32.const 60) - ) - ) - ) - (drop - (select - (block $block3 (result i32) - (i32.const 10) - ) - (block $block4 (result i32) - (drop - (i32.const 20) - ) - (i32.const 30) - ) - (block $block5 (result i32) - (drop - (i32.const 40) - ) - (i32.const 50) - ) - ) - ) - (drop - (select - (block $block6 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - (block $block7 (result i32) - (i32.const 30) - ) - (block $block8 (result i32) - (drop - (i32.const 40) - ) - (i32.const 50) - ) - ) - ) - (drop - (select - (block $block9 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - (block $block10 (result i32) - (drop - (i32.const 30) - ) - (i32.const 40) - ) - (block $block11 (result i32) - (i32.const 50) - ) - ) - ) - (drop - (select - (block $block12 (result i32) - (i32.const 10) - ) - (block $block13 (result i32) - (i32.const 20) - ) - (block $block14 (result i32) - (drop - (i32.const 30) - ) - (i32.const 40) - ) - ) - ) - (drop - (select - (block $block15 (result i32) - (i32.const 10) - ) - (block $block16 (result i32) - (drop - (i32.const 20) - ) - (i32.const 30) - ) - (block $block17 (result i32) - (i32.const 40) - ) - ) - ) - (drop - (select - (block $block18 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - (block $block19 (result i32) - (i32.const 30) - ) - (block $block20 (result i32) - (i32.const 40) - ) - ) - ) - (drop - (select - (block $block21 (result i32) - (unreachable) - (i32.const 20) - ) - (block $block22 (result i32) - (drop - (i32.const 30) - ) - (i32.const 40) - ) - (block $block23 (result i32) - (drop - (i32.const 50) - ) - (i32.const 60) - ) - ) - ) - (drop - (select - (block $block24 (result i32) - (drop - (i32.const 10) - ) - (unreachable) - ) - (block $block25 (result i32) - (drop - (i32.const 30) - ) - (i32.const 40) - ) - (block $block26 (result i32) - (drop - (i32.const 50) - ) - (i32.const 60) - ) - ) - ) - (drop - (select - (block $block27 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - (block $block28 (result i32) - (unreachable) - (i32.const 40) - ) - (block $block29 (result i32) - (drop - (i32.const 50) - ) - (i32.const 60) - ) - ) - ) - (drop - (select - (block $block30 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - (block $block31 (result i32) - (drop - (i32.const 30) - ) - (unreachable) - ) - (block $block32 (result i32) - (drop - (i32.const 50) - ) - (i32.const 60) - ) - ) - ) - (drop - (select - (block $block33 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - (block $block34 (result i32) - (drop - (i32.const 30) - ) - (i32.const 40) - ) - (block $block35 (result i32) - (unreachable) - (i32.const 60) - ) - ) - ) - (drop - (select - (block $block36 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - (block $block37 (result i32) - (drop - (i32.const 30) - ) - (i32.const 40) - ) - (block $block38 (result i32) - (drop - (i32.const 50) - ) - (unreachable) - ) - ) - ) - ) - (func $breaks (type $3) - (block $out - (block - (drop - (block $block0 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - ) - (br $out) - ) - (br_if $out - (block $block1 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - ) - (block - (drop - (block $block2 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - ) - (br_if $out - (block $block3 (result i32) - (drop - (i32.const 30) - ) - (i32.const 40) - ) - ) - ) - (br_table $out $out - (block $block4 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - ) - (drop - (block $out2 (result i32) - (br_table $out2 $out2 - (block $block5 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - (block $block6 (result i32) - (drop - (i32.const 30) - ) - (i32.const 40) - ) - ) - ) - ) - (unreachable) - ) - ) - (func $calls (type $3) - (call $call-i - (block $block0 (result i32) - (i32.const 10) - ) - ) - (call $call-i - (block $block1 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - ) - (call $call-i - (block $block2 (result i32) - (drop - (i32.const 10) - ) - (drop - (i32.const 20) - ) - (i32.const 30) - ) - ) - (call $call-ii - (block $block3 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - (block $block4 (result i32) - (drop - (i32.const 30) - ) - (i32.const 40) - ) - ) - (call $call-ii - (block $block5 (result i32) - (unreachable) - (i32.const 10) - ) - (block $block6 (result i32) - (drop - (i32.const 20) - ) - (i32.const 30) - ) - ) - (call $call-ii - (block $block7 (result i32) - (drop - (i32.const 10) - ) - (unreachable) - ) - (block $block8 (result i32) - (drop - (i32.const 20) - ) - (i32.const 30) - ) - ) - (call $call-ii - (block $block9 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - (block $block10 (result i32) - (unreachable) - (i32.const 30) - ) - ) - (call $call-ii - (block $block11 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - (block $block12 (result i32) - (drop - (i32.const 30) - ) - (unreachable) - ) - ) - (call $call-iii - (block $block13 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - (block $block14 (result i32) - (drop - (i32.const 30) - ) - (i32.const 40) - ) - (block $block15 (result i32) - (drop - (i32.const 50) - ) - (i32.const 60) - ) - ) - (call $call-iii - (block $block16 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - (i32.const 30) - (block $block17 (result i32) - (drop - (i32.const 40) - ) - (i32.const 50) - ) - ) - (call_indirect (type $ii) - (block $block18 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - (block $block19 (result i32) - (drop - (i32.const 30) - ) - (i32.const 40) - ) - (block $block20 (result i32) - (drop - (i32.const 50) - ) - (i32.const 60) - ) - ) - (call_indirect (type $ii) - (unreachable) - (block $block21 (result i32) - (drop - (i32.const 30) - ) - (i32.const 40) - ) - (block $block22 (result i32) - (drop - (i32.const 50) - ) - (i32.const 60) - ) - ) - (call_indirect (type $ii) - (block $block21 (result i32) - (drop - (i32.const 31) - ) - (i32.const 41) - ) - (unreachable) - (block $block22 (result i32) - (drop - (i32.const 51) - ) - (i32.const 61) - ) - ) - (call_indirect (type $ii) - (block $block21 (result i32) - (drop - (i32.const 32) - ) - (i32.const 42) - ) - (block $block22 (result i32) - (drop - (i32.const 52) - ) - (i32.const 62) - ) - (unreachable) - ) - ) - (func $atomics (type $3) - (drop - (i32.atomic.rmw.cmpxchg ;; mergeblock logic should be same as select - (block $block0 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - (block $block1 (result i32) - (drop - (i32.const 30) - ) - (i32.const 40) - ) - (block $block2 (result i32) - (drop - (i32.const 50) - ) - (i32.const 60) - ) - ) - ) - (drop - (i32.atomic.rmw.add ;; atomicrmw is like a binary - (block $block1 (result i32) - (drop - (i32.const 10) - ) - (i32.const 20) - ) - (i32.const 30) - ) - ) - ) - (func $mix-select (param $x i32) - (drop - (select - (local.get $x) - (local.get $x) - (block (result i32) - (local.set $x ;; cannot be moved before the gets - (i32.const 1) - ) - (i32.const 2) - ) - ) - ) - ) - (func $block-type-change (type $3) - (local $0 f64) - (local $1 f64) - (if - (f64.gt - (local.get $0) - (block $block0 (result f64) - (nop) - (local.get $1) - ) - ) - (nop) - ) - ) - (func $do-reorder (param $x i32) - (local $y i32) - (if (i32.const 1) - (block - (local.set $x - (i32.le_u - (local.get $x) - (block (result i32) - (local.set $y (i32.const 5)) - (i32.const 10) - ) - ) - ) - ) - ) - ) - (func $do-not-reorder (param $x i32) - (local $y i32) - (if (i32.const 1) - (block - (local.set $x - (i32.le_u - (local.get $y) - (block (result i32) - (local.set $y (i32.const 5)) - (i32.const 10) - ) - ) - ) - ) - ) - ) - (func $return-different-type (result i32) - (drop - (f64.abs - (return - (block (result i32) ;; when we flip the block out, it should have an ok type for the (dead) f64 op - (drop (i32.const 2)) - (i32.const 1) - ) - ) - ) - ) - (unreachable) - ) - - (func $drop-unreachable (result i32) - (local $0 i32) - (block $label$1 (result i32) - (drop - (block (result i32) - (unreachable) - ) - ) - (unreachable) - ) - ) - (func $concrete_finale_in_unreachable (result f64) - (block $label$0 (result f64) - (drop - (block (result f64) - (unreachable) - (f64.const 6.322092475576799e-96) - ) - ) - (f64.const -1) - ) - ) - (func $dont-move-unreachable - (loop $label$0 - (drop - (block $label$3 (result i32) - (br $label$0) - (i32.const 1) - ) - ) - ) - ) - (func $dont-move-unreachable-last - (loop $label$0 - (drop - (block $label$3 (result i32) - (call $dont-move-unreachable-last) - (br $label$0) - ) - ) - ) - ) - (func $move-around-unreachable-in-middle - (loop $label$0 - (drop - (block $label$2 (result i32) - (block $block2 - (nop) - ) - (block $label$3 (result i32) - (drop - (br_if $label$3 - (br $label$0) - (i32.const 0) - ) - ) - (i32.const 1) - ) - ) - ) - ) - ) - (func $drop-unreachable-block-with-concrete-final - (drop - (block (result i32) - (drop - (block - (drop - (return) - ) - ) - ) - (i32.const -452) - ) - ) - ) - (func $merging-with-unreachable-in-middle (result i32) - (block $label$1 (result i32) - (block (result i32) - (return - (i32.const 21536) - ) - (block $label$15 - (br $label$15) - ) - (i32.const 19299) - ) - ) - ) - (func $remove-br-after-unreachable - (block $label$9 - (drop - (block - (block - (return) - (br $label$9) ;; removing this leads to the block becoming unreachable - ) - ) - ) - ) - ) - (func $block-tails - (block $l1 - (drop (i32.const -2)) - (drop (i32.const -1)) - (br $l1) - (drop (i32.const 0)) - (drop (i32.const 1)) - ) - (block $l2 - (br_if $l2 (i32.const 2)) - (drop (i32.const 3)) - ) - (block $b1 - (block $l3 - (br_if $b1 (i32.const 4)) - (br_if $l3 (i32.const 5)) - (drop (i32.const 6)) - ) - ) - (block $b2 - (block $l4 - (br_if $l4 (i32.const 7)) - (br_if $b2 (i32.const 8)) - (drop (i32.const 9)) - ) - ) - (block $l5 - (if (i32.const 10) - (br_if $l5 (i32.const 11)) - ) - (drop (i32.const 12)) - ) - (block $l6 - (block $l7 - (block $l8 - (br_if $l6 (i32.const 13)) - (br_if $l7 (i32.const 14)) - (br_if $l8 (i32.const 15)) - (drop (i32.const 16)) - ) - ) - ) - (block $l9 - (block $l10 - (block $l11 - (br_if $l11 (i32.const 17)) - (br_if $l10 (i32.const 18)) - (br_if $l9 (i32.const 19)) - (drop (i32.const 20)) - ) - ) - ) - (block $l12 - (block $l13 - (block $l14 - (br_if $l12 (i32.const 21)) - (br_if $l13 (i32.const 22)) - (br_if $l14 (i32.const 23)) - (drop (i32.const 24)) - ) - (drop (i32.const 25)) - ) - (drop (i32.const 26)) - ) - (block $l15 - (block $l16 - (block $l17 - (drop (i32.const 27)) - (br_if $l17 (i32.const 28)) - (drop (i32.const 29)) - ) - (br_if $l16 (i32.const 30)) - (drop (i32.const 31)) - ) - (br_if $l15 (i32.const 32)) - (drop (i32.const 33)) - ) - ) - (func $loop-tails - (loop $l1 - (drop (i32.const -2)) - (drop (i32.const -1)) - (br $l1) - (drop (i32.const 0)) - (drop (i32.const 1)) - ) - (loop $l2 - (br_if $l2 (i32.const 2)) - (drop (i32.const 3)) - ) - (block $b1 - (loop $l3 - (br_if $b1 (i32.const 4)) - (br_if $l3 (i32.const 5)) - (drop (i32.const 6)) - ) - ) - (block $b2 - (loop $l4 - (br_if $l4 (i32.const 7)) - (br_if $b2 (i32.const 8)) - (drop (i32.const 9)) - ) - ) - (loop $l5 - (if (i32.const 10) - (br_if $l5 (i32.const 11)) - ) - (drop (i32.const 12)) - ) - (loop $l6 - (loop $l7 - (loop $l8 - (br_if $l6 (i32.const 13)) - (br_if $l7 (i32.const 14)) - (br_if $l8 (i32.const 15)) - (drop (i32.const 16)) - ) - ) - ) - (loop $l9 - (loop $l10 - (loop $l11 - (br_if $l11 (i32.const 17)) - (br_if $l10 (i32.const 18)) - (br_if $l9 (i32.const 19)) - (drop (i32.const 20)) - ) - ) - ) - (loop $l12 - (loop $l13 - (loop $l14 - (br_if $l12 (i32.const 21)) - (br_if $l13 (i32.const 22)) - (br_if $l14 (i32.const 23)) - (drop (i32.const 24)) - ) - (drop (i32.const 25)) - ) - (drop (i32.const 26)) - ) - (loop $l15 - (loop $l16 - (loop $l17 - (drop (i32.const 27)) - (br_if $l17 (i32.const 28)) - (drop (i32.const 29)) - ) - (br_if $l16 (i32.const 30)) - (drop (i32.const 31)) - ) - (br_if $l15 (i32.const 32)) - (drop (i32.const 33)) - ) - ) - (func $block-tail-one - (block $outer - (block $l1 - (drop (i32.const -2)) - (drop (i32.const -1)) - (br $l1) - (drop (i32.const 0)) - (drop (i32.const 1)) - ) - (drop (i32.const 2)) - ) - ) - (func $loop-tail-one - (block $outer - (loop $l1 - (drop (i32.const -2)) - (drop (i32.const -1)) - (br $l1) - (drop (i32.const 0)) - (drop (i32.const 1)) - ) - (drop (i32.const 2)) - ) - ) - (func $block-tail-value (result i32) - (block $outer (result i32) - (block $l1 (result i32) - (drop (i32.const -1)) - (br $l1 (i32.const 0)) - (drop (i32.const 1)) - (i32.const 2) - ) - ) - ) - (func $block-tail-empty - (block $outer - (block $l1 - (drop (i32.const -1)) - (br $l1) - ) - ) - ) - (func $loop-tail-empty - (block $outer - (loop $l1 - (drop (i32.const -1)) - (br $l1) - ) - ) - ) - (func $block-tail-unreachable (result i32) - (block $outer (result i32) - (block $l1 (result i32) - (drop (i32.const -1)) - (drop (br_if $l1 (i32.const 0) (i32.const 1))) - (drop (i32.const 1)) - (unreachable) - ) - ) - ) - (func $loop-tail-unreachable (result i32) - (block $outer (result i32) - (loop $l1 (result i32) - (drop (i32.const -1)) - (br_if $l1 (i32.const 1)) - (drop (i32.const 1)) - (unreachable) - ) - ) - ) -) -(module - (func $unreachable-in-sub-block (param $0 f64) (param $1 i32) (result i32) - (local $2 i32) - (local $9 i32) - (loop $label$1 - (local.set $9 - (local.tee $2 - (block $label$2 (result i32) - (block - (drop - (br_if $label$2 - (local.tee $2 - (i32.const 0) - ) - (i32.const 0) - ) - ) - ) - (br_if $label$1 - (i32.const 0) - ) - (block - (unreachable) - (nop) ;; bad if moved out to the outer block which is i32. current state works since this block is unreachable! - ) - ) - ) - ) - ) - (nop) - (local.get $9) - ) - (func $trivial (result i32) - (block (result i32) - (block - (unreachable) - (nop) - ) - ) - ) - (func $trivial-more (result i32) - (block (result i32) - (block - (nop) - (unreachable) - (nop) - (nop) - (nop) - ) - (block - (nop) - (unreachable) - (nop) - ) - ) - ) -) -(module - (func $merge-some-block - (block $b1 - (drop (i32.const 1)) - (br_if $b1 (i32.const 0)) - ) - (block $b2 - (br_if $b2 (i32.const 0)) - (drop (i32.const 2)) - ) - (block $b3 - (drop (i32.const 3)) - (br_if $b3 (i32.const 0)) - (drop (i32.const 4)) - ) - (block $b3-dead-code-so-ignore - (drop (i32.const 3)) - (br $b3-dead-code-so-ignore) - (drop (i32.const 4)) - ) - (block $b4 - (drop (i32.const 5)) - (br_if $b4 (i32.const 0)) - (drop (i32.const 6)) - (br_if $b4 (i32.const 0)) - ) - (block $b5 - (br_if $b5 (i32.const 0)) - (drop (i32.const 7)) - (br_if $b5 (i32.const 0)) - (drop (i32.const 8)) - ) - (block $b6 - (drop (i32.const 9)) - (drop (i32.const 10)) - (br_if $b6 (i32.const 0)) - ) - ) - (func $merge-some-loop - (loop $l1 - (block $b1 - (drop (i32.const 1)) - (br_if $b1 (i32.const 0)) - ) - ) - (loop $l2 - (block $b2 - (br_if $b2 (i32.const 0)) - (drop (i32.const 2)) - ) - ) - (loop $l3 - (block $b3 - (drop (i32.const 3)) - (br_if $b3 (i32.const 0)) - (drop (i32.const 4)) - ) - ) - (loop $l4 - (block $b4 - (drop (i32.const 5)) - (br_if $b4 (i32.const 0)) - (drop (i32.const 6)) - (br_if $b4 (i32.const 0)) - ) - ) - (loop $l5 - (block $b5 - (br_if $b5 (i32.const 0)) - (drop (i32.const 7)) - (br_if $b5 (i32.const 0)) - (drop (i32.const 8)) - ) - ) - (loop $l6 - (block $b6 - (drop (i32.const 9)) - (drop (i32.const 10)) - (br_if $b6 (i32.const 0)) - ) - ) - ) - (func $merge-some-loop-taken - (loop $l1 - (block $b1 - (drop (i32.const 1)) - (br_if $l1 (i32.const 0)) - (drop (i32.const 2)) - (br_if $b1 (i32.const 0)) - (drop (i32.const 3)) - ) - ) - (loop $l2 - (block $b2 - (drop (i32.const 4)) - (br_if $b2 (i32.const 0)) - (drop (i32.const 5)) - (br_if $l2 (i32.const 0)) - (drop (i32.const 6)) - ) - ) - (loop $l3 - (block $b3 - (drop (i32.const 7)) - (br_if $b3 (i32.const 0)) - (drop (i32.const 8)) - (br_if $l3 (i32.const 0)) - ) - ) - (loop $l4 - (block $b4 - (br_if $l4 (i32.const 0)) - (drop (i32.const 9)) - (br_if $b4 (i32.const 0)) - (drop (i32.const 10)) - ) - ) - (loop $l5 - (block $b5 - (drop (i32.const 7)) - (br_if $b5 (i32.const 0)) - (br_if $l5 (i32.const 0)) - ) - ) - (loop $l6 - (block $b6 - (br_if $l6 (i32.const 0)) - (br_if $b6 (i32.const 0)) - (drop (i32.const 10)) - ) - ) - (loop $l7 - (block $b7 - (drop (i32.const 11)) - (br_if $l7 (i32.const 0)) - (br_if $b7 (i32.const 0)) - (drop (i32.const 13)) - ) - ) - (loop $l8 - (block $b8 - (drop (i32.const 14)) - (br_if $b8 (i32.const 0)) - (br_if $l8 (i32.const 0)) - (drop (i32.const 16)) - ) - ) - (loop $l9 - (block $b9 - (drop (i32.const 17)) - (br_if $l9 (i32.const 0)) - (drop (i32.const 18)) - (br_if $l9 (i32.const 0)) - (drop (i32.const 19)) - ) - ) - (loop $l10 - (block $b10 - (drop (i32.const 20)) - (br_if $l10 (i32.const 0)) - (drop (i32.const 21)) - ) - ) - (loop $l11 - (block $b11 - (br_if $l11 (i32.const 0)) - (drop (i32.const 23)) - ) - ) - (loop $l12 - (block $b12 - (drop (i32.const 24)) - (br_if $l12 (i32.const 0)) - ) - ) - ) -) diff -Nru binaryen-91/test/passes/remove-unused-names_optimize-instructions_all-features.txt binaryen-99/test/passes/remove-unused-names_optimize-instructions_all-features.txt --- binaryen-91/test/passes/remove-unused-names_optimize-instructions_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-names_optimize-instructions_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -2,20 +2,22 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (event $e (attr 0) (param i32)) - (func $dummy (; 0 ;) + (func $dummy (nop) ) - (func $getFallthrough (; 1 ;) + (func $getFallthrough (local $x0 i32) (local $x1 i32) (local $x2 i32) (local $x3 i32) (local.set $x0 (try (result i32) - (i32.const 1) + (do + (i32.const 1) + ) (catch (drop - (exnref.pop) + (pop exnref) ) (i32.const 3) ) @@ -26,13 +28,13 @@ ) (local.set $x1 (try (result i32) - (block (result i32) + (do (call $dummy) (i32.const 1) ) (catch (drop - (exnref.pop) + (pop exnref) ) (i32.const 3) ) @@ -46,14 +48,16 @@ ) (local.set $x2 (try (result i32) - (block (result i32) + (do (try - (throw $e - (i32.const 0) + (do + (throw $e + (i32.const 0) + ) ) (catch (drop - (exnref.pop) + (pop exnref) ) ) ) @@ -61,7 +65,7 @@ ) (catch (drop - (exnref.pop) + (pop exnref) ) (i32.const 3) ) @@ -72,12 +76,14 @@ ) (local.set $x3 (try (result i32) - (block (result i32) + (do (try - (nop) + (do + (nop) + ) (catch (drop - (exnref.pop) + (pop exnref) ) (throw $e (i32.const 0) @@ -88,7 +94,7 @@ ) (catch (drop - (exnref.pop) + (pop exnref) ) (i32.const 3) ) diff -Nru binaryen-91/test/passes/remove-unused-names_optimize-instructions_all-features.wast binaryen-99/test/passes/remove-unused-names_optimize-instructions_all-features.wast --- binaryen-91/test/passes/remove-unused-names_optimize-instructions_all-features.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-names_optimize-instructions_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -11,9 +11,11 @@ ;; try - try body does not throw, can (local.set $x0 (try (result i32) - (i32.const 1) + (do + (i32.const 1) + ) (catch - (drop (exnref.pop)) + (drop (pop exnref)) (i32.const 3) ) ) @@ -23,12 +25,12 @@ ;; try - try body may throw, can't (local.set $x1 (try (result i32) - (block (result i32) + (do (call $dummy) (i32.const 1) ) (catch - (drop (exnref.pop)) + (drop (pop exnref)) (i32.const 3) ) ) @@ -38,17 +40,19 @@ ;; nested try - inner try may throw but will be caught by inner catch, can (local.set $x2 (try (result i32) - (block (result i32) + (do (try - (throw $e (i32.const 0)) + (do + (throw $e (i32.const 0)) + ) (catch - (drop (exnref.pop)) + (drop (pop exnref)) ) ) (i32.const 1) ) (catch - (drop (exnref.pop)) + (drop (pop exnref)) (i32.const 3) ) ) @@ -58,17 +62,18 @@ ;; nested try - inner catch may throw, can't (local.set $x3 (try (result i32) - (block (result i32) + (do (try + (do) (catch - (drop (exnref.pop)) + (drop (pop exnref)) (throw $e (i32.const 0)) ) ) (i32.const 1) ) (catch - (drop (exnref.pop)) + (drop (pop exnref)) (i32.const 3) ) ) diff -Nru binaryen-91/test/passes/remove-unused-names_precompute.txt binaryen-99/test/passes/remove-unused-names_precompute.txt --- binaryen-91/test/passes/remove-unused-names_precompute.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-names_precompute.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $i32_=>_none (func (param i32))) (memory $0 256 256) - (func $__ZN10WasmAssertC2Ev__async_cb (; 0 ;) (param $$0 i32) + (func $__ZN10WasmAssertC2Ev__async_cb (param $$0 i32) (block $switch-default (nop) (block diff -Nru binaryen-91/test/passes/remove-unused-names_remove-unused-brs_vacuum.txt binaryen-99/test/passes/remove-unused-names_remove-unused-brs_vacuum.txt --- binaryen-91/test/passes/remove-unused-names_remove-unused-brs_vacuum.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-names_remove-unused-brs_vacuum.txt 2021-01-07 20:01:06.000000000 +0000 @@ -9,9 +9,7 @@ (type $f64_=>_i32 (func (param f64) (result i32))) (type $i32_=>_i64 (func (param i32) (result i64))) (import "env" "memory" (memory $0 256)) - (import "env" "table" (table $0 18 18 funcref)) - (import "env" "DYNAMICTOP_PTR" (global $import$0 i32)) - (import "env" "tempDoublePtr" (global $import$1 i32)) + (import "env" "table" (table $timport$0 18 18 funcref)) (import "env" "ABORT" (global $import$2 i32)) (import "env" "STACKTOP" (global $import$3 i32)) (import "env" "STACK_MAX" (global $import$4 i32)) @@ -42,8 +40,6 @@ (import "asm2wasm" "i32s-rem" (func $import$27 (param i32 i32) (result i32))) (import "asm2wasm" "i32u-rem" (func $import$28 (param i32 i32) (result i32))) (import "asm2wasm" "i32u-div" (func $import$29 (param i32 i32) (result i32))) - (global $global$0 (mut i32) (global.get $import$0)) - (global $global$1 (mut i32) (global.get $import$1)) (global $global$2 (mut i32) (global.get $import$2)) (global $global$3 (mut i32) (global.get $import$3)) (global $global$4 (mut i32) (global.get $import$4)) @@ -65,7 +61,7 @@ (global $global$20 (mut i32) (i32.const 0)) (global $global$21 (mut f32) (f32.const 0)) (global $global$22 (mut f32) (f32.const 0)) - (func $27 (; 23 ;) (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (param $var$3 i32) (param $var$4 i32) + (func $27 (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (param $var$3 i32) (param $var$4 i32) (local $var$5 i32) (local $var$6 i32) (local $var$7 i32) @@ -96,10 +92,10 @@ ) ) ) - (func $23 (; 24 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $23 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (unreachable) ) - (func $unexitable-loops-result (; 25 ;) (param $0 i32) (result i64) + (func $unexitable-loops-result (param $0 i32) (result i64) (loop $label$0 (loop $label$1 (br_if $label$0 diff -Nru binaryen-91/test/passes/remove-unused-names_remove-unused-brs_vacuum.wast binaryen-99/test/passes/remove-unused-names_remove-unused-brs_vacuum.wast --- binaryen-91/test/passes/remove-unused-names_remove-unused-brs_vacuum.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-names_remove-unused-brs_vacuum.wast 2021-01-07 20:01:06.000000000 +0000 @@ -15,8 +15,6 @@ (type $13 (func (param i32 i32 i32 i32 i32))) (type $14 (func (param f64 i32) (result f64))) (type $15 (func (param i32 i32 i32 i32) (result i32))) - (import "env" "DYNAMICTOP_PTR" (global $import$0 i32)) - (import "env" "tempDoublePtr" (global $import$1 i32)) (import "env" "ABORT" (global $import$2 i32)) (import "env" "STACKTOP" (global $import$3 i32)) (import "env" "STACK_MAX" (global $import$4 i32)) @@ -49,8 +47,6 @@ (import "env" "table" (table 18 18 funcref)) (import "env" "memoryBase" (global $import$32 i32)) (import "env" "tableBase" (global $import$33 i32)) - (global $global$0 (mut i32) (global.get $import$0)) - (global $global$1 (mut i32) (global.get $import$1)) (global $global$2 (mut i32) (global.get $import$2)) (global $global$3 (mut i32) (global.get $import$3)) (global $global$4 (mut i32) (global.get $import$4)) diff -Nru binaryen-91/test/passes/remove-unused-names.txt binaryen-99/test/passes/remove-unused-names.txt --- binaryen-91/test/passes/remove-unused-names.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-names.txt 2021-01-07 20:01:06.000000000 +0000 @@ -3,10 +3,10 @@ (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (memory $0 256 256) - (func $b0 (; 0 ;) (param $i1 i32) (result i32) + (func $b0 (param $i1 i32) (result i32) (i32.const 0) ) - (func $loops (; 1 ;) + (func $loops (block $out (loop $in (br $out) @@ -48,7 +48,7 @@ ) ) ) - (func $merges (; 2 ;) + (func $merges (block $b (br $b) (br $b) @@ -64,7 +64,7 @@ ) ) ) - (func $merge-typed-with-unreachable-child (; 3 ;) (result i32) + (func $merge-typed-with-unreachable-child (result i32) (local $0 f32) (block $label$1 (result i32) (br_if $label$1 @@ -78,4 +78,11 @@ ) ) ) + (func $loop-with-child-of-other-type + (drop + (loop (result i32) + (unreachable) + ) + ) + ) ) diff -Nru binaryen-91/test/passes/remove-unused-names_vacuum_ignore-implicit-traps.txt binaryen-99/test/passes/remove-unused-names_vacuum_ignore-implicit-traps.txt --- binaryen-91/test/passes/remove-unused-names_vacuum_ignore-implicit-traps.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-names_vacuum_ignore-implicit-traps.txt 2021-01-07 20:01:06.000000000 +0000 @@ -22,12 +22,12 @@ (import "env" "wasm2js_scratch_store_i64" (func $wasm2js_scratch_store_i64 (param i64))) (memory $0 1 1) (global $i64toi32_i32$HIGH_BITS (mut i32) (i32.const 0)) - (func $0 (; 11 ;) + (func $0 (local $0 f64) (local $1 i32) (nop) ) - (func $legalfunc$wasm2js_scratch_load_i64 (; 12 ;) (result i32) + (func $legalfunc$wasm2js_scratch_load_i64 (result i32) (local $0 i32) (local $1 i32) (local.set $1 @@ -41,7 +41,7 @@ ) (local.get $1) ) - (func $legalfunc$wasm2js_scratch_store_i64 (; 13 ;) (param $0 i32) (param $1 i32) + (func $legalfunc$wasm2js_scratch_store_i64 (param $0 i32) (param $1 i32) (call $legalimport$wasm2js_scratch_store_i64 (local.get $0) (local.get $1) diff -Nru binaryen-91/test/passes/remove-unused-names_vacuum.txt binaryen-99/test/passes/remove-unused-names_vacuum.txt --- binaryen-91/test/passes/remove-unused-names_vacuum.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-names_vacuum.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,30 +1,30 @@ (module (type $none_=>_i32 (func (result i32))) (type $none_=>_none (func)) - (func $return-i32-but-body-is-unreachable3 (; 0 ;) (result i32) + (func $return-i32-but-body-is-unreachable3 (result i32) (local $label i32) (loop $while-in$1 (br $while-in$1) ) ) - (func $return-i32-but-body-is-unreachable4 (; 1 ;) (result i32) + (func $return-i32-but-body-is-unreachable4 (result i32) (local $label i32) (loop $while-in$1 (br $while-in$1) ) ) - (func $to-drop-unreachable (; 2 ;) + (func $to-drop-unreachable (drop (block (result i32) (unreachable) ) ) ) - (func $return-i32-but-body-is-unreachable5 (; 3 ;) (result i32) + (func $return-i32-but-body-is-unreachable5 (result i32) (local $label i32) (unreachable) ) - (func $return-i32-but-body-is-unreachable6 (; 4 ;) (result i32) + (func $return-i32-but-body-is-unreachable6 (result i32) (local $label i32) (unreachable) ) diff -Nru binaryen-91/test/passes/remove-unused-names.wast binaryen-99/test/passes/remove-unused-names.wast --- binaryen-91/test/passes/remove-unused-names.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-names.wast 2021-01-07 20:01:06.000000000 +0000 @@ -93,4 +93,13 @@ ) ) ) + (func $loop-with-child-of-other-type + (drop + (loop (result i32) ;; the loop has no name, but can't be replaced by the child + (block $l ;; as the type differs + (unreachable) + ) + ) + ) + ) ) diff -Nru binaryen-91/test/passes/remove-unused-nonfunction-module-elements_all-features.txt binaryen-99/test/passes/remove-unused-nonfunction-module-elements_all-features.txt --- binaryen-91/test/passes/remove-unused-nonfunction-module-elements_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-nonfunction-module-elements_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -10,47 +10,47 @@ (export "other1" (func $other1)) (export "other2" (func $other2)) (start $start) - (func $start (; 0 ;) + (func $start (call $called0) ) - (func $called0 (; 1 ;) + (func $called0 (call $called1) ) - (func $called1 (; 2 ;) + (func $called1 (nop) ) - (func $called_indirect (; 3 ;) + (func $called_indirect (nop) ) - (func $exported (; 4 ;) + (func $exported (call $called2) ) - (func $called2 (; 5 ;) + (func $called2 (call $called2) (call $called3) ) - (func $called3 (; 6 ;) + (func $called3 (call $called4) ) - (func $called4 (; 7 ;) + (func $called4 (call $called3) ) - (func $remove0 (; 8 ;) + (func $remove0 (call $remove1) ) - (func $remove1 (; 9 ;) + (func $remove1 (nop) ) - (func $remove2 (; 10 ;) + (func $remove2 (call $remove2) ) - (func $remove3 (; 11 ;) + (func $remove3 (call $remove4) ) - (func $remove4 (; 12 ;) + (func $remove4 (call $remove3) ) - (func $other1 (; 13 ;) (param $0 i32) + (func $other1 (param $0 i32) (call_indirect (type $none_=>_none) (i32.const 0) ) @@ -90,7 +90,7 @@ ) ) ) - (func $other2 (; 14 ;) (param $0 i32) + (func $other2 (param $0 i32) (unreachable) ) ) @@ -100,7 +100,7 @@ ) (module (import "env" "memory" (memory $0 256)) - (import "env" "table" (table $0 1 funcref)) + (import "env" "table" (table $timport$0 1 funcref)) (export "mem" (memory $0)) (export "tab" (table $0)) ) @@ -108,18 +108,18 @@ (type $none_=>_none (func)) (import "env" "memory" (memory $0 256)) (data (i32.const 1) "hello, world!") - (import "env" "table" (table $0 1 funcref)) + (import "env" "table" (table $timport$0 1 funcref)) (elem (i32.const 0) $waka) - (func $waka (; 0 ;) + (func $waka (nop) ) ) (module (type $none_=>_none (func)) (import "env" "memory" (memory $0 256)) - (import "env" "table" (table $0 0 funcref)) + (import "env" "table" (table $timport$0 0 funcref)) (export "user" (func $user)) - (func $user (; 0 ;) + (func $user (drop (i32.load (i32.const 0) @@ -134,7 +134,7 @@ (type $none_=>_none (func)) (memory $0 (shared 23 256)) (export "user" (func $user)) - (func $user (; 0 ;) + (func $user (i32.store (i32.const 0) (i32.const 0) @@ -145,7 +145,7 @@ (type $none_=>_i32 (func (result i32))) (memory $0 (shared 23 256)) (export "user" (func $user)) - (func $user (; 0 ;) (result i32) + (func $user (result i32) (i32.atomic.rmw.add (i32.const 0) (i32.const 0) @@ -156,7 +156,7 @@ (type $none_=>_i32 (func (result i32))) (memory $0 (shared 23 256)) (export "user" (func $user)) - (func $user (; 0 ;) (result i32) + (func $user (result i32) (i32.atomic.rmw8.cmpxchg_u (i32.const 0) (i32.const 0) @@ -168,11 +168,11 @@ (type $none_=>_none (func)) (memory $0 (shared 23 256)) (export "user" (func $user)) - (func $user (; 0 ;) + (func $user (local $0 i32) (local $1 i64) (drop - (i32.atomic.wait + (memory.atomic.wait32 (local.get $0) (local.get $0) (local.get $1) @@ -184,8 +184,8 @@ (type $none_=>_i32 (func (result i32))) (memory $0 (shared 23 256)) (export "user" (func $user)) - (func $user (; 0 ;) (result i32) - (atomic.notify + (func $user (result i32) + (memory.atomic.notify (i32.const 0) (i32.const 0) ) @@ -195,7 +195,7 @@ (type $none_=>_i32 (func (result i32))) (memory $0 23 256) (export "user" (func $user)) - (func $user (; 0 ;) (result i32) + (func $user (result i32) (memory.grow (i32.const 0) ) @@ -205,7 +205,7 @@ (type $none_=>_i32 (func (result i32))) (import "env" "memory" (memory $0 256)) (export "user" (func $user)) - (func $user (; 0 ;) (result i32) + (func $user (result i32) (memory.grow (i32.const 0) ) @@ -215,7 +215,7 @@ (type $none_=>_i32 (func (result i32))) (memory $0 23 256) (export "user" (func $user)) - (func $user (; 0 ;) (result i32) + (func $user (result i32) (memory.size) ) ) @@ -223,11 +223,11 @@ (type $none_=>_none (func)) (import "env" "memory" (memory $0 256)) (data (global.get $memoryBase) "hello, world!") - (import "env" "table" (table $0 0 funcref)) + (import "env" "table" (table $timport$0 0 funcref)) (elem (global.get $tableBase) $waka) (import "env" "memoryBase" (global $memoryBase i32)) (import "env" "tableBase" (global $tableBase i32)) - (func $waka (; 0 ;) + (func $waka (nop) ) ) @@ -243,16 +243,16 @@ (export "one" (func $one)) (export "three" (func $three)) (export "exp_glob" (global $exp_glob)) - (func $one (; 1 ;) (result i32) + (func $one (result i32) (call $two) ) - (func $two (; 2 ;) (result i32) + (func $two (result i32) (global.get $int) ) - (func $three (; 3 ;) + (func $three (call $four) ) - (func $four (; 4 ;) + (func $four (global.set $set (i32.const 200) ) @@ -262,23 +262,23 @@ ) ) ) - (func $forget_implemented (; 5 ;) + (func $forget_implemented (nop) ) - (func $starter (; 6 ;) + (func $starter (nop) ) ) (module (type $none_=>_none (func)) - (func $starter (; 0 ;) + (func $starter (nop) ) ) (module (type $none_=>_none (func)) (start $starter) - (func $starter (; 0 ;) + (func $starter (drop (i32.const 0) ) @@ -286,7 +286,7 @@ ) (module (type $f64_=>_f64 (func (param f64) (result f64))) - (func $0 (; 0 ;) (param $var$0 f64) (result f64) + (func $0 (param $var$0 f64) (result f64) (if (result f64) (f64.eq (f64.const 1) @@ -300,7 +300,7 @@ (module (type $f64_=>_f64 (func (param f64) (result f64))) (table $0 6 6 funcref) - (func $0 (; 0 ;) (param $var$0 f64) (result f64) + (func $0 (param $var$0 f64) (result f64) (if (result f64) (f64.eq (f64.const 1) @@ -316,9 +316,9 @@ ) (module (type $f64_=>_f64 (func (param f64) (result f64))) - (import "env" "table" (table $0 6 6 funcref)) + (import "env" "table" (table $timport$0 6 6 funcref)) (elem (i32.const 0) $0) - (func $0 (; 0 ;) (param $var$0 f64) (result f64) + (func $0 (param $var$0 f64) (result f64) (if (result f64) (f64.eq (f64.const 1) @@ -334,7 +334,7 @@ (type $i64_=>_none (func (param i64))) (event $e1 (attr 0) (param i64)) (export "e1" (event $e1)) - (func $f (; 0 ;) (param $0 i32) + (func $f (param $0 i32) (nop) ) ) diff -Nru binaryen-91/test/passes/remove-unused-nonfunction-module-elements_all-features.wast binaryen-99/test/passes/remove-unused-nonfunction-module-elements_all-features.wast --- binaryen-91/test/passes/remove-unused-nonfunction-module-elements_all-features.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/remove-unused-nonfunction-module-elements_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -128,7 +128,7 @@ (local $0 i32) (local $1 i64) (drop - (i32.atomic.wait + (memory.atomic.wait32 (local.get $0) (local.get $0) (local.get $1) @@ -140,7 +140,7 @@ (memory $0 (shared 23 256)) (export "user" $user) (func $user (result i32) - (atomic.notify (i32.const 0) (i32.const 0)) + (memory.atomic.notify (i32.const 0) (i32.const 0)) ) ) (module ;; more use checks diff -Nru binaryen-91/test/passes/reorder-functions.txt binaryen-99/test/passes/reorder-functions.txt --- binaryen-91/test/passes/reorder-functions.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/reorder-functions.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,16 +1,16 @@ (module (type $none_=>_none (func)) (memory $0 256 256) - (func $c (; 0 ;) + (func $c (call $c) (call $c) (call $c) ) - (func $b (; 1 ;) + (func $b (call $b) (call $b) ) - (func $a (; 2 ;) + (func $a (call $a) ) ) diff -Nru binaryen-91/test/passes/reorder-locals.txt binaryen-99/test/passes/reorder-locals.txt --- binaryen-91/test/passes/reorder-locals.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/reorder-locals.txt 2021-01-07 20:01:06.000000000 +0000 @@ -2,7 +2,7 @@ (type $none_=>_none (func)) (type $i32_i32_=>_none (func (param i32 i32))) (memory $0 256 256) - (func $b0-yes (; 0 ;) (param $a i32) (param $b i32) + (func $b0-yes (param $a i32) (param $b i32) (local $z i32) (local $y i32) (local $x i32) @@ -43,13 +43,13 @@ (local.get $b) ) ) - (func $zero (; 1 ;) + (func $zero (local $b i32) (drop (local.get $b) ) ) - (func $null (; 2 ;) + (func $null (nop) ) ) diff -Nru binaryen-91/test/passes/reverse_dwarf_abbrevs.bin.txt binaryen-99/test/passes/reverse_dwarf_abbrevs.bin.txt --- binaryen-91/test/passes/reverse_dwarf_abbrevs.bin.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/reverse_dwarf_abbrevs.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,2374 @@ +DWARF debug info +================ + +Contains section .debug_info (79 bytes) +Contains section .debug_abbrev (64 bytes) +Contains section .debug_line (53 bytes) +Contains section .debug_str (206 bytes) + +.debug_abbrev contents: +Abbrev table for offset: 0x00000000 +[1] DW_TAG_base_type DW_CHILDREN_no + DW_AT_name DW_FORM_strp + DW_AT_encoding DW_FORM_data1 + DW_AT_byte_size DW_FORM_data1 + +[2] DW_TAG_GNU_call_site DW_CHILDREN_no + DW_AT_low_pc DW_FORM_addr + +[3] DW_TAG_subprogram DW_CHILDREN_yes + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + DW_AT_frame_base DW_FORM_exprloc + DW_AT_GNU_all_call_sites DW_FORM_flag_present + DW_AT_name DW_FORM_strp + DW_AT_decl_file DW_FORM_data1 + DW_AT_decl_line DW_FORM_data1 + DW_AT_type DW_FORM_ref4 + DW_AT_external DW_FORM_flag_present + +[4] DW_TAG_compile_unit DW_CHILDREN_yes + DW_AT_producer DW_FORM_strp + DW_AT_language DW_FORM_data2 + DW_AT_name DW_FORM_strp + DW_AT_stmt_list DW_FORM_sec_offset + DW_AT_comp_dir DW_FORM_strp + DW_AT_low_pc DW_FORM_addr + DW_AT_high_pc DW_FORM_data4 + + +.debug_info contents: +0x00000000: Compile Unit: length = 0x0000004b version = 0x0004 abbr_offset = 0x0000 addr_size = 0x04 (next unit at 0x0000004f) + +0x0000000b: DW_TAG_compile_unit [4] * + DW_AT_producer [DW_FORM_strp] ( .debug_str[0x00000000] = "clang version 12.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 576bd52f778405de08f309678e4fe4f7523bf7c4)") + DW_AT_language [DW_FORM_data2] (DW_LANG_C99) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000095] = "tests/hello_world.c") + DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) + DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x000000a9] = "/home/azakai/Dev/emscripten") + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) + DW_AT_high_pc [DW_FORM_data4] (0x00000000) + +0x00000026: DW_TAG_subprogram [3] * + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) + DW_AT_high_pc [DW_FORM_data4] (0x00000000) + DW_AT_frame_base [DW_FORM_exprloc] (DW_OP_WASM_location 0x3 +0, 00 00 9f) + DW_AT_GNU_all_call_sites [DW_FORM_flag_present] (true) + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000c5] = "main") + DW_AT_decl_file [DW_FORM_data1] ("/home/azakai/Dev/emscripten/tests/hello_world.c") + DW_AT_decl_line [DW_FORM_data1] (10) + DW_AT_type [DW_FORM_ref4] (cu + 0x0047 => {0x00000047} "int") + DW_AT_external [DW_FORM_flag_present] (true) + +0x00000041: DW_TAG_GNU_call_site [2] + DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) + +0x00000046: NULL + +0x00000047: DW_TAG_base_type [1] + DW_AT_name [DW_FORM_strp] ( .debug_str[0x000000ca] = "int") + DW_AT_encoding [DW_FORM_data1] (DW_ATE_signed) + DW_AT_byte_size [DW_FORM_data1] (0x04) + +0x0000004e: NULL + +.debug_line contents: +debug_line[0x00000000] +Line table prologue: + total_length: 0x00000031 + version: 4 + prologue_length: 0x0000002b + min_inst_length: 1 +max_ops_per_inst: 1 + default_is_stmt: 1 + line_base: -5 + line_range: 14 + opcode_base: 13 +standard_opcode_lengths[DW_LNS_copy] = 0 +standard_opcode_lengths[DW_LNS_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_advance_line] = 1 +standard_opcode_lengths[DW_LNS_set_file] = 1 +standard_opcode_lengths[DW_LNS_set_column] = 1 +standard_opcode_lengths[DW_LNS_negate_stmt] = 0 +standard_opcode_lengths[DW_LNS_set_basic_block] = 0 +standard_opcode_lengths[DW_LNS_const_add_pc] = 0 +standard_opcode_lengths[DW_LNS_fixed_advance_pc] = 1 +standard_opcode_lengths[DW_LNS_set_prologue_end] = 0 +standard_opcode_lengths[DW_LNS_set_epilogue_begin] = 0 +standard_opcode_lengths[DW_LNS_set_isa] = 1 +include_directories[ 1] = "tests" +file_names[ 1]: + name: "hello_world.c" + dir_index: 1 + mod_time: 0x00000000 + length: 0x00000000 + +.debug_str contents: +0x00000000: "clang version 12.0.0 (/b/s/w/ir/cache/git/chromium.googlesource.com-external-github.com-llvm-llvm--project 576bd52f778405de08f309678e4fe4f7523bf7c4)" +0x00000095: "tests/hello_world.c" +0x000000a9: "/home/azakai/Dev/emscripten" +0x000000c5: "main" +0x000000ca: "int" +(module + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) + (type $i32_i64_i32_=>_i64 (func (param i32 i64 i32) (result i64))) + (type $none_=>_none (func)) + (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) + (type $i32_i32_i64_i32_=>_i64 (func (param i32 i32 i64 i32) (result i64))) + (import "env" "memory" (memory $mimport$0 256 256)) + (data (i32.const 1024) "hello, world!\00\00\00\18\04") + (data (i32.const 1048) "\05") + (data (i32.const 1060) "\01") + (data (i32.const 1084) "\02\00\00\00\03\00\00\00\c8\04\00\00\00\04") + (data (i32.const 1108) "\01") + (data (i32.const 1123) "\n\ff\ff\ff\ff") + (import "env" "__indirect_function_table" (table $timport$0 4 funcref)) + (elem (i32.const 1) $6 $5 $7) + (import "wasi_snapshot_preview1" "fd_write" (func $fimport$0 (param i32 i32 i32 i32) (result i32))) + (import "env" "emscripten_memcpy_big" (func $fimport$1 (param i32 i32 i32) (result i32))) + (import "env" "setTempRet0" (func $fimport$2 (param i32))) + (global $global$0 (mut i32) (i32.const 5245136)) + (global $global$1 i32 (i32.const 2248)) + (export "__wasm_call_ctors" (func $0)) + (export "main" (func $2)) + (export "__errno_location" (func $3)) + (export "stackSave" (func $18)) + (export "stackRestore" (func $19)) + (export "stackAlloc" (func $20)) + (export "__data_end" (global $global$1)) + (export "dynCall_jiji" (func $22)) + (export "__growWasmMemory" (func $23)) + (func $0 + ;; code offset: 0x3 + (nop) + ) + (func $1 (result i32) + ;; code offset: 0xc + (drop + ;; code offset: 0xa + (call $14 + ;; code offset: 0x7 + (i32.const 1024) + ) + ) + ;; code offset: 0xd + (i32.const 0) + ) + (func $2 (param $0 i32) (param $1 i32) (result i32) + ;; code offset: 0x12 + (call $1) + ) + (func $3 (result i32) + ;; code offset: 0x17 + (i32.const 1200) + ) + (func $4 (param $0 i32) (result i32) + ;; code offset: 0x20 + (if + ;; code offset: 0x1f + (i32.eqz + ;; code offset: 0x1d + (local.get $0) + ) + ;; code offset: 0x24 + (return + ;; code offset: 0x22 + (i32.const 0) + ) + ) + ;; code offset: 0x2a + (i32.store + ;; code offset: 0x26 + (call $3) + ;; code offset: 0x28 + (local.get $0) + ) + ;; code offset: 0x2d + (i32.const -1) + ) + (func $5 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + ;; code offset: 0x48 + (global.set $global$0 + ;; code offset: 0x46 + (local.tee $3 + ;; code offset: 0x45 + (i32.sub + ;; code offset: 0x41 + (global.get $global$0) + ;; code offset: 0x43 + (i32.const 32) + ) + ) + ) + ;; code offset: 0x53 + (i32.store offset=16 + ;; code offset: 0x4a + (local.get $3) + ;; code offset: 0x51 + (local.tee $4 + ;; code offset: 0x4e + (i32.load offset=28 + ;; code offset: 0x4c + (local.get $0) + ) + ) + ) + ;; code offset: 0x5b + (local.set $5 + ;; code offset: 0x58 + (i32.load offset=20 + ;; code offset: 0x56 + (local.get $0) + ) + ) + ;; code offset: 0x61 + (i32.store offset=28 + ;; code offset: 0x5d + (local.get $3) + ;; code offset: 0x5f + (local.get $2) + ) + ;; code offset: 0x68 + (i32.store offset=24 + ;; code offset: 0x64 + (local.get $3) + ;; code offset: 0x66 + (local.get $1) + ) + ;; code offset: 0x74 + (i32.store offset=20 + ;; code offset: 0x6b + (local.get $3) + ;; code offset: 0x72 + (local.tee $1 + ;; code offset: 0x71 + (i32.sub + ;; code offset: 0x6d + (local.get $5) + ;; code offset: 0x6f + (local.get $4) + ) + ) + ) + ;; code offset: 0x7c + (local.set $6 + ;; code offset: 0x7b + (i32.add + ;; code offset: 0x77 + (local.get $1) + ;; code offset: 0x79 + (local.get $2) + ) + ) + ;; code offset: 0x80 + (local.set $7 + ;; code offset: 0x7e + (i32.const 2) + ) + ;; code offset: 0x87 + (local.set $1 + ;; code offset: 0x86 + (i32.add + ;; code offset: 0x82 + (local.get $3) + ;; code offset: 0x84 + (i32.const 16) + ) + ) + ;; code offset: 0x18d + (local.set $4 + ;; code offset: 0x89 + (block $label$1 (result i32) + (block $label$2 + (block $label$3 + ;; code offset: 0xa5 + (if + ;; code offset: 0xa4 + (i32.eqz + ;; code offset: 0xa2 + (call $4 + ;; code offset: 0xa0 + (call $fimport$0 + ;; code offset: 0x91 + (i32.load offset=60 + ;; code offset: 0x8f + (local.get $0) + ) + ;; code offset: 0x98 + (i32.add + ;; code offset: 0x94 + (local.get $3) + ;; code offset: 0x96 + (i32.const 16) + ) + ;; code offset: 0x99 + (i32.const 2) + ;; code offset: 0x9f + (i32.add + ;; code offset: 0x9b + (local.get $3) + ;; code offset: 0x9d + (i32.const 12) + ) + ) + ) + ) + ;; code offset: 0xa7 + (loop $label$5 + ;; code offset: 0xb3 + (br_if $label$3 + ;; code offset: 0xb2 + (i32.eq + ;; code offset: 0xa9 + (local.get $6) + ;; code offset: 0xb0 + (local.tee $4 + ;; code offset: 0xad + (i32.load offset=12 + ;; code offset: 0xab + (local.get $3) + ) + ) + ) + ) + ;; code offset: 0xba + (br_if $label$2 + ;; code offset: 0xb9 + (i32.le_s + ;; code offset: 0xb5 + (local.get $4) + ;; code offset: 0xb7 + (i32.const -1) + ) + ) + ;; code offset: 0xe2 + (i32.store + ;; code offset: 0xce + (local.tee $9 + ;; code offset: 0xcd + (i32.add + ;; code offset: 0xbc + (local.get $1) + ;; code offset: 0xcc + (i32.shl + ;; code offset: 0xc8 + (local.tee $5 + ;; code offset: 0xc7 + (i32.gt_u + ;; code offset: 0xbe + (local.get $4) + ;; code offset: 0xc5 + (local.tee $8 + ;; code offset: 0xc2 + (i32.load offset=4 + ;; code offset: 0xc0 + (local.get $1) + ) + ) + ) + ) + ;; code offset: 0xca + (i32.const 3) + ) + ) + ) + ;; code offset: 0xe1 + (i32.add + ;; code offset: 0xda + (local.tee $8 + ;; code offset: 0xd9 + (i32.sub + ;; code offset: 0xd0 + (local.get $4) + ;; code offset: 0xd8 + (select + ;; code offset: 0xd2 + (local.get $8) + ;; code offset: 0xd4 + (i32.const 0) + ;; code offset: 0xd6 + (local.get $5) + ) + ) + ) + ;; code offset: 0xde + (i32.load + ;; code offset: 0xdc + (local.get $9) + ) + ) + ) + ;; code offset: 0xf9 + (i32.store + ;; code offset: 0xef + (local.tee $9 + ;; code offset: 0xee + (i32.add + ;; code offset: 0xe5 + (local.get $1) + ;; code offset: 0xed + (select + ;; code offset: 0xe7 + (i32.const 12) + ;; code offset: 0xe9 + (i32.const 4) + ;; code offset: 0xeb + (local.get $5) + ) + ) + ) + ;; code offset: 0xf8 + (i32.sub + ;; code offset: 0xf3 + (i32.load + ;; code offset: 0xf1 + (local.get $9) + ) + ;; code offset: 0xf6 + (local.get $8) + ) + ) + ;; code offset: 0x101 + (local.set $6 + ;; code offset: 0x100 + (i32.sub + ;; code offset: 0xfc + (local.get $6) + ;; code offset: 0xfe + (local.get $4) + ) + ) + ;; code offset: 0x125 + (br_if $label$5 + ;; code offset: 0x124 + (i32.eqz + ;; code offset: 0x122 + (call $4 + ;; code offset: 0x120 + (call $fimport$0 + ;; code offset: 0x105 + (i32.load offset=60 + ;; code offset: 0x103 + (local.get $0) + ) + ;; code offset: 0x112 + (local.tee $1 + ;; code offset: 0x111 + (select + ;; code offset: 0x10c + (i32.add + ;; code offset: 0x108 + (local.get $1) + ;; code offset: 0x10a + (i32.const 8) + ) + ;; code offset: 0x10d + (local.get $1) + ;; code offset: 0x10f + (local.get $5) + ) + ) + ;; code offset: 0x119 + (local.tee $7 + ;; code offset: 0x118 + (i32.sub + ;; code offset: 0x114 + (local.get $7) + ;; code offset: 0x116 + (local.get $5) + ) + ) + ;; code offset: 0x11f + (i32.add + ;; code offset: 0x11b + (local.get $3) + ;; code offset: 0x11d + (i32.const 12) + ) + ) + ) + ) + ) + ) + ) + ;; code offset: 0x12d + (i32.store offset=12 + ;; code offset: 0x129 + (local.get $3) + ;; code offset: 0x12b + (i32.const -1) + ) + ;; code offset: 0x135 + (br_if $label$2 + ;; code offset: 0x134 + (i32.ne + ;; code offset: 0x130 + (local.get $6) + ;; code offset: 0x132 + (i32.const -1) + ) + ) + ) + ;; code offset: 0x141 + (i32.store offset=28 + ;; code offset: 0x138 + (local.get $0) + ;; code offset: 0x13f + (local.tee $1 + ;; code offset: 0x13c + (i32.load offset=44 + ;; code offset: 0x13a + (local.get $0) + ) + ) + ) + ;; code offset: 0x148 + (i32.store offset=20 + ;; code offset: 0x144 + (local.get $0) + ;; code offset: 0x146 + (local.get $1) + ) + ;; code offset: 0x155 + (i32.store offset=16 + ;; code offset: 0x14b + (local.get $0) + ;; code offset: 0x154 + (i32.add + ;; code offset: 0x14d + (local.get $1) + ;; code offset: 0x151 + (i32.load offset=48 + ;; code offset: 0x14f + (local.get $0) + ) + ) + ) + ;; code offset: 0x15a + (br $label$1 + ;; code offset: 0x158 + (local.get $2) + ) + ) + ;; code offset: 0x161 + (i32.store offset=28 + ;; code offset: 0x15d + (local.get $0) + ;; code offset: 0x15f + (i32.const 0) + ) + ;; code offset: 0x168 + (i64.store offset=16 + ;; code offset: 0x164 + (local.get $0) + ;; code offset: 0x166 + (i64.const 0) + ) + ;; code offset: 0x175 + (i32.store + ;; code offset: 0x16b + (local.get $0) + ;; code offset: 0x174 + (i32.or + ;; code offset: 0x16f + (i32.load + ;; code offset: 0x16d + (local.get $0) + ) + ;; code offset: 0x172 + (i32.const 32) + ) + ) + ;; code offset: 0x183 + (drop + ;; code offset: 0x181 + (br_if $label$1 + ;; code offset: 0x17a + (local.tee $4 + ;; code offset: 0x178 + (i32.const 0) + ) + ;; code offset: 0x180 + (i32.eq + ;; code offset: 0x17c + (local.get $7) + ;; code offset: 0x17e + (i32.const 2) + ) + ) + ) + ;; code offset: 0x18b + (i32.sub + ;; code offset: 0x184 + (local.get $2) + ;; code offset: 0x188 + (i32.load offset=4 + ;; code offset: 0x186 + (local.get $1) + ) + ) + ) + ) + ;; code offset: 0x194 + (global.set $global$0 + ;; code offset: 0x193 + (i32.add + ;; code offset: 0x18f + (local.get $3) + ;; code offset: 0x191 + (i32.const 32) + ) + ) + ;; code offset: 0x196 + (local.get $4) + ) + (func $6 (param $0 i32) (result i32) + ;; code offset: 0x19b + (i32.const 0) + ) + (func $7 (param $0 i32) (param $1 i64) (param $2 i32) (result i64) + ;; code offset: 0x1a0 + (i64.const 0) + ) + (func $8 (param $0 i32) (result i32) + (local $1 i32) + ;; code offset: 0x1b6 + (i32.store8 offset=74 + ;; code offset: 0x1a7 + (local.get $0) + ;; code offset: 0x1b5 + (i32.or + ;; code offset: 0x1b2 + (i32.add + ;; code offset: 0x1ae + (local.tee $1 + ;; code offset: 0x1ab + (i32.load8_u offset=74 + ;; code offset: 0x1a9 + (local.get $0) + ) + ) + ;; code offset: 0x1b0 + (i32.const -1) + ) + ;; code offset: 0x1b3 + (local.get $1) + ) + ) + ;; code offset: 0x1c3 + (if + ;; code offset: 0x1c2 + (i32.and + ;; code offset: 0x1be + (local.tee $1 + ;; code offset: 0x1bb + (i32.load + ;; code offset: 0x1b9 + (local.get $0) + ) + ) + ;; code offset: 0x1c0 + (i32.const 8) + ) + (block + ;; code offset: 0x1cc + (i32.store + ;; code offset: 0x1c5 + (local.get $0) + ;; code offset: 0x1cb + (i32.or + ;; code offset: 0x1c7 + (local.get $1) + ;; code offset: 0x1c9 + (i32.const 32) + ) + ) + ;; code offset: 0x1d1 + (return + ;; code offset: 0x1cf + (i32.const -1) + ) + ) + ) + ;; code offset: 0x1d7 + (i64.store offset=4 align=4 + ;; code offset: 0x1d3 + (local.get $0) + ;; code offset: 0x1d5 + (i64.const 0) + ) + ;; code offset: 0x1e3 + (i32.store offset=28 + ;; code offset: 0x1da + (local.get $0) + ;; code offset: 0x1e1 + (local.tee $1 + ;; code offset: 0x1de + (i32.load offset=44 + ;; code offset: 0x1dc + (local.get $0) + ) + ) + ) + ;; code offset: 0x1ea + (i32.store offset=20 + ;; code offset: 0x1e6 + (local.get $0) + ;; code offset: 0x1e8 + (local.get $1) + ) + ;; code offset: 0x1f7 + (i32.store offset=16 + ;; code offset: 0x1ed + (local.get $0) + ;; code offset: 0x1f6 + (i32.add + ;; code offset: 0x1ef + (local.get $1) + ;; code offset: 0x1f3 + (i32.load offset=48 + ;; code offset: 0x1f1 + (local.get $0) + ) + ) + ) + ;; code offset: 0x1fa + (i32.const 0) + ) + (func $9 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + ;; code offset: 0x20c + (if + ;; code offset: 0x20b + (i32.ge_u + ;; code offset: 0x206 + (local.get $2) + ;; code offset: 0x208 + (i32.const 512) + ) + (block + ;; code offset: 0x216 + (drop + ;; code offset: 0x214 + (call $fimport$1 + ;; code offset: 0x20e + (local.get $0) + ;; code offset: 0x210 + (local.get $1) + ;; code offset: 0x212 + (local.get $2) + ) + ) + ;; code offset: 0x219 + (return + ;; code offset: 0x217 + (local.get $0) + ) + ) + ) + ;; code offset: 0x220 + (local.set $3 + ;; code offset: 0x21f + (i32.add + ;; code offset: 0x21b + (local.get $0) + ;; code offset: 0x21d + (local.get $2) + ) + ) + ;; code offset: 0x222 + (block $label$2 + ;; code offset: 0x22d + (if + ;; code offset: 0x22c + (i32.eqz + ;; code offset: 0x22b + (i32.and + ;; code offset: 0x228 + (i32.xor + ;; code offset: 0x224 + (local.get $0) + ;; code offset: 0x226 + (local.get $1) + ) + ;; code offset: 0x229 + (i32.const 3) + ) + ) + (block + ;; code offset: 0x22f + (block $label$4 + ;; code offset: 0x236 + (if + ;; code offset: 0x235 + (i32.lt_s + ;; code offset: 0x231 + (local.get $2) + ;; code offset: 0x233 + (i32.const 1) + ) + (block + ;; code offset: 0x23a + (local.set $2 + ;; code offset: 0x238 + (local.get $0) + ) + ;; code offset: 0x23c + (br $label$4) + ) + ) + ;; code offset: 0x245 + (if + ;; code offset: 0x244 + (i32.eqz + ;; code offset: 0x243 + (i32.and + ;; code offset: 0x23f + (local.get $0) + ;; code offset: 0x241 + (i32.const 3) + ) + ) + (block + ;; code offset: 0x249 + (local.set $2 + ;; code offset: 0x247 + (local.get $0) + ) + ;; code offset: 0x24b + (br $label$4) + ) + ) + ;; code offset: 0x250 + (local.set $2 + ;; code offset: 0x24e + (local.get $0) + ) + ;; code offset: 0x252 + (loop $label$7 + ;; code offset: 0x25b + (i32.store8 + ;; code offset: 0x254 + (local.get $2) + ;; code offset: 0x258 + (i32.load8_u + ;; code offset: 0x256 + (local.get $1) + ) + ) + ;; code offset: 0x263 + (local.set $1 + ;; code offset: 0x262 + (i32.add + ;; code offset: 0x25e + (local.get $1) + ;; code offset: 0x260 + (i32.const 1) + ) + ) + ;; code offset: 0x26f + (br_if $label$4 + ;; code offset: 0x26e + (i32.ge_u + ;; code offset: 0x26a + (local.tee $2 + ;; code offset: 0x269 + (i32.add + ;; code offset: 0x265 + (local.get $2) + ;; code offset: 0x267 + (i32.const 1) + ) + ) + ;; code offset: 0x26c + (local.get $3) + ) + ) + ;; code offset: 0x276 + (br_if $label$7 + ;; code offset: 0x275 + (i32.and + ;; code offset: 0x271 + (local.get $2) + ;; code offset: 0x273 + (i32.const 3) + ) + ) + ) + ) + ;; code offset: 0x27a + (block $label$8 + ;; code offset: 0x287 + (br_if $label$8 + ;; code offset: 0x286 + (i32.lt_u + ;; code offset: 0x281 + (local.tee $4 + ;; code offset: 0x280 + (i32.and + ;; code offset: 0x27c + (local.get $3) + ;; code offset: 0x27e + (i32.const -4) + ) + ) + ;; code offset: 0x283 + (i32.const 64) + ) + ) + ;; code offset: 0x293 + (br_if $label$8 + ;; code offset: 0x292 + (i32.gt_u + ;; code offset: 0x289 + (local.get $2) + ;; code offset: 0x290 + (local.tee $5 + ;; code offset: 0x28f + (i32.add + ;; code offset: 0x28b + (local.get $4) + ;; code offset: 0x28d + (i32.const -64) + ) + ) + ) + ) + ;; code offset: 0x295 + (loop $label$9 + ;; code offset: 0x29e + (i32.store + ;; code offset: 0x297 + (local.get $2) + ;; code offset: 0x29b + (i32.load + ;; code offset: 0x299 + (local.get $1) + ) + ) + ;; code offset: 0x2a8 + (i32.store offset=4 + ;; code offset: 0x2a1 + (local.get $2) + ;; code offset: 0x2a5 + (i32.load offset=4 + ;; code offset: 0x2a3 + (local.get $1) + ) + ) + ;; code offset: 0x2b2 + (i32.store offset=8 + ;; code offset: 0x2ab + (local.get $2) + ;; code offset: 0x2af + (i32.load offset=8 + ;; code offset: 0x2ad + (local.get $1) + ) + ) + ;; code offset: 0x2bc + (i32.store offset=12 + ;; code offset: 0x2b5 + (local.get $2) + ;; code offset: 0x2b9 + (i32.load offset=12 + ;; code offset: 0x2b7 + (local.get $1) + ) + ) + ;; code offset: 0x2c6 + (i32.store offset=16 + ;; code offset: 0x2bf + (local.get $2) + ;; code offset: 0x2c3 + (i32.load offset=16 + ;; code offset: 0x2c1 + (local.get $1) + ) + ) + ;; code offset: 0x2d0 + (i32.store offset=20 + ;; code offset: 0x2c9 + (local.get $2) + ;; code offset: 0x2cd + (i32.load offset=20 + ;; code offset: 0x2cb + (local.get $1) + ) + ) + ;; code offset: 0x2da + (i32.store offset=24 + ;; code offset: 0x2d3 + (local.get $2) + ;; code offset: 0x2d7 + (i32.load offset=24 + ;; code offset: 0x2d5 + (local.get $1) + ) + ) + ;; code offset: 0x2e4 + (i32.store offset=28 + ;; code offset: 0x2dd + (local.get $2) + ;; code offset: 0x2e1 + (i32.load offset=28 + ;; code offset: 0x2df + (local.get $1) + ) + ) + ;; code offset: 0x2ee + (i32.store offset=32 + ;; code offset: 0x2e7 + (local.get $2) + ;; code offset: 0x2eb + (i32.load offset=32 + ;; code offset: 0x2e9 + (local.get $1) + ) + ) + ;; code offset: 0x2f8 + (i32.store offset=36 + ;; code offset: 0x2f1 + (local.get $2) + ;; code offset: 0x2f5 + (i32.load offset=36 + ;; code offset: 0x2f3 + (local.get $1) + ) + ) + ;; code offset: 0x302 + (i32.store offset=40 + ;; code offset: 0x2fb + (local.get $2) + ;; code offset: 0x2ff + (i32.load offset=40 + ;; code offset: 0x2fd + (local.get $1) + ) + ) + ;; code offset: 0x30c + (i32.store offset=44 + ;; code offset: 0x305 + (local.get $2) + ;; code offset: 0x309 + (i32.load offset=44 + ;; code offset: 0x307 + (local.get $1) + ) + ) + ;; code offset: 0x316 + (i32.store offset=48 + ;; code offset: 0x30f + (local.get $2) + ;; code offset: 0x313 + (i32.load offset=48 + ;; code offset: 0x311 + (local.get $1) + ) + ) + ;; code offset: 0x320 + (i32.store offset=52 + ;; code offset: 0x319 + (local.get $2) + ;; code offset: 0x31d + (i32.load offset=52 + ;; code offset: 0x31b + (local.get $1) + ) + ) + ;; code offset: 0x32a + (i32.store offset=56 + ;; code offset: 0x323 + (local.get $2) + ;; code offset: 0x327 + (i32.load offset=56 + ;; code offset: 0x325 + (local.get $1) + ) + ) + ;; code offset: 0x334 + (i32.store offset=60 + ;; code offset: 0x32d + (local.get $2) + ;; code offset: 0x331 + (i32.load offset=60 + ;; code offset: 0x32f + (local.get $1) + ) + ) + ;; code offset: 0x33c + (local.set $1 + ;; code offset: 0x33b + (i32.sub + ;; code offset: 0x337 + (local.get $1) + ;; code offset: 0x339 + (i32.const -64) + ) + ) + ;; code offset: 0x348 + (br_if $label$9 + ;; code offset: 0x347 + (i32.le_u + ;; code offset: 0x343 + (local.tee $2 + ;; code offset: 0x342 + (i32.sub + ;; code offset: 0x33e + (local.get $2) + ;; code offset: 0x340 + (i32.const -64) + ) + ) + ;; code offset: 0x345 + (local.get $5) + ) + ) + ) + ) + ;; code offset: 0x351 + (br_if $label$2 + ;; code offset: 0x350 + (i32.ge_u + ;; code offset: 0x34c + (local.get $2) + ;; code offset: 0x34e + (local.get $4) + ) + ) + ;; code offset: 0x353 + (loop $label$10 + ;; code offset: 0x35c + (i32.store + ;; code offset: 0x355 + (local.get $2) + ;; code offset: 0x359 + (i32.load + ;; code offset: 0x357 + (local.get $1) + ) + ) + ;; code offset: 0x364 + (local.set $1 + ;; code offset: 0x363 + (i32.add + ;; code offset: 0x35f + (local.get $1) + ;; code offset: 0x361 + (i32.const 4) + ) + ) + ;; code offset: 0x370 + (br_if $label$10 + ;; code offset: 0x36f + (i32.lt_u + ;; code offset: 0x36b + (local.tee $2 + ;; code offset: 0x36a + (i32.add + ;; code offset: 0x366 + (local.get $2) + ;; code offset: 0x368 + (i32.const 4) + ) + ) + ;; code offset: 0x36d + (local.get $4) + ) + ) + ) + ;; code offset: 0x373 + (br $label$2) + ) + ) + ;; code offset: 0x37b + (if + ;; code offset: 0x37a + (i32.lt_u + ;; code offset: 0x376 + (local.get $3) + ;; code offset: 0x378 + (i32.const 4) + ) + (block + ;; code offset: 0x37f + (local.set $2 + ;; code offset: 0x37d + (local.get $0) + ) + ;; code offset: 0x381 + (br $label$2) + ) + ) + ;; code offset: 0x38e + (if + ;; code offset: 0x38d + (i32.lt_u + ;; code offset: 0x389 + (local.tee $4 + ;; code offset: 0x388 + (i32.add + ;; code offset: 0x384 + (local.get $3) + ;; code offset: 0x386 + (i32.const -4) + ) + ) + ;; code offset: 0x38b + (local.get $0) + ) + (block + ;; code offset: 0x392 + (local.set $2 + ;; code offset: 0x390 + (local.get $0) + ) + ;; code offset: 0x394 + (br $label$2) + ) + ) + ;; code offset: 0x399 + (local.set $2 + ;; code offset: 0x397 + (local.get $0) + ) + ;; code offset: 0x39b + (loop $label$13 + ;; code offset: 0x3a4 + (i32.store8 + ;; code offset: 0x39d + (local.get $2) + ;; code offset: 0x3a1 + (i32.load8_u + ;; code offset: 0x39f + (local.get $1) + ) + ) + ;; code offset: 0x3ae + (i32.store8 offset=1 + ;; code offset: 0x3a7 + (local.get $2) + ;; code offset: 0x3ab + (i32.load8_u offset=1 + ;; code offset: 0x3a9 + (local.get $1) + ) + ) + ;; code offset: 0x3b8 + (i32.store8 offset=2 + ;; code offset: 0x3b1 + (local.get $2) + ;; code offset: 0x3b5 + (i32.load8_u offset=2 + ;; code offset: 0x3b3 + (local.get $1) + ) + ) + ;; code offset: 0x3c2 + (i32.store8 offset=3 + ;; code offset: 0x3bb + (local.get $2) + ;; code offset: 0x3bf + (i32.load8_u offset=3 + ;; code offset: 0x3bd + (local.get $1) + ) + ) + ;; code offset: 0x3ca + (local.set $1 + ;; code offset: 0x3c9 + (i32.add + ;; code offset: 0x3c5 + (local.get $1) + ;; code offset: 0x3c7 + (i32.const 4) + ) + ) + ;; code offset: 0x3d6 + (br_if $label$13 + ;; code offset: 0x3d5 + (i32.le_u + ;; code offset: 0x3d1 + (local.tee $2 + ;; code offset: 0x3d0 + (i32.add + ;; code offset: 0x3cc + (local.get $2) + ;; code offset: 0x3ce + (i32.const 4) + ) + ) + ;; code offset: 0x3d3 + (local.get $4) + ) + ) + ) + ) + ;; code offset: 0x3df + (if + ;; code offset: 0x3de + (i32.lt_u + ;; code offset: 0x3da + (local.get $2) + ;; code offset: 0x3dc + (local.get $3) + ) + ;; code offset: 0x3e1 + (loop $label$15 + ;; code offset: 0x3ea + (i32.store8 + ;; code offset: 0x3e3 + (local.get $2) + ;; code offset: 0x3e7 + (i32.load8_u + ;; code offset: 0x3e5 + (local.get $1) + ) + ) + ;; code offset: 0x3f2 + (local.set $1 + ;; code offset: 0x3f1 + (i32.add + ;; code offset: 0x3ed + (local.get $1) + ;; code offset: 0x3ef + (i32.const 1) + ) + ) + ;; code offset: 0x3fe + (br_if $label$15 + ;; code offset: 0x3fd + (i32.ne + ;; code offset: 0x3f9 + (local.tee $2 + ;; code offset: 0x3f8 + (i32.add + ;; code offset: 0x3f4 + (local.get $2) + ;; code offset: 0x3f6 + (i32.const 1) + ) + ) + ;; code offset: 0x3fb + (local.get $3) + ) + ) + ) + ) + ;; code offset: 0x402 + (local.get $0) + ) + (func $10 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + ;; code offset: 0x410 + (block $label$1 + ;; code offset: 0x43a + (if + (block $label$2 (result i32) + ;; code offset: 0x41c + (if + ;; code offset: 0x41b + (i32.eqz + ;; code offset: 0x419 + (local.tee $3 + ;; code offset: 0x416 + (i32.load offset=16 + ;; code offset: 0x414 + (local.get $2) + ) + ) + ) + (block + ;; code offset: 0x422 + (br_if $label$1 + ;; code offset: 0x420 + (call $8 + ;; code offset: 0x41e + (local.get $2) + ) + ) + ;; code offset: 0x429 + (local.set $3 + ;; code offset: 0x426 + (i32.load offset=16 + ;; code offset: 0x424 + (local.get $2) + ) + ) + ) + ) + ;; code offset: 0x438 + (i32.lt_u + ;; code offset: 0x435 + (i32.sub + ;; code offset: 0x42c + (local.get $3) + ;; code offset: 0x433 + (local.tee $5 + ;; code offset: 0x430 + (i32.load offset=20 + ;; code offset: 0x42e + (local.get $2) + ) + ) + ) + ;; code offset: 0x436 + (local.get $1) + ) + ) + ;; code offset: 0x44a + (return + ;; code offset: 0x447 + (call_indirect (type $i32_i32_i32_=>_i32) + ;; code offset: 0x43c + (local.get $2) + ;; code offset: 0x43e + (local.get $0) + ;; code offset: 0x440 + (local.get $1) + ;; code offset: 0x444 + (i32.load offset=36 + ;; code offset: 0x442 + (local.get $2) + ) + ) + ) + ) + ;; code offset: 0x44c + (block $label$5 + ;; code offset: 0x456 + (br_if $label$5 + ;; code offset: 0x455 + (i32.lt_s + ;; code offset: 0x450 + (i32.load8_s offset=75 + ;; code offset: 0x44e + (local.get $2) + ) + ;; code offset: 0x453 + (i32.const 0) + ) + ) + ;; code offset: 0x45a + (local.set $4 + ;; code offset: 0x458 + (local.get $1) + ) + ;; code offset: 0x45c + (loop $label$6 + ;; code offset: 0x463 + (br_if $label$5 + ;; code offset: 0x462 + (i32.eqz + ;; code offset: 0x460 + (local.tee $3 + ;; code offset: 0x45e + (local.get $4) + ) + ) + ) + ;; code offset: 0x475 + (br_if $label$6 + ;; code offset: 0x474 + (i32.ne + ;; code offset: 0x46f + (i32.load8_u + ;; code offset: 0x46e + (i32.add + ;; code offset: 0x465 + (local.get $0) + ;; code offset: 0x46c + (local.tee $4 + ;; code offset: 0x46b + (i32.add + ;; code offset: 0x467 + (local.get $3) + ;; code offset: 0x469 + (i32.const -1) + ) + ) + ) + ) + ;; code offset: 0x472 + (i32.const 10) + ) + ) + ) + ;; code offset: 0x48b + (br_if $label$1 + ;; code offset: 0x48a + (i32.lt_u + ;; code offset: 0x486 + (local.tee $4 + ;; code offset: 0x483 + (call_indirect (type $i32_i32_i32_=>_i32) + ;; code offset: 0x478 + (local.get $2) + ;; code offset: 0x47a + (local.get $0) + ;; code offset: 0x47c + (local.get $3) + ;; code offset: 0x480 + (i32.load offset=36 + ;; code offset: 0x47e + (local.get $2) + ) + ) + ) + ;; code offset: 0x488 + (local.get $3) + ) + ) + ;; code offset: 0x492 + (local.set $0 + ;; code offset: 0x491 + (i32.add + ;; code offset: 0x48d + (local.get $0) + ;; code offset: 0x48f + (local.get $3) + ) + ) + ;; code offset: 0x499 + (local.set $1 + ;; code offset: 0x498 + (i32.sub + ;; code offset: 0x494 + (local.get $1) + ;; code offset: 0x496 + (local.get $3) + ) + ) + ;; code offset: 0x4a0 + (local.set $5 + ;; code offset: 0x49d + (i32.load offset=20 + ;; code offset: 0x49b + (local.get $2) + ) + ) + ;; code offset: 0x4a4 + (local.set $6 + ;; code offset: 0x4a2 + (local.get $3) + ) + ) + ;; code offset: 0x4af + (drop + ;; code offset: 0x4ad + (call $9 + ;; code offset: 0x4a7 + (local.get $5) + ;; code offset: 0x4a9 + (local.get $0) + ;; code offset: 0x4ab + (local.get $1) + ) + ) + ;; code offset: 0x4ba + (i32.store offset=20 + ;; code offset: 0x4b0 + (local.get $2) + ;; code offset: 0x4b9 + (i32.add + ;; code offset: 0x4b4 + (i32.load offset=20 + ;; code offset: 0x4b2 + (local.get $2) + ) + ;; code offset: 0x4b7 + (local.get $1) + ) + ) + ;; code offset: 0x4c2 + (local.set $4 + ;; code offset: 0x4c1 + (i32.add + ;; code offset: 0x4bd + (local.get $1) + ;; code offset: 0x4bf + (local.get $6) + ) + ) + ) + ;; code offset: 0x4c5 + (local.get $4) + ) + (func $11 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + ;; code offset: 0x4d3 + (local.set $4 + ;; code offset: 0x4d2 + (i32.mul + ;; code offset: 0x4ce + (local.get $1) + ;; code offset: 0x4d0 + (local.get $2) + ) + ) + ;; code offset: 0x4d5 + (block $label$1 + ;; code offset: 0x4df + (if + ;; code offset: 0x4de + (i32.le_s + ;; code offset: 0x4d9 + (i32.load offset=76 + ;; code offset: 0x4d7 + (local.get $3) + ) + ;; code offset: 0x4dc + (i32.const -1) + ) + (block + ;; code offset: 0x4e9 + (local.set $0 + ;; code offset: 0x4e7 + (call $10 + ;; code offset: 0x4e1 + (local.get $0) + ;; code offset: 0x4e3 + (local.get $4) + ;; code offset: 0x4e5 + (local.get $3) + ) + ) + ;; code offset: 0x4eb + (br $label$1) + ) + ) + ;; code offset: 0x4f2 + (local.set $5 + ;; code offset: 0x4f0 + (call $15 + ;; code offset: 0x4ee + (local.get $3) + ) + ) + ;; code offset: 0x4fc + (local.set $0 + ;; code offset: 0x4fa + (call $10 + ;; code offset: 0x4f4 + (local.get $0) + ;; code offset: 0x4f6 + (local.get $4) + ;; code offset: 0x4f8 + (local.get $3) + ) + ) + ;; code offset: 0x501 + (br_if $label$1 + ;; code offset: 0x500 + (i32.eqz + ;; code offset: 0x4fe + (local.get $5) + ) + ) + ;; code offset: 0x505 + (call $16 + ;; code offset: 0x503 + (local.get $3) + ) + ) + ;; code offset: 0x50d + (if + ;; code offset: 0x50c + (i32.eq + ;; code offset: 0x508 + (local.get $0) + ;; code offset: 0x50a + (local.get $4) + ) + ;; code offset: 0x516 + (return + ;; code offset: 0x515 + (select + ;; code offset: 0x50f + (local.get $2) + ;; code offset: 0x511 + (i32.const 0) + ;; code offset: 0x513 + (local.get $1) + ) + ) + ) + ;; code offset: 0x51c + (i32.div_u + ;; code offset: 0x518 + (local.get $0) + ;; code offset: 0x51a + (local.get $1) + ) + ) + (func $12 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + ;; code offset: 0x537 + (select + ;; code offset: 0x522 + (i32.const -1) + ;; code offset: 0x524 + (i32.const 0) + ;; code offset: 0x536 + (i32.ne + ;; code offset: 0x532 + (call $11 + ;; code offset: 0x526 + (local.get $0) + ;; code offset: 0x528 + (i32.const 1) + ;; code offset: 0x52e + (local.tee $2 + ;; code offset: 0x52c + (call $17 + ;; code offset: 0x52a + (local.get $0) + ) + ) + ;; code offset: 0x530 + (local.get $1) + ) + ;; code offset: 0x534 + (local.get $2) + ) + ) + ) + (func $13 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + ;; code offset: 0x549 + (global.set $global$0 + ;; code offset: 0x547 + (local.tee $3 + ;; code offset: 0x546 + (i32.sub + ;; code offset: 0x542 + (global.get $global$0) + ;; code offset: 0x544 + (i32.const 16) + ) + ) + ) + ;; code offset: 0x54f + (i32.store8 offset=15 + ;; code offset: 0x54b + (local.get $3) + ;; code offset: 0x54d + (local.get $1) + ) + ;; code offset: 0x552 + (block $label$1 + ;; code offset: 0x55c + (if + ;; code offset: 0x55b + (i32.eqz + ;; code offset: 0x559 + (local.tee $2 + ;; code offset: 0x556 + (i32.load offset=16 + ;; code offset: 0x554 + (local.get $0) + ) + ) + ) + (block + ;; code offset: 0x560 + (local.set $2 + ;; code offset: 0x55e + (i32.const -1) + ) + ;; code offset: 0x566 + (br_if $label$1 + ;; code offset: 0x564 + (call $8 + ;; code offset: 0x562 + (local.get $0) + ) + ) + ;; code offset: 0x56d + (local.set $2 + ;; code offset: 0x56a + (i32.load offset=16 + ;; code offset: 0x568 + (local.get $0) + ) + ) + ) + ) + ;; code offset: 0x570 + (block $label$3 + ;; code offset: 0x57c + (br_if $label$3 + ;; code offset: 0x57b + (i32.ge_u + ;; code offset: 0x577 + (local.tee $4 + ;; code offset: 0x574 + (i32.load offset=20 + ;; code offset: 0x572 + (local.get $0) + ) + ) + ;; code offset: 0x579 + (local.get $2) + ) + ) + ;; code offset: 0x58c + (br_if $label$3 + ;; code offset: 0x58b + (i32.eq + ;; code offset: 0x584 + (local.tee $2 + ;; code offset: 0x583 + (i32.and + ;; code offset: 0x57e + (local.get $1) + ;; code offset: 0x580 + (i32.const 255) + ) + ) + ;; code offset: 0x588 + (i32.load8_s offset=75 + ;; code offset: 0x586 + (local.get $0) + ) + ) + ) + ;; code offset: 0x595 + (i32.store offset=20 + ;; code offset: 0x58e + (local.get $0) + ;; code offset: 0x594 + (i32.add + ;; code offset: 0x590 + (local.get $4) + ;; code offset: 0x592 + (i32.const 1) + ) + ) + ;; code offset: 0x59c + (i32.store8 + ;; code offset: 0x598 + (local.get $4) + ;; code offset: 0x59a + (local.get $1) + ) + ;; code offset: 0x59f + (br $label$1) + ) + ;; code offset: 0x5a4 + (local.set $2 + ;; code offset: 0x5a2 + (i32.const -1) + ) + ;; code offset: 0x5ba + (br_if $label$1 + ;; code offset: 0x5b9 + (i32.ne + ;; code offset: 0x5b4 + (call_indirect (type $i32_i32_i32_=>_i32) + ;; code offset: 0x5a6 + (local.get $0) + ;; code offset: 0x5ac + (i32.add + ;; code offset: 0x5a8 + (local.get $3) + ;; code offset: 0x5aa + (i32.const 15) + ) + ;; code offset: 0x5ad + (i32.const 1) + ;; code offset: 0x5b1 + (i32.load offset=36 + ;; code offset: 0x5af + (local.get $0) + ) + ) + ;; code offset: 0x5b7 + (i32.const 1) + ) + ) + ;; code offset: 0x5c1 + (local.set $2 + ;; code offset: 0x5be + (i32.load8_u offset=15 + ;; code offset: 0x5bc + (local.get $3) + ) + ) + ) + ;; code offset: 0x5c9 + (global.set $global$0 + ;; code offset: 0x5c8 + (i32.add + ;; code offset: 0x5c4 + (local.get $3) + ;; code offset: 0x5c6 + (i32.const 16) + ) + ) + ;; code offset: 0x5cb + (local.get $2) + ) + (func $14 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + ;; code offset: 0x5e2 + (if + ;; code offset: 0x5e1 + (i32.ge_s + ;; code offset: 0x5dc + (i32.load offset=76 + ;; code offset: 0x5da + (local.tee $1 + ;; code offset: 0x5d7 + (i32.load + ;; code offset: 0x5d4 + (i32.const 1040) + ) + ) + ) + ;; code offset: 0x5df + (i32.const 0) + ) + ;; code offset: 0x5e8 + (local.set $2 + ;; code offset: 0x5e6 + (call $15 + ;; code offset: 0x5e4 + (local.get $1) + ) + ) + ) + ;; code offset: 0x636 + (local.set $0 + ;; code offset: 0x5eb + (block $label$2 (result i32) + ;; code offset: 0x5fa + (drop + ;; code offset: 0x5f8 + (br_if $label$2 + ;; code offset: 0x5ed + (i32.const -1) + ;; code offset: 0x5f7 + (i32.lt_s + ;; code offset: 0x5f3 + (call $12 + ;; code offset: 0x5ef + (local.get $0) + ;; code offset: 0x5f1 + (local.get $1) + ) + ;; code offset: 0x5f5 + (i32.const 0) + ) + ) + ) + ;; code offset: 0x5fb + (block $label$3 + ;; code offset: 0x605 + (br_if $label$3 + ;; code offset: 0x604 + (i32.eq + ;; code offset: 0x5ff + (i32.load8_u offset=75 + ;; code offset: 0x5fd + (local.get $1) + ) + ;; code offset: 0x602 + (i32.const 10) + ) + ) + ;; code offset: 0x614 + (br_if $label$3 + ;; code offset: 0x613 + (i32.ge_u + ;; code offset: 0x60c + (local.tee $0 + ;; code offset: 0x609 + (i32.load offset=20 + ;; code offset: 0x607 + (local.get $1) + ) + ) + ;; code offset: 0x610 + (i32.load offset=16 + ;; code offset: 0x60e + (local.get $1) + ) + ) + ) + ;; code offset: 0x61d + (i32.store offset=20 + ;; code offset: 0x616 + (local.get $1) + ;; code offset: 0x61c + (i32.add + ;; code offset: 0x618 + (local.get $0) + ;; code offset: 0x61a + (i32.const 1) + ) + ) + ;; code offset: 0x624 + (i32.store8 + ;; code offset: 0x620 + (local.get $0) + ;; code offset: 0x622 + (i32.const 10) + ) + ;; code offset: 0x629 + (br $label$2 + ;; code offset: 0x627 + (i32.const 0) + ) + ) + ;; code offset: 0x634 + (i32.shr_s + ;; code offset: 0x630 + (call $13 + ;; code offset: 0x62c + (local.get $1) + ;; code offset: 0x62e + (i32.const 10) + ) + ;; code offset: 0x632 + (i32.const 31) + ) + ) + ) + ;; code offset: 0x63a + (if + ;; code offset: 0x638 + (local.get $2) + ;; code offset: 0x63e + (call $16 + ;; code offset: 0x63c + (local.get $1) + ) + ) + ;; code offset: 0x641 + (local.get $0) + ) + (func $15 (param $0 i32) (result i32) + ;; code offset: 0x646 + (i32.const 1) + ) + (func $16 (param $0 i32) + ;; code offset: 0x64b + (nop) + ) + (func $17 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + ;; code offset: 0x658 + (local.set $1 + ;; code offset: 0x656 + (local.get $0) + ) + ;; code offset: 0x65a + (block $label$1 + (block $label$2 + ;; code offset: 0x664 + (br_if $label$2 + ;; code offset: 0x663 + (i32.eqz + ;; code offset: 0x662 + (i32.and + ;; code offset: 0x65e + (local.get $0) + ;; code offset: 0x660 + (i32.const 3) + ) + ) + ) + ;; code offset: 0x66c + (if + ;; code offset: 0x66b + (i32.eqz + ;; code offset: 0x668 + (i32.load8_u + ;; code offset: 0x666 + (local.get $0) + ) + ) + ;; code offset: 0x670 + (return + ;; code offset: 0x66e + (i32.const 0) + ) + ) + ;; code offset: 0x672 + (loop $label$4 + ;; code offset: 0x67f + (br_if $label$2 + ;; code offset: 0x67e + (i32.eqz + ;; code offset: 0x67d + (i32.and + ;; code offset: 0x679 + (local.tee $1 + ;; code offset: 0x678 + (i32.add + ;; code offset: 0x674 + (local.get $1) + ;; code offset: 0x676 + (i32.const 1) + ) + ) + ;; code offset: 0x67b + (i32.const 3) + ) + ) + ) + ;; code offset: 0x686 + (br_if $label$4 + ;; code offset: 0x683 + (i32.load8_u + ;; code offset: 0x681 + (local.get $1) + ) + ) + ) + ;; code offset: 0x689 + (br $label$1) + ) + ;; code offset: 0x68c + (loop $label$5 + ;; code offset: 0x695 + (local.set $1 + ;; code offset: 0x694 + (i32.add + ;; code offset: 0x690 + (local.tee $2 + ;; code offset: 0x68e + (local.get $1) + ) + ;; code offset: 0x692 + (i32.const 4) + ) + ) + ;; code offset: 0x6b2 + (br_if $label$5 + ;; code offset: 0x6b1 + (i32.eqz + ;; code offset: 0x6b0 + (i32.and + ;; code offset: 0x6a9 + (i32.and + ;; code offset: 0x6a0 + (i32.xor + ;; code offset: 0x69c + (local.tee $3 + ;; code offset: 0x699 + (i32.load + ;; code offset: 0x697 + (local.get $2) + ) + ) + ;; code offset: 0x69e + (i32.const -1) + ) + ;; code offset: 0x6a8 + (i32.add + ;; code offset: 0x6a1 + (local.get $3) + ;; code offset: 0x6a3 + (i32.const -16843009) + ) + ) + ;; code offset: 0x6aa + (i32.const -2139062144) + ) + ) + ) + ) + ;; code offset: 0x6bc + (if + ;; code offset: 0x6bb + (i32.eqz + ;; code offset: 0x6ba + (i32.and + ;; code offset: 0x6b5 + (local.get $3) + ;; code offset: 0x6b7 + (i32.const 255) + ) + ) + ;; code offset: 0x6c3 + (return + ;; code offset: 0x6c2 + (i32.sub + ;; code offset: 0x6be + (local.get $2) + ;; code offset: 0x6c0 + (local.get $0) + ) + ) + ) + ;; code offset: 0x6c5 + (loop $label$7 + ;; code offset: 0x6cc + (local.set $3 + ;; code offset: 0x6c9 + (i32.load8_u offset=1 + ;; code offset: 0x6c7 + (local.get $2) + ) + ) + ;; code offset: 0x6d5 + (local.set $2 + ;; code offset: 0x6d3 + (local.tee $1 + ;; code offset: 0x6d2 + (i32.add + ;; code offset: 0x6ce + (local.get $2) + ;; code offset: 0x6d0 + (i32.const 1) + ) + ) + ) + ;; code offset: 0x6d9 + (br_if $label$7 + ;; code offset: 0x6d7 + (local.get $3) + ) + ) + ) + ;; code offset: 0x6e1 + (i32.sub + ;; code offset: 0x6dd + (local.get $1) + ;; code offset: 0x6df + (local.get $0) + ) + ) + (func $18 (result i32) + ;; code offset: 0x6e5 + (global.get $global$0) + ) + (func $19 (param $0 i32) + ;; code offset: 0x6ec + (global.set $global$0 + ;; code offset: 0x6ea + (local.get $0) + ) + ) + (func $20 (param $0 i32) (result i32) + (local $1 i32) + ;; code offset: 0x6fd + (global.set $global$0 + ;; code offset: 0x6fb + (local.tee $1 + ;; code offset: 0x6fa + (i32.and + ;; code offset: 0x6f7 + (i32.sub + ;; code offset: 0x6f3 + (global.get $global$0) + ;; code offset: 0x6f5 + (local.get $0) + ) + ;; code offset: 0x6f8 + (i32.const -16) + ) + ) + ) + ;; code offset: 0x6ff + (local.get $1) + ) + (func $21 (param $0 i32) (param $1 i32) (param $2 i64) (param $3 i32) (result i64) + ;; code offset: 0x70c + (call_indirect (type $i32_i64_i32_=>_i64) + ;; code offset: 0x704 + (local.get $1) + ;; code offset: 0x706 + (local.get $2) + ;; code offset: 0x708 + (local.get $3) + ;; code offset: 0x70a + (local.get $0) + ) + ) + (func $22 (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) + (local $5 i64) + ;; code offset: 0x72c + (call $fimport$2 + ;; code offset: 0x72b + (i32.wrap_i64 + ;; code offset: 0x72a + (i64.shr_u + ;; code offset: 0x726 + (local.tee $5 + ;; code offset: 0x724 + (call $21 + ;; code offset: 0x714 + (local.get $0) + ;; code offset: 0x716 + (local.get $1) + ;; code offset: 0x721 + (i64.or + ;; code offset: 0x71a + (i64.extend_i32_u + ;; code offset: 0x718 + (local.get $2) + ) + ;; code offset: 0x720 + (i64.shl + ;; code offset: 0x71d + (i64.extend_i32_u + ;; code offset: 0x71b + (local.get $3) + ) + ;; code offset: 0x71e + (i64.const 32) + ) + ) + ;; code offset: 0x722 + (local.get $4) + ) + ) + ;; code offset: 0x728 + (i64.const 32) + ) + ) + ) + ;; code offset: 0x730 + (i32.wrap_i64 + ;; code offset: 0x72e + (local.get $5) + ) + ) + (func $23 (param $0 i32) (result i32) + ;; code offset: 0x736 + (memory.grow + ;; code offset: 0x734 + (local.get $0) + ) + ) + ;; custom section ".debug_info", size 79 + ;; custom section ".debug_abbrev", size 64 + ;; custom section ".debug_line", size 53 + ;; custom section ".debug_str", size 206 +) diff -Nru binaryen-91/test/passes/reverse_dwarf_abbrevs.passes binaryen-99/test/passes/reverse_dwarf_abbrevs.passes --- binaryen-91/test/passes/reverse_dwarf_abbrevs.passes 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/reverse_dwarf_abbrevs.passes 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +roundtrip_dwarfdump_g Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/passes/reverse_dwarf_abbrevs.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/passes/reverse_dwarf_abbrevs.wasm differ diff -Nru binaryen-91/test/passes/roundtrip_signed.bin.txt binaryen-99/test/passes/roundtrip_signed.bin.txt --- binaryen-91/test/passes/roundtrip_signed.bin.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/roundtrip_signed.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,26 @@ +(module + (type $none_=>_none (func)) + (memory $0 16 17) + (global $global$0 (mut i32) (i32.const 10)) + (export "as-br_table-index" (func $0)) + (export "as-local.set-value" (func $0)) + (func $0 + (if + (i32.eqz + (global.get $global$0) + ) + (return) + ) + (global.set $global$0 + (i32.sub + (global.get $global$0) + (i32.const 1) + ) + ) + (drop + (i32.load + (i32.const 0) + ) + ) + ) +) diff -Nru binaryen-91/test/passes/roundtrip_signed.passes binaryen-99/test/passes/roundtrip_signed.passes --- binaryen-91/test/passes/roundtrip_signed.passes 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/roundtrip_signed.passes 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +remove-unused-module-elements_roundtrip_vacuum_remove-unused-brs_merge-blocks_vacuum_duplicate-function-elimination Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/passes/roundtrip_signed.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/passes/roundtrip_signed.wasm differ diff -Nru binaryen-91/test/passes/roundtrip.txt binaryen-99/test/passes/roundtrip.txt --- binaryen-91/test/passes/roundtrip.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/roundtrip.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,11 +1,11 @@ (module (type $none_=>_none (func)) (export "foo" (func $0)) - (func $0 (; 0 ;) + (func $0 (unreachable) ) ) (module - (memory $ 1 1) - (table $ 0 funcref) + (memory $0 1 1) + (table $0 0 funcref) ) diff -Nru binaryen-91/test/passes/rse_all-features.txt binaryen-99/test/passes/rse_all-features.txt --- binaryen-91/test/passes/rse_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/rse_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -4,7 +4,7 @@ (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_f64_=>_none (func (param i32 f64))) (event $e (attr 0) (param i32)) - (func $basic (; 0 ;) (param $x i32) (param $y f64) + (func $basic (param $x i32) (param $y f64) (local $a f32) (local $b i64) (local.set $x @@ -20,7 +20,7 @@ (i64.const 0) ) ) - (func $later-param-use (; 1 ;) (param $x i32) + (func $later-param-use (param $x i32) (local.set $x (i32.const 0) ) @@ -28,7 +28,7 @@ (i32.const 0) ) ) - (func $diff-value (; 2 ;) (param $x i32) + (func $diff-value (param $x i32) (local $a i32) (local.set $x (i32.const 0) @@ -49,7 +49,22 @@ (i32.const 0) ) ) - (func $unreach (; 3 ;) + (func $tuple-value + (local $x (i32 i64)) + (local.set $x + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + (drop + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + (func $unreach (local $a i32) (block $x (drop @@ -73,7 +88,7 @@ ) ) ) - (func $loop (; 4 ;) + (func $loop (local $a i32) (local $b i32) (loop $x @@ -100,7 +115,7 @@ (i32.const 1) ) ) - (func $if (; 5 ;) + (func $if (local $x i32) (if (i32.const 0) @@ -115,7 +130,7 @@ (i32.const 1) ) ) - (func $if2 (; 6 ;) + (func $if2 (local $x i32) (if (local.tee $x @@ -132,7 +147,7 @@ (i32.const 1) ) ) - (func $if3 (; 7 ;) + (func $if3 (local $x i32) (if (local.tee $x @@ -149,7 +164,7 @@ (i32.const 1) ) ) - (func $copy (; 8 ;) + (func $copy (local $x i32) (local $y i32) (local.set $x @@ -193,7 +208,7 @@ (local.get $x) ) ) - (func $param-unique (; 9 ;) (param $x i32) + (func $param-unique (param $x i32) (local $a i32) (local.set $a (local.get $x) @@ -213,7 +228,7 @@ (local.get $x) ) ) - (func $set-unique (; 10 ;) + (func $set-unique (local $x i32) (local $y i32) (local.set $x @@ -271,7 +286,7 @@ (local.get $x) ) ) - (func $identical_complex (; 11 ;) (param $x i32) + (func $identical_complex (param $x i32) (local $y i32) (local.set $y (local.get $x) @@ -292,7 +307,7 @@ (local.get $y) ) ) - (func $merge (; 12 ;) + (func $merge (local $x i32) (if (i32.const 1) @@ -327,7 +342,7 @@ (i32.const 2) ) ) - (func $one-arm (; 13 ;) (param $1 i32) (param $3 i32) + (func $one-arm (param $1 i32) (param $3 i32) (local.set $1 (local.get $3) ) @@ -339,7 +354,7 @@ ) ) ) - (func $one-arm2 (; 14 ;) (param $1 i32) (param $3 i32) + (func $one-arm2 (param $1 i32) (param $3 i32) (local.set $1 (local.get $3) ) @@ -350,7 +365,7 @@ ) ) ) - (func $many-merges (; 15 ;) + (func $many-merges (local $0 i32) (local $1 i32) (block $block @@ -379,7 +394,7 @@ ) ) ) - (func $fuzz (; 16 ;) + (func $fuzz (local $x i32) (loop $label$4 (block $label$5 @@ -408,7 +423,7 @@ ) ) ) - (func $fuzz2 (; 17 ;) + (func $fuzz2 (local $var$1 i32) (if (i32.const 0) @@ -431,7 +446,7 @@ ) ) ) - (func $fuzz-nan (; 18 ;) + (func $fuzz-nan (local $0 f64) (local $1 f64) (block $block @@ -460,13 +475,15 @@ ) ) ) - (func $try1 (; 19 ;) + (func $try1 (local $x i32) (try - (nop) + (do + (nop) + ) (catch (drop - (exnref.pop) + (pop exnref) ) (local.set $x (i32.const 1) @@ -477,10 +494,10 @@ (i32.const 1) ) ) - (func $try2 (; 20 ;) + (func $try2 (local $x i32) (try - (block $block + (do (throw $e (i32.const 0) ) @@ -490,7 +507,7 @@ ) (catch (drop - (exnref.pop) + (pop exnref) ) ) ) @@ -498,15 +515,17 @@ (i32.const 1) ) ) - (func $try3 (; 21 ;) + (func $try3 (local $x i32) (try - (throw $e - (i32.const 0) + (do + (throw $e + (i32.const 0) + ) ) (catch (drop - (exnref.pop) + (pop exnref) ) (local.set $x (i32.const 1) @@ -517,13 +536,13 @@ (i32.const 1) ) ) - (func $foo (; 22 ;) + (func $foo (nop) ) - (func $try4 (; 23 ;) + (func $try4 (local $x i32) (try - (block $block + (do (call $foo) (local.set $x (i32.const 1) @@ -531,7 +550,7 @@ ) (catch (drop - (exnref.pop) + (pop exnref) ) ) ) @@ -539,10 +558,10 @@ (i32.const 1) ) ) - (func $try5 (; 24 ;) + (func $try5 (local $x i32) (try - (block $block + (do (local.set $x (i32.const 1) ) @@ -550,7 +569,7 @@ ) (catch (drop - (exnref.pop) + (pop exnref) ) ) ) @@ -558,22 +577,26 @@ (i32.const 1) ) ) - (func $nested-try (; 25 ;) + (func $nested-try (local $x i32) (try - (try - (throw $e - (i32.const 0) - ) - (catch - (rethrow - (exnref.pop) + (do + (try + (do + (throw $e + (i32.const 0) + ) + ) + (catch + (rethrow + (pop exnref) + ) ) ) ) (catch (drop - (exnref.pop) + (pop exnref) ) (local.set $x (i32.const 1) diff -Nru binaryen-91/test/passes/rse_all-features.wast binaryen-99/test/passes/rse_all-features.wast --- binaryen-91/test/passes/rse_all-features.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/rse_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -20,6 +20,15 @@ (local.set $a (i32.const 1)) (local.set $a (i32.const 0)) ) + (func $tuple-value + (local $x (i32 i64)) + (local.set $x + (tuple.make (i32.const 42) (i64.const 42)) + ) + (local.set $x + (tuple.make (i32.const 42) (i64.const 42)) + ) + ) (func $unreach (local $a i32) (block $x @@ -282,8 +291,9 @@ (func $try1 (local $x i32) (try + (do) (catch - (drop (exnref.pop)) + (drop (pop exnref)) (local.set $x (i32.const 1)) ) ) @@ -292,12 +302,12 @@ (func $try2 (local $x i32) (try - (block + (do (throw $e (i32.const 0)) (local.set $x (i32.const 1)) ) (catch - (drop (exnref.pop)) + (drop (pop exnref)) ) ) (local.set $x (i32.const 1)) ;; should NOT be dropped @@ -305,9 +315,11 @@ (func $try3 (local $x i32) (try - (throw $e (i32.const 0)) + (do + (throw $e (i32.const 0)) + ) (catch - (drop (exnref.pop)) + (drop (pop exnref)) (local.set $x (i32.const 1)) ) ) @@ -317,12 +329,12 @@ (func $try4 (local $x i32) (try - (block + (do (call $foo) (local.set $x (i32.const 1)) ) (catch - (drop (exnref.pop)) + (drop (pop exnref)) ) ) (local.set $x (i32.const 1)) ;; should NOT be dropped @@ -330,12 +342,12 @@ (func $try5 (local $x i32) (try - (block + (do (local.set $x (i32.const 1)) (call $foo) ) (catch - (drop (exnref.pop)) + (drop (pop exnref)) ) ) (local.set $x (i32.const 1)) ;; should be dropped @@ -343,18 +355,21 @@ (func $nested-try (local $x i32) (try - (try - (throw $e (i32.const 0)) - (catch - (rethrow (exnref.pop)) + (do + (try + (do + (throw $e (i32.const 0)) + ) + (catch + (rethrow (pop exnref)) + ) ) ) (catch - (drop (exnref.pop)) + (drop (pop exnref)) (local.set $x (i32.const 1)) ) ) (local.set $x (i32.const 1)) ;; should be dropped ) ) - diff -Nru binaryen-91/test/passes/safe-heap_disable-simd.txt binaryen-99/test/passes/safe-heap_disable-simd.txt --- binaryen-91/test/passes/safe-heap_disable-simd.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/safe-heap_disable-simd.txt 2021-01-07 20:01:06.000000000 +0000 @@ -13,7 +13,7 @@ (import "env" "segfault" (func $segfault)) (import "env" "alignfault" (func $alignfault)) (memory $0 1 1) - (func $SAFE_HEAP_LOAD_i32_1_1 (; 3 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -43,7 +43,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_1_U_1 (; 4 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_U_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -73,7 +73,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_1 (; 5 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -103,7 +103,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_2 (; 6 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -140,7 +140,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_U_1 (; 7 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_U_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -170,7 +170,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_U_2 (; 8 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_U_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -207,7 +207,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_1 (; 9 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -237,7 +237,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_2 (; 10 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -274,7 +274,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_4 (; 11 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_4 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -311,7 +311,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_1_1 (; 12 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -341,7 +341,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_1_U_1 (; 13 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -371,7 +371,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_1 (; 14 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -401,7 +401,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_2 (; 15 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -438,7 +438,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_U_1 (; 16 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -468,7 +468,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_U_2 (; 17 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_U_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -505,7 +505,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_1 (; 18 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -535,7 +535,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_2 (; 19 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -572,7 +572,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_4 (; 20 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -609,7 +609,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_1 (; 21 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -639,7 +639,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_2 (; 22 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -676,7 +676,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_4 (; 23 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -713,7 +713,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_1 (; 24 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -743,7 +743,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_2 (; 25 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -780,7 +780,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_4 (; 26 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -817,7 +817,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_8 (; 27 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_8 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -854,7 +854,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_1 (; 28 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_1 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -884,7 +884,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_2 (; 29 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_2 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -921,7 +921,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_4 (; 30 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_4 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -958,7 +958,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_1 (; 31 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_1 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -988,7 +988,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_2 (; 32 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_2 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -1025,7 +1025,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_4 (; 33 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_4 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -1062,7 +1062,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_8 (; 34 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_8 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -1099,7 +1099,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_1_1 (; 35 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_1_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -1130,7 +1130,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_1 (; 36 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -1161,7 +1161,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_2 (; 37 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_2 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -1199,7 +1199,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_1 (; 38 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -1230,7 +1230,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_2 (; 39 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_2 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -1268,7 +1268,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_4 (; 40 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_4 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -1306,7 +1306,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_1_1 (; 41 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_1_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -1337,7 +1337,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_1 (; 42 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -1368,7 +1368,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_2 (; 43 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -1406,7 +1406,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_1 (; 44 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -1437,7 +1437,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_2 (; 45 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -1475,7 +1475,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_4 (; 46 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_4 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -1513,7 +1513,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_1 (; 47 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -1544,7 +1544,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_2 (; 48 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -1582,7 +1582,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_4 (; 49 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_4 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -1620,7 +1620,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_8 (; 50 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_8 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -1658,7 +1658,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_1 (; 51 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_1 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -1689,7 +1689,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_2 (; 52 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_2 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -1727,7 +1727,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_4 (; 53 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_4 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -1765,7 +1765,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_1 (; 54 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_1 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -1796,7 +1796,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_2 (; 55 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_2 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -1834,7 +1834,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_4 (; 56 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_4 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -1872,7 +1872,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_8 (; 57 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_8 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -1921,1924 +1921,12 @@ (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $none_=>_none (func)) - (import "env" "DYNAMICTOP_PTR" (global $foo i32)) - (import "env" "segfault" (func $segfault)) - (import "env" "alignfault" (func $alignfault)) - (memory $0 1 1) - (func $SAFE_HEAP_LOAD_i32_1_1 (; 2 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 1) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (i32.load8_s - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i32_1_U_1 (; 3 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 1) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (i32.load8_u - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i32_2_1 (; 4 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 2) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (i32.load16_s align=1 - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i32_2_2 (; 5 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 2) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $2) - (i32.const 1) - ) - (call $alignfault) - ) - (i32.load16_s - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i32_2_U_1 (; 6 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 2) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (i32.load16_u align=1 - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i32_2_U_2 (; 7 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 2) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $2) - (i32.const 1) - ) - (call $alignfault) - ) - (i32.load16_u - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i32_4_1 (; 8 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 4) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (i32.load align=1 - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i32_4_2 (; 9 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 4) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $2) - (i32.const 1) - ) - (call $alignfault) - ) - (i32.load align=2 - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i32_4_4 (; 10 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 4) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $2) - (i32.const 3) - ) - (call $alignfault) - ) - (i32.load - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i64_1_1 (; 11 ;) (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 1) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (i64.load8_s - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i64_1_U_1 (; 12 ;) (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 1) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (i64.load8_u - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i64_2_1 (; 13 ;) (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 2) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (i64.load16_s align=1 - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i64_2_2 (; 14 ;) (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 2) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $2) - (i32.const 1) - ) - (call $alignfault) - ) - (i64.load16_s - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i64_2_U_1 (; 15 ;) (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 2) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (i64.load16_u align=1 - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i64_2_U_2 (; 16 ;) (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 2) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $2) - (i32.const 1) - ) - (call $alignfault) - ) - (i64.load16_u - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i64_4_1 (; 17 ;) (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 4) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (i64.load32_s align=1 - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i64_4_2 (; 18 ;) (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 4) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $2) - (i32.const 1) - ) - (call $alignfault) - ) - (i64.load32_s align=2 - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i64_4_4 (; 19 ;) (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 4) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $2) - (i32.const 3) - ) - (call $alignfault) - ) - (i64.load32_s - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i64_4_U_1 (; 20 ;) (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 4) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (i64.load32_u align=1 - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i64_4_U_2 (; 21 ;) (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 4) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $2) - (i32.const 1) - ) - (call $alignfault) - ) - (i64.load32_u align=2 - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i64_4_U_4 (; 22 ;) (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 4) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $2) - (i32.const 3) - ) - (call $alignfault) - ) - (i64.load32_u - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i64_8_1 (; 23 ;) (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 8) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (i64.load align=1 - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i64_8_2 (; 24 ;) (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 8) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $2) - (i32.const 1) - ) - (call $alignfault) - ) - (i64.load align=2 - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i64_8_4 (; 25 ;) (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 8) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $2) - (i32.const 3) - ) - (call $alignfault) - ) - (i64.load align=4 - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_i64_8_8 (; 26 ;) (param $0 i32) (param $1 i32) (result i64) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 8) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $2) - (i32.const 7) - ) - (call $alignfault) - ) - (i64.load - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_f32_4_1 (; 27 ;) (param $0 i32) (param $1 i32) (result f32) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 4) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (f32.load align=1 - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_f32_4_2 (; 28 ;) (param $0 i32) (param $1 i32) (result f32) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 4) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $2) - (i32.const 1) - ) - (call $alignfault) - ) - (f32.load align=2 - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_f32_4_4 (; 29 ;) (param $0 i32) (param $1 i32) (result f32) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 4) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $2) - (i32.const 3) - ) - (call $alignfault) - ) - (f32.load - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_f64_8_1 (; 30 ;) (param $0 i32) (param $1 i32) (result f64) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 8) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (f64.load align=1 - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_f64_8_2 (; 31 ;) (param $0 i32) (param $1 i32) (result f64) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 8) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $2) - (i32.const 1) - ) - (call $alignfault) - ) - (f64.load align=2 - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_f64_8_4 (; 32 ;) (param $0 i32) (param $1 i32) (result f64) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 8) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $2) - (i32.const 3) - ) - (call $alignfault) - ) - (f64.load align=4 - (local.get $2) - ) - ) - (func $SAFE_HEAP_LOAD_f64_8_8 (; 33 ;) (param $0 i32) (param $1 i32) (result f64) - (local $2 i32) - (local.set $2 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $2) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $2) - (i32.const 8) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $2) - (i32.const 7) - ) - (call $alignfault) - ) - (f64.load - (local.get $2) - ) - ) - (func $SAFE_HEAP_STORE_i32_1_1 (; 34 ;) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local.set $3 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $3) - (i32.const 1) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (i32.store8 - (local.get $3) - (local.get $2) - ) - ) - (func $SAFE_HEAP_STORE_i32_2_1 (; 35 ;) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local.set $3 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $3) - (i32.const 2) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (i32.store16 align=1 - (local.get $3) - (local.get $2) - ) - ) - (func $SAFE_HEAP_STORE_i32_2_2 (; 36 ;) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local.set $3 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $3) - (i32.const 2) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $3) - (i32.const 1) - ) - (call $alignfault) - ) - (i32.store16 - (local.get $3) - (local.get $2) - ) - ) - (func $SAFE_HEAP_STORE_i32_4_1 (; 37 ;) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local.set $3 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $3) - (i32.const 4) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (i32.store align=1 - (local.get $3) - (local.get $2) - ) - ) - (func $SAFE_HEAP_STORE_i32_4_2 (; 38 ;) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local.set $3 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $3) - (i32.const 4) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $3) - (i32.const 1) - ) - (call $alignfault) - ) - (i32.store align=2 - (local.get $3) - (local.get $2) - ) - ) - (func $SAFE_HEAP_STORE_i32_4_4 (; 39 ;) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local.set $3 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $3) - (i32.const 4) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $3) - (i32.const 3) - ) - (call $alignfault) - ) - (i32.store - (local.get $3) - (local.get $2) - ) - ) - (func $SAFE_HEAP_STORE_i64_1_1 (; 40 ;) (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local.set $3 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $3) - (i32.const 1) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (i64.store8 - (local.get $3) - (local.get $2) - ) - ) - (func $SAFE_HEAP_STORE_i64_2_1 (; 41 ;) (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local.set $3 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $3) - (i32.const 2) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (i64.store16 align=1 - (local.get $3) - (local.get $2) - ) - ) - (func $SAFE_HEAP_STORE_i64_2_2 (; 42 ;) (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local.set $3 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $3) - (i32.const 2) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $3) - (i32.const 1) - ) - (call $alignfault) - ) - (i64.store16 - (local.get $3) - (local.get $2) - ) - ) - (func $SAFE_HEAP_STORE_i64_4_1 (; 43 ;) (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local.set $3 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $3) - (i32.const 4) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (i64.store32 align=1 - (local.get $3) - (local.get $2) - ) - ) - (func $SAFE_HEAP_STORE_i64_4_2 (; 44 ;) (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local.set $3 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $3) - (i32.const 4) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $3) - (i32.const 1) - ) - (call $alignfault) - ) - (i64.store32 align=2 - (local.get $3) - (local.get $2) - ) - ) - (func $SAFE_HEAP_STORE_i64_4_4 (; 45 ;) (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local.set $3 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $3) - (i32.const 4) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $3) - (i32.const 3) - ) - (call $alignfault) - ) - (i64.store32 - (local.get $3) - (local.get $2) - ) - ) - (func $SAFE_HEAP_STORE_i64_8_1 (; 46 ;) (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local.set $3 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $3) - (i32.const 8) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (i64.store align=1 - (local.get $3) - (local.get $2) - ) - ) - (func $SAFE_HEAP_STORE_i64_8_2 (; 47 ;) (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local.set $3 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $3) - (i32.const 8) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $3) - (i32.const 1) - ) - (call $alignfault) - ) - (i64.store align=2 - (local.get $3) - (local.get $2) - ) - ) - (func $SAFE_HEAP_STORE_i64_8_4 (; 48 ;) (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local.set $3 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $3) - (i32.const 8) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $3) - (i32.const 3) - ) - (call $alignfault) - ) - (i64.store align=4 - (local.get $3) - (local.get $2) - ) - ) - (func $SAFE_HEAP_STORE_i64_8_8 (; 49 ;) (param $0 i32) (param $1 i32) (param $2 i64) - (local $3 i32) - (local.set $3 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $3) - (i32.const 8) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $3) - (i32.const 7) - ) - (call $alignfault) - ) - (i64.store - (local.get $3) - (local.get $2) - ) - ) - (func $SAFE_HEAP_STORE_f32_4_1 (; 50 ;) (param $0 i32) (param $1 i32) (param $2 f32) - (local $3 i32) - (local.set $3 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $3) - (i32.const 4) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (f32.store align=1 - (local.get $3) - (local.get $2) - ) - ) - (func $SAFE_HEAP_STORE_f32_4_2 (; 51 ;) (param $0 i32) (param $1 i32) (param $2 f32) - (local $3 i32) - (local.set $3 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $3) - (i32.const 4) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $3) - (i32.const 1) - ) - (call $alignfault) - ) - (f32.store align=2 - (local.get $3) - (local.get $2) - ) - ) - (func $SAFE_HEAP_STORE_f32_4_4 (; 52 ;) (param $0 i32) (param $1 i32) (param $2 f32) - (local $3 i32) - (local.set $3 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $3) - (i32.const 4) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $3) - (i32.const 3) - ) - (call $alignfault) - ) - (f32.store - (local.get $3) - (local.get $2) - ) - ) - (func $SAFE_HEAP_STORE_f64_8_1 (; 53 ;) (param $0 i32) (param $1 i32) (param $2 f64) - (local $3 i32) - (local.set $3 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $3) - (i32.const 8) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (f64.store align=1 - (local.get $3) - (local.get $2) - ) - ) - (func $SAFE_HEAP_STORE_f64_8_2 (; 54 ;) (param $0 i32) (param $1 i32) (param $2 f64) - (local $3 i32) - (local.set $3 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $3) - (i32.const 8) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $3) - (i32.const 1) - ) - (call $alignfault) - ) - (f64.store align=2 - (local.get $3) - (local.get $2) - ) - ) - (func $SAFE_HEAP_STORE_f64_8_4 (; 55 ;) (param $0 i32) (param $1 i32) (param $2 f64) - (local $3 i32) - (local.set $3 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $3) - (i32.const 8) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $3) - (i32.const 3) - ) - (call $alignfault) - ) - (f64.store align=4 - (local.get $3) - (local.get $2) - ) - ) - (func $SAFE_HEAP_STORE_f64_8_8 (; 56 ;) (param $0 i32) (param $1 i32) (param $2 f64) - (local $3 i32) - (local.set $3 - (i32.add - (local.get $0) - (local.get $1) - ) - ) - (if - (i32.or - (i32.eq - (local.get $3) - (i32.const 0) - ) - (i32.gt_u - (i32.add - (local.get $3) - (i32.const 8) - ) - (i32.load - (global.get $foo) - ) - ) - ) - (call $segfault) - ) - (if - (i32.and - (local.get $3) - (i32.const 7) - ) - (call $alignfault) - ) - (f64.store - (local.get $3) - (local.get $2) - ) - ) -) -(module - (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) - (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) - (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) - (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) (import "env" "emscripten_get_sbrk_ptr" (func $foo (result i32))) (import "env" "segfault" (func $segfault)) (import "env" "alignfault" (func $alignfault)) (memory $0 1 1) - (func $SAFE_HEAP_LOAD_i32_1_1 (; 3 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -3868,7 +1956,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_1_U_1 (; 4 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_U_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -3898,7 +1986,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_1 (; 5 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -3928,7 +2016,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_2 (; 6 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -3965,7 +2053,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_U_1 (; 7 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_U_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -3995,7 +2083,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_U_2 (; 8 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_U_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -4032,7 +2120,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_1 (; 9 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -4062,7 +2150,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_2 (; 10 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -4099,7 +2187,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_4 (; 11 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_4 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -4136,7 +2224,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_1_1 (; 12 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -4166,7 +2254,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_1_U_1 (; 13 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -4196,7 +2284,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_1 (; 14 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -4226,7 +2314,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_2 (; 15 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -4263,7 +2351,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_U_1 (; 16 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -4293,7 +2381,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_U_2 (; 17 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_U_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -4330,7 +2418,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_1 (; 18 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -4360,7 +2448,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_2 (; 19 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -4397,7 +2485,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_4 (; 20 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -4434,7 +2522,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_1 (; 21 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -4464,7 +2552,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_2 (; 22 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -4501,7 +2589,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_4 (; 23 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -4538,7 +2626,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_1 (; 24 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -4568,7 +2656,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_2 (; 25 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -4605,7 +2693,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_4 (; 26 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -4642,7 +2730,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_8 (; 27 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_8 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -4679,7 +2767,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_1 (; 28 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_1 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -4709,7 +2797,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_2 (; 29 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_2 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -4746,7 +2834,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_4 (; 30 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_4 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -4783,7 +2871,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_1 (; 31 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_1 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -4813,7 +2901,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_2 (; 32 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_2 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -4850,7 +2938,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_4 (; 33 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_4 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -4887,7 +2975,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_8 (; 34 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_8 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -4924,7 +3012,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_1_1 (; 35 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_1_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -4955,7 +3043,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_1 (; 36 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -4986,7 +3074,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_2 (; 37 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_2 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -5024,7 +3112,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_1 (; 38 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -5055,7 +3143,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_2 (; 39 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_2 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -5093,7 +3181,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_4 (; 40 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_4 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -5131,7 +3219,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_1_1 (; 41 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_1_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -5162,7 +3250,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_1 (; 42 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -5193,7 +3281,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_2 (; 43 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -5231,7 +3319,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_1 (; 44 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -5262,7 +3350,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_2 (; 45 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -5300,7 +3388,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_4 (; 46 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_4 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -5338,7 +3426,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_1 (; 47 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -5369,7 +3457,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_2 (; 48 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -5407,7 +3495,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_4 (; 49 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_4 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -5445,7 +3533,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_8 (; 50 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_8 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -5483,7 +3571,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_1 (; 51 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_1 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -5514,7 +3602,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_2 (; 52 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_2 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -5552,7 +3640,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_4 (; 53 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_4 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -5590,7 +3678,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_1 (; 54 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_1 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -5621,7 +3709,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_2 (; 55 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_2 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -5659,7 +3747,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_4 (; 56 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_4 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -5697,7 +3785,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_8 (; 57 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_8 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -5750,11 +3838,16 @@ (import "env" "segfault" (func $segfault)) (import "env" "alignfault" (func $alignfault)) (memory $0 1 1) - (export "_emscripten_get_sbrk_ptr" (func $foo)) - (func $foo (; 2 ;) (result i32) + (export "emscripten_get_sbrk_ptr" (func $foo)) + (func $foo (result i32) + (drop + (i32.load + (i32.const 0) + ) + ) (i32.const 1234) ) - (func $SAFE_HEAP_LOAD_i32_1_1 (; 3 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5784,7 +3877,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_1_U_1 (; 4 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_U_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5814,7 +3907,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_1 (; 5 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5844,7 +3937,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_2 (; 6 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5881,7 +3974,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_U_1 (; 7 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_U_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5911,7 +4004,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_U_2 (; 8 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_U_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5948,7 +4041,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_1 (; 9 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5978,7 +4071,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_2 (; 10 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -6015,7 +4108,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_4 (; 11 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_4 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -6052,7 +4145,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_1_1 (; 12 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6082,7 +4175,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_1_U_1 (; 13 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6112,7 +4205,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_1 (; 14 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6142,7 +4235,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_2 (; 15 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6179,7 +4272,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_U_1 (; 16 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6209,7 +4302,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_U_2 (; 17 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_U_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6246,7 +4339,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_1 (; 18 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6276,7 +4369,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_2 (; 19 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6313,7 +4406,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_4 (; 20 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6350,7 +4443,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_1 (; 21 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6380,7 +4473,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_2 (; 22 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6417,7 +4510,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_4 (; 23 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6454,7 +4547,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_1 (; 24 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6484,7 +4577,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_2 (; 25 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6521,7 +4614,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_4 (; 26 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6558,7 +4651,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_8 (; 27 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_8 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6595,7 +4688,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_1 (; 28 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_1 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -6625,7 +4718,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_2 (; 29 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_2 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -6662,7 +4755,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_4 (; 30 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_4 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -6699,7 +4792,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_1 (; 31 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_1 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -6729,7 +4822,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_2 (; 32 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_2 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -6766,7 +4859,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_4 (; 33 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_4 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -6803,7 +4896,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_8 (; 34 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_8 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -6840,7 +4933,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_1_1 (; 35 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_1_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -6871,7 +4964,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_1 (; 36 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -6902,7 +4995,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_2 (; 37 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_2 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -6940,7 +5033,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_1 (; 38 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -6971,7 +5064,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_2 (; 39 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_2 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -7009,7 +5102,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_4 (; 40 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_4 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -7047,7 +5140,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_1_1 (; 41 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_1_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7078,7 +5171,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_1 (; 42 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7109,7 +5202,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_2 (; 43 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7147,7 +5240,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_1 (; 44 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7178,7 +5271,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_2 (; 45 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7216,7 +5309,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_4 (; 46 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_4 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7254,7 +5347,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_1 (; 47 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7285,7 +5378,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_2 (; 48 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7323,7 +5416,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_4 (; 49 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_4 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7361,7 +5454,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_8 (; 50 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_8 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7399,7 +5492,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_1 (; 51 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_1 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -7430,7 +5523,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_2 (; 52 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_2 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -7468,7 +5561,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_4 (; 53 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_4 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -7506,7 +5599,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_1 (; 54 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_1 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -7537,7 +5630,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_2 (; 55 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_2 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -7575,7 +5668,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_4 (; 56 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_4 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -7613,7 +5706,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_8 (; 57 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_8 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add diff -Nru binaryen-91/test/passes/safe-heap_disable-simd.wast binaryen-99/test/passes/safe-heap_disable-simd.wast --- binaryen-91/test/passes/safe-heap_disable-simd.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/safe-heap_disable-simd.wast 2021-01-07 20:01:06.000000000 +0000 @@ -3,16 +3,13 @@ ) (module (memory 1 1) - (import "env" "DYNAMICTOP_PTR" (global $foo i32)) -) -(module - (memory 1 1) (import "env" "emscripten_get_sbrk_ptr" (func $foo (result i32))) ) (module (memory 1 1) - (export "_emscripten_get_sbrk_ptr" (func $foo)) + (export "emscripten_get_sbrk_ptr" (func $foo)) (func $foo (result i32) + (drop (i32.load (i32.const 0))) ;; should not be modified! (i32.const 1234) ) ) diff -Nru binaryen-91/test/passes/safe-heap_enable-threads_enable-simd64.passes binaryen-99/test/passes/safe-heap_enable-threads_enable-simd64.passes --- binaryen-91/test/passes/safe-heap_enable-threads_enable-simd64.passes 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/safe-heap_enable-threads_enable-simd64.passes 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +safe-heap_enable-threads_enable-simd_enable-memory64 diff -Nru binaryen-91/test/passes/safe-heap_enable-threads_enable-simd64.txt binaryen-99/test/passes/safe-heap_enable-threads_enable-simd64.txt --- binaryen-91/test/passes/safe-heap_enable-threads_enable-simd64.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/safe-heap_enable-threads_enable-simd64.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,8706 @@ +(module + (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) + (type $i64_i64_i64_=>_none (func (param i64 i64 i64))) + (type $i64_i64_=>_i32 (func (param i64 i64) (result i32))) + (type $i64_i64_i32_=>_none (func (param i64 i64 i32))) + (type $i64_i64_v128_=>_none (func (param i64 i64 v128))) + (type $i64_i64_=>_v128 (func (param i64 i64) (result v128))) + (type $none_=>_none (func)) + (type $i64_i64_f64_=>_none (func (param i64 i64 f64))) + (type $i64_i64_=>_f64 (func (param i64 i64) (result f64))) + (type $i64_i64_f32_=>_none (func (param i64 i64 f32))) + (type $i64_i64_=>_f32 (func (param i64 i64) (result f32))) + (type $none_=>_i64 (func (result i64))) + (import "env" "emscripten_get_sbrk_ptr" (func $emscripten_get_sbrk_ptr (result i64))) + (import "env" "segfault" (func $segfault)) + (import "env" "alignfault" (func $alignfault)) + (memory $0 (shared i64 100 100)) + (func $loads + (drop + (call $SAFE_HEAP_LOAD_i32_4_4 + (i64.const 1) + (i64.const 0) + ) + ) + (drop + (call $SAFE_HEAP_LOAD_i32_4_A + (i64.const 1) + (i64.const 0) + ) + ) + (drop + (call $SAFE_HEAP_LOAD_i32_4_4 + (i64.const 2) + (i64.const 31) + ) + ) + (drop + (call $SAFE_HEAP_LOAD_i32_4_2 + (i64.const 3) + (i64.const 0) + ) + ) + (drop + (call $SAFE_HEAP_LOAD_i32_4_1 + (i64.const 4) + (i64.const 0) + ) + ) + (drop + (call $SAFE_HEAP_LOAD_i32_1_1 + (i64.const 5) + (i64.const 0) + ) + ) + (drop + (call $SAFE_HEAP_LOAD_i32_2_U_2 + (i64.const 6) + (i64.const 0) + ) + ) + (drop + (call $SAFE_HEAP_LOAD_i64_1_1 + (i64.const 7) + (i64.const 0) + ) + ) + (drop + (call $SAFE_HEAP_LOAD_i64_2_U_2 + (i64.const 8) + (i64.const 0) + ) + ) + (drop + (call $SAFE_HEAP_LOAD_i64_4_4 + (i64.const 9) + (i64.const 0) + ) + ) + (drop + (call $SAFE_HEAP_LOAD_i64_8_4 + (i64.const 10) + (i64.const 0) + ) + ) + (drop + (call $SAFE_HEAP_LOAD_i64_8_8 + (i64.const 11) + (i64.const 0) + ) + ) + (drop + (call $SAFE_HEAP_LOAD_f32_4_4 + (i64.const 12) + (i64.const 0) + ) + ) + (drop + (call $SAFE_HEAP_LOAD_f64_8_8 + (i64.const 13) + (i64.const 0) + ) + ) + (drop + (call $SAFE_HEAP_LOAD_v128_16_16 + (i64.const 14) + (i64.const 0) + ) + ) + ) + (func $stores + (call $SAFE_HEAP_STORE_i32_4_4 + (i64.const 1) + (i64.const 0) + (i32.const 100) + ) + (call $SAFE_HEAP_STORE_i32_4_A + (i64.const 1) + (i64.const 0) + (i32.const 100) + ) + (call $SAFE_HEAP_STORE_i32_4_4 + (i64.const 2) + (i64.const 31) + (i32.const 200) + ) + (call $SAFE_HEAP_STORE_i32_4_2 + (i64.const 3) + (i64.const 0) + (i32.const 300) + ) + (call $SAFE_HEAP_STORE_i32_4_1 + (i64.const 4) + (i64.const 0) + (i32.const 400) + ) + (call $SAFE_HEAP_STORE_i32_1_1 + (i64.const 5) + (i64.const 0) + (i32.const 500) + ) + (call $SAFE_HEAP_STORE_i32_2_2 + (i64.const 6) + (i64.const 0) + (i32.const 600) + ) + (call $SAFE_HEAP_STORE_i64_1_1 + (i64.const 7) + (i64.const 0) + (i64.const 700) + ) + (call $SAFE_HEAP_STORE_i64_2_2 + (i64.const 8) + (i64.const 0) + (i64.const 800) + ) + (call $SAFE_HEAP_STORE_i64_4_4 + (i64.const 9) + (i64.const 0) + (i64.const 900) + ) + (call $SAFE_HEAP_STORE_i64_8_4 + (i64.const 10) + (i64.const 0) + (i64.const 1000) + ) + (call $SAFE_HEAP_STORE_i64_8_8 + (i64.const 11) + (i64.const 0) + (i64.const 1100) + ) + (call $SAFE_HEAP_STORE_f32_4_4 + (i64.const 12) + (i64.const 0) + (f32.const 1200) + ) + (call $SAFE_HEAP_STORE_f64_8_8 + (i64.const 13) + (i64.const 0) + (f64.const 1300) + ) + (call $SAFE_HEAP_STORE_v128_16_16 + (i64.const 14) + (i64.const 0) + (v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004) + ) + ) + (func $SAFE_HEAP_LOAD_i32_1_A (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 1) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.shr_s + (i32.shl + (i32.atomic.load8_u + (local.get $2) + ) + (i32.const 24) + ) + (i32.const 24) + ) + ) + (func $SAFE_HEAP_LOAD_i32_1_1 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 1) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.load8_s + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_1_U_A (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 1) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.atomic.load8_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_1_U_1 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 1) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.load8_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_1 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.load16_s align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_A (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.shr_s + (i32.shl + (i32.atomic.load16_u + (local.get $2) + ) + (i32.const 16) + ) + (i32.const 16) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_2 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.load16_s + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_U_1 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.load16_u align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_U_A (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.atomic.load16_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_U_2 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.load16_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_4_1 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.load align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_4_2 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.load align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_4_A (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i32.atomic.load + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_4_4 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i32.load + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_1_A (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 1) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.shr_s + (i64.shl + (i64.atomic.load8_u + (local.get $2) + ) + (i64.const 56) + ) + (i64.const 56) + ) + ) + (func $SAFE_HEAP_LOAD_i64_1_1 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 1) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.load8_s + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_1_U_A (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 1) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.atomic.load8_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_1_U_1 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 1) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.load8_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_1 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.load16_s align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_A (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.shr_s + (i64.shl + (i64.atomic.load16_u + (local.get $2) + ) + (i64.const 48) + ) + (i64.const 48) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_2 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load16_s + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_U_1 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.load16_u align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_U_A (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.atomic.load16_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_U_2 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load16_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_1 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.load32_s align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_2 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load32_s align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_A (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.shr_s + (i64.shl + (i64.atomic.load32_u + (local.get $2) + ) + (i64.const 32) + ) + (i64.const 32) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_4 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.load32_s + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_U_1 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.load32_u align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_U_2 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load32_u align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_U_A (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.atomic.load32_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_U_4 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.load32_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_1 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.load align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_2 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_4 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.load align=4 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_A (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 7) + ) + (call $alignfault) + ) + (i64.atomic.load + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_8 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 7) + ) + (call $alignfault) + ) + (i64.load + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f32_4_1 (param $0 i64) (param $1 i64) (result f32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (f32.load align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f32_4_2 (param $0 i64) (param $1 i64) (result f32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (f32.load align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f32_4_4 (param $0 i64) (param $1 i64) (result f32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (f32.load + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f64_8_1 (param $0 i64) (param $1 i64) (result f64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (f64.load align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f64_8_2 (param $0 i64) (param $1 i64) (result f64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (f64.load align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f64_8_4 (param $0 i64) (param $1 i64) (result f64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (f64.load align=4 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f64_8_8 (param $0 i64) (param $1 i64) (result f64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 7) + ) + (call $alignfault) + ) + (f64.load + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_v128_16_1 (param $0 i64) (param $1 i64) (result v128) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 16) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (v128.load align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_v128_16_2 (param $0 i64) (param $1 i64) (result v128) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 16) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (v128.load align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_v128_16_4 (param $0 i64) (param $1 i64) (result v128) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 16) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (v128.load align=4 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_v128_16_8 (param $0 i64) (param $1 i64) (result v128) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 16) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 7) + ) + (call $alignfault) + ) + (v128.load align=8 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_v128_16_16 (param $0 i64) (param $1 i64) (result v128) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 16) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 15) + ) + (call $alignfault) + ) + (v128.load + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_1_A (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 1) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.atomic.store8 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_1_1 (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 1) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.store8 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_2_1 (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.store16 align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_2_A (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.atomic.store16 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_2_2 (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.store16 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_4_1 (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.store align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_4_2 (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.store align=2 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_4_A (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i32.atomic.store + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_4_4 (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i32.store + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_1_A (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 1) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.atomic.store8 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_1_1 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 1) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.store8 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_2_1 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.store16 align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_2_A (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.atomic.store16 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_2_2 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.store16 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_4_1 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.store32 align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_4_2 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.store32 align=2 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_4_A (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.atomic.store32 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_4_4 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.store32 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_8_1 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.store align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_8_2 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.store align=2 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_8_4 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.store align=4 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_8_A (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 7) + ) + (call $alignfault) + ) + (i64.atomic.store + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_8_8 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 7) + ) + (call $alignfault) + ) + (i64.store + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f32_4_1 (param $0 i64) (param $1 i64) (param $2 f32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (f32.store align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f32_4_2 (param $0 i64) (param $1 i64) (param $2 f32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (f32.store align=2 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f32_4_4 (param $0 i64) (param $1 i64) (param $2 f32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (f32.store + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f64_8_1 (param $0 i64) (param $1 i64) (param $2 f64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (f64.store align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f64_8_2 (param $0 i64) (param $1 i64) (param $2 f64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (f64.store align=2 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f64_8_4 (param $0 i64) (param $1 i64) (param $2 f64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (f64.store align=4 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f64_8_8 (param $0 i64) (param $1 i64) (param $2 f64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 7) + ) + (call $alignfault) + ) + (f64.store + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_v128_16_1 (param $0 i64) (param $1 i64) (param $2 v128) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 16) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (v128.store align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_v128_16_2 (param $0 i64) (param $1 i64) (param $2 v128) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 16) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (v128.store align=2 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_v128_16_4 (param $0 i64) (param $1 i64) (param $2 v128) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 16) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (v128.store align=4 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_v128_16_8 (param $0 i64) (param $1 i64) (param $2 v128) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 16) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 7) + ) + (call $alignfault) + ) + (v128.store align=8 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_v128_16_16 (param $0 i64) (param $1 i64) (param $2 v128) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 16) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 15) + ) + (call $alignfault) + ) + (v128.store + (local.get $3) + (local.get $2) + ) + ) +) +(module + (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) + (type $i64_i64_i64_=>_none (func (param i64 i64 i64))) + (type $i64_i64_=>_i32 (func (param i64 i64) (result i32))) + (type $i64_i64_i32_=>_none (func (param i64 i64 i32))) + (type $i64_i64_v128_=>_none (func (param i64 i64 v128))) + (type $i64_i64_=>_v128 (func (param i64 i64) (result v128))) + (type $i64_i64_f64_=>_none (func (param i64 i64 f64))) + (type $i64_i64_=>_f64 (func (param i64 i64) (result f64))) + (type $none_=>_none (func)) + (type $i64_i64_f32_=>_none (func (param i64 i64 f32))) + (type $i64_i64_=>_f32 (func (param i64 i64) (result f32))) + (type $none_=>_i64 (func (result i64))) + (import "env" "emscripten_get_sbrk_ptr" (func $emscripten_get_sbrk_ptr (result i64))) + (import "env" "segfault" (func $segfault)) + (import "env" "alignfault" (func $alignfault)) + (memory $0 i64 100 100) + (func $loads + (drop + (call $SAFE_HEAP_LOAD_i32_4_4 + (i64.const 1) + (i64.const 0) + ) + ) + ) + (func $SAFE_HEAP_LOAD_i32_1_1 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 1) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.load8_s + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_1_U_1 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 1) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.load8_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_1 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.load16_s align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_2 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.load16_s + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_U_1 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.load16_u align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_U_2 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.load16_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_4_1 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.load align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_4_2 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.load align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_4_4 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i32.load + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_1_1 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 1) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.load8_s + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_1_U_1 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 1) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.load8_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_1 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.load16_s align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_2 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load16_s + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_U_1 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.load16_u align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_U_2 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load16_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_1 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.load32_s align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_2 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load32_s align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_4 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.load32_s + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_U_1 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.load32_u align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_U_2 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load32_u align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_U_4 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.load32_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_1 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.load align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_2 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_4 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.load align=4 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_8 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 7) + ) + (call $alignfault) + ) + (i64.load + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f32_4_1 (param $0 i64) (param $1 i64) (result f32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (f32.load align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f32_4_2 (param $0 i64) (param $1 i64) (result f32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (f32.load align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f32_4_4 (param $0 i64) (param $1 i64) (result f32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (f32.load + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f64_8_1 (param $0 i64) (param $1 i64) (result f64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (f64.load align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f64_8_2 (param $0 i64) (param $1 i64) (result f64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (f64.load align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f64_8_4 (param $0 i64) (param $1 i64) (result f64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (f64.load align=4 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f64_8_8 (param $0 i64) (param $1 i64) (result f64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 7) + ) + (call $alignfault) + ) + (f64.load + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_v128_16_1 (param $0 i64) (param $1 i64) (result v128) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 16) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (v128.load align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_v128_16_2 (param $0 i64) (param $1 i64) (result v128) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 16) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (v128.load align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_v128_16_4 (param $0 i64) (param $1 i64) (result v128) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 16) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (v128.load align=4 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_v128_16_8 (param $0 i64) (param $1 i64) (result v128) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 16) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 7) + ) + (call $alignfault) + ) + (v128.load align=8 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_v128_16_16 (param $0 i64) (param $1 i64) (result v128) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 16) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 15) + ) + (call $alignfault) + ) + (v128.load + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_1_1 (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 1) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.store8 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_2_1 (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.store16 align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_2_2 (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.store16 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_4_1 (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.store align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_4_2 (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.store align=2 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_4_4 (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i32.store + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_1_1 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 1) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.store8 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_2_1 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.store16 align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_2_2 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 2) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.store16 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_4_1 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.store32 align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_4_2 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.store32 align=2 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_4_4 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.store32 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_8_1 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.store align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_8_2 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.store align=2 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_8_4 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.store align=4 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_8_8 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 7) + ) + (call $alignfault) + ) + (i64.store + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f32_4_1 (param $0 i64) (param $1 i64) (param $2 f32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (f32.store align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f32_4_2 (param $0 i64) (param $1 i64) (param $2 f32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (f32.store align=2 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f32_4_4 (param $0 i64) (param $1 i64) (param $2 f32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (f32.store + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f64_8_1 (param $0 i64) (param $1 i64) (param $2 f64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (f64.store align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f64_8_2 (param $0 i64) (param $1 i64) (param $2 f64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (f64.store align=2 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f64_8_4 (param $0 i64) (param $1 i64) (param $2 f64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (f64.store align=4 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f64_8_8 (param $0 i64) (param $1 i64) (param $2 f64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 7) + ) + (call $alignfault) + ) + (f64.store + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_v128_16_1 (param $0 i64) (param $1 i64) (param $2 v128) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 16) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (v128.store align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_v128_16_2 (param $0 i64) (param $1 i64) (param $2 v128) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 16) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (v128.store align=2 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_v128_16_4 (param $0 i64) (param $1 i64) (param $2 v128) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 16) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (v128.store align=4 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_v128_16_8 (param $0 i64) (param $1 i64) (param $2 v128) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 16) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 7) + ) + (call $alignfault) + ) + (v128.store align=8 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_v128_16_16 (param $0 i64) (param $1 i64) (param $2 v128) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 16) + ) + (i64.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 15) + ) + (call $alignfault) + ) + (v128.store + (local.get $3) + (local.get $2) + ) + ) +) +(module + (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) + (type $i64_i64_i64_=>_none (func (param i64 i64 i64))) + (type $i64_i64_=>_i32 (func (param i64 i64) (result i32))) + (type $i64_i64_i32_=>_none (func (param i64 i64 i32))) + (type $i64_i64_v128_=>_none (func (param i64 i64 v128))) + (type $i64_i64_=>_v128 (func (param i64 i64) (result v128))) + (type $i64_i64_f64_=>_none (func (param i64 i64 f64))) + (type $i64_i64_=>_f64 (func (param i64 i64) (result f64))) + (type $none_=>_none (func)) + (type $i64_i64_f32_=>_none (func (param i64 i64 f32))) + (type $i64_i64_=>_f32 (func (param i64 i64) (result f32))) + (type $none_=>_i64 (func (result i64))) + (import "env" "emscripten_get_sbrk_ptr" (func $foo (result i64))) + (import "env" "segfault" (func $segfault)) + (import "env" "alignfault" (func $alignfault)) + (memory $0 (shared i64 100 100)) + (func $actions + (drop + (call $SAFE_HEAP_LOAD_i32_4_4 + (i64.const 1) + (i64.const 0) + ) + ) + (call $SAFE_HEAP_STORE_i32_4_4 + (i64.const 1) + (i64.const 0) + (i32.const 100) + ) + ) + (func $SAFE_HEAP_LOAD_i32_1_A (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 1) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i32.shr_s + (i32.shl + (i32.atomic.load8_u + (local.get $2) + ) + (i32.const 24) + ) + (i32.const 24) + ) + ) + (func $SAFE_HEAP_LOAD_i32_1_1 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 1) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i32.load8_s + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_1_U_A (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 1) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i32.atomic.load8_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_1_U_1 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 1) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i32.load8_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_1 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i32.load16_s align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_A (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.shr_s + (i32.shl + (i32.atomic.load16_u + (local.get $2) + ) + (i32.const 16) + ) + (i32.const 16) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_2 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.load16_s + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_U_1 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i32.load16_u align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_U_A (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.atomic.load16_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_U_2 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.load16_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_4_1 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i32.load align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_4_2 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.load align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_4_A (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i32.atomic.load + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_4_4 (param $0 i64) (param $1 i64) (result i32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i32.load + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_1_A (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 1) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i64.shr_s + (i64.shl + (i64.atomic.load8_u + (local.get $2) + ) + (i64.const 56) + ) + (i64.const 56) + ) + ) + (func $SAFE_HEAP_LOAD_i64_1_1 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 1) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i64.load8_s + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_1_U_A (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 1) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i64.atomic.load8_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_1_U_1 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 1) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i64.load8_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_1 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i64.load16_s align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_A (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.shr_s + (i64.shl + (i64.atomic.load16_u + (local.get $2) + ) + (i64.const 48) + ) + (i64.const 48) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_2 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load16_s + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_U_1 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i64.load16_u align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_U_A (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.atomic.load16_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_U_2 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 2) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load16_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_1 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i64.load32_s align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_2 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load32_s align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_A (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.shr_s + (i64.shl + (i64.atomic.load32_u + (local.get $2) + ) + (i64.const 32) + ) + (i64.const 32) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_4 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.load32_s + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_U_1 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i64.load32_u align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_U_2 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load32_u align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_U_A (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.atomic.load32_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_U_4 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.load32_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_1 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i64.load align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_2 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_4 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.load align=4 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_A (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 7) + ) + (call $alignfault) + ) + (i64.atomic.load + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_8 (param $0 i64) (param $1 i64) (result i64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 7) + ) + (call $alignfault) + ) + (i64.load + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f32_4_1 (param $0 i64) (param $1 i64) (result f32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (f32.load align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f32_4_2 (param $0 i64) (param $1 i64) (result f32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (f32.load align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f32_4_4 (param $0 i64) (param $1 i64) (result f32) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (f32.load + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f64_8_1 (param $0 i64) (param $1 i64) (result f64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (f64.load align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f64_8_2 (param $0 i64) (param $1 i64) (result f64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (f64.load align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f64_8_4 (param $0 i64) (param $1 i64) (result f64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (f64.load align=4 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f64_8_8 (param $0 i64) (param $1 i64) (result f64) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 8) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 7) + ) + (call $alignfault) + ) + (f64.load + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_v128_16_1 (param $0 i64) (param $1 i64) (result v128) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 16) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (v128.load align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_v128_16_2 (param $0 i64) (param $1 i64) (result v128) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 16) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (v128.load align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_v128_16_4 (param $0 i64) (param $1 i64) (result v128) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 16) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (v128.load align=4 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_v128_16_8 (param $0 i64) (param $1 i64) (result v128) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 16) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 7) + ) + (call $alignfault) + ) + (v128.load align=8 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_v128_16_16 (param $0 i64) (param $1 i64) (result v128) + (local $2 i64) + (local.set $2 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $2) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $2) + (i64.const 16) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $2) + ) + (i32.const 15) + ) + (call $alignfault) + ) + (v128.load + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_1_A (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 1) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i32.atomic.store8 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_1_1 (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 1) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i32.store8 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_2_1 (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 2) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i32.store16 align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_2_A (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 2) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.atomic.store16 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_2_2 (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 2) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.store16 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_4_1 (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i32.store align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_4_2 (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.store align=2 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_4_A (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i32.atomic.store + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_4_4 (param $0 i64) (param $1 i64) (param $2 i32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i32.store + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_1_A (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 1) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i64.atomic.store8 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_1_1 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 1) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i64.store8 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_2_1 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 2) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i64.store16 align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_2_A (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 2) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.atomic.store16 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_2_2 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 2) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.store16 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_4_1 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i64.store32 align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_4_2 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.store32 align=2 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_4_A (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.atomic.store32 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_4_4 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.store32 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_8_1 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (i64.store align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_8_2 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.store align=2 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_8_4 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.store align=4 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_8_A (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 7) + ) + (call $alignfault) + ) + (i64.atomic.store + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_8_8 (param $0 i64) (param $1 i64) (param $2 i64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 7) + ) + (call $alignfault) + ) + (i64.store + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f32_4_1 (param $0 i64) (param $1 i64) (param $2 f32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (f32.store align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f32_4_2 (param $0 i64) (param $1 i64) (param $2 f32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (f32.store align=2 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f32_4_4 (param $0 i64) (param $1 i64) (param $2 f32) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 4) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (f32.store + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f64_8_1 (param $0 i64) (param $1 i64) (param $2 f64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (f64.store align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f64_8_2 (param $0 i64) (param $1 i64) (param $2 f64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (f64.store align=2 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f64_8_4 (param $0 i64) (param $1 i64) (param $2 f64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (f64.store align=4 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f64_8_8 (param $0 i64) (param $1 i64) (param $2 f64) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 8) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 7) + ) + (call $alignfault) + ) + (f64.store + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_v128_16_1 (param $0 i64) (param $1 i64) (param $2 v128) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 16) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (v128.store align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_v128_16_2 (param $0 i64) (param $1 i64) (param $2 v128) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 16) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 1) + ) + (call $alignfault) + ) + (v128.store align=2 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_v128_16_4 (param $0 i64) (param $1 i64) (param $2 v128) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 16) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 3) + ) + (call $alignfault) + ) + (v128.store align=4 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_v128_16_8 (param $0 i64) (param $1 i64) (param $2 v128) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 16) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 7) + ) + (call $alignfault) + ) + (v128.store align=8 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_v128_16_16 (param $0 i64) (param $1 i64) (param $2 v128) + (local $3 i64) + (local.set $3 + (i64.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i64.eq + (local.get $3) + (i64.const 0) + ) + (i64.gt_u + (i64.add + (local.get $3) + (i64.const 16) + ) + (i64.load + (call $foo) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (i32.wrap_i64 + (local.get $3) + ) + (i32.const 15) + ) + (call $alignfault) + ) + (v128.store + (local.get $3) + (local.get $2) + ) + ) +) diff -Nru binaryen-91/test/passes/safe-heap_enable-threads_enable-simd64.wast binaryen-99/test/passes/safe-heap_enable-threads_enable-simd64.wast --- binaryen-91/test/passes/safe-heap_enable-threads_enable-simd64.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/safe-heap_enable-threads_enable-simd64.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,56 @@ +(module + (memory (shared i64 100 100)) + (func $loads + (drop (i32.load (i64.const 1))) + (drop (i32.atomic.load (i64.const 1))) + (drop (i32.load offset=31 (i64.const 2))) + (drop (i32.load align=2 (i64.const 3))) + (drop (i32.load align=1 (i64.const 4))) + (drop (i32.load8_s (i64.const 5))) + (drop (i32.load16_u (i64.const 6))) + (drop (i64.load8_s (i64.const 7))) + (drop (i64.load16_u (i64.const 8))) + (drop (i64.load32_s (i64.const 9))) + (drop (i64.load align=4 (i64.const 10))) + (drop (i64.load (i64.const 11))) + (drop (f32.load (i64.const 12))) + (drop (f64.load (i64.const 13))) + (drop (v128.load (i64.const 14))) + ) + (func $stores + (i32.store (i64.const 1) (i32.const 100)) + (i32.atomic.store (i64.const 1) (i32.const 100)) + (i32.store offset=31 (i64.const 2) (i32.const 200)) + (i32.store align=2 (i64.const 3) (i32.const 300)) + (i32.store align=1 (i64.const 4) (i32.const 400)) + (i32.store8 (i64.const 5) (i32.const 500)) + (i32.store16 (i64.const 6) (i32.const 600)) + (i64.store8 (i64.const 7) (i64.const 700)) + (i64.store16 (i64.const 8) (i64.const 800)) + (i64.store32 (i64.const 9) (i64.const 900)) + (i64.store align=4 (i64.const 10) (i64.const 1000)) + (i64.store (i64.const 11) (i64.const 1100)) + (f32.store (i64.const 12) (f32.const 1200)) + (f64.store (i64.const 13) (f64.const 1300)) + (v128.store (i64.const 14) (v128.const i32x4 1 2 3 4)) + ) +) +;; not shared +(module + (memory i64 100 100) + (func $loads + (drop (i32.load (i64.const 1))) + ) +) +;; pre-existing +(module + (type $FUNCSIG$v (func)) + (import "env" "emscripten_get_sbrk_ptr" (func $foo (result i64))) + (import "env" "segfault" (func $segfault)) + (import "env" "alignfault" (func $alignfault)) + (memory $0 (shared i64 100 100)) + (func $actions + (drop (i32.load (i64.const 1))) + (i32.store (i64.const 1) (i32.const 100)) + ) +) diff -Nru binaryen-91/test/passes/safe-heap_enable-threads_enable-simd.txt binaryen-99/test/passes/safe-heap_enable-threads_enable-simd.txt --- binaryen-91/test/passes/safe-heap_enable-threads_enable-simd.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/safe-heap_enable-threads_enable-simd.txt 2021-01-07 20:01:06.000000000 +0000 @@ -15,7 +15,7 @@ (import "env" "segfault" (func $segfault)) (import "env" "alignfault" (func $alignfault)) (memory $0 (shared 100 100)) - (func $loads (; 3 ;) + (func $loads (drop (call $SAFE_HEAP_LOAD_i32_4_4 (i32.const 1) @@ -107,7 +107,7 @@ ) ) ) - (func $stores (; 4 ;) + (func $stores (call $SAFE_HEAP_STORE_i32_4_4 (i32.const 1) (i32.const 0) @@ -184,7 +184,7 @@ (v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004) ) ) - (func $SAFE_HEAP_LOAD_i32_1_A (; 5 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_A (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -220,7 +220,7 @@ (i32.const 24) ) ) - (func $SAFE_HEAP_LOAD_i32_1_1 (; 6 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -250,7 +250,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_1_U_A (; 7 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_U_A (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -280,7 +280,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_1_U_1 (; 8 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_U_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -310,7 +310,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_1 (; 9 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -340,7 +340,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_A (; 10 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_A (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -383,7 +383,7 @@ (i32.const 16) ) ) - (func $SAFE_HEAP_LOAD_i32_2_2 (; 11 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -420,7 +420,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_U_1 (; 12 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_U_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -450,7 +450,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_U_A (; 13 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_U_A (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -487,7 +487,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_U_2 (; 14 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_U_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -524,7 +524,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_1 (; 15 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -554,7 +554,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_2 (; 16 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -591,7 +591,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_A (; 17 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_A (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -628,7 +628,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_4 (; 18 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_4 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -665,7 +665,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_1_A (; 19 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -701,7 +701,7 @@ (i64.const 56) ) ) - (func $SAFE_HEAP_LOAD_i64_1_1 (; 20 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -731,7 +731,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_1_U_A (; 21 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_U_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -761,7 +761,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_1_U_1 (; 22 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -791,7 +791,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_1 (; 23 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -821,7 +821,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_A (; 24 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -864,7 +864,7 @@ (i64.const 48) ) ) - (func $SAFE_HEAP_LOAD_i64_2_2 (; 25 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -901,7 +901,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_U_1 (; 26 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -931,7 +931,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_U_A (; 27 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_U_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -968,7 +968,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_U_2 (; 28 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_U_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1005,7 +1005,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_1 (; 29 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1035,7 +1035,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_2 (; 30 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1072,7 +1072,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_A (; 31 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1115,7 +1115,7 @@ (i64.const 32) ) ) - (func $SAFE_HEAP_LOAD_i64_4_4 (; 32 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1152,7 +1152,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_1 (; 33 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1182,7 +1182,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_2 (; 34 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1219,7 +1219,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_A (; 35 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1256,7 +1256,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_4 (; 36 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1293,7 +1293,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_1 (; 37 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1323,7 +1323,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_2 (; 38 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1360,7 +1360,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_4 (; 39 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1397,7 +1397,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_A (; 40 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1434,7 +1434,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_8 (; 41 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_8 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1471,7 +1471,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_1 (; 42 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_1 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -1501,7 +1501,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_2 (; 43 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_2 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -1538,7 +1538,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_4 (; 44 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_4 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -1575,7 +1575,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_1 (; 45 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_1 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -1605,7 +1605,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_2 (; 46 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_2 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -1642,7 +1642,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_4 (; 47 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_4 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -1679,7 +1679,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_8 (; 48 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_8 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -1716,7 +1716,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_1 (; 49 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_1 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -1746,7 +1746,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_2 (; 50 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_2 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -1783,7 +1783,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_4 (; 51 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_4 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -1820,7 +1820,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_8 (; 52 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_8 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -1857,7 +1857,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_16 (; 53 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_16 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -1894,7 +1894,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_1_A (; 54 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_1_A (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -1925,7 +1925,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_1_1 (; 55 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_1_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -1956,7 +1956,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_1 (; 56 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -1987,7 +1987,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_A (; 57 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_A (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -2025,7 +2025,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_2 (; 58 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_2 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -2063,7 +2063,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_1 (; 59 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -2094,7 +2094,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_2 (; 60 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_2 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -2132,7 +2132,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_A (; 61 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_A (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -2170,7 +2170,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_4 (; 62 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_4 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -2208,7 +2208,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_1_A (; 63 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_1_A (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2239,7 +2239,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_1_1 (; 64 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_1_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2270,7 +2270,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_1 (; 65 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2301,7 +2301,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_A (; 66 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_A (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2339,7 +2339,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_2 (; 67 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2377,7 +2377,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_1 (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2408,7 +2408,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_2 (; 69 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2446,7 +2446,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_A (; 70 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_A (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2484,7 +2484,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_4 (; 71 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_4 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2522,7 +2522,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_1 (; 72 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2553,7 +2553,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_2 (; 73 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2591,7 +2591,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_4 (; 74 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_4 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2629,7 +2629,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_A (; 75 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_A (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2667,7 +2667,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_8 (; 76 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_8 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2705,7 +2705,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_1 (; 77 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_1 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -2736,7 +2736,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_2 (; 78 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_2 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -2774,7 +2774,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_4 (; 79 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_4 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -2812,7 +2812,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_1 (; 80 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_1 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -2843,7 +2843,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_2 (; 81 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_2 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -2881,7 +2881,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_4 (; 82 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_4 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -2919,7 +2919,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_8 (; 83 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_8 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -2957,7 +2957,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_1 (; 84 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_1 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -2988,7 +2988,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_2 (; 85 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_2 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -3026,7 +3026,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_4 (; 86 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_4 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -3064,7 +3064,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_8 (; 87 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_8 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -3102,7 +3102,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_16 (; 88 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_16 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -3158,7 +3158,7 @@ (import "env" "segfault" (func $segfault)) (import "env" "alignfault" (func $alignfault)) (memory $0 100 100) - (func $loads (; 3 ;) + (func $loads (drop (call $SAFE_HEAP_LOAD_i32_4_4 (i32.const 1) @@ -3166,7 +3166,7 @@ ) ) ) - (func $SAFE_HEAP_LOAD_i32_1_1 (; 4 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -3196,7 +3196,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_1_U_1 (; 5 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_U_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -3226,7 +3226,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_1 (; 6 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -3256,7 +3256,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_2 (; 7 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -3293,7 +3293,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_U_1 (; 8 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_U_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -3323,7 +3323,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_U_2 (; 9 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_U_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -3360,7 +3360,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_1 (; 10 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -3390,7 +3390,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_2 (; 11 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -3427,7 +3427,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_4 (; 12 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_4 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -3464,7 +3464,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_1_1 (; 13 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3494,7 +3494,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_1_U_1 (; 14 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3524,7 +3524,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_1 (; 15 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3554,7 +3554,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_2 (; 16 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3591,7 +3591,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_U_1 (; 17 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3621,7 +3621,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_U_2 (; 18 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_U_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3658,7 +3658,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_1 (; 19 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3688,7 +3688,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_2 (; 20 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3725,7 +3725,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_4 (; 21 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3762,7 +3762,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_1 (; 22 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3792,7 +3792,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_2 (; 23 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3829,7 +3829,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_4 (; 24 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3866,7 +3866,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_1 (; 25 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3896,7 +3896,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_2 (; 26 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3933,7 +3933,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_4 (; 27 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3970,7 +3970,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_8 (; 28 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_8 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -4007,7 +4007,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_1 (; 29 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_1 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -4037,7 +4037,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_2 (; 30 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_2 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -4074,7 +4074,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_4 (; 31 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_4 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -4111,7 +4111,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_1 (; 32 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_1 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -4141,7 +4141,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_2 (; 33 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_2 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -4178,7 +4178,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_4 (; 34 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_4 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -4215,7 +4215,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_8 (; 35 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_8 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -4252,7 +4252,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_1 (; 36 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_1 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -4282,7 +4282,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_2 (; 37 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_2 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -4319,7 +4319,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_4 (; 38 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_4 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -4356,7 +4356,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_8 (; 39 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_8 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -4393,7 +4393,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_16 (; 40 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_16 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -4430,7 +4430,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_1_1 (; 41 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_1_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -4461,7 +4461,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_1 (; 42 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -4492,7 +4492,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_2 (; 43 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_2 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -4530,7 +4530,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_1 (; 44 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -4561,7 +4561,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_2 (; 45 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_2 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -4599,7 +4599,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_4 (; 46 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_4 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -4637,7 +4637,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_1_1 (; 47 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_1_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -4668,7 +4668,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_1 (; 48 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -4699,7 +4699,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_2 (; 49 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -4737,7 +4737,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_1 (; 50 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -4768,7 +4768,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_2 (; 51 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -4806,7 +4806,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_4 (; 52 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_4 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -4844,7 +4844,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_1 (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -4875,7 +4875,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_2 (; 54 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -4913,7 +4913,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_4 (; 55 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_4 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -4951,7 +4951,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_8 (; 56 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_8 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -4989,7 +4989,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_1 (; 57 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_1 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -5020,7 +5020,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_2 (; 58 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_2 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -5058,7 +5058,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_4 (; 59 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_4 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -5096,7 +5096,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_1 (; 60 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_1 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -5127,7 +5127,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_2 (; 61 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_2 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -5165,7 +5165,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_4 (; 62 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_4 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -5203,7 +5203,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_8 (; 63 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_8 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -5241,7 +5241,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_1 (; 64 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_1 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -5272,7 +5272,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_2 (; 65 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_2 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -5310,7 +5310,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_4 (; 66 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_4 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -5348,7 +5348,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_8 (; 67 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_8 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -5386,7 +5386,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_16 (; 68 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_16 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -5437,11 +5437,12 @@ (type $none_=>_none (func)) (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (import "env" "DYNAMICTOP_PTR" (global $DYNAMICTOP_PTR i32)) + (type $none_=>_i32 (func (result i32))) (import "env" "segfault" (func $segfault)) (import "env" "alignfault" (func $alignfault)) + (import "env" "emscripten_get_sbrk_ptr" (func $emscripten_get_sbrk_ptr (result i32))) (memory $0 (shared 100 100)) - (func $actions (; 2 ;) + (func $actions (drop (call $SAFE_HEAP_LOAD_i32_4_4 (i32.const 1) @@ -5454,7 +5455,7 @@ (i32.const 100) ) ) - (func $SAFE_HEAP_LOAD_i32_1_A (; 3 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_A (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5474,7 +5475,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -5490,7 +5491,7 @@ (i32.const 24) ) ) - (func $SAFE_HEAP_LOAD_i32_1_1 (; 4 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5510,7 +5511,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -5520,7 +5521,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_1_U_A (; 5 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_U_A (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5540,7 +5541,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -5550,7 +5551,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_1_U_1 (; 6 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_U_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5570,7 +5571,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -5580,7 +5581,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_1 (; 7 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5600,7 +5601,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -5610,7 +5611,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_A (; 8 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_A (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5630,7 +5631,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -5653,7 +5654,7 @@ (i32.const 16) ) ) - (func $SAFE_HEAP_LOAD_i32_2_2 (; 9 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5673,7 +5674,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -5690,7 +5691,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_U_1 (; 10 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_U_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5710,7 +5711,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -5720,7 +5721,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_U_A (; 11 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_U_A (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5740,7 +5741,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -5757,7 +5758,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_U_2 (; 12 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_U_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5777,7 +5778,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -5794,7 +5795,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_1 (; 13 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5814,7 +5815,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -5824,7 +5825,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_2 (; 14 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5844,7 +5845,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -5861,7 +5862,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_A (; 15 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_A (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5881,7 +5882,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -5898,7 +5899,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_4 (; 16 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_4 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5918,7 +5919,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -5935,7 +5936,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_1_A (; 17 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -5955,7 +5956,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -5971,7 +5972,7 @@ (i64.const 56) ) ) - (func $SAFE_HEAP_LOAD_i64_1_1 (; 18 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -5991,7 +5992,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6001,7 +6002,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_1_U_A (; 19 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_U_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6021,7 +6022,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6031,7 +6032,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_1_U_1 (; 20 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6051,7 +6052,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6061,7 +6062,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_1 (; 21 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6081,7 +6082,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6091,7 +6092,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_A (; 22 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6111,7 +6112,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6134,7 +6135,7 @@ (i64.const 48) ) ) - (func $SAFE_HEAP_LOAD_i64_2_2 (; 23 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6154,7 +6155,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6171,7 +6172,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_U_1 (; 24 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6191,7 +6192,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6201,7 +6202,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_U_A (; 25 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_U_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6221,7 +6222,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6238,7 +6239,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_U_2 (; 26 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_U_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6258,7 +6259,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6275,7 +6276,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_1 (; 27 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6295,7 +6296,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6305,7 +6306,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_2 (; 28 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6325,7 +6326,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6342,7 +6343,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_A (; 29 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6362,7 +6363,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6385,7 +6386,7 @@ (i64.const 32) ) ) - (func $SAFE_HEAP_LOAD_i64_4_4 (; 30 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6405,7 +6406,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6422,7 +6423,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_1 (; 31 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6442,7 +6443,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6452,7 +6453,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_2 (; 32 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6472,7 +6473,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6489,7 +6490,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_A (; 33 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6509,7 +6510,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6526,7 +6527,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_4 (; 34 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6546,7 +6547,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6563,7 +6564,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_1 (; 35 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6583,7 +6584,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6593,7 +6594,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_2 (; 36 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6613,7 +6614,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6630,7 +6631,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_4 (; 37 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6650,7 +6651,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6667,7 +6668,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_A (; 38 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6687,7 +6688,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6704,7 +6705,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_8 (; 39 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_8 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6724,7 +6725,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6741,7 +6742,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_1 (; 40 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_1 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -6761,7 +6762,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6771,7 +6772,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_2 (; 41 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_2 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -6791,7 +6792,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6808,7 +6809,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_4 (; 42 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_4 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -6828,7 +6829,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6845,7 +6846,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_1 (; 43 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_1 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -6865,7 +6866,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6875,7 +6876,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_2 (; 44 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_2 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -6895,7 +6896,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6912,7 +6913,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_4 (; 45 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_4 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -6932,7 +6933,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6949,7 +6950,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_8 (; 46 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_8 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -6969,7 +6970,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -6986,7 +6987,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_1 (; 47 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_1 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -7006,7 +7007,7 @@ (i32.const 16) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7016,7 +7017,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_2 (; 48 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_2 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -7036,7 +7037,7 @@ (i32.const 16) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7053,7 +7054,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_4 (; 49 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_4 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -7073,7 +7074,7 @@ (i32.const 16) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7090,7 +7091,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_8 (; 50 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_8 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -7110,7 +7111,7 @@ (i32.const 16) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7127,7 +7128,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_16 (; 51 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_16 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -7147,7 +7148,7 @@ (i32.const 16) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7164,7 +7165,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_1_A (; 52 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_1_A (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -7184,7 +7185,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7195,7 +7196,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_1_1 (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_1_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -7215,7 +7216,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7226,7 +7227,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_1 (; 54 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -7246,7 +7247,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7257,7 +7258,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_A (; 55 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_A (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -7277,7 +7278,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7295,7 +7296,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_2 (; 56 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_2 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -7315,7 +7316,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7333,7 +7334,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_1 (; 57 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -7353,7 +7354,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7364,7 +7365,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_2 (; 58 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_2 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -7384,7 +7385,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7402,7 +7403,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_A (; 59 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_A (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -7422,7 +7423,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7440,7 +7441,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_4 (; 60 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_4 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -7460,7 +7461,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7478,7 +7479,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_1_A (; 61 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_1_A (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7498,7 +7499,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7509,7 +7510,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_1_1 (; 62 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_1_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7529,7 +7530,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7540,7 +7541,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_1 (; 63 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7560,7 +7561,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7571,7 +7572,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_A (; 64 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_A (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7591,7 +7592,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7609,7 +7610,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_2 (; 65 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7629,7 +7630,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7647,7 +7648,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_1 (; 66 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7667,7 +7668,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7678,7 +7679,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_2 (; 67 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7698,7 +7699,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7716,7 +7717,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_A (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_A (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7736,7 +7737,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7754,7 +7755,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_4 (; 69 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_4 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7774,7 +7775,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7792,7 +7793,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_1 (; 70 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7812,7 +7813,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7823,7 +7824,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_2 (; 71 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7843,7 +7844,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7861,7 +7862,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_4 (; 72 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_4 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7881,7 +7882,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7899,7 +7900,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_A (; 73 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_A (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7919,7 +7920,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7937,7 +7938,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_8 (; 74 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_8 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7957,7 +7958,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -7975,7 +7976,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_1 (; 75 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_1 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -7995,7 +7996,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -8006,7 +8007,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_2 (; 76 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_2 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -8026,7 +8027,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -8044,7 +8045,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_4 (; 77 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_4 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -8064,7 +8065,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -8082,7 +8083,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_1 (; 78 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_1 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -8102,7 +8103,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -8113,7 +8114,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_2 (; 79 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_2 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -8133,7 +8134,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -8151,7 +8152,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_4 (; 80 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_4 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -8171,7 +8172,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -8189,7 +8190,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_8 (; 81 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_8 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -8209,7 +8210,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -8227,7 +8228,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_1 (; 82 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_1 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -8247,7 +8248,7 @@ (i32.const 16) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -8258,7 +8259,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_2 (; 83 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_2 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -8278,7 +8279,7 @@ (i32.const 16) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -8296,7 +8297,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_4 (; 84 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_4 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -8316,7 +8317,7 @@ (i32.const 16) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -8334,7 +8335,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_8 (; 85 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_8 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -8354,7 +8355,7 @@ (i32.const 16) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) @@ -8372,7 +8373,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_16 (; 86 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_16 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -8392,7 +8393,7 @@ (i32.const 16) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $emscripten_get_sbrk_ptr) ) ) ) diff -Nru binaryen-91/test/passes/safe-heap_enable-threads_enable-simd.wast binaryen-99/test/passes/safe-heap_enable-threads_enable-simd.wast --- binaryen-91/test/passes/safe-heap_enable-threads_enable-simd.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/safe-heap_enable-threads_enable-simd.wast 2021-01-07 20:01:06.000000000 +0000 @@ -45,7 +45,6 @@ ;; pre-existing (module (type $FUNCSIG$v (func)) - (import "env" "DYNAMICTOP_PTR" (global $DYNAMICTOP_PTR i32)) (import "env" "segfault" (func $segfault)) (import "env" "alignfault" (func $alignfault)) (memory $0 (shared 100 100)) diff -Nru binaryen-91/test/passes/safe-heap_low-memory-unused_enable-threads_enable-simd.txt binaryen-99/test/passes/safe-heap_low-memory-unused_enable-threads_enable-simd.txt --- binaryen-91/test/passes/safe-heap_low-memory-unused_enable-threads_enable-simd.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/safe-heap_low-memory-unused_enable-threads_enable-simd.txt 2021-01-07 20:01:06.000000000 +0000 @@ -15,7 +15,7 @@ (import "env" "segfault" (func $segfault)) (import "env" "alignfault" (func $alignfault)) (memory $0 (shared 100 100)) - (func $loads (; 3 ;) + (func $loads (drop (call $SAFE_HEAP_LOAD_i32_4_4 (i32.const 1) @@ -107,7 +107,7 @@ ) ) ) - (func $stores (; 4 ;) + (func $stores (call $SAFE_HEAP_STORE_i32_4_4 (i32.const 1) (i32.const 0) @@ -184,7 +184,7 @@ (v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004) ) ) - (func $SAFE_HEAP_LOAD_i32_1_A (; 5 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_A (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -220,7 +220,7 @@ (i32.const 24) ) ) - (func $SAFE_HEAP_LOAD_i32_1_1 (; 6 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -250,7 +250,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_1_U_A (; 7 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_U_A (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -280,7 +280,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_1_U_1 (; 8 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_U_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -310,7 +310,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_1 (; 9 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -340,7 +340,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_A (; 10 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_A (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -383,7 +383,7 @@ (i32.const 16) ) ) - (func $SAFE_HEAP_LOAD_i32_2_2 (; 11 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -420,7 +420,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_U_1 (; 12 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_U_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -450,7 +450,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_U_A (; 13 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_U_A (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -487,7 +487,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_U_2 (; 14 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_U_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -524,7 +524,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_1 (; 15 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -554,7 +554,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_2 (; 16 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -591,7 +591,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_A (; 17 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_A (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -628,7 +628,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_4 (; 18 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_4 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -665,7 +665,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_1_A (; 19 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -701,7 +701,7 @@ (i64.const 56) ) ) - (func $SAFE_HEAP_LOAD_i64_1_1 (; 20 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -731,7 +731,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_1_U_A (; 21 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_U_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -761,7 +761,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_1_U_1 (; 22 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -791,7 +791,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_1 (; 23 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -821,7 +821,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_A (; 24 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -864,7 +864,7 @@ (i64.const 48) ) ) - (func $SAFE_HEAP_LOAD_i64_2_2 (; 25 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -901,7 +901,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_U_1 (; 26 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -931,7 +931,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_U_A (; 27 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_U_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -968,7 +968,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_U_2 (; 28 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_U_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1005,7 +1005,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_1 (; 29 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1035,7 +1035,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_2 (; 30 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1072,7 +1072,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_A (; 31 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1115,7 +1115,7 @@ (i64.const 32) ) ) - (func $SAFE_HEAP_LOAD_i64_4_4 (; 32 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1152,7 +1152,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_1 (; 33 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1182,7 +1182,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_2 (; 34 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1219,7 +1219,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_A (; 35 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1256,7 +1256,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_4 (; 36 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1293,7 +1293,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_1 (; 37 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1323,7 +1323,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_2 (; 38 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1360,7 +1360,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_4 (; 39 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1397,7 +1397,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_A (; 40 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1434,7 +1434,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_8 (; 41 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_8 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -1471,7 +1471,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_1 (; 42 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_1 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -1501,7 +1501,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_2 (; 43 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_2 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -1538,7 +1538,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_4 (; 44 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_4 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -1575,7 +1575,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_1 (; 45 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_1 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -1605,7 +1605,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_2 (; 46 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_2 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -1642,7 +1642,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_4 (; 47 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_4 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -1679,7 +1679,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_8 (; 48 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_8 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -1716,7 +1716,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_1 (; 49 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_1 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -1746,7 +1746,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_2 (; 50 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_2 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -1783,7 +1783,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_4 (; 51 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_4 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -1820,7 +1820,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_8 (; 52 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_8 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -1857,7 +1857,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_16 (; 53 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_16 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -1894,7 +1894,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_1_A (; 54 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_1_A (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -1925,7 +1925,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_1_1 (; 55 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_1_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -1956,7 +1956,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_1 (; 56 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -1987,7 +1987,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_A (; 57 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_A (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -2025,7 +2025,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_2 (; 58 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_2 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -2063,7 +2063,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_1 (; 59 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -2094,7 +2094,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_2 (; 60 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_2 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -2132,7 +2132,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_A (; 61 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_A (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -2170,7 +2170,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_4 (; 62 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_4 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -2208,7 +2208,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_1_A (; 63 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_1_A (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2239,7 +2239,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_1_1 (; 64 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_1_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2270,7 +2270,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_1 (; 65 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2301,7 +2301,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_A (; 66 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_A (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2339,7 +2339,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_2 (; 67 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2377,7 +2377,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_1 (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2408,7 +2408,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_2 (; 69 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2446,7 +2446,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_A (; 70 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_A (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2484,7 +2484,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_4 (; 71 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_4 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2522,7 +2522,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_1 (; 72 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2553,7 +2553,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_2 (; 73 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2591,7 +2591,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_4 (; 74 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_4 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2629,7 +2629,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_A (; 75 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_A (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2667,7 +2667,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_8 (; 76 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_8 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -2705,7 +2705,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_1 (; 77 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_1 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -2736,7 +2736,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_2 (; 78 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_2 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -2774,7 +2774,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_4 (; 79 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_4 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -2812,7 +2812,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_1 (; 80 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_1 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -2843,7 +2843,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_2 (; 81 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_2 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -2881,7 +2881,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_4 (; 82 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_4 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -2919,7 +2919,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_8 (; 83 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_8 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -2957,7 +2957,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_1 (; 84 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_1 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -2988,7 +2988,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_2 (; 85 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_2 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -3026,7 +3026,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_4 (; 86 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_4 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -3064,7 +3064,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_8 (; 87 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_8 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -3102,7 +3102,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_16 (; 88 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_16 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -3158,7 +3158,7 @@ (import "env" "segfault" (func $segfault)) (import "env" "alignfault" (func $alignfault)) (memory $0 100 100) - (func $loads (; 3 ;) + (func $loads (drop (call $SAFE_HEAP_LOAD_i32_4_4 (i32.const 1) @@ -3166,7 +3166,7 @@ ) ) ) - (func $SAFE_HEAP_LOAD_i32_1_1 (; 4 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -3196,7 +3196,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_1_U_1 (; 5 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_U_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -3226,7 +3226,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_1 (; 6 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -3256,7 +3256,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_2 (; 7 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -3293,7 +3293,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_U_1 (; 8 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_U_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -3323,7 +3323,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_U_2 (; 9 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_U_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -3360,7 +3360,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_1 (; 10 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -3390,7 +3390,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_2 (; 11 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -3427,7 +3427,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_4 (; 12 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_4 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -3464,7 +3464,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_1_1 (; 13 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3494,7 +3494,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_1_U_1 (; 14 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3524,7 +3524,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_1 (; 15 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3554,7 +3554,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_2 (; 16 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3591,7 +3591,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_U_1 (; 17 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3621,7 +3621,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_U_2 (; 18 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_U_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3658,7 +3658,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_1 (; 19 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3688,7 +3688,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_2 (; 20 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3725,7 +3725,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_4 (; 21 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3762,7 +3762,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_1 (; 22 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3792,7 +3792,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_2 (; 23 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3829,7 +3829,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_4 (; 24 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3866,7 +3866,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_1 (; 25 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3896,7 +3896,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_2 (; 26 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3933,7 +3933,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_4 (; 27 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -3970,7 +3970,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_8 (; 28 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_8 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -4007,7 +4007,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_1 (; 29 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_1 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -4037,7 +4037,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_2 (; 30 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_2 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -4074,7 +4074,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_4 (; 31 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_4 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -4111,7 +4111,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_1 (; 32 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_1 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -4141,7 +4141,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_2 (; 33 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_2 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -4178,7 +4178,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_4 (; 34 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_4 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -4215,7 +4215,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_8 (; 35 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_8 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -4252,7 +4252,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_1 (; 36 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_1 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -4282,7 +4282,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_2 (; 37 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_2 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -4319,7 +4319,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_4 (; 38 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_4 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -4356,7 +4356,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_8 (; 39 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_8 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -4393,7 +4393,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_16 (; 40 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_16 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -4430,7 +4430,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_1_1 (; 41 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_1_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -4461,7 +4461,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_1 (; 42 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -4492,7 +4492,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_2 (; 43 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_2 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -4530,7 +4530,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_1 (; 44 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -4561,7 +4561,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_2 (; 45 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_2 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -4599,7 +4599,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_4 (; 46 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_4 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -4637,7 +4637,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_1_1 (; 47 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_1_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -4668,7 +4668,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_1 (; 48 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -4699,7 +4699,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_2 (; 49 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -4737,7 +4737,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_1 (; 50 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -4768,7 +4768,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_2 (; 51 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -4806,7 +4806,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_4 (; 52 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_4 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -4844,7 +4844,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_1 (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -4875,7 +4875,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_2 (; 54 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -4913,7 +4913,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_4 (; 55 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_4 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -4951,7 +4951,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_8 (; 56 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_8 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -4989,7 +4989,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_1 (; 57 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_1 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -5020,7 +5020,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_2 (; 58 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_2 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -5058,7 +5058,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_4 (; 59 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_4 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -5096,7 +5096,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_1 (; 60 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_1 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -5127,7 +5127,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_2 (; 61 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_2 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -5165,7 +5165,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_4 (; 62 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_4 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -5203,7 +5203,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_8 (; 63 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_8 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -5241,7 +5241,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_1 (; 64 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_1 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -5272,7 +5272,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_2 (; 65 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_2 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -5310,7 +5310,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_4 (; 66 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_4 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -5348,7 +5348,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_8 (; 67 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_8 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -5386,7 +5386,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_16 (; 68 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_16 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -5437,11 +5437,12 @@ (type $none_=>_none (func)) (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) - (import "env" "DYNAMICTOP_PTR" (global $DYNAMICTOP_PTR i32)) + (type $none_=>_i32 (func (result i32))) + (import "env" "emscripten_get_sbrk_ptr" (func $foo (result i32))) (import "env" "segfault" (func $segfault)) (import "env" "alignfault" (func $alignfault)) (memory $0 (shared 100 100)) - (func $actions (; 2 ;) + (func $actions (drop (call $SAFE_HEAP_LOAD_i32_4_4 (i32.const 1) @@ -5454,7 +5455,7 @@ (i32.const 100) ) ) - (func $SAFE_HEAP_LOAD_i32_1_A (; 3 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_A (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5474,7 +5475,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -5490,7 +5491,7 @@ (i32.const 24) ) ) - (func $SAFE_HEAP_LOAD_i32_1_1 (; 4 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5510,7 +5511,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -5520,7 +5521,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_1_U_A (; 5 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_U_A (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5540,7 +5541,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -5550,7 +5551,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_1_U_1 (; 6 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_1_U_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5570,7 +5571,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -5580,7 +5581,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_1 (; 7 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5600,7 +5601,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -5610,7 +5611,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_A (; 8 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_A (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5630,7 +5631,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -5653,7 +5654,7 @@ (i32.const 16) ) ) - (func $SAFE_HEAP_LOAD_i32_2_2 (; 9 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5673,7 +5674,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -5690,7 +5691,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_U_1 (; 10 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_U_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5710,7 +5711,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -5720,7 +5721,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_U_A (; 11 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_U_A (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5740,7 +5741,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -5757,7 +5758,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_2_U_2 (; 12 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_2_U_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5777,7 +5778,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -5794,7 +5795,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_1 (; 13 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_1 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5814,7 +5815,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -5824,7 +5825,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_2 (; 14 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_2 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5844,7 +5845,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -5861,7 +5862,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_A (; 15 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_A (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5881,7 +5882,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -5898,7 +5899,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i32_4_4 (; 16 ;) (param $0 i32) (param $1 i32) (result i32) + (func $SAFE_HEAP_LOAD_i32_4_4 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local.set $2 (i32.add @@ -5918,7 +5919,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -5935,7 +5936,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_1_A (; 17 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -5955,7 +5956,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -5971,7 +5972,7 @@ (i64.const 56) ) ) - (func $SAFE_HEAP_LOAD_i64_1_1 (; 18 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -5991,7 +5992,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6001,7 +6002,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_1_U_A (; 19 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_U_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6021,7 +6022,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6031,7 +6032,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_1_U_1 (; 20 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_1_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6051,7 +6052,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6061,7 +6062,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_1 (; 21 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6081,7 +6082,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6091,7 +6092,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_A (; 22 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6111,7 +6112,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6134,7 +6135,7 @@ (i64.const 48) ) ) - (func $SAFE_HEAP_LOAD_i64_2_2 (; 23 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6154,7 +6155,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6171,7 +6172,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_U_1 (; 24 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6191,7 +6192,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6201,7 +6202,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_U_A (; 25 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_U_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6221,7 +6222,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6238,7 +6239,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_2_U_2 (; 26 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_2_U_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6258,7 +6259,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6275,7 +6276,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_1 (; 27 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6295,7 +6296,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6305,7 +6306,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_2 (; 28 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6325,7 +6326,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6342,7 +6343,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_A (; 29 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6362,7 +6363,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6385,7 +6386,7 @@ (i64.const 32) ) ) - (func $SAFE_HEAP_LOAD_i64_4_4 (; 30 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6405,7 +6406,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6422,7 +6423,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_1 (; 31 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6442,7 +6443,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6452,7 +6453,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_2 (; 32 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6472,7 +6473,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6489,7 +6490,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_A (; 33 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6509,7 +6510,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6526,7 +6527,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_4_U_4 (; 34 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_4_U_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6546,7 +6547,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6563,7 +6564,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_1 (; 35 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_1 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6583,7 +6584,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6593,7 +6594,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_2 (; 36 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_2 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6613,7 +6614,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6630,7 +6631,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_4 (; 37 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_4 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6650,7 +6651,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6667,7 +6668,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_A (; 38 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_A (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6687,7 +6688,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6704,7 +6705,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_i64_8_8 (; 39 ;) (param $0 i32) (param $1 i32) (result i64) + (func $SAFE_HEAP_LOAD_i64_8_8 (param $0 i32) (param $1 i32) (result i64) (local $2 i32) (local.set $2 (i32.add @@ -6724,7 +6725,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6741,7 +6742,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_1 (; 40 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_1 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -6761,7 +6762,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6771,7 +6772,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_2 (; 41 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_2 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -6791,7 +6792,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6808,7 +6809,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f32_4_4 (; 42 ;) (param $0 i32) (param $1 i32) (result f32) + (func $SAFE_HEAP_LOAD_f32_4_4 (param $0 i32) (param $1 i32) (result f32) (local $2 i32) (local.set $2 (i32.add @@ -6828,7 +6829,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6845,7 +6846,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_1 (; 43 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_1 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -6865,7 +6866,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6875,7 +6876,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_2 (; 44 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_2 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -6895,7 +6896,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6912,7 +6913,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_4 (; 45 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_4 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -6932,7 +6933,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6949,7 +6950,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_f64_8_8 (; 46 ;) (param $0 i32) (param $1 i32) (result f64) + (func $SAFE_HEAP_LOAD_f64_8_8 (param $0 i32) (param $1 i32) (result f64) (local $2 i32) (local.set $2 (i32.add @@ -6969,7 +6970,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -6986,7 +6987,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_1 (; 47 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_1 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -7006,7 +7007,7 @@ (i32.const 16) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7016,7 +7017,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_2 (; 48 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_2 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -7036,7 +7037,7 @@ (i32.const 16) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7053,7 +7054,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_4 (; 49 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_4 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -7073,7 +7074,7 @@ (i32.const 16) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7090,7 +7091,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_8 (; 50 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_8 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -7110,7 +7111,7 @@ (i32.const 16) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7127,7 +7128,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_LOAD_v128_16_16 (; 51 ;) (param $0 i32) (param $1 i32) (result v128) + (func $SAFE_HEAP_LOAD_v128_16_16 (param $0 i32) (param $1 i32) (result v128) (local $2 i32) (local.set $2 (i32.add @@ -7147,7 +7148,7 @@ (i32.const 16) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7164,7 +7165,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_1_A (; 52 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_1_A (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -7184,7 +7185,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7195,7 +7196,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_1_1 (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_1_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -7215,7 +7216,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7226,7 +7227,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_1 (; 54 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -7246,7 +7247,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7257,7 +7258,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_A (; 55 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_A (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -7277,7 +7278,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7295,7 +7296,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_2_2 (; 56 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_2_2 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -7315,7 +7316,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7333,7 +7334,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_1 (; 57 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_1 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -7353,7 +7354,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7364,7 +7365,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_2 (; 58 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_2 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -7384,7 +7385,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7402,7 +7403,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_A (; 59 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_A (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -7422,7 +7423,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7440,7 +7441,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i32_4_4 (; 60 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $SAFE_HEAP_STORE_i32_4_4 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (i32.add @@ -7460,7 +7461,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7478,7 +7479,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_1_A (; 61 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_1_A (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7498,7 +7499,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7509,7 +7510,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_1_1 (; 62 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_1_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7529,7 +7530,7 @@ (i32.const 1) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7540,7 +7541,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_1 (; 63 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7560,7 +7561,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7571,7 +7572,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_A (; 64 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_A (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7591,7 +7592,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7609,7 +7610,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_2_2 (; 65 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_2_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7629,7 +7630,7 @@ (i32.const 2) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7647,7 +7648,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_1 (; 66 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7667,7 +7668,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7678,7 +7679,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_2 (; 67 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7698,7 +7699,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7716,7 +7717,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_A (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_A (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7736,7 +7737,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7754,7 +7755,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_4_4 (; 69 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_4_4 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7774,7 +7775,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7792,7 +7793,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_1 (; 70 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_1 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7812,7 +7813,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7823,7 +7824,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_2 (; 71 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_2 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7843,7 +7844,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7861,7 +7862,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_4 (; 72 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_4 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7881,7 +7882,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7899,7 +7900,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_A (; 73 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_A (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7919,7 +7920,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7937,7 +7938,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_i64_8_8 (; 74 ;) (param $0 i32) (param $1 i32) (param $2 i64) + (func $SAFE_HEAP_STORE_i64_8_8 (param $0 i32) (param $1 i32) (param $2 i64) (local $3 i32) (local.set $3 (i32.add @@ -7957,7 +7958,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -7975,7 +7976,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_1 (; 75 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_1 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -7995,7 +7996,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -8006,7 +8007,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_2 (; 76 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_2 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -8026,7 +8027,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -8044,7 +8045,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f32_4_4 (; 77 ;) (param $0 i32) (param $1 i32) (param $2 f32) + (func $SAFE_HEAP_STORE_f32_4_4 (param $0 i32) (param $1 i32) (param $2 f32) (local $3 i32) (local.set $3 (i32.add @@ -8064,7 +8065,7 @@ (i32.const 4) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -8082,7 +8083,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_1 (; 78 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_1 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -8102,7 +8103,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -8113,7 +8114,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_2 (; 79 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_2 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -8133,7 +8134,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -8151,7 +8152,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_4 (; 80 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_4 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -8171,7 +8172,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -8189,7 +8190,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_f64_8_8 (; 81 ;) (param $0 i32) (param $1 i32) (param $2 f64) + (func $SAFE_HEAP_STORE_f64_8_8 (param $0 i32) (param $1 i32) (param $2 f64) (local $3 i32) (local.set $3 (i32.add @@ -8209,7 +8210,7 @@ (i32.const 8) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -8227,7 +8228,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_1 (; 82 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_1 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -8247,7 +8248,7 @@ (i32.const 16) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -8258,7 +8259,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_2 (; 83 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_2 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -8278,7 +8279,7 @@ (i32.const 16) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -8296,7 +8297,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_4 (; 84 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_4 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -8316,7 +8317,7 @@ (i32.const 16) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -8334,7 +8335,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_8 (; 85 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_8 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -8354,7 +8355,7 @@ (i32.const 16) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) @@ -8372,7 +8373,7 @@ (local.get $2) ) ) - (func $SAFE_HEAP_STORE_v128_16_16 (; 86 ;) (param $0 i32) (param $1 i32) (param $2 v128) + (func $SAFE_HEAP_STORE_v128_16_16 (param $0 i32) (param $1 i32) (param $2 v128) (local $3 i32) (local.set $3 (i32.add @@ -8392,7 +8393,7 @@ (i32.const 16) ) (i32.load - (global.get $DYNAMICTOP_PTR) + (call $foo) ) ) ) diff -Nru binaryen-91/test/passes/safe-heap_low-memory-unused_enable-threads_enable-simd.wast binaryen-99/test/passes/safe-heap_low-memory-unused_enable-threads_enable-simd.wast --- binaryen-91/test/passes/safe-heap_low-memory-unused_enable-threads_enable-simd.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/safe-heap_low-memory-unused_enable-threads_enable-simd.wast 2021-01-07 20:01:06.000000000 +0000 @@ -45,7 +45,7 @@ ;; pre-existing (module (type $FUNCSIG$v (func)) - (import "env" "DYNAMICTOP_PTR" (global $DYNAMICTOP_PTR i32)) + (import "env" "emscripten_get_sbrk_ptr" (func $foo (result i32))) (import "env" "segfault" (func $segfault)) (import "env" "alignfault" (func $alignfault)) (memory $0 (shared 100 100)) diff -Nru binaryen-91/test/passes/safe-heap_start-function.passes binaryen-99/test/passes/safe-heap_start-function.passes --- binaryen-91/test/passes/safe-heap_start-function.passes 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/safe-heap_start-function.passes 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +safe-heap diff -Nru binaryen-91/test/passes/safe-heap_start-function.txt binaryen-99/test/passes/safe-heap_start-function.txt --- binaryen-91/test/passes/safe-heap_start-function.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/safe-heap_start-function.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,1932 @@ +(module + (type $i32_i32_=>_i64 (func (param i32 i32) (result i64))) + (type $i32_i32_i64_=>_none (func (param i32 i32 i64))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $none_=>_none (func)) + (type $i32_i32_f64_=>_none (func (param i32 i32 f64))) + (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) + (type $i32_i32_f32_=>_none (func (param i32 i32 f32))) + (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) + (type $none_=>_i32 (func (result i32))) + (import "env" "emscripten_get_sbrk_ptr" (func $emscripten_get_sbrk_ptr (result i32))) + (import "env" "segfault" (func $segfault)) + (import "env" "alignfault" (func $alignfault)) + (memory $0 1 1) + (start $foo) + (func $foo + (i32.store + (i32.load + (i32.const 1234) + ) + (i32.const 5678) + ) + ) + (func $bar + (call $SAFE_HEAP_STORE_i32_4_4 + (call $SAFE_HEAP_LOAD_i32_4_4 + (i32.const 1234) + (i32.const 0) + ) + (i32.const 0) + (i32.const 5678) + ) + ) + (func $SAFE_HEAP_LOAD_i32_1_1 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 1) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.load8_s + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_1_U_1 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 1) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.load8_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_1 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 2) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.load16_s align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_2 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 2) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $2) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.load16_s + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_U_1 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 2) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.load16_u align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_2_U_2 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 2) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $2) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.load16_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_4_1 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 4) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.load align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_4_2 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 4) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $2) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.load align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i32_4_4 (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 4) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $2) + (i32.const 3) + ) + (call $alignfault) + ) + (i32.load + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_1_1 (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 1) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.load8_s + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_1_U_1 (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 1) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.load8_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_1 (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 2) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.load16_s align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_2 (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 2) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $2) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load16_s + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_U_1 (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 2) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.load16_u align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_2_U_2 (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 2) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $2) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load16_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_1 (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 4) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.load32_s align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_2 (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 4) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $2) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load32_s align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_4 (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 4) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $2) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.load32_s + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_U_1 (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 4) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.load32_u align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_U_2 (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 4) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $2) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load32_u align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_4_U_4 (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 4) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $2) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.load32_u + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_1 (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 8) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.load align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_2 (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 8) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $2) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.load align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_4 (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 8) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $2) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.load align=4 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_i64_8_8 (param $0 i32) (param $1 i32) (result i64) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 8) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $2) + (i32.const 7) + ) + (call $alignfault) + ) + (i64.load + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f32_4_1 (param $0 i32) (param $1 i32) (result f32) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 4) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (f32.load align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f32_4_2 (param $0 i32) (param $1 i32) (result f32) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 4) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $2) + (i32.const 1) + ) + (call $alignfault) + ) + (f32.load align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f32_4_4 (param $0 i32) (param $1 i32) (result f32) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 4) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $2) + (i32.const 3) + ) + (call $alignfault) + ) + (f32.load + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f64_8_1 (param $0 i32) (param $1 i32) (result f64) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 8) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (f64.load align=1 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f64_8_2 (param $0 i32) (param $1 i32) (result f64) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 8) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $2) + (i32.const 1) + ) + (call $alignfault) + ) + (f64.load align=2 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f64_8_4 (param $0 i32) (param $1 i32) (result f64) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 8) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $2) + (i32.const 3) + ) + (call $alignfault) + ) + (f64.load align=4 + (local.get $2) + ) + ) + (func $SAFE_HEAP_LOAD_f64_8_8 (param $0 i32) (param $1 i32) (result f64) + (local $2 i32) + (local.set $2 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $2) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $2) + (i32.const 8) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $2) + (i32.const 7) + ) + (call $alignfault) + ) + (f64.load + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_1_1 (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local.set $3 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $3) + (i32.const 1) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.store8 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_2_1 (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local.set $3 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $3) + (i32.const 2) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.store16 align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_2_2 (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local.set $3 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $3) + (i32.const 2) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $3) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.store16 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_4_1 (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local.set $3 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $3) + (i32.const 4) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i32.store align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_4_2 (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local.set $3 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $3) + (i32.const 4) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $3) + (i32.const 1) + ) + (call $alignfault) + ) + (i32.store align=2 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i32_4_4 (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local.set $3 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $3) + (i32.const 4) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $3) + (i32.const 3) + ) + (call $alignfault) + ) + (i32.store + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_1_1 (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local.set $3 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $3) + (i32.const 1) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.store8 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_2_1 (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local.set $3 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $3) + (i32.const 2) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.store16 align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_2_2 (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local.set $3 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $3) + (i32.const 2) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $3) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.store16 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_4_1 (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local.set $3 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $3) + (i32.const 4) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.store32 align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_4_2 (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local.set $3 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $3) + (i32.const 4) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $3) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.store32 align=2 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_4_4 (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local.set $3 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $3) + (i32.const 4) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $3) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.store32 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_8_1 (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local.set $3 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $3) + (i32.const 8) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (i64.store align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_8_2 (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local.set $3 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $3) + (i32.const 8) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $3) + (i32.const 1) + ) + (call $alignfault) + ) + (i64.store align=2 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_8_4 (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local.set $3 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $3) + (i32.const 8) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $3) + (i32.const 3) + ) + (call $alignfault) + ) + (i64.store align=4 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_i64_8_8 (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local.set $3 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $3) + (i32.const 8) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $3) + (i32.const 7) + ) + (call $alignfault) + ) + (i64.store + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f32_4_1 (param $0 i32) (param $1 i32) (param $2 f32) + (local $3 i32) + (local.set $3 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $3) + (i32.const 4) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (f32.store align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f32_4_2 (param $0 i32) (param $1 i32) (param $2 f32) + (local $3 i32) + (local.set $3 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $3) + (i32.const 4) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $3) + (i32.const 1) + ) + (call $alignfault) + ) + (f32.store align=2 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f32_4_4 (param $0 i32) (param $1 i32) (param $2 f32) + (local $3 i32) + (local.set $3 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $3) + (i32.const 4) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $3) + (i32.const 3) + ) + (call $alignfault) + ) + (f32.store + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f64_8_1 (param $0 i32) (param $1 i32) (param $2 f64) + (local $3 i32) + (local.set $3 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $3) + (i32.const 8) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (f64.store align=1 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f64_8_2 (param $0 i32) (param $1 i32) (param $2 f64) + (local $3 i32) + (local.set $3 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $3) + (i32.const 8) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $3) + (i32.const 1) + ) + (call $alignfault) + ) + (f64.store align=2 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f64_8_4 (param $0 i32) (param $1 i32) (param $2 f64) + (local $3 i32) + (local.set $3 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $3) + (i32.const 8) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $3) + (i32.const 3) + ) + (call $alignfault) + ) + (f64.store align=4 + (local.get $3) + (local.get $2) + ) + ) + (func $SAFE_HEAP_STORE_f64_8_8 (param $0 i32) (param $1 i32) (param $2 f64) + (local $3 i32) + (local.set $3 + (i32.add + (local.get $0) + (local.get $1) + ) + ) + (if + (i32.or + (i32.eq + (local.get $3) + (i32.const 0) + ) + (i32.gt_u + (i32.add + (local.get $3) + (i32.const 8) + ) + (i32.load + (call $emscripten_get_sbrk_ptr) + ) + ) + ) + (call $segfault) + ) + (if + (i32.and + (local.get $3) + (i32.const 7) + ) + (call $alignfault) + ) + (f64.store + (local.get $3) + (local.get $2) + ) + ) +) diff -Nru binaryen-91/test/passes/safe-heap_start-function.wast binaryen-99/test/passes/safe-heap_start-function.wast --- binaryen-91/test/passes/safe-heap_start-function.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/safe-heap_start-function.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,11 @@ +(module + (memory 1 1) + (func $foo + ;; should not be modified because its the start function + (i32.store (i32.load (i32.const 1234)) (i32.const 5678)) + ) + (func $bar + (i32.store (i32.load (i32.const 1234)) (i32.const 5678)) + ) + (start $foo) +) diff -Nru binaryen-91/test/passes/simplify-globals_all-features_fuzz-exec.txt binaryen-99/test/passes/simplify-globals_all-features_fuzz-exec.txt --- binaryen-91/test/passes/simplify-globals_all-features_fuzz-exec.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/simplify-globals_all-features_fuzz-exec.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,20 @@ +[fuzz-exec] calling export +[fuzz-exec] note result: export => funcref(0) +(module + (type $f32_ref?|i31|_i64_f64_funcref_=>_none (func (param f32 (ref null i31) i64 f64 funcref))) + (type $none_=>_funcref (func (result funcref))) + (global $global$0 (mut funcref) (ref.null func)) + (export "export" (func $1)) + (func $0 (param $0 f32) (param $1 (ref null i31)) (param $2 i64) (param $3 f64) (param $4 funcref) + (nop) + ) + (func $1 (result funcref) + (global.set $global$0 + (ref.func $0) + ) + (ref.func $0) + ) +) +[fuzz-exec] calling export +[fuzz-exec] note result: export => funcref(0) +[fuzz-exec] comparing export diff -Nru binaryen-91/test/passes/simplify-globals_all-features_fuzz-exec.wast binaryen-99/test/passes/simplify-globals_all-features_fuzz-exec.wast --- binaryen-91/test/passes/simplify-globals_all-features_fuzz-exec.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/simplify-globals_all-features_fuzz-exec.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,14 @@ +(module + (global $global$0 (mut funcref) (ref.null func)) + (func $0 (param $0 f32) (param $1 i31ref) (param $2 i64) (param $3 f64) (param $4 funcref) + (nop) + ) + (func "export" (result funcref) + ;; this set's value will be applied to the get right after it. we should carry + ;; over the specific typed function reference type properly while doing so. + (global.set $global$0 + (ref.func $0) + ) + (global.get $global$0) + ) +) diff -Nru binaryen-91/test/passes/simplify-globals_all-features.txt binaryen-99/test/passes/simplify-globals_all-features.txt --- binaryen-91/test/passes/simplify-globals_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/simplify-globals_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -2,7 +2,7 @@ (type $none_=>_none (func)) (import "env" "global-1" (global $g1 i32)) (global $g2 i32 (global.get $g1)) - (func $foo (; 0 ;) + (func $foo (drop (global.get $g1) ) @@ -17,7 +17,7 @@ (global $g2 i32 (global.get $g1)) (global $g3 i32 (global.get $g2)) (global $g4 i32 (global.get $g3)) - (func $foo (; 0 ;) + (func $foo (drop (global.get $g1) ) @@ -39,9 +39,9 @@ (module (type $none_=>_none (func)) (import "env" "global-1" (global $g1 i32)) - (global $g2 (mut i32) (global.get $g1)) - (func $foo (; 0 ;) - (global.set $g2 + (global $g2 i32 (global.get $g1)) + (func $foo + (drop (unreachable) ) ) @@ -65,7 +65,7 @@ (global $ga (mut i32) (i32.const 4)) (global $gb (mut i32) (i32.const 5)) (global $gc i32 (i32.const 5)) - (func $foo (; 0 ;) + (func $foo (drop (i32.const 1) ) @@ -114,7 +114,7 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (global $g1 (mut i32) (i32.const 1)) (global $g2 (mut i32) (i32.const 1)) - (func $f (; 0 ;) (param $x i32) (result i32) + (func $f (param $x i32) (result i32) (global.set $g1 (i32.const 100) ) @@ -158,7 +158,7 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (global $g1 (mut i32) (i32.const 1)) (global $g2 (mut i32) (i32.const 1)) - (func $f (; 0 ;) (param $x i32) (result i32) + (func $f (param $x i32) (result i32) (global.set $g1 (i32.const 100) ) @@ -180,8 +180,8 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (global $g1 (mut i32) (i32.const 1)) - (global $g2 (mut i32) (i32.const 1)) - (func $no (; 0 ;) (param $x i32) (result i32) + (global $g2 i32 (i32.const 1)) + (func $no (param $x i32) (result i32) (global.set $g1 (i32.const 100) ) @@ -192,7 +192,7 @@ ) (global.get $g1) ) - (func $no2 (; 1 ;) (param $x i32) (result i32) + (func $no2 (param $x i32) (result i32) (global.set $g1 (i32.const 100) ) @@ -201,11 +201,11 @@ ) (global.get $g1) ) - (func $yes (; 2 ;) (param $x i32) (result i32) + (func $yes (param $x i32) (result i32) (global.set $g1 (i32.const 100) ) - (global.set $g2 + (drop (local.get $x) ) (i32.const 100) @@ -213,10 +213,10 @@ ) (module (type $none_=>_none (func)) - (import "env" "global-1" (global $g1 anyref)) - (global $g2 anyref (global.get $g1)) - (global $g3 anyref (ref.null)) - (func $test1 (; 0 ;) + (import "env" "global-1" (global $g1 externref)) + (global $g2 externref (global.get $g1)) + (global $g3 externref (ref.null extern)) + (func $test1 (drop (global.get $g1) ) @@ -224,9 +224,18 @@ (global.get $g1) ) ) - (func $test2 (; 1 ;) + (func $test2 (drop - (ref.null) + (ref.null extern) + ) + ) +) +(module + (type $none_=>_none (func)) + (global $write-only i32 (i32.const 1)) + (func $foo + (drop + (i32.const 2) ) ) ) diff -Nru binaryen-91/test/passes/simplify-globals_all-features.wast binaryen-99/test/passes/simplify-globals_all-features.wast --- binaryen-91/test/passes/simplify-globals_all-features.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/simplify-globals_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -128,9 +128,9 @@ ) ;; Reference type tests (module - (import "env" "global-1" (global $g1 anyref)) - (global $g2 (mut anyref) (global.get $g1)) - (global $g3 anyref (ref.null)) + (import "env" "global-1" (global $g1 externref)) + (global $g2 (mut externref) (global.get $g1)) + (global $g3 externref (ref.null extern)) (func $test1 (drop (global.get $g1)) (drop (global.get $g2)) @@ -139,3 +139,10 @@ (drop (global.get $g3)) ) ) +;; Global is used by `set` but never `get` can be eliminated. +(module + (global $write-only (mut i32) (i32.const 1)) + (func $foo + (global.set $write-only (i32.const 2)) + ) +) diff -Nru binaryen-91/test/passes/simplify-globals-optimizing_enable-mutable-globals.txt binaryen-99/test/passes/simplify-globals-optimizing_enable-mutable-globals.txt --- binaryen-91/test/passes/simplify-globals-optimizing_enable-mutable-globals.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/simplify-globals-optimizing_enable-mutable-globals.txt 2021-01-07 20:01:06.000000000 +0000 @@ -2,7 +2,7 @@ (type $none_=>_none (func)) (import "env" "global-1" (global $g1 i32)) (global $g2 i32 (global.get $g1)) - (func $foo (; 0 ;) + (func $foo (drop (global.get $g1) ) @@ -17,7 +17,7 @@ (global $g2 i32 (global.get $g1)) (global $g3 i32 (global.get $g2)) (global $g4 i32 (global.get $g3)) - (func $foo (; 0 ;) + (func $foo (drop (global.get $g1) ) @@ -39,11 +39,9 @@ (module (type $none_=>_none (func)) (import "env" "global-1" (global $g1 i32)) - (global $g2 (mut i32) (global.get $g1)) - (func $foo (; 0 ;) - (global.set $g2 - (unreachable) - ) + (global $g2 i32 (global.get $g1)) + (func $foo + (unreachable) ) ) (module @@ -65,7 +63,7 @@ (global $ga (mut i32) (i32.const 4)) (global $gb (mut i32) (i32.const 5)) (global $gc i32 (i32.const 5)) - (func $foo (; 0 ;) + (func $foo (global.set $ga (i32.const 6) ) @@ -78,7 +76,7 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (global $g1 (mut i32) (i32.const 1)) (global $g2 (mut i32) (i32.const 1)) - (func $f (; 0 ;) (param $0 i32) (result i32) + (func $f (param $0 i32) (result i32) (global.set $g1 (i32.const 100) ) @@ -118,7 +116,7 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (global $g1 (mut i32) (i32.const 1)) (global $g2 (mut i32) (i32.const 1)) - (func $f (; 0 ;) (param $0 i32) (result i32) + (func $f (param $0 i32) (result i32) (global.set $g1 (i32.const 100) ) @@ -134,8 +132,8 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (global $g1 (mut i32) (i32.const 1)) - (global $g2 (mut i32) (i32.const 1)) - (func $no (; 0 ;) (param $x i32) (result i32) + (global $g2 i32 (i32.const 1)) + (func $no (param $x i32) (result i32) (global.set $g1 (i32.const 100) ) @@ -146,7 +144,7 @@ ) (global.get $g1) ) - (func $no2 (; 1 ;) (param $x i32) (result i32) + (func $no2 (param $x i32) (result i32) (global.set $g1 (i32.const 100) ) @@ -155,13 +153,21 @@ ) (global.get $g1) ) - (func $yes (; 2 ;) (param $0 i32) (result i32) + (func $yes (param $0 i32) (result i32) (global.set $g1 (i32.const 100) ) - (global.set $g2 - (local.get $0) - ) (i32.const 100) ) ) +(module + (type $none_=>_f64 (func (result f64))) + (global $global$0 i32 (i32.const 0)) + (global $global$1 i32 (i32.const 0)) + (export "func_9" (func $0)) + (func $0 (result f64) + (drop + (unreachable) + ) + ) +) diff -Nru binaryen-91/test/passes/simplify-globals-optimizing_enable-mutable-globals.wast binaryen-99/test/passes/simplify-globals-optimizing_enable-mutable-globals.wast --- binaryen-91/test/passes/simplify-globals-optimizing_enable-mutable-globals.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/simplify-globals-optimizing_enable-mutable-globals.wast 2021-01-07 20:01:06.000000000 +0000 @@ -126,3 +126,23 @@ (global.get $g1) ) ) +;; don't remove a value with a side effect +(module + (global $global$0 (mut i32) (i32.const 0)) + (global $global$1 (mut i32) (i32.const 0)) + (export "func_9" (func $0)) + (func $0 (result f64) + (global.set $global$0 + (block $label$1 (result i32) + (if + (i32.eqz + (global.get $global$1) + ) + (unreachable) + ) + (i32.const 2) + ) + ) + (f64.const 1) + ) +) diff -Nru binaryen-91/test/passes/simplify-locals_all-features_disable-exception-handling.txt binaryen-99/test/passes/simplify-locals_all-features_disable-exception-handling.txt --- binaryen-91/test/passes/simplify-locals_all-features_disable-exception-handling.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/simplify-locals_all-features_disable-exception-handling.txt 2021-01-07 20:01:06.000000000 +0000 @@ -6,9 +6,9 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i64_=>_none (func (param i64))) (type $f32_=>_none (func (param f32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_f64_f64_f32_i32_=>_f64 (func (param i32 f64 f64 f32 i32) (result f64))) @@ -20,7 +20,7 @@ (import "fuzzing-support" "log-f32" (func $fimport$0 (param f32))) (memory $0 256 256) (global $global$0 (mut i32) (i32.const 10)) - (func $contrast (; 6 ;) + (func $contrast (local $x i32) (local $y i32) (local $z i32) @@ -82,7 +82,7 @@ ) ) ) - (func $b0-yes (; 7 ;) (param $i1 i32) + (func $b0-yes (param $i1 i32) (local $x i32) (local $y i32) (local $a i32) @@ -400,7 +400,7 @@ ) ) ) - (func $Ia (; 8 ;) (param $a i32) (result i32) + (func $Ia (param $a i32) (result i32) (local $b i32) (block $switch$0 (block $switch-default$6 @@ -411,7 +411,7 @@ (i32.const 60) ) ) - (func $memories (; 9 ;) (param $i2 i32) (param $i3 i32) (param $bi2 i32) (param $bi3 i32) (param $ci3 i32) (param $di3 i32) + (func $memories (param $i2 i32) (param $i3 i32) (param $bi2 i32) (param $bi3 i32) (param $ci3 i32) (param $di3 i32) (local $set_with_no_get i32) (nop) (i32.store8 @@ -441,7 +441,7 @@ ) (nop) ) - (func $___remdi3 (; 10 ;) (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) + (func $___remdi3 (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) (local $$1$1 i32) (local $$1$0 i32) (local $$rem i32) @@ -634,7 +634,7 @@ ) ) ) - (func $block-returns (; 11 ;) + (func $block-returns (local $x i32) (local.set $x (block $out (result i32) @@ -708,7 +708,7 @@ ) ) ) - (func $multiple (; 12 ;) (param $s i32) (param $r i32) (param $f i32) (param $p i32) (param $t i32) (param $m i32) + (func $multiple (param $s i32) (param $r i32) (param $f i32) (param $p i32) (param $t i32) (param $m i32) (nop) (local.set $r (i32.add @@ -735,7 +735,7 @@ (local.get $t) ) ) - (func $switch-def (; 13 ;) (param $i3 i32) (result i32) + (func $switch-def (param $i3 i32) (result i32) (local $i1 i32) (local.set $i1 (i32.const 10) @@ -754,7 +754,7 @@ (local.get $i1) ) ) - (func $no-out-of-label (; 14 ;) (param $x i32) (param $y i32) + (func $no-out-of-label (param $x i32) (param $y i32) (nop) (local.set $x (loop $moar (result i32) @@ -781,7 +781,7 @@ (local.get $y) ) ) - (func $freetype-cd (; 15 ;) (param $a i32) (result i32) + (func $freetype-cd (param $a i32) (result i32) (local $e i32) (nop) (local.tee $a @@ -809,7 +809,7 @@ ) ) ) - (func $drop-if-value (; 16 ;) (param $x i32) (param $y i32) (param $z i32) (result i32) + (func $drop-if-value (param $x i32) (param $y i32) (param $z i32) (result i32) (local $temp i32) (drop (if (result i32) @@ -837,7 +837,7 @@ (i32.const 0) ) ) - (func $drop-br_if (; 17 ;) (param $label i32) (param $$cond2 i32) (param $$$0151 i32) (result i32) + (func $drop-br_if (param $label i32) (param $$cond2 i32) (param $$$0151 i32) (result i32) (nop) (local.tee $label (block $label$break$L4 (result i32) @@ -869,7 +869,7 @@ ) ) ) - (func $drop-tee-unreachable (; 18 ;) + (func $drop-tee-unreachable (local $x i32) (local.tee $x (unreachable) @@ -878,7 +878,7 @@ (local.get $x) ) ) - (func $if-return-but-unreachable (; 19 ;) (param $var$0 i64) + (func $if-return-but-unreachable (param $var$0 i64) (if (unreachable) (drop @@ -889,7 +889,7 @@ ) ) ) - (func $if-one-side (; 20 ;) (result i32) + (func $if-one-side (result i32) (local $x i32) (nop) (local.tee $x @@ -903,7 +903,7 @@ ) ) ) - (func $if-one-side-undo (; 21 ;) (result i32) + (func $if-one-side-undo (result i32) (local $x i32) (local $y i32) (local.set $y @@ -921,7 +921,7 @@ ) (local.get $y) ) - (func $if-one-side-multi (; 22 ;) (param $0 i32) (result i32) + (func $if-one-side-multi (param $0 i32) (result i32) (nop) (local.tee $0 (if (result i32) @@ -950,7 +950,7 @@ ) ) ) - (func $if-one-side-undo-but-its-a-tee (; 23 ;) (param $0 i32) (result i32) + (func $if-one-side-undo-but-its-a-tee (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1029,7 +1029,7 @@ ) (i32.const 0) ) - (func $splittable-ifs-multicycle (; 24 ;) (param $20 i32) (result i32) + (func $splittable-ifs-multicycle (param $20 i32) (result i32) (nop) (local.tee $20 (if (result i32) @@ -1047,7 +1047,7 @@ ) ) ) - (func $update-getCounter (; 25 ;) (param $0 i32) (param $1 f64) (param $2 f64) (param $3 f32) (param $4 i32) (result f64) + (func $update-getCounter (param $0 i32) (param $1 f64) (param $2 f64) (param $3 f32) (param $4 i32) (result f64) (global.set $global$0 (i32.sub (global.get $global$0) @@ -1121,8 +1121,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $f32_=>_none (func (param f32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_f64 (func (result f64))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) @@ -1131,7 +1131,7 @@ (import "fuzzing-support" "log3" (func $fimport$2 (param f32))) (memory $0 (shared 256 256)) (global $global$0 (mut i32) (i32.const 10)) - (func $nonatomics (; 3 ;) (result i32) + (func $nonatomics (result i32) (local $x i32) (nop) (drop @@ -1143,7 +1143,7 @@ (i32.const 1024) ) ) - (func $nonatomic-growmem (; 4 ;) (result i32) + (func $nonatomic-growmem (result i32) (local $x i32) (local.set $x (i32.load @@ -1159,7 +1159,7 @@ ) (local.get $x) ) - (func $atomics (; 5 ;) + (func $atomics (local $x i32) (local.set $x (i32.atomic.load @@ -1175,7 +1175,7 @@ (local.get $x) ) ) - (func $one-atomic (; 6 ;) + (func $one-atomic (local $x i32) (local.set $x (i32.load @@ -1191,7 +1191,7 @@ (local.get $x) ) ) - (func $other-atomic (; 7 ;) + (func $other-atomic (local $x i32) (local.set $x (i32.atomic.load @@ -1207,7 +1207,7 @@ (local.get $x) ) ) - (func $atomic-growmem (; 8 ;) (result i32) + (func $atomic-growmem (result i32) (local $x i32) (local.set $x (i32.load @@ -1223,7 +1223,7 @@ ) (local.get $x) ) - (func $atomicrmw (; 9 ;) + (func $atomicrmw (local $x i32) (local.set $x (i32.atomic.rmw.add @@ -1240,7 +1240,7 @@ (local.get $x) ) ) - (func $atomic-cmpxchg (; 10 ;) + (func $atomic-cmpxchg (local $x i32) (local.set $x (i32.atomic.rmw.cmpxchg @@ -1258,7 +1258,7 @@ (local.get $x) ) ) - (func $br-value-reordering (; 11 ;) (result i32) + (func $br-value-reordering (result i32) (local $temp i32) (block $outside (loop $loop @@ -1281,7 +1281,7 @@ ) (unreachable) ) - (func $br-value-reordering-safe (; 12 ;) (result i32) + (func $br-value-reordering-safe (result i32) (local $temp i32) (local.set $temp (block $outside (result i32) @@ -1307,7 +1307,7 @@ ) (unreachable) ) - (func $if-one-side-unreachable (; 13 ;) + (func $if-one-side-unreachable (local $x i32) (block $out (drop @@ -1343,7 +1343,7 @@ ) ) ) - (func $if-one-side-unreachable-blocks (; 14 ;) + (func $if-one-side-unreachable-blocks (local $x i32) (local $y i32) (block $out @@ -1402,7 +1402,7 @@ ) ) ) - (func $loop-value (; 15 ;) (param $x i32) (result i32) + (func $loop-value (param $x i32) (result i32) (loop $loopy (unreachable) ) @@ -1412,7 +1412,7 @@ (i32.const 1) ) ) - (func $loop-loop-loopy-value (; 16 ;) (param $x i32) (result i32) + (func $loop-loop-loopy-value (param $x i32) (result i32) (nop) (loop $loopy1 (result i32) (nop) @@ -1425,7 +1425,7 @@ ) ) ) - (func $loop-modified-during-main-pass-be-careful-fuzz (; 17 ;) (result i32) + (func $loop-modified-during-main-pass-be-careful-fuzz (result i32) (local $0 i32) (nop) (if (result i32) @@ -1442,11 +1442,11 @@ ) ) ) - (func $loop-later (; 18 ;) (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (param $var$3 i32) (param $var$4 i32) (result i32) + (func $loop-later (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (param $var$3 i32) (param $var$4 i32) (result i32) (nop) (i32.const 0) ) - (func $pick (; 19 ;) + (func $pick (local $x i32) (local $y i32) (local.set $x @@ -1469,7 +1469,7 @@ (local.get $y) ) ) - (func $pick-2 (; 20 ;) + (func $pick-2 (local $x i32) (local $y i32) (local.set $y @@ -1492,7 +1492,7 @@ (local.get $x) ) ) - (func $many (; 21 ;) + (func $many (local $x i32) (local $y i32) (local $z i32) @@ -1563,7 +1563,7 @@ (local.get $x) ) ) - (func $loop-copies (; 22 ;) (param $x i32) (param $y i32) + (func $loop-copies (param $x i32) (param $y i32) (loop $loop (nop) (drop @@ -1574,7 +1574,7 @@ ) ) ) - (func $proper-type (; 23 ;) (result f64) + (func $proper-type (result f64) (local $var$0 i32) (local $var$2 f64) (local.set $var$0 @@ -1586,7 +1586,7 @@ ) (local.get $var$2) ) - (func $multi-pass-get-equivs-right (; 24 ;) (param $var$0 i32) (param $var$1 i32) (result f64) + (func $multi-pass-get-equivs-right (param $var$0 i32) (param $var$1 i32) (result f64) (local $var$2 i32) (nop) (i32.store @@ -1599,7 +1599,7 @@ ) ) ) - (func $if-value-structure-equivalent (; 25 ;) (param $x i32) (result i32) + (func $if-value-structure-equivalent (param $x i32) (result i32) (local $y i32) (nop) (local.tee $x @@ -1619,7 +1619,7 @@ ) ) ) - (func $set-tee-need-one-of-them (; 26 ;) (param $var$0 i32) (param $var$1 i32) (result i32) + (func $set-tee-need-one-of-them (param $var$0 i32) (param $var$1 i32) (result i32) (local $var$2 i32) (local $var$3 i32) (local.set $var$2 @@ -1632,7 +1632,7 @@ ) (local.get $var$2) ) - (func $loop-value-harder (; 27 ;) (result i32) + (func $loop-value-harder (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -1687,7 +1687,7 @@ (i32.const -5417091) ) ) - (func $tee-chain (; 28 ;) (param $x i32) (param $z i32) (param $t1 i32) (param $t2 i32) (param $t3 i32) (result i32) + (func $tee-chain (param $x i32) (param $z i32) (param $t1 i32) (param $t2 i32) (param $t3 i32) (result i32) (nop) (drop (i32.const 10) @@ -1721,7 +1721,7 @@ (type $none_=>_none (func)) (memory $0 256 256) (data passive "hello, there!") - (func $memory-init-load (; 0 ;) + (func $memory-init-load (local $x i32) (local.set $x (i32.load @@ -1737,7 +1737,7 @@ (local.get $x) ) ) - (func $memory-init-store (; 1 ;) + (func $memory-init-store (local $x i32) (local.set $x (block $block (result i32) @@ -1757,7 +1757,7 @@ (local.get $x) ) ) - (func $memory-copy-load (; 2 ;) + (func $memory-copy-load (local $x i32) (local.set $x (i32.load @@ -1773,7 +1773,7 @@ (local.get $x) ) ) - (func $memory-copy-store (; 3 ;) + (func $memory-copy-store (local $x i32) (local.set $x (block $block (result i32) @@ -1793,7 +1793,7 @@ (local.get $x) ) ) - (func $memory-fill-load (; 4 ;) + (func $memory-fill-load (local $x i32) (local.set $x (i32.load @@ -1809,7 +1809,7 @@ (local.get $x) ) ) - (func $memory-fill-store (; 5 ;) + (func $memory-fill-store (local $x i32) (local.set $x (block $block (result i32) @@ -1829,17 +1829,19 @@ (local.get $x) ) ) - (func $data-drop-load (; 6 ;) + (func $data-drop-load (local $x i32) - (nop) - (data.drop 0) - (drop + (local.set $x (i32.load (i32.const 0) ) ) + (data.drop 0) + (drop + (local.get $x) + ) ) - (func $data-drop-store (; 7 ;) + (func $data-drop-store (local $x i32) (local.set $x (block $block (result i32) @@ -1855,7 +1857,7 @@ (local.get $x) ) ) - (func $data-drop-memory-init (; 8 ;) + (func $data-drop-memory-init (local $x i32) (local.set $x (block $block (result i32) @@ -1874,11 +1876,11 @@ ) ) (module - (type $none_=>_funcref (func (result funcref))) - (func $subtype-test (; 0 ;) (result funcref) - (local $0 nullref) - (local $1 funcref) - (local $2 funcref) + (type $none_=>_anyref (func (result anyref))) + (func $subtype-test (result anyref) + (local $0 funcref) + (local $1 anyref) + (local $2 anyref) (block $block (nop) ) diff -Nru binaryen-91/test/passes/simplify-locals_all-features_disable-exception-handling.wast binaryen-99/test/passes/simplify-locals_all-features_disable-exception-handling.wast --- binaryen-91/test/passes/simplify-locals_all-features_disable-exception-handling.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/simplify-locals_all-features_disable-exception-handling.wast 2021-01-07 20:01:06.000000000 +0000 @@ -1656,10 +1656,10 @@ ) ) (module - (func $subtype-test (result funcref) - (local $0 nullref) - (local $1 funcref) - (local $2 funcref) + (func $subtype-test (result anyref) + (local $0 funcref) + (local $1 anyref) + (local $2 anyref) (block (local.set $1 (local.get $0) diff -Nru binaryen-91/test/passes/simplify-locals_all-features.txt binaryen-99/test/passes/simplify-locals_all-features.txt --- binaryen-91/test/passes/simplify-locals_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/simplify-locals_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -6,9 +6,9 @@ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $i64_=>_none (func (param i64))) (type $f32_=>_none (func (param f32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_f64_f64_f32_i32_=>_f64 (func (param i32 f64 f64 f32 i32) (result f64))) @@ -20,7 +20,7 @@ (import "fuzzing-support" "log-f32" (func $fimport$0 (param f32))) (memory $0 256 256) (global $global$0 (mut i32) (i32.const 10)) - (func $contrast (; 6 ;) + (func $contrast (local $x i32) (local $y i32) (local $z i32) @@ -82,7 +82,7 @@ ) ) ) - (func $b0-yes (; 7 ;) (param $i1 i32) + (func $b0-yes (param $i1 i32) (local $x i32) (local $y i32) (local $a i32) @@ -406,7 +406,7 @@ ) ) ) - (func $Ia (; 8 ;) (param $a i32) (result i32) + (func $Ia (param $a i32) (result i32) (local $b i32) (block $switch$0 (block $switch-default$6 @@ -417,7 +417,7 @@ (i32.const 60) ) ) - (func $memories (; 9 ;) (param $i2 i32) (param $i3 i32) (param $bi2 i32) (param $bi3 i32) (param $ci3 i32) (param $di3 i32) + (func $memories (param $i2 i32) (param $i3 i32) (param $bi2 i32) (param $bi3 i32) (param $ci3 i32) (param $di3 i32) (local $set_with_no_get i32) (nop) (i32.store8 @@ -447,7 +447,7 @@ ) (nop) ) - (func $___remdi3 (; 10 ;) (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) + (func $___remdi3 (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) (local $$1$1 i32) (local $$1$0 i32) (local $$rem i32) @@ -640,7 +640,7 @@ ) ) ) - (func $block-returns (; 11 ;) + (func $block-returns (local $x i32) (local.set $x (block $out (result i32) @@ -714,7 +714,7 @@ ) ) ) - (func $multiple (; 12 ;) (param $s i32) (param $r i32) (param $f i32) (param $p i32) (param $t i32) (param $m i32) + (func $multiple (param $s i32) (param $r i32) (param $f i32) (param $p i32) (param $t i32) (param $m i32) (nop) (local.set $r (i32.add @@ -741,7 +741,7 @@ (local.get $t) ) ) - (func $switch-def (; 13 ;) (param $i3 i32) (result i32) + (func $switch-def (param $i3 i32) (result i32) (local $i1 i32) (local.set $i1 (i32.const 10) @@ -760,7 +760,7 @@ (local.get $i1) ) ) - (func $no-out-of-label (; 14 ;) (param $x i32) (param $y i32) + (func $no-out-of-label (param $x i32) (param $y i32) (nop) (local.set $x (loop $moar (result i32) @@ -787,7 +787,7 @@ (local.get $y) ) ) - (func $freetype-cd (; 15 ;) (param $a i32) (result i32) + (func $freetype-cd (param $a i32) (result i32) (local $e i32) (nop) (local.tee $a @@ -815,7 +815,7 @@ ) ) ) - (func $drop-if-value (; 16 ;) (param $x i32) (param $y i32) (param $z i32) (result i32) + (func $drop-if-value (param $x i32) (param $y i32) (param $z i32) (result i32) (local $temp i32) (drop (if (result i32) @@ -843,7 +843,7 @@ (i32.const 0) ) ) - (func $drop-br_if (; 17 ;) (param $label i32) (param $$cond2 i32) (param $$$0151 i32) (result i32) + (func $drop-br_if (param $label i32) (param $$cond2 i32) (param $$$0151 i32) (result i32) (nop) (local.tee $label (block $label$break$L4 (result i32) @@ -875,7 +875,7 @@ ) ) ) - (func $drop-tee-unreachable (; 18 ;) + (func $drop-tee-unreachable (local $x i32) (local.tee $x (unreachable) @@ -884,7 +884,7 @@ (local.get $x) ) ) - (func $if-return-but-unreachable (; 19 ;) (param $var$0 i64) + (func $if-return-but-unreachable (param $var$0 i64) (if (unreachable) (drop @@ -895,7 +895,7 @@ ) ) ) - (func $if-one-side (; 20 ;) (result i32) + (func $if-one-side (result i32) (local $x i32) (nop) (local.tee $x @@ -909,7 +909,7 @@ ) ) ) - (func $if-one-side-undo (; 21 ;) (result i32) + (func $if-one-side-undo (result i32) (local $x i32) (local $y i32) (local.set $y @@ -927,7 +927,7 @@ ) (local.get $y) ) - (func $if-one-side-multi (; 22 ;) (param $0 i32) (result i32) + (func $if-one-side-multi (param $0 i32) (result i32) (nop) (local.tee $0 (if (result i32) @@ -956,7 +956,7 @@ ) ) ) - (func $if-one-side-undo-but-its-a-tee (; 23 ;) (param $0 i32) (result i32) + (func $if-one-side-undo-but-its-a-tee (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -1035,7 +1035,7 @@ ) (i32.const 0) ) - (func $splittable-ifs-multicycle (; 24 ;) (param $20 i32) (result i32) + (func $splittable-ifs-multicycle (param $20 i32) (result i32) (nop) (local.tee $20 (if (result i32) @@ -1053,7 +1053,7 @@ ) ) ) - (func $update-getCounter (; 25 ;) (param $0 i32) (param $1 f64) (param $2 f64) (param $3 f32) (param $4 i32) (result f64) + (func $update-getCounter (param $0 i32) (param $1 f64) (param $2 f64) (param $3 f32) (param $4 i32) (result f64) (global.set $global$0 (i32.sub (global.get $global$0) @@ -1127,8 +1127,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_=>_none (func (param i32 i32))) (type $f32_=>_none (func (param f32))) + (type $i32_i32_=>_none (func (param i32 i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_f64 (func (result f64))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) @@ -1137,7 +1137,7 @@ (import "fuzzing-support" "log3" (func $fimport$2 (param f32))) (memory $0 (shared 256 256)) (global $global$0 (mut i32) (i32.const 10)) - (func $nonatomics (; 3 ;) (result i32) + (func $nonatomics (result i32) (local $x i32) (nop) (drop @@ -1149,7 +1149,7 @@ (i32.const 1024) ) ) - (func $nonatomic-growmem (; 4 ;) (result i32) + (func $nonatomic-growmem (result i32) (local $x i32) (local.set $x (i32.load @@ -1165,7 +1165,7 @@ ) (local.get $x) ) - (func $atomics (; 5 ;) + (func $atomics (local $x i32) (local.set $x (i32.atomic.load @@ -1181,7 +1181,7 @@ (local.get $x) ) ) - (func $one-atomic (; 6 ;) + (func $one-atomic (local $x i32) (local.set $x (i32.load @@ -1197,7 +1197,7 @@ (local.get $x) ) ) - (func $other-atomic (; 7 ;) + (func $other-atomic (local $x i32) (local.set $x (i32.atomic.load @@ -1213,7 +1213,7 @@ (local.get $x) ) ) - (func $atomic-growmem (; 8 ;) (result i32) + (func $atomic-growmem (result i32) (local $x i32) (local.set $x (i32.load @@ -1229,7 +1229,7 @@ ) (local.get $x) ) - (func $atomicrmw (; 9 ;) + (func $atomicrmw (local $x i32) (local.set $x (i32.atomic.rmw.add @@ -1246,7 +1246,7 @@ (local.get $x) ) ) - (func $atomic-cmpxchg (; 10 ;) + (func $atomic-cmpxchg (local $x i32) (local.set $x (i32.atomic.rmw.cmpxchg @@ -1264,7 +1264,7 @@ (local.get $x) ) ) - (func $br-value-reordering (; 11 ;) (result i32) + (func $br-value-reordering (result i32) (local $temp i32) (block $outside (loop $loop @@ -1287,7 +1287,7 @@ ) (unreachable) ) - (func $br-value-reordering-safe (; 12 ;) (result i32) + (func $br-value-reordering-safe (result i32) (local $temp i32) (local.set $temp (block $outside (result i32) @@ -1313,7 +1313,7 @@ ) (unreachable) ) - (func $if-one-side-unreachable (; 13 ;) + (func $if-one-side-unreachable (local $x i32) (block $out (drop @@ -1349,7 +1349,7 @@ ) ) ) - (func $if-one-side-unreachable-blocks (; 14 ;) + (func $if-one-side-unreachable-blocks (local $x i32) (local $y i32) (block $out @@ -1408,7 +1408,7 @@ ) ) ) - (func $loop-value (; 15 ;) (param $x i32) (result i32) + (func $loop-value (param $x i32) (result i32) (loop $loopy (unreachable) ) @@ -1418,7 +1418,7 @@ (i32.const 1) ) ) - (func $loop-loop-loopy-value (; 16 ;) (param $x i32) (result i32) + (func $loop-loop-loopy-value (param $x i32) (result i32) (nop) (loop $loopy1 (result i32) (nop) @@ -1431,7 +1431,7 @@ ) ) ) - (func $loop-modified-during-main-pass-be-careful-fuzz (; 17 ;) (result i32) + (func $loop-modified-during-main-pass-be-careful-fuzz (result i32) (local $0 i32) (nop) (if (result i32) @@ -1448,11 +1448,11 @@ ) ) ) - (func $loop-later (; 18 ;) (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (param $var$3 i32) (param $var$4 i32) (result i32) + (func $loop-later (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (param $var$3 i32) (param $var$4 i32) (result i32) (nop) (i32.const 0) ) - (func $pick (; 19 ;) + (func $pick (local $x i32) (local $y i32) (local.set $x @@ -1475,7 +1475,7 @@ (local.get $y) ) ) - (func $pick-2 (; 20 ;) + (func $pick-2 (local $x i32) (local $y i32) (local.set $y @@ -1498,7 +1498,7 @@ (local.get $x) ) ) - (func $many (; 21 ;) + (func $many (local $x i32) (local $y i32) (local $z i32) @@ -1569,7 +1569,7 @@ (local.get $x) ) ) - (func $loop-copies (; 22 ;) (param $x i32) (param $y i32) + (func $loop-copies (param $x i32) (param $y i32) (loop $loop (nop) (drop @@ -1580,7 +1580,7 @@ ) ) ) - (func $proper-type (; 23 ;) (result f64) + (func $proper-type (result f64) (local $var$0 i32) (local $var$2 f64) (local.set $var$0 @@ -1592,7 +1592,7 @@ ) (local.get $var$2) ) - (func $multi-pass-get-equivs-right (; 24 ;) (param $var$0 i32) (param $var$1 i32) (result f64) + (func $multi-pass-get-equivs-right (param $var$0 i32) (param $var$1 i32) (result f64) (local $var$2 i32) (nop) (i32.store @@ -1605,7 +1605,7 @@ ) ) ) - (func $if-value-structure-equivalent (; 25 ;) (param $x i32) (result i32) + (func $if-value-structure-equivalent (param $x i32) (result i32) (local $y i32) (nop) (local.tee $x @@ -1625,7 +1625,7 @@ ) ) ) - (func $set-tee-need-one-of-them (; 26 ;) (param $var$0 i32) (param $var$1 i32) (result i32) + (func $set-tee-need-one-of-them (param $var$0 i32) (param $var$1 i32) (result i32) (local $var$2 i32) (local $var$3 i32) (local.set $var$2 @@ -1638,7 +1638,7 @@ ) (local.get $var$2) ) - (func $loop-value-harder (; 27 ;) (result i32) + (func $loop-value-harder (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -1693,7 +1693,7 @@ (i32.const -5417091) ) ) - (func $tee-chain (; 28 ;) (param $x i32) (param $z i32) (param $t1 i32) (param $t2 i32) (param $t3 i32) (result i32) + (func $tee-chain (param $x i32) (param $z i32) (param $t1 i32) (param $t2 i32) (param $t3 i32) (result i32) (nop) (drop (i32.const 10) @@ -1727,7 +1727,7 @@ (type $none_=>_none (func)) (memory $0 256 256) (data passive "hello, there!") - (func $memory-init-load (; 0 ;) + (func $memory-init-load (local $x i32) (local.set $x (i32.load @@ -1743,7 +1743,7 @@ (local.get $x) ) ) - (func $memory-init-store (; 1 ;) + (func $memory-init-store (local $x i32) (local.set $x (block $block (result i32) @@ -1763,7 +1763,7 @@ (local.get $x) ) ) - (func $memory-copy-load (; 2 ;) + (func $memory-copy-load (local $x i32) (local.set $x (i32.load @@ -1779,7 +1779,7 @@ (local.get $x) ) ) - (func $memory-copy-store (; 3 ;) + (func $memory-copy-store (local $x i32) (local.set $x (block $block (result i32) @@ -1799,7 +1799,7 @@ (local.get $x) ) ) - (func $memory-fill-load (; 4 ;) + (func $memory-fill-load (local $x i32) (local.set $x (i32.load @@ -1815,7 +1815,7 @@ (local.get $x) ) ) - (func $memory-fill-store (; 5 ;) + (func $memory-fill-store (local $x i32) (local.set $x (block $block (result i32) @@ -1835,17 +1835,19 @@ (local.get $x) ) ) - (func $data-drop-load (; 6 ;) + (func $data-drop-load (local $x i32) - (nop) - (data.drop 0) - (drop + (local.set $x (i32.load (i32.const 0) ) ) + (data.drop 0) + (drop + (local.get $x) + ) ) - (func $data-drop-store (; 7 ;) + (func $data-drop-store (local $x i32) (local.set $x (block $block (result i32) @@ -1861,7 +1863,7 @@ (local.get $x) ) ) - (func $data-drop-memory-init (; 8 ;) + (func $data-drop-memory-init (local $x i32) (local.set $x (block $block (result i32) @@ -1880,11 +1882,11 @@ ) ) (module - (type $none_=>_funcref (func (result funcref))) - (func $subtype-test (; 0 ;) (result funcref) - (local $0 nullref) - (local $1 funcref) - (local $2 funcref) + (type $none_=>_anyref (func (result anyref))) + (func $subtype-test (result anyref) + (local $0 externref) + (local $1 anyref) + (local $2 anyref) (block $block (nop) ) @@ -1892,3 +1894,167 @@ (local.get $0) ) ) +(module + (type $none_=>_none (func)) + (type $exnref_=>_none (func (param exnref))) + (type $i32_exnref_=>_none (func (param i32 exnref))) + (type $none_=>_i32 (func (result i32))) + (type $none_=>_exnref (func (result exnref))) + (event $event$0 (attr 0) (param)) + (event $event$1 (attr 0) (param exnref)) + (func $unoptimizable-br_on_exn-block (result exnref) + (local $0 exnref) + (block $label$0 + (local.set $0 + (br_on_exn $label$0 $event$0 + (ref.null exn) + ) + ) + ) + (local.get $0) + ) + (func $br_on_exn-trap + (local $0 exnref) + (drop + (block $label$1 (result exnref) + (br_on_exn $label$1 $event$1 + (ref.null exn) + ) + ) + ) + ) + (func $rethrow-trap + (local $0 i32) + (drop + (block $label$1 (result i32) + (try + (do + (rethrow + (ref.null exn) + ) + ) + (catch + (nop) + ) + ) + (i32.const 0) + ) + ) + ) + (func $foo (param $0 i32) (param $1 exnref) + (nop) + ) + (func $pop-cannot-be-sinked + (local $0 exnref) + (try + (do + (nop) + ) + (catch + (local.set $0 + (pop exnref) + ) + (call $foo + (i32.const 3) + (local.get $0) + ) + ) + ) + ) + (func $pop-within-catch-can-be-sinked + (local $0 exnref) + (try + (do + (nop) + ) + (catch + (nop) + (call $foo + (i32.const 3) + (try (result exnref) + (do + (ref.null exn) + ) + (catch + (pop exnref) + ) + ) + ) + ) + ) + ) + (func $bar (result i32) + (i32.const 3) + ) + (func $call-cannot-be-sinked-into-try + (local $0 i32) + (local.set $0 + (call $bar) + ) + (try + (do + (drop + (local.get $0) + ) + ) + (catch + (drop + (pop exnref) + ) + ) + ) + ) + (func $non-call-can-be-sinked-into-try + (local $0 i32) + (nop) + (try + (do + (drop + (i32.const 3) + ) + ) + (catch + (drop + (pop exnref) + ) + ) + ) + ) +) +(module + (type $none_=>_i32 (func (result i32))) + (memory $0 (shared 1 1)) + (data passive "data") + (export "foo" (func $0)) + (func $0 (result i32) + (local $0 i32) + (block $block (result i32) + (local.set $0 + (i32.rem_u + (i32.const 0) + (i32.const 0) + ) + ) + (data.drop 0) + (local.get $0) + ) + ) +) +(module + (type $eqref_ref?|i31|_=>_i32 (func (param eqref (ref null i31)) (result i32))) + (export "test" (func $0)) + (func $0 (param $0 eqref) (param $1 (ref null i31)) (result i32) + (local $2 eqref) + (local $3 (ref null i31)) + (local.set $2 + (local.get $0) + ) + (local.set $0 + (local.get $3) + ) + (ref.eq + (local.get $2) + (local.get $1) + ) + ) +) diff -Nru binaryen-91/test/passes/simplify-locals_all-features.wast binaryen-99/test/passes/simplify-locals_all-features.wast --- binaryen-91/test/passes/simplify-locals_all-features.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/simplify-locals_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -1656,10 +1656,10 @@ ) ) (module - (func $subtype-test (result funcref) - (local $0 nullref) - (local $1 funcref) - (local $2 funcref) + (func $subtype-test (result anyref) + (local $0 externref) + (local $1 anyref) + (local $2 anyref) (block (local.set $1 (local.get $0) @@ -1671,3 +1671,152 @@ (local.get $1) ) ) +(module + (event $event$0 (attr 0) (param)) + (func $unoptimizable-br_on_exn-block (result exnref) (local $0 exnref) + (block $label$0 + (local.set $0 + ;; br_on_exn's target block cannot be optimized to have a return value + (br_on_exn $label$0 $event$0 + (ref.null exn) + ) + ) + ) + (local.get $0) + ) + + (event $event$1 (attr 0) (param exnref)) + (func $br_on_exn-trap (local $0 exnref) + ;; This dead local.set cannot be replaced with a nop because br_on_exn can + ;; trap. + (local.set $0 + (block $label$1 (result exnref) + (br_on_exn $label$1 $event$1 + (ref.null exn) + ) + ) + ) + ) + + (func $rethrow-trap (local $0 i32) + ;; This dead local.set cannot be replaced with a nop because rethrow can + ;; trap. + (local.set $0 + (block $label$1 (result i32) + (try + (do (rethrow (ref.null exn))) + (catch) + ) + (i32.const 0) + ) + ) + ) + + (func $foo (param i32 exnref)) + (func $pop-cannot-be-sinked (local $0 exnref) + (try + (do) + (catch + ;; This (local.set $0) of (pop exnref) cannot be sinked to + ;; (local.get $0) below, because pop exnref should follow right after + ;; 'catch'. + (local.set $0 (pop exnref)) + (call $foo + (i32.const 3) + (local.get $0) + ) + ) + ) + ) + + (func $pop-within-catch-can-be-sinked (local $0 exnref) + (try + (do) + (catch + ;; This whole 'try' body can be sinked to eliminate local.set / + ;; local.get. Even though it contains a pop, it is enclosed within + ;; try-catch, so it is OK. + (local.set $0 + (try (result exnref) + (do (ref.null exn)) + (catch (pop exnref)) + ) + ) + (call $foo + (i32.const 3) + (local.get $0) + ) + ) + ) + ) + + (func $bar (result i32) (i32.const 3)) + (func $call-cannot-be-sinked-into-try (local $0 i32) + (drop + ;; This local.tee should NOT be sinked into 'try' below, because it may + ;; throw + (local.tee $0 (call $bar)) + ) + (try + (do + (drop (local.get $0)) + ) + (catch + (drop (pop exnref)) + ) + ) + ) + + (func $non-call-can-be-sinked-into-try (local $0 i32) + (drop + ;; This local.tee can be sinked into 'try' below, because it cannot throw + (local.tee $0 (i32.const 3)) + ) + (try + (do + (drop (local.get $0)) + ) + (catch + (drop (pop exnref)) + ) + ) + ) +) +;; data.drop has global side effects +(module + (memory $0 (shared 1 1)) + (data passive "data") + (func "foo" (result i32) + (local $0 i32) + (block (result i32) + (local.set $0 + (i32.rem_u ;; will trap, so cannot be reordered to the end + (i32.const 0) + (i32.const 0) + ) + ) + (data.drop 0) ;; has global side effects that may be noticed later + (local.get $0) + ) + ) +) +;; do not be confused by subtyping: when an index is set, even to another type, +;; it is no longer equivalent +;; (see https://github.com/WebAssembly/binaryen/issues/3266) +(module + (func "test" (param $0 eqref) (param $1 i31ref) (result i32) + (local $2 eqref) + (local $3 i31ref) + (local.set $2 + (local.get $0) ;; $0 and $2 are equivalent + ) + (local.set $0 ;; set $0 to something with another type + (local.get $3) + ) + ;; compares a null eqref and a zero i31ref - should be false + (ref.eq + (local.get $2) + (local.get $1) + ) + ) +) diff -Nru binaryen-91/test/passes/simplify-locals-nonesting.txt binaryen-99/test/passes/simplify-locals-nonesting.txt --- binaryen-91/test/passes/simplify-locals-nonesting.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/simplify-locals-nonesting.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $i64_i64_i64_=>_i32 (func (param i64 i64 i64) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (func $figure-1a (; 0 ;) (param $a i64) (param $x i64) (param $y i64) (result i32) + (func $figure-1a (param $a i64) (param $x i64) (param $y i64) (result i32) (local $i i32) (local $j i32) (local $r i32) @@ -59,7 +59,7 @@ (local.get $16) ) ) - (func $figure-1b (; 1 ;) (param $a i64) (param $x i64) (param $y i64) (result i32) + (func $figure-1b (param $a i64) (param $x i64) (param $y i64) (result i32) (local $i i32) (local $j i32) (local $r i32) @@ -135,7 +135,7 @@ ) (unreachable) ) - (func $figure-3-if (; 2 ;) (param $x i32) (result i32) + (func $figure-3-if (param $x i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) diff -Nru binaryen-91/test/passes/simplify-locals-nostructure.txt binaryen-99/test/passes/simplify-locals-nostructure.txt --- binaryen-91/test/passes/simplify-locals-nostructure.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/simplify-locals-nostructure.txt 2021-01-07 20:01:06.000000000 +0000 @@ -3,7 +3,7 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_=>_f64 (func (param i32 i32) (result f64))) (memory $0 1) - (func $contrast (; 0 ;) + (func $contrast (local $x i32) (local $y i32) (local $z i32) @@ -64,11 +64,11 @@ (local.get $b) ) ) - (func $no-unreachable (; 1 ;) + (func $no-unreachable (local $x i32) (unreachable) ) - (func $implicit-trap-and-global-effects (; 2 ;) + (func $implicit-trap-and-global-effects (local $var$0 i32) (local.set $var$0 (i32.trunc_f64_u @@ -83,7 +83,7 @@ (local.get $var$0) ) ) - (func $implicit-trap-and-local-effects (; 3 ;) + (func $implicit-trap-and-local-effects (local $var$0 i32) (local $other i32) (nop) @@ -102,7 +102,7 @@ ) ) ) - (func $multi-pass-get-equivs-right (; 4 ;) (param $var$0 i32) (param $var$1 i32) (result f64) + (func $multi-pass-get-equivs-right (param $var$0 i32) (param $var$1 i32) (result f64) (local $var$2 i32) (nop) (i32.store @@ -115,7 +115,7 @@ ) ) ) - (func $if-value-structure-equivalent (; 5 ;) (param $x i32) (result i32) + (func $if-value-structure-equivalent (param $x i32) (result i32) (local $y i32) (if (i32.const 1) diff -Nru binaryen-91/test/passes/simplify-locals-notee-nostructure.txt binaryen-99/test/passes/simplify-locals-notee-nostructure.txt --- binaryen-91/test/passes/simplify-locals-notee-nostructure.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/simplify-locals-notee-nostructure.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ (module (type $none_=>_none (func)) - (func $contrast (; 0 ;) + (func $contrast (local $x i32) (local $y i32) (local $z i32) diff -Nru binaryen-91/test/passes/simplify-locals-notee.txt binaryen-99/test/passes/simplify-locals-notee.txt --- binaryen-91/test/passes/simplify-locals-notee.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/simplify-locals-notee.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ (module (type $none_=>_none (func)) - (func $contrast (; 0 ;) + (func $contrast (local $x i32) (local $y i32) (local $z i32) diff -Nru binaryen-91/test/passes/simplify-locals.txt binaryen-99/test/passes/simplify-locals.txt --- binaryen-91/test/passes/simplify-locals.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/simplify-locals.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ (module (type $none_=>_i32 (func (result i32))) - (func $sink-from-inside (; 0 ;) (result i32) + (func $sink-from-inside (result i32) (local $0 i32) (local $1 i32) (local $2 i32) diff -Nru binaryen-91/test/passes/souperify.txt binaryen-99/test/passes/souperify.txt --- binaryen-91/test/passes/souperify.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/souperify.txt 2021-01-07 20:01:06.000000000 +0000 @@ -9,7 +9,7 @@ (module (type $none_=>_none (func)) - (func $if-loop-test (; 0 ;) + (func $if-loop-test (local $0 i32) (if (i32.const 0) diff -Nru binaryen-91/test/passes/spill-pointers.txt binaryen-99/test/passes/spill-pointers.txt --- binaryen-91/test/passes/spill-pointers.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/spill-pointers.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,1291 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) - (type $f64_=>_none (func (param f64))) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "segfault" (func $segfault (param i32))) - (memory $0 10) - (table $0 1 1 funcref) - (global $stack_ptr (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (func $nothing (; 1 ;) - (nop) - ) - (func $not-alive (; 2 ;) - (local $x i32) - (local.set $x - (i32.const 1) - ) - (call $nothing) - ) - (func $spill (; 3 ;) - (local $x i32) - (local $1 i32) - (local.set $1 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - (block - (block - (i32.store - (local.get $1) - (local.get $x) - ) - (call $nothing) - ) - (drop - (local.get $x) - ) - ) - (global.set $stack_ptr - (local.get $1) - ) - ) - (func $ignore-non-pointers (; 4 ;) - (local $x i32) - (local $y i64) - (local $z f32) - (local $w f64) - (local $4 i32) - (local.set $4 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $4) - (i32.const 16) - ) - ) - (block - (local.set $x - (i32.const 1) - ) - (local.set $y - (i64.const 1) - ) - (local.set $z - (f32.const 1) - ) - (local.set $w - (f64.const 1) - ) - (block - (i32.store - (local.get $4) - (local.get $x) - ) - (call $nothing) - ) - (drop - (local.get $x) - ) - (drop - (local.get $y) - ) - (drop - (local.get $z) - ) - (drop - (local.get $w) - ) - ) - (global.set $stack_ptr - (local.get $4) - ) - ) - (func $spill4 (; 5 ;) - (local $x i32) - (local $y i32) - (local $z i32) - (local $w i32) - (local $4 i32) - (local.set $4 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $4) - (i32.const 16) - ) - ) - (block - (local.set $x - (i32.const 1) - ) - (local.set $y - (i32.const 1) - ) - (local.set $z - (i32.const 1) - ) - (local.set $w - (i32.const 1) - ) - (block - (i32.store - (local.get $4) - (local.get $x) - ) - (i32.store offset=4 - (local.get $4) - (local.get $y) - ) - (i32.store offset=8 - (local.get $4) - (local.get $z) - ) - (i32.store offset=12 - (local.get $4) - (local.get $w) - ) - (call $nothing) - ) - (drop - (local.get $x) - ) - (drop - (local.get $y) - ) - (drop - (local.get $z) - ) - (drop - (local.get $w) - ) - ) - (global.set $stack_ptr - (local.get $4) - ) - ) - (func $spill5 (; 6 ;) - (local $x i32) - (local $y i32) - (local $z i32) - (local $w i32) - (local $a i32) - (local $5 i32) - (local.set $5 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $5) - (i32.const 32) - ) - ) - (block - (local.set $x - (i32.const 1) - ) - (local.set $y - (i32.const 1) - ) - (local.set $z - (i32.const 1) - ) - (local.set $w - (i32.const 1) - ) - (local.set $a - (i32.const 1) - ) - (block - (i32.store - (local.get $5) - (local.get $x) - ) - (i32.store offset=4 - (local.get $5) - (local.get $y) - ) - (i32.store offset=8 - (local.get $5) - (local.get $z) - ) - (i32.store offset=12 - (local.get $5) - (local.get $w) - ) - (i32.store offset=16 - (local.get $5) - (local.get $a) - ) - (call $nothing) - ) - (drop - (local.get $x) - ) - (drop - (local.get $y) - ) - (drop - (local.get $z) - ) - (drop - (local.get $w) - ) - (drop - (local.get $a) - ) - ) - (global.set $stack_ptr - (local.get $5) - ) - ) - (func $some-alive (; 7 ;) - (local $x i32) - (local $y i32) - (local $2 i32) - (local.set $2 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $2) - (i32.const 16) - ) - ) - (block - (block - (i32.store - (local.get $2) - (local.get $x) - ) - (call $nothing) - ) - (drop - (local.get $x) - ) - ) - (global.set $stack_ptr - (local.get $2) - ) - ) - (func $spill-args (; 8 ;) (param $p i32) (param $q i32) - (local $x i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local.set $3 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $3) - (i32.const 16) - ) - ) - (block - (block - (local.set $4 - (i32.const 1) - ) - (local.set $5 - (i32.const 2) - ) - (i32.store offset=8 - (local.get $3) - (local.get $x) - ) - (call $spill-args - (local.get $4) - (local.get $5) - ) - ) - (drop - (local.get $x) - ) - ) - (global.set $stack_ptr - (local.get $3) - ) - ) - (func $spill-ret (; 9 ;) (result i32) - (local $x i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local.set $1 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - (local.set $4 - (block (result i32) - (block - (i32.store - (local.get $1) - (local.get $x) - ) - (call $nothing) - ) - (drop - (local.get $x) - ) - (if - (i32.const 1) - (block - (local.set $2 - (i32.const 2) - ) - (global.set $stack_ptr - (local.get $1) - ) - (return - (local.get $2) - ) - ) - (block - (local.set $3 - (i32.const 3) - ) - (global.set $stack_ptr - (local.get $1) - ) - (return - (local.get $3) - ) - ) - ) - (i32.const 4) - ) - ) - (global.set $stack_ptr - (local.get $1) - ) - (local.get $4) - ) - (func $spill-unreachable (; 10 ;) (result i32) - (local $x i32) - (local $1 i32) - (local $2 i32) - (local.set $1 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - (local.set $2 - (block (result i32) - (block - (i32.store - (local.get $1) - (local.get $x) - ) - (call $nothing) - ) - (drop - (local.get $x) - ) - (unreachable) - ) - ) - (global.set $stack_ptr - (local.get $1) - ) - (local.get $2) - ) - (func $spill-call-call0 (; 11 ;) (param $p i32) (result i32) - (unreachable) - ) - (func $spill-call-call1 (; 12 ;) (param $p i32) (result i32) - (local $x i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local.set $2 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $2) - (i32.const 16) - ) - ) - (local.set $5 - (block (result i32) - (drop - (block (result i32) - (local.set $3 - (block (result i32) - (local.set $4 - (i32.const 1) - ) - (i32.store offset=4 - (local.get $2) - (local.get $x) - ) - (call $spill-call-call1 - (local.get $4) - ) - ) - ) - (i32.store offset=4 - (local.get $2) - (local.get $x) - ) - (call $spill-call-call0 - (local.get $3) - ) - ) - ) - (local.get $x) - ) - ) - (global.set $stack_ptr - (local.get $2) - ) - (local.get $5) - ) - (func $spill-call-ret (; 13 ;) (param $p i32) (result i32) - (local $x i32) - (drop - (call $spill-call-call0 - (return - (i32.const 1) - ) - ) - ) - (i32.const 0) - ) - (func $spill-ret-call (; 14 ;) (param $p i32) (result i32) - (local $x i32) - (drop - (return - (call $spill-call-call0 - (i32.const 1) - ) - ) - ) - (i32.const 0) - ) - (func $spill-ret-ret (; 15 ;) (result i32) - (local $x i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local.set $1 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - (local.set $3 - (block (result i32) - (block - (i32.store - (local.get $1) - (local.get $x) - ) - (call $nothing) - ) - (drop - (local.get $x) - ) - (drop - (block - (global.set $stack_ptr - (local.get $1) - ) - (return - (block - (local.set $2 - (i32.const 1) - ) - (global.set $stack_ptr - (local.get $1) - ) - (return - (local.get $2) - ) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (global.set $stack_ptr - (local.get $1) - ) - (local.get $3) - ) - (func $spill-call-othertype (; 16 ;) (param $y f64) - (local $x i32) - (local $2 i32) - (local $3 f64) - (local.set $2 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $2) - (i32.const 16) - ) - ) - (block - (block - (local.set $3 - (f64.const 1) - ) - (i32.store - (local.get $2) - (local.get $x) - ) - (call $spill-call-othertype - (local.get $3) - ) - ) - (drop - (local.get $x) - ) - ) - (global.set $stack_ptr - (local.get $2) - ) - ) - (func $spill-call_indirect (; 17 ;) - (local $x i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local.set $1 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - (block - (block - (local.set $2 - (i32.const 123) - ) - (local.set $3 - (i32.const 456) - ) - (local.set $4 - (i32.const 789) - ) - (i32.store - (local.get $1) - (local.get $x) - ) - (call_indirect (type $i32_i32_=>_none) - (local.get $2) - (local.get $3) - (local.get $4) - ) - ) - (drop - (local.get $x) - ) - ) - (global.set $stack_ptr - (local.get $1) - ) - ) - (func $spill-call_import (; 18 ;) - (local $x i32) - (local $1 i32) - (local $2 i32) - (local.set $1 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - (block - (block - (local.set $2 - (i32.const 200) - ) - (i32.store - (local.get $1) - (local.get $x) - ) - (call $segfault - (local.get $2) - ) - ) - (drop - (local.get $x) - ) - ) - (global.set $stack_ptr - (local.get $1) - ) - ) -) -(module - (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_=>_none (func (param i32))) - (type $f64_=>_none (func (param f64))) - (import "env" "segfault" (func $segfault (param i32))) - (memory $0 10) - (table $0 1 1 funcref) - (global $stack_ptr (mut i32) (i32.const 1716592)) - (export "stackSave" (func $stack_save)) - (func $stack_save (; 1 ;) (result i32) - (global.get $stack_ptr) - ) - (func $nothing (; 2 ;) - (nop) - ) - (func $not-alive (; 3 ;) - (local $x i32) - (local.set $x - (i32.const 1) - ) - (call $nothing) - ) - (func $spill (; 4 ;) - (local $x i32) - (local $1 i32) - (local.set $1 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - (block - (block - (i32.store - (local.get $1) - (local.get $x) - ) - (call $nothing) - ) - (drop - (local.get $x) - ) - ) - (global.set $stack_ptr - (local.get $1) - ) - ) - (func $ignore-non-pointers (; 5 ;) - (local $x i32) - (local $y i64) - (local $z f32) - (local $w f64) - (local $4 i32) - (local.set $4 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $4) - (i32.const 16) - ) - ) - (block - (local.set $x - (i32.const 1) - ) - (local.set $y - (i64.const 1) - ) - (local.set $z - (f32.const 1) - ) - (local.set $w - (f64.const 1) - ) - (block - (i32.store - (local.get $4) - (local.get $x) - ) - (call $nothing) - ) - (drop - (local.get $x) - ) - (drop - (local.get $y) - ) - (drop - (local.get $z) - ) - (drop - (local.get $w) - ) - ) - (global.set $stack_ptr - (local.get $4) - ) - ) - (func $spill4 (; 6 ;) - (local $x i32) - (local $y i32) - (local $z i32) - (local $w i32) - (local $4 i32) - (local.set $4 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $4) - (i32.const 16) - ) - ) - (block - (local.set $x - (i32.const 1) - ) - (local.set $y - (i32.const 1) - ) - (local.set $z - (i32.const 1) - ) - (local.set $w - (i32.const 1) - ) - (block - (i32.store - (local.get $4) - (local.get $x) - ) - (i32.store offset=4 - (local.get $4) - (local.get $y) - ) - (i32.store offset=8 - (local.get $4) - (local.get $z) - ) - (i32.store offset=12 - (local.get $4) - (local.get $w) - ) - (call $nothing) - ) - (drop - (local.get $x) - ) - (drop - (local.get $y) - ) - (drop - (local.get $z) - ) - (drop - (local.get $w) - ) - ) - (global.set $stack_ptr - (local.get $4) - ) - ) - (func $spill5 (; 7 ;) - (local $x i32) - (local $y i32) - (local $z i32) - (local $w i32) - (local $a i32) - (local $5 i32) - (local.set $5 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $5) - (i32.const 32) - ) - ) - (block - (local.set $x - (i32.const 1) - ) - (local.set $y - (i32.const 1) - ) - (local.set $z - (i32.const 1) - ) - (local.set $w - (i32.const 1) - ) - (local.set $a - (i32.const 1) - ) - (block - (i32.store - (local.get $5) - (local.get $x) - ) - (i32.store offset=4 - (local.get $5) - (local.get $y) - ) - (i32.store offset=8 - (local.get $5) - (local.get $z) - ) - (i32.store offset=12 - (local.get $5) - (local.get $w) - ) - (i32.store offset=16 - (local.get $5) - (local.get $a) - ) - (call $nothing) - ) - (drop - (local.get $x) - ) - (drop - (local.get $y) - ) - (drop - (local.get $z) - ) - (drop - (local.get $w) - ) - (drop - (local.get $a) - ) - ) - (global.set $stack_ptr - (local.get $5) - ) - ) - (func $some-alive (; 8 ;) - (local $x i32) - (local $y i32) - (local $2 i32) - (local.set $2 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $2) - (i32.const 16) - ) - ) - (block - (block - (i32.store - (local.get $2) - (local.get $x) - ) - (call $nothing) - ) - (drop - (local.get $x) - ) - ) - (global.set $stack_ptr - (local.get $2) - ) - ) - (func $spill-args (; 9 ;) (param $p i32) (param $q i32) - (local $x i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local.set $3 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $3) - (i32.const 16) - ) - ) - (block - (block - (local.set $4 - (i32.const 1) - ) - (local.set $5 - (i32.const 2) - ) - (i32.store offset=8 - (local.get $3) - (local.get $x) - ) - (call $spill-args - (local.get $4) - (local.get $5) - ) - ) - (drop - (local.get $x) - ) - ) - (global.set $stack_ptr - (local.get $3) - ) - ) - (func $spill-ret (; 10 ;) (result i32) - (local $x i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local.set $1 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - (local.set $4 - (block (result i32) - (block - (i32.store - (local.get $1) - (local.get $x) - ) - (call $nothing) - ) - (drop - (local.get $x) - ) - (if - (i32.const 1) - (block - (local.set $2 - (i32.const 2) - ) - (global.set $stack_ptr - (local.get $1) - ) - (return - (local.get $2) - ) - ) - (block - (local.set $3 - (i32.const 3) - ) - (global.set $stack_ptr - (local.get $1) - ) - (return - (local.get $3) - ) - ) - ) - (i32.const 4) - ) - ) - (global.set $stack_ptr - (local.get $1) - ) - (local.get $4) - ) - (func $spill-unreachable (; 11 ;) (result i32) - (local $x i32) - (local $1 i32) - (local $2 i32) - (local.set $1 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - (local.set $2 - (block (result i32) - (block - (i32.store - (local.get $1) - (local.get $x) - ) - (call $nothing) - ) - (drop - (local.get $x) - ) - (unreachable) - ) - ) - (global.set $stack_ptr - (local.get $1) - ) - (local.get $2) - ) - (func $spill-call-call0 (; 12 ;) (param $p i32) (result i32) - (unreachable) - ) - (func $spill-call-call1 (; 13 ;) (param $p i32) (result i32) - (local $x i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local.set $2 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $2) - (i32.const 16) - ) - ) - (local.set $5 - (block (result i32) - (drop - (block (result i32) - (local.set $3 - (block (result i32) - (local.set $4 - (i32.const 1) - ) - (i32.store offset=4 - (local.get $2) - (local.get $x) - ) - (call $spill-call-call1 - (local.get $4) - ) - ) - ) - (i32.store offset=4 - (local.get $2) - (local.get $x) - ) - (call $spill-call-call0 - (local.get $3) - ) - ) - ) - (local.get $x) - ) - ) - (global.set $stack_ptr - (local.get $2) - ) - (local.get $5) - ) - (func $spill-call-ret (; 14 ;) (param $p i32) (result i32) - (local $x i32) - (drop - (call $spill-call-call0 - (return - (i32.const 1) - ) - ) - ) - (i32.const 0) - ) - (func $spill-ret-call (; 15 ;) (param $p i32) (result i32) - (local $x i32) - (drop - (return - (call $spill-call-call0 - (i32.const 1) - ) - ) - ) - (i32.const 0) - ) - (func $spill-ret-ret (; 16 ;) (result i32) - (local $x i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local.set $1 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - (local.set $3 - (block (result i32) - (block - (i32.store - (local.get $1) - (local.get $x) - ) - (call $nothing) - ) - (drop - (local.get $x) - ) - (drop - (block - (global.set $stack_ptr - (local.get $1) - ) - (return - (block - (local.set $2 - (i32.const 1) - ) - (global.set $stack_ptr - (local.get $1) - ) - (return - (local.get $2) - ) - ) - ) - ) - ) - (i32.const 0) - ) - ) - (global.set $stack_ptr - (local.get $1) - ) - (local.get $3) - ) - (func $spill-call-othertype (; 17 ;) (param $y f64) - (local $x i32) - (local $2 i32) - (local $3 f64) - (local.set $2 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $2) - (i32.const 16) - ) - ) - (block - (block - (local.set $3 - (f64.const 1) - ) - (i32.store - (local.get $2) - (local.get $x) - ) - (call $spill-call-othertype - (local.get $3) - ) - ) - (drop - (local.get $x) - ) - ) - (global.set $stack_ptr - (local.get $2) - ) - ) - (func $spill-call_indirect (; 18 ;) - (local $x i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local.set $1 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - (block - (block - (local.set $2 - (i32.const 123) - ) - (local.set $3 - (i32.const 456) - ) - (local.set $4 - (i32.const 789) - ) - (i32.store - (local.get $1) - (local.get $x) - ) - (call_indirect (type $i32_i32_=>_none) - (local.get $2) - (local.get $3) - (local.get $4) - ) - ) - (drop - (local.get $x) - ) - ) - (global.set $stack_ptr - (local.get $1) - ) - ) - (func $spill-call_import (; 19 ;) - (local $x i32) - (local $1 i32) - (local $2 i32) - (local.set $1 - (global.get $stack_ptr) - ) - (global.set $stack_ptr - (i32.add - (local.get $1) - (i32.const 16) - ) - ) - (block - (block - (local.set $2 - (i32.const 200) - ) - (i32.store - (local.get $1) - (local.get $x) - ) - (call $segfault - (local.get $2) - ) - ) - (drop - (local.get $x) - ) - ) - (global.set $stack_ptr - (local.get $1) - ) - ) -) diff -Nru binaryen-91/test/passes/spill-pointers.wast binaryen-99/test/passes/spill-pointers.wast --- binaryen-91/test/passes/spill-pointers.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/spill-pointers.wast 1970-01-01 00:00:00.000000000 +0000 @@ -1,338 +0,0 @@ -(module - (memory 10) - (type $ii (func (param i32 i32))) - (table 1 1 funcref) - (elem (i32.const 0)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "segfault" (func $segfault (param i32))) - (global $stack_ptr (mut i32) (global.get $STACKTOP$asm2wasm$import)) - - (func $nothing - ) - (func $not-alive - (local $x i32) - (local.set $x (i32.const 1)) - (call $nothing) - ) - (func $spill - (local $x i32) - (call $nothing) - (drop (local.get $x)) - ) - (func $ignore-non-pointers - (local $x i32) - (local $y i64) - (local $z f32) - (local $w f64) - (local.set $x (i32.const 1)) - (local.set $y (i64.const 1)) - (local.set $z (f32.const 1)) - (local.set $w (f64.const 1)) - (call $nothing) - (drop (local.get $x)) - (drop (local.get $y)) - (drop (local.get $z)) - (drop (local.get $w)) - ) - (func $spill4 - (local $x i32) - (local $y i32) - (local $z i32) - (local $w i32) - (local.set $x (i32.const 1)) - (local.set $y (i32.const 1)) - (local.set $z (i32.const 1)) - (local.set $w (i32.const 1)) - (call $nothing) - (drop (local.get $x)) - (drop (local.get $y)) - (drop (local.get $z)) - (drop (local.get $w)) - ) - (func $spill5 - (local $x i32) - (local $y i32) - (local $z i32) - (local $w i32) - (local $a i32) - (local.set $x (i32.const 1)) - (local.set $y (i32.const 1)) - (local.set $z (i32.const 1)) - (local.set $w (i32.const 1)) - (local.set $a (i32.const 1)) - (call $nothing) - (drop (local.get $x)) - (drop (local.get $y)) - (drop (local.get $z)) - (drop (local.get $w)) - (drop (local.get $a)) - ) - (func $some-alive - (local $x i32) - (local $y i32) - (call $nothing) - (drop (local.get $x)) - ) - (func $spill-args (param $p i32) (param $q i32) - (local $x i32) - (call $spill-args (i32.const 1) (i32.const 2)) - (drop (local.get $x)) - ) - (func $spill-ret (result i32) - (local $x i32) - (call $nothing) - (drop (local.get $x)) - (if (i32.const 1) - (return (i32.const 2)) - (return (i32.const 3)) - ) - (i32.const 4) - ) - (func $spill-unreachable (result i32) - (local $x i32) - (call $nothing) - (drop (local.get $x)) - (unreachable) - ) - (func $spill-call-call0 (param $p i32) (result i32) - (unreachable) - ) - (func $spill-call-call1 (param $p i32) (result i32) - (local $x i32) - (drop - (call $spill-call-call0 - (call $spill-call-call1 - (i32.const 1) - ) - ) - ) - (local.get $x) - ) - (func $spill-call-ret (param $p i32) (result i32) - (local $x i32) - (drop - (call $spill-call-call0 - (return - (i32.const 1) - ) - ) - ) - (local.get $x) - ) - (func $spill-ret-call (param $p i32) (result i32) - (local $x i32) - (drop - (return - (call $spill-call-call0 - (i32.const 1) - ) - ) - ) - (local.get $x) - ) - (func $spill-ret-ret (result i32) - (local $x i32) - (call $nothing) - (drop (local.get $x)) - (drop - (return - (return - (i32.const 1) - ) - ) - ) - (local.get $x) - ) - (func $spill-call-othertype (param $y f64) - (local $x i32) - (call $spill-call-othertype (f64.const 1)) - (drop (local.get $x)) - ) - (func $spill-call_indirect - (local $x i32) - (call_indirect (type $ii) - (i32.const 123) - (i32.const 456) - (i32.const 789) - ) - (drop (local.get $x)) - ) - (func $spill-call_import - (local $x i32) - (call $segfault - (i32.const 200) - ) - (drop (local.get $x)) - ) -) - -(module - (memory 10) - (type $ii (func (param i32 i32))) - (table 1 1 funcref) - (elem (i32.const 0)) - (global $stack_ptr (mut i32) (i32.const 1716592)) - (export "stackSave" (func $stack_save)) - (import "env" "segfault" (func $segfault (param i32))) - (func $stack_save (result i32) - (global.get $stack_ptr) - ) - - (func $nothing - ) - (func $not-alive - (local $x i32) - (local.set $x (i32.const 1)) - (call $nothing) - ) - (func $spill - (local $x i32) - (call $nothing) - (drop (local.get $x)) - ) - (func $ignore-non-pointers - (local $x i32) - (local $y i64) - (local $z f32) - (local $w f64) - (local.set $x (i32.const 1)) - (local.set $y (i64.const 1)) - (local.set $z (f32.const 1)) - (local.set $w (f64.const 1)) - (call $nothing) - (drop (local.get $x)) - (drop (local.get $y)) - (drop (local.get $z)) - (drop (local.get $w)) - ) - (func $spill4 - (local $x i32) - (local $y i32) - (local $z i32) - (local $w i32) - (local.set $x (i32.const 1)) - (local.set $y (i32.const 1)) - (local.set $z (i32.const 1)) - (local.set $w (i32.const 1)) - (call $nothing) - (drop (local.get $x)) - (drop (local.get $y)) - (drop (local.get $z)) - (drop (local.get $w)) - ) - (func $spill5 - (local $x i32) - (local $y i32) - (local $z i32) - (local $w i32) - (local $a i32) - (local.set $x (i32.const 1)) - (local.set $y (i32.const 1)) - (local.set $z (i32.const 1)) - (local.set $w (i32.const 1)) - (local.set $a (i32.const 1)) - (call $nothing) - (drop (local.get $x)) - (drop (local.get $y)) - (drop (local.get $z)) - (drop (local.get $w)) - (drop (local.get $a)) - ) - (func $some-alive - (local $x i32) - (local $y i32) - (call $nothing) - (drop (local.get $x)) - ) - (func $spill-args (param $p i32) (param $q i32) - (local $x i32) - (call $spill-args (i32.const 1) (i32.const 2)) - (drop (local.get $x)) - ) - (func $spill-ret (result i32) - (local $x i32) - (call $nothing) - (drop (local.get $x)) - (if (i32.const 1) - (return (i32.const 2)) - (return (i32.const 3)) - ) - (i32.const 4) - ) - (func $spill-unreachable (result i32) - (local $x i32) - (call $nothing) - (drop (local.get $x)) - (unreachable) - ) - (func $spill-call-call0 (param $p i32) (result i32) - (unreachable) - ) - (func $spill-call-call1 (param $p i32) (result i32) - (local $x i32) - (drop - (call $spill-call-call0 - (call $spill-call-call1 - (i32.const 1) - ) - ) - ) - (local.get $x) - ) - (func $spill-call-ret (param $p i32) (result i32) - (local $x i32) - (drop - (call $spill-call-call0 - (return - (i32.const 1) - ) - ) - ) - (local.get $x) - ) - (func $spill-ret-call (param $p i32) (result i32) - (local $x i32) - (drop - (return - (call $spill-call-call0 - (i32.const 1) - ) - ) - ) - (local.get $x) - ) - (func $spill-ret-ret (result i32) - (local $x i32) - (call $nothing) - (drop (local.get $x)) - (drop - (return - (return - (i32.const 1) - ) - ) - ) - (local.get $x) - ) - (func $spill-call-othertype (param $y f64) - (local $x i32) - (call $spill-call-othertype (f64.const 1)) - (drop (local.get $x)) - ) - (func $spill-call_indirect - (local $x i32) - (call_indirect (type $ii) - (i32.const 123) - (i32.const 456) - (i32.const 789) - ) - (drop (local.get $x)) - ) - (func $spill-call_import - (local $x i32) - (call $segfault - (i32.const 200) - ) - (drop (local.get $x)) - ) -) diff -Nru binaryen-91/test/passes/ssa_enable-threads.txt binaryen-99/test/passes/ssa_enable-threads.txt --- binaryen-91/test/passes/ssa_enable-threads.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/ssa_enable-threads.txt 2021-01-07 20:01:06.000000000 +0000 @@ -3,7 +3,7 @@ (type $none_=>_i32 (func (result i32))) (type $none_=>_none (func)) (global $global$0 (mut i32) (i32.const 1)) - (func $basics (; 0 ;) (param $x i32) + (func $basics (param $x i32) (local $y i32) (local $z f32) (local $w i64) @@ -48,7 +48,7 @@ (local.get $7) ) ) - (func $if (; 1 ;) (param $p i32) + (func $if (param $p i32) (local $x i32) (local $y i32) (local $3 i32) @@ -168,7 +168,7 @@ ) ) ) - (func $if2 (; 2 ;) (param $x i32) + (func $if2 (param $x i32) (local $1 i32) (local $2 i32) (local.set $2 @@ -193,7 +193,7 @@ ) ) ) - (func $block (; 3 ;) (param $x i32) + (func $block (param $x i32) (local $1 i32) (local $2 i32) (local.set $2 @@ -215,7 +215,7 @@ ) ) ) - (func $block2 (; 4 ;) (param $x i32) + (func $block2 (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -315,7 +315,7 @@ (local.get $6) ) ) - (func $loop (; 5 ;) (param $x i32) + (func $loop (param $x i32) (local $1 i32) (local $2 i32) (local.set $2 @@ -343,7 +343,7 @@ ) ) ) - (func $loop2 (; 6 ;) (param $x i32) + (func $loop2 (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -391,7 +391,7 @@ ) ) ) - (func $loop2-zeroinit (; 7 ;) + (func $loop2-zeroinit (local $x i32) (local $1 i32) (local $2 i32) @@ -435,7 +435,7 @@ (local.get $3) ) ) - (func $real-loop (; 8 ;) (param $param i32) + (func $real-loop (param $param i32) (local $loopvar i32) (local $inc i32) (local $3 i32) @@ -475,7 +475,7 @@ (local.get $6) ) ) - (func $real-loop-outblock (; 9 ;) (param $param i32) + (func $real-loop-outblock (param $param i32) (local $loopvar i32) (local $inc i32) (local $3 i32) @@ -515,7 +515,7 @@ (local.get $6) ) ) - (func $loop-loop-param (; 10 ;) (param $param i32) + (func $loop-loop-param (param $param i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -559,7 +559,7 @@ ) ) ) - (func $loop-loop-param-nomerge (; 11 ;) (param $param i32) + (func $loop-loop-param-nomerge (param $param i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -592,7 +592,7 @@ ) ) ) - (func $loop-nesting (; 12 ;) (param $x i32) + (func $loop-nesting (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -645,7 +645,7 @@ ) ) ) - (func $loop-nesting-2 (; 13 ;) (param $x i32) + (func $loop-nesting-2 (param $x i32) (local $1 i32) (local $2 i32) (local $3 i32) @@ -700,7 +700,7 @@ ) ) ) - (func $func_6 (; 14 ;) (result i32) + (func $func_6 (result i32) (local $result i32) (local $zero i32) (local $2 i32) @@ -734,7 +734,7 @@ (br $label$1) ) ) - (func $ssa-merge-tricky (; 15 ;) (result i32) + (func $ssa-merge-tricky (result i32) (local $var$0 i32) (local $var$1 i32) (local $2 i32) diff -Nru binaryen-91/test/passes/ssa_fuzz-exec_enable-threads.txt binaryen-99/test/passes/ssa_fuzz-exec_enable-threads.txt --- binaryen-91/test/passes/ssa_fuzz-exec_enable-threads.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/ssa_fuzz-exec_enable-threads.txt 2021-01-07 20:01:06.000000000 +0000 @@ -5,7 +5,7 @@ (memory $0 (shared 1 1)) (table $0 0 0 funcref) (export "func_0" (func $0)) - (func $0 (; 0 ;) (result i32) + (func $0 (result i32) (local $var$0 i32) (local $var$1 i32) (local $var$2 i32) diff -Nru binaryen-91/test/passes/ssa-nomerge_enable-simd.txt binaryen-99/test/passes/ssa-nomerge_enable-simd.txt --- binaryen-91/test/passes/ssa-nomerge_enable-simd.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/ssa-nomerge_enable-simd.txt 2021-01-07 20:01:06.000000000 +0000 @@ -4,7 +4,7 @@ (type $i32_i32_=>_none (func (param i32 i32))) (memory $0 1 1) (global $global$0 (mut i32) (i32.const 1)) - (func $basics (; 0 ;) (param $x i32) + (func $basics (param $x i32) (local $y i32) (local $z f32) (local $w i64) @@ -49,7 +49,7 @@ (local.get $7) ) ) - (func $if (; 1 ;) (param $p i32) + (func $if (param $p i32) (local $x i32) (local $y i32) (local $3 i32) @@ -128,7 +128,7 @@ (local.get $x) ) ) - (func $if2 (; 2 ;) (param $x i32) + (func $if2 (param $x i32) (if (i32.const 1) (block $block @@ -144,7 +144,7 @@ (local.get $x) ) ) - (func $nomerge (; 3 ;) (param $p i32) (param $q i32) + (func $nomerge (param $p i32) (param $q i32) (local $x i32) (local $3 i32) (local $4 i32) @@ -201,7 +201,7 @@ (local.get $x) ) ) - (func $simd-zero (; 4 ;) + (func $simd-zero (local $0 v128) (v128.store align=4 (i32.const 0) diff -Nru binaryen-91/test/passes/stack-check_enable-mutable-globals.txt binaryen-99/test/passes/stack-check_enable-mutable-globals.txt --- binaryen-91/test/passes/stack-check_enable-mutable-globals.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/stack-check_enable-mutable-globals.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,63 @@ +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) + (import "env" "__stack_pointer" (global $sp (mut i32))) + (global $__stack_base (mut i32) (i32.const 0)) + (global $__stack_limit (mut i32) (i32.const 0)) + (export "use_stack" (func $0)) + (export "__set_stack_limits" (func $__set_stack_limits)) + (func $0 (result i32) + (local $0 i32) + (block + (if + (i32.or + (i32.gt_u + (local.tee $0 + (i32.const 42) + ) + (global.get $__stack_base) + ) + (i32.lt_u + (local.get $0) + (global.get $__stack_limit) + ) + ) + (unreachable) + ) + (global.set $sp + (local.get $0) + ) + ) + (global.get $sp) + ) + (func $__set_stack_limits (param $0 i32) (param $1 i32) + (global.set $__stack_base + (local.get $0) + ) + (global.set $__stack_limit + (local.get $1) + ) + ) +) +(module + (type $i32_i32_=>_none (func (param i32 i32))) + (type $none_=>_i32 (func (result i32))) + (import "env" "__stack_pointer" (global $sp (mut i32))) + (global $__stack_base (mut i32) (i32.const 0)) + (global $__stack_limit (mut i32) (i32.const 0)) + (global $__stack_base_0 (mut i32) (i32.const 0)) + (global $__stack_limit_0 (mut i32) (i32.const 0)) + (export "use_stack" (func $0)) + (export "__set_stack_limits" (func $__set_stack_limits)) + (func $0 (result i32) + (unreachable) + ) + (func $__set_stack_limits (param $0 i32) (param $1 i32) + (global.set $__stack_base_0 + (local.get $0) + ) + (global.set $__stack_limit_0 + (local.get $1) + ) + ) +) diff -Nru binaryen-91/test/passes/stack-check_enable-mutable-globals.wast binaryen-99/test/passes/stack-check_enable-mutable-globals.wast --- binaryen-91/test/passes/stack-check_enable-mutable-globals.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/stack-check_enable-mutable-globals.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,17 @@ +(module + (import "env" "__stack_pointer" (global $sp (mut i32))) + (func "use_stack" (result i32) + (global.set $sp (i32.const 42)) + (global.get $sp) + ) +) +;; if the global names are taken we should not crash +(module + (import "env" "__stack_pointer" (global $sp (mut i32))) + (global $__stack_base (mut i32) (i32.const 0)) + (global $__stack_limit (mut i32) (i32.const 0)) + (export "use_stack" (func $0)) + (func $0 (result i32) + (unreachable) + ) +) diff -Nru binaryen-91/test/passes/strip-debug.bin.txt binaryen-99/test/passes/strip-debug.bin.txt --- binaryen-91/test/passes/strip-debug.bin.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/strip-debug.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,8 +1,8 @@ (module (type $none_=>_i32 (func (result i32))) - (import "env" "__linear_memory" (memory $0 0)) - (import "env" "__indirect_function_table" (table $timport$1 0 funcref)) - (func $0 (; 0 ;) (result i32) + (import "env" "__linear_memory" (memory $mimport$0 0)) + (import "env" "__indirect_function_table" (table $timport$0 0 funcref)) + (func $0 (result i32) (local $0 i32) (local.set $0 (i32.const 1) diff -Nru binaryen-91/test/passes/strip-dwarf.bin.txt binaryen-99/test/passes/strip-dwarf.bin.txt --- binaryen-91/test/passes/strip-dwarf.bin.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/strip-dwarf.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -24,7 +24,7 @@ (export "stackAlloc" (func $fimport$5)) (export "stackRestore" (func $fimport$6)) (export "__growWasmMemory" (func $fimport$7)) - (func $0 (; 8 ;) (result i32) + (func $0 (result i32) (i32.const 1024) ) ;; custom section "sourceMappingURL", size 15 diff -Nru binaryen-91/test/passes/strip-producers.bin.txt binaryen-99/test/passes/strip-producers.bin.txt --- binaryen-91/test/passes/strip-producers.bin.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/strip-producers.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,8 +1,8 @@ (module (type $none_=>_i32 (func (result i32))) - (import "env" "__linear_memory" (memory $0 0)) - (import "env" "__indirect_function_table" (table $timport$1 0 funcref)) - (func $0 (; 0 ;) (result i32) + (import "env" "__linear_memory" (memory $mimport$0 0)) + (import "env" "__indirect_function_table" (table $timport$0 0 funcref)) + (func $0 (result i32) (local $0 i32) (local.set $0 (i32.const 1) diff -Nru binaryen-91/test/passes/strip-target-features_roundtrip_print-features_all-features.txt binaryen-99/test/passes/strip-target-features_roundtrip_print-features_all-features.txt --- binaryen-91/test/passes/strip-target-features_roundtrip_print-features_all-features.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/strip-target-features_roundtrip_print-features_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,25 @@ +--enable-threads +--enable-mutable-globals +--enable-nontrapping-float-to-int +--enable-simd +--enable-bulk-memory +--enable-sign-ext +--enable-exception-handling +--enable-tail-call +--enable-reference-types +--enable-multivalue +--enable-gc +--enable-memory64 +--enable-typed-function-references +(module + (type $none_=>_v128_externref (func (result v128 externref))) + (func $foo (result v128 externref) + (tuple.make + (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000) + (ref.null extern) + ) + ) + (func $bar (result v128 externref) + (return_call $foo) + ) +) diff -Nru binaryen-91/test/passes/strip-target-features_roundtrip_print-features_all-features.wast binaryen-99/test/passes/strip-target-features_roundtrip_print-features_all-features.wast --- binaryen-91/test/passes/strip-target-features_roundtrip_print-features_all-features.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/strip-target-features_roundtrip_print-features_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,14 @@ +;; Test that features enabled on the IR Module survive a round trip +;; even if the target features section is stripped first + +(module + (func $foo (result v128 externref ) + (tuple.make + (v128.const i32x4 0 0 0 0) + (ref.null extern) + ) + ) + (func $bar (result v128 externref) + (return_call $foo) + ) +) diff -Nru binaryen-91/test/passes/stub-unsupported-js.txt binaryen-99/test/passes/stub-unsupported-js.txt --- binaryen-91/test/passes/stub-unsupported-js.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/stub-unsupported-js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,50 @@ +(module + (type $none_=>_f32 (func (result f32))) + (type $i32_=>_f32 (func (param i32) (result f32))) + (type $i64_=>_f32 (func (param i64) (result f32))) + (func $yes (param $x i64) (result f32) + (drop + (local.get $x) + ) + (f32.const 0) + ) + (func $no (param $x i32) (result f32) + (f32.convert_i32_u + (local.get $x) + ) + ) + (func $yes-unreach (result f32) + (unreachable) + ) + (func $no-unreach (result f32) + (f32.convert_i32_u + (unreachable) + ) + ) +) +(module + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (type $none_=>_f32 (func (result f32))) + (table $0 2 2 funcref) + (elem (i32.const 1) $return-f32) + (func $return-f32 (result f32) + (f32.const 3.141590118408203) + ) + (func $bad-indirect-call + (drop + (i32.const 1) + ) + ) + (func $bad-indirect-call-2 (result i32) + (block + (drop + (i64.const 1234) + ) + (drop + (i32.const 1) + ) + ) + (i32.const 0) + ) +) diff -Nru binaryen-91/test/passes/stub-unsupported-js.wast binaryen-99/test/passes/stub-unsupported-js.wast --- binaryen-91/test/passes/stub-unsupported-js.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/stub-unsupported-js.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,35 @@ +(module + (func $yes (param $x i64) (result f32) + (f32.convert_i64_u (local.get $x)) + ) + (func $no (param $x i32) (result f32) + (f32.convert_i32_u (local.get $x)) + ) + (func $yes-unreach (result f32) + (f32.convert_i64_u (unreachable)) + ) + (func $no-unreach (result f32) + (f32.convert_i32_u (unreachable)) + ) +) +(module + (type $none_=>_none (func)) + (type $i64_=>_i32 (func (param $foo i64) (result i32))) + (table $0 2 2 funcref) + (elem (i32.const 1) $return-f32) + (func $return-f32 (result f32) + (f32.const 3.14159) + ) + (func $bad-indirect-call + (call_indirect (type $none_=>_none) ;; note how it's the wrong type + (i32.const 1) + ) + ) + (func $bad-indirect-call-2 (result i32) + (call_indirect (type $i64_=>_i32) ;; note how it's the wrong type + (i64.const 1234) + (i32.const 1) + ) + ) +) + diff -Nru binaryen-91/test/passes/too_much_for_liveness.bin.txt binaryen-99/test/passes/too_much_for_liveness.bin.txt --- binaryen-91/test/passes/too_much_for_liveness.bin.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/too_much_for_liveness.bin.txt 2021-01-07 20:01:06.000000000 +0000 @@ -25,7 +25,7 @@ (module (type $none_=>_i32 (func (result i32))) (export "foo" (func $0)) - (func $0 (; 0 ;) (result i32) + (func $0 (result i32) (local $0 i32) (local.set $0 (i32.const 0) diff -Nru binaryen-91/test/passes/translate-to-fuzz_all-features_metrics_noprint.txt binaryen-99/test/passes/translate-to-fuzz_all-features_metrics_noprint.txt --- binaryen-91/test/passes/translate-to-fuzz_all-features_metrics_noprint.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/translate-to-fuzz_all-features_metrics_noprint.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,42 @@ +total + [events] : 1 + [exports] : 3 + [funcs] : 2 + [globals] : 6 + [imports] : 6 + [memory-data] : 22 + [table-data] : 0 + [total] : 592 + [vars] : 1 + atomic.cmpxchg : 1 + atomic.fence : 3 + binary : 58 + block : 84 + break : 26 + call : 4 + call_ref : 1 + const : 149 + data.drop : 1 + drop : 3 + global.get : 29 + global.set : 17 + i31.get : 2 + i31.new : 7 + if : 35 + load : 15 + local.get : 10 + local.set : 14 + loop : 13 + memory.init : 1 + nop : 36 + ref.eq : 2 + ref.func : 2 + ref.is_null : 3 + ref.null : 8 + return : 14 + select : 2 + simd_extract : 2 + store : 8 + tuple.extract : 5 + tuple.make : 4 + unary : 33 diff -Nru binaryen-91/test/passes/translate-to-fuzz_all-features_metrics_noprint.wast binaryen-99/test/passes/translate-to-fuzz_all-features_metrics_noprint.wast --- binaryen-91/test/passes/translate-to-fuzz_all-features_metrics_noprint.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/passes/translate-to-fuzz_all-features_metrics_noprint.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,101 @@ +(module # fake module here, for test harness, but it is really not needed +.. +any +3INPUT +h e r e +*will* +d0 +0.753538467597066 +2.2339337309978227 +................. +lorem ipsum whatever + +through the darkness of future past +the magician longs to see +one [chants|chance] out between two worlds +fire, walk with me + + +h e r e +*will* +d0 +0.753538467597066 +2.2339337309978227 +................. +lorem ipsum whatever + +through the darkness of future past +the magician longs to see +one [chants|chance] out between two worlds +fire, walk with me + + +(&!*^@$*&@!^*&@#^$*&@#$*&@#$^*&@^#$)(&)(!&$(*&^@&#*$ + +MOAR testing09237861235980723894570389yfskdjhgfm13jo847rtnjcsjjdhfgnc12o387456vb1p98364vlaisutfvlKUYASDOV*&Q@$%VOUAYFROVLUKSYDFP(*A^*&%DFASF________ +<>?><>?>>?<>??>DS?><>?>>?<>??>DS?><>?>>?<>??>DS_i32_v128_f64_v128 (func (result i32 v128 f64 v128))) (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_i64 (func (result i64))) (type $i32_=>_none (func (param i32))) (type $i64_=>_none (func (param i64))) + (type $i64_i32_=>_none (func (param i64 i32))) (type $f32_=>_none (func (param f32))) (type $f64_=>_none (func (param f64))) - (type $f64_exnref_=>_none (func (param f64 exnref))) (type $v128_=>_none (func (param v128))) - (type $anyref_i64_i32_f32_nullref_exnref_=>_none (func (param anyref i64 i32 f32 nullref exnref))) - (type $nullref_=>_none (func (param nullref))) (type $exnref_=>_none (func (param exnref))) - (type $exnref_f32_v128_i32_funcref_=>_none (func (param exnref f32 v128 i32 funcref))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $f32_=>_i64 (func (param f32) (result i64))) - (type $none_=>_f32 (func (result f32))) - (type $none_=>_funcref (func (result funcref))) - (type $v128_anyref_i32_i32_=>_funcref (func (param v128 anyref i32 i32) (result funcref))) - (type $f64_i32_i64_f64_f32_=>_anyref (func (param f64 i32 i64 f64 f32) (result anyref))) - (type $nullref_=>_anyref (func (param nullref) (result anyref))) - (type $i32_exnref_exnref_v128_v128_v128_=>_nullref (func (param i32 exnref exnref v128 v128 v128) (result nullref))) - (type $f32_v128_v128_f32_=>_nullref (func (param f32 v128 v128 f32) (result nullref))) - (type $v128_=>_nullref (func (param v128) (result nullref))) + (type $none_=>_i32 (func (result i32))) (import "fuzzing-support" "log-i32" (func $log-i32 (param i32))) (import "fuzzing-support" "log-i64" (func $log-i64 (param i64))) (import "fuzzing-support" "log-f32" (func $log-f32 (param f32))) (import "fuzzing-support" "log-f64" (func $log-f64 (param f64))) (import "fuzzing-support" "log-v128" (func $log-v128 (param v128))) - (import "fuzzing-support" "log-nullref" (func $log-nullref (param nullref))) (import "fuzzing-support" "log-exnref" (func $log-exnref (param exnref))) - (memory $0 1 1) + (memory $0 (shared 16 17)) (data (i32.const 0) "N\0fN\f5\f9\b1\ff\fa\eb\e5\fe\a7\ec\fb\fc\f4\a6\e4\ea\f0\ae\e3") - (table $0 10 10 funcref) - (elem (i32.const 0) $func_8 $func_13 $func_13 $func_13 $func_14 $func_15 $func_17 $func_23 $func_23 $func_31) - (global $global$0 (mut i32) (i32.const 975663930)) - (global $global$1 (mut i32) (i32.const 2066300474)) - (global $global$2 (mut i64) (i64.const 20510)) - (global $global$3 (mut f32) (f32.const -2147483648)) - (global $global$4 (mut v128) (v128.const i32x4 0x7f002833 0x580000fe 0x59750500 0x01ff002f)) - (global $global$5 (mut funcref) (ref.null)) - (global $global$6 (mut anyref) (ref.null)) - (global $global$7 (mut nullref) (ref.null)) - (global $global$8 (mut nullref) (ref.null)) + (table $0 0 funcref) + (global $global$ (mut eqref) (ref.null eq)) + (global $global$_0 (mut externref) (ref.null extern)) + (global $global$_1 (mut v128) (v128.const i32x4 0xfffffff9 0x06071c48 0x3f800000 0xc3800ae1)) + (global $global$_2 (mut eqref) (ref.null eq)) + (global $global$_3 (mut f64) (f64.const 0)) (global $hangLimit (mut i32) (i32.const 10)) - (event $event$0 (attr 0) (param f64 exnref)) - (event $event$1 (attr 0) (param exnref f32 v128 i32 funcref)) + (event $event$ (attr 0) (param i64 i32)) (export "hashMemory" (func $hashMemory)) (export "memory" (memory $0)) - (export "func_8" (func $func_8)) - (export "func_9_invoker" (func $func_9_invoker)) - (export "func_11_invoker" (func $func_11_invoker)) - (export "func_13" (func $func_13)) - (export "func_15_invoker" (func $func_15_invoker)) - (export "func_17_invoker" (func $func_17_invoker)) - (export "func_19_invoker" (func $func_19_invoker)) - (export "func_23_invoker" (func $func_23_invoker)) - (export "func_25_invoker" (func $func_25_invoker)) - (export "func_27_invoker" (func $func_27_invoker)) - (export "func_29_invoker" (func $func_29_invoker)) - (export "func_31" (func $func_31)) - (export "func_31_invoker" (func $func_31_invoker)) - (export "func_34" (func $func_34)) - (export "func_34_invoker" (func $func_34_invoker)) (export "hangLimitInitializer" (func $hangLimitInitializer)) - (func $hashMemory (; 7 ;) (result i32) + (func $hashMemory (result i32) (local $0 i32) - (local.set $0 - (i32.const 5381) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) - (i32.const 5) - ) - (local.get $0) + (block + (if + (i32.eqz + (global.get $hangLimit) ) - (i32.load8_u - (i32.const 0) + (return + (i32.const 64) ) ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) - (i32.const 5) - ) - (local.get $0) - ) - (i32.load8_u offset=1 - (i32.const 0) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) ) ) ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) - (i32.const 5) + (block (result i32) + (local.set $0 + (i32.const 5381) + ) + (local.set $0 + (i32.const 1140933654) + ) + (local.set $0 + (i32.xor + (i32.add + (i32.shl + (local.get $0) + (i32.const 5) + ) + (i32.const -127) ) - (local.get $0) - ) - (i32.load8_u offset=2 - (i32.const 0) - ) - ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) - (i32.const 5) + (i32.load8_u offset=1 + (i32.const 0) ) - (local.get $0) - ) - (i32.load8_u offset=3 - (i32.const 0) ) ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) - (i32.const 5) + (local.set $0 + (i32.xor + (i32.add + (i32.shl + (i32.const 303045650) + (i32.const 5) + ) + (i32.shl + (ref.eq + (i31.new + (i32.const -65535) + ) + (tuple.extract 2 + (tuple.make + (f64.const 274877906944) + (i31.new + (i32.const -134217728) + ) + (ref.null eq) + ) + ) + ) + (i32.const 5) + ) + ) + (i32.load8_u offset=2 + (i32.const 0) ) - (local.get $0) - ) - (i32.load8_u offset=4 - (i32.const 0) ) ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl + (nop) + (local.set $0 + (i32.xor + (i32.add + (loop $label$1 (result i32) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const 4878) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (block $label$2 (result i32) + (drop + (f64.const 3402823466385288598117041e14) + ) + (loop $label$6 + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const -13) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (block + (block $label$7 + (nop) + (if + (block $label$8 + (nop) + (br $label$1) + ) + (block $label$9 + (f64.store offset=2 align=2 + (i32.and + (i32.const 118163717) + (i32.const 15) + ) + (if (result f64) + (call $hashMemory) + (block $label$10 (result f64) + (memory.copy + (i32.const -129) + (i32.and + (i32.const 1195786829) + (i32.const 15) + ) + (i32.const -8) + ) + (f64.const -562949953421312.2) + ) + (block $label$11 + (nop) + (br $label$7) + ) + ) + ) + (if + (i32.eqz + (i32.atomic.load + (i32.and + (i32.const 65535) + (i32.const 15) + ) + ) + ) + (block $label$12 + (nop) + (nop) + ) + (block $label$13 + (br_if $label$7 + (i32.const 10539) + ) + (loop $label$14 + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const 1495078923) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (atomic.fence) + ) + ) + ) + ) + (nop) + ) + ) + (br_if $label$6 + (i32.const -50) + ) + (loop $label$15 + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const -96) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (block $label$16 + (if + (i32.eqz + (br_if $label$2 + (i8x16.extract_lane_s 2 + (f64x2.gt + (v128.const i32x4 0xffffffc0 0xffffffff 0x60631d62 0x630f6218) + (if (result v128) + (i32.eqz + (f32.ne + (block $label$18 + (nop) + (br $label$15) + ) + (f32.const -nan:0x7fff8a) + ) + ) + (block $label$19 (result v128) + (nop) + (v128.const i32x4 0x00000000 0x38100000 0x00000000 0x40d89880) + ) + (block $label$20 + (if + (i32.atomic.rmw8.cmpxchg_u offset=4 + (i32.and + (i32.const 2) + (i32.const 15) + ) + (i32.const 65525) + (br_if $label$2 + (i32.const -33554432) + (i64.lt_u + (i64.const -65536) + (i64.const 6663) + ) + ) + ) + (block $label$21 + (br_if $label$21 + (i32.eqz + (i32.const 65535) + ) + ) + (nop) + ) + (block $label$22 + (v128.store offset=4 + (i32.and + (i32.const 55) + (i32.const 15) + ) + (v128.const i32x4 0xfffffe00 0x7fffffff 0x00005b34 0x00000039) + ) + (nop) + ) + ) + (br $label$16) + ) + ) + ) + ) + (i32.eqz + (i32.const 85459227) + ) + ) + ) + (block $label$23 + (block $label$24 + (block $label$25 + (nop) + (nop) + ) + (nop) + ) + (nop) + ) + (block $label$26 + (if + (br_if $label$2 + (i32.const 1091126348) + (i32.const 1276841216) + ) + (br_if $label$26 + (i32.eqz + (tuple.extract 0 + (if (result i32 v128 f64 v128) + (i32.load8_u offset=3 + (i32.and + (f64.ge + (block $label$27 (result f64) + (nop) + (f64.const 41) + ) + (f64x2.extract_lane 0 + (v128.const i32x4 0xffffc000 0x00000007 0x00000001 0x473f2147) + ) + ) + (i32.const 15) + ) + ) + (block $label$28 (result i32 v128 f64 v128) + (tuple.make + (i32.const 67308125) + (v128.const i32x4 0xff00011d 0x0601e545 0x7f0e14ff 0x00b1f843) + (f64.const 1314148947) + (v128.const i32x4 0x0000003a 0x42d00000 0x00000000 0x40280000) + ) + ) + (block $label$29 (result i32 v128 f64 v128) + (br_if $label$15 + (i32.eqz + (br_if $label$2 + (i32.const -8192) + (i32.eqz + (i32.const -2) + ) + ) + ) + ) + (tuple.make + (i32.const 65534) + (v128.const i32x4 0x41530000 0x008045b2 0x01ff7f00 0xff2d8349) + (f64.const 1797693134862315708145274e284) + (v128.const i32x4 0xffbc630d 0xffb6ffbb 0x00015658 0xffb4ffff) + ) + ) + ) + ) + ) + ) + (block $label$30 + (if + (loop $label$31 (result i32) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const 1578633994) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (block $label$32 (result i32) + (block $label$33 + (if + (i32.eqz + (i32.atomic.rmw.and offset=4 + (i32.const -2147483648) + (block $label$34 + (loop $label$35 + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const 403574365) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (block + (nop) + (br_if $label$35 + (i32.const -65536) + ) + (nop) + ) + ) + (br $label$1) + ) + ) + ) + (block $label$36 + (nop) + (br_if $label$16 + (i32.const 2136) + ) + ) + (block $label$37 + (nop) + (nop) + ) + ) + (atomic.fence) + ) + (f32.lt + (f32.const 2147483648) + (f32.const 2147483648) + ) + ) + ) + (block $label$40 + (i32.atomic.store16 offset=2 + (i32.and + (i31.get_s + (loop $label$41 + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const -2) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (block $label$42 + (loop $label$43 + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const -13) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (block $label$44 + (nop) + (nop) + ) + ) + (block $label$45 + (nop) + (br $label$16) + ) + ) + ) + ) + (i32.const 15) + ) + (block $label$46 + (nop) + (ref.is_null + (if + (i32.eqz + (if (result i32) + (i32.eqz + (block $label$47 + (nop) + (br $label$16) + ) + ) + (i32.const -4194304) + (i32.const 5140) + ) + ) + (block $label$48 + (block $label$49 + (nop) + (br_if $label$15 + (i32.eqz + (loop $label$50 (result i32) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const 112) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (block (result i32) + (nop) + (br_if $label$50 + (i32.eqz + (i32.const 3) + ) + ) + (i31.get_s + (i31.new + (i32.const 4095) + ) + ) + ) + ) + ) + ) + ) + (br $label$40) + ) + (block $label$51 + (drop + (ref.null exn) + ) + (br $label$16) + ) + ) + ) + ) + ) + ) + (block $label$52 + (loop $label$53 + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const 7506) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (block + (nop) + (br_if $label$53 + (loop $label$54 (result i32) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const 50922251) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (i32.const 6912) + ) + ) + (br_if $label$6 + (br_if $label$2 + (call $hashMemory) + (loop $label$55 (result i32) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const 319820056) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (i32.const 2147483647) + ) + ) + ) + ) + ) + (memory.copy + (i32.and + (i32.atomic.load offset=3 + (i32.and + (loop $label$56 (result i32) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const -2147483648) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (loop $label$57 (result i32) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const 262143) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (block (result i32) + (block $label$58 + (if + (i32.eqz + (i32.const 775321902) + ) + (nop) + (if + (i32.eqz + (i32.const -18) + ) + (nop) + (nop) + ) + ) + (nop) + ) + (br_if $label$57 + (i32.const 4194304) + ) + (f32.le + (f32.const 18446744073709551615) + (f32.const -nan:0x7fff87) + ) + ) + ) + ) + (i32.const 15) + ) + ) + (i32.const 15) + ) + (i32.and + (block $label$59 (result i32) + (loop $label$60 + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const -32768) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (block + (block $label$61 + (drop + (i31.new + (i32.const -8192) + ) + ) + (nop) + ) + (br_if $label$60 + (i32.eqz + (loop $label$62 (result i32) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const 7) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (block $label$63 (result i32) + (nop) + (i32.const 65521) + ) + ) + ) + ) + (memory.fill + (i32.trunc_f32_u + (f32.const 256) + ) + (i64.eq + (i64.const 256) + (i64.const -16384) + ) + (i32.const 387455770) + ) + ) + ) + (i32.const 4627) + ) + (i32.const 15) + ) + (i32.load8_s offset=3 + (i32.and + (br_if $label$2 + (loop $label$64 (result i32) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const -96) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (block (result i32) + (block $label$65 + (loop $label$66 + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const 65518) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (nop) + ) + (nop) + ) + (br_if $label$64 + (tuple.extract 1 + (tuple.make + (v128.const i32x4 0x0606ff82 0xfffe0000 0x04052000 0xfffe0000) + (i32.const 1529028702) + ) + ) + ) + (loop $label$67 (result i32) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const -1073741825) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (i32.const 128) + ) + ) + ) + (i32.eqz + (ref.is_null + (select (result anyref) + (ref.null eq) + (ref.null extern) + (i32.const 129) + ) + ) + ) + ) + (i32.const 15) + ) + ) + ) + ) + ) + (nop) + ) + ) + (block $label$68 + (nop) + (nop) + ) + ) + ) + (nop) + ) + ) + ) + ) + (if (result i32) + (block $label$69 (result i32) + (if + (if (result i32) + (br_if $label$2 + (loop $label$71 (result i32) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const 15) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (block (result i32) + (block $label$72 + (br_if $label$72 + (i32.const -1) + ) + (nop) + ) + (br_if $label$71 + (i32.eqz + (i32.const -2147483648) + ) + ) + (if (result i32) + (i32.eqz + (i32.const -32766) + ) + (block $label$73 (result i32) + (br_if $label$71 + (i32.eqz + (tuple.extract 1 + (block $label$74 + (nop) + (br $label$1) + ) + ) + ) + ) + (ref.is_null + (global.get $global$_0) + ) + ) + (i32x4.all_true + (v128.const i32x4 0x3c800c01 0x193fff27 0x52a20001 0x970000ff) + ) + ) + ) + ) + (i32.eqz + (loop $label$70 (result i32) + (block + (if + (i32.eqz + (global.get $hangLimit) + ) + (return + (i32.const 1048576) + ) + ) + (global.set $hangLimit + (i32.sub + (global.get $hangLimit) + (i32.const 1) + ) + ) + ) + (i32.const 256) + ) + ) + ) + (i32.atomic.load8_u offset=22 + (i32.const 858607703) + ) + (block $label$75 (result i32) + (nop) + (br_if $label$75 + (i32.const 7) + (i31.get_s + (tuple.extract 0 + (tuple.make + (i31.new + (i32.const 219815443) + ) + (v128.const i32x4 0x00000001 0x151b1e13 0x00000001 0x1a5f0000) + ) + ) + ) + ) + ) + ) + (block $label$76 + (nop) + ) + (nop) + ) + (i32.const 2097152) + ) + (i32.const -84) + (block $label$77 (result i32) + (i32.const -16) + ) + ) + ) + ) (local.get $0) - (i32.const 5) ) - (local.get $0) - ) - (i32.load8_u offset=5 - (i32.const 0) + (i32.load8_u offset=4 + (i32.const 0) + ) ) ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl + (local.set $0 + (i32.xor + (i32.add + (i32.shl + (local.get $0) + (i32.const 5) + ) (local.get $0) - (i32.const 5) ) - (local.get $0) - ) - (i32.load8_u offset=6 - (i32.const 0) + (i32.load8_u offset=5 + (i32.const 0) + ) ) ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl + (local.set $0 + (i32.xor + (i32.add + (i32.shl + (local.get $0) + (i32.const 5) + ) (local.get $0) - (i32.const 5) ) - (local.get $0) - ) - (i32.load8_u offset=7 - (i32.const 0) + (i32.const 6506) ) ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl + (nop) + (local.set $0 + (i32.xor + (i32.add + (i32.shl + (local.get $0) + (i32.const 5) + ) (local.get $0) - (i32.const 5) ) - (local.get $0) - ) - (i32.load8_u offset=8 - (i32.const 0) + (i32.load8_u offset=6 + (i32.const 0) + ) ) ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) - (i32.const 5) + (local.set $0 + (i32.xor + (i32.add + (i32.shl + (i32.const 1633371484) + (i32.const 5) + ) + (i32.xor + (i32.add + (i32.shl + (local.get $0) + (i32.const 5) + ) + (local.get $0) + ) + (i32.load8_u offset=8 + (i32.const 0) + ) + ) + ) + (i32.load8_u offset=9 + (i32.const 0) ) - (local.get $0) - ) - (i32.load8_u offset=9 - (i32.const 0) ) ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl + (local.set $0 + (i32.xor + (i32.add + (i32.shl + (local.get $0) + (i32.const 5) + ) (local.get $0) - (i32.const 5) ) - (local.get $0) - ) - (i32.load8_u offset=10 - (i32.const 0) + (i32.load8_u offset=10 + (i32.const 0) + ) ) ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) - (i32.const 5) + (local.set $0 + (i32.xor + (i32.const 1937132399) + (i32.load8_u offset=11 + (i32.const 0) ) - (local.get $0) - ) - (i32.load8_u offset=11 - (i32.const 0) ) ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl + (local.set $0 + (i32.xor + (i32.add + (i32.shl + (i32.const -85) + (i32.const 5) + ) (local.get $0) - (i32.const 5) ) - (local.get $0) - ) - (i32.load8_u offset=12 - (i32.const 0) - ) - ) - ) - (local.set $0 - (i32.xor - (i32.add (i32.shl (local.get $0) (i32.const 5) ) - (local.get $0) - ) - (i32.load8_u offset=13 - (i32.const 0) ) ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl + (local.set $0 + (i32.xor + (i32.add + (i32.shl + (local.get $0) + (i32.const 5) + ) (local.get $0) - (i32.const 5) ) - (local.get $0) - ) - (i32.load8_u offset=14 - (i32.const 0) + (i32.load8_u offset=13 + (i32.const 0) + ) ) ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) + (local.set $0 + (i32.xor + (i32.add (i32.const 5) + (local.get $0) + ) + (i32.load8_u offset=14 + (i32.const 0) ) - (local.get $0) - ) - (i32.load8_u offset=15 - (i32.const 0) - ) - ) - ) - (local.get $0) - ) - (func $func_8 (; 8 ;) - (local $0 v128) - (local $1 exnref) - (local $2 f64) - (local $3 f32) - (local $4 i64) - (local $5 funcref) - (local $6 v128) - (local $7 funcref) - (local $8 i64) - (local $9 funcref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) ) ) - ) - (block $label$0 - (nop) - (local.set $9 - (local.tee $7 - (local.tee $7 - (local.tee $9 - (local.tee $5 - (local.tee $7 - (local.get $9) - ) - ) + (local.set $0 + (i32.xor + (i32.add + (i32.shl + (local.get $0) + (i32.const 5) ) + (local.get $0) ) - ) - ) - ) - ) - (func $func_9 (; 9 ;) (param $0 anyref) (param $1 i64) (param $2 i32) (param $3 f32) (param $4 nullref) (param $5 exnref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (call $log-exnref - (block $label$0 - (call $log-f64 - (f64.const 27) - ) - (return) - ) - ) - ) - (func $func_9_invoker (; 10 ;) - (call $func_9 - (ref.null) - (i64.const -114) - (i32.const -1) - (f32.const -nan:0x7ffff0) - (ref.null) - (ref.null) - ) - (call $func_9 - (ref.null) - (i64.const -128) - (i32.const 2147483647) - (f32.const 2305843009213693952) - (ref.null) - (ref.null) - ) - (call $func_9 - (ref.null) - (i64.const -84) - (i32.const -77) - (f32.const 65463) - (ref.null) - (ref.null) - ) - (call $log-i32 - (call $hashMemory) - ) - ) - (func $func_11 (; 11 ;) (param $0 f32) (param $1 v128) (param $2 v128) (param $3 f32) (result nullref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (ref.null) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (ref.null) - ) - (func $func_11_invoker (; 12 ;) - (drop - (call $func_11 - (f32.const -4) - (v128.const i32x4 0xffffffe8 0x00000a12 0x00000002 0xffffff80) - (v128.const i32x4 0x00000000 0x00000001 0x00000000 0x40000000) - (f32.const 4503599627370496) - ) - ) - (drop - (call $func_11 - (f32.const 2.7426516613360263e-09) - (v128.const i32x4 0x0d080315 0x00001811 0xfffffc00 0x0000007f) - (v128.const i32x4 0x0000187f 0x042c50ee 0x005c171b 0x001a1b1a) - (f32.const -nan:0x7ffff0) - ) - ) - ) - (func $func_13 (; 13 ;) (result i64) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (i64.const 114) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (i64.const 9093677305969276536) - ) - (func $func_14 (; 14 ;) (result i64) - (local $0 i64) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (local.get $0) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (block $label$0 - (nop) - (return - (i64.const 302456592) - ) - ) - ) - (func $func_15 (; 15 ;) (param $0 v128) (param $1 anyref) (param $2 i32) (param $3 i32) (result funcref) - (local $4 funcref) - (local $5 f64) - (local $6 i32) - (local $7 i64) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (local.get $4) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (block $label$0 - (call $log-exnref - (ref.null) - ) - (return - (local.get $4) - ) - ) - ) - (func $func_15_invoker (; 16 ;) - (drop - (call $func_15 - (v128.const i32x4 0x00080000 0x1a180e76 0x3a25515d 0xffff8001) - (ref.null) - (i32.const 202116108) - (i32.const 151587164) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - ) - (func $func_17 (; 17 ;) (result i32) - (local $0 i64) - (local $1 v128) - (local $2 v128) - (local $3 f32) - (local $4 funcref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (i32.const 332) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (block $label$0 - (loop $label$1 - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (i32.const -128) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (block $label$2 - (nop) - (nop) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - (return - (i32.const 84215045) - ) - ) - ) - (func $func_17_invoker (; 18 ;) - (drop - (call $func_17) - ) - ) - (func $func_19 (; 19 ;) (param $0 i64) (result i32) - (local $1 f32) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (i32.const 2) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (i32.const 65536) - ) - (func $func_19_invoker (; 20 ;) - (drop - (call $func_19 - (i64.const 129) - ) - ) - (drop - (call $func_19 - (i64.const 562949953421312) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - (drop - (call $func_19 - (i64.const -32767) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - ) - (func $func_21 (; 21 ;) (result i32) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (i32.const 90) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (block $label$0 - (nop) - (return - (i32.const 7446) - ) - ) - ) - (func $func_22 (; 22 ;) (result f32) - (local $0 i64) - (local $1 exnref) - (local $2 funcref) - (local $3 i64) - (local $4 anyref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (f32.const 21554) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (block $label$0 - (return - (f32.const -1.1754943508222875e-38) - ) - ) - ) - (func $func_23 (; 23 ;) (param $0 nullref) (result anyref) - (local $1 exnref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (ref.null) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (block $label$0 (result nullref) - (nop) - (loop $label$2 (result nullref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (ref.null) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (loop $label$3 (result nullref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (ref.null) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (block (result nullref) - (call $log-i32 - (call $hashMemory) - ) - (br_if $label$3 - (i32.const 12) - ) - (ref.null) - ) - ) - ) - ) - ) - (func $func_23_invoker (; 24 ;) - (drop - (call $func_23 - (ref.null) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - (drop - (call $func_23 - (ref.null) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - (drop - (call $func_23 - (ref.null) - ) - ) - ) - (func $func_25 (; 25 ;) (param $0 f32) (result i64) - (local $1 i32) - (local $2 f64) - (local $3 funcref) - (local $4 i32) - (local $5 f32) - (local $6 anyref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (i64.const -9223372036854775808) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (i64.const -16) - ) - (func $func_25_invoker (; 26 ;) - (drop - (call $func_25 - (f32.const 30) - ) - ) - (drop - (call $func_25 - (f32.const 17179869184) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - (drop - (call $func_25 - (f32.const 2147483648) - ) - ) - (drop - (call $func_25 - (f32.const -nan:0x7fffc1) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - (drop - (call $func_25 - (f32.const 9223372036854775808) - ) - ) - (drop - (call $func_25 - (f32.const 0) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - (drop - (call $func_25 - (f32.const 8760) - ) - ) - ) - (func $func_27 (; 27 ;) (param $0 i32) (param $1 exnref) (param $2 exnref) (param $3 v128) (param $4 v128) (param $5 v128) (result nullref) - (local $6 f32) - (local $7 v128) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (ref.null) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (block $label$0 - (call $log-i64 - (i64.const 84) - ) - (return - (ref.null) - ) - ) - ) - (func $func_27_invoker (; 28 ;) - (drop - (call $func_27 - (i32.const -69) - (ref.null) - (ref.null) - (v128.const i32x4 0x00000000 0x40800800 0x00000000 0x42200000) - (v128.const i32x4 0x00800000 0x42dc0000 0x40000000 0xcf000000) - (v128.const i32x4 0x00000000 0x41e00000 0x00000000 0x38100000) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - ) - (func $func_29 (; 29 ;) (result i32) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (i32.const 7) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (i32.const -18) - ) - (func $func_29_invoker (; 30 ;) - (drop - (call $func_29) - ) - ) - (func $func_31 (; 31 ;) (param $0 v128) (result nullref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (ref.null) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (if - (i32.load8_s offset=22 - (i32.and - (i32.const 774514976) - (i32.const 15) - ) - ) - (select - (block $label$0 - (block $label$1 - (block $label$5 - (call $log-i32 - (call $hashMemory) - ) - (return - (ref.null) - ) - ) - ) - ) - (return_call $func_31 - (local.tee $0 - (v128.const i32x4 0x00000000 0xc3e00000 0x00000000 0x40b70500) - ) - ) - (i32.const 0) - ) - (block $label$3 - (nop) - (block $label$4 - (call $log-f32 - (f32.const -1152921504606846976) - ) - (return_call $func_31 - (v128.const i32x4 0x08000000 0x00000000 0xffff8000 0xffffffff) - ) - ) - ) - ) - ) - (func $func_31_invoker (; 32 ;) - (drop - (call $func_31 - (v128.const i32x4 0x00080000 0x00000081 0xffffffad 0x00000001) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - ) - (func $func_33 (; 33 ;) - (local $0 i32) - (local $1 f64) - (local $2 i64) - (local $3 f64) - (local $4 i64) - (local $5 anyref) - (local $6 i32) - (local $7 v128) - (local $8 i32) - (local $9 f64) - (local $10 f64) - (local $11 nullref) - (local $12 v128) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (local.set $11 - (ref.null) - ) - ) - (func $func_34 (; 34 ;) (param $0 f64) (param $1 i32) (param $2 i64) (param $3 f64) (param $4 f32) (result anyref) - (local $5 funcref) - (local $6 f32) - (local $7 funcref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (ref.null) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (ref.null) - ) - (func $func_34_invoker (; 35 ;) - (drop - (call $func_34 - (f64.const -2.2250738585072014e-308) - (i32.const 1679427100) - (i64.const 5402) - (f64.const -1.1754943508222875e-38) - (f32.const 16384) - ) - ) - (drop - (call $func_34 - (f64.const 4294967296) - (i32.const 0) - (i64.const 19531) - (f64.const 1256914182047749521306957e208) - (f32.const 470816288) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - ) - (func $func_36 (; 36 ;) (result funcref) - (local $0 nullref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (ref.null) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (block $label$0 (result funcref) - (call $log-f32 - (block $label$1 - (call $log-i32 - (call $hashMemory) - ) - (return - (ref.func $func_15_invoker) - ) - ) - ) - (loop $label$2 (result funcref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (ref.func $func_27_invoker) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (block (result funcref) - (block $label$3 - (br_if $label$2 - (i32.const 11) - ) - (nop) - ) - (br_if $label$2 - (i32.eqz - (i32.const -119) - ) - ) - (block (result funcref) - (nop) - (br_if $label$2 - (i32.eqz - (i32.const -119) - ) - ) - (ref.func $func_34_invoker) + (i32.load8_u offset=12 + (i32.const 0) ) ) ) + (local.get $0) ) ) - (func $hangLimitInitializer (; 37 ;) + (func $hangLimitInitializer (global.set $hangLimit (i32.const 10) ) diff -Nru binaryen-91/test/passes/translate-to-fuzz_all-features.wast binaryen-99/test/passes/translate-to-fuzz_all-features.wast --- binaryen-91/test/passes/translate-to-fuzz_all-features.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/translate-to-fuzz_all-features.wast 1970-01-01 00:00:00.000000000 +0000 @@ -1,101 +0,0 @@ -(module # fake module here, for test harness, but it is really not needed -.. -any -3INPUT -h e r e -*will* -d0 -0.753538467597066 -2.2339337309978227 -................. -lorem ipsum whatever - -through the darkness of future past -the magician longs to see -one [chants|chance] out between two worlds -fire, walk with me - - -h e r e -*will* -d0 -0.753538467597066 -2.2339337309978227 -................. -lorem ipsum whatever - -through the darkness of future past -the magician longs to see -one [chants|chance] out between two worlds -fire, walk with me - - -(&!*^@$*&@!^*&@#^$*&@#$*&@#$^*&@^#$)(&)(!&$(*&^@&#*$ - -MOAR testing09237861235980723894570389yfskdjhgfm13jo847rtnjcsjjdhfgnc12o387456vb1p98364vlaisutfvlKUYASDOV*&Q@$%VOUAYFROVLUKSYDFP(*A^*&%DFASF________ -<>?><>?>>?<>??>DS?><>?>>?<>??>DS?><>?>>?<>??>DS_none (func)) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_i64 (func (result i64))) - (type $i32_=>_none (func (param i32))) - (type $i64_=>_none (func (param i64))) - (type $f32_=>_none (func (param f32))) - (type $f64_=>_none (func (param f64))) - (type $f64_exnref_=>_none (func (param f64 exnref))) - (type $v128_=>_none (func (param v128))) - (type $anyref_i64_i32_f32_nullref_exnref_=>_none (func (param anyref i64 i32 f32 nullref exnref))) - (type $nullref_=>_none (func (param nullref))) - (type $exnref_=>_none (func (param exnref))) - (type $exnref_f32_v128_i32_funcref_=>_none (func (param exnref f32 v128 i32 funcref))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $f32_=>_i64 (func (param f32) (result i64))) - (type $none_=>_f32 (func (result f32))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (type $f64_=>_f64 (func (param f64) (result f64))) - (type $none_=>_funcref (func (result funcref))) - (type $v128_anyref_i32_i32_=>_funcref (func (param v128 anyref i32 i32) (result funcref))) - (type $f64_i32_i64_f64_f32_=>_anyref (func (param f64 i32 i64 f64 f32) (result anyref))) - (type $nullref_=>_anyref (func (param nullref) (result anyref))) - (type $i32_exnref_exnref_v128_v128_v128_=>_nullref (func (param i32 exnref exnref v128 v128 v128) (result nullref))) - (type $f32_v128_v128_f32_=>_nullref (func (param f32 v128 v128 f32) (result nullref))) - (type $v128_=>_nullref (func (param v128) (result nullref))) - (import "fuzzing-support" "log-i32" (func $log-i32 (param i32))) - (import "fuzzing-support" "log-i64" (func $log-i64 (param i64))) - (import "fuzzing-support" "log-f32" (func $log-f32 (param f32))) - (import "fuzzing-support" "log-f64" (func $log-f64 (param f64))) - (import "fuzzing-support" "log-v128" (func $log-v128 (param v128))) - (import "fuzzing-support" "log-nullref" (func $log-nullref (param nullref))) - (import "fuzzing-support" "log-exnref" (func $log-exnref (param exnref))) - (memory $0 1 1) - (data (i32.const 0) "N\0fN\f5\f9\b1\ff\fa\eb\e5\fe\a7\ec\fb\fc\f4\a6\e4\ea\f0\ae\e3") - (table $0 10 10 funcref) - (elem (i32.const 0) $func_8 $func_13 $func_13 $func_13 $func_14 $func_15 $func_17 $func_23 $func_23 $func_31) - (global $global$0 (mut i32) (i32.const 975663930)) - (global $global$1 (mut i32) (i32.const 2066300474)) - (global $global$2 (mut i64) (i64.const 20510)) - (global $global$3 (mut f32) (f32.const -2147483648)) - (global $global$4 (mut v128) (v128.const i32x4 0x7f002833 0x580000fe 0x59750500 0x01ff002f)) - (global $global$5 (mut funcref) (ref.null)) - (global $global$6 (mut anyref) (ref.null)) - (global $global$7 (mut nullref) (ref.null)) - (global $global$8 (mut nullref) (ref.null)) - (global $hangLimit (mut i32) (i32.const 10)) - (event $event$0 (attr 0) (param f64 exnref)) - (event $event$1 (attr 0) (param exnref f32 v128 i32 funcref)) - (export "hashMemory" (func $hashMemory)) - (export "memory" (memory $0)) - (export "func_8" (func $func_8)) - (export "func_9_invoker" (func $func_9_invoker)) - (export "func_11_invoker" (func $func_11_invoker)) - (export "func_13" (func $func_13)) - (export "func_15_invoker" (func $func_15_invoker)) - (export "func_17_invoker" (func $func_17_invoker)) - (export "func_19_invoker" (func $func_19_invoker)) - (export "func_23_invoker" (func $func_23_invoker)) - (export "func_25_invoker" (func $func_25_invoker)) - (export "func_27_invoker" (func $func_27_invoker)) - (export "func_29_invoker" (func $func_29_invoker)) - (export "func_31" (func $func_31)) - (export "func_31_invoker" (func $func_31_invoker)) - (export "func_34" (func $func_34)) - (export "func_34_invoker" (func $func_34_invoker)) - (export "func_36" (func $func_36)) - (export "hangLimitInitializer" (func $hangLimitInitializer)) - (func $hashMemory (; 7 ;) (result i32) - (local $0 i32) - (local.set $0 - (i32.const 5381) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) - (i32.const 5) - ) - (local.get $0) - ) - (i32.load8_u - (i32.const 0) - ) - ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) - (i32.const 5) - ) - (local.get $0) - ) - (i32.load8_u offset=1 - (i32.const 0) - ) - ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) - (i32.const 5) - ) - (local.get $0) - ) - (i32.load8_u offset=2 - (i32.const 0) - ) - ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) - (i32.const 5) - ) - (local.get $0) - ) - (i32.load8_u offset=3 - (i32.const 0) - ) - ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) - (i32.const 5) - ) - (local.get $0) - ) - (i32.load8_u offset=4 - (i32.const 0) - ) - ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) - (i32.const 5) - ) - (local.get $0) - ) - (i32.load8_u offset=5 - (i32.const 0) - ) - ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) - (i32.const 5) - ) - (local.get $0) - ) - (i32.load8_u offset=6 - (i32.const 0) - ) - ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) - (i32.const 5) - ) - (local.get $0) - ) - (i32.load8_u offset=7 - (i32.const 0) - ) - ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) - (i32.const 5) - ) - (local.get $0) - ) - (i32.load8_u offset=8 - (i32.const 0) - ) - ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) - (i32.const 5) - ) - (local.get $0) - ) - (i32.load8_u offset=9 - (i32.const 0) - ) - ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) - (i32.const 5) - ) - (local.get $0) - ) - (i32.load8_u offset=10 - (i32.const 0) - ) - ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) - (i32.const 5) - ) - (local.get $0) - ) - (i32.load8_u offset=11 - (i32.const 0) - ) - ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) - (i32.const 5) - ) - (local.get $0) - ) - (i32.load8_u offset=12 - (i32.const 0) - ) - ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) - (i32.const 5) - ) - (local.get $0) - ) - (i32.load8_u offset=13 - (i32.const 0) - ) - ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) - (i32.const 5) - ) - (local.get $0) - ) - (i32.load8_u offset=14 - (i32.const 0) - ) - ) - ) - (local.set $0 - (i32.xor - (i32.add - (i32.shl - (local.get $0) - (i32.const 5) - ) - (local.get $0) - ) - (i32.load8_u offset=15 - (i32.const 0) - ) - ) - ) - (local.get $0) - ) - (func $func_8 (; 8 ;) - (local $0 v128) - (local $1 exnref) - (local $2 f64) - (local $3 f32) - (local $4 i64) - (local $5 funcref) - (local $6 v128) - (local $7 funcref) - (local $8 i64) - (local $9 funcref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (block $label$0 - (nop) - (local.set $9 - (local.tee $7 - (local.tee $7 - (local.tee $9 - (local.tee $5 - (local.tee $7 - (local.get $9) - ) - ) - ) - ) - ) - ) - ) - ) - (func $func_9 (; 9 ;) (param $0 anyref) (param $1 i64) (param $2 i32) (param $3 f32) (param $4 nullref) (param $5 exnref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (call $log-exnref - (block $label$0 - (call $log-f64 - (f64.const 27) - ) - (return) - ) - ) - ) - (func $func_9_invoker (; 10 ;) - (call $func_9 - (ref.null) - (i64.const -114) - (i32.const -1) - (f32.const 0) - (ref.null) - (ref.null) - ) - (call $func_9 - (ref.null) - (i64.const -128) - (i32.const 2147483647) - (f32.const 2305843009213693952) - (ref.null) - (ref.null) - ) - (call $func_9 - (ref.null) - (i64.const -84) - (i32.const -77) - (f32.const 65463) - (ref.null) - (ref.null) - ) - (call $log-i32 - (call $hashMemory) - ) - ) - (func $func_11 (; 11 ;) (param $0 f32) (param $1 v128) (param $2 v128) (param $3 f32) (result nullref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (ref.null) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (ref.null) - ) - (func $func_11_invoker (; 12 ;) - (drop - (call $func_11 - (f32.const -4) - (v128.const i32x4 0xffffffe8 0x00000a12 0x00000002 0xffffff80) - (v128.const i32x4 0x00000000 0x00000001 0x00000000 0x40000000) - (f32.const 4503599627370496) - ) - ) - (drop - (call $func_11 - (f32.const 2.7426516613360263e-09) - (v128.const i32x4 0x0d080315 0x00001811 0xfffffc00 0x0000007f) - (v128.const i32x4 0x0000187f 0x042c50ee 0x005c171b 0x001a1b1a) - (f32.const 0) - ) - ) - ) - (func $func_13 (; 13 ;) (result i64) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (i64.const 114) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (i64.const 9093677305969276536) - ) - (func $func_14 (; 14 ;) (result i64) - (local $0 i64) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (local.get $0) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (block $label$0 - (nop) - (return - (i64.const 302456592) - ) - ) - ) - (func $func_15 (; 15 ;) (param $0 v128) (param $1 anyref) (param $2 i32) (param $3 i32) (result funcref) - (local $4 funcref) - (local $5 f64) - (local $6 i32) - (local $7 i64) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (local.get $4) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (block $label$0 - (call $log-exnref - (ref.null) - ) - (return - (local.get $4) - ) - ) - ) - (func $func_15_invoker (; 16 ;) - (drop - (call $func_15 - (v128.const i32x4 0x00080000 0x1a180e76 0x3a25515d 0xffff8001) - (ref.null) - (i32.const 202116108) - (i32.const 151587164) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - ) - (func $func_17 (; 17 ;) (result i32) - (local $0 i64) - (local $1 v128) - (local $2 v128) - (local $3 f32) - (local $4 funcref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (i32.const 332) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (block $label$0 - (loop $label$1 - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (i32.const -128) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (block $label$2 - (nop) - (nop) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - (return - (i32.const 84215045) - ) - ) - ) - (func $func_17_invoker (; 18 ;) - (drop - (call $func_17) - ) - ) - (func $func_19 (; 19 ;) (param $0 i64) (result i32) - (local $1 f32) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (i32.const 2) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (i32.const 65536) - ) - (func $func_19_invoker (; 20 ;) - (drop - (call $func_19 - (i64.const 129) - ) - ) - (drop - (call $func_19 - (i64.const 562949953421312) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - (drop - (call $func_19 - (i64.const -32767) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - ) - (func $func_21 (; 21 ;) (result i32) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (i32.const 90) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (block $label$0 - (nop) - (return - (i32.const 7446) - ) - ) - ) - (func $func_22 (; 22 ;) (result f32) - (local $0 i64) - (local $1 exnref) - (local $2 funcref) - (local $3 i64) - (local $4 anyref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (f32.const 21554) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (block $label$0 - (return - (f32.const -1.1754943508222875e-38) - ) - ) - ) - (func $func_23 (; 23 ;) (param $0 nullref) (result anyref) - (local $1 exnref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (ref.null) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (block $label$0 (result nullref) - (nop) - (loop $label$2 (result nullref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (ref.null) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (loop $label$3 (result nullref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (ref.null) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (block (result nullref) - (call $log-i32 - (call $hashMemory) - ) - (br_if $label$3 - (i32.const 12) - ) - (ref.null) - ) - ) - ) - ) - ) - (func $func_23_invoker (; 24 ;) - (drop - (call $func_23 - (ref.null) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - (drop - (call $func_23 - (ref.null) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - (drop - (call $func_23 - (ref.null) - ) - ) - ) - (func $func_25 (; 25 ;) (param $0 f32) (result i64) - (local $1 i32) - (local $2 f64) - (local $3 funcref) - (local $4 i32) - (local $5 f32) - (local $6 anyref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (i64.const -9223372036854775808) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (i64.const -16) - ) - (func $func_25_invoker (; 26 ;) - (drop - (call $func_25 - (f32.const 30) - ) - ) - (drop - (call $func_25 - (f32.const 17179869184) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - (drop - (call $func_25 - (f32.const 2147483648) - ) - ) - (drop - (call $func_25 - (f32.const 0) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - (drop - (call $func_25 - (f32.const 9223372036854775808) - ) - ) - (drop - (call $func_25 - (f32.const 0) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - (drop - (call $func_25 - (f32.const 8760) - ) - ) - ) - (func $func_27 (; 27 ;) (param $0 i32) (param $1 exnref) (param $2 exnref) (param $3 v128) (param $4 v128) (param $5 v128) (result nullref) - (local $6 f32) - (local $7 v128) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (ref.null) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (block $label$0 - (call $log-i64 - (i64.const 84) - ) - (return - (ref.null) - ) - ) - ) - (func $func_27_invoker (; 28 ;) - (drop - (call $func_27 - (i32.const -69) - (ref.null) - (ref.null) - (v128.const i32x4 0x00000000 0x40800800 0x00000000 0x42200000) - (v128.const i32x4 0x00800000 0x42dc0000 0x40000000 0xcf000000) - (v128.const i32x4 0x00000000 0x41e00000 0x00000000 0x38100000) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - ) - (func $func_29 (; 29 ;) (result i32) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (i32.const 7) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (i32.const -18) - ) - (func $func_29_invoker (; 30 ;) - (drop - (call $func_29) - ) - ) - (func $func_31 (; 31 ;) (param $0 v128) (result nullref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (ref.null) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (if - (i32.load8_s offset=22 - (i32.and - (i32.const 774514976) - (i32.const 15) - ) - ) - (select - (block $label$0 - (block $label$1 - (block $label$5 - (call $log-i32 - (call $hashMemory) - ) - (return - (ref.null) - ) - ) - ) - ) - (return_call $func_31 - (local.tee $0 - (v128.const i32x4 0x00000000 0xc3e00000 0x00000000 0x40b70500) - ) - ) - (i32.const 0) - ) - (block $label$3 - (nop) - (block $label$4 - (call $log-f32 - (f32.const -1152921504606846976) - ) - (return_call $func_31 - (v128.const i32x4 0x08000000 0x00000000 0xffff8000 0xffffffff) - ) - ) - ) - ) - ) - (func $func_31_invoker (; 32 ;) - (drop - (call $func_31 - (v128.const i32x4 0x00080000 0x00000081 0xffffffad 0x00000001) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - ) - (func $func_33 (; 33 ;) - (local $0 i32) - (local $1 f64) - (local $2 i64) - (local $3 f64) - (local $4 i64) - (local $5 anyref) - (local $6 i32) - (local $7 v128) - (local $8 i32) - (local $9 f64) - (local $10 f64) - (local $11 nullref) - (local $12 v128) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (local.set $11 - (ref.null) - ) - ) - (func $func_34 (; 34 ;) (param $0 f64) (param $1 i32) (param $2 i64) (param $3 f64) (param $4 f32) (result anyref) - (local $5 funcref) - (local $6 f32) - (local $7 funcref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (ref.null) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (ref.null) - ) - (func $func_34_invoker (; 35 ;) - (drop - (call $func_34 - (f64.const -2.2250738585072014e-308) - (i32.const 1679427100) - (i64.const 5402) - (f64.const -1.1754943508222875e-38) - (f32.const 16384) - ) - ) - (drop - (call $func_34 - (f64.const 4294967296) - (i32.const 0) - (i64.const 19531) - (f64.const 1256914182047749521306957e208) - (f32.const 470816288) - ) - ) - (call $log-i32 - (call $hashMemory) - ) - ) - (func $func_36 (; 36 ;) (result funcref) - (local $0 nullref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (ref.null) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (block $label$0 (result funcref) - (call $log-f32 - (block $label$1 - (call $log-i32 - (i32.const 117705997) - ) - (return - (ref.func $func_15_invoker) - ) - ) - ) - (loop $label$2 (result funcref) - (block - (if - (i32.eqz - (global.get $hangLimit) - ) - (return - (ref.func $func_17) - ) - ) - (global.set $hangLimit - (i32.sub - (global.get $hangLimit) - (i32.const 1) - ) - ) - ) - (block (result funcref) - (block $label$3 - (br_if $label$3 - (i32.const 909193002) - ) - (nop) - ) - (br_if $label$2 - (i32.const -2147483648) - ) - (ref.func $func_17) - ) - ) - ) - ) - (func $hangLimitInitializer (; 37 ;) - (global.set $hangLimit - (i32.const 10) - ) - ) - (func $deNan32 (; 38 ;) (param $0 f32) (result f32) - (if (result f32) - (f32.eq - (local.get $0) - (local.get $0) - ) - (local.get $0) - (f32.const 0) - ) - ) - (func $deNan64 (; 39 ;) (param $0 f64) (result f64) - (if (result f64) - (f64.eq - (local.get $0) - (local.get $0) - ) - (local.get $0) - (f64.const 0) - ) - ) -) diff -Nru binaryen-91/test/passes/translate-to-fuzz_no-fuzz-nans_all-features.wast binaryen-99/test/passes/translate-to-fuzz_no-fuzz-nans_all-features.wast --- binaryen-91/test/passes/translate-to-fuzz_no-fuzz-nans_all-features.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/translate-to-fuzz_no-fuzz-nans_all-features.wast 1970-01-01 00:00:00.000000000 +0000 @@ -1,99 +0,0 @@ -(module # fake module here, for test harness, but it is really not needed -.. -any -3INPUT -h e r e -*will* -d0 -0.753538467597066 -2.2339337309978227 -................. -lorem ipsum whatever - -through the darkness of future past -the magician longs to see -one [chants|chance] out between two worlds -fire, walk with me - - -h e r e -*will* -d0 -0.753538467597066 -2.2339337309978227 -................. -lorem ipsum whatever - -through the darkness of future past -the magician longs to see -one [chants|chance] out between two worlds -fire, walk with me - - -(&!*^@$*&@!^*&@#^$*&@#$*&@#$^*&@^#$)(&)(!&$(*&^@&#*$ - -MOAR testing09237861235980723894570389yfskdjhgfm13jo847rtnjcsjjdhfgnc12o387456vb1p98364vlaisutfvlKUYASDOV*&Q@$%VOUAYFROVLUKSYDFP(*A^*&%DFASF________ -<>?><>?>>?<>??>DS?><>?>>?<>??>DS?><>?>>?<>??>DS_i64 (func (param f64) (result i64))) (type $f32_=>_none (func (param f32))) (type $f64_=>_none (func (param f64))) - (func $test_div (; 0 ;) (param $0 i32) (param $1 i64) + (func $test_div (param $0 i32) (param $1 i64) (drop (call $i32s-div (local.get $0) @@ -34,7 +34,7 @@ ) ) ) - (func $test_rem (; 1 ;) (param $0 i32) (param $1 i64) + (func $test_rem (param $0 i32) (param $1 i64) (drop (call $i32s-rem (local.get $0) @@ -60,7 +60,7 @@ ) ) ) - (func $test_f32_to_int (; 2 ;) (param $0 f32) + (func $test_f32_to_int (param $0 f32) (drop (call $f32-to-int (local.get $0) @@ -82,7 +82,7 @@ ) ) ) - (func $test_f64_to_int (; 3 ;) (param $0 f64) + (func $test_f64_to_int (param $0 f64) (drop (call $f64-to-int (local.get $0) @@ -104,7 +104,7 @@ ) ) ) - (func $f32-to-int (; 4 ;) (param $0 f32) (result i32) + (func $f32-to-int (param $0 f32) (result i32) (if (result i32) (f32.ne (local.get $0) @@ -130,7 +130,7 @@ ) ) ) - (func $f32-to-int64 (; 5 ;) (param $0 f32) (result i64) + (func $f32-to-int64 (param $0 f32) (result i64) (if (result i64) (f32.ne (local.get $0) @@ -156,7 +156,7 @@ ) ) ) - (func $f32-to-uint (; 6 ;) (param $0 f32) (result i32) + (func $f32-to-uint (param $0 f32) (result i32) (if (result i32) (f32.ne (local.get $0) @@ -182,7 +182,7 @@ ) ) ) - (func $f32-to-uint64 (; 7 ;) (param $0 f32) (result i64) + (func $f32-to-uint64 (param $0 f32) (result i64) (if (result i64) (f32.ne (local.get $0) @@ -208,7 +208,7 @@ ) ) ) - (func $f64-to-int (; 8 ;) (param $0 f64) (result i32) + (func $f64-to-int (param $0 f64) (result i32) (if (result i32) (f64.ne (local.get $0) @@ -234,7 +234,7 @@ ) ) ) - (func $f64-to-int64 (; 9 ;) (param $0 f64) (result i64) + (func $f64-to-int64 (param $0 f64) (result i64) (if (result i64) (f64.ne (local.get $0) @@ -260,7 +260,7 @@ ) ) ) - (func $f64-to-uint (; 10 ;) (param $0 f64) (result i32) + (func $f64-to-uint (param $0 f64) (result i32) (if (result i32) (f64.ne (local.get $0) @@ -286,7 +286,7 @@ ) ) ) - (func $f64-to-uint64 (; 11 ;) (param $0 f64) (result i64) + (func $f64-to-uint64 (param $0 f64) (result i64) (if (result i64) (f64.ne (local.get $0) @@ -312,7 +312,7 @@ ) ) ) - (func $i32s-div (; 12 ;) (param $0 i32) (param $1 i32) (result i32) + (func $i32s-div (param $0 i32) (param $1 i32) (result i32) (if (result i32) (i32.eqz (local.get $1) @@ -337,7 +337,7 @@ ) ) ) - (func $i32s-rem (; 13 ;) (param $0 i32) (param $1 i32) (result i32) + (func $i32s-rem (param $0 i32) (param $1 i32) (result i32) (if (result i32) (i32.eqz (local.get $1) @@ -349,7 +349,7 @@ ) ) ) - (func $i32u-div (; 14 ;) (param $0 i32) (param $1 i32) (result i32) + (func $i32u-div (param $0 i32) (param $1 i32) (result i32) (if (result i32) (i32.eqz (local.get $1) @@ -361,7 +361,7 @@ ) ) ) - (func $i32u-rem (; 15 ;) (param $0 i32) (param $1 i32) (result i32) + (func $i32u-rem (param $0 i32) (param $1 i32) (result i32) (if (result i32) (i32.eqz (local.get $1) @@ -373,7 +373,7 @@ ) ) ) - (func $i64s-div (; 16 ;) (param $0 i64) (param $1 i64) (result i64) + (func $i64s-div (param $0 i64) (param $1 i64) (result i64) (if (result i64) (i64.eqz (local.get $1) @@ -398,7 +398,7 @@ ) ) ) - (func $i64s-rem (; 17 ;) (param $0 i64) (param $1 i64) (result i64) + (func $i64s-rem (param $0 i64) (param $1 i64) (result i64) (if (result i64) (i64.eqz (local.get $1) @@ -410,7 +410,7 @@ ) ) ) - (func $i64u-div (; 18 ;) (param $0 i64) (param $1 i64) (result i64) + (func $i64u-div (param $0 i64) (param $1 i64) (result i64) (if (result i64) (i64.eqz (local.get $1) @@ -422,7 +422,7 @@ ) ) ) - (func $i64u-rem (; 19 ;) (param $0 i64) (param $1 i64) (result i64) + (func $i64u-rem (param $0 i64) (param $1 i64) (result i64) (if (result i64) (i64.eqz (local.get $1) diff -Nru binaryen-91/test/passes/trap-mode-js.txt binaryen-99/test/passes/trap-mode-js.txt --- binaryen-91/test/passes/trap-mode-js.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/trap-mode-js.txt 2021-01-07 20:01:06.000000000 +0000 @@ -8,7 +8,7 @@ (type $f64_=>_none (func (param f64))) (type $f64_=>_i32 (func (param f64) (result i32))) (import "asm2wasm" "f64-to-int" (func $f64-to-int (param f64) (result i32))) - (func $test_div (; 1 ;) (param $0 i32) (param $1 i64) + (func $test_div (param $0 i32) (param $1 i64) (drop (call $i32s-div (local.get $0) @@ -34,7 +34,7 @@ ) ) ) - (func $test_rem (; 2 ;) (param $0 i32) (param $1 i64) + (func $test_rem (param $0 i32) (param $1 i64) (drop (call $i32s-rem (local.get $0) @@ -60,7 +60,7 @@ ) ) ) - (func $test_f32_to_int (; 3 ;) (param $0 f32) + (func $test_f32_to_int (param $0 f32) (drop (call $f64-to-int (f64.promote_f32 @@ -86,7 +86,7 @@ ) ) ) - (func $test_f64_to_int (; 4 ;) (param $0 f64) + (func $test_f64_to_int (param $0 f64) (drop (call $f64-to-int (local.get $0) @@ -108,7 +108,7 @@ ) ) ) - (func $f32-to-int64 (; 5 ;) (param $0 f32) (result i64) + (func $f32-to-int64 (param $0 f32) (result i64) (if (result i64) (f32.ne (local.get $0) @@ -134,7 +134,7 @@ ) ) ) - (func $f32-to-uint64 (; 6 ;) (param $0 f32) (result i64) + (func $f32-to-uint64 (param $0 f32) (result i64) (if (result i64) (f32.ne (local.get $0) @@ -160,7 +160,7 @@ ) ) ) - (func $f64-to-int64 (; 7 ;) (param $0 f64) (result i64) + (func $f64-to-int64 (param $0 f64) (result i64) (if (result i64) (f64.ne (local.get $0) @@ -186,7 +186,7 @@ ) ) ) - (func $f64-to-uint64 (; 8 ;) (param $0 f64) (result i64) + (func $f64-to-uint64 (param $0 f64) (result i64) (if (result i64) (f64.ne (local.get $0) @@ -212,7 +212,7 @@ ) ) ) - (func $i32s-div (; 9 ;) (param $0 i32) (param $1 i32) (result i32) + (func $i32s-div (param $0 i32) (param $1 i32) (result i32) (if (result i32) (i32.eqz (local.get $1) @@ -237,7 +237,7 @@ ) ) ) - (func $i32s-rem (; 10 ;) (param $0 i32) (param $1 i32) (result i32) + (func $i32s-rem (param $0 i32) (param $1 i32) (result i32) (if (result i32) (i32.eqz (local.get $1) @@ -249,7 +249,7 @@ ) ) ) - (func $i32u-div (; 11 ;) (param $0 i32) (param $1 i32) (result i32) + (func $i32u-div (param $0 i32) (param $1 i32) (result i32) (if (result i32) (i32.eqz (local.get $1) @@ -261,7 +261,7 @@ ) ) ) - (func $i32u-rem (; 12 ;) (param $0 i32) (param $1 i32) (result i32) + (func $i32u-rem (param $0 i32) (param $1 i32) (result i32) (if (result i32) (i32.eqz (local.get $1) @@ -273,7 +273,7 @@ ) ) ) - (func $i64s-div (; 13 ;) (param $0 i64) (param $1 i64) (result i64) + (func $i64s-div (param $0 i64) (param $1 i64) (result i64) (if (result i64) (i64.eqz (local.get $1) @@ -298,7 +298,7 @@ ) ) ) - (func $i64s-rem (; 14 ;) (param $0 i64) (param $1 i64) (result i64) + (func $i64s-rem (param $0 i64) (param $1 i64) (result i64) (if (result i64) (i64.eqz (local.get $1) @@ -310,7 +310,7 @@ ) ) ) - (func $i64u-div (; 15 ;) (param $0 i64) (param $1 i64) (result i64) + (func $i64u-div (param $0 i64) (param $1 i64) (result i64) (if (result i64) (i64.eqz (local.get $1) @@ -322,7 +322,7 @@ ) ) ) - (func $i64u-rem (; 16 ;) (param $0 i64) (param $1 i64) (result i64) + (func $i64u-rem (param $0 i64) (param $1 i64) (result i64) (if (result i64) (i64.eqz (local.get $1) diff -Nru binaryen-91/test/passes/untee.txt binaryen-99/test/passes/untee.txt --- binaryen-91/test/passes/untee.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/untee.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ (module (type $none_=>_none (func)) - (func $tee (; 0 ;) + (func $tee (local $x i32) (local $y f64) (drop diff -Nru binaryen-91/test/passes/vacuum_all-features.txt binaryen-99/test/passes/vacuum_all-features.txt --- binaryen-91/test/passes/vacuum_all-features.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/vacuum_all-features.txt 2021-01-07 20:01:06.000000000 +0000 @@ -8,10 +8,10 @@ (import "env" "int" (func $int (result i32))) (memory $0 256 256) (global $Int i32 (i32.const 0)) - (func $b (; 1 ;) + (func $b (nop) ) - (func $l (; 2 ;) + (func $l (local $x i32) (local $y i32) (local.set $x @@ -24,15 +24,15 @@ (local.get $y) ) ) - (func $loopy (; 3 ;) (param $0 i32) + (func $loopy (param $0 i32) (nop) ) - (func $unary (; 4 ;) (result f32) + (func $unary (result f32) (f32.abs (unreachable) ) ) - (func $binary (; 5 ;) (result f32) + (func $binary (result f32) (drop (f32.add (unreachable) @@ -40,7 +40,7 @@ ) ) ) - (func $select (; 6 ;) (result i32) + (func $select (result i32) (drop (select (unreachable) @@ -49,16 +49,16 @@ ) ) ) - (func $block-to-one (; 7 ;) + (func $block-to-one (unreachable) ) - (func $recurse (; 8 ;) + (func $recurse (nop) ) - (func $func-block (; 9 ;) + (func $func-block (nop) ) - (func $Gu (; 10 ;) (param $b i32) (param $e f64) (param $l i32) (param $d i32) + (func $Gu (param $b i32) (param $e f64) (param $l i32) (param $d i32) (if (if (result i32) (local.get $d) @@ -80,7 +80,7 @@ (unreachable) ) ) - (func $if-drop (; 11 ;) (result i32) + (func $if-drop (result i32) (block $out (if (call $if-drop) @@ -99,7 +99,7 @@ ) (i32.const 1) ) - (func $drop-silly (; 12 ;) + (func $drop-silly (drop (call $int) ) @@ -116,21 +116,21 @@ ) ) ) - (func $drop-get-global (; 13 ;) + (func $drop-get-global (call $drop-get-global) ) - (func $relooperJumpThreading1 (; 14 ;) + (func $relooperJumpThreading1 (local $$vararg_ptr5 i32) (local $$11 i32) (nop) ) - (func $relooperJumpThreading2 (; 15 ;) + (func $relooperJumpThreading2 (nop) ) - (func $relooperJumpThreading3 (; 16 ;) + (func $relooperJumpThreading3 (nop) ) - (func $if2drops (; 17 ;) (result i32) + (func $if2drops (result i32) (drop (if (result i32) (call $if2drops) @@ -140,7 +140,7 @@ ) (i32.const 2) ) - (func $if2drops-different (; 18 ;) (result i32) + (func $if2drops-different (result i32) (if (call $if2drops) (drop @@ -152,7 +152,7 @@ ) (i32.const 2) ) - (func $if-const (; 19 ;) (param $x i32) + (func $if-const (param $x i32) (call $if-const (i32.const 3) ) @@ -163,7 +163,7 @@ (i32.const 7) ) ) - (func $drop-if-both-unreachable (; 20 ;) (param $0 i32) + (func $drop-if-both-unreachable (param $0 i32) (block $out (drop (if (result i32) @@ -181,7 +181,7 @@ ) ) ) - (func $if-1-block (; 21 ;) (param $x i32) + (func $if-1-block (param $x i32) (block $out (if (local.get $x) @@ -194,7 +194,7 @@ ) ) ) - (func $block-resize-br-gone (; 22 ;) + (func $block-resize-br-gone (block $out (block $in (call $block-resize-br-gone) @@ -203,11 +203,11 @@ (return) ) ) - (func $block-unreachable-but-last-element-concrete (; 23 ;) + (func $block-unreachable-but-last-element-concrete (local $2 i32) (nop) ) - (func $a (; 24 ;) + (func $a (block $block (i32.store (i32.const 1) @@ -221,7 +221,7 @@ ) ) ) - (func $leave-block-even-if-br-not-taken (; 25 ;) (result f64) + (func $leave-block-even-if-br-not-taken (result f64) (block $label$0 (result f64) (f64.store align=1 (i32.const 879179022) @@ -234,19 +234,19 @@ ) ) ) - (func $executed-if-in-block (; 26 ;) + (func $executed-if-in-block (unreachable) ) - (func $executed-if-in-block2 (; 27 ;) + (func $executed-if-in-block2 (unreachable) ) - (func $executed-if-in-block3 (; 28 ;) + (func $executed-if-in-block3 (block $label$0 (br $label$0) ) (unreachable) ) - (func $load-may-have-side-effects (; 29 ;) (result i32) + (func $load-may-have-side-effects (result i32) (i64.ge_s (block $block (result i64) (drop @@ -259,20 +259,14 @@ (i64.const 0) ) ) - (func $unary-binary-may-trap (; 30 ;) - (drop - (i64.div_s - (i64.const -1) - (i64.const 729618461987467893) - ) - ) + (func $unary-binary-may-trap (drop (i64.trunc_f32_u (f32.const 70847791997969805621592064) ) ) ) - (func $unreachable-if-with-nop-arm-that-leaves-a-concrete-value-if-nop-is-removed (; 31 ;) + (func $unreachable-if-with-nop-arm-that-leaves-a-concrete-value-if-nop-is-removed (block $label$0 (loop $label$1 (drop @@ -285,21 +279,21 @@ ) ) ) - (func $if-arm-vanishes (; 32 ;) (result i32) + (func $if-arm-vanishes (result i32) (block $label$0 (result i32) (br $label$0 (i32.const 1) ) ) ) - (func $if-arm-vanishes-2 (; 33 ;) (result i32) + (func $if-arm-vanishes-2 (result i32) (block $label$0 (result i32) (br $label$0 (i32.const 1) ) ) ) - (func $nop-if-type-changes (; 34 ;) + (func $nop-if-type-changes (local $0 i32) (nop) ) @@ -307,10 +301,10 @@ (module (type $i64_=>_none (func (param i64))) (type $f32_i32_=>_i32 (func (param f32 i32) (result i32))) - (func $0 (; 0 ;) (param $0 i64) + (func $0 (param $0 i64) (nop) ) - (func $1 (; 1 ;) (param $0 f32) (param $1 i32) (result i32) + (func $1 (param $0 f32) (param $1 i32) (result i32) (drop (block $label$2 (result i64) (call $0 @@ -331,22 +325,22 @@ (memory $0 1 1) (global $global$1 (mut i32) (i32.const 0)) (export "compress" (func $3)) - (func $_deflate (; 0 ;) (param $0 i32) (result i32) + (func $_deflate (param $0 i32) (result i32) (call $_deflate (local.get $0) ) ) - (func $_deflateInit2_ (; 1 ;) (param $0 i32) (result i32) + (func $_deflateInit2_ (param $0 i32) (result i32) (call $_deflateInit2_ (local.get $0) ) ) - (func $_deflateEnd (; 2 ;) (param $0 i32) (result i32) + (func $_deflateEnd (param $0 i32) (result i32) (call $_deflateEnd (local.get $0) ) ) - (func $3 (; 3 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (func $3 (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local.set $3 (global.get $global$1) @@ -444,18 +438,20 @@ (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) (event $e (attr 0) (param i32)) - (func $try-test (; 0 ;) + (func $try-test (nop) ) - (func $inner-try-test (; 1 ;) + (func $inner-try-test (local $0 i32) (try - (throw $e - (i32.const 0) + (do + (throw $e + (i32.const 0) + ) ) (catch (drop - (exnref.pop) + (pop exnref) ) (local.set $0 (i32.const 1) @@ -463,4 +459,7 @@ ) ) ) + (func $br-in-catch + (unreachable) + ) ) diff -Nru binaryen-91/test/passes/vacuum_all-features.wast binaryen-99/test/passes/vacuum_all-features.wast --- binaryen-91/test/passes/vacuum_all-features.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/vacuum_all-features.wast 2021-01-07 20:01:06.000000000 +0000 @@ -801,9 +801,11 @@ ;; When try body does not throw, try-body can be replaced with the try body (func $try-test (try - (drop (i32.const 0)) + (do + (drop (i32.const 0)) + ) (catch - (drop (exnref.pop)) + (drop (pop exnref)) ) ) ) @@ -812,15 +814,36 @@ ;; outer try body does not throw and the outer try-catch can be removed (func $inner-try-test (local $0 i32) (try - (try - (throw $e (i32.const 0)) - (catch - (drop (exnref.pop)) - (local.set $0 (i32.const 1)) + (do + (try + (do + (throw $e (i32.const 0)) + ) + (catch + (drop (pop exnref)) + (local.set $0 (i32.const 1)) + ) ) ) (catch - (drop (exnref.pop)) + (drop (pop exnref)) + ) + ) + ) + + ;; When catch body is removed, the removal of 'br' inside the catch body + ;; should be propagated up to the outer block, so that its type will be + ;; correctly updated to unreachable. + (func $br-in-catch + (block $label$1 + (try + (do + (unreachable) + ) + (catch + (drop (pop exnref)) + (br $label$1) + ) ) ) ) diff -Nru binaryen-91/test/passes/vacuum_ignore-implicit-traps.txt binaryen-99/test/passes/vacuum_ignore-implicit-traps.txt --- binaryen-91/test/passes/vacuum_ignore-implicit-traps.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/vacuum_ignore-implicit-traps.txt 2021-01-07 20:01:06.000000000 +0000 @@ -2,13 +2,13 @@ (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) (memory $0 1) - (func $load-would-normally-have-side-effects (; 0 ;) (result i32) + (func $load-would-normally-have-side-effects (result i32) (i64.ge_s (i64.const 2912825531628789796) (i64.const 0) ) ) - (func $unary-binary-may-trap (; 1 ;) + (func $unary-binary-may-trap (nop) ) ) diff -Nru binaryen-91/test/passes/vacuum_remove-unused-names_merge-blocks.txt binaryen-99/test/passes/vacuum_remove-unused-names_merge-blocks.txt --- binaryen-91/test/passes/vacuum_remove-unused-names_merge-blocks.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/passes/vacuum_remove-unused-names_merge-blocks.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) - (func $return-block (; 0 ;) (param $x i32) (result i32) + (func $return-block (param $x i32) (result i32) (local.set $x (local.get $x) ) diff -Nru binaryen-91/test/polymorphic_stack.wast.fromBinary binaryen-99/test/polymorphic_stack.wast.fromBinary --- binaryen-91/test/polymorphic_stack.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/polymorphic_stack.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -4,29 +4,29 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (import "env" "table" (table $timport$0 9 9 funcref)) - (func $break-and-binary (; 0 ;) (result i32) + (func $break-and-binary (result i32) (block $label$1 (result i32) (unreachable) ) ) - (func $call-and-unary (; 1 ;) (param $0 i32) (result i32) + (func $call-and-unary (param $0 i32) (result i32) (unreachable) ) - (func $tee (; 2 ;) (param $0 i32) - (local $1 f32) + (func $tee (param $x i32) + (local $y f32) (unreachable) ) - (func $tee2 (; 3 ;) + (func $tee2 (local $0 f32) (if (i32.const 259) (unreachable) ) ) - (func $select (; 4 ;) + (func $select (unreachable) ) - (func $untaken-break-should-have-value (; 5 ;) (result i32) + (func $untaken-break-should-have-value (result i32) (block $label$1 (result i32) (block $label$2 (drop @@ -37,7 +37,7 @@ (unreachable) ) ) - (func $unreachable-in-block-but-code-before (; 6 ;) (param $0 i32) (result i32) + (func $unreachable-in-block-but-code-before (param $0 i32) (result i32) (if (local.get $0) (return @@ -53,14 +53,14 @@ ) ) ) - (func $br_table_unreachable_to_also_unreachable (; 7 ;) (result i32) + (func $br_table_unreachable_to_also_unreachable (result i32) (block $label$1 (result i32) (block $label$2 (result i32) (unreachable) ) ) ) - (func $untaken-br_if (; 8 ;) (result i32) + (func $untaken-br_if (result i32) (block $label$1 (result i32) (block $label$2 (if diff -Nru binaryen-91/test/polymorphic_stack.wast.fromBinary.noDebugInfo binaryen-99/test/polymorphic_stack.wast.fromBinary.noDebugInfo --- binaryen-91/test/polymorphic_stack.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/polymorphic_stack.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -4,29 +4,29 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_=>_none (func (param i32))) (import "env" "table" (table $timport$0 9 9 funcref)) - (func $0 (; 0 ;) (result i32) + (func $0 (result i32) (block $label$1 (result i32) (unreachable) ) ) - (func $1 (; 1 ;) (param $0 i32) (result i32) + (func $1 (param $0 i32) (result i32) (unreachable) ) - (func $2 (; 2 ;) (param $0 i32) + (func $2 (param $0 i32) (local $1 f32) (unreachable) ) - (func $3 (; 3 ;) + (func $3 (local $0 f32) (if (i32.const 259) (unreachable) ) ) - (func $4 (; 4 ;) + (func $4 (unreachable) ) - (func $5 (; 5 ;) (result i32) + (func $5 (result i32) (block $label$1 (result i32) (block $label$2 (drop @@ -37,7 +37,7 @@ (unreachable) ) ) - (func $6 (; 6 ;) (param $0 i32) (result i32) + (func $6 (param $0 i32) (result i32) (if (local.get $0) (return @@ -53,14 +53,14 @@ ) ) ) - (func $7 (; 7 ;) (result i32) + (func $7 (result i32) (block $label$1 (result i32) (block $label$2 (result i32) (unreachable) ) ) ) - (func $8 (; 8 ;) (result i32) + (func $8 (result i32) (block $label$1 (result i32) (block $label$2 (if diff -Nru binaryen-91/test/polymorphic_stack.wast.from-wast binaryen-99/test/polymorphic_stack.wast.from-wast --- binaryen-91/test/polymorphic_stack.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/polymorphic_stack.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -3,8 +3,8 @@ (type $i32_=>_i32 (func (param i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_none (func (param i32))) - (import "env" "table" (table $0 9 9 funcref)) - (func $break-and-binary (; 0 ;) (result i32) + (import "env" "table" (table $timport$0 9 9 funcref)) + (func $break-and-binary (result i32) (block $x (result i32) (f32.add (br_if $x @@ -19,7 +19,7 @@ ) ) ) - (func $call-and-unary (; 1 ;) (param $0 i32) (result i32) + (func $call-and-unary (param $0 i32) (result i32) (drop (i64.eqz (call $call-and-unary @@ -43,7 +43,7 @@ ) ) ) - (func $tee (; 2 ;) (param $x i32) + (func $tee (param $x i32) (local $y f32) (drop (i64.eqz @@ -60,7 +60,7 @@ ) ) ) - (func $tee2 (; 3 ;) + (func $tee2 (local $0 f32) (if (i32.const 259) @@ -69,7 +69,7 @@ ) ) ) - (func $select (; 4 ;) + (func $select (drop (i64.eqz (select @@ -80,7 +80,7 @@ ) ) ) - (func $untaken-break-should-have-value (; 5 ;) (result i32) + (func $untaken-break-should-have-value (result i32) (block $x (result i32) (block $block (br_if $x @@ -90,7 +90,7 @@ ) ) ) - (func $unreachable-in-block-but-code-before (; 6 ;) (param $0 i32) (result i32) + (func $unreachable-in-block-but-code-before (param $0 i32) (result i32) (if (local.get $0) (return @@ -106,7 +106,7 @@ ) ) ) - (func $br_table_unreachable_to_also_unreachable (; 7 ;) (result i32) + (func $br_table_unreachable_to_also_unreachable (result i32) (block $a (result i32) (block $b (result i32) (br_table $a $b @@ -116,7 +116,7 @@ ) ) ) - (func $untaken-br_if (; 8 ;) (result i32) + (func $untaken-br_if (result i32) (block $label$8 (result i32) (block $label$9 (drop diff -Nru binaryen-91/test/print/min.minified.txt binaryen-99/test/print/min.minified.txt --- binaryen-91/test/print/min.minified.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/print/min.minified.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,4 +1,4 @@ -(module(type $i32_=>_i32 (func(param i32)(result i32)))(type $i32_i32_i32_=>_i32 (func(param i32 i32 i32)(result i32)))(type $i32_i32_=>_f32 (func(param i32 i32)(result f32)))(type $f32_=>_f32 (func(param f32)(result f32)))(memory $0 256 256) +(module(type $i32_=>_i32 (func(param i32)(result i32)))(type $i32_i32_i32_=>_i32 (func(param i32 i32 i32)(result i32)))(type $f32_=>_f32 (func(param f32)(result f32)))(type $i32_i32_=>_f32 (func(param i32 i32)(result f32)))(memory $0 256 256) (export "floats" (func $floats))(func $floats(param $f f32)(result f32)(local $t f32)(f32.add(local.get $t)(local.get $f)))(func $neg(param $k i32)(param $p i32)(result f32)(local $n f32)(local.tee $n(f32.neg(block $block0 (result f32)(i32.store(local.get $k)(local.get $p))(f32.load(local.get $k))))))(func $littleswitch(param $x i32)(result i32)(block $topmost (result i32)(block $switch-case$2(block $switch-case$1(br_table $switch-case$1 $switch-case$2 $switch-case$1(i32.sub(local.get $x)(i32.const 1)))) (br $topmost(i32.const 1))) (br $topmost(i32.const 2))(i32.const 0)))(func $f1(param $i1 i32)(param $i2 i32)(param $i3 i32)(result i32)(block $topmost (result i32)(local.get $i3)))) \ No newline at end of file diff -Nru binaryen-91/test/print/min.txt binaryen-99/test/print/min.txt --- binaryen-91/test/print/min.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/print/min.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,18 +1,18 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (type $f32_=>_f32 (func (param f32) (result f32))) + (type $i32_i32_=>_f32 (func (param i32 i32) (result f32))) (memory $0 256 256) (export "floats" (func $floats)) - (func $floats (; 0 ;) (param $f f32) (result f32) + (func $floats (param $f f32) (result f32) (local $t f32) (f32.add (local.get $t) (local.get $f) ) ) - (func $neg (; 1 ;) (param $k i32) (param $p i32) (result f32) + (func $neg (param $k i32) (param $p i32) (result f32) (local $n f32) (local.tee $n (f32.neg @@ -28,7 +28,7 @@ ) ) ) - (func $littleswitch (; 2 ;) (param $x i32) (result i32) + (func $littleswitch (param $x i32) (result i32) (block $topmost (result i32) (block $switch-case$2 (block $switch-case$1 @@ -49,7 +49,7 @@ (i32.const 0) ) ) - (func $f1 (; 3 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) + (func $f1 (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32) (block $topmost (result i32) (local.get $i3) ) diff -Nru binaryen-91/test/push_pop.wast binaryen-99/test/push_pop.wast --- binaryen-91/test/push_pop.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/push_pop.wast 1970-01-01 00:00:00.000000000 +0000 @@ -1,39 +0,0 @@ -(module - ;; These are not quite valid usages of push/pop - they are not meant to be used - ;; with each other. This just tests we can emit them/handle them in the optimizer. - ;; Once we have proper places to use them, we can tighten up the validation and - ;; replace this test with something correct. - (func "ppi32" (result i32) - (push (i32.const 1)) - (i32.pop) - ) - (func "ppi64" (result i64) - (push (i64.const 1)) - (i64.pop) - ) - (func "ppf32" (result f32) - (push (f32.const 1)) - (f32.pop) - ) - (func "ppf64" (result f64) - (push (f64.const 1)) - (f64.pop) - ) - (func "ppanyref" (result anyref) (local $any anyref) - (push (local.get $any)) - (anyref.pop) - ) - (func "ppfuncref" (result funcref) (local $fn funcref) - (push (local.get $fn)) - (funcref.pop) - ) - (func "ppnullref" - (push (ref.null)) - (drop (nullref.pop)) - ) - (func "ppexnref" (result exnref) (local $exn exnref) - (push (local.get $exn)) - (exnref.pop) - ) -) - diff -Nru binaryen-91/test/push_pop.wast.fromBinary binaryen-99/test/push_pop.wast.fromBinary --- binaryen-91/test/push_pop.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/push_pop.wast.fromBinary 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_i64 (func (result i64))) - (type $none_=>_f32 (func (result f32))) - (type $none_=>_f64 (func (result f64))) - (type $none_=>_funcref (func (result funcref))) - (type $none_=>_anyref (func (result anyref))) - (type $none_=>_exnref (func (result exnref))) - (export "ppi32" (func $0)) - (export "ppi64" (func $1)) - (export "ppf32" (func $2)) - (export "ppf64" (func $3)) - (export "ppanyref" (func $4)) - (export "ppfuncref" (func $5)) - (export "ppnullref" (func $6)) - (export "ppexnref" (func $7)) - (func $0 (; 0 ;) (result i32) - (i32.const 1) - ) - (func $1 (; 1 ;) (result i64) - (i64.const 1) - ) - (func $2 (; 2 ;) (result f32) - (f32.const 1) - ) - (func $3 (; 3 ;) (result f64) - (f64.const 1) - ) - (func $4 (; 4 ;) (result anyref) - (local $0 anyref) - (local.get $0) - ) - (func $5 (; 5 ;) (result funcref) - (local $0 funcref) - (local.get $0) - ) - (func $6 (; 6 ;) - (drop - (ref.null) - ) - ) - (func $7 (; 7 ;) (result exnref) - (local $0 exnref) - (local.get $0) - ) -) - diff -Nru binaryen-91/test/push_pop.wast.fromBinary.noDebugInfo binaryen-99/test/push_pop.wast.fromBinary.noDebugInfo --- binaryen-91/test/push_pop.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/push_pop.wast.fromBinary.noDebugInfo 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_i64 (func (result i64))) - (type $none_=>_f32 (func (result f32))) - (type $none_=>_f64 (func (result f64))) - (type $none_=>_funcref (func (result funcref))) - (type $none_=>_anyref (func (result anyref))) - (type $none_=>_exnref (func (result exnref))) - (export "ppi32" (func $0)) - (export "ppi64" (func $1)) - (export "ppf32" (func $2)) - (export "ppf64" (func $3)) - (export "ppanyref" (func $4)) - (export "ppfuncref" (func $5)) - (export "ppnullref" (func $6)) - (export "ppexnref" (func $7)) - (func $0 (; 0 ;) (result i32) - (i32.const 1) - ) - (func $1 (; 1 ;) (result i64) - (i64.const 1) - ) - (func $2 (; 2 ;) (result f32) - (f32.const 1) - ) - (func $3 (; 3 ;) (result f64) - (f64.const 1) - ) - (func $4 (; 4 ;) (result anyref) - (local $0 anyref) - (local.get $0) - ) - (func $5 (; 5 ;) (result funcref) - (local $0 funcref) - (local.get $0) - ) - (func $6 (; 6 ;) - (drop - (ref.null) - ) - ) - (func $7 (; 7 ;) (result exnref) - (local $0 exnref) - (local.get $0) - ) -) - diff -Nru binaryen-91/test/push_pop.wast.from-wast binaryen-99/test/push_pop.wast.from-wast --- binaryen-91/test/push_pop.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/push_pop.wast.from-wast 1970-01-01 00:00:00.000000000 +0000 @@ -1,71 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_i64 (func (result i64))) - (type $none_=>_f32 (func (result f32))) - (type $none_=>_f64 (func (result f64))) - (type $none_=>_funcref (func (result funcref))) - (type $none_=>_anyref (func (result anyref))) - (type $none_=>_exnref (func (result exnref))) - (export "ppi32" (func $0)) - (export "ppi64" (func $1)) - (export "ppf32" (func $2)) - (export "ppf64" (func $3)) - (export "ppanyref" (func $4)) - (export "ppfuncref" (func $5)) - (export "ppnullref" (func $6)) - (export "ppexnref" (func $7)) - (func $0 (; 0 ;) (result i32) - (push - (i32.const 1) - ) - (i32.pop) - ) - (func $1 (; 1 ;) (result i64) - (push - (i64.const 1) - ) - (i64.pop) - ) - (func $2 (; 2 ;) (result f32) - (push - (f32.const 1) - ) - (f32.pop) - ) - (func $3 (; 3 ;) (result f64) - (push - (f64.const 1) - ) - (f64.pop) - ) - (func $4 (; 4 ;) (result anyref) - (local $any anyref) - (push - (local.get $any) - ) - (anyref.pop) - ) - (func $5 (; 5 ;) (result funcref) - (local $fn funcref) - (push - (local.get $fn) - ) - (funcref.pop) - ) - (func $6 (; 6 ;) - (push - (ref.null) - ) - (drop - (nullref.pop) - ) - ) - (func $7 (; 7 ;) (result exnref) - (local $exn exnref) - (push - (local.get $exn) - ) - (exnref.pop) - ) -) diff -Nru binaryen-91/test/reduce/destructive.wast.txt binaryen-99/test/reduce/destructive.wast.txt --- binaryen-91/test/reduce/destructive.wast.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/reduce/destructive.wast.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $i32_=>_i32 (func (param i32) (result i32))) (export "x" (func $0)) - (func $0 (; 0 ;) (param $0 i32) (result i32) + (func $0 (param $0 i32) (result i32) (i32.const 100) ) ) diff -Nru binaryen-91/test/reduce/imports.wast.txt binaryen-99/test/reduce/imports.wast.txt --- binaryen-91/test/reduce/imports.wast.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/reduce/imports.wast.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $none_=>_i32 (func (result i32))) (export "x" (func $0)) - (func $0 (; 0 ;) (result i32) + (func $0 (result i32) (i32.const 5678) ) ) diff -Nru binaryen-91/test/reduce/memory_table.wast.txt binaryen-99/test/reduce/memory_table.wast.txt --- binaryen-91/test/reduce/memory_table.wast.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/reduce/memory_table.wast.txt 2021-01-07 20:01:06.000000000 +0000 @@ -5,10 +5,10 @@ (export "f1" (func $0)) (export "f2" (func $1)) (export "f4" (func $2)) - (func $0 (; 0 ;) + (func $0 (nop) ) - (func $1 (; 1 ;) (result i32) + (func $1 (result i32) (i32.store (i32.const 0) (i32.const 65530) @@ -17,7 +17,7 @@ (i32.const 0) ) ) - (func $2 (; 2 ;) (result i32) + (func $2 (result i32) (i32.add (call $1) (i32.const 1234) diff -Nru binaryen-91/test/reduce/simple.wast.txt binaryen-99/test/reduce/simple.wast.txt --- binaryen-91/test/reduce/simple.wast.txt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/reduce/simple.wast.txt 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $none_=>_i32 (func (result i32))) (export "x" (func $0)) - (func $0 (; 0 ;) (result i32) + (func $0 (result i32) (i32.const 5678) ) ) diff -Nru binaryen-91/test/reference-types.wast binaryen-99/test/reference-types.wast --- binaryen-91/test/reference-types.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/reference-types.wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,84 +1,208 @@ -;; reftype :: anyref | funcref | exnref | nullref +;; reftype :: externref | funcref | exnref -;; t <: anyref for all reftypes t -;; nullref <: anyref, nullref <: funcref and nullref <: exnref +;; NOTE: the subtyping relationship has been removed from the reference-types proposal but an +;; `--enable-anyref` feature flag is present in Binaryen that we use below to test subtyping. +;; +;; reftype :: reftype | anyref +;; reftype <: anyref (module - (type $sig_anyref (func (param anyref))) + (type $sig_externref (func (param externref))) (type $sig_funcref (func (param funcref))) (type $sig_exnref (func (param exnref))) - (type $sig_nullref (func (param nullref))) + (type $sig_anyref (func (param anyref))) - (func $take_anyref (param anyref)) + (func $take_externref (param externref)) (func $take_funcref (param funcref)) (func $take_exnref (param exnref)) - (func $take_nullref (param nullref)) + (func $take_anyref (param anyref)) (func $foo) - (table funcref (elem $take_anyref $take_funcref $take_exnref $take_nullref)) + (table funcref (elem $take_externref $take_funcref $take_exnref $take_anyref)) - (import "env" "import_func" (func $import_func (param anyref) (result funcref))) - (import "env" "import_global" (global $import_global anyref)) - (export "export_func" (func $import_func (param anyref) (result funcref))) + (import "env" "import_func" (func $import_func (param externref) (result funcref))) + (import "env" "import_global" (global $import_global externref)) + (export "export_func" (func $import_func (param externref) (result funcref))) (export "export_global" (global $import_global)) + ;; Test global initializer expressions + (global $global_externref (mut externref) (ref.null extern)) + (global $global_funcref (mut funcref) (ref.null func)) + (global $global_funcref_func (mut funcref) (ref.func $foo)) + (global $global_exnref (mut exnref) (ref.null exn)) + (global $global_anyref (mut anyref) (ref.null any)) + ;; Test subtype relationship in global initializer expressions - (global $global_anyref (mut anyref) (ref.null)) - (global $global_funcref (mut funcref) (ref.null)) - (global $global_exnref (mut exnref) (ref.null)) - (global $global_nullref (mut nullref) (ref.null)) - (global $global_anyref2 (mut anyref) (ref.func $foo)) - (global $global_funcref2 (mut funcref) (ref.func $foo)) - - (func $test (local $local_anyref anyref) (local $local_funcref funcref) - (local $local_exnref exnref) (local $local_nullref nullref) - ;; Test subtype relationship for local.set & Test types for local.get - (local.set $local_anyref (local.get $local_anyref)) - (local.set $local_anyref (local.get $local_funcref)) - (local.set $local_anyref (local.get $local_exnref)) - (local.set $local_anyref (local.get $local_nullref)) - (local.set $local_anyref (ref.null)) - (local.set $local_anyref (ref.func $foo)) + (global $global_anyref2 (mut anyref) (ref.null extern)) + (global $global_anyref3 (mut anyref) (ref.null func)) + (global $global_anyref4 (mut anyref) (ref.func $foo)) + (global $global_anyref5 (mut anyref) (ref.null exn)) + + (func $test + (local $local_externref externref) + (local $local_funcref funcref) + (local $local_exnref exnref) + (local $local_anyref anyref) + + ;; Test types for local.get/set + (local.set $local_externref (local.get $local_externref)) + (local.set $local_externref (global.get $global_externref)) + (local.set $local_externref (ref.null extern)) (local.set $local_funcref (local.get $local_funcref)) - (local.set $local_funcref (ref.null)) + (local.set $local_funcref (global.get $global_funcref)) + (local.set $local_funcref (ref.null func)) (local.set $local_funcref (ref.func $foo)) (local.set $local_exnref (local.get $local_exnref)) - (local.set $local_exnref (ref.null)) - (local.set $local_nullref (local.get $local_nullref)) - (local.set $local_nullref (ref.null)) + (local.set $local_exnref (global.get $global_exnref)) + (local.set $local_exnref (ref.null exn)) + (local.set $local_anyref (local.get $local_anyref)) + (local.set $local_anyref (global.get $global_anyref)) + (local.set $local_anyref (ref.null any)) - ;; Test subtype relationship for global.set & Test types for global.get - (global.set $global_anyref (global.get $global_anyref)) - (global.set $global_anyref (global.get $global_funcref)) - (global.set $global_anyref (global.get $global_exnref)) - (global.set $global_anyref (global.get $global_nullref)) - (global.set $global_anyref (ref.null)) - (global.set $global_anyref (ref.func $foo)) + ;; Test subtype relationship for local.set + (local.set $local_anyref (local.get $local_externref)) + (local.set $local_anyref (global.get $global_externref)) + (local.set $local_anyref (ref.null extern)) + (local.set $local_anyref (local.get $local_funcref)) + (local.set $local_anyref (global.get $global_funcref)) + (local.set $local_anyref (ref.null func)) + (local.set $local_anyref (ref.func $foo)) + (local.set $local_anyref (local.get $local_exnref)) + (local.set $local_anyref (global.get $global_exnref)) + (local.set $local_anyref (ref.null exn)) + + ;; Test types for global.get/set + (global.set $global_externref (global.get $global_externref)) + (global.set $global_externref (local.get $local_externref)) + (global.set $global_externref (ref.null extern)) (global.set $global_funcref (global.get $global_funcref)) - (global.set $global_funcref (ref.null)) + (global.set $global_funcref (local.get $local_funcref)) + (global.set $global_funcref (ref.null func)) (global.set $global_funcref (ref.func $foo)) (global.set $global_exnref (global.get $global_exnref)) - (global.set $global_exnref (ref.null)) - (global.set $global_nullref (global.get $global_nullref)) - (global.set $global_nullref (ref.null)) + (global.set $global_exnref (local.get $local_exnref)) + (global.set $global_exnref (ref.null exn)) + (global.set $global_anyref (global.get $global_anyref)) + (global.set $global_anyref (local.get $local_anyref)) + (global.set $global_anyref (ref.null any)) - ;; Test subtype relationship for function call / call_indirect params + ;; Test subtype relationship for global.set + (global.set $global_anyref (global.get $global_externref)) + (global.set $global_anyref (local.get $local_externref)) + (global.set $global_anyref (ref.null extern)) + (global.set $global_anyref (global.get $global_funcref)) + (global.set $global_anyref (local.get $local_funcref)) + (global.set $global_anyref (ref.null func)) + (global.set $global_anyref (ref.func $foo)) + (global.set $global_anyref (global.get $global_exnref)) + (global.set $global_anyref (local.get $local_exnref)) + (global.set $global_anyref (ref.null exn)) + + ;; Test function call params + (call $take_externref (local.get $local_externref)) + (call $take_externref (global.get $global_externref)) + (call $take_externref (ref.null extern)) + (call $take_funcref (local.get $local_funcref)) + (call $take_funcref (global.get $global_funcref)) + (call $take_funcref (ref.null func)) + (call $take_funcref (ref.func $foo)) + (call $take_exnref (local.get $local_exnref)) + (call $take_exnref (global.get $global_exnref)) + (call $take_exnref (ref.null exn)) (call $take_anyref (local.get $local_anyref)) + (call $take_anyref (global.get $global_anyref)) + (call $take_anyref (ref.null any)) + + ;; Test subtype relationship for function call params + (call $take_anyref (local.get $local_externref)) + (call $take_anyref (global.get $global_externref)) + (call $take_anyref (ref.null extern)) (call $take_anyref (local.get $local_funcref)) + (call $take_anyref (global.get $global_funcref)) + (call $take_anyref (ref.null func)) + (call $take_anyref (ref.func $foo)) (call $take_anyref (local.get $local_exnref)) - (call $take_anyref (ref.null)) - (call_indirect (type $sig_anyref) (local.get $local_anyref) (i32.const 0)) - (call_indirect (type $sig_anyref) (local.get $local_funcref) (i32.const 0)) - (call_indirect (type $sig_anyref) (local.get $local_exnref) (i32.const 0)) - (call_indirect (type $sig_anyref) (ref.null) (i32.const 0)) + (call $take_anyref (global.get $global_exnref)) + (call $take_anyref (ref.null exn)) + + ;; Test call_indirect params + (call_indirect (type $sig_externref) (local.get $local_externref) (i32.const 0)) + (call_indirect (type $sig_externref) (global.get $global_externref) (i32.const 0)) + (call_indirect (type $sig_externref) (ref.null extern) (i32.const 0)) (call_indirect (type $sig_funcref) (local.get $local_funcref) (i32.const 1)) - (call_indirect (type $sig_funcref) (ref.null) (i32.const 1)) + (call_indirect (type $sig_funcref) (global.get $global_funcref) (i32.const 1)) + (call_indirect (type $sig_funcref) (ref.null func) (i32.const 1)) + (call_indirect (type $sig_funcref) (ref.func $foo) (i32.const 1)) (call_indirect (type $sig_exnref) (local.get $local_exnref) (i32.const 2)) - (call_indirect (type $sig_exnref) (ref.null) (i32.const 2)) - (call_indirect (type $sig_nullref) (local.get $local_nullref) (i32.const 3)) - (call_indirect (type $sig_nullref) (ref.null) (i32.const 3)) + (call_indirect (type $sig_exnref) (global.get $global_exnref) (i32.const 2)) + (call_indirect (type $sig_exnref) (ref.null exn) (i32.const 2)) + (call_indirect (type $sig_anyref) (local.get $local_anyref) (i32.const 3)) + (call_indirect (type $sig_anyref) (global.get $global_anyref) (i32.const 3)) + (call_indirect (type $sig_anyref) (ref.null any) (i32.const 3)) - ;; Test subtype relationship for block return type + ;; Test subtype relationship for call_indirect params + (call_indirect (type $sig_anyref) (local.get $local_externref) (i32.const 3)) + (call_indirect (type $sig_anyref) (global.get $global_externref) (i32.const 3)) + (call_indirect (type $sig_anyref) (ref.null extern) (i32.const 3)) + (call_indirect (type $sig_anyref) (local.get $local_funcref) (i32.const 3)) + (call_indirect (type $sig_anyref) (global.get $global_funcref) (i32.const 3)) + (call_indirect (type $sig_anyref) (ref.null func) (i32.const 3)) + (call_indirect (type $sig_anyref) (ref.func $foo) (i32.const 3)) + (call_indirect (type $sig_anyref) (local.get $local_exnref) (i32.const 3)) + (call_indirect (type $sig_anyref) (global.get $global_exnref) (i32.const 3)) + (call_indirect (type $sig_anyref) (ref.null exn) (i32.const 3)) + + ;; Test block return type + (drop + (block (result externref) + (br_if 0 (local.get $local_externref) (i32.const 1)) + ) + ) + (drop + (block (result externref) + (br_if 0 (global.get $global_externref) (i32.const 1)) + ) + ) + (drop + (block (result externref) + (br_if 0 (ref.null extern) (i32.const 1)) + ) + ) + (drop + (block (result funcref) + (br_if 0 (local.get $local_funcref) (i32.const 1)) + ) + ) + (drop + (block (result funcref) + (br_if 0 (global.get $global_funcref) (i32.const 1)) + ) + ) + (drop + (block (result funcref) + (br_if 0 (ref.null func) (i32.const 1)) + ) + ) + (drop + (block (result funcref) + (br_if 0 (ref.func $foo) (i32.const 1)) + ) + ) + (drop + (block (result exnref) + (br_if 0 (local.get $local_exnref) (i32.const 1)) + ) + ) + (drop + (block (result exnref) + (br_if 0 (global.get $global_exnref) (i32.const 1)) + ) + ) + (drop + (block (result exnref) + (br_if 0 (ref.null exn) (i32.const 1)) + ) + ) (drop (block (result anyref) (br_if 0 (local.get $local_anyref) (i32.const 1)) @@ -86,6 +210,23 @@ ) (drop (block (result anyref) + (br_if 0 (global.get $global_anyref) (i32.const 1)) + ) + ) + (drop + (block (result anyref) + (br_if 0 (ref.null any) (i32.const 1)) + ) + ) + + ;; Test subtype relationship for block return type + (drop + (block (result anyref) + (br_if 0 (local.get $local_externref) (i32.const 1)) + ) + ) + (drop + (block (result anyref) (br_if 0 (local.get $local_funcref) (i32.const 1)) ) ) @@ -96,26 +237,76 @@ ) (drop (block (result anyref) - (br_if 0 (ref.null) (i32.const 1)) + (br_if 0 (ref.null extern) (i32.const 1)) ) ) (drop - (block (result funcref) - (br_if 0 (ref.null) (i32.const 1)) + (block (result anyref) + (br_if 0 (ref.null func) (i32.const 1)) ) ) (drop - (block (result exnref) - (br_if 0 (ref.null) (i32.const 1)) + (block (result anyref) + (br_if 0 (ref.func $foo) (i32.const 1)) ) ) (drop - (block (result nullref) - (br_if 0 (ref.null) (i32.const 1)) + (block (result anyref) + (br_if 0 (ref.null exn) (i32.const 1)) ) ) - ;; Test subtype relationship for loop return type + ;; Test loop return type + (drop + (loop (result externref) + (local.get $local_externref) + ) + ) + (drop + (loop (result externref) + (global.get $global_externref) + ) + ) + (drop + (loop (result externref) + (ref.null extern) + ) + ) + (drop + (loop (result funcref) + (local.get $local_funcref) + ) + ) + (drop + (loop (result funcref) + (global.get $global_funcref) + ) + ) + (drop + (loop (result funcref) + (ref.null func) + ) + ) + (drop + (loop (result funcref) + (ref.func $foo) + ) + ) + (drop + (loop (result exnref) + (local.get $local_exnref) + ) + ) + (drop + (loop (result exnref) + (global.get $global_exnref) + ) + ) + (drop + (loop (result exnref) + (ref.null exn) + ) + ) (drop (loop (result anyref) (local.get $local_anyref) @@ -123,239 +314,459 @@ ) (drop (loop (result anyref) - (local.get $local_funcref) + (global.get $global_anyref) ) ) (drop (loop (result anyref) - (local.get $local_exnref) + (ref.null any) ) ) + + ;; Test subtype relationship for loop return type (drop (loop (result anyref) - (ref.null) + (local.get $local_externref) ) ) (drop - (loop (result funcref) + (loop (result anyref) + (global.get $global_externref) + ) + ) + (drop + (loop (result anyref) + (ref.null extern) + ) + ) + (drop + (loop (result anyref) (local.get $local_funcref) ) ) (drop - (loop (result funcref) - (ref.null) + (loop (result anyref) + (global.get $global_funcref) ) ) (drop - (loop (result exnref) + (loop (result anyref) + (ref.null func) + ) + ) + (drop + (loop (result anyref) + (ref.func $foo) + ) + ) + (drop + (loop (result anyref) (local.get $local_exnref) ) ) (drop - (loop (result exnref) - (ref.null) + (loop (result anyref) + (global.get $global_exnref) ) ) (drop - (loop (result nullref) - (ref.null) + (loop (result anyref) + (ref.null exn) ) ) - ;; Test subtype relationship for if return type + ;; Test if return type + (drop + (if (result externref) + (i32.const 1) + (local.get $local_externref) + (ref.null extern) + ) + ) + (drop + (if (result funcref) + (i32.const 1) + (local.get $local_funcref) + (ref.null func) + ) + ) + (drop + (if (result exnref) + (i32.const 1) + (local.get $local_exnref) + (ref.null exn) + ) + ) (drop (if (result anyref) (i32.const 1) (local.get $local_anyref) - (local.get $local_exnref) + (ref.null any) ) ) + + ;; Test subtype relationship for if return type (drop (if (result anyref) (i32.const 1) - (ref.func $foo) - (ref.null) + (local.get $local_externref) + (local.get $local_funcref) ) ) (drop - (if (result funcref) + (if (result anyref) (i32.const 1) - (ref.func $foo) - (ref.null) + (local.get $local_externref) + (local.get $local_exnref) ) ) (drop - (if (result exnref) + (if (result anyref) (i32.const 1) + (local.get $local_funcref) (local.get $local_exnref) - (ref.null) ) ) (drop - (if (result nullref) + (if (result anyref) + (i32.const 1) + (ref.null extern) + (ref.null func) + ) + ) + (drop + (if (result anyref) + (i32.const 1) + (ref.null extern) + (ref.null exn) + ) + ) + (drop + (if (result anyref) + (i32.const 1) + (ref.null func) + (ref.null exn) + ) + ) + (drop + (if (result anyref) (i32.const 1) - (local.get $local_nullref) - (ref.null) + (ref.func $foo) + (ref.null extern) + ) + ) + + ;; Test try return type + (drop + (try (result externref) + (do + (local.get $local_externref) + ) + (catch + (drop (pop exnref)) + (ref.null extern) + ) + ) + ) + (drop + (try (result funcref) + (do + (ref.func $foo) + ) + (catch + (drop (pop exnref)) + (ref.null func) + ) + ) + ) + (drop + (try (result exnref) + (do + (ref.null exn) + ) + (catch + (pop exnref) + ) ) ) ;; Test subtype relationship for try return type (drop (try (result anyref) - (local.get $local_anyref) + (do + (local.get $local_externref) + ) (catch - (exnref.pop) + (drop (pop exnref)) + (ref.func $foo) ) ) ) (drop (try (result anyref) - (ref.func $foo) + (do + (local.get $local_externref) + ) (catch - (drop (exnref.pop)) - (ref.null) + (pop exnref) ) ) ) (drop - (try (result funcref) - (ref.func $foo) + (try (result anyref) + (do + (ref.func $foo) + ) (catch - (drop (exnref.pop)) - (ref.null) + (drop (pop exnref)) + (local.get $local_externref) ) ) ) (drop - (try (result exnref) - (ref.null) + (try (result anyref) + (do + (ref.func $foo) + ) (catch - (exnref.pop) + (pop exnref) ) ) ) (drop - (try (result nullref) - (ref.null) + (try (result anyref) + (do + (ref.null exn) + ) (catch - (drop (exnref.pop)) - (ref.null) + (drop (pop exnref)) + (local.get $local_externref) + ) + ) + ) + (drop + (try (result anyref) + (do + (ref.null exn) + ) + (catch + (drop (pop exnref)) + (ref.func $foo) ) ) ) - ;; Test subtype relationship for typed select + ;; Test typed select (drop - (select (result anyref) - (local.get $local_anyref) - (ref.func $foo) + (select (result externref) + (local.get $local_externref) + (ref.null extern) (i32.const 1) ) ) (drop - (select (result anyref) + (select (result funcref) + (local.get $local_funcref) + (ref.null func) + (i32.const 1) + ) + ) + (drop + (select (result exnref) (local.get $local_exnref) - (local.get $local_anyref) + (ref.null exn) + (i32.const 1) + ) + ) + (drop + (select (result i32) + (i32.const 0) + (i32.const 2) (i32.const 1) ) ) + + ;; Test subtype relationship for typed select (drop (select (result anyref) - (local.get $local_anyref) - (ref.null) + (local.get $local_externref) + (local.get $local_funcref) (i32.const 1) ) ) (drop (select (result anyref) - (ref.null) - (ref.func $foo) + (local.get $local_externref) + (local.get $local_exnref) (i32.const 1) ) ) (drop - (select (result funcref) - (ref.func $foo) - (ref.null) + (select (result anyref) + (local.get $local_funcref) + (local.get $local_externref) (i32.const 1) ) ) (drop - (select (result exnref) - (ref.null) + (select (result anyref) + (local.get $local_funcref) (local.get $local_exnref) (i32.const 1) ) ) (drop - (select (result nullref) - (ref.null) - (ref.null) + (select (result anyref) + (local.get $local_exnref) + (local.get $local_externref) (i32.const 1) ) ) (drop - (select (result i32) - (i32.const 0) - (i32.const 2) + (select (result anyref) + (local.get $local_exnref) + (local.get $local_funcref) (i32.const 1) ) ) ;; ref.is_null takes any reference types - (drop (ref.is_null (local.get $local_anyref))) - (drop (ref.is_null (local.get $local_exnref))) + (drop (ref.is_null (local.get $local_externref))) + (drop (ref.is_null (global.get $global_externref))) + (drop (ref.is_null (ref.null extern))) + (drop (ref.is_null (local.get $local_funcref))) + (drop (ref.is_null (global.get $global_funcref))) + (drop (ref.is_null (ref.null func))) (drop (ref.is_null (ref.func $foo))) - (drop (ref.is_null (ref.null))) + (drop (ref.is_null (local.get $local_exnref))) + (drop (ref.is_null (global.get $global_exnref))) + (drop (ref.is_null (ref.null exn))) + (drop (ref.is_null (local.get $local_anyref))) + (drop (ref.is_null (global.get $global_anyref))) + (drop (ref.is_null (ref.null any))) ) - ;; Test subtype relationship in function return type - (func $return_anyref (result anyref) (local $local_anyref anyref) - (local.get $local_anyref) + ;; Test function return type + (func $return_externref_local (result externref) + (local $local_externref externref) + (local.get $local_externref) ) - (func $return_anyref2 (result anyref) + (func $return_externref_global (result externref) + (global.get $global_externref) + ) + (func $return_externref_null (result externref) + (ref.null extern) + ) + (func $return_funcref_local (result funcref) + (local $local_funcref funcref) + (local.get $local_funcref) + ) + (func $return_funcref_global (result funcref) + (global.get $global_funcref) + ) + (func $return_funcref_null (result funcref) + (ref.null func) + ) + (func $return_funcref_func (result funcref) (ref.func $foo) ) - (func $return_anyref3 (result anyref) (local $local_exnref exnref) + (func $return_exnref_local (result exnref) + (local $local_exnref exnref) (local.get $local_exnref) ) + (func $return_exnref_global (result exnref) + (global.get $global_exnref) + ) + (func $return_exnref_null (result exnref) + (ref.null exn) + ) + (func $return_anyref_local (result anyref) + (local $local_anyref anyref) + (local.get $local_anyref) + ) + (func $return_anyref_global (result anyref) + (global.get $global_anyref) + ) + (func $return_anyref_null (result anyref) + (ref.null any) + ) + + ;; Test subtype relationship in function return type + (func $return_anyref2 (result anyref) + (local $local_externref externref) + (local.get $local_externref) + ) + (func $return_anyref3 (result anyref) + (global.get $global_externref) + ) (func $return_anyref4 (result anyref) - (ref.null) + (ref.null extern) ) - (func $return_funcref (result funcref) - (ref.func $foo) + (func $return_anyref5 (result anyref) + (local $local_funcref funcref) + (local.get $local_funcref) + ) + (func $return_anyref6 (result anyref) + (global.get $global_funcref) ) - (func $return_funcref2 (result funcref) - (ref.null) + (func $return_anyref7 (result anyref) + (ref.null func) ) - (func $return_exnref (result exnref) (local $local_exnref exnref) + (func $return_anyref8 (result anyref) + (ref.func $foo) + ) + (func $return_anyref9 (result anyref) + (local $local_exnref exnref) (local.get $local_exnref) ) - (func $return_exnref2 (result exnref) - (ref.null) + (func $return_anyref10 (result anyref) + (global.get $global_exnref) ) - (func $return_nullref (result nullref) (local $local_nullref nullref) - (local.get $local_nullref) + (func $return_anyref11 (result anyref) + (ref.null exn) ) - ;; Test subtype relationship in returns - (func $return_anyref_returns (result anyref) (local $local_anyref anyref) - (local $local_exnref exnref) - (return (local.get $local_anyref)) - (return (local.get $local_exnref)) + ;; Test returns + (func $returns_externref (result externref) + (local $local_externref externref) + (return (local.get $local_externref)) + (return (global.get $global_externref)) + (return (ref.null extern)) + ) + (func $returns_funcref (result funcref) + (local $local_funcref funcref) + (return (local.get $local_funcref)) + (return (global.get $global_funcref)) (return (ref.func $foo)) - (return (ref.null)) + (return (ref.null func)) ) - (func $return_funcref_returns (result funcref) - (return (ref.func $foo)) - (return (ref.null)) - ) - (func $return_exnref_returns (result exnref) (local $local_exnref exnref) + (func $returns_exnref (result exnref) + (local $local_exnref exnref) (return (local.get $local_exnref)) - (return (ref.null)) + (return (global.get $global_exnref)) + (return (ref.null exn)) + ) + (func $returns_anyref (result anyref) + (local $local_anyref anyref) + (return (local.get $local_anyref)) + (return (global.get $global_anyref)) + (return (ref.null any)) ) - (func $return_nullref_returns (result nullref) (local $local_nullref nullref) - (return (local.get $local_nullref)) - (return (ref.null)) + + ;; Test subtype relationship in returns + (func $returns_anyref2 (result anyref) + (local $local_externref externref) + (local $local_funcref funcref) + (local $local_exnref exnref) + (return (local.get $local_externref)) + (return (global.get $global_externref)) + (return (ref.null extern)) + (return (local.get $local_funcref)) + (return (global.get $global_funcref)) + (return (ref.func $foo)) + (return (ref.null func)) + (return (local.get $local_exnref)) + (return (global.get $global_exnref)) + (return (ref.null exn)) ) ) diff -Nru binaryen-91/test/reference-types.wast.fromBinary binaryen-99/test/reference-types.wast.fromBinary --- binaryen-91/test/reference-types.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/reference-types.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,204 +1,376 @@ (module - (type $anyref_=>_none (func (param anyref))) (type $none_=>_anyref (func (result anyref))) + (type $anyref_=>_none (func (param anyref))) (type $funcref_=>_none (func (param funcref))) - (type $nullref_=>_none (func (param nullref))) - (type $exnref_=>_none (func (param exnref))) (type $none_=>_funcref (func (result funcref))) + (type $externref_=>_none (func (param externref))) + (type $exnref_=>_none (func (param exnref))) + (type $none_=>_externref (func (result externref))) (type $none_=>_exnref (func (result exnref))) (type $none_=>_none (func)) - (type $none_=>_nullref (func (result nullref))) - (type $anyref_=>_funcref (func (param anyref) (result funcref))) - (import "env" "import_global" (global $gimport$1 anyref)) - (import "env" "import_func" (func $import_func (param anyref) (result funcref))) + (type $externref_=>_funcref (func (param externref) (result funcref))) + (import "env" "import_global" (global $import_global externref)) + (import "env" "import_func" (func $import_func (param externref) (result funcref))) (table $0 4 4 funcref) - (elem (i32.const 0) $take_anyref $take_funcref $take_exnref $take_nullref) - (global $global$0 (mut anyref) (ref.null)) - (global $global$1 (mut funcref) (ref.null)) - (global $global$2 (mut exnref) (ref.null)) - (global $global$3 (mut nullref) (ref.null)) - (global $global$4 (mut anyref) (ref.func $foo)) - (global $global$5 (mut funcref) (ref.func $foo)) + (elem (i32.const 0) $take_externref $take_funcref $take_exnref $take_anyref) + (global $global_externref (mut externref) (ref.null extern)) + (global $global_funcref (mut funcref) (ref.null func)) + (global $global_funcref_func (mut funcref) (ref.func $foo)) + (global $global_exnref (mut exnref) (ref.null exn)) + (global $global_anyref (mut anyref) (ref.null any)) + (global $global_anyref2 (mut anyref) (ref.null extern)) + (global $global_anyref3 (mut anyref) (ref.null func)) + (global $global_anyref4 (mut anyref) (ref.func $foo)) + (global $global_anyref5 (mut anyref) (ref.null exn)) (export "export_func" (func $import_func)) - (export "export_global" (global $gimport$1)) - (func $take_anyref (; 1 ;) (param $0 anyref) + (export "export_global" (global $import_global)) + (func $take_externref (param $0 externref) (nop) ) - (func $take_funcref (; 2 ;) (param $0 funcref) + (func $take_funcref (param $0 funcref) (nop) ) - (func $take_exnref (; 3 ;) (param $0 exnref) + (func $take_exnref (param $0 exnref) (nop) ) - (func $take_nullref (; 4 ;) (param $0 nullref) + (func $take_anyref (param $0 anyref) (nop) ) - (func $foo (; 5 ;) + (func $foo (nop) ) - (func $test (; 6 ;) - (local $0 funcref) - (local $1 anyref) - (local $2 nullref) - (local $3 exnref) - (local.set $1 - (local.get $1) - ) - (local.set $1 - (local.get $0) - ) - (local.set $1 - (local.get $3) + (func $test + (local $local_externref funcref) + (local $local_funcref externref) + (local $local_exnref exnref) + (local $local_anyref anyref) + (local.set $local_funcref + (local.get $local_funcref) + ) + (local.set $local_funcref + (global.get $global_externref) + ) + (local.set $local_funcref + (ref.null extern) + ) + (local.set $local_externref + (local.get $local_externref) + ) + (local.set $local_externref + (global.get $global_funcref) + ) + (local.set $local_externref + (ref.null func) + ) + (local.set $local_externref + (ref.func $foo) + ) + (local.set $local_exnref + (local.get $local_exnref) + ) + (local.set $local_exnref + (global.get $global_exnref) + ) + (local.set $local_exnref + (ref.null exn) + ) + (local.set $local_anyref + (local.get $local_anyref) ) - (local.set $1 - (local.get $2) + (local.set $local_anyref + (global.get $global_anyref) ) - (local.set $1 - (ref.null) + (local.set $local_anyref + (ref.null any) ) - (local.set $1 + (local.set $local_anyref + (local.get $local_funcref) + ) + (local.set $local_anyref + (global.get $global_externref) + ) + (local.set $local_anyref + (ref.null extern) + ) + (local.set $local_anyref + (local.get $local_externref) + ) + (local.set $local_anyref + (global.get $global_funcref) + ) + (local.set $local_anyref + (ref.null func) + ) + (local.set $local_anyref (ref.func $foo) ) - (local.set $0 - (local.get $0) + (local.set $local_anyref + (local.get $local_exnref) + ) + (local.set $local_anyref + (global.get $global_exnref) + ) + (local.set $local_anyref + (ref.null exn) + ) + (global.set $global_externref + (global.get $global_externref) + ) + (global.set $global_externref + (local.get $local_funcref) + ) + (global.set $global_externref + (ref.null extern) + ) + (global.set $global_funcref + (global.get $global_funcref) ) - (local.set $0 - (ref.null) + (global.set $global_funcref + (local.get $local_externref) ) - (local.set $0 + (global.set $global_funcref + (ref.null func) + ) + (global.set $global_funcref (ref.func $foo) ) - (local.set $3 - (local.get $3) + (global.set $global_exnref + (global.get $global_exnref) + ) + (global.set $global_exnref + (local.get $local_exnref) + ) + (global.set $global_exnref + (ref.null exn) ) - (local.set $3 - (ref.null) + (global.set $global_anyref + (global.get $global_anyref) ) - (local.set $2 - (local.get $2) + (global.set $global_anyref + (local.get $local_anyref) ) - (local.set $2 - (ref.null) + (global.set $global_anyref + (ref.null any) ) - (global.set $global$0 - (global.get $global$0) + (global.set $global_anyref + (global.get $global_externref) ) - (global.set $global$0 - (global.get $global$1) + (global.set $global_anyref + (local.get $local_funcref) ) - (global.set $global$0 - (global.get $global$2) + (global.set $global_anyref + (ref.null extern) ) - (global.set $global$0 - (global.get $global$3) + (global.set $global_anyref + (global.get $global_funcref) ) - (global.set $global$0 - (ref.null) + (global.set $global_anyref + (local.get $local_externref) ) - (global.set $global$0 + (global.set $global_anyref + (ref.null func) + ) + (global.set $global_anyref (ref.func $foo) ) - (global.set $global$1 - (global.get $global$1) + (global.set $global_anyref + (global.get $global_exnref) + ) + (global.set $global_anyref + (local.get $local_exnref) + ) + (global.set $global_anyref + (ref.null exn) ) - (global.set $global$1 - (ref.null) + (call $take_externref + (local.get $local_funcref) ) - (global.set $global$1 + (call $take_externref + (global.get $global_externref) + ) + (call $take_externref + (ref.null extern) + ) + (call $take_funcref + (local.get $local_externref) + ) + (call $take_funcref + (global.get $global_funcref) + ) + (call $take_funcref + (ref.null func) + ) + (call $take_funcref (ref.func $foo) ) - (global.set $global$2 - (global.get $global$2) + (call $take_exnref + (local.get $local_exnref) + ) + (call $take_exnref + (global.get $global_exnref) ) - (global.set $global$2 - (ref.null) + (call $take_exnref + (ref.null exn) ) - (global.set $global$3 - (global.get $global$3) + (call $take_anyref + (local.get $local_anyref) ) - (global.set $global$3 - (ref.null) + (call $take_anyref + (global.get $global_anyref) ) (call $take_anyref - (local.get $1) + (ref.null any) ) (call $take_anyref - (local.get $0) + (local.get $local_funcref) ) (call $take_anyref - (local.get $3) + (global.get $global_externref) ) (call $take_anyref - (ref.null) + (ref.null extern) ) - (call_indirect (type $anyref_=>_none) - (local.get $1) - (i32.const 0) + (call $take_anyref + (local.get $local_externref) ) - (call_indirect (type $anyref_=>_none) - (local.get $0) + (call $take_anyref + (global.get $global_funcref) + ) + (call $take_anyref + (ref.null func) + ) + (call $take_anyref + (ref.func $foo) + ) + (call $take_anyref + (local.get $local_exnref) + ) + (call $take_anyref + (global.get $global_exnref) + ) + (call $take_anyref + (ref.null exn) + ) + (call_indirect (type $externref_=>_none) + (local.get $local_funcref) (i32.const 0) ) - (call_indirect (type $anyref_=>_none) - (local.get $3) + (call_indirect (type $externref_=>_none) + (global.get $global_externref) (i32.const 0) ) - (call_indirect (type $anyref_=>_none) - (ref.null) + (call_indirect (type $externref_=>_none) + (ref.null extern) (i32.const 0) ) (call_indirect (type $funcref_=>_none) - (local.get $0) + (local.get $local_externref) + (i32.const 1) + ) + (call_indirect (type $funcref_=>_none) + (global.get $global_funcref) (i32.const 1) ) (call_indirect (type $funcref_=>_none) - (ref.null) + (ref.null func) (i32.const 1) ) + (call_indirect (type $funcref_=>_none) + (ref.func $foo) + (i32.const 1) + ) + (call_indirect (type $exnref_=>_none) + (local.get $local_exnref) + (i32.const 2) + ) (call_indirect (type $exnref_=>_none) - (local.get $3) + (global.get $global_exnref) (i32.const 2) ) (call_indirect (type $exnref_=>_none) - (ref.null) + (ref.null exn) (i32.const 2) ) - (call_indirect (type $nullref_=>_none) - (local.get $2) + (call_indirect (type $anyref_=>_none) + (local.get $local_anyref) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (global.get $global_anyref) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (ref.null any) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (local.get $local_funcref) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (global.get $global_externref) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (ref.null extern) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (local.get $local_externref) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (global.get $global_funcref) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (ref.null func) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (ref.func $foo) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (local.get $local_exnref) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (global.get $global_exnref) (i32.const 3) ) - (call_indirect (type $nullref_=>_none) - (ref.null) + (call_indirect (type $anyref_=>_none) + (ref.null exn) (i32.const 3) ) (drop - (block $label$1 (result anyref) + (block $label$1 (result externref) (br_if $label$1 - (local.get $1) + (local.get $local_funcref) (i32.const 1) ) ) ) (drop - (block $label$2 (result anyref) + (block $label$2 (result externref) (br_if $label$2 - (local.get $0) + (global.get $global_externref) (i32.const 1) ) ) ) (drop - (block $label$3 (result anyref) + (block $label$3 (result externref) (br_if $label$3 - (local.get $3) + (ref.null extern) (i32.const 1) ) ) ) (drop - (block $label$4 (result anyref) + (block $label$4 (result funcref) (br_if $label$4 - (ref.null) + (local.get $local_externref) (i32.const 1) ) ) @@ -206,220 +378,529 @@ (drop (block $label$5 (result funcref) (br_if $label$5 - (ref.null) + (global.get $global_funcref) (i32.const 1) ) ) ) (drop - (block $label$6 (result exnref) + (block $label$6 (result funcref) (br_if $label$6 - (ref.null) + (ref.null func) (i32.const 1) ) ) ) (drop - (block $label$7 (result nullref) + (block $label$7 (result funcref) (br_if $label$7 - (ref.null) + (ref.func $foo) + (i32.const 1) + ) + ) + ) + (drop + (block $label$8 (result exnref) + (br_if $label$8 + (local.get $local_exnref) + (i32.const 1) + ) + ) + ) + (drop + (block $label$9 (result exnref) + (br_if $label$9 + (global.get $global_exnref) + (i32.const 1) + ) + ) + ) + (drop + (block $label$10 (result exnref) + (br_if $label$10 + (ref.null exn) + (i32.const 1) + ) + ) + ) + (drop + (block $label$11 (result anyref) + (br_if $label$11 + (local.get $local_anyref) + (i32.const 1) + ) + ) + ) + (drop + (block $label$12 (result anyref) + (br_if $label$12 + (global.get $global_anyref) + (i32.const 1) + ) + ) + ) + (drop + (block $label$13 (result anyref) + (br_if $label$13 + (ref.null any) + (i32.const 1) + ) + ) + ) + (drop + (block $label$14 (result anyref) + (br_if $label$14 + (local.get $local_funcref) + (i32.const 1) + ) + ) + ) + (drop + (block $label$15 (result anyref) + (br_if $label$15 + (local.get $local_externref) (i32.const 1) ) ) ) (drop - (loop $label$8 (result anyref) - (local.get $1) + (block $label$16 (result anyref) + (br_if $label$16 + (local.get $local_exnref) + (i32.const 1) + ) + ) + ) + (drop + (block $label$17 (result anyref) + (br_if $label$17 + (ref.null extern) + (i32.const 1) + ) + ) + ) + (drop + (block $label$18 (result anyref) + (br_if $label$18 + (ref.null func) + (i32.const 1) + ) + ) + ) + (drop + (block $label$19 (result anyref) + (br_if $label$19 + (ref.func $foo) + (i32.const 1) + ) + ) + ) + (drop + (block $label$20 (result anyref) + (br_if $label$20 + (ref.null exn) + (i32.const 1) + ) + ) + ) + (drop + (loop $label$21 (result externref) + (local.get $local_funcref) + ) + ) + (drop + (loop $label$22 (result externref) + (global.get $global_externref) + ) + ) + (drop + (loop $label$23 (result externref) + (ref.null extern) + ) + ) + (drop + (loop $label$24 (result funcref) + (local.get $local_externref) + ) + ) + (drop + (loop $label$25 (result funcref) + (global.get $global_funcref) + ) + ) + (drop + (loop $label$26 (result funcref) + (ref.null func) + ) + ) + (drop + (loop $label$27 (result funcref) + (ref.func $foo) + ) + ) + (drop + (loop $label$28 (result exnref) + (local.get $local_exnref) ) ) (drop - (loop $label$9 (result anyref) - (local.get $0) + (loop $label$29 (result exnref) + (global.get $global_exnref) ) ) (drop - (loop $label$10 (result anyref) - (local.get $3) + (loop $label$30 (result exnref) + (ref.null exn) ) ) (drop - (loop $label$11 (result anyref) - (ref.null) + (loop $label$31 (result anyref) + (local.get $local_anyref) ) ) (drop - (loop $label$12 (result funcref) - (local.get $0) + (loop $label$32 (result anyref) + (global.get $global_anyref) ) ) (drop - (loop $label$13 (result funcref) - (ref.null) + (loop $label$33 (result anyref) + (ref.null any) ) ) (drop - (loop $label$14 (result exnref) - (local.get $3) + (loop $label$34 (result anyref) + (local.get $local_funcref) ) ) (drop - (loop $label$15 (result exnref) - (ref.null) + (loop $label$35 (result anyref) + (global.get $global_externref) ) ) (drop - (loop $label$16 (result nullref) - (ref.null) + (loop $label$36 (result anyref) + (ref.null extern) + ) + ) + (drop + (loop $label$37 (result anyref) + (local.get $local_externref) + ) + ) + (drop + (loop $label$38 (result anyref) + (global.get $global_funcref) + ) + ) + (drop + (loop $label$39 (result anyref) + (ref.null func) + ) + ) + (drop + (loop $label$40 (result anyref) + (ref.func $foo) + ) + ) + (drop + (loop $label$41 (result anyref) + (local.get $local_exnref) + ) + ) + (drop + (loop $label$42 (result anyref) + (global.get $global_exnref) + ) + ) + (drop + (loop $label$43 (result anyref) + (ref.null exn) + ) + ) + (drop + (if (result externref) + (i32.const 1) + (local.get $local_funcref) + (ref.null extern) + ) + ) + (drop + (if (result funcref) + (i32.const 1) + (local.get $local_externref) + (ref.null func) + ) + ) + (drop + (if (result exnref) + (i32.const 1) + (local.get $local_exnref) + (ref.null exn) ) ) (drop (if (result anyref) (i32.const 1) - (local.get $1) - (local.get $3) + (local.get $local_anyref) + (ref.null any) ) ) (drop (if (result anyref) (i32.const 1) - (ref.func $foo) - (ref.null) + (local.get $local_funcref) + (local.get $local_externref) ) ) (drop - (if (result funcref) + (if (result anyref) (i32.const 1) - (ref.func $foo) - (ref.null) + (local.get $local_funcref) + (local.get $local_exnref) ) ) (drop - (if (result exnref) + (if (result anyref) (i32.const 1) - (local.get $3) - (ref.null) + (local.get $local_externref) + (local.get $local_exnref) ) ) (drop - (if (result nullref) + (if (result anyref) (i32.const 1) - (local.get $2) - (ref.null) + (ref.null extern) + (ref.null func) ) ) (drop - (try (result anyref) - (local.get $1) - (catch - (exnref.pop) - ) + (if (result anyref) + (i32.const 1) + (ref.null extern) + (ref.null exn) ) ) (drop - (try (result anyref) + (if (result anyref) + (i32.const 1) + (ref.null func) + (ref.null exn) + ) + ) + (drop + (if (result anyref) + (i32.const 1) (ref.func $foo) + (ref.null extern) + ) + ) + (drop + (try (result externref) + (do + (local.get $local_funcref) + ) (catch (drop - (exnref.pop) + (pop exnref) ) - (ref.null) + (ref.null extern) ) ) ) (drop (try (result funcref) - (ref.func $foo) + (do + (ref.func $foo) + ) (catch (drop - (exnref.pop) + (pop exnref) ) - (ref.null) + (ref.null func) ) ) ) (drop (try (result exnref) - (ref.null) + (do + (ref.null exn) + ) (catch - (exnref.pop) + (pop exnref) ) ) ) (drop - (try (result nullref) - (ref.null) + (try (result anyref) + (do + (local.get $local_funcref) + ) (catch (drop - (exnref.pop) + (pop exnref) ) - (ref.null) + (ref.func $foo) ) ) ) (drop - (select (result anyref) - (local.get $1) - (ref.func $foo) + (try (result anyref) + (do + (local.get $local_funcref) + ) + (catch + (pop exnref) + ) + ) + ) + (drop + (try (result anyref) + (do + (ref.func $foo) + ) + (catch + (drop + (pop exnref) + ) + (local.get $local_funcref) + ) + ) + ) + (drop + (try (result anyref) + (do + (ref.func $foo) + ) + (catch + (pop exnref) + ) + ) + ) + (drop + (try (result anyref) + (do + (ref.null exn) + ) + (catch + (drop + (pop exnref) + ) + (local.get $local_funcref) + ) + ) + ) + (drop + (try (result anyref) + (do + (ref.null exn) + ) + (catch + (drop + (pop exnref) + ) + (ref.func $foo) + ) + ) + ) + (drop + (select (result externref) + (local.get $local_funcref) + (ref.null extern) (i32.const 1) ) ) (drop - (select (result anyref) - (local.get $3) - (local.get $1) + (select (result funcref) + (local.get $local_externref) + (ref.null func) + (i32.const 1) + ) + ) + (drop + (select (result exnref) + (local.get $local_exnref) + (ref.null exn) + (i32.const 1) + ) + ) + (drop + (select + (i32.const 0) + (i32.const 2) (i32.const 1) ) ) (drop (select (result anyref) - (local.get $1) - (ref.null) + (local.get $local_funcref) + (local.get $local_externref) (i32.const 1) ) ) (drop (select (result anyref) - (ref.null) - (ref.func $foo) + (local.get $local_funcref) + (local.get $local_exnref) (i32.const 1) ) ) (drop - (select (result funcref) - (ref.func $foo) - (ref.null) + (select (result anyref) + (local.get $local_externref) + (local.get $local_funcref) (i32.const 1) ) ) (drop - (select (result exnref) - (ref.null) - (local.get $3) + (select (result anyref) + (local.get $local_externref) + (local.get $local_exnref) (i32.const 1) ) ) (drop - (select (result nullref) - (ref.null) - (ref.null) + (select (result anyref) + (local.get $local_exnref) + (local.get $local_funcref) (i32.const 1) ) ) (drop - (select - (i32.const 0) - (i32.const 2) + (select (result anyref) + (local.get $local_exnref) + (local.get $local_externref) (i32.const 1) ) ) (drop (ref.is_null - (local.get $1) + (local.get $local_funcref) + ) + ) + (drop + (ref.is_null + (global.get $global_externref) ) ) (drop (ref.is_null - (local.get $3) + (ref.null extern) + ) + ) + (drop + (ref.is_null + (local.get $local_externref) + ) + ) + (drop + (ref.is_null + (global.get $global_funcref) + ) + ) + (drop + (ref.is_null + (ref.null func) ) ) (drop @@ -429,63 +910,141 @@ ) (drop (ref.is_null - (ref.null) + (local.get $local_exnref) + ) + ) + (drop + (ref.is_null + (global.get $global_exnref) + ) + ) + (drop + (ref.is_null + (ref.null exn) + ) + ) + (drop + (ref.is_null + (local.get $local_anyref) ) ) + (drop + (ref.is_null + (global.get $global_anyref) + ) + ) + (drop + (ref.is_null + (ref.null any) + ) + ) + ) + (func $return_externref_local (result externref) + (local $local_externref externref) + (local.get $local_externref) + ) + (func $return_externref_global (result externref) + (global.get $global_externref) + ) + (func $return_externref_null (result externref) + (ref.null extern) + ) + (func $return_funcref_local (result funcref) + (local $local_funcref funcref) + (local.get $local_funcref) ) - (func $return_anyref (; 7 ;) (result anyref) - (local $0 anyref) - (local.get $0) + (func $return_funcref_global (result funcref) + (global.get $global_funcref) ) - (func $return_anyref2 (; 8 ;) (result anyref) + (func $return_funcref_null (result funcref) + (ref.null func) + ) + (func $return_funcref_func (result funcref) (ref.func $foo) ) - (func $return_anyref3 (; 9 ;) (result anyref) - (local $0 exnref) - (local.get $0) + (func $return_exnref_local (result exnref) + (local $local_exnref exnref) + (local.get $local_exnref) + ) + (func $return_exnref_global (result exnref) + (global.get $global_exnref) + ) + (func $return_exnref_null (result exnref) + (ref.null exn) + ) + (func $return_anyref_local (result anyref) + (local $local_anyref anyref) + (local.get $local_anyref) + ) + (func $return_anyref_global (result anyref) + (global.get $global_anyref) + ) + (func $return_anyref_null (result anyref) + (ref.null any) ) - (func $return_anyref4 (; 10 ;) (result anyref) - (ref.null) + (func $return_anyref2 (result anyref) + (local $local_externref externref) + (local.get $local_externref) ) - (func $return_funcref (; 11 ;) (result funcref) + (func $return_anyref3 (result anyref) + (global.get $global_externref) + ) + (func $return_anyref4 (result anyref) + (ref.null extern) + ) + (func $return_anyref5 (result anyref) + (local $local_funcref funcref) + (local.get $local_funcref) + ) + (func $return_anyref6 (result anyref) + (global.get $global_funcref) + ) + (func $return_anyref7 (result anyref) + (ref.null func) + ) + (func $return_anyref8 (result anyref) (ref.func $foo) ) - (func $return_funcref2 (; 12 ;) (result funcref) - (ref.null) + (func $return_anyref9 (result anyref) + (local $local_exnref exnref) + (local.get $local_exnref) + ) + (func $return_anyref10 (result anyref) + (global.get $global_exnref) ) - (func $return_exnref (; 13 ;) (result exnref) - (local $0 exnref) - (local.get $0) - ) - (func $return_exnref2 (; 14 ;) (result exnref) - (ref.null) - ) - (func $return_nullref (; 15 ;) (result nullref) - (local $0 nullref) - (local.get $0) - ) - (func $return_anyref_returns (; 16 ;) (result anyref) - (local $0 anyref) - (local $1 exnref) + (func $return_anyref11 (result anyref) + (ref.null exn) + ) + (func $returns_externref (result externref) + (local $local_externref externref) (return - (local.get $0) + (local.get $local_externref) ) ) - (func $return_funcref_returns (; 17 ;) (result funcref) + (func $returns_funcref (result funcref) + (local $local_funcref funcref) (return - (ref.func $foo) + (local.get $local_funcref) + ) + ) + (func $returns_exnref (result exnref) + (local $local_exnref exnref) + (return + (local.get $local_exnref) ) ) - (func $return_exnref_returns (; 18 ;) (result exnref) - (local $0 exnref) + (func $returns_anyref (result anyref) + (local $local_anyref anyref) (return - (local.get $0) + (local.get $local_anyref) ) ) - (func $return_nullref_returns (; 19 ;) (result nullref) - (local $0 nullref) + (func $returns_anyref2 (result anyref) + (local $local_externref funcref) + (local $local_funcref externref) + (local $local_exnref exnref) (return - (local.get $0) + (local.get $local_funcref) ) ) ) diff -Nru binaryen-91/test/reference-types.wast.fromBinary.noDebugInfo binaryen-99/test/reference-types.wast.fromBinary.noDebugInfo --- binaryen-91/test/reference-types.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/reference-types.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -1,150 +1,266 @@ (module - (type $anyref_=>_none (func (param anyref))) (type $none_=>_anyref (func (result anyref))) + (type $anyref_=>_none (func (param anyref))) (type $funcref_=>_none (func (param funcref))) - (type $nullref_=>_none (func (param nullref))) - (type $exnref_=>_none (func (param exnref))) (type $none_=>_funcref (func (result funcref))) + (type $externref_=>_none (func (param externref))) + (type $exnref_=>_none (func (param exnref))) + (type $none_=>_externref (func (result externref))) (type $none_=>_exnref (func (result exnref))) (type $none_=>_none (func)) - (type $none_=>_nullref (func (result nullref))) - (type $anyref_=>_funcref (func (param anyref) (result funcref))) - (import "env" "import_global" (global $gimport$1 anyref)) - (import "env" "import_func" (func $fimport$0 (param anyref) (result funcref))) + (type $externref_=>_funcref (func (param externref) (result funcref))) + (import "env" "import_global" (global $gimport$0 externref)) + (import "env" "import_func" (func $fimport$0 (param externref) (result funcref))) (table $0 4 4 funcref) (elem (i32.const 0) $0 $1 $2 $3) - (global $global$0 (mut anyref) (ref.null)) - (global $global$1 (mut funcref) (ref.null)) - (global $global$2 (mut exnref) (ref.null)) - (global $global$3 (mut nullref) (ref.null)) - (global $global$4 (mut anyref) (ref.func $4)) - (global $global$5 (mut funcref) (ref.func $4)) + (global $global$0 (mut externref) (ref.null extern)) + (global $global$1 (mut funcref) (ref.null func)) + (global $global$2 (mut funcref) (ref.func $4)) + (global $global$3 (mut exnref) (ref.null exn)) + (global $global$4 (mut anyref) (ref.null any)) + (global $global$5 (mut anyref) (ref.null extern)) + (global $global$6 (mut anyref) (ref.null func)) + (global $global$7 (mut anyref) (ref.func $4)) + (global $global$8 (mut anyref) (ref.null exn)) (export "export_func" (func $fimport$0)) - (export "export_global" (global $gimport$1)) - (func $0 (; 1 ;) (param $0 anyref) + (export "export_global" (global $gimport$0)) + (func $0 (param $0 externref) (nop) ) - (func $1 (; 2 ;) (param $0 funcref) + (func $1 (param $0 funcref) (nop) ) - (func $2 (; 3 ;) (param $0 exnref) + (func $2 (param $0 exnref) (nop) ) - (func $3 (; 4 ;) (param $0 nullref) + (func $3 (param $0 anyref) (nop) ) - (func $4 (; 5 ;) + (func $4 (nop) ) - (func $5 (; 6 ;) + (func $5 (local $0 funcref) - (local $1 anyref) - (local $2 nullref) - (local $3 exnref) + (local $1 externref) + (local $2 exnref) + (local $3 anyref) (local.set $1 (local.get $1) ) (local.set $1 - (local.get $0) - ) - (local.set $1 - (local.get $3) - ) - (local.set $1 - (local.get $2) - ) - (local.set $1 - (ref.null) + (global.get $global$0) ) (local.set $1 - (ref.func $4) + (ref.null extern) ) (local.set $0 (local.get $0) ) (local.set $0 - (ref.null) + (global.get $global$1) + ) + (local.set $0 + (ref.null func) ) (local.set $0 (ref.func $4) ) + (local.set $2 + (local.get $2) + ) + (local.set $2 + (global.get $global$3) + ) + (local.set $2 + (ref.null exn) + ) (local.set $3 (local.get $3) ) (local.set $3 - (ref.null) + (global.get $global$4) ) - (local.set $2 - (local.get $2) + (local.set $3 + (ref.null any) ) - (local.set $2 - (ref.null) + (local.set $3 + (local.get $1) ) - (global.set $global$0 + (local.set $3 (global.get $global$0) ) - (global.set $global$0 + (local.set $3 + (ref.null extern) + ) + (local.set $3 + (local.get $0) + ) + (local.set $3 (global.get $global$1) ) - (global.set $global$0 - (global.get $global$2) + (local.set $3 + (ref.null func) ) - (global.set $global$0 + (local.set $3 + (ref.func $4) + ) + (local.set $3 + (local.get $2) + ) + (local.set $3 (global.get $global$3) ) + (local.set $3 + (ref.null exn) + ) (global.set $global$0 - (ref.null) + (global.get $global$0) ) (global.set $global$0 - (ref.func $4) + (local.get $1) + ) + (global.set $global$0 + (ref.null extern) ) (global.set $global$1 (global.get $global$1) ) (global.set $global$1 - (ref.null) + (local.get $0) + ) + (global.set $global$1 + (ref.null func) ) (global.set $global$1 (ref.func $4) ) - (global.set $global$2 - (global.get $global$2) + (global.set $global$3 + (global.get $global$3) ) - (global.set $global$2 - (ref.null) + (global.set $global$3 + (local.get $2) ) (global.set $global$3 + (ref.null exn) + ) + (global.set $global$4 + (global.get $global$4) + ) + (global.set $global$4 + (local.get $3) + ) + (global.set $global$4 + (ref.null any) + ) + (global.set $global$4 + (global.get $global$0) + ) + (global.set $global$4 + (local.get $1) + ) + (global.set $global$4 + (ref.null extern) + ) + (global.set $global$4 + (global.get $global$1) + ) + (global.set $global$4 + (local.get $0) + ) + (global.set $global$4 + (ref.null func) + ) + (global.set $global$4 + (ref.func $4) + ) + (global.set $global$4 (global.get $global$3) ) - (global.set $global$3 - (ref.null) + (global.set $global$4 + (local.get $2) + ) + (global.set $global$4 + (ref.null exn) ) (call $0 (local.get $1) ) (call $0 - (local.get $0) + (global.get $global$0) ) (call $0 + (ref.null extern) + ) + (call $1 + (local.get $0) + ) + (call $1 + (global.get $global$1) + ) + (call $1 + (ref.null func) + ) + (call $1 + (ref.func $4) + ) + (call $2 + (local.get $2) + ) + (call $2 + (global.get $global$3) + ) + (call $2 + (ref.null exn) + ) + (call $3 (local.get $3) ) - (call $0 - (ref.null) + (call $3 + (global.get $global$4) ) - (call_indirect (type $anyref_=>_none) + (call $3 + (ref.null any) + ) + (call $3 (local.get $1) - (i32.const 0) ) - (call_indirect (type $anyref_=>_none) + (call $3 + (global.get $global$0) + ) + (call $3 + (ref.null extern) + ) + (call $3 (local.get $0) + ) + (call $3 + (global.get $global$1) + ) + (call $3 + (ref.null func) + ) + (call $3 + (ref.func $4) + ) + (call $3 + (local.get $2) + ) + (call $3 + (global.get $global$3) + ) + (call $3 + (ref.null exn) + ) + (call_indirect (type $externref_=>_none) + (local.get $1) (i32.const 0) ) - (call_indirect (type $anyref_=>_none) - (local.get $3) + (call_indirect (type $externref_=>_none) + (global.get $global$0) (i32.const 0) ) - (call_indirect (type $anyref_=>_none) - (ref.null) + (call_indirect (type $externref_=>_none) + (ref.null extern) (i32.const 0) ) (call_indirect (type $funcref_=>_none) @@ -152,27 +268,83 @@ (i32.const 1) ) (call_indirect (type $funcref_=>_none) - (ref.null) + (global.get $global$1) + (i32.const 1) + ) + (call_indirect (type $funcref_=>_none) + (ref.null func) + (i32.const 1) + ) + (call_indirect (type $funcref_=>_none) + (ref.func $4) (i32.const 1) ) (call_indirect (type $exnref_=>_none) - (local.get $3) + (local.get $2) + (i32.const 2) + ) + (call_indirect (type $exnref_=>_none) + (global.get $global$3) (i32.const 2) ) (call_indirect (type $exnref_=>_none) - (ref.null) + (ref.null exn) (i32.const 2) ) - (call_indirect (type $nullref_=>_none) + (call_indirect (type $anyref_=>_none) + (local.get $3) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (global.get $global$4) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (ref.null any) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (local.get $1) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (global.get $global$0) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (ref.null extern) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (local.get $0) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (global.get $global$1) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (ref.null func) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (ref.func $4) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) (local.get $2) (i32.const 3) ) - (call_indirect (type $nullref_=>_none) - (ref.null) + (call_indirect (type $anyref_=>_none) + (global.get $global$3) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (ref.null exn) (i32.const 3) ) (drop - (block $label$1 (result anyref) + (block $label$1 (result externref) (br_if $label$1 (local.get $1) (i32.const 1) @@ -180,25 +352,25 @@ ) ) (drop - (block $label$2 (result anyref) + (block $label$2 (result externref) (br_if $label$2 - (local.get $0) + (global.get $global$0) (i32.const 1) ) ) ) (drop - (block $label$3 (result anyref) + (block $label$3 (result externref) (br_if $label$3 - (local.get $3) + (ref.null extern) (i32.const 1) ) ) ) (drop - (block $label$4 (result anyref) + (block $label$4 (result funcref) (br_if $label$4 - (ref.null) + (local.get $0) (i32.const 1) ) ) @@ -206,202 +378,449 @@ (drop (block $label$5 (result funcref) (br_if $label$5 - (ref.null) + (global.get $global$1) (i32.const 1) ) ) ) (drop - (block $label$6 (result exnref) + (block $label$6 (result funcref) (br_if $label$6 - (ref.null) + (ref.null func) (i32.const 1) ) ) ) (drop - (block $label$7 (result nullref) + (block $label$7 (result funcref) (br_if $label$7 - (ref.null) + (ref.func $4) (i32.const 1) ) ) ) (drop - (loop $label$8 (result anyref) - (local.get $1) + (block $label$8 (result exnref) + (br_if $label$8 + (local.get $2) + (i32.const 1) + ) ) ) (drop - (loop $label$9 (result anyref) - (local.get $0) + (block $label$9 (result exnref) + (br_if $label$9 + (global.get $global$3) + (i32.const 1) + ) ) ) (drop - (loop $label$10 (result anyref) - (local.get $3) + (block $label$10 (result exnref) + (br_if $label$10 + (ref.null exn) + (i32.const 1) + ) ) ) (drop - (loop $label$11 (result anyref) - (ref.null) + (block $label$11 (result anyref) + (br_if $label$11 + (local.get $3) + (i32.const 1) + ) ) ) (drop - (loop $label$12 (result funcref) - (local.get $0) + (block $label$12 (result anyref) + (br_if $label$12 + (global.get $global$4) + (i32.const 1) + ) ) ) (drop - (loop $label$13 (result funcref) - (ref.null) + (block $label$13 (result anyref) + (br_if $label$13 + (ref.null any) + (i32.const 1) + ) ) ) (drop - (loop $label$14 (result exnref) - (local.get $3) + (block $label$14 (result anyref) + (br_if $label$14 + (local.get $1) + (i32.const 1) + ) ) ) (drop - (loop $label$15 (result exnref) - (ref.null) + (block $label$15 (result anyref) + (br_if $label$15 + (local.get $0) + (i32.const 1) + ) ) ) (drop - (loop $label$16 (result nullref) - (ref.null) + (block $label$16 (result anyref) + (br_if $label$16 + (local.get $2) + (i32.const 1) + ) ) ) (drop - (if (result anyref) - (i32.const 1) - (local.get $1) - (local.get $3) + (block $label$17 (result anyref) + (br_if $label$17 + (ref.null extern) + (i32.const 1) + ) ) ) (drop - (if (result anyref) - (i32.const 1) - (ref.func $4) - (ref.null) + (block $label$18 (result anyref) + (br_if $label$18 + (ref.null func) + (i32.const 1) + ) ) ) (drop - (if (result funcref) - (i32.const 1) - (ref.func $4) - (ref.null) + (block $label$19 (result anyref) + (br_if $label$19 + (ref.func $4) + (i32.const 1) + ) ) ) (drop - (if (result exnref) - (i32.const 1) - (local.get $3) - (ref.null) + (block $label$20 (result anyref) + (br_if $label$20 + (ref.null exn) + (i32.const 1) + ) ) ) (drop - (if (result nullref) - (i32.const 1) - (local.get $2) - (ref.null) + (loop $label$21 (result externref) + (local.get $1) ) ) (drop - (try (result anyref) - (local.get $1) - (catch - (exnref.pop) - ) + (loop $label$22 (result externref) + (global.get $global$0) ) ) (drop - (try (result anyref) - (ref.func $4) - (catch - (drop - (exnref.pop) - ) - (ref.null) - ) + (loop $label$23 (result externref) + (ref.null extern) ) ) (drop - (try (result funcref) - (ref.func $4) - (catch - (drop - (exnref.pop) - ) - (ref.null) - ) + (loop $label$24 (result funcref) + (local.get $0) ) ) (drop - (try (result exnref) - (ref.null) - (catch - (exnref.pop) - ) + (loop $label$25 (result funcref) + (global.get $global$1) ) ) (drop - (try (result nullref) - (ref.null) - (catch - (drop - (exnref.pop) - ) - (ref.null) - ) + (loop $label$26 (result funcref) + (ref.null func) ) ) (drop - (select (result anyref) + (loop $label$27 (result funcref) + (ref.func $4) + ) + ) + (drop + (loop $label$28 (result exnref) + (local.get $2) + ) + ) + (drop + (loop $label$29 (result exnref) + (global.get $global$3) + ) + ) + (drop + (loop $label$30 (result exnref) + (ref.null exn) + ) + ) + (drop + (loop $label$31 (result anyref) + (local.get $3) + ) + ) + (drop + (loop $label$32 (result anyref) + (global.get $global$4) + ) + ) + (drop + (loop $label$33 (result anyref) + (ref.null any) + ) + ) + (drop + (loop $label$34 (result anyref) (local.get $1) + ) + ) + (drop + (loop $label$35 (result anyref) + (global.get $global$0) + ) + ) + (drop + (loop $label$36 (result anyref) + (ref.null extern) + ) + ) + (drop + (loop $label$37 (result anyref) + (local.get $0) + ) + ) + (drop + (loop $label$38 (result anyref) + (global.get $global$1) + ) + ) + (drop + (loop $label$39 (result anyref) + (ref.null func) + ) + ) + (drop + (loop $label$40 (result anyref) (ref.func $4) + ) + ) + (drop + (loop $label$41 (result anyref) + (local.get $2) + ) + ) + (drop + (loop $label$42 (result anyref) + (global.get $global$3) + ) + ) + (drop + (loop $label$43 (result anyref) + (ref.null exn) + ) + ) + (drop + (if (result externref) (i32.const 1) + (local.get $1) + (ref.null extern) ) ) (drop - (select (result anyref) + (if (result funcref) + (i32.const 1) + (local.get $0) + (ref.null func) + ) + ) + (drop + (if (result exnref) + (i32.const 1) + (local.get $2) + (ref.null exn) + ) + ) + (drop + (if (result anyref) + (i32.const 1) (local.get $3) - (local.get $1) + (ref.null any) + ) + ) + (drop + (if (result anyref) (i32.const 1) + (local.get $1) + (local.get $0) ) ) (drop - (select (result anyref) + (if (result anyref) + (i32.const 1) (local.get $1) - (ref.null) + (local.get $2) + ) + ) + (drop + (if (result anyref) (i32.const 1) + (local.get $0) + (local.get $2) ) ) (drop - (select (result anyref) - (ref.null) - (ref.func $4) + (if (result anyref) (i32.const 1) + (ref.null extern) + (ref.null func) ) ) (drop - (select (result funcref) + (if (result anyref) + (i32.const 1) + (ref.null extern) + (ref.null exn) + ) + ) + (drop + (if (result anyref) + (i32.const 1) + (ref.null func) + (ref.null exn) + ) + ) + (drop + (if (result anyref) + (i32.const 1) (ref.func $4) - (ref.null) + (ref.null extern) + ) + ) + (drop + (try (result externref) + (do + (local.get $1) + ) + (catch + (drop + (pop exnref) + ) + (ref.null extern) + ) + ) + ) + (drop + (try (result funcref) + (do + (ref.func $4) + ) + (catch + (drop + (pop exnref) + ) + (ref.null func) + ) + ) + ) + (drop + (try (result exnref) + (do + (ref.null exn) + ) + (catch + (pop exnref) + ) + ) + ) + (drop + (try (result anyref) + (do + (local.get $1) + ) + (catch + (drop + (pop exnref) + ) + (ref.func $4) + ) + ) + ) + (drop + (try (result anyref) + (do + (local.get $1) + ) + (catch + (pop exnref) + ) + ) + ) + (drop + (try (result anyref) + (do + (ref.func $4) + ) + (catch + (drop + (pop exnref) + ) + (local.get $1) + ) + ) + ) + (drop + (try (result anyref) + (do + (ref.func $4) + ) + (catch + (pop exnref) + ) + ) + ) + (drop + (try (result anyref) + (do + (ref.null exn) + ) + (catch + (drop + (pop exnref) + ) + (local.get $1) + ) + ) + ) + (drop + (try (result anyref) + (do + (ref.null exn) + ) + (catch + (drop + (pop exnref) + ) + (ref.func $4) + ) + ) + ) + (drop + (select (result externref) + (local.get $1) + (ref.null extern) (i32.const 1) ) ) (drop - (select (result exnref) - (ref.null) - (local.get $3) + (select (result funcref) + (local.get $0) + (ref.null func) (i32.const 1) ) ) (drop - (select (result nullref) - (ref.null) - (ref.null) + (select (result exnref) + (local.get $2) + (ref.null exn) (i32.const 1) ) ) @@ -413,13 +832,75 @@ ) ) (drop + (select (result anyref) + (local.get $1) + (local.get $0) + (i32.const 1) + ) + ) + (drop + (select (result anyref) + (local.get $1) + (local.get $2) + (i32.const 1) + ) + ) + (drop + (select (result anyref) + (local.get $0) + (local.get $1) + (i32.const 1) + ) + ) + (drop + (select (result anyref) + (local.get $0) + (local.get $2) + (i32.const 1) + ) + ) + (drop + (select (result anyref) + (local.get $2) + (local.get $1) + (i32.const 1) + ) + ) + (drop + (select (result anyref) + (local.get $2) + (local.get $0) + (i32.const 1) + ) + ) + (drop (ref.is_null (local.get $1) ) ) (drop (ref.is_null - (local.get $3) + (global.get $global$0) + ) + ) + (drop + (ref.is_null + (ref.null extern) + ) + ) + (drop + (ref.is_null + (local.get $0) + ) + ) + (drop + (ref.is_null + (global.get $global$1) + ) + ) + (drop + (ref.is_null + (ref.null func) ) ) (drop @@ -429,64 +910,142 @@ ) (drop (ref.is_null - (ref.null) + (local.get $2) + ) + ) + (drop + (ref.is_null + (global.get $global$3) + ) + ) + (drop + (ref.is_null + (ref.null exn) + ) + ) + (drop + (ref.is_null + (local.get $3) + ) + ) + (drop + (ref.is_null + (global.get $global$4) + ) + ) + (drop + (ref.is_null + (ref.null any) ) ) ) - (func $6 (; 7 ;) (result anyref) - (local $0 anyref) + (func $6 (result externref) + (local $0 externref) + (local.get $0) + ) + (func $7 (result externref) + (global.get $global$0) + ) + (func $8 (result externref) + (ref.null extern) + ) + (func $9 (result funcref) + (local $0 funcref) (local.get $0) ) - (func $7 (; 8 ;) (result anyref) + (func $10 (result funcref) + (global.get $global$1) + ) + (func $11 (result funcref) + (ref.null func) + ) + (func $12 (result funcref) (ref.func $4) ) - (func $8 (; 9 ;) (result anyref) + (func $13 (result exnref) (local $0 exnref) (local.get $0) ) - (func $9 (; 10 ;) (result anyref) - (ref.null) + (func $14 (result exnref) + (global.get $global$3) ) - (func $10 (; 11 ;) (result funcref) - (ref.func $4) + (func $15 (result exnref) + (ref.null exn) + ) + (func $16 (result anyref) + (local $0 anyref) + (local.get $0) ) - (func $11 (; 12 ;) (result funcref) - (ref.null) + (func $17 (result anyref) + (global.get $global$4) ) - (func $12 (; 13 ;) (result exnref) - (local $0 exnref) + (func $18 (result anyref) + (ref.null any) + ) + (func $19 (result anyref) + (local $0 externref) (local.get $0) ) - (func $13 (; 14 ;) (result exnref) - (ref.null) + (func $20 (result anyref) + (global.get $global$0) ) - (func $14 (; 15 ;) (result nullref) - (local $0 nullref) + (func $21 (result anyref) + (ref.null extern) + ) + (func $22 (result anyref) + (local $0 funcref) (local.get $0) ) - (func $15 (; 16 ;) (result anyref) - (local $0 anyref) - (local $1 exnref) + (func $23 (result anyref) + (global.get $global$1) + ) + (func $24 (result anyref) + (ref.null func) + ) + (func $25 (result anyref) + (ref.func $4) + ) + (func $26 (result anyref) + (local $0 exnref) + (local.get $0) + ) + (func $27 (result anyref) + (global.get $global$3) + ) + (func $28 (result anyref) + (ref.null exn) + ) + (func $29 (result externref) + (local $0 externref) (return (local.get $0) ) ) - (func $16 (; 17 ;) (result funcref) + (func $30 (result funcref) + (local $0 funcref) (return - (ref.func $4) + (local.get $0) ) ) - (func $17 (; 18 ;) (result exnref) + (func $31 (result exnref) (local $0 exnref) (return (local.get $0) ) ) - (func $18 (; 19 ;) (result nullref) - (local $0 nullref) + (func $32 (result anyref) + (local $0 anyref) (return (local.get $0) ) ) + (func $33 (result anyref) + (local $0 funcref) + (local $1 externref) + (local $2 exnref) + (return + (local.get $1) + ) + ) ) diff -Nru binaryen-91/test/reference-types.wast.from-wast binaryen-99/test/reference-types.wast.from-wast --- binaryen-91/test/reference-types.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/reference-types.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,150 +1,266 @@ (module - (type $anyref_=>_none (func (param anyref))) (type $none_=>_anyref (func (result anyref))) + (type $anyref_=>_none (func (param anyref))) (type $funcref_=>_none (func (param funcref))) - (type $nullref_=>_none (func (param nullref))) - (type $exnref_=>_none (func (param exnref))) (type $none_=>_funcref (func (result funcref))) + (type $externref_=>_none (func (param externref))) + (type $exnref_=>_none (func (param exnref))) + (type $none_=>_externref (func (result externref))) (type $none_=>_exnref (func (result exnref))) (type $none_=>_none (func)) - (type $none_=>_nullref (func (result nullref))) - (type $anyref_=>_funcref (func (param anyref) (result funcref))) - (import "env" "import_global" (global $import_global anyref)) - (import "env" "import_func" (func $import_func (param anyref) (result funcref))) + (type $externref_=>_funcref (func (param externref) (result funcref))) + (import "env" "import_global" (global $import_global externref)) + (import "env" "import_func" (func $import_func (param externref) (result funcref))) (table $0 4 4 funcref) - (elem (i32.const 0) $take_anyref $take_funcref $take_exnref $take_nullref) - (global $global_anyref (mut anyref) (ref.null)) - (global $global_funcref (mut funcref) (ref.null)) - (global $global_exnref (mut exnref) (ref.null)) - (global $global_nullref (mut nullref) (ref.null)) - (global $global_anyref2 (mut anyref) (ref.func $foo)) - (global $global_funcref2 (mut funcref) (ref.func $foo)) + (elem (i32.const 0) $take_externref $take_funcref $take_exnref $take_anyref) + (global $global_externref (mut externref) (ref.null extern)) + (global $global_funcref (mut funcref) (ref.null func)) + (global $global_funcref_func (mut funcref) (ref.func $foo)) + (global $global_exnref (mut exnref) (ref.null exn)) + (global $global_anyref (mut anyref) (ref.null any)) + (global $global_anyref2 (mut anyref) (ref.null extern)) + (global $global_anyref3 (mut anyref) (ref.null func)) + (global $global_anyref4 (mut anyref) (ref.func $foo)) + (global $global_anyref5 (mut anyref) (ref.null exn)) (export "export_func" (func $import_func)) (export "export_global" (global $import_global)) - (func $take_anyref (; 1 ;) (param $0 anyref) + (func $take_externref (param $0 externref) (nop) ) - (func $take_funcref (; 2 ;) (param $0 funcref) + (func $take_funcref (param $0 funcref) (nop) ) - (func $take_exnref (; 3 ;) (param $0 exnref) + (func $take_exnref (param $0 exnref) (nop) ) - (func $take_nullref (; 4 ;) (param $0 nullref) + (func $take_anyref (param $0 anyref) (nop) ) - (func $foo (; 5 ;) + (func $foo (nop) ) - (func $test (; 6 ;) - (local $local_anyref anyref) + (func $test + (local $local_externref externref) (local $local_funcref funcref) (local $local_exnref exnref) - (local $local_nullref nullref) + (local $local_anyref anyref) + (local.set $local_externref + (local.get $local_externref) + ) + (local.set $local_externref + (global.get $global_externref) + ) + (local.set $local_externref + (ref.null extern) + ) + (local.set $local_funcref + (local.get $local_funcref) + ) + (local.set $local_funcref + (global.get $global_funcref) + ) + (local.set $local_funcref + (ref.null func) + ) + (local.set $local_funcref + (ref.func $foo) + ) + (local.set $local_exnref + (local.get $local_exnref) + ) + (local.set $local_exnref + (global.get $global_exnref) + ) + (local.set $local_exnref + (ref.null exn) + ) (local.set $local_anyref (local.get $local_anyref) ) (local.set $local_anyref - (local.get $local_funcref) + (global.get $global_anyref) ) (local.set $local_anyref - (local.get $local_exnref) + (ref.null any) ) (local.set $local_anyref - (local.get $local_nullref) + (local.get $local_externref) ) (local.set $local_anyref - (ref.null) + (global.get $global_externref) ) (local.set $local_anyref - (ref.func $foo) + (ref.null extern) ) - (local.set $local_funcref + (local.set $local_anyref (local.get $local_funcref) ) - (local.set $local_funcref - (ref.null) + (local.set $local_anyref + (global.get $global_funcref) ) - (local.set $local_funcref + (local.set $local_anyref + (ref.null func) + ) + (local.set $local_anyref (ref.func $foo) ) - (local.set $local_exnref + (local.set $local_anyref (local.get $local_exnref) ) - (local.set $local_exnref - (ref.null) + (local.set $local_anyref + (global.get $global_exnref) + ) + (local.set $local_anyref + (ref.null exn) + ) + (global.set $global_externref + (global.get $global_externref) + ) + (global.set $global_externref + (local.get $local_externref) + ) + (global.set $global_externref + (ref.null extern) + ) + (global.set $global_funcref + (global.get $global_funcref) + ) + (global.set $global_funcref + (local.get $local_funcref) + ) + (global.set $global_funcref + (ref.null func) + ) + (global.set $global_funcref + (ref.func $foo) + ) + (global.set $global_exnref + (global.get $global_exnref) ) - (local.set $local_nullref - (local.get $local_nullref) + (global.set $global_exnref + (local.get $local_exnref) ) - (local.set $local_nullref - (ref.null) + (global.set $global_exnref + (ref.null exn) ) (global.set $global_anyref (global.get $global_anyref) ) (global.set $global_anyref - (global.get $global_funcref) + (local.get $local_anyref) ) (global.set $global_anyref - (global.get $global_exnref) + (ref.null any) ) (global.set $global_anyref - (global.get $global_nullref) + (global.get $global_externref) ) (global.set $global_anyref - (ref.null) + (local.get $local_externref) ) (global.set $global_anyref - (ref.func $foo) + (ref.null extern) ) - (global.set $global_funcref + (global.set $global_anyref (global.get $global_funcref) ) - (global.set $global_funcref - (ref.null) + (global.set $global_anyref + (local.get $local_funcref) ) - (global.set $global_funcref + (global.set $global_anyref + (ref.null func) + ) + (global.set $global_anyref (ref.func $foo) ) - (global.set $global_exnref + (global.set $global_anyref (global.get $global_exnref) ) - (global.set $global_exnref - (ref.null) + (global.set $global_anyref + (local.get $local_exnref) + ) + (global.set $global_anyref + (ref.null exn) + ) + (call $take_externref + (local.get $local_externref) + ) + (call $take_externref + (global.get $global_externref) + ) + (call $take_externref + (ref.null extern) + ) + (call $take_funcref + (local.get $local_funcref) + ) + (call $take_funcref + (global.get $global_funcref) + ) + (call $take_funcref + (ref.null func) ) - (global.set $global_nullref - (global.get $global_nullref) + (call $take_funcref + (ref.func $foo) + ) + (call $take_exnref + (local.get $local_exnref) + ) + (call $take_exnref + (global.get $global_exnref) ) - (global.set $global_nullref - (ref.null) + (call $take_exnref + (ref.null exn) ) (call $take_anyref (local.get $local_anyref) ) (call $take_anyref + (global.get $global_anyref) + ) + (call $take_anyref + (ref.null any) + ) + (call $take_anyref + (local.get $local_externref) + ) + (call $take_anyref + (global.get $global_externref) + ) + (call $take_anyref + (ref.null extern) + ) + (call $take_anyref (local.get $local_funcref) ) (call $take_anyref + (global.get $global_funcref) + ) + (call $take_anyref + (ref.null func) + ) + (call $take_anyref + (ref.func $foo) + ) + (call $take_anyref (local.get $local_exnref) ) (call $take_anyref - (ref.null) + (global.get $global_exnref) ) - (call_indirect (type $anyref_=>_none) - (local.get $local_anyref) - (i32.const 0) + (call $take_anyref + (ref.null exn) ) - (call_indirect (type $anyref_=>_none) - (local.get $local_funcref) + (call_indirect (type $externref_=>_none) + (local.get $local_externref) (i32.const 0) ) - (call_indirect (type $anyref_=>_none) - (local.get $local_exnref) + (call_indirect (type $externref_=>_none) + (global.get $global_externref) (i32.const 0) ) - (call_indirect (type $anyref_=>_none) - (ref.null) + (call_indirect (type $externref_=>_none) + (ref.null extern) (i32.const 0) ) (call_indirect (type $funcref_=>_none) @@ -152,7 +268,15 @@ (i32.const 1) ) (call_indirect (type $funcref_=>_none) - (ref.null) + (global.get $global_funcref) + (i32.const 1) + ) + (call_indirect (type $funcref_=>_none) + (ref.null func) + (i32.const 1) + ) + (call_indirect (type $funcref_=>_none) + (ref.func $foo) (i32.const 1) ) (call_indirect (type $exnref_=>_none) @@ -160,45 +284,93 @@ (i32.const 2) ) (call_indirect (type $exnref_=>_none) - (ref.null) + (global.get $global_exnref) + (i32.const 2) + ) + (call_indirect (type $exnref_=>_none) + (ref.null exn) (i32.const 2) ) - (call_indirect (type $nullref_=>_none) - (local.get $local_nullref) + (call_indirect (type $anyref_=>_none) + (local.get $local_anyref) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (global.get $global_anyref) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (ref.null any) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (local.get $local_externref) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (global.get $global_externref) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (ref.null extern) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (local.get $local_funcref) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (global.get $global_funcref) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (ref.null func) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (ref.func $foo) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (local.get $local_exnref) + (i32.const 3) + ) + (call_indirect (type $anyref_=>_none) + (global.get $global_exnref) (i32.const 3) ) - (call_indirect (type $nullref_=>_none) - (ref.null) + (call_indirect (type $anyref_=>_none) + (ref.null exn) (i32.const 3) ) (drop - (block $block (result anyref) + (block $block (result externref) (br_if $block - (local.get $local_anyref) + (local.get $local_externref) (i32.const 1) ) ) ) (drop - (block $block0 (result anyref) + (block $block0 (result externref) (br_if $block0 - (local.get $local_funcref) + (global.get $global_externref) (i32.const 1) ) ) ) (drop - (block $block1 (result anyref) + (block $block1 (result externref) (br_if $block1 - (local.get $local_exnref) + (ref.null extern) (i32.const 1) ) ) ) (drop - (block $block2 (result anyref) + (block $block2 (result funcref) (br_if $block2 - (ref.null) + (local.get $local_funcref) (i32.const 1) ) ) @@ -206,220 +378,529 @@ (drop (block $block3 (result funcref) (br_if $block3 - (ref.null) + (global.get $global_funcref) (i32.const 1) ) ) ) (drop - (block $block4 (result exnref) + (block $block4 (result funcref) (br_if $block4 - (ref.null) + (ref.null func) (i32.const 1) ) ) ) (drop - (block $block5 (result nullref) + (block $block5 (result funcref) (br_if $block5 - (ref.null) + (ref.func $foo) (i32.const 1) ) ) ) (drop - (loop $loop-in (result anyref) - (local.get $local_anyref) + (block $block6 (result exnref) + (br_if $block6 + (local.get $local_exnref) + (i32.const 1) + ) ) ) (drop - (loop $loop-in6 (result anyref) - (local.get $local_funcref) + (block $block7 (result exnref) + (br_if $block7 + (global.get $global_exnref) + (i32.const 1) + ) ) ) (drop - (loop $loop-in7 (result anyref) - (local.get $local_exnref) + (block $block8 (result exnref) + (br_if $block8 + (ref.null exn) + (i32.const 1) + ) ) ) (drop - (loop $loop-in8 (result anyref) - (ref.null) + (block $block9 (result anyref) + (br_if $block9 + (local.get $local_anyref) + (i32.const 1) + ) ) ) (drop - (loop $loop-in9 (result funcref) - (local.get $local_funcref) + (block $block10 (result anyref) + (br_if $block10 + (global.get $global_anyref) + (i32.const 1) + ) ) ) (drop - (loop $loop-in10 (result funcref) - (ref.null) + (block $block11 (result anyref) + (br_if $block11 + (ref.null any) + (i32.const 1) + ) ) ) (drop - (loop $loop-in11 (result exnref) - (local.get $local_exnref) + (block $block12 (result anyref) + (br_if $block12 + (local.get $local_externref) + (i32.const 1) + ) ) ) (drop - (loop $loop-in12 (result exnref) - (ref.null) + (block $block13 (result anyref) + (br_if $block13 + (local.get $local_funcref) + (i32.const 1) + ) ) ) (drop - (loop $loop-in13 (result nullref) - (ref.null) + (block $block14 (result anyref) + (br_if $block14 + (local.get $local_exnref) + (i32.const 1) + ) ) ) (drop - (if (result anyref) - (i32.const 1) - (local.get $local_anyref) - (local.get $local_exnref) + (block $block15 (result anyref) + (br_if $block15 + (ref.null extern) + (i32.const 1) + ) ) ) (drop - (if (result anyref) - (i32.const 1) - (ref.func $foo) - (ref.null) + (block $block16 (result anyref) + (br_if $block16 + (ref.null func) + (i32.const 1) + ) ) ) (drop - (if (result funcref) - (i32.const 1) - (ref.func $foo) - (ref.null) + (block $block17 (result anyref) + (br_if $block17 + (ref.func $foo) + (i32.const 1) + ) ) ) (drop - (if (result exnref) - (i32.const 1) - (local.get $local_exnref) - (ref.null) + (block $block18 (result anyref) + (br_if $block18 + (ref.null exn) + (i32.const 1) + ) ) ) (drop - (if (result nullref) - (i32.const 1) - (local.get $local_nullref) - (ref.null) + (loop $loop-in (result externref) + (local.get $local_externref) ) ) (drop - (try (result anyref) - (local.get $local_anyref) - (catch - (exnref.pop) - ) + (loop $loop-in19 (result externref) + (global.get $global_externref) ) ) (drop - (try (result anyref) - (ref.func $foo) - (catch - (drop - (exnref.pop) - ) - (ref.null) - ) + (loop $loop-in20 (result externref) + (ref.null extern) ) ) (drop - (try (result funcref) - (ref.func $foo) - (catch - (drop - (exnref.pop) - ) - (ref.null) - ) + (loop $loop-in21 (result funcref) + (local.get $local_funcref) ) ) (drop - (try (result exnref) - (ref.null) - (catch - (exnref.pop) + (loop $loop-in22 (result funcref) + (global.get $global_funcref) + ) + ) + (drop + (loop $loop-in23 (result funcref) + (ref.null func) + ) + ) + (drop + (loop $loop-in24 (result funcref) + (ref.func $foo) + ) + ) + (drop + (loop $loop-in25 (result exnref) + (local.get $local_exnref) + ) + ) + (drop + (loop $loop-in26 (result exnref) + (global.get $global_exnref) + ) + ) + (drop + (loop $loop-in27 (result exnref) + (ref.null exn) + ) + ) + (drop + (loop $loop-in28 (result anyref) + (local.get $local_anyref) + ) + ) + (drop + (loop $loop-in29 (result anyref) + (global.get $global_anyref) + ) + ) + (drop + (loop $loop-in30 (result anyref) + (ref.null any) + ) + ) + (drop + (loop $loop-in31 (result anyref) + (local.get $local_externref) + ) + ) + (drop + (loop $loop-in32 (result anyref) + (global.get $global_externref) + ) + ) + (drop + (loop $loop-in33 (result anyref) + (ref.null extern) + ) + ) + (drop + (loop $loop-in34 (result anyref) + (local.get $local_funcref) + ) + ) + (drop + (loop $loop-in35 (result anyref) + (global.get $global_funcref) + ) + ) + (drop + (loop $loop-in36 (result anyref) + (ref.null func) + ) + ) + (drop + (loop $loop-in37 (result anyref) + (ref.func $foo) + ) + ) + (drop + (loop $loop-in38 (result anyref) + (local.get $local_exnref) + ) + ) + (drop + (loop $loop-in39 (result anyref) + (global.get $global_exnref) + ) + ) + (drop + (loop $loop-in40 (result anyref) + (ref.null exn) + ) + ) + (drop + (if (result externref) + (i32.const 1) + (local.get $local_externref) + (ref.null extern) + ) + ) + (drop + (if (result funcref) + (i32.const 1) + (local.get $local_funcref) + (ref.null func) + ) + ) + (drop + (if (result exnref) + (i32.const 1) + (local.get $local_exnref) + (ref.null exn) + ) + ) + (drop + (if (result anyref) + (i32.const 1) + (local.get $local_anyref) + (ref.null any) + ) + ) + (drop + (if (result anyref) + (i32.const 1) + (local.get $local_externref) + (local.get $local_funcref) + ) + ) + (drop + (if (result anyref) + (i32.const 1) + (local.get $local_externref) + (local.get $local_exnref) + ) + ) + (drop + (if (result anyref) + (i32.const 1) + (local.get $local_funcref) + (local.get $local_exnref) + ) + ) + (drop + (if (result anyref) + (i32.const 1) + (ref.null extern) + (ref.null func) + ) + ) + (drop + (if (result anyref) + (i32.const 1) + (ref.null extern) + (ref.null exn) + ) + ) + (drop + (if (result anyref) + (i32.const 1) + (ref.null func) + (ref.null exn) + ) + ) + (drop + (if (result anyref) + (i32.const 1) + (ref.func $foo) + (ref.null extern) + ) + ) + (drop + (try (result externref) + (do + (local.get $local_externref) + ) + (catch + (drop + (pop exnref) + ) + (ref.null extern) ) ) ) (drop - (try (result nullref) - (ref.null) + (try (result funcref) + (do + (ref.func $foo) + ) (catch (drop - (exnref.pop) + (pop exnref) ) - (ref.null) + (ref.null func) ) ) ) (drop - (select (result anyref) - (local.get $local_anyref) - (ref.func $foo) + (try (result exnref) + (do + (ref.null exn) + ) + (catch + (pop exnref) + ) + ) + ) + (drop + (try (result anyref) + (do + (local.get $local_externref) + ) + (catch + (drop + (pop exnref) + ) + (ref.func $foo) + ) + ) + ) + (drop + (try (result anyref) + (do + (local.get $local_externref) + ) + (catch + (pop exnref) + ) + ) + ) + (drop + (try (result anyref) + (do + (ref.func $foo) + ) + (catch + (drop + (pop exnref) + ) + (local.get $local_externref) + ) + ) + ) + (drop + (try (result anyref) + (do + (ref.func $foo) + ) + (catch + (pop exnref) + ) + ) + ) + (drop + (try (result anyref) + (do + (ref.null exn) + ) + (catch + (drop + (pop exnref) + ) + (local.get $local_externref) + ) + ) + ) + (drop + (try (result anyref) + (do + (ref.null exn) + ) + (catch + (drop + (pop exnref) + ) + (ref.func $foo) + ) + ) + ) + (drop + (select (result externref) + (local.get $local_externref) + (ref.null extern) (i32.const 1) ) ) (drop - (select (result anyref) + (select (result funcref) + (local.get $local_funcref) + (ref.null func) + (i32.const 1) + ) + ) + (drop + (select (result exnref) (local.get $local_exnref) - (local.get $local_anyref) + (ref.null exn) + (i32.const 1) + ) + ) + (drop + (select + (i32.const 0) + (i32.const 2) (i32.const 1) ) ) (drop (select (result anyref) - (local.get $local_anyref) - (ref.null) + (local.get $local_externref) + (local.get $local_funcref) (i32.const 1) ) ) (drop (select (result anyref) - (ref.null) - (ref.func $foo) + (local.get $local_externref) + (local.get $local_exnref) (i32.const 1) ) ) (drop - (select (result funcref) - (ref.func $foo) - (ref.null) + (select (result anyref) + (local.get $local_funcref) + (local.get $local_externref) (i32.const 1) ) ) (drop - (select (result exnref) - (ref.null) + (select (result anyref) + (local.get $local_funcref) (local.get $local_exnref) (i32.const 1) ) ) (drop - (select (result nullref) - (ref.null) - (ref.null) + (select (result anyref) + (local.get $local_exnref) + (local.get $local_externref) (i32.const 1) ) ) (drop - (select - (i32.const 0) - (i32.const 2) + (select (result anyref) + (local.get $local_exnref) + (local.get $local_funcref) (i32.const 1) ) ) (drop (ref.is_null - (local.get $local_anyref) + (local.get $local_externref) ) ) (drop (ref.is_null - (local.get $local_exnref) + (global.get $global_externref) + ) + ) + (drop + (ref.is_null + (ref.null extern) + ) + ) + (drop + (ref.is_null + (local.get $local_funcref) + ) + ) + (drop + (ref.is_null + (global.get $global_funcref) + ) + ) + (drop + (ref.is_null + (ref.null func) ) ) (drop @@ -429,81 +910,195 @@ ) (drop (ref.is_null - (ref.null) + (local.get $local_exnref) + ) + ) + (drop + (ref.is_null + (global.get $global_exnref) + ) + ) + (drop + (ref.is_null + (ref.null exn) + ) + ) + (drop + (ref.is_null + (local.get $local_anyref) + ) + ) + (drop + (ref.is_null + (global.get $global_anyref) + ) + ) + (drop + (ref.is_null + (ref.null any) ) ) ) - (func $return_anyref (; 7 ;) (result anyref) - (local $local_anyref anyref) - (local.get $local_anyref) + (func $return_externref_local (result externref) + (local $local_externref externref) + (local.get $local_externref) + ) + (func $return_externref_global (result externref) + (global.get $global_externref) + ) + (func $return_externref_null (result externref) + (ref.null extern) + ) + (func $return_funcref_local (result funcref) + (local $local_funcref funcref) + (local.get $local_funcref) + ) + (func $return_funcref_global (result funcref) + (global.get $global_funcref) ) - (func $return_anyref2 (; 8 ;) (result anyref) + (func $return_funcref_null (result funcref) + (ref.null func) + ) + (func $return_funcref_func (result funcref) (ref.func $foo) ) - (func $return_anyref3 (; 9 ;) (result anyref) + (func $return_exnref_local (result exnref) (local $local_exnref exnref) (local.get $local_exnref) ) - (func $return_anyref4 (; 10 ;) (result anyref) - (ref.null) + (func $return_exnref_global (result exnref) + (global.get $global_exnref) ) - (func $return_funcref (; 11 ;) (result funcref) - (ref.func $foo) + (func $return_exnref_null (result exnref) + (ref.null exn) + ) + (func $return_anyref_local (result anyref) + (local $local_anyref anyref) + (local.get $local_anyref) + ) + (func $return_anyref_global (result anyref) + (global.get $global_anyref) ) - (func $return_funcref2 (; 12 ;) (result funcref) - (ref.null) + (func $return_anyref_null (result anyref) + (ref.null any) + ) + (func $return_anyref2 (result anyref) + (local $local_externref externref) + (local.get $local_externref) + ) + (func $return_anyref3 (result anyref) + (global.get $global_externref) + ) + (func $return_anyref4 (result anyref) + (ref.null extern) + ) + (func $return_anyref5 (result anyref) + (local $local_funcref funcref) + (local.get $local_funcref) ) - (func $return_exnref (; 13 ;) (result exnref) + (func $return_anyref6 (result anyref) + (global.get $global_funcref) + ) + (func $return_anyref7 (result anyref) + (ref.null func) + ) + (func $return_anyref8 (result anyref) + (ref.func $foo) + ) + (func $return_anyref9 (result anyref) (local $local_exnref exnref) (local.get $local_exnref) ) - (func $return_exnref2 (; 14 ;) (result exnref) - (ref.null) + (func $return_anyref10 (result anyref) + (global.get $global_exnref) ) - (func $return_nullref (; 15 ;) (result nullref) - (local $local_nullref nullref) - (local.get $local_nullref) + (func $return_anyref11 (result anyref) + (ref.null exn) ) - (func $return_anyref_returns (; 16 ;) (result anyref) - (local $local_anyref anyref) - (local $local_exnref exnref) + (func $returns_externref (result externref) + (local $local_externref externref) (return - (local.get $local_anyref) + (local.get $local_externref) ) (return - (local.get $local_exnref) + (global.get $global_externref) ) (return - (ref.func $foo) + (ref.null extern) + ) + ) + (func $returns_funcref (result funcref) + (local $local_funcref funcref) + (return + (local.get $local_funcref) ) (return - (ref.null) + (global.get $global_funcref) ) - ) - (func $return_funcref_returns (; 17 ;) (result funcref) (return (ref.func $foo) ) (return - (ref.null) + (ref.null func) ) ) - (func $return_exnref_returns (; 18 ;) (result exnref) + (func $returns_exnref (result exnref) (local $local_exnref exnref) (return (local.get $local_exnref) ) (return - (ref.null) + (global.get $global_exnref) + ) + (return + (ref.null exn) ) ) - (func $return_nullref_returns (; 19 ;) (result nullref) - (local $local_nullref nullref) + (func $returns_anyref (result anyref) + (local $local_anyref anyref) + (return + (local.get $local_anyref) + ) + (return + (global.get $global_anyref) + ) + (return + (ref.null any) + ) + ) + (func $returns_anyref2 (result anyref) + (local $local_externref externref) + (local $local_funcref funcref) + (local $local_exnref exnref) (return - (local.get $local_nullref) + (local.get $local_externref) + ) + (return + (global.get $global_externref) + ) + (return + (ref.null extern) + ) + (return + (local.get $local_funcref) + ) + (return + (global.get $global_funcref) + ) + (return + (ref.func $foo) + ) + (return + (ref.null func) + ) + (return + (local.get $local_exnref) + ) + (return + (global.get $global_exnref) ) (return - (ref.null) + (ref.null exn) ) ) ) diff -Nru binaryen-91/test/reg_switch.wast.fromBinary binaryen-99/test/reg_switch.wast.fromBinary --- binaryen-91/test/reg_switch.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/reg_switch.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $0 (; 0 ;) + (func $0 (if (i32.const 0) (block $label$2 diff -Nru binaryen-91/test/reg_switch.wast.fromBinary.noDebugInfo binaryen-99/test/reg_switch.wast.fromBinary.noDebugInfo --- binaryen-91/test/reg_switch.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/reg_switch.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $0 (; 0 ;) + (func $0 (if (i32.const 0) (block $label$2 diff -Nru binaryen-91/test/reg_switch.wast.from-wast binaryen-99/test/reg_switch.wast.from-wast --- binaryen-91/test/reg_switch.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/reg_switch.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (memory $0 0) - (func $0 (; 0 ;) + (func $0 (if (i32.const 0) (block $A diff -Nru binaryen-91/test/signext.wast.fromBinary binaryen-99/test/signext.wast.fromBinary --- binaryen-91/test/signext.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/signext.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ (module (type $none_=>_none (func)) - (func $signext (; 0 ;) + (func $signext (local $0 i32) (local $1 i64) (drop diff -Nru binaryen-91/test/signext.wast.fromBinary.noDebugInfo binaryen-99/test/signext.wast.fromBinary.noDebugInfo --- binaryen-91/test/signext.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/signext.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ (module (type $none_=>_none (func)) - (func $0 (; 0 ;) + (func $0 (local $0 i32) (local $1 i64) (drop diff -Nru binaryen-91/test/signext.wast.from-wast binaryen-99/test/signext.wast.from-wast --- binaryen-91/test/signext.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/signext.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ (module (type $none_=>_none (func)) - (func $signext (; 0 ;) + (func $signext (local $0 i32) (local $1 i64) (drop diff -Nru binaryen-91/test/simd64.wast binaryen-99/test/simd64.wast --- binaryen-91/test/simd64.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/simd64.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,74 @@ +(module + (memory i64 1 1) + (func $v128.load (param $0 i64) (result v128) + (v128.load offset=0 align=16 + (local.get $0) + ) + ) + (func $v128.store (param $0 i64) (param $1 v128) + (v128.store offset=0 align=16 + (local.get $0) + (local.get $1) + ) + ) + (func $v8x16.load_splat (param $0 i64) (result v128) + (v8x16.load_splat + (local.get $0) + ) + ) + (func $v16x8.load_splat (param $0 i64) (result v128) + (v16x8.load_splat + (local.get $0) + ) + ) + (func $v32x4.load_splat (param $0 i64) (result v128) + (v32x4.load_splat + (local.get $0) + ) + ) + (func $v64x2.load_splat (param $0 i64) (result v128) + (v64x2.load_splat + (local.get $0) + ) + ) + (func $i16x8.load8x8_u (param $0 i64) (result v128) + (i16x8.load8x8_u + (local.get $0) + ) + ) + (func $i16x8.load8x8_s (param $0 i64) (result v128) + (i16x8.load8x8_s + (local.get $0) + ) + ) + (func $i32x4.load16x4_s (param $0 i64) (result v128) + (i32x4.load16x4_s + (local.get $0) + ) + ) + (func $i32x4.load16x4_u (param $0 i64) (result v128) + (i32x4.load16x4_u + (local.get $0) + ) + ) + (func $i64x2.load32x2_s (param $0 i64) (result v128) + (i64x2.load32x2_s + (local.get $0) + ) + ) + (func $i64x2.load32x2_u (param $0 i64) (result v128) + (i64x2.load32x2_u + (local.get $0) + ) + ) + (func $v128.load32_zero (param $0 i64) (result v128) + (v128.load32_zero + (local.get $0) + ) + ) + (func $v128.load64_zero (param $0 i64) (result v128) + (v128.load64_zero + (local.get $0) + ) + ) +) diff -Nru binaryen-91/test/simd64.wast.fromBinary binaryen-99/test/simd64.wast.fromBinary --- binaryen-91/test/simd64.wast.fromBinary 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/simd64.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,77 @@ +(module + (type $i64_=>_v128 (func (param i64) (result v128))) + (type $i64_v128_=>_none (func (param i64 v128))) + (memory $0 i64 1 1) + (func $v128.load (param $0 i64) (result v128) + (v128.load + (local.get $0) + ) + ) + (func $v128.store (param $0 i64) (param $1 v128) + (v128.store + (local.get $0) + (local.get $1) + ) + ) + (func $v8x16.load_splat (param $0 i64) (result v128) + (v8x16.load_splat + (local.get $0) + ) + ) + (func $v16x8.load_splat (param $0 i64) (result v128) + (v16x8.load_splat + (local.get $0) + ) + ) + (func $v32x4.load_splat (param $0 i64) (result v128) + (v32x4.load_splat + (local.get $0) + ) + ) + (func $v64x2.load_splat (param $0 i64) (result v128) + (v64x2.load_splat + (local.get $0) + ) + ) + (func $i16x8.load8x8_u (param $0 i64) (result v128) + (i16x8.load8x8_u + (local.get $0) + ) + ) + (func $i16x8.load8x8_s (param $0 i64) (result v128) + (i16x8.load8x8_s + (local.get $0) + ) + ) + (func $i32x4.load16x4_s (param $0 i64) (result v128) + (i32x4.load16x4_s + (local.get $0) + ) + ) + (func $i32x4.load16x4_u (param $0 i64) (result v128) + (i32x4.load16x4_u + (local.get $0) + ) + ) + (func $i64x2.load32x2_s (param $0 i64) (result v128) + (i64x2.load32x2_s + (local.get $0) + ) + ) + (func $i64x2.load32x2_u (param $0 i64) (result v128) + (i64x2.load32x2_u + (local.get $0) + ) + ) + (func $v128.load32_zero (param $0 i64) (result v128) + (v128.load32_zero + (local.get $0) + ) + ) + (func $v128.load64_zero (param $0 i64) (result v128) + (v128.load64_zero + (local.get $0) + ) + ) +) + diff -Nru binaryen-91/test/simd64.wast.fromBinary.noDebugInfo binaryen-99/test/simd64.wast.fromBinary.noDebugInfo --- binaryen-91/test/simd64.wast.fromBinary.noDebugInfo 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/simd64.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,77 @@ +(module + (type $i64_=>_v128 (func (param i64) (result v128))) + (type $i64_v128_=>_none (func (param i64 v128))) + (memory $0 i64 1 1) + (func $0 (param $0 i64) (result v128) + (v128.load + (local.get $0) + ) + ) + (func $1 (param $0 i64) (param $1 v128) + (v128.store + (local.get $0) + (local.get $1) + ) + ) + (func $2 (param $0 i64) (result v128) + (v8x16.load_splat + (local.get $0) + ) + ) + (func $3 (param $0 i64) (result v128) + (v16x8.load_splat + (local.get $0) + ) + ) + (func $4 (param $0 i64) (result v128) + (v32x4.load_splat + (local.get $0) + ) + ) + (func $5 (param $0 i64) (result v128) + (v64x2.load_splat + (local.get $0) + ) + ) + (func $6 (param $0 i64) (result v128) + (i16x8.load8x8_u + (local.get $0) + ) + ) + (func $7 (param $0 i64) (result v128) + (i16x8.load8x8_s + (local.get $0) + ) + ) + (func $8 (param $0 i64) (result v128) + (i32x4.load16x4_s + (local.get $0) + ) + ) + (func $9 (param $0 i64) (result v128) + (i32x4.load16x4_u + (local.get $0) + ) + ) + (func $10 (param $0 i64) (result v128) + (i64x2.load32x2_s + (local.get $0) + ) + ) + (func $11 (param $0 i64) (result v128) + (i64x2.load32x2_u + (local.get $0) + ) + ) + (func $12 (param $0 i64) (result v128) + (v128.load32_zero + (local.get $0) + ) + ) + (func $13 (param $0 i64) (result v128) + (v128.load64_zero + (local.get $0) + ) + ) +) + diff -Nru binaryen-91/test/simd64.wast.from-wast binaryen-99/test/simd64.wast.from-wast --- binaryen-91/test/simd64.wast.from-wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/simd64.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,76 @@ +(module + (type $i64_=>_v128 (func (param i64) (result v128))) + (type $i64_v128_=>_none (func (param i64 v128))) + (memory $0 i64 1 1) + (func $v128.load (param $0 i64) (result v128) + (v128.load + (local.get $0) + ) + ) + (func $v128.store (param $0 i64) (param $1 v128) + (v128.store + (local.get $0) + (local.get $1) + ) + ) + (func $v8x16.load_splat (param $0 i64) (result v128) + (v8x16.load_splat + (local.get $0) + ) + ) + (func $v16x8.load_splat (param $0 i64) (result v128) + (v16x8.load_splat + (local.get $0) + ) + ) + (func $v32x4.load_splat (param $0 i64) (result v128) + (v32x4.load_splat + (local.get $0) + ) + ) + (func $v64x2.load_splat (param $0 i64) (result v128) + (v64x2.load_splat + (local.get $0) + ) + ) + (func $i16x8.load8x8_u (param $0 i64) (result v128) + (i16x8.load8x8_u + (local.get $0) + ) + ) + (func $i16x8.load8x8_s (param $0 i64) (result v128) + (i16x8.load8x8_s + (local.get $0) + ) + ) + (func $i32x4.load16x4_s (param $0 i64) (result v128) + (i32x4.load16x4_s + (local.get $0) + ) + ) + (func $i32x4.load16x4_u (param $0 i64) (result v128) + (i32x4.load16x4_u + (local.get $0) + ) + ) + (func $i64x2.load32x2_s (param $0 i64) (result v128) + (i64x2.load32x2_s + (local.get $0) + ) + ) + (func $i64x2.load32x2_u (param $0 i64) (result v128) + (i64x2.load32x2_u + (local.get $0) + ) + ) + (func $v128.load32_zero (param $0 i64) (result v128) + (v128.load32_zero + (local.get $0) + ) + ) + (func $v128.load64_zero (param $0 i64) (result v128) + (v128.load64_zero + (local.get $0) + ) + ) +) diff -Nru binaryen-91/test/simd.wast binaryen-99/test/simd.wast --- binaryen-91/test/simd.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/simd.wast 2021-01-07 20:01:06.000000000 +0000 @@ -316,6 +316,12 @@ (local.get $1) ) ) + (func $i64x2.eq (param $0 v128) (param $1 v128) (result v128) + (i64x2.eq + (local.get $0) + (local.get $1) + ) + ) (func $f32x4.eq (param $0 v128) (param $1 v128) (result v128) (f32x4.eq (local.get $0) @@ -424,6 +430,128 @@ (local.get $2) ) ) + (func $v8x16.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v8x16.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $v16x8.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v16x8.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $v32x4.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v32x4.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $v64x2.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v64x2.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $v128.load8_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load8_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load16_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load16_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load32_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load32_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane_align (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane align=1 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane_offset (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane offset=32 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane_align_offset (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane align=1 offset=32 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store8_lane (param $0 i32) (param $1 v128) + (v128.store8_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store16_lane (param $0 i32) (param $1 v128) + (v128.store16_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store32_lane (param $0 i32) (param $1 v128) + (v128.store32_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane (param $0 i32) (param $1 v128) + (v128.store64_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane_align (param $0 i32) (param $1 v128) + (v128.store64_lane align=1 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane_offset (param $0 i32) (param $1 v128) + (v128.store64_lane offset=32 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane_align_offset (param $0 i32) (param $1 v128) + (v128.store64_lane align=1 offset=32 0 + (local.get $0) + (local.get $1) + ) + ) + (func $i8x16.popcnt (param $0 v128) (result v128) + (i8x16.popcnt + (local.get $0) + ) + ) + (func $i8x16.abs (param $0 v128) (result v128) + (i8x16.abs + (local.get $0) + ) + ) (func $i8x16.neg (param $0 v128) (result v128) (i8x16.neg (local.get $0) @@ -439,6 +567,11 @@ (local.get $0) ) ) + (func $i8x16.bitmask (param $0 v128) (result i32) + (i8x16.bitmask + (local.get $0) + ) + ) (func $i8x16.shl (param $0 v128) (param $1 i32) (result v128) (i8x16.shl (local.get $0) @@ -529,6 +662,11 @@ (local.get $1) ) ) + (func $i16x8.abs (param $0 v128) (result v128) + (i16x8.abs + (local.get $0) + ) + ) (func $i16x8.neg (param $0 v128) (result v128) (i16x8.neg (local.get $0) @@ -544,6 +682,11 @@ (local.get $0) ) ) + (func $i16x8.bitmask (param $0 v128) (result i32) + (i16x8.bitmask + (local.get $0) + ) + ) (func $i16x8.shl (param $0 v128) (param $1 i32) (result v128) (i16x8.shl (local.get $0) @@ -634,6 +777,41 @@ (local.get $1) ) ) + (func $i16x8.q15mulr_sat_s (param $0 v128) (param $1 v128) (result v128) + (i16x8.q15mulr_sat_s + (local.get $0) + (local.get $1) + ) + ) + (func $i16x8.extmul_low_i8x16_s (param $0 v128) (param $1 v128) (result v128) + (i16x8.extmul_low_i8x16_s + (local.get $0) + (local.get $1) + ) + ) + (func $i16x8.extmul_high_i8x16_s (param $0 v128) (param $1 v128) (result v128) + (i16x8.extmul_high_i8x16_s + (local.get $0) + (local.get $1) + ) + ) + (func $i16x8.extmul_low_i8x16_u (param $0 v128) (param $1 v128) (result v128) + (i16x8.extmul_low_i8x16_u + (local.get $0) + (local.get $1) + ) + ) + (func $i16x8.extmul_high_i8x16_u (param $0 v128) (param $1 v128) (result v128) + (i16x8.extmul_high_i8x16_u + (local.get $0) + (local.get $1) + ) + ) + (func $i32x4.abs (param $0 v128) (result v128) + (i32x4.abs + (local.get $0) + ) + ) (func $i32x4.neg (param $0 v128) (result v128) (i32x4.neg (local.get $0) @@ -649,6 +827,11 @@ (local.get $0) ) ) + (func $i32x4.bitmask (param $0 v128) (result i32) + (i32x4.bitmask + (local.get $0) + ) + ) (func $i32x4.shl (param $0 v128) (param $1 i32) (result v128) (i32x4.shl (local.get $0) @@ -715,18 +898,37 @@ (local.get $1) ) ) - (func $i64x2.neg (param $0 v128) (result v128) - (i64x2.neg + (func $i32x4.extmul_low_i16x8_s (param $0 v128) (param $1 v128) (result v128) + (i32x4.extmul_low_i16x8_s + (local.get $0) + (local.get $1) + ) + ) + (func $i32x4.extmul_high_i16x8_s (param $0 v128) (param $1 v128) (result v128) + (i32x4.extmul_high_i16x8_s + (local.get $0) + (local.get $1) + ) + ) + (func $i32x4.extmul_low_i16x8_u (param $0 v128) (param $1 v128) (result v128) + (i32x4.extmul_low_i16x8_u + (local.get $0) + (local.get $1) + ) + ) + (func $i32x4.extmul_high_i16x8_u (param $0 v128) (param $1 v128) (result v128) + (i32x4.extmul_high_i16x8_u (local.get $0) + (local.get $1) ) ) - (func $i64x2.any_true (param $0 v128) (result i32) - (i64x2.any_true + (func $i64x2.neg (param $0 v128) (result v128) + (i64x2.neg (local.get $0) ) ) - (func $i64x2.all_true (param $0 v128) (result i32) - (i64x2.all_true + (func $i64x2.bitmask (param $0 v128) (result i32) + (i64x2.bitmask (local.get $0) ) ) @@ -760,6 +962,36 @@ (local.get $1) ) ) + (func $i64x2.mul (param $0 v128) (param $1 v128) (result v128) + (i64x2.mul + (local.get $0) + (local.get $1) + ) + ) + (func $i64x2.extmul_low_i32x4_s (param $0 v128) (param $1 v128) (result v128) + (i64x2.extmul_low_i32x4_s + (local.get $0) + (local.get $1) + ) + ) + (func $i64x2.extmul_high_i32x4_s (param $0 v128) (param $1 v128) (result v128) + (i64x2.extmul_high_i32x4_s + (local.get $0) + (local.get $1) + ) + ) + (func $i64x2.extmul_low_i32x4_u (param $0 v128) (param $1 v128) (result v128) + (i64x2.extmul_low_i32x4_u + (local.get $0) + (local.get $1) + ) + ) + (func $i64x2.extmul_high_i32x4_u (param $0 v128) (param $1 v128) (result v128) + (i64x2.extmul_high_i32x4_u + (local.get $0) + (local.get $1) + ) + ) (func $f32x4.add (param $0 v128) (param $1 v128) (result v128) (f32x4.add (local.get $0) @@ -796,6 +1028,38 @@ (local.get $1) ) ) + (func $f32x4.pmin (param $0 v128) (param $1 v128) (result v128) + (f32x4.pmin + (local.get $0) + (local.get $1) + ) + ) + (func $f32x4.pmax (param $0 v128) (param $1 v128) (result v128) + (f32x4.pmax + (local.get $0) + (local.get $1) + ) + ) + (func $f32x4.ceil (param $0 v128) (result v128) + (f32x4.ceil + (local.get $0) + ) + ) + (func $f32x4.floor (param $0 v128) (result v128) + (f32x4.floor + (local.get $0) + ) + ) + (func $f32x4.trunc (param $0 v128) (result v128) + (f32x4.trunc + (local.get $0) + ) + ) + (func $f32x4.nearest (param $0 v128) (result v128) + (f32x4.nearest + (local.get $0) + ) + ) (func $f32x4.abs (param $0 v128) (result v128) (f32x4.abs (local.get $0) @@ -861,6 +1125,38 @@ (local.get $1) ) ) + (func $f64x2.pmin (param $0 v128) (param $1 v128) (result v128) + (f64x2.pmin + (local.get $0) + (local.get $1) + ) + ) + (func $f64x2.pmax (param $0 v128) (param $1 v128) (result v128) + (f64x2.pmax + (local.get $0) + (local.get $1) + ) + ) + (func $f64x2.ceil (param $0 v128) (result v128) + (f64x2.ceil + (local.get $0) + ) + ) + (func $f64x2.floor (param $0 v128) (result v128) + (f64x2.floor + (local.get $0) + ) + ) + (func $f64x2.trunc (param $0 v128) (result v128) + (f64x2.trunc + (local.get $0) + ) + ) + (func $f64x2.nearest (param $0 v128) (result v128) + (f64x2.nearest + (local.get $0) + ) + ) (func $f64x2.abs (param $0 v128) (result v128) (f64x2.abs (local.get $0) @@ -890,6 +1186,26 @@ (local.get $2) ) ) + (func $i16x8.extadd_pairwise_i8x16_s (param $0 v128) (result v128) + (i16x8.extadd_pairwise_i8x16_s + (local.get $0) + ) + ) + (func $i16x8.extadd_pairwise_i8x16_u (param $0 v128) (result v128) + (i16x8.extadd_pairwise_i8x16_u + (local.get $0) + ) + ) + (func $i32x4.extadd_pairwise_i16x8_s (param $0 v128) (result v128) + (i32x4.extadd_pairwise_i16x8_s + (local.get $0) + ) + ) + (func $i32x4.extadd_pairwise_i16x8_u (param $0 v128) (result v128) + (i32x4.extadd_pairwise_i16x8_u + (local.get $0) + ) + ) (func $i32x4.trunc_sat_f32x4_s (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_s (local.get $0) @@ -1014,6 +1330,26 @@ (local.get $0) ) ) + (func $i64x2.widen_low_i32x4_s (param $0 v128) (result v128) + (i64x2.widen_low_i32x4_s + (local.get $0) + ) + ) + (func $i64x2.widen_high_i32x4_s (param $0 v128) (result v128) + (i64x2.widen_high_i32x4_s + (local.get $0) + ) + ) + (func $i64x2.widen_low_i32x4_u (param $0 v128) (result v128) + (i64x2.widen_low_i32x4_u + (local.get $0) + ) + ) + (func $i64x2.widen_high_i32x4_u (param $0 v128) (result v128) + (i64x2.widen_high_i32x4_u + (local.get $0) + ) + ) (func $i16x8.load8x8_u (param $0 i32) (result v128) (i16x8.load8x8_u (local.get $0) @@ -1044,10 +1380,30 @@ (local.get $0) ) ) + (func $v128.load32_zero (param $0 i32) (result v128) + (v128.load32_zero + (local.get $0) + ) + ) + (func $v128.load64_zero (param $0 i32) (result v128) + (v128.load64_zero + (local.get $0) + ) + ) (func $v8x16.swizzle (param $0 v128) (param $1 v128) (result v128) (v8x16.swizzle (local.get $0) (local.get $1) ) ) + (func $prefetch.t (param $0 i32) + (prefetch.t offset=3 align=2 + (local.get $0) + ) + ) + (func $prefetch.nt (param $0 i32) + (prefetch.nt offset=3 align=2 + (local.get $0) + ) + ) ) diff -Nru binaryen-91/test/simd.wast.fromBinary binaryen-99/test/simd.wast.fromBinary --- binaryen-91/test/simd.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/simd.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,12 +1,14 @@ (module (type $v128_v128_=>_v128 (func (param v128 v128) (result v128))) (type $v128_=>_v128 (func (param v128) (result v128))) - (type $v128_i32_=>_v128 (func (param v128 i32) (result v128))) (type $i32_=>_v128 (func (param i32) (result v128))) (type $v128_=>_i32 (func (param v128) (result i32))) - (type $none_=>_v128 (func (result v128))) + (type $v128_i32_=>_v128 (func (param v128 i32) (result v128))) (type $v128_v128_v128_=>_v128 (func (param v128 v128 v128) (result v128))) (type $i32_v128_=>_none (func (param i32 v128))) + (type $i32_v128_=>_v128 (func (param i32 v128) (result v128))) + (type $none_=>_v128 (func (result v128))) + (type $i32_=>_none (func (param i32))) (type $v128_=>_i64 (func (param v128) (result i64))) (type $v128_=>_f32 (func (param v128) (result f32))) (type $v128_=>_f64 (func (param v128) (result f64))) @@ -16,1055 +18,1411 @@ (type $v128_f32_=>_v128 (func (param v128 f32) (result v128))) (type $v128_f64_=>_v128 (func (param v128 f64) (result v128))) (memory $0 1 1) - (func $v128.load (; 0 ;) (param $0 i32) (result v128) + (func $v128.load (param $0 i32) (result v128) (v128.load (local.get $0) ) ) - (func $v128.store (; 1 ;) (param $0 i32) (param $1 v128) + (func $v128.store (param $0 i32) (param $1 v128) (v128.store (local.get $0) (local.get $1) ) ) - (func $v128.const.i8x16 (; 2 ;) (result v128) + (func $v128.const.i8x16 (result v128) (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) - (func $v128.const.i16x8 (; 3 ;) (result v128) + (func $v128.const.i16x8 (result v128) (v128.const i32x4 0x00020001 0x00040003 0x00060005 0x00080007) ) - (func $v128.const.i32x4 (; 4 ;) (result v128) + (func $v128.const.i32x4 (result v128) (v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004) ) - (func $v128.const.i64x2 (; 5 ;) (result v128) + (func $v128.const.i64x2 (result v128) (v128.const i32x4 0x00000001 0x00000000 0x00000002 0x00000000) ) - (func $v128.const.f32x4 (; 6 ;) (result v128) + (func $v128.const.f32x4 (result v128) (v128.const i32x4 0x3f800000 0x40000000 0x40400000 0x40800000) ) - (func $v128.const.f64x2 (; 7 ;) (result v128) + (func $v128.const.f64x2 (result v128) (v128.const i32x4 0x00000000 0x3ff00000 0x00000000 0x40000000) ) - (func $v128.shuffle (; 8 ;) (param $0 v128) (param $1 v128) (result v128) + (func $v128.shuffle (param $0 v128) (param $1 v128) (result v128) (v8x16.shuffle 0 17 2 19 4 21 6 23 8 25 10 27 12 29 14 31 (local.get $0) (local.get $1) ) ) - (func $i8x16.splat (; 9 ;) (param $0 i32) (result v128) + (func $i8x16.splat (param $0 i32) (result v128) (i8x16.splat (local.get $0) ) ) - (func $i8x16.extract_lane_s (; 10 ;) (param $0 v128) (result i32) + (func $i8x16.extract_lane_s (param $0 v128) (result i32) (i8x16.extract_lane_s 0 (local.get $0) ) ) - (func $i8x16.extract_lane_u (; 11 ;) (param $0 v128) (result i32) + (func $i8x16.extract_lane_u (param $0 v128) (result i32) (i8x16.extract_lane_u 0 (local.get $0) ) ) - (func $i8x16.replace_lane (; 12 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.replace_lane (param $0 v128) (param $1 i32) (result v128) (i8x16.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i16x8.splat (; 13 ;) (param $0 i32) (result v128) + (func $i16x8.splat (param $0 i32) (result v128) (i16x8.splat (local.get $0) ) ) - (func $i16x8.extract_lane_s (; 14 ;) (param $0 v128) (result i32) + (func $i16x8.extract_lane_s (param $0 v128) (result i32) (i16x8.extract_lane_s 0 (local.get $0) ) ) - (func $i16x8.extract_lane_u (; 15 ;) (param $0 v128) (result i32) + (func $i16x8.extract_lane_u (param $0 v128) (result i32) (i16x8.extract_lane_u 0 (local.get $0) ) ) - (func $i16x8.replace_lane (; 16 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.replace_lane (param $0 v128) (param $1 i32) (result v128) (i16x8.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i32x4.splat (; 17 ;) (param $0 i32) (result v128) + (func $i32x4.splat (param $0 i32) (result v128) (i32x4.splat (local.get $0) ) ) - (func $i32x4.extract_lane (; 18 ;) (param $0 v128) (result i32) + (func $i32x4.extract_lane (param $0 v128) (result i32) (i32x4.extract_lane 0 (local.get $0) ) ) - (func $i32x4.replace_lane (; 19 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.replace_lane (param $0 v128) (param $1 i32) (result v128) (i32x4.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i64x2.extract_lane (; 20 ;) (param $0 v128) (result i64) + (func $i64x2.extract_lane (param $0 v128) (result i64) (i64x2.extract_lane 0 (local.get $0) ) ) - (func $i64x2.replace_lane (; 21 ;) (param $0 v128) (param $1 i64) (result v128) + (func $i64x2.replace_lane (param $0 v128) (param $1 i64) (result v128) (i64x2.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $f32x4.splat (; 22 ;) (param $0 f32) (result v128) + (func $f32x4.splat (param $0 f32) (result v128) (f32x4.splat (local.get $0) ) ) - (func $f32x4.extract_lane (; 23 ;) (param $0 v128) (result f32) + (func $f32x4.extract_lane (param $0 v128) (result f32) (f32x4.extract_lane 0 (local.get $0) ) ) - (func $f32x4.replace_lane (; 24 ;) (param $0 v128) (param $1 f32) (result v128) + (func $f32x4.replace_lane (param $0 v128) (param $1 f32) (result v128) (f32x4.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $f64x2.splat (; 25 ;) (param $0 f64) (result v128) + (func $f64x2.splat (param $0 f64) (result v128) (f64x2.splat (local.get $0) ) ) - (func $f64x2.extract_lane (; 26 ;) (param $0 v128) (result f64) + (func $f64x2.extract_lane (param $0 v128) (result f64) (f64x2.extract_lane 0 (local.get $0) ) ) - (func $f64x2.replace_lane (; 27 ;) (param $0 v128) (param $1 f64) (result v128) + (func $f64x2.replace_lane (param $0 v128) (param $1 f64) (result v128) (f64x2.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i8x16.eq (; 28 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.eq (param $0 v128) (param $1 v128) (result v128) (i8x16.eq (local.get $0) (local.get $1) ) ) - (func $i8x16.ne (; 29 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.ne (param $0 v128) (param $1 v128) (result v128) (i8x16.ne (local.get $0) (local.get $1) ) ) - (func $i8x16.lt_s (; 30 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.lt_s (param $0 v128) (param $1 v128) (result v128) (i8x16.lt_s (local.get $0) (local.get $1) ) ) - (func $i8x16.lt_u (; 31 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.lt_u (param $0 v128) (param $1 v128) (result v128) (i8x16.lt_u (local.get $0) (local.get $1) ) ) - (func $i8x16.gt_s (; 32 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.gt_s (param $0 v128) (param $1 v128) (result v128) (i8x16.gt_s (local.get $0) (local.get $1) ) ) - (func $i8x16.gt_u (; 33 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.gt_u (param $0 v128) (param $1 v128) (result v128) (i8x16.gt_u (local.get $0) (local.get $1) ) ) - (func $i8x16.le_s (; 34 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.le_s (param $0 v128) (param $1 v128) (result v128) (i8x16.le_s (local.get $0) (local.get $1) ) ) - (func $i8x16.le_u (; 35 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.le_u (param $0 v128) (param $1 v128) (result v128) (i8x16.le_u (local.get $0) (local.get $1) ) ) - (func $i8x16.ge_s (; 36 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.ge_s (param $0 v128) (param $1 v128) (result v128) (i8x16.ge_s (local.get $0) (local.get $1) ) ) - (func $i8x16.ge_u (; 37 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.ge_u (param $0 v128) (param $1 v128) (result v128) (i8x16.ge_u (local.get $0) (local.get $1) ) ) - (func $i16x8.eq (; 38 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.eq (param $0 v128) (param $1 v128) (result v128) (i16x8.eq (local.get $0) (local.get $1) ) ) - (func $i16x8.ne (; 39 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.ne (param $0 v128) (param $1 v128) (result v128) (i16x8.ne (local.get $0) (local.get $1) ) ) - (func $i16x8.lt_s (; 40 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.lt_s (param $0 v128) (param $1 v128) (result v128) (i16x8.lt_s (local.get $0) (local.get $1) ) ) - (func $i16x8.lt_u (; 41 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.lt_u (param $0 v128) (param $1 v128) (result v128) (i16x8.lt_u (local.get $0) (local.get $1) ) ) - (func $i16x8.gt_s (; 42 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.gt_s (param $0 v128) (param $1 v128) (result v128) (i16x8.gt_s (local.get $0) (local.get $1) ) ) - (func $i16x8.gt_u (; 43 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.gt_u (param $0 v128) (param $1 v128) (result v128) (i16x8.gt_u (local.get $0) (local.get $1) ) ) - (func $i16x8.le_s (; 44 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.le_s (param $0 v128) (param $1 v128) (result v128) (i16x8.le_s (local.get $0) (local.get $1) ) ) - (func $i16x8.le_u (; 45 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.le_u (param $0 v128) (param $1 v128) (result v128) (i16x8.le_u (local.get $0) (local.get $1) ) ) - (func $i16x8.ge_s (; 46 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.ge_s (param $0 v128) (param $1 v128) (result v128) (i16x8.ge_s (local.get $0) (local.get $1) ) ) - (func $i16x8.ge_u (; 47 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.ge_u (param $0 v128) (param $1 v128) (result v128) (i16x8.ge_u (local.get $0) (local.get $1) ) ) - (func $i32x4.eq (; 48 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.eq (param $0 v128) (param $1 v128) (result v128) (i32x4.eq (local.get $0) (local.get $1) ) ) - (func $i32x4.ne (; 49 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.ne (param $0 v128) (param $1 v128) (result v128) (i32x4.ne (local.get $0) (local.get $1) ) ) - (func $i32x4.lt_s (; 50 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.lt_s (param $0 v128) (param $1 v128) (result v128) (i32x4.lt_s (local.get $0) (local.get $1) ) ) - (func $i32x4.lt_u (; 51 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.lt_u (param $0 v128) (param $1 v128) (result v128) (i32x4.lt_u (local.get $0) (local.get $1) ) ) - (func $i32x4.gt_s (; 52 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.gt_s (param $0 v128) (param $1 v128) (result v128) (i32x4.gt_s (local.get $0) (local.get $1) ) ) - (func $i32x4.gt_u (; 53 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.gt_u (param $0 v128) (param $1 v128) (result v128) (i32x4.gt_u (local.get $0) (local.get $1) ) ) - (func $i32x4.le_s (; 54 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.le_s (param $0 v128) (param $1 v128) (result v128) (i32x4.le_s (local.get $0) (local.get $1) ) ) - (func $i32x4.le_u (; 55 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.le_u (param $0 v128) (param $1 v128) (result v128) (i32x4.le_u (local.get $0) (local.get $1) ) ) - (func $i32x4.ge_s (; 56 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.ge_s (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_s (local.get $0) (local.get $1) ) ) - (func $i32x4.ge_u (; 57 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.ge_u (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_u (local.get $0) (local.get $1) ) ) - (func $f32x4.eq (; 58 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.eq (param $0 v128) (param $1 v128) (result v128) + (i64x2.eq + (local.get $0) + (local.get $1) + ) + ) + (func $f32x4.eq (param $0 v128) (param $1 v128) (result v128) (f32x4.eq (local.get $0) (local.get $1) ) ) - (func $f32x4.ne (; 59 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.ne (param $0 v128) (param $1 v128) (result v128) (f32x4.ne (local.get $0) (local.get $1) ) ) - (func $f32x4.lt (; 60 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.lt (param $0 v128) (param $1 v128) (result v128) (f32x4.lt (local.get $0) (local.get $1) ) ) - (func $f32x4.gt (; 61 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.gt (param $0 v128) (param $1 v128) (result v128) (f32x4.gt (local.get $0) (local.get $1) ) ) - (func $f32x4.le (; 62 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.le (param $0 v128) (param $1 v128) (result v128) (f32x4.le (local.get $0) (local.get $1) ) ) - (func $f32x4.ge (; 63 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.ge (param $0 v128) (param $1 v128) (result v128) (f32x4.ge (local.get $0) (local.get $1) ) ) - (func $f64x2.eq (; 64 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.eq (param $0 v128) (param $1 v128) (result v128) (f64x2.eq (local.get $0) (local.get $1) ) ) - (func $f64x2.ne (; 65 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.ne (param $0 v128) (param $1 v128) (result v128) (f64x2.ne (local.get $0) (local.get $1) ) ) - (func $f64x2.lt (; 66 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.lt (param $0 v128) (param $1 v128) (result v128) (f64x2.lt (local.get $0) (local.get $1) ) ) - (func $f64x2.gt (; 67 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.gt (param $0 v128) (param $1 v128) (result v128) (f64x2.gt (local.get $0) (local.get $1) ) ) - (func $f64x2.le (; 68 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.le (param $0 v128) (param $1 v128) (result v128) (f64x2.le (local.get $0) (local.get $1) ) ) - (func $f64x2.ge (; 69 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.ge (param $0 v128) (param $1 v128) (result v128) (f64x2.ge (local.get $0) (local.get $1) ) ) - (func $v128.not (; 70 ;) (param $0 v128) (result v128) + (func $v128.not (param $0 v128) (result v128) (v128.not (local.get $0) ) ) - (func $v128.and (; 71 ;) (param $0 v128) (param $1 v128) (result v128) + (func $v128.and (param $0 v128) (param $1 v128) (result v128) (v128.and (local.get $0) (local.get $1) ) ) - (func $v128.or (; 72 ;) (param $0 v128) (param $1 v128) (result v128) + (func $v128.or (param $0 v128) (param $1 v128) (result v128) (v128.or (local.get $0) (local.get $1) ) ) - (func $v128.xor (; 73 ;) (param $0 v128) (param $1 v128) (result v128) + (func $v128.xor (param $0 v128) (param $1 v128) (result v128) (v128.xor (local.get $0) (local.get $1) ) ) - (func $v128.andnot (; 74 ;) (param $0 v128) (param $1 v128) (result v128) + (func $v128.andnot (param $0 v128) (param $1 v128) (result v128) (v128.andnot (local.get $0) (local.get $1) ) ) - (func $v128.bitselect (; 75 ;) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $v128.bitselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (v128.bitselect (local.get $0) (local.get $1) (local.get $2) ) ) - (func $i8x16.neg (; 76 ;) (param $0 v128) (result v128) + (func $v8x16.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v8x16.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $v16x8.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v16x8.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $v32x4.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v32x4.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $v64x2.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v64x2.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $v128.load8_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load8_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load16_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load16_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load32_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load32_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane_align (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane align=1 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane_offset (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane offset=32 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane_align_offset (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane offset=32 align=1 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store8_lane (param $0 i32) (param $1 v128) + (v128.store8_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store16_lane (param $0 i32) (param $1 v128) + (v128.store16_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store32_lane (param $0 i32) (param $1 v128) + (v128.store32_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane (param $0 i32) (param $1 v128) + (v128.store64_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane_align (param $0 i32) (param $1 v128) + (v128.store64_lane align=1 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane_offset (param $0 i32) (param $1 v128) + (v128.store64_lane offset=32 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane_align_offset (param $0 i32) (param $1 v128) + (v128.store64_lane offset=32 align=1 0 + (local.get $0) + (local.get $1) + ) + ) + (func $i8x16.popcnt (param $0 v128) (result v128) + (i8x16.popcnt + (local.get $0) + ) + ) + (func $i8x16.abs (param $0 v128) (result v128) + (i8x16.abs + (local.get $0) + ) + ) + (func $i8x16.neg (param $0 v128) (result v128) (i8x16.neg (local.get $0) ) ) - (func $i8x16.any_true (; 77 ;) (param $0 v128) (result i32) + (func $i8x16.any_true (param $0 v128) (result i32) (i8x16.any_true (local.get $0) ) ) - (func $i8x16.all_true (; 78 ;) (param $0 v128) (result i32) + (func $i8x16.all_true (param $0 v128) (result i32) (i8x16.all_true (local.get $0) ) ) - (func $i8x16.shl (; 79 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.bitmask (param $0 v128) (result i32) + (i8x16.bitmask + (local.get $0) + ) + ) + (func $i8x16.shl (param $0 v128) (param $1 i32) (result v128) (i8x16.shl (local.get $0) (local.get $1) ) ) - (func $i8x16.shr_s (; 80 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.shr_s (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_s (local.get $0) (local.get $1) ) ) - (func $i8x16.shr_u (; 81 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.shr_u (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_u (local.get $0) (local.get $1) ) ) - (func $i8x16.add (; 82 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.add (param $0 v128) (param $1 v128) (result v128) (i8x16.add (local.get $0) (local.get $1) ) ) - (func $i8x16.add_saturate_s (; 83 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.add_saturate_s (param $0 v128) (param $1 v128) (result v128) (i8x16.add_saturate_s (local.get $0) (local.get $1) ) ) - (func $i8x16.add_saturate_u (; 84 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.add_saturate_u (param $0 v128) (param $1 v128) (result v128) (i8x16.add_saturate_u (local.get $0) (local.get $1) ) ) - (func $i8x16.sub (; 85 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.sub (param $0 v128) (param $1 v128) (result v128) (i8x16.sub (local.get $0) (local.get $1) ) ) - (func $i8x16.sub_saturate_s (; 86 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.sub_saturate_s (param $0 v128) (param $1 v128) (result v128) (i8x16.sub_saturate_s (local.get $0) (local.get $1) ) ) - (func $i8x16.sub_saturate_u (; 87 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.sub_saturate_u (param $0 v128) (param $1 v128) (result v128) (i8x16.sub_saturate_u (local.get $0) (local.get $1) ) ) - (func $i8x16.mul (; 88 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.mul (param $0 v128) (param $1 v128) (result v128) (i8x16.mul (local.get $0) (local.get $1) ) ) - (func $i8x16.min_s (; 89 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.min_s (param $0 v128) (param $1 v128) (result v128) (i8x16.min_s (local.get $0) (local.get $1) ) ) - (func $i8x16.min_u (; 90 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.min_u (param $0 v128) (param $1 v128) (result v128) (i8x16.min_u (local.get $0) (local.get $1) ) ) - (func $i8x16.max_s (; 91 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.max_s (param $0 v128) (param $1 v128) (result v128) (i8x16.max_s (local.get $0) (local.get $1) ) ) - (func $i8x16.max_u (; 92 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.max_u (param $0 v128) (param $1 v128) (result v128) (i8x16.max_u (local.get $0) (local.get $1) ) ) - (func $i8x16.avgr_u (; 93 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.avgr_u (param $0 v128) (param $1 v128) (result v128) (i8x16.avgr_u (local.get $0) (local.get $1) ) ) - (func $i16x8.neg (; 94 ;) (param $0 v128) (result v128) + (func $i16x8.abs (param $0 v128) (result v128) + (i16x8.abs + (local.get $0) + ) + ) + (func $i16x8.neg (param $0 v128) (result v128) (i16x8.neg (local.get $0) ) ) - (func $i16x8.any_true (; 95 ;) (param $0 v128) (result i32) + (func $i16x8.any_true (param $0 v128) (result i32) (i16x8.any_true (local.get $0) ) ) - (func $i16x8.all_true (; 96 ;) (param $0 v128) (result i32) + (func $i16x8.all_true (param $0 v128) (result i32) (i16x8.all_true (local.get $0) ) ) - (func $i16x8.shl (; 97 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.bitmask (param $0 v128) (result i32) + (i16x8.bitmask + (local.get $0) + ) + ) + (func $i16x8.shl (param $0 v128) (param $1 i32) (result v128) (i16x8.shl (local.get $0) (local.get $1) ) ) - (func $i16x8.shr_s (; 98 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.shr_s (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_s (local.get $0) (local.get $1) ) ) - (func $i16x8.shr_u (; 99 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.shr_u (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_u (local.get $0) (local.get $1) ) ) - (func $i16x8.add (; 100 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.add (param $0 v128) (param $1 v128) (result v128) (i16x8.add (local.get $0) (local.get $1) ) ) - (func $i16x8.add_saturate_s (; 101 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.add_saturate_s (param $0 v128) (param $1 v128) (result v128) (i16x8.add_saturate_s (local.get $0) (local.get $1) ) ) - (func $i16x8.add_saturate_u (; 102 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.add_saturate_u (param $0 v128) (param $1 v128) (result v128) (i16x8.add_saturate_u (local.get $0) (local.get $1) ) ) - (func $i16x8.sub (; 103 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.sub (param $0 v128) (param $1 v128) (result v128) (i16x8.sub (local.get $0) (local.get $1) ) ) - (func $i16x8.sub_saturate_s (; 104 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.sub_saturate_s (param $0 v128) (param $1 v128) (result v128) (i16x8.sub_saturate_s (local.get $0) (local.get $1) ) ) - (func $i16x8.sub_saturate_u (; 105 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.sub_saturate_u (param $0 v128) (param $1 v128) (result v128) (i16x8.sub_saturate_u (local.get $0) (local.get $1) ) ) - (func $i16x8.mul (; 106 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.mul (param $0 v128) (param $1 v128) (result v128) (i16x8.mul (local.get $0) (local.get $1) ) ) - (func $i16x8.min_s (; 107 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.min_s (param $0 v128) (param $1 v128) (result v128) (i16x8.min_s (local.get $0) (local.get $1) ) ) - (func $i16x8.min_u (; 108 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.min_u (param $0 v128) (param $1 v128) (result v128) (i16x8.min_u (local.get $0) (local.get $1) ) ) - (func $i16x8.max_s (; 109 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.max_s (param $0 v128) (param $1 v128) (result v128) (i16x8.max_s (local.get $0) (local.get $1) ) ) - (func $i16x8.max_u (; 110 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.max_u (param $0 v128) (param $1 v128) (result v128) (i16x8.max_u (local.get $0) (local.get $1) ) ) - (func $i16x8.avgr_u (; 111 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.avgr_u (param $0 v128) (param $1 v128) (result v128) (i16x8.avgr_u (local.get $0) (local.get $1) ) ) - (func $i32x4.neg (; 112 ;) (param $0 v128) (result v128) + (func $i16x8.q15mulr_sat_s (param $0 v128) (param $1 v128) (result v128) + (i16x8.q15mulr_sat_s + (local.get $0) + (local.get $1) + ) + ) + (func $i16x8.extmul_low_i8x16_s (param $0 v128) (param $1 v128) (result v128) + (i16x8.extmul_low_i8x16_s + (local.get $0) + (local.get $1) + ) + ) + (func $i16x8.extmul_high_i8x16_s (param $0 v128) (param $1 v128) (result v128) + (i16x8.extmul_high_i8x16_s + (local.get $0) + (local.get $1) + ) + ) + (func $i16x8.extmul_low_i8x16_u (param $0 v128) (param $1 v128) (result v128) + (i16x8.extmul_low_i8x16_u + (local.get $0) + (local.get $1) + ) + ) + (func $i16x8.extmul_high_i8x16_u (param $0 v128) (param $1 v128) (result v128) + (i16x8.extmul_high_i8x16_u + (local.get $0) + (local.get $1) + ) + ) + (func $i32x4.abs (param $0 v128) (result v128) + (i32x4.abs + (local.get $0) + ) + ) + (func $i32x4.neg (param $0 v128) (result v128) (i32x4.neg (local.get $0) ) ) - (func $i32x4.any_true (; 113 ;) (param $0 v128) (result i32) + (func $i32x4.any_true (param $0 v128) (result i32) (i32x4.any_true (local.get $0) ) ) - (func $i32x4.all_true (; 114 ;) (param $0 v128) (result i32) + (func $i32x4.all_true (param $0 v128) (result i32) (i32x4.all_true (local.get $0) ) ) - (func $i32x4.shl (; 115 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.bitmask (param $0 v128) (result i32) + (i32x4.bitmask + (local.get $0) + ) + ) + (func $i32x4.shl (param $0 v128) (param $1 i32) (result v128) (i32x4.shl (local.get $0) (local.get $1) ) ) - (func $i32x4.shr_s (; 116 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.shr_s (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_s (local.get $0) (local.get $1) ) ) - (func $i32x4.shr_u (; 117 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.shr_u (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_u (local.get $0) (local.get $1) ) ) - (func $i32x4.add (; 118 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.add (param $0 v128) (param $1 v128) (result v128) (i32x4.add (local.get $0) (local.get $1) ) ) - (func $i32x4.sub (; 119 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.sub (param $0 v128) (param $1 v128) (result v128) (i32x4.sub (local.get $0) (local.get $1) ) ) - (func $i32x4.mul (; 120 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.mul (param $0 v128) (param $1 v128) (result v128) (i32x4.mul (local.get $0) (local.get $1) ) ) - (func $i32x4.min_s (; 121 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.min_s (param $0 v128) (param $1 v128) (result v128) (i32x4.min_s (local.get $0) (local.get $1) ) ) - (func $i32x4.min_u (; 122 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.min_u (param $0 v128) (param $1 v128) (result v128) (i32x4.min_u (local.get $0) (local.get $1) ) ) - (func $i32x4.max_s (; 123 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.max_s (param $0 v128) (param $1 v128) (result v128) (i32x4.max_s (local.get $0) (local.get $1) ) ) - (func $i32x4.max_u (; 124 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.max_u (param $0 v128) (param $1 v128) (result v128) (i32x4.max_u (local.get $0) (local.get $1) ) ) - (func $i32x4.dot_i16x8_s (; 125 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.dot_i16x8_s (param $0 v128) (param $1 v128) (result v128) (i32x4.dot_i16x8_s (local.get $0) (local.get $1) ) ) - (func $i64x2.neg (; 126 ;) (param $0 v128) (result v128) - (i64x2.neg + (func $i32x4.extmul_low_i16x8_s (param $0 v128) (param $1 v128) (result v128) + (i32x4.extmul_low_i16x8_s + (local.get $0) + (local.get $1) + ) + ) + (func $i32x4.extmul_high_i16x8_s (param $0 v128) (param $1 v128) (result v128) + (i32x4.extmul_high_i16x8_s + (local.get $0) + (local.get $1) + ) + ) + (func $i32x4.extmul_low_i16x8_u (param $0 v128) (param $1 v128) (result v128) + (i32x4.extmul_low_i16x8_u + (local.get $0) + (local.get $1) + ) + ) + (func $i32x4.extmul_high_i16x8_u (param $0 v128) (param $1 v128) (result v128) + (i32x4.extmul_high_i16x8_u (local.get $0) + (local.get $1) ) ) - (func $i64x2.any_true (; 127 ;) (param $0 v128) (result i32) - (i64x2.any_true + (func $i64x2.neg (param $0 v128) (result v128) + (i64x2.neg (local.get $0) ) ) - (func $i64x2.all_true (; 128 ;) (param $0 v128) (result i32) - (i64x2.all_true + (func $i64x2.bitmask (param $0 v128) (result i32) + (i64x2.bitmask (local.get $0) ) ) - (func $i64x2.shl (; 129 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i64x2.shl (param $0 v128) (param $1 i32) (result v128) (i64x2.shl (local.get $0) (local.get $1) ) ) - (func $i64x2.shr_s (; 130 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i64x2.shr_s (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_s (local.get $0) (local.get $1) ) ) - (func $i64x2.shr_u (; 131 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i64x2.shr_u (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_u (local.get $0) (local.get $1) ) ) - (func $i64x2.add (; 132 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.add (param $0 v128) (param $1 v128) (result v128) (i64x2.add (local.get $0) (local.get $1) ) ) - (func $i64x2.sub (; 133 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.sub (param $0 v128) (param $1 v128) (result v128) (i64x2.sub (local.get $0) (local.get $1) ) ) - (func $f32x4.add (; 134 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.mul (param $0 v128) (param $1 v128) (result v128) + (i64x2.mul + (local.get $0) + (local.get $1) + ) + ) + (func $i64x2.extmul_low_i32x4_s (param $0 v128) (param $1 v128) (result v128) + (i64x2.extmul_low_i32x4_s + (local.get $0) + (local.get $1) + ) + ) + (func $i64x2.extmul_high_i32x4_s (param $0 v128) (param $1 v128) (result v128) + (i64x2.extmul_high_i32x4_s + (local.get $0) + (local.get $1) + ) + ) + (func $i64x2.extmul_low_i32x4_u (param $0 v128) (param $1 v128) (result v128) + (i64x2.extmul_low_i32x4_u + (local.get $0) + (local.get $1) + ) + ) + (func $i64x2.extmul_high_i32x4_u (param $0 v128) (param $1 v128) (result v128) + (i64x2.extmul_high_i32x4_u + (local.get $0) + (local.get $1) + ) + ) + (func $f32x4.add (param $0 v128) (param $1 v128) (result v128) (f32x4.add (local.get $0) (local.get $1) ) ) - (func $f32x4.sub (; 135 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.sub (param $0 v128) (param $1 v128) (result v128) (f32x4.sub (local.get $0) (local.get $1) ) ) - (func $f32x4.mul (; 136 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.mul (param $0 v128) (param $1 v128) (result v128) (f32x4.mul (local.get $0) (local.get $1) ) ) - (func $f32x4.div (; 137 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.div (param $0 v128) (param $1 v128) (result v128) (f32x4.div (local.get $0) (local.get $1) ) ) - (func $f32x4.min (; 138 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.min (param $0 v128) (param $1 v128) (result v128) (f32x4.min (local.get $0) (local.get $1) ) ) - (func $f32x4.max (; 139 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.max (param $0 v128) (param $1 v128) (result v128) (f32x4.max (local.get $0) (local.get $1) ) ) - (func $f32x4.abs (; 140 ;) (param $0 v128) (result v128) + (func $f32x4.pmin (param $0 v128) (param $1 v128) (result v128) + (f32x4.pmin + (local.get $0) + (local.get $1) + ) + ) + (func $f32x4.pmax (param $0 v128) (param $1 v128) (result v128) + (f32x4.pmax + (local.get $0) + (local.get $1) + ) + ) + (func $f32x4.ceil (param $0 v128) (result v128) + (f32x4.ceil + (local.get $0) + ) + ) + (func $f32x4.floor (param $0 v128) (result v128) + (f32x4.floor + (local.get $0) + ) + ) + (func $f32x4.trunc (param $0 v128) (result v128) + (f32x4.trunc + (local.get $0) + ) + ) + (func $f32x4.nearest (param $0 v128) (result v128) + (f32x4.nearest + (local.get $0) + ) + ) + (func $f32x4.abs (param $0 v128) (result v128) (f32x4.abs (local.get $0) ) ) - (func $f32x4.neg (; 141 ;) (param $0 v128) (result v128) + (func $f32x4.neg (param $0 v128) (result v128) (f32x4.neg (local.get $0) ) ) - (func $f32x4.sqrt (; 142 ;) (param $0 v128) (result v128) + (func $f32x4.sqrt (param $0 v128) (result v128) (f32x4.sqrt (local.get $0) ) ) - (func $f32x4.qfma (; 143 ;) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $f32x4.qfma (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (f32x4.qfma (local.get $0) (local.get $1) (local.get $2) ) ) - (func $f32x4.qfms (; 144 ;) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $f32x4.qfms (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (f32x4.qfms (local.get $0) (local.get $1) (local.get $2) ) ) - (func $f64x2.add (; 145 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.add (param $0 v128) (param $1 v128) (result v128) (f64x2.add (local.get $0) (local.get $1) ) ) - (func $f64x2.sub (; 146 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.sub (param $0 v128) (param $1 v128) (result v128) (f64x2.sub (local.get $0) (local.get $1) ) ) - (func $f64x2.mul (; 147 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.mul (param $0 v128) (param $1 v128) (result v128) (f64x2.mul (local.get $0) (local.get $1) ) ) - (func $f64x2.div (; 148 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.div (param $0 v128) (param $1 v128) (result v128) (f64x2.div (local.get $0) (local.get $1) ) ) - (func $f64x2.min (; 149 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.min (param $0 v128) (param $1 v128) (result v128) (f64x2.min (local.get $0) (local.get $1) ) ) - (func $f64x2.max (; 150 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.max (param $0 v128) (param $1 v128) (result v128) (f64x2.max (local.get $0) (local.get $1) ) ) - (func $f64x2.abs (; 151 ;) (param $0 v128) (result v128) + (func $f64x2.pmin (param $0 v128) (param $1 v128) (result v128) + (f64x2.pmin + (local.get $0) + (local.get $1) + ) + ) + (func $f64x2.pmax (param $0 v128) (param $1 v128) (result v128) + (f64x2.pmax + (local.get $0) + (local.get $1) + ) + ) + (func $f64x2.ceil (param $0 v128) (result v128) + (f64x2.ceil + (local.get $0) + ) + ) + (func $f64x2.floor (param $0 v128) (result v128) + (f64x2.floor + (local.get $0) + ) + ) + (func $f64x2.trunc (param $0 v128) (result v128) + (f64x2.trunc + (local.get $0) + ) + ) + (func $f64x2.nearest (param $0 v128) (result v128) + (f64x2.nearest + (local.get $0) + ) + ) + (func $f64x2.abs (param $0 v128) (result v128) (f64x2.abs (local.get $0) ) ) - (func $f64x2.neg (; 152 ;) (param $0 v128) (result v128) + (func $f64x2.neg (param $0 v128) (result v128) (f64x2.neg (local.get $0) ) ) - (func $f64x2.sqrt (; 153 ;) (param $0 v128) (result v128) + (func $f64x2.sqrt (param $0 v128) (result v128) (f64x2.sqrt (local.get $0) ) ) - (func $f64x2.qfma (; 154 ;) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $f64x2.qfma (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (f64x2.qfma (local.get $0) (local.get $1) (local.get $2) ) ) - (func $f64x2.qfms (; 155 ;) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $f64x2.qfms (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (f64x2.qfms (local.get $0) (local.get $1) (local.get $2) ) ) - (func $i32x4.trunc_sat_f32x4_s (; 156 ;) (param $0 v128) (result v128) + (func $i16x8.extadd_pairwise_i8x16_s (param $0 v128) (result v128) + (i16x8.extadd_pairwise_i8x16_s + (local.get $0) + ) + ) + (func $i16x8.extadd_pairwise_i8x16_u (param $0 v128) (result v128) + (i16x8.extadd_pairwise_i8x16_u + (local.get $0) + ) + ) + (func $i32x4.extadd_pairwise_i16x8_s (param $0 v128) (result v128) + (i32x4.extadd_pairwise_i16x8_s + (local.get $0) + ) + ) + (func $i32x4.extadd_pairwise_i16x8_u (param $0 v128) (result v128) + (i32x4.extadd_pairwise_i16x8_u + (local.get $0) + ) + ) + (func $i32x4.trunc_sat_f32x4_s (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_s (local.get $0) ) ) - (func $i32x4.trunc_sat_f32x4_u (; 157 ;) (param $0 v128) (result v128) + (func $i32x4.trunc_sat_f32x4_u (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_u (local.get $0) ) ) - (func $i64x2.trunc_sat_f64x2_s (; 158 ;) (param $0 v128) (result v128) + (func $i64x2.trunc_sat_f64x2_s (param $0 v128) (result v128) (i64x2.trunc_sat_f64x2_s (local.get $0) ) ) - (func $i64x2.trunc_sat_f64x2_u (; 159 ;) (param $0 v128) (result v128) + (func $i64x2.trunc_sat_f64x2_u (param $0 v128) (result v128) (i64x2.trunc_sat_f64x2_u (local.get $0) ) ) - (func $f32x4.convert_i32x4_s (; 160 ;) (param $0 v128) (result v128) + (func $f32x4.convert_i32x4_s (param $0 v128) (result v128) (f32x4.convert_i32x4_s (local.get $0) ) ) - (func $f32x4.convert_i32x4_u (; 161 ;) (param $0 v128) (result v128) + (func $f32x4.convert_i32x4_u (param $0 v128) (result v128) (f32x4.convert_i32x4_u (local.get $0) ) ) - (func $f64x2.convert_i64x2_s (; 162 ;) (param $0 v128) (result v128) + (func $f64x2.convert_i64x2_s (param $0 v128) (result v128) (f64x2.convert_i64x2_s (local.get $0) ) ) - (func $f64x2.convert_i64x2_u (; 163 ;) (param $0 v128) (result v128) + (func $f64x2.convert_i64x2_u (param $0 v128) (result v128) (f64x2.convert_i64x2_u (local.get $0) ) ) - (func $v8x16.load_splat (; 164 ;) (param $0 i32) (result v128) + (func $v8x16.load_splat (param $0 i32) (result v128) (v8x16.load_splat (local.get $0) ) ) - (func $v16x8.load_splat (; 165 ;) (param $0 i32) (result v128) + (func $v16x8.load_splat (param $0 i32) (result v128) (v16x8.load_splat (local.get $0) ) ) - (func $v32x4.load_splat (; 166 ;) (param $0 i32) (result v128) + (func $v32x4.load_splat (param $0 i32) (result v128) (v32x4.load_splat (local.get $0) ) ) - (func $v64x2.load_splat (; 167 ;) (param $0 i32) (result v128) + (func $v64x2.load_splat (param $0 i32) (result v128) (v64x2.load_splat (local.get $0) ) ) - (func $i8x16.narrow_i16x8_s (; 168 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.narrow_i16x8_s (param $0 v128) (param $1 v128) (result v128) (i8x16.narrow_i16x8_s (local.get $0) (local.get $1) ) ) - (func $i8x16.narrow_i16x8_u (; 169 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.narrow_i16x8_u (param $0 v128) (param $1 v128) (result v128) (i8x16.narrow_i16x8_u (local.get $0) (local.get $1) ) ) - (func $i16x8.narrow_i32x4_s (; 170 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.narrow_i32x4_s (param $0 v128) (param $1 v128) (result v128) (i16x8.narrow_i32x4_s (local.get $0) (local.get $1) ) ) - (func $i16x8.narrow_i32x4_u (; 171 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.narrow_i32x4_u (param $0 v128) (param $1 v128) (result v128) (i16x8.narrow_i32x4_u (local.get $0) (local.get $1) ) ) - (func $i16x8.widen_low_i8x16_s (; 172 ;) (param $0 v128) (result v128) + (func $i16x8.widen_low_i8x16_s (param $0 v128) (result v128) (i16x8.widen_low_i8x16_s (local.get $0) ) ) - (func $i16x8.widen_high_i8x16_s (; 173 ;) (param $0 v128) (result v128) + (func $i16x8.widen_high_i8x16_s (param $0 v128) (result v128) (i16x8.widen_high_i8x16_s (local.get $0) ) ) - (func $i16x8.widen_low_i8x16_u (; 174 ;) (param $0 v128) (result v128) + (func $i16x8.widen_low_i8x16_u (param $0 v128) (result v128) (i16x8.widen_low_i8x16_u (local.get $0) ) ) - (func $i16x8.widen_high_i8x16_u (; 175 ;) (param $0 v128) (result v128) + (func $i16x8.widen_high_i8x16_u (param $0 v128) (result v128) (i16x8.widen_high_i8x16_u (local.get $0) ) ) - (func $i32x4.widen_low_i16x8_s (; 176 ;) (param $0 v128) (result v128) + (func $i32x4.widen_low_i16x8_s (param $0 v128) (result v128) (i32x4.widen_low_i16x8_s (local.get $0) ) ) - (func $i32x4.widen_high_i16x8_s (; 177 ;) (param $0 v128) (result v128) + (func $i32x4.widen_high_i16x8_s (param $0 v128) (result v128) (i32x4.widen_high_i16x8_s (local.get $0) ) ) - (func $i32x4.widen_low_i16x8_u (; 178 ;) (param $0 v128) (result v128) + (func $i32x4.widen_low_i16x8_u (param $0 v128) (result v128) (i32x4.widen_low_i16x8_u (local.get $0) ) ) - (func $i32x4.widen_high_i16x8_u (; 179 ;) (param $0 v128) (result v128) + (func $i32x4.widen_high_i16x8_u (param $0 v128) (result v128) (i32x4.widen_high_i16x8_u (local.get $0) ) ) - (func $i16x8.load8x8_u (; 180 ;) (param $0 i32) (result v128) + (func $i64x2.widen_low_i32x4_s (param $0 v128) (result v128) + (i64x2.widen_low_i32x4_s + (local.get $0) + ) + ) + (func $i64x2.widen_high_i32x4_s (param $0 v128) (result v128) + (i64x2.widen_high_i32x4_s + (local.get $0) + ) + ) + (func $i64x2.widen_low_i32x4_u (param $0 v128) (result v128) + (i64x2.widen_low_i32x4_u + (local.get $0) + ) + ) + (func $i64x2.widen_high_i32x4_u (param $0 v128) (result v128) + (i64x2.widen_high_i32x4_u + (local.get $0) + ) + ) + (func $i16x8.load8x8_u (param $0 i32) (result v128) (i16x8.load8x8_u (local.get $0) ) ) - (func $i16x8.load8x8_s (; 181 ;) (param $0 i32) (result v128) + (func $i16x8.load8x8_s (param $0 i32) (result v128) (i16x8.load8x8_s (local.get $0) ) ) - (func $i32x4.load16x4_s (; 182 ;) (param $0 i32) (result v128) + (func $i32x4.load16x4_s (param $0 i32) (result v128) (i32x4.load16x4_s (local.get $0) ) ) - (func $i32x4.load16x4_u (; 183 ;) (param $0 i32) (result v128) + (func $i32x4.load16x4_u (param $0 i32) (result v128) (i32x4.load16x4_u (local.get $0) ) ) - (func $i64x2.load32x2_s (; 184 ;) (param $0 i32) (result v128) + (func $i64x2.load32x2_s (param $0 i32) (result v128) (i64x2.load32x2_s (local.get $0) ) ) - (func $i64x2.load32x2_u (; 185 ;) (param $0 i32) (result v128) + (func $i64x2.load32x2_u (param $0 i32) (result v128) (i64x2.load32x2_u (local.get $0) ) ) - (func $v8x16.swizzle (; 186 ;) (param $0 v128) (param $1 v128) (result v128) + (func $v128.load32_zero (param $0 i32) (result v128) + (v128.load32_zero + (local.get $0) + ) + ) + (func $v128.load64_zero (param $0 i32) (result v128) + (v128.load64_zero + (local.get $0) + ) + ) + (func $v8x16.swizzle (param $0 v128) (param $1 v128) (result v128) (v8x16.swizzle (local.get $0) (local.get $1) ) ) + (func $prefetch.t (param $0 i32) + (prefetch.t offset=3 align=2 + (local.get $0) + ) + ) + (func $prefetch.nt (param $0 i32) + (prefetch.nt offset=3 align=2 + (local.get $0) + ) + ) ) diff -Nru binaryen-91/test/simd.wast.fromBinary.noDebugInfo binaryen-99/test/simd.wast.fromBinary.noDebugInfo --- binaryen-91/test/simd.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/simd.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -1,12 +1,14 @@ (module (type $v128_v128_=>_v128 (func (param v128 v128) (result v128))) (type $v128_=>_v128 (func (param v128) (result v128))) - (type $v128_i32_=>_v128 (func (param v128 i32) (result v128))) (type $i32_=>_v128 (func (param i32) (result v128))) (type $v128_=>_i32 (func (param v128) (result i32))) - (type $none_=>_v128 (func (result v128))) + (type $v128_i32_=>_v128 (func (param v128 i32) (result v128))) (type $v128_v128_v128_=>_v128 (func (param v128 v128 v128) (result v128))) (type $i32_v128_=>_none (func (param i32 v128))) + (type $i32_v128_=>_v128 (func (param i32 v128) (result v128))) + (type $none_=>_v128 (func (result v128))) + (type $i32_=>_none (func (param i32))) (type $v128_=>_i64 (func (param v128) (result i64))) (type $v128_=>_f32 (func (param v128) (result f32))) (type $v128_=>_f64 (func (param v128) (result f64))) @@ -16,1055 +18,1411 @@ (type $v128_f32_=>_v128 (func (param v128 f32) (result v128))) (type $v128_f64_=>_v128 (func (param v128 f64) (result v128))) (memory $0 1 1) - (func $0 (; 0 ;) (param $0 i32) (result v128) + (func $0 (param $0 i32) (result v128) (v128.load (local.get $0) ) ) - (func $1 (; 1 ;) (param $0 i32) (param $1 v128) + (func $1 (param $0 i32) (param $1 v128) (v128.store (local.get $0) (local.get $1) ) ) - (func $2 (; 2 ;) (result v128) + (func $2 (result v128) (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) - (func $3 (; 3 ;) (result v128) + (func $3 (result v128) (v128.const i32x4 0x00020001 0x00040003 0x00060005 0x00080007) ) - (func $4 (; 4 ;) (result v128) + (func $4 (result v128) (v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004) ) - (func $5 (; 5 ;) (result v128) + (func $5 (result v128) (v128.const i32x4 0x00000001 0x00000000 0x00000002 0x00000000) ) - (func $6 (; 6 ;) (result v128) + (func $6 (result v128) (v128.const i32x4 0x3f800000 0x40000000 0x40400000 0x40800000) ) - (func $7 (; 7 ;) (result v128) + (func $7 (result v128) (v128.const i32x4 0x00000000 0x3ff00000 0x00000000 0x40000000) ) - (func $8 (; 8 ;) (param $0 v128) (param $1 v128) (result v128) + (func $8 (param $0 v128) (param $1 v128) (result v128) (v8x16.shuffle 0 17 2 19 4 21 6 23 8 25 10 27 12 29 14 31 (local.get $0) (local.get $1) ) ) - (func $9 (; 9 ;) (param $0 i32) (result v128) + (func $9 (param $0 i32) (result v128) (i8x16.splat (local.get $0) ) ) - (func $10 (; 10 ;) (param $0 v128) (result i32) + (func $10 (param $0 v128) (result i32) (i8x16.extract_lane_s 0 (local.get $0) ) ) - (func $11 (; 11 ;) (param $0 v128) (result i32) + (func $11 (param $0 v128) (result i32) (i8x16.extract_lane_u 0 (local.get $0) ) ) - (func $12 (; 12 ;) (param $0 v128) (param $1 i32) (result v128) + (func $12 (param $0 v128) (param $1 i32) (result v128) (i8x16.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $13 (; 13 ;) (param $0 i32) (result v128) + (func $13 (param $0 i32) (result v128) (i16x8.splat (local.get $0) ) ) - (func $14 (; 14 ;) (param $0 v128) (result i32) + (func $14 (param $0 v128) (result i32) (i16x8.extract_lane_s 0 (local.get $0) ) ) - (func $15 (; 15 ;) (param $0 v128) (result i32) + (func $15 (param $0 v128) (result i32) (i16x8.extract_lane_u 0 (local.get $0) ) ) - (func $16 (; 16 ;) (param $0 v128) (param $1 i32) (result v128) + (func $16 (param $0 v128) (param $1 i32) (result v128) (i16x8.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $17 (; 17 ;) (param $0 i32) (result v128) + (func $17 (param $0 i32) (result v128) (i32x4.splat (local.get $0) ) ) - (func $18 (; 18 ;) (param $0 v128) (result i32) + (func $18 (param $0 v128) (result i32) (i32x4.extract_lane 0 (local.get $0) ) ) - (func $19 (; 19 ;) (param $0 v128) (param $1 i32) (result v128) + (func $19 (param $0 v128) (param $1 i32) (result v128) (i32x4.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $20 (; 20 ;) (param $0 v128) (result i64) + (func $20 (param $0 v128) (result i64) (i64x2.extract_lane 0 (local.get $0) ) ) - (func $21 (; 21 ;) (param $0 v128) (param $1 i64) (result v128) + (func $21 (param $0 v128) (param $1 i64) (result v128) (i64x2.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $22 (; 22 ;) (param $0 f32) (result v128) + (func $22 (param $0 f32) (result v128) (f32x4.splat (local.get $0) ) ) - (func $23 (; 23 ;) (param $0 v128) (result f32) + (func $23 (param $0 v128) (result f32) (f32x4.extract_lane 0 (local.get $0) ) ) - (func $24 (; 24 ;) (param $0 v128) (param $1 f32) (result v128) + (func $24 (param $0 v128) (param $1 f32) (result v128) (f32x4.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $25 (; 25 ;) (param $0 f64) (result v128) + (func $25 (param $0 f64) (result v128) (f64x2.splat (local.get $0) ) ) - (func $26 (; 26 ;) (param $0 v128) (result f64) + (func $26 (param $0 v128) (result f64) (f64x2.extract_lane 0 (local.get $0) ) ) - (func $27 (; 27 ;) (param $0 v128) (param $1 f64) (result v128) + (func $27 (param $0 v128) (param $1 f64) (result v128) (f64x2.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $28 (; 28 ;) (param $0 v128) (param $1 v128) (result v128) + (func $28 (param $0 v128) (param $1 v128) (result v128) (i8x16.eq (local.get $0) (local.get $1) ) ) - (func $29 (; 29 ;) (param $0 v128) (param $1 v128) (result v128) + (func $29 (param $0 v128) (param $1 v128) (result v128) (i8x16.ne (local.get $0) (local.get $1) ) ) - (func $30 (; 30 ;) (param $0 v128) (param $1 v128) (result v128) + (func $30 (param $0 v128) (param $1 v128) (result v128) (i8x16.lt_s (local.get $0) (local.get $1) ) ) - (func $31 (; 31 ;) (param $0 v128) (param $1 v128) (result v128) + (func $31 (param $0 v128) (param $1 v128) (result v128) (i8x16.lt_u (local.get $0) (local.get $1) ) ) - (func $32 (; 32 ;) (param $0 v128) (param $1 v128) (result v128) + (func $32 (param $0 v128) (param $1 v128) (result v128) (i8x16.gt_s (local.get $0) (local.get $1) ) ) - (func $33 (; 33 ;) (param $0 v128) (param $1 v128) (result v128) + (func $33 (param $0 v128) (param $1 v128) (result v128) (i8x16.gt_u (local.get $0) (local.get $1) ) ) - (func $34 (; 34 ;) (param $0 v128) (param $1 v128) (result v128) + (func $34 (param $0 v128) (param $1 v128) (result v128) (i8x16.le_s (local.get $0) (local.get $1) ) ) - (func $35 (; 35 ;) (param $0 v128) (param $1 v128) (result v128) + (func $35 (param $0 v128) (param $1 v128) (result v128) (i8x16.le_u (local.get $0) (local.get $1) ) ) - (func $36 (; 36 ;) (param $0 v128) (param $1 v128) (result v128) + (func $36 (param $0 v128) (param $1 v128) (result v128) (i8x16.ge_s (local.get $0) (local.get $1) ) ) - (func $37 (; 37 ;) (param $0 v128) (param $1 v128) (result v128) + (func $37 (param $0 v128) (param $1 v128) (result v128) (i8x16.ge_u (local.get $0) (local.get $1) ) ) - (func $38 (; 38 ;) (param $0 v128) (param $1 v128) (result v128) + (func $38 (param $0 v128) (param $1 v128) (result v128) (i16x8.eq (local.get $0) (local.get $1) ) ) - (func $39 (; 39 ;) (param $0 v128) (param $1 v128) (result v128) + (func $39 (param $0 v128) (param $1 v128) (result v128) (i16x8.ne (local.get $0) (local.get $1) ) ) - (func $40 (; 40 ;) (param $0 v128) (param $1 v128) (result v128) + (func $40 (param $0 v128) (param $1 v128) (result v128) (i16x8.lt_s (local.get $0) (local.get $1) ) ) - (func $41 (; 41 ;) (param $0 v128) (param $1 v128) (result v128) + (func $41 (param $0 v128) (param $1 v128) (result v128) (i16x8.lt_u (local.get $0) (local.get $1) ) ) - (func $42 (; 42 ;) (param $0 v128) (param $1 v128) (result v128) + (func $42 (param $0 v128) (param $1 v128) (result v128) (i16x8.gt_s (local.get $0) (local.get $1) ) ) - (func $43 (; 43 ;) (param $0 v128) (param $1 v128) (result v128) + (func $43 (param $0 v128) (param $1 v128) (result v128) (i16x8.gt_u (local.get $0) (local.get $1) ) ) - (func $44 (; 44 ;) (param $0 v128) (param $1 v128) (result v128) + (func $44 (param $0 v128) (param $1 v128) (result v128) (i16x8.le_s (local.get $0) (local.get $1) ) ) - (func $45 (; 45 ;) (param $0 v128) (param $1 v128) (result v128) + (func $45 (param $0 v128) (param $1 v128) (result v128) (i16x8.le_u (local.get $0) (local.get $1) ) ) - (func $46 (; 46 ;) (param $0 v128) (param $1 v128) (result v128) + (func $46 (param $0 v128) (param $1 v128) (result v128) (i16x8.ge_s (local.get $0) (local.get $1) ) ) - (func $47 (; 47 ;) (param $0 v128) (param $1 v128) (result v128) + (func $47 (param $0 v128) (param $1 v128) (result v128) (i16x8.ge_u (local.get $0) (local.get $1) ) ) - (func $48 (; 48 ;) (param $0 v128) (param $1 v128) (result v128) + (func $48 (param $0 v128) (param $1 v128) (result v128) (i32x4.eq (local.get $0) (local.get $1) ) ) - (func $49 (; 49 ;) (param $0 v128) (param $1 v128) (result v128) + (func $49 (param $0 v128) (param $1 v128) (result v128) (i32x4.ne (local.get $0) (local.get $1) ) ) - (func $50 (; 50 ;) (param $0 v128) (param $1 v128) (result v128) + (func $50 (param $0 v128) (param $1 v128) (result v128) (i32x4.lt_s (local.get $0) (local.get $1) ) ) - (func $51 (; 51 ;) (param $0 v128) (param $1 v128) (result v128) + (func $51 (param $0 v128) (param $1 v128) (result v128) (i32x4.lt_u (local.get $0) (local.get $1) ) ) - (func $52 (; 52 ;) (param $0 v128) (param $1 v128) (result v128) + (func $52 (param $0 v128) (param $1 v128) (result v128) (i32x4.gt_s (local.get $0) (local.get $1) ) ) - (func $53 (; 53 ;) (param $0 v128) (param $1 v128) (result v128) + (func $53 (param $0 v128) (param $1 v128) (result v128) (i32x4.gt_u (local.get $0) (local.get $1) ) ) - (func $54 (; 54 ;) (param $0 v128) (param $1 v128) (result v128) + (func $54 (param $0 v128) (param $1 v128) (result v128) (i32x4.le_s (local.get $0) (local.get $1) ) ) - (func $55 (; 55 ;) (param $0 v128) (param $1 v128) (result v128) + (func $55 (param $0 v128) (param $1 v128) (result v128) (i32x4.le_u (local.get $0) (local.get $1) ) ) - (func $56 (; 56 ;) (param $0 v128) (param $1 v128) (result v128) + (func $56 (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_s (local.get $0) (local.get $1) ) ) - (func $57 (; 57 ;) (param $0 v128) (param $1 v128) (result v128) + (func $57 (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_u (local.get $0) (local.get $1) ) ) - (func $58 (; 58 ;) (param $0 v128) (param $1 v128) (result v128) + (func $58 (param $0 v128) (param $1 v128) (result v128) + (i64x2.eq + (local.get $0) + (local.get $1) + ) + ) + (func $59 (param $0 v128) (param $1 v128) (result v128) (f32x4.eq (local.get $0) (local.get $1) ) ) - (func $59 (; 59 ;) (param $0 v128) (param $1 v128) (result v128) + (func $60 (param $0 v128) (param $1 v128) (result v128) (f32x4.ne (local.get $0) (local.get $1) ) ) - (func $60 (; 60 ;) (param $0 v128) (param $1 v128) (result v128) + (func $61 (param $0 v128) (param $1 v128) (result v128) (f32x4.lt (local.get $0) (local.get $1) ) ) - (func $61 (; 61 ;) (param $0 v128) (param $1 v128) (result v128) + (func $62 (param $0 v128) (param $1 v128) (result v128) (f32x4.gt (local.get $0) (local.get $1) ) ) - (func $62 (; 62 ;) (param $0 v128) (param $1 v128) (result v128) + (func $63 (param $0 v128) (param $1 v128) (result v128) (f32x4.le (local.get $0) (local.get $1) ) ) - (func $63 (; 63 ;) (param $0 v128) (param $1 v128) (result v128) + (func $64 (param $0 v128) (param $1 v128) (result v128) (f32x4.ge (local.get $0) (local.get $1) ) ) - (func $64 (; 64 ;) (param $0 v128) (param $1 v128) (result v128) + (func $65 (param $0 v128) (param $1 v128) (result v128) (f64x2.eq (local.get $0) (local.get $1) ) ) - (func $65 (; 65 ;) (param $0 v128) (param $1 v128) (result v128) + (func $66 (param $0 v128) (param $1 v128) (result v128) (f64x2.ne (local.get $0) (local.get $1) ) ) - (func $66 (; 66 ;) (param $0 v128) (param $1 v128) (result v128) + (func $67 (param $0 v128) (param $1 v128) (result v128) (f64x2.lt (local.get $0) (local.get $1) ) ) - (func $67 (; 67 ;) (param $0 v128) (param $1 v128) (result v128) + (func $68 (param $0 v128) (param $1 v128) (result v128) (f64x2.gt (local.get $0) (local.get $1) ) ) - (func $68 (; 68 ;) (param $0 v128) (param $1 v128) (result v128) + (func $69 (param $0 v128) (param $1 v128) (result v128) (f64x2.le (local.get $0) (local.get $1) ) ) - (func $69 (; 69 ;) (param $0 v128) (param $1 v128) (result v128) + (func $70 (param $0 v128) (param $1 v128) (result v128) (f64x2.ge (local.get $0) (local.get $1) ) ) - (func $70 (; 70 ;) (param $0 v128) (result v128) + (func $71 (param $0 v128) (result v128) (v128.not (local.get $0) ) ) - (func $71 (; 71 ;) (param $0 v128) (param $1 v128) (result v128) + (func $72 (param $0 v128) (param $1 v128) (result v128) (v128.and (local.get $0) (local.get $1) ) ) - (func $72 (; 72 ;) (param $0 v128) (param $1 v128) (result v128) + (func $73 (param $0 v128) (param $1 v128) (result v128) (v128.or (local.get $0) (local.get $1) ) ) - (func $73 (; 73 ;) (param $0 v128) (param $1 v128) (result v128) + (func $74 (param $0 v128) (param $1 v128) (result v128) (v128.xor (local.get $0) (local.get $1) ) ) - (func $74 (; 74 ;) (param $0 v128) (param $1 v128) (result v128) + (func $75 (param $0 v128) (param $1 v128) (result v128) (v128.andnot (local.get $0) (local.get $1) ) ) - (func $75 (; 75 ;) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $76 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (v128.bitselect (local.get $0) (local.get $1) (local.get $2) ) ) - (func $76 (; 76 ;) (param $0 v128) (result v128) + (func $77 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v8x16.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $78 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v16x8.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $79 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v32x4.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $80 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v64x2.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $81 (param $0 i32) (param $1 v128) (result v128) + (v128.load8_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $82 (param $0 i32) (param $1 v128) (result v128) + (v128.load16_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $83 (param $0 i32) (param $1 v128) (result v128) + (v128.load32_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $84 (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $85 (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane align=1 0 + (local.get $0) + (local.get $1) + ) + ) + (func $86 (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane offset=32 0 + (local.get $0) + (local.get $1) + ) + ) + (func $87 (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane offset=32 align=1 0 + (local.get $0) + (local.get $1) + ) + ) + (func $88 (param $0 i32) (param $1 v128) + (v128.store8_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $89 (param $0 i32) (param $1 v128) + (v128.store16_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $90 (param $0 i32) (param $1 v128) + (v128.store32_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $91 (param $0 i32) (param $1 v128) + (v128.store64_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $92 (param $0 i32) (param $1 v128) + (v128.store64_lane align=1 0 + (local.get $0) + (local.get $1) + ) + ) + (func $93 (param $0 i32) (param $1 v128) + (v128.store64_lane offset=32 0 + (local.get $0) + (local.get $1) + ) + ) + (func $94 (param $0 i32) (param $1 v128) + (v128.store64_lane offset=32 align=1 0 + (local.get $0) + (local.get $1) + ) + ) + (func $95 (param $0 v128) (result v128) + (i8x16.popcnt + (local.get $0) + ) + ) + (func $96 (param $0 v128) (result v128) + (i8x16.abs + (local.get $0) + ) + ) + (func $97 (param $0 v128) (result v128) (i8x16.neg (local.get $0) ) ) - (func $77 (; 77 ;) (param $0 v128) (result i32) + (func $98 (param $0 v128) (result i32) (i8x16.any_true (local.get $0) ) ) - (func $78 (; 78 ;) (param $0 v128) (result i32) + (func $99 (param $0 v128) (result i32) (i8x16.all_true (local.get $0) ) ) - (func $79 (; 79 ;) (param $0 v128) (param $1 i32) (result v128) + (func $100 (param $0 v128) (result i32) + (i8x16.bitmask + (local.get $0) + ) + ) + (func $101 (param $0 v128) (param $1 i32) (result v128) (i8x16.shl (local.get $0) (local.get $1) ) ) - (func $80 (; 80 ;) (param $0 v128) (param $1 i32) (result v128) + (func $102 (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_s (local.get $0) (local.get $1) ) ) - (func $81 (; 81 ;) (param $0 v128) (param $1 i32) (result v128) + (func $103 (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_u (local.get $0) (local.get $1) ) ) - (func $82 (; 82 ;) (param $0 v128) (param $1 v128) (result v128) + (func $104 (param $0 v128) (param $1 v128) (result v128) (i8x16.add (local.get $0) (local.get $1) ) ) - (func $83 (; 83 ;) (param $0 v128) (param $1 v128) (result v128) + (func $105 (param $0 v128) (param $1 v128) (result v128) (i8x16.add_saturate_s (local.get $0) (local.get $1) ) ) - (func $84 (; 84 ;) (param $0 v128) (param $1 v128) (result v128) + (func $106 (param $0 v128) (param $1 v128) (result v128) (i8x16.add_saturate_u (local.get $0) (local.get $1) ) ) - (func $85 (; 85 ;) (param $0 v128) (param $1 v128) (result v128) + (func $107 (param $0 v128) (param $1 v128) (result v128) (i8x16.sub (local.get $0) (local.get $1) ) ) - (func $86 (; 86 ;) (param $0 v128) (param $1 v128) (result v128) + (func $108 (param $0 v128) (param $1 v128) (result v128) (i8x16.sub_saturate_s (local.get $0) (local.get $1) ) ) - (func $87 (; 87 ;) (param $0 v128) (param $1 v128) (result v128) + (func $109 (param $0 v128) (param $1 v128) (result v128) (i8x16.sub_saturate_u (local.get $0) (local.get $1) ) ) - (func $88 (; 88 ;) (param $0 v128) (param $1 v128) (result v128) + (func $110 (param $0 v128) (param $1 v128) (result v128) (i8x16.mul (local.get $0) (local.get $1) ) ) - (func $89 (; 89 ;) (param $0 v128) (param $1 v128) (result v128) + (func $111 (param $0 v128) (param $1 v128) (result v128) (i8x16.min_s (local.get $0) (local.get $1) ) ) - (func $90 (; 90 ;) (param $0 v128) (param $1 v128) (result v128) + (func $112 (param $0 v128) (param $1 v128) (result v128) (i8x16.min_u (local.get $0) (local.get $1) ) ) - (func $91 (; 91 ;) (param $0 v128) (param $1 v128) (result v128) + (func $113 (param $0 v128) (param $1 v128) (result v128) (i8x16.max_s (local.get $0) (local.get $1) ) ) - (func $92 (; 92 ;) (param $0 v128) (param $1 v128) (result v128) + (func $114 (param $0 v128) (param $1 v128) (result v128) (i8x16.max_u (local.get $0) (local.get $1) ) ) - (func $93 (; 93 ;) (param $0 v128) (param $1 v128) (result v128) + (func $115 (param $0 v128) (param $1 v128) (result v128) (i8x16.avgr_u (local.get $0) (local.get $1) ) ) - (func $94 (; 94 ;) (param $0 v128) (result v128) + (func $116 (param $0 v128) (result v128) + (i16x8.abs + (local.get $0) + ) + ) + (func $117 (param $0 v128) (result v128) (i16x8.neg (local.get $0) ) ) - (func $95 (; 95 ;) (param $0 v128) (result i32) + (func $118 (param $0 v128) (result i32) (i16x8.any_true (local.get $0) ) ) - (func $96 (; 96 ;) (param $0 v128) (result i32) + (func $119 (param $0 v128) (result i32) (i16x8.all_true (local.get $0) ) ) - (func $97 (; 97 ;) (param $0 v128) (param $1 i32) (result v128) + (func $120 (param $0 v128) (result i32) + (i16x8.bitmask + (local.get $0) + ) + ) + (func $121 (param $0 v128) (param $1 i32) (result v128) (i16x8.shl (local.get $0) (local.get $1) ) ) - (func $98 (; 98 ;) (param $0 v128) (param $1 i32) (result v128) + (func $122 (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_s (local.get $0) (local.get $1) ) ) - (func $99 (; 99 ;) (param $0 v128) (param $1 i32) (result v128) + (func $123 (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_u (local.get $0) (local.get $1) ) ) - (func $100 (; 100 ;) (param $0 v128) (param $1 v128) (result v128) + (func $124 (param $0 v128) (param $1 v128) (result v128) (i16x8.add (local.get $0) (local.get $1) ) ) - (func $101 (; 101 ;) (param $0 v128) (param $1 v128) (result v128) + (func $125 (param $0 v128) (param $1 v128) (result v128) (i16x8.add_saturate_s (local.get $0) (local.get $1) ) ) - (func $102 (; 102 ;) (param $0 v128) (param $1 v128) (result v128) + (func $126 (param $0 v128) (param $1 v128) (result v128) (i16x8.add_saturate_u (local.get $0) (local.get $1) ) ) - (func $103 (; 103 ;) (param $0 v128) (param $1 v128) (result v128) + (func $127 (param $0 v128) (param $1 v128) (result v128) (i16x8.sub (local.get $0) (local.get $1) ) ) - (func $104 (; 104 ;) (param $0 v128) (param $1 v128) (result v128) + (func $128 (param $0 v128) (param $1 v128) (result v128) (i16x8.sub_saturate_s (local.get $0) (local.get $1) ) ) - (func $105 (; 105 ;) (param $0 v128) (param $1 v128) (result v128) + (func $129 (param $0 v128) (param $1 v128) (result v128) (i16x8.sub_saturate_u (local.get $0) (local.get $1) ) ) - (func $106 (; 106 ;) (param $0 v128) (param $1 v128) (result v128) + (func $130 (param $0 v128) (param $1 v128) (result v128) (i16x8.mul (local.get $0) (local.get $1) ) ) - (func $107 (; 107 ;) (param $0 v128) (param $1 v128) (result v128) + (func $131 (param $0 v128) (param $1 v128) (result v128) (i16x8.min_s (local.get $0) (local.get $1) ) ) - (func $108 (; 108 ;) (param $0 v128) (param $1 v128) (result v128) + (func $132 (param $0 v128) (param $1 v128) (result v128) (i16x8.min_u (local.get $0) (local.get $1) ) ) - (func $109 (; 109 ;) (param $0 v128) (param $1 v128) (result v128) + (func $133 (param $0 v128) (param $1 v128) (result v128) (i16x8.max_s (local.get $0) (local.get $1) ) ) - (func $110 (; 110 ;) (param $0 v128) (param $1 v128) (result v128) + (func $134 (param $0 v128) (param $1 v128) (result v128) (i16x8.max_u (local.get $0) (local.get $1) ) ) - (func $111 (; 111 ;) (param $0 v128) (param $1 v128) (result v128) + (func $135 (param $0 v128) (param $1 v128) (result v128) (i16x8.avgr_u (local.get $0) (local.get $1) ) ) - (func $112 (; 112 ;) (param $0 v128) (result v128) + (func $136 (param $0 v128) (param $1 v128) (result v128) + (i16x8.q15mulr_sat_s + (local.get $0) + (local.get $1) + ) + ) + (func $137 (param $0 v128) (param $1 v128) (result v128) + (i16x8.extmul_low_i8x16_s + (local.get $0) + (local.get $1) + ) + ) + (func $138 (param $0 v128) (param $1 v128) (result v128) + (i16x8.extmul_high_i8x16_s + (local.get $0) + (local.get $1) + ) + ) + (func $139 (param $0 v128) (param $1 v128) (result v128) + (i16x8.extmul_low_i8x16_u + (local.get $0) + (local.get $1) + ) + ) + (func $140 (param $0 v128) (param $1 v128) (result v128) + (i16x8.extmul_high_i8x16_u + (local.get $0) + (local.get $1) + ) + ) + (func $141 (param $0 v128) (result v128) + (i32x4.abs + (local.get $0) + ) + ) + (func $142 (param $0 v128) (result v128) (i32x4.neg (local.get $0) ) ) - (func $113 (; 113 ;) (param $0 v128) (result i32) + (func $143 (param $0 v128) (result i32) (i32x4.any_true (local.get $0) ) ) - (func $114 (; 114 ;) (param $0 v128) (result i32) + (func $144 (param $0 v128) (result i32) (i32x4.all_true (local.get $0) ) ) - (func $115 (; 115 ;) (param $0 v128) (param $1 i32) (result v128) + (func $145 (param $0 v128) (result i32) + (i32x4.bitmask + (local.get $0) + ) + ) + (func $146 (param $0 v128) (param $1 i32) (result v128) (i32x4.shl (local.get $0) (local.get $1) ) ) - (func $116 (; 116 ;) (param $0 v128) (param $1 i32) (result v128) + (func $147 (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_s (local.get $0) (local.get $1) ) ) - (func $117 (; 117 ;) (param $0 v128) (param $1 i32) (result v128) + (func $148 (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_u (local.get $0) (local.get $1) ) ) - (func $118 (; 118 ;) (param $0 v128) (param $1 v128) (result v128) + (func $149 (param $0 v128) (param $1 v128) (result v128) (i32x4.add (local.get $0) (local.get $1) ) ) - (func $119 (; 119 ;) (param $0 v128) (param $1 v128) (result v128) + (func $150 (param $0 v128) (param $1 v128) (result v128) (i32x4.sub (local.get $0) (local.get $1) ) ) - (func $120 (; 120 ;) (param $0 v128) (param $1 v128) (result v128) + (func $151 (param $0 v128) (param $1 v128) (result v128) (i32x4.mul (local.get $0) (local.get $1) ) ) - (func $121 (; 121 ;) (param $0 v128) (param $1 v128) (result v128) + (func $152 (param $0 v128) (param $1 v128) (result v128) (i32x4.min_s (local.get $0) (local.get $1) ) ) - (func $122 (; 122 ;) (param $0 v128) (param $1 v128) (result v128) + (func $153 (param $0 v128) (param $1 v128) (result v128) (i32x4.min_u (local.get $0) (local.get $1) ) ) - (func $123 (; 123 ;) (param $0 v128) (param $1 v128) (result v128) + (func $154 (param $0 v128) (param $1 v128) (result v128) (i32x4.max_s (local.get $0) (local.get $1) ) ) - (func $124 (; 124 ;) (param $0 v128) (param $1 v128) (result v128) + (func $155 (param $0 v128) (param $1 v128) (result v128) (i32x4.max_u (local.get $0) (local.get $1) ) ) - (func $125 (; 125 ;) (param $0 v128) (param $1 v128) (result v128) + (func $156 (param $0 v128) (param $1 v128) (result v128) (i32x4.dot_i16x8_s (local.get $0) (local.get $1) ) ) - (func $126 (; 126 ;) (param $0 v128) (result v128) - (i64x2.neg + (func $157 (param $0 v128) (param $1 v128) (result v128) + (i32x4.extmul_low_i16x8_s + (local.get $0) + (local.get $1) + ) + ) + (func $158 (param $0 v128) (param $1 v128) (result v128) + (i32x4.extmul_high_i16x8_s + (local.get $0) + (local.get $1) + ) + ) + (func $159 (param $0 v128) (param $1 v128) (result v128) + (i32x4.extmul_low_i16x8_u + (local.get $0) + (local.get $1) + ) + ) + (func $160 (param $0 v128) (param $1 v128) (result v128) + (i32x4.extmul_high_i16x8_u (local.get $0) + (local.get $1) ) ) - (func $127 (; 127 ;) (param $0 v128) (result i32) - (i64x2.any_true + (func $161 (param $0 v128) (result v128) + (i64x2.neg (local.get $0) ) ) - (func $128 (; 128 ;) (param $0 v128) (result i32) - (i64x2.all_true + (func $162 (param $0 v128) (result i32) + (i64x2.bitmask (local.get $0) ) ) - (func $129 (; 129 ;) (param $0 v128) (param $1 i32) (result v128) + (func $163 (param $0 v128) (param $1 i32) (result v128) (i64x2.shl (local.get $0) (local.get $1) ) ) - (func $130 (; 130 ;) (param $0 v128) (param $1 i32) (result v128) + (func $164 (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_s (local.get $0) (local.get $1) ) ) - (func $131 (; 131 ;) (param $0 v128) (param $1 i32) (result v128) + (func $165 (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_u (local.get $0) (local.get $1) ) ) - (func $132 (; 132 ;) (param $0 v128) (param $1 v128) (result v128) + (func $166 (param $0 v128) (param $1 v128) (result v128) (i64x2.add (local.get $0) (local.get $1) ) ) - (func $133 (; 133 ;) (param $0 v128) (param $1 v128) (result v128) + (func $167 (param $0 v128) (param $1 v128) (result v128) (i64x2.sub (local.get $0) (local.get $1) ) ) - (func $134 (; 134 ;) (param $0 v128) (param $1 v128) (result v128) + (func $168 (param $0 v128) (param $1 v128) (result v128) + (i64x2.mul + (local.get $0) + (local.get $1) + ) + ) + (func $169 (param $0 v128) (param $1 v128) (result v128) + (i64x2.extmul_low_i32x4_s + (local.get $0) + (local.get $1) + ) + ) + (func $170 (param $0 v128) (param $1 v128) (result v128) + (i64x2.extmul_high_i32x4_s + (local.get $0) + (local.get $1) + ) + ) + (func $171 (param $0 v128) (param $1 v128) (result v128) + (i64x2.extmul_low_i32x4_u + (local.get $0) + (local.get $1) + ) + ) + (func $172 (param $0 v128) (param $1 v128) (result v128) + (i64x2.extmul_high_i32x4_u + (local.get $0) + (local.get $1) + ) + ) + (func $173 (param $0 v128) (param $1 v128) (result v128) (f32x4.add (local.get $0) (local.get $1) ) ) - (func $135 (; 135 ;) (param $0 v128) (param $1 v128) (result v128) + (func $174 (param $0 v128) (param $1 v128) (result v128) (f32x4.sub (local.get $0) (local.get $1) ) ) - (func $136 (; 136 ;) (param $0 v128) (param $1 v128) (result v128) + (func $175 (param $0 v128) (param $1 v128) (result v128) (f32x4.mul (local.get $0) (local.get $1) ) ) - (func $137 (; 137 ;) (param $0 v128) (param $1 v128) (result v128) + (func $176 (param $0 v128) (param $1 v128) (result v128) (f32x4.div (local.get $0) (local.get $1) ) ) - (func $138 (; 138 ;) (param $0 v128) (param $1 v128) (result v128) + (func $177 (param $0 v128) (param $1 v128) (result v128) (f32x4.min (local.get $0) (local.get $1) ) ) - (func $139 (; 139 ;) (param $0 v128) (param $1 v128) (result v128) + (func $178 (param $0 v128) (param $1 v128) (result v128) (f32x4.max (local.get $0) (local.get $1) ) ) - (func $140 (; 140 ;) (param $0 v128) (result v128) + (func $179 (param $0 v128) (param $1 v128) (result v128) + (f32x4.pmin + (local.get $0) + (local.get $1) + ) + ) + (func $180 (param $0 v128) (param $1 v128) (result v128) + (f32x4.pmax + (local.get $0) + (local.get $1) + ) + ) + (func $181 (param $0 v128) (result v128) + (f32x4.ceil + (local.get $0) + ) + ) + (func $182 (param $0 v128) (result v128) + (f32x4.floor + (local.get $0) + ) + ) + (func $183 (param $0 v128) (result v128) + (f32x4.trunc + (local.get $0) + ) + ) + (func $184 (param $0 v128) (result v128) + (f32x4.nearest + (local.get $0) + ) + ) + (func $185 (param $0 v128) (result v128) (f32x4.abs (local.get $0) ) ) - (func $141 (; 141 ;) (param $0 v128) (result v128) + (func $186 (param $0 v128) (result v128) (f32x4.neg (local.get $0) ) ) - (func $142 (; 142 ;) (param $0 v128) (result v128) + (func $187 (param $0 v128) (result v128) (f32x4.sqrt (local.get $0) ) ) - (func $143 (; 143 ;) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $188 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (f32x4.qfma (local.get $0) (local.get $1) (local.get $2) ) ) - (func $144 (; 144 ;) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $189 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (f32x4.qfms (local.get $0) (local.get $1) (local.get $2) ) ) - (func $145 (; 145 ;) (param $0 v128) (param $1 v128) (result v128) + (func $190 (param $0 v128) (param $1 v128) (result v128) (f64x2.add (local.get $0) (local.get $1) ) ) - (func $146 (; 146 ;) (param $0 v128) (param $1 v128) (result v128) + (func $191 (param $0 v128) (param $1 v128) (result v128) (f64x2.sub (local.get $0) (local.get $1) ) ) - (func $147 (; 147 ;) (param $0 v128) (param $1 v128) (result v128) + (func $192 (param $0 v128) (param $1 v128) (result v128) (f64x2.mul (local.get $0) (local.get $1) ) ) - (func $148 (; 148 ;) (param $0 v128) (param $1 v128) (result v128) + (func $193 (param $0 v128) (param $1 v128) (result v128) (f64x2.div (local.get $0) (local.get $1) ) ) - (func $149 (; 149 ;) (param $0 v128) (param $1 v128) (result v128) + (func $194 (param $0 v128) (param $1 v128) (result v128) (f64x2.min (local.get $0) (local.get $1) ) ) - (func $150 (; 150 ;) (param $0 v128) (param $1 v128) (result v128) + (func $195 (param $0 v128) (param $1 v128) (result v128) (f64x2.max (local.get $0) (local.get $1) ) ) - (func $151 (; 151 ;) (param $0 v128) (result v128) + (func $196 (param $0 v128) (param $1 v128) (result v128) + (f64x2.pmin + (local.get $0) + (local.get $1) + ) + ) + (func $197 (param $0 v128) (param $1 v128) (result v128) + (f64x2.pmax + (local.get $0) + (local.get $1) + ) + ) + (func $198 (param $0 v128) (result v128) + (f64x2.ceil + (local.get $0) + ) + ) + (func $199 (param $0 v128) (result v128) + (f64x2.floor + (local.get $0) + ) + ) + (func $200 (param $0 v128) (result v128) + (f64x2.trunc + (local.get $0) + ) + ) + (func $201 (param $0 v128) (result v128) + (f64x2.nearest + (local.get $0) + ) + ) + (func $202 (param $0 v128) (result v128) (f64x2.abs (local.get $0) ) ) - (func $152 (; 152 ;) (param $0 v128) (result v128) + (func $203 (param $0 v128) (result v128) (f64x2.neg (local.get $0) ) ) - (func $153 (; 153 ;) (param $0 v128) (result v128) + (func $204 (param $0 v128) (result v128) (f64x2.sqrt (local.get $0) ) ) - (func $154 (; 154 ;) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $205 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (f64x2.qfma (local.get $0) (local.get $1) (local.get $2) ) ) - (func $155 (; 155 ;) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $206 (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (f64x2.qfms (local.get $0) (local.get $1) (local.get $2) ) ) - (func $156 (; 156 ;) (param $0 v128) (result v128) + (func $207 (param $0 v128) (result v128) + (i16x8.extadd_pairwise_i8x16_s + (local.get $0) + ) + ) + (func $208 (param $0 v128) (result v128) + (i16x8.extadd_pairwise_i8x16_u + (local.get $0) + ) + ) + (func $209 (param $0 v128) (result v128) + (i32x4.extadd_pairwise_i16x8_s + (local.get $0) + ) + ) + (func $210 (param $0 v128) (result v128) + (i32x4.extadd_pairwise_i16x8_u + (local.get $0) + ) + ) + (func $211 (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_s (local.get $0) ) ) - (func $157 (; 157 ;) (param $0 v128) (result v128) + (func $212 (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_u (local.get $0) ) ) - (func $158 (; 158 ;) (param $0 v128) (result v128) + (func $213 (param $0 v128) (result v128) (i64x2.trunc_sat_f64x2_s (local.get $0) ) ) - (func $159 (; 159 ;) (param $0 v128) (result v128) + (func $214 (param $0 v128) (result v128) (i64x2.trunc_sat_f64x2_u (local.get $0) ) ) - (func $160 (; 160 ;) (param $0 v128) (result v128) + (func $215 (param $0 v128) (result v128) (f32x4.convert_i32x4_s (local.get $0) ) ) - (func $161 (; 161 ;) (param $0 v128) (result v128) + (func $216 (param $0 v128) (result v128) (f32x4.convert_i32x4_u (local.get $0) ) ) - (func $162 (; 162 ;) (param $0 v128) (result v128) + (func $217 (param $0 v128) (result v128) (f64x2.convert_i64x2_s (local.get $0) ) ) - (func $163 (; 163 ;) (param $0 v128) (result v128) + (func $218 (param $0 v128) (result v128) (f64x2.convert_i64x2_u (local.get $0) ) ) - (func $164 (; 164 ;) (param $0 i32) (result v128) + (func $219 (param $0 i32) (result v128) (v8x16.load_splat (local.get $0) ) ) - (func $165 (; 165 ;) (param $0 i32) (result v128) + (func $220 (param $0 i32) (result v128) (v16x8.load_splat (local.get $0) ) ) - (func $166 (; 166 ;) (param $0 i32) (result v128) + (func $221 (param $0 i32) (result v128) (v32x4.load_splat (local.get $0) ) ) - (func $167 (; 167 ;) (param $0 i32) (result v128) + (func $222 (param $0 i32) (result v128) (v64x2.load_splat (local.get $0) ) ) - (func $168 (; 168 ;) (param $0 v128) (param $1 v128) (result v128) + (func $223 (param $0 v128) (param $1 v128) (result v128) (i8x16.narrow_i16x8_s (local.get $0) (local.get $1) ) ) - (func $169 (; 169 ;) (param $0 v128) (param $1 v128) (result v128) + (func $224 (param $0 v128) (param $1 v128) (result v128) (i8x16.narrow_i16x8_u (local.get $0) (local.get $1) ) ) - (func $170 (; 170 ;) (param $0 v128) (param $1 v128) (result v128) + (func $225 (param $0 v128) (param $1 v128) (result v128) (i16x8.narrow_i32x4_s (local.get $0) (local.get $1) ) ) - (func $171 (; 171 ;) (param $0 v128) (param $1 v128) (result v128) + (func $226 (param $0 v128) (param $1 v128) (result v128) (i16x8.narrow_i32x4_u (local.get $0) (local.get $1) ) ) - (func $172 (; 172 ;) (param $0 v128) (result v128) + (func $227 (param $0 v128) (result v128) (i16x8.widen_low_i8x16_s (local.get $0) ) ) - (func $173 (; 173 ;) (param $0 v128) (result v128) + (func $228 (param $0 v128) (result v128) (i16x8.widen_high_i8x16_s (local.get $0) ) ) - (func $174 (; 174 ;) (param $0 v128) (result v128) + (func $229 (param $0 v128) (result v128) (i16x8.widen_low_i8x16_u (local.get $0) ) ) - (func $175 (; 175 ;) (param $0 v128) (result v128) + (func $230 (param $0 v128) (result v128) (i16x8.widen_high_i8x16_u (local.get $0) ) ) - (func $176 (; 176 ;) (param $0 v128) (result v128) + (func $231 (param $0 v128) (result v128) (i32x4.widen_low_i16x8_s (local.get $0) ) ) - (func $177 (; 177 ;) (param $0 v128) (result v128) + (func $232 (param $0 v128) (result v128) (i32x4.widen_high_i16x8_s (local.get $0) ) ) - (func $178 (; 178 ;) (param $0 v128) (result v128) + (func $233 (param $0 v128) (result v128) (i32x4.widen_low_i16x8_u (local.get $0) ) ) - (func $179 (; 179 ;) (param $0 v128) (result v128) + (func $234 (param $0 v128) (result v128) (i32x4.widen_high_i16x8_u (local.get $0) ) ) - (func $180 (; 180 ;) (param $0 i32) (result v128) + (func $235 (param $0 v128) (result v128) + (i64x2.widen_low_i32x4_s + (local.get $0) + ) + ) + (func $236 (param $0 v128) (result v128) + (i64x2.widen_high_i32x4_s + (local.get $0) + ) + ) + (func $237 (param $0 v128) (result v128) + (i64x2.widen_low_i32x4_u + (local.get $0) + ) + ) + (func $238 (param $0 v128) (result v128) + (i64x2.widen_high_i32x4_u + (local.get $0) + ) + ) + (func $239 (param $0 i32) (result v128) (i16x8.load8x8_u (local.get $0) ) ) - (func $181 (; 181 ;) (param $0 i32) (result v128) + (func $240 (param $0 i32) (result v128) (i16x8.load8x8_s (local.get $0) ) ) - (func $182 (; 182 ;) (param $0 i32) (result v128) + (func $241 (param $0 i32) (result v128) (i32x4.load16x4_s (local.get $0) ) ) - (func $183 (; 183 ;) (param $0 i32) (result v128) + (func $242 (param $0 i32) (result v128) (i32x4.load16x4_u (local.get $0) ) ) - (func $184 (; 184 ;) (param $0 i32) (result v128) + (func $243 (param $0 i32) (result v128) (i64x2.load32x2_s (local.get $0) ) ) - (func $185 (; 185 ;) (param $0 i32) (result v128) + (func $244 (param $0 i32) (result v128) (i64x2.load32x2_u (local.get $0) ) ) - (func $186 (; 186 ;) (param $0 v128) (param $1 v128) (result v128) + (func $245 (param $0 i32) (result v128) + (v128.load32_zero + (local.get $0) + ) + ) + (func $246 (param $0 i32) (result v128) + (v128.load64_zero + (local.get $0) + ) + ) + (func $247 (param $0 v128) (param $1 v128) (result v128) (v8x16.swizzle (local.get $0) (local.get $1) ) ) + (func $248 (param $0 i32) + (prefetch.t offset=3 align=2 + (local.get $0) + ) + ) + (func $249 (param $0 i32) + (prefetch.nt offset=3 align=2 + (local.get $0) + ) + ) ) diff -Nru binaryen-91/test/simd.wast.from-wast binaryen-99/test/simd.wast.from-wast --- binaryen-91/test/simd.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/simd.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,12 +1,14 @@ (module (type $v128_v128_=>_v128 (func (param v128 v128) (result v128))) (type $v128_=>_v128 (func (param v128) (result v128))) - (type $v128_i32_=>_v128 (func (param v128 i32) (result v128))) (type $i32_=>_v128 (func (param i32) (result v128))) (type $v128_=>_i32 (func (param v128) (result i32))) - (type $none_=>_v128 (func (result v128))) + (type $v128_i32_=>_v128 (func (param v128 i32) (result v128))) (type $v128_v128_v128_=>_v128 (func (param v128 v128 v128) (result v128))) (type $i32_v128_=>_none (func (param i32 v128))) + (type $i32_v128_=>_v128 (func (param i32 v128) (result v128))) + (type $none_=>_v128 (func (result v128))) + (type $i32_=>_none (func (param i32))) (type $v128_=>_i64 (func (param v128) (result i64))) (type $v128_=>_f32 (func (param v128) (result f32))) (type $v128_=>_f64 (func (param v128) (result f64))) @@ -16,1054 +18,1410 @@ (type $v128_f32_=>_v128 (func (param v128 f32) (result v128))) (type $v128_f64_=>_v128 (func (param v128 f64) (result v128))) (memory $0 1 1) - (func $v128.load (; 0 ;) (param $0 i32) (result v128) + (func $v128.load (param $0 i32) (result v128) (v128.load (local.get $0) ) ) - (func $v128.store (; 1 ;) (param $0 i32) (param $1 v128) + (func $v128.store (param $0 i32) (param $1 v128) (v128.store (local.get $0) (local.get $1) ) ) - (func $v128.const.i8x16 (; 2 ;) (result v128) + (func $v128.const.i8x16 (result v128) (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) ) - (func $v128.const.i16x8 (; 3 ;) (result v128) + (func $v128.const.i16x8 (result v128) (v128.const i32x4 0x00020001 0x00040003 0x00060005 0x00080007) ) - (func $v128.const.i32x4 (; 4 ;) (result v128) + (func $v128.const.i32x4 (result v128) (v128.const i32x4 0x00000001 0x00000002 0x00000003 0x00000004) ) - (func $v128.const.i64x2 (; 5 ;) (result v128) + (func $v128.const.i64x2 (result v128) (v128.const i32x4 0x00000001 0x00000000 0x00000002 0x00000000) ) - (func $v128.const.f32x4 (; 6 ;) (result v128) + (func $v128.const.f32x4 (result v128) (v128.const i32x4 0x3f800000 0x40000000 0x40400000 0x40800000) ) - (func $v128.const.f64x2 (; 7 ;) (result v128) + (func $v128.const.f64x2 (result v128) (v128.const i32x4 0x00000000 0x3ff00000 0x00000000 0x40000000) ) - (func $v128.shuffle (; 8 ;) (param $0 v128) (param $1 v128) (result v128) + (func $v128.shuffle (param $0 v128) (param $1 v128) (result v128) (v8x16.shuffle 0 17 2 19 4 21 6 23 8 25 10 27 12 29 14 31 (local.get $0) (local.get $1) ) ) - (func $i8x16.splat (; 9 ;) (param $0 i32) (result v128) + (func $i8x16.splat (param $0 i32) (result v128) (i8x16.splat (local.get $0) ) ) - (func $i8x16.extract_lane_s (; 10 ;) (param $0 v128) (result i32) + (func $i8x16.extract_lane_s (param $0 v128) (result i32) (i8x16.extract_lane_s 0 (local.get $0) ) ) - (func $i8x16.extract_lane_u (; 11 ;) (param $0 v128) (result i32) + (func $i8x16.extract_lane_u (param $0 v128) (result i32) (i8x16.extract_lane_u 0 (local.get $0) ) ) - (func $i8x16.replace_lane (; 12 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.replace_lane (param $0 v128) (param $1 i32) (result v128) (i8x16.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i16x8.splat (; 13 ;) (param $0 i32) (result v128) + (func $i16x8.splat (param $0 i32) (result v128) (i16x8.splat (local.get $0) ) ) - (func $i16x8.extract_lane_s (; 14 ;) (param $0 v128) (result i32) + (func $i16x8.extract_lane_s (param $0 v128) (result i32) (i16x8.extract_lane_s 0 (local.get $0) ) ) - (func $i16x8.extract_lane_u (; 15 ;) (param $0 v128) (result i32) + (func $i16x8.extract_lane_u (param $0 v128) (result i32) (i16x8.extract_lane_u 0 (local.get $0) ) ) - (func $i16x8.replace_lane (; 16 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.replace_lane (param $0 v128) (param $1 i32) (result v128) (i16x8.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i32x4.splat (; 17 ;) (param $0 i32) (result v128) + (func $i32x4.splat (param $0 i32) (result v128) (i32x4.splat (local.get $0) ) ) - (func $i32x4.extract_lane (; 18 ;) (param $0 v128) (result i32) + (func $i32x4.extract_lane (param $0 v128) (result i32) (i32x4.extract_lane 0 (local.get $0) ) ) - (func $i32x4.replace_lane (; 19 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.replace_lane (param $0 v128) (param $1 i32) (result v128) (i32x4.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i64x2.extract_lane (; 20 ;) (param $0 v128) (result i64) + (func $i64x2.extract_lane (param $0 v128) (result i64) (i64x2.extract_lane 0 (local.get $0) ) ) - (func $i64x2.replace_lane (; 21 ;) (param $0 v128) (param $1 i64) (result v128) + (func $i64x2.replace_lane (param $0 v128) (param $1 i64) (result v128) (i64x2.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $f32x4.splat (; 22 ;) (param $0 f32) (result v128) + (func $f32x4.splat (param $0 f32) (result v128) (f32x4.splat (local.get $0) ) ) - (func $f32x4.extract_lane (; 23 ;) (param $0 v128) (result f32) + (func $f32x4.extract_lane (param $0 v128) (result f32) (f32x4.extract_lane 0 (local.get $0) ) ) - (func $f32x4.replace_lane (; 24 ;) (param $0 v128) (param $1 f32) (result v128) + (func $f32x4.replace_lane (param $0 v128) (param $1 f32) (result v128) (f32x4.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $f64x2.splat (; 25 ;) (param $0 f64) (result v128) + (func $f64x2.splat (param $0 f64) (result v128) (f64x2.splat (local.get $0) ) ) - (func $f64x2.extract_lane (; 26 ;) (param $0 v128) (result f64) + (func $f64x2.extract_lane (param $0 v128) (result f64) (f64x2.extract_lane 0 (local.get $0) ) ) - (func $f64x2.replace_lane (; 27 ;) (param $0 v128) (param $1 f64) (result v128) + (func $f64x2.replace_lane (param $0 v128) (param $1 f64) (result v128) (f64x2.replace_lane 0 (local.get $0) (local.get $1) ) ) - (func $i8x16.eq (; 28 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.eq (param $0 v128) (param $1 v128) (result v128) (i8x16.eq (local.get $0) (local.get $1) ) ) - (func $i8x16.ne (; 29 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.ne (param $0 v128) (param $1 v128) (result v128) (i8x16.ne (local.get $0) (local.get $1) ) ) - (func $i8x16.lt_s (; 30 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.lt_s (param $0 v128) (param $1 v128) (result v128) (i8x16.lt_s (local.get $0) (local.get $1) ) ) - (func $i8x16.lt_u (; 31 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.lt_u (param $0 v128) (param $1 v128) (result v128) (i8x16.lt_u (local.get $0) (local.get $1) ) ) - (func $i8x16.gt_s (; 32 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.gt_s (param $0 v128) (param $1 v128) (result v128) (i8x16.gt_s (local.get $0) (local.get $1) ) ) - (func $i8x16.gt_u (; 33 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.gt_u (param $0 v128) (param $1 v128) (result v128) (i8x16.gt_u (local.get $0) (local.get $1) ) ) - (func $i8x16.le_s (; 34 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.le_s (param $0 v128) (param $1 v128) (result v128) (i8x16.le_s (local.get $0) (local.get $1) ) ) - (func $i8x16.le_u (; 35 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.le_u (param $0 v128) (param $1 v128) (result v128) (i8x16.le_u (local.get $0) (local.get $1) ) ) - (func $i8x16.ge_s (; 36 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.ge_s (param $0 v128) (param $1 v128) (result v128) (i8x16.ge_s (local.get $0) (local.get $1) ) ) - (func $i8x16.ge_u (; 37 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.ge_u (param $0 v128) (param $1 v128) (result v128) (i8x16.ge_u (local.get $0) (local.get $1) ) ) - (func $i16x8.eq (; 38 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.eq (param $0 v128) (param $1 v128) (result v128) (i16x8.eq (local.get $0) (local.get $1) ) ) - (func $i16x8.ne (; 39 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.ne (param $0 v128) (param $1 v128) (result v128) (i16x8.ne (local.get $0) (local.get $1) ) ) - (func $i16x8.lt_s (; 40 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.lt_s (param $0 v128) (param $1 v128) (result v128) (i16x8.lt_s (local.get $0) (local.get $1) ) ) - (func $i16x8.lt_u (; 41 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.lt_u (param $0 v128) (param $1 v128) (result v128) (i16x8.lt_u (local.get $0) (local.get $1) ) ) - (func $i16x8.gt_s (; 42 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.gt_s (param $0 v128) (param $1 v128) (result v128) (i16x8.gt_s (local.get $0) (local.get $1) ) ) - (func $i16x8.gt_u (; 43 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.gt_u (param $0 v128) (param $1 v128) (result v128) (i16x8.gt_u (local.get $0) (local.get $1) ) ) - (func $i16x8.le_s (; 44 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.le_s (param $0 v128) (param $1 v128) (result v128) (i16x8.le_s (local.get $0) (local.get $1) ) ) - (func $i16x8.le_u (; 45 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.le_u (param $0 v128) (param $1 v128) (result v128) (i16x8.le_u (local.get $0) (local.get $1) ) ) - (func $i16x8.ge_s (; 46 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.ge_s (param $0 v128) (param $1 v128) (result v128) (i16x8.ge_s (local.get $0) (local.get $1) ) ) - (func $i16x8.ge_u (; 47 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.ge_u (param $0 v128) (param $1 v128) (result v128) (i16x8.ge_u (local.get $0) (local.get $1) ) ) - (func $i32x4.eq (; 48 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.eq (param $0 v128) (param $1 v128) (result v128) (i32x4.eq (local.get $0) (local.get $1) ) ) - (func $i32x4.ne (; 49 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.ne (param $0 v128) (param $1 v128) (result v128) (i32x4.ne (local.get $0) (local.get $1) ) ) - (func $i32x4.lt_s (; 50 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.lt_s (param $0 v128) (param $1 v128) (result v128) (i32x4.lt_s (local.get $0) (local.get $1) ) ) - (func $i32x4.lt_u (; 51 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.lt_u (param $0 v128) (param $1 v128) (result v128) (i32x4.lt_u (local.get $0) (local.get $1) ) ) - (func $i32x4.gt_s (; 52 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.gt_s (param $0 v128) (param $1 v128) (result v128) (i32x4.gt_s (local.get $0) (local.get $1) ) ) - (func $i32x4.gt_u (; 53 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.gt_u (param $0 v128) (param $1 v128) (result v128) (i32x4.gt_u (local.get $0) (local.get $1) ) ) - (func $i32x4.le_s (; 54 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.le_s (param $0 v128) (param $1 v128) (result v128) (i32x4.le_s (local.get $0) (local.get $1) ) ) - (func $i32x4.le_u (; 55 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.le_u (param $0 v128) (param $1 v128) (result v128) (i32x4.le_u (local.get $0) (local.get $1) ) ) - (func $i32x4.ge_s (; 56 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.ge_s (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_s (local.get $0) (local.get $1) ) ) - (func $i32x4.ge_u (; 57 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.ge_u (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_u (local.get $0) (local.get $1) ) ) - (func $f32x4.eq (; 58 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.eq (param $0 v128) (param $1 v128) (result v128) + (i64x2.eq + (local.get $0) + (local.get $1) + ) + ) + (func $f32x4.eq (param $0 v128) (param $1 v128) (result v128) (f32x4.eq (local.get $0) (local.get $1) ) ) - (func $f32x4.ne (; 59 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.ne (param $0 v128) (param $1 v128) (result v128) (f32x4.ne (local.get $0) (local.get $1) ) ) - (func $f32x4.lt (; 60 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.lt (param $0 v128) (param $1 v128) (result v128) (f32x4.lt (local.get $0) (local.get $1) ) ) - (func $f32x4.gt (; 61 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.gt (param $0 v128) (param $1 v128) (result v128) (f32x4.gt (local.get $0) (local.get $1) ) ) - (func $f32x4.le (; 62 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.le (param $0 v128) (param $1 v128) (result v128) (f32x4.le (local.get $0) (local.get $1) ) ) - (func $f32x4.ge (; 63 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.ge (param $0 v128) (param $1 v128) (result v128) (f32x4.ge (local.get $0) (local.get $1) ) ) - (func $f64x2.eq (; 64 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.eq (param $0 v128) (param $1 v128) (result v128) (f64x2.eq (local.get $0) (local.get $1) ) ) - (func $f64x2.ne (; 65 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.ne (param $0 v128) (param $1 v128) (result v128) (f64x2.ne (local.get $0) (local.get $1) ) ) - (func $f64x2.lt (; 66 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.lt (param $0 v128) (param $1 v128) (result v128) (f64x2.lt (local.get $0) (local.get $1) ) ) - (func $f64x2.gt (; 67 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.gt (param $0 v128) (param $1 v128) (result v128) (f64x2.gt (local.get $0) (local.get $1) ) ) - (func $f64x2.le (; 68 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.le (param $0 v128) (param $1 v128) (result v128) (f64x2.le (local.get $0) (local.get $1) ) ) - (func $f64x2.ge (; 69 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.ge (param $0 v128) (param $1 v128) (result v128) (f64x2.ge (local.get $0) (local.get $1) ) ) - (func $v128.not (; 70 ;) (param $0 v128) (result v128) + (func $v128.not (param $0 v128) (result v128) (v128.not (local.get $0) ) ) - (func $v128.and (; 71 ;) (param $0 v128) (param $1 v128) (result v128) + (func $v128.and (param $0 v128) (param $1 v128) (result v128) (v128.and (local.get $0) (local.get $1) ) ) - (func $v128.or (; 72 ;) (param $0 v128) (param $1 v128) (result v128) + (func $v128.or (param $0 v128) (param $1 v128) (result v128) (v128.or (local.get $0) (local.get $1) ) ) - (func $v128.xor (; 73 ;) (param $0 v128) (param $1 v128) (result v128) + (func $v128.xor (param $0 v128) (param $1 v128) (result v128) (v128.xor (local.get $0) (local.get $1) ) ) - (func $v128.andnot (; 74 ;) (param $0 v128) (param $1 v128) (result v128) + (func $v128.andnot (param $0 v128) (param $1 v128) (result v128) (v128.andnot (local.get $0) (local.get $1) ) ) - (func $v128.bitselect (; 75 ;) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $v128.bitselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (v128.bitselect (local.get $0) (local.get $1) (local.get $2) ) ) - (func $i8x16.neg (; 76 ;) (param $0 v128) (result v128) + (func $v8x16.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v8x16.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $v16x8.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v16x8.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $v32x4.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v32x4.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $v64x2.signselect (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v64x2.signselect + (local.get $0) + (local.get $1) + (local.get $2) + ) + ) + (func $v128.load8_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load8_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load16_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load16_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load32_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load32_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane_align (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane align=1 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane_offset (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane offset=32 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.load64_lane_align_offset (param $0 i32) (param $1 v128) (result v128) + (v128.load64_lane offset=32 align=1 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store8_lane (param $0 i32) (param $1 v128) + (v128.store8_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store16_lane (param $0 i32) (param $1 v128) + (v128.store16_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store32_lane (param $0 i32) (param $1 v128) + (v128.store32_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane (param $0 i32) (param $1 v128) + (v128.store64_lane 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane_align (param $0 i32) (param $1 v128) + (v128.store64_lane align=1 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane_offset (param $0 i32) (param $1 v128) + (v128.store64_lane offset=32 0 + (local.get $0) + (local.get $1) + ) + ) + (func $v128.store64_lane_align_offset (param $0 i32) (param $1 v128) + (v128.store64_lane offset=32 align=1 0 + (local.get $0) + (local.get $1) + ) + ) + (func $i8x16.popcnt (param $0 v128) (result v128) + (i8x16.popcnt + (local.get $0) + ) + ) + (func $i8x16.abs (param $0 v128) (result v128) + (i8x16.abs + (local.get $0) + ) + ) + (func $i8x16.neg (param $0 v128) (result v128) (i8x16.neg (local.get $0) ) ) - (func $i8x16.any_true (; 77 ;) (param $0 v128) (result i32) + (func $i8x16.any_true (param $0 v128) (result i32) (i8x16.any_true (local.get $0) ) ) - (func $i8x16.all_true (; 78 ;) (param $0 v128) (result i32) + (func $i8x16.all_true (param $0 v128) (result i32) (i8x16.all_true (local.get $0) ) ) - (func $i8x16.shl (; 79 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.bitmask (param $0 v128) (result i32) + (i8x16.bitmask + (local.get $0) + ) + ) + (func $i8x16.shl (param $0 v128) (param $1 i32) (result v128) (i8x16.shl (local.get $0) (local.get $1) ) ) - (func $i8x16.shr_s (; 80 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.shr_s (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_s (local.get $0) (local.get $1) ) ) - (func $i8x16.shr_u (; 81 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i8x16.shr_u (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_u (local.get $0) (local.get $1) ) ) - (func $i8x16.add (; 82 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.add (param $0 v128) (param $1 v128) (result v128) (i8x16.add (local.get $0) (local.get $1) ) ) - (func $i8x16.add_saturate_s (; 83 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.add_saturate_s (param $0 v128) (param $1 v128) (result v128) (i8x16.add_saturate_s (local.get $0) (local.get $1) ) ) - (func $i8x16.add_saturate_u (; 84 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.add_saturate_u (param $0 v128) (param $1 v128) (result v128) (i8x16.add_saturate_u (local.get $0) (local.get $1) ) ) - (func $i8x16.sub (; 85 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.sub (param $0 v128) (param $1 v128) (result v128) (i8x16.sub (local.get $0) (local.get $1) ) ) - (func $i8x16.sub_saturate_s (; 86 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.sub_saturate_s (param $0 v128) (param $1 v128) (result v128) (i8x16.sub_saturate_s (local.get $0) (local.get $1) ) ) - (func $i8x16.sub_saturate_u (; 87 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.sub_saturate_u (param $0 v128) (param $1 v128) (result v128) (i8x16.sub_saturate_u (local.get $0) (local.get $1) ) ) - (func $i8x16.mul (; 88 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.mul (param $0 v128) (param $1 v128) (result v128) (i8x16.mul (local.get $0) (local.get $1) ) ) - (func $i8x16.min_s (; 89 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.min_s (param $0 v128) (param $1 v128) (result v128) (i8x16.min_s (local.get $0) (local.get $1) ) ) - (func $i8x16.min_u (; 90 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.min_u (param $0 v128) (param $1 v128) (result v128) (i8x16.min_u (local.get $0) (local.get $1) ) ) - (func $i8x16.max_s (; 91 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.max_s (param $0 v128) (param $1 v128) (result v128) (i8x16.max_s (local.get $0) (local.get $1) ) ) - (func $i8x16.max_u (; 92 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.max_u (param $0 v128) (param $1 v128) (result v128) (i8x16.max_u (local.get $0) (local.get $1) ) ) - (func $i8x16.avgr_u (; 93 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.avgr_u (param $0 v128) (param $1 v128) (result v128) (i8x16.avgr_u (local.get $0) (local.get $1) ) ) - (func $i16x8.neg (; 94 ;) (param $0 v128) (result v128) + (func $i16x8.abs (param $0 v128) (result v128) + (i16x8.abs + (local.get $0) + ) + ) + (func $i16x8.neg (param $0 v128) (result v128) (i16x8.neg (local.get $0) ) ) - (func $i16x8.any_true (; 95 ;) (param $0 v128) (result i32) + (func $i16x8.any_true (param $0 v128) (result i32) (i16x8.any_true (local.get $0) ) ) - (func $i16x8.all_true (; 96 ;) (param $0 v128) (result i32) + (func $i16x8.all_true (param $0 v128) (result i32) (i16x8.all_true (local.get $0) ) ) - (func $i16x8.shl (; 97 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.bitmask (param $0 v128) (result i32) + (i16x8.bitmask + (local.get $0) + ) + ) + (func $i16x8.shl (param $0 v128) (param $1 i32) (result v128) (i16x8.shl (local.get $0) (local.get $1) ) ) - (func $i16x8.shr_s (; 98 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.shr_s (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_s (local.get $0) (local.get $1) ) ) - (func $i16x8.shr_u (; 99 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i16x8.shr_u (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_u (local.get $0) (local.get $1) ) ) - (func $i16x8.add (; 100 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.add (param $0 v128) (param $1 v128) (result v128) (i16x8.add (local.get $0) (local.get $1) ) ) - (func $i16x8.add_saturate_s (; 101 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.add_saturate_s (param $0 v128) (param $1 v128) (result v128) (i16x8.add_saturate_s (local.get $0) (local.get $1) ) ) - (func $i16x8.add_saturate_u (; 102 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.add_saturate_u (param $0 v128) (param $1 v128) (result v128) (i16x8.add_saturate_u (local.get $0) (local.get $1) ) ) - (func $i16x8.sub (; 103 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.sub (param $0 v128) (param $1 v128) (result v128) (i16x8.sub (local.get $0) (local.get $1) ) ) - (func $i16x8.sub_saturate_s (; 104 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.sub_saturate_s (param $0 v128) (param $1 v128) (result v128) (i16x8.sub_saturate_s (local.get $0) (local.get $1) ) ) - (func $i16x8.sub_saturate_u (; 105 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.sub_saturate_u (param $0 v128) (param $1 v128) (result v128) (i16x8.sub_saturate_u (local.get $0) (local.get $1) ) ) - (func $i16x8.mul (; 106 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.mul (param $0 v128) (param $1 v128) (result v128) (i16x8.mul (local.get $0) (local.get $1) ) ) - (func $i16x8.min_s (; 107 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.min_s (param $0 v128) (param $1 v128) (result v128) (i16x8.min_s (local.get $0) (local.get $1) ) ) - (func $i16x8.min_u (; 108 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.min_u (param $0 v128) (param $1 v128) (result v128) (i16x8.min_u (local.get $0) (local.get $1) ) ) - (func $i16x8.max_s (; 109 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.max_s (param $0 v128) (param $1 v128) (result v128) (i16x8.max_s (local.get $0) (local.get $1) ) ) - (func $i16x8.max_u (; 110 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.max_u (param $0 v128) (param $1 v128) (result v128) (i16x8.max_u (local.get $0) (local.get $1) ) ) - (func $i16x8.avgr_u (; 111 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.avgr_u (param $0 v128) (param $1 v128) (result v128) (i16x8.avgr_u (local.get $0) (local.get $1) ) ) - (func $i32x4.neg (; 112 ;) (param $0 v128) (result v128) + (func $i16x8.q15mulr_sat_s (param $0 v128) (param $1 v128) (result v128) + (i16x8.q15mulr_sat_s + (local.get $0) + (local.get $1) + ) + ) + (func $i16x8.extmul_low_i8x16_s (param $0 v128) (param $1 v128) (result v128) + (i16x8.extmul_low_i8x16_s + (local.get $0) + (local.get $1) + ) + ) + (func $i16x8.extmul_high_i8x16_s (param $0 v128) (param $1 v128) (result v128) + (i16x8.extmul_high_i8x16_s + (local.get $0) + (local.get $1) + ) + ) + (func $i16x8.extmul_low_i8x16_u (param $0 v128) (param $1 v128) (result v128) + (i16x8.extmul_low_i8x16_u + (local.get $0) + (local.get $1) + ) + ) + (func $i16x8.extmul_high_i8x16_u (param $0 v128) (param $1 v128) (result v128) + (i16x8.extmul_high_i8x16_u + (local.get $0) + (local.get $1) + ) + ) + (func $i32x4.abs (param $0 v128) (result v128) + (i32x4.abs + (local.get $0) + ) + ) + (func $i32x4.neg (param $0 v128) (result v128) (i32x4.neg (local.get $0) ) ) - (func $i32x4.any_true (; 113 ;) (param $0 v128) (result i32) + (func $i32x4.any_true (param $0 v128) (result i32) (i32x4.any_true (local.get $0) ) ) - (func $i32x4.all_true (; 114 ;) (param $0 v128) (result i32) + (func $i32x4.all_true (param $0 v128) (result i32) (i32x4.all_true (local.get $0) ) ) - (func $i32x4.shl (; 115 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.bitmask (param $0 v128) (result i32) + (i32x4.bitmask + (local.get $0) + ) + ) + (func $i32x4.shl (param $0 v128) (param $1 i32) (result v128) (i32x4.shl (local.get $0) (local.get $1) ) ) - (func $i32x4.shr_s (; 116 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.shr_s (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_s (local.get $0) (local.get $1) ) ) - (func $i32x4.shr_u (; 117 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i32x4.shr_u (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_u (local.get $0) (local.get $1) ) ) - (func $i32x4.add (; 118 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.add (param $0 v128) (param $1 v128) (result v128) (i32x4.add (local.get $0) (local.get $1) ) ) - (func $i32x4.sub (; 119 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.sub (param $0 v128) (param $1 v128) (result v128) (i32x4.sub (local.get $0) (local.get $1) ) ) - (func $i32x4.mul (; 120 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.mul (param $0 v128) (param $1 v128) (result v128) (i32x4.mul (local.get $0) (local.get $1) ) ) - (func $i32x4.min_s (; 121 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.min_s (param $0 v128) (param $1 v128) (result v128) (i32x4.min_s (local.get $0) (local.get $1) ) ) - (func $i32x4.min_u (; 122 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.min_u (param $0 v128) (param $1 v128) (result v128) (i32x4.min_u (local.get $0) (local.get $1) ) ) - (func $i32x4.max_s (; 123 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.max_s (param $0 v128) (param $1 v128) (result v128) (i32x4.max_s (local.get $0) (local.get $1) ) ) - (func $i32x4.max_u (; 124 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.max_u (param $0 v128) (param $1 v128) (result v128) (i32x4.max_u (local.get $0) (local.get $1) ) ) - (func $i32x4.dot_i16x8_s (; 125 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i32x4.dot_i16x8_s (param $0 v128) (param $1 v128) (result v128) (i32x4.dot_i16x8_s (local.get $0) (local.get $1) ) ) - (func $i64x2.neg (; 126 ;) (param $0 v128) (result v128) - (i64x2.neg + (func $i32x4.extmul_low_i16x8_s (param $0 v128) (param $1 v128) (result v128) + (i32x4.extmul_low_i16x8_s + (local.get $0) + (local.get $1) + ) + ) + (func $i32x4.extmul_high_i16x8_s (param $0 v128) (param $1 v128) (result v128) + (i32x4.extmul_high_i16x8_s + (local.get $0) + (local.get $1) + ) + ) + (func $i32x4.extmul_low_i16x8_u (param $0 v128) (param $1 v128) (result v128) + (i32x4.extmul_low_i16x8_u + (local.get $0) + (local.get $1) + ) + ) + (func $i32x4.extmul_high_i16x8_u (param $0 v128) (param $1 v128) (result v128) + (i32x4.extmul_high_i16x8_u (local.get $0) + (local.get $1) ) ) - (func $i64x2.any_true (; 127 ;) (param $0 v128) (result i32) - (i64x2.any_true + (func $i64x2.neg (param $0 v128) (result v128) + (i64x2.neg (local.get $0) ) ) - (func $i64x2.all_true (; 128 ;) (param $0 v128) (result i32) - (i64x2.all_true + (func $i64x2.bitmask (param $0 v128) (result i32) + (i64x2.bitmask (local.get $0) ) ) - (func $i64x2.shl (; 129 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i64x2.shl (param $0 v128) (param $1 i32) (result v128) (i64x2.shl (local.get $0) (local.get $1) ) ) - (func $i64x2.shr_s (; 130 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i64x2.shr_s (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_s (local.get $0) (local.get $1) ) ) - (func $i64x2.shr_u (; 131 ;) (param $0 v128) (param $1 i32) (result v128) + (func $i64x2.shr_u (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_u (local.get $0) (local.get $1) ) ) - (func $i64x2.add (; 132 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.add (param $0 v128) (param $1 v128) (result v128) (i64x2.add (local.get $0) (local.get $1) ) ) - (func $i64x2.sub (; 133 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.sub (param $0 v128) (param $1 v128) (result v128) (i64x2.sub (local.get $0) (local.get $1) ) ) - (func $f32x4.add (; 134 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i64x2.mul (param $0 v128) (param $1 v128) (result v128) + (i64x2.mul + (local.get $0) + (local.get $1) + ) + ) + (func $i64x2.extmul_low_i32x4_s (param $0 v128) (param $1 v128) (result v128) + (i64x2.extmul_low_i32x4_s + (local.get $0) + (local.get $1) + ) + ) + (func $i64x2.extmul_high_i32x4_s (param $0 v128) (param $1 v128) (result v128) + (i64x2.extmul_high_i32x4_s + (local.get $0) + (local.get $1) + ) + ) + (func $i64x2.extmul_low_i32x4_u (param $0 v128) (param $1 v128) (result v128) + (i64x2.extmul_low_i32x4_u + (local.get $0) + (local.get $1) + ) + ) + (func $i64x2.extmul_high_i32x4_u (param $0 v128) (param $1 v128) (result v128) + (i64x2.extmul_high_i32x4_u + (local.get $0) + (local.get $1) + ) + ) + (func $f32x4.add (param $0 v128) (param $1 v128) (result v128) (f32x4.add (local.get $0) (local.get $1) ) ) - (func $f32x4.sub (; 135 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.sub (param $0 v128) (param $1 v128) (result v128) (f32x4.sub (local.get $0) (local.get $1) ) ) - (func $f32x4.mul (; 136 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.mul (param $0 v128) (param $1 v128) (result v128) (f32x4.mul (local.get $0) (local.get $1) ) ) - (func $f32x4.div (; 137 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.div (param $0 v128) (param $1 v128) (result v128) (f32x4.div (local.get $0) (local.get $1) ) ) - (func $f32x4.min (; 138 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.min (param $0 v128) (param $1 v128) (result v128) (f32x4.min (local.get $0) (local.get $1) ) ) - (func $f32x4.max (; 139 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f32x4.max (param $0 v128) (param $1 v128) (result v128) (f32x4.max (local.get $0) (local.get $1) ) ) - (func $f32x4.abs (; 140 ;) (param $0 v128) (result v128) + (func $f32x4.pmin (param $0 v128) (param $1 v128) (result v128) + (f32x4.pmin + (local.get $0) + (local.get $1) + ) + ) + (func $f32x4.pmax (param $0 v128) (param $1 v128) (result v128) + (f32x4.pmax + (local.get $0) + (local.get $1) + ) + ) + (func $f32x4.ceil (param $0 v128) (result v128) + (f32x4.ceil + (local.get $0) + ) + ) + (func $f32x4.floor (param $0 v128) (result v128) + (f32x4.floor + (local.get $0) + ) + ) + (func $f32x4.trunc (param $0 v128) (result v128) + (f32x4.trunc + (local.get $0) + ) + ) + (func $f32x4.nearest (param $0 v128) (result v128) + (f32x4.nearest + (local.get $0) + ) + ) + (func $f32x4.abs (param $0 v128) (result v128) (f32x4.abs (local.get $0) ) ) - (func $f32x4.neg (; 141 ;) (param $0 v128) (result v128) + (func $f32x4.neg (param $0 v128) (result v128) (f32x4.neg (local.get $0) ) ) - (func $f32x4.sqrt (; 142 ;) (param $0 v128) (result v128) + (func $f32x4.sqrt (param $0 v128) (result v128) (f32x4.sqrt (local.get $0) ) ) - (func $f32x4.qfma (; 143 ;) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $f32x4.qfma (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (f32x4.qfma (local.get $0) (local.get $1) (local.get $2) ) ) - (func $f32x4.qfms (; 144 ;) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $f32x4.qfms (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (f32x4.qfms (local.get $0) (local.get $1) (local.get $2) ) ) - (func $f64x2.add (; 145 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.add (param $0 v128) (param $1 v128) (result v128) (f64x2.add (local.get $0) (local.get $1) ) ) - (func $f64x2.sub (; 146 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.sub (param $0 v128) (param $1 v128) (result v128) (f64x2.sub (local.get $0) (local.get $1) ) ) - (func $f64x2.mul (; 147 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.mul (param $0 v128) (param $1 v128) (result v128) (f64x2.mul (local.get $0) (local.get $1) ) ) - (func $f64x2.div (; 148 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.div (param $0 v128) (param $1 v128) (result v128) (f64x2.div (local.get $0) (local.get $1) ) ) - (func $f64x2.min (; 149 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.min (param $0 v128) (param $1 v128) (result v128) (f64x2.min (local.get $0) (local.get $1) ) ) - (func $f64x2.max (; 150 ;) (param $0 v128) (param $1 v128) (result v128) + (func $f64x2.max (param $0 v128) (param $1 v128) (result v128) (f64x2.max (local.get $0) (local.get $1) ) ) - (func $f64x2.abs (; 151 ;) (param $0 v128) (result v128) + (func $f64x2.pmin (param $0 v128) (param $1 v128) (result v128) + (f64x2.pmin + (local.get $0) + (local.get $1) + ) + ) + (func $f64x2.pmax (param $0 v128) (param $1 v128) (result v128) + (f64x2.pmax + (local.get $0) + (local.get $1) + ) + ) + (func $f64x2.ceil (param $0 v128) (result v128) + (f64x2.ceil + (local.get $0) + ) + ) + (func $f64x2.floor (param $0 v128) (result v128) + (f64x2.floor + (local.get $0) + ) + ) + (func $f64x2.trunc (param $0 v128) (result v128) + (f64x2.trunc + (local.get $0) + ) + ) + (func $f64x2.nearest (param $0 v128) (result v128) + (f64x2.nearest + (local.get $0) + ) + ) + (func $f64x2.abs (param $0 v128) (result v128) (f64x2.abs (local.get $0) ) ) - (func $f64x2.neg (; 152 ;) (param $0 v128) (result v128) + (func $f64x2.neg (param $0 v128) (result v128) (f64x2.neg (local.get $0) ) ) - (func $f64x2.sqrt (; 153 ;) (param $0 v128) (result v128) + (func $f64x2.sqrt (param $0 v128) (result v128) (f64x2.sqrt (local.get $0) ) ) - (func $f64x2.qfma (; 154 ;) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $f64x2.qfma (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (f64x2.qfma (local.get $0) (local.get $1) (local.get $2) ) ) - (func $f64x2.qfms (; 155 ;) (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (func $f64x2.qfms (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (f64x2.qfms (local.get $0) (local.get $1) (local.get $2) ) ) - (func $i32x4.trunc_sat_f32x4_s (; 156 ;) (param $0 v128) (result v128) + (func $i16x8.extadd_pairwise_i8x16_s (param $0 v128) (result v128) + (i16x8.extadd_pairwise_i8x16_s + (local.get $0) + ) + ) + (func $i16x8.extadd_pairwise_i8x16_u (param $0 v128) (result v128) + (i16x8.extadd_pairwise_i8x16_u + (local.get $0) + ) + ) + (func $i32x4.extadd_pairwise_i16x8_s (param $0 v128) (result v128) + (i32x4.extadd_pairwise_i16x8_s + (local.get $0) + ) + ) + (func $i32x4.extadd_pairwise_i16x8_u (param $0 v128) (result v128) + (i32x4.extadd_pairwise_i16x8_u + (local.get $0) + ) + ) + (func $i32x4.trunc_sat_f32x4_s (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_s (local.get $0) ) ) - (func $i32x4.trunc_sat_f32x4_u (; 157 ;) (param $0 v128) (result v128) + (func $i32x4.trunc_sat_f32x4_u (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_u (local.get $0) ) ) - (func $i64x2.trunc_sat_f64x2_s (; 158 ;) (param $0 v128) (result v128) + (func $i64x2.trunc_sat_f64x2_s (param $0 v128) (result v128) (i64x2.trunc_sat_f64x2_s (local.get $0) ) ) - (func $i64x2.trunc_sat_f64x2_u (; 159 ;) (param $0 v128) (result v128) + (func $i64x2.trunc_sat_f64x2_u (param $0 v128) (result v128) (i64x2.trunc_sat_f64x2_u (local.get $0) ) ) - (func $f32x4.convert_i32x4_s (; 160 ;) (param $0 v128) (result v128) + (func $f32x4.convert_i32x4_s (param $0 v128) (result v128) (f32x4.convert_i32x4_s (local.get $0) ) ) - (func $f32x4.convert_i32x4_u (; 161 ;) (param $0 v128) (result v128) + (func $f32x4.convert_i32x4_u (param $0 v128) (result v128) (f32x4.convert_i32x4_u (local.get $0) ) ) - (func $f64x2.convert_i64x2_s (; 162 ;) (param $0 v128) (result v128) + (func $f64x2.convert_i64x2_s (param $0 v128) (result v128) (f64x2.convert_i64x2_s (local.get $0) ) ) - (func $f64x2.convert_i64x2_u (; 163 ;) (param $0 v128) (result v128) + (func $f64x2.convert_i64x2_u (param $0 v128) (result v128) (f64x2.convert_i64x2_u (local.get $0) ) ) - (func $v8x16.load_splat (; 164 ;) (param $0 i32) (result v128) + (func $v8x16.load_splat (param $0 i32) (result v128) (v8x16.load_splat (local.get $0) ) ) - (func $v16x8.load_splat (; 165 ;) (param $0 i32) (result v128) + (func $v16x8.load_splat (param $0 i32) (result v128) (v16x8.load_splat (local.get $0) ) ) - (func $v32x4.load_splat (; 166 ;) (param $0 i32) (result v128) + (func $v32x4.load_splat (param $0 i32) (result v128) (v32x4.load_splat (local.get $0) ) ) - (func $v64x2.load_splat (; 167 ;) (param $0 i32) (result v128) + (func $v64x2.load_splat (param $0 i32) (result v128) (v64x2.load_splat (local.get $0) ) ) - (func $i8x16.narrow_i16x8_s (; 168 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.narrow_i16x8_s (param $0 v128) (param $1 v128) (result v128) (i8x16.narrow_i16x8_s (local.get $0) (local.get $1) ) ) - (func $i8x16.narrow_i16x8_u (; 169 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i8x16.narrow_i16x8_u (param $0 v128) (param $1 v128) (result v128) (i8x16.narrow_i16x8_u (local.get $0) (local.get $1) ) ) - (func $i16x8.narrow_i32x4_s (; 170 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.narrow_i32x4_s (param $0 v128) (param $1 v128) (result v128) (i16x8.narrow_i32x4_s (local.get $0) (local.get $1) ) ) - (func $i16x8.narrow_i32x4_u (; 171 ;) (param $0 v128) (param $1 v128) (result v128) + (func $i16x8.narrow_i32x4_u (param $0 v128) (param $1 v128) (result v128) (i16x8.narrow_i32x4_u (local.get $0) (local.get $1) ) ) - (func $i16x8.widen_low_i8x16_s (; 172 ;) (param $0 v128) (result v128) + (func $i16x8.widen_low_i8x16_s (param $0 v128) (result v128) (i16x8.widen_low_i8x16_s (local.get $0) ) ) - (func $i16x8.widen_high_i8x16_s (; 173 ;) (param $0 v128) (result v128) + (func $i16x8.widen_high_i8x16_s (param $0 v128) (result v128) (i16x8.widen_high_i8x16_s (local.get $0) ) ) - (func $i16x8.widen_low_i8x16_u (; 174 ;) (param $0 v128) (result v128) + (func $i16x8.widen_low_i8x16_u (param $0 v128) (result v128) (i16x8.widen_low_i8x16_u (local.get $0) ) ) - (func $i16x8.widen_high_i8x16_u (; 175 ;) (param $0 v128) (result v128) + (func $i16x8.widen_high_i8x16_u (param $0 v128) (result v128) (i16x8.widen_high_i8x16_u (local.get $0) ) ) - (func $i32x4.widen_low_i16x8_s (; 176 ;) (param $0 v128) (result v128) + (func $i32x4.widen_low_i16x8_s (param $0 v128) (result v128) (i32x4.widen_low_i16x8_s (local.get $0) ) ) - (func $i32x4.widen_high_i16x8_s (; 177 ;) (param $0 v128) (result v128) + (func $i32x4.widen_high_i16x8_s (param $0 v128) (result v128) (i32x4.widen_high_i16x8_s (local.get $0) ) ) - (func $i32x4.widen_low_i16x8_u (; 178 ;) (param $0 v128) (result v128) + (func $i32x4.widen_low_i16x8_u (param $0 v128) (result v128) (i32x4.widen_low_i16x8_u (local.get $0) ) ) - (func $i32x4.widen_high_i16x8_u (; 179 ;) (param $0 v128) (result v128) + (func $i32x4.widen_high_i16x8_u (param $0 v128) (result v128) (i32x4.widen_high_i16x8_u (local.get $0) ) ) - (func $i16x8.load8x8_u (; 180 ;) (param $0 i32) (result v128) + (func $i64x2.widen_low_i32x4_s (param $0 v128) (result v128) + (i64x2.widen_low_i32x4_s + (local.get $0) + ) + ) + (func $i64x2.widen_high_i32x4_s (param $0 v128) (result v128) + (i64x2.widen_high_i32x4_s + (local.get $0) + ) + ) + (func $i64x2.widen_low_i32x4_u (param $0 v128) (result v128) + (i64x2.widen_low_i32x4_u + (local.get $0) + ) + ) + (func $i64x2.widen_high_i32x4_u (param $0 v128) (result v128) + (i64x2.widen_high_i32x4_u + (local.get $0) + ) + ) + (func $i16x8.load8x8_u (param $0 i32) (result v128) (i16x8.load8x8_u (local.get $0) ) ) - (func $i16x8.load8x8_s (; 181 ;) (param $0 i32) (result v128) + (func $i16x8.load8x8_s (param $0 i32) (result v128) (i16x8.load8x8_s (local.get $0) ) ) - (func $i32x4.load16x4_s (; 182 ;) (param $0 i32) (result v128) + (func $i32x4.load16x4_s (param $0 i32) (result v128) (i32x4.load16x4_s (local.get $0) ) ) - (func $i32x4.load16x4_u (; 183 ;) (param $0 i32) (result v128) + (func $i32x4.load16x4_u (param $0 i32) (result v128) (i32x4.load16x4_u (local.get $0) ) ) - (func $i64x2.load32x2_s (; 184 ;) (param $0 i32) (result v128) + (func $i64x2.load32x2_s (param $0 i32) (result v128) (i64x2.load32x2_s (local.get $0) ) ) - (func $i64x2.load32x2_u (; 185 ;) (param $0 i32) (result v128) + (func $i64x2.load32x2_u (param $0 i32) (result v128) (i64x2.load32x2_u (local.get $0) ) ) - (func $v8x16.swizzle (; 186 ;) (param $0 v128) (param $1 v128) (result v128) + (func $v128.load32_zero (param $0 i32) (result v128) + (v128.load32_zero + (local.get $0) + ) + ) + (func $v128.load64_zero (param $0 i32) (result v128) + (v128.load64_zero + (local.get $0) + ) + ) + (func $v8x16.swizzle (param $0 v128) (param $1 v128) (result v128) (v8x16.swizzle (local.get $0) (local.get $1) ) ) + (func $prefetch.t (param $0 i32) + (prefetch.t offset=3 align=2 + (local.get $0) + ) + ) + (func $prefetch.nt (param $0 i32) + (prefetch.nt offset=3 align=2 + (local.get $0) + ) + ) ) diff -Nru binaryen-91/test/spec/address64.wast binaryen-99/test/spec/address64.wast --- binaryen-91/test/spec/address64.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/spec/address64.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,589 @@ +;; Load i32 data with different offset/align arguments + +(module + (memory i64 1) + (data (i32.const 0) "abcdefghijklmnopqrstuvwxyz") + + (func (export "8u_good1") (param $i i64) (result i32) + (i32.load8_u offset=0 (local.get $i)) ;; 97 'a' + ) + (func (export "8u_good2") (param $i i64) (result i32) + (i32.load8_u align=1 (local.get $i)) ;; 97 'a' + ) + (func (export "8u_good3") (param $i i64) (result i32) + (i32.load8_u offset=1 align=1 (local.get $i)) ;; 98 'b' + ) + (func (export "8u_good4") (param $i i64) (result i32) + (i32.load8_u offset=2 align=1 (local.get $i)) ;; 99 'c' + ) + (func (export "8u_good5") (param $i i64) (result i32) + (i32.load8_u offset=25 align=1 (local.get $i)) ;; 122 'z' + ) + + (func (export "8s_good1") (param $i i64) (result i32) + (i32.load8_s offset=0 (local.get $i)) ;; 97 'a' + ) + (func (export "8s_good2") (param $i i64) (result i32) + (i32.load8_s align=1 (local.get $i)) ;; 97 'a' + ) + (func (export "8s_good3") (param $i i64) (result i32) + (i32.load8_s offset=1 align=1 (local.get $i)) ;; 98 'b' + ) + (func (export "8s_good4") (param $i i64) (result i32) + (i32.load8_s offset=2 align=1 (local.get $i)) ;; 99 'c' + ) + (func (export "8s_good5") (param $i i64) (result i32) + (i32.load8_s offset=25 align=1 (local.get $i)) ;; 122 'z' + ) + + (func (export "16u_good1") (param $i i64) (result i32) + (i32.load16_u offset=0 (local.get $i)) ;; 25185 'ab' + ) + (func (export "16u_good2") (param $i i64) (result i32) + (i32.load16_u align=1 (local.get $i)) ;; 25185 'ab' + ) + (func (export "16u_good3") (param $i i64) (result i32) + (i32.load16_u offset=1 align=1 (local.get $i)) ;; 25442 'bc' + ) + (func (export "16u_good4") (param $i i64) (result i32) + (i32.load16_u offset=2 align=2 (local.get $i)) ;; 25699 'cd' + ) + (func (export "16u_good5") (param $i i64) (result i32) + (i32.load16_u offset=25 align=2 (local.get $i)) ;; 122 'z\0' + ) + + (func (export "16s_good1") (param $i i64) (result i32) + (i32.load16_s offset=0 (local.get $i)) ;; 25185 'ab' + ) + (func (export "16s_good2") (param $i i64) (result i32) + (i32.load16_s align=1 (local.get $i)) ;; 25185 'ab' + ) + (func (export "16s_good3") (param $i i64) (result i32) + (i32.load16_s offset=1 align=1 (local.get $i)) ;; 25442 'bc' + ) + (func (export "16s_good4") (param $i i64) (result i32) + (i32.load16_s offset=2 align=2 (local.get $i)) ;; 25699 'cd' + ) + (func (export "16s_good5") (param $i i64) (result i32) + (i32.load16_s offset=25 align=2 (local.get $i)) ;; 122 'z\0' + ) + + (func (export "32_good1") (param $i i64) (result i32) + (i32.load offset=0 (local.get $i)) ;; 1684234849 'abcd' + ) + (func (export "32_good2") (param $i i64) (result i32) + (i32.load align=1 (local.get $i)) ;; 1684234849 'abcd' + ) + (func (export "32_good3") (param $i i64) (result i32) + (i32.load offset=1 align=1 (local.get $i)) ;; 1701077858 'bcde' + ) + (func (export "32_good4") (param $i i64) (result i32) + (i32.load offset=2 align=2 (local.get $i)) ;; 1717920867 'cdef' + ) + (func (export "32_good5") (param $i i64) (result i32) + (i32.load offset=25 align=4 (local.get $i)) ;; 122 'z\0\0\0' + ) + + (func (export "8u_bad") (param $i i64) + (drop (i32.load8_u offset=4294967295 (local.get $i))) + ) + (func (export "8s_bad") (param $i i64) + (drop (i32.load8_s offset=4294967295 (local.get $i))) + ) + (func (export "16u_bad") (param $i i64) + (drop (i32.load16_u offset=4294967295 (local.get $i))) + ) + (func (export "16s_bad") (param $i i64) + (drop (i32.load16_s offset=4294967295 (local.get $i))) + ) + (func (export "32_bad") (param $i i64) + (drop (i32.load offset=4294967295 (local.get $i))) + ) +) + +(assert_return (invoke "8u_good1" (i64.const 0)) (i32.const 97)) +(assert_return (invoke "8u_good2" (i64.const 0)) (i32.const 97)) +(assert_return (invoke "8u_good3" (i64.const 0)) (i32.const 98)) +(assert_return (invoke "8u_good4" (i64.const 0)) (i32.const 99)) +(assert_return (invoke "8u_good5" (i64.const 0)) (i32.const 122)) + +(assert_return (invoke "8s_good1" (i64.const 0)) (i32.const 97)) +(assert_return (invoke "8s_good2" (i64.const 0)) (i32.const 97)) +(assert_return (invoke "8s_good3" (i64.const 0)) (i32.const 98)) +(assert_return (invoke "8s_good4" (i64.const 0)) (i32.const 99)) +(assert_return (invoke "8s_good5" (i64.const 0)) (i32.const 122)) + +(assert_return (invoke "16u_good1" (i64.const 0)) (i32.const 25185)) +(assert_return (invoke "16u_good2" (i64.const 0)) (i32.const 25185)) +(assert_return (invoke "16u_good3" (i64.const 0)) (i32.const 25442)) +(assert_return (invoke "16u_good4" (i64.const 0)) (i32.const 25699)) +(assert_return (invoke "16u_good5" (i64.const 0)) (i32.const 122)) + +(assert_return (invoke "16s_good1" (i64.const 0)) (i32.const 25185)) +(assert_return (invoke "16s_good2" (i64.const 0)) (i32.const 25185)) +(assert_return (invoke "16s_good3" (i64.const 0)) (i32.const 25442)) +(assert_return (invoke "16s_good4" (i64.const 0)) (i32.const 25699)) +(assert_return (invoke "16s_good5" (i64.const 0)) (i32.const 122)) + +(assert_return (invoke "32_good1" (i64.const 0)) (i32.const 1684234849)) +(assert_return (invoke "32_good2" (i64.const 0)) (i32.const 1684234849)) +(assert_return (invoke "32_good3" (i64.const 0)) (i32.const 1701077858)) +(assert_return (invoke "32_good4" (i64.const 0)) (i32.const 1717920867)) +(assert_return (invoke "32_good5" (i64.const 0)) (i32.const 122)) + +(assert_return (invoke "8u_good1" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "8u_good2" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "8u_good3" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "8u_good4" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "8u_good5" (i64.const 65507)) (i32.const 0)) + +(assert_return (invoke "8s_good1" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "8s_good2" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "8s_good3" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "8s_good4" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "8s_good5" (i64.const 65507)) (i32.const 0)) + +(assert_return (invoke "16u_good1" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "16u_good2" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "16u_good3" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "16u_good4" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "16u_good5" (i64.const 65507)) (i32.const 0)) + +(assert_return (invoke "16s_good1" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "16s_good2" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "16s_good3" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "16s_good4" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "16s_good5" (i64.const 65507)) (i32.const 0)) + +(assert_return (invoke "32_good1" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "32_good2" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "32_good3" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "32_good4" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "32_good5" (i64.const 65507)) (i32.const 0)) + +(assert_return (invoke "8u_good1" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "8u_good2" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "8u_good3" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "8u_good4" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "8u_good5" (i64.const 65508)) (i32.const 0)) + +(assert_return (invoke "8s_good1" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "8s_good2" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "8s_good3" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "8s_good4" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "8s_good5" (i64.const 65508)) (i32.const 0)) + +(assert_return (invoke "16u_good1" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "16u_good2" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "16u_good3" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "16u_good4" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "16u_good5" (i64.const 65508)) (i32.const 0)) + +(assert_return (invoke "16s_good1" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "16s_good2" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "16s_good3" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "16s_good4" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "16s_good5" (i64.const 65508)) (i32.const 0)) + +(assert_return (invoke "32_good1" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "32_good2" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "32_good3" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "32_good4" (i64.const 65508)) (i32.const 0)) +(assert_trap (invoke "32_good5" (i64.const 65508)) "out of bounds memory access") + +(assert_trap (invoke "8u_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "8s_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "16u_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "16s_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "32_bad" (i64.const 0)) "out of bounds memory access") + +(assert_trap (invoke "8u_bad" (i64.const 1)) "out of bounds memory access") +(assert_trap (invoke "8s_bad" (i64.const 1)) "out of bounds memory access") +(assert_trap (invoke "16u_bad" (i64.const 1)) "out of bounds memory access") +(assert_trap (invoke "16s_bad" (i64.const 1)) "out of bounds memory access") +(assert_trap (invoke "32_bad" (i64.const 1)) "out of bounds memory access") + +(assert_malformed + (module quote + "(memory i64 1)" + "(func (drop (i32.load offset=4294967296 (i64.const 0))))" + ) + "i32 constant" +) + +;; Load i64 data with different offset/align arguments + +(module + (memory i64 1) + (data (i32.const 0) "abcdefghijklmnopqrstuvwxyz") + + (func (export "8u_good1") (param $i i64) (result i64) + (i64.load8_u offset=0 (local.get $i)) ;; 97 'a' + ) + (func (export "8u_good2") (param $i i64) (result i64) + (i64.load8_u align=1 (local.get $i)) ;; 97 'a' + ) + (func (export "8u_good3") (param $i i64) (result i64) + (i64.load8_u offset=1 align=1 (local.get $i)) ;; 98 'b' + ) + (func (export "8u_good4") (param $i i64) (result i64) + (i64.load8_u offset=2 align=1 (local.get $i)) ;; 99 'c' + ) + (func (export "8u_good5") (param $i i64) (result i64) + (i64.load8_u offset=25 align=1 (local.get $i)) ;; 122 'z' + ) + + (func (export "8s_good1") (param $i i64) (result i64) + (i64.load8_s offset=0 (local.get $i)) ;; 97 'a' + ) + (func (export "8s_good2") (param $i i64) (result i64) + (i64.load8_s align=1 (local.get $i)) ;; 97 'a' + ) + (func (export "8s_good3") (param $i i64) (result i64) + (i64.load8_s offset=1 align=1 (local.get $i)) ;; 98 'b' + ) + (func (export "8s_good4") (param $i i64) (result i64) + (i64.load8_s offset=2 align=1 (local.get $i)) ;; 99 'c' + ) + (func (export "8s_good5") (param $i i64) (result i64) + (i64.load8_s offset=25 align=1 (local.get $i)) ;; 122 'z' + ) + + (func (export "16u_good1") (param $i i64) (result i64) + (i64.load16_u offset=0 (local.get $i)) ;; 25185 'ab' + ) + (func (export "16u_good2") (param $i i64) (result i64) + (i64.load16_u align=1 (local.get $i)) ;; 25185 'ab' + ) + (func (export "16u_good3") (param $i i64) (result i64) + (i64.load16_u offset=1 align=1 (local.get $i)) ;; 25442 'bc' + ) + (func (export "16u_good4") (param $i i64) (result i64) + (i64.load16_u offset=2 align=2 (local.get $i)) ;; 25699 'cd' + ) + (func (export "16u_good5") (param $i i64) (result i64) + (i64.load16_u offset=25 align=2 (local.get $i)) ;; 122 'z\0' + ) + + (func (export "16s_good1") (param $i i64) (result i64) + (i64.load16_s offset=0 (local.get $i)) ;; 25185 'ab' + ) + (func (export "16s_good2") (param $i i64) (result i64) + (i64.load16_s align=1 (local.get $i)) ;; 25185 'ab' + ) + (func (export "16s_good3") (param $i i64) (result i64) + (i64.load16_s offset=1 align=1 (local.get $i)) ;; 25442 'bc' + ) + (func (export "16s_good4") (param $i i64) (result i64) + (i64.load16_s offset=2 align=2 (local.get $i)) ;; 25699 'cd' + ) + (func (export "16s_good5") (param $i i64) (result i64) + (i64.load16_s offset=25 align=2 (local.get $i)) ;; 122 'z\0' + ) + + (func (export "32u_good1") (param $i i64) (result i64) + (i64.load32_u offset=0 (local.get $i)) ;; 1684234849 'abcd' + ) + (func (export "32u_good2") (param $i i64) (result i64) + (i64.load32_u align=1 (local.get $i)) ;; 1684234849 'abcd' + ) + (func (export "32u_good3") (param $i i64) (result i64) + (i64.load32_u offset=1 align=1 (local.get $i)) ;; 1701077858 'bcde' + ) + (func (export "32u_good4") (param $i i64) (result i64) + (i64.load32_u offset=2 align=2 (local.get $i)) ;; 1717920867 'cdef' + ) + (func (export "32u_good5") (param $i i64) (result i64) + (i64.load32_u offset=25 align=4 (local.get $i)) ;; 122 'z\0\0\0' + ) + + (func (export "32s_good1") (param $i i64) (result i64) + (i64.load32_s offset=0 (local.get $i)) ;; 1684234849 'abcd' + ) + (func (export "32s_good2") (param $i i64) (result i64) + (i64.load32_s align=1 (local.get $i)) ;; 1684234849 'abcd' + ) + (func (export "32s_good3") (param $i i64) (result i64) + (i64.load32_s offset=1 align=1 (local.get $i)) ;; 1701077858 'bcde' + ) + (func (export "32s_good4") (param $i i64) (result i64) + (i64.load32_s offset=2 align=2 (local.get $i)) ;; 1717920867 'cdef' + ) + (func (export "32s_good5") (param $i i64) (result i64) + (i64.load32_s offset=25 align=4 (local.get $i)) ;; 122 'z\0\0\0' + ) + + (func (export "64_good1") (param $i i64) (result i64) + (i64.load offset=0 (local.get $i)) ;; 0x6867666564636261 'abcdefgh' + ) + (func (export "64_good2") (param $i i64) (result i64) + (i64.load align=1 (local.get $i)) ;; 0x6867666564636261 'abcdefgh' + ) + (func (export "64_good3") (param $i i64) (result i64) + (i64.load offset=1 align=1 (local.get $i)) ;; 0x6968676665646362 'bcdefghi' + ) + (func (export "64_good4") (param $i i64) (result i64) + (i64.load offset=2 align=2 (local.get $i)) ;; 0x6a69686766656463 'cdefghij' + ) + (func (export "64_good5") (param $i i64) (result i64) + (i64.load offset=25 align=8 (local.get $i)) ;; 122 'z\0\0\0\0\0\0\0' + ) + + (func (export "8u_bad") (param $i i64) + (drop (i64.load8_u offset=4294967295 (local.get $i))) + ) + (func (export "8s_bad") (param $i i64) + (drop (i64.load8_s offset=4294967295 (local.get $i))) + ) + (func (export "16u_bad") (param $i i64) + (drop (i64.load16_u offset=4294967295 (local.get $i))) + ) + (func (export "16s_bad") (param $i i64) + (drop (i64.load16_s offset=4294967295 (local.get $i))) + ) + (func (export "32u_bad") (param $i i64) + (drop (i64.load32_u offset=4294967295 (local.get $i))) + ) + (func (export "32s_bad") (param $i i64) + (drop (i64.load32_s offset=4294967295 (local.get $i))) + ) + (func (export "64_bad") (param $i i64) + (drop (i64.load offset=4294967295 (local.get $i))) + ) +) + +(assert_return (invoke "8u_good1" (i64.const 0)) (i64.const 97)) +(assert_return (invoke "8u_good2" (i64.const 0)) (i64.const 97)) +(assert_return (invoke "8u_good3" (i64.const 0)) (i64.const 98)) +(assert_return (invoke "8u_good4" (i64.const 0)) (i64.const 99)) +(assert_return (invoke "8u_good5" (i64.const 0)) (i64.const 122)) + +(assert_return (invoke "8s_good1" (i64.const 0)) (i64.const 97)) +(assert_return (invoke "8s_good2" (i64.const 0)) (i64.const 97)) +(assert_return (invoke "8s_good3" (i64.const 0)) (i64.const 98)) +(assert_return (invoke "8s_good4" (i64.const 0)) (i64.const 99)) +(assert_return (invoke "8s_good5" (i64.const 0)) (i64.const 122)) + +(assert_return (invoke "16u_good1" (i64.const 0)) (i64.const 25185)) +(assert_return (invoke "16u_good2" (i64.const 0)) (i64.const 25185)) +(assert_return (invoke "16u_good3" (i64.const 0)) (i64.const 25442)) +(assert_return (invoke "16u_good4" (i64.const 0)) (i64.const 25699)) +(assert_return (invoke "16u_good5" (i64.const 0)) (i64.const 122)) + +(assert_return (invoke "16s_good1" (i64.const 0)) (i64.const 25185)) +(assert_return (invoke "16s_good2" (i64.const 0)) (i64.const 25185)) +(assert_return (invoke "16s_good3" (i64.const 0)) (i64.const 25442)) +(assert_return (invoke "16s_good4" (i64.const 0)) (i64.const 25699)) +(assert_return (invoke "16s_good5" (i64.const 0)) (i64.const 122)) + +(assert_return (invoke "32u_good1" (i64.const 0)) (i64.const 1684234849)) +(assert_return (invoke "32u_good2" (i64.const 0)) (i64.const 1684234849)) +(assert_return (invoke "32u_good3" (i64.const 0)) (i64.const 1701077858)) +(assert_return (invoke "32u_good4" (i64.const 0)) (i64.const 1717920867)) +(assert_return (invoke "32u_good5" (i64.const 0)) (i64.const 122)) + +(assert_return (invoke "32s_good1" (i64.const 0)) (i64.const 1684234849)) +(assert_return (invoke "32s_good2" (i64.const 0)) (i64.const 1684234849)) +(assert_return (invoke "32s_good3" (i64.const 0)) (i64.const 1701077858)) +(assert_return (invoke "32s_good4" (i64.const 0)) (i64.const 1717920867)) +(assert_return (invoke "32s_good5" (i64.const 0)) (i64.const 122)) + +(assert_return (invoke "64_good1" (i64.const 0)) (i64.const 0x6867666564636261)) +(assert_return (invoke "64_good2" (i64.const 0)) (i64.const 0x6867666564636261)) +(assert_return (invoke "64_good3" (i64.const 0)) (i64.const 0x6968676665646362)) +(assert_return (invoke "64_good4" (i64.const 0)) (i64.const 0x6a69686766656463)) +(assert_return (invoke "64_good5" (i64.const 0)) (i64.const 122)) + +(assert_return (invoke "8u_good1" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "8u_good2" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "8u_good3" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "8u_good4" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "8u_good5" (i64.const 65503)) (i64.const 0)) + +(assert_return (invoke "8s_good1" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "8s_good2" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "8s_good3" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "8s_good4" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "8s_good5" (i64.const 65503)) (i64.const 0)) + +(assert_return (invoke "16u_good1" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "16u_good2" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "16u_good3" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "16u_good4" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "16u_good5" (i64.const 65503)) (i64.const 0)) + +(assert_return (invoke "16s_good1" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "16s_good2" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "16s_good3" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "16s_good4" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "16s_good5" (i64.const 65503)) (i64.const 0)) + +(assert_return (invoke "32u_good1" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "32u_good2" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "32u_good3" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "32u_good4" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "32u_good5" (i64.const 65503)) (i64.const 0)) + +(assert_return (invoke "32s_good1" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "32s_good2" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "32s_good3" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "32s_good4" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "32s_good5" (i64.const 65503)) (i64.const 0)) + +(assert_return (invoke "64_good1" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "64_good2" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "64_good3" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "64_good4" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "64_good5" (i64.const 65503)) (i64.const 0)) + +(assert_return (invoke "8u_good1" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "8u_good2" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "8u_good3" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "8u_good4" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "8u_good5" (i64.const 65504)) (i64.const 0)) + +(assert_return (invoke "8s_good1" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "8s_good2" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "8s_good3" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "8s_good4" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "8s_good5" (i64.const 65504)) (i64.const 0)) + +(assert_return (invoke "16u_good1" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "16u_good2" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "16u_good3" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "16u_good4" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "16u_good5" (i64.const 65504)) (i64.const 0)) + +(assert_return (invoke "16s_good1" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "16s_good2" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "16s_good3" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "16s_good4" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "16s_good5" (i64.const 65504)) (i64.const 0)) + +(assert_return (invoke "32u_good1" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "32u_good2" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "32u_good3" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "32u_good4" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "32u_good5" (i64.const 65504)) (i64.const 0)) + +(assert_return (invoke "32s_good1" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "32s_good2" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "32s_good3" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "32s_good4" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "32s_good5" (i64.const 65504)) (i64.const 0)) + +(assert_return (invoke "64_good1" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "64_good2" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "64_good3" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "64_good4" (i64.const 65504)) (i64.const 0)) +(assert_trap (invoke "64_good5" (i64.const 65504)) "out of bounds memory access") + +(assert_trap (invoke "8u_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "8s_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "16u_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "16s_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "32u_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "32s_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "64_bad" (i64.const 0)) "out of bounds memory access") + +(assert_trap (invoke "8u_bad" (i64.const 1)) "out of bounds memory access") +(assert_trap (invoke "8s_bad" (i64.const 1)) "out of bounds memory access") +(assert_trap (invoke "16u_bad" (i64.const 1)) "out of bounds memory access") +(assert_trap (invoke "16s_bad" (i64.const 1)) "out of bounds memory access") +(assert_trap (invoke "32u_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "32s_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "64_bad" (i64.const 1)) "out of bounds memory access") + +;; Load f32 data with different offset/align arguments + +(module + (memory i64 1) + (data (i32.const 0) "\00\00\00\00\00\00\a0\7f\01\00\d0\7f") + + (func (export "32_good1") (param $i i64) (result f32) + (f32.load offset=0 (local.get $i)) ;; 0.0 '\00\00\00\00' + ) + (func (export "32_good2") (param $i i64) (result f32) + (f32.load align=1 (local.get $i)) ;; 0.0 '\00\00\00\00' + ) + (func (export "32_good3") (param $i i64) (result f32) + (f32.load offset=1 align=1 (local.get $i)) ;; 0.0 '\00\00\00\00' + ) + (func (export "32_good4") (param $i i64) (result f32) + (f32.load offset=2 align=2 (local.get $i)) ;; 0.0 '\00\00\00\00' + ) + (func (export "32_good5") (param $i i64) (result f32) + (f32.load offset=8 align=4 (local.get $i)) ;; nan:0x500001 '\01\00\d0\7f' + ) + (func (export "32_bad") (param $i i64) + (drop (f32.load offset=4294967295 (local.get $i))) + ) +) + +(assert_return (invoke "32_good1" (i64.const 0)) (f32.const 0.0)) +(assert_return (invoke "32_good2" (i64.const 0)) (f32.const 0.0)) +(assert_return (invoke "32_good3" (i64.const 0)) (f32.const 0.0)) +(assert_return (invoke "32_good4" (i64.const 0)) (f32.const 0.0)) +(assert_return (invoke "32_good5" (i64.const 0)) (f32.const nan:0x500001)) + +(assert_return (invoke "32_good1" (i64.const 65524)) (f32.const 0.0)) +(assert_return (invoke "32_good2" (i64.const 65524)) (f32.const 0.0)) +(assert_return (invoke "32_good3" (i64.const 65524)) (f32.const 0.0)) +(assert_return (invoke "32_good4" (i64.const 65524)) (f32.const 0.0)) +(assert_return (invoke "32_good5" (i64.const 65524)) (f32.const 0.0)) + +(assert_return (invoke "32_good1" (i64.const 65525)) (f32.const 0.0)) +(assert_return (invoke "32_good2" (i64.const 65525)) (f32.const 0.0)) +(assert_return (invoke "32_good3" (i64.const 65525)) (f32.const 0.0)) +(assert_return (invoke "32_good4" (i64.const 65525)) (f32.const 0.0)) +(assert_trap (invoke "32_good5" (i64.const 65525)) "out of bounds memory access") + +(assert_trap (invoke "32_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "32_bad" (i64.const 1)) "out of bounds memory access") + +;; Load f64 data with different offset/align arguments + +(module + (memory i64 1) + (data (i32.const 0) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f4\7f\01\00\00\00\00\00\fc\7f") + + (func (export "64_good1") (param $i i64) (result f64) + (f64.load offset=0 (local.get $i)) ;; 0.0 '\00\00\00\00\00\00\00\00' + ) + (func (export "64_good2") (param $i i64) (result f64) + (f64.load align=1 (local.get $i)) ;; 0.0 '\00\00\00\00\00\00\00\00' + ) + (func (export "64_good3") (param $i i64) (result f64) + (f64.load offset=1 align=1 (local.get $i)) ;; 0.0 '\00\00\00\00\00\00\00\00' + ) + (func (export "64_good4") (param $i i64) (result f64) + (f64.load offset=2 align=2 (local.get $i)) ;; 0.0 '\00\00\00\00\00\00\00\00' + ) + (func (export "64_good5") (param $i i64) (result f64) + (f64.load offset=18 align=8 (local.get $i)) ;; nan:0xc000000000001 '\01\00\00\00\00\00\fc\7f' + ) + (func (export "64_bad") (param $i i64) + (drop (f64.load offset=4294967295 (local.get $i))) + ) +) + +(assert_return (invoke "64_good1" (i64.const 0)) (f64.const 0.0)) +(assert_return (invoke "64_good2" (i64.const 0)) (f64.const 0.0)) +(assert_return (invoke "64_good3" (i64.const 0)) (f64.const 0.0)) +(assert_return (invoke "64_good4" (i64.const 0)) (f64.const 0.0)) +(assert_return (invoke "64_good5" (i64.const 0)) (f64.const nan:0xc000000000001)) + +(assert_return (invoke "64_good1" (i64.const 65510)) (f64.const 0.0)) +(assert_return (invoke "64_good2" (i64.const 65510)) (f64.const 0.0)) +(assert_return (invoke "64_good3" (i64.const 65510)) (f64.const 0.0)) +(assert_return (invoke "64_good4" (i64.const 65510)) (f64.const 0.0)) +(assert_return (invoke "64_good5" (i64.const 65510)) (f64.const 0.0)) + +(assert_return (invoke "64_good1" (i64.const 65511)) (f64.const 0.0)) +(assert_return (invoke "64_good2" (i64.const 65511)) (f64.const 0.0)) +(assert_return (invoke "64_good3" (i64.const 65511)) (f64.const 0.0)) +(assert_return (invoke "64_good4" (i64.const 65511)) (f64.const 0.0)) +(assert_trap (invoke "64_good5" (i64.const 65511)) "out of bounds memory access") + +(assert_trap (invoke "64_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "64_bad" (i64.const 1)) "out of bounds memory access") diff -Nru binaryen-91/test/spec/align64.wast binaryen-99/test/spec/align64.wast --- binaryen-91/test/spec/align64.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/spec/align64.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,866 @@ +;; Test alignment annotation rules + +(module (memory i64 0) (func (drop (i32.load8_s align=1 (i64.const 0))))) +(module (memory i64 0) (func (drop (i32.load8_u align=1 (i64.const 0))))) +(module (memory i64 0) (func (drop (i32.load16_s align=2 (i64.const 0))))) +(module (memory i64 0) (func (drop (i32.load16_u align=2 (i64.const 0))))) +(module (memory i64 0) (func (drop (i32.load align=4 (i64.const 0))))) +(module (memory i64 0) (func (drop (i64.load8_s align=1 (i64.const 0))))) +(module (memory i64 0) (func (drop (i64.load8_u align=1 (i64.const 0))))) +(module (memory i64 0) (func (drop (i64.load16_s align=2 (i64.const 0))))) +(module (memory i64 0) (func (drop (i64.load16_u align=2 (i64.const 0))))) +(module (memory i64 0) (func (drop (i64.load32_s align=4 (i64.const 0))))) +(module (memory i64 0) (func (drop (i64.load32_u align=4 (i64.const 0))))) +(module (memory i64 0) (func (drop (i64.load align=8 (i64.const 0))))) +(module (memory i64 0) (func (drop (f32.load align=4 (i64.const 0))))) +(module (memory i64 0) (func (drop (f64.load align=8 (i64.const 0))))) +(module (memory i64 0) (func (i32.store8 align=1 (i64.const 0) (i32.const 1)))) +(module (memory i64 0) (func (i32.store16 align=2 (i64.const 0) (i32.const 1)))) +(module (memory i64 0) (func (i32.store align=4 (i64.const 0) (i32.const 1)))) +(module (memory i64 0) (func (i64.store8 align=1 (i64.const 0) (i64.const 1)))) +(module (memory i64 0) (func (i64.store16 align=2 (i64.const 0) (i64.const 1)))) +(module (memory i64 0) (func (i64.store32 align=4 (i64.const 0) (i64.const 1)))) +(module (memory i64 0) (func (i64.store align=8 (i64.const 0) (i64.const 1)))) +(module (memory i64 0) (func (f32.store align=4 (i64.const 0) (f32.const 1.0)))) +(module (memory i64 0) (func (f64.store align=8 (i64.const 0) (f64.const 1.0)))) + +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i32.load8_s align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i32.load8_s align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i32.load8_u align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i32.load8_u align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i32.load16_s align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i32.load16_s align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i32.load16_u align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i32.load16_u align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i32.load align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i32.load align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load8_s align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load8_s align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load8_u align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load8_u align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load16_s align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load16_s align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load16_u align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load16_u align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load32_s align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load32_s align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load32_u align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load32_u align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (f32.load align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (f32.load align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (f64.load align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (f64.load align=7 (i64.const 0)))))" + ) + "alignment" +) + +(assert_malformed + (module quote + "(module (memory i64 0) (func (i32.store8 align=0 (i64.const 0) (i32.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i32.store8 align=7 (i64.const 0) (i32.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i32.store16 align=0 (i64.const 0) (i32.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i32.store16 align=7 (i64.const 0) (i32.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i32.store align=0 (i64.const 0) (i32.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i32.store align=7 (i64.const 0) (i32.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i64.store8 align=0 (i64.const 0) (i64.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i64.store8 align=7 (i64.const 0) (i64.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i64.store16 align=0 (i64.const 0) (i64.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i64.store16 align=7 (i64.const 0) (i64.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i64.store32 align=0 (i64.const 0) (i64.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i64.store32 align=7 (i64.const 0) (i64.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i64.store align=0 (i64.const 0) (i64.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i64.store align=7 (i64.const 0) (i64.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (f32.store align=0 (i64.const 0) (f32.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (f32.store align=7 (i64.const 0) (f32.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (f64.store align=0 (i64.const 0) (f32.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (f64.store align=7 (i64.const 0) (f32.const 0))))" + ) + "alignment" +) + +(assert_invalid + (module (memory i64 0) (func (drop (i32.load8_s align=2 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i32.load8_u align=2 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i32.load16_s align=4 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i32.load16_u align=4 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i32.load align=8 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load8_s align=2 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load8_u align=2 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load16_s align=4 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load16_u align=4 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load32_s align=8 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load32_u align=8 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load align=16 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (f32.load align=8 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (f64.load align=16 (i64.const 0))))) + "alignment must not be larger than natural" +) + +(assert_invalid + (module (memory i64 0) (func (drop (i32.load8_s align=2 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i32.load8_u align=2 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i32.load16_s align=4 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i32.load16_u align=4 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i32.load align=8 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load8_s align=2 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load8_u align=2 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load16_s align=4 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load16_u align=4 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load32_s align=8 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load32_u align=8 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load align=16 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (f32.load align=8 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (f64.load align=16 (i64.const 0))))) + "alignment must not be larger than natural" +) + +(assert_invalid + (module (memory i64 0) (func (i32.store8 align=2 (i64.const 0) (i32.const 0)))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (i32.store16 align=4 (i64.const 0) (i32.const 0)))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (i32.store align=8 (i64.const 0) (i32.const 0)))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (i64.store8 align=2 (i64.const 0) (i64.const 0)))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (i64.store16 align=4 (i64.const 0) (i64.const 0)))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (i64.store32 align=8 (i64.const 0) (i64.const 0)))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (i64.store align=16 (i64.const 0) (i64.const 0)))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (f32.store align=8 (i64.const 0) (f32.const 0)))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (f64.store align=16 (i64.const 0) (f64.const 0)))) + "alignment must not be larger than natural" +) + +;; Test aligned and unaligned read/write + +(module + (memory i64 1) + + ;; $default: natural alignment, $1: align=1, $2: align=2, $4: align=4, $8: align=8 + + (func (export "f32_align_switch") (param i32) (result f32) + (local f32 f32) + (local.set 1 (f32.const 10.0)) + (block $4 + (block $2 + (block $1 + (block $default + (block $0 + (br_table $0 $default $1 $2 $4 (local.get 0)) + ) ;; 0 + (f32.store (i64.const 0) (local.get 1)) + (local.set 2 (f32.load (i64.const 0))) + (br $4) + ) ;; default + (f32.store align=1 (i64.const 0) (local.get 1)) + (local.set 2 (f32.load align=1 (i64.const 0))) + (br $4) + ) ;; 1 + (f32.store align=2 (i64.const 0) (local.get 1)) + (local.set 2 (f32.load align=2 (i64.const 0))) + (br $4) + ) ;; 2 + (f32.store align=4 (i64.const 0) (local.get 1)) + (local.set 2 (f32.load align=4 (i64.const 0))) + ) ;; 4 + (local.get 2) + ) + + (func (export "f64_align_switch") (param i32) (result f64) + (local f64 f64) + (local.set 1 (f64.const 10.0)) + (block $8 + (block $4 + (block $2 + (block $1 + (block $default + (block $0 + (br_table $0 $default $1 $2 $4 $8 (local.get 0)) + ) ;; 0 + (f64.store (i64.const 0) (local.get 1)) + (local.set 2 (f64.load (i64.const 0))) + (br $8) + ) ;; default + (f64.store align=1 (i64.const 0) (local.get 1)) + (local.set 2 (f64.load align=1 (i64.const 0))) + (br $8) + ) ;; 1 + (f64.store align=2 (i64.const 0) (local.get 1)) + (local.set 2 (f64.load align=2 (i64.const 0))) + (br $8) + ) ;; 2 + (f64.store align=4 (i64.const 0) (local.get 1)) + (local.set 2 (f64.load align=4 (i64.const 0))) + (br $8) + ) ;; 4 + (f64.store align=8 (i64.const 0) (local.get 1)) + (local.set 2 (f64.load align=8 (i64.const 0))) + ) ;; 8 + (local.get 2) + ) + + ;; $8s: i32/i64.load8_s, $8u: i32/i64.load8_u, $16s: i32/i64.load16_s, $16u: i32/i64.load16_u, $32: i32.load + ;; $32s: i64.load32_s, $32u: i64.load32_u, $64: i64.load + + (func (export "i32_align_switch") (param i32 i32) (result i32) + (local i32 i32) + (local.set 2 (i32.const 10)) + (block $32 + (block $16u + (block $16s + (block $8u + (block $8s + (block $0 + (br_table $0 $8s $8u $16s $16u $32 (local.get 0)) + ) ;; 0 + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i32.store8 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load8_s (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i32.store8 align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load8_s align=1 (i64.const 0))) + ) + ) + (br $32) + ) ;; 8s + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i32.store8 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load8_u (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i32.store8 align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load8_u align=1 (i64.const 0))) + ) + ) + (br $32) + ) ;; 8u + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i32.store16 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load16_s (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i32.store16 align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load16_s align=1 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 2)) + (then + (i32.store16 align=2 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load16_s align=2 (i64.const 0))) + ) + ) + (br $32) + ) ;; 16s + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i32.store16 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load16_u (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i32.store16 align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load16_u align=1 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 2)) + (then + (i32.store16 align=2 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load16_u align=2 (i64.const 0))) + ) + ) + (br $32) + ) ;; 16u + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i32.store (i64.const 0) (local.get 2)) + (local.set 3 (i32.load (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i32.store align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load align=1 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 2)) + (then + (i32.store align=2 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load align=2 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 4)) + (then + (i32.store align=4 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load align=4 (i64.const 0))) + ) + ) + ) ;; 32 + (local.get 3) + ) + + (func (export "i64_align_switch") (param i32 i32) (result i64) + (local i64 i64) + (local.set 2 (i64.const 10)) + (block $64 + (block $32u + (block $32s + (block $16u + (block $16s + (block $8u + (block $8s + (block $0 + (br_table $0 $8s $8u $16s $16u $32s $32u $64 (local.get 0)) + ) ;; 0 + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i64.store8 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load8_s (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i64.store8 align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load8_s align=1 (i64.const 0))) + ) + ) + (br $64) + ) ;; 8s + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i64.store8 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load8_u (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i64.store8 align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load8_u align=1 (i64.const 0))) + ) + ) + (br $64) + ) ;; 8u + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i64.store16 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load16_s (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i64.store16 align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load16_s align=1 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 2)) + (then + (i64.store16 align=2 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load16_s align=2 (i64.const 0))) + ) + ) + (br $64) + ) ;; 16s + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i64.store16 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load16_u (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i64.store16 align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load16_u align=1 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 2)) + (then + (i64.store16 align=2 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load16_u align=2 (i64.const 0))) + ) + ) + (br $64) + ) ;; 16u + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i64.store32 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load32_s (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i64.store32 align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load32_s align=1 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 2)) + (then + (i64.store32 align=2 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load32_s align=2 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 4)) + (then + (i64.store32 align=4 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load32_s align=4 (i64.const 0))) + ) + ) + (br $64) + ) ;; 32s + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i64.store32 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load32_u (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i64.store32 align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load32_u align=1 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 2)) + (then + (i64.store32 align=2 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load32_u align=2 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 4)) + (then + (i64.store32 align=4 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load32_u align=4 (i64.const 0))) + ) + ) + (br $64) + ) ;; 32u + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i64.store (i64.const 0) (local.get 2)) + (local.set 3 (i64.load (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i64.store align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load align=1 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 2)) + (then + (i64.store align=2 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load align=2 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 4)) + (then + (i64.store align=4 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load align=4 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 8)) + (then + (i64.store align=8 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load align=8 (i64.const 0))) + ) + ) + ) ;; 64 + (local.get 3) + ) +) + +(assert_return (invoke "f32_align_switch" (i32.const 0)) (f32.const 10.0)) +(assert_return (invoke "f32_align_switch" (i32.const 1)) (f32.const 10.0)) +(assert_return (invoke "f32_align_switch" (i32.const 2)) (f32.const 10.0)) +(assert_return (invoke "f32_align_switch" (i32.const 3)) (f32.const 10.0)) + +(assert_return (invoke "f64_align_switch" (i32.const 0)) (f64.const 10.0)) +(assert_return (invoke "f64_align_switch" (i32.const 1)) (f64.const 10.0)) +(assert_return (invoke "f64_align_switch" (i32.const 2)) (f64.const 10.0)) +(assert_return (invoke "f64_align_switch" (i32.const 3)) (f64.const 10.0)) +(assert_return (invoke "f64_align_switch" (i32.const 4)) (f64.const 10.0)) + +(assert_return (invoke "i32_align_switch" (i32.const 0) (i32.const 0)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 0) (i32.const 1)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 1) (i32.const 0)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 1) (i32.const 1)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 2) (i32.const 0)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 2) (i32.const 1)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 2) (i32.const 2)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 3) (i32.const 0)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 3) (i32.const 1)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 3) (i32.const 2)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 4) (i32.const 0)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 4) (i32.const 1)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 4) (i32.const 2)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 4) (i32.const 4)) (i32.const 10)) + +(assert_return (invoke "i64_align_switch" (i32.const 0) (i32.const 0)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 0) (i32.const 1)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 1) (i32.const 0)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 1) (i32.const 1)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 2) (i32.const 0)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 2) (i32.const 1)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 2) (i32.const 2)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 3) (i32.const 0)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 3) (i32.const 1)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 3) (i32.const 2)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 4) (i32.const 0)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 4) (i32.const 1)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 4) (i32.const 2)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 4) (i32.const 4)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 5) (i32.const 0)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 5) (i32.const 1)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 5) (i32.const 2)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 5) (i32.const 4)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 6) (i32.const 0)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 6) (i32.const 1)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 6) (i32.const 2)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 6) (i32.const 4)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 6) (i32.const 8)) (i64.const 10)) + +;; Test that an i64 store with 4-byte alignment that's 4 bytes out of bounds traps without storing anything + +(module + (memory i64 1) + (func (export "store") (param i64 i64) + (i64.store align=4 (local.get 0) (local.get 1)) + ) + (func (export "load") (param i64) (result i32) + (i32.load (local.get 0)) + ) +) + +(assert_trap (invoke "store" (i64.const 65532) (i64.const -1)) "out of bounds memory access") +;; No memory was changed +(assert_return (invoke "load" (i64.const 65532)) (i32.const 0)) diff -Nru binaryen-91/test/spec/bulk-memory64.wast binaryen-99/test/spec/bulk-memory64.wast --- binaryen-91/test/spec/bulk-memory64.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/spec/bulk-memory64.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,171 @@ +;; Passive segment syntax +(module + (memory i64 1) + (data passive "foo")) + +;; memory.fill +(module + (memory i64 1) + + (func (export "fill") (param i64 i32 i64) + (memory.fill + (local.get 0) + (local.get 1) + (local.get 2))) + + (func (export "load8_u") (param i64) (result i32) + (i32.load8_u (local.get 0))) +) + +;; Basic fill test. +(invoke "fill" (i64.const 1) (i32.const 0xff) (i64.const 3)) +(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0xff)) +(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 0xff)) +(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 0xff)) +(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 0)) + +;; Fill value is stored as a byte. +(invoke "fill" (i64.const 0) (i32.const 0xbbaa) (i64.const 2)) +(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0xaa)) +(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0xaa)) + +;; Fill all of memory +(invoke "fill" (i64.const 0) (i32.const 0) (i64.const 0x10000)) + +;; Succeed when writing 0 bytes at the end of the region. +(invoke "fill" (i64.const 0x10000) (i32.const 0) (i64.const 0)) + +;; Writing 0 bytes outside of memory limit is NOT allowed. +(assert_trap (invoke "fill" (i64.const 0x10001) (i32.const 0) (i64.const 0))) + +;; Negative size +(assert_trap (invoke "fill" (i64.const 15) (i32.const 14) (i64.const -2))) +(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 0)) + +;; memory.copy +(module + (memory i64 1 1) + (data (i32.const 0) "\aa\bb\cc\dd") + + (func (export "copy") (param i64 i64 i64) + (memory.copy + (local.get 0) + (local.get 1) + (local.get 2))) + + (func (export "load8_u") (param i64) (result i32) + (i32.load8_u (local.get 0))) +) + +;; Non-overlapping copy. +(invoke "copy" (i64.const 10) (i64.const 0) (i64.const 4)) + +(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0xaa)) +(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0xbb)) +(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 0xcc)) +(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 0xdd)) +(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 0)) + +;; Overlap, source > dest +(invoke "copy" (i64.const 8) (i64.const 10) (i64.const 4)) +(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 0xaa)) +(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0xbb)) +(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0xcc)) +(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0xdd)) +(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 0xcc)) +(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 0xdd)) + +;; Overlap, source < dest +(invoke "copy" (i64.const 10) (i64.const 7) (i64.const 6)) +(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0xaa)) +(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 0xbb)) +(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 0xcc)) +(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 0xdd)) +(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 0xcc)) +(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 0)) + +;; Overlap, source < dest but size is out of bounds +(assert_trap (invoke "copy" (i64.const 13) (i64.const 11) (i64.const -1))) +(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0xaa)) +(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 0xbb)) +(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 0xcc)) +(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 0xdd)) +(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 0xcc)) +(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 0)) + +;; Copy ending at memory limit is ok. +(invoke "copy" (i64.const 0xff00) (i64.const 0) (i64.const 0x100)) +(invoke "copy" (i64.const 0xfe00) (i64.const 0xff00) (i64.const 0x100)) + +;; Succeed when copying 0 bytes at the end of the region. +(invoke "copy" (i64.const 0x10000) (i64.const 0) (i64.const 0)) +(invoke "copy" (i64.const 0) (i64.const 0x10000) (i64.const 0)) + +;; Copying 0 bytes outside of memory limit is NOT allowed. +(assert_trap (invoke "copy" (i64.const 0x10001) (i64.const 0) (i64.const 0))) +(assert_trap (invoke "copy" (i64.const 0) (i64.const 0x10001) (i64.const 0))) + +;; memory.init +(module + (memory i64 1) + (data passive "\aa\bb\cc\dd") + + (func (export "init") (param i64 i32 i32) + (memory.init 0 + (local.get 0) + (local.get 1) + (local.get 2))) + + (func (export "load8_u") (param i64) (result i32) + (i32.load8_u (local.get 0))) +) + +(invoke "init" (i64.const 0) (i32.const 1) (i32.const 2)) +(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0xbb)) +(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0xcc)) +(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 0)) + +;; Init ending at memory limit and segment limit is ok. +(invoke "init" (i64.const 0xfffc) (i32.const 0) (i32.const 4)) + +;; Out-of-bounds writes trap, and no partial writes has been made. +(assert_trap (invoke "init" (i64.const 0xfffe) (i32.const 0) (i32.const 3)) + "out of bounds memory access") +(assert_return (invoke "load8_u" (i64.const 0xfffe)) (i32.const 0xcc)) +(assert_return (invoke "load8_u" (i64.const 0xffff)) (i32.const 0xdd)) + +;; Succeed when writing 0 bytes at the end of either region. +(invoke "init" (i64.const 0x10000) (i32.const 0) (i32.const 0)) +(invoke "init" (i64.const 0) (i32.const 4) (i32.const 0)) + +;; Writing 0 bytes outside of memory / segment limit is NOT allowed. +(assert_trap (invoke "init" (i64.const 0x10001) (i32.const 0) (i32.const 0))) +(assert_trap (invoke "init" (i64.const 0) (i32.const 5) (i32.const 0))) + +;; OK to access 0 bytes at offset 0 in a dropped segment. +(invoke "init" (i64.const 0) (i32.const 0) (i32.const 0)) + +;; data.drop +(module + (memory i64 1) + (data passive "") + (data (i32.const 0) "") + + (func (export "drop_passive") (data.drop 0)) + (func (export "init_passive") + (memory.init 0 (i64.const 0) (i32.const 0) (i32.const 0))) + + (func (export "drop_active") (data.drop 1)) + (func (export "init_active") + (memory.init 1 (i64.const 0) (i32.const 0) (i32.const 0))) +) + +;; OK to drop the same segment multiple times or drop an active segment. +(invoke "init_passive") +(invoke "drop_passive") +(invoke "drop_passive") +(invoke "drop_active") diff -Nru binaryen-91/test/spec/bulk-memory.wast binaryen-99/test/spec/bulk-memory.wast --- binaryen-91/test/spec/bulk-memory.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/spec/bulk-memory.wast 2021-01-07 20:01:06.000000000 +0000 @@ -39,6 +39,10 @@ ;; Writing 0 bytes outside of memory limit is NOT allowed. (assert_trap (invoke "fill" (i32.const 0x10001) (i32.const 0) (i32.const 0))) +;; Negative size +(assert_trap (invoke "fill" (i32.const 15) (i32.const 14) (i32.const -2))) +(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 0)) + ;; memory.copy (module (memory 1 1) diff -Nru binaryen-91/test/spec/call_indirect_sig_mismatch.wast binaryen-99/test/spec/call_indirect_sig_mismatch.wast --- binaryen-91/test/spec/call_indirect_sig_mismatch.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/spec/call_indirect_sig_mismatch.wast 2021-01-07 20:01:06.000000000 +0000 @@ -5,7 +5,7 @@ (func $callee (param $0 exnref)) (func $sig_mismatch (call_indirect (type $funcref_=>_none) - (ref.null) + (ref.null func) (i32.const 0) ) ) diff -Nru binaryen-91/test/spec/conversions.wast binaryen-99/test/spec/conversions.wast --- binaryen-91/test/spec/conversions.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/spec/conversions.wast 2021-01-07 20:01:06.000000000 +0000 @@ -121,6 +121,22 @@ (assert_trap (invoke "i32.trunc_f64_s" (f64.const -nan)) "invalid conversion to integer") (assert_trap (invoke "i32.trunc_f64_s" (f64.const -nan:0x4000000000000)) "invalid conversion to integer") +;; f64 -> i32 rounding to the exact i32 limit +(assert_return (invoke "i32.trunc_f64_s" (f64.const -2147483648.9)) (i32.const -2147483648)) +(assert_return (invoke "i32.trunc_f64_s" (f64.const 2147483647.9)) (i32.const 2147483647)) +(assert_return (invoke "i32.trunc_f64_u" (f64.const -0.9)) (i32.const 0)) +(assert_return (invoke "i32.trunc_f64_u" (f64.const 4294967295.9)) (i32.const 4294967295)) + +;; f64 -> i32 rounding at the exact boundary + float parsing +(assert_return (invoke "i32.trunc_f64_s" (f64.const -2147483648.9999997)) (i32.const -2147483648)) +(assert_trap (invoke "i32.trunc_f64_s" (f64.const -2147483648.9999998)) "integer overflow") +(assert_return (invoke "i32.trunc_f64_s" (f64.const 2147483647.9999998)) (i32.const 2147483647)) +(assert_trap (invoke "i32.trunc_f64_s" (f64.const 2147483647.9999999)) "integer overflow") +(assert_return (invoke "i32.trunc_f64_u" (f64.const -0.99999999999999994)) (i32.const 0)) +(assert_trap (invoke "i32.trunc_f64_u" (f64.const -0.99999999999999995)) "integer overflow") +(assert_return (invoke "i32.trunc_f64_u" (f64.const 4294967295.9999997)) (i32.const 4294967295)) +(assert_trap (invoke "i32.trunc_f64_u" (f64.const 4294967295.9999998)) "integer overflow") + (assert_return (invoke "i32.trunc_f64_u" (f64.const 0.0)) (i32.const 0)) (assert_return (invoke "i32.trunc_f64_u" (f64.const -0.0)) (i32.const 0)) (assert_return (invoke "i32.trunc_f64_u" (f64.const 0x0.0000000000001p-1022)) (i32.const 0)) diff -Nru binaryen-91/test/spec/endianness64.wast binaryen-99/test/spec/endianness64.wast --- binaryen-91/test/spec/endianness64.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/spec/endianness64.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,217 @@ +(module + (memory i64 1) + + ;; Stores an i16 value in little-endian-format + (func $i16_store_little (param $address i64) (param $value i32) + (i32.store8 (local.get $address) (local.get $value)) + (i32.store8 (i64.add (local.get $address) (i64.const 1)) (i32.shr_u (local.get $value) (i32.const 8))) + ) + + ;; Stores an i32 value in little-endian format + (func $i32_store_little (param $address i64) (param $value i32) + (call $i16_store_little (local.get $address) (local.get $value)) + (call $i16_store_little (i64.add (local.get $address) (i64.const 2)) (i32.shr_u (local.get $value) (i32.const 16))) + ) + + ;; Stores an i64 value in little-endian format + (func $i64_store_little (param $address i64) (param $value i64) + (call $i32_store_little (local.get $address) (i32.wrap_i64 (local.get $value))) + (call $i32_store_little (i64.add (local.get $address) (i64.const 4)) (i32.wrap_i64 (i64.shr_u (local.get $value) (i64.const 32)))) + ) + + ;; Loads an i16 value in little-endian format + (func $i16_load_little (param $address i64) (result i32) + (i32.or + (i32.load8_u (local.get $address)) + (i32.shl (i32.load8_u (i64.add (local.get $address) (i64.const 1))) (i32.const 8)) + ) + ) + + ;; Loads an i32 value in little-endian format + (func $i32_load_little (param $address i64) (result i32) + (i32.or + (call $i16_load_little (local.get $address)) + (i32.shl (call $i16_load_little (i64.add (local.get $address) (i64.const 2))) (i32.const 16)) + ) + ) + + ;; Loads an i64 value in little-endian format + (func $i64_load_little (param $address i64) (result i64) + (i64.or + (i64.extend_i32_u (call $i32_load_little (local.get $address))) + (i64.shl (i64.extend_i32_u (call $i32_load_little (i64.add (local.get $address) (i64.const 4)))) (i64.const 32)) + ) + ) + + (func (export "i32_load16_s") (param $value i32) (result i32) + (call $i16_store_little (i64.const 0) (local.get $value)) + (i32.load16_s (i64.const 0)) + ) + + (func (export "i32_load16_u") (param $value i32) (result i32) + (call $i16_store_little (i64.const 0) (local.get $value)) + (i32.load16_u (i64.const 0)) + ) + + (func (export "i32_load") (param $value i32) (result i32) + (call $i32_store_little (i64.const 0) (local.get $value)) + (i32.load (i64.const 0)) + ) + + (func (export "i64_load16_s") (param $value i64) (result i64) + (call $i16_store_little (i64.const 0) (i32.wrap_i64 (local.get $value))) + (i64.load16_s (i64.const 0)) + ) + + (func (export "i64_load16_u") (param $value i64) (result i64) + (call $i16_store_little (i64.const 0) (i32.wrap_i64 (local.get $value))) + (i64.load16_u (i64.const 0)) + ) + + (func (export "i64_load32_s") (param $value i64) (result i64) + (call $i32_store_little (i64.const 0) (i32.wrap_i64 (local.get $value))) + (i64.load32_s (i64.const 0)) + ) + + (func (export "i64_load32_u") (param $value i64) (result i64) + (call $i32_store_little (i64.const 0) (i32.wrap_i64 (local.get $value))) + (i64.load32_u (i64.const 0)) + ) + + (func (export "i64_load") (param $value i64) (result i64) + (call $i64_store_little (i64.const 0) (local.get $value)) + (i64.load (i64.const 0)) + ) + + (func (export "f32_load") (param $value f32) (result f32) + (call $i32_store_little (i64.const 0) (i32.reinterpret_f32 (local.get $value))) + (f32.load (i64.const 0)) + ) + + (func (export "f64_load") (param $value f64) (result f64) + (call $i64_store_little (i64.const 0) (i64.reinterpret_f64 (local.get $value))) + (f64.load (i64.const 0)) + ) + + + (func (export "i32_store16") (param $value i32) (result i32) + (i32.store16 (i64.const 0) (local.get $value)) + (call $i16_load_little (i64.const 0)) + ) + + (func (export "i32_store") (param $value i32) (result i32) + (i32.store (i64.const 0) (local.get $value)) + (call $i32_load_little (i64.const 0)) + ) + + (func (export "i64_store16") (param $value i64) (result i64) + (i64.store16 (i64.const 0) (local.get $value)) + (i64.extend_i32_u (call $i16_load_little (i64.const 0))) + ) + + (func (export "i64_store32") (param $value i64) (result i64) + (i64.store32 (i64.const 0) (local.get $value)) + (i64.extend_i32_u (call $i32_load_little (i64.const 0))) + ) + + (func (export "i64_store") (param $value i64) (result i64) + (i64.store (i64.const 0) (local.get $value)) + (call $i64_load_little (i64.const 0)) + ) + + (func (export "f32_store") (param $value f32) (result f32) + (f32.store (i64.const 0) (local.get $value)) + (f32.reinterpret_i32 (call $i32_load_little (i64.const 0))) + ) + + (func (export "f64_store") (param $value f64) (result f64) + (f64.store (i64.const 0) (local.get $value)) + (f64.reinterpret_i64 (call $i64_load_little (i64.const 0))) + ) +) + +(assert_return (invoke "i32_load16_s" (i32.const -1)) (i32.const -1)) +(assert_return (invoke "i32_load16_s" (i32.const -4242)) (i32.const -4242)) +(assert_return (invoke "i32_load16_s" (i32.const 42)) (i32.const 42)) +(assert_return (invoke "i32_load16_s" (i32.const 0x3210)) (i32.const 0x3210)) + +(assert_return (invoke "i32_load16_u" (i32.const -1)) (i32.const 0xFFFF)) +(assert_return (invoke "i32_load16_u" (i32.const -4242)) (i32.const 61294)) +(assert_return (invoke "i32_load16_u" (i32.const 42)) (i32.const 42)) +(assert_return (invoke "i32_load16_u" (i32.const 0xCAFE)) (i32.const 0xCAFE)) + +(assert_return (invoke "i32_load" (i32.const -1)) (i32.const -1)) +(assert_return (invoke "i32_load" (i32.const -42424242)) (i32.const -42424242)) +(assert_return (invoke "i32_load" (i32.const 42424242)) (i32.const 42424242)) +(assert_return (invoke "i32_load" (i32.const 0xABAD1DEA)) (i32.const 0xABAD1DEA)) + +(assert_return (invoke "i64_load16_s" (i64.const -1)) (i64.const -1)) +(assert_return (invoke "i64_load16_s" (i64.const -4242)) (i64.const -4242)) +(assert_return (invoke "i64_load16_s" (i64.const 42)) (i64.const 42)) +(assert_return (invoke "i64_load16_s" (i64.const 0x3210)) (i64.const 0x3210)) + +(assert_return (invoke "i64_load16_u" (i64.const -1)) (i64.const 0xFFFF)) +(assert_return (invoke "i64_load16_u" (i64.const -4242)) (i64.const 61294)) +(assert_return (invoke "i64_load16_u" (i64.const 42)) (i64.const 42)) +(assert_return (invoke "i64_load16_u" (i64.const 0xCAFE)) (i64.const 0xCAFE)) + +(assert_return (invoke "i64_load32_s" (i64.const -1)) (i64.const -1)) +(assert_return (invoke "i64_load32_s" (i64.const -42424242)) (i64.const -42424242)) +(assert_return (invoke "i64_load32_s" (i64.const 42424242)) (i64.const 42424242)) +(assert_return (invoke "i64_load32_s" (i64.const 0x12345678)) (i64.const 0x12345678)) + +(assert_return (invoke "i64_load32_u" (i64.const -1)) (i64.const 0xFFFFFFFF)) +(assert_return (invoke "i64_load32_u" (i64.const -42424242)) (i64.const 4252543054)) +(assert_return (invoke "i64_load32_u" (i64.const 42424242)) (i64.const 42424242)) +(assert_return (invoke "i64_load32_u" (i64.const 0xABAD1DEA)) (i64.const 0xABAD1DEA)) + +(assert_return (invoke "i64_load" (i64.const -1)) (i64.const -1)) +(assert_return (invoke "i64_load" (i64.const -42424242)) (i64.const -42424242)) +(assert_return (invoke "i64_load" (i64.const 0xABAD1DEA)) (i64.const 0xABAD1DEA)) +(assert_return (invoke "i64_load" (i64.const 0xABADCAFEDEAD1DEA)) (i64.const 0xABADCAFEDEAD1DEA)) + +(assert_return (invoke "f32_load" (f32.const -1)) (f32.const -1)) +(assert_return (invoke "f32_load" (f32.const 1234e-5)) (f32.const 1234e-5)) +(assert_return (invoke "f32_load" (f32.const 4242.4242)) (f32.const 4242.4242)) +(assert_return (invoke "f32_load" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) + +(assert_return (invoke "f64_load" (f64.const -1)) (f64.const -1)) +(assert_return (invoke "f64_load" (f64.const 123456789e-5)) (f64.const 123456789e-5)) +(assert_return (invoke "f64_load" (f64.const 424242.424242)) (f64.const 424242.424242)) +(assert_return (invoke "f64_load" (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) + + +(assert_return (invoke "i32_store16" (i32.const -1)) (i32.const 0xFFFF)) +(assert_return (invoke "i32_store16" (i32.const -4242)) (i32.const 61294)) +(assert_return (invoke "i32_store16" (i32.const 42)) (i32.const 42)) +(assert_return (invoke "i32_store16" (i32.const 0xCAFE)) (i32.const 0xCAFE)) + +(assert_return (invoke "i32_store" (i32.const -1)) (i32.const -1)) +(assert_return (invoke "i32_store" (i32.const -4242)) (i32.const -4242)) +(assert_return (invoke "i32_store" (i32.const 42424242)) (i32.const 42424242)) +(assert_return (invoke "i32_store" (i32.const 0xDEADCAFE)) (i32.const 0xDEADCAFE)) + +(assert_return (invoke "i64_store16" (i64.const -1)) (i64.const 0xFFFF)) +(assert_return (invoke "i64_store16" (i64.const -4242)) (i64.const 61294)) +(assert_return (invoke "i64_store16" (i64.const 42)) (i64.const 42)) +(assert_return (invoke "i64_store16" (i64.const 0xCAFE)) (i64.const 0xCAFE)) + +(assert_return (invoke "i64_store32" (i64.const -1)) (i64.const 0xFFFFFFFF)) +(assert_return (invoke "i64_store32" (i64.const -4242)) (i64.const 4294963054)) +(assert_return (invoke "i64_store32" (i64.const 42424242)) (i64.const 42424242)) +(assert_return (invoke "i64_store32" (i64.const 0xDEADCAFE)) (i64.const 0xDEADCAFE)) + +(assert_return (invoke "i64_store" (i64.const -1)) (i64.const -1)) +(assert_return (invoke "i64_store" (i64.const -42424242)) (i64.const -42424242)) +(assert_return (invoke "i64_store" (i64.const 0xABAD1DEA)) (i64.const 0xABAD1DEA)) +(assert_return (invoke "i64_store" (i64.const 0xABADCAFEDEAD1DEA)) (i64.const 0xABADCAFEDEAD1DEA)) + +(assert_return (invoke "f32_store" (f32.const -1)) (f32.const -1)) +(assert_return (invoke "f32_store" (f32.const 1234e-5)) (f32.const 1234e-5)) +(assert_return (invoke "f32_store" (f32.const 4242.4242)) (f32.const 4242.4242)) +(assert_return (invoke "f32_store" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) + +(assert_return (invoke "f64_store" (f64.const -1)) (f64.const -1)) +(assert_return (invoke "f64_store" (f64.const 123456789e-5)) (f64.const 123456789e-5)) +(assert_return (invoke "f64_store" (f64.const 424242.424242)) (f64.const 424242.424242)) +(assert_return (invoke "f64_store" (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) diff -Nru binaryen-91/test/spec/exception-handling.wast binaryen-99/test/spec/exception-handling.wast --- binaryen-91/test/spec/exception-handling.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/spec/exception-handling.wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,23 +1,181 @@ (module - (event $e0 (attr 0) (param i32)) - (event $e1 (attr 0) (param i32 f32)) + (event $e-v (attr 0)) + (event $e-i32 (attr 0) (param i32)) + (event $e-i32-f32 (attr 0) (param i32 f32)) - (func $exnref_test (param $0 exnref) (result exnref) - (local.get $0) + (func $throw_single_value (export "throw_single_value") + (throw $e-i32 (i32.const 5)) ) - (func $eh_test (local $exn exnref) + (func (export "throw_multiple_values") + (throw $e-i32-f32 (i32.const 3) (f32.const 3.5)) + ) + + (func (export "rethrow_null") + (rethrow (ref.null exn)) + ) + + (func (export "try_nothrow") (result i32) + (try (result i32) + (do + (i32.const 3) + ) + (catch + (drop (pop exnref)) + (i32.const 0) + ) + ) + ) + + (func (export "try_throw_catch") (result i32) + (try (result i32) + (do + (throw $e-i32 (i32.const 5)) + ) + (catch + (drop (pop exnref)) + (i32.const 3) + ) + ) + ) + + (func (export "try_call_catch") (result i32) + (try (result i32) + (do + (call $throw_single_value) + (unreachable) + ) + (catch + (drop (pop exnref)) + (i32.const 3) + ) + ) + ) + + (func (export "try_throw_rethrow") (try - (throw $e0 (i32.const 0)) + (do + (throw $e-i32 (i32.const 5)) + ) (catch - ;; Multi-value is not available yet, so block can't take a value from - ;; stack. So this uses locals for now. - (local.set $exn (exnref.pop)) - (drop - (block $l0 (result i32) - (rethrow - (br_on_exn $l0 $e0 (local.get $exn)) - ) + (rethrow (pop exnref)) + ) + ) + ) + + (func $try_call_rethrow (export "try_call_rethrow") + (try + (do + (call $throw_single_value) + ) + (catch + (rethrow (pop exnref)) + ) + ) + ) + + (func (export "br_on_exn_null") (result i32) + (block $l0 (result i32) + (drop + (br_on_exn $l0 $e-i32 (ref.null exn)) + ) + (i32.const 0) + ) + ) + + (func (export "br_on_exn_match_no_value") (local $exn exnref) + (try + (do + (throw $e-v) + ) + (catch + (local.set $exn (pop exnref)) + (block $l0 + (rethrow + (br_on_exn $l0 $e-v (local.get $exn)) + ) + ) + ) + ) + ) + + (func (export "br_on_exn_match_single_value") (result i32) (local $exn exnref) + (try (result i32) + (do + (throw $e-i32 (i32.const 5)) + ) + (catch + (local.set $exn (pop exnref)) + (block $l0 (result i32) + (rethrow + (br_on_exn $l0 $e-i32 (local.get $exn)) + ) + ) + ) + ) + ) + + (func (export "br_on_exn_match_multiple_values") (result i32 f32) + (local $exn exnref) + (try (result i32 f32) + (do + (throw $e-i32-f32 (i32.const 3) (f32.const 3.5)) + ) + (catch + (local.set $exn (pop exnref)) + (block $l0 (result i32 f32) + (rethrow + (br_on_exn $l0 $e-i32-f32 (local.get $exn)) + ) + ) + ) + ) + ) + + (func (export "br_on_exn_dont_match") (local $exn exnref) + (try + (do + (throw $e-i32 (i32.const 5)) + ) + (catch + (local.set $exn (pop exnref)) + (block $l0 + (rethrow + (br_on_exn $l0 $e-v (local.get $exn)) + ) + ) + ) + ) + ) + + (func (export "call_br_on_exn") (result i32) (local $exn exnref) + (try (result i32) + (do + (call $throw_single_value) + (unreachable) + ) + (catch + (local.set $exn (pop exnref)) + (block $l0 (result i32) + (rethrow + (br_on_exn $l0 $e-i32 (local.get $exn)) + ) + ) + ) + ) + ) + + (func (export "call_rethrow_br_on_exn") (result i32) (local $exn exnref) + (try (result i32) + (do + (call $try_call_rethrow) + (unreachable) + ) + (catch + (local.set $exn (pop exnref)) + (block $l0 (result i32) + (rethrow + (br_on_exn $l0 $e-i32 (local.get $exn)) ) ) ) @@ -25,11 +183,26 @@ ) ) +(assert_trap (invoke "throw_single_value")) +(assert_trap (invoke "throw_multiple_values")) +(assert_trap (invoke "rethrow_null")) +(assert_return (invoke "try_nothrow") (i32.const 3)) +(assert_return (invoke "try_throw_catch") (i32.const 3)) +(assert_return (invoke "try_call_catch") (i32.const 3)) +(assert_trap (invoke "try_throw_rethrow")) +(assert_trap (invoke "try_call_rethrow")) +(assert_trap (invoke "br_on_exn_null")) +(assert_return (invoke "br_on_exn_match_no_value")) +(assert_return (invoke "br_on_exn_match_single_value") (i32.const 5)) +(assert_return (invoke "br_on_exn_match_multiple_values") (tuple.make (i32.const 3) (f32.const 3.5))) +(assert_trap (invoke "br_on_exn_dont_match")) +(assert_return (invoke "call_rethrow_br_on_exn") (i32.const 5)) + (assert_invalid (module (func $f0 (try - (nop) + (do (nop)) (catch (i32.const 0)) ) ) @@ -41,7 +214,7 @@ (module (func $f0 (try - (i32.const 0) + (do (i32.const 0)) (catch (i32.const 0)) ) ) @@ -51,9 +224,9 @@ (assert_invalid (module - (event $e0 (attr 0) (param i32)) + (event $e-i32 (attr 0) (param i32)) (func $f0 - (throw $e0 (f32.const 0)) + (throw $e-i32 (f32.const 0)) ) ) "event param types must match" @@ -61,9 +234,9 @@ (assert_invalid (module - (event $e0 (attr 0) (param i32 f32)) + (event $e-i32 (attr 0) (param i32 f32)) (func $f0 - (throw $e0 (f32.const 0)) + (throw $e-i32 (f32.const 0)) ) ) "event's param numbers must match" @@ -80,11 +253,11 @@ (assert_invalid (module - (event $e0 (attr 0) (param i32)) + (event $e-i32 (attr 0) (param i32)) (func $f0 (result i32) (block $l0 (result i32) (drop - (br_on_exn $l0 $e0 (i32.const 0)) + (br_on_exn $l0 $e-i32 (i32.const 0)) ) (i32.const 0) ) @@ -95,11 +268,11 @@ (assert_invalid (module - (event $e0 (attr 0) (param i32)) + (event $e-i32 (attr 0) (param i32)) (func $f0 (result i32) (local $0 exnref) (block $l0 (result i32) (i32.eqz - (br_on_exn $l0 $e0 (local.get $0)) + (br_on_exn $l0 $e-i32 (local.get $0)) ) ) ) @@ -109,11 +282,11 @@ (assert_invalid (module - (event $e0 (attr 0) (param i32)) + (event $e-i32 (attr 0) (param i32)) (func $f0 (result f32) (local $0 exnref) (block $l0 (result f32) (drop - (br_on_exn $l0 $e0 (local.get $0)) + (br_on_exn $l0 $e-i32 (local.get $0)) ) (f32.const 0) ) diff -Nru binaryen-91/test/spec/float_memory64.wast binaryen-99/test/spec/float_memory64.wast --- binaryen-91/test/spec/float_memory64.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/spec/float_memory64.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,157 @@ +;; Test that floating-point load and store are bit-preserving. + +;; Test that load and store do not canonicalize NaNs as x87 does. + +(module + (memory (data i64 "\00\00\a0\7f")) + + (func (export "f32.load") (result f32) (f32.load (i64.const 0))) + (func (export "i32.load") (result i32) (i32.load (i64.const 0))) + (func (export "f32.store") (f32.store (i64.const 0) (f32.const nan:0x200000))) + (func (export "i32.store") (i32.store (i64.const 0) (i32.const 0x7fa00000))) + (func (export "reset") (i32.store (i64.const 0) (i32.const 0))) +) + +(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) +(assert_return (invoke "f32.load") (f32.const nan:0x200000)) +(invoke "reset") +(assert_return (invoke "i32.load") (i32.const 0x0)) +(assert_return (invoke "f32.load") (f32.const 0.0)) +(invoke "f32.store") +(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) +(assert_return (invoke "f32.load") (f32.const nan:0x200000)) +(invoke "reset") +(assert_return (invoke "i32.load") (i32.const 0x0)) +(assert_return (invoke "f32.load") (f32.const 0.0)) +(invoke "i32.store") +(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) +(assert_return (invoke "f32.load") (f32.const nan:0x200000)) + +(module + (memory (data i64 "\00\00\00\00\00\00\f4\7f")) + + (func (export "f64.load") (result f64) (f64.load (i64.const 0))) + (func (export "i64.load") (result i64) (i64.load (i64.const 0))) + (func (export "f64.store") (f64.store (i64.const 0) (f64.const nan:0x4000000000000))) + (func (export "i64.store") (i64.store (i64.const 0) (i64.const 0x7ff4000000000000))) + (func (export "reset") (i64.store (i64.const 0) (i64.const 0))) +) + +(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) +(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) +(invoke "reset") +(assert_return (invoke "i64.load") (i64.const 0x0)) +(assert_return (invoke "f64.load") (f64.const 0.0)) +(invoke "f64.store") +(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) +(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) +(invoke "reset") +(assert_return (invoke "i64.load") (i64.const 0x0)) +(assert_return (invoke "f64.load") (f64.const 0.0)) +(invoke "i64.store") +(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) +(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) + +;; Test that unaligned load and store do not canonicalize NaNs. + +(module + (memory (data i64 "\00\00\00\a0\7f")) + + (func (export "f32.load") (result f32) (f32.load (i64.const 1))) + (func (export "i32.load") (result i32) (i32.load (i64.const 1))) + (func (export "f32.store") (f32.store (i64.const 1) (f32.const nan:0x200000))) + (func (export "i32.store") (i32.store (i64.const 1) (i32.const 0x7fa00000))) + (func (export "reset") (i32.store (i64.const 1) (i32.const 0))) +) + +(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) +(assert_return (invoke "f32.load") (f32.const nan:0x200000)) +(invoke "reset") +(assert_return (invoke "i32.load") (i32.const 0x0)) +(assert_return (invoke "f32.load") (f32.const 0.0)) +(invoke "f32.store") +(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) +(assert_return (invoke "f32.load") (f32.const nan:0x200000)) +(invoke "reset") +(assert_return (invoke "i32.load") (i32.const 0x0)) +(assert_return (invoke "f32.load") (f32.const 0.0)) +(invoke "i32.store") +(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) +(assert_return (invoke "f32.load") (f32.const nan:0x200000)) + +(module + (memory (data i64 "\00\00\00\00\00\00\00\f4\7f")) + + (func (export "f64.load") (result f64) (f64.load (i64.const 1))) + (func (export "i64.load") (result i64) (i64.load (i64.const 1))) + (func (export "f64.store") (f64.store (i64.const 1) (f64.const nan:0x4000000000000))) + (func (export "i64.store") (i64.store (i64.const 1) (i64.const 0x7ff4000000000000))) + (func (export "reset") (i64.store (i64.const 1) (i64.const 0))) +) + +(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) +(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) +(invoke "reset") +(assert_return (invoke "i64.load") (i64.const 0x0)) +(assert_return (invoke "f64.load") (f64.const 0.0)) +(invoke "f64.store") +(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) +(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) +(invoke "reset") +(assert_return (invoke "i64.load") (i64.const 0x0)) +(assert_return (invoke "f64.load") (f64.const 0.0)) +(invoke "i64.store") +(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) +(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) + +;; Test that load and store do not canonicalize NaNs as some JS engines do. + +(module + (memory (data i64 "\01\00\d0\7f")) + + (func (export "f32.load") (result f32) (f32.load (i64.const 0))) + (func (export "i32.load") (result i32) (i32.load (i64.const 0))) + (func (export "f32.store") (f32.store (i64.const 0) (f32.const nan:0x500001))) + (func (export "i32.store") (i32.store (i64.const 0) (i32.const 0x7fd00001))) + (func (export "reset") (i32.store (i64.const 0) (i32.const 0))) +) + +(assert_return (invoke "i32.load") (i32.const 0x7fd00001)) +(assert_return (invoke "f32.load") (f32.const nan:0x500001)) +(invoke "reset") +(assert_return (invoke "i32.load") (i32.const 0x0)) +(assert_return (invoke "f32.load") (f32.const 0.0)) +(invoke "f32.store") +(assert_return (invoke "i32.load") (i32.const 0x7fd00001)) +(assert_return (invoke "f32.load") (f32.const nan:0x500001)) +(invoke "reset") +(assert_return (invoke "i32.load") (i32.const 0x0)) +(assert_return (invoke "f32.load") (f32.const 0.0)) +(invoke "i32.store") +(assert_return (invoke "i32.load") (i32.const 0x7fd00001)) +(assert_return (invoke "f32.load") (f32.const nan:0x500001)) + +(module + (memory (data i64 "\01\00\00\00\00\00\fc\7f")) + + (func (export "f64.load") (result f64) (f64.load (i64.const 0))) + (func (export "i64.load") (result i64) (i64.load (i64.const 0))) + (func (export "f64.store") (f64.store (i64.const 0) (f64.const nan:0xc000000000001))) + (func (export "i64.store") (i64.store (i64.const 0) (i64.const 0x7ffc000000000001))) + (func (export "reset") (i64.store (i64.const 0) (i64.const 0))) +) + +(assert_return (invoke "i64.load") (i64.const 0x7ffc000000000001)) +(assert_return (invoke "f64.load") (f64.const nan:0xc000000000001)) +(invoke "reset") +(assert_return (invoke "i64.load") (i64.const 0x0)) +(assert_return (invoke "f64.load") (f64.const 0.0)) +(invoke "f64.store") +(assert_return (invoke "i64.load") (i64.const 0x7ffc000000000001)) +(assert_return (invoke "f64.load") (f64.const nan:0xc000000000001)) +(invoke "reset") +(assert_return (invoke "i64.load") (i64.const 0x0)) +(assert_return (invoke "f64.load") (f64.const 0.0)) +(invoke "i64.store") +(assert_return (invoke "i64.load") (i64.const 0x7ffc000000000001)) +(assert_return (invoke "f64.load") (f64.const nan:0xc000000000001)) diff -Nru binaryen-91/test/spec/load64.wast binaryen-99/test/spec/load64.wast --- binaryen-91/test/spec/load64.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/spec/load64.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,567 @@ +;; Load operator as the argument of control constructs and instructions + +(module + (memory i64 1) + + (func (export "as-br-value") (result i32) + (block (result i32) (br 0 (i32.load (i64.const 0)))) + ) + + (func (export "as-br_if-cond") + (block (br_if 0 (i32.load (i64.const 0)))) + ) + (func (export "as-br_if-value") (result i32) + (block (result i32) + (drop (br_if 0 (i32.load (i64.const 0)) (i32.const 1))) (i32.const 7) + ) + ) + (func (export "as-br_if-value-cond") (result i32) + (block (result i32) + (drop (br_if 0 (i32.const 6) (i32.load (i64.const 0)))) (i32.const 7) + ) + ) + + (func (export "as-br_table-index") + (block (br_table 0 0 0 (i32.load (i64.const 0)))) + ) + (func (export "as-br_table-value") (result i32) + (block (result i32) + (br_table 0 0 0 (i32.load (i64.const 0)) (i32.const 1)) (i32.const 7) + ) + ) + (func (export "as-br_table-value-index") (result i32) + (block (result i32) + (br_table 0 0 (i32.const 6) (i32.load (i64.const 0))) (i32.const 7) + ) + ) + + (func (export "as-return-value") (result i32) + (return (i32.load (i64.const 0))) + ) + + (func (export "as-if-cond") (result i32) + (if (result i32) (i32.load (i64.const 0)) + (then (i32.const 0)) (else (i32.const 1)) + ) + ) + (func (export "as-if-then") (result i32) + (if (result i32) (i32.const 1) + (then (i32.load (i64.const 0))) (else (i32.const 0)) + ) + ) + (func (export "as-if-else") (result i32) + (if (result i32) (i32.const 0) + (then (i32.const 0)) (else (i32.load (i64.const 0))) + ) + ) + + (func (export "as-select-first") (param i32 i32) (result i32) + (select (i32.load (i64.const 0)) (local.get 0) (local.get 1)) + ) + (func (export "as-select-second") (param i32 i32) (result i32) + (select (local.get 0) (i32.load (i64.const 0)) (local.get 1)) + ) + (func (export "as-select-cond") (result i32) + (select (i32.const 0) (i32.const 1) (i32.load (i64.const 0))) + ) + + (func $f (param i32 i32 i32) (result i32) (i32.const -1)) + (func (export "as-call-first") (result i32) + (call $f (i32.load (i64.const 0)) (i32.const 2) (i32.const 3)) + ) + (func (export "as-call-mid") (result i32) + (call $f (i32.const 1) (i32.load (i64.const 0)) (i32.const 3)) + ) + (func (export "as-call-last") (result i32) + (call $f (i32.const 1) (i32.const 2) (i32.load (i64.const 0))) + ) + + (type $sig (func (param i32 i32 i32) (result i32))) + (table funcref (elem $f)) + (func (export "as-call_indirect-first") (result i32) + (call_indirect (type $sig) + (i32.load (i64.const 0)) (i32.const 2) (i32.const 3) (i32.const 0) + ) + ) + (func (export "as-call_indirect-mid") (result i32) + (call_indirect (type $sig) + (i32.const 1) (i32.load (i64.const 0)) (i32.const 3) (i32.const 0) + ) + ) + (func (export "as-call_indirect-last") (result i32) + (call_indirect (type $sig) + (i32.const 1) (i32.const 2) (i32.load (i64.const 0)) (i32.const 0) + ) + ) + (func (export "as-call_indirect-index") (result i32) + (call_indirect (type $sig) + (i32.const 1) (i32.const 2) (i32.const 3) (i32.load (i64.const 0)) + ) + ) + + (func (export "as-local.set-value") (local i32) + (local.set 0 (i32.load (i64.const 0))) + ) + (func (export "as-local.tee-value") (result i32) (local i32) + (local.tee 0 (i32.load (i64.const 0))) + ) + (global $g (mut i32) (i32.const 0)) + (func (export "as-global.set-value") (local i32) + (global.set $g (i32.load (i64.const 0))) + ) + + (func (export "as-load-address") (result i32) + (i32.load (i64.load (i64.const 0))) + ) + (func (export "as-loadN-address") (result i32) + (i32.load8_s (i64.load (i64.const 0))) + ) + + (func (export "as-store-address") + (i32.store (i64.load (i64.const 0)) (i32.const 7)) + ) + (func (export "as-store-value") + (i32.store (i64.const 2) (i32.load (i64.const 0))) + ) + + (func (export "as-storeN-address") + (i32.store8 (i64.load8_s (i64.const 0)) (i32.const 7)) + ) + (func (export "as-storeN-value") + (i32.store16 (i64.const 2) (i32.load (i64.const 0))) + ) + + (func (export "as-unary-operand") (result i32) + (i32.clz (i32.load (i64.const 100))) + ) + + (func (export "as-binary-left") (result i32) + (i32.add (i32.load (i64.const 100)) (i32.const 10)) + ) + (func (export "as-binary-right") (result i32) + (i32.sub (i32.const 10) (i32.load (i64.const 100))) + ) + + (func (export "as-test-operand") (result i32) + (i32.eqz (i32.load (i64.const 100))) + ) + + (func (export "as-compare-left") (result i32) + (i32.le_s (i32.load (i64.const 100)) (i32.const 10)) + ) + (func (export "as-compare-right") (result i32) + (i32.ne (i32.const 10) (i32.load (i64.const 100))) + ) + + (func (export "as-memory.grow-size") (result i64) + (memory.grow (i64.load (i64.const 100))) + ) +) + +(assert_return (invoke "as-br-value") (i32.const 0)) + +(assert_return (invoke "as-br_if-cond")) +(assert_return (invoke "as-br_if-value") (i32.const 0)) +(assert_return (invoke "as-br_if-value-cond") (i32.const 7)) + +(assert_return (invoke "as-br_table-index")) +(assert_return (invoke "as-br_table-value") (i32.const 0)) +(assert_return (invoke "as-br_table-value-index") (i32.const 6)) + +(assert_return (invoke "as-return-value") (i32.const 0)) + +(assert_return (invoke "as-if-cond") (i32.const 1)) +(assert_return (invoke "as-if-then") (i32.const 0)) +(assert_return (invoke "as-if-else") (i32.const 0)) + +(assert_return (invoke "as-select-first" (i32.const 0) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "as-select-second" (i32.const 0) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "as-select-cond") (i32.const 1)) + +(assert_return (invoke "as-call-first") (i32.const -1)) +(assert_return (invoke "as-call-mid") (i32.const -1)) +(assert_return (invoke "as-call-last") (i32.const -1)) + +(assert_return (invoke "as-call_indirect-first") (i32.const -1)) +(assert_return (invoke "as-call_indirect-mid") (i32.const -1)) +(assert_return (invoke "as-call_indirect-last") (i32.const -1)) +(assert_return (invoke "as-call_indirect-index") (i32.const -1)) + +(assert_return (invoke "as-local.set-value")) +(assert_return (invoke "as-local.tee-value") (i32.const 0)) +(assert_return (invoke "as-global.set-value")) + +(assert_return (invoke "as-load-address") (i32.const 0)) +(assert_return (invoke "as-loadN-address") (i32.const 0)) +(assert_return (invoke "as-store-address")) +(assert_return (invoke "as-store-value")) +(assert_return (invoke "as-storeN-address")) +(assert_return (invoke "as-storeN-value")) + +(assert_return (invoke "as-unary-operand") (i32.const 32)) + +(assert_return (invoke "as-binary-left") (i32.const 10)) +(assert_return (invoke "as-binary-right") (i32.const 10)) + +(assert_return (invoke "as-test-operand") (i32.const 1)) + +(assert_return (invoke "as-compare-left") (i32.const 1)) +(assert_return (invoke "as-compare-right") (i32.const 1)) + +(assert_return (invoke "as-memory.grow-size") (i64.const 1)) + +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result i32) (i32.load32 (local.get 0)))" + ) + "unknown operator" +) +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result i32) (i32.load32_u (local.get 0)))" + ) + "unknown operator" +) +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result i32) (i32.load32_s (local.get 0)))" + ) + "unknown operator" +) +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result i32) (i32.load64 (local.get 0)))" + ) + "unknown operator" +) +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result i32) (i32.load64_u (local.get 0)))" + ) + "unknown operator" +) +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result i32) (i32.load64_s (local.get 0)))" + ) + "unknown operator" +) + +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result i64) (i64.load64 (local.get 0)))" + ) + "unknown operator" +) +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result i64) (i64.load64_u (local.get 0)))" + ) + "unknown operator" +) +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result i64) (i64.load64_s (local.get 0)))" + ) + "unknown operator" +) + +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result f32) (f32.load32 (local.get 0)))" + ) + "unknown operator" +) +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result f32) (f32.load64 (local.get 0)))" + ) + "unknown operator" +) + +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result f64) (f64.load32 (local.get 0)))" + ) + "unknown operator" +) +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result f64) (f64.load64 (local.get 0)))" + ) + "unknown operator" +) + + +;; load should have retval + +(assert_invalid + (module (memory i64 1) (func $load_i32 (i32.load (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load8_s_i32 (i32.load8_s (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load8_u_i32 (i32.load8_u (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load16_s_i32 (i32.load16_s (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load16_u_i32 (i32.load16_u (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load_i64 (i64.load (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load8_s_i64 (i64.load8_s (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load8_u_i64 (i64.load8_u (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load16_s_i64 (i64.load16_s (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load16_u_i64 (i64.load16_u (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load32_s_i64 (i64.load32_s (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load32_u_i64 (i64.load32_u (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load_f32 (f32.load (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load_f64 (f64.load (i64.const 0)))) + "type mismatch" +) + + +;; Type check + +(assert_invalid (module (memory i64 1) (func (result i32) (i32.load (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result i32) (i32.load8_s (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result i32) (i32.load8_u (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result i32) (i32.load16_s (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result i32) (i32.load16_u (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result i64) (i64.load (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result i64) (i64.load8_s (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result i64) (i64.load8_u (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result i64) (i64.load16_s (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result i64) (i64.load16_u (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result i64) (i64.load32_s (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result i64) (i64.load32_u (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result f32) (f32.load (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result f64) (f64.load (f32.const 0)))) "type mismatch") + + +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty + (i32.load) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-block + (i32.const 0) + (block (i32.load) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-loop + (i32.const 0) + (loop (i32.load) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-then + (i32.const 0) (i32.const 0) + (if (then (i32.load) (drop))) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-else + (i32.const 0) (i32.const 0) + (if (result i32) (then (i32.const 0)) (else (i32.load))) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-br + (i32.const 0) + (block (br 0 (i32.load)) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-br_if + (i32.const 0) + (block (br_if 0 (i32.load) (i32.const 1)) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-br_table + (i32.const 0) + (block (br_table 0 (i32.load)) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-return + (return (i32.load)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-select + (select (i32.load) (i32.const 1) (i32.const 2)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-call + (call 1 (i32.load)) (drop) + ) + (func (param i32) (result i32) (local.get 0)) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $f (param i32) (result i32) (local.get 0)) + (type $sig (func (param i32) (result i32))) + (table funcref (elem $f)) + (func $type-address-empty-in-call_indirect + (block (result i32) + (call_indirect (type $sig) + (i32.load) (i32.const 0) + ) + (drop) + ) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-local.set + (local i32) + (local.set 0 (i32.load)) (local.get 0) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-local.tee + (local i32) + (local.tee 0 (i32.load)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (global $x (mut i32) (i32.const 0)) + (func $type-address-empty-in-global.set + (global.set $x (i32.load)) (global.get $x) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-memory.grow + (memory.grow (i64.load)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-load + (i32.load (i32.load)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 1) + (func $type-address-empty-in-store + (i32.store (i32.load) (i32.const 1)) + ) + ) + "type mismatch" +) diff -Nru binaryen-91/test/spec/memory64.wast binaryen-99/test/spec/memory64.wast --- binaryen-91/test/spec/memory64.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/spec/memory64.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,188 @@ +;; Test memory section structure + +(module (memory i64 0 0)) +(module (memory i64 0 1)) +(module (memory i64 1 256)) +(module (memory i64 0 65536)) + +(assert_invalid (module (memory i64 0) (memory i64 0)) "multiple memories") +(assert_invalid (module (memory (import "spectest" "memory") i64 0) (memory i64 0)) "multiple memories") + +(module (memory i64 (data)) (func (export "memsize") (result i64) (memory.size))) +(assert_return (invoke "memsize") (i64.const 0)) +(module (memory i64 (data "")) (func (export "memsize") (result i64) (memory.size))) +(assert_return (invoke "memsize") (i64.const 0)) +(module (memory i64 (data "x")) (func (export "memsize") (result i64) (memory.size))) +(assert_return (invoke "memsize") (i64.const 1)) + +(assert_invalid (module (data (i32.const 0))) "unknown memory") +(assert_invalid (module (data (i32.const 0) "")) "unknown memory") +(assert_invalid (module (data (i32.const 0) "x")) "unknown memory") + +(assert_invalid + (module (func (drop (f32.load (i64.const 0))))) + "unknown memory" +) +(assert_invalid + (module (func (f32.store (i64.const 0) (f32.const 0)))) + "unknown memory" +) +(assert_invalid + (module (func (drop (i32.load8_s (i64.const 0))))) + "unknown memory" +) +(assert_invalid + (module (func (i32.store8 (i64.const 0) (i32.const 0)))) + "unknown memory" +) +(assert_invalid + (module (func (drop (memory.size)))) + "unknown memory" +) +(assert_invalid + (module (func (drop (memory.grow (i64.const 0))))) + "unknown memory" +) + + +(assert_invalid + (module (memory i64 1 0)) + "size minimum must not be greater than maximum" +) + +(module + (memory i64 1) + (data (i32.const 0) "ABC\a7D") (data (i32.const 20) "WASM") + + ;; Data section + (func (export "data") (result i32) + (i32.and + (i32.and + (i32.and + (i32.eq (i32.load8_u (i64.const 0)) (i32.const 65)) + (i32.eq (i32.load8_u (i64.const 3)) (i32.const 167)) + ) + (i32.and + (i32.eq (i32.load8_u (i64.const 6)) (i32.const 0)) + (i32.eq (i32.load8_u (i64.const 19)) (i32.const 0)) + ) + ) + (i32.and + (i32.and + (i32.eq (i32.load8_u (i64.const 20)) (i32.const 87)) + (i32.eq (i32.load8_u (i64.const 23)) (i32.const 77)) + ) + (i32.and + (i32.eq (i32.load8_u (i64.const 24)) (i32.const 0)) + (i32.eq (i32.load8_u (i64.const 1023)) (i32.const 0)) + ) + ) + ) + ) + + ;; Memory cast + (func (export "cast") (result f64) + (i64.store (i64.const 8) (i64.const -12345)) + (if + (f64.eq + (f64.load (i64.const 8)) + (f64.reinterpret_i64 (i64.const -12345)) + ) + (then (return (f64.const 0))) + ) + (i64.store align=1 (i64.const 9) (i64.const 0)) + (i32.store16 align=1 (i64.const 15) (i32.const 16453)) + (f64.load align=1 (i64.const 9)) + ) + + ;; Sign and zero extending memory loads + (func (export "i32_load8_s") (param $i i32) (result i32) + (i32.store8 (i64.const 8) (local.get $i)) + (i32.load8_s (i64.const 8)) + ) + (func (export "i32_load8_u") (param $i i32) (result i32) + (i32.store8 (i64.const 8) (local.get $i)) + (i32.load8_u (i64.const 8)) + ) + (func (export "i32_load16_s") (param $i i32) (result i32) + (i32.store16 (i64.const 8) (local.get $i)) + (i32.load16_s (i64.const 8)) + ) + (func (export "i32_load16_u") (param $i i32) (result i32) + (i32.store16 (i64.const 8) (local.get $i)) + (i32.load16_u (i64.const 8)) + ) + (func (export "i64_load8_s") (param $i i64) (result i64) + (i64.store8 (i64.const 8) (local.get $i)) + (i64.load8_s (i64.const 8)) + ) + (func (export "i64_load8_u") (param $i i64) (result i64) + (i64.store8 (i64.const 8) (local.get $i)) + (i64.load8_u (i64.const 8)) + ) + (func (export "i64_load16_s") (param $i i64) (result i64) + (i64.store16 (i64.const 8) (local.get $i)) + (i64.load16_s (i64.const 8)) + ) + (func (export "i64_load16_u") (param $i i64) (result i64) + (i64.store16 (i64.const 8) (local.get $i)) + (i64.load16_u (i64.const 8)) + ) + (func (export "i64_load32_s") (param $i i64) (result i64) + (i64.store32 (i64.const 8) (local.get $i)) + (i64.load32_s (i64.const 8)) + ) + (func (export "i64_load32_u") (param $i i64) (result i64) + (i64.store32 (i64.const 8) (local.get $i)) + (i64.load32_u (i64.const 8)) + ) +) + +(assert_return (invoke "data") (i32.const 1)) +(assert_return (invoke "cast") (f64.const 42.0)) + +(assert_return (invoke "i32_load8_s" (i32.const -1)) (i32.const -1)) +(assert_return (invoke "i32_load8_u" (i32.const -1)) (i32.const 255)) +(assert_return (invoke "i32_load16_s" (i32.const -1)) (i32.const -1)) +(assert_return (invoke "i32_load16_u" (i32.const -1)) (i32.const 65535)) + +(assert_return (invoke "i32_load8_s" (i32.const 100)) (i32.const 100)) +(assert_return (invoke "i32_load8_u" (i32.const 200)) (i32.const 200)) +(assert_return (invoke "i32_load16_s" (i32.const 20000)) (i32.const 20000)) +(assert_return (invoke "i32_load16_u" (i32.const 40000)) (i32.const 40000)) + +(assert_return (invoke "i32_load8_s" (i32.const 0xfedc6543)) (i32.const 0x43)) +(assert_return (invoke "i32_load8_s" (i32.const 0x3456cdef)) (i32.const 0xffffffef)) +(assert_return (invoke "i32_load8_u" (i32.const 0xfedc6543)) (i32.const 0x43)) +(assert_return (invoke "i32_load8_u" (i32.const 0x3456cdef)) (i32.const 0xef)) +(assert_return (invoke "i32_load16_s" (i32.const 0xfedc6543)) (i32.const 0x6543)) +(assert_return (invoke "i32_load16_s" (i32.const 0x3456cdef)) (i32.const 0xffffcdef)) +(assert_return (invoke "i32_load16_u" (i32.const 0xfedc6543)) (i32.const 0x6543)) +(assert_return (invoke "i32_load16_u" (i32.const 0x3456cdef)) (i32.const 0xcdef)) + +(assert_return (invoke "i64_load8_s" (i64.const -1)) (i64.const -1)) +(assert_return (invoke "i64_load8_u" (i64.const -1)) (i64.const 255)) +(assert_return (invoke "i64_load16_s" (i64.const -1)) (i64.const -1)) +(assert_return (invoke "i64_load16_u" (i64.const -1)) (i64.const 65535)) +(assert_return (invoke "i64_load32_s" (i64.const -1)) (i64.const -1)) +(assert_return (invoke "i64_load32_u" (i64.const -1)) (i64.const 4294967295)) + +(assert_return (invoke "i64_load8_s" (i64.const 100)) (i64.const 100)) +(assert_return (invoke "i64_load8_u" (i64.const 200)) (i64.const 200)) +(assert_return (invoke "i64_load16_s" (i64.const 20000)) (i64.const 20000)) +(assert_return (invoke "i64_load16_u" (i64.const 40000)) (i64.const 40000)) +(assert_return (invoke "i64_load32_s" (i64.const 20000)) (i64.const 20000)) +(assert_return (invoke "i64_load32_u" (i64.const 40000)) (i64.const 40000)) + +(assert_return (invoke "i64_load8_s" (i64.const 0xfedcba9856346543)) (i64.const 0x43)) +(assert_return (invoke "i64_load8_s" (i64.const 0x3456436598bacdef)) (i64.const 0xffffffffffffffef)) +(assert_return (invoke "i64_load8_u" (i64.const 0xfedcba9856346543)) (i64.const 0x43)) +(assert_return (invoke "i64_load8_u" (i64.const 0x3456436598bacdef)) (i64.const 0xef)) +(assert_return (invoke "i64_load16_s" (i64.const 0xfedcba9856346543)) (i64.const 0x6543)) +(assert_return (invoke "i64_load16_s" (i64.const 0x3456436598bacdef)) (i64.const 0xffffffffffffcdef)) +(assert_return (invoke "i64_load16_u" (i64.const 0xfedcba9856346543)) (i64.const 0x6543)) +(assert_return (invoke "i64_load16_u" (i64.const 0x3456436598bacdef)) (i64.const 0xcdef)) +(assert_return (invoke "i64_load32_s" (i64.const 0xfedcba9856346543)) (i64.const 0x56346543)) +(assert_return (invoke "i64_load32_s" (i64.const 0x3456436598bacdef)) (i64.const 0xffffffff98bacdef)) +(assert_return (invoke "i64_load32_u" (i64.const 0xfedcba9856346543)) (i64.const 0x56346543)) +(assert_return (invoke "i64_load32_u" (i64.const 0x3456436598bacdef)) (i64.const 0x98bacdef)) diff -Nru binaryen-91/test/spec/memory_grow64.wast binaryen-99/test/spec/memory_grow64.wast --- binaryen-91/test/spec/memory_grow64.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/spec/memory_grow64.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,95 @@ +(module + (memory i64 0) + + (func (export "load_at_zero") (result i32) (i32.load (i64.const 0))) + (func (export "store_at_zero") (i32.store (i64.const 0) (i32.const 2))) + + (func (export "load_at_page_size") (result i32) (i32.load (i64.const 0x10000))) + (func (export "store_at_page_size") (i32.store (i64.const 0x10000) (i32.const 3))) + + (func (export "grow") (param $sz i64) (result i64) (memory.grow (local.get $sz))) + (func (export "size") (result i64) (memory.size)) +) + +(assert_return (invoke "size") (i64.const 0)) +(assert_trap (invoke "store_at_zero") "out of bounds memory access") +(assert_trap (invoke "load_at_zero") "out of bounds memory access") +(assert_trap (invoke "store_at_page_size") "out of bounds memory access") +(assert_trap (invoke "load_at_page_size") "out of bounds memory access") +(assert_return (invoke "grow" (i64.const 1)) (i64.const 0)) +(assert_return (invoke "size") (i64.const 1)) +(assert_return (invoke "load_at_zero") (i32.const 0)) +(assert_return (invoke "store_at_zero")) +(assert_return (invoke "load_at_zero") (i32.const 2)) +(assert_trap (invoke "store_at_page_size") "out of bounds memory access") +(assert_trap (invoke "load_at_page_size") "out of bounds memory access") +(assert_return (invoke "grow" (i64.const 4)) (i64.const 1)) +(assert_return (invoke "size") (i64.const 5)) +(assert_return (invoke "load_at_zero") (i32.const 2)) +(assert_return (invoke "store_at_zero")) +(assert_return (invoke "load_at_zero") (i32.const 2)) +(assert_return (invoke "load_at_page_size") (i32.const 0)) +(assert_return (invoke "store_at_page_size")) +(assert_return (invoke "load_at_page_size") (i32.const 3)) + + +(module + (memory i64 0) + (func (export "grow") (param i64) (result i64) (memory.grow (local.get 0))) +) + +(assert_return (invoke "grow" (i64.const 0)) (i64.const 0)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const 0)) +(assert_return (invoke "grow" (i64.const 0)) (i64.const 1)) +(assert_return (invoke "grow" (i64.const 2)) (i64.const 1)) +(assert_return (invoke "grow" (i64.const 800)) (i64.const 3)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const 803)) + +(module + (memory i64 0 10) + (func (export "grow") (param i64) (result i64) (memory.grow (local.get 0))) +) + +(assert_return (invoke "grow" (i64.const 0)) (i64.const 0)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const 0)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const 1)) +(assert_return (invoke "grow" (i64.const 2)) (i64.const 2)) +(assert_return (invoke "grow" (i64.const 6)) (i64.const 4)) +(assert_return (invoke "grow" (i64.const 0)) (i64.const 10)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const -1)) +(assert_return (invoke "grow" (i64.const 0x10000)) (i64.const -1)) + +;; Test that newly allocated memory (program start and memory.grow) is zeroed + +(module + (memory i64 1) + (func (export "grow") (param i64) (result i64) + (memory.grow (local.get 0)) + ) + (func (export "check-memory-zero") (param i64 i64) (result i32) + (local i32) + (local.set 2 (i32.const 1)) + (block + (loop + (local.set 2 (i32.load8_u (local.get 0))) + (br_if 1 (i32.ne (local.get 2) (i32.const 0))) + (br_if 1 (i64.ge_u (local.get 0) (local.get 1))) + (local.set 0 (i64.add (local.get 0) (i64.const 1))) + (br_if 0 (i64.le_u (local.get 0) (local.get 1))) + ) + ) + (local.get 2) + ) +) + +(assert_return (invoke "check-memory-zero" (i64.const 0) (i64.const 0xffff)) (i32.const 0)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const 1)) +(assert_return (invoke "check-memory-zero" (i64.const 0x10000) (i64.const 0x1_ffff)) (i32.const 0)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const 2)) +(assert_return (invoke "check-memory-zero" (i64.const 0x20000) (i64.const 0x2_ffff)) (i32.const 0)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const 3)) +(assert_return (invoke "check-memory-zero" (i64.const 0x30000) (i64.const 0x3_ffff)) (i32.const 0)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const 4)) +(assert_return (invoke "check-memory-zero" (i64.const 0x40000) (i64.const 0x4_ffff)) (i32.const 0)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const 5)) +(assert_return (invoke "check-memory-zero" (i64.const 0x50000) (i64.const 0x5_ffff)) (i32.const 0)) diff -Nru binaryen-91/test/spec/memory_redundancy64.wast binaryen-99/test/spec/memory_redundancy64.wast --- binaryen-91/test/spec/memory_redundancy64.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/spec/memory_redundancy64.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,65 @@ +;; Test that optimizers don't do redundant-load, store-to-load, or dead-store +;; optimizations when there are interfering stores, even of different types +;; and to non-identical addresses. + +(module + (memory i64 1 1) + + (func (export "zero_everything") + (i32.store (i64.const 0) (i32.const 0)) + (i32.store (i64.const 4) (i32.const 0)) + (i32.store (i64.const 8) (i32.const 0)) + (i32.store (i64.const 12) (i32.const 0)) + ) + + (func (export "test_store_to_load") (result i32) + (i32.store (i64.const 8) (i32.const 0)) + (f32.store (i64.const 5) (f32.const -0.0)) + (i32.load (i64.const 8)) + ) + + (func (export "test_redundant_load") (result i32) + (local $t i32) + (local $s i32) + (local.set $t (i32.load (i64.const 8))) + (i32.store (i64.const 5) (i32.const 0x80000000)) + (local.set $s (i32.load (i64.const 8))) + (i32.add (local.get $t) (local.get $s)) + ) + + (func (export "test_dead_store") (result f32) + (local $t f32) + (i32.store (i64.const 8) (i32.const 0x23232323)) + (local.set $t (f32.load (i64.const 11))) + (i32.store (i64.const 8) (i32.const 0)) + (local.get $t) + ) + + ;; A function named "malloc" which implementations nonetheless shouldn't + ;; assume behaves like C malloc. + (func $malloc (export "malloc") + (param $size i64) + (result i64) + (i64.const 16) + ) + + ;; Call malloc twice, but unlike C malloc, we don't get non-aliasing pointers. + (func (export "malloc_aliasing") + (result i32) + (local $x i64) + (local $y i64) + (local.set $x (call $malloc (i64.const 4))) + (local.set $y (call $malloc (i64.const 4))) + (i32.store (local.get $x) (i32.const 42)) + (i32.store (local.get $y) (i32.const 43)) + (i32.load (local.get $x)) + ) +) + +(assert_return (invoke "test_store_to_load") (i32.const 0x00000080)) +(invoke "zero_everything") +(assert_return (invoke "test_redundant_load") (i32.const 0x00000080)) +(invoke "zero_everything") +(assert_return (invoke "test_dead_store") (f32.const 0x1.18p-144)) +(invoke "zero_everything") +(assert_return (invoke "malloc_aliasing") (i32.const 43)) diff -Nru binaryen-91/test/spec/memory_trap64.wast binaryen-99/test/spec/memory_trap64.wast --- binaryen-91/test/spec/memory_trap64.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/spec/memory_trap64.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,269 @@ +(module + (memory i64 1) + + (func $addr_limit (result i64) + (i64.mul (memory.size) (i64.const 0x10000)) + ) + + (func (export "store") (param $i i64) (param $v i32) + (i32.store (i64.add (call $addr_limit) (local.get $i)) (local.get $v)) + ) + + (func (export "load") (param $i i64) (result i32) + (i32.load (i64.add (call $addr_limit) (local.get $i))) + ) + + (func (export "memory.grow") (param i64) (result i64) + (memory.grow (local.get 0)) + ) +) + +(assert_return (invoke "store" (i64.const -4) (i32.const 42))) +(assert_return (invoke "load" (i64.const -4)) (i32.const 42)) +(assert_trap (invoke "store" (i64.const -3) (i32.const 13)) "out of bounds memory access") +(assert_trap (invoke "load" (i64.const -3)) "out of bounds memory access") +(assert_trap (invoke "store" (i64.const -2) (i32.const 13)) "out of bounds memory access") +(assert_trap (invoke "load" (i64.const -2)) "out of bounds memory access") +(assert_trap (invoke "store" (i64.const -1) (i32.const 13)) "out of bounds memory access") +(assert_trap (invoke "load" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "store" (i64.const 0) (i32.const 13)) "out of bounds memory access") +(assert_trap (invoke "load" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "store" (i64.const 0x80000000) (i32.const 13)) "out of bounds memory access") +(assert_trap (invoke "load" (i64.const 0x80000000)) "out of bounds memory access") + +(module + (memory i64 1) + (data (i32.const 0) "abcdefgh") + (data (i32.const 0xfff8) "abcdefgh") + + (func (export "i32.load") (param $a i64) (result i32) + (i32.load (local.get $a)) + ) + (func (export "i64.load") (param $a i64) (result i64) + (i64.load (local.get $a)) + ) + (func (export "f32.load") (param $a i64) (result f32) + (f32.load (local.get $a)) + ) + (func (export "f64.load") (param $a i64) (result f64) + (f64.load (local.get $a)) + ) + (func (export "i32.load8_s") (param $a i64) (result i32) + (i32.load8_s (local.get $a)) + ) + (func (export "i32.load8_u") (param $a i64) (result i32) + (i32.load8_u (local.get $a)) + ) + (func (export "i32.load16_s") (param $a i64) (result i32) + (i32.load16_s (local.get $a)) + ) + (func (export "i32.load16_u") (param $a i64) (result i32) + (i32.load16_u (local.get $a)) + ) + (func (export "i64.load8_s") (param $a i64) (result i64) + (i64.load8_s (local.get $a)) + ) + (func (export "i64.load8_u") (param $a i64) (result i64) + (i64.load8_u (local.get $a)) + ) + (func (export "i64.load16_s") (param $a i64) (result i64) + (i64.load16_s (local.get $a)) + ) + (func (export "i64.load16_u") (param $a i64) (result i64) + (i64.load16_u (local.get $a)) + ) + (func (export "i64.load32_s") (param $a i64) (result i64) + (i64.load32_s (local.get $a)) + ) + (func (export "i64.load32_u") (param $a i64) (result i64) + (i64.load32_u (local.get $a)) + ) + (func (export "i32.store") (param $a i64) (param $v i32) + (i32.store (local.get $a) (local.get $v)) + ) + (func (export "i64.store") (param $a i64) (param $v i64) + (i64.store (local.get $a) (local.get $v)) + ) + (func (export "f32.store") (param $a i64) (param $v f32) + (f32.store (local.get $a) (local.get $v)) + ) + (func (export "f64.store") (param $a i64) (param $v f64) + (f64.store (local.get $a) (local.get $v)) + ) + (func (export "i32.store8") (param $a i64) (param $v i32) + (i32.store8 (local.get $a) (local.get $v)) + ) + (func (export "i32.store16") (param $a i64) (param $v i32) + (i32.store16 (local.get $a) (local.get $v)) + ) + (func (export "i64.store8") (param $a i64) (param $v i64) + (i64.store8 (local.get $a) (local.get $v)) + ) + (func (export "i64.store16") (param $a i64) (param $v i64) + (i64.store16 (local.get $a) (local.get $v)) + ) + (func (export "i64.store32") (param $a i64) (param $v i64) + (i64.store32 (local.get $a) (local.get $v)) + ) +) + +(assert_trap (invoke "i32.store" (i64.const 0x10000) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store" (i64.const 0xffff) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store" (i64.const 0xfffe) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store" (i64.const 0xfffd) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store" (i64.const -1) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store" (i64.const -2) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store" (i64.const -3) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store" (i64.const -4) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const 0x10000) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const 0xffff) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const 0xfffe) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const 0xfffd) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const 0xfffc) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const 0xfffb) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const 0xfffa) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const 0xfff9) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const -1) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const -2) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const -3) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const -4) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const -5) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const -6) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const -7) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const -8) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f32.store" (i64.const 0x10000) (f32.const 0)) "out of bounds memory access") +(assert_trap (invoke "f32.store" (i64.const 0xffff) (f32.const 0)) "out of bounds memory access") +(assert_trap (invoke "f32.store" (i64.const 0xfffe) (f32.const 0)) "out of bounds memory access") +(assert_trap (invoke "f32.store" (i64.const 0xfffd) (f32.const 0)) "out of bounds memory access") +(assert_trap (invoke "f32.store" (i64.const -1) (f32.const 0)) "out of bounds memory access") +(assert_trap (invoke "f32.store" (i64.const -2) (f32.const 0)) "out of bounds memory access") +(assert_trap (invoke "f32.store" (i64.const -3) (f32.const 0)) "out of bounds memory access") +(assert_trap (invoke "f32.store" (i64.const -4) (f32.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const 0x10000) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const 0xffff) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const 0xfffe) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const 0xfffd) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const 0xfffc) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const 0xfffb) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const 0xfffa) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const 0xfff9) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const -1) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const -2) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const -3) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const -4) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const -5) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const -6) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const -7) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const -8) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store8" (i64.const 0x10000) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store8" (i64.const -1) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store16" (i64.const 0x10000) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store16" (i64.const 0xffff) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store16" (i64.const -1) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store16" (i64.const -2) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store8" (i64.const 0x10000) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store8" (i64.const -1) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store16" (i64.const 0x10000) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store16" (i64.const 0xffff) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store16" (i64.const -1) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store16" (i64.const -2) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store32" (i64.const 0x10000) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store32" (i64.const 0xffff) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store32" (i64.const 0xfffe) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store32" (i64.const 0xfffd) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store32" (i64.const -1) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store32" (i64.const -2) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store32" (i64.const -3) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store32" (i64.const -4) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.load" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i32.load" (i64.const 0xffff)) "out of bounds memory access") +(assert_trap (invoke "i32.load" (i64.const 0xfffe)) "out of bounds memory access") +(assert_trap (invoke "i32.load" (i64.const 0xfffd)) "out of bounds memory access") +(assert_trap (invoke "i32.load" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i32.load" (i64.const -2)) "out of bounds memory access") +(assert_trap (invoke "i32.load" (i64.const -3)) "out of bounds memory access") +(assert_trap (invoke "i32.load" (i64.const -4)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const 0xffff)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const 0xfffe)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const 0xfffd)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const 0xfffc)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const 0xfffb)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const 0xfffa)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const 0xfff9)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const -2)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const -3)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const -4)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const -5)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const -6)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const -7)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const -8)) "out of bounds memory access") +(assert_trap (invoke "f32.load" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "f32.load" (i64.const 0xffff)) "out of bounds memory access") +(assert_trap (invoke "f32.load" (i64.const 0xfffe)) "out of bounds memory access") +(assert_trap (invoke "f32.load" (i64.const 0xfffd)) "out of bounds memory access") +(assert_trap (invoke "f32.load" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "f32.load" (i64.const -2)) "out of bounds memory access") +(assert_trap (invoke "f32.load" (i64.const -3)) "out of bounds memory access") +(assert_trap (invoke "f32.load" (i64.const -4)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const 0xffff)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const 0xfffe)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const 0xfffd)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const 0xfffc)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const 0xfffb)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const 0xfffa)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const 0xfff9)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const -2)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const -3)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const -4)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const -5)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const -6)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const -7)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const -8)) "out of bounds memory access") +(assert_trap (invoke "i32.load8_s" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i32.load8_s" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i32.load8_u" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i32.load8_u" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i32.load16_s" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i32.load16_s" (i64.const 0xffff)) "out of bounds memory access") +(assert_trap (invoke "i32.load16_s" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i32.load16_s" (i64.const -2)) "out of bounds memory access") +(assert_trap (invoke "i32.load16_u" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i32.load16_u" (i64.const 0xffff)) "out of bounds memory access") +(assert_trap (invoke "i32.load16_u" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i32.load16_u" (i64.const -2)) "out of bounds memory access") +(assert_trap (invoke "i64.load8_s" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i64.load8_s" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i64.load8_u" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i64.load8_u" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i64.load16_s" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i64.load16_s" (i64.const 0xffff)) "out of bounds memory access") +(assert_trap (invoke "i64.load16_s" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i64.load16_s" (i64.const -2)) "out of bounds memory access") +(assert_trap (invoke "i64.load16_u" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i64.load16_u" (i64.const 0xffff)) "out of bounds memory access") +(assert_trap (invoke "i64.load16_u" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i64.load16_u" (i64.const -2)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_s" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_s" (i64.const 0xffff)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_s" (i64.const 0xfffe)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_s" (i64.const 0xfffd)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_s" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_s" (i64.const -2)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_s" (i64.const -3)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_s" (i64.const -4)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_u" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_u" (i64.const 0xffff)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_u" (i64.const 0xfffe)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_u" (i64.const 0xfffd)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_u" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_u" (i64.const -2)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_u" (i64.const -3)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_u" (i64.const -4)) "out of bounds memory access") + +;; No memory was changed +(assert_return (invoke "i64.load" (i64.const 0xfff8)) (i64.const 0x6867666564636261)) +(assert_return (invoke "i64.load" (i64.const 0)) (i64.const 0x6867666564636261)) diff -Nru binaryen-91/test/spec/multivalue.wast binaryen-99/test/spec/multivalue.wast --- binaryen-91/test/spec/multivalue.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/spec/multivalue.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,35 @@ +(module + (global $global_pair (mut (i32 i64)) (tuple.make (i32.const 0) (i64.const 0))) + (func $pair (export "pair") (result i32 i64) + (tuple.make + (i32.const 42) + (i64.const 7) + ) + ) + (func (export "tuple-local") (result i32 i64) + (local $x (i32 i64)) + (local.get $x) + ) + (func (export "tuple-global-get") (result i32 i64) + (global.get $global_pair) + ) + (func (export "tuple-global-set") + (global.set $global_pair + (tuple.make + (i32.const 42) + (i64.const 7) + ) + ) + ) + (func (export "tail-call") (result i32 i64) + (return_call $pair) + (unreachable) + ) +) + +(assert_return (invoke "pair") (tuple.make (i32.const 42) (i64.const 7))) +(assert_return (invoke "tuple-local") (tuple.make (i32.const 0) (i64.const 0))) +(assert_return (invoke "tuple-global-get") (tuple.make (i32.const 0) (i64.const 0))) +(assert_return (invoke "tuple-global-set")) +(assert_return (invoke "tuple-global-get") (tuple.make (i32.const 42) (i64.const 7))) +(assert_return (invoke "tail-call") (tuple.make (i32.const 42) (i64.const 7))) diff -Nru binaryen-91/test/spec/old_address64.wast binaryen-99/test/spec/old_address64.wast --- binaryen-91/test/spec/old_address64.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/spec/old_address64.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,34 @@ +(module + (import "spectest" "print" (func $print (param i32))) + + (memory i64 1) + (data (i32.const 0) "abcdefghijklmnopqrstuvwxyz") + + (func (export "good") (param $i i64) + (call $print (i32.load8_u offset=0 (local.get $i))) ;; 97 'a' + (call $print (i32.load8_u offset=1 (local.get $i))) ;; 98 'b' + (call $print (i32.load8_u offset=2 (local.get $i))) ;; 99 'c' + (call $print (i32.load8_u offset=25 (local.get $i))) ;; 122 'z' + + (call $print (i32.load16_u offset=0 (local.get $i))) ;; 25185 'ab' + (call $print (i32.load16_u align=1 (local.get $i))) ;; 25185 'ab' + (call $print (i32.load16_u offset=1 align=1 (local.get $i))) ;; 25442 'bc' + (call $print (i32.load16_u offset=2 (local.get $i))) ;; 25699 'cd' + (call $print (i32.load16_u offset=25 align=1 (local.get $i))) ;; 122 'z\0' + + (call $print (i32.load offset=0 (local.get $i))) ;; 1684234849 'abcd' + (call $print (i32.load offset=1 align=1 (local.get $i))) ;; 1701077858 'bcde' + (call $print (i32.load offset=2 align=2 (local.get $i))) ;; 1717920867 'cdef' + (call $print (i32.load offset=25 align=1 (local.get $i))) ;; 122 'z\0\0\0' + ) + + (func (export "bad") (param $i i64) + (drop (i32.load offset=4294967295 (local.get $i))) + ) +) + +(invoke "good" (i64.const 0)) +(invoke "good" (i64.const 65507)) +(assert_trap (invoke "good" (i64.const 65508)) "out of bounds memory access") +(assert_trap (invoke "bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "bad" (i64.const 1)) "out of bounds memory access") diff -Nru binaryen-91/test/spec/old_float_exprs.wast binaryen-99/test/spec/old_float_exprs.wast --- binaryen-91/test/spec/old_float_exprs.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/spec/old_float_exprs.wast 2021-01-07 20:01:06.000000000 +0000 @@ -46,8 +46,8 @@ (assert_return (invoke "f32.no_fold_add_zero" (f32.const -0.0)) (f32.const 0.0)) (assert_return (invoke "f64.no_fold_add_zero" (f64.const -0.0)) (f64.const 0.0)) -(assert_return (invoke "f32.no_fold_add_zero" (f32.const nan:0x200000)) (f32.const nan:0x600000)) -(assert_return (invoke "f64.no_fold_add_zero" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) +(assert_return (invoke "f32.no_fold_add_zero" (f32.const nan:0x200000)) (f32.const nan:0x400000)) +(assert_return (invoke "f64.no_fold_add_zero" (f64.const nan:0x4000000000000)) (f64.const nan:0x8000000000000)) ;; Test that 0.0 - x is not folded to -x. @@ -60,8 +60,8 @@ (assert_return (invoke "f32.no_fold_zero_sub" (f32.const 0.0)) (f32.const 0.0)) (assert_return (invoke "f64.no_fold_zero_sub" (f64.const 0.0)) (f64.const 0.0)) -(assert_return (invoke "f32.no_fold_zero_sub" (f32.const nan:0x200000)) (f32.const nan:0x600000)) -(assert_return (invoke "f64.no_fold_zero_sub" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) +(assert_return (invoke "f32.no_fold_zero_sub" (f32.const nan:0x200000)) (f32.const nan:0x400000)) +(assert_return (invoke "f64.no_fold_zero_sub" (f64.const nan:0x4000000000000)) (f64.const nan:0x8000000000000)) ;; Test that x - 0.0 is not folded to x. @@ -72,8 +72,8 @@ (f64.sub (local.get $x) (f64.const 0.0))) ) -(assert_return (invoke "f32.no_fold_sub_zero" (f32.const nan:0x200000)) (f32.const nan:0x600000)) -(assert_return (invoke "f64.no_fold_sub_zero" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) +(assert_return (invoke "f32.no_fold_sub_zero" (f32.const nan:0x200000)) (f32.const nan:0x400000)) +(assert_return (invoke "f64.no_fold_sub_zero" (f64.const nan:0x4000000000000)) (f64.const nan:0x8000000000000)) ;; Test that x*0.0 is not folded to 0.0. @@ -87,11 +87,11 @@ (assert_return (invoke "f32.no_fold_mul_zero" (f32.const -0.0)) (f32.const -0.0)) (assert_return (invoke "f32.no_fold_mul_zero" (f32.const -1.0)) (f32.const -0.0)) (assert_return (invoke "f32.no_fold_mul_zero" (f32.const -2.0)) (f32.const -0.0)) -(assert_return (invoke "f32.no_fold_mul_zero" (f32.const nan:0x200000)) (f32.const nan:0x600000)) +(assert_return (invoke "f32.no_fold_mul_zero" (f32.const nan:0x200000)) (f32.const nan:0x400000)) (assert_return (invoke "f64.no_fold_mul_zero" (f64.const -0.0)) (f64.const -0.0)) (assert_return (invoke "f64.no_fold_mul_zero" (f64.const -1.0)) (f64.const -0.0)) (assert_return (invoke "f64.no_fold_mul_zero" (f64.const -2.0)) (f64.const -0.0)) -(assert_return (invoke "f64.no_fold_mul_zero" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) +(assert_return (invoke "f64.no_fold_mul_zero" (f64.const nan:0x4000000000000)) (f64.const nan:0x8000000000000)) ;; Test that x*1.0 is not folded to x. ;; See IEEE 754-2008 10.4 "Literal meaning and value-changing optimizations". @@ -103,8 +103,8 @@ (f64.mul (local.get $x) (f64.const 1.0))) ) -(assert_return (invoke "f32.no_fold_mul_one" (f32.const nan:0x200000)) (f32.const nan:0x600000)) -(assert_return (invoke "f64.no_fold_mul_one" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) +(assert_return (invoke "f32.no_fold_mul_one" (f32.const nan:0x200000)) (f32.const nan:0x400000)) +(assert_return (invoke "f64.no_fold_mul_one" (f64.const nan:0x4000000000000)) (f64.const nan:0x8000000000000)) ;; Test that 0.0/x is not folded to 0.0. @@ -118,11 +118,11 @@ (assert_return_nan (invoke "f32.no_fold_zero_div" (f32.const 0.0))) (assert_return_nan (invoke "f32.no_fold_zero_div" (f32.const -0.0))) (assert_return (invoke "f32.no_fold_zero_div" (f32.const nan)) (f32.const nan)) -(assert_return (invoke "f32.no_fold_zero_div" (f32.const nan:0x200000)) (f32.const nan:0x600000)) +(assert_return (invoke "f32.no_fold_zero_div" (f32.const nan:0x200000)) (f32.const nan:0x400000)) (assert_return_nan (invoke "f64.no_fold_zero_div" (f64.const 0.0))) (assert_return_nan (invoke "f64.no_fold_zero_div" (f64.const -0.0))) (assert_return (invoke "f64.no_fold_zero_div" (f64.const nan)) (f64.const nan)) -(assert_return (invoke "f64.no_fold_zero_div" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) +(assert_return (invoke "f64.no_fold_zero_div" (f64.const nan:0x4000000000000)) (f64.const nan:0x8000000000000)) ;; Test that x/1.0 is not folded to x. @@ -133,8 +133,8 @@ (f64.div (local.get $x) (f64.const 1.0))) ) -(assert_return (invoke "f32.no_fold_div_one" (f32.const nan:0x200000)) (f32.const nan:0x600000)) -(assert_return (invoke "f64.no_fold_div_one" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) +(assert_return (invoke "f32.no_fold_div_one" (f32.const nan:0x200000)) (f32.const nan:0x400000)) +(assert_return (invoke "f64.no_fold_div_one" (f64.const nan:0x4000000000000)) (f64.const nan:0x8000000000000)) ;; Test that x/-1.0 is not folded to -x. @@ -145,8 +145,8 @@ (f64.div (local.get $x) (f64.const -1.0))) ) -(assert_return (invoke "f32.no_fold_div_neg1" (f32.const nan:0x200000)) (f32.const nan:0x600000)) -(assert_return (invoke "f64.no_fold_div_neg1" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) +(assert_return (invoke "f32.no_fold_div_neg1" (f32.const nan:0x200000)) (f32.const nan:0x400000)) +(assert_return (invoke "f64.no_fold_div_neg1" (f64.const nan:0x4000000000000)) (f64.const nan:0x8000000000000)) ;; Test that -0.0 - x is not folded to -x. @@ -157,8 +157,8 @@ (f64.sub (f64.const -0.0) (local.get $x))) ) -(assert_return (invoke "f32.no_fold_neg0_sub" (f32.const nan:0x200000)) (f32.const nan:0x600000)) -(assert_return (invoke "f64.no_fold_neg0_sub" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) +(assert_return (invoke "f32.no_fold_neg0_sub" (f32.const nan:0x200000)) (f32.const nan:0x400000)) +(assert_return (invoke "f64.no_fold_neg0_sub" (f64.const nan:0x4000000000000)) (f64.const nan:0x8000000000000)) ;; Test that -1.0 * x is not folded to -x. @@ -169,8 +169,8 @@ (f64.mul (f64.const -1.0) (local.get $x))) ) -(assert_return (invoke "f32.no_fold_neg1_mul" (f32.const nan:0x200000)) (f32.const nan:0x600000)) -(assert_return (invoke "f64.no_fold_neg1_mul" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) +(assert_return (invoke "f32.no_fold_neg1_mul" (f32.const nan:0x200000)) (f32.const nan:0x400000)) +(assert_return (invoke "f64.no_fold_neg1_mul" (f64.const nan:0x4000000000000)) (f64.const nan:0x8000000000000)) ;; Test that x == x is not folded to true. @@ -365,7 +365,7 @@ (assert_return (invoke "f32.no_fold_div_0" (f32.const -infinity)) (f32.const -infinity)) (assert_return_nan (invoke "f32.no_fold_div_0" (f32.const 0))) (assert_return_nan (invoke "f32.no_fold_div_0" (f32.const -0))) -(assert_return (invoke "f32.no_fold_div_0" (f32.const nan:0x200000)) (f32.const nan:0x600000)) +(assert_return (invoke "f32.no_fold_div_0" (f32.const nan:0x200000)) (f32.const nan:0x400000)) (assert_return (invoke "f32.no_fold_div_0" (f32.const nan)) (f32.const nan)) (assert_return (invoke "f64.no_fold_div_0" (f64.const 1.0)) (f64.const infinity)) (assert_return (invoke "f64.no_fold_div_0" (f64.const -1.0)) (f64.const -infinity)) @@ -374,7 +374,7 @@ (assert_return_nan (invoke "f64.no_fold_div_0" (f64.const 0))) (assert_return_nan (invoke "f64.no_fold_div_0" (f64.const -0))) (assert_return (invoke "f64.no_fold_div_0" (f64.const nan)) (f64.const nan)) -(assert_return (invoke "f64.no_fold_div_0" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) +(assert_return (invoke "f64.no_fold_div_0" (f64.const nan:0x4000000000000)) (f64.const nan:0x8000000000000)) ;; Test that x/-0 is not folded away. @@ -391,7 +391,7 @@ (assert_return (invoke "f32.no_fold_div_neg0" (f32.const -infinity)) (f32.const infinity)) (assert_return_nan (invoke "f32.no_fold_div_neg0" (f32.const 0))) (assert_return_nan (invoke "f32.no_fold_div_neg0" (f32.const -0))) -(assert_return (invoke "f32.no_fold_div_neg0" (f32.const nan:0x200000)) (f32.const nan:0x600000)) +(assert_return (invoke "f32.no_fold_div_neg0" (f32.const nan:0x200000)) (f32.const nan:0x400000)) (assert_return (invoke "f32.no_fold_div_neg0" (f32.const nan)) (f32.const nan)) (assert_return (invoke "f64.no_fold_div_neg0" (f64.const 1.0)) (f64.const -infinity)) (assert_return (invoke "f64.no_fold_div_neg0" (f64.const -1.0)) (f64.const infinity)) @@ -400,7 +400,7 @@ (assert_return_nan (invoke "f64.no_fold_div_neg0" (f64.const 0))) (assert_return_nan (invoke "f64.no_fold_div_neg0" (f64.const -0))) (assert_return (invoke "f64.no_fold_div_neg0" (f64.const nan)) (f64.const nan)) -(assert_return (invoke "f64.no_fold_div_neg0" (f64.const nan:0x4000000000000)) (f64.const nan:0xc000000000000)) +(assert_return (invoke "f64.no_fold_div_neg0" (f64.const nan:0x4000000000000)) (f64.const nan:0x8000000000000)) ;; Test that sqrt(x*x+y*y) is not folded to hypot. diff -Nru binaryen-91/test/spec/old_func.wast binaryen-99/test/spec/old_func.wast --- binaryen-91/test/spec/old_func.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/spec/old_func.wast 2021-01-07 20:01:06.000000000 +0000 @@ -344,19 +344,6 @@ ;; Invalid typing of result (assert_invalid - (module (func $type-multiple-result (result i32 i32) (unreachable))) - "invalid result arity" -) -(assert_invalid - (module - (type (func (result i32 i32))) - (func $type-multiple-result (type 0) (unreachable)) - ) - "invalid result arity" -) - - -(assert_invalid (module (func $type-empty-i32 (result i32))) "type mismatch" ) @@ -529,4 +516,3 @@ )) "type mismatch" ) - diff -Nru binaryen-91/test/spec/old_import.wast binaryen-99/test/spec/old_import.wast --- binaryen-91/test/spec/old_import.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/spec/old_import.wast 2021-01-07 20:01:06.000000000 +0000 @@ -54,11 +54,11 @@ ;; Globals (module - (import "spectest" "global" (global i32)) - (global (import "spectest" "global") i32) + (import "spectest" "global_i32" (global i32)) + (global (import "spectest" "global_i32") i32) - (import "spectest" "global" (global $x i32)) - (global $y (import "spectest" "global") i32) + (import "spectest" "global_i32" (global $x i32)) + (global $y (import "spectest" "global_i32") i32) (func (export "get-0") (result i32) (global.get 0)) (func (export "get-1") (result i32) (global.get 1)) @@ -86,9 +86,9 @@ "type mismatch" ) -(module (import "spectest" "global" (global i64))) -(module (import "spectest" "global" (global f32))) -(module (import "spectest" "global" (global f64))) +(module (import "spectest" "global_i64" (global i64))) +(module (import "spectest" "global_i64" (global f32))) +(module (import "spectest" "global_i64" (global f64))) ;; Tables diff -Nru binaryen-91/test/spec/old_select.wast binaryen-99/test/spec/old_select.wast --- binaryen-91/test/spec/old_select.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/spec/old_select.wast 2021-01-07 20:01:06.000000000 +0000 @@ -23,14 +23,11 @@ (select (result f64) (local.get 0) (local.get 1) (local.get 2)) ) - (func (export "select-nullref") (param nullref nullref i32) (result nullref) - (select (result nullref) (local.get 0) (local.get 1) (local.get 2)) - ) (func (export "select-funcref") (param funcref funcref i32) (result funcref) (select (result funcref) (local.get 0) (local.get 1) (local.get 2)) ) - (func (export "select-anyref") (param anyref anyref i32) (result anyref) - (select (result anyref) (local.get 0) (local.get 1) (local.get 2)) + (func (export "select-externref") (param externref externref i32) (result externref) + (select (result externref) (local.get 0) (local.get 1) (local.get 2)) ) ;; Check that both sides of the select are evaluated @@ -38,24 +35,6 @@ (select (unreachable) (i32.const 0) (local.get $cond))) (func (export "select_trap_r") (param $cond i32) (result i32) (select (i32.const 0) (unreachable) (local.get $cond))) - - (func (export "join-nullref") (param i32) (result anyref) - (select (result anyref) (ref.null) (ref.null) (local.get 0)) - ) - (func (export "join-funcref") (param i32) (result anyref) - (select (result anyref) - (ref.func $dummy) - (ref.null) - (local.get 0) - ) - ) - (func (export "join-anyref") (param i32) (param anyref) (result anyref) - (select (result anyref) - (ref.func $dummy) - (local.get 1) - (local.get 0) - ) - ) ) (assert_return (invoke "select_i32" (i32.const 1) (i32.const 2) (i32.const 1)) (i32.const 1)) @@ -90,15 +69,11 @@ (assert_return (invoke "select-i64-t" (i64.const 2) (i64.const 1) (i32.const 1)) (i64.const 2)) (assert_return (invoke "select-f32-t" (f32.const 1) (f32.const 2) (i32.const 1)) (f32.const 1)) (assert_return (invoke "select-f64-t" (f64.const 1) (f64.const 2) (i32.const 1)) (f64.const 1)) -(assert_return (invoke "select-nullref" (ref.null) (ref.null) (i32.const 1)) (ref.null)) -(assert_return (invoke "select-funcref" (ref.func "dummy") (ref.null) (i32.const 1)) (ref.func "dummy")) -(assert_return (invoke "select-anyref" (ref.null) (ref.func "dummy") (i32.const 1)) (ref.null)) (assert_return (invoke "select-i32-t" (i32.const 1) (i32.const 2) (i32.const 0)) (i32.const 2)) (assert_return (invoke "select-i32-t" (i32.const 2) (i32.const 1) (i32.const 0)) (i32.const 1)) (assert_return (invoke "select-i64-t" (i64.const 2) (i64.const 1) (i32.const -1)) (i64.const 2)) (assert_return (invoke "select-i64-t" (i64.const 2) (i64.const 1) (i32.const 0xf0f0f0f0)) (i64.const 2)) -(assert_return (invoke "select-anyref" (ref.null) (ref.func "dummy") (i32.const 0)) (ref.func "dummy")) (assert_return (invoke "select-f32-t" (f32.const nan) (f32.const 1) (i32.const 1)) (f32.const nan)) (assert_return (invoke "select-f32-t" (f32.const nan:0x20304) (f32.const 1) (i32.const 1)) (f32.const nan:0x20304)) @@ -118,14 +93,10 @@ (assert_return (invoke "select-f64-t" (f64.const 2) (f64.const nan) (i32.const 0)) (f64.const nan)) (assert_return (invoke "select-f64-t" (f64.const 2) (f64.const nan:0x20304) (i32.const 0)) (f64.const nan:0x20304)) -(assert_return (invoke "join-nullref" (i32.const 1)) (ref.null)) -(assert_return (invoke "join-nullref" (i32.const 0)) (ref.null)) - -(assert_return_func (invoke "join-funcref" (i32.const 1))) -(assert_return (invoke "join-funcref" (i32.const 0)) (ref.null)) - -(assert_return_func (invoke "join-anyref" (i32.const 1) (ref.null))) -(assert_return (invoke "join-anyref" (i32.const 0) (ref.null)) (ref.null)) +(assert_return (invoke "select-funcref" (ref.func "dummy") (ref.null func) (i32.const 1)) (ref.func "dummy")) +(assert_return (invoke "select-funcref" (ref.func "dummy") (ref.null func) (i32.const 0)) (ref.null func)) +(assert_return (invoke "select-externref" (ref.null extern) (ref.null extern) (i32.const 1)) (ref.null extern)) +(assert_return (invoke "select-externref" (ref.null extern) (ref.null extern) (i32.const 0)) (ref.null extern)) (assert_trap (invoke "select_trap_l" (i32.const 1)) "unreachable executed") (assert_trap (invoke "select_trap_l" (i32.const 0)) "unreachable executed") diff -Nru binaryen-91/test/spec/ref_func.wast binaryen-99/test/spec/ref_func.wast --- binaryen-91/test/spec/ref_func.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/spec/ref_func.wast 2021-01-07 20:01:06.000000000 +0000 @@ -5,8 +5,7 @@ (func $f (import "M" "f") (param i32) (result i32)) (func $g (param $x i32) (result i32) (i32.add (local.get $x) (i32.const 1))) - (global anyref (ref.func $f)) - (global anyref (ref.func $g)) + (global externref (ref.null extern)) (global funcref (ref.func $f)) (global funcref (ref.func $g)) (global $v (mut funcref) (ref.func $f)) diff -Nru binaryen-91/test/spec/ref_is_null.wast binaryen-99/test/spec/ref_is_null.wast --- binaryen-91/test/spec/ref_is_null.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/spec/ref_is_null.wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,15 +1,11 @@ (module - (func $f1 (export "nullref") (param $x nullref) (result i32) + (func $f1 (export "externref") (param $x externref) (result i32) (ref.is_null (local.get $x)) ) - (func $f2 (export "anyref") (param $x anyref) (result i32) - (ref.is_null (local.get $x)) - ) - (func $f3 (export "funcref") (param $x funcref) (result i32) + (func $f2 (export "funcref") (param $x funcref) (result i32) (ref.is_null (local.get $x)) ) ) -(assert_return (invoke "nullref" (ref.null)) (i32.const 1)) -(assert_return (invoke "anyref" (ref.null)) (i32.const 1)) -(assert_return (invoke "funcref" (ref.null)) (i32.const 1)) +(assert_return (invoke "externref" (ref.null extern)) (i32.const 1)) +(assert_return (invoke "funcref" (ref.null func)) (i32.const 1)) diff -Nru binaryen-91/test/spec/ref_null.wast binaryen-99/test/spec/ref_null.wast --- binaryen-91/test/spec/ref_null.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/spec/ref_null.wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,13 +1,10 @@ (module - (func (export "anyref") (result anyref) (ref.null)) - (func (export "funcref") (result funcref) (ref.null)) - (func (export "nullref") (result nullref) (ref.null)) + (func (export "externref") (result externref) (ref.null extern)) + (func (export "funcref") (result funcref) (ref.null func)) - (global anyref (ref.null)) - (global funcref (ref.null)) - (global nullref (ref.null)) + (global externref (ref.null extern)) + (global funcref (ref.null func)) ) -(assert_return (invoke "anyref") (ref.null)) -(assert_return (invoke "funcref") (ref.null)) -(assert_return (invoke "nullref") (ref.null)) +(assert_return (invoke "externref") (ref.null extern)) +(assert_return (invoke "funcref") (ref.null func)) diff -Nru binaryen-91/test/spec/resizing64.wast binaryen-99/test/spec/resizing64.wast --- binaryen-91/test/spec/resizing64.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/spec/resizing64.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,58 @@ +(module + (memory i64 0) + + (func (export "load_at_zero") (result i32) (i32.load (i64.const 0))) + (func (export "store_at_zero") (i32.store (i64.const 0) (i32.const 2))) + + (func (export "load_at_page_size") (result i32) (i32.load (i64.const 0x10000))) + (func (export "store_at_page_size") (i32.store (i64.const 0x10000) (i32.const 3))) + + (func (export "grow") (param $sz i64) (result i64) (memory.grow (local.get $sz))) + (func (export "size") (result i64) (memory.size)) +) + +(assert_return (invoke "size") (i64.const 0)) +(assert_trap (invoke "store_at_zero") "out of bounds memory access") +(assert_trap (invoke "load_at_zero") "out of bounds memory access") +(assert_trap (invoke "store_at_page_size") "out of bounds memory access") +(assert_trap (invoke "load_at_page_size") "out of bounds memory access") +(assert_return (invoke "grow" (i64.const 1)) (i64.const 0)) +(assert_return (invoke "size") (i64.const 1)) +(assert_return (invoke "load_at_zero") (i32.const 0)) +(assert_return (invoke "store_at_zero")) +(assert_return (invoke "load_at_zero") (i32.const 2)) +(assert_trap (invoke "store_at_page_size") "out of bounds memory access") +(assert_trap (invoke "load_at_page_size") "out of bounds memory access") +(assert_return (invoke "grow" (i64.const 4)) (i64.const 1)) +(assert_return (invoke "size") (i64.const 5)) +(assert_return (invoke "load_at_zero") (i32.const 2)) +(assert_return (invoke "store_at_zero")) +(assert_return (invoke "load_at_zero") (i32.const 2)) +(assert_return (invoke "load_at_page_size") (i32.const 0)) +(assert_return (invoke "store_at_page_size")) +(assert_return (invoke "load_at_page_size") (i32.const 3)) + + +(module + (memory i64 0) + (func (export "grow") (param i64) (result i64) (memory.grow (local.get 0))) +) + +(assert_return (invoke "grow" (i64.const 0)) (i64.const 0)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const 0)) +(assert_return (invoke "grow" (i64.const 0)) (i64.const 1)) +(assert_return (invoke "grow" (i64.const 2)) (i64.const 1)) +(assert_return (invoke "grow" (i64.const 10000)) (i64.const 3)) + +(module + (memory i64 0 10) + (func (export "grow") (param i64) (result i64) (memory.grow (local.get 0))) +) + +(assert_return (invoke "grow" (i64.const 0)) (i64.const 0)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const 0)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const 1)) +(assert_return (invoke "grow" (i64.const 2)) (i64.const 2)) +(assert_return (invoke "grow" (i64.const 6)) (i64.const 4)) +(assert_return (invoke "grow" (i64.const 0)) (i64.const 10)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const -1)) diff -Nru binaryen-91/test/spec/simd.wast binaryen-99/test/spec/simd.wast --- binaryen-91/test/spec/simd.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/spec/simd.wast 2021-01-07 20:01:06.000000000 +0000 @@ -2,6 +2,7 @@ (memory 1) (data (i32.const 128) "WASMSIMDGOESFAST") (data (i32.const 256) "\80\90\a0\b0\c0\d0\e0\f0") + (data (i32.const 1024) "\ff\ff\ff\ff\ff\ff\ff\ff") (func (export "v128.load") (param $0 i32) (result v128) (v128.load (local.get $0))) (func (export "v128.store") (param $0 i32) (param $1 v128) (result v128) (v128.store offset=0 align=16 (local.get $0) (local.get $1)) @@ -83,6 +84,7 @@ (func (export "i32x4.le_u") (param $0 v128) (param $1 v128) (result v128) (i32x4.le_u (local.get $0) (local.get $1))) (func (export "i32x4.ge_s") (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_s (local.get $0) (local.get $1))) (func (export "i32x4.ge_u") (param $0 v128) (param $1 v128) (result v128) (i32x4.ge_u (local.get $0) (local.get $1))) + (func (export "i64x2.eq") (param $0 v128) (param $1 v128) (result v128) (i64x2.eq (local.get $0) (local.get $1))) (func (export "f32x4.eq") (param $0 v128) (param $1 v128) (result v128) (f32x4.eq (local.get $0) (local.get $1))) (func (export "f32x4.ne") (param $0 v128) (param $1 v128) (result v128) (f32x4.ne (local.get $0) (local.get $1))) (func (export "f32x4.lt") (param $0 v128) (param $1 v128) (result v128) (f32x4.lt (local.get $0) (local.get $1))) @@ -103,9 +105,32 @@ (func (export "v128.bitselect") (param $0 v128) (param $1 v128) (param $2 v128) (result v128) (v128.bitselect (local.get $0) (local.get $1) (local.get $2)) ) + (func (export "v8x16.signselect") (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v8x16.signselect (local.get $0) (local.get $1) (local.get $2)) + ) + (func (export "v16x8.signselect") (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v16x8.signselect (local.get $0) (local.get $1) (local.get $2)) + ) + (func (export "v32x4.signselect") (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v32x4.signselect (local.get $0) (local.get $1) (local.get $2)) + ) + (func (export "v64x2.signselect") (param $0 v128) (param $1 v128) (param $2 v128) (result v128) + (v64x2.signselect (local.get $0) (local.get $1) (local.get $2)) + ) + (func (export "v128.load8_lane") (param $0 i32) (param $1 v128) (result v128) (v128.load8_lane 0 (local.get $0) (local.get $1))) + (func (export "v128.load16_lane") (param $0 i32) (param $1 v128) (result v128) (v128.load16_lane 0 (local.get $0) (local.get $1))) + (func (export "v128.load32_lane") (param $0 i32) (param $1 v128) (result v128) (v128.load32_lane 0 (local.get $0) (local.get $1))) + (func (export "v128.load64_lane") (param $0 i32) (param $1 v128) (result v128) (v128.load64_lane 0 (local.get $0) (local.get $1))) + (func (export "v128.store8_lane") (param $0 i32) (param $1 v128) (v128.store8_lane 0 (local.get $0) (local.get $1))) + (func (export "v128.store16_lane") (param $0 i32) (param $1 v128) (v128.store16_lane 0 (local.get $0) (local.get $1))) + (func (export "v128.store32_lane") (param $0 i32) (param $1 v128) (v128.store32_lane 0 (local.get $0) (local.get $1))) + (func (export "v128.store64_lane") (param $0 i32) (param $1 v128) (v128.store64_lane 0 (local.get $0) (local.get $1))) + (func (export "i8x16.popcnt") (param $0 v128) (result v128) (i8x16.popcnt (local.get $0))) + (func (export "i8x16.abs") (param $0 v128) (result v128) (i8x16.abs (local.get $0))) (func (export "i8x16.neg") (param $0 v128) (result v128) (i8x16.neg (local.get $0))) (func (export "i8x16.any_true") (param $0 v128) (result i32) (i8x16.any_true (local.get $0))) (func (export "i8x16.all_true") (param $0 v128) (result i32) (i8x16.all_true (local.get $0))) + (func (export "i8x16.bitmask") (param $0 v128) (result i32) (i8x16.bitmask (local.get $0))) (func (export "i8x16.shl") (param $0 v128) (param $1 i32) (result v128) (i8x16.shl (local.get $0) (local.get $1))) (func (export "i8x16.shr_s") (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_s (local.get $0) (local.get $1))) (func (export "i8x16.shr_u") (param $0 v128) (param $1 i32) (result v128) (i8x16.shr_u (local.get $0) (local.get $1))) @@ -121,9 +146,11 @@ (func (export "i8x16.max_s") (param $0 v128) (param $1 v128) (result v128) (i8x16.max_s (local.get $0) (local.get $1))) (func (export "i8x16.max_u") (param $0 v128) (param $1 v128) (result v128) (i8x16.max_u (local.get $0) (local.get $1))) (func (export "i8x16.avgr_u") (param $0 v128) (param $1 v128) (result v128) (i8x16.avgr_u (local.get $0) (local.get $1))) + (func (export "i16x8.abs") (param $0 v128) (result v128) (i16x8.abs (local.get $0))) (func (export "i16x8.neg") (param $0 v128) (result v128) (i16x8.neg (local.get $0))) (func (export "i16x8.any_true") (param $0 v128) (result i32) (i16x8.any_true (local.get $0))) (func (export "i16x8.all_true") (param $0 v128) (result i32) (i16x8.all_true (local.get $0))) + (func (export "i16x8.bitmask") (param $0 v128) (result i32) (i16x8.bitmask (local.get $0))) (func (export "i16x8.shl") (param $0 v128) (param $1 i32) (result v128) (i16x8.shl (local.get $0) (local.get $1))) (func (export "i16x8.shr_s") (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_s (local.get $0) (local.get $1))) (func (export "i16x8.shr_u") (param $0 v128) (param $1 i32) (result v128) (i16x8.shr_u (local.get $0) (local.get $1))) @@ -139,9 +166,13 @@ (func (export "i16x8.max_s") (param $0 v128) (param $1 v128) (result v128) (i16x8.max_s (local.get $0) (local.get $1))) (func (export "i16x8.max_u") (param $0 v128) (param $1 v128) (result v128) (i16x8.max_u (local.get $0) (local.get $1))) (func (export "i16x8.avgr_u") (param $0 v128) (param $1 v128) (result v128) (i16x8.avgr_u (local.get $0) (local.get $1))) + ;; TODO: Q15 rounding, saturating multiplication + ;; TODO: extending multiplications + (func (export "i32x4.abs") (param $0 v128) (result v128) (i32x4.abs (local.get $0))) (func (export "i32x4.neg") (param $0 v128) (result v128) (i32x4.neg (local.get $0))) (func (export "i32x4.any_true") (param $0 v128) (result i32) (i32x4.any_true (local.get $0))) (func (export "i32x4.all_true") (param $0 v128) (result i32) (i32x4.all_true (local.get $0))) + (func (export "i32x4.bitmask") (param $0 v128) (result i32) (i32x4.bitmask (local.get $0))) (func (export "i32x4.shl") (param $0 v128) (param $1 i32) (result v128) (i32x4.shl (local.get $0) (local.get $1))) (func (export "i32x4.shr_s") (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_s (local.get $0) (local.get $1))) (func (export "i32x4.shr_u") (param $0 v128) (param $1 i32) (result v128) (i32x4.shr_u (local.get $0) (local.get $1))) @@ -154,13 +185,13 @@ (func (export "i32x4.max_u") (param $0 v128) (param $1 v128) (result v128) (i32x4.max_u (local.get $0) (local.get $1))) (func (export "i32x4.dot_i16x8_s") (param $0 v128) (param $1 v128) (result v128) (i32x4.dot_i16x8_s (local.get $0) (local.get $1))) (func (export "i64x2.neg") (param $0 v128) (result v128) (i64x2.neg (local.get $0))) - (func (export "i64x2.any_true") (param $0 v128) (result i32) (i64x2.any_true (local.get $0))) - (func (export "i64x2.all_true") (param $0 v128) (result i32) (i64x2.all_true (local.get $0))) + (func (export "i64x2.bitmask") (param $0 v128) (result i32) (i64x2.bitmask (local.get $0))) (func (export "i64x2.shl") (param $0 v128) (param $1 i32) (result v128) (i64x2.shl (local.get $0) (local.get $1))) (func (export "i64x2.shr_s") (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_s (local.get $0) (local.get $1))) (func (export "i64x2.shr_u") (param $0 v128) (param $1 i32) (result v128) (i64x2.shr_u (local.get $0) (local.get $1))) (func (export "i64x2.add") (param $0 v128) (param $1 v128) (result v128) (i64x2.add (local.get $0) (local.get $1))) (func (export "i64x2.sub") (param $0 v128) (param $1 v128) (result v128) (i64x2.sub (local.get $0) (local.get $1))) + (func (export "i64x2.mul") (param $0 v128) (param $1 v128) (result v128) (i64x2.mul (local.get $0) (local.get $1))) (func (export "f32x4.abs") (param $0 v128) (result v128) (f32x4.abs (local.get $0))) (func (export "f32x4.neg") (param $0 v128) (result v128) (f32x4.neg (local.get $0))) (func (export "f32x4.sqrt") (param $0 v128) (result v128) (f32x4.sqrt (local.get $0))) @@ -172,6 +203,12 @@ (func (export "f32x4.div") (param $0 v128) (param $1 v128) (result v128) (f32x4.div (local.get $0) (local.get $1))) (func (export "f32x4.min") (param $0 v128) (param $1 v128) (result v128) (f32x4.min (local.get $0) (local.get $1))) (func (export "f32x4.max") (param $0 v128) (param $1 v128) (result v128) (f32x4.max (local.get $0) (local.get $1))) + (func (export "f32x4.pmin") (param $0 v128) (param $1 v128) (result v128) (f32x4.pmin (local.get $0) (local.get $1))) + (func (export "f32x4.pmax") (param $0 v128) (param $1 v128) (result v128) (f32x4.pmax (local.get $0) (local.get $1))) + (func (export "f32x4.ceil") (param $0 v128) (result v128) (f32x4.ceil (local.get $0))) + (func (export "f32x4.floor") (param $0 v128) (result v128) (f32x4.floor (local.get $0))) + (func (export "f32x4.trunc") (param $0 v128) (result v128) (f32x4.trunc (local.get $0))) + (func (export "f32x4.nearest") (param $0 v128) (result v128) (f32x4.nearest (local.get $0))) (func (export "f64x2.abs") (param $0 v128) (result v128) (f64x2.abs (local.get $0))) (func (export "f64x2.neg") (param $0 v128) (result v128) (f64x2.neg (local.get $0))) (func (export "f64x2.sqrt") (param $0 v128) (result v128) (f64x2.sqrt (local.get $0))) @@ -183,6 +220,13 @@ (func (export "f64x2.div") (param $0 v128) (param $1 v128) (result v128) (f64x2.div (local.get $0) (local.get $1))) (func (export "f64x2.min") (param $0 v128) (param $1 v128) (result v128) (f64x2.min (local.get $0) (local.get $1))) (func (export "f64x2.max") (param $0 v128) (param $1 v128) (result v128) (f64x2.max (local.get $0) (local.get $1))) + (func (export "f64x2.pmin") (param $0 v128) (param $1 v128) (result v128) (f64x2.pmin (local.get $0) (local.get $1))) + (func (export "f64x2.pmax") (param $0 v128) (param $1 v128) (result v128) (f64x2.pmax (local.get $0) (local.get $1))) + (func (export "f64x2.ceil") (param $0 v128) (result v128) (f64x2.ceil (local.get $0))) + (func (export "f64x2.floor") (param $0 v128) (result v128) (f64x2.floor (local.get $0))) + (func (export "f64x2.trunc") (param $0 v128) (result v128) (f64x2.trunc (local.get $0))) + (func (export "f64x2.nearest") (param $0 v128) (result v128) (f64x2.nearest (local.get $0))) + ;; TODO: Extending pairwise adds once they have interpreter support (func (export "i32x4.trunc_sat_f32x4_s") (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_s (local.get $0))) (func (export "i32x4.trunc_sat_f32x4_u") (param $0 v128) (result v128) (i32x4.trunc_sat_f32x4_u (local.get $0))) (func (export "i64x2.trunc_sat_f64x2_s") (param $0 v128) (result v128) (i64x2.trunc_sat_f64x2_s (local.get $0))) @@ -207,12 +251,18 @@ (func (export "i32x4.widen_high_i16x8_s") (param $0 v128) (result v128) (i32x4.widen_high_i16x8_s (local.get $0))) (func (export "i32x4.widen_low_i16x8_u") (param $0 v128) (result v128) (i32x4.widen_low_i16x8_u (local.get $0))) (func (export "i32x4.widen_high_i16x8_u") (param $0 v128) (result v128) (i32x4.widen_high_i16x8_u (local.get $0))) + (func (export "i64x2.widen_low_i32x4_s") (param $0 v128) (result v128) (i64x2.widen_low_i32x4_s (local.get $0))) + (func (export "i64x2.widen_high_i32x4_s") (param $0 v128) (result v128) (i64x2.widen_high_i32x4_s (local.get $0))) + (func (export "i64x2.widen_low_i32x4_u") (param $0 v128) (result v128) (i64x2.widen_low_i32x4_u (local.get $0))) + (func (export "i64x2.widen_high_i32x4_u") (param $0 v128) (result v128) (i64x2.widen_high_i32x4_u (local.get $0))) (func (export "i16x8.load8x8_u") (param $0 i32) (result v128) (i16x8.load8x8_u (local.get $0))) (func (export "i16x8.load8x8_s") (param $0 i32) (result v128) (i16x8.load8x8_s (local.get $0))) (func (export "i32x4.load16x4_u") (param $0 i32) (result v128) (i32x4.load16x4_u (local.get $0))) (func (export "i32x4.load16x4_s") (param $0 i32) (result v128) (i32x4.load16x4_s (local.get $0))) (func (export "i64x2.load32x2_u") (param $0 i32) (result v128) (i64x2.load32x2_u (local.get $0))) (func (export "i64x2.load32x2_s") (param $0 i32) (result v128) (i64x2.load32x2_s (local.get $0))) + (func (export "v128.load32_zero") (param $0 i32) (result v128) (v128.load32_zero (local.get $0))) + (func (export "v128.load64_zero") (param $0 i32) (result v128) (v128.load64_zero (local.get $0))) (func (export "v8x16.swizzle") (param $0 v128) (param $1 v128) (result v128) (v8x16.swizzle (local.get $0) (local.get $1))) ) @@ -441,6 +491,9 @@ (assert_return (invoke "i32x4.ge_s" (v128.const i32x4 0 -1 53 -7) (v128.const i32x4 0 53 -7 -1)) (v128.const i32x4 -1 0 -1 0)) (assert_return (invoke "i32x4.ge_u" (v128.const i32x4 0 -1 53 -7) (v128.const i32x4 0 53 -7 -1)) (v128.const i32x4 -1 -1 0 0)) +;; i64x2 comparisons +(assert_return (invoke "i64x2.eq" (v128.const i64x2 0 -1) (v128.const i64x2 -1 -1)) (v128.const i64x2 0 -1)) + ;; f32x4 comparisons (assert_return (invoke "f32x4.eq" (v128.const f32x4 0 -1 1 0) (v128.const f32x4 0 0 -1 1)) (v128.const i32x4 -1 0 0 0)) (assert_return (invoke "f32x4.ne" (v128.const f32x4 0 -1 1 0) (v128.const f32x4 0 0 -1 1)) (v128.const i32x4 0 -1 -1 -1)) @@ -488,8 +541,65 @@ ) (v128.const i32x4 0xABABABAB 0xAAAAAAAA 0xBBBBBBBB 0xAABBAABB) ) +;; TODO: signselect tests + +;; load/store lane +(assert_return (invoke "v128.load8_lane" + (i32.const 1024) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + (v128.const i32x4 0x040302ff 0x08070605 0x0c0b0a09 0x100f0e0d) +) +(assert_return (invoke "v128.load16_lane" + (i32.const 1024) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + (v128.const i32x4 0x0403ffff 0x08070605 0x0c0b0a09 0x100f0e0d) +) +(assert_return (invoke "v128.load32_lane" + (i32.const 1024) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + (v128.const i32x4 0xffffffff 0x08070605 0x0c0b0a09 0x100f0e0d) +) +(assert_return (invoke "v128.load64_lane" + (i32.const 1024) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) + (v128.const i32x4 0xffffffff 0xffffffff 0x0c0b0a09 0x100f0e0d) +) +(assert_return (invoke "v128.store8_lane" + (i32.const 1024) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) +) +(assert_return (invoke "v128.load" (i32.const 1024)) (v128.const i32x4 0xffffff01 0xffffffff 0x00000000 0x00000000)) +(assert_return (invoke "v128.store16_lane" + (i32.const 1024) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) +) +(assert_return (invoke "v128.load" (i32.const 1024)) (v128.const i32x4 0xffff0201 0xffffffff 0x00000000 0x00000000)) +(assert_return (invoke "v128.store32_lane" + (i32.const 1024) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) +) +(assert_return (invoke "v128.load" (i32.const 1024)) (v128.const i32x4 0x04030201 0xffffffff 0x00000000 0x00000000)) +(assert_return (invoke "v128.store64_lane" + (i32.const 1024) + (v128.const i32x4 0x04030201 0x08070605 0x0c0b0a09 0x100f0e0d) + ) +) +(assert_return (invoke "v128.load" (i32.const 1024)) (v128.const i32x4 0x04030201 0x08070605 0x00000000 0x00000000)) ;; i8x16 arithmetic +(assert_return (invoke "i8x16.popcnt" (v128.const i8x16 0 1 42 -3 -56 127 -128 -126 0 -1 -42 3 56 -127 -128 126)) + (v128.const i8x16 0 1 3 7 3 7 1 2 0 8 5 2 3 2 1 6) +) +(assert_return (invoke "i8x16.abs" (v128.const i8x16 0 1 42 -3 -56 127 -128 -126 0 -1 -42 3 56 -127 -128 126)) + (v128.const i8x16 0 1 42 3 56 127 -128 126 0 1 42 3 56 127 -128 126) +) (assert_return (invoke "i8x16.neg" (v128.const i32x4 0 1 42 -3 -56 127 -128 -126 0 -1 -42 3 56 -127 -128 126)) (v128.const i32x4 0 -1 -42 3 56 -127 -128 126 0 1 42 -3 -56 127 -128 -126) ) @@ -501,6 +611,7 @@ (assert_return (invoke "i8x16.all_true" (v128.const i32x4 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0)) (i32.const 0)) (assert_return (invoke "i8x16.all_true" (v128.const i32x4 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1)) (i32.const 0)) (assert_return (invoke "i8x16.all_true" (v128.const i32x4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) (i32.const 1)) +(assert_return (invoke "i8x16.bitmask" (v128.const i8x16 -1 0 1 -128 127 -127 0 128 -1 0 1 -128 127 -127 0 128)) (i32.const 43433)) (assert_return (invoke "i8x16.shl" (v128.const i32x4 0 1 2 4 8 16 32 64 -128 3 6 12 24 48 96 -64) (i32.const 1)) (v128.const i32x4 0 2 4 8 16 32 64 -128 0 6 12 24 48 96 -64 -128) ) @@ -605,6 +716,9 @@ ) ;; i16x8 arithmetic +(assert_return (invoke "i16x8.abs" (v128.const i16x8 0 1 42 -3 -56 32767 -32768 32766)) + (v128.const i16x8 0 1 42 3 56 32767 -32768 32766) +) (assert_return (invoke "i16x8.neg" (v128.const i32x4 0 1 42 -3 -56 32767 -32768 32766)) (v128.const i32x4 0 -1 -42 3 56 -32767 -32768 -32766) ) @@ -616,6 +730,7 @@ (assert_return (invoke "i16x8.all_true" (v128.const i32x4 0 0 1 0 0 0 0 0)) (i32.const 0)) (assert_return (invoke "i16x8.all_true" (v128.const i32x4 1 1 1 1 1 0 1 1)) (i32.const 0)) (assert_return (invoke "i16x8.all_true" (v128.const i32x4 1 1 1 1 1 1 1 1)) (i32.const 1)) +(assert_return (invoke "i16x8.bitmask" (v128.const i16x8 -1 0 1 -32768 32767 -32767 0 32768)) (i32.const 169)) (assert_return (invoke "i16x8.shl" (v128.const i32x4 0 8 16 128 256 2048 4096 -32768) (i32.const 1)) (v128.const i32x4 0 16 32 256 512 4096 8192 0)) (assert_return (invoke "i16x8.shl" (v128.const i32x4 0 8 16 128 256 2048 4096 -32768) (i32.const 16)) (v128.const i32x4 0 8 16 128 256 2048 4096 -32768)) (assert_return (invoke "i16x8.shr_u" (v128.const i32x4 0 8 16 128 256 2048 4096 -32768) (i32.const 1)) (v128.const i32x4 0 4 8 64 128 1024 2048 16384)) @@ -708,7 +823,8 @@ ) ;; i32x4 arithmetic -(assert_return (invoke "i32x4.neg" (v128.const i32x4 0 1 0x80000000 0x7fffffff)) (v128.const i32x4 0 -1 0x80000000 0x80000001)) +(assert_return (invoke "i32x4.abs" (v128.const i32x4 0 1 0x80000000 0x80000001)) (v128.const i32x4 0 1 0x80000000 0x7fffffff)) +(assert_return (invoke "i32x4.neg" (v128.const i32x4 0 1 0x80000000 0x80000001)) (v128.const i32x4 0 -1 0x80000000 0x7fffffff)) (assert_return (invoke "i32x4.any_true" (v128.const i32x4 0 0 0 0)) (i32.const 0)) (assert_return (invoke "i32x4.any_true" (v128.const i32x4 0 0 1 0)) (i32.const 1)) (assert_return (invoke "i32x4.any_true" (v128.const i32x4 1 0 1 1)) (i32.const 1)) @@ -717,6 +833,7 @@ (assert_return (invoke "i32x4.all_true" (v128.const i32x4 0 0 1 0)) (i32.const 0)) (assert_return (invoke "i32x4.all_true" (v128.const i32x4 1 0 1 1)) (i32.const 0)) (assert_return (invoke "i32x4.all_true" (v128.const i32x4 1 1 1 1)) (i32.const 1)) +(assert_return (invoke "i32x4.bitmask" (v128.const i32x4 -1 0 -128 127)) (i32.const 5)) (assert_return (invoke "i32x4.shl" (v128.const i32x4 1 0x40000000 0x80000000 -1) (i32.const 1)) (v128.const i32x4 2 0x80000000 0 -2)) (assert_return (invoke "i32x4.shl" (v128.const i32x4 1 0x40000000 0x80000000 -1) (i32.const 32)) (v128.const i32x4 1 0x40000000 0x80000000 -1)) (assert_return (invoke "i32x4.shr_s" (v128.const i32x4 1 0x40000000 0x80000000 -1) (i32.const 1)) (v128.const i32x4 0 0x20000000 0xc0000000 -1)) @@ -749,12 +866,7 @@ ;; i64x2 arithmetic (assert_return (invoke "i64x2.neg" (v128.const i64x2 0x8000000000000000 42)) (v128.const i64x2 0x8000000000000000 -42)) -(assert_return (invoke "i64x2.any_true" (v128.const i64x2 0 0)) (i32.const 0)) -(assert_return (invoke "i64x2.any_true" (v128.const i64x2 1 0)) (i32.const 1)) -(assert_return (invoke "i64x2.any_true" (v128.const i64x2 1 1)) (i32.const 1)) -(assert_return (invoke "i64x2.all_true" (v128.const i64x2 0 0)) (i32.const 0)) -(assert_return (invoke "i64x2.all_true" (v128.const i64x2 1 0)) (i32.const 0)) -(assert_return (invoke "i64x2.all_true" (v128.const i64x2 1 1)) (i32.const 1)) +;; TODO: test i64x2.bitmask (assert_return (invoke "i64x2.shl" (v128.const i64x2 1 0x8000000000000000) (i32.const 1)) (v128.const i64x2 2 0)) (assert_return (invoke "i64x2.shl" (v128.const i64x2 1 0x8000000000000000) (i32.const 64)) (v128.const i64x2 1 0x8000000000000000)) (assert_return (invoke "i64x2.shr_s" (v128.const i64x2 1 0x8000000000000000) (i32.const 1)) (v128.const i64x2 0 0xc000000000000000)) @@ -763,18 +875,33 @@ (assert_return (invoke "i64x2.shr_u" (v128.const i64x2 1 0x8000000000000000) (i32.const 64)) (v128.const i64x2 1 0x8000000000000000)) (assert_return (invoke "i64x2.add" (v128.const i64x2 0x8000000000000001 42) (v128.const i64x2 0x8000000000000001 0)) (v128.const i64x2 2 42)) (assert_return (invoke "i64x2.sub" (v128.const i64x2 2 42) (v128.const i64x2 0x8000000000000001 0)) (v128.const i64x2 0x8000000000000001 42)) +(assert_return (invoke "i64x2.mul" (v128.const i64x2 2 42) (v128.const i64x2 0x8000000000000001 0)) (v128.const i64x2 2 0)) ;; f32x4 arithmetic (assert_return (invoke "f32x4.abs" (v128.const f32x4 -0 nan -infinity 5)) (v128.const f32x4 0 nan infinity 5)) (assert_return (invoke "f32x4.neg" (v128.const f32x4 -0 nan -infinity 5)) (v128.const f32x4 0 -nan infinity -5)) (assert_return (invoke "f32x4.sqrt" (v128.const f32x4 -0 nan infinity 4)) (v128.const f32x4 -0 nan infinity 2)) ;; TODO: qfma/qfms tests -(assert_return (invoke "f32x4.add" (v128.const f32x4 nan -nan infinity 42) (v128.const f32x4 42 infinity infinity 1)) (v128.const f32x4 nan -nan infinity 43)) -(assert_return (invoke "f32x4.sub" (v128.const f32x4 nan -nan infinity 42) (v128.const f32x4 42 infinity -infinity 1)) (v128.const f32x4 nan -nan infinity 41)) -(assert_return (invoke "f32x4.mul" (v128.const f32x4 nan -nan infinity 42) (v128.const f32x4 42 infinity infinity 2)) (v128.const f32x4 nan -nan infinity 84)) -(assert_return (invoke "f32x4.div" (v128.const f32x4 nan -nan infinity 42) (v128.const f32x4 42 infinity 2 2)) (v128.const f32x4 nan -nan infinity 21)) +(assert_return (invoke "f32x4.add" (v128.const f32x4 nan -nan infinity 42) (v128.const f32x4 42 infinity infinity 1)) (v128.const f32x4 nan nan infinity 43)) +(assert_return (invoke "f32x4.sub" (v128.const f32x4 nan -nan infinity 42) (v128.const f32x4 42 infinity -infinity 1)) (v128.const f32x4 nan nan infinity 41)) +(assert_return (invoke "f32x4.mul" (v128.const f32x4 nan -nan infinity 42) (v128.const f32x4 42 infinity infinity 2)) (v128.const f32x4 nan nan infinity 84)) +(assert_return (invoke "f32x4.div" (v128.const f32x4 nan -nan infinity 42) (v128.const f32x4 42 infinity 2 2)) (v128.const f32x4 nan nan infinity 21)) (assert_return (invoke "f32x4.min" (v128.const f32x4 -0 0 nan 5) (v128.const f32x4 0 -0 5 nan)) (v128.const f32x4 -0 -0 nan nan)) (assert_return (invoke "f32x4.max" (v128.const f32x4 -0 0 nan 5) (v128.const f32x4 0 -0 5 nan)) (v128.const f32x4 0 0 nan nan)) +(assert_return (invoke "f32x4.pmin" (v128.const f32x4 -0 0 nan 5) (v128.const f32x4 0 -0 5 nan)) (v128.const f32x4 -0 0 nan 5)) +(assert_return (invoke "f32x4.pmax" (v128.const f32x4 -0 0 nan 5) (v128.const f32x4 0 -0 5 nan)) (v128.const f32x4 -0 0 nan 5)) +(assert_return (invoke "f32x4.ceil" (v128.const f32x4 -0 0 infinity -infinity)) (v128.const f32x4 -0 0 infinity -infinity)) +(assert_return (invoke "f32x4.ceil" (v128.const f32x4 nan 42 0.5 -0.5)) (v128.const f32x4 nan 42 1 -0)) +(assert_return (invoke "f32x4.ceil" (v128.const f32x4 1.5 -1.5 4.2 -4.2)) (v128.const f32x4 2 -1 5 -4)) +(assert_return (invoke "f32x4.floor" (v128.const f32x4 -0 0 infinity -infinity)) (v128.const f32x4 -0 0 infinity -infinity)) +(assert_return (invoke "f32x4.floor" (v128.const f32x4 nan 42 0.5 -0.5)) (v128.const f32x4 nan 42 0 -1)) +(assert_return (invoke "f32x4.floor" (v128.const f32x4 1.5 -1.5 4.2 -4.2)) (v128.const f32x4 1 -2 4 -5)) +(assert_return (invoke "f32x4.trunc" (v128.const f32x4 -0 0 infinity -infinity)) (v128.const f32x4 -0 0 infinity -infinity)) +(assert_return (invoke "f32x4.trunc" (v128.const f32x4 nan 42 0.5 -0.5)) (v128.const f32x4 nan 42 0 -0)) +(assert_return (invoke "f32x4.trunc" (v128.const f32x4 1.5 -1.5 4.2 -4.2)) (v128.const f32x4 1 -1 4 -4)) +(assert_return (invoke "f32x4.nearest" (v128.const f32x4 -0 0 infinity -infinity)) (v128.const f32x4 -0 0 infinity -infinity)) +(assert_return (invoke "f32x4.nearest" (v128.const f32x4 nan 42 0.5 -0.5)) (v128.const f32x4 nan 42 0 -0)) +(assert_return (invoke "f32x4.nearest" (v128.const f32x4 1.5 -1.5 4.2 -4.2)) (v128.const f32x4 2 -2 4 -4)) ;; f64x2 arithmetic (assert_return (invoke "f64x2.abs" (v128.const f64x2 -0 nan)) (v128.const f64x2 0 nan)) @@ -784,18 +911,46 @@ (assert_return (invoke "f64x2.sqrt" (v128.const f64x2 -0 nan)) (v128.const f64x2 -0 nan)) (assert_return (invoke "f64x2.sqrt" (v128.const f64x2 infinity 4)) (v128.const f64x2 infinity 2)) ;; TODO: qfma/qfms tests -(assert_return (invoke "f64x2.add" (v128.const f64x2 nan -nan) (v128.const f64x2 42 infinity)) (v128.const f64x2 nan -nan)) +(assert_return (invoke "f64x2.add" (v128.const f64x2 nan -nan) (v128.const f64x2 42 infinity)) (v128.const f64x2 nan nan)) (assert_return (invoke "f64x2.add" (v128.const f64x2 infinity 42) (v128.const f64x2 infinity 1)) (v128.const f64x2 infinity 43)) -(assert_return (invoke "f64x2.sub" (v128.const f64x2 nan -nan) (v128.const f64x2 42 infinity)) (v128.const f64x2 nan -nan)) +(assert_return (invoke "f64x2.sub" (v128.const f64x2 nan -nan) (v128.const f64x2 42 infinity)) (v128.const f64x2 nan nan)) (assert_return (invoke "f64x2.sub" (v128.const f64x2 infinity 42) (v128.const f64x2 -infinity 1)) (v128.const f64x2 infinity 41)) -(assert_return (invoke "f64x2.mul" (v128.const f64x2 nan -nan) (v128.const f64x2 42 infinity)) (v128.const f64x2 nan -nan)) +(assert_return (invoke "f64x2.mul" (v128.const f64x2 nan -nan) (v128.const f64x2 42 infinity)) (v128.const f64x2 nan nan)) (assert_return (invoke "f64x2.mul" (v128.const f64x2 infinity 42) (v128.const f64x2 infinity 2)) (v128.const f64x2 infinity 84)) -(assert_return (invoke "f64x2.div" (v128.const f64x2 nan -nan) (v128.const f64x2 42 infinity)) (v128.const f64x2 nan -nan)) +(assert_return (invoke "f64x2.div" (v128.const f64x2 nan -nan) (v128.const f64x2 42 infinity)) (v128.const f64x2 nan nan)) (assert_return (invoke "f64x2.div" (v128.const f64x2 infinity 42) (v128.const f64x2 2 2)) (v128.const f64x2 infinity 21)) (assert_return (invoke "f64x2.min" (v128.const f64x2 -0 0) (v128.const f64x2 0 -0)) (v128.const f64x2 -0 -0)) (assert_return (invoke "f64x2.min" (v128.const f64x2 nan 5) (v128.const f64x2 5 nan)) (v128.const f64x2 nan nan)) (assert_return (invoke "f64x2.max" (v128.const f64x2 -0 0) (v128.const f64x2 0 -0)) (v128.const f64x2 0 0)) (assert_return (invoke "f64x2.max" (v128.const f64x2 nan 5) (v128.const f64x2 5 nan)) (v128.const f64x2 nan nan)) +(assert_return (invoke "f64x2.pmin" (v128.const f64x2 -0 0) (v128.const f64x2 0 -0)) (v128.const f64x2 -0 0)) +(assert_return (invoke "f64x2.pmin" (v128.const f64x2 nan 5) (v128.const f64x2 5 nan)) (v128.const f64x2 nan 5)) +(assert_return (invoke "f64x2.pmax" (v128.const f64x2 -0 0) (v128.const f64x2 0 -0)) (v128.const f64x2 -0 0)) +(assert_return (invoke "f64x2.pmax" (v128.const f64x2 nan 5) (v128.const f64x2 5 nan)) (v128.const f64x2 nan 5)) +(assert_return (invoke "f64x2.ceil" (v128.const f64x2 -0 0)) (v128.const f64x2 -0 0)) +(assert_return (invoke "f64x2.ceil" (v128.const f64x2 infinity -infinity)) (v128.const f64x2 infinity -infinity)) +(assert_return (invoke "f64x2.ceil" (v128.const f64x2 nan 42)) (v128.const f64x2 nan 42)) +(assert_return (invoke "f64x2.ceil" (v128.const f64x2 0.5 -0.5)) (v128.const f64x2 1 -0)) +(assert_return (invoke "f64x2.ceil" (v128.const f64x2 1.5 -1.5)) (v128.const f64x2 2 -1)) +(assert_return (invoke "f64x2.ceil" (v128.const f64x2 4.2 -4.2)) (v128.const f64x2 5 -4)) +(assert_return (invoke "f64x2.floor" (v128.const f64x2 -0 0)) (v128.const f64x2 -0 0)) +(assert_return (invoke "f64x2.floor" (v128.const f64x2 infinity -infinity)) (v128.const f64x2 infinity -infinity)) +(assert_return (invoke "f64x2.floor" (v128.const f64x2 nan 42)) (v128.const f64x2 nan 42)) +(assert_return (invoke "f64x2.floor" (v128.const f64x2 0.5 -0.5)) (v128.const f64x2 0 -1)) +(assert_return (invoke "f64x2.floor" (v128.const f64x2 1.5 -1.5)) (v128.const f64x2 1 -2)) +(assert_return (invoke "f64x2.floor" (v128.const f64x2 4.2 -4.2)) (v128.const f64x2 4 -5)) +(assert_return (invoke "f64x2.trunc" (v128.const f64x2 -0 0)) (v128.const f64x2 -0 0)) +(assert_return (invoke "f64x2.trunc" (v128.const f64x2 infinity -infinity)) (v128.const f64x2 infinity -infinity)) +(assert_return (invoke "f64x2.trunc" (v128.const f64x2 nan 42)) (v128.const f64x2 nan 42)) +(assert_return (invoke "f64x2.trunc" (v128.const f64x2 0.5 -0.5)) (v128.const f64x2 0 -0)) +(assert_return (invoke "f64x2.trunc" (v128.const f64x2 1.5 -1.5)) (v128.const f64x2 1 -1)) +(assert_return (invoke "f64x2.trunc" (v128.const f64x2 4.2 -4.2)) (v128.const f64x2 4 -4)) +(assert_return (invoke "f64x2.nearest" (v128.const f64x2 -0 0)) (v128.const f64x2 -0 0)) +(assert_return (invoke "f64x2.nearest" (v128.const f64x2 infinity -infinity)) (v128.const f64x2 infinity -infinity)) +(assert_return (invoke "f64x2.nearest" (v128.const f64x2 nan 42)) (v128.const f64x2 nan 42)) +(assert_return (invoke "f64x2.nearest" (v128.const f64x2 0.5 -0.5)) (v128.const f64x2 0 -0)) +(assert_return (invoke "f64x2.nearest" (v128.const f64x2 1.5 -1.5)) (v128.const f64x2 2 -2)) +(assert_return (invoke "f64x2.nearest" (v128.const f64x2 4.2 -4.2)) (v128.const f64x2 4 -4)) ;; conversions (assert_return (invoke "i32x4.trunc_sat_f32x4_s" (v128.const f32x4 42 nan infinity -infinity)) (v128.const i32x4 42 0 2147483647 -2147483648)) @@ -866,12 +1021,15 @@ (assert_return (invoke "i32x4.widen_high_i16x8_s" (v128.const i16x8 0 1 -1 32768 32767 32769 16384 -16384)) (v128.const i32x4 32767 -32767 16384 -16384)) (assert_return (invoke "i32x4.widen_low_i16x8_u" (v128.const i16x8 0 1 -1 32768 32767 32769 16384 -16384)) (v128.const i32x4 0 1 65535 32768)) (assert_return (invoke "i32x4.widen_high_i16x8_u" (v128.const i16x8 0 1 -1 32768 32767 32769 16384 -16384)) (v128.const i32x4 32767 32769 16384 49152)) +;; TODO: test i64x2 widens (assert_return (invoke "i16x8.load8x8_s" (i32.const 256)) (v128.const i16x8 0xff80 0xff90 0xffa0 0xffb0 0xffc0 0xffd0 0xffe0 0xfff0)) (assert_return (invoke "i16x8.load8x8_u" (i32.const 256)) (v128.const i16x8 0x0080 0x0090 0x00a0 0x00b0 0x00c0 0x00d0 0x00e0 0x00f0)) (assert_return (invoke "i32x4.load16x4_s" (i32.const 256)) (v128.const i32x4 0xffff9080 0xffffb0a0 0xffffd0c0 0xfffff0e0)) (assert_return (invoke "i32x4.load16x4_u" (i32.const 256)) (v128.const i32x4 0x00009080 0x0000b0a0 0x0000d0c0 0x0000f0e0)) (assert_return (invoke "i64x2.load32x2_s" (i32.const 256)) (v128.const i64x2 0xffffffffb0a09080 0xfffffffff0e0d0c0)) (assert_return (invoke "i64x2.load32x2_u" (i32.const 256)) (v128.const i64x2 0x00000000b0a09080 0x00000000f0e0d0c0)) +(assert_return (invoke "v128.load32_zero" (i32.const 256)) (v128.const i32x4 0xb0a09080 0 0 0)) +(assert_return (invoke "v128.load64_zero" (i32.const 256)) (v128.const i64x2 0xf0e0d0c0b0a09080 0)) (assert_return (invoke "v8x16.swizzle" (v128.const i8x16 0xf0 0xf1 0xf2 0xf3 0xf4 0xf5 0xf6 0xf7 0xf8 0xf9 0xfa 0xfb 0xfc 0xfd 0xfe 0xff) diff -Nru binaryen-91/test/stacky.wasm.fromBinary binaryen-99/test/stacky.wasm.fromBinary --- binaryen-91/test/stacky.wasm.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/stacky.wasm.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -2,7 +2,7 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (memory $0 256 256) (export "add" (func $0)) - (func $0 (; 0 ;) (param $0 i32) (param $1 i32) (result i32) + (func $0 (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (i32.add (block (result i32) diff -Nru binaryen-91/test/table-import.wast.fromBinary binaryen-99/test/table-import.wast.fromBinary --- binaryen-91/test/table-import.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/table-import.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -3,7 +3,7 @@ (import "env" "table" (table $timport$0 1 1 funcref)) (elem (i32.const 0) $foo) (memory $0 0) - (func $foo (; 0 ;) + (func $foo (nop) ) ) diff -Nru binaryen-91/test/table-import.wast.fromBinary.noDebugInfo binaryen-99/test/table-import.wast.fromBinary.noDebugInfo --- binaryen-91/test/table-import.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/table-import.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -3,7 +3,7 @@ (import "env" "table" (table $timport$0 1 1 funcref)) (elem (i32.const 0) $0) (memory $0 0) - (func $0 (; 0 ;) + (func $0 (nop) ) ) diff -Nru binaryen-91/test/table-import.wast.from-wast binaryen-99/test/table-import.wast.from-wast --- binaryen-91/test/table-import.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/table-import.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,9 +1,9 @@ (module (type $none_=>_none (func)) - (import "env" "table" (table $0 1 1 funcref)) + (import "env" "table" (table $timport$0 1 1 funcref)) (elem (i32.const 0) $foo) (memory $0 0) - (func $foo (; 0 ;) + (func $foo (nop) ) ) diff -Nru binaryen-91/test/tail-call.wast.fromBinary binaryen-99/test/tail-call.wast.fromBinary --- binaryen-91/test/tail-call.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/tail-call.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -2,10 +2,10 @@ (type $none_=>_none (func)) (table $0 1 1 funcref) (elem (i32.const 0) $foo) - (func $foo (; 0 ;) + (func $foo (return_call $bar) ) - (func $bar (; 1 ;) + (func $bar (return_call_indirect (type $none_=>_none) (i32.const 0) ) diff -Nru binaryen-91/test/tail-call.wast.fromBinary.noDebugInfo binaryen-99/test/tail-call.wast.fromBinary.noDebugInfo --- binaryen-91/test/tail-call.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/tail-call.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -2,10 +2,10 @@ (type $none_=>_none (func)) (table $0 1 1 funcref) (elem (i32.const 0) $0) - (func $0 (; 0 ;) + (func $0 (return_call $1) ) - (func $1 (; 1 ;) + (func $1 (return_call_indirect (type $none_=>_none) (i32.const 0) ) diff -Nru binaryen-91/test/tail-call.wast.from-wast binaryen-99/test/tail-call.wast.from-wast --- binaryen-91/test/tail-call.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/tail-call.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -2,10 +2,10 @@ (type $none_=>_none (func)) (table $0 1 1 funcref) (elem (i32.const 0) $foo) - (func $foo (; 0 ;) + (func $foo (return_call $bar) ) - (func $bar (; 1 ;) + (func $bar (return_call_indirect (type $none_=>_none) (i32.const 0) ) diff -Nru binaryen-91/test/threads.asm.js binaryen-99/test/threads.asm.js --- binaryen-91/test/threads.asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/threads.asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,147 +0,0 @@ -Module["asm"] = (function(global, env, buffer) { - 'use asm'; - - - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - - var DYNAMICTOP_PTR=env.DYNAMICTOP_PTR|0; - var tempDoublePtr=env.tempDoublePtr|0; - var ABORT=env.ABORT|0; - var STACKTOP=env.STACKTOP|0; - var STACK_MAX=env.STACK_MAX|0; - - var __THREW__ = 0; - var threwValue = 0; - var setjmpId = 0; - var undef = 0; - var nan = global.NaN, inf = global.Infinity; - var tempInt = 0, tempBigInt = 0, tempBigIntS = 0, tempValue = 0, tempDouble = 0.0; - var tempRet0 = 0; - - var __pthread_ptr = 0; - var __pthread_is_main_runtime_thread = 0; - var __pthread_is_main_browser_thread = 0; - - var Math_floor=global.Math.floor; - var Math_abs=global.Math.abs; - var Math_sqrt=global.Math.sqrt; - var Math_pow=global.Math.pow; - var Math_cos=global.Math.cos; - var Math_sin=global.Math.sin; - var Math_tan=global.Math.tan; - var Math_acos=global.Math.acos; - var Math_asin=global.Math.asin; - var Math_atan=global.Math.atan; - var Math_atan2=global.Math.atan2; - var Math_exp=global.Math.exp; - var Math_log=global.Math.log; - var Math_ceil=global.Math.ceil; - var Math_imul=global.Math.imul; - var Math_min=global.Math.min; - var Math_max=global.Math.max; - var Math_clz32=global.Math.clz32; - var Math_fround=global.Math.fround; - var abort=env.abort; - var assert=env.assert; - var enlargeMemory=env.enlargeMemory; - var getTotalMemory=env.getTotalMemory; - var abortOnCannotGrowMemory=env.abortOnCannotGrowMemory; - var abortStackOverflow=env.abortStackOverflow; - var nullFunc_iiii=env.nullFunc_iiii; - var nullFunc_i=env.nullFunc_i; - var nullFunc_vi=env.nullFunc_vi; - var nullFunc_vii=env.nullFunc_vii; - var nullFunc_ii=env.nullFunc_ii; - var nullFunc_viii=env.nullFunc_viii; - var nullFunc_v=env.nullFunc_v; - var nullFunc_iii=env.nullFunc_iii; - var invoke_iiii=env.invoke_iiii; - var invoke_i=env.invoke_i; - var invoke_vi=env.invoke_vi; - var invoke_vii=env.invoke_vii; - var invoke_ii=env.invoke_ii; - var invoke_viii=env.invoke_viii; - var invoke_v=env.invoke_v; - var invoke_iii=env.invoke_iii; - var __spawn_thread=env.__spawn_thread; - var _putenv=env._putenv; - var _emscripten_get_now_is_monotonic=env._emscripten_get_now_is_monotonic; - var _fpathconf=env._fpathconf; - var ___unlock=env.___unlock; - var _emscripten_syscall=env._emscripten_syscall; - var ___assert_fail=env.___assert_fail; - var _utimes=env._utimes; - var ___buildEnvironment=env.___buildEnvironment; - var _emscripten_asm_const_i=env._emscripten_asm_const_i; - var _clock_gettime=env._clock_gettime; - var _emscripten_futex_wait=env._emscripten_futex_wait; - var _tzset=env._tzset; - var ___setErrNo=env.___setErrNo; - var _emscripten_set_current_thread_status_js=env._emscripten_set_current_thread_status_js; - var _pthread_getschedparam=env._pthread_getschedparam; - var _clearenv=env._clearenv; - var _emscripten_futex_wake=env._emscripten_futex_wake; - var _sysconf=env._sysconf; - var _utime=env._utime; - var ___call_main=env.___call_main; - var _emscripten_memcpy_big=env._emscripten_memcpy_big; - var _confstr=env._confstr; - var _getenv=env._getenv; - var ___syscall54=env.___syscall54; - var _emscripten_has_threading_support=env._emscripten_has_threading_support; - var _pthread_create=env._pthread_create; - var _emscripten_get_now=env._emscripten_get_now; - var _chroot=env._chroot; - var ___lock=env.___lock; - var ___syscall6=env.___syscall6; - var _unsetenv=env._unsetenv; - var ___clock_gettime=env.___clock_gettime; - var _gettimeofday=env._gettimeofday; - var _atexit=env._atexit; - var ___syscall140=env.___syscall140; - var _emscripten_set_thread_name_js=env._emscripten_set_thread_name_js; - var _setenv=env._setenv; - var ___syscall146=env.___syscall146; - var _emscripten_conditional_set_current_thread_status_js=env._emscripten_conditional_set_current_thread_status_js; - var Atomics_load=global.Atomics.load; - var Atomics_store=global.Atomics.store; - var Atomics_exchange=global.Atomics.exchange; - var Atomics_compareExchange=global.Atomics.compareExchange; - var Atomics_add=global.Atomics.add; - var Atomics_sub=global.Atomics.sub; - var Atomics_and=global.Atomics.and; - var Atomics_or=global.Atomics.or; - var Atomics_xor=global.Atomics.xor; - var tempFloat = Math_fround(0); - const f0 = Math_fround(0); - - function test() { - var $temp = 0; - $temp = (Atomics_load(HEAP32, 1229)|0); - $temp = (Atomics_load(HEAPU16, 1229)|0); - $temp = (Atomics_store(HEAP32, $temp>>2, 0)|0); - $temp = (Atomics_exchange(HEAP32, $temp>>2, 1)|0); - $temp = (Atomics_compareExchange(HEAP32, $temp>>2, 1, 2)|0); - $temp = (Atomics_add(HEAP32, $temp>>2, 0)|0); - $temp = (Atomics_sub(HEAP32, $temp>>2, 0)|0); - $temp = (Atomics_and(HEAP32, $temp>>2, 0)|0); - $temp = (Atomics_or(HEAP32, $temp>>2, 0)|0); - $temp = (Atomics_xor(HEAP32, $temp>>2, 0)|0); - $temp = (Atomics_xor(HEAPU32, 1024, 0)|0); - $temp = (Atomics_xor(HEAP16, 1024, 0)|0); - $temp = (Atomics_xor(HEAPU8, 1024, 0)|0); - // corner cases - $temp = (Atomics_compareExchange(HEAP8, $temp | 0, 1, 2)|0); - $temp = (Atomics_compareExchange(HEAP8, $temp >> 2, 1, 2)|0); - } - - return { test: test }; -}) -; diff -Nru binaryen-91/test/threads.fromasm binaryen-99/test/threads.fromasm --- binaryen-91/test/threads.fromasm 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/threads.fromasm 1970-01-01 00:00:00.000000000 +0000 @@ -1,74 +0,0 @@ -(module - (type $none_=>_none (func)) - (import "env" "memory" (memory $memory (shared 256 256))) - (data (global.get $__memory_base) "threads.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (export "test" (func $test)) - (func $test (; 0 ;) (; has Stack IR ;) - (local $0 i32) - (drop - (i32.atomic.load - (i32.const 4916) - ) - ) - (drop - (i32.atomic.rmw.xor - (i32.atomic.rmw.or - (i32.atomic.rmw.and - (i32.atomic.rmw.sub - (i32.atomic.rmw.add - (i32.atomic.rmw.cmpxchg - (block (result i32) - (i32.atomic.store - (i32.atomic.load16_u - (i32.const 2458) - ) - (i32.const 0) - ) - (i32.atomic.rmw.xchg - (local.get $0) - (i32.const 1) - ) - ) - (i32.const 1) - (i32.const 2) - ) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.const 0) - ) - ) - (drop - (i32.atomic.rmw.xor - (i32.const 4096) - (i32.const 0) - ) - ) - (drop - (i32.atomic.rmw16.xor_u - (i32.const 2048) - (i32.const 0) - ) - ) - (drop - (i32.atomic.rmw8.cmpxchg_u - (i32.atomic.rmw8.cmpxchg_u - (i32.atomic.rmw8.xor_u - (i32.const 1024) - (i32.const 0) - ) - (i32.const 1) - (i32.const 2) - ) - (i32.const 1) - (i32.const 2) - ) - ) - ) -) diff -Nru binaryen-91/test/threads.fromasm.clamp binaryen-99/test/threads.fromasm.clamp --- binaryen-91/test/threads.fromasm.clamp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/threads.fromasm.clamp 1970-01-01 00:00:00.000000000 +0000 @@ -1,74 +0,0 @@ -(module - (type $none_=>_none (func)) - (import "env" "memory" (memory $memory (shared 256 256))) - (data (global.get $__memory_base) "threads.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (export "test" (func $test)) - (func $test (; 0 ;) (; has Stack IR ;) - (local $0 i32) - (drop - (i32.atomic.load - (i32.const 4916) - ) - ) - (drop - (i32.atomic.rmw.xor - (i32.atomic.rmw.or - (i32.atomic.rmw.and - (i32.atomic.rmw.sub - (i32.atomic.rmw.add - (i32.atomic.rmw.cmpxchg - (block (result i32) - (i32.atomic.store - (i32.atomic.load16_u - (i32.const 2458) - ) - (i32.const 0) - ) - (i32.atomic.rmw.xchg - (local.get $0) - (i32.const 1) - ) - ) - (i32.const 1) - (i32.const 2) - ) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.const 0) - ) - ) - (drop - (i32.atomic.rmw.xor - (i32.const 4096) - (i32.const 0) - ) - ) - (drop - (i32.atomic.rmw16.xor_u - (i32.const 2048) - (i32.const 0) - ) - ) - (drop - (i32.atomic.rmw8.cmpxchg_u - (i32.atomic.rmw8.cmpxchg_u - (i32.atomic.rmw8.xor_u - (i32.const 1024) - (i32.const 0) - ) - (i32.const 1) - (i32.const 2) - ) - (i32.const 1) - (i32.const 2) - ) - ) - ) -) diff -Nru binaryen-91/test/threads.fromasm.clamp.no-opts binaryen-99/test/threads.fromasm.clamp.no-opts --- binaryen-91/test/threads.fromasm.clamp.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/threads.fromasm.clamp.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,137 +0,0 @@ -(module - (type $none_=>_none (func)) - (import "env" "memory" (memory $memory (shared 256 256))) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "DYNAMICTOP_PTR" (global $DYNAMICTOP_PTR$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) - (import "env" "ABORT" (global $ABORT$asm2wasm$import i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) - (import "global" "NaN" (global $nan$asm2wasm$import f64)) - (import "global" "Infinity" (global $inf$asm2wasm$import f64)) - (global $DYNAMICTOP_PTR (mut i32) (global.get $DYNAMICTOP_PTR$asm2wasm$import)) - (global $tempDoublePtr (mut i32) (global.get $tempDoublePtr$asm2wasm$import)) - (global $ABORT (mut i32) (global.get $ABORT$asm2wasm$import)) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (global $STACK_MAX (mut i32) (global.get $STACK_MAX$asm2wasm$import)) - (global $__THREW__ (mut i32) (i32.const 0)) - (global $threwValue (mut i32) (i32.const 0)) - (global $setjmpId (mut i32) (i32.const 0)) - (global $undef (mut i32) (i32.const 0)) - (global $nan (mut f64) (global.get $nan$asm2wasm$import)) - (global $inf (mut f64) (global.get $inf$asm2wasm$import)) - (global $tempInt (mut i32) (i32.const 0)) - (global $tempBigInt (mut i32) (i32.const 0)) - (global $tempBigIntS (mut i32) (i32.const 0)) - (global $tempValue (mut i32) (i32.const 0)) - (global $tempDouble (mut f64) (f64.const 0)) - (global $tempRet0 (mut i32) (i32.const 0)) - (global $__pthread_ptr (mut i32) (i32.const 0)) - (global $__pthread_is_main_runtime_thread (mut i32) (i32.const 0)) - (global $__pthread_is_main_browser_thread (mut i32) (i32.const 0)) - (global $tempFloat (mut f32) (f32.const 0)) - (global $f0 (mut f32) (f32.const 0)) - (export "test" (func $test)) - (func $test (; 0 ;) - (local $$temp i32) - (local $1 i32) - (local.set $$temp - (i32.atomic.load - (i32.const 4916) - ) - ) - (local.set $$temp - (i32.atomic.load16_u - (i32.const 2458) - ) - ) - (local.set $$temp - (block (result i32) - (i32.atomic.store - (local.get $$temp) - (local.tee $1 - (i32.const 0) - ) - ) - (local.get $1) - ) - ) - (local.set $$temp - (i32.atomic.rmw.xchg - (local.get $$temp) - (i32.const 1) - ) - ) - (local.set $$temp - (i32.atomic.rmw.cmpxchg - (local.get $$temp) - (i32.const 1) - (i32.const 2) - ) - ) - (local.set $$temp - (i32.atomic.rmw.add - (local.get $$temp) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw.sub - (local.get $$temp) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw.and - (local.get $$temp) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw.or - (local.get $$temp) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw.xor - (local.get $$temp) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw.xor - (i32.const 4096) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw16.xor_u - (i32.const 2048) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw8.xor_u - (i32.const 1024) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw8.cmpxchg_u - (local.get $$temp) - (i32.const 1) - (i32.const 2) - ) - ) - (local.set $$temp - (i32.atomic.rmw8.cmpxchg_u - (local.get $$temp) - (i32.const 1) - (i32.const 2) - ) - ) - ) -) diff -Nru binaryen-91/test/threads.fromasm.imprecise binaryen-99/test/threads.fromasm.imprecise --- binaryen-91/test/threads.fromasm.imprecise 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/threads.fromasm.imprecise 1970-01-01 00:00:00.000000000 +0000 @@ -1,72 +0,0 @@ -(module - (type $none_=>_none (func)) - (import "env" "memory" (memory $memory (shared 256 256))) - (export "test" (func $test)) - (func $test (; 0 ;) (; has Stack IR ;) - (local $0 i32) - (drop - (i32.atomic.load - (i32.const 4916) - ) - ) - (drop - (i32.atomic.rmw.xor - (i32.atomic.rmw.or - (i32.atomic.rmw.and - (i32.atomic.rmw.sub - (i32.atomic.rmw.add - (i32.atomic.rmw.cmpxchg - (block (result i32) - (i32.atomic.store - (i32.atomic.load16_u - (i32.const 2458) - ) - (i32.const 0) - ) - (i32.atomic.rmw.xchg - (local.get $0) - (i32.const 1) - ) - ) - (i32.const 1) - (i32.const 2) - ) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.const 0) - ) - (i32.const 0) - ) - ) - (drop - (i32.atomic.rmw.xor - (i32.const 4096) - (i32.const 0) - ) - ) - (drop - (i32.atomic.rmw16.xor_u - (i32.const 2048) - (i32.const 0) - ) - ) - (drop - (i32.atomic.rmw8.cmpxchg_u - (i32.atomic.rmw8.cmpxchg_u - (i32.atomic.rmw8.xor_u - (i32.const 1024) - (i32.const 0) - ) - (i32.const 1) - (i32.const 2) - ) - (i32.const 1) - (i32.const 2) - ) - ) - ) -) diff -Nru binaryen-91/test/threads.fromasm.imprecise.no-opts binaryen-99/test/threads.fromasm.imprecise.no-opts --- binaryen-91/test/threads.fromasm.imprecise.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/threads.fromasm.imprecise.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,137 +0,0 @@ -(module - (type $none_=>_none (func)) - (import "env" "memory" (memory $memory (shared 256 256))) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "DYNAMICTOP_PTR" (global $DYNAMICTOP_PTR$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) - (import "env" "ABORT" (global $ABORT$asm2wasm$import i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) - (import "global" "NaN" (global $nan$asm2wasm$import f64)) - (import "global" "Infinity" (global $inf$asm2wasm$import f64)) - (global $DYNAMICTOP_PTR (mut i32) (global.get $DYNAMICTOP_PTR$asm2wasm$import)) - (global $tempDoublePtr (mut i32) (global.get $tempDoublePtr$asm2wasm$import)) - (global $ABORT (mut i32) (global.get $ABORT$asm2wasm$import)) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (global $STACK_MAX (mut i32) (global.get $STACK_MAX$asm2wasm$import)) - (global $__THREW__ (mut i32) (i32.const 0)) - (global $threwValue (mut i32) (i32.const 0)) - (global $setjmpId (mut i32) (i32.const 0)) - (global $undef (mut i32) (i32.const 0)) - (global $nan (mut f64) (global.get $nan$asm2wasm$import)) - (global $inf (mut f64) (global.get $inf$asm2wasm$import)) - (global $tempInt (mut i32) (i32.const 0)) - (global $tempBigInt (mut i32) (i32.const 0)) - (global $tempBigIntS (mut i32) (i32.const 0)) - (global $tempValue (mut i32) (i32.const 0)) - (global $tempDouble (mut f64) (f64.const 0)) - (global $tempRet0 (mut i32) (i32.const 0)) - (global $__pthread_ptr (mut i32) (i32.const 0)) - (global $__pthread_is_main_runtime_thread (mut i32) (i32.const 0)) - (global $__pthread_is_main_browser_thread (mut i32) (i32.const 0)) - (global $tempFloat (mut f32) (f32.const 0)) - (global $f0 (mut f32) (f32.const 0)) - (export "test" (func $test)) - (func $test (; 0 ;) - (local $$temp i32) - (local $1 i32) - (local.set $$temp - (i32.atomic.load - (i32.const 4916) - ) - ) - (local.set $$temp - (i32.atomic.load16_u - (i32.const 2458) - ) - ) - (local.set $$temp - (block (result i32) - (i32.atomic.store - (local.get $$temp) - (local.tee $1 - (i32.const 0) - ) - ) - (local.get $1) - ) - ) - (local.set $$temp - (i32.atomic.rmw.xchg - (local.get $$temp) - (i32.const 1) - ) - ) - (local.set $$temp - (i32.atomic.rmw.cmpxchg - (local.get $$temp) - (i32.const 1) - (i32.const 2) - ) - ) - (local.set $$temp - (i32.atomic.rmw.add - (local.get $$temp) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw.sub - (local.get $$temp) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw.and - (local.get $$temp) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw.or - (local.get $$temp) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw.xor - (local.get $$temp) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw.xor - (i32.const 4096) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw16.xor_u - (i32.const 2048) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw8.xor_u - (i32.const 1024) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw8.cmpxchg_u - (local.get $$temp) - (i32.const 1) - (i32.const 2) - ) - ) - (local.set $$temp - (i32.atomic.rmw8.cmpxchg_u - (local.get $$temp) - (i32.const 1) - (i32.const 2) - ) - ) - ) -) diff -Nru binaryen-91/test/threads.fromasm.no-opts binaryen-99/test/threads.fromasm.no-opts --- binaryen-91/test/threads.fromasm.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/threads.fromasm.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,137 +0,0 @@ -(module - (type $none_=>_none (func)) - (import "env" "memory" (memory $memory (shared 256 256))) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "DYNAMICTOP_PTR" (global $DYNAMICTOP_PTR$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) - (import "env" "ABORT" (global $ABORT$asm2wasm$import i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) - (import "global" "NaN" (global $nan$asm2wasm$import f64)) - (import "global" "Infinity" (global $inf$asm2wasm$import f64)) - (global $DYNAMICTOP_PTR (mut i32) (global.get $DYNAMICTOP_PTR$asm2wasm$import)) - (global $tempDoublePtr (mut i32) (global.get $tempDoublePtr$asm2wasm$import)) - (global $ABORT (mut i32) (global.get $ABORT$asm2wasm$import)) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (global $STACK_MAX (mut i32) (global.get $STACK_MAX$asm2wasm$import)) - (global $__THREW__ (mut i32) (i32.const 0)) - (global $threwValue (mut i32) (i32.const 0)) - (global $setjmpId (mut i32) (i32.const 0)) - (global $undef (mut i32) (i32.const 0)) - (global $nan (mut f64) (global.get $nan$asm2wasm$import)) - (global $inf (mut f64) (global.get $inf$asm2wasm$import)) - (global $tempInt (mut i32) (i32.const 0)) - (global $tempBigInt (mut i32) (i32.const 0)) - (global $tempBigIntS (mut i32) (i32.const 0)) - (global $tempValue (mut i32) (i32.const 0)) - (global $tempDouble (mut f64) (f64.const 0)) - (global $tempRet0 (mut i32) (i32.const 0)) - (global $__pthread_ptr (mut i32) (i32.const 0)) - (global $__pthread_is_main_runtime_thread (mut i32) (i32.const 0)) - (global $__pthread_is_main_browser_thread (mut i32) (i32.const 0)) - (global $tempFloat (mut f32) (f32.const 0)) - (global $f0 (mut f32) (f32.const 0)) - (export "test" (func $test)) - (func $test (; 0 ;) - (local $$temp i32) - (local $1 i32) - (local.set $$temp - (i32.atomic.load - (i32.const 4916) - ) - ) - (local.set $$temp - (i32.atomic.load16_u - (i32.const 2458) - ) - ) - (local.set $$temp - (block (result i32) - (i32.atomic.store - (local.get $$temp) - (local.tee $1 - (i32.const 0) - ) - ) - (local.get $1) - ) - ) - (local.set $$temp - (i32.atomic.rmw.xchg - (local.get $$temp) - (i32.const 1) - ) - ) - (local.set $$temp - (i32.atomic.rmw.cmpxchg - (local.get $$temp) - (i32.const 1) - (i32.const 2) - ) - ) - (local.set $$temp - (i32.atomic.rmw.add - (local.get $$temp) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw.sub - (local.get $$temp) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw.and - (local.get $$temp) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw.or - (local.get $$temp) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw.xor - (local.get $$temp) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw.xor - (i32.const 4096) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw16.xor_u - (i32.const 2048) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw8.xor_u - (i32.const 1024) - (i32.const 0) - ) - ) - (local.set $$temp - (i32.atomic.rmw8.cmpxchg_u - (local.get $$temp) - (i32.const 1) - (i32.const 2) - ) - ) - (local.set $$temp - (i32.atomic.rmw8.cmpxchg_u - (local.get $$temp) - (i32.const 1) - (i32.const 2) - ) - ) - ) -) diff -Nru binaryen-91/test/threads.wasm-only.asm.js binaryen-99/test/threads.wasm-only.asm.js --- binaryen-91/test/threads.wasm-only.asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/threads.wasm-only.asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ -// -// Test wasm-only builds. In this case, fastcomp emits code that is -// not asm.js, it will only ever run as wasm, and contains special intrinsics for -// asm2wasm that map LLVM IR into i64s. -// - -function asm(global, env, buffer) { - "use asm"; - - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - - var STACKTOP = env.STACKTOP | 0; - - var fround = global.Math.fround; - var Math_imul = global.Math.imul; - - var illegalImport = env.illegalImport; - var illegalImportResult = env.illegalImportResult; - - var _fabsf = env._fabsf; - var do_i64 = env.do_i64; - var abort = env.abort; - - function test64() { - var x = i64(), y = i64(), z = 0; // define i64 variables using special intrinsic - var int32 = 0, float32 = fround(0), float64 = +0; - i64_atomics_store(4656, i64_const(92, 0))|0; - x = i64_atomics_load(4656); - y = i64_atomics_add(int32, i64_const(26, 0))|0; - x = i64_atomics_sub(1024, y)|0; - y = i64_atomics_and(1024, x)|0; - x = i64_atomics_or(1024, y)|0; - y = i64_atomics_xor(1024, x)|0; - x = i64_atomics_exchange(1024, y)|0; - y = i64_atomics_compareExchange(1024, x, y)|0; - return x; - } - - return { test64: test64 }; -} - diff -Nru binaryen-91/test/threads.wasm-only.fromasm binaryen-99/test/threads.wasm-only.fromasm --- binaryen-91/test/threads.wasm-only.fromasm 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/threads.wasm-only.fromasm 1970-01-01 00:00:00.000000000 +0000 @@ -1,70 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_i64 (func (result i64))) - (import "env" "memory" (memory $memory (shared 256 256))) - (data (global.get $__memory_base) "threads.wasm-only.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "setTempRet0" (func $setTempRet0 (param i32))) - (export "test64" (func $legalstub$test64)) - (func $test64 (; 1 ;) (; has Stack IR ;) (result i64) - (local $0 i64) - (local $1 i64) - (i64.atomic.store - (i32.const 4656) - (i64.const 92) - ) - (drop - (i64.atomic.load - (i32.const 4656) - ) - ) - (drop - (i64.atomic.rmw.cmpxchg - (i32.const 1024) - (local.tee $1 - (i64.atomic.rmw.xchg - (i32.const 1024) - (local.tee $0 - (i64.atomic.rmw.xor - (i32.const 1024) - (i64.atomic.rmw.or - (i32.const 1024) - (i64.atomic.rmw.and - (i32.const 1024) - (i64.atomic.rmw.sub - (i32.const 1024) - (i64.atomic.rmw.add - (i32.const 0) - (i64.const 26) - ) - ) - ) - ) - ) - ) - ) - ) - (local.get $0) - ) - ) - (local.get $1) - ) - (func $legalstub$test64 (; 2 ;) (; has Stack IR ;) (result i32) - (local $0 i64) - (local.set $0 - (call $test64) - ) - (call $setTempRet0 - (i32.wrap_i64 - (i64.shr_u - (local.get $0) - (i64.const 32) - ) - ) - ) - (i32.wrap_i64 - (local.get $0) - ) - ) -) diff -Nru binaryen-91/test/threads.wasm-only.fromasm.clamp binaryen-99/test/threads.wasm-only.fromasm.clamp --- binaryen-91/test/threads.wasm-only.fromasm.clamp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/threads.wasm-only.fromasm.clamp 1970-01-01 00:00:00.000000000 +0000 @@ -1,70 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_i64 (func (result i64))) - (import "env" "memory" (memory $memory (shared 256 256))) - (data (global.get $__memory_base) "threads.wasm-only.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "setTempRet0" (func $setTempRet0 (param i32))) - (export "test64" (func $legalstub$test64)) - (func $test64 (; 1 ;) (; has Stack IR ;) (result i64) - (local $0 i64) - (local $1 i64) - (i64.atomic.store - (i32.const 4656) - (i64.const 92) - ) - (drop - (i64.atomic.load - (i32.const 4656) - ) - ) - (drop - (i64.atomic.rmw.cmpxchg - (i32.const 1024) - (local.tee $1 - (i64.atomic.rmw.xchg - (i32.const 1024) - (local.tee $0 - (i64.atomic.rmw.xor - (i32.const 1024) - (i64.atomic.rmw.or - (i32.const 1024) - (i64.atomic.rmw.and - (i32.const 1024) - (i64.atomic.rmw.sub - (i32.const 1024) - (i64.atomic.rmw.add - (i32.const 0) - (i64.const 26) - ) - ) - ) - ) - ) - ) - ) - ) - (local.get $0) - ) - ) - (local.get $1) - ) - (func $legalstub$test64 (; 2 ;) (; has Stack IR ;) (result i32) - (local $0 i64) - (local.set $0 - (call $test64) - ) - (call $setTempRet0 - (i32.wrap_i64 - (i64.shr_u - (local.get $0) - (i64.const 32) - ) - ) - ) - (i32.wrap_i64 - (local.get $0) - ) - ) -) diff -Nru binaryen-91/test/threads.wasm-only.fromasm.clamp.no-opts binaryen-99/test/threads.wasm-only.fromasm.clamp.no-opts --- binaryen-91/test/threads.wasm-only.fromasm.clamp.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/threads.wasm-only.fromasm.clamp.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,93 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_i64 (func (result i64))) - (import "env" "memory" (memory $memory (shared 256 256))) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "setTempRet0" (func $setTempRet0 (param i32))) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (export "test64" (func $legalstub$test64)) - (func $test64 (; 1 ;) (result i64) - (local $x i64) - (local $y i64) - (local $z i32) - (local $int32 i32) - (local $float32 f32) - (local $float64 f64) - (i64.atomic.store - (i32.const 4656) - (i64.const 92) - ) - (local.set $x - (i64.atomic.load - (i32.const 4656) - ) - ) - (local.set $y - (i64.atomic.rmw.add - (local.get $int32) - (i64.const 26) - ) - ) - (local.set $x - (i64.atomic.rmw.sub - (i32.const 1024) - (local.get $y) - ) - ) - (local.set $y - (i64.atomic.rmw.and - (i32.const 1024) - (local.get $x) - ) - ) - (local.set $x - (i64.atomic.rmw.or - (i32.const 1024) - (local.get $y) - ) - ) - (local.set $y - (i64.atomic.rmw.xor - (i32.const 1024) - (local.get $x) - ) - ) - (local.set $x - (i64.atomic.rmw.xchg - (i32.const 1024) - (local.get $y) - ) - ) - (local.set $y - (i64.atomic.rmw.cmpxchg - (i32.const 1024) - (local.get $x) - (local.get $y) - ) - ) - (return - (local.get $x) - ) - ) - (func $legalstub$test64 (; 2 ;) (result i32) - (local $0 i64) - (local.set $0 - (call $test64) - ) - (call $setTempRet0 - (i32.wrap_i64 - (i64.shr_u - (local.get $0) - (i64.const 32) - ) - ) - ) - (i32.wrap_i64 - (local.get $0) - ) - ) -) diff -Nru binaryen-91/test/threads.wasm-only.fromasm.imprecise binaryen-99/test/threads.wasm-only.fromasm.imprecise --- binaryen-91/test/threads.wasm-only.fromasm.imprecise 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/threads.wasm-only.fromasm.imprecise 1970-01-01 00:00:00.000000000 +0000 @@ -1,68 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_i64 (func (result i64))) - (import "env" "memory" (memory $memory (shared 256 256))) - (import "env" "setTempRet0" (func $setTempRet0 (param i32))) - (export "test64" (func $legalstub$test64)) - (func $test64 (; 1 ;) (; has Stack IR ;) (result i64) - (local $0 i64) - (local $1 i64) - (i64.atomic.store - (i32.const 4656) - (i64.const 92) - ) - (drop - (i64.atomic.load - (i32.const 4656) - ) - ) - (drop - (i64.atomic.rmw.cmpxchg - (i32.const 1024) - (local.tee $1 - (i64.atomic.rmw.xchg - (i32.const 1024) - (local.tee $0 - (i64.atomic.rmw.xor - (i32.const 1024) - (i64.atomic.rmw.or - (i32.const 1024) - (i64.atomic.rmw.and - (i32.const 1024) - (i64.atomic.rmw.sub - (i32.const 1024) - (i64.atomic.rmw.add - (i32.const 0) - (i64.const 26) - ) - ) - ) - ) - ) - ) - ) - ) - (local.get $0) - ) - ) - (local.get $1) - ) - (func $legalstub$test64 (; 2 ;) (; has Stack IR ;) (result i32) - (local $0 i64) - (local.set $0 - (call $test64) - ) - (call $setTempRet0 - (i32.wrap_i64 - (i64.shr_u - (local.get $0) - (i64.const 32) - ) - ) - ) - (i32.wrap_i64 - (local.get $0) - ) - ) -) diff -Nru binaryen-91/test/threads.wasm-only.fromasm.imprecise.no-opts binaryen-99/test/threads.wasm-only.fromasm.imprecise.no-opts --- binaryen-91/test/threads.wasm-only.fromasm.imprecise.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/threads.wasm-only.fromasm.imprecise.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,93 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_i64 (func (result i64))) - (import "env" "memory" (memory $memory (shared 256 256))) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "setTempRet0" (func $setTempRet0 (param i32))) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (export "test64" (func $legalstub$test64)) - (func $test64 (; 1 ;) (result i64) - (local $x i64) - (local $y i64) - (local $z i32) - (local $int32 i32) - (local $float32 f32) - (local $float64 f64) - (i64.atomic.store - (i32.const 4656) - (i64.const 92) - ) - (local.set $x - (i64.atomic.load - (i32.const 4656) - ) - ) - (local.set $y - (i64.atomic.rmw.add - (local.get $int32) - (i64.const 26) - ) - ) - (local.set $x - (i64.atomic.rmw.sub - (i32.const 1024) - (local.get $y) - ) - ) - (local.set $y - (i64.atomic.rmw.and - (i32.const 1024) - (local.get $x) - ) - ) - (local.set $x - (i64.atomic.rmw.or - (i32.const 1024) - (local.get $y) - ) - ) - (local.set $y - (i64.atomic.rmw.xor - (i32.const 1024) - (local.get $x) - ) - ) - (local.set $x - (i64.atomic.rmw.xchg - (i32.const 1024) - (local.get $y) - ) - ) - (local.set $y - (i64.atomic.rmw.cmpxchg - (i32.const 1024) - (local.get $x) - (local.get $y) - ) - ) - (return - (local.get $x) - ) - ) - (func $legalstub$test64 (; 2 ;) (result i32) - (local $0 i64) - (local.set $0 - (call $test64) - ) - (call $setTempRet0 - (i32.wrap_i64 - (i64.shr_u - (local.get $0) - (i64.const 32) - ) - ) - ) - (i32.wrap_i64 - (local.get $0) - ) - ) -) diff -Nru binaryen-91/test/threads.wasm-only.fromasm.no-opts binaryen-99/test/threads.wasm-only.fromasm.no-opts --- binaryen-91/test/threads.wasm-only.fromasm.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/threads.wasm-only.fromasm.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,93 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (type $none_=>_i64 (func (result i64))) - (import "env" "memory" (memory $memory (shared 256 256))) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "setTempRet0" (func $setTempRet0 (param i32))) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (export "test64" (func $legalstub$test64)) - (func $test64 (; 1 ;) (result i64) - (local $x i64) - (local $y i64) - (local $z i32) - (local $int32 i32) - (local $float32 f32) - (local $float64 f64) - (i64.atomic.store - (i32.const 4656) - (i64.const 92) - ) - (local.set $x - (i64.atomic.load - (i32.const 4656) - ) - ) - (local.set $y - (i64.atomic.rmw.add - (local.get $int32) - (i64.const 26) - ) - ) - (local.set $x - (i64.atomic.rmw.sub - (i32.const 1024) - (local.get $y) - ) - ) - (local.set $y - (i64.atomic.rmw.and - (i32.const 1024) - (local.get $x) - ) - ) - (local.set $x - (i64.atomic.rmw.or - (i32.const 1024) - (local.get $y) - ) - ) - (local.set $y - (i64.atomic.rmw.xor - (i32.const 1024) - (local.get $x) - ) - ) - (local.set $x - (i64.atomic.rmw.xchg - (i32.const 1024) - (local.get $y) - ) - ) - (local.set $y - (i64.atomic.rmw.cmpxchg - (i32.const 1024) - (local.get $x) - (local.get $y) - ) - ) - (return - (local.get $x) - ) - ) - (func $legalstub$test64 (; 2 ;) (result i32) - (local $0 i64) - (local.set $0 - (call $test64) - ) - (call $setTempRet0 - (i32.wrap_i64 - (i64.shr_u - (local.get $0) - (i64.const 32) - ) - ) - ) - (i32.wrap_i64 - (local.get $0) - ) - ) -) Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/try-body-multiple-insts.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/try-body-multiple-insts.wasm differ diff -Nru binaryen-91/test/try-body-multiple-insts.wasm.fromBinary binaryen-99/test/try-body-multiple-insts.wasm.fromBinary --- binaryen-91/test/try-body-multiple-insts.wasm.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/try-body-multiple-insts.wasm.fromBinary 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -(module - (type $none_=>_none (func)) - (func $0 (; 0 ;) - (nop) - ) - (func $1 (; 1 ;) - (nop) - ) - (func $2 (; 2 ;) - (local $0 exnref) - (try - (block - (call $0) - (call $1) - ) - (catch - (drop - (exnref.pop) - ) - (call $0) - (call $1) - ) - ) - ) -) - diff -Nru binaryen-91/test/two_sides.asm.js binaryen-99/test/two_sides.asm.js --- binaryen-91/test/two_sides.asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/two_sides.asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -Module["asm"] = (function(global, env, buffer) { - "use asm"; - var Math_imul = global.Math.imul; - function _test(i1, i2, i3, i4, i5) { - i1 = i1 | 0; - i2 = i2 | 0; - i3 = i3 | 0; - i4 = i4 | 0; - i5 = i5 | 0; - var d6 = 0.0; - if (!i5) { - d6 = +(Math_imul(i4, i3) | 0); - d6 = (+(i3 | 0) + d6) * (+(i4 | 0) + d6); - i5 = ~~d6; - return i5 | 0; - } else { - d6 = +(Math_imul(i2, i1) | 0); - d6 = (+(i3 | 0) + d6) * (d6 + +(i4 | 0)); - i5 = ~~d6; - return i5 | 0; - } - return 0; - } - return { - _test: _test - }; -}); - - - diff -Nru binaryen-91/test/two_sides.fromasm binaryen-99/test/two_sides.fromasm --- binaryen-91/test/two_sides.fromasm 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/two_sides.fromasm 1970-01-01 00:00:00.000000000 +0000 @@ -1,61 +0,0 @@ -(module - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "two_sides.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (import "asm2wasm" "f64-to-int" (func $f64-to-int (param f64) (result i32))) - (export "_test" (func $_test)) - (func $_test (; 1 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 f64) - (if (result i32) - (local.get $4) - (call $f64-to-int - (f64.mul - (f64.add - (f64.convert_i32_s - (local.get $2) - ) - (local.tee $5 - (f64.convert_i32_s - (i32.mul - (local.get $0) - (local.get $1) - ) - ) - ) - ) - (f64.add - (local.get $5) - (f64.convert_i32_s - (local.get $3) - ) - ) - ) - ) - (call $f64-to-int - (f64.mul - (f64.add - (f64.convert_i32_s - (local.get $2) - ) - (local.tee $5 - (f64.convert_i32_s - (i32.mul - (local.get $2) - (local.get $3) - ) - ) - ) - ) - (f64.add - (f64.convert_i32_s - (local.get $3) - ) - (local.get $5) - ) - ) - ) - ) - ) -) diff -Nru binaryen-91/test/two_sides.fromasm.clamp binaryen-99/test/two_sides.fromasm.clamp --- binaryen-91/test/two_sides.fromasm.clamp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/two_sides.fromasm.clamp 1970-01-01 00:00:00.000000000 +0000 @@ -1,86 +0,0 @@ -(module - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "two_sides.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (export "_test" (func $_test)) - (func $f64-to-int (; 0 ;) (; has Stack IR ;) (param $0 f64) (result i32) - (if (result i32) - (f64.ne - (local.get $0) - (local.get $0) - ) - (i32.const -2147483648) - (if (result i32) - (f64.ge - (local.get $0) - (f64.const 2147483648) - ) - (i32.const -2147483648) - (if (result i32) - (f64.le - (local.get $0) - (f64.const -2147483649) - ) - (i32.const -2147483648) - (i32.trunc_f64_s - (local.get $0) - ) - ) - ) - ) - ) - (func $_test (; 1 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 f64) - (if (result i32) - (local.get $4) - (call $f64-to-int - (f64.mul - (f64.add - (f64.convert_i32_s - (local.get $2) - ) - (local.tee $5 - (f64.convert_i32_s - (i32.mul - (local.get $0) - (local.get $1) - ) - ) - ) - ) - (f64.add - (local.get $5) - (f64.convert_i32_s - (local.get $3) - ) - ) - ) - ) - (call $f64-to-int - (f64.mul - (f64.add - (f64.convert_i32_s - (local.get $2) - ) - (local.tee $5 - (f64.convert_i32_s - (i32.mul - (local.get $2) - (local.get $3) - ) - ) - ) - ) - (f64.add - (f64.convert_i32_s - (local.get $3) - ) - (local.get $5) - ) - ) - ) - ) - ) -) diff -Nru binaryen-91/test/two_sides.fromasm.clamp.no-opts binaryen-99/test/two_sides.fromasm.clamp.no-opts --- binaryen-91/test/two_sides.fromasm.clamp.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/two_sides.fromasm.clamp.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,114 +0,0 @@ -(module - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (export "_test" (func $_test)) - (func $f64-to-int (; 0 ;) (param $0 f64) (result i32) - (if (result i32) - (f64.ne - (local.get $0) - (local.get $0) - ) - (i32.const -2147483648) - (if (result i32) - (f64.ge - (local.get $0) - (f64.const 2147483648) - ) - (i32.const -2147483648) - (if (result i32) - (f64.le - (local.get $0) - (f64.const -2147483649) - ) - (i32.const -2147483648) - (i32.trunc_f64_s - (local.get $0) - ) - ) - ) - ) - ) - (func $_test (; 1 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (param $i4 i32) (param $i5 i32) (result i32) - (local $d6 f64) - (if - (i32.eqz - (local.get $i5) - ) - (block - (local.set $d6 - (f64.convert_i32_s - (i32.mul - (local.get $i4) - (local.get $i3) - ) - ) - ) - (local.set $d6 - (f64.mul - (f64.add - (f64.convert_i32_s - (local.get $i3) - ) - (local.get $d6) - ) - (f64.add - (f64.convert_i32_s - (local.get $i4) - ) - (local.get $d6) - ) - ) - ) - (local.set $i5 - (call $f64-to-int - (local.get $d6) - ) - ) - (return - (local.get $i5) - ) - ) - (block - (local.set $d6 - (f64.convert_i32_s - (i32.mul - (local.get $i2) - (local.get $i1) - ) - ) - ) - (local.set $d6 - (f64.mul - (f64.add - (f64.convert_i32_s - (local.get $i3) - ) - (local.get $d6) - ) - (f64.add - (local.get $d6) - (f64.convert_i32_s - (local.get $i4) - ) - ) - ) - ) - (local.set $i5 - (call $f64-to-int - (local.get $d6) - ) - ) - (return - (local.get $i5) - ) - ) - ) - (return - (i32.const 0) - ) - ) -) diff -Nru binaryen-91/test/two_sides.fromasm.imprecise binaryen-99/test/two_sides.fromasm.imprecise --- binaryen-91/test/two_sides.fromasm.imprecise 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/two_sides.fromasm.imprecise 1970-01-01 00:00:00.000000000 +0000 @@ -1,56 +0,0 @@ -(module - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (export "_test" (func $_test)) - (func $_test (; 0 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32) - (local $5 f64) - (if (result i32) - (local.get $4) - (i32.trunc_f64_s - (f64.mul - (f64.add - (f64.convert_i32_s - (local.get $2) - ) - (local.tee $5 - (f64.convert_i32_s - (i32.mul - (local.get $0) - (local.get $1) - ) - ) - ) - ) - (f64.add - (local.get $5) - (f64.convert_i32_s - (local.get $3) - ) - ) - ) - ) - (i32.trunc_f64_s - (f64.mul - (f64.add - (f64.convert_i32_s - (local.get $2) - ) - (local.tee $5 - (f64.convert_i32_s - (i32.mul - (local.get $2) - (local.get $3) - ) - ) - ) - ) - (f64.add - (f64.convert_i32_s - (local.get $3) - ) - (local.get $5) - ) - ) - ) - ) - ) -) diff -Nru binaryen-91/test/two_sides.fromasm.imprecise.no-opts binaryen-99/test/two_sides.fromasm.imprecise.no-opts --- binaryen-91/test/two_sides.fromasm.imprecise.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/two_sides.fromasm.imprecise.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,87 +0,0 @@ -(module - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (export "_test" (func $_test)) - (func $_test (; 0 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (param $i4 i32) (param $i5 i32) (result i32) - (local $d6 f64) - (if - (i32.eqz - (local.get $i5) - ) - (block - (local.set $d6 - (f64.convert_i32_s - (i32.mul - (local.get $i4) - (local.get $i3) - ) - ) - ) - (local.set $d6 - (f64.mul - (f64.add - (f64.convert_i32_s - (local.get $i3) - ) - (local.get $d6) - ) - (f64.add - (f64.convert_i32_s - (local.get $i4) - ) - (local.get $d6) - ) - ) - ) - (local.set $i5 - (i32.trunc_f64_s - (local.get $d6) - ) - ) - (return - (local.get $i5) - ) - ) - (block - (local.set $d6 - (f64.convert_i32_s - (i32.mul - (local.get $i2) - (local.get $i1) - ) - ) - ) - (local.set $d6 - (f64.mul - (f64.add - (f64.convert_i32_s - (local.get $i3) - ) - (local.get $d6) - ) - (f64.add - (local.get $d6) - (f64.convert_i32_s - (local.get $i4) - ) - ) - ) - ) - (local.set $i5 - (i32.trunc_f64_s - (local.get $d6) - ) - ) - (return - (local.get $i5) - ) - ) - ) - (return - (i32.const 0) - ) - ) -) diff -Nru binaryen-91/test/two_sides.fromasm.no-opts binaryen-99/test/two_sides.fromasm.no-opts --- binaryen-91/test/two_sides.fromasm.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/two_sides.fromasm.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ -(module - (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "asm2wasm" "f64-to-int" (func $f64-to-int (param f64) (result i32))) - (export "_test" (func $_test)) - (func $_test (; 1 ;) (param $i1 i32) (param $i2 i32) (param $i3 i32) (param $i4 i32) (param $i5 i32) (result i32) - (local $d6 f64) - (if - (i32.eqz - (local.get $i5) - ) - (block - (local.set $d6 - (f64.convert_i32_s - (i32.mul - (local.get $i4) - (local.get $i3) - ) - ) - ) - (local.set $d6 - (f64.mul - (f64.add - (f64.convert_i32_s - (local.get $i3) - ) - (local.get $d6) - ) - (f64.add - (f64.convert_i32_s - (local.get $i4) - ) - (local.get $d6) - ) - ) - ) - (local.set $i5 - (call $f64-to-int - (local.get $d6) - ) - ) - (return - (local.get $i5) - ) - ) - (block - (local.set $d6 - (f64.convert_i32_s - (i32.mul - (local.get $i2) - (local.get $i1) - ) - ) - ) - (local.set $d6 - (f64.mul - (f64.add - (f64.convert_i32_s - (local.get $i3) - ) - (local.get $d6) - ) - (f64.add - (local.get $d6) - (f64.convert_i32_s - (local.get $i4) - ) - ) - ) - ) - (local.set $i5 - (call $f64-to-int - (local.get $d6) - ) - ) - (return - (local.get $i5) - ) - ) - ) - (return - (i32.const 0) - ) - ) -) diff -Nru binaryen-91/test/typed-function-references.wast binaryen-99/test/typed-function-references.wast --- binaryen-91/test/typed-function-references.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/typed-function-references.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,44 @@ +(module + ;; inline ref type in result + (type $f64_=>_ref_null<_->_eqref> (func (param f64) (result (ref null (func (result eqref)))))) + (type $=>eqref (func (result eqref))) + + (type $i32-i32 (func (param i32) (result i32))) + + (func $call-ref + (call_ref (ref.func $call-ref)) + ) + (func $return-call-ref + (return_call_ref (ref.func $call-ref)) + ) + (func $call-ref-more (param i32) (result i32) + (call_ref (i32.const 42) (ref.func $call-ref-more)) + ) + (func $call_from-param (param $f (ref $i32-i32)) (result i32) + (call_ref (i32.const 42) (local.get $f)) + ) + (func $call_from-param-null (param $f (ref null $i32-i32)) (result i32) + (call_ref (i32.const 42) (local.get $f)) + ) + (func $call_from-local-null (result i32) + (local $f (ref null $i32-i32)) + (local.set $f (ref.func $call-ref-more)) + (call_ref (i32.const 42) (local.get $f)) + ) + (func $ref-in-sig (param $0 f64) (result (ref null (func (result eqref)))) + (ref.null $=>eqref) + ) + (func $type-only-in-tuple-local + (local $x (i32 (ref null (func (result anyref))) f64)) + ) + (func $type-only-in-tuple-block + (drop + (block (result i32 (ref null (func (result anyref f32 anyref f32))) f64) + (unreachable) + ) + ) + ) + (func $nested-type-only-there (result (ref (func (result (ref (func (param i32 i32 i32 i32 i32))))))) + (unreachable) + ) +) diff -Nru binaryen-91/test/typed-function-references.wast.fromBinary binaryen-99/test/typed-function-references.wast.fromBinary --- binaryen-91/test/typed-function-references.wast.fromBinary 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/typed-function-references.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,100 @@ +(module + (type $none_=>_none (func)) + (type $none_=>_anyref_f32_anyref_f32 (func (result anyref f32 anyref f32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_eqref (func (result eqref))) + (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $none_=>_anyref (func (result anyref))) + (type $ref?|i32_->_i32|_=>_i32 (func (param (ref null $i32_=>_i32)) (result i32))) + (type $none_=>_i32_ref?|none_->_anyref_f32_anyref_f32|_f64 (func (result i32 (ref null $none_=>_anyref_f32_anyref_f32) f64))) + (type $none_=>_ref?|i32_i32_i32_i32_i32_->_none| (func (result (ref null $i32_i32_i32_i32_i32_=>_none)))) + (type $f64_=>_ref?|none_->_eqref| (func (param f64) (result (ref null $none_=>_eqref)))) + (type $none_=>_ref?|none_->_ref?|i32_i32_i32_i32_i32_->_none|| (func (result (ref null $none_=>_ref?|i32_i32_i32_i32_i32_->_none|)))) + (func $call-ref + (call_ref + (ref.func $call-ref) + ) + ) + (func $return-call-ref + (return_call_ref + (ref.func $call-ref) + ) + ) + (func $call-ref-more (param $0 i32) (result i32) + (call_ref + (i32.const 42) + (ref.func $call-ref-more) + ) + ) + (func $call_from-param (param $f (ref null $i32_=>_i32)) (result i32) + (call_ref + (i32.const 42) + (local.get $f) + ) + ) + (func $call_from-param-null (param $f (ref null $i32_=>_i32)) (result i32) + (call_ref + (i32.const 42) + (local.get $f) + ) + ) + (func $call_from-local-null (result i32) + (local $f (ref null $i32_=>_i32)) + (local.set $f + (ref.func $call-ref-more) + ) + (call_ref + (i32.const 42) + (local.get $f) + ) + ) + (func $ref-in-sig (param $0 f64) (result (ref null $none_=>_eqref)) + (ref.null $none_=>_eqref) + ) + (func $type-only-in-tuple-local + (local $x i32) + (local $1 f64) + (local $2 (ref null $none_=>_anyref)) + (nop) + ) + (func $type-only-in-tuple-block + (local $0 (i32 (ref null (func (result anyref f32 anyref f32))) f64)) + (local $1 (ref null $none_=>_anyref_f32_anyref_f32)) + (local $2 i32) + (local.set $0 + (block $label$1 (result i32 (ref null $none_=>_anyref_f32_anyref_f32) f64) + (unreachable) + ) + ) + (drop + (block (result i32) + (local.set $2 + (tuple.extract 0 + (local.get $0) + ) + ) + (drop + (block (result (ref null $none_=>_anyref_f32_anyref_f32)) + (local.set $1 + (tuple.extract 1 + (local.get $0) + ) + ) + (drop + (tuple.extract 2 + (local.get $0) + ) + ) + (local.get $1) + ) + ) + (local.get $2) + ) + ) + ) + (func $nested-type-only-there (result (ref null $none_=>_ref?|i32_i32_i32_i32_i32_->_none|)) + (unreachable) + ) +) + diff -Nru binaryen-91/test/typed-function-references.wast.fromBinary.noDebugInfo binaryen-99/test/typed-function-references.wast.fromBinary.noDebugInfo --- binaryen-91/test/typed-function-references.wast.fromBinary.noDebugInfo 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/typed-function-references.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,100 @@ +(module + (type $none_=>_none (func)) + (type $none_=>_anyref_f32_anyref_f32 (func (result anyref f32 anyref f32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_eqref (func (result eqref))) + (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $none_=>_anyref (func (result anyref))) + (type $ref?|i32_->_i32|_=>_i32 (func (param (ref null $i32_=>_i32)) (result i32))) + (type $none_=>_i32_ref?|none_->_anyref_f32_anyref_f32|_f64 (func (result i32 (ref null $none_=>_anyref_f32_anyref_f32) f64))) + (type $none_=>_ref?|i32_i32_i32_i32_i32_->_none| (func (result (ref null $i32_i32_i32_i32_i32_=>_none)))) + (type $f64_=>_ref?|none_->_eqref| (func (param f64) (result (ref null $none_=>_eqref)))) + (type $none_=>_ref?|none_->_ref?|i32_i32_i32_i32_i32_->_none|| (func (result (ref null $none_=>_ref?|i32_i32_i32_i32_i32_->_none|)))) + (func $0 + (call_ref + (ref.func $0) + ) + ) + (func $1 + (return_call_ref + (ref.func $0) + ) + ) + (func $2 (param $0 i32) (result i32) + (call_ref + (i32.const 42) + (ref.func $2) + ) + ) + (func $3 (param $0 (ref null $i32_=>_i32)) (result i32) + (call_ref + (i32.const 42) + (local.get $0) + ) + ) + (func $4 (param $0 (ref null $i32_=>_i32)) (result i32) + (call_ref + (i32.const 42) + (local.get $0) + ) + ) + (func $5 (result i32) + (local $0 (ref null $i32_=>_i32)) + (local.set $0 + (ref.func $2) + ) + (call_ref + (i32.const 42) + (local.get $0) + ) + ) + (func $6 (param $0 f64) (result (ref null $none_=>_eqref)) + (ref.null $none_=>_eqref) + ) + (func $7 + (local $0 i32) + (local $1 f64) + (local $2 (ref null $none_=>_anyref)) + (nop) + ) + (func $8 + (local $0 (i32 (ref null (func (result anyref f32 anyref f32))) f64)) + (local $1 (ref null $none_=>_anyref_f32_anyref_f32)) + (local $2 i32) + (local.set $0 + (block $label$1 (result i32 (ref null $none_=>_anyref_f32_anyref_f32) f64) + (unreachable) + ) + ) + (drop + (block (result i32) + (local.set $2 + (tuple.extract 0 + (local.get $0) + ) + ) + (drop + (block (result (ref null $none_=>_anyref_f32_anyref_f32)) + (local.set $1 + (tuple.extract 1 + (local.get $0) + ) + ) + (drop + (tuple.extract 2 + (local.get $0) + ) + ) + (local.get $1) + ) + ) + (local.get $2) + ) + ) + ) + (func $9 (result (ref null $none_=>_ref?|i32_i32_i32_i32_i32_->_none|)) + (unreachable) + ) +) + diff -Nru binaryen-91/test/typed-function-references.wast.from-wast binaryen-99/test/typed-function-references.wast.from-wast --- binaryen-91/test/typed-function-references.wast.from-wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/typed-function-references.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,69 @@ +(module + (type $none_=>_none (func)) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $none_=>_eqref (func (result eqref))) + (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) + (type $none_=>_i32 (func (result i32))) + (type $none_=>_anyref (func (result anyref))) + (type $none_=>_anyref_f32_anyref_f32 (func (result anyref f32 anyref f32))) + (type $ref?|i32_->_i32|_=>_i32 (func (param (ref null $i32_=>_i32)) (result i32))) + (type $none_=>_i32_ref?|none_->_anyref_f32_anyref_f32|_f64 (func (result i32 (ref null $none_=>_anyref_f32_anyref_f32) f64))) + (type $none_=>_ref?|i32_i32_i32_i32_i32_->_none| (func (result (ref null $i32_i32_i32_i32_i32_=>_none)))) + (type $f64_=>_ref?|none_->_eqref| (func (param f64) (result (ref null $none_=>_eqref)))) + (type $none_=>_ref?|none_->_ref?|i32_i32_i32_i32_i32_->_none|| (func (result (ref null $none_=>_ref?|i32_i32_i32_i32_i32_->_none|)))) + (func $call-ref + (call_ref + (ref.func $call-ref) + ) + ) + (func $return-call-ref + (return_call_ref + (ref.func $call-ref) + ) + ) + (func $call-ref-more (param $0 i32) (result i32) + (call_ref + (i32.const 42) + (ref.func $call-ref-more) + ) + ) + (func $call_from-param (param $f (ref null $i32_=>_i32)) (result i32) + (call_ref + (i32.const 42) + (local.get $f) + ) + ) + (func $call_from-param-null (param $f (ref null $i32_=>_i32)) (result i32) + (call_ref + (i32.const 42) + (local.get $f) + ) + ) + (func $call_from-local-null (result i32) + (local $f (ref null $i32_=>_i32)) + (local.set $f + (ref.func $call-ref-more) + ) + (call_ref + (i32.const 42) + (local.get $f) + ) + ) + (func $ref-in-sig (param $0 f64) (result (ref null $none_=>_eqref)) + (ref.null $none_=>_eqref) + ) + (func $type-only-in-tuple-local + (local $x (i32 (ref null (func (result anyref))) f64)) + (nop) + ) + (func $type-only-in-tuple-block + (drop + (block $block (result i32 (ref null $none_=>_anyref_f32_anyref_f32) f64) + (unreachable) + ) + ) + ) + (func $nested-type-only-there (result (ref null $none_=>_ref?|i32_i32_i32_i32_i32_->_none|)) + (unreachable) + ) +) Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/unit/input/atomics_target_feature.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/unit/input/atomics_target_feature.wasm differ Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/unit/input/bulkmem_data.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/unit/input/bulkmem_data.wasm differ Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/unit/input/bulkmem_target_feature.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/unit/input/bulkmem_target_feature.wasm differ diff -Nru binaryen-91/test/unit/input/empty_lld.wat binaryen-99/test/unit/input/empty_lld.wat --- binaryen-91/test/unit/input/empty_lld.wat 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/unit/input/empty_lld.wat 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,9 @@ +(module + (global $global$0 (mut i32) (i32.const 66192)) + (global $global$1 i32 (i32.const 652)) + (export "__data_end" (global $global$1)) + (export "main" (func $main)) + (func $main (param $0 i32) (param $1 i32) (result i32) + (i32.const 0) + ) +) Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/unit/input/empty.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/unit/input/empty.wasm differ Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/unit/input/exception_handling_target_feature.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/unit/input/exception_handling_target_feature.wasm differ Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/unit/input/gc_target_feature.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/unit/input/gc_target_feature.wasm differ diff -Nru binaryen-91/test/unit/input/hello_world.wat binaryen-99/test/unit/input/hello_world.wat --- binaryen-91/test/unit/input/hello_world.wat 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/unit/input/hello_world.wat 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,11 @@ +(module + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (memory $0 256 256) + (export "add" (func $add)) + (func $add (param $x i32) (param $y i32) (result i32) + (i32.add + (local.get $x) + (local.get $y) + ) + ) +) Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/unit/input/mutable_globals_target_feature.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/unit/input/mutable_globals_target_feature.wasm differ diff -Nru binaryen-91/test/unit/input/random_data.txt binaryen-99/test/unit/input/random_data.txt --- binaryen-91/test/unit/input/random_data.txt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/unit/input/random_data.txt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1 @@ +6sgkjdfghk34589n-947-vn98f2yr-nb8f7t08b7gv*~&!%&^@}{PASD kjgsdf768 Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/unit/input/reference_types_target_feature.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/unit/input/reference_types_target_feature.wasm differ Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/unit/input/signext_target_feature.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/unit/input/signext_target_feature.wasm differ Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/unit/input/simd_target_feature.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/unit/input/simd_target_feature.wasm differ Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/unit/input/tail_call_target_feature.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/unit/input/tail_call_target_feature.wasm differ Binary files /tmp/tmpi_jc4n8j/hi7ScDD7wm/binaryen-91/test/unit/input/truncsat_target_feature.wasm and /tmp/tmpi_jc4n8j/8xW_EVv7Ed/binaryen-99/test/unit/input/truncsat_target_feature.wasm differ diff -Nru binaryen-91/test/unit/input/update.sh binaryen-99/test/unit/input/update.sh --- binaryen-91/test/unit/input/update.sh 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/unit/input/update.sh 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,19 @@ +#!/bin/bash + +# This file updates the target_feature tests in the rare but unfortunate case +# that their roundtripped binary representations do not match the input anymore +# due to otherwise unrelated binary format changes. + +WASM_OPT="../../../bin/wasm-opt" # edit when building out of tree + +$WASM_OPT atomics_target_feature.wasm --enable-threads -g --emit-target-features -o atomics_target_feature.wasm +$WASM_OPT bulkmem_data.wasm --enable-bulk-memory -g --emit-target-features -o bulkmem_data.wasm +$WASM_OPT bulkmem_target_feature.wasm --enable-bulk-memory -g --emit-target-features -o bulkmem_target_feature.wasm +$WASM_OPT exception_handling_target_feature.wasm --enable-exception-handling --enable-reference-types -g --emit-target-features -o exception_handling_target_feature.wasm +$WASM_OPT gc_target_feature.wasm --enable-reference-types --enable-gc -g --emit-target-features -o gc_target_feature.wasm +$WASM_OPT mutable_globals_target_feature.wasm --enable-mutable-globals -g --emit-target-features -o mutable_globals_target_feature.wasm +$WASM_OPT reference_types_target_feature.wasm --enable-reference-types -g --emit-target-features -o reference_types_target_feature.wasm +$WASM_OPT signext_target_feature.wasm --enable-sign-ext -g --emit-target-features -o signext_target_feature.wasm +$WASM_OPT simd_target_feature.wasm --enable-simd -g --emit-target-features -o simd_target_feature.wasm +$WASM_OPT truncsat_target_feature.wasm --enable-nontrapping-float-to-int -g --emit-target-features -o truncsat_target_feature.wasm +$WASM_OPT tail_call_target_feature.wasm --enable-tail-call -g --emit-target-features -o tail_call_target_feature.wasm diff -Nru binaryen-91/test/unit/test_asyncify.py binaryen-99/test/unit/test_asyncify.py --- binaryen-91/test/unit/test_asyncify.py 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unit/test_asyncify.py 2021-01-07 20:01:06.000000000 +0000 @@ -14,7 +14,8 @@ shared.run_process(shared.WASM_OPT + args + [self.input_path('asyncify-coroutine.wat'), '--asyncify', '-o', 'b.wasm']) shared.run_process(shared.WASM_OPT + args + [self.input_path('asyncify-stackOverflow.wat'), '--asyncify', '-o', 'c.wasm']) print(' file size: %d' % os.path.getsize('a.wasm')) - shared.run_process([shared.NODEJS, self.input_path('asyncify.js')]) + if shared.NODEJS: + shared.run_process([shared.NODEJS, self.input_path('asyncify.js')]) test(['-g']) test([]) @@ -24,25 +25,34 @@ test(['-Os', '-g']) def test_asyncify_pure_wasm(self): - shared.run_process(shared.WASM_OPT + [self.input_path('asyncify-pure.wat'), '--asyncify', '-o', 'a.wasm']) - shared.run_process(shared.WASM_DIS + ['a.wasm', '-o', 'a.wat']) - output = shared.run_process(shared.WASM_SHELL + ['a.wat'], capture_output=True).stdout - with open(self.input_path('asyncify-pure.txt'), 'r') as f: - self.assertEqual(f.read(), output) + def test(input_file): + shared.run_process(shared.WASM_OPT + [input_file, '--asyncify', '-o', 'a.wasm']) + shared.run_process(shared.WASM_DIS + ['a.wasm', '-o', 'a.wat']) + output = shared.run_process(shared.WASM_SHELL + ['a.wat'], capture_output=True).stdout + with open(self.input_path('asyncify-pure.txt'), 'r') as f: + self.assert_equal_ignoring_line_endings(f.read(), output) + + # test wat input + wat = self.input_path('asyncify-pure.wat') + test(wat) + + # test wasm input + shared.run_process(shared.WASM_AS + [wat, '-o', 'a.wasm']) + test('a.wasm') def test_asyncify_list_bad(self): for arg, warning in [ - ('--pass-arg=asyncify-blacklist@nonexistent', 'nonexistent'), - ('--pass-arg=asyncify-whitelist@nonexistent', 'nonexistent'), - ('--pass-arg=asyncify-blacklist@main', None), - ('--pass-arg=asyncify-whitelist@main', None), - ('--pass-arg=asyncify-blacklist@m*n', None), - ('--pass-arg=asyncify-whitelist@m*n', None), - ('--pass-arg=asyncify-whitelist@main*', None), - ('--pass-arg=asyncify-whitelist@*main', None), - ('--pass-arg=asyncify-blacklist@non*existent', 'non*existent'), - ('--pass-arg=asyncify-whitelist@non*existent', 'non*existent'), - ('--pass-arg=asyncify-whitelist@DOS_ReadFile(unsigned short, unsigned char*, unsigned short*, bool)', None), + ('--pass-arg=asyncify-removelist@nonexistent', 'nonexistent'), + ('--pass-arg=asyncify-onlylist@nonexistent', 'nonexistent'), + ('--pass-arg=asyncify-removelist@main', None), + ('--pass-arg=asyncify-onlylist@main', None), + ('--pass-arg=asyncify-removelist@m*n', None), + ('--pass-arg=asyncify-onlylist@m*n', None), + ('--pass-arg=asyncify-onlylist@main*', None), + ('--pass-arg=asyncify-onlylist@*main', None), + ('--pass-arg=asyncify-removelist@non*existent', 'non*existent'), + ('--pass-arg=asyncify-onlylist@non*existent', 'non*existent'), + ('--pass-arg=asyncify-onlylist@DOS_ReadFile(unsigned short, unsigned char*, unsigned short*, bool)', None), ]: print(arg, warning) err = shared.run_process(shared.WASM_OPT + ['-q', self.input_path('asyncify-pure.wat'), '--asyncify', arg], stdout=subprocess.PIPE, stderr=subprocess.PIPE).stderr.strip() @@ -52,10 +62,18 @@ else: self.assertNotIn('warning', err) - def test_asyncify_blacklist_and_whitelist(self): - proc = shared.run_process(shared.WASM_OPT + [self.input_path('asyncify-pure.wat'), '--asyncify', '--pass-arg=asyncify-whitelist@main', '--pass-arg=asyncify-blacklist@main'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, check=False) - self.assertNotEqual(proc.returncode, 0, 'must error on using both lists at once') - self.assertIn('It makes no sense to use both a blacklist and a whitelist with asyncify', proc.stdout) + def test_asyncify_onlylist_and_other(self): + def test(list_name): + args = shared.WASM_OPT + [self.input_path('asyncify-pure.wat'), + '--asyncify', + '--pass-arg=asyncify-onlylist@main', + '--pass-arg=asyncify-%slist@main' % list_name] + proc = shared.run_process(args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, check=False) + self.assertNotEqual(proc.returncode, 0, 'must error on using both lists at once') + self.assertIn('It makes no sense to use both an asyncify only-list together with another list', proc.stdout) + + test('remove') + test('add') def test_asyncify_imports(self): def test(args): diff -Nru binaryen-91/test/unit/test_errors.py binaryen-99/test/unit/test_errors.py --- binaryen-91/test/unit/test_errors.py 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unit/test_errors.py 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -import os - -from scripts.test import shared -from . import utils - - -class ErrorsTest(utils.BinaryenTestCase): - def test_parsing_error_msg(self): - module = ''' -(module - (func $foo - (abc) - ) -) -''' - p = shared.run_process(shared.WASM_OPT + ['--print', '-o', os.devnull], - input=module, check=False, capture_output=True) - self.assertNotEqual(p.returncode, 0) - self.assertIn("parse exception: abc (at 4:4)", p.stderr) - - def test_validation_error_msg(self): - def test(args=[], extra_expected=None): - module = ''' -(module - (memory (shared 10 20)) -) -''' - p = shared.run_process(shared.WASM_OPT + ['-o', os.devnull] + args, - input=module, check=False, capture_output=True) - self.assertNotEqual(p.returncode, 0) - self.assertIn('memory is shared, but atomics are disabled', p.stderr) - if extra_expected: - self.assertIn(extra_expected, p.stdout) - - test() - # when the user asks to print the module, we print it even if it is - # invalid, for debugging (otherwise, an invalid module would not reach - # the stage of runnning passes, and print is a pass, so nothing would - # be printed) - test(['--print'], '(module') diff -Nru binaryen-91/test/unit/test_features.py binaryen-99/test/unit/test_features.py --- binaryen-91/test/unit/test_features.py 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unit/test_features.py 2021-01-07 20:01:06.000000000 +0000 @@ -5,41 +5,54 @@ class FeatureValidationTest(utils.BinaryenTestCase): - def check_feature(self, module, error, flag): + def check_feature(self, module, error, flag, const_flags=[]): p = shared.run_process(shared.WASM_OPT + - ['--mvp-features', '--print', '-o', os.devnull], + ['--mvp-features', '--print', '-o', os.devnull] + + const_flags, input=module, check=False, capture_output=True) self.assertIn(error, p.stderr) self.assertIn('Fatal: error validating input', p.stderr) self.assertNotEqual(p.returncode, 0) p = shared.run_process( shared.WASM_OPT + ['--mvp-features', '--print', '-o', os.devnull] + - flag, + const_flags + [flag], input=module, check=False, capture_output=True) self.assertEqual(p.returncode, 0) def check_simd(self, module, error): - self.check_feature(module, error, ['--enable-simd']) + self.check_feature(module, error, '--enable-simd') def check_sign_ext(self, module, error): - self.check_feature(module, error, ['--enable-sign-ext']) + self.check_feature(module, error, '--enable-sign-ext') def check_bulk_mem(self, module, error): - self.check_feature(module, error, ['--enable-bulk-memory']) + self.check_feature(module, error, '--enable-bulk-memory') def check_exception_handling(self, module, error): # Exception handling implies reference types - self.check_feature(module, error, - ['--enable-reference-types', - '--enable-exception-handling']) + self.check_feature(module, error, '--enable-exception-handling', + ['--enable-reference-types']) def check_tail_call(self, module, error): - self.check_feature(module, error, ['--enable-tail-call']) + self.check_feature(module, error, '--enable-tail-call') def check_reference_types(self, module, error): - self.check_feature(module, error, ['--enable-reference-types']) + self.check_feature(module, error, '--enable-reference-types') + + def check_multivalue(self, module, error): + self.check_feature(module, error, '--enable-multivalue') + + def check_multivalue_exception_handling(self, module, error): + self.check_feature(module, error, '--enable-multivalue', + ['--enable-exception-handling', + '--enable-reference-types']) + + def check_gc(self, module, error): + # GC implies reference types + self.check_feature(module, error, '--enable-gc', + ['--enable-reference-types']) def test_v128_signature(self): module = ''' @@ -140,7 +153,7 @@ ) ) ''' - self.check_tail_call(module, 'return_call requires tail calls to be enabled') + self.check_tail_call(module, 'return_call* requires tail calls to be enabled') def test_tail_call_indirect(self): module = ''' @@ -154,16 +167,16 @@ ) ) ''' - self.check_tail_call(module, 'return_call_indirect requires tail calls to be enabled') + self.check_tail_call(module, 'return_call* requires tail calls to be enabled') - def test_reference_types_anyref(self): + def test_reference_types_externref(self): module = ''' (module - (import "env" "test1" (func $test1 (param anyref) (result anyref))) - (import "env" "test2" (global $test2 anyref)) - (export "test1" (func $test1 (param anyref) (result anyref))) + (import "env" "test1" (func $test1 (param externref) (result externref))) + (import "env" "test2" (global $test2 externref)) + (export "test1" (func $test1 (param externref) (result externref))) (export "test2" (global $test2)) - (func $anyref_test (param $0 anyref) (result anyref) + (func $externref_test (param $0 externref) (result externref) (return (call $test1 (local.get $0) @@ -195,6 +208,92 @@ ''' self.check_exception_handling(module, 'Module has events') + def test_multivalue_import(self): + module = ''' + (module + (import "env" "foo" (func $foo (result i32 i64))) + ) + ''' + self.check_multivalue(module, 'Imported multivalue function ' + + '(multivalue is not enabled)') + + def test_multivalue_function(self): + module = ''' + (module + (func $foo (result i32 i64) + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + ''' + self.check_multivalue(module, 'Multivalue function results ' + + '(multivalue is not enabled)') + + def test_multivalue_event(self): + module = ''' + (module + (event $foo (attr 0) (param i32 i64)) + ) + ''' + self.check_multivalue_exception_handling(module, 'Multivalue event type ' + + '(multivalue is not enabled)') + + def test_multivalue_block(self): + module = ''' + (module + (func $foo + (drop + (block (result i32 i64) + (tuple.make + (i32.const 42) + (i64.const 42) + ) + ) + ) + ) + ) + ''' + self.check_multivalue(module, 'Multivalue block type ' + + '(multivalue is not enabled)') + + def test_anyref_global(self): + module = ''' + (module + (global $foo anyref (ref.null any)) + ) + ''' + self.check_gc(module, 'all used types should be allowed') + + def test_anyref_local(self): + module = ''' + (module + (func $foo + (local $0 anyref) + ) + ) + ''' + self.check_gc(module, 'all used types should be allowed') + + def test_eqref_global(self): + module = ''' + (module + (global $foo eqref (ref.null eq)) + ) + ''' + self.check_gc(module, 'all used types should be allowed') + + def test_eqref_local(self): + module = ''' + (module + (func $foo + (local $0 eqref) + ) + ) + ''' + self.check_gc(module, 'all used types should be allowed') + class TargetFeaturesSectionTest(utils.BinaryenTestCase): def test_atomics(self): @@ -244,14 +343,22 @@ filename = 'reference_types_target_feature.wasm' self.roundtrip(filename) self.check_features(filename, ['reference-types']) - self.assertIn('anyref', self.disassemble(filename)) + self.assertIn('externref', self.disassemble(filename)) def test_exception_handling(self): filename = 'exception_handling_target_feature.wasm' self.roundtrip(filename) - self.check_features(filename, ['exception-handling']) + self.check_features(filename, ['exception-handling', 'reference-types']) self.assertIn('throw', self.disassemble(filename)) + def test_gc(self): + filename = 'gc_target_feature.wasm' + self.roundtrip(filename) + self.check_features(filename, ['reference-types', 'gc']) + disassembly = self.disassemble(filename) + self.assertIn('anyref', disassembly) + self.assertIn('eqref', disassembly) + def test_incompatible_features(self): path = self.input_path('signext_target_feature.wasm') p = shared.run_process( @@ -275,7 +382,7 @@ self.assertIn('all used features should be allowed', p.stderr) def test_explicit_detect_features(self): - self.check_features('signext_target_feature.wasm', ['sign-ext', 'simd'], + self.check_features('signext_target_feature.wasm', ['simd', 'sign-ext'], opts=['-mvp', '--detect-features', '--enable-simd']) def test_emit_all_features(self): @@ -291,12 +398,16 @@ self.assertEqual(p2.returncode, 0) self.assertEqual([ '--enable-threads', - '--enable-bulk-memory', - '--enable-exception-handling', '--enable-mutable-globals', '--enable-nontrapping-float-to-int', - '--enable-sign-ext', '--enable-simd', + '--enable-bulk-memory', + '--enable-sign-ext', + '--enable-exception-handling', '--enable-tail-call', - '--enable-reference-types' - ], p2.stdout.split()) + '--enable-reference-types', + '--enable-multivalue', + '--enable-gc', + '--enable-memory64', + '--enable-typed-function-references', + ], p2.stdout.splitlines()) diff -Nru binaryen-91/test/unit/test_finalize.py binaryen-99/test/unit/test_finalize.py --- binaryen-91/test/unit/test_finalize.py 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unit/test_finalize.py 2021-01-07 20:01:06.000000000 +0000 @@ -6,10 +6,30 @@ class EmscriptenFinalizeTest(utils.BinaryenTestCase): def test_em_asm_mangled_string(self): - input_dir = os.path.dirname(__file__) p = shared.run_process(shared.WASM_EMSCRIPTEN_FINALIZE + [ - os.path.join(input_dir, 'input', 'em_asm_mangled_string.wat'), '-o', os.devnull, '--global-base=1024' + self.input_path('em_asm_mangled_string.wat'), '-o', os.devnull, '--global-base=1024' ], check=False, capture_output=True) self.assertNotEqual(p.returncode, 0) self.assertIn('Fatal: local.get of unknown in arg0 of call to emscripten_asm_const_int (used by EM_ASM* macros) in function main.', p.stderr) self.assertIn('This might be caused by aggressive compiler transformations. Consider using EM_JS instead.', p.stderr) + + def do_output_test(self, args): + # without any output file specified, don't error, don't write the wasm, + # but do emit metadata + p = shared.run_process(shared.WASM_EMSCRIPTEN_FINALIZE + [ + self.input_path('empty_lld.wat'), '--global-base=1024' + ] + args, capture_output=True) + # metadata is always present + self.assertIn('{', p.stdout) + self.assertIn('}', p.stdout) + return p.stdout + + def test_no_output(self): + stdout = self.do_output_test([]) + # module is not present + self.assertNotIn('(module', stdout) + + def test_text_output(self): + stdout = self.do_output_test(['-S']) + # module is present + self.assertIn('(module', stdout) diff -Nru binaryen-91/test/unit/test_initial_fuzz.py binaryen-99/test/unit/test_initial_fuzz.py --- binaryen-91/test/unit/test_initial_fuzz.py 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/unit/test_initial_fuzz.py 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,35 @@ +import subprocess +from scripts.test import shared +from . import utils + + +class InitialFuzzTest(utils.BinaryenTestCase): + def test_empty_initial(self): + # generate fuzz from random data + data = self.input_path('random_data.txt') + a = shared.run_process(shared.WASM_OPT + ['-ttf', '--print', data], + stdout=subprocess.PIPE).stdout + + # generate fuzz from random data with initial empty wasm + empty_wasm = self.input_path('empty.wasm') + b = shared.run_process( + shared.WASM_OPT + ['-ttf', '--print', data, + '--initial-fuzz=' + empty_wasm], + stdout=subprocess.PIPE).stdout + + # an empty initial wasm causes no changes + self.assertEqual(a, b) + + def test_small_initial(self): + data = self.input_path('random_data.txt') + hello_wat = self.input_path('hello_world.wat') + out = shared.run_process(shared.WASM_OPT + ['-ttf', '--print', data, + '--initial-fuzz=' + hello_wat], + stdout=subprocess.PIPE).stdout + + # the function should be there (perhaps with modified contents - don't + # check that) + self.assertIn('(export "add" (func $add))', out) + + # there should be other fuzz contents added as well + self.assertGreater(out.count('(export '), 1) diff -Nru binaryen-91/test/unit/test_memory_packing.py binaryen-99/test/unit/test_memory_packing.py --- binaryen-91/test/unit/test_memory_packing.py 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unit/test_memory_packing.py 2021-01-07 20:01:06.000000000 +0000 @@ -13,7 +13,7 @@ module = ''' (module (memory 256 256) - (data (i32.const 0) %s) + (data $d (i32.const 0) %s) ) ''' % data opts = ['--memory-packing', '--disable-bulk-memory', '--print', @@ -21,9 +21,10 @@ p = shared.run_process(shared.WASM_OPT + opts, input=module, check=False, capture_output=True) output = [ - '(data (i32.const 999970) "A")', - '(data (i32.const 999980) "A")', - '(data (i32.const 999990) "A' + ('\\00' * 9) + 'A")' + '(data $d (i32.const 0) "A")', + '(data $d.1 (i32.const 10) "A")', + '(data $d.99998 (i32.const 999980) "A")', + '(data $d.99999 (i32.const 999990) "A' + ('\\00' * 9) + 'A")' ] self.assertEqual(p.returncode, 0) for line in output: diff -Nru binaryen-91/test/unit/test_poppy_validation.py binaryen-99/test/unit/test_poppy_validation.py --- binaryen-91/test/unit/test_poppy_validation.py 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/unit/test_poppy_validation.py 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,203 @@ +import os + +from scripts.test import shared +from . import utils + + +class PoppyValidationTest(utils.BinaryenTestCase): + def check_invalid(self, module, error): + p = shared.run_process(shared.WASM_OPT + + ['--experimental-poppy', '--print', '-o', os.devnull], + input=module, check=False, capture_output=True) + self.assertIn(error, p.stderr) + self.assertIn('Fatal: error validating input', p.stderr) + self.assertNotEqual(p.returncode, 0) + + def check_valid(self, module): + p = shared.run_process(shared.WASM_OPT + + ['--experimental-poppy', '--print', '-o', os.devnull], + input=module, check=False, capture_output=True) + self.assertEqual(p.stderr, "") + self.assertEqual(p.returncode, 0) + + def test_top_level_pop(self): + module = ''' + (module + (func $foo (result i32) + (block (result i32) + (i32.const 0) + (pop i32) + ) + ) + ) + ''' + self.check_invalid(module, "Unexpected top-level pop in block") + + def test_top_level_pop_fixed(self): + module = ''' + (module + (func $foo (result i32) + (block (result i32) + (i32.const 0) + ) + ) + ) + ''' + self.check_valid(module) + + def test_incompatible_type(self): + module = ''' + (module + (func $foo (result i32) + (f32.const 42) + (i32.const 42) + (i32.add + (pop i32) + (pop i32) + ) + ) + ) + ''' + self.check_invalid(module, "block element has incompatible type") + self.check_invalid(module, "required: (i32 i32), available: (f32 i32)") + + def test_incorrect_pop_type(self): + module = ''' + (module + (func $foo (result i32) + (i32.const 42) + (i32.const 42) + (i32.add + (pop i32) + (pop f32) + ) + ) + ) + ''' + self.check_invalid(module, "binary child types must be equal") + + def test_incompatible_type_fixed(self): + module = ''' + (module + (func $foo (result i32) + (i32.const 42) + (i32.const 42) + (i32.add + (pop i32) + (pop i32) + ) + ) + ) + ''' + self.check_valid(module) + + def test_incorrect_block_type(self): + module = ''' + (module + (func $foo (result i32) + (f32.const 42) + (nop) + ) + ) + ''' + self.check_invalid(module, "block contents should satisfy block type") + + def test_nonblock_body(self): + module = ''' + (module + (func $foo (result f32) + (f32.const 42) + ) + ) + ''' + self.check_invalid(module, "Function body must be a block") + + def test_nonpop_if_condition(self): + module = ''' + (module + (func $foo + (nop) + (i32.const 1) + (if + (i32.const 42) + (block) + ) + ) + ) + ''' + self.check_invalid(module, "Expected condition to be a Pop") + + def test_nonblock_if_true(self): + module = ''' + (module + (func $foo + (nop) + (i32.const 1) + (if + (pop i32) + (nop) + ) + ) + ) + ''' + self.check_invalid(module, "Expected control flow child to be a block") + + def test_nonblock_if_false(self): + module = ''' + (module + (func $foo + (nop) + (i32.const 1) + (if + (pop i32) + (block) + (nop) + ) + ) + ) + ''' + self.check_invalid(module, "Expected control flow child to be a block") + + def test_nonblock_if_fixed(self): + module = ''' + (module + (func $foo + (nop) + (i32.const 1) + (if + (pop i32) + (block) + (block) + ) + ) + ) + ''' + self.check_valid(module) + + def test_nonblock_loop_body(self): + module = ''' + (module + (func $foo + (nop) + (loop + (nop) + ) + ) + ) + ''' + self.check_invalid(module, "Expected control flow child to be a block") + + def test_nonpop_child(self): + module = ''' + (module + (func $foo (result i32) + (i32.const 42) + (i32.const 5) + (i32.add + (pop i32) + (i32.const -1) + ) + ) + ) + ''' + self.check_invalid(module, "Unexpected non-Pop child") diff -Nru binaryen-91/test/unit/test_tail_call_type.py binaryen-99/test/unit/test_tail_call_type.py --- binaryen-91/test/unit/test_tail_call_type.py 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unit/test_tail_call_type.py 2021-01-07 20:01:06.000000000 +0000 @@ -21,7 +21,7 @@ input=module, check=False, capture_output=True) self.assertNotEqual(p.returncode, 0) self.assertIn( - 'return_call callee return type must match caller return type', + 'return_call* callee return type must match caller return type', p.stderr) def test_return_call_indirect(self): @@ -41,5 +41,5 @@ input=module, check=False, capture_output=True) self.assertNotEqual(p.returncode, 0) self.assertIn( - 'return_call_indirect callee return type must match caller return type', + 'return_call* callee return type must match caller return type', p.stderr) diff -Nru binaryen-91/test/unit/test_wasm2c.py binaryen-99/test/unit/test_wasm2c.py --- binaryen-91/test/unit/test_wasm2c.py 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/unit/test_wasm2c.py 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,21 @@ +from scripts.test import shared +from . import utils + + +class Wasm2CTest(utils.BinaryenTestCase): + def test_wrapper(self): + # the wrapper C code should only call the hang limit initializer if + # that is present. + empty_wasm = self.input_path('empty.wasm') + args = [empty_wasm, '--emit-wasm2c-wrapper=output.c'] + shared.run_process(shared.WASM_OPT + args) + with open('output.c') as f: + normal_output = f.read() + # running with ttf generates a new wasm for fuzzing, which always + # includes the hang limit initializer function + shared.run_process(shared.WASM_OPT + args + ['-ttf']) + with open('output.c') as f: + ttf_output = f.read() + hang_limit_name = 'hangLimitInitializer' + self.assertIn(hang_limit_name, ttf_output) + self.assertNotIn(hang_limit_name, normal_output) diff -Nru binaryen-91/test/unit/utils.py binaryen-99/test/unit/utils.py --- binaryen-91/test/unit/utils.py 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unit/utils.py 2021-01-07 20:01:06.000000000 +0000 @@ -34,5 +34,12 @@ p = shared.run_process(cmd, check=False, capture_output=True) self.assertEqual(p.returncode, 0) self.assertEqual(p.stderr, '') - self.assertEqual(p.stdout.split('\n')[:-1], + self.assertEqual(p.stdout.splitlines(), ['--enable-' + f for f in features]) + + # similar to assertEqual, but while ignoring line ending differences such + # as those between windows and unix + def assert_equal_ignoring_line_endings(self, left, right): + left = left.replace('\r\n', '\n') + right = right.replace('\r\n', '\n') + self.assertEqual(left, right) diff -Nru binaryen-91/test/unit.asm.js binaryen-99/test/unit.asm.js --- binaryen-91/test/unit.asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unit.asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,811 +0,0 @@ -function asm(global, env, buffer) { - "use asm"; - - var t = global.NaN, u = global.Infinity; - var Int = 0; - var Double = 0.0; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_ceil = global.Math.ceil; - var Math_max = global.Math.max; - var Math_min = global.Math.min; - var Math_sqrt = global.Math.sqrt; - var tempDoublePtr = env.tempDoublePtr | 0; - var n = env.gb | 0; - var STACKTOP = env.STACKTOP | 0; - var setTempRet0=env.setTempRet0; - - var abort = env.abort; - var print = env.print; - var h = env.h; - var return_int = env.return_int; - var emscripten_log = env.emscripten_log; - - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - - var nonZero = 1337; - - function big_negative() { - var temp = 0.0; - temp = +-2147483648; - temp = -2147483648.0; - temp = -21474836480.0; - temp = 0.039625; - temp = -0.039625; - } - function importedDoubles() { - var temp = 0.0; - temp = t + u + (-u) + (-t); - if ((Int | 0) > 0) return -3.4; - if (Double > 0.0) return 5.6; - return 1.2; - } - function doubleCompares(x, y) { - x = +x; - y = +y; - var t = 0.0; - var Int = 0.0, Double = 0; // confusing with globals - if (x > 0.0) return 1.2; - Int = x; - Double = n; - if (Int > 0.0) return -3.4; - if ((Double|0) > 0) return 5.6; - if (x < y) return +x; - return +y; - } - function intOps(x) { - x = x | 0; - return (!x) | 0; - } - function hexLiterals() { - var i = 0; - i = 0x0 + 0x12ABCdef + 0xFEDcba90 | 0; - } - function conversions(i, d, f) { - i = i | 0; - d = +d; - f = Math_fround(f); - i = ~~d; - i = ~~f; - d = +(i | 0); - d = +(i >>> 0); - } - function seq() { - var J = 0.0; - J = (0.1, 5.1) - (3.2, 4.2); - } - function switcher(x) { - x = x | 0; - var waka = 0; - switch (x | 0) { - case 1: return 1; - case 2: return 2; - } - switch (x | 0) { - case 12: return 121; - case 5: return 51; - } - Lout: switch (x | 0) { - case 12: break; - case 10: break Lout; - case 5: { - while (1) { - break; - } - break; - } - case 2: { - while (1) { - break Lout; - } - break; - } - } - - L1 : while (1) { - L3 : while (1) switch (x | 0) { - case -1: - { - break L1; - break; - } - case 116: - { - waka = 1; - break; - } - case 110: - { - break L3; - break; - } - default: - { - break L1; - } - } - h(120); - } - - return 0; - } - function blocker() { - L: { - break L; - } - } - function frem() { - return +(5.5 % 1.2); - } - function frem_float() { - return Math_fround(Math_fround(5.5) % Math_fround(1.2)); - } - function big_uint_div_u() { - var x = 0; - x = (4294967295 / 2)&-1; - return x | 0; - } - function trapping_sint_div_s() { - var x = 0; - x = (-2147483648 / -1); - return x | 0; - } - function fr(x) { - x = Math_fround(x); - var y = Math_fround(0), z = 0.0; - Math_fround(z); - Math_fround(y); - Math_fround(5); - Math_fround(0); - Math_fround(5.0); - Math_fround(0.0); - } - function negZero() { - return +-0; - } - function abs() { - var x = 0, y = 0.0, z = Math_fround(0); - x = Math_abs(0) | 0; - y = +Math_abs(0.0); - z = Math_fround(Math_abs(Math_fround(0))); - } - function minmax() { - var x = 0.0, y = 0.0, z = Math_fround(0), w = Math_fround(0); - x = +Math_min(+x, +y); - y = +Math_max(+x, +y); - z = Math_fround(Math_min(Math_fround(z), Math_fround(w))); - w = Math_fround(Math_max(Math_fround(z), Math_fround(w))); - } - function neg() { - var x = Math_fround(0); - x = Math_fround(-x); - FUNCTION_TABLE_c[1 & 7](x); - } - function cneg(x) { - x = Math_fround(x); - FUNCTION_TABLE_c[1 & 7](x); - } - function ___syscall_ret() { - var $0 = 0; - ($0>>>0) > 4294963200; // -4096 - } - function smallCompare(i, j) { - i = i | 0; - j = j | 0; - if ((i | 0) < (j | 0)) i = i + 1 | 0; - if ((i >>> 0) < (j >>> 0)) i = i + 1 | 0; - return i | 0; - } - function cneg_nosemicolon() { - FUNCTION_TABLE_vi[1 & 7](1) // no semicolon - } - function forLoop() { - var i = 0; - for (i = 1; (i | 0) < 200; i = i + 1 | 0) { - h(i | 0); - } - } - function ceiling_32_64(u, B) { - u = Math_fround(u); - B = +B; - var temp = Math_fround(0); - temp = Math_fround(Math_ceil(B)); - temp = Math_fround(u * Math_fround(Math_ceil(Math_fround(B)))); - } - function aborts() { - abort(); - abort(55); - abort(); - abort(12.34); - abort(+Math_fround(56.78)); - } - function continues() { - while (1) { - print(1); - do { - print(5); - if (return_int() | 0) continue; - } while (0); - print(2); - } - } - function bitcasts(i, f) { - i = i | 0; - f = Math_fround(f); - var d = 0.0; - (HEAP32[tempDoublePtr >> 2] = i, Math_fround(HEAPF32[tempDoublePtr >> 2])); // i32->f32 - (HEAP32[tempDoublePtr >> 2] = i, +HEAPF32[tempDoublePtr >> 2]); // i32->f32, no fround - (HEAPF32[tempDoublePtr >> 2] = f, HEAP32[tempDoublePtr >> 2] | 0); // f32->i32 - (HEAPF32[tempDoublePtr >> 2] = d, HEAP32[tempDoublePtr >> 2] | 0); // f64 with implict f32 conversion, ->i32 - } - function recursiveBlockMerging(x) { - x = x | 0; - lb((1, x) + (2, 3) + (((4, 5), 6), 7) + (8, (9, (10, (11, 12)))) | 0) | 0; - x = (lb(1) | 0, x) + (lb(2) | 0, lb(3) | 0) + (((lb(4) | 0, lb(5) | 0), lb(6) | 0), lb(7) | 0) + (lb(8) | 0, (lb(9) | 0, (lb(10) | 0, (lb(11) | 0, lb(12) | 0)))) | 0; - return x | 0; - } - - function lb(a) { - a = a | 0; - HEAP32[a >> 2] = n + 136 + 8; - return 0; - } - - function forgetMe() { - 123.456; - } - function exportMe() { - -3.14159; - } - - function zeroInit(x) { - x = x | 0; - var y = 0; // reusing this with x is dangerous - x has a value, and y needs to start at 0! - if (lb(0) | 0) { - if (lb(1) | 0) y = 3; - } else { - y = 3; - } - if ((y | 0) == 3) { - lb(2) | 0; - } - } - - function phi() { - var x = 0; - do { - if (lb(1) | 0) { - x = 0; - break; - } - x = 1; - } while (0); - return x | 0; - } - - function smallIf() { - do { - if (return_int() | 0) { - lb(3) | 0; - } else { - break; - } - } while (0); - } - - function dropCall() { - if (return_int() | 0) { - phi() | 0; // drop this - setTempRet0(10); // this too - zeroInit(setTempRet0(10) | 0); - } - return phi() | 0; - } - - function useGlobalSet() { - var x = 0; - x = (Int = 10); - Int = 20; - return (Int = 30) | 0; - } - - function usesGlobalSet2() { - return (Int = 40, 50) | 0; - } - - function breakThroughMany($s) { - $s = $s|0; - L1: do { - if ($s) { - while(1) { - if (!($s)) { - break L1; - } - zeroInit(0); - } - } else { - 1337; - } - } while(0); - } - - function ifChainEmpty(label) { - label = label | 0; - if ((label|0) == 4) { - return 0; - } - else if ((label|0) == 7) { - // unreachable; - } - return 0; - } - - function heap8NoShift(x) { - x = x | 0; - return HEAP8[x | 0] | 0; - } - - function conditionalTypeFun() { - var x = 0, y = 0.0; - x = return_int() | 0 ? abort(5) | 0 : 2; - y = return_int() | 0 ? +abort(7) : 4.5; - } - - function loadSigned(x) { - x = x | 0; - loadSigned(HEAP8[x >> 0] << 24 >> 24); - loadSigned(HEAPU8[x >> 0] << 24 >> 24); - loadSigned(HEAP16[x >> 1] << 16 >> 16); - loadSigned(HEAPU16[x >> 1] << 16 >> 16); - loadSigned(HEAP8[x >> 0] << 24 >> 16); - loadSigned(HEAPU8[x >> 0] << 16 >> 24); - loadSigned(HEAP16[x >> 1] << 16 >> 24); - loadSigned(HEAPU16[x >> 1] << 24 >> 16); - } - - function z(x) { - x = Math_fround(x); - } - function w() { - return 0.0; - } - - function globalOpts() { - var x = 0, y = 0.0; - x = Int; - y = Double; - HEAP8[13] = HEAP32[3]; // access memory, should not confuse the global writes - Double = y; - Int = x; - globalOpts(); - x = Int; - if (return_int() | 0) Int = 20; // but this does interfere - Int = x; - globalOpts(); - x = Int; - globalOpts(); // this too - Int = x; - } - - function dropCallImport() { - if (return_int() | 0) return_int() | 0; - } - - function loophi(x, y) { - x = x | 0; - y = y | 0; - var temp = 0, inc = 0, loopvar = 0; // this order matters - loopvar = x; - while(1) { - loophi(loopvar | 0, 0); - temp = loopvar; - if (temp) { - if (temp) { - break; - } - } - inc = loopvar + 1 | 0; - if ((inc|0) == (y|0)) { - loopvar = inc; - } else { - break; - } - } - } - - function loophi2() { - var jnc = 0, i = 0, i$lcssa = 0, temp = 0, j = 0; - i = 0; - L7: while(1) { - j = 0; - while(1) { - temp = j; - if (return_int() | 0) { - if (temp) { - i$lcssa = i; - break L7; - } - } - jnc = j + 1 | 0; - if (jnc) { - j = jnc; - } else { - break; - } - } - } - return i$lcssa | 0 - } - - function loophi2b() { - var jnc = 0, i = 0, i$lcssa = 0, temp = 0, j = 0; - i = 0; - L7: while(1) { - j = 0; - while(1) { - temp = j; - if (return_int() | 0) { - if (temp) { - i$lcssa = j; - break L7; - } - } - jnc = j + 1 | 0; - if (jnc) { - j = jnc; - } else { - break; - } - } - } - return i$lcssa | 0 - } - - function relooperJumpThreading(x) { - x = x | 0; - var label = 0; - // from if - if (x) { - h(0); - label = 1; - } - if ((label|0) == 1) { - h(1); - } - h(-1); - // from loop - while (1) { - x = x + 1 | 0; - if (x) { - h(2); - label = 2; - break; - } - } - if ((label|0) == 2) { - h(3); - } - h(-2); - // if-else afterward - if (x) { - h(4); - if ((x|0) == 3) { - label = 3; - } else { - label = 4; - } - } - if ((label|0) == 3) { - h(5); - } else if ((label|0) == 4) { - h(6); - } - h(-3); - // two ifs afterward - if (x) { - h(7); - if ((x|0) == 5) { - label = 5; - } else { - label = 6; - } - } - if ((label|0) == 5) { - h(8); - if ((x|0) == 6) { - label = 6; - } - } - if ((label|0) == 6) { - h(9); - } - h(-4); - // labeled if after - if (x) { - h(10); - label = 7; - } - L1: do { - if ((label|0) == 7) { - h(11); - break L1; - } - } while (0); - h(-5); - // labeled if after normal if - if (x) { - h(12); - if ((x|0) == 8) { - label = 8; - } else { - label = 9; - } - } - if ((label|0) == 8) { - h(13); - if (x) label = 9; - } - L1: do { - if ((label|0) == 9) { - h(14); - break L1; - } - } while (0); - h(-6); - // TODO - // labeled if after a first if - // do-enclosed if after (?) - // test multiple labels, some should be ignored initially by JumpUpdater - return x | 0; - } - - function relooperJumpThreading__ZN4game14preloadweaponsEv($12, $14, $or$cond8, $or$cond6, $vararg_ptr5, $11, $exitcond) { - $12 = $12 | 0; - $14 = $14 | 0; - $or$cond8 = $or$cond8 | 0; - $or$cond6 = $or$cond6 | 0; - $vararg_ptr5 = $vararg_ptr5 | 0; - $11 = $11 | 0; - $exitcond = $exitcond | 0; - var label = 0; - while(1) { - if ($14) { - if ($or$cond8) { - label = 7; - } else { - label = 8; - } - } else { - if ($or$cond6) { - label = 7; - } else { - label = 8; - } - } - if ((label|0) == 7) { - label = 0; - } - else if ((label|0) == 8) { - label = 0; - HEAP32[$vararg_ptr5>>2] = $11; - } - } - } - - function relooperJumpThreading_irreducible(x) { - x = x | 0; - var label = 0; - if ((x|0) == 100) { - label = 1; - } else { - label = 10; - } - if ((label|0) == 1) { - while (1) { - relooperJumpThreading_irreducible(1337); - label = 1; // this is ok - the if means the body of the if begins with the block for 1. so a setting inside the body of the if must return to the top of the if - } - } - // too many settings, we just look one back, so this one will not be optimized - if ((x|0) == 200) { - label = 2; - } else { - label = 10; - } - if ((x|0) == 300) { - label = 2; - } - if ((label|0) == 2) { - relooperJumpThreading_irreducible(1448); - } - if ((label|0) == 10) { - relooperJumpThreading_irreducible(2000); - } - } - - function __Z12multi_varargiz($0, $$06$i4, $exitcond$i6, $2) { - $0 = $0|0; - $$06$i4 = $$06$i4 | 0; - $exitcond$i6 = $exitcond$i6 | 0; - $2 = $2 | 0; - var $12 = 0, $20 = 0; - if ($2) { - while(1) { - $12 = $$06$i4; - if ($exitcond$i6) { - break; - } else { - $$06$i4 = $20; - } - } - } else { - lb(1) | 0; // returns a value, and the while is unreachable - } - } - - function jumpThreadDrop() { - var label = 0, temp = 0; - temp = return_int() | 0; - while (1) { - label = 14; - break; - } - if ((label | 0) == 10) { - } else if ((label | 0) == 12) { - return_int() | 0; // drop in the middle of an if-else chain for threading - } else if ((label | 0) == 14) { - } - return temp | 0; - } - - function dropIgnoredImportInIf($0,$1,$2) { - $0 = $0|0; - $1 = $1|0; - $2 = $2|0; - do { - if ($0) { - $0 = 1; - lb($2 | 0) | 0; - } else { - break; - } - } while(0); - return; - } - - function big_fround() { - return Math_fround(4294967295); - } - - function dropIgnoredImportsInIf($0,$1,$2) { - $0 = $0|0; - $1 = $1|0; - $2 = $2|0; - do { - if ($0) { - lb($1 | 0) | 0; - } else { - lb($2 | 0) | 0; - } - } while(0); - return; - } - - function f32_ucast(x) { - x = x | 0; - return Math_fround(x>>>0); - } - function f32_scast(x) { - x = x | 0; - return Math_fround(x|0); - } - - function store_fround(x) { - x = x | 0; - HEAPF64[10] = Math_fround(x|0); - } - - function relocatableAndModules() { - ftCall_v(10); // function table call - mftCall_v(20); // possible inter-module function table call - return ftCall_idi(30, 1.5, 200) | 0; // with args - } - - function exported_f32_user(x, y, z) { - x = x | 0; - y = Math_fround(y); - z = +z; - return Math_fround(y); - } - - function sqrts(x) { - x = +x; - return +(+Math_sqrt(x) + +Math_fround(Math_sqrt(Math_fround(x)))); - } - - function f2u(x) { - x = +x; - return (~~x>>>0) | 0; - } - function f2s(x) { - x = +x; - return (~~x) | 0; - } - - function autoDrop(x) { - x = x | 0; - while (1) { - if ((x | 0) == 17) { - return 5; - autoDrop(1) | 0; - } else { - break; - x = autoDrop(2) | 0; - } - } - return x | 0; - } - - function indirectInSequence() { - var i1 = 0; - // this indirect call should have the right type, vi - i1 = (FUNCTION_TABLE_vi[1 & 7](0), 1); - } - - function emterpretify_assertions_safeHeap() { - var i1 = 0; - // assignment into the function table param, optimizer can do things there - FUNCTION_TABLE_vi[(Int = 1) & 7](i1 | 0); - } - - function call_emscripten_log() { - // emscripten_log has no return value, don't let the conditional after the comma confuse you - emscripten_log(), 2 ? abort() | 0 : 3; - } - - function mod_detectSign(d1, d2, d8) { - d1 = +d1; - d2 = +d2; - d8 = +d8; - return ~~(d2 - d8 % d1 / d1 * d2); - } - - function keepAlive() { - sqrts(3.14159); - sqrts(2.18281); // don't inline it either - f2u(100.0); - f2s(100.0); - autoDrop(52) | 0; - indirectInSequence(); - emterpretify_assertions_safeHeap(); - call_emscripten_log(); - mod_detectSign(1.0, 2.31, 9.78); - nonZero = nonZero + 1 | 0; - } - - function v() { - } - function vi(x) { - x = x | 0; - } - function ii(x) { - x = x | 0; - return x | 0; - } - - var FUNCTION_TABLE_a = [ v, big_negative, v, v ]; - var FUNCTION_TABLE_b = [ w, w, importedDoubles, w ]; - var FUNCTION_TABLE_c = [ z, cneg, z, z, z, z, z, z ]; - var FUNCTION_TABLE_vi = [ vi, vi, vi, vi, vi, vi, vi, vi ]; - var FUNCTION_TABLE_ii = [ ii ]; - - return { big_negative: big_negative, pick: forgetMe, pick: exportMe, doubleCompares: doubleCompares, intOps: intOps, conversions: conversions, switcher: switcher, frem: frem, frem_float: frem_float, big_uint_div_u: big_uint_div_u, trapping_sint_div_s: trapping_sint_div_s, fr: fr, negZero: negZero, neg: neg, smallCompare: smallCompare, cneg_nosemicolon: cneg_nosemicolon, forLoop: forLoop, ceiling_32_64: ceiling_32_64, aborts: aborts, continues: continues, bitcasts: bitcasts, recursiveBlockMerging: recursiveBlockMerging, lb: lb, zeroInit: zeroInit, phi: phi, smallIf: smallIf, dropCall: dropCall, useGlobalSet: useGlobalSet, usesGlobalSet2: usesGlobalSet2, breakThroughMany: breakThroughMany, ifChainEmpty: ifChainEmpty, heap8NoShift: heap8NoShift, conditionalTypeFun: conditionalTypeFun, loadSigned: loadSigned, globalOpts: globalOpts, dropCallImport: dropCallImport, loophi: loophi, loophi2: loophi2, loophi2b: loophi2b, relooperJumpThreading: relooperJumpThreading, relooperJumpThreading__ZN4game14preloadweaponsEv: relooperJumpThreading__ZN4game14preloadweaponsEv, __Z12multi_varargiz: __Z12multi_varargiz, jumpThreadDrop: jumpThreadDrop, dropIgnoredImportInIf: dropIgnoredImportInIf, dropIgnoredImportsInIf: dropIgnoredImportsInIf, relooperJumpThreading_irreducible: relooperJumpThreading_irreducible, store_fround: store_fround, exportedNumber: 42, relocatableAndModules: relocatableAndModules, exported_f32_user: exported_f32_user, keepAlive: keepAlive }; -} - diff -Nru binaryen-91/test/unit.fromasm binaryen-99/test/unit.fromasm --- binaryen-91/test/unit.fromasm 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unit.fromasm 1970-01-01 00:00:00.000000000 +0000 @@ -1,1177 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $f32_=>_none (func (param f32))) - (type $none_=>_f64 (func (result f64))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32 i32))) - (type $i32_f32_=>_none (func (param i32 f32))) - (type $i32_f64_f32_=>_none (func (param i32 f64 f32))) - (type $f32_f64_=>_none (func (param f32 f64))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) - (type $none_=>_f32 (func (result f32))) - (type $i32_f32_f64_=>_f32 (func (param i32 f32 f64) (result f32))) - (type $f64_=>_f64 (func (param f64) (result f64))) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "unit.asm.js") - (import "env" "table" (table $table 25 25 funcref)) - (elem (global.get $__table_base) $big_negative $big_negative $big_negative $big_negative $w $w $importedDoubles $w $fr $cneg $fr $fr $fr $fr $fr $fr $vi $vi $vi $vi $vi $vi $vi $vi $ii) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "gb" (global $n$asm2wasm$import i32)) - (import "env" "setTempRet0" (func $setTempRet0 (param i32) (result i32))) - (import "env" "abort" (func $abort (param f64) (result f64))) - (import "env" "print" (func $print (param i32))) - (import "env" "h" (func $h (param i32))) - (import "env" "return_int" (func $return_int (result i32))) - (import "env" "emscripten_log" (func $emscripten_log)) - (import "asm2wasm" "f64-to-int" (func $f64-to-int (param f64) (result i32))) - (import "asm2wasm" "f64-rem" (func $f64-rem (param f64 f64) (result f64))) - (global $Int (mut i32) (i32.const 0)) - (global $nonZero (mut i32) (i32.const 1337)) - (global $exportedNumber i32 (i32.const 42)) - (export "big_negative" (func $big_negative)) - (export "pick" (func $big_negative)) - (export "doubleCompares" (func $doubleCompares)) - (export "intOps" (func $intOps)) - (export "conversions" (func $conversions)) - (export "switcher" (func $switcher)) - (export "frem" (func $frem)) - (export "frem_float" (func $frem_float)) - (export "big_uint_div_u" (func $big_uint_div_u)) - (export "trapping_sint_div_s" (func $trapping_sint_div_s)) - (export "fr" (func $fr)) - (export "negZero" (func $negZero)) - (export "neg" (func $neg)) - (export "smallCompare" (func $smallCompare)) - (export "cneg_nosemicolon" (func $cneg_nosemicolon)) - (export "forLoop" (func $forLoop)) - (export "ceiling_32_64" (func $ceiling_32_64)) - (export "aborts" (func $aborts)) - (export "continues" (func $continues)) - (export "bitcasts" (func $bitcasts)) - (export "recursiveBlockMerging" (func $recursiveBlockMerging)) - (export "lb" (func $lb)) - (export "zeroInit" (func $zeroInit)) - (export "phi" (func $phi)) - (export "smallIf" (func $smallIf)) - (export "dropCall" (func $dropCall)) - (export "useGlobalSet" (func $useGlobalSet)) - (export "usesGlobalSet2" (func $usesGlobalSet2)) - (export "breakThroughMany" (func $breakThroughMany)) - (export "ifChainEmpty" (func $ifChainEmpty)) - (export "heap8NoShift" (func $heap8NoShift)) - (export "conditionalTypeFun" (func $conditionalTypeFun)) - (export "loadSigned" (func $loadSigned)) - (export "globalOpts" (func $globalOpts)) - (export "dropCallImport" (func $dropCallImport)) - (export "loophi" (func $loophi)) - (export "loophi2" (func $loophi2)) - (export "loophi2b" (func $loophi2b)) - (export "relooperJumpThreading" (func $relooperJumpThreading)) - (export "relooperJumpThreading__ZN4game14preloadweaponsEv" (func $relooperJumpThreading__ZN4game14preloadweaponsEv)) - (export "__Z12multi_varargiz" (func $__Z12multi_varargiz)) - (export "jumpThreadDrop" (func $jumpThreadDrop)) - (export "dropIgnoredImportInIf" (func $dropIgnoredImportInIf)) - (export "dropIgnoredImportsInIf" (func $dropIgnoredImportsInIf)) - (export "relooperJumpThreading_irreducible" (func $relooperJumpThreading_irreducible)) - (export "store_fround" (func $store_fround)) - (export "exportedNumber" (global $exportedNumber)) - (export "relocatableAndModules" (func $relocatableAndModules)) - (export "exported_f32_user" (func $exported_f32_user)) - (export "keepAlive" (func $keepAlive)) - (func $big_negative (; 8 ;) (; has Stack IR ;) - (nop) - ) - (func $importedDoubles (; 9 ;) (; has Stack IR ;) (result f64) - (if - (i32.gt_s - (global.get $Int) - (i32.const 0) - ) - (return - (f64.const -3.4) - ) - ) - (f64.const 1.2) - ) - (func $doubleCompares (; 10 ;) (; has Stack IR ;) (param $0 f64) (param $1 f64) (result f64) - (if - (f64.gt - (local.get $0) - (f64.const 0) - ) - (return - (f64.const 1.2) - ) - ) - (if - (f64.gt - (local.get $0) - (f64.const 0) - ) - (return - (f64.const -3.4) - ) - ) - (if - (i32.gt_s - (global.get $n$asm2wasm$import) - (i32.const 0) - ) - (return - (f64.const 5.6) - ) - ) - (if - (f64.lt - (local.get $0) - (local.get $1) - ) - (return - (local.get $0) - ) - ) - (local.get $1) - ) - (func $intOps (; 11 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (i32.eqz - (local.get $0) - ) - ) - (func $conversions (; 12 ;) (; has Stack IR ;) (param $0 i32) (param $1 f64) (param $2 f32) - (drop - (call $f64-to-int - (local.get $1) - ) - ) - (drop - (call $f64-to-int - (f64.promote_f32 - (local.get $2) - ) - ) - ) - ) - (func $switcher (; 13 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (block $switch - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-case0 $switch - (i32.sub - (local.get $0) - (i32.const 1) - ) - ) - ) - (return - (i32.const 1) - ) - ) - (return - (i32.const 2) - ) - ) - (block $switch1 - (block $switch-case3 - (block $switch-case2 - (br_table $switch-case3 $switch1 $switch1 $switch1 $switch1 $switch1 $switch1 $switch-case2 $switch1 - (i32.sub - (local.get $0) - (i32.const 5) - ) - ) - ) - (return - (i32.const 121) - ) - ) - (return - (i32.const 51) - ) - ) - (loop $label$continue$L1 - (block $label$break$L1 - (loop $label$continue$L3 - (block $label$break$L3 - (br_table $label$break$L3 $label$break$L1 $label$break$L1 $label$break$L1 $label$break$L1 $label$break$L1 $label$continue$L3 $label$break$L1 - (i32.add - (local.get $0) - (i32.const -110) - ) - ) - ) - ) - (call $h - (i32.const 120) - ) - (br $label$continue$L1) - ) - ) - (i32.const 0) - ) - (func $frem (; 14 ;) (; has Stack IR ;) (result f64) - (call $f64-rem - (f64.const 5.5) - (f64.const 1.2) - ) - ) - (func $frem_float (; 15 ;) (; has Stack IR ;) (result f32) - (f32.demote_f64 - (call $f64-rem - (f64.const 5.5) - (f64.const 1.2000000476837158) - ) - ) - ) - (func $big_uint_div_u (; 16 ;) (; has Stack IR ;) (result i32) - (i32.const 2147483647) - ) - (func $trapping_sint_div_s (; 17 ;) (; has Stack IR ;) (result i32) - (i32.const 0) - ) - (func $fr (; 18 ;) (; has Stack IR ;) (param $0 f32) - (nop) - ) - (func $negZero (; 19 ;) (; has Stack IR ;) (result f64) - (f64.const -0) - ) - (func $neg (; 20 ;) (; has Stack IR ;) - (call_indirect (type $f32_=>_none) - (f32.const -0) - (i32.const 9) - ) - ) - (func $cneg (; 21 ;) (; has Stack IR ;) (param $0 f32) - (call_indirect (type $f32_=>_none) - (local.get $0) - (i32.const 9) - ) - ) - (func $smallCompare (; 22 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (i32.lt_u - (local.tee $0 - (select - (i32.add - (local.get $0) - (i32.const 1) - ) - (local.get $0) - (i32.lt_s - (local.get $0) - (local.get $1) - ) - ) - ) - (local.get $1) - ) - (i32.add - (local.get $0) - (i32.const 1) - ) - (local.get $0) - ) - ) - (func $cneg_nosemicolon (; 23 ;) (; has Stack IR ;) - (call_indirect (type $i32_=>_none) - (i32.const 1) - (i32.const 17) - ) - ) - (func $forLoop (; 24 ;) (; has Stack IR ;) - (local $0 i32) - (local.set $0 - (i32.const 1) - ) - (loop $for-in - (if - (i32.lt_s - (local.get $0) - (i32.const 200) - ) - (block - (call $h - (local.get $0) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (br $for-in) - ) - ) - ) - ) - (func $ceiling_32_64 (; 25 ;) (; has Stack IR ;) (param $0 f32) (param $1 f64) - (nop) - ) - (func $aborts (; 26 ;) (; has Stack IR ;) - (drop - (call $abort - (f64.const 0) - ) - ) - (drop - (call $abort - (f64.convert_i32_s - (i32.const 55) - ) - ) - ) - (drop - (call $abort - (f64.const 0) - ) - ) - (drop - (call $abort - (f64.const 12.34) - ) - ) - (drop - (call $abort - (f64.const 56.779998779296875) - ) - ) - ) - (func $continues (; 27 ;) (; has Stack IR ;) - (loop $while-in - (call $print - (i32.const 1) - ) - (loop $unlikely-continue - (call $print - (i32.const 5) - ) - (br_if $unlikely-continue - (call $return_int) - ) - ) - (call $print - (i32.const 2) - ) - (br $while-in) - ) - ) - (func $bitcasts (; 28 ;) (; has Stack IR ;) (param $0 i32) (param $1 f32) - (nop) - ) - (func $recursiveBlockMerging (; 29 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (drop - (call $lb - (i32.add - (local.get $0) - (i32.const 22) - ) - ) - ) - (drop - (call $lb - (i32.const 1) - ) - ) - (drop - (call $lb - (i32.const 2) - ) - ) - (i32.add - (i32.add - (i32.add - (call $lb - (i32.const 3) - ) - (local.get $0) - ) - (block (result i32) - (drop - (call $lb - (i32.const 4) - ) - ) - (drop - (call $lb - (i32.const 5) - ) - ) - (drop - (call $lb - (i32.const 6) - ) - ) - (call $lb - (i32.const 7) - ) - ) - ) - (block (result i32) - (drop - (call $lb - (i32.const 8) - ) - ) - (drop - (call $lb - (i32.const 9) - ) - ) - (drop - (call $lb - (i32.const 10) - ) - ) - (drop - (call $lb - (i32.const 11) - ) - ) - (call $lb - (i32.const 12) - ) - ) - ) - ) - (func $lb (; 30 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (i32.store - (local.get $0) - (i32.add - (global.get $n$asm2wasm$import) - (i32.const 144) - ) - ) - (i32.const 0) - ) - (func $zeroInit (; 31 ;) (; has Stack IR ;) (param $0 i32) - (local $1 i32) - (if - (i32.eq - (if (result i32) - (call $lb - (i32.const 0) - ) - (if (result i32) - (call $lb - (i32.const 1) - ) - (i32.const 3) - (local.get $1) - ) - (i32.const 3) - ) - (i32.const 3) - ) - (drop - (call $lb - (i32.const 2) - ) - ) - ) - ) - (func $phi (; 32 ;) (; has Stack IR ;) (result i32) - (block $do-once (result i32) - (drop - (br_if $do-once - (i32.const 0) - (call $lb - (i32.const 1) - ) - ) - ) - (i32.const 1) - ) - ) - (func $smallIf (; 33 ;) (; has Stack IR ;) - (if - (call $return_int) - (drop - (call $lb - (i32.const 3) - ) - ) - ) - ) - (func $dropCall (; 34 ;) (; has Stack IR ;) (result i32) - (if - (call $return_int) - (block - (drop - (call $phi) - ) - (drop - (call $setTempRet0 - (i32.const 10) - ) - ) - (call $zeroInit - (call $setTempRet0 - (i32.const 10) - ) - ) - ) - ) - (call $phi) - ) - (func $useGlobalSet (; 35 ;) (; has Stack IR ;) (result i32) - (global.set $Int - (i32.const 10) - ) - (global.set $Int - (i32.const 20) - ) - (global.set $Int - (i32.const 30) - ) - (i32.const 30) - ) - (func $usesGlobalSet2 (; 36 ;) (; has Stack IR ;) (result i32) - (global.set $Int - (i32.const 40) - ) - (i32.const 50) - ) - (func $breakThroughMany (; 37 ;) (; has Stack IR ;) (param $0 i32) - (if - (local.get $0) - (loop $while-in - (if - (local.get $0) - (block - (call $zeroInit - (i32.const 0) - ) - (br $while-in) - ) - ) - ) - ) - ) - (func $ifChainEmpty (; 38 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (if - (i32.eq - (local.get $0) - (i32.const 4) - ) - (return - (i32.const 0) - ) - ) - (i32.const 0) - ) - (func $heap8NoShift (; 39 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (i32.load8_s - (local.get $0) - ) - ) - (func $conditionalTypeFun (; 40 ;) (; has Stack IR ;) - (drop - (if (result i32) - (call $return_int) - (call $f64-to-int - (call $abort - (f64.convert_i32_s - (i32.const 5) - ) - ) - ) - (i32.const 2) - ) - ) - (drop - (if (result f64) - (call $return_int) - (call $abort - (f64.convert_i32_s - (i32.const 7) - ) - ) - (f64.const 4.5) - ) - ) - ) - (func $loadSigned (; 41 ;) (; has Stack IR ;) (param $0 i32) - (call $loadSigned - (i32.load8_s - (local.get $0) - ) - ) - (call $loadSigned - (i32.load8_s - (local.get $0) - ) - ) - (call $loadSigned - (i32.load16_s - (local.get $0) - ) - ) - (call $loadSigned - (i32.load16_s - (local.get $0) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load8_s - (local.get $0) - ) - (i32.const 24) - ) - (i32.const 16) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load8_u - (local.get $0) - ) - (i32.const 16) - ) - (i32.const 24) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load16_s - (local.get $0) - ) - (i32.const 16) - ) - (i32.const 24) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load16_u - (local.get $0) - ) - (i32.const 24) - ) - (i32.const 16) - ) - ) - ) - (func $w (; 42 ;) (; has Stack IR ;) (result f64) - (f64.const 0) - ) - (func $globalOpts (; 43 ;) (; has Stack IR ;) - (local $0 i32) - (i32.store8 - (i32.const 13) - (i32.load - (i32.const 12) - ) - ) - (call $globalOpts) - (local.set $0 - (global.get $Int) - ) - (if - (call $return_int) - (global.set $Int - (i32.const 20) - ) - ) - (global.set $Int - (local.get $0) - ) - (call $globalOpts) - (local.set $0 - (global.get $Int) - ) - (call $globalOpts) - (global.set $Int - (local.get $0) - ) - ) - (func $dropCallImport (; 44 ;) (; has Stack IR ;) - (if - (call $return_int) - (drop - (call $return_int) - ) - ) - ) - (func $loophi (; 45 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (loop $while-in - (block $while-out - (call $loophi - (local.get $0) - (i32.const 0) - ) - (br_if $while-out - (select - (local.get $0) - (i32.const 0) - (local.get $0) - ) - ) - (br_if $while-in - (i32.eq - (local.get $1) - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - ) - ) - ) - (func $loophi2 (; 46 ;) (; has Stack IR ;) (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (loop $label$continue$L7 - (block $label$break$L7 - (local.set $0 - (i32.const 0) - ) - (loop $while-in - (local.set $2 - (local.get $0) - ) - (br_if $label$break$L7 - (select - (call $return_int) - (i32.const 0) - (local.get $2) - ) - ) - (br_if $while-in - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (br $label$continue$L7) - ) - ) - (local.get $1) - ) - (func $loophi2b (; 47 ;) (; has Stack IR ;) (result i32) - (local $0 i32) - (local $1 i32) - (loop $label$continue$L7 - (block $label$break$L7 - (local.set $0 - (i32.const 0) - ) - (loop $while-in - (local.set $1 - (local.get $0) - ) - (br_if $label$break$L7 - (select - (call $return_int) - (i32.const 0) - (local.get $1) - ) - ) - (br_if $while-in - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (br $label$continue$L7) - ) - ) - (local.get $0) - ) - (func $relooperJumpThreading (; 48 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (block $__rjto$0 - (block $__rjti$0 - (if - (local.get $0) - (block - (call $h - (i32.const 0) - ) - (br $__rjti$0) - ) - ) - (br $__rjto$0) - ) - (call $h - (i32.const 1) - ) - ) - (call $h - (i32.const -1) - ) - (loop $while-in - (br_if $while-in - (i32.eqz - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - ) - (call $h - (i32.const 2) - ) - (call $h - (i32.const 3) - ) - (call $h - (i32.const -2) - ) - (block $__rjto$3 - (block $__rjti$3 - (block $__rjti$2 - (if - (local.get $0) - (block - (call $h - (i32.const 4) - ) - (br_if $__rjti$2 - (i32.eq - (local.get $0) - (i32.const 3) - ) - ) - (br $__rjti$3) - ) - ) - (br $__rjto$3) - ) - (call $h - (i32.const 5) - ) - (br $__rjto$3) - ) - (call $h - (i32.const 6) - ) - ) - (call $h - (i32.const -3) - ) - (block $__rjto$5 - (block $__rjti$5 - (block $__rjti$4 - (if - (local.get $0) - (block - (call $h - (i32.const 7) - ) - (br_if $__rjti$4 - (i32.eq - (local.get $0) - (i32.const 5) - ) - ) - (br $__rjti$5) - ) - ) - (br $__rjto$5) - ) - (call $h - (i32.const 8) - ) - (br_if $__rjti$5 - (i32.eq - (local.get $0) - (i32.const 6) - ) - ) - (br $__rjto$5) - ) - (call $h - (i32.const 9) - ) - ) - (call $h - (i32.const -4) - ) - (block $label$break$L1 - (block $__rjti$6 - (if - (local.get $0) - (block - (call $h - (i32.const 10) - ) - (br $__rjti$6) - ) - ) - (br $label$break$L1) - ) - (call $h - (i32.const 11) - ) - ) - (call $h - (i32.const -5) - ) - (block $label$break$L10 - (block $__rjti$8 - (block $__rjti$7 - (if - (local.get $0) - (block - (call $h - (i32.const 12) - ) - (br_if $__rjti$7 - (i32.eq - (local.get $0) - (i32.const 8) - ) - ) - (br $__rjti$8) - ) - ) - (br $label$break$L10) - ) - (call $h - (i32.const 13) - ) - (br_if $__rjti$8 - (local.get $0) - ) - (br $label$break$L10) - ) - (call $h - (i32.const 14) - ) - ) - (call $h - (i32.const -6) - ) - (local.get $0) - ) - (func $relooperJumpThreading__ZN4game14preloadweaponsEv (; 49 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) - (loop $while-in - (block $__rjti$1 - (if - (local.get $1) - (br_if $__rjti$1 - (i32.eqz - (local.get $2) - ) - ) - (br_if $__rjti$1 - (i32.eqz - (local.get $3) - ) - ) - ) - (br $while-in) - ) - (i32.store - (local.get $4) - (local.get $5) - ) - (br $while-in) - ) - ) - (func $relooperJumpThreading_irreducible (; 50 ;) (; has Stack IR ;) (param $0 i32) - (local $1 i32) - (if - (i32.eq - (local.get $0) - (i32.const 100) - ) - (loop $while-in - (call $relooperJumpThreading_irreducible - (i32.const 1337) - ) - (br $while-in) - ) - ) - (local.set $1 - (select - (i32.const 2) - (i32.const 10) - (i32.eq - (local.get $0) - (i32.const 200) - ) - ) - ) - (if - (i32.eq - (local.tee $1 - (select - (i32.const 2) - (local.get $1) - (i32.eq - (local.get $0) - (i32.const 300) - ) - ) - ) - (i32.const 2) - ) - (call $relooperJumpThreading_irreducible - (i32.const 1448) - ) - ) - (if - (i32.eq - (local.get $1) - (i32.const 10) - ) - (call $relooperJumpThreading_irreducible - (i32.const 2000) - ) - ) - ) - (func $__Z12multi_varargiz (; 51 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (if - (local.get $3) - (loop $while-in - (br_if $while-in - (i32.eqz - (local.get $2) - ) - ) - ) - (drop - (call $lb - (i32.const 1) - ) - ) - ) - ) - (func $jumpThreadDrop (; 52 ;) (; has Stack IR ;) (result i32) - (call $return_int) - ) - (func $dropIgnoredImportInIf (; 53 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) - (if - (local.get $0) - (drop - (call $lb - (local.get $2) - ) - ) - ) - ) - (func $dropIgnoredImportsInIf (; 54 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) - (drop - (if (result i32) - (local.get $0) - (call $lb - (local.get $1) - ) - (call $lb - (local.get $2) - ) - ) - ) - ) - (func $store_fround (; 55 ;) (; has Stack IR ;) (param $0 i32) - (f64.store - (i32.const 80) - (f64.promote_f32 - (f32.convert_i32_s - (local.get $0) - ) - ) - ) - ) - (func $relocatableAndModules (; 56 ;) (; has Stack IR ;) (result i32) - (call_indirect (type $none_=>_none) - (i32.const 10) - ) - (call_indirect (type $none_=>_none) - (i32.const 20) - ) - (call_indirect (type $f64_i32_=>_i32) - (f64.const 1.5) - (i32.const 200) - (i32.const 30) - ) - ) - (func $exported_f32_user (; 57 ;) (; has Stack IR ;) (param $0 i32) (param $1 f32) (param $2 f64) (result f32) - (local.get $1) - ) - (func $keepAlive (; 58 ;) (; has Stack IR ;) - (drop - (call $f64-to-int - (f64.const 100) - ) - ) - (drop - (call $f64-to-int - (f64.const 100) - ) - ) - (call_indirect (type $i32_=>_none) - (i32.const 0) - (i32.const 17) - ) - (call_indirect (type $i32_=>_none) - (i32.const 0) - (block (result i32) - (global.set $Int - (i32.const 1) - ) - (i32.const 17) - ) - ) - (call $emscripten_log) - (drop - (call $f64-to-int - (call $abort - (f64.const 0) - ) - ) - ) - (drop - (call $f64-to-int - (f64.sub - (f64.const 2.31) - (f64.mul - (call $f64-rem - (f64.const 9.78) - (f64.const 1) - ) - (f64.const 2.31) - ) - ) - ) - ) - (global.set $nonZero - (i32.add - (global.get $nonZero) - (i32.const 1) - ) - ) - ) - (func $vi (; 59 ;) (; has Stack IR ;) (param $0 i32) - (nop) - ) - (func $ii (; 60 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local.get $0) - ) -) diff -Nru binaryen-91/test/unit.fromasm.clamp binaryen-99/test/unit.fromasm.clamp --- binaryen-91/test/unit.fromasm.clamp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unit.fromasm.clamp 1970-01-01 00:00:00.000000000 +0000 @@ -1,1221 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $f32_=>_none (func (param f32))) - (type $none_=>_f64 (func (result f64))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32 i32))) - (type $i32_f32_=>_none (func (param i32 f32))) - (type $i32_f64_f32_=>_none (func (param i32 f64 f32))) - (type $f32_f64_=>_none (func (param f32 f64))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) - (type $none_=>_f32 (func (result f32))) - (type $i32_f32_f64_=>_f32 (func (param i32 f32 f64) (result f32))) - (type $f64_=>_f64 (func (param f64) (result f64))) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "unit.asm.js") - (import "env" "table" (table $table 25 25 funcref)) - (elem (global.get $__table_base) $big_negative $big_negative $big_negative $big_negative $w $w $importedDoubles $w $fr $cneg $fr $fr $fr $fr $fr $fr $vi $vi $vi $vi $vi $vi $vi $vi $ii) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "gb" (global $n$asm2wasm$import i32)) - (import "env" "setTempRet0" (func $setTempRet0 (param i32) (result i32))) - (import "env" "abort" (func $abort (param f64) (result f64))) - (import "env" "print" (func $print (param i32))) - (import "env" "h" (func $h (param i32))) - (import "env" "return_int" (func $return_int (result i32))) - (import "env" "emscripten_log" (func $emscripten_log)) - (import "asm2wasm" "f64-rem" (func $f64-rem (param f64 f64) (result f64))) - (global $Int (mut i32) (i32.const 0)) - (global $nonZero (mut i32) (i32.const 1337)) - (global $exportedNumber i32 (i32.const 42)) - (export "big_negative" (func $big_negative)) - (export "pick" (func $big_negative)) - (export "doubleCompares" (func $doubleCompares)) - (export "intOps" (func $intOps)) - (export "conversions" (func $conversions)) - (export "switcher" (func $switcher)) - (export "frem" (func $frem)) - (export "frem_float" (func $frem_float)) - (export "big_uint_div_u" (func $big_uint_div_u)) - (export "trapping_sint_div_s" (func $trapping_sint_div_s)) - (export "fr" (func $fr)) - (export "negZero" (func $negZero)) - (export "neg" (func $neg)) - (export "smallCompare" (func $smallCompare)) - (export "cneg_nosemicolon" (func $cneg_nosemicolon)) - (export "forLoop" (func $forLoop)) - (export "ceiling_32_64" (func $ceiling_32_64)) - (export "aborts" (func $aborts)) - (export "continues" (func $continues)) - (export "bitcasts" (func $bitcasts)) - (export "recursiveBlockMerging" (func $recursiveBlockMerging)) - (export "lb" (func $lb)) - (export "zeroInit" (func $zeroInit)) - (export "phi" (func $phi)) - (export "smallIf" (func $smallIf)) - (export "dropCall" (func $dropCall)) - (export "useGlobalSet" (func $useGlobalSet)) - (export "usesGlobalSet2" (func $usesGlobalSet2)) - (export "breakThroughMany" (func $breakThroughMany)) - (export "ifChainEmpty" (func $ifChainEmpty)) - (export "heap8NoShift" (func $heap8NoShift)) - (export "conditionalTypeFun" (func $conditionalTypeFun)) - (export "loadSigned" (func $loadSigned)) - (export "globalOpts" (func $globalOpts)) - (export "dropCallImport" (func $dropCallImport)) - (export "loophi" (func $loophi)) - (export "loophi2" (func $loophi2)) - (export "loophi2b" (func $loophi2b)) - (export "relooperJumpThreading" (func $relooperJumpThreading)) - (export "relooperJumpThreading__ZN4game14preloadweaponsEv" (func $relooperJumpThreading__ZN4game14preloadweaponsEv)) - (export "__Z12multi_varargiz" (func $__Z12multi_varargiz)) - (export "jumpThreadDrop" (func $jumpThreadDrop)) - (export "dropIgnoredImportInIf" (func $dropIgnoredImportInIf)) - (export "dropIgnoredImportsInIf" (func $dropIgnoredImportsInIf)) - (export "relooperJumpThreading_irreducible" (func $relooperJumpThreading_irreducible)) - (export "store_fround" (func $store_fround)) - (export "exportedNumber" (global $exportedNumber)) - (export "relocatableAndModules" (func $relocatableAndModules)) - (export "exported_f32_user" (func $exported_f32_user)) - (export "keepAlive" (func $keepAlive)) - (func $big_negative (; 7 ;) (; has Stack IR ;) - (nop) - ) - (func $importedDoubles (; 8 ;) (; has Stack IR ;) (result f64) - (if - (i32.gt_s - (global.get $Int) - (i32.const 0) - ) - (return - (f64.const -3.4) - ) - ) - (f64.const 1.2) - ) - (func $doubleCompares (; 9 ;) (; has Stack IR ;) (param $0 f64) (param $1 f64) (result f64) - (if - (f64.gt - (local.get $0) - (f64.const 0) - ) - (return - (f64.const 1.2) - ) - ) - (if - (f64.gt - (local.get $0) - (f64.const 0) - ) - (return - (f64.const -3.4) - ) - ) - (if - (i32.gt_s - (global.get $n$asm2wasm$import) - (i32.const 0) - ) - (return - (f64.const 5.6) - ) - ) - (if - (f64.lt - (local.get $0) - (local.get $1) - ) - (return - (local.get $0) - ) - ) - (local.get $1) - ) - (func $intOps (; 10 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (i32.eqz - (local.get $0) - ) - ) - (func $f64-to-int (; 11 ;) (; has Stack IR ;) (param $0 f64) (result i32) - (if (result i32) - (f64.ne - (local.get $0) - (local.get $0) - ) - (i32.const -2147483648) - (if (result i32) - (f64.ge - (local.get $0) - (f64.const 2147483648) - ) - (i32.const -2147483648) - (if (result i32) - (f64.le - (local.get $0) - (f64.const -2147483649) - ) - (i32.const -2147483648) - (i32.trunc_f64_s - (local.get $0) - ) - ) - ) - ) - ) - (func $f32-to-int (; 12 ;) (; has Stack IR ;) (param $0 f32) - (drop - (if (result i32) - (f32.ne - (local.get $0) - (local.get $0) - ) - (i32.const -2147483648) - (if (result i32) - (f32.ge - (local.get $0) - (f32.const 2147483648) - ) - (i32.const -2147483648) - (if (result i32) - (f32.le - (local.get $0) - (f32.const -2147483648) - ) - (i32.const -2147483648) - (i32.trunc_f32_s - (local.get $0) - ) - ) - ) - ) - ) - ) - (func $conversions (; 13 ;) (; has Stack IR ;) (param $0 i32) (param $1 f64) (param $2 f32) - (drop - (call $f64-to-int - (local.get $1) - ) - ) - (call $f32-to-int - (local.get $2) - ) - ) - (func $switcher (; 14 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (block $switch - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-case0 $switch - (i32.sub - (local.get $0) - (i32.const 1) - ) - ) - ) - (return - (i32.const 1) - ) - ) - (return - (i32.const 2) - ) - ) - (block $switch1 - (block $switch-case3 - (block $switch-case2 - (br_table $switch-case3 $switch1 $switch1 $switch1 $switch1 $switch1 $switch1 $switch-case2 $switch1 - (i32.sub - (local.get $0) - (i32.const 5) - ) - ) - ) - (return - (i32.const 121) - ) - ) - (return - (i32.const 51) - ) - ) - (loop $label$continue$L1 - (block $label$break$L1 - (loop $label$continue$L3 - (block $label$break$L3 - (br_table $label$break$L3 $label$break$L1 $label$break$L1 $label$break$L1 $label$break$L1 $label$break$L1 $label$continue$L3 $label$break$L1 - (i32.add - (local.get $0) - (i32.const -110) - ) - ) - ) - ) - (call $h - (i32.const 120) - ) - (br $label$continue$L1) - ) - ) - (i32.const 0) - ) - (func $frem (; 15 ;) (; has Stack IR ;) (result f64) - (call $f64-rem - (f64.const 5.5) - (f64.const 1.2) - ) - ) - (func $frem_float (; 16 ;) (; has Stack IR ;) (result f32) - (f32.demote_f64 - (call $f64-rem - (f64.const 5.5) - (f64.const 1.2000000476837158) - ) - ) - ) - (func $big_uint_div_u (; 17 ;) (; has Stack IR ;) (result i32) - (i32.const 2147483647) - ) - (func $trapping_sint_div_s (; 18 ;) (; has Stack IR ;) (result i32) - (i32.const 0) - ) - (func $fr (; 19 ;) (; has Stack IR ;) (param $0 f32) - (nop) - ) - (func $negZero (; 20 ;) (; has Stack IR ;) (result f64) - (f64.const -0) - ) - (func $neg (; 21 ;) (; has Stack IR ;) - (call_indirect (type $f32_=>_none) - (f32.const -0) - (i32.const 9) - ) - ) - (func $cneg (; 22 ;) (; has Stack IR ;) (param $0 f32) - (call_indirect (type $f32_=>_none) - (local.get $0) - (i32.const 9) - ) - ) - (func $smallCompare (; 23 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (i32.lt_u - (local.tee $0 - (select - (i32.add - (local.get $0) - (i32.const 1) - ) - (local.get $0) - (i32.lt_s - (local.get $0) - (local.get $1) - ) - ) - ) - (local.get $1) - ) - (i32.add - (local.get $0) - (i32.const 1) - ) - (local.get $0) - ) - ) - (func $cneg_nosemicolon (; 24 ;) (; has Stack IR ;) - (call_indirect (type $i32_=>_none) - (i32.const 1) - (i32.const 17) - ) - ) - (func $forLoop (; 25 ;) (; has Stack IR ;) - (local $0 i32) - (local.set $0 - (i32.const 1) - ) - (loop $for-in - (if - (i32.lt_s - (local.get $0) - (i32.const 200) - ) - (block - (call $h - (local.get $0) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (br $for-in) - ) - ) - ) - ) - (func $ceiling_32_64 (; 26 ;) (; has Stack IR ;) (param $0 f32) (param $1 f64) - (nop) - ) - (func $aborts (; 27 ;) (; has Stack IR ;) - (drop - (call $abort - (f64.const 0) - ) - ) - (drop - (call $abort - (f64.convert_i32_s - (i32.const 55) - ) - ) - ) - (drop - (call $abort - (f64.const 0) - ) - ) - (drop - (call $abort - (f64.const 12.34) - ) - ) - (drop - (call $abort - (f64.const 56.779998779296875) - ) - ) - ) - (func $continues (; 28 ;) (; has Stack IR ;) - (loop $while-in - (call $print - (i32.const 1) - ) - (loop $unlikely-continue - (call $print - (i32.const 5) - ) - (br_if $unlikely-continue - (call $return_int) - ) - ) - (call $print - (i32.const 2) - ) - (br $while-in) - ) - ) - (func $bitcasts (; 29 ;) (; has Stack IR ;) (param $0 i32) (param $1 f32) - (nop) - ) - (func $recursiveBlockMerging (; 30 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (drop - (call $lb - (i32.add - (local.get $0) - (i32.const 22) - ) - ) - ) - (drop - (call $lb - (i32.const 1) - ) - ) - (drop - (call $lb - (i32.const 2) - ) - ) - (i32.add - (i32.add - (i32.add - (call $lb - (i32.const 3) - ) - (local.get $0) - ) - (block (result i32) - (drop - (call $lb - (i32.const 4) - ) - ) - (drop - (call $lb - (i32.const 5) - ) - ) - (drop - (call $lb - (i32.const 6) - ) - ) - (call $lb - (i32.const 7) - ) - ) - ) - (block (result i32) - (drop - (call $lb - (i32.const 8) - ) - ) - (drop - (call $lb - (i32.const 9) - ) - ) - (drop - (call $lb - (i32.const 10) - ) - ) - (drop - (call $lb - (i32.const 11) - ) - ) - (call $lb - (i32.const 12) - ) - ) - ) - ) - (func $lb (; 31 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (i32.store - (local.get $0) - (i32.add - (global.get $n$asm2wasm$import) - (i32.const 144) - ) - ) - (i32.const 0) - ) - (func $zeroInit (; 32 ;) (; has Stack IR ;) (param $0 i32) - (local $1 i32) - (if - (i32.eq - (if (result i32) - (call $lb - (i32.const 0) - ) - (if (result i32) - (call $lb - (i32.const 1) - ) - (i32.const 3) - (local.get $1) - ) - (i32.const 3) - ) - (i32.const 3) - ) - (drop - (call $lb - (i32.const 2) - ) - ) - ) - ) - (func $phi (; 33 ;) (; has Stack IR ;) (result i32) - (block $do-once (result i32) - (drop - (br_if $do-once - (i32.const 0) - (call $lb - (i32.const 1) - ) - ) - ) - (i32.const 1) - ) - ) - (func $smallIf (; 34 ;) (; has Stack IR ;) - (if - (call $return_int) - (drop - (call $lb - (i32.const 3) - ) - ) - ) - ) - (func $dropCall (; 35 ;) (; has Stack IR ;) (result i32) - (if - (call $return_int) - (block - (drop - (call $phi) - ) - (drop - (call $setTempRet0 - (i32.const 10) - ) - ) - (call $zeroInit - (call $setTempRet0 - (i32.const 10) - ) - ) - ) - ) - (call $phi) - ) - (func $useGlobalSet (; 36 ;) (; has Stack IR ;) (result i32) - (global.set $Int - (i32.const 10) - ) - (global.set $Int - (i32.const 20) - ) - (global.set $Int - (i32.const 30) - ) - (i32.const 30) - ) - (func $usesGlobalSet2 (; 37 ;) (; has Stack IR ;) (result i32) - (global.set $Int - (i32.const 40) - ) - (i32.const 50) - ) - (func $breakThroughMany (; 38 ;) (; has Stack IR ;) (param $0 i32) - (if - (local.get $0) - (loop $while-in - (if - (local.get $0) - (block - (call $zeroInit - (i32.const 0) - ) - (br $while-in) - ) - ) - ) - ) - ) - (func $ifChainEmpty (; 39 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (if - (i32.eq - (local.get $0) - (i32.const 4) - ) - (return - (i32.const 0) - ) - ) - (i32.const 0) - ) - (func $heap8NoShift (; 40 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (i32.load8_s - (local.get $0) - ) - ) - (func $conditionalTypeFun (; 41 ;) (; has Stack IR ;) - (drop - (if (result i32) - (call $return_int) - (call $f64-to-int - (call $abort - (f64.convert_i32_s - (i32.const 5) - ) - ) - ) - (i32.const 2) - ) - ) - (drop - (if (result f64) - (call $return_int) - (call $abort - (f64.convert_i32_s - (i32.const 7) - ) - ) - (f64.const 4.5) - ) - ) - ) - (func $loadSigned (; 42 ;) (; has Stack IR ;) (param $0 i32) - (call $loadSigned - (i32.load8_s - (local.get $0) - ) - ) - (call $loadSigned - (i32.load8_s - (local.get $0) - ) - ) - (call $loadSigned - (i32.load16_s - (local.get $0) - ) - ) - (call $loadSigned - (i32.load16_s - (local.get $0) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load8_s - (local.get $0) - ) - (i32.const 24) - ) - (i32.const 16) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load8_u - (local.get $0) - ) - (i32.const 16) - ) - (i32.const 24) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load16_s - (local.get $0) - ) - (i32.const 16) - ) - (i32.const 24) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load16_u - (local.get $0) - ) - (i32.const 24) - ) - (i32.const 16) - ) - ) - ) - (func $w (; 43 ;) (; has Stack IR ;) (result f64) - (f64.const 0) - ) - (func $globalOpts (; 44 ;) (; has Stack IR ;) - (local $0 i32) - (i32.store8 - (i32.const 13) - (i32.load - (i32.const 12) - ) - ) - (call $globalOpts) - (local.set $0 - (global.get $Int) - ) - (if - (call $return_int) - (global.set $Int - (i32.const 20) - ) - ) - (global.set $Int - (local.get $0) - ) - (call $globalOpts) - (local.set $0 - (global.get $Int) - ) - (call $globalOpts) - (global.set $Int - (local.get $0) - ) - ) - (func $dropCallImport (; 45 ;) (; has Stack IR ;) - (if - (call $return_int) - (drop - (call $return_int) - ) - ) - ) - (func $loophi (; 46 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (loop $while-in - (block $while-out - (call $loophi - (local.get $0) - (i32.const 0) - ) - (br_if $while-out - (select - (local.get $0) - (i32.const 0) - (local.get $0) - ) - ) - (br_if $while-in - (i32.eq - (local.get $1) - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - ) - ) - ) - (func $loophi2 (; 47 ;) (; has Stack IR ;) (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (loop $label$continue$L7 - (block $label$break$L7 - (local.set $0 - (i32.const 0) - ) - (loop $while-in - (local.set $2 - (local.get $0) - ) - (br_if $label$break$L7 - (select - (call $return_int) - (i32.const 0) - (local.get $2) - ) - ) - (br_if $while-in - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (br $label$continue$L7) - ) - ) - (local.get $1) - ) - (func $loophi2b (; 48 ;) (; has Stack IR ;) (result i32) - (local $0 i32) - (local $1 i32) - (loop $label$continue$L7 - (block $label$break$L7 - (local.set $0 - (i32.const 0) - ) - (loop $while-in - (local.set $1 - (local.get $0) - ) - (br_if $label$break$L7 - (select - (call $return_int) - (i32.const 0) - (local.get $1) - ) - ) - (br_if $while-in - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (br $label$continue$L7) - ) - ) - (local.get $0) - ) - (func $relooperJumpThreading (; 49 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (block $__rjto$0 - (block $__rjti$0 - (if - (local.get $0) - (block - (call $h - (i32.const 0) - ) - (br $__rjti$0) - ) - ) - (br $__rjto$0) - ) - (call $h - (i32.const 1) - ) - ) - (call $h - (i32.const -1) - ) - (loop $while-in - (br_if $while-in - (i32.eqz - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - ) - (call $h - (i32.const 2) - ) - (call $h - (i32.const 3) - ) - (call $h - (i32.const -2) - ) - (block $__rjto$3 - (block $__rjti$3 - (block $__rjti$2 - (if - (local.get $0) - (block - (call $h - (i32.const 4) - ) - (br_if $__rjti$2 - (i32.eq - (local.get $0) - (i32.const 3) - ) - ) - (br $__rjti$3) - ) - ) - (br $__rjto$3) - ) - (call $h - (i32.const 5) - ) - (br $__rjto$3) - ) - (call $h - (i32.const 6) - ) - ) - (call $h - (i32.const -3) - ) - (block $__rjto$5 - (block $__rjti$5 - (block $__rjti$4 - (if - (local.get $0) - (block - (call $h - (i32.const 7) - ) - (br_if $__rjti$4 - (i32.eq - (local.get $0) - (i32.const 5) - ) - ) - (br $__rjti$5) - ) - ) - (br $__rjto$5) - ) - (call $h - (i32.const 8) - ) - (br_if $__rjti$5 - (i32.eq - (local.get $0) - (i32.const 6) - ) - ) - (br $__rjto$5) - ) - (call $h - (i32.const 9) - ) - ) - (call $h - (i32.const -4) - ) - (block $label$break$L1 - (block $__rjti$6 - (if - (local.get $0) - (block - (call $h - (i32.const 10) - ) - (br $__rjti$6) - ) - ) - (br $label$break$L1) - ) - (call $h - (i32.const 11) - ) - ) - (call $h - (i32.const -5) - ) - (block $label$break$L10 - (block $__rjti$8 - (block $__rjti$7 - (if - (local.get $0) - (block - (call $h - (i32.const 12) - ) - (br_if $__rjti$7 - (i32.eq - (local.get $0) - (i32.const 8) - ) - ) - (br $__rjti$8) - ) - ) - (br $label$break$L10) - ) - (call $h - (i32.const 13) - ) - (br_if $__rjti$8 - (local.get $0) - ) - (br $label$break$L10) - ) - (call $h - (i32.const 14) - ) - ) - (call $h - (i32.const -6) - ) - (local.get $0) - ) - (func $relooperJumpThreading__ZN4game14preloadweaponsEv (; 50 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) - (loop $while-in - (block $__rjti$1 - (if - (local.get $1) - (br_if $__rjti$1 - (i32.eqz - (local.get $2) - ) - ) - (br_if $__rjti$1 - (i32.eqz - (local.get $3) - ) - ) - ) - (br $while-in) - ) - (i32.store - (local.get $4) - (local.get $5) - ) - (br $while-in) - ) - ) - (func $relooperJumpThreading_irreducible (; 51 ;) (; has Stack IR ;) (param $0 i32) - (local $1 i32) - (if - (i32.eq - (local.get $0) - (i32.const 100) - ) - (loop $while-in - (call $relooperJumpThreading_irreducible - (i32.const 1337) - ) - (br $while-in) - ) - ) - (local.set $1 - (select - (i32.const 2) - (i32.const 10) - (i32.eq - (local.get $0) - (i32.const 200) - ) - ) - ) - (if - (i32.eq - (local.tee $1 - (select - (i32.const 2) - (local.get $1) - (i32.eq - (local.get $0) - (i32.const 300) - ) - ) - ) - (i32.const 2) - ) - (call $relooperJumpThreading_irreducible - (i32.const 1448) - ) - ) - (if - (i32.eq - (local.get $1) - (i32.const 10) - ) - (call $relooperJumpThreading_irreducible - (i32.const 2000) - ) - ) - ) - (func $__Z12multi_varargiz (; 52 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (if - (local.get $3) - (loop $while-in - (br_if $while-in - (i32.eqz - (local.get $2) - ) - ) - ) - (drop - (call $lb - (i32.const 1) - ) - ) - ) - ) - (func $jumpThreadDrop (; 53 ;) (; has Stack IR ;) (result i32) - (call $return_int) - ) - (func $dropIgnoredImportInIf (; 54 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) - (if - (local.get $0) - (drop - (call $lb - (local.get $2) - ) - ) - ) - ) - (func $dropIgnoredImportsInIf (; 55 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) - (drop - (if (result i32) - (local.get $0) - (call $lb - (local.get $1) - ) - (call $lb - (local.get $2) - ) - ) - ) - ) - (func $store_fround (; 56 ;) (; has Stack IR ;) (param $0 i32) - (f64.store - (i32.const 80) - (f64.promote_f32 - (f32.convert_i32_s - (local.get $0) - ) - ) - ) - ) - (func $relocatableAndModules (; 57 ;) (; has Stack IR ;) (result i32) - (call_indirect (type $none_=>_none) - (i32.const 10) - ) - (call_indirect (type $none_=>_none) - (i32.const 20) - ) - (call_indirect (type $f64_i32_=>_i32) - (f64.const 1.5) - (i32.const 200) - (i32.const 30) - ) - ) - (func $exported_f32_user (; 58 ;) (; has Stack IR ;) (param $0 i32) (param $1 f32) (param $2 f64) (result f32) - (local.get $1) - ) - (func $keepAlive (; 59 ;) (; has Stack IR ;) - (drop - (call $f64-to-int - (f64.const 100) - ) - ) - (call_indirect (type $i32_=>_none) - (i32.const 0) - (i32.const 17) - ) - (call_indirect (type $i32_=>_none) - (i32.const 0) - (block (result i32) - (global.set $Int - (i32.const 1) - ) - (i32.const 17) - ) - ) - (call $emscripten_log) - (drop - (call $f64-to-int - (call $abort - (f64.const 0) - ) - ) - ) - (drop - (call $f64-to-int - (f64.sub - (f64.const 2.31) - (f64.mul - (call $f64-rem - (f64.const 9.78) - (f64.const 1) - ) - (f64.const 2.31) - ) - ) - ) - ) - (global.set $nonZero - (i32.add - (global.get $nonZero) - (i32.const 1) - ) - ) - ) - (func $vi (; 60 ;) (; has Stack IR ;) (param $0 i32) - (nop) - ) - (func $ii (; 61 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local.get $0) - ) -) diff -Nru binaryen-91/test/unit.fromasm.clamp.no-opts binaryen-99/test/unit.fromasm.clamp.no-opts --- binaryen-91/test/unit.fromasm.clamp.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unit.fromasm.clamp.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,2252 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $f32_=>_none (func (param f32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $none_=>_f64 (func (result f64))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_f32 (func (result f32))) - (type $i32_=>_f32 (func (param i32) (result f32))) - (type $f64_=>_f64 (func (param f64) (result f64))) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32 i32))) - (type $i32_f32_=>_none (func (param i32 f32))) - (type $i32_f64_f32_=>_none (func (param i32 f64 f32))) - (type $f32_f64_=>_none (func (param f32 f64))) - (type $f32_=>_i32 (func (param f32) (result i32))) - (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) - (type $f64_f64_f64_=>_i32 (func (param f64 f64 f64) (result i32))) - (type $i32_f32_f64_=>_f32 (func (param i32 f32 f64) (result f32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 25 25 funcref)) - (elem (global.get $__table_base) $v $big_negative $v $v $w $w $importedDoubles $w $z $cneg $z $z $z $z $z $z $vi $vi $vi $vi $vi $vi $vi $vi $ii) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "global" "NaN" (global $t$asm2wasm$import f64)) - (import "global" "Infinity" (global $u$asm2wasm$import f64)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) - (import "env" "gb" (global $n$asm2wasm$import i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "setTempRet0" (func $setTempRet0 (param i32) (result i32))) - (import "env" "abort" (func $abort (param f64) (result f64))) - (import "env" "print" (func $print (param i32))) - (import "env" "h" (func $h (param i32))) - (import "env" "return_int" (func $return_int (result i32))) - (import "env" "emscripten_log" (func $emscripten_log)) - (import "asm2wasm" "f64-rem" (func $f64-rem (param f64 f64) (result f64))) - (global $t (mut f64) (global.get $t$asm2wasm$import)) - (global $u (mut f64) (global.get $u$asm2wasm$import)) - (global $Int (mut i32) (i32.const 0)) - (global $Double (mut f64) (f64.const 0)) - (global $tempDoublePtr (mut i32) (global.get $tempDoublePtr$asm2wasm$import)) - (global $n (mut i32) (global.get $n$asm2wasm$import)) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (global $nonZero (mut i32) (i32.const 1337)) - (global $exportedNumber i32 (i32.const 42)) - (export "big_negative" (func $big_negative)) - (export "pick" (func $exportMe)) - (export "doubleCompares" (func $doubleCompares)) - (export "intOps" (func $intOps)) - (export "conversions" (func $conversions)) - (export "switcher" (func $switcher)) - (export "frem" (func $frem)) - (export "frem_float" (func $frem_float)) - (export "big_uint_div_u" (func $big_uint_div_u)) - (export "trapping_sint_div_s" (func $trapping_sint_div_s)) - (export "fr" (func $fr)) - (export "negZero" (func $negZero)) - (export "neg" (func $neg)) - (export "smallCompare" (func $smallCompare)) - (export "cneg_nosemicolon" (func $cneg_nosemicolon)) - (export "forLoop" (func $forLoop)) - (export "ceiling_32_64" (func $ceiling_32_64)) - (export "aborts" (func $aborts)) - (export "continues" (func $continues)) - (export "bitcasts" (func $bitcasts)) - (export "recursiveBlockMerging" (func $recursiveBlockMerging)) - (export "lb" (func $lb)) - (export "zeroInit" (func $zeroInit)) - (export "phi" (func $phi)) - (export "smallIf" (func $smallIf)) - (export "dropCall" (func $dropCall)) - (export "useGlobalSet" (func $useGlobalSet)) - (export "usesGlobalSet2" (func $usesGlobalSet2)) - (export "breakThroughMany" (func $breakThroughMany)) - (export "ifChainEmpty" (func $ifChainEmpty)) - (export "heap8NoShift" (func $heap8NoShift)) - (export "conditionalTypeFun" (func $conditionalTypeFun)) - (export "loadSigned" (func $loadSigned)) - (export "globalOpts" (func $globalOpts)) - (export "dropCallImport" (func $dropCallImport)) - (export "loophi" (func $loophi)) - (export "loophi2" (func $loophi2)) - (export "loophi2b" (func $loophi2b)) - (export "relooperJumpThreading" (func $relooperJumpThreading)) - (export "relooperJumpThreading__ZN4game14preloadweaponsEv" (func $relooperJumpThreading__ZN4game14preloadweaponsEv)) - (export "__Z12multi_varargiz" (func $__Z12multi_varargiz)) - (export "jumpThreadDrop" (func $jumpThreadDrop)) - (export "dropIgnoredImportInIf" (func $dropIgnoredImportInIf)) - (export "dropIgnoredImportsInIf" (func $dropIgnoredImportsInIf)) - (export "relooperJumpThreading_irreducible" (func $relooperJumpThreading_irreducible)) - (export "store_fround" (func $store_fround)) - (export "exportedNumber" (global $exportedNumber)) - (export "relocatableAndModules" (func $relocatableAndModules)) - (export "exported_f32_user" (func $exported_f32_user)) - (export "keepAlive" (func $keepAlive)) - (func $big_negative (; 7 ;) - (local $temp f64) - (local.set $temp - (f64.const -2147483648) - ) - (local.set $temp - (f64.const -2147483648) - ) - (local.set $temp - (f64.const -21474836480) - ) - (local.set $temp - (f64.const 0.039625) - ) - (local.set $temp - (f64.const -0.039625) - ) - ) - (func $importedDoubles (; 8 ;) (result f64) - (local $temp f64) - (local.set $temp - (f64.add - (f64.add - (f64.add - (global.get $t) - (global.get $u) - ) - (f64.neg - (global.get $u) - ) - ) - (f64.neg - (global.get $t) - ) - ) - ) - (if - (i32.gt_s - (global.get $Int) - (i32.const 0) - ) - (return - (f64.const -3.4) - ) - ) - (if - (f64.gt - (global.get $Double) - (f64.const 0) - ) - (return - (f64.const 5.6) - ) - ) - (return - (f64.const 1.2) - ) - ) - (func $doubleCompares (; 9 ;) (param $x f64) (param $y f64) (result f64) - (local $t f64) - (local $Int f64) - (local $Double i32) - (if - (f64.gt - (local.get $x) - (f64.const 0) - ) - (return - (f64.const 1.2) - ) - ) - (local.set $Int - (local.get $x) - ) - (local.set $Double - (global.get $n) - ) - (if - (f64.gt - (local.get $Int) - (f64.const 0) - ) - (return - (f64.const -3.4) - ) - ) - (if - (i32.gt_s - (local.get $Double) - (i32.const 0) - ) - (return - (f64.const 5.6) - ) - ) - (if - (f64.lt - (local.get $x) - (local.get $y) - ) - (return - (local.get $x) - ) - ) - (return - (local.get $y) - ) - ) - (func $intOps (; 10 ;) (param $x i32) (result i32) - (return - (i32.eqz - (local.get $x) - ) - ) - ) - (func $hexLiterals (; 11 ;) - (local $i i32) - (local.set $i - (i32.add - (i32.add - (i32.const 0) - (i32.const 313249263) - ) - (i32.const -19088752) - ) - ) - ) - (func $f64-to-int (; 12 ;) (param $0 f64) (result i32) - (if (result i32) - (f64.ne - (local.get $0) - (local.get $0) - ) - (i32.const -2147483648) - (if (result i32) - (f64.ge - (local.get $0) - (f64.const 2147483648) - ) - (i32.const -2147483648) - (if (result i32) - (f64.le - (local.get $0) - (f64.const -2147483649) - ) - (i32.const -2147483648) - (i32.trunc_f64_s - (local.get $0) - ) - ) - ) - ) - ) - (func $f32-to-int (; 13 ;) (param $0 f32) (result i32) - (if (result i32) - (f32.ne - (local.get $0) - (local.get $0) - ) - (i32.const -2147483648) - (if (result i32) - (f32.ge - (local.get $0) - (f32.const 2147483648) - ) - (i32.const -2147483648) - (if (result i32) - (f32.le - (local.get $0) - (f32.const -2147483648) - ) - (i32.const -2147483648) - (i32.trunc_f32_s - (local.get $0) - ) - ) - ) - ) - ) - (func $conversions (; 14 ;) (param $i i32) (param $d f64) (param $f f32) - (local.set $i - (call $f64-to-int - (local.get $d) - ) - ) - (local.set $i - (call $f32-to-int - (local.get $f) - ) - ) - (local.set $d - (f64.convert_i32_s - (local.get $i) - ) - ) - (local.set $d - (f64.convert_i32_u - (local.get $i) - ) - ) - ) - (func $seq (; 15 ;) - (local $J f64) - (local.set $J - (f64.sub - (block (result f64) - (drop - (f64.const 0.1) - ) - (f64.const 5.1) - ) - (block (result f64) - (drop - (f64.const 3.2) - ) - (f64.const 4.2) - ) - ) - ) - ) - (func $switcher (; 16 ;) (param $x i32) (result i32) - (local $waka i32) - (block $switch - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-case0 $switch - (i32.sub - (local.get $x) - (i32.const 1) - ) - ) - ) - (return - (i32.const 1) - ) - ) - (return - (i32.const 2) - ) - ) - (block $switch1 - (block $switch-case3 - (block $switch-case2 - (br_table $switch-case3 $switch1 $switch1 $switch1 $switch1 $switch1 $switch1 $switch-case2 $switch1 - (i32.sub - (local.get $x) - (i32.const 5) - ) - ) - ) - (return - (i32.const 121) - ) - ) - (return - (i32.const 51) - ) - ) - (block $label$break$Lout - (block $switch-case9 - (block $switch-case6 - (block $switch-case5 - (block $switch-case4 - (br_table $switch-case9 $label$break$Lout $label$break$Lout $switch-case6 $label$break$Lout $label$break$Lout $label$break$Lout $label$break$Lout $switch-case5 $label$break$Lout $switch-case4 $label$break$Lout - (i32.sub - (local.get $x) - (i32.const 2) - ) - ) - ) - (br $label$break$Lout) - ) - (br $label$break$Lout) - ) - (block - (loop $while-in - (block $while-out - (br $while-out) - (br $while-in) - ) - ) - (br $label$break$Lout) - ) - ) - (block - (loop $while-in8 - (block $while-out7 - (br $label$break$Lout) - (br $while-in8) - ) - ) - (br $label$break$Lout) - ) - ) - (loop $label$continue$L1 - (block $label$break$L1 - (loop $label$continue$L3 - (block $label$break$L3 - (block $switch10 - (block $switch-default - (block $switch-case13 - (block $switch-case12 - (block $switch-case11 - (br_table $switch-case11 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case13 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case12 $switch-default - (i32.sub - (local.get $x) - (i32.const -1) - ) - ) - ) - (block - (br $label$break$L1) - (br $switch10) - ) - ) - (block - (local.set $waka - (i32.const 1) - ) - (br $switch10) - ) - ) - (block - (br $label$break$L3) - (br $switch10) - ) - ) - (br $label$break$L1) - ) - (br $label$continue$L3) - ) - ) - (call $h - (i32.const 120) - ) - (br $label$continue$L1) - ) - ) - (return - (i32.const 0) - ) - ) - (func $blocker (; 17 ;) - (block $label$break$L - (br $label$break$L) - ) - ) - (func $frem (; 18 ;) (result f64) - (return - (call $f64-rem - (f64.const 5.5) - (f64.const 1.2) - ) - ) - ) - (func $frem_float (; 19 ;) (result f32) - (return - (f32.demote_f64 - (call $f64-rem - (f64.promote_f32 - (f32.const 5.5) - ) - (f64.promote_f32 - (f32.const 1.2000000476837158) - ) - ) - ) - ) - ) - (func $i32u-div (; 20 ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (i32.eqz - (local.get $1) - ) - (i32.const 0) - (i32.div_u - (local.get $0) - (local.get $1) - ) - ) - ) - (func $big_uint_div_u (; 21 ;) (result i32) - (local $x i32) - (local.set $x - (i32.and - (call $i32u-div - (i32.const -1) - (i32.const 2) - ) - (i32.const -1) - ) - ) - (return - (local.get $x) - ) - ) - (func $i32s-div (; 22 ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (i32.eqz - (local.get $1) - ) - (i32.const 0) - (if (result i32) - (i32.and - (i32.eq - (local.get $0) - (i32.const -2147483648) - ) - (i32.eq - (local.get $1) - (i32.const -1) - ) - ) - (i32.const 0) - (i32.div_s - (local.get $0) - (local.get $1) - ) - ) - ) - ) - (func $trapping_sint_div_s (; 23 ;) (result i32) - (local $x i32) - (local.set $x - (call $i32s-div - (i32.const -2147483648) - (i32.const -1) - ) - ) - (return - (local.get $x) - ) - ) - (func $fr (; 24 ;) (param $x f32) - (local $y f32) - (local $z f64) - (drop - (f32.demote_f64 - (local.get $z) - ) - ) - (drop - (local.get $y) - ) - (drop - (f32.const 5) - ) - (drop - (f32.const 0) - ) - (drop - (f32.const 5) - ) - (drop - (f32.const 0) - ) - ) - (func $negZero (; 25 ;) (result f64) - (return - (f64.const -0) - ) - ) - (func $abs (; 26 ;) - (local $x i32) - (local $y f64) - (local $z f32) - (local $asm2wasm_i32_temp i32) - (local.set $x - (block (result i32) - (local.set $asm2wasm_i32_temp - (i32.const 0) - ) - (select - (i32.sub - (i32.const 0) - (local.get $asm2wasm_i32_temp) - ) - (local.get $asm2wasm_i32_temp) - (i32.lt_s - (local.get $asm2wasm_i32_temp) - (i32.const 0) - ) - ) - ) - ) - (local.set $y - (f64.abs - (f64.const 0) - ) - ) - (local.set $z - (f32.abs - (f32.const 0) - ) - ) - ) - (func $minmax (; 27 ;) - (local $x f64) - (local $y f64) - (local $z f32) - (local $w f32) - (local.set $x - (f64.min - (local.get $x) - (local.get $y) - ) - ) - (local.set $y - (f64.max - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (f32.min - (local.get $z) - (local.get $w) - ) - ) - (local.set $w - (f32.max - (local.get $z) - (local.get $w) - ) - ) - ) - (func $neg (; 28 ;) - (local $x f32) - (local.set $x - (f32.neg - (local.get $x) - ) - ) - (call_indirect (type $f32_=>_none) - (local.get $x) - (i32.add - (i32.and - (i32.const 1) - (i32.const 7) - ) - (i32.const 8) - ) - ) - ) - (func $cneg (; 29 ;) (param $x f32) - (call_indirect (type $f32_=>_none) - (local.get $x) - (i32.add - (i32.and - (i32.const 1) - (i32.const 7) - ) - (i32.const 8) - ) - ) - ) - (func $___syscall_ret (; 30 ;) - (local $$0 i32) - (drop - (i32.gt_u - (local.get $$0) - (i32.const -4096) - ) - ) - ) - (func $smallCompare (; 31 ;) (param $i i32) (param $j i32) (result i32) - (if - (i32.lt_s - (local.get $i) - (local.get $j) - ) - (local.set $i - (i32.add - (local.get $i) - (i32.const 1) - ) - ) - ) - (if - (i32.lt_u - (local.get $i) - (local.get $j) - ) - (local.set $i - (i32.add - (local.get $i) - (i32.const 1) - ) - ) - ) - (return - (local.get $i) - ) - ) - (func $cneg_nosemicolon (; 32 ;) - (call_indirect (type $i32_=>_none) - (i32.const 1) - (i32.add - (i32.and - (i32.const 1) - (i32.const 7) - ) - (i32.const 16) - ) - ) - ) - (func $forLoop (; 33 ;) - (local $i i32) - (local.set $i - (i32.const 1) - ) - (loop $for-in - (block $for-out - (if - (i32.eqz - (i32.lt_s - (local.get $i) - (i32.const 200) - ) - ) - (br $for-out) - ) - (call $h - (local.get $i) - ) - (local.set $i - (i32.add - (local.get $i) - (i32.const 1) - ) - ) - (br $for-in) - ) - ) - ) - (func $ceiling_32_64 (; 34 ;) (param $u f32) (param $B f64) - (local $temp f32) - (local.set $temp - (f32.demote_f64 - (f64.ceil - (local.get $B) - ) - ) - ) - (local.set $temp - (f32.mul - (local.get $u) - (f32.ceil - (f32.demote_f64 - (local.get $B) - ) - ) - ) - ) - ) - (func $aborts (; 35 ;) - (drop - (call $abort - (f64.const 0) - ) - ) - (drop - (call $abort - (f64.convert_i32_s - (i32.const 55) - ) - ) - ) - (drop - (call $abort - (f64.const 0) - ) - ) - (drop - (call $abort - (f64.const 12.34) - ) - ) - (drop - (call $abort - (f64.promote_f32 - (f32.const 56.779998779296875) - ) - ) - ) - ) - (func $continues (; 36 ;) - (loop $while-in - (block $while-out - (call $print - (i32.const 1) - ) - (block $do-once - (loop $unlikely-continue - (call $print - (i32.const 5) - ) - (if - (call $return_int) - (br $unlikely-continue) - ) - ) - ) - (call $print - (i32.const 2) - ) - (br $while-in) - ) - ) - ) - (func $bitcasts (; 37 ;) (param $i i32) (param $f f32) - (local $d f64) - (drop - (f32.reinterpret_i32 - (local.get $i) - ) - ) - (drop - (f64.promote_f32 - (f32.reinterpret_i32 - (local.get $i) - ) - ) - ) - (drop - (i32.reinterpret_f32 - (local.get $f) - ) - ) - (drop - (i32.reinterpret_f32 - (f32.demote_f64 - (local.get $d) - ) - ) - ) - ) - (func $recursiveBlockMerging (; 38 ;) (param $x i32) (result i32) - (drop - (call $lb - (i32.add - (i32.add - (i32.add - (block (result i32) - (drop - (i32.const 1) - ) - (local.get $x) - ) - (block (result i32) - (drop - (i32.const 2) - ) - (i32.const 3) - ) - ) - (block (result i32) - (block - (block - (drop - (i32.const 4) - ) - (drop - (i32.const 5) - ) - ) - (drop - (i32.const 6) - ) - ) - (i32.const 7) - ) - ) - (block (result i32) - (drop - (i32.const 8) - ) - (block (result i32) - (drop - (i32.const 9) - ) - (block (result i32) - (drop - (i32.const 10) - ) - (block (result i32) - (drop - (i32.const 11) - ) - (i32.const 12) - ) - ) - ) - ) - ) - ) - ) - (local.set $x - (i32.add - (i32.add - (i32.add - (block (result i32) - (drop - (call $lb - (i32.const 1) - ) - ) - (local.get $x) - ) - (block (result i32) - (drop - (call $lb - (i32.const 2) - ) - ) - (call $lb - (i32.const 3) - ) - ) - ) - (block (result i32) - (block - (block - (drop - (call $lb - (i32.const 4) - ) - ) - (drop - (call $lb - (i32.const 5) - ) - ) - ) - (drop - (call $lb - (i32.const 6) - ) - ) - ) - (call $lb - (i32.const 7) - ) - ) - ) - (block (result i32) - (drop - (call $lb - (i32.const 8) - ) - ) - (block (result i32) - (drop - (call $lb - (i32.const 9) - ) - ) - (block (result i32) - (drop - (call $lb - (i32.const 10) - ) - ) - (block (result i32) - (drop - (call $lb - (i32.const 11) - ) - ) - (call $lb - (i32.const 12) - ) - ) - ) - ) - ) - ) - ) - (return - (local.get $x) - ) - ) - (func $lb (; 39 ;) (param $a i32) (result i32) - (i32.store - (local.get $a) - (i32.add - (i32.add - (global.get $n) - (i32.const 136) - ) - (i32.const 8) - ) - ) - (return - (i32.const 0) - ) - ) - (func $forgetMe (; 40 ;) - (drop - (f64.const 123.456) - ) - ) - (func $exportMe (; 41 ;) - (drop - (f64.const -3.14159) - ) - ) - (func $zeroInit (; 42 ;) (param $x i32) - (local $y i32) - (if - (call $lb - (i32.const 0) - ) - (if - (call $lb - (i32.const 1) - ) - (local.set $y - (i32.const 3) - ) - ) - (local.set $y - (i32.const 3) - ) - ) - (if - (i32.eq - (local.get $y) - (i32.const 3) - ) - (drop - (call $lb - (i32.const 2) - ) - ) - ) - ) - (func $phi (; 43 ;) (result i32) - (local $x i32) - (block $do-once - (block - (if - (call $lb - (i32.const 1) - ) - (block - (local.set $x - (i32.const 0) - ) - (br $do-once) - ) - ) - (local.set $x - (i32.const 1) - ) - ) - ) - (return - (local.get $x) - ) - ) - (func $smallIf (; 44 ;) - (block $do-once - (if - (call $return_int) - (drop - (call $lb - (i32.const 3) - ) - ) - (br $do-once) - ) - (nop) - ) - ) - (func $dropCall (; 45 ;) (result i32) - (if - (call $return_int) - (block - (drop - (call $phi) - ) - (drop - (call $setTempRet0 - (i32.const 10) - ) - ) - (call $zeroInit - (call $setTempRet0 - (i32.const 10) - ) - ) - ) - ) - (return - (call $phi) - ) - ) - (func $useGlobalSet (; 46 ;) (result i32) - (local $x i32) - (local.set $x - (block (result i32) - (global.set $Int - (i32.const 10) - ) - (global.get $Int) - ) - ) - (global.set $Int - (i32.const 20) - ) - (return - (block (result i32) - (global.set $Int - (i32.const 30) - ) - (global.get $Int) - ) - ) - ) - (func $usesGlobalSet2 (; 47 ;) (result i32) - (return - (block (result i32) - (block - (global.set $Int - (i32.const 40) - ) - (drop - (global.get $Int) - ) - ) - (i32.const 50) - ) - ) - ) - (func $breakThroughMany (; 48 ;) (param $$s i32) - (block $label$break$L1 - (if - (local.get $$s) - (loop $while-in - (block $while-out - (if - (i32.eqz - (local.get $$s) - ) - (br $label$break$L1) - ) - (call $zeroInit - (i32.const 0) - ) - (br $while-in) - ) - ) - (drop - (i32.const 1337) - ) - ) - (nop) - ) - ) - (func $ifChainEmpty (; 49 ;) (param $label i32) (result i32) - (if - (i32.eq - (local.get $label) - (i32.const 4) - ) - (return - (i32.const 0) - ) - (if - (i32.eq - (local.get $label) - (i32.const 7) - ) - (nop) - ) - ) - (return - (i32.const 0) - ) - ) - (func $heap8NoShift (; 50 ;) (param $x i32) (result i32) - (return - (i32.load8_s - (local.get $x) - ) - ) - ) - (func $conditionalTypeFun (; 51 ;) - (local $x i32) - (local $y f64) - (local.set $x - (if (result i32) - (call $return_int) - (call $f64-to-int - (call $abort - (f64.convert_i32_s - (i32.const 5) - ) - ) - ) - (i32.const 2) - ) - ) - (local.set $y - (if (result f64) - (call $return_int) - (call $abort - (f64.convert_i32_s - (i32.const 7) - ) - ) - (f64.const 4.5) - ) - ) - ) - (func $loadSigned (; 52 ;) (param $x i32) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load8_s - (local.get $x) - ) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load8_u - (local.get $x) - ) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load16_s - (local.get $x) - ) - (i32.const 16) - ) - (i32.const 16) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load16_u - (local.get $x) - ) - (i32.const 16) - ) - (i32.const 16) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load8_s - (local.get $x) - ) - (i32.const 24) - ) - (i32.const 16) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load8_u - (local.get $x) - ) - (i32.const 16) - ) - (i32.const 24) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load16_s - (local.get $x) - ) - (i32.const 16) - ) - (i32.const 24) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load16_u - (local.get $x) - ) - (i32.const 24) - ) - (i32.const 16) - ) - ) - ) - (func $z (; 53 ;) (param $x f32) - (nop) - ) - (func $w (; 54 ;) (result f64) - (return - (f64.const 0) - ) - ) - (func $globalOpts (; 55 ;) - (local $x i32) - (local $y f64) - (local.set $x - (global.get $Int) - ) - (local.set $y - (global.get $Double) - ) - (i32.store8 - (i32.const 13) - (i32.load - (i32.const 12) - ) - ) - (global.set $Double - (local.get $y) - ) - (global.set $Int - (local.get $x) - ) - (call $globalOpts) - (local.set $x - (global.get $Int) - ) - (if - (call $return_int) - (global.set $Int - (i32.const 20) - ) - ) - (global.set $Int - (local.get $x) - ) - (call $globalOpts) - (local.set $x - (global.get $Int) - ) - (call $globalOpts) - (global.set $Int - (local.get $x) - ) - ) - (func $dropCallImport (; 56 ;) - (if - (call $return_int) - (drop - (call $return_int) - ) - ) - ) - (func $loophi (; 57 ;) (param $x i32) (param $y i32) - (local $temp i32) - (local $inc i32) - (local $loopvar i32) - (local.set $loopvar - (local.get $x) - ) - (loop $while-in - (block $while-out - (call $loophi - (local.get $loopvar) - (i32.const 0) - ) - (local.set $temp - (local.get $loopvar) - ) - (if - (local.get $temp) - (if - (local.get $temp) - (br $while-out) - ) - ) - (local.set $inc - (i32.add - (local.get $loopvar) - (i32.const 1) - ) - ) - (if - (i32.eq - (local.get $inc) - (local.get $y) - ) - (local.set $loopvar - (local.get $inc) - ) - (br $while-out) - ) - (br $while-in) - ) - ) - ) - (func $loophi2 (; 58 ;) (result i32) - (local $jnc i32) - (local $i i32) - (local $i$lcssa i32) - (local $temp i32) - (local $j i32) - (local.set $i - (i32.const 0) - ) - (loop $label$continue$L7 - (block $label$break$L7 - (local.set $j - (i32.const 0) - ) - (loop $while-in - (block $while-out - (local.set $temp - (local.get $j) - ) - (if - (call $return_int) - (if - (local.get $temp) - (block - (local.set $i$lcssa - (local.get $i) - ) - (br $label$break$L7) - ) - ) - ) - (local.set $jnc - (i32.add - (local.get $j) - (i32.const 1) - ) - ) - (if - (local.get $jnc) - (local.set $j - (local.get $jnc) - ) - (br $while-out) - ) - (br $while-in) - ) - ) - (br $label$continue$L7) - ) - ) - (return - (local.get $i$lcssa) - ) - ) - (func $loophi2b (; 59 ;) (result i32) - (local $jnc i32) - (local $i i32) - (local $i$lcssa i32) - (local $temp i32) - (local $j i32) - (local.set $i - (i32.const 0) - ) - (loop $label$continue$L7 - (block $label$break$L7 - (local.set $j - (i32.const 0) - ) - (loop $while-in - (block $while-out - (local.set $temp - (local.get $j) - ) - (if - (call $return_int) - (if - (local.get $temp) - (block - (local.set $i$lcssa - (local.get $j) - ) - (br $label$break$L7) - ) - ) - ) - (local.set $jnc - (i32.add - (local.get $j) - (i32.const 1) - ) - ) - (if - (local.get $jnc) - (local.set $j - (local.get $jnc) - ) - (br $while-out) - ) - (br $while-in) - ) - ) - (br $label$continue$L7) - ) - ) - (return - (local.get $i$lcssa) - ) - ) - (func $relooperJumpThreading (; 60 ;) (param $x i32) (result i32) - (local $label i32) - (if - (local.get $x) - (block - (call $h - (i32.const 0) - ) - (local.set $label - (i32.const 1) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 1) - ) - (call $h - (i32.const 1) - ) - ) - (call $h - (i32.const -1) - ) - (loop $while-in - (block $while-out - (local.set $x - (i32.add - (local.get $x) - (i32.const 1) - ) - ) - (if - (local.get $x) - (block - (call $h - (i32.const 2) - ) - (local.set $label - (i32.const 2) - ) - (br $while-out) - ) - ) - (br $while-in) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 2) - ) - (call $h - (i32.const 3) - ) - ) - (call $h - (i32.const -2) - ) - (if - (local.get $x) - (block - (call $h - (i32.const 4) - ) - (if - (i32.eq - (local.get $x) - (i32.const 3) - ) - (local.set $label - (i32.const 3) - ) - (local.set $label - (i32.const 4) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 3) - ) - (call $h - (i32.const 5) - ) - (if - (i32.eq - (local.get $label) - (i32.const 4) - ) - (call $h - (i32.const 6) - ) - ) - ) - (call $h - (i32.const -3) - ) - (if - (local.get $x) - (block - (call $h - (i32.const 7) - ) - (if - (i32.eq - (local.get $x) - (i32.const 5) - ) - (local.set $label - (i32.const 5) - ) - (local.set $label - (i32.const 6) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 5) - ) - (block - (call $h - (i32.const 8) - ) - (if - (i32.eq - (local.get $x) - (i32.const 6) - ) - (local.set $label - (i32.const 6) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 6) - ) - (call $h - (i32.const 9) - ) - ) - (call $h - (i32.const -4) - ) - (if - (local.get $x) - (block - (call $h - (i32.const 10) - ) - (local.set $label - (i32.const 7) - ) - ) - ) - (block $label$break$L1 - (if - (i32.eq - (local.get $label) - (i32.const 7) - ) - (block - (call $h - (i32.const 11) - ) - (br $label$break$L1) - ) - ) - ) - (call $h - (i32.const -5) - ) - (if - (local.get $x) - (block - (call $h - (i32.const 12) - ) - (if - (i32.eq - (local.get $x) - (i32.const 8) - ) - (local.set $label - (i32.const 8) - ) - (local.set $label - (i32.const 9) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 8) - ) - (block - (call $h - (i32.const 13) - ) - (if - (local.get $x) - (local.set $label - (i32.const 9) - ) - ) - ) - ) - (block $label$break$L10 - (if - (i32.eq - (local.get $label) - (i32.const 9) - ) - (block - (call $h - (i32.const 14) - ) - (br $label$break$L10) - ) - ) - ) - (call $h - (i32.const -6) - ) - (return - (local.get $x) - ) - ) - (func $relooperJumpThreading__ZN4game14preloadweaponsEv (; 61 ;) (param $$12 i32) (param $$14 i32) (param $$or$cond8 i32) (param $$or$cond6 i32) (param $$vararg_ptr5 i32) (param $$11 i32) (param $$exitcond i32) - (local $label i32) - (loop $while-in - (block $while-out - (if - (local.get $$14) - (if - (local.get $$or$cond8) - (local.set $label - (i32.const 7) - ) - (local.set $label - (i32.const 8) - ) - ) - (if - (local.get $$or$cond6) - (local.set $label - (i32.const 7) - ) - (local.set $label - (i32.const 8) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 7) - ) - (local.set $label - (i32.const 0) - ) - (if - (i32.eq - (local.get $label) - (i32.const 8) - ) - (block - (local.set $label - (i32.const 0) - ) - (i32.store - (local.get $$vararg_ptr5) - (local.get $$11) - ) - ) - ) - ) - (br $while-in) - ) - ) - ) - (func $relooperJumpThreading_irreducible (; 62 ;) (param $x i32) - (local $label i32) - (if - (i32.eq - (local.get $x) - (i32.const 100) - ) - (local.set $label - (i32.const 1) - ) - (local.set $label - (i32.const 10) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 1) - ) - (loop $while-in - (block $while-out - (call $relooperJumpThreading_irreducible - (i32.const 1337) - ) - (local.set $label - (i32.const 1) - ) - (br $while-in) - ) - ) - ) - (if - (i32.eq - (local.get $x) - (i32.const 200) - ) - (local.set $label - (i32.const 2) - ) - (local.set $label - (i32.const 10) - ) - ) - (if - (i32.eq - (local.get $x) - (i32.const 300) - ) - (local.set $label - (i32.const 2) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 2) - ) - (call $relooperJumpThreading_irreducible - (i32.const 1448) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 10) - ) - (call $relooperJumpThreading_irreducible - (i32.const 2000) - ) - ) - ) - (func $__Z12multi_varargiz (; 63 ;) (param $$0 i32) (param $$$06$i4 i32) (param $$exitcond$i6 i32) (param $$2 i32) - (local $$12 i32) - (local $$20 i32) - (if - (local.get $$2) - (loop $while-in - (block $while-out - (local.set $$12 - (local.get $$$06$i4) - ) - (if - (local.get $$exitcond$i6) - (br $while-out) - (local.set $$$06$i4 - (local.get $$20) - ) - ) - (br $while-in) - ) - ) - (drop - (call $lb - (i32.const 1) - ) - ) - ) - ) - (func $jumpThreadDrop (; 64 ;) (result i32) - (local $label i32) - (local $temp i32) - (local.set $temp - (call $return_int) - ) - (loop $while-in - (block $while-out - (local.set $label - (i32.const 14) - ) - (br $while-out) - (br $while-in) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 10) - ) - (nop) - (if - (i32.eq - (local.get $label) - (i32.const 12) - ) - (drop - (call $return_int) - ) - (if - (i32.eq - (local.get $label) - (i32.const 14) - ) - (nop) - ) - ) - ) - (return - (local.get $temp) - ) - ) - (func $dropIgnoredImportInIf (; 65 ;) (param $$0 i32) (param $$1 i32) (param $$2 i32) - (block $do-once - (if - (local.get $$0) - (block - (local.set $$0 - (i32.const 1) - ) - (drop - (call $lb - (local.get $$2) - ) - ) - ) - (br $do-once) - ) - (nop) - ) - (return) - ) - (func $big_fround (; 66 ;) (result f32) - (return - (f32.const 4294967296) - ) - ) - (func $dropIgnoredImportsInIf (; 67 ;) (param $$0 i32) (param $$1 i32) (param $$2 i32) - (block $do-once - (if - (local.get $$0) - (drop - (call $lb - (local.get $$1) - ) - ) - (drop - (call $lb - (local.get $$2) - ) - ) - ) - (nop) - ) - (return) - ) - (func $f32_ucast (; 68 ;) (param $x i32) (result f32) - (return - (f32.convert_i32_u - (local.get $x) - ) - ) - ) - (func $f32_scast (; 69 ;) (param $x i32) (result f32) - (return - (f32.convert_i32_s - (local.get $x) - ) - ) - ) - (func $store_fround (; 70 ;) (param $x i32) - (f64.store - (i32.const 80) - (f64.promote_f32 - (f32.convert_i32_s - (local.get $x) - ) - ) - ) - ) - (func $relocatableAndModules (; 71 ;) (result i32) - (call_indirect (type $none_=>_none) - (i32.const 10) - ) - (call_indirect (type $none_=>_none) - (i32.const 20) - ) - (return - (call_indirect (type $f64_i32_=>_i32) - (f64.const 1.5) - (i32.const 200) - (i32.const 30) - ) - ) - ) - (func $exported_f32_user (; 72 ;) (param $x i32) (param $y f32) (param $z f64) (result f32) - (return - (local.get $y) - ) - ) - (func $sqrts (; 73 ;) (param $x f64) (result f64) - (return - (f64.add - (f64.sqrt - (local.get $x) - ) - (f64.promote_f32 - (f32.sqrt - (f32.demote_f64 - (local.get $x) - ) - ) - ) - ) - ) - ) - (func $f64-to-uint (; 74 ;) (param $0 f64) (result i32) - (if (result i32) - (f64.ne - (local.get $0) - (local.get $0) - ) - (i32.const 0) - (if (result i32) - (f64.ge - (local.get $0) - (f64.const 4294967296) - ) - (i32.const 0) - (if (result i32) - (f64.le - (local.get $0) - (f64.const -1) - ) - (i32.const 0) - (i32.trunc_f64_u - (local.get $0) - ) - ) - ) - ) - ) - (func $f2u (; 75 ;) (param $x f64) (result i32) - (return - (call $f64-to-uint - (local.get $x) - ) - ) - ) - (func $f2s (; 76 ;) (param $x f64) (result i32) - (return - (call $f64-to-int - (local.get $x) - ) - ) - ) - (func $autoDrop (; 77 ;) (param $x i32) (result i32) - (loop $while-in - (block $while-out - (if - (i32.eq - (local.get $x) - (i32.const 17) - ) - (block - (return - (i32.const 5) - ) - (drop - (call $autoDrop - (i32.const 1) - ) - ) - ) - (block - (br $while-out) - (local.set $x - (call $autoDrop - (i32.const 2) - ) - ) - ) - ) - (br $while-in) - ) - ) - (return - (local.get $x) - ) - ) - (func $indirectInSequence (; 78 ;) - (local $i1 i32) - (local.set $i1 - (block (result i32) - (call_indirect (type $i32_=>_none) - (i32.const 0) - (i32.add - (i32.and - (i32.const 1) - (i32.const 7) - ) - (i32.const 16) - ) - ) - (i32.const 1) - ) - ) - ) - (func $emterpretify_assertions_safeHeap (; 79 ;) - (local $i1 i32) - (call_indirect (type $i32_=>_none) - (local.get $i1) - (i32.add - (i32.and - (block (result i32) - (global.set $Int - (i32.const 1) - ) - (global.get $Int) - ) - (i32.const 7) - ) - (i32.const 16) - ) - ) - ) - (func $call_emscripten_log (; 80 ;) - (call $emscripten_log) - (if - (i32.const 2) - (drop - (call $f64-to-int - (call $abort - (f64.const 0) - ) - ) - ) - (drop - (i32.const 3) - ) - ) - ) - (func $mod_detectSign (; 81 ;) (param $d1 f64) (param $d2 f64) (param $d8 f64) (result i32) - (return - (call $f64-to-int - (f64.sub - (local.get $d2) - (f64.mul - (f64.div - (call $f64-rem - (local.get $d8) - (local.get $d1) - ) - (local.get $d1) - ) - (local.get $d2) - ) - ) - ) - ) - ) - (func $keepAlive (; 82 ;) - (drop - (call $sqrts - (f64.const 3.14159) - ) - ) - (drop - (call $sqrts - (f64.const 2.18281) - ) - ) - (drop - (call $f2u - (f64.const 100) - ) - ) - (drop - (call $f2s - (f64.const 100) - ) - ) - (drop - (call $autoDrop - (i32.const 52) - ) - ) - (call $indirectInSequence) - (call $emterpretify_assertions_safeHeap) - (call $call_emscripten_log) - (drop - (call $mod_detectSign - (f64.const 1) - (f64.const 2.31) - (f64.const 9.78) - ) - ) - (global.set $nonZero - (i32.add - (global.get $nonZero) - (i32.const 1) - ) - ) - ) - (func $v (; 83 ;) - (nop) - ) - (func $vi (; 84 ;) (param $x i32) - (nop) - ) - (func $ii (; 85 ;) (param $x i32) (result i32) - (return - (local.get $x) - ) - ) -) diff -Nru binaryen-91/test/unit.fromasm.imprecise binaryen-99/test/unit.fromasm.imprecise --- binaryen-91/test/unit.fromasm.imprecise 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unit.fromasm.imprecise 1970-01-01 00:00:00.000000000 +0000 @@ -1,1145 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $f32_=>_none (func (param f32))) - (type $none_=>_f64 (func (result f64))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32 i32))) - (type $i32_f32_=>_none (func (param i32 f32))) - (type $i32_f64_f32_=>_none (func (param i32 f64 f32))) - (type $f32_f64_=>_none (func (param f32 f64))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) - (type $none_=>_f32 (func (result f32))) - (type $i32_f32_f64_=>_f32 (func (param i32 f32 f64) (result f32))) - (type $f64_=>_f64 (func (param f64) (result f64))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 25 25 funcref)) - (elem (global.get $__table_base) $big_negative $big_negative $big_negative $big_negative $w $w $importedDoubles $w $fr $cneg $fr $fr $fr $fr $fr $fr $vi $vi $vi $vi $vi $vi $vi $vi $ii) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "gb" (global $n$asm2wasm$import i32)) - (import "env" "setTempRet0" (func $setTempRet0 (param i32) (result i32))) - (import "env" "abort" (func $abort (param f64) (result f64))) - (import "env" "print" (func $print (param i32))) - (import "env" "h" (func $h (param i32))) - (import "env" "return_int" (func $return_int (result i32))) - (import "env" "emscripten_log" (func $emscripten_log)) - (import "asm2wasm" "f64-rem" (func $f64-rem (param f64 f64) (result f64))) - (global $Int (mut i32) (i32.const 0)) - (global $nonZero (mut i32) (i32.const 1337)) - (global $exportedNumber i32 (i32.const 42)) - (export "big_negative" (func $big_negative)) - (export "pick" (func $big_negative)) - (export "doubleCompares" (func $doubleCompares)) - (export "intOps" (func $intOps)) - (export "conversions" (func $conversions)) - (export "switcher" (func $switcher)) - (export "frem" (func $frem)) - (export "frem_float" (func $frem_float)) - (export "big_uint_div_u" (func $big_uint_div_u)) - (export "trapping_sint_div_s" (func $trapping_sint_div_s)) - (export "fr" (func $fr)) - (export "negZero" (func $negZero)) - (export "neg" (func $neg)) - (export "smallCompare" (func $smallCompare)) - (export "cneg_nosemicolon" (func $cneg_nosemicolon)) - (export "forLoop" (func $forLoop)) - (export "ceiling_32_64" (func $ceiling_32_64)) - (export "aborts" (func $aborts)) - (export "continues" (func $continues)) - (export "bitcasts" (func $bitcasts)) - (export "recursiveBlockMerging" (func $recursiveBlockMerging)) - (export "lb" (func $lb)) - (export "zeroInit" (func $zeroInit)) - (export "phi" (func $phi)) - (export "smallIf" (func $smallIf)) - (export "dropCall" (func $dropCall)) - (export "useGlobalSet" (func $useGlobalSet)) - (export "usesGlobalSet2" (func $usesGlobalSet2)) - (export "breakThroughMany" (func $breakThroughMany)) - (export "ifChainEmpty" (func $ifChainEmpty)) - (export "heap8NoShift" (func $heap8NoShift)) - (export "conditionalTypeFun" (func $conditionalTypeFun)) - (export "loadSigned" (func $loadSigned)) - (export "globalOpts" (func $globalOpts)) - (export "dropCallImport" (func $dropCallImport)) - (export "loophi" (func $loophi)) - (export "loophi2" (func $loophi2)) - (export "loophi2b" (func $loophi2b)) - (export "relooperJumpThreading" (func $relooperJumpThreading)) - (export "relooperJumpThreading__ZN4game14preloadweaponsEv" (func $relooperJumpThreading__ZN4game14preloadweaponsEv)) - (export "__Z12multi_varargiz" (func $__Z12multi_varargiz)) - (export "jumpThreadDrop" (func $jumpThreadDrop)) - (export "dropIgnoredImportInIf" (func $dropIgnoredImportInIf)) - (export "dropIgnoredImportsInIf" (func $dropIgnoredImportsInIf)) - (export "relooperJumpThreading_irreducible" (func $relooperJumpThreading_irreducible)) - (export "store_fround" (func $store_fround)) - (export "exportedNumber" (global $exportedNumber)) - (export "relocatableAndModules" (func $relocatableAndModules)) - (export "exported_f32_user" (func $exported_f32_user)) - (export "keepAlive" (func $keepAlive)) - (func $big_negative (; 7 ;) (; has Stack IR ;) - (nop) - ) - (func $importedDoubles (; 8 ;) (; has Stack IR ;) (result f64) - (if - (i32.gt_s - (global.get $Int) - (i32.const 0) - ) - (return - (f64.const -3.4) - ) - ) - (f64.const 1.2) - ) - (func $doubleCompares (; 9 ;) (; has Stack IR ;) (param $0 f64) (param $1 f64) (result f64) - (if - (f64.gt - (local.get $0) - (f64.const 0) - ) - (return - (f64.const 1.2) - ) - ) - (if - (f64.gt - (local.get $0) - (f64.const 0) - ) - (return - (f64.const -3.4) - ) - ) - (if - (i32.gt_s - (global.get $n$asm2wasm$import) - (i32.const 0) - ) - (return - (f64.const 5.6) - ) - ) - (if - (f64.lt - (local.get $0) - (local.get $1) - ) - (return - (local.get $0) - ) - ) - (local.get $1) - ) - (func $intOps (; 10 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (i32.eqz - (local.get $0) - ) - ) - (func $conversions (; 11 ;) (; has Stack IR ;) (param $0 i32) (param $1 f64) (param $2 f32) - (nop) - ) - (func $switcher (; 12 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (block $switch - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-case0 $switch - (i32.sub - (local.get $0) - (i32.const 1) - ) - ) - ) - (return - (i32.const 1) - ) - ) - (return - (i32.const 2) - ) - ) - (block $switch1 - (block $switch-case3 - (block $switch-case2 - (br_table $switch-case3 $switch1 $switch1 $switch1 $switch1 $switch1 $switch1 $switch-case2 $switch1 - (i32.sub - (local.get $0) - (i32.const 5) - ) - ) - ) - (return - (i32.const 121) - ) - ) - (return - (i32.const 51) - ) - ) - (loop $label$continue$L1 - (block $label$break$L1 - (loop $label$continue$L3 - (block $label$break$L3 - (br_table $label$break$L3 $label$break$L1 $label$break$L1 $label$break$L1 $label$break$L1 $label$break$L1 $label$continue$L3 $label$break$L1 - (i32.add - (local.get $0) - (i32.const -110) - ) - ) - ) - ) - (call $h - (i32.const 120) - ) - (br $label$continue$L1) - ) - ) - (i32.const 0) - ) - (func $frem (; 13 ;) (; has Stack IR ;) (result f64) - (call $f64-rem - (f64.const 5.5) - (f64.const 1.2) - ) - ) - (func $frem_float (; 14 ;) (; has Stack IR ;) (result f32) - (f32.demote_f64 - (call $f64-rem - (f64.const 5.5) - (f64.const 1.2000000476837158) - ) - ) - ) - (func $big_uint_div_u (; 15 ;) (; has Stack IR ;) (result i32) - (i32.const 2147483647) - ) - (func $trapping_sint_div_s (; 16 ;) (; has Stack IR ;) (result i32) - (i32.div_s - (i32.const -2147483648) - (i32.const -1) - ) - ) - (func $fr (; 17 ;) (; has Stack IR ;) (param $0 f32) - (nop) - ) - (func $negZero (; 18 ;) (; has Stack IR ;) (result f64) - (f64.const -0) - ) - (func $neg (; 19 ;) (; has Stack IR ;) - (call_indirect (type $f32_=>_none) - (f32.const -0) - (i32.const 9) - ) - ) - (func $cneg (; 20 ;) (; has Stack IR ;) (param $0 f32) - (call_indirect (type $f32_=>_none) - (local.get $0) - (i32.const 9) - ) - ) - (func $smallCompare (; 21 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (i32.lt_u - (local.tee $0 - (select - (i32.add - (local.get $0) - (i32.const 1) - ) - (local.get $0) - (i32.lt_s - (local.get $0) - (local.get $1) - ) - ) - ) - (local.get $1) - ) - (i32.add - (local.get $0) - (i32.const 1) - ) - (local.get $0) - ) - ) - (func $cneg_nosemicolon (; 22 ;) (; has Stack IR ;) - (call_indirect (type $i32_=>_none) - (i32.const 1) - (i32.const 17) - ) - ) - (func $forLoop (; 23 ;) (; has Stack IR ;) - (local $0 i32) - (local.set $0 - (i32.const 1) - ) - (loop $for-in - (if - (i32.lt_s - (local.get $0) - (i32.const 200) - ) - (block - (call $h - (local.get $0) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (br $for-in) - ) - ) - ) - ) - (func $ceiling_32_64 (; 24 ;) (; has Stack IR ;) (param $0 f32) (param $1 f64) - (nop) - ) - (func $aborts (; 25 ;) (; has Stack IR ;) - (drop - (call $abort - (f64.const 0) - ) - ) - (drop - (call $abort - (f64.convert_i32_s - (i32.const 55) - ) - ) - ) - (drop - (call $abort - (f64.const 0) - ) - ) - (drop - (call $abort - (f64.const 12.34) - ) - ) - (drop - (call $abort - (f64.const 56.779998779296875) - ) - ) - ) - (func $continues (; 26 ;) (; has Stack IR ;) - (loop $while-in - (call $print - (i32.const 1) - ) - (loop $unlikely-continue - (call $print - (i32.const 5) - ) - (br_if $unlikely-continue - (call $return_int) - ) - ) - (call $print - (i32.const 2) - ) - (br $while-in) - ) - ) - (func $bitcasts (; 27 ;) (; has Stack IR ;) (param $0 i32) (param $1 f32) - (nop) - ) - (func $recursiveBlockMerging (; 28 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (drop - (call $lb - (i32.add - (local.get $0) - (i32.const 22) - ) - ) - ) - (drop - (call $lb - (i32.const 1) - ) - ) - (drop - (call $lb - (i32.const 2) - ) - ) - (i32.add - (i32.add - (i32.add - (call $lb - (i32.const 3) - ) - (local.get $0) - ) - (block (result i32) - (drop - (call $lb - (i32.const 4) - ) - ) - (drop - (call $lb - (i32.const 5) - ) - ) - (drop - (call $lb - (i32.const 6) - ) - ) - (call $lb - (i32.const 7) - ) - ) - ) - (block (result i32) - (drop - (call $lb - (i32.const 8) - ) - ) - (drop - (call $lb - (i32.const 9) - ) - ) - (drop - (call $lb - (i32.const 10) - ) - ) - (drop - (call $lb - (i32.const 11) - ) - ) - (call $lb - (i32.const 12) - ) - ) - ) - ) - (func $lb (; 29 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (i32.store - (local.get $0) - (i32.add - (global.get $n$asm2wasm$import) - (i32.const 144) - ) - ) - (i32.const 0) - ) - (func $zeroInit (; 30 ;) (; has Stack IR ;) (param $0 i32) - (local $1 i32) - (if - (i32.eq - (if (result i32) - (call $lb - (i32.const 0) - ) - (if (result i32) - (call $lb - (i32.const 1) - ) - (i32.const 3) - (local.get $1) - ) - (i32.const 3) - ) - (i32.const 3) - ) - (drop - (call $lb - (i32.const 2) - ) - ) - ) - ) - (func $phi (; 31 ;) (; has Stack IR ;) (result i32) - (block $do-once (result i32) - (drop - (br_if $do-once - (i32.const 0) - (call $lb - (i32.const 1) - ) - ) - ) - (i32.const 1) - ) - ) - (func $smallIf (; 32 ;) (; has Stack IR ;) - (if - (call $return_int) - (drop - (call $lb - (i32.const 3) - ) - ) - ) - ) - (func $dropCall (; 33 ;) (; has Stack IR ;) (result i32) - (if - (call $return_int) - (block - (drop - (call $phi) - ) - (drop - (call $setTempRet0 - (i32.const 10) - ) - ) - (call $zeroInit - (call $setTempRet0 - (i32.const 10) - ) - ) - ) - ) - (call $phi) - ) - (func $useGlobalSet (; 34 ;) (; has Stack IR ;) (result i32) - (global.set $Int - (i32.const 10) - ) - (global.set $Int - (i32.const 20) - ) - (global.set $Int - (i32.const 30) - ) - (i32.const 30) - ) - (func $usesGlobalSet2 (; 35 ;) (; has Stack IR ;) (result i32) - (global.set $Int - (i32.const 40) - ) - (i32.const 50) - ) - (func $breakThroughMany (; 36 ;) (; has Stack IR ;) (param $0 i32) - (if - (local.get $0) - (loop $while-in - (if - (local.get $0) - (block - (call $zeroInit - (i32.const 0) - ) - (br $while-in) - ) - ) - ) - ) - ) - (func $ifChainEmpty (; 37 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (if - (i32.eq - (local.get $0) - (i32.const 4) - ) - (return - (i32.const 0) - ) - ) - (i32.const 0) - ) - (func $heap8NoShift (; 38 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (i32.load8_s - (local.get $0) - ) - ) - (func $conditionalTypeFun (; 39 ;) (; has Stack IR ;) - (drop - (if (result i32) - (call $return_int) - (i32.trunc_f64_s - (call $abort - (f64.convert_i32_s - (i32.const 5) - ) - ) - ) - (i32.const 2) - ) - ) - (drop - (if (result f64) - (call $return_int) - (call $abort - (f64.convert_i32_s - (i32.const 7) - ) - ) - (f64.const 4.5) - ) - ) - ) - (func $loadSigned (; 40 ;) (; has Stack IR ;) (param $0 i32) - (call $loadSigned - (i32.load8_s - (local.get $0) - ) - ) - (call $loadSigned - (i32.load8_s - (local.get $0) - ) - ) - (call $loadSigned - (i32.load16_s - (local.get $0) - ) - ) - (call $loadSigned - (i32.load16_s - (local.get $0) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load8_s - (local.get $0) - ) - (i32.const 24) - ) - (i32.const 16) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load8_u - (local.get $0) - ) - (i32.const 16) - ) - (i32.const 24) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load16_s - (local.get $0) - ) - (i32.const 16) - ) - (i32.const 24) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load16_u - (local.get $0) - ) - (i32.const 24) - ) - (i32.const 16) - ) - ) - ) - (func $w (; 41 ;) (; has Stack IR ;) (result f64) - (f64.const 0) - ) - (func $globalOpts (; 42 ;) (; has Stack IR ;) - (local $0 i32) - (i32.store8 - (i32.const 13) - (i32.load - (i32.const 12) - ) - ) - (call $globalOpts) - (local.set $0 - (global.get $Int) - ) - (if - (call $return_int) - (global.set $Int - (i32.const 20) - ) - ) - (global.set $Int - (local.get $0) - ) - (call $globalOpts) - (local.set $0 - (global.get $Int) - ) - (call $globalOpts) - (global.set $Int - (local.get $0) - ) - ) - (func $dropCallImport (; 43 ;) (; has Stack IR ;) - (if - (call $return_int) - (drop - (call $return_int) - ) - ) - ) - (func $loophi (; 44 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) - (loop $while-in - (block $while-out - (call $loophi - (local.get $0) - (i32.const 0) - ) - (br_if $while-out - (select - (local.get $0) - (i32.const 0) - (local.get $0) - ) - ) - (br_if $while-in - (i32.eq - (local.get $1) - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - ) - ) - ) - (func $loophi2 (; 45 ;) (; has Stack IR ;) (result i32) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (loop $label$continue$L7 - (block $label$break$L7 - (local.set $0 - (i32.const 0) - ) - (loop $while-in - (local.set $2 - (local.get $0) - ) - (br_if $label$break$L7 - (select - (call $return_int) - (i32.const 0) - (local.get $2) - ) - ) - (br_if $while-in - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (br $label$continue$L7) - ) - ) - (local.get $1) - ) - (func $loophi2b (; 46 ;) (; has Stack IR ;) (result i32) - (local $0 i32) - (local $1 i32) - (loop $label$continue$L7 - (block $label$break$L7 - (local.set $0 - (i32.const 0) - ) - (loop $while-in - (local.set $1 - (local.get $0) - ) - (br_if $label$break$L7 - (select - (call $return_int) - (i32.const 0) - (local.get $1) - ) - ) - (br_if $while-in - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - (br $label$continue$L7) - ) - ) - (local.get $0) - ) - (func $relooperJumpThreading (; 47 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (block $__rjto$0 - (block $__rjti$0 - (if - (local.get $0) - (block - (call $h - (i32.const 0) - ) - (br $__rjti$0) - ) - ) - (br $__rjto$0) - ) - (call $h - (i32.const 1) - ) - ) - (call $h - (i32.const -1) - ) - (loop $while-in - (br_if $while-in - (i32.eqz - (local.tee $0 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - ) - ) - ) - (call $h - (i32.const 2) - ) - (call $h - (i32.const 3) - ) - (call $h - (i32.const -2) - ) - (block $__rjto$3 - (block $__rjti$3 - (block $__rjti$2 - (if - (local.get $0) - (block - (call $h - (i32.const 4) - ) - (br_if $__rjti$2 - (i32.eq - (local.get $0) - (i32.const 3) - ) - ) - (br $__rjti$3) - ) - ) - (br $__rjto$3) - ) - (call $h - (i32.const 5) - ) - (br $__rjto$3) - ) - (call $h - (i32.const 6) - ) - ) - (call $h - (i32.const -3) - ) - (block $__rjto$5 - (block $__rjti$5 - (block $__rjti$4 - (if - (local.get $0) - (block - (call $h - (i32.const 7) - ) - (br_if $__rjti$4 - (i32.eq - (local.get $0) - (i32.const 5) - ) - ) - (br $__rjti$5) - ) - ) - (br $__rjto$5) - ) - (call $h - (i32.const 8) - ) - (br_if $__rjti$5 - (i32.eq - (local.get $0) - (i32.const 6) - ) - ) - (br $__rjto$5) - ) - (call $h - (i32.const 9) - ) - ) - (call $h - (i32.const -4) - ) - (block $label$break$L1 - (block $__rjti$6 - (if - (local.get $0) - (block - (call $h - (i32.const 10) - ) - (br $__rjti$6) - ) - ) - (br $label$break$L1) - ) - (call $h - (i32.const 11) - ) - ) - (call $h - (i32.const -5) - ) - (block $label$break$L10 - (block $__rjti$8 - (block $__rjti$7 - (if - (local.get $0) - (block - (call $h - (i32.const 12) - ) - (br_if $__rjti$7 - (i32.eq - (local.get $0) - (i32.const 8) - ) - ) - (br $__rjti$8) - ) - ) - (br $label$break$L10) - ) - (call $h - (i32.const 13) - ) - (br_if $__rjti$8 - (local.get $0) - ) - (br $label$break$L10) - ) - (call $h - (i32.const 14) - ) - ) - (call $h - (i32.const -6) - ) - (local.get $0) - ) - (func $relooperJumpThreading__ZN4game14preloadweaponsEv (; 48 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) - (loop $while-in - (block $__rjti$1 - (if - (local.get $1) - (br_if $__rjti$1 - (i32.eqz - (local.get $2) - ) - ) - (br_if $__rjti$1 - (i32.eqz - (local.get $3) - ) - ) - ) - (br $while-in) - ) - (i32.store - (local.get $4) - (local.get $5) - ) - (br $while-in) - ) - ) - (func $relooperJumpThreading_irreducible (; 49 ;) (; has Stack IR ;) (param $0 i32) - (local $1 i32) - (if - (i32.eq - (local.get $0) - (i32.const 100) - ) - (loop $while-in - (call $relooperJumpThreading_irreducible - (i32.const 1337) - ) - (br $while-in) - ) - ) - (local.set $1 - (select - (i32.const 2) - (i32.const 10) - (i32.eq - (local.get $0) - (i32.const 200) - ) - ) - ) - (if - (i32.eq - (local.tee $1 - (select - (i32.const 2) - (local.get $1) - (i32.eq - (local.get $0) - (i32.const 300) - ) - ) - ) - (i32.const 2) - ) - (call $relooperJumpThreading_irreducible - (i32.const 1448) - ) - ) - (if - (i32.eq - (local.get $1) - (i32.const 10) - ) - (call $relooperJumpThreading_irreducible - (i32.const 2000) - ) - ) - ) - (func $__Z12multi_varargiz (; 50 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - (if - (local.get $3) - (loop $while-in - (br_if $while-in - (i32.eqz - (local.get $2) - ) - ) - ) - (drop - (call $lb - (i32.const 1) - ) - ) - ) - ) - (func $jumpThreadDrop (; 51 ;) (; has Stack IR ;) (result i32) - (call $return_int) - ) - (func $dropIgnoredImportInIf (; 52 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) - (if - (local.get $0) - (drop - (call $lb - (local.get $2) - ) - ) - ) - ) - (func $dropIgnoredImportsInIf (; 53 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) - (drop - (if (result i32) - (local.get $0) - (call $lb - (local.get $1) - ) - (call $lb - (local.get $2) - ) - ) - ) - ) - (func $store_fround (; 54 ;) (; has Stack IR ;) (param $0 i32) - (f64.store - (i32.const 80) - (f64.promote_f32 - (f32.convert_i32_s - (local.get $0) - ) - ) - ) - ) - (func $relocatableAndModules (; 55 ;) (; has Stack IR ;) (result i32) - (call_indirect (type $none_=>_none) - (i32.const 10) - ) - (call_indirect (type $none_=>_none) - (i32.const 20) - ) - (call_indirect (type $f64_i32_=>_i32) - (f64.const 1.5) - (i32.const 200) - (i32.const 30) - ) - ) - (func $exported_f32_user (; 56 ;) (; has Stack IR ;) (param $0 i32) (param $1 f32) (param $2 f64) (result f32) - (local.get $1) - ) - (func $keepAlive (; 57 ;) (; has Stack IR ;) - (call_indirect (type $i32_=>_none) - (i32.const 0) - (i32.const 17) - ) - (call_indirect (type $i32_=>_none) - (i32.const 0) - (block (result i32) - (global.set $Int - (i32.const 1) - ) - (i32.const 17) - ) - ) - (call $emscripten_log) - (drop - (call $abort - (f64.const 0) - ) - ) - (drop - (call $f64-rem - (f64.const 9.78) - (f64.const 1) - ) - ) - (global.set $nonZero - (i32.add - (global.get $nonZero) - (i32.const 1) - ) - ) - ) - (func $vi (; 58 ;) (; has Stack IR ;) (param $0 i32) - (nop) - ) - (func $ii (; 59 ;) (; has Stack IR ;) (param $0 i32) (result i32) - (local.get $0) - ) -) diff -Nru binaryen-91/test/unit.fromasm.imprecise.no-opts binaryen-99/test/unit.fromasm.imprecise.no-opts --- binaryen-91/test/unit.fromasm.imprecise.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unit.fromasm.imprecise.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,2136 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $f32_=>_none (func (param f32))) - (type $none_=>_f64 (func (result f64))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $none_=>_f32 (func (result f32))) - (type $i32_=>_f32 (func (param i32) (result f32))) - (type $f64_=>_f64 (func (param f64) (result f64))) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32 i32))) - (type $i32_f32_=>_none (func (param i32 f32))) - (type $i32_f64_f32_=>_none (func (param i32 f64 f32))) - (type $f32_f64_=>_none (func (param f32 f64))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) - (type $f64_f64_f64_=>_i32 (func (param f64 f64 f64) (result i32))) - (type $i32_f32_f64_=>_f32 (func (param i32 f32 f64) (result f32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 25 25 funcref)) - (elem (global.get $__table_base) $v $big_negative $v $v $w $w $importedDoubles $w $z $cneg $z $z $z $z $z $z $vi $vi $vi $vi $vi $vi $vi $vi $ii) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "global" "NaN" (global $t$asm2wasm$import f64)) - (import "global" "Infinity" (global $u$asm2wasm$import f64)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) - (import "env" "gb" (global $n$asm2wasm$import i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "setTempRet0" (func $setTempRet0 (param i32) (result i32))) - (import "env" "abort" (func $abort (param f64) (result f64))) - (import "env" "print" (func $print (param i32))) - (import "env" "h" (func $h (param i32))) - (import "env" "return_int" (func $return_int (result i32))) - (import "env" "emscripten_log" (func $emscripten_log)) - (import "asm2wasm" "f64-rem" (func $f64-rem (param f64 f64) (result f64))) - (global $t (mut f64) (global.get $t$asm2wasm$import)) - (global $u (mut f64) (global.get $u$asm2wasm$import)) - (global $Int (mut i32) (i32.const 0)) - (global $Double (mut f64) (f64.const 0)) - (global $tempDoublePtr (mut i32) (global.get $tempDoublePtr$asm2wasm$import)) - (global $n (mut i32) (global.get $n$asm2wasm$import)) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (global $nonZero (mut i32) (i32.const 1337)) - (global $exportedNumber i32 (i32.const 42)) - (export "big_negative" (func $big_negative)) - (export "pick" (func $exportMe)) - (export "doubleCompares" (func $doubleCompares)) - (export "intOps" (func $intOps)) - (export "conversions" (func $conversions)) - (export "switcher" (func $switcher)) - (export "frem" (func $frem)) - (export "frem_float" (func $frem_float)) - (export "big_uint_div_u" (func $big_uint_div_u)) - (export "trapping_sint_div_s" (func $trapping_sint_div_s)) - (export "fr" (func $fr)) - (export "negZero" (func $negZero)) - (export "neg" (func $neg)) - (export "smallCompare" (func $smallCompare)) - (export "cneg_nosemicolon" (func $cneg_nosemicolon)) - (export "forLoop" (func $forLoop)) - (export "ceiling_32_64" (func $ceiling_32_64)) - (export "aborts" (func $aborts)) - (export "continues" (func $continues)) - (export "bitcasts" (func $bitcasts)) - (export "recursiveBlockMerging" (func $recursiveBlockMerging)) - (export "lb" (func $lb)) - (export "zeroInit" (func $zeroInit)) - (export "phi" (func $phi)) - (export "smallIf" (func $smallIf)) - (export "dropCall" (func $dropCall)) - (export "useGlobalSet" (func $useGlobalSet)) - (export "usesGlobalSet2" (func $usesGlobalSet2)) - (export "breakThroughMany" (func $breakThroughMany)) - (export "ifChainEmpty" (func $ifChainEmpty)) - (export "heap8NoShift" (func $heap8NoShift)) - (export "conditionalTypeFun" (func $conditionalTypeFun)) - (export "loadSigned" (func $loadSigned)) - (export "globalOpts" (func $globalOpts)) - (export "dropCallImport" (func $dropCallImport)) - (export "loophi" (func $loophi)) - (export "loophi2" (func $loophi2)) - (export "loophi2b" (func $loophi2b)) - (export "relooperJumpThreading" (func $relooperJumpThreading)) - (export "relooperJumpThreading__ZN4game14preloadweaponsEv" (func $relooperJumpThreading__ZN4game14preloadweaponsEv)) - (export "__Z12multi_varargiz" (func $__Z12multi_varargiz)) - (export "jumpThreadDrop" (func $jumpThreadDrop)) - (export "dropIgnoredImportInIf" (func $dropIgnoredImportInIf)) - (export "dropIgnoredImportsInIf" (func $dropIgnoredImportsInIf)) - (export "relooperJumpThreading_irreducible" (func $relooperJumpThreading_irreducible)) - (export "store_fround" (func $store_fround)) - (export "exportedNumber" (global $exportedNumber)) - (export "relocatableAndModules" (func $relocatableAndModules)) - (export "exported_f32_user" (func $exported_f32_user)) - (export "keepAlive" (func $keepAlive)) - (func $big_negative (; 7 ;) - (local $temp f64) - (local.set $temp - (f64.const -2147483648) - ) - (local.set $temp - (f64.const -2147483648) - ) - (local.set $temp - (f64.const -21474836480) - ) - (local.set $temp - (f64.const 0.039625) - ) - (local.set $temp - (f64.const -0.039625) - ) - ) - (func $importedDoubles (; 8 ;) (result f64) - (local $temp f64) - (local.set $temp - (f64.add - (f64.add - (f64.add - (global.get $t) - (global.get $u) - ) - (f64.neg - (global.get $u) - ) - ) - (f64.neg - (global.get $t) - ) - ) - ) - (if - (i32.gt_s - (global.get $Int) - (i32.const 0) - ) - (return - (f64.const -3.4) - ) - ) - (if - (f64.gt - (global.get $Double) - (f64.const 0) - ) - (return - (f64.const 5.6) - ) - ) - (return - (f64.const 1.2) - ) - ) - (func $doubleCompares (; 9 ;) (param $x f64) (param $y f64) (result f64) - (local $t f64) - (local $Int f64) - (local $Double i32) - (if - (f64.gt - (local.get $x) - (f64.const 0) - ) - (return - (f64.const 1.2) - ) - ) - (local.set $Int - (local.get $x) - ) - (local.set $Double - (global.get $n) - ) - (if - (f64.gt - (local.get $Int) - (f64.const 0) - ) - (return - (f64.const -3.4) - ) - ) - (if - (i32.gt_s - (local.get $Double) - (i32.const 0) - ) - (return - (f64.const 5.6) - ) - ) - (if - (f64.lt - (local.get $x) - (local.get $y) - ) - (return - (local.get $x) - ) - ) - (return - (local.get $y) - ) - ) - (func $intOps (; 10 ;) (param $x i32) (result i32) - (return - (i32.eqz - (local.get $x) - ) - ) - ) - (func $hexLiterals (; 11 ;) - (local $i i32) - (local.set $i - (i32.add - (i32.add - (i32.const 0) - (i32.const 313249263) - ) - (i32.const -19088752) - ) - ) - ) - (func $conversions (; 12 ;) (param $i i32) (param $d f64) (param $f f32) - (local.set $i - (i32.trunc_f64_s - (local.get $d) - ) - ) - (local.set $i - (i32.trunc_f32_s - (local.get $f) - ) - ) - (local.set $d - (f64.convert_i32_s - (local.get $i) - ) - ) - (local.set $d - (f64.convert_i32_u - (local.get $i) - ) - ) - ) - (func $seq (; 13 ;) - (local $J f64) - (local.set $J - (f64.sub - (block (result f64) - (drop - (f64.const 0.1) - ) - (f64.const 5.1) - ) - (block (result f64) - (drop - (f64.const 3.2) - ) - (f64.const 4.2) - ) - ) - ) - ) - (func $switcher (; 14 ;) (param $x i32) (result i32) - (local $waka i32) - (block $switch - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-case0 $switch - (i32.sub - (local.get $x) - (i32.const 1) - ) - ) - ) - (return - (i32.const 1) - ) - ) - (return - (i32.const 2) - ) - ) - (block $switch1 - (block $switch-case3 - (block $switch-case2 - (br_table $switch-case3 $switch1 $switch1 $switch1 $switch1 $switch1 $switch1 $switch-case2 $switch1 - (i32.sub - (local.get $x) - (i32.const 5) - ) - ) - ) - (return - (i32.const 121) - ) - ) - (return - (i32.const 51) - ) - ) - (block $label$break$Lout - (block $switch-case9 - (block $switch-case6 - (block $switch-case5 - (block $switch-case4 - (br_table $switch-case9 $label$break$Lout $label$break$Lout $switch-case6 $label$break$Lout $label$break$Lout $label$break$Lout $label$break$Lout $switch-case5 $label$break$Lout $switch-case4 $label$break$Lout - (i32.sub - (local.get $x) - (i32.const 2) - ) - ) - ) - (br $label$break$Lout) - ) - (br $label$break$Lout) - ) - (block - (loop $while-in - (block $while-out - (br $while-out) - (br $while-in) - ) - ) - (br $label$break$Lout) - ) - ) - (block - (loop $while-in8 - (block $while-out7 - (br $label$break$Lout) - (br $while-in8) - ) - ) - (br $label$break$Lout) - ) - ) - (loop $label$continue$L1 - (block $label$break$L1 - (loop $label$continue$L3 - (block $label$break$L3 - (block $switch10 - (block $switch-default - (block $switch-case13 - (block $switch-case12 - (block $switch-case11 - (br_table $switch-case11 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case13 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case12 $switch-default - (i32.sub - (local.get $x) - (i32.const -1) - ) - ) - ) - (block - (br $label$break$L1) - (br $switch10) - ) - ) - (block - (local.set $waka - (i32.const 1) - ) - (br $switch10) - ) - ) - (block - (br $label$break$L3) - (br $switch10) - ) - ) - (br $label$break$L1) - ) - (br $label$continue$L3) - ) - ) - (call $h - (i32.const 120) - ) - (br $label$continue$L1) - ) - ) - (return - (i32.const 0) - ) - ) - (func $blocker (; 15 ;) - (block $label$break$L - (br $label$break$L) - ) - ) - (func $frem (; 16 ;) (result f64) - (return - (call $f64-rem - (f64.const 5.5) - (f64.const 1.2) - ) - ) - ) - (func $frem_float (; 17 ;) (result f32) - (return - (f32.demote_f64 - (call $f64-rem - (f64.promote_f32 - (f32.const 5.5) - ) - (f64.promote_f32 - (f32.const 1.2000000476837158) - ) - ) - ) - ) - ) - (func $big_uint_div_u (; 18 ;) (result i32) - (local $x i32) - (local.set $x - (i32.and - (i32.div_u - (i32.const -1) - (i32.const 2) - ) - (i32.const -1) - ) - ) - (return - (local.get $x) - ) - ) - (func $trapping_sint_div_s (; 19 ;) (result i32) - (local $x i32) - (local.set $x - (i32.div_s - (i32.const -2147483648) - (i32.const -1) - ) - ) - (return - (local.get $x) - ) - ) - (func $fr (; 20 ;) (param $x f32) - (local $y f32) - (local $z f64) - (drop - (f32.demote_f64 - (local.get $z) - ) - ) - (drop - (local.get $y) - ) - (drop - (f32.const 5) - ) - (drop - (f32.const 0) - ) - (drop - (f32.const 5) - ) - (drop - (f32.const 0) - ) - ) - (func $negZero (; 21 ;) (result f64) - (return - (f64.const -0) - ) - ) - (func $abs (; 22 ;) - (local $x i32) - (local $y f64) - (local $z f32) - (local $asm2wasm_i32_temp i32) - (local.set $x - (block (result i32) - (local.set $asm2wasm_i32_temp - (i32.const 0) - ) - (select - (i32.sub - (i32.const 0) - (local.get $asm2wasm_i32_temp) - ) - (local.get $asm2wasm_i32_temp) - (i32.lt_s - (local.get $asm2wasm_i32_temp) - (i32.const 0) - ) - ) - ) - ) - (local.set $y - (f64.abs - (f64.const 0) - ) - ) - (local.set $z - (f32.abs - (f32.const 0) - ) - ) - ) - (func $minmax (; 23 ;) - (local $x f64) - (local $y f64) - (local $z f32) - (local $w f32) - (local.set $x - (f64.min - (local.get $x) - (local.get $y) - ) - ) - (local.set $y - (f64.max - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (f32.min - (local.get $z) - (local.get $w) - ) - ) - (local.set $w - (f32.max - (local.get $z) - (local.get $w) - ) - ) - ) - (func $neg (; 24 ;) - (local $x f32) - (local.set $x - (f32.neg - (local.get $x) - ) - ) - (call_indirect (type $f32_=>_none) - (local.get $x) - (i32.add - (i32.and - (i32.const 1) - (i32.const 7) - ) - (i32.const 8) - ) - ) - ) - (func $cneg (; 25 ;) (param $x f32) - (call_indirect (type $f32_=>_none) - (local.get $x) - (i32.add - (i32.and - (i32.const 1) - (i32.const 7) - ) - (i32.const 8) - ) - ) - ) - (func $___syscall_ret (; 26 ;) - (local $$0 i32) - (drop - (i32.gt_u - (local.get $$0) - (i32.const -4096) - ) - ) - ) - (func $smallCompare (; 27 ;) (param $i i32) (param $j i32) (result i32) - (if - (i32.lt_s - (local.get $i) - (local.get $j) - ) - (local.set $i - (i32.add - (local.get $i) - (i32.const 1) - ) - ) - ) - (if - (i32.lt_u - (local.get $i) - (local.get $j) - ) - (local.set $i - (i32.add - (local.get $i) - (i32.const 1) - ) - ) - ) - (return - (local.get $i) - ) - ) - (func $cneg_nosemicolon (; 28 ;) - (call_indirect (type $i32_=>_none) - (i32.const 1) - (i32.add - (i32.and - (i32.const 1) - (i32.const 7) - ) - (i32.const 16) - ) - ) - ) - (func $forLoop (; 29 ;) - (local $i i32) - (local.set $i - (i32.const 1) - ) - (loop $for-in - (block $for-out - (if - (i32.eqz - (i32.lt_s - (local.get $i) - (i32.const 200) - ) - ) - (br $for-out) - ) - (call $h - (local.get $i) - ) - (local.set $i - (i32.add - (local.get $i) - (i32.const 1) - ) - ) - (br $for-in) - ) - ) - ) - (func $ceiling_32_64 (; 30 ;) (param $u f32) (param $B f64) - (local $temp f32) - (local.set $temp - (f32.demote_f64 - (f64.ceil - (local.get $B) - ) - ) - ) - (local.set $temp - (f32.mul - (local.get $u) - (f32.ceil - (f32.demote_f64 - (local.get $B) - ) - ) - ) - ) - ) - (func $aborts (; 31 ;) - (drop - (call $abort - (f64.const 0) - ) - ) - (drop - (call $abort - (f64.convert_i32_s - (i32.const 55) - ) - ) - ) - (drop - (call $abort - (f64.const 0) - ) - ) - (drop - (call $abort - (f64.const 12.34) - ) - ) - (drop - (call $abort - (f64.promote_f32 - (f32.const 56.779998779296875) - ) - ) - ) - ) - (func $continues (; 32 ;) - (loop $while-in - (block $while-out - (call $print - (i32.const 1) - ) - (block $do-once - (loop $unlikely-continue - (call $print - (i32.const 5) - ) - (if - (call $return_int) - (br $unlikely-continue) - ) - ) - ) - (call $print - (i32.const 2) - ) - (br $while-in) - ) - ) - ) - (func $bitcasts (; 33 ;) (param $i i32) (param $f f32) - (local $d f64) - (drop - (f32.reinterpret_i32 - (local.get $i) - ) - ) - (drop - (f64.promote_f32 - (f32.reinterpret_i32 - (local.get $i) - ) - ) - ) - (drop - (i32.reinterpret_f32 - (local.get $f) - ) - ) - (drop - (i32.reinterpret_f32 - (f32.demote_f64 - (local.get $d) - ) - ) - ) - ) - (func $recursiveBlockMerging (; 34 ;) (param $x i32) (result i32) - (drop - (call $lb - (i32.add - (i32.add - (i32.add - (block (result i32) - (drop - (i32.const 1) - ) - (local.get $x) - ) - (block (result i32) - (drop - (i32.const 2) - ) - (i32.const 3) - ) - ) - (block (result i32) - (block - (block - (drop - (i32.const 4) - ) - (drop - (i32.const 5) - ) - ) - (drop - (i32.const 6) - ) - ) - (i32.const 7) - ) - ) - (block (result i32) - (drop - (i32.const 8) - ) - (block (result i32) - (drop - (i32.const 9) - ) - (block (result i32) - (drop - (i32.const 10) - ) - (block (result i32) - (drop - (i32.const 11) - ) - (i32.const 12) - ) - ) - ) - ) - ) - ) - ) - (local.set $x - (i32.add - (i32.add - (i32.add - (block (result i32) - (drop - (call $lb - (i32.const 1) - ) - ) - (local.get $x) - ) - (block (result i32) - (drop - (call $lb - (i32.const 2) - ) - ) - (call $lb - (i32.const 3) - ) - ) - ) - (block (result i32) - (block - (block - (drop - (call $lb - (i32.const 4) - ) - ) - (drop - (call $lb - (i32.const 5) - ) - ) - ) - (drop - (call $lb - (i32.const 6) - ) - ) - ) - (call $lb - (i32.const 7) - ) - ) - ) - (block (result i32) - (drop - (call $lb - (i32.const 8) - ) - ) - (block (result i32) - (drop - (call $lb - (i32.const 9) - ) - ) - (block (result i32) - (drop - (call $lb - (i32.const 10) - ) - ) - (block (result i32) - (drop - (call $lb - (i32.const 11) - ) - ) - (call $lb - (i32.const 12) - ) - ) - ) - ) - ) - ) - ) - (return - (local.get $x) - ) - ) - (func $lb (; 35 ;) (param $a i32) (result i32) - (i32.store - (local.get $a) - (i32.add - (i32.add - (global.get $n) - (i32.const 136) - ) - (i32.const 8) - ) - ) - (return - (i32.const 0) - ) - ) - (func $forgetMe (; 36 ;) - (drop - (f64.const 123.456) - ) - ) - (func $exportMe (; 37 ;) - (drop - (f64.const -3.14159) - ) - ) - (func $zeroInit (; 38 ;) (param $x i32) - (local $y i32) - (if - (call $lb - (i32.const 0) - ) - (if - (call $lb - (i32.const 1) - ) - (local.set $y - (i32.const 3) - ) - ) - (local.set $y - (i32.const 3) - ) - ) - (if - (i32.eq - (local.get $y) - (i32.const 3) - ) - (drop - (call $lb - (i32.const 2) - ) - ) - ) - ) - (func $phi (; 39 ;) (result i32) - (local $x i32) - (block $do-once - (block - (if - (call $lb - (i32.const 1) - ) - (block - (local.set $x - (i32.const 0) - ) - (br $do-once) - ) - ) - (local.set $x - (i32.const 1) - ) - ) - ) - (return - (local.get $x) - ) - ) - (func $smallIf (; 40 ;) - (block $do-once - (if - (call $return_int) - (drop - (call $lb - (i32.const 3) - ) - ) - (br $do-once) - ) - (nop) - ) - ) - (func $dropCall (; 41 ;) (result i32) - (if - (call $return_int) - (block - (drop - (call $phi) - ) - (drop - (call $setTempRet0 - (i32.const 10) - ) - ) - (call $zeroInit - (call $setTempRet0 - (i32.const 10) - ) - ) - ) - ) - (return - (call $phi) - ) - ) - (func $useGlobalSet (; 42 ;) (result i32) - (local $x i32) - (local.set $x - (block (result i32) - (global.set $Int - (i32.const 10) - ) - (global.get $Int) - ) - ) - (global.set $Int - (i32.const 20) - ) - (return - (block (result i32) - (global.set $Int - (i32.const 30) - ) - (global.get $Int) - ) - ) - ) - (func $usesGlobalSet2 (; 43 ;) (result i32) - (return - (block (result i32) - (block - (global.set $Int - (i32.const 40) - ) - (drop - (global.get $Int) - ) - ) - (i32.const 50) - ) - ) - ) - (func $breakThroughMany (; 44 ;) (param $$s i32) - (block $label$break$L1 - (if - (local.get $$s) - (loop $while-in - (block $while-out - (if - (i32.eqz - (local.get $$s) - ) - (br $label$break$L1) - ) - (call $zeroInit - (i32.const 0) - ) - (br $while-in) - ) - ) - (drop - (i32.const 1337) - ) - ) - (nop) - ) - ) - (func $ifChainEmpty (; 45 ;) (param $label i32) (result i32) - (if - (i32.eq - (local.get $label) - (i32.const 4) - ) - (return - (i32.const 0) - ) - (if - (i32.eq - (local.get $label) - (i32.const 7) - ) - (nop) - ) - ) - (return - (i32.const 0) - ) - ) - (func $heap8NoShift (; 46 ;) (param $x i32) (result i32) - (return - (i32.load8_s - (local.get $x) - ) - ) - ) - (func $conditionalTypeFun (; 47 ;) - (local $x i32) - (local $y f64) - (local.set $x - (if (result i32) - (call $return_int) - (i32.trunc_f64_s - (call $abort - (f64.convert_i32_s - (i32.const 5) - ) - ) - ) - (i32.const 2) - ) - ) - (local.set $y - (if (result f64) - (call $return_int) - (call $abort - (f64.convert_i32_s - (i32.const 7) - ) - ) - (f64.const 4.5) - ) - ) - ) - (func $loadSigned (; 48 ;) (param $x i32) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load8_s - (local.get $x) - ) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load8_u - (local.get $x) - ) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load16_s - (local.get $x) - ) - (i32.const 16) - ) - (i32.const 16) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load16_u - (local.get $x) - ) - (i32.const 16) - ) - (i32.const 16) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load8_s - (local.get $x) - ) - (i32.const 24) - ) - (i32.const 16) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load8_u - (local.get $x) - ) - (i32.const 16) - ) - (i32.const 24) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load16_s - (local.get $x) - ) - (i32.const 16) - ) - (i32.const 24) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load16_u - (local.get $x) - ) - (i32.const 24) - ) - (i32.const 16) - ) - ) - ) - (func $z (; 49 ;) (param $x f32) - (nop) - ) - (func $w (; 50 ;) (result f64) - (return - (f64.const 0) - ) - ) - (func $globalOpts (; 51 ;) - (local $x i32) - (local $y f64) - (local.set $x - (global.get $Int) - ) - (local.set $y - (global.get $Double) - ) - (i32.store8 - (i32.const 13) - (i32.load - (i32.const 12) - ) - ) - (global.set $Double - (local.get $y) - ) - (global.set $Int - (local.get $x) - ) - (call $globalOpts) - (local.set $x - (global.get $Int) - ) - (if - (call $return_int) - (global.set $Int - (i32.const 20) - ) - ) - (global.set $Int - (local.get $x) - ) - (call $globalOpts) - (local.set $x - (global.get $Int) - ) - (call $globalOpts) - (global.set $Int - (local.get $x) - ) - ) - (func $dropCallImport (; 52 ;) - (if - (call $return_int) - (drop - (call $return_int) - ) - ) - ) - (func $loophi (; 53 ;) (param $x i32) (param $y i32) - (local $temp i32) - (local $inc i32) - (local $loopvar i32) - (local.set $loopvar - (local.get $x) - ) - (loop $while-in - (block $while-out - (call $loophi - (local.get $loopvar) - (i32.const 0) - ) - (local.set $temp - (local.get $loopvar) - ) - (if - (local.get $temp) - (if - (local.get $temp) - (br $while-out) - ) - ) - (local.set $inc - (i32.add - (local.get $loopvar) - (i32.const 1) - ) - ) - (if - (i32.eq - (local.get $inc) - (local.get $y) - ) - (local.set $loopvar - (local.get $inc) - ) - (br $while-out) - ) - (br $while-in) - ) - ) - ) - (func $loophi2 (; 54 ;) (result i32) - (local $jnc i32) - (local $i i32) - (local $i$lcssa i32) - (local $temp i32) - (local $j i32) - (local.set $i - (i32.const 0) - ) - (loop $label$continue$L7 - (block $label$break$L7 - (local.set $j - (i32.const 0) - ) - (loop $while-in - (block $while-out - (local.set $temp - (local.get $j) - ) - (if - (call $return_int) - (if - (local.get $temp) - (block - (local.set $i$lcssa - (local.get $i) - ) - (br $label$break$L7) - ) - ) - ) - (local.set $jnc - (i32.add - (local.get $j) - (i32.const 1) - ) - ) - (if - (local.get $jnc) - (local.set $j - (local.get $jnc) - ) - (br $while-out) - ) - (br $while-in) - ) - ) - (br $label$continue$L7) - ) - ) - (return - (local.get $i$lcssa) - ) - ) - (func $loophi2b (; 55 ;) (result i32) - (local $jnc i32) - (local $i i32) - (local $i$lcssa i32) - (local $temp i32) - (local $j i32) - (local.set $i - (i32.const 0) - ) - (loop $label$continue$L7 - (block $label$break$L7 - (local.set $j - (i32.const 0) - ) - (loop $while-in - (block $while-out - (local.set $temp - (local.get $j) - ) - (if - (call $return_int) - (if - (local.get $temp) - (block - (local.set $i$lcssa - (local.get $j) - ) - (br $label$break$L7) - ) - ) - ) - (local.set $jnc - (i32.add - (local.get $j) - (i32.const 1) - ) - ) - (if - (local.get $jnc) - (local.set $j - (local.get $jnc) - ) - (br $while-out) - ) - (br $while-in) - ) - ) - (br $label$continue$L7) - ) - ) - (return - (local.get $i$lcssa) - ) - ) - (func $relooperJumpThreading (; 56 ;) (param $x i32) (result i32) - (local $label i32) - (if - (local.get $x) - (block - (call $h - (i32.const 0) - ) - (local.set $label - (i32.const 1) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 1) - ) - (call $h - (i32.const 1) - ) - ) - (call $h - (i32.const -1) - ) - (loop $while-in - (block $while-out - (local.set $x - (i32.add - (local.get $x) - (i32.const 1) - ) - ) - (if - (local.get $x) - (block - (call $h - (i32.const 2) - ) - (local.set $label - (i32.const 2) - ) - (br $while-out) - ) - ) - (br $while-in) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 2) - ) - (call $h - (i32.const 3) - ) - ) - (call $h - (i32.const -2) - ) - (if - (local.get $x) - (block - (call $h - (i32.const 4) - ) - (if - (i32.eq - (local.get $x) - (i32.const 3) - ) - (local.set $label - (i32.const 3) - ) - (local.set $label - (i32.const 4) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 3) - ) - (call $h - (i32.const 5) - ) - (if - (i32.eq - (local.get $label) - (i32.const 4) - ) - (call $h - (i32.const 6) - ) - ) - ) - (call $h - (i32.const -3) - ) - (if - (local.get $x) - (block - (call $h - (i32.const 7) - ) - (if - (i32.eq - (local.get $x) - (i32.const 5) - ) - (local.set $label - (i32.const 5) - ) - (local.set $label - (i32.const 6) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 5) - ) - (block - (call $h - (i32.const 8) - ) - (if - (i32.eq - (local.get $x) - (i32.const 6) - ) - (local.set $label - (i32.const 6) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 6) - ) - (call $h - (i32.const 9) - ) - ) - (call $h - (i32.const -4) - ) - (if - (local.get $x) - (block - (call $h - (i32.const 10) - ) - (local.set $label - (i32.const 7) - ) - ) - ) - (block $label$break$L1 - (if - (i32.eq - (local.get $label) - (i32.const 7) - ) - (block - (call $h - (i32.const 11) - ) - (br $label$break$L1) - ) - ) - ) - (call $h - (i32.const -5) - ) - (if - (local.get $x) - (block - (call $h - (i32.const 12) - ) - (if - (i32.eq - (local.get $x) - (i32.const 8) - ) - (local.set $label - (i32.const 8) - ) - (local.set $label - (i32.const 9) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 8) - ) - (block - (call $h - (i32.const 13) - ) - (if - (local.get $x) - (local.set $label - (i32.const 9) - ) - ) - ) - ) - (block $label$break$L10 - (if - (i32.eq - (local.get $label) - (i32.const 9) - ) - (block - (call $h - (i32.const 14) - ) - (br $label$break$L10) - ) - ) - ) - (call $h - (i32.const -6) - ) - (return - (local.get $x) - ) - ) - (func $relooperJumpThreading__ZN4game14preloadweaponsEv (; 57 ;) (param $$12 i32) (param $$14 i32) (param $$or$cond8 i32) (param $$or$cond6 i32) (param $$vararg_ptr5 i32) (param $$11 i32) (param $$exitcond i32) - (local $label i32) - (loop $while-in - (block $while-out - (if - (local.get $$14) - (if - (local.get $$or$cond8) - (local.set $label - (i32.const 7) - ) - (local.set $label - (i32.const 8) - ) - ) - (if - (local.get $$or$cond6) - (local.set $label - (i32.const 7) - ) - (local.set $label - (i32.const 8) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 7) - ) - (local.set $label - (i32.const 0) - ) - (if - (i32.eq - (local.get $label) - (i32.const 8) - ) - (block - (local.set $label - (i32.const 0) - ) - (i32.store - (local.get $$vararg_ptr5) - (local.get $$11) - ) - ) - ) - ) - (br $while-in) - ) - ) - ) - (func $relooperJumpThreading_irreducible (; 58 ;) (param $x i32) - (local $label i32) - (if - (i32.eq - (local.get $x) - (i32.const 100) - ) - (local.set $label - (i32.const 1) - ) - (local.set $label - (i32.const 10) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 1) - ) - (loop $while-in - (block $while-out - (call $relooperJumpThreading_irreducible - (i32.const 1337) - ) - (local.set $label - (i32.const 1) - ) - (br $while-in) - ) - ) - ) - (if - (i32.eq - (local.get $x) - (i32.const 200) - ) - (local.set $label - (i32.const 2) - ) - (local.set $label - (i32.const 10) - ) - ) - (if - (i32.eq - (local.get $x) - (i32.const 300) - ) - (local.set $label - (i32.const 2) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 2) - ) - (call $relooperJumpThreading_irreducible - (i32.const 1448) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 10) - ) - (call $relooperJumpThreading_irreducible - (i32.const 2000) - ) - ) - ) - (func $__Z12multi_varargiz (; 59 ;) (param $$0 i32) (param $$$06$i4 i32) (param $$exitcond$i6 i32) (param $$2 i32) - (local $$12 i32) - (local $$20 i32) - (if - (local.get $$2) - (loop $while-in - (block $while-out - (local.set $$12 - (local.get $$$06$i4) - ) - (if - (local.get $$exitcond$i6) - (br $while-out) - (local.set $$$06$i4 - (local.get $$20) - ) - ) - (br $while-in) - ) - ) - (drop - (call $lb - (i32.const 1) - ) - ) - ) - ) - (func $jumpThreadDrop (; 60 ;) (result i32) - (local $label i32) - (local $temp i32) - (local.set $temp - (call $return_int) - ) - (loop $while-in - (block $while-out - (local.set $label - (i32.const 14) - ) - (br $while-out) - (br $while-in) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 10) - ) - (nop) - (if - (i32.eq - (local.get $label) - (i32.const 12) - ) - (drop - (call $return_int) - ) - (if - (i32.eq - (local.get $label) - (i32.const 14) - ) - (nop) - ) - ) - ) - (return - (local.get $temp) - ) - ) - (func $dropIgnoredImportInIf (; 61 ;) (param $$0 i32) (param $$1 i32) (param $$2 i32) - (block $do-once - (if - (local.get $$0) - (block - (local.set $$0 - (i32.const 1) - ) - (drop - (call $lb - (local.get $$2) - ) - ) - ) - (br $do-once) - ) - (nop) - ) - (return) - ) - (func $big_fround (; 62 ;) (result f32) - (return - (f32.const 4294967296) - ) - ) - (func $dropIgnoredImportsInIf (; 63 ;) (param $$0 i32) (param $$1 i32) (param $$2 i32) - (block $do-once - (if - (local.get $$0) - (drop - (call $lb - (local.get $$1) - ) - ) - (drop - (call $lb - (local.get $$2) - ) - ) - ) - (nop) - ) - (return) - ) - (func $f32_ucast (; 64 ;) (param $x i32) (result f32) - (return - (f32.convert_i32_u - (local.get $x) - ) - ) - ) - (func $f32_scast (; 65 ;) (param $x i32) (result f32) - (return - (f32.convert_i32_s - (local.get $x) - ) - ) - ) - (func $store_fround (; 66 ;) (param $x i32) - (f64.store - (i32.const 80) - (f64.promote_f32 - (f32.convert_i32_s - (local.get $x) - ) - ) - ) - ) - (func $relocatableAndModules (; 67 ;) (result i32) - (call_indirect (type $none_=>_none) - (i32.const 10) - ) - (call_indirect (type $none_=>_none) - (i32.const 20) - ) - (return - (call_indirect (type $f64_i32_=>_i32) - (f64.const 1.5) - (i32.const 200) - (i32.const 30) - ) - ) - ) - (func $exported_f32_user (; 68 ;) (param $x i32) (param $y f32) (param $z f64) (result f32) - (return - (local.get $y) - ) - ) - (func $sqrts (; 69 ;) (param $x f64) (result f64) - (return - (f64.add - (f64.sqrt - (local.get $x) - ) - (f64.promote_f32 - (f32.sqrt - (f32.demote_f64 - (local.get $x) - ) - ) - ) - ) - ) - ) - (func $f2u (; 70 ;) (param $x f64) (result i32) - (return - (i32.trunc_f64_u - (local.get $x) - ) - ) - ) - (func $f2s (; 71 ;) (param $x f64) (result i32) - (return - (i32.trunc_f64_s - (local.get $x) - ) - ) - ) - (func $autoDrop (; 72 ;) (param $x i32) (result i32) - (loop $while-in - (block $while-out - (if - (i32.eq - (local.get $x) - (i32.const 17) - ) - (block - (return - (i32.const 5) - ) - (drop - (call $autoDrop - (i32.const 1) - ) - ) - ) - (block - (br $while-out) - (local.set $x - (call $autoDrop - (i32.const 2) - ) - ) - ) - ) - (br $while-in) - ) - ) - (return - (local.get $x) - ) - ) - (func $indirectInSequence (; 73 ;) - (local $i1 i32) - (local.set $i1 - (block (result i32) - (call_indirect (type $i32_=>_none) - (i32.const 0) - (i32.add - (i32.and - (i32.const 1) - (i32.const 7) - ) - (i32.const 16) - ) - ) - (i32.const 1) - ) - ) - ) - (func $emterpretify_assertions_safeHeap (; 74 ;) - (local $i1 i32) - (call_indirect (type $i32_=>_none) - (local.get $i1) - (i32.add - (i32.and - (block (result i32) - (global.set $Int - (i32.const 1) - ) - (global.get $Int) - ) - (i32.const 7) - ) - (i32.const 16) - ) - ) - ) - (func $call_emscripten_log (; 75 ;) - (call $emscripten_log) - (if - (i32.const 2) - (drop - (i32.trunc_f64_s - (call $abort - (f64.const 0) - ) - ) - ) - (drop - (i32.const 3) - ) - ) - ) - (func $mod_detectSign (; 76 ;) (param $d1 f64) (param $d2 f64) (param $d8 f64) (result i32) - (return - (i32.trunc_f64_s - (f64.sub - (local.get $d2) - (f64.mul - (f64.div - (call $f64-rem - (local.get $d8) - (local.get $d1) - ) - (local.get $d1) - ) - (local.get $d2) - ) - ) - ) - ) - ) - (func $keepAlive (; 77 ;) - (drop - (call $sqrts - (f64.const 3.14159) - ) - ) - (drop - (call $sqrts - (f64.const 2.18281) - ) - ) - (drop - (call $f2u - (f64.const 100) - ) - ) - (drop - (call $f2s - (f64.const 100) - ) - ) - (drop - (call $autoDrop - (i32.const 52) - ) - ) - (call $indirectInSequence) - (call $emterpretify_assertions_safeHeap) - (call $call_emscripten_log) - (drop - (call $mod_detectSign - (f64.const 1) - (f64.const 2.31) - (f64.const 9.78) - ) - ) - (global.set $nonZero - (i32.add - (global.get $nonZero) - (i32.const 1) - ) - ) - ) - (func $v (; 78 ;) - (nop) - ) - (func $vi (; 79 ;) (param $x i32) - (nop) - ) - (func $ii (; 80 ;) (param $x i32) (result i32) - (return - (local.get $x) - ) - ) -) diff -Nru binaryen-91/test/unit.fromasm.no-opts binaryen-99/test/unit.fromasm.no-opts --- binaryen-91/test/unit.fromasm.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unit.fromasm.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,2176 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (type $f32_=>_none (func (param f32))) - (type $none_=>_f64 (func (result f64))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $f64_=>_i32 (func (param f64) (result i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $none_=>_f32 (func (result f32))) - (type $i32_=>_f32 (func (param i32) (result f32))) - (type $f64_=>_f64 (func (param f64) (result f64))) - (type $f64_f64_=>_f64 (func (param f64 f64) (result f64))) - (type $i32_i32_=>_none (func (param i32 i32))) - (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) - (type $i32_i32_i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32 i32 i32))) - (type $i32_f32_=>_none (func (param i32 f32))) - (type $i32_f64_f32_=>_none (func (param i32 f64 f32))) - (type $f32_f64_=>_none (func (param f32 f64))) - (type $f64_i32_=>_i32 (func (param f64 i32) (result i32))) - (type $f64_f64_f64_=>_i32 (func (param f64 f64 f64) (result i32))) - (type $i32_f32_f64_=>_f32 (func (param i32 f32 f64) (result f32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 25 25 funcref)) - (elem (global.get $__table_base) $v $big_negative $v $v $w $w $importedDoubles $w $z $cneg $z $z $z $z $z $z $vi $vi $vi $vi $vi $vi $vi $vi $ii) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "global" "NaN" (global $t$asm2wasm$import f64)) - (import "global" "Infinity" (global $u$asm2wasm$import f64)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) - (import "env" "gb" (global $n$asm2wasm$import i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "setTempRet0" (func $setTempRet0 (param i32) (result i32))) - (import "env" "abort" (func $abort (param f64) (result f64))) - (import "env" "print" (func $print (param i32))) - (import "env" "h" (func $h (param i32))) - (import "env" "return_int" (func $return_int (result i32))) - (import "env" "emscripten_log" (func $emscripten_log)) - (import "asm2wasm" "f64-to-int" (func $f64-to-int (param f64) (result i32))) - (import "asm2wasm" "f64-rem" (func $f64-rem (param f64 f64) (result f64))) - (global $t (mut f64) (global.get $t$asm2wasm$import)) - (global $u (mut f64) (global.get $u$asm2wasm$import)) - (global $Int (mut i32) (i32.const 0)) - (global $Double (mut f64) (f64.const 0)) - (global $tempDoublePtr (mut i32) (global.get $tempDoublePtr$asm2wasm$import)) - (global $n (mut i32) (global.get $n$asm2wasm$import)) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (global $nonZero (mut i32) (i32.const 1337)) - (global $exportedNumber i32 (i32.const 42)) - (export "big_negative" (func $big_negative)) - (export "pick" (func $exportMe)) - (export "doubleCompares" (func $doubleCompares)) - (export "intOps" (func $intOps)) - (export "conversions" (func $conversions)) - (export "switcher" (func $switcher)) - (export "frem" (func $frem)) - (export "frem_float" (func $frem_float)) - (export "big_uint_div_u" (func $big_uint_div_u)) - (export "trapping_sint_div_s" (func $trapping_sint_div_s)) - (export "fr" (func $fr)) - (export "negZero" (func $negZero)) - (export "neg" (func $neg)) - (export "smallCompare" (func $smallCompare)) - (export "cneg_nosemicolon" (func $cneg_nosemicolon)) - (export "forLoop" (func $forLoop)) - (export "ceiling_32_64" (func $ceiling_32_64)) - (export "aborts" (func $aborts)) - (export "continues" (func $continues)) - (export "bitcasts" (func $bitcasts)) - (export "recursiveBlockMerging" (func $recursiveBlockMerging)) - (export "lb" (func $lb)) - (export "zeroInit" (func $zeroInit)) - (export "phi" (func $phi)) - (export "smallIf" (func $smallIf)) - (export "dropCall" (func $dropCall)) - (export "useGlobalSet" (func $useGlobalSet)) - (export "usesGlobalSet2" (func $usesGlobalSet2)) - (export "breakThroughMany" (func $breakThroughMany)) - (export "ifChainEmpty" (func $ifChainEmpty)) - (export "heap8NoShift" (func $heap8NoShift)) - (export "conditionalTypeFun" (func $conditionalTypeFun)) - (export "loadSigned" (func $loadSigned)) - (export "globalOpts" (func $globalOpts)) - (export "dropCallImport" (func $dropCallImport)) - (export "loophi" (func $loophi)) - (export "loophi2" (func $loophi2)) - (export "loophi2b" (func $loophi2b)) - (export "relooperJumpThreading" (func $relooperJumpThreading)) - (export "relooperJumpThreading__ZN4game14preloadweaponsEv" (func $relooperJumpThreading__ZN4game14preloadweaponsEv)) - (export "__Z12multi_varargiz" (func $__Z12multi_varargiz)) - (export "jumpThreadDrop" (func $jumpThreadDrop)) - (export "dropIgnoredImportInIf" (func $dropIgnoredImportInIf)) - (export "dropIgnoredImportsInIf" (func $dropIgnoredImportsInIf)) - (export "relooperJumpThreading_irreducible" (func $relooperJumpThreading_irreducible)) - (export "store_fround" (func $store_fround)) - (export "exportedNumber" (global $exportedNumber)) - (export "relocatableAndModules" (func $relocatableAndModules)) - (export "exported_f32_user" (func $exported_f32_user)) - (export "keepAlive" (func $keepAlive)) - (func $big_negative (; 8 ;) - (local $temp f64) - (local.set $temp - (f64.const -2147483648) - ) - (local.set $temp - (f64.const -2147483648) - ) - (local.set $temp - (f64.const -21474836480) - ) - (local.set $temp - (f64.const 0.039625) - ) - (local.set $temp - (f64.const -0.039625) - ) - ) - (func $importedDoubles (; 9 ;) (result f64) - (local $temp f64) - (local.set $temp - (f64.add - (f64.add - (f64.add - (global.get $t) - (global.get $u) - ) - (f64.neg - (global.get $u) - ) - ) - (f64.neg - (global.get $t) - ) - ) - ) - (if - (i32.gt_s - (global.get $Int) - (i32.const 0) - ) - (return - (f64.const -3.4) - ) - ) - (if - (f64.gt - (global.get $Double) - (f64.const 0) - ) - (return - (f64.const 5.6) - ) - ) - (return - (f64.const 1.2) - ) - ) - (func $doubleCompares (; 10 ;) (param $x f64) (param $y f64) (result f64) - (local $t f64) - (local $Int f64) - (local $Double i32) - (if - (f64.gt - (local.get $x) - (f64.const 0) - ) - (return - (f64.const 1.2) - ) - ) - (local.set $Int - (local.get $x) - ) - (local.set $Double - (global.get $n) - ) - (if - (f64.gt - (local.get $Int) - (f64.const 0) - ) - (return - (f64.const -3.4) - ) - ) - (if - (i32.gt_s - (local.get $Double) - (i32.const 0) - ) - (return - (f64.const 5.6) - ) - ) - (if - (f64.lt - (local.get $x) - (local.get $y) - ) - (return - (local.get $x) - ) - ) - (return - (local.get $y) - ) - ) - (func $intOps (; 11 ;) (param $x i32) (result i32) - (return - (i32.eqz - (local.get $x) - ) - ) - ) - (func $hexLiterals (; 12 ;) - (local $i i32) - (local.set $i - (i32.add - (i32.add - (i32.const 0) - (i32.const 313249263) - ) - (i32.const -19088752) - ) - ) - ) - (func $conversions (; 13 ;) (param $i i32) (param $d f64) (param $f f32) - (local.set $i - (call $f64-to-int - (local.get $d) - ) - ) - (local.set $i - (call $f64-to-int - (f64.promote_f32 - (local.get $f) - ) - ) - ) - (local.set $d - (f64.convert_i32_s - (local.get $i) - ) - ) - (local.set $d - (f64.convert_i32_u - (local.get $i) - ) - ) - ) - (func $seq (; 14 ;) - (local $J f64) - (local.set $J - (f64.sub - (block (result f64) - (drop - (f64.const 0.1) - ) - (f64.const 5.1) - ) - (block (result f64) - (drop - (f64.const 3.2) - ) - (f64.const 4.2) - ) - ) - ) - ) - (func $switcher (; 15 ;) (param $x i32) (result i32) - (local $waka i32) - (block $switch - (block $switch-case0 - (block $switch-case - (br_table $switch-case $switch-case0 $switch - (i32.sub - (local.get $x) - (i32.const 1) - ) - ) - ) - (return - (i32.const 1) - ) - ) - (return - (i32.const 2) - ) - ) - (block $switch1 - (block $switch-case3 - (block $switch-case2 - (br_table $switch-case3 $switch1 $switch1 $switch1 $switch1 $switch1 $switch1 $switch-case2 $switch1 - (i32.sub - (local.get $x) - (i32.const 5) - ) - ) - ) - (return - (i32.const 121) - ) - ) - (return - (i32.const 51) - ) - ) - (block $label$break$Lout - (block $switch-case9 - (block $switch-case6 - (block $switch-case5 - (block $switch-case4 - (br_table $switch-case9 $label$break$Lout $label$break$Lout $switch-case6 $label$break$Lout $label$break$Lout $label$break$Lout $label$break$Lout $switch-case5 $label$break$Lout $switch-case4 $label$break$Lout - (i32.sub - (local.get $x) - (i32.const 2) - ) - ) - ) - (br $label$break$Lout) - ) - (br $label$break$Lout) - ) - (block - (loop $while-in - (block $while-out - (br $while-out) - (br $while-in) - ) - ) - (br $label$break$Lout) - ) - ) - (block - (loop $while-in8 - (block $while-out7 - (br $label$break$Lout) - (br $while-in8) - ) - ) - (br $label$break$Lout) - ) - ) - (loop $label$continue$L1 - (block $label$break$L1 - (loop $label$continue$L3 - (block $label$break$L3 - (block $switch10 - (block $switch-default - (block $switch-case13 - (block $switch-case12 - (block $switch-case11 - (br_table $switch-case11 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case13 $switch-default $switch-default $switch-default $switch-default $switch-default $switch-case12 $switch-default - (i32.sub - (local.get $x) - (i32.const -1) - ) - ) - ) - (block - (br $label$break$L1) - (br $switch10) - ) - ) - (block - (local.set $waka - (i32.const 1) - ) - (br $switch10) - ) - ) - (block - (br $label$break$L3) - (br $switch10) - ) - ) - (br $label$break$L1) - ) - (br $label$continue$L3) - ) - ) - (call $h - (i32.const 120) - ) - (br $label$continue$L1) - ) - ) - (return - (i32.const 0) - ) - ) - (func $blocker (; 16 ;) - (block $label$break$L - (br $label$break$L) - ) - ) - (func $frem (; 17 ;) (result f64) - (return - (call $f64-rem - (f64.const 5.5) - (f64.const 1.2) - ) - ) - ) - (func $frem_float (; 18 ;) (result f32) - (return - (f32.demote_f64 - (call $f64-rem - (f64.promote_f32 - (f32.const 5.5) - ) - (f64.promote_f32 - (f32.const 1.2000000476837158) - ) - ) - ) - ) - ) - (func $i32u-div (; 19 ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (i32.eqz - (local.get $1) - ) - (i32.const 0) - (i32.div_u - (local.get $0) - (local.get $1) - ) - ) - ) - (func $big_uint_div_u (; 20 ;) (result i32) - (local $x i32) - (local.set $x - (i32.and - (call $i32u-div - (i32.const -1) - (i32.const 2) - ) - (i32.const -1) - ) - ) - (return - (local.get $x) - ) - ) - (func $i32s-div (; 21 ;) (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (i32.eqz - (local.get $1) - ) - (i32.const 0) - (if (result i32) - (i32.and - (i32.eq - (local.get $0) - (i32.const -2147483648) - ) - (i32.eq - (local.get $1) - (i32.const -1) - ) - ) - (i32.const 0) - (i32.div_s - (local.get $0) - (local.get $1) - ) - ) - ) - ) - (func $trapping_sint_div_s (; 22 ;) (result i32) - (local $x i32) - (local.set $x - (call $i32s-div - (i32.const -2147483648) - (i32.const -1) - ) - ) - (return - (local.get $x) - ) - ) - (func $fr (; 23 ;) (param $x f32) - (local $y f32) - (local $z f64) - (drop - (f32.demote_f64 - (local.get $z) - ) - ) - (drop - (local.get $y) - ) - (drop - (f32.const 5) - ) - (drop - (f32.const 0) - ) - (drop - (f32.const 5) - ) - (drop - (f32.const 0) - ) - ) - (func $negZero (; 24 ;) (result f64) - (return - (f64.const -0) - ) - ) - (func $abs (; 25 ;) - (local $x i32) - (local $y f64) - (local $z f32) - (local $asm2wasm_i32_temp i32) - (local.set $x - (block (result i32) - (local.set $asm2wasm_i32_temp - (i32.const 0) - ) - (select - (i32.sub - (i32.const 0) - (local.get $asm2wasm_i32_temp) - ) - (local.get $asm2wasm_i32_temp) - (i32.lt_s - (local.get $asm2wasm_i32_temp) - (i32.const 0) - ) - ) - ) - ) - (local.set $y - (f64.abs - (f64.const 0) - ) - ) - (local.set $z - (f32.abs - (f32.const 0) - ) - ) - ) - (func $minmax (; 26 ;) - (local $x f64) - (local $y f64) - (local $z f32) - (local $w f32) - (local.set $x - (f64.min - (local.get $x) - (local.get $y) - ) - ) - (local.set $y - (f64.max - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (f32.min - (local.get $z) - (local.get $w) - ) - ) - (local.set $w - (f32.max - (local.get $z) - (local.get $w) - ) - ) - ) - (func $neg (; 27 ;) - (local $x f32) - (local.set $x - (f32.neg - (local.get $x) - ) - ) - (call_indirect (type $f32_=>_none) - (local.get $x) - (i32.add - (i32.and - (i32.const 1) - (i32.const 7) - ) - (i32.const 8) - ) - ) - ) - (func $cneg (; 28 ;) (param $x f32) - (call_indirect (type $f32_=>_none) - (local.get $x) - (i32.add - (i32.and - (i32.const 1) - (i32.const 7) - ) - (i32.const 8) - ) - ) - ) - (func $___syscall_ret (; 29 ;) - (local $$0 i32) - (drop - (i32.gt_u - (local.get $$0) - (i32.const -4096) - ) - ) - ) - (func $smallCompare (; 30 ;) (param $i i32) (param $j i32) (result i32) - (if - (i32.lt_s - (local.get $i) - (local.get $j) - ) - (local.set $i - (i32.add - (local.get $i) - (i32.const 1) - ) - ) - ) - (if - (i32.lt_u - (local.get $i) - (local.get $j) - ) - (local.set $i - (i32.add - (local.get $i) - (i32.const 1) - ) - ) - ) - (return - (local.get $i) - ) - ) - (func $cneg_nosemicolon (; 31 ;) - (call_indirect (type $i32_=>_none) - (i32.const 1) - (i32.add - (i32.and - (i32.const 1) - (i32.const 7) - ) - (i32.const 16) - ) - ) - ) - (func $forLoop (; 32 ;) - (local $i i32) - (local.set $i - (i32.const 1) - ) - (loop $for-in - (block $for-out - (if - (i32.eqz - (i32.lt_s - (local.get $i) - (i32.const 200) - ) - ) - (br $for-out) - ) - (call $h - (local.get $i) - ) - (local.set $i - (i32.add - (local.get $i) - (i32.const 1) - ) - ) - (br $for-in) - ) - ) - ) - (func $ceiling_32_64 (; 33 ;) (param $u f32) (param $B f64) - (local $temp f32) - (local.set $temp - (f32.demote_f64 - (f64.ceil - (local.get $B) - ) - ) - ) - (local.set $temp - (f32.mul - (local.get $u) - (f32.ceil - (f32.demote_f64 - (local.get $B) - ) - ) - ) - ) - ) - (func $aborts (; 34 ;) - (drop - (call $abort - (f64.const 0) - ) - ) - (drop - (call $abort - (f64.convert_i32_s - (i32.const 55) - ) - ) - ) - (drop - (call $abort - (f64.const 0) - ) - ) - (drop - (call $abort - (f64.const 12.34) - ) - ) - (drop - (call $abort - (f64.promote_f32 - (f32.const 56.779998779296875) - ) - ) - ) - ) - (func $continues (; 35 ;) - (loop $while-in - (block $while-out - (call $print - (i32.const 1) - ) - (block $do-once - (loop $unlikely-continue - (call $print - (i32.const 5) - ) - (if - (call $return_int) - (br $unlikely-continue) - ) - ) - ) - (call $print - (i32.const 2) - ) - (br $while-in) - ) - ) - ) - (func $bitcasts (; 36 ;) (param $i i32) (param $f f32) - (local $d f64) - (drop - (f32.reinterpret_i32 - (local.get $i) - ) - ) - (drop - (f64.promote_f32 - (f32.reinterpret_i32 - (local.get $i) - ) - ) - ) - (drop - (i32.reinterpret_f32 - (local.get $f) - ) - ) - (drop - (i32.reinterpret_f32 - (f32.demote_f64 - (local.get $d) - ) - ) - ) - ) - (func $recursiveBlockMerging (; 37 ;) (param $x i32) (result i32) - (drop - (call $lb - (i32.add - (i32.add - (i32.add - (block (result i32) - (drop - (i32.const 1) - ) - (local.get $x) - ) - (block (result i32) - (drop - (i32.const 2) - ) - (i32.const 3) - ) - ) - (block (result i32) - (block - (block - (drop - (i32.const 4) - ) - (drop - (i32.const 5) - ) - ) - (drop - (i32.const 6) - ) - ) - (i32.const 7) - ) - ) - (block (result i32) - (drop - (i32.const 8) - ) - (block (result i32) - (drop - (i32.const 9) - ) - (block (result i32) - (drop - (i32.const 10) - ) - (block (result i32) - (drop - (i32.const 11) - ) - (i32.const 12) - ) - ) - ) - ) - ) - ) - ) - (local.set $x - (i32.add - (i32.add - (i32.add - (block (result i32) - (drop - (call $lb - (i32.const 1) - ) - ) - (local.get $x) - ) - (block (result i32) - (drop - (call $lb - (i32.const 2) - ) - ) - (call $lb - (i32.const 3) - ) - ) - ) - (block (result i32) - (block - (block - (drop - (call $lb - (i32.const 4) - ) - ) - (drop - (call $lb - (i32.const 5) - ) - ) - ) - (drop - (call $lb - (i32.const 6) - ) - ) - ) - (call $lb - (i32.const 7) - ) - ) - ) - (block (result i32) - (drop - (call $lb - (i32.const 8) - ) - ) - (block (result i32) - (drop - (call $lb - (i32.const 9) - ) - ) - (block (result i32) - (drop - (call $lb - (i32.const 10) - ) - ) - (block (result i32) - (drop - (call $lb - (i32.const 11) - ) - ) - (call $lb - (i32.const 12) - ) - ) - ) - ) - ) - ) - ) - (return - (local.get $x) - ) - ) - (func $lb (; 38 ;) (param $a i32) (result i32) - (i32.store - (local.get $a) - (i32.add - (i32.add - (global.get $n) - (i32.const 136) - ) - (i32.const 8) - ) - ) - (return - (i32.const 0) - ) - ) - (func $forgetMe (; 39 ;) - (drop - (f64.const 123.456) - ) - ) - (func $exportMe (; 40 ;) - (drop - (f64.const -3.14159) - ) - ) - (func $zeroInit (; 41 ;) (param $x i32) - (local $y i32) - (if - (call $lb - (i32.const 0) - ) - (if - (call $lb - (i32.const 1) - ) - (local.set $y - (i32.const 3) - ) - ) - (local.set $y - (i32.const 3) - ) - ) - (if - (i32.eq - (local.get $y) - (i32.const 3) - ) - (drop - (call $lb - (i32.const 2) - ) - ) - ) - ) - (func $phi (; 42 ;) (result i32) - (local $x i32) - (block $do-once - (block - (if - (call $lb - (i32.const 1) - ) - (block - (local.set $x - (i32.const 0) - ) - (br $do-once) - ) - ) - (local.set $x - (i32.const 1) - ) - ) - ) - (return - (local.get $x) - ) - ) - (func $smallIf (; 43 ;) - (block $do-once - (if - (call $return_int) - (drop - (call $lb - (i32.const 3) - ) - ) - (br $do-once) - ) - (nop) - ) - ) - (func $dropCall (; 44 ;) (result i32) - (if - (call $return_int) - (block - (drop - (call $phi) - ) - (drop - (call $setTempRet0 - (i32.const 10) - ) - ) - (call $zeroInit - (call $setTempRet0 - (i32.const 10) - ) - ) - ) - ) - (return - (call $phi) - ) - ) - (func $useGlobalSet (; 45 ;) (result i32) - (local $x i32) - (local.set $x - (block (result i32) - (global.set $Int - (i32.const 10) - ) - (global.get $Int) - ) - ) - (global.set $Int - (i32.const 20) - ) - (return - (block (result i32) - (global.set $Int - (i32.const 30) - ) - (global.get $Int) - ) - ) - ) - (func $usesGlobalSet2 (; 46 ;) (result i32) - (return - (block (result i32) - (block - (global.set $Int - (i32.const 40) - ) - (drop - (global.get $Int) - ) - ) - (i32.const 50) - ) - ) - ) - (func $breakThroughMany (; 47 ;) (param $$s i32) - (block $label$break$L1 - (if - (local.get $$s) - (loop $while-in - (block $while-out - (if - (i32.eqz - (local.get $$s) - ) - (br $label$break$L1) - ) - (call $zeroInit - (i32.const 0) - ) - (br $while-in) - ) - ) - (drop - (i32.const 1337) - ) - ) - (nop) - ) - ) - (func $ifChainEmpty (; 48 ;) (param $label i32) (result i32) - (if - (i32.eq - (local.get $label) - (i32.const 4) - ) - (return - (i32.const 0) - ) - (if - (i32.eq - (local.get $label) - (i32.const 7) - ) - (nop) - ) - ) - (return - (i32.const 0) - ) - ) - (func $heap8NoShift (; 49 ;) (param $x i32) (result i32) - (return - (i32.load8_s - (local.get $x) - ) - ) - ) - (func $conditionalTypeFun (; 50 ;) - (local $x i32) - (local $y f64) - (local.set $x - (if (result i32) - (call $return_int) - (call $f64-to-int - (call $abort - (f64.convert_i32_s - (i32.const 5) - ) - ) - ) - (i32.const 2) - ) - ) - (local.set $y - (if (result f64) - (call $return_int) - (call $abort - (f64.convert_i32_s - (i32.const 7) - ) - ) - (f64.const 4.5) - ) - ) - ) - (func $loadSigned (; 51 ;) (param $x i32) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load8_s - (local.get $x) - ) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load8_u - (local.get $x) - ) - (i32.const 24) - ) - (i32.const 24) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load16_s - (local.get $x) - ) - (i32.const 16) - ) - (i32.const 16) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load16_u - (local.get $x) - ) - (i32.const 16) - ) - (i32.const 16) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load8_s - (local.get $x) - ) - (i32.const 24) - ) - (i32.const 16) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load8_u - (local.get $x) - ) - (i32.const 16) - ) - (i32.const 24) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load16_s - (local.get $x) - ) - (i32.const 16) - ) - (i32.const 24) - ) - ) - (call $loadSigned - (i32.shr_s - (i32.shl - (i32.load16_u - (local.get $x) - ) - (i32.const 24) - ) - (i32.const 16) - ) - ) - ) - (func $z (; 52 ;) (param $x f32) - (nop) - ) - (func $w (; 53 ;) (result f64) - (return - (f64.const 0) - ) - ) - (func $globalOpts (; 54 ;) - (local $x i32) - (local $y f64) - (local.set $x - (global.get $Int) - ) - (local.set $y - (global.get $Double) - ) - (i32.store8 - (i32.const 13) - (i32.load - (i32.const 12) - ) - ) - (global.set $Double - (local.get $y) - ) - (global.set $Int - (local.get $x) - ) - (call $globalOpts) - (local.set $x - (global.get $Int) - ) - (if - (call $return_int) - (global.set $Int - (i32.const 20) - ) - ) - (global.set $Int - (local.get $x) - ) - (call $globalOpts) - (local.set $x - (global.get $Int) - ) - (call $globalOpts) - (global.set $Int - (local.get $x) - ) - ) - (func $dropCallImport (; 55 ;) - (if - (call $return_int) - (drop - (call $return_int) - ) - ) - ) - (func $loophi (; 56 ;) (param $x i32) (param $y i32) - (local $temp i32) - (local $inc i32) - (local $loopvar i32) - (local.set $loopvar - (local.get $x) - ) - (loop $while-in - (block $while-out - (call $loophi - (local.get $loopvar) - (i32.const 0) - ) - (local.set $temp - (local.get $loopvar) - ) - (if - (local.get $temp) - (if - (local.get $temp) - (br $while-out) - ) - ) - (local.set $inc - (i32.add - (local.get $loopvar) - (i32.const 1) - ) - ) - (if - (i32.eq - (local.get $inc) - (local.get $y) - ) - (local.set $loopvar - (local.get $inc) - ) - (br $while-out) - ) - (br $while-in) - ) - ) - ) - (func $loophi2 (; 57 ;) (result i32) - (local $jnc i32) - (local $i i32) - (local $i$lcssa i32) - (local $temp i32) - (local $j i32) - (local.set $i - (i32.const 0) - ) - (loop $label$continue$L7 - (block $label$break$L7 - (local.set $j - (i32.const 0) - ) - (loop $while-in - (block $while-out - (local.set $temp - (local.get $j) - ) - (if - (call $return_int) - (if - (local.get $temp) - (block - (local.set $i$lcssa - (local.get $i) - ) - (br $label$break$L7) - ) - ) - ) - (local.set $jnc - (i32.add - (local.get $j) - (i32.const 1) - ) - ) - (if - (local.get $jnc) - (local.set $j - (local.get $jnc) - ) - (br $while-out) - ) - (br $while-in) - ) - ) - (br $label$continue$L7) - ) - ) - (return - (local.get $i$lcssa) - ) - ) - (func $loophi2b (; 58 ;) (result i32) - (local $jnc i32) - (local $i i32) - (local $i$lcssa i32) - (local $temp i32) - (local $j i32) - (local.set $i - (i32.const 0) - ) - (loop $label$continue$L7 - (block $label$break$L7 - (local.set $j - (i32.const 0) - ) - (loop $while-in - (block $while-out - (local.set $temp - (local.get $j) - ) - (if - (call $return_int) - (if - (local.get $temp) - (block - (local.set $i$lcssa - (local.get $j) - ) - (br $label$break$L7) - ) - ) - ) - (local.set $jnc - (i32.add - (local.get $j) - (i32.const 1) - ) - ) - (if - (local.get $jnc) - (local.set $j - (local.get $jnc) - ) - (br $while-out) - ) - (br $while-in) - ) - ) - (br $label$continue$L7) - ) - ) - (return - (local.get $i$lcssa) - ) - ) - (func $relooperJumpThreading (; 59 ;) (param $x i32) (result i32) - (local $label i32) - (if - (local.get $x) - (block - (call $h - (i32.const 0) - ) - (local.set $label - (i32.const 1) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 1) - ) - (call $h - (i32.const 1) - ) - ) - (call $h - (i32.const -1) - ) - (loop $while-in - (block $while-out - (local.set $x - (i32.add - (local.get $x) - (i32.const 1) - ) - ) - (if - (local.get $x) - (block - (call $h - (i32.const 2) - ) - (local.set $label - (i32.const 2) - ) - (br $while-out) - ) - ) - (br $while-in) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 2) - ) - (call $h - (i32.const 3) - ) - ) - (call $h - (i32.const -2) - ) - (if - (local.get $x) - (block - (call $h - (i32.const 4) - ) - (if - (i32.eq - (local.get $x) - (i32.const 3) - ) - (local.set $label - (i32.const 3) - ) - (local.set $label - (i32.const 4) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 3) - ) - (call $h - (i32.const 5) - ) - (if - (i32.eq - (local.get $label) - (i32.const 4) - ) - (call $h - (i32.const 6) - ) - ) - ) - (call $h - (i32.const -3) - ) - (if - (local.get $x) - (block - (call $h - (i32.const 7) - ) - (if - (i32.eq - (local.get $x) - (i32.const 5) - ) - (local.set $label - (i32.const 5) - ) - (local.set $label - (i32.const 6) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 5) - ) - (block - (call $h - (i32.const 8) - ) - (if - (i32.eq - (local.get $x) - (i32.const 6) - ) - (local.set $label - (i32.const 6) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 6) - ) - (call $h - (i32.const 9) - ) - ) - (call $h - (i32.const -4) - ) - (if - (local.get $x) - (block - (call $h - (i32.const 10) - ) - (local.set $label - (i32.const 7) - ) - ) - ) - (block $label$break$L1 - (if - (i32.eq - (local.get $label) - (i32.const 7) - ) - (block - (call $h - (i32.const 11) - ) - (br $label$break$L1) - ) - ) - ) - (call $h - (i32.const -5) - ) - (if - (local.get $x) - (block - (call $h - (i32.const 12) - ) - (if - (i32.eq - (local.get $x) - (i32.const 8) - ) - (local.set $label - (i32.const 8) - ) - (local.set $label - (i32.const 9) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 8) - ) - (block - (call $h - (i32.const 13) - ) - (if - (local.get $x) - (local.set $label - (i32.const 9) - ) - ) - ) - ) - (block $label$break$L10 - (if - (i32.eq - (local.get $label) - (i32.const 9) - ) - (block - (call $h - (i32.const 14) - ) - (br $label$break$L10) - ) - ) - ) - (call $h - (i32.const -6) - ) - (return - (local.get $x) - ) - ) - (func $relooperJumpThreading__ZN4game14preloadweaponsEv (; 60 ;) (param $$12 i32) (param $$14 i32) (param $$or$cond8 i32) (param $$or$cond6 i32) (param $$vararg_ptr5 i32) (param $$11 i32) (param $$exitcond i32) - (local $label i32) - (loop $while-in - (block $while-out - (if - (local.get $$14) - (if - (local.get $$or$cond8) - (local.set $label - (i32.const 7) - ) - (local.set $label - (i32.const 8) - ) - ) - (if - (local.get $$or$cond6) - (local.set $label - (i32.const 7) - ) - (local.set $label - (i32.const 8) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 7) - ) - (local.set $label - (i32.const 0) - ) - (if - (i32.eq - (local.get $label) - (i32.const 8) - ) - (block - (local.set $label - (i32.const 0) - ) - (i32.store - (local.get $$vararg_ptr5) - (local.get $$11) - ) - ) - ) - ) - (br $while-in) - ) - ) - ) - (func $relooperJumpThreading_irreducible (; 61 ;) (param $x i32) - (local $label i32) - (if - (i32.eq - (local.get $x) - (i32.const 100) - ) - (local.set $label - (i32.const 1) - ) - (local.set $label - (i32.const 10) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 1) - ) - (loop $while-in - (block $while-out - (call $relooperJumpThreading_irreducible - (i32.const 1337) - ) - (local.set $label - (i32.const 1) - ) - (br $while-in) - ) - ) - ) - (if - (i32.eq - (local.get $x) - (i32.const 200) - ) - (local.set $label - (i32.const 2) - ) - (local.set $label - (i32.const 10) - ) - ) - (if - (i32.eq - (local.get $x) - (i32.const 300) - ) - (local.set $label - (i32.const 2) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 2) - ) - (call $relooperJumpThreading_irreducible - (i32.const 1448) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 10) - ) - (call $relooperJumpThreading_irreducible - (i32.const 2000) - ) - ) - ) - (func $__Z12multi_varargiz (; 62 ;) (param $$0 i32) (param $$$06$i4 i32) (param $$exitcond$i6 i32) (param $$2 i32) - (local $$12 i32) - (local $$20 i32) - (if - (local.get $$2) - (loop $while-in - (block $while-out - (local.set $$12 - (local.get $$$06$i4) - ) - (if - (local.get $$exitcond$i6) - (br $while-out) - (local.set $$$06$i4 - (local.get $$20) - ) - ) - (br $while-in) - ) - ) - (drop - (call $lb - (i32.const 1) - ) - ) - ) - ) - (func $jumpThreadDrop (; 63 ;) (result i32) - (local $label i32) - (local $temp i32) - (local.set $temp - (call $return_int) - ) - (loop $while-in - (block $while-out - (local.set $label - (i32.const 14) - ) - (br $while-out) - (br $while-in) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 10) - ) - (nop) - (if - (i32.eq - (local.get $label) - (i32.const 12) - ) - (drop - (call $return_int) - ) - (if - (i32.eq - (local.get $label) - (i32.const 14) - ) - (nop) - ) - ) - ) - (return - (local.get $temp) - ) - ) - (func $dropIgnoredImportInIf (; 64 ;) (param $$0 i32) (param $$1 i32) (param $$2 i32) - (block $do-once - (if - (local.get $$0) - (block - (local.set $$0 - (i32.const 1) - ) - (drop - (call $lb - (local.get $$2) - ) - ) - ) - (br $do-once) - ) - (nop) - ) - (return) - ) - (func $big_fround (; 65 ;) (result f32) - (return - (f32.const 4294967296) - ) - ) - (func $dropIgnoredImportsInIf (; 66 ;) (param $$0 i32) (param $$1 i32) (param $$2 i32) - (block $do-once - (if - (local.get $$0) - (drop - (call $lb - (local.get $$1) - ) - ) - (drop - (call $lb - (local.get $$2) - ) - ) - ) - (nop) - ) - (return) - ) - (func $f32_ucast (; 67 ;) (param $x i32) (result f32) - (return - (f32.convert_i32_u - (local.get $x) - ) - ) - ) - (func $f32_scast (; 68 ;) (param $x i32) (result f32) - (return - (f32.convert_i32_s - (local.get $x) - ) - ) - ) - (func $store_fround (; 69 ;) (param $x i32) - (f64.store - (i32.const 80) - (f64.promote_f32 - (f32.convert_i32_s - (local.get $x) - ) - ) - ) - ) - (func $relocatableAndModules (; 70 ;) (result i32) - (call_indirect (type $none_=>_none) - (i32.const 10) - ) - (call_indirect (type $none_=>_none) - (i32.const 20) - ) - (return - (call_indirect (type $f64_i32_=>_i32) - (f64.const 1.5) - (i32.const 200) - (i32.const 30) - ) - ) - ) - (func $exported_f32_user (; 71 ;) (param $x i32) (param $y f32) (param $z f64) (result f32) - (return - (local.get $y) - ) - ) - (func $sqrts (; 72 ;) (param $x f64) (result f64) - (return - (f64.add - (f64.sqrt - (local.get $x) - ) - (f64.promote_f32 - (f32.sqrt - (f32.demote_f64 - (local.get $x) - ) - ) - ) - ) - ) - ) - (func $f2u (; 73 ;) (param $x f64) (result i32) - (return - (call $f64-to-int - (local.get $x) - ) - ) - ) - (func $f2s (; 74 ;) (param $x f64) (result i32) - (return - (call $f64-to-int - (local.get $x) - ) - ) - ) - (func $autoDrop (; 75 ;) (param $x i32) (result i32) - (loop $while-in - (block $while-out - (if - (i32.eq - (local.get $x) - (i32.const 17) - ) - (block - (return - (i32.const 5) - ) - (drop - (call $autoDrop - (i32.const 1) - ) - ) - ) - (block - (br $while-out) - (local.set $x - (call $autoDrop - (i32.const 2) - ) - ) - ) - ) - (br $while-in) - ) - ) - (return - (local.get $x) - ) - ) - (func $indirectInSequence (; 76 ;) - (local $i1 i32) - (local.set $i1 - (block (result i32) - (call_indirect (type $i32_=>_none) - (i32.const 0) - (i32.add - (i32.and - (i32.const 1) - (i32.const 7) - ) - (i32.const 16) - ) - ) - (i32.const 1) - ) - ) - ) - (func $emterpretify_assertions_safeHeap (; 77 ;) - (local $i1 i32) - (call_indirect (type $i32_=>_none) - (local.get $i1) - (i32.add - (i32.and - (block (result i32) - (global.set $Int - (i32.const 1) - ) - (global.get $Int) - ) - (i32.const 7) - ) - (i32.const 16) - ) - ) - ) - (func $call_emscripten_log (; 78 ;) - (call $emscripten_log) - (if - (i32.const 2) - (drop - (call $f64-to-int - (call $abort - (f64.const 0) - ) - ) - ) - (drop - (i32.const 3) - ) - ) - ) - (func $mod_detectSign (; 79 ;) (param $d1 f64) (param $d2 f64) (param $d8 f64) (result i32) - (return - (call $f64-to-int - (f64.sub - (local.get $d2) - (f64.mul - (f64.div - (call $f64-rem - (local.get $d8) - (local.get $d1) - ) - (local.get $d1) - ) - (local.get $d2) - ) - ) - ) - ) - ) - (func $keepAlive (; 80 ;) - (drop - (call $sqrts - (f64.const 3.14159) - ) - ) - (drop - (call $sqrts - (f64.const 2.18281) - ) - ) - (drop - (call $f2u - (f64.const 100) - ) - ) - (drop - (call $f2s - (f64.const 100) - ) - ) - (drop - (call $autoDrop - (i32.const 52) - ) - ) - (call $indirectInSequence) - (call $emterpretify_assertions_safeHeap) - (call $call_emscripten_log) - (drop - (call $mod_detectSign - (f64.const 1) - (f64.const 2.31) - (f64.const 9.78) - ) - ) - (global.set $nonZero - (i32.add - (global.get $nonZero) - (i32.const 1) - ) - ) - ) - (func $v (; 81 ;) - (nop) - ) - (func $vi (; 82 ;) (param $x i32) - (nop) - ) - (func $ii (; 83 ;) (param $x i32) (result i32) - (return - (local.get $x) - ) - ) -) diff -Nru binaryen-91/test/unreachable-code.wast.fromBinary binaryen-99/test/unreachable-code.wast.fromBinary --- binaryen-91/test/unreachable-code.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unreachable-code.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,32 +1,32 @@ (module (type $none_=>_none (func)) - (func $a (; 0 ;) + (func $a (if (i32.const 1) (unreachable) ) ) - (func $b (; 1 ;) + (func $b (if (i32.const 1) (unreachable) (unreachable) ) ) - (func $a-block (; 2 ;) + (func $a-block (if (i32.const 1) (unreachable) ) ) - (func $b-block (; 3 ;) + (func $b-block (if (i32.const 1) (unreachable) (unreachable) ) ) - (func $a-prepost (; 4 ;) + (func $a-prepost (nop) (if (i32.const 1) @@ -34,7 +34,7 @@ ) (nop) ) - (func $b-prepost (; 5 ;) + (func $b-prepost (nop) (if (i32.const 1) @@ -42,7 +42,7 @@ (unreachable) ) ) - (func $a-block-prepost (; 6 ;) + (func $a-block-prepost (nop) (block $label$1 (if @@ -52,7 +52,7 @@ ) (nop) ) - (func $b-block-prepost (; 7 ;) + (func $b-block-prepost (nop) (block $label$1 (if @@ -62,7 +62,7 @@ ) ) ) - (func $recurse (; 8 ;) + (func $recurse (nop) (block $label$1 (nop) @@ -70,7 +70,7 @@ ) (nop) ) - (func $recurse-b (; 9 ;) + (func $recurse-b (block $label$1 (nop) (block $label$2 diff -Nru binaryen-91/test/unreachable-code.wast.fromBinary.noDebugInfo binaryen-99/test/unreachable-code.wast.fromBinary.noDebugInfo --- binaryen-91/test/unreachable-code.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unreachable-code.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -1,32 +1,32 @@ (module (type $none_=>_none (func)) - (func $0 (; 0 ;) + (func $0 (if (i32.const 1) (unreachable) ) ) - (func $1 (; 1 ;) + (func $1 (if (i32.const 1) (unreachable) (unreachable) ) ) - (func $2 (; 2 ;) + (func $2 (if (i32.const 1) (unreachable) ) ) - (func $3 (; 3 ;) + (func $3 (if (i32.const 1) (unreachable) (unreachable) ) ) - (func $4 (; 4 ;) + (func $4 (nop) (if (i32.const 1) @@ -34,7 +34,7 @@ ) (nop) ) - (func $5 (; 5 ;) + (func $5 (nop) (if (i32.const 1) @@ -42,7 +42,7 @@ (unreachable) ) ) - (func $6 (; 6 ;) + (func $6 (nop) (block $label$1 (if @@ -52,7 +52,7 @@ ) (nop) ) - (func $7 (; 7 ;) + (func $7 (nop) (block $label$1 (if @@ -62,7 +62,7 @@ ) ) ) - (func $8 (; 8 ;) + (func $8 (nop) (block $label$1 (nop) @@ -70,7 +70,7 @@ ) (nop) ) - (func $9 (; 9 ;) + (func $9 (block $label$1 (nop) (block $label$2 diff -Nru binaryen-91/test/unreachable-code.wast.from-wast binaryen-99/test/unreachable-code.wast.from-wast --- binaryen-91/test/unreachable-code.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unreachable-code.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,19 +1,19 @@ (module (type $none_=>_none (func)) - (func $a (; 0 ;) + (func $a (if (i32.const 1) (unreachable) ) ) - (func $b (; 1 ;) + (func $b (if (i32.const 1) (unreachable) (unreachable) ) ) - (func $a-block (; 2 ;) + (func $a-block (block $block (if (i32.const 1) @@ -21,7 +21,7 @@ ) ) ) - (func $b-block (; 3 ;) + (func $b-block (block $block (if (i32.const 1) @@ -30,7 +30,7 @@ ) ) ) - (func $a-prepost (; 4 ;) + (func $a-prepost (nop) (if (i32.const 1) @@ -38,7 +38,7 @@ ) (nop) ) - (func $b-prepost (; 5 ;) + (func $b-prepost (nop) (if (i32.const 1) @@ -47,7 +47,7 @@ ) (nop) ) - (func $a-block-prepost (; 6 ;) + (func $a-block-prepost (nop) (block $block (if @@ -57,7 +57,7 @@ ) (nop) ) - (func $b-block-prepost (; 7 ;) + (func $b-block-prepost (nop) (block $block (if @@ -68,7 +68,7 @@ ) (nop) ) - (func $recurse (; 8 ;) + (func $recurse (block $a (nop) (block $b @@ -79,7 +79,7 @@ (nop) ) ) - (func $recurse-b (; 9 ;) + (func $recurse-b (block $a (nop) (block $b diff -Nru binaryen-91/test/unreachable-import_wasm-only.asm.js binaryen-99/test/unreachable-import_wasm-only.asm.js --- binaryen-91/test/unreachable-import_wasm-only.asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unreachable-import_wasm-only.asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,107 +0,0 @@ -function asm(global, env, buffer) { - "use asm"; - - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - - var DYNAMICTOP_PTR=env.DYNAMICTOP_PTR|0; - var tempDoublePtr=env.tempDoublePtr|0; - var ABORT=env.ABORT|0; - var STACKTOP=env.STACKTOP|0; - var STACK_MAX=env.STACK_MAX|0; - var ___async=env.___async|0; - var ___async_unwind=env.___async_unwind|0; - var ___async_retval=env.___async_retval|0; - var ___async_cur_frame=env.___async_cur_frame|0; - - var __THREW__ = 0; - var threwValue = 0; - var setjmpId = 0; - var undef = 0; - var nan = global.NaN, inf = global.Infinity; - var tempInt = 0, tempBigInt = 0, tempBigIntP = 0, tempBigIntS = 0, tempBigIntR = 0.0, tempBigIntI = 0, tempBigIntD = 0, tempValue = 0, tempDouble = 0.0; - var tempRet0 = 0; - - var Math_floor=global.Math.floor; - var Math_abs=global.Math.abs; - var Math_sqrt=global.Math.sqrt; - var Math_pow=global.Math.pow; - var Math_cos=global.Math.cos; - var Math_sin=global.Math.sin; - var Math_tan=global.Math.tan; - var Math_acos=global.Math.acos; - var Math_asin=global.Math.asin; - var Math_atan=global.Math.atan; - var Math_atan2=global.Math.atan2; - var Math_exp=global.Math.exp; - var Math_log=global.Math.log; - var Math_ceil=global.Math.ceil; - var Math_imul=global.Math.imul; - var Math_min=global.Math.min; - var Math_max=global.Math.max; - var Math_clz32=global.Math.clz32; - var Math_fround=global.Math.fround; - var abort=env.abort; - var assert=env.assert; - var enlargeMemory=env.enlargeMemory; - var getTotalMemory=env.getTotalMemory; - var abortOnCannotGrowMemory=env.abortOnCannotGrowMemory; - var invoke_iiii=env.invoke_iiii; - var invoke_viiiii=env.invoke_viiiii; - var invoke_vi=env.invoke_vi; - var invoke_ii=env.invoke_ii; - var invoke_v=env.invoke_v; - var invoke_viiiiii=env.invoke_viiiiii; - var invoke_viiii=env.invoke_viiii; - var _pthread_cleanup_pop=env._pthread_cleanup_pop; - var _pthread_key_create=env._pthread_key_create; - var ___syscall6=env.___syscall6; - var ___gxx_personality_v0=env.___gxx_personality_v0; - var ___assert_fail=env.___assert_fail; - var ___cxa_allocate_exception=env.___cxa_allocate_exception; - var __ZSt18uncaught_exceptionv=env.__ZSt18uncaught_exceptionv; - var ___setErrNo=env.___setErrNo; - var ___cxa_begin_catch=env.___cxa_begin_catch; - var _emscripten_memcpy_big=env._emscripten_memcpy_big; - var ___resumeException=env.___resumeException; - var ___cxa_find_matching_catch=env.___cxa_find_matching_catch; - var _pthread_getspecific=env._pthread_getspecific; - var _pthread_once=env._pthread_once; - var ___syscall54=env.___syscall54; - var ___unlock=env.___unlock; - var _pthread_setspecific=env._pthread_setspecific; - var ___cxa_throw=env.___cxa_throw; - var ___lock=env.___lock; - var _abort=env._abort; - var _pthread_cleanup_push=env._pthread_cleanup_push; - var ___syscall140=env.___syscall140; - var ___cxa_pure_virtual=env.___cxa_pure_virtual; - var ___syscall146=env.___syscall146; - var tempFloat = Math_fround(0); - const f0 = Math_fround(0); - -function __ZN10WasmAssertC2Ev__async_cb($0) { - $0 = $0|0; - switch (0) { - case 0: { - store4(12,26); - return; - break; - } - default: { - $0 = (___cxa_allocate_exception(4)|0); - store4($0,1); - ___cxa_throw(($0|0),(1280|0),(0|0)); - } - } -} - - return { __ZN10WasmAssertC2Ev__async_cb: __ZN10WasmAssertC2Ev__async_cb }; -} - diff -Nru binaryen-91/test/unreachable-import_wasm-only.fromasm binaryen-99/test/unreachable-import_wasm-only.fromasm --- binaryen-91/test/unreachable-import_wasm-only.fromasm 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unreachable-import_wasm-only.fromasm 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "unreachable-import_wasm-only.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (export "__ZN10WasmAssertC2Ev__async_cb" (func $__ZN10WasmAssertC2Ev__async_cb)) - (func $__ZN10WasmAssertC2Ev__async_cb (; 0 ;) (; has Stack IR ;) (param $0 i32) - (i32.store - (i32.const 12) - (i32.const 26) - ) - ) -) diff -Nru binaryen-91/test/unreachable-import_wasm-only.fromasm.clamp binaryen-99/test/unreachable-import_wasm-only.fromasm.clamp --- binaryen-91/test/unreachable-import_wasm-only.fromasm.clamp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unreachable-import_wasm-only.fromasm.clamp 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "unreachable-import_wasm-only.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) - (export "__ZN10WasmAssertC2Ev__async_cb" (func $__ZN10WasmAssertC2Ev__async_cb)) - (func $__ZN10WasmAssertC2Ev__async_cb (; 0 ;) (; has Stack IR ;) (param $0 i32) - (i32.store - (i32.const 12) - (i32.const 26) - ) - ) -) diff -Nru binaryen-91/test/unreachable-import_wasm-only.fromasm.clamp.no-opts binaryen-99/test/unreachable-import_wasm-only.fromasm.clamp.no-opts --- binaryen-91/test/unreachable-import_wasm-only.fromasm.clamp.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unreachable-import_wasm-only.fromasm.clamp.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,88 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "DYNAMICTOP_PTR" (global $DYNAMICTOP_PTR$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) - (import "env" "ABORT" (global $ABORT$asm2wasm$import i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) - (import "env" "___async" (global $___async$asm2wasm$import i32)) - (import "env" "___async_unwind" (global $___async_unwind$asm2wasm$import i32)) - (import "env" "___async_retval" (global $___async_retval$asm2wasm$import i32)) - (import "env" "___async_cur_frame" (global $___async_cur_frame$asm2wasm$import i32)) - (import "global" "NaN" (global $nan$asm2wasm$import f64)) - (import "global" "Infinity" (global $inf$asm2wasm$import f64)) - (import "env" "___cxa_allocate_exception" (func $___cxa_allocate_exception (param i32) (result i32))) - (import "env" "___cxa_throw" (func $___cxa_throw (param i32 i32 i32))) - (global $DYNAMICTOP_PTR (mut i32) (global.get $DYNAMICTOP_PTR$asm2wasm$import)) - (global $tempDoublePtr (mut i32) (global.get $tempDoublePtr$asm2wasm$import)) - (global $ABORT (mut i32) (global.get $ABORT$asm2wasm$import)) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (global $STACK_MAX (mut i32) (global.get $STACK_MAX$asm2wasm$import)) - (global $___async (mut i32) (global.get $___async$asm2wasm$import)) - (global $___async_unwind (mut i32) (global.get $___async_unwind$asm2wasm$import)) - (global $___async_retval (mut i32) (global.get $___async_retval$asm2wasm$import)) - (global $___async_cur_frame (mut i32) (global.get $___async_cur_frame$asm2wasm$import)) - (global $__THREW__ (mut i32) (i32.const 0)) - (global $threwValue (mut i32) (i32.const 0)) - (global $setjmpId (mut i32) (i32.const 0)) - (global $undef (mut i32) (i32.const 0)) - (global $nan (mut f64) (global.get $nan$asm2wasm$import)) - (global $inf (mut f64) (global.get $inf$asm2wasm$import)) - (global $tempInt (mut i32) (i32.const 0)) - (global $tempBigInt (mut i32) (i32.const 0)) - (global $tempBigIntP (mut i32) (i32.const 0)) - (global $tempBigIntS (mut i32) (i32.const 0)) - (global $tempBigIntR (mut f64) (f64.const 0)) - (global $tempBigIntI (mut i32) (i32.const 0)) - (global $tempBigIntD (mut i32) (i32.const 0)) - (global $tempValue (mut i32) (i32.const 0)) - (global $tempDouble (mut f64) (f64.const 0)) - (global $tempRet0 (mut i32) (i32.const 0)) - (global $tempFloat (mut f32) (f32.const 0)) - (global $f0 (mut f32) (f32.const 0)) - (export "__ZN10WasmAssertC2Ev__async_cb" (func $__ZN10WasmAssertC2Ev__async_cb)) - (func $__ZN10WasmAssertC2Ev__async_cb (; 2 ;) (param $$0 i32) - (block $switch - (block $switch-default - (block $switch-case - (br_table $switch-case $switch-default - (i32.sub - (i32.const 0) - (i32.const 0) - ) - ) - ) - (block - (i32.store - (i32.const 12) - (i32.const 26) - ) - (return) - (br $switch) - ) - ) - (block - (local.set $$0 - (call $___cxa_allocate_exception - (i32.const 4) - ) - ) - (i32.store - (local.get $$0) - (i32.const 1) - ) - (call $___cxa_throw - (local.get $$0) - (i32.const 1280) - (i32.const 0) - ) - ) - ) - ) -) diff -Nru binaryen-91/test/unreachable-import_wasm-only.fromasm.imprecise binaryen-99/test/unreachable-import_wasm-only.fromasm.imprecise --- binaryen-91/test/unreachable-import_wasm-only.fromasm.imprecise 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unreachable-import_wasm-only.fromasm.imprecise 1970-01-01 00:00:00.000000000 +0000 @@ -1,11 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (import "env" "memory" (memory $memory 256 256)) - (export "__ZN10WasmAssertC2Ev__async_cb" (func $__ZN10WasmAssertC2Ev__async_cb)) - (func $__ZN10WasmAssertC2Ev__async_cb (; 0 ;) (; has Stack IR ;) (param $0 i32) - (i32.store - (i32.const 12) - (i32.const 26) - ) - ) -) diff -Nru binaryen-91/test/unreachable-import_wasm-only.fromasm.imprecise.no-opts binaryen-99/test/unreachable-import_wasm-only.fromasm.imprecise.no-opts --- binaryen-91/test/unreachable-import_wasm-only.fromasm.imprecise.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unreachable-import_wasm-only.fromasm.imprecise.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,88 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "DYNAMICTOP_PTR" (global $DYNAMICTOP_PTR$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) - (import "env" "ABORT" (global $ABORT$asm2wasm$import i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) - (import "env" "___async" (global $___async$asm2wasm$import i32)) - (import "env" "___async_unwind" (global $___async_unwind$asm2wasm$import i32)) - (import "env" "___async_retval" (global $___async_retval$asm2wasm$import i32)) - (import "env" "___async_cur_frame" (global $___async_cur_frame$asm2wasm$import i32)) - (import "global" "NaN" (global $nan$asm2wasm$import f64)) - (import "global" "Infinity" (global $inf$asm2wasm$import f64)) - (import "env" "___cxa_allocate_exception" (func $___cxa_allocate_exception (param i32) (result i32))) - (import "env" "___cxa_throw" (func $___cxa_throw (param i32 i32 i32))) - (global $DYNAMICTOP_PTR (mut i32) (global.get $DYNAMICTOP_PTR$asm2wasm$import)) - (global $tempDoublePtr (mut i32) (global.get $tempDoublePtr$asm2wasm$import)) - (global $ABORT (mut i32) (global.get $ABORT$asm2wasm$import)) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (global $STACK_MAX (mut i32) (global.get $STACK_MAX$asm2wasm$import)) - (global $___async (mut i32) (global.get $___async$asm2wasm$import)) - (global $___async_unwind (mut i32) (global.get $___async_unwind$asm2wasm$import)) - (global $___async_retval (mut i32) (global.get $___async_retval$asm2wasm$import)) - (global $___async_cur_frame (mut i32) (global.get $___async_cur_frame$asm2wasm$import)) - (global $__THREW__ (mut i32) (i32.const 0)) - (global $threwValue (mut i32) (i32.const 0)) - (global $setjmpId (mut i32) (i32.const 0)) - (global $undef (mut i32) (i32.const 0)) - (global $nan (mut f64) (global.get $nan$asm2wasm$import)) - (global $inf (mut f64) (global.get $inf$asm2wasm$import)) - (global $tempInt (mut i32) (i32.const 0)) - (global $tempBigInt (mut i32) (i32.const 0)) - (global $tempBigIntP (mut i32) (i32.const 0)) - (global $tempBigIntS (mut i32) (i32.const 0)) - (global $tempBigIntR (mut f64) (f64.const 0)) - (global $tempBigIntI (mut i32) (i32.const 0)) - (global $tempBigIntD (mut i32) (i32.const 0)) - (global $tempValue (mut i32) (i32.const 0)) - (global $tempDouble (mut f64) (f64.const 0)) - (global $tempRet0 (mut i32) (i32.const 0)) - (global $tempFloat (mut f32) (f32.const 0)) - (global $f0 (mut f32) (f32.const 0)) - (export "__ZN10WasmAssertC2Ev__async_cb" (func $__ZN10WasmAssertC2Ev__async_cb)) - (func $__ZN10WasmAssertC2Ev__async_cb (; 2 ;) (param $$0 i32) - (block $switch - (block $switch-default - (block $switch-case - (br_table $switch-case $switch-default - (i32.sub - (i32.const 0) - (i32.const 0) - ) - ) - ) - (block - (i32.store - (i32.const 12) - (i32.const 26) - ) - (return) - (br $switch) - ) - ) - (block - (local.set $$0 - (call $___cxa_allocate_exception - (i32.const 4) - ) - ) - (i32.store - (local.get $$0) - (i32.const 1) - ) - (call $___cxa_throw - (local.get $$0) - (i32.const 1280) - (i32.const 0) - ) - ) - ) - ) -) diff -Nru binaryen-91/test/unreachable-import_wasm-only.fromasm.no-opts binaryen-99/test/unreachable-import_wasm-only.fromasm.no-opts --- binaryen-91/test/unreachable-import_wasm-only.fromasm.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unreachable-import_wasm-only.fromasm.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,88 +0,0 @@ -(module - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_=>_i32 (func (param i32) (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "DYNAMICTOP_PTR" (global $DYNAMICTOP_PTR$asm2wasm$import i32)) - (import "env" "tempDoublePtr" (global $tempDoublePtr$asm2wasm$import i32)) - (import "env" "ABORT" (global $ABORT$asm2wasm$import i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32)) - (import "env" "___async" (global $___async$asm2wasm$import i32)) - (import "env" "___async_unwind" (global $___async_unwind$asm2wasm$import i32)) - (import "env" "___async_retval" (global $___async_retval$asm2wasm$import i32)) - (import "env" "___async_cur_frame" (global $___async_cur_frame$asm2wasm$import i32)) - (import "global" "NaN" (global $nan$asm2wasm$import f64)) - (import "global" "Infinity" (global $inf$asm2wasm$import f64)) - (import "env" "___cxa_allocate_exception" (func $___cxa_allocate_exception (param i32) (result i32))) - (import "env" "___cxa_throw" (func $___cxa_throw (param i32 i32 i32))) - (global $DYNAMICTOP_PTR (mut i32) (global.get $DYNAMICTOP_PTR$asm2wasm$import)) - (global $tempDoublePtr (mut i32) (global.get $tempDoublePtr$asm2wasm$import)) - (global $ABORT (mut i32) (global.get $ABORT$asm2wasm$import)) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (global $STACK_MAX (mut i32) (global.get $STACK_MAX$asm2wasm$import)) - (global $___async (mut i32) (global.get $___async$asm2wasm$import)) - (global $___async_unwind (mut i32) (global.get $___async_unwind$asm2wasm$import)) - (global $___async_retval (mut i32) (global.get $___async_retval$asm2wasm$import)) - (global $___async_cur_frame (mut i32) (global.get $___async_cur_frame$asm2wasm$import)) - (global $__THREW__ (mut i32) (i32.const 0)) - (global $threwValue (mut i32) (i32.const 0)) - (global $setjmpId (mut i32) (i32.const 0)) - (global $undef (mut i32) (i32.const 0)) - (global $nan (mut f64) (global.get $nan$asm2wasm$import)) - (global $inf (mut f64) (global.get $inf$asm2wasm$import)) - (global $tempInt (mut i32) (i32.const 0)) - (global $tempBigInt (mut i32) (i32.const 0)) - (global $tempBigIntP (mut i32) (i32.const 0)) - (global $tempBigIntS (mut i32) (i32.const 0)) - (global $tempBigIntR (mut f64) (f64.const 0)) - (global $tempBigIntI (mut i32) (i32.const 0)) - (global $tempBigIntD (mut i32) (i32.const 0)) - (global $tempValue (mut i32) (i32.const 0)) - (global $tempDouble (mut f64) (f64.const 0)) - (global $tempRet0 (mut i32) (i32.const 0)) - (global $tempFloat (mut f32) (f32.const 0)) - (global $f0 (mut f32) (f32.const 0)) - (export "__ZN10WasmAssertC2Ev__async_cb" (func $__ZN10WasmAssertC2Ev__async_cb)) - (func $__ZN10WasmAssertC2Ev__async_cb (; 2 ;) (param $$0 i32) - (block $switch - (block $switch-default - (block $switch-case - (br_table $switch-case $switch-default - (i32.sub - (i32.const 0) - (i32.const 0) - ) - ) - ) - (block - (i32.store - (i32.const 12) - (i32.const 26) - ) - (return) - (br $switch) - ) - ) - (block - (local.set $$0 - (call $___cxa_allocate_exception - (i32.const 4) - ) - ) - (i32.store - (local.get $$0) - (i32.const 1) - ) - (call $___cxa_throw - (local.get $$0) - (i32.const 1280) - (i32.const 0) - ) - ) - ) - ) -) diff -Nru binaryen-91/test/unreachable-instr-type.wast binaryen-99/test/unreachable-instr-type.wast --- binaryen-91/test/unreachable-instr-type.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unreachable-instr-type.wast 2021-01-07 20:01:06.000000000 +0000 @@ -19,7 +19,7 @@ (i64.const 1) ) - (i64.atomic.wait + (memory.atomic.wait64 (unreachable) (i64.const 0) (i64.const 0) diff -Nru binaryen-91/test/unreachable-instr-type.wast.fromBinary binaryen-99/test/unreachable-instr-type.wast.fromBinary --- binaryen-91/test/unreachable-instr-type.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unreachable-instr-type.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (memory $0 (shared 1 1)) - (func $test (; 0 ;) + (func $test (unreachable) ) ) diff -Nru binaryen-91/test/unreachable-instr-type.wast.fromBinary.noDebugInfo binaryen-99/test/unreachable-instr-type.wast.fromBinary.noDebugInfo --- binaryen-91/test/unreachable-instr-type.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unreachable-instr-type.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (memory $0 (shared 1 1)) - (func $0 (; 0 ;) + (func $0 (unreachable) ) ) diff -Nru binaryen-91/test/unreachable-instr-type.wast.from-wast binaryen-99/test/unreachable-instr-type.wast.from-wast --- binaryen-91/test/unreachable-instr-type.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unreachable-instr-type.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ (module (type $none_=>_none (func)) (memory $0 (shared 1 1)) - (func $test (; 0 ;) + (func $test (i32.load (unreachable) ) @@ -18,7 +18,7 @@ (i64.const 0) (i64.const 1) ) - (i64.atomic.wait + (memory.atomic.wait64 (unreachable) (i64.const 0) (i64.const 0) diff -Nru binaryen-91/test/unreachable-pops.wasm.fromBinary binaryen-99/test/unreachable-pops.wasm.fromBinary --- binaryen-91/test/unreachable-pops.wasm.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/unreachable-pops.wasm.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ (module (type $none_=>_i32 (func (result i32))) - (func $0 (; 0 ;) (result i32) + (func $0 (result i32) (block $label$1 (result i32) (unreachable) ) diff -Nru binaryen-91/test/untaken-br_if.wast.fromBinary binaryen-99/test/untaken-br_if.wast.fromBinary --- binaryen-91/test/untaken-br_if.wast.fromBinary 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/untaken-br_if.wast.fromBinary 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ (module (type $none_=>_f32 (func (result f32))) - (func $binaryify-untaken-br_if (; 0 ;) (result f32) + (func $binaryify-untaken-br_if (result f32) (if (result f32) (i32.const 1) (unreachable) diff -Nru binaryen-91/test/untaken-br_if.wast.fromBinary.noDebugInfo binaryen-99/test/untaken-br_if.wast.fromBinary.noDebugInfo --- binaryen-91/test/untaken-br_if.wast.fromBinary.noDebugInfo 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/untaken-br_if.wast.fromBinary.noDebugInfo 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ (module (type $none_=>_f32 (func (result f32))) - (func $0 (; 0 ;) (result f32) + (func $0 (result f32) (if (result f32) (i32.const 1) (unreachable) diff -Nru binaryen-91/test/untaken-br_if.wast.from-wast binaryen-99/test/untaken-br_if.wast.from-wast --- binaryen-91/test/untaken-br_if.wast.from-wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/untaken-br_if.wast.from-wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ (module (type $none_=>_f32 (func (result f32))) - (func $binaryify-untaken-br_if (; 0 ;) (result f32) + (func $binaryify-untaken-br_if (result f32) (if (result f32) (i32.const 1) (unreachable) diff -Nru binaryen-91/test/use-import-and-drop.asm.js binaryen-99/test/use-import-and-drop.asm.js --- binaryen-91/test/use-import-and-drop.asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/use-import-and-drop.asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -Module["asm"] = (function(global, env, buffer) { - "use asm"; - var setTempRet0=env.setTempRet0; - var Math_imul = global.Math.imul; - function test1() { - var $b$1 = 0, $x_sroa_0_0_extract_trunc = 0, $2 = 0, $1$1 = 0, $1$0 = 0; - // Here we use setTempRet0 as if it returns i32, and later as if no return value. - // We should *not* expand the return type to f64, as this is not an overloaded return value - return (setTempRet0((((Math_imul($b$1, $x_sroa_0_0_extract_trunc) | 0) + $2 | 0) + $1$1 | $1$1 & 0) | 0), 0 | $1$0 & -1) | 0; - } - function test2() { - setTempRet0(10); - } - return { - }; -}); - - - diff -Nru binaryen-91/test/use-import-and-drop.fromasm binaryen-99/test/use-import-and-drop.fromasm --- binaryen-91/test/use-import-and-drop.fromasm 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/use-import-and-drop.fromasm 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -(module - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "use-import-and-drop.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) -) diff -Nru binaryen-91/test/use-import-and-drop.fromasm.clamp binaryen-99/test/use-import-and-drop.fromasm.clamp --- binaryen-91/test/use-import-and-drop.fromasm.clamp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/use-import-and-drop.fromasm.clamp 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -(module - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "use-import-and-drop.asm.js") - (import "env" "__memory_base" (global $__memory_base i32)) -) diff -Nru binaryen-91/test/use-import-and-drop.fromasm.clamp.no-opts binaryen-99/test/use-import-and-drop.fromasm.clamp.no-opts --- binaryen-91/test/use-import-and-drop.fromasm.clamp.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/use-import-and-drop.fromasm.clamp.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "setTempRet0" (func $setTempRet0 (param i32))) - (func $test1 (; 1 ;) (result i32) - (local $$b$1 i32) - (local $$x_sroa_0_0_extract_trunc i32) - (local $$2 i32) - (local $$1$1 i32) - (local $$1$0 i32) - (return - (block (result i32) - (call $setTempRet0 - (i32.or - (i32.add - (i32.add - (i32.mul - (local.get $$b$1) - (local.get $$x_sroa_0_0_extract_trunc) - ) - (local.get $$2) - ) - (local.get $$1$1) - ) - (i32.and - (local.get $$1$1) - (i32.const 0) - ) - ) - ) - (i32.or - (i32.const 0) - (i32.and - (local.get $$1$0) - (i32.const -1) - ) - ) - ) - ) - ) - (func $test2 (; 2 ;) - (call $setTempRet0 - (i32.const 10) - ) - ) -) diff -Nru binaryen-91/test/use-import-and-drop.fromasm.imprecise binaryen-99/test/use-import-and-drop.fromasm.imprecise --- binaryen-91/test/use-import-and-drop.fromasm.imprecise 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/use-import-and-drop.fromasm.imprecise 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -(module -) diff -Nru binaryen-91/test/use-import-and-drop.fromasm.imprecise.no-opts binaryen-99/test/use-import-and-drop.fromasm.imprecise.no-opts --- binaryen-91/test/use-import-and-drop.fromasm.imprecise.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/use-import-and-drop.fromasm.imprecise.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "setTempRet0" (func $setTempRet0 (param i32))) - (func $test1 (; 1 ;) (result i32) - (local $$b$1 i32) - (local $$x_sroa_0_0_extract_trunc i32) - (local $$2 i32) - (local $$1$1 i32) - (local $$1$0 i32) - (return - (block (result i32) - (call $setTempRet0 - (i32.or - (i32.add - (i32.add - (i32.mul - (local.get $$b$1) - (local.get $$x_sroa_0_0_extract_trunc) - ) - (local.get $$2) - ) - (local.get $$1$1) - ) - (i32.and - (local.get $$1$1) - (i32.const 0) - ) - ) - ) - (i32.or - (i32.const 0) - (i32.and - (local.get $$1$0) - (i32.const -1) - ) - ) - ) - ) - ) - (func $test2 (; 2 ;) - (call $setTempRet0 - (i32.const 10) - ) - ) -) diff -Nru binaryen-91/test/use-import-and-drop.fromasm.no-opts binaryen-99/test/use-import-and-drop.fromasm.no-opts --- binaryen-91/test/use-import-and-drop.fromasm.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/use-import-and-drop.fromasm.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $i32_=>_none (func (param i32))) - (type $none_=>_i32 (func (result i32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 0 0 funcref)) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "setTempRet0" (func $setTempRet0 (param i32))) - (func $test1 (; 1 ;) (result i32) - (local $$b$1 i32) - (local $$x_sroa_0_0_extract_trunc i32) - (local $$2 i32) - (local $$1$1 i32) - (local $$1$0 i32) - (return - (block (result i32) - (call $setTempRet0 - (i32.or - (i32.add - (i32.add - (i32.mul - (local.get $$b$1) - (local.get $$x_sroa_0_0_extract_trunc) - ) - (local.get $$2) - ) - (local.get $$1$1) - ) - (i32.and - (local.get $$1$1) - (i32.const 0) - ) - ) - ) - (i32.or - (i32.const 0) - (i32.and - (local.get $$1$0) - (i32.const -1) - ) - ) - ) - ) - ) - (func $test2 (; 2 ;) - (call $setTempRet0 - (i32.const 10) - ) - ) -) diff -Nru binaryen-91/test/wasm2js/add_div.2asm.js binaryen-99/test/wasm2js/add_div.2asm.js --- binaryen-91/test/wasm2js/add_div.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/add_div.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,36 +1,28 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function foo($0) { $0 = $0 | 0; return (($0 >>> 0) / (100 >>> 0) | 0) + (($0 | 0) / (-100 | 0) | 0) | 0 | 0; } - var FUNCTION_TABLE = []; return { "foo": foo }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var foo = retasmFunc.foo; diff -Nru binaryen-91/test/wasm2js/add_div.2asm.js.opt binaryen-99/test/wasm2js/add_div.2asm.js.opt --- binaryen-91/test/wasm2js/add_div.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/add_div.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,36 +1,28 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function foo($0) { $0 = $0 | 0; return (($0 | 0) / -100 | 0) + (($0 >>> 0) / 100 | 0) | 0; } - var FUNCTION_TABLE = []; return { "foo": foo }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var foo = retasmFunc.foo; diff -Nru binaryen-91/test/wasm2js/address.2asm.js binaryen-99/test/wasm2js/address.2asm.js --- binaryen-91/test/wasm2js/address.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/address.2asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,1912 +0,0 @@ - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; - var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - function $0(i) { - i = i | 0; - return HEAPU8[i >> 0] | 0 | 0; - } - - function $1(i) { - i = i | 0; - return HEAPU8[i >> 0] | 0 | 0; - } - - function $2(i) { - i = i | 0; - return HEAPU8[(i + 1 | 0) >> 0] | 0 | 0; - } - - function $3(i) { - i = i | 0; - return HEAPU8[(i + 2 | 0) >> 0] | 0 | 0; - } - - function $4(i) { - i = i | 0; - return HEAPU8[(i + 25 | 0) >> 0] | 0 | 0; - } - - function $5(i) { - i = i | 0; - return HEAP8[i >> 0] | 0 | 0; - } - - function $6(i) { - i = i | 0; - return HEAP8[i >> 0] | 0 | 0; - } - - function $7(i) { - i = i | 0; - return HEAP8[(i + 1 | 0) >> 0] | 0 | 0; - } - - function $8(i) { - i = i | 0; - return HEAP8[(i + 2 | 0) >> 0] | 0 | 0; - } - - function $9(i) { - i = i | 0; - return HEAP8[(i + 25 | 0) >> 0] | 0 | 0; - } - - function $10(i) { - i = i | 0; - return HEAPU16[i >> 1] | 0 | 0; - } - - function $11(i) { - i = i | 0; - var $1_1 = 0; - $1_1 = i; - return HEAPU8[$1_1 >> 0] | 0 | ((HEAPU8[($1_1 + 1 | 0) >> 0] | 0) << 8 | 0) | 0 | 0; - } - - function $12(i) { - i = i | 0; - var $1_1 = 0; - $1_1 = i; - return HEAPU8[($1_1 + 1 | 0) >> 0] | 0 | ((HEAPU8[($1_1 + 2 | 0) >> 0] | 0) << 8 | 0) | 0 | 0; - } - - function $13(i) { - i = i | 0; - return HEAPU16[(i + 2 | 0) >> 1] | 0 | 0; - } - - function $14(i) { - i = i | 0; - return HEAPU16[(i + 25 | 0) >> 1] | 0 | 0; - } - - function $15(i) { - i = i | 0; - return HEAP16[i >> 1] | 0 | 0; - } - - function $16(i) { - i = i | 0; - var $1_1 = 0; - $1_1 = i; - return ((HEAPU8[$1_1 >> 0] | 0 | ((HEAPU8[($1_1 + 1 | 0) >> 0] | 0) << 8 | 0) | 0) << 16 | 0) >> 16 | 0 | 0; - } - - function $17(i) { - i = i | 0; - var $1_1 = 0; - $1_1 = i; - return ((HEAPU8[($1_1 + 1 | 0) >> 0] | 0 | ((HEAPU8[($1_1 + 2 | 0) >> 0] | 0) << 8 | 0) | 0) << 16 | 0) >> 16 | 0 | 0; - } - - function $18(i) { - i = i | 0; - return HEAP16[(i + 2 | 0) >> 1] | 0 | 0; - } - - function $19(i) { - i = i | 0; - return HEAP16[(i + 25 | 0) >> 1] | 0 | 0; - } - - function $20(i) { - i = i | 0; - return HEAP32[i >> 2] | 0 | 0; - } - - function $21(i) { - i = i | 0; - var $1_1 = 0; - $1_1 = i; - return HEAPU8[$1_1 >> 0] | 0 | ((HEAPU8[($1_1 + 1 | 0) >> 0] | 0) << 8 | 0) | 0 | ((HEAPU8[($1_1 + 2 | 0) >> 0] | 0) << 16 | 0 | ((HEAPU8[($1_1 + 3 | 0) >> 0] | 0) << 24 | 0) | 0) | 0 | 0; - } - - function $22(i) { - i = i | 0; - var $1_1 = 0; - $1_1 = i; - return HEAPU8[($1_1 + 1 | 0) >> 0] | 0 | ((HEAPU8[($1_1 + 2 | 0) >> 0] | 0) << 8 | 0) | 0 | ((HEAPU8[($1_1 + 3 | 0) >> 0] | 0) << 16 | 0 | ((HEAPU8[($1_1 + 4 | 0) >> 0] | 0) << 24 | 0) | 0) | 0 | 0; - } - - function $23(i) { - i = i | 0; - var $1_1 = 0; - $1_1 = i; - return HEAPU16[($1_1 + 2 | 0) >> 1] | 0 | ((HEAPU16[($1_1 + 4 | 0) >> 1] | 0) << 16 | 0) | 0 | 0; - } - - function $24(i) { - i = i | 0; - return HEAP32[(i + 25 | 0) >> 2] | 0 | 0; - } - - function $25(i) { - i = i | 0; - HEAPU8[(i + 4294967295 | 0) >> 0] | 0; - } - - function $26(i) { - i = i | 0; - HEAP8[(i + 4294967295 | 0) >> 0] | 0; - } - - function $27(i) { - i = i | 0; - HEAPU16[(i + 4294967295 | 0) >> 1] | 0; - } - - function $28(i) { - i = i | 0; - HEAP16[(i + 4294967295 | 0) >> 1] | 0; - } - - function $29(i) { - i = i | 0; - HEAP32[(i + 4294967295 | 0) >> 2] | 0; - } - - var FUNCTION_TABLE = []; - function __wasm_memory_size() { - return buffer.byteLength / 65536 | 0; - } - - function __wasm_memory_grow(pagesToAdd) { - pagesToAdd = pagesToAdd | 0; - var oldPages = __wasm_memory_size() | 0; - var newPages = oldPages + pagesToAdd | 0; - if ((oldPages < newPages) && (newPages < 65536)) { - var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); - var newHEAP8 = new global.Int8Array(newBuffer); - newHEAP8.set(HEAP8); - HEAP8 = newHEAP8; - HEAP8 = new global.Int8Array(newBuffer); - HEAP16 = new global.Int16Array(newBuffer); - HEAP32 = new global.Int32Array(newBuffer); - HEAPU8 = new global.Uint8Array(newBuffer); - HEAPU16 = new global.Uint16Array(newBuffer); - HEAPU32 = new global.Uint32Array(newBuffer); - HEAPF32 = new global.Float32Array(newBuffer); - HEAPF64 = new global.Float64Array(newBuffer); - buffer = newBuffer; - } - return oldPages; - } - - return { - "$8u_good1": $0, - "$8u_good2": $1, - "$8u_good3": $2, - "$8u_good4": $3, - "$8u_good5": $4, - "$8s_good1": $5, - "$8s_good2": $6, - "$8s_good3": $7, - "$8s_good4": $8, - "$8s_good5": $9, - "$16u_good1": $10, - "$16u_good2": $11, - "$16u_good3": $12, - "$16u_good4": $13, - "$16u_good5": $14, - "$16s_good1": $15, - "$16s_good2": $16, - "$16s_good3": $17, - "$16s_good4": $18, - "$16s_good5": $19, - "$32_good1": $20, - "$32_good2": $21, - "$32_good3": $22, - "$32_good4": $23, - "$32_good5": $24, - "$8u_bad": $25, - "$8s_bad": $26, - "$16u_bad": $27, - "$16s_bad": $28, - "$32_bad": $29 - }; -} - -var memasmFunc = new ArrayBuffer(65536); -var assignasmFunc = ( - function(mem) { - var _mem = new Uint8Array(mem); - return function(offset, s) { - var bytes, i; - if (typeof Buffer === 'undefined') { - bytes = atob(s); - for (i = 0; i < bytes.length; i++) - _mem[offset + i] = bytes.charCodeAt(i); - } else { - bytes = Buffer.from(s, 'base64'); - for (i = 0; i < bytes.length; i++) - _mem[offset + i] = bytes[i]; - } - } - } - )(memasmFunc); -assignasmFunc(0, "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo="); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); -export var $8u_good1 = retasmFunc.$8u_good1; -export var $8u_good2 = retasmFunc.$8u_good2; -export var $8u_good3 = retasmFunc.$8u_good3; -export var $8u_good4 = retasmFunc.$8u_good4; -export var $8u_good5 = retasmFunc.$8u_good5; -export var $8s_good1 = retasmFunc.$8s_good1; -export var $8s_good2 = retasmFunc.$8s_good2; -export var $8s_good3 = retasmFunc.$8s_good3; -export var $8s_good4 = retasmFunc.$8s_good4; -export var $8s_good5 = retasmFunc.$8s_good5; -export var $16u_good1 = retasmFunc.$16u_good1; -export var $16u_good2 = retasmFunc.$16u_good2; -export var $16u_good3 = retasmFunc.$16u_good3; -export var $16u_good4 = retasmFunc.$16u_good4; -export var $16u_good5 = retasmFunc.$16u_good5; -export var $16s_good1 = retasmFunc.$16s_good1; -export var $16s_good2 = retasmFunc.$16s_good2; -export var $16s_good3 = retasmFunc.$16s_good3; -export var $16s_good4 = retasmFunc.$16s_good4; -export var $16s_good5 = retasmFunc.$16s_good5; -export var $32_good1 = retasmFunc.$32_good1; -export var $32_good2 = retasmFunc.$32_good2; -export var $32_good3 = retasmFunc.$32_good3; -export var $32_good4 = retasmFunc.$32_good4; -export var $32_good5 = retasmFunc.$32_good5; -export var $8u_bad = retasmFunc.$8u_bad; -export var $8s_bad = retasmFunc.$8s_bad; -export var $16u_bad = retasmFunc.$16u_bad; -export var $16s_bad = retasmFunc.$16s_bad; -export var $32_bad = retasmFunc.$32_bad; -import { setTempRet0 } from 'env'; - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; - var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var setTempRet0 = env.setTempRet0; - var i64toi32_i32$HIGH_BITS = 0; - function $0(i) { - i = i | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = HEAPU8[i >> 0] | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $1(i) { - i = i | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = HEAPU8[i >> 0] | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $2(i) { - i = i | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = HEAPU8[(i + 1 | 0) >> 0] | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $3(i) { - i = i | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = HEAPU8[(i + 2 | 0) >> 0] | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $4(i) { - i = i | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = HEAPU8[(i + 25 | 0) >> 0] | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $5(i) { - i = i | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = HEAP8[i >> 0] | 0; - i64toi32_i32$1 = i64toi32_i32$0 >> 31 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $6(i) { - i = i | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = HEAP8[i >> 0] | 0; - i64toi32_i32$1 = i64toi32_i32$0 >> 31 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $7(i) { - i = i | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = HEAP8[(i + 1 | 0) >> 0] | 0; - i64toi32_i32$1 = i64toi32_i32$0 >> 31 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $8(i) { - i = i | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = HEAP8[(i + 2 | 0) >> 0] | 0; - i64toi32_i32$1 = i64toi32_i32$0 >> 31 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $9(i) { - i = i | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = HEAP8[(i + 25 | 0) >> 0] | 0; - i64toi32_i32$1 = i64toi32_i32$0 >> 31 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $10(i) { - i = i | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = HEAPU16[i >> 1] | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $11(i) { - i = i | 0; - var $3_1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - $3_1 = i; - i64toi32_i32$0 = HEAPU8[$3_1 >> 0] | 0 | ((HEAPU8[($3_1 + 1 | 0) >> 0] | 0) << 8 | 0) | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $12(i) { - i = i | 0; - var $3_1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - $3_1 = i; - i64toi32_i32$0 = HEAPU8[($3_1 + 1 | 0) >> 0] | 0 | ((HEAPU8[($3_1 + 2 | 0) >> 0] | 0) << 8 | 0) | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $13(i) { - i = i | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = HEAPU16[(i + 2 | 0) >> 1] | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $14(i) { - i = i | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = HEAPU16[(i + 25 | 0) >> 1] | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $15(i) { - i = i | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = HEAP16[i >> 1] | 0; - i64toi32_i32$1 = i64toi32_i32$0 >> 31 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $16(i) { - i = i | 0; - var $3_1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - $3_1 = i; - i64toi32_i32$0 = ((HEAPU8[$3_1 >> 0] | 0 | ((HEAPU8[($3_1 + 1 | 0) >> 0] | 0) << 8 | 0) | 0) << 16 | 0) >> 16 | 0; - i64toi32_i32$1 = i64toi32_i32$0 >> 31 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $17(i) { - i = i | 0; - var $3_1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - $3_1 = i; - i64toi32_i32$0 = ((HEAPU8[($3_1 + 1 | 0) >> 0] | 0 | ((HEAPU8[($3_1 + 2 | 0) >> 0] | 0) << 8 | 0) | 0) << 16 | 0) >> 16 | 0; - i64toi32_i32$1 = i64toi32_i32$0 >> 31 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $18(i) { - i = i | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = HEAP16[(i + 2 | 0) >> 1] | 0; - i64toi32_i32$1 = i64toi32_i32$0 >> 31 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $19(i) { - i = i | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = HEAP16[(i + 25 | 0) >> 1] | 0; - i64toi32_i32$1 = i64toi32_i32$0 >> 31 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $20(i) { - i = i | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = HEAP32[i >> 2] | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $21(i) { - i = i | 0; - var $3_1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - $3_1 = i; - i64toi32_i32$0 = HEAPU8[$3_1 >> 0] | 0 | ((HEAPU8[($3_1 + 1 | 0) >> 0] | 0) << 8 | 0) | 0 | ((HEAPU8[($3_1 + 2 | 0) >> 0] | 0) << 16 | 0 | ((HEAPU8[($3_1 + 3 | 0) >> 0] | 0) << 24 | 0) | 0) | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $22(i) { - i = i | 0; - var $3_1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - $3_1 = i; - i64toi32_i32$0 = HEAPU8[($3_1 + 1 | 0) >> 0] | 0 | ((HEAPU8[($3_1 + 2 | 0) >> 0] | 0) << 8 | 0) | 0 | ((HEAPU8[($3_1 + 3 | 0) >> 0] | 0) << 16 | 0 | ((HEAPU8[($3_1 + 4 | 0) >> 0] | 0) << 24 | 0) | 0) | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $23(i) { - i = i | 0; - var $3_1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - $3_1 = i; - i64toi32_i32$0 = HEAPU16[($3_1 + 2 | 0) >> 1] | 0 | ((HEAPU16[($3_1 + 4 | 0) >> 1] | 0) << 16 | 0) | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $24(i) { - i = i | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = HEAP32[(i + 25 | 0) >> 2] | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $25(i) { - i = i | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = HEAP32[i >> 2] | 0; - i64toi32_i32$1 = i64toi32_i32$0 >> 31 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $26(i) { - i = i | 0; - var $3_1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - $3_1 = i; - i64toi32_i32$0 = HEAPU8[$3_1 >> 0] | 0 | ((HEAPU8[($3_1 + 1 | 0) >> 0] | 0) << 8 | 0) | 0 | ((HEAPU8[($3_1 + 2 | 0) >> 0] | 0) << 16 | 0 | ((HEAPU8[($3_1 + 3 | 0) >> 0] | 0) << 24 | 0) | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$0 >> 31 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $27(i) { - i = i | 0; - var $3_1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - $3_1 = i; - i64toi32_i32$0 = HEAPU8[($3_1 + 1 | 0) >> 0] | 0 | ((HEAPU8[($3_1 + 2 | 0) >> 0] | 0) << 8 | 0) | 0 | ((HEAPU8[($3_1 + 3 | 0) >> 0] | 0) << 16 | 0 | ((HEAPU8[($3_1 + 4 | 0) >> 0] | 0) << 24 | 0) | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$0 >> 31 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $28(i) { - i = i | 0; - var $3_1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - $3_1 = i; - i64toi32_i32$0 = HEAPU16[($3_1 + 2 | 0) >> 1] | 0 | ((HEAPU16[($3_1 + 4 | 0) >> 1] | 0) << 16 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$0 >> 31 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $29(i) { - i = i | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = HEAP32[(i + 25 | 0) >> 2] | 0; - i64toi32_i32$1 = i64toi32_i32$0 >> 31 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $30(i) { - i = i | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$2 = i; - i64toi32_i32$0 = HEAP32[i64toi32_i32$2 >> 2] | 0; - i64toi32_i32$1 = HEAP32[(i64toi32_i32$2 + 4 | 0) >> 2] | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $31(i) { - i = i | 0; - var $3_1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - $3_1 = i; - i64toi32_i32$0 = HEAPU8[$3_1 >> 0] | 0 | ((HEAPU8[($3_1 + 1 | 0) >> 0] | 0) << 8 | 0) | 0 | ((HEAPU8[($3_1 + 2 | 0) >> 0] | 0) << 16 | 0 | ((HEAPU8[($3_1 + 3 | 0) >> 0] | 0) << 24 | 0) | 0) | 0; - i64toi32_i32$1 = HEAPU8[($3_1 + 4 | 0) >> 0] | 0 | ((HEAPU8[($3_1 + 5 | 0) >> 0] | 0) << 8 | 0) | 0 | ((HEAPU8[($3_1 + 6 | 0) >> 0] | 0) << 16 | 0 | ((HEAPU8[($3_1 + 7 | 0) >> 0] | 0) << 24 | 0) | 0) | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $32(i) { - i = i | 0; - var $3_1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - $3_1 = i; - i64toi32_i32$0 = HEAPU8[($3_1 + 1 | 0) >> 0] | 0 | ((HEAPU8[($3_1 + 2 | 0) >> 0] | 0) << 8 | 0) | 0 | ((HEAPU8[($3_1 + 3 | 0) >> 0] | 0) << 16 | 0 | ((HEAPU8[($3_1 + 4 | 0) >> 0] | 0) << 24 | 0) | 0) | 0; - i64toi32_i32$1 = HEAPU8[($3_1 + 5 | 0) >> 0] | 0 | ((HEAPU8[($3_1 + 6 | 0) >> 0] | 0) << 8 | 0) | 0 | ((HEAPU8[($3_1 + 7 | 0) >> 0] | 0) << 16 | 0 | ((HEAPU8[($3_1 + 8 | 0) >> 0] | 0) << 24 | 0) | 0) | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $33(i) { - i = i | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$2 = i; - i64toi32_i32$0 = HEAPU16[(i64toi32_i32$2 + 2 | 0) >> 1] | 0 | ((HEAPU16[(i64toi32_i32$2 + 4 | 0) >> 1] | 0) << 16 | 0) | 0; - i64toi32_i32$1 = HEAPU16[(i64toi32_i32$2 + 6 | 0) >> 1] | 0 | ((HEAPU16[(i64toi32_i32$2 + 8 | 0) >> 1] | 0) << 16 | 0) | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $34(i) { - i = i | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$2 = i; - i64toi32_i32$0 = HEAP32[(i64toi32_i32$2 + 25 | 0) >> 2] | 0; - i64toi32_i32$1 = HEAP32[(i64toi32_i32$2 + 29 | 0) >> 2] | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $35(i) { - i = i | 0; - HEAPU8[(i + 4294967295 | 0) >> 0] | 0; - } - - function $36(i) { - i = i | 0; - var i64toi32_i32$0 = 0; - i64toi32_i32$0 = HEAP8[(i + 4294967295 | 0) >> 0] | 0; - } - - function $37(i) { - i = i | 0; - HEAPU16[(i + 4294967295 | 0) >> 1] | 0; - } - - function $38(i) { - i = i | 0; - var i64toi32_i32$0 = 0; - i64toi32_i32$0 = HEAP16[(i + 4294967295 | 0) >> 1] | 0; - } - - function $39(i) { - i = i | 0; - HEAP32[(i + 4294967295 | 0) >> 2] | 0; - } - - function $40(i) { - i = i | 0; - var i64toi32_i32$0 = 0; - i64toi32_i32$0 = HEAP32[(i + 4294967295 | 0) >> 2] | 0; - } - - function $41(i) { - i = i | 0; - var i64toi32_i32$2 = 0; - i64toi32_i32$2 = i; - HEAP32[(i64toi32_i32$2 + 3 | 0) >> 2] | 0; - HEAP32[(i64toi32_i32$2 + 4294967295 | 0) >> 2] | 0; - } - - function legalstub$0($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $0($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$1($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $1($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$2($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $2($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$3($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $3($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$4($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $4($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$5($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $5($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$6($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $6($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$7($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $7($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$8($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $8($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$9($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $9($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$10($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $10($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$11($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $11($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$12($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $12($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$13($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $13($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$14($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $14($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$15($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $15($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$16($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $16($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$17($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $17($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$18($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $18($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$19($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $19($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$20($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $20($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$21($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $21($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$22($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $22($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$23($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $23($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$24($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $24($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$25($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $25($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$26($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $26($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$27($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $27($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$28($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $28($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$29($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $29($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$30($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $30($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$31($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $31($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$32($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $32($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$33($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $33($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - function legalstub$34($0_1) { - $0_1 = $0_1 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $34($0_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8_1 | 0); - i64toi32_i32$0 = $1$hi; - return $1_1 | 0; - } - - var FUNCTION_TABLE = []; - function __wasm_memory_size() { - return buffer.byteLength / 65536 | 0; - } - - function __wasm_memory_grow(pagesToAdd) { - pagesToAdd = pagesToAdd | 0; - var oldPages = __wasm_memory_size() | 0; - var newPages = oldPages + pagesToAdd | 0; - if ((oldPages < newPages) && (newPages < 65536)) { - var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); - var newHEAP8 = new global.Int8Array(newBuffer); - newHEAP8.set(HEAP8); - HEAP8 = newHEAP8; - HEAP8 = new global.Int8Array(newBuffer); - HEAP16 = new global.Int16Array(newBuffer); - HEAP32 = new global.Int32Array(newBuffer); - HEAPU8 = new global.Uint8Array(newBuffer); - HEAPU16 = new global.Uint16Array(newBuffer); - HEAPU32 = new global.Uint32Array(newBuffer); - HEAPF32 = new global.Float32Array(newBuffer); - HEAPF64 = new global.Float64Array(newBuffer); - buffer = newBuffer; - } - return oldPages; - } - - return { - "$8u_good1": legalstub$0, - "$8u_good2": legalstub$1, - "$8u_good3": legalstub$2, - "$8u_good4": legalstub$3, - "$8u_good5": legalstub$4, - "$8s_good1": legalstub$5, - "$8s_good2": legalstub$6, - "$8s_good3": legalstub$7, - "$8s_good4": legalstub$8, - "$8s_good5": legalstub$9, - "$16u_good1": legalstub$10, - "$16u_good2": legalstub$11, - "$16u_good3": legalstub$12, - "$16u_good4": legalstub$13, - "$16u_good5": legalstub$14, - "$16s_good1": legalstub$15, - "$16s_good2": legalstub$16, - "$16s_good3": legalstub$17, - "$16s_good4": legalstub$18, - "$16s_good5": legalstub$19, - "$32u_good1": legalstub$20, - "$32u_good2": legalstub$21, - "$32u_good3": legalstub$22, - "$32u_good4": legalstub$23, - "$32u_good5": legalstub$24, - "$32s_good1": legalstub$25, - "$32s_good2": legalstub$26, - "$32s_good3": legalstub$27, - "$32s_good4": legalstub$28, - "$32s_good5": legalstub$29, - "$64_good1": legalstub$30, - "$64_good2": legalstub$31, - "$64_good3": legalstub$32, - "$64_good4": legalstub$33, - "$64_good5": legalstub$34, - "$8u_bad": $35, - "$8s_bad": $36, - "$16u_bad": $37, - "$16s_bad": $38, - "$32u_bad": $39, - "$32s_bad": $40, - "$64_bad": $41 - }; -} - -var memasmFunc = new ArrayBuffer(65536); -var assignasmFunc = ( - function(mem) { - var _mem = new Uint8Array(mem); - return function(offset, s) { - var bytes, i; - if (typeof Buffer === 'undefined') { - bytes = atob(s); - for (i = 0; i < bytes.length; i++) - _mem[offset + i] = bytes.charCodeAt(i); - } else { - bytes = Buffer.from(s, 'base64'); - for (i = 0; i < bytes.length; i++) - _mem[offset + i] = bytes[i]; - } - } - } - )(memasmFunc); -assignasmFunc(0, "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo="); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); -export var $8u_good1 = retasmFunc.$8u_good1; -export var $8u_good2 = retasmFunc.$8u_good2; -export var $8u_good3 = retasmFunc.$8u_good3; -export var $8u_good4 = retasmFunc.$8u_good4; -export var $8u_good5 = retasmFunc.$8u_good5; -export var $8s_good1 = retasmFunc.$8s_good1; -export var $8s_good2 = retasmFunc.$8s_good2; -export var $8s_good3 = retasmFunc.$8s_good3; -export var $8s_good4 = retasmFunc.$8s_good4; -export var $8s_good5 = retasmFunc.$8s_good5; -export var $16u_good1 = retasmFunc.$16u_good1; -export var $16u_good2 = retasmFunc.$16u_good2; -export var $16u_good3 = retasmFunc.$16u_good3; -export var $16u_good4 = retasmFunc.$16u_good4; -export var $16u_good5 = retasmFunc.$16u_good5; -export var $16s_good1 = retasmFunc.$16s_good1; -export var $16s_good2 = retasmFunc.$16s_good2; -export var $16s_good3 = retasmFunc.$16s_good3; -export var $16s_good4 = retasmFunc.$16s_good4; -export var $16s_good5 = retasmFunc.$16s_good5; -export var $32u_good1 = retasmFunc.$32u_good1; -export var $32u_good2 = retasmFunc.$32u_good2; -export var $32u_good3 = retasmFunc.$32u_good3; -export var $32u_good4 = retasmFunc.$32u_good4; -export var $32u_good5 = retasmFunc.$32u_good5; -export var $32s_good1 = retasmFunc.$32s_good1; -export var $32s_good2 = retasmFunc.$32s_good2; -export var $32s_good3 = retasmFunc.$32s_good3; -export var $32s_good4 = retasmFunc.$32s_good4; -export var $32s_good5 = retasmFunc.$32s_good5; -export var $64_good1 = retasmFunc.$64_good1; -export var $64_good2 = retasmFunc.$64_good2; -export var $64_good3 = retasmFunc.$64_good3; -export var $64_good4 = retasmFunc.$64_good4; -export var $64_good5 = retasmFunc.$64_good5; -export var $8u_bad = retasmFunc.$8u_bad; -export var $8s_bad = retasmFunc.$8s_bad; -export var $16u_bad = retasmFunc.$16u_bad; -export var $16s_bad = retasmFunc.$16s_bad; -export var $32u_bad = retasmFunc.$32u_bad; -export var $32s_bad = retasmFunc.$32s_bad; -export var $64_bad = retasmFunc.$64_bad; - - - var scratchBuffer = new ArrayBuffer(8); - var i32ScratchView = new Int32Array(scratchBuffer); - var f32ScratchView = new Float32Array(scratchBuffer); - var f64ScratchView = new Float64Array(scratchBuffer); - - function wasm2js_scratch_store_i32(index, value) { - i32ScratchView[index] = value; - } - - function wasm2js_scratch_load_f32() { - return f32ScratchView[0]; - } - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; - var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - function $0(i) { - i = i | 0; - return Math_fround(Math_fround(HEAPF32[i >> 2])); - } - - function $1(i) { - i = i | 0; - var $1_1 = 0; - $1_1 = i; - return Math_fround((wasm2js_scratch_store_i32(0, HEAPU8[$1_1 >> 0] | 0 | ((HEAPU8[($1_1 + 1 | 0) >> 0] | 0) << 8 | 0) | 0 | ((HEAPU8[($1_1 + 2 | 0) >> 0] | 0) << 16 | 0 | ((HEAPU8[($1_1 + 3 | 0) >> 0] | 0) << 24 | 0) | 0) | 0), wasm2js_scratch_load_f32())); - } - - function $2(i) { - i = i | 0; - var $1_1 = 0; - $1_1 = i; - return Math_fround((wasm2js_scratch_store_i32(0, HEAPU8[($1_1 + 1 | 0) >> 0] | 0 | ((HEAPU8[($1_1 + 2 | 0) >> 0] | 0) << 8 | 0) | 0 | ((HEAPU8[($1_1 + 3 | 0) >> 0] | 0) << 16 | 0 | ((HEAPU8[($1_1 + 4 | 0) >> 0] | 0) << 24 | 0) | 0) | 0), wasm2js_scratch_load_f32())); - } - - function $3(i) { - i = i | 0; - var $1_1 = 0; - $1_1 = i; - return Math_fround((wasm2js_scratch_store_i32(0, HEAPU16[($1_1 + 2 | 0) >> 1] | 0 | ((HEAPU16[($1_1 + 4 | 0) >> 1] | 0) << 16 | 0) | 0), wasm2js_scratch_load_f32())); - } - - function $4(i) { - i = i | 0; - return Math_fround(Math_fround(HEAPF32[(i + 8 | 0) >> 2])); - } - - function $5(i) { - i = i | 0; - Math_fround(HEAPF32[(i + 4294967295 | 0) >> 2]); - } - - var FUNCTION_TABLE = []; - function __wasm_memory_size() { - return buffer.byteLength / 65536 | 0; - } - - function __wasm_memory_grow(pagesToAdd) { - pagesToAdd = pagesToAdd | 0; - var oldPages = __wasm_memory_size() | 0; - var newPages = oldPages + pagesToAdd | 0; - if ((oldPages < newPages) && (newPages < 65536)) { - var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); - var newHEAP8 = new global.Int8Array(newBuffer); - newHEAP8.set(HEAP8); - HEAP8 = newHEAP8; - HEAP8 = new global.Int8Array(newBuffer); - HEAP16 = new global.Int16Array(newBuffer); - HEAP32 = new global.Int32Array(newBuffer); - HEAPU8 = new global.Uint8Array(newBuffer); - HEAPU16 = new global.Uint16Array(newBuffer); - HEAPU32 = new global.Uint32Array(newBuffer); - HEAPF32 = new global.Float32Array(newBuffer); - HEAPF64 = new global.Float64Array(newBuffer); - buffer = newBuffer; - } - return oldPages; - } - - return { - "$32_good1": $0, - "$32_good2": $1, - "$32_good3": $2, - "$32_good4": $3, - "$32_good5": $4, - "$32_bad": $5 - }; -} - -var memasmFunc = new ArrayBuffer(65536); -var assignasmFunc = ( - function(mem) { - var _mem = new Uint8Array(mem); - return function(offset, s) { - var bytes, i; - if (typeof Buffer === 'undefined') { - bytes = atob(s); - for (i = 0; i < bytes.length; i++) - _mem[offset + i] = bytes.charCodeAt(i); - } else { - bytes = Buffer.from(s, 'base64'); - for (i = 0; i < bytes.length; i++) - _mem[offset + i] = bytes[i]; - } - } - } - )(memasmFunc); -assignasmFunc(0, "AAAAAAAAoH8BANB/"); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); -export var $32_good1 = retasmFunc.$32_good1; -export var $32_good2 = retasmFunc.$32_good2; -export var $32_good3 = retasmFunc.$32_good3; -export var $32_good4 = retasmFunc.$32_good4; -export var $32_good5 = retasmFunc.$32_good5; -export var $32_bad = retasmFunc.$32_bad; - - - var scratchBuffer = new ArrayBuffer(8); - var i32ScratchView = new Int32Array(scratchBuffer); - var f32ScratchView = new Float32Array(scratchBuffer); - var f64ScratchView = new Float64Array(scratchBuffer); - - function wasm2js_scratch_store_i32(index, value) { - i32ScratchView[index] = value; - } - - function wasm2js_scratch_load_f64() { - return f64ScratchView[0]; - } - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; - var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - function $0(i) { - i = i | 0; - return +(+HEAPF64[i >> 3]); - } - - function $1(i) { - i = i | 0; - var $2_1 = 0, i64toi32_i32$1 = 0; - $2_1 = i; - i64toi32_i32$1 = HEAPU8[($2_1 + 4 | 0) >> 0] | 0 | ((HEAPU8[($2_1 + 5 | 0) >> 0] | 0) << 8 | 0) | 0 | ((HEAPU8[($2_1 + 6 | 0) >> 0] | 0) << 16 | 0 | ((HEAPU8[($2_1 + 7 | 0) >> 0] | 0) << 24 | 0) | 0) | 0; - wasm2js_scratch_store_i32(0 | 0, HEAPU8[$2_1 >> 0] | 0 | ((HEAPU8[($2_1 + 1 | 0) >> 0] | 0) << 8 | 0) | 0 | ((HEAPU8[($2_1 + 2 | 0) >> 0] | 0) << 16 | 0 | ((HEAPU8[($2_1 + 3 | 0) >> 0] | 0) << 24 | 0) | 0) | 0 | 0); - wasm2js_scratch_store_i32(1 | 0, i64toi32_i32$1 | 0); - return +(+wasm2js_scratch_load_f64()); - } - - function $2(i) { - i = i | 0; - var $2_1 = 0, i64toi32_i32$1 = 0; - $2_1 = i; - i64toi32_i32$1 = HEAPU8[($2_1 + 5 | 0) >> 0] | 0 | ((HEAPU8[($2_1 + 6 | 0) >> 0] | 0) << 8 | 0) | 0 | ((HEAPU8[($2_1 + 7 | 0) >> 0] | 0) << 16 | 0 | ((HEAPU8[($2_1 + 8 | 0) >> 0] | 0) << 24 | 0) | 0) | 0; - wasm2js_scratch_store_i32(0 | 0, HEAPU8[($2_1 + 1 | 0) >> 0] | 0 | ((HEAPU8[($2_1 + 2 | 0) >> 0] | 0) << 8 | 0) | 0 | ((HEAPU8[($2_1 + 3 | 0) >> 0] | 0) << 16 | 0 | ((HEAPU8[($2_1 + 4 | 0) >> 0] | 0) << 24 | 0) | 0) | 0 | 0); - wasm2js_scratch_store_i32(1 | 0, i64toi32_i32$1 | 0); - return +(+wasm2js_scratch_load_f64()); - } - - function $3(i) { - i = i | 0; - var $2_1 = 0, i64toi32_i32$1 = 0; - $2_1 = i; - i64toi32_i32$1 = HEAPU16[($2_1 + 6 | 0) >> 1] | 0 | ((HEAPU16[($2_1 + 8 | 0) >> 1] | 0) << 16 | 0) | 0; - wasm2js_scratch_store_i32(0 | 0, HEAPU16[($2_1 + 2 | 0) >> 1] | 0 | ((HEAPU16[($2_1 + 4 | 0) >> 1] | 0) << 16 | 0) | 0 | 0); - wasm2js_scratch_store_i32(1 | 0, i64toi32_i32$1 | 0); - return +(+wasm2js_scratch_load_f64()); - } - - function $4(i) { - i = i | 0; - return +(+HEAPF64[(i + 18 | 0) >> 3]); - } - - function $5(i) { - i = i | 0; - +HEAPF64[(i + 4294967295 | 0) >> 3]; - } - - var FUNCTION_TABLE = []; - function __wasm_memory_size() { - return buffer.byteLength / 65536 | 0; - } - - function __wasm_memory_grow(pagesToAdd) { - pagesToAdd = pagesToAdd | 0; - var oldPages = __wasm_memory_size() | 0; - var newPages = oldPages + pagesToAdd | 0; - if ((oldPages < newPages) && (newPages < 65536)) { - var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); - var newHEAP8 = new global.Int8Array(newBuffer); - newHEAP8.set(HEAP8); - HEAP8 = newHEAP8; - HEAP8 = new global.Int8Array(newBuffer); - HEAP16 = new global.Int16Array(newBuffer); - HEAP32 = new global.Int32Array(newBuffer); - HEAPU8 = new global.Uint8Array(newBuffer); - HEAPU16 = new global.Uint16Array(newBuffer); - HEAPU32 = new global.Uint32Array(newBuffer); - HEAPF32 = new global.Float32Array(newBuffer); - HEAPF64 = new global.Float64Array(newBuffer); - buffer = newBuffer; - } - return oldPages; - } - - return { - "$64_good1": $0, - "$64_good2": $1, - "$64_good3": $2, - "$64_good4": $3, - "$64_good5": $4, - "$64_bad": $5 - }; -} - -var memasmFunc = new ArrayBuffer(65536); -var assignasmFunc = ( - function(mem) { - var _mem = new Uint8Array(mem); - return function(offset, s) { - var bytes, i; - if (typeof Buffer === 'undefined') { - bytes = atob(s); - for (i = 0; i < bytes.length; i++) - _mem[offset + i] = bytes.charCodeAt(i); - } else { - bytes = Buffer.from(s, 'base64'); - for (i = 0; i < bytes.length; i++) - _mem[offset + i] = bytes[i]; - } - } - } - )(memasmFunc); -assignasmFunc(0, "AAAAAAAAAAAAAAAAAAAAAPR/AQAAAAAA/H8="); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); -export var $64_good1 = retasmFunc.$64_good1; -export var $64_good2 = retasmFunc.$64_good2; -export var $64_good3 = retasmFunc.$64_good3; -export var $64_good4 = retasmFunc.$64_good4; -export var $64_good5 = retasmFunc.$64_good5; -export var $64_bad = retasmFunc.$64_bad; diff -Nru binaryen-91/test/wasm2js/atomic_fence.2asm.js binaryen-99/test/wasm2js/atomic_fence.2asm.js --- binaryen-91/test/wasm2js/atomic_fence.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/atomic_fence.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,30 +1,31 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var buffer = new ArrayBuffer(1507328); + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $0() { } - var FUNCTION_TABLE = []; function __wasm_memory_size() { return buffer.byteLength / 65536 | 0; } @@ -35,17 +36,16 @@ var newPages = oldPages + pagesToAdd | 0; if ((oldPages < newPages) && (newPages < 65536)) { var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); - var newHEAP8 = new global.Int8Array(newBuffer); + var newHEAP8 = new Int8Array(newBuffer); newHEAP8.set(HEAP8); - HEAP8 = newHEAP8; - HEAP8 = new global.Int8Array(newBuffer); - HEAP16 = new global.Int16Array(newBuffer); - HEAP32 = new global.Int32Array(newBuffer); - HEAPU8 = new global.Uint8Array(newBuffer); - HEAPU16 = new global.Uint16Array(newBuffer); - HEAPU32 = new global.Uint32Array(newBuffer); - HEAPF32 = new global.Float32Array(newBuffer); - HEAPF64 = new global.Float64Array(newBuffer); + HEAP8 = new Int8Array(newBuffer); + HEAP16 = new Int16Array(newBuffer); + HEAP32 = new Int32Array(newBuffer); + HEAPU8 = new Uint8Array(newBuffer); + HEAPU16 = new Uint16Array(newBuffer); + HEAPU32 = new Uint32Array(newBuffer); + HEAPF32 = new Float32Array(newBuffer); + HEAPF64 = new Float64Array(newBuffer); buffer = newBuffer; } return oldPages; @@ -56,6 +56,6 @@ }; } -var memasmFunc = new ArrayBuffer(1507328); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var atomic_fence = retasmFunc.atomic_fence; diff -Nru binaryen-91/test/wasm2js/atomic_fence.2asm.js.opt binaryen-99/test/wasm2js/atomic_fence.2asm.js.opt --- binaryen-91/test/wasm2js/atomic_fence.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/atomic_fence.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,35 +1,27 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $0() { } - var FUNCTION_TABLE = []; return { "atomic_fence": $0 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var atomic_fence = retasmFunc.atomic_fence; diff -Nru binaryen-91/test/wasm2js/atomics_32.2asm.js binaryen-99/test/wasm2js/atomics_32.2asm.js --- binaryen-91/test/wasm2js/atomics_32.2asm.js 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/wasm2js/atomics_32.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,158 @@ + + var bufferView; + var memorySegments = {}; + var base64ReverseLookup = new Uint8Array(123/*'z'+1*/); + for (var i = 25; i >= 0; --i) { + base64ReverseLookup[48+i] = 52+i; // '0-9' + base64ReverseLookup[65+i] = i; // 'A-Z' + base64ReverseLookup[97+i] = 26+i; // 'a-z' + } + base64ReverseLookup[43] = 62; // '+' + base64ReverseLookup[47] = 63; // '/' + /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ + function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { + var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2) - (b64[bLength-2] == '=') - (b64[bLength-1] == '='); + for (; i < bLength; i += 4) { + b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; + b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; + uint8Array[j++] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; + if (j < end) uint8Array[j++] = b1 << 4 | b2 >> 2; + if (j < end) uint8Array[j++] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; + } + return uint8Array; + } +memorySegments[0] = base64DecodeToExistingUint8Array(new Uint8Array(6), 0, "aGVsbG8s"); +memorySegments[1] = base64DecodeToExistingUint8Array(new Uint8Array(6), 0, "d29ybGQh"); + + var scratchBuffer = new ArrayBuffer(16); + var i32ScratchView = new Int32Array(scratchBuffer); + var f32ScratchView = new Float32Array(scratchBuffer); + var f64ScratchView = new Float64Array(scratchBuffer); + + function wasm2js_atomic_wait_i32(ptr, expected, timeoutLow, timeoutHigh) { + if (timeoutLow != -1 || timeoutHigh != -1) throw 'unsupported timeout'; + var view = new Int32Array(bufferView.buffer); // TODO cache + var result = Atomics.wait(view, ptr, expected); + if (result == 'ok') return 0; + if (result == 'not-equal') return 1; + if (result == 'timed-out') return 2; + throw 'bad result ' + result; + } + + function wasm2js_atomic_rmw_i64(op, bytes, offset, ptr, valueLow, valueHigh) { + assert(bytes == 8); // TODO: support 1, 2, 4 as well + var view = new BigInt64Array(bufferView.buffer); // TODO cache + ptr = (ptr + offset) >> 3; + var value = BigInt(valueLow >>> 0) | (BigInt(valueHigh >>> 0) << BigInt(32)); + var result; + switch (op) { + case 0: { // Add + result = Atomics.add(view, ptr, value); + break; + } + case 1: { // Sub + result = Atomics.sub(view, ptr, value); + break; + } + case 2: { // And + result = Atomics.and(view, ptr, value); + break; + } + case 3: { // Or + result = Atomics.or(view, ptr, value); + break; + } + case 4: { // Xor + result = Atomics.xor(view, ptr, value); + break; + } + case 5: { // Xchg + result = Atomics.exchange(view, ptr, value); + break; + } + default: throw 'bad op'; + } + var low = Number(result & BigInt(0xffffffff)) | 0; + var high = Number((result >> BigInt(32)) & BigInt(0xffffffff)) | 0; + stashedBits = high; + return low; + } + + var stashedBits = 0; + + function wasm2js_get_stashed_bits() { + return stashedBits; + } + + function wasm2js_memory_init(segment, dest, offset, size) { + // TODO: traps on invalid things + bufferView.set(memorySegments[segment].subarray(offset, offset + size), dest); + } + +function asmFunc(env) { + var buffer = new ArrayBuffer(16777216); + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + function $0() { + var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0; + Atomics.compareExchange(HEAP8, 1024, 1, 2) | 0; + Atomics.compareExchange(HEAP16, 1024 >> 1, 1, 2) | 0; + Atomics.compareExchange(HEAP32, 1024 >> 2, 1, 2) | 0; + Atomics.load(HEAPU8, 1028 >> 0) | 0; + Atomics.load(HEAPU16, 1028 >> 1) | 0; + Atomics.load(HEAP32, 1028 >> 2) | 0; + Atomics.store(HEAP32, 100 >> 2, 200); + i64toi32_i32$0 = -1; + wasm2js_atomic_wait_i32(4 | 0, 8 | 0, -1 | 0, i64toi32_i32$0 | 0) | 0; + wasm2js_memory_init(0, 512, 0, 4); + wasm2js_memory_init(1, 1024, 4, 2); + Atomics.notify(HEAP32, 4 >> 2, 2); + Atomics.notify(HEAP32, (4 + 20 | 0) >> 2, 2); + Atomics.add(HEAP32, 8 >> 2, 12); + Atomics.sub(HEAP32, 8 >> 2, 12); + Atomics.and(HEAP32, 8 >> 2, 12); + Atomics.or(HEAP32, 8 >> 2, 12); + Atomics.xor(HEAP32, 8 >> 2, 12); + Atomics.exchange(HEAP32, 8 >> 2, 12); + Atomics.add(HEAP8, 8, 12); + Atomics.sub(HEAP16, 8 >> 1, 12); + i64toi32_i32$0 = 0; + i64toi32_i32$1 = wasm2js_atomic_rmw_i64(0 | 0, 8 | 0, 0 | 0, 8 | 0, 16 | 0, i64toi32_i32$0 | 0) | 0; + i64toi32_i32$2 = wasm2js_get_stashed_bits() | 0; + i64toi32_i32$2 = -1; + i64toi32_i32$1 = wasm2js_atomic_rmw_i64(4 | 0, 8 | 0, 32 | 0, 8 | 0, -1 | 0, i64toi32_i32$2 | 0) | 0; + i64toi32_i32$0 = wasm2js_get_stashed_bits() | 0; + } + + bufferView = HEAPU8; + function __wasm_memory_size() { + return buffer.byteLength / 65536 | 0; + } + + return { + "test": $0 + }; +} + +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); +export var test = retasmFunc.test; diff -Nru binaryen-91/test/wasm2js/atomics_32.2asm.js.opt binaryen-99/test/wasm2js/atomics_32.2asm.js.opt --- binaryen-91/test/wasm2js/atomics_32.2asm.js.opt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/wasm2js/atomics_32.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,154 @@ + + var bufferView; + var memorySegments = {}; + var base64ReverseLookup = new Uint8Array(123/*'z'+1*/); + for (var i = 25; i >= 0; --i) { + base64ReverseLookup[48+i] = 52+i; // '0-9' + base64ReverseLookup[65+i] = i; // 'A-Z' + base64ReverseLookup[97+i] = 26+i; // 'a-z' + } + base64ReverseLookup[43] = 62; // '+' + base64ReverseLookup[47] = 63; // '/' + /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ + function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { + var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2) - (b64[bLength-2] == '=') - (b64[bLength-1] == '='); + for (; i < bLength; i += 4) { + b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; + b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; + uint8Array[j++] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; + if (j < end) uint8Array[j++] = b1 << 4 | b2 >> 2; + if (j < end) uint8Array[j++] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; + } + return uint8Array; + } +memorySegments[0] = base64DecodeToExistingUint8Array(new Uint8Array(6), 0, "aGVsbG8s"); +memorySegments[1] = base64DecodeToExistingUint8Array(new Uint8Array(6), 0, "d29ybGQh"); + + var scratchBuffer = new ArrayBuffer(16); + var i32ScratchView = new Int32Array(scratchBuffer); + var f32ScratchView = new Float32Array(scratchBuffer); + var f64ScratchView = new Float64Array(scratchBuffer); + + function wasm2js_atomic_wait_i32(ptr, expected, timeoutLow, timeoutHigh) { + if (timeoutLow != -1 || timeoutHigh != -1) throw 'unsupported timeout'; + var view = new Int32Array(bufferView.buffer); // TODO cache + var result = Atomics.wait(view, ptr, expected); + if (result == 'ok') return 0; + if (result == 'not-equal') return 1; + if (result == 'timed-out') return 2; + throw 'bad result ' + result; + } + + function wasm2js_atomic_rmw_i64(op, bytes, offset, ptr, valueLow, valueHigh) { + assert(bytes == 8); // TODO: support 1, 2, 4 as well + var view = new BigInt64Array(bufferView.buffer); // TODO cache + ptr = (ptr + offset) >> 3; + var value = BigInt(valueLow >>> 0) | (BigInt(valueHigh >>> 0) << BigInt(32)); + var result; + switch (op) { + case 0: { // Add + result = Atomics.add(view, ptr, value); + break; + } + case 1: { // Sub + result = Atomics.sub(view, ptr, value); + break; + } + case 2: { // And + result = Atomics.and(view, ptr, value); + break; + } + case 3: { // Or + result = Atomics.or(view, ptr, value); + break; + } + case 4: { // Xor + result = Atomics.xor(view, ptr, value); + break; + } + case 5: { // Xchg + result = Atomics.exchange(view, ptr, value); + break; + } + default: throw 'bad op'; + } + var low = Number(result & BigInt(0xffffffff)) | 0; + var high = Number((result >> BigInt(32)) & BigInt(0xffffffff)) | 0; + stashedBits = high; + return low; + } + + var stashedBits = 0; + + function wasm2js_get_stashed_bits() { + return stashedBits; + } + + function wasm2js_memory_init(segment, dest, offset, size) { + // TODO: traps on invalid things + bufferView.set(memorySegments[segment].subarray(offset, offset + size), dest); + } + +function asmFunc(env) { + var buffer = new ArrayBuffer(16777216); + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + function $0() { + Atomics.compareExchange(HEAP8, 1024, 1, 2) | 0; + Atomics.compareExchange(HEAP16, 512, 1, 2) | 0; + Atomics.compareExchange(HEAP32, 256, 1, 2) | 0; + Atomics.load(HEAPU8, 1028); + Atomics.load(HEAPU16, 514); + Atomics.load(HEAP32, 257); + Atomics.store(HEAP32, 25, 200); + wasm2js_atomic_wait_i32(4, 8, -1, -1) | 0; + wasm2js_memory_init(0, 512, 0, 4); + wasm2js_memory_init(1, 1024, 4, 2); + Atomics.notify(HEAP32, 1, 2); + Atomics.notify(HEAP32, 4 + 20 >> 2, 2); + Atomics.add(HEAP32, 2, 12); + Atomics.sub(HEAP32, 2, 12); + Atomics.and(HEAP32, 2, 12); + Atomics.or(HEAP32, 2, 12); + Atomics.xor(HEAP32, 2, 12); + Atomics.exchange(HEAP32, 2, 12); + Atomics.add(HEAP8, 8, 12); + Atomics.sub(HEAP16, 4, 12); + wasm2js_atomic_rmw_i64(0, 8, 0, 8, 16, 0) | 0; + wasm2js_get_stashed_bits() | 0; + wasm2js_atomic_rmw_i64(4, 8, 32, 8, -1, -1) | 0; + wasm2js_get_stashed_bits() | 0; + } + + bufferView = HEAPU8; + function __wasm_memory_size() { + return buffer.byteLength / 65536 | 0; + } + + return { + "test": $0 + }; +} + +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); +export var test = retasmFunc.test; diff -Nru binaryen-91/test/wasm2js/atomics_32.wast binaryen-99/test/wasm2js/atomics_32.wast --- binaryen-91/test/wasm2js/atomics_32.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/wasm2js/atomics_32.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,31 @@ +(module + (memory (shared 256 256)) + (data passive "hello,") + (data passive "world!") + (func "test" + (local $x i32) + (local $y i64) + (local.set $x (i32.atomic.rmw8.cmpxchg_u (i32.const 1024) (i32.const 1) (i32.const 2))) + (local.set $x (i32.atomic.rmw16.cmpxchg_u (i32.const 1024) (i32.const 1) (i32.const 2))) + (local.set $x (i32.atomic.rmw.cmpxchg (i32.const 1024) (i32.const 1) (i32.const 2))) + (local.set $x (i32.atomic.load8_u (i32.const 1028))) + (local.set $x (i32.atomic.load16_u (i32.const 1028))) + (local.set $x (i32.atomic.load (i32.const 1028))) + (i32.atomic.store (i32.const 100) (i32.const 200)) + (local.set $x (memory.atomic.wait32 (i32.const 4) (i32.const 8) (i64.const -1))) + (memory.init 0 (i32.const 512) (i32.const 0) (i32.const 4)) + (memory.init 1 (i32.const 1024) (i32.const 4) (i32.const 2)) + (local.set $x (memory.atomic.notify (i32.const 4) (i32.const 2))) + (local.set $x (memory.atomic.notify offset=20 (i32.const 4) (i32.const 2))) + (local.set $x (i32.atomic.rmw.add (i32.const 8) (i32.const 12))) + (local.set $x (i32.atomic.rmw.sub (i32.const 8) (i32.const 12))) + (local.set $x (i32.atomic.rmw.and (i32.const 8) (i32.const 12))) + (local.set $x (i32.atomic.rmw.or (i32.const 8) (i32.const 12))) + (local.set $x (i32.atomic.rmw.xor (i32.const 8) (i32.const 12))) + (local.set $x (i32.atomic.rmw.xchg (i32.const 8) (i32.const 12))) + (local.set $x (i32.atomic.rmw8.add_u (i32.const 8) (i32.const 12))) + (local.set $x (i32.atomic.rmw16.sub_u (i32.const 8) (i32.const 12))) + (local.set $y (i64.atomic.rmw.add (i32.const 8) (i64.const 16))) + (local.set $y (i64.atomic.rmw.xor offset=32 (i32.const 8) (i64.const -1))) + ) +) diff -Nru binaryen-91/test/wasm2js/base64.2asm.js binaryen-99/test/wasm2js/base64.2asm.js --- binaryen-91/test/wasm2js/base64.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/base64.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,30 +1,22 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var FUNCTION_TABLE = []; + var nan = NaN; + var infinity = Infinity; return { }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); diff -Nru binaryen-91/test/wasm2js/base64.2asm.js.opt binaryen-99/test/wasm2js/base64.2asm.js.opt --- binaryen-91/test/wasm2js/base64.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/base64.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,30 +1,22 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var FUNCTION_TABLE = []; + var nan = NaN; + var infinity = Infinity; return { }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); diff -Nru binaryen-91/test/wasm2js/block.2asm.js binaryen-99/test/wasm2js/block.2asm.js --- binaryen-91/test/wasm2js/block.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/block.2asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,212 +0,0 @@ - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; - var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - function dummy() { - - } - - function $1() { - - } - - function $2() { - return 7 | 0; - } - - function $3() { - block : { - dummy(); - dummy(); - dummy(); - dummy(); - } - block1 : { - dummy(); - dummy(); - dummy(); - } - return 8 | 0; - } - - function $4() { - block : { - dummy(); - dummy(); - } - return 9 | 0; - } - - function $5() { - dummy(); - return 150 | 0; - } - - function $6() { - dummy(); - return __wasm_ctz_i32(13 | 0) | 0 | 0; - } - - function $7() { - dummy(); - dummy(); - return Math_imul(3, 4) | 0; - } - - function $8() { - dummy(); - return !13 | 0; - } - - function $9() { - dummy(); - dummy(); - return Math_fround(3.0) > Math_fround(3.0) | 0; - } - - function $10() { - block : { - break block; - } - block44 : { - if (1) { - break block44 - } - abort(); - } - block45 : { - switch (0 | 0) { - default: - break block45; - }; - } - block46 : { - switch (1 | 0) { - default: - break block46; - }; - } - return 19 | 0; - } - - function $11() { - var $0 = 0; - block : { - $0 = 18; - break block; - } - return $0 | 0; - } - - function $12() { - var $0 = 0; - block : { - $0 = 18; - break block; - } - return $0 | 0; - } - - function $13() { - var $0 = 0, $1_1 = 0, $2_1 = 0, $5_1 = 0, $9_1 = 0, $10_1 = 0, $13_1 = 0, $14_1 = 0; - $0 = 0; - $1_1 = $0; - block : { - block47 : { - $2_1 = 1; - break block; - } - } - $0 = $1_1 + $2_1 | 0; - $5_1 = $0; - $0 = $5_1 + 2 | 0; - $9_1 = $0; - block50 : { - $10_1 = 4; - break block50; - } - $0 = $9_1 + $10_1 | 0; - $13_1 = $0; - block51 : { - block52 : { - $14_1 = 8; - break block51; - } - } - $0 = $13_1 + $14_1 | 0; - return $0 | 0; - } - - function $14() { - var $0 = 0; - block : { - $0 = 1; - $0 = Math_imul($0, 3); - $0 = $0 - 5 | 0; - $0 = Math_imul($0, 7); - break block; - } - return ($0 | 0) == (-14 | 0) | 0; - } - - function __wasm_ctz_i32(var$0) { - var$0 = var$0 | 0; - if (var$0) { - return 31 - Math_clz32((var$0 + -1 | 0) ^ var$0 | 0) | 0 | 0 - } - return 32 | 0; - } - - var FUNCTION_TABLE = []; - return { - "empty": $1, - "singular": $2, - "multi": $3, - "nested": $4, - "deep": $5, - "as_unary_operand": $6, - "as_binary_operand": $7, - "as_test_operand": $8, - "as_compare_operand": $9, - "break_bare": $10, - "break_value": $11, - "break_repeated": $12, - "break_inner": $13, - "effects": $14 - }; -} - -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); -export var empty = retasmFunc.empty; -export var singular = retasmFunc.singular; -export var multi = retasmFunc.multi; -export var nested = retasmFunc.nested; -export var deep = retasmFunc.deep; -export var as_unary_operand = retasmFunc.as_unary_operand; -export var as_binary_operand = retasmFunc.as_binary_operand; -export var as_test_operand = retasmFunc.as_test_operand; -export var as_compare_operand = retasmFunc.as_compare_operand; -export var break_bare = retasmFunc.break_bare; -export var break_value = retasmFunc.break_value; -export var break_repeated = retasmFunc.break_repeated; -export var break_inner = retasmFunc.break_inner; -export var effects = retasmFunc.effects; diff -Nru binaryen-91/test/wasm2js/br.2asm.js binaryen-99/test/wasm2js/br.2asm.js --- binaryen-91/test/wasm2js/br.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/br.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,26 +1,19 @@ import { setTempRet0 } from 'env'; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function dummy() { @@ -114,8 +107,10 @@ function $13() { var $0 = 0, $1_1 = 0, $3_1 = 0; block : { - $0 = 3; - break block; + loop_in : while (1) { + $0 = 3; + break block; + }; } return $0 | 0; } @@ -123,9 +118,11 @@ function $14() { var $0 = 0, $1_1 = 0, $3_1 = 0; block : { - dummy(); - $0 = 4; - break block; + loop_in : while (1) { + dummy(); + $0 = 4; + break block; + }; } return $0 | 0; } @@ -133,9 +130,11 @@ function $15() { var $0 = 0; block : { - dummy(); - $0 = 5; - break block; + loop_in : while (1) { + dummy(); + $0 = 5; + break block; + }; } return $0 | 0; } @@ -654,7 +653,6 @@ return $0 | 0; } - var FUNCTION_TABLE = []; return { "type_i32": $1, "type_i64": $2, @@ -718,8 +716,9 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var type_i32 = retasmFunc.type_i32; export var type_i64 = retasmFunc.type_i64; export var type_f32 = retasmFunc.type_f32; diff -Nru binaryen-91/test/wasm2js/break-drop.2asm.js binaryen-99/test/wasm2js/break-drop.2asm.js --- binaryen-91/test/wasm2js/break-drop.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/break-drop.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $0() { } @@ -32,7 +25,6 @@ } - var FUNCTION_TABLE = []; return { "br": $0, "br_if": $1, @@ -40,8 +32,8 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var br = retasmFunc.br; export var br_if = retasmFunc.br_if; export var br_table = retasmFunc.br_table; diff -Nru binaryen-91/test/wasm2js/br_if.2asm.js binaryen-99/test/wasm2js/br_if.2asm.js --- binaryen-91/test/wasm2js/br_if.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/br_if.2asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,317 +0,0 @@ - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; - var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - function dummy() { - - } - - function $1($0) { - $0 = $0 | 0; - block : { - if ($0) { - break block - } - return 2 | 0; - } - return 3 | 0; - } - - function $2($0) { - $0 = $0 | 0; - block : { - dummy(); - if ($0) { - break block - } - return 2 | 0; - } - return 3 | 0; - } - - function $3($0) { - $0 = $0 | 0; - block : { - dummy(); - dummy(); - if ($0) { - break block - } - } - } - - function $4($0) { - $0 = $0 | 0; - var $2_1 = 0; - block : { - $2_1 = 10; - if ($0) { - break block - } - return 11 | 0; - } - return $2_1 | 0; - } - - function $5($0) { - $0 = $0 | 0; - var $2_1 = 0; - block : { - dummy(); - $2_1 = 20; - if ($0) { - break block - } - return 21 | 0; - } - return $2_1 | 0; - } - - function $6($0) { - $0 = $0 | 0; - var $2_1 = 0; - block : { - dummy(); - dummy(); - $2_1 = 11; - if ($0) { - break block - } - } - return $2_1 | 0; - } - - function $7($0) { - $0 = $0 | 0; - block : { - loop_in : while (1) { - if ($0) { - break block - } - return 2 | 0; - }; - } - return 3 | 0; - } - - function $8($0) { - $0 = $0 | 0; - block : { - loop_in : while (1) { - dummy(); - if ($0) { - break block - } - return 2 | 0; - }; - } - return 4 | 0; - } - - function $9($0) { - $0 = $0 | 0; - fake_return_waka123 : { - loop_in : while (1) { - dummy(); - if ($0) { - break fake_return_waka123 - } - break loop_in; - }; - } - } - - function $10($0, $1_1) { - $0 = $0 | 0; - $1_1 = $1_1 | 0; - block : { - if ($0) { - if ($1_1) { - break block - } - } else { - dummy() - } - } - } - - function $11($0, $1_1) { - $0 = $0 | 0; - $1_1 = $1_1 | 0; - block : { - if ($0) { - dummy() - } else { - if ($1_1) { - break block - } - } - } - } - - function $12($0) { - $0 = $0 | 0; - var $2_1 = 0; - block : { - block0 : { - $2_1 = 8; - if ($0) { - break block - } - } - $2_1 = 4 + 16 | 0; - } - return 1 + $2_1 | 0 | 0; - } - - function $13($0) { - $0 = $0 | 0; - var $2_1 = 0; - block : { - block1 : { - $2_1 = 8; - if ($0) { - break block - } - } - $2_1 = 4; - break block; - } - return 1 + $2_1 | 0 | 0; - } - - function $14($0) { - $0 = $0 | 0; - var $2_1 = 0; - block : { - block2 : { - $2_1 = 8; - if ($0) { - break block - } - } - $2_1 = 4; - if (1) { - break block - } - $2_1 = 16; - } - return 1 + $2_1 | 0 | 0; - } - - function $15($0) { - $0 = $0 | 0; - var $2_1 = 0; - block : { - block3 : { - $2_1 = 8; - if ($0) { - break block - } - } - $2_1 = 4; - if (1) { - break block - } - $2_1 = 16; - } - return 1 + $2_1 | 0 | 0; - } - - function $16($0) { - $0 = $0 | 0; - var $2_1 = 0; - block : { - block4 : { - $2_1 = 8; - if ($0) { - break block - } - } - $2_1 = 4; - switch (1 | 0) { - default: - break block; - }; - } - return 1 + $2_1 | 0 | 0; - } - - function $17($0) { - $0 = $0 | 0; - var $2_1 = 0; - block : { - block5 : { - $2_1 = 8; - if ($0) { - break block - } - } - $2_1 = 4; - switch (1 | 0) { - default: - break block; - }; - } - return 1 + $2_1 | 0 | 0; - } - - var FUNCTION_TABLE = []; - return { - "as_block_first": $1, - "as_block_mid": $2, - "as_block_last": $3, - "as_block_first_value": $4, - "as_block_mid_value": $5, - "as_block_last_value": $6, - "as_loop_first": $7, - "as_loop_mid": $8, - "as_loop_last": $9, - "as_if_then": $10, - "as_if_else": $11, - "nested_block_value": $12, - "nested_br_value": $13, - "nested_br_if_value": $14, - "nested_br_if_value_cond": $15, - "nested_br_table_value": $16, - "nested_br_table_value_index": $17 - }; -} - -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); -export var as_block_first = retasmFunc.as_block_first; -export var as_block_mid = retasmFunc.as_block_mid; -export var as_block_last = retasmFunc.as_block_last; -export var as_block_first_value = retasmFunc.as_block_first_value; -export var as_block_mid_value = retasmFunc.as_block_mid_value; -export var as_block_last_value = retasmFunc.as_block_last_value; -export var as_loop_first = retasmFunc.as_loop_first; -export var as_loop_mid = retasmFunc.as_loop_mid; -export var as_loop_last = retasmFunc.as_loop_last; -export var as_if_then = retasmFunc.as_if_then; -export var as_if_else = retasmFunc.as_if_else; -export var nested_block_value = retasmFunc.nested_block_value; -export var nested_br_value = retasmFunc.nested_br_value; -export var nested_br_if_value = retasmFunc.nested_br_if_value; -export var nested_br_if_value_cond = retasmFunc.nested_br_if_value_cond; -export var nested_br_table_value = retasmFunc.nested_br_table_value; -export var nested_br_table_value_index = retasmFunc.nested_br_table_value_index; diff -Nru binaryen-91/test/wasm2js/br_table.2asm.js binaryen-99/test/wasm2js/br_table.2asm.js --- binaryen-91/test/wasm2js/br_table.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/br_table.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,26 +1,19 @@ import { setTempRet0 } from 'env'; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function dummy() { @@ -12568,10 +12561,12 @@ function $20() { var $1_1 = 0, $2_1 = 0, $4_1 = 0; fake_return_waka123 : { - $1_1 = 3; - switch (0 | 0) { - default: - break fake_return_waka123; + loop_in : while (1) { + $1_1 = 3; + switch (0 | 0) { + default: + break fake_return_waka123; + }; }; } return $1_1 | 0; @@ -12580,11 +12575,13 @@ function $21() { var $1_1 = 0, $2_1 = 0, $4_1 = 0; fake_return_waka123 : { - dummy(); - $1_1 = 4; - switch (-1 | 0) { - default: - break fake_return_waka123; + loop_in : while (1) { + dummy(); + $1_1 = 4; + switch (-1 | 0) { + default: + break fake_return_waka123; + }; }; } return $1_1 | 0; @@ -12593,11 +12590,13 @@ function $22() { var $1_1 = 0; fake_return_waka123 : { - dummy(); - $1_1 = 5; - switch (1 | 0) { - default: - break fake_return_waka123; + loop_in : while (1) { + dummy(); + $1_1 = 5; + switch (1 | 0) { + default: + break fake_return_waka123; + }; }; } return $1_1 | 0; @@ -13351,7 +13350,6 @@ return $0 | 0; } - var FUNCTION_TABLE = []; return { "type_i32": $1, "type_i64": $2, @@ -13423,8 +13421,9 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var type_i32 = retasmFunc.type_i32; export var type_i64 = retasmFunc.type_i64; export var type_f32 = retasmFunc.type_f32; diff -Nru binaryen-91/test/wasm2js/br_table_hoisting.2asm.js binaryen-99/test/wasm2js/br_table_hoisting.2asm.js --- binaryen-91/test/wasm2js/br_table_hoisting.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/br_table_hoisting.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function zed($0) { $0 = $0 | 0; zed($0 | 0); @@ -176,7 +169,6 @@ zed(-10 | 0); } - var FUNCTION_TABLE = []; return { "foo1": $1, "foo2": $2, @@ -185,8 +177,8 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var foo1 = retasmFunc.foo1; export var foo2 = retasmFunc.foo2; export var foo3 = retasmFunc.foo3; diff -Nru binaryen-91/test/wasm2js/br_table_hoisting.2asm.js.opt binaryen-99/test/wasm2js/br_table_hoisting.2asm.js.opt --- binaryen-91/test/wasm2js/br_table_hoisting.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/br_table_hoisting.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function zed($0) { zed($0); } @@ -166,7 +159,6 @@ zed(-10); } - var FUNCTION_TABLE = []; return { "foo1": $1, "foo2": $2, @@ -175,8 +167,8 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var foo1 = retasmFunc.foo1; export var foo2 = retasmFunc.foo2; export var foo3 = retasmFunc.foo3; diff -Nru binaryen-91/test/wasm2js/br_table_temp.2asm.js binaryen-99/test/wasm2js/br_table_temp.2asm.js --- binaryen-91/test/wasm2js/br_table_temp.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/br_table_temp.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function dummy() { } @@ -12564,10 +12557,12 @@ function $20() { var $1_1 = 0, $2_1 = 0, $4_1 = 0; fake_return_waka123 : { - $1_1 = 3; - switch (0 | 0) { - default: - break fake_return_waka123; + loop_in : while (1) { + $1_1 = 3; + switch (0 | 0) { + default: + break fake_return_waka123; + }; }; } return $1_1 | 0; @@ -12576,11 +12571,13 @@ function $21() { var $1_1 = 0, $2_1 = 0, $4_1 = 0; fake_return_waka123 : { - dummy(); - $1_1 = 4; - switch (-1 | 0) { - default: - break fake_return_waka123; + loop_in : while (1) { + dummy(); + $1_1 = 4; + switch (-1 | 0) { + default: + break fake_return_waka123; + }; }; } return $1_1 | 0; @@ -12589,11 +12586,13 @@ function $22() { var $1_1 = 0; fake_return_waka123 : { - dummy(); - $1_1 = 5; - switch (1 | 0) { - default: - break fake_return_waka123; + loop_in : while (1) { + dummy(); + $1_1 = 5; + switch (1 | 0) { + default: + break fake_return_waka123; + }; }; } return $1_1 | 0; @@ -13197,7 +13196,6 @@ return $3_1 | 0; } - var FUNCTION_TABLE = []; return { "type_i32": $1, "type_i64": $2, @@ -13266,8 +13264,8 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var type_i32 = retasmFunc.type_i32; export var type_i64 = retasmFunc.type_i64; export var type_f32 = retasmFunc.type_f32; diff -Nru binaryen-91/test/wasm2js/br_table_temp.2asm.js.opt binaryen-99/test/wasm2js/br_table_temp.2asm.js.opt --- binaryen-91/test/wasm2js/br_table_temp.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/br_table_temp.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function dummy() { } @@ -12619,15 +12612,14 @@ function $63($0) { $0 = $0 | 0; - if ($0 - 1) { - $0 = 9 - } else { + if (($0 | 0) == 1) { $0 = 8 + } else { + $0 = 9 } return $0 | 0; } - var FUNCTION_TABLE = []; return { "type_i32": dummy, "type_i64": dummy, @@ -12696,8 +12688,8 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var type_i32 = retasmFunc.type_i32; export var type_i64 = retasmFunc.type_i64; export var type_f32 = retasmFunc.type_f32; diff -Nru binaryen-91/test/wasm2js/br_table_to_loop.2asm.js binaryen-99/test/wasm2js/br_table_to_loop.2asm.js --- binaryen-91/test/wasm2js/br_table_to_loop.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/br_table_to_loop.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $0() { block : { loop : while (1) switch (1 | 0) { @@ -42,14 +35,13 @@ } } - var FUNCTION_TABLE = []; return { "exp1": $0, "exp2": $1 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var exp1 = retasmFunc.exp1; export var exp2 = retasmFunc.exp2; diff -Nru binaryen-91/test/wasm2js/br_table_to_loop.2asm.js.opt binaryen-99/test/wasm2js/br_table_to_loop.2asm.js.opt --- binaryen-91/test/wasm2js/br_table_to_loop.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/br_table_to_loop.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $0() { while (1) continue; } @@ -28,14 +21,13 @@ } - var FUNCTION_TABLE = []; return { "exp1": $0, "exp2": $1 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var exp1 = retasmFunc.exp1; export var exp2 = retasmFunc.exp2; diff -Nru binaryen-91/test/wasm2js/bulk-memory.2asm.js binaryen-99/test/wasm2js/bulk-memory.2asm.js --- binaryen-91/test/wasm2js/bulk-memory.2asm.js 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/wasm2js/bulk-memory.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,427 @@ + +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + return { + + }; +} + +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); + + var bufferView; + + var scratchBuffer = new ArrayBuffer(16); + var i32ScratchView = new Int32Array(scratchBuffer); + var f32ScratchView = new Float32Array(scratchBuffer); + var f64ScratchView = new Float64Array(scratchBuffer); + + function wasm2js_memory_fill(dest, value, size) { + dest = dest >>> 0; + size = size >>> 0; + if (dest + size > bufferView.length) throw "trap: invalid memory.fill"; + bufferView.fill(value, dest, dest + size); + } + +function asmFunc(env) { + var buffer = new ArrayBuffer(65536); + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + function $0($0_1, $1_1, $2) { + $0_1 = $0_1 | 0; + $1_1 = $1_1 | 0; + $2 = $2 | 0; + wasm2js_memory_fill($0_1, $1_1, $2); + } + + function $1($0_1) { + $0_1 = $0_1 | 0; + return HEAPU8[$0_1 >> 0] | 0 | 0; + } + + bufferView = HEAPU8; + function __wasm_memory_size() { + return buffer.byteLength / 65536 | 0; + } + + function __wasm_memory_grow(pagesToAdd) { + pagesToAdd = pagesToAdd | 0; + var oldPages = __wasm_memory_size() | 0; + var newPages = oldPages + pagesToAdd | 0; + if ((oldPages < newPages) && (newPages < 65536)) { + var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); + var newHEAP8 = new Int8Array(newBuffer); + newHEAP8.set(HEAP8); + HEAP8 = new Int8Array(newBuffer); + HEAP16 = new Int16Array(newBuffer); + HEAP32 = new Int32Array(newBuffer); + HEAPU8 = new Uint8Array(newBuffer); + HEAPU16 = new Uint16Array(newBuffer); + HEAPU32 = new Uint32Array(newBuffer); + HEAPF32 = new Float32Array(newBuffer); + HEAPF64 = new Float64Array(newBuffer); + buffer = newBuffer; + bufferView = HEAPU8; + } + return oldPages; + } + + return { + "fill": $0, + "load8_u": $1 + }; +} + +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); +export var fill = retasmFunc.fill; +export var load8_u = retasmFunc.load8_u; + + var bufferView; + var base64ReverseLookup = new Uint8Array(123/*'z'+1*/); + for (var i = 25; i >= 0; --i) { + base64ReverseLookup[48+i] = 52+i; // '0-9' + base64ReverseLookup[65+i] = i; // 'A-Z' + base64ReverseLookup[97+i] = 26+i; // 'a-z' + } + base64ReverseLookup[43] = 62; // '+' + base64ReverseLookup[47] = 63; // '/' + /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ + function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { + var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2) - (b64[bLength-2] == '=') - (b64[bLength-1] == '='); + for (; i < bLength; i += 4) { + b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; + b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; + uint8Array[j++] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; + if (j < end) uint8Array[j++] = b1 << 4 | b2 >> 2; + if (j < end) uint8Array[j++] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; + } + return uint8Array; + } +function initActiveSegments(imports) { + base64DecodeToExistingUint8Array(bufferView, 0, "qrvM3Q=="); +} + + var scratchBuffer = new ArrayBuffer(16); + var i32ScratchView = new Int32Array(scratchBuffer); + var f32ScratchView = new Float32Array(scratchBuffer); + var f64ScratchView = new Float64Array(scratchBuffer); + + function wasm2js_memory_copy(dest, source, size) { + // TODO: traps on invalid things + bufferView.copyWithin(dest, source, source + size); + } + +function asmFunc(env) { + var buffer = new ArrayBuffer(65536); + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + function $0($0_1, $1_1, $2) { + $0_1 = $0_1 | 0; + $1_1 = $1_1 | 0; + $2 = $2 | 0; + wasm2js_memory_copy($0_1, $1_1, $2); + } + + function $1($0_1) { + $0_1 = $0_1 | 0; + return HEAPU8[$0_1 >> 0] | 0 | 0; + } + + bufferView = HEAPU8; + initActiveSegments(env); + function __wasm_memory_size() { + return buffer.byteLength / 65536 | 0; + } + + return { + "copy": $0, + "load8_u": $1 + }; +} + +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); +export var copy = retasmFunc.copy; +export var load8_u = retasmFunc.load8_u; + + var bufferView; + var memorySegments = {}; + var base64ReverseLookup = new Uint8Array(123/*'z'+1*/); + for (var i = 25; i >= 0; --i) { + base64ReverseLookup[48+i] = 52+i; // '0-9' + base64ReverseLookup[65+i] = i; // 'A-Z' + base64ReverseLookup[97+i] = 26+i; // 'a-z' + } + base64ReverseLookup[43] = 62; // '+' + base64ReverseLookup[47] = 63; // '/' + /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ + function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { + var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2) - (b64[bLength-2] == '=') - (b64[bLength-1] == '='); + for (; i < bLength; i += 4) { + b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; + b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; + uint8Array[j++] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; + if (j < end) uint8Array[j++] = b1 << 4 | b2 >> 2; + if (j < end) uint8Array[j++] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; + } + return uint8Array; + } +memorySegments[0] = base64DecodeToExistingUint8Array(new Uint8Array(4), 0, "qrvM3Q=="); + + var scratchBuffer = new ArrayBuffer(16); + var i32ScratchView = new Int32Array(scratchBuffer); + var f32ScratchView = new Float32Array(scratchBuffer); + var f64ScratchView = new Float64Array(scratchBuffer); + + function wasm2js_memory_init(segment, dest, offset, size) { + // TODO: traps on invalid things + bufferView.set(memorySegments[segment].subarray(offset, offset + size), dest); + } + +function asmFunc(env) { + var buffer = new ArrayBuffer(65536); + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + function $0($0_1, $1_1, $2) { + $0_1 = $0_1 | 0; + $1_1 = $1_1 | 0; + $2 = $2 | 0; + wasm2js_memory_init(0, $0_1, $1_1, $2); + } + + function $1($0_1) { + $0_1 = $0_1 | 0; + return HEAPU8[$0_1 >> 0] | 0 | 0; + } + + bufferView = HEAPU8; + function __wasm_memory_size() { + return buffer.byteLength / 65536 | 0; + } + + function __wasm_memory_grow(pagesToAdd) { + pagesToAdd = pagesToAdd | 0; + var oldPages = __wasm_memory_size() | 0; + var newPages = oldPages + pagesToAdd | 0; + if ((oldPages < newPages) && (newPages < 65536)) { + var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); + var newHEAP8 = new Int8Array(newBuffer); + newHEAP8.set(HEAP8); + HEAP8 = new Int8Array(newBuffer); + HEAP16 = new Int16Array(newBuffer); + HEAP32 = new Int32Array(newBuffer); + HEAPU8 = new Uint8Array(newBuffer); + HEAPU16 = new Uint16Array(newBuffer); + HEAPU32 = new Uint32Array(newBuffer); + HEAPF32 = new Float32Array(newBuffer); + HEAPF64 = new Float64Array(newBuffer); + buffer = newBuffer; + bufferView = HEAPU8; + } + return oldPages; + } + + return { + "init": $0, + "load8_u": $1 + }; +} + +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); +export var init = retasmFunc.init; +export var load8_u = retasmFunc.load8_u; + + var bufferView; + var memorySegments = {}; + var base64ReverseLookup = new Uint8Array(123/*'z'+1*/); + for (var i = 25; i >= 0; --i) { + base64ReverseLookup[48+i] = 52+i; // '0-9' + base64ReverseLookup[65+i] = i; // 'A-Z' + base64ReverseLookup[97+i] = 26+i; // 'a-z' + } + base64ReverseLookup[43] = 62; // '+' + base64ReverseLookup[47] = 63; // '/' + /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ + function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { + var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2) - (b64[bLength-2] == '=') - (b64[bLength-1] == '='); + for (; i < bLength; i += 4) { + b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; + b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; + uint8Array[j++] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; + if (j < end) uint8Array[j++] = b1 << 4 | b2 >> 2; + if (j < end) uint8Array[j++] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; + } + return uint8Array; + } +memorySegments[0] = base64DecodeToExistingUint8Array(new Uint8Array(0), 0, ""); +function initActiveSegments(imports) { + base64DecodeToExistingUint8Array(bufferView, 0, ""); +} + + var scratchBuffer = new ArrayBuffer(16); + var i32ScratchView = new Int32Array(scratchBuffer); + var f32ScratchView = new Float32Array(scratchBuffer); + var f64ScratchView = new Float64Array(scratchBuffer); + + function wasm2js_data_drop(segment) { + // TODO: traps on invalid things + memorySegments[segment] = new Uint8Array(0); + } + + function wasm2js_memory_init(segment, dest, offset, size) { + // TODO: traps on invalid things + bufferView.set(memorySegments[segment].subarray(offset, offset + size), dest); + } + +function asmFunc(env) { + var buffer = new ArrayBuffer(65536); + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + function $0() { + wasm2js_data_drop(0); + } + + function $1() { + wasm2js_memory_init(0, 0, 0, 0); + } + + function $2() { + wasm2js_data_drop(1); + } + + function $3() { + wasm2js_memory_init(1, 0, 0, 0); + } + + bufferView = HEAPU8; + initActiveSegments(env); + function __wasm_memory_size() { + return buffer.byteLength / 65536 | 0; + } + + function __wasm_memory_grow(pagesToAdd) { + pagesToAdd = pagesToAdd | 0; + var oldPages = __wasm_memory_size() | 0; + var newPages = oldPages + pagesToAdd | 0; + if ((oldPages < newPages) && (newPages < 65536)) { + var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); + var newHEAP8 = new Int8Array(newBuffer); + newHEAP8.set(HEAP8); + HEAP8 = new Int8Array(newBuffer); + HEAP16 = new Int16Array(newBuffer); + HEAP32 = new Int32Array(newBuffer); + HEAPU8 = new Uint8Array(newBuffer); + HEAPU16 = new Uint16Array(newBuffer); + HEAPU32 = new Uint32Array(newBuffer); + HEAPF32 = new Float32Array(newBuffer); + HEAPF64 = new Float64Array(newBuffer); + buffer = newBuffer; + bufferView = HEAPU8; + } + return oldPages; + } + + return { + "drop_passive": $0, + "init_passive": $1, + "drop_active": $2, + "init_active": $3 + }; +} + +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); +export var drop_passive = retasmFunc.drop_passive; +export var init_passive = retasmFunc.init_passive; +export var drop_active = retasmFunc.drop_active; +export var init_active = retasmFunc.init_active; diff -Nru binaryen-91/test/wasm2js/bulk-memory.2asm.js.opt binaryen-99/test/wasm2js/bulk-memory.2asm.js.opt --- binaryen-91/test/wasm2js/bulk-memory.2asm.js.opt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/wasm2js/bulk-memory.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,376 @@ + +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + return { + + }; +} + +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); + + var bufferView; + + var scratchBuffer = new ArrayBuffer(16); + var i32ScratchView = new Int32Array(scratchBuffer); + var f32ScratchView = new Float32Array(scratchBuffer); + var f64ScratchView = new Float64Array(scratchBuffer); + + function wasm2js_memory_fill(dest, value, size) { + dest = dest >>> 0; + size = size >>> 0; + if (dest + size > bufferView.length) throw "trap: invalid memory.fill"; + bufferView.fill(value, dest, dest + size); + } + +function asmFunc(env) { + var buffer = new ArrayBuffer(65536); + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + function $0($0_1, $1_1, $2) { + $0_1 = $0_1 | 0; + $1_1 = $1_1 | 0; + $2 = $2 | 0; + wasm2js_memory_fill($0_1, $1_1, $2); + } + + function $1($0_1) { + $0_1 = $0_1 | 0; + return HEAPU8[$0_1 | 0]; + } + + bufferView = HEAPU8; + function __wasm_memory_size() { + return buffer.byteLength / 65536 | 0; + } + + function __wasm_memory_grow(pagesToAdd) { + pagesToAdd = pagesToAdd | 0; + var oldPages = __wasm_memory_size() | 0; + var newPages = oldPages + pagesToAdd | 0; + if ((oldPages < newPages) && (newPages < 65536)) { + var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); + var newHEAP8 = new Int8Array(newBuffer); + newHEAP8.set(HEAP8); + HEAP8 = new Int8Array(newBuffer); + HEAP16 = new Int16Array(newBuffer); + HEAP32 = new Int32Array(newBuffer); + HEAPU8 = new Uint8Array(newBuffer); + HEAPU16 = new Uint16Array(newBuffer); + HEAPU32 = new Uint32Array(newBuffer); + HEAPF32 = new Float32Array(newBuffer); + HEAPF64 = new Float64Array(newBuffer); + buffer = newBuffer; + bufferView = HEAPU8; + } + return oldPages; + } + + return { + "fill": $0, + "load8_u": $1 + }; +} + +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); +export var fill = retasmFunc.fill; +export var load8_u = retasmFunc.load8_u; + + var bufferView; + var base64ReverseLookup = new Uint8Array(123/*'z'+1*/); + for (var i = 25; i >= 0; --i) { + base64ReverseLookup[48+i] = 52+i; // '0-9' + base64ReverseLookup[65+i] = i; // 'A-Z' + base64ReverseLookup[97+i] = 26+i; // 'a-z' + } + base64ReverseLookup[43] = 62; // '+' + base64ReverseLookup[47] = 63; // '/' + /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ + function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { + var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2) - (b64[bLength-2] == '=') - (b64[bLength-1] == '='); + for (; i < bLength; i += 4) { + b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; + b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; + uint8Array[j++] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; + if (j < end) uint8Array[j++] = b1 << 4 | b2 >> 2; + if (j < end) uint8Array[j++] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; + } + return uint8Array; + } +function initActiveSegments(imports) { + base64DecodeToExistingUint8Array(bufferView, 0, "qrvM3Q=="); +} + + var scratchBuffer = new ArrayBuffer(16); + var i32ScratchView = new Int32Array(scratchBuffer); + var f32ScratchView = new Float32Array(scratchBuffer); + var f64ScratchView = new Float64Array(scratchBuffer); + + function wasm2js_memory_copy(dest, source, size) { + // TODO: traps on invalid things + bufferView.copyWithin(dest, source, source + size); + } + +function asmFunc(env) { + var buffer = new ArrayBuffer(65536); + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + function $0($0_1, $1_1, $2) { + $0_1 = $0_1 | 0; + $1_1 = $1_1 | 0; + $2 = $2 | 0; + wasm2js_memory_copy($0_1, $1_1, $2); + } + + function $1($0_1) { + $0_1 = $0_1 | 0; + return HEAPU8[$0_1 | 0]; + } + + bufferView = HEAPU8; + initActiveSegments(env); + function __wasm_memory_size() { + return buffer.byteLength / 65536 | 0; + } + + return { + "copy": $0, + "load8_u": $1 + }; +} + +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); +export var copy = retasmFunc.copy; +export var load8_u = retasmFunc.load8_u; + + var bufferView; + var memorySegments = {}; + var base64ReverseLookup = new Uint8Array(123/*'z'+1*/); + for (var i = 25; i >= 0; --i) { + base64ReverseLookup[48+i] = 52+i; // '0-9' + base64ReverseLookup[65+i] = i; // 'A-Z' + base64ReverseLookup[97+i] = 26+i; // 'a-z' + } + base64ReverseLookup[43] = 62; // '+' + base64ReverseLookup[47] = 63; // '/' + /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ + function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { + var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2) - (b64[bLength-2] == '=') - (b64[bLength-1] == '='); + for (; i < bLength; i += 4) { + b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; + b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; + uint8Array[j++] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; + if (j < end) uint8Array[j++] = b1 << 4 | b2 >> 2; + if (j < end) uint8Array[j++] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; + } + return uint8Array; + } +memorySegments[0] = base64DecodeToExistingUint8Array(new Uint8Array(4), 0, "qrvM3Q=="); + + var scratchBuffer = new ArrayBuffer(16); + var i32ScratchView = new Int32Array(scratchBuffer); + var f32ScratchView = new Float32Array(scratchBuffer); + var f64ScratchView = new Float64Array(scratchBuffer); + + function wasm2js_memory_init(segment, dest, offset, size) { + // TODO: traps on invalid things + bufferView.set(memorySegments[segment].subarray(offset, offset + size), dest); + } + +function asmFunc(env) { + var buffer = new ArrayBuffer(65536); + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + function $0($0_1, $1_1, $2) { + $0_1 = $0_1 | 0; + $1_1 = $1_1 | 0; + $2 = $2 | 0; + wasm2js_memory_init(0, $0_1, $1_1, $2); + } + + function $1($0_1) { + $0_1 = $0_1 | 0; + return HEAPU8[$0_1 | 0]; + } + + bufferView = HEAPU8; + function __wasm_memory_size() { + return buffer.byteLength / 65536 | 0; + } + + function __wasm_memory_grow(pagesToAdd) { + pagesToAdd = pagesToAdd | 0; + var oldPages = __wasm_memory_size() | 0; + var newPages = oldPages + pagesToAdd | 0; + if ((oldPages < newPages) && (newPages < 65536)) { + var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); + var newHEAP8 = new Int8Array(newBuffer); + newHEAP8.set(HEAP8); + HEAP8 = new Int8Array(newBuffer); + HEAP16 = new Int16Array(newBuffer); + HEAP32 = new Int32Array(newBuffer); + HEAPU8 = new Uint8Array(newBuffer); + HEAPU16 = new Uint16Array(newBuffer); + HEAPU32 = new Uint32Array(newBuffer); + HEAPF32 = new Float32Array(newBuffer); + HEAPF64 = new Float64Array(newBuffer); + buffer = newBuffer; + bufferView = HEAPU8; + } + return oldPages; + } + + return { + "init": $0, + "load8_u": $1 + }; +} + +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); +export var init = retasmFunc.init; +export var load8_u = retasmFunc.load8_u; + +function asmFunc(env) { + var buffer = new ArrayBuffer(65536); + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + function $0() { + + } + + function $1() { + if (__wasm_memory_size() << 16 >>> 0 < 0) { + abort() + } + } + + function __wasm_memory_size() { + return buffer.byteLength / 65536 | 0; + } + + function __wasm_memory_grow(pagesToAdd) { + pagesToAdd = pagesToAdd | 0; + var oldPages = __wasm_memory_size() | 0; + var newPages = oldPages + pagesToAdd | 0; + if ((oldPages < newPages) && (newPages < 65536)) { + var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); + var newHEAP8 = new Int8Array(newBuffer); + newHEAP8.set(HEAP8); + HEAP8 = new Int8Array(newBuffer); + HEAP16 = new Int16Array(newBuffer); + HEAP32 = new Int32Array(newBuffer); + HEAPU8 = new Uint8Array(newBuffer); + HEAPU16 = new Uint16Array(newBuffer); + HEAPU32 = new Uint32Array(newBuffer); + HEAPF32 = new Float32Array(newBuffer); + HEAPF64 = new Float64Array(newBuffer); + buffer = newBuffer; + } + return oldPages; + } + + return { + "drop_passive": $0, + "init_passive": $1, + "drop_active": $0, + "init_active": $1 + }; +} + +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); +export var drop_passive = retasmFunc.drop_passive; +export var init_passive = retasmFunc.init_passive; +export var drop_active = retasmFunc.drop_active; +export var init_active = retasmFunc.init_active; diff -Nru binaryen-91/test/wasm2js/call.2asm.js binaryen-99/test/wasm2js/call.2asm.js --- binaryen-91/test/wasm2js/call.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/call.2asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,748 +0,0 @@ -import { setTempRet0 } from 'env'; - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; - var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var setTempRet0 = env.setTempRet0; - var i64toi32_i32$HIGH_BITS = 0; - function const_i32() { - return 306 | 0; - } - - function const_i64() { - i64toi32_i32$HIGH_BITS = 0; - return 356 | 0; - } - - function const_f32() { - return Math_fround(Math_fround(3890.0)); - } - - function const_f64() { - return +(3940.0); - } - - function id_i32($0) { - $0 = $0 | 0; - return $0 | 0; - } - - function id_i64($0, $0$hi) { - $0 = $0 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$0 = 0; - i64toi32_i32$0 = $0$hi; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return $0 | 0; - } - - function id_f32($0) { - $0 = Math_fround($0); - return Math_fround($0); - } - - function id_f64($0) { - $0 = +$0; - return +$0; - } - - function f32_i32($0, $1) { - $0 = Math_fround($0); - $1 = $1 | 0; - return $1 | 0; - } - - function i32_i64($0, $1, $1$hi) { - $0 = $0 | 0; - $1 = $1 | 0; - $1$hi = $1$hi | 0; - var i64toi32_i32$0 = 0; - i64toi32_i32$0 = $1$hi; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return $1 | 0; - } - - function f64_f32($0, $1) { - $0 = +$0; - $1 = Math_fround($1); - return Math_fround($1); - } - - function i64_f64($0, $0$hi, $1) { - $0 = $0 | 0; - $0$hi = $0$hi | 0; - $1 = +$1; - return +$1; - } - - function $12() { - return const_i32() | 0 | 0; - } - - function $13() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = const_i64() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $14() { - return Math_fround(Math_fround(const_f32())); - } - - function $15() { - return +(+const_f64()); - } - - function $16() { - return id_i32(32 | 0) | 0 | 0; - } - - function $17() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = 0; - i64toi32_i32$0 = id_i64(64 | 0, i64toi32_i32$0 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $18() { - return Math_fround(Math_fround(id_f32(Math_fround(Math_fround(1.3200000524520874))))); - } - - function $19() { - return +(+id_f64(+(1.64))); - } - - function $20() { - return f32_i32(Math_fround(Math_fround(32.099998474121094)), 32 | 0) | 0 | 0; - } - - function $21() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = 0; - i64toi32_i32$0 = i32_i64(32 | 0, 64 | 0, i64toi32_i32$0 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $22() { - return Math_fround(Math_fround(f64_f32(+(64.0), Math_fround(Math_fround(32.0))))); - } - - function $23() { - return +(+i64_f64(64 | 0, 0 | 0, +(64.1))); - } - - function fac($0, $0$hi) { - $0 = $0 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$5 = 0, i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, $8 = 0, $8$hi = 0, i64toi32_i32$3 = 0, $6 = 0, $6$hi = 0; - i64toi32_i32$0 = $0$hi; - if (!($0 | i64toi32_i32$0 | 0)) { - i64toi32_i32$0 = 0; - $8 = 1; - $8$hi = i64toi32_i32$0; - } else { - i64toi32_i32$0 = $0$hi; - i64toi32_i32$2 = $0; - i64toi32_i32$3 = 1; - i64toi32_i32$5 = (i64toi32_i32$2 >>> 0 < i64toi32_i32$3 >>> 0) + 0 | 0; - i64toi32_i32$5 = i64toi32_i32$0 - i64toi32_i32$5 | 0; - i64toi32_i32$5 = fac(i64toi32_i32$2 - i64toi32_i32$3 | 0 | 0, i64toi32_i32$5 | 0) | 0; - i64toi32_i32$2 = i64toi32_i32$HIGH_BITS; - $6 = i64toi32_i32$5; - $6$hi = i64toi32_i32$2; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$5 = $6$hi; - i64toi32_i32$5 = __wasm_i64_mul($0 | 0, i64toi32_i32$0 | 0, $6 | 0, i64toi32_i32$5 | 0) | 0; - i64toi32_i32$2 = i64toi32_i32$HIGH_BITS; - $8 = i64toi32_i32$5; - $8$hi = i64toi32_i32$2; - } - i64toi32_i32$2 = $8$hi; - i64toi32_i32$5 = $8; - i64toi32_i32$HIGH_BITS = i64toi32_i32$2; - return i64toi32_i32$5 | 0; - } - - function fac_acc($0, $0$hi, $1, $1$hi) { - $0 = $0 | 0; - $0$hi = $0$hi | 0; - $1 = $1 | 0; - $1$hi = $1$hi | 0; - var i64toi32_i32$5 = 0, i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, $11 = 0, $11$hi = 0, i64toi32_i32$3 = 0, $6 = 0, $6$hi = 0, $9 = 0, $9$hi = 0; - i64toi32_i32$0 = $0$hi; - if (!($0 | i64toi32_i32$0 | 0)) { - i64toi32_i32$0 = $1$hi; - $11 = $1; - $11$hi = i64toi32_i32$0; - } else { - i64toi32_i32$0 = $0$hi; - i64toi32_i32$2 = $0; - i64toi32_i32$3 = 1; - i64toi32_i32$5 = (i64toi32_i32$2 >>> 0 < i64toi32_i32$3 >>> 0) + 0 | 0; - i64toi32_i32$5 = i64toi32_i32$0 - i64toi32_i32$5 | 0; - $6 = i64toi32_i32$2 - i64toi32_i32$3 | 0; - $6$hi = i64toi32_i32$5; - i64toi32_i32$5 = i64toi32_i32$0; - i64toi32_i32$5 = $1$hi; - i64toi32_i32$5 = i64toi32_i32$0; - i64toi32_i32$2 = $1$hi; - i64toi32_i32$2 = __wasm_i64_mul($0 | 0, i64toi32_i32$5 | 0, $1 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$5 = i64toi32_i32$HIGH_BITS; - $9 = i64toi32_i32$2; - $9$hi = i64toi32_i32$5; - i64toi32_i32$5 = $6$hi; - i64toi32_i32$2 = $9$hi; - i64toi32_i32$2 = fac_acc($6 | 0, i64toi32_i32$5 | 0, $9 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$5 = i64toi32_i32$HIGH_BITS; - $11 = i64toi32_i32$2; - $11$hi = i64toi32_i32$5; - } - i64toi32_i32$5 = $11$hi; - i64toi32_i32$2 = $11; - i64toi32_i32$HIGH_BITS = i64toi32_i32$5; - return i64toi32_i32$2 | 0; - } - - function fib($0, $0$hi) { - $0 = $0 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$5 = 0, i64toi32_i32$4 = 0, i64toi32_i32$6 = 0, $10 = 0, $10$hi = 0, $5 = 0, $5$hi = 0, $8 = 0, $8$hi = 0; - i64toi32_i32$0 = $0$hi; - i64toi32_i32$2 = $0; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 1; - if (i64toi32_i32$0 >>> 0 < i64toi32_i32$1 >>> 0 | ((i64toi32_i32$0 | 0) == (i64toi32_i32$1 | 0) & i64toi32_i32$2 >>> 0 <= i64toi32_i32$3 >>> 0 | 0) | 0) { - i64toi32_i32$2 = 0; - $10 = 1; - $10$hi = i64toi32_i32$2; - } else { - i64toi32_i32$2 = $0$hi; - i64toi32_i32$3 = $0; - i64toi32_i32$0 = 0; - i64toi32_i32$1 = 2; - i64toi32_i32$4 = i64toi32_i32$3 - i64toi32_i32$1 | 0; - i64toi32_i32$6 = i64toi32_i32$3 >>> 0 < i64toi32_i32$1 >>> 0; - i64toi32_i32$5 = i64toi32_i32$6 + i64toi32_i32$0 | 0; - i64toi32_i32$5 = i64toi32_i32$2 - i64toi32_i32$5 | 0; - i64toi32_i32$5 = fib(i64toi32_i32$4 | 0, i64toi32_i32$5 | 0) | 0; - i64toi32_i32$3 = i64toi32_i32$HIGH_BITS; - $5 = i64toi32_i32$5; - $5$hi = i64toi32_i32$3; - i64toi32_i32$3 = i64toi32_i32$2; - i64toi32_i32$3 = i64toi32_i32$2; - i64toi32_i32$2 = $0; - i64toi32_i32$5 = 0; - i64toi32_i32$1 = 1; - i64toi32_i32$0 = i64toi32_i32$2 - i64toi32_i32$1 | 0; - i64toi32_i32$6 = i64toi32_i32$2 >>> 0 < i64toi32_i32$1 >>> 0; - i64toi32_i32$4 = i64toi32_i32$6 + i64toi32_i32$5 | 0; - i64toi32_i32$4 = i64toi32_i32$3 - i64toi32_i32$4 | 0; - i64toi32_i32$4 = fib(i64toi32_i32$0 | 0, i64toi32_i32$4 | 0) | 0; - i64toi32_i32$2 = i64toi32_i32$HIGH_BITS; - $8 = i64toi32_i32$4; - $8$hi = i64toi32_i32$2; - i64toi32_i32$2 = $5$hi; - i64toi32_i32$3 = $5; - i64toi32_i32$4 = $8$hi; - i64toi32_i32$1 = $8; - i64toi32_i32$5 = i64toi32_i32$3 + i64toi32_i32$1 | 0; - i64toi32_i32$0 = i64toi32_i32$2 + i64toi32_i32$4 | 0; - if (i64toi32_i32$5 >>> 0 < i64toi32_i32$1 >>> 0) { - i64toi32_i32$0 = i64toi32_i32$0 + 1 | 0 - } - $10 = i64toi32_i32$5; - $10$hi = i64toi32_i32$0; - } - i64toi32_i32$0 = $10$hi; - i64toi32_i32$3 = $10; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return i64toi32_i32$3 | 0; - } - - function even($0, $0$hi) { - $0 = $0 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, $6 = 0, i64toi32_i32$3 = 0; - i64toi32_i32$0 = $0$hi; - if (!($0 | i64toi32_i32$0 | 0)) { - $6 = 44 - } else { - i64toi32_i32$0 = $0$hi; - i64toi32_i32$3 = 1; - i64toi32_i32$5 = ($0 >>> 0 < i64toi32_i32$3 >>> 0) + 0 | 0; - i64toi32_i32$5 = i64toi32_i32$0 - i64toi32_i32$5 | 0; - $6 = odd($0 - i64toi32_i32$3 | 0 | 0, i64toi32_i32$5 | 0) | 0; - } - return $6 | 0; - } - - function odd($0, $0$hi) { - $0 = $0 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, $6 = 0, i64toi32_i32$3 = 0; - i64toi32_i32$0 = $0$hi; - if (!($0 | i64toi32_i32$0 | 0)) { - $6 = 99 - } else { - i64toi32_i32$0 = $0$hi; - i64toi32_i32$3 = 1; - i64toi32_i32$5 = ($0 >>> 0 < i64toi32_i32$3 >>> 0) + 0 | 0; - i64toi32_i32$5 = i64toi32_i32$0 - i64toi32_i32$5 | 0; - $6 = even($0 - i64toi32_i32$3 | 0 | 0, i64toi32_i32$5 | 0) | 0; - } - return $6 | 0; - } - - function runaway() { - runaway(); - } - - function mutual_runaway1() { - mutual_runaway2(); - } - - function mutual_runaway2() { - mutual_runaway1(); - } - - function legalstub$13() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $13() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7 | 0); - i64toi32_i32$0 = $0$hi; - return $0 | 0; - } - - function legalstub$17() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $17() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7 | 0); - i64toi32_i32$0 = $0$hi; - return $0 | 0; - } - - function legalstub$21() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $21() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7 | 0); - i64toi32_i32$0 = $0$hi; - return $0 | 0; - } - - function legalstub$fac($0, $1) { - $0 = $0 | 0; - $1 = $1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12_1 = 0, $13_1 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2 = 0, $2$hi = 0; - i64toi32_i32$0 = 0; - $4 = $0; - $4$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $12_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $12_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $7$hi = i64toi32_i32$1; - i64toi32_i32$1 = $4$hi; - i64toi32_i32$0 = $4; - i64toi32_i32$2 = $7$hi; - i64toi32_i32$3 = $12_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - i64toi32_i32$2 = fac(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - $2 = i64toi32_i32$2; - $2$hi = i64toi32_i32$0; - i64toi32_i32$1 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $13_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $13_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($13_1 | 0); - i64toi32_i32$2 = $2$hi; - return $2 | 0; - } - - function legalstub$fac_acc($0, $1, $2, $3) { - $0 = $0 | 0; - $1 = $1 | 0; - $2 = $2 | 0; - $3 = $3 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6 = 0, $6$hi = 0, $9$hi = 0, $10 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4 = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $6 = $0; - $6$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $21_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $9$hi = i64toi32_i32$1; - i64toi32_i32$1 = $6$hi; - i64toi32_i32$0 = $6; - i64toi32_i32$2 = $9$hi; - i64toi32_i32$3 = $21_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $10 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $10$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $12_1 = $2; - $12$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $22_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $15$hi = i64toi32_i32$0; - i64toi32_i32$0 = $12$hi; - i64toi32_i32$2 = $12_1; - i64toi32_i32$1 = $15$hi; - i64toi32_i32$3 = $22_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $16$hi = i64toi32_i32$1; - i64toi32_i32$1 = $10$hi; - i64toi32_i32$2 = $16$hi; - i64toi32_i32$2 = fac_acc($10 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $4 = i64toi32_i32$2; - $4$hi = i64toi32_i32$1; - i64toi32_i32$0 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $23_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($23_1 | 0); - i64toi32_i32$2 = $4$hi; - return $4 | 0; - } - - function legalstub$fib($0, $1) { - $0 = $0 | 0; - $1 = $1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12_1 = 0, $13_1 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2 = 0, $2$hi = 0; - i64toi32_i32$0 = 0; - $4 = $0; - $4$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $12_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $12_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $7$hi = i64toi32_i32$1; - i64toi32_i32$1 = $4$hi; - i64toi32_i32$0 = $4; - i64toi32_i32$2 = $7$hi; - i64toi32_i32$3 = $12_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - i64toi32_i32$2 = fib(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - $2 = i64toi32_i32$2; - $2$hi = i64toi32_i32$0; - i64toi32_i32$1 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $13_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $13_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($13_1 | 0); - i64toi32_i32$2 = $2$hi; - return $2 | 0; - } - - function legalstub$even($0, $1) { - $0 = $0 | 0; - $1 = $1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $10 = 0, $3 = 0, $3$hi = 0, $6$hi = 0; - i64toi32_i32$0 = 0; - $3 = $0; - $3$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $10 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $10 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $6$hi = i64toi32_i32$1; - i64toi32_i32$1 = $3$hi; - i64toi32_i32$0 = $3; - i64toi32_i32$2 = $6$hi; - i64toi32_i32$3 = $10; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - return even(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0 | 0; - } - - function legalstub$odd($0, $1) { - $0 = $0 | 0; - $1 = $1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $10 = 0, $3 = 0, $3$hi = 0, $6$hi = 0; - i64toi32_i32$0 = 0; - $3 = $0; - $3$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $10 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $10 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $6$hi = i64toi32_i32$1; - i64toi32_i32$1 = $3$hi; - i64toi32_i32$0 = $3; - i64toi32_i32$2 = $6$hi; - i64toi32_i32$3 = $10; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - return odd(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0 | 0; - } - - function _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE(var$0, var$0$hi, var$1, var$1$hi) { - var$0 = var$0 | 0; - var$0$hi = var$0$hi | 0; - var$1 = var$1 | 0; - var$1$hi = var$1$hi | 0; - var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, var$2 = 0, i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, var$3 = 0, var$4 = 0, var$5 = 0, $21_1 = 0, $22_1 = 0, var$6 = 0, $24 = 0, $17_1 = 0, $18_1 = 0, $23_1 = 0, $29 = 0, $45 = 0, $56$hi = 0, $62$hi = 0; - i64toi32_i32$0 = var$1$hi; - var$2 = var$1; - var$4 = var$2 >>> 16 | 0; - i64toi32_i32$0 = var$0$hi; - var$3 = var$0; - var$5 = var$3 >>> 16 | 0; - $17_1 = Math_imul(var$4, var$5); - $18_1 = var$2; - i64toi32_i32$2 = var$3; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $21_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $21_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - $23_1 = $17_1 + Math_imul($18_1, $21_1) | 0; - i64toi32_i32$1 = var$1$hi; - i64toi32_i32$0 = var$1; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $22_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $22_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - $29 = $23_1 + Math_imul($22_1, var$3) | 0; - var$2 = var$2 & 65535 | 0; - var$3 = var$3 & 65535 | 0; - var$6 = Math_imul(var$2, var$3); - var$2 = (var$6 >>> 16 | 0) + Math_imul(var$2, var$5) | 0; - $45 = $29 + (var$2 >>> 16 | 0) | 0; - var$2 = (var$2 & 65535 | 0) + Math_imul(var$4, var$3) | 0; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $45 + (var$2 >>> 16 | 0) | 0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $24 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $24 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $56$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - $62$hi = i64toi32_i32$0; - i64toi32_i32$0 = $56$hi; - i64toi32_i32$2 = $24; - i64toi32_i32$1 = $62$hi; - i64toi32_i32$3 = var$2 << 16 | 0 | (var$6 & 65535 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - i64toi32_i32$2 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$2 | 0; - } - - function __wasm_i64_mul(var$0, var$0$hi, var$1, var$1$hi) { - var$0 = var$0 | 0; - var$0$hi = var$0$hi | 0; - var$1 = var$1 | 0; - var$1$hi = var$1$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = var$0$hi; - i64toi32_i32$0 = var$1$hi; - i64toi32_i32$0 = var$0$hi; - i64toi32_i32$1 = var$1$hi; - i64toi32_i32$1 = _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE(var$0 | 0, i64toi32_i32$0 | 0, var$1 | 0, i64toi32_i32$1 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return i64toi32_i32$1 | 0; - } - - var FUNCTION_TABLE = []; - return { - "type_i32": $12, - "type_i64": legalstub$13, - "type_f32": $14, - "type_f64": $15, - "type_first_i32": $16, - "type_first_i64": legalstub$17, - "type_first_f32": $18, - "type_first_f64": $19, - "type_second_i32": $20, - "type_second_i64": legalstub$21, - "type_second_f32": $22, - "type_second_f64": $23, - "fac": legalstub$fac, - "fac_acc": legalstub$fac_acc, - "fib": legalstub$fib, - "even": legalstub$even, - "odd": legalstub$odd, - "runaway": runaway, - "mutual_runaway": mutual_runaway1 - }; -} - -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); -export var type_i32 = retasmFunc.type_i32; -export var type_i64 = retasmFunc.type_i64; -export var type_f32 = retasmFunc.type_f32; -export var type_f64 = retasmFunc.type_f64; -export var type_first_i32 = retasmFunc.type_first_i32; -export var type_first_i64 = retasmFunc.type_first_i64; -export var type_first_f32 = retasmFunc.type_first_f32; -export var type_first_f64 = retasmFunc.type_first_f64; -export var type_second_i32 = retasmFunc.type_second_i32; -export var type_second_i64 = retasmFunc.type_second_i64; -export var type_second_f32 = retasmFunc.type_second_f32; -export var type_second_f64 = retasmFunc.type_second_f64; -export var fac = retasmFunc.fac; -export var fac_acc = retasmFunc.fac_acc; -export var fib = retasmFunc.fib; -export var even = retasmFunc.even; -export var odd = retasmFunc.odd; -export var runaway = retasmFunc.runaway; -export var mutual_runaway = retasmFunc.mutual_runaway; diff -Nru binaryen-91/test/wasm2js/call_indirect.2asm.js binaryen-99/test/wasm2js/call_indirect.2asm.js --- binaryen-91/test/wasm2js/call_indirect.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/call_indirect.2asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,717 +0,0 @@ -import { setTempRet0 } from 'env'; - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; - var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var setTempRet0 = env.setTempRet0; - var i64toi32_i32$HIGH_BITS = 0; - function const_i32() { - return 306 | 0; - } - - function const_i64() { - i64toi32_i32$HIGH_BITS = 0; - return 356 | 0; - } - - function const_f32() { - return Math_fround(Math_fround(3890.0)); - } - - function const_f64() { - return +(3940.0); - } - - function id_i32($0) { - $0 = $0 | 0; - return $0 | 0; - } - - function id_i64($0, $0$hi) { - $0 = $0 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$0 = 0; - i64toi32_i32$0 = $0$hi; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return $0 | 0; - } - - function id_f32($0) { - $0 = Math_fround($0); - return Math_fround($0); - } - - function id_f64($0) { - $0 = +$0; - return +$0; - } - - function i32_i64($0, $1, $1$hi) { - $0 = $0 | 0; - $1 = $1 | 0; - $1$hi = $1$hi | 0; - var i64toi32_i32$0 = 0; - i64toi32_i32$0 = $1$hi; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return $1 | 0; - } - - function i64_f64($0, $0$hi, $1) { - $0 = $0 | 0; - $0$hi = $0$hi | 0; - $1 = +$1; - return +$1; - } - - function f32_i32($0, $1) { - $0 = Math_fround($0); - $1 = $1 | 0; - return $1 | 0; - } - - function f64_f32($0, $1) { - $0 = +$0; - $1 = Math_fround($1); - return Math_fround($1); - } - - function over_i32_duplicate($0) { - $0 = $0 | 0; - return $0 | 0; - } - - function over_i64_duplicate($0, $0$hi) { - $0 = $0 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$0 = 0; - i64toi32_i32$0 = $0$hi; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return $0 | 0; - } - - function over_f32_duplicate($0) { - $0 = Math_fround($0); - return Math_fround($0); - } - - function over_f64_duplicate($0) { - $0 = +$0; - return +$0; - } - - function $16() { - return FUNCTION_TABLE[0]() | 0 | 0; - } - - function $17() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = FUNCTION_TABLE[1]() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $18() { - return Math_fround(Math_fround(FUNCTION_TABLE[2]())); - } - - function $19() { - return +(+FUNCTION_TABLE[3]()); - } - - function $20() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = 0; - i64toi32_i32$0 = FUNCTION_TABLE[5](100, i64toi32_i32$0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $21() { - return FUNCTION_TABLE[4](32) | 0 | 0; - } - - function $22() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = 0; - i64toi32_i32$0 = FUNCTION_TABLE[5](64, i64toi32_i32$0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $23() { - return Math_fround(Math_fround(FUNCTION_TABLE[6](Math_fround(1.3200000524520874)))); - } - - function $24() { - return +(+FUNCTION_TABLE[7](1.64)); - } - - function $25() { - return FUNCTION_TABLE[8](Math_fround(32.099998474121094), 32) | 0 | 0; - } - - function $26() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = 0; - i64toi32_i32$0 = FUNCTION_TABLE[9](32, 64, i64toi32_i32$0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $27() { - return Math_fround(Math_fround(FUNCTION_TABLE[10](64.0, Math_fround(32.0)))); - } - - function $28() { - return +(+FUNCTION_TABLE[11](64, 0, 64.1)); - } - - function $29($0, $1, $1$hi) { - $0 = $0 | 0; - $1 = $1 | 0; - $1$hi = $1$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = $1$hi; - i64toi32_i32$0 = FUNCTION_TABLE[$0]($1, i64toi32_i32$0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $30($0) { - $0 = $0 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = 0; - i64toi32_i32$0 = FUNCTION_TABLE[$0](9, i64toi32_i32$0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function fac($0, $0$hi) { - $0 = $0 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$5 = 0, i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, $8 = 0, $8$hi = 0, i64toi32_i32$3 = 0, $6 = 0, $6$hi = 0; - i64toi32_i32$0 = $0$hi; - if (!($0 | i64toi32_i32$0 | 0)) { - i64toi32_i32$0 = 0; - $8 = 1; - $8$hi = i64toi32_i32$0; - } else { - i64toi32_i32$0 = $0$hi; - i64toi32_i32$2 = $0; - i64toi32_i32$3 = 1; - i64toi32_i32$5 = (i64toi32_i32$2 >>> 0 < i64toi32_i32$3 >>> 0) + 0 | 0; - i64toi32_i32$5 = i64toi32_i32$0 - i64toi32_i32$5 | 0; - i64toi32_i32$5 = FUNCTION_TABLE[12](i64toi32_i32$2 - i64toi32_i32$3 | 0, i64toi32_i32$5) | 0; - i64toi32_i32$2 = i64toi32_i32$HIGH_BITS; - $6 = i64toi32_i32$5; - $6$hi = i64toi32_i32$2; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$5 = $6$hi; - i64toi32_i32$5 = __wasm_i64_mul($0 | 0, i64toi32_i32$0 | 0, $6 | 0, i64toi32_i32$5 | 0) | 0; - i64toi32_i32$2 = i64toi32_i32$HIGH_BITS; - $8 = i64toi32_i32$5; - $8$hi = i64toi32_i32$2; - } - i64toi32_i32$2 = $8$hi; - i64toi32_i32$5 = $8; - i64toi32_i32$HIGH_BITS = i64toi32_i32$2; - return i64toi32_i32$5 | 0; - } - - function fib($0, $0$hi) { - $0 = $0 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$5 = 0, i64toi32_i32$4 = 0, i64toi32_i32$6 = 0, $10 = 0, $10$hi = 0, $5 = 0, $5$hi = 0, $8 = 0, $8$hi = 0; - i64toi32_i32$0 = $0$hi; - i64toi32_i32$2 = $0; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 1; - if (i64toi32_i32$0 >>> 0 < i64toi32_i32$1 >>> 0 | ((i64toi32_i32$0 | 0) == (i64toi32_i32$1 | 0) & i64toi32_i32$2 >>> 0 <= i64toi32_i32$3 >>> 0 | 0) | 0) { - i64toi32_i32$2 = 0; - $10 = 1; - $10$hi = i64toi32_i32$2; - } else { - i64toi32_i32$2 = $0$hi; - i64toi32_i32$3 = $0; - i64toi32_i32$0 = 0; - i64toi32_i32$1 = 2; - i64toi32_i32$4 = i64toi32_i32$3 - i64toi32_i32$1 | 0; - i64toi32_i32$6 = i64toi32_i32$3 >>> 0 < i64toi32_i32$1 >>> 0; - i64toi32_i32$5 = i64toi32_i32$6 + i64toi32_i32$0 | 0; - i64toi32_i32$5 = i64toi32_i32$2 - i64toi32_i32$5 | 0; - i64toi32_i32$5 = FUNCTION_TABLE[13](i64toi32_i32$4, i64toi32_i32$5) | 0; - i64toi32_i32$3 = i64toi32_i32$HIGH_BITS; - $5 = i64toi32_i32$5; - $5$hi = i64toi32_i32$3; - i64toi32_i32$3 = i64toi32_i32$2; - i64toi32_i32$3 = i64toi32_i32$2; - i64toi32_i32$2 = $0; - i64toi32_i32$5 = 0; - i64toi32_i32$1 = 1; - i64toi32_i32$0 = i64toi32_i32$2 - i64toi32_i32$1 | 0; - i64toi32_i32$6 = i64toi32_i32$2 >>> 0 < i64toi32_i32$1 >>> 0; - i64toi32_i32$4 = i64toi32_i32$6 + i64toi32_i32$5 | 0; - i64toi32_i32$4 = i64toi32_i32$3 - i64toi32_i32$4 | 0; - i64toi32_i32$4 = FUNCTION_TABLE[13](i64toi32_i32$0, i64toi32_i32$4) | 0; - i64toi32_i32$2 = i64toi32_i32$HIGH_BITS; - $8 = i64toi32_i32$4; - $8$hi = i64toi32_i32$2; - i64toi32_i32$2 = $5$hi; - i64toi32_i32$3 = $5; - i64toi32_i32$4 = $8$hi; - i64toi32_i32$1 = $8; - i64toi32_i32$5 = i64toi32_i32$3 + i64toi32_i32$1 | 0; - i64toi32_i32$0 = i64toi32_i32$2 + i64toi32_i32$4 | 0; - if (i64toi32_i32$5 >>> 0 < i64toi32_i32$1 >>> 0) { - i64toi32_i32$0 = i64toi32_i32$0 + 1 | 0 - } - $10 = i64toi32_i32$5; - $10$hi = i64toi32_i32$0; - } - i64toi32_i32$0 = $10$hi; - i64toi32_i32$3 = $10; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return i64toi32_i32$3 | 0; - } - - function even($0) { - $0 = $0 | 0; - var $6 = 0; - if (!$0) { - $6 = 44 - } else { - $6 = FUNCTION_TABLE[15]($0 - 1 | 0) | 0 - } - return $6 | 0; - } - - function odd($0) { - $0 = $0 | 0; - var $6 = 0; - if (!$0) { - $6 = 99 - } else { - $6 = FUNCTION_TABLE[14]($0 - 1 | 0) | 0 - } - return $6 | 0; - } - - function runaway() { - FUNCTION_TABLE[16](); - } - - function mutual_runaway1() { - FUNCTION_TABLE[18](); - } - - function mutual_runaway2() { - FUNCTION_TABLE[17](); - } - - function legalstub$17() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $17() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7 | 0); - i64toi32_i32$0 = $0$hi; - return $0 | 0; - } - - function legalstub$20() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $20() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7 | 0); - i64toi32_i32$0 = $0$hi; - return $0 | 0; - } - - function legalstub$22() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $22() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7 | 0); - i64toi32_i32$0 = $0$hi; - return $0 | 0; - } - - function legalstub$26() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $26() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7 | 0); - i64toi32_i32$0 = $0$hi; - return $0 | 0; - } - - function legalstub$29($0, $1, $2) { - $0 = $0 | 0; - $1 = $1 | 0; - $2 = $2 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $14 = 0, $15 = 0, $4 = 0, $6 = 0, $6$hi = 0, $9$hi = 0, $3 = 0, $3$hi = 0; - $4 = $0; - i64toi32_i32$0 = 0; - $6 = $1; - $6$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $2; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $14 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $14 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $9$hi = i64toi32_i32$1; - i64toi32_i32$1 = $6$hi; - i64toi32_i32$0 = $6; - i64toi32_i32$2 = $9$hi; - i64toi32_i32$3 = $14; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - i64toi32_i32$2 = $29($4 | 0, i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - $3 = i64toi32_i32$2; - $3$hi = i64toi32_i32$0; - i64toi32_i32$1 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $15 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $15 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($15 | 0); - i64toi32_i32$2 = $3$hi; - return $3 | 0; - } - - function legalstub$30($0) { - $0 = $0 | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $1 = 0, $1$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $30($0 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $8 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($8 | 0); - i64toi32_i32$0 = $1$hi; - return $1 | 0; - } - - function legalstub$fac($0, $1) { - $0 = $0 | 0; - $1 = $1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2 = 0, $2$hi = 0; - i64toi32_i32$0 = 0; - $4 = $0; - $4$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $12 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $7$hi = i64toi32_i32$1; - i64toi32_i32$1 = $4$hi; - i64toi32_i32$0 = $4; - i64toi32_i32$2 = $7$hi; - i64toi32_i32$3 = $12; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - i64toi32_i32$2 = fac(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - $2 = i64toi32_i32$2; - $2$hi = i64toi32_i32$0; - i64toi32_i32$1 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($13 | 0); - i64toi32_i32$2 = $2$hi; - return $2 | 0; - } - - function legalstub$fib($0, $1) { - $0 = $0 | 0; - $1 = $1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2 = 0, $2$hi = 0; - i64toi32_i32$0 = 0; - $4 = $0; - $4$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $12 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $7$hi = i64toi32_i32$1; - i64toi32_i32$1 = $4$hi; - i64toi32_i32$0 = $4; - i64toi32_i32$2 = $7$hi; - i64toi32_i32$3 = $12; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - i64toi32_i32$2 = fib(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - $2 = i64toi32_i32$2; - $2$hi = i64toi32_i32$0; - i64toi32_i32$1 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($13 | 0); - i64toi32_i32$2 = $2$hi; - return $2 | 0; - } - - function _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE(var$0, var$0$hi, var$1, var$1$hi) { - var$0 = var$0 | 0; - var$0$hi = var$0$hi | 0; - var$1 = var$1 | 0; - var$1$hi = var$1$hi | 0; - var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, var$2 = 0, i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, var$3 = 0, var$4 = 0, var$5 = 0, $21_1 = 0, $22_1 = 0, var$6 = 0, $24_1 = 0, $17_1 = 0, $18_1 = 0, $23_1 = 0, $29_1 = 0, $45 = 0, $56$hi = 0, $62$hi = 0; - i64toi32_i32$0 = var$1$hi; - var$2 = var$1; - var$4 = var$2 >>> 16 | 0; - i64toi32_i32$0 = var$0$hi; - var$3 = var$0; - var$5 = var$3 >>> 16 | 0; - $17_1 = Math_imul(var$4, var$5); - $18_1 = var$2; - i64toi32_i32$2 = var$3; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $21_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $21_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - $23_1 = $17_1 + Math_imul($18_1, $21_1) | 0; - i64toi32_i32$1 = var$1$hi; - i64toi32_i32$0 = var$1; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $22_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $22_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - $29_1 = $23_1 + Math_imul($22_1, var$3) | 0; - var$2 = var$2 & 65535 | 0; - var$3 = var$3 & 65535 | 0; - var$6 = Math_imul(var$2, var$3); - var$2 = (var$6 >>> 16 | 0) + Math_imul(var$2, var$5) | 0; - $45 = $29_1 + (var$2 >>> 16 | 0) | 0; - var$2 = (var$2 & 65535 | 0) + Math_imul(var$4, var$3) | 0; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $45 + (var$2 >>> 16 | 0) | 0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $24_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $24_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $56$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - $62$hi = i64toi32_i32$0; - i64toi32_i32$0 = $56$hi; - i64toi32_i32$2 = $24_1; - i64toi32_i32$1 = $62$hi; - i64toi32_i32$3 = var$2 << 16 | 0 | (var$6 & 65535 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - i64toi32_i32$2 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$2 | 0; - } - - function __wasm_i64_mul(var$0, var$0$hi, var$1, var$1$hi) { - var$0 = var$0 | 0; - var$0$hi = var$0$hi | 0; - var$1 = var$1 | 0; - var$1$hi = var$1$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = var$0$hi; - i64toi32_i32$0 = var$1$hi; - i64toi32_i32$0 = var$0$hi; - i64toi32_i32$1 = var$1$hi; - i64toi32_i32$1 = _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE(var$0 | 0, i64toi32_i32$0 | 0, var$1 | 0, i64toi32_i32$1 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return i64toi32_i32$1 | 0; - } - - var FUNCTION_TABLE = [const_i32, const_i64, const_f32, const_f64, id_i32, id_i64, id_f32, id_f64, f32_i32, i32_i64, f64_f32, i64_f64, fac, fib, even, odd, runaway, mutual_runaway1, mutual_runaway2, over_i32_duplicate, over_i64_duplicate, over_f32_duplicate, over_f64_duplicate]; - return { - "type_i32": $16, - "type_i64": legalstub$17, - "type_f32": $18, - "type_f64": $19, - "type_index": legalstub$20, - "type_first_i32": $21, - "type_first_i64": legalstub$22, - "type_first_f32": $23, - "type_first_f64": $24, - "type_second_i32": $25, - "type_second_i64": legalstub$26, - "type_second_f32": $27, - "type_second_f64": $28, - "dispatch": legalstub$29, - "dispatch_structural": legalstub$30, - "fac": legalstub$fac, - "fib": legalstub$fib, - "even": even, - "odd": odd, - "runaway": runaway, - "mutual_runaway": mutual_runaway1 - }; -} - -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); -export var type_i32 = retasmFunc.type_i32; -export var type_i64 = retasmFunc.type_i64; -export var type_f32 = retasmFunc.type_f32; -export var type_f64 = retasmFunc.type_f64; -export var type_index = retasmFunc.type_index; -export var type_first_i32 = retasmFunc.type_first_i32; -export var type_first_i64 = retasmFunc.type_first_i64; -export var type_first_f32 = retasmFunc.type_first_f32; -export var type_first_f64 = retasmFunc.type_first_f64; -export var type_second_i32 = retasmFunc.type_second_i32; -export var type_second_i64 = retasmFunc.type_second_i64; -export var type_second_f32 = retasmFunc.type_second_f32; -export var type_second_f64 = retasmFunc.type_second_f64; -export var dispatch = retasmFunc.dispatch; -export var dispatch_structural = retasmFunc.dispatch_structural; -export var fac = retasmFunc.fac; -export var fib = retasmFunc.fib; -export var even = retasmFunc.even; -export var odd = retasmFunc.odd; -export var runaway = retasmFunc.runaway; -export var mutual_runaway = retasmFunc.mutual_runaway; diff -Nru binaryen-91/test/wasm2js/comments.2asm.js binaryen-99/test/wasm2js/comments.2asm.js --- binaryen-91/test/wasm2js/comments.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/comments.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,60 +1,44 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var FUNCTION_TABLE = []; + var nan = NaN; + var infinity = Infinity; return { }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var FUNCTION_TABLE = []; + var nan = NaN; + var infinity = Infinity; return { }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); diff -Nru binaryen-91/test/wasm2js/conversions-modified.2asm.js binaryen-99/test/wasm2js/conversions-modified.2asm.js --- binaryen-91/test/wasm2js/conversions-modified.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/conversions-modified.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ import { setTempRet0 } from 'env'; - var scratchBuffer = new ArrayBuffer(8); + var scratchBuffer = new ArrayBuffer(16); var i32ScratchView = new Int32Array(scratchBuffer); var f32ScratchView = new Float32Array(scratchBuffer); var f64ScratchView = new Float64Array(scratchBuffer); @@ -23,34 +23,27 @@ } function wasm2js_scratch_load_f32() { - return f32ScratchView[0]; + return f32ScratchView[2]; } function wasm2js_scratch_store_f32(value) { - f32ScratchView[0] = value; + f32ScratchView[2] = value; } -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function $0(x) { @@ -240,7 +233,7 @@ function $21(x) { x = x | 0; - return Math_fround((wasm2js_scratch_store_i32(0, x), wasm2js_scratch_load_f32())); + return Math_fround((wasm2js_scratch_store_i32(2, x), wasm2js_scratch_load_f32())); } function $22(x, x$hi) { @@ -255,7 +248,7 @@ function $23(x) { x = Math_fround(x); - return (wasm2js_scratch_store_f32(x), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(x), wasm2js_scratch_load_i32(2)) | 0; } function $24(x) { @@ -597,7 +590,6 @@ return $1_1 | 0; } - var FUNCTION_TABLE = []; return { "i64_extend_s_i32": legalstub$0, "i64_extend_u_i32": legalstub$1, @@ -627,8 +619,9 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var i64_extend_s_i32 = retasmFunc.i64_extend_s_i32; export var i64_extend_u_i32 = retasmFunc.i64_extend_u_i32; export var i32_wrap_i64 = retasmFunc.i32_wrap_i64; diff -Nru binaryen-91/test/wasm2js/conversions-modified.2asm.js.opt binaryen-99/test/wasm2js/conversions-modified.2asm.js.opt --- binaryen-91/test/wasm2js/conversions-modified.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/conversions-modified.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ import { setTempRet0 } from 'env'; - var scratchBuffer = new ArrayBuffer(8); + var scratchBuffer = new ArrayBuffer(16); var i32ScratchView = new Int32Array(scratchBuffer); var f32ScratchView = new Float32Array(scratchBuffer); var f64ScratchView = new Float64Array(scratchBuffer); @@ -23,34 +23,27 @@ } function wasm2js_scratch_load_f32() { - return f32ScratchView[0]; + return f32ScratchView[2]; } function wasm2js_scratch_store_f32(value) { - f32ScratchView[0] = value; + f32ScratchView[2] = value; } -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function $3($0) { @@ -75,13 +68,13 @@ function $7($0) { $0 = Math_fround($0); - i64toi32_i32$HIGH_BITS = Math_fround(Math_abs($0)) >= Math_fround(1.0) ? ($0 > Math_fround(0.0) ? ~~Math_fround(Math_min(Math_fround(Math_floor(Math_fround($0 / Math_fround(4294967296.0)))), Math_fround(4294967296.0))) >>> 0 : ~~Math_fround(Math_ceil(Math_fround(Math_fround($0 - Math_fround(~~$0 >>> 0 >>> 0)) / Math_fround(4294967296.0)))) >>> 0) : 0; + i64toi32_i32$HIGH_BITS = Math_fround(Math_abs($0)) >= Math_fround(1.0) ? ($0 > Math_fround(0.0) ? ~~Math_fround(Math_min(Math_fround(Math_floor(Math_fround($0 * Math_fround(2.3283064365386963e-10)))), Math_fround(4294967296.0))) >>> 0 : ~~Math_fround(Math_ceil(Math_fround(Math_fround($0 - Math_fround(~~$0 >>> 0 >>> 0)) * Math_fround(2.3283064365386963e-10)))) >>> 0) : 0; return ~~$0 >>> 0 | 0; } function $9($0) { $0 = +$0; - i64toi32_i32$HIGH_BITS = Math_abs($0) >= 1.0 ? ($0 > 0.0 ? ~~Math_min(Math_floor($0 / 4294967296.0), 4294967295.0) >>> 0 : ~~Math_ceil(($0 - +(~~$0 >>> 0 >>> 0)) / 4294967296.0) >>> 0) : 0; + i64toi32_i32$HIGH_BITS = Math_abs($0) >= 1.0 ? ($0 > 0.0 ? ~~Math_min(Math_floor($0 * 2.3283064365386963e-10), 4294967295.0) >>> 0 : ~~Math_ceil(($0 - +(~~$0 >>> 0 >>> 0)) * 2.3283064365386963e-10) >>> 0) : 0; return ~~$0 >>> 0 | 0; } @@ -117,12 +110,12 @@ function $21($0) { $0 = $0 | 0; - return Math_fround((wasm2js_scratch_store_i32(0, $0), wasm2js_scratch_load_f32())); + return Math_fround((wasm2js_scratch_store_i32(2, $0), wasm2js_scratch_load_f32())); } function $23($0) { $0 = Math_fround($0); - return (wasm2js_scratch_store_f32($0), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32($0), wasm2js_scratch_load_i32(2)) | 0; } function legalstub$0($0) { @@ -156,19 +149,19 @@ } function legalstub$12($0, $1) { - return Math_fround(+($0 >>> 0) + 4294967296.0 * +($1 | 0)); + return Math_fround(+($0 >>> 0) + +($1 | 0) * 4294967296.0); } function legalstub$14($0, $1) { - return +($0 >>> 0) + 4294967296.0 * +($1 | 0); + return +($0 >>> 0) + +($1 | 0) * 4294967296.0; } function legalstub$16($0, $1) { - return Math_fround(+($0 >>> 0) + 4294967296.0 * +($1 >>> 0)); + return Math_fround(+($0 >>> 0) + +($1 >>> 0) * 4294967296.0); } function legalstub$18($0, $1) { - return +($0 >>> 0) + 4294967296.0 * +($1 >>> 0); + return +($0 >>> 0) + +($1 >>> 0) * 4294967296.0; } function legalstub$22($0, $1) { @@ -188,7 +181,6 @@ return $1; } - var FUNCTION_TABLE = []; return { "i64_extend_s_i32": legalstub$0, "i64_extend_u_i32": legalstub$1, @@ -218,8 +210,9 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var i64_extend_s_i32 = retasmFunc.i64_extend_s_i32; export var i64_extend_u_i32 = retasmFunc.i64_extend_u_i32; export var i32_wrap_i64 = retasmFunc.i32_wrap_i64; diff -Nru binaryen-91/test/wasm2js/deterministic.2asm.js binaryen-99/test/wasm2js/deterministic.2asm.js --- binaryen-91/test/wasm2js/deterministic.2asm.js 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/wasm2js/deterministic.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,47 @@ + +function asmFunc(env) { + var memory = env.memory; + var buffer = memory.buffer; + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + var global$0 = -44; + function $0() { + if ((global$0 >>> 0) / ((HEAP32[0 >> 2] | 0) >>> 0) | 0) { + abort() + } + return 1 | 0; + } + + function __wasm_memory_size() { + return buffer.byteLength / 65536 | 0; + } + + return { + "foo": $0 + }; +} + +var memasmFunc = new ArrayBuffer(65536); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + memory: { buffer : memasmFunc } + }); +export var foo = retasmFunc.foo; diff -Nru binaryen-91/test/wasm2js/deterministic.2asm.js.opt binaryen-99/test/wasm2js/deterministic.2asm.js.opt --- binaryen-91/test/wasm2js/deterministic.2asm.js.opt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/wasm2js/deterministic.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,46 @@ + +function asmFunc(env) { + var memory = env.memory; + var buffer = memory.buffer; + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + function $0() { + if (4294967252 / HEAPU32[0] | 0) { + abort() + } + return 1; + } + + function __wasm_memory_size() { + return buffer.byteLength / 65536 | 0; + } + + return { + "foo": $0 + }; +} + +var memasmFunc = new ArrayBuffer(65536); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + memory: { buffer : memasmFunc } + }); +export var foo = retasmFunc.foo; diff -Nru binaryen-91/test/wasm2js/deterministic.wast binaryen-99/test/wasm2js/deterministic.wast --- binaryen-91/test/wasm2js/deterministic.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/wasm2js/deterministic.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,14 @@ +(module + (global $global$0 (mut i32) (i32.const -44)) + (import "env" "memory" (memory $0 1 1)) + (func "foo" (result i32) + (if + (i32.div_u + (global.get $global$0) + (i32.load (i32.const 0)) + ) + (unreachable) + ) + (i32.const 1) + ) +) diff -Nru binaryen-91/test/wasm2js/dot_import.2asm.js binaryen-99/test/wasm2js/dot_import.2asm.js --- binaryen-91/test/wasm2js/dot_import.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/dot_import.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,37 +1,30 @@ import { ba_se } from 'mod.ule'; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var base = env.ba_se; function $0() { base(); } - var FUNCTION_TABLE = []; return { "exported": $0 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },ba_se},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + ba_se + }); export var exported = retasmFunc.exported; diff -Nru binaryen-91/test/wasm2js/dot_import.2asm.js.opt binaryen-99/test/wasm2js/dot_import.2asm.js.opt --- binaryen-91/test/wasm2js/dot_import.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/dot_import.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,37 +1,30 @@ import { ba_se } from 'mod.ule'; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var base = env.ba_se; function $0() { base(); } - var FUNCTION_TABLE = []; return { "exported": $0 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },ba_se},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + ba_se + }); export var exported = retasmFunc.exported; diff -Nru binaryen-91/test/wasm2js/dynamicLibrary.2asm.js binaryen-99/test/wasm2js/dynamicLibrary.2asm.js --- binaryen-91/test/wasm2js/dynamicLibrary.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/dynamicLibrary.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,28 +1,65 @@ import { memoryBase } from 'env'; import { tableBase } from 'env'; -function asmFunc(global, env, buffer) { +function Table(ret) { + // grow method not included; table is not growable + ret.set = function(i, func) { + this[i] = func; + }; + ret.get = function(i) { + return this[i]; + }; + return ret; +} + + var bufferView; + var base64ReverseLookup = new Uint8Array(123/*'z'+1*/); + for (var i = 25; i >= 0; --i) { + base64ReverseLookup[48+i] = 52+i; // '0-9' + base64ReverseLookup[65+i] = i; // 'A-Z' + base64ReverseLookup[97+i] = 26+i; // 'a-z' + } + base64ReverseLookup[43] = 62; // '+' + base64ReverseLookup[47] = 63; // '/' + /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ + function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { + var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2) - (b64[bLength-2] == '=') - (b64[bLength-1] == '='); + for (; i < bLength; i += 4) { + b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; + b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; + uint8Array[j++] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; + if (j < end) uint8Array[j++] = b1 << 4 | b2 >> 2; + if (j < end) uint8Array[j++] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; + } + return uint8Array; + } +function initActiveSegments(imports) { + base64DecodeToExistingUint8Array(bufferView, imports[memoryBase], "ZHluYW1pYyBkYXRh"); +} +function asmFunc(env) { var memory = env.memory; - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; + var buffer = memory.buffer; + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var import$memoryBase = env.memoryBase | 0; var import$tableBase = env.tableBase | 0; function foo() { @@ -37,7 +74,9 @@ } - var FUNCTION_TABLE = []; + bufferView = HEAPU8; + initActiveSegments(env); + var FUNCTION_TABLE = Table(new Array(10)); FUNCTION_TABLE[import$tableBase + 0] = foo; FUNCTION_TABLE[import$tableBase + 1] = bar; function __wasm_memory_size() { @@ -45,32 +84,13 @@ } return { - "baz": baz + "baz": baz, + "tab": FUNCTION_TABLE }; } var memasmFunc = new ArrayBuffer(16777216); -for (var base64ReverseLookup = new Uint8Array(123/*'z'+1*/), i = 25; i >= 0; --i) { - base64ReverseLookup[48+i] = 52+i; // '0-9' - base64ReverseLookup[65+i] = i; // 'A-Z' - base64ReverseLookup[97+i] = 26+i; // 'a-z' - } - base64ReverseLookup[43] = 62; // '+' - base64ReverseLookup[47] = 63; // '/' - /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ - function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { - var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2); - if (b64[bLength-2] == '=') --end; - if (b64[bLength-1] == '=') --end; - for (; i < bLength; i += 4, j += 3) { - b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; - b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; - uint8Array[j] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; - if (j+1 < end) uint8Array[j+1] = b1 << 4 | b2 >> 2; - if (j+2 < end) uint8Array[j+2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; - } - } -var bufferView = new Uint8Array(memasmFunc); -base64DecodeToExistingUint8Array(bufferView, memoryBase, "ZHluYW1pYyBkYXRh"); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + memory: { buffer : memasmFunc } + }); export var baz = retasmFunc.baz; diff -Nru binaryen-91/test/wasm2js/dynamicLibrary.2asm.js.opt binaryen-99/test/wasm2js/dynamicLibrary.2asm.js.opt --- binaryen-91/test/wasm2js/dynamicLibrary.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/dynamicLibrary.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,35 +1,74 @@ import { memoryBase } from 'env'; import { tableBase } from 'env'; -function asmFunc(global, env, buffer) { +function Table(ret) { + // grow method not included; table is not growable + ret.set = function(i, func) { + this[i] = func; + }; + ret.get = function(i) { + return this[i]; + }; + return ret; +} + + var bufferView; + var base64ReverseLookup = new Uint8Array(123/*'z'+1*/); + for (var i = 25; i >= 0; --i) { + base64ReverseLookup[48+i] = 52+i; // '0-9' + base64ReverseLookup[65+i] = i; // 'A-Z' + base64ReverseLookup[97+i] = 26+i; // 'a-z' + } + base64ReverseLookup[43] = 62; // '+' + base64ReverseLookup[47] = 63; // '/' + /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ + function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { + var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2) - (b64[bLength-2] == '=') - (b64[bLength-1] == '='); + for (; i < bLength; i += 4) { + b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; + b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; + uint8Array[j++] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; + if (j < end) uint8Array[j++] = b1 << 4 | b2 >> 2; + if (j < end) uint8Array[j++] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; + } + return uint8Array; + } +function initActiveSegments(imports) { + base64DecodeToExistingUint8Array(bufferView, imports[memoryBase], "ZHluYW1pYyBkYXRh"); +} +function asmFunc(env) { var memory = env.memory; - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; + var buffer = memory.buffer; + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var import$memoryBase = env.memoryBase | 0; var import$tableBase = env.tableBase | 0; function foo() { } - var FUNCTION_TABLE = []; + bufferView = HEAPU8; + initActiveSegments(env); + var FUNCTION_TABLE = Table(new Array(10)); FUNCTION_TABLE[import$tableBase + 0] = foo; FUNCTION_TABLE[import$tableBase + 1] = foo; function __wasm_memory_size() { @@ -37,32 +76,13 @@ } return { - "baz": foo + "baz": foo, + "tab": FUNCTION_TABLE }; } var memasmFunc = new ArrayBuffer(16777216); -for (var base64ReverseLookup = new Uint8Array(123/*'z'+1*/), i = 25; i >= 0; --i) { - base64ReverseLookup[48+i] = 52+i; // '0-9' - base64ReverseLookup[65+i] = i; // 'A-Z' - base64ReverseLookup[97+i] = 26+i; // 'a-z' - } - base64ReverseLookup[43] = 62; // '+' - base64ReverseLookup[47] = 63; // '/' - /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ - function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { - var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2); - if (b64[bLength-2] == '=') --end; - if (b64[bLength-1] == '=') --end; - for (; i < bLength; i += 4, j += 3) { - b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; - b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; - uint8Array[j] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; - if (j+1 < end) uint8Array[j+1] = b1 << 4 | b2 >> 2; - if (j+2 < end) uint8Array[j+2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; - } - } -var bufferView = new Uint8Array(memasmFunc); -base64DecodeToExistingUint8Array(bufferView, memoryBase, "ZHluYW1pYyBkYXRh"); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + memory: { buffer : memasmFunc } + }); export var baz = retasmFunc.baz; diff -Nru binaryen-91/test/wasm2js/empty_export.2asm.js binaryen-99/test/wasm2js/empty_export.2asm.js --- binaryen-91/test/wasm2js/empty_export.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/empty_export.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,35 +1,27 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function foo() { } - var FUNCTION_TABLE = []; return { "$": foo }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var $ = retasmFunc.$; diff -Nru binaryen-91/test/wasm2js/empty_export.2asm.js.opt binaryen-99/test/wasm2js/empty_export.2asm.js.opt --- binaryen-91/test/wasm2js/empty_export.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/empty_export.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,35 +1,27 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function foo() { } - var FUNCTION_TABLE = []; return { "$": foo }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var $ = retasmFunc.$; diff -Nru binaryen-91/test/wasm2js/empty_table.2asm.js binaryen-99/test/wasm2js/empty_table.2asm.js --- binaryen-91/test/wasm2js/empty_table.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/empty_table.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,30 +1,22 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var FUNCTION_TABLE = []; + var nan = NaN; + var infinity = Infinity; return { }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); diff -Nru binaryen-91/test/wasm2js/emscripten.2asm.js binaryen-99/test/wasm2js/emscripten.2asm.js --- binaryen-91/test/wasm2js/emscripten.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/emscripten.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,28 +1,53 @@ -function instantiate(asmLibraryArg, wasmMemory, wasmTable) { - -function asmFunc(global, env, buffer) { - var memory = env.memory; - var FUNCTION_TABLE = wasmTable; - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function instantiate(asmLibraryArg) { + var bufferView; + var base64ReverseLookup = new Uint8Array(123/*'z'+1*/); + for (var i = 25; i >= 0; --i) { + base64ReverseLookup[48+i] = 52+i; // '0-9' + base64ReverseLookup[65+i] = i; // 'A-Z' + base64ReverseLookup[97+i] = 26+i; // 'a-z' + } + base64ReverseLookup[43] = 62; // '+' + base64ReverseLookup[47] = 63; // '/' + /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ + function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { + var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2) - (b64[bLength-2] == '=') - (b64[bLength-1] == '='); + for (; i < bLength; i += 4) { + b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; + b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; + uint8Array[j++] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; + if (j < end) uint8Array[j++] = b1 << 4 | b2 >> 2; + if (j < end) uint8Array[j++] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; + } + return uint8Array; + } +function initActiveSegments(imports) { + base64DecodeToExistingUint8Array(bufferView, 1024, "aGVsbG8sIHdvcmxkIQoAAJwMAAAtKyAgIDBYMHgAKG51bGwpAAAAAAAAAAAAAAAAEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAETCQsLAAAJBgsAAAsABhEAAAAREREAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAEQAKChEREQAKAAACAAkLAAAACQALAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAADAAAAAAJDAAAAAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAANAAAABA0AAAAACQ4AAAAAAA4AAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAADwAAAAAPAAAAAAkQAAAAAAAQAAAQAAASAAAAEhISAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAASEhIAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAKAAAAAAoAAAAACQsAAAAAAAsAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGLTBYKzBYIDBYLTB4KzB4IDB4AGluZgBJTkYAbmFuAE5BTgAuAA=="); + base64DecodeToExistingUint8Array(bufferView, 1600, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="); +} +function asmFunc(env) { + var buffer = new ArrayBuffer(16777216); + var FUNCTION_TABLE = env.table; + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var syscall$6 = env.__syscall6; var syscall$54 = env.__syscall54; // EMSCRIPTEN_START_FUNCS @@ -30,7 +55,7 @@ function main() { syscall$6(1 | 0, 2 | 0) | 0; syscall$54(3 | 0, 4 | 0) | 0; - FUNCTION_TABLE[HEAP32[(0 + 1030 | 0) >> 2] | 0](); + FUNCTION_TABLE[HEAP32[(0 + 1030 | 0) >> 2] | 0 | 0](); internal(1 | 0) | 0; tabled(1 | 0) | 0; exported(1 | 0) | 0; @@ -186,6 +211,8 @@ // EMSCRIPTEN_END_FUNCS ; + bufferView = HEAPU8; + initActiveSegments(env); FUNCTION_TABLE[1] = foo; FUNCTION_TABLE[2] = bar; FUNCTION_TABLE[3] = tabled; @@ -204,44 +231,5 @@ }; } -for (var base64ReverseLookup = new Uint8Array(123/*'z'+1*/), i = 25; i >= 0; --i) { - base64ReverseLookup[48+i] = 52+i; // '0-9' - base64ReverseLookup[65+i] = i; // 'A-Z' - base64ReverseLookup[97+i] = 26+i; // 'a-z' - } - base64ReverseLookup[43] = 62; // '+' - base64ReverseLookup[47] = 63; // '/' - /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ - function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { - var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2); - if (b64[bLength-2] == '=') --end; - if (b64[bLength-1] == '=') --end; - for (; i < bLength; i += 4, j += 3) { - b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; - b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; - uint8Array[j] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; - if (j+1 < end) uint8Array[j+1] = b1 << 4 | b2 >> 2; - if (j+2 < end) uint8Array[j+2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; - } - } -var bufferView = new Uint8Array(wasmMemory.buffer); -base64DecodeToExistingUint8Array(bufferView, 1024, "aGVsbG8sIHdvcmxkIQoAAJwMAAAtKyAgIDBYMHgAKG51bGwpAAAAAAAAAAAAAAAAEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAETCQsLAAAJBgsAAAsABhEAAAAREREAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAAAEQAKChEREQAKAAACAAkLAAAACQALAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAADAAAAAAJDAAAAAAADAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAANAAAABA0AAAAACQ4AAAAAAA4AAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAADwAAAAAPAAAAAAkQAAAAAAAQAAAQAAASAAAAEhISAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAASEhIAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAKAAAAAAoAAAAACQsAAAAAAAsAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGLTBYKzBYIDBYLTB4KzB4IDB4AGluZgBJTkYAbmFuAE5BTgAuAA=="); -base64DecodeToExistingUint8Array(bufferView, 1600, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="); -return asmFunc({ - 'Int8Array': Int8Array, - 'Int16Array': Int16Array, - 'Int32Array': Int32Array, - 'Uint8Array': Uint8Array, - 'Uint16Array': Uint16Array, - 'Uint32Array': Uint32Array, - 'Float32Array': Float32Array, - 'Float64Array': Float64Array, - 'NaN': NaN, - 'Infinity': Infinity, - 'Math': Math - }, - asmLibraryArg, - wasmMemory.buffer -) - -} \ No newline at end of file + return asmFunc(asmLibraryArg); +} diff -Nru binaryen-91/test/wasm2js/emscripten.2asm.js.opt binaryen-99/test/wasm2js/emscripten.2asm.js.opt --- binaryen-91/test/wasm2js/emscripten.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/emscripten.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,28 +1,65 @@ -function instantiate(asmLibraryArg, wasmMemory, wasmTable) { - -function asmFunc(global, env, buffer) { - var memory = env.memory; - var FUNCTION_TABLE = wasmTable; - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function instantiate(asmLibraryArg) { + var bufferView; + var base64ReverseLookup = new Uint8Array(123/*'z'+1*/); + for (var i = 25; i >= 0; --i) { + base64ReverseLookup[48+i] = 52+i; // '0-9' + base64ReverseLookup[65+i] = i; // 'A-Z' + base64ReverseLookup[97+i] = 26+i; // 'a-z' + } + base64ReverseLookup[43] = 62; // '+' + base64ReverseLookup[47] = 63; // '/' + /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ + function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { + var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2) - (b64[bLength-2] == '=') - (b64[bLength-1] == '='); + for (; i < bLength; i += 4) { + b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; + b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; + uint8Array[j++] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; + if (j < end) uint8Array[j++] = b1 << 4 | b2 >> 2; + if (j < end) uint8Array[j++] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; + } + return uint8Array; + } +function initActiveSegments(imports) { + base64DecodeToExistingUint8Array(bufferView, 1024, "aGVsbG8sIHdvcmxkIQoAAJwMAAAtKyAgIDBYMHgAKG51bGwp"); + base64DecodeToExistingUint8Array(bufferView, 1072, "EQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAETCQsLAAAJBgsAAAsABhEAAAARERE="); + base64DecodeToExistingUint8Array(bufferView, 1153, "CwAAAAAAAAAAEQAKChEREQAKAAACAAkLAAAACQALAAAL"); + base64DecodeToExistingUint8Array(bufferView, 1211, "DA=="); + base64DecodeToExistingUint8Array(bufferView, 1223, "DAAAAAAMAAAAAAkMAAAAAAAMAAAM"); + base64DecodeToExistingUint8Array(bufferView, 1269, "Dg=="); + base64DecodeToExistingUint8Array(bufferView, 1281, "DQAAAAQNAAAAAAkOAAAAAAAOAAAO"); + base64DecodeToExistingUint8Array(bufferView, 1327, "EA=="); + base64DecodeToExistingUint8Array(bufferView, 1339, "DwAAAAAPAAAAAAkQAAAAAAAQAAAQAAASAAAAEhIS"); + base64DecodeToExistingUint8Array(bufferView, 1394, "EgAAABISEgAAAAAAAAk="); + base64DecodeToExistingUint8Array(bufferView, 1443, "Cw=="); + base64DecodeToExistingUint8Array(bufferView, 1455, "CgAAAAAKAAAAAAkLAAAAAAALAAAL"); + base64DecodeToExistingUint8Array(bufferView, 1501, "DA=="); + base64DecodeToExistingUint8Array(bufferView, 1513, "DAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGLTBYKzBYIDBYLTB4KzB4IDB4AGluZgBJTkYAbmFuAE5BTgAu"); +} +function asmFunc(env) { + var buffer = new ArrayBuffer(16777216); + var FUNCTION_TABLE = env.table; + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var syscall$6 = env.__syscall6; var syscall$54 = env.__syscall54; // EMSCRIPTEN_START_FUNCS @@ -83,34 +120,34 @@ if (HEAPU8[144] < 3) { bar() } - if (bools(314159) >>> 7) { + if (bools(314159) >>> 7 | 0) { bar() } if (bools(314159) >> 8) { bar() } - if (~~getf32()) { + if (~~getf32() >>> 0) { bar() } if (~~getf32()) { bar() } - if (~~getf64()) { + if (~~getf64() >>> 0) { bar() } if (~~getf64()) { bar() } - if ((geti32() + geti32() | 0) + geti32()) { + if ((geti32() + geti32() | 0) + geti32() | 0) { bar() } - if (geti32() + (geti32() + geti32() | 0)) { + if (geti32() + (geti32() + geti32() | 0) | 0) { bar() } - if (geti32() + geti32() + (geti32() + geti32())) { + if (geti32() + geti32() + (geti32() + geti32()) | 0) { bar() } - if (geti32() + geti32() + (geti32() + geti32()) + (geti32() + geti32() + (geti32() + geti32()))) { + if (geti32() + geti32() + (geti32() + geti32()) + (geti32() + geti32() + (geti32() + geti32())) | 0) { bar() } } @@ -155,18 +192,20 @@ bools(HEAP32[0] & 1); bools(HEAPU8[0] & 2); bools($0 ^ 1); - if (!$0) { + if ($0 ^ 1) { bools(2) } if ($0 ^ 2) { bools(2) } - bools(!!$0); + bools(!($0 ^ 1)); abort(); } // EMSCRIPTEN_END_FUNCS ; + bufferView = HEAPU8; + initActiveSegments(env); FUNCTION_TABLE[1] = foo; FUNCTION_TABLE[2] = bar; FUNCTION_TABLE[3] = internal; @@ -185,56 +224,5 @@ }; } -for (var base64ReverseLookup = new Uint8Array(123/*'z'+1*/), i = 25; i >= 0; --i) { - base64ReverseLookup[48+i] = 52+i; // '0-9' - base64ReverseLookup[65+i] = i; // 'A-Z' - base64ReverseLookup[97+i] = 26+i; // 'a-z' - } - base64ReverseLookup[43] = 62; // '+' - base64ReverseLookup[47] = 63; // '/' - /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ - function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { - var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2); - if (b64[bLength-2] == '=') --end; - if (b64[bLength-1] == '=') --end; - for (; i < bLength; i += 4, j += 3) { - b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; - b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; - uint8Array[j] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; - if (j+1 < end) uint8Array[j+1] = b1 << 4 | b2 >> 2; - if (j+2 < end) uint8Array[j+2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; - } - } -var bufferView = new Uint8Array(wasmMemory.buffer); -base64DecodeToExistingUint8Array(bufferView, 1024, "aGVsbG8sIHdvcmxkIQoAAJwMAAAtKyAgIDBYMHgAKG51bGwp"); -base64DecodeToExistingUint8Array(bufferView, 1072, "EQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAETCQsLAAAJBgsAAAsABhEAAAARERE="); -base64DecodeToExistingUint8Array(bufferView, 1153, "CwAAAAAAAAAAEQAKChEREQAKAAACAAkLAAAACQALAAAL"); -base64DecodeToExistingUint8Array(bufferView, 1211, "DA=="); -base64DecodeToExistingUint8Array(bufferView, 1223, "DAAAAAAMAAAAAAkMAAAAAAAMAAAM"); -base64DecodeToExistingUint8Array(bufferView, 1269, "Dg=="); -base64DecodeToExistingUint8Array(bufferView, 1281, "DQAAAAQNAAAAAAkOAAAAAAAOAAAO"); -base64DecodeToExistingUint8Array(bufferView, 1327, "EA=="); -base64DecodeToExistingUint8Array(bufferView, 1339, "DwAAAAAPAAAAAAkQAAAAAAAQAAAQAAASAAAAEhIS"); -base64DecodeToExistingUint8Array(bufferView, 1394, "EgAAABISEgAAAAAAAAk="); -base64DecodeToExistingUint8Array(bufferView, 1443, "Cw=="); -base64DecodeToExistingUint8Array(bufferView, 1455, "CgAAAAAKAAAAAAkLAAAAAAALAAAL"); -base64DecodeToExistingUint8Array(bufferView, 1501, "DA=="); -base64DecodeToExistingUint8Array(bufferView, 1513, "DAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGLTBYKzBYIDBYLTB4KzB4IDB4AGluZgBJTkYAbmFuAE5BTgAu"); -return asmFunc({ - 'Int8Array': Int8Array, - 'Int16Array': Int16Array, - 'Int32Array': Int32Array, - 'Uint8Array': Uint8Array, - 'Uint16Array': Uint16Array, - 'Uint32Array': Uint32Array, - 'Float32Array': Float32Array, - 'Float64Array': Float64Array, - 'NaN': NaN, - 'Infinity': Infinity, - 'Math': Math - }, - asmLibraryArg, - wasmMemory.buffer -) - -} \ No newline at end of file + return asmFunc(asmLibraryArg); +} diff -Nru binaryen-91/test/wasm2js/emscripten-grow-no.2asm.js binaryen-99/test/wasm2js/emscripten-grow-no.2asm.js --- binaryen-91/test/wasm2js/emscripten-grow-no.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/emscripten-grow-no.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,32 +1,58 @@ -function instantiate(asmLibraryArg, wasmMemory, wasmTable) { - -function asmFunc(global, env, buffer) { +function instantiate(asmLibraryArg) { + var bufferView; + var base64ReverseLookup = new Uint8Array(123/*'z'+1*/); + for (var i = 25; i >= 0; --i) { + base64ReverseLookup[48+i] = 52+i; // '0-9' + base64ReverseLookup[65+i] = i; // 'A-Z' + base64ReverseLookup[97+i] = 26+i; // 'a-z' + } + base64ReverseLookup[43] = 62; // '+' + base64ReverseLookup[47] = 63; // '/' + /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ + function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { + var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2) - (b64[bLength-2] == '=') - (b64[bLength-1] == '='); + for (; i < bLength; i += 4) { + b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; + b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; + uint8Array[j++] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; + if (j < end) uint8Array[j++] = b1 << 4 | b2 >> 2; + if (j < end) uint8Array[j++] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; + } + return uint8Array; + } +function initActiveSegments(imports) { + base64DecodeToExistingUint8Array(bufferView, 1600, "YWJj"); +} +function asmFunc(env) { var memory = env.memory; - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; + var buffer = memory.buffer; + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; // EMSCRIPTEN_START_FUNCS ; // EMSCRIPTEN_END_FUNCS ; - var FUNCTION_TABLE = []; + bufferView = HEAPU8; + initActiveSegments(env); function __wasm_memory_size() { return buffer.byteLength / 65536 | 0; } @@ -46,43 +72,5 @@ }; } -for (var base64ReverseLookup = new Uint8Array(123/*'z'+1*/), i = 25; i >= 0; --i) { - base64ReverseLookup[48+i] = 52+i; // '0-9' - base64ReverseLookup[65+i] = i; // 'A-Z' - base64ReverseLookup[97+i] = 26+i; // 'a-z' - } - base64ReverseLookup[43] = 62; // '+' - base64ReverseLookup[47] = 63; // '/' - /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ - function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { - var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2); - if (b64[bLength-2] == '=') --end; - if (b64[bLength-1] == '=') --end; - for (; i < bLength; i += 4, j += 3) { - b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; - b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; - uint8Array[j] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; - if (j+1 < end) uint8Array[j+1] = b1 << 4 | b2 >> 2; - if (j+2 < end) uint8Array[j+2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; - } - } -var bufferView = new Uint8Array(wasmMemory.buffer); -base64DecodeToExistingUint8Array(bufferView, 1600, "YWJj"); -return asmFunc({ - 'Int8Array': Int8Array, - 'Int16Array': Int16Array, - 'Int32Array': Int32Array, - 'Uint8Array': Uint8Array, - 'Uint16Array': Uint16Array, - 'Uint32Array': Uint32Array, - 'Float32Array': Float32Array, - 'Float64Array': Float64Array, - 'NaN': NaN, - 'Infinity': Infinity, - 'Math': Math - }, - asmLibraryArg, - wasmMemory.buffer -) - -} \ No newline at end of file + return asmFunc(asmLibraryArg); +} diff -Nru binaryen-91/test/wasm2js/emscripten-grow-no.2asm.js.opt binaryen-99/test/wasm2js/emscripten-grow-no.2asm.js.opt --- binaryen-91/test/wasm2js/emscripten-grow-no.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/emscripten-grow-no.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,32 +1,58 @@ -function instantiate(asmLibraryArg, wasmMemory, wasmTable) { - -function asmFunc(global, env, buffer) { +function instantiate(asmLibraryArg) { + var bufferView; + var base64ReverseLookup = new Uint8Array(123/*'z'+1*/); + for (var i = 25; i >= 0; --i) { + base64ReverseLookup[48+i] = 52+i; // '0-9' + base64ReverseLookup[65+i] = i; // 'A-Z' + base64ReverseLookup[97+i] = 26+i; // 'a-z' + } + base64ReverseLookup[43] = 62; // '+' + base64ReverseLookup[47] = 63; // '/' + /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ + function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { + var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2) - (b64[bLength-2] == '=') - (b64[bLength-1] == '='); + for (; i < bLength; i += 4) { + b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; + b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; + uint8Array[j++] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; + if (j < end) uint8Array[j++] = b1 << 4 | b2 >> 2; + if (j < end) uint8Array[j++] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; + } + return uint8Array; + } +function initActiveSegments(imports) { + base64DecodeToExistingUint8Array(bufferView, 1600, "YWJj"); +} +function asmFunc(env) { var memory = env.memory; - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; + var buffer = memory.buffer; + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; // EMSCRIPTEN_START_FUNCS ; // EMSCRIPTEN_END_FUNCS ; - var FUNCTION_TABLE = []; + bufferView = HEAPU8; + initActiveSegments(env); function __wasm_memory_size() { return buffer.byteLength / 65536 | 0; } @@ -46,43 +72,5 @@ }; } -for (var base64ReverseLookup = new Uint8Array(123/*'z'+1*/), i = 25; i >= 0; --i) { - base64ReverseLookup[48+i] = 52+i; // '0-9' - base64ReverseLookup[65+i] = i; // 'A-Z' - base64ReverseLookup[97+i] = 26+i; // 'a-z' - } - base64ReverseLookup[43] = 62; // '+' - base64ReverseLookup[47] = 63; // '/' - /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ - function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { - var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2); - if (b64[bLength-2] == '=') --end; - if (b64[bLength-1] == '=') --end; - for (; i < bLength; i += 4, j += 3) { - b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; - b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; - uint8Array[j] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; - if (j+1 < end) uint8Array[j+1] = b1 << 4 | b2 >> 2; - if (j+2 < end) uint8Array[j+2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; - } - } -var bufferView = new Uint8Array(wasmMemory.buffer); -base64DecodeToExistingUint8Array(bufferView, 1600, "YWJj"); -return asmFunc({ - 'Int8Array': Int8Array, - 'Int16Array': Int16Array, - 'Int32Array': Int32Array, - 'Uint8Array': Uint8Array, - 'Uint16Array': Uint16Array, - 'Uint32Array': Uint32Array, - 'Float32Array': Float32Array, - 'Float64Array': Float64Array, - 'NaN': NaN, - 'Infinity': Infinity, - 'Math': Math - }, - asmLibraryArg, - wasmMemory.buffer -) - -} \ No newline at end of file + return asmFunc(asmLibraryArg); +} diff -Nru binaryen-91/test/wasm2js/emscripten-grow-yes.2asm.js binaryen-99/test/wasm2js/emscripten-grow-yes.2asm.js --- binaryen-91/test/wasm2js/emscripten-grow-yes.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/emscripten-grow-yes.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,32 +1,59 @@ -function instantiate(asmLibraryArg, wasmMemory, wasmTable) { - -function asmFunc(global, env, buffer) { +function instantiate(asmLibraryArg) { + var bufferView; + var base64ReverseLookup = new Uint8Array(123/*'z'+1*/); + for (var i = 25; i >= 0; --i) { + base64ReverseLookup[48+i] = 52+i; // '0-9' + base64ReverseLookup[65+i] = i; // 'A-Z' + base64ReverseLookup[97+i] = 26+i; // 'a-z' + } + base64ReverseLookup[43] = 62; // '+' + base64ReverseLookup[47] = 63; // '/' + /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ + function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { + var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2) - (b64[bLength-2] == '=') - (b64[bLength-1] == '='); + for (; i < bLength; i += 4) { + b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; + b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; + uint8Array[j++] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; + if (j < end) uint8Array[j++] = b1 << 4 | b2 >> 2; + if (j < end) uint8Array[j++] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; + } + return uint8Array; + } +function initActiveSegments(imports) { + base64DecodeToExistingUint8Array(bufferView, 1600, "YWJj"); +} +function asmFunc(env) { var memory = env.memory; - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; + var buffer = memory.buffer; + memory.grow = __wasm_memory_grow; + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; // EMSCRIPTEN_START_FUNCS ; // EMSCRIPTEN_END_FUNCS ; - var FUNCTION_TABLE = []; + bufferView = HEAPU8; + initActiveSegments(env); function __wasm_memory_size() { return buffer.byteLength / 65536 | 0; } @@ -37,19 +64,19 @@ var newPages = oldPages + pagesToAdd | 0; if ((oldPages < newPages) && (newPages < 65536)) { var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); - var newHEAP8 = new global.Int8Array(newBuffer); + var newHEAP8 = new Int8Array(newBuffer); newHEAP8.set(HEAP8); - HEAP8 = newHEAP8; - HEAP8 = new global.Int8Array(newBuffer); - HEAP16 = new global.Int16Array(newBuffer); - HEAP32 = new global.Int32Array(newBuffer); - HEAPU8 = new global.Uint8Array(newBuffer); - HEAPU16 = new global.Uint16Array(newBuffer); - HEAPU32 = new global.Uint32Array(newBuffer); - HEAPF32 = new global.Float32Array(newBuffer); - HEAPF64 = new global.Float64Array(newBuffer); + HEAP8 = new Int8Array(newBuffer); + HEAP16 = new Int16Array(newBuffer); + HEAP32 = new Int32Array(newBuffer); + HEAPU8 = new Uint8Array(newBuffer); + HEAPU16 = new Uint16Array(newBuffer); + HEAPU32 = new Uint32Array(newBuffer); + HEAPF32 = new Float32Array(newBuffer); + HEAPF64 = new Float64Array(newBuffer); buffer = newBuffer; - memory.buffer = newBuffer; + memory.buffer = buffer; + bufferView = HEAPU8; } return oldPages; } @@ -69,43 +96,5 @@ }; } -for (var base64ReverseLookup = new Uint8Array(123/*'z'+1*/), i = 25; i >= 0; --i) { - base64ReverseLookup[48+i] = 52+i; // '0-9' - base64ReverseLookup[65+i] = i; // 'A-Z' - base64ReverseLookup[97+i] = 26+i; // 'a-z' - } - base64ReverseLookup[43] = 62; // '+' - base64ReverseLookup[47] = 63; // '/' - /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ - function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { - var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2); - if (b64[bLength-2] == '=') --end; - if (b64[bLength-1] == '=') --end; - for (; i < bLength; i += 4, j += 3) { - b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; - b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; - uint8Array[j] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; - if (j+1 < end) uint8Array[j+1] = b1 << 4 | b2 >> 2; - if (j+2 < end) uint8Array[j+2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; - } - } -var bufferView = new Uint8Array(wasmMemory.buffer); -base64DecodeToExistingUint8Array(bufferView, 1600, "YWJj"); -return asmFunc({ - 'Int8Array': Int8Array, - 'Int16Array': Int16Array, - 'Int32Array': Int32Array, - 'Uint8Array': Uint8Array, - 'Uint16Array': Uint16Array, - 'Uint32Array': Uint32Array, - 'Float32Array': Float32Array, - 'Float64Array': Float64Array, - 'NaN': NaN, - 'Infinity': Infinity, - 'Math': Math - }, - asmLibraryArg, - wasmMemory.buffer -) - -} \ No newline at end of file + return asmFunc(asmLibraryArg); +} diff -Nru binaryen-91/test/wasm2js/emscripten-grow-yes.2asm.js.opt binaryen-99/test/wasm2js/emscripten-grow-yes.2asm.js.opt --- binaryen-91/test/wasm2js/emscripten-grow-yes.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/emscripten-grow-yes.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,32 +1,59 @@ -function instantiate(asmLibraryArg, wasmMemory, wasmTable) { - -function asmFunc(global, env, buffer) { +function instantiate(asmLibraryArg) { + var bufferView; + var base64ReverseLookup = new Uint8Array(123/*'z'+1*/); + for (var i = 25; i >= 0; --i) { + base64ReverseLookup[48+i] = 52+i; // '0-9' + base64ReverseLookup[65+i] = i; // 'A-Z' + base64ReverseLookup[97+i] = 26+i; // 'a-z' + } + base64ReverseLookup[43] = 62; // '+' + base64ReverseLookup[47] = 63; // '/' + /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ + function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { + var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2) - (b64[bLength-2] == '=') - (b64[bLength-1] == '='); + for (; i < bLength; i += 4) { + b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; + b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; + uint8Array[j++] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; + if (j < end) uint8Array[j++] = b1 << 4 | b2 >> 2; + if (j < end) uint8Array[j++] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; + } + return uint8Array; + } +function initActiveSegments(imports) { + base64DecodeToExistingUint8Array(bufferView, 1600, "YWJj"); +} +function asmFunc(env) { var memory = env.memory; - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; + var buffer = memory.buffer; + memory.grow = __wasm_memory_grow; + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; // EMSCRIPTEN_START_FUNCS ; // EMSCRIPTEN_END_FUNCS ; - var FUNCTION_TABLE = []; + bufferView = HEAPU8; + initActiveSegments(env); function __wasm_memory_size() { return buffer.byteLength / 65536 | 0; } @@ -37,19 +64,19 @@ var newPages = oldPages + pagesToAdd | 0; if ((oldPages < newPages) && (newPages < 65536)) { var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); - var newHEAP8 = new global.Int8Array(newBuffer); + var newHEAP8 = new Int8Array(newBuffer); newHEAP8.set(HEAP8); - HEAP8 = newHEAP8; - HEAP8 = new global.Int8Array(newBuffer); - HEAP16 = new global.Int16Array(newBuffer); - HEAP32 = new global.Int32Array(newBuffer); - HEAPU8 = new global.Uint8Array(newBuffer); - HEAPU16 = new global.Uint16Array(newBuffer); - HEAPU32 = new global.Uint32Array(newBuffer); - HEAPF32 = new global.Float32Array(newBuffer); - HEAPF64 = new global.Float64Array(newBuffer); + HEAP8 = new Int8Array(newBuffer); + HEAP16 = new Int16Array(newBuffer); + HEAP32 = new Int32Array(newBuffer); + HEAPU8 = new Uint8Array(newBuffer); + HEAPU16 = new Uint16Array(newBuffer); + HEAPU32 = new Uint32Array(newBuffer); + HEAPF32 = new Float32Array(newBuffer); + HEAPF64 = new Float64Array(newBuffer); buffer = newBuffer; - memory.buffer = newBuffer; + memory.buffer = buffer; + bufferView = HEAPU8; } return oldPages; } @@ -69,43 +96,5 @@ }; } -for (var base64ReverseLookup = new Uint8Array(123/*'z'+1*/), i = 25; i >= 0; --i) { - base64ReverseLookup[48+i] = 52+i; // '0-9' - base64ReverseLookup[65+i] = i; // 'A-Z' - base64ReverseLookup[97+i] = 26+i; // 'a-z' - } - base64ReverseLookup[43] = 62; // '+' - base64ReverseLookup[47] = 63; // '/' - /** @noinline Inlining this function would mean expanding the base64 string 4x times in the source code, which Closure seems to be happy to do. */ - function base64DecodeToExistingUint8Array(uint8Array, offset, b64) { - var b1, b2, i = 0, j = offset, bLength = b64.length, end = offset + (bLength*3>>2); - if (b64[bLength-2] == '=') --end; - if (b64[bLength-1] == '=') --end; - for (; i < bLength; i += 4, j += 3) { - b1 = base64ReverseLookup[b64.charCodeAt(i+1)]; - b2 = base64ReverseLookup[b64.charCodeAt(i+2)]; - uint8Array[j] = base64ReverseLookup[b64.charCodeAt(i)] << 2 | b1 >> 4; - if (j+1 < end) uint8Array[j+1] = b1 << 4 | b2 >> 2; - if (j+2 < end) uint8Array[j+2] = b2 << 6 | base64ReverseLookup[b64.charCodeAt(i+3)]; - } - } -var bufferView = new Uint8Array(wasmMemory.buffer); -base64DecodeToExistingUint8Array(bufferView, 1600, "YWJj"); -return asmFunc({ - 'Int8Array': Int8Array, - 'Int16Array': Int16Array, - 'Int32Array': Int32Array, - 'Uint8Array': Uint8Array, - 'Uint16Array': Uint16Array, - 'Uint32Array': Uint32Array, - 'Float32Array': Float32Array, - 'Float64Array': Float64Array, - 'NaN': NaN, - 'Infinity': Infinity, - 'Math': Math - }, - asmLibraryArg, - wasmMemory.buffer -) - -} \ No newline at end of file + return asmFunc(asmLibraryArg); +} diff -Nru binaryen-91/test/wasm2js/emscripten.wast binaryen-99/test/wasm2js/emscripten.wast --- binaryen-91/test/wasm2js/emscripten.wast 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/emscripten.wast 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ (module (type $0 (func)) - (import "env" "memory" (memory $8 256 256)) + (memory $8 256 256) (data (i32.const 1024) "hello, world!\n\00\00\9c\0c\00\00-+ 0X0x\00(null)\00\00\00\00\00\00\00\00\00\00\00\00\11\00\n\00\11\11\11\00\00\00\00\05\00\00\00\00\00\00\t\00\00\00\00\0b\00\00\00\00\00\00\00\00\11\00\0f\n\11\11\11\03\n\07\00\01\13\t\0b\0b\00\00\t\06\0b\00\00\0b\00\06\11\00\00\00\11\11\11\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\00\00\00\00\00\11\00\n\n\11\11\11\00\n\00\00\02\00\t\0b\00\00\00\t\00\0b\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\0c\00\00\00\00\t\0c\00\00\00\00\00\0c\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00\0d\00\00\00\04\0d\00\00\00\00\t\0e\00\00\00\00\00\0e\00\00\0e\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\00\0f\00\00\00\00\t\10\00\00\00\00\00\10\00\00\10\00\00\12\00\00\00\12\12\12\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\12\12\12\00\00\00\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\00\n\00\00\00\00\t\0b\00\00\00\00\00\0b\00\00\0b\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\00\0c\00\00\00\00\t\0c\00\00\00\00\00\0c\00\00\0c\00\000123456789ABCDEF-0X+0X 0X-0x+0x 0x\00inf\00INF\00nan\00NAN\00.\00") (data (i32.const 1600) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") (import "env" "table" (table $timport$9 7 funcref)) diff -Nru binaryen-91/test/wasm2js/endianness.2asm.js binaryen-99/test/wasm2js/endianness.2asm.js --- binaryen-91/test/wasm2js/endianness.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/endianness.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,8 @@ import { setTempRet0 } from 'env'; + var bufferView; - var scratchBuffer = new ArrayBuffer(8); + var scratchBuffer = new ArrayBuffer(16); var i32ScratchView = new Int32Array(scratchBuffer); var f32ScratchView = new Float32Array(scratchBuffer); var f64ScratchView = new Float64Array(scratchBuffer); @@ -23,34 +24,36 @@ } function wasm2js_scratch_store_f32(value) { - f32ScratchView[0] = value; + f32ScratchView[2] = value; } function wasm2js_scratch_load_f32() { - return f32ScratchView[0]; + return f32ScratchView[2]; } -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var buffer = new ArrayBuffer(65536); + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function i16_store_little(address, value) { @@ -209,7 +212,7 @@ function $14(value) { value = Math_fround(value); - i32_store_little(0 | 0, (wasm2js_scratch_store_f32(value), wasm2js_scratch_load_i32(0)) | 0); + i32_store_little(0 | 0, (wasm2js_scratch_store_f32(value), wasm2js_scratch_load_i32(2)) | 0); return Math_fround(Math_fround(HEAPF32[0 >> 2])); } @@ -275,7 +278,7 @@ function $21(value) { value = Math_fround(value); HEAPF32[0 >> 2] = value; - return Math_fround((wasm2js_scratch_store_i32(0, i32_load_little(0 | 0) | 0), wasm2js_scratch_load_f32())); + return Math_fround((wasm2js_scratch_store_i32(2, i32_load_little(0 | 0) | 0), wasm2js_scratch_load_f32())); } function $22(value) { @@ -649,7 +652,7 @@ return $2 | 0; } - var FUNCTION_TABLE = []; + bufferView = HEAPU8; function __wasm_memory_size() { return buffer.byteLength / 65536 | 0; } @@ -660,18 +663,18 @@ var newPages = oldPages + pagesToAdd | 0; if ((oldPages < newPages) && (newPages < 65536)) { var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); - var newHEAP8 = new global.Int8Array(newBuffer); + var newHEAP8 = new Int8Array(newBuffer); newHEAP8.set(HEAP8); - HEAP8 = newHEAP8; - HEAP8 = new global.Int8Array(newBuffer); - HEAP16 = new global.Int16Array(newBuffer); - HEAP32 = new global.Int32Array(newBuffer); - HEAPU8 = new global.Uint8Array(newBuffer); - HEAPU16 = new global.Uint16Array(newBuffer); - HEAPU32 = new global.Uint32Array(newBuffer); - HEAPF32 = new global.Float32Array(newBuffer); - HEAPF64 = new global.Float64Array(newBuffer); + HEAP8 = new Int8Array(newBuffer); + HEAP16 = new Int16Array(newBuffer); + HEAP32 = new Int32Array(newBuffer); + HEAPU8 = new Uint8Array(newBuffer); + HEAPU16 = new Uint16Array(newBuffer); + HEAPU32 = new Uint32Array(newBuffer); + HEAPF32 = new Float32Array(newBuffer); + HEAPF64 = new Float64Array(newBuffer); buffer = newBuffer; + bufferView = HEAPU8; } return oldPages; } @@ -697,8 +700,9 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var i32_load16_s = retasmFunc.i32_load16_s; export var i32_load16_u = retasmFunc.i32_load16_u; export var i32_load = retasmFunc.i32_load; diff -Nru binaryen-91/test/wasm2js/excess_fallthrough.2asm.js binaryen-99/test/wasm2js/excess_fallthrough.2asm.js --- binaryen-91/test/wasm2js/excess_fallthrough.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/excess_fallthrough.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,53 +1,47 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function bar() { } function foo($0) { $0 = $0 | 0; - label$5 : { - bar(); - block : { - switch (123 | 0) { - case 0: - bar(); - break; - default: - break label$5; - }; + label$4 : while (1) { + label$5 : { + bar(); + block : { + switch (123 | 0) { + case 0: + bar(); + break; + default: + break label$5; + }; + } + return; } - return; - } - abort(); + abort(); + }; } - var FUNCTION_TABLE = []; return { "foo": foo }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var foo = retasmFunc.foo; diff -Nru binaryen-91/test/wasm2js/excess_fallthrough.2asm.js.opt binaryen-99/test/wasm2js/excess_fallthrough.2asm.js.opt --- binaryen-91/test/wasm2js/excess_fallthrough.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/excess_fallthrough.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,36 +1,28 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function foo($0) { $0 = $0 | 0; abort(); } - var FUNCTION_TABLE = []; return { "foo": foo }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var foo = retasmFunc.foo; diff -Nru binaryen-91/test/wasm2js/f32.2asm.js binaryen-99/test/wasm2js/f32.2asm.js --- binaryen-91/test/wasm2js/f32.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/f32.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $0(x, y) { x = Math_fround(x); y = Math_fround(y); @@ -73,7 +66,7 @@ function $9(x) { x = Math_fround(x); - return Math_fround(Math_fround(__wasm_trunc_f32(Math_fround(x)))); + return Math_fround(Math_fround(Math_trunc(x))); } function $10(x) { @@ -99,12 +92,6 @@ return Math_fround(var$1); } - function __wasm_trunc_f32(var$0) { - var$0 = Math_fround(var$0); - return Math_fround(var$0 < Math_fround(0.0) ? Math_fround(Math_ceil(var$0)) : Math_fround(Math_floor(var$0))); - } - - var FUNCTION_TABLE = []; return { "add": $0, "sub": $1, @@ -120,8 +107,8 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var add = retasmFunc.add; export var sub = retasmFunc.sub; export var mul = retasmFunc.mul; diff -Nru binaryen-91/test/wasm2js/f32_cmp.2asm.js binaryen-99/test/wasm2js/f32_cmp.2asm.js --- binaryen-91/test/wasm2js/f32_cmp.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/f32_cmp.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $0(x, y) { x = Math_fround(x); y = Math_fround(y); @@ -56,7 +49,6 @@ return x >= y | 0; } - var FUNCTION_TABLE = []; return { "eq": $0, "ne": $1, @@ -67,8 +59,8 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var eq = retasmFunc.eq; export var ne = retasmFunc.ne; export var lt = retasmFunc.lt; diff -Nru binaryen-91/test/wasm2js/f64.2asm.js binaryen-99/test/wasm2js/f64.2asm.js --- binaryen-91/test/wasm2js/f64.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/f64.2asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,135 +0,0 @@ - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; - var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - function $0(x, y) { - x = +x; - y = +y; - return +(x + y); - } - - function $1(x, y) { - x = +x; - y = +y; - return +(x - y); - } - - function $2(x, y) { - x = +x; - y = +y; - return +(x * y); - } - - function $3(x, y) { - x = +x; - y = +y; - return +(x / y); - } - - function $4(x) { - x = +x; - return +Math_sqrt(x); - } - - function $5(x, y) { - x = +x; - y = +y; - return +Math_min(x, y); - } - - function $6(x, y) { - x = +x; - y = +y; - return +Math_max(x, y); - } - - function $7(x) { - x = +x; - return +Math_ceil(x); - } - - function $8(x) { - x = +x; - return +Math_floor(x); - } - - function $9(x) { - x = +x; - return +(+__wasm_trunc_f64(+x)); - } - - function $10(x) { - x = +x; - return +(+__wasm_nearest_f64(+x)); - } - - function __wasm_nearest_f64(var$0) { - var$0 = +var$0; - var var$1 = 0.0, var$2 = 0.0; - var$1 = Math_floor(var$0); - var$2 = var$0 - var$1; - if (!(var$2 < .5)) { - block : { - var$0 = Math_ceil(var$0); - if (var$2 > .5) { - return +var$0 - } - var$2 = var$1 * .5; - var$1 = var$2 - Math_floor(var$2) == 0.0 ? var$1 : var$0; - } - } - return +var$1; - } - - function __wasm_trunc_f64(var$0) { - var$0 = +var$0; - return +(var$0 < 0.0 ? Math_ceil(var$0) : Math_floor(var$0)); - } - - var FUNCTION_TABLE = []; - return { - "add": $0, - "sub": $1, - "mul": $2, - "div": $3, - "sqrt": $4, - "min": $5, - "max": $6, - "ceil": $7, - "floor": $8, - "trunc": $9, - "nearest": $10 - }; -} - -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); -export var add = retasmFunc.add; -export var sub = retasmFunc.sub; -export var mul = retasmFunc.mul; -export var div = retasmFunc.div; -export var sqrt = retasmFunc.sqrt; -export var min = retasmFunc.min; -export var max = retasmFunc.max; -export var ceil = retasmFunc.ceil; -export var floor = retasmFunc.floor; -export var trunc = retasmFunc.trunc; -export var nearest = retasmFunc.nearest; diff -Nru binaryen-91/test/wasm2js/f64_cmp.2asm.js binaryen-99/test/wasm2js/f64_cmp.2asm.js --- binaryen-91/test/wasm2js/f64_cmp.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/f64_cmp.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $0(x, y) { x = +x; y = +y; @@ -56,7 +49,6 @@ return x >= y | 0; } - var FUNCTION_TABLE = []; return { "eq": $0, "ne": $1, @@ -67,8 +59,8 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var eq = retasmFunc.eq; export var ne = retasmFunc.ne; export var lt = retasmFunc.lt; diff -Nru binaryen-91/test/wasm2js/fac.2asm.js binaryen-99/test/wasm2js/fac.2asm.js --- binaryen-91/test/wasm2js/fac.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/fac.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,26 +1,19 @@ import { setTempRet0 } from 'env'; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function $0($0_1, $0$hi) { @@ -572,7 +565,6 @@ return i64toi32_i32$1 | 0; } - var FUNCTION_TABLE = []; return { "fac_rec": legalstub$0, "fac_rec_named": legalstub$fac_rec_named, @@ -582,8 +574,9 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var fac_rec = retasmFunc.fac_rec; export var fac_rec_named = retasmFunc.fac_rec_named; export var fac_iter = retasmFunc.fac_iter; diff -Nru binaryen-91/test/wasm2js/float_literals-modified.2asm.js binaryen-99/test/wasm2js/float_literals-modified.2asm.js --- binaryen-91/test/wasm2js/float_literals-modified.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/float_literals-modified.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ import { setTempRet0 } from 'env'; - var scratchBuffer = new ArrayBuffer(8); + var scratchBuffer = new ArrayBuffer(16); var i32ScratchView = new Int32Array(scratchBuffer); var f32ScratchView = new Float32Array(scratchBuffer); var f64ScratchView = new Float64Array(scratchBuffer); @@ -15,150 +15,143 @@ } function wasm2js_scratch_store_f32(value) { - f32ScratchView[0] = value; + f32ScratchView[2] = value; } -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function $0() { - return (wasm2js_scratch_store_f32(Math_fround(nan)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(nan)), wasm2js_scratch_load_i32(2)) | 0; } function $1() { - return (wasm2js_scratch_store_f32(Math_fround(nan)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(nan)), wasm2js_scratch_load_i32(2)) | 0; } function $2() { - return (wasm2js_scratch_store_f32(Math_fround(-nan)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(-nan)), wasm2js_scratch_load_i32(2)) | 0; } function $3() { - return (wasm2js_scratch_store_f32(Math_fround(nan)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(nan)), wasm2js_scratch_load_i32(2)) | 0; } function $4() { - return (wasm2js_scratch_store_f32(Math_fround(nan)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(nan)), wasm2js_scratch_load_i32(2)) | 0; } function $5() { - return (wasm2js_scratch_store_f32(Math_fround(-nan)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(-nan)), wasm2js_scratch_load_i32(2)) | 0; } function $6() { - return (wasm2js_scratch_store_f32(Math_fround(nan)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(nan)), wasm2js_scratch_load_i32(2)) | 0; } function $7() { - return (wasm2js_scratch_store_f32(Math_fround(nan)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(nan)), wasm2js_scratch_load_i32(2)) | 0; } function $8() { - return (wasm2js_scratch_store_f32(Math_fround(-nan)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(-nan)), wasm2js_scratch_load_i32(2)) | 0; } function $9() { - return (wasm2js_scratch_store_f32(Math_fround(infinity)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(infinity)), wasm2js_scratch_load_i32(2)) | 0; } function $10() { - return (wasm2js_scratch_store_f32(Math_fround(infinity)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(infinity)), wasm2js_scratch_load_i32(2)) | 0; } function $11() { - return (wasm2js_scratch_store_f32(Math_fround(-infinity)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(-infinity)), wasm2js_scratch_load_i32(2)) | 0; } function $12() { - return (wasm2js_scratch_store_f32(Math_fround(0.0)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(0.0)), wasm2js_scratch_load_i32(2)) | 0; } function $13() { - return (wasm2js_scratch_store_f32(Math_fround(0.0)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(0.0)), wasm2js_scratch_load_i32(2)) | 0; } function $14() { - return (wasm2js_scratch_store_f32(Math_fround(-0.0)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(-0.0)), wasm2js_scratch_load_i32(2)) | 0; } function $15() { - return (wasm2js_scratch_store_f32(Math_fround(6.2831854820251465)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(6.2831854820251465)), wasm2js_scratch_load_i32(2)) | 0; } function $16() { - return (wasm2js_scratch_store_f32(Math_fround(1.401298464324817e-45)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(1.401298464324817e-45)), wasm2js_scratch_load_i32(2)) | 0; } function $17() { - return (wasm2js_scratch_store_f32(Math_fround(1.1754943508222875e-38)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(1.1754943508222875e-38)), wasm2js_scratch_load_i32(2)) | 0; } function $18() { - return (wasm2js_scratch_store_f32(Math_fround(3402823466385288598117041.0e14)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(3402823466385288598117041.0e14)), wasm2js_scratch_load_i32(2)) | 0; } function $19() { - return (wasm2js_scratch_store_f32(Math_fround(1.1754942106924411e-38)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(1.1754942106924411e-38)), wasm2js_scratch_load_i32(2)) | 0; } function $20() { - return (wasm2js_scratch_store_f32(Math_fround(1024.0)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(1024.0)), wasm2js_scratch_load_i32(2)) | 0; } function $21() { - return (wasm2js_scratch_store_f32(Math_fround(0.0)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(0.0)), wasm2js_scratch_load_i32(2)) | 0; } function $22() { - return (wasm2js_scratch_store_f32(Math_fround(0.0)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(0.0)), wasm2js_scratch_load_i32(2)) | 0; } function $23() { - return (wasm2js_scratch_store_f32(Math_fround(-0.0)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(-0.0)), wasm2js_scratch_load_i32(2)) | 0; } function $24() { - return (wasm2js_scratch_store_f32(Math_fround(6.2831854820251465)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(6.2831854820251465)), wasm2js_scratch_load_i32(2)) | 0; } function $25() { - return (wasm2js_scratch_store_f32(Math_fround(1.401298464324817e-45)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(1.401298464324817e-45)), wasm2js_scratch_load_i32(2)) | 0; } function $26() { - return (wasm2js_scratch_store_f32(Math_fround(1.1754943508222875e-38)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(1.1754943508222875e-38)), wasm2js_scratch_load_i32(2)) | 0; } function $27() { - return (wasm2js_scratch_store_f32(Math_fround(1.1754942106924411e-38)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(1.1754942106924411e-38)), wasm2js_scratch_load_i32(2)) | 0; } function $28() { - return (wasm2js_scratch_store_f32(Math_fround(3402823466385288598117041.0e14)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(3402823466385288598117041.0e14)), wasm2js_scratch_load_i32(2)) | 0; } function $29() { - return (wasm2js_scratch_store_f32(Math_fround(1.0e10)), wasm2js_scratch_load_i32(0)) | 0; + return (wasm2js_scratch_store_f32(Math_fround(1.0e10)), wasm2js_scratch_load_i32(2)) | 0; } function $30() { @@ -1091,7 +1084,6 @@ return $0_1 | 0; } - var FUNCTION_TABLE = []; return { "f32_nan": $0, "f32_positive_nan": $1, @@ -1156,8 +1148,9 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var f32_nan = retasmFunc.f32_nan; export var f32_positive_nan = retasmFunc.f32_positive_nan; export var f32_negative_nan = retasmFunc.f32_negative_nan; diff -Nru binaryen-91/test/wasm2js/float_literals-modified.2asm.js.opt binaryen-99/test/wasm2js/float_literals-modified.2asm.js.opt --- binaryen-91/test/wasm2js/float_literals-modified.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/float_literals-modified.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ import { setTempRet0 } from 'env'; - var scratchBuffer = new ArrayBuffer(8); + var scratchBuffer = new ArrayBuffer(16); var i32ScratchView = new Int32Array(scratchBuffer); var f32ScratchView = new Float32Array(scratchBuffer); var f64ScratchView = new Float64Array(scratchBuffer); @@ -14,27 +14,20 @@ f64ScratchView[0] = value; } -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function $0() { @@ -307,7 +300,6 @@ return $0_1; } - var FUNCTION_TABLE = []; return { "f32_nan": $0, "f32_positive_nan": $0, @@ -372,8 +364,9 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var f32_nan = retasmFunc.f32_nan; export var f32_positive_nan = retasmFunc.f32_positive_nan; export var f32_negative_nan = retasmFunc.f32_negative_nan; diff -Nru binaryen-91/test/wasm2js/float_misc.2asm.js binaryen-99/test/wasm2js/float_misc.2asm.js --- binaryen-91/test/wasm2js/float_misc.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/float_misc.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ - var scratchBuffer = new ArrayBuffer(8); + var scratchBuffer = new ArrayBuffer(16); var i32ScratchView = new Int32Array(scratchBuffer); var f32ScratchView = new Float32Array(scratchBuffer); var f64ScratchView = new Float64Array(scratchBuffer); @@ -22,34 +22,27 @@ } function wasm2js_scratch_load_f32() { - return f32ScratchView[0]; + return f32ScratchView[2]; } function wasm2js_scratch_store_f32(value) { - f32ScratchView[0] = value; + f32ScratchView[2] = value; } -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $0(x, y) { x = Math_fround(x); y = Math_fround(y); @@ -92,7 +85,7 @@ function $7(x, y) { x = Math_fround(x); y = Math_fround(y); - return Math_fround((wasm2js_scratch_store_i32(0, (wasm2js_scratch_store_f32(x), wasm2js_scratch_load_i32(0)) & 2147483647 | 0 | ((wasm2js_scratch_store_f32(y), wasm2js_scratch_load_i32(0)) & -2147483648 | 0) | 0), wasm2js_scratch_load_f32())); + return Math_fround((wasm2js_scratch_store_i32(2, (wasm2js_scratch_store_f32(x), wasm2js_scratch_load_i32(2)) & 2147483647 | 0 | ((wasm2js_scratch_store_f32(y), wasm2js_scratch_load_i32(2)) & -2147483648 | 0) | 0), wasm2js_scratch_load_f32())); } function $8(x) { @@ -107,7 +100,7 @@ function $10(x) { x = Math_fround(x); - return Math_fround(Math_fround(__wasm_trunc_f32(Math_fround(x)))); + return Math_fround(Math_fround(Math_trunc(x))); } function $11(x) { @@ -208,7 +201,7 @@ function $24(x) { x = +x; - return +(+__wasm_trunc_f64(+x)); + return +Math_trunc(x); } function $25(x) { @@ -264,17 +257,6 @@ return +var$1; } - function __wasm_trunc_f32(var$0) { - var$0 = Math_fround(var$0); - return Math_fround(var$0 < Math_fround(0.0) ? Math_fround(Math_ceil(var$0)) : Math_fround(Math_floor(var$0))); - } - - function __wasm_trunc_f64(var$0) { - var$0 = +var$0; - return +(var$0 < 0.0 ? Math_ceil(var$0) : Math_floor(var$0)); - } - - var FUNCTION_TABLE = []; return { "f32_add": $0, "f32_sub": $1, @@ -307,8 +289,8 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var f32_add = retasmFunc.f32_add; export var f32_sub = retasmFunc.f32_sub; export var f32_mul = retasmFunc.f32_mul; diff -Nru binaryen-91/test/wasm2js/float-ops.2asm.js binaryen-99/test/wasm2js/float-ops.2asm.js --- binaryen-91/test/wasm2js/float-ops.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/float-ops.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $1($0, $1_1) { $0 = Math_fround($0); $1_1 = Math_fround($1_1); @@ -460,7 +453,6 @@ return +(+$46(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0)); } - var FUNCTION_TABLE = []; return { "f32_add": $1, "f32_sub": $2, @@ -513,8 +505,8 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var f32_add = retasmFunc.f32_add; export var f32_sub = retasmFunc.f32_sub; export var f32_mul = retasmFunc.f32_mul; diff -Nru binaryen-91/test/wasm2js/float-ops.2asm.js.opt binaryen-99/test/wasm2js/float-ops.2asm.js.opt --- binaryen-91/test/wasm2js/float-ops.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/float-ops.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $1($0, $1_1) { $0 = Math_fround($0); $1_1 = Math_fround($1_1); @@ -246,31 +239,30 @@ function $47($0) { $0 = Math_fround($0); - return !(~~$0 >>> 0 | (Math_fround(Math_abs($0)) >= Math_fround(1.0) ? ($0 > Math_fround(0.0) ? ~~Math_fround(Math_min(Math_fround(Math_floor(Math_fround($0 / Math_fround(4294967296.0)))), Math_fround(4294967296.0))) >>> 0 : ~~Math_fround(Math_ceil(Math_fround(Math_fround($0 - Math_fround(~~$0 >>> 0 >>> 0)) / Math_fround(4294967296.0)))) >>> 0) : 0)) | 0; + return !(~~$0 >>> 0 | (Math_fround(Math_abs($0)) >= Math_fround(1.0) ? ($0 > Math_fround(0.0) ? ~~Math_fround(Math_min(Math_fround(Math_floor(Math_fround($0 * Math_fround(2.3283064365386963e-10)))), Math_fround(4294967296.0))) >>> 0 : ~~Math_fround(Math_ceil(Math_fround(Math_fround($0 - Math_fround(~~$0 >>> 0 >>> 0)) * Math_fround(2.3283064365386963e-10)))) >>> 0) : 0)) | 0; } function $48($0) { $0 = +$0; - return !(~~$0 >>> 0 | (Math_abs($0) >= 1.0 ? ($0 > 0.0 ? ~~Math_min(Math_floor($0 / 4294967296.0), 4294967295.0) >>> 0 : ~~Math_ceil(($0 - +(~~$0 >>> 0 >>> 0)) / 4294967296.0) >>> 0) : 0)) | 0; + return !(~~$0 >>> 0 | (Math_abs($0) >= 1.0 ? ($0 > 0.0 ? ~~Math_min(Math_floor($0 * 2.3283064365386963e-10), 4294967295.0) >>> 0 : ~~Math_ceil(($0 - +(~~$0 >>> 0 >>> 0)) * 2.3283064365386963e-10) >>> 0) : 0)) | 0; } function legalstub$43($0, $1_1) { - return Math_fround(+($0 >>> 0) + 4294967296.0 * +($1_1 | 0)); + return Math_fround(+($0 >>> 0) + +($1_1 | 0) * 4294967296.0); } function legalstub$44($0, $1_1) { - return +($0 >>> 0) + 4294967296.0 * +($1_1 | 0); + return +($0 >>> 0) + +($1_1 | 0) * 4294967296.0; } function legalstub$45($0, $1_1) { - return Math_fround(+($0 >>> 0) + 4294967296.0 * +($1_1 >>> 0)); + return Math_fround(+($0 >>> 0) + +($1_1 >>> 0) * 4294967296.0); } function legalstub$46($0, $1_1) { - return +($0 >>> 0) + 4294967296.0 * +($1_1 >>> 0); + return +($0 >>> 0) + +($1_1 >>> 0) * 4294967296.0; } - var FUNCTION_TABLE = []; return { "f32_add": $1, "f32_sub": $2, @@ -323,8 +315,8 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var f32_add = retasmFunc.f32_add; export var f32_sub = retasmFunc.f32_sub; export var f32_mul = retasmFunc.f32_mul; diff -Nru binaryen-91/test/wasm2js/forward.2asm.js binaryen-99/test/wasm2js/forward.2asm.js --- binaryen-91/test/wasm2js/forward.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/forward.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function even(n) { n = n | 0; var $10 = 0; @@ -42,14 +35,13 @@ return $10 | 0; } - var FUNCTION_TABLE = []; return { "even": even, "odd": odd }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var even = retasmFunc.even; export var odd = retasmFunc.odd; diff -Nru binaryen-91/test/wasm2js/func.2asm.js binaryen-99/test/wasm2js/func.2asm.js --- binaryen-91/test/wasm2js/func.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/func.2asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,850 +0,0 @@ -import { setTempRet0 } from 'env'; - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; - var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var setTempRet0 = env.setTempRet0; - var i64toi32_i32$HIGH_BITS = 0; - function dummy() { - - } - - function $2() { - - } - - function h() { - - } - - function $23() { - var $0 = 0; - return $0 | 0; - } - - function $24() { - var i64toi32_i32$0 = 0, $0$hi = 0, $0 = 0; - i64toi32_i32$0 = $0$hi; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return $0 | 0; - } - - function $25() { - var $0 = Math_fround(0); - return Math_fround($0); - } - - function $26() { - var $0 = 0.0; - return +$0; - } - - function $27() { - var $1 = 0; - return $1 | 0; - } - - function $28() { - var i64toi32_i32$0 = 0, $1$hi = 0, $1 = 0; - i64toi32_i32$0 = $1$hi; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return $1 | 0; - } - - function $29() { - var $1 = Math_fround(0); - return Math_fround($1); - } - - function $30() { - var $1 = 0.0; - return +$1; - } - - function $31() { - var i64toi32_i32$0 = 0, $4 = 0.0, $0 = Math_fround(0), x = 0, $2$hi = 0, $2_1 = 0, $3 = 0, $5 = 0; - i64toi32_i32$0 = $2$hi; - return +$4; - } - - function $32($0, $1) { - $0 = $0 | 0; - $1 = $1 | 0; - return $0 | 0; - } - - function $33($0, $0$hi, $1, $1$hi) { - $0 = $0 | 0; - $0$hi = $0$hi | 0; - $1 = $1 | 0; - $1$hi = $1$hi | 0; - var i64toi32_i32$0 = 0; - i64toi32_i32$0 = $0$hi; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return $0 | 0; - } - - function $34($0, $1) { - $0 = Math_fround($0); - $1 = Math_fround($1); - return Math_fround($0); - } - - function $35($0, $1) { - $0 = +$0; - $1 = +$1; - return +$0; - } - - function $36($0, $1) { - $0 = $0 | 0; - $1 = $1 | 0; - return $1 | 0; - } - - function $37($0, $0$hi, $1, $1$hi) { - $0 = $0 | 0; - $0$hi = $0$hi | 0; - $1 = $1 | 0; - $1$hi = $1$hi | 0; - var i64toi32_i32$0 = 0; - i64toi32_i32$0 = $1$hi; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return $1 | 0; - } - - function $38($0, $1) { - $0 = Math_fround($0); - $1 = Math_fround($1); - return Math_fround($1); - } - - function $39($0, $1) { - $0 = +$0; - $1 = +$1; - return +$1; - } - - function $40($0, $1, x, x$hi, $3, $4, $5) { - $0 = Math_fround($0); - $1 = $1 | 0; - x = x | 0; - x$hi = x$hi | 0; - $3 = $3 | 0; - $4 = +$4; - $5 = $5 | 0; - var i64toi32_i32$0 = 0; - i64toi32_i32$0 = x$hi; - return +$4; - } - - function $41() { - - } - - function $42() { - dummy(); - } - - function $43() { - return 77 | 0; - } - - function $44() { - i64toi32_i32$HIGH_BITS = 0; - return 7777 | 0; - } - - function $45() { - return Math_fround(Math_fround(77.69999694824219)); - } - - function $46() { - return +(77.77); - } - - function $47() { - block : { - dummy(); - dummy(); - } - } - - function $48() { - dummy(); - return 77 | 0; - } - - function $49() { - return; - } - - function $50() { - return 78 | 0; - } - - function $51() { - i64toi32_i32$HIGH_BITS = 0; - return 7878 | 0; - } - - function $52() { - return Math_fround(Math_fround(78.69999694824219)); - } - - function $53() { - return +(78.78); - } - - function $54() { - dummy(); - return 77 | 0; - } - - function $55() { - - } - - function $56() { - var $0 = 0; - fake_return_waka123 : { - $0 = 79; - break fake_return_waka123; - } - return $0 | 0; - } - - function $57() { - var i64toi32_i32$0 = 0, $0 = 0, $0$hi = 0; - fake_return_waka123 : { - i64toi32_i32$0 = 0; - $0 = 7979; - $0$hi = i64toi32_i32$0; - break fake_return_waka123; - } - i64toi32_i32$0 = $0$hi; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return $0 | 0; - } - - function $58() { - var $0 = Math_fround(0); - fake_return_waka123 : { - $0 = Math_fround(79.9000015258789); - break fake_return_waka123; - } - return Math_fround($0); - } - - function $59() { - var $0 = 0.0; - fake_return_waka123 : { - $0 = 79.79; - break fake_return_waka123; - } - return +$0; - } - - function $60() { - var $2_1 = 0; - fake_return_waka123 : { - dummy(); - $2_1 = 77; - break fake_return_waka123; - } - return $2_1 | 0; - } - - function $61($0) { - $0 = $0 | 0; - } - - function $62($0) { - $0 = $0 | 0; - var $2_1 = 0; - fake_return_waka123 : { - $2_1 = 50; - if ($0) { - break fake_return_waka123 - } - $2_1 = 51; - } - return $2_1 | 0; - } - - function $63($0) { - $0 = $0 | 0; - } - - function $64($0) { - $0 = $0 | 0; - var $3 = 0; - fake_return_waka123 : { - $3 = 50; - switch ($0 | 0) { - default: - break fake_return_waka123; - }; - } - return $3 | 0; - } - - function $65($0) { - $0 = $0 | 0; - } - - function $66($0) { - $0 = $0 | 0; - var $2_1 = 0, $3 = 0, $4 = 0; - fake_return_waka123 : { - block : { - $2_1 = 50; - $3 = $2_1; - $4 = $2_1; - switch ($0 | 0) { - case 1: - break fake_return_waka123; - default: - break block; - }; - } - $4 = $3 + 2 | 0; - } - return $4 | 0; - } - - function $67() { - var $0 = 0; - return $0 | 0; - } - - function $68() { - var i64toi32_i32$0 = 0, $0$hi = 0, $0 = 0; - i64toi32_i32$0 = $0$hi; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return $0 | 0; - } - - function $69() { - var $0 = Math_fround(0); - return Math_fround($0); - } - - function $70() { - var $0 = 0.0; - return +$0; - } - - function empty_sig_1() { - - } - - function complex_sig_1($0, $1, $1$hi, $2_1, $3, $3$hi, $4, $5, $5$hi, $6, $7) { - $0 = +$0; - $1 = $1 | 0; - $1$hi = $1$hi | 0; - $2_1 = +$2_1; - $3 = $3 | 0; - $3$hi = $3$hi | 0; - $4 = +$4; - $5 = $5 | 0; - $5$hi = $5$hi | 0; - $6 = Math_fround($6); - $7 = $7 | 0; - } - - function empty_sig_2() { - - } - - function complex_sig_3($0, $1, $1$hi, $2_1, $3, $3$hi, $4, $5, $5$hi, $6, $7) { - $0 = +$0; - $1 = $1 | 0; - $1$hi = $1$hi | 0; - $2_1 = +$2_1; - $3 = $3 | 0; - $3$hi = $3$hi | 0; - $4 = +$4; - $5 = $5 | 0; - $5$hi = $5$hi | 0; - $6 = Math_fround($6); - $7 = $7 | 0; - } - - function $76() { - FUNCTION_TABLE[1](); - FUNCTION_TABLE[4](); - } - - function $77() { - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = 0; - i64toi32_i32$1 = 0; - i64toi32_i32$2 = 0; - FUNCTION_TABLE[0](0.0, 0, i64toi32_i32$0, 0.0, 0, i64toi32_i32$1, 0.0, 0, i64toi32_i32$2, Math_fround(0.0), 0); - i64toi32_i32$2 = 0; - i64toi32_i32$1 = 0; - i64toi32_i32$0 = 0; - FUNCTION_TABLE[2](0.0, 0, i64toi32_i32$2, 0.0, 0, i64toi32_i32$1, 0.0, 0, i64toi32_i32$0, Math_fround(0.0), 0); - i64toi32_i32$0 = 0; - i64toi32_i32$1 = 0; - i64toi32_i32$2 = 0; - FUNCTION_TABLE[3](0.0, 0, i64toi32_i32$0, 0.0, 0, i64toi32_i32$1, 0.0, 0, i64toi32_i32$2, Math_fround(0.0), 0); - } - - function $78() { - FUNCTION_TABLE[1](); - } - - function $79() { - FUNCTION_TABLE[0](0.0, 0, 0, 0.0, 0, 0, 0.0, 0, 0, Math_fround(0.0), 0); - } - - function legalstub$24() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $24() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7 | 0); - i64toi32_i32$0 = $0$hi; - return $0 | 0; - } - - function legalstub$28() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $28() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7 | 0); - i64toi32_i32$0 = $0$hi; - return $0 | 0; - } - - function legalstub$33($0, $1, $2_1, $3) { - $0 = $0 | 0; - $1 = $1 | 0; - $2_1 = $2_1 | 0; - $3 = $3 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21 = 0, $22 = 0, $23_1 = 0, $6 = 0, $6$hi = 0, $9$hi = 0, $10 = 0, $10$hi = 0, $12 = 0, $12$hi = 0, $15$hi = 0, $16 = 0, $16$hi = 0, $4 = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $6 = $0; - $6$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $21 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $21 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $9$hi = i64toi32_i32$1; - i64toi32_i32$1 = $6$hi; - i64toi32_i32$0 = $6; - i64toi32_i32$2 = $9$hi; - i64toi32_i32$3 = $21; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $10 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $10$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $12 = $2_1; - $12$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $22 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $22 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $15$hi = i64toi32_i32$0; - i64toi32_i32$0 = $12$hi; - i64toi32_i32$2 = $12; - i64toi32_i32$1 = $15$hi; - i64toi32_i32$3 = $22; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $16 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $16$hi = i64toi32_i32$1; - i64toi32_i32$1 = $10$hi; - i64toi32_i32$2 = $16$hi; - i64toi32_i32$2 = $33($10 | 0, i64toi32_i32$1 | 0, $16 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $4 = i64toi32_i32$2; - $4$hi = i64toi32_i32$1; - i64toi32_i32$0 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $23_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($23_1 | 0); - i64toi32_i32$2 = $4$hi; - return $4 | 0; - } - - function legalstub$37($0, $1, $2_1, $3) { - $0 = $0 | 0; - $1 = $1 | 0; - $2_1 = $2_1 | 0; - $3 = $3 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21 = 0, $22 = 0, $23_1 = 0, $6 = 0, $6$hi = 0, $9$hi = 0, $10 = 0, $10$hi = 0, $12 = 0, $12$hi = 0, $15$hi = 0, $16 = 0, $16$hi = 0, $4 = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $6 = $0; - $6$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $21 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $21 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $9$hi = i64toi32_i32$1; - i64toi32_i32$1 = $6$hi; - i64toi32_i32$0 = $6; - i64toi32_i32$2 = $9$hi; - i64toi32_i32$3 = $21; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $10 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $10$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $12 = $2_1; - $12$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $22 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $22 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $15$hi = i64toi32_i32$0; - i64toi32_i32$0 = $12$hi; - i64toi32_i32$2 = $12; - i64toi32_i32$1 = $15$hi; - i64toi32_i32$3 = $22; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $16 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $16$hi = i64toi32_i32$1; - i64toi32_i32$1 = $10$hi; - i64toi32_i32$2 = $16$hi; - i64toi32_i32$2 = $37($10 | 0, i64toi32_i32$1 | 0, $16 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $4 = i64toi32_i32$2; - $4$hi = i64toi32_i32$1; - i64toi32_i32$0 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $23_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($23_1 | 0); - i64toi32_i32$2 = $4$hi; - return $4 | 0; - } - - function legalstub$40($0, $1, $2_1, $3, $4, $5, $6) { - $0 = Math_fround($0); - $1 = $1 | 0; - $2_1 = $2_1 | 0; - $3 = $3 | 0; - $4 = $4 | 0; - $5 = +$5; - $6 = $6 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $17 = 0, $7 = Math_fround(0), $8 = 0, $10 = 0, $10$hi = 0, $13$hi = 0; - $7 = $0; - $8 = $1; - i64toi32_i32$0 = 0; - $10 = $2_1; - $10$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $3; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $17 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $17 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $13$hi = i64toi32_i32$1; - i64toi32_i32$1 = $10$hi; - i64toi32_i32$0 = $10; - i64toi32_i32$2 = $13$hi; - i64toi32_i32$3 = $17; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - return +(+$40(Math_fround($7), $8 | 0, i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0, $4 | 0, +$5, $6 | 0)); - } - - function legalstub$44() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $44() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7 | 0); - i64toi32_i32$0 = $0$hi; - return $0 | 0; - } - - function legalstub$51() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $51() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7 | 0); - i64toi32_i32$0 = $0$hi; - return $0 | 0; - } - - function legalstub$57() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $57() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7 | 0); - i64toi32_i32$0 = $0$hi; - return $0 | 0; - } - - function legalstub$68() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $68() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7 | 0); - i64toi32_i32$0 = $0$hi; - return $0 | 0; - } - - var FUNCTION_TABLE = [complex_sig_3, empty_sig_2, complex_sig_1, complex_sig_3, empty_sig_1]; - return { - "f": $2, - "g": h, - "local_first_i32": $23, - "local_first_i64": legalstub$24, - "local_first_f32": $25, - "local_first_f64": $26, - "local_second_i32": $27, - "local_second_i64": legalstub$28, - "local_second_f32": $29, - "local_second_f64": $30, - "local_mixed": $31, - "param_first_i32": $32, - "param_first_i64": legalstub$33, - "param_first_f32": $34, - "param_first_f64": $35, - "param_second_i32": $36, - "param_second_i64": legalstub$37, - "param_second_f32": $38, - "param_second_f64": $39, - "param_mixed": legalstub$40, - "empty": $41, - "value_void": $42, - "value_i32": $43, - "value_i64": legalstub$44, - "value_f32": $45, - "value_f64": $46, - "value_block_void": $47, - "value_block_i32": $48, - "return_empty": $49, - "return_i32": $50, - "return_i64": legalstub$51, - "return_f32": $52, - "return_f64": $53, - "return_block_i32": $54, - "break_empty": $55, - "break_i32": $56, - "break_i64": legalstub$57, - "break_f32": $58, - "break_f64": $59, - "break_block_i32": $60, - "break_br_if_empty": $61, - "break_br_if_num": $62, - "break_br_table_empty": $63, - "break_br_table_num": $64, - "break_br_table_nested_empty": $65, - "break_br_table_nested_num": $66, - "init_local_i32": $67, - "init_local_i64": legalstub$68, - "init_local_f32": $69, - "init_local_f64": $70, - "signature_explicit_reused": $76, - "signature_implicit_reused": $77, - "signature_explicit_duplicate": $78, - "signature_implicit_duplicate": $79 - }; -} - -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); -export var f = retasmFunc.f; -export var g = retasmFunc.g; -export var local_first_i32 = retasmFunc.local_first_i32; -export var local_first_i64 = retasmFunc.local_first_i64; -export var local_first_f32 = retasmFunc.local_first_f32; -export var local_first_f64 = retasmFunc.local_first_f64; -export var local_second_i32 = retasmFunc.local_second_i32; -export var local_second_i64 = retasmFunc.local_second_i64; -export var local_second_f32 = retasmFunc.local_second_f32; -export var local_second_f64 = retasmFunc.local_second_f64; -export var local_mixed = retasmFunc.local_mixed; -export var param_first_i32 = retasmFunc.param_first_i32; -export var param_first_i64 = retasmFunc.param_first_i64; -export var param_first_f32 = retasmFunc.param_first_f32; -export var param_first_f64 = retasmFunc.param_first_f64; -export var param_second_i32 = retasmFunc.param_second_i32; -export var param_second_i64 = retasmFunc.param_second_i64; -export var param_second_f32 = retasmFunc.param_second_f32; -export var param_second_f64 = retasmFunc.param_second_f64; -export var param_mixed = retasmFunc.param_mixed; -export var empty = retasmFunc.empty; -export var value_void = retasmFunc.value_void; -export var value_i32 = retasmFunc.value_i32; -export var value_i64 = retasmFunc.value_i64; -export var value_f32 = retasmFunc.value_f32; -export var value_f64 = retasmFunc.value_f64; -export var value_block_void = retasmFunc.value_block_void; -export var value_block_i32 = retasmFunc.value_block_i32; -export var return_empty = retasmFunc.return_empty; -export var return_i32 = retasmFunc.return_i32; -export var return_i64 = retasmFunc.return_i64; -export var return_f32 = retasmFunc.return_f32; -export var return_f64 = retasmFunc.return_f64; -export var return_block_i32 = retasmFunc.return_block_i32; -export var break_empty = retasmFunc.break_empty; -export var break_i32 = retasmFunc.break_i32; -export var break_i64 = retasmFunc.break_i64; -export var break_f32 = retasmFunc.break_f32; -export var break_f64 = retasmFunc.break_f64; -export var break_block_i32 = retasmFunc.break_block_i32; -export var break_br_if_empty = retasmFunc.break_br_if_empty; -export var break_br_if_num = retasmFunc.break_br_if_num; -export var break_br_table_empty = retasmFunc.break_br_table_empty; -export var break_br_table_num = retasmFunc.break_br_table_num; -export var break_br_table_nested_empty = retasmFunc.break_br_table_nested_empty; -export var break_br_table_nested_num = retasmFunc.break_br_table_nested_num; -export var init_local_i32 = retasmFunc.init_local_i32; -export var init_local_i64 = retasmFunc.init_local_i64; -export var init_local_f32 = retasmFunc.init_local_f32; -export var init_local_f64 = retasmFunc.init_local_f64; -export var signature_explicit_reused = retasmFunc.signature_explicit_reused; -export var signature_implicit_reused = retasmFunc.signature_implicit_reused; -export var signature_explicit_duplicate = retasmFunc.signature_explicit_duplicate; -export var signature_implicit_duplicate = retasmFunc.signature_implicit_duplicate; diff -Nru binaryen-91/test/wasm2js/func-ptr-offset.2asm.js binaryen-99/test/wasm2js/func-ptr-offset.2asm.js --- binaryen-91/test/wasm2js/func-ptr-offset.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/func-ptr-offset.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function t1() { return 1 | 0; } @@ -34,7 +27,7 @@ function $3($0) { $0 = $0 | 0; - return FUNCTION_TABLE[$0]() | 0 | 0; + return FUNCTION_TABLE[$0 | 0]() | 0 | 0; } var FUNCTION_TABLE = [null, t1, t2, t3]; @@ -43,6 +36,6 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var call = retasmFunc.call; diff -Nru binaryen-91/test/wasm2js/func-ptr-offset.2asm.js.opt binaryen-99/test/wasm2js/func-ptr-offset.2asm.js.opt --- binaryen-91/test/wasm2js/func-ptr-offset.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/func-ptr-offset.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function t1() { return 1; } @@ -34,7 +27,7 @@ function $3($0) { $0 = $0 | 0; - return FUNCTION_TABLE[$0]() | 0; + return FUNCTION_TABLE[$0 | 0]() | 0; } var FUNCTION_TABLE = [null, t1, t2, t3]; @@ -43,6 +36,6 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var call = retasmFunc.call; diff -Nru binaryen-91/test/wasm2js/func_ptrs.2asm.js binaryen-99/test/wasm2js/func_ptrs.2asm.js --- binaryen-91/test/wasm2js/func_ptrs.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/func_ptrs.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,26 +1,19 @@ import { print_i32 } from 'spectest'; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var print = env.print_i32; function $3() { return 13 | 0; @@ -41,7 +34,6 @@ print($0 | 0); } - var FUNCTION_TABLE = []; return { "one": $3, "two": $4, @@ -50,34 +42,28 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },print_i32},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + print_i32 + }); export var one = retasmFunc.one; export var two = retasmFunc.two; export var three = retasmFunc.three; export var four = retasmFunc.four; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function t1() { return 1 | 0; } @@ -100,12 +86,12 @@ function $5(i) { i = i | 0; - return FUNCTION_TABLE[i]() | 0 | 0; + return FUNCTION_TABLE[i | 0]() | 0 | 0; } function $6(i) { i = i | 0; - return FUNCTION_TABLE[i]() | 0 | 0; + return FUNCTION_TABLE[i | 0]() | 0 | 0; } var FUNCTION_TABLE = [t1, t2, t3, u1, u2, t1, t3]; @@ -115,32 +101,25 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var callt = retasmFunc.callt; export var callu = retasmFunc.callu; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function t1() { return 1 | 0; } @@ -151,7 +130,7 @@ function $2(i) { i = i | 0; - return FUNCTION_TABLE[i]() | 0 | 0; + return FUNCTION_TABLE[i | 0]() | 0 | 0; } var FUNCTION_TABLE = [t1, t2]; @@ -160,6 +139,6 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var callt = retasmFunc.callt; diff -Nru binaryen-91/test/wasm2js/get_local.2asm.js binaryen-99/test/wasm2js/get_local.2asm.js --- binaryen-91/test/wasm2js/get_local.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/get_local.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,26 +1,19 @@ import { setTempRet0 } from 'env'; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function $0() { @@ -234,7 +227,6 @@ return +(+$9(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0, Math_fround($2_1), +$3_1, $4_1 | 0, $5_1 | 0)); } - var FUNCTION_TABLE = []; return { "type_local_i32": $0, "type_local_i64": legalstub$1, @@ -249,8 +241,9 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var type_local_i32 = retasmFunc.type_local_i32; export var type_local_i64 = retasmFunc.type_local_i64; export var type_local_f32 = retasmFunc.type_local_f32; diff -Nru binaryen-91/test/wasm2js/get-set-local.2asm.js binaryen-99/test/wasm2js/get-set-local.2asm.js --- binaryen-91/test/wasm2js/get-set-local.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/get-set-local.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $1($0, r, r$hi) { $0 = $0 | 0; r = r | 0; @@ -63,12 +56,11 @@ return $1($3 | 0, i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0 | 0; } - var FUNCTION_TABLE = []; return { "check_extend_ui32": legalstub$1 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var check_extend_ui32 = retasmFunc.check_extend_ui32; diff -Nru binaryen-91/test/wasm2js/get-set-local.2asm.js.opt binaryen-99/test/wasm2js/get-set-local.2asm.js.opt --- binaryen-91/test/wasm2js/get-set-local.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/get-set-local.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,35 +1,27 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function legalstub$1($0, $1, $2) { return !$2 & ($0 | 0) == ($1 | 0); } - var FUNCTION_TABLE = []; return { "check_extend_ui32": legalstub$1 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var check_extend_ui32 = retasmFunc.check_extend_ui32; diff -Nru binaryen-91/test/wasm2js/global_i64.2asm.js binaryen-99/test/wasm2js/global_i64.2asm.js --- binaryen-91/test/wasm2js/global_i64.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/global_i64.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var f = -1412567121; var f$hi = 305419896; function call($0, $0$hi) { @@ -36,12 +29,11 @@ f$hi = i64toi32_i32$0; } - var FUNCTION_TABLE = []; return { "exp": $1 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var exp = retasmFunc.exp; diff -Nru binaryen-91/test/wasm2js/global_i64.2asm.js.opt binaryen-99/test/wasm2js/global_i64.2asm.js.opt --- binaryen-91/test/wasm2js/global_i64.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/global_i64.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,38 +1,27 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var f = -1412567121; - var f$hi = 305419896; + var nan = NaN; + var infinity = Infinity; function $1() { - f = 1432778632; - f$hi = 287454020; + } - var FUNCTION_TABLE = []; return { "exp": $1 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var exp = retasmFunc.exp; diff -Nru binaryen-91/test/wasm2js/grow_memory.2asm.js binaryen-99/test/wasm2js/grow_memory.2asm.js --- binaryen-91/test/wasm2js/grow_memory.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/grow_memory.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,27 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var buffer = new ArrayBuffer(65536); + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $0(var$0) { var$0 = var$0 | 0; return __wasm_memory_grow(var$0 | 0) | 0; @@ -29,7 +31,6 @@ return __wasm_memory_size() | 0; } - var FUNCTION_TABLE = []; function __wasm_memory_size() { return buffer.byteLength / 65536 | 0; } @@ -40,17 +41,16 @@ var newPages = oldPages + pagesToAdd | 0; if ((oldPages < newPages) && (newPages < 65536)) { var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); - var newHEAP8 = new global.Int8Array(newBuffer); + var newHEAP8 = new Int8Array(newBuffer); newHEAP8.set(HEAP8); - HEAP8 = newHEAP8; - HEAP8 = new global.Int8Array(newBuffer); - HEAP16 = new global.Int16Array(newBuffer); - HEAP32 = new global.Int32Array(newBuffer); - HEAPU8 = new global.Uint8Array(newBuffer); - HEAPU16 = new global.Uint16Array(newBuffer); - HEAPU32 = new global.Uint32Array(newBuffer); - HEAPF32 = new global.Float32Array(newBuffer); - HEAPF64 = new global.Float64Array(newBuffer); + HEAP8 = new Int8Array(newBuffer); + HEAP16 = new Int16Array(newBuffer); + HEAP32 = new Int32Array(newBuffer); + HEAPU8 = new Uint8Array(newBuffer); + HEAPU16 = new Uint16Array(newBuffer); + HEAPU32 = new Uint32Array(newBuffer); + HEAPF32 = new Float32Array(newBuffer); + HEAPF64 = new Float64Array(newBuffer); buffer = newBuffer; } return oldPages; @@ -73,8 +73,8 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var memory = retasmFunc.memory; export var grow = retasmFunc.grow; export var current = retasmFunc.current; diff -Nru binaryen-91/test/wasm2js/grow-memory-tricky.2asm.js binaryen-99/test/wasm2js/grow-memory-tricky.2asm.js --- binaryen-91/test/wasm2js/grow-memory-tricky.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/grow-memory-tricky.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,27 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var buffer = new ArrayBuffer(65536); + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $0() { var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; (wasm2js_i32$0 = 0, wasm2js_i32$1 = __wasm_memory_grow(1 | 0)), HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; @@ -36,7 +38,6 @@ return __wasm_memory_grow(1 | 0) | 0; } - var FUNCTION_TABLE = []; function __wasm_memory_size() { return buffer.byteLength / 65536 | 0; } @@ -47,17 +48,16 @@ var newPages = oldPages + pagesToAdd | 0; if ((oldPages < newPages) && (newPages < 65536)) { var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); - var newHEAP8 = new global.Int8Array(newBuffer); + var newHEAP8 = new Int8Array(newBuffer); newHEAP8.set(HEAP8); - HEAP8 = newHEAP8; - HEAP8 = new global.Int8Array(newBuffer); - HEAP16 = new global.Int16Array(newBuffer); - HEAP32 = new global.Int32Array(newBuffer); - HEAPU8 = new global.Uint8Array(newBuffer); - HEAPU16 = new global.Uint16Array(newBuffer); - HEAPU32 = new global.Uint32Array(newBuffer); - HEAPF32 = new global.Float32Array(newBuffer); - HEAPF64 = new global.Float64Array(newBuffer); + HEAP8 = new Int8Array(newBuffer); + HEAP16 = new Int16Array(newBuffer); + HEAP32 = new Int32Array(newBuffer); + HEAPU8 = new Uint8Array(newBuffer); + HEAPU16 = new Uint16Array(newBuffer); + HEAPU32 = new Uint32Array(newBuffer); + HEAPF32 = new Float32Array(newBuffer); + HEAPF64 = new Float64Array(newBuffer); buffer = newBuffer; } return oldPages; @@ -80,8 +80,8 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var memory = retasmFunc.memory; export var f1 = retasmFunc.f1; export var f2 = retasmFunc.f2; diff -Nru binaryen-91/test/wasm2js/grow-memory-tricky.2asm.js.opt binaryen-99/test/wasm2js/grow-memory-tricky.2asm.js.opt --- binaryen-91/test/wasm2js/grow-memory-tricky.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/grow-memory-tricky.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,32 +1,33 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var buffer = new ArrayBuffer(65536); + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $0() { var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0; (wasm2js_i32$0 = 0, wasm2js_i32$1 = __wasm_memory_grow(1)), HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1; return HEAP32[0]; } - var FUNCTION_TABLE = []; function __wasm_memory_size() { return buffer.byteLength / 65536 | 0; } @@ -37,17 +38,16 @@ var newPages = oldPages + pagesToAdd | 0; if ((oldPages < newPages) && (newPages < 65536)) { var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); - var newHEAP8 = new global.Int8Array(newBuffer); + var newHEAP8 = new Int8Array(newBuffer); newHEAP8.set(HEAP8); - HEAP8 = newHEAP8; - HEAP8 = new global.Int8Array(newBuffer); - HEAP16 = new global.Int16Array(newBuffer); - HEAP32 = new global.Int32Array(newBuffer); - HEAPU8 = new global.Uint8Array(newBuffer); - HEAPU16 = new global.Uint16Array(newBuffer); - HEAPU32 = new global.Uint32Array(newBuffer); - HEAPF32 = new global.Float32Array(newBuffer); - HEAPF64 = new global.Float64Array(newBuffer); + HEAP8 = new Int8Array(newBuffer); + HEAP16 = new Int16Array(newBuffer); + HEAP32 = new Int32Array(newBuffer); + HEAPU8 = new Uint8Array(newBuffer); + HEAPU16 = new Uint16Array(newBuffer); + HEAPU32 = new Uint32Array(newBuffer); + HEAPF32 = new Float32Array(newBuffer); + HEAPF64 = new Float64Array(newBuffer); buffer = newBuffer; } return oldPages; @@ -70,8 +70,8 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var memory = retasmFunc.memory; export var f1 = retasmFunc.f1; export var f2 = retasmFunc.f2; diff -Nru binaryen-91/test/wasm2js/hello_world.2asm.js binaryen-99/test/wasm2js/hello_world.2asm.js --- binaryen-91/test/wasm2js/hello_world.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/hello_world.2asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; - var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - function add(x, y) { - x = x | 0; - y = y | 0; - return x + y | 0 | 0; - } - - var FUNCTION_TABLE = []; - return { - "add": add - }; -} - -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); -export var add = retasmFunc.add; diff -Nru binaryen-91/test/wasm2js/i32.2asm.js binaryen-99/test/wasm2js/i32.2asm.js --- binaryen-91/test/wasm2js/i32.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/i32.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $0(x, y) { x = x | 0; y = y | 0; @@ -233,7 +226,6 @@ return ((-1 << var$2 | 0) & var$0 | 0) >>> var$2 | 0 | (((-1 >>> var$1 | 0) & var$0 | 0) << var$1 | 0) | 0 | 0; } - var FUNCTION_TABLE = []; return { "add": $0, "sub": $1, @@ -267,8 +259,8 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var add = retasmFunc.add; export var sub = retasmFunc.sub; export var mul = retasmFunc.mul; diff -Nru binaryen-91/test/wasm2js/i64.2asm.js binaryen-99/test/wasm2js/i64.2asm.js --- binaryen-91/test/wasm2js/i64.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/i64.2asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,3593 +0,0 @@ -import { setTempRet0 } from 'env'; -import { getTempRet0 } from 'env'; - - - var scratchBuffer = new ArrayBuffer(8); - var i32ScratchView = new Int32Array(scratchBuffer); - var f32ScratchView = new Float32Array(scratchBuffer); - var f64ScratchView = new Float64Array(scratchBuffer); - - function legalimport$wasm2js_scratch_load_i64() { - if (typeof setTempRet0 === 'function') setTempRet0(i32ScratchView[1]); - return i32ScratchView[0]; - } - - function legalimport$wasm2js_scratch_store_i64(low, high) { - i32ScratchView[0] = low; - i32ScratchView[1] = high; - } - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; - var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var setTempRet0 = env.setTempRet0; - var getTempRet0 = env.getTempRet0; - var i64toi32_i32$HIGH_BITS = 0; - function $0(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$5 = 0, i64toi32_i32$3 = 0, i64toi32_i32$4 = 0; - i64toi32_i32$3 = y; - i64toi32_i32$4 = x + i64toi32_i32$3 | 0; - i64toi32_i32$5 = x$hi + y$hi | 0; - if (i64toi32_i32$4 >>> 0 < i64toi32_i32$3 >>> 0) { - i64toi32_i32$5 = i64toi32_i32$5 + 1 | 0 - } - i64toi32_i32$HIGH_BITS = i64toi32_i32$5; - return i64toi32_i32$4 | 0; - } - - function $1(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, i64toi32_i32$3 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - i64toi32_i32$2 = x; - i64toi32_i32$3 = y; - i64toi32_i32$5 = (i64toi32_i32$2 >>> 0 < i64toi32_i32$3 >>> 0) + y$hi | 0; - i64toi32_i32$5 = i64toi32_i32$0 - i64toi32_i32$5 | 0; - i64toi32_i32$2 = i64toi32_i32$2 - i64toi32_i32$3 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$5; - return i64toi32_i32$2 | 0; - } - - function $2(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - i64toi32_i32$1 = y$hi; - i64toi32_i32$1 = __wasm_i64_mul(x | 0, i64toi32_i32$0 | 0, y | 0, i64toi32_i32$1 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return i64toi32_i32$1 | 0; - } - - function $3(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - i64toi32_i32$1 = y$hi; - i64toi32_i32$1 = __wasm_i64_sdiv(x | 0, i64toi32_i32$0 | 0, y | 0, i64toi32_i32$1 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return i64toi32_i32$1 | 0; - } - - function $4(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - i64toi32_i32$1 = y$hi; - i64toi32_i32$1 = __wasm_i64_udiv(x | 0, i64toi32_i32$0 | 0, y | 0, i64toi32_i32$1 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return i64toi32_i32$1 | 0; - } - - function $5(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - i64toi32_i32$1 = y$hi; - i64toi32_i32$1 = __wasm_i64_srem(x | 0, i64toi32_i32$0 | 0, y | 0, i64toi32_i32$1 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return i64toi32_i32$1 | 0; - } - - function $6(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - i64toi32_i32$1 = y$hi; - i64toi32_i32$1 = __wasm_i64_urem(x | 0, i64toi32_i32$0 | 0, y | 0, i64toi32_i32$1 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return i64toi32_i32$1 | 0; - } - - function $7(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - i64toi32_i32$2 = x; - i64toi32_i32$1 = y$hi; - i64toi32_i32$1 = i64toi32_i32$0 & i64toi32_i32$1 | 0; - i64toi32_i32$2 = i64toi32_i32$2 & y | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$2 | 0; - } - - function $8(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - i64toi32_i32$2 = x; - i64toi32_i32$1 = y$hi; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - i64toi32_i32$2 = i64toi32_i32$2 | y | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$2 | 0; - } - - function $9(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - i64toi32_i32$2 = x; - i64toi32_i32$1 = y$hi; - i64toi32_i32$1 = i64toi32_i32$0 ^ i64toi32_i32$1 | 0; - i64toi32_i32$2 = i64toi32_i32$2 ^ y | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$2 | 0; - } - - function $10(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $9_1 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - i64toi32_i32$2 = x; - i64toi32_i32$1 = y$hi; - i64toi32_i32$3 = y; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $9_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $9_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - i64toi32_i32$2 = $9_1; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$2 | 0; - } - - function $11(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $9_1 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - i64toi32_i32$2 = x; - i64toi32_i32$1 = y$hi; - i64toi32_i32$3 = y; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$0 >> 31 | 0; - $9_1 = i64toi32_i32$0 >> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >> i64toi32_i32$4 | 0; - $9_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - i64toi32_i32$2 = $9_1; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$2 | 0; - } - - function $12(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $9_1 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - i64toi32_i32$2 = x; - i64toi32_i32$1 = y$hi; - i64toi32_i32$3 = y; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $9_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $9_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - i64toi32_i32$2 = $9_1; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$2 | 0; - } - - function $13(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - i64toi32_i32$1 = y$hi; - i64toi32_i32$1 = __wasm_rotl_i64(x | 0, i64toi32_i32$0 | 0, y | 0, i64toi32_i32$1 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return i64toi32_i32$1 | 0; - } - - function $14(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - i64toi32_i32$1 = y$hi; - i64toi32_i32$1 = __wasm_rotr_i64(x | 0, i64toi32_i32$0 | 0, y | 0, i64toi32_i32$1 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return i64toi32_i32$1 | 0; - } - - function $15(x, x$hi) { - x = x | 0; - x$hi = x$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $6_1 = 0, i64toi32_i32$1 = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$1 = x; - i64toi32_i32$3 = Math_clz32(i64toi32_i32$0); - i64toi32_i32$2 = 0; - if ((i64toi32_i32$3 | 0) == (32 | 0)) { - $6_1 = Math_clz32(i64toi32_i32$1) + 32 | 0 - } else { - $6_1 = i64toi32_i32$3 - } - i64toi32_i32$0 = $6_1; - i64toi32_i32$HIGH_BITS = i64toi32_i32$2; - return i64toi32_i32$0 | 0; - } - - function $16(x, x$hi) { - x = x | 0; - x$hi = x$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = __wasm_ctz_i64(x | 0, i64toi32_i32$0 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $17(x, x$hi) { - x = x | 0; - x$hi = x$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = __wasm_popcnt_i64(x | 0, i64toi32_i32$0 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function $18(x, x$hi) { - x = x | 0; - x$hi = x$hi | 0; - var i64toi32_i32$0 = 0; - i64toi32_i32$0 = x$hi; - return !(x | i64toi32_i32$0 | 0) | 0; - } - - function $19(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$0 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - return (x | 0) == (y | 0) & (i64toi32_i32$0 | 0) == (y$hi | 0) | 0 | 0; - } - - function $20(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$0 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - return (x | 0) != (y | 0) | (i64toi32_i32$0 | 0) != (y$hi | 0) | 0 | 0; - } - - function $21(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$0 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - i64toi32_i32$2 = x; - i64toi32_i32$1 = y$hi; - i64toi32_i32$3 = y; - if ((i64toi32_i32$0 | 0) < (y$hi | 0)) { - $8_1 = 1 - } else { - if ((i64toi32_i32$0 | 0) <= (i64toi32_i32$1 | 0)) { - if (i64toi32_i32$2 >>> 0 >= i64toi32_i32$3 >>> 0) { - $9_1 = 0 - } else { - $9_1 = 1 - } - $10_1 = $9_1; - } else { - $10_1 = 0 - } - $8_1 = $10_1; - } - return $8_1 | 0; - } - - function $22(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$0 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - return i64toi32_i32$0 >>> 0 < y$hi >>> 0 | ((i64toi32_i32$0 | 0) == (y$hi | 0) & x >>> 0 < y >>> 0 | 0) | 0 | 0; - } - - function $23(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$0 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - i64toi32_i32$2 = x; - i64toi32_i32$1 = y$hi; - i64toi32_i32$3 = y; - if ((i64toi32_i32$0 | 0) < (y$hi | 0)) { - $8_1 = 1 - } else { - if ((i64toi32_i32$0 | 0) <= (i64toi32_i32$1 | 0)) { - if (i64toi32_i32$2 >>> 0 > i64toi32_i32$3 >>> 0) { - $9_1 = 0 - } else { - $9_1 = 1 - } - $10_1 = $9_1; - } else { - $10_1 = 0 - } - $8_1 = $10_1; - } - return $8_1 | 0; - } - - function $24(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$0 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - return i64toi32_i32$0 >>> 0 < y$hi >>> 0 | ((i64toi32_i32$0 | 0) == (y$hi | 0) & x >>> 0 <= y >>> 0 | 0) | 0 | 0; - } - - function $25(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$0 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - i64toi32_i32$2 = x; - i64toi32_i32$1 = y$hi; - i64toi32_i32$3 = y; - if ((i64toi32_i32$0 | 0) > (y$hi | 0)) { - $8_1 = 1 - } else { - if ((i64toi32_i32$0 | 0) >= (i64toi32_i32$1 | 0)) { - if (i64toi32_i32$2 >>> 0 <= i64toi32_i32$3 >>> 0) { - $9_1 = 0 - } else { - $9_1 = 1 - } - $10_1 = $9_1; - } else { - $10_1 = 0 - } - $8_1 = $10_1; - } - return $8_1 | 0; - } - - function $26(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$0 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - return i64toi32_i32$0 >>> 0 > y$hi >>> 0 | ((i64toi32_i32$0 | 0) == (y$hi | 0) & x >>> 0 > y >>> 0 | 0) | 0 | 0; - } - - function $27(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$0 = 0, $8_1 = 0, $9_1 = 0, $10_1 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - i64toi32_i32$2 = x; - i64toi32_i32$1 = y$hi; - i64toi32_i32$3 = y; - if ((i64toi32_i32$0 | 0) > (y$hi | 0)) { - $8_1 = 1 - } else { - if ((i64toi32_i32$0 | 0) >= (i64toi32_i32$1 | 0)) { - if (i64toi32_i32$2 >>> 0 < i64toi32_i32$3 >>> 0) { - $9_1 = 0 - } else { - $9_1 = 1 - } - $10_1 = $9_1; - } else { - $10_1 = 0 - } - $8_1 = $10_1; - } - return $8_1 | 0; - } - - function $28(x, x$hi, y, y$hi) { - x = x | 0; - x$hi = x$hi | 0; - y = y | 0; - y$hi = y$hi | 0; - var i64toi32_i32$0 = 0; - i64toi32_i32$0 = x$hi; - i64toi32_i32$0 = y$hi; - i64toi32_i32$0 = x$hi; - return i64toi32_i32$0 >>> 0 > y$hi >>> 0 | ((i64toi32_i32$0 | 0) == (y$hi | 0) & x >>> 0 >= y >>> 0 | 0) | 0 | 0; - } - - function legalstub$0($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $6_1 = $0_1; - $6$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $21_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $9$hi = i64toi32_i32$1; - i64toi32_i32$1 = $6$hi; - i64toi32_i32$0 = $6_1; - i64toi32_i32$2 = $9$hi; - i64toi32_i32$3 = $21_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $10$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $12_1 = $2_1; - $12$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $22_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $15$hi = i64toi32_i32$0; - i64toi32_i32$0 = $12$hi; - i64toi32_i32$2 = $12_1; - i64toi32_i32$1 = $15$hi; - i64toi32_i32$3 = $22_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $16$hi = i64toi32_i32$1; - i64toi32_i32$1 = $10$hi; - i64toi32_i32$2 = $16$hi; - i64toi32_i32$2 = $0($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $4_1 = i64toi32_i32$2; - $4$hi = i64toi32_i32$1; - i64toi32_i32$0 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $23_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($23_1 | 0); - i64toi32_i32$2 = $4$hi; - return $4_1 | 0; - } - - function legalstub$1($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $6_1 = $0_1; - $6$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $21_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $9$hi = i64toi32_i32$1; - i64toi32_i32$1 = $6$hi; - i64toi32_i32$0 = $6_1; - i64toi32_i32$2 = $9$hi; - i64toi32_i32$3 = $21_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $10$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $12_1 = $2_1; - $12$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $22_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $15$hi = i64toi32_i32$0; - i64toi32_i32$0 = $12$hi; - i64toi32_i32$2 = $12_1; - i64toi32_i32$1 = $15$hi; - i64toi32_i32$3 = $22_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $16$hi = i64toi32_i32$1; - i64toi32_i32$1 = $10$hi; - i64toi32_i32$2 = $16$hi; - i64toi32_i32$2 = $1($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $4_1 = i64toi32_i32$2; - $4$hi = i64toi32_i32$1; - i64toi32_i32$0 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $23_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($23_1 | 0); - i64toi32_i32$2 = $4$hi; - return $4_1 | 0; - } - - function legalstub$2($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $6_1 = $0_1; - $6$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $21_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $9$hi = i64toi32_i32$1; - i64toi32_i32$1 = $6$hi; - i64toi32_i32$0 = $6_1; - i64toi32_i32$2 = $9$hi; - i64toi32_i32$3 = $21_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $10$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $12_1 = $2_1; - $12$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $22_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $15$hi = i64toi32_i32$0; - i64toi32_i32$0 = $12$hi; - i64toi32_i32$2 = $12_1; - i64toi32_i32$1 = $15$hi; - i64toi32_i32$3 = $22_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $16$hi = i64toi32_i32$1; - i64toi32_i32$1 = $10$hi; - i64toi32_i32$2 = $16$hi; - i64toi32_i32$2 = $2($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $4_1 = i64toi32_i32$2; - $4$hi = i64toi32_i32$1; - i64toi32_i32$0 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $23_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($23_1 | 0); - i64toi32_i32$2 = $4$hi; - return $4_1 | 0; - } - - function legalstub$3($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $6_1 = $0_1; - $6$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $21_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $9$hi = i64toi32_i32$1; - i64toi32_i32$1 = $6$hi; - i64toi32_i32$0 = $6_1; - i64toi32_i32$2 = $9$hi; - i64toi32_i32$3 = $21_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $10$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $12_1 = $2_1; - $12$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $22_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $15$hi = i64toi32_i32$0; - i64toi32_i32$0 = $12$hi; - i64toi32_i32$2 = $12_1; - i64toi32_i32$1 = $15$hi; - i64toi32_i32$3 = $22_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $16$hi = i64toi32_i32$1; - i64toi32_i32$1 = $10$hi; - i64toi32_i32$2 = $16$hi; - i64toi32_i32$2 = $3($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $4_1 = i64toi32_i32$2; - $4$hi = i64toi32_i32$1; - i64toi32_i32$0 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $23_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($23_1 | 0); - i64toi32_i32$2 = $4$hi; - return $4_1 | 0; - } - - function legalstub$4($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $6_1 = $0_1; - $6$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $21_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $9$hi = i64toi32_i32$1; - i64toi32_i32$1 = $6$hi; - i64toi32_i32$0 = $6_1; - i64toi32_i32$2 = $9$hi; - i64toi32_i32$3 = $21_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $10$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $12_1 = $2_1; - $12$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $22_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $15$hi = i64toi32_i32$0; - i64toi32_i32$0 = $12$hi; - i64toi32_i32$2 = $12_1; - i64toi32_i32$1 = $15$hi; - i64toi32_i32$3 = $22_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $16$hi = i64toi32_i32$1; - i64toi32_i32$1 = $10$hi; - i64toi32_i32$2 = $16$hi; - i64toi32_i32$2 = $4($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $4_1 = i64toi32_i32$2; - $4$hi = i64toi32_i32$1; - i64toi32_i32$0 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $23_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($23_1 | 0); - i64toi32_i32$2 = $4$hi; - return $4_1 | 0; - } - - function legalstub$5($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $6_1 = $0_1; - $6$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $21_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $9$hi = i64toi32_i32$1; - i64toi32_i32$1 = $6$hi; - i64toi32_i32$0 = $6_1; - i64toi32_i32$2 = $9$hi; - i64toi32_i32$3 = $21_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $10$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $12_1 = $2_1; - $12$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $22_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $15$hi = i64toi32_i32$0; - i64toi32_i32$0 = $12$hi; - i64toi32_i32$2 = $12_1; - i64toi32_i32$1 = $15$hi; - i64toi32_i32$3 = $22_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $16$hi = i64toi32_i32$1; - i64toi32_i32$1 = $10$hi; - i64toi32_i32$2 = $16$hi; - i64toi32_i32$2 = $5($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $4_1 = i64toi32_i32$2; - $4$hi = i64toi32_i32$1; - i64toi32_i32$0 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $23_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($23_1 | 0); - i64toi32_i32$2 = $4$hi; - return $4_1 | 0; - } - - function legalstub$6($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $6_1 = $0_1; - $6$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $21_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $9$hi = i64toi32_i32$1; - i64toi32_i32$1 = $6$hi; - i64toi32_i32$0 = $6_1; - i64toi32_i32$2 = $9$hi; - i64toi32_i32$3 = $21_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $10$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $12_1 = $2_1; - $12$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $22_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $15$hi = i64toi32_i32$0; - i64toi32_i32$0 = $12$hi; - i64toi32_i32$2 = $12_1; - i64toi32_i32$1 = $15$hi; - i64toi32_i32$3 = $22_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $16$hi = i64toi32_i32$1; - i64toi32_i32$1 = $10$hi; - i64toi32_i32$2 = $16$hi; - i64toi32_i32$2 = $6($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $4_1 = i64toi32_i32$2; - $4$hi = i64toi32_i32$1; - i64toi32_i32$0 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $23_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($23_1 | 0); - i64toi32_i32$2 = $4$hi; - return $4_1 | 0; - } - - function legalstub$7($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $6_1 = $0_1; - $6$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $21_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $9$hi = i64toi32_i32$1; - i64toi32_i32$1 = $6$hi; - i64toi32_i32$0 = $6_1; - i64toi32_i32$2 = $9$hi; - i64toi32_i32$3 = $21_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $10$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $12_1 = $2_1; - $12$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $22_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $15$hi = i64toi32_i32$0; - i64toi32_i32$0 = $12$hi; - i64toi32_i32$2 = $12_1; - i64toi32_i32$1 = $15$hi; - i64toi32_i32$3 = $22_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $16$hi = i64toi32_i32$1; - i64toi32_i32$1 = $10$hi; - i64toi32_i32$2 = $16$hi; - i64toi32_i32$2 = $7($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $4_1 = i64toi32_i32$2; - $4$hi = i64toi32_i32$1; - i64toi32_i32$0 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $23_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($23_1 | 0); - i64toi32_i32$2 = $4$hi; - return $4_1 | 0; - } - - function legalstub$8($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $6_1 = $0_1; - $6$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $21_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $9$hi = i64toi32_i32$1; - i64toi32_i32$1 = $6$hi; - i64toi32_i32$0 = $6_1; - i64toi32_i32$2 = $9$hi; - i64toi32_i32$3 = $21_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $10$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $12_1 = $2_1; - $12$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $22_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $15$hi = i64toi32_i32$0; - i64toi32_i32$0 = $12$hi; - i64toi32_i32$2 = $12_1; - i64toi32_i32$1 = $15$hi; - i64toi32_i32$3 = $22_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $16$hi = i64toi32_i32$1; - i64toi32_i32$1 = $10$hi; - i64toi32_i32$2 = $16$hi; - i64toi32_i32$2 = $8($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $4_1 = i64toi32_i32$2; - $4$hi = i64toi32_i32$1; - i64toi32_i32$0 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $23_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($23_1 | 0); - i64toi32_i32$2 = $4$hi; - return $4_1 | 0; - } - - function legalstub$9($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $6_1 = $0_1; - $6$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $21_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $9$hi = i64toi32_i32$1; - i64toi32_i32$1 = $6$hi; - i64toi32_i32$0 = $6_1; - i64toi32_i32$2 = $9$hi; - i64toi32_i32$3 = $21_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $10$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $12_1 = $2_1; - $12$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $22_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $15$hi = i64toi32_i32$0; - i64toi32_i32$0 = $12$hi; - i64toi32_i32$2 = $12_1; - i64toi32_i32$1 = $15$hi; - i64toi32_i32$3 = $22_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $16$hi = i64toi32_i32$1; - i64toi32_i32$1 = $10$hi; - i64toi32_i32$2 = $16$hi; - i64toi32_i32$2 = $9($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $4_1 = i64toi32_i32$2; - $4$hi = i64toi32_i32$1; - i64toi32_i32$0 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $23_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($23_1 | 0); - i64toi32_i32$2 = $4$hi; - return $4_1 | 0; - } - - function legalstub$10($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $6_1 = $0_1; - $6$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $21_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $9$hi = i64toi32_i32$1; - i64toi32_i32$1 = $6$hi; - i64toi32_i32$0 = $6_1; - i64toi32_i32$2 = $9$hi; - i64toi32_i32$3 = $21_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $10$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $12_1 = $2_1; - $12$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $22_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $15$hi = i64toi32_i32$0; - i64toi32_i32$0 = $12$hi; - i64toi32_i32$2 = $12_1; - i64toi32_i32$1 = $15$hi; - i64toi32_i32$3 = $22_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $16$hi = i64toi32_i32$1; - i64toi32_i32$1 = $10$hi; - i64toi32_i32$2 = $16$hi; - i64toi32_i32$2 = $10($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $4_1 = i64toi32_i32$2; - $4$hi = i64toi32_i32$1; - i64toi32_i32$0 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $23_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($23_1 | 0); - i64toi32_i32$2 = $4$hi; - return $4_1 | 0; - } - - function legalstub$11($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $6_1 = $0_1; - $6$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $21_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $9$hi = i64toi32_i32$1; - i64toi32_i32$1 = $6$hi; - i64toi32_i32$0 = $6_1; - i64toi32_i32$2 = $9$hi; - i64toi32_i32$3 = $21_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $10$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $12_1 = $2_1; - $12$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $22_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $15$hi = i64toi32_i32$0; - i64toi32_i32$0 = $12$hi; - i64toi32_i32$2 = $12_1; - i64toi32_i32$1 = $15$hi; - i64toi32_i32$3 = $22_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $16$hi = i64toi32_i32$1; - i64toi32_i32$1 = $10$hi; - i64toi32_i32$2 = $16$hi; - i64toi32_i32$2 = $11($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $4_1 = i64toi32_i32$2; - $4$hi = i64toi32_i32$1; - i64toi32_i32$0 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $23_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($23_1 | 0); - i64toi32_i32$2 = $4$hi; - return $4_1 | 0; - } - - function legalstub$12($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $6_1 = $0_1; - $6$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $21_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $9$hi = i64toi32_i32$1; - i64toi32_i32$1 = $6$hi; - i64toi32_i32$0 = $6_1; - i64toi32_i32$2 = $9$hi; - i64toi32_i32$3 = $21_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $10$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $12_1 = $2_1; - $12$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $22_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $15$hi = i64toi32_i32$0; - i64toi32_i32$0 = $12$hi; - i64toi32_i32$2 = $12_1; - i64toi32_i32$1 = $15$hi; - i64toi32_i32$3 = $22_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $16$hi = i64toi32_i32$1; - i64toi32_i32$1 = $10$hi; - i64toi32_i32$2 = $16$hi; - i64toi32_i32$2 = $12($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $4_1 = i64toi32_i32$2; - $4$hi = i64toi32_i32$1; - i64toi32_i32$0 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $23_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($23_1 | 0); - i64toi32_i32$2 = $4$hi; - return $4_1 | 0; - } - - function legalstub$13($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $6_1 = $0_1; - $6$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $21_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $9$hi = i64toi32_i32$1; - i64toi32_i32$1 = $6$hi; - i64toi32_i32$0 = $6_1; - i64toi32_i32$2 = $9$hi; - i64toi32_i32$3 = $21_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $10$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $12_1 = $2_1; - $12$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $22_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $15$hi = i64toi32_i32$0; - i64toi32_i32$0 = $12$hi; - i64toi32_i32$2 = $12_1; - i64toi32_i32$1 = $15$hi; - i64toi32_i32$3 = $22_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $16$hi = i64toi32_i32$1; - i64toi32_i32$1 = $10$hi; - i64toi32_i32$2 = $16$hi; - i64toi32_i32$2 = $13($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $4_1 = i64toi32_i32$2; - $4$hi = i64toi32_i32$1; - i64toi32_i32$0 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $23_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($23_1 | 0); - i64toi32_i32$2 = $4$hi; - return $4_1 | 0; - } - - function legalstub$14($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $6_1 = $0_1; - $6$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $21_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $9$hi = i64toi32_i32$1; - i64toi32_i32$1 = $6$hi; - i64toi32_i32$0 = $6_1; - i64toi32_i32$2 = $9$hi; - i64toi32_i32$3 = $21_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $10$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $12_1 = $2_1; - $12$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $22_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $15$hi = i64toi32_i32$0; - i64toi32_i32$0 = $12$hi; - i64toi32_i32$2 = $12_1; - i64toi32_i32$1 = $15$hi; - i64toi32_i32$3 = $22_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $16$hi = i64toi32_i32$1; - i64toi32_i32$1 = $10$hi; - i64toi32_i32$2 = $16$hi; - i64toi32_i32$2 = $14($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $4_1 = i64toi32_i32$2; - $4$hi = i64toi32_i32$1; - i64toi32_i32$0 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $23_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($23_1 | 0); - i64toi32_i32$2 = $4$hi; - return $4_1 | 0; - } - - function legalstub$15($0_1, $1_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12_1 = 0, $13_1 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0; - i64toi32_i32$0 = 0; - $4_1 = $0_1; - $4$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $12_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $12_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $7$hi = i64toi32_i32$1; - i64toi32_i32$1 = $4$hi; - i64toi32_i32$0 = $4_1; - i64toi32_i32$2 = $7$hi; - i64toi32_i32$3 = $12_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - i64toi32_i32$2 = $15(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - $2_1 = i64toi32_i32$2; - $2$hi = i64toi32_i32$0; - i64toi32_i32$1 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $13_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $13_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($13_1 | 0); - i64toi32_i32$2 = $2$hi; - return $2_1 | 0; - } - - function legalstub$16($0_1, $1_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12_1 = 0, $13_1 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0; - i64toi32_i32$0 = 0; - $4_1 = $0_1; - $4$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $12_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $12_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $7$hi = i64toi32_i32$1; - i64toi32_i32$1 = $4$hi; - i64toi32_i32$0 = $4_1; - i64toi32_i32$2 = $7$hi; - i64toi32_i32$3 = $12_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - i64toi32_i32$2 = $16(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - $2_1 = i64toi32_i32$2; - $2$hi = i64toi32_i32$0; - i64toi32_i32$1 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $13_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $13_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($13_1 | 0); - i64toi32_i32$2 = $2$hi; - return $2_1 | 0; - } - - function legalstub$17($0_1, $1_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12_1 = 0, $13_1 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0; - i64toi32_i32$0 = 0; - $4_1 = $0_1; - $4$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $12_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $12_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $7$hi = i64toi32_i32$1; - i64toi32_i32$1 = $4$hi; - i64toi32_i32$0 = $4_1; - i64toi32_i32$2 = $7$hi; - i64toi32_i32$3 = $12_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - i64toi32_i32$2 = $17(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - $2_1 = i64toi32_i32$2; - $2$hi = i64toi32_i32$0; - i64toi32_i32$1 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $13_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $13_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($13_1 | 0); - i64toi32_i32$2 = $2$hi; - return $2_1 | 0; - } - - function legalstub$18($0_1, $1_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $10_1 = 0, $3_1 = 0, $3$hi = 0, $6$hi = 0; - i64toi32_i32$0 = 0; - $3_1 = $0_1; - $3$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $10_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $10_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $6$hi = i64toi32_i32$1; - i64toi32_i32$1 = $3$hi; - i64toi32_i32$0 = $3_1; - i64toi32_i32$2 = $6$hi; - i64toi32_i32$3 = $10_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - return $18(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0 | 0; - } - - function legalstub$19($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19_1 = 0, $20_1 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11_1 = 0, $11$hi = 0, $14$hi = 0, $15_1 = 0, $15$hi = 0; - i64toi32_i32$0 = 0; - $5_1 = $0_1; - $5$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $19_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $19_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $8$hi = i64toi32_i32$1; - i64toi32_i32$1 = $5$hi; - i64toi32_i32$0 = $5_1; - i64toi32_i32$2 = $8$hi; - i64toi32_i32$3 = $19_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $9$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $11_1 = $2_1; - $11$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $20_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $20_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $14$hi = i64toi32_i32$0; - i64toi32_i32$0 = $11$hi; - i64toi32_i32$2 = $11_1; - i64toi32_i32$1 = $14$hi; - i64toi32_i32$3 = $20_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $15_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $15$hi = i64toi32_i32$1; - i64toi32_i32$1 = $9$hi; - i64toi32_i32$2 = $15$hi; - return $19($9_1 | 0, i64toi32_i32$1 | 0, $15_1 | 0, i64toi32_i32$2 | 0) | 0 | 0; - } - - function legalstub$20($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19_1 = 0, $20_1 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11_1 = 0, $11$hi = 0, $14$hi = 0, $15_1 = 0, $15$hi = 0; - i64toi32_i32$0 = 0; - $5_1 = $0_1; - $5$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $19_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $19_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $8$hi = i64toi32_i32$1; - i64toi32_i32$1 = $5$hi; - i64toi32_i32$0 = $5_1; - i64toi32_i32$2 = $8$hi; - i64toi32_i32$3 = $19_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $9$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $11_1 = $2_1; - $11$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $20_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $20_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $14$hi = i64toi32_i32$0; - i64toi32_i32$0 = $11$hi; - i64toi32_i32$2 = $11_1; - i64toi32_i32$1 = $14$hi; - i64toi32_i32$3 = $20_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $15_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $15$hi = i64toi32_i32$1; - i64toi32_i32$1 = $9$hi; - i64toi32_i32$2 = $15$hi; - return $20($9_1 | 0, i64toi32_i32$1 | 0, $15_1 | 0, i64toi32_i32$2 | 0) | 0 | 0; - } - - function legalstub$21($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19_1 = 0, $20_1 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11_1 = 0, $11$hi = 0, $14$hi = 0, $15_1 = 0, $15$hi = 0; - i64toi32_i32$0 = 0; - $5_1 = $0_1; - $5$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $19_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $19_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $8$hi = i64toi32_i32$1; - i64toi32_i32$1 = $5$hi; - i64toi32_i32$0 = $5_1; - i64toi32_i32$2 = $8$hi; - i64toi32_i32$3 = $19_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $9$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $11_1 = $2_1; - $11$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $20_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $20_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $14$hi = i64toi32_i32$0; - i64toi32_i32$0 = $11$hi; - i64toi32_i32$2 = $11_1; - i64toi32_i32$1 = $14$hi; - i64toi32_i32$3 = $20_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $15_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $15$hi = i64toi32_i32$1; - i64toi32_i32$1 = $9$hi; - i64toi32_i32$2 = $15$hi; - return $21($9_1 | 0, i64toi32_i32$1 | 0, $15_1 | 0, i64toi32_i32$2 | 0) | 0 | 0; - } - - function legalstub$22($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19_1 = 0, $20_1 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11_1 = 0, $11$hi = 0, $14$hi = 0, $15_1 = 0, $15$hi = 0; - i64toi32_i32$0 = 0; - $5_1 = $0_1; - $5$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $19_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $19_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $8$hi = i64toi32_i32$1; - i64toi32_i32$1 = $5$hi; - i64toi32_i32$0 = $5_1; - i64toi32_i32$2 = $8$hi; - i64toi32_i32$3 = $19_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $9$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $11_1 = $2_1; - $11$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $20_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $20_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $14$hi = i64toi32_i32$0; - i64toi32_i32$0 = $11$hi; - i64toi32_i32$2 = $11_1; - i64toi32_i32$1 = $14$hi; - i64toi32_i32$3 = $20_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $15_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $15$hi = i64toi32_i32$1; - i64toi32_i32$1 = $9$hi; - i64toi32_i32$2 = $15$hi; - return $22($9_1 | 0, i64toi32_i32$1 | 0, $15_1 | 0, i64toi32_i32$2 | 0) | 0 | 0; - } - - function legalstub$23($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19_1 = 0, $20_1 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11_1 = 0, $11$hi = 0, $14$hi = 0, $15_1 = 0, $15$hi = 0; - i64toi32_i32$0 = 0; - $5_1 = $0_1; - $5$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $19_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $19_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $8$hi = i64toi32_i32$1; - i64toi32_i32$1 = $5$hi; - i64toi32_i32$0 = $5_1; - i64toi32_i32$2 = $8$hi; - i64toi32_i32$3 = $19_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $9$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $11_1 = $2_1; - $11$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $20_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $20_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $14$hi = i64toi32_i32$0; - i64toi32_i32$0 = $11$hi; - i64toi32_i32$2 = $11_1; - i64toi32_i32$1 = $14$hi; - i64toi32_i32$3 = $20_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $15_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $15$hi = i64toi32_i32$1; - i64toi32_i32$1 = $9$hi; - i64toi32_i32$2 = $15$hi; - return $23($9_1 | 0, i64toi32_i32$1 | 0, $15_1 | 0, i64toi32_i32$2 | 0) | 0 | 0; - } - - function legalstub$24($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19_1 = 0, $20_1 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11_1 = 0, $11$hi = 0, $14$hi = 0, $15_1 = 0, $15$hi = 0; - i64toi32_i32$0 = 0; - $5_1 = $0_1; - $5$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $19_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $19_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $8$hi = i64toi32_i32$1; - i64toi32_i32$1 = $5$hi; - i64toi32_i32$0 = $5_1; - i64toi32_i32$2 = $8$hi; - i64toi32_i32$3 = $19_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $9$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $11_1 = $2_1; - $11$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $20_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $20_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $14$hi = i64toi32_i32$0; - i64toi32_i32$0 = $11$hi; - i64toi32_i32$2 = $11_1; - i64toi32_i32$1 = $14$hi; - i64toi32_i32$3 = $20_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $15_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $15$hi = i64toi32_i32$1; - i64toi32_i32$1 = $9$hi; - i64toi32_i32$2 = $15$hi; - return $24($9_1 | 0, i64toi32_i32$1 | 0, $15_1 | 0, i64toi32_i32$2 | 0) | 0 | 0; - } - - function legalstub$25($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19_1 = 0, $20_1 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11_1 = 0, $11$hi = 0, $14$hi = 0, $15_1 = 0, $15$hi = 0; - i64toi32_i32$0 = 0; - $5_1 = $0_1; - $5$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $19_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $19_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $8$hi = i64toi32_i32$1; - i64toi32_i32$1 = $5$hi; - i64toi32_i32$0 = $5_1; - i64toi32_i32$2 = $8$hi; - i64toi32_i32$3 = $19_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $9$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $11_1 = $2_1; - $11$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $20_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $20_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $14$hi = i64toi32_i32$0; - i64toi32_i32$0 = $11$hi; - i64toi32_i32$2 = $11_1; - i64toi32_i32$1 = $14$hi; - i64toi32_i32$3 = $20_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $15_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $15$hi = i64toi32_i32$1; - i64toi32_i32$1 = $9$hi; - i64toi32_i32$2 = $15$hi; - return $25($9_1 | 0, i64toi32_i32$1 | 0, $15_1 | 0, i64toi32_i32$2 | 0) | 0 | 0; - } - - function legalstub$26($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19_1 = 0, $20_1 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11_1 = 0, $11$hi = 0, $14$hi = 0, $15_1 = 0, $15$hi = 0; - i64toi32_i32$0 = 0; - $5_1 = $0_1; - $5$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $19_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $19_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $8$hi = i64toi32_i32$1; - i64toi32_i32$1 = $5$hi; - i64toi32_i32$0 = $5_1; - i64toi32_i32$2 = $8$hi; - i64toi32_i32$3 = $19_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $9$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $11_1 = $2_1; - $11$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $20_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $20_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $14$hi = i64toi32_i32$0; - i64toi32_i32$0 = $11$hi; - i64toi32_i32$2 = $11_1; - i64toi32_i32$1 = $14$hi; - i64toi32_i32$3 = $20_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $15_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $15$hi = i64toi32_i32$1; - i64toi32_i32$1 = $9$hi; - i64toi32_i32$2 = $15$hi; - return $26($9_1 | 0, i64toi32_i32$1 | 0, $15_1 | 0, i64toi32_i32$2 | 0) | 0 | 0; - } - - function legalstub$27($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19_1 = 0, $20_1 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11_1 = 0, $11$hi = 0, $14$hi = 0, $15_1 = 0, $15$hi = 0; - i64toi32_i32$0 = 0; - $5_1 = $0_1; - $5$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $19_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $19_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $8$hi = i64toi32_i32$1; - i64toi32_i32$1 = $5$hi; - i64toi32_i32$0 = $5_1; - i64toi32_i32$2 = $8$hi; - i64toi32_i32$3 = $19_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $9$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $11_1 = $2_1; - $11$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $20_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $20_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $14$hi = i64toi32_i32$0; - i64toi32_i32$0 = $11$hi; - i64toi32_i32$2 = $11_1; - i64toi32_i32$1 = $14$hi; - i64toi32_i32$3 = $20_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $15_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $15$hi = i64toi32_i32$1; - i64toi32_i32$1 = $9$hi; - i64toi32_i32$2 = $15$hi; - return $27($9_1 | 0, i64toi32_i32$1 | 0, $15_1 | 0, i64toi32_i32$2 | 0) | 0 | 0; - } - - function legalstub$28($0_1, $1_1, $2_1, $3_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19_1 = 0, $20_1 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11_1 = 0, $11$hi = 0, $14$hi = 0, $15_1 = 0, $15$hi = 0; - i64toi32_i32$0 = 0; - $5_1 = $0_1; - $5$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $19_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $19_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $8$hi = i64toi32_i32$1; - i64toi32_i32$1 = $5$hi; - i64toi32_i32$0 = $5_1; - i64toi32_i32$2 = $8$hi; - i64toi32_i32$3 = $19_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $9$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $11_1 = $2_1; - $11$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $20_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $20_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $14$hi = i64toi32_i32$0; - i64toi32_i32$0 = $11$hi; - i64toi32_i32$2 = $11_1; - i64toi32_i32$1 = $14$hi; - i64toi32_i32$3 = $20_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $15_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $15$hi = i64toi32_i32$1; - i64toi32_i32$1 = $9$hi; - i64toi32_i32$2 = $15$hi; - return $28($9_1 | 0, i64toi32_i32$1 | 0, $15_1 | 0, i64toi32_i32$2 | 0) | 0 | 0; - } - - function legalfunc$wasm2js_scratch_load_i64() { - var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $1_1 = legalimport$wasm2js_scratch_load_i64() | 0; - $1$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = getTempRet0() | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $8_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $8_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $4$hi = i64toi32_i32$1; - i64toi32_i32$1 = $1$hi; - i64toi32_i32$0 = $1_1; - i64toi32_i32$2 = $4$hi; - i64toi32_i32$3 = $8_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - i64toi32_i32$0 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$2; - return i64toi32_i32$0 | 0; - } - - function legalfunc$wasm2js_scratch_store_i64($0_1, $0$hi) { - $0_1 = $0_1 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $2_1 = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $0$hi; - $2_1 = $0_1; - i64toi32_i32$2 = $0_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $8_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - legalimport$wasm2js_scratch_store_i64($2_1 | 0, $8_1 | 0); - } - - function _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE(var$0, var$0$hi, var$1, var$1$hi) { - var$0 = var$0 | 0; - var$0$hi = var$0$hi | 0; - var$1 = var$1 | 0; - var$1$hi = var$1$hi | 0; - var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, var$2 = 0, i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, var$3 = 0, var$4 = 0, var$5 = 0, $21_1 = 0, $22_1 = 0, var$6 = 0, $24_1 = 0, $17_1 = 0, $18_1 = 0, $23_1 = 0, $29 = 0, $45 = 0, $56$hi = 0, $62$hi = 0; - i64toi32_i32$0 = var$1$hi; - var$2 = var$1; - var$4 = var$2 >>> 16 | 0; - i64toi32_i32$0 = var$0$hi; - var$3 = var$0; - var$5 = var$3 >>> 16 | 0; - $17_1 = Math_imul(var$4, var$5); - $18_1 = var$2; - i64toi32_i32$2 = var$3; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $21_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $21_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - $23_1 = $17_1 + Math_imul($18_1, $21_1) | 0; - i64toi32_i32$1 = var$1$hi; - i64toi32_i32$0 = var$1; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $22_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $22_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - $29 = $23_1 + Math_imul($22_1, var$3) | 0; - var$2 = var$2 & 65535 | 0; - var$3 = var$3 & 65535 | 0; - var$6 = Math_imul(var$2, var$3); - var$2 = (var$6 >>> 16 | 0) + Math_imul(var$2, var$5) | 0; - $45 = $29 + (var$2 >>> 16 | 0) | 0; - var$2 = (var$2 & 65535 | 0) + Math_imul(var$4, var$3) | 0; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $45 + (var$2 >>> 16 | 0) | 0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $24_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $24_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $56$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - $62$hi = i64toi32_i32$0; - i64toi32_i32$0 = $56$hi; - i64toi32_i32$2 = $24_1; - i64toi32_i32$1 = $62$hi; - i64toi32_i32$3 = var$2 << 16 | 0 | (var$6 & 65535 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - i64toi32_i32$2 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$2 | 0; - } - - function _ZN17compiler_builtins3int4sdiv3Div3div17he78fc483e41d7ec7E(var$0, var$0$hi, var$1, var$1$hi) { - var$0 = var$0 | 0; - var$0$hi = var$0$hi | 0; - var$1 = var$1 | 0; - var$1$hi = var$1$hi | 0; - var i64toi32_i32$1 = 0, i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$2$hi = 0, i64toi32_i32$6 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $7$hi = 0, $9_1 = 0, $9$hi = 0, $14$hi = 0, $16$hi = 0, $17_1 = 0, $17$hi = 0, $23$hi = 0; - i64toi32_i32$0 = var$0$hi; - i64toi32_i32$2 = var$0; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 63; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$0 >> 31 | 0; - $21_1 = i64toi32_i32$0 >> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >> i64toi32_i32$4 | 0; - $21_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - var$2 = $21_1; - var$2$hi = i64toi32_i32$1; - i64toi32_i32$1 = var$0$hi; - i64toi32_i32$1 = var$2$hi; - i64toi32_i32$0 = var$2; - i64toi32_i32$2 = var$0$hi; - i64toi32_i32$3 = var$0; - i64toi32_i32$2 = i64toi32_i32$1 ^ i64toi32_i32$2 | 0; - $7$hi = i64toi32_i32$2; - i64toi32_i32$2 = i64toi32_i32$1; - i64toi32_i32$2 = $7$hi; - i64toi32_i32$1 = i64toi32_i32$0 ^ i64toi32_i32$3 | 0; - i64toi32_i32$0 = var$2$hi; - i64toi32_i32$3 = var$2; - i64toi32_i32$4 = i64toi32_i32$1 - i64toi32_i32$3 | 0; - i64toi32_i32$6 = i64toi32_i32$1 >>> 0 < i64toi32_i32$3 >>> 0; - i64toi32_i32$5 = i64toi32_i32$6 + i64toi32_i32$0 | 0; - i64toi32_i32$5 = i64toi32_i32$2 - i64toi32_i32$5 | 0; - $9_1 = i64toi32_i32$4; - $9$hi = i64toi32_i32$5; - i64toi32_i32$5 = var$1$hi; - i64toi32_i32$2 = var$1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 63; - i64toi32_i32$0 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$5 >> 31 | 0; - $22_1 = i64toi32_i32$5 >> i64toi32_i32$0 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$5 >> i64toi32_i32$0 | 0; - $22_1 = (((1 << i64toi32_i32$0 | 0) - 1 | 0) & i64toi32_i32$5 | 0) << (32 - i64toi32_i32$0 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$0 | 0) | 0; - } - var$2 = $22_1; - var$2$hi = i64toi32_i32$1; - i64toi32_i32$1 = var$1$hi; - i64toi32_i32$1 = var$2$hi; - i64toi32_i32$5 = var$2; - i64toi32_i32$2 = var$1$hi; - i64toi32_i32$3 = var$1; - i64toi32_i32$2 = i64toi32_i32$1 ^ i64toi32_i32$2 | 0; - $14$hi = i64toi32_i32$2; - i64toi32_i32$2 = i64toi32_i32$1; - i64toi32_i32$2 = $14$hi; - i64toi32_i32$1 = i64toi32_i32$5 ^ i64toi32_i32$3 | 0; - i64toi32_i32$5 = var$2$hi; - i64toi32_i32$3 = var$2; - i64toi32_i32$0 = i64toi32_i32$1 - i64toi32_i32$3 | 0; - i64toi32_i32$6 = i64toi32_i32$1 >>> 0 < i64toi32_i32$3 >>> 0; - i64toi32_i32$4 = i64toi32_i32$6 + i64toi32_i32$5 | 0; - i64toi32_i32$4 = i64toi32_i32$2 - i64toi32_i32$4 | 0; - $16$hi = i64toi32_i32$4; - i64toi32_i32$4 = $9$hi; - i64toi32_i32$1 = $16$hi; - i64toi32_i32$1 = __wasm_i64_udiv($9_1 | 0, i64toi32_i32$4 | 0, i64toi32_i32$0 | 0, i64toi32_i32$1 | 0) | 0; - i64toi32_i32$4 = i64toi32_i32$HIGH_BITS; - $17_1 = i64toi32_i32$1; - $17$hi = i64toi32_i32$4; - i64toi32_i32$4 = var$1$hi; - i64toi32_i32$4 = var$0$hi; - i64toi32_i32$4 = var$1$hi; - i64toi32_i32$2 = var$1; - i64toi32_i32$1 = var$0$hi; - i64toi32_i32$3 = var$0; - i64toi32_i32$1 = i64toi32_i32$4 ^ i64toi32_i32$1 | 0; - i64toi32_i32$4 = i64toi32_i32$2 ^ i64toi32_i32$3 | 0; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 63; - i64toi32_i32$5 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = i64toi32_i32$1 >> 31 | 0; - $23_1 = i64toi32_i32$1 >> i64toi32_i32$5 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >> i64toi32_i32$5 | 0; - $23_1 = (((1 << i64toi32_i32$5 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$5 | 0) | 0 | (i64toi32_i32$4 >>> i64toi32_i32$5 | 0) | 0; - } - var$0 = $23_1; - var$0$hi = i64toi32_i32$2; - i64toi32_i32$2 = $17$hi; - i64toi32_i32$1 = $17_1; - i64toi32_i32$4 = var$0$hi; - i64toi32_i32$3 = var$0; - i64toi32_i32$4 = i64toi32_i32$2 ^ i64toi32_i32$4 | 0; - $23$hi = i64toi32_i32$4; - i64toi32_i32$4 = var$0$hi; - i64toi32_i32$4 = $23$hi; - i64toi32_i32$2 = i64toi32_i32$1 ^ i64toi32_i32$3 | 0; - i64toi32_i32$1 = var$0$hi; - i64toi32_i32$5 = i64toi32_i32$2 - i64toi32_i32$3 | 0; - i64toi32_i32$6 = i64toi32_i32$2 >>> 0 < i64toi32_i32$3 >>> 0; - i64toi32_i32$0 = i64toi32_i32$6 + i64toi32_i32$1 | 0; - i64toi32_i32$0 = i64toi32_i32$4 - i64toi32_i32$0 | 0; - i64toi32_i32$2 = i64toi32_i32$5; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return i64toi32_i32$2 | 0; - } - - function _ZN17compiler_builtins3int4sdiv3Mod4mod_17h2cbb7bbf36e41d68E(var$0, var$0$hi, var$1, var$1$hi) { - var$0 = var$0 | 0; - var$0$hi = var$0$hi | 0; - var$1 = var$1 | 0; - var$1$hi = var$1$hi | 0; - var i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, i64toi32_i32$5 = 0, var$2$hi = 0, i64toi32_i32$6 = 0, var$2 = 0, $20_1 = 0, $21_1 = 0, $7$hi = 0, $9_1 = 0, $9$hi = 0, $14$hi = 0, $16$hi = 0, $17$hi = 0, $19$hi = 0; - i64toi32_i32$0 = var$0$hi; - i64toi32_i32$2 = var$0; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 63; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$0 >> 31 | 0; - $20_1 = i64toi32_i32$0 >> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >> i64toi32_i32$4 | 0; - $20_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - var$2 = $20_1; - var$2$hi = i64toi32_i32$1; - i64toi32_i32$1 = var$0$hi; - i64toi32_i32$1 = var$2$hi; - i64toi32_i32$0 = var$2; - i64toi32_i32$2 = var$0$hi; - i64toi32_i32$3 = var$0; - i64toi32_i32$2 = i64toi32_i32$1 ^ i64toi32_i32$2 | 0; - $7$hi = i64toi32_i32$2; - i64toi32_i32$2 = i64toi32_i32$1; - i64toi32_i32$2 = $7$hi; - i64toi32_i32$1 = i64toi32_i32$0 ^ i64toi32_i32$3 | 0; - i64toi32_i32$0 = var$2$hi; - i64toi32_i32$3 = var$2; - i64toi32_i32$4 = i64toi32_i32$1 - i64toi32_i32$3 | 0; - i64toi32_i32$6 = i64toi32_i32$1 >>> 0 < i64toi32_i32$3 >>> 0; - i64toi32_i32$5 = i64toi32_i32$6 + i64toi32_i32$0 | 0; - i64toi32_i32$5 = i64toi32_i32$2 - i64toi32_i32$5 | 0; - $9_1 = i64toi32_i32$4; - $9$hi = i64toi32_i32$5; - i64toi32_i32$5 = var$1$hi; - i64toi32_i32$2 = var$1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 63; - i64toi32_i32$0 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$5 >> 31 | 0; - $21_1 = i64toi32_i32$5 >> i64toi32_i32$0 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$5 >> i64toi32_i32$0 | 0; - $21_1 = (((1 << i64toi32_i32$0 | 0) - 1 | 0) & i64toi32_i32$5 | 0) << (32 - i64toi32_i32$0 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$0 | 0) | 0; - } - var$0 = $21_1; - var$0$hi = i64toi32_i32$1; - i64toi32_i32$1 = var$1$hi; - i64toi32_i32$1 = var$0$hi; - i64toi32_i32$5 = var$0; - i64toi32_i32$2 = var$1$hi; - i64toi32_i32$3 = var$1; - i64toi32_i32$2 = i64toi32_i32$1 ^ i64toi32_i32$2 | 0; - $14$hi = i64toi32_i32$2; - i64toi32_i32$2 = i64toi32_i32$1; - i64toi32_i32$2 = $14$hi; - i64toi32_i32$1 = i64toi32_i32$5 ^ i64toi32_i32$3 | 0; - i64toi32_i32$5 = var$0$hi; - i64toi32_i32$3 = var$0; - i64toi32_i32$0 = i64toi32_i32$1 - i64toi32_i32$3 | 0; - i64toi32_i32$6 = i64toi32_i32$1 >>> 0 < i64toi32_i32$3 >>> 0; - i64toi32_i32$4 = i64toi32_i32$6 + i64toi32_i32$5 | 0; - i64toi32_i32$4 = i64toi32_i32$2 - i64toi32_i32$4 | 0; - $16$hi = i64toi32_i32$4; - i64toi32_i32$4 = $9$hi; - i64toi32_i32$1 = $16$hi; - i64toi32_i32$1 = __wasm_i64_urem($9_1 | 0, i64toi32_i32$4 | 0, i64toi32_i32$0 | 0, i64toi32_i32$1 | 0) | 0; - i64toi32_i32$4 = i64toi32_i32$HIGH_BITS; - $17$hi = i64toi32_i32$4; - i64toi32_i32$4 = var$2$hi; - i64toi32_i32$4 = $17$hi; - i64toi32_i32$2 = i64toi32_i32$1; - i64toi32_i32$1 = var$2$hi; - i64toi32_i32$3 = var$2; - i64toi32_i32$1 = i64toi32_i32$4 ^ i64toi32_i32$1 | 0; - $19$hi = i64toi32_i32$1; - i64toi32_i32$1 = var$2$hi; - i64toi32_i32$1 = $19$hi; - i64toi32_i32$4 = i64toi32_i32$2 ^ i64toi32_i32$3 | 0; - i64toi32_i32$2 = var$2$hi; - i64toi32_i32$5 = i64toi32_i32$4 - i64toi32_i32$3 | 0; - i64toi32_i32$6 = i64toi32_i32$4 >>> 0 < i64toi32_i32$3 >>> 0; - i64toi32_i32$0 = i64toi32_i32$6 + i64toi32_i32$2 | 0; - i64toi32_i32$0 = i64toi32_i32$1 - i64toi32_i32$0 | 0; - i64toi32_i32$4 = i64toi32_i32$5; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return i64toi32_i32$4 | 0; - } - - function _ZN17compiler_builtins3int4udiv10divmod_u6417h6026910b5ed08e40E(var$0, var$0$hi, var$1, var$1$hi) { - var$0 = var$0 | 0; - var$0$hi = var$0$hi | 0; - var$1 = var$1 | 0; - var$1$hi = var$1$hi | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$5 = 0, var$2 = 0, var$3 = 0, var$4 = 0, var$5 = 0, var$5$hi = 0, var$6 = 0, var$6$hi = 0, i64toi32_i32$6 = 0, $37 = 0, $38 = 0, $39 = 0, $40 = 0, $41 = 0, $42 = 0, $43 = 0, $44 = 0, var$8$hi = 0, $45 = 0, $46 = 0, $47 = 0, $48 = 0, var$7$hi = 0, $49 = 0, $63$hi = 0, $65 = 0, $65$hi = 0, $120$hi = 0, $129$hi = 0, $134$hi = 0, var$8 = 0, $140 = 0, $140$hi = 0, $142$hi = 0, $144 = 0, $144$hi = 0, $151 = 0, $151$hi = 0, $154$hi = 0, var$7 = 0, $165$hi = 0; - label$1 : { - label$2 : { - label$3 : { - label$4 : { - label$5 : { - label$6 : { - label$7 : { - label$8 : { - label$9 : { - label$10 : { - label$11 : { - i64toi32_i32$0 = var$0$hi; - i64toi32_i32$2 = var$0; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $37 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $37 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - var$2 = $37; - if (var$2) { - block : { - i64toi32_i32$1 = var$1$hi; - var$3 = var$1; - if (!var$3) { - break label$11 - } - i64toi32_i32$1 = var$1$hi; - i64toi32_i32$0 = var$1; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $38 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $38 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - var$4 = $38; - if (!var$4) { - break label$9 - } - var$2 = Math_clz32(var$4) - Math_clz32(var$2) | 0; - if (var$2 >>> 0 <= 31 >>> 0) { - break label$8 - } - break label$2; - } - } - i64toi32_i32$2 = var$1$hi; - i64toi32_i32$1 = var$1; - i64toi32_i32$0 = 1; - i64toi32_i32$3 = 0; - if (i64toi32_i32$2 >>> 0 > i64toi32_i32$0 >>> 0 | ((i64toi32_i32$2 | 0) == (i64toi32_i32$0 | 0) & i64toi32_i32$1 >>> 0 >= i64toi32_i32$3 >>> 0 | 0) | 0) { - break label$2 - } - i64toi32_i32$1 = var$0$hi; - var$2 = var$0; - i64toi32_i32$1 = var$1$hi; - var$3 = var$1; - var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; - i64toi32_i32$1 = 0; - legalfunc$wasm2js_scratch_store_i64(var$0 - Math_imul(var$2, var$3) | 0 | 0, i64toi32_i32$1 | 0); - i64toi32_i32$1 = 0; - i64toi32_i32$2 = var$2; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$2 | 0; - } - i64toi32_i32$2 = var$1$hi; - i64toi32_i32$3 = var$1; - i64toi32_i32$1 = 0; - i64toi32_i32$0 = 32; - i64toi32_i32$4 = i64toi32_i32$0 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$0 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $39 = i64toi32_i32$2 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$2 >>> i64toi32_i32$4 | 0; - $39 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$2 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$3 >>> i64toi32_i32$4 | 0) | 0; - } - var$3 = $39; - i64toi32_i32$1 = var$0$hi; - if (!var$0) { - break label$7 - } - if (!var$3) { - break label$6 - } - var$4 = var$3 + -1 | 0; - if (var$4 & var$3 | 0) { - break label$6 - } - i64toi32_i32$1 = 0; - i64toi32_i32$2 = var$4 & var$2 | 0; - i64toi32_i32$3 = 0; - i64toi32_i32$0 = 32; - i64toi32_i32$4 = i64toi32_i32$0 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$0 & 63 | 0) >>> 0) { - i64toi32_i32$3 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $40 = 0; - } else { - i64toi32_i32$3 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$1 << i64toi32_i32$4 | 0) | 0; - $40 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $63$hi = i64toi32_i32$3; - i64toi32_i32$3 = var$0$hi; - i64toi32_i32$1 = var$0; - i64toi32_i32$2 = 0; - i64toi32_i32$0 = -1; - i64toi32_i32$2 = i64toi32_i32$3 & i64toi32_i32$2 | 0; - $65 = i64toi32_i32$1 & i64toi32_i32$0 | 0; - $65$hi = i64toi32_i32$2; - i64toi32_i32$2 = $63$hi; - i64toi32_i32$3 = $40; - i64toi32_i32$1 = $65$hi; - i64toi32_i32$0 = $65; - i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; - legalfunc$wasm2js_scratch_store_i64(i64toi32_i32$3 | i64toi32_i32$0 | 0 | 0, i64toi32_i32$1 | 0); - i64toi32_i32$1 = 0; - i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$3 | 0; - } - } - var$4 = var$3 + -1 | 0; - if (!(var$4 & var$3 | 0)) { - break label$5 - } - var$2 = (Math_clz32(var$3) + 33 | 0) - Math_clz32(var$2) | 0; - var$3 = 0 - var$2 | 0; - break label$3; - } - var$3 = 63 - var$2 | 0; - var$2 = var$2 + 1 | 0; - break label$3; - } - var$4 = (var$2 >>> 0) / (var$3 >>> 0) | 0; - i64toi32_i32$3 = 0; - i64toi32_i32$2 = var$2 - Math_imul(var$4, var$3) | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$0 = 32; - i64toi32_i32$4 = i64toi32_i32$0 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$0 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $41 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$3 << i64toi32_i32$4 | 0) | 0; - $41 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - legalfunc$wasm2js_scratch_store_i64($41 | 0, i64toi32_i32$1 | 0); - i64toi32_i32$1 = 0; - i64toi32_i32$2 = var$4; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$2 | 0; - } - var$2 = Math_clz32(var$3) - Math_clz32(var$2) | 0; - if (var$2 >>> 0 < 31 >>> 0) { - break label$4 - } - break label$2; - } - i64toi32_i32$2 = var$0$hi; - i64toi32_i32$2 = 0; - legalfunc$wasm2js_scratch_store_i64(var$4 & var$0 | 0 | 0, i64toi32_i32$2 | 0); - if ((var$3 | 0) == (1 | 0)) { - break label$1 - } - i64toi32_i32$2 = var$0$hi; - i64toi32_i32$2 = 0; - $120$hi = i64toi32_i32$2; - i64toi32_i32$2 = var$0$hi; - i64toi32_i32$3 = var$0; - i64toi32_i32$1 = $120$hi; - i64toi32_i32$0 = __wasm_ctz_i32(var$3 | 0) | 0; - i64toi32_i32$4 = i64toi32_i32$0 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$0 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $42 = i64toi32_i32$2 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$2 >>> i64toi32_i32$4 | 0; - $42 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$2 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$3 >>> i64toi32_i32$4 | 0) | 0; - } - i64toi32_i32$3 = $42; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$3 | 0; - } - var$3 = 63 - var$2 | 0; - var$2 = var$2 + 1 | 0; - } - i64toi32_i32$3 = var$0$hi; - i64toi32_i32$3 = 0; - $129$hi = i64toi32_i32$3; - i64toi32_i32$3 = var$0$hi; - i64toi32_i32$2 = var$0; - i64toi32_i32$1 = $129$hi; - i64toi32_i32$0 = var$2 & 63 | 0; - i64toi32_i32$4 = i64toi32_i32$0 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$0 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $43 = i64toi32_i32$3 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$3 >>> i64toi32_i32$4 | 0; - $43 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$3 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - var$5 = $43; - var$5$hi = i64toi32_i32$1; - i64toi32_i32$1 = var$0$hi; - i64toi32_i32$1 = 0; - $134$hi = i64toi32_i32$1; - i64toi32_i32$1 = var$0$hi; - i64toi32_i32$3 = var$0; - i64toi32_i32$2 = $134$hi; - i64toi32_i32$0 = var$3 & 63 | 0; - i64toi32_i32$4 = i64toi32_i32$0 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$0 & 63 | 0) >>> 0) { - i64toi32_i32$2 = i64toi32_i32$3 << i64toi32_i32$4 | 0; - $44 = 0; - } else { - i64toi32_i32$2 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$3 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$1 << i64toi32_i32$4 | 0) | 0; - $44 = i64toi32_i32$3 << i64toi32_i32$4 | 0; - } - var$0 = $44; - var$0$hi = i64toi32_i32$2; - label$13 : { - if (var$2) { - block3 : { - i64toi32_i32$2 = var$1$hi; - i64toi32_i32$1 = var$1; - i64toi32_i32$3 = -1; - i64toi32_i32$0 = -1; - i64toi32_i32$4 = i64toi32_i32$1 + i64toi32_i32$0 | 0; - i64toi32_i32$5 = i64toi32_i32$2 + i64toi32_i32$3 | 0; - if (i64toi32_i32$4 >>> 0 < i64toi32_i32$0 >>> 0) { - i64toi32_i32$5 = i64toi32_i32$5 + 1 | 0 - } - var$8 = i64toi32_i32$4; - var$8$hi = i64toi32_i32$5; - label$15 : while (1) { - i64toi32_i32$5 = var$5$hi; - i64toi32_i32$2 = var$5; - i64toi32_i32$1 = 0; - i64toi32_i32$0 = 1; - i64toi32_i32$3 = i64toi32_i32$0 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$0 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$3 | 0; - $45 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$3 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$3 | 0) | 0) | 0 | (i64toi32_i32$5 << i64toi32_i32$3 | 0) | 0; - $45 = i64toi32_i32$2 << i64toi32_i32$3 | 0; - } - $140 = $45; - $140$hi = i64toi32_i32$1; - i64toi32_i32$1 = var$0$hi; - i64toi32_i32$5 = var$0; - i64toi32_i32$2 = 0; - i64toi32_i32$0 = 63; - i64toi32_i32$3 = i64toi32_i32$0 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$0 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $46 = i64toi32_i32$1 >>> i64toi32_i32$3 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$3 | 0; - $46 = (((1 << i64toi32_i32$3 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$3 | 0) | 0 | (i64toi32_i32$5 >>> i64toi32_i32$3 | 0) | 0; - } - $142$hi = i64toi32_i32$2; - i64toi32_i32$2 = $140$hi; - i64toi32_i32$1 = $140; - i64toi32_i32$5 = $142$hi; - i64toi32_i32$0 = $46; - i64toi32_i32$5 = i64toi32_i32$2 | i64toi32_i32$5 | 0; - var$5 = i64toi32_i32$1 | i64toi32_i32$0 | 0; - var$5$hi = i64toi32_i32$5; - $144 = var$5; - $144$hi = i64toi32_i32$5; - i64toi32_i32$5 = var$8$hi; - i64toi32_i32$5 = var$5$hi; - i64toi32_i32$5 = var$8$hi; - i64toi32_i32$2 = var$8; - i64toi32_i32$1 = var$5$hi; - i64toi32_i32$0 = var$5; - i64toi32_i32$3 = i64toi32_i32$2 - i64toi32_i32$0 | 0; - i64toi32_i32$6 = i64toi32_i32$2 >>> 0 < i64toi32_i32$0 >>> 0; - i64toi32_i32$4 = i64toi32_i32$6 + i64toi32_i32$1 | 0; - i64toi32_i32$4 = i64toi32_i32$5 - i64toi32_i32$4 | 0; - i64toi32_i32$5 = i64toi32_i32$3; - i64toi32_i32$2 = 0; - i64toi32_i32$0 = 63; - i64toi32_i32$1 = i64toi32_i32$0 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$0 & 63 | 0) >>> 0) { - i64toi32_i32$2 = i64toi32_i32$4 >> 31 | 0; - $47 = i64toi32_i32$4 >> i64toi32_i32$1 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$4 >> i64toi32_i32$1 | 0; - $47 = (((1 << i64toi32_i32$1 | 0) - 1 | 0) & i64toi32_i32$4 | 0) << (32 - i64toi32_i32$1 | 0) | 0 | (i64toi32_i32$5 >>> i64toi32_i32$1 | 0) | 0; - } - var$6 = $47; - var$6$hi = i64toi32_i32$2; - i64toi32_i32$2 = var$1$hi; - i64toi32_i32$2 = var$6$hi; - i64toi32_i32$4 = var$6; - i64toi32_i32$5 = var$1$hi; - i64toi32_i32$0 = var$1; - i64toi32_i32$5 = i64toi32_i32$2 & i64toi32_i32$5 | 0; - $151 = i64toi32_i32$4 & i64toi32_i32$0 | 0; - $151$hi = i64toi32_i32$5; - i64toi32_i32$5 = $144$hi; - i64toi32_i32$2 = $144; - i64toi32_i32$4 = $151$hi; - i64toi32_i32$0 = $151; - i64toi32_i32$1 = i64toi32_i32$2 - i64toi32_i32$0 | 0; - i64toi32_i32$6 = i64toi32_i32$2 >>> 0 < i64toi32_i32$0 >>> 0; - i64toi32_i32$3 = i64toi32_i32$6 + i64toi32_i32$4 | 0; - i64toi32_i32$3 = i64toi32_i32$5 - i64toi32_i32$3 | 0; - var$5 = i64toi32_i32$1; - var$5$hi = i64toi32_i32$3; - i64toi32_i32$3 = var$0$hi; - i64toi32_i32$5 = var$0; - i64toi32_i32$2 = 0; - i64toi32_i32$0 = 1; - i64toi32_i32$4 = i64toi32_i32$0 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$0 & 63 | 0) >>> 0) { - i64toi32_i32$2 = i64toi32_i32$5 << i64toi32_i32$4 | 0; - $48 = 0; - } else { - i64toi32_i32$2 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$5 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$3 << i64toi32_i32$4 | 0) | 0; - $48 = i64toi32_i32$5 << i64toi32_i32$4 | 0; - } - $154$hi = i64toi32_i32$2; - i64toi32_i32$2 = var$7$hi; - i64toi32_i32$2 = $154$hi; - i64toi32_i32$3 = $48; - i64toi32_i32$5 = var$7$hi; - i64toi32_i32$0 = var$7; - i64toi32_i32$5 = i64toi32_i32$2 | i64toi32_i32$5 | 0; - var$0 = i64toi32_i32$3 | i64toi32_i32$0 | 0; - var$0$hi = i64toi32_i32$5; - i64toi32_i32$5 = var$6$hi; - i64toi32_i32$2 = var$6; - i64toi32_i32$3 = 0; - i64toi32_i32$0 = 1; - i64toi32_i32$3 = i64toi32_i32$5 & i64toi32_i32$3 | 0; - var$6 = i64toi32_i32$2 & i64toi32_i32$0 | 0; - var$6$hi = i64toi32_i32$3; - var$7 = var$6; - var$7$hi = i64toi32_i32$3; - var$2 = var$2 + -1 | 0; - if (var$2) { - continue label$15 - } - break label$15; - }; - break label$13; - } - } - } - i64toi32_i32$3 = var$5$hi; - legalfunc$wasm2js_scratch_store_i64(var$5 | 0, i64toi32_i32$3 | 0); - i64toi32_i32$3 = var$0$hi; - i64toi32_i32$5 = var$0; - i64toi32_i32$2 = 0; - i64toi32_i32$0 = 1; - i64toi32_i32$4 = i64toi32_i32$0 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$0 & 63 | 0) >>> 0) { - i64toi32_i32$2 = i64toi32_i32$5 << i64toi32_i32$4 | 0; - $49 = 0; - } else { - i64toi32_i32$2 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$5 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$3 << i64toi32_i32$4 | 0) | 0; - $49 = i64toi32_i32$5 << i64toi32_i32$4 | 0; - } - $165$hi = i64toi32_i32$2; - i64toi32_i32$2 = var$6$hi; - i64toi32_i32$2 = $165$hi; - i64toi32_i32$3 = $49; - i64toi32_i32$5 = var$6$hi; - i64toi32_i32$0 = var$6; - i64toi32_i32$5 = i64toi32_i32$2 | i64toi32_i32$5 | 0; - i64toi32_i32$3 = i64toi32_i32$3 | i64toi32_i32$0 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$5; - return i64toi32_i32$3 | 0; - } - i64toi32_i32$3 = var$0$hi; - legalfunc$wasm2js_scratch_store_i64(var$0 | 0, i64toi32_i32$3 | 0); - i64toi32_i32$3 = 0; - var$0 = 0; - var$0$hi = i64toi32_i32$3; - } - i64toi32_i32$3 = var$0$hi; - i64toi32_i32$5 = var$0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$3; - return i64toi32_i32$5 | 0; - } - - function __wasm_ctz_i64(var$0, var$0$hi) { - var$0 = var$0 | 0; - var$0$hi = var$0$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, i64toi32_i32$5 = 0, i64toi32_i32$4 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, $10_1 = 0, $5$hi = 0, $8$hi = 0; - i64toi32_i32$0 = var$0$hi; - if (!!(var$0 | i64toi32_i32$0 | 0)) { - i64toi32_i32$0 = var$0$hi; - i64toi32_i32$2 = var$0; - i64toi32_i32$1 = -1; - i64toi32_i32$3 = -1; - i64toi32_i32$4 = i64toi32_i32$2 + i64toi32_i32$3 | 0; - i64toi32_i32$5 = i64toi32_i32$0 + i64toi32_i32$1 | 0; - if (i64toi32_i32$4 >>> 0 < i64toi32_i32$3 >>> 0) { - i64toi32_i32$5 = i64toi32_i32$5 + 1 | 0 - } - $5$hi = i64toi32_i32$5; - i64toi32_i32$5 = var$0$hi; - i64toi32_i32$5 = $5$hi; - i64toi32_i32$0 = i64toi32_i32$4; - i64toi32_i32$2 = var$0$hi; - i64toi32_i32$3 = var$0; - i64toi32_i32$2 = i64toi32_i32$5 ^ i64toi32_i32$2 | 0; - i64toi32_i32$0 = i64toi32_i32$0 ^ i64toi32_i32$3 | 0; - i64toi32_i32$3 = Math_clz32(i64toi32_i32$2); - i64toi32_i32$5 = 0; - if ((i64toi32_i32$3 | 0) == (32 | 0)) { - $10_1 = Math_clz32(i64toi32_i32$0) + 32 | 0 - } else { - $10_1 = i64toi32_i32$3 - } - $8$hi = i64toi32_i32$5; - i64toi32_i32$5 = 0; - i64toi32_i32$0 = 63; - i64toi32_i32$2 = $8$hi; - i64toi32_i32$3 = $10_1; - i64toi32_i32$1 = i64toi32_i32$0 - i64toi32_i32$3 | 0; - i64toi32_i32$4 = (i64toi32_i32$0 >>> 0 < i64toi32_i32$3 >>> 0) + i64toi32_i32$2 | 0; - i64toi32_i32$4 = i64toi32_i32$5 - i64toi32_i32$4 | 0; - i64toi32_i32$0 = i64toi32_i32$1; - i64toi32_i32$HIGH_BITS = i64toi32_i32$4; - return i64toi32_i32$0 | 0; - } - i64toi32_i32$0 = 0; - i64toi32_i32$4 = 64; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return i64toi32_i32$4 | 0; - } - - function __wasm_i64_mul(var$0, var$0$hi, var$1, var$1$hi) { - var$0 = var$0 | 0; - var$0$hi = var$0$hi | 0; - var$1 = var$1 | 0; - var$1$hi = var$1$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = var$0$hi; - i64toi32_i32$0 = var$1$hi; - i64toi32_i32$0 = var$0$hi; - i64toi32_i32$1 = var$1$hi; - i64toi32_i32$1 = _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE(var$0 | 0, i64toi32_i32$0 | 0, var$1 | 0, i64toi32_i32$1 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return i64toi32_i32$1 | 0; - } - - function __wasm_i64_sdiv(var$0, var$0$hi, var$1, var$1$hi) { - var$0 = var$0 | 0; - var$0$hi = var$0$hi | 0; - var$1 = var$1 | 0; - var$1$hi = var$1$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = var$0$hi; - i64toi32_i32$0 = var$1$hi; - i64toi32_i32$0 = var$0$hi; - i64toi32_i32$1 = var$1$hi; - i64toi32_i32$1 = _ZN17compiler_builtins3int4sdiv3Div3div17he78fc483e41d7ec7E(var$0 | 0, i64toi32_i32$0 | 0, var$1 | 0, i64toi32_i32$1 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return i64toi32_i32$1 | 0; - } - - function __wasm_i64_srem(var$0, var$0$hi, var$1, var$1$hi) { - var$0 = var$0 | 0; - var$0$hi = var$0$hi | 0; - var$1 = var$1 | 0; - var$1$hi = var$1$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = var$0$hi; - i64toi32_i32$0 = var$1$hi; - i64toi32_i32$0 = var$0$hi; - i64toi32_i32$1 = var$1$hi; - i64toi32_i32$1 = _ZN17compiler_builtins3int4sdiv3Mod4mod_17h2cbb7bbf36e41d68E(var$0 | 0, i64toi32_i32$0 | 0, var$1 | 0, i64toi32_i32$1 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return i64toi32_i32$1 | 0; - } - - function __wasm_i64_udiv(var$0, var$0$hi, var$1, var$1$hi) { - var$0 = var$0 | 0; - var$0$hi = var$0$hi | 0; - var$1 = var$1 | 0; - var$1$hi = var$1$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = var$0$hi; - i64toi32_i32$0 = var$1$hi; - i64toi32_i32$0 = var$0$hi; - i64toi32_i32$1 = var$1$hi; - i64toi32_i32$1 = _ZN17compiler_builtins3int4udiv10divmod_u6417h6026910b5ed08e40E(var$0 | 0, i64toi32_i32$0 | 0, var$1 | 0, i64toi32_i32$1 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return i64toi32_i32$1 | 0; - } - - function __wasm_i64_urem(var$0, var$0$hi, var$1, var$1$hi) { - var$0 = var$0 | 0; - var$0$hi = var$0$hi | 0; - var$1 = var$1 | 0; - var$1$hi = var$1$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = var$0$hi; - i64toi32_i32$0 = var$1$hi; - i64toi32_i32$0 = var$0$hi; - i64toi32_i32$1 = var$1$hi; - i64toi32_i32$1 = _ZN17compiler_builtins3int4udiv10divmod_u6417h6026910b5ed08e40E(var$0 | 0, i64toi32_i32$0 | 0, var$1 | 0, i64toi32_i32$1 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$0 = legalfunc$wasm2js_scratch_load_i64() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; - } - - function __wasm_popcnt_i64(var$0, var$0$hi) { - var$0 = var$0 | 0; - var$0$hi = var$0$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$5 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, var$1$hi = 0, var$1 = 0, $5_1 = 0, $5$hi = 0, $4_1 = 0, $9$hi = 0; - label$1 : { - label$2 : while (1) { - i64toi32_i32$0 = var$1$hi; - i64toi32_i32$0 = var$0$hi; - $4_1 = !(var$0 | i64toi32_i32$0 | 0); - i64toi32_i32$0 = var$1$hi; - $5_1 = var$1; - $5$hi = i64toi32_i32$0; - if ($4_1) { - break label$1 - } - i64toi32_i32$0 = $5$hi; - i64toi32_i32$0 = var$0$hi; - i64toi32_i32$2 = var$0; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 1; - i64toi32_i32$4 = i64toi32_i32$2 - i64toi32_i32$3 | 0; - i64toi32_i32$5 = (i64toi32_i32$2 >>> 0 < i64toi32_i32$3 >>> 0) + i64toi32_i32$1 | 0; - i64toi32_i32$5 = i64toi32_i32$0 - i64toi32_i32$5 | 0; - $9$hi = i64toi32_i32$5; - i64toi32_i32$5 = i64toi32_i32$0; - i64toi32_i32$0 = i64toi32_i32$2; - i64toi32_i32$2 = $9$hi; - i64toi32_i32$3 = i64toi32_i32$4; - i64toi32_i32$2 = i64toi32_i32$5 & i64toi32_i32$2 | 0; - var$0 = i64toi32_i32$0 & i64toi32_i32$4 | 0; - var$0$hi = i64toi32_i32$2; - i64toi32_i32$2 = var$1$hi; - i64toi32_i32$5 = var$1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 1; - i64toi32_i32$1 = i64toi32_i32$5 + i64toi32_i32$3 | 0; - i64toi32_i32$4 = i64toi32_i32$2 + i64toi32_i32$0 | 0; - if (i64toi32_i32$1 >>> 0 < i64toi32_i32$3 >>> 0) { - i64toi32_i32$4 = i64toi32_i32$4 + 1 | 0 - } - var$1 = i64toi32_i32$1; - var$1$hi = i64toi32_i32$4; - continue label$2; - }; - } - i64toi32_i32$4 = $5$hi; - i64toi32_i32$5 = $5_1; - i64toi32_i32$HIGH_BITS = i64toi32_i32$4; - return i64toi32_i32$5 | 0; - } - - function __wasm_rotl_i64(var$0, var$0$hi, var$1, var$1$hi) { - var$0 = var$0 | 0; - var$0$hi = var$0$hi | 0; - var$1 = var$1 | 0; - var$1$hi = var$1$hi | 0; - var i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$5 = 0, i64toi32_i32$4 = 0, var$2$hi = 0, var$2 = 0, $19_1 = 0, $20_1 = 0, $21_1 = 0, $22_1 = 0, $6$hi = 0, $8$hi = 0, $10_1 = 0, $10$hi = 0, $15$hi = 0, $17$hi = 0, $19$hi = 0; - i64toi32_i32$0 = var$1$hi; - i64toi32_i32$2 = var$1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 63; - i64toi32_i32$1 = i64toi32_i32$0 & i64toi32_i32$1 | 0; - var$2 = i64toi32_i32$2 & i64toi32_i32$3 | 0; - var$2$hi = i64toi32_i32$1; - i64toi32_i32$1 = -1; - i64toi32_i32$0 = -1; - i64toi32_i32$2 = var$2$hi; - i64toi32_i32$3 = var$2; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $19_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $19_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - $6$hi = i64toi32_i32$2; - i64toi32_i32$2 = var$0$hi; - i64toi32_i32$2 = $6$hi; - i64toi32_i32$1 = $19_1; - i64toi32_i32$0 = var$0$hi; - i64toi32_i32$3 = var$0; - i64toi32_i32$0 = i64toi32_i32$2 & i64toi32_i32$0 | 0; - $8$hi = i64toi32_i32$0; - i64toi32_i32$0 = var$2$hi; - i64toi32_i32$0 = $8$hi; - i64toi32_i32$2 = i64toi32_i32$1 & i64toi32_i32$3 | 0; - i64toi32_i32$1 = var$2$hi; - i64toi32_i32$3 = var$2; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $20_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $20_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $10_1 = $20_1; - $10$hi = i64toi32_i32$1; - i64toi32_i32$1 = var$1$hi; - i64toi32_i32$1 = 0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = var$1$hi; - i64toi32_i32$3 = var$1; - i64toi32_i32$4 = i64toi32_i32$0 - i64toi32_i32$3 | 0; - i64toi32_i32$5 = (i64toi32_i32$0 >>> 0 < i64toi32_i32$3 >>> 0) + i64toi32_i32$2 | 0; - i64toi32_i32$5 = i64toi32_i32$1 - i64toi32_i32$5 | 0; - i64toi32_i32$1 = i64toi32_i32$4; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 63; - i64toi32_i32$0 = i64toi32_i32$5 & i64toi32_i32$0 | 0; - var$1 = i64toi32_i32$1 & i64toi32_i32$3 | 0; - var$1$hi = i64toi32_i32$0; - i64toi32_i32$0 = -1; - i64toi32_i32$5 = -1; - i64toi32_i32$1 = var$1$hi; - i64toi32_i32$3 = var$1; - i64toi32_i32$2 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$5 << i64toi32_i32$2 | 0; - $21_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$2 | 0) - 1 | 0) & (i64toi32_i32$5 >>> (32 - i64toi32_i32$2 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$2 | 0) | 0; - $21_1 = i64toi32_i32$5 << i64toi32_i32$2 | 0; - } - $15$hi = i64toi32_i32$1; - i64toi32_i32$1 = var$0$hi; - i64toi32_i32$1 = $15$hi; - i64toi32_i32$0 = $21_1; - i64toi32_i32$5 = var$0$hi; - i64toi32_i32$3 = var$0; - i64toi32_i32$5 = i64toi32_i32$1 & i64toi32_i32$5 | 0; - $17$hi = i64toi32_i32$5; - i64toi32_i32$5 = var$1$hi; - i64toi32_i32$5 = $17$hi; - i64toi32_i32$1 = i64toi32_i32$0 & i64toi32_i32$3 | 0; - i64toi32_i32$0 = var$1$hi; - i64toi32_i32$3 = var$1; - i64toi32_i32$2 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $22_1 = i64toi32_i32$5 >>> i64toi32_i32$2 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$5 >>> i64toi32_i32$2 | 0; - $22_1 = (((1 << i64toi32_i32$2 | 0) - 1 | 0) & i64toi32_i32$5 | 0) << (32 - i64toi32_i32$2 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$2 | 0) | 0; - } - $19$hi = i64toi32_i32$0; - i64toi32_i32$0 = $10$hi; - i64toi32_i32$5 = $10_1; - i64toi32_i32$1 = $19$hi; - i64toi32_i32$3 = $22_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - i64toi32_i32$5 = i64toi32_i32$5 | i64toi32_i32$3 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$5 | 0; - } - - function __wasm_rotr_i64(var$0, var$0$hi, var$1, var$1$hi) { - var$0 = var$0 | 0; - var$0$hi = var$0$hi | 0; - var$1 = var$1 | 0; - var$1$hi = var$1$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, i64toi32_i32$5 = 0, i64toi32_i32$4 = 0, var$2$hi = 0, var$2 = 0, $19_1 = 0, $20_1 = 0, $21_1 = 0, $22_1 = 0, $6$hi = 0, $8$hi = 0, $10_1 = 0, $10$hi = 0, $15$hi = 0, $17$hi = 0, $19$hi = 0; - i64toi32_i32$0 = var$1$hi; - i64toi32_i32$2 = var$1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 63; - i64toi32_i32$1 = i64toi32_i32$0 & i64toi32_i32$1 | 0; - var$2 = i64toi32_i32$2 & i64toi32_i32$3 | 0; - var$2$hi = i64toi32_i32$1; - i64toi32_i32$1 = -1; - i64toi32_i32$0 = -1; - i64toi32_i32$2 = var$2$hi; - i64toi32_i32$3 = var$2; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = i64toi32_i32$0 << i64toi32_i32$4 | 0; - $19_1 = 0; - } else { - i64toi32_i32$2 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$0 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$1 << i64toi32_i32$4 | 0) | 0; - $19_1 = i64toi32_i32$0 << i64toi32_i32$4 | 0; - } - $6$hi = i64toi32_i32$2; - i64toi32_i32$2 = var$0$hi; - i64toi32_i32$2 = $6$hi; - i64toi32_i32$1 = $19_1; - i64toi32_i32$0 = var$0$hi; - i64toi32_i32$3 = var$0; - i64toi32_i32$0 = i64toi32_i32$2 & i64toi32_i32$0 | 0; - $8$hi = i64toi32_i32$0; - i64toi32_i32$0 = var$2$hi; - i64toi32_i32$0 = $8$hi; - i64toi32_i32$2 = i64toi32_i32$1 & i64toi32_i32$3 | 0; - i64toi32_i32$1 = var$2$hi; - i64toi32_i32$3 = var$2; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $20_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $20_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - $10_1 = $20_1; - $10$hi = i64toi32_i32$1; - i64toi32_i32$1 = var$1$hi; - i64toi32_i32$1 = 0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = var$1$hi; - i64toi32_i32$3 = var$1; - i64toi32_i32$4 = i64toi32_i32$0 - i64toi32_i32$3 | 0; - i64toi32_i32$5 = (i64toi32_i32$0 >>> 0 < i64toi32_i32$3 >>> 0) + i64toi32_i32$2 | 0; - i64toi32_i32$5 = i64toi32_i32$1 - i64toi32_i32$5 | 0; - i64toi32_i32$1 = i64toi32_i32$4; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 63; - i64toi32_i32$0 = i64toi32_i32$5 & i64toi32_i32$0 | 0; - var$1 = i64toi32_i32$1 & i64toi32_i32$3 | 0; - var$1$hi = i64toi32_i32$0; - i64toi32_i32$0 = -1; - i64toi32_i32$5 = -1; - i64toi32_i32$1 = var$1$hi; - i64toi32_i32$3 = var$1; - i64toi32_i32$2 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $21_1 = i64toi32_i32$0 >>> i64toi32_i32$2 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$2 | 0; - $21_1 = (((1 << i64toi32_i32$2 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$2 | 0) | 0 | (i64toi32_i32$5 >>> i64toi32_i32$2 | 0) | 0; - } - $15$hi = i64toi32_i32$1; - i64toi32_i32$1 = var$0$hi; - i64toi32_i32$1 = $15$hi; - i64toi32_i32$0 = $21_1; - i64toi32_i32$5 = var$0$hi; - i64toi32_i32$3 = var$0; - i64toi32_i32$5 = i64toi32_i32$1 & i64toi32_i32$5 | 0; - $17$hi = i64toi32_i32$5; - i64toi32_i32$5 = var$1$hi; - i64toi32_i32$5 = $17$hi; - i64toi32_i32$1 = i64toi32_i32$0 & i64toi32_i32$3 | 0; - i64toi32_i32$0 = var$1$hi; - i64toi32_i32$3 = var$1; - i64toi32_i32$2 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$2 | 0; - $22_1 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$2 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$2 | 0) | 0) | 0 | (i64toi32_i32$5 << i64toi32_i32$2 | 0) | 0; - $22_1 = i64toi32_i32$1 << i64toi32_i32$2 | 0; - } - $19$hi = i64toi32_i32$0; - i64toi32_i32$0 = $10$hi; - i64toi32_i32$5 = $10_1; - i64toi32_i32$1 = $19$hi; - i64toi32_i32$3 = $22_1; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - i64toi32_i32$5 = i64toi32_i32$5 | i64toi32_i32$3 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$5 | 0; - } - - function __wasm_ctz_i32(var$0) { - var$0 = var$0 | 0; - if (var$0) { - return 31 - Math_clz32((var$0 + -1 | 0) ^ var$0 | 0) | 0 | 0 - } - return 32 | 0; - } - - var FUNCTION_TABLE = []; - return { - "add": legalstub$0, - "sub": legalstub$1, - "mul": legalstub$2, - "div_s": legalstub$3, - "div_u": legalstub$4, - "rem_s": legalstub$5, - "rem_u": legalstub$6, - "and": legalstub$7, - "or": legalstub$8, - "xor": legalstub$9, - "shl": legalstub$10, - "shr_s": legalstub$11, - "shr_u": legalstub$12, - "rotl": legalstub$13, - "rotr": legalstub$14, - "clz": legalstub$15, - "ctz": legalstub$16, - "popcnt": legalstub$17, - "eqz": legalstub$18, - "eq": legalstub$19, - "ne": legalstub$20, - "lt_s": legalstub$21, - "lt_u": legalstub$22, - "le_s": legalstub$23, - "le_u": legalstub$24, - "gt_s": legalstub$25, - "gt_u": legalstub$26, - "ge_s": legalstub$27, - "ge_u": legalstub$28 - }; -} - -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0,getTempRet0},memasmFunc); -export var add = retasmFunc.add; -export var sub = retasmFunc.sub; -export var mul = retasmFunc.mul; -export var div_s = retasmFunc.div_s; -export var div_u = retasmFunc.div_u; -export var rem_s = retasmFunc.rem_s; -export var rem_u = retasmFunc.rem_u; -export var and = retasmFunc.and; -export var or = retasmFunc.or; -export var xor = retasmFunc.xor; -export var shl = retasmFunc.shl; -export var shr_s = retasmFunc.shr_s; -export var shr_u = retasmFunc.shr_u; -export var rotl = retasmFunc.rotl; -export var rotr = retasmFunc.rotr; -export var clz = retasmFunc.clz; -export var ctz = retasmFunc.ctz; -export var popcnt = retasmFunc.popcnt; -export var eqz = retasmFunc.eqz; -export var eq = retasmFunc.eq; -export var ne = retasmFunc.ne; -export var lt_s = retasmFunc.lt_s; -export var lt_u = retasmFunc.lt_u; -export var le_s = retasmFunc.le_s; -export var le_u = retasmFunc.le_u; -export var gt_s = retasmFunc.gt_s; -export var gt_u = retasmFunc.gt_u; -export var ge_s = retasmFunc.ge_s; -export var ge_u = retasmFunc.ge_u; diff -Nru binaryen-91/test/wasm2js/i64-add-sub.2asm.js binaryen-99/test/wasm2js/i64-add-sub.2asm.js --- binaryen-91/test/wasm2js/i64-add-sub.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/i64-add-sub.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $1($0, $0$hi, $1_1, $1$hi, r, r$hi) { $0 = $0 | 0; $0$hi = $0$hi | 0; @@ -231,14 +224,13 @@ return $2($11 | 0, i64toi32_i32$0 | 0, $17 | 0, i64toi32_i32$1 | 0, $23 | 0, i64toi32_i32$2 | 0) | 0 | 0; } - var FUNCTION_TABLE = []; return { "check_add_i64": legalstub$1, "check_sub_i64": legalstub$2 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var check_add_i64 = retasmFunc.check_add_i64; export var check_sub_i64 = retasmFunc.check_sub_i64; diff -Nru binaryen-91/test/wasm2js/i64-add-sub.2asm.js.opt binaryen-99/test/wasm2js/i64-add-sub.2asm.js.opt --- binaryen-91/test/wasm2js/i64-add-sub.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/i64-add-sub.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $1($0, $1_1, $2, $3, $4, $5) { $0 = $0 | 0; $1_1 = $1_1 | 0; @@ -29,9 +22,7 @@ $5 = $5 | 0; $1_1 = $1_1 + $3 | 0; $0 = $0 + $2 | 0; - if ($0 >>> 0 < $2 >>> 0) { - $1_1 = $1_1 + 1 | 0 - } + $1_1 = $2 >>> 0 > $0 >>> 0 ? $1_1 + 1 | 0 : $1_1; return ($0 | 0) == ($4 | 0) & ($1_1 | 0) == ($5 | 0); } @@ -43,14 +34,13 @@ return ($4 | 0) == ($0 - $2 | 0) & ($5 | 0) == ($1_1 - (($0 >>> 0 < $2 >>> 0) + $3 | 0) | 0); } - var FUNCTION_TABLE = []; return { "check_add_i64": legalstub$1, "check_sub_i64": legalstub$2 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var check_add_i64 = retasmFunc.check_add_i64; export var check_sub_i64 = retasmFunc.check_sub_i64; diff -Nru binaryen-91/test/wasm2js/i64-ctz.2asm.js binaryen-99/test/wasm2js/i64-ctz.2asm.js --- binaryen-91/test/wasm2js/i64-ctz.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/i64-ctz.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,26 +1,19 @@ import { setTempRet0 } from 'env'; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function popcnt64($0, $0$hi) { @@ -234,14 +227,14 @@ return i64toi32_i32$5 | 0; } - var FUNCTION_TABLE = []; return { "a": legalstub$popcnt64, "b": legalstub$ctz64 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var a = retasmFunc.a; export var b = retasmFunc.b; diff -Nru binaryen-91/test/wasm2js/i64-ctz.2asm.js.opt binaryen-99/test/wasm2js/i64-ctz.2asm.js.opt --- binaryen-91/test/wasm2js/i64-ctz.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/i64-ctz.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,26 +1,19 @@ import { setTempRet0 } from 'env'; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function legalstub$popcnt64($0, $1) { @@ -38,16 +31,14 @@ function __wasm_ctz_i64($0, $1) { var $2 = 0, $3 = 0; if ($0 | $1) { - $3 = $1 + -1 | 0; - $2 = $0 + -1 | 0; - if ($2 >>> 0 < 4294967295) { - $3 = $3 + 1 | 0 - } - $2 = Math_clz32($0 ^ $2) + 32 | 0; - $0 = Math_clz32($1 ^ $3); - $0 = ($0 | 0) == 32 ? $2 : $0; + $2 = $1 - 1 | 0; + $3 = $0 - 1 | 0; + $2 = ($3 | 0) != -1 ? $2 + 1 | 0 : $2; + $3 = Math_clz32($0 ^ $3) + 32 | 0; + $0 = Math_clz32($1 ^ $2); + $0 = ($0 | 0) == 32 ? $3 : $0; $1 = 63 - $0 | 0; - i64toi32_i32$HIGH_BITS = 0 - (63 < $0 >>> 0) | 0; + i64toi32_i32$HIGH_BITS = 0 - ($0 >>> 0 > 63) | 0; return $1; } i64toi32_i32$HIGH_BITS = 0; @@ -57,17 +48,15 @@ function __wasm_popcnt_i64($0, $1) { var $2 = 0, $3 = 0, $4 = 0, $5 = 0; while (1) { - $5 = $3; - $2 = $4; + $5 = $4; + $2 = $3; if ($0 | $1) { $2 = $0; $0 = $2 - 1 & $2; $1 = $1 - ($2 >>> 0 < 1) & $1; - $2 = $3 + 1 | 0; - if ($2 >>> 0 < 1) { - $4 = $4 + 1 | 0 - } - $3 = $2; + $2 = $4 + 1 | 0; + $3 = $2 >>> 0 < 1 ? $3 + 1 | 0 : $3; + $4 = $2; continue; } break; @@ -76,14 +65,14 @@ return $5; } - var FUNCTION_TABLE = []; return { "a": legalstub$popcnt64, "b": legalstub$ctz64 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var a = retasmFunc.a; export var b = retasmFunc.b; diff -Nru binaryen-91/test/wasm2js/i64-lowering.2asm.js binaryen-99/test/wasm2js/i64-lowering.2asm.js --- binaryen-91/test/wasm2js/i64-lowering.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/i64-lowering.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $1($0, $0$hi, $1_1, $1$hi) { $0 = $0 | 0; $0$hi = $0$hi | 0; @@ -782,7 +775,6 @@ return $10($9_1 | 0, i64toi32_i32$1 | 0, $15 | 0, i64toi32_i32$2 | 0) | 0 | 0; } - var FUNCTION_TABLE = []; return { "eq_i64": legalstub$1, "ne_i64": legalstub$2, @@ -797,8 +789,8 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var eq_i64 = retasmFunc.eq_i64; export var ne_i64 = retasmFunc.ne_i64; export var ge_s_i64 = retasmFunc.ge_s_i64; diff -Nru binaryen-91/test/wasm2js/i64-lowering.2asm.js.opt binaryen-99/test/wasm2js/i64-lowering.2asm.js.opt --- binaryen-91/test/wasm2js/i64-lowering.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/i64-lowering.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,98 +1,58 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - function $3($0, $1, $2, $3_1) { - $0 = $0 | 0; - $1 = $1 | 0; - $2 = $2 | 0; - $3_1 = $3_1 | 0; - return (($1 | 0) > ($3_1 | 0) ? 1 : ($1 | 0) >= ($3_1 | 0) ? ($0 >>> 0 < $2 >>> 0 ? 0 : 1) : 0) | 0; + var nan = NaN; + var infinity = Infinity; + function legalstub$1($0, $1, $2, $3) { + return ($0 | 0) == ($2 | 0) & ($1 | 0) == ($3 | 0); } - function $4($0, $1, $2, $3_1) { - $0 = $0 | 0; - $1 = $1 | 0; - $2 = $2 | 0; - $3_1 = $3_1 | 0; - return (($1 | 0) > ($3_1 | 0) ? 1 : ($1 | 0) >= ($3_1 | 0) ? ($0 >>> 0 <= $2 >>> 0 ? 0 : 1) : 0) | 0; + function legalstub$2($0, $1, $2, $3) { + return ($0 | 0) != ($2 | 0) | ($1 | 0) != ($3 | 0); } - function $5($0, $1, $2, $3_1) { - $0 = $0 | 0; - $1 = $1 | 0; - $2 = $2 | 0; - $3_1 = $3_1 | 0; - return (($1 | 0) < ($3_1 | 0) ? 1 : ($1 | 0) <= ($3_1 | 0) ? ($0 >>> 0 > $2 >>> 0 ? 0 : 1) : 0) | 0; + function legalstub$3($0, $1, $2, $3) { + return ($1 | 0) > ($3 | 0) ? 1 : ($1 | 0) >= ($3 | 0) ? $0 >>> 0 >= $2 >>> 0 : 0; } - function $6($0, $1, $2, $3_1) { - $0 = $0 | 0; - $1 = $1 | 0; - $2 = $2 | 0; - $3_1 = $3_1 | 0; - return (($1 | 0) < ($3_1 | 0) ? 1 : ($1 | 0) <= ($3_1 | 0) ? ($0 >>> 0 >= $2 >>> 0 ? 0 : 1) : 0) | 0; + function legalstub$4($0, $1, $2, $3) { + return ($1 | 0) > ($3 | 0) ? 1 : ($1 | 0) >= ($3 | 0) ? $0 >>> 0 > $2 >>> 0 : 0; } - function legalstub$1($0, $1, $2, $3_1) { - return ($0 | 0) == ($2 | 0) & ($1 | 0) == ($3_1 | 0); + function legalstub$5($0, $1, $2, $3) { + return ($1 | 0) < ($3 | 0) ? 1 : ($1 | 0) <= ($3 | 0) ? $0 >>> 0 <= $2 >>> 0 : 0; } - function legalstub$2($0, $1, $2, $3_1) { - return ($0 | 0) != ($2 | 0) | ($1 | 0) != ($3_1 | 0); + function legalstub$6($0, $1, $2, $3) { + return ($1 | 0) < ($3 | 0) ? 1 : ($1 | 0) <= ($3 | 0) ? $0 >>> 0 < $2 >>> 0 : 0; } - function legalstub$3($0, $1, $2, $3_1) { - return $3($0, $1, $2, $3_1); + function legalstub$7($0, $1, $2, $3) { + return ($1 | 0) == ($3 | 0) & $0 >>> 0 >= $2 >>> 0 | $1 >>> 0 > $3 >>> 0; } - function legalstub$4($0, $1, $2, $3_1) { - return $4($0, $1, $2, $3_1); + function legalstub$8($0, $1, $2, $3) { + return ($1 | 0) == ($3 | 0) & $0 >>> 0 > $2 >>> 0 | $1 >>> 0 > $3 >>> 0; } - function legalstub$5($0, $1, $2, $3_1) { - return $5($0, $1, $2, $3_1); + function legalstub$9($0, $1, $2, $3) { + return ($1 | 0) == ($3 | 0) & $0 >>> 0 <= $2 >>> 0 | $1 >>> 0 < $3 >>> 0; } - function legalstub$6($0, $1, $2, $3_1) { - return $6($0, $1, $2, $3_1); + function legalstub$10($0, $1, $2, $3) { + return ($1 | 0) == ($3 | 0) & $0 >>> 0 < $2 >>> 0 | $1 >>> 0 < $3 >>> 0; } - function legalstub$7($0, $1, $2, $3_1) { - return ($1 | 0) == ($3_1 | 0) & $0 >>> 0 >= $2 >>> 0 | $1 >>> 0 > $3_1 >>> 0; - } - - function legalstub$8($0, $1, $2, $3_1) { - return ($1 | 0) == ($3_1 | 0) & $0 >>> 0 > $2 >>> 0 | $1 >>> 0 > $3_1 >>> 0; - } - - function legalstub$9($0, $1, $2, $3_1) { - return ($1 | 0) == ($3_1 | 0) & $0 >>> 0 <= $2 >>> 0 | $1 >>> 0 < $3_1 >>> 0; - } - - function legalstub$10($0, $1, $2, $3_1) { - return ($1 | 0) == ($3_1 | 0) & $0 >>> 0 < $2 >>> 0 | $1 >>> 0 < $3_1 >>> 0; - } - - var FUNCTION_TABLE = []; return { "eq_i64": legalstub$1, "ne_i64": legalstub$2, @@ -107,8 +67,8 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var eq_i64 = retasmFunc.eq_i64; export var ne_i64 = retasmFunc.ne_i64; export var ge_s_i64 = retasmFunc.ge_s_i64; diff -Nru binaryen-91/test/wasm2js/i64-rotate.2asm.js binaryen-99/test/wasm2js/i64-rotate.2asm.js --- binaryen-91/test/wasm2js/i64-rotate.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/i64-rotate.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var i64toi32_i32$HIGH_BITS = 0; function $1($0, $0$hi, $1_1, $1$hi, $2_1, $2$hi) { $0 = $0 | 0; @@ -443,14 +436,13 @@ return i64toi32_i32$5 | 0; } - var FUNCTION_TABLE = []; return { "rotl": legalstub$1, "rotr": legalstub$2 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var rotl = retasmFunc.rotl; export var rotr = retasmFunc.rotr; diff -Nru binaryen-91/test/wasm2js/i64-rotate.2asm.js.opt binaryen-99/test/wasm2js/i64-rotate.2asm.js.opt --- binaryen-91/test/wasm2js/i64-rotate.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/i64-rotate.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var i64toi32_i32$HIGH_BITS = 0; function legalstub$1($0, $1, $2, $3, $4, $5) { return (__wasm_rotl_i64($0, $1, $2) | 0) == ($4 | 0) & ($5 | 0) == (i64toi32_i32$HIGH_BITS | 0); @@ -34,7 +27,7 @@ $6 = $2 & 63; $5 = $6; $3 = $5 & 31; - if (32 <= $5 >>> 0) { + if ($5 >>> 0 >= 32) { $3 = -1 >>> $3 | 0 } else { $4 = -1 >>> $3 | 0; @@ -43,7 +36,7 @@ $5 = $3 & $0; $3 = $1 & $4; $4 = $6 & 31; - if (32 <= $6 >>> 0) { + if ($6 >>> 0 >= 32) { $3 = $5 << $4; $6 = 0; } else { @@ -54,7 +47,7 @@ $4 = 0 - $2 & 63; $3 = $4; $2 = $3 & 31; - if (32 <= $3 >>> 0) { + if ($3 >>> 0 >= 32) { $3 = -1 << $2; $2 = 0; } else { @@ -64,7 +57,7 @@ $0 = $2 & $0; $3 = $1 & $3; $1 = $4 & 31; - if (32 <= $4 >>> 0) { + if ($4 >>> 0 >= 32) { $2 = 0; $0 = $3 >>> $1 | 0; } else { @@ -80,7 +73,7 @@ var $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0; $6 = $2 & 63; $3 = $6 & 31; - if (32 <= $6 >>> 0) { + if ($6 >>> 0 >= 32) { $4 = -1 << $3; $7 = 0; } else { @@ -90,7 +83,7 @@ $7 = $7 & $0; $3 = $1 & $4; $5 = $6 & 31; - if (32 <= $6 >>> 0) { + if ($6 >>> 0 >= 32) { $4 = 0; $6 = $3 >>> $5 | 0; } else { @@ -100,7 +93,7 @@ $7 = $4; $3 = 0 - $2 & 63; $5 = $3 & 31; - if (32 <= $3 >>> 0) { + if ($3 >>> 0 >= 32) { $4 = 0; $2 = -1 >>> $5 | 0; } else { @@ -110,7 +103,7 @@ $0 = $2 & $0; $1 = $1 & $4; $4 = $3 & 31; - if (32 <= $3 >>> 0) { + if ($3 >>> 0 >= 32) { $2 = $0 << $4; $0 = 0; } else { @@ -122,14 +115,13 @@ return $0; } - var FUNCTION_TABLE = []; return { "rotl": legalstub$1, "rotr": legalstub$2 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var rotl = retasmFunc.rotl; export var rotr = retasmFunc.rotr; diff -Nru binaryen-91/test/wasm2js/i64-select.2asm.js binaryen-99/test/wasm2js/i64-select.2asm.js --- binaryen-91/test/wasm2js/i64-select.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/i64-select.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,30 +1,22 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var FUNCTION_TABLE = []; + var nan = NaN; + var infinity = Infinity; return { }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); diff -Nru binaryen-91/test/wasm2js/i64-select.2asm.js.opt binaryen-99/test/wasm2js/i64-select.2asm.js.opt --- binaryen-91/test/wasm2js/i64-select.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/i64-select.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,30 +1,22 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var FUNCTION_TABLE = []; + var nan = NaN; + var infinity = Infinity; return { }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); diff -Nru binaryen-91/test/wasm2js/i64-shifts.2asm.js binaryen-99/test/wasm2js/i64-shifts.2asm.js --- binaryen-91/test/wasm2js/i64-shifts.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/i64-shifts.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $1($0, $0$hi, $1_1, $1$hi, $2_1, $2$hi) { $0 = $0 | 0; $0$hi = $0$hi | 0; @@ -248,14 +241,13 @@ return $2($11 | 0, i64toi32_i32$0 | 0, $17 | 0, i64toi32_i32$1 | 0, $23 | 0, i64toi32_i32$2 | 0) | 0 | 0; } - var FUNCTION_TABLE = []; return { "shl_i64": legalstub$1, "shr_i64": legalstub$2 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var shl_i64 = retasmFunc.shl_i64; export var shr_i64 = retasmFunc.shr_i64; diff -Nru binaryen-91/test/wasm2js/i64-shifts.2asm.js.opt binaryen-99/test/wasm2js/i64-shifts.2asm.js.opt --- binaryen-91/test/wasm2js/i64-shifts.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/i64-shifts.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $1($0, $1_1, $2_1, $3, $4) { $0 = $0 | 0; $1_1 = $1_1 | 0; @@ -28,7 +21,7 @@ $4 = $4 | 0; var $5 = 0; $5 = $2_1 & 31; - if (32 <= ($2_1 & 63) >>> 0) { + if (($2_1 & 63) >>> 0 >= 32) { $1_1 = $0 << $5; $0 = 0; } else { @@ -46,7 +39,7 @@ $4 = $4 | 0; var $5 = 0; $5 = $2_1 & 31; - if (32 <= ($2_1 & 63) >>> 0) { + if (($2_1 & 63) >>> 0 >= 32) { $2_1 = $1_1 >> 31; $0 = $1_1 >> $5; } else { @@ -64,14 +57,13 @@ return $2($0, $1_1, $2_1, $4, $5); } - var FUNCTION_TABLE = []; return { "shl_i64": legalstub$1, "shr_i64": legalstub$2 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var shl_i64 = retasmFunc.shl_i64; export var shr_i64 = retasmFunc.shr_i64; diff -Nru binaryen-91/test/wasm2js/if_unreachable.2asm.js binaryen-99/test/wasm2js/if_unreachable.2asm.js --- binaryen-91/test/wasm2js/if_unreachable.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/if_unreachable.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,30 +1,22 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var FUNCTION_TABLE = []; + var nan = NaN; + var infinity = Infinity; return { }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); diff -Nru binaryen-91/test/wasm2js/if_unreachable.2asm.js.opt binaryen-99/test/wasm2js/if_unreachable.2asm.js.opt --- binaryen-91/test/wasm2js/if_unreachable.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/if_unreachable.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,30 +1,22 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var FUNCTION_TABLE = []; + var nan = NaN; + var infinity = Infinity; return { }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); diff -Nru binaryen-91/test/wasm2js/indirect-select.2asm.js binaryen-99/test/wasm2js/indirect-select.2asm.js --- binaryen-91/test/wasm2js/indirect-select.2asm.js 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/wasm2js/indirect-select.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,38 @@ +import { table } from 'env'; + +function asmFunc(env) { + var FUNCTION_TABLE = env.table; + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + function $0(x) { + x = x | 0; + return FUNCTION_TABLE[(x ? 1 : 0) | 0]() | 0 | 0; + } + + function $1(x) { + x = x | 0; + return FUNCTION_TABLE[(x ? 0 : 1) | 0]() | 0 | 0; + } + + return { + "foo_true": $0, + "foo_false": $1 + }; +} + +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + table + }); +export var foo_true = retasmFunc.foo_true; +export var foo_false = retasmFunc.foo_false; diff -Nru binaryen-91/test/wasm2js/indirect-select.2asm.js.opt binaryen-99/test/wasm2js/indirect-select.2asm.js.opt --- binaryen-91/test/wasm2js/indirect-select.2asm.js.opt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/wasm2js/indirect-select.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,38 @@ +import { table } from 'env'; + +function asmFunc(env) { + var FUNCTION_TABLE = env.table; + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + function $0($0_1) { + $0_1 = $0_1 | 0; + return FUNCTION_TABLE[!!$0_1 | 0]() | 0; + } + + function $1($0_1) { + $0_1 = $0_1 | 0; + return FUNCTION_TABLE[!$0_1 | 0]() | 0; + } + + return { + "foo_true": $0, + "foo_false": $1 + }; +} + +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + table + }); +export var foo_true = retasmFunc.foo_true; +export var foo_false = retasmFunc.foo_false; diff -Nru binaryen-91/test/wasm2js/indirect-select.wast binaryen-99/test/wasm2js/indirect-select.wast --- binaryen-91/test/wasm2js/indirect-select.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/wasm2js/indirect-select.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,22 @@ +(module + (type $none_=>_i32 (func (result i32))) + (import "env" "table" (table $timport 6 funcref)) + (func "foo-true" (param $x i32) (result i32) + (call_indirect (type $none_=>_i32) + (select + (i32.const 1) + (i32.const 0) + (local.get $x) + ) + ) + ) + (func "foo-false" (param $x i32) (result i32) + (call_indirect (type $none_=>_i32) + (select + (i32.const 0) + (i32.const 1) + (local.get $x) + ) + ) + ) +) diff -Nru binaryen-91/test/wasm2js/int_exprs.2asm.js binaryen-99/test/wasm2js/int_exprs.2asm.js --- binaryen-91/test/wasm2js/int_exprs.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/int_exprs.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $0(x, y) { x = x | 0; y = y | 0; @@ -229,7 +222,6 @@ return $3($9 | 0, i64toi32_i32$1 | 0, $15 | 0, i64toi32_i32$2 | 0) | 0 | 0; } - var FUNCTION_TABLE = []; return { "i32_no_fold_cmp_s_offset": $0, "i32_no_fold_cmp_u_offset": $1, @@ -238,35 +230,28 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var i32_no_fold_cmp_s_offset = retasmFunc.i32_no_fold_cmp_s_offset; export var i32_no_fold_cmp_u_offset = retasmFunc.i32_no_fold_cmp_u_offset; export var i64_no_fold_cmp_s_offset = retasmFunc.i64_no_fold_cmp_s_offset; export var i64_no_fold_cmp_u_offset = retasmFunc.i64_no_fold_cmp_u_offset; import { setTempRet0 } from 'env'; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function $0(x, x$hi) { @@ -325,38 +310,31 @@ return $2 | 0; } - var FUNCTION_TABLE = []; return { "i64_no_fold_wrap_extend_s": legalstub$0 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var i64_no_fold_wrap_extend_s = retasmFunc.i64_no_fold_wrap_extend_s; import { setTempRet0 } from 'env'; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function $0(x, x$hi) { @@ -414,38 +392,31 @@ return $2 | 0; } - var FUNCTION_TABLE = []; return { "i64_no_fold_wrap_extend_u": legalstub$0 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var i64_no_fold_wrap_extend_u = retasmFunc.i64_no_fold_wrap_extend_u; import { setTempRet0 } from 'env'; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function $0(x) { @@ -612,7 +583,6 @@ return $2_1 | 0; } - var FUNCTION_TABLE = []; return { "i32_no_fold_shl_shr_s": $0, "i32_no_fold_shl_shr_u": $1, @@ -621,35 +591,29 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var i32_no_fold_shl_shr_s = retasmFunc.i32_no_fold_shl_shr_s; export var i32_no_fold_shl_shr_u = retasmFunc.i32_no_fold_shl_shr_u; export var i64_no_fold_shl_shr_s = retasmFunc.i64_no_fold_shl_shr_s; export var i64_no_fold_shl_shr_u = retasmFunc.i64_no_fold_shl_shr_u; import { setTempRet0 } from 'env'; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function $0(x) { @@ -816,7 +780,6 @@ return $2_1 | 0; } - var FUNCTION_TABLE = []; return { "i32_no_fold_shr_s_shl": $0, "i32_no_fold_shr_u_shl": $1, @@ -825,47 +788,32 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var i32_no_fold_shr_s_shl = retasmFunc.i32_no_fold_shr_s_shl; export var i32_no_fold_shr_u_shl = retasmFunc.i32_no_fold_shr_u_shl; export var i64_no_fold_shr_s_shl = retasmFunc.i64_no_fold_shr_s_shl; export var i64_no_fold_shr_u_shl = retasmFunc.i64_no_fold_shr_u_shl; import { setTempRet0 } from 'env'; - - var scratchBuffer = new ArrayBuffer(8); - var i32ScratchView = new Int32Array(scratchBuffer); - var f32ScratchView = new Float32Array(scratchBuffer); - var f64ScratchView = new Float64Array(scratchBuffer); - - function legalimport$wasm2js_scratch_store_i64(low, high) { - i32ScratchView[0] = low; - i32ScratchView[1] = high; - } - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; + var __wasm_intrinsics_temp_i64 = 0; + var __wasm_intrinsics_temp_i64$hi = 0; var i64toi32_i32$HIGH_BITS = 0; function $0(x) { x = x | 0; @@ -999,26 +947,6 @@ return $2_1 | 0; } - function legalfunc$wasm2js_scratch_store_i64($0_1, $0$hi) { - $0_1 = $0_1 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $2_1 = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $0$hi; - $2_1 = $0_1; - i64toi32_i32$2 = $0_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $8 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - legalimport$wasm2js_scratch_store_i64($2_1 | 0, $8 | 0); - } - function _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE(var$0, var$0$hi, var$1, var$1$hi) { var$0 = var$0 | 0; var$0$hi = var$0$hi | 0; @@ -1276,7 +1204,8 @@ var$3 = var$1; var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; - legalfunc$wasm2js_scratch_store_i64(var$0 - Math_imul(var$2, var$3) | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = var$0 - Math_imul(var$2, var$3) | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -1331,7 +1260,8 @@ i64toi32_i32$1 = $65$hi; i64toi32_i32$0 = $65; i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; - legalfunc$wasm2js_scratch_store_i64(i64toi32_i32$3 | i64toi32_i32$0 | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = i64toi32_i32$3 | i64toi32_i32$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -1363,7 +1293,8 @@ i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$3 << i64toi32_i32$4 | 0) | 0; $41 = i64toi32_i32$2 << i64toi32_i32$4 | 0; } - legalfunc$wasm2js_scratch_store_i64($41 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = $41; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -1377,7 +1308,8 @@ } i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; - legalfunc$wasm2js_scratch_store_i64(var$4 & var$0 | 0 | 0, i64toi32_i32$2 | 0); + __wasm_intrinsics_temp_i64 = var$4 & var$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$2; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -1570,7 +1502,8 @@ } } i64toi32_i32$3 = var$5$hi; - legalfunc$wasm2js_scratch_store_i64(var$5 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$5; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -1595,7 +1528,8 @@ return i64toi32_i32$3 | 0; } i64toi32_i32$3 = var$0$hi; - legalfunc$wasm2js_scratch_store_i64(var$0 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -1662,7 +1596,6 @@ return 32 | 0; } - var FUNCTION_TABLE = []; return { "i32_no_fold_div_s_mul": $0, "i32_no_fold_div_u_mul": $1, @@ -1671,47 +1604,32 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var i32_no_fold_div_s_mul = retasmFunc.i32_no_fold_div_s_mul; export var i32_no_fold_div_u_mul = retasmFunc.i32_no_fold_div_u_mul; export var i64_no_fold_div_s_mul = retasmFunc.i64_no_fold_div_s_mul; export var i64_no_fold_div_u_mul = retasmFunc.i64_no_fold_div_u_mul; import { setTempRet0 } from 'env'; - - var scratchBuffer = new ArrayBuffer(8); - var i32ScratchView = new Int32Array(scratchBuffer); - var f32ScratchView = new Float32Array(scratchBuffer); - var f64ScratchView = new Float64Array(scratchBuffer); - - function legalimport$wasm2js_scratch_store_i64(low, high) { - i32ScratchView[0] = low; - i32ScratchView[1] = high; - } - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; + var __wasm_intrinsics_temp_i64 = 0; + var __wasm_intrinsics_temp_i64$hi = 0; var i64toi32_i32$HIGH_BITS = 0; function $0(x) { x = x | 0; @@ -1837,26 +1755,6 @@ return $2_1 | 0; } - function legalfunc$wasm2js_scratch_store_i64($0_1, $0$hi) { - $0_1 = $0_1 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $2_1 = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $0$hi; - $2_1 = $0_1; - i64toi32_i32$2 = $0_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $8 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - legalimport$wasm2js_scratch_store_i64($2_1 | 0, $8 | 0); - } - function _ZN17compiler_builtins3int4sdiv3Div3div17he78fc483e41d7ec7E(var$0, var$0$hi, var$1, var$1$hi) { var$0 = var$0 | 0; var$0$hi = var$0$hi | 0; @@ -2044,7 +1942,8 @@ var$3 = var$1; var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; - legalfunc$wasm2js_scratch_store_i64(var$0 - Math_imul(var$2, var$3) | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = var$0 - Math_imul(var$2, var$3) | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -2099,7 +1998,8 @@ i64toi32_i32$1 = $65$hi; i64toi32_i32$0 = $65; i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; - legalfunc$wasm2js_scratch_store_i64(i64toi32_i32$3 | i64toi32_i32$0 | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = i64toi32_i32$3 | i64toi32_i32$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -2131,7 +2031,8 @@ i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$3 << i64toi32_i32$4 | 0) | 0; $41 = i64toi32_i32$2 << i64toi32_i32$4 | 0; } - legalfunc$wasm2js_scratch_store_i64($41 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = $41; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -2145,7 +2046,8 @@ } i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; - legalfunc$wasm2js_scratch_store_i64(var$4 & var$0 | 0 | 0, i64toi32_i32$2 | 0); + __wasm_intrinsics_temp_i64 = var$4 & var$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$2; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -2338,7 +2240,8 @@ } } i64toi32_i32$3 = var$5$hi; - legalfunc$wasm2js_scratch_store_i64(var$5 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$5; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -2363,7 +2266,8 @@ return i64toi32_i32$3 | 0; } i64toi32_i32$3 = var$0$hi; - legalfunc$wasm2js_scratch_store_i64(var$0 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -2414,7 +2318,6 @@ return 32 | 0; } - var FUNCTION_TABLE = []; return { "i32_no_fold_div_s_self": $0, "i32_no_fold_div_u_self": $1, @@ -2423,54 +2326,32 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var i32_no_fold_div_s_self = retasmFunc.i32_no_fold_div_s_self; export var i32_no_fold_div_u_self = retasmFunc.i32_no_fold_div_u_self; export var i64_no_fold_div_s_self = retasmFunc.i64_no_fold_div_s_self; export var i64_no_fold_div_u_self = retasmFunc.i64_no_fold_div_u_self; import { setTempRet0 } from 'env'; -import { getTempRet0 } from 'env'; - - var scratchBuffer = new ArrayBuffer(8); - var i32ScratchView = new Int32Array(scratchBuffer); - var f32ScratchView = new Float32Array(scratchBuffer); - var f64ScratchView = new Float64Array(scratchBuffer); - - function legalimport$wasm2js_scratch_load_i64() { - if (typeof setTempRet0 === 'function') setTempRet0(i32ScratchView[1]); - return i32ScratchView[0]; - } - - function legalimport$wasm2js_scratch_store_i64(low, high) { - i32ScratchView[0] = low; - i32ScratchView[1] = high; - } - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; - var getTempRet0 = env.getTempRet0; + var __wasm_intrinsics_temp_i64 = 0; + var __wasm_intrinsics_temp_i64$hi = 0; var i64toi32_i32$HIGH_BITS = 0; function $0(x) { x = x | 0; @@ -2596,54 +2477,6 @@ return $2_1 | 0; } - function legalfunc$wasm2js_scratch_load_i64() { - var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $8 = 0, $1_1 = 0, $1$hi = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $1_1 = legalimport$wasm2js_scratch_load_i64() | 0; - $1$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = getTempRet0() | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $8 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $8 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $4$hi = i64toi32_i32$1; - i64toi32_i32$1 = $1$hi; - i64toi32_i32$0 = $1_1; - i64toi32_i32$2 = $4$hi; - i64toi32_i32$3 = $8; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - i64toi32_i32$0 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$2; - return i64toi32_i32$0 | 0; - } - - function legalfunc$wasm2js_scratch_store_i64($0_1, $0$hi) { - $0_1 = $0_1 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $2_1 = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $0$hi; - $2_1 = $0_1; - i64toi32_i32$2 = $0_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $8 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - legalimport$wasm2js_scratch_store_i64($2_1 | 0, $8 | 0); - } - function _ZN17compiler_builtins3int4sdiv3Mod4mod_17h2cbb7bbf36e41d68E(var$0, var$0$hi, var$1, var$1$hi) { var$0 = var$0 | 0; var$0$hi = var$0$hi | 0; @@ -2811,7 +2644,8 @@ var$3 = var$1; var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; - legalfunc$wasm2js_scratch_store_i64(var$0 - Math_imul(var$2, var$3) | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = var$0 - Math_imul(var$2, var$3) | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -2866,7 +2700,8 @@ i64toi32_i32$1 = $65$hi; i64toi32_i32$0 = $65; i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; - legalfunc$wasm2js_scratch_store_i64(i64toi32_i32$3 | i64toi32_i32$0 | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = i64toi32_i32$3 | i64toi32_i32$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -2898,7 +2733,8 @@ i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$3 << i64toi32_i32$4 | 0) | 0; $41 = i64toi32_i32$2 << i64toi32_i32$4 | 0; } - legalfunc$wasm2js_scratch_store_i64($41 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = $41; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -2912,7 +2748,8 @@ } i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; - legalfunc$wasm2js_scratch_store_i64(var$4 & var$0 | 0 | 0, i64toi32_i32$2 | 0); + __wasm_intrinsics_temp_i64 = var$4 & var$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$2; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -3105,7 +2942,8 @@ } } i64toi32_i32$3 = var$5$hi; - legalfunc$wasm2js_scratch_store_i64(var$5 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$5; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -3130,7 +2968,8 @@ return i64toi32_i32$3 | 0; } i64toi32_i32$3 = var$0$hi; - legalfunc$wasm2js_scratch_store_i64(var$0 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -3169,10 +3008,10 @@ i64toi32_i32$1 = var$1$hi; i64toi32_i32$1 = _ZN17compiler_builtins3int4udiv10divmod_u6417h6026910b5ed08e40E(var$0 | 0, i64toi32_i32$0 | 0, var$1 | 0, i64toi32_i32$1 | 0) | 0; i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$0 = legalfunc$wasm2js_scratch_load_i64() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; + i64toi32_i32$0 = __wasm_intrinsics_temp_i64$hi; + i64toi32_i32$1 = __wasm_intrinsics_temp_i64; + i64toi32_i32$HIGH_BITS = i64toi32_i32$0; + return i64toi32_i32$1 | 0; } function __wasm_ctz_i32(var$0) { @@ -3183,7 +3022,6 @@ return 32 | 0; } - var FUNCTION_TABLE = []; return { "i32_no_fold_rem_s_self": $0, "i32_no_fold_rem_u_self": $1, @@ -3192,47 +3030,32 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0,getTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var i32_no_fold_rem_s_self = retasmFunc.i32_no_fold_rem_s_self; export var i32_no_fold_rem_u_self = retasmFunc.i32_no_fold_rem_u_self; export var i64_no_fold_rem_s_self = retasmFunc.i64_no_fold_rem_s_self; export var i64_no_fold_rem_u_self = retasmFunc.i64_no_fold_rem_u_self; import { setTempRet0 } from 'env'; - - var scratchBuffer = new ArrayBuffer(8); - var i32ScratchView = new Int32Array(scratchBuffer); - var f32ScratchView = new Float32Array(scratchBuffer); - var f64ScratchView = new Float64Array(scratchBuffer); - - function legalimport$wasm2js_scratch_store_i64(low, high) { - i32ScratchView[0] = low; - i32ScratchView[1] = high; - } - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; + var __wasm_intrinsics_temp_i64 = 0; + var __wasm_intrinsics_temp_i64$hi = 0; var i64toi32_i32$HIGH_BITS = 0; function $0(x) { x = x | 0; @@ -3366,26 +3189,6 @@ return $2_1 | 0; } - function legalfunc$wasm2js_scratch_store_i64($0_1, $0$hi) { - $0_1 = $0_1 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $2_1 = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $0$hi; - $2_1 = $0_1; - i64toi32_i32$2 = $0_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $8 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - legalimport$wasm2js_scratch_store_i64($2_1 | 0, $8 | 0); - } - function _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE(var$0, var$0$hi, var$1, var$1$hi) { var$0 = var$0 | 0; var$0$hi = var$0$hi | 0; @@ -3643,7 +3446,8 @@ var$3 = var$1; var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; - legalfunc$wasm2js_scratch_store_i64(var$0 - Math_imul(var$2, var$3) | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = var$0 - Math_imul(var$2, var$3) | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -3698,7 +3502,8 @@ i64toi32_i32$1 = $65$hi; i64toi32_i32$0 = $65; i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; - legalfunc$wasm2js_scratch_store_i64(i64toi32_i32$3 | i64toi32_i32$0 | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = i64toi32_i32$3 | i64toi32_i32$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -3730,7 +3535,8 @@ i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$3 << i64toi32_i32$4 | 0) | 0; $41 = i64toi32_i32$2 << i64toi32_i32$4 | 0; } - legalfunc$wasm2js_scratch_store_i64($41 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = $41; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -3744,7 +3550,8 @@ } i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; - legalfunc$wasm2js_scratch_store_i64(var$4 & var$0 | 0 | 0, i64toi32_i32$2 | 0); + __wasm_intrinsics_temp_i64 = var$4 & var$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$2; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -3937,7 +3744,8 @@ } } i64toi32_i32$3 = var$5$hi; - legalfunc$wasm2js_scratch_store_i64(var$5 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$5; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -3962,7 +3770,8 @@ return i64toi32_i32$3 | 0; } i64toi32_i32$3 = var$0$hi; - legalfunc$wasm2js_scratch_store_i64(var$0 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -4029,7 +3838,6 @@ return 32 | 0; } - var FUNCTION_TABLE = []; return { "i32_no_fold_mul_div_s": $0, "i32_no_fold_mul_div_u": $1, @@ -4038,47 +3846,32 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var i32_no_fold_mul_div_s = retasmFunc.i32_no_fold_mul_div_s; export var i32_no_fold_mul_div_u = retasmFunc.i32_no_fold_mul_div_u; export var i64_no_fold_mul_div_s = retasmFunc.i64_no_fold_mul_div_s; export var i64_no_fold_mul_div_u = retasmFunc.i64_no_fold_mul_div_u; import { setTempRet0 } from 'env'; - - var scratchBuffer = new ArrayBuffer(8); - var i32ScratchView = new Int32Array(scratchBuffer); - var f32ScratchView = new Float32Array(scratchBuffer); - var f64ScratchView = new Float64Array(scratchBuffer); - - function legalimport$wasm2js_scratch_store_i64(low, high) { - i32ScratchView[0] = low; - i32ScratchView[1] = high; - } - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; + var __wasm_intrinsics_temp_i64 = 0; + var __wasm_intrinsics_temp_i64$hi = 0; var i64toi32_i32$HIGH_BITS = 0; function $0(x) { x = x | 0; @@ -4142,26 +3935,6 @@ return $2 | 0; } - function legalfunc$wasm2js_scratch_store_i64($0_1, $0$hi) { - $0_1 = $0_1 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $2 = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $0$hi; - $2 = $0_1; - i64toi32_i32$2 = $0_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $8 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - legalimport$wasm2js_scratch_store_i64($2 | 0, $8 | 0); - } - function _ZN17compiler_builtins3int4sdiv3Div3div17he78fc483e41d7ec7E(var$0, var$0$hi, var$1, var$1$hi) { var$0 = var$0 | 0; var$0$hi = var$0$hi | 0; @@ -4365,7 +4138,8 @@ var$3 = var$1; var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; - legalfunc$wasm2js_scratch_store_i64(var$0 - Math_imul(var$2, var$3) | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = var$0 - Math_imul(var$2, var$3) | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -4420,7 +4194,8 @@ i64toi32_i32$1 = $65$hi; i64toi32_i32$0 = $65; i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; - legalfunc$wasm2js_scratch_store_i64(i64toi32_i32$3 | i64toi32_i32$0 | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = i64toi32_i32$3 | i64toi32_i32$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -4452,7 +4227,8 @@ i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$3 << i64toi32_i32$4 | 0) | 0; $41 = i64toi32_i32$2 << i64toi32_i32$4 | 0; } - legalfunc$wasm2js_scratch_store_i64($41 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = $41; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -4466,7 +4242,8 @@ } i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; - legalfunc$wasm2js_scratch_store_i64(var$4 & var$0 | 0 | 0, i64toi32_i32$2 | 0); + __wasm_intrinsics_temp_i64 = var$4 & var$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$2; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -4659,7 +4436,8 @@ } } i64toi32_i32$3 = var$5$hi; - legalfunc$wasm2js_scratch_store_i64(var$5 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$5; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -4684,7 +4462,8 @@ return i64toi32_i32$3 | 0; } i64toi32_i32$3 = var$0$hi; - legalfunc$wasm2js_scratch_store_i64(var$0 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -4719,59 +4498,36 @@ return 32 | 0; } - var FUNCTION_TABLE = []; return { "i32_no_fold_div_s_2": $0, "i64_no_fold_div_s_2": legalstub$1 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var i32_no_fold_div_s_2 = retasmFunc.i32_no_fold_div_s_2; export var i64_no_fold_div_s_2 = retasmFunc.i64_no_fold_div_s_2; import { setTempRet0 } from 'env'; -import { getTempRet0 } from 'env'; - - var scratchBuffer = new ArrayBuffer(8); - var i32ScratchView = new Int32Array(scratchBuffer); - var f32ScratchView = new Float32Array(scratchBuffer); - var f64ScratchView = new Float64Array(scratchBuffer); - - function legalimport$wasm2js_scratch_load_i64() { - if (typeof setTempRet0 === 'function') setTempRet0(i32ScratchView[1]); - return i32ScratchView[0]; - } - - function legalimport$wasm2js_scratch_store_i64(low, high) { - i32ScratchView[0] = low; - i32ScratchView[1] = high; - } - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; - var getTempRet0 = env.getTempRet0; + var __wasm_intrinsics_temp_i64 = 0; + var __wasm_intrinsics_temp_i64$hi = 0; var i64toi32_i32$HIGH_BITS = 0; function $0(x) { x = x | 0; @@ -4835,54 +4591,6 @@ return $2 | 0; } - function legalfunc$wasm2js_scratch_load_i64() { - var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $8 = 0, $1_1 = 0, $1$hi = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $1_1 = legalimport$wasm2js_scratch_load_i64() | 0; - $1$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = getTempRet0() | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $8 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $8 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $4$hi = i64toi32_i32$1; - i64toi32_i32$1 = $1$hi; - i64toi32_i32$0 = $1_1; - i64toi32_i32$2 = $4$hi; - i64toi32_i32$3 = $8; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - i64toi32_i32$0 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$2; - return i64toi32_i32$0 | 0; - } - - function legalfunc$wasm2js_scratch_store_i64($0_1, $0$hi) { - $0_1 = $0_1 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $2 = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $0$hi; - $2 = $0_1; - i64toi32_i32$2 = $0_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $8 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - legalimport$wasm2js_scratch_store_i64($2 | 0, $8 | 0); - } - function _ZN17compiler_builtins3int4sdiv3Mod4mod_17h2cbb7bbf36e41d68E(var$0, var$0$hi, var$1, var$1$hi) { var$0 = var$0 | 0; var$0$hi = var$0$hi | 0; @@ -5066,7 +4774,8 @@ var$3 = var$1; var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; - legalfunc$wasm2js_scratch_store_i64(var$0 - Math_imul(var$2, var$3) | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = var$0 - Math_imul(var$2, var$3) | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -5121,7 +4830,8 @@ i64toi32_i32$1 = $65$hi; i64toi32_i32$0 = $65; i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; - legalfunc$wasm2js_scratch_store_i64(i64toi32_i32$3 | i64toi32_i32$0 | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = i64toi32_i32$3 | i64toi32_i32$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -5153,7 +4863,8 @@ i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$3 << i64toi32_i32$4 | 0) | 0; $41 = i64toi32_i32$2 << i64toi32_i32$4 | 0; } - legalfunc$wasm2js_scratch_store_i64($41 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = $41; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -5167,7 +4878,8 @@ } i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; - legalfunc$wasm2js_scratch_store_i64(var$4 & var$0 | 0 | 0, i64toi32_i32$2 | 0); + __wasm_intrinsics_temp_i64 = var$4 & var$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$2; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -5360,7 +5072,8 @@ } } i64toi32_i32$3 = var$5$hi; - legalfunc$wasm2js_scratch_store_i64(var$5 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$5; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -5385,7 +5098,8 @@ return i64toi32_i32$3 | 0; } i64toi32_i32$3 = var$0$hi; - legalfunc$wasm2js_scratch_store_i64(var$0 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -5408,10 +5122,10 @@ i64toi32_i32$1 = var$1$hi; i64toi32_i32$1 = _ZN17compiler_builtins3int4udiv10divmod_u6417h6026910b5ed08e40E(var$0 | 0, i64toi32_i32$0 | 0, var$1 | 0, i64toi32_i32$1 | 0) | 0; i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$0 = legalfunc$wasm2js_scratch_load_i64() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; + i64toi32_i32$0 = __wasm_intrinsics_temp_i64$hi; + i64toi32_i32$1 = __wasm_intrinsics_temp_i64; + i64toi32_i32$HIGH_BITS = i64toi32_i32$0; + return i64toi32_i32$1 | 0; } function __wasm_ctz_i32(var$0) { @@ -5422,52 +5136,36 @@ return 32 | 0; } - var FUNCTION_TABLE = []; return { "i32_no_fold_rem_s_2": $0, "i64_no_fold_rem_s_2": legalstub$1 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0,getTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var i32_no_fold_rem_s_2 = retasmFunc.i32_no_fold_rem_s_2; export var i64_no_fold_rem_s_2 = retasmFunc.i64_no_fold_rem_s_2; import { setTempRet0 } from 'env'; - - var scratchBuffer = new ArrayBuffer(8); - var i32ScratchView = new Int32Array(scratchBuffer); - var f32ScratchView = new Float32Array(scratchBuffer); - var f64ScratchView = new Float64Array(scratchBuffer); - - function legalimport$wasm2js_scratch_store_i64(low, high) { - i32ScratchView[0] = low; - i32ScratchView[1] = high; - } - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; + var __wasm_intrinsics_temp_i64 = 0; + var __wasm_intrinsics_temp_i64$hi = 0; var i64toi32_i32$HIGH_BITS = 0; function $0(x) { x = x | 0; @@ -5593,26 +5291,6 @@ return $2_1 | 0; } - function legalfunc$wasm2js_scratch_store_i64($0_1, $0$hi) { - $0_1 = $0_1 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $2_1 = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $0$hi; - $2_1 = $0_1; - i64toi32_i32$2 = $0_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $8 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - legalimport$wasm2js_scratch_store_i64($2_1 | 0, $8 | 0); - } - function _ZN17compiler_builtins3int4sdiv3Div3div17he78fc483e41d7ec7E(var$0, var$0$hi, var$1, var$1$hi) { var$0 = var$0 | 0; var$0$hi = var$0$hi | 0; @@ -5800,7 +5478,8 @@ var$3 = var$1; var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; - legalfunc$wasm2js_scratch_store_i64(var$0 - Math_imul(var$2, var$3) | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = var$0 - Math_imul(var$2, var$3) | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -5855,7 +5534,8 @@ i64toi32_i32$1 = $65$hi; i64toi32_i32$0 = $65; i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; - legalfunc$wasm2js_scratch_store_i64(i64toi32_i32$3 | i64toi32_i32$0 | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = i64toi32_i32$3 | i64toi32_i32$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -5887,7 +5567,8 @@ i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$3 << i64toi32_i32$4 | 0) | 0; $41 = i64toi32_i32$2 << i64toi32_i32$4 | 0; } - legalfunc$wasm2js_scratch_store_i64($41 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = $41; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -5901,7 +5582,8 @@ } i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; - legalfunc$wasm2js_scratch_store_i64(var$4 & var$0 | 0 | 0, i64toi32_i32$2 | 0); + __wasm_intrinsics_temp_i64 = var$4 & var$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$2; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -6094,7 +5776,8 @@ } } i64toi32_i32$3 = var$5$hi; - legalfunc$wasm2js_scratch_store_i64(var$5 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$5; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -6119,7 +5802,8 @@ return i64toi32_i32$3 | 0; } i64toi32_i32$3 = var$0$hi; - legalfunc$wasm2js_scratch_store_i64(var$0 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -6170,7 +5854,6 @@ return 32 | 0; } - var FUNCTION_TABLE = []; return { "i32_div_s_0": $0, "i32_div_u_0": $1, @@ -6179,47 +5862,32 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var i32_div_s_0 = retasmFunc.i32_div_s_0; export var i32_div_u_0 = retasmFunc.i32_div_u_0; export var i64_div_s_0 = retasmFunc.i64_div_s_0; export var i64_div_u_0 = retasmFunc.i64_div_u_0; import { setTempRet0 } from 'env'; - - var scratchBuffer = new ArrayBuffer(8); - var i32ScratchView = new Int32Array(scratchBuffer); - var f32ScratchView = new Float32Array(scratchBuffer); - var f64ScratchView = new Float64Array(scratchBuffer); - - function legalimport$wasm2js_scratch_store_i64(low, high) { - i32ScratchView[0] = low; - i32ScratchView[1] = high; - } - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; + var __wasm_intrinsics_temp_i64 = 0; + var __wasm_intrinsics_temp_i64$hi = 0; var i64toi32_i32$HIGH_BITS = 0; function $0(x) { x = x | 0; @@ -6345,26 +6013,6 @@ return $2_1 | 0; } - function legalfunc$wasm2js_scratch_store_i64($0_1, $0$hi) { - $0_1 = $0_1 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $2_1 = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $0$hi; - $2_1 = $0_1; - i64toi32_i32$2 = $0_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $8 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - legalimport$wasm2js_scratch_store_i64($2_1 | 0, $8 | 0); - } - function _ZN17compiler_builtins3int4sdiv3Div3div17he78fc483e41d7ec7E(var$0, var$0$hi, var$1, var$1$hi) { var$0 = var$0 | 0; var$0$hi = var$0$hi | 0; @@ -6552,7 +6200,8 @@ var$3 = var$1; var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; - legalfunc$wasm2js_scratch_store_i64(var$0 - Math_imul(var$2, var$3) | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = var$0 - Math_imul(var$2, var$3) | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -6607,7 +6256,8 @@ i64toi32_i32$1 = $65$hi; i64toi32_i32$0 = $65; i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; - legalfunc$wasm2js_scratch_store_i64(i64toi32_i32$3 | i64toi32_i32$0 | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = i64toi32_i32$3 | i64toi32_i32$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -6639,7 +6289,8 @@ i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$3 << i64toi32_i32$4 | 0) | 0; $41 = i64toi32_i32$2 << i64toi32_i32$4 | 0; } - legalfunc$wasm2js_scratch_store_i64($41 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = $41; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -6653,7 +6304,8 @@ } i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; - legalfunc$wasm2js_scratch_store_i64(var$4 & var$0 | 0 | 0, i64toi32_i32$2 | 0); + __wasm_intrinsics_temp_i64 = var$4 & var$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$2; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -6846,7 +6498,8 @@ } } i64toi32_i32$3 = var$5$hi; - legalfunc$wasm2js_scratch_store_i64(var$5 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$5; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -6871,7 +6524,8 @@ return i64toi32_i32$3 | 0; } i64toi32_i32$3 = var$0$hi; - legalfunc$wasm2js_scratch_store_i64(var$0 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -6922,7 +6576,6 @@ return 32 | 0; } - var FUNCTION_TABLE = []; return { "i32_div_s_3": $0, "i32_div_u_3": $1, @@ -6931,47 +6584,32 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var i32_div_s_3 = retasmFunc.i32_div_s_3; export var i32_div_u_3 = retasmFunc.i32_div_u_3; export var i64_div_s_3 = retasmFunc.i64_div_s_3; export var i64_div_u_3 = retasmFunc.i64_div_u_3; import { setTempRet0 } from 'env'; - - var scratchBuffer = new ArrayBuffer(8); - var i32ScratchView = new Int32Array(scratchBuffer); - var f32ScratchView = new Float32Array(scratchBuffer); - var f64ScratchView = new Float64Array(scratchBuffer); - - function legalimport$wasm2js_scratch_store_i64(low, high) { - i32ScratchView[0] = low; - i32ScratchView[1] = high; - } - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; + var __wasm_intrinsics_temp_i64 = 0; + var __wasm_intrinsics_temp_i64$hi = 0; var i64toi32_i32$HIGH_BITS = 0; function $0(x) { x = x | 0; @@ -7097,26 +6735,6 @@ return $2_1 | 0; } - function legalfunc$wasm2js_scratch_store_i64($0_1, $0$hi) { - $0_1 = $0_1 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $2_1 = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $0$hi; - $2_1 = $0_1; - i64toi32_i32$2 = $0_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $8 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - legalimport$wasm2js_scratch_store_i64($2_1 | 0, $8 | 0); - } - function _ZN17compiler_builtins3int4sdiv3Div3div17he78fc483e41d7ec7E(var$0, var$0$hi, var$1, var$1$hi) { var$0 = var$0 | 0; var$0$hi = var$0$hi | 0; @@ -7304,7 +6922,8 @@ var$3 = var$1; var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; - legalfunc$wasm2js_scratch_store_i64(var$0 - Math_imul(var$2, var$3) | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = var$0 - Math_imul(var$2, var$3) | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -7359,7 +6978,8 @@ i64toi32_i32$1 = $65$hi; i64toi32_i32$0 = $65; i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; - legalfunc$wasm2js_scratch_store_i64(i64toi32_i32$3 | i64toi32_i32$0 | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = i64toi32_i32$3 | i64toi32_i32$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -7391,7 +7011,8 @@ i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$3 << i64toi32_i32$4 | 0) | 0; $41 = i64toi32_i32$2 << i64toi32_i32$4 | 0; } - legalfunc$wasm2js_scratch_store_i64($41 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = $41; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -7405,7 +7026,8 @@ } i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; - legalfunc$wasm2js_scratch_store_i64(var$4 & var$0 | 0 | 0, i64toi32_i32$2 | 0); + __wasm_intrinsics_temp_i64 = var$4 & var$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$2; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -7598,7 +7220,8 @@ } } i64toi32_i32$3 = var$5$hi; - legalfunc$wasm2js_scratch_store_i64(var$5 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$5; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -7623,7 +7246,8 @@ return i64toi32_i32$3 | 0; } i64toi32_i32$3 = var$0$hi; - legalfunc$wasm2js_scratch_store_i64(var$0 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -7674,7 +7298,6 @@ return 32 | 0; } - var FUNCTION_TABLE = []; return { "i32_div_s_5": $0, "i32_div_u_5": $1, @@ -7683,47 +7306,32 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var i32_div_s_5 = retasmFunc.i32_div_s_5; export var i32_div_u_5 = retasmFunc.i32_div_u_5; export var i64_div_s_5 = retasmFunc.i64_div_s_5; export var i64_div_u_5 = retasmFunc.i64_div_u_5; import { setTempRet0 } from 'env'; - - var scratchBuffer = new ArrayBuffer(8); - var i32ScratchView = new Int32Array(scratchBuffer); - var f32ScratchView = new Float32Array(scratchBuffer); - var f64ScratchView = new Float64Array(scratchBuffer); - - function legalimport$wasm2js_scratch_store_i64(low, high) { - i32ScratchView[0] = low; - i32ScratchView[1] = high; - } - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; + var __wasm_intrinsics_temp_i64 = 0; + var __wasm_intrinsics_temp_i64$hi = 0; var i64toi32_i32$HIGH_BITS = 0; function $0(x) { x = x | 0; @@ -7849,26 +7457,6 @@ return $2_1 | 0; } - function legalfunc$wasm2js_scratch_store_i64($0_1, $0$hi) { - $0_1 = $0_1 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $2_1 = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $0$hi; - $2_1 = $0_1; - i64toi32_i32$2 = $0_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $8 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - legalimport$wasm2js_scratch_store_i64($2_1 | 0, $8 | 0); - } - function _ZN17compiler_builtins3int4sdiv3Div3div17he78fc483e41d7ec7E(var$0, var$0$hi, var$1, var$1$hi) { var$0 = var$0 | 0; var$0$hi = var$0$hi | 0; @@ -8056,7 +7644,8 @@ var$3 = var$1; var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; - legalfunc$wasm2js_scratch_store_i64(var$0 - Math_imul(var$2, var$3) | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = var$0 - Math_imul(var$2, var$3) | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -8111,7 +7700,8 @@ i64toi32_i32$1 = $65$hi; i64toi32_i32$0 = $65; i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; - legalfunc$wasm2js_scratch_store_i64(i64toi32_i32$3 | i64toi32_i32$0 | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = i64toi32_i32$3 | i64toi32_i32$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -8143,7 +7733,8 @@ i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$3 << i64toi32_i32$4 | 0) | 0; $41 = i64toi32_i32$2 << i64toi32_i32$4 | 0; } - legalfunc$wasm2js_scratch_store_i64($41 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = $41; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -8157,7 +7748,8 @@ } i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; - legalfunc$wasm2js_scratch_store_i64(var$4 & var$0 | 0 | 0, i64toi32_i32$2 | 0); + __wasm_intrinsics_temp_i64 = var$4 & var$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$2; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -8350,7 +7942,8 @@ } } i64toi32_i32$3 = var$5$hi; - legalfunc$wasm2js_scratch_store_i64(var$5 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$5; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -8375,7 +7968,8 @@ return i64toi32_i32$3 | 0; } i64toi32_i32$3 = var$0$hi; - legalfunc$wasm2js_scratch_store_i64(var$0 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -8426,7 +8020,6 @@ return 32 | 0; } - var FUNCTION_TABLE = []; return { "i32_div_s_7": $0, "i32_div_u_7": $1, @@ -8435,54 +8028,32 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var i32_div_s_7 = retasmFunc.i32_div_s_7; export var i32_div_u_7 = retasmFunc.i32_div_u_7; export var i64_div_s_7 = retasmFunc.i64_div_s_7; export var i64_div_u_7 = retasmFunc.i64_div_u_7; import { setTempRet0 } from 'env'; -import { getTempRet0 } from 'env'; - - var scratchBuffer = new ArrayBuffer(8); - var i32ScratchView = new Int32Array(scratchBuffer); - var f32ScratchView = new Float32Array(scratchBuffer); - var f64ScratchView = new Float64Array(scratchBuffer); - - function legalimport$wasm2js_scratch_load_i64() { - if (typeof setTempRet0 === 'function') setTempRet0(i32ScratchView[1]); - return i32ScratchView[0]; - } - - function legalimport$wasm2js_scratch_store_i64(low, high) { - i32ScratchView[0] = low; - i32ScratchView[1] = high; - } - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; - var getTempRet0 = env.getTempRet0; + var __wasm_intrinsics_temp_i64 = 0; + var __wasm_intrinsics_temp_i64$hi = 0; var i64toi32_i32$HIGH_BITS = 0; function $0(x) { x = x | 0; @@ -8608,54 +8179,6 @@ return $2_1 | 0; } - function legalfunc$wasm2js_scratch_load_i64() { - var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $8 = 0, $1_1 = 0, $1$hi = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $1_1 = legalimport$wasm2js_scratch_load_i64() | 0; - $1$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = getTempRet0() | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $8 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $8 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $4$hi = i64toi32_i32$1; - i64toi32_i32$1 = $1$hi; - i64toi32_i32$0 = $1_1; - i64toi32_i32$2 = $4$hi; - i64toi32_i32$3 = $8; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - i64toi32_i32$0 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$2; - return i64toi32_i32$0 | 0; - } - - function legalfunc$wasm2js_scratch_store_i64($0_1, $0$hi) { - $0_1 = $0_1 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $2_1 = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $0$hi; - $2_1 = $0_1; - i64toi32_i32$2 = $0_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $8 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - legalimport$wasm2js_scratch_store_i64($2_1 | 0, $8 | 0); - } - function _ZN17compiler_builtins3int4sdiv3Mod4mod_17h2cbb7bbf36e41d68E(var$0, var$0$hi, var$1, var$1$hi) { var$0 = var$0 | 0; var$0$hi = var$0$hi | 0; @@ -8823,7 +8346,8 @@ var$3 = var$1; var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; - legalfunc$wasm2js_scratch_store_i64(var$0 - Math_imul(var$2, var$3) | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = var$0 - Math_imul(var$2, var$3) | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -8878,7 +8402,8 @@ i64toi32_i32$1 = $65$hi; i64toi32_i32$0 = $65; i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; - legalfunc$wasm2js_scratch_store_i64(i64toi32_i32$3 | i64toi32_i32$0 | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = i64toi32_i32$3 | i64toi32_i32$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -8910,7 +8435,8 @@ i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$3 << i64toi32_i32$4 | 0) | 0; $41 = i64toi32_i32$2 << i64toi32_i32$4 | 0; } - legalfunc$wasm2js_scratch_store_i64($41 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = $41; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -8924,7 +8450,8 @@ } i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; - legalfunc$wasm2js_scratch_store_i64(var$4 & var$0 | 0 | 0, i64toi32_i32$2 | 0); + __wasm_intrinsics_temp_i64 = var$4 & var$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$2; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -9117,7 +8644,8 @@ } } i64toi32_i32$3 = var$5$hi; - legalfunc$wasm2js_scratch_store_i64(var$5 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$5; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -9142,7 +8670,8 @@ return i64toi32_i32$3 | 0; } i64toi32_i32$3 = var$0$hi; - legalfunc$wasm2js_scratch_store_i64(var$0 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -9181,10 +8710,10 @@ i64toi32_i32$1 = var$1$hi; i64toi32_i32$1 = _ZN17compiler_builtins3int4udiv10divmod_u6417h6026910b5ed08e40E(var$0 | 0, i64toi32_i32$0 | 0, var$1 | 0, i64toi32_i32$1 | 0) | 0; i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$0 = legalfunc$wasm2js_scratch_load_i64() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; + i64toi32_i32$0 = __wasm_intrinsics_temp_i64$hi; + i64toi32_i32$1 = __wasm_intrinsics_temp_i64; + i64toi32_i32$HIGH_BITS = i64toi32_i32$0; + return i64toi32_i32$1 | 0; } function __wasm_ctz_i32(var$0) { @@ -9195,7 +8724,6 @@ return 32 | 0; } - var FUNCTION_TABLE = []; return { "i32_rem_s_3": $0, "i32_rem_u_3": $1, @@ -9204,54 +8732,32 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0,getTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var i32_rem_s_3 = retasmFunc.i32_rem_s_3; export var i32_rem_u_3 = retasmFunc.i32_rem_u_3; export var i64_rem_s_3 = retasmFunc.i64_rem_s_3; export var i64_rem_u_3 = retasmFunc.i64_rem_u_3; import { setTempRet0 } from 'env'; -import { getTempRet0 } from 'env'; - - var scratchBuffer = new ArrayBuffer(8); - var i32ScratchView = new Int32Array(scratchBuffer); - var f32ScratchView = new Float32Array(scratchBuffer); - var f64ScratchView = new Float64Array(scratchBuffer); - - function legalimport$wasm2js_scratch_load_i64() { - if (typeof setTempRet0 === 'function') setTempRet0(i32ScratchView[1]); - return i32ScratchView[0]; - } - - function legalimport$wasm2js_scratch_store_i64(low, high) { - i32ScratchView[0] = low; - i32ScratchView[1] = high; - } - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; - var getTempRet0 = env.getTempRet0; + var __wasm_intrinsics_temp_i64 = 0; + var __wasm_intrinsics_temp_i64$hi = 0; var i64toi32_i32$HIGH_BITS = 0; function $0(x) { x = x | 0; @@ -9377,54 +8883,6 @@ return $2_1 | 0; } - function legalfunc$wasm2js_scratch_load_i64() { - var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $8 = 0, $1_1 = 0, $1$hi = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $1_1 = legalimport$wasm2js_scratch_load_i64() | 0; - $1$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = getTempRet0() | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $8 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $8 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $4$hi = i64toi32_i32$1; - i64toi32_i32$1 = $1$hi; - i64toi32_i32$0 = $1_1; - i64toi32_i32$2 = $4$hi; - i64toi32_i32$3 = $8; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - i64toi32_i32$0 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$2; - return i64toi32_i32$0 | 0; - } - - function legalfunc$wasm2js_scratch_store_i64($0_1, $0$hi) { - $0_1 = $0_1 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $2_1 = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $0$hi; - $2_1 = $0_1; - i64toi32_i32$2 = $0_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $8 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - legalimport$wasm2js_scratch_store_i64($2_1 | 0, $8 | 0); - } - function _ZN17compiler_builtins3int4sdiv3Mod4mod_17h2cbb7bbf36e41d68E(var$0, var$0$hi, var$1, var$1$hi) { var$0 = var$0 | 0; var$0$hi = var$0$hi | 0; @@ -9592,7 +9050,8 @@ var$3 = var$1; var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; - legalfunc$wasm2js_scratch_store_i64(var$0 - Math_imul(var$2, var$3) | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = var$0 - Math_imul(var$2, var$3) | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -9647,7 +9106,8 @@ i64toi32_i32$1 = $65$hi; i64toi32_i32$0 = $65; i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; - legalfunc$wasm2js_scratch_store_i64(i64toi32_i32$3 | i64toi32_i32$0 | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = i64toi32_i32$3 | i64toi32_i32$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -9679,7 +9139,8 @@ i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$3 << i64toi32_i32$4 | 0) | 0; $41 = i64toi32_i32$2 << i64toi32_i32$4 | 0; } - legalfunc$wasm2js_scratch_store_i64($41 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = $41; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -9693,7 +9154,8 @@ } i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; - legalfunc$wasm2js_scratch_store_i64(var$4 & var$0 | 0 | 0, i64toi32_i32$2 | 0); + __wasm_intrinsics_temp_i64 = var$4 & var$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$2; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -9886,7 +9348,8 @@ } } i64toi32_i32$3 = var$5$hi; - legalfunc$wasm2js_scratch_store_i64(var$5 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$5; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -9911,7 +9374,8 @@ return i64toi32_i32$3 | 0; } i64toi32_i32$3 = var$0$hi; - legalfunc$wasm2js_scratch_store_i64(var$0 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -9950,10 +9414,10 @@ i64toi32_i32$1 = var$1$hi; i64toi32_i32$1 = _ZN17compiler_builtins3int4udiv10divmod_u6417h6026910b5ed08e40E(var$0 | 0, i64toi32_i32$0 | 0, var$1 | 0, i64toi32_i32$1 | 0) | 0; i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$0 = legalfunc$wasm2js_scratch_load_i64() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; + i64toi32_i32$0 = __wasm_intrinsics_temp_i64$hi; + i64toi32_i32$1 = __wasm_intrinsics_temp_i64; + i64toi32_i32$HIGH_BITS = i64toi32_i32$0; + return i64toi32_i32$1 | 0; } function __wasm_ctz_i32(var$0) { @@ -9964,7 +9428,6 @@ return 32 | 0; } - var FUNCTION_TABLE = []; return { "i32_rem_s_5": $0, "i32_rem_u_5": $1, @@ -9973,54 +9436,32 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0,getTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var i32_rem_s_5 = retasmFunc.i32_rem_s_5; export var i32_rem_u_5 = retasmFunc.i32_rem_u_5; export var i64_rem_s_5 = retasmFunc.i64_rem_s_5; export var i64_rem_u_5 = retasmFunc.i64_rem_u_5; import { setTempRet0 } from 'env'; -import { getTempRet0 } from 'env'; - - var scratchBuffer = new ArrayBuffer(8); - var i32ScratchView = new Int32Array(scratchBuffer); - var f32ScratchView = new Float32Array(scratchBuffer); - var f64ScratchView = new Float64Array(scratchBuffer); - - function legalimport$wasm2js_scratch_load_i64() { - if (typeof setTempRet0 === 'function') setTempRet0(i32ScratchView[1]); - return i32ScratchView[0]; - } - - function legalimport$wasm2js_scratch_store_i64(low, high) { - i32ScratchView[0] = low; - i32ScratchView[1] = high; - } - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; - var getTempRet0 = env.getTempRet0; + var __wasm_intrinsics_temp_i64 = 0; + var __wasm_intrinsics_temp_i64$hi = 0; var i64toi32_i32$HIGH_BITS = 0; function $0(x) { x = x | 0; @@ -10146,54 +9587,6 @@ return $2_1 | 0; } - function legalfunc$wasm2js_scratch_load_i64() { - var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $8 = 0, $1_1 = 0, $1$hi = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $1_1 = legalimport$wasm2js_scratch_load_i64() | 0; - $1$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = getTempRet0() | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $8 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $8 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $4$hi = i64toi32_i32$1; - i64toi32_i32$1 = $1$hi; - i64toi32_i32$0 = $1_1; - i64toi32_i32$2 = $4$hi; - i64toi32_i32$3 = $8; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - i64toi32_i32$0 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$2; - return i64toi32_i32$0 | 0; - } - - function legalfunc$wasm2js_scratch_store_i64($0_1, $0$hi) { - $0_1 = $0_1 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $2_1 = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $0$hi; - $2_1 = $0_1; - i64toi32_i32$2 = $0_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $8 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - legalimport$wasm2js_scratch_store_i64($2_1 | 0, $8 | 0); - } - function _ZN17compiler_builtins3int4sdiv3Mod4mod_17h2cbb7bbf36e41d68E(var$0, var$0$hi, var$1, var$1$hi) { var$0 = var$0 | 0; var$0$hi = var$0$hi | 0; @@ -10361,7 +9754,8 @@ var$3 = var$1; var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; - legalfunc$wasm2js_scratch_store_i64(var$0 - Math_imul(var$2, var$3) | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = var$0 - Math_imul(var$2, var$3) | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -10416,7 +9810,8 @@ i64toi32_i32$1 = $65$hi; i64toi32_i32$0 = $65; i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; - legalfunc$wasm2js_scratch_store_i64(i64toi32_i32$3 | i64toi32_i32$0 | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = i64toi32_i32$3 | i64toi32_i32$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -10448,7 +9843,8 @@ i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$3 << i64toi32_i32$4 | 0) | 0; $41 = i64toi32_i32$2 << i64toi32_i32$4 | 0; } - legalfunc$wasm2js_scratch_store_i64($41 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = $41; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -10462,7 +9858,8 @@ } i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; - legalfunc$wasm2js_scratch_store_i64(var$4 & var$0 | 0 | 0, i64toi32_i32$2 | 0); + __wasm_intrinsics_temp_i64 = var$4 & var$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$2; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -10655,7 +10052,8 @@ } } i64toi32_i32$3 = var$5$hi; - legalfunc$wasm2js_scratch_store_i64(var$5 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$5; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -10680,7 +10078,8 @@ return i64toi32_i32$3 | 0; } i64toi32_i32$3 = var$0$hi; - legalfunc$wasm2js_scratch_store_i64(var$0 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -10719,10 +10118,10 @@ i64toi32_i32$1 = var$1$hi; i64toi32_i32$1 = _ZN17compiler_builtins3int4udiv10divmod_u6417h6026910b5ed08e40E(var$0 | 0, i64toi32_i32$0 | 0, var$1 | 0, i64toi32_i32$1 | 0) | 0; i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$0 = legalfunc$wasm2js_scratch_load_i64() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; + i64toi32_i32$0 = __wasm_intrinsics_temp_i64$hi; + i64toi32_i32$1 = __wasm_intrinsics_temp_i64; + i64toi32_i32$HIGH_BITS = i64toi32_i32$0; + return i64toi32_i32$1 | 0; } function __wasm_ctz_i32(var$0) { @@ -10733,7 +10132,6 @@ return 32 | 0; } - var FUNCTION_TABLE = []; return { "i32_rem_s_7": $0, "i32_rem_u_7": $1, @@ -10742,47 +10140,32 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0,getTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var i32_rem_s_7 = retasmFunc.i32_rem_s_7; export var i32_rem_u_7 = retasmFunc.i32_rem_u_7; export var i64_rem_s_7 = retasmFunc.i64_rem_s_7; export var i64_rem_u_7 = retasmFunc.i64_rem_u_7; import { setTempRet0 } from 'env'; - - var scratchBuffer = new ArrayBuffer(8); - var i32ScratchView = new Int32Array(scratchBuffer); - var f32ScratchView = new Float32Array(scratchBuffer); - var f64ScratchView = new Float64Array(scratchBuffer); - - function legalimport$wasm2js_scratch_store_i64(low, high) { - i32ScratchView[0] = low; - i32ScratchView[1] = high; - } - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; + var __wasm_intrinsics_temp_i64 = 0; + var __wasm_intrinsics_temp_i64$hi = 0; var i64toi32_i32$HIGH_BITS = 0; function $0(x) { x = x | 0; @@ -10846,26 +10229,6 @@ return $2 | 0; } - function legalfunc$wasm2js_scratch_store_i64($0_1, $0$hi) { - $0_1 = $0_1 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $2 = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $0$hi; - $2 = $0_1; - i64toi32_i32$2 = $0_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $8 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - legalimport$wasm2js_scratch_store_i64($2 | 0, $8 | 0); - } - function _ZN17compiler_builtins3int4sdiv3Div3div17he78fc483e41d7ec7E(var$0, var$0$hi, var$1, var$1$hi) { var$0 = var$0 | 0; var$0$hi = var$0$hi | 0; @@ -11069,7 +10432,8 @@ var$3 = var$1; var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; - legalfunc$wasm2js_scratch_store_i64(var$0 - Math_imul(var$2, var$3) | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = var$0 - Math_imul(var$2, var$3) | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -11124,7 +10488,8 @@ i64toi32_i32$1 = $65$hi; i64toi32_i32$0 = $65; i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; - legalfunc$wasm2js_scratch_store_i64(i64toi32_i32$3 | i64toi32_i32$0 | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = i64toi32_i32$3 | i64toi32_i32$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -11156,7 +10521,8 @@ i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$3 << i64toi32_i32$4 | 0) | 0; $41 = i64toi32_i32$2 << i64toi32_i32$4 | 0; } - legalfunc$wasm2js_scratch_store_i64($41 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = $41; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -11170,7 +10536,8 @@ } i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; - legalfunc$wasm2js_scratch_store_i64(var$4 & var$0 | 0 | 0, i64toi32_i32$2 | 0); + __wasm_intrinsics_temp_i64 = var$4 & var$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$2; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -11363,7 +10730,8 @@ } } i64toi32_i32$3 = var$5$hi; - legalfunc$wasm2js_scratch_store_i64(var$5 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$5; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -11388,7 +10756,8 @@ return i64toi32_i32$3 | 0; } i64toi32_i32$3 = var$0$hi; - legalfunc$wasm2js_scratch_store_i64(var$0 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -11423,14 +10792,14 @@ return 32 | 0; } - var FUNCTION_TABLE = []; return { "i32_no_fold_div_neg1": $0, "i64_no_fold_div_neg1": legalstub$1 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var i32_no_fold_div_neg1 = retasmFunc.i32_no_fold_div_neg1; export var i64_no_fold_div_neg1 = retasmFunc.i64_no_fold_div_neg1; diff -Nru binaryen-91/test/wasm2js/int_literals.2asm.js binaryen-99/test/wasm2js/int_literals.2asm.js --- binaryen-91/test/wasm2js/int_literals.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/int_literals.2asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,424 +0,0 @@ -import { setTempRet0 } from 'env'; - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; - var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var setTempRet0 = env.setTempRet0; - var i64toi32_i32$HIGH_BITS = 0; - function $0() { - return 195940365 | 0; - } - - function $1() { - return -1 | 0; - } - - function $2() { - return 2147483647 | 0; - } - - function $3() { - return -2147483647 | 0; - } - - function $4() { - return -2147483648 | 0; - } - - function $5() { - return -2147483648 | 0; - } - - function $6() { - return -2147483648 + 1 | 0 | 0; - } - - function $7() { - return 0 | 0; - } - - function $8() { - return 10 | 0; - } - - function $9() { - return -1 | 0; - } - - function $10() { - return 42 | 0; - } - - function $11() { - i64toi32_i32$HIGH_BITS = 212580974; - return 195455598 | 0; - } - - function $12() { - i64toi32_i32$HIGH_BITS = -1; - return -1 | 0; - } - - function $13() { - i64toi32_i32$HIGH_BITS = 2147483647; - return -1 | 0; - } - - function $14() { - i64toi32_i32$HIGH_BITS = -2147483648; - return 1 | 0; - } - - function $15() { - i64toi32_i32$HIGH_BITS = -2147483648; - return 0 | 0; - } - - function $16() { - i64toi32_i32$HIGH_BITS = -2147483648; - return 0 | 0; - } - - function $17() { - var i64toi32_i32$5 = 0, i64toi32_i32$3 = 0, i64toi32_i32$4 = 0; - i64toi32_i32$3 = 1; - i64toi32_i32$4 = 0 + i64toi32_i32$3 | 0; - i64toi32_i32$5 = -2147483648 + 0 | 0; - if (i64toi32_i32$4 >>> 0 < i64toi32_i32$3 >>> 0) { - i64toi32_i32$5 = i64toi32_i32$5 + 1 | 0 - } - i64toi32_i32$HIGH_BITS = i64toi32_i32$5; - return i64toi32_i32$4 | 0; - } - - function $18() { - i64toi32_i32$HIGH_BITS = 0; - return 0 | 0; - } - - function $19() { - i64toi32_i32$HIGH_BITS = 0; - return 10 | 0; - } - - function $20() { - i64toi32_i32$HIGH_BITS = -1; - return -1 | 0; - } - - function $21() { - i64toi32_i32$HIGH_BITS = 0; - return 42 | 0; - } - - function legalstub$11() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $11() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0_1 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7_1 | 0); - i64toi32_i32$0 = $0$hi; - return $0_1 | 0; - } - - function legalstub$12() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $12() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0_1 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7_1 | 0); - i64toi32_i32$0 = $0$hi; - return $0_1 | 0; - } - - function legalstub$13() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $13() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0_1 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7_1 | 0); - i64toi32_i32$0 = $0$hi; - return $0_1 | 0; - } - - function legalstub$14() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $14() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0_1 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7_1 | 0); - i64toi32_i32$0 = $0$hi; - return $0_1 | 0; - } - - function legalstub$15() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $15() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0_1 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7_1 | 0); - i64toi32_i32$0 = $0$hi; - return $0_1 | 0; - } - - function legalstub$16() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $16() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0_1 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7_1 | 0); - i64toi32_i32$0 = $0$hi; - return $0_1 | 0; - } - - function legalstub$17() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $17() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0_1 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7_1 | 0); - i64toi32_i32$0 = $0$hi; - return $0_1 | 0; - } - - function legalstub$18() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $18() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0_1 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7_1 | 0); - i64toi32_i32$0 = $0$hi; - return $0_1 | 0; - } - - function legalstub$19() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $19() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0_1 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7_1 | 0); - i64toi32_i32$0 = $0$hi; - return $0_1 | 0; - } - - function legalstub$20() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $20() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0_1 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7_1 | 0); - i64toi32_i32$0 = $0$hi; - return $0_1 | 0; - } - - function legalstub$21() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $21() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0_1 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7_1 | 0); - i64toi32_i32$0 = $0$hi; - return $0_1 | 0; - } - - var FUNCTION_TABLE = []; - return { - "i32_test": $0, - "i32_umax": $1, - "i32_smax": $2, - "i32_neg_smax": $3, - "i32_smin": $4, - "i32_alt_smin": $5, - "i32_inc_smin": $6, - "i32_neg_zero": $7, - "i32_not_octal": $8, - "i32_unsigned_decimal": $9, - "i32_plus_sign": $10, - "i64_test": legalstub$11, - "i64_umax": legalstub$12, - "i64_smax": legalstub$13, - "i64_neg_smax": legalstub$14, - "i64_smin": legalstub$15, - "i64_alt_smin": legalstub$16, - "i64_inc_smin": legalstub$17, - "i64_neg_zero": legalstub$18, - "i64_not_octal": legalstub$19, - "i64_unsigned_decimal": legalstub$20, - "i64_plus_sign": legalstub$21 - }; -} - -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); -export var i32_test = retasmFunc.i32_test; -export var i32_umax = retasmFunc.i32_umax; -export var i32_smax = retasmFunc.i32_smax; -export var i32_neg_smax = retasmFunc.i32_neg_smax; -export var i32_smin = retasmFunc.i32_smin; -export var i32_alt_smin = retasmFunc.i32_alt_smin; -export var i32_inc_smin = retasmFunc.i32_inc_smin; -export var i32_neg_zero = retasmFunc.i32_neg_zero; -export var i32_not_octal = retasmFunc.i32_not_octal; -export var i32_unsigned_decimal = retasmFunc.i32_unsigned_decimal; -export var i32_plus_sign = retasmFunc.i32_plus_sign; -export var i64_test = retasmFunc.i64_test; -export var i64_umax = retasmFunc.i64_umax; -export var i64_smax = retasmFunc.i64_smax; -export var i64_neg_smax = retasmFunc.i64_neg_smax; -export var i64_smin = retasmFunc.i64_smin; -export var i64_alt_smin = retasmFunc.i64_alt_smin; -export var i64_inc_smin = retasmFunc.i64_inc_smin; -export var i64_neg_zero = retasmFunc.i64_neg_zero; -export var i64_not_octal = retasmFunc.i64_not_octal; -export var i64_unsigned_decimal = retasmFunc.i64_unsigned_decimal; -export var i64_plus_sign = retasmFunc.i64_plus_sign; diff -Nru binaryen-91/test/wasm2js/labels.2asm.js binaryen-99/test/wasm2js/labels.2asm.js --- binaryen-91/test/wasm2js/labels.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/labels.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $0() { var $0_1 = 0; exit : { @@ -123,7 +116,7 @@ function $7() { var i = 0; i = 0; - block_1 : { + block : { l : { break l; } @@ -151,9 +144,9 @@ function $8() { var i = 0; i = 0; - block_1 : { - if_1 : { - break if_1; + block : { + if_ : { + break if_; } i = i + 1 | 0; if5 : { @@ -181,7 +174,7 @@ var $2_1 = 0, $3_1 = 0; ret : { exit : { - $0_2 : { + $0 : { switch ($0_1 | 0) { case 1: case 2: @@ -192,7 +185,7 @@ break ret; default: case 0: - break $0_2; + break $0; }; } $2_1 = 5; @@ -204,12 +197,12 @@ function $10($0_1) { $0_1 = $0_1 | 0; - $1_1 : { + $1 : { switch ($0_1 | 0) { case 0: return 0 | 0; default: - break $1_1; + break $1; }; } return 2 | 0; @@ -316,18 +309,17 @@ } function $17() { - var $1_2 = 0, $2_1 = 0; + var $1_1 = 0, $2_1 = 0; l1 : { - $1_2 = 2; + $1_1 = 2; l113 : { $2_1 = 3; break l113; } } - return $1_2 + $2_1 | 0 | 0; + return $1_1 + $2_1 | 0 | 0; } - var FUNCTION_TABLE = []; return { "block": $0, "loop1": $1, @@ -350,8 +342,8 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var block = retasmFunc.block; export var loop1 = retasmFunc.loop1; export var loop2 = retasmFunc.loop2; diff -Nru binaryen-91/test/wasm2js/left-to-right.2asm.js binaryen-99/test/wasm2js/left-to-right.2asm.js --- binaryen-91/test/wasm2js/left-to-right.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/left-to-right.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,7 @@ -import { getTempRet0 } from 'env'; + var bufferView; - var scratchBuffer = new ArrayBuffer(8); + var scratchBuffer = new ArrayBuffer(16); var i32ScratchView = new Int32Array(scratchBuffer); var f32ScratchView = new Float32Array(scratchBuffer); var f64ScratchView = new Float64Array(scratchBuffer); @@ -22,42 +22,35 @@ f64ScratchView[0] = value; } - function legalimport$wasm2js_scratch_load_i64() { - if (typeof setTempRet0 === 'function') setTempRet0(i32ScratchView[1]); - return i32ScratchView[0]; - } - - function legalimport$wasm2js_scratch_store_i64(low, high) { - i32ScratchView[0] = low; - i32ScratchView[1] = high; - } - function wasm2js_scratch_store_f32(value) { - f32ScratchView[0] = value; + f32ScratchView[2] = value; } -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var buffer = new ArrayBuffer(65536); + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var getTempRet0 = env.getTempRet0; + var nan = NaN; + var infinity = Infinity; + var __wasm_intrinsics_temp_i64 = 0; + var __wasm_intrinsics_temp_i64$hi = 0; var i64toi32_i32$HIGH_BITS = 0; function i32_t0($0, $1) { $0 = $0 | 0; @@ -418,7 +411,7 @@ function $62() { var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0; reset(); - ((wasm2js_i32$1 = i32_left() | 0, wasm2js_i32$2 = i32_right() | 0), wasm2js_i32$0 = i32_callee() | 0), FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0) | 0; + ((wasm2js_i32$1 = i32_left() | 0, wasm2js_i32$2 = i32_right() | 0), wasm2js_i32$0 = i32_callee() | 0 | 0), FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0, wasm2js_i32$2 | 0) | 0; return get() | 0 | 0; } @@ -982,7 +975,7 @@ $1$hi = i64toi32_i32$0; i64toi32_i32$0 = $0$hi; i64toi32_i32$1 = $1$hi; - FUNCTION_TABLE[i64_callee() | 0]($0, i64toi32_i32$0, $1, i64toi32_i32$1) | 0; + FUNCTION_TABLE[i64_callee() | 0 | 0]($0, i64toi32_i32$0, $1, i64toi32_i32$1) | 0; return get() | 0 | 0; } @@ -1029,7 +1022,7 @@ function $98() { reset(); - (wasm2js_scratch_store_f32(Math_fround(f32_left())), wasm2js_scratch_load_i32(0)) & 2147483647 | 0 | ((wasm2js_scratch_store_f32(Math_fround(f32_right())), wasm2js_scratch_load_i32(0)) & -2147483648 | 0) | 0; + (wasm2js_scratch_store_f32(Math_fround(f32_left())), wasm2js_scratch_load_i32(2)) & 2147483647 | 0 | ((wasm2js_scratch_store_f32(Math_fround(f32_right())), wasm2js_scratch_load_i32(2)) & -2147483648 | 0) | 0; return get() | 0 | 0; } @@ -1097,7 +1090,7 @@ function $109() { var wasm2js_i32$0 = 0, wasm2js_f32$0 = Math_fround(0), wasm2js_f32$1 = Math_fround(0); reset(); - ((wasm2js_f32$0 = Math_fround(f32_left()), wasm2js_f32$1 = Math_fround(f32_right())), wasm2js_i32$0 = f32_callee() | 0), FUNCTION_TABLE[wasm2js_i32$0](Math_fround(wasm2js_f32$0), Math_fround(wasm2js_f32$1)) | 0; + ((wasm2js_f32$0 = Math_fround(f32_left()), wasm2js_f32$1 = Math_fround(f32_right())), wasm2js_i32$0 = f32_callee() | 0 | 0), FUNCTION_TABLE[wasm2js_i32$0](Math_fround(wasm2js_f32$0), Math_fround(wasm2js_f32$1)) | 0; return get() | 0 | 0; } @@ -1226,7 +1219,7 @@ function $126() { var wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0, wasm2js_f64$1 = 0.0; reset(); - ((wasm2js_f64$0 = +f64_left(), wasm2js_f64$1 = +f64_right()), wasm2js_i32$0 = f64_callee() | 0), FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$0, +wasm2js_f64$1) | 0; + ((wasm2js_f64$0 = +f64_left(), wasm2js_f64$1 = +f64_right()), wasm2js_i32$0 = f64_callee() | 0 | 0), FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$0, +wasm2js_f64$1) | 0; return get() | 0 | 0; } @@ -1270,54 +1263,6 @@ return $3 | 0; } - function legalfunc$wasm2js_scratch_load_i64() { - var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $8 = 0, $1 = 0, $1$hi = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $1 = legalimport$wasm2js_scratch_load_i64() | 0; - $1$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = getTempRet0() | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $8 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $8 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $4$hi = i64toi32_i32$1; - i64toi32_i32$1 = $1$hi; - i64toi32_i32$0 = $1; - i64toi32_i32$2 = $4$hi; - i64toi32_i32$3 = $8; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - i64toi32_i32$0 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$2; - return i64toi32_i32$0 | 0; - } - - function legalfunc$wasm2js_scratch_store_i64($0, $0$hi) { - $0 = $0 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $2 = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $0$hi; - $2 = $0; - i64toi32_i32$2 = $0; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $8 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - legalimport$wasm2js_scratch_store_i64($2 | 0, $8 | 0); - } - function _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE(var$0, var$0$hi, var$1, var$1$hi) { var$0 = var$0 | 0; var$0$hi = var$0$hi | 0; @@ -1669,7 +1614,8 @@ var$3 = var$1; var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; - legalfunc$wasm2js_scratch_store_i64(var$0 - Math_imul(var$2, var$3) | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = var$0 - Math_imul(var$2, var$3) | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -1724,7 +1670,8 @@ i64toi32_i32$1 = $65$hi; i64toi32_i32$0 = $65_1; i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; - legalfunc$wasm2js_scratch_store_i64(i64toi32_i32$3 | i64toi32_i32$0 | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = i64toi32_i32$3 | i64toi32_i32$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -1756,7 +1703,8 @@ i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$3 << i64toi32_i32$4 | 0) | 0; $41_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; } - legalfunc$wasm2js_scratch_store_i64($41_1 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = $41_1; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -1770,7 +1718,8 @@ } i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; - legalfunc$wasm2js_scratch_store_i64(var$4 & var$0 | 0 | 0, i64toi32_i32$2 | 0); + __wasm_intrinsics_temp_i64 = var$4 & var$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$2; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -1963,7 +1912,8 @@ } } i64toi32_i32$3 = var$5$hi; - legalfunc$wasm2js_scratch_store_i64(var$5 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$5; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -1988,7 +1938,8 @@ return i64toi32_i32$3 | 0; } i64toi32_i32$3 = var$0$hi; - legalfunc$wasm2js_scratch_store_i64(var$0 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -2075,10 +2026,10 @@ i64toi32_i32$1 = var$1$hi; i64toi32_i32$1 = _ZN17compiler_builtins3int4udiv10divmod_u6417h6026910b5ed08e40E(var$0 | 0, i64toi32_i32$0 | 0, var$1 | 0, i64toi32_i32$1 | 0) | 0; i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$0 = legalfunc$wasm2js_scratch_load_i64() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; + i64toi32_i32$0 = __wasm_intrinsics_temp_i64$hi; + i64toi32_i32$1 = __wasm_intrinsics_temp_i64; + i64toi32_i32$HIGH_BITS = i64toi32_i32$0; + return i64toi32_i32$1 | 0; } function __wasm_ctz_i32(var$0) { @@ -2089,6 +2040,7 @@ return 32 | 0; } + bufferView = HEAPU8; var FUNCTION_TABLE = [i32_t0, i32_t1, i64_t0, i64_t1, f32_t0, f32_t1, f64_t0, f64_t1]; function __wasm_memory_size() { return buffer.byteLength / 65536 | 0; @@ -2100,18 +2052,18 @@ var newPages = oldPages + pagesToAdd | 0; if ((oldPages < newPages) && (newPages < 65536)) { var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); - var newHEAP8 = new global.Int8Array(newBuffer); + var newHEAP8 = new Int8Array(newBuffer); newHEAP8.set(HEAP8); - HEAP8 = newHEAP8; - HEAP8 = new global.Int8Array(newBuffer); - HEAP16 = new global.Int16Array(newBuffer); - HEAP32 = new global.Int32Array(newBuffer); - HEAPU8 = new global.Uint8Array(newBuffer); - HEAPU16 = new global.Uint16Array(newBuffer); - HEAPU32 = new global.Uint32Array(newBuffer); - HEAPF32 = new global.Float32Array(newBuffer); - HEAPF64 = new global.Float64Array(newBuffer); + HEAP8 = new Int8Array(newBuffer); + HEAP16 = new Int16Array(newBuffer); + HEAP32 = new Int32Array(newBuffer); + HEAPU8 = new Uint8Array(newBuffer); + HEAPU16 = new Uint16Array(newBuffer); + HEAPU32 = new Uint32Array(newBuffer); + HEAPF32 = new Float32Array(newBuffer); + HEAPF64 = new Float64Array(newBuffer); buffer = newBuffer; + bufferView = HEAPU8; } return oldPages; } @@ -2215,8 +2167,8 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },getTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var i32_add = retasmFunc.i32_add; export var i32_sub = retasmFunc.i32_sub; export var i32_mul = retasmFunc.i32_mul; diff -Nru binaryen-91/test/wasm2js/loop.2asm.js binaryen-99/test/wasm2js/loop.2asm.js --- binaryen-91/test/wasm2js/loop.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/loop.2asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,677 +0,0 @@ -import { setTempRet0 } from 'env'; - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; - var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var setTempRet0 = env.setTempRet0; - var i64toi32_i32$HIGH_BITS = 0; - function dummy() { - - } - - function $1() { - - } - - function $2() { - var $0 = 0; - loop_in0 : while (1) { - $0 = 7; - break loop_in0; - }; - return $0 | 0; - } - - function $3() { - var $2_1 = 0; - loop_in : while (1) { - dummy(); - dummy(); - dummy(); - dummy(); - break loop_in; - }; - loop_in1 : while (1) { - dummy(); - dummy(); - dummy(); - $2_1 = 8; - break loop_in1; - }; - return $2_1 | 0; - } - - function $4() { - var $2_1 = 0; - loop_in : while (1) { - loop_in2 : while (1) { - dummy(); - break loop_in2; - }; - loop_in3 : while (1) { - dummy(); - $2_1 = 9; - break loop_in3; - }; - break loop_in; - }; - return $2_1 | 0; - } - - function $5() { - var $2_1 = 0, $6_1 = 0, $10_1 = 0, $14_1 = 0, $18_1 = 0, $22 = 0, $26 = 0, $30 = 0, $34 = 0, $38 = 0, $42 = 0, $46 = 0, $50 = 0, $54 = 0, $58 = 0, $62 = 0, $66 = 0, $70 = 0, $74 = 0, $78 = 0, $82 = 0; - loop_in : while (1) { - loop_in4 : while (1) { - loop_in6 : while (1) { - loop_in8 : while (1) { - loop_in10 : while (1) { - loop_in12 : while (1) { - loop_in14 : while (1) { - loop_in16 : while (1) { - loop_in18 : while (1) { - loop_in20 : while (1) { - loop_in22 : while (1) { - loop_in24 : while (1) { - loop_in26 : while (1) { - loop_in28 : while (1) { - loop_in30 : while (1) { - loop_in32 : while (1) { - loop_in34 : while (1) { - loop_in36 : while (1) { - loop_in38 : while (1) { - loop_in40 : while (1) { - loop_in42 : while (1) { - loop_in44 : while (1) { - dummy(); - $2_1 = 150; - break loop_in44; - }; - $6_1 = $2_1; - break loop_in42; - }; - $10_1 = $6_1; - break loop_in40; - }; - $14_1 = $10_1; - break loop_in38; - }; - $18_1 = $14_1; - break loop_in36; - }; - $22 = $18_1; - break loop_in34; - }; - $26 = $22; - break loop_in32; - }; - $30 = $26; - break loop_in30; - }; - $34 = $30; - break loop_in28; - }; - $38 = $34; - break loop_in26; - }; - $42 = $38; - break loop_in24; - }; - $46 = $42; - break loop_in22; - }; - $50 = $46; - break loop_in20; - }; - $54 = $50; - break loop_in18; - }; - $58 = $54; - break loop_in16; - }; - $62 = $58; - break loop_in14; - }; - $66 = $62; - break loop_in12; - }; - $70 = $66; - break loop_in10; - }; - $74 = $70; - break loop_in8; - }; - $78 = $74; - break loop_in6; - }; - $82 = $78; - break loop_in4; - }; - break loop_in; - }; - return $82 | 0; - } - - function $6() { - var $2_1 = 0; - loop_in : while (1) { - dummy(); - $2_1 = 13; - break loop_in; - }; - return __wasm_ctz_i32($2_1 | 0) | 0 | 0; - } - - function $7() { - var $2_1 = 0, $3_1 = 0, $6_1 = 0; - loop_in : while (1) { - dummy(); - $2_1 = 3; - break loop_in; - }; - $3_1 = $2_1; - loop_in46 : while (1) { - dummy(); - $6_1 = 4; - break loop_in46; - }; - return Math_imul($3_1, $6_1) | 0; - } - - function $8() { - var $2_1 = 0; - loop_in : while (1) { - dummy(); - $2_1 = 13; - break loop_in; - }; - return !$2_1 | 0; - } - - function $9() { - var $2_1 = Math_fround(0), $3_1 = Math_fround(0), $6_1 = Math_fround(0); - loop_in : while (1) { - dummy(); - $2_1 = Math_fround(3.0); - break loop_in; - }; - $3_1 = $2_1; - loop_in47 : while (1) { - dummy(); - $6_1 = Math_fround(3.0); - break loop_in47; - }; - return $3_1 > $6_1 | 0; - } - - function $10() { - block : { - loop_in : while (1) break block; - } - block48 : { - loop_in49 : while (1) { - if (1) { - break block48 - } - abort(); - }; - } - block50 : { - loop_in51 : while (1) switch (0 | 0) { - default: - break block50; - }; - } - block52 : { - loop_in53 : while (1) switch (1 | 0) { - default: - break block52; - }; - } - return 19 | 0; - } - - function $11() { - var $0 = 0, $1_1 = 0, $3_1 = 0; - block : { - loop_in : while (1) { - $0 = 18; - break block; - }; - } - return $0 | 0; - } - - function $12() { - var $0 = 0, $5_1 = 0, $7_1 = 0; - block : { - loop_in : while (1) { - $0 = 18; - break block; - }; - } - return $0 | 0; - } - - function $13() { - var $0 = 0, $1_1 = 0, $2_1 = 0, $5_1 = 0, $6_1 = 0, $9_1 = 0, $10_1 = 0, $12_1 = 0, $17_1 = 0, $18_1 = 0, $21 = 0, $22 = 0; - $0 = 0; - $1_1 = $0; - block : { - loop_in : while (1) block54 : { - $2_1 = 1; - break block; - }; - } - $0 = $1_1 + $2_1 | 0; - $5_1 = $0; - block55 : { - loop_in56 : while (1) loop_in57 : while (1) { - $6_1 = 2; - break block55; - }; - } - $0 = $5_1 + $6_1 | 0; - $9_1 = $0; - loop_in59 : while (1) { - block60 : { - loop_in61 : while (1) { - $10_1 = 4; - break block60; - }; - } - $12_1 = $10_1; - break loop_in59; - }; - $0 = $9_1 + $12_1 | 0; - $17_1 = $0; - block62 : { - loop_in63 : while (1) { - $18_1 = 8; - break block62; - }; - } - $0 = $17_1 + $18_1 | 0; - $21 = $0; - block64 : { - loop_in65 : while (1) loop_in66 : while (1) { - $22 = 16; - break block64; - }; - } - $0 = $21 + $22 | 0; - return $0 | 0; - } - - function $14() { - var $0 = 0, $1_1 = 0, $2_1 = 0, $3_1 = 0, $5_1 = 0; - $0 = 0; - $1_1 = $0; - loop_in : while (1) loop_in67 : while (1) continue loop_in; - } - - function fx() { - var $0 = 0; - block : { - loop_in : while (1) { - $0 = 1; - $0 = Math_imul($0, 3); - $0 = $0 - 5 | 0; - $0 = Math_imul($0, 7); - break block; - }; - } - return ($0 | 0) == (-14 | 0) | 0; - } - - function $16($0, $0$hi) { - $0 = $0 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$0 = 0, $1$hi = 0, i64toi32_i32$5 = 0, i64toi32_i32$1 = 0, $1_1 = 0, i64toi32_i32$3 = 0; - i64toi32_i32$0 = 0; - $1_1 = 1; - $1$hi = i64toi32_i32$0; - block : { - loop_in : while (1) { - i64toi32_i32$0 = $0$hi; - if (!($0 | i64toi32_i32$0 | 0)) { - break block - } - i64toi32_i32$0 = $0$hi; - i64toi32_i32$0 = $1$hi; - i64toi32_i32$0 = $0$hi; - i64toi32_i32$1 = $1$hi; - i64toi32_i32$1 = __wasm_i64_mul($0 | 0, i64toi32_i32$0 | 0, $1_1 | 0, $1$hi | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - $1_1 = i64toi32_i32$1; - $1$hi = i64toi32_i32$0; - i64toi32_i32$0 = $0$hi; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 1; - i64toi32_i32$5 = ($0 >>> 0 < i64toi32_i32$3 >>> 0) + i64toi32_i32$1 | 0; - i64toi32_i32$5 = i64toi32_i32$0 - i64toi32_i32$5 | 0; - $0 = $0 - i64toi32_i32$3 | 0; - $0$hi = i64toi32_i32$5; - continue loop_in; - }; - } - i64toi32_i32$5 = $1$hi; - i64toi32_i32$HIGH_BITS = i64toi32_i32$5; - return $1_1 | 0; - } - - function $17($0, $0$hi) { - $0 = $0 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$0 = 0, $1$hi = 0, $2$hi = 0, i64toi32_i32$1 = 0, $2_1 = 0, i64toi32_i32$5 = 0, $1_1 = 0, i64toi32_i32$4 = 0; - i64toi32_i32$0 = 0; - $1_1 = 1; - $1$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - $2_1 = 2; - $2$hi = i64toi32_i32$0; - block : { - loop_in : while (1) { - i64toi32_i32$0 = $2$hi; - i64toi32_i32$0 = $0$hi; - i64toi32_i32$0 = $2$hi; - i64toi32_i32$1 = $0$hi; - if (i64toi32_i32$0 >>> 0 > i64toi32_i32$1 >>> 0 | ((i64toi32_i32$0 | 0) == (i64toi32_i32$1 | 0) & $2_1 >>> 0 > $0 >>> 0 | 0) | 0) { - break block - } - i64toi32_i32$0 = $2$hi; - i64toi32_i32$0 = __wasm_i64_mul($1_1 | 0, $1$hi | 0, $2_1 | 0, i64toi32_i32$0 | 0) | 0; - $1_1 = i64toi32_i32$0; - $1$hi = i64toi32_i32$HIGH_BITS; - i64toi32_i32$0 = 0; - i64toi32_i32$1 = 1; - i64toi32_i32$4 = $2_1 + i64toi32_i32$1 | 0; - i64toi32_i32$5 = $2$hi + i64toi32_i32$0 | 0; - if (i64toi32_i32$4 >>> 0 < i64toi32_i32$1 >>> 0) { - i64toi32_i32$5 = i64toi32_i32$5 + 1 | 0 - } - $2_1 = i64toi32_i32$4; - $2$hi = i64toi32_i32$5; - continue loop_in; - }; - } - i64toi32_i32$5 = $1$hi; - i64toi32_i32$HIGH_BITS = $1$hi; - return $1_1 | 0; - } - - function $18($0, $1_1) { - $0 = Math_fround($0); - $1_1 = Math_fround($1_1); - var $2_1 = Math_fround(0), $3_1 = Math_fround(0); - block : { - loop_in : while (1) { - if ($0 == Math_fround(0.0)) { - break block - } - $2_1 = $1_1; - block71 : { - loop_in72 : while (1) { - if ($2_1 == Math_fround(0.0)) { - break block71 - } - if ($2_1 < Math_fround(0.0)) { - break block - } - $3_1 = Math_fround($3_1 + $2_1); - $2_1 = Math_fround($2_1 - Math_fround(2.0)); - continue loop_in72; - }; - } - $3_1 = Math_fround($3_1 / $0); - $0 = Math_fround($0 - Math_fround(1.0)); - continue loop_in; - }; - } - return Math_fround($3_1); - } - - function legalstub$16($0, $1_1) { - $0 = $0 | 0; - $1_1 = $1_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12_1 = 0, $13_1 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0; - i64toi32_i32$0 = 0; - $4_1 = $0; - $4$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $12_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $12_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $7$hi = i64toi32_i32$1; - i64toi32_i32$1 = $4$hi; - i64toi32_i32$0 = $4_1; - i64toi32_i32$2 = $7$hi; - i64toi32_i32$3 = $12_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - i64toi32_i32$2 = $16(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - $2_1 = i64toi32_i32$2; - $2$hi = i64toi32_i32$0; - i64toi32_i32$1 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $13_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $13_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($13_1 | 0); - i64toi32_i32$2 = $2$hi; - return $2_1 | 0; - } - - function legalstub$17($0, $1_1) { - $0 = $0 | 0; - $1_1 = $1_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12_1 = 0, $13_1 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0; - i64toi32_i32$0 = 0; - $4_1 = $0; - $4$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $12_1 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $12_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $7$hi = i64toi32_i32$1; - i64toi32_i32$1 = $4$hi; - i64toi32_i32$0 = $4_1; - i64toi32_i32$2 = $7$hi; - i64toi32_i32$3 = $12_1; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - i64toi32_i32$2 = $17(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - $2_1 = i64toi32_i32$2; - $2$hi = i64toi32_i32$0; - i64toi32_i32$1 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $13_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $13_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($13_1 | 0); - i64toi32_i32$2 = $2$hi; - return $2_1 | 0; - } - - function _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE(var$0, var$0$hi, var$1, var$1$hi) { - var$0 = var$0 | 0; - var$0$hi = var$0$hi | 0; - var$1 = var$1 | 0; - var$1$hi = var$1$hi | 0; - var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, var$2 = 0, i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, var$3 = 0, var$4 = 0, var$5 = 0, $21 = 0, $22 = 0, var$6 = 0, $24 = 0, $17_1 = 0, $18_1 = 0, $23 = 0, $29 = 0, $45 = 0, $56$hi = 0, $62$hi = 0; - i64toi32_i32$0 = var$1$hi; - var$2 = var$1; - var$4 = var$2 >>> 16 | 0; - i64toi32_i32$0 = var$0$hi; - var$3 = var$0; - var$5 = var$3 >>> 16 | 0; - $17_1 = Math_imul(var$4, var$5); - $18_1 = var$2; - i64toi32_i32$2 = var$3; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $21 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $21 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - $23 = $17_1 + Math_imul($18_1, $21) | 0; - i64toi32_i32$1 = var$1$hi; - i64toi32_i32$0 = var$1; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $22 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $22 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - $29 = $23 + Math_imul($22, var$3) | 0; - var$2 = var$2 & 65535 | 0; - var$3 = var$3 & 65535 | 0; - var$6 = Math_imul(var$2, var$3); - var$2 = (var$6 >>> 16 | 0) + Math_imul(var$2, var$5) | 0; - $45 = $29 + (var$2 >>> 16 | 0) | 0; - var$2 = (var$2 & 65535 | 0) + Math_imul(var$4, var$3) | 0; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $45 + (var$2 >>> 16 | 0) | 0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $24 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $24 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $56$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - $62$hi = i64toi32_i32$0; - i64toi32_i32$0 = $56$hi; - i64toi32_i32$2 = $24; - i64toi32_i32$1 = $62$hi; - i64toi32_i32$3 = var$2 << 16 | 0 | (var$6 & 65535 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - i64toi32_i32$2 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$2 | 0; - } - - function __wasm_ctz_i32(var$0) { - var$0 = var$0 | 0; - if (var$0) { - return 31 - Math_clz32((var$0 + -1 | 0) ^ var$0 | 0) | 0 | 0 - } - return 32 | 0; - } - - function __wasm_i64_mul(var$0, var$0$hi, var$1, var$1$hi) { - var$0 = var$0 | 0; - var$0$hi = var$0$hi | 0; - var$1 = var$1 | 0; - var$1$hi = var$1$hi | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0; - i64toi32_i32$0 = var$0$hi; - i64toi32_i32$0 = var$1$hi; - i64toi32_i32$0 = var$0$hi; - i64toi32_i32$1 = var$1$hi; - i64toi32_i32$1 = _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE(var$0 | 0, i64toi32_i32$0 | 0, var$1 | 0, i64toi32_i32$1 | 0) | 0; - i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$0; - return i64toi32_i32$1 | 0; - } - - var FUNCTION_TABLE = []; - return { - "empty": $1, - "singular": $2, - "multi": $3, - "nested": $4, - "deep": $5, - "as_unary_operand": $6, - "as_binary_operand": $7, - "as_test_operand": $8, - "as_compare_operand": $9, - "break_bare": $10, - "break_value": $11, - "break_repeated": $12, - "break_inner": $13, - "cont_inner": $14, - "effects": fx, - "while_": legalstub$16, - "for_": legalstub$17, - "nesting": $18 - }; -} - -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); -export var empty = retasmFunc.empty; -export var singular = retasmFunc.singular; -export var multi = retasmFunc.multi; -export var nested = retasmFunc.nested; -export var deep = retasmFunc.deep; -export var as_unary_operand = retasmFunc.as_unary_operand; -export var as_binary_operand = retasmFunc.as_binary_operand; -export var as_test_operand = retasmFunc.as_test_operand; -export var as_compare_operand = retasmFunc.as_compare_operand; -export var break_bare = retasmFunc.break_bare; -export var break_value = retasmFunc.break_value; -export var break_repeated = retasmFunc.break_repeated; -export var break_inner = retasmFunc.break_inner; -export var cont_inner = retasmFunc.cont_inner; -export var effects = retasmFunc.effects; -export var while_ = retasmFunc.while_; -export var for_ = retasmFunc.for_; -export var nesting = retasmFunc.nesting; diff -Nru binaryen-91/test/wasm2js/minified-memory.2asm.js binaryen-99/test/wasm2js/minified-memory.2asm.js --- binaryen-91/test/wasm2js/minified-memory.2asm.js 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/wasm2js/minified-memory.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,66 @@ + +function asmFunc(env) { + var memory = env.a; + var buffer = memory.buffer; + memory.grow = __wasm_memory_grow; + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + function $0() { + return HEAP32[0 >> 2] | 0 | 0; + } + + function __wasm_memory_size() { + return buffer.byteLength / 65536 | 0; + } + + function __wasm_memory_grow(pagesToAdd) { + pagesToAdd = pagesToAdd | 0; + var oldPages = __wasm_memory_size() | 0; + var newPages = oldPages + pagesToAdd | 0; + if ((oldPages < newPages) && (newPages < 65536)) { + var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); + var newHEAP8 = new Int8Array(newBuffer); + newHEAP8.set(HEAP8); + HEAP8 = new Int8Array(newBuffer); + HEAP16 = new Int16Array(newBuffer); + HEAP32 = new Int32Array(newBuffer); + HEAPU8 = new Uint8Array(newBuffer); + HEAPU16 = new Uint16Array(newBuffer); + HEAPU32 = new Uint32Array(newBuffer); + HEAPF32 = new Float32Array(newBuffer); + HEAPF64 = new Float64Array(newBuffer); + buffer = newBuffer; + memory.buffer = buffer; + } + return oldPages; + } + + return { + "foo": $0 + }; +} + +var memasmFunc = new ArrayBuffer(65536); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + a: { buffer : memasmFunc } + }); +export var foo = retasmFunc.foo; diff -Nru binaryen-91/test/wasm2js/minified-memory.2asm.js.opt binaryen-99/test/wasm2js/minified-memory.2asm.js.opt --- binaryen-91/test/wasm2js/minified-memory.2asm.js.opt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/wasm2js/minified-memory.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,66 @@ + +function asmFunc(env) { + var memory = env.a; + var buffer = memory.buffer; + memory.grow = __wasm_memory_grow; + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + function $0() { + return HEAP32[0]; + } + + function __wasm_memory_size() { + return buffer.byteLength / 65536 | 0; + } + + function __wasm_memory_grow(pagesToAdd) { + pagesToAdd = pagesToAdd | 0; + var oldPages = __wasm_memory_size() | 0; + var newPages = oldPages + pagesToAdd | 0; + if ((oldPages < newPages) && (newPages < 65536)) { + var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); + var newHEAP8 = new Int8Array(newBuffer); + newHEAP8.set(HEAP8); + HEAP8 = new Int8Array(newBuffer); + HEAP16 = new Int16Array(newBuffer); + HEAP32 = new Int32Array(newBuffer); + HEAPU8 = new Uint8Array(newBuffer); + HEAPU16 = new Uint16Array(newBuffer); + HEAPU32 = new Uint32Array(newBuffer); + HEAPF32 = new Float32Array(newBuffer); + HEAPF64 = new Float64Array(newBuffer); + buffer = newBuffer; + memory.buffer = buffer; + } + return oldPages; + } + + return { + "foo": $0 + }; +} + +var memasmFunc = new ArrayBuffer(65536); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + a: { buffer : memasmFunc } + }); +export var foo = retasmFunc.foo; diff -Nru binaryen-91/test/wasm2js/minified-memory.wast binaryen-99/test/wasm2js/minified-memory.wast --- binaryen-91/test/wasm2js/minified-memory.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/wasm2js/minified-memory.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,6 @@ +(module + (import "env" "a" (memory $0 1)) + (func "foo" (result i32) + (i32.load (i32.const 0)) + ) +) diff -Nru binaryen-91/test/wasm2js/minus_minus.2asm.js binaryen-99/test/wasm2js/minus_minus.2asm.js --- binaryen-91/test/wasm2js/minus_minus.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/minus_minus.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $0() { return ~~- -7094.0 | 0; } @@ -28,12 +21,11 @@ $0() | 0; } - var FUNCTION_TABLE = []; return { "func_44_invoker": $1 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var func_44_invoker = retasmFunc.func_44_invoker; diff -Nru binaryen-91/test/wasm2js/minus_minus.2asm.js.opt binaryen-99/test/wasm2js/minus_minus.2asm.js.opt --- binaryen-91/test/wasm2js/minus_minus.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/minus_minus.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,35 +1,27 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $1() { } - var FUNCTION_TABLE = []; return { "func_44_invoker": $1 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var func_44_invoker = retasmFunc.func_44_invoker; diff -Nru binaryen-91/test/wasm2js/nested-selects.2asm.js binaryen-99/test/wasm2js/nested-selects.2asm.js --- binaryen-91/test/wasm2js/nested-selects.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/nested-selects.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,36 +1,28 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $1($0) { $0 = $0 | 0; return (($0 | 0) < (0 | 0) ? -1 : ($0 | 0) > (0 | 0) ? 1 : 0) | 0; } - var FUNCTION_TABLE = []; return { "sign": $1 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var sign = retasmFunc.sign; diff -Nru binaryen-91/test/wasm2js/nested-selects.2asm.js.opt binaryen-99/test/wasm2js/nested-selects.2asm.js.opt --- binaryen-91/test/wasm2js/nested-selects.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/nested-selects.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,36 +1,28 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $1($0) { $0 = $0 | 0; - return (($0 | 0) < 0 ? -1 : ($0 | 0) > 0 ? 1 : 0) | 0; + return (($0 | 0) < 0 ? -1 : ($0 | 0) > 0) | 0; } - var FUNCTION_TABLE = []; return { "sign": $1 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var sign = retasmFunc.sign; diff -Nru binaryen-91/test/wasm2js/ordering.2asm.js binaryen-99/test/wasm2js/ordering.2asm.js --- binaryen-91/test/wasm2js/ordering.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/ordering.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,32 +1,26 @@ -import { FUNCTION_TABLE } from 'env'; +import { table } from 'env'; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var FUNCTION_TABLE = env.table; + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function main() { var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0; - FUNCTION_TABLE[foo(2 | 0) | 0](1) | 0; - FUNCTION_TABLE[4](foo(3 | 0) | 0) | 0; - (wasm2js_i32$1 = foo(5 | 0) | 0, wasm2js_i32$0 = bar(6 | 0) | 0), FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0) | 0; - FUNCTION_TABLE[8](7) | 0; + FUNCTION_TABLE[foo(2 | 0) | 0 | 0](1) | 0; + FUNCTION_TABLE[4 | 0](foo(3 | 0) | 0) | 0; + (wasm2js_i32$1 = foo(5 | 0) | 0, wasm2js_i32$0 = bar(6 | 0) | 0 | 0), FUNCTION_TABLE[wasm2js_i32$0](wasm2js_i32$1 | 0) | 0; + FUNCTION_TABLE[8 | 0](7) | 0; baz((11 ? 9 : 10) | 0) | 0; baz((wasm2js_i32$0 = foo(12 | 0) | 0, wasm2js_i32$1 = 13, wasm2js_i32$2 = 14, wasm2js_i32$2 ? wasm2js_i32$0 : wasm2js_i32$1) | 0) | 0; baz((wasm2js_i32$0 = 15, wasm2js_i32$1 = foo(16 | 0) | 0, wasm2js_i32$2 = 17, wasm2js_i32$2 ? wasm2js_i32$0 : wasm2js_i32$1) | 0) | 0; @@ -60,6 +54,7 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + table + }); export var main = retasmFunc.main; diff -Nru binaryen-91/test/wasm2js/ordering.2asm.js.opt binaryen-99/test/wasm2js/ordering.2asm.js.opt --- binaryen-91/test/wasm2js/ordering.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/ordering.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,26 +1,20 @@ -import { FUNCTION_TABLE } from 'env'; +import { table } from 'env'; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var FUNCTION_TABLE = env.table; + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function main() { FUNCTION_TABLE[1](1) | 0; FUNCTION_TABLE[4](1) | 0; @@ -51,6 +45,7 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + table + }); export var main = retasmFunc.main; diff -Nru binaryen-91/test/wasm2js/reinterpret.2asm.js binaryen-99/test/wasm2js/reinterpret.2asm.js --- binaryen-91/test/wasm2js/reinterpret.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/reinterpret.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ - var scratchBuffer = new ArrayBuffer(8); + var scratchBuffer = new ArrayBuffer(16); var i32ScratchView = new Int32Array(scratchBuffer); var f32ScratchView = new Float32Array(scratchBuffer); var f64ScratchView = new Float64Array(scratchBuffer); @@ -22,37 +22,30 @@ } function wasm2js_scratch_store_f32(value) { - f32ScratchView[0] = value; + f32ScratchView[2] = value; } function wasm2js_scratch_load_f32() { - return f32ScratchView[0]; + return f32ScratchView[2]; } -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $1($0) { $0 = $0 | 0; - return ((wasm2js_scratch_store_f32((wasm2js_scratch_store_i32(0, $0), wasm2js_scratch_load_f32())), wasm2js_scratch_load_i32(0)) | 0) == ($0 | 0) | 0; + return ((wasm2js_scratch_store_f32((wasm2js_scratch_store_i32(2, $0), wasm2js_scratch_load_f32())), wasm2js_scratch_load_i32(2)) | 0) == ($0 | 0) | 0; } function $2($0, $0$hi) { @@ -98,14 +91,13 @@ return $2(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0 | 0; } - var FUNCTION_TABLE = []; return { "i32_roundtrip": $1, "i64_roundtrip": legalstub$2 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var i32_roundtrip = retasmFunc.i32_roundtrip; export var i64_roundtrip = retasmFunc.i64_roundtrip; diff -Nru binaryen-91/test/wasm2js/reinterpret.2asm.js.opt binaryen-99/test/wasm2js/reinterpret.2asm.js.opt --- binaryen-91/test/wasm2js/reinterpret.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/reinterpret.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,6 +1,6 @@ - var scratchBuffer = new ArrayBuffer(8); + var scratchBuffer = new ArrayBuffer(16); var i32ScratchView = new Int32Array(scratchBuffer); var f32ScratchView = new Float32Array(scratchBuffer); var f64ScratchView = new Float64Array(scratchBuffer); @@ -22,37 +22,30 @@ } function wasm2js_scratch_store_f32(value) { - f32ScratchView[0] = value; + f32ScratchView[2] = value; } function wasm2js_scratch_load_f32() { - return f32ScratchView[0]; + return f32ScratchView[2]; } -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $1($0) { $0 = $0 | 0; - return ((wasm2js_scratch_store_f32((wasm2js_scratch_store_i32(0, $0), wasm2js_scratch_load_f32())), wasm2js_scratch_load_i32(0)) | 0) == ($0 | 0) | 0; + return ((wasm2js_scratch_store_f32((wasm2js_scratch_store_i32(2, $0), wasm2js_scratch_load_f32())), wasm2js_scratch_load_i32(2)) | 0) == ($0 | 0) | 0; } function $2($0, $1_1) { @@ -70,14 +63,13 @@ return $2($0, $1_1); } - var FUNCTION_TABLE = []; return { "i32_roundtrip": $1, "i64_roundtrip": legalstub$2 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var i32_roundtrip = retasmFunc.i32_roundtrip; export var i64_roundtrip = retasmFunc.i64_roundtrip; diff -Nru binaryen-91/test/wasm2js/reinterpret_scratch.2asm.js binaryen-99/test/wasm2js/reinterpret_scratch.2asm.js --- binaryen-91/test/wasm2js/reinterpret_scratch.2asm.js 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/wasm2js/reinterpret_scratch.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,66 @@ + + var bufferView; + + var scratchBuffer = new ArrayBuffer(16); + var i32ScratchView = new Int32Array(scratchBuffer); + var f32ScratchView = new Float32Array(scratchBuffer); + var f64ScratchView = new Float64Array(scratchBuffer); + + function wasm2js_scratch_load_i32(index) { + return i32ScratchView[index]; + } + + function wasm2js_scratch_store_f64(value) { + f64ScratchView[0] = value; + } + + function wasm2js_scratch_store_f32(value) { + f32ScratchView[2] = value; + } + +function asmFunc(env) { + var buffer = new ArrayBuffer(65536); + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + function $0() { + var i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, $0_1 = Math_fround(0); + wasm2js_scratch_store_f64(+(305419896.0)); + i64toi32_i32$0 = wasm2js_scratch_load_i32(1 | 0) | 0; + i64toi32_i32$1 = (wasm2js_scratch_store_f32($0_1), wasm2js_scratch_load_i32(2)); + HEAP32[i64toi32_i32$1 >> 2] = wasm2js_scratch_load_i32(0 | 0) | 0; + HEAP32[(i64toi32_i32$1 + 4 | 0) >> 2] = i64toi32_i32$0; + return HEAP32[0 >> 2] | 0 | 0; + } + + bufferView = HEAPU8; + function __wasm_memory_size() { + return buffer.byteLength / 65536 | 0; + } + + return { + "foo": $0 + }; +} + +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); +export var foo = retasmFunc.foo; diff -Nru binaryen-91/test/wasm2js/reinterpret_scratch.2asm.js.opt binaryen-99/test/wasm2js/reinterpret_scratch.2asm.js.opt --- binaryen-91/test/wasm2js/reinterpret_scratch.2asm.js.opt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/wasm2js/reinterpret_scratch.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,61 @@ + + var bufferView; + + var scratchBuffer = new ArrayBuffer(16); + var i32ScratchView = new Int32Array(scratchBuffer); + var f32ScratchView = new Float32Array(scratchBuffer); + var f64ScratchView = new Float64Array(scratchBuffer); + + function wasm2js_scratch_load_i32(index) { + return i32ScratchView[index]; + } + + function wasm2js_scratch_store_f64(value) { + f64ScratchView[0] = value; + } + +function asmFunc(env) { + var buffer = new ArrayBuffer(65536); + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + function $0() { + var $0_1 = 0; + wasm2js_scratch_store_f64(305419896.0); + $0_1 = wasm2js_scratch_load_i32(1) | 0; + HEAP32[0] = wasm2js_scratch_load_i32(0); + HEAP32[1] = $0_1; + return HEAP32[0]; + } + + bufferView = HEAPU8; + function __wasm_memory_size() { + return buffer.byteLength / 65536 | 0; + } + + return { + "foo": $0 + }; +} + +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); +export var foo = retasmFunc.foo; diff -Nru binaryen-91/test/wasm2js/reinterpret_scratch.wast binaryen-99/test/wasm2js/reinterpret_scratch.wast --- binaryen-91/test/wasm2js/reinterpret_scratch.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/wasm2js/reinterpret_scratch.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,17 @@ +(module + (memory $0 1 1) + (func "foo" (result i32) + (local $0 f32) + (i64.store align=4 + (i32.reinterpret_f32 ;; i32 0 + (local.get $0) ;; f32 0 + ) + (i64.reinterpret_f64 ;; these two reinterprets must not interfere with + (f64.const 0x12345678) ;; each other, even though both use scratch memory + ) + ) + (i32.load + (i32.const 0) + ) + ) +) diff -Nru binaryen-91/test/wasm2js/select.2asm.js binaryen-99/test/wasm2js/select.2asm.js --- binaryen-91/test/wasm2js/select.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/select.2asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,169 +0,0 @@ -import { setTempRet0 } from 'env'; - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; - var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var setTempRet0 = env.setTempRet0; - var i64toi32_i32$HIGH_BITS = 0; - function $0(lhs, rhs, cond) { - lhs = lhs | 0; - rhs = rhs | 0; - cond = cond | 0; - return (cond ? lhs : rhs) | 0; - } - - function $1(lhs, lhs$hi, rhs, rhs$hi, cond) { - lhs = lhs | 0; - lhs$hi = lhs$hi | 0; - rhs = rhs | 0; - rhs$hi = rhs$hi | 0; - cond = cond | 0; - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = lhs$hi; - i64toi32_i32$0 = rhs$hi; - i64toi32_i32$4 = cond; - i64toi32_i32$0 = lhs$hi; - i64toi32_i32$3 = i64toi32_i32$4 ? lhs : rhs; - i64toi32_i32$2 = i64toi32_i32$4 ? i64toi32_i32$0 : rhs$hi; - i64toi32_i32$HIGH_BITS = i64toi32_i32$2; - return i64toi32_i32$3 | 0; - } - - function $2(lhs, rhs, cond) { - lhs = Math_fround(lhs); - rhs = Math_fround(rhs); - cond = cond | 0; - return Math_fround(cond ? lhs : rhs); - } - - function $3(lhs, rhs, cond) { - lhs = +lhs; - rhs = +rhs; - cond = cond | 0; - return +(cond ? lhs : rhs); - } - - function $4(cond) { - cond = cond | 0; - var $1_1 = 0; - abort(); - } - - function $5(cond) { - cond = cond | 0; - var $1_1 = 0; - abort(); - } - - function legalstub$1($0_1, $1_1, $2_1, $3_1, $4_1) { - $0_1 = $0_1 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3_1 = $3_1 | 0; - $4_1 = $4_1 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $22 = 0, $23 = 0, $24 = 0, $7 = 0, $7$hi = 0, $10$hi = 0, $11 = 0, $11$hi = 0, $13 = 0, $13$hi = 0, $16$hi = 0, $17 = 0, $17$hi = 0, $5_1 = 0, $5$hi = 0; - i64toi32_i32$0 = 0; - $7 = $0_1; - $7$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $22 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $22 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $10$hi = i64toi32_i32$1; - i64toi32_i32$1 = $7$hi; - i64toi32_i32$0 = $7; - i64toi32_i32$2 = $10$hi; - i64toi32_i32$3 = $22; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - $11 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - $11$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - $13 = $2_1; - $13$hi = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$1 = $3_1; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - $23 = 0; - } else { - i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; - $23 = i64toi32_i32$1 << i64toi32_i32$4 | 0; - } - $16$hi = i64toi32_i32$0; - i64toi32_i32$0 = $13$hi; - i64toi32_i32$2 = $13; - i64toi32_i32$1 = $16$hi; - i64toi32_i32$3 = $23; - i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; - $17 = i64toi32_i32$2 | i64toi32_i32$3 | 0; - $17$hi = i64toi32_i32$1; - i64toi32_i32$1 = $11$hi; - i64toi32_i32$2 = $17$hi; - i64toi32_i32$2 = $1($11 | 0, i64toi32_i32$1 | 0, $17 | 0, i64toi32_i32$2 | 0, $4_1 | 0) | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $5_1 = i64toi32_i32$2; - $5$hi = i64toi32_i32$1; - i64toi32_i32$0 = i64toi32_i32$2; - i64toi32_i32$2 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$2 = 0; - $24 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $24 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($24 | 0); - i64toi32_i32$2 = $5$hi; - return $5_1 | 0; - } - - var FUNCTION_TABLE = []; - return { - "select_i32": $0, - "select_i64": legalstub$1, - "select_f32": $2, - "select_f64": $3, - "select_trap_l": $4, - "select_trap_r": $5 - }; -} - -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); -export var select_i32 = retasmFunc.select_i32; -export var select_i64 = retasmFunc.select_i64; -export var select_f32 = retasmFunc.select_f32; -export var select_f64 = retasmFunc.select_f64; -export var select_trap_l = retasmFunc.select_trap_l; -export var select_trap_r = retasmFunc.select_trap_r; diff -Nru binaryen-91/test/wasm2js/set_local.2asm.js binaryen-99/test/wasm2js/set_local.2asm.js --- binaryen-91/test/wasm2js/set_local.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/set_local.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,26 +1,19 @@ import { setTempRet0 } from 'env'; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function $0() { @@ -213,7 +206,6 @@ return $6_1 | 0; } - var FUNCTION_TABLE = []; return { "type_local_i32": $0, "type_local_i64": $1, @@ -228,8 +220,9 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var type_local_i32 = retasmFunc.type_local_i32; export var type_local_i64 = retasmFunc.type_local_i64; export var type_local_f32 = retasmFunc.type_local_f32; diff -Nru binaryen-91/test/wasm2js/sign_ext.2asm.js binaryen-99/test/wasm2js/sign_ext.2asm.js --- binaryen-91/test/wasm2js/sign_ext.2asm.js 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/wasm2js/sign_ext.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,35 @@ + +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + function $0(x) { + x = x | 0; + return x << 24 >> 24 | 0; + } + + function $1(x) { + x = x | 0; + return x << 16 >> 16 | 0; + } + + return { + "test8": $0, + "test16": $1 + }; +} + +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); +export var test8 = retasmFunc.test8; +export var test16 = retasmFunc.test16; diff -Nru binaryen-91/test/wasm2js/sign_ext.2asm.js.opt binaryen-99/test/wasm2js/sign_ext.2asm.js.opt --- binaryen-91/test/wasm2js/sign_ext.2asm.js.opt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/wasm2js/sign_ext.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,35 @@ + +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + function $0($0_1) { + $0_1 = $0_1 | 0; + return $0_1 << 24 >> 24; + } + + function $1($0_1) { + $0_1 = $0_1 | 0; + return $0_1 << 16 >> 16; + } + + return { + "test8": $0, + "test16": $1 + }; +} + +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); +export var test8 = retasmFunc.test8; +export var test16 = retasmFunc.test16; diff -Nru binaryen-91/test/wasm2js/sign_ext.wast binaryen-99/test/wasm2js/sign_ext.wast --- binaryen-91/test/wasm2js/sign_ext.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/wasm2js/sign_ext.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,8 @@ +(module + (func "test8" (param $x i32) (result i32) + (i32.extend8_s (local.get $x)) + ) + (func "test16" (param $x i32) (result i32) + (i32.extend16_s (local.get $x)) + ) +) diff -Nru binaryen-91/test/wasm2js/stack-modified.2asm.js binaryen-99/test/wasm2js/stack-modified.2asm.js --- binaryen-91/test/wasm2js/stack-modified.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/stack-modified.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,26 +1,19 @@ import { setTempRet0 } from 'env'; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function $0(var$0, var$0$hi) { @@ -569,7 +562,6 @@ return i64toi32_i32$1 | 0; } - var FUNCTION_TABLE = []; return { "fac_expr": legalstub$0, "fac_stack": legalstub$1, @@ -579,8 +571,9 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var fac_expr = retasmFunc.fac_expr; export var fac_stack = retasmFunc.fac_stack; export var fac_stack_raw = retasmFunc.fac_stack_raw; diff -Nru binaryen-91/test/wasm2js/stack-modified.2asm.js.opt binaryen-99/test/wasm2js/stack-modified.2asm.js.opt --- binaryen-91/test/wasm2js/stack-modified.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/stack-modified.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,26 +1,19 @@ import { setTempRet0 } from 'env'; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function $0($0_1, $1) { @@ -66,7 +59,6 @@ return $1; } - var FUNCTION_TABLE = []; return { "fac_expr": legalstub$0, "fac_stack": legalstub$0, @@ -76,8 +68,9 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var fac_expr = retasmFunc.fac_expr; export var fac_stack = retasmFunc.fac_stack; export var fac_stack_raw = retasmFunc.fac_stack_raw; diff -Nru binaryen-91/test/wasm2js/start_func.2asm.js binaryen-99/test/wasm2js/start_func.2asm.js --- binaryen-91/test/wasm2js/start_func.2asm.js 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/wasm2js/start_func.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,61 @@ + +function asmFunc(env) { + var buffer = new ArrayBuffer(65536); + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + function foo() { + HEAP32[1 >> 2] = 2; + } + + foo(); + function __wasm_memory_size() { + return buffer.byteLength / 65536 | 0; + } + + function __wasm_memory_grow(pagesToAdd) { + pagesToAdd = pagesToAdd | 0; + var oldPages = __wasm_memory_size() | 0; + var newPages = oldPages + pagesToAdd | 0; + if ((oldPages < newPages) && (newPages < 65536)) { + var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); + var newHEAP8 = new Int8Array(newBuffer); + newHEAP8.set(HEAP8); + HEAP8 = new Int8Array(newBuffer); + HEAP16 = new Int16Array(newBuffer); + HEAP32 = new Int32Array(newBuffer); + HEAPU8 = new Uint8Array(newBuffer); + HEAPU16 = new Uint16Array(newBuffer); + HEAPU32 = new Uint32Array(newBuffer); + HEAPF32 = new Float32Array(newBuffer); + HEAPF64 = new Float64Array(newBuffer); + buffer = newBuffer; + } + return oldPages; + } + + return { + + }; +} + +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); diff -Nru binaryen-91/test/wasm2js/start_func.2asm.js.opt binaryen-99/test/wasm2js/start_func.2asm.js.opt --- binaryen-91/test/wasm2js/start_func.2asm.js.opt 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/wasm2js/start_func.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,61 @@ + +function asmFunc(env) { + var buffer = new ArrayBuffer(65536); + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var abort = env.abort; + var nan = NaN; + var infinity = Infinity; + function foo() { + HEAP32[0] = 2; + } + + foo(); + function __wasm_memory_size() { + return buffer.byteLength / 65536 | 0; + } + + function __wasm_memory_grow(pagesToAdd) { + pagesToAdd = pagesToAdd | 0; + var oldPages = __wasm_memory_size() | 0; + var newPages = oldPages + pagesToAdd | 0; + if ((oldPages < newPages) && (newPages < 65536)) { + var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); + var newHEAP8 = new Int8Array(newBuffer); + newHEAP8.set(HEAP8); + HEAP8 = new Int8Array(newBuffer); + HEAP16 = new Int16Array(newBuffer); + HEAP32 = new Int32Array(newBuffer); + HEAPU8 = new Uint8Array(newBuffer); + HEAPU16 = new Uint16Array(newBuffer); + HEAPU32 = new Uint32Array(newBuffer); + HEAPF32 = new Float32Array(newBuffer); + HEAPF64 = new Float64Array(newBuffer); + buffer = newBuffer; + } + return oldPages; + } + + return { + + }; +} + +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); diff -Nru binaryen-91/test/wasm2js/start_func.wast binaryen-99/test/wasm2js/start_func.wast --- binaryen-91/test/wasm2js/start_func.wast 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/test/wasm2js/start_func.wast 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,7 @@ +(module + (memory 1) + (start $foo) + (func $foo + (i32.store (i32.const 1) (i32.const 2)) + ) +) diff -Nru binaryen-91/test/wasm2js/switch.2asm.js binaryen-99/test/wasm2js/switch.2asm.js --- binaryen-91/test/wasm2js/switch.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/switch.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,26 +1,19 @@ import { setTempRet0 } from 'env'; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function $0(i) { @@ -58,7 +51,7 @@ function $1(i, i$hi) { i = i | 0; i$hi = i$hi | 0; - var i64toi32_i32$5 = 0, i64toi32_i32$2 = 0, $7_1 = 0, $7$hi = 0, j = 0, j$hi = 0; + var i64toi32_i32$5 = 0, i64toi32_i32$2 = 0, $7 = 0, $7$hi = 0, j = 0, j$hi = 0; j = 100; j$hi = 0; switch_ : { @@ -73,7 +66,7 @@ i64toi32_i32$2 = 0; i64toi32_i32$5 = (i64toi32_i32$2 >>> 0 < i >>> 0) + i$hi | 0; i64toi32_i32$5 = 0 - i64toi32_i32$5 | 0; - $7_1 = i64toi32_i32$2 - i | 0; + $7 = i64toi32_i32$2 - i | 0; $7$hi = i64toi32_i32$5; break switch_; case 6: @@ -84,7 +77,7 @@ case 4: default: i64toi32_i32$5 = j$hi; - $7_1 = j; + $7 = j; $7$hi = i64toi32_i32$5; break switch_; case 7: @@ -92,43 +85,43 @@ }; } i64toi32_i32$5 = -1; - $7_1 = -5; + $7 = -5; $7$hi = i64toi32_i32$5; } i64toi32_i32$5 = $7$hi; - i64toi32_i32$2 = $7_1; + i64toi32_i32$2 = $7; i64toi32_i32$HIGH_BITS = i64toi32_i32$5; return i64toi32_i32$2 | 0; } function $2(i) { i = i | 0; - var $5 = 0, $6 = 0, $7_1 = 0, $8 = 0, $9 = 0; - $2_1 : { - $1_1 : { - $0_1 : { + var $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0; + $2 : { + $1 : { + $0 : { default_ : { $5 = Math_imul(2, i); $6 = $5; - $7_1 = $5; + $7 = $5; $8 = $5; $9 = $5; switch (3 & i | 0 | 0) { case 0: - break $0_1; + break $0; case 1: - break $1_1; + break $1; case 2: - break $2_1; + break $2; default: break default_; }; } $6 = 1e3 + $9 | 0; } - $7_1 = 100 + $6 | 0; + $7 = 100 + $6 | 0; } - $8 = 10 + $7_1 | 0; + $8 = 10 + $7 | 0; } return $8 | 0; } @@ -137,15 +130,15 @@ return 1 | 0; } - function legalstub$1($0_2, $1_2) { - $0_2 = $0_2 | 0; - $1_2 = $1_2 | 0; - var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_2 = 0, $2$hi = 0; + function legalstub$1($0_1, $1_1) { + $0_1 = $0_1 | 0; + $1_1 = $1_1 | 0; + var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0; i64toi32_i32$0 = 0; - $4 = $0_2; + $4 = $0_1; $4$hi = i64toi32_i32$0; i64toi32_i32$0 = 0; - i64toi32_i32$2 = $1_2; + i64toi32_i32$2 = $1_1; i64toi32_i32$1 = 0; i64toi32_i32$3 = 32; i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; @@ -164,7 +157,7 @@ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; i64toi32_i32$2 = $1(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0; i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - $2_2 = i64toi32_i32$2; + $2_1 = i64toi32_i32$2; $2$hi = i64toi32_i32$0; i64toi32_i32$1 = i64toi32_i32$2; i64toi32_i32$2 = 0; @@ -179,10 +172,9 @@ } setTempRet0($13 | 0); i64toi32_i32$2 = $2$hi; - return $2_2 | 0; + return $2_1 | 0; } - var FUNCTION_TABLE = []; return { "stmt": $0, "expr": legalstub$1, @@ -191,8 +183,9 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var stmt = retasmFunc.stmt; export var expr = retasmFunc.expr; export var arg = retasmFunc.arg; diff -Nru binaryen-91/test/wasm2js/tee_local.2asm.js binaryen-99/test/wasm2js/tee_local.2asm.js --- binaryen-91/test/wasm2js/tee_local.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/tee_local.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,26 +1,19 @@ import { setTempRet0 } from 'env'; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function $0() { @@ -319,7 +312,6 @@ return +(+$10(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0, Math_fround($2_1), +$3_1, $4_1 | 0, $5_1 | 0)); } - var FUNCTION_TABLE = []; return { "type_local_i32": $0, "type_local_i64": legalstub$1, @@ -335,8 +327,9 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var type_local_i32 = retasmFunc.type_local_i32; export var type_local_i64 = retasmFunc.type_local_i64; export var type_local_f32 = retasmFunc.type_local_f32; diff -Nru binaryen-91/test/wasm2js/traps.2asm.js binaryen-99/test/wasm2js/traps.2asm.js --- binaryen-91/test/wasm2js/traps.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/traps.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,36 +1,20 @@ - - var scratchBuffer = new ArrayBuffer(8); - var i32ScratchView = new Int32Array(scratchBuffer); - var f32ScratchView = new Float32Array(scratchBuffer); - var f64ScratchView = new Float64Array(scratchBuffer); - - function legalimport$wasm2js_scratch_store_i64(low, high) { - i32ScratchView[0] = low; - i32ScratchView[1] = high; - } - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; + var __wasm_intrinsics_temp_i64 = 0; + var __wasm_intrinsics_temp_i64$hi = 0; var i64toi32_i32$HIGH_BITS = 0; function $0(x, y) { x = x | 0; @@ -174,26 +158,6 @@ $3($9 | 0, i64toi32_i32$1 | 0, $15 | 0, i64toi32_i32$2 | 0); } - function legalfunc$wasm2js_scratch_store_i64($0_1, $0$hi) { - $0_1 = $0_1 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $2_1 = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $0$hi; - $2_1 = $0_1; - i64toi32_i32$2 = $0_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $8 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - legalimport$wasm2js_scratch_store_i64($2_1 | 0, $8 | 0); - } - function _ZN17compiler_builtins3int4sdiv3Div3div17he78fc483e41d7ec7E(var$0, var$0$hi, var$1, var$1$hi) { var$0 = var$0 | 0; var$0$hi = var$0$hi | 0; @@ -381,7 +345,8 @@ var$3 = var$1; var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; - legalfunc$wasm2js_scratch_store_i64(var$0 - Math_imul(var$2, var$3) | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = var$0 - Math_imul(var$2, var$3) | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -436,7 +401,8 @@ i64toi32_i32$1 = $65$hi; i64toi32_i32$0 = $65; i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; - legalfunc$wasm2js_scratch_store_i64(i64toi32_i32$3 | i64toi32_i32$0 | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = i64toi32_i32$3 | i64toi32_i32$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -468,7 +434,8 @@ i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$3 << i64toi32_i32$4 | 0) | 0; $41 = i64toi32_i32$2 << i64toi32_i32$4 | 0; } - legalfunc$wasm2js_scratch_store_i64($41 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = $41; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -482,7 +449,8 @@ } i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; - legalfunc$wasm2js_scratch_store_i64(var$4 & var$0 | 0 | 0, i64toi32_i32$2 | 0); + __wasm_intrinsics_temp_i64 = var$4 & var$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$2; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -675,7 +643,8 @@ } } i64toi32_i32$3 = var$5$hi; - legalfunc$wasm2js_scratch_store_i64(var$5 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$5; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -700,7 +669,8 @@ return i64toi32_i32$3 | 0; } i64toi32_i32$3 = var$0$hi; - legalfunc$wasm2js_scratch_store_i64(var$0 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -751,7 +721,6 @@ return 32 | 0; } - var FUNCTION_TABLE = []; return { "no_dce_i32_div_s": $0, "no_dce_i32_div_u": $1, @@ -760,52 +729,29 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var no_dce_i32_div_s = retasmFunc.no_dce_i32_div_s; export var no_dce_i32_div_u = retasmFunc.no_dce_i32_div_u; export var no_dce_i64_div_s = retasmFunc.no_dce_i64_div_s; export var no_dce_i64_div_u = retasmFunc.no_dce_i64_div_u; -import { getTempRet0 } from 'env'; - - var scratchBuffer = new ArrayBuffer(8); - var i32ScratchView = new Int32Array(scratchBuffer); - var f32ScratchView = new Float32Array(scratchBuffer); - var f64ScratchView = new Float64Array(scratchBuffer); - - function legalimport$wasm2js_scratch_load_i64() { - if (typeof setTempRet0 === 'function') setTempRet0(i32ScratchView[1]); - return i32ScratchView[0]; - } - - function legalimport$wasm2js_scratch_store_i64(low, high) { - i32ScratchView[0] = low; - i32ScratchView[1] = high; - } - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var getTempRet0 = env.getTempRet0; + var nan = NaN; + var infinity = Infinity; + var __wasm_intrinsics_temp_i64 = 0; + var __wasm_intrinsics_temp_i64$hi = 0; var i64toi32_i32$HIGH_BITS = 0; function $0(x, y) { x = x | 0; @@ -949,54 +895,6 @@ $3($9 | 0, i64toi32_i32$1 | 0, $15 | 0, i64toi32_i32$2 | 0); } - function legalfunc$wasm2js_scratch_load_i64() { - var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $8 = 0, $1_1 = 0, $1$hi = 0, $4$hi = 0; - i64toi32_i32$0 = 0; - $1_1 = legalimport$wasm2js_scratch_load_i64() | 0; - $1$hi = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$2 = getTempRet0() | 0; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - $8 = 0; - } else { - i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; - $8 = i64toi32_i32$2 << i64toi32_i32$4 | 0; - } - $4$hi = i64toi32_i32$1; - i64toi32_i32$1 = $1$hi; - i64toi32_i32$0 = $1_1; - i64toi32_i32$2 = $4$hi; - i64toi32_i32$3 = $8; - i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; - i64toi32_i32$0 = i64toi32_i32$0 | i64toi32_i32$3 | 0; - i64toi32_i32$HIGH_BITS = i64toi32_i32$2; - return i64toi32_i32$0 | 0; - } - - function legalfunc$wasm2js_scratch_store_i64($0_1, $0$hi) { - $0_1 = $0_1 | 0; - $0$hi = $0$hi | 0; - var i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $2_1 = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $0$hi; - $2_1 = $0_1; - i64toi32_i32$2 = $0_1; - i64toi32_i32$1 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$1 = 0; - $8 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0; - $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - legalimport$wasm2js_scratch_store_i64($2_1 | 0, $8 | 0); - } - function _ZN17compiler_builtins3int4sdiv3Mod4mod_17h2cbb7bbf36e41d68E(var$0, var$0$hi, var$1, var$1$hi) { var$0 = var$0 | 0; var$0$hi = var$0$hi | 0; @@ -1164,7 +1062,8 @@ var$3 = var$1; var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0; i64toi32_i32$1 = 0; - legalfunc$wasm2js_scratch_store_i64(var$0 - Math_imul(var$2, var$3) | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = var$0 - Math_imul(var$2, var$3) | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$2; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -1219,7 +1118,8 @@ i64toi32_i32$1 = $65$hi; i64toi32_i32$0 = $65; i64toi32_i32$1 = i64toi32_i32$2 | i64toi32_i32$1 | 0; - legalfunc$wasm2js_scratch_store_i64(i64toi32_i32$3 | i64toi32_i32$0 | 0 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = i64toi32_i32$3 | i64toi32_i32$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$3 = var$2 >>> ((__wasm_ctz_i32(var$3 | 0) | 0) & 31 | 0) | 0; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -1251,7 +1151,8 @@ i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$3 << i64toi32_i32$4 | 0) | 0; $41 = i64toi32_i32$2 << i64toi32_i32$4 | 0; } - legalfunc$wasm2js_scratch_store_i64($41 | 0, i64toi32_i32$1 | 0); + __wasm_intrinsics_temp_i64 = $41; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$1; i64toi32_i32$1 = 0; i64toi32_i32$2 = var$4; i64toi32_i32$HIGH_BITS = i64toi32_i32$1; @@ -1265,7 +1166,8 @@ } i64toi32_i32$2 = var$0$hi; i64toi32_i32$2 = 0; - legalfunc$wasm2js_scratch_store_i64(var$4 & var$0 | 0 | 0, i64toi32_i32$2 | 0); + __wasm_intrinsics_temp_i64 = var$4 & var$0 | 0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$2; if ((var$3 | 0) == (1 | 0)) { break label$1 } @@ -1458,7 +1360,8 @@ } } i64toi32_i32$3 = var$5$hi; - legalfunc$wasm2js_scratch_store_i64(var$5 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$5; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = var$0$hi; i64toi32_i32$5 = var$0; i64toi32_i32$2 = 0; @@ -1483,7 +1386,8 @@ return i64toi32_i32$3 | 0; } i64toi32_i32$3 = var$0$hi; - legalfunc$wasm2js_scratch_store_i64(var$0 | 0, i64toi32_i32$3 | 0); + __wasm_intrinsics_temp_i64 = var$0; + __wasm_intrinsics_temp_i64$hi = i64toi32_i32$3; i64toi32_i32$3 = 0; var$0 = 0; var$0$hi = i64toi32_i32$3; @@ -1522,10 +1426,10 @@ i64toi32_i32$1 = var$1$hi; i64toi32_i32$1 = _ZN17compiler_builtins3int4udiv10divmod_u6417h6026910b5ed08e40E(var$0 | 0, i64toi32_i32$0 | 0, var$1 | 0, i64toi32_i32$1 | 0) | 0; i64toi32_i32$0 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$0 = legalfunc$wasm2js_scratch_load_i64() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - i64toi32_i32$HIGH_BITS = i64toi32_i32$1; - return i64toi32_i32$0 | 0; + i64toi32_i32$0 = __wasm_intrinsics_temp_i64$hi; + i64toi32_i32$1 = __wasm_intrinsics_temp_i64; + i64toi32_i32$HIGH_BITS = i64toi32_i32$0; + return i64toi32_i32$1 | 0; } function __wasm_ctz_i32(var$0) { @@ -1536,7 +1440,6 @@ return 32 | 0; } - var FUNCTION_TABLE = []; return { "no_dce_i32_rem_s": $0, "no_dce_i32_rem_u": $1, @@ -1545,34 +1448,27 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },getTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var no_dce_i32_rem_s = retasmFunc.no_dce_i32_rem_s; export var no_dce_i32_rem_u = retasmFunc.no_dce_i32_rem_u; export var no_dce_i64_rem_s = retasmFunc.no_dce_i64_rem_s; export var no_dce_i64_rem_u = retasmFunc.no_dce_i64_rem_u; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $0(x) { x = Math_fround(x); ~~x; @@ -1661,7 +1557,6 @@ ~~i64toi32_i32$0 >>> 0; } - var FUNCTION_TABLE = []; return { "no_dce_i32_trunc_f32_s": $0, "no_dce_i32_trunc_f32_u": $1, @@ -1674,8 +1569,8 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var no_dce_i32_trunc_f32_s = retasmFunc.no_dce_i32_trunc_f32_s; export var no_dce_i32_trunc_f32_u = retasmFunc.no_dce_i32_trunc_f32_u; export var no_dce_i32_trunc_f64_s = retasmFunc.no_dce_i32_trunc_f64_s; @@ -1685,27 +1580,29 @@ export var no_dce_i64_trunc_f64_s = retasmFunc.no_dce_i64_trunc_f64_s; export var no_dce_i64_trunc_f64_u = retasmFunc.no_dce_i64_trunc_f64_u; -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var buffer = new ArrayBuffer(65536); + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $0(i) { i = i | 0; HEAP32[i >> 2] | 0; @@ -1782,7 +1679,6 @@ +HEAPF64[i >> 3]; } - var FUNCTION_TABLE = []; function __wasm_memory_size() { return buffer.byteLength / 65536 | 0; } @@ -1793,17 +1689,16 @@ var newPages = oldPages + pagesToAdd | 0; if ((oldPages < newPages) && (newPages < 65536)) { var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536)); - var newHEAP8 = new global.Int8Array(newBuffer); + var newHEAP8 = new Int8Array(newBuffer); newHEAP8.set(HEAP8); - HEAP8 = newHEAP8; - HEAP8 = new global.Int8Array(newBuffer); - HEAP16 = new global.Int16Array(newBuffer); - HEAP32 = new global.Int32Array(newBuffer); - HEAPU8 = new global.Uint8Array(newBuffer); - HEAPU16 = new global.Uint16Array(newBuffer); - HEAPU32 = new global.Uint32Array(newBuffer); - HEAPF32 = new global.Float32Array(newBuffer); - HEAPF64 = new global.Float64Array(newBuffer); + HEAP8 = new Int8Array(newBuffer); + HEAP16 = new Int16Array(newBuffer); + HEAP32 = new Int32Array(newBuffer); + HEAPU8 = new Uint8Array(newBuffer); + HEAPU16 = new Uint16Array(newBuffer); + HEAPU32 = new Uint32Array(newBuffer); + HEAPF32 = new Float32Array(newBuffer); + HEAPF64 = new Float64Array(newBuffer); buffer = newBuffer; } return oldPages; @@ -1827,8 +1722,8 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var no_dce_i32_load = retasmFunc.no_dce_i32_load; export var no_dce_i32_load16_s = retasmFunc.no_dce_i32_load16_s; export var no_dce_i32_load16_u = retasmFunc.no_dce_i32_load16_u; diff -Nru binaryen-91/test/wasm2js/unaligned.2asm.js binaryen-99/test/wasm2js/unaligned.2asm.js --- binaryen-91/test/wasm2js/unaligned.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/unaligned.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,8 @@ import { setTempRet0 } from 'env'; + var bufferView; - var scratchBuffer = new ArrayBuffer(8); + var scratchBuffer = new ArrayBuffer(16); var i32ScratchView = new Int32Array(scratchBuffer); var f32ScratchView = new Float32Array(scratchBuffer); var f64ScratchView = new Float64Array(scratchBuffer); @@ -23,34 +24,36 @@ } function wasm2js_scratch_load_f32() { - return f32ScratchView[0]; + return f32ScratchView[2]; } function wasm2js_scratch_store_f32(value) { - f32ScratchView[0] = value; + f32ScratchView[2] = value; } -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var buffer = new ArrayBuffer(65536); + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function $0() { @@ -71,7 +74,7 @@ function $2() { var $0_1 = 0; $0_1 = 0; - return Math_fround((wasm2js_scratch_store_i32(0, HEAPU8[$0_1 >> 0] | 0 | ((HEAPU8[($0_1 + 1 | 0) >> 0] | 0) << 8 | 0) | 0 | ((HEAPU8[($0_1 + 2 | 0) >> 0] | 0) << 16 | 0 | ((HEAPU8[($0_1 + 3 | 0) >> 0] | 0) << 24 | 0) | 0) | 0), wasm2js_scratch_load_f32())); + return Math_fround((wasm2js_scratch_store_i32(2, HEAPU8[$0_1 >> 0] | 0 | ((HEAPU8[($0_1 + 1 | 0) >> 0] | 0) << 8 | 0) | 0 | ((HEAPU8[($0_1 + 2 | 0) >> 0] | 0) << 16 | 0 | ((HEAPU8[($0_1 + 3 | 0) >> 0] | 0) << 24 | 0) | 0) | 0), wasm2js_scratch_load_f32())); } function $3() { @@ -111,7 +114,7 @@ function $6() { var $0_1 = 0, $1_1 = 0; $0_1 = 0; - $1_1 = (wasm2js_scratch_store_f32(Math_fround(0.0)), wasm2js_scratch_load_i32(0)); + $1_1 = (wasm2js_scratch_store_f32(Math_fround(0.0)), wasm2js_scratch_load_i32(2)); HEAP8[$0_1 >> 0] = $1_1; HEAP8[($0_1 + 1 | 0) >> 0] = $1_1 >>> 8 | 0; HEAP8[($0_1 + 2 | 0) >> 0] = $1_1 >>> 16 | 0; @@ -157,7 +160,7 @@ return $0_1 | 0; } - var FUNCTION_TABLE = []; + bufferView = HEAPU8; function __wasm_memory_size() { return buffer.byteLength / 65536 | 0; } @@ -174,8 +177,9 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var i32_load = retasmFunc.i32_load; export var i64_load = retasmFunc.i64_load; export var f32_load = retasmFunc.f32_load; diff -Nru binaryen-91/test/wasm2js/unaligned.2asm.js.opt binaryen-99/test/wasm2js/unaligned.2asm.js.opt --- binaryen-91/test/wasm2js/unaligned.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/unaligned.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,7 +1,8 @@ import { setTempRet0 } from 'env'; + var bufferView; - var scratchBuffer = new ArrayBuffer(8); + var scratchBuffer = new ArrayBuffer(16); var i32ScratchView = new Int32Array(scratchBuffer); var f32ScratchView = new Float32Array(scratchBuffer); var f64ScratchView = new Float64Array(scratchBuffer); @@ -23,30 +24,32 @@ } function wasm2js_scratch_load_f32() { - return f32ScratchView[0]; + return f32ScratchView[2]; } -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var buffer = new ArrayBuffer(65536); + var HEAP8 = new Int8Array(buffer); + var HEAP16 = new Int16Array(buffer); + var HEAP32 = new Int32Array(buffer); + var HEAPU8 = new Uint8Array(buffer); + var HEAPU16 = new Uint16Array(buffer); + var HEAPU32 = new Uint32Array(buffer); + var HEAPF32 = new Float32Array(buffer); + var HEAPF64 = new Float64Array(buffer); + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function $0() { @@ -59,7 +62,7 @@ } function $2() { - return Math_fround((wasm2js_scratch_store_i32(0, HEAPU8[0] | HEAPU8[1] << 8 | (HEAPU8[2] << 16 | HEAPU8[3] << 24)), wasm2js_scratch_load_f32())); + return Math_fround((wasm2js_scratch_store_i32(2, HEAPU8[0] | HEAPU8[1] << 8 | (HEAPU8[2] << 16 | HEAPU8[3] << 24)), wasm2js_scratch_load_f32())); } function $3() { @@ -110,7 +113,7 @@ return $0_1; } - var FUNCTION_TABLE = []; + bufferView = HEAPU8; function __wasm_memory_size() { return buffer.byteLength / 65536 | 0; } @@ -127,8 +130,9 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); }, + setTempRet0 + }); export var i32_load = retasmFunc.i32_load; export var i64_load = retasmFunc.i64_load; export var f32_load = retasmFunc.f32_load; diff -Nru binaryen-91/test/wasm2js/unary-ops.2asm.js binaryen-99/test/wasm2js/unary-ops.2asm.js --- binaryen-91/test/wasm2js/unary-ops.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/unary-ops.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var i64toi32_i32$HIGH_BITS = 0; function $1($0) { $0 = $0 | 0; @@ -511,7 +504,6 @@ return i64toi32_i32$5 | 0; } - var FUNCTION_TABLE = []; return { "i32_popcnt": $1, "check_popcnt_i64": legalstub$2, @@ -525,8 +517,8 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var i32_popcnt = retasmFunc.i32_popcnt; export var check_popcnt_i64 = retasmFunc.check_popcnt_i64; export var check_extend_ui32 = retasmFunc.check_extend_ui32; diff -Nru binaryen-91/test/wasm2js/unary-ops.2asm.js.opt binaryen-99/test/wasm2js/unary-ops.2asm.js.opt --- binaryen-91/test/wasm2js/unary-ops.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/unary-ops.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var i64toi32_i32$HIGH_BITS = 0; function $1($0) { $0 = $0 | 0; @@ -34,7 +27,7 @@ function $7($0) { $0 = $0 | 0; if ($0) { - $0 = 31 - Math_clz32($0 + -1 ^ $0) | 0 + $0 = 31 - Math_clz32($0 - 1 ^ $0) | 0 } else { $0 = 32 } @@ -79,16 +72,14 @@ function __wasm_ctz_i64($0, $1_1) { var $2 = 0, $3 = 0; if ($0 | $1_1) { - $3 = $1_1 + -1 | 0; - $2 = $0 + -1 | 0; - if ($2 >>> 0 < 4294967295) { - $3 = $3 + 1 | 0 - } - $2 = Math_clz32($0 ^ $2) + 32 | 0; - $0 = Math_clz32($1_1 ^ $3); - $0 = ($0 | 0) == 32 ? $2 : $0; + $2 = $1_1 - 1 | 0; + $3 = $0 - 1 | 0; + $2 = ($3 | 0) != -1 ? $2 + 1 | 0 : $2; + $3 = Math_clz32($0 ^ $3) + 32 | 0; + $0 = Math_clz32($1_1 ^ $2); + $0 = ($0 | 0) == 32 ? $3 : $0; $1_1 = 63 - $0 | 0; - i64toi32_i32$HIGH_BITS = 0 - (63 < $0 >>> 0) | 0; + i64toi32_i32$HIGH_BITS = 0 - ($0 >>> 0 > 63) | 0; return $1_1; } i64toi32_i32$HIGH_BITS = 0; @@ -112,17 +103,15 @@ function __wasm_popcnt_i64($0, $1_1) { var $2 = 0, $3 = 0, $4 = 0, $5 = 0; while (1) { - $5 = $3; - $2 = $4; + $5 = $4; + $2 = $3; if ($0 | $1_1) { $2 = $0; $0 = $2 - 1 & $2; $1_1 = $1_1 - ($2 >>> 0 < 1) & $1_1; - $2 = $3 + 1 | 0; - if ($2 >>> 0 < 1) { - $4 = $4 + 1 | 0 - } - $3 = $2; + $2 = $4 + 1 | 0; + $3 = $2 >>> 0 < 1 ? $3 + 1 | 0 : $3; + $4 = $2; continue; } break; @@ -131,7 +120,6 @@ return $5; } - var FUNCTION_TABLE = []; return { "i32_popcnt": $1, "check_popcnt_i64": legalstub$2, @@ -145,8 +133,8 @@ }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var i32_popcnt = retasmFunc.i32_popcnt; export var check_popcnt_i64 = retasmFunc.check_popcnt_i64; export var check_extend_ui32 = retasmFunc.check_extend_ui32; diff -Nru binaryen-91/test/wasm2js/unreachable.2asm.js binaryen-99/test/wasm2js/unreachable.2asm.js --- binaryen-91/test/wasm2js/unreachable.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/unreachable.2asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,492 +0,0 @@ -import { setTempRet0 } from 'env'; - -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; - var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var setTempRet0 = env.setTempRet0; - var i64toi32_i32$HIGH_BITS = 0; - function dummy() { - - } - - function dummy3($0, $1, $2_1) { - $0 = $0 | 0; - $1 = $1 | 0; - $2_1 = $2_1 | 0; - } - - function $2() { - abort(); - } - - function $3() { - abort(); - } - - function $4() { - abort(); - } - - function $5() { - abort(); - } - - function $6() { - var $0 = 0; - abort(); - } - - function $7() { - var $0 = 0; - dummy(); - abort(); - } - - function $8() { - dummy(); - abort(); - } - - function $9() { - dummy(); - abort(); - } - - function $10() { - var $0 = 0; - abort(); - } - - function $11() { - var $0 = 0; - block : { - dummy(); - abort(); - } - } - - function $12() { - block : { - dummy(); - abort(); - } - } - - function $13() { - block : { - dummy(); - abort(); - } - } - - function $14() { - var $0 = 0; - block : { - dummy(); - $0 = 1; - break block; - } - return $0 | 0; - } - - function $15() { - var $0 = 0, $2_1 = 0; - loop_in : while (1) abort(); - } - - function $16() { - var $0 = 0, $2_1 = 0; - loop_in : while (1) { - dummy(); - abort(); - }; - } - - function $17() { - loop_in : while (1) { - dummy(); - abort(); - }; - } - - function $18() { - var $0 = 0; - block : { - loop_in : while (1) { - dummy(); - $0 = 1; - break block; - }; - } - return $0 | 0; - } - - function $19() { - abort(); - } - - function $20() { - abort(); - } - - function $21() { - var $0 = 0; - abort(); - } - - function $22() { - var $0 = 0; - abort(); - } - - function $23() { - abort(); - } - - function $24() { - var $0 = 0; - abort(); - } - - function $25() { - var $1 = 0; - abort(); - } - - function $26() { - abort(); - } - - function $27() { - var $0 = 0; - abort(); - } - - function $28($0, $1) { - $0 = $0 | 0; - $1 = $1 | 0; - var $4_1 = 0; - if ($0) { - abort() - } else { - $4_1 = $1 - } - return $4_1 | 0; - } - - function $29($0, $1) { - $0 = $0 | 0; - $1 = $1 | 0; - var $4_1 = 0; - if ($0) { - $4_1 = $1 - } else { - abort() - } - return $4_1 | 0; - } - - function $30($0, $1) { - $0 = $0 | 0; - $1 = $1 | 0; - var $2_1 = 0, $3_1 = 0; - abort(); - } - - function $31($0, $1) { - $0 = $0 | 0; - $1 = $1 | 0; - var $2_1 = 0, $3_1 = 0; - $2_1 = $0; - abort(); - } - - function $32() { - abort(); - } - - function $33() { - abort(); - } - - function $34() { - abort(); - } - - function $35() { - abort(); - } - - function $36() { - abort(); - } - - function $37() { - abort(); - } - - function $38() { - abort(); - } - - function $39() { - abort(); - } - - function $40() { - abort(); - } - - function $41() { - abort(); - } - - function $42() { - abort(); - } - - function $43() { - abort(); - } - - function $44() { - abort(); - } - - function $45() { - abort(); - } - - function $46() { - abort(); - } - - function $47() { - abort(); - } - - function $48() { - abort(); - } - - function $49() { - abort(); - } - - function $50() { - abort(); - } - - function $51() { - abort(); - } - - function $52() { - abort(); - } - - function $53() { - abort(); - } - - function $54() { - abort(); - } - - function legalstub$26() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $26() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7_1 | 0); - i64toi32_i32$0 = $0$hi; - return $0 | 0; - } - - function legalstub$42() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $42() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7_1 | 0); - i64toi32_i32$0 = $0$hi; - return $0 | 0; - } - - function legalstub$49() { - var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0; - i64toi32_i32$0 = $49() | 0; - i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; - $0 = i64toi32_i32$0; - $0$hi = i64toi32_i32$1; - i64toi32_i32$2 = i64toi32_i32$0; - i64toi32_i32$0 = 0; - i64toi32_i32$3 = 32; - i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; - if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { - i64toi32_i32$0 = 0; - $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - } else { - i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; - $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0; - } - setTempRet0($7_1 | 0); - i64toi32_i32$0 = $0$hi; - return $0 | 0; - } - - var FUNCTION_TABLE = []; - return { - "type_i32": $2, - "type_i64": $3, - "type_f32": $4, - "type_f64": $5, - "as_func_first": $6, - "as_func_mid": $7, - "as_func_last": $8, - "as_func_value": $9, - "as_block_first": $10, - "as_block_mid": $11, - "as_block_last": $12, - "as_block_value": $13, - "as_block_broke": $14, - "as_loop_first": $15, - "as_loop_mid": $16, - "as_loop_last": $17, - "as_loop_broke": $18, - "as_br_value": $19, - "as_br_if_cond": $20, - "as_br_if_value": $21, - "as_br_if_value_cond": $22, - "as_br_table_index": $23, - "as_br_table_value": $24, - "as_br_table_value_index": $25, - "as_return_value": legalstub$26, - "as_if_cond": $27, - "as_if_then": $28, - "as_if_else": $29, - "as_select_first": $30, - "as_select_second": $31, - "as_select_cond": $32, - "as_call_first": $33, - "as_call_mid": $34, - "as_call_last": $35, - "as_call_indirect_func": $36, - "as_call_indirect_first": $37, - "as_call_indirect_mid": $38, - "as_call_indirect_last": $39, - "as_local_set_value": $40, - "as_load_address": $41, - "as_loadN_address": legalstub$42, - "as_store_address": $43, - "as_store_value": $44, - "as_storeN_address": $45, - "as_storeN_value": $46, - "as_unary_operand": $47, - "as_binary_left": $48, - "as_binary_right": legalstub$49, - "as_test_operand": $50, - "as_compare_left": $51, - "as_compare_right": $52, - "as_convert_operand": $53, - "as_memory_grow_size": $54 - }; -} - -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); -export var type_i32 = retasmFunc.type_i32; -export var type_i64 = retasmFunc.type_i64; -export var type_f32 = retasmFunc.type_f32; -export var type_f64 = retasmFunc.type_f64; -export var as_func_first = retasmFunc.as_func_first; -export var as_func_mid = retasmFunc.as_func_mid; -export var as_func_last = retasmFunc.as_func_last; -export var as_func_value = retasmFunc.as_func_value; -export var as_block_first = retasmFunc.as_block_first; -export var as_block_mid = retasmFunc.as_block_mid; -export var as_block_last = retasmFunc.as_block_last; -export var as_block_value = retasmFunc.as_block_value; -export var as_block_broke = retasmFunc.as_block_broke; -export var as_loop_first = retasmFunc.as_loop_first; -export var as_loop_mid = retasmFunc.as_loop_mid; -export var as_loop_last = retasmFunc.as_loop_last; -export var as_loop_broke = retasmFunc.as_loop_broke; -export var as_br_value = retasmFunc.as_br_value; -export var as_br_if_cond = retasmFunc.as_br_if_cond; -export var as_br_if_value = retasmFunc.as_br_if_value; -export var as_br_if_value_cond = retasmFunc.as_br_if_value_cond; -export var as_br_table_index = retasmFunc.as_br_table_index; -export var as_br_table_value = retasmFunc.as_br_table_value; -export var as_br_table_value_index = retasmFunc.as_br_table_value_index; -export var as_return_value = retasmFunc.as_return_value; -export var as_if_cond = retasmFunc.as_if_cond; -export var as_if_then = retasmFunc.as_if_then; -export var as_if_else = retasmFunc.as_if_else; -export var as_select_first = retasmFunc.as_select_first; -export var as_select_second = retasmFunc.as_select_second; -export var as_select_cond = retasmFunc.as_select_cond; -export var as_call_first = retasmFunc.as_call_first; -export var as_call_mid = retasmFunc.as_call_mid; -export var as_call_last = retasmFunc.as_call_last; -export var as_call_indirect_func = retasmFunc.as_call_indirect_func; -export var as_call_indirect_first = retasmFunc.as_call_indirect_first; -export var as_call_indirect_mid = retasmFunc.as_call_indirect_mid; -export var as_call_indirect_last = retasmFunc.as_call_indirect_last; -export var as_local_set_value = retasmFunc.as_local_set_value; -export var as_load_address = retasmFunc.as_load_address; -export var as_loadN_address = retasmFunc.as_loadN_address; -export var as_store_address = retasmFunc.as_store_address; -export var as_store_value = retasmFunc.as_store_value; -export var as_storeN_address = retasmFunc.as_storeN_address; -export var as_storeN_value = retasmFunc.as_storeN_value; -export var as_unary_operand = retasmFunc.as_unary_operand; -export var as_binary_left = retasmFunc.as_binary_left; -export var as_binary_right = retasmFunc.as_binary_right; -export var as_test_operand = retasmFunc.as_test_operand; -export var as_compare_left = retasmFunc.as_compare_left; -export var as_compare_right = retasmFunc.as_compare_right; -export var as_convert_operand = retasmFunc.as_convert_operand; -export var as_memory_grow_size = retasmFunc.as_memory_grow_size; diff -Nru binaryen-91/test/wasm2js/unreachable-get-cycle.2asm.js binaryen-99/test/wasm2js/unreachable-get-cycle.2asm.js --- binaryen-91/test/wasm2js/unreachable-get-cycle.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/unreachable-get-cycle.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,30 +1,22 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var FUNCTION_TABLE = []; + var nan = NaN; + var infinity = Infinity; return { }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); diff -Nru binaryen-91/test/wasm2js/unreachable-get-cycle.2asm.js.opt binaryen-99/test/wasm2js/unreachable-get-cycle.2asm.js.opt --- binaryen-91/test/wasm2js/unreachable-get-cycle.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/unreachable-get-cycle.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,30 +1,22 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var FUNCTION_TABLE = []; + var nan = NaN; + var infinity = Infinity; return { }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); diff -Nru binaryen-91/test/wasm2js/unreachable-insts.2asm.js binaryen-99/test/wasm2js/unreachable-insts.2asm.js --- binaryen-91/test/wasm2js/unreachable-insts.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/unreachable-insts.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,30 +1,22 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var FUNCTION_TABLE = []; + var nan = NaN; + var infinity = Infinity; return { }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); diff -Nru binaryen-91/test/wasm2js/unreachable-insts.2asm.js.opt binaryen-99/test/wasm2js/unreachable-insts.2asm.js.opt --- binaryen-91/test/wasm2js/unreachable-insts.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/unreachable-insts.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,30 +1,22 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; - var FUNCTION_TABLE = []; + var nan = NaN; + var infinity = Infinity; return { }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); diff -Nru binaryen-91/test/wasm2js/unreachable-later.2asm.js binaryen-99/test/wasm2js/unreachable-later.2asm.js --- binaryen-91/test/wasm2js/unreachable-later.2asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/unreachable-later.2asm.js 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var global$0 = 10; function $0($0_1) { $0_1 = $0_1 | 0; @@ -66,12 +59,11 @@ } } - var FUNCTION_TABLE = []; return { "func_50": $0 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var func_50 = retasmFunc.func_50; diff -Nru binaryen-91/test/wasm2js/unreachable-later.2asm.js.opt binaryen-99/test/wasm2js/unreachable-later.2asm.js.opt --- binaryen-91/test/wasm2js/unreachable-later.2asm.js.opt 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js/unreachable-later.2asm.js.opt 2021-01-07 20:01:06.000000000 +0000 @@ -1,25 +1,18 @@ -function asmFunc(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; var global$0 = 10; function $0($0_1) { $0_1 = $0_1 | 0; @@ -39,12 +32,11 @@ return $0_1 | 0; } - var FUNCTION_TABLE = []; return { "func_50": $0 }; } -var memasmFunc = new ArrayBuffer(65536); -var retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +var retasmFunc = asmFunc( { abort: function() { throw new Error('abort'); } + }); export var func_50 = retasmFunc.func_50; diff -Nru binaryen-91/test/wasm2js.asserts.js binaryen-99/test/wasm2js.asserts.js --- binaryen-91/test/wasm2js.asserts.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js.asserts.js 2021-01-07 20:01:06.000000000 +0000 @@ -30,27 +30,20 @@ return (actual_lo | 0) == (expected_lo | 0) && (actual_hi | 0) == (expected_hi | 0); } -function asmFunc0(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc0(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $0() { } @@ -67,7 +60,6 @@ return (x | 0) / (y | 0) | 0 | 0; } - var FUNCTION_TABLE = []; return { "empty": $0, "add": $1, @@ -75,8 +67,8 @@ }; } -var memasmFunc0 = new ArrayBuffer(65536); -var retasmFunc0 = asmFunc0({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc0); +var retasmFunc0 = asmFunc0( { abort: function() { throw new Error('abort'); } + }); function check1() { retasmFunc0.empty(); return 1 | 0; diff -Nru binaryen-91/test/wasm2js.traps.js binaryen-99/test/wasm2js.traps.js --- binaryen-91/test/wasm2js.traps.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm2js.traps.js 2021-01-07 20:01:06.000000000 +0000 @@ -30,27 +30,20 @@ return (actual_lo | 0) == (expected_lo | 0) && (actual_hi | 0) == (expected_hi | 0); } -function asmFunc0(global, env, buffer) { - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - var Math_imul = global.Math.imul; - var Math_fround = global.Math.fround; - var Math_abs = global.Math.abs; - var Math_clz32 = global.Math.clz32; - var Math_min = global.Math.min; - var Math_max = global.Math.max; - var Math_floor = global.Math.floor; - var Math_ceil = global.Math.ceil; - var Math_sqrt = global.Math.sqrt; +function asmFunc0(env) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; var abort = env.abort; - var nan = global.NaN; - var infinity = global.Infinity; + var nan = NaN; + var infinity = Infinity; function $0() { } @@ -67,7 +60,6 @@ return (x | 0) / (y | 0) | 0 | 0; } - var FUNCTION_TABLE = []; return { "empty": $0, "add": $1, @@ -75,8 +67,8 @@ }; } -var memasmFunc0 = new ArrayBuffer(65536); -var retasmFunc0 = asmFunc0({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc0); +var retasmFunc0 = asmFunc0( { abort: function() { throw new Error('abort'); } + }); function check1() { retasmFunc0.empty(); return 1 | 0; diff -Nru binaryen-91/test/wasm-only.asm.js binaryen-99/test/wasm-only.asm.js --- binaryen-91/test/wasm-only.asm.js 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm-only.asm.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,484 +0,0 @@ -// -// Test wasm-only builds. In this case, fastcomp emits code that is -// not asm.js, it will only ever run as wasm, and contains special intrinsics for -// asm2wasm that map LLVM IR into i64s. -// - -function asm(global, env, buffer) { - "use asm"; - - var HEAP8 = new global.Int8Array(buffer); - var HEAP16 = new global.Int16Array(buffer); - var HEAP32 = new global.Int32Array(buffer); - var HEAPU8 = new global.Uint8Array(buffer); - var HEAPU16 = new global.Uint16Array(buffer); - var HEAPU32 = new global.Uint32Array(buffer); - var HEAPF32 = new global.Float32Array(buffer); - var HEAPF64 = new global.Float64Array(buffer); - - var STACKTOP = env.STACKTOP | 0; - - var fround = global.Math.fround; - var Math_imul = global.Math.imul; - - var illegalImport = env.illegalImport; - var illegalImportResult = env.illegalImportResult; - - var _fabsf = env._fabsf; - var do_i64 = env.do_i64; - var abort = env.abort; - - function loads() { - var i = 0, f = fround(0), d = +0; - i = load1(100); - i = load1(101, 0); - i = load2(102); - i = load2(103, 0); - i = load2(104, 1); - i = load2(105, 2); - i = load4(106); - i = load4(107, 0); - i = load4(108, 1); - i = load4(109, 2); - i = load4(110, 4); - f = loadf(111); - f = loadf(112, 0); - f = loadf(113, 1); - f = loadf(114, 2); - f = loadf(115, 4); - d = loadd(116); - d = loadd(117, 0); - d = loadd(118, 1); - d = loadd(119, 2); - d = loadd(120, 4); - d = loadd(121, 8); - } - - function stores() { - var i = 0, f = fround(0), d = +0; - store1(100, i); - store1(101, i, 0); - store2(102, i); - store2(103, i, 0); - store2(104, i, 1); - store2(105, i, 2); - store4(106, i); - store4(107, i, 0); - store4(108, i, 1); - store4(109, i, 2); - store4(110, i, 4); - storef(111, f); - storef(112, f, 0); - storef(113, f, 1); - storef(114, f, 2); - storef(115, f, 4); - stored(116, d); - stored(117, d, 0); - stored(118, d, 1); - stored(119, d, 2); - stored(120, d, 4); - stored(121, d, 8); - } - - function test() { - var i = 0, j = i64(), f = fround(0), f1 = fround(0), f2 = fround(0), d1 = +0, d2 = +0; - // bitcasts - i = i32_bc2i(f); - f = i32_bc2f(i); - i = i32_cttz(i); - i = i32_ctpop(i); - j = i64_ctpop(j); - f1 = f32_copysign(f1, f2); - d1 = f64_copysign(d1, d2); - } - - function test64() { - var x = i64(), y = i64(), z = 0; // define i64 variables using special intrinsic - var int32 = 0, float32 = fround(0), float64 = +0; - x = i64_const(100, 0); // i64 constant - y = i64_const(17, 30); - x = i64_add(x, y); // binaries - x = i64_sub(x, y); - x = i64_mul(x, y); - x = i64_udiv(x, y); - x = i64_sdiv(x, y); - x = i64_urem(x, y); - x = i64_srem(x, y); - x = i64_and(x, y); - x = i64_or(x, y); - x = i64_xor(x, y); - x = i64_shl(x, y); - x = i64_ashr(x, y); - x = i64_lshr(x, y); - x = load8(120, 0); // load and store - x = load8(120); - x = load8(120, 2); - x = load8(120, 4); - x = load8(120, 8); - store8(120, x, 0); - store8(120, x); - store8(120, x, 2); - store8(120, x, 4); - store8(120, x, 8); - // comps - z = i64_eq(x, y); - z = i64_ne(x, y); - z = i64_ule(x, y); - z = i64_sle(x, y); - z = i64_uge(x, y); - z = i64_sge(x, y); - z = i64_ult(x, y); - z = i64_slt(x, y); - z = i64_ugt(x, y); - z = i64_sgt(x, y); - // convs - int32 = i64_trunc(x); - x = i64_sext(int32); - x = i64_zext(int32); - float32 = i64_s2f(x); - float64 = i64_s2d(x); - float32 = i64_u2f(x); - float64 = i64_u2d(x); - x = i64_f2s(float32); - x = i64_d2s(float64); - x = i64_f2u(float32); - x = i64_d2u(float64); - // bitcasts - x = i64_bc2i(float64); - float64 = i64_bc2d(x); - // intrinsics - x = i64_ctlz(y); - y = i64_cttz(x); - } - function imports() { - illegalImport(-3.13159, i64_const(11, 22), -33); // this call must be legalized - return i64(illegalImportResult()); - } - function arg(x) { // illegal param, but not exported - x = i64(x); - store8(100, x, 0); - arg(i64(x)); // "coercion"/"cast" - } - function illegalParam(a, x, c) { - a = 0; - x = i64(x); - b = +0; - store4(50, a, 0); - store8(100, x, 0); - stored(200, b, 0); - illegalParam(0, i64(x), 12.34); // "coercion"/"cast" - } - function result() { // illegal result, but not exported - return i64_const(1, 2); - } - function illegalResult() { // illegal result, exported - return i64_const(1, 2); - } - function call1(x) { - x = i64(x); - var y = i64(); - y = i64(call1(x)); - return i64(y); // return i64 with a "cast" - } - function call2(x) { - x = i64(x); - i64(call2(i64(call2(x)))); - return i64_const(591726473, 57073); // return an i64 const - } - function returnCastConst() { - return i64(0); - } - function ifValue64($4, $6) { - $4 = i64($4); - $6 = i64($6); - var $$0 = i64(), $9 = i64(), $10 = i64(); - if ($6) { - $9 = i64(call2($4)); - $$0 = $9; - } else { - $10 = i64(call2($4)); - $$0 = $10; - } - return i64($$0); - } - function ifValue32($4, $6) { - $4 = $4 | 0; - $6 = $6 | 0; - var $$0 = 0, $9 = 0, $10 = 0; - if ($6) { - $9 = ifValue32($4 | 0, $6 | 0) | 0; - $$0 = $9; - } else { - $10 = ifValue32($4 | 0, $6 | 0) | 0; - $$0 = $10; - } - return $$0 | 0; - } - function switch64($a444) { - $a444 = i64($a444); - var $waka = 0; - switch (i64($a444)) { - case i64_const(7,10): { - $waka = 11000; - break; - } - case i64_const(5,10): { - $waka = 10; - break; - } - default: { - $waka = 1; - } - } - return $waka | 0; - } - function unreachable_leftovers($0,$1,$2) { - $0 = $0|0; - $1 = $1|0; - $2 = $2|0; - var label = 0; - L1: do { - if ($1) { - label = 10; - } else { - if ($2) { - break L1; - return; - } - store4($0,-2); - return; - } - } while(0); - if ((label|0) == 10) { - store4($0,-1); - } - return; - } - function switch64TOOMUCH($a444) { - $a444 = i64($a444); - var $waka = 0; - switch (i64($a444)) { - case i64_const(0,1073741824): // spread is huge here, we should not make a jump table! - case i64_const(0,2147483648): { - return 40; - } - default: { - $waka = 1; - } - } - switch (100) { - case 107374182: // similar, but 32-bit - case 214748364: { - return 41; - } - default: { - $waka = 1001; - } - } - // no defaults - switch (i64($a444)) { - case i64_const(0,1073741824): // spread is huge here, we should not make a jump table! - case i64_const(0,2147483648): { - return 42; - } - } - switch (100) { - case 107374182: // similar, but 32-bit - case 214748364: { - return 43; - } - } - return 44; - } - function _memchr($src,$c,$n) { - $src = $src|0; - $c = $c|0; - $n = $n|0; - var $0 = 0, $1 = 0, $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $and = 0, $and15 = 0, $and16 = 0, $and39 = 0, $cmp = 0, $cmp11 = 0, $cmp1132 = 0, $cmp28 = 0, $cmp8 = 0, $cond = 0, $conv1 = 0, $dec = 0; - var $dec34 = 0, $incdec$ptr = 0, $incdec$ptr21 = 0, $incdec$ptr33 = 0, $lnot = 0, $mul = 0, $n$addr$0$lcssa = 0, $n$addr$0$lcssa52 = 0, $n$addr$043 = 0, $n$addr$1$lcssa = 0, $n$addr$133 = 0, $n$addr$227 = 0, $n$addr$3 = 0, $neg = 0, $or$cond = 0, $or$cond42 = 0, $s$0$lcssa = 0, $s$0$lcssa53 = 0, $s$044 = 0, $s$128 = 0; - var $s$2 = 0, $sub = 0, $sub22 = 0, $tobool = 0, $tobool2 = 0, $tobool2$lcssa = 0, $tobool241 = 0, $tobool25 = 0, $tobool2526 = 0, $tobool36 = 0, $tobool40 = 0, $w$0$lcssa = 0, $w$034 = 0, $xor = 0, label = 0, sp = 0; - sp = STACKTOP; - $conv1 = $c & 255; - $0 = $src; - $and39 = $0 & 3; - $tobool40 = ($and39|0)!=(0); - $tobool241 = ($n|0)!=(0); - $or$cond42 = $tobool241 & $tobool40; - L1: do { - if ($or$cond42) { - $1 = $c&255; - $n$addr$043 = $n;$s$044 = $src; - while(1) { - $2 = load1($s$044); - $cmp = ($2<<24>>24)==($1<<24>>24); - if ($cmp) { - $n$addr$0$lcssa52 = $n$addr$043;$s$0$lcssa53 = $s$044; - label = 6; - break L1; - } - $incdec$ptr = ((($s$044)) + 1|0); - $dec = (($n$addr$043) + -1)|0; - $3 = $incdec$ptr; - $and = $3 & 3; - $tobool = ($and|0)!=(0); - $tobool2 = ($dec|0)!=(0); - $or$cond = $tobool2 & $tobool; - if ($or$cond) { - $n$addr$043 = $dec;$s$044 = $incdec$ptr; - } else { - $n$addr$0$lcssa = $dec;$s$0$lcssa = $incdec$ptr;$tobool2$lcssa = $tobool2; - label = 5; - break; - } - } - } else { - $n$addr$0$lcssa = $n;$s$0$lcssa = $src;$tobool2$lcssa = $tobool241; - label = 5; - } - } while(0); - if ((label|0) == 5) { - if ($tobool2$lcssa) { - $n$addr$0$lcssa52 = $n$addr$0$lcssa;$s$0$lcssa53 = $s$0$lcssa; - label = 6; - } else { - $n$addr$3 = 0;$s$2 = $s$0$lcssa; - } - } - L8: do { - if ((label|0) == 6) { - $4 = load1($s$0$lcssa53); - $5 = $c&255; - $cmp8 = ($4<<24>>24)==($5<<24>>24); - if ($cmp8) { - $n$addr$3 = $n$addr$0$lcssa52;$s$2 = $s$0$lcssa53; - } else { - $mul = Math_imul($conv1, 16843009)|0; - $cmp1132 = ($n$addr$0$lcssa52>>>0)>(3); - L11: do { - if ($cmp1132) { - $n$addr$133 = $n$addr$0$lcssa52;$w$034 = $s$0$lcssa53; - while(1) { - $6 = load4($w$034); - $xor = $6 ^ $mul; - $sub = (($xor) + -16843009)|0; - $neg = $xor & -2139062144; - $and15 = $neg ^ -2139062144; - $and16 = $and15 & $sub; - $lnot = ($and16|0)==(0); - if (!($lnot)) { - break; - } - $incdec$ptr21 = ((($w$034)) + 4|0); - $sub22 = (($n$addr$133) + -4)|0; - $cmp11 = ($sub22>>>0)>(3); - if ($cmp11) { - $n$addr$133 = $sub22;$w$034 = $incdec$ptr21; - } else { - $n$addr$1$lcssa = $sub22;$w$0$lcssa = $incdec$ptr21; - label = 11; - break L11; - } - } - $n$addr$227 = $n$addr$133;$s$128 = $w$034; - } else { - $n$addr$1$lcssa = $n$addr$0$lcssa52;$w$0$lcssa = $s$0$lcssa53; - label = 11; - } - } while(0); - if ((label|0) == 11) { - $tobool2526 = ($n$addr$1$lcssa|0)==(0); - if ($tobool2526) { - $n$addr$3 = 0;$s$2 = $w$0$lcssa; - break; - } else { - $n$addr$227 = $n$addr$1$lcssa;$s$128 = $w$0$lcssa; - } - } - while(1) { - $7 = load1($s$128); - $cmp28 = ($7<<24>>24)==($5<<24>>24); - if ($cmp28) { - $n$addr$3 = $n$addr$227;$s$2 = $s$128; - break L8; - } - $incdec$ptr33 = ((($s$128)) + 1|0); - $dec34 = (($n$addr$227) + -1)|0; - $tobool25 = ($dec34|0)==(0); - if ($tobool25) { - $n$addr$3 = 0;$s$2 = $incdec$ptr33; - break; - } else { - $n$addr$227 = $dec34;$s$128 = $incdec$ptr33; - } - } - } - } - } while(0); - $tobool36 = ($n$addr$3|0)!=(0); - $cond = $tobool36 ? $s$2 : 0; - return ($cond|0); - } - - function switch64_big_condition1($x) { - $x = i64($x); - switch (i64($x)) { - case i64_const(0,2146435072): { - abort(); - break; - } - default: { - return; - } - } - } - function switch64_big_condition2($x) { - $x = i64($x); - switch (i64($x)) { - case i64_const(0,2146435072): { - abort(); - break; - } - } - } - - function keepAlive() { - loads(); - loads(); - stores(); - stores(); - test(); - test(); - i64(imports()); - i64(imports()); - arg(i64(0)); - arg(i64(0)); - i64(call1(i64(0))); - i64(call1(i64(0))); - i64(call2(i64(0))); - i64(call2(i64(0))); - i64(returnCastConst()); - i64(returnCastConst()); - i64(ifValue64(i64(0), i64(0))); - i64(ifValue64(i64(0), i64(0))); - ifValue32(0, 0) | 0; - ifValue32(0, 0) | 0; - switch64(i64(0)) | 0; - switch64(i64(0)) | 0; - unreachable_leftovers(0, 0, 0); - unreachable_leftovers(0, 0, 0); - _memchr(0, 0, 0) | 0; - switch64TOOMUCH(i64(0)) | 0; - switch64_big_condition1(i64(0)); - switch64_big_condition2(i64(0)); - } - - function __emscripten_dceable_type_decls() { // dce-able, but this defines the type of fabsf which has no other use - fround(_fabsf(fround(0.0))); - i64(do_i64()); - } - - var FUNCTION_TABLE_X = [illegalImport, _fabsf, do_i64]; // must stay ok in the table, not legalized, as it will be called internally by the true type - - return { test64: test64, illegalParam : illegalParam, illegalResult: illegalResult, keepAlive: keepAlive }; -} - diff -Nru binaryen-91/test/wasm-only.fromasm binaryen-99/test/wasm-only.fromasm --- binaryen-91/test/wasm-only.fromasm 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm-only.fromasm 1970-01-01 00:00:00.000000000 +0000 @@ -1,642 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) - (type $f32_=>_none (func (param f32))) - (type $f64_=>_none (func (param f64))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_f64_=>_none (func (param i32 i32 i32 f64))) - (type $i32_i64_f64_=>_none (func (param i32 i64 f64))) - (type $i64_=>_none (func (param i64))) - (type $f64_i32_i32_i32_=>_none (func (param f64 i32 i32 i32))) - (type $f64_i64_i32_=>_none (func (param f64 i64 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_i64 (func (result i64))) - (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "wasm-only.asm.js") - (import "env" "table" (table $table 3 3 funcref)) - (elem (global.get $__table_base) $legalfunc$illegalImport $_fabsf $legalfunc$do_i64) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "_fabsf" (func $_fabsf (param f32) (result f32))) - (import "env" "setTempRet0" (func $setTempRet0 (param i32))) - (import "env" "illegalImport" (func $legalimport$illegalImport (param f64 i32 i32 i32))) - (import "env" "getTempRet0" (func $getTempRet0 (result i32))) - (import "env" "illegalImportResult" (func $legalimport$illegalImportResult (result i32))) - (import "env" "do_i64" (func $legalimport$do_i64 (result i32))) - (export "test64" (func $test64)) - (export "illegalParam" (func $legalstub$illegalParam)) - (export "illegalResult" (func $legalstub$illegalResult)) - (export "keepAlive" (func $keepAlive)) - (func $loads (; 6 ;) (; has Stack IR ;) - (drop - (i32.load8_s - (i32.const 100) - ) - ) - (drop - (i32.load8_s - (i32.const 101) - ) - ) - (drop - (i32.load16_s - (i32.const 102) - ) - ) - (drop - (i32.load16_s - (i32.const 103) - ) - ) - (drop - (i32.load16_s align=1 - (i32.const 104) - ) - ) - (drop - (i32.load16_s - (i32.const 105) - ) - ) - (drop - (i32.load - (i32.const 106) - ) - ) - (drop - (i32.load - (i32.const 107) - ) - ) - (drop - (i32.load align=1 - (i32.const 108) - ) - ) - (drop - (i32.load align=2 - (i32.const 109) - ) - ) - (drop - (i32.load - (i32.const 110) - ) - ) - (drop - (f32.load - (i32.const 111) - ) - ) - (drop - (f32.load - (i32.const 112) - ) - ) - (drop - (f32.load align=1 - (i32.const 113) - ) - ) - (drop - (f32.load align=2 - (i32.const 114) - ) - ) - (drop - (f32.load - (i32.const 115) - ) - ) - (drop - (f64.load - (i32.const 116) - ) - ) - (drop - (f64.load - (i32.const 117) - ) - ) - (drop - (f64.load align=1 - (i32.const 118) - ) - ) - (drop - (f64.load align=2 - (i32.const 119) - ) - ) - (drop - (f64.load align=4 - (i32.const 120) - ) - ) - (drop - (f64.load - (i32.const 121) - ) - ) - ) - (func $stores (; 7 ;) (; has Stack IR ;) - (i32.store8 - (i32.const 100) - (i32.const 0) - ) - (i32.store8 - (i32.const 101) - (i32.const 0) - ) - (i32.store16 - (i32.const 102) - (i32.const 0) - ) - (i32.store16 - (i32.const 103) - (i32.const 0) - ) - (i32.store16 align=1 - (i32.const 104) - (i32.const 0) - ) - (i32.store16 - (i32.const 105) - (i32.const 0) - ) - (i32.store - (i32.const 106) - (i32.const 0) - ) - (i32.store - (i32.const 107) - (i32.const 0) - ) - (i32.store align=1 - (i32.const 108) - (i32.const 0) - ) - (i32.store align=2 - (i32.const 109) - (i32.const 0) - ) - (i32.store - (i32.const 110) - (i32.const 0) - ) - (f32.store - (i32.const 111) - (f32.const 0) - ) - (f32.store - (i32.const 112) - (f32.const 0) - ) - (f32.store align=1 - (i32.const 113) - (f32.const 0) - ) - (f32.store align=2 - (i32.const 114) - (f32.const 0) - ) - (f32.store - (i32.const 115) - (f32.const 0) - ) - (f64.store - (i32.const 116) - (f64.const 0) - ) - (f64.store - (i32.const 117) - (f64.const 0) - ) - (f64.store align=1 - (i32.const 118) - (f64.const 0) - ) - (f64.store align=2 - (i32.const 119) - (f64.const 0) - ) - (f64.store align=4 - (i32.const 120) - (f64.const 0) - ) - (f64.store - (i32.const 121) - (f64.const 0) - ) - ) - (func $i64s-div (; 8 ;) (; has Stack IR ;) (param $0 i64) (param $1 i64) (result i64) - (if (result i64) - (i64.eqz - (local.get $1) - ) - (i64.const 0) - (if (result i64) - (i32.and - (i64.eq - (local.get $0) - (i64.const -9223372036854775808) - ) - (i64.eq - (local.get $1) - (i64.const -1) - ) - ) - (i64.const 0) - (i64.div_s - (local.get $0) - (local.get $1) - ) - ) - ) - ) - (func $f32-to-int64 (; 9 ;) (; has Stack IR ;) (param $0 f32) - (drop - (if (result i64) - (f32.ne - (local.get $0) - (local.get $0) - ) - (i64.const -9223372036854775808) - (if (result i64) - (f32.ge - (local.get $0) - (f32.const 9223372036854775808) - ) - (i64.const -9223372036854775808) - (if (result i64) - (f32.le - (local.get $0) - (f32.const -9223372036854775808) - ) - (i64.const -9223372036854775808) - (i64.trunc_f32_s - (local.get $0) - ) - ) - ) - ) - ) - ) - (func $f64-to-int64 (; 10 ;) (; has Stack IR ;) (param $0 f64) - (drop - (if (result i64) - (f64.ne - (local.get $0) - (local.get $0) - ) - (i64.const -9223372036854775808) - (if (result i64) - (f64.ge - (local.get $0) - (f64.const 9223372036854775808) - ) - (i64.const -9223372036854775808) - (if (result i64) - (f64.le - (local.get $0) - (f64.const -9223372036854775808) - ) - (i64.const -9223372036854775808) - (i64.trunc_f64_s - (local.get $0) - ) - ) - ) - ) - ) - ) - (func $f32-to-uint64 (; 11 ;) (; has Stack IR ;) (param $0 f32) - (drop - (if (result i64) - (f32.ne - (local.get $0) - (local.get $0) - ) - (i64.const 0) - (if (result i64) - (f32.ge - (local.get $0) - (f32.const 18446744073709551615) - ) - (i64.const 0) - (if (result i64) - (f32.le - (local.get $0) - (f32.const -1) - ) - (i64.const 0) - (i64.trunc_f32_u - (local.get $0) - ) - ) - ) - ) - ) - ) - (func $f64-to-uint64 (; 12 ;) (; has Stack IR ;) (param $0 f64) - (drop - (if (result i64) - (f64.ne - (local.get $0) - (local.get $0) - ) - (i64.const 0) - (if (result i64) - (f64.ge - (local.get $0) - (f64.const 18446744073709551615) - ) - (i64.const 0) - (if (result i64) - (f64.le - (local.get $0) - (f64.const -1) - ) - (i64.const 0) - (i64.trunc_f64_u - (local.get $0) - ) - ) - ) - ) - ) - ) - (func $test64 (; 13 ;) (; has Stack IR ;) - (local $0 i64) - (local $1 f32) - (local $2 f64) - (drop - (i64.rem_s - (i64.rem_u - (call $i64s-div - (i64.const 100) - (i64.const 128849018897) - ) - (i64.const 128849018897) - ) - (i64.const 128849018897) - ) - ) - (drop - (i64.load - (i32.const 120) - ) - ) - (drop - (i64.load - (i32.const 120) - ) - ) - (drop - (i64.load align=2 - (i32.const 120) - ) - ) - (drop - (i64.load align=4 - (i32.const 120) - ) - ) - (i64.store - (i32.const 120) - (local.tee $0 - (i64.load - (i32.const 120) - ) - ) - ) - (i64.store - (i32.const 120) - (local.get $0) - ) - (i64.store align=2 - (i32.const 120) - (local.get $0) - ) - (i64.store align=4 - (i32.const 120) - (local.get $0) - ) - (i64.store - (i32.const 120) - (local.get $0) - ) - (call $f32-to-int64 - (local.tee $1 - (f32.convert_i64_u - (local.tee $0 - (i64.extend_i32_u - (i32.wrap_i64 - (local.get $0) - ) - ) - ) - ) - ) - ) - (call $f64-to-int64 - (local.tee $2 - (f64.convert_i64_u - (local.get $0) - ) - ) - ) - (call $f32-to-uint64 - (local.get $1) - ) - (call $f64-to-uint64 - (local.get $2) - ) - ) - (func $imports (; 14 ;) (; has Stack IR ;) - (call $legalfunc$illegalImport - (f64.const -3.13159) - (i64.const 94489280523) - (i32.const -33) - ) - (drop - (i64.or - (i64.extend_i32_u - (call $legalimport$illegalImportResult) - ) - (i64.shl - (i64.extend_i32_u - (call $getTempRet0) - ) - (i64.const 32) - ) - ) - ) - ) - (func $arg (; 15 ;) (; has Stack IR ;) (param $0 i64) - (i64.store - (i32.const 100) - (local.get $0) - ) - (call $arg - (local.get $0) - ) - ) - (func $illegalParam (; 16 ;) (; has Stack IR ;) (param $0 i32) (param $1 i64) (param $2 f64) - (i32.store - (i32.const 50) - (local.get $0) - ) - (i64.store - (i32.const 100) - (local.get $1) - ) - (f64.store - (i32.const 200) - (local.get $2) - ) - (call $illegalParam - (i32.const 0) - (local.get $1) - (f64.const 12.34) - ) - ) - (func $call1 (; 17 ;) (; has Stack IR ;) (param $0 i64) (result i64) - (call $call1 - (local.get $0) - ) - ) - (func $call2 (; 18 ;) (; has Stack IR ;) (param $0 i64) (result i64) - (drop - (call $call2 - (call $call2 - (local.get $0) - ) - ) - ) - (i64.const 245127260211081) - ) - (func $ifValue64 (; 19 ;) (; has Stack IR ;) - (drop - (call $call2 - (i64.const 0) - ) - ) - ) - (func $ifValue32 (; 20 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (call $ifValue32 - (local.get $0) - (local.get $1) - ) - ) - (func $unreachable_leftovers (; 21 ;) (; has Stack IR ;) - (i32.store - (i32.const 0) - (i32.const -2) - ) - ) - (func $keepAlive (; 22 ;) (; has Stack IR ;) - (call $loads) - (call $loads) - (call $stores) - (call $stores) - (call $imports) - (call $imports) - (call $arg - (i64.const 0) - ) - (call $arg - (i64.const 0) - ) - (drop - (call $call1 - (i64.const 0) - ) - ) - (drop - (call $call1 - (i64.const 0) - ) - ) - (drop - (call $call2 - (i64.const 0) - ) - ) - (drop - (call $call2 - (i64.const 0) - ) - ) - (call $ifValue64) - (call $ifValue64) - (drop - (call $ifValue32 - (i32.const 0) - (i32.const 0) - ) - ) - (drop - (call $ifValue32 - (i32.const 0) - (i32.const 0) - ) - ) - (call $unreachable_leftovers) - (call $unreachable_leftovers) - ) - (func $legalstub$illegalParam (; 23 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 f64) - (call $illegalParam - (local.get $0) - (i64.or - (i64.extend_i32_u - (local.get $1) - ) - (i64.shl - (i64.extend_i32_u - (local.get $2) - ) - (i64.const 32) - ) - ) - (local.get $3) - ) - ) - (func $legalstub$illegalResult (; 24 ;) (; has Stack IR ;) (result i32) - (call $setTempRet0 - (i32.const 2) - ) - (i32.const 1) - ) - (func $legalfunc$illegalImport (; 25 ;) (; has Stack IR ;) (param $0 f64) (param $1 i64) (param $2 i32) - (call $legalimport$illegalImport - (local.get $0) - (i32.wrap_i64 - (local.get $1) - ) - (i32.wrap_i64 - (i64.shr_u - (local.get $1) - (i64.const 32) - ) - ) - (local.get $2) - ) - ) - (func $legalfunc$do_i64 (; 26 ;) (; has Stack IR ;) (result i64) - (i64.or - (i64.extend_i32_u - (call $legalimport$do_i64) - ) - (i64.shl - (i64.extend_i32_u - (call $getTempRet0) - ) - (i64.const 32) - ) - ) - ) -) diff -Nru binaryen-91/test/wasm-only.fromasm.clamp binaryen-99/test/wasm-only.fromasm.clamp --- binaryen-91/test/wasm-only.fromasm.clamp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm-only.fromasm.clamp 1970-01-01 00:00:00.000000000 +0000 @@ -1,642 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) - (type $f32_=>_none (func (param f32))) - (type $f64_=>_none (func (param f64))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_f64_=>_none (func (param i32 i32 i32 f64))) - (type $i32_i64_f64_=>_none (func (param i32 i64 f64))) - (type $i64_=>_none (func (param i64))) - (type $f64_i32_i32_i32_=>_none (func (param f64 i32 i32 i32))) - (type $f64_i64_i32_=>_none (func (param f64 i64 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_i64 (func (result i64))) - (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (import "env" "memory" (memory $memory 256 256)) - (data (global.get $__memory_base) "wasm-only.asm.js") - (import "env" "table" (table $table 3 3 funcref)) - (elem (global.get $__table_base) $legalfunc$illegalImport $_fabsf $legalfunc$do_i64) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "_fabsf" (func $_fabsf (param f32) (result f32))) - (import "env" "setTempRet0" (func $setTempRet0 (param i32))) - (import "env" "illegalImport" (func $legalimport$illegalImport (param f64 i32 i32 i32))) - (import "env" "getTempRet0" (func $getTempRet0 (result i32))) - (import "env" "illegalImportResult" (func $legalimport$illegalImportResult (result i32))) - (import "env" "do_i64" (func $legalimport$do_i64 (result i32))) - (export "test64" (func $test64)) - (export "illegalParam" (func $legalstub$illegalParam)) - (export "illegalResult" (func $legalstub$illegalResult)) - (export "keepAlive" (func $keepAlive)) - (func $loads (; 6 ;) (; has Stack IR ;) - (drop - (i32.load8_s - (i32.const 100) - ) - ) - (drop - (i32.load8_s - (i32.const 101) - ) - ) - (drop - (i32.load16_s - (i32.const 102) - ) - ) - (drop - (i32.load16_s - (i32.const 103) - ) - ) - (drop - (i32.load16_s align=1 - (i32.const 104) - ) - ) - (drop - (i32.load16_s - (i32.const 105) - ) - ) - (drop - (i32.load - (i32.const 106) - ) - ) - (drop - (i32.load - (i32.const 107) - ) - ) - (drop - (i32.load align=1 - (i32.const 108) - ) - ) - (drop - (i32.load align=2 - (i32.const 109) - ) - ) - (drop - (i32.load - (i32.const 110) - ) - ) - (drop - (f32.load - (i32.const 111) - ) - ) - (drop - (f32.load - (i32.const 112) - ) - ) - (drop - (f32.load align=1 - (i32.const 113) - ) - ) - (drop - (f32.load align=2 - (i32.const 114) - ) - ) - (drop - (f32.load - (i32.const 115) - ) - ) - (drop - (f64.load - (i32.const 116) - ) - ) - (drop - (f64.load - (i32.const 117) - ) - ) - (drop - (f64.load align=1 - (i32.const 118) - ) - ) - (drop - (f64.load align=2 - (i32.const 119) - ) - ) - (drop - (f64.load align=4 - (i32.const 120) - ) - ) - (drop - (f64.load - (i32.const 121) - ) - ) - ) - (func $stores (; 7 ;) (; has Stack IR ;) - (i32.store8 - (i32.const 100) - (i32.const 0) - ) - (i32.store8 - (i32.const 101) - (i32.const 0) - ) - (i32.store16 - (i32.const 102) - (i32.const 0) - ) - (i32.store16 - (i32.const 103) - (i32.const 0) - ) - (i32.store16 align=1 - (i32.const 104) - (i32.const 0) - ) - (i32.store16 - (i32.const 105) - (i32.const 0) - ) - (i32.store - (i32.const 106) - (i32.const 0) - ) - (i32.store - (i32.const 107) - (i32.const 0) - ) - (i32.store align=1 - (i32.const 108) - (i32.const 0) - ) - (i32.store align=2 - (i32.const 109) - (i32.const 0) - ) - (i32.store - (i32.const 110) - (i32.const 0) - ) - (f32.store - (i32.const 111) - (f32.const 0) - ) - (f32.store - (i32.const 112) - (f32.const 0) - ) - (f32.store align=1 - (i32.const 113) - (f32.const 0) - ) - (f32.store align=2 - (i32.const 114) - (f32.const 0) - ) - (f32.store - (i32.const 115) - (f32.const 0) - ) - (f64.store - (i32.const 116) - (f64.const 0) - ) - (f64.store - (i32.const 117) - (f64.const 0) - ) - (f64.store align=1 - (i32.const 118) - (f64.const 0) - ) - (f64.store align=2 - (i32.const 119) - (f64.const 0) - ) - (f64.store align=4 - (i32.const 120) - (f64.const 0) - ) - (f64.store - (i32.const 121) - (f64.const 0) - ) - ) - (func $i64s-div (; 8 ;) (; has Stack IR ;) (param $0 i64) (param $1 i64) (result i64) - (if (result i64) - (i64.eqz - (local.get $1) - ) - (i64.const 0) - (if (result i64) - (i32.and - (i64.eq - (local.get $0) - (i64.const -9223372036854775808) - ) - (i64.eq - (local.get $1) - (i64.const -1) - ) - ) - (i64.const 0) - (i64.div_s - (local.get $0) - (local.get $1) - ) - ) - ) - ) - (func $f32-to-int64 (; 9 ;) (; has Stack IR ;) (param $0 f32) - (drop - (if (result i64) - (f32.ne - (local.get $0) - (local.get $0) - ) - (i64.const -9223372036854775808) - (if (result i64) - (f32.ge - (local.get $0) - (f32.const 9223372036854775808) - ) - (i64.const -9223372036854775808) - (if (result i64) - (f32.le - (local.get $0) - (f32.const -9223372036854775808) - ) - (i64.const -9223372036854775808) - (i64.trunc_f32_s - (local.get $0) - ) - ) - ) - ) - ) - ) - (func $f64-to-int64 (; 10 ;) (; has Stack IR ;) (param $0 f64) - (drop - (if (result i64) - (f64.ne - (local.get $0) - (local.get $0) - ) - (i64.const -9223372036854775808) - (if (result i64) - (f64.ge - (local.get $0) - (f64.const 9223372036854775808) - ) - (i64.const -9223372036854775808) - (if (result i64) - (f64.le - (local.get $0) - (f64.const -9223372036854775808) - ) - (i64.const -9223372036854775808) - (i64.trunc_f64_s - (local.get $0) - ) - ) - ) - ) - ) - ) - (func $f32-to-uint64 (; 11 ;) (; has Stack IR ;) (param $0 f32) - (drop - (if (result i64) - (f32.ne - (local.get $0) - (local.get $0) - ) - (i64.const 0) - (if (result i64) - (f32.ge - (local.get $0) - (f32.const 18446744073709551615) - ) - (i64.const 0) - (if (result i64) - (f32.le - (local.get $0) - (f32.const -1) - ) - (i64.const 0) - (i64.trunc_f32_u - (local.get $0) - ) - ) - ) - ) - ) - ) - (func $f64-to-uint64 (; 12 ;) (; has Stack IR ;) (param $0 f64) - (drop - (if (result i64) - (f64.ne - (local.get $0) - (local.get $0) - ) - (i64.const 0) - (if (result i64) - (f64.ge - (local.get $0) - (f64.const 18446744073709551615) - ) - (i64.const 0) - (if (result i64) - (f64.le - (local.get $0) - (f64.const -1) - ) - (i64.const 0) - (i64.trunc_f64_u - (local.get $0) - ) - ) - ) - ) - ) - ) - (func $test64 (; 13 ;) (; has Stack IR ;) - (local $0 i64) - (local $1 f32) - (local $2 f64) - (drop - (i64.rem_s - (i64.rem_u - (call $i64s-div - (i64.const 100) - (i64.const 128849018897) - ) - (i64.const 128849018897) - ) - (i64.const 128849018897) - ) - ) - (drop - (i64.load - (i32.const 120) - ) - ) - (drop - (i64.load - (i32.const 120) - ) - ) - (drop - (i64.load align=2 - (i32.const 120) - ) - ) - (drop - (i64.load align=4 - (i32.const 120) - ) - ) - (i64.store - (i32.const 120) - (local.tee $0 - (i64.load - (i32.const 120) - ) - ) - ) - (i64.store - (i32.const 120) - (local.get $0) - ) - (i64.store align=2 - (i32.const 120) - (local.get $0) - ) - (i64.store align=4 - (i32.const 120) - (local.get $0) - ) - (i64.store - (i32.const 120) - (local.get $0) - ) - (call $f32-to-int64 - (local.tee $1 - (f32.convert_i64_u - (local.tee $0 - (i64.extend_i32_u - (i32.wrap_i64 - (local.get $0) - ) - ) - ) - ) - ) - ) - (call $f64-to-int64 - (local.tee $2 - (f64.convert_i64_u - (local.get $0) - ) - ) - ) - (call $f32-to-uint64 - (local.get $1) - ) - (call $f64-to-uint64 - (local.get $2) - ) - ) - (func $imports (; 14 ;) (; has Stack IR ;) - (call $legalfunc$illegalImport - (f64.const -3.13159) - (i64.const 94489280523) - (i32.const -33) - ) - (drop - (i64.or - (i64.extend_i32_u - (call $legalimport$illegalImportResult) - ) - (i64.shl - (i64.extend_i32_u - (call $getTempRet0) - ) - (i64.const 32) - ) - ) - ) - ) - (func $arg (; 15 ;) (; has Stack IR ;) (param $0 i64) - (i64.store - (i32.const 100) - (local.get $0) - ) - (call $arg - (local.get $0) - ) - ) - (func $illegalParam (; 16 ;) (; has Stack IR ;) (param $0 i32) (param $1 i64) (param $2 f64) - (i32.store - (i32.const 50) - (local.get $0) - ) - (i64.store - (i32.const 100) - (local.get $1) - ) - (f64.store - (i32.const 200) - (local.get $2) - ) - (call $illegalParam - (i32.const 0) - (local.get $1) - (f64.const 12.34) - ) - ) - (func $call1 (; 17 ;) (; has Stack IR ;) (param $0 i64) (result i64) - (call $call1 - (local.get $0) - ) - ) - (func $call2 (; 18 ;) (; has Stack IR ;) (param $0 i64) (result i64) - (drop - (call $call2 - (call $call2 - (local.get $0) - ) - ) - ) - (i64.const 245127260211081) - ) - (func $ifValue64 (; 19 ;) (; has Stack IR ;) - (drop - (call $call2 - (i64.const 0) - ) - ) - ) - (func $ifValue32 (; 20 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (call $ifValue32 - (local.get $0) - (local.get $1) - ) - ) - (func $unreachable_leftovers (; 21 ;) (; has Stack IR ;) - (i32.store - (i32.const 0) - (i32.const -2) - ) - ) - (func $keepAlive (; 22 ;) (; has Stack IR ;) - (call $loads) - (call $loads) - (call $stores) - (call $stores) - (call $imports) - (call $imports) - (call $arg - (i64.const 0) - ) - (call $arg - (i64.const 0) - ) - (drop - (call $call1 - (i64.const 0) - ) - ) - (drop - (call $call1 - (i64.const 0) - ) - ) - (drop - (call $call2 - (i64.const 0) - ) - ) - (drop - (call $call2 - (i64.const 0) - ) - ) - (call $ifValue64) - (call $ifValue64) - (drop - (call $ifValue32 - (i32.const 0) - (i32.const 0) - ) - ) - (drop - (call $ifValue32 - (i32.const 0) - (i32.const 0) - ) - ) - (call $unreachable_leftovers) - (call $unreachable_leftovers) - ) - (func $legalstub$illegalParam (; 23 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 f64) - (call $illegalParam - (local.get $0) - (i64.or - (i64.extend_i32_u - (local.get $1) - ) - (i64.shl - (i64.extend_i32_u - (local.get $2) - ) - (i64.const 32) - ) - ) - (local.get $3) - ) - ) - (func $legalstub$illegalResult (; 24 ;) (; has Stack IR ;) (result i32) - (call $setTempRet0 - (i32.const 2) - ) - (i32.const 1) - ) - (func $legalfunc$illegalImport (; 25 ;) (; has Stack IR ;) (param $0 f64) (param $1 i64) (param $2 i32) - (call $legalimport$illegalImport - (local.get $0) - (i32.wrap_i64 - (local.get $1) - ) - (i32.wrap_i64 - (i64.shr_u - (local.get $1) - (i64.const 32) - ) - ) - (local.get $2) - ) - ) - (func $legalfunc$do_i64 (; 26 ;) (; has Stack IR ;) (result i64) - (i64.or - (i64.extend_i32_u - (call $legalimport$do_i64) - ) - (i64.shl - (i64.extend_i32_u - (call $getTempRet0) - ) - (i64.const 32) - ) - ) - ) -) diff -Nru binaryen-91/test/wasm-only.fromasm.clamp.no-opts binaryen-99/test/wasm-only.fromasm.clamp.no-opts --- binaryen-91/test/wasm-only.fromasm.clamp.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm-only.fromasm.clamp.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,1928 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $none_=>_i64 (func (result i64))) - (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) - (type $none_=>_i32 (func (result i32))) - (type $i64_=>_none (func (param i64))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $f32_=>_i64 (func (param f32) (result i64))) - (type $f64_=>_i64 (func (param f64) (result i64))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_f64_=>_none (func (param i32 i32 i32 f64))) - (type $i32_i64_f64_=>_none (func (param i32 i64 f64))) - (type $f64_i32_i32_i32_=>_none (func (param f64 i32 i32 i32))) - (type $f64_i64_i32_=>_none (func (param f64 i64 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 3 3 funcref)) - (elem (global.get $__table_base) $legalfunc$illegalImport $_fabsf $legalfunc$do_i64) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "_fabsf" (func $_fabsf (param f32) (result f32))) - (import "env" "abort" (func $abort)) - (import "env" "setTempRet0" (func $setTempRet0 (param i32))) - (import "env" "illegalImport" (func $legalimport$illegalImport (param f64 i32 i32 i32))) - (import "env" "getTempRet0" (func $getTempRet0 (result i32))) - (import "env" "illegalImportResult" (func $legalimport$illegalImportResult (result i32))) - (import "env" "do_i64" (func $legalimport$do_i64 (result i32))) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (export "test64" (func $test64)) - (export "illegalParam" (func $legalstub$illegalParam)) - (export "illegalResult" (func $legalstub$illegalResult)) - (export "keepAlive" (func $keepAlive)) - (func $loads (; 7 ;) - (local $i i32) - (local $f f32) - (local $d f64) - (local.set $i - (i32.load8_s - (i32.const 100) - ) - ) - (local.set $i - (i32.load8_s - (i32.const 101) - ) - ) - (local.set $i - (i32.load16_s - (i32.const 102) - ) - ) - (local.set $i - (i32.load16_s - (i32.const 103) - ) - ) - (local.set $i - (i32.load16_s align=1 - (i32.const 104) - ) - ) - (local.set $i - (i32.load16_s - (i32.const 105) - ) - ) - (local.set $i - (i32.load - (i32.const 106) - ) - ) - (local.set $i - (i32.load - (i32.const 107) - ) - ) - (local.set $i - (i32.load align=1 - (i32.const 108) - ) - ) - (local.set $i - (i32.load align=2 - (i32.const 109) - ) - ) - (local.set $i - (i32.load - (i32.const 110) - ) - ) - (local.set $f - (f32.load - (i32.const 111) - ) - ) - (local.set $f - (f32.load - (i32.const 112) - ) - ) - (local.set $f - (f32.load align=1 - (i32.const 113) - ) - ) - (local.set $f - (f32.load align=2 - (i32.const 114) - ) - ) - (local.set $f - (f32.load - (i32.const 115) - ) - ) - (local.set $d - (f64.load - (i32.const 116) - ) - ) - (local.set $d - (f64.load - (i32.const 117) - ) - ) - (local.set $d - (f64.load align=1 - (i32.const 118) - ) - ) - (local.set $d - (f64.load align=2 - (i32.const 119) - ) - ) - (local.set $d - (f64.load align=4 - (i32.const 120) - ) - ) - (local.set $d - (f64.load - (i32.const 121) - ) - ) - ) - (func $stores (; 8 ;) - (local $i i32) - (local $f f32) - (local $d f64) - (i32.store8 - (i32.const 100) - (local.get $i) - ) - (i32.store8 - (i32.const 101) - (local.get $i) - ) - (i32.store16 - (i32.const 102) - (local.get $i) - ) - (i32.store16 - (i32.const 103) - (local.get $i) - ) - (i32.store16 align=1 - (i32.const 104) - (local.get $i) - ) - (i32.store16 - (i32.const 105) - (local.get $i) - ) - (i32.store - (i32.const 106) - (local.get $i) - ) - (i32.store - (i32.const 107) - (local.get $i) - ) - (i32.store align=1 - (i32.const 108) - (local.get $i) - ) - (i32.store align=2 - (i32.const 109) - (local.get $i) - ) - (i32.store - (i32.const 110) - (local.get $i) - ) - (f32.store - (i32.const 111) - (local.get $f) - ) - (f32.store - (i32.const 112) - (local.get $f) - ) - (f32.store align=1 - (i32.const 113) - (local.get $f) - ) - (f32.store align=2 - (i32.const 114) - (local.get $f) - ) - (f32.store - (i32.const 115) - (local.get $f) - ) - (f64.store - (i32.const 116) - (local.get $d) - ) - (f64.store - (i32.const 117) - (local.get $d) - ) - (f64.store align=1 - (i32.const 118) - (local.get $d) - ) - (f64.store align=2 - (i32.const 119) - (local.get $d) - ) - (f64.store align=4 - (i32.const 120) - (local.get $d) - ) - (f64.store - (i32.const 121) - (local.get $d) - ) - ) - (func $test (; 9 ;) - (local $i i32) - (local $j i64) - (local $f f32) - (local $f1 f32) - (local $f2 f32) - (local $d1 f64) - (local $d2 f64) - (local.set $i - (i32.reinterpret_f32 - (local.get $f) - ) - ) - (local.set $f - (f32.reinterpret_i32 - (local.get $i) - ) - ) - (local.set $i - (i32.ctz - (local.get $i) - ) - ) - (local.set $i - (i32.popcnt - (local.get $i) - ) - ) - (local.set $j - (i64.popcnt - (local.get $j) - ) - ) - (local.set $f1 - (f32.copysign - (local.get $f1) - (local.get $f2) - ) - ) - (local.set $d1 - (f64.copysign - (local.get $d1) - (local.get $d2) - ) - ) - ) - (func $i64u-div (; 10 ;) (param $0 i64) (param $1 i64) (result i64) - (if (result i64) - (i64.eqz - (local.get $1) - ) - (i64.const 0) - (i64.div_u - (local.get $0) - (local.get $1) - ) - ) - ) - (func $i64s-div (; 11 ;) (param $0 i64) (param $1 i64) (result i64) - (if (result i64) - (i64.eqz - (local.get $1) - ) - (i64.const 0) - (if (result i64) - (i32.and - (i64.eq - (local.get $0) - (i64.const -9223372036854775808) - ) - (i64.eq - (local.get $1) - (i64.const -1) - ) - ) - (i64.const 0) - (i64.div_s - (local.get $0) - (local.get $1) - ) - ) - ) - ) - (func $i64u-rem (; 12 ;) (param $0 i64) (param $1 i64) (result i64) - (if (result i64) - (i64.eqz - (local.get $1) - ) - (i64.const 0) - (i64.rem_u - (local.get $0) - (local.get $1) - ) - ) - ) - (func $i64s-rem (; 13 ;) (param $0 i64) (param $1 i64) (result i64) - (if (result i64) - (i64.eqz - (local.get $1) - ) - (i64.const 0) - (i64.rem_s - (local.get $0) - (local.get $1) - ) - ) - ) - (func $f32-to-int64 (; 14 ;) (param $0 f32) (result i64) - (if (result i64) - (f32.ne - (local.get $0) - (local.get $0) - ) - (i64.const -9223372036854775808) - (if (result i64) - (f32.ge - (local.get $0) - (f32.const 9223372036854775808) - ) - (i64.const -9223372036854775808) - (if (result i64) - (f32.le - (local.get $0) - (f32.const -9223372036854775808) - ) - (i64.const -9223372036854775808) - (i64.trunc_f32_s - (local.get $0) - ) - ) - ) - ) - ) - (func $f64-to-int64 (; 15 ;) (param $0 f64) (result i64) - (if (result i64) - (f64.ne - (local.get $0) - (local.get $0) - ) - (i64.const -9223372036854775808) - (if (result i64) - (f64.ge - (local.get $0) - (f64.const 9223372036854775808) - ) - (i64.const -9223372036854775808) - (if (result i64) - (f64.le - (local.get $0) - (f64.const -9223372036854775808) - ) - (i64.const -9223372036854775808) - (i64.trunc_f64_s - (local.get $0) - ) - ) - ) - ) - ) - (func $f32-to-uint64 (; 16 ;) (param $0 f32) (result i64) - (if (result i64) - (f32.ne - (local.get $0) - (local.get $0) - ) - (i64.const 0) - (if (result i64) - (f32.ge - (local.get $0) - (f32.const 18446744073709551615) - ) - (i64.const 0) - (if (result i64) - (f32.le - (local.get $0) - (f32.const -1) - ) - (i64.const 0) - (i64.trunc_f32_u - (local.get $0) - ) - ) - ) - ) - ) - (func $f64-to-uint64 (; 17 ;) (param $0 f64) (result i64) - (if (result i64) - (f64.ne - (local.get $0) - (local.get $0) - ) - (i64.const 0) - (if (result i64) - (f64.ge - (local.get $0) - (f64.const 18446744073709551615) - ) - (i64.const 0) - (if (result i64) - (f64.le - (local.get $0) - (f64.const -1) - ) - (i64.const 0) - (i64.trunc_f64_u - (local.get $0) - ) - ) - ) - ) - ) - (func $test64 (; 18 ;) - (local $x i64) - (local $y i64) - (local $z i32) - (local $int32 i32) - (local $float32 f32) - (local $float64 f64) - (local.set $x - (i64.const 100) - ) - (local.set $y - (i64.const 128849018897) - ) - (local.set $x - (i64.add - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.sub - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.mul - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (call $i64u-div - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (call $i64s-div - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (call $i64u-rem - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (call $i64s-rem - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.and - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.or - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.xor - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.shl - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.shr_s - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.shr_u - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.load - (i32.const 120) - ) - ) - (local.set $x - (i64.load - (i32.const 120) - ) - ) - (local.set $x - (i64.load align=2 - (i32.const 120) - ) - ) - (local.set $x - (i64.load align=4 - (i32.const 120) - ) - ) - (local.set $x - (i64.load - (i32.const 120) - ) - ) - (i64.store - (i32.const 120) - (local.get $x) - ) - (i64.store - (i32.const 120) - (local.get $x) - ) - (i64.store align=2 - (i32.const 120) - (local.get $x) - ) - (i64.store align=4 - (i32.const 120) - (local.get $x) - ) - (i64.store - (i32.const 120) - (local.get $x) - ) - (local.set $z - (i64.eq - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.ne - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.le_u - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.le_s - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.ge_u - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.ge_s - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.lt_u - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.lt_s - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.gt_u - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.gt_s - (local.get $x) - (local.get $y) - ) - ) - (local.set $int32 - (i32.wrap_i64 - (local.get $x) - ) - ) - (local.set $x - (i64.extend_i32_s - (local.get $int32) - ) - ) - (local.set $x - (i64.extend_i32_u - (local.get $int32) - ) - ) - (local.set $float32 - (f32.convert_i64_s - (local.get $x) - ) - ) - (local.set $float64 - (f64.convert_i64_s - (local.get $x) - ) - ) - (local.set $float32 - (f32.convert_i64_u - (local.get $x) - ) - ) - (local.set $float64 - (f64.convert_i64_u - (local.get $x) - ) - ) - (local.set $x - (call $f32-to-int64 - (local.get $float32) - ) - ) - (local.set $x - (call $f64-to-int64 - (local.get $float64) - ) - ) - (local.set $x - (call $f32-to-uint64 - (local.get $float32) - ) - ) - (local.set $x - (call $f64-to-uint64 - (local.get $float64) - ) - ) - (local.set $x - (i64.reinterpret_f64 - (local.get $float64) - ) - ) - (local.set $float64 - (f64.reinterpret_i64 - (local.get $x) - ) - ) - (local.set $x - (i64.clz - (local.get $y) - ) - ) - (local.set $y - (i64.ctz - (local.get $x) - ) - ) - ) - (func $imports (; 19 ;) (result i64) - (call $legalfunc$illegalImport - (f64.const -3.13159) - (i64.const 94489280523) - (i32.const -33) - ) - (return - (call $legalfunc$illegalImportResult) - ) - ) - (func $arg (; 20 ;) (param $x i64) - (i64.store - (i32.const 100) - (local.get $x) - ) - (call $arg - (local.get $x) - ) - ) - (func $illegalParam (; 21 ;) (param $a i32) (param $x i64) (param $b f64) - (i32.store - (i32.const 50) - (local.get $a) - ) - (i64.store - (i32.const 100) - (local.get $x) - ) - (f64.store - (i32.const 200) - (local.get $b) - ) - (call $illegalParam - (i32.const 0) - (local.get $x) - (f64.const 12.34) - ) - ) - (func $result (; 22 ;) (result i64) - (return - (i64.const 8589934593) - ) - ) - (func $illegalResult (; 23 ;) (result i64) - (return - (i64.const 8589934593) - ) - ) - (func $call1 (; 24 ;) (param $x i64) (result i64) - (local $y i64) - (local.set $y - (call $call1 - (local.get $x) - ) - ) - (return - (local.get $y) - ) - ) - (func $call2 (; 25 ;) (param $x i64) (result i64) - (drop - (call $call2 - (call $call2 - (local.get $x) - ) - ) - ) - (return - (i64.const 245127260211081) - ) - ) - (func $returnCastConst (; 26 ;) (result i64) - (return - (i64.const 0) - ) - ) - (func $ifValue64 (; 27 ;) (param $$4 i64) (param $$6 i64) (result i64) - (local $$$0 i64) - (local $$9 i64) - (local $$10 i64) - (if - (i32.wrap_i64 - (local.get $$6) - ) - (block - (local.set $$9 - (call $call2 - (local.get $$4) - ) - ) - (local.set $$$0 - (local.get $$9) - ) - ) - (block - (local.set $$10 - (call $call2 - (local.get $$4) - ) - ) - (local.set $$$0 - (local.get $$10) - ) - ) - ) - (return - (local.get $$$0) - ) - ) - (func $ifValue32 (; 28 ;) (param $$4 i32) (param $$6 i32) (result i32) - (local $$$0 i32) - (local $$9 i32) - (local $$10 i32) - (if - (local.get $$6) - (block - (local.set $$9 - (call $ifValue32 - (local.get $$4) - (local.get $$6) - ) - ) - (local.set $$$0 - (local.get $$9) - ) - ) - (block - (local.set $$10 - (call $ifValue32 - (local.get $$4) - (local.get $$6) - ) - ) - (local.set $$$0 - (local.get $$10) - ) - ) - ) - (return - (local.get $$$0) - ) - ) - (func $switch64 (; 29 ;) (param $$a444 i64) (result i32) - (local $$waka i32) - (local $2 i64) - (block $switch - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case0 $switch-default $switch-case $switch-default - (i32.wrap_i64 - (block (result i64) - (local.set $2 - (i64.sub - (local.get $$a444) - (i64.const 42949672965) - ) - ) - (br_if $switch-default - (i32.wrap_i64 - (i64.shr_u - (local.get $2) - (i64.const 32) - ) - ) - ) - (local.get $2) - ) - ) - ) - ) - (block - (local.set $$waka - (i32.const 11000) - ) - (br $switch) - ) - ) - (block - (local.set $$waka - (i32.const 10) - ) - (br $switch) - ) - ) - (local.set $$waka - (i32.const 1) - ) - ) - (return - (local.get $$waka) - ) - ) - (func $unreachable_leftovers (; 30 ;) (param $$0 i32) (param $$1 i32) (param $$2 i32) - (local $label i32) - (block $label$break$L1 - (if - (local.get $$1) - (local.set $label - (i32.const 10) - ) - (block - (if - (local.get $$2) - (block - (br $label$break$L1) - (return) - ) - ) - (i32.store - (local.get $$0) - (i32.const -2) - ) - (return) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 10) - ) - (i32.store - (local.get $$0) - (i32.const -1) - ) - ) - (return) - ) - (func $switch64TOOMUCH (; 31 ;) (param $$a444 i64) (result i32) - (local $$waka i32) - (local $2 i64) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (block $switch - (block $switch-default - (block $switch-case0 - (block $switch-case - (local.set $2 - (local.get $$a444) - ) - (if - (i64.eq - (local.get $2) - (i64.const -9223372036854775808) - ) - (br $switch-case0) - (if - (i64.eq - (local.get $2) - (i64.const 4611686018427387904) - ) - (br $switch-case) - (br $switch-default) - ) - ) - ) - (nop) - ) - (return - (i32.const 40) - ) - ) - (local.set $$waka - (i32.const 1) - ) - ) - (block $switch1 - (block $switch-default4 - (block $switch-case3 - (block $switch-case2 - (local.set $3 - (i32.const 100) - ) - (if - (i32.eq - (local.get $3) - (i32.const 214748364) - ) - (br $switch-case3) - (if - (i32.eq - (local.get $3) - (i32.const 107374182) - ) - (br $switch-case2) - (br $switch-default4) - ) - ) - ) - (nop) - ) - (return - (i32.const 41) - ) - ) - (local.set $$waka - (i32.const 1001) - ) - ) - (block $switch5 - (block $switch-case7 - (block $switch-case6 - (local.set $4 - (local.get $$a444) - ) - (if - (i64.eq - (local.get $4) - (i64.const -9223372036854775808) - ) - (br $switch-case7) - (if - (i64.eq - (local.get $4) - (i64.const 4611686018427387904) - ) - (br $switch-case6) - (br $switch5) - ) - ) - ) - (nop) - ) - (return - (i32.const 42) - ) - ) - (block $switch8 - (block $switch-case10 - (block $switch-case9 - (local.set $5 - (i32.const 100) - ) - (if - (i32.eq - (local.get $5) - (i32.const 214748364) - ) - (br $switch-case10) - (if - (i32.eq - (local.get $5) - (i32.const 107374182) - ) - (br $switch-case9) - (br $switch8) - ) - ) - ) - (nop) - ) - (return - (i32.const 43) - ) - ) - (return - (i32.const 44) - ) - ) - (func $_memchr (; 32 ;) (param $$src i32) (param $$c i32) (param $$n i32) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$7 i32) - (local $$and i32) - (local $$and15 i32) - (local $$and16 i32) - (local $$and39 i32) - (local $$cmp i32) - (local $$cmp11 i32) - (local $$cmp1132 i32) - (local $$cmp28 i32) - (local $$cmp8 i32) - (local $$cond i32) - (local $$conv1 i32) - (local $$dec i32) - (local $$dec34 i32) - (local $$incdec$ptr i32) - (local $$incdec$ptr21 i32) - (local $$incdec$ptr33 i32) - (local $$lnot i32) - (local $$mul i32) - (local $$n$addr$0$lcssa i32) - (local $$n$addr$0$lcssa52 i32) - (local $$n$addr$043 i32) - (local $$n$addr$1$lcssa i32) - (local $$n$addr$133 i32) - (local $$n$addr$227 i32) - (local $$n$addr$3 i32) - (local $$neg i32) - (local $$or$cond i32) - (local $$or$cond42 i32) - (local $$s$0$lcssa i32) - (local $$s$0$lcssa53 i32) - (local $$s$044 i32) - (local $$s$128 i32) - (local $$s$2 i32) - (local $$sub i32) - (local $$sub22 i32) - (local $$tobool i32) - (local $$tobool2 i32) - (local $$tobool2$lcssa i32) - (local $$tobool241 i32) - (local $$tobool25 i32) - (local $$tobool2526 i32) - (local $$tobool36 i32) - (local $$tobool40 i32) - (local $$w$0$lcssa i32) - (local $$w$034 i32) - (local $$xor i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$conv1 - (i32.and - (local.get $$c) - (i32.const 255) - ) - ) - (local.set $$0 - (local.get $$src) - ) - (local.set $$and39 - (i32.and - (local.get $$0) - (i32.const 3) - ) - ) - (local.set $$tobool40 - (i32.ne - (local.get $$and39) - (i32.const 0) - ) - ) - (local.set $$tobool241 - (i32.ne - (local.get $$n) - (i32.const 0) - ) - ) - (local.set $$or$cond42 - (i32.and - (local.get $$tobool241) - (local.get $$tobool40) - ) - ) - (block $label$break$L1 - (if - (local.get $$or$cond42) - (block - (local.set $$1 - (i32.and - (local.get $$c) - (i32.const 255) - ) - ) - (local.set $$n$addr$043 - (local.get $$n) - ) - (local.set $$s$044 - (local.get $$src) - ) - (loop $while-in - (block $while-out - (local.set $$2 - (i32.load8_s - (local.get $$s$044) - ) - ) - (local.set $$cmp - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$2) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.shr_s - (i32.shl - (local.get $$1) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (if - (local.get $$cmp) - (block - (local.set $$n$addr$0$lcssa52 - (local.get $$n$addr$043) - ) - (local.set $$s$0$lcssa53 - (local.get $$s$044) - ) - (local.set $label - (i32.const 6) - ) - (br $label$break$L1) - ) - ) - (local.set $$incdec$ptr - (i32.add - (local.get $$s$044) - (i32.const 1) - ) - ) - (local.set $$dec - (i32.add - (local.get $$n$addr$043) - (i32.const -1) - ) - ) - (local.set $$3 - (local.get $$incdec$ptr) - ) - (local.set $$and - (i32.and - (local.get $$3) - (i32.const 3) - ) - ) - (local.set $$tobool - (i32.ne - (local.get $$and) - (i32.const 0) - ) - ) - (local.set $$tobool2 - (i32.ne - (local.get $$dec) - (i32.const 0) - ) - ) - (local.set $$or$cond - (i32.and - (local.get $$tobool2) - (local.get $$tobool) - ) - ) - (if - (local.get $$or$cond) - (block - (local.set $$n$addr$043 - (local.get $$dec) - ) - (local.set $$s$044 - (local.get $$incdec$ptr) - ) - ) - (block - (local.set $$n$addr$0$lcssa - (local.get $$dec) - ) - (local.set $$s$0$lcssa - (local.get $$incdec$ptr) - ) - (local.set $$tobool2$lcssa - (local.get $$tobool2) - ) - (local.set $label - (i32.const 5) - ) - (br $while-out) - ) - ) - (br $while-in) - ) - ) - ) - (block - (local.set $$n$addr$0$lcssa - (local.get $$n) - ) - (local.set $$s$0$lcssa - (local.get $$src) - ) - (local.set $$tobool2$lcssa - (local.get $$tobool241) - ) - (local.set $label - (i32.const 5) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 5) - ) - (if - (local.get $$tobool2$lcssa) - (block - (local.set $$n$addr$0$lcssa52 - (local.get $$n$addr$0$lcssa) - ) - (local.set $$s$0$lcssa53 - (local.get $$s$0$lcssa) - ) - (local.set $label - (i32.const 6) - ) - ) - (block - (local.set $$n$addr$3 - (i32.const 0) - ) - (local.set $$s$2 - (local.get $$s$0$lcssa) - ) - ) - ) - ) - (block $label$break$L8 - (if - (i32.eq - (local.get $label) - (i32.const 6) - ) - (block - (local.set $$4 - (i32.load8_s - (local.get $$s$0$lcssa53) - ) - ) - (local.set $$5 - (i32.and - (local.get $$c) - (i32.const 255) - ) - ) - (local.set $$cmp8 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$4) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.shr_s - (i32.shl - (local.get $$5) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (if - (local.get $$cmp8) - (block - (local.set $$n$addr$3 - (local.get $$n$addr$0$lcssa52) - ) - (local.set $$s$2 - (local.get $$s$0$lcssa53) - ) - ) - (block - (local.set $$mul - (i32.mul - (local.get $$conv1) - (i32.const 16843009) - ) - ) - (local.set $$cmp1132 - (i32.gt_u - (local.get $$n$addr$0$lcssa52) - (i32.const 3) - ) - ) - (block $label$break$L11 - (if - (local.get $$cmp1132) - (block - (local.set $$n$addr$133 - (local.get $$n$addr$0$lcssa52) - ) - (local.set $$w$034 - (local.get $$s$0$lcssa53) - ) - (loop $while-in3 - (block $while-out2 - (local.set $$6 - (i32.load - (local.get $$w$034) - ) - ) - (local.set $$xor - (i32.xor - (local.get $$6) - (local.get $$mul) - ) - ) - (local.set $$sub - (i32.add - (local.get $$xor) - (i32.const -16843009) - ) - ) - (local.set $$neg - (i32.and - (local.get $$xor) - (i32.const -2139062144) - ) - ) - (local.set $$and15 - (i32.xor - (local.get $$neg) - (i32.const -2139062144) - ) - ) - (local.set $$and16 - (i32.and - (local.get $$and15) - (local.get $$sub) - ) - ) - (local.set $$lnot - (i32.eq - (local.get $$and16) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$lnot) - ) - (br $while-out2) - ) - (local.set $$incdec$ptr21 - (i32.add - (local.get $$w$034) - (i32.const 4) - ) - ) - (local.set $$sub22 - (i32.add - (local.get $$n$addr$133) - (i32.const -4) - ) - ) - (local.set $$cmp11 - (i32.gt_u - (local.get $$sub22) - (i32.const 3) - ) - ) - (if - (local.get $$cmp11) - (block - (local.set $$n$addr$133 - (local.get $$sub22) - ) - (local.set $$w$034 - (local.get $$incdec$ptr21) - ) - ) - (block - (local.set $$n$addr$1$lcssa - (local.get $$sub22) - ) - (local.set $$w$0$lcssa - (local.get $$incdec$ptr21) - ) - (local.set $label - (i32.const 11) - ) - (br $label$break$L11) - ) - ) - (br $while-in3) - ) - ) - (local.set $$n$addr$227 - (local.get $$n$addr$133) - ) - (local.set $$s$128 - (local.get $$w$034) - ) - ) - (block - (local.set $$n$addr$1$lcssa - (local.get $$n$addr$0$lcssa52) - ) - (local.set $$w$0$lcssa - (local.get $$s$0$lcssa53) - ) - (local.set $label - (i32.const 11) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 11) - ) - (block - (local.set $$tobool2526 - (i32.eq - (local.get $$n$addr$1$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$tobool2526) - (block - (local.set $$n$addr$3 - (i32.const 0) - ) - (local.set $$s$2 - (local.get $$w$0$lcssa) - ) - (br $label$break$L8) - ) - (block - (local.set $$n$addr$227 - (local.get $$n$addr$1$lcssa) - ) - (local.set $$s$128 - (local.get $$w$0$lcssa) - ) - ) - ) - ) - ) - (loop $while-in5 - (block $while-out4 - (local.set $$7 - (i32.load8_s - (local.get $$s$128) - ) - ) - (local.set $$cmp28 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$7) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.shr_s - (i32.shl - (local.get $$5) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (if - (local.get $$cmp28) - (block - (local.set $$n$addr$3 - (local.get $$n$addr$227) - ) - (local.set $$s$2 - (local.get $$s$128) - ) - (br $label$break$L8) - ) - ) - (local.set $$incdec$ptr33 - (i32.add - (local.get $$s$128) - (i32.const 1) - ) - ) - (local.set $$dec34 - (i32.add - (local.get $$n$addr$227) - (i32.const -1) - ) - ) - (local.set $$tobool25 - (i32.eq - (local.get $$dec34) - (i32.const 0) - ) - ) - (if - (local.get $$tobool25) - (block - (local.set $$n$addr$3 - (i32.const 0) - ) - (local.set $$s$2 - (local.get $$incdec$ptr33) - ) - (br $while-out4) - ) - (block - (local.set $$n$addr$227 - (local.get $$dec34) - ) - (local.set $$s$128 - (local.get $$incdec$ptr33) - ) - ) - ) - (br $while-in5) - ) - ) - ) - ) - ) - ) - ) - (local.set $$tobool36 - (i32.ne - (local.get $$n$addr$3) - (i32.const 0) - ) - ) - (local.set $$cond - (if (result i32) - (local.get $$tobool36) - (local.get $$s$2) - (i32.const 0) - ) - ) - (return - (local.get $$cond) - ) - ) - (func $switch64_big_condition1 (; 33 ;) (param $$x i64) - (local $1 i64) - (block $switch - (block $switch-default - (block $switch-case - (br_table $switch-case $switch-default - (i32.wrap_i64 - (block (result i64) - (local.set $1 - (i64.sub - (local.get $$x) - (i64.const 9218868437227405312) - ) - ) - (br_if $switch-default - (i32.wrap_i64 - (i64.shr_u - (local.get $1) - (i64.const 32) - ) - ) - ) - (local.get $1) - ) - ) - ) - ) - (block - (call $abort) - (br $switch) - ) - ) - (return) - ) - ) - (func $switch64_big_condition2 (; 34 ;) (param $$x i64) - (local $1 i64) - (block $switch - (block $switch-case - (br_table $switch-case $switch - (i32.wrap_i64 - (block (result i64) - (local.set $1 - (i64.sub - (local.get $$x) - (i64.const 9218868437227405312) - ) - ) - (br_if $switch - (i32.wrap_i64 - (i64.shr_u - (local.get $1) - (i64.const 32) - ) - ) - ) - (local.get $1) - ) - ) - ) - ) - (block - (call $abort) - (br $switch) - ) - ) - ) - (func $keepAlive (; 35 ;) - (call $loads) - (call $loads) - (call $stores) - (call $stores) - (call $test) - (call $test) - (drop - (call $imports) - ) - (drop - (call $imports) - ) - (call $arg - (i64.const 0) - ) - (call $arg - (i64.const 0) - ) - (drop - (call $call1 - (i64.const 0) - ) - ) - (drop - (call $call1 - (i64.const 0) - ) - ) - (drop - (call $call2 - (i64.const 0) - ) - ) - (drop - (call $call2 - (i64.const 0) - ) - ) - (drop - (call $returnCastConst) - ) - (drop - (call $returnCastConst) - ) - (drop - (call $ifValue64 - (i64.const 0) - (i64.const 0) - ) - ) - (drop - (call $ifValue64 - (i64.const 0) - (i64.const 0) - ) - ) - (drop - (call $ifValue32 - (i32.const 0) - (i32.const 0) - ) - ) - (drop - (call $ifValue32 - (i32.const 0) - (i32.const 0) - ) - ) - (drop - (call $switch64 - (i64.const 0) - ) - ) - (drop - (call $switch64 - (i64.const 0) - ) - ) - (call $unreachable_leftovers - (i32.const 0) - (i32.const 0) - (i32.const 0) - ) - (call $unreachable_leftovers - (i32.const 0) - (i32.const 0) - (i32.const 0) - ) - (drop - (call $_memchr - (i32.const 0) - (i32.const 0) - (i32.const 0) - ) - ) - (drop - (call $switch64TOOMUCH - (i64.const 0) - ) - ) - (call $switch64_big_condition1 - (i64.const 0) - ) - (call $switch64_big_condition2 - (i64.const 0) - ) - ) - (func $__emscripten_dceable_type_decls (; 36 ;) - (drop - (call $_fabsf - (f32.const 0) - ) - ) - (drop - (call $legalfunc$do_i64) - ) - ) - (func $legalstub$illegalParam (; 37 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 f64) - (call $illegalParam - (local.get $0) - (i64.or - (i64.extend_i32_u - (local.get $1) - ) - (i64.shl - (i64.extend_i32_u - (local.get $2) - ) - (i64.const 32) - ) - ) - (local.get $3) - ) - ) - (func $legalstub$illegalResult (; 38 ;) (result i32) - (local $0 i64) - (local.set $0 - (call $illegalResult) - ) - (call $setTempRet0 - (i32.wrap_i64 - (i64.shr_u - (local.get $0) - (i64.const 32) - ) - ) - ) - (i32.wrap_i64 - (local.get $0) - ) - ) - (func $legalfunc$illegalImport (; 39 ;) (param $0 f64) (param $1 i64) (param $2 i32) - (call $legalimport$illegalImport - (local.get $0) - (i32.wrap_i64 - (local.get $1) - ) - (i32.wrap_i64 - (i64.shr_u - (local.get $1) - (i64.const 32) - ) - ) - (local.get $2) - ) - ) - (func $legalfunc$illegalImportResult (; 40 ;) (result i64) - (i64.or - (i64.extend_i32_u - (call $legalimport$illegalImportResult) - ) - (i64.shl - (i64.extend_i32_u - (call $getTempRet0) - ) - (i64.const 32) - ) - ) - ) - (func $legalfunc$do_i64 (; 41 ;) (result i64) - (i64.or - (i64.extend_i32_u - (call $legalimport$do_i64) - ) - (i64.shl - (i64.extend_i32_u - (call $getTempRet0) - ) - (i64.const 32) - ) - ) - ) -) diff -Nru binaryen-91/test/wasm-only.fromasm.imprecise binaryen-99/test/wasm-only.fromasm.imprecise --- binaryen-91/test/wasm-only.fromasm.imprecise 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm-only.fromasm.imprecise 1970-01-01 00:00:00.000000000 +0000 @@ -1,326 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $none_=>_i32 (func (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_f64_=>_none (func (param i32 i32 i32 f64))) - (type $i32_i64_f64_=>_none (func (param i32 i64 f64))) - (type $i64_=>_none (func (param i64))) - (type $f64_i32_i32_i32_=>_none (func (param f64 i32 i32 i32))) - (type $f64_i64_i32_=>_none (func (param f64 i64 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_i64 (func (result i64))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 3 3 funcref)) - (elem (global.get $__table_base) $legalfunc$illegalImport $_fabsf $legalfunc$do_i64) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "_fabsf" (func $_fabsf (param f32) (result f32))) - (import "env" "setTempRet0" (func $setTempRet0 (param i32))) - (import "env" "illegalImport" (func $legalimport$illegalImport (param f64 i32 i32 i32))) - (import "env" "getTempRet0" (func $getTempRet0 (result i32))) - (import "env" "illegalImportResult" (func $legalimport$illegalImportResult (result i32))) - (import "env" "do_i64" (func $legalimport$do_i64 (result i32))) - (export "test64" (func $test64)) - (export "illegalParam" (func $legalstub$illegalParam)) - (export "illegalResult" (func $legalstub$illegalResult)) - (export "keepAlive" (func $keepAlive)) - (func $stores (; 6 ;) (; has Stack IR ;) - (i32.store8 - (i32.const 100) - (i32.const 0) - ) - (i32.store8 - (i32.const 101) - (i32.const 0) - ) - (i32.store16 - (i32.const 102) - (i32.const 0) - ) - (i32.store16 - (i32.const 103) - (i32.const 0) - ) - (i32.store16 align=1 - (i32.const 104) - (i32.const 0) - ) - (i32.store16 - (i32.const 105) - (i32.const 0) - ) - (i32.store - (i32.const 106) - (i32.const 0) - ) - (i32.store - (i32.const 107) - (i32.const 0) - ) - (i32.store align=1 - (i32.const 108) - (i32.const 0) - ) - (i32.store align=2 - (i32.const 109) - (i32.const 0) - ) - (i32.store - (i32.const 110) - (i32.const 0) - ) - (f32.store - (i32.const 111) - (f32.const 0) - ) - (f32.store - (i32.const 112) - (f32.const 0) - ) - (f32.store align=1 - (i32.const 113) - (f32.const 0) - ) - (f32.store align=2 - (i32.const 114) - (f32.const 0) - ) - (f32.store - (i32.const 115) - (f32.const 0) - ) - (f64.store - (i32.const 116) - (f64.const 0) - ) - (f64.store - (i32.const 117) - (f64.const 0) - ) - (f64.store align=1 - (i32.const 118) - (f64.const 0) - ) - (f64.store align=2 - (i32.const 119) - (f64.const 0) - ) - (f64.store align=4 - (i32.const 120) - (f64.const 0) - ) - (f64.store - (i32.const 121) - (f64.const 0) - ) - ) - (func $test64 (; 7 ;) (; has Stack IR ;) - (local $0 i64) - (i64.store - (i32.const 120) - (local.tee $0 - (i64.load - (i32.const 120) - ) - ) - ) - (i64.store - (i32.const 120) - (local.get $0) - ) - (i64.store align=2 - (i32.const 120) - (local.get $0) - ) - (i64.store align=4 - (i32.const 120) - (local.get $0) - ) - (i64.store - (i32.const 120) - (local.get $0) - ) - ) - (func $imports (; 8 ;) (; has Stack IR ;) - (call $legalfunc$illegalImport - (f64.const -3.13159) - (i64.const 94489280523) - (i32.const -33) - ) - (drop - (i64.or - (i64.extend_i32_u - (call $legalimport$illegalImportResult) - ) - (i64.shl - (i64.extend_i32_u - (call $getTempRet0) - ) - (i64.const 32) - ) - ) - ) - ) - (func $arg (; 9 ;) (; has Stack IR ;) (param $0 i64) - (i64.store - (i32.const 100) - (local.get $0) - ) - (call $arg - (local.get $0) - ) - ) - (func $illegalParam (; 10 ;) (; has Stack IR ;) (param $0 i32) (param $1 i64) (param $2 f64) - (i32.store - (i32.const 50) - (local.get $0) - ) - (i64.store - (i32.const 100) - (local.get $1) - ) - (f64.store - (i32.const 200) - (local.get $2) - ) - (call $illegalParam - (i32.const 0) - (local.get $1) - (f64.const 12.34) - ) - ) - (func $call1 (; 11 ;) (; has Stack IR ;) (param $0 i64) (result i64) - (call $call1 - (local.get $0) - ) - ) - (func $call2 (; 12 ;) (; has Stack IR ;) (param $0 i64) (result i64) - (drop - (call $call2 - (call $call2 - (local.get $0) - ) - ) - ) - (i64.const 245127260211081) - ) - (func $ifValue64 (; 13 ;) (; has Stack IR ;) - (drop - (call $call2 - (i64.const 0) - ) - ) - ) - (func $ifValue32 (; 14 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (call $ifValue32 - (local.get $0) - (local.get $1) - ) - ) - (func $unreachable_leftovers (; 15 ;) (; has Stack IR ;) - (i32.store - (i32.const 0) - (i32.const -2) - ) - ) - (func $keepAlive (; 16 ;) (; has Stack IR ;) - (call $stores) - (call $stores) - (call $imports) - (call $imports) - (call $arg - (i64.const 0) - ) - (call $arg - (i64.const 0) - ) - (drop - (call $call1 - (i64.const 0) - ) - ) - (drop - (call $call1 - (i64.const 0) - ) - ) - (drop - (call $call2 - (i64.const 0) - ) - ) - (drop - (call $call2 - (i64.const 0) - ) - ) - (call $ifValue64) - (call $ifValue64) - (drop - (call $ifValue32 - (i32.const 0) - (i32.const 0) - ) - ) - (drop - (call $ifValue32 - (i32.const 0) - (i32.const 0) - ) - ) - (call $unreachable_leftovers) - (call $unreachable_leftovers) - ) - (func $legalstub$illegalParam (; 17 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 f64) - (call $illegalParam - (local.get $0) - (i64.or - (i64.extend_i32_u - (local.get $1) - ) - (i64.shl - (i64.extend_i32_u - (local.get $2) - ) - (i64.const 32) - ) - ) - (local.get $3) - ) - ) - (func $legalstub$illegalResult (; 18 ;) (; has Stack IR ;) (result i32) - (call $setTempRet0 - (i32.const 2) - ) - (i32.const 1) - ) - (func $legalfunc$illegalImport (; 19 ;) (; has Stack IR ;) (param $0 f64) (param $1 i64) (param $2 i32) - (call $legalimport$illegalImport - (local.get $0) - (i32.wrap_i64 - (local.get $1) - ) - (i32.wrap_i64 - (i64.shr_u - (local.get $1) - (i64.const 32) - ) - ) - (local.get $2) - ) - ) - (func $legalfunc$do_i64 (; 20 ;) (; has Stack IR ;) (result i64) - (i64.or - (i64.extend_i32_u - (call $legalimport$do_i64) - ) - (i64.shl - (i64.extend_i32_u - (call $getTempRet0) - ) - (i64.const 32) - ) - ) - ) -) diff -Nru binaryen-91/test/wasm-only.fromasm.imprecise.no-opts binaryen-99/test/wasm-only.fromasm.imprecise.no-opts --- binaryen-91/test/wasm-only.fromasm.imprecise.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm-only.fromasm.imprecise.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,1761 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $none_=>_i64 (func (result i64))) - (type $none_=>_i32 (func (result i32))) - (type $i64_=>_none (func (param i64))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_f64_=>_none (func (param i32 i32 i32 f64))) - (type $i32_i64_f64_=>_none (func (param i32 i64 f64))) - (type $f64_i32_i32_i32_=>_none (func (param f64 i32 i32 i32))) - (type $f64_i64_i32_=>_none (func (param f64 i64 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 3 3 funcref)) - (elem (global.get $__table_base) $legalfunc$illegalImport $_fabsf $legalfunc$do_i64) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "_fabsf" (func $_fabsf (param f32) (result f32))) - (import "env" "abort" (func $abort)) - (import "env" "setTempRet0" (func $setTempRet0 (param i32))) - (import "env" "illegalImport" (func $legalimport$illegalImport (param f64 i32 i32 i32))) - (import "env" "getTempRet0" (func $getTempRet0 (result i32))) - (import "env" "illegalImportResult" (func $legalimport$illegalImportResult (result i32))) - (import "env" "do_i64" (func $legalimport$do_i64 (result i32))) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (export "test64" (func $test64)) - (export "illegalParam" (func $legalstub$illegalParam)) - (export "illegalResult" (func $legalstub$illegalResult)) - (export "keepAlive" (func $keepAlive)) - (func $loads (; 7 ;) - (local $i i32) - (local $f f32) - (local $d f64) - (local.set $i - (i32.load8_s - (i32.const 100) - ) - ) - (local.set $i - (i32.load8_s - (i32.const 101) - ) - ) - (local.set $i - (i32.load16_s - (i32.const 102) - ) - ) - (local.set $i - (i32.load16_s - (i32.const 103) - ) - ) - (local.set $i - (i32.load16_s align=1 - (i32.const 104) - ) - ) - (local.set $i - (i32.load16_s - (i32.const 105) - ) - ) - (local.set $i - (i32.load - (i32.const 106) - ) - ) - (local.set $i - (i32.load - (i32.const 107) - ) - ) - (local.set $i - (i32.load align=1 - (i32.const 108) - ) - ) - (local.set $i - (i32.load align=2 - (i32.const 109) - ) - ) - (local.set $i - (i32.load - (i32.const 110) - ) - ) - (local.set $f - (f32.load - (i32.const 111) - ) - ) - (local.set $f - (f32.load - (i32.const 112) - ) - ) - (local.set $f - (f32.load align=1 - (i32.const 113) - ) - ) - (local.set $f - (f32.load align=2 - (i32.const 114) - ) - ) - (local.set $f - (f32.load - (i32.const 115) - ) - ) - (local.set $d - (f64.load - (i32.const 116) - ) - ) - (local.set $d - (f64.load - (i32.const 117) - ) - ) - (local.set $d - (f64.load align=1 - (i32.const 118) - ) - ) - (local.set $d - (f64.load align=2 - (i32.const 119) - ) - ) - (local.set $d - (f64.load align=4 - (i32.const 120) - ) - ) - (local.set $d - (f64.load - (i32.const 121) - ) - ) - ) - (func $stores (; 8 ;) - (local $i i32) - (local $f f32) - (local $d f64) - (i32.store8 - (i32.const 100) - (local.get $i) - ) - (i32.store8 - (i32.const 101) - (local.get $i) - ) - (i32.store16 - (i32.const 102) - (local.get $i) - ) - (i32.store16 - (i32.const 103) - (local.get $i) - ) - (i32.store16 align=1 - (i32.const 104) - (local.get $i) - ) - (i32.store16 - (i32.const 105) - (local.get $i) - ) - (i32.store - (i32.const 106) - (local.get $i) - ) - (i32.store - (i32.const 107) - (local.get $i) - ) - (i32.store align=1 - (i32.const 108) - (local.get $i) - ) - (i32.store align=2 - (i32.const 109) - (local.get $i) - ) - (i32.store - (i32.const 110) - (local.get $i) - ) - (f32.store - (i32.const 111) - (local.get $f) - ) - (f32.store - (i32.const 112) - (local.get $f) - ) - (f32.store align=1 - (i32.const 113) - (local.get $f) - ) - (f32.store align=2 - (i32.const 114) - (local.get $f) - ) - (f32.store - (i32.const 115) - (local.get $f) - ) - (f64.store - (i32.const 116) - (local.get $d) - ) - (f64.store - (i32.const 117) - (local.get $d) - ) - (f64.store align=1 - (i32.const 118) - (local.get $d) - ) - (f64.store align=2 - (i32.const 119) - (local.get $d) - ) - (f64.store align=4 - (i32.const 120) - (local.get $d) - ) - (f64.store - (i32.const 121) - (local.get $d) - ) - ) - (func $test (; 9 ;) - (local $i i32) - (local $j i64) - (local $f f32) - (local $f1 f32) - (local $f2 f32) - (local $d1 f64) - (local $d2 f64) - (local.set $i - (i32.reinterpret_f32 - (local.get $f) - ) - ) - (local.set $f - (f32.reinterpret_i32 - (local.get $i) - ) - ) - (local.set $i - (i32.ctz - (local.get $i) - ) - ) - (local.set $i - (i32.popcnt - (local.get $i) - ) - ) - (local.set $j - (i64.popcnt - (local.get $j) - ) - ) - (local.set $f1 - (f32.copysign - (local.get $f1) - (local.get $f2) - ) - ) - (local.set $d1 - (f64.copysign - (local.get $d1) - (local.get $d2) - ) - ) - ) - (func $test64 (; 10 ;) - (local $x i64) - (local $y i64) - (local $z i32) - (local $int32 i32) - (local $float32 f32) - (local $float64 f64) - (local.set $x - (i64.const 100) - ) - (local.set $y - (i64.const 128849018897) - ) - (local.set $x - (i64.add - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.sub - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.mul - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.div_u - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.div_s - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.rem_u - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.rem_s - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.and - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.or - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.xor - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.shl - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.shr_s - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.shr_u - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.load - (i32.const 120) - ) - ) - (local.set $x - (i64.load - (i32.const 120) - ) - ) - (local.set $x - (i64.load align=2 - (i32.const 120) - ) - ) - (local.set $x - (i64.load align=4 - (i32.const 120) - ) - ) - (local.set $x - (i64.load - (i32.const 120) - ) - ) - (i64.store - (i32.const 120) - (local.get $x) - ) - (i64.store - (i32.const 120) - (local.get $x) - ) - (i64.store align=2 - (i32.const 120) - (local.get $x) - ) - (i64.store align=4 - (i32.const 120) - (local.get $x) - ) - (i64.store - (i32.const 120) - (local.get $x) - ) - (local.set $z - (i64.eq - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.ne - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.le_u - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.le_s - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.ge_u - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.ge_s - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.lt_u - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.lt_s - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.gt_u - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.gt_s - (local.get $x) - (local.get $y) - ) - ) - (local.set $int32 - (i32.wrap_i64 - (local.get $x) - ) - ) - (local.set $x - (i64.extend_i32_s - (local.get $int32) - ) - ) - (local.set $x - (i64.extend_i32_u - (local.get $int32) - ) - ) - (local.set $float32 - (f32.convert_i64_s - (local.get $x) - ) - ) - (local.set $float64 - (f64.convert_i64_s - (local.get $x) - ) - ) - (local.set $float32 - (f32.convert_i64_u - (local.get $x) - ) - ) - (local.set $float64 - (f64.convert_i64_u - (local.get $x) - ) - ) - (local.set $x - (i64.trunc_f32_s - (local.get $float32) - ) - ) - (local.set $x - (i64.trunc_f64_s - (local.get $float64) - ) - ) - (local.set $x - (i64.trunc_f32_u - (local.get $float32) - ) - ) - (local.set $x - (i64.trunc_f64_u - (local.get $float64) - ) - ) - (local.set $x - (i64.reinterpret_f64 - (local.get $float64) - ) - ) - (local.set $float64 - (f64.reinterpret_i64 - (local.get $x) - ) - ) - (local.set $x - (i64.clz - (local.get $y) - ) - ) - (local.set $y - (i64.ctz - (local.get $x) - ) - ) - ) - (func $imports (; 11 ;) (result i64) - (call $legalfunc$illegalImport - (f64.const -3.13159) - (i64.const 94489280523) - (i32.const -33) - ) - (return - (call $legalfunc$illegalImportResult) - ) - ) - (func $arg (; 12 ;) (param $x i64) - (i64.store - (i32.const 100) - (local.get $x) - ) - (call $arg - (local.get $x) - ) - ) - (func $illegalParam (; 13 ;) (param $a i32) (param $x i64) (param $b f64) - (i32.store - (i32.const 50) - (local.get $a) - ) - (i64.store - (i32.const 100) - (local.get $x) - ) - (f64.store - (i32.const 200) - (local.get $b) - ) - (call $illegalParam - (i32.const 0) - (local.get $x) - (f64.const 12.34) - ) - ) - (func $result (; 14 ;) (result i64) - (return - (i64.const 8589934593) - ) - ) - (func $illegalResult (; 15 ;) (result i64) - (return - (i64.const 8589934593) - ) - ) - (func $call1 (; 16 ;) (param $x i64) (result i64) - (local $y i64) - (local.set $y - (call $call1 - (local.get $x) - ) - ) - (return - (local.get $y) - ) - ) - (func $call2 (; 17 ;) (param $x i64) (result i64) - (drop - (call $call2 - (call $call2 - (local.get $x) - ) - ) - ) - (return - (i64.const 245127260211081) - ) - ) - (func $returnCastConst (; 18 ;) (result i64) - (return - (i64.const 0) - ) - ) - (func $ifValue64 (; 19 ;) (param $$4 i64) (param $$6 i64) (result i64) - (local $$$0 i64) - (local $$9 i64) - (local $$10 i64) - (if - (i32.wrap_i64 - (local.get $$6) - ) - (block - (local.set $$9 - (call $call2 - (local.get $$4) - ) - ) - (local.set $$$0 - (local.get $$9) - ) - ) - (block - (local.set $$10 - (call $call2 - (local.get $$4) - ) - ) - (local.set $$$0 - (local.get $$10) - ) - ) - ) - (return - (local.get $$$0) - ) - ) - (func $ifValue32 (; 20 ;) (param $$4 i32) (param $$6 i32) (result i32) - (local $$$0 i32) - (local $$9 i32) - (local $$10 i32) - (if - (local.get $$6) - (block - (local.set $$9 - (call $ifValue32 - (local.get $$4) - (local.get $$6) - ) - ) - (local.set $$$0 - (local.get $$9) - ) - ) - (block - (local.set $$10 - (call $ifValue32 - (local.get $$4) - (local.get $$6) - ) - ) - (local.set $$$0 - (local.get $$10) - ) - ) - ) - (return - (local.get $$$0) - ) - ) - (func $switch64 (; 21 ;) (param $$a444 i64) (result i32) - (local $$waka i32) - (local $2 i64) - (block $switch - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case0 $switch-default $switch-case $switch-default - (i32.wrap_i64 - (block (result i64) - (local.set $2 - (i64.sub - (local.get $$a444) - (i64.const 42949672965) - ) - ) - (br_if $switch-default - (i32.wrap_i64 - (i64.shr_u - (local.get $2) - (i64.const 32) - ) - ) - ) - (local.get $2) - ) - ) - ) - ) - (block - (local.set $$waka - (i32.const 11000) - ) - (br $switch) - ) - ) - (block - (local.set $$waka - (i32.const 10) - ) - (br $switch) - ) - ) - (local.set $$waka - (i32.const 1) - ) - ) - (return - (local.get $$waka) - ) - ) - (func $unreachable_leftovers (; 22 ;) (param $$0 i32) (param $$1 i32) (param $$2 i32) - (local $label i32) - (block $label$break$L1 - (if - (local.get $$1) - (local.set $label - (i32.const 10) - ) - (block - (if - (local.get $$2) - (block - (br $label$break$L1) - (return) - ) - ) - (i32.store - (local.get $$0) - (i32.const -2) - ) - (return) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 10) - ) - (i32.store - (local.get $$0) - (i32.const -1) - ) - ) - (return) - ) - (func $switch64TOOMUCH (; 23 ;) (param $$a444 i64) (result i32) - (local $$waka i32) - (local $2 i64) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (block $switch - (block $switch-default - (block $switch-case0 - (block $switch-case - (local.set $2 - (local.get $$a444) - ) - (if - (i64.eq - (local.get $2) - (i64.const -9223372036854775808) - ) - (br $switch-case0) - (if - (i64.eq - (local.get $2) - (i64.const 4611686018427387904) - ) - (br $switch-case) - (br $switch-default) - ) - ) - ) - (nop) - ) - (return - (i32.const 40) - ) - ) - (local.set $$waka - (i32.const 1) - ) - ) - (block $switch1 - (block $switch-default4 - (block $switch-case3 - (block $switch-case2 - (local.set $3 - (i32.const 100) - ) - (if - (i32.eq - (local.get $3) - (i32.const 214748364) - ) - (br $switch-case3) - (if - (i32.eq - (local.get $3) - (i32.const 107374182) - ) - (br $switch-case2) - (br $switch-default4) - ) - ) - ) - (nop) - ) - (return - (i32.const 41) - ) - ) - (local.set $$waka - (i32.const 1001) - ) - ) - (block $switch5 - (block $switch-case7 - (block $switch-case6 - (local.set $4 - (local.get $$a444) - ) - (if - (i64.eq - (local.get $4) - (i64.const -9223372036854775808) - ) - (br $switch-case7) - (if - (i64.eq - (local.get $4) - (i64.const 4611686018427387904) - ) - (br $switch-case6) - (br $switch5) - ) - ) - ) - (nop) - ) - (return - (i32.const 42) - ) - ) - (block $switch8 - (block $switch-case10 - (block $switch-case9 - (local.set $5 - (i32.const 100) - ) - (if - (i32.eq - (local.get $5) - (i32.const 214748364) - ) - (br $switch-case10) - (if - (i32.eq - (local.get $5) - (i32.const 107374182) - ) - (br $switch-case9) - (br $switch8) - ) - ) - ) - (nop) - ) - (return - (i32.const 43) - ) - ) - (return - (i32.const 44) - ) - ) - (func $_memchr (; 24 ;) (param $$src i32) (param $$c i32) (param $$n i32) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$7 i32) - (local $$and i32) - (local $$and15 i32) - (local $$and16 i32) - (local $$and39 i32) - (local $$cmp i32) - (local $$cmp11 i32) - (local $$cmp1132 i32) - (local $$cmp28 i32) - (local $$cmp8 i32) - (local $$cond i32) - (local $$conv1 i32) - (local $$dec i32) - (local $$dec34 i32) - (local $$incdec$ptr i32) - (local $$incdec$ptr21 i32) - (local $$incdec$ptr33 i32) - (local $$lnot i32) - (local $$mul i32) - (local $$n$addr$0$lcssa i32) - (local $$n$addr$0$lcssa52 i32) - (local $$n$addr$043 i32) - (local $$n$addr$1$lcssa i32) - (local $$n$addr$133 i32) - (local $$n$addr$227 i32) - (local $$n$addr$3 i32) - (local $$neg i32) - (local $$or$cond i32) - (local $$or$cond42 i32) - (local $$s$0$lcssa i32) - (local $$s$0$lcssa53 i32) - (local $$s$044 i32) - (local $$s$128 i32) - (local $$s$2 i32) - (local $$sub i32) - (local $$sub22 i32) - (local $$tobool i32) - (local $$tobool2 i32) - (local $$tobool2$lcssa i32) - (local $$tobool241 i32) - (local $$tobool25 i32) - (local $$tobool2526 i32) - (local $$tobool36 i32) - (local $$tobool40 i32) - (local $$w$0$lcssa i32) - (local $$w$034 i32) - (local $$xor i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$conv1 - (i32.and - (local.get $$c) - (i32.const 255) - ) - ) - (local.set $$0 - (local.get $$src) - ) - (local.set $$and39 - (i32.and - (local.get $$0) - (i32.const 3) - ) - ) - (local.set $$tobool40 - (i32.ne - (local.get $$and39) - (i32.const 0) - ) - ) - (local.set $$tobool241 - (i32.ne - (local.get $$n) - (i32.const 0) - ) - ) - (local.set $$or$cond42 - (i32.and - (local.get $$tobool241) - (local.get $$tobool40) - ) - ) - (block $label$break$L1 - (if - (local.get $$or$cond42) - (block - (local.set $$1 - (i32.and - (local.get $$c) - (i32.const 255) - ) - ) - (local.set $$n$addr$043 - (local.get $$n) - ) - (local.set $$s$044 - (local.get $$src) - ) - (loop $while-in - (block $while-out - (local.set $$2 - (i32.load8_s - (local.get $$s$044) - ) - ) - (local.set $$cmp - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$2) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.shr_s - (i32.shl - (local.get $$1) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (if - (local.get $$cmp) - (block - (local.set $$n$addr$0$lcssa52 - (local.get $$n$addr$043) - ) - (local.set $$s$0$lcssa53 - (local.get $$s$044) - ) - (local.set $label - (i32.const 6) - ) - (br $label$break$L1) - ) - ) - (local.set $$incdec$ptr - (i32.add - (local.get $$s$044) - (i32.const 1) - ) - ) - (local.set $$dec - (i32.add - (local.get $$n$addr$043) - (i32.const -1) - ) - ) - (local.set $$3 - (local.get $$incdec$ptr) - ) - (local.set $$and - (i32.and - (local.get $$3) - (i32.const 3) - ) - ) - (local.set $$tobool - (i32.ne - (local.get $$and) - (i32.const 0) - ) - ) - (local.set $$tobool2 - (i32.ne - (local.get $$dec) - (i32.const 0) - ) - ) - (local.set $$or$cond - (i32.and - (local.get $$tobool2) - (local.get $$tobool) - ) - ) - (if - (local.get $$or$cond) - (block - (local.set $$n$addr$043 - (local.get $$dec) - ) - (local.set $$s$044 - (local.get $$incdec$ptr) - ) - ) - (block - (local.set $$n$addr$0$lcssa - (local.get $$dec) - ) - (local.set $$s$0$lcssa - (local.get $$incdec$ptr) - ) - (local.set $$tobool2$lcssa - (local.get $$tobool2) - ) - (local.set $label - (i32.const 5) - ) - (br $while-out) - ) - ) - (br $while-in) - ) - ) - ) - (block - (local.set $$n$addr$0$lcssa - (local.get $$n) - ) - (local.set $$s$0$lcssa - (local.get $$src) - ) - (local.set $$tobool2$lcssa - (local.get $$tobool241) - ) - (local.set $label - (i32.const 5) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 5) - ) - (if - (local.get $$tobool2$lcssa) - (block - (local.set $$n$addr$0$lcssa52 - (local.get $$n$addr$0$lcssa) - ) - (local.set $$s$0$lcssa53 - (local.get $$s$0$lcssa) - ) - (local.set $label - (i32.const 6) - ) - ) - (block - (local.set $$n$addr$3 - (i32.const 0) - ) - (local.set $$s$2 - (local.get $$s$0$lcssa) - ) - ) - ) - ) - (block $label$break$L8 - (if - (i32.eq - (local.get $label) - (i32.const 6) - ) - (block - (local.set $$4 - (i32.load8_s - (local.get $$s$0$lcssa53) - ) - ) - (local.set $$5 - (i32.and - (local.get $$c) - (i32.const 255) - ) - ) - (local.set $$cmp8 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$4) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.shr_s - (i32.shl - (local.get $$5) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (if - (local.get $$cmp8) - (block - (local.set $$n$addr$3 - (local.get $$n$addr$0$lcssa52) - ) - (local.set $$s$2 - (local.get $$s$0$lcssa53) - ) - ) - (block - (local.set $$mul - (i32.mul - (local.get $$conv1) - (i32.const 16843009) - ) - ) - (local.set $$cmp1132 - (i32.gt_u - (local.get $$n$addr$0$lcssa52) - (i32.const 3) - ) - ) - (block $label$break$L11 - (if - (local.get $$cmp1132) - (block - (local.set $$n$addr$133 - (local.get $$n$addr$0$lcssa52) - ) - (local.set $$w$034 - (local.get $$s$0$lcssa53) - ) - (loop $while-in3 - (block $while-out2 - (local.set $$6 - (i32.load - (local.get $$w$034) - ) - ) - (local.set $$xor - (i32.xor - (local.get $$6) - (local.get $$mul) - ) - ) - (local.set $$sub - (i32.add - (local.get $$xor) - (i32.const -16843009) - ) - ) - (local.set $$neg - (i32.and - (local.get $$xor) - (i32.const -2139062144) - ) - ) - (local.set $$and15 - (i32.xor - (local.get $$neg) - (i32.const -2139062144) - ) - ) - (local.set $$and16 - (i32.and - (local.get $$and15) - (local.get $$sub) - ) - ) - (local.set $$lnot - (i32.eq - (local.get $$and16) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$lnot) - ) - (br $while-out2) - ) - (local.set $$incdec$ptr21 - (i32.add - (local.get $$w$034) - (i32.const 4) - ) - ) - (local.set $$sub22 - (i32.add - (local.get $$n$addr$133) - (i32.const -4) - ) - ) - (local.set $$cmp11 - (i32.gt_u - (local.get $$sub22) - (i32.const 3) - ) - ) - (if - (local.get $$cmp11) - (block - (local.set $$n$addr$133 - (local.get $$sub22) - ) - (local.set $$w$034 - (local.get $$incdec$ptr21) - ) - ) - (block - (local.set $$n$addr$1$lcssa - (local.get $$sub22) - ) - (local.set $$w$0$lcssa - (local.get $$incdec$ptr21) - ) - (local.set $label - (i32.const 11) - ) - (br $label$break$L11) - ) - ) - (br $while-in3) - ) - ) - (local.set $$n$addr$227 - (local.get $$n$addr$133) - ) - (local.set $$s$128 - (local.get $$w$034) - ) - ) - (block - (local.set $$n$addr$1$lcssa - (local.get $$n$addr$0$lcssa52) - ) - (local.set $$w$0$lcssa - (local.get $$s$0$lcssa53) - ) - (local.set $label - (i32.const 11) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 11) - ) - (block - (local.set $$tobool2526 - (i32.eq - (local.get $$n$addr$1$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$tobool2526) - (block - (local.set $$n$addr$3 - (i32.const 0) - ) - (local.set $$s$2 - (local.get $$w$0$lcssa) - ) - (br $label$break$L8) - ) - (block - (local.set $$n$addr$227 - (local.get $$n$addr$1$lcssa) - ) - (local.set $$s$128 - (local.get $$w$0$lcssa) - ) - ) - ) - ) - ) - (loop $while-in5 - (block $while-out4 - (local.set $$7 - (i32.load8_s - (local.get $$s$128) - ) - ) - (local.set $$cmp28 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$7) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.shr_s - (i32.shl - (local.get $$5) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (if - (local.get $$cmp28) - (block - (local.set $$n$addr$3 - (local.get $$n$addr$227) - ) - (local.set $$s$2 - (local.get $$s$128) - ) - (br $label$break$L8) - ) - ) - (local.set $$incdec$ptr33 - (i32.add - (local.get $$s$128) - (i32.const 1) - ) - ) - (local.set $$dec34 - (i32.add - (local.get $$n$addr$227) - (i32.const -1) - ) - ) - (local.set $$tobool25 - (i32.eq - (local.get $$dec34) - (i32.const 0) - ) - ) - (if - (local.get $$tobool25) - (block - (local.set $$n$addr$3 - (i32.const 0) - ) - (local.set $$s$2 - (local.get $$incdec$ptr33) - ) - (br $while-out4) - ) - (block - (local.set $$n$addr$227 - (local.get $$dec34) - ) - (local.set $$s$128 - (local.get $$incdec$ptr33) - ) - ) - ) - (br $while-in5) - ) - ) - ) - ) - ) - ) - ) - (local.set $$tobool36 - (i32.ne - (local.get $$n$addr$3) - (i32.const 0) - ) - ) - (local.set $$cond - (if (result i32) - (local.get $$tobool36) - (local.get $$s$2) - (i32.const 0) - ) - ) - (return - (local.get $$cond) - ) - ) - (func $switch64_big_condition1 (; 25 ;) (param $$x i64) - (local $1 i64) - (block $switch - (block $switch-default - (block $switch-case - (br_table $switch-case $switch-default - (i32.wrap_i64 - (block (result i64) - (local.set $1 - (i64.sub - (local.get $$x) - (i64.const 9218868437227405312) - ) - ) - (br_if $switch-default - (i32.wrap_i64 - (i64.shr_u - (local.get $1) - (i64.const 32) - ) - ) - ) - (local.get $1) - ) - ) - ) - ) - (block - (call $abort) - (br $switch) - ) - ) - (return) - ) - ) - (func $switch64_big_condition2 (; 26 ;) (param $$x i64) - (local $1 i64) - (block $switch - (block $switch-case - (br_table $switch-case $switch - (i32.wrap_i64 - (block (result i64) - (local.set $1 - (i64.sub - (local.get $$x) - (i64.const 9218868437227405312) - ) - ) - (br_if $switch - (i32.wrap_i64 - (i64.shr_u - (local.get $1) - (i64.const 32) - ) - ) - ) - (local.get $1) - ) - ) - ) - ) - (block - (call $abort) - (br $switch) - ) - ) - ) - (func $keepAlive (; 27 ;) - (call $loads) - (call $loads) - (call $stores) - (call $stores) - (call $test) - (call $test) - (drop - (call $imports) - ) - (drop - (call $imports) - ) - (call $arg - (i64.const 0) - ) - (call $arg - (i64.const 0) - ) - (drop - (call $call1 - (i64.const 0) - ) - ) - (drop - (call $call1 - (i64.const 0) - ) - ) - (drop - (call $call2 - (i64.const 0) - ) - ) - (drop - (call $call2 - (i64.const 0) - ) - ) - (drop - (call $returnCastConst) - ) - (drop - (call $returnCastConst) - ) - (drop - (call $ifValue64 - (i64.const 0) - (i64.const 0) - ) - ) - (drop - (call $ifValue64 - (i64.const 0) - (i64.const 0) - ) - ) - (drop - (call $ifValue32 - (i32.const 0) - (i32.const 0) - ) - ) - (drop - (call $ifValue32 - (i32.const 0) - (i32.const 0) - ) - ) - (drop - (call $switch64 - (i64.const 0) - ) - ) - (drop - (call $switch64 - (i64.const 0) - ) - ) - (call $unreachable_leftovers - (i32.const 0) - (i32.const 0) - (i32.const 0) - ) - (call $unreachable_leftovers - (i32.const 0) - (i32.const 0) - (i32.const 0) - ) - (drop - (call $_memchr - (i32.const 0) - (i32.const 0) - (i32.const 0) - ) - ) - (drop - (call $switch64TOOMUCH - (i64.const 0) - ) - ) - (call $switch64_big_condition1 - (i64.const 0) - ) - (call $switch64_big_condition2 - (i64.const 0) - ) - ) - (func $__emscripten_dceable_type_decls (; 28 ;) - (drop - (call $_fabsf - (f32.const 0) - ) - ) - (drop - (call $legalfunc$do_i64) - ) - ) - (func $legalstub$illegalParam (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 f64) - (call $illegalParam - (local.get $0) - (i64.or - (i64.extend_i32_u - (local.get $1) - ) - (i64.shl - (i64.extend_i32_u - (local.get $2) - ) - (i64.const 32) - ) - ) - (local.get $3) - ) - ) - (func $legalstub$illegalResult (; 30 ;) (result i32) - (local $0 i64) - (local.set $0 - (call $illegalResult) - ) - (call $setTempRet0 - (i32.wrap_i64 - (i64.shr_u - (local.get $0) - (i64.const 32) - ) - ) - ) - (i32.wrap_i64 - (local.get $0) - ) - ) - (func $legalfunc$illegalImport (; 31 ;) (param $0 f64) (param $1 i64) (param $2 i32) - (call $legalimport$illegalImport - (local.get $0) - (i32.wrap_i64 - (local.get $1) - ) - (i32.wrap_i64 - (i64.shr_u - (local.get $1) - (i64.const 32) - ) - ) - (local.get $2) - ) - ) - (func $legalfunc$illegalImportResult (; 32 ;) (result i64) - (i64.or - (i64.extend_i32_u - (call $legalimport$illegalImportResult) - ) - (i64.shl - (i64.extend_i32_u - (call $getTempRet0) - ) - (i64.const 32) - ) - ) - ) - (func $legalfunc$do_i64 (; 33 ;) (result i64) - (i64.or - (i64.extend_i32_u - (call $legalimport$do_i64) - ) - (i64.shl - (i64.extend_i32_u - (call $getTempRet0) - ) - (i64.const 32) - ) - ) - ) -) diff -Nru binaryen-91/test/wasm-only.fromasm.no-opts binaryen-99/test/wasm-only.fromasm.no-opts --- binaryen-91/test/wasm-only.fromasm.no-opts 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/test/wasm-only.fromasm.no-opts 1970-01-01 00:00:00.000000000 +0000 @@ -1,1928 +0,0 @@ -(module - (type $none_=>_none (func)) - (type $none_=>_i64 (func (result i64))) - (type $i64_i64_=>_i64 (func (param i64 i64) (result i64))) - (type $none_=>_i32 (func (result i32))) - (type $i64_=>_none (func (param i64))) - (type $i64_=>_i32 (func (param i64) (result i32))) - (type $i64_=>_i64 (func (param i64) (result i64))) - (type $f32_=>_i64 (func (param f32) (result i64))) - (type $f64_=>_i64 (func (param f64) (result i64))) - (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - (type $i32_i32_i32_f64_=>_none (func (param i32 i32 i32 f64))) - (type $i32_i64_f64_=>_none (func (param i32 i64 f64))) - (type $f64_i32_i32_i32_=>_none (func (param f64 i32 i32 i32))) - (type $f64_i64_i32_=>_none (func (param f64 i64 i32))) - (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) - (type $f32_=>_f32 (func (param f32) (result f32))) - (import "env" "memory" (memory $memory 256 256)) - (import "env" "table" (table $table 3 3 funcref)) - (elem (global.get $__table_base) $legalfunc$illegalImport $_fabsf $legalfunc$do_i64) - (import "env" "__memory_base" (global $__memory_base i32)) - (import "env" "__table_base" (global $__table_base i32)) - (import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32)) - (import "env" "_fabsf" (func $_fabsf (param f32) (result f32))) - (import "env" "abort" (func $abort)) - (import "env" "setTempRet0" (func $setTempRet0 (param i32))) - (import "env" "illegalImport" (func $legalimport$illegalImport (param f64 i32 i32 i32))) - (import "env" "getTempRet0" (func $getTempRet0 (result i32))) - (import "env" "illegalImportResult" (func $legalimport$illegalImportResult (result i32))) - (import "env" "do_i64" (func $legalimport$do_i64 (result i32))) - (global $STACKTOP (mut i32) (global.get $STACKTOP$asm2wasm$import)) - (export "test64" (func $test64)) - (export "illegalParam" (func $legalstub$illegalParam)) - (export "illegalResult" (func $legalstub$illegalResult)) - (export "keepAlive" (func $keepAlive)) - (func $loads (; 7 ;) - (local $i i32) - (local $f f32) - (local $d f64) - (local.set $i - (i32.load8_s - (i32.const 100) - ) - ) - (local.set $i - (i32.load8_s - (i32.const 101) - ) - ) - (local.set $i - (i32.load16_s - (i32.const 102) - ) - ) - (local.set $i - (i32.load16_s - (i32.const 103) - ) - ) - (local.set $i - (i32.load16_s align=1 - (i32.const 104) - ) - ) - (local.set $i - (i32.load16_s - (i32.const 105) - ) - ) - (local.set $i - (i32.load - (i32.const 106) - ) - ) - (local.set $i - (i32.load - (i32.const 107) - ) - ) - (local.set $i - (i32.load align=1 - (i32.const 108) - ) - ) - (local.set $i - (i32.load align=2 - (i32.const 109) - ) - ) - (local.set $i - (i32.load - (i32.const 110) - ) - ) - (local.set $f - (f32.load - (i32.const 111) - ) - ) - (local.set $f - (f32.load - (i32.const 112) - ) - ) - (local.set $f - (f32.load align=1 - (i32.const 113) - ) - ) - (local.set $f - (f32.load align=2 - (i32.const 114) - ) - ) - (local.set $f - (f32.load - (i32.const 115) - ) - ) - (local.set $d - (f64.load - (i32.const 116) - ) - ) - (local.set $d - (f64.load - (i32.const 117) - ) - ) - (local.set $d - (f64.load align=1 - (i32.const 118) - ) - ) - (local.set $d - (f64.load align=2 - (i32.const 119) - ) - ) - (local.set $d - (f64.load align=4 - (i32.const 120) - ) - ) - (local.set $d - (f64.load - (i32.const 121) - ) - ) - ) - (func $stores (; 8 ;) - (local $i i32) - (local $f f32) - (local $d f64) - (i32.store8 - (i32.const 100) - (local.get $i) - ) - (i32.store8 - (i32.const 101) - (local.get $i) - ) - (i32.store16 - (i32.const 102) - (local.get $i) - ) - (i32.store16 - (i32.const 103) - (local.get $i) - ) - (i32.store16 align=1 - (i32.const 104) - (local.get $i) - ) - (i32.store16 - (i32.const 105) - (local.get $i) - ) - (i32.store - (i32.const 106) - (local.get $i) - ) - (i32.store - (i32.const 107) - (local.get $i) - ) - (i32.store align=1 - (i32.const 108) - (local.get $i) - ) - (i32.store align=2 - (i32.const 109) - (local.get $i) - ) - (i32.store - (i32.const 110) - (local.get $i) - ) - (f32.store - (i32.const 111) - (local.get $f) - ) - (f32.store - (i32.const 112) - (local.get $f) - ) - (f32.store align=1 - (i32.const 113) - (local.get $f) - ) - (f32.store align=2 - (i32.const 114) - (local.get $f) - ) - (f32.store - (i32.const 115) - (local.get $f) - ) - (f64.store - (i32.const 116) - (local.get $d) - ) - (f64.store - (i32.const 117) - (local.get $d) - ) - (f64.store align=1 - (i32.const 118) - (local.get $d) - ) - (f64.store align=2 - (i32.const 119) - (local.get $d) - ) - (f64.store align=4 - (i32.const 120) - (local.get $d) - ) - (f64.store - (i32.const 121) - (local.get $d) - ) - ) - (func $test (; 9 ;) - (local $i i32) - (local $j i64) - (local $f f32) - (local $f1 f32) - (local $f2 f32) - (local $d1 f64) - (local $d2 f64) - (local.set $i - (i32.reinterpret_f32 - (local.get $f) - ) - ) - (local.set $f - (f32.reinterpret_i32 - (local.get $i) - ) - ) - (local.set $i - (i32.ctz - (local.get $i) - ) - ) - (local.set $i - (i32.popcnt - (local.get $i) - ) - ) - (local.set $j - (i64.popcnt - (local.get $j) - ) - ) - (local.set $f1 - (f32.copysign - (local.get $f1) - (local.get $f2) - ) - ) - (local.set $d1 - (f64.copysign - (local.get $d1) - (local.get $d2) - ) - ) - ) - (func $i64u-div (; 10 ;) (param $0 i64) (param $1 i64) (result i64) - (if (result i64) - (i64.eqz - (local.get $1) - ) - (i64.const 0) - (i64.div_u - (local.get $0) - (local.get $1) - ) - ) - ) - (func $i64s-div (; 11 ;) (param $0 i64) (param $1 i64) (result i64) - (if (result i64) - (i64.eqz - (local.get $1) - ) - (i64.const 0) - (if (result i64) - (i32.and - (i64.eq - (local.get $0) - (i64.const -9223372036854775808) - ) - (i64.eq - (local.get $1) - (i64.const -1) - ) - ) - (i64.const 0) - (i64.div_s - (local.get $0) - (local.get $1) - ) - ) - ) - ) - (func $i64u-rem (; 12 ;) (param $0 i64) (param $1 i64) (result i64) - (if (result i64) - (i64.eqz - (local.get $1) - ) - (i64.const 0) - (i64.rem_u - (local.get $0) - (local.get $1) - ) - ) - ) - (func $i64s-rem (; 13 ;) (param $0 i64) (param $1 i64) (result i64) - (if (result i64) - (i64.eqz - (local.get $1) - ) - (i64.const 0) - (i64.rem_s - (local.get $0) - (local.get $1) - ) - ) - ) - (func $f32-to-int64 (; 14 ;) (param $0 f32) (result i64) - (if (result i64) - (f32.ne - (local.get $0) - (local.get $0) - ) - (i64.const -9223372036854775808) - (if (result i64) - (f32.ge - (local.get $0) - (f32.const 9223372036854775808) - ) - (i64.const -9223372036854775808) - (if (result i64) - (f32.le - (local.get $0) - (f32.const -9223372036854775808) - ) - (i64.const -9223372036854775808) - (i64.trunc_f32_s - (local.get $0) - ) - ) - ) - ) - ) - (func $f64-to-int64 (; 15 ;) (param $0 f64) (result i64) - (if (result i64) - (f64.ne - (local.get $0) - (local.get $0) - ) - (i64.const -9223372036854775808) - (if (result i64) - (f64.ge - (local.get $0) - (f64.const 9223372036854775808) - ) - (i64.const -9223372036854775808) - (if (result i64) - (f64.le - (local.get $0) - (f64.const -9223372036854775808) - ) - (i64.const -9223372036854775808) - (i64.trunc_f64_s - (local.get $0) - ) - ) - ) - ) - ) - (func $f32-to-uint64 (; 16 ;) (param $0 f32) (result i64) - (if (result i64) - (f32.ne - (local.get $0) - (local.get $0) - ) - (i64.const 0) - (if (result i64) - (f32.ge - (local.get $0) - (f32.const 18446744073709551615) - ) - (i64.const 0) - (if (result i64) - (f32.le - (local.get $0) - (f32.const -1) - ) - (i64.const 0) - (i64.trunc_f32_u - (local.get $0) - ) - ) - ) - ) - ) - (func $f64-to-uint64 (; 17 ;) (param $0 f64) (result i64) - (if (result i64) - (f64.ne - (local.get $0) - (local.get $0) - ) - (i64.const 0) - (if (result i64) - (f64.ge - (local.get $0) - (f64.const 18446744073709551615) - ) - (i64.const 0) - (if (result i64) - (f64.le - (local.get $0) - (f64.const -1) - ) - (i64.const 0) - (i64.trunc_f64_u - (local.get $0) - ) - ) - ) - ) - ) - (func $test64 (; 18 ;) - (local $x i64) - (local $y i64) - (local $z i32) - (local $int32 i32) - (local $float32 f32) - (local $float64 f64) - (local.set $x - (i64.const 100) - ) - (local.set $y - (i64.const 128849018897) - ) - (local.set $x - (i64.add - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.sub - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.mul - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (call $i64u-div - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (call $i64s-div - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (call $i64u-rem - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (call $i64s-rem - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.and - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.or - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.xor - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.shl - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.shr_s - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.shr_u - (local.get $x) - (local.get $y) - ) - ) - (local.set $x - (i64.load - (i32.const 120) - ) - ) - (local.set $x - (i64.load - (i32.const 120) - ) - ) - (local.set $x - (i64.load align=2 - (i32.const 120) - ) - ) - (local.set $x - (i64.load align=4 - (i32.const 120) - ) - ) - (local.set $x - (i64.load - (i32.const 120) - ) - ) - (i64.store - (i32.const 120) - (local.get $x) - ) - (i64.store - (i32.const 120) - (local.get $x) - ) - (i64.store align=2 - (i32.const 120) - (local.get $x) - ) - (i64.store align=4 - (i32.const 120) - (local.get $x) - ) - (i64.store - (i32.const 120) - (local.get $x) - ) - (local.set $z - (i64.eq - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.ne - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.le_u - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.le_s - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.ge_u - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.ge_s - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.lt_u - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.lt_s - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.gt_u - (local.get $x) - (local.get $y) - ) - ) - (local.set $z - (i64.gt_s - (local.get $x) - (local.get $y) - ) - ) - (local.set $int32 - (i32.wrap_i64 - (local.get $x) - ) - ) - (local.set $x - (i64.extend_i32_s - (local.get $int32) - ) - ) - (local.set $x - (i64.extend_i32_u - (local.get $int32) - ) - ) - (local.set $float32 - (f32.convert_i64_s - (local.get $x) - ) - ) - (local.set $float64 - (f64.convert_i64_s - (local.get $x) - ) - ) - (local.set $float32 - (f32.convert_i64_u - (local.get $x) - ) - ) - (local.set $float64 - (f64.convert_i64_u - (local.get $x) - ) - ) - (local.set $x - (call $f32-to-int64 - (local.get $float32) - ) - ) - (local.set $x - (call $f64-to-int64 - (local.get $float64) - ) - ) - (local.set $x - (call $f32-to-uint64 - (local.get $float32) - ) - ) - (local.set $x - (call $f64-to-uint64 - (local.get $float64) - ) - ) - (local.set $x - (i64.reinterpret_f64 - (local.get $float64) - ) - ) - (local.set $float64 - (f64.reinterpret_i64 - (local.get $x) - ) - ) - (local.set $x - (i64.clz - (local.get $y) - ) - ) - (local.set $y - (i64.ctz - (local.get $x) - ) - ) - ) - (func $imports (; 19 ;) (result i64) - (call $legalfunc$illegalImport - (f64.const -3.13159) - (i64.const 94489280523) - (i32.const -33) - ) - (return - (call $legalfunc$illegalImportResult) - ) - ) - (func $arg (; 20 ;) (param $x i64) - (i64.store - (i32.const 100) - (local.get $x) - ) - (call $arg - (local.get $x) - ) - ) - (func $illegalParam (; 21 ;) (param $a i32) (param $x i64) (param $b f64) - (i32.store - (i32.const 50) - (local.get $a) - ) - (i64.store - (i32.const 100) - (local.get $x) - ) - (f64.store - (i32.const 200) - (local.get $b) - ) - (call $illegalParam - (i32.const 0) - (local.get $x) - (f64.const 12.34) - ) - ) - (func $result (; 22 ;) (result i64) - (return - (i64.const 8589934593) - ) - ) - (func $illegalResult (; 23 ;) (result i64) - (return - (i64.const 8589934593) - ) - ) - (func $call1 (; 24 ;) (param $x i64) (result i64) - (local $y i64) - (local.set $y - (call $call1 - (local.get $x) - ) - ) - (return - (local.get $y) - ) - ) - (func $call2 (; 25 ;) (param $x i64) (result i64) - (drop - (call $call2 - (call $call2 - (local.get $x) - ) - ) - ) - (return - (i64.const 245127260211081) - ) - ) - (func $returnCastConst (; 26 ;) (result i64) - (return - (i64.const 0) - ) - ) - (func $ifValue64 (; 27 ;) (param $$4 i64) (param $$6 i64) (result i64) - (local $$$0 i64) - (local $$9 i64) - (local $$10 i64) - (if - (i32.wrap_i64 - (local.get $$6) - ) - (block - (local.set $$9 - (call $call2 - (local.get $$4) - ) - ) - (local.set $$$0 - (local.get $$9) - ) - ) - (block - (local.set $$10 - (call $call2 - (local.get $$4) - ) - ) - (local.set $$$0 - (local.get $$10) - ) - ) - ) - (return - (local.get $$$0) - ) - ) - (func $ifValue32 (; 28 ;) (param $$4 i32) (param $$6 i32) (result i32) - (local $$$0 i32) - (local $$9 i32) - (local $$10 i32) - (if - (local.get $$6) - (block - (local.set $$9 - (call $ifValue32 - (local.get $$4) - (local.get $$6) - ) - ) - (local.set $$$0 - (local.get $$9) - ) - ) - (block - (local.set $$10 - (call $ifValue32 - (local.get $$4) - (local.get $$6) - ) - ) - (local.set $$$0 - (local.get $$10) - ) - ) - ) - (return - (local.get $$$0) - ) - ) - (func $switch64 (; 29 ;) (param $$a444 i64) (result i32) - (local $$waka i32) - (local $2 i64) - (block $switch - (block $switch-default - (block $switch-case0 - (block $switch-case - (br_table $switch-case0 $switch-default $switch-case $switch-default - (i32.wrap_i64 - (block (result i64) - (local.set $2 - (i64.sub - (local.get $$a444) - (i64.const 42949672965) - ) - ) - (br_if $switch-default - (i32.wrap_i64 - (i64.shr_u - (local.get $2) - (i64.const 32) - ) - ) - ) - (local.get $2) - ) - ) - ) - ) - (block - (local.set $$waka - (i32.const 11000) - ) - (br $switch) - ) - ) - (block - (local.set $$waka - (i32.const 10) - ) - (br $switch) - ) - ) - (local.set $$waka - (i32.const 1) - ) - ) - (return - (local.get $$waka) - ) - ) - (func $unreachable_leftovers (; 30 ;) (param $$0 i32) (param $$1 i32) (param $$2 i32) - (local $label i32) - (block $label$break$L1 - (if - (local.get $$1) - (local.set $label - (i32.const 10) - ) - (block - (if - (local.get $$2) - (block - (br $label$break$L1) - (return) - ) - ) - (i32.store - (local.get $$0) - (i32.const -2) - ) - (return) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 10) - ) - (i32.store - (local.get $$0) - (i32.const -1) - ) - ) - (return) - ) - (func $switch64TOOMUCH (; 31 ;) (param $$a444 i64) (result i32) - (local $$waka i32) - (local $2 i64) - (local $3 i32) - (local $4 i64) - (local $5 i32) - (block $switch - (block $switch-default - (block $switch-case0 - (block $switch-case - (local.set $2 - (local.get $$a444) - ) - (if - (i64.eq - (local.get $2) - (i64.const -9223372036854775808) - ) - (br $switch-case0) - (if - (i64.eq - (local.get $2) - (i64.const 4611686018427387904) - ) - (br $switch-case) - (br $switch-default) - ) - ) - ) - (nop) - ) - (return - (i32.const 40) - ) - ) - (local.set $$waka - (i32.const 1) - ) - ) - (block $switch1 - (block $switch-default4 - (block $switch-case3 - (block $switch-case2 - (local.set $3 - (i32.const 100) - ) - (if - (i32.eq - (local.get $3) - (i32.const 214748364) - ) - (br $switch-case3) - (if - (i32.eq - (local.get $3) - (i32.const 107374182) - ) - (br $switch-case2) - (br $switch-default4) - ) - ) - ) - (nop) - ) - (return - (i32.const 41) - ) - ) - (local.set $$waka - (i32.const 1001) - ) - ) - (block $switch5 - (block $switch-case7 - (block $switch-case6 - (local.set $4 - (local.get $$a444) - ) - (if - (i64.eq - (local.get $4) - (i64.const -9223372036854775808) - ) - (br $switch-case7) - (if - (i64.eq - (local.get $4) - (i64.const 4611686018427387904) - ) - (br $switch-case6) - (br $switch5) - ) - ) - ) - (nop) - ) - (return - (i32.const 42) - ) - ) - (block $switch8 - (block $switch-case10 - (block $switch-case9 - (local.set $5 - (i32.const 100) - ) - (if - (i32.eq - (local.get $5) - (i32.const 214748364) - ) - (br $switch-case10) - (if - (i32.eq - (local.get $5) - (i32.const 107374182) - ) - (br $switch-case9) - (br $switch8) - ) - ) - ) - (nop) - ) - (return - (i32.const 43) - ) - ) - (return - (i32.const 44) - ) - ) - (func $_memchr (; 32 ;) (param $$src i32) (param $$c i32) (param $$n i32) (result i32) - (local $$0 i32) - (local $$1 i32) - (local $$2 i32) - (local $$3 i32) - (local $$4 i32) - (local $$5 i32) - (local $$6 i32) - (local $$7 i32) - (local $$and i32) - (local $$and15 i32) - (local $$and16 i32) - (local $$and39 i32) - (local $$cmp i32) - (local $$cmp11 i32) - (local $$cmp1132 i32) - (local $$cmp28 i32) - (local $$cmp8 i32) - (local $$cond i32) - (local $$conv1 i32) - (local $$dec i32) - (local $$dec34 i32) - (local $$incdec$ptr i32) - (local $$incdec$ptr21 i32) - (local $$incdec$ptr33 i32) - (local $$lnot i32) - (local $$mul i32) - (local $$n$addr$0$lcssa i32) - (local $$n$addr$0$lcssa52 i32) - (local $$n$addr$043 i32) - (local $$n$addr$1$lcssa i32) - (local $$n$addr$133 i32) - (local $$n$addr$227 i32) - (local $$n$addr$3 i32) - (local $$neg i32) - (local $$or$cond i32) - (local $$or$cond42 i32) - (local $$s$0$lcssa i32) - (local $$s$0$lcssa53 i32) - (local $$s$044 i32) - (local $$s$128 i32) - (local $$s$2 i32) - (local $$sub i32) - (local $$sub22 i32) - (local $$tobool i32) - (local $$tobool2 i32) - (local $$tobool2$lcssa i32) - (local $$tobool241 i32) - (local $$tobool25 i32) - (local $$tobool2526 i32) - (local $$tobool36 i32) - (local $$tobool40 i32) - (local $$w$0$lcssa i32) - (local $$w$034 i32) - (local $$xor i32) - (local $label i32) - (local $sp i32) - (local.set $sp - (global.get $STACKTOP) - ) - (local.set $$conv1 - (i32.and - (local.get $$c) - (i32.const 255) - ) - ) - (local.set $$0 - (local.get $$src) - ) - (local.set $$and39 - (i32.and - (local.get $$0) - (i32.const 3) - ) - ) - (local.set $$tobool40 - (i32.ne - (local.get $$and39) - (i32.const 0) - ) - ) - (local.set $$tobool241 - (i32.ne - (local.get $$n) - (i32.const 0) - ) - ) - (local.set $$or$cond42 - (i32.and - (local.get $$tobool241) - (local.get $$tobool40) - ) - ) - (block $label$break$L1 - (if - (local.get $$or$cond42) - (block - (local.set $$1 - (i32.and - (local.get $$c) - (i32.const 255) - ) - ) - (local.set $$n$addr$043 - (local.get $$n) - ) - (local.set $$s$044 - (local.get $$src) - ) - (loop $while-in - (block $while-out - (local.set $$2 - (i32.load8_s - (local.get $$s$044) - ) - ) - (local.set $$cmp - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$2) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.shr_s - (i32.shl - (local.get $$1) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (if - (local.get $$cmp) - (block - (local.set $$n$addr$0$lcssa52 - (local.get $$n$addr$043) - ) - (local.set $$s$0$lcssa53 - (local.get $$s$044) - ) - (local.set $label - (i32.const 6) - ) - (br $label$break$L1) - ) - ) - (local.set $$incdec$ptr - (i32.add - (local.get $$s$044) - (i32.const 1) - ) - ) - (local.set $$dec - (i32.add - (local.get $$n$addr$043) - (i32.const -1) - ) - ) - (local.set $$3 - (local.get $$incdec$ptr) - ) - (local.set $$and - (i32.and - (local.get $$3) - (i32.const 3) - ) - ) - (local.set $$tobool - (i32.ne - (local.get $$and) - (i32.const 0) - ) - ) - (local.set $$tobool2 - (i32.ne - (local.get $$dec) - (i32.const 0) - ) - ) - (local.set $$or$cond - (i32.and - (local.get $$tobool2) - (local.get $$tobool) - ) - ) - (if - (local.get $$or$cond) - (block - (local.set $$n$addr$043 - (local.get $$dec) - ) - (local.set $$s$044 - (local.get $$incdec$ptr) - ) - ) - (block - (local.set $$n$addr$0$lcssa - (local.get $$dec) - ) - (local.set $$s$0$lcssa - (local.get $$incdec$ptr) - ) - (local.set $$tobool2$lcssa - (local.get $$tobool2) - ) - (local.set $label - (i32.const 5) - ) - (br $while-out) - ) - ) - (br $while-in) - ) - ) - ) - (block - (local.set $$n$addr$0$lcssa - (local.get $$n) - ) - (local.set $$s$0$lcssa - (local.get $$src) - ) - (local.set $$tobool2$lcssa - (local.get $$tobool241) - ) - (local.set $label - (i32.const 5) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 5) - ) - (if - (local.get $$tobool2$lcssa) - (block - (local.set $$n$addr$0$lcssa52 - (local.get $$n$addr$0$lcssa) - ) - (local.set $$s$0$lcssa53 - (local.get $$s$0$lcssa) - ) - (local.set $label - (i32.const 6) - ) - ) - (block - (local.set $$n$addr$3 - (i32.const 0) - ) - (local.set $$s$2 - (local.get $$s$0$lcssa) - ) - ) - ) - ) - (block $label$break$L8 - (if - (i32.eq - (local.get $label) - (i32.const 6) - ) - (block - (local.set $$4 - (i32.load8_s - (local.get $$s$0$lcssa53) - ) - ) - (local.set $$5 - (i32.and - (local.get $$c) - (i32.const 255) - ) - ) - (local.set $$cmp8 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$4) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.shr_s - (i32.shl - (local.get $$5) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (if - (local.get $$cmp8) - (block - (local.set $$n$addr$3 - (local.get $$n$addr$0$lcssa52) - ) - (local.set $$s$2 - (local.get $$s$0$lcssa53) - ) - ) - (block - (local.set $$mul - (i32.mul - (local.get $$conv1) - (i32.const 16843009) - ) - ) - (local.set $$cmp1132 - (i32.gt_u - (local.get $$n$addr$0$lcssa52) - (i32.const 3) - ) - ) - (block $label$break$L11 - (if - (local.get $$cmp1132) - (block - (local.set $$n$addr$133 - (local.get $$n$addr$0$lcssa52) - ) - (local.set $$w$034 - (local.get $$s$0$lcssa53) - ) - (loop $while-in3 - (block $while-out2 - (local.set $$6 - (i32.load - (local.get $$w$034) - ) - ) - (local.set $$xor - (i32.xor - (local.get $$6) - (local.get $$mul) - ) - ) - (local.set $$sub - (i32.add - (local.get $$xor) - (i32.const -16843009) - ) - ) - (local.set $$neg - (i32.and - (local.get $$xor) - (i32.const -2139062144) - ) - ) - (local.set $$and15 - (i32.xor - (local.get $$neg) - (i32.const -2139062144) - ) - ) - (local.set $$and16 - (i32.and - (local.get $$and15) - (local.get $$sub) - ) - ) - (local.set $$lnot - (i32.eq - (local.get $$and16) - (i32.const 0) - ) - ) - (if - (i32.eqz - (local.get $$lnot) - ) - (br $while-out2) - ) - (local.set $$incdec$ptr21 - (i32.add - (local.get $$w$034) - (i32.const 4) - ) - ) - (local.set $$sub22 - (i32.add - (local.get $$n$addr$133) - (i32.const -4) - ) - ) - (local.set $$cmp11 - (i32.gt_u - (local.get $$sub22) - (i32.const 3) - ) - ) - (if - (local.get $$cmp11) - (block - (local.set $$n$addr$133 - (local.get $$sub22) - ) - (local.set $$w$034 - (local.get $$incdec$ptr21) - ) - ) - (block - (local.set $$n$addr$1$lcssa - (local.get $$sub22) - ) - (local.set $$w$0$lcssa - (local.get $$incdec$ptr21) - ) - (local.set $label - (i32.const 11) - ) - (br $label$break$L11) - ) - ) - (br $while-in3) - ) - ) - (local.set $$n$addr$227 - (local.get $$n$addr$133) - ) - (local.set $$s$128 - (local.get $$w$034) - ) - ) - (block - (local.set $$n$addr$1$lcssa - (local.get $$n$addr$0$lcssa52) - ) - (local.set $$w$0$lcssa - (local.get $$s$0$lcssa53) - ) - (local.set $label - (i32.const 11) - ) - ) - ) - ) - (if - (i32.eq - (local.get $label) - (i32.const 11) - ) - (block - (local.set $$tobool2526 - (i32.eq - (local.get $$n$addr$1$lcssa) - (i32.const 0) - ) - ) - (if - (local.get $$tobool2526) - (block - (local.set $$n$addr$3 - (i32.const 0) - ) - (local.set $$s$2 - (local.get $$w$0$lcssa) - ) - (br $label$break$L8) - ) - (block - (local.set $$n$addr$227 - (local.get $$n$addr$1$lcssa) - ) - (local.set $$s$128 - (local.get $$w$0$lcssa) - ) - ) - ) - ) - ) - (loop $while-in5 - (block $while-out4 - (local.set $$7 - (i32.load8_s - (local.get $$s$128) - ) - ) - (local.set $$cmp28 - (i32.eq - (i32.shr_s - (i32.shl - (local.get $$7) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.shr_s - (i32.shl - (local.get $$5) - (i32.const 24) - ) - (i32.const 24) - ) - ) - ) - (if - (local.get $$cmp28) - (block - (local.set $$n$addr$3 - (local.get $$n$addr$227) - ) - (local.set $$s$2 - (local.get $$s$128) - ) - (br $label$break$L8) - ) - ) - (local.set $$incdec$ptr33 - (i32.add - (local.get $$s$128) - (i32.const 1) - ) - ) - (local.set $$dec34 - (i32.add - (local.get $$n$addr$227) - (i32.const -1) - ) - ) - (local.set $$tobool25 - (i32.eq - (local.get $$dec34) - (i32.const 0) - ) - ) - (if - (local.get $$tobool25) - (block - (local.set $$n$addr$3 - (i32.const 0) - ) - (local.set $$s$2 - (local.get $$incdec$ptr33) - ) - (br $while-out4) - ) - (block - (local.set $$n$addr$227 - (local.get $$dec34) - ) - (local.set $$s$128 - (local.get $$incdec$ptr33) - ) - ) - ) - (br $while-in5) - ) - ) - ) - ) - ) - ) - ) - (local.set $$tobool36 - (i32.ne - (local.get $$n$addr$3) - (i32.const 0) - ) - ) - (local.set $$cond - (if (result i32) - (local.get $$tobool36) - (local.get $$s$2) - (i32.const 0) - ) - ) - (return - (local.get $$cond) - ) - ) - (func $switch64_big_condition1 (; 33 ;) (param $$x i64) - (local $1 i64) - (block $switch - (block $switch-default - (block $switch-case - (br_table $switch-case $switch-default - (i32.wrap_i64 - (block (result i64) - (local.set $1 - (i64.sub - (local.get $$x) - (i64.const 9218868437227405312) - ) - ) - (br_if $switch-default - (i32.wrap_i64 - (i64.shr_u - (local.get $1) - (i64.const 32) - ) - ) - ) - (local.get $1) - ) - ) - ) - ) - (block - (call $abort) - (br $switch) - ) - ) - (return) - ) - ) - (func $switch64_big_condition2 (; 34 ;) (param $$x i64) - (local $1 i64) - (block $switch - (block $switch-case - (br_table $switch-case $switch - (i32.wrap_i64 - (block (result i64) - (local.set $1 - (i64.sub - (local.get $$x) - (i64.const 9218868437227405312) - ) - ) - (br_if $switch - (i32.wrap_i64 - (i64.shr_u - (local.get $1) - (i64.const 32) - ) - ) - ) - (local.get $1) - ) - ) - ) - ) - (block - (call $abort) - (br $switch) - ) - ) - ) - (func $keepAlive (; 35 ;) - (call $loads) - (call $loads) - (call $stores) - (call $stores) - (call $test) - (call $test) - (drop - (call $imports) - ) - (drop - (call $imports) - ) - (call $arg - (i64.const 0) - ) - (call $arg - (i64.const 0) - ) - (drop - (call $call1 - (i64.const 0) - ) - ) - (drop - (call $call1 - (i64.const 0) - ) - ) - (drop - (call $call2 - (i64.const 0) - ) - ) - (drop - (call $call2 - (i64.const 0) - ) - ) - (drop - (call $returnCastConst) - ) - (drop - (call $returnCastConst) - ) - (drop - (call $ifValue64 - (i64.const 0) - (i64.const 0) - ) - ) - (drop - (call $ifValue64 - (i64.const 0) - (i64.const 0) - ) - ) - (drop - (call $ifValue32 - (i32.const 0) - (i32.const 0) - ) - ) - (drop - (call $ifValue32 - (i32.const 0) - (i32.const 0) - ) - ) - (drop - (call $switch64 - (i64.const 0) - ) - ) - (drop - (call $switch64 - (i64.const 0) - ) - ) - (call $unreachable_leftovers - (i32.const 0) - (i32.const 0) - (i32.const 0) - ) - (call $unreachable_leftovers - (i32.const 0) - (i32.const 0) - (i32.const 0) - ) - (drop - (call $_memchr - (i32.const 0) - (i32.const 0) - (i32.const 0) - ) - ) - (drop - (call $switch64TOOMUCH - (i64.const 0) - ) - ) - (call $switch64_big_condition1 - (i64.const 0) - ) - (call $switch64_big_condition2 - (i64.const 0) - ) - ) - (func $__emscripten_dceable_type_decls (; 36 ;) - (drop - (call $_fabsf - (f32.const 0) - ) - ) - (drop - (call $legalfunc$do_i64) - ) - ) - (func $legalstub$illegalParam (; 37 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 f64) - (call $illegalParam - (local.get $0) - (i64.or - (i64.extend_i32_u - (local.get $1) - ) - (i64.shl - (i64.extend_i32_u - (local.get $2) - ) - (i64.const 32) - ) - ) - (local.get $3) - ) - ) - (func $legalstub$illegalResult (; 38 ;) (result i32) - (local $0 i64) - (local.set $0 - (call $illegalResult) - ) - (call $setTempRet0 - (i32.wrap_i64 - (i64.shr_u - (local.get $0) - (i64.const 32) - ) - ) - ) - (i32.wrap_i64 - (local.get $0) - ) - ) - (func $legalfunc$illegalImport (; 39 ;) (param $0 f64) (param $1 i64) (param $2 i32) - (call $legalimport$illegalImport - (local.get $0) - (i32.wrap_i64 - (local.get $1) - ) - (i32.wrap_i64 - (i64.shr_u - (local.get $1) - (i64.const 32) - ) - ) - (local.get $2) - ) - ) - (func $legalfunc$illegalImportResult (; 40 ;) (result i64) - (i64.or - (i64.extend_i32_u - (call $legalimport$illegalImportResult) - ) - (i64.shl - (i64.extend_i32_u - (call $getTempRet0) - ) - (i64.const 32) - ) - ) - ) - (func $legalfunc$do_i64 (; 41 ;) (result i64) - (i64.or - (i64.extend_i32_u - (call $legalimport$do_i64) - ) - (i64.shl - (i64.extend_i32_u - (call $getTempRet0) - ) - (i64.const 32) - ) - ) - ) -) diff -Nru binaryen-91/third_party/llvm-project/dwarf2yaml.cpp binaryen-99/third_party/llvm-project/dwarf2yaml.cpp --- binaryen-91/third_party/llvm-project/dwarf2yaml.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/third_party/llvm-project/dwarf2yaml.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -27,6 +27,7 @@ auto AbbrevSetPtr = DCtx.getDebugAbbrev(); if (AbbrevSetPtr) { for (auto AbbrvDeclSet : *AbbrevSetPtr) { + auto ListOffset = AbbrvDeclSet.second.getOffset(); for (auto AbbrvDecl : AbbrvDeclSet.second) { DWARFYAML::Abbrev Abbrv; Abbrv.Code = AbbrvDecl.getCode(); @@ -41,6 +42,7 @@ AttAbrv.Value = Attribute.getImplicitConstValue(); Abbrv.Attributes.push_back(AttAbrv); } + Abbrv.ListOffset = ListOffset; Y.AbbrevDecls.push_back(Abbrv); } // XXX BINARYEN: null-terminate the DeclSet. This is needed to separate @@ -120,6 +122,7 @@ uint64_t offset = 0; DWARFDebugLoc locList; while (locsData.isValidOffset(offset)) { + uint64_t locListOffset = offset; // XXX BINARYEN auto list = locList.parseOneLocationList(locsData, &offset); if (!list) { errs() << "debug_loc error\n"; @@ -132,11 +135,13 @@ for (auto x : entry.Loc) { loc.Location.push_back(x); } + loc.CompileUnitOffset = locListOffset; // XXX BINARYEN Y.Locs.push_back(loc); } DWARFYAML::Loc loc; loc.Start = 0; loc.End = 0; + loc.CompileUnitOffset = locListOffset; // XXX BINARYEN Y.Locs.push_back(loc); } } diff -Nru binaryen-91/third_party/llvm-project/DWARFEmitter.cpp binaryen-99/third_party/llvm-project/DWARFEmitter.cpp --- binaryen-91/third_party/llvm-project/DWARFEmitter.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/third_party/llvm-project/DWARFEmitter.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -190,9 +190,11 @@ // XXX BINARYEN Make sure we emit the right size. We should not change the // size as we only modify relocatable fields like addresses, and such fields // have a fixed size, so any change is a bug. + // We make an exception for AddrSizeChanged, which happens when we have run + // the Memory64Lowering pass to turn wasm64 into wasm32. void onEndCompileUnit(const DWARFYAML::Unit &CU) { size_t EndPos = OS.tell(); - if (EndPos - StartPos != CU.Length.getLength()) { + if (EndPos - StartPos != CU.Length.getLength() && !CU.AddrSizeChanged) { llvm_unreachable("compile unit size was incorrect"); } } diff -Nru binaryen-91/third_party/llvm-project/DWARFVisitor.cpp binaryen-99/third_party/llvm-project/DWARFVisitor.cpp --- binaryen-91/third_party/llvm-project/DWARFVisitor.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/third_party/llvm-project/DWARFVisitor.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -8,6 +8,8 @@ // //===----------------------------------------------------------------------===// +#include + #include "DWARFVisitor.h" #include "llvm/ObjectYAML/DWARFYAML.h" @@ -44,38 +46,74 @@ } template void DWARFYAML::VisitorImpl::traverseDebugInfo() { - // XXX BINARYEN: Handle multiple linked compile units. Each one has its own - // range of values, terminated by a zero. AbbrevStart refers to the start - // index for the current unit, and AbbrevEnd to one past the last one - // (which is the index of the 0 terminator). + // XXX BINARYEN: Handle multiple linked compile units, each of which can + // refer to a different abbreviation list. // TODO: This code appears to assume that abbreviation codes increment by 1 // so that lookups are linear. In LLVM output that is true, but it might not // be in general. - size_t AbbrevStart = 0, AbbrevEnd = -1; + // Create a map of [byte offset into the abbreviation section] => [index in + // DebugInfo.AbbrevDecls]. This avoids linear search for each CU. + std::unordered_map abbrByteOffsetToDeclsIndex; + for (size_t i = 0; i < DebugInfo.AbbrevDecls.size(); i++) { + auto offset = DebugInfo.AbbrevDecls[i].ListOffset; + // The offset is the same for all entries for the same CU, so only note the + // first as that is where the list for the CU (that LLVM DeclSet) begins. + // That is, DebugInfo.AbbrevDecls looks like this: + // + // i CU Abbrev ListOffset + // ============================ + // 0 X X1 150 + // 1 X X2 150 + // 2 X X3 150 + // .. + // 6 Y Y1 260 + // 7 Y Y2 260 + // + // Note how multiple rows i have the same CU. All those abbrevs have the + // same ListOffset, which is the byte offset into the abbreviation section + // for that set of abbreviations. + if (abbrByteOffsetToDeclsIndex.count(offset)) { + continue; + } + abbrByteOffsetToDeclsIndex[offset] = i; + } for (auto &Unit : DebugInfo.CompileUnits) { - // Skip the 0 terminator. - AbbrevEnd = AbbrevStart = AbbrevEnd + 1; + // AbbrOffset is the byte offset into the abbreviation section, which we + // need to find among the Abbrev's ListOffsets (which are the byte offsets + // of where that abbreviation list begins). + // TODO: Optimize this to not be O(#CUs * #abbrevs). + auto offset = Unit.AbbrOffset; + assert(abbrByteOffsetToDeclsIndex.count(offset)); + size_t AbbrevStart = abbrByteOffsetToDeclsIndex[offset]; + assert(DebugInfo.AbbrevDecls[AbbrevStart].ListOffset == offset); + // Find the last entry in this abbreviation list. + size_t AbbrevEnd = AbbrevStart; while (AbbrevEnd < DebugInfo.AbbrevDecls.size() && DebugInfo.AbbrevDecls[AbbrevEnd].Code) { AbbrevEnd++; } + // XXX BINARYEN If there are no abbreviations, there is nothing to + // do in this unit. + if (AbbrevStart == AbbrevEnd) { + continue; + } onStartCompileUnit(Unit); if (Unit.Entries.empty()) { // XXX BINARYEN continue; } - auto FirstAbbrevCode = Unit.Entries[0].AbbrCode; for (auto &Entry : Unit.Entries) { onStartDIE(Unit, Entry); if (Entry.AbbrCode == 0u) continue; - // XXX BINARYEN - if (Entry.AbbrCode - FirstAbbrevCode + AbbrevStart >= AbbrevEnd) { + // XXX BINARYEN valid abbreviation codes start from 1, so subtract that, + // and are relative to the start of the abbrev table + auto RelativeAbbrIndex = Entry.AbbrCode - 1 + AbbrevStart; + if (RelativeAbbrIndex >= AbbrevEnd) { errs() << "warning: invalid abbreviation code " << Entry.AbbrCode - << " (range: " << FirstAbbrevCode << " : " << AbbrevStart - << ".." << AbbrevEnd << ")\n"; + << " (range: " << AbbrevStart << ".." << AbbrevEnd << ")\n"; continue; } - auto &Abbrev = DebugInfo.AbbrevDecls[Entry.AbbrCode - FirstAbbrevCode + AbbrevStart]; + auto &Abbrev = DebugInfo.AbbrevDecls[RelativeAbbrIndex]; auto FormVal = Entry.Values.begin(); auto AbbrForm = Abbrev.Attributes.begin(); for (; diff -Nru binaryen-91/third_party/llvm-project/include/llvm/ObjectYAML/DWARFYAML.h binaryen-99/third_party/llvm-project/include/llvm/ObjectYAML/DWARFYAML.h --- binaryen-91/third_party/llvm-project/include/llvm/ObjectYAML/DWARFYAML.h 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/third_party/llvm-project/include/llvm/ObjectYAML/DWARFYAML.h 2021-01-07 20:01:06.000000000 +0000 @@ -55,6 +55,16 @@ llvm::dwarf::Tag Tag; llvm::dwarf::Constants Children; std::vector Attributes; + // XXX BINARYEN: Represent the binary offset in the abbreviation section for + // this abbreviation's list. The abbreviation section has multiple lists, + // each null-terminated, and those lists are what are referred to by compile + // units by offset. We need to match the offset in a compile unit to the + // abbreviation at that offset (which must be the beginning of an + // abbreviation list, that is, either the very first element, or after a null + // terminator). All abbreviations in the same list have the same offset + // (DWARFAbbreviationDeclarationSet does not track anything else, and we don't + // need it). + uint64_t ListOffset; }; struct ARangeDescriptor { @@ -82,6 +92,7 @@ uint32_t Start; uint32_t End; std::vector Location; + uint64_t CompileUnitOffset; }; // XXX BINARYEN --> @@ -117,6 +128,7 @@ llvm::dwarf::UnitType Type; // Added in DWARF 5 uint32_t AbbrOffset; uint8_t AddrSize; + bool AddrSizeChanged = false; // XXX BINARYEN std::vector Entries; }; diff -Nru binaryen-91/third_party/llvm-project/raw_ostream.cpp binaryen-99/third_party/llvm-project/raw_ostream.cpp --- binaryen-91/third_party/llvm-project/raw_ostream.cpp 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/third_party/llvm-project/raw_ostream.cpp 2021-01-07 20:01:06.000000000 +0000 @@ -523,7 +523,7 @@ sys::fs::CreationDisposition Disp, sys::fs::FileAccess Access, sys::fs::OpenFlags Flags) { // XXX BINARYEN - we only ever use IO from LLVM to log to stdout - return ::fileno(stdout); + return fileno(stdout); } raw_fd_ostream::raw_fd_ostream(StringRef Filename, std::error_code &EC) diff -Nru binaryen-91/third_party/mozjs/.gitignore binaryen-99/third_party/mozjs/.gitignore --- binaryen-91/third_party/mozjs/.gitignore 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/third_party/mozjs/.gitignore 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,2 @@ +* +!.gitignore diff -Nru binaryen-91/third_party/setup.py binaryen-99/third_party/setup.py --- binaryen-91/third_party/setup.py 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/third_party/setup.py 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,244 @@ +#!/usr/bin/env python3 +# +# Copyright 2020 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. + +import collections +import json +import io +import os +import re +import sys +import tarfile +import urllib.request +import zipfile + + +def fetch_json(url): + with urllib.request.urlopen(url) as res: + return json.loads(res.read().decode()) + + +def download_zip(url, dir): + with urllib.request.urlopen(url) as res: + data = io.BytesIO(res.read()) + archive = zipfile.ZipFile(data) + for name in archive.namelist(): + file = archive.open(name) + with open(os.path.join(dir, name), 'wb') as output: + output.write(file.read()) + + +def download_tar(url, dir): + tempfile = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'temp.tar.gz') + with urllib.request.urlopen(url) as res: + with open(tempfile, 'wb') as temp: + temp.write(res.read()) + with tarfile.open(tempfile, 'r') as archive: + for member in archive.getmembers(): + match = re.match('^[^/]+/', member.name) + if match: + outname = os.path.join(dir, member.name[match.span(0)[1]:]) + if member.isdir(): + if not os.path.exists(outname): + os.mkdir(outname) + elif member.isfile(): + with archive.extractfile(member) as infile: + with open(outname, 'wb') as outfile: + outfile.write(infile.read()) + if sys.platform != 'win32': + os.chmod(outname, member.mode) + os.remove(tempfile) + + +# mozjs +# see: https://github.com/GoogleChromeLabs/jsvu/tree/main/engines/spidermonkey + +mozjs_bin = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'mozjs') + + +def mozjs_determine_platform(): + is_64bits = sys.maxsize > 2**32 + if sys.platform.startswith('linux'): + return 'linux-x86_64' if is_64bits else 'linux-i686' + if sys.platform == 'darwin': + return 'mac' + if sys.platform == 'win32': + return 'win64' if is_64bits else 'win32' + print('Cannot determine platform, assuming \'linux-x86_64\'') + return 'linux-x86_64' + + +def mozjs_determine_version(platform): + data = fetch_json('https://product-details.mozilla.org/1.0/firefox_history_development_releases.json') + latest = '' + version = '' + for v, t in data.items(): + if t > latest: + latest = t + version = v + return version + + +def mozjs_download(platform, version): + download_zip('https://archive.mozilla.org/pub/firefox/releases/' + version + '/jsshell/jsshell-' + platform + '.zip', mozjs_bin) + if sys.platform != 'win32': + os.rename(os.path.join(mozjs_bin, 'js'), os.path.join(mozjs_bin, 'mozjs')) + os.chmod(os.path.join(mozjs_bin, 'mozjs'), 0o755) + else: + os.rename(os.path.join(mozjs_bin, 'js.exe'), os.path.join(mozjs_bin, 'mozjs.exe')) + + +def mozjs_is_installed(): + return os.path.exists(os.path.join(mozjs_bin, 'mozjs.exe' if sys.platform == 'win32' else 'mozjs')) + + +def mozjs_main(): + print('Setting up mozjs ...') + platform = mozjs_determine_platform() + print('* Platform: ' + platform) + version = mozjs_determine_version(platform) + print('* Latest version: ' + version) + print('* Downloading to: ' + mozjs_bin) + mozjs_download(platform, version) + if mozjs_is_installed(): + print('* Complete') + else: + print('* Something went wrong :(') + + +# V8 +# see: https://github.com/GoogleChromeLabs/jsvu/tree/main/engines/v8 + +v8_bin = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'v8') + + +def v8_determine_platform(): + is_64bits = sys.maxsize > 2**32 + if sys.platform.startswith('linux'): + return 'linux64' if is_64bits else 'linux32' + if sys.platform == 'darwin': + return 'mac64' + if sys.platform == 'win32': + return 'win64' if is_64bits else 'win32' + print('Cannot determine platform, assuming \'linux64\'') + return 'linux64' + + +def v8_determine_version(platform): + data = fetch_json('https://storage.googleapis.com/chromium-v8/official/canary/v8-' + platform + '-rel-latest.json') + return data['version'] + + +def v8_download(platform, version): + download_zip('https://storage.googleapis.com/chromium-v8/official/canary/v8-' + platform + '-rel-' + version + '.zip', v8_bin) + if sys.platform != 'win32': + os.chmod(os.path.join(v8_bin, 'd8'), 0o755) + + +def v8_is_installed(): + return os.path.exists(os.path.join(v8_bin, 'd8.exe' if sys.platform == 'win32' else 'd8')) + + +def v8_main(): + print('Setting up V8 ...') + platform = v8_determine_platform() + print('* Platform: ' + platform) + version = v8_determine_version(platform) + print('* Latest version: ' + version) + print('* Downloading to: ' + v8_bin) + v8_download(platform, version) + if v8_is_installed(): + print('* Complete') + else: + print('* Something went wrong :(') + + +# WABT +# see: https://github.com/WebAssembly/wabt/releases + +wabt_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'wabt') +wabt_bin = os.path.join(wabt_dir, 'bin') + + +def wabt_determine_platform(): + if sys.platform.startswith('linux'): + return 'ubuntu' + if sys.platform == 'darwin': + return 'macos' + if sys.platform == 'win32': + return 'windows' + print('Cannot determine platform, assuming \'ubuntu\'') + return 'ubuntu' + + +def wabt_determine_release(platform): + data = fetch_json('https://api.github.com/repos/WebAssembly/wabt/releases/latest') + for asset in data['assets']: + if asset['name'].endswith('-' + platform + '.tar.gz'): + return asset['browser_download_url'] + print('Cannot determine release') + return '' + + +def wabt_download(release): + download_tar(release, wabt_dir) + + +def wabt_is_installed(): + return os.path.exists(os.path.join(wabt_bin, 'wasm2c.exe' if sys.platform == 'win32' else 'wasm2c')) + + +def wabt_main(): + print('Setting up WABT ...') + platform = wabt_determine_platform() + print('* Platform: ' + platform) + release = wabt_determine_release(platform) + print('* Latest release: ' + release) + print('* Downloading to: ' + wabt_bin) + wabt_download(release) + if wabt_is_installed(): + print('* Complete') + else: + print('* Something went wrong :(') + + +TOOLS = collections.OrderedDict([ + ('mozjs', mozjs_main), + ('v8', v8_main), + ('wabt', wabt_main), +]) + +if __name__ == '__main__': + if len(sys.argv) < 2 or sys.argv[1] == '--help': + msg = '' + for key in TOOLS.keys(): + if len(msg): + msg += '|' + msg += key + print('usage: ./setup.py [' + msg + '|all]') + sys.exit(0) + tool = sys.argv[1] + if tool == 'all': + for main in TOOLS.values(): + code = main() + if code: + sys.exit(code) + sys.exit(0) + elif TOOLS[tool]: + main = TOOLS[tool] + sys.exit(main()) + else: + print('No such tool: ' + tool) + sys.exit(1) diff -Nru binaryen-91/third_party/v8/.gitignore binaryen-99/third_party/v8/.gitignore --- binaryen-91/third_party/v8/.gitignore 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/third_party/v8/.gitignore 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,2 @@ +* +!.gitignore diff -Nru binaryen-91/third_party/wabt/.gitignore binaryen-99/third_party/wabt/.gitignore --- binaryen-91/third_party/wabt/.gitignore 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/third_party/wabt/.gitignore 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,4 @@ +* +!.gitignore +!wasm2c +!wasm2c/* diff -Nru binaryen-91/third_party/wabt/wasm2c/README.md binaryen-99/third_party/wabt/wasm2c/README.md --- binaryen-91/third_party/wabt/wasm2c/README.md 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/third_party/wabt/wasm2c/README.md 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,5 @@ +These files are part of WABT, but are currently not present in releases, so the +directory is included as a fallback in Binaryen in a way that the files will be +overwritten in case WABT contains them in the future. + +Original README: https://github.com/WebAssembly/wabt/blob/master/wasm2c/README.md diff -Nru binaryen-91/third_party/wabt/wasm2c/wasm-rt.h binaryen-99/third_party/wabt/wasm2c/wasm-rt.h --- binaryen-91/third_party/wabt/wasm2c/wasm-rt.h 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/third_party/wabt/wasm2c/wasm-rt.h 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,201 @@ +/* + * Copyright 2018 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. + */ + +#ifndef WASM_RT_H_ +#define WASM_RT_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** Maximum stack depth before trapping. This can be configured by defining + * this symbol before including wasm-rt when building the generated c files, + * for example: + * + * ``` + * cc -c -DWASM_RT_MAX_CALL_STACK_DEPTH=100 my_module.c -o my_module.o + * ``` + * */ +#ifndef WASM_RT_MAX_CALL_STACK_DEPTH +#define WASM_RT_MAX_CALL_STACK_DEPTH 500 +#endif + +/** Enable memory checking via a signal handler via the following definition: + * + * #define WASM_RT_MEMCHECK_SIGNAL_HANDLER 1 + * + * This is usually 10%-25% faster, but requires OS-specific support. + * */ + +/** Check whether the signal handler is supported at all. */ +#if (defined(__linux__) || defined(__unix__) || defined(__APPLE__)) && \ + defined(__WORDSIZE) && __WORDSIZE == 64 + +/* If the signal handler is supported, then use it by default. */ +#ifndef WASM_RT_MEMCHECK_SIGNAL_HANDLER +#define WASM_RT_MEMCHECK_SIGNAL_HANDLER 1 +#endif + +#if WASM_RT_MEMCHECK_SIGNAL_HANDLER +#define WASM_RT_MEMCHECK_SIGNAL_HANDLER_POSIX 1 +#endif + +#else + +/* The signal handler is not supported, error out if the user was trying to + * enable it. */ +#if WASM_RT_MEMCHECK_SIGNAL_HANDLER +#error "Signal handler is not supported for this OS/Architecture!" +#endif + +#define WASM_RT_MEMCHECK_SIGNAL_HANDLER 0 +#define WASM_RT_MEMCHECK_SIGNAL_HANDLER_POSIX 0 + +#endif + +/** Reason a trap occurred. Provide this to `wasm_rt_trap`. */ +typedef enum { + WASM_RT_TRAP_NONE, /** No error. */ + WASM_RT_TRAP_OOB, /** Out-of-bounds access in linear memory. */ + WASM_RT_TRAP_INT_OVERFLOW, /** Integer overflow on divide or truncation. */ + WASM_RT_TRAP_DIV_BY_ZERO, /** Integer divide by zero. */ + WASM_RT_TRAP_INVALID_CONVERSION, /** Conversion from NaN to integer. */ + WASM_RT_TRAP_UNREACHABLE, /** Unreachable instruction executed. */ + WASM_RT_TRAP_CALL_INDIRECT, /** Invalid call_indirect, for any reason. */ + WASM_RT_TRAP_EXHAUSTION, /** Call stack exhausted. */ +} wasm_rt_trap_t; + +/** Value types. Used to define function signatures. */ +typedef enum { + WASM_RT_I32, + WASM_RT_I64, + WASM_RT_F32, + WASM_RT_F64, +} wasm_rt_type_t; + +/** A function type for all `anyfunc` functions in a Table. All functions are + * stored in this canonical form, but must be cast to their proper signature to + * call. */ +typedef void (*wasm_rt_anyfunc_t)(void); + +/** A single element of a Table. */ +typedef struct { + /** The index as returned from `wasm_rt_register_func_type`. */ + uint32_t func_type; + /** The function. The embedder must know the actual C signature of the + * function and cast to it before calling. */ + wasm_rt_anyfunc_t func; +} wasm_rt_elem_t; + +/** A Memory object. */ +typedef struct { + /** The linear memory data, with a byte length of `size`. */ + uint8_t* data; + /** The current and maximum page count for this Memory object. If there is no + * maximum, `max_pages` is 0xffffffffu (i.e. UINT32_MAX). */ + uint32_t pages, max_pages; + /** The current size of the linear memory, in bytes. */ + uint32_t size; +} wasm_rt_memory_t; + +/** A Table object. */ +typedef struct { + /** The table element data, with an element count of `size`. */ + wasm_rt_elem_t* data; + /** The maximum element count of this Table object. If there is no maximum, + * `max_size` is 0xffffffffu (i.e. UINT32_MAX). */ + uint32_t max_size; + /** The current element count of the table. */ + uint32_t size; +} wasm_rt_table_t; + +/** Stop execution immediately and jump back to the call to `wasm_rt_try`. + * The result of `wasm_rt_try` will be the provided trap reason. + * + * This is typically called by the generated code, and not the embedder. */ +extern void wasm_rt_trap(wasm_rt_trap_t) __attribute__((noreturn)); + +/** Register a function type with the given signature. The returned function + * index is guaranteed to be the same for all calls with the same signature. + * The following varargs must all be of type `wasm_rt_type_t`, first the + * params` and then the `results`. + * + * ``` + * // Register (func (param i32 f32) (result i64)). + * wasm_rt_register_func_type(2, 1, WASM_RT_I32, WASM_RT_F32, WASM_RT_I64); + * => returns 1 + * + * // Register (func (result i64)). + * wasm_rt_register_func_type(0, 1, WASM_RT_I32); + * => returns 2 + * + * // Register (func (param i32 f32) (result i64)) again. + * wasm_rt_register_func_type(2, 1, WASM_RT_I32, WASM_RT_F32, WASM_RT_I64); + * => returns 1 + * ``` */ +extern uint32_t wasm_rt_register_func_type(uint32_t params, + uint32_t results, + ...); + +/** Initialize a Memory object with an initial page size of `initial_pages` and + * a maximum page size of `max_pages`. + * + * ``` + * wasm_rt_memory_t my_memory; + * // 1 initial page (65536 bytes), and a maximum of 2 pages. + * wasm_rt_allocate_memory(&my_memory, 1, 2); + * ``` */ +extern void wasm_rt_allocate_memory(wasm_rt_memory_t*, + uint32_t initial_pages, + uint32_t max_pages); + +/** Grow a Memory object by `pages`, and return the previous page count. If + * this new page count is greater than the maximum page count, the grow fails + * and 0xffffffffu (UINT32_MAX) is returned instead. + * + * ``` + * wasm_rt_memory_t my_memory; + * ... + * // Grow memory by 10 pages. + * uint32_t old_page_size = wasm_rt_grow_memory(&my_memory, 10); + * if (old_page_size == UINT32_MAX) { + * // Failed to grow memory. + * } + * ``` */ +extern uint32_t wasm_rt_grow_memory(wasm_rt_memory_t*, uint32_t pages); + +/** Initialize a Table object with an element count of `elements` and a maximum + * page size of `max_elements`. + * + * ``` + * wasm_rt_table_t my_table; + * // 5 elemnets and a maximum of 10 elements. + * wasm_rt_allocate_table(&my_table, 5, 10); + * ``` */ +extern void wasm_rt_allocate_table(wasm_rt_table_t*, + uint32_t elements, + uint32_t max_elements); + +/** Current call stack depth. */ +extern uint32_t wasm_rt_call_stack_depth; + +#ifdef __cplusplus +} +#endif + +#endif /* WASM_RT_H_ */ diff -Nru binaryen-91/third_party/wabt/wasm2c/wasm-rt-impl.c binaryen-99/third_party/wabt/wasm2c/wasm-rt-impl.c --- binaryen-91/third_party/wabt/wasm2c/wasm-rt-impl.c 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/third_party/wabt/wasm2c/wasm-rt-impl.c 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,182 @@ +/* + * Copyright 2018 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 "wasm-rt-impl.h" + +#include +#include +#include +#include +#include +#include +#include + +#if WASM_RT_MEMCHECK_SIGNAL_HANDLER_POSIX +#include +#include +#include +#endif + +#define PAGE_SIZE 65536 + +typedef struct FuncType { + wasm_rt_type_t* params; + wasm_rt_type_t* results; + uint32_t param_count; + uint32_t result_count; +} FuncType; + +uint32_t wasm_rt_call_stack_depth; +uint32_t g_saved_call_stack_depth; + +#if WASM_RT_MEMCHECK_SIGNAL_HANDLER +bool g_signal_handler_installed = false; +#endif + +jmp_buf g_jmp_buf; +FuncType* g_func_types; +uint32_t g_func_type_count; + +void wasm_rt_trap(wasm_rt_trap_t code) { + assert(code != WASM_RT_TRAP_NONE); + wasm_rt_call_stack_depth = g_saved_call_stack_depth; + WASM_RT_LONGJMP(g_jmp_buf, code); +} + +static bool func_types_are_equal(FuncType* a, FuncType* b) { + if (a->param_count != b->param_count || a->result_count != b->result_count) + return 0; + int i; + for (i = 0; i < a->param_count; ++i) + if (a->params[i] != b->params[i]) + return 0; + for (i = 0; i < a->result_count; ++i) + if (a->results[i] != b->results[i]) + return 0; + return 1; +} + +uint32_t wasm_rt_register_func_type(uint32_t param_count, + uint32_t result_count, + ...) { + FuncType func_type; + func_type.param_count = param_count; + func_type.params = malloc(param_count * sizeof(wasm_rt_type_t)); + func_type.result_count = result_count; + func_type.results = malloc(result_count * sizeof(wasm_rt_type_t)); + + va_list args; + va_start(args, result_count); + + uint32_t i; + for (i = 0; i < param_count; ++i) + func_type.params[i] = va_arg(args, wasm_rt_type_t); + for (i = 0; i < result_count; ++i) + func_type.results[i] = va_arg(args, wasm_rt_type_t); + va_end(args); + + for (i = 0; i < g_func_type_count; ++i) { + if (func_types_are_equal(&g_func_types[i], &func_type)) { + free(func_type.params); + free(func_type.results); + return i + 1; + } + } + + uint32_t idx = g_func_type_count++; + g_func_types = realloc(g_func_types, g_func_type_count * sizeof(FuncType)); + g_func_types[idx] = func_type; + return idx + 1; +} + +#if WASM_RT_MEMCHECK_SIGNAL_HANDLER_POSIX +static void signal_handler(int sig, siginfo_t* si, void* unused) { + wasm_rt_trap(WASM_RT_TRAP_OOB); +} +#endif + +void wasm_rt_allocate_memory(wasm_rt_memory_t* memory, + uint32_t initial_pages, + uint32_t max_pages) { + uint32_t byte_length = initial_pages * PAGE_SIZE; +#if WASM_RT_MEMCHECK_SIGNAL_HANDLER_POSIX + if (!g_signal_handler_installed) { + g_signal_handler_installed = true; + struct sigaction sa; + sa.sa_flags = SA_SIGINFO; + sigemptyset(&sa.sa_mask); + sa.sa_sigaction = signal_handler; + + /* Install SIGSEGV and SIGBUS handlers, since macOS seems to use SIGBUS. */ + if (sigaction(SIGSEGV, &sa, NULL) != 0 || + sigaction(SIGBUS, &sa, NULL) != 0) { + perror("sigaction failed"); + abort(); + } + } + + /* Reserve 8GiB. */ + void* addr = + mmap(NULL, 0x200000000ul, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + if (addr == (void*)-1) { + perror("mmap failed"); + abort(); + } + mprotect(addr, byte_length, PROT_READ | PROT_WRITE); + memory->data = addr; +#else + memory->data = calloc(byte_length, 1); +#endif + memory->size = byte_length; + memory->pages = initial_pages; + memory->max_pages = max_pages; +} + +uint32_t wasm_rt_grow_memory(wasm_rt_memory_t* memory, uint32_t delta) { + uint32_t old_pages = memory->pages; + uint32_t new_pages = memory->pages + delta; + if (new_pages == 0) { + return 0; + } + if (new_pages < old_pages || new_pages > memory->max_pages) { + return (uint32_t)-1; + } + uint32_t old_size = old_pages * PAGE_SIZE; + uint32_t new_size = new_pages * PAGE_SIZE; + uint32_t delta_size = delta * PAGE_SIZE; +#if WASM_RT_MEMCHECK_SIGNAL_HANDLER_POSIX + uint8_t* new_data = memory->data; + mprotect(new_data + old_size, delta_size, PROT_READ | PROT_WRITE); +#else + uint8_t* new_data = realloc(memory->data, new_size); + if (new_data == NULL) { + return (uint32_t)-1; + } + memset(new_data + old_size, 0, delta_size); +#endif + memory->pages = new_pages; + memory->size = new_size; + memory->data = new_data; + return old_pages; +} + +void wasm_rt_allocate_table(wasm_rt_table_t* table, + uint32_t elements, + uint32_t max_elements) { + table->size = elements; + table->max_size = max_elements; + table->data = calloc(table->size, sizeof(wasm_rt_elem_t)); +} diff -Nru binaryen-91/third_party/wabt/wasm2c/wasm-rt-impl.h binaryen-99/third_party/wabt/wasm2c/wasm-rt-impl.h --- binaryen-91/third_party/wabt/wasm2c/wasm-rt-impl.h 1970-01-01 00:00:00.000000000 +0000 +++ binaryen-99/third_party/wabt/wasm2c/wasm-rt-impl.h 2021-01-07 20:01:06.000000000 +0000 @@ -0,0 +1,65 @@ +/* + * Copyright 2018 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. + */ + +#ifndef WASM_RT_IMPL_H_ +#define WASM_RT_IMPL_H_ + +#include + +#include "wasm-rt.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** A setjmp buffer used for handling traps. */ +extern jmp_buf g_jmp_buf; + +/** Saved call stack depth that will be restored in case a trap occurs. */ +extern uint32_t g_saved_call_stack_depth; + +#if WASM_RT_MEMCHECK_SIGNAL_HANDLER_POSIX +#define WASM_RT_SETJMP(buf) sigsetjmp(buf, 1) +#define WASM_RT_LONGJMP(buf, val) siglongjmp(buf, val) +#else +#define WASM_RT_SETJMP(buf) setjmp(buf) +#define WASM_RT_LONGJMP(buf, val) longjmp(buf, val) +#endif + +/** Convenience macro to use before calling a wasm function. On first execution + * it will return `WASM_RT_TRAP_NONE` (i.e. 0). If the function traps, it will + * jump back and return the trap that occurred. + * + * ``` + * wasm_rt_trap_t code = wasm_rt_impl_try(); + * if (code != 0) { + * printf("A trap occurred with code: %d\n", code); + * ... + * } + * + * // Call the potentially-trapping function. + * my_wasm_func(); + * ``` + */ +#define wasm_rt_impl_try() \ + (g_saved_call_stack_depth = wasm_rt_call_stack_depth, \ + WASM_RT_SETJMP(g_jmp_buf)) + +#ifdef __cplusplus +} +#endif + +#endif // WASM_RT_IMPL_H_ diff -Nru binaryen-91/travis-emcc-tests.sh binaryen-99/travis-emcc-tests.sh --- binaryen-91/travis-emcc-tests.sh 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/travis-emcc-tests.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -#!/usr/bin/env bash - -set -e - -echo "travis-test build:wasm" -emconfigure cmake -DCMAKE_BUILD_TYPE=Release -emmake make -j4 binaryen_wasm -echo "travis-test test:wasm" -python3 -m scripts.test.binaryenjs wasm -echo "travis-test done:wasm" - -echo "travis-test build:js" -emmake make -j4 binaryen_js -echo "travis-test test:js" -python3 -m scripts.test.binaryenjs js -echo "travis-test done:js" diff -Nru binaryen-91/.travis.yml binaryen-99/.travis.yml --- binaryen-91/.travis.yml 2020-02-21 19:15:44.000000000 +0000 +++ binaryen-99/.travis.yml 1970-01-01 00:00:00.000000000 +0000 @@ -1,196 +0,0 @@ -sudo: false -dist: bionic -language: cpp -python: - - 3.6 - -stages: - - name: test - - name: archive - # Don't run archive stage for pull requests and other branches than master - # to save time and resources. - if: type != pull_request AND (branch = master OR tag IS present) - -DEPLOY_TO_GITHUB: &DEPLOY_TO_GITHUB - before_deploy: - - PKGNAME="binaryen-$TRAVIS_TAG-$ARCH" - - mv bin binaryen-$TRAVIS_TAG - - tar -czf $PKGNAME.tar.gz binaryen-$TRAVIS_TAG - - shasum -a 256 $PKGNAME.tar.gz > $PKGNAME.tar.gz.sha256 - deploy: - provider: releases - api_key: - secure: "cu6CD5BaycXdCylvcs+Fho5+OVTkh9mZwH8RTnNpXo9hAQzLJDFgcNBHeXHEHtcp4IWf/YZSMu48UKnpU9sP5iF0AS4rtuEBJk5gOKkgB8GWnuIOePFkfANAZMN+EncuUwhAdN56iOAESXqnlHYgmJjyRVCHOxiezuWTOYui4lxoIAdxvOMJc3E9yfzUq4Epm2GDszSDN7ObmRIJpVgDXD9Sze1Xv4IkbIwc0biCmduGGLp3ow2KM+RZ4tOF0c8P0ki49vOFHr6n2Vmqg0QCiVNd4JJBRBCGn6Tzip2jsTQewnUUvpYCZafLeRV//v//voNA6ZUz91yXR23GIhkfdlyuqnz3/7l335Sa749M1lpYfSRWvwg9mJEqP66mxqTrWzj1xSItr9T+p0WhSmRN/4UEJPuItYPSma6kfv+H7qhLa3ZYKECH8hHW79grYmUWtiX0vQVIgnctJGgboPNLfG/1mNtmCI241wK0S3zvL2okdZH8/PqxfllYHMBTUp9lUrop8eoLKPgHZPm6+V20dgTUgOuGTZzTWwQ7Uk/Pg8JMUgkre5y0eo6pP3z0vDW1NNFNhouJ5oGkAeK/HAznr8Q0zWWF1vGFhoyC8ok/IJ7yKxK9scJVPBDe4oox6tr1zlsxzNEYE0/mY3JjuWV0z8RgjrIAbRe8IpGTkYz5VOM=" - file: binaryen-$TRAVIS_TAG-*.tar.gz* - file_glob: true - skip_cleanup: true - on: - tags: true - -jobs: - include: - - name: lint-checks - stage: test - addons: - apt: - packages: ['cmake', 'python3-pip'] - install: pip3 install --user flake8==3.7.8 - script: - - flake8 - - ./clang-format-diff.sh - # ensure generated parser is up to date - - ./scripts/gen-s-parser.py | diff src/gen-s-parser.inc - - # clang-tidy requires compile_commands.json generated by cmake - - cmake ${TRAVIS_BUILD_DIR} -DCMAKE_EXPORT_COMPILE_COMMANDS=ON - - ./clang-tidy-diff.sh - - # Build with clang and run tests on the host system (Ubuntu). - - &test-ubuntu - name: clang - stage: test - compiler: clang - addons: - apt: - sources: ['ubuntu-toolchain-r-test'] - packages: ['cmake', 'g++-5', 'ninja-build'] - before_install: - - export ASAN_OPTIONS="$ASAN_OPTIONS symbolize=1" - install: - - nvm install 12 - - nvm use 12 - # get jsvu in order to get more js engines - - npm install jsvu -g - - export PATH="${HOME}/.jsvu:${PATH}" - - jsvu --os=linux64 --engines=spidermonkey,v8 - script: - - set -o errexit - - BUILD_DIR=${BUILD_DIR:-.} - - mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} - - cmake ${TRAVIS_BUILD_DIR} -G Ninja - -DCMAKE_C_FLAGS="$COMPILER_FLAGS" - -DCMAKE_CXX_FLAGS="$COMPILER_FLAGS" - -DCMAKE_EXE_LINKER_FLAGS="$LINKER_FLAGS" - -DCMAKE_INSTALL_PREFIX=install - -DCMAKE_EXPORT_COMPILE_COMMANDS=ON - - ninja install - # Run tests from source directory - - cd ${TRAVIS_BUILD_DIR} - - python3 ./check.py --binaryen-bin=${BUILD_DIR}/install/bin - - - <<: *test-ubuntu - name: ubsan - env: | - COMPILER_FLAGS="-fsanitize=undefined -fno-sanitize-recover=all -fsanitize-blacklist=$(pwd)/ubsan.blacklist" - - # FIXME we currently must disable LSAN entirely, see #1351 - - <<: *test-ubuntu - name: asan - env: | - COMPILER_FLAGS="-fsanitize=address" - ASAN_OPTIONS="detect_leaks=0" - - - <<: *test-ubuntu - name: tsan - env: | - COMPILER_FLAGS="-fsanitize=thread" - LINKER_FLAGS="-fsanitize=thread" - - # Build with gcc 7 and run tests on the host system (Ubuntu). - # Also tests that out-of-tree builds work - - <<: *test-ubuntu - name: gcc-7 / out-of-tree - compiler: gcc - env: | - CC="gcc-7" - CXX="g++-7" - BUILD_DIR=out - - # Build the .js outputs using emcc - - name: emscripten - stage: test - compiler: clang - python: 2.7 - language: node_js - sudo: required - services: - - docker - before_install: - # TODO: Emscripten upstream produces a broken build in CI environments only :( - - docker run -dit --name emscripten -v $(pwd):/src trzeci/emscripten-fastcomp bash - script: - # run binaryen.js tests before and after building, so we see if the bundled - # version is good too - - docker exec -it emscripten bash ./travis-emcc-tests.sh - - # Build with gcc 6.3 and run tests on Alpine Linux (inside chroot). - # Note: Alpine uses musl libc. - - &test-alpine - name: alpine - stage: test - sudo: true - language: minimal - compiler: gcc - env: ARCH=x86_64 - before_install: - - docker run -w /src -dit --name alpine -v $(pwd):/src node:lts-alpine - - alpine() { docker exec -it alpine "$@"; } - install: - - alpine apk update - - alpine apk add build-base cmake git python3 clang ninja - script: - - alpine cmake . -G Ninja - - alpine ninja - - alpine python3 ./check.py - - - name: osx - env: JOB=dist-osx ARCH=x86_64-apple-darwin - os: osx - stage: archive - script: - - cmake . && make - <<: *DEPLOY_TO_GITHUB - - # Build statically linked release binaries with gcc 6.3 on Alpine Linux - # (inside chroot). If building a tagged commit, then deploy release tarball - # to GitHub Releases. - - &archive-alpine - <<: *test-alpine - name: x86_64-linux - stage: archive - env: ARCH=x86_64-linux - script: - - alpine cmake . -G Ninja - -DCMAKE_BUILD_TYPE=Release - -DCMAKE_VERBOSE_MAKEFILE=ON - -DCMAKE_CXX_FLAGS="-static" - -DCMAKE_C_FLAGS="-static" - -DCMAKE_C_COMPILER=clang - -DCMAKE_CXX_COMPILER=clang++ - - alpine ninja - - alpine find bin/ -type f -perm -u=x -exec strip {} + - - alpine ls -lh bin/ - # Check if the built executables are really statically linked. - - if [ -n "$(find bin/ -type f -perm -u=x -exec file {} + | grep -Fvw 'statically linked')" ]; then - file bin/*; false; - fi - <<: *DEPLOY_TO_GITHUB - - # Build binaries for other architectures using QEMU user-mode emulation. - # Note: We don't run tests for these architectures, because some fail under - # QEMU/binfmt and it takes too long time (hits time limit on Travis). - # Note: We had to remove ppc64le, because it takes more than 50 minutes - # (Travis limit) to build. :( - - <<: *archive-alpine - name: x86-linux - env: ARCH=x86-linux - - - <<: *archive-alpine - name: aarch64-linux - env: ARCH=aarch64-linux - - - <<: *archive-alpine - name: armhf-linux - env: ARCH=armhf-linux - -notifications: - email: false